@tricoteuses/assemblee 0.25.1 → 0.26.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 (90) hide show
  1. package/README.md +3 -0
  2. package/lib/bugs/acteur-00010.js +9 -7
  3. package/lib/bugs/agenda-00002.js +6 -6
  4. package/lib/bugs/agenda-00002.mjs +1 -1
  5. package/lib/bugs/agenda-00008.js +6 -6
  6. package/lib/bugs/agenda-00011.js +5 -5
  7. package/lib/bugs.js +7 -5
  8. package/lib/cleaners/actes_legislatifs.js +3 -1
  9. package/lib/cleaners/acteurs.js +43 -4
  10. package/lib/cleaners/acteurs.mjs +25 -1
  11. package/lib/cleaners/amendements.js +2 -2
  12. package/lib/cleaners/amendements.mjs +3 -7
  13. package/lib/cleaners/documents.js +3 -1
  14. package/lib/cleaners/dossiers_legislatifs.js +3 -1
  15. package/lib/cleaners/organes.js +19 -2
  16. package/lib/cleaners/organes.mjs +18 -1
  17. package/lib/cleaners/reunions.js +3 -3
  18. package/lib/cleaners/scrutins.js +5 -3
  19. package/lib/cleaners/xml.js +3 -1
  20. package/lib/datasets.js +1 -1
  21. package/lib/datasets.mjs +1 -1
  22. package/lib/dates.js +1 -1
  23. package/lib/dates.mjs +1 -1
  24. package/lib/dossiers_legislatifs.js +3 -1
  25. package/lib/file_systems.js +11 -5
  26. package/lib/git.js +3 -1
  27. package/lib/index.d.ts +2 -1
  28. package/lib/index.js +4 -2
  29. package/lib/index.mjs +3 -2
  30. package/lib/inserters.js +3 -1
  31. package/lib/inserters.mjs +1 -1
  32. package/lib/loaders.js +1 -1
  33. package/lib/loaders.mjs +1 -1
  34. package/lib/parsers/documents.js +2 -2
  35. package/lib/parsers/documents.mjs +2 -2
  36. package/lib/parsers/recherche_amendements.js +4 -2
  37. package/lib/raw_types/acteurs_et_organes.d.ts +181 -13
  38. package/lib/raw_types/acteurs_et_organes.js +329 -62
  39. package/lib/raw_types/acteurs_et_organes.mjs +318 -55
  40. package/lib/raw_types/agendas.d.ts +2 -1
  41. package/lib/raw_types/agendas.js +8 -7
  42. package/lib/raw_types/agendas.mjs +4 -3
  43. package/lib/raw_types/amendements.d.ts +2 -2
  44. package/lib/raw_types/amendements.js +7 -7
  45. package/lib/raw_types/amendements.mjs +3 -3
  46. package/lib/raw_types/dossiers_legislatifs.d.ts +73 -714
  47. package/lib/raw_types/dossiers_legislatifs.js +177 -1666
  48. package/lib/raw_types/dossiers_legislatifs.mjs +169 -1640
  49. package/lib/raw_types/scrutins.js +4 -4
  50. package/lib/scripts/bugs_helper.js +2 -2
  51. package/lib/scripts/clean_data.js +4 -4
  52. package/lib/scripts/clean_data.mjs +2 -2
  53. package/lib/scripts/clean_reorganized_data.js +4 -4
  54. package/lib/scripts/clean_reorganized_data.mjs +1 -1
  55. package/lib/scripts/diff_amendements.js +2 -2
  56. package/lib/scripts/document_dossiers_legislatifs.js +10 -10
  57. package/lib/scripts/document_dossiers_legislatifs.mjs +1 -1
  58. package/lib/scripts/merge_scrutins.js +3 -1
  59. package/lib/scripts/parse_textes_lois.js +3 -1
  60. package/lib/scripts/raw_types_from_amendements.js +3 -1
  61. package/lib/scripts/raw_types_from_amendements.mjs +1 -1
  62. package/lib/scripts/reorganize_data.js +199 -140
  63. package/lib/scripts/reorganize_data.mjs +46 -2
  64. package/lib/scripts/retrieve_deputes_photos.js +4 -4
  65. package/lib/scripts/retrieve_documents.js +5 -3
  66. package/lib/scripts/retrieve_open_data.js +4 -2
  67. package/lib/scripts/retrieve_open_data.mjs +2 -2
  68. package/lib/scripts/retrieve_pending_amendments.js +168 -155
  69. package/lib/scripts/retrieve_senateurs_photos.js +2 -2
  70. package/lib/scripts/retrieve_textes_lois.js +6 -6
  71. package/lib/scripts/test_load.js +4 -2
  72. package/lib/scripts/test_load.mjs +2 -2
  73. package/lib/scripts/test_load_big_files.js +4 -2
  74. package/lib/scripts/test_load_big_files.mjs +2 -2
  75. package/lib/scripts/validate_json.js +2 -2
  76. package/lib/shared_types/codes_actes.d.ts +413 -0
  77. package/lib/shared_types/codes_actes.js +262 -0
  78. package/lib/shared_types/codes_actes.mjs +227 -0
  79. package/lib/types/acteurs_et_organes.d.ts +48 -27
  80. package/lib/types/acteurs_et_organes.js +134 -41
  81. package/lib/types/acteurs_et_organes.mjs +128 -35
  82. package/lib/types/agendas.js +4 -4
  83. package/lib/types/amendements.js +4 -4
  84. package/lib/types/dossiers_legislatifs.d.ts +1 -413
  85. package/lib/types/dossiers_legislatifs.js +14 -264
  86. package/lib/types/dossiers_legislatifs.mjs +6 -231
  87. package/lib/types/scrutins.js +4 -4
  88. package/lib/urls.js +1 -1
  89. package/lib/urls.mjs +1 -1
  90. package/package.json +6 -6
package/lib/loaders.mjs CHANGED
@@ -675,4 +675,4 @@ export function pathFromScrutinUid(scrutinsDir, uid) {
675
675
  fs.ensureDirSync(numeroMilliersDir);
676
676
  return path.join(numeroMilliersDir, uid);
677
677
  }
678
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9sb2FkZXJzLnRzIl0sIm5hbWVzIjpbImFzc2VydCIsImZzIiwicGF0aCIsIkVuYWJsZWREYXRhc2V0cyIsImRhdGFzZXRzIiwid2Fsa0RpciIsIkNvbnZlcnQiLCJBY3RldXJzRXRPcmdhbmVzQ29udmVydCIsIkFnZW5kYXNDb252ZXJ0IiwiQW1lbmRlbWVudHNDb252ZXJ0IiwiRG9zc2llcnNMZWdpc2xhdGlmc0NvbnZlcnQiLCJMZWdpc2xhdHVyZSIsIlNjcnV0aW5zQ29udmVydCIsImRvY3VtZW50VWlkUmVnZXgiLCJkb3NzaWVyVWlkUmVnZXgiLCJyZXVuaW9uVWlkUmVnZXgiLCJzY3J1dGluVWlkUmVnZXgiLCJsb2FkQXNzZW1ibGVlRGF0YSIsImRhdGFEaXIiLCJlbmFibGVkRGF0YXNldHMiLCJsZWdpc2xhdHVyZSIsImxvZyIsImFjdGV1ckJ5VWlkIiwib3JnYW5lQnlVaWQiLCJBY3RldXJzRXRPcmdhbmVzIiwiZGF0YXNldCIsImFjdGV1cnNFdE9yZ2FuZXMiLCJpZ25vcmVGb3JXZWIiLCJBbGwiLCJkYXRhc2V0RGlyIiwiam9pbiIsImZpbGVuYW1lIiwicmVwbGFjZSIsImFjdGV1clNwbGl0UGF0aCIsImFjdGV1ckZpbGVuYW1lIiwibGVuZ3RoIiwiZW5kc1dpdGgiLCJhY3RldXJGaWxlUGF0aCIsImNvbnNvbGUiLCJhY3RldXJKc29uIiwicmVhZEZpbGVTeW5jIiwiZW5jb2RpbmciLCJhY3RldXIiLCJ0b0FjdGV1ciIsInVpZCIsInVuZGVmaW5lZCIsIm9yZ2FuZVNwbGl0UGF0aCIsIm9yZ2FuZUZpbGVuYW1lIiwib3JnYW5lRmlsZVBhdGgiLCJvcmdhbmVKc29uIiwib3JnYW5lIiwidG9PcmdhbmUiLCJyZXVuaW9uQnlVaWQiLCJyZXVuaW9uc0J5RGF5IiwicmV1bmlvbnNCeURvc3NpZXJVaWQiLCJBZ2VuZGFzIiwiYWdlbmRhcyIsInJldW5pb25TcGxpdFBhdGgiLCJyZXVuaW9uRmlsZW5hbWUiLCJyZXVuaW9uRmlsZVBhdGgiLCJyZXVuaW9uSnNvbiIsInJldW5pb24iLCJ0b1JldW5pb24iLCJkYXkiLCJ0aW1lc3RhbXBEZWJ1dCIsInRvSVNPU3RyaW5nIiwic3BsaXQiLCJyZXVuaW9uc0F0RGF5IiwicHVzaCIsIm9kaiIsInBvaW50T2RqIiwicG9pbnRzT2RqIiwiZG9zc2llckxlZ2lzbGF0aWZSZWYiLCJkb3NzaWVyc0xlZ2lzbGF0aWZzUmVmcyIsInJldW5pb25zQXREb3NzaWVyVWlkIiwiYW1lbmRlbWVudEJ5VWlkIiwiQW1lbmRlbWVudHMiLCJhbWVuZGVtZW50cyIsImFtZW5kZW1lbnRTcGxpdFBhdGgiLCJhbWVuZGVtZW50RmlsZW5hbWUiLCJhbWVuZGVtZW50RmlsZVBhdGgiLCJhbWVuZGVtZW50SnNvbiIsImFtZW5kZW1lbnQiLCJ0b0FtZW5kZW1lbnQiLCJkb2N1bWVudEJ5VWlkIiwiZG9zc2llclBhcmxlbWVudGFpcmVCeVNlbmF0Q2hlbWluIiwiZG9zc2llclBhcmxlbWVudGFpcmVCeVRpdHJlQ2hlbWluIiwiZG9zc2llclBhcmxlbWVudGFpcmVCeVVpZCIsIkRvc3NpZXJzTGVnaXNsYXRpZnMiLCJkb3NzaWVyc0xlZ2lzbGF0aWZzIiwiZG9jdW1lbnRTcGxpdFBhdGgiLCJkb2N1bWVudEZpbGVuYW1lIiwiZG9jdW1lbnRGaWxlUGF0aCIsImRvY3VtZW50SnNvbiIsImRvY3VtZW50IiwidG9Eb2N1bWVudCIsImRvc3NpZXJTcGxpdFBhdGgiLCJkb3NzaWVyRmlsZW5hbWUiLCJkb3NzaWVyRmlsZVBhdGgiLCJkb3NzaWVySnNvbiIsImRvc3NpZXIiLCJ0b0Rvc3NpZXJQYXJsZW1lbnRhaXJlIiwidGl0cmVEb3NzaWVyIiwic2VuYXRDaGVtaW4iLCJ0aXRyZUNoZW1pbiIsInBob3RvQnlVaWQiLCJQaG90b3MiLCJqc29uRmlsZVBhdGgiLCJRdWluemUiLCJleGlzdHNTeW5jIiwianNvbiIsIk9iamVjdCIsImFzc2lnbiIsIkpTT04iLCJwYXJzZSIsInNjcnV0aW5CeVVpZCIsIlNjcnV0aW5zIiwic2NydXRpbnMiLCJzY3J1dGluU3BsaXRQYXRoIiwic2NydXRpbkZpbGVuYW1lIiwic2NydXRpbkZpbGVQYXRoIiwic2NydXRpbkpzb24iLCJzY3J1dGluIiwidG9TY3J1dGluIiwibG9hZEFzc2VtYmxlZURhdGFGcm9tQmlnRmlsZXMiLCJ0b0FjdGV1cnNFdE9yZ2FuZXMiLCJhY3RldXJzIiwib3JnYW5lcyIsInRvQWdlbmRhcyIsInJldW5pb25zIiwidG9BbWVuZGVtZW50cyIsInRleHRlTGVnaXNsYXRpZiIsInRleHRlc0xlZ2lzbGF0aWZzIiwidG9Eb3NzaWVyc0xlZ2lzbGF0aWZzIiwiZG9zc2llcnNQYXJsZW1lbnRhaXJlcyIsInRvU2NydXRpbnMiLCJwYXRoRnJvbURvY3VtZW50VWlkIiwiZG9jdW1lbnRzRGlyIiwibWF0Y2giLCJleGVjIiwibm90U3RyaWN0RXF1YWwiLCJkb2N1bWVudFR5cGUiLCJjaGFtYnJlRGlyIiwicmVwdWJsaXF1ZURpciIsImxlZ2lzbGF0dXJlRGlyIiwiZXRhdERpciIsIm51bWVybyIsInN1YnN0ciIsIm51bWVyb01pbGxpZXJzRGlyIiwiZW5zdXJlRGlyU3luYyIsInBhdGhGcm9tRG9zc2llclBhcmxlbWVudGFpcmVVaWQiLCJkb3NzaWVyc0RpciIsInBhdGhGcm9tUmV1bmlvblVpZCIsInJldW5pb25zRGlyIiwic2Vzc2lvbkRpciIsImlkRGlyIiwibnVtZXJvTWlsbGlvbnNEaXIiLCJwYXRoRnJvbVNjcnV0aW5VaWQiLCJzY3J1dGluc0RpciJdLCJtYXBwaW5ncyI6IkFBQUE7QUFFQSxPQUFPQSxNQUFQLE1BQW1CLFFBQW5CO0FBQ0EsT0FBT0MsRUFBUCxNQUFlLFVBQWY7QUFDQSxPQUFPQyxJQUFQLE1BQWlCLE1BQWpCO1NBRVNDLGU7U0FDQUMsUSxFQUFVRCxlO1NBQ1ZFLE87U0FDQUEsTztTQUdQQyxPQUFPLElBQUlDLHVCO1NBSUpELE9BQU8sSUFBSUUsYztTQUNDRixPQUFPLElBQUlHLGtCO1NBRTlCSCxPQUFPLElBQUlJLDBCO1NBSUpDLFc7U0FDQUwsT0FBTyxJQUFJ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QUFWLEVBQXlCTCxLQUFLLENBQUUsQ0FBRixDQUE5QixDQUF2QjtBQUNBLE1BQUlRLE1BQU0sR0FBRyxXQUFXUixLQUFLLENBQUUsQ0FBRixDQUE3QjtBQUNBUSxFQUFBQSxNQUFNLEdBQUdBLE1BQU0sQ0FBQ0MsTUFBUCxDQUFjRCxNQUFNLENBQUMvRyxNQUFQLEdBQWdCLENBQTlCLENBQVQ7QUFDQSxRQUFNaUgsaUJBQWlCLEdBQUdsSixJQUFJLENBQUM0QixJQUFMLENBQVVrSCxjQUFWLEVBQTBCRSxNQUFNLENBQUNDLE1BQVAsQ0FBYyxDQUFkLEVBQWlCLENBQWpCLENBQTFCLENBQTFCO0FBQ0FsSixFQUFBQSxFQUFFLENBQUNvSixhQUFILENBQWlCRCxpQkFBakI7QUFDQSxTQUFPbEosSUFBSSxDQUFDNEIsSUFBTCxDQUFVc0gsaUJBQVYsRUFBNkJ4RyxHQUE3QixDQUFQO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyIvLy8gTG9hZCBkYXRhIGZyb20gZmlsZXNcblxuaW1wb3J0IGFzc2VydCBmcm9tIFwiYXNzZXJ0XCJcbmltcG9ydCBmcyBmcm9tIFwiZnMtZXh0cmFcIlxuaW1wb3J0IHBhdGggZnJvbSBcInBhdGhcIlxuXG5leHBvcnQgeyBFbmFibGVkRGF0YXNldHMgfSBmcm9tIFwiLi9kYXRhc2V0c1wiXG5pbXBvcnQgeyBkYXRhc2V0cywgRW5hYmxlZERhdGFzZXRzIH0gZnJvbSBcIi4vZGF0YXNldHNcIlxuZXhwb3J0IHsgd2Fsa0RpciB9IGZyb20gXCIuL2ZpbGVfc3lzdGVtc1wiXG5pbXBvcnQgeyB3YWxrRGlyIH0gZnJvbSBcIi4vZmlsZV9zeXN0ZW1zXCJcbmltcG9ydCB7XG4gIEFjdGV1cixcbiAgQ29udmVydCBhcyBBY3RldXJzRXRPcmdhbmVzQ29udmVydCxcbiAgT3JnYW5lLFxuICBQaG90byxcbn0gZnJvbSBcIi4vdHlwZXMvYWN0ZXVyc19ldF9vcmdhbmVzXCJcbmltcG9ydCB7IENvbnZlcnQgYXMgQWdlbmRhc0NvbnZlcnQsIFJldW5pb24gfSBmcm9tIFwiLi90eXBlcy9hZ2VuZGFzXCJcbmltcG9ydCB7IEFtZW5kZW1lbnQsIENvbnZlcnQgYXMgQW1lbmRlbWVudHNDb252ZXJ0IH0gZnJvbSBcIi4vdHlwZXMvYW1lbmRlbWVudHNcIlxuaW1wb3J0IHtcbiAgQ29udmVydCBhcyBEb3NzaWVyc0xlZ2lzbGF0aWZzQ29udmVydCxcbiAgRG9jdW1lbnQsXG4gIERvc3NpZXJQYXJsZW1lbnRhaXJlLFxufSBmcm9tIFwiLi90eXBlcy9kb3NzaWVyc19sZWdpc2xhdGlmc1wiXG5pbXBvcnQgeyBMZWdpc2xhdHVyZSB9IGZyb20gXCIuL3R5cGVzL2xlZ2lzbGF0dXJlc1wiXG5pbXBvcnQgeyBDb252ZXJ0IGFzIFNjcnV0aW5zQ29udmVydCwgU2NydXRpbiB9IGZyb20gXCIuL3R5cGVzL3NjcnV0aW5zXCJcblxuZXhwb3J0IGludGVyZmFjZSBEYXRhIHtcbiAgcmVhZG9ubHkgYWN0ZXVyQnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogQWN0ZXVyIH1cbiAgcmVhZG9ubHkgYW1lbmRlbWVudEJ5VWlkOiB7IFt1aWQ6IHN0cmluZ106IEFtZW5kZW1lbnQgfVxuICByZWFkb25seSBkb2N1bWVudEJ5VWlkOiB7IFt1aWQ6IHN0cmluZ106IERvY3VtZW50IH1cbiAgcmVhZG9ubHkgZG9zc2llclBhcmxlbWVudGFpcmVCeVNlbmF0Q2hlbWluOiB7XG4gICAgW3VpZDogc3RyaW5nXTogRG9zc2llclBhcmxlbWVudGFpcmVcbiAgfVxuICByZWFkb25seSBkb3NzaWVyUGFybGVtZW50YWlyZUJ5VGl0cmVDaGVtaW46IHtcbiAgICBbdWlkOiBzdHJpbmddOiBEb3NzaWVyUGFybGVtZW50YWlyZVxuICB9XG4gIHJlYWRvbmx5IGRvc3NpZXJQYXJsZW1lbnRhaXJlQnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogRG9zc2llclBhcmxlbWVudGFpcmUgfVxuICByZWFkb25seSBvcmdhbmVCeVVpZDogeyBbdWlkOiBzdHJpbmddOiBPcmdhbmUgfVxuICByZWFkb25seSBwaG90b0J5VWlkOiB7IFt1aWQ6IHN0cmluZ106IFBob3RvIH1cbiAgcmVhZG9ubHkgcmV1bmlvbkJ5VWlkOiB7IFt1aWQ6IHN0cmluZ106IFJldW5pb24gfVxuICByZWFkb25seSByZXVuaW9uc0J5RGF5OiB7IFtkYXk6IHN0cmluZ106IFJldW5pb25bXSB9XG4gIHJlYWRvbmx5IHJldW5pb25zQnlEb3NzaWVyVWlkOiB7IFtkb3NzaWVyVWlkOiBzdHJpbmddOiBSZXVuaW9uW10gfVxuICByZWFkb25seSBzY3J1dGluQnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogU2NydXRpbiB9XG59XG5cbmNvbnN0IGRvY3VtZW50VWlkUmVnZXggPSAvXihBQ0lOfEFWQ0V8QVZJU3xERUNMfEVUREl8TEVUVHxQSU9OfFBOUkV8UFJKTHxSQVBQfFJJTkYpKEFOfFNOKShSXFxkKylbTFNdKFxcZCspKEJ8QlRBfEJUQykoXFxkKykoLS4qKT8kL1xuY29uc3QgZG9zc2llclVpZFJlZ2V4ID0gL15ETChSXFxkKykoTFxcZCspTihcXGQrKSQvXG5jb25zdCByZXVuaW9uVWlkUmVnZXggPSAvXlJVKEFOfENHfFNOKShSXFxkKykoTFxcZCspKFtBU11cXGR7NH0pKElEQ3xJREZMP3xJRFMpKFxcZCspJC9cbmNvbnN0IHNjcnV0aW5VaWRSZWdleCA9IC9eVlRBTihSXFxkKykoTFxcZCspVihcXGQrKSQvXG5cbi8qKiBMb2FkIGRhdGEgZnJvbSBzcGxpdCBmaWxlcy4gKi9cbmV4cG9ydCBmdW5jdGlvbiBsb2FkQXNzZW1ibGVlRGF0YShcbiAgZGF0YURpcjogc3RyaW5nLFxuICBlbmFibGVkRGF0YXNldHM6IEVuYWJsZWREYXRhc2V0cyxcbiAgbGVnaXNsYXR1cmU6IExlZ2lzbGF0dXJlLFxuICB7IGxvZyA9IGZhbHNlIH0gPSB7fSxcbik6IERhdGEge1xuICBjb25zdCBhY3RldXJCeVVpZDogeyBbdWlkOiBzdHJpbmddOiBBY3RldXIgfSA9IHt9XG4gIGNvbnN0IG9yZ2FuZUJ5VWlkOiB7IFt1aWQ6IHN0cmluZ106IE9yZ2FuZSB9ID0ge31cbiAgaWYgKGVuYWJsZWREYXRhc2V0cyAmIEVuYWJsZWREYXRhc2V0cy5BY3RldXJzRXRPcmdhbmVzKSB7XG4gICAgZm9yIChjb25zdCBkYXRhc2V0IG9mIGRhdGFzZXRzLmFjdGV1cnNFdE9yZ2FuZXMpIHtcbiAgICAgIGlmIChkYXRhc2V0Lmlnbm9yZUZvcldlYikge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgaWYgKFxuICAgICAgICBsZWdpc2xhdHVyZSAhPT0gTGVnaXNsYXR1cmUuQWxsICYmXG4gICAgICAgIGRhdGFzZXQubGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgICBsZWdpc2xhdHVyZSAhPT0gZGF0YXNldC5sZWdpc2xhdHVyZVxuICAgICAgKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBjb25zdCBkYXRhc2V0RGlyID0gcGF0aC5qb2luKFxuICAgICAgICBkYXRhRGlyLFxuICAgICAgICBkYXRhc2V0LmZpbGVuYW1lLnJlcGxhY2UoL1xcLmpzb24kLywgXCJfbmV0dG95ZVwiKSxcbiAgICAgIClcblxuICAgICAgZm9yIChjb25zdCBhY3RldXJTcGxpdFBhdGggb2Ygd2Fsa0RpcihkYXRhc2V0RGlyLCBbXCJhY3RldXJzXCJdKSkge1xuICAgICAgICBjb25zdCBhY3RldXJGaWxlbmFtZSA9IGFjdGV1clNwbGl0UGF0aFthY3RldXJTcGxpdFBhdGgubGVuZ3RoIC0gMV1cbiAgICAgICAgaWYgKCFhY3RldXJGaWxlbmFtZS5lbmRzV2l0aChcIi5qc29uXCIpKSB7XG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBhY3RldXJGaWxlUGF0aCA9IHBhdGguam9pbihkYXRhc2V0RGlyLCAuLi5hY3RldXJTcGxpdFBhdGgpXG4gICAgICAgIGlmIChsb2cpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhgTG9hZGluZyBmaWxlOiAke2FjdGV1ckZpbGVQYXRofeKApmApXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYWN0ZXVySnNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKGFjdGV1ckZpbGVQYXRoLCB7XG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICB9KVxuICAgICAgICBjb25zdCBhY3RldXIgPSBBY3RldXJzRXRPcmdhbmVzQ29udmVydC50b0FjdGV1cihhY3RldXJKc29uKVxuICAgICAgICAvLyBLZWVwIHRoZSBmaXJzdCBleGlzdGluZyBcImFjdGV1clwiLCBiZWNhdXNlIHRoZSBmaXJzdCB3cmFwcGVyIGlzIHRoZSBtb3N0IGNvbXBsZXRlLlxuICAgICAgICBpZiAoYWN0ZXVyQnlVaWRbYWN0ZXVyLnVpZF0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGFjdGV1ckJ5VWlkW2FjdGV1ci51aWRdID0gYWN0ZXVyXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgZm9yIChjb25zdCBvcmdhbmVTcGxpdFBhdGggb2Ygd2Fsa0RpcihkYXRhc2V0RGlyLCBbXCJvcmdhbmVzXCJdKSkge1xuICAgICAgICBjb25zdCBvcmdhbmVGaWxlbmFtZSA9IG9yZ2FuZVNwbGl0UGF0aFtvcmdhbmVTcGxpdFBhdGgubGVuZ3RoIC0gMV1cbiAgICAgICAgaWYgKCFvcmdhbmVGaWxlbmFtZS5lbmRzV2l0aChcIi5qc29uXCIpKSB7XG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBvcmdhbmVGaWxlUGF0aCA9IHBhdGguam9pbihkYXRhc2V0RGlyLCAuLi5vcmdhbmVTcGxpdFBhdGgpXG4gICAgICAgIGlmIChsb2cpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhgTG9hZGluZyBmaWxlOiAke29yZ2FuZUZpbGVQYXRofeKApmApXG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgb3JnYW5lSnNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKG9yZ2FuZUZpbGVQYXRoLCB7XG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICB9KVxuICAgICAgICBjb25zdCBvcmdhbmUgPSBBY3RldXJzRXRPcmdhbmVzQ29udmVydC50b09yZ2FuZShvcmdhbmVKc29uKVxuICAgICAgICAvLyBLZWVwIHRoZSBmaXJzdCBleGlzdGluZyBcIm9yZ2FuZVwiLCBiZWNhdXNlIHRoZSBmaXJzdCB3cmFwcGVyIGlzIHRoZSBtb3N0IGNvbXBsZXRlLlxuICAgICAgICBpZiAob3JnYW5lQnlVaWRbb3JnYW5lLnVpZF0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIG9yZ2FuZUJ5VWlkW29yZ2FuZS51aWRdID0gb3JnYW5lXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjb25zdCByZXVuaW9uQnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogUmV1bmlvbiB9ID0ge31cbiAgY29uc3QgcmV1bmlvbnNCeURheTogeyBbZGF5OiBzdHJpbmddOiBSZXVuaW9uW10gfSA9IHt9XG4gIGNvbnN0IHJldW5pb25zQnlEb3NzaWVyVWlkOiB7IFtkb3NzaWVyVWlkOiBzdHJpbmddOiBSZXVuaW9uW10gfSA9IHt9XG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuQWdlbmRhcykge1xuICAgIGZvciAoY29uc3QgZGF0YXNldCBvZiBkYXRhc2V0cy5hZ2VuZGFzKSB7XG4gICAgICBpZiAoZGF0YXNldC5pZ25vcmVGb3JXZWIpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgbGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgICBkYXRhc2V0LmxlZ2lzbGF0dXJlICE9PSBMZWdpc2xhdHVyZS5BbGwgJiZcbiAgICAgICAgbGVnaXNsYXR1cmUgIT09IGRhdGFzZXQubGVnaXNsYXR1cmVcbiAgICAgICkge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgY29uc3QgZGF0YXNldERpciA9IHBhdGguam9pbihcbiAgICAgICAgZGF0YURpcixcbiAgICAgICAgZGF0YXNldC5maWxlbmFtZS5yZXBsYWNlKC9cXC5qc29uJC8sIFwiX25ldHRveWVcIiksXG4gICAgICApXG4gICAgICBmb3IgKGNvbnN0IHJldW5pb25TcGxpdFBhdGggb2Ygd2Fsa0RpcihkYXRhc2V0RGlyKSkge1xuICAgICAgICBjb25zdCByZXVuaW9uRmlsZW5hbWUgPSByZXVuaW9uU3BsaXRQYXRoW3JldW5pb25TcGxpdFBhdGgubGVuZ3RoIC0gMV1cbiAgICAgICAgaWYgKCFyZXVuaW9uRmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcmV1bmlvbkZpbGVQYXRoID0gcGF0aC5qb2luKGRhdGFzZXREaXIsIC4uLnJldW5pb25TcGxpdFBhdGgpXG4gICAgICAgIGlmIChsb2cpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhgTG9hZGluZyBmaWxlOiAke3JldW5pb25GaWxlUGF0aH3igKZgKVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHJldW5pb25Kc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMocmV1bmlvbkZpbGVQYXRoLCB7XG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICB9KVxuICAgICAgICBjb25zdCByZXVuaW9uID0gQWdlbmRhc0NvbnZlcnQudG9SZXVuaW9uKHJldW5pb25Kc29uKVxuICAgICAgICBpZiAocmV1bmlvbkJ5VWlkW3JldW5pb24udWlkXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgcmV1bmlvbkJ5VWlkW3JldW5pb24udWlkXSA9IHJldW5pb25cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGRheSA9IHJldW5pb24udGltZXN0YW1wRGVidXQudG9JU09TdHJpbmcoKS5zcGxpdChcIlRcIilbMF1cbiAgICAgICAgbGV0IHJldW5pb25zQXREYXkgPSByZXVuaW9uc0J5RGF5W2RheV1cbiAgICAgICAgaWYgKHJldW5pb25zQXREYXkgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHJldW5pb25zQXREYXkgPSByZXVuaW9uc0J5RGF5W2RheV0gPSBbXVxuICAgICAgICB9XG4gICAgICAgIHJldW5pb25zQXREYXkucHVzaChyZXVuaW9uKVxuXG4gICAgICAgIGNvbnN0IG9kaiA9IHJldW5pb24ub2RqXG4gICAgICAgIGlmIChvZGogIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGZvciAoY29uc3QgcG9pbnRPZGogb2Ygb2RqLnBvaW50c09kaiB8fCBbXSkge1xuICAgICAgICAgICAgZm9yIChjb25zdCBkb3NzaWVyTGVnaXNsYXRpZlJlZiBvZiBwb2ludE9kai5kb3NzaWVyc0xlZ2lzbGF0aWZzUmVmcyB8fFxuICAgICAgICAgICAgICBbXSkge1xuICAgICAgICAgICAgICBsZXQgcmV1bmlvbnNBdERvc3NpZXJVaWQgPVxuICAgICAgICAgICAgICAgIHJldW5pb25zQnlEb3NzaWVyVWlkW2Rvc3NpZXJMZWdpc2xhdGlmUmVmXVxuICAgICAgICAgICAgICBpZiAocmV1bmlvbnNBdERvc3NpZXJVaWQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHJldW5pb25zQXREb3NzaWVyVWlkID0gcmV1bmlvbnNCeURvc3NpZXJVaWRbXG4gICAgICAgICAgICAgICAgICBkb3NzaWVyTGVnaXNsYXRpZlJlZlxuICAgICAgICAgICAgICAgIF0gPSBbXVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHJldW5pb25zQXREb3NzaWVyVWlkLnB1c2gocmV1bmlvbilcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjb25zdCBhbWVuZGVtZW50QnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogQW1lbmRlbWVudCB9ID0ge31cbiAgaWYgKGVuYWJsZWREYXRhc2V0cyAmIEVuYWJsZWREYXRhc2V0cy5BbWVuZGVtZW50cykge1xuICAgIGZvciAoY29uc3QgZGF0YXNldCBvZiBkYXRhc2V0cy5hbWVuZGVtZW50cykge1xuICAgICAgaWYgKGRhdGFzZXQuaWdub3JlRm9yV2ViKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBpZiAoXG4gICAgICAgIGxlZ2lzbGF0dXJlICE9PSBMZWdpc2xhdHVyZS5BbGwgJiZcbiAgICAgICAgZGF0YXNldC5sZWdpc2xhdHVyZSAhPT0gTGVnaXNsYXR1cmUuQWxsICYmXG4gICAgICAgIGxlZ2lzbGF0dXJlICE9PSBkYXRhc2V0LmxlZ2lzbGF0dXJlXG4gICAgICApIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGNvbnN0IGRhdGFzZXREaXIgPSBwYXRoLmpvaW4oXG4gICAgICAgIGRhdGFEaXIsXG4gICAgICAgIGRhdGFzZXQuZmlsZW5hbWUucmVwbGFjZSgvXFwuanNvbiQvLCBcIl9uZXR0b3llXCIpLFxuICAgICAgKVxuXG4gICAgICBmb3IgKGNvbnN0IGFtZW5kZW1lbnRTcGxpdFBhdGggb2Ygd2Fsa0RpcihkYXRhc2V0RGlyKSkge1xuICAgICAgICBjb25zdCBhbWVuZGVtZW50RmlsZW5hbWUgPVxuICAgICAgICAgIGFtZW5kZW1lbnRTcGxpdFBhdGhbYW1lbmRlbWVudFNwbGl0UGF0aC5sZW5ndGggLSAxXVxuICAgICAgICBpZiAoIWFtZW5kZW1lbnRGaWxlbmFtZS5lbmRzV2l0aChcIi5qc29uXCIpKSB7XG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBhbWVuZGVtZW50RmlsZVBhdGggPSBwYXRoLmpvaW4oZGF0YXNldERpciwgLi4uYW1lbmRlbWVudFNwbGl0UGF0aClcbiAgICAgICAgaWYgKGxvZykge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGBMb2FkaW5nIGZpbGU6ICR7YW1lbmRlbWVudEZpbGVQYXRofeKApmApXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYW1lbmRlbWVudEpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhhbWVuZGVtZW50RmlsZVBhdGgsIHtcbiAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgIH0pXG4gICAgICAgIGNvbnN0IGFtZW5kZW1lbnQgPSBBbWVuZGVtZW50c0NvbnZlcnQudG9BbWVuZGVtZW50KGFtZW5kZW1lbnRKc29uKVxuICAgICAgICBpZiAoYW1lbmRlbWVudEJ5VWlkW2FtZW5kZW1lbnQudWlkXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgYW1lbmRlbWVudEJ5VWlkW2FtZW5kZW1lbnQudWlkXSA9IGFtZW5kZW1lbnRcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGRvY3VtZW50QnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogRG9jdW1lbnQgfSA9IHt9XG4gIGNvbnN0IGRvc3NpZXJQYXJsZW1lbnRhaXJlQnlTZW5hdENoZW1pbjoge1xuICAgIFt1aWQ6IHN0cmluZ106IERvc3NpZXJQYXJsZW1lbnRhaXJlXG4gIH0gPSB7fVxuICBjb25zdCBkb3NzaWVyUGFybGVtZW50YWlyZUJ5VGl0cmVDaGVtaW46IHtcbiAgICBbdWlkOiBzdHJpbmddOiBEb3NzaWVyUGFybGVtZW50YWlyZVxuICB9ID0ge31cbiAgY29uc3QgZG9zc2llclBhcmxlbWVudGFpcmVCeVVpZDogeyBbdWlkOiBzdHJpbmddOiBEb3NzaWVyUGFybGVtZW50YWlyZSB9ID0ge31cbiAgaWYgKGVuYWJsZWREYXRhc2V0cyAmIEVuYWJsZWREYXRhc2V0cy5Eb3NzaWVyc0xlZ2lzbGF0aWZzKSB7XG4gICAgZm9yIChjb25zdCBkYXRhc2V0IG9mIGRhdGFzZXRzLmRvc3NpZXJzTGVnaXNsYXRpZnMpIHtcbiAgICAgIGlmIChkYXRhc2V0Lmlnbm9yZUZvcldlYikge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgaWYgKFxuICAgICAgICBsZWdpc2xhdHVyZSAhPT0gTGVnaXNsYXR1cmUuQWxsICYmXG4gICAgICAgIGRhdGFzZXQubGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgICBsZWdpc2xhdHVyZSAhPT0gZGF0YXNldC5sZWdpc2xhdHVyZVxuICAgICAgKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBjb25zdCBkYXRhc2V0RGlyID0gcGF0aC5qb2luKFxuICAgICAgICBkYXRhRGlyLFxuICAgICAgICBkYXRhc2V0LmZpbGVuYW1lLnJlcGxhY2UoL1xcLmpzb24kLywgXCJfbmV0dG95ZVwiKSxcbiAgICAgIClcblxuICAgICAgZm9yIChjb25zdCBkb2N1bWVudFNwbGl0UGF0aCBvZiB3YWxrRGlyKGRhdGFzZXREaXIsIFtcImRvY3VtZW50c1wiXSkpIHtcbiAgICAgICAgY29uc3QgZG9jdW1lbnRGaWxlbmFtZSA9IGRvY3VtZW50U3BsaXRQYXRoW2RvY3VtZW50U3BsaXRQYXRoLmxlbmd0aCAtIDFdXG4gICAgICAgIGlmICghZG9jdW1lbnRGaWxlbmFtZS5lbmRzV2l0aChcIi5qc29uXCIpKSB7XG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBkb2N1bWVudEZpbGVQYXRoID0gcGF0aC5qb2luKGRhdGFzZXREaXIsIC4uLmRvY3VtZW50U3BsaXRQYXRoKVxuICAgICAgICBpZiAobG9nKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coYExvYWRpbmcgZmlsZTogJHtkb2N1bWVudEZpbGVQYXRofeKApmApXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZG9jdW1lbnRKc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoZG9jdW1lbnRGaWxlUGF0aCwge1xuICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgfSlcbiAgICAgICAgY29uc3QgZG9jdW1lbnQgPSBEb3NzaWVyc0xlZ2lzbGF0aWZzQ29udmVydC50b0RvY3VtZW50KGRvY3VtZW50SnNvbilcbiAgICAgICAgaWYgKGRvY3VtZW50QnlVaWRbZG9jdW1lbnQudWlkXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgZG9jdW1lbnRCeVVpZFtkb2N1bWVudC51aWRdID0gZG9jdW1lbnRcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBmb3IgKGNvbnN0IGRvc3NpZXJTcGxpdFBhdGggb2Ygd2Fsa0RpcihkYXRhc2V0RGlyLCBbXCJkb3NzaWVyc1wiXSkpIHtcbiAgICAgICAgY29uc3QgZG9zc2llckZpbGVuYW1lID0gZG9zc2llclNwbGl0UGF0aFtkb3NzaWVyU3BsaXRQYXRoLmxlbmd0aCAtIDFdXG4gICAgICAgIGlmICghZG9zc2llckZpbGVuYW1lLmVuZHNXaXRoKFwiLmpzb25cIikpIHtcbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGRvc3NpZXJGaWxlUGF0aCA9IHBhdGguam9pbihkYXRhc2V0RGlyLCAuLi5kb3NzaWVyU3BsaXRQYXRoKVxuICAgICAgICBpZiAobG9nKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coYExvYWRpbmcgZmlsZTogJHtkb3NzaWVyRmlsZVBhdGh94oCmYClcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBkb3NzaWVySnNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKGRvc3NpZXJGaWxlUGF0aCwge1xuICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgfSlcbiAgICAgICAgY29uc3QgZG9zc2llciA9IERvc3NpZXJzTGVnaXNsYXRpZnNDb252ZXJ0LnRvRG9zc2llclBhcmxlbWVudGFpcmUoXG4gICAgICAgICAgZG9zc2llckpzb24sXG4gICAgICAgIClcbiAgICAgICAgY29uc3QgdGl0cmVEb3NzaWVyID0gZG9zc2llci50aXRyZURvc3NpZXJcbiAgICAgICAgaWYgKFxuICAgICAgICAgIHRpdHJlRG9zc2llci5zZW5hdENoZW1pbiAmJlxuICAgICAgICAgIGRvc3NpZXJQYXJsZW1lbnRhaXJlQnlTZW5hdENoZW1pblt0aXRyZURvc3NpZXIuc2VuYXRDaGVtaW5dID09PVxuICAgICAgICAgICAgdW5kZWZpbmVkXG4gICAgICAgICkge1xuICAgICAgICAgIGRvc3NpZXJQYXJsZW1lbnRhaXJlQnlTZW5hdENoZW1pblt0aXRyZURvc3NpZXIuc2VuYXRDaGVtaW5dID0gZG9zc2llclxuICAgICAgICB9XG4gICAgICAgIGlmIChcbiAgICAgICAgICB0aXRyZURvc3NpZXIudGl0cmVDaGVtaW4gJiZcbiAgICAgICAgICBkb3NzaWVyUGFybGVtZW50YWlyZUJ5VGl0cmVDaGVtaW5bdGl0cmVEb3NzaWVyLnRpdHJlQ2hlbWluXSA9PT1cbiAgICAgICAgICAgIHVuZGVmaW5lZFxuICAgICAgICApIHtcbiAgICAgICAgICBkb3NzaWVyUGFybGVtZW50YWlyZUJ5VGl0cmVDaGVtaW5bdGl0cmVEb3NzaWVyLnRpdHJlQ2hlbWluXSA9IGRvc3NpZXJcbiAgICAgICAgfVxuICAgICAgICBpZiAoZG9zc2llclBhcmxlbWVudGFpcmVCeVVpZFtkb3NzaWVyLnVpZF0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGRvc3NpZXJQYXJsZW1lbnRhaXJlQnlVaWRbZG9zc2llci51aWRdID0gZG9zc2llclxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgbGV0IHBob3RvQnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogUGhvdG8gfSA9IHt9XG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuUGhvdG9zKSB7XG4gICAge1xuICAgICAgY29uc3QganNvbkZpbGVQYXRoOiBzdHJpbmcgPSBwYXRoLmpvaW4oXG4gICAgICAgIGRhdGFEaXIsXG4gICAgICAgIGBwaG90b3NfZGVwdXRlc18ke1xuICAgICAgICAgIC8vIFRPRE86IEhhbmRsZSBMZWdpc2xhdHVyZS5BbGwuXG4gICAgICAgICAgbGVnaXNsYXR1cmUgPT09IExlZ2lzbGF0dXJlLkFsbCA/IExlZ2lzbGF0dXJlLlF1aW56ZSA6IGxlZ2lzbGF0dXJlXG4gICAgICAgIH1gLFxuICAgICAgICBcImRlcHV0ZXMuanNvblwiLFxuICAgICAgKVxuICAgICAgaWYgKGZzLmV4aXN0c1N5bmMoanNvbkZpbGVQYXRoKSkge1xuICAgICAgICBpZiAobG9nKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coYExvYWRpbmcgZmlsZTogJHtqc29uRmlsZVBhdGh9YClcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBqc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoanNvbkZpbGVQYXRoLCB7IGVuY29kaW5nOiBcInV0ZjhcIiB9KVxuICAgICAgICBPYmplY3QuYXNzaWduKHBob3RvQnlVaWQsIEpTT04ucGFyc2UoanNvbikpXG4gICAgICB9IGVsc2UgaWYgKGxvZykge1xuICAgICAgICBjb25zb2xlLmxvZyhgSWdub3JpbmcgbWlzc2luZyBmaWxlOiAke2pzb25GaWxlUGF0aH1gKVxuICAgICAgfVxuICAgIH1cblxuICAgIHtcbiAgICAgIGNvbnN0IGpzb25GaWxlUGF0aDogc3RyaW5nID0gcGF0aC5qb2luKFxuICAgICAgICBkYXRhRGlyLFxuICAgICAgICBcInBob3Rvc19zZW5hdGV1cnNcIixcbiAgICAgICAgXCJzZW5hdGV1cnMuanNvblwiLFxuICAgICAgKVxuICAgICAgaWYgKGZzLmV4aXN0c1N5bmMoanNvbkZpbGVQYXRoKSkge1xuICAgICAgICBpZiAobG9nKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coYExvYWRpbmcgZmlsZTogJHtqc29uRmlsZVBhdGh9YClcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBqc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoanNvbkZpbGVQYXRoLCB7IGVuY29kaW5nOiBcInV0ZjhcIiB9KVxuICAgICAgICBPYmplY3QuYXNzaWduKHBob3RvQnlVaWQsIEpTT04ucGFyc2UoanNvbikpXG4gICAgICB9IGVsc2UgaWYgKGxvZykge1xuICAgICAgICBjb25zb2xlLmxvZyhgSWdub3JpbmcgbWlzc2luZyBmaWxlOiAke2pzb25GaWxlUGF0aH1gKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IHNjcnV0aW5CeVVpZDogeyBbdWlkOiBzdHJpbmddOiBTY3J1dGluIH0gPSB7fVxuICBpZiAoZW5hYmxlZERhdGFzZXRzICYgRW5hYmxlZERhdGFzZXRzLlNjcnV0aW5zKSB7XG4gICAgZm9yIChjb25zdCBkYXRhc2V0IG9mIGRhdGFzZXRzLnNjcnV0aW5zKSB7XG4gICAgICBpZiAoZGF0YXNldC5pZ25vcmVGb3JXZWIpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgbGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgICBkYXRhc2V0LmxlZ2lzbGF0dXJlICE9PSBMZWdpc2xhdHVyZS5BbGwgJiZcbiAgICAgICAgbGVnaXNsYXR1cmUgIT09IGRhdGFzZXQubGVnaXNsYXR1cmVcbiAgICAgICkge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgY29uc3QgZGF0YXNldERpciA9IHBhdGguam9pbihcbiAgICAgICAgZGF0YURpcixcbiAgICAgICAgZGF0YXNldC5maWxlbmFtZS5yZXBsYWNlKC9cXC5qc29uJC8sIFwiX25ldHRveWVcIiksXG4gICAgICApXG5cbiAgICAgIGZvciAoY29uc3Qgc2NydXRpblNwbGl0UGF0aCBvZiB3YWxrRGlyKGRhdGFzZXREaXIpKSB7XG4gICAgICAgIGNvbnN0IHNjcnV0aW5GaWxlbmFtZSA9IHNjcnV0aW5TcGxpdFBhdGhbc2NydXRpblNwbGl0UGF0aC5sZW5ndGggLSAxXVxuICAgICAgICBpZiAoIXNjcnV0aW5GaWxlbmFtZS5lbmRzV2l0aChcIi5qc29uXCIpKSB7XG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBzY3J1dGluRmlsZVBhdGggPSBwYXRoLmpvaW4oZGF0YXNldERpciwgLi4uc2NydXRpblNwbGl0UGF0aClcbiAgICAgICAgaWYgKGxvZykge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGBMb2FkaW5nIGZpbGU6ICR7c2NydXRpbkZpbGVQYXRofeKApmApXG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgc2NydXRpbkpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhzY3J1dGluRmlsZVBhdGgsIHtcbiAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgIH0pXG4gICAgICAgIGNvbnN0IHNjcnV0aW4gPSBTY3J1dGluc0NvbnZlcnQudG9TY3J1dGluKHNjcnV0aW5Kc29uKVxuICAgICAgICBpZiAoc2NydXRpbkJ5VWlkW3NjcnV0aW4udWlkXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgc2NydXRpbkJ5VWlkW3NjcnV0aW4udWlkXSA9IHNjcnV0aW5cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgYWN0ZXVyQnlVaWQsXG4gICAgYW1lbmRlbWVudEJ5VWlkLFxuICAgIGRvY3VtZW50QnlVaWQsXG4gICAgZG9zc2llclBhcmxlbWVudGFpcmVCeVNlbmF0Q2hlbWluLFxuICAgIGRvc3NpZXJQYXJsZW1lbnRhaXJlQnlUaXRyZUNoZW1pbixcbiAgICBkb3NzaWVyUGFybGVtZW50YWlyZUJ5VWlkLFxuICAgIG9yZ2FuZUJ5VWlkLFxuICAgIHBob3RvQnlVaWQsXG4gICAgcmV1bmlvbkJ5VWlkLFxuICAgIHJldW5pb25zQnlEYXksXG4gICAgcmV1bmlvbnNCeURvc3NpZXJVaWQsXG4gICAgc2NydXRpbkJ5VWlkLFxuICB9XG59XG5cbi8qKiBMb2FkIGRhdGEgZnJvbSBiaWcgbW9ub2x5dGljIGZpbGVzLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGxvYWRBc3NlbWJsZWVEYXRhRnJvbUJpZ0ZpbGVzKFxuICBkYXRhRGlyOiBzdHJpbmcsXG4gIGVuYWJsZWREYXRhc2V0czogRW5hYmxlZERhdGFzZXRzLFxuICBsZWdpc2xhdHVyZTogTGVnaXNsYXR1cmUsXG4gIHsgbG9nID0gZmFsc2UgfSA9IHt9LFxuKTogRGF0YSB7XG4gIGNvbnN0IGFjdGV1ckJ5VWlkOiB7IFt1aWQ6IHN0cmluZ106IEFjdGV1ciB9ID0ge31cbiAgY29uc3Qgb3JnYW5lQnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogT3JnYW5lIH0gPSB7fVxuICBpZiAoZW5hYmxlZERhdGFzZXRzICYgRW5hYmxlZERhdGFzZXRzLkFjdGV1cnNFdE9yZ2FuZXMpIHtcbiAgICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgZGF0YXNldHMuYWN0ZXVyc0V0T3JnYW5lcykge1xuICAgICAgaWYgKGRhdGFzZXQuaWdub3JlRm9yV2ViKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBpZiAoXG4gICAgICAgIGxlZ2lzbGF0dXJlICE9PSBMZWdpc2xhdHVyZS5BbGwgJiZcbiAgICAgICAgZGF0YXNldC5sZWdpc2xhdHVyZSAhPT0gTGVnaXNsYXR1cmUuQWxsICYmXG4gICAgICAgIGxlZ2lzbGF0dXJlICE9PSBkYXRhc2V0LmxlZ2lzbGF0dXJlXG4gICAgICApIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGNvbnN0IGpzb25GaWxlUGF0aDogc3RyaW5nID0gcGF0aC5qb2luKFxuICAgICAgICBkYXRhRGlyLFxuICAgICAgICBkYXRhc2V0LmZpbGVuYW1lLnJlcGxhY2UoL1xcLmpzb24kLywgXCJfbmV0dG95ZS5qc29uXCIpLFxuICAgICAgKVxuICAgICAgaWYgKGxvZykge1xuICAgICAgICBjb25zb2xlLmxvZyhgTG9hZGluZyBmaWxlOiAke2pzb25GaWxlUGF0aH1gKVxuICAgICAgfVxuICAgICAgY29uc3QganNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKGpzb25GaWxlUGF0aCwgeyBlbmNvZGluZzogXCJ1dGY4XCIgfSlcbiAgICAgIGNvbnN0IGFjdGV1cnNFdE9yZ2FuZXMgPSBBY3RldXJzRXRPcmdhbmVzQ29udmVydC50b0FjdGV1cnNFdE9yZ2FuZXMoanNvbilcbiAgICAgIGZvciAoY29uc3QgYWN0ZXVyIG9mIGFjdGV1cnNFdE9yZ2FuZXMuYWN0ZXVycykge1xuICAgICAgICAvLyBLZWVwIHRoZSBmaXJzdCBleGlzdGluZyBcImFjdGV1clwiLCBiZWNhdXNlIHRoZSBmaXJzdCB3cmFwcGVyIGlzIHRoZSBtb3N0IGNvbXBsZXRlLlxuICAgICAgICBpZiAoYWN0ZXVyQnlVaWRbYWN0ZXVyLnVpZF0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGFjdGV1ckJ5VWlkW2FjdGV1ci51aWRdID0gYWN0ZXVyXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGZvciAoY29uc3Qgb3JnYW5lIG9mIGFjdGV1cnNFdE9yZ2FuZXMub3JnYW5lcykge1xuICAgICAgICAvLyBLZWVwIHRoZSBmaXJzdCBleGlzdGluZyBcIm9yZ2FuZVwiLCBiZWNhdXNlIHRoZSBmaXJzdCB3cmFwcGVyIGlzIHRoZSBtb3N0IGNvbXBsZXRlLlxuICAgICAgICBpZiAob3JnYW5lQnlVaWRbb3JnYW5lLnVpZF0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIG9yZ2FuZUJ5VWlkW29yZ2FuZS51aWRdID0gb3JnYW5lXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjb25zdCByZXVuaW9uQnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogUmV1bmlvbiB9ID0ge31cbiAgY29uc3QgcmV1bmlvbnNCeURheTogeyBbZGF5OiBzdHJpbmddOiBSZXVuaW9uW10gfSA9IHt9XG4gIGNvbnN0IHJldW5pb25zQnlEb3NzaWVyVWlkOiB7IFtkb3NzaWVyVWlkOiBzdHJpbmddOiBSZXVuaW9uW10gfSA9IHt9XG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuQWdlbmRhcykge1xuICAgIGZvciAoY29uc3QgZGF0YXNldCBvZiBkYXRhc2V0cy5hZ2VuZGFzKSB7XG4gICAgICBpZiAoZGF0YXNldC5pZ25vcmVGb3JXZWIpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgbGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgICBkYXRhc2V0LmxlZ2lzbGF0dXJlICE9PSBMZWdpc2xhdHVyZS5BbGwgJiZcbiAgICAgICAgbGVnaXNsYXR1cmUgIT09IGRhdGFzZXQubGVnaXNsYXR1cmVcbiAgICAgICkge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgY29uc3QganNvbkZpbGVQYXRoOiBzdHJpbmcgPSBwYXRoLmpvaW4oXG4gICAgICAgIGRhdGFEaXIsXG4gICAgICAgIGRhdGFzZXQuZmlsZW5hbWUucmVwbGFjZSgvXFwuanNvbiQvLCBcIl9uZXR0b3llLmpzb25cIiksXG4gICAgICApXG4gICAgICBpZiAobG9nKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGBMb2FkaW5nIGZpbGU6ICR7anNvbkZpbGVQYXRofWApXG4gICAgICB9XG4gICAgICBjb25zdCBqc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoanNvbkZpbGVQYXRoLCB7IGVuY29kaW5nOiBcInV0ZjhcIiB9KVxuICAgICAgY29uc3QgYWdlbmRhcyA9IEFnZW5kYXNDb252ZXJ0LnRvQWdlbmRhcyhqc29uKVxuICAgICAgZm9yIChjb25zdCByZXVuaW9uIG9mIGFnZW5kYXMucmV1bmlvbnMpIHtcbiAgICAgICAgaWYgKHJldW5pb25CeVVpZFtyZXVuaW9uLnVpZF0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHJldW5pb25CeVVpZFtyZXVuaW9uLnVpZF0gPSByZXVuaW9uXG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBkYXkgPSByZXVuaW9uLnRpbWVzdGFtcERlYnV0LnRvSVNPU3RyaW5nKCkuc3BsaXQoXCJUXCIpWzBdXG4gICAgICAgIGxldCByZXVuaW9uc0F0RGF5ID0gcmV1bmlvbnNCeURheVtkYXldXG4gICAgICAgIGlmIChyZXVuaW9uc0F0RGF5ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICByZXVuaW9uc0F0RGF5ID0gcmV1bmlvbnNCeURheVtkYXldID0gW11cbiAgICAgICAgfVxuICAgICAgICByZXVuaW9uc0F0RGF5LnB1c2gocmV1bmlvbilcblxuICAgICAgICBjb25zdCBvZGogPSByZXVuaW9uLm9kalxuICAgICAgICBpZiAob2RqICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBmb3IgKGNvbnN0IHBvaW50T2RqIG9mIG9kai5wb2ludHNPZGogfHwgW10pIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgZG9zc2llckxlZ2lzbGF0aWZSZWYgb2YgcG9pbnRPZGouZG9zc2llcnNMZWdpc2xhdGlmc1JlZnMgfHxcbiAgICAgICAgICAgICAgW10pIHtcbiAgICAgICAgICAgICAgbGV0IHJldW5pb25zQXREb3NzaWVyVWlkID1cbiAgICAgICAgICAgICAgICByZXVuaW9uc0J5RG9zc2llclVpZFtkb3NzaWVyTGVnaXNsYXRpZlJlZl1cbiAgICAgICAgICAgICAgaWYgKHJldW5pb25zQXREb3NzaWVyVWlkID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICByZXVuaW9uc0F0RG9zc2llclVpZCA9IHJldW5pb25zQnlEb3NzaWVyVWlkW1xuICAgICAgICAgICAgICAgICAgZG9zc2llckxlZ2lzbGF0aWZSZWZcbiAgICAgICAgICAgICAgICBdID0gW11cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICByZXVuaW9uc0F0RG9zc2llclVpZC5wdXNoKHJldW5pb24pXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY29uc3QgYW1lbmRlbWVudEJ5VWlkOiB7IFt1aWQ6IHN0cmluZ106IEFtZW5kZW1lbnQgfSA9IHt9XG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuQW1lbmRlbWVudHMpIHtcbiAgICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgZGF0YXNldHMuYW1lbmRlbWVudHMpIHtcbiAgICAgIGlmIChkYXRhc2V0Lmlnbm9yZUZvcldlYikge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgaWYgKFxuICAgICAgICBsZWdpc2xhdHVyZSAhPT0gTGVnaXNsYXR1cmUuQWxsICYmXG4gICAgICAgIGRhdGFzZXQubGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgICBsZWdpc2xhdHVyZSAhPT0gZGF0YXNldC5sZWdpc2xhdHVyZVxuICAgICAgKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBjb25zdCBqc29uRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihcbiAgICAgICAgZGF0YURpcixcbiAgICAgICAgZGF0YXNldC5maWxlbmFtZS5yZXBsYWNlKC9cXC5qc29uJC8sIFwiX25ldHRveWUuanNvblwiKSxcbiAgICAgIClcbiAgICAgIGlmIChsb2cpIHtcbiAgICAgICAgY29uc29sZS5sb2coYExvYWRpbmcgZmlsZTogJHtqc29uRmlsZVBhdGh9YClcbiAgICAgIH1cbiAgICAgIGNvbnN0IGpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhqc29uRmlsZVBhdGgsIHsgZW5jb2Rpbmc6IFwidXRmOFwiIH0pXG4gICAgICBjb25zdCBhbWVuZGVtZW50cyA9IEFtZW5kZW1lbnRzQ29udmVydC50b0FtZW5kZW1lbnRzKGpzb24pXG4gICAgICBmb3IgKGNvbnN0IHRleHRlTGVnaXNsYXRpZiBvZiBhbWVuZGVtZW50cy50ZXh0ZXNMZWdpc2xhdGlmcykge1xuICAgICAgICBmb3IgKGNvbnN0IGFtZW5kZW1lbnQgb2YgdGV4dGVMZWdpc2xhdGlmLmFtZW5kZW1lbnRzKSB7XG4gICAgICAgICAgaWYgKGFtZW5kZW1lbnRCeVVpZFthbWVuZGVtZW50LnVpZF0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgYW1lbmRlbWVudEJ5VWlkW2FtZW5kZW1lbnQudWlkXSA9IGFtZW5kZW1lbnRcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjb25zdCBkb2N1bWVudEJ5VWlkOiB7IFt1aWQ6IHN0cmluZ106IERvY3VtZW50IH0gPSB7fVxuICBjb25zdCBkb3NzaWVyUGFybGVtZW50YWlyZUJ5U2VuYXRDaGVtaW46IHtcbiAgICBbdWlkOiBzdHJpbmddOiBEb3NzaWVyUGFybGVtZW50YWlyZVxuICB9ID0ge31cbiAgY29uc3QgZG9zc2llclBhcmxlbWVudGFpcmVCeVRpdHJlQ2hlbWluOiB7XG4gICAgW3VpZDogc3RyaW5nXTogRG9zc2llclBhcmxlbWVudGFpcmVcbiAgfSA9IHt9XG4gIGNvbnN0IGRvc3NpZXJQYXJsZW1lbnRhaXJlQnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogRG9zc2llclBhcmxlbWVudGFpcmUgfSA9IHt9XG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuRG9zc2llcnNMZWdpc2xhdGlmcykge1xuICAgIGZvciAoY29uc3QgZGF0YXNldCBvZiBkYXRhc2V0cy5kb3NzaWVyc0xlZ2lzbGF0aWZzKSB7XG4gICAgICBpZiAoZGF0YXNldC5pZ25vcmVGb3JXZWIpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgbGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgICBkYXRhc2V0LmxlZ2lzbGF0dXJlICE9PSBMZWdpc2xhdHVyZS5BbGwgJiZcbiAgICAgICAgbGVnaXNsYXR1cmUgIT09IGRhdGFzZXQubGVnaXNsYXR1cmVcbiAgICAgICkge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgY29uc3QganNvbkZpbGVQYXRoOiBzdHJpbmcgPSBwYXRoLmpvaW4oXG4gICAgICAgIGRhdGFEaXIsXG4gICAgICAgIGRhdGFzZXQuZmlsZW5hbWUucmVwbGFjZSgvXFwuanNvbiQvLCBcIl9uZXR0b3llLmpzb25cIiksXG4gICAgICApXG4gICAgICBpZiAobG9nKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGBMb2FkaW5nIGZpbGU6ICR7anNvbkZpbGVQYXRofWApXG4gICAgICB9XG4gICAgICBjb25zdCBqc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoanNvbkZpbGVQYXRoLCB7IGVuY29kaW5nOiBcInV0ZjhcIiB9KVxuICAgICAgY29uc3QgZG9zc2llcnNMZWdpc2xhdGlmcyA9IERvc3NpZXJzTGVnaXNsYXRpZnNDb252ZXJ0LnRvRG9zc2llcnNMZWdpc2xhdGlmcyhcbiAgICAgICAganNvbixcbiAgICAgIClcbiAgICAgIGZvciAoY29uc3QgZG9jdW1lbnQgb2YgZG9zc2llcnNMZWdpc2xhdGlmcy50ZXh0ZXNMZWdpc2xhdGlmcykge1xuICAgICAgICBpZiAoZG9jdW1lbnRCeVVpZFtkb2N1bWVudC51aWRdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBkb2N1bWVudEJ5VWlkW2RvY3VtZW50LnVpZF0gPSBkb2N1bWVudFxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBmb3IgKGNvbnN0IGRvc3NpZXIgb2YgZG9zc2llcnNMZWdpc2xhdGlmcy5kb3NzaWVyc1BhcmxlbWVudGFpcmVzKSB7XG4gICAgICAgIGNvbnN0IHRpdHJlRG9zc2llciA9IGRvc3NpZXIudGl0cmVEb3NzaWVyXG4gICAgICAgIGlmIChcbiAgICAgICAgICB0aXRyZURvc3NpZXIuc2VuYXRDaGVtaW4gJiZcbiAgICAgICAgICBkb3NzaWVyUGFybGVtZW50YWlyZUJ5U2VuYXRDaGVtaW5bdGl0cmVEb3NzaWVyLnNlbmF0Q2hlbWluXSA9PT1cbiAgICAgICAgICAgIHVuZGVmaW5lZFxuICAgICAgICApIHtcbiAgICAgICAgICBkb3NzaWVyUGFybGVtZW50YWlyZUJ5U2VuYXRDaGVtaW5bdGl0cmVEb3NzaWVyLnNlbmF0Q2hlbWluXSA9IGRvc3NpZXJcbiAgICAgICAgfVxuICAgICAgICBpZiAoXG4gICAgICAgICAgdGl0cmVEb3NzaWVyLnRpdHJlQ2hlbWluICYmXG4gICAgICAgICAgZG9zc2llclBhcmxlbWVudGFpcmVCeVRpdHJlQ2hlbWluW3RpdHJlRG9zc2llci50aXRyZUNoZW1pbl0gPT09XG4gICAgICAgICAgICB1bmRlZmluZWRcbiAgICAgICAgKSB7XG4gICAgICAgICAgZG9zc2llclBhcmxlbWVudGFpcmVCeVRpdHJlQ2hlbWluW3RpdHJlRG9zc2llci50aXRyZUNoZW1pbl0gPSBkb3NzaWVyXG4gICAgICAgIH1cbiAgICAgICAgaWYgKGRvc3NpZXJQYXJsZW1lbnRhaXJlQnlVaWRbZG9zc2llci51aWRdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBkb3NzaWVyUGFybGVtZW50YWlyZUJ5VWlkW2Rvc3NpZXIudWlkXSA9IGRvc3NpZXJcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IHBob3RvQnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogUGhvdG8gfSA9IHt9XG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuUGhvdG9zKSB7XG4gICAgY29uc3QgcGhvdG9CeVVpZCA9IHt9XG5cbiAgICB7XG4gICAgICBjb25zdCBqc29uRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihcbiAgICAgICAgZGF0YURpcixcbiAgICAgICAgYHBob3Rvc19kZXB1dGVzXyR7XG4gICAgICAgICAgLy8gVE9ETzogSGFuZGxlIExlZ2lzbGF0dXJlLkFsbC5cbiAgICAgICAgICBsZWdpc2xhdHVyZSA9PT0gTGVnaXNsYXR1cmUuQWxsID8gTGVnaXNsYXR1cmUuUXVpbnplIDogbGVnaXNsYXR1cmVcbiAgICAgICAgfWAsXG4gICAgICAgIFwiZGVwdXRlcy5qc29uXCIsXG4gICAgICApXG4gICAgICBpZiAoZnMuZXhpc3RzU3luYyhqc29uRmlsZVBhdGgpKSB7XG4gICAgICAgIGlmIChsb2cpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhgTG9hZGluZyBmaWxlOiAke2pzb25GaWxlUGF0aH1gKVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhqc29uRmlsZVBhdGgsIHsgZW5jb2Rpbmc6IFwidXRmOFwiIH0pXG4gICAgICAgIE9iamVjdC5hc3NpZ24ocGhvdG9CeVVpZCwgSlNPTi5wYXJzZShqc29uKSlcbiAgICAgIH0gZWxzZSBpZiAobG9nKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGBJZ25vcmluZyBtaXNzaW5nIGZpbGU6ICR7anNvbkZpbGVQYXRofWApXG4gICAgICB9XG4gICAgfVxuXG4gICAge1xuICAgICAgY29uc3QganNvbkZpbGVQYXRoOiBzdHJpbmcgPSBwYXRoLmpvaW4oXG4gICAgICAgIGRhdGFEaXIsXG4gICAgICAgIFwicGhvdG9zX3NlbmF0ZXVyc1wiLFxuICAgICAgICBcInNlbmF0ZXVycy5qc29uXCIsXG4gICAgICApXG4gICAgICBpZiAoZnMuZXhpc3RzU3luYyhqc29uRmlsZVBhdGgpKSB7XG4gICAgICAgIGlmIChsb2cpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhgTG9hZGluZyBmaWxlOiAke2pzb25GaWxlUGF0aH1gKVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhqc29uRmlsZVBhdGgsIHsgZW5jb2Rpbmc6IFwidXRmOFwiIH0pXG4gICAgICAgIE9iamVjdC5hc3NpZ24ocGhvdG9CeVVpZCwgSlNPTi5wYXJzZShqc29uKSlcbiAgICAgIH0gZWxzZSBpZiAobG9nKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGBJZ25vcmluZyBtaXNzaW5nIGZpbGU6ICR7anNvbkZpbGVQYXRofWApXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY29uc3Qgc2NydXRpbkJ5VWlkOiB7IFt1aWQ6IHN0cmluZ106IFNjcnV0aW4gfSA9IHt9XG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuU2NydXRpbnMpIHtcbiAgICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgZGF0YXNldHMuc2NydXRpbnMpIHtcbiAgICAgIGlmIChkYXRhc2V0Lmlnbm9yZUZvcldlYikge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgaWYgKFxuICAgICAgICBsZWdpc2xhdHVyZSAhPT0gTGVnaXNsYXR1cmUuQWxsICYmXG4gICAgICAgIGRhdGFzZXQubGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgICBsZWdpc2xhdHVyZSAhPT0gZGF0YXNldC5sZWdpc2xhdHVyZVxuICAgICAgKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBjb25zdCBqc29uRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihcbiAgICAgICAgZGF0YURpcixcbiAgICAgICAgZGF0YXNldC5maWxlbmFtZS5yZXBsYWNlKC9cXC5qc29uJC8sIFwiX25ldHRveWUuanNvblwiKSxcbiAgICAgIClcbiAgICAgIGlmIChsb2cpIHtcbiAgICAgICAgY29uc29sZS5sb2coYExvYWRpbmcgZmlsZTogJHtqc29uRmlsZVBhdGh9YClcbiAgICAgIH1cbiAgICAgIGNvbnN0IGpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhqc29uRmlsZVBhdGgsIHsgZW5jb2Rpbmc6IFwidXRmOFwiIH0pXG4gICAgICBjb25zdCBzY3J1dGlucyA9IFNjcnV0aW5zQ29udmVydC50b1NjcnV0aW5zKGpzb24pXG4gICAgICBmb3IgKGNvbnN0IHNjcnV0aW4gb2Ygc2NydXRpbnMuc2NydXRpbnMpIHtcbiAgICAgICAgaWYgKHNjcnV0aW5CeVVpZFtzY3J1dGluLnVpZF0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHNjcnV0aW5CeVVpZFtzY3J1dGluLnVpZF0gPSBzY3J1dGluXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGFjdGV1ckJ5VWlkLFxuICAgIGFtZW5kZW1lbnRCeVVpZCxcbiAgICBkb2N1bWVudEJ5VWlkLFxuICAgIGRvc3NpZXJQYXJsZW1lbnRhaXJlQnlTZW5hdENoZW1pbixcbiAgICBkb3NzaWVyUGFybGVtZW50YWlyZUJ5VGl0cmVDaGVtaW4sXG4gICAgZG9zc2llclBhcmxlbWVudGFpcmVCeVVpZCxcbiAgICBvcmdhbmVCeVVpZCxcbiAgICBwaG90b0J5VWlkLFxuICAgIHJldW5pb25CeVVpZCxcbiAgICByZXVuaW9uc0J5RGF5LFxuICAgIHJldW5pb25zQnlEb3NzaWVyVWlkLFxuICAgIHNjcnV0aW5CeVVpZCxcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcGF0aEZyb21Eb2N1bWVudFVpZChkb2N1bWVudHNEaXI6IHN0cmluZywgdWlkOiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCBtYXRjaCA9IGRvY3VtZW50VWlkUmVnZXguZXhlYyh1aWQpXG4gIGFzc2VydC5ub3RTdHJpY3RFcXVhbChcbiAgICBtYXRjaCxcbiAgICBudWxsLFxuICAgIGBVbmV4cGVjdGVkIHN0cnVjdHVyZSBmb3IgZG9jdW1lbnQgVUlEOiAke3VpZH1gLFxuICApXG4gIGNvbnN0IGRvY3VtZW50VHlwZSA9IHBhdGguam9pbihkb2N1bWVudHNEaXIsIG1hdGNoIVsxXSlcbiAgY29uc3QgY2hhbWJyZURpciA9IHBhdGguam9pbihkb2N1bWVudFR5cGUsIG1hdGNoIVsyXSlcbiAgY29uc3QgcmVwdWJsaXF1ZURpciA9IHBhdGguam9pbihjaGFtYnJlRGlyLCBtYXRjaCFbM10pXG4gIGNvbnN0IGxlZ2lzbGF0dXJlRGlyID0gcGF0aC5qb2luKHJlcHVibGlxdWVEaXIsIG1hdGNoIVs0XSlcbiAgY29uc3QgZXRhdERpciA9IHBhdGguam9pbihsZWdpc2xhdHVyZURpciwgbWF0Y2ghWzVdKVxuICBsZXQgbnVtZXJvID0gXCIwMDAwMDBcIiArIG1hdGNoIVs2XVxuICBudW1lcm8gPSBudW1lcm8uc3Vic3RyKG51bWVyby5sZW5ndGggLSA2KVxuICBjb25zdCBudW1lcm9NaWxsaWVyc0RpciA9IHBhdGguam9pbihldGF0RGlyLCBudW1lcm8uc3Vic3RyKDAsIDMpKVxuICBmcy5lbnN1cmVEaXJTeW5jKG51bWVyb01pbGxpZXJzRGlyKVxuICByZXR1cm4gcGF0aC5qb2luKG51bWVyb01pbGxpZXJzRGlyLCB1aWQpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXRoRnJvbURvc3NpZXJQYXJsZW1lbnRhaXJlVWlkKGRvc3NpZXJzRGlyOiBzdHJpbmcsIHVpZDogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3QgbWF0Y2ggPSBkb3NzaWVyVWlkUmVnZXguZXhlYyh1aWQpXG4gIGFzc2VydC5ub3RTdHJpY3RFcXVhbChcbiAgICBtYXRjaCxcbiAgICBudWxsLFxuICAgIGBVbmV4cGVjdGVkIHN0cnVjdHVyZSBmb3IgZG9zc2llciBwYXJsZW1lbnRhaXJlIFVJRDogJHt1aWR9YCxcbiAgKVxuICBjb25zdCByZXB1YmxpcXVlRGlyID0gcGF0aC5qb2luKGRvc3NpZXJzRGlyLCBtYXRjaCFbMV0pXG4gIGNvbnN0IGxlZ2lzbGF0dXJlRGlyID0gcGF0aC5qb2luKHJlcHVibGlxdWVEaXIsIG1hdGNoIVsyXSlcbiAgbGV0IG51bWVybyA9IFwiMDAwMDAwXCIgKyBtYXRjaCFbM11cbiAgbnVtZXJvID0gbnVtZXJvLnN1YnN0cihudW1lcm8ubGVuZ3RoIC0gNilcbiAgY29uc3QgbnVtZXJvTWlsbGllcnNEaXIgPSBwYXRoLmpvaW4obGVnaXNsYXR1cmVEaXIsIG51bWVyby5zdWJzdHIoMCwgMykpXG4gIGZzLmVuc3VyZURpclN5bmMobnVtZXJvTWlsbGllcnNEaXIpXG4gIHJldHVybiBwYXRoLmpvaW4obnVtZXJvTWlsbGllcnNEaXIsIHVpZClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhdGhGcm9tUmV1bmlvblVpZChyZXVuaW9uc0Rpcjogc3RyaW5nLCB1aWQ6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IG1hdGNoID0gcmV1bmlvblVpZFJlZ2V4LmV4ZWModWlkKVxuICBhc3NlcnQubm90U3RyaWN0RXF1YWwoXG4gICAgbWF0Y2gsXG4gICAgbnVsbCxcbiAgICBgVW5leHBlY3RlZCBzdHJ1Y3R1cmUgZm9yIHJldW5pb24gVUlEOiAke3VpZH1gLFxuICApXG4gIGNvbnN0IGNoYW1icmVEaXIgPSBwYXRoLmpvaW4ocmV1bmlvbnNEaXIsIG1hdGNoIVsxXSlcbiAgY29uc3QgcmVwdWJsaXF1ZURpciA9IHBhdGguam9pbihjaGFtYnJlRGlyLCBtYXRjaCFbMl0pXG4gIGNvbnN0IGxlZ2lzbGF0dXJlRGlyID0gcGF0aC5qb2luKHJlcHVibGlxdWVEaXIsIG1hdGNoIVszXSlcbiAgY29uc3Qgc2Vzc2lvbkRpciA9IHBhdGguam9pbihsZWdpc2xhdHVyZURpciwgbWF0Y2ghWzRdKVxuICBjb25zdCBpZERpciA9IHBhdGguam9pbihzZXNzaW9uRGlyLCBtYXRjaCFbNV0pXG4gIGxldCBudW1lcm8gPSBcIjAwMDAwMDAwMFwiICsgbWF0Y2ghWzZdXG4gIG51bWVybyA9IG51bWVyby5zdWJzdHIobnVtZXJvLmxlbmd0aCAtIDkpXG4gIGNvbnN0IG51bWVyb01pbGxpb25zRGlyID0gcGF0aC5qb2luKGlkRGlyLCBudW1lcm8uc3Vic3RyKDAsIDMpKVxuICBjb25zdCBudW1lcm9NaWxsaWVyc0RpciA9IHBhdGguam9pbihudW1lcm9NaWxsaW9uc0RpciwgbnVtZXJvLnN1YnN0cigzLCAzKSlcbiAgZnMuZW5zdXJlRGlyU3luYyhudW1lcm9NaWxsaWVyc0RpcilcbiAgcmV0dXJuIHBhdGguam9pbihudW1lcm9NaWxsaWVyc0RpciwgdWlkKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcGF0aEZyb21TY3J1dGluVWlkKHNjcnV0aW5zRGlyOiBzdHJpbmcsIHVpZDogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3QgbWF0Y2ggPSBzY3J1dGluVWlkUmVnZXguZXhlYyh1aWQpXG4gIGFzc2VydC5ub3RTdHJpY3RFcXVhbChcbiAgICBtYXRjaCxcbiAgICBudWxsLFxuICAgIGBVbmV4cGVjdGVkIHN0cnVjdHVyZSBmb3Igc2NydXRpbiBVSUQ6ICR7dWlkfWAsXG4gIClcbiAgY29uc3QgcmVwdWJsaXF1ZURpciA9IHBhdGguam9pbihzY3J1dGluc0RpciwgbWF0Y2ghWzFdKVxuICBjb25zdCBsZWdpc2xhdHVyZURpciA9IHBhdGguam9pbihyZXB1YmxpcXVlRGlyLCBtYXRjaCFbMl0pXG4gIGxldCBudW1lcm8gPSBcIjAwMDAwMFwiICsgbWF0Y2ghWzNdXG4gIG51bWVybyA9IG51bWVyby5zdWJzdHIobnVtZXJvLmxlbmd0aCAtIDYpXG4gIGNvbnN0IG51bWVyb01pbGxpZXJzRGlyID0gcGF0aC5qb2luKGxlZ2lzbGF0dXJlRGlyLCBudW1lcm8uc3Vic3RyKDAsIDMpKVxuICBmcy5lbnN1cmVEaXJTeW5jKG51bWVyb01pbGxpZXJzRGlyKVxuICByZXR1cm4gcGF0aC5qb2luKG51bWVyb01pbGxpZXJzRGlyLCB1aWQpXG59XG4iXX0=
678
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9sb2FkZXJzLnRzIl0sIm5hbWVzIjpbImFzc2VydCIsImZzIiwicGF0aCIsIkVuYWJsZWREYXRhc2V0cyIsImRhdGFzZXRzIiwid2Fsa0RpciIsIkNvbnZlcnQiLCJBY3RldXJzRXRPcmdhbmVzQ29udmVydCIsIkFnZW5kYXNDb252ZXJ0IiwiQW1lbmRlbWVudHNDb252ZXJ0IiwiRG9zc2llcnNMZWdpc2xhdGlmc0NvbnZlcnQiLCJMZWdpc2xhdHVyZSIsIlNjcnV0aW5zQ29udmVydCIsImRvY3VtZW50VWlkUmVnZXgiLCJkb3NzaWVyVWlkUmVnZXgiLCJyZXVuaW9uVWlkUmVnZXgiLCJzY3J1dGluVWlkUmVnZXgiLCJsb2FkQXNzZW1ibGVlRGF0YSIsImRhdGFEaXIiLCJlbmFibGVkRGF0YXNldHMiLCJsZWdpc2xhdHVyZSIsImxvZyIsImFjdGV1ckJ5VWlkIiwib3JnYW5lQnlVaWQiLCJBY3RldXJzRXRPcmdhbmVzIiwiZGF0YXNldCIsImFjdGV1cnNFdE9yZ2FuZXMiLCJpZ25vcmVGb3JXZWIiLCJBbGwiLCJkYXRhc2V0RGlyIiwiam9pbiIsImZpbGVuYW1lIiwicmVwbGFjZSIsImFjdGV1clNwbGl0UGF0aCIsImFjdGV1ckZpbGVuYW1lIiwibGVuZ3RoIiwiZW5kc1dpdGgiLCJhY3RldXJGaWxlUGF0aCIsImNvbnNvbGUiLCJhY3RldXJKc29uIiwicmVhZEZpbGVTeW5jIiwiZW5jb2RpbmciLCJhY3RldXIiLCJ0b0FjdGV1ciIsInVpZCIsInVuZGVmaW5lZCIsIm9yZ2FuZVNwbGl0UGF0aCIsIm9yZ2FuZUZpbGVuYW1lIiwib3JnYW5lRmlsZVBhdGgiLCJvcmdhbmVKc29uIiwib3JnYW5lIiwidG9PcmdhbmUiLCJyZXVuaW9uQnlVaWQiLCJyZXVuaW9uc0J5RGF5IiwicmV1bmlvbnNCeURvc3NpZXJVaWQiLCJBZ2VuZGFzIiwiYWdlbmRhcyIsInJldW5pb25TcGxpdFBhdGgiLCJyZXVuaW9uRmlsZW5hbWUiLCJyZXVuaW9uRmlsZVBhdGgiLCJyZXVuaW9uSnNvbiIsInJldW5pb24iLCJ0b1JldW5pb24iLCJkYXkiLCJ0aW1lc3RhbXBEZWJ1dCIsInRvSVNPU3RyaW5nIiwic3BsaXQiLCJyZXVuaW9uc0F0RGF5IiwicHVzaCIsIm9kaiIsInBvaW50T2RqIiwicG9pbnRzT2RqIiwiZG9zc2llckxlZ2lzbGF0aWZSZWYiLCJkb3NzaWVyc0xlZ2lzbGF0aWZzUmVmcyIsInJldW5pb25zQXREb3NzaWVyVWlkIiwiYW1lbmRlbWVudEJ5VWlkIiwiQW1lbmRlbWVudHMiLCJhbWVuZGVtZW50cyIsImFtZW5kZW1lbnRTcGxpdFBhdGgiLCJhbWVuZGVtZW50RmlsZW5hbWUiLCJhbWVuZGVtZW50RmlsZVBhdGgiLCJhbWVuZGVtZW50SnNvbiIsImFtZW5kZW1lbnQiLCJ0b0FtZW5kZW1lbnQiLCJkb2N1bWVudEJ5VWlkIiwiZG9zc2llclBhcmxlbWVudGFpcmVCeVNlbmF0Q2hlbWluIiwiZG9zc2llclBhcmxlbWVudGFpcmVCeVRpdHJlQ2hlbWluIiwiZG9zc2llclBhcmxlbWVudGFpcmVCeVVpZCIsIkRvc3NpZXJzTGVnaXNsYXRpZnMiLCJkb3NzaWVyc0xlZ2lzbGF0aWZzIiwiZG9jdW1lbnRTcGxpdFBhdGgiLCJkb2N1bWVudEZpbGVuYW1lIiwiZG9jdW1lbnRGaWxlUGF0aCIsImRvY3VtZW50SnNvbiIsImRvY3VtZW50IiwidG9Eb2N1bWVudCIsImRvc3NpZXJTcGxpdFBhdGgiLCJkb3NzaWVyRmlsZW5hbWUiLCJkb3NzaWVyRmlsZVBhdGgiLCJkb3NzaWVySnNvbiIsImRvc3NpZXIiLCJ0b0Rvc3NpZXJQYXJsZW1lbnRhaXJlIiwidGl0cmVEb3NzaWVyIiwic2VuYXRDaGVtaW4iLCJ0aXRyZUNoZW1pbiIsInBob3RvQnlVaWQiLCJQaG90b3MiLCJqc29uRmlsZVBhdGgiLCJRdWluemUiLCJleGlzdHNTeW5jIiwianNvbiIsIk9iamVjdCIsImFzc2lnbiIsIkpTT04iLCJwYXJzZSIsInNjcnV0aW5CeVVpZCIsIlNjcnV0aW5zIiwic2NydXRpbnMiLCJzY3J1dGluU3BsaXRQYXRoIiwic2NydXRpbkZpbGVuYW1lIiwic2NydXRpbkZpbGVQYXRoIiwic2NydXRpbkpzb24iLCJzY3J1dGluIiwidG9TY3J1dGluIiwibG9hZEFzc2VtYmxlZURhdGFGcm9tQmlnRmlsZXMiLCJ0b0FjdGV1cnNFdE9yZ2FuZXMiLCJhY3RldXJzIiwib3JnYW5lcyIsInRvQWdlbmRhcyIsInJldW5pb25zIiwidG9BbWVuZGVtZW50cyIsInRleHRlTGVnaXNsYXRpZiIsInRleHRlc0xlZ2lzbGF0aWZzIiwidG9Eb3NzaWVyc0xlZ2lzbGF0aWZzIiwiZG9zc2llcnNQYXJsZW1lbnRhaXJlcyIsInRvU2NydXRpbnMiLCJwYXRoRnJvbURvY3VtZW50VWlkIiwiZG9jdW1lbnRzRGlyIiwibWF0Y2giLCJleGVjIiwibm90U3RyaWN0RXF1YWwiLCJkb2N1bWVudFR5cGUiLCJjaGFtYnJlRGlyIiwicmVwdWJsaXF1ZURpciIsImxlZ2lzbGF0dXJlRGlyIiwiZXRhdERpciIsIm51bWVybyIsInN1YnN0ciIsIm51bWVyb01pbGxpZXJzRGlyIiwiZW5zdXJlRGlyU3luYyIsInBhdGhGcm9tRG9zc2llclBhcmxlbWVudGFpcmVVaWQiLCJkb3NzaWVyc0RpciIsInBhdGhGcm9tUmV1bmlvblVpZCIsInJldW5pb25zRGlyIiwic2Vzc2lvbkRpciIsImlkRGlyIiwibnVtZXJvTWlsbGlvbnNEaXIiLCJwYXRoRnJvbVNjcnV0aW5VaWQiLCJzY3J1dGluc0RpciJdLCJtYXBwaW5ncyI6IkFBQUE7QUFFQSxPQUFPQSxNQUFQLE1BQW1CLFFBQW5CO0FBQ0EsT0FBT0MsRUFBUCxNQUFlLFVBQWY7QUFDQSxPQUFPQyxJQUFQLE1BQWlCLE1BQWpCO1NBRVNDLGU7U0FDQUMsUSxFQUFVRCxlO1NBQ1ZFLE87U0FDQUEsTztTQUdQQyxPQUFPLElBQUlDLHVCO1NBSUpELE9BQU8sSUFBSUUsYztTQUNDRixPQUFPLElBQUlHLGtCO1NBRTlCSCxPQUFPLElBQUlJLDBCO1NBSUpDLFc7U0FDQUwsT0FBTyxJQUFJ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QUF5QkwsS0FBSyxDQUFFLENBQUYsQ0FBOUIsQ0FBdkI7QUFDQSxNQUFJUSxNQUFNLEdBQUcsV0FBV1IsS0FBSyxDQUFFLENBQUYsQ0FBN0I7QUFDQVEsRUFBQUEsTUFBTSxHQUFHQSxNQUFNLENBQUNDLE1BQVAsQ0FBY0QsTUFBTSxDQUFDL0csTUFBUCxHQUFnQixDQUE5QixDQUFUO0FBQ0EsUUFBTWlILGlCQUFpQixHQUFHbEosSUFBSSxDQUFDNEIsSUFBTCxDQUFVa0gsY0FBVixFQUEwQkUsTUFBTSxDQUFDQyxNQUFQLENBQWMsQ0FBZCxFQUFpQixDQUFqQixDQUExQixDQUExQjtBQUNBbEosRUFBQUEsRUFBRSxDQUFDb0osYUFBSCxDQUFpQkQsaUJBQWpCO0FBQ0EsU0FBT2xKLElBQUksQ0FBQzRCLElBQUwsQ0FBVXNILGlCQUFWLEVBQTZCeEcsR0FBN0IsQ0FBUDtBQUNEIiwic291cmNlc0NvbnRlbnQiOlsiLy8vIExvYWQgZGF0YSBmcm9tIGZpbGVzXG5cbmltcG9ydCBhc3NlcnQgZnJvbSBcImFzc2VydFwiXG5pbXBvcnQgZnMgZnJvbSBcImZzLWV4dHJhXCJcbmltcG9ydCBwYXRoIGZyb20gXCJwYXRoXCJcblxuZXhwb3J0IHsgRW5hYmxlZERhdGFzZXRzIH0gZnJvbSBcIi4vZGF0YXNldHNcIlxuaW1wb3J0IHsgZGF0YXNldHMsIEVuYWJsZWREYXRhc2V0cyB9IGZyb20gXCIuL2RhdGFzZXRzXCJcbmV4cG9ydCB7IHdhbGtEaXIgfSBmcm9tIFwiLi9maWxlX3N5c3RlbXNcIlxuaW1wb3J0IHsgd2Fsa0RpciB9IGZyb20gXCIuL2ZpbGVfc3lzdGVtc1wiXG5pbXBvcnQge1xuICBBY3RldXIsXG4gIENvbnZlcnQgYXMgQWN0ZXVyc0V0T3JnYW5lc0NvbnZlcnQsXG4gIE9yZ2FuZSxcbiAgUGhvdG8sXG59IGZyb20gXCIuL3R5cGVzL2FjdGV1cnNfZXRfb3JnYW5lc1wiXG5pbXBvcnQgeyBDb252ZXJ0IGFzIEFnZW5kYXNDb252ZXJ0LCBSZXVuaW9uIH0gZnJvbSBcIi4vdHlwZXMvYWdlbmRhc1wiXG5pbXBvcnQgeyBBbWVuZGVtZW50LCBDb252ZXJ0IGFzIEFtZW5kZW1lbnRzQ29udmVydCB9IGZyb20gXCIuL3R5cGVzL2FtZW5kZW1lbnRzXCJcbmltcG9ydCB7XG4gIENvbnZlcnQgYXMgRG9zc2llcnNMZWdpc2xhdGlmc0NvbnZlcnQsXG4gIERvY3VtZW50LFxuICBEb3NzaWVyUGFybGVtZW50YWlyZSxcbn0gZnJvbSBcIi4vdHlwZXMvZG9zc2llcnNfbGVnaXNsYXRpZnNcIlxuaW1wb3J0IHsgTGVnaXNsYXR1cmUgfSBmcm9tIFwiLi90eXBlcy9sZWdpc2xhdHVyZXNcIlxuaW1wb3J0IHsgQ29udmVydCBhcyBTY3J1dGluc0NvbnZlcnQsIFNjcnV0aW4gfSBmcm9tIFwiLi90eXBlcy9zY3J1dGluc1wiXG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YSB7XG4gIHJlYWRvbmx5IGFjdGV1ckJ5VWlkOiB7IFt1aWQ6IHN0cmluZ106IEFjdGV1ciB9XG4gIHJlYWRvbmx5IGFtZW5kZW1lbnRCeVVpZDogeyBbdWlkOiBzdHJpbmddOiBBbWVuZGVtZW50IH1cbiAgcmVhZG9ubHkgZG9jdW1lbnRCeVVpZDogeyBbdWlkOiBzdHJpbmddOiBEb2N1bWVudCB9XG4gIHJlYWRvbmx5IGRvc3NpZXJQYXJsZW1lbnRhaXJlQnlTZW5hdENoZW1pbjoge1xuICAgIFt1aWQ6IHN0cmluZ106IERvc3NpZXJQYXJsZW1lbnRhaXJlXG4gIH1cbiAgcmVhZG9ubHkgZG9zc2llclBhcmxlbWVudGFpcmVCeVRpdHJlQ2hlbWluOiB7XG4gICAgW3VpZDogc3RyaW5nXTogRG9zc2llclBhcmxlbWVudGFpcmVcbiAgfVxuICByZWFkb25seSBkb3NzaWVyUGFybGVtZW50YWlyZUJ5VWlkOiB7IFt1aWQ6IHN0cmluZ106IERvc3NpZXJQYXJsZW1lbnRhaXJlIH1cbiAgcmVhZG9ubHkgb3JnYW5lQnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogT3JnYW5lIH1cbiAgcmVhZG9ubHkgcGhvdG9CeVVpZDogeyBbdWlkOiBzdHJpbmddOiBQaG90byB9XG4gIHJlYWRvbmx5IHJldW5pb25CeVVpZDogeyBbdWlkOiBzdHJpbmddOiBSZXVuaW9uIH1cbiAgcmVhZG9ubHkgcmV1bmlvbnNCeURheTogeyBbZGF5OiBzdHJpbmddOiBSZXVuaW9uW10gfVxuICByZWFkb25seSByZXVuaW9uc0J5RG9zc2llclVpZDogeyBbZG9zc2llclVpZDogc3RyaW5nXTogUmV1bmlvbltdIH1cbiAgcmVhZG9ubHkgc2NydXRpbkJ5VWlkOiB7IFt1aWQ6IHN0cmluZ106IFNjcnV0aW4gfVxufVxuXG5jb25zdCBkb2N1bWVudFVpZFJlZ2V4ID1cbiAgL14oQUNJTnxBVkNFfEFWSVN8REVDTHxFVERJfExFVFR8UElPTnxQTlJFfFBSSkx8UkFQUHxSSU5GKShBTnxTTikoUlxcZCspW0xTXShcXGQrKShCfEJUQXxCVEMpKFxcZCspKC0uKik/JC9cbmNvbnN0IGRvc3NpZXJVaWRSZWdleCA9IC9eREwoUlxcZCspKExcXGQrKU4oXFxkKykkL1xuY29uc3QgcmV1bmlvblVpZFJlZ2V4ID1cbiAgL15SVShBTnxDR3xTTikoUlxcZCspKExcXGQrKShbQVNdXFxkezR9KShJREN8SURGTD98SURTKShcXGQrKSQvXG5jb25zdCBzY3J1dGluVWlkUmVnZXggPSAvXlZUQU4oUlxcZCspKExcXGQrKVYoXFxkKykkL1xuXG4vKiogTG9hZCBkYXRhIGZyb20gc3BsaXQgZmlsZXMuICovXG5leHBvcnQgZnVuY3Rpb24gbG9hZEFzc2VtYmxlZURhdGEoXG4gIGRhdGFEaXI6IHN0cmluZyxcbiAgZW5hYmxlZERhdGFzZXRzOiBFbmFibGVkRGF0YXNldHMsXG4gIGxlZ2lzbGF0dXJlOiBMZWdpc2xhdHVyZSxcbiAgeyBsb2cgPSBmYWxzZSB9ID0ge30sXG4pOiBEYXRhIHtcbiAgY29uc3QgYWN0ZXVyQnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogQWN0ZXVyIH0gPSB7fVxuICBjb25zdCBvcmdhbmVCeVVpZDogeyBbdWlkOiBzdHJpbmddOiBPcmdhbmUgfSA9IHt9XG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuQWN0ZXVyc0V0T3JnYW5lcykge1xuICAgIGZvciAoY29uc3QgZGF0YXNldCBvZiBkYXRhc2V0cy5hY3RldXJzRXRPcmdhbmVzKSB7XG4gICAgICBpZiAoZGF0YXNldC5pZ25vcmVGb3JXZWIpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgbGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgICBkYXRhc2V0LmxlZ2lzbGF0dXJlICE9PSBMZWdpc2xhdHVyZS5BbGwgJiZcbiAgICAgICAgbGVnaXNsYXR1cmUgIT09IGRhdGFzZXQubGVnaXNsYXR1cmVcbiAgICAgICkge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgY29uc3QgZGF0YXNldERpciA9IHBhdGguam9pbihcbiAgICAgICAgZGF0YURpcixcbiAgICAgICAgZGF0YXNldC5maWxlbmFtZS5yZXBsYWNlKC9cXC5qc29uJC8sIFwiX25ldHRveWVcIiksXG4gICAgICApXG5cbiAgICAgIGZvciAoY29uc3QgYWN0ZXVyU3BsaXRQYXRoIG9mIHdhbGtEaXIoZGF0YXNldERpciwgW1wiYWN0ZXVyc1wiXSkpIHtcbiAgICAgICAgY29uc3QgYWN0ZXVyRmlsZW5hbWUgPSBhY3RldXJTcGxpdFBhdGhbYWN0ZXVyU3BsaXRQYXRoLmxlbmd0aCAtIDFdXG4gICAgICAgIGlmICghYWN0ZXVyRmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYWN0ZXVyRmlsZVBhdGggPSBwYXRoLmpvaW4oZGF0YXNldERpciwgLi4uYWN0ZXVyU3BsaXRQYXRoKVxuICAgICAgICBpZiAobG9nKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coYExvYWRpbmcgZmlsZTogJHthY3RldXJGaWxlUGF0aH3igKZgKVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGFjdGV1ckpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhhY3RldXJGaWxlUGF0aCwge1xuICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgfSlcbiAgICAgICAgY29uc3QgYWN0ZXVyID0gQWN0ZXVyc0V0T3JnYW5lc0NvbnZlcnQudG9BY3RldXIoYWN0ZXVySnNvbilcbiAgICAgICAgLy8gS2VlcCB0aGUgZmlyc3QgZXhpc3RpbmcgXCJhY3RldXJcIiwgYmVjYXVzZSB0aGUgZmlyc3Qgd3JhcHBlciBpcyB0aGUgbW9zdCBjb21wbGV0ZS5cbiAgICAgICAgaWYgKGFjdGV1ckJ5VWlkW2FjdGV1ci51aWRdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBhY3RldXJCeVVpZFthY3RldXIudWlkXSA9IGFjdGV1clxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGZvciAoY29uc3Qgb3JnYW5lU3BsaXRQYXRoIG9mIHdhbGtEaXIoZGF0YXNldERpciwgW1wib3JnYW5lc1wiXSkpIHtcbiAgICAgICAgY29uc3Qgb3JnYW5lRmlsZW5hbWUgPSBvcmdhbmVTcGxpdFBhdGhbb3JnYW5lU3BsaXRQYXRoLmxlbmd0aCAtIDFdXG4gICAgICAgIGlmICghb3JnYW5lRmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgb3JnYW5lRmlsZVBhdGggPSBwYXRoLmpvaW4oZGF0YXNldERpciwgLi4ub3JnYW5lU3BsaXRQYXRoKVxuICAgICAgICBpZiAobG9nKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coYExvYWRpbmcgZmlsZTogJHtvcmdhbmVGaWxlUGF0aH3igKZgKVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG9yZ2FuZUpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhvcmdhbmVGaWxlUGF0aCwge1xuICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgfSlcbiAgICAgICAgY29uc3Qgb3JnYW5lID0gQWN0ZXVyc0V0T3JnYW5lc0NvbnZlcnQudG9PcmdhbmUob3JnYW5lSnNvbilcbiAgICAgICAgLy8gS2VlcCB0aGUgZmlyc3QgZXhpc3RpbmcgXCJvcmdhbmVcIiwgYmVjYXVzZSB0aGUgZmlyc3Qgd3JhcHBlciBpcyB0aGUgbW9zdCBjb21wbGV0ZS5cbiAgICAgICAgaWYgKG9yZ2FuZUJ5VWlkW29yZ2FuZS51aWRdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBvcmdhbmVCeVVpZFtvcmdhbmUudWlkXSA9IG9yZ2FuZVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY29uc3QgcmV1bmlvbkJ5VWlkOiB7IFt1aWQ6IHN0cmluZ106IFJldW5pb24gfSA9IHt9XG4gIGNvbnN0IHJldW5pb25zQnlEYXk6IHsgW2RheTogc3RyaW5nXTogUmV1bmlvbltdIH0gPSB7fVxuICBjb25zdCByZXVuaW9uc0J5RG9zc2llclVpZDogeyBbZG9zc2llclVpZDogc3RyaW5nXTogUmV1bmlvbltdIH0gPSB7fVxuICBpZiAoZW5hYmxlZERhdGFzZXRzICYgRW5hYmxlZERhdGFzZXRzLkFnZW5kYXMpIHtcbiAgICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgZGF0YXNldHMuYWdlbmRhcykge1xuICAgICAgaWYgKGRhdGFzZXQuaWdub3JlRm9yV2ViKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBpZiAoXG4gICAgICAgIGxlZ2lzbGF0dXJlICE9PSBMZWdpc2xhdHVyZS5BbGwgJiZcbiAgICAgICAgZGF0YXNldC5sZWdpc2xhdHVyZSAhPT0gTGVnaXNsYXR1cmUuQWxsICYmXG4gICAgICAgIGxlZ2lzbGF0dXJlICE9PSBkYXRhc2V0LmxlZ2lzbGF0dXJlXG4gICAgICApIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGNvbnN0IGRhdGFzZXREaXIgPSBwYXRoLmpvaW4oXG4gICAgICAgIGRhdGFEaXIsXG4gICAgICAgIGRhdGFzZXQuZmlsZW5hbWUucmVwbGFjZSgvXFwuanNvbiQvLCBcIl9uZXR0b3llXCIpLFxuICAgICAgKVxuICAgICAgZm9yIChjb25zdCByZXVuaW9uU3BsaXRQYXRoIG9mIHdhbGtEaXIoZGF0YXNldERpcikpIHtcbiAgICAgICAgY29uc3QgcmV1bmlvbkZpbGVuYW1lID0gcmV1bmlvblNwbGl0UGF0aFtyZXVuaW9uU3BsaXRQYXRoLmxlbmd0aCAtIDFdXG4gICAgICAgIGlmICghcmV1bmlvbkZpbGVuYW1lLmVuZHNXaXRoKFwiLmpzb25cIikpIHtcbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHJldW5pb25GaWxlUGF0aCA9IHBhdGguam9pbihkYXRhc2V0RGlyLCAuLi5yZXVuaW9uU3BsaXRQYXRoKVxuICAgICAgICBpZiAobG9nKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coYExvYWRpbmcgZmlsZTogJHtyZXVuaW9uRmlsZVBhdGh94oCmYClcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByZXVuaW9uSnNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKHJldW5pb25GaWxlUGF0aCwge1xuICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgfSlcbiAgICAgICAgY29uc3QgcmV1bmlvbiA9IEFnZW5kYXNDb252ZXJ0LnRvUmV1bmlvbihyZXVuaW9uSnNvbilcbiAgICAgICAgaWYgKHJldW5pb25CeVVpZFtyZXVuaW9uLnVpZF0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHJldW5pb25CeVVpZFtyZXVuaW9uLnVpZF0gPSByZXVuaW9uXG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBkYXkgPSByZXVuaW9uLnRpbWVzdGFtcERlYnV0LnRvSVNPU3RyaW5nKCkuc3BsaXQoXCJUXCIpWzBdXG4gICAgICAgIGxldCByZXVuaW9uc0F0RGF5ID0gcmV1bmlvbnNCeURheVtkYXldXG4gICAgICAgIGlmIChyZXVuaW9uc0F0RGF5ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICByZXVuaW9uc0F0RGF5ID0gcmV1bmlvbnNCeURheVtkYXldID0gW11cbiAgICAgICAgfVxuICAgICAgICByZXVuaW9uc0F0RGF5LnB1c2gocmV1bmlvbilcblxuICAgICAgICBjb25zdCBvZGogPSByZXVuaW9uLm9kalxuICAgICAgICBpZiAob2RqICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBmb3IgKGNvbnN0IHBvaW50T2RqIG9mIG9kai5wb2ludHNPZGogfHwgW10pIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgZG9zc2llckxlZ2lzbGF0aWZSZWYgb2YgcG9pbnRPZGouZG9zc2llcnNMZWdpc2xhdGlmc1JlZnMgfHxcbiAgICAgICAgICAgICAgW10pIHtcbiAgICAgICAgICAgICAgbGV0IHJldW5pb25zQXREb3NzaWVyVWlkID1cbiAgICAgICAgICAgICAgICByZXVuaW9uc0J5RG9zc2llclVpZFtkb3NzaWVyTGVnaXNsYXRpZlJlZl1cbiAgICAgICAgICAgICAgaWYgKHJldW5pb25zQXREb3NzaWVyVWlkID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICByZXVuaW9uc0F0RG9zc2llclVpZCA9IHJldW5pb25zQnlEb3NzaWVyVWlkW1xuICAgICAgICAgICAgICAgICAgZG9zc2llckxlZ2lzbGF0aWZSZWZcbiAgICAgICAgICAgICAgICBdID0gW11cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICByZXVuaW9uc0F0RG9zc2llclVpZC5wdXNoKHJldW5pb24pXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY29uc3QgYW1lbmRlbWVudEJ5VWlkOiB7IFt1aWQ6IHN0cmluZ106IEFtZW5kZW1lbnQgfSA9IHt9XG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuQW1lbmRlbWVudHMpIHtcbiAgICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgZGF0YXNldHMuYW1lbmRlbWVudHMpIHtcbiAgICAgIGlmIChkYXRhc2V0Lmlnbm9yZUZvcldlYikge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgaWYgKFxuICAgICAgICBsZWdpc2xhdHVyZSAhPT0gTGVnaXNsYXR1cmUuQWxsICYmXG4gICAgICAgIGRhdGFzZXQubGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgICBsZWdpc2xhdHVyZSAhPT0gZGF0YXNldC5sZWdpc2xhdHVyZVxuICAgICAgKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBjb25zdCBkYXRhc2V0RGlyID0gcGF0aC5qb2luKFxuICAgICAgICBkYXRhRGlyLFxuICAgICAgICBkYXRhc2V0LmZpbGVuYW1lLnJlcGxhY2UoL1xcLmpzb24kLywgXCJfbmV0dG95ZVwiKSxcbiAgICAgIClcblxuICAgICAgZm9yIChjb25zdCBhbWVuZGVtZW50U3BsaXRQYXRoIG9mIHdhbGtEaXIoZGF0YXNldERpcikpIHtcbiAgICAgICAgY29uc3QgYW1lbmRlbWVudEZpbGVuYW1lID1cbiAgICAgICAgICBhbWVuZGVtZW50U3BsaXRQYXRoW2FtZW5kZW1lbnRTcGxpdFBhdGgubGVuZ3RoIC0gMV1cbiAgICAgICAgaWYgKCFhbWVuZGVtZW50RmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYW1lbmRlbWVudEZpbGVQYXRoID0gcGF0aC5qb2luKGRhdGFzZXREaXIsIC4uLmFtZW5kZW1lbnRTcGxpdFBhdGgpXG4gICAgICAgIGlmIChsb2cpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhgTG9hZGluZyBmaWxlOiAke2FtZW5kZW1lbnRGaWxlUGF0aH3igKZgKVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGFtZW5kZW1lbnRKc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoYW1lbmRlbWVudEZpbGVQYXRoLCB7XG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICB9KVxuICAgICAgICBjb25zdCBhbWVuZGVtZW50ID0gQW1lbmRlbWVudHNDb252ZXJ0LnRvQW1lbmRlbWVudChhbWVuZGVtZW50SnNvbilcbiAgICAgICAgaWYgKGFtZW5kZW1lbnRCeVVpZFthbWVuZGVtZW50LnVpZF0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGFtZW5kZW1lbnRCeVVpZFthbWVuZGVtZW50LnVpZF0gPSBhbWVuZGVtZW50XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjb25zdCBkb2N1bWVudEJ5VWlkOiB7IFt1aWQ6IHN0cmluZ106IERvY3VtZW50IH0gPSB7fVxuICBjb25zdCBkb3NzaWVyUGFybGVtZW50YWlyZUJ5U2VuYXRDaGVtaW46IHtcbiAgICBbdWlkOiBzdHJpbmddOiBEb3NzaWVyUGFybGVtZW50YWlyZVxuICB9ID0ge31cbiAgY29uc3QgZG9zc2llclBhcmxlbWVudGFpcmVCeVRpdHJlQ2hlbWluOiB7XG4gICAgW3VpZDogc3RyaW5nXTogRG9zc2llclBhcmxlbWVudGFpcmVcbiAgfSA9IHt9XG4gIGNvbnN0IGRvc3NpZXJQYXJsZW1lbnRhaXJlQnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogRG9zc2llclBhcmxlbWVudGFpcmUgfSA9IHt9XG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuRG9zc2llcnNMZWdpc2xhdGlmcykge1xuICAgIGZvciAoY29uc3QgZGF0YXNldCBvZiBkYXRhc2V0cy5kb3NzaWVyc0xlZ2lzbGF0aWZzKSB7XG4gICAgICBpZiAoZGF0YXNldC5pZ25vcmVGb3JXZWIpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgbGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgICBkYXRhc2V0LmxlZ2lzbGF0dXJlICE9PSBMZWdpc2xhdHVyZS5BbGwgJiZcbiAgICAgICAgbGVnaXNsYXR1cmUgIT09IGRhdGFzZXQubGVnaXNsYXR1cmVcbiAgICAgICkge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgY29uc3QgZGF0YXNldERpciA9IHBhdGguam9pbihcbiAgICAgICAgZGF0YURpcixcbiAgICAgICAgZGF0YXNldC5maWxlbmFtZS5yZXBsYWNlKC9cXC5qc29uJC8sIFwiX25ldHRveWVcIiksXG4gICAgICApXG5cbiAgICAgIGZvciAoY29uc3QgZG9jdW1lbnRTcGxpdFBhdGggb2Ygd2Fsa0RpcihkYXRhc2V0RGlyLCBbXCJkb2N1bWVudHNcIl0pKSB7XG4gICAgICAgIGNvbnN0IGRvY3VtZW50RmlsZW5hbWUgPSBkb2N1bWVudFNwbGl0UGF0aFtkb2N1bWVudFNwbGl0UGF0aC5sZW5ndGggLSAxXVxuICAgICAgICBpZiAoIWRvY3VtZW50RmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZG9jdW1lbnRGaWxlUGF0aCA9IHBhdGguam9pbihkYXRhc2V0RGlyLCAuLi5kb2N1bWVudFNwbGl0UGF0aClcbiAgICAgICAgaWYgKGxvZykge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGBMb2FkaW5nIGZpbGU6ICR7ZG9jdW1lbnRGaWxlUGF0aH3igKZgKVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGRvY3VtZW50SnNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKGRvY3VtZW50RmlsZVBhdGgsIHtcbiAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgIH0pXG4gICAgICAgIGNvbnN0IGRvY3VtZW50ID0gRG9zc2llcnNMZWdpc2xhdGlmc0NvbnZlcnQudG9Eb2N1bWVudChkb2N1bWVudEpzb24pXG4gICAgICAgIGlmIChkb2N1bWVudEJ5VWlkW2RvY3VtZW50LnVpZF0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGRvY3VtZW50QnlVaWRbZG9jdW1lbnQudWlkXSA9IGRvY3VtZW50XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgZm9yIChjb25zdCBkb3NzaWVyU3BsaXRQYXRoIG9mIHdhbGtEaXIoZGF0YXNldERpciwgW1wiZG9zc2llcnNcIl0pKSB7XG4gICAgICAgIGNvbnN0IGRvc3NpZXJGaWxlbmFtZSA9IGRvc3NpZXJTcGxpdFBhdGhbZG9zc2llclNwbGl0UGF0aC5sZW5ndGggLSAxXVxuICAgICAgICBpZiAoIWRvc3NpZXJGaWxlbmFtZS5lbmRzV2l0aChcIi5qc29uXCIpKSB7XG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBkb3NzaWVyRmlsZVBhdGggPSBwYXRoLmpvaW4oZGF0YXNldERpciwgLi4uZG9zc2llclNwbGl0UGF0aClcbiAgICAgICAgaWYgKGxvZykge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGBMb2FkaW5nIGZpbGU6ICR7ZG9zc2llckZpbGVQYXRofeKApmApXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZG9zc2llckpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhkb3NzaWVyRmlsZVBhdGgsIHtcbiAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgIH0pXG4gICAgICAgIGNvbnN0IGRvc3NpZXIgPVxuICAgICAgICAgIERvc3NpZXJzTGVnaXNsYXRpZnNDb252ZXJ0LnRvRG9zc2llclBhcmxlbWVudGFpcmUoZG9zc2llckpzb24pXG4gICAgICAgIGNvbnN0IHRpdHJlRG9zc2llciA9IGRvc3NpZXIudGl0cmVEb3NzaWVyXG4gICAgICAgIGlmIChcbiAgICAgICAgICB0aXRyZURvc3NpZXIuc2VuYXRDaGVtaW4gJiZcbiAgICAgICAgICBkb3NzaWVyUGFybGVtZW50YWlyZUJ5U2VuYXRDaGVtaW5bdGl0cmVEb3NzaWVyLnNlbmF0Q2hlbWluXSA9PT1cbiAgICAgICAgICAgIHVuZGVmaW5lZFxuICAgICAgICApIHtcbiAgICAgICAgICBkb3NzaWVyUGFybGVtZW50YWlyZUJ5U2VuYXRDaGVtaW5bdGl0cmVEb3NzaWVyLnNlbmF0Q2hlbWluXSA9IGRvc3NpZXJcbiAgICAgICAgfVxuICAgICAgICBpZiAoXG4gICAgICAgICAgdGl0cmVEb3NzaWVyLnRpdHJlQ2hlbWluICYmXG4gICAgICAgICAgZG9zc2llclBhcmxlbWVudGFpcmVCeVRpdHJlQ2hlbWluW3RpdHJlRG9zc2llci50aXRyZUNoZW1pbl0gPT09XG4gICAgICAgICAgICB1bmRlZmluZWRcbiAgICAgICAgKSB7XG4gICAgICAgICAgZG9zc2llclBhcmxlbWVudGFpcmVCeVRpdHJlQ2hlbWluW3RpdHJlRG9zc2llci50aXRyZUNoZW1pbl0gPSBkb3NzaWVyXG4gICAgICAgIH1cbiAgICAgICAgaWYgKGRvc3NpZXJQYXJsZW1lbnRhaXJlQnlVaWRbZG9zc2llci51aWRdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBkb3NzaWVyUGFybGVtZW50YWlyZUJ5VWlkW2Rvc3NpZXIudWlkXSA9IGRvc3NpZXJcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGxldCBwaG90b0J5VWlkOiB7IFt1aWQ6IHN0cmluZ106IFBob3RvIH0gPSB7fVxuICBpZiAoZW5hYmxlZERhdGFzZXRzICYgRW5hYmxlZERhdGFzZXRzLlBob3Rvcykge1xuICAgIHtcbiAgICAgIGNvbnN0IGpzb25GaWxlUGF0aDogc3RyaW5nID0gcGF0aC5qb2luKFxuICAgICAgICBkYXRhRGlyLFxuICAgICAgICBgcGhvdG9zX2RlcHV0ZXNfJHtcbiAgICAgICAgICAvLyBUT0RPOiBIYW5kbGUgTGVnaXNsYXR1cmUuQWxsLlxuICAgICAgICAgIGxlZ2lzbGF0dXJlID09PSBMZWdpc2xhdHVyZS5BbGwgPyBMZWdpc2xhdHVyZS5RdWluemUgOiBsZWdpc2xhdHVyZVxuICAgICAgICB9YCxcbiAgICAgICAgXCJkZXB1dGVzLmpzb25cIixcbiAgICAgIClcbiAgICAgIGlmIChmcy5leGlzdHNTeW5jKGpzb25GaWxlUGF0aCkpIHtcbiAgICAgICAgaWYgKGxvZykge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGBMb2FkaW5nIGZpbGU6ICR7anNvbkZpbGVQYXRofWApXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QganNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKGpzb25GaWxlUGF0aCwgeyBlbmNvZGluZzogXCJ1dGY4XCIgfSlcbiAgICAgICAgT2JqZWN0LmFzc2lnbihwaG90b0J5VWlkLCBKU09OLnBhcnNlKGpzb24pKVxuICAgICAgfSBlbHNlIGlmIChsb2cpIHtcbiAgICAgICAgY29uc29sZS5sb2coYElnbm9yaW5nIG1pc3NpbmcgZmlsZTogJHtqc29uRmlsZVBhdGh9YClcbiAgICAgIH1cbiAgICB9XG5cbiAgICB7XG4gICAgICBjb25zdCBqc29uRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihcbiAgICAgICAgZGF0YURpcixcbiAgICAgICAgXCJwaG90b3Nfc2VuYXRldXJzXCIsXG4gICAgICAgIFwic2VuYXRldXJzLmpzb25cIixcbiAgICAgIClcbiAgICAgIGlmIChmcy5leGlzdHNTeW5jKGpzb25GaWxlUGF0aCkpIHtcbiAgICAgICAgaWYgKGxvZykge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGBMb2FkaW5nIGZpbGU6ICR7anNvbkZpbGVQYXRofWApXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QganNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKGpzb25GaWxlUGF0aCwgeyBlbmNvZGluZzogXCJ1dGY4XCIgfSlcbiAgICAgICAgT2JqZWN0LmFzc2lnbihwaG90b0J5VWlkLCBKU09OLnBhcnNlKGpzb24pKVxuICAgICAgfSBlbHNlIGlmIChsb2cpIHtcbiAgICAgICAgY29uc29sZS5sb2coYElnbm9yaW5nIG1pc3NpbmcgZmlsZTogJHtqc29uRmlsZVBhdGh9YClcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjb25zdCBzY3J1dGluQnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogU2NydXRpbiB9ID0ge31cbiAgaWYgKGVuYWJsZWREYXRhc2V0cyAmIEVuYWJsZWREYXRhc2V0cy5TY3J1dGlucykge1xuICAgIGZvciAoY29uc3QgZGF0YXNldCBvZiBkYXRhc2V0cy5zY3J1dGlucykge1xuICAgICAgaWYgKGRhdGFzZXQuaWdub3JlRm9yV2ViKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBpZiAoXG4gICAgICAgIGxlZ2lzbGF0dXJlICE9PSBMZWdpc2xhdHVyZS5BbGwgJiZcbiAgICAgICAgZGF0YXNldC5sZWdpc2xhdHVyZSAhPT0gTGVnaXNsYXR1cmUuQWxsICYmXG4gICAgICAgIGxlZ2lzbGF0dXJlICE9PSBkYXRhc2V0LmxlZ2lzbGF0dXJlXG4gICAgICApIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGNvbnN0IGRhdGFzZXREaXIgPSBwYXRoLmpvaW4oXG4gICAgICAgIGRhdGFEaXIsXG4gICAgICAgIGRhdGFzZXQuZmlsZW5hbWUucmVwbGFjZSgvXFwuanNvbiQvLCBcIl9uZXR0b3llXCIpLFxuICAgICAgKVxuXG4gICAgICBmb3IgKGNvbnN0IHNjcnV0aW5TcGxpdFBhdGggb2Ygd2Fsa0RpcihkYXRhc2V0RGlyKSkge1xuICAgICAgICBjb25zdCBzY3J1dGluRmlsZW5hbWUgPSBzY3J1dGluU3BsaXRQYXRoW3NjcnV0aW5TcGxpdFBhdGgubGVuZ3RoIC0gMV1cbiAgICAgICAgaWYgKCFzY3J1dGluRmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgc2NydXRpbkZpbGVQYXRoID0gcGF0aC5qb2luKGRhdGFzZXREaXIsIC4uLnNjcnV0aW5TcGxpdFBhdGgpXG4gICAgICAgIGlmIChsb2cpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhgTG9hZGluZyBmaWxlOiAke3NjcnV0aW5GaWxlUGF0aH3igKZgKVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHNjcnV0aW5Kc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoc2NydXRpbkZpbGVQYXRoLCB7XG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICB9KVxuICAgICAgICBjb25zdCBzY3J1dGluID0gU2NydXRpbnNDb252ZXJ0LnRvU2NydXRpbihzY3J1dGluSnNvbilcbiAgICAgICAgaWYgKHNjcnV0aW5CeVVpZFtzY3J1dGluLnVpZF0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHNjcnV0aW5CeVVpZFtzY3J1dGluLnVpZF0gPSBzY3J1dGluXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGFjdGV1ckJ5VWlkLFxuICAgIGFtZW5kZW1lbnRCeVVpZCxcbiAgICBkb2N1bWVudEJ5VWlkLFxuICAgIGRvc3NpZXJQYXJsZW1lbnRhaXJlQnlTZW5hdENoZW1pbixcbiAgICBkb3NzaWVyUGFybGVtZW50YWlyZUJ5VGl0cmVDaGVtaW4sXG4gICAgZG9zc2llclBhcmxlbWVudGFpcmVCeVVpZCxcbiAgICBvcmdhbmVCeVVpZCxcbiAgICBwaG90b0J5VWlkLFxuICAgIHJldW5pb25CeVVpZCxcbiAgICByZXVuaW9uc0J5RGF5LFxuICAgIHJldW5pb25zQnlEb3NzaWVyVWlkLFxuICAgIHNjcnV0aW5CeVVpZCxcbiAgfVxufVxuXG4vKiogTG9hZCBkYXRhIGZyb20gYmlnIG1vbm9seXRpYyBmaWxlcy4gKi9cbmV4cG9ydCBmdW5jdGlvbiBsb2FkQXNzZW1ibGVlRGF0YUZyb21CaWdGaWxlcyhcbiAgZGF0YURpcjogc3RyaW5nLFxuICBlbmFibGVkRGF0YXNldHM6IEVuYWJsZWREYXRhc2V0cyxcbiAgbGVnaXNsYXR1cmU6IExlZ2lzbGF0dXJlLFxuICB7IGxvZyA9IGZhbHNlIH0gPSB7fSxcbik6IERhdGEge1xuICBjb25zdCBhY3RldXJCeVVpZDogeyBbdWlkOiBzdHJpbmddOiBBY3RldXIgfSA9IHt9XG4gIGNvbnN0IG9yZ2FuZUJ5VWlkOiB7IFt1aWQ6IHN0cmluZ106IE9yZ2FuZSB9ID0ge31cbiAgaWYgKGVuYWJsZWREYXRhc2V0cyAmIEVuYWJsZWREYXRhc2V0cy5BY3RldXJzRXRPcmdhbmVzKSB7XG4gICAgZm9yIChjb25zdCBkYXRhc2V0IG9mIGRhdGFzZXRzLmFjdGV1cnNFdE9yZ2FuZXMpIHtcbiAgICAgIGlmIChkYXRhc2V0Lmlnbm9yZUZvcldlYikge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgaWYgKFxuICAgICAgICBsZWdpc2xhdHVyZSAhPT0gTGVnaXNsYXR1cmUuQWxsICYmXG4gICAgICAgIGRhdGFzZXQubGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgICBsZWdpc2xhdHVyZSAhPT0gZGF0YXNldC5sZWdpc2xhdHVyZVxuICAgICAgKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBjb25zdCBqc29uRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihcbiAgICAgICAgZGF0YURpcixcbiAgICAgICAgZGF0YXNldC5maWxlbmFtZS5yZXBsYWNlKC9cXC5qc29uJC8sIFwiX25ldHRveWUuanNvblwiKSxcbiAgICAgIClcbiAgICAgIGlmIChsb2cpIHtcbiAgICAgICAgY29uc29sZS5sb2coYExvYWRpbmcgZmlsZTogJHtqc29uRmlsZVBhdGh9YClcbiAgICAgIH1cbiAgICAgIGNvbnN0IGpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhqc29uRmlsZVBhdGgsIHsgZW5jb2Rpbmc6IFwidXRmOFwiIH0pXG4gICAgICBjb25zdCBhY3RldXJzRXRPcmdhbmVzID0gQWN0ZXVyc0V0T3JnYW5lc0NvbnZlcnQudG9BY3RldXJzRXRPcmdhbmVzKGpzb24pXG4gICAgICBmb3IgKGNvbnN0IGFjdGV1ciBvZiBhY3RldXJzRXRPcmdhbmVzLmFjdGV1cnMpIHtcbiAgICAgICAgLy8gS2VlcCB0aGUgZmlyc3QgZXhpc3RpbmcgXCJhY3RldXJcIiwgYmVjYXVzZSB0aGUgZmlyc3Qgd3JhcHBlciBpcyB0aGUgbW9zdCBjb21wbGV0ZS5cbiAgICAgICAgaWYgKGFjdGV1ckJ5VWlkW2FjdGV1ci51aWRdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBhY3RldXJCeVVpZFthY3RldXIudWlkXSA9IGFjdGV1clxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBmb3IgKGNvbnN0IG9yZ2FuZSBvZiBhY3RldXJzRXRPcmdhbmVzLm9yZ2FuZXMpIHtcbiAgICAgICAgLy8gS2VlcCB0aGUgZmlyc3QgZXhpc3RpbmcgXCJvcmdhbmVcIiwgYmVjYXVzZSB0aGUgZmlyc3Qgd3JhcHBlciBpcyB0aGUgbW9zdCBjb21wbGV0ZS5cbiAgICAgICAgaWYgKG9yZ2FuZUJ5VWlkW29yZ2FuZS51aWRdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBvcmdhbmVCeVVpZFtvcmdhbmUudWlkXSA9IG9yZ2FuZVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY29uc3QgcmV1bmlvbkJ5VWlkOiB7IFt1aWQ6IHN0cmluZ106IFJldW5pb24gfSA9IHt9XG4gIGNvbnN0IHJldW5pb25zQnlEYXk6IHsgW2RheTogc3RyaW5nXTogUmV1bmlvbltdIH0gPSB7fVxuICBjb25zdCByZXVuaW9uc0J5RG9zc2llclVpZDogeyBbZG9zc2llclVpZDogc3RyaW5nXTogUmV1bmlvbltdIH0gPSB7fVxuICBpZiAoZW5hYmxlZERhdGFzZXRzICYgRW5hYmxlZERhdGFzZXRzLkFnZW5kYXMpIHtcbiAgICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgZGF0YXNldHMuYWdlbmRhcykge1xuICAgICAgaWYgKGRhdGFzZXQuaWdub3JlRm9yV2ViKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBpZiAoXG4gICAgICAgIGxlZ2lzbGF0dXJlICE9PSBMZWdpc2xhdHVyZS5BbGwgJiZcbiAgICAgICAgZGF0YXNldC5sZWdpc2xhdHVyZSAhPT0gTGVnaXNsYXR1cmUuQWxsICYmXG4gICAgICAgIGxlZ2lzbGF0dXJlICE9PSBkYXRhc2V0LmxlZ2lzbGF0dXJlXG4gICAgICApIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGNvbnN0IGpzb25GaWxlUGF0aDogc3RyaW5nID0gcGF0aC5qb2luKFxuICAgICAgICBkYXRhRGlyLFxuICAgICAgICBkYXRhc2V0LmZpbGVuYW1lLnJlcGxhY2UoL1xcLmpzb24kLywgXCJfbmV0dG95ZS5qc29uXCIpLFxuICAgICAgKVxuICAgICAgaWYgKGxvZykge1xuICAgICAgICBjb25zb2xlLmxvZyhgTG9hZGluZyBmaWxlOiAke2pzb25GaWxlUGF0aH1gKVxuICAgICAgfVxuICAgICAgY29uc3QganNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKGpzb25GaWxlUGF0aCwgeyBlbmNvZGluZzogXCJ1dGY4XCIgfSlcbiAgICAgIGNvbnN0IGFnZW5kYXMgPSBBZ2VuZGFzQ29udmVydC50b0FnZW5kYXMoanNvbilcbiAgICAgIGZvciAoY29uc3QgcmV1bmlvbiBvZiBhZ2VuZGFzLnJldW5pb25zKSB7XG4gICAgICAgIGlmIChyZXVuaW9uQnlVaWRbcmV1bmlvbi51aWRdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICByZXVuaW9uQnlVaWRbcmV1bmlvbi51aWRdID0gcmV1bmlvblxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZGF5ID0gcmV1bmlvbi50aW1lc3RhbXBEZWJ1dC50b0lTT1N0cmluZygpLnNwbGl0KFwiVFwiKVswXVxuICAgICAgICBsZXQgcmV1bmlvbnNBdERheSA9IHJldW5pb25zQnlEYXlbZGF5XVxuICAgICAgICBpZiAocmV1bmlvbnNBdERheSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgcmV1bmlvbnNBdERheSA9IHJldW5pb25zQnlEYXlbZGF5XSA9IFtdXG4gICAgICAgIH1cbiAgICAgICAgcmV1bmlvbnNBdERheS5wdXNoKHJldW5pb24pXG5cbiAgICAgICAgY29uc3Qgb2RqID0gcmV1bmlvbi5vZGpcbiAgICAgICAgaWYgKG9kaiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgZm9yIChjb25zdCBwb2ludE9kaiBvZiBvZGoucG9pbnRzT2RqIHx8IFtdKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGRvc3NpZXJMZWdpc2xhdGlmUmVmIG9mIHBvaW50T2RqLmRvc3NpZXJzTGVnaXNsYXRpZnNSZWZzIHx8XG4gICAgICAgICAgICAgIFtdKSB7XG4gICAgICAgICAgICAgIGxldCByZXVuaW9uc0F0RG9zc2llclVpZCA9XG4gICAgICAgICAgICAgICAgcmV1bmlvbnNCeURvc3NpZXJVaWRbZG9zc2llckxlZ2lzbGF0aWZSZWZdXG4gICAgICAgICAgICAgIGlmIChyZXVuaW9uc0F0RG9zc2llclVpZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgcmV1bmlvbnNBdERvc3NpZXJVaWQgPSByZXVuaW9uc0J5RG9zc2llclVpZFtcbiAgICAgICAgICAgICAgICAgIGRvc3NpZXJMZWdpc2xhdGlmUmVmXG4gICAgICAgICAgICAgICAgXSA9IFtdXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgcmV1bmlvbnNBdERvc3NpZXJVaWQucHVzaChyZXVuaW9uKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGFtZW5kZW1lbnRCeVVpZDogeyBbdWlkOiBzdHJpbmddOiBBbWVuZGVtZW50IH0gPSB7fVxuICBpZiAoZW5hYmxlZERhdGFzZXRzICYgRW5hYmxlZERhdGFzZXRzLkFtZW5kZW1lbnRzKSB7XG4gICAgZm9yIChjb25zdCBkYXRhc2V0IG9mIGRhdGFzZXRzLmFtZW5kZW1lbnRzKSB7XG4gICAgICBpZiAoZGF0YXNldC5pZ25vcmVGb3JXZWIpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgbGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgICBkYXRhc2V0LmxlZ2lzbGF0dXJlICE9PSBMZWdpc2xhdHVyZS5BbGwgJiZcbiAgICAgICAgbGVnaXNsYXR1cmUgIT09IGRhdGFzZXQubGVnaXNsYXR1cmVcbiAgICAgICkge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgY29uc3QganNvbkZpbGVQYXRoOiBzdHJpbmcgPSBwYXRoLmpvaW4oXG4gICAgICAgIGRhdGFEaXIsXG4gICAgICAgIGRhdGFzZXQuZmlsZW5hbWUucmVwbGFjZSgvXFwuanNvbiQvLCBcIl9uZXR0b3llLmpzb25cIiksXG4gICAgICApXG4gICAgICBpZiAobG9nKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGBMb2FkaW5nIGZpbGU6ICR7anNvbkZpbGVQYXRofWApXG4gICAgICB9XG4gICAgICBjb25zdCBqc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoanNvbkZpbGVQYXRoLCB7IGVuY29kaW5nOiBcInV0ZjhcIiB9KVxuICAgICAgY29uc3QgYW1lbmRlbWVudHMgPSBBbWVuZGVtZW50c0NvbnZlcnQudG9BbWVuZGVtZW50cyhqc29uKVxuICAgICAgZm9yIChjb25zdCB0ZXh0ZUxlZ2lzbGF0aWYgb2YgYW1lbmRlbWVudHMudGV4dGVzTGVnaXNsYXRpZnMpIHtcbiAgICAgICAgZm9yIChjb25zdCBhbWVuZGVtZW50IG9mIHRleHRlTGVnaXNsYXRpZi5hbWVuZGVtZW50cykge1xuICAgICAgICAgIGlmIChhbWVuZGVtZW50QnlVaWRbYW1lbmRlbWVudC51aWRdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGFtZW5kZW1lbnRCeVVpZFthbWVuZGVtZW50LnVpZF0gPSBhbWVuZGVtZW50XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY29uc3QgZG9jdW1lbnRCeVVpZDogeyBbdWlkOiBzdHJpbmddOiBEb2N1bWVudCB9ID0ge31cbiAgY29uc3QgZG9zc2llclBhcmxlbWVudGFpcmVCeVNlbmF0Q2hlbWluOiB7XG4gICAgW3VpZDogc3RyaW5nXTogRG9zc2llclBhcmxlbWVudGFpcmVcbiAgfSA9IHt9XG4gIGNvbnN0IGRvc3NpZXJQYXJsZW1lbnRhaXJlQnlUaXRyZUNoZW1pbjoge1xuICAgIFt1aWQ6IHN0cmluZ106IERvc3NpZXJQYXJsZW1lbnRhaXJlXG4gIH0gPSB7fVxuICBjb25zdCBkb3NzaWVyUGFybGVtZW50YWlyZUJ5VWlkOiB7IFt1aWQ6IHN0cmluZ106IERvc3NpZXJQYXJsZW1lbnRhaXJlIH0gPSB7fVxuICBpZiAoZW5hYmxlZERhdGFzZXRzICYgRW5hYmxlZERhdGFzZXRzLkRvc3NpZXJzTGVnaXNsYXRpZnMpIHtcbiAgICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgZGF0YXNldHMuZG9zc2llcnNMZWdpc2xhdGlmcykge1xuICAgICAgaWYgKGRhdGFzZXQuaWdub3JlRm9yV2ViKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBpZiAoXG4gICAgICAgIGxlZ2lzbGF0dXJlICE9PSBMZWdpc2xhdHVyZS5BbGwgJiZcbiAgICAgICAgZGF0YXNldC5sZWdpc2xhdHVyZSAhPT0gTGVnaXNsYXR1cmUuQWxsICYmXG4gICAgICAgIGxlZ2lzbGF0dXJlICE9PSBkYXRhc2V0LmxlZ2lzbGF0dXJlXG4gICAgICApIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGNvbnN0IGpzb25GaWxlUGF0aDogc3RyaW5nID0gcGF0aC5qb2luKFxuICAgICAgICBkYXRhRGlyLFxuICAgICAgICBkYXRhc2V0LmZpbGVuYW1lLnJlcGxhY2UoL1xcLmpzb24kLywgXCJfbmV0dG95ZS5qc29uXCIpLFxuICAgICAgKVxuICAgICAgaWYgKGxvZykge1xuICAgICAgICBjb25zb2xlLmxvZyhgTG9hZGluZyBmaWxlOiAke2pzb25GaWxlUGF0aH1gKVxuICAgICAgfVxuICAgICAgY29uc3QganNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKGpzb25GaWxlUGF0aCwgeyBlbmNvZGluZzogXCJ1dGY4XCIgfSlcbiAgICAgIGNvbnN0IGRvc3NpZXJzTGVnaXNsYXRpZnMgPVxuICAgICAgICBEb3NzaWVyc0xlZ2lzbGF0aWZzQ29udmVydC50b0Rvc3NpZXJzTGVnaXNsYXRpZnMoanNvbilcbiAgICAgIGZvciAoY29uc3QgZG9jdW1lbnQgb2YgZG9zc2llcnNMZWdpc2xhdGlmcy50ZXh0ZXNMZWdpc2xhdGlmcykge1xuICAgICAgICBpZiAoZG9jdW1lbnRCeVVpZFtkb2N1bWVudC51aWRdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBkb2N1bWVudEJ5VWlkW2RvY3VtZW50LnVpZF0gPSBkb2N1bWVudFxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBmb3IgKGNvbnN0IGRvc3NpZXIgb2YgZG9zc2llcnNMZWdpc2xhdGlmcy5kb3NzaWVyc1BhcmxlbWVudGFpcmVzKSB7XG4gICAgICAgIGNvbnN0IHRpdHJlRG9zc2llciA9IGRvc3NpZXIudGl0cmVEb3NzaWVyXG4gICAgICAgIGlmIChcbiAgICAgICAgICB0aXRyZURvc3NpZXIuc2VuYXRDaGVtaW4gJiZcbiAgICAgICAgICBkb3NzaWVyUGFybGVtZW50YWlyZUJ5U2VuYXRDaGVtaW5bdGl0cmVEb3NzaWVyLnNlbmF0Q2hlbWluXSA9PT1cbiAgICAgICAgICAgIHVuZGVmaW5lZFxuICAgICAgICApIHtcbiAgICAgICAgICBkb3NzaWVyUGFybGVtZW50YWlyZUJ5U2VuYXRDaGVtaW5bdGl0cmVEb3NzaWVyLnNlbmF0Q2hlbWluXSA9IGRvc3NpZXJcbiAgICAgICAgfVxuICAgICAgICBpZiAoXG4gICAgICAgICAgdGl0cmVEb3NzaWVyLnRpdHJlQ2hlbWluICYmXG4gICAgICAgICAgZG9zc2llclBhcmxlbWVudGFpcmVCeVRpdHJlQ2hlbWluW3RpdHJlRG9zc2llci50aXRyZUNoZW1pbl0gPT09XG4gICAgICAgICAgICB1bmRlZmluZWRcbiAgICAgICAgKSB7XG4gICAgICAgICAgZG9zc2llclBhcmxlbWVudGFpcmVCeVRpdHJlQ2hlbWluW3RpdHJlRG9zc2llci50aXRyZUNoZW1pbl0gPSBkb3NzaWVyXG4gICAgICAgIH1cbiAgICAgICAgaWYgKGRvc3NpZXJQYXJsZW1lbnRhaXJlQnlVaWRbZG9zc2llci51aWRdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBkb3NzaWVyUGFybGVtZW50YWlyZUJ5VWlkW2Rvc3NpZXIudWlkXSA9IGRvc3NpZXJcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IHBob3RvQnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogUGhvdG8gfSA9IHt9XG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuUGhvdG9zKSB7XG4gICAgY29uc3QgcGhvdG9CeVVpZCA9IHt9XG5cbiAgICB7XG4gICAgICBjb25zdCBqc29uRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihcbiAgICAgICAgZGF0YURpcixcbiAgICAgICAgYHBob3Rvc19kZXB1dGVzXyR7XG4gICAgICAgICAgLy8gVE9ETzogSGFuZGxlIExlZ2lzbGF0dXJlLkFsbC5cbiAgICAgICAgICBsZWdpc2xhdHVyZSA9PT0gTGVnaXNsYXR1cmUuQWxsID8gTGVnaXNsYXR1cmUuUXVpbnplIDogbGVnaXNsYXR1cmVcbiAgICAgICAgfWAsXG4gICAgICAgIFwiZGVwdXRlcy5qc29uXCIsXG4gICAgICApXG4gICAgICBpZiAoZnMuZXhpc3RzU3luYyhqc29uRmlsZVBhdGgpKSB7XG4gICAgICAgIGlmIChsb2cpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhgTG9hZGluZyBmaWxlOiAke2pzb25GaWxlUGF0aH1gKVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhqc29uRmlsZVBhdGgsIHsgZW5jb2Rpbmc6IFwidXRmOFwiIH0pXG4gICAgICAgIE9iamVjdC5hc3NpZ24ocGhvdG9CeVVpZCwgSlNPTi5wYXJzZShqc29uKSlcbiAgICAgIH0gZWxzZSBpZiAobG9nKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGBJZ25vcmluZyBtaXNzaW5nIGZpbGU6ICR7anNvbkZpbGVQYXRofWApXG4gICAgICB9XG4gICAgfVxuXG4gICAge1xuICAgICAgY29uc3QganNvbkZpbGVQYXRoOiBzdHJpbmcgPSBwYXRoLmpvaW4oXG4gICAgICAgIGRhdGFEaXIsXG4gICAgICAgIFwicGhvdG9zX3NlbmF0ZXVyc1wiLFxuICAgICAgICBcInNlbmF0ZXVycy5qc29uXCIsXG4gICAgICApXG4gICAgICBpZiAoZnMuZXhpc3RzU3luYyhqc29uRmlsZVBhdGgpKSB7XG4gICAgICAgIGlmIChsb2cpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhgTG9hZGluZyBmaWxlOiAke2pzb25GaWxlUGF0aH1gKVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhqc29uRmlsZVBhdGgsIHsgZW5jb2Rpbmc6IFwidXRmOFwiIH0pXG4gICAgICAgIE9iamVjdC5hc3NpZ24ocGhvdG9CeVVpZCwgSlNPTi5wYXJzZShqc29uKSlcbiAgICAgIH0gZWxzZSBpZiAobG9nKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGBJZ25vcmluZyBtaXNzaW5nIGZpbGU6ICR7anNvbkZpbGVQYXRofWApXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY29uc3Qgc2NydXRpbkJ5VWlkOiB7IFt1aWQ6IHN0cmluZ106IFNjcnV0aW4gfSA9IHt9XG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuU2NydXRpbnMpIHtcbiAgICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgZGF0YXNldHMuc2NydXRpbnMpIHtcbiAgICAgIGlmIChkYXRhc2V0Lmlnbm9yZUZvcldlYikge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgaWYgKFxuICAgICAgICBsZWdpc2xhdHVyZSAhPT0gTGVnaXNsYXR1cmUuQWxsICYmXG4gICAgICAgIGRhdGFzZXQubGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgICBsZWdpc2xhdHVyZSAhPT0gZGF0YXNldC5sZWdpc2xhdHVyZVxuICAgICAgKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBjb25zdCBqc29uRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihcbiAgICAgICAgZGF0YURpcixcbiAgICAgICAgZGF0YXNldC5maWxlbmFtZS5yZXBsYWNlKC9cXC5qc29uJC8sIFwiX25ldHRveWUuanNvblwiKSxcbiAgICAgIClcbiAgICAgIGlmIChsb2cpIHtcbiAgICAgICAgY29uc29sZS5sb2coYExvYWRpbmcgZmlsZTogJHtqc29uRmlsZVBhdGh9YClcbiAgICAgIH1cbiAgICAgIGNvbnN0IGpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhqc29uRmlsZVBhdGgsIHsgZW5jb2Rpbmc6IFwidXRmOFwiIH0pXG4gICAgICBjb25zdCBzY3J1dGlucyA9IFNjcnV0aW5zQ29udmVydC50b1NjcnV0aW5zKGpzb24pXG4gICAgICBmb3IgKGNvbnN0IHNjcnV0aW4gb2Ygc2NydXRpbnMuc2NydXRpbnMpIHtcbiAgICAgICAgaWYgKHNjcnV0aW5CeVVpZFtzY3J1dGluLnVpZF0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHNjcnV0aW5CeVVpZFtzY3J1dGluLnVpZF0gPSBzY3J1dGluXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGFjdGV1ckJ5VWlkLFxuICAgIGFtZW5kZW1lbnRCeVVpZCxcbiAgICBkb2N1bWVudEJ5VWlkLFxuICAgIGRvc3NpZXJQYXJsZW1lbnRhaXJlQnlTZW5hdENoZW1pbixcbiAgICBkb3NzaWVyUGFybGVtZW50YWlyZUJ5VGl0cmVDaGVtaW4sXG4gICAgZG9zc2llclBhcmxlbWVudGFpcmVCeVVpZCxcbiAgICBvcmdhbmVCeVVpZCxcbiAgICBwaG90b0J5VWlkLFxuICAgIHJldW5pb25CeVVpZCxcbiAgICByZXVuaW9uc0J5RGF5LFxuICAgIHJldW5pb25zQnlEb3NzaWVyVWlkLFxuICAgIHNjcnV0aW5CeVVpZCxcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcGF0aEZyb21Eb2N1bWVudFVpZChkb2N1bWVudHNEaXI6IHN0cmluZywgdWlkOiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCBtYXRjaCA9IGRvY3VtZW50VWlkUmVnZXguZXhlYyh1aWQpXG4gIGFzc2VydC5ub3RTdHJpY3RFcXVhbChcbiAgICBtYXRjaCxcbiAgICBudWxsLFxuICAgIGBVbmV4cGVjdGVkIHN0cnVjdHVyZSBmb3IgZG9jdW1lbnQgVUlEOiAke3VpZH1gLFxuICApXG4gIGNvbnN0IGRvY3VtZW50VHlwZSA9IHBhdGguam9pbihkb2N1bWVudHNEaXIsIG1hdGNoIVsxXSlcbiAgY29uc3QgY2hhbWJyZURpciA9IHBhdGguam9pbihkb2N1bWVudFR5cGUsIG1hdGNoIVsyXSlcbiAgY29uc3QgcmVwdWJsaXF1ZURpciA9IHBhdGguam9pbihjaGFtYnJlRGlyLCBtYXRjaCFbM10pXG4gIGNvbnN0IGxlZ2lzbGF0dXJlRGlyID0gcGF0aC5qb2luKHJlcHVibGlxdWVEaXIsIG1hdGNoIVs0XSlcbiAgY29uc3QgZXRhdERpciA9IHBhdGguam9pbihsZWdpc2xhdHVyZURpciwgbWF0Y2ghWzVdKVxuICBsZXQgbnVtZXJvID0gXCIwMDAwMDBcIiArIG1hdGNoIVs2XVxuICBudW1lcm8gPSBudW1lcm8uc3Vic3RyKG51bWVyby5sZW5ndGggLSA2KVxuICBjb25zdCBudW1lcm9NaWxsaWVyc0RpciA9IHBhdGguam9pbihldGF0RGlyLCBudW1lcm8uc3Vic3RyKDAsIDMpKVxuICBmcy5lbnN1cmVEaXJTeW5jKG51bWVyb01pbGxpZXJzRGlyKVxuICByZXR1cm4gcGF0aC5qb2luKG51bWVyb01pbGxpZXJzRGlyLCB1aWQpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXRoRnJvbURvc3NpZXJQYXJsZW1lbnRhaXJlVWlkKFxuICBkb3NzaWVyc0Rpcjogc3RyaW5nLFxuICB1aWQ6IHN0cmluZyxcbik6IHN0cmluZyB7XG4gIGNvbnN0IG1hdGNoID0gZG9zc2llclVpZFJlZ2V4LmV4ZWModWlkKVxuICBhc3NlcnQubm90U3RyaWN0RXF1YWwoXG4gICAgbWF0Y2gsXG4gICAgbnVsbCxcbiAgICBgVW5leHBlY3RlZCBzdHJ1Y3R1cmUgZm9yIGRvc3NpZXIgcGFybGVtZW50YWlyZSBVSUQ6ICR7dWlkfWAsXG4gIClcbiAgY29uc3QgcmVwdWJsaXF1ZURpciA9IHBhdGguam9pbihkb3NzaWVyc0RpciwgbWF0Y2ghWzFdKVxuICBjb25zdCBsZWdpc2xhdHVyZURpciA9IHBhdGguam9pbihyZXB1YmxpcXVlRGlyLCBtYXRjaCFbMl0pXG4gIGxldCBudW1lcm8gPSBcIjAwMDAwMFwiICsgbWF0Y2ghWzNdXG4gIG51bWVybyA9IG51bWVyby5zdWJzdHIobnVtZXJvLmxlbmd0aCAtIDYpXG4gIGNvbnN0IG51bWVyb01pbGxpZXJzRGlyID0gcGF0aC5qb2luKGxlZ2lzbGF0dXJlRGlyLCBudW1lcm8uc3Vic3RyKDAsIDMpKVxuICBmcy5lbnN1cmVEaXJTeW5jKG51bWVyb01pbGxpZXJzRGlyKVxuICByZXR1cm4gcGF0aC5qb2luKG51bWVyb01pbGxpZXJzRGlyLCB1aWQpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXRoRnJvbVJldW5pb25VaWQocmV1bmlvbnNEaXI6IHN0cmluZywgdWlkOiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCBtYXRjaCA9IHJldW5pb25VaWRSZWdleC5leGVjKHVpZClcbiAgYXNzZXJ0Lm5vdFN0cmljdEVxdWFsKFxuICAgIG1hdGNoLFxuICAgIG51bGwsXG4gICAgYFVuZXhwZWN0ZWQgc3RydWN0dXJlIGZvciByZXVuaW9uIFVJRDogJHt1aWR9YCxcbiAgKVxuICBjb25zdCBjaGFtYnJlRGlyID0gcGF0aC5qb2luKHJldW5pb25zRGlyLCBtYXRjaCFbMV0pXG4gIGNvbnN0IHJlcHVibGlxdWVEaXIgPSBwYXRoLmpvaW4oY2hhbWJyZURpciwgbWF0Y2ghWzJdKVxuICBjb25zdCBsZWdpc2xhdHVyZURpciA9IHBhdGguam9pbihyZXB1YmxpcXVlRGlyLCBtYXRjaCFbM10pXG4gIGNvbnN0IHNlc3Npb25EaXIgPSBwYXRoLmpvaW4obGVnaXNsYXR1cmVEaXIsIG1hdGNoIVs0XSlcbiAgY29uc3QgaWREaXIgPSBwYXRoLmpvaW4oc2Vzc2lvbkRpciwgbWF0Y2ghWzVdKVxuICBsZXQgbnVtZXJvID0gXCIwMDAwMDAwMDBcIiArIG1hdGNoIVs2XVxuICBudW1lcm8gPSBudW1lcm8uc3Vic3RyKG51bWVyby5sZW5ndGggLSA5KVxuICBjb25zdCBudW1lcm9NaWxsaW9uc0RpciA9IHBhdGguam9pbihpZERpciwgbnVtZXJvLnN1YnN0cigwLCAzKSlcbiAgY29uc3QgbnVtZXJvTWlsbGllcnNEaXIgPSBwYXRoLmpvaW4obnVtZXJvTWlsbGlvbnNEaXIsIG51bWVyby5zdWJzdHIoMywgMykpXG4gIGZzLmVuc3VyZURpclN5bmMobnVtZXJvTWlsbGllcnNEaXIpXG4gIHJldHVybiBwYXRoLmpvaW4obnVtZXJvTWlsbGllcnNEaXIsIHVpZClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhdGhGcm9tU2NydXRpblVpZChzY3J1dGluc0Rpcjogc3RyaW5nLCB1aWQ6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IG1hdGNoID0gc2NydXRpblVpZFJlZ2V4LmV4ZWModWlkKVxuICBhc3NlcnQubm90U3RyaWN0RXF1YWwoXG4gICAgbWF0Y2gsXG4gICAgbnVsbCxcbiAgICBgVW5leHBlY3RlZCBzdHJ1Y3R1cmUgZm9yIHNjcnV0aW4gVUlEOiAke3VpZH1gLFxuICApXG4gIGNvbnN0IHJlcHVibGlxdWVEaXIgPSBwYXRoLmpvaW4oc2NydXRpbnNEaXIsIG1hdGNoIVsxXSlcbiAgY29uc3QgbGVnaXNsYXR1cmVEaXIgPSBwYXRoLmpvaW4ocmVwdWJsaXF1ZURpciwgbWF0Y2ghWzJdKVxuICBsZXQgbnVtZXJvID0gXCIwMDAwMDBcIiArIG1hdGNoIVszXVxuICBudW1lcm8gPSBudW1lcm8uc3Vic3RyKG51bWVyby5sZW5ndGggLSA2KVxuICBjb25zdCBudW1lcm9NaWxsaWVyc0RpciA9IHBhdGguam9pbihsZWdpc2xhdHVyZURpciwgbnVtZXJvLnN1YnN0cigwLCAzKSlcbiAgZnMuZW5zdXJlRGlyU3luYyhudW1lcm9NaWxsaWVyc0RpcilcbiAgcmV0dXJuIHBhdGguam9pbihudW1lcm9NaWxsaWVyc0RpciwgdWlkKVxufVxuIl19
@@ -334,7 +334,7 @@ function parseTexteLoi(assembleeUrl, page) {
334
334
  state = "firstAlineaElement";
335
335
  } else {
336
336
  // <P/> is for footnotes
337
- (0, _assert["default"])(["BR", "HR", "P"].includes(bodyChild.tagName), "\xD9nexpected tag name \"".concat(bodyChild.tagName, "\" for body child")); // Stay in the same state to go to next bodyChild.
337
+ (0, _assert["default"])(["BR", "HR", "P"].includes(bodyChild.tagName), "Unexpected tag name \"".concat(bodyChild.tagName, "\" for body child")); // Stay in the same state to go to next bodyChild.
338
338
  }
339
339
  }
340
340
 
@@ -560,4 +560,4 @@ function _retrieveTexteLoiParsed() {
560
560
  }));
561
561
  return _retrieveTexteLoiParsed.apply(this, arguments);
562
562
  }
563
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wYXJzZXJzL2RvY3VtZW50cy50cyJdLCJuYW1lcyI6WyJwYXJzZVRleHRlTG9pIiwiYXNzZW1ibGVlVXJsIiwicGFnZSIsInBhZ2VTZWdtZW50cyIsInNwbGl0IiwiYXNzZXJ0Iiwic3RyaWN0RXF1YWwiLCJsZW5ndGgiLCJodG1sIiwidHJpbSIsInN0YXJ0c1dpdGgiLCJlbmRzV2l0aCIsInN1YnN0cmluZyIsIkpTRE9NIiwid2luZG93IiwiZG9jdW1lbnQiLCJjaGlsZHJlbiIsImh0bWxFbGVtZW50IiwiYm9keUVsZW1lbnQiLCJkaXZFbGVtZW50IiwidGFnTmFtZSIsIm5ld0RpdkVsZW1lbnQiLCJpbnNlcnRCZWZvcmUiLCJjcmVhdGVFbGVtZW50IiwiZGl2Q2hpbGQiLCJnZXRBdHRyaWJ1dGUiLCJhcHBlbmRDaGlsZCIsImNsb3NlIiwiZXJyb3IiLCJjb2RlIiwibWVzc2FnZSIsImJvZHlDaGlsZCIsImFsaW5lYUVsZW1lbnQiLCJpc011bHRpTGluZXNIZWFkZXIiLCJsZXZlbCIsImxldmVscyIsImxpbmVFbGVtZW50cyIsIm5leHRQYXJlbnRTdGF0ZSIsInBhcmFncmFwaENoaWxkIiwicGFyYWdyYXBoRWxlbWVudCIsInN0YXRlIiwic3ViQWxpbmVhRWxlbWVudCIsInN1YmRpdmlzaW9ucyIsInN1YmRpdmlzaW9uQWxpbmVhc0h0bWwiLCJzdWJkaXZpc2lvbkFsaW5lYXNUZXh0Iiwic3ViZGl2aXNpb25IZWFkZXJzSHRtbCIsInN1YmRpdmlzaW9uSGVhZGVyc1RleHQiLCJ1bmRlZmluZWQiLCJoZWFkZXJUZXh0IiwidGV4dENvbnRlbnQiLCJuYW1lQ29tcHV0ZWQiLCJub3JtYWxpemUiLCJyZXBsYWNlIiwibmFtZVVwcGVyIiwidG9VcHBlckNhc2UiLCJuZXh0TGV2ZWwiLCJtYXRjaCIsImNvbnNvbGUiLCJsb2ciLCJwb3AiLCJwdXNoIiwiYWxpbmVhcyIsImhlYWRlcnMiLCJpZCIsInJlbGF0aXZlTGV2ZWwiLCJ0ZXh0IiwibmV4dEVsZW1lbnRTaWJsaW5nIiwiaW5jbHVkZXMiLCJsaW5lVGV4dCIsIm1hcCIsImVsZW1lbnQiLCJqb2luIiwibGluZUh0bWwiLCJvdXRlckhUTUwiLCJjbGFzc05hbWUiLCJ1cmwiLCJyZXRyaWV2ZVRleHRlTG9pUGFyc2VkIiwiZmV0Y2giLCJyZXNwb25zZSIsIm9rIiwic3RhdHVzIiwic3RhdHVzVGV4dCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBOztBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVPLFNBQVNBLGFBQVQsQ0FBdUJDLFlBQXZCLEVBQTZDQyxJQUE3QyxFQUEyRDtBQUNoRTtBQUNBLE1BQU1DLFlBQVksR0FBR0QsSUFBSSxDQUFDRSxLQUFMLENBQVcsVUFBWCxDQUFyQjs7QUFDQUMscUJBQU9DLFdBQVAsQ0FBbUJILFlBQVksQ0FBQ0ksTUFBaEMsRUFBd0MsQ0FBeEMsRUFBMkNMLElBQTNDOztBQUNBLE1BQUlNLElBQUksR0FBR0wsWUFBWSxDQUFDLENBQUQsQ0FBWixDQUFnQk0sSUFBaEIsRUFBWDtBQUNBLDBCQUFPRCxJQUFJLENBQUNFLFVBQUwsQ0FBZ0IsTUFBaEIsQ0FBUDtBQUNBLDBCQUFPRixJQUFJLENBQUNHLFFBQUwsQ0FBYyxRQUFkLENBQVA7QUFDQUgsRUFBQUEsSUFBSSxrQkFBV0EsSUFBSSxDQUFDSSxTQUFMLENBQWUsQ0FBZixFQUFrQkosSUFBSSxDQUFDRCxNQUFMLEdBQWMsQ0FBaEMsQ0FBWCxZQUFKLENBUGdFLENBU2hFOztBQUNBLGVBQW1CLElBQUlNLFlBQUosQ0FBVUwsSUFBVixDQUFuQjtBQUFBLE1BQVFNLE1BQVIsVUFBUUEsTUFBUjs7QUFDQSxNQUFRQyxRQUFSLEdBQXFCRCxNQUFyQixDQUFRQyxRQUFSOztBQUNBVixxQkFBT0MsV0FBUCxDQUFtQlMsUUFBUSxDQUFDQyxRQUFULENBQWtCVCxNQUFyQyxFQUE2QyxDQUE3Qzs7QUFDQSxNQUFNVSxXQUFXLEdB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UUxOLGNBQUFBLElBQUksRUFBSkE7QUFSSyxhQUFQO0FBWEo7O0FBc0JBO0FBQ0FzQyxRQUFBQSxLQUFLLEdBQUcsc0JBQVI7QUFDQTs7QUFDRjtBQUNFLDBDQUEyQkEsS0FBM0I7QUE1VUo7QUE4VUQ7O0FBRUQxQixFQUFBQSxNQUFNLENBQUNhLEtBQVAsR0E5WWdFLENBOFlqRDs7QUFFZixTQUFPO0FBQ0xDLElBQUFBLEtBQUssRUFBRSxJQURGO0FBRUxwQixJQUFBQSxJQUFJLEVBQUpBLElBRks7QUFHTE4sSUFBQUEsSUFBSSxFQUFKQSxJQUhLO0FBSUx3QyxJQUFBQSxZQUFZLEVBQVpBLFlBSks7QUFLTGlDLElBQUFBLEdBQUcsRUFBRTFFO0FBTEEsR0FBUDtBQU9EOztTQUVxQjJFLHNCOzs7OztvRkFBZixpQkFDTEMsS0FESyxFQUtMNUUsWUFMSztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLG1CQU9rQjRFLEtBQUssQ0FBQzVFLFlBQUQsQ0FQdkI7O0FBQUE7QUFPQzZFLFlBQUFBLFFBUEQ7QUFBQTtBQUFBLG1CQVFjQSxRQUFRLENBQUNiLElBQVQsRUFSZDs7QUFBQTtBQVFDL0QsWUFBQUEsSUFSRDs7QUFBQSxnQkFTQTRFLFFBQVEsQ0FBQ0MsRUFUVDtBQUFBO0FBQUE7QUFBQTs7QUFBQSw2Q0FVSTtBQUNMbkQsY0FBQUEsS0FBSyxFQUFFO0FBQUVDLGdCQUFBQSxJQUFJLEVBQUVpRCxRQUFRLENBQUNFLE1BQWpCO0FBQXlCbEQsZ0JBQUFBLE9BQU8sRUFBRWdELFFBQVEsQ0FBQ0c7QUFBM0MsZUFERjtBQUVML0UsY0FBQUEsSUFBSSxFQUFKQTtBQUZLLGFBVko7O0FBQUE7QUFBQSw2Q0FlRUYsYUFBYSxDQUFDQyxZQUFELEVBQWVDLElBQWYsQ0FmZjs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxHIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGFzc2VydCBmcm9tIFwiYXNzZXJ0XCJcbmltcG9ydCB7IEpTRE9NIH0gZnJvbSBcImpzZG9tXCJcblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlVGV4dGVMb2koYXNzZW1ibGVlVXJsOiBzdHJpbmcsIHBhZ2U6IHN0cmluZykge1xuICAvLyBSZXBhaXIgSFRNTC5cbiAgY29uc3QgcGFnZVNlZ21lbnRzID0gcGFnZS5zcGxpdChcIjwvc3R5bGU+XCIpXG4gIGFzc2VydC5zdHJpY3RFcXVhbChwYWdlU2VnbWVudHMubGVuZ3RoLCAyLCBwYWdlKVxuICBsZXQgaHRtbCA9IHBhZ2VTZWdtZW50c1sxXS50cmltKClcbiAgYXNzZXJ0KGh0bWwuc3RhcnRzV2l0aChcIjxkaXZcIikpXG4gIGFzc2VydChodG1sLmVuZHNXaXRoKFwiPC9kaXY+XCIpKVxuICBodG1sID0gYDxodG1sJHtodG1sLnN1YnN0cmluZyg0LCBodG1sLmxlbmd0aCAtIDYpfTwvaHRtbD5gXG5cbiAgLy8gRXh0cmFjdCBzdWJkaXZpc2lvbnMgZnJvbSBIVE1MLlxuICBjb25zdCB7IHdpbmRvdyB9ID0gbmV3IEpTRE9NKGh0bWwpXG4gIGNvbnN0IHsgZG9jdW1lbnQgfSA9IHdpbmRvd1xuICBhc3NlcnQuc3RyaWN0RXF1YWwoZG9jdW1lbnQuY2hpbGRyZW4ubGVuZ3RoLCAxKVxuICBjb25zdCBodG1sRWxlbWVudCA9IGRvY3VtZW50LmNoaWxkcmVuWzBdXG4gIGFzc2VydC5zdHJpY3RFcXVhbChodG1sRWxlbWVudC5jaGlsZHJlbi5sZW5ndGgsIDIpXG4gIGNvbnN0IGJvZHlFbGVtZW50ID0gaHRtbEVsZW1lbnQuY2hpbGRyZW5bMV1cbiAgaWYgKGFzc2VtYmxlZVVybCA9PT0gXCJodHRwOi8vd3d3LmFzc2VtYmxlZS1uYXRpb25hbGUuZnIvMTUvdGV4dGVzLzA2NzUuYXNwXCIpIHtcbiAgICAvLyBSZXBhaXIgZG9jdW1lbnQuXG4gICAgYXNzZXJ0LnN0cmljdEVxdWFsKGJvZHlFbGVtZW50LmNoaWxkcmVuLmxlbmd0aCwgMSlcbiAgICBjb25zdCBkaXZFbGVtZW50ID0gYm9keUVsZW1lbnQuY2hpbGRyZW5bMF1cbiAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZGl2RWxlbWVudC50YWdOYW1lLCBcIkRJVlwiKVxuICAgIGNvbnN0IG5ld0RpdkVsZW1lbnQgPSBib2R5RWxlbWVudC5pbnNlcnRCZWZvcmUoXG4gICAgICBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpLFxuICAgICAgZGl2RWxlbWVudCxcbiAgICApXG4gICAgYm9keUVsZW1lbnQuaW5zZXJ0QmVmb3JlKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJiclwiKSwgZGl2RWxlbWVudClcbiAgICBmb3IgKGNvbnN0IGRpdkNoaWxkIG9mIFsuLi5kaXZFbGVtZW50LmNoaWxkcmVuXSkge1xuICAgICAgaWYgKGRpdkNoaWxkLmdldEF0dHJpYnV0ZShcImNsYXNzXCIpID09PSBcImE5QXJ0aWNsZU51bVwiKSB7XG4gICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgICBuZXdEaXZFbGVtZW50LmFwcGVuZENoaWxkKGRpdkNoaWxkKVxuICAgIH1cbiAgfVxuICBpZiAoYm9keUVsZW1lbnQuY2hpbGRyZW4ubGVuZ3RoIDwgMykge1xuICAgIC8vIE9jY3VycyBpbiBodHRwOi8vd3d3LmFzc2VtYmxlZS1uYXRpb25hbGUuZnIvMTUvdGV4dGVzLzAzMjYuYXNwLlxuICAgIHdpbmRvdy5jbG9zZSgpIC8vIEZyZWUgbWVtb3J5LlxuICAgIHJldHVybiB7XG4gICAgICBlcnJvcjogeyBjb2RlOiAtMSwgbWVzc2FnZTogXCJUZXh0ZSBkZSBsb2kgc2FucyBjb250ZW51XCIgfSxcbiAgICAgIGh0bWwsXG4gICAgICBwYWdlLFxuICAgIH1cbiAgfVxuICBhc3NlcnQuc3RyaWN0RXF1YWwoYm9keUVsZW1lbnQuY2hpbGRyZW5bMF0udGFnTmFtZSwgXCJESVZcIilcbiAgLy8gRmlyc3QgY2hpbGQgaXMgYSBESVYgZGVzY3JpYmluZyB0aGUgZG9jdW1lbnQgKEFzc2VtYmzDqWUncyBoZWFkZXIpLiBTa2lwIGl0IGZvciBub3cuXG4gIGxldCBib2R5Q2hpbGQgPSBib2R5RWxlbWVudC5jaGlsZHJlblsxXVxuICBhc3NlcnQuc3RyaWN0RXF1YWwoYm9keUNoaWxkLnRhZ05hbWUsIFwiQlJcIilcbiAgbGV0IGFsaW5lYUVsZW1lbnQ6IEVsZW1lbnQgfCBudWxsID0gbnVsbFxuICBsZXQgaXNNdWx0aUxpbmVzSGVhZGVyOiBib29sZWFuID0gZmFsc2VcbiAgbGV0IGxldmVsOiBudW1iZXIgfCBudWxsID0gbnVsbFxuICBsZXQgbGV2ZWxzOiBudW1iZXJbXSA9IFtdXG4gIGxldCBsaW5lRWxlbWVudHM6IEVsZW1lbnRbXSB8IG51bGwgPSBudWxsXG4gIGxldCBuZXh0UGFyZW50U3RhdGUgPSBudWxsXG4gIGxldCBwYXJhZ3JhcGhDaGlsZDogRWxlbWVudCB8IG51bGwgPSBudWxsXG4gIGxldCBwYXJhZ3JhcGhFbGVtZW50OiBFbGVtZW50IHwgbnVsbCA9IG51bGxcbiAgbGV0IHN0YXRlOiBzdHJpbmcgfCBudWxsID0gXCJuZXh0Qm9keUNoaWxkXCJcbiAgbGV0IHN1YkFsaW5lYUVsZW1lbnQ6IEVsZW1lbnQgfCBudWxsID0gbnVsbFxuICBjb25zdCBzdWJkaXZpc2lvbnMgPSBbXVxuICBsZXQgc3ViZGl2aXNpb25BbGluZWFzSHRtbDogc3RyaW5nW10gfCBudWxsID0gbnVsbFxuICBsZXQgc3ViZGl2aXNpb25BbGluZWFzVGV4dDogc3RyaW5nW10gfCBudWxsID0gbnVsbFxuICBsZXQgc3ViZGl2aXNpb25IZWFkZXJzSHRtbDogc3RyaW5nW10gfCBudWxsID0gbnVsbFxuICBsZXQgc3ViZGl2aXNpb25IZWFkZXJzVGV4dDogc3RyaW5nW10gfCBudWxsID0gbnVsbFxuICB3aGlsZSAoc3RhdGUgIT09IG51bGwpIHtcbiAgICBzd2l0Y2ggKHN0YXRlKSB7XG4gICAgICBjYXNlIFwiYWxpbmVhRWxlbWVudFwiOlxuICAgICAgICBzd2l0Y2ggKGFsaW5lYUVsZW1lbnQhLnRhZ05hbWUpIHtcbiAgICAgICAgICBjYXNlIFwiRElWXCI6XG4gICAgICAgICAgICBzdGF0ZSA9IFwiZmlyc3RTdWJBbGluZWFFbGVtZW50XCJcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgY2FzZSBcIkg0XCI6XG4gICAgICAgICAgICAvLyBUT0RPXG4gICAgICAgICAgICBuZXh0UGFyZW50U3RhdGUgPSBcIm5leHRBbGluZWFFbGVtZW50XCJcbiAgICAgICAgICAgIHBhcmFncmFwaEVsZW1lbnQgPSBhbGluZWFFbGVtZW50XG4gICAgICAgICAgICBzdGF0ZSA9IFwiZmlyc3RQYXJhZ3JhcGhDaGlsZFwiXG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIGNhc2UgXCJQXCI6XG4gICAgICAgICAgICBuZXh0UGFyZW50U3RhdGUgPSBcIm5leHRBbGluZWFFbGVtZW50XCJcbiAgICAgICAgICAgIHBhcmFncmFwaEVsZW1lbnQgPSBhbGluZWFFbGVtZW50XG4gICAgICAgICAgICBzdGF0ZSA9IFwiZmlyc3RQYXJhZ3JhcGhDaGlsZFwiXG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIGNhc2UgXCJPTFwiOlxuICAgICAgICAgICAgLy8gVE9ET1xuICAgICAgICAgICAgc3RhdGUgPSBcIm5leHRBbGluZWFFbGVtZW50XCJcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgY2FzZSBcIlRBQkxFXCI6XG4gICAgICAgICAgICAvLyBUT0RPXG4gICAgICAgICAgICBzdGF0ZSA9IFwibmV4dEFsaW5lYUVsZW1lbnRcIlxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgZXJyb3I6IHtcbiAgICAgICAgICAgICAgICBjb2RlOiAtMixcbiAgICAgICAgICAgICAgICBtZXNzYWdlOiBgVW5leHBlY3RlZCB0YWcgbmFtZSBmb3IgYWxpbmVhIGVsZW1lbnQ6ICR7XG4gICAgICAgICAgICAgICAgICBhbGluZWFFbGVtZW50IS50YWdOYW1lXG4gICAgICAgICAgICAgICAgfWAsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIGh0bWwsXG4gICAgICAgICAgICAgIHBhZ2UsXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgXCJmaXJzdEFsaW5lYUVsZW1lbnRcIjpcbiAgICAgICAgYWxpbmVhRWxlbWVudCA9IGJvZHlDaGlsZC5jaGlsZHJlblswXVxuICAgICAgICBpZiAoYWxpbmVhRWxlbWVudCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgLy8gTm8gYWxpbmVhIGluIGN1cnJlbnQgYm9keUNoaWxkOiBnbyB0byBuZXh0IGJvZHlDaGlsZC5cbiAgICAgICAgICBzdGF0ZSA9IFwibmV4dEJvZHlDaGlsZFwiXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc3RhdGUgPSBcImFsaW5lYUVsZW1lbnRcIlxuICAgICAgICB9XG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlIFwiZmlyc3RQYXJhZ3JhcGhDaGlsZFwiOlxuICAgICAgICBwYXJhZ3JhcGhDaGlsZCA9IHBhcmFncmFwaEVsZW1lbnQhLmNoaWxkcmVuWzBdXG4gICAgICAgIGlmIChwYXJhZ3JhcGhDaGlsZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgLy8gTm8gY2hpbGQgaW4gY3VycmVudCBwYXJhZ3JhcGg6IGdvIHRvIG5leHQgcGFyZW50IGVsZW1lbnQuXG4gICAgICAgICAgc3RhdGUgPSBuZXh0UGFyZW50U3RhdGVcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zdCBoZWFkZXJUZXh0ID0gcGFyYWdyYXBoRWxlbWVudCEudGV4dENvbnRlbnRcbiAgICAgICAgICBjb25zdCBuYW1lQ29tcHV0ZWQgPSAoaGVhZGVyVGV4dCB8fCBcIlwiKVxuICAgICAgICAgICAgLm5vcm1hbGl6ZShcIk5GRFwiKVxuICAgICAgICAgICAgLnJlcGxhY2UoL1tcXHUwMzAwLVxcdTAzNmZdL2csIFwiXCIpXG4gICAgICAgICAgICAucmVwbGFjZSgvXFwobm91dmVhdVxcKS8sIFwiXCIpXG4gICAgICAgICAgICAucmVwbGFjZSgvXFwoUG91ciBjb29yZGluYXRpb25cXCkvLCBcIlwiKVxuICAgICAgICAgICAgLnJlcGxhY2UoL1xcKFN1cHByaW3DqXM/XFwpLywgXCJcIilcbiAgICAgICAgICAgIC5yZXBsYWNlKC/CoC9nLCBcIiBcIilcbiAgICAgICAgICAgIC5yZXBsYWNlKC9bXFwtLC7igKZdL2csIFwiXCIpXG4gICAgICAgICAgICAudHJpbSgpXG4gICAgICAgICAgICAucmVwbGFjZSgvIHsxLH0vZywgXCJfXCIpXG4gICAgICAgICAgY29uc3QgbmFtZVVwcGVyID0gbmFtZUNvbXB1dGVkLnRvVXBwZXJDYXNlKClcbiAgICAgICAgICBpZiAobmFtZVVwcGVyID09PSBcIlwiKSB7XG4gICAgICAgICAgICAvLyBPY2N1cnMgaW46XG4gICAgICAgICAgICAvLyAqIGh0dHA6Ly93d3cuYXNzZW1ibGVlLW5hdGlvbmFsZS5mci8xNS90ZXh0ZXMvMDQ0NS5hc3BcbiAgICAgICAgICAgIC8vICogaHR0cDovL3d3dy5hc3NlbWJsZWUtbmF0aW9uYWxlLmZyLzE1L3RleHRlcy8wNjI2LmFzcFxuICAgICAgICAgICAgLy8gU2tpcCBwYXJhZ3JhcGguXG4gICAgICAgICAgICBzdGF0ZSA9IG5leHRQYXJlbnRTdGF0ZVxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgbmV4dExldmVsID1cbiAgICAgICAgICAgIG5hbWVVcHBlci5tYXRjaCgvXihSQVBQT1JUXyk/QU5ORVhFKF98JCkvKSAhPT0gbnVsbCB8fFxuICAgICAgICAgICAgbmFtZVVwcGVyLm1hdGNoKC9eRVRBVF8vKSAhPT0gbnVsbFxuICAgICAgICAgICAgICA/IDBcbiAgICAgICAgICAgICAgOiBuYW1lVXBwZXIubWF0Y2goL15UT01FXy8pICE9PSBudWxsXG4gICAgICAgICAgICAgID8gMVxuICAgICAgICAgICAgICA6IG5hbWVVcHBlci5tYXRjaCgvXlBBUlRJRV8vKSAhPT0gbnVsbCB8fFxuICAgICAgICAgICAgICAgIG5hbWVVcHBlci5tYXRjaChcbiAgICAgICAgICAgICAgICAgIC9eKFBSRU1JRVJFfFNFQ09OREV8REVVWElFTUV8VFJPSVNJRU1FfFFVQVRSSUVNRSlfUEFSVElFKF98JCkvLFxuICAgICAgICAgICAgICAgICkgIT09IG51bGxcbiAgICAgICAgICAgICAgPyAyXG4gICAgICAgICAgICAgIDogbmFtZVVwcGVyLm1hdGNoKC9eTElWUkVfLykgIT09IG51bGxcbiAgICAgICAgICAgICAgPyAzXG4gICAgICAgICAgICAgIDogbmFtZVVwcGVyLm1hdGNoKC9eVElUUkVfLykgIT09IG51bGxcbiAgICAgICAgICAgICAgPyA0XG4gICAgICAgICAgICAgIDogbmFtZVVwcGVyLm1hdGNoKC9eU09VU1RJVFJFXy8pICE9PSBudWxsXG4gICAgICAgICAgICAgID8gNVxuICAgICAgICAgICAgICA6IG5hbWVVcHBlci5tYXRjaCgvXkNIQVBJVFJFXy8pICE9PSBudWxsXG4gICAgICAgICAgICAgID8gNlxuICAgICAgICAgICAgICA6IG5hbWVVcHBlci5tYXRjaCgvXlNFQ1RJT05fLykgIT09IG51bGxcbiAgICAgICAgICAgICAgPyA3XG4gICAgICAgICAgICAgIDogbmFtZVVwcGVyLm1hdGNoKC9eU09VU1NFQ1RJT05fLykgIT09IG51bGxcbiAgICAgICAgICAgICAgPyA4XG4gICAgICAgICAgICAgIDogbmFtZVVwcGVyLm1hdGNoKC9eQVJUSUNMRVM/Xy8pICE9PSBudWxsIHx8XG4gICAgICAgICAgICAgICAgLy8gXCJFeHBvc8OpIGRlcyBtb3RpZnNcIiBtdXN0IGJlIGF0IHRoZSBzYW1lIGxldmVsIGFzIGFydGljbGUuXG4gICAgICAgICAgICAgICAgLy8gXCJFeHBvc8OpIGRlcyBtb3RpZnNcIiB3aXRob3V0IGNvbnRlbnQ6XG4gICAgICAgICAgICAgICAgLy8gKiBodHRwOi8vd3d3LmFzc2VtYmxlZS1uYXRpb25hbGUuZnIvMTUvdGV4dGVzLzA3MDIuYXNwXG4gICAgICAgICAgICAgICAgLy8gXCJFeHBvc8OpIGRlcyBtb3RpZnNcIiB3aXRoIGNvbnRlbnQ6XG4gICAgICAgICAgICAgICAgLy8gKiBodHRwOi8vd3d3LmFzc2VtYmxlZS1uYXRpb25hbGUuZnIvMTUvdGV4dGVzLzEzMjYuYXNwXG4gICAgICAgICAgICAgICAgLy8gKiBodHRwOi8vd3d3LmFzc2VtYmxlZS1uYXRpb25hbGUuZnIvMTUvdGV4dGVzLzE2MTAuYXNwXG4gICAgICAgICAgICAgICAgbmFtZVVwcGVyLm1hdGNoKC9eRVhQT1NFX0RFU19NT1RJRlMkLykgIT09IG51bGxcbiAgICAgICAgICAgICAgPyA5XG4gICAgICAgICAgICAgIDogbnVsbFxuICAgICAgICAgIGlmIChuZXh0TGV2ZWwgPT09IG51bGwgJiYgc3ViZGl2aXNpb25zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgaWYgKG5hbWVVcHBlci5tYXRjaCgvXihQUk9KRVR8UFJPUE9TSVRJT04pX0RFX0xPSShffCQpLykgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgLy8gT2NjdXJzIGluOlxuICAgICAgICAgICAgICAvLyAqIGh0dHA6Ly93d3cuYXNzZW1ibGVlLW5hdGlvbmFsZS5mci8xNS90ZXh0ZXMvMDIzMi5hc3BcbiAgICAgICAgICAgICAgLy8gKiBodHRwOi8vd3d3LmFzc2VtYmxlZS1uYXRpb25hbGUuZnIvMTUvdGV4dGVzLzA2MjYuYXNwXG4gICAgICAgICAgICAgIC8vICogaHR0cDovL3d3dy5hc3NlbWJsZWUtbmF0aW9uYWxlLmZyLzE1L3RleHRlcy8wNjc2LmFzcFxuICAgICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgICAgbmFtZVVwcGVyID09PSBcIkpFVVhfT0xZTVBJUVVFU19FVF9QQVJBTFlNUElRVUVTX0RFXzIwMjRcIlxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgIC8vIE9jY3VycyBpbiBodHRwOi8vd3d3LmFzc2VtYmxlZS1uYXRpb25hbGUuZnIvMTUvdGV4dGVzLzA2NzYuYXNwXG4gICAgICAgICAgICB9IGVsc2UgaWYgKG5hbWVVcHBlciA9PT0gXCJURVhURV9ERV9MQV9DT01NSVNTSU9OX01JWFRFX1BBUklUQUlSRVwiKSB7XG4gICAgICAgICAgICAgIC8vIE9jY3VycyBpbiBodHRwOi8vd3d3LmFzc2VtYmxlZS1uYXRpb25hbGUuZnIvMTUvdGV4dGVzLzEyOTQuYXNwXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgICAgICAgICBgVW5leHBlY3RlZCBuYW1lVXBwZXIgPSBcIiR7bmFtZVVwcGVyfVwiIGF0IGJlZ2lubmluZyBvZiBcInRleHRlIGRlIGxvaVwiIGF0ICR7YXNzZW1ibGVlVXJsfWAsXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIFNraXAgcGFyYWdyYXBoLlxuICAgICAgICAgICAgc3RhdGUgPSBuZXh0UGFyZW50U3RhdGVcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChuZXh0TGV2ZWwgIT09IG51bGwpIHtcbiAgICAgICAgICAgIGxldmVsID0gbmV4dExldmVsXG4gICAgICAgICAgICB3aGlsZSAobGV2ZWxzLmxlbmd0aCA+IDAgJiYgbGV2ZWwgPCBsZXZlbHNbbGV2ZWxzLmxlbmd0aCAtIDFdKSB7XG4gICAgICAgICAgICAgIGxldmVscy5wb3AoKVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGxldmVscy5sZW5ndGggPT09IDAgfHwgbGV2ZWwgPiBsZXZlbHNbbGV2ZWxzLmxlbmd0aCAtIDFdKSB7XG4gICAgICAgICAgICAgIGxldmVscy5wdXNoKGxldmVsKVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gQXJ0aWNsZXMgJiBcIkV4cG9zw6kgZGVzIG1vdGlmc1wiIGFyZSB0aGUgb25seSBkaXZpc2lvbnMgd2l0aG91dCBzZWNvbmQgdGl0bGUuXG4gICAgICAgICAgICBpc011bHRpTGluZXNIZWFkZXIgPVxuICAgICAgICAgICAgICBuYW1lVXBwZXIubWF0Y2goL15BUlRJQ0xFUz9fLykgPT09IG51bGwgJiZcbiAgICAgICAgICAgICAgbmFtZVVwcGVyLm1hdGNoKC9eRVhQT1NFX0RFU19NT1RJRlMkLykgPT09IG51bGxcbiAgICAgICAgICAgIHN1YmRpdmlzaW9uQWxpbmVhc0h0bWwgPSBbXVxuICAgICAgICAgICAgc3ViZGl2aXNpb25BbGluZWFzVGV4dCA9IFtdXG4gICAgICAgICAgICBzdWJkaXZpc2lvbkhlYWRlcnNIdG1sID0gW11cbiAgICAgICAgICAgIHN1YmRpdmlzaW9uSGVhZGVyc1RleHQgPSBbXVxuICAgICAgICAgICAgc3ViZGl2aXNpb25zLnB1c2goe1xuICAgICAgICAgICAgICBodG1sOiB7XG4gICAgICAgICAgICAgICAgYWxpbmVhczogc3ViZGl2aXNpb25BbGluZWFzSHRtbCxcbiAgICAgICAgICAgICAgICBoZWFkZXJzOiBzdWJkaXZpc2lvbkhlYWRlcnNIdG1sLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBpZDogXCJEX1wiICsgbmFtZUNvbXB1dGVkLFxuICAgICAgICAgICAgICBsZXZlbDogbGV2ZWwgKyAxLFxuICAgICAgICAgICAgICByZWxhdGl2ZUxldmVsOiBsZXZlbHMubGVuZ3RoLFxuICAgICAgICAgICAgICB0ZXh0OiB7XG4gICAgICAgICAgICAgICAgYWxpbmVhczogc3ViZGl2aXNpb25BbGluZWFzVGV4dCxcbiAgICAgICAgICAgICAgICBoZWFkZXJzOiBzdWJkaXZpc2lvbkhlYWRlcnNUZXh0LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9XG4gICAgICAgICAgbGluZUVsZW1lbnRzID0gW11cbiAgICAgICAgICBzdGF0ZSA9IFwicGFyYWdyYXBoQ2hpbGRcIlxuICAgICAgICB9XG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlIFwiZmlyc3RTdWJBbGluZWFFbGVtZW50XCI6XG4gICAgICAgIHN1YkFsaW5lYUVsZW1lbnQgPSBhbGluZWFFbGVtZW50IS5jaGlsZHJlblswXVxuICAgICAgICBpZiAoc3ViQWxpbmVhRWxlbWVudCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgLy8gTm8gc3ViLWFsaW5lYSBpbiBjdXJyZW50IGFsaW5lYTogZ28gdG8gbmV4dCBhbGluZWEuXG4gICAgICAgICAgc3RhdGUgPSBcIm5leHRBbGluZWFFbGVtZW50XCJcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzdGF0ZSA9IFwic3ViQWxpbmVhRWxlbWVudFwiXG4gICAgICAgIH1cbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgXCJuZXh0QWxpbmVhRWxlbWVudFwiOlxuICAgICAgICBhbGluZWFFbGVtZW50ID0gYWxpbmVhRWxlbWVudCEubmV4dEVsZW1lbnRTaWJsaW5nXG4gICAgICAgIGlmIChhbGluZWFFbGVtZW50ID09PSBudWxsKSB7XG4gICAgICAgICAgLy8gVGhlIGJvZHlDaGlsZCBoYXMgYmVlbiBmdWxseSBwYXJzZWQuIEdvIHRvIG5leHQgYm9keUNoaWxkXG4gICAgICAgICAgc3RhdGUgPSBcIm5leHRCb2R5Q2hpbGRcIlxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHN0YXRlID0gXCJhbGluZWFFbGVtZW50XCJcbiAgICAgICAgfVxuICAgICAgICBicmVha1xuICAgICAgY2FzZSBcIm5leHRCb2R5Q2hpbGRcIjpcbiAgICAgICAgaWYgKGJvZHlDaGlsZC5uZXh0RWxlbWVudFNpYmxpbmcgPT09IG51bGwpIHtcbiAgICAgICAgICAvLyBUaGUgZG9jdW1lbnQgaGFzIGJlZW4gZnVsbHkgcGFyc2VkLlxuICAgICAgICAgIHN0YXRlID0gbnVsbFxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGJvZHlDaGlsZCA9IGJvZHlDaGlsZC5uZXh0RWxlbWVudFNpYmxpbmdcbiAgICAgICAgICBpZiAoYm9keUNoaWxkLnRhZ05hbWUgPT09IFwiRElWXCIpIHtcbiAgICAgICAgICAgIHN0YXRlID0gXCJmaXJzdEFsaW5lYUVsZW1lbnRcIlxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyA8UC8+IGlzIGZvciBmb290bm90ZXNcbiAgICAgICAgICAgIGFzc2VydChcbiAgICAgICAgICAgICAgW1wiQlJcIiwgXCJIUlwiLCBcIlBcIl0uaW5jbHVkZXMoYm9keUNoaWxkLnRhZ05hbWUpLFxuICAgICAgICAgICAgICBgw5luZXhwZWN0ZWQgdGFnIG5hbWUgXCIke2JvZHlDaGlsZC50YWdOYW1lfVwiIGZvciBib2R5IGNoaWxkYCxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC8vIFN0YXkgaW4gdGhlIHNhbWUgc3RhdGUgdG8gZ28gdG8gbmV4dCBib2R5Q2hpbGQuXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlIFwibmV4dFBhcmFncmFwaENoaWxkXCI6XG4gICAgICAgIHBhcmFncmFwaENoaWxkID0gcGFyYWdyYXBoQ2hpbGQhLm5leHRFbGVtZW50U2libGluZ1xuICAgICAgICBpZiAocGFyYWdyYXBoQ2hpbGQgPT09IG51bGwpIHtcbiAgICAgICAgICAvLyBUaGUgcGFyYWdyYXBoIGVsZW1lbnQgaGFzIGJlZW4gZnVsbHkgcGFyc2VkLiBHbyB0byBuZXh0IHBhcmVudCBlbGVtZW50LlxuICAgICAgICAgIGNvbnN0IGxpbmVUZXh0ID0gbGluZUVsZW1lbnRzIVxuICAgICAgICAgICAgLm1hcCgoZWxlbWVudCkgPT4gZWxlbWVudC50ZXh0Q29udGVudClcbiAgICAgICAgICAgIC5qb2luKFwiXCIpXG4gICAgICAgICAgICAudHJpbSgpXG4gICAgICAgICAgaWYgKGxpbmVUZXh0KSB7XG4gICAgICAgICAgICBjb25zdCBsaW5lSHRtbCA9IGxpbmVFbGVtZW50cyFcbiAgICAgICAgICAgICAgLm1hcCgoZWxlbWVudCkgPT4gZWxlbWVudC5vdXRlckhUTUwpXG4gICAgICAgICAgICAgIC5qb2luKFwiXCIpXG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgIHN1YmRpdmlzaW9uSGVhZGVyc1RleHQhLmxlbmd0aCA9PT0gMCB8fFxuICAgICAgICAgICAgICAoaXNNdWx0aUxpbmVzSGVhZGVyICYmIHN1YmRpdmlzaW9uQWxpbmVhc1RleHQhLmxlbmd0aCA9PT0gMClcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICBzdWJkaXZpc2lvbkhlYWRlcnNIdG1sIS5wdXNoKGxpbmVIdG1sKVxuICAgICAgICAgICAgICBzdWJkaXZpc2lvbkhlYWRlcnNUZXh0IS5wdXNoKGxpbmVUZXh0KVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgc3ViZGl2aXNpb25BbGluZWFzSHRtbCEucHVzaChsaW5lSHRtbClcbiAgICAgICAgICAgICAgc3ViZGl2aXNpb25BbGluZWFzVGV4dCEucHVzaChsaW5lVGV4dClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGlzTXVsdGlMaW5lc0hlYWRlciAmJiBzdWJkaXZpc2lvbkhlYWRlcnNUZXh0IS5sZW5ndGggPj0gMikge1xuICAgICAgICAgICAgaXNNdWx0aUxpbmVzSGVhZGVyID0gZmFsc2VcbiAgICAgICAgICB9XG4gICAgICAgICAgbGluZUVsZW1lbnRzID0gbnVsbFxuICAgICAgICAgIHN0YXRlID0gbmV4dFBhcmVudFN0YXRlXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc3RhdGUgPSBcInBhcmFncmFwaENoaWxkXCJcbiAgICAgICAgfVxuICAgICAgICBicmVha1xuICAgICAgY2FzZSBcIm5leHRTdWJBbGluZWFFbGVtZW50XCI6XG4gICAgICAgIHN1YkFsaW5lYUVsZW1lbnQgPSBzdWJBbGluZWFFbGVtZW50IS5uZXh0RWxlbWVudFNpYmxpbmdcbiAgICAgICAgaWYgKHN1YkFsaW5lYUVsZW1lbnQgPT09IG51bGwpIHtcbiAgICAgICAgICAvLyBUaGUgYWxpbmVhRWxlbWVudCBoYXMgYmVlbiBmdWxseSBwYXJzZWQuIEdvIHRvIG5leHQgYWxpbmVhRWxlbWVudC5cbiAgICAgICAgICBzdGF0ZSA9IFwibmV4dEFsaW5lYUVsZW1lbnRcIlxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHN0YXRlID0gXCJzdWJBbGluZWFFbGVtZW50XCJcbiAgICAgICAgfVxuICAgICAgICBicmVha1xuICAgICAgY2FzZSBcInBhcmFncmFwaENoaWxkXCI6XG4gICAgICAgIHN3aXRjaCAocGFyYWdyYXBoQ2hpbGQhLnRhZ05hbWUpIHtcbiAgICAgICAgICBjYXNlIFwiQVwiOiB7XG4gICAgICAgICAgICBsaW5lRWxlbWVudHMhLnB1c2gocGFyYWdyYXBoQ2hpbGQhKVxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG4gICAgICAgICAgY2FzZSBcIkJSXCI6IHtcbiAgICAgICAgICAgIGNvbnN0IGxpbmVUZXh0ID0gbGluZUVsZW1lbnRzIVxuICAgICAgICAgICAgICAubWFwKChlbGVtZW50KSA9PiBlbGVtZW50LnRleHRDb250ZW50KVxuICAgICAgICAgICAgICAuam9pbihcIlwiKVxuICAgICAgICAgICAgICAudHJpbSgpXG4gICAgICAgICAgICBpZiAobGluZVRleHQpIHtcbiAgICAgICAgICAgICAgY29uc3QgbGluZUh0bWwgPSBsaW5lRWxlbWVudHMhXG4gICAgICAgICAgICAgICAgLm1hcCgoZWxlbWVudCkgPT4gZWxlbWVudC5vdXRlckhUTUwpXG4gICAgICAgICAgICAgICAgLmpvaW4oXCJcIilcbiAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIHN1YmRpdmlzaW9uSGVhZGVyc1RleHQhLmxlbmd0aCA9PT0gMCB8fFxuICAgICAgICAgICAgICAgIChpc011bHRpTGluZXNIZWFkZXIgJiYgc3ViZGl2aXNpb25BbGluZWFzVGV4dCEubGVuZ3RoID09PSAwKVxuICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICBzdWJkaXZpc2lvbkhlYWRlcnNIdG1sIS5wdXNoKGxpbmVIdG1sKVxuICAgICAgICAgICAgICAgIHN1YmRpdmlzaW9uSGVhZGVyc1RleHQhLnB1c2gobGluZVRleHQpXG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgc3ViZGl2aXNpb25BbGluZWFzSHRtbCEucHVzaChsaW5lSHRtbClcbiAgICAgICAgICAgICAgICBzdWJkaXZpc2lvbkFsaW5lYXNUZXh0IS5wdXNoKGxpbmVUZXh0KVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsaW5lRWxlbWVudHMgPSBbXVxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG4gICAgICAgICAgY2FzZSBcIkRFTFwiOiB7XG4gICAgICAgICAgICBsaW5lRWxlbWVudHMhLnB1c2gocGFyYWdyYXBoQ2hpbGQhKVxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG4gICAgICAgICAgY2FzZSBcIklNR1wiOiB7XG4gICAgICAgICAgICBsaW5lRWxlbWVudHMhLnB1c2gocGFyYWdyYXBoQ2hpbGQhKVxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG4gICAgICAgICAgY2FzZSBcIlNQQU5cIjoge1xuICAgICAgICAgICAgY29uc3QgY2xhc3NOYW1lID0gcGFyYWdyYXBoQ2hpbGQhLmdldEF0dHJpYnV0ZShcImNsYXNzXCIpXG4gICAgICAgICAgICBzd2l0Y2ggKGNsYXNzTmFtZSkge1xuICAgICAgICAgICAgICBjYXNlIFwiYUVsb2lQYXN0aWxsZVwiOiB7XG4gICAgICAgICAgICAgICAgLy8gU2tpcCBwYXN0aWxsw6kgU1BBTi5cbiAgICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGNhc2UgXCJhRWxvaVBhc3RpbGxlMFwiOiB7XG4gICAgICAgICAgICAgICAgLy8gU2tpcCBwYXN0aWxsw6kgU1BBTi5cbiAgICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgbGluZUVsZW1lbnRzIS5wdXNoKHBhcmFncmFwaENoaWxkISlcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICBlcnJvcjoge1xuICAgICAgICAgICAgICAgIGNvZGU6IC0zLFxuICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGBVbmV4cGVjdGVkIHRhZyBuYW1lIGZvciBwYXJhZ3JhcGggY2hpbGQ6ICR7XG4gICAgICAgICAgICAgICAgICBwYXJhZ3JhcGhDaGlsZCEudGFnTmFtZVxuICAgICAgICAgICAgICAgIH1gLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBodG1sLFxuICAgICAgICAgICAgICBwYWdlLFxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHN0YXRlID0gXCJuZXh0UGFyYWdyYXBoQ2hpbGRcIlxuICAgICAgICBicmVha1xuICAgICAgY2FzZSBcInN1YkFsaW5lYUVsZW1lbnRcIjpcbiAgICAgICAgc3dpdGNoIChzdWJBbGluZWFFbGVtZW50IS50YWdOYW1lKSB7XG4gICAgICAgICAgY2FzZSBcIlBcIjpcbiAgICAgICAgICAgIG5leHRQYXJlbnRTdGF0ZSA9IFwibmV4dFN1YkFsaW5lYUVsZW1lbnRcIlxuICAgICAgICAgICAgcGFyYWdyYXBoRWxlbWVudCA9IHN1YkFsaW5lYUVsZW1lbnRcbiAgICAgICAgICAgIHN0YXRlID0gXCJmaXJzdFBhcmFncmFwaENoaWxkXCJcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgY2FzZSBcIlRBQkxFXCI6XG4gICAgICAgICAgICAvLyBUT0RPXG4gICAgICAgICAgICBzdGF0ZSA9IFwibmV4dFN1YkFsaW5lYUVsZW1lbnRcIlxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgZXJyb3I6IHtcbiAgICAgICAgICAgICAgICBjb2RlOiAtNCxcbiAgICAgICAgICAgICAgICBtZXNzYWdlOiBgVW5leHBlY3RlZCB0YWcgbmFtZSBmb3Igc3ViIGFsaW5lYSBlbGVtZW50OiAke1xuICAgICAgICAgICAgICAgICAgc3ViQWxpbmVhRWxlbWVudCEudGFnTmFtZVxuICAgICAgICAgICAgICAgIH1gLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBodG1sLFxuICAgICAgICAgICAgICBwYWdlLFxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGJyZWFrXG4gICAgICAgIHN0YXRlID0gXCJuZXh0U3ViQWxpbmVhRWxlbWVudFwiXG4gICAgICAgIGJyZWFrXG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBgVW5leHBlY3RlZCBzdGF0ZTogJHtzdGF0ZX1gXG4gICAgfVxuICB9XG5cbiAgd2luZG93LmNsb3NlKCkgLy8gRnJlZSBtZW1vcnkuXG5cbiAgcmV0dXJuIHtcbiAgICBlcnJvcjogbnVsbCxcbiAgICBodG1sLFxuICAgIHBhZ2UsXG4gICAgc3ViZGl2aXNpb25zLFxuICAgIHVybDogYXNzZW1ibGVlVXJsLFxuICB9XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZXRyaWV2ZVRleHRlTG9pUGFyc2VkKFxuICBmZXRjaDogKFxuICAgIHVybDogc3RyaW5nIHwgUmVxdWVzdCxcbiAgICBpbml0PzogUmVxdWVzdEluaXQgfCB1bmRlZmluZWQsXG4gICkgPT4gUHJvbWlzZTxSZXNwb25zZT4sXG4gIGFzc2VtYmxlZVVybDogc3RyaW5nLFxuKSB7XG4gIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2goYXNzZW1ibGVlVXJsKVxuICBjb25zdCBwYWdlID0gYXdhaXQgcmVzcG9uc2UudGV4dCgpXG4gIGlmICghcmVzcG9uc2Uub2spIHtcbiAgICByZXR1cm4ge1xuICAgICAgZXJyb3I6IHsgY29kZTogcmVzcG9uc2Uuc3RhdHVzLCBtZXNzYWdlOiByZXNwb25zZS5zdGF0dXNUZXh0IH0sXG4gICAgICBwYWdlLFxuICAgIH1cbiAgfVxuICByZXR1cm4gcGFyc2VUZXh0ZUxvaShhc3NlbWJsZWVVcmwsIHBhZ2UpXG59XG4iXX0=
563
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wYXJzZXJzL2RvY3VtZW50cy50cyJdLCJuYW1lcyI6WyJwYXJzZVRleHRlTG9pIiwiYXNzZW1ibGVlVXJsIiwicGFnZSIsInBhZ2VTZWdtZW50cyIsInNwbGl0IiwiYXNzZXJ0Iiwic3RyaWN0RXF1YWwiLCJsZW5ndGgiLCJodG1sIiwidHJpbSIsInN0YXJ0c1dpdGgiLCJlbmRzV2l0aCIsInN1YnN0cmluZyIsIkpTRE9NIiwid2luZG93IiwiZG9jdW1lbnQiLCJjaGlsZHJlbiIsImh0bWxFbGVtZW50IiwiYm9keUVsZW1lbnQiLCJkaXZFbGVtZW50IiwidGFnTmFtZSIsIm5ld0RpdkVsZW1lbnQiLCJpbnNlcnRCZWZvcmUiLCJjcmVhdGVFbGVtZW50IiwiZGl2Q2hpbGQiLCJnZXRBdHRyaWJ1dGUiLCJhcHBlbmRDaGlsZCIsImNsb3NlIiwiZXJyb3IiLCJjb2RlIiwibWVzc2FnZSIsImJvZHlDaGlsZCIsImFsaW5lYUVsZW1lbnQiLCJpc011bHRpTGluZXNIZWFkZXIiLCJsZXZlbCIsImxldmVscyIsImxpbmVFbGVtZW50cyIsIm5leHRQYXJlbnRTdGF0ZSIsInBhcmFncmFwaENoaWxkIiwicGFyYWdyYXBoRWxlbWVudCIsInN0YXRlIiwic3ViQWxpbmVhRWxlbWVudCIsInN1YmRpdmlzaW9ucyIsInN1YmRpdmlzaW9uQWxpbmVhc0h0bWwiLCJzdWJkaXZpc2lvbkFsaW5lYXNUZXh0Iiwic3ViZGl2aXNpb25IZWFkZXJzSHRtbCIsInN1YmRpdmlzaW9uSGVhZGVyc1RleHQiLCJ1bmRlZmluZWQiLCJoZWFkZXJUZXh0IiwidGV4dENvbnRlbnQiLCJuYW1lQ29tcHV0ZWQiLCJub3JtYWxpemUiLCJyZXBsYWNlIiwibmFtZVVwcGVyIiwidG9VcHBlckNhc2UiLCJuZXh0TGV2ZWwiLCJtYXRjaCIsImNvbnNvbGUiLCJsb2ciLCJwb3AiLCJwdXNoIiwiYWxpbmVhcyIsImhlYWRlcnMiLCJpZCIsInJlbGF0aXZlTGV2ZWwiLCJ0ZXh0IiwibmV4dEVsZW1lbnRTaWJsaW5nIiwiaW5jbHVkZXMiLCJsaW5lVGV4dCIsIm1hcCIsImVsZW1lbnQiLCJqb2luIiwibGluZUh0bWwiLCJvdXRlckhUTUwiLCJjbGFzc05hbWUiLCJ1cmwiLCJyZXRyaWV2ZVRleHRlTG9pUGFyc2VkIiwiZmV0Y2giLCJyZXNwb25zZSIsIm9rIiwic3RhdHVzIiwic3RhdHVzVGV4dCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBOztBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVPLFNBQVNBLGFBQVQsQ0FBdUJDLFlBQXZCLEVBQTZDQyxJQUE3QyxFQUEyRDtBQUNoRTtBQUNBLE1BQU1DLFlBQVksR0FBR0QsSUFBSSxDQUFDRSxLQUFMLENBQVcsVUFBWCxDQUFyQjs7QUFDQUMscUJBQU9DLFdBQVAsQ0FBbUJILFlBQVksQ0FBQ0ksTUFBaEMsRUFBd0MsQ0FBeEMsRUFBMkNMLElBQTNDOztBQUNBLE1BQUlNLElBQUksR0FBR0wsWUFBWSxDQUFDLENBQUQsQ0FBWixDQUFnQk0sSUFBaEIsRUFBWDtBQUNBLDBCQUFPRCxJQUFJLENBQUNFLFVBQUwsQ0FBZ0IsTUFBaEIsQ0FBUDtBQUNBLDBCQUFPRixJQUFJLENBQUNHLFFBQUwsQ0FBYyxRQUFkLENBQVA7QUFDQUgsRUFBQUEsSUFBSSxrQkFBV0EsSUFBSSxDQUFDSSxTQUFMLENBQWUsQ0FBZixFQUFrQkosSUFBSSxDQUFDRCxNQUFMLEdBQWMsQ0FBaEMsQ0FBWCxZQUFKLENBUGdFLENBU2hFOztBQUNBLGVBQW1CLElBQUlNLFlBQUosQ0FBVUwsSUFBVixDQUFuQjtBQUFBLE1BQVFNLE1BQVIsVUFBUUEsTUFBUjs7QUFDQSxNQUFRQyxRQUFSLEdBQXFCRCxNQUFyQixDQUFRQyxRQUFSOztBQUNBVixxQkFBT0MsV0FBUCxDQUFtQlMsUUFBUSxDQUFDQyxRQUFULENBQWtCVCxNQUFyQyxFQUE2QyxDQUE3Qzs7QUFDQSxNQUFNVSxXQUFXLEdB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UUxOLGNBQUFBLElBQUksRUFBSkE7QUFSSyxhQUFQO0FBWEo7O0FBc0JBO0FBQ0FzQyxRQUFBQSxLQUFLLEdBQUcsc0JBQVI7QUFDQTs7QUFDRjtBQUNFLDBDQUEyQkEsS0FBM0I7QUE1VUo7QUE4VUQ7O0FBRUQxQixFQUFBQSxNQUFNLENBQUNhLEtBQVAsR0E5WWdFLENBOFlqRDs7QUFFZixTQUFPO0FBQ0xDLElBQUFBLEtBQUssRUFBRSxJQURGO0FBRUxwQixJQUFBQSxJQUFJLEVBQUpBLElBRks7QUFHTE4sSUFBQUEsSUFBSSxFQUFKQSxJQUhLO0FBSUx3QyxJQUFBQSxZQUFZLEVBQVpBLFlBSks7QUFLTGlDLElBQUFBLEdBQUcsRUFBRTFFO0FBTEEsR0FBUDtBQU9EOztTQUVxQjJFLHNCOzs7OztvRkFBZixpQkFDTEMsS0FESyxFQUtMNUUsWUFMSztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLG1CQU9rQjRFLEtBQUssQ0FBQzVFLFlBQUQsQ0FQdkI7O0FBQUE7QUFPQzZFLFlBQUFBLFFBUEQ7QUFBQTtBQUFBLG1CQVFjQSxRQUFRLENBQUNiLElBQVQsRUFSZDs7QUFBQTtBQVFDL0QsWUFBQUEsSUFSRDs7QUFBQSxnQkFTQTRFLFFBQVEsQ0FBQ0MsRUFUVDtBQUFBO0FBQUE7QUFBQTs7QUFBQSw2Q0FVSTtBQUNMbkQsY0FBQUEsS0FBSyxFQUFFO0FBQUVDLGdCQUFBQSxJQUFJLEVBQUVpRCxRQUFRLENBQUNFLE1BQWpCO0FBQXlCbEQsZ0JBQUFBLE9BQU8sRUFBRWdELFFBQVEsQ0FBQ0c7QUFBM0MsZUFERjtBQUVML0UsY0FBQUEsSUFBSSxFQUFKQTtBQUZLLGFBVko7O0FBQUE7QUFBQSw2Q0FlRUYsYUFBYSxDQUFDQyxZQUFELEVBQWVDLElBQWYsQ0FmZjs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxHIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGFzc2VydCBmcm9tIFwiYXNzZXJ0XCJcbmltcG9ydCB7IEpTRE9NIH0gZnJvbSBcImpzZG9tXCJcblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlVGV4dGVMb2koYXNzZW1ibGVlVXJsOiBzdHJpbmcsIHBhZ2U6IHN0cmluZykge1xuICAvLyBSZXBhaXIgSFRNTC5cbiAgY29uc3QgcGFnZVNlZ21lbnRzID0gcGFnZS5zcGxpdChcIjwvc3R5bGU+XCIpXG4gIGFzc2VydC5zdHJpY3RFcXVhbChwYWdlU2VnbWVudHMubGVuZ3RoLCAyLCBwYWdlKVxuICBsZXQgaHRtbCA9IHBhZ2VTZWdtZW50c1sxXS50cmltKClcbiAgYXNzZXJ0KGh0bWwuc3RhcnRzV2l0aChcIjxkaXZcIikpXG4gIGFzc2VydChodG1sLmVuZHNXaXRoKFwiPC9kaXY+XCIpKVxuICBodG1sID0gYDxodG1sJHtodG1sLnN1YnN0cmluZyg0LCBodG1sLmxlbmd0aCAtIDYpfTwvaHRtbD5gXG5cbiAgLy8gRXh0cmFjdCBzdWJkaXZpc2lvbnMgZnJvbSBIVE1MLlxuICBjb25zdCB7IHdpbmRvdyB9ID0gbmV3IEpTRE9NKGh0bWwpXG4gIGNvbnN0IHsgZG9jdW1lbnQgfSA9IHdpbmRvd1xuICBhc3NlcnQuc3RyaWN0RXF1YWwoZG9jdW1lbnQuY2hpbGRyZW4ubGVuZ3RoLCAxKVxuICBjb25zdCBodG1sRWxlbWVudCA9IGRvY3VtZW50LmNoaWxkcmVuWzBdXG4gIGFzc2VydC5zdHJpY3RFcXVhbChodG1sRWxlbWVudC5jaGlsZHJlbi5sZW5ndGgsIDIpXG4gIGNvbnN0IGJvZHlFbGVtZW50ID0gaHRtbEVsZW1lbnQuY2hpbGRyZW5bMV1cbiAgaWYgKGFzc2VtYmxlZVVybCA9PT0gXCJodHRwOi8vd3d3LmFzc2VtYmxlZS1uYXRpb25hbGUuZnIvMTUvdGV4dGVzLzA2NzUuYXNwXCIpIHtcbiAgICAvLyBSZXBhaXIgZG9jdW1lbnQuXG4gICAgYXNzZXJ0LnN0cmljdEVxdWFsKGJvZHlFbGVtZW50LmNoaWxkcmVuLmxlbmd0aCwgMSlcbiAgICBjb25zdCBkaXZFbGVtZW50ID0gYm9keUVsZW1lbnQuY2hpbGRyZW5bMF1cbiAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZGl2RWxlbWVudC50YWdOYW1lLCBcIkRJVlwiKVxuICAgIGNvbnN0IG5ld0RpdkVsZW1lbnQgPSBib2R5RWxlbWVudC5pbnNlcnRCZWZvcmUoXG4gICAgICBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpLFxuICAgICAgZGl2RWxlbWVudCxcbiAgICApXG4gICAgYm9keUVsZW1lbnQuaW5zZXJ0QmVmb3JlKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJiclwiKSwgZGl2RWxlbWVudClcbiAgICBmb3IgKGNvbnN0IGRpdkNoaWxkIG9mIFsuLi5kaXZFbGVtZW50LmNoaWxkcmVuXSkge1xuICAgICAgaWYgKGRpdkNoaWxkLmdldEF0dHJpYnV0ZShcImNsYXNzXCIpID09PSBcImE5QXJ0aWNsZU51bVwiKSB7XG4gICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgICBuZXdEaXZFbGVtZW50LmFwcGVuZENoaWxkKGRpdkNoaWxkKVxuICAgIH1cbiAgfVxuICBpZiAoYm9keUVsZW1lbnQuY2hpbGRyZW4ubGVuZ3RoIDwgMykge1xuICAgIC8vIE9jY3VycyBpbiBodHRwOi8vd3d3LmFzc2VtYmxlZS1uYXRpb25hbGUuZnIvMTUvdGV4dGVzLzAzMjYuYXNwLlxuICAgIHdpbmRvdy5jbG9zZSgpIC8vIEZyZWUgbWVtb3J5LlxuICAgIHJldHVybiB7XG4gICAgICBlcnJvcjogeyBjb2RlOiAtMSwgbWVzc2FnZTogXCJUZXh0ZSBkZSBsb2kgc2FucyBjb250ZW51XCIgfSxcbiAgICAgIGh0bWwsXG4gICAgICBwYWdlLFxuICAgIH1cbiAgfVxuICBhc3NlcnQuc3RyaWN0RXF1YWwoYm9keUVsZW1lbnQuY2hpbGRyZW5bMF0udGFnTmFtZSwgXCJESVZcIilcbiAgLy8gRmlyc3QgY2hpbGQgaXMgYSBESVYgZGVzY3JpYmluZyB0aGUgZG9jdW1lbnQgKEFzc2VtYmzDqWUncyBoZWFkZXIpLiBTa2lwIGl0IGZvciBub3cuXG4gIGxldCBib2R5Q2hpbGQgPSBib2R5RWxlbWVudC5jaGlsZHJlblsxXVxuICBhc3NlcnQuc3RyaWN0RXF1YWwoYm9keUNoaWxkLnRhZ05hbWUsIFwiQlJcIilcbiAgbGV0IGFsaW5lYUVsZW1lbnQ6IEVsZW1lbnQgfCBudWxsID0gbnVsbFxuICBsZXQgaXNNdWx0aUxpbmVzSGVhZGVyOiBib29sZWFuID0gZmFsc2VcbiAgbGV0IGxldmVsOiBudW1iZXIgfCBudWxsID0gbnVsbFxuICBsZXQgbGV2ZWxzOiBudW1iZXJbXSA9IFtdXG4gIGxldCBsaW5lRWxlbWVudHM6IEVsZW1lbnRbXSB8IG51bGwgPSBudWxsXG4gIGxldCBuZXh0UGFyZW50U3RhdGUgPSBudWxsXG4gIGxldCBwYXJhZ3JhcGhDaGlsZDogRWxlbWVudCB8IG51bGwgPSBudWxsXG4gIGxldCBwYXJhZ3JhcGhFbGVtZW50OiBFbGVtZW50IHwgbnVsbCA9IG51bGxcbiAgbGV0IHN0YXRlOiBzdHJpbmcgfCBudWxsID0gXCJuZXh0Qm9keUNoaWxkXCJcbiAgbGV0IHN1YkFsaW5lYUVsZW1lbnQ6IEVsZW1lbnQgfCBudWxsID0gbnVsbFxuICBjb25zdCBzdWJkaXZpc2lvbnMgPSBbXVxuICBsZXQgc3ViZGl2aXNpb25BbGluZWFzSHRtbDogc3RyaW5nW10gfCBudWxsID0gbnVsbFxuICBsZXQgc3ViZGl2aXNpb25BbGluZWFzVGV4dDogc3RyaW5nW10gfCBudWxsID0gbnVsbFxuICBsZXQgc3ViZGl2aXNpb25IZWFkZXJzSHRtbDogc3RyaW5nW10gfCBudWxsID0gbnVsbFxuICBsZXQgc3ViZGl2aXNpb25IZWFkZXJzVGV4dDogc3RyaW5nW10gfCBudWxsID0gbnVsbFxuICB3aGlsZSAoc3RhdGUgIT09IG51bGwpIHtcbiAgICBzd2l0Y2ggKHN0YXRlKSB7XG4gICAgICBjYXNlIFwiYWxpbmVhRWxlbWVudFwiOlxuICAgICAgICBzd2l0Y2ggKGFsaW5lYUVsZW1lbnQhLnRhZ05hbWUpIHtcbiAgICAgICAgICBjYXNlIFwiRElWXCI6XG4gICAgICAgICAgICBzdGF0ZSA9IFwiZmlyc3RTdWJBbGluZWFFbGVtZW50XCJcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgY2FzZSBcIkg0XCI6XG4gICAgICAgICAgICAvLyBUT0RPXG4gICAgICAgICAgICBuZXh0UGFyZW50U3RhdGUgPSBcIm5leHRBbGluZWFFbGVtZW50XCJcbiAgICAgICAgICAgIHBhcmFncmFwaEVsZW1lbnQgPSBhbGluZWFFbGVtZW50XG4gICAgICAgICAgICBzdGF0ZSA9IFwiZmlyc3RQYXJhZ3JhcGhDaGlsZFwiXG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIGNhc2UgXCJQXCI6XG4gICAgICAgICAgICBuZXh0UGFyZW50U3RhdGUgPSBcIm5leHRBbGluZWFFbGVtZW50XCJcbiAgICAgICAgICAgIHBhcmFncmFwaEVsZW1lbnQgPSBhbGluZWFFbGVtZW50XG4gICAgICAgICAgICBzdGF0ZSA9IFwiZmlyc3RQYXJhZ3JhcGhDaGlsZFwiXG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIGNhc2UgXCJPTFwiOlxuICAgICAgICAgICAgLy8gVE9ET1xuICAgICAgICAgICAgc3RhdGUgPSBcIm5leHRBbGluZWFFbGVtZW50XCJcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgY2FzZSBcIlRBQkxFXCI6XG4gICAgICAgICAgICAvLyBUT0RPXG4gICAgICAgICAgICBzdGF0ZSA9IFwibmV4dEFsaW5lYUVsZW1lbnRcIlxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgZXJyb3I6IHtcbiAgICAgICAgICAgICAgICBjb2RlOiAtMixcbiAgICAgICAgICAgICAgICBtZXNzYWdlOiBgVW5leHBlY3RlZCB0YWcgbmFtZSBmb3IgYWxpbmVhIGVsZW1lbnQ6ICR7XG4gICAgICAgICAgICAgICAgICBhbGluZWFFbGVtZW50IS50YWdOYW1lXG4gICAgICAgICAgICAgICAgfWAsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIGh0bWwsXG4gICAgICAgICAgICAgIHBhZ2UsXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgXCJmaXJzdEFsaW5lYUVsZW1lbnRcIjpcbiAgICAgICAgYWxpbmVhRWxlbWVudCA9IGJvZHlDaGlsZC5jaGlsZHJlblswXVxuICAgICAgICBpZiAoYWxpbmVhRWxlbWVudCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgLy8gTm8gYWxpbmVhIGluIGN1cnJlbnQgYm9keUNoaWxkOiBnbyB0byBuZXh0IGJvZHlDaGlsZC5cbiAgICAgICAgICBzdGF0ZSA9IFwibmV4dEJvZHlDaGlsZFwiXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc3RhdGUgPSBcImFsaW5lYUVsZW1lbnRcIlxuICAgICAgICB9XG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlIFwiZmlyc3RQYXJhZ3JhcGhDaGlsZFwiOlxuICAgICAgICBwYXJhZ3JhcGhDaGlsZCA9IHBhcmFncmFwaEVsZW1lbnQhLmNoaWxkcmVuWzBdXG4gICAgICAgIGlmIChwYXJhZ3JhcGhDaGlsZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgLy8gTm8gY2hpbGQgaW4gY3VycmVudCBwYXJhZ3JhcGg6IGdvIHRvIG5leHQgcGFyZW50IGVsZW1lbnQuXG4gICAgICAgICAgc3RhdGUgPSBuZXh0UGFyZW50U3RhdGVcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zdCBoZWFkZXJUZXh0ID0gcGFyYWdyYXBoRWxlbWVudCEudGV4dENvbnRlbnRcbiAgICAgICAgICBjb25zdCBuYW1lQ29tcHV0ZWQgPSAoaGVhZGVyVGV4dCB8fCBcIlwiKVxuICAgICAgICAgICAgLm5vcm1hbGl6ZShcIk5GRFwiKVxuICAgICAgICAgICAgLnJlcGxhY2UoL1tcXHUwMzAwLVxcdTAzNmZdL2csIFwiXCIpXG4gICAgICAgICAgICAucmVwbGFjZSgvXFwobm91dmVhdVxcKS8sIFwiXCIpXG4gICAgICAgICAgICAucmVwbGFjZSgvXFwoUG91ciBjb29yZGluYXRpb25cXCkvLCBcIlwiKVxuICAgICAgICAgICAgLnJlcGxhY2UoL1xcKFN1cHByaW3DqXM/XFwpLywgXCJcIilcbiAgICAgICAgICAgIC5yZXBsYWNlKC/CoC9nLCBcIiBcIilcbiAgICAgICAgICAgIC5yZXBsYWNlKC9bXFwtLC7igKZdL2csIFwiXCIpXG4gICAgICAgICAgICAudHJpbSgpXG4gICAgICAgICAgICAucmVwbGFjZSgvIHsxLH0vZywgXCJfXCIpXG4gICAgICAgICAgY29uc3QgbmFtZVVwcGVyID0gbmFtZUNvbXB1dGVkLnRvVXBwZXJDYXNlKClcbiAgICAgICAgICBpZiAobmFtZVVwcGVyID09PSBcIlwiKSB7XG4gICAgICAgICAgICAvLyBPY2N1cnMgaW46XG4gICAgICAgICAgICAvLyAqIGh0dHA6Ly93d3cuYXNzZW1ibGVlLW5hdGlvbmFsZS5mci8xNS90ZXh0ZXMvMDQ0NS5hc3BcbiAgICAgICAgICAgIC8vICogaHR0cDovL3d3dy5hc3NlbWJsZWUtbmF0aW9uYWxlLmZyLzE1L3RleHRlcy8wNjI2LmFzcFxuICAgICAgICAgICAgLy8gU2tpcCBwYXJhZ3JhcGguXG4gICAgICAgICAgICBzdGF0ZSA9IG5leHRQYXJlbnRTdGF0ZVxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgbmV4dExldmVsID1cbiAgICAgICAgICAgIG5hbWVVcHBlci5tYXRjaCgvXihSQVBQT1JUXyk/QU5ORVhFKF98JCkvKSAhPT0gbnVsbCB8fFxuICAgICAgICAgICAgbmFtZVVwcGVyLm1hdGNoKC9eRVRBVF8vKSAhPT0gbnVsbFxuICAgICAgICAgICAgICA/IDBcbiAgICAgICAgICAgICAgOiBuYW1lVXBwZXIubWF0Y2goL15UT01FXy8pICE9PSBudWxsXG4gICAgICAgICAgICAgID8gMVxuICAgICAgICAgICAgICA6IG5hbWVVcHBlci5tYXRjaCgvXlBBUlRJRV8vKSAhPT0gbnVsbCB8fFxuICAgICAgICAgICAgICAgIG5hbWVVcHBlci5tYXRjaChcbiAgICAgICAgICAgICAgICAgIC9eKFBSRU1JRVJFfFNFQ09OREV8REVVWElFTUV8VFJPSVNJRU1FfFFVQVRSSUVNRSlfUEFSVElFKF98JCkvLFxuICAgICAgICAgICAgICAgICkgIT09IG51bGxcbiAgICAgICAgICAgICAgPyAyXG4gICAgICAgICAgICAgIDogbmFtZVVwcGVyLm1hdGNoKC9eTElWUkVfLykgIT09IG51bGxcbiAgICAgICAgICAgICAgPyAzXG4gICAgICAgICAgICAgIDogbmFtZVVwcGVyLm1hdGNoKC9eVElUUkVfLykgIT09IG51bGxcbiAgICAgICAgICAgICAgPyA0XG4gICAgICAgICAgICAgIDogbmFtZVVwcGVyLm1hdGNoKC9eU09VU1RJVFJFXy8pICE9PSBudWxsXG4gICAgICAgICAgICAgID8gNVxuICAgICAgICAgICAgICA6IG5hbWVVcHBlci5tYXRjaCgvXkNIQVBJVFJFXy8pICE9PSBudWxsXG4gICAgICAgICAgICAgID8gNlxuICAgICAgICAgICAgICA6IG5hbWVVcHBlci5tYXRjaCgvXlNFQ1RJT05fLykgIT09IG51bGxcbiAgICAgICAgICAgICAgPyA3XG4gICAgICAgICAgICAgIDogbmFtZVVwcGVyLm1hdGNoKC9eU09VU1NFQ1RJT05fLykgIT09IG51bGxcbiAgICAgICAgICAgICAgPyA4XG4gICAgICAgICAgICAgIDogbmFtZVVwcGVyLm1hdGNoKC9eQVJUSUNMRVM/Xy8pICE9PSBudWxsIHx8XG4gICAgICAgICAgICAgICAgLy8gXCJFeHBvc8OpIGRlcyBtb3RpZnNcIiBtdXN0IGJlIGF0IHRoZSBzYW1lIGxldmVsIGFzIGFydGljbGUuXG4gICAgICAgICAgICAgICAgLy8gXCJFeHBvc8OpIGRlcyBtb3RpZnNcIiB3aXRob3V0IGNvbnRlbnQ6XG4gICAgICAgICAgICAgICAgLy8gKiBodHRwOi8vd3d3LmFzc2VtYmxlZS1uYXRpb25hbGUuZnIvMTUvdGV4dGVzLzA3MDIuYXNwXG4gICAgICAgICAgICAgICAgLy8gXCJFeHBvc8OpIGRlcyBtb3RpZnNcIiB3aXRoIGNvbnRlbnQ6XG4gICAgICAgICAgICAgICAgLy8gKiBodHRwOi8vd3d3LmFzc2VtYmxlZS1uYXRpb25hbGUuZnIvMTUvdGV4dGVzLzEzMjYuYXNwXG4gICAgICAgICAgICAgICAgLy8gKiBodHRwOi8vd3d3LmFzc2VtYmxlZS1uYXRpb25hbGUuZnIvMTUvdGV4dGVzLzE2MTAuYXNwXG4gICAgICAgICAgICAgICAgbmFtZVVwcGVyLm1hdGNoKC9eRVhQT1NFX0RFU19NT1RJRlMkLykgIT09IG51bGxcbiAgICAgICAgICAgICAgPyA5XG4gICAgICAgICAgICAgIDogbnVsbFxuICAgICAgICAgIGlmIChuZXh0TGV2ZWwgPT09IG51bGwgJiYgc3ViZGl2aXNpb25zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgaWYgKG5hbWVVcHBlci5tYXRjaCgvXihQUk9KRVR8UFJPUE9TSVRJT04pX0RFX0xPSShffCQpLykgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgLy8gT2NjdXJzIGluOlxuICAgICAgICAgICAgICAvLyAqIGh0dHA6Ly93d3cuYXNzZW1ibGVlLW5hdGlvbmFsZS5mci8xNS90ZXh0ZXMvMDIzMi5hc3BcbiAgICAgICAgICAgICAgLy8gKiBodHRwOi8vd3d3LmFzc2VtYmxlZS1uYXRpb25hbGUuZnIvMTUvdGV4dGVzLzA2MjYuYXNwXG4gICAgICAgICAgICAgIC8vICogaHR0cDovL3d3dy5hc3NlbWJsZWUtbmF0aW9uYWxlLmZyLzE1L3RleHRlcy8wNjc2LmFzcFxuICAgICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgICAgbmFtZVVwcGVyID09PSBcIkpFVVhfT0xZTVBJUVVFU19FVF9QQVJBTFlNUElRVUVTX0RFXzIwMjRcIlxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgIC8vIE9jY3VycyBpbiBodHRwOi8vd3d3LmFzc2VtYmxlZS1uYXRpb25hbGUuZnIvMTUvdGV4dGVzLzA2NzYuYXNwXG4gICAgICAgICAgICB9IGVsc2UgaWYgKG5hbWVVcHBlciA9PT0gXCJURVhURV9ERV9MQV9DT01NSVNTSU9OX01JWFRFX1BBUklUQUlSRVwiKSB7XG4gICAgICAgICAgICAgIC8vIE9jY3VycyBpbiBodHRwOi8vd3d3LmFzc2VtYmxlZS1uYXRpb25hbGUuZnIvMTUvdGV4dGVzLzEyOTQuYXNwXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgICAgICAgICBgVW5leHBlY3RlZCBuYW1lVXBwZXIgPSBcIiR7bmFtZVVwcGVyfVwiIGF0IGJlZ2lubmluZyBvZiBcInRleHRlIGRlIGxvaVwiIGF0ICR7YXNzZW1ibGVlVXJsfWAsXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIFNraXAgcGFyYWdyYXBoLlxuICAgICAgICAgICAgc3RhdGUgPSBuZXh0UGFyZW50U3RhdGVcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChuZXh0TGV2ZWwgIT09IG51bGwpIHtcbiAgICAgICAgICAgIGxldmVsID0gbmV4dExldmVsXG4gICAgICAgICAgICB3aGlsZSAobGV2ZWxzLmxlbmd0aCA+IDAgJiYgbGV2ZWwgPCBsZXZlbHNbbGV2ZWxzLmxlbmd0aCAtIDFdKSB7XG4gICAgICAgICAgICAgIGxldmVscy5wb3AoKVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGxldmVscy5sZW5ndGggPT09IDAgfHwgbGV2ZWwgPiBsZXZlbHNbbGV2ZWxzLmxlbmd0aCAtIDFdKSB7XG4gICAgICAgICAgICAgIGxldmVscy5wdXNoKGxldmVsKVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gQXJ0aWNsZXMgJiBcIkV4cG9zw6kgZGVzIG1vdGlmc1wiIGFyZSB0aGUgb25seSBkaXZpc2lvbnMgd2l0aG91dCBzZWNvbmQgdGl0bGUuXG4gICAgICAgICAgICBpc011bHRpTGluZXNIZWFkZXIgPVxuICAgICAgICAgICAgICBuYW1lVXBwZXIubWF0Y2goL15BUlRJQ0xFUz9fLykgPT09IG51bGwgJiZcbiAgICAgICAgICAgICAgbmFtZVVwcGVyLm1hdGNoKC9eRVhQT1NFX0RFU19NT1RJRlMkLykgPT09IG51bGxcbiAgICAgICAgICAgIHN1YmRpdmlzaW9uQWxpbmVhc0h0bWwgPSBbXVxuICAgICAgICAgICAgc3ViZGl2aXNpb25BbGluZWFzVGV4dCA9IFtdXG4gICAgICAgICAgICBzdWJkaXZpc2lvbkhlYWRlcnNIdG1sID0gW11cbiAgICAgICAgICAgIHN1YmRpdmlzaW9uSGVhZGVyc1RleHQgPSBbXVxuICAgICAgICAgICAgc3ViZGl2aXNpb25zLnB1c2goe1xuICAgICAgICAgICAgICBodG1sOiB7XG4gICAgICAgICAgICAgICAgYWxpbmVhczogc3ViZGl2aXNpb25BbGluZWFzSHRtbCxcbiAgICAgICAgICAgICAgICBoZWFkZXJzOiBzdWJkaXZpc2lvbkhlYWRlcnNIdG1sLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBpZDogXCJEX1wiICsgbmFtZUNvbXB1dGVkLFxuICAgICAgICAgICAgICBsZXZlbDogbGV2ZWwgKyAxLFxuICAgICAgICAgICAgICByZWxhdGl2ZUxldmVsOiBsZXZlbHMubGVuZ3RoLFxuICAgICAgICAgICAgICB0ZXh0OiB7XG4gICAgICAgICAgICAgICAgYWxpbmVhczogc3ViZGl2aXNpb25BbGluZWFzVGV4dCxcbiAgICAgICAgICAgICAgICBoZWFkZXJzOiBzdWJkaXZpc2lvbkhlYWRlcnNUZXh0LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9XG4gICAgICAgICAgbGluZUVsZW1lbnRzID0gW11cbiAgICAgICAgICBzdGF0ZSA9IFwicGFyYWdyYXBoQ2hpbGRcIlxuICAgICAgICB9XG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlIFwiZmlyc3RTdWJBbGluZWFFbGVtZW50XCI6XG4gICAgICAgIHN1YkFsaW5lYUVsZW1lbnQgPSBhbGluZWFFbGVtZW50IS5jaGlsZHJlblswXVxuICAgICAgICBpZiAoc3ViQWxpbmVhRWxlbWVudCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgLy8gTm8gc3ViLWFsaW5lYSBpbiBjdXJyZW50IGFsaW5lYTogZ28gdG8gbmV4dCBhbGluZWEuXG4gICAgICAgICAgc3RhdGUgPSBcIm5leHRBbGluZWFFbGVtZW50XCJcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzdGF0ZSA9IFwic3ViQWxpbmVhRWxlbWVudFwiXG4gICAgICAgIH1cbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgXCJuZXh0QWxpbmVhRWxlbWVudFwiOlxuICAgICAgICBhbGluZWFFbGVtZW50ID0gYWxpbmVhRWxlbWVudCEubmV4dEVsZW1lbnRTaWJsaW5nXG4gICAgICAgIGlmIChhbGluZWFFbGVtZW50ID09PSBudWxsKSB7XG4gICAgICAgICAgLy8gVGhlIGJvZHlDaGlsZCBoYXMgYmVlbiBmdWxseSBwYXJzZWQuIEdvIHRvIG5leHQgYm9keUNoaWxkXG4gICAgICAgICAgc3RhdGUgPSBcIm5leHRCb2R5Q2hpbGRcIlxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHN0YXRlID0gXCJhbGluZWFFbGVtZW50XCJcbiAgICAgICAgfVxuICAgICAgICBicmVha1xuICAgICAgY2FzZSBcIm5leHRCb2R5Q2hpbGRcIjpcbiAgICAgICAgaWYgKGJvZHlDaGlsZC5uZXh0RWxlbWVudFNpYmxpbmcgPT09IG51bGwpIHtcbiAgICAgICAgICAvLyBUaGUgZG9jdW1lbnQgaGFzIGJlZW4gZnVsbHkgcGFyc2VkLlxuICAgICAgICAgIHN0YXRlID0gbnVsbFxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGJvZHlDaGlsZCA9IGJvZHlDaGlsZC5uZXh0RWxlbWVudFNpYmxpbmdcbiAgICAgICAgICBpZiAoYm9keUNoaWxkLnRhZ05hbWUgPT09IFwiRElWXCIpIHtcbiAgICAgICAgICAgIHN0YXRlID0gXCJmaXJzdEFsaW5lYUVsZW1lbnRcIlxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyA8UC8+IGlzIGZvciBmb290bm90ZXNcbiAgICAgICAgICAgIGFzc2VydChcbiAgICAgICAgICAgICAgW1wiQlJcIiwgXCJIUlwiLCBcIlBcIl0uaW5jbHVkZXMoYm9keUNoaWxkLnRhZ05hbWUpLFxuICAgICAgICAgICAgICBgVW5leHBlY3RlZCB0YWcgbmFtZSBcIiR7Ym9keUNoaWxkLnRhZ05hbWV9XCIgZm9yIGJvZHkgY2hpbGRgLFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLy8gU3RheSBpbiB0aGUgc2FtZSBzdGF0ZSB0byBnbyB0byBuZXh0IGJvZHlDaGlsZC5cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgXCJuZXh0UGFyYWdyYXBoQ2hpbGRcIjpcbiAgICAgICAgcGFyYWdyYXBoQ2hpbGQgPSBwYXJhZ3JhcGhDaGlsZCEubmV4dEVsZW1lbnRTaWJsaW5nXG4gICAgICAgIGlmIChwYXJhZ3JhcGhDaGlsZCA9PT0gbnVsbCkge1xuICAgICAgICAgIC8vIFRoZSBwYXJhZ3JhcGggZWxlbWVudCBoYXMgYmVlbiBmdWxseSBwYXJzZWQuIEdvIHRvIG5leHQgcGFyZW50IGVsZW1lbnQuXG4gICAgICAgICAgY29uc3QgbGluZVRleHQgPSBsaW5lRWxlbWVudHMhXG4gICAgICAgICAgICAubWFwKChlbGVtZW50KSA9PiBlbGVtZW50LnRleHRDb250ZW50KVxuICAgICAgICAgICAgLmpvaW4oXCJcIilcbiAgICAgICAgICAgIC50cmltKClcbiAgICAgICAgICBpZiAobGluZVRleHQpIHtcbiAgICAgICAgICAgIGNvbnN0IGxpbmVIdG1sID0gbGluZUVsZW1lbnRzIVxuICAgICAgICAgICAgICAubWFwKChlbGVtZW50KSA9PiBlbGVtZW50Lm91dGVySFRNTClcbiAgICAgICAgICAgICAgLmpvaW4oXCJcIilcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgc3ViZGl2aXNpb25IZWFkZXJzVGV4dCEubGVuZ3RoID09PSAwIHx8XG4gICAgICAgICAgICAgIChpc011bHRpTGluZXNIZWFkZXIgJiYgc3ViZGl2aXNpb25BbGluZWFzVGV4dCEubGVuZ3RoID09PSAwKVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgIHN1YmRpdmlzaW9uSGVhZGVyc0h0bWwhLnB1c2gobGluZUh0bWwpXG4gICAgICAgICAgICAgIHN1YmRpdmlzaW9uSGVhZGVyc1RleHQhLnB1c2gobGluZVRleHQpXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBzdWJkaXZpc2lvbkFsaW5lYXNIdG1sIS5wdXNoKGxpbmVIdG1sKVxuICAgICAgICAgICAgICBzdWJkaXZpc2lvbkFsaW5lYXNUZXh0IS5wdXNoKGxpbmVUZXh0KVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoaXNNdWx0aUxpbmVzSGVhZGVyICYmIHN1YmRpdmlzaW9uSGVhZGVyc1RleHQhLmxlbmd0aCA+PSAyKSB7XG4gICAgICAgICAgICBpc011bHRpTGluZXNIZWFkZXIgPSBmYWxzZVxuICAgICAgICAgIH1cbiAgICAgICAgICBsaW5lRWxlbWVudHMgPSBudWxsXG4gICAgICAgICAgc3RhdGUgPSBuZXh0UGFyZW50U3RhdGVcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzdGF0ZSA9IFwicGFyYWdyYXBoQ2hpbGRcIlxuICAgICAgICB9XG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlIFwibmV4dFN1YkFsaW5lYUVsZW1lbnRcIjpcbiAgICAgICAgc3ViQWxpbmVhRWxlbWVudCA9IHN1YkFsaW5lYUVsZW1lbnQhLm5leHRFbGVtZW50U2libGluZ1xuICAgICAgICBpZiAoc3ViQWxpbmVhRWxlbWVudCA9PT0gbnVsbCkge1xuICAgICAgICAgIC8vIFRoZSBhbGluZWFFbGVtZW50IGhhcyBiZWVuIGZ1bGx5IHBhcnNlZC4gR28gdG8gbmV4dCBhbGluZWFFbGVtZW50LlxuICAgICAgICAgIHN0YXRlID0gXCJuZXh0QWxpbmVhRWxlbWVudFwiXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc3RhdGUgPSBcInN1YkFsaW5lYUVsZW1lbnRcIlxuICAgICAgICB9XG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlIFwicGFyYWdyYXBoQ2hpbGRcIjpcbiAgICAgICAgc3dpdGNoIChwYXJhZ3JhcGhDaGlsZCEudGFnTmFtZSkge1xuICAgICAgICAgIGNhc2UgXCJBXCI6IHtcbiAgICAgICAgICAgIGxpbmVFbGVtZW50cyEucHVzaChwYXJhZ3JhcGhDaGlsZCEpXG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cbiAgICAgICAgICBjYXNlIFwiQlJcIjoge1xuICAgICAgICAgICAgY29uc3QgbGluZVRleHQgPSBsaW5lRWxlbWVudHMhXG4gICAgICAgICAgICAgIC5tYXAoKGVsZW1lbnQpID0+IGVsZW1lbnQudGV4dENvbnRlbnQpXG4gICAgICAgICAgICAgIC5qb2luKFwiXCIpXG4gICAgICAgICAgICAgIC50cmltKClcbiAgICAgICAgICAgIGlmIChsaW5lVGV4dCkge1xuICAgICAgICAgICAgICBjb25zdCBsaW5lSHRtbCA9IGxpbmVFbGVtZW50cyFcbiAgICAgICAgICAgICAgICAubWFwKChlbGVtZW50KSA9PiBlbGVtZW50Lm91dGVySFRNTClcbiAgICAgICAgICAgICAgICAuam9pbihcIlwiKVxuICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgc3ViZGl2aXNpb25IZWFkZXJzVGV4dCEubGVuZ3RoID09PSAwIHx8XG4gICAgICAgICAgICAgICAgKGlzTXVsdGlMaW5lc0hlYWRlciAmJiBzdWJkaXZpc2lvbkFsaW5lYXNUZXh0IS5sZW5ndGggPT09IDApXG4gICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHN1YmRpdmlzaW9uSGVhZGVyc0h0bWwhLnB1c2gobGluZUh0bWwpXG4gICAgICAgICAgICAgICAgc3ViZGl2aXNpb25IZWFkZXJzVGV4dCEucHVzaChsaW5lVGV4dClcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBzdWJkaXZpc2lvbkFsaW5lYXNIdG1sIS5wdXNoKGxpbmVIdG1sKVxuICAgICAgICAgICAgICAgIHN1YmRpdmlzaW9uQWxpbmVhc1RleHQhLnB1c2gobGluZVRleHQpXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxpbmVFbGVtZW50cyA9IFtdXG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cbiAgICAgICAgICBjYXNlIFwiREVMXCI6IHtcbiAgICAgICAgICAgIGxpbmVFbGVtZW50cyEucHVzaChwYXJhZ3JhcGhDaGlsZCEpXG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cbiAgICAgICAgICBjYXNlIFwiSU1HXCI6IHtcbiAgICAgICAgICAgIGxpbmVFbGVtZW50cyEucHVzaChwYXJhZ3JhcGhDaGlsZCEpXG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cbiAgICAgICAgICBjYXNlIFwiU1BBTlwiOiB7XG4gICAgICAgICAgICBjb25zdCBjbGFzc05hbWUgPSBwYXJhZ3JhcGhDaGlsZCEuZ2V0QXR0cmlidXRlKFwiY2xhc3NcIilcbiAgICAgICAgICAgIHN3aXRjaCAoY2xhc3NOYW1lKSB7XG4gICAgICAgICAgICAgIGNhc2UgXCJhRWxvaVBhc3RpbGxlXCI6IHtcbiAgICAgICAgICAgICAgICAvLyBTa2lwIHBhc3RpbGzDqSBTUEFOLlxuICAgICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgY2FzZSBcImFFbG9pUGFzdGlsbGUwXCI6IHtcbiAgICAgICAgICAgICAgICAvLyBTa2lwIHBhc3RpbGzDqSBTUEFOLlxuICAgICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICBsaW5lRWxlbWVudHMhLnB1c2gocGFyYWdyYXBoQ2hpbGQhKVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG4gICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIGVycm9yOiB7XG4gICAgICAgICAgICAgICAgY29kZTogLTMsXG4gICAgICAgICAgICAgICAgbWVzc2FnZTogYFVuZXhwZWN0ZWQgdGFnIG5hbWUgZm9yIHBhcmFncmFwaCBjaGlsZDogJHtcbiAgICAgICAgICAgICAgICAgIHBhcmFncmFwaENoaWxkIS50YWdOYW1lXG4gICAgICAgICAgICAgICAgfWAsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIGh0bWwsXG4gICAgICAgICAgICAgIHBhZ2UsXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgc3RhdGUgPSBcIm5leHRQYXJhZ3JhcGhDaGlsZFwiXG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlIFwic3ViQWxpbmVhRWxlbWVudFwiOlxuICAgICAgICBzd2l0Y2ggKHN1YkFsaW5lYUVsZW1lbnQhLnRhZ05hbWUpIHtcbiAgICAgICAgICBjYXNlIFwiUFwiOlxuICAgICAgICAgICAgbmV4dFBhcmVudFN0YXRlID0gXCJuZXh0U3ViQWxpbmVhRWxlbWVudFwiXG4gICAgICAgICAgICBwYXJhZ3JhcGhFbGVtZW50ID0gc3ViQWxpbmVhRWxlbWVudFxuICAgICAgICAgICAgc3RhdGUgPSBcImZpcnN0UGFyYWdyYXBoQ2hpbGRcIlxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICBjYXNlIFwiVEFCTEVcIjpcbiAgICAgICAgICAgIC8vIFRPRE9cbiAgICAgICAgICAgIHN0YXRlID0gXCJuZXh0U3ViQWxpbmVhRWxlbWVudFwiXG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICBlcnJvcjoge1xuICAgICAgICAgICAgICAgIGNvZGU6IC00LFxuICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGBVbmV4cGVjdGVkIHRhZyBuYW1lIGZvciBzdWIgYWxpbmVhIGVsZW1lbnQ6ICR7XG4gICAgICAgICAgICAgICAgICBzdWJBbGluZWFFbGVtZW50IS50YWdOYW1lXG4gICAgICAgICAgICAgICAgfWAsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIGh0bWwsXG4gICAgICAgICAgICAgIHBhZ2UsXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWtcbiAgICAgICAgc3RhdGUgPSBcIm5leHRTdWJBbGluZWFFbGVtZW50XCJcbiAgICAgICAgYnJlYWtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IGBVbmV4cGVjdGVkIHN0YXRlOiAke3N0YXRlfWBcbiAgICB9XG4gIH1cblxuICB3aW5kb3cuY2xvc2UoKSAvLyBGcmVlIG1lbW9yeS5cblxuICByZXR1cm4ge1xuICAgIGVycm9yOiBudWxsLFxuICAgIGh0bWwsXG4gICAgcGFnZSxcbiAgICBzdWJkaXZpc2lvbnMsXG4gICAgdXJsOiBhc3NlbWJsZWVVcmwsXG4gIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJldHJpZXZlVGV4dGVMb2lQYXJzZWQoXG4gIGZldGNoOiAoXG4gICAgdXJsOiBzdHJpbmcgfCBSZXF1ZXN0LFxuICAgIGluaXQ/OiBSZXF1ZXN0SW5pdCB8IHVuZGVmaW5lZCxcbiAgKSA9PiBQcm9taXNlPFJlc3BvbnNlPixcbiAgYXNzZW1ibGVlVXJsOiBzdHJpbmcsXG4pIHtcbiAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaChhc3NlbWJsZWVVcmwpXG4gIGNvbnN0IHBhZ2UgPSBhd2FpdCByZXNwb25zZS50ZXh0KClcbiAgaWYgKCFyZXNwb25zZS5vaykge1xuICAgIHJldHVybiB7XG4gICAgICBlcnJvcjogeyBjb2RlOiByZXNwb25zZS5zdGF0dXMsIG1lc3NhZ2U6IHJlc3BvbnNlLnN0YXR1c1RleHQgfSxcbiAgICAgIHBhZ2UsXG4gICAgfVxuICB9XG4gIHJldHVybiBwYXJzZVRleHRlTG9pKGFzc2VtYmxlZVVybCwgcGFnZSlcbn1cbiJdfQ==