@tricoteuses/assemblee 0.29.10 → 0.29.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/datasets.js CHANGED
@@ -579,21 +579,22 @@ var datasets = {
579
579
  title: "Dossiers législatifs de la XIVème législature",
580
580
  url: "http://data.assemblee-nationale.fr/static/openData/repository/14/loi/dossiers_legislatifs/Dossiers_Legislatifs_XIV.json.zip"
581
581
  }],
582
- scrutins: [// {
583
- // filename: "Scrutins_XVI.json",
584
- // legislature: Legislature.Seize,
585
- // repairZip: (dataset: Dataset, dataDir: string) => {
586
- // const targetDir = path.join(dataDir, dataset.filename)
587
- // if (fs.existsSync(targetDir)) {
588
- // fs.removeSync(targetDir)
589
- // }
590
- // fs.moveSync(path.join(dataDir, "json"), targetDir)
591
- // },
592
- // structure: DatasetStructure.SegmentedFiles,
593
- // title: "Scrutins de la XVIème législature",
594
- // url: "http://data.assemblee-nationale.fr/static/openData/repository/16/loi/scrutins/Scrutins.json.zip",
595
- // },
596
- {
582
+ scrutins: [{
583
+ filename: "Scrutins_XVI.json",
584
+ legislature: _legislatures.Legislature.Seize,
585
+ repairZip: function repairZip(dataset, dataDir) {
586
+ var targetDir = _path["default"].join(dataDir, dataset.filename);
587
+
588
+ if (_fsExtra["default"].existsSync(targetDir)) {
589
+ _fsExtra["default"].removeSync(targetDir);
590
+ }
591
+
592
+ _fsExtra["default"].moveSync(_path["default"].join(dataDir, "json"), targetDir);
593
+ },
594
+ structure: DatasetStructure.SegmentedFiles,
595
+ title: "Scrutins de la XVIème législature",
596
+ url: "http://data.assemblee-nationale.fr/static/openData/repository/16/loi/scrutins/Scrutins.json.zip"
597
+ }, {
597
598
  filename: "Scrutins_XV.json",
598
599
  legislature: _legislatures.Legislature.Quinze,
599
600
  repairZip: function repairZip(dataset, dataDir) {
@@ -631,8 +632,7 @@ var directory2schema = {
631
632
  };
632
633
 
633
634
  function getDatasets() {
634
- return ["Agenda_XIV", "Agenda_XV", "Agenda_XVI", "Scrutins_XIV", "Scrutins_XV", // "Scrutins_XVI",
635
- "Amendements_XIV", "Amendements_XV", "Amendements_XVI", "Dossiers_Legislatifs_XIV", "Dossiers_Legislatifs_XV", "Dossiers_Legislatifs_XVI", "AMO30_tous_acteurs_tous_mandats_tous_organes_historique", "acteurs_mandats_organes"];
635
+ return ["Agenda_XIV", "Agenda_XV", "Agenda_XVI", "Scrutins_XIV", "Scrutins_XV", "Scrutins_XVI", "Amendements_XIV", "Amendements_XV", "Amendements_XVI", "Dossiers_Legislatifs_XIV", "Dossiers_Legislatifs_XV", "Dossiers_Legislatifs_XVI", "AMO30_tous_acteurs_tous_mandats_tous_organes_historique", "acteurs_mandats_organes"];
636
636
  }
637
637
 
638
638
  function validDataset(dir) {
@@ -724,4 +724,4 @@ function masterUrl(filename) {
724
724
 
725
725
  return "[".concat(file, "](https://git.en-root.org/tricoteuses/data.tricoteuses.fr/").concat(dataset, "/-/tree/master/").concat(file, ")");
726
726
  }
727
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJEYXRhc2V0U3RydWN0dXJlIiwiRW5hYmxlZERhdGFzZXRzIiwiZGF0YXNldHMiLCJhY3RldXJzRXRPcmdhbmVzIiwiZmlsZW5hbWUiLCJpZ25vcmVGb3JXZWIiLCJsZWdpc2xhdHVyZSIsIkxlZ2lzbGF0dXJlIiwiU2VpemUiLCJyZXBhaXJaaXAiLCJkYXRhc2V0IiwiZGF0YURpciIsInRhcmdldERpciIsInBhdGgiLCJqb2luIiwiZnMiLCJleGlzdHNTeW5jIiwicmVtb3ZlU3luYyIsIm1vdmVTeW5jIiwic3RydWN0dXJlIiwiU2VnbWVudGVkRmlsZXMiLCJ0aXRsZSIsInVybCIsIlF1aW56ZSIsIlF1YXRvcnplIiwiU2luZ2xlRmlsZSIsIkFsbCIsIm1rZGlyU3luYyIsImFnZW5kYXMiLCJhbWVuZGVtZW50cyIsImRvc3NpZXJzTGVnaXNsYXRpZnMiLCJzY3J1dGlucyIsImRpcmVjdG9yeTJzY2hlbWEiLCJnZXREYXRhc2V0cyIsInZhbGlkRGF0YXNldCIsImRpciIsImluY2x1ZGVzIiwiZ2V0U2NoZW1hcyIsIk9iamVjdCIsInZhbHVlcyIsImRhdGFzZXREaXJlY3RvcnlTY2hlbWEiLCJkaXJlY3RvcmllcyIsInJlc3VsdHMiLCJkaXJlY3RvcnkiLCJrZXlzIiwicmUiLCJSZWdFeHAiLCJleGVjIiwicHVzaCIsImZpbGVEYXRhc2V0VXJsIiwibWF0Y2giLCJmaWxlIiwiZGlmZlVwc3RyZWFtIiwiZGF0YXNldFVybCIsInN1bSIsImNyZWF0ZUhhc2giLCJ1cGRhdGUiLCJkaWdlc3QiLCJ0b1N0cmluZyIsIm1hc3RlclVybCJdLCJzb3VyY2VzIjpbIi4uL3NyYy9kYXRhc2V0cy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjcmVhdGVIYXNoIH0gZnJvbSBcImNyeXB0b1wiXG5pbXBvcnQgZnMgZnJvbSBcImZzLWV4dHJhXCJcbmltcG9ydCBwYXRoIGZyb20gXCJwYXRoXCJcblxuaW1wb3J0IHsgTGVnaXNsYXR1cmUgfSBmcm9tIFwiLi90eXBlcy9sZWdpc2xhdHVyZXNcIlxuXG5pbnRlcmZhY2UgRGF0YXNldCB7XG4gIGZpbGVuYW1lOiBzdHJpbmdcbiAgaWdub3JlRm9yV2ViPzogYm9vbGVhblxuICBsZWdpc2xhdHVyZTogTGVnaXNsYXR1cmVcbiAgcmVwYWlyWmlwPzogKGRhdGFzZXQ6IERhdGFzZXQsIGRhdGFEaXI6IHN0cmluZykgPT4gdm9pZFxuICBzdHJ1Y3R1cmU6IERhdGFzZXRTdHJ1Y3R1cmVcbiAgdGl0bGU6IHN0cmluZ1xuICB1cmw6IHN0cmluZ1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERhdGFzZXRzIHtcbiAgYWN0ZXVyc0V0T3JnYW5lczogRGF0YXNldFtdXG4gIGFnZW5kYXM6IERhdGFzZXRbXVxuICBhbWVuZGVtZW50czogRGF0YXNldFtdXG4gIGRvc3NpZXJzTGVnaXNsYXRpZnM6IERhdGFzZXRbXVxuICBzY3J1dGluczogRGF0YXNldFtdXG59XG5cbmV4cG9ydCBlbnVtIERhdGFzZXRTdHJ1Y3R1cmUge1xuICBTaW5nbGVGaWxlLFxuICBTZWdtZW50ZWRGaWxlcyxcbn1cblxuZXhwb3J0IGVudW0gRW5hYmxlZERhdGFzZXRzIHtcbiAgTm9uZSA9IDAsXG4gIEFjdGV1cnNFdE9yZ2FuZXMgPSAxIDw8IDAsXG4gIEFnZW5kYXMgPSAxIDw8IDEsXG4gIEFtZW5kZW1lbnRzID0gMSA8PCAyLFxuICBEb3NzaWVyc0xlZ2lzbGF0aWZzID0gMSA8PCAzLFxuICBQaG90b3MgPSAxIDw8IDQsXG4gIFNjcnV0aW5zID0gMSA8PCA1LFxuICBBbGwgPSBBY3RldXJzRXRPcmdhbmVzIHxcbiAgICBBZ2VuZGFzIHxcbiAgICBBbWVuZGVtZW50cyB8XG4gICAgRG9zc2llcnNMZWdpc2xhdGlmcyB8XG4gICAgUGhvdG9zIHxcbiAgICBTY3J1dGlucyxcbn1cblxuZXhwb3J0IGNvbnN0IGRhdGFzZXRzOiBEYXRhc2V0cyA9IHtcbiAgYWN0ZXVyc0V0T3JnYW5lczogW1xuICAgIHtcbiAgICAgIC8vIEFNTzEwIChYVkkpXG4gICAgICAvL1xuICAgICAgLy8gQ29udGllbnQgbGVzIGTDqXB1dMOpcyBhY3RpZnNcbiAgICAgIC8vICogYXZlYyB0b3VzIGxlcyBtYW5kYXRzIGVuIGNvdXJzXG4gICAgICAvLyAqIHkgY29tcHJpcyBhdmVjIGxldXIgcGFydGkgcG9saXRpcXVlICh0eXBlT3JnYW5lOiBcIlBBUlBPTFwiKVxuICAgICAgLy8gKiBtYWlzIHNhbnMgbGVzIG1hbmRhdHMgYWNoZXbDqXMgKHkgY29tcHJpcyBkYW5zIGNldHRlIGzDqWdpc2xhdHVyZSlcbiAgICAgIC8vXG4gICAgICAvLyBPcmdhbmVzIDpcbiAgICAgIC8vICogQ29udGllbnQgc2V1bGVtZW50IGxlcyBvcmdhbmVzIGNvcnJlc3BvbmRhbnRzIGF1eCBtYW5kYXRzIGVuIGNvdXJzXG4gICAgICAvLyAqIGF2ZWMgbGUgeHNpVHlwZSBkZSBsJ29yZ2FuZVxuICAgICAgLy8gKiBhdmVjIGRlcyBjb21taXNzaW9ucyBzw6luYXRvcmlhbGVzIChwZXJtYW5lbnRlcyBldCBzcMOpY2lhbGVzKSBlbiBjb3Vyc1xuICAgICAgLy8gKiBhdmVjIGRlcyBkw6lsw6lnYXRpb25zIHPDqW5hdG9yaWFsZXMgZW4gY291cnNcbiAgICAgIC8vICogYXZlYyBkZXMgZ3JvdXBlcyBzw6luYXRvcmlhdXggZW4gY291cnNcbiAgICAgIC8vICogYXZlYyBkZXMgbWluaXN0w6hyZXMgZW4gY291cnNcbiAgICAgIC8vICogYXZlYyBsZXMgUHLDqXNpZGVuY2VzIGRlIGxhIFLDqXB1YmxpcXVlICh5IGNvbXByaXMgU2Fya296eSlcbiAgICAgIC8vICogYXZlYyBsZSBDb25zZWlsIGNvbnN0aXR1dGlvbm5lbFxuICAgICAgLy9cbiAgICAgIC8vIENlIGZpY2hpZXIgZXN0IHVuIHNvdXMtZW5zZW1ibGUgw6AgdG91cyBsZXMgbml2ZWF1eCBkdSBmaWNoaWVyIEFNTzIwXG4gICAgICAvLyAocXVpIGVzdCBsdWkgbcOqbWUgdW4gc291cy1lbnNlbWJsZSBkZSBsJ0FNTzMwKS5cbiAgICAgIC8vIElsIG4nYXBwb3J0ZSBkb25jIGFic29sdW1lbnQgcmllbiBwYXIgcmFwcG9ydCDDoCBBTU8yMCBvdSBsJ0FNTzMwLlxuICAgICAgZmlsZW5hbWU6IFwiQU1PMTBfZGVwdXRlc19hY3RpZnNfbWFuZGF0c19hY3RpZnNfb3JnYW5lc19YVkkuanNvblwiLFxuICAgICAgaWdub3JlRm9yV2ViOiB0cnVlLFxuICAgICAgbGVnaXNsYXR1cmU6IExlZ2lzbGF0dXJlLlNlaXplLFxuICAgICAgcmVwYWlyWmlwOiAoZGF0YXNldDogRGF0YXNldCwgZGF0YURpcjogc3RyaW5nKSA9PiB7XG4gICAgICAgIGNvbnN0IHRhcmdldERpciA9IHBhdGguam9pbihkYXRhRGlyLCBkYXRhc2V0LmZpbGVuYW1lKVxuICAgICAgICBpZiAoZnMuZXhpc3RzU3luYyh0YXJnZXREaXIpKSB7XG4gICAgICAgICAgZnMucmVtb3ZlU3luYyh0YXJnZXREaXIpXG4gICAgICAgIH1cbiAgICAgICAgZnMubW92ZVN5bmMocGF0aC5qb2luKGRhdGFEaXIsIFwianNvblwiKSwgdGFyZ2V0RGlyKVxuICAgICAgfSxcbiAgICAgIHN0cnVjdHVyZTogRGF0YXNldFN0cnVjdHVyZS5TZWdtZW50ZWRGaWxlcyxcbiAgICAgIHRpdGxlOiBcIkTDqXB1dMOpcyBhY3RpZnMgZXQgb3JnYW5lcyBkZSBsYSBYVknDqG1lIGzDqWdpc2xhdHVyZVwiLFxuICAgICAgdXJsOiBcImh0dHA6Ly9kYXRhLmFzc2VtYmxlZS1uYXRpb25hbGUuZnIvc3RhdGljL29wZW5EYXRhL3JlcG9zaXRvcnkvMTYvYW1vL2RlcHV0ZXNfYWN0aWZzX21hbmRhdHNfYWN0aWZzX29yZ2FuZXMvQU1PMTBfZGVwdXRlc19hY3RpZnNfbWFuZGF0c19hY3RpZnNfb3JnYW5lcy5qc29uLnppcFwiLFxuICAgIH0sXG4gICAge1xuICAgICAgLy8gQU1PMTAgKFhWKVxuICAgICAgLy9cbiAgICAgIC8vIENvbnRpZW50IGxlcyBkw6lwdXTDqXMgYWN0aWZzXG4gICAgICAvLyAqIGF2ZWMgdG91cyBsZXMgbWFuZGF0cyBlbiBjb3Vyc1xuICAgICAgLy8gKiB5IGNvbXByaXMgYXZlYyBsZXVyIHBhcnRpIHBvbGl0aXF1ZSAodHlwZU9yZ2FuZTogXCJQQVJQT0xcIilcbiAgICAgIC8vICogbWFpcyBzYW5zIGxlcyBtYW5kYXRzIGFjaGV2w6lzICh5IGNvbXByaXMgZGFucyBjZXR0ZSBsw6lnaXNsYXR1cmUpXG4gICAgICAvL1xuICAgICAgLy8gT3JnYW5lcyA6XG4gICAgICAvLyAqIENvbnRpZW50IHNldWxlbWVudCBsZXMgb3JnYW5lcyBjb3JyZXNwb25kYW50cyBhdXggbWFuZGF0cyBlbiBjb3Vyc1xuICAgICAgLy8gKiBhdmVjIGxlIHhzaVR5cGUgZGUgbCdvcmdhbmVcbiAgICAgIC8vICogYXZlYyBkZXMgY29tbWlzc2lvbnMgc8OpbmF0b3JpYWxlcyAocGVybWFuZW50ZXMgZXQgc3DDqWNpYWxlcykgZW4gY291cnNcbiAgICAgIC8vICogYXZlYyBkZXMgZMOpbMOpZ2F0aW9ucyBzw6luYXRvcmlhbGVzIGVuIGNvdXJzXG4gICAgICAvLyAqIGF2ZWMgZGVzIGdyb3VwZXMgc8OpbmF0b3JpYXV4IGVuIGNvdXJzXG4gICAgICAvLyAqIGF2ZWMgZGVzIG1pbmlzdMOocmVzIGVuIGNvdXJzXG4gICAgICAvLyAqIGF2ZWMgbGVzIFByw6lzaWRlbmNlcyBkZSBsYSBSw6lwdWJsaXF1ZSAoeSBjb21wcmlzIFNhcmtvenkpXG4gICAgICAvLyAqIGF2ZWMgbGUgQ29uc2VpbCBjb25zdGl0dXRpb25uZWxcbiAgICAgIC8vXG4gICAgICAvLyBDZSBmaWNoaWVyIGVzdCB1biBzb3VzLWVuc2VtYmxlIMOgIHRvdXMgbGVzIG5pdmVhdXggZHUgZmljaGllciBBTU8yMFxuICAgICAgLy8gKHF1aSBlc3QgbHVpIG3Dqm1lIHVuIHNvdXMtZW5zZW1ibGUgZGUgbCdBTU8zMCkuXG4gICAgICAvLyBJbCBuJ2FwcG9ydGUgZG9uYyBhYnNvbHVtZW50IHJpZW4gcGFyIHJhcHBvcnQgw6AgQU1PMjAgb3UgbCdBTU8zMC5cbiAgICAgIGZpbGVuYW1lOiBcIkFNTzEwX2RlcHV0ZXNfYWN0aWZzX21hbmRhdHNfYWN0aWZzX29yZ2FuZXNfWFYuanNvblwiLFxuICAgICAgaWdub3JlRm9yV2ViOiB0cnVlLFxuICAgICAgbGVnaXNsYXR1cmU6IExlZ2lzbGF0dXJlLlF1aW56ZSxcbiAgICAgIHJlcGFpclppcDogKGRhdGFzZXQ6IERhdGFzZXQsIGRhdGFEaXI6IHN0cmluZykgPT4ge1xuICAgICAgICBjb25zdCB0YXJnZXREaXIgPSBwYXRoLmpvaW4oZGF0YURpciwgZGF0YXNldC5maWxlbmFtZSlcbiAgICAgICAgaWYgKGZzLmV4aXN0c1N5bmModGFyZ2V0RGlyKSkge1xuICAgICAgICAgIGZzLnJlbW92ZVN5bmModGFyZ2V0RGlyKVxuICAgICAgICB9XG4gICAgICAgIGZzLm1vdmVTeW5jKHBhdGguam9pbihkYXRhRGlyLCBcImpzb25cIiksIHRhcmdldERpcilcbiAgICAgIH0sXG4gICAgICBzdHJ1Y3R1cmU6IERhdGFzZXRTdHJ1Y3R1cmUuU2VnbWVudGVkRmlsZXMsXG4gICAgICB0aXRsZTogXCJEw6lwdXTDqXMgYWN0aWZzIGV0IG9yZ2FuZXMgZGUgbGEgWFbDqG1lIGzDqWdpc2xhdHVyZVwiLFxuICAgICAgdXJsOiBcImh0dHA6Ly9kYXRhLmFzc2VtYmxlZS1uYXRpb25hbGUuZnIvc3RhdGljL29wZW5EYXRhL3JlcG9zaXRvcnkvMTUvYW1vL2RlcHV0ZXNfYWN0aWZzX21hbmRhdHNfYWN0aWZzX29yZ2FuZXMvQU1PMTBfZGVwdXRlc19hY3RpZnNfbWFuZGF0c19hY3RpZnNfb3JnYW5lc19YVi5qc29uLnppcFwiLFxuICAgIH0sXG4gICAge1xuICAgICAgLy8gQU1PMjAgKFhWSSlcbiAgICAgIC8vXG4gICAgICAvLyBDb250aWVudCBsZXMgZMOpcHV0w6lzIGRlIGxhIGzDqWdpc2xhdHVyZSwgYWN0aWZzIG91IG5vbiAoaW52YWxpZMOpcywgZXRjKSwgbGVzIHPDqW5hdGV1cnMgYWN0dWVsc1xuICAgICAgLy8gUG91ciBsZXMgZMOpcHV0w6lzIDpcbiAgICAgIC8vICogYXZlYyB0b3VzIGxldXJzIG1hbmRhdHMgZGUgbGEgbMOpZ2lzbGF0dXJlXG4gICAgICAvLyAqIHkgY29tcHJpcyBsZXMgbWFuZGF0cyBhY2hldsOpc1xuICAgICAgLy8gKiB5IGNvbXByaXMgbGV1cnMgcGFydGlzIHBvbGl0aXF1ZXMgICh0eXBlT3JnYW5lOiBcIlBBUlBPTFwiKVxuICAgICAgLy8gKiBtYWlzIHNhbnMgbGVzIG1hbmRhdHMgZGVzIGzDqWdpc2xhdHVyZXMgcHLDqWPDqWRlbnRlcyAocXVpIHNvbnQgZGFucyBBTU80MClcbiAgICAgIC8vXG4gICAgICAvLyBDb250aWVudCB0b3VzIGxlcyBvcmdhbmVzIHLDqWbDqXJlbmPDqXMgcGFyIGxlcyBtYW5kYXRzXG4gICAgICAvLyAqIGF2ZWMgbGUgeHNpVHlwZSBkZSBsJ29yZ2FuZVxuICAgICAgLy8gKiBhdmVjIGRlcyBjb21taXNzaW9ucyBzw6luYXRvcmlhbGVzIChwZXJtYW5lbnRlcyBldCBzcMOpY2lhbGVzKSBlbiBjb3Vyc1xuICAgICAgLy8gKiBhdmVjIGRlcyBkw6lsw6lnYXRpb25zIHPDqW5hdG9yaWFsZXMgZW4gY291cnNcbiAgICAgIC8vICogYXZlYyBkZXMgZ3JvdXBlcyBzw6luYXRvcmlhdXggZW4gY291cnNcbiAgICAgIC8vICogYXZlYyBkZXMgbWluaXN0w6hyZXMgZW4gY291cnNcbiAgICAgIC8vICogYXZlYyBsZXMgUHLDqXNpZGVuY2VzIGRlIGxhIFLDqXB1YmxpcXVlICh5IGNvbXByaXMgU2Fya296eSlcbiAgICAgIC8vICogYXZlYyBsZSBDb25zZWlsIGNvbnN0aXR1dGlvbm5lbFxuICAgICAgLy9cbiAgICAgIC8vIENlIGZpY2hpZXIgZXN0IHVuIHNvdXMtZW5zZW1ibGUgw6AgdG91cyBsZXMgbml2ZWF1eCBkdSBmaWNoaWVyIEFNTzMwLlxuICAgICAgLy8gSWwgbidhcHBvcnRlIGRvbmMgYWJzb2x1bWVudCByaWVuIHBhciByYXBwb3J0IMOgIGwnQU1PMzAuXG4gICAgICBmaWxlbmFtZTogXCJBTU8yMF9kZXBfc2VuX21pbl90b3VzX21hbmRhdHNfZXRfb3JnYW5lc19YVkkuanNvblwiLFxuICAgICAgaWdub3JlRm9yV2ViOiB0cnVlLFxuICAgICAgbGVnaXNsYXR1cmU6IExlZ2lzbGF0dXJlLlNlaXplLFxuICAgICAgcmVwYWlyWmlwOiAoZGF0YXNldDogRGF0YXNldCwgZGF0YURpcjogc3RyaW5nKSA9PiB7XG4gICAgICAgIGNvbnN0IHRhcmdldERpciA9IHBhdGguam9pbihkYXRhRGlyLCBkYXRhc2V0LmZpbGVuYW1lKVxuICAgICAgICBpZiAoZnMuZXhpc3RzU3luYyh0YXJnZXREaXIpKSB7XG4gICAgICAgICAgZnMucmVtb3ZlU3luYyh0YXJnZXREaXIpXG4gICAgICAgIH1cbiAgICAgICAgZnMubW92ZVN5bmMocGF0aC5qb2luKGRhdGFEaXIsIFwianNvblwiKSwgdGFyZ2V0RGlyKVxuICAgICAgfSxcbiAgICAgIHN0cnVjdHVyZTogRGF0YXNldFN0cnVjdHVyZS5TZWdtZW50ZWRGaWxlcyxcbiAgICAgIHRpdGxlOiBcIkFjdGV1cnMgZXQgb3JnYW5lcyBkZSBsYSBYVsOobWUgbMOpZ2lzbGF0dXJlXCIsXG4gICAgICB1cmw6IFwiaHR0cDovL2RhdGEuYXNzZW1ibGVlLW5hdGlvbmFsZS5mci9zdGF0aWMvb3BlbkRhdGEvcmVwb3NpdG9yeS8xNi9hbW8vZGVwdXRlc19zZW5hdGV1cnNfbWluaXN0cmVzX2xlZ2lzbGF0dXJlL0FNTzIwX2RlcF9zZW5fbWluX3RvdXNfbWFuZGF0c19ldF9vcmdhbmVzLmpzb24uemlwXCIsXG4gICAgfSxcbiAgICB7XG4gICAgICAvLyBBTU8yMCAoWFYpXG4gICAgICAvL1xuICAgICAgLy8gQ29udGllbnQgbGVzIGTDqXB1dMOpcyBkZSBsYSBsw6lnaXNsYXR1cmUsIGFjdGlmcyBvdSBub24gKGludmFsaWTDqXMsIGV0YyksIGxlcyBzw6luYXRldXJzIGFjdHVlbHNcbiAgICAgIC8vIFBvdXIgbGVzIGTDqXB1dMOpcyA6XG4gICAgICAvLyAqIGF2ZWMgdG91cyBsZXVycyBtYW5kYXRzIGRlIGxhIGzDqWdpc2xhdHVyZVxuICAgICAgLy8gKiB5IGNvbXByaXMgbGVzIG1hbmRhdHMgYWNoZXbDqXNcbiAgICAgIC8vICogeSBjb21wcmlzIGxldXJzIHBhcnRpcyBwb2xpdGlxdWVzICAodHlwZU9yZ2FuZTogXCJQQVJQT0xcIilcbiAgICAgIC8vICogbWFpcyBzYW5zIGxlcyBtYW5kYXRzIGRlcyBsw6lnaXNsYXR1cmVzIHByw6ljw6lkZW50ZXMgKHF1aSBzb250IGRhbnMgQU1PNDApXG4gICAgICAvL1xuICAgICAgLy8gQ29udGllbnQgdG91cyBsZXMgb3JnYW5lcyByw6lmw6lyZW5jw6lzIHBhciBsZXMgbWFuZGF0c1xuICAgICAgLy8gKiBhdmVjIGxlIHhzaVR5cGUgZGUgbCdvcmdhbmVcbiAgICAgIC8vICogYXZlYyBkZXMgY29tbWlzc2lvbnMgc8OpbmF0b3JpYWxlcyAocGVybWFuZW50ZXMgZXQgc3DDqWNpYWxlcykgZW4gY291cnNcbiAgICAgIC8vICogYXZlYyBkZXMgZMOpbMOpZ2F0aW9ucyBzw6luYXRvcmlhbGVzIGVuIGNvdXJzXG4gICAgICAvLyAqIGF2ZWMgZGVzIGdyb3VwZXMgc8OpbmF0b3JpYXV4IGVuIGNvdXJzXG4gICAgICAvLyAqIGF2ZWMgZGVzIG1pbmlzdMOocmVzIGVuIGNvdXJzXG4gICAgICAvLyAqIGF2ZWMgbGVzIFByw6lzaWRlbmNlcyBkZSBsYSBSw6lwdWJsaXF1ZSAoeSBjb21wcmlzIFNhcmtvenkpXG4gICAgICAvLyAqIGF2ZWMgbGUgQ29uc2VpbCBjb25zdGl0dXRpb25uZWxcbiAgICAgIC8vXG4gICAgICAvLyBDZSBmaWNoaWVyIGVzdCB1biBzb3VzLWVuc2VtYmxlIMOgIHRvdXMgbGVzIG5pdmVhdXggZHUgZmljaGllciBBTU8zMC5cbiAgICAgIC8vIElsIG4nYXBwb3J0ZSBkb25jIGFic29sdW1lbnQgcmllbiBwYXIgcmFwcG9ydCDDoCBsJ0FNTzMwLlxuICAgICAgZmlsZW5hbWU6IFwiQU1PMjBfZGVwX3Nlbl9taW5fdG91c19tYW5kYXRzX2V0X29yZ2FuZXNfWFYuanNvblwiLFxuICAgICAgaWdub3JlRm9yV2ViOiB0cnVlLFxuICAgICAgbGVnaXNsYXR1cmU6IExlZ2lzbGF0dXJlLlF1aW56ZSxcbiAgICAgIHJlcGFpclppcDogKGRhdGFzZXQ6IERhdGFzZXQsIGRhdGFEaXI6IHN0cmluZykgPT4ge1xuICAgICAgICBjb25zdCB0YXJnZXREaXIgPSBwYXRoLmpvaW4oZGF0YURpciwgZGF0YXNldC5maWxlbmFtZSlcbiAgICAgICAgaWYgKGZzLmV4aXN0c1N5bmModGFyZ2V0RGlyKSkge1xuICAgICAgICAgIGZzLnJlbW92ZVN5bmModGFyZ2V0RGlyKVxuICAgICAgICB9XG4gICAgICAgIGZzLm1vdmVTeW5jKHBhdGguam9pbihkYXRhRGlyLCBcImpzb25cIiksIHRhcmdldERpcilcbiAgICAgIH0sXG4gICAgICBzdHJ1Y3R1cmU6IERhdGFzZXRTdHJ1Y3R1cmUuU2VnbWVudGVkRmlsZXMsXG4gICAgICB0aXRsZTogXCJBY3RldXJzIGV0IG9yZ2FuZXMgZGUgbGEgWFbDqG1lIGzDqWdpc2xhdHVyZVwiLFxuICAgICAgdXJsOiBcImh0dHA6Ly9kYXRhLmFzc2VtYmxlZS1uYXRpb25hbGUuZnIvc3RhdGljL29wZW5EYXRhL3JlcG9zaXRvcnkvMTUvYW1vL2RlcHV0ZXNfc2VuYXRldXJzX21pbmlzdHJlc19sZWdpc2xhdHVyZS9BTU8yMF9kZXBfc2VuX21pbl90b3VzX21hbmRhdHNfZXRfb3JnYW5lc19YVi5qc29uLnppcFwiLFxuICAgIH0sXG4gICAge1xuICAgICAgLy8gQU1PMjAgKFhJVilcbiAgICAgIC8vXG4gICAgICAvLyBDb21tZSBBTU8yMCAoWFYpIG1haXMgcG91ciBsYSBYSVbDqG1lIGzDqWdpc2xhdHVyZVxuICAgICAgLy8gVG91cyBsZXMgYWN0ZXVycyBzYXVmIHVuIChQQTQyOTg5Mikgc29udCBwcsOpc2VudHMgZW4gcGx1cyDDoCBqb3VyIGRhbnMgQU1PMzAuXG4gICAgICAvLyBDZXQgYWN0ZXVyIFBBNDI5ODkyIChhbmNpZW5uZSBTw6luYXRyaWNlKSBuJ2VzdCBwcsOpc2VudCBkYW5zIGF1Y3VuIGRlcyBhdXRyZXNcbiAgICAgIC8vIGZpY2hpZXJzIEFNTy5cbiAgICAgIC8vIFRvdXMgbGVzIG9yZ2FuZXMgc29udCBwcsOpc2VudHMgZW4gcGx1cyBjb21wbGV0cyBkYW5zIEFNTzMwLlxuICAgICAgLy9cbiAgICAgIC8vIENlIGZpY2hpZXIgZXN0IGRvbmMgw6AgdW4gZMOpdGFpbCBwcsOqdCAoUEE0Mjk4OTIpIHVuIHNvdXMtZW5zZW1ibGUgZCdBTU8zMC5cbiAgICAgIC8vIElsIG4nYXBwb3J0ZSBkb25jIHF1YXNpbWVudCByaWVuIHBhciByYXBwb3J0IMOgIGwnQU1PMzAuXG4gICAgICBmaWxlbmFtZTogXCJBTU8yMF9kZXBfc2VuX21pbl90b3VzX21hbmRhdHNfZXRfb3JnYW5lc19YSVYuanNvblwiLFxuICAgICAgaWdub3JlRm9yV2ViOiB0cnVlLFxuICAgICAgbGVnaXNsYXR1cmU6IExlZ2lzbGF0dXJlLlF1YXRvcnplLFxuICAgICAgc3RydWN0dXJlOiBEYXRhc2V0U3RydWN0dXJlLlNpbmdsZUZpbGUsXG4gICAgICB0aXRsZTogXCJBY3RldXJzIGV0IG9yZ2FuZXMgZGUgbGEgWElWw6htZSBsw6lnaXNsYXR1cmVcIixcbiAgICAgIHVybDogXCJodHRwOi8vZGF0YS5hc3NlbWJsZWUtbmF0aW9uYWxlLmZyL3N0YXRpYy9vcGVuRGF0YS9yZXBvc2l0b3J5LzE0L2Ftby9kZXB1dGVzX3NlbmF0ZXVyc19taW5pc3RyZXNfbGVnaXNsYXR1cmVzX1hJVi9BTU8yMF9kZXBfc2VuX21pbl90b3VzX21hbmRhdHNfZXRfb3JnYW5lc19YSVYuanNvbi56aXBcIixcbiAgICB9LFxuICAgIHtcbiAgICAgIC8vIEFNTzMwIChYVkkpXG4gICAgICAvL1xuICAgICAgLy8gQ2UgZmljaGllciBjb250aWVudCB0b3VzIGxlcyBhY3RldXJzIGV0IG9yZ2FuZXMuXG4gICAgICAvLyBDJ2VzdCB1biBzdXItZW5zZW1ibGUgZGVzIGZpY2hpZXJzIEFNTzIwLlxuICAgICAgZmlsZW5hbWU6IFwiQU1PMzBfdG91c19hY3RldXJzX3RvdXNfbWFuZGF0c190b3VzX29yZ2FuZXNfaGlzdG9yaXF1ZS5qc29uXCIsXG4gICAgICBsZWdpc2xhdHVyZTogTGVnaXNsYXR1cmUuQWxsLFxuICAgICAgcmVwYWlyWmlwOiAoZGF0YXNldDogRGF0YXNldCwgZGF0YURpcjogc3RyaW5nKSA9PiB7XG4gICAgICAgIGNvbnN0IHRhcmdldERpciA9IHBhdGguam9pbihkYXRhRGlyLCBkYXRhc2V0LmZpbGVuYW1lKVxuICAgICAgICBpZiAoZnMuZXhpc3RzU3luYyh0YXJnZXREaXIpKSB7XG4gICAgICAgICAgZnMucmVtb3ZlU3luYyh0YXJnZXREaXIpXG4gICAgICAgIH1cbiAgICAgICAgZnMubW92ZVN5bmMocGF0aC5qb2luKGRhdGFEaXIsIFwianNvblwiKSwgdGFyZ2V0RGlyKVxuICAgICAgfSxcbiAgICAgIHN0cnVjdHVyZTogRGF0YXNldFN0cnVjdHVyZS5TZWdtZW50ZWRGaWxlcyxcbiAgICAgIHRpdGxlOlxuICAgICAgICBcIkhpc3RvcmlxdWUgZGUgdG91cyBsZXMgYWN0ZXVycyBldCBvcmdhbmVzIGRlcHVpcyBsYSBYScOobWUgbMOpZ2lzbGF0dXJlXCIsXG4gICAgICB1cmw6IFwiaHR0cDovL2RhdGEuYXNzZW1ibGVlLW5hdGlvbmFsZS5mci9zdGF0aWMvb3BlbkRhdGEvcmVwb3NpdG9yeS8xNi9hbW8vdG91c19hY3RldXJzX21hbmRhdHNfb3JnYW5lc194aV9sZWdpc2xhdHVyZS9BTU8zMF90b3VzX2FjdGV1cnNfdG91c19tYW5kYXRzX3RvdXNfb3JnYW5lc19oaXN0b3JpcXVlLmpzb24uemlwXCIsXG4gICAgfSxcbiAgICAvLyB7XG4gICAgLy8gICAvLyBBTU8zMCAoWFYpXG4gICAgLy8gICAvL1xuICAgIC8vICAgLy8gQ2UgZmljaGllciBjb250aWVudCB0b3VzIGxlcyBhY3RldXJzIGV0IG9yZ2FuZXMuXG4gICAgLy8gICAvLyBDJ2VzdCB1biBzdXItZW5zZW1ibGUgZGVzIGZpY2hpZXJzIEFNTzIwLlxuICAgIC8vICAgZmlsZW5hbWU6IFwiQU1PMzBfdG91c19hY3RldXJzX3RvdXNfbWFuZGF0c190b3VzX29yZ2FuZXNfaGlzdG9yaXF1ZS5qc29uXCIsXG4gICAgLy8gICBsZWdpc2xhdHVyZTogTGVnaXNsYXR1cmUuQWxsLFxuICAgIC8vICAgcmVwYWlyWmlwOiAoZGF0YXNldDogRGF0YXNldCwgZGF0YURpcjogc3RyaW5nKSA9PiB7XG4gICAgLy8gICAgIGNvbnN0IHRhcmdldERpciA9IHBhdGguam9pbihkYXRhRGlyLCBkYXRhc2V0LmZpbGVuYW1lKVxuICAgIC8vICAgICBpZiAoZnMuZXhpc3RzU3luYyh0YXJnZXREaXIpKSB7XG4gICAgLy8gICAgICAgZnMucmVtb3ZlU3luYyh0YXJnZXREaXIpXG4gICAgLy8gICAgIH1cbiAgICAvLyAgICAgZnMubW92ZVN5bmMocGF0aC5qb2luKGRhdGFEaXIsIFwianNvblwiKSwgdGFyZ2V0RGlyKVxuICAgIC8vICAgfSxcbiAgICAvLyAgIHN0cnVjdHVyZTogRGF0YXNldFN0cnVjdHVyZS5TZWdtZW50ZWRGaWxlcyxcbiAgICAvLyAgIHRpdGxlOlxuICAgIC8vICAgICBcIkhpc3RvcmlxdWUgZGUgdG91cyBsZXMgYWN0ZXVycyBldCBvcmdhbmVzIGRlcHVpcyBsYSBYScOobWUgbMOpZ2lzbGF0dXJlXCIsXG4gICAgLy8gICB1cmw6IFwiaHR0cDovL2RhdGEuYXNzZW1ibGVlLW5hdGlvbmFsZS5mci9zdGF0aWMvb3BlbkRhdGEvcmVwb3NpdG9yeS8xNS9hbW8vdG91c19hY3RldXJzX21hbmRhdHNfb3JnYW5lc194aV9sZWdpc2xhdHVyZS9BTU8zMF90b3VzX2FjdGV1cnNfdG91c19tYW5kYXRzX3RvdXNfb3JnYW5lc19oaXN0b3JpcXVlLmpzb24uemlwXCIsXG4gICAgLy8gfSxcbiAgICB7XG4gICAgICAvLyBBTU80MCAoWFZJKVxuICAgICAgLy9cbiAgICAgIC8vIENvbnRpZW50IGxlcyBkw6lwdXTDqXMgYWN0aWZzIChsZXMgbcOqbWVzIHF1J0FNTzIwKVxuICAgICAgLy8gKiBhdmVjIHByZXNxdWUgdG91cyBsZXVycyBtYW5kYXRzXG4gICAgICAvLyAqIHkgY29tcHJpcyBsZXMgbWFuZGF0cyBhY2hldsOpcyBldCBjZXV4IGRlcyBsw6lnaXNsYXR1cmVzIHByw6ljw6lkZW50ZXNcbiAgICAgIC8vICogeSBjb21wcmlzIGxldXJzIHBhcnRpcyBwb2xpdGlxdWVzIHByw6ljw6lkZW50c1xuICAgICAgLy8gKiBtYWlzIHNhbnMgbGV1ciBwYXJ0aSBwb2xpdGlxdWUgYWN0dWVsICh0eXBlT3JnYW5lOiBcIlBBUlBPTFwiKVxuICAgICAgLy9cbiAgICAgIC8vIENvbnRpZW50IGJlYXVjb3VwIGQnb3JnYW5lcyByw6lmw6lyZW5jw6lzLCB5IGNvbXByaXMgY2V1eCBkZXMgbMOpZ2lzbGF0dXJlc1xuICAgICAgLy8gcHLDqWPDqWRlbnRlc1xuICAgICAgLy8gKiBtYWlzIGlsIG1hbnF1ZSBsZSB4c2lUeXBlIGRlcyBvcmdhbmVzXG4gICAgICAvLyAqIG5lIGNvbnRpZW50IHBhcyBsZXMgb3JnYW5lcyBzw6luYXRvcmlhdXhcbiAgICAgIC8vICogbmUgY29udGllbnQgcGFzIGxlcyBtaW5pc3TDqHJlc1xuICAgICAgLy8gKiBuZSBjb250aWVudCBwYXMgbGEgUHLDqXNpZGVuY2UgZGUgbGEgUsOpcHVibGlxdWVcbiAgICAgIC8vICogbmUgY29udGllbnQgcGFzIGxlIENvbnNlaWwgY29uc3RpdHV0aW9ubmVsXG4gICAgICAvL1xuICAgICAgLy8gUG91ciBsZXMgYWN0ZXVycywgY2UgZMOpcMO0dCBlc3QgdW4gc291cy1lbnNlbWJsZSBzdHJpY3QgZGUgQU1PMzAgOlxuICAgICAgLy8gSWwgYSBtb2lucyBkJ2FjdGV1cnMgZXQgaWwgc29udCBtb2lucyBjb21wbGV0cy5cbiAgICAgIC8vXG4gICAgICAvLyBQb3VyIGxlcyBvcmdhbmVzIDpcbiAgICAgIC8vIFF1YW5kIGwnb3JnYW5lIGVzdCBhdXNzaSBwcsOpc2VudCBkYW5zIEFNTzMwLCBpbCB2YXV0IG1pZXV4IHByZW5kcmUgY2VsdWlcbiAgICAgIC8vIGQnQU1PMzAsIGNhciBpbCBjb250aWVudCBsZSB4c2lUeXBlIChjJ2VzdCBsYSBzZXVsZSBkaWZmw6lyZW5jZSBzZW1ibGUtdC1pKS5cbiAgICAgIC8vIFNpbm9uLCBpbCBmYXV0IGxlIHByZW5kcmUgc2V1bGVtZW50IHNpIG9uIGVzdCBpbnTDqXJlc3PDqSBwYXIgbGVzIGzDqWdpc2xhdHVyZXNcbiAgICAgIC8vIHByw6ljw6lkZW50ZXMuXG4gICAgICBmaWxlbmFtZTogXCJBTU80MF9kZXB1dGVzX2FjdGlmc19tYW5kYXRzX2FjdGlmc19vcmdhbmVzX2RpdmlzZXNfWFZJLmpzb25cIixcbiAgICAgIGlnbm9yZUZvcldlYjogdHJ1ZSxcbiAgICAgIGxlZ2lzbGF0dXJlOiBMZWdpc2xhdHVyZS5TZWl6ZSxcbiAgICAgIHJlcGFpclppcDogKGRhdGFzZXQ6IERhdGFzZXQsIGRhdGFEaXI6IHN0cmluZykgPT4ge1xuICAgICAgICBjb25zdCB0YXJnZXREaXIgPSBwYXRoLmpvaW4oZGF0YURpciwgZGF0YXNldC5maWxlbmFtZSlcbiAgICAgICAgaWYgKGZzLmV4aXN0c1N5bmModGFyZ2V0RGlyKSkge1xuICAgICAgICAgIGZzLnJlbW92ZVN5bmModGFyZ2V0RGlyKVxuICAgICAgICB9XG4gICAgICAgIGZzLm1rZGlyU3luYyh0YXJnZXREaXIpXG4gICAgICAgIGZzLm1vdmVTeW5jKFxuICAgICAgICAgIHBhdGguam9pbihkYXRhRGlyLCBcImFjdGV1clwiKSxcbiAgICAgICAgICBwYXRoLmpvaW4odGFyZ2V0RGlyLCBcImFjdGV1clwiKSxcbiAgICAgICAgKVxuICAgICAgICBmcy5tb3ZlU3luYyhcbiAgICAgICAgICBwYXRoLmpvaW4oZGF0YURpciwgXCJvcmdhbmVcIiksXG4gICAgICAgICAgcGF0aC5qb2luKHRhcmdldERpciwgXCJvcmdhbmVcIiksXG4gICAgICAgIClcbiAgICAgIH0sXG4gICAgICBzdHJ1Y3R1cmU6IERhdGFzZXRTdHJ1Y3R1cmUuU2VnbWVudGVkRmlsZXMsXG4gICAgICB0aXRsZTogXCJEw6lwdXTDqXMgYWN0aWZzIGV0IG9yZ2FuZXMgZGUgbGEgWFZJw6htZSBsw6lnaXNsYXR1cmVcIixcbiAgICAgIHVybDogXCJodHRwOi8vZGF0YS5hc3NlbWJsZWUtbmF0aW9uYWxlLmZyL3N0YXRpYy9vcGVuRGF0YS9yZXBvc2l0b3J5LzE2L2Ftby9kZXB1dGVzX2FjdGlmc19tYW5kYXRzX2FjdGlmc19vcmdhbmVzX2RpdmlzZXMvQU1PNDBfZGVwdXRlc19hY3RpZnNfbWFuZGF0c19hY3RpZnNfb3JnYW5lc19kaXZpc2VzLmpzb24uemlwXCIsXG4gICAgfSxcbiAgICB7XG4gICAgICAvLyBBTU80MCAoWFYpXG4gICAgICAvL1xuICAgICAgLy8gQ29udGllbnQgbGVzIGTDqXB1dMOpcyBhY3RpZnMgKGxlcyBtw6ptZXMgcXUnQU1PMjApXG4gICAgICAvLyAqIGF2ZWMgcHJlc3F1ZSB0b3VzIGxldXJzIG1hbmRhdHNcbiAgICAgIC8vICogeSBjb21wcmlzIGxlcyBtYW5kYXRzIGFjaGV2w6lzIGV0IGNldXggZGVzIGzDqWdpc2xhdHVyZXMgcHLDqWPDqWRlbnRlc1xuICAgICAgLy8gKiB5IGNvbXByaXMgbGV1cnMgcGFydGlzIHBvbGl0aXF1ZXMgcHLDqWPDqWRlbnRzXG4gICAgICAvLyAqIG1haXMgc2FucyBsZXVyIHBhcnRpIHBvbGl0aXF1ZSBhY3R1ZWwgKHR5cGVPcmdhbmU6IFwiUEFSUE9MXCIpXG4gICAgICAvL1xuICAgICAgLy8gQ29udGllbnQgYmVhdWNvdXAgZCdvcmdhbmVzIHLDqWbDqXJlbmPDqXMsIHkgY29tcHJpcyBjZXV4IGRlcyBsw6lnaXNsYXR1cmVzXG4gICAgICAvLyBwcsOpY8OpZGVudGVzXG4gICAgICAvLyAqIG1haXMgaWwgbWFucXVlIGxlIHhzaVR5cGUgZGVzIG9yZ2FuZXNcbiAgICAgIC8vICogbmUgY29udGllbnQgcGFzIGxlcyBvcmdhbmVzIHPDqW5hdG9yaWF1eFxuICAgICAgLy8gKiBuZSBjb250aWVudCBwYXMgbGVzIG1pbmlzdMOocmVzXG4gICAgICAvLyAqIG5lIGNvbnRpZW50IHBhcyBsYSBQcsOpc2lkZW5jZSBkZSBsYSBSw6lwdWJsaXF1ZVxuICAgICAgLy8gKiBuZSBjb250aWVudCBwYXMgbGUgQ29uc2VpbCBjb25zdGl0dXRpb25uZWxcbiAgICAgIC8vXG4gICAgICAvLyBQb3VyIGxlcyBhY3RldXJzLCBjZSBkw6lww7R0IGVzdCB1biBzb3VzLWVuc2VtYmxlIHN0cmljdCBkZSBBTU8zMCA6XG4gICAgICAvLyBJbCBhIG1vaW5zIGQnYWN0ZXVycyBldCBpbCBzb250IG1vaW5zIGNvbXBsZXRzLlxuICAgICAgLy9cbiAgICAgIC8vIFBvdXIgbGVzIG9yZ2FuZXMgOlxuICAgICAgLy8gUXVhbmQgbCdvcmdhbmUgZXN0IGF1c3NpIHByw6lzZW50IGRhbnMgQU1PMzAsIGlsIHZhdXQgbWlldXggcHJlbmRyZSBjZWx1aVxuICAgICAgLy8gZCdBTU8zMCwgY2FyIGlsIGNvbnRpZW50IGxlIHhzaVR5cGUgKGMnZXN0IGxhIHNldWxlIGRpZmbDqXJlbmNlIHNlbWJsZS10LWkpLlxuICAgICAgLy8gU2lub24sIGlsIGZhdXQgbGUgcHJlbmRyZSBzZXVsZW1lbnQgc2kgb24gZXN0IGludMOpcmVzc8OpIHBhciBsZXMgbMOpZ2lzbGF0dXJlc1xuICAgICAgLy8gcHLDqWPDqWRlbnRlcy5cbiAgICAgIGZpbGVuYW1lOiBcIkFNTzQwX2RlcHV0ZXNfYWN0aWZzX21hbmRhdHNfYWN0aWZzX29yZ2FuZXNfZGl2aXNlc19YVi5qc29uXCIsXG4gICAgICBpZ25vcmVGb3JXZWI6IHRydWUsXG4gICAgICBsZWdpc2xhdHVyZTogTGVnaXNsYXR1cmUuUXVpbnplLFxuICAgICAgcmVwYWlyWmlwOiAoZGF0YXNldDogRGF0YXNldCwgZGF0YURpcjogc3RyaW5nKSA9PiB7XG4gICAgICAgIGNvbnN0IHRhcmdldERpciA9IHBhdGguam9pbihkYXRhRGlyLCBkYXRhc2V0LmZpbGVuYW1lKVxuICAgICAgICBpZiAoZnMuZXhpc3RzU3luYyh0YXJnZXREaXIpKSB7XG4gICAgICAgICAgZnMucmVtb3ZlU3luYyh0YXJnZXREaXIpXG4gICAgICAgIH1cbiAgICAgICAgZnMubWtkaXJTeW5jKHRhcmdldERpcilcbiAgICAgICAgZnMubW92ZVN5bmMoXG4gICAgICAgICAgcGF0aC5qb2luKGRhdGFEaXIsIFwiYWN0ZXVyXCIpLFxuICAgICAgICAgIHBhdGguam9pbih0YXJnZXREaXIsIFwiYWN0ZXVyXCIpLFxuICAgICAgICApXG4gICAgICAgIGZzLm1vdmVTeW5jKFxuICAgICAgICAgIHBhdGguam9pbihkYXRhRGlyLCBcIm9yZ2FuZVwiKSxcbiAgICAgICAgICBwYXRoLmpvaW4odGFyZ2V0RGlyLCBcIm9yZ2FuZVwiKSxcbiAgICAgICAgKVxuICAgICAgfSxcbiAgICAgIHN0cnVjdHVyZTogRGF0YXNldFN0cnVjdHVyZS5TZWdtZW50ZWRGaWxlcyxcbiAgICAgIHRpdGxlOiBcIkTDqXB1dMOpcyBhY3RpZnMgZXQgb3JnYW5lcyBkZSBsYSBYVsOobWUgbMOpZ2lzbGF0dXJlXCIsXG4gICAgICB1cmw6IFwiaHR0cDovL2RhdGEuYXNzZW1ibGVlLW5hdGlvbmFsZS5mci9zdGF0aWMvb3BlbkRhdGEvcmVwb3NpdG9yeS8xNS9hbW8vZGVwdXRlc19hY3RpZnNfbWFuZGF0c19hY3RpZnNfb3JnYW5lc19kaXZpc2VzL0FNTzQwX2RlcHV0ZXNfYWN0aWZzX21hbmRhdHNfYWN0aWZzX29yZ2FuZXNfZGl2aXNlc19YVi5qc29uLnppcFwiLFxuICAgIH0sXG4gICAge1xuICAgICAgLy8gQU1PNTAgKFhWSSlcbiAgICAgIC8vXG4gICAgICAvLyBBdHRlbnRpb24sIGNlIGZpY2hpZXIgbidlc3QgcGFzIG1pcyDDoCBqb3VyIHLDqWd1bGnDqHJlbWVudCAhXG4gICAgICAvL1xuICAgICAgLy8gUG91ciBsZXMgYWN0ZXVycyA6XG4gICAgICAvLyAqIGMnZXN0IHVuIHNvdXMgZW5zZW1ibGUgb2Jzb2zDqHRlIGQnQU1PMzBcbiAgICAgIC8vICogaWwgbWFucXVlIGxlcyB4c2lUeXBlIGF1eCBtYW5kYXRzXG4gICAgICAvL1xuICAgICAgLy8gUG91ciBsZXMgb3JnYW5lcyA6XG4gICAgICAvLyAqIGMnZXN0IHVuIHNvdXMgZW5zZW1ibGUgb2Jzb2zDqHRlIGQnQU1PMzBcbiAgICAgIC8vICogaWwgbWFucXVlIGxlcyB4c2lUeXBlXG4gICAgICAvL1xuICAgICAgLy8gQ2UgZmljaGllciBuJ2FwcG9ydGUgZG9uYyBhYnNvbHVtZW50IHJpZW4gcGFyIHJhcHBvcnQgw6AgbCdBTU8zMCxcbiAgICAgIC8vIGRvbnQgaWwgZXN0IHVuIHNvdXMgZW5zZW1ibGUgb2Jzb2zDqHRlLlxuICAgICAgZmlsZW5hbWU6IFwiQU1PNTBfYWN0ZXVyc19tYW5kYXRzX29yZ2FuZXNfZGl2aXNlc19YVkkuanNvblwiLFxuICAgICAgaWdub3JlRm9yV2ViOiB0cnVlLFxuICAgICAgbGVnaXNsYXR1cmU6IExlZ2lzbGF0dXJlLlNlaXplLFxuICAgICAgcmVwYWlyWmlwOiAoZGF0YXNldDogRGF0YXNldCwgZGF0YURpcjogc3RyaW5nKSA9PiB7XG4gICAgICAgIGNvbnN0IHRhcmdldERpciA9IHBhdGguam9pbihkYXRhRGlyLCBkYXRhc2V0LmZpbGVuYW1lKVxuICAgICAgICBpZiAoZnMuZXhpc3RzU3luYyh0YXJnZXREaXIpKSB7XG4gICAgICAgICAgZnMucmVtb3ZlU3luYyh0YXJnZXREaXIpXG4gICAgICAgIH1cbiAgICAgICAgZnMubWtkaXJTeW5jKHRhcmdldERpcilcbiAgICAgICAgZnMubW92ZVN5bmMoXG4gICAgICAgICAgcGF0aC5qb2luKGRhdGFEaXIsIFwibWFuZGF0XCIpLFxuICAgICAgICAgIHBhdGguam9pbih0YXJnZXREaXIsIFwibWFuZGF0XCIpLFxuICAgICAgICApXG4gICAgICAgIGZzLm1vdmVTeW5jKFxuICAgICAgICAgIHBhdGguam9pbihkYXRhRGlyLCBcImFjdGV1clwiKSxcbiAgICAgICAgICBwYXRoLmpvaW4odGFyZ2V0RGlyLCBcImFjdGV1clwiKSxcbiAgICAgICAgKVxuICAgICAgICBmcy5tb3ZlU3luYyhcbiAgICAgICAgICBwYXRoLmpvaW4oZGF0YURpciwgXCJvcmdhbmVcIiksXG4gICAgICAgICAgcGF0aC5qb2luKHRhcmdldERpciwgXCJvcmdhbmVcIiksXG4gICAgICAgIClcbiAgICAgIH0sXG4gICAgICBzdHJ1Y3R1cmU6IERhdGFzZXRTdHJ1Y3R1cmUuU2VnbWVudGVkRmlsZXMsXG4gICAgICB0aXRsZTpcbiAgICAgICAgXCJBY3RldXJzLCBtYW5kYXRzIGV0IG9yZ2FuZXMgZGUgbGEgWFZJw6htZSBsw6lnaXNsYXR1cmUgKGZpY2hpZXJzIHPDqXBhcsOpcywgeSBjb21wcmlzIG1hbmRhdHMpXCIsXG4gICAgICB1cmw6IFwiaHR0cDovL2RhdGEuYXNzZW1ibGVlLW5hdGlvbmFsZS5mci9zdGF0aWMvb3BlbkRhdGEvcmVwb3NpdG9yeS8xNi9hbW8vYWN0ZXVyc19tYW5kYXRzX29yZ2FuZXNfZGl2aXNlcy9BTU81MF9hY3RldXJzX21hbmRhdHNfb3JnYW5lc19kaXZpc2VzLmpzb24uemlwXCIsXG4gICAgfSxcbiAgICB7XG4gICAgICAvLyBBTU81MCAoWFYpXG4gICAgICAvL1xuICAgICAgLy8gQXR0ZW50aW9uLCBjZSBmaWNoaWVyIG4nZXN0IHBhcyBtaXMgw6Agam91ciByw6lndWxpw6hyZW1lbnQgIVxuICAgICAgLy9cbiAgICAgIC8vIFBvdXIgbGVzIGFjdGV1cnMgOlxuICAgICAgLy8gKiBjJ2VzdCB1biBzb3VzIGVuc2VtYmxlIG9ic29sw6h0ZSBkJ0FNTzMwXG4gICAgICAvLyAqIGlsIG1hbnF1ZSBsZXMgeHNpVHlwZSBhdXggbWFuZGF0c1xuICAgICAgLy9cbiAgICAgIC8vIFBvdXIgbGVzIG9yZ2FuZXMgOlxuICAgICAgLy8gKiBjJ2VzdCB1biBzb3VzIGVuc2VtYmxlIG9ic29sw6h0ZSBkJ0FNTzMwXG4gICAgICAvLyAqIGlsIG1hbnF1ZSBsZXMgeHNpVHlwZVxuICAgICAgLy9cbiAgICAgIC8vIENlIGZpY2hpZXIgbidhcHBvcnRlIGRvbmMgYWJzb2x1bWVudCByaWVuIHBhciByYXBwb3J0IMOgIGwnQU1PMzAsXG4gICAgICAvLyBkb250IGlsIGVzdCB1biBzb3VzIGVuc2VtYmxlIG9ic29sw6h0ZS5cbiAgICAgIGZpbGVuYW1lOiBcIkFNTzUwX2FjdGV1cnNfbWFuZGF0c19vcmdhbmVzX2RpdmlzZXNfWFYuanNvblwiLFxuICAgICAgaWdub3JlRm9yV2ViOiB0cnVlLFxuICAgICAgbGVnaXNsYXR1cmU6IExlZ2lzbGF0dXJlLlF1aW56ZSxcbiAgICAgIHJlcGFpclppcDogKGRhdGFzZXQ6IERhdGFzZXQsIGRhdGFEaXI6IHN0cmluZykgPT4ge1xuICAgICAgICBjb25zdCB0YXJnZXREaXIgPSBwYXRoLmpvaW4oZGF0YURpciwgZGF0YXNldC5maWxlbmFtZSlcbiAgICAgICAgaWYgKGZzLmV4aXN0c1N5bmModGFyZ2V0RGlyKSkge1xuICAgICAgICAgIGZzLnJlbW92ZVN5bmModGFyZ2V0RGlyKVxuICAgICAgICB9XG4gICAgICAgIGZzLm1rZGlyU3luYyh0YXJnZXREaXIpXG4gICAgICAgIGZzLm1vdmVTeW5jKFxuICAgICAgICAgIHBhdGguam9pbihkYXRhRGlyLCBcIm1hbmRhdFwiKSxcbiAgICAgICAgICBwYXRoLmpvaW4odGFyZ2V0RGlyLCBcIm1hbmRhdFwiKSxcbiAgICAgICAgKVxuICAgICAgICBmcy5tb3ZlU3luYyhcbiAgICAgICAgICBwYXRoLmpvaW4oZGF0YURpciwgXCJhY3RldXJcIiksXG4gICAgICAgICAgcGF0aC5qb2luKHRhcmdldERpciwgXCJhY3RldXJcIiksXG4gICAgICAgIClcbiAgICAgICAgZnMubW92ZVN5bmMoXG4gICAgICAgICAgcGF0aC5qb2luKGRhdGFEaXIsIFwib3JnYW5lXCIpLFxuICAgICAgICAgIHBhdGguam9pbih0YXJnZXREaXIsIFwib3JnYW5lXCIpLFxuICAgICAgICApXG4gICAgICB9LFxuICAgICAgc3RydWN0dXJlOiBEYXRhc2V0U3RydWN0dXJlLlNlZ21lbnRlZEZpbGVzLFxuICAgICAgdGl0bGU6XG4gICAgICAgIFwiQWN0ZXVycywgbWFuZGF0cyBldCBvcmdhbmVzIGRlIGxhIFhWw6htZSBsw6lnaXNsYXR1cmUgKGZpY2hpZXJzIHPDqXBhcsOpcywgeSBjb21wcmlzIG1hbmRhdHMpXCIsXG4gICAgICB1cmw6IFwiaHR0cDovL2RhdGEuYXNzZW1ibGVlLW5hdGlvbmFsZS5mci9zdGF0aWMvb3BlbkRhdGEvcmVwb3NpdG9yeS8xNS9hbW8vYWN0ZXVyc19tYW5kYXRzX29yZ2FuZXNfZGl2aXNlcy9BTU81MF9hY3RldXJzX21hbmRhdHNfb3JnYW5lc19kaXZpc2VzX1hWLmpzb24uemlwXCIsXG4gICAgfSxcbiAgXSxcbiAgYWdlbmRhczogW1xuICAgIHtcbiAgICAgIGZpbGVuYW1lOiBcIkFnZW5kYV9YVkkuanNvblwiLFxuICAgICAgbGVnaXNsYXR1cmU6IExlZ2lzbGF0dXJlLlNlaXplLFxuICAgICAgcmVwYWlyWmlwOiAoZGF0YXNldDogRGF0YXNldCwgZGF0YURpcjogc3RyaW5nKSA9PiB7XG4gICAgICAgIGNvbnN0IHRhcmdldERpciA9IHBhdGguam9pbihkYXRhRGlyLCBkYXRhc2V0LmZpbGVuYW1lKVxuICAgICAgICBpZiAoZnMuZXhpc3RzU3luYyh0YXJnZXREaXIpKSB7XG4gICAgICAgICAgZnMucmVtb3ZlU3luYyh0YXJnZXREaXIpXG4gICAgICAgIH1cbiAgICAgICAgZnMubW92ZVN5bmMocGF0aC5qb2luKGRhdGFEaXIsIFwianNvblwiKSwgdGFyZ2V0RGlyKVxuICAgICAgfSxcbiAgICAgIHN0cnVjdHVyZTogRGF0YXNldFN0cnVjdHVyZS5TZWdtZW50ZWRGaWxlcyxcbiAgICAgIHRpdGxlOiBcIkFnZW5kYSBkZSBsYSBYVknDqG1lIGzDqWdpc2xhdHVyZVwiLFxuICAgICAgdXJsOiBcImh0dHA6Ly9kYXRhLmFzc2VtYmxlZS1uYXRpb25hbGUuZnIvc3RhdGljL29wZW5EYXRhL3JlcG9zaXRvcnkvMTYvdnAvcmV1bmlvbnMvQWdlbmRhLmpzb24uemlwXCIsXG4gICAgfSxcbiAgICB7XG4gICAgICBmaWxlbmFtZTogXCJBZ2VuZGFfWFYuanNvblwiLFxuICAgICAgbGVnaXNsYXR1cmU6IExlZ2lzbGF0dXJlLlF1aW56ZSxcbiAgICAgIHJlcGFpclppcDogKGRhdGFzZXQ6IERhdGFzZXQsIGRhdGFEaXI6IHN0cmluZykgPT4ge1xuICAgICAgICBjb25zdCB0YXJnZXREaXIgPSBwYXRoLmpvaW4oZGF0YURpciwgZGF0YXNldC5maWxlbmFtZSlcbiAgICAgICAgaWYgKGZzLmV4aXN0c1N5bmModGFyZ2V0RGlyKSkge1xuICAgICAgICAgIGZzLnJlbW92ZVN5bmModGFyZ2V0RGlyKVxuICAgICAgICB9XG4gICAgICAgIGZzLm1vdmVTeW5jKHBhdGguam9pbihkYXRhRGlyLCBcImpzb25cIiksIHRhcmdldERpcilcbiAgICAgIH0sXG4gICAgICBzdHJ1Y3R1cmU6IERhdGFzZXRTdHJ1Y3R1cmUuU2VnbWVudGVkRmlsZXMsXG4gICAgICB0aXRsZTogXCJBZ2VuZGEgZGUgbGEgWFbDqG1lIGzDqWdpc2xhdHVyZVwiLFxuICAgICAgdXJsOiBcImh0dHA6Ly9kYXRhLmFzc2VtYmxlZS1uYXRpb25hbGUuZnIvc3RhdGljL29wZW5EYXRhL3JlcG9zaXRvcnkvMTUvdnAvcmV1bmlvbnMvQWdlbmRhX1hWLmpzb24uemlwXCIsXG4gICAgfSxcbiAgICB7XG4gICAgICBmaWxlbmFtZTogXCJBZ2VuZGFfWElWLmpzb25cIixcbiAgICAgIGxlZ2lzbGF0dXJlOiBMZWdpc2xhdHVyZS5RdWF0b3J6ZSxcbiAgICAgIHN0cnVjdHVyZTogRGF0YXNldFN0cnVjdHVyZS5TaW5nbGVGaWxlLFxuICAgICAgdGl0bGU6IFwiQWdlbmRhIGRlIGxhIFhJVsOobWUgbMOpZ2lzbGF0dXJlXCIsXG4gICAgICB1cmw6IFwiaHR0cDovL2RhdGEuYXNzZW1ibGVlLW5hdGlvbmFsZS5mci9zdGF0aWMvb3BlbkRhdGEvcmVwb3NpdG9yeS8xNC92cC9yZXVuaW9ucy9BZ2VuZGFfWElWLmpzb24uemlwXCIsXG4gICAgfSxcbiAgXSxcbiAgYW1lbmRlbWVudHM6IFtcbiAgICB7XG4gICAgICBmaWxlbmFtZTogXCJBbWVuZGVtZW50c19YVkkuanNvblwiLFxuICAgICAgbGVnaXNsYXR1cmU6IExlZ2lzbGF0dXJlLlNlaXplLFxuICAgICAgcmVwYWlyWmlwOiAoZGF0YXNldDogRGF0YXNldCwgZGF0YURpcjogc3RyaW5nKSA9PiB7XG4gICAgICAgIGNvbnN0IHRhcmdldERpciA9IHBhdGguam9pbihkYXRhRGlyLCBkYXRhc2V0LmZpbGVuYW1lKVxuICAgICAgICBpZiAoZnMuZXhpc3RzU3luYyh0YXJnZXREaXIpKSB7XG4gICAgICAgICAgZnMucmVtb3ZlU3luYyh0YXJnZXREaXIpXG4gICAgICAgIH1cbiAgICAgICAgZnMubW92ZVN5bmMocGF0aC5qb2luKGRhdGFEaXIsIFwianNvblwiKSwgdGFyZ2V0RGlyKVxuICAgICAgfSxcbiAgICAgIHN0cnVjdHVyZTogRGF0YXNldFN0cnVjdHVyZS5TZWdtZW50ZWRGaWxlcyxcbiAgICAgIHRpdGxlOiBcIkFtZW5kZW1lbnRzIGRlIGxhIFhWScOobWUgbMOpZ2lzbGF0dXJlXCIsXG4gICAgICB1cmw6IFwiaHR0cDovL2RhdGEuYXNzZW1ibGVlLW5hdGlvbmFsZS5mci9zdGF0aWMvb3BlbkRhdGEvcmVwb3NpdG9yeS8xNi9sb2kvYW1lbmRlbWVudHNfZGl2X2xlZ2lzL0FtZW5kZW1lbnRzLmpzb24uemlwXCIsXG4gICAgfSxcbiAgICB7XG4gICAgICBmaWxlbmFtZTogXCJBbWVuZGVtZW50c19YVi5qc29uXCIsXG4gICAgICBsZWdpc2xhdHVyZTogTGVnaXNsYXR1cmUuUXVpbnplLFxuICAgICAgcmVwYWlyWmlwOiAoZGF0YXNldDogRGF0YXNldCwgZGF0YURpcjogc3RyaW5nKSA9PiB7XG4gICAgICAgIGNvbnN0IHRhcmdldERpciA9IHBhdGguam9pbihkYXRhRGlyLCBkYXRhc2V0LmZpbGVuYW1lKVxuICAgICAgICBpZiAoZnMuZXhpc3RzU3luYyh0YXJnZXREaXIpKSB7XG4gICAgICAgICAgZnMucmVtb3ZlU3luYyh0YXJnZXREaXIpXG4gICAgICAgIH1cbiAgICAgICAgZnMubW92ZVN5bmMocGF0aC5qb2luKGRhdGFEaXIsIFwianNvblwiKSwgdGFyZ2V0RGlyKVxuICAgICAgfSxcbiAgICAgIHN0cnVjdHVyZTogRGF0YXNldFN0cnVjdHVyZS5TZWdtZW50ZWRGaWxlcyxcbiAgICAgIHRpdGxlOiBcIkFtZW5kZW1lbnRzIGRlIGxhIFhWw6htZSBsw6lnaXNsYXR1cmVcIixcbiAgICAgIHVybDogXCJodHRwOi8vZGF0YS5hc3NlbWJsZWUtbmF0aW9uYWxlLmZyL3N0YXRpYy9vcGVuRGF0YS9yZXBvc2l0b3J5LzE1L2xvaS9hbWVuZGVtZW50c19sZWdpcy9BbWVuZGVtZW50c19YVi5qc29uLnppcFwiLFxuICAgIH0sXG4gICAgLy8ge1xuICAgIC8vICAgZmlsZW5hbWU6IFwiQW1lbmRlbWVudHNfWElWLmpzb25cIixcbiAgICAvLyAgIGlnbm9yZUZvcldlYjogdHJ1ZSxcbiAgICAvLyAgIGxlZ2lzbGF0dXJlOiBMZWdpc2xhdHVyZS5RdWF0b3J6ZSxcbiAgICAvLyAgIHN0cnVjdHVyZTogRGF0YXNldFN0cnVjdHVyZS5TaW5nbGVGaWxlLFxuICAgIC8vICAgdGl0bGU6IFwiQW1lbmRlbWVudHMgZGUgbGEgWElWw6htZSBsw6lnaXNsYXR1cmVcIixcbiAgICAvLyAgIHVybDpcbiAgICAvLyAgICAgXCJodHRwOi8vZGF0YS5hc3NlbWJsZWUtbmF0aW9uYWxlLmZyL3N0YXRpYy9vcGVuRGF0YS9yZXBvc2l0b3J5LzE0L2xvaS9hbWVuZGVtZW50c19sZWdpc19YSVYvQW1lbmRlbWVudHNfWElWLmpzb24uemlwXCIsXG4gICAgLy8gfSxcbiAgXSxcbiAgZG9zc2llcnNMZWdpc2xhdGlmczogW1xuICAgIHtcbiAgICAgIGZpbGVuYW1lOiBcIkRvc3NpZXJzX0xlZ2lzbGF0aWZzX1hWSS5qc29uXCIsXG4gICAgICBsZWdpc2xhdHVyZTogTGVnaXNsYXR1cmUuU2VpemUsXG4gICAgICByZXBhaXJaaXA6IChkYXRhc2V0OiBEYXRhc2V0LCBkYXRhRGlyOiBzdHJpbmcpID0+IHtcbiAgICAgICAgY29uc3QgdGFyZ2V0RGlyID0gcGF0aC5qb2luKGRhdGFEaXIsIGRhdGFzZXQuZmlsZW5hbWUpXG4gICAgICAgIGlmIChmcy5leGlzdHNTeW5jKHRhcmdldERpcikpIHtcbiAgICAgICAgICBmcy5yZW1vdmVTeW5jKHRhcmdldERpcilcbiAgICAgICAgfVxuICAgICAgICBmcy5tb3ZlU3luYyhwYXRoLmpvaW4oZGF0YURpciwgXCJqc29uXCIpLCB0YXJnZXREaXIpXG4gICAgICB9LFxuICAgICAgc3RydWN0dXJlOiBEYXRhc2V0U3RydWN0dXJlLlNlZ21lbnRlZEZpbGVzLFxuICAgICAgdGl0bGU6IFwiRG9zc2llcnMgbMOpZ2lzbGF0aWZzIGRlIGxhIFhWScOobWUgbMOpZ2lzbGF0dXJlXCIsXG4gICAgICB1cmw6IFwiaHR0cDovL2RhdGEuYXNzZW1ibGVlLW5hdGlvbmFsZS5mci9zdGF0aWMvb3BlbkRhdGEvcmVwb3NpdG9yeS8xNi9sb2kvZG9zc2llcnNfbGVnaXNsYXRpZnMvRG9zc2llcnNfTGVnaXNsYXRpZnMuanNvbi56aXBcIixcbiAgICB9LFxuICAgIHtcbiAgICAgIGZpbGVuYW1lOiBcIkRvc3NpZXJzX0xlZ2lzbGF0aWZzX1hWLmpzb25cIixcbiAgICAgIGxlZ2lzbGF0dXJlOiBMZWdpc2xhdHVyZS5RdWluemUsXG4gICAgICByZXBhaXJaaXA6IChkYXRhc2V0OiBEYXRhc2V0LCBkYXRhRGlyOiBzdHJpbmcpID0+IHtcbiAgICAgICAgY29uc3QgdGFyZ2V0RGlyID0gcGF0aC5qb2luKGRhdGFEaXIsIGRhdGFzZXQuZmlsZW5hbWUpXG4gICAgICAgIGlmIChmcy5leGlzdHNTeW5jKHRhcmdldERpcikpIHtcbiAgICAgICAgICBmcy5yZW1vdmVTeW5jKHRhcmdldERpcilcbiAgICAgICAgfVxuICAgICAgICBmcy5tb3ZlU3luYyhwYXRoLmpvaW4oZGF0YURpciwgXCJqc29uXCIpLCB0YXJnZXREaXIpXG4gICAgICB9LFxuICAgICAgc3RydWN0dXJlOiBEYXRhc2V0U3RydWN0dXJlLlNlZ21lbnRlZEZpbGVzLFxuICAgICAgdGl0bGU6IFwiRG9zc2llcnMgbMOpZ2lzbGF0aWZzIGRlIGxhIFhWw6htZSBsw6lnaXNsYXR1cmVcIixcbiAgICAgIHVybDogXCJodHRwOi8vZGF0YS5hc3NlbWJsZWUtbmF0aW9uYWxlLmZyL3N0YXRpYy9vcGVuRGF0YS9yZXBvc2l0b3J5LzE1L2xvaS9kb3NzaWVyc19sZWdpc2xhdGlmcy9Eb3NzaWVyc19MZWdpc2xhdGlmc19YVi5qc29uLnppcFwiLFxuICAgIH0sXG4gICAge1xuICAgICAgZmlsZW5hbWU6IFwiRG9zc2llcnNfTGVnaXNsYXRpZnNfWElWLmpzb25cIixcbiAgICAgIGlnbm9yZUZvcldlYjogdHJ1ZSxcbiAgICAgIGxlZ2lzbGF0dXJlOiBMZWdpc2xhdHVyZS5RdWF0b3J6ZSxcbiAgICAgIHN0cnVjdHVyZTogRGF0YXNldFN0cnVjdHVyZS5TaW5nbGVGaWxlLFxuICAgICAgdGl0bGU6IFwiRG9zc2llcnMgbMOpZ2lzbGF0aWZzIGRlIGxhIFhJVsOobWUgbMOpZ2lzbGF0dXJlXCIsXG4gICAgICB1cmw6IFwiaHR0cDovL2RhdGEuYXNzZW1ibGVlLW5hdGlvbmFsZS5mci9zdGF0aWMvb3BlbkRhdGEvcmVwb3NpdG9yeS8xNC9sb2kvZG9zc2llcnNfbGVnaXNsYXRpZnMvRG9zc2llcnNfTGVnaXNsYXRpZnNfWElWLmpzb24uemlwXCIsXG4gICAgfSxcbiAgXSxcbiAgc2NydXRpbnM6IFtcbiAgICAvLyB7XG4gICAgLy8gICBmaWxlbmFtZTogXCJTY3J1dGluc19YVkkuanNvblwiLFxuICAgIC8vICAgbGVnaXNsYXR1cmU6IExlZ2lzbGF0dXJlLlNlaXplLFxuICAgIC8vICAgcmVwYWlyWmlwOiAoZGF0YXNldDogRGF0YXNldCwgZGF0YURpcjogc3RyaW5nKSA9PiB7XG4gICAgLy8gICAgIGNvbnN0IHRhcmdldERpciA9IHBhdGguam9pbihkYXRhRGlyLCBkYXRhc2V0LmZpbGVuYW1lKVxuICAgIC8vICAgICBpZiAoZnMuZXhpc3RzU3luYyh0YXJnZXREaXIpKSB7XG4gICAgLy8gICAgICAgZnMucmVtb3ZlU3luYyh0YXJnZXREaXIpXG4gICAgLy8gICAgIH1cbiAgICAvLyAgICAgZnMubW92ZVN5bmMocGF0aC5qb2luKGRhdGFEaXIsIFwianNvblwiKSwgdGFyZ2V0RGlyKVxuICAgIC8vICAgfSxcbiAgICAvLyAgIHN0cnVjdHVyZTogRGF0YXNldFN0cnVjdHVyZS5TZWdtZW50ZWRGaWxlcyxcbiAgICAvLyAgIHRpdGxlOiBcIlNjcnV0aW5zIGRlIGxhIFhWScOobWUgbMOpZ2lzbGF0dXJlXCIsXG4gICAgLy8gICB1cmw6IFwiaHR0cDovL2RhdGEuYXNzZW1ibGVlLW5hdGlvbmFsZS5mci9zdGF0aWMvb3BlbkRhdGEvcmVwb3NpdG9yeS8xNi9sb2kvc2NydXRpbnMvU2NydXRpbnMuanNvbi56aXBcIixcbiAgICAvLyB9LFxuICAgIHtcbiAgICAgIGZpbGVuYW1lOiBcIlNjcnV0aW5zX1hWLmpzb25cIixcbiAgICAgIGxlZ2lzbGF0dXJlOiBMZWdpc2xhdHVyZS5RdWluemUsXG4gICAgICByZXBhaXJaaXA6IChkYXRhc2V0OiBEYXRhc2V0LCBkYXRhRGlyOiBzdHJpbmcpID0+IHtcbiAgICAgICAgY29uc3QgdGFyZ2V0RGlyID0gcGF0aC5qb2luKGRhdGFEaXIsIGRhdGFzZXQuZmlsZW5hbWUpXG4gICAgICAgIGlmIChmcy5leGlzdHNTeW5jKHRhcmdldERpcikpIHtcbiAgICAgICAgICBmcy5yZW1vdmVTeW5jKHRhcmdldERpcilcbiAgICAgICAgfVxuICAgICAgICBmcy5tb3ZlU3luYyhwYXRoLmpvaW4oZGF0YURpciwgXCJqc29uXCIpLCB0YXJnZXREaXIpXG4gICAgICB9LFxuICAgICAgc3RydWN0dXJlOiBEYXRhc2V0U3RydWN0dXJlLlNlZ21lbnRlZEZpbGVzLFxuICAgICAgdGl0bGU6IFwiU2NydXRpbnMgZGUgbGEgWFbDqG1lIGzDqWdpc2xhdHVyZVwiLFxuICAgICAgdXJsOiBcImh0dHA6Ly9kYXRhLmFzc2VtYmxlZS1uYXRpb25hbGUuZnIvc3RhdGljL29wZW5EYXRhL3JlcG9zaXRvcnkvMTUvbG9pL3NjcnV0aW5zL1NjcnV0aW5zX1hWLmpzb24uemlwXCIsXG4gICAgfSxcbiAgICB7XG4gICAgICBmaWxlbmFtZTogXCJTY3J1dGluc19YSVYuanNvblwiLFxuICAgICAgaWdub3JlRm9yV2ViOiB0cnVlLFxuICAgICAgbGVnaXNsYXR1cmU6IExlZ2lzbGF0dXJlLlF1YXRvcnplLFxuICAgICAgc3RydWN0dXJlOiBEYXRhc2V0U3RydWN0dXJlLlNpbmdsZUZpbGUsXG4gICAgICB0aXRsZTogXCJTY3J1dGlucyBkZSBsYSBYSVbDqG1lIGzDqWdpc2xhdHVyZVwiLFxuICAgICAgdXJsOiBcImh0dHA6Ly9kYXRhLmFzc2VtYmxlZS1uYXRpb25hbGUuZnIvc3RhdGljL29wZW5EYXRhL3JlcG9zaXRvcnkvMTQvbG9pL3NjcnV0aW5zL1NjcnV0aW5zX1hJVi5qc29uLnppcFwiLFxuICAgIH0sXG4gIF0sXG59XG5cbmNvbnN0IGRpcmVjdG9yeTJzY2hlbWE6IGFueSA9IHtcbiAgXCIuKkFnZW5kYV8uKlwiOiBcImFnZW5kYVwiLFxuICBcIi4qU2NydXRpbnNfLipcIjogXCJzY3J1dGluXCIsXG4gIFwiLipBbWVuZGVtZW50c18uKlwiOiBcImFtZW5kZW1lbnRcIixcbiAgXCIuKkRvc3NpZXJzX0xlZ2lzbGF0aWZzXy4qL2RvY3VtZW50c1wiOiBcImRvY3VtZW50XCIsXG4gIFwiLipEb3NzaWVyc19MZWdpc2xhdGlmc18uKi9kb3NzaWVyc1wiOiBcImRvc3NpZXJcIixcbiAgXCIuKmFjdGV1cnNfbWFuZGF0c19vcmdhbmVzL29yZ2FuZXNcIjogXCJvcmdhbmVcIixcbiAgXCIuKmFjdGV1cnNfbWFuZGF0c19vcmdhbmVzL2FjdGV1cnNcIjogXCJhY3RldXJcIixcbiAgXCIuKkFNTzMwX3RvdXNfYWN0ZXVyc190b3VzX21hbmRhdHNfdG91c19vcmdhbmVzX2hpc3RvcmlxdWUuKi9vcmdhbmVzXCI6XG4gICAgXCJvcmdhbmVcIixcbiAgXCIuKkFNTzMwX3RvdXNfYWN0ZXVyc190b3VzX21hbmRhdHNfdG91c19vcmdhbmVzX2hpc3RvcmlxdWUuKi9hY3RldXJzXCI6XG4gICAgXCJhY3RldXJcIixcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldERhdGFzZXRzKCk6IGFueSB7XG4gIHJldHVybiBbXG4gICAgXCJBZ2VuZGFfWElWXCIsXG4gICAgXCJBZ2VuZGFfWFZcIixcbiAgICBcIkFnZW5kYV9YVklcIixcbiAgICBcIlNjcnV0aW5zX1hJVlwiLFxuICAgIFwiU2NydXRpbnNfWFZcIixcbiAgICAvLyBcIlNjcnV0aW5zX1hWSVwiLFxuICAgIFwiQW1lbmRlbWVudHNfWElWXCIsXG4gICAgXCJBbWVuZGVtZW50c19YVlwiLFxuICAgIFwiQW1lbmRlbWVudHNfWFZJXCIsXG4gICAgXCJEb3NzaWVyc19MZWdpc2xhdGlmc19YSVZcIixcbiAgICBcIkRvc3NpZXJzX0xlZ2lzbGF0aWZzX1hWXCIsXG4gICAgXCJEb3NzaWVyc19MZWdpc2xhdGlmc19YVklcIixcbiAgICBcIkFNTzMwX3RvdXNfYWN0ZXVyc190b3VzX21hbmRhdHNfdG91c19vcmdhbmVzX2hpc3RvcmlxdWVcIixcbiAgICBcImFjdGV1cnNfbWFuZGF0c19vcmdhbmVzXCIsXG4gIF1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkRGF0YXNldChkaXI6IGFueSk6IGFueSB7XG4gIGZvciAoY29uc3QgZGF0YXNldCBvZiBnZXREYXRhc2V0cygpKSB7XG4gICAgaWYgKGRpci5pbmNsdWRlcyhkYXRhc2V0KSkgcmV0dXJuIHRydWVcbiAgfVxuICByZXR1cm4gZmFsc2Vcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFNjaGVtYXMoKTogYW55IHtcbiAgcmV0dXJuIE9iamVjdC52YWx1ZXMoZGlyZWN0b3J5MnNjaGVtYSlcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRhdGFzZXREaXJlY3RvcnlTY2hlbWEoZGF0YXNldDogc3RyaW5nKTogYW55IHtcbiAgbGV0IGRpcmVjdG9yaWVzOiBhbnlcbiAgaWYgKGRhdGFzZXQuaW5jbHVkZXMoXCJEb3NzaWVyc19MZWdpc2xhdGlmc19cIikpIHtcbiAgICBkaXJlY3RvcmllcyA9IFtgJHtkYXRhc2V0fS9kb2N1bWVudHNgLCBgJHtkYXRhc2V0fS9kb3NzaWVyc2BdXG4gIH0gZWxzZSBpZiAoXG4gICAgZGF0YXNldC5pbmNsdWRlcyhcImFjdGV1cnNfbWFuZGF0c19vcmdhbmVzXCIpIHx8XG4gICAgZGF0YXNldC5pbmNsdWRlcyhcIkFNTzMwX3RvdXNfYWN0ZXVyc190b3VzX21hbmRhdHNfdG91c19vcmdhbmVzX2hpc3RvcmlxdWVcIilcbiAgKSB7XG4gICAgZGlyZWN0b3JpZXMgPSBbYCR7ZGF0YXNldH0vb3JnYW5lc2AsIGAke2RhdGFzZXR9L2FjdGV1cnNgXVxuICB9IGVsc2Uge1xuICAgIGRpcmVjdG9yaWVzID0gW2RhdGFzZXRdXG4gIH1cblxuICBsZXQgcmVzdWx0cyA9IFtdXG4gIGZvciAoY29uc3QgZGlyZWN0b3J5IG9mIGRpcmVjdG9yaWVzKSB7XG4gICAgZm9yIChjb25zdCByZSBvZiBPYmplY3Qua2V5cyhkaXJlY3Rvcnkyc2NoZW1hKSkge1xuICAgICAgaWYgKG5ldyBSZWdFeHAocmUpLmV4ZWMoZGlyZWN0b3J5KSlcbiAgICAgICAgcmVzdWx0cy5wdXNoKFtgJHtkaXJlY3Rvcnl9LyoqLyouanNvbmAsIGRpcmVjdG9yeTJzY2hlbWFbcmVdXSlcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdHNcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZpbGVEYXRhc2V0VXJsKGZpbGVuYW1lOiBzdHJpbmcpOiBbc3RyaW5nLCBzdHJpbmddIHwgbnVsbCB7XG4gIGNvbnN0IHJlID0gXCJeLiovKC4qKV9uZXR0b3llLyguKilcIlxuICBjb25zdCBtYXRjaCA9IG5ldyBSZWdFeHAocmUpLmV4ZWMoZmlsZW5hbWUpXG4gIGlmIChtYXRjaCA9PSBudWxsKSByZXR1cm4gbnVsbFxuICBsZXQgW2RhdGFzZXQsIGZpbGVdID0gW21hdGNoWzFdLCBtYXRjaFsyXV1cbiAgaWYgKGRhdGFzZXQgPT0gXCJBTU8zMF90b3VzX2FjdGV1cnNfdG91c19tYW5kYXRzX3RvdXNfb3JnYW5lc19oaXN0b3JpcXVlXCIpXG4gICAgZGF0YXNldCA9IFwiYWN0ZXVyc19tYW5kYXRzX29yZ2FuZXNcIlxuICByZXR1cm4gW2RhdGFzZXQsIGZpbGVdXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkaWZmVXBzdHJlYW0oZmlsZW5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IGRhdGFzZXRVcmwgPSBmaWxlRGF0YXNldFVybChmaWxlbmFtZSlcbiAgaWYgKGRhdGFzZXRVcmwgPT0gbnVsbCkgcmV0dXJuIGZpbGVuYW1lXG4gIGNvbnN0IFtkYXRhc2V0LCBmaWxlXSA9IGRhdGFzZXRVcmxcbiAgY29uc3Qgc3VtID0gY3JlYXRlSGFzaChcInNoYTFcIikudXBkYXRlKGZpbGUpLmRpZ2VzdChcImhleFwiKS50b1N0cmluZygpXG4gIHJldHVybiBgWyR7ZmlsZX1dKGh0dHBzOi8vZ2l0LmVuLXJvb3Qub3JnL3RyaWNvdGV1c2VzL2RhdGEudHJpY290ZXVzZXMuZnIvJHtkYXRhc2V0fS8tL2NvbXBhcmUvdXBzdHJlYW0uLi5tYXN0ZXIjJHtzdW19KWBcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1hc3RlclVybChmaWxlbmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3QgZGF0YXNldFVybCA9IGZpbGVEYXRhc2V0VXJsKGZpbGVuYW1lKVxuICBpZiAoZGF0YXNldFVybCA9PSBudWxsKSByZXR1cm4gZmlsZW5hbWVcbiAgY29uc3QgW2RhdGFzZXQsIGZpbGVdID0gZGF0YXNldFVybFxuICByZXR1cm4gYFske2ZpbGV9XShodHRwczovL2dpdC5lbi1yb290Lm9yZy90cmljb3RldXNlcy9kYXRhLnRyaWNv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
727
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJEYXRhc2V0U3RydWN0dXJlIiwiRW5hYmxlZERhdGFzZXRzIiwiZGF0YXNldHMiLCJhY3RldXJzRXRPcmdhbmVzIiwiZmlsZW5hbWUiLCJpZ25vcmVGb3JXZWIiLCJsZWdpc2xhdHVyZSIsIkxlZ2lzbGF0dXJlIiwiU2VpemUiLCJyZXBhaXJaaXAiLCJkYXRhc2V0IiwiZGF0YURpciIsInRhcmdldERpciIsInBhdGgiLCJqb2luIiwiZnMiLCJleGlzdHNTeW5jIiwicmVtb3ZlU3luYyIsIm1vdmVTeW5jIiwic3RydWN0dXJlIiwiU2VnbWVudGVkRmlsZXMiLCJ0aXRsZSIsInVybCIsIlF1aW56ZSIsIlF1YXRvcnplIiwiU2luZ2xlRmlsZSIsIkFsbCIsIm1rZGlyU3luYyIsImFnZW5kYXMiLCJhbWVuZGVtZW50cyIsImRvc3NpZXJzTGVnaXNsYXRpZnMiLCJzY3J1dGlucyIsImRpcmVjdG9yeTJzY2hlbWEiLCJnZXREYXRhc2V0cyIsInZhbGlkRGF0YXNldCIsImRpciIsImluY2x1ZGVzIiwiZ2V0U2NoZW1hcyIsIk9iamVjdCIsInZhbHVlcyIsImRhdGFzZXREaXJlY3RvcnlTY2hlbWEiLCJkaXJlY3RvcmllcyIsInJlc3VsdHMiLCJkaXJlY3RvcnkiLCJrZXlzIiwicmUiLCJSZWdFeHAiLCJleGVjIiwicHVzaCIsImZpbGVEYXRhc2V0VXJsIiwibWF0Y2giLCJmaWxlIiwiZGlmZlVwc3RyZWFtIiwiZGF0YXNldFVybCIsInN1bSIsImNyZWF0ZUhhc2giLCJ1cGRhdGUiLCJkaWdlc3QiLCJ0b1N0cmluZyIsIm1hc3RlclVybCJdLCJzb3VyY2VzIjpbIi4uL3NyYy9kYXRhc2V0cy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjcmVhdGVIYXNoIH0gZnJvbSBcImNyeXB0b1wiXG5pbXBvcnQgZnMgZnJvbSBcImZzLWV4dHJhXCJcbmltcG9ydCBwYXRoIGZyb20gXCJwYXRoXCJcblxuaW1wb3J0IHsgTGVnaXNsYXR1cmUgfSBmcm9tIFwiLi90eXBlcy9sZWdpc2xhdHVyZXNcIlxuXG5pbnRlcmZhY2UgRGF0YXNldCB7XG4gIGZpbGVuYW1lOiBzdHJpbmdcbiAgaWdub3JlRm9yV2ViPzogYm9vbGVhblxuICBsZWdpc2xhdHVyZTogTGVnaXNsYXR1cmVcbiAgcmVwYWlyWmlwPzogKGRhdGFzZXQ6IERhdGFzZXQsIGRhdGFEaXI6IHN0cmluZykgPT4gdm9pZFxuICBzdHJ1Y3R1cmU6IERhdGFzZXRTdHJ1Y3R1cmVcbiAgdGl0bGU6IHN0cmluZ1xuICB1cmw6IHN0cmluZ1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERhdGFzZXRzIHtcbiAgYWN0ZXVyc0V0T3JnYW5lczogRGF0YXNldFtdXG4gIGFnZW5kYXM6IERhdGFzZXRbXVxuICBhbWVuZGVtZW50czogRGF0YXNldFtdXG4gIGRvc3NpZXJzTGVnaXNsYXRpZnM6IERhdGFzZXRbXVxuICBzY3J1dGluczogRGF0YXNldFtdXG59XG5cbmV4cG9ydCBlbnVtIERhdGFzZXRTdHJ1Y3R1cmUge1xuICBTaW5nbGVGaWxlLFxuICBTZWdtZW50ZWRGaWxlcyxcbn1cblxuZXhwb3J0IGVudW0gRW5hYmxlZERhdGFzZXRzIHtcbiAgTm9uZSA9IDAsXG4gIEFjdGV1cnNFdE9yZ2FuZXMgPSAxIDw8IDAsXG4gIEFnZW5kYXMgPSAxIDw8IDEsXG4gIEFtZW5kZW1lbnRzID0gMSA8PCAyLFxuICBEb3NzaWVyc0xlZ2lzbGF0aWZzID0gMSA8PCAzLFxuICBQaG90b3MgPSAxIDw8IDQsXG4gIFNjcnV0aW5zID0gMSA8PCA1LFxuICBBbGwgPSBBY3RldXJzRXRPcmdhbmVzIHxcbiAgICBBZ2VuZGFzIHxcbiAgICBBbWVuZGVtZW50cyB8XG4gICAgRG9zc2llcnNMZWdpc2xhdGlmcyB8XG4gICAgUGhvdG9zIHxcbiAgICBTY3J1dGlucyxcbn1cblxuZXhwb3J0IGNvbnN0IGRhdGFzZXRzOiBEYXRhc2V0cyA9IHtcbiAgYWN0ZXVyc0V0T3JnYW5lczogW1xuICAgIHtcbiAgICAgIC8vIEFNTzEwIChYVkkpXG4gICAgICAvL1xuICAgICAgLy8gQ29udGllbnQgbGVzIGTDqXB1dMOpcyBhY3RpZnNcbiAgICAgIC8vICogYXZlYyB0b3VzIGxlcyBtYW5kYXRzIGVuIGNvdXJzXG4gICAgICAvLyAqIHkgY29tcHJpcyBhdmVjIGxldXIgcGFydGkgcG9saXRpcXVlICh0eXBlT3JnYW5lOiBcIlBBUlBPTFwiKVxuICAgICAgLy8gKiBtYWlzIHNhbnMgbGVzIG1hbmRhdHMgYWNoZXbDqXMgKHkgY29tcHJpcyBkYW5zIGNldHRlIGzDqWdpc2xhdHVyZSlcbiAgICAgIC8vXG4gICAgICAvLyBPcmdhbmVzIDpcbiAgICAgIC8vICogQ29udGllbnQgc2V1bGVtZW50IGxlcyBvcmdhbmVzIGNvcnJlc3BvbmRhbnRzIGF1eCBtYW5kYXRzIGVuIGNvdXJzXG4gICAgICAvLyAqIGF2ZWMgbGUgeHNpVHlwZSBkZSBsJ29yZ2FuZVxuICAgICAgLy8gKiBhdmVjIGRlcyBjb21taXNzaW9ucyBzw6luYXRvcmlhbGVzIChwZXJtYW5lbnRlcyBldCBzcMOpY2lhbGVzKSBlbiBjb3Vyc1xuICAgICAgLy8gKiBhdmVjIGRlcyBkw6lsw6lnYXRpb25zIHPDqW5hdG9yaWFsZXMgZW4gY291cnNcbiAgICAgIC8vICogYXZlYyBkZXMgZ3JvdXBlcyBzw6luYXRvcmlhdXggZW4gY291cnNcbiAgICAgIC8vICogYXZlYyBkZXMgbWluaXN0w6hyZXMgZW4gY291cnNcbiAgICAgIC8vICogYXZlYyBsZXMgUHLDqXNpZGVuY2VzIGRlIGxhIFLDqXB1YmxpcXVlICh5IGNvbXByaXMgU2Fya296eSlcbiAgICAgIC8vICogYXZlYyBsZSBDb25zZWlsIGNvbnN0aXR1dGlvbm5lbFxuICAgICAgLy9cbiAgICAgIC8vIENlIGZpY2hpZXIgZXN0IHVuIHNvdXMtZW5zZW1ibGUgw6AgdG91cyBsZXMgbml2ZWF1eCBkdSBmaWNoaWVyIEFNTzIwXG4gICAgICAvLyAocXVpIGVzdCBsdWkgbcOqbWUgdW4gc291cy1lbnNlbWJsZSBkZSBsJ0FNTzMwKS5cbiAgICAgIC8vIElsIG4nYXBwb3J0ZSBkb25jIGFic29sdW1lbnQgcmllbiBwYXIgcmFwcG9ydCDDoCBBTU8yMCBvdSBsJ0FNTzMwLlxuICAgICAgZmlsZW5hbWU6IFwiQU1PMTBfZGVwdXRlc19hY3RpZnNfbWFuZGF0c19hY3RpZnNfb3JnYW5lc19YVkkuanNvblwiLFxuICAgICAgaWdub3JlRm9yV2ViOiB0cnVlLFxuICAgICAgbGVnaXNsYXR1cmU6IExlZ2lzbGF0dXJlLlNlaXplLFxuICAgICAgcmVwYWlyWmlwOiAoZGF0YXNldDogRGF0YXNldCwgZGF0YURpcjogc3RyaW5nKSA9PiB7XG4gICAgICAgIGNvbnN0IHRhcmdldERpciA9IHBhdGguam9pbihkYXRhRGlyLCBkYXRhc2V0LmZpbGVuYW1lKVxuICAgICAgICBpZiAoZnMuZXhpc3RzU3luYyh0YXJnZXREaXIpKSB7XG4gICAgICAgICAgZnMucmVtb3ZlU3luYyh0YXJnZXREaXIpXG4gICAgICAgIH1cbiAgICAgICAgZnMubW92ZVN5bmMocGF0aC5qb2luKGRhdGFEaXIsIFwianNvblwiKSwgdGFyZ2V0RGlyKVxuICAgICAgfSxcbiAgICAgIHN0cnVjdHVyZTogRGF0YXNldFN0cnVjdHVyZS5TZWdtZW50ZWRGaWxlcyxcbiAgICAgIHRpdGxlOiBcIkTDqXB1dMOpcyBhY3RpZnMgZXQgb3JnYW5lcyBkZSBsYSBYVknDqG1lIGzDqWdpc2xhdHVyZVwiLFxuICAgICAgdXJsOiBcImh0dHA6Ly9kYXRhLmFzc2VtYmxlZS1uYXRpb25hbGUuZnIvc3RhdGljL29wZW5EYXRhL3JlcG9zaXRvcnkvMTYvYW1vL2RlcHV0ZXNfYWN0aWZzX21hbmRhdHNfYWN0aWZzX29yZ2FuZXMvQU1PMTBfZGVwdXRlc19hY3RpZnNfbWFuZGF0c19hY3RpZnNfb3JnYW5lcy5qc29uLnppcFwiLFxuICAgIH0sXG4gICAge1xuICAgICAgLy8gQU1PMTAgKFhWKVxuICAgICAgLy9cbiAgICAgIC8vIENvbnRpZW50IGxlcyBkw6lwdXTDqXMgYWN0aWZzXG4gICAgICAvLyAqIGF2ZWMgdG91cyBsZXMgbWFuZGF0cyBlbiBjb3Vyc1xuICAgICAgLy8gKiB5IGNvbXByaXMgYXZlYyBsZXVyIHBhcnRpIHBvbGl0aXF1ZSAodHlwZU9yZ2FuZTogXCJQQVJQT0xcIilcbiAgICAgIC8vICogbWFpcyBzYW5zIGxlcyBtYW5kYXRzIGFjaGV2w6lzICh5IGNvbXByaXMgZGFucyBjZXR0ZSBsw6lnaXNsYXR1cmUpXG4gICAgICAvL1xuICAgICAgLy8gT3JnYW5lcyA6XG4gICAgICAvLyAqIENvbnRpZW50IHNldWxlbWVudCBsZXMgb3JnYW5lcyBjb3JyZXNwb25kYW50cyBhdXggbWFuZGF0cyBlbiBjb3Vyc1xuICAgICAgLy8gKiBhdmVjIGxlIHhzaVR5cGUgZGUgbCdvcmdhbmVcbiAgICAgIC8vICogYXZlYyBkZXMgY29tbWlzc2lvbnMgc8OpbmF0b3JpYWxlcyAocGVybWFuZW50ZXMgZXQgc3DDqWNpYWxlcykgZW4gY291cnNcbiAgICAgIC8vICogYXZlYyBkZXMgZMOpbMOpZ2F0aW9ucyBzw6luYXRvcmlhbGVzIGVuIGNvdXJzXG4gICAgICAvLyAqIGF2ZWMgZGVzIGdyb3VwZXMgc8OpbmF0b3JpYXV4IGVuIGNvdXJzXG4gICAgICAvLyAqIGF2ZWMgZGVzIG1pbmlzdMOocmVzIGVuIGNvdXJzXG4gICAgICAvLyAqIGF2ZWMgbGVzIFByw6lzaWRlbmNlcyBkZSBsYSBSw6lwdWJsaXF1ZSAoeSBjb21wcmlzIFNhcmtvenkpXG4gICAgICAvLyAqIGF2ZWMgbGUgQ29uc2VpbCBjb25zdGl0dXRpb25uZWxcbiAgICAgIC8vXG4gICAgICAvLyBDZSBmaWNoaWVyIGVzdCB1biBzb3VzLWVuc2VtYmxlIMOgIHRvdXMgbGVzIG5pdmVhdXggZHUgZmljaGllciBBTU8yMFxuICAgICAgLy8gKHF1aSBlc3QgbHVpIG3Dqm1lIHVuIHNvdXMtZW5zZW1ibGUgZGUgbCdBTU8zMCkuXG4gICAgICAvLyBJbCBuJ2FwcG9ydGUgZG9uYyBhYnNvbHVtZW50IHJpZW4gcGFyIHJhcHBvcnQgw6AgQU1PMjAgb3UgbCdBTU8zMC5cbiAgICAgIGZpbGVuYW1lOiBcIkFNTzEwX2RlcHV0ZXNfYWN0aWZzX21hbmRhdHNfYWN0aWZzX29yZ2FuZXNfWFYuanNvblwiLFxuICAgICAgaWdub3JlRm9yV2ViOiB0cnVlLFxuICAgICAgbGVnaXNsYXR1cmU6IExlZ2lzbGF0dXJlLlF1aW56ZSxcbiAgICAgIHJlcGFpclppcDogKGRhdGFzZXQ6IERhdGFzZXQsIGRhdGFEaXI6IHN0cmluZykgPT4ge1xuICAgICAgICBjb25zdCB0YXJnZXREaXIgPSBwYXRoLmpvaW4oZGF0YURpciwgZGF0YXNldC5maWxlbmFtZSlcbiAgICAgICAgaWYgKGZzLmV4aXN0c1N5bmModGFyZ2V0RGlyKSkge1xuICAgICAgICAgIGZzLnJlbW92ZVN5bmModGFyZ2V0RGlyKVxuICAgICAgICB9XG4gICAgICAgIGZzLm1vdmVTeW5jKHBhdGguam9pbihkYXRhRGlyLCBcImpzb25cIiksIHRhcmdldERpcilcbiAgICAgIH0sXG4gICAgICBzdHJ1Y3R1cmU6IERhdGFzZXRTdHJ1Y3R1cmUuU2VnbWVudGVkRmlsZXMsXG4gICAgICB0aXRsZTogXCJEw6lwdXTDqXMgYWN0aWZzIGV0IG9yZ2FuZXMgZGUgbGEgWFbDqG1lIGzDqWdpc2xhdHVyZVwiLFxuICAgICAgdXJsOiBcImh0dHA6Ly9kYXRhLmFzc2VtYmxlZS1uYXRpb25hbGUuZnIvc3RhdGljL29wZW5EYXRhL3JlcG9zaXRvcnkvMTUvYW1vL2RlcHV0ZXNfYWN0aWZzX21hbmRhdHNfYWN0aWZzX29yZ2FuZXMvQU1PMTBfZGVwdXRlc19hY3RpZnNfbWFuZGF0c19hY3RpZnNfb3JnYW5lc19YVi5qc29uLnppcFwiLFxuICAgIH0sXG4gICAge1xuICAgICAgLy8gQU1PMjAgKFhWSSlcbiAgICAgIC8vXG4gICAgICAvLyBDb250aWVudCBsZXMgZMOpcHV0w6lzIGRlIGxhIGzDqWdpc2xhdHVyZSwgYWN0aWZzIG91IG5vbiAoaW52YWxpZMOpcywgZXRjKSwgbGVzIHPDqW5hdGV1cnMgYWN0dWVsc1xuICAgICAgLy8gUG91ciBsZXMgZMOpcHV0w6lzIDpcbiAgICAgIC8vICogYXZlYyB0b3VzIGxldXJzIG1hbmRhdHMgZGUgbGEgbMOpZ2lzbGF0dXJlXG4gICAgICAvLyAqIHkgY29tcHJpcyBsZXMgbWFuZGF0cyBhY2hldsOpc1xuICAgICAgLy8gKiB5IGNvbXByaXMgbGV1cnMgcGFydGlzIHBvbGl0aXF1ZXMgICh0eXBlT3JnYW5lOiBcIlBBUlBPTFwiKVxuICAgICAgLy8gKiBtYWlzIHNhbnMgbGVzIG1hbmRhdHMgZGVzIGzDqWdpc2xhdHVyZXMgcHLDqWPDqWRlbnRlcyAocXVpIHNvbnQgZGFucyBBTU80MClcbiAgICAgIC8vXG4gICAgICAvLyBDb250aWVudCB0b3VzIGxlcyBvcmdhbmVzIHLDqWbDqXJlbmPDqXMgcGFyIGxlcyBtYW5kYXRzXG4gICAgICAvLyAqIGF2ZWMgbGUgeHNpVHlwZSBkZSBsJ29yZ2FuZVxuICAgICAgLy8gKiBhdmVjIGRlcyBjb21taXNzaW9ucyBzw6luYXRvcmlhbGVzIChwZXJtYW5lbnRlcyBldCBzcMOpY2lhbGVzKSBlbiBjb3Vyc1xuICAgICAgLy8gKiBhdmVjIGRlcyBkw6lsw6lnYXRpb25zIHPDqW5hdG9yaWFsZXMgZW4gY291cnNcbiAgICAgIC8vICogYXZlYyBkZXMgZ3JvdXBlcyBzw6luYXRvcmlhdXggZW4gY291cnNcbiAgICAgIC8vICogYXZlYyBkZXMgbWluaXN0w6hyZXMgZW4gY291cnNcbiAgICAgIC8vICogYXZlYyBsZXMgUHLDqXNpZGVuY2VzIGRlIGxhIFLDqXB1YmxpcXVlICh5IGNvbXByaXMgU2Fya296eSlcbiAgICAgIC8vICogYXZlYyBsZSBDb25zZWlsIGNvbnN0aXR1dGlvbm5lbFxuICAgICAgLy9cbiAgICAgIC8vIENlIGZpY2hpZXIgZXN0IHVuIHNvdXMtZW5zZW1ibGUgw6AgdG91cyBsZXMgbml2ZWF1eCBkdSBmaWNoaWVyIEFNTzMwLlxuICAgICAgLy8gSWwgbidhcHBvcnRlIGRvbmMgYWJzb2x1bWVudCByaWVuIHBhciByYXBwb3J0IMOgIGwnQU1PMzAuXG4gICAgICBmaWxlbmFtZTogXCJBTU8yMF9kZXBfc2VuX21pbl90b3VzX21hbmRhdHNfZXRfb3JnYW5lc19YVkkuanNvblwiLFxuICAgICAgaWdub3JlRm9yV2ViOiB0cnVlLFxuICAgICAgbGVnaXNsYXR1cmU6IExlZ2lzbGF0dXJlLlNlaXplLFxuICAgICAgcmVwYWlyWmlwOiAoZGF0YXNldDogRGF0YXNldCwgZGF0YURpcjogc3RyaW5nKSA9PiB7XG4gICAgICAgIGNvbnN0IHRhcmdldERpciA9IHBhdGguam9pbihkYXRhRGlyLCBkYXRhc2V0LmZpbGVuYW1lKVxuICAgICAgICBpZiAoZnMuZXhpc3RzU3luYyh0YXJnZXREaXIpKSB7XG4gICAgICAgICAgZnMucmVtb3ZlU3luYyh0YXJnZXREaXIpXG4gICAgICAgIH1cbiAgICAgICAgZnMubW92ZVN5bmMocGF0aC5qb2luKGRhdGFEaXIsIFwianNvblwiKSwgdGFyZ2V0RGlyKVxuICAgICAgfSxcbiAgICAgIHN0cnVjdHVyZTogRGF0YXNldFN0cnVjdHVyZS5TZWdtZW50ZWRGaWxlcyxcbiAgICAgIHRpdGxlOiBcIkFjdGV1cnMgZXQgb3JnYW5lcyBkZSBsYSBYVsOobWUgbMOpZ2lzbGF0dXJlXCIsXG4gICAgICB1cmw6IFwiaHR0cDovL2RhdGEuYXNzZW1ibGVlLW5hdGlvbmFsZS5mci9zdGF0aWMvb3BlbkRhdGEvcmVwb3NpdG9yeS8xNi9hbW8vZGVwdXRlc19zZW5hdGV1cnNfbWluaXN0cmVzX2xlZ2lzbGF0dXJlL0FNTzIwX2RlcF9zZW5fbWluX3RvdXNfbWFuZGF0c19ldF9vcmdhbmVzLmpzb24uemlwXCIsXG4gICAgfSxcbiAgICB7XG4gICAgICAvLyBBTU8yMCAoWFYpXG4gICAgICAvL1xuICAgICAgLy8gQ29udGllbnQgbGVzIGTDqXB1dMOpcyBkZSBsYSBsw6lnaXNsYXR1cmUsIGFjdGlmcyBvdSBub24gKGludmFsaWTDqXMsIGV0YyksIGxlcyBzw6luYXRldXJzIGFjdHVlbHNcbiAgICAgIC8vIFBvdXIgbGVzIGTDqXB1dMOpcyA6XG4gICAgICAvLyAqIGF2ZWMgdG91cyBsZXVycyBtYW5kYXRzIGRlIGxhIGzDqWdpc2xhdHVyZVxuICAgICAgLy8gKiB5IGNvbXByaXMgbGVzIG1hbmRhdHMgYWNoZXbDqXNcbiAgICAgIC8vICogeSBjb21wcmlzIGxldXJzIHBhcnRpcyBwb2xpdGlxdWVzICAodHlwZU9yZ2FuZTogXCJQQVJQT0xcIilcbiAgICAgIC8vICogbWFpcyBzYW5zIGxlcyBtYW5kYXRzIGRlcyBsw6lnaXNsYXR1cmVzIHByw6ljw6lkZW50ZXMgKHF1aSBzb250IGRhbnMgQU1PNDApXG4gICAgICAvL1xuICAgICAgLy8gQ29udGllbnQgdG91cyBsZXMgb3JnYW5lcyByw6lmw6lyZW5jw6lzIHBhciBsZXMgbWFuZGF0c1xuICAgICAgLy8gKiBhdmVjIGxlIHhzaVR5cGUgZGUgbCdvcmdhbmVcbiAgICAgIC8vICogYXZlYyBkZXMgY29tbWlzc2lvbnMgc8OpbmF0b3JpYWxlcyAocGVybWFuZW50ZXMgZXQgc3DDqWNpYWxlcykgZW4gY291cnNcbiAgICAgIC8vICogYXZlYyBkZXMgZMOpbMOpZ2F0aW9ucyBzw6luYXRvcmlhbGVzIGVuIGNvdXJzXG4gICAgICAvLyAqIGF2ZWMgZGVzIGdyb3VwZXMgc8OpbmF0b3JpYXV4IGVuIGNvdXJzXG4gICAgICAvLyAqIGF2ZWMgZGVzIG1pbmlzdMOocmVzIGVuIGNvdXJzXG4gICAgICAvLyAqIGF2ZWMgbGVzIFByw6lzaWRlbmNlcyBkZSBsYSBSw6lwdWJsaXF1ZSAoeSBjb21wcmlzIFNhcmtvenkpXG4gICAgICAvLyAqIGF2ZWMgbGUgQ29uc2VpbCBjb25zdGl0dXRpb25uZWxcbiAgICAgIC8vXG4gICAgICAvLyBDZSBmaWNoaWVyIGVzdCB1biBzb3VzLWVuc2VtYmxlIMOgIHRvdXMgbGVzIG5pdmVhdXggZHUgZmljaGllciBBTU8zMC5cbiAgICAgIC8vIElsIG4nYXBwb3J0ZSBkb25jIGFic29sdW1lbnQgcmllbiBwYXIgcmFwcG9ydCDDoCBsJ0FNTzMwLlxuICAgICAgZmlsZW5hbWU6IFwiQU1PMjBfZGVwX3Nlbl9taW5fdG91c19tYW5kYXRzX2V0X29yZ2FuZXNfWFYuanNvblwiLFxuICAgICAgaWdub3JlRm9yV2ViOiB0cnVlLFxuICAgICAgbGVnaXNsYXR1cmU6IExlZ2lzbGF0dXJlLlF1aW56ZSxcbiAgICAgIHJlcGFpclppcDogKGRhdGFzZXQ6IERhdGFzZXQsIGRhdGFEaXI6IHN0cmluZykgPT4ge1xuICAgICAgICBjb25zdCB0YXJnZXREaXIgPSBwYXRoLmpvaW4oZGF0YURpciwgZGF0YXNldC5maWxlbmFtZSlcbiAgICAgICAgaWYgKGZzLmV4aXN0c1N5bmModGFyZ2V0RGlyKSkge1xuICAgICAgICAgIGZzLnJlbW92ZVN5bmModGFyZ2V0RGlyKVxuICAgICAgICB9XG4gICAgICAgIGZzLm1vdmVTeW5jKHBhdGguam9pbihkYXRhRGlyLCBcImpzb25cIiksIHRhcmdldERpcilcbiAgICAgIH0sXG4gICAgICBzdHJ1Y3R1cmU6IERhdGFzZXRTdHJ1Y3R1cmUuU2VnbWVudGVkRmlsZXMsXG4gICAgICB0aXRsZTogXCJBY3RldXJzIGV0IG9yZ2FuZXMgZGUgbGEgWFbDqG1lIGzDqWdpc2xhdHVyZVwiLFxuICAgICAgdXJsOiBcImh0dHA6Ly9kYXRhLmFzc2VtYmxlZS1uYXRpb25hbGUuZnIvc3RhdGljL29wZW5EYXRhL3JlcG9zaXRvcnkvMTUvYW1vL2RlcHV0ZXNfc2VuYXRldXJzX21pbmlzdHJlc19sZWdpc2xhdHVyZS9BTU8yMF9kZXBfc2VuX21pbl90b3VzX21hbmRhdHNfZXRfb3JnYW5lc19YVi5qc29uLnppcFwiLFxuICAgIH0sXG4gICAge1xuICAgICAgLy8gQU1PMjAgKFhJVilcbiAgICAgIC8vXG4gICAgICAvLyBDb21tZSBBTU8yMCAoWFYpIG1haXMgcG91ciBsYSBYSVbDqG1lIGzDqWdpc2xhdHVyZVxuICAgICAgLy8gVG91cyBsZXMgYWN0ZXVycyBzYXVmIHVuIChQQTQyOTg5Mikgc29udCBwcsOpc2VudHMgZW4gcGx1cyDDoCBqb3VyIGRhbnMgQU1PMzAuXG4gICAgICAvLyBDZXQgYWN0ZXVyIFBBNDI5ODkyIChhbmNpZW5uZSBTw6luYXRyaWNlKSBuJ2VzdCBwcsOpc2VudCBkYW5zIGF1Y3VuIGRlcyBhdXRyZXNcbiAgICAgIC8vIGZpY2hpZXJzIEFNTy5cbiAgICAgIC8vIFRvdXMgbGVzIG9yZ2FuZXMgc29udCBwcsOpc2VudHMgZW4gcGx1cyBjb21wbGV0cyBkYW5zIEFNTzMwLlxuICAgICAgLy9cbiAgICAgIC8vIENlIGZpY2hpZXIgZXN0IGRvbmMgw6AgdW4gZMOpdGFpbCBwcsOqdCAoUEE0Mjk4OTIpIHVuIHNvdXMtZW5zZW1ibGUgZCdBTU8zMC5cbiAgICAgIC8vIElsIG4nYXBwb3J0ZSBkb25jIHF1YXNpbWVudCByaWVuIHBhciByYXBwb3J0IMOgIGwnQU1PMzAuXG4gICAgICBmaWxlbmFtZTogXCJBTU8yMF9kZXBfc2VuX21pbl90b3VzX21hbmRhdHNfZXRfb3JnYW5lc19YSVYuanNvblwiLFxuICAgICAgaWdub3JlRm9yV2ViOiB0cnVlLFxuICAgICAgbGVnaXNsYXR1cmU6IExlZ2lzbGF0dXJlLlF1YXRvcnplLFxuICAgICAgc3RydWN0dXJlOiBEYXRhc2V0U3RydWN0dXJlLlNpbmdsZUZpbGUsXG4gICAgICB0aXRsZTogXCJBY3RldXJzIGV0IG9yZ2FuZXMgZGUgbGEgWElWw6htZSBsw6lnaXNsYXR1cmVcIixcbiAgICAgIHVybDogXCJodHRwOi8vZGF0YS5hc3NlbWJsZWUtbmF0aW9uYWxlLmZyL3N0YXRpYy9vcGVuRGF0YS9yZXBvc2l0b3J5LzE0L2Ftby9kZXB1dGVzX3NlbmF0ZXVyc19taW5pc3RyZXNfbGVnaXNsYXR1cmVzX1hJVi9BTU8yMF9kZXBfc2VuX21pbl90b3VzX21hbmRhdHNfZXRfb3JnYW5lc19YSVYuanNvbi56aXBcIixcbiAgICB9LFxuICAgIHtcbiAgICAgIC8vIEFNTzMwIChYVkkpXG4gICAgICAvL1xuICAgICAgLy8gQ2UgZmljaGllciBjb250aWVudCB0b3VzIGxlcyBhY3RldXJzIGV0IG9yZ2FuZXMuXG4gICAgICAvLyBDJ2VzdCB1biBzdXItZW5zZW1ibGUgZGVzIGZpY2hpZXJzIEFNTzIwLlxuICAgICAgZmlsZW5hbWU6IFwiQU1PMzBfdG91c19hY3RldXJzX3RvdXNfbWFuZGF0c190b3VzX29yZ2FuZXNfaGlzdG9yaXF1ZS5qc29uXCIsXG4gICAgICBsZWdpc2xhdHVyZTogTGVnaXNsYXR1cmUuQWxsLFxuICAgICAgcmVwYWlyWmlwOiAoZGF0YXNldDogRGF0YXNldCwgZGF0YURpcjogc3RyaW5nKSA9PiB7XG4gICAgICAgIGNvbnN0IHRhcmdldERpciA9IHBhdGguam9pbihkYXRhRGlyLCBkYXRhc2V0LmZpbGVuYW1lKVxuICAgICAgICBpZiAoZnMuZXhpc3RzU3luYyh0YXJnZXREaXIpKSB7XG4gICAgICAgICAgZnMucmVtb3ZlU3luYyh0YXJnZXREaXIpXG4gICAgICAgIH1cbiAgICAgICAgZnMubW92ZVN5bmMocGF0aC5qb2luKGRhdGFEaXIsIFwianNvblwiKSwgdGFyZ2V0RGlyKVxuICAgICAgfSxcbiAgICAgIHN0cnVjdHVyZTogRGF0YXNldFN0cnVjdHVyZS5TZWdtZW50ZWRGaWxlcyxcbiAgICAgIHRpdGxlOlxuICAgICAgICBcIkhpc3RvcmlxdWUgZGUgdG91cyBsZXMgYWN0ZXVycyBldCBvcmdhbmVzIGRlcHVpcyBsYSBYScOobWUgbMOpZ2lzbGF0dXJlXCIsXG4gICAgICB1cmw6IFwiaHR0cDovL2RhdGEuYXNzZW1ibGVlLW5hdGlvbmFsZS5mci9zdGF0aWMvb3BlbkRhdGEvcmVwb3NpdG9yeS8xNi9hbW8vdG91c19hY3RldXJzX21hbmRhdHNfb3JnYW5lc194aV9sZWdpc2xhdHVyZS9BTU8zMF90b3VzX2FjdGV1cnNfdG91c19tYW5kYXRzX3RvdXNfb3JnYW5lc19oaXN0b3JpcXVlLmpzb24uemlwXCIsXG4gICAgfSxcbiAgICAvLyB7XG4gICAgLy8gICAvLyBBTU8zMCAoWFYpXG4gICAgLy8gICAvL1xuICAgIC8vICAgLy8gQ2UgZmljaGllciBjb250aWVudCB0b3VzIGxlcyBhY3RldXJzIGV0IG9yZ2FuZXMuXG4gICAgLy8gICAvLyBDJ2VzdCB1biBzdXItZW5zZW1ibGUgZGVzIGZpY2hpZXJzIEFNTzIwLlxuICAgIC8vICAgZmlsZW5hbWU6IFwiQU1PMzBfdG91c19hY3RldXJzX3RvdXNfbWFuZGF0c190b3VzX29yZ2FuZXNfaGlzdG9yaXF1ZS5qc29uXCIsXG4gICAgLy8gICBsZWdpc2xhdHVyZTogTGVnaXNsYXR1cmUuQWxsLFxuICAgIC8vICAgcmVwYWlyWmlwOiAoZGF0YXNldDogRGF0YXNldCwgZGF0YURpcjogc3RyaW5nKSA9PiB7XG4gICAgLy8gICAgIGNvbnN0IHRhcmdldERpciA9IHBhdGguam9pbihkYXRhRGlyLCBkYXRhc2V0LmZpbGVuYW1lKVxuICAgIC8vICAgICBpZiAoZnMuZXhpc3RzU3luYyh0YXJnZXREaXIpKSB7XG4gICAgLy8gICAgICAgZnMucmVtb3ZlU3luYyh0YXJnZXREaXIpXG4gICAgLy8gICAgIH1cbiAgICAvLyAgICAgZnMubW92ZVN5bmMocGF0aC5qb2luKGRhdGFEaXIsIFwianNvblwiKSwgdGFyZ2V0RGlyKVxuICAgIC8vICAgfSxcbiAgICAvLyAgIHN0cnVjdHVyZTogRGF0YXNldFN0cnVjdHVyZS5TZWdtZW50ZWRGaWxlcyxcbiAgICAvLyAgIHRpdGxlOlxuICAgIC8vICAgICBcIkhpc3RvcmlxdWUgZGUgdG91cyBsZXMgYWN0ZXVycyBldCBvcmdhbmVzIGRlcHVpcyBsYSBYScOobWUgbMOpZ2lzbGF0dXJlXCIsXG4gICAgLy8gICB1cmw6IFwiaHR0cDovL2RhdGEuYXNzZW1ibGVlLW5hdGlvbmFsZS5mci9zdGF0aWMvb3BlbkRhdGEvcmVwb3NpdG9yeS8xNS9hbW8vdG91c19hY3RldXJzX21hbmRhdHNfb3JnYW5lc194aV9sZWdpc2xhdHVyZS9BTU8zMF90b3VzX2FjdGV1cnNfdG91c19tYW5kYXRzX3RvdXNfb3JnYW5lc19oaXN0b3JpcXVlLmpzb24uemlwXCIsXG4gICAgLy8gfSxcbiAgICB7XG4gICAgICAvLyBBTU80MCAoWFZJKVxuICAgICAgLy9cbiAgICAgIC8vIENvbnRpZW50IGxlcyBkw6lwdXTDqXMgYWN0aWZzIChsZXMgbcOqbWVzIHF1J0FNTzIwKVxuICAgICAgLy8gKiBhdmVjIHByZXNxdWUgdG91cyBsZXVycyBtYW5kYXRzXG4gICAgICAvLyAqIHkgY29tcHJpcyBsZXMgbWFuZGF0cyBhY2hldsOpcyBldCBjZXV4IGRlcyBsw6lnaXNsYXR1cmVzIHByw6ljw6lkZW50ZXNcbiAgICAgIC8vICogeSBjb21wcmlzIGxldXJzIHBhcnRpcyBwb2xpdGlxdWVzIHByw6ljw6lkZW50c1xuICAgICAgLy8gKiBtYWlzIHNhbnMgbGV1ciBwYXJ0aSBwb2xpdGlxdWUgYWN0dWVsICh0eXBlT3JnYW5lOiBcIlBBUlBPTFwiKVxuICAgICAgLy9cbiAgICAgIC8vIENvbnRpZW50IGJlYXVjb3VwIGQnb3JnYW5lcyByw6lmw6lyZW5jw6lzLCB5IGNvbXByaXMgY2V1eCBkZXMgbMOpZ2lzbGF0dXJlc1xuICAgICAgLy8gcHLDqWPDqWRlbnRlc1xuICAgICAgLy8gKiBtYWlzIGlsIG1hbnF1ZSBsZSB4c2lUeXBlIGRlcyBvcmdhbmVzXG4gICAgICAvLyAqIG5lIGNvbnRpZW50IHBhcyBsZXMgb3JnYW5lcyBzw6luYXRvcmlhdXhcbiAgICAgIC8vICogbmUgY29udGllbnQgcGFzIGxlcyBtaW5pc3TDqHJlc1xuICAgICAgLy8gKiBuZSBjb250aWVudCBwYXMgbGEgUHLDqXNpZGVuY2UgZGUgbGEgUsOpcHVibGlxdWVcbiAgICAgIC8vICogbmUgY29udGllbnQgcGFzIGxlIENvbnNlaWwgY29uc3RpdHV0aW9ubmVsXG4gICAgICAvL1xuICAgICAgLy8gUG91ciBsZXMgYWN0ZXVycywgY2UgZMOpcMO0dCBlc3QgdW4gc291cy1lbnNlbWJsZSBzdHJpY3QgZGUgQU1PMzAgOlxuICAgICAgLy8gSWwgYSBtb2lucyBkJ2FjdGV1cnMgZXQgaWwgc29udCBtb2lucyBjb21wbGV0cy5cbiAgICAgIC8vXG4gICAgICAvLyBQb3VyIGxlcyBvcmdhbmVzIDpcbiAgICAgIC8vIFF1YW5kIGwnb3JnYW5lIGVzdCBhdXNzaSBwcsOpc2VudCBkYW5zIEFNTzMwLCBpbCB2YXV0IG1pZXV4IHByZW5kcmUgY2VsdWlcbiAgICAgIC8vIGQnQU1PMzAsIGNhciBpbCBjb250aWVudCBsZSB4c2lUeXBlIChjJ2VzdCBsYSBzZXVsZSBkaWZmw6lyZW5jZSBzZW1ibGUtdC1pKS5cbiAgICAgIC8vIFNpbm9uLCBpbCBmYXV0IGxlIHByZW5kcmUgc2V1bGVtZW50IHNpIG9uIGVzdCBpbnTDqXJlc3PDqSBwYXIgbGVzIGzDqWdpc2xhdHVyZXNcbiAgICAgIC8vIHByw6ljw6lkZW50ZXMuXG4gICAgICBmaWxlbmFtZTogXCJBTU80MF9kZXB1dGVzX2FjdGlmc19tYW5kYXRzX2FjdGlmc19vcmdhbmVzX2RpdmlzZXNfWFZJLmpzb25cIixcbiAgICAgIGlnbm9yZUZvcldlYjogdHJ1ZSxcbiAgICAgIGxlZ2lzbGF0dXJlOiBMZWdpc2xhdHVyZS5TZWl6ZSxcbiAgICAgIHJlcGFpclppcDogKGRhdGFzZXQ6IERhdGFzZXQsIGRhdGFEaXI6IHN0cmluZykgPT4ge1xuICAgICAgICBjb25zdCB0YXJnZXREaXIgPSBwYXRoLmpvaW4oZGF0YURpciwgZGF0YXNldC5maWxlbmFtZSlcbiAgICAgICAgaWYgKGZzLmV4aXN0c1N5bmModGFyZ2V0RGlyKSkge1xuICAgICAgICAgIGZzLnJlbW92ZVN5bmModGFyZ2V0RGlyKVxuICAgICAgICB9XG4gICAgICAgIGZzLm1rZGlyU3luYyh0YXJnZXREaXIpXG4gICAgICAgIGZzLm1vdmVTeW5jKFxuICAgICAgICAgIHBhdGguam9pbihkYXRhRGlyLCBcImFjdGV1clwiKSxcbiAgICAgICAgICBwYXRoLmpvaW4odGFyZ2V0RGlyLCBcImFjdGV1clwiKSxcbiAgICAgICAgKVxuICAgICAgICBmcy5tb3ZlU3luYyhcbiAgICAgICAgICBwYXRoLmpvaW4oZGF0YURpciwgXCJvcmdhbmVcIiksXG4gICAgICAgICAgcGF0aC5qb2luKHRhcmdldERpciwgXCJvcmdhbmVcIiksXG4gICAgICAgIClcbiAgICAgIH0sXG4gICAgICBzdHJ1Y3R1cmU6IERhdGFzZXRTdHJ1Y3R1cmUuU2VnbWVudGVkRmlsZXMsXG4gICAgICB0aXRsZTogXCJEw6lwdXTDqXMgYWN0aWZzIGV0IG9yZ2FuZXMgZGUgbGEgWFZJw6htZSBsw6lnaXNsYXR1cmVcIixcbiAgICAgIHVybDogXCJodHRwOi8vZGF0YS5hc3NlbWJsZWUtbmF0aW9uYWxlLmZyL3N0YXRpYy9vcGVuRGF0YS9yZXBvc2l0b3J5LzE2L2Ftby9kZXB1dGVzX2FjdGlmc19tYW5kYXRzX2FjdGlmc19vcmdhbmVzX2RpdmlzZXMvQU1PNDBfZGVwdXRlc19hY3RpZnNfbWFuZGF0c19hY3RpZnNfb3JnYW5lc19kaXZpc2VzLmpzb24uemlwXCIsXG4gICAgfSxcbiAgICB7XG4gICAgICAvLyBBTU80MCAoWFYpXG4gICAgICAvL1xuICAgICAgLy8gQ29udGllbnQgbGVzIGTDqXB1dMOpcyBhY3RpZnMgKGxlcyBtw6ptZXMgcXUnQU1PMjApXG4gICAgICAvLyAqIGF2ZWMgcHJlc3F1ZSB0b3VzIGxldXJzIG1hbmRhdHNcbiAgICAgIC8vICogeSBjb21wcmlzIGxlcyBtYW5kYXRzIGFjaGV2w6lzIGV0IGNldXggZGVzIGzDqWdpc2xhdHVyZXMgcHLDqWPDqWRlbnRlc1xuICAgICAgLy8gKiB5IGNvbXByaXMgbGV1cnMgcGFydGlzIHBvbGl0aXF1ZXMgcHLDqWPDqWRlbnRzXG4gICAgICAvLyAqIG1haXMgc2FucyBsZXVyIHBhcnRpIHBvbGl0aXF1ZSBhY3R1ZWwgKHR5cGVPcmdhbmU6IFwiUEFSUE9MXCIpXG4gICAgICAvL1xuICAgICAgLy8gQ29udGllbnQgYmVhdWNvdXAgZCdvcmdhbmVzIHLDqWbDqXJlbmPDqXMsIHkgY29tcHJpcyBjZXV4IGRlcyBsw6lnaXNsYXR1cmVzXG4gICAgICAvLyBwcsOpY8OpZGVudGVzXG4gICAgICAvLyAqIG1haXMgaWwgbWFucXVlIGxlIHhzaVR5cGUgZGVzIG9yZ2FuZXNcbiAgICAgIC8vICogbmUgY29udGllbnQgcGFzIGxlcyBvcmdhbmVzIHPDqW5hdG9yaWF1eFxuICAgICAgLy8gKiBuZSBjb250aWVudCBwYXMgbGVzIG1pbmlzdMOocmVzXG4gICAgICAvLyAqIG5lIGNvbnRpZW50IHBhcyBsYSBQcsOpc2lkZW5jZSBkZSBsYSBSw6lwdWJsaXF1ZVxuICAgICAgLy8gKiBuZSBjb250aWVudCBwYXMgbGUgQ29uc2VpbCBjb25zdGl0dXRpb25uZWxcbiAgICAgIC8vXG4gICAgICAvLyBQb3VyIGxlcyBhY3RldXJzLCBjZSBkw6lww7R0IGVzdCB1biBzb3VzLWVuc2VtYmxlIHN0cmljdCBkZSBBTU8zMCA6XG4gICAgICAvLyBJbCBhIG1vaW5zIGQnYWN0ZXVycyBldCBpbCBzb250IG1vaW5zIGNvbXBsZXRzLlxuICAgICAgLy9cbiAgICAgIC8vIFBvdXIgbGVzIG9yZ2FuZXMgOlxuICAgICAgLy8gUXVhbmQgbCdvcmdhbmUgZXN0IGF1c3NpIHByw6lzZW50IGRhbnMgQU1PMzAsIGlsIHZhdXQgbWlldXggcHJlbmRyZSBjZWx1aVxuICAgICAgLy8gZCdBTU8zMCwgY2FyIGlsIGNvbnRpZW50IGxlIHhzaVR5cGUgKGMnZXN0IGxhIHNldWxlIGRpZmbDqXJlbmNlIHNlbWJsZS10LWkpLlxuICAgICAgLy8gU2lub24sIGlsIGZhdXQgbGUgcHJlbmRyZSBzZXVsZW1lbnQgc2kgb24gZXN0IGludMOpcmVzc8OpIHBhciBsZXMgbMOpZ2lzbGF0dXJlc1xuICAgICAgLy8gcHLDqWPDqWRlbnRlcy5cbiAgICAgIGZpbGVuYW1lOiBcIkFNTzQwX2RlcHV0ZXNfYWN0aWZzX21hbmRhdHNfYWN0aWZzX29yZ2FuZXNfZGl2aXNlc19YVi5qc29uXCIsXG4gICAgICBpZ25vcmVGb3JXZWI6IHRydWUsXG4gICAgICBsZWdpc2xhdHVyZTogTGVnaXNsYXR1cmUuUXVpbnplLFxuICAgICAgcmVwYWlyWmlwOiAoZGF0YXNldDogRGF0YXNldCwgZGF0YURpcjogc3RyaW5nKSA9PiB7XG4gICAgICAgIGNvbnN0IHRhcmdldERpciA9IHBhdGguam9pbihkYXRhRGlyLCBkYXRhc2V0LmZpbGVuYW1lKVxuICAgICAgICBpZiAoZnMuZXhpc3RzU3luYyh0YXJnZXREaXIpKSB7XG4gICAgICAgICAgZnMucmVtb3ZlU3luYyh0YXJnZXREaXIpXG4gICAgICAgIH1cbiAgICAgICAgZnMubWtkaXJTeW5jKHRhcmdldERpcilcbiAgICAgICAgZnMubW92ZVN5bmMoXG4gICAgICAgICAgcGF0aC5qb2luKGRhdGFEaXIsIFwiYWN0ZXVyXCIpLFxuICAgICAgICAgIHBhdGguam9pbih0YXJnZXREaXIsIFwiYWN0ZXVyXCIpLFxuICAgICAgICApXG4gICAgICAgIGZzLm1vdmVTeW5jKFxuICAgICAgICAgIHBhdGguam9pbihkYXRhRGlyLCBcIm9yZ2FuZVwiKSxcbiAgICAgICAgICBwYXRoLmpvaW4odGFyZ2V0RGlyLCBcIm9yZ2FuZVwiKSxcbiAgICAgICAgKVxuICAgICAgfSxcbiAgICAgIHN0cnVjdHVyZTogRGF0YXNldFN0cnVjdHVyZS5TZWdtZW50ZWRGaWxlcyxcbiAgICAgIHRpdGxlOiBcIkTDqXB1dMOpcyBhY3RpZnMgZXQgb3JnYW5lcyBkZSBsYSBYVsOobWUgbMOpZ2lzbGF0dXJlXCIsXG4gICAgICB1cmw6IFwiaHR0cDovL2RhdGEuYXNzZW1ibGVlLW5hdGlvbmFsZS5mci9zdGF0aWMvb3BlbkRhdGEvcmVwb3NpdG9yeS8xNS9hbW8vZGVwdXRlc19hY3RpZnNfbWFuZGF0c19hY3RpZnNfb3JnYW5lc19kaXZpc2VzL0FNTzQwX2RlcHV0ZXNfYWN0aWZzX21hbmRhdHNfYWN0aWZzX29yZ2FuZXNfZGl2aXNlc19YVi5qc29uLnppcFwiLFxuICAgIH0sXG4gICAge1xuICAgICAgLy8gQU1PNTAgKFhWSSlcbiAgICAgIC8vXG4gICAgICAvLyBBdHRlbnRpb24sIGNlIGZpY2hpZXIgbidlc3QgcGFzIG1pcyDDoCBqb3VyIHLDqWd1bGnDqHJlbWVudCAhXG4gICAgICAvL1xuICAgICAgLy8gUG91ciBsZXMgYWN0ZXVycyA6XG4gICAgICAvLyAqIGMnZXN0IHVuIHNvdXMgZW5zZW1ibGUgb2Jzb2zDqHRlIGQnQU1PMzBcbiAgICAgIC8vICogaWwgbWFucXVlIGxlcyB4c2lUeXBlIGF1eCBtYW5kYXRzXG4gICAgICAvL1xuICAgICAgLy8gUG91ciBsZXMgb3JnYW5lcyA6XG4gICAgICAvLyAqIGMnZXN0IHVuIHNvdXMgZW5zZW1ibGUgb2Jzb2zDqHRlIGQnQU1PMzBcbiAgICAgIC8vICogaWwgbWFucXVlIGxlcyB4c2lUeXBlXG4gICAgICAvL1xuICAgICAgLy8gQ2UgZmljaGllciBuJ2FwcG9ydGUgZG9uYyBhYnNvbHVtZW50IHJpZW4gcGFyIHJhcHBvcnQgw6AgbCdBTU8zMCxcbiAgICAgIC8vIGRvbnQgaWwgZXN0IHVuIHNvdXMgZW5zZW1ibGUgb2Jzb2zDqHRlLlxuICAgICAgZmlsZW5hbWU6IFwiQU1PNTBfYWN0ZXVyc19tYW5kYXRzX29yZ2FuZXNfZGl2aXNlc19YVkkuanNvblwiLFxuICAgICAgaWdub3JlRm9yV2ViOiB0cnVlLFxuICAgICAgbGVnaXNsYXR1cmU6IExlZ2lzbGF0dXJlLlNlaXplLFxuICAgICAgcmVwYWlyWmlwOiAoZGF0YXNldDogRGF0YXNldCwgZGF0YURpcjogc3RyaW5nKSA9PiB7XG4gICAgICAgIGNvbnN0IHRhcmdldERpciA9IHBhdGguam9pbihkYXRhRGlyLCBkYXRhc2V0LmZpbGVuYW1lKVxuICAgICAgICBpZiAoZnMuZXhpc3RzU3luYyh0YXJnZXREaXIpKSB7XG4gICAgICAgICAgZnMucmVtb3ZlU3luYyh0YXJnZXREaXIpXG4gICAgICAgIH1cbiAgICAgICAgZnMubWtkaXJTeW5jKHRhcmdldERpcilcbiAgICAgICAgZnMubW92ZVN5bmMoXG4gICAgICAgICAgcGF0aC5qb2luKGRhdGFEaXIsIFwibWFuZGF0XCIpLFxuICAgICAgICAgIHBhdGguam9pbih0YXJnZXREaXIsIFwibWFuZGF0XCIpLFxuICAgICAgICApXG4gICAgICAgIGZzLm1vdmVTeW5jKFxuICAgICAgICAgIHBhdGguam9pbihkYXRhRGlyLCBcImFjdGV1clwiKSxcbiAgICAgICAgICBwYXRoLmpvaW4odGFyZ2V0RGlyLCBcImFjdGV1clwiKSxcbiAgICAgICAgKVxuICAgICAgICBmcy5tb3ZlU3luYyhcbiAgICAgICAgICBwYXRoLmpvaW4oZGF0YURpciwgXCJvcmdhbmVcIiksXG4gICAgICAgICAgcGF0aC5qb2luKHRhcmdldERpciwgXCJvcmdhbmVcIiksXG4gICAgICAgIClcbiAgICAgIH0sXG4gICAgICBzdHJ1Y3R1cmU6IERhdGFzZXRTdHJ1Y3R1cmUuU2VnbWVudGVkRmlsZXMsXG4gICAgICB0aXRsZTpcbiAgICAgICAgXCJBY3RldXJzLCBtYW5kYXRzIGV0IG9yZ2FuZXMgZGUgbGEgWFZJw6htZSBsw6lnaXNsYXR1cmUgKGZpY2hpZXJzIHPDqXBhcsOpcywgeSBjb21wcmlzIG1hbmRhdHMpXCIsXG4gICAgICB1cmw6IFwiaHR0cDovL2RhdGEuYXNzZW1ibGVlLW5hdGlvbmFsZS5mci9zdGF0aWMvb3BlbkRhdGEvcmVwb3NpdG9yeS8xNi9hbW8vYWN0ZXVyc19tYW5kYXRzX29yZ2FuZXNfZGl2aXNlcy9BTU81MF9hY3RldXJzX21hbmRhdHNfb3JnYW5lc19kaXZpc2VzLmpzb24uemlwXCIsXG4gICAgfSxcbiAgICB7XG4gICAgICAvLyBBTU81MCAoWFYpXG4gICAgICAvL1xuICAgICAgLy8gQXR0ZW50aW9uLCBjZSBmaWNoaWVyIG4nZXN0IHBhcyBtaXMgw6Agam91ciByw6lndWxpw6hyZW1lbnQgIVxuICAgICAgLy9cbiAgICAgIC8vIFBvdXIgbGVzIGFjdGV1cnMgOlxuICAgICAgLy8gKiBjJ2VzdCB1biBzb3VzIGVuc2VtYmxlIG9ic29sw6h0ZSBkJ0FNTzMwXG4gICAgICAvLyAqIGlsIG1hbnF1ZSBsZXMgeHNpVHlwZSBhdXggbWFuZGF0c1xuICAgICAgLy9cbiAgICAgIC8vIFBvdXIgbGVzIG9yZ2FuZXMgOlxuICAgICAgLy8gKiBjJ2VzdCB1biBzb3VzIGVuc2VtYmxlIG9ic29sw6h0ZSBkJ0FNTzMwXG4gICAgICAvLyAqIGlsIG1hbnF1ZSBsZXMgeHNpVHlwZVxuICAgICAgLy9cbiAgICAgIC8vIENlIGZpY2hpZXIgbidhcHBvcnRlIGRvbmMgYWJzb2x1bWVudCByaWVuIHBhciByYXBwb3J0IMOgIGwnQU1PMzAsXG4gICAgICAvLyBkb250IGlsIGVzdCB1biBzb3VzIGVuc2VtYmxlIG9ic29sw6h0ZS5cbiAgICAgIGZpbGVuYW1lOiBcIkFNTzUwX2FjdGV1cnNfbWFuZGF0c19vcmdhbmVzX2RpdmlzZXNfWFYuanNvblwiLFxuICAgICAgaWdub3JlRm9yV2ViOiB0cnVlLFxuICAgICAgbGVnaXNsYXR1cmU6IExlZ2lzbGF0dXJlLlF1aW56ZSxcbiAgICAgIHJlcGFpclppcDogKGRhdGFzZXQ6IERhdGFzZXQsIGRhdGFEaXI6IHN0cmluZykgPT4ge1xuICAgICAgICBjb25zdCB0YXJnZXREaXIgPSBwYXRoLmpvaW4oZGF0YURpciwgZGF0YXNldC5maWxlbmFtZSlcbiAgICAgICAgaWYgKGZzLmV4aXN0c1N5bmModGFyZ2V0RGlyKSkge1xuICAgICAgICAgIGZzLnJlbW92ZVN5bmModGFyZ2V0RGlyKVxuICAgICAgICB9XG4gICAgICAgIGZzLm1rZGlyU3luYyh0YXJnZXREaXIpXG4gICAgICAgIGZzLm1vdmVTeW5jKFxuICAgICAgICAgIHBhdGguam9pbihkYXRhRGlyLCBcIm1hbmRhdFwiKSxcbiAgICAgICAgICBwYXRoLmpvaW4odGFyZ2V0RGlyLCBcIm1hbmRhdFwiKSxcbiAgICAgICAgKVxuICAgICAgICBmcy5tb3ZlU3luYyhcbiAgICAgICAgICBwYXRoLmpvaW4oZGF0YURpciwgXCJhY3RldXJcIiksXG4gICAgICAgICAgcGF0aC5qb2luKHRhcmdldERpciwgXCJhY3RldXJcIiksXG4gICAgICAgIClcbiAgICAgICAgZnMubW92ZVN5bmMoXG4gICAgICAgICAgcGF0aC5qb2luKGRhdGFEaXIsIFwib3JnYW5lXCIpLFxuICAgICAgICAgIHBhdGguam9pbih0YXJnZXREaXIsIFwib3JnYW5lXCIpLFxuICAgICAgICApXG4gICAgICB9LFxuICAgICAgc3RydWN0dXJlOiBEYXRhc2V0U3RydWN0dXJlLlNlZ21lbnRlZEZpbGVzLFxuICAgICAgdGl0bGU6XG4gICAgICAgIFwiQWN0ZXVycywgbWFuZGF0cyBldCBvcmdhbmVzIGRlIGxhIFhWw6htZSBsw6lnaXNsYXR1cmUgKGZpY2hpZXJzIHPDqXBhcsOpcywgeSBjb21wcmlzIG1hbmRhdHMpXCIsXG4gICAgICB1cmw6IFwiaHR0cDovL2RhdGEuYXNzZW1ibGVlLW5hdGlvbmFsZS5mci9zdGF0aWMvb3BlbkRhdGEvcmVwb3NpdG9yeS8xNS9hbW8vYWN0ZXVyc19tYW5kYXRzX29yZ2FuZXNfZGl2aXNlcy9BTU81MF9hY3RldXJzX21hbmRhdHNfb3JnYW5lc19kaXZpc2VzX1hWLmpzb24uemlwXCIsXG4gICAgfSxcbiAgXSxcbiAgYWdlbmRhczogW1xuICAgIHtcbiAgICAgIGZpbGVuYW1lOiBcIkFnZW5kYV9YVkkuanNvblwiLFxuICAgICAgbGVnaXNsYXR1cmU6IExlZ2lzbGF0dXJlLlNlaXplLFxuICAgICAgcmVwYWlyWmlwOiAoZGF0YXNldDogRGF0YXNldCwgZGF0YURpcjogc3RyaW5nKSA9PiB7XG4gICAgICAgIGNvbnN0IHRhcmdldERpciA9IHBhdGguam9pbihkYXRhRGlyLCBkYXRhc2V0LmZpbGVuYW1lKVxuICAgICAgICBpZiAoZnMuZXhpc3RzU3luYyh0YXJnZXREaXIpKSB7XG4gICAgICAgICAgZnMucmVtb3ZlU3luYyh0YXJnZXREaXIpXG4gICAgICAgIH1cbiAgICAgICAgZnMubW92ZVN5bmMocGF0aC5qb2luKGRhdGFEaXIsIFwianNvblwiKSwgdGFyZ2V0RGlyKVxuICAgICAgfSxcbiAgICAgIHN0cnVjdHVyZTogRGF0YXNldFN0cnVjdHVyZS5TZWdtZW50ZWRGaWxlcyxcbiAgICAgIHRpdGxlOiBcIkFnZW5kYSBkZSBsYSBYVknDqG1lIGzDqWdpc2xhdHVyZVwiLFxuICAgICAgdXJsOiBcImh0dHA6Ly9kYXRhLmFzc2VtYmxlZS1uYXRpb25hbGUuZnIvc3RhdGljL29wZW5EYXRhL3JlcG9zaXRvcnkvMTYvdnAvcmV1bmlvbnMvQWdlbmRhLmpzb24uemlwXCIsXG4gICAgfSxcbiAgICB7XG4gICAgICBmaWxlbmFtZTogXCJBZ2VuZGFfWFYuanNvblwiLFxuICAgICAgbGVnaXNsYXR1cmU6IExlZ2lzbGF0dXJlLlF1aW56ZSxcbiAgICAgIHJlcGFpclppcDogKGRhdGFzZXQ6IERhdGFzZXQsIGRhdGFEaXI6IHN0cmluZykgPT4ge1xuICAgICAgICBjb25zdCB0YXJnZXREaXIgPSBwYXRoLmpvaW4oZGF0YURpciwgZGF0YXNldC5maWxlbmFtZSlcbiAgICAgICAgaWYgKGZzLmV4aXN0c1N5bmModGFyZ2V0RGlyKSkge1xuICAgICAgICAgIGZzLnJlbW92ZVN5bmModGFyZ2V0RGlyKVxuICAgICAgICB9XG4gICAgICAgIGZzLm1vdmVTeW5jKHBhdGguam9pbihkYXRhRGlyLCBcImpzb25cIiksIHRhcmdldERpcilcbiAgICAgIH0sXG4gICAgICBzdHJ1Y3R1cmU6IERhdGFzZXRTdHJ1Y3R1cmUuU2VnbWVudGVkRmlsZXMsXG4gICAgICB0aXRsZTogXCJBZ2VuZGEgZGUgbGEgWFbDqG1lIGzDqWdpc2xhdHVyZVwiLFxuICAgICAgdXJsOiBcImh0dHA6Ly9kYXRhLmFzc2VtYmxlZS1uYXRpb25hbGUuZnIvc3RhdGljL29wZW5EYXRhL3JlcG9zaXRvcnkvMTUvdnAvcmV1bmlvbnMvQWdlbmRhX1hWLmpzb24uemlwXCIsXG4gICAgfSxcbiAgICB7XG4gICAgICBmaWxlbmFtZTogXCJBZ2VuZGFfWElWLmpzb25cIixcbiAgICAgIGxlZ2lzbGF0dXJlOiBMZWdpc2xhdHVyZS5RdWF0b3J6ZSxcbiAgICAgIHN0cnVjdHVyZTogRGF0YXNldFN0cnVjdHVyZS5TaW5nbGVGaWxlLFxuICAgICAgdGl0bGU6IFwiQWdlbmRhIGRlIGxhIFhJVsOobWUgbMOpZ2lzbGF0dXJlXCIsXG4gICAgICB1cmw6IFwiaHR0cDovL2RhdGEuYXNzZW1ibGVlLW5hdGlvbmFsZS5mci9zdGF0aWMvb3BlbkRhdGEvcmVwb3NpdG9yeS8xNC92cC9yZXVuaW9ucy9BZ2VuZGFfWElWLmpzb24uemlwXCIsXG4gICAgfSxcbiAgXSxcbiAgYW1lbmRlbWVudHM6IFtcbiAgICB7XG4gICAgICBmaWxlbmFtZTogXCJBbWVuZGVtZW50c19YVkkuanNvblwiLFxuICAgICAgbGVnaXNsYXR1cmU6IExlZ2lzbGF0dXJlLlNlaXplLFxuICAgICAgcmVwYWlyWmlwOiAoZGF0YXNldDogRGF0YXNldCwgZGF0YURpcjogc3RyaW5nKSA9PiB7XG4gICAgICAgIGNvbnN0IHRhcmdldERpciA9IHBhdGguam9pbihkYXRhRGlyLCBkYXRhc2V0LmZpbGVuYW1lKVxuICAgICAgICBpZiAoZnMuZXhpc3RzU3luYyh0YXJnZXREaXIpKSB7XG4gICAgICAgICAgZnMucmVtb3ZlU3luYyh0YXJnZXREaXIpXG4gICAgICAgIH1cbiAgICAgICAgZnMubW92ZVN5bmMocGF0aC5qb2luKGRhdGFEaXIsIFwianNvblwiKSwgdGFyZ2V0RGlyKVxuICAgICAgfSxcbiAgICAgIHN0cnVjdHVyZTogRGF0YXNldFN0cnVjdHVyZS5TZWdtZW50ZWRGaWxlcyxcbiAgICAgIHRpdGxlOiBcIkFtZW5kZW1lbnRzIGRlIGxhIFhWScOobWUgbMOpZ2lzbGF0dXJlXCIsXG4gICAgICB1cmw6IFwiaHR0cDovL2RhdGEuYXNzZW1ibGVlLW5hdGlvbmFsZS5mci9zdGF0aWMvb3BlbkRhdGEvcmVwb3NpdG9yeS8xNi9sb2kvYW1lbmRlbWVudHNfZGl2X2xlZ2lzL0FtZW5kZW1lbnRzLmpzb24uemlwXCIsXG4gICAgfSxcbiAgICB7XG4gICAgICBmaWxlbmFtZTogXCJBbWVuZGVtZW50c19YVi5qc29uXCIsXG4gICAgICBsZWdpc2xhdHVyZTogTGVnaXNsYXR1cmUuUXVpbnplLFxuICAgICAgcmVwYWlyWmlwOiAoZGF0YXNldDogRGF0YXNldCwgZGF0YURpcjogc3RyaW5nKSA9PiB7XG4gICAgICAgIGNvbnN0IHRhcmdldERpciA9IHBhdGguam9pbihkYXRhRGlyLCBkYXRhc2V0LmZpbGVuYW1lKVxuICAgICAgICBpZiAoZnMuZXhpc3RzU3luYyh0YXJnZXREaXIpKSB7XG4gICAgICAgICAgZnMucmVtb3ZlU3luYyh0YXJnZXREaXIpXG4gICAgICAgIH1cbiAgICAgICAgZnMubW92ZVN5bmMocGF0aC5qb2luKGRhdGFEaXIsIFwianNvblwiKSwgdGFyZ2V0RGlyKVxuICAgICAgfSxcbiAgICAgIHN0cnVjdHVyZTogRGF0YXNldFN0cnVjdHVyZS5TZWdtZW50ZWRGaWxlcyxcbiAgICAgIHRpdGxlOiBcIkFtZW5kZW1lbnRzIGRlIGxhIFhWw6htZSBsw6lnaXNsYXR1cmVcIixcbiAgICAgIHVybDogXCJodHRwOi8vZGF0YS5hc3NlbWJsZWUtbmF0aW9uYWxlLmZyL3N0YXRpYy9vcGVuRGF0YS9yZXBvc2l0b3J5LzE1L2xvaS9hbWVuZGVtZW50c19sZWdpcy9BbWVuZGVtZW50c19YVi5qc29uLnppcFwiLFxuICAgIH0sXG4gICAgLy8ge1xuICAgIC8vICAgZmlsZW5hbWU6IFwiQW1lbmRlbWVudHNfWElWLmpzb25cIixcbiAgICAvLyAgIGlnbm9yZUZvcldlYjogdHJ1ZSxcbiAgICAvLyAgIGxlZ2lzbGF0dXJlOiBMZWdpc2xhdHVyZS5RdWF0b3J6ZSxcbiAgICAvLyAgIHN0cnVjdHVyZTogRGF0YXNldFN0cnVjdHVyZS5TaW5nbGVGaWxlLFxuICAgIC8vICAgdGl0bGU6IFwiQW1lbmRlbWVudHMgZGUgbGEgWElWw6htZSBsw6lnaXNsYXR1cmVcIixcbiAgICAvLyAgIHVybDpcbiAgICAvLyAgICAgXCJodHRwOi8vZGF0YS5hc3NlbWJsZWUtbmF0aW9uYWxlLmZyL3N0YXRpYy9vcGVuRGF0YS9yZXBvc2l0b3J5LzE0L2xvaS9hbWVuZGVtZW50c19sZWdpc19YSVYvQW1lbmRlbWVudHNfWElWLmpzb24uemlwXCIsXG4gICAgLy8gfSxcbiAgXSxcbiAgZG9zc2llcnNMZWdpc2xhdGlmczogW1xuICAgIHtcbiAgICAgIGZpbGVuYW1lOiBcIkRvc3NpZXJzX0xlZ2lzbGF0aWZzX1hWSS5qc29uXCIsXG4gICAgICBsZWdpc2xhdHVyZTogTGVnaXNsYXR1cmUuU2VpemUsXG4gICAgICByZXBhaXJaaXA6IChkYXRhc2V0OiBEYXRhc2V0LCBkYXRhRGlyOiBzdHJpbmcpID0+IHtcbiAgICAgICAgY29uc3QgdGFyZ2V0RGlyID0gcGF0aC5qb2luKGRhdGFEaXIsIGRhdGFzZXQuZmlsZW5hbWUpXG4gICAgICAgIGlmIChmcy5leGlzdHNTeW5jKHRhcmdldERpcikpIHtcbiAgICAgICAgICBmcy5yZW1vdmVTeW5jKHRhcmdldERpcilcbiAgICAgICAgfVxuICAgICAgICBmcy5tb3ZlU3luYyhwYXRoLmpvaW4oZGF0YURpciwgXCJqc29uXCIpLCB0YXJnZXREaXIpXG4gICAgICB9LFxuICAgICAgc3RydWN0dXJlOiBEYXRhc2V0U3RydWN0dXJlLlNlZ21lbnRlZEZpbGVzLFxuICAgICAgdGl0bGU6IFwiRG9zc2llcnMgbMOpZ2lzbGF0aWZzIGRlIGxhIFhWScOobWUgbMOpZ2lzbGF0dXJlXCIsXG4gICAgICB1cmw6IFwiaHR0cDovL2RhdGEuYXNzZW1ibGVlLW5hdGlvbmFsZS5mci9zdGF0aWMvb3BlbkRhdGEvcmVwb3NpdG9yeS8xNi9sb2kvZG9zc2llcnNfbGVnaXNsYXRpZnMvRG9zc2llcnNfTGVnaXNsYXRpZnMuanNvbi56aXBcIixcbiAgICB9LFxuICAgIHtcbiAgICAgIGZpbGVuYW1lOiBcIkRvc3NpZXJzX0xlZ2lzbGF0aWZzX1hWLmpzb25cIixcbiAgICAgIGxlZ2lzbGF0dXJlOiBMZWdpc2xhdHVyZS5RdWluemUsXG4gICAgICByZXBhaXJaaXA6IChkYXRhc2V0OiBEYXRhc2V0LCBkYXRhRGlyOiBzdHJpbmcpID0+IHtcbiAgICAgICAgY29uc3QgdGFyZ2V0RGlyID0gcGF0aC5qb2luKGRhdGFEaXIsIGRhdGFzZXQuZmlsZW5hbWUpXG4gICAgICAgIGlmIChmcy5leGlzdHNTeW5jKHRhcmdldERpcikpIHtcbiAgICAgICAgICBmcy5yZW1vdmVTeW5jKHRhcmdldERpcilcbiAgICAgICAgfVxuICAgICAgICBmcy5tb3ZlU3luYyhwYXRoLmpvaW4oZGF0YURpciwgXCJqc29uXCIpLCB0YXJnZXREaXIpXG4gICAgICB9LFxuICAgICAgc3RydWN0dXJlOiBEYXRhc2V0U3RydWN0dXJlLlNlZ21lbnRlZEZpbGVzLFxuICAgICAgdGl0bGU6IFwiRG9zc2llcnMgbMOpZ2lzbGF0aWZzIGRlIGxhIFhWw6htZSBsw6lnaXNsYXR1cmVcIixcbiAgICAgIHVybDogXCJodHRwOi8vZGF0YS5hc3NlbWJsZWUtbmF0aW9uYWxlLmZyL3N0YXRpYy9vcGVuRGF0YS9yZXBvc2l0b3J5LzE1L2xvaS9kb3NzaWVyc19sZWdpc2xhdGlmcy9Eb3NzaWVyc19MZWdpc2xhdGlmc19YVi5qc29uLnppcFwiLFxuICAgIH0sXG4gICAge1xuICAgICAgZmlsZW5hbWU6IFwiRG9zc2llcnNfTGVnaXNsYXRpZnNfWElWLmpzb25cIixcbiAgICAgIGlnbm9yZUZvcldlYjogdHJ1ZSxcbiAgICAgIGxlZ2lzbGF0dXJlOiBMZWdpc2xhdHVyZS5RdWF0b3J6ZSxcbiAgICAgIHN0cnVjdHVyZTogRGF0YXNldFN0cnVjdHVyZS5TaW5nbGVGaWxlLFxuICAgICAgdGl0bGU6IFwiRG9zc2llcnMgbMOpZ2lzbGF0aWZzIGRlIGxhIFhJVsOobWUgbMOpZ2lzbGF0dXJlXCIsXG4gICAgICB1cmw6IFwiaHR0cDovL2RhdGEuYXNzZW1ibGVlLW5hdGlvbmFsZS5mci9zdGF0aWMvb3BlbkRhdGEvcmVwb3NpdG9yeS8xNC9sb2kvZG9zc2llcnNfbGVnaXNsYXRpZnMvRG9zc2llcnNfTGVnaXNsYXRpZnNfWElWLmpzb24uemlwXCIsXG4gICAgfSxcbiAgXSxcbiAgc2NydXRpbnM6IFtcbiAgICB7XG4gICAgICBmaWxlbmFtZTogXCJTY3J1dGluc19YVkkuanNvblwiLFxuICAgICAgbGVnaXNsYXR1cmU6IExlZ2lzbGF0dXJlLlNlaXplLFxuICAgICAgcmVwYWlyWmlwOiAoZGF0YXNldDogRGF0YXNldCwgZGF0YURpcjogc3RyaW5nKSA9PiB7XG4gICAgICAgIGNvbnN0IHRhcmdldERpciA9IHBhdGguam9pbihkYXRhRGlyLCBkYXRhc2V0LmZpbGVuYW1lKVxuICAgICAgICBpZiAoZnMuZXhpc3RzU3luYyh0YXJnZXREaXIpKSB7XG4gICAgICAgICAgZnMucmVtb3ZlU3luYyh0YXJnZXREaXIpXG4gICAgICAgIH1cbiAgICAgICAgZnMubW92ZVN5bmMocGF0aC5qb2luKGRhdGFEaXIsIFwianNvblwiKSwgdGFyZ2V0RGlyKVxuICAgICAgfSxcbiAgICAgIHN0cnVjdHVyZTogRGF0YXNldFN0cnVjdHVyZS5TZWdtZW50ZWRGaWxlcyxcbiAgICAgIHRpdGxlOiBcIlNjcnV0aW5zIGRlIGxhIFhWScOobWUgbMOpZ2lzbGF0dXJlXCIsXG4gICAgICB1cmw6IFwiaHR0cDovL2RhdGEuYXNzZW1ibGVlLW5hdGlvbmFsZS5mci9zdGF0aWMvb3BlbkRhdGEvcmVwb3NpdG9yeS8xNi9sb2kvc2NydXRpbnMvU2NydXRpbnMuanNvbi56aXBcIixcbiAgICB9LFxuICAgIHtcbiAgICAgIGZpbGVuYW1lOiBcIlNjcnV0aW5zX1hWLmpzb25cIixcbiAgICAgIGxlZ2lzbGF0dXJlOiBMZWdpc2xhdHVyZS5RdWluemUsXG4gICAgICByZXBhaXJaaXA6IChkYXRhc2V0OiBEYXRhc2V0LCBkYXRhRGlyOiBzdHJpbmcpID0+IHtcbiAgICAgICAgY29uc3QgdGFyZ2V0RGlyID0gcGF0aC5qb2luKGRhdGFEaXIsIGRhdGFzZXQuZmlsZW5hbWUpXG4gICAgICAgIGlmIChmcy5leGlzdHNTeW5jKHRhcmdldERpcikpIHtcbiAgICAgICAgICBmcy5yZW1vdmVTeW5jKHRhcmdldERpcilcbiAgICAgICAgfVxuICAgICAgICBmcy5tb3ZlU3luYyhwYXRoLmpvaW4oZGF0YURpciwgXCJqc29uXCIpLCB0YXJnZXREaXIpXG4gICAgICB9LFxuICAgICAgc3RydWN0dXJlOiBEYXRhc2V0U3RydWN0dXJlLlNlZ21lbnRlZEZpbGVzLFxuICAgICAgdGl0bGU6IFwiU2NydXRpbnMgZGUgbGEgWFbDqG1lIGzDqWdpc2xhdHVyZVwiLFxuICAgICAgdXJsOiBcImh0dHA6Ly9kYXRhLmFzc2VtYmxlZS1uYXRpb25hbGUuZnIvc3RhdGljL29wZW5EYXRhL3JlcG9zaXRvcnkvMTUvbG9pL3NjcnV0aW5zL1NjcnV0aW5zX1hWLmpzb24uemlwXCIsXG4gICAgfSxcbiAgICB7XG4gICAgICBmaWxlbmFtZTogXCJTY3J1dGluc19YSVYuanNvblwiLFxuICAgICAgaWdub3JlRm9yV2ViOiB0cnVlLFxuICAgICAgbGVnaXNsYXR1cmU6IExlZ2lzbGF0dXJlLlF1YXRvcnplLFxuICAgICAgc3RydWN0dXJlOiBEYXRhc2V0U3RydWN0dXJlLlNpbmdsZUZpbGUsXG4gICAgICB0aXRsZTogXCJTY3J1dGlucyBkZSBsYSBYSVbDqG1lIGzDqWdpc2xhdHVyZVwiLFxuICAgICAgdXJsOiBcImh0dHA6Ly9kYXRhLmFzc2VtYmxlZS1uYXRpb25hbGUuZnIvc3RhdGljL29wZW5EYXRhL3JlcG9zaXRvcnkvMTQvbG9pL3NjcnV0aW5zL1NjcnV0aW5zX1hJVi5qc29uLnppcFwiLFxuICAgIH0sXG4gIF0sXG59XG5cbmNvbnN0IGRpcmVjdG9yeTJzY2hlbWE6IGFueSA9IHtcbiAgXCIuKkFnZW5kYV8uKlwiOiBcImFnZW5kYVwiLFxuICBcIi4qU2NydXRpbnNfLipcIjogXCJzY3J1dGluXCIsXG4gIFwiLipBbWVuZGVtZW50c18uKlwiOiBcImFtZW5kZW1lbnRcIixcbiAgXCIuKkRvc3NpZXJzX0xlZ2lzbGF0aWZzXy4qL2RvY3VtZW50c1wiOiBcImRvY3VtZW50XCIsXG4gIFwiLipEb3NzaWVyc19MZWdpc2xhdGlmc18uKi9kb3NzaWVyc1wiOiBcImRvc3NpZXJcIixcbiAgXCIuKmFjdGV1cnNfbWFuZGF0c19vcmdhbmVzL29yZ2FuZXNcIjogXCJvcmdhbmVcIixcbiAgXCIuKmFjdGV1cnNfbWFuZGF0c19vcmdhbmVzL2FjdGV1cnNcIjogXCJhY3RldXJcIixcbiAgXCIuKkFNTzMwX3RvdXNfYWN0ZXVyc190b3VzX21hbmRhdHNfdG91c19vcmdhbmVzX2hpc3RvcmlxdWUuKi9vcmdhbmVzXCI6XG4gICAgXCJvcmdhbmVcIixcbiAgXCIuKkFNTzMwX3RvdXNfYWN0ZXVyc190b3VzX21hbmRhdHNfdG91c19vcmdhbmVzX2hpc3RvcmlxdWUuKi9hY3RldXJzXCI6XG4gICAgXCJhY3RldXJcIixcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldERhdGFzZXRzKCk6IGFueSB7XG4gIHJldHVybiBbXG4gICAgXCJBZ2VuZGFfWElWXCIsXG4gICAgXCJBZ2VuZGFfWFZcIixcbiAgICBcIkFnZW5kYV9YVklcIixcbiAgICBcIlNjcnV0aW5zX1hJVlwiLFxuICAgIFwiU2NydXRpbnNfWFZcIixcbiAgICBcIlNjcnV0aW5zX1hWSVwiLFxuICAgIFwiQW1lbmRlbWVudHNfWElWXCIsXG4gICAgXCJBbWVuZGVtZW50c19YVlwiLFxuICAgIFwiQW1lbmRlbWVudHNfWFZJXCIsXG4gICAgXCJEb3NzaWVyc19MZWdpc2xhdGlmc19YSVZcIixcbiAgICBcIkRvc3NpZXJzX0xlZ2lzbGF0aWZzX1hWXCIsXG4gICAgXCJEb3NzaWVyc19MZWdpc2xhdGlmc19YVklcIixcbiAgICBcIkFNTzMwX3RvdXNfYWN0ZXVyc190b3VzX21hbmRhdHNfdG91c19vcmdhbmVzX2hpc3RvcmlxdWVcIixcbiAgICBcImFjdGV1cnNfbWFuZGF0c19vcmdhbmVzXCIsXG4gIF1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkRGF0YXNldChkaXI6IGFueSk6IGFueSB7XG4gIGZvciAoY29uc3QgZGF0YXNldCBvZiBnZXREYXRhc2V0cygpKSB7XG4gICAgaWYgKGRpci5pbmNsdWRlcyhkYXRhc2V0KSkgcmV0dXJuIHRydWVcbiAgfVxuICByZXR1cm4gZmFsc2Vcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFNjaGVtYXMoKTogYW55IHtcbiAgcmV0dXJuIE9iamVjdC52YWx1ZXMoZGlyZWN0b3J5MnNjaGVtYSlcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRhdGFzZXREaXJlY3RvcnlTY2hlbWEoZGF0YXNldDogc3RyaW5nKTogYW55IHtcbiAgbGV0IGRpcmVjdG9yaWVzOiBhbnlcbiAgaWYgKGRhdGFzZXQuaW5jbHVkZXMoXCJEb3NzaWVyc19MZWdpc2xhdGlmc19cIikpIHtcbiAgICBkaXJlY3RvcmllcyA9IFtgJHtkYXRhc2V0fS9kb2N1bWVudHNgLCBgJHtkYXRhc2V0fS9kb3NzaWVyc2BdXG4gIH0gZWxzZSBpZiAoXG4gICAgZGF0YXNldC5pbmNsdWRlcyhcImFjdGV1cnNfbWFuZGF0c19vcmdhbmVzXCIpIHx8XG4gICAgZGF0YXNldC5pbmNsdWRlcyhcIkFNTzMwX3RvdXNfYWN0ZXVyc190b3VzX21hbmRhdHNfdG91c19vcmdhbmVzX2hpc3RvcmlxdWVcIilcbiAgKSB7XG4gICAgZGlyZWN0b3JpZXMgPSBbYCR7ZGF0YXNldH0vb3JnYW5lc2AsIGAke2RhdGFzZXR9L2FjdGV1cnNgXVxuICB9IGVsc2Uge1xuICAgIGRpcmVjdG9yaWVzID0gW2RhdGFzZXRdXG4gIH1cblxuICBsZXQgcmVzdWx0cyA9IFtdXG4gIGZvciAoY29uc3QgZGlyZWN0b3J5IG9mIGRpcmVjdG9yaWVzKSB7XG4gICAgZm9yIChjb25zdCByZSBvZiBPYmplY3Qua2V5cyhkaXJlY3Rvcnkyc2NoZW1hKSkge1xuICAgICAgaWYgKG5ldyBSZWdFeHAocmUpLmV4ZWMoZGlyZWN0b3J5KSlcbiAgICAgICAgcmVzdWx0cy5wdXNoKFtgJHtkaXJlY3Rvcnl9LyoqLyouanNvbmAsIGRpcmVjdG9yeTJzY2hlbWFbcmVdXSlcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdHNcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZpbGVEYXRhc2V0VXJsKGZpbGVuYW1lOiBzdHJpbmcpOiBbc3RyaW5nLCBzdHJpbmddIHwgbnVsbCB7XG4gIGNvbnN0IHJlID0gXCJeLiovKC4qKV9uZXR0b3llLyguKilcIlxuICBjb25zdCBtYXRjaCA9IG5ldyBSZWdFeHAocmUpLmV4ZWMoZmlsZW5hbWUpXG4gIGlmIChtYXRjaCA9PSBudWxsKSByZXR1cm4gbnVsbFxuICBsZXQgW2RhdGFzZXQsIGZpbGVdID0gW21hdGNoWzFdLCBtYXRjaFsyXV1cbiAgaWYgKGRhdGFzZXQgPT0gXCJBTU8zMF90b3VzX2FjdGV1cnNfdG91c19tYW5kYXRzX3RvdXNfb3JnYW5lc19oaXN0b3JpcXVlXCIpXG4gICAgZGF0YXNldCA9IFwiYWN0ZXVyc19tYW5kYXRzX29yZ2FuZXNcIlxuICByZXR1cm4gW2RhdGFzZXQsIGZpbGVdXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkaWZmVXBzdHJlYW0oZmlsZW5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IGRhdGFzZXRVcmwgPSBmaWxlRGF0YXNldFVybChmaWxlbmFtZSlcbiAgaWYgKGRhdGFzZXRVcmwgPT0gbnVsbCkgcmV0dXJuIGZpbGVuYW1lXG4gIGNvbnN0IFtkYXRhc2V0LCBmaWxlXSA9IGRhdGFzZXRVcmxcbiAgY29uc3Qgc3VtID0gY3JlYXRlSGFzaChcInNoYTFcIikudXBkYXRlKGZpbGUpLmRpZ2VzdChcImhleFwiKS50b1N0cmluZygpXG4gIHJldHVybiBgWyR7ZmlsZX1dKGh0dHBzOi8vZ2l0LmVuLXJvb3Qub3JnL3RyaWNvdGV1c2VzL2RhdGEudHJpY290ZXVzZXMuZnIvJHtkYXRhc2V0fS8tL2NvbXBhcmUvdXBzdHJlYW0uLi5tYXN0ZXIjJHtzdW19KWBcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1hc3RlclVybChmaWxlbmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3QgZGF0YXNldFVybCA9IGZpbGVEYXRhc2V0VXJsKGZpbGVuYW1lKVxuICBpZiAoZGF0YXNldFVybCA9PSBudWxsKSByZXR1cm4gZmlsZW5hbWVcbiAgY29uc3QgW2RhdGFzZXQsIGZpbGVdID0gZGF0YXNldFVybFxuICByZXR1cm4gYFske2ZpbGV9XShodHRwczovL2dpdC5lbi1yb290Lm9yZy90cmljb3RldXNlcy9kYXRhLnRyaWNvdGV1c2VzLmZyLyR7ZGF0YXNldH0vLS90cmVlL21hc3Rlci8ke2ZpbGV9KWBc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
package/lib/datasets.mjs CHANGED
@@ -488,21 +488,22 @@ export const datasets = {
488
488
  title: "Dossiers législatifs de la XIVème législature",
489
489
  url: "http://data.assemblee-nationale.fr/static/openData/repository/14/loi/dossiers_legislatifs/Dossiers_Legislatifs_XIV.json.zip"
490
490
  }],
491
- scrutins: [// {
492
- // filename: "Scrutins_XVI.json",
493
- // legislature: Legislature.Seize,
494
- // repairZip: (dataset: Dataset, dataDir: string) => {
495
- // const targetDir = path.join(dataDir, dataset.filename)
496
- // if (fs.existsSync(targetDir)) {
497
- // fs.removeSync(targetDir)
498
- // }
499
- // fs.moveSync(path.join(dataDir, "json"), targetDir)
500
- // },
501
- // structure: DatasetStructure.SegmentedFiles,
502
- // title: "Scrutins de la XVIème législature",
503
- // url: "http://data.assemblee-nationale.fr/static/openData/repository/16/loi/scrutins/Scrutins.json.zip",
504
- // },
505
- {
491
+ scrutins: [{
492
+ filename: "Scrutins_XVI.json",
493
+ legislature: Legislature.Seize,
494
+ repairZip: (dataset, dataDir) => {
495
+ const targetDir = path.join(dataDir, dataset.filename);
496
+
497
+ if (fs.existsSync(targetDir)) {
498
+ fs.removeSync(targetDir);
499
+ }
500
+
501
+ fs.moveSync(path.join(dataDir, "json"), targetDir);
502
+ },
503
+ structure: DatasetStructure.SegmentedFiles,
504
+ title: "Scrutins de la XVIème législature",
505
+ url: "http://data.assemblee-nationale.fr/static/openData/repository/16/loi/scrutins/Scrutins.json.zip"
506
+ }, {
506
507
  filename: "Scrutins_XV.json",
507
508
  legislature: Legislature.Quinze,
508
509
  repairZip: (dataset, dataDir) => {
@@ -538,8 +539,7 @@ const directory2schema = {
538
539
  ".*AMO30_tous_acteurs_tous_mandats_tous_organes_historique.*/acteurs": "acteur"
539
540
  };
540
541
  export function getDatasets() {
541
- return ["Agenda_XIV", "Agenda_XV", "Agenda_XVI", "Scrutins_XIV", "Scrutins_XV", // "Scrutins_XVI",
542
- "Amendements_XIV", "Amendements_XV", "Amendements_XVI", "Dossiers_Legislatifs_XIV", "Dossiers_Legislatifs_XV", "Dossiers_Legislatifs_XVI", "AMO30_tous_acteurs_tous_mandats_tous_organes_historique", "acteurs_mandats_organes"];
542
+ return ["Agenda_XIV", "Agenda_XV", "Agenda_XVI", "Scrutins_XIV", "Scrutins_XV", "Scrutins_XVI", "Amendements_XIV", "Amendements_XV", "Amendements_XVI", "Dossiers_Legislatifs_XIV", "Dossiers_Legislatifs_XV", "Dossiers_Legislatifs_XVI", "AMO30_tous_acteurs_tous_mandats_tous_organes_historique", "acteurs_mandats_organes"];
543
543
  }
544
544
  export function validDataset(dir) {
545
545
  for (const dataset of getDatasets()) {
@@ -593,4 +593,4 @@ export function masterUrl(filename) {
593
593
  const [dataset, file] = datasetUrl;
594
594
  return `[${file}](https://git.en-root.org/tricoteuses/data.tricoteuses.fr/${dataset}/-/tree/master/${file})`;
595
595
  }
596
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjcmVhdGVIYXNoIiwiZnMiLCJwYXRoIiwiTGVnaXNsYXR1cmUiLCJEYXRhc2V0U3RydWN0dXJlIiwiRW5hYmxlZERhdGFzZXRzIiwiZGF0YXNldHMiLCJhY3RldXJzRXRPcmdhbmVzIiwiZmlsZW5hbWUiLCJpZ25vcmVGb3JXZWIiLCJsZWdpc2xhdHVyZSIsIlNlaXplIiwicmVwYWlyWmlwIiwiZGF0YXNldCIsImRhdGFEaXIiLCJ0YXJnZXREaXIiLCJqb2luIiwiZXhpc3RzU3luYyIsInJlbW92ZVN5bmMiLCJtb3ZlU3luYyIsInN0cnVjdHVyZSIsIlNlZ21lbnRlZEZpbGVzIiwidGl0bGUiLCJ1cmwiLCJRdWluemUiLCJRdWF0b3J6ZSIsIlNpbmdsZUZpbGUiLCJBbGwiLCJta2RpclN5bmMiLCJhZ2VuZGFzIiwiYW1lbmRlbWVudHMiLCJkb3NzaWVyc0xlZ2lzbGF0aWZzIiwic2NydXRpbnMiLCJkaXJlY3Rvcnkyc2NoZW1hIiwiZ2V0RGF0YXNldHMiLCJ2YWxpZERhdGFzZXQiLCJkaXIiLCJpbmNsdWRlcyIsImdldFNjaGVtYXMiLCJPYmplY3QiLCJ2YWx1ZXMiLCJkYXRhc2V0RGlyZWN0b3J5U2NoZW1hIiwiZGlyZWN0b3JpZXMiLCJyZXN1bHRzIiwiZGlyZWN0b3J5IiwicmUiLCJrZXlzIiwiUmVnRXhwIiwiZXhlYyIsInB1c2giLCJmaWxlRGF0YXNldFVybCIsIm1hdGNoIiwiZmlsZSIsImRpZmZVcHN0cmVhbSIsImRhdGFzZXRVcmwiLCJzdW0iLCJ1cGRhdGUiLCJkaWdlc3QiLCJ0b1N0cmluZyIsIm1hc3RlclVybCJdLCJzb3VyY2VzIjpbIi4uL3NyYy9kYXRhc2V0cy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjcmVhdGVIYXNoIH0gZnJvbSBcImNyeXB0b1wiXG5pbXBvcnQgZnMgZnJvbSBcImZzLWV4dHJhXCJcbmltcG9ydCBwYXRoIGZyb20gXCJwYXRoXCJcblxuaW1wb3J0IHsgTGVnaXNsYXR1cmUgfSBmcm9tIFwiLi90eXBlcy9sZWdpc2xhdHVyZXNcIlxuXG5pbnRlcmZhY2UgRGF0YXNldCB7XG4gIGZpbGVuYW1lOiBzdHJpbmdcbiAgaWdub3JlRm9yV2ViPzogYm9vbGVhblxuICBsZWdpc2xhdHVyZTogTGVnaXNsYXR1cmVcbiAgcmVwYWlyWmlwPzogKGRhdGFzZXQ6IERhdGFzZXQsIGRhdGFEaXI6IHN0cmluZykgPT4gdm9pZFxuICBzdHJ1Y3R1cmU6IERhdGFzZXRTdHJ1Y3R1cmVcbiAgdGl0bGU6IHN0cmluZ1xuICB1cmw6IHN0cmluZ1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERhdGFzZXRzIHtcbiAgYWN0ZXVyc0V0T3JnYW5lczogRGF0YXNldFtdXG4gIGFnZW5kYXM6IERhdGFzZXRbXVxuICBhbWVuZGVtZW50czogRGF0YXNldFtdXG4gIGRvc3NpZXJzTGVnaXNsYXRpZnM6IERhdGFzZXRbXVxuICBzY3J1dGluczogRGF0YXNldFtdXG59XG5cbmV4cG9ydCBlbnVtIERhdGFzZXRTdHJ1Y3R1cmUge1xuICBTaW5nbGVGaWxlLFxuICBTZWdtZW50ZWRGaWxlcyxcbn1cblxuZXhwb3J0IGVudW0gRW5hYmxlZERhdGFzZXRzIHtcbiAgTm9uZSA9IDAsXG4gIEFjdGV1cnNFdE9yZ2FuZXMgPSAxIDw8IDAsXG4gIEFnZW5kYXMgPSAxIDw8IDEsXG4gIEFtZW5kZW1lbnRzID0gMSA8PCAyLFxuICBEb3NzaWVyc0xlZ2lzbGF0aWZzID0gMSA8PCAzLFxuICBQaG90b3MgPSAxIDw8IDQsXG4gIFNjcnV0aW5zID0gMSA8PCA1LFxuICBBbGwgPSBBY3RldXJzRXRPcmdhbmVzIHxcbiAgICBBZ2VuZGFzIHxcbiAgICBBbWVuZGVtZW50cyB8XG4gICAgRG9zc2llcnNMZWdpc2xhdGlmcyB8XG4gICAgUGhvdG9zIHxcbiAgICBTY3J1dGlucyxcbn1cblxuZXhwb3J0IGNvbnN0IGRhdGFzZXRzOiBEYXRhc2V0cyA9IHtcbiAgYWN0ZXVyc0V0T3JnYW5lczogW1xuICAgIHtcbiAgICAgIC8vIEFNTzEwIChYVkkpXG4gICAgICAvL1xuICAgICAgLy8gQ29udGllbnQgbGVzIGTDqXB1dMOpcyBhY3RpZnNcbiAgICAgIC8vICogYXZlYyB0b3VzIGxlcyBtYW5kYXRzIGVuIGNvdXJzXG4gICAgICAvLyAqIHkgY29tcHJpcyBhdmVjIGxldXIgcGFydGkgcG9saXRpcXVlICh0eXBlT3JnYW5lOiBcIlBBUlBPTFwiKVxuICAgICAgLy8gKiBtYWlzIHNhbnMgbGVzIG1hbmRhdHMgYWNoZXbDqXMgKHkgY29tcHJpcyBkYW5zIGNldHRlIGzDqWdpc2xhdHVyZSlcbiAgICAgIC8vXG4gICAgICAvLyBPcmdhbmVzIDpcbiAgICAgIC8vICogQ29udGllbnQgc2V1bGVtZW50IGxlcyBvcmdhbmVzIGNvcnJlc3BvbmRhbnRzIGF1eCBtYW5kYXRzIGVuIGNvdXJzXG4gICAgICAvLyAqIGF2ZWMgbGUgeHNpVHlwZSBkZSBsJ29yZ2FuZVxuICAgICAgLy8gKiBhdmVjIGRlcyBjb21taXNzaW9ucyBzw6luYXRvcmlhbGVzIChwZXJtYW5lbnRlcyBldCBzcMOpY2lhbGVzKSBlbiBjb3Vyc1xuICAgICAgLy8gKiBhdmVjIGRlcyBkw6lsw6lnYXRpb25zIHPDqW5hdG9yaWFsZXMgZW4gY291cnNcbiAgICAgIC8vICogYXZlYyBkZXMgZ3JvdXBlcyBzw6luYXRvcmlhdXggZW4gY291cnNcbiAgICAgIC8vICogYXZlYyBkZXMgbWluaXN0w6hyZXMgZW4gY291cnNcbiAgICAgIC8vICogYXZlYyBsZXMgUHLDqXNpZGVuY2VzIGRlIGxhIFLDqXB1YmxpcXVlICh5IGNvbXByaXMgU2Fya296eSlcbiAgICAgIC8vICogYXZlYyBsZSBDb25zZWlsIGNvbnN0aXR1dGlvbm5lbFxuICAgICAgLy9cbiAgICAgIC8vIENlIGZpY2hpZXIgZXN0IHVuIHNvdXMtZW5zZW1ibGUgw6AgdG91cyBsZXMgbml2ZWF1eCBkdSBmaWNoaWVyIEFNTzIwXG4gICAgICAvLyAocXVpIGVzdCBsdWkgbcOqbWUgdW4gc291cy1lbnNlbWJsZSBkZSBsJ0FNTzMwKS5cbiAgICAgIC8vIElsIG4nYXBwb3J0ZSBkb25jIGFic29sdW1lbnQgcmllbiBwYXIgcmFwcG9ydCDDoCBBTU8yMCBvdSBsJ0FNTzMwLlxuICAgICAgZmlsZW5hbWU6IFwiQU1PMTBfZGVwdXRlc19hY3RpZnNfbWFuZGF0c19hY3RpZnNfb3JnYW5lc19YVkkuanNvblwiLFxuICAgICAgaWdub3JlRm9yV2ViOiB0cnVlLFxuICAgICAgbGVnaXNsYXR1cmU6IExlZ2lzbGF0dXJlLlNlaXplLFxuICAgICAgcmVwYWlyWmlwOiAoZGF0YXNldDogRGF0YXNldCwgZGF0YURpcjogc3RyaW5nKSA9PiB7XG4gICAgICAgIGNvbnN0IHRhcmdldERpciA9IHBhdGguam9pbihkYXRhRGlyLCBkYXRhc2V0LmZpbGVuYW1lKVxuICAgICAgICBpZiAoZnMuZXhpc3RzU3luYyh0YXJnZXREaXIpKSB7XG4gICAgICAgICAgZnMucmVtb3ZlU3luYyh0YXJnZXREaXIpXG4gICAgICAgIH1cbiAgICAgICAgZnMubW92ZVN5bmMocGF0aC5qb2luKGRhdGFEaXIsIFwianNvblwiKSwgdGFyZ2V0RGlyKVxuICAgICAgfSxcbiAgICAgIHN0cnVjdHVyZTogRGF0YXNldFN0cnVjdHVyZS5TZWdtZW50ZWRGaWxlcyxcbiAgICAgIHRpdGxlOiBcIkTDqXB1dMOpcyBhY3RpZnMgZXQgb3JnYW5lcyBkZSBsYSBYVknDqG1lIGzDqWdpc2xhdHVyZVwiLFxuICAgICAgdXJsOiBcImh0dHA6Ly9kYXRhLmFzc2VtYmxlZS1uYXRpb25hbGUuZnIvc3RhdGljL29wZW5EYXRhL3JlcG9zaXRvcnkvMTYvYW1vL2RlcHV0ZXNfYWN0aWZzX21hbmRhdHNfYWN0aWZzX29yZ2FuZXMvQU1PMTBfZGVwdXRlc19hY3RpZnNfbWFuZGF0c19hY3RpZnNfb3JnYW5lcy5qc29uLnppcFwiLFxuICAgIH0sXG4gICAge1xuICAgICAgLy8gQU1PMTAgKFhWKVxuICAgICAgLy9cbiAgICAgIC8vIENvbnRpZW50IGxlcyBkw6lwdXTDqXMgYWN0aWZzXG4gICAgICAvLyAqIGF2ZWMgdG91cyBsZXMgbWFuZGF0cyBlbiBjb3Vyc1xuICAgICAgLy8gKiB5IGNvbXByaXMgYXZlYyBsZXVyIHBhcnRpIHBvbGl0aXF1ZSAodHlwZU9yZ2FuZTogXCJQQVJQT0xcIilcbiAgICAgIC8vICogbWFpcyBzYW5zIGxlcyBtYW5kYXRzIGFjaGV2w6lzICh5IGNvbXByaXMgZGFucyBjZXR0ZSBsw6lnaXNsYXR1cmUpXG4gICAgICAvL1xuICAgICAgLy8gT3JnYW5lcyA6XG4gICAgICAvLyAqIENvbnRpZW50IHNldWxlbWVudCBsZXMgb3JnYW5lcyBjb3JyZXNwb25kYW50cyBhdXggbWFuZGF0cyBlbiBjb3Vyc1xuICAgICAgLy8gKiBhdmVjIGxlIHhzaVR5cGUgZGUgbCdvcmdhbmVcbiAgICAgIC8vICogYXZlYyBkZXMgY29tbWlzc2lvbnMgc8OpbmF0b3JpYWxlcyAocGVybWFuZW50ZXMgZXQgc3DDqWNpYWxlcykgZW4gY291cnNcbiAgICAgIC8vICogYXZlYyBkZXMgZMOpbMOpZ2F0aW9ucyBzw6luYXRvcmlhbGVzIGVuIGNvdXJzXG4gICAgICAvLyAqIGF2ZWMgZGVzIGdyb3VwZXMgc8OpbmF0b3JpYXV4IGVuIGNvdXJzXG4gICAgICAvLyAqIGF2ZWMgZGVzIG1pbmlzdMOocmVzIGVuIGNvdXJzXG4gICAgICAvLyAqIGF2ZWMgbGVzIFByw6lzaWRlbmNlcyBkZSBsYSBSw6lwdWJsaXF1ZSAoeSBjb21wcmlzIFNhcmtvenkpXG4gICAgICAvLyAqIGF2ZWMgbGUgQ29uc2VpbCBjb25zdGl0dXRpb25uZWxcbiAgICAgIC8vXG4gICAgICAvLyBDZSBmaWNoaWVyIGVzdCB1biBzb3VzLWVuc2VtYmxlIMOgIHRvdXMgbGVzIG5pdmVhdXggZHUgZmljaGllciBBTU8yMFxuICAgICAgLy8gKHF1aSBlc3QgbHVpIG3Dqm1lIHVuIHNvdXMtZW5zZW1ibGUgZGUgbCdBTU8zMCkuXG4gICAgICAvLyBJbCBuJ2FwcG9ydGUgZG9uYyBhYnNvbHVtZW50IHJpZW4gcGFyIHJhcHBvcnQgw6AgQU1PMjAgb3UgbCdBTU8zMC5cbiAgICAgIGZpbGVuYW1lOiBcIkFNTzEwX2RlcHV0ZXNfYWN0aWZzX21hbmRhdHNfYWN0aWZzX29yZ2FuZXNfWFYuanNvblwiLFxuICAgICAgaWdub3JlRm9yV2ViOiB0cnVlLFxuICAgICAgbGVnaXNsYXR1cmU6IExlZ2lzbGF0dXJlLlF1aW56ZSxcbiAgICAgIHJlcGFpclppcDogKGRhdGFzZXQ6IERhdGFzZXQsIGRhdGFEaXI6IHN0cmluZykgPT4ge1xuICAgICAgICBjb25zdCB0YXJnZXREaXIgPSBwYXRoLmpvaW4oZGF0YURpciwgZGF0YXNldC5maWxlbmFtZSlcbiAgICAgICAgaWYgKGZzLmV4aXN0c1N5bmModGFyZ2V0RGlyKSkge1xuICAgICAgICAgIGZzLnJlbW92ZVN5bmModGFyZ2V0RGlyKVxuICAgICAgICB9XG4gICAgICAgIGZzLm1vdmVTeW5jKHBhdGguam9pbihkYXRhRGlyLCBcImpzb25cIiksIHRhcmdldERpcilcbiAgICAgIH0sXG4gICAgICBzdHJ1Y3R1cmU6IERhdGFzZXRTdHJ1Y3R1cmUuU2VnbWVudGVkRmlsZXMsXG4gICAgICB0aXRsZTogXCJEw6lwdXTDqXMgYWN0aWZzIGV0IG9yZ2FuZXMgZGUgbGEgWFbDqG1lIGzDqWdpc2xhdHVyZVwiLFxuICAgICAgdXJsOiBcImh0dHA6Ly9kYXRhLmFzc2VtYmxlZS1uYXRpb25hbGUuZnIvc3RhdGljL29wZW5EYXRhL3JlcG9zaXRvcnkvMTUvYW1vL2RlcHV0ZXNfYWN0aWZzX21hbmRhdHNfYWN0aWZzX29yZ2FuZXMvQU1PMTBfZGVwdXRlc19hY3RpZnNfbWFuZGF0c19hY3RpZnNfb3JnYW5lc19YVi5qc29uLnppcFwiLFxuICAgIH0sXG4gICAge1xuICAgICAgLy8gQU1PMjAgKFhWSSlcbiAgICAgIC8vXG4gICAgICAvLyBDb250aWVudCBsZXMgZMOpcHV0w6lzIGRlIGxhIGzDqWdpc2xhdHVyZSwgYWN0aWZzIG91IG5vbiAoaW52YWxpZMOpcywgZXRjKSwgbGVzIHPDqW5hdGV1cnMgYWN0dWVsc1xuICAgICAgLy8gUG91ciBsZXMgZMOpcHV0w6lzIDpcbiAgICAgIC8vICogYXZlYyB0b3VzIGxldXJzIG1hbmRhdHMgZGUgbGEgbMOpZ2lzbGF0dXJlXG4gICAgICAvLyAqIHkgY29tcHJpcyBsZXMgbWFuZGF0cyBhY2hldsOpc1xuICAgICAgLy8gKiB5IGNvbXByaXMgbGV1cnMgcGFydGlzIHBvbGl0aXF1ZXMgICh0eXBlT3JnYW5lOiBcIlBBUlBPTFwiKVxuICAgICAgLy8gKiBtYWlzIHNhbnMgbGVzIG1hbmRhdHMgZGVzIGzDqWdpc2xhdHVyZXMgcHLDqWPDqWRlbnRlcyAocXVpIHNvbnQgZGFucyBBTU80MClcbiAgICAgIC8vXG4gICAgICAvLyBDb250aWVudCB0b3VzIGxlcyBvcmdhbmVzIHLDqWbDqXJlbmPDqXMgcGFyIGxlcyBtYW5kYXRzXG4gICAgICAvLyAqIGF2ZWMgbGUgeHNpVHlwZSBkZSBsJ29yZ2FuZVxuICAgICAgLy8gKiBhdmVjIGRlcyBjb21taXNzaW9ucyBzw6luYXRvcmlhbGVzIChwZXJtYW5lbnRlcyBldCBzcMOpY2lhbGVzKSBlbiBjb3Vyc1xuICAgICAgLy8gKiBhdmVjIGRlcyBkw6lsw6lnYXRpb25zIHPDqW5hdG9yaWFsZXMgZW4gY291cnNcbiAgICAgIC8vICogYXZlYyBkZXMgZ3JvdXBlcyBzw6luYXRvcmlhdXggZW4gY291cnNcbiAgICAgIC8vICogYXZlYyBkZXMgbWluaXN0w6hyZXMgZW4gY291cnNcbiAgICAgIC8vICogYXZlYyBsZXMgUHLDqXNpZGVuY2VzIGRlIGxhIFLDqXB1YmxpcXVlICh5IGNvbXByaXMgU2Fya296eSlcbiAgICAgIC8vICogYXZlYyBsZSBDb25zZWlsIGNvbnN0aXR1dGlvbm5lbFxuICAgICAgLy9cbiAgICAgIC8vIENlIGZpY2hpZXIgZXN0IHVuIHNvdXMtZW5zZW1ibGUgw6AgdG91cyBsZXMgbml2ZWF1eCBkdSBmaWNoaWVyIEFNTzMwLlxuICAgICAgLy8gSWwgbidhcHBvcnRlIGRvbmMgYWJzb2x1bWVudCByaWVuIHBhciByYXBwb3J0IMOgIGwnQU1PMzAuXG4gICAgICBmaWxlbmFtZTogXCJBTU8yMF9kZXBfc2VuX21pbl90b3VzX21hbmRhdHNfZXRfb3JnYW5lc19YVkkuanNvblwiLFxuICAgICAgaWdub3JlRm9yV2ViOiB0cnVlLFxuICAgICAgbGVnaXNsYXR1cmU6IExlZ2lzbGF0dXJlLlNlaXplLFxuICAgICAgcmVwYWlyWmlwOiAoZGF0YXNldDogRGF0YXNldCwgZGF0YURpcjogc3RyaW5nKSA9PiB7XG4gICAgICAgIGNvbnN0IHRhcmdldERpciA9IHBhdGguam9pbihkYXRhRGlyLCBkYXRhc2V0LmZpbGVuYW1lKVxuICAgICAgICBpZiAoZnMuZXhpc3RzU3luYyh0YXJnZXREaXIpKSB7XG4gICAgICAgICAgZnMucmVtb3ZlU3luYyh0YXJnZXREaXIpXG4gICAgICAgIH1cbiAgICAgICAgZnMubW92ZVN5bmMocGF0aC5qb2luKGRhdGFEaXIsIFwianNvblwiKSwgdGFyZ2V0RGlyKVxuICAgICAgfSxcbiAgICAgIHN0cnVjdHVyZTogRGF0YXNldFN0cnVjdHVyZS5TZWdtZW50ZWRGaWxlcyxcbiAgICAgIHRpdGxlOiBcIkFjdGV1cnMgZXQgb3JnYW5lcyBkZSBsYSBYVsOobWUgbMOpZ2lzbGF0dXJlXCIsXG4gICAgICB1cmw6IFwiaHR0cDovL2RhdGEuYXNzZW1ibGVlLW5hdGlvbmFsZS5mci9zdGF0aWMvb3BlbkRhdGEvcmVwb3NpdG9yeS8xNi9hbW8vZGVwdXRlc19zZW5hdGV1cnNfbWluaXN0cmVzX2xlZ2lzbGF0dXJlL0FNTzIwX2RlcF9zZW5fbWluX3RvdXNfbWFuZGF0c19ldF9vcmdhbmVzLmpzb24uemlwXCIsXG4gICAgfSxcbiAgICB7XG4gICAgICAvLyBBTU8yMCAoWFYpXG4gICAgICAvL1xuICAgICAgLy8gQ29udGllbnQgbGVzIGTDqXB1dMOpcyBkZSBsYSBsw6lnaXNsYXR1cmUsIGFjdGlmcyBvdSBub24gKGludmFsaWTDqXMsIGV0YyksIGxlcyBzw6luYXRldXJzIGFjdHVlbHNcbiAgICAgIC8vIFBvdXIgbGVzIGTDqXB1dMOpcyA6XG4gICAgICAvLyAqIGF2ZWMgdG91cyBsZXVycyBtYW5kYXRzIGRlIGxhIGzDqWdpc2xhdHVyZVxuICAgICAgLy8gKiB5IGNvbXByaXMgbGVzIG1hbmRhdHMgYWNoZXbDqXNcbiAgICAgIC8vICogeSBjb21wcmlzIGxldXJzIHBhcnRpcyBwb2xpdGlxdWVzICAodHlwZU9yZ2FuZTogXCJQQVJQT0xcIilcbiAgICAgIC8vICogbWFpcyBzYW5zIGxlcyBtYW5kYXRzIGRlcyBsw6lnaXNsYXR1cmVzIHByw6ljw6lkZW50ZXMgKHF1aSBzb250IGRhbnMgQU1PNDApXG4gICAgICAvL1xuICAgICAgLy8gQ29udGllbnQgdG91cyBsZXMgb3JnYW5lcyByw6lmw6lyZW5jw6lzIHBhciBsZXMgbWFuZGF0c1xuICAgICAgLy8gKiBhdmVjIGxlIHhzaVR5cGUgZGUgbCdvcmdhbmVcbiAgICAgIC8vICogYXZlYyBkZXMgY29tbWlzc2lvbnMgc8OpbmF0b3JpYWxlcyAocGVybWFuZW50ZXMgZXQgc3DDqWNpYWxlcykgZW4gY291cnNcbiAgICAgIC8vICogYXZlYyBkZXMgZMOpbMOpZ2F0aW9ucyBzw6luYXRvcmlhbGVzIGVuIGNvdXJzXG4gICAgICAvLyAqIGF2ZWMgZGVzIGdyb3VwZXMgc8OpbmF0b3JpYXV4IGVuIGNvdXJzXG4gICAgICAvLyAqIGF2ZWMgZGVzIG1pbmlzdMOocmVzIGVuIGNvdXJzXG4gICAgICAvLyAqIGF2ZWMgbGVzIFByw6lzaWRlbmNlcyBkZSBsYSBSw6lwdWJsaXF1ZSAoeSBjb21wcmlzIFNhcmtvenkpXG4gICAgICAvLyAqIGF2ZWMgbGUgQ29uc2VpbCBjb25zdGl0dXRpb25uZWxcbiAgICAgIC8vXG4gICAgICAvLyBDZSBmaWNoaWVyIGVzdCB1biBzb3VzLWVuc2VtYmxlIMOgIHRvdXMgbGVzIG5pdmVhdXggZHUgZmljaGllciBBTU8zMC5cbiAgICAgIC8vIElsIG4nYXBwb3J0ZSBkb25jIGFic29sdW1lbnQgcmllbiBwYXIgcmFwcG9ydCDDoCBsJ0FNTzMwLlxuICAgICAgZmlsZW5hbWU6IFwiQU1PMjBfZGVwX3Nlbl9taW5fdG91c19tYW5kYXRzX2V0X29yZ2FuZXNfWFYuanNvblwiLFxuICAgICAgaWdub3JlRm9yV2ViOiB0cnVlLFxuICAgICAgbGVnaXNsYXR1cmU6IExlZ2lzbGF0dXJlLlF1aW56ZSxcbiAgICAgIHJlcGFpclppcDogKGRhdGFzZXQ6IERhdGFzZXQsIGRhdGFEaXI6IHN0cmluZykgPT4ge1xuICAgICAgICBjb25zdCB0YXJnZXREaXIgPSBwYXRoLmpvaW4oZGF0YURpciwgZGF0YXNldC5maWxlbmFtZSlcbiAgICAgICAgaWYgKGZzLmV4aXN0c1N5bmModGFyZ2V0RGlyKSkge1xuICAgICAgICAgIGZzLnJlbW92ZVN5bmModGFyZ2V0RGlyKVxuICAgICAgICB9XG4gICAgICAgIGZzLm1vdmVTeW5jKHBhdGguam9pbihkYXRhRGlyLCBcImpzb25cIiksIHRhcmdldERpcilcbiAgICAgIH0sXG4gICAgICBzdHJ1Y3R1cmU6IERhdGFzZXRTdHJ1Y3R1cmUuU2VnbWVudGVkRmlsZXMsXG4gICAgICB0aXRsZTogXCJBY3RldXJzIGV0IG9yZ2FuZXMgZGUgbGEgWFbDqG1lIGzDqWdpc2xhdHVyZVwiLFxuICAgICAgdXJsOiBcImh0dHA6Ly9kYXRhLmFzc2VtYmxlZS1uYXRpb25hbGUuZnIvc3RhdGljL29wZW5EYXRhL3JlcG9zaXRvcnkvMTUvYW1vL2RlcHV0ZXNfc2VuYXRldXJzX21pbmlzdHJlc19sZWdpc2xhdHVyZS9BTU8yMF9kZXBfc2VuX21pbl90b3VzX21hbmRhdHNfZXRfb3JnYW5lc19YVi5qc29uLnppcFwiLFxuICAgIH0sXG4gICAge1xuICAgICAgLy8gQU1PMjAgKFhJVilcbiAgICAgIC8vXG4gICAgICAvLyBDb21tZSBBTU8yMCAoWFYpIG1haXMgcG91ciBsYSBYSVbDqG1lIGzDqWdpc2xhdHVyZVxuICAgICAgLy8gVG91cyBsZXMgYWN0ZXVycyBzYXVmIHVuIChQQTQyOTg5Mikgc29udCBwcsOpc2VudHMgZW4gcGx1cyDDoCBqb3VyIGRhbnMgQU1PMzAuXG4gICAgICAvLyBDZXQgYWN0ZXVyIFBBNDI5ODkyIChhbmNpZW5uZSBTw6luYXRyaWNlKSBuJ2VzdCBwcsOpc2VudCBkYW5zIGF1Y3VuIGRlcyBhdXRyZXNcbiAgICAgIC8vIGZpY2hpZXJzIEFNTy5cbiAgICAgIC8vIFRvdXMgbGVzIG9yZ2FuZXMgc29udCBwcsOpc2VudHMgZW4gcGx1cyBjb21wbGV0cyBkYW5zIEFNTzMwLlxuICAgICAgLy9cbiAgICAgIC8vIENlIGZpY2hpZXIgZXN0IGRvbmMgw6AgdW4gZMOpdGFpbCBwcsOqdCAoUEE0Mjk4OTIpIHVuIHNvdXMtZW5zZW1ibGUgZCdBTU8zMC5cbiAgICAgIC8vIElsIG4nYXBwb3J0ZSBkb25jIHF1YXNpbWVudCByaWVuIHBhciByYXBwb3J0IMOgIGwnQU1PMzAuXG4gICAgICBmaWxlbmFtZTogXCJBTU8yMF9kZXBfc2VuX21pbl90b3VzX21hbmRhdHNfZXRfb3JnYW5lc19YSVYuanNvblwiLFxuICAgICAgaWdub3JlRm9yV2ViOiB0cnVlLFxuICAgICAgbGVnaXNsYXR1cmU6IExlZ2lzbGF0dXJlLlF1YXRvcnplLFxuICAgICAgc3RydWN0dXJlOiBEYXRhc2V0U3RydWN0dXJlLlNpbmdsZUZpbGUsXG4gICAgICB0aXRsZTogXCJBY3RldXJzIGV0IG9yZ2FuZXMgZGUgbGEgWElWw6htZSBsw6lnaXNsYXR1cmVcIixcbiAgICAgIHVybDogXCJodHRwOi8vZGF0YS5hc3NlbWJsZWUtbmF0aW9uYWxlLmZyL3N0YXRpYy9vcGVuRGF0YS9yZXBvc2l0b3J5LzE0L2Ftby9kZXB1dGVzX3NlbmF0ZXVyc19taW5pc3RyZXNfbGVnaXNsYXR1cmVzX1hJVi9BTU8yMF9kZXBfc2VuX21pbl90b3VzX21hbmRhdHNfZXRfb3JnYW5lc19YSVYuanNvbi56aXBcIixcbiAgICB9LFxuICAgIHtcbiAgICAgIC8vIEFNTzMwIChYVkkpXG4gICAgICAvL1xuICAgICAgLy8gQ2UgZmljaGllciBjb250aWVudCB0b3VzIGxlcyBhY3RldXJzIGV0IG9yZ2FuZXMuXG4gICAgICAvLyBDJ2VzdCB1biBzdXItZW5zZW1ibGUgZGVzIGZpY2hpZXJzIEFNTzIwLlxuICAgICAgZmlsZW5hbWU6IFwiQU1PMzBfdG91c19hY3RldXJzX3RvdXNfbWFuZGF0c190b3VzX29yZ2FuZXNfaGlzdG9yaXF1ZS5qc29uXCIsXG4gICAgICBsZWdpc2xhdHVyZTogTGVnaXNsYXR1cmUuQWxsLFxuICAgICAgcmVwYWlyWmlwOiAoZGF0YXNldDogRGF0YXNldCwgZGF0YURpcjogc3RyaW5nKSA9PiB7XG4gICAgICAgIGNvbnN0IHRhcmdldERpciA9IHBhdGguam9pbihkYXRhRGlyLCBkYXRhc2V0LmZpbGVuYW1lKVxuICAgICAgICBpZiAoZnMuZXhpc3RzU3luYyh0YXJnZXREaXIpKSB7XG4gICAgICAgICAgZnMucmVtb3ZlU3luYyh0YXJnZXREaXIpXG4gICAgICAgIH1cbiAgICAgICAgZnMubW92ZVN5bmMocGF0aC5qb2luKGRhdGFEaXIsIFwianNvblwiKSwgdGFyZ2V0RGlyKVxuICAgICAgfSxcbiAgICAgIHN0cnVjdHVyZTogRGF0YXNldFN0cnVjdHVyZS5TZWdtZW50ZWRGaWxlcyxcbiAgICAgIHRpdGxlOlxuICAgICAgICBcIkhpc3RvcmlxdWUgZGUgdG91cyBsZXMgYWN0ZXVycyBldCBvcmdhbmVzIGRlcHVpcyBsYSBYScOobWUgbMOpZ2lzbGF0dXJlXCIsXG4gICAgICB1cmw6IFwiaHR0cDovL2RhdGEuYXNzZW1ibGVlLW5hdGlvbmFsZS5mci9zdGF0aWMvb3BlbkRhdGEvcmVwb3NpdG9yeS8xNi9hbW8vdG91c19hY3RldXJzX21hbmRhdHNfb3JnYW5lc194aV9sZWdpc2xhdHVyZS9BTU8zMF90b3VzX2FjdGV1cnNfdG91c19tYW5kYXRzX3RvdXNfb3JnYW5lc19oaXN0b3JpcXVlLmpzb24uemlwXCIsXG4gICAgfSxcbiAgICAvLyB7XG4gICAgLy8gICAvLyBBTU8zMCAoWFYpXG4gICAgLy8gICAvL1xuICAgIC8vICAgLy8gQ2UgZmljaGllciBjb250aWVudCB0b3VzIGxlcyBhY3RldXJzIGV0IG9yZ2FuZXMuXG4gICAgLy8gICAvLyBDJ2VzdCB1biBzdXItZW5zZW1ibGUgZGVzIGZpY2hpZXJzIEFNTzIwLlxuICAgIC8vICAgZmlsZW5hbWU6IFwiQU1PMzBfdG91c19hY3RldXJzX3RvdXNfbWFuZGF0c190b3VzX29yZ2FuZXNfaGlzdG9yaXF1ZS5qc29uXCIsXG4gICAgLy8gICBsZWdpc2xhdHVyZTogTGVnaXNsYXR1cmUuQWxsLFxuICAgIC8vICAgcmVwYWlyWmlwOiAoZGF0YXNldDogRGF0YXNldCwgZGF0YURpcjogc3RyaW5nKSA9PiB7XG4gICAgLy8gICAgIGNvbnN0IHRhcmdldERpciA9IHBhdGguam9pbihkYXRhRGlyLCBkYXRhc2V0LmZpbGVuYW1lKVxuICAgIC8vICAgICBpZiAoZnMuZXhpc3RzU3luYyh0YXJnZXREaXIpKSB7XG4gICAgLy8gICAgICAgZnMucmVtb3ZlU3luYyh0YXJnZXREaXIpXG4gICAgLy8gICAgIH1cbiAgICAvLyAgICAgZnMubW92ZVN5bmMocGF0aC5qb2luKGRhdGFEaXIsIFwianNvblwiKSwgdGFyZ2V0RGlyKVxuICAgIC8vICAgfSxcbiAgICAvLyAgIHN0cnVjdHVyZTogRGF0YXNldFN0cnVjdHVyZS5TZWdtZW50ZWRGaWxlcyxcbiAgICAvLyAgIHRpdGxlOlxuICAgIC8vICAgICBcIkhpc3RvcmlxdWUgZGUgdG91cyBsZXMgYWN0ZXVycyBldCBvcmdhbmVzIGRlcHVpcyBsYSBYScOobWUgbMOpZ2lzbGF0dXJlXCIsXG4gICAgLy8gICB1cmw6IFwiaHR0cDovL2RhdGEuYXNzZW1ibGVlLW5hdGlvbmFsZS5mci9zdGF0aWMvb3BlbkRhdGEvcmVwb3NpdG9yeS8xNS9hbW8vdG91c19hY3RldXJzX21hbmRhdHNfb3JnYW5lc194aV9sZWdpc2xhdHVyZS9BTU8zMF90b3VzX2FjdGV1cnNfdG91c19tYW5kYXRzX3RvdXNfb3JnYW5lc19oaXN0b3JpcXVlLmpzb24uemlwXCIsXG4gICAgLy8gfSxcbiAgICB7XG4gICAgICAvLyBBTU80MCAoWFZJKVxuICAgICAgLy9cbiAgICAgIC8vIENvbnRpZW50IGxlcyBkw6lwdXTDqXMgYWN0aWZzIChsZXMgbcOqbWVzIHF1J0FNTzIwKVxuICAgICAgLy8gKiBhdmVjIHByZXNxdWUgdG91cyBsZXVycyBtYW5kYXRzXG4gICAgICAvLyAqIHkgY29tcHJpcyBsZXMgbWFuZGF0cyBhY2hldsOpcyBldCBjZXV4IGRlcyBsw6lnaXNsYXR1cmVzIHByw6ljw6lkZW50ZXNcbiAgICAgIC8vICogeSBjb21wcmlzIGxldXJzIHBhcnRpcyBwb2xpdGlxdWVzIHByw6ljw6lkZW50c1xuICAgICAgLy8gKiBtYWlzIHNhbnMgbGV1ciBwYXJ0aSBwb2xpdGlxdWUgYWN0dWVsICh0eXBlT3JnYW5lOiBcIlBBUlBPTFwiKVxuICAgICAgLy9cbiAgICAgIC8vIENvbnRpZW50IGJlYXVjb3VwIGQnb3JnYW5lcyByw6lmw6lyZW5jw6lzLCB5IGNvbXByaXMgY2V1eCBkZXMgbMOpZ2lzbGF0dXJlc1xuICAgICAgLy8gcHLDqWPDqWRlbnRlc1xuICAgICAgLy8gKiBtYWlzIGlsIG1hbnF1ZSBsZSB4c2lUeXBlIGRlcyBvcmdhbmVzXG4gICAgICAvLyAqIG5lIGNvbnRpZW50IHBhcyBsZXMgb3JnYW5lcyBzw6luYXRvcmlhdXhcbiAgICAgIC8vICogbmUgY29udGllbnQgcGFzIGxlcyBtaW5pc3TDqHJlc1xuICAgICAgLy8gKiBuZSBjb250aWVudCBwYXMgbGEgUHLDqXNpZGVuY2UgZGUgbGEgUsOpcHVibGlxdWVcbiAgICAgIC8vICogbmUgY29udGllbnQgcGFzIGxlIENvbnNlaWwgY29uc3RpdHV0aW9ubmVsXG4gICAgICAvL1xuICAgICAgLy8gUG91ciBsZXMgYWN0ZXVycywgY2UgZMOpcMO0dCBlc3QgdW4gc291cy1lbnNlbWJsZSBzdHJpY3QgZGUgQU1PMzAgOlxuICAgICAgLy8gSWwgYSBtb2lucyBkJ2FjdGV1cnMgZXQgaWwgc29udCBtb2lucyBjb21wbGV0cy5cbiAgICAgIC8vXG4gICAgICAvLyBQb3VyIGxlcyBvcmdhbmVzIDpcbiAgICAgIC8vIFF1YW5kIGwnb3JnYW5lIGVzdCBhdXNzaSBwcsOpc2VudCBkYW5zIEFNTzMwLCBpbCB2YXV0IG1pZXV4IHByZW5kcmUgY2VsdWlcbiAgICAgIC8vIGQnQU1PMzAsIGNhciBpbCBjb250aWVudCBsZSB4c2lUeXBlIChjJ2VzdCBsYSBzZXVsZSBkaWZmw6lyZW5jZSBzZW1ibGUtdC1pKS5cbiAgICAgIC8vIFNpbm9uLCBpbCBmYXV0IGxlIHByZW5kcmUgc2V1bGVtZW50IHNpIG9uIGVzdCBpbnTDqXJlc3PDqSBwYXIgbGVzIGzDqWdpc2xhdHVyZXNcbiAgICAgIC8vIHByw6ljw6lkZW50ZXMuXG4gICAgICBmaWxlbmFtZTogXCJBTU80MF9kZXB1dGVzX2FjdGlmc19tYW5kYXRzX2FjdGlmc19vcmdhbmVzX2RpdmlzZXNfWFZJLmpzb25cIixcbiAgICAgIGlnbm9yZUZvcldlYjogdHJ1ZSxcbiAgICAgIGxlZ2lzbGF0dXJlOiBMZWdpc2xhdHVyZS5TZWl6ZSxcbiAgICAgIHJlcGFpclppcDogKGRhdGFzZXQ6IERhdGFzZXQsIGRhdGFEaXI6IHN0cmluZykgPT4ge1xuICAgICAgICBjb25zdCB0YXJnZXREaXIgPSBwYXRoLmpvaW4oZGF0YURpciwgZGF0YXNldC5maWxlbmFtZSlcbiAgICAgICAgaWYgKGZzLmV4aXN0c1N5bmModGFyZ2V0RGlyKSkge1xuICAgICAgICAgIGZzLnJlbW92ZVN5bmModGFyZ2V0RGlyKVxuICAgICAgICB9XG4gICAgICAgIGZzLm1rZGlyU3luYyh0YXJnZXREaXIpXG4gICAgICAgIGZzLm1vdmVTeW5jKFxuICAgICAgICAgIHBhdGguam9pbihkYXRhRGlyLCBcImFjdGV1clwiKSxcbiAgICAgICAgICBwYXRoLmpvaW4odGFyZ2V0RGlyLCBcImFjdGV1clwiKSxcbiAgICAgICAgKVxuICAgICAgICBmcy5tb3ZlU3luYyhcbiAgICAgICAgICBwYXRoLmpvaW4oZGF0YURpciwgXCJvcmdhbmVcIiksXG4gICAgICAgICAgcGF0aC5qb2luKHRhcmdldERpciwgXCJvcmdhbmVcIiksXG4gICAgICAgIClcbiAgICAgIH0sXG4gICAgICBzdHJ1Y3R1cmU6IERhdGFzZXRTdHJ1Y3R1cmUuU2VnbWVudGVkRmlsZXMsXG4gICAgICB0aXRsZTogXCJEw6lwdXTDqXMgYWN0aWZzIGV0IG9yZ2FuZXMgZGUgbGEgWFZJw6htZSBsw6lnaXNsYXR1cmVcIixcbiAgICAgIHVybDogXCJodHRwOi8vZGF0YS5hc3NlbWJsZWUtbmF0aW9uYWxlLmZyL3N0YXRpYy9vcGVuRGF0YS9yZXBvc2l0b3J5LzE2L2Ftby9kZXB1dGVzX2FjdGlmc19tYW5kYXRzX2FjdGlmc19vcmdhbmVzX2RpdmlzZXMvQU1PNDBfZGVwdXRlc19hY3RpZnNfbWFuZGF0c19hY3RpZnNfb3JnYW5lc19kaXZpc2VzLmpzb24uemlwXCIsXG4gICAgfSxcbiAgICB7XG4gICAgICAvLyBBTU80MCAoWFYpXG4gICAgICAvL1xuICAgICAgLy8gQ29udGllbnQgbGVzIGTDqXB1dMOpcyBhY3RpZnMgKGxlcyBtw6ptZXMgcXUnQU1PMjApXG4gICAgICAvLyAqIGF2ZWMgcHJlc3F1ZSB0b3VzIGxldXJzIG1hbmRhdHNcbiAgICAgIC8vICogeSBjb21wcmlzIGxlcyBtYW5kYXRzIGFjaGV2w6lzIGV0IGNldXggZGVzIGzDqWdpc2xhdHVyZXMgcHLDqWPDqWRlbnRlc1xuICAgICAgLy8gKiB5IGNvbXByaXMgbGV1cnMgcGFydGlzIHBvbGl0aXF1ZXMgcHLDqWPDqWRlbnRzXG4gICAgICAvLyAqIG1haXMgc2FucyBsZXVyIHBhcnRpIHBvbGl0aXF1ZSBhY3R1ZWwgKHR5cGVPcmdhbmU6IFwiUEFSUE9MXCIpXG4gICAgICAvL1xuICAgICAgLy8gQ29udGllbnQgYmVhdWNvdXAgZCdvcmdhbmVzIHLDqWbDqXJlbmPDqXMsIHkgY29tcHJpcyBjZXV4IGRlcyBsw6lnaXNsYXR1cmVzXG4gICAgICAvLyBwcsOpY8OpZGVudGVzXG4gICAgICAvLyAqIG1haXMgaWwgbWFucXVlIGxlIHhzaVR5cGUgZGVzIG9yZ2FuZXNcbiAgICAgIC8vICogbmUgY29udGllbnQgcGFzIGxlcyBvcmdhbmVzIHPDqW5hdG9yaWF1eFxuICAgICAgLy8gKiBuZSBjb250aWVudCBwYXMgbGVzIG1pbmlzdMOocmVzXG4gICAgICAvLyAqIG5lIGNvbnRpZW50IHBhcyBsYSBQcsOpc2lkZW5jZSBkZSBsYSBSw6lwdWJsaXF1ZVxuICAgICAgLy8gKiBuZSBjb250aWVudCBwYXMgbGUgQ29uc2VpbCBjb25zdGl0dXRpb25uZWxcbiAgICAgIC8vXG4gICAgICAvLyBQb3VyIGxlcyBhY3RldXJzLCBjZSBkw6lww7R0IGVzdCB1biBzb3VzLWVuc2VtYmxlIHN0cmljdCBkZSBBTU8zMCA6XG4gICAgICAvLyBJbCBhIG1vaW5zIGQnYWN0ZXVycyBldCBpbCBzb250IG1vaW5zIGNvbXBsZXRzLlxuICAgICAgLy9cbiAgICAgIC8vIFBvdXIgbGVzIG9yZ2FuZXMgOlxuICAgICAgLy8gUXVhbmQgbCdvcmdhbmUgZXN0IGF1c3NpIHByw6lzZW50IGRhbnMgQU1PMzAsIGlsIHZhdXQgbWlldXggcHJlbmRyZSBjZWx1aVxuICAgICAgLy8gZCdBTU8zMCwgY2FyIGlsIGNvbnRpZW50IGxlIHhzaVR5cGUgKGMnZXN0IGxhIHNldWxlIGRpZmbDqXJlbmNlIHNlbWJsZS10LWkpLlxuICAgICAgLy8gU2lub24sIGlsIGZhdXQgbGUgcHJlbmRyZSBzZXVsZW1lbnQgc2kgb24gZXN0IGludMOpcmVzc8OpIHBhciBsZXMgbMOpZ2lzbGF0dXJlc1xuICAgICAgLy8gcHLDqWPDqWRlbnRlcy5cbiAgICAgIGZpbGVuYW1lOiBcIkFNTzQwX2RlcHV0ZXNfYWN0aWZzX21hbmRhdHNfYWN0aWZzX29yZ2FuZXNfZGl2aXNlc19YVi5qc29uXCIsXG4gICAgICBpZ25vcmVGb3JXZWI6IHRydWUsXG4gICAgICBsZWdpc2xhdHVyZTogTGVnaXNsYXR1cmUuUXVpbnplLFxuICAgICAgcmVwYWlyWmlwOiAoZGF0YXNldDogRGF0YXNldCwgZGF0YURpcjogc3RyaW5nKSA9PiB7XG4gICAgICAgIGNvbnN0IHRhcmdldERpciA9IHBhdGguam9pbihkYXRhRGlyLCBkYXRhc2V0LmZpbGVuYW1lKVxuICAgICAgICBpZiAoZnMuZXhpc3RzU3luYyh0YXJnZXREaXIpKSB7XG4gICAgICAgICAgZnMucmVtb3ZlU3luYyh0YXJnZXREaXIpXG4gICAgICAgIH1cbiAgICAgICAgZnMubWtkaXJTeW5jKHRhcmdldERpcilcbiAgICAgICAgZnMubW92ZVN5bmMoXG4gICAgICAgICAgcGF0aC5qb2luKGRhdGFEaXIsIFwiYWN0ZXVyXCIpLFxuICAgICAgICAgIHBhdGguam9pbih0YXJnZXREaXIsIFwiYWN0ZXVyXCIpLFxuICAgICAgICApXG4gICAgICAgIGZzLm1vdmVTeW5jKFxuICAgICAgICAgIHBhdGguam9pbihkYXRhRGlyLCBcIm9yZ2FuZVwiKSxcbiAgICAgICAgICBwYXRoLmpvaW4odGFyZ2V0RGlyLCBcIm9yZ2FuZVwiKSxcbiAgICAgICAgKVxuICAgICAgfSxcbiAgICAgIHN0cnVjdHVyZTogRGF0YXNldFN0cnVjdHVyZS5TZWdtZW50ZWRGaWxlcyxcbiAgICAgIHRpdGxlOiBcIkTDqXB1dMOpcyBhY3RpZnMgZXQgb3JnYW5lcyBkZSBsYSBYVsOobWUgbMOpZ2lzbGF0dXJlXCIsXG4gICAgICB1cmw6IFwiaHR0cDovL2RhdGEuYXNzZW1ibGVlLW5hdGlvbmFsZS5mci9zdGF0aWMvb3BlbkRhdGEvcmVwb3NpdG9yeS8xNS9hbW8vZGVwdXRlc19hY3RpZnNfbWFuZGF0c19hY3RpZnNfb3JnYW5lc19kaXZpc2VzL0FNTzQwX2RlcHV0ZXNfYWN0aWZzX21hbmRhdHNfYWN0aWZzX29yZ2FuZXNfZGl2aXNlc19YVi5qc29uLnppcFwiLFxuICAgIH0sXG4gICAge1xuICAgICAgLy8gQU1PNTAgKFhWSSlcbiAgICAgIC8vXG4gICAgICAvLyBBdHRlbnRpb24sIGNlIGZpY2hpZXIgbidlc3QgcGFzIG1pcyDDoCBqb3VyIHLDqWd1bGnDqHJlbWVudCAhXG4gICAgICAvL1xuICAgICAgLy8gUG91ciBsZXMgYWN0ZXVycyA6XG4gICAgICAvLyAqIGMnZXN0IHVuIHNvdXMgZW5zZW1ibGUgb2Jzb2zDqHRlIGQnQU1PMzBcbiAgICAgIC8vICogaWwgbWFucXVlIGxlcyB4c2lUeXBlIGF1eCBtYW5kYXRzXG4gICAgICAvL1xuICAgICAgLy8gUG91ciBsZXMgb3JnYW5lcyA6XG4gICAgICAvLyAqIGMnZXN0IHVuIHNvdXMgZW5zZW1ibGUgb2Jzb2zDqHRlIGQnQU1PMzBcbiAgICAgIC8vICogaWwgbWFucXVlIGxlcyB4c2lUeXBlXG4gICAgICAvL1xuICAgICAgLy8gQ2UgZmljaGllciBuJ2FwcG9ydGUgZG9uYyBhYnNvbHVtZW50IHJpZW4gcGFyIHJhcHBvcnQgw6AgbCdBTU8zMCxcbiAgICAgIC8vIGRvbnQgaWwgZXN0IHVuIHNvdXMgZW5zZW1ibGUgb2Jzb2zDqHRlLlxuICAgICAgZmlsZW5hbWU6IFwiQU1PNTBfYWN0ZXVyc19tYW5kYXRzX29yZ2FuZXNfZGl2aXNlc19YVkkuanNvblwiLFxuICAgICAgaWdub3JlRm9yV2ViOiB0cnVlLFxuICAgICAgbGVnaXNsYXR1cmU6IExlZ2lzbGF0dXJlLlNlaXplLFxuICAgICAgcmVwYWlyWmlwOiAoZGF0YXNldDogRGF0YXNldCwgZGF0YURpcjogc3RyaW5nKSA9PiB7XG4gICAgICAgIGNvbnN0IHRhcmdldERpciA9IHBhdGguam9pbihkYXRhRGlyLCBkYXRhc2V0LmZpbGVuYW1lKVxuICAgICAgICBpZiAoZnMuZXhpc3RzU3luYyh0YXJnZXREaXIpKSB7XG4gICAgICAgICAgZnMucmVtb3ZlU3luYyh0YXJnZXREaXIpXG4gICAgICAgIH1cbiAgICAgICAgZnMubWtkaXJTeW5jKHRhcmdldERpcilcbiAgICAgICAgZnMubW92ZVN5bmMoXG4gICAgICAgICAgcGF0aC5qb2luKGRhdGFEaXIsIFwibWFuZGF0XCIpLFxuICAgICAgICAgIHBhdGguam9pbih0YXJnZXREaXIsIFwibWFuZGF0XCIpLFxuICAgICAgICApXG4gICAgICAgIGZzLm1vdmVTeW5jKFxuICAgICAgICAgIHBhdGguam9pbihkYXRhRGlyLCBcImFjdGV1clwiKSxcbiAgICAgICAgICBwYXRoLmpvaW4odGFyZ2V0RGlyLCBcImFjdGV1clwiKSxcbiAgICAgICAgKVxuICAgICAgICBmcy5tb3ZlU3luYyhcbiAgICAgICAgICBwYXRoLmpvaW4oZGF0YURpciwgXCJvcmdhbmVcIiksXG4gICAgICAgICAgcGF0aC5qb2luKHRhcmdldERpciwgXCJvcmdhbmVcIiksXG4gICAgICAgIClcbiAgICAgIH0sXG4gICAgICBzdHJ1Y3R1cmU6IERhdGFzZXRTdHJ1Y3R1cmUuU2VnbWVudGVkRmlsZXMsXG4gICAgICB0aXRsZTpcbiAgICAgICAgXCJBY3RldXJzLCBtYW5kYXRzIGV0IG9yZ2FuZXMgZGUgbGEgWFZJw6htZSBsw6lnaXNsYXR1cmUgKGZpY2hpZXJzIHPDqXBhcsOpcywgeSBjb21wcmlzIG1hbmRhdHMpXCIsXG4gICAgICB1cmw6IFwiaHR0cDovL2RhdGEuYXNzZW1ibGVlLW5hdGlvbmFsZS5mci9zdGF0aWMvb3BlbkRhdGEvcmVwb3NpdG9yeS8xNi9hbW8vYWN0ZXVyc19tYW5kYXRzX29yZ2FuZXNfZGl2aXNlcy9BTU81MF9hY3RldXJzX21hbmRhdHNfb3JnYW5lc19kaXZpc2VzLmpzb24uemlwXCIsXG4gICAgfSxcbiAgICB7XG4gICAgICAvLyBBTU81MCAoWFYpXG4gICAgICAvL1xuICAgICAgLy8gQXR0ZW50aW9uLCBjZSBmaWNoaWVyIG4nZXN0IHBhcyBtaXMgw6Agam91ciByw6lndWxpw6hyZW1lbnQgIVxuICAgICAgLy9cbiAgICAgIC8vIFBvdXIgbGVzIGFjdGV1cnMgOlxuICAgICAgLy8gKiBjJ2VzdCB1biBzb3VzIGVuc2VtYmxlIG9ic29sw6h0ZSBkJ0FNTzMwXG4gICAgICAvLyAqIGlsIG1hbnF1ZSBsZXMgeHNpVHlwZSBhdXggbWFuZGF0c1xuICAgICAgLy9cbiAgICAgIC8vIFBvdXIgbGVzIG9yZ2FuZXMgOlxuICAgICAgLy8gKiBjJ2VzdCB1biBzb3VzIGVuc2VtYmxlIG9ic29sw6h0ZSBkJ0FNTzMwXG4gICAgICAvLyAqIGlsIG1hbnF1ZSBsZXMgeHNpVHlwZVxuICAgICAgLy9cbiAgICAgIC8vIENlIGZpY2hpZXIgbidhcHBvcnRlIGRvbmMgYWJzb2x1bWVudCByaWVuIHBhciByYXBwb3J0IMOgIGwnQU1PMzAsXG4gICAgICAvLyBkb250IGlsIGVzdCB1biBzb3VzIGVuc2VtYmxlIG9ic29sw6h0ZS5cbiAgICAgIGZpbGVuYW1lOiBcIkFNTzUwX2FjdGV1cnNfbWFuZGF0c19vcmdhbmVzX2RpdmlzZXNfWFYuanNvblwiLFxuICAgICAgaWdub3JlRm9yV2ViOiB0cnVlLFxuICAgICAgbGVnaXNsYXR1cmU6IExlZ2lzbGF0dXJlLlF1aW56ZSxcbiAgICAgIHJlcGFpclppcDogKGRhdGFzZXQ6IERhdGFzZXQsIGRhdGFEaXI6IHN0cmluZykgPT4ge1xuICAgICAgICBjb25zdCB0YXJnZXREaXIgPSBwYXRoLmpvaW4oZGF0YURpciwgZGF0YXNldC5maWxlbmFtZSlcbiAgICAgICAgaWYgKGZzLmV4aXN0c1N5bmModGFyZ2V0RGlyKSkge1xuICAgICAgICAgIGZzLnJlbW92ZVN5bmModGFyZ2V0RGlyKVxuICAgICAgICB9XG4gICAgICAgIGZzLm1rZGlyU3luYyh0YXJnZXREaXIpXG4gICAgICAgIGZzLm1vdmVTeW5jKFxuICAgICAgICAgIHBhdGguam9pbihkYXRhRGlyLCBcIm1hbmRhdFwiKSxcbiAgICAgICAgICBwYXRoLmpvaW4odGFyZ2V0RGlyLCBcIm1hbmRhdFwiKSxcbiAgICAgICAgKVxuICAgICAgICBmcy5tb3ZlU3luYyhcbiAgICAgICAgICBwYXRoLmpvaW4oZGF0YURpciwgXCJhY3RldXJcIiksXG4gICAgICAgICAgcGF0aC5qb2luKHRhcmdldERpciwgXCJhY3RldXJcIiksXG4gICAgICAgIClcbiAgICAgICAgZnMubW92ZVN5bmMoXG4gICAgICAgICAgcGF0aC5qb2luKGRhdGFEaXIsIFwib3JnYW5lXCIpLFxuICAgICAgICAgIHBhdGguam9pbih0YXJnZXREaXIsIFwib3JnYW5lXCIpLFxuICAgICAgICApXG4gICAgICB9LFxuICAgICAgc3RydWN0dXJlOiBEYXRhc2V0U3RydWN0dXJlLlNlZ21lbnRlZEZpbGVzLFxuICAgICAgdGl0bGU6XG4gICAgICAgIFwiQWN0ZXVycywgbWFuZGF0cyBldCBvcmdhbmVzIGRlIGxhIFhWw6htZSBsw6lnaXNsYXR1cmUgKGZpY2hpZXJzIHPDqXBhcsOpcywgeSBjb21wcmlzIG1hbmRhdHMpXCIsXG4gICAgICB1cmw6IFwiaHR0cDovL2RhdGEuYXNzZW1ibGVlLW5hdGlvbmFsZS5mci9zdGF0aWMvb3BlbkRhdGEvcmVwb3NpdG9yeS8xNS9hbW8vYWN0ZXVyc19tYW5kYXRzX29yZ2FuZXNfZGl2aXNlcy9BTU81MF9hY3RldXJzX21hbmRhdHNfb3JnYW5lc19kaXZpc2VzX1hWLmpzb24uemlwXCIsXG4gICAgfSxcbiAgXSxcbiAgYWdlbmRhczogW1xuICAgIHtcbiAgICAgIGZpbGVuYW1lOiBcIkFnZW5kYV9YVkkuanNvblwiLFxuICAgICAgbGVnaXNsYXR1cmU6IExlZ2lzbGF0dXJlLlNlaXplLFxuICAgICAgcmVwYWlyWmlwOiAoZGF0YXNldDogRGF0YXNldCwgZGF0YURpcjogc3RyaW5nKSA9PiB7XG4gICAgICAgIGNvbnN0IHRhcmdldERpciA9IHBhdGguam9pbihkYXRhRGlyLCBkYXRhc2V0LmZpbGVuYW1lKVxuICAgICAgICBpZiAoZnMuZXhpc3RzU3luYyh0YXJnZXREaXIpKSB7XG4gICAgICAgICAgZnMucmVtb3ZlU3luYyh0YXJnZXREaXIpXG4gICAgICAgIH1cbiAgICAgICAgZnMubW92ZVN5bmMocGF0aC5qb2luKGRhdGFEaXIsIFwianNvblwiKSwgdGFyZ2V0RGlyKVxuICAgICAgfSxcbiAgICAgIHN0cnVjdHVyZTogRGF0YXNldFN0cnVjdHVyZS5TZWdtZW50ZWRGaWxlcyxcbiAgICAgIHRpdGxlOiBcIkFnZW5kYSBkZSBsYSBYVknDqG1lIGzDqWdpc2xhdHVyZVwiLFxuICAgICAgdXJsOiBcImh0dHA6Ly9kYXRhLmFzc2VtYmxlZS1uYXRpb25hbGUuZnIvc3RhdGljL29wZW5EYXRhL3JlcG9zaXRvcnkvMTYvdnAvcmV1bmlvbnMvQWdlbmRhLmpzb24uemlwXCIsXG4gICAgfSxcbiAgICB7XG4gICAgICBmaWxlbmFtZTogXCJBZ2VuZGFfWFYuanNvblwiLFxuICAgICAgbGVnaXNsYXR1cmU6IExlZ2lzbGF0dXJlLlF1aW56ZSxcbiAgICAgIHJlcGFpclppcDogKGRhdGFzZXQ6IERhdGFzZXQsIGRhdGFEaXI6IHN0cmluZykgPT4ge1xuICAgICAgICBjb25zdCB0YXJnZXREaXIgPSBwYXRoLmpvaW4oZGF0YURpciwgZGF0YXNldC5maWxlbmFtZSlcbiAgICAgICAgaWYgKGZzLmV4aXN0c1N5bmModGFyZ2V0RGlyKSkge1xuICAgICAgICAgIGZzLnJlbW92ZVN5bmModGFyZ2V0RGlyKVxuICAgICAgICB9XG4gICAgICAgIGZzLm1vdmVTeW5jKHBhdGguam9pbihkYXRhRGlyLCBcImpzb25cIiksIHRhcmdldERpcilcbiAgICAgIH0sXG4gICAgICBzdHJ1Y3R1cmU6IERhdGFzZXRTdHJ1Y3R1cmUuU2VnbWVudGVkRmlsZXMsXG4gICAgICB0aXRsZTogXCJBZ2VuZGEgZGUgbGEgWFbDqG1lIGzDqWdpc2xhdHVyZVwiLFxuICAgICAgdXJsOiBcImh0dHA6Ly9kYXRhLmFzc2VtYmxlZS1uYXRpb25hbGUuZnIvc3RhdGljL29wZW5EYXRhL3JlcG9zaXRvcnkvMTUvdnAvcmV1bmlvbnMvQWdlbmRhX1hWLmpzb24uemlwXCIsXG4gICAgfSxcbiAgICB7XG4gICAgICBmaWxlbmFtZTogXCJBZ2VuZGFfWElWLmpzb25cIixcbiAgICAgIGxlZ2lzbGF0dXJlOiBMZWdpc2xhdHVyZS5RdWF0b3J6ZSxcbiAgICAgIHN0cnVjdHVyZTogRGF0YXNldFN0cnVjdHVyZS5TaW5nbGVGaWxlLFxuICAgICAgdGl0bGU6IFwiQWdlbmRhIGRlIGxhIFhJVsOobWUgbMOpZ2lzbGF0dXJlXCIsXG4gICAgICB1cmw6IFwiaHR0cDovL2RhdGEuYXNzZW1ibGVlLW5hdGlvbmFsZS5mci9zdGF0aWMvb3BlbkRhdGEvcmVwb3NpdG9yeS8xNC92cC9yZXVuaW9ucy9BZ2VuZGFfWElWLmpzb24uemlwXCIsXG4gICAgfSxcbiAgXSxcbiAgYW1lbmRlbWVudHM6IFtcbiAgICB7XG4gICAgICBmaWxlbmFtZTogXCJBbWVuZGVtZW50c19YVkkuanNvblwiLFxuICAgICAgbGVnaXNsYXR1cmU6IExlZ2lzbGF0dXJlLlNlaXplLFxuICAgICAgcmVwYWlyWmlwOiAoZGF0YXNldDogRGF0YXNldCwgZGF0YURpcjogc3RyaW5nKSA9PiB7XG4gICAgICAgIGNvbnN0IHRhcmdldERpciA9IHBhdGguam9pbihkYXRhRGlyLCBkYXRhc2V0LmZpbGVuYW1lKVxuICAgICAgICBpZiAoZnMuZXhpc3RzU3luYyh0YXJnZXREaXIpKSB7XG4gICAgICAgICAgZnMucmVtb3ZlU3luYyh0YXJnZXREaXIpXG4gICAgICAgIH1cbiAgICAgICAgZnMubW92ZVN5bmMocGF0aC5qb2luKGRhdGFEaXIsIFwianNvblwiKSwgdGFyZ2V0RGlyKVxuICAgICAgfSxcbiAgICAgIHN0cnVjdHVyZTogRGF0YXNldFN0cnVjdHVyZS5TZWdtZW50ZWRGaWxlcyxcbiAgICAgIHRpdGxlOiBcIkFtZW5kZW1lbnRzIGRlIGxhIFhWScOobWUgbMOpZ2lzbGF0dXJlXCIsXG4gICAgICB1cmw6IFwiaHR0cDovL2RhdGEuYXNzZW1ibGVlLW5hdGlvbmFsZS5mci9zdGF0aWMvb3BlbkRhdGEvcmVwb3NpdG9yeS8xNi9sb2kvYW1lbmRlbWVudHNfZGl2X2xlZ2lzL0FtZW5kZW1lbnRzLmpzb24uemlwXCIsXG4gICAgfSxcbiAgICB7XG4gICAgICBmaWxlbmFtZTogXCJBbWVuZGVtZW50c19YVi5qc29uXCIsXG4gICAgICBsZWdpc2xhdHVyZTogTGVnaXNsYXR1cmUuUXVpbnplLFxuICAgICAgcmVwYWlyWmlwOiAoZGF0YXNldDogRGF0YXNldCwgZGF0YURpcjogc3RyaW5nKSA9PiB7XG4gICAgICAgIGNvbnN0IHRhcmdldERpciA9IHBhdGguam9pbihkYXRhRGlyLCBkYXRhc2V0LmZpbGVuYW1lKVxuICAgICAgICBpZiAoZnMuZXhpc3RzU3luYyh0YXJnZXREaXIpKSB7XG4gICAgICAgICAgZnMucmVtb3ZlU3luYyh0YXJnZXREaXIpXG4gICAgICAgIH1cbiAgICAgICAgZnMubW92ZVN5bmMocGF0aC5qb2luKGRhdGFEaXIsIFwianNvblwiKSwgdGFyZ2V0RGlyKVxuICAgICAgfSxcbiAgICAgIHN0cnVjdHVyZTogRGF0YXNldFN0cnVjdHVyZS5TZWdtZW50ZWRGaWxlcyxcbiAgICAgIHRpdGxlOiBcIkFtZW5kZW1lbnRzIGRlIGxhIFhWw6htZSBsw6lnaXNsYXR1cmVcIixcbiAgICAgIHVybDogXCJodHRwOi8vZGF0YS5hc3NlbWJsZWUtbmF0aW9uYWxlLmZyL3N0YXRpYy9vcGVuRGF0YS9yZXBvc2l0b3J5LzE1L2xvaS9hbWVuZGVtZW50c19sZWdpcy9BbWVuZGVtZW50c19YVi5qc29uLnppcFwiLFxuICAgIH0sXG4gICAgLy8ge1xuICAgIC8vICAgZmlsZW5hbWU6IFwiQW1lbmRlbWVudHNfWElWLmpzb25cIixcbiAgICAvLyAgIGlnbm9yZUZvcldlYjogdHJ1ZSxcbiAgICAvLyAgIGxlZ2lzbGF0dXJlOiBMZWdpc2xhdHVyZS5RdWF0b3J6ZSxcbiAgICAvLyAgIHN0cnVjdHVyZTogRGF0YXNldFN0cnVjdHVyZS5TaW5nbGVGaWxlLFxuICAgIC8vICAgdGl0bGU6IFwiQW1lbmRlbWVudHMgZGUgbGEgWElWw6htZSBsw6lnaXNsYXR1cmVcIixcbiAgICAvLyAgIHVybDpcbiAgICAvLyAgICAgXCJodHRwOi8vZGF0YS5hc3NlbWJsZWUtbmF0aW9uYWxlLmZyL3N0YXRpYy9vcGVuRGF0YS9yZXBvc2l0b3J5LzE0L2xvaS9hbWVuZGVtZW50c19sZWdpc19YSVYvQW1lbmRlbWVudHNfWElWLmpzb24uemlwXCIsXG4gICAgLy8gfSxcbiAgXSxcbiAgZG9zc2llcnNMZWdpc2xhdGlmczogW1xuICAgIHtcbiAgICAgIGZpbGVuYW1lOiBcIkRvc3NpZXJzX0xlZ2lzbGF0aWZzX1hWSS5qc29uXCIsXG4gICAgICBsZWdpc2xhdHVyZTogTGVnaXNsYXR1cmUuU2VpemUsXG4gICAgICByZXBhaXJaaXA6IChkYXRhc2V0OiBEYXRhc2V0LCBkYXRhRGlyOiBzdHJpbmcpID0+IHtcbiAgICAgICAgY29uc3QgdGFyZ2V0RGlyID0gcGF0aC5qb2luKGRhdGFEaXIsIGRhdGFzZXQuZmlsZW5hbWUpXG4gICAgICAgIGlmIChmcy5leGlzdHNTeW5jKHRhcmdldERpcikpIHtcbiAgICAgICAgICBmcy5yZW1vdmVTeW5jKHRhcmdldERpcilcbiAgICAgICAgfVxuICAgICAgICBmcy5tb3ZlU3luYyhwYXRoLmpvaW4oZGF0YURpciwgXCJqc29uXCIpLCB0YXJnZXREaXIpXG4gICAgICB9LFxuICAgICAgc3RydWN0dXJlOiBEYXRhc2V0U3RydWN0dXJlLlNlZ21lbnRlZEZpbGVzLFxuICAgICAgdGl0bGU6IFwiRG9zc2llcnMgbMOpZ2lzbGF0aWZzIGRlIGxhIFhWScOobWUgbMOpZ2lzbGF0dXJlXCIsXG4gICAgICB1cmw6IFwiaHR0cDovL2RhdGEuYXNzZW1ibGVlLW5hdGlvbmFsZS5mci9zdGF0aWMvb3BlbkRhdGEvcmVwb3NpdG9yeS8xNi9sb2kvZG9zc2llcnNfbGVnaXNsYXRpZnMvRG9zc2llcnNfTGVnaXNsYXRpZnMuanNvbi56aXBcIixcbiAgICB9LFxuICAgIHtcbiAgICAgIGZpbGVuYW1lOiBcIkRvc3NpZXJzX0xlZ2lzbGF0aWZzX1hWLmpzb25cIixcbiAgICAgIGxlZ2lzbGF0dXJlOiBMZWdpc2xhdHVyZS5RdWluemUsXG4gICAgICByZXBhaXJaaXA6IChkYXRhc2V0OiBEYXRhc2V0LCBkYXRhRGlyOiBzdHJpbmcpID0+IHtcbiAgICAgICAgY29uc3QgdGFyZ2V0RGlyID0gcGF0aC5qb2luKGRhdGFEaXIsIGRhdGFzZXQuZmlsZW5hbWUpXG4gICAgICAgIGlmIChmcy5leGlzdHNTeW5jKHRhcmdldERpcikpIHtcbiAgICAgICAgICBmcy5yZW1vdmVTeW5jKHRhcmdldERpcilcbiAgICAgICAgfVxuICAgICAgICBmcy5tb3ZlU3luYyhwYXRoLmpvaW4oZGF0YURpciwgXCJqc29uXCIpLCB0YXJnZXREaXIpXG4gICAgICB9LFxuICAgICAgc3RydWN0dXJlOiBEYXRhc2V0U3RydWN0dXJlLlNlZ21lbnRlZEZpbGVzLFxuICAgICAgdGl0bGU6IFwiRG9zc2llcnMgbMOpZ2lzbGF0aWZzIGRlIGxhIFhWw6htZSBsw6lnaXNsYXR1cmVcIixcbiAgICAgIHVybDogXCJodHRwOi8vZGF0YS5hc3NlbWJsZWUtbmF0aW9uYWxlLmZyL3N0YXRpYy9vcGVuRGF0YS9yZXBvc2l0b3J5LzE1L2xvaS9kb3NzaWVyc19sZWdpc2xhdGlmcy9Eb3NzaWVyc19MZWdpc2xhdGlmc19YVi5qc29uLnppcFwiLFxuICAgIH0sXG4gICAge1xuICAgICAgZmlsZW5hbWU6IFwiRG9zc2llcnNfTGVnaXNsYXRpZnNfWElWLmpzb25cIixcbiAgICAgIGlnbm9yZUZvcldlYjogdHJ1ZSxcbiAgICAgIGxlZ2lzbGF0dXJlOiBMZWdpc2xhdHVyZS5RdWF0b3J6ZSxcbiAgICAgIHN0cnVjdHVyZTogRGF0YXNldFN0cnVjdHVyZS5TaW5nbGVGaWxlLFxuICAgICAgdGl0bGU6IFwiRG9zc2llcnMgbMOpZ2lzbGF0aWZzIGRlIGxhIFhJVsOobWUgbMOpZ2lzbGF0dXJlXCIsXG4gICAgICB1cmw6IFwiaHR0cDovL2RhdGEuYXNzZW1ibGVlLW5hdGlvbmFsZS5mci9zdGF0aWMvb3BlbkRhdGEvcmVwb3NpdG9yeS8xNC9sb2kvZG9zc2llcnNfbGVnaXNsYXRpZnMvRG9zc2llcnNfTGVnaXNsYXRpZnNfWElWLmpzb24uemlwXCIsXG4gICAgfSxcbiAgXSxcbiAgc2NydXRpbnM6IFtcbiAgICAvLyB7XG4gICAgLy8gICBmaWxlbmFtZTogXCJTY3J1dGluc19YVkkuanNvblwiLFxuICAgIC8vICAgbGVnaXNsYXR1cmU6IExlZ2lzbGF0dXJlLlNlaXplLFxuICAgIC8vICAgcmVwYWlyWmlwOiAoZGF0YXNldDogRGF0YXNldCwgZGF0YURpcjogc3RyaW5nKSA9PiB7XG4gICAgLy8gICAgIGNvbnN0IHRhcmdldERpciA9IHBhdGguam9pbihkYXRhRGlyLCBkYXRhc2V0LmZpbGVuYW1lKVxuICAgIC8vICAgICBpZiAoZnMuZXhpc3RzU3luYyh0YXJnZXREaXIpKSB7XG4gICAgLy8gICAgICAgZnMucmVtb3ZlU3luYyh0YXJnZXREaXIpXG4gICAgLy8gICAgIH1cbiAgICAvLyAgICAgZnMubW92ZVN5bmMocGF0aC5qb2luKGRhdGFEaXIsIFwianNvblwiKSwgdGFyZ2V0RGlyKVxuICAgIC8vICAgfSxcbiAgICAvLyAgIHN0cnVjdHVyZTogRGF0YXNldFN0cnVjdHVyZS5TZWdtZW50ZWRGaWxlcyxcbiAgICAvLyAgIHRpdGxlOiBcIlNjcnV0aW5zIGRlIGxhIFhWScOobWUgbMOpZ2lzbGF0dXJlXCIsXG4gICAgLy8gICB1cmw6IFwiaHR0cDovL2RhdGEuYXNzZW1ibGVlLW5hdGlvbmFsZS5mci9zdGF0aWMvb3BlbkRhdGEvcmVwb3NpdG9yeS8xNi9sb2kvc2NydXRpbnMvU2NydXRpbnMuanNvbi56aXBcIixcbiAgICAvLyB9LFxuICAgIHtcbiAgICAgIGZpbGVuYW1lOiBcIlNjcnV0aW5zX1hWLmpzb25cIixcbiAgICAgIGxlZ2lzbGF0dXJlOiBMZWdpc2xhdHVyZS5RdWluemUsXG4gICAgICByZXBhaXJaaXA6IChkYXRhc2V0OiBEYXRhc2V0LCBkYXRhRGlyOiBzdHJpbmcpID0+IHtcbiAgICAgICAgY29uc3QgdGFyZ2V0RGlyID0gcGF0aC5qb2luKGRhdGFEaXIsIGRhdGFzZXQuZmlsZW5hbWUpXG4gICAgICAgIGlmIChmcy5leGlzdHNTeW5jKHRhcmdldERpcikpIHtcbiAgICAgICAgICBmcy5yZW1vdmVTeW5jKHRhcmdldERpcilcbiAgICAgICAgfVxuICAgICAgICBmcy5tb3ZlU3luYyhwYXRoLmpvaW4oZGF0YURpciwgXCJqc29uXCIpLCB0YXJnZXREaXIpXG4gICAgICB9LFxuICAgICAgc3RydWN0dXJlOiBEYXRhc2V0U3RydWN0dXJlLlNlZ21lbnRlZEZpbGVzLFxuICAgICAgdGl0bGU6IFwiU2NydXRpbnMgZGUgbGEgWFbDqG1lIGzDqWdpc2xhdHVyZVwiLFxuICAgICAgdXJsOiBcImh0dHA6Ly9kYXRhLmFzc2VtYmxlZS1uYXRpb25hbGUuZnIvc3RhdGljL29wZW5EYXRhL3JlcG9zaXRvcnkvMTUvbG9pL3NjcnV0aW5zL1NjcnV0aW5zX1hWLmpzb24uemlwXCIsXG4gICAgfSxcbiAgICB7XG4gICAgICBmaWxlbmFtZTogXCJTY3J1dGluc19YSVYuanNvblwiLFxuICAgICAgaWdub3JlRm9yV2ViOiB0cnVlLFxuICAgICAgbGVnaXNsYXR1cmU6IExlZ2lzbGF0dXJlLlF1YXRvcnplLFxuICAgICAgc3RydWN0dXJlOiBEYXRhc2V0U3RydWN0dXJlLlNpbmdsZUZpbGUsXG4gICAgICB0aXRsZTogXCJTY3J1dGlucyBkZSBsYSBYSVbDqG1lIGzDqWdpc2xhdHVyZVwiLFxuICAgICAgdXJsOiBcImh0dHA6Ly9kYXRhLmFzc2VtYmxlZS1uYXRpb25hbGUuZnIvc3RhdGljL29wZW5EYXRhL3JlcG9zaXRvcnkvMTQvbG9pL3NjcnV0aW5zL1NjcnV0aW5zX1hJVi5qc29uLnppcFwiLFxuICAgIH0sXG4gIF0sXG59XG5cbmNvbnN0IGRpcmVjdG9yeTJzY2hlbWE6IGFueSA9IHtcbiAgXCIuKkFnZW5kYV8uKlwiOiBcImFnZW5kYVwiLFxuICBcIi4qU2NydXRpbnNfLipcIjogXCJzY3J1dGluXCIsXG4gIFwiLipBbWVuZGVtZW50c18uKlwiOiBcImFtZW5kZW1lbnRcIixcbiAgXCIuKkRvc3NpZXJzX0xlZ2lzbGF0aWZzXy4qL2RvY3VtZW50c1wiOiBcImRvY3VtZW50XCIsXG4gIFwiLipEb3NzaWVyc19MZWdpc2xhdGlmc18uKi9kb3NzaWVyc1wiOiBcImRvc3NpZXJcIixcbiAgXCIuKmFjdGV1cnNfbWFuZGF0c19vcmdhbmVzL29yZ2FuZXNcIjogXCJvcmdhbmVcIixcbiAgXCIuKmFjdGV1cnNfbWFuZGF0c19vcmdhbmVzL2FjdGV1cnNcIjogXCJhY3RldXJcIixcbiAgXCIuKkFNTzMwX3RvdXNfYWN0ZXVyc190b3VzX21hbmRhdHNfdG91c19vcmdhbmVzX2hpc3RvcmlxdWUuKi9vcmdhbmVzXCI6XG4gICAgXCJvcmdhbmVcIixcbiAgXCIuKkFNTzMwX3RvdXNfYWN0ZXVyc190b3VzX21hbmRhdHNfdG91c19vcmdhbmVzX2hpc3RvcmlxdWUuKi9hY3RldXJzXCI6XG4gICAgXCJhY3RldXJcIixcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldERhdGFzZXRzKCk6IGFueSB7XG4gIHJldHVybiBbXG4gICAgXCJBZ2VuZGFfWElWXCIsXG4gICAgXCJBZ2VuZGFfWFZcIixcbiAgICBcIkFnZW5kYV9YVklcIixcbiAgICBcIlNjcnV0aW5zX1hJVlwiLFxuICAgIFwiU2NydXRpbnNfWFZcIixcbiAgICAvLyBcIlNjcnV0aW5zX1hWSVwiLFxuICAgIFwiQW1lbmRlbWVudHNfWElWXCIsXG4gICAgXCJBbWVuZGVtZW50c19YVlwiLFxuICAgIFwiQW1lbmRlbWVudHNfWFZJXCIsXG4gICAgXCJEb3NzaWVyc19MZWdpc2xhdGlmc19YSVZcIixcbiAgICBcIkRvc3NpZXJzX0xlZ2lzbGF0aWZzX1hWXCIsXG4gICAgXCJEb3NzaWVyc19MZWdpc2xhdGlmc19YVklcIixcbiAgICBcIkFNTzMwX3RvdXNfYWN0ZXVyc190b3VzX21hbmRhdHNfdG91c19vcmdhbmVzX2hpc3RvcmlxdWVcIixcbiAgICBcImFjdGV1cnNfbWFuZGF0c19vcmdhbmVzXCIsXG4gIF1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkRGF0YXNldChkaXI6IGFueSk6IGFueSB7XG4gIGZvciAoY29uc3QgZGF0YXNldCBvZiBnZXREYXRhc2V0cygpKSB7XG4gICAgaWYgKGRpci5pbmNsdWRlcyhkYXRhc2V0KSkgcmV0dXJuIHRydWVcbiAgfVxuICByZXR1cm4gZmFsc2Vcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFNjaGVtYXMoKTogYW55IHtcbiAgcmV0dXJuIE9iamVjdC52YWx1ZXMoZGlyZWN0b3J5MnNjaGVtYSlcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRhdGFzZXREaXJlY3RvcnlTY2hlbWEoZGF0YXNldDogc3RyaW5nKTogYW55IHtcbiAgbGV0IGRpcmVjdG9yaWVzOiBhbnlcbiAgaWYgKGRhdGFzZXQuaW5jbHVkZXMoXCJEb3NzaWVyc19MZWdpc2xhdGlmc19cIikpIHtcbiAgICBkaXJlY3RvcmllcyA9IFtgJHtkYXRhc2V0fS9kb2N1bWVudHNgLCBgJHtkYXRhc2V0fS9kb3NzaWVyc2BdXG4gIH0gZWxzZSBpZiAoXG4gICAgZGF0YXNldC5pbmNsdWRlcyhcImFjdGV1cnNfbWFuZGF0c19vcmdhbmVzXCIpIHx8XG4gICAgZGF0YXNldC5pbmNsdWRlcyhcIkFNTzMwX3RvdXNfYWN0ZXVyc190b3VzX21hbmRhdHNfdG91c19vcmdhbmVzX2hpc3RvcmlxdWVcIilcbiAgKSB7XG4gICAgZGlyZWN0b3JpZXMgPSBbYCR7ZGF0YXNldH0vb3JnYW5lc2AsIGAke2RhdGFzZXR9L2FjdGV1cnNgXVxuICB9IGVsc2Uge1xuICAgIGRpcmVjdG9yaWVzID0gW2RhdGFzZXRdXG4gIH1cblxuICBsZXQgcmVzdWx0cyA9IFtdXG4gIGZvciAoY29uc3QgZGlyZWN0b3J5IG9mIGRpcmVjdG9yaWVzKSB7XG4gICAgZm9yIChjb25zdCByZSBvZiBPYmplY3Qua2V5cyhkaXJlY3Rvcnkyc2NoZW1hKSkge1xuICAgICAgaWYgKG5ldyBSZWdFeHAocmUpLmV4ZWMoZGlyZWN0b3J5KSlcbiAgICAgICAgcmVzdWx0cy5wdXNoKFtgJHtkaXJlY3Rvcnl9LyoqLyouanNvbmAsIGRpcmVjdG9yeTJzY2hlbWFbcmVdXSlcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdHNcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZpbGVEYXRhc2V0VXJsKGZpbGVuYW1lOiBzdHJpbmcpOiBbc3RyaW5nLCBzdHJpbmddIHwgbnVsbCB7XG4gIGNvbnN0IHJlID0gXCJeLiovKC4qKV9uZXR0b3llLyguKilcIlxuICBjb25zdCBtYXRjaCA9IG5ldyBSZWdFeHAocmUpLmV4ZWMoZmlsZW5hbWUpXG4gIGlmIChtYXRjaCA9PSBudWxsKSByZXR1cm4gbnVsbFxuICBsZXQgW2RhdGFzZXQsIGZpbGVdID0gW21hdGNoWzFdLCBtYXRjaFsyXV1cbiAgaWYgKGRhdGFzZXQgPT0gXCJBTU8zMF90b3VzX2FjdGV1cnNfdG91c19tYW5kYXRzX3RvdXNfb3JnYW5lc19oaXN0b3JpcXVlXCIpXG4gICAgZGF0YXNldCA9IFwiYWN0ZXVyc19tYW5kYXRzX29yZ2FuZXNcIlxuICByZXR1cm4gW2RhdGFzZXQsIGZpbGVdXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkaWZmVXBzdHJlYW0oZmlsZW5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IGRhdGFzZXRVcmwgPSBmaWxlRGF0YXNldFVybChmaWxlbmFtZSlcbiAgaWYgKGRhdGFzZXRVcmwgPT0gbnVsbCkgcmV0dXJuIGZpbGVuYW1lXG4gIGNvbnN0IFtkYXRhc2V0LCBmaWxlXSA9IGRhdGFzZXRVcmxcbiAgY29uc3Qgc3VtID0gY3JlYXRlSGFzaChcInNoYTFcIikudXBkYXRlKGZpbGUpLmRpZ2VzdChcImhleFwiKS50b1N0cmluZygpXG4gIHJldHVybiBgWyR7ZmlsZX1dKGh0dHBzOi8vZ2l0LmVuLXJvb3Qub3JnL3RyaWNvdGV1c2VzL2RhdGEudHJpY290ZXVzZXMuZnIvJHtkYXRhc2V0fS8tL2NvbXBhcmUvdXBzdHJlYW0uLi5tYXN0ZXIjJHtzdW19KWBcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1hc3RlclVybChmaWxlbmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3QgZGF0YXNldFVybCA9IGZpbGVEYXRhc2V0VXJsKGZpbGVuYW1lKVxuICBpZiAoZGF0YXNldFVybCA9PSBudWxsKSByZXR1cm4gZmlsZW5hbWVcbiAgY29uc3QgW2RhdGFzZXQsIGZpbGVdID0gZGF0YXNldFVybFxuICByZXR1cm4gYFske2ZpbGV9XShodHRwczovL2dpdC5lbi1yb290Lm9yZy90cmljb3RldXNlcy9kYXRhLnRyaWNv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
596
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjcmVhdGVIYXNoIiwiZnMiLCJwYXRoIiwiTGVnaXNsYXR1cmUiLCJEYXRhc2V0U3RydWN0dXJlIiwiRW5hYmxlZERhdGFzZXRzIiwiZGF0YXNldHMiLCJhY3RldXJzRXRPcmdhbmVzIiwiZmlsZW5hbWUiLCJpZ25vcmVGb3JXZWIiLCJsZWdpc2xhdHVyZSIsIlNlaXplIiwicmVwYWlyWmlwIiwiZGF0YXNldCIsImRhdGFEaXIiLCJ0YXJnZXREaXIiLCJqb2luIiwiZXhpc3RzU3luYyIsInJlbW92ZVN5bmMiLCJtb3ZlU3luYyIsInN0cnVjdHVyZSIsIlNlZ21lbnRlZEZpbGVzIiwidGl0bGUiLCJ1cmwiLCJRdWluemUiLCJRdWF0b3J6ZSIsIlNpbmdsZUZpbGUiLCJBbGwiLCJta2RpclN5bmMiLCJhZ2VuZGFzIiwiYW1lbmRlbWVudHMiLCJkb3NzaWVyc0xlZ2lzbGF0aWZzIiwic2NydXRpbnMiLCJkaXJlY3Rvcnkyc2NoZW1hIiwiZ2V0RGF0YXNldHMiLCJ2YWxpZERhdGFzZXQiLCJkaXIiLCJpbmNsdWRlcyIsImdldFNjaGVtYXMiLCJPYmplY3QiLCJ2YWx1ZXMiLCJkYXRhc2V0RGlyZWN0b3J5U2NoZW1hIiwiZGlyZWN0b3JpZXMiLCJyZXN1bHRzIiwiZGlyZWN0b3J5IiwicmUiLCJrZXlzIiwiUmVnRXhwIiwiZXhlYyIsInB1c2giLCJmaWxlRGF0YXNldFVybCIsIm1hdGNoIiwiZmlsZSIsImRpZmZVcHN0cmVhbSIsImRhdGFzZXRVcmwiLCJzdW0iLCJ1cGRhdGUiLCJkaWdlc3QiLCJ0b1N0cmluZyIsIm1hc3RlclVybCJdLCJzb3VyY2VzIjpbIi4uL3NyYy9kYXRhc2V0cy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjcmVhdGVIYXNoIH0gZnJvbSBcImNyeXB0b1wiXG5pbXBvcnQgZnMgZnJvbSBcImZzLWV4dHJhXCJcbmltcG9ydCBwYXRoIGZyb20gXCJwYXRoXCJcblxuaW1wb3J0IHsgTGVnaXNsYXR1cmUgfSBmcm9tIFwiLi90eXBlcy9sZWdpc2xhdHVyZXNcIlxuXG5pbnRlcmZhY2UgRGF0YXNldCB7XG4gIGZpbGVuYW1lOiBzdHJpbmdcbiAgaWdub3JlRm9yV2ViPzogYm9vbGVhblxuICBsZWdpc2xhdHVyZTogTGVnaXNsYXR1cmVcbiAgcmVwYWlyWmlwPzogKGRhdGFzZXQ6IERhdGFzZXQsIGRhdGFEaXI6IHN0cmluZykgPT4gdm9pZFxuICBzdHJ1Y3R1cmU6IERhdGFzZXRTdHJ1Y3R1cmVcbiAgdGl0bGU6IHN0cmluZ1xuICB1cmw6IHN0cmluZ1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERhdGFzZXRzIHtcbiAgYWN0ZXVyc0V0T3JnYW5lczogRGF0YXNldFtdXG4gIGFnZW5kYXM6IERhdGFzZXRbXVxuICBhbWVuZGVtZW50czogRGF0YXNldFtdXG4gIGRvc3NpZXJzTGVnaXNsYXRpZnM6IERhdGFzZXRbXVxuICBzY3J1dGluczogRGF0YXNldFtdXG59XG5cbmV4cG9ydCBlbnVtIERhdGFzZXRTdHJ1Y3R1cmUge1xuICBTaW5nbGVGaWxlLFxuICBTZWdtZW50ZWRGaWxlcyxcbn1cblxuZXhwb3J0IGVudW0gRW5hYmxlZERhdGFzZXRzIHtcbiAgTm9uZSA9IDAsXG4gIEFjdGV1cnNFdE9yZ2FuZXMgPSAxIDw8IDAsXG4gIEFnZW5kYXMgPSAxIDw8IDEsXG4gIEFtZW5kZW1lbnRzID0gMSA8PCAyLFxuICBEb3NzaWVyc0xlZ2lzbGF0aWZzID0gMSA8PCAzLFxuICBQaG90b3MgPSAxIDw8IDQsXG4gIFNjcnV0aW5zID0gMSA8PCA1LFxuICBBbGwgPSBBY3RldXJzRXRPcmdhbmVzIHxcbiAgICBBZ2VuZGFzIHxcbiAgICBBbWVuZGVtZW50cyB8XG4gICAgRG9zc2llcnNMZWdpc2xhdGlmcyB8XG4gICAgUGhvdG9zIHxcbiAgICBTY3J1dGlucyxcbn1cblxuZXhwb3J0IGNvbnN0IGRhdGFzZXRzOiBEYXRhc2V0cyA9IHtcbiAgYWN0ZXVyc0V0T3JnYW5lczogW1xuICAgIHtcbiAgICAgIC8vIEFNTzEwIChYVkkpXG4gICAgICAvL1xuICAgICAgLy8gQ29udGllbnQgbGVzIGTDqXB1dMOpcyBhY3RpZnNcbiAgICAgIC8vICogYXZlYyB0b3VzIGxlcyBtYW5kYXRzIGVuIGNvdXJzXG4gICAgICAvLyAqIHkgY29tcHJpcyBhdmVjIGxldXIgcGFydGkgcG9saXRpcXVlICh0eXBlT3JnYW5lOiBcIlBBUlBPTFwiKVxuICAgICAgLy8gKiBtYWlzIHNhbnMgbGVzIG1hbmRhdHMgYWNoZXbDqXMgKHkgY29tcHJpcyBkYW5zIGNldHRlIGzDqWdpc2xhdHVyZSlcbiAgICAgIC8vXG4gICAgICAvLyBPcmdhbmVzIDpcbiAgICAgIC8vICogQ29udGllbnQgc2V1bGVtZW50IGxlcyBvcmdhbmVzIGNvcnJlc3BvbmRhbnRzIGF1eCBtYW5kYXRzIGVuIGNvdXJzXG4gICAgICAvLyAqIGF2ZWMgbGUgeHNpVHlwZSBkZSBsJ29yZ2FuZVxuICAgICAgLy8gKiBhdmVjIGRlcyBjb21taXNzaW9ucyBzw6luYXRvcmlhbGVzIChwZXJtYW5lbnRlcyBldCBzcMOpY2lhbGVzKSBlbiBjb3Vyc1xuICAgICAgLy8gKiBhdmVjIGRlcyBkw6lsw6lnYXRpb25zIHPDqW5hdG9yaWFsZXMgZW4gY291cnNcbiAgICAgIC8vICogYXZlYyBkZXMgZ3JvdXBlcyBzw6luYXRvcmlhdXggZW4gY291cnNcbiAgICAgIC8vICogYXZlYyBkZXMgbWluaXN0w6hyZXMgZW4gY291cnNcbiAgICAgIC8vICogYXZlYyBsZXMgUHLDqXNpZGVuY2VzIGRlIGxhIFLDqXB1YmxpcXVlICh5IGNvbXByaXMgU2Fya296eSlcbiAgICAgIC8vICogYXZlYyBsZSBDb25zZWlsIGNvbnN0aXR1dGlvbm5lbFxuICAgICAgLy9cbiAgICAgIC8vIENlIGZpY2hpZXIgZXN0IHVuIHNvdXMtZW5zZW1ibGUgw6AgdG91cyBsZXMgbml2ZWF1eCBkdSBmaWNoaWVyIEFNTzIwXG4gICAgICAvLyAocXVpIGVzdCBsdWkgbcOqbWUgdW4gc291cy1lbnNlbWJsZSBkZSBsJ0FNTzMwKS5cbiAgICAgIC8vIElsIG4nYXBwb3J0ZSBkb25jIGFic29sdW1lbnQgcmllbiBwYXIgcmFwcG9ydCDDoCBBTU8yMCBvdSBsJ0FNTzMwLlxuICAgICAgZmlsZW5hbWU6IFwiQU1PMTBfZGVwdXRlc19hY3RpZnNfbWFuZGF0c19hY3RpZnNfb3JnYW5lc19YVkkuanNvblwiLFxuICAgICAgaWdub3JlRm9yV2ViOiB0cnVlLFxuICAgICAgbGVnaXNsYXR1cmU6IExlZ2lzbGF0dXJlLlNlaXplLFxuICAgICAgcmVwYWlyWmlwOiAoZGF0YXNldDogRGF0YXNldCwgZGF0YURpcjogc3RyaW5nKSA9PiB7XG4gICAgICAgIGNvbnN0IHRhcmdldERpciA9IHBhdGguam9pbihkYXRhRGlyLCBkYXRhc2V0LmZpbGVuYW1lKVxuICAgICAgICBpZiAoZnMuZXhpc3RzU3luYyh0YXJnZXREaXIpKSB7XG4gICAgICAgICAgZnMucmVtb3ZlU3luYyh0YXJnZXREaXIpXG4gICAgICAgIH1cbiAgICAgICAgZnMubW92ZVN5bmMocGF0aC5qb2luKGRhdGFEaXIsIFwianNvblwiKSwgdGFyZ2V0RGlyKVxuICAgICAgfSxcbiAgICAgIHN0cnVjdHVyZTogRGF0YXNldFN0cnVjdHVyZS5TZWdtZW50ZWRGaWxlcyxcbiAgICAgIHRpdGxlOiBcIkTDqXB1dMOpcyBhY3RpZnMgZXQgb3JnYW5lcyBkZSBsYSBYVknDqG1lIGzDqWdpc2xhdHVyZVwiLFxuICAgICAgdXJsOiBcImh0dHA6Ly9kYXRhLmFzc2VtYmxlZS1uYXRpb25hbGUuZnIvc3RhdGljL29wZW5EYXRhL3JlcG9zaXRvcnkvMTYvYW1vL2RlcHV0ZXNfYWN0aWZzX21hbmRhdHNfYWN0aWZzX29yZ2FuZXMvQU1PMTBfZGVwdXRlc19hY3RpZnNfbWFuZGF0c19hY3RpZnNfb3JnYW5lcy5qc29uLnppcFwiLFxuICAgIH0sXG4gICAge1xuICAgICAgLy8gQU1PMTAgKFhWKVxuICAgICAgLy9cbiAgICAgIC8vIENvbnRpZW50IGxlcyBkw6lwdXTDqXMgYWN0aWZzXG4gICAgICAvLyAqIGF2ZWMgdG91cyBsZXMgbWFuZGF0cyBlbiBjb3Vyc1xuICAgICAgLy8gKiB5IGNvbXByaXMgYXZlYyBsZXVyIHBhcnRpIHBvbGl0aXF1ZSAodHlwZU9yZ2FuZTogXCJQQVJQT0xcIilcbiAgICAgIC8vICogbWFpcyBzYW5zIGxlcyBtYW5kYXRzIGFjaGV2w6lzICh5IGNvbXByaXMgZGFucyBjZXR0ZSBsw6lnaXNsYXR1cmUpXG4gICAgICAvL1xuICAgICAgLy8gT3JnYW5lcyA6XG4gICAgICAvLyAqIENvbnRpZW50IHNldWxlbWVudCBsZXMgb3JnYW5lcyBjb3JyZXNwb25kYW50cyBhdXggbWFuZGF0cyBlbiBjb3Vyc1xuICAgICAgLy8gKiBhdmVjIGxlIHhzaVR5cGUgZGUgbCdvcmdhbmVcbiAgICAgIC8vICogYXZlYyBkZXMgY29tbWlzc2lvbnMgc8OpbmF0b3JpYWxlcyAocGVybWFuZW50ZXMgZXQgc3DDqWNpYWxlcykgZW4gY291cnNcbiAgICAgIC8vICogYXZlYyBkZXMgZMOpbMOpZ2F0aW9ucyBzw6luYXRvcmlhbGVzIGVuIGNvdXJzXG4gICAgICAvLyAqIGF2ZWMgZGVzIGdyb3VwZXMgc8OpbmF0b3JpYXV4IGVuIGNvdXJzXG4gICAgICAvLyAqIGF2ZWMgZGVzIG1pbmlzdMOocmVzIGVuIGNvdXJzXG4gICAgICAvLyAqIGF2ZWMgbGVzIFByw6lzaWRlbmNlcyBkZSBsYSBSw6lwdWJsaXF1ZSAoeSBjb21wcmlzIFNhcmtvenkpXG4gICAgICAvLyAqIGF2ZWMgbGUgQ29uc2VpbCBjb25zdGl0dXRpb25uZWxcbiAgICAgIC8vXG4gICAgICAvLyBDZSBmaWNoaWVyIGVzdCB1biBzb3VzLWVuc2VtYmxlIMOgIHRvdXMgbGVzIG5pdmVhdXggZHUgZmljaGllciBBTU8yMFxuICAgICAgLy8gKHF1aSBlc3QgbHVpIG3Dqm1lIHVuIHNvdXMtZW5zZW1ibGUgZGUgbCdBTU8zMCkuXG4gICAgICAvLyBJbCBuJ2FwcG9ydGUgZG9uYyBhYnNvbHVtZW50IHJpZW4gcGFyIHJhcHBvcnQgw6AgQU1PMjAgb3UgbCdBTU8zMC5cbiAgICAgIGZpbGVuYW1lOiBcIkFNTzEwX2RlcHV0ZXNfYWN0aWZzX21hbmRhdHNfYWN0aWZzX29yZ2FuZXNfWFYuanNvblwiLFxuICAgICAgaWdub3JlRm9yV2ViOiB0cnVlLFxuICAgICAgbGVnaXNsYXR1cmU6IExlZ2lzbGF0dXJlLlF1aW56ZSxcbiAgICAgIHJlcGFpclppcDogKGRhdGFzZXQ6IERhdGFzZXQsIGRhdGFEaXI6IHN0cmluZykgPT4ge1xuICAgICAgICBjb25zdCB0YXJnZXREaXIgPSBwYXRoLmpvaW4oZGF0YURpciwgZGF0YXNldC5maWxlbmFtZSlcbiAgICAgICAgaWYgKGZzLmV4aXN0c1N5bmModGFyZ2V0RGlyKSkge1xuICAgICAgICAgIGZzLnJlbW92ZVN5bmModGFyZ2V0RGlyKVxuICAgICAgICB9XG4gICAgICAgIGZzLm1vdmVTeW5jKHBhdGguam9pbihkYXRhRGlyLCBcImpzb25cIiksIHRhcmdldERpcilcbiAgICAgIH0sXG4gICAgICBzdHJ1Y3R1cmU6IERhdGFzZXRTdHJ1Y3R1cmUuU2VnbWVudGVkRmlsZXMsXG4gICAgICB0aXRsZTogXCJEw6lwdXTDqXMgYWN0aWZzIGV0IG9yZ2FuZXMgZGUgbGEgWFbDqG1lIGzDqWdpc2xhdHVyZVwiLFxuICAgICAgdXJsOiBcImh0dHA6Ly9kYXRhLmFzc2VtYmxlZS1uYXRpb25hbGUuZnIvc3RhdGljL29wZW5EYXRhL3JlcG9zaXRvcnkvMTUvYW1vL2RlcHV0ZXNfYWN0aWZzX21hbmRhdHNfYWN0aWZzX29yZ2FuZXMvQU1PMTBfZGVwdXRlc19hY3RpZnNfbWFuZGF0c19hY3RpZnNfb3JnYW5lc19YVi5qc29uLnppcFwiLFxuICAgIH0sXG4gICAge1xuICAgICAgLy8gQU1PMjAgKFhWSSlcbiAgICAgIC8vXG4gICAgICAvLyBDb250aWVudCBsZXMgZMOpcHV0w6lzIGRlIGxhIGzDqWdpc2xhdHVyZSwgYWN0aWZzIG91IG5vbiAoaW52YWxpZMOpcywgZXRjKSwgbGVzIHPDqW5hdGV1cnMgYWN0dWVsc1xuICAgICAgLy8gUG91ciBsZXMgZMOpcHV0w6lzIDpcbiAgICAgIC8vICogYXZlYyB0b3VzIGxldXJzIG1hbmRhdHMgZGUgbGEgbMOpZ2lzbGF0dXJlXG4gICAgICAvLyAqIHkgY29tcHJpcyBsZXMgbWFuZGF0cyBhY2hldsOpc1xuICAgICAgLy8gKiB5IGNvbXByaXMgbGV1cnMgcGFydGlzIHBvbGl0aXF1ZXMgICh0eXBlT3JnYW5lOiBcIlBBUlBPTFwiKVxuICAgICAgLy8gKiBtYWlzIHNhbnMgbGVzIG1hbmRhdHMgZGVzIGzDqWdpc2xhdHVyZXMgcHLDqWPDqWRlbnRlcyAocXVpIHNvbnQgZGFucyBBTU80MClcbiAgICAgIC8vXG4gICAgICAvLyBDb250aWVudCB0b3VzIGxlcyBvcmdhbmVzIHLDqWbDqXJlbmPDqXMgcGFyIGxlcyBtYW5kYXRzXG4gICAgICAvLyAqIGF2ZWMgbGUgeHNpVHlwZSBkZSBsJ29yZ2FuZVxuICAgICAgLy8gKiBhdmVjIGRlcyBjb21taXNzaW9ucyBzw6luYXRvcmlhbGVzIChwZXJtYW5lbnRlcyBldCBzcMOpY2lhbGVzKSBlbiBjb3Vyc1xuICAgICAgLy8gKiBhdmVjIGRlcyBkw6lsw6lnYXRpb25zIHPDqW5hdG9yaWFsZXMgZW4gY291cnNcbiAgICAgIC8vICogYXZlYyBkZXMgZ3JvdXBlcyBzw6luYXRvcmlhdXggZW4gY291cnNcbiAgICAgIC8vICogYXZlYyBkZXMgbWluaXN0w6hyZXMgZW4gY291cnNcbiAgICAgIC8vICogYXZlYyBsZXMgUHLDqXNpZGVuY2VzIGRlIGxhIFLDqXB1YmxpcXVlICh5IGNvbXByaXMgU2Fya296eSlcbiAgICAgIC8vICogYXZlYyBsZSBDb25zZWlsIGNvbnN0aXR1dGlvbm5lbFxuICAgICAgLy9cbiAgICAgIC8vIENlIGZpY2hpZXIgZXN0IHVuIHNvdXMtZW5zZW1ibGUgw6AgdG91cyBsZXMgbml2ZWF1eCBkdSBmaWNoaWVyIEFNTzMwLlxuICAgICAgLy8gSWwgbidhcHBvcnRlIGRvbmMgYWJzb2x1bWVudCByaWVuIHBhciByYXBwb3J0IMOgIGwnQU1PMzAuXG4gICAgICBmaWxlbmFtZTogXCJBTU8yMF9kZXBfc2VuX21pbl90b3VzX21hbmRhdHNfZXRfb3JnYW5lc19YVkkuanNvblwiLFxuICAgICAgaWdub3JlRm9yV2ViOiB0cnVlLFxuICAgICAgbGVnaXNsYXR1cmU6IExlZ2lzbGF0dXJlLlNlaXplLFxuICAgICAgcmVwYWlyWmlwOiAoZGF0YXNldDogRGF0YXNldCwgZGF0YURpcjogc3RyaW5nKSA9PiB7XG4gICAgICAgIGNvbnN0IHRhcmdldERpciA9IHBhdGguam9pbihkYXRhRGlyLCBkYXRhc2V0LmZpbGVuYW1lKVxuICAgICAgICBpZiAoZnMuZXhpc3RzU3luYyh0YXJnZXREaXIpKSB7XG4gICAgICAgICAgZnMucmVtb3ZlU3luYyh0YXJnZXREaXIpXG4gICAgICAgIH1cbiAgICAgICAgZnMubW92ZVN5bmMocGF0aC5qb2luKGRhdGFEaXIsIFwianNvblwiKSwgdGFyZ2V0RGlyKVxuICAgICAgfSxcbiAgICAgIHN0cnVjdHVyZTogRGF0YXNldFN0cnVjdHVyZS5TZWdtZW50ZWRGaWxlcyxcbiAgICAgIHRpdGxlOiBcIkFjdGV1cnMgZXQgb3JnYW5lcyBkZSBsYSBYVsOobWUgbMOpZ2lzbGF0dXJlXCIsXG4gICAgICB1cmw6IFwiaHR0cDovL2RhdGEuYXNzZW1ibGVlLW5hdGlvbmFsZS5mci9zdGF0aWMvb3BlbkRhdGEvcmVwb3NpdG9yeS8xNi9hbW8vZGVwdXRlc19zZW5hdGV1cnNfbWluaXN0cmVzX2xlZ2lzbGF0dXJlL0FNTzIwX2RlcF9zZW5fbWluX3RvdXNfbWFuZGF0c19ldF9vcmdhbmVzLmpzb24uemlwXCIsXG4gICAgfSxcbiAgICB7XG4gICAgICAvLyBBTU8yMCAoWFYpXG4gICAgICAvL1xuICAgICAgLy8gQ29udGllbnQgbGVzIGTDqXB1dMOpcyBkZSBsYSBsw6lnaXNsYXR1cmUsIGFjdGlmcyBvdSBub24gKGludmFsaWTDqXMsIGV0YyksIGxlcyBzw6luYXRldXJzIGFjdHVlbHNcbiAgICAgIC8vIFBvdXIgbGVzIGTDqXB1dMOpcyA6XG4gICAgICAvLyAqIGF2ZWMgdG91cyBsZXVycyBtYW5kYXRzIGRlIGxhIGzDqWdpc2xhdHVyZVxuICAgICAgLy8gKiB5IGNvbXByaXMgbGVzIG1hbmRhdHMgYWNoZXbDqXNcbiAgICAgIC8vICogeSBjb21wcmlzIGxldXJzIHBhcnRpcyBwb2xpdGlxdWVzICAodHlwZU9yZ2FuZTogXCJQQVJQT0xcIilcbiAgICAgIC8vICogbWFpcyBzYW5zIGxlcyBtYW5kYXRzIGRlcyBsw6lnaXNsYXR1cmVzIHByw6ljw6lkZW50ZXMgKHF1aSBzb250IGRhbnMgQU1PNDApXG4gICAgICAvL1xuICAgICAgLy8gQ29udGllbnQgdG91cyBsZXMgb3JnYW5lcyByw6lmw6lyZW5jw6lzIHBhciBsZXMgbWFuZGF0c1xuICAgICAgLy8gKiBhdmVjIGxlIHhzaVR5cGUgZGUgbCdvcmdhbmVcbiAgICAgIC8vICogYXZlYyBkZXMgY29tbWlzc2lvbnMgc8OpbmF0b3JpYWxlcyAocGVybWFuZW50ZXMgZXQgc3DDqWNpYWxlcykgZW4gY291cnNcbiAgICAgIC8vICogYXZlYyBkZXMgZMOpbMOpZ2F0aW9ucyBzw6luYXRvcmlhbGVzIGVuIGNvdXJzXG4gICAgICAvLyAqIGF2ZWMgZGVzIGdyb3VwZXMgc8OpbmF0b3JpYXV4IGVuIGNvdXJzXG4gICAgICAvLyAqIGF2ZWMgZGVzIG1pbmlzdMOocmVzIGVuIGNvdXJzXG4gICAgICAvLyAqIGF2ZWMgbGVzIFByw6lzaWRlbmNlcyBkZSBsYSBSw6lwdWJsaXF1ZSAoeSBjb21wcmlzIFNhcmtvenkpXG4gICAgICAvLyAqIGF2ZWMgbGUgQ29uc2VpbCBjb25zdGl0dXRpb25uZWxcbiAgICAgIC8vXG4gICAgICAvLyBDZSBmaWNoaWVyIGVzdCB1biBzb3VzLWVuc2VtYmxlIMOgIHRvdXMgbGVzIG5pdmVhdXggZHUgZmljaGllciBBTU8zMC5cbiAgICAgIC8vIElsIG4nYXBwb3J0ZSBkb25jIGFic29sdW1lbnQgcmllbiBwYXIgcmFwcG9ydCDDoCBsJ0FNTzMwLlxuICAgICAgZmlsZW5hbWU6IFwiQU1PMjBfZGVwX3Nlbl9taW5fdG91c19tYW5kYXRzX2V0X29yZ2FuZXNfWFYuanNvblwiLFxuICAgICAgaWdub3JlRm9yV2ViOiB0cnVlLFxuICAgICAgbGVnaXNsYXR1cmU6IExlZ2lzbGF0dXJlLlF1aW56ZSxcbiAgICAgIHJlcGFpclppcDogKGRhdGFzZXQ6IERhdGFzZXQsIGRhdGFEaXI6IHN0cmluZykgPT4ge1xuICAgICAgICBjb25zdCB0YXJnZXREaXIgPSBwYXRoLmpvaW4oZGF0YURpciwgZGF0YXNldC5maWxlbmFtZSlcbiAgICAgICAgaWYgKGZzLmV4aXN0c1N5bmModGFyZ2V0RGlyKSkge1xuICAgICAgICAgIGZzLnJlbW92ZVN5bmModGFyZ2V0RGlyKVxuICAgICAgICB9XG4gICAgICAgIGZzLm1vdmVTeW5jKHBhdGguam9pbihkYXRhRGlyLCBcImpzb25cIiksIHRhcmdldERpcilcbiAgICAgIH0sXG4gICAgICBzdHJ1Y3R1cmU6IERhdGFzZXRTdHJ1Y3R1cmUuU2VnbWVudGVkRmlsZXMsXG4gICAgICB0aXRsZTogXCJBY3RldXJzIGV0IG9yZ2FuZXMgZGUgbGEgWFbDqG1lIGzDqWdpc2xhdHVyZVwiLFxuICAgICAgdXJsOiBcImh0dHA6Ly9kYXRhLmFzc2VtYmxlZS1uYXRpb25hbGUuZnIvc3RhdGljL29wZW5EYXRhL3JlcG9zaXRvcnkvMTUvYW1vL2RlcHV0ZXNfc2VuYXRldXJzX21pbmlzdHJlc19sZWdpc2xhdHVyZS9BTU8yMF9kZXBfc2VuX21pbl90b3VzX21hbmRhdHNfZXRfb3JnYW5lc19YVi5qc29uLnppcFwiLFxuICAgIH0sXG4gICAge1xuICAgICAgLy8gQU1PMjAgKFhJVilcbiAgICAgIC8vXG4gICAgICAvLyBDb21tZSBBTU8yMCAoWFYpIG1haXMgcG91ciBsYSBYSVbDqG1lIGzDqWdpc2xhdHVyZVxuICAgICAgLy8gVG91cyBsZXMgYWN0ZXVycyBzYXVmIHVuIChQQTQyOTg5Mikgc29udCBwcsOpc2VudHMgZW4gcGx1cyDDoCBqb3VyIGRhbnMgQU1PMzAuXG4gICAgICAvLyBDZXQgYWN0ZXVyIFBBNDI5ODkyIChhbmNpZW5uZSBTw6luYXRyaWNlKSBuJ2VzdCBwcsOpc2VudCBkYW5zIGF1Y3VuIGRlcyBhdXRyZXNcbiAgICAgIC8vIGZpY2hpZXJzIEFNTy5cbiAgICAgIC8vIFRvdXMgbGVzIG9yZ2FuZXMgc29udCBwcsOpc2VudHMgZW4gcGx1cyBjb21wbGV0cyBkYW5zIEFNTzMwLlxuICAgICAgLy9cbiAgICAgIC8vIENlIGZpY2hpZXIgZXN0IGRvbmMgw6AgdW4gZMOpdGFpbCBwcsOqdCAoUEE0Mjk4OTIpIHVuIHNvdXMtZW5zZW1ibGUgZCdBTU8zMC5cbiAgICAgIC8vIElsIG4nYXBwb3J0ZSBkb25jIHF1YXNpbWVudCByaWVuIHBhciByYXBwb3J0IMOgIGwnQU1PMzAuXG4gICAgICBmaWxlbmFtZTogXCJBTU8yMF9kZXBfc2VuX21pbl90b3VzX21hbmRhdHNfZXRfb3JnYW5lc19YSVYuanNvblwiLFxuICAgICAgaWdub3JlRm9yV2ViOiB0cnVlLFxuICAgICAgbGVnaXNsYXR1cmU6IExlZ2lzbGF0dXJlLlF1YXRvcnplLFxuICAgICAgc3RydWN0dXJlOiBEYXRhc2V0U3RydWN0dXJlLlNpbmdsZUZpbGUsXG4gICAgICB0aXRsZTogXCJBY3RldXJzIGV0IG9yZ2FuZXMgZGUgbGEgWElWw6htZSBsw6lnaXNsYXR1cmVcIixcbiAgICAgIHVybDogXCJodHRwOi8vZGF0YS5hc3NlbWJsZWUtbmF0aW9uYWxlLmZyL3N0YXRpYy9vcGVuRGF0YS9yZXBvc2l0b3J5LzE0L2Ftby9kZXB1dGVzX3NlbmF0ZXVyc19taW5pc3RyZXNfbGVnaXNsYXR1cmVzX1hJVi9BTU8yMF9kZXBfc2VuX21pbl90b3VzX21hbmRhdHNfZXRfb3JnYW5lc19YSVYuanNvbi56aXBcIixcbiAgICB9LFxuICAgIHtcbiAgICAgIC8vIEFNTzMwIChYVkkpXG4gICAgICAvL1xuICAgICAgLy8gQ2UgZmljaGllciBjb250aWVudCB0b3VzIGxlcyBhY3RldXJzIGV0IG9yZ2FuZXMuXG4gICAgICAvLyBDJ2VzdCB1biBzdXItZW5zZW1ibGUgZGVzIGZpY2hpZXJzIEFNTzIwLlxuICAgICAgZmlsZW5hbWU6IFwiQU1PMzBfdG91c19hY3RldXJzX3RvdXNfbWFuZGF0c190b3VzX29yZ2FuZXNfaGlzdG9yaXF1ZS5qc29uXCIsXG4gICAgICBsZWdpc2xhdHVyZTogTGVnaXNsYXR1cmUuQWxsLFxuICAgICAgcmVwYWlyWmlwOiAoZGF0YXNldDogRGF0YXNldCwgZGF0YURpcjogc3RyaW5nKSA9PiB7XG4gICAgICAgIGNvbnN0IHRhcmdldERpciA9IHBhdGguam9pbihkYXRhRGlyLCBkYXRhc2V0LmZpbGVuYW1lKVxuICAgICAgICBpZiAoZnMuZXhpc3RzU3luYyh0YXJnZXREaXIpKSB7XG4gICAgICAgICAgZnMucmVtb3ZlU3luYyh0YXJnZXREaXIpXG4gICAgICAgIH1cbiAgICAgICAgZnMubW92ZVN5bmMocGF0aC5qb2luKGRhdGFEaXIsIFwianNvblwiKSwgdGFyZ2V0RGlyKVxuICAgICAgfSxcbiAgICAgIHN0cnVjdHVyZTogRGF0YXNldFN0cnVjdHVyZS5TZWdtZW50ZWRGaWxlcyxcbiAgICAgIHRpdGxlOlxuICAgICAgICBcIkhpc3RvcmlxdWUgZGUgdG91cyBsZXMgYWN0ZXVycyBldCBvcmdhbmVzIGRlcHVpcyBsYSBYScOobWUgbMOpZ2lzbGF0dXJlXCIsXG4gICAgICB1cmw6IFwiaHR0cDovL2RhdGEuYXNzZW1ibGVlLW5hdGlvbmFsZS5mci9zdGF0aWMvb3BlbkRhdGEvcmVwb3NpdG9yeS8xNi9hbW8vdG91c19hY3RldXJzX21hbmRhdHNfb3JnYW5lc194aV9sZWdpc2xhdHVyZS9BTU8zMF90b3VzX2FjdGV1cnNfdG91c19tYW5kYXRzX3RvdXNfb3JnYW5lc19oaXN0b3JpcXVlLmpzb24uemlwXCIsXG4gICAgfSxcbiAgICAvLyB7XG4gICAgLy8gICAvLyBBTU8zMCAoWFYpXG4gICAgLy8gICAvL1xuICAgIC8vICAgLy8gQ2UgZmljaGllciBjb250aWVudCB0b3VzIGxlcyBhY3RldXJzIGV0IG9yZ2FuZXMuXG4gICAgLy8gICAvLyBDJ2VzdCB1biBzdXItZW5zZW1ibGUgZGVzIGZpY2hpZXJzIEFNTzIwLlxuICAgIC8vICAgZmlsZW5hbWU6IFwiQU1PMzBfdG91c19hY3RldXJzX3RvdXNfbWFuZGF0c190b3VzX29yZ2FuZXNfaGlzdG9yaXF1ZS5qc29uXCIsXG4gICAgLy8gICBsZWdpc2xhdHVyZTogTGVnaXNsYXR1cmUuQWxsLFxuICAgIC8vICAgcmVwYWlyWmlwOiAoZGF0YXNldDogRGF0YXNldCwgZGF0YURpcjogc3RyaW5nKSA9PiB7XG4gICAgLy8gICAgIGNvbnN0IHRhcmdldERpciA9IHBhdGguam9pbihkYXRhRGlyLCBkYXRhc2V0LmZpbGVuYW1lKVxuICAgIC8vICAgICBpZiAoZnMuZXhpc3RzU3luYyh0YXJnZXREaXIpKSB7XG4gICAgLy8gICAgICAgZnMucmVtb3ZlU3luYyh0YXJnZXREaXIpXG4gICAgLy8gICAgIH1cbiAgICAvLyAgICAgZnMubW92ZVN5bmMocGF0aC5qb2luKGRhdGFEaXIsIFwianNvblwiKSwgdGFyZ2V0RGlyKVxuICAgIC8vICAgfSxcbiAgICAvLyAgIHN0cnVjdHVyZTogRGF0YXNldFN0cnVjdHVyZS5TZWdtZW50ZWRGaWxlcyxcbiAgICAvLyAgIHRpdGxlOlxuICAgIC8vICAgICBcIkhpc3RvcmlxdWUgZGUgdG91cyBsZXMgYWN0ZXVycyBldCBvcmdhbmVzIGRlcHVpcyBsYSBYScOobWUgbMOpZ2lzbGF0dXJlXCIsXG4gICAgLy8gICB1cmw6IFwiaHR0cDovL2RhdGEuYXNzZW1ibGVlLW5hdGlvbmFsZS5mci9zdGF0aWMvb3BlbkRhdGEvcmVwb3NpdG9yeS8xNS9hbW8vdG91c19hY3RldXJzX21hbmRhdHNfb3JnYW5lc194aV9sZWdpc2xhdHVyZS9BTU8zMF90b3VzX2FjdGV1cnNfdG91c19tYW5kYXRzX3RvdXNfb3JnYW5lc19oaXN0b3JpcXVlLmpzb24uemlwXCIsXG4gICAgLy8gfSxcbiAgICB7XG4gICAgICAvLyBBTU80MCAoWFZJKVxuICAgICAgLy9cbiAgICAgIC8vIENvbnRpZW50IGxlcyBkw6lwdXTDqXMgYWN0aWZzIChsZXMgbcOqbWVzIHF1J0FNTzIwKVxuICAgICAgLy8gKiBhdmVjIHByZXNxdWUgdG91cyBsZXVycyBtYW5kYXRzXG4gICAgICAvLyAqIHkgY29tcHJpcyBsZXMgbWFuZGF0cyBhY2hldsOpcyBldCBjZXV4IGRlcyBsw6lnaXNsYXR1cmVzIHByw6ljw6lkZW50ZXNcbiAgICAgIC8vICogeSBjb21wcmlzIGxldXJzIHBhcnRpcyBwb2xpdGlxdWVzIHByw6ljw6lkZW50c1xuICAgICAgLy8gKiBtYWlzIHNhbnMgbGV1ciBwYXJ0aSBwb2xpdGlxdWUgYWN0dWVsICh0eXBlT3JnYW5lOiBcIlBBUlBPTFwiKVxuICAgICAgLy9cbiAgICAgIC8vIENvbnRpZW50IGJlYXVjb3VwIGQnb3JnYW5lcyByw6lmw6lyZW5jw6lzLCB5IGNvbXByaXMgY2V1eCBkZXMgbMOpZ2lzbGF0dXJlc1xuICAgICAgLy8gcHLDqWPDqWRlbnRlc1xuICAgICAgLy8gKiBtYWlzIGlsIG1hbnF1ZSBsZSB4c2lUeXBlIGRlcyBvcmdhbmVzXG4gICAgICAvLyAqIG5lIGNvbnRpZW50IHBhcyBsZXMgb3JnYW5lcyBzw6luYXRvcmlhdXhcbiAgICAgIC8vICogbmUgY29udGllbnQgcGFzIGxlcyBtaW5pc3TDqHJlc1xuICAgICAgLy8gKiBuZSBjb250aWVudCBwYXMgbGEgUHLDqXNpZGVuY2UgZGUgbGEgUsOpcHVibGlxdWVcbiAgICAgIC8vICogbmUgY29udGllbnQgcGFzIGxlIENvbnNlaWwgY29uc3RpdHV0aW9ubmVsXG4gICAgICAvL1xuICAgICAgLy8gUG91ciBsZXMgYWN0ZXVycywgY2UgZMOpcMO0dCBlc3QgdW4gc291cy1lbnNlbWJsZSBzdHJpY3QgZGUgQU1PMzAgOlxuICAgICAgLy8gSWwgYSBtb2lucyBkJ2FjdGV1cnMgZXQgaWwgc29udCBtb2lucyBjb21wbGV0cy5cbiAgICAgIC8vXG4gICAgICAvLyBQb3VyIGxlcyBvcmdhbmVzIDpcbiAgICAgIC8vIFF1YW5kIGwnb3JnYW5lIGVzdCBhdXNzaSBwcsOpc2VudCBkYW5zIEFNTzMwLCBpbCB2YXV0IG1pZXV4IHByZW5kcmUgY2VsdWlcbiAgICAgIC8vIGQnQU1PMzAsIGNhciBpbCBjb250aWVudCBsZSB4c2lUeXBlIChjJ2VzdCBsYSBzZXVsZSBkaWZmw6lyZW5jZSBzZW1ibGUtdC1pKS5cbiAgICAgIC8vIFNpbm9uLCBpbCBmYXV0IGxlIHByZW5kcmUgc2V1bGVtZW50IHNpIG9uIGVzdCBpbnTDqXJlc3PDqSBwYXIgbGVzIGzDqWdpc2xhdHVyZXNcbiAgICAgIC8vIHByw6ljw6lkZW50ZXMuXG4gICAgICBmaWxlbmFtZTogXCJBTU80MF9kZXB1dGVzX2FjdGlmc19tYW5kYXRzX2FjdGlmc19vcmdhbmVzX2RpdmlzZXNfWFZJLmpzb25cIixcbiAgICAgIGlnbm9yZUZvcldlYjogdHJ1ZSxcbiAgICAgIGxlZ2lzbGF0dXJlOiBMZWdpc2xhdHVyZS5TZWl6ZSxcbiAgICAgIHJlcGFpclppcDogKGRhdGFzZXQ6IERhdGFzZXQsIGRhdGFEaXI6IHN0cmluZykgPT4ge1xuICAgICAgICBjb25zdCB0YXJnZXREaXIgPSBwYXRoLmpvaW4oZGF0YURpciwgZGF0YXNldC5maWxlbmFtZSlcbiAgICAgICAgaWYgKGZzLmV4aXN0c1N5bmModGFyZ2V0RGlyKSkge1xuICAgICAgICAgIGZzLnJlbW92ZVN5bmModGFyZ2V0RGlyKVxuICAgICAgICB9XG4gICAgICAgIGZzLm1rZGlyU3luYyh0YXJnZXREaXIpXG4gICAgICAgIGZzLm1vdmVTeW5jKFxuICAgICAgICAgIHBhdGguam9pbihkYXRhRGlyLCBcImFjdGV1clwiKSxcbiAgICAgICAgICBwYXRoLmpvaW4odGFyZ2V0RGlyLCBcImFjdGV1clwiKSxcbiAgICAgICAgKVxuICAgICAgICBmcy5tb3ZlU3luYyhcbiAgICAgICAgICBwYXRoLmpvaW4oZGF0YURpciwgXCJvcmdhbmVcIiksXG4gICAgICAgICAgcGF0aC5qb2luKHRhcmdldERpciwgXCJvcmdhbmVcIiksXG4gICAgICAgIClcbiAgICAgIH0sXG4gICAgICBzdHJ1Y3R1cmU6IERhdGFzZXRTdHJ1Y3R1cmUuU2VnbWVudGVkRmlsZXMsXG4gICAgICB0aXRsZTogXCJEw6lwdXTDqXMgYWN0aWZzIGV0IG9yZ2FuZXMgZGUgbGEgWFZJw6htZSBsw6lnaXNsYXR1cmVcIixcbiAgICAgIHVybDogXCJodHRwOi8vZGF0YS5hc3NlbWJsZWUtbmF0aW9uYWxlLmZyL3N0YXRpYy9vcGVuRGF0YS9yZXBvc2l0b3J5LzE2L2Ftby9kZXB1dGVzX2FjdGlmc19tYW5kYXRzX2FjdGlmc19vcmdhbmVzX2RpdmlzZXMvQU1PNDBfZGVwdXRlc19hY3RpZnNfbWFuZGF0c19hY3RpZnNfb3JnYW5lc19kaXZpc2VzLmpzb24uemlwXCIsXG4gICAgfSxcbiAgICB7XG4gICAgICAvLyBBTU80MCAoWFYpXG4gICAgICAvL1xuICAgICAgLy8gQ29udGllbnQgbGVzIGTDqXB1dMOpcyBhY3RpZnMgKGxlcyBtw6ptZXMgcXUnQU1PMjApXG4gICAgICAvLyAqIGF2ZWMgcHJlc3F1ZSB0b3VzIGxldXJzIG1hbmRhdHNcbiAgICAgIC8vICogeSBjb21wcmlzIGxlcyBtYW5kYXRzIGFjaGV2w6lzIGV0IGNldXggZGVzIGzDqWdpc2xhdHVyZXMgcHLDqWPDqWRlbnRlc1xuICAgICAgLy8gKiB5IGNvbXByaXMgbGV1cnMgcGFydGlzIHBvbGl0aXF1ZXMgcHLDqWPDqWRlbnRzXG4gICAgICAvLyAqIG1haXMgc2FucyBsZXVyIHBhcnRpIHBvbGl0aXF1ZSBhY3R1ZWwgKHR5cGVPcmdhbmU6IFwiUEFSUE9MXCIpXG4gICAgICAvL1xuICAgICAgLy8gQ29udGllbnQgYmVhdWNvdXAgZCdvcmdhbmVzIHLDqWbDqXJlbmPDqXMsIHkgY29tcHJpcyBjZXV4IGRlcyBsw6lnaXNsYXR1cmVzXG4gICAgICAvLyBwcsOpY8OpZGVudGVzXG4gICAgICAvLyAqIG1haXMgaWwgbWFucXVlIGxlIHhzaVR5cGUgZGVzIG9yZ2FuZXNcbiAgICAgIC8vICogbmUgY29udGllbnQgcGFzIGxlcyBvcmdhbmVzIHPDqW5hdG9yaWF1eFxuICAgICAgLy8gKiBuZSBjb250aWVudCBwYXMgbGVzIG1pbmlzdMOocmVzXG4gICAgICAvLyAqIG5lIGNvbnRpZW50IHBhcyBsYSBQcsOpc2lkZW5jZSBkZSBsYSBSw6lwdWJsaXF1ZVxuICAgICAgLy8gKiBuZSBjb250aWVudCBwYXMgbGUgQ29uc2VpbCBjb25zdGl0dXRpb25uZWxcbiAgICAgIC8vXG4gICAgICAvLyBQb3VyIGxlcyBhY3RldXJzLCBjZSBkw6lww7R0IGVzdCB1biBzb3VzLWVuc2VtYmxlIHN0cmljdCBkZSBBTU8zMCA6XG4gICAgICAvLyBJbCBhIG1vaW5zIGQnYWN0ZXVycyBldCBpbCBzb250IG1vaW5zIGNvbXBsZXRzLlxuICAgICAgLy9cbiAgICAgIC8vIFBvdXIgbGVzIG9yZ2FuZXMgOlxuICAgICAgLy8gUXVhbmQgbCdvcmdhbmUgZXN0IGF1c3NpIHByw6lzZW50IGRhbnMgQU1PMzAsIGlsIHZhdXQgbWlldXggcHJlbmRyZSBjZWx1aVxuICAgICAgLy8gZCdBTU8zMCwgY2FyIGlsIGNvbnRpZW50IGxlIHhzaVR5cGUgKGMnZXN0IGxhIHNldWxlIGRpZmbDqXJlbmNlIHNlbWJsZS10LWkpLlxuICAgICAgLy8gU2lub24sIGlsIGZhdXQgbGUgcHJlbmRyZSBzZXVsZW1lbnQgc2kgb24gZXN0IGludMOpcmVzc8OpIHBhciBsZXMgbMOpZ2lzbGF0dXJlc1xuICAgICAgLy8gcHLDqWPDqWRlbnRlcy5cbiAgICAgIGZpbGVuYW1lOiBcIkFNTzQwX2RlcHV0ZXNfYWN0aWZzX21hbmRhdHNfYWN0aWZzX29yZ2FuZXNfZGl2aXNlc19YVi5qc29uXCIsXG4gICAgICBpZ25vcmVGb3JXZWI6IHRydWUsXG4gICAgICBsZWdpc2xhdHVyZTogTGVnaXNsYXR1cmUuUXVpbnplLFxuICAgICAgcmVwYWlyWmlwOiAoZGF0YXNldDogRGF0YXNldCwgZGF0YURpcjogc3RyaW5nKSA9PiB7XG4gICAgICAgIGNvbnN0IHRhcmdldERpciA9IHBhdGguam9pbihkYXRhRGlyLCBkYXRhc2V0LmZpbGVuYW1lKVxuICAgICAgICBpZiAoZnMuZXhpc3RzU3luYyh0YXJnZXREaXIpKSB7XG4gICAgICAgICAgZnMucmVtb3ZlU3luYyh0YXJnZXREaXIpXG4gICAgICAgIH1cbiAgICAgICAgZnMubWtkaXJTeW5jKHRhcmdldERpcilcbiAgICAgICAgZnMubW92ZVN5bmMoXG4gICAgICAgICAgcGF0aC5qb2luKGRhdGFEaXIsIFwiYWN0ZXVyXCIpLFxuICAgICAgICAgIHBhdGguam9pbih0YXJnZXREaXIsIFwiYWN0ZXVyXCIpLFxuICAgICAgICApXG4gICAgICAgIGZzLm1vdmVTeW5jKFxuICAgICAgICAgIHBhdGguam9pbihkYXRhRGlyLCBcIm9yZ2FuZVwiKSxcbiAgICAgICAgICBwYXRoLmpvaW4odGFyZ2V0RGlyLCBcIm9yZ2FuZVwiKSxcbiAgICAgICAgKVxuICAgICAgfSxcbiAgICAgIHN0cnVjdHVyZTogRGF0YXNldFN0cnVjdHVyZS5TZWdtZW50ZWRGaWxlcyxcbiAgICAgIHRpdGxlOiBcIkTDqXB1dMOpcyBhY3RpZnMgZXQgb3JnYW5lcyBkZSBsYSBYVsOobWUgbMOpZ2lzbGF0dXJlXCIsXG4gICAgICB1cmw6IFwiaHR0cDovL2RhdGEuYXNzZW1ibGVlLW5hdGlvbmFsZS5mci9zdGF0aWMvb3BlbkRhdGEvcmVwb3NpdG9yeS8xNS9hbW8vZGVwdXRlc19hY3RpZnNfbWFuZGF0c19hY3RpZnNfb3JnYW5lc19kaXZpc2VzL0FNTzQwX2RlcHV0ZXNfYWN0aWZzX21hbmRhdHNfYWN0aWZzX29yZ2FuZXNfZGl2aXNlc19YVi5qc29uLnppcFwiLFxuICAgIH0sXG4gICAge1xuICAgICAgLy8gQU1PNTAgKFhWSSlcbiAgICAgIC8vXG4gICAgICAvLyBBdHRlbnRpb24sIGNlIGZpY2hpZXIgbidlc3QgcGFzIG1pcyDDoCBqb3VyIHLDqWd1bGnDqHJlbWVudCAhXG4gICAgICAvL1xuICAgICAgLy8gUG91ciBsZXMgYWN0ZXVycyA6XG4gICAgICAvLyAqIGMnZXN0IHVuIHNvdXMgZW5zZW1ibGUgb2Jzb2zDqHRlIGQnQU1PMzBcbiAgICAgIC8vICogaWwgbWFucXVlIGxlcyB4c2lUeXBlIGF1eCBtYW5kYXRzXG4gICAgICAvL1xuICAgICAgLy8gUG91ciBsZXMgb3JnYW5lcyA6XG4gICAgICAvLyAqIGMnZXN0IHVuIHNvdXMgZW5zZW1ibGUgb2Jzb2zDqHRlIGQnQU1PMzBcbiAgICAgIC8vICogaWwgbWFucXVlIGxlcyB4c2lUeXBlXG4gICAgICAvL1xuICAgICAgLy8gQ2UgZmljaGllciBuJ2FwcG9ydGUgZG9uYyBhYnNvbHVtZW50IHJpZW4gcGFyIHJhcHBvcnQgw6AgbCdBTU8zMCxcbiAgICAgIC8vIGRvbnQgaWwgZXN0IHVuIHNvdXMgZW5zZW1ibGUgb2Jzb2zDqHRlLlxuICAgICAgZmlsZW5hbWU6IFwiQU1PNTBfYWN0ZXVyc19tYW5kYXRzX29yZ2FuZXNfZGl2aXNlc19YVkkuanNvblwiLFxuICAgICAgaWdub3JlRm9yV2ViOiB0cnVlLFxuICAgICAgbGVnaXNsYXR1cmU6IExlZ2lzbGF0dXJlLlNlaXplLFxuICAgICAgcmVwYWlyWmlwOiAoZGF0YXNldDogRGF0YXNldCwgZGF0YURpcjogc3RyaW5nKSA9PiB7XG4gICAgICAgIGNvbnN0IHRhcmdldERpciA9IHBhdGguam9pbihkYXRhRGlyLCBkYXRhc2V0LmZpbGVuYW1lKVxuICAgICAgICBpZiAoZnMuZXhpc3RzU3luYyh0YXJnZXREaXIpKSB7XG4gICAgICAgICAgZnMucmVtb3ZlU3luYyh0YXJnZXREaXIpXG4gICAgICAgIH1cbiAgICAgICAgZnMubWtkaXJTeW5jKHRhcmdldERpcilcbiAgICAgICAgZnMubW92ZVN5bmMoXG4gICAgICAgICAgcGF0aC5qb2luKGRhdGFEaXIsIFwibWFuZGF0XCIpLFxuICAgICAgICAgIHBhdGguam9pbih0YXJnZXREaXIsIFwibWFuZGF0XCIpLFxuICAgICAgICApXG4gICAgICAgIGZzLm1vdmVTeW5jKFxuICAgICAgICAgIHBhdGguam9pbihkYXRhRGlyLCBcImFjdGV1clwiKSxcbiAgICAgICAgICBwYXRoLmpvaW4odGFyZ2V0RGlyLCBcImFjdGV1clwiKSxcbiAgICAgICAgKVxuICAgICAgICBmcy5tb3ZlU3luYyhcbiAgICAgICAgICBwYXRoLmpvaW4oZGF0YURpciwgXCJvcmdhbmVcIiksXG4gICAgICAgICAgcGF0aC5qb2luKHRhcmdldERpciwgXCJvcmdhbmVcIiksXG4gICAgICAgIClcbiAgICAgIH0sXG4gICAgICBzdHJ1Y3R1cmU6IERhdGFzZXRTdHJ1Y3R1cmUuU2VnbWVudGVkRmlsZXMsXG4gICAgICB0aXRsZTpcbiAgICAgICAgXCJBY3RldXJzLCBtYW5kYXRzIGV0IG9yZ2FuZXMgZGUgbGEgWFZJw6htZSBsw6lnaXNsYXR1cmUgKGZpY2hpZXJzIHPDqXBhcsOpcywgeSBjb21wcmlzIG1hbmRhdHMpXCIsXG4gICAgICB1cmw6IFwiaHR0cDovL2RhdGEuYXNzZW1ibGVlLW5hdGlvbmFsZS5mci9zdGF0aWMvb3BlbkRhdGEvcmVwb3NpdG9yeS8xNi9hbW8vYWN0ZXVyc19tYW5kYXRzX29yZ2FuZXNfZGl2aXNlcy9BTU81MF9hY3RldXJzX21hbmRhdHNfb3JnYW5lc19kaXZpc2VzLmpzb24uemlwXCIsXG4gICAgfSxcbiAgICB7XG4gICAgICAvLyBBTU81MCAoWFYpXG4gICAgICAvL1xuICAgICAgLy8gQXR0ZW50aW9uLCBjZSBmaWNoaWVyIG4nZXN0IHBhcyBtaXMgw6Agam91ciByw6lndWxpw6hyZW1lbnQgIVxuICAgICAgLy9cbiAgICAgIC8vIFBvdXIgbGVzIGFjdGV1cnMgOlxuICAgICAgLy8gKiBjJ2VzdCB1biBzb3VzIGVuc2VtYmxlIG9ic29sw6h0ZSBkJ0FNTzMwXG4gICAgICAvLyAqIGlsIG1hbnF1ZSBsZXMgeHNpVHlwZSBhdXggbWFuZGF0c1xuICAgICAgLy9cbiAgICAgIC8vIFBvdXIgbGVzIG9yZ2FuZXMgOlxuICAgICAgLy8gKiBjJ2VzdCB1biBzb3VzIGVuc2VtYmxlIG9ic29sw6h0ZSBkJ0FNTzMwXG4gICAgICAvLyAqIGlsIG1hbnF1ZSBsZXMgeHNpVHlwZVxuICAgICAgLy9cbiAgICAgIC8vIENlIGZpY2hpZXIgbidhcHBvcnRlIGRvbmMgYWJzb2x1bWVudCByaWVuIHBhciByYXBwb3J0IMOgIGwnQU1PMzAsXG4gICAgICAvLyBkb250IGlsIGVzdCB1biBzb3VzIGVuc2VtYmxlIG9ic29sw6h0ZS5cbiAgICAgIGZpbGVuYW1lOiBcIkFNTzUwX2FjdGV1cnNfbWFuZGF0c19vcmdhbmVzX2RpdmlzZXNfWFYuanNvblwiLFxuICAgICAgaWdub3JlRm9yV2ViOiB0cnVlLFxuICAgICAgbGVnaXNsYXR1cmU6IExlZ2lzbGF0dXJlLlF1aW56ZSxcbiAgICAgIHJlcGFpclppcDogKGRhdGFzZXQ6IERhdGFzZXQsIGRhdGFEaXI6IHN0cmluZykgPT4ge1xuICAgICAgICBjb25zdCB0YXJnZXREaXIgPSBwYXRoLmpvaW4oZGF0YURpciwgZGF0YXNldC5maWxlbmFtZSlcbiAgICAgICAgaWYgKGZzLmV4aXN0c1N5bmModGFyZ2V0RGlyKSkge1xuICAgICAgICAgIGZzLnJlbW92ZVN5bmModGFyZ2V0RGlyKVxuICAgICAgICB9XG4gICAgICAgIGZzLm1rZGlyU3luYyh0YXJnZXREaXIpXG4gICAgICAgIGZzLm1vdmVTeW5jKFxuICAgICAgICAgIHBhdGguam9pbihkYXRhRGlyLCBcIm1hbmRhdFwiKSxcbiAgICAgICAgICBwYXRoLmpvaW4odGFyZ2V0RGlyLCBcIm1hbmRhdFwiKSxcbiAgICAgICAgKVxuICAgICAgICBmcy5tb3ZlU3luYyhcbiAgICAgICAgICBwYXRoLmpvaW4oZGF0YURpciwgXCJhY3RldXJcIiksXG4gICAgICAgICAgcGF0aC5qb2luKHRhcmdldERpciwgXCJhY3RldXJcIiksXG4gICAgICAgIClcbiAgICAgICAgZnMubW92ZVN5bmMoXG4gICAgICAgICAgcGF0aC5qb2luKGRhdGFEaXIsIFwib3JnYW5lXCIpLFxuICAgICAgICAgIHBhdGguam9pbih0YXJnZXREaXIsIFwib3JnYW5lXCIpLFxuICAgICAgICApXG4gICAgICB9LFxuICAgICAgc3RydWN0dXJlOiBEYXRhc2V0U3RydWN0dXJlLlNlZ21lbnRlZEZpbGVzLFxuICAgICAgdGl0bGU6XG4gICAgICAgIFwiQWN0ZXVycywgbWFuZGF0cyBldCBvcmdhbmVzIGRlIGxhIFhWw6htZSBsw6lnaXNsYXR1cmUgKGZpY2hpZXJzIHPDqXBhcsOpcywgeSBjb21wcmlzIG1hbmRhdHMpXCIsXG4gICAgICB1cmw6IFwiaHR0cDovL2RhdGEuYXNzZW1ibGVlLW5hdGlvbmFsZS5mci9zdGF0aWMvb3BlbkRhdGEvcmVwb3NpdG9yeS8xNS9hbW8vYWN0ZXVyc19tYW5kYXRzX29yZ2FuZXNfZGl2aXNlcy9BTU81MF9hY3RldXJzX21hbmRhdHNfb3JnYW5lc19kaXZpc2VzX1hWLmpzb24uemlwXCIsXG4gICAgfSxcbiAgXSxcbiAgYWdlbmRhczogW1xuICAgIHtcbiAgICAgIGZpbGVuYW1lOiBcIkFnZW5kYV9YVkkuanNvblwiLFxuICAgICAgbGVnaXNsYXR1cmU6IExlZ2lzbGF0dXJlLlNlaXplLFxuICAgICAgcmVwYWlyWmlwOiAoZGF0YXNldDogRGF0YXNldCwgZGF0YURpcjogc3RyaW5nKSA9PiB7XG4gICAgICAgIGNvbnN0IHRhcmdldERpciA9IHBhdGguam9pbihkYXRhRGlyLCBkYXRhc2V0LmZpbGVuYW1lKVxuICAgICAgICBpZiAoZnMuZXhpc3RzU3luYyh0YXJnZXREaXIpKSB7XG4gICAgICAgICAgZnMucmVtb3ZlU3luYyh0YXJnZXREaXIpXG4gICAgICAgIH1cbiAgICAgICAgZnMubW92ZVN5bmMocGF0aC5qb2luKGRhdGFEaXIsIFwianNvblwiKSwgdGFyZ2V0RGlyKVxuICAgICAgfSxcbiAgICAgIHN0cnVjdHVyZTogRGF0YXNldFN0cnVjdHVyZS5TZWdtZW50ZWRGaWxlcyxcbiAgICAgIHRpdGxlOiBcIkFnZW5kYSBkZSBsYSBYVknDqG1lIGzDqWdpc2xhdHVyZVwiLFxuICAgICAgdXJsOiBcImh0dHA6Ly9kYXRhLmFzc2VtYmxlZS1uYXRpb25hbGUuZnIvc3RhdGljL29wZW5EYXRhL3JlcG9zaXRvcnkvMTYvdnAvcmV1bmlvbnMvQWdlbmRhLmpzb24uemlwXCIsXG4gICAgfSxcbiAgICB7XG4gICAgICBmaWxlbmFtZTogXCJBZ2VuZGFfWFYuanNvblwiLFxuICAgICAgbGVnaXNsYXR1cmU6IExlZ2lzbGF0dXJlLlF1aW56ZSxcbiAgICAgIHJlcGFpclppcDogKGRhdGFzZXQ6IERhdGFzZXQsIGRhdGFEaXI6IHN0cmluZykgPT4ge1xuICAgICAgICBjb25zdCB0YXJnZXREaXIgPSBwYXRoLmpvaW4oZGF0YURpciwgZGF0YXNldC5maWxlbmFtZSlcbiAgICAgICAgaWYgKGZzLmV4aXN0c1N5bmModGFyZ2V0RGlyKSkge1xuICAgICAgICAgIGZzLnJlbW92ZVN5bmModGFyZ2V0RGlyKVxuICAgICAgICB9XG4gICAgICAgIGZzLm1vdmVTeW5jKHBhdGguam9pbihkYXRhRGlyLCBcImpzb25cIiksIHRhcmdldERpcilcbiAgICAgIH0sXG4gICAgICBzdHJ1Y3R1cmU6IERhdGFzZXRTdHJ1Y3R1cmUuU2VnbWVudGVkRmlsZXMsXG4gICAgICB0aXRsZTogXCJBZ2VuZGEgZGUgbGEgWFbDqG1lIGzDqWdpc2xhdHVyZVwiLFxuICAgICAgdXJsOiBcImh0dHA6Ly9kYXRhLmFzc2VtYmxlZS1uYXRpb25hbGUuZnIvc3RhdGljL29wZW5EYXRhL3JlcG9zaXRvcnkvMTUvdnAvcmV1bmlvbnMvQWdlbmRhX1hWLmpzb24uemlwXCIsXG4gICAgfSxcbiAgICB7XG4gICAgICBmaWxlbmFtZTogXCJBZ2VuZGFfWElWLmpzb25cIixcbiAgICAgIGxlZ2lzbGF0dXJlOiBMZWdpc2xhdHVyZS5RdWF0b3J6ZSxcbiAgICAgIHN0cnVjdHVyZTogRGF0YXNldFN0cnVjdHVyZS5TaW5nbGVGaWxlLFxuICAgICAgdGl0bGU6IFwiQWdlbmRhIGRlIGxhIFhJVsOobWUgbMOpZ2lzbGF0dXJlXCIsXG4gICAgICB1cmw6IFwiaHR0cDovL2RhdGEuYXNzZW1ibGVlLW5hdGlvbmFsZS5mci9zdGF0aWMvb3BlbkRhdGEvcmVwb3NpdG9yeS8xNC92cC9yZXVuaW9ucy9BZ2VuZGFfWElWLmpzb24uemlwXCIsXG4gICAgfSxcbiAgXSxcbiAgYW1lbmRlbWVudHM6IFtcbiAgICB7XG4gICAgICBmaWxlbmFtZTogXCJBbWVuZGVtZW50c19YVkkuanNvblwiLFxuICAgICAgbGVnaXNsYXR1cmU6IExlZ2lzbGF0dXJlLlNlaXplLFxuICAgICAgcmVwYWlyWmlwOiAoZGF0YXNldDogRGF0YXNldCwgZGF0YURpcjogc3RyaW5nKSA9PiB7XG4gICAgICAgIGNvbnN0IHRhcmdldERpciA9IHBhdGguam9pbihkYXRhRGlyLCBkYXRhc2V0LmZpbGVuYW1lKVxuICAgICAgICBpZiAoZnMuZXhpc3RzU3luYyh0YXJnZXREaXIpKSB7XG4gICAgICAgICAgZnMucmVtb3ZlU3luYyh0YXJnZXREaXIpXG4gICAgICAgIH1cbiAgICAgICAgZnMubW92ZVN5bmMocGF0aC5qb2luKGRhdGFEaXIsIFwianNvblwiKSwgdGFyZ2V0RGlyKVxuICAgICAgfSxcbiAgICAgIHN0cnVjdHVyZTogRGF0YXNldFN0cnVjdHVyZS5TZWdtZW50ZWRGaWxlcyxcbiAgICAgIHRpdGxlOiBcIkFtZW5kZW1lbnRzIGRlIGxhIFhWScOobWUgbMOpZ2lzbGF0dXJlXCIsXG4gICAgICB1cmw6IFwiaHR0cDovL2RhdGEuYXNzZW1ibGVlLW5hdGlvbmFsZS5mci9zdGF0aWMvb3BlbkRhdGEvcmVwb3NpdG9yeS8xNi9sb2kvYW1lbmRlbWVudHNfZGl2X2xlZ2lzL0FtZW5kZW1lbnRzLmpzb24uemlwXCIsXG4gICAgfSxcbiAgICB7XG4gICAgICBmaWxlbmFtZTogXCJBbWVuZGVtZW50c19YVi5qc29uXCIsXG4gICAgICBsZWdpc2xhdHVyZTogTGVnaXNsYXR1cmUuUXVpbnplLFxuICAgICAgcmVwYWlyWmlwOiAoZGF0YXNldDogRGF0YXNldCwgZGF0YURpcjogc3RyaW5nKSA9PiB7XG4gICAgICAgIGNvbnN0IHRhcmdldERpciA9IHBhdGguam9pbihkYXRhRGlyLCBkYXRhc2V0LmZpbGVuYW1lKVxuICAgICAgICBpZiAoZnMuZXhpc3RzU3luYyh0YXJnZXREaXIpKSB7XG4gICAgICAgICAgZnMucmVtb3ZlU3luYyh0YXJnZXREaXIpXG4gICAgICAgIH1cbiAgICAgICAgZnMubW92ZVN5bmMocGF0aC5qb2luKGRhdGFEaXIsIFwianNvblwiKSwgdGFyZ2V0RGlyKVxuICAgICAgfSxcbiAgICAgIHN0cnVjdHVyZTogRGF0YXNldFN0cnVjdHVyZS5TZWdtZW50ZWRGaWxlcyxcbiAgICAgIHRpdGxlOiBcIkFtZW5kZW1lbnRzIGRlIGxhIFhWw6htZSBsw6lnaXNsYXR1cmVcIixcbiAgICAgIHVybDogXCJodHRwOi8vZGF0YS5hc3NlbWJsZWUtbmF0aW9uYWxlLmZyL3N0YXRpYy9vcGVuRGF0YS9yZXBvc2l0b3J5LzE1L2xvaS9hbWVuZGVtZW50c19sZWdpcy9BbWVuZGVtZW50c19YVi5qc29uLnppcFwiLFxuICAgIH0sXG4gICAgLy8ge1xuICAgIC8vICAgZmlsZW5hbWU6IFwiQW1lbmRlbWVudHNfWElWLmpzb25cIixcbiAgICAvLyAgIGlnbm9yZUZvcldlYjogdHJ1ZSxcbiAgICAvLyAgIGxlZ2lzbGF0dXJlOiBMZWdpc2xhdHVyZS5RdWF0b3J6ZSxcbiAgICAvLyAgIHN0cnVjdHVyZTogRGF0YXNldFN0cnVjdHVyZS5TaW5nbGVGaWxlLFxuICAgIC8vICAgdGl0bGU6IFwiQW1lbmRlbWVudHMgZGUgbGEgWElWw6htZSBsw6lnaXNsYXR1cmVcIixcbiAgICAvLyAgIHVybDpcbiAgICAvLyAgICAgXCJodHRwOi8vZGF0YS5hc3NlbWJsZWUtbmF0aW9uYWxlLmZyL3N0YXRpYy9vcGVuRGF0YS9yZXBvc2l0b3J5LzE0L2xvaS9hbWVuZGVtZW50c19sZWdpc19YSVYvQW1lbmRlbWVudHNfWElWLmpzb24uemlwXCIsXG4gICAgLy8gfSxcbiAgXSxcbiAgZG9zc2llcnNMZWdpc2xhdGlmczogW1xuICAgIHtcbiAgICAgIGZpbGVuYW1lOiBcIkRvc3NpZXJzX0xlZ2lzbGF0aWZzX1hWSS5qc29uXCIsXG4gICAgICBsZWdpc2xhdHVyZTogTGVnaXNsYXR1cmUuU2VpemUsXG4gICAgICByZXBhaXJaaXA6IChkYXRhc2V0OiBEYXRhc2V0LCBkYXRhRGlyOiBzdHJpbmcpID0+IHtcbiAgICAgICAgY29uc3QgdGFyZ2V0RGlyID0gcGF0aC5qb2luKGRhdGFEaXIsIGRhdGFzZXQuZmlsZW5hbWUpXG4gICAgICAgIGlmIChmcy5leGlzdHNTeW5jKHRhcmdldERpcikpIHtcbiAgICAgICAgICBmcy5yZW1vdmVTeW5jKHRhcmdldERpcilcbiAgICAgICAgfVxuICAgICAgICBmcy5tb3ZlU3luYyhwYXRoLmpvaW4oZGF0YURpciwgXCJqc29uXCIpLCB0YXJnZXREaXIpXG4gICAgICB9LFxuICAgICAgc3RydWN0dXJlOiBEYXRhc2V0U3RydWN0dXJlLlNlZ21lbnRlZEZpbGVzLFxuICAgICAgdGl0bGU6IFwiRG9zc2llcnMgbMOpZ2lzbGF0aWZzIGRlIGxhIFhWScOobWUgbMOpZ2lzbGF0dXJlXCIsXG4gICAgICB1cmw6IFwiaHR0cDovL2RhdGEuYXNzZW1ibGVlLW5hdGlvbmFsZS5mci9zdGF0aWMvb3BlbkRhdGEvcmVwb3NpdG9yeS8xNi9sb2kvZG9zc2llcnNfbGVnaXNsYXRpZnMvRG9zc2llcnNfTGVnaXNsYXRpZnMuanNvbi56aXBcIixcbiAgICB9LFxuICAgIHtcbiAgICAgIGZpbGVuYW1lOiBcIkRvc3NpZXJzX0xlZ2lzbGF0aWZzX1hWLmpzb25cIixcbiAgICAgIGxlZ2lzbGF0dXJlOiBMZWdpc2xhdHVyZS5RdWluemUsXG4gICAgICByZXBhaXJaaXA6IChkYXRhc2V0OiBEYXRhc2V0LCBkYXRhRGlyOiBzdHJpbmcpID0+IHtcbiAgICAgICAgY29uc3QgdGFyZ2V0RGlyID0gcGF0aC5qb2luKGRhdGFEaXIsIGRhdGFzZXQuZmlsZW5hbWUpXG4gICAgICAgIGlmIChmcy5leGlzdHNTeW5jKHRhcmdldERpcikpIHtcbiAgICAgICAgICBmcy5yZW1vdmVTeW5jKHRhcmdldERpcilcbiAgICAgICAgfVxuICAgICAgICBmcy5tb3ZlU3luYyhwYXRoLmpvaW4oZGF0YURpciwgXCJqc29uXCIpLCB0YXJnZXREaXIpXG4gICAgICB9LFxuICAgICAgc3RydWN0dXJlOiBEYXRhc2V0U3RydWN0dXJlLlNlZ21lbnRlZEZpbGVzLFxuICAgICAgdGl0bGU6IFwiRG9zc2llcnMgbMOpZ2lzbGF0aWZzIGRlIGxhIFhWw6htZSBsw6lnaXNsYXR1cmVcIixcbiAgICAgIHVybDogXCJodHRwOi8vZGF0YS5hc3NlbWJsZWUtbmF0aW9uYWxlLmZyL3N0YXRpYy9vcGVuRGF0YS9yZXBvc2l0b3J5LzE1L2xvaS9kb3NzaWVyc19sZWdpc2xhdGlmcy9Eb3NzaWVyc19MZWdpc2xhdGlmc19YVi5qc29uLnppcFwiLFxuICAgIH0sXG4gICAge1xuICAgICAgZmlsZW5hbWU6IFwiRG9zc2llcnNfTGVnaXNsYXRpZnNfWElWLmpzb25cIixcbiAgICAgIGlnbm9yZUZvcldlYjogdHJ1ZSxcbiAgICAgIGxlZ2lzbGF0dXJlOiBMZWdpc2xhdHVyZS5RdWF0b3J6ZSxcbiAgICAgIHN0cnVjdHVyZTogRGF0YXNldFN0cnVjdHVyZS5TaW5nbGVGaWxlLFxuICAgICAgdGl0bGU6IFwiRG9zc2llcnMgbMOpZ2lzbGF0aWZzIGRlIGxhIFhJVsOobWUgbMOpZ2lzbGF0dXJlXCIsXG4gICAgICB1cmw6IFwiaHR0cDovL2RhdGEuYXNzZW1ibGVlLW5hdGlvbmFsZS5mci9zdGF0aWMvb3BlbkRhdGEvcmVwb3NpdG9yeS8xNC9sb2kvZG9zc2llcnNfbGVnaXNsYXRpZnMvRG9zc2llcnNfTGVnaXNsYXRpZnNfWElWLmpzb24uemlwXCIsXG4gICAgfSxcbiAgXSxcbiAgc2NydXRpbnM6IFtcbiAgICB7XG4gICAgICBmaWxlbmFtZTogXCJTY3J1dGluc19YVkkuanNvblwiLFxuICAgICAgbGVnaXNsYXR1cmU6IExlZ2lzbGF0dXJlLlNlaXplLFxuICAgICAgcmVwYWlyWmlwOiAoZGF0YXNldDogRGF0YXNldCwgZGF0YURpcjogc3RyaW5nKSA9PiB7XG4gICAgICAgIGNvbnN0IHRhcmdldERpciA9IHBhdGguam9pbihkYXRhRGlyLCBkYXRhc2V0LmZpbGVuYW1lKVxuICAgICAgICBpZiAoZnMuZXhpc3RzU3luYyh0YXJnZXREaXIpKSB7XG4gICAgICAgICAgZnMucmVtb3ZlU3luYyh0YXJnZXREaXIpXG4gICAgICAgIH1cbiAgICAgICAgZnMubW92ZVN5bmMocGF0aC5qb2luKGRhdGFEaXIsIFwianNvblwiKSwgdGFyZ2V0RGlyKVxuICAgICAgfSxcbiAgICAgIHN0cnVjdHVyZTogRGF0YXNldFN0cnVjdHVyZS5TZWdtZW50ZWRGaWxlcyxcbiAgICAgIHRpdGxlOiBcIlNjcnV0aW5zIGRlIGxhIFhWScOobWUgbMOpZ2lzbGF0dXJlXCIsXG4gICAgICB1cmw6IFwiaHR0cDovL2RhdGEuYXNzZW1ibGVlLW5hdGlvbmFsZS5mci9zdGF0aWMvb3BlbkRhdGEvcmVwb3NpdG9yeS8xNi9sb2kvc2NydXRpbnMvU2NydXRpbnMuanNvbi56aXBcIixcbiAgICB9LFxuICAgIHtcbiAgICAgIGZpbGVuYW1lOiBcIlNjcnV0aW5zX1hWLmpzb25cIixcbiAgICAgIGxlZ2lzbGF0dXJlOiBMZWdpc2xhdHVyZS5RdWluemUsXG4gICAgICByZXBhaXJaaXA6IChkYXRhc2V0OiBEYXRhc2V0LCBkYXRhRGlyOiBzdHJpbmcpID0+IHtcbiAgICAgICAgY29uc3QgdGFyZ2V0RGlyID0gcGF0aC5qb2luKGRhdGFEaXIsIGRhdGFzZXQuZmlsZW5hbWUpXG4gICAgICAgIGlmIChmcy5leGlzdHNTeW5jKHRhcmdldERpcikpIHtcbiAgICAgICAgICBmcy5yZW1vdmVTeW5jKHRhcmdldERpcilcbiAgICAgICAgfVxuICAgICAgICBmcy5tb3ZlU3luYyhwYXRoLmpvaW4oZGF0YURpciwgXCJqc29uXCIpLCB0YXJnZXREaXIpXG4gICAgICB9LFxuICAgICAgc3RydWN0dXJlOiBEYXRhc2V0U3RydWN0dXJlLlNlZ21lbnRlZEZpbGVzLFxuICAgICAgdGl0bGU6IFwiU2NydXRpbnMgZGUgbGEgWFbDqG1lIGzDqWdpc2xhdHVyZVwiLFxuICAgICAgdXJsOiBcImh0dHA6Ly9kYXRhLmFzc2VtYmxlZS1uYXRpb25hbGUuZnIvc3RhdGljL29wZW5EYXRhL3JlcG9zaXRvcnkvMTUvbG9pL3NjcnV0aW5zL1NjcnV0aW5zX1hWLmpzb24uemlwXCIsXG4gICAgfSxcbiAgICB7XG4gICAgICBmaWxlbmFtZTogXCJTY3J1dGluc19YSVYuanNvblwiLFxuICAgICAgaWdub3JlRm9yV2ViOiB0cnVlLFxuICAgICAgbGVnaXNsYXR1cmU6IExlZ2lzbGF0dXJlLlF1YXRvcnplLFxuICAgICAgc3RydWN0dXJlOiBEYXRhc2V0U3RydWN0dXJlLlNpbmdsZUZpbGUsXG4gICAgICB0aXRsZTogXCJTY3J1dGlucyBkZSBsYSBYSVbDqG1lIGzDqWdpc2xhdHVyZVwiLFxuICAgICAgdXJsOiBcImh0dHA6Ly9kYXRhLmFzc2VtYmxlZS1uYXRpb25hbGUuZnIvc3RhdGljL29wZW5EYXRhL3JlcG9zaXRvcnkvMTQvbG9pL3NjcnV0aW5zL1NjcnV0aW5zX1hJVi5qc29uLnppcFwiLFxuICAgIH0sXG4gIF0sXG59XG5cbmNvbnN0IGRpcmVjdG9yeTJzY2hlbWE6IGFueSA9IHtcbiAgXCIuKkFnZW5kYV8uKlwiOiBcImFnZW5kYVwiLFxuICBcIi4qU2NydXRpbnNfLipcIjogXCJzY3J1dGluXCIsXG4gIFwiLipBbWVuZGVtZW50c18uKlwiOiBcImFtZW5kZW1lbnRcIixcbiAgXCIuKkRvc3NpZXJzX0xlZ2lzbGF0aWZzXy4qL2RvY3VtZW50c1wiOiBcImRvY3VtZW50XCIsXG4gIFwiLipEb3NzaWVyc19MZWdpc2xhdGlmc18uKi9kb3NzaWVyc1wiOiBcImRvc3NpZXJcIixcbiAgXCIuKmFjdGV1cnNfbWFuZGF0c19vcmdhbmVzL29yZ2FuZXNcIjogXCJvcmdhbmVcIixcbiAgXCIuKmFjdGV1cnNfbWFuZGF0c19vcmdhbmVzL2FjdGV1cnNcIjogXCJhY3RldXJcIixcbiAgXCIuKkFNTzMwX3RvdXNfYWN0ZXVyc190b3VzX21hbmRhdHNfdG91c19vcmdhbmVzX2hpc3RvcmlxdWUuKi9vcmdhbmVzXCI6XG4gICAgXCJvcmdhbmVcIixcbiAgXCIuKkFNTzMwX3RvdXNfYWN0ZXVyc190b3VzX21hbmRhdHNfdG91c19vcmdhbmVzX2hpc3RvcmlxdWUuKi9hY3RldXJzXCI6XG4gICAgXCJhY3RldXJcIixcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldERhdGFzZXRzKCk6IGFueSB7XG4gIHJldHVybiBbXG4gICAgXCJBZ2VuZGFfWElWXCIsXG4gICAgXCJBZ2VuZGFfWFZcIixcbiAgICBcIkFnZW5kYV9YVklcIixcbiAgICBcIlNjcnV0aW5zX1hJVlwiLFxuICAgIFwiU2NydXRpbnNfWFZcIixcbiAgICBcIlNjcnV0aW5zX1hWSVwiLFxuICAgIFwiQW1lbmRlbWVudHNfWElWXCIsXG4gICAgXCJBbWVuZGVtZW50c19YVlwiLFxuICAgIFwiQW1lbmRlbWVudHNfWFZJXCIsXG4gICAgXCJEb3NzaWVyc19MZWdpc2xhdGlmc19YSVZcIixcbiAgICBcIkRvc3NpZXJzX0xlZ2lzbGF0aWZzX1hWXCIsXG4gICAgXCJEb3NzaWVyc19MZWdpc2xhdGlmc19YVklcIixcbiAgICBcIkFNTzMwX3RvdXNfYWN0ZXVyc190b3VzX21hbmRhdHNfdG91c19vcmdhbmVzX2hpc3RvcmlxdWVcIixcbiAgICBcImFjdGV1cnNfbWFuZGF0c19vcmdhbmVzXCIsXG4gIF1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkRGF0YXNldChkaXI6IGFueSk6IGFueSB7XG4gIGZvciAoY29uc3QgZGF0YXNldCBvZiBnZXREYXRhc2V0cygpKSB7XG4gICAgaWYgKGRpci5pbmNsdWRlcyhkYXRhc2V0KSkgcmV0dXJuIHRydWVcbiAgfVxuICByZXR1cm4gZmFsc2Vcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFNjaGVtYXMoKTogYW55IHtcbiAgcmV0dXJuIE9iamVjdC52YWx1ZXMoZGlyZWN0b3J5MnNjaGVtYSlcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRhdGFzZXREaXJlY3RvcnlTY2hlbWEoZGF0YXNldDogc3RyaW5nKTogYW55IHtcbiAgbGV0IGRpcmVjdG9yaWVzOiBhbnlcbiAgaWYgKGRhdGFzZXQuaW5jbHVkZXMoXCJEb3NzaWVyc19MZWdpc2xhdGlmc19cIikpIHtcbiAgICBkaXJlY3RvcmllcyA9IFtgJHtkYXRhc2V0fS9kb2N1bWVudHNgLCBgJHtkYXRhc2V0fS9kb3NzaWVyc2BdXG4gIH0gZWxzZSBpZiAoXG4gICAgZGF0YXNldC5pbmNsdWRlcyhcImFjdGV1cnNfbWFuZGF0c19vcmdhbmVzXCIpIHx8XG4gICAgZGF0YXNldC5pbmNsdWRlcyhcIkFNTzMwX3RvdXNfYWN0ZXVyc190b3VzX21hbmRhdHNfdG91c19vcmdhbmVzX2hpc3RvcmlxdWVcIilcbiAgKSB7XG4gICAgZGlyZWN0b3JpZXMgPSBbYCR7ZGF0YXNldH0vb3JnYW5lc2AsIGAke2RhdGFzZXR9L2FjdGV1cnNgXVxuICB9IGVsc2Uge1xuICAgIGRpcmVjdG9yaWVzID0gW2RhdGFzZXRdXG4gIH1cblxuICBsZXQgcmVzdWx0cyA9IFtdXG4gIGZvciAoY29uc3QgZGlyZWN0b3J5IG9mIGRpcmVjdG9yaWVzKSB7XG4gICAgZm9yIChjb25zdCByZSBvZiBPYmplY3Qua2V5cyhkaXJlY3Rvcnkyc2NoZW1hKSkge1xuICAgICAgaWYgKG5ldyBSZWdFeHAocmUpLmV4ZWMoZGlyZWN0b3J5KSlcbiAgICAgICAgcmVzdWx0cy5wdXNoKFtgJHtkaXJlY3Rvcnl9LyoqLyouanNvbmAsIGRpcmVjdG9yeTJzY2hlbWFbcmVdXSlcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdHNcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZpbGVEYXRhc2V0VXJsKGZpbGVuYW1lOiBzdHJpbmcpOiBbc3RyaW5nLCBzdHJpbmddIHwgbnVsbCB7XG4gIGNvbnN0IHJlID0gXCJeLiovKC4qKV9uZXR0b3llLyguKilcIlxuICBjb25zdCBtYXRjaCA9IG5ldyBSZWdFeHAocmUpLmV4ZWMoZmlsZW5hbWUpXG4gIGlmIChtYXRjaCA9PSBudWxsKSByZXR1cm4gbnVsbFxuICBsZXQgW2RhdGFzZXQsIGZpbGVdID0gW21hdGNoWzFdLCBtYXRjaFsyXV1cbiAgaWYgKGRhdGFzZXQgPT0gXCJBTU8zMF90b3VzX2FjdGV1cnNfdG91c19tYW5kYXRzX3RvdXNfb3JnYW5lc19oaXN0b3JpcXVlXCIpXG4gICAgZGF0YXNldCA9IFwiYWN0ZXVyc19tYW5kYXRzX29yZ2FuZXNcIlxuICByZXR1cm4gW2RhdGFzZXQsIGZpbGVdXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkaWZmVXBzdHJlYW0oZmlsZW5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IGRhdGFzZXRVcmwgPSBmaWxlRGF0YXNldFVybChmaWxlbmFtZSlcbiAgaWYgKGRhdGFzZXRVcmwgPT0gbnVsbCkgcmV0dXJuIGZpbGVuYW1lXG4gIGNvbnN0IFtkYXRhc2V0LCBmaWxlXSA9IGRhdGFzZXRVcmxcbiAgY29uc3Qgc3VtID0gY3JlYXRlSGFzaChcInNoYTFcIikudXBkYXRlKGZpbGUpLmRpZ2VzdChcImhleFwiKS50b1N0cmluZygpXG4gIHJldHVybiBgWyR7ZmlsZX1dKGh0dHBzOi8vZ2l0LmVuLXJvb3Qub3JnL3RyaWNvdGV1c2VzL2RhdGEudHJpY290ZXVzZXMuZnIvJHtkYXRhc2V0fS8tL2NvbXBhcmUvdXBzdHJlYW0uLi5tYXN0ZXIjJHtzdW19KWBcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1hc3RlclVybChmaWxlbmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3QgZGF0YXNldFVybCA9IGZpbGVEYXRhc2V0VXJsKGZpbGVuYW1lKVxuICBpZiAoZGF0YXNldFVybCA9PSBudWxsKSByZXR1cm4gZmlsZW5hbWVcbiAgY29uc3QgW2RhdGFzZXQsIGZpbGVdID0gZGF0YXNldFVybFxuICByZXR1cm4gYFske2ZpbGV9XShodHRwczovL2dpdC5lbi1yb290Lm9yZy90cmljb3RldXNlcy9kYXRhLnRyaWNvdGV1c2VzLmZyLyR7ZGF0YXNldH0vLS90cmVlL21hc3Rlci8ke2ZpbGV9KWBc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
@@ -632,21 +632,12 @@ var ActesDocumentation = /*#__PURE__*/function () {
632
632
  value: function validateLevel(c2p, path) {
633
633
  (0, _assert["default"])(c2p._match_count_ > 0, "".concat(path, " is never used"));
634
634
 
635
- var _iterator7 = _createForOfIteratorHelper(Object.entries(c2p)),
636
- _step7;
635
+ for (var _i3 = 0, _arr = Object.entries(c2p); _i3 < _arr.length; _i3++) {
636
+ var _arr$_i = _slicedToArray(_arr[_i3], 2),
637
+ key = _arr$_i[0],
638
+ value = _arr$_i[1];
637
639
 
638
- try {
639
- for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) {
640
- var _step7$value = _slicedToArray(_step7.value, 2),
641
- key = _step7$value[0],
642
- value = _step7$value[1];
643
-
644
- if (value != null && value.constructor.name == "Code2Pattern") this.validateLevel(value, path.concat([key]));
645
- }
646
- } catch (err) {
647
- _iterator7.e(err);
648
- } finally {
649
- _iterator7.f();
640
+ if (value != null && value.constructor.name == "Code2Pattern") this.validateLevel(value, path.concat([key]));
650
641
  }
651
642
  }
652
643
  }, {
@@ -694,12 +685,12 @@ var ActesDocumentation = /*#__PURE__*/function () {
694
685
  value: function printLevel(actes, sections, c2p, parent) {
695
686
  var keys = this.orderedCodes(Object.keys(actes), c2p, parent);
696
687
 
697
- var _iterator8 = _createForOfIteratorHelper(keys),
698
- _step8;
688
+ var _iterator7 = _createForOfIteratorHelper(keys),
689
+ _step7;
699
690
 
700
691
  try {
701
- for (_iterator8.s(); !(_step8 = _iterator8.n()).done;) {
702
- var key = _step8.value;
692
+ for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) {
693
+ var key = _step7.value;
703
694
  var value = actes[key];
704
695
  var name = Array.from(value.name).join(", ");
705
696
  name = this.renameCMP(key, name);
@@ -712,24 +703,24 @@ var ActesDocumentation = /*#__PURE__*/function () {
712
703
  if (Object.keys(value.actes).length > 0) this.printLevel(value.actes, sections.substring(1), c2p[key], key);
713
704
  }
714
705
  } catch (err) {
715
- _iterator8.e(err);
706
+ _iterator7.e(err);
716
707
  } finally {
717
- _iterator8.f();
708
+ _iterator7.f();
718
709
  }
719
710
  }
720
711
  }, {
721
712
  key: "printCodes",
722
713
  value: function printCodes() {
723
- for (var _i3 = 0, _Object$keys = Object.keys(this.codes); _i3 < _Object$keys.length; _i3++) {
724
- var key = _Object$keys[_i3];
714
+ for (var _i4 = 0, _Object$keys = Object.keys(this.codes); _i4 < _Object$keys.length; _i4++) {
715
+ var key = _Object$keys[_i4];
725
716
  console.log(".. _".concat(key, "TOC: http://"));
726
717
  }
727
718
  }
728
719
  }, {
729
720
  key: "printAnchorsIndex",
730
721
  value: function printAnchorsIndex() {
731
- for (var _i4 = 0, _Array$from3 = Array.from(this.anchors); _i4 < _Array$from3.length; _i4++) {
732
- var code = _Array$from3[_i4];
722
+ for (var _i5 = 0, _Array$from3 = Array.from(this.anchors); _i5 < _Array$from3.length; _i5++) {
723
+ var code = _Array$from3[_i5];
733
724
  console.log("* :ref:`".concat(code, " <").concat(code, ">`"));
734
725
  }
735
726
  }
@@ -746,28 +737,19 @@ var ActesDocumentation = /*#__PURE__*/function () {
746
737
  value: function print() {
747
738
  this.anchorsPrinted = {};
748
739
 
749
- var _iterator9 = _createForOfIteratorHelper(Object.entries(this.procedures)),
750
- _step9;
751
-
752
- try {
753
- for (_iterator9.s(); !(_step9 = _iterator9.n()).done;) {
754
- var _step9$value = _slicedToArray(_step9.value, 2),
755
- key = _step9$value[0],
756
- actes = _step9$value[1];
757
-
758
- var code = key.replace(/ +/g, "_");
759
- this.codes[code] = null;
760
- var aggregated = this.getAggregated(key);
761
- var title = "`".concat(key, " <").concat(code, "TOC_>`__").concat(aggregated);
762
- console.log(title);
763
- var underline = new Array(title.length + 1).join("=");
764
- console.log(underline);
765
- this.printLevel(actes, "-~.'", this.code2pattern[key], null);
766
- }
767
- } catch (err) {
768
- _iterator9.e(err);
769
- } finally {
770
- _iterator9.f();
740
+ for (var _i6 = 0, _arr2 = Object.entries(this.procedures); _i6 < _arr2.length; _i6++) {
741
+ var _arr2$_i = _slicedToArray(_arr2[_i6], 2),
742
+ key = _arr2$_i[0],
743
+ actes = _arr2$_i[1];
744
+
745
+ var code = key.replace(/ +/g, "_");
746
+ this.codes[code] = null;
747
+ var aggregated = this.getAggregated(key);
748
+ var title = "`".concat(key, " <").concat(code, "TOC_>`__").concat(aggregated);
749
+ console.log(title);
750
+ var underline = new Array(title.length + 1).join("=");
751
+ console.log(underline);
752
+ this.printLevel(actes, "-~.'", this.code2pattern[key], null);
771
753
  }
772
754
 
773
755
  this.printCodes();
@@ -791,4 +773,4 @@ function main(argv) {
791
773
 
792
774
 
793
775
  if (process.argv[1].endsWith("document_dossiers_legislatifs.ts")) process.exit(main(process.argv));
794
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJwYXJzZUFyZ3MiLCJhcmd2Iiwib3B0aW9uc0RlZmluaXRpb25zIiwiZGVzY3JpcHRpb24iLCJkZWZhdWx0T3B0aW9uIiwibXVsdGlwbGUiLCJuYW1lIiwidHlwZSIsIlN0cmluZyIsIkJvb2xlYW4iLCJzZWN0aW9ucyIsImhlYWRlciIsImNvbnRlbnQiLCJvcHRpb25MaXN0Iiwib3B0aW9ucyIsImNvbW1hbmRMaW5lQXJncyIsImNvbnNvbGUiLCJlcnJvciIsImhlbHAiLCJ1c2FnZSIsImNvbW1hbmRMaW5lVXNhZ2UiLCJ3YXJuIiwiZXFTZXQiLCJhcyIsImJzIiwic2l6ZSIsImEiLCJoYXMiLCJDb2RlMlBhdHRlcm4iLCJwYXR0ZXJuIiwiY2hpbGRyZW4iLCJfcGF0dGVybl8iLCJfbWF0Y2hfY291bnRfIiwiT2JqZWN0IiwiYXNzaWduIiwiQ29kZTJQYXR0ZXJuQ29tRm9uZCIsIkxlY3R1cmVNYXBwaW5nIiwiU2V0IiwiYWN0ZSIsImNvZGVzIiwiYWRkIiwiY29kZUFjdGUiLCJnZXRUeXBlIiwibGliZWxsZUFjdGUiLCJub21DYW5vbmlxdWUiLCJsaWJlbGxlIiwidHlwZXMiLCJBcnJheSIsImZyb20iLCJjIiwiY29kZSIsImxvZyIsImpvaW4iLCJtYXRjaCIsImNvZGVzX2xlY3R1cmVfcmVnZXhwIiwiRXJyb3IiLCJyZXBsYWNlIiwiaXNMZWN0dXJlIiwibWFwIiwiUmVnRXhwIiwiY29kZXNfbGVjdHVyZSIsIkxlY3R1cmVNYXBwZXIiLCJtYXBwaW5nIiwiZ2V0Q29kZUFjdGUiLCJ1bmRlZmluZWQiLCJsZWN0dXJlcyIsInJlbWFwIiwibWVyZ2VDb2RlcyIsInByaW50QW5jaG9ycyIsImdldENvZGVzIiwiQWN0ZXNEb2N1bWVudGF0aW9uIiwic2FuaXR5Q2hlY2tzIiwidmVyYm9zZSIsImxlY3R1cmUiLCJDTVAiLCJDQyIsIlBST00iLCJBTjIxIiwiQU5MVU5JIiwiUsOpc29sdXRpb24iLCJBTjIwIiwiRVUiLCJJbW11bml0w6kiLCJwcm9jZWR1cmVzIiwiY29kZTJwYXR0ZXJuIiwiZGF0YSIsImFjdGlvbiIsImdldEZpbGVzIiwiZmlsZSIsImRvc3NpZXIiLCJsb2FkIiwicHJvY2VkdXJlIiwicmVtYXBQcm9jZWR1cmUiLCJwcm9jZWR1cmVQYXJsZW1lbnRhaXJlIiwiYWN0ZXNMZWdpc2xhdGlmcyIsIndhbGtGaWxlcyIsIl9hY3RlcyIsIl9jMnAiLCJfcGFyZW50IiwiY29sbGVjdCIsImFjdGVzIiwiYzJwIiwicGFyZW50IiwibWVyZ2UiLCJ2YWxpZGF0ZSIsInJlc3VsdHMiLCJsZWN0dXJlTWFwcGVyIiwicHVzaCIsIm1lcmdlX3Byb2NlZHVyZXMiLCJNYXAiLCJyZW1hcHBlZFByb2NlZHVyZXMiLCJnZXQiLCJvcmRlcmVkIiwieCIsImFzc2VydCIsInNlcXVlbmNlIiwic2hvcnRDb2RlIiwieHNpVHlwZSIsImwiLCJyZW1hcEFjdGVzIiwidmFsaWRhdGVDaHJvbm9sb2d5IiwibWVyZ2VBY3RlIiwiY29sbGVjdEFjdGVzIiwicGF0aCIsImVudHJpZXMiLCJrZXkiLCJ2YWx1ZSIsImNvbnN0cnVjdG9yIiwidmFsaWRhdGVMZXZlbCIsImNvbmNhdCIsImVudHJ5IiwidGl0bGUiLCJ1bmRlcmxpbmUiLCJsZW5ndGgiLCJhbmNob3JzUHJpbnRlZCIsImFuY2hvcnMiLCJzdGFydHNXaXRoIiwiZW5kc1dpdGgiLCJrZXlzIiwib3JkZXJlZENvZGVzIiwicmVuYW1lQ01QIiwiYWRkQW5jaG9ycyIsInByaW50RW50cnkiLCJwcmludExldmVsIiwic3Vic3RyaW5nIiwicmVtYXBwZWQiLCJhZ2dyZWdhdGVkIiwiZ2V0QWdncmVnYXRlZCIsInByaW50Q29kZXMiLCJwcmludEFuY2hvcnNJbmRleCIsIm1haW4iLCJkb2MiLCJjb2xsZWN0RmlsZXMiLCJwcm9jZXNzRmlsZXMiLCJwcmludCIsInByb2Nlc3MiLCJleGl0Il0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NjcmlwdHMvZG9jdW1lbnRfZG9zc2llcnNfbGVnaXNsYXRpZnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGNvbW1hbmRMaW5lQXJncyBmcm9tIFwiY29tbWFuZC1saW5lLWFyZ3NcIlxuaW1wb3J0IGNvbW1hbmRMaW5lVXNhZ2UgZnJvbSBcImNvbW1hbmQtbGluZS11c2FnZVwiXG5pbXBvcnQgYXNzZXJ0IGZyb20gXCJhc3NlcnRcIlxuaW1wb3J0IHsgbG9hZCwgZ2V0RmlsZXMgfSBmcm9tIFwiLi4vZmlsZV9zeXN0ZW1zXCJcblxuZnVuY3Rpb24gcGFyc2VBcmdzKGFyZ3Y6IHN0cmluZ1tdKTogYW55IHtcbiAgY29uc3Qgb3B0aW9uc0RlZmluaXRpb25zID0gW1xuICAgIHtcbiAgICAgIGRlc2NyaXB0aW9uOiBcInBhdGhuYW1lIHRvIGEgSlNPTiBmaWxlIG9yIGEgZ2xvYiBwYXR0ZXJuIHRvIEpTT04gZmlsZXNcIixcbiAgICAgIGRlZmF1bHRPcHRpb246IHRydWUsXG4gICAgICBtdWx0aXBsZTogdHJ1ZSxcbiAgICAgIG5hbWU6IFwiZGF0YVwiLFxuICAgICAgdHlwZTogU3RyaW5nLFxuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogXCJuby1zYW5pdHktY2hlY2tzXCIsXG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgZGVzY3JpcHRpb246IFwiRG8gbm90IHBlcmZvcm0gc2FuaXR5IGNoZWNrcy5cIixcbiAgICB9LFxuICAgIHtcbiAgICAgIG5hbWU6IFwidmVyYm9zZVwiLFxuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgIGRlc2NyaXB0aW9uOiBcImluY3JlYXNlIHZlcmJvc2l0eVwiLFxuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogXCJoZWxwXCIsXG4gICAgICBkZXNjcmlwdGlvbjogXCJQcmludCB0aGlzIHVzYWdlIGd1aWRlLlwiLFxuICAgIH0sXG4gIF1cbiAgY29uc3Qgc2VjdGlvbnMgPSBbXG4gICAge1xuICAgICAgaGVhZGVyOiBcIkFpZGUgw6AgbGEgZG9jdW1lbnRhdGlvbiBkdSBkb3NzaWVyIGzDqWdpc2xhdGlmXCIsXG4gICAgICBjb250ZW50OiBcIkfDqW7DqHJlIHVuZSBoacOpcmFyY2hpZSBkZXMgYWN0ZXMgbMOpZ2lzbGF0aWZzXCIsXG4gICAgfSxcbiAgICB7XG4gICAgICBoZWFkZXI6IFwiT3B0aW9uc1wiLFxuICAgICAgb3B0aW9uTGlzdDogb3B0aW9uc0RlZmluaXRpb25zLFxuICAgIH0sXG4gIF1cbiAgY29uc3Qgb3B0aW9ucyA9IGNvbW1hbmRMaW5lQXJncyhvcHRpb25zRGVmaW5pdGlvbnMsIHtcbiAgICBhcmd2OiBhcmd2LFxuICB9KVxuICBpZiAoIShcImhlbHBcIiBpbiBvcHRpb25zKSAmJiAhKFwiZGF0YVwiIGluIG9wdGlvbnMpKSB7XG4gICAgY29uc29sZS5lcnJvcihcIi0tZGF0YSBpcyBtYW5kYXRvcnlcIilcbiAgICBvcHRpb25zLmhlbHAgPSB0cnVlXG4gIH1cbiAgaWYgKFwiaGVscFwiIGluIG9wdGlvbnMpIHtcbiAgICBjb25zdCB1c2FnZSA9IGNvbW1hbmRMaW5lVXNhZ2Uoc2VjdGlvbnMpXG4gICAgY29uc29sZS53YXJuKHVzYWdlKVxuICAgIHJldHVybiBudWxsXG4gIH1cbiAgcmV0dXJuIG9wdGlvbnNcbn1cblxuZnVuY3Rpb24gZXFTZXQoYXM6IFNldDxzdHJpbmc+LCBiczogU2V0PHN0cmluZz4pOiBib29sZWFuIHtcbiAgaWYgKGFzLnNpemUgIT09IGJzLnNpemUpIHJldHVybiBmYWxzZVxuICBmb3IgKHZhciBhIG9mIGFzKSBpZiAoIWJzLmhhcyhhKSkgcmV0dXJuIGZhbHNlXG4gIHJldHVybiB0cnVlXG59XG5cbmNsYXNzIENvZGUyUGF0dGVybiB7XG4gIF9wYXR0ZXJuXzogYW55XG4gIF9tYXRjaF9jb3VudF86IG51bWJlclxuICBjb25zdHJ1Y3RvcihwYXR0ZXJuOiBhbnksIGNoaWxkcmVuOiBhbnkpIHtcbiAgICB0aGlzLl9wYXR0ZXJuXyA9IHBhdHRlcm5cbiAgICB0aGlzLl9tYXRjaF9jb3VudF8gPSAwXG4gICAgT2JqZWN0LmFzc2lnbih0aGlzLCBjaGlsZHJlbilcbiAgfVxufVxuXG5jbGFzcyBDb2RlMlBhdHRlcm5Db21Gb25kIGV4dGVuZHMgQ29kZTJQYXR0ZXJuIHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoXCJeL1NBSVNJRS8oL05PTUlOLykqKC9SRVVOSU9OLykqKC9SQVBQT1JULykqJFwiLCB7fSlcbiAgfVxufVxuXG5jbGFzcyBMZWN0dXJlTWFwcGluZyB7XG4gIGxpYmVsbGU6IGFueSA9IHt9XG4gIGNvZGVzOiBhbnkgPSBuZXcgU2V0KClcblxuICBzdGF0aWMgY29kZXNfbGVjdHVyZTogc3RyaW5nW10gPSBbXG4gICAgXCJBTjFcIixcbiAgICBcIlNOMVwiLFxuICAgIFwiQU5OTEVDXCIsXG4gICAgXCJTTk5MRUNcIixcbiAgICBcIkFOTERFRlwiLFxuICAgIFwiQU4yXCIsXG4gICAgXCJTTjJcIixcbiAgICBcIlNOM1wiLFxuICBdXG4gIHN0YXRpYyBjb2Rlc19sZWN0dXJlX3JlZ2V4cDogYW55ID0gbmV3IFJlZ0V4cChcbiAgICBcIl4oPzpcIiArIExlY3R1cmVNYXBwaW5nLmNvZGVzX2xlY3R1cmUuam9pbihcInxcIikgKyBcIikoLS4qKT8kXCIsXG4gIClcblxuICBzdGF0aWMgaXNMZWN0dXJlKGFjdGU6IGFueSkge1xuICAgIHJldHVybiBhY3RlLmNvZGVBY3RlLm1hdGNoKExlY3R1cmVNYXBwaW5nLmNvZGVzX2xlY3R1cmVfcmVnZXhwKVxuICB9XG5cbiAgc3RhdGljIGdldFR5cGUoYWN0ZTogYW55KSB7XG4gICAgaWYgKGFjdGUuY29kZUFjdGUubWF0Y2goL15BTi8pKSByZXR1cm4gXCJBTlwiXG4gICAgZWxzZSBpZiAoYWN0ZS5jb2RlQWN0ZS5tYXRjaCgvXlNOLykpIHJldHVybiBcIlNOXCJcbiAgICBlbHNlIHRocm93IEVycm9yKGAke2FjdGUuY29kZUFjdGV9IGRvZXMgbm90IHN0YXJ0IHdpdGggQU4gb3IgU05gKVxuICB9XG5cbiAgc3RhdGljIG1hcChjb2RlQWN0ZTogYW55KSB7XG4gICAgcmV0dXJuIGNvZGVBY3RlLnJlcGxhY2UoTGVjdHVyZU1hcHBpbmcuY29kZXNfbGVjdHVyZV9yZWdleHAsIGBsZWN0dXJlJDFgKVxuICB9XG5cbiAgc3RhdGljIGdldENvZGVBY3RlKGFjdGU6IGFueSkge1xuICAgIGlmICghTGVjdHVyZU1hcHBpbmcuaXNMZWN0dXJlKGFjdGUpKSByZXR1cm5cblxuICAgIHJldHVybiBMZWN0dXJlTWFwcGluZy5tYXAoYWN0ZS5jb2RlQWN0ZSlcbiAgfVxuXG4gIGFkZChhY3RlOiBhbnkpIHtcbiAgICB0aGlzLmNvZGVzLmFkZChhY3RlLmNvZGVBY3RlKVxuXG4gICAgY29uc3QgdHlwZSA9IExlY3R1cmVNYXBwaW5nLmdldFR5cGUoYWN0ZSlcblxuICAgIGlmICghKGFjdGUubGliZWxsZUFjdGUubm9tQ2Fub25pcXVlIGluIHRoaXMubGliZWxsZSkpXG4gICAgICB0aGlzLmxpYmVsbGVbYWN0ZS5saWJlbGxlQWN0ZS5ub21DYW5vbmlxdWVdID0gbmV3IFNldCgpXG4gICAgdGhpcy5saWJlbGxlW2FjdGUubGliZWxsZUFjdGUubm9tQ2Fub25pcXVlXS5hZGQodHlwZSlcbiAgfVxuXG4gIHJlbWFwKGFjdGU6IGFueSwgY29kZUFjdGU6IHN0cmluZykge1xuICAgIGFjdGUuY29kZUFjdGUgPSBjb2RlQWN0ZVxuXG4gICAgbGV0IHR5cGVzID0gdGhpcy5saWJlbGxlW2FjdGUubGliZWxsZUFjdGUubm9tQ2Fub25pcXVlXVxuICAgIGlmICghKHR5cGVzLmhhcyhcIlNOXCIpICYmIHR5cGVzLmhhcyhcIkFOXCIpKSkge1xuICAgICAgaWYgKHR5cGVzLmhhcyhcIlNOXCIpKSBhY3RlLmxpYmVsbGVBY3RlLm5vbUNhbm9uaXF1ZSArPSBcIiAoU8OpbmF0KVwiXG4gICAgICBlbHNlIGlmICh0eXBlcy5oYXMoXCJBTlwiKSlcbiAgICAgICAgYWN0ZS5saWJlbGxlQWN0ZS5ub21DYW5vbmlxdWUgKz0gXCIgKEFzc2VtYmzDqWUgTmF0aW9uYWxlKVwiXG4gICAgfVxuICB9XG5cbiAgbWVyZ2VDb2Rlcyhjb2RlczogYW55KSB7XG4gICAgZm9yIChjb25zdCBjIG9mIEFycmF5LmZyb20odGhpcy5jb2RlcykpIGNvZGVzLmFkZChjKVxuICB9XG5cbiAgcHJpbnRBbmNob3JzKCkge1xuICAgIGZvciAoY29uc3QgY29kZSBvZiBBcnJheS5mcm9tKHRoaXMuY29kZXMpKSBjb25zb2xlLmxvZyhgLi4gXyR7Y29kZX06YClcbiAgfVxuXG4gIGdldENvZGVzKCkge1xuICAgIHJldHVybiBBcnJheS5mcm9tKHRoaXMuY29kZXMpLmpvaW4oXCIsXCIpXG4gIH1cbn1cblxuY2xhc3MgTGVjdHVyZU1hcHBlciB7XG4gIG1hcHBpbmc6IGFueSA9IHt9XG5cbiAgaGFzKGNvZGVBY3RlOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gY29kZUFjdGUgaW4gdGhpcy5tYXBwaW5nXG4gIH1cblxuICBjb2xsZWN0KGFjdGU6IGFueSkge1xuICAgIGNvbnN0IGNvZGVBY3RlID0gTGVjdHVyZU1hcHBpbmcuZ2V0Q29kZUFjdGUoYWN0ZSlcbiAgICBpZiAoY29kZUFjdGUgIT0gdW5kZWZpbmVkKSB7XG4gICAgICBsZXQgbGVjdHVyZXMgPSB0aGlzLm1hcHBpbmdcbiAgICAgIGlmICghKGNvZGVBY3RlIGluIGxlY3R1cmVzKSkgbGVjdHVyZXNbY29kZUFjdGVdID0gbmV3IExlY3R1cmVNYXBwaW5nKClcbiAgICAgIGxlY3R1cmVzW2NvZGVBY3RlXS5hZGQoYWN0ZSlcbiAgICB9XG4gIH1cblxuICByZW1hcChhY3RlOiBhbnkpIHtcbiAgICBjb25zdCBjb2RlQWN0ZSA9IExlY3R1cmVNYXBwaW5nLmdldENvZGVBY3RlKGFjdGUpXG4gICAgaWYgKGNvZGVBY3RlICE9IHVuZGVmaW5lZCkgdGhpcy5tYXBwaW5nW2NvZGVBY3RlXS5yZW1hcChhY3RlLCBjb2RlQWN0ZSlcbiAgfVxuXG4gIG1lcmdlQ29kZXMoY29kZXM6IGFueSwgY29kZUFjdGU6IHN0cmluZykge1xuICAgIHRoaXMubWFwcGluZ1tjb2RlQWN0ZV0ubWVyZ2VDb2Rlcyhjb2RlcylcbiAgfVxuXG4gIHByaW50QW5jaG9ycyhjb2RlQWN0ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5tYXBwaW5nW2NvZGVBY3RlXS5wcmludEFuY2hvcnMoKVxuICB9XG5cbiAgZ2V0Q29kZXMoY29kZUFjdGU6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLm1hcHBpbmdbY29kZUFjdGVdLmdldENvZGVzKClcbiAgfVxufVxuXG5jbGFzcyBBY3Rlc0RvY3VtZW50YXRpb24ge1xuICB2ZXJib3NlOiBib29sZWFuXG4gIHNhbml0eUNoZWNrczogYm9vbGVhblxuICBsZWN0dXJlTWFwcGVyOiBhbnkgPSBuZXcgTGVjdHVyZU1hcHBlcigpXG4gIHJlbWFwcGVkUHJvY2VkdXJlczogYW55ID0ge31cbiAgYW5jaG9yc1ByaW50ZWQ6IGFueSA9IHt9XG4gIGFuY2hvcnM6IGFueSA9IG5ldyBTZXQoKVxuICBjb2RlczogYW55ID0ge31cbiAgcHJvY2VkdXJlczogYW55ID0gbnVsbFxuICBjb2RlMnBhdHRlcm46IGFueSA9IG5ldyBDb2RlMlBhdHRlcm4obnVsbCwge1xuICAgIFwiUHJvY8OpZHVyZSBsw6lnaXNsYXRpdmVcIjogbmV3IENvZGUyUGF0dGVybihcbiAgICAgIFwiXigoKC9sZWN0dXJlLykrKXwoKC9sZWN0dXJlLykrL0NNUC8oL2xlY3R1cmUvKSopKSgvQ0MvKT8oL1BST00vKT8oL0FOLUFQUExJLyk/JFwiLFxuICAgICAge1xuICAgICAgICBsZWN0dXJlOiBuZXcgQ29kZTJQYXR0ZXJuKFxuICAgICAgICAgIFwiXigvREVQT1QvKT8oL0RQVExFVFRSRUNULyk/KC9FVEkvKT8oL0FWQ0UvKT8oL0RHVlQvKT8oL0FDSU4vKT8oL01PVElPTi8pKigvUFJPQ0FDQy8pPygvQ09NLyk/KCgvREVCQVRTLykrKT8oL1JUUklOSS8pPyRcIixcbiAgICAgICAgICB7XG4gICAgICAgICAgICBcImxlY3R1cmUtQ09NXCI6IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9GT05EL3wvQVZJUy8pKyRcIiwge1xuICAgICAgICAgICAgICBcImxlY3R1cmUtQ09NLUZPTkRcIjogbmV3IENvZGUyUGF0dGVybkNvbUZvbmQoKSxcbiAgICAgICAgICAgICAgXCJsZWN0dXJlLUNPTS1BVklTXCI6IG5ldyBDb2RlMlBhdHRlcm5Db21Gb25kKCksXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIFwibGVjdHVyZS1ERUJBVFNcIjogbmV3IENvZGUyUGF0dGVybihcbiAgICAgICAgICAgICAgXCJeKC9TRUFOQ0UvKSooKC9NT1RJT04vKT8oL01PVElPTi1WT1RFLykrKT8oL0RFQy8pPyRcIixcbiAgICAgICAgICAgICAge30sXG4gICAgICAgICAgICApLFxuICAgICAgICAgIH0sXG4gICAgICAgICksXG4gICAgICAgIENNUDogbmV3IENvZGUyUGF0dGVybihcbiAgICAgICAgICBcIl4oL0RFUE9UL3wvU0FJU0lFLyl7MSwyfSgvQ09NLyk/KC9ERUMvKT8oL0RFQkFUUy1BTi8vREVCQVRTLVNOLyk/XCIsXG4gICAgICAgICAge1xuICAgICAgICAgICAgXCJDTVAtQ09NXCI6IG5ldyBDb2RlMlBhdHRlcm4oXG4gICAgICAgICAgICAgIFwiXigvTk9NSU4vKT8oL1JBUFBPUlQtQU4vfC9SQVBQT1JULVNOLyl7Mn0kXCIsXG4gICAgICAgICAgICAgIHt9LFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIFwiQ01QLURFQkFUUy1BTlwiOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvU0VBTkNFLykqKC9ERUMvKT8kXCIsIHt9KSxcbiAgICAgICAgICAgIFwiQ01QLURFQkFUUy1TTlwiOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvU0VBTkNFLykqKC9ERUMvKT8kXCIsIHt9KSxcbiAgICAgICAgICB9LFxuICAgICAgICApLFxuICAgICAgICBDQzogbmV3IENvZGUyUGF0dGVybihcIl4oL1NBSVNJRS8pKygvQ09OQ0xVU0lPTi8pPyRcIiwge30pLFxuICAgICAgICBQUk9NOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvUFVCLyk/JFwiLCB7fSksXG4gICAgICAgIFwiQU4tQVBQTElcIjogbmV3IENvZGUyUGF0dGVybihcIl4oL1JBUFBPUlQvKT8kXCIsIHt9KSxcbiAgICAgIH0sXG4gICAgKSxcbiAgICBcIkFsbG9jdXRpb24gZHUgUHLDqXNpZGVudCBkZSBsJ0Fzc2VtYmzDqWUgbmF0aW9uYWxlXCI6IG5ldyBDb2RlMlBhdHRlcm4oXG4gICAgICBcIl4vQU4yMS8kXCIsXG4gICAgICB7XG4gICAgICAgIEFOMjE6IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9BUEFOLyk/JFwiLCB7fSksXG4gICAgICB9LFxuICAgICksXG4gICAgXCJSw6lzb2x1dGlvbiBBcnRpY2xlIDM0LTFcIjogbmV3IENvZGUyUGF0dGVybihcIl4oL0FOTFVOSS8pPyRcIiwge1xuICAgICAgQU5MVU5JOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvREVQT1QvKT8oL0RFQkFUUy8pPygvUlRSSU5JLyk/JFwiLCB7XG4gICAgICAgIFwiQU5MVU5JLURFQkFUU1wiOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvU0VBTkNFLykrKC9ERUMvKT8kXCIsIHt9KSxcbiAgICAgIH0pLFxuICAgIH0pLFxuICAgIFLDqXNvbHV0aW9uOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvQU5MVU5JLyk/KC9DQy8pPyRcIiwge1xuICAgICAgQU5MVU5JOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvREVQT1QvKT8oL0NPTS8pPygvREVCQVRTL3wvUlRSSU5JLyk/JFwiLCB7XG4gICAgICAgIFwiQU5MVU5JLUNPTVwiOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvQ0FFLyk/KC9GT05ELyk/JFwiLCB7XG4gICAgICAgICAgXCJBTkxVTkktQ09NLUZPTkRcIjogbmV3IENvZGUyUGF0dGVybkNvbUZvbmQoKSxcbiAgICAgICAgICBcIkFOTFVOSS1DT00tQ0FFXCI6IG5ldyBDb2RlMlBhdHRlcm4oXG4gICAgICAgICAgICBcIl4oL1NBSVNJRS8pPygvTk9NSU4vKT8oL1JFVU5JT04vKT8oL1JBUFBPUlQvKT8oL0RFQy8pPyRcIixcbiAgICAgICAgICAgIHt9LFxuICAgICAgICAgICksXG4gICAgICAgIH0pLFxuICAgICAgICBcIkFOTFVOSS1ERUJBVFNcIjogbmV3IENvZGUyUGF0dGVybihcIl4oL1NFQU5DRS8pKigvREVDLyk/JFwiLCB7fSksXG4gICAgICB9KSxcbiAgICAgIENDOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvU0FJU0lFLyk/KC9DT05DTFVTSU9OLyk/JFwiLCB7fSksXG4gICAgfSksXG4gICAgXCJSYXBwb3J0IGQnaW5mb3JtYXRpb24gc2FucyBtaXNzaW9uXCI6IG5ldyBDb2RlMlBhdHRlcm4oXG4gICAgICBcIl4oL0FOMjAvKT8oL0VVLyk/JFwiLFxuICAgICAge1xuICAgICAgICBBTjIwOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvUkFQUE9SVC8pPyRcIiwge30pLFxuICAgICAgICBFVTogbmV3IENvZGUyUGF0dGVybihcIl4oL0RFQy8pKyRcIiwge30pLFxuICAgICAgfSxcbiAgICApLFxuICAgIFwiTWlzc2lvbiBkJ2luZm9ybWF0aW9uXCI6IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9BTjIwLyk/JFwiLCB7XG4gICAgICBBTjIwOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvTUlTSU5GLyk/JFwiLCB7XG4gICAgICAgIFwiQU4yMC1NSVNJTkZcIjogbmV3IENvZGUyUGF0dGVybihcbiAgICAgICAgICBcIl4oL0NSRUEvKT8oL05PTUlOLyk/KC9SQVBQT1JULyk/JFwiLFxuICAgICAgICAgIHt9LFxuICAgICAgICApLFxuICAgICAgfSksXG4gICAgfSksXG4gICAgXCJDb21taXNzaW9uIGQnZW5xdcOqdGVcIjogbmV3IENvZGUyUGF0dGVybihcIl4oL0FOMjAvKT8kXCIsIHtcbiAgICAgIEFOMjA6IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9DT01FTlEvKT8kXCIsIHtcbiAgICAgICAgXCJBTjIwLUNPTUVOUVwiOiBuZXcgQ29kZTJQYXR0ZXJuKFxuICAgICAgICAgIFwiXigvQ1JFQS8pPygvTk9NSU4vKT8oL1JBUFBPUlQvKT8kXCIsXG4gICAgICAgICAge30sXG4gICAgICAgICksXG4gICAgICB9KSxcbiAgICB9KSxcbiAgICBcIkVuZ2FnZW1lbnQgZGUgbGEgcmVzcG9uc2FiaWxpdMOpIGdvdXZlcm5lbWVudGFsZVwiOiBuZXcgQ29kZTJQYXR0ZXJuKFxuICAgICAgXCJeL0FOMjEvJFwiLFxuICAgICAge1xuICAgICAgICBBTjIxOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigoKC9NT1RJT04vKSovREVCQVRTLyl8KC9ER1ZULykpezEsMn0kXCIsIHtcbiAgICAgICAgICBcIkFOMjEtREVCQVRTXCI6IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9TRUFOQ0UvKSooL01PVElPTi1WT1RFLykqJFwiLCB7fSksXG4gICAgICAgIH0pLFxuICAgICAgfSxcbiAgICApLFxuICAgIFwiTW90aW9uIHLDqWbDqXJlbmRhaXJlXCI6IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9sZWN0dXJlLykrJFwiLCB7XG4gICAgICBsZWN0dXJlOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvREVQT1QvKT8oL0NPTS8pPygvREVCQVRTLyk/JFwiLCB7XG4gICAgICAgIFwibGVjdHVyZS1DT01cIjogbmV3IENvZGUyUGF0dGVybihcIl4oL0ZPTkQvKT8kXCIsIHtcbiAgICAgICAgICBcImxlY3R1cmUtQ09NLUZPTkRcIjogbmV3IENvZGUyUGF0dGVybihcbiAgICAgICAgICAgIFwiXigvU0FJU0lFLyk/KC9OT01JTi8pKigvUkFQUE9SVC8pKiRcIixcbiAgICAgICAgICAgIHt9LFxuICAgICAgICAgICksXG4gICAgICAgIH0pLFxuICAgICAgICBcImxlY3R1cmUtREVCQVRTXCI6IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9ERUMvKT8kXCIsIHt9KSxcbiAgICAgIH0pLFxuICAgIH0pLFxuICAgIEltbXVuaXTDqTogbmV3IENvZGUyUGF0dGVybihcIl4oL0FOTFVOSS8pKyRcIiwge1xuICAgICAgQU5MVU5JOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvREVQT1QvKT8oL0NPTS8pPygvREVCQVRTLyk/KC9SVFJJTkkvKT8kXCIsIHtcbiAgICAgICAgXCJBTkxVTkktQ09NXCI6IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9GT05ELyk/JFwiLCB7XG4gICAgICAgICAgXCJBTkxVTkktQ09NLUZPTkRcIjogbmV3IENvZGUyUGF0dGVybihcbiAgICAgICAgICAgIFwiXigvU0FJU0lFLyk/KC9OT01JTi8pKigvUkFQUE9SVC8pKiRcIixcbiAgICAgICAgICAgIHt9LFxuICAgICAgICAgICksXG4gICAgICAgIH0pLFxuICAgICAgICBcIkFOTFVOSS1ERUJBVFNcIjogbmV3IENvZGUyUGF0dGVybihcIl4oL1NFQU5DRS8pPygvREVDLykkXCIsIHt9KSxcbiAgICAgIH0pLFxuICAgIH0pLFxuICAgIFwiUmVzcG9uc2FiaWxpdMOpIHDDqW5hbGUgZHUgcHLDqXNpZGVudCBkZSBsYSByw6lwdWJsaXF1ZVwiOiBuZXcgQ29kZTJQYXR0ZXJuKFxuICAgICAgXCJeL2xlY3R1cmUvJFwiLFxuICAgICAge1xuICAgICAgICBsZWN0dXJlOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvREVQT1QvKT8oL1JFQ0JVUkVBVS8pPyRcIiwge30pLFxuICAgICAgfSxcbiAgICApLFxuICAgIFwiUHJvcG9zaXRpb24gZGUgbG9pIHByw6lzZW50w6llIGVuIGFwcGxpY2F0aW9uIGRlIGwnYXJ0aWNsZSAxMSBkZSBsYSBDb25zdGl0dXRpb25cIjpcbiAgICAgIG5ldyBDb2RlMlBhdHRlcm4oXCJeL2xlY3R1cmUvJFwiLCB7XG4gICAgICAgIGxlY3R1cmU6IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9ERVBPVC8pPyRcIiwge30pLFxuICAgICAgfSksXG4gIH0pXG5cbiAgY29uc3RydWN0b3Ioc2FuaXR5Q2hlY2tzOiBib29sZWFuLCB2ZXJib3NlOiBib29sZWFuID0gZmFsc2UpIHtcbiAgICB0aGlzLnZlcmJvc2UgPSB2ZXJib3NlXG4gICAgdGhpcy5zYW5pdHlDaGVja3MgPSBzYW5pdHlDaGVja3NcbiAgICB0aGlzLnByb2NlZHVyZXMgPSB7fVxuICAgIHRoaXMuY29kZTJwYXR0ZXJuLl9tYXRjaF9jb3VudF8rK1xuICB9XG5cbiAgd2Fsa0ZpbGVzKGRhdGE6IHN0cmluZ1tdLCBhY3Rpb246IGFueSkge1xuICAgIGZvciAoY29uc3QgZmlsZSBvZiBnZXRGaWxlcyhkYXRhKSkge1xuICAgICAgY29uc3QgZG9zc2llciA9IGxvYWQoZmlsZSlcbiAgICAgIGxldCBwcm9jZWR1cmU6IHN0cmluZyA9IHRoaXMucmVtYXBQcm9jZWR1cmUoXG4gICAgICAgIGRvc3NpZXIucHJvY2VkdXJlUGFybGVtZW50YWlyZS5saWJlbGxlLFxuICAgICAgKVxuICAgICAgaWYgKCEocHJvY2VkdXJlIGluIHRoaXMucHJvY2VkdXJlcykpIHRoaXMucHJvY2VkdXJlc1twcm9jZWR1cmVdID0ge31cbiAgICAgIGFjdGlvbihcbiAgICAgICAgdGhpcy5wcm9jZWR1cmVzW3Byb2NlZHVyZV0sXG4gICAgICAgIGRvc3NpZXIuYWN0ZXNMZWdpc2xhdGlmcyxcbiAgICAgICAgdGhpcy5jb2RlMnBhdHRlcm5bcHJvY2VkdXJlXSxcbiAgICAgICAgbnVsbCxcbiAgICAgIClcbiAgICB9XG4gIH1cblxuICBjb2xsZWN0RmlsZXMoZGF0YTogc3RyaW5nW10pIHtcbiAgICB0aGlzLndhbGtGaWxlcyhcbiAgICAgIGRhdGEsXG4gICAgICAoX2FjdGVzOiBhbnksIGFjdGVzTGVnaXNsYXRpZnM6IGFueSwgX2MycDogYW55LCBfcGFyZW50OiBzdHJpbmcpID0+IHtcbiAgICAgICAgdGhpcy5jb2xsZWN0KGFjdGVzTGVnaXNsYXRpZnMpXG4gICAgICB9LFxuICAgIClcbiAgfVxuXG4gIHByb2Nlc3NGaWxlcyhkYXRhOiBzdHJpbmdbXSkge1xuICAgIHRoaXMud2Fsa0ZpbGVzKFxuICAgICAgZGF0YSxcbiAgICAgIChhY3RlczogYW55LCBhY3Rlc0xlZ2lzbGF0aWZzOiBhbnksIGMycDogYW55LCBwYXJlbnQ6IHN0cmluZykgPT4ge1xuICAgICAgICB0aGlzLm1lcmdlKGFjdGVzLCBhY3Rlc0xlZ2lzbGF0aWZzLCBjMnAsIHBhcmVudClcbiAgICAgIH0sXG4gICAgKVxuICAgIGlmICh0aGlzLnNhbml0eUNoZWNrcykgdGhpcy52YWxpZGF0ZSgpXG4gIH1cblxuICByZW1hcEFjdGVzKGFjdGVzOiBhbnkpOiBhbnkge1xuICAgIGxldCByZXN1bHRzID0gW11cbiAgICBmb3IgKGNvbnN0IGFjdGUgb2YgYWN0ZXMpIHtcbiAgICAgIHRoaXMubGVjdHVyZU1hcHBlci5yZW1hcChhY3RlKVxuXG4gICAgICAvLyBDQy1TQUlTSUUtIHN1ZmZpeCBkb2VzIG5vdCBpbXBseSBhIGhpZXJhcmNoeVxuICAgICAgYWN0ZS5jb2RlQWN0ZSA9IGFjdGUuY29kZUFjdGUucmVwbGFjZSgvXkNDLVNBSVNJRS4qLywgXCJDQy1TQUlTSUVcIilcblxuICAgICAgcmVzdWx0cy5wdXNoKGFjdGUpXG4gICAgfVxuICAgIHJldHVybiByZXN1bHRzXG4gIH1cblxuICBjb2xsZWN0QWN0ZXMoYWN0ZXM6IGFueSk6IGFueSB7XG4gICAgbGV0IHJlc3VsdHMgPSBbXVxuICAgIGZvciAoY29uc3QgYWN0ZSBvZiBhY3Rlcykge1xuICAgICAgdGhpcy5sZWN0dXJlTWFwcGVyLmNvbGxlY3QoYWN0ZSlcblxuICAgICAgcmVzdWx0cy5wdXNoKGFjdGUpXG4gICAgfVxuICAgIHJldHVybiByZXN1bHRzXG4gIH1cblxuICByZW1hcFByb2NlZHVyZShwcm9jZWR1cmU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgbWVyZ2VfcHJvY2VkdXJlczogTWFwPHN0cmluZywgYW55PiA9IG5ldyBNYXAoW1xuICAgICAgW1wiUHJvcG9zaXRpb24gZGUgbG9pIG9yZGluYWlyZVwiLCBcIlByb2PDqWR1cmUgbMOpZ2lzbGF0aXZlXCJdLFxuICAgICAgW1wiUHJvamV0IGRlIGxvaSBvcmRpbmFpcmVcIiwgXCJQcm9jw6lkdXJlIGzDqWdpc2xhdGl2ZVwiXSxcbiAgICAgIFtcbiAgICAgICAgXCJQcm9qZXQgZGUgcmF0aWZpY2F0aW9uIGRlcyB0cmFpdMOpcyBldCBjb252ZW50aW9uc1wiLFxuICAgICAgICBcIlByb2PDqWR1cmUgbMOpZ2lzbGF0aXZlXCIsXG4gICAgICBdLFxuICAgICAgW1wiUHJvamV0IG91IHByb3Bvc2l0aW9uIGRlIGxvaSBvcmdhbmlxdWVcIiwgXCJQcm9jw6lkdXJlIGzDqWdpc2xhdGl2ZVwiXSxcbiAgICAgIFtcbiAgICAgICAgXCJQcm9qZXQgb3UgcHJvcG9zaXRpb24gZGUgbG9pIGNvbnN0aXR1dGlvbm5lbGxlXCIsXG4gICAgICAgIFwiUHJvY8OpZHVyZSBsw6lnaXNsYXRpdmVcIixcbiAgICAgIF0sXG4gICAgICBbXCJQcm9qZXQgZGUgbG9pIGRlIGZpbmFuY2VzIGRlIGwnYW5uw6llXCIsIFwiUHJvY8OpZHVyZSBsw6lnaXNsYXRpdmVcIl0sXG4gICAgICBbXCJQcm9qZXQgZGUgbG9pIGRlIGZpbmFuY2VzIHJlY3RpZmljYXRpdmVcIiwgXCJQcm9jw6lkdXJlIGzDqWdpc2xhdGl2ZVwiXSxcbiAgICAgIFtcbiAgICAgICAgXCJQcm9qZXQgZGUgbG9pIGRlIGZpbmFuY2VtZW50IGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiLFxuICAgICAgICBcIlByb2PDqWR1cmUgbMOpZ2lzbGF0aXZlXCIsXG4gICAgICBdLFxuICAgIF0pXG4gICAgaWYgKG1lcmdlX3Byb2NlZHVyZXMuaGFzKHByb2NlZHVyZSkpIHtcbiAgICAgIHRoaXMucmVtYXBwZWRQcm9jZWR1cmVzW3Byb2NlZHVyZV0gPSBudWxsXG4gICAgICByZXR1cm4gbWVyZ2VfcHJvY2VkdXJlcy5nZXQocHJvY2VkdXJlKVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gcHJvY2VkdXJlXG4gICAgfVxuICB9XG5cbiAgLy8gcmV0dXJuIHRoZSBjb2RlQWN0ZXMgaW4gdGhlIHNhbWUgb3JkZXIgdGhleSBhcHBlYXIgaW4gdGhlIHJlZ2V4cFxuICBvcmRlcmVkQ29kZXMoY29kZXM6IGFueSwgYzJwOiBhbnksIHBhcmVudDogc3RyaW5nKTogU2V0PHN0cmluZz4ge1xuICAgIGNvZGVzID0gbmV3IFNldChjb2RlcylcbiAgICBpZiAoIXRoaXMuc2FuaXR5Q2hlY2tzKSByZXR1cm4gY29kZXNcbiAgICBsZXQgb3JkZXJlZCA9IGMycFtcIl9wYXR0ZXJuX1wiXS5tYXRjaChuZXcgUmVnRXhwKFwiLy4qPy9cIiwgXCJnXCIpKVxuICAgIG9yZGVyZWQgPSBvcmRlcmVkLm1hcCgoeDogc3RyaW5nKSA9PiB4LnJlcGxhY2UobmV3IFJlZ0V4cChcIi8oLiopL1wiKSwgXCIkMVwiKSlcbiAgICBpZiAocGFyZW50ICE9IG51bGwpIG9yZGVyZWQgPSBvcmRlcmVkLm1hcCgoeDogc3RyaW5nKSA9PiBgJHtwYXJlbnR9LSR7eH1gKVxuICAgIG9yZGVyZWQgPSBuZXcgU2V0KG9yZGVyZWQpXG4gICAgYXNzZXJ0KGVxU2V0KG9yZGVyZWQsIGNvZGVzKSwgYCR7Wy4uLm9yZGVyZWRdfSAhPSAke1suLi5jb2Rlc119YClcbiAgICByZXR1cm4gb3JkZXJlZFxuICB9XG5cbiAgdmFsaWRhdGVDaHJvbm9sb2d5KGFjdGVzTGVnaXNsYXRpZnM6IGFueSwgYzJwOiBhbnksIHBhcmVudDogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3QgcGF0dGVybiA9IGMycFtcIl9wYXR0ZXJuX1wiXVxuICAgIGNvbnN0IHNlcXVlbmNlID0gYWN0ZXNMZWdpc2xhdGlmc1xuICAgICAgLm1hcCgoeDogYW55KSA9PiBgLyR7eC5jb2RlQWN0ZX0vYC5yZXBsYWNlKGAvJHtwYXJlbnR9LWAsIFwiL1wiKSlcbiAgICAgIC5qb2luKFwiXCIpXG4gICAgYXNzZXJ0KFxuICAgICAgc2VxdWVuY2UubWF0Y2gobmV3IFJlZ0V4cChwYXR0ZXJuKSksXG4gICAgICBgJHtwYXR0ZXJufSBkb2VzIG5vdCBtYXRjaCAke3NlcXVlbmNlfWAsXG4gICAgKVxuICAgIGMycC5fbWF0Y2hfY291bnRfKytcbiAgfVxuXG4gIG1lcmdlQWN0ZShhY3RlczogYW55LCBhY3RlOiBhbnksIGMycDogYW55LCBwYXJlbnQ6IHN0cmluZyk6IHZvaWQge1xuICAgIGxldCBjb2RlOiBzdHJpbmcgPSBhY3RlLmNvZGVBY3RlXG4gICAgbGV0IHNob3J0Q29kZTogc3RyaW5nID0gY29kZS5yZXBsYWNlKG5ldyBSZWdFeHAoYF4ke3BhcmVudH0tYCksIFwiXCIpXG4gICAgc2hvcnRDb2RlID0gc2hvcnRDb2RlLnJlcGxhY2UoLy0oQU58U04pJC8sIFwiXCIpXG4gICAgdGhpcy5jb2Rlc1tzaG9ydENvZGVdID0gbnVsbFxuICAgIGxldCBuYW1lOiBzdHJpbmcgPSBhY3RlLmxpYmVsbGVBY3RlLm5vbUNhbm9uaXF1ZVxuICAgIGlmICghKGNvZGUgaW4gYWN0ZXMpKSB7XG4gICAgICBhY3Rlc1tjb2RlXSA9IHtcbiAgICAgICAgdHlwZTogYWN0ZS54c2lUeXBlLFxuICAgICAgICBuYW1lOiBuZXcgU2V0KFtuYW1lXSksXG4gICAgICAgIHNob3J0Q29kZTogc2hvcnRDb2RlLFxuICAgICAgICBhY3Rlczoge30sXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGFjdGVzW2NvZGVdLm5hbWUuYWRkKG5hbWUpXG4gICAgfVxuICAgIGlmIChcImFjdGVzTGVnaXNsYXRpZnNcIiBpbiBhY3RlKVxuICAgICAgdGhpcy5tZXJnZShhY3Rlc1tjb2RlXS5hY3RlcywgYWN0ZS5hY3Rlc0xlZ2lzbGF0aWZzLCBjMnBbY29kZV0sIGNvZGUpXG4gIH1cblxuICBtZXJnZShhY3RlczogYW55LCBhY3Rlc0xlZ2lzbGF0aWZzOiBhbnksIGMycDogYW55LCBwYXJlbnQ6IGFueSk6IHZvaWQge1xuICAgIGNvbnN0IGwgPSB0aGlzLnJlbWFwQWN0ZXMoYWN0ZXNMZWdpc2xhdGlmcylcbiAgICB0aGlzLnZhbGlkYXRlQ2hyb25vbG9neShsLCBjMnAsIHBhcmVudClcbiAgICBmb3IgKGNvbnN0IGFjdGUgb2YgbCkgdGhpcy5tZXJnZUFjdGUoYWN0ZXMsIGFjdGUsIGMycCwgcGFyZW50KVxuICB9XG5cbiAgY29sbGVjdChhY3Rlc0xlZ2lzbGF0aWZzOiBhbnkpOiB2b2lkIHtcbiAgICBmb3IgKGNvbnN0IGFjdGUgb2YgdGhpcy5jb2xsZWN0QWN0ZXMoYWN0ZXNMZWdpc2xhdGlmcykpXG4gICAgICBpZiAoXCJhY3Rlc0xlZ2lzbGF0aWZzXCIgaW4gYWN0ZSkgdGhpcy5jb2xsZWN0KGFjdGUuYWN0ZXNMZWdpc2xhdGlmcylcbiAgfVxuXG4gIHZhbGlkYXRlTGV2ZWwoYzJwOiBhbnksIHBhdGg6IGFueSkge1xuICAgIGFzc2VydChjMnAuX21hdGNoX2NvdW50XyA+IDAsIGAke3BhdGh9IGlzIG5ldmVyIHVzZWRgKVxuICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKGMycCkgYXMgW3N0cmluZywgYW55XVtdKSB7XG4gICAgICBpZiAodmFsdWUgIT0gbnVsbCAmJiB2YWx1ZS5jb25zdHJ1Y3Rvci5uYW1lID09IFwiQ29kZTJQYXR0ZXJuXCIpXG4gICAgICAgIHRoaXMudmFsaWRhdGVMZXZlbCh2YWx1ZSwgcGF0aC5jb25jYXQoW2tleV0pKVxuICAgIH1cbiAgfVxuXG4gIHZhbGlkYXRlKCkge1xuICAgIHRoaXMudmFsaWRhdGVMZXZlbCh0aGlzLmNvZGUycGF0dGVybiwgW10pXG4gIH1cblxuICBwcmludEVudHJ5KHNlY3Rpb25zOiBzdHJpbmcsIGVudHJ5OiBzdHJpbmcsIGNvZGVzOiBzdHJpbmcpIHtcbiAgICBjb25zdCB0aXRsZSA9IGBcXGAke2VudHJ5fVxcYF9fYFxuICAgIGNvbnNvbGUubG9nKHRpdGxlKVxuICAgIGNvbnN0IHVuZGVybGluZSA9IG5ldyBBcnJheSh0aXRsZS5sZW5ndGggKyAxKS5qb2luKHNlY3Rpb25zWzBdKVxuICAgIGNvbnNvbGUubG9nKHVuZGVybGluZSlcbiAgICBjb25zb2xlLmxvZyhjb2RlcylcbiAgfVxuXG4gIGFkZEFuY2hvcnMoa2V5OiBzdHJpbmcpIHtcbiAgICBpZiAoa2V5IGluIHRoaXMuYW5jaG9yc1ByaW50ZWQpIHJldHVyblxuICAgIGlmICh0aGlzLmxlY3R1cmVNYXBwZXIuaGFzKGtleSkpXG4gICAgICB0aGlzLmxlY3R1cmVNYXBwZXIubWVyZ2VDb2Rlcyh0aGlzLmFuY2hvcnMsIGtleSlcbiAgICBlbHNlIHRoaXMuYW5jaG9ycy5hZGQoa2V5KVxuICB9XG5cbiAgcHJpbnRBbmNob3JzKGtleTogc3RyaW5nKSB7XG4gICAgaWYgKGtleSBpbiB0aGlzLmFuY2hvcnNQcmludGVkKSByZXR1cm5cbiAgICB0aGlzLmFuY2hvcnNQcmludGVkW2tleV0gPSBudWxsXG4gICAgaWYgKHRoaXMubGVjdHVyZU1hcHBlci5oYXMoa2V5KSkgdGhpcy5sZWN0dXJlTWFwcGVyLnByaW50QW5jaG9ycyhrZXkpXG4gICAgZWxzZSBjb25zb2xlLmxvZyhgLi4gXyR7a2V5fTpgKVxuICB9XG5cbiAgZ2V0Q29kZXMoa2V5OiBzdHJpbmcsIHNob3J0Q29kZTogc3RyaW5nKSB7XG4gICAgaWYgKGtleSBpbiB0aGlzLmFuY2hvcnNQcmludGVkKSByZXR1cm4gYGNmIFxcXFwqJHtzaG9ydENvZGV9XFxcXCpgXG4gICAgaWYgKHRoaXMubGVjdHVyZU1hcHBlci5oYXMoa2V5KSkgcmV0dXJuIHRoaXMubGVjdHVyZU1hcHBlci5nZXRDb2RlcyhrZXkpXG4gICAgZWxzZSByZXR1cm4ga2V5XG4gIH1cblxuICByZW5hbWVDTVAoa2V5OiBzdHJpbmcsIG5hbWU6IHN0cmluZykge1xuICAgIGlmIChrZXkuc3RhcnRzV2l0aChcIkNNUFwiKSkge1xuICAgICAgaWYgKGtleS5lbmRzV2l0aChcIi1TTlwiKSkgcmV0dXJuIGAke25hbWV9IChTw6luYXQpYFxuICAgICAgZWxzZSBpZiAoa2V5LmVuZHNXaXRoKFwiLUFOXCIpKSByZXR1cm4gYCR7bmFtZX0gKEFzc2VtYmzDqWUgTmF0aW9uYWxlKWBcbiAgICAgIGVsc2UgcmV0dXJuIG5hbWVcbiAgICB9IGVsc2UgcmV0dXJuIG5hbWVcbiAgfVxuXG4gIHByaW50TGV2ZWwoYWN0ZXM6IGFueSwgc2VjdGlvbnM6IHN0cmluZywgYzJwOiBhbnksIHBhcmVudDogYW55KSB7XG4gICAgY29uc3Qga2V5czogU2V0PHN0cmluZz4gPSB0aGlzLm9yZGVyZWRDb2RlcyhPYmplY3Qua2V5cyhhY3RlcyksIGMycCwgcGFyZW50KVxuICAgIGZvciAoY29uc3Qga2V5IG9mIGtleXMpIHtcbiAgICAgIGNvbnN0IHZhbHVlID0gYWN0ZXNba2V5XVxuICAgICAgbGV0IG5hbWUgPSBBcnJheS5mcm9tKHZhbHVlLm5hbWUpLmpvaW4oXCIsIFwiKVxuICAgICAgbmFtZSA9IHRoaXMucmVuYW1lQ01QKGtleSwgbmFtZSlcbiAgICAgIGNvbnN0IGNvZGVzID0gdGhpcy5nZXRDb2RlcyhrZXksIHZhbHVlLnNob3J0Q29kZSlcbiAgICAgIHRoaXMuYWRkQW5jaG9ycyhrZXkpXG4gICAgICB0aGlzLnByaW50QW5jaG9ycyhrZXkpXG4gICAgICBjb25zb2xlLmxvZyhcIlwiKVxuICAgICAgdGhpcy5wcmludEVudHJ5KHNlY3Rpb25zLCBgJHtuYW1lfSA8JHt2YWx1ZS5zaG9ydENvZGV9VE9DXz5gLCBjb2RlcylcbiAgICAgIGNvbnNvbGUubG9nKFwiXCIpXG4gICAgICBpZiAoT2JqZWN0LmtleXModmFsdWUuYWN0ZXMpLmxlbmd0aCA+IDApXG4gICAgICAgIHRoaXMucHJpbnRMZXZlbCh2YWx1ZS5hY3Rlcywgc2VjdGlvbnMuc3Vic3RyaW5nKDEpLCBjMnBba2V5XSwga2V5KVxuICAgIH1cbiAgfVxuXG4gIHByaW50Q29kZXMoKSB7XG4gICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXModGhpcy5jb2RlcykpXG4gICAgICBjb25zb2xlLmxvZyhgLi4gXyR7a2V5fVRPQzogaHR0cDovL2ApXG4gIH1cblxuICBwcmludEFuY2hvcnNJbmRleCgpIHtcbiAgICBmb3IgKGNvbnN0IGNvZGUgb2YgQXJyYXkuZnJvbSh0aGlzLmFuY2hvcnMpKVxuICAgICAgY29uc29sZS5sb2coYCogOnJlZjpcXGAke2NvZGV9IDwke2NvZGV9PlxcYGApXG4gIH1cblxuICBnZXRBZ2dyZWdhdGVkKHByb2NlZHVyZTogc3RyaW5nKSB7XG4gICAgaWYgKHByb2NlZHVyZSA9PSBcIlByb2PDqWR1cmUgbMOpZ2lzbGF0aXZlXCIpIHtcbiAgICAgIGNvbnN0IHJlbWFwcGVkID0gT2JqZWN0LmtleXModGhpcy5yZW1hcHBlZFByb2NlZHVyZXMpLmpvaW4oXCIsIFwiKVxuICAgICAgcmV0dXJuIGAgKGFncsOpZ2F0aW9uIGRlICR7cmVtYXBwZWR9KWBcbiAgICB9IGVsc2UgcmV0dXJuIFwiXCJcbiAgfVxuXG4gIHByaW50KCk6IHZvaWQge1xuICAgIHRoaXMuYW5jaG9yc1ByaW50ZWQgPSB7fVxuICAgIGZvciAoY29uc3QgW2tleSwgYWN0ZXNdIG9mIE9iamVjdC5lbnRyaWVzKHRoaXMucHJvY2VkdXJlcykgYXMgW1xuICAgICAgc3RyaW5nLFxuICAgICAgYW55LFxuICAgIF1bXSkge1xuICAgICAgY29uc3QgY29kZSA9IGtleS5yZXBsYWNlKC8gKy9nLCBcIl9cIilcbiAgICAgIHRoaXMuY29kZXNbY29kZV0gPSBudWxsXG4gICAgICBjb25zdCBhZ2dyZWdhdGVkID0gdGhpcy5nZXRBZ2dyZWdhdGVkKGtleSlcbiAgICAgIGNvbnN0IHRpdGxlID0gYFxcYCR7a2V5fSA8JHtjb2RlfVRPQ18+XFxgX18ke2FnZ3JlZ2F0ZWR9YFxuICAgICAgY29uc29sZS5sb2codGl0bGUpXG4gICAgICBjb25zdCB1bmRlcmxpbmUgPSBuZXcgQXJyYXkodGl0bGUubGVuZ3RoICsgMSkuam9pbihcIj1cIilcbiAgICAgIGNvbnNvbGUubG9nKHVuZGVybGluZSlcbiAgICAgIHRoaXMucHJpbnRMZXZlbChhY3RlcywgXCItfi4nXCIsIHRoaXMuY29kZTJwYXR0ZXJuW2tleV0sIG51bGwpXG4gICAgfVxuICAgIHRoaXMucHJpbnRDb2RlcygpXG4gICAgdGhpcy5wcmludEFuY2hvcnNJbmRleCgpXG4gIH1cbn1cblxuZnVuY3Rpb24gbWFpbihhcmd2OiBhbnkpOiBudW1iZXIge1xuICBjb25zdCBvcHRpb25zID0gcGFyc2VBcmdzKGFyZ3YpXG4gIGlmIChvcHRpb25zID09PSBudWxsKSByZXR1cm4gMVxuICBsZXQgZG9jID0gbmV3IEFjdGVzRG9jdW1lbnRhdGlvbihcbiAgICAhb3B0aW9uc1tcIm5vLXNhbml0eS1jaGVja3NcIl0sXG4gICAgb3B0aW9ucy52ZXJib3NlLFxuICApXG4gIGRvYy5jb2xsZWN0RmlsZXMob3B0aW9ucy5kYXRhKVxuICBkb2MucHJvY2Vzc0ZpbGVzKG9wdGlvbnMuZGF0YSlcbiAgZG9jLnByaW50KClcbiAgcmV0dXJuIDBcbn1cblxuLyogaXN0YW5idWwgaWdub3JlIGlmICovXG5pZiAocHJvY2Vzcy5hcmd2WzFdLmVuZHNXaXRoKFwiZG9jdW1lbnRfZG9zc2llcnNfbGVnaXNsYXRpZnMudHNcIikpXG4gIHByb2Nlc3MuZXhpdChtYWluKHByb2Nlc3MuYXJndikpXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVBLFNBQVNBLFNBQVQsQ0FBbUJDLElBQW5CLEVBQXdDO0VBQ3RDLElBQU1DLGtCQUFrQixHQUFHLENBQ3pCO0lBQ0VDLFdBQVcsRUFBRSx5REFEZjtJQUVFQyxhQUFhLEVBQUUsSUFGakI7SUFHRUMsUUFBUSxFQUFFLElBSFo7SUFJRUMsSUFBSSxFQUFFLE1BSlI7SUFLRUMsSUFBSSxFQUFFQztFQUxSLENBRHlCLEVBUXpCO0lBQ0VGLElBQUksRUFBRSxrQkFEUjtJQUVFQyxJQUFJLEVBQUVFLE9BRlI7SUFHRU4sV0FBVyxFQUFFO0VBSGYsQ0FSeUIsRUFhekI7SUFDRUcsSUFBSSxFQUFFLFNBRFI7SUFFRUMsSUFBSSxFQUFFRSxPQUZSO0lBR0VOLFdBQVcsRUFBRTtFQUhmLENBYnlCLEVBa0J6QjtJQUNFRyxJQUFJLEVBQUUsTUFEUjtJQUVFSCxXQUFXLEVBQUU7RUFGZixDQWxCeUIsQ0FBM0I7RUF1QkEsSUFBTU8sUUFBUSxHQUFH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
776
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJwYXJzZUFyZ3MiLCJhcmd2Iiwib3B0aW9uc0RlZmluaXRpb25zIiwiZGVzY3JpcHRpb24iLCJkZWZhdWx0T3B0aW9uIiwibXVsdGlwbGUiLCJuYW1lIiwidHlwZSIsIlN0cmluZyIsIkJvb2xlYW4iLCJzZWN0aW9ucyIsImhlYWRlciIsImNvbnRlbnQiLCJvcHRpb25MaXN0Iiwib3B0aW9ucyIsImNvbW1hbmRMaW5lQXJncyIsImNvbnNvbGUiLCJlcnJvciIsImhlbHAiLCJ1c2FnZSIsImNvbW1hbmRMaW5lVXNhZ2UiLCJ3YXJuIiwiZXFTZXQiLCJhcyIsImJzIiwic2l6ZSIsImEiLCJoYXMiLCJDb2RlMlBhdHRlcm4iLCJwYXR0ZXJuIiwiY2hpbGRyZW4iLCJfcGF0dGVybl8iLCJfbWF0Y2hfY291bnRfIiwiT2JqZWN0IiwiYXNzaWduIiwiQ29kZTJQYXR0ZXJuQ29tRm9uZCIsIkxlY3R1cmVNYXBwaW5nIiwiU2V0IiwiYWN0ZSIsImNvZGVzIiwiYWRkIiwiY29kZUFjdGUiLCJnZXRUeXBlIiwibGliZWxsZUFjdGUiLCJub21DYW5vbmlxdWUiLCJsaWJlbGxlIiwidHlwZXMiLCJBcnJheSIsImZyb20iLCJjIiwiY29kZSIsImxvZyIsImpvaW4iLCJtYXRjaCIsImNvZGVzX2xlY3R1cmVfcmVnZXhwIiwiRXJyb3IiLCJyZXBsYWNlIiwiaXNMZWN0dXJlIiwibWFwIiwiUmVnRXhwIiwiY29kZXNfbGVjdHVyZSIsIkxlY3R1cmVNYXBwZXIiLCJtYXBwaW5nIiwiZ2V0Q29kZUFjdGUiLCJ1bmRlZmluZWQiLCJsZWN0dXJlcyIsInJlbWFwIiwibWVyZ2VDb2RlcyIsInByaW50QW5jaG9ycyIsImdldENvZGVzIiwiQWN0ZXNEb2N1bWVudGF0aW9uIiwic2FuaXR5Q2hlY2tzIiwidmVyYm9zZSIsImxlY3R1cmUiLCJDTVAiLCJDQyIsIlBST00iLCJBTjIxIiwiQU5MVU5JIiwiUsOpc29sdXRpb24iLCJBTjIwIiwiRVUiLCJJbW11bml0w6kiLCJwcm9jZWR1cmVzIiwiY29kZTJwYXR0ZXJuIiwiZGF0YSIsImFjdGlvbiIsImdldEZpbGVzIiwiZmlsZSIsImRvc3NpZXIiLCJsb2FkIiwicHJvY2VkdXJlIiwicmVtYXBQcm9jZWR1cmUiLCJwcm9jZWR1cmVQYXJsZW1lbnRhaXJlIiwiYWN0ZXNMZWdpc2xhdGlmcyIsIndhbGtGaWxlcyIsIl9hY3RlcyIsIl9jMnAiLCJfcGFyZW50IiwiY29sbGVjdCIsImFjdGVzIiwiYzJwIiwicGFyZW50IiwibWVyZ2UiLCJ2YWxpZGF0ZSIsInJlc3VsdHMiLCJsZWN0dXJlTWFwcGVyIiwicHVzaCIsIm1lcmdlX3Byb2NlZHVyZXMiLCJNYXAiLCJyZW1hcHBlZFByb2NlZHVyZXMiLCJnZXQiLCJvcmRlcmVkIiwieCIsImFzc2VydCIsInNlcXVlbmNlIiwic2hvcnRDb2RlIiwieHNpVHlwZSIsImwiLCJyZW1hcEFjdGVzIiwidmFsaWRhdGVDaHJvbm9sb2d5IiwibWVyZ2VBY3RlIiwiY29sbGVjdEFjdGVzIiwicGF0aCIsImVudHJpZXMiLCJrZXkiLCJ2YWx1ZSIsImNvbnN0cnVjdG9yIiwidmFsaWRhdGVMZXZlbCIsImNvbmNhdCIsImVudHJ5IiwidGl0bGUiLCJ1bmRlcmxpbmUiLCJsZW5ndGgiLCJhbmNob3JzUHJpbnRlZCIsImFuY2hvcnMiLCJzdGFydHNXaXRoIiwiZW5kc1dpdGgiLCJrZXlzIiwib3JkZXJlZENvZGVzIiwicmVuYW1lQ01QIiwiYWRkQW5jaG9ycyIsInByaW50RW50cnkiLCJwcmludExldmVsIiwic3Vic3RyaW5nIiwicmVtYXBwZWQiLCJhZ2dyZWdhdGVkIiwiZ2V0QWdncmVnYXRlZCIsInByaW50Q29kZXMiLCJwcmludEFuY2hvcnNJbmRleCIsIm1haW4iLCJkb2MiLCJjb2xsZWN0RmlsZXMiLCJwcm9jZXNzRmlsZXMiLCJwcmludCIsInByb2Nlc3MiLCJleGl0Il0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NjcmlwdHMvZG9jdW1lbnRfZG9zc2llcnNfbGVnaXNsYXRpZnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGNvbW1hbmRMaW5lQXJncyBmcm9tIFwiY29tbWFuZC1saW5lLWFyZ3NcIlxuaW1wb3J0IGNvbW1hbmRMaW5lVXNhZ2UgZnJvbSBcImNvbW1hbmQtbGluZS11c2FnZVwiXG5pbXBvcnQgYXNzZXJ0IGZyb20gXCJhc3NlcnRcIlxuaW1wb3J0IHsgbG9hZCwgZ2V0RmlsZXMgfSBmcm9tIFwiLi4vZmlsZV9zeXN0ZW1zXCJcblxuZnVuY3Rpb24gcGFyc2VBcmdzKGFyZ3Y6IHN0cmluZ1tdKTogYW55IHtcbiAgY29uc3Qgb3B0aW9uc0RlZmluaXRpb25zID0gW1xuICAgIHtcbiAgICAgIGRlc2NyaXB0aW9uOiBcInBhdGhuYW1lIHRvIGEgSlNPTiBmaWxlIG9yIGEgZ2xvYiBwYXR0ZXJuIHRvIEpTT04gZmlsZXNcIixcbiAgICAgIGRlZmF1bHRPcHRpb246IHRydWUsXG4gICAgICBtdWx0aXBsZTogdHJ1ZSxcbiAgICAgIG5hbWU6IFwiZGF0YVwiLFxuICAgICAgdHlwZTogU3RyaW5nLFxuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogXCJuby1zYW5pdHktY2hlY2tzXCIsXG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgZGVzY3JpcHRpb246IFwiRG8gbm90IHBlcmZvcm0gc2FuaXR5IGNoZWNrcy5cIixcbiAgICB9LFxuICAgIHtcbiAgICAgIG5hbWU6IFwidmVyYm9zZVwiLFxuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgIGRlc2NyaXB0aW9uOiBcImluY3JlYXNlIHZlcmJvc2l0eVwiLFxuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogXCJoZWxwXCIsXG4gICAgICBkZXNjcmlwdGlvbjogXCJQcmludCB0aGlzIHVzYWdlIGd1aWRlLlwiLFxuICAgIH0sXG4gIF1cbiAgY29uc3Qgc2VjdGlvbnMgPSBbXG4gICAge1xuICAgICAgaGVhZGVyOiBcIkFpZGUgw6AgbGEgZG9jdW1lbnRhdGlvbiBkdSBkb3NzaWVyIGzDqWdpc2xhdGlmXCIsXG4gICAgICBjb250ZW50OiBcIkfDqW7DqHJlIHVuZSBoacOpcmFyY2hpZSBkZXMgYWN0ZXMgbMOpZ2lzbGF0aWZzXCIsXG4gICAgfSxcbiAgICB7XG4gICAgICBoZWFkZXI6IFwiT3B0aW9uc1wiLFxuICAgICAgb3B0aW9uTGlzdDogb3B0aW9uc0RlZmluaXRpb25zLFxuICAgIH0sXG4gIF1cbiAgY29uc3Qgb3B0aW9ucyA9IGNvbW1hbmRMaW5lQXJncyhvcHRpb25zRGVmaW5pdGlvbnMsIHtcbiAgICBhcmd2OiBhcmd2LFxuICB9KVxuICBpZiAoIShcImhlbHBcIiBpbiBvcHRpb25zKSAmJiAhKFwiZGF0YVwiIGluIG9wdGlvbnMpKSB7XG4gICAgY29uc29sZS5lcnJvcihcIi0tZGF0YSBpcyBtYW5kYXRvcnlcIilcbiAgICBvcHRpb25zLmhlbHAgPSB0cnVlXG4gIH1cbiAgaWYgKFwiaGVscFwiIGluIG9wdGlvbnMpIHtcbiAgICBjb25zdCB1c2FnZSA9IGNvbW1hbmRMaW5lVXNhZ2Uoc2VjdGlvbnMpXG4gICAgY29uc29sZS53YXJuKHVzYWdlKVxuICAgIHJldHVybiBudWxsXG4gIH1cbiAgcmV0dXJuIG9wdGlvbnNcbn1cblxuZnVuY3Rpb24gZXFTZXQoYXM6IFNldDxzdHJpbmc+LCBiczogU2V0PHN0cmluZz4pOiBib29sZWFuIHtcbiAgaWYgKGFzLnNpemUgIT09IGJzLnNpemUpIHJldHVybiBmYWxzZVxuICBmb3IgKHZhciBhIG9mIGFzKSBpZiAoIWJzLmhhcyhhKSkgcmV0dXJuIGZhbHNlXG4gIHJldHVybiB0cnVlXG59XG5cbmNsYXNzIENvZGUyUGF0dGVybiB7XG4gIF9wYXR0ZXJuXzogYW55XG4gIF9tYXRjaF9jb3VudF86IG51bWJlclxuICBjb25zdHJ1Y3RvcihwYXR0ZXJuOiBhbnksIGNoaWxkcmVuOiBhbnkpIHtcbiAgICB0aGlzLl9wYXR0ZXJuXyA9IHBhdHRlcm5cbiAgICB0aGlzLl9tYXRjaF9jb3VudF8gPSAwXG4gICAgT2JqZWN0LmFzc2lnbih0aGlzLCBjaGlsZHJlbilcbiAgfVxufVxuXG5jbGFzcyBDb2RlMlBhdHRlcm5Db21Gb25kIGV4dGVuZHMgQ29kZTJQYXR0ZXJuIHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoXCJeL1NBSVNJRS8oL05PTUlOLykqKC9SRVVOSU9OLykqKC9SQVBQT1JULykqJFwiLCB7fSlcbiAgfVxufVxuXG5jbGFzcyBMZWN0dXJlTWFwcGluZyB7XG4gIGxpYmVsbGU6IGFueSA9IHt9XG4gIGNvZGVzOiBhbnkgPSBuZXcgU2V0KClcblxuICBzdGF0aWMgY29kZXNfbGVjdHVyZTogc3RyaW5nW10gPSBbXG4gICAgXCJBTjFcIixcbiAgICBcIlNOMVwiLFxuICAgIFwiQU5OTEVDXCIsXG4gICAgXCJTTk5MRUNcIixcbiAgICBcIkFOTERFRlwiLFxuICAgIFwiQU4yXCIsXG4gICAgXCJTTjJcIixcbiAgICBcIlNOM1wiLFxuICBdXG4gIHN0YXRpYyBjb2Rlc19sZWN0dXJlX3JlZ2V4cDogYW55ID0gbmV3IFJlZ0V4cChcbiAgICBcIl4oPzpcIiArIExlY3R1cmVNYXBwaW5nLmNvZGVzX2xlY3R1cmUuam9pbihcInxcIikgKyBcIikoLS4qKT8kXCIsXG4gIClcblxuICBzdGF0aWMgaXNMZWN0dXJlKGFjdGU6IGFueSkge1xuICAgIHJldHVybiBhY3RlLmNvZGVBY3RlLm1hdGNoKExlY3R1cmVNYXBwaW5nLmNvZGVzX2xlY3R1cmVfcmVnZXhwKVxuICB9XG5cbiAgc3RhdGljIGdldFR5cGUoYWN0ZTogYW55KSB7XG4gICAgaWYgKGFjdGUuY29kZUFjdGUubWF0Y2goL15BTi8pKSByZXR1cm4gXCJBTlwiXG4gICAgZWxzZSBpZiAoYWN0ZS5jb2RlQWN0ZS5tYXRjaCgvXlNOLykpIHJldHVybiBcIlNOXCJcbiAgICBlbHNlIHRocm93IEVycm9yKGAke2FjdGUuY29kZUFjdGV9IGRvZXMgbm90IHN0YXJ0IHdpdGggQU4gb3IgU05gKVxuICB9XG5cbiAgc3RhdGljIG1hcChjb2RlQWN0ZTogYW55KSB7XG4gICAgcmV0dXJuIGNvZGVBY3RlLnJlcGxhY2UoTGVjdHVyZU1hcHBpbmcuY29kZXNfbGVjdHVyZV9yZWdleHAsIGBsZWN0dXJlJDFgKVxuICB9XG5cbiAgc3RhdGljIGdldENvZGVBY3RlKGFjdGU6IGFueSkge1xuICAgIGlmICghTGVjdHVyZU1hcHBpbmcuaXNMZWN0dXJlKGFjdGUpKSByZXR1cm5cblxuICAgIHJldHVybiBMZWN0dXJlTWFwcGluZy5tYXAoYWN0ZS5jb2RlQWN0ZSlcbiAgfVxuXG4gIGFkZChhY3RlOiBhbnkpIHtcbiAgICB0aGlzLmNvZGVzLmFkZChhY3RlLmNvZGVBY3RlKVxuXG4gICAgY29uc3QgdHlwZSA9IExlY3R1cmVNYXBwaW5nLmdldFR5cGUoYWN0ZSlcblxuICAgIGlmICghKGFjdGUubGliZWxsZUFjdGUubm9tQ2Fub25pcXVlIGluIHRoaXMubGliZWxsZSkpXG4gICAgICB0aGlzLmxpYmVsbGVbYWN0ZS5saWJlbGxlQWN0ZS5ub21DYW5vbmlxdWVdID0gbmV3IFNldCgpXG4gICAgdGhpcy5saWJlbGxlW2FjdGUubGliZWxsZUFjdGUubm9tQ2Fub25pcXVlXS5hZGQodHlwZSlcbiAgfVxuXG4gIHJlbWFwKGFjdGU6IGFueSwgY29kZUFjdGU6IHN0cmluZykge1xuICAgIGFjdGUuY29kZUFjdGUgPSBjb2RlQWN0ZVxuXG4gICAgbGV0IHR5cGVzID0gdGhpcy5saWJlbGxlW2FjdGUubGliZWxsZUFjdGUubm9tQ2Fub25pcXVlXVxuICAgIGlmICghKHR5cGVzLmhhcyhcIlNOXCIpICYmIHR5cGVzLmhhcyhcIkFOXCIpKSkge1xuICAgICAgaWYgKHR5cGVzLmhhcyhcIlNOXCIpKSBhY3RlLmxpYmVsbGVBY3RlLm5vbUNhbm9uaXF1ZSArPSBcIiAoU8OpbmF0KVwiXG4gICAgICBlbHNlIGlmICh0eXBlcy5oYXMoXCJBTlwiKSlcbiAgICAgICAgYWN0ZS5saWJlbGxlQWN0ZS5ub21DYW5vbmlxdWUgKz0gXCIgKEFzc2VtYmzDqWUgTmF0aW9uYWxlKVwiXG4gICAgfVxuICB9XG5cbiAgbWVyZ2VDb2Rlcyhjb2RlczogYW55KSB7XG4gICAgZm9yIChjb25zdCBjIG9mIEFycmF5LmZyb20odGhpcy5jb2RlcykpIGNvZGVzLmFkZChjKVxuICB9XG5cbiAgcHJpbnRBbmNob3JzKCkge1xuICAgIGZvciAoY29uc3QgY29kZSBvZiBBcnJheS5mcm9tKHRoaXMuY29kZXMpKSBjb25zb2xlLmxvZyhgLi4gXyR7Y29kZX06YClcbiAgfVxuXG4gIGdldENvZGVzKCkge1xuICAgIHJldHVybiBBcnJheS5mcm9tKHRoaXMuY29kZXMpLmpvaW4oXCIsXCIpXG4gIH1cbn1cblxuY2xhc3MgTGVjdHVyZU1hcHBlciB7XG4gIG1hcHBpbmc6IGFueSA9IHt9XG5cbiAgaGFzKGNvZGVBY3RlOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gY29kZUFjdGUgaW4gdGhpcy5tYXBwaW5nXG4gIH1cblxuICBjb2xsZWN0KGFjdGU6IGFueSkge1xuICAgIGNvbnN0IGNvZGVBY3RlID0gTGVjdHVyZU1hcHBpbmcuZ2V0Q29kZUFjdGUoYWN0ZSlcbiAgICBpZiAoY29kZUFjdGUgIT0gdW5kZWZpbmVkKSB7XG4gICAgICBsZXQgbGVjdHVyZXMgPSB0aGlzLm1hcHBpbmdcbiAgICAgIGlmICghKGNvZGVBY3RlIGluIGxlY3R1cmVzKSkgbGVjdHVyZXNbY29kZUFjdGVdID0gbmV3IExlY3R1cmVNYXBwaW5nKClcbiAgICAgIGxlY3R1cmVzW2NvZGVBY3RlXS5hZGQoYWN0ZSlcbiAgICB9XG4gIH1cblxuICByZW1hcChhY3RlOiBhbnkpIHtcbiAgICBjb25zdCBjb2RlQWN0ZSA9IExlY3R1cmVNYXBwaW5nLmdldENvZGVBY3RlKGFjdGUpXG4gICAgaWYgKGNvZGVBY3RlICE9IHVuZGVmaW5lZCkgdGhpcy5tYXBwaW5nW2NvZGVBY3RlXS5yZW1hcChhY3RlLCBjb2RlQWN0ZSlcbiAgfVxuXG4gIG1lcmdlQ29kZXMoY29kZXM6IGFueSwgY29kZUFjdGU6IHN0cmluZykge1xuICAgIHRoaXMubWFwcGluZ1tjb2RlQWN0ZV0ubWVyZ2VDb2Rlcyhjb2RlcylcbiAgfVxuXG4gIHByaW50QW5jaG9ycyhjb2RlQWN0ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5tYXBwaW5nW2NvZGVBY3RlXS5wcmludEFuY2hvcnMoKVxuICB9XG5cbiAgZ2V0Q29kZXMoY29kZUFjdGU6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLm1hcHBpbmdbY29kZUFjdGVdLmdldENvZGVzKClcbiAgfVxufVxuXG5jbGFzcyBBY3Rlc0RvY3VtZW50YXRpb24ge1xuICB2ZXJib3NlOiBib29sZWFuXG4gIHNhbml0eUNoZWNrczogYm9vbGVhblxuICBsZWN0dXJlTWFwcGVyOiBhbnkgPSBuZXcgTGVjdHVyZU1hcHBlcigpXG4gIHJlbWFwcGVkUHJvY2VkdXJlczogYW55ID0ge31cbiAgYW5jaG9yc1ByaW50ZWQ6IGFueSA9IHt9XG4gIGFuY2hvcnM6IGFueSA9IG5ldyBTZXQoKVxuICBjb2RlczogYW55ID0ge31cbiAgcHJvY2VkdXJlczogYW55ID0gbnVsbFxuICBjb2RlMnBhdHRlcm46IGFueSA9IG5ldyBDb2RlMlBhdHRlcm4obnVsbCwge1xuICAgIFwiUHJvY8OpZHVyZSBsw6lnaXNsYXRpdmVcIjogbmV3IENvZGUyUGF0dGVybihcbiAgICAgIFwiXigoKC9sZWN0dXJlLykrKXwoKC9sZWN0dXJlLykrL0NNUC8oL2xlY3R1cmUvKSopKSgvQ0MvKT8oL1BST00vKT8oL0FOLUFQUExJLyk/JFwiLFxuICAgICAge1xuICAgICAgICBsZWN0dXJlOiBuZXcgQ29kZTJQYXR0ZXJuKFxuICAgICAgICAgIFwiXigvREVQT1QvKT8oL0RQVExFVFRSRUNULyk/KC9FVEkvKT8oL0FWQ0UvKT8oL0RHVlQvKT8oL0FDSU4vKT8oL01PVElPTi8pKigvUFJPQ0FDQy8pPygvQ09NLyk/KCgvREVCQVRTLykrKT8oL1JUUklOSS8pPyRcIixcbiAgICAgICAgICB7XG4gICAgICAgICAgICBcImxlY3R1cmUtQ09NXCI6IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9GT05EL3wvQVZJUy8pKyRcIiwge1xuICAgICAgICAgICAgICBcImxlY3R1cmUtQ09NLUZPTkRcIjogbmV3IENvZGUyUGF0dGVybkNvbUZvbmQoKSxcbiAgICAgICAgICAgICAgXCJsZWN0dXJlLUNPTS1BVklTXCI6IG5ldyBDb2RlMlBhdHRlcm5Db21Gb25kKCksXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIFwibGVjdHVyZS1ERUJBVFNcIjogbmV3IENvZGUyUGF0dGVybihcbiAgICAgICAgICAgICAgXCJeKC9TRUFOQ0UvKSooKC9NT1RJT04vKT8oL01PVElPTi1WT1RFLykrKT8oL0RFQy8pPyRcIixcbiAgICAgICAgICAgICAge30sXG4gICAgICAgICAgICApLFxuICAgICAgICAgIH0sXG4gICAgICAgICksXG4gICAgICAgIENNUDogbmV3IENvZGUyUGF0dGVybihcbiAgICAgICAgICBcIl4oL0RFUE9UL3wvU0FJU0lFLyl7MSwyfSgvQ09NLyk/KC9ERUMvKT8oL0RFQkFUUy1BTi8vREVCQVRTLVNOLyk/XCIsXG4gICAgICAgICAge1xuICAgICAgICAgICAgXCJDTVAtQ09NXCI6IG5ldyBDb2RlMlBhdHRlcm4oXG4gICAgICAgICAgICAgIFwiXigvTk9NSU4vKT8oL1JBUFBPUlQtQU4vfC9SQVBQT1JULVNOLyl7Mn0kXCIsXG4gICAgICAgICAgICAgIHt9LFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIFwiQ01QLURFQkFUUy1BTlwiOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvU0VBTkNFLykqKC9ERUMvKT8kXCIsIHt9KSxcbiAgICAgICAgICAgIFwiQ01QLURFQkFUUy1TTlwiOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvU0VBTkNFLykqKC9ERUMvKT8kXCIsIHt9KSxcbiAgICAgICAgICB9LFxuICAgICAgICApLFxuICAgICAgICBDQzogbmV3IENvZGUyUGF0dGVybihcIl4oL1NBSVNJRS8pKygvQ09OQ0xVU0lPTi8pPyRcIiwge30pLFxuICAgICAgICBQUk9NOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvUFVCLyk/JFwiLCB7fSksXG4gICAgICAgIFwiQU4tQVBQTElcIjogbmV3IENvZGUyUGF0dGVybihcIl4oL1JBUFBPUlQvKT8kXCIsIHt9KSxcbiAgICAgIH0sXG4gICAgKSxcbiAgICBcIkFsbG9jdXRpb24gZHUgUHLDqXNpZGVudCBkZSBsJ0Fzc2VtYmzDqWUgbmF0aW9uYWxlXCI6IG5ldyBDb2RlMlBhdHRlcm4oXG4gICAgICBcIl4vQU4yMS8kXCIsXG4gICAgICB7XG4gICAgICAgIEFOMjE6IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9BUEFOLyk/JFwiLCB7fSksXG4gICAgICB9LFxuICAgICksXG4gICAgXCJSw6lzb2x1dGlvbiBBcnRpY2xlIDM0LTFcIjogbmV3IENvZGUyUGF0dGVybihcIl4oL0FOTFVOSS8pPyRcIiwge1xuICAgICAgQU5MVU5JOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvREVQT1QvKT8oL0RFQkFUUy8pPygvUlRSSU5JLyk/JFwiLCB7XG4gICAgICAgIFwiQU5MVU5JLURFQkFUU1wiOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvU0VBTkNFLykrKC9ERUMvKT8kXCIsIHt9KSxcbiAgICAgIH0pLFxuICAgIH0pLFxuICAgIFLDqXNvbHV0aW9uOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvQU5MVU5JLyk/KC9DQy8pPyRcIiwge1xuICAgICAgQU5MVU5JOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvREVQT1QvKT8oL0NPTS8pPygvREVCQVRTL3wvUlRSSU5JLyk/JFwiLCB7XG4gICAgICAgIFwiQU5MVU5JLUNPTVwiOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvQ0FFLyk/KC9GT05ELyk/JFwiLCB7XG4gICAgICAgICAgXCJBTkxVTkktQ09NLUZPTkRcIjogbmV3IENvZGUyUGF0dGVybkNvbUZvbmQoKSxcbiAgICAgICAgICBcIkFOTFVOSS1DT00tQ0FFXCI6IG5ldyBDb2RlMlBhdHRlcm4oXG4gICAgICAgICAgICBcIl4oL1NBSVNJRS8pPygvTk9NSU4vKT8oL1JFVU5JT04vKT8oL1JBUFBPUlQvKT8oL0RFQy8pPyRcIixcbiAgICAgICAgICAgIHt9LFxuICAgICAgICAgICksXG4gICAgICAgIH0pLFxuICAgICAgICBcIkFOTFVOSS1ERUJBVFNcIjogbmV3IENvZGUyUGF0dGVybihcIl4oL1NFQU5DRS8pKigvREVDLyk/JFwiLCB7fSksXG4gICAgICB9KSxcbiAgICAgIENDOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvU0FJU0lFLyk/KC9DT05DTFVTSU9OLyk/JFwiLCB7fSksXG4gICAgfSksXG4gICAgXCJSYXBwb3J0IGQnaW5mb3JtYXRpb24gc2FucyBtaXNzaW9uXCI6IG5ldyBDb2RlMlBhdHRlcm4oXG4gICAgICBcIl4oL0FOMjAvKT8oL0VVLyk/JFwiLFxuICAgICAge1xuICAgICAgICBBTjIwOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvUkFQUE9SVC8pPyRcIiwge30pLFxuICAgICAgICBFVTogbmV3IENvZGUyUGF0dGVybihcIl4oL0RFQy8pKyRcIiwge30pLFxuICAgICAgfSxcbiAgICApLFxuICAgIFwiTWlzc2lvbiBkJ2luZm9ybWF0aW9uXCI6IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9BTjIwLyk/JFwiLCB7XG4gICAgICBBTjIwOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvTUlTSU5GLyk/JFwiLCB7XG4gICAgICAgIFwiQU4yMC1NSVNJTkZcIjogbmV3IENvZGUyUGF0dGVybihcbiAgICAgICAgICBcIl4oL0NSRUEvKT8oL05PTUlOLyk/KC9SQVBQT1JULyk/JFwiLFxuICAgICAgICAgIHt9LFxuICAgICAgICApLFxuICAgICAgfSksXG4gICAgfSksXG4gICAgXCJDb21taXNzaW9uIGQnZW5xdcOqdGVcIjogbmV3IENvZGUyUGF0dGVybihcIl4oL0FOMjAvKT8kXCIsIHtcbiAgICAgIEFOMjA6IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9DT01FTlEvKT8kXCIsIHtcbiAgICAgICAgXCJBTjIwLUNPTUVOUVwiOiBuZXcgQ29kZTJQYXR0ZXJuKFxuICAgICAgICAgIFwiXigvQ1JFQS8pPygvTk9NSU4vKT8oL1JBUFBPUlQvKT8kXCIsXG4gICAgICAgICAge30sXG4gICAgICAgICksXG4gICAgICB9KSxcbiAgICB9KSxcbiAgICBcIkVuZ2FnZW1lbnQgZGUgbGEgcmVzcG9uc2FiaWxpdMOpIGdvdXZlcm5lbWVudGFsZVwiOiBuZXcgQ29kZTJQYXR0ZXJuKFxuICAgICAgXCJeL0FOMjEvJFwiLFxuICAgICAge1xuICAgICAgICBBTjIxOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigoKC9NT1RJT04vKSovREVCQVRTLyl8KC9ER1ZULykpezEsMn0kXCIsIHtcbiAgICAgICAgICBcIkFOMjEtREVCQVRTXCI6IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9TRUFOQ0UvKSooL01PVElPTi1WT1RFLykqJFwiLCB7fSksXG4gICAgICAgIH0pLFxuICAgICAgfSxcbiAgICApLFxuICAgIFwiTW90aW9uIHLDqWbDqXJlbmRhaXJlXCI6IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9sZWN0dXJlLykrJFwiLCB7XG4gICAgICBsZWN0dXJlOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvREVQT1QvKT8oL0NPTS8pPygvREVCQVRTLyk/JFwiLCB7XG4gICAgICAgIFwibGVjdHVyZS1DT01cIjogbmV3IENvZGUyUGF0dGVybihcIl4oL0ZPTkQvKT8kXCIsIHtcbiAgICAgICAgICBcImxlY3R1cmUtQ09NLUZPTkRcIjogbmV3IENvZGUyUGF0dGVybihcbiAgICAgICAgICAgIFwiXigvU0FJU0lFLyk/KC9OT01JTi8pKigvUkFQUE9SVC8pKiRcIixcbiAgICAgICAgICAgIHt9LFxuICAgICAgICAgICksXG4gICAgICAgIH0pLFxuICAgICAgICBcImxlY3R1cmUtREVCQVRTXCI6IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9ERUMvKT8kXCIsIHt9KSxcbiAgICAgIH0pLFxuICAgIH0pLFxuICAgIEltbXVuaXTDqTogbmV3IENvZGUyUGF0dGVybihcIl4oL0FOTFVOSS8pKyRcIiwge1xuICAgICAgQU5MVU5JOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvREVQT1QvKT8oL0NPTS8pPygvREVCQVRTLyk/KC9SVFJJTkkvKT8kXCIsIHtcbiAgICAgICAgXCJBTkxVTkktQ09NXCI6IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9GT05ELyk/JFwiLCB7XG4gICAgICAgICAgXCJBTkxVTkktQ09NLUZPTkRcIjogbmV3IENvZGUyUGF0dGVybihcbiAgICAgICAgICAgIFwiXigvU0FJU0lFLyk/KC9OT01JTi8pKigvUkFQUE9SVC8pKiRcIixcbiAgICAgICAgICAgIHt9LFxuICAgICAgICAgICksXG4gICAgICAgIH0pLFxuICAgICAgICBcIkFOTFVOSS1ERUJBVFNcIjogbmV3IENvZGUyUGF0dGVybihcIl4oL1NFQU5DRS8pPygvREVDLykkXCIsIHt9KSxcbiAgICAgIH0pLFxuICAgIH0pLFxuICAgIFwiUmVzcG9uc2FiaWxpdMOpIHDDqW5hbGUgZHUgcHLDqXNpZGVudCBkZSBsYSByw6lwdWJsaXF1ZVwiOiBuZXcgQ29kZTJQYXR0ZXJuKFxuICAgICAgXCJeL2xlY3R1cmUvJFwiLFxuICAgICAge1xuICAgICAgICBsZWN0dXJlOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvREVQT1QvKT8oL1JFQ0JVUkVBVS8pPyRcIiwge30pLFxuICAgICAgfSxcbiAgICApLFxuICAgIFwiUHJvcG9zaXRpb24gZGUgbG9pIHByw6lzZW50w6llIGVuIGFwcGxpY2F0aW9uIGRlIGwnYXJ0aWNsZSAxMSBkZSBsYSBDb25zdGl0dXRpb25cIjpcbiAgICAgIG5ldyBDb2RlMlBhdHRlcm4oXCJeL2xlY3R1cmUvJFwiLCB7XG4gICAgICAgIGxlY3R1cmU6IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9ERVBPVC8pPyRcIiwge30pLFxuICAgICAgfSksXG4gIH0pXG5cbiAgY29uc3RydWN0b3Ioc2FuaXR5Q2hlY2tzOiBib29sZWFuLCB2ZXJib3NlOiBib29sZWFuID0gZmFsc2UpIHtcbiAgICB0aGlzLnZlcmJvc2UgPSB2ZXJib3NlXG4gICAgdGhpcy5zYW5pdHlDaGVja3MgPSBzYW5pdHlDaGVja3NcbiAgICB0aGlzLnByb2NlZHVyZXMgPSB7fVxuICAgIHRoaXMuY29kZTJwYXR0ZXJuLl9tYXRjaF9jb3VudF8rK1xuICB9XG5cbiAgd2Fsa0ZpbGVzKGRhdGE6IHN0cmluZ1tdLCBhY3Rpb246IGFueSkge1xuICAgIGZvciAoY29uc3QgZmlsZSBvZiBnZXRGaWxlcyhkYXRhKSkge1xuICAgICAgY29uc3QgZG9zc2llciA9IGxvYWQoZmlsZSlcbiAgICAgIGxldCBwcm9jZWR1cmU6IHN0cmluZyA9IHRoaXMucmVtYXBQcm9jZWR1cmUoXG4gICAgICAgIGRvc3NpZXIucHJvY2VkdXJlUGFybGVtZW50YWlyZS5saWJlbGxlLFxuICAgICAgKVxuICAgICAgaWYgKCEocHJvY2VkdXJlIGluIHRoaXMucHJvY2VkdXJlcykpIHRoaXMucHJvY2VkdXJlc1twcm9jZWR1cmVdID0ge31cbiAgICAgIGFjdGlvbihcbiAgICAgICAgdGhpcy5wcm9jZWR1cmVzW3Byb2NlZHVyZV0sXG4gICAgICAgIGRvc3NpZXIuYWN0ZXNMZWdpc2xhdGlmcyxcbiAgICAgICAgdGhpcy5jb2RlMnBhdHRlcm5bcHJvY2VkdXJlXSxcbiAgICAgICAgbnVsbCxcbiAgICAgIClcbiAgICB9XG4gIH1cblxuICBjb2xsZWN0RmlsZXMoZGF0YTogc3RyaW5nW10pIHtcbiAgICB0aGlzLndhbGtGaWxlcyhcbiAgICAgIGRhdGEsXG4gICAgICAoX2FjdGVzOiBhbnksIGFjdGVzTGVnaXNsYXRpZnM6IGFueSwgX2MycDogYW55LCBfcGFyZW50OiBzdHJpbmcpID0+IHtcbiAgICAgICAgdGhpcy5jb2xsZWN0KGFjdGVzTGVnaXNsYXRpZnMpXG4gICAgICB9LFxuICAgIClcbiAgfVxuXG4gIHByb2Nlc3NGaWxlcyhkYXRhOiBzdHJpbmdbXSkge1xuICAgIHRoaXMud2Fsa0ZpbGVzKFxuICAgICAgZGF0YSxcbiAgICAgIChhY3RlczogYW55LCBhY3Rlc0xlZ2lzbGF0aWZzOiBhbnksIGMycDogYW55LCBwYXJlbnQ6IHN0cmluZykgPT4ge1xuICAgICAgICB0aGlzLm1lcmdlKGFjdGVzLCBhY3Rlc0xlZ2lzbGF0aWZzLCBjMnAsIHBhcmVudClcbiAgICAgIH0sXG4gICAgKVxuICAgIGlmICh0aGlzLnNhbml0eUNoZWNrcykgdGhpcy52YWxpZGF0ZSgpXG4gIH1cblxuICByZW1hcEFjdGVzKGFjdGVzOiBhbnkpOiBhbnkge1xuICAgIGxldCByZXN1bHRzID0gW11cbiAgICBmb3IgKGNvbnN0IGFjdGUgb2YgYWN0ZXMpIHtcbiAgICAgIHRoaXMubGVjdHVyZU1hcHBlci5yZW1hcChhY3RlKVxuXG4gICAgICAvLyBDQy1TQUlTSUUtIHN1ZmZpeCBkb2VzIG5vdCBpbXBseSBhIGhpZXJhcmNoeVxuICAgICAgYWN0ZS5jb2RlQWN0ZSA9IGFjdGUuY29kZUFjdGUucmVwbGFjZSgvXkNDLVNBSVNJRS4qLywgXCJDQy1TQUlTSUVcIilcblxuICAgICAgcmVzdWx0cy5wdXNoKGFjdGUpXG4gICAgfVxuICAgIHJldHVybiByZXN1bHRzXG4gIH1cblxuICBjb2xsZWN0QWN0ZXMoYWN0ZXM6IGFueSk6IGFueSB7XG4gICAgbGV0IHJlc3VsdHMgPSBbXVxuICAgIGZvciAoY29uc3QgYWN0ZSBvZiBhY3Rlcykge1xuICAgICAgdGhpcy5sZWN0dXJlTWFwcGVyLmNvbGxlY3QoYWN0ZSlcblxuICAgICAgcmVzdWx0cy5wdXNoKGFjdGUpXG4gICAgfVxuICAgIHJldHVybiByZXN1bHRzXG4gIH1cblxuICByZW1hcFByb2NlZHVyZShwcm9jZWR1cmU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgbWVyZ2VfcHJvY2VkdXJlczogTWFwPHN0cmluZywgYW55PiA9IG5ldyBNYXAoW1xuICAgICAgW1wiUHJvcG9zaXRpb24gZGUgbG9pIG9yZGluYWlyZVwiLCBcIlByb2PDqWR1cmUgbMOpZ2lzbGF0aXZlXCJdLFxuICAgICAgW1wiUHJvamV0IGRlIGxvaSBvcmRpbmFpcmVcIiwgXCJQcm9jw6lkdXJlIGzDqWdpc2xhdGl2ZVwiXSxcbiAgICAgIFtcbiAgICAgICAgXCJQcm9qZXQgZGUgcmF0aWZpY2F0aW9uIGRlcyB0cmFpdMOpcyBldCBjb252ZW50aW9uc1wiLFxuICAgICAgICBcIlByb2PDqWR1cmUgbMOpZ2lzbGF0aXZlXCIsXG4gICAgICBdLFxuICAgICAgW1wiUHJvamV0IG91IHByb3Bvc2l0aW9uIGRlIGxvaSBvcmdhbmlxdWVcIiwgXCJQcm9jw6lkdXJlIGzDqWdpc2xhdGl2ZVwiXSxcbiAgICAgIFtcbiAgICAgICAgXCJQcm9qZXQgb3UgcHJvcG9zaXRpb24gZGUgbG9pIGNvbnN0aXR1dGlvbm5lbGxlXCIsXG4gICAgICAgIFwiUHJvY8OpZHVyZSBsw6lnaXNsYXRpdmVcIixcbiAgICAgIF0sXG4gICAgICBbXCJQcm9qZXQgZGUgbG9pIGRlIGZpbmFuY2VzIGRlIGwnYW5uw6llXCIsIFwiUHJvY8OpZHVyZSBsw6lnaXNsYXRpdmVcIl0sXG4gICAgICBbXCJQcm9qZXQgZGUgbG9pIGRlIGZpbmFuY2VzIHJlY3RpZmljYXRpdmVcIiwgXCJQcm9jw6lkdXJlIGzDqWdpc2xhdGl2ZVwiXSxcbiAgICAgIFtcbiAgICAgICAgXCJQcm9qZXQgZGUgbG9pIGRlIGZpbmFuY2VtZW50IGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiLFxuICAgICAgICBcIlByb2PDqWR1cmUgbMOpZ2lzbGF0aXZlXCIsXG4gICAgICBdLFxuICAgIF0pXG4gICAgaWYgKG1lcmdlX3Byb2NlZHVyZXMuaGFzKHByb2NlZHVyZSkpIHtcbiAgICAgIHRoaXMucmVtYXBwZWRQcm9jZWR1cmVzW3Byb2NlZHVyZV0gPSBudWxsXG4gICAgICByZXR1cm4gbWVyZ2VfcHJvY2VkdXJlcy5nZXQocHJvY2VkdXJlKVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gcHJvY2VkdXJlXG4gICAgfVxuICB9XG5cbiAgLy8gcmV0dXJuIHRoZSBjb2RlQWN0ZXMgaW4gdGhlIHNhbWUgb3JkZXIgdGhleSBhcHBlYXIgaW4gdGhlIHJlZ2V4cFxuICBvcmRlcmVkQ29kZXMoY29kZXM6IGFueSwgYzJwOiBhbnksIHBhcmVudDogc3RyaW5nKTogU2V0PHN0cmluZz4ge1xuICAgIGNvZGVzID0gbmV3IFNldChjb2RlcylcbiAgICBpZiAoIXRoaXMuc2FuaXR5Q2hlY2tzKSByZXR1cm4gY29kZXNcbiAgICBsZXQgb3JkZXJlZCA9IGMycFtcIl9wYXR0ZXJuX1wiXS5tYXRjaChuZXcgUmVnRXhwKFwiLy4qPy9cIiwgXCJnXCIpKVxuICAgIG9yZGVyZWQgPSBvcmRlcmVkLm1hcCgoeDogc3RyaW5nKSA9PiB4LnJlcGxhY2UobmV3IFJlZ0V4cChcIi8oLiopL1wiKSwgXCIkMVwiKSlcbiAgICBpZiAocGFyZW50ICE9IG51bGwpIG9yZGVyZWQgPSBvcmRlcmVkLm1hcCgoeDogc3RyaW5nKSA9PiBgJHtwYXJlbnR9LSR7eH1gKVxuICAgIG9yZGVyZWQgPSBuZXcgU2V0KG9yZGVyZWQpXG4gICAgYXNzZXJ0KGVxU2V0KG9yZGVyZWQsIGNvZGVzKSwgYCR7Wy4uLm9yZGVyZWRdfSAhPSAke1suLi5jb2Rlc119YClcbiAgICByZXR1cm4gb3JkZXJlZFxuICB9XG5cbiAgdmFsaWRhdGVDaHJvbm9sb2d5KGFjdGVzTGVnaXNsYXRpZnM6IGFueSwgYzJwOiBhbnksIHBhcmVudDogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3QgcGF0dGVybiA9IGMycFtcIl9wYXR0ZXJuX1wiXVxuICAgIGNvbnN0IHNlcXVlbmNlID0gYWN0ZXNMZWdpc2xhdGlmc1xuICAgICAgLm1hcCgoeDogYW55KSA9PiBgLyR7eC5jb2RlQWN0ZX0vYC5yZXBsYWNlKGAvJHtwYXJlbnR9LWAsIFwiL1wiKSlcbiAgICAgIC5qb2luKFwiXCIpXG4gICAgYXNzZXJ0KFxuICAgICAgc2VxdWVuY2UubWF0Y2gobmV3IFJlZ0V4cChwYXR0ZXJuKSksXG4gICAgICBgJHtwYXR0ZXJufSBkb2VzIG5vdCBtYXRjaCAke3NlcXVlbmNlfWAsXG4gICAgKVxuICAgIGMycC5fbWF0Y2hfY291bnRfKytcbiAgfVxuXG4gIG1lcmdlQWN0ZShhY3RlczogYW55LCBhY3RlOiBhbnksIGMycDogYW55LCBwYXJlbnQ6IHN0cmluZyk6IHZvaWQge1xuICAgIGxldCBjb2RlOiBzdHJpbmcgPSBhY3RlLmNvZGVBY3RlXG4gICAgbGV0IHNob3J0Q29kZTogc3RyaW5nID0gY29kZS5yZXBsYWNlKG5ldyBSZWdFeHAoYF4ke3BhcmVudH0tYCksIFwiXCIpXG4gICAgc2hvcnRDb2RlID0gc2hvcnRDb2RlLnJlcGxhY2UoLy0oQU58U04pJC8sIFwiXCIpXG4gICAgdGhpcy5jb2Rlc1tzaG9ydENvZGVdID0gbnVsbFxuICAgIGxldCBuYW1lOiBzdHJpbmcgPSBhY3RlLmxpYmVsbGVBY3RlLm5vbUNhbm9uaXF1ZVxuICAgIGlmICghKGNvZGUgaW4gYWN0ZXMpKSB7XG4gICAgICBhY3Rlc1tjb2RlXSA9IHtcbiAgICAgICAgdHlwZTogYWN0ZS54c2lUeXBlLFxuICAgICAgICBuYW1lOiBuZXcgU2V0KFtuYW1lXSksXG4gICAgICAgIHNob3J0Q29kZTogc2hvcnRDb2RlLFxuICAgICAgICBhY3Rlczoge30sXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGFjdGVzW2NvZGVdLm5hbWUuYWRkKG5hbWUpXG4gICAgfVxuICAgIGlmIChcImFjdGVzTGVnaXNsYXRpZnNcIiBpbiBhY3RlKVxuICAgICAgdGhpcy5tZXJnZShhY3Rlc1tjb2RlXS5hY3RlcywgYWN0ZS5hY3Rlc0xlZ2lzbGF0aWZzLCBjMnBbY29kZV0sIGNvZGUpXG4gIH1cblxuICBtZXJnZShhY3RlczogYW55LCBhY3Rlc0xlZ2lzbGF0aWZzOiBhbnksIGMycDogYW55LCBwYXJlbnQ6IGFueSk6IHZvaWQge1xuICAgIGNvbnN0IGwgPSB0aGlzLnJlbWFwQWN0ZXMoYWN0ZXNMZWdpc2xhdGlmcylcbiAgICB0aGlzLnZhbGlkYXRlQ2hyb25vbG9neShsLCBjMnAsIHBhcmVudClcbiAgICBmb3IgKGNvbnN0IGFjdGUgb2YgbCkgdGhpcy5tZXJnZUFjdGUoYWN0ZXMsIGFjdGUsIGMycCwgcGFyZW50KVxuICB9XG5cbiAgY29sbGVjdChhY3Rlc0xlZ2lzbGF0aWZzOiBhbnkpOiB2b2lkIHtcbiAgICBmb3IgKGNvbnN0IGFjdGUgb2YgdGhpcy5jb2xsZWN0QWN0ZXMoYWN0ZXNMZWdpc2xhdGlmcykpXG4gICAgICBpZiAoXCJhY3Rlc0xlZ2lzbGF0aWZzXCIgaW4gYWN0ZSkgdGhpcy5jb2xsZWN0KGFjdGUuYWN0ZXNMZWdpc2xhdGlmcylcbiAgfVxuXG4gIHZhbGlkYXRlTGV2ZWwoYzJwOiBhbnksIHBhdGg6IGFueSkge1xuICAgIGFzc2VydChjMnAuX21hdGNoX2NvdW50XyA+IDAsIGAke3BhdGh9IGlzIG5ldmVyIHVzZWRgKVxuICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKGMycCkgYXMgW3N0cmluZywgYW55XVtdKSB7XG4gICAgICBpZiAodmFsdWUgIT0gbnVsbCAmJiB2YWx1ZS5jb25zdHJ1Y3Rvci5uYW1lID09IFwiQ29kZTJQYXR0ZXJuXCIpXG4gICAgICAgIHRoaXMudmFsaWRhdGVMZXZlbCh2YWx1ZSwgcGF0aC5jb25jYXQoW2tleV0pKVxuICAgIH1cbiAgfVxuXG4gIHZhbGlkYXRlKCkge1xuICAgIHRoaXMudmFsaWRhdGVMZXZlbCh0aGlzLmNvZGUycGF0dGVybiwgW10pXG4gIH1cblxuICBwcmludEVudHJ5KHNlY3Rpb25zOiBzdHJpbmcsIGVudHJ5OiBzdHJpbmcsIGNvZGVzOiBzdHJpbmcpIHtcbiAgICBjb25zdCB0aXRsZSA9IGBcXGAke2VudHJ5fVxcYF9fYFxuICAgIGNvbnNvbGUubG9nKHRpdGxlKVxuICAgIGNvbnN0IHVuZGVybGluZSA9IG5ldyBBcnJheSh0aXRsZS5sZW5ndGggKyAxKS5qb2luKHNlY3Rpb25zWzBdKVxuICAgIGNvbnNvbGUubG9nKHVuZGVybGluZSlcbiAgICBjb25zb2xlLmxvZyhjb2RlcylcbiAgfVxuXG4gIGFkZEFuY2hvcnMoa2V5OiBzdHJpbmcpIHtcbiAgICBpZiAoa2V5IGluIHRoaXMuYW5jaG9yc1ByaW50ZWQpIHJldHVyblxuICAgIGlmICh0aGlzLmxlY3R1cmVNYXBwZXIuaGFzKGtleSkpXG4gICAgICB0aGlzLmxlY3R1cmVNYXBwZXIubWVyZ2VDb2Rlcyh0aGlzLmFuY2hvcnMsIGtleSlcbiAgICBlbHNlIHRoaXMuYW5jaG9ycy5hZGQoa2V5KVxuICB9XG5cbiAgcHJpbnRBbmNob3JzKGtleTogc3RyaW5nKSB7XG4gICAgaWYgKGtleSBpbiB0aGlzLmFuY2hvcnNQcmludGVkKSByZXR1cm5cbiAgICB0aGlzLmFuY2hvcnNQcmludGVkW2tleV0gPSBudWxsXG4gICAgaWYgKHRoaXMubGVjdHVyZU1hcHBlci5oYXMoa2V5KSkgdGhpcy5sZWN0dXJlTWFwcGVyLnByaW50QW5jaG9ycyhrZXkpXG4gICAgZWxzZSBjb25zb2xlLmxvZyhgLi4gXyR7a2V5fTpgKVxuICB9XG5cbiAgZ2V0Q29kZXMoa2V5OiBzdHJpbmcsIHNob3J0Q29kZTogc3RyaW5nKSB7XG4gICAgaWYgKGtleSBpbiB0aGlzLmFuY2hvcnNQcmludGVkKSByZXR1cm4gYGNmIFxcXFwqJHtzaG9ydENvZGV9XFxcXCpgXG4gICAgaWYgKHRoaXMubGVjdHVyZU1hcHBlci5oYXMoa2V5KSkgcmV0dXJuIHRoaXMubGVjdHVyZU1hcHBlci5nZXRDb2RlcyhrZXkpXG4gICAgZWxzZSByZXR1cm4ga2V5XG4gIH1cblxuICByZW5hbWVDTVAoa2V5OiBzdHJpbmcsIG5hbWU6IHN0cmluZykge1xuICAgIGlmIChrZXkuc3RhcnRzV2l0aChcIkNNUFwiKSkge1xuICAgICAgaWYgKGtleS5lbmRzV2l0aChcIi1TTlwiKSkgcmV0dXJuIGAke25hbWV9IChTw6luYXQpYFxuICAgICAgZWxzZSBpZiAoa2V5LmVuZHNXaXRoKFwiLUFOXCIpKSByZXR1cm4gYCR7bmFtZX0gKEFzc2VtYmzDqWUgTmF0aW9uYWxlKWBcbiAgICAgIGVsc2UgcmV0dXJuIG5hbWVcbiAgICB9IGVsc2UgcmV0dXJuIG5hbWVcbiAgfVxuXG4gIHByaW50TGV2ZWwoYWN0ZXM6IGFueSwgc2VjdGlvbnM6IHN0cmluZywgYzJwOiBhbnksIHBhcmVudDogYW55KSB7XG4gICAgY29uc3Qga2V5czogU2V0PHN0cmluZz4gPSB0aGlzLm9yZGVyZWRDb2RlcyhPYmplY3Qua2V5cyhhY3RlcyksIGMycCwgcGFyZW50KVxuICAgIGZvciAoY29uc3Qga2V5IG9mIGtleXMpIHtcbiAgICAgIGNvbnN0IHZhbHVlID0gYWN0ZXNba2V5XVxuICAgICAgbGV0IG5hbWUgPSBBcnJheS5mcm9tKHZhbHVlLm5hbWUpLmpvaW4oXCIsIFwiKVxuICAgICAgbmFtZSA9IHRoaXMucmVuYW1lQ01QKGtleSwgbmFtZSlcbiAgICAgIGNvbnN0IGNvZGVzID0gdGhpcy5nZXRDb2RlcyhrZXksIHZhbHVlLnNob3J0Q29kZSlcbiAgICAgIHRoaXMuYWRkQW5jaG9ycyhrZXkpXG4gICAgICB0aGlzLnByaW50QW5jaG9ycyhrZXkpXG4gICAgICBjb25zb2xlLmxvZyhcIlwiKVxuICAgICAgdGhpcy5wcmludEVudHJ5KHNlY3Rpb25zLCBgJHtuYW1lfSA8JHt2YWx1ZS5zaG9ydENvZGV9VE9DXz5gLCBjb2RlcylcbiAgICAgIGNvbnNvbGUubG9nKFwiXCIpXG4gICAgICBpZiAoT2JqZWN0LmtleXModmFsdWUuYWN0ZXMpLmxlbmd0aCA+IDApXG4gICAgICAgIHRoaXMucHJpbnRMZXZlbCh2YWx1ZS5hY3Rlcywgc2VjdGlvbnMuc3Vic3RyaW5nKDEpLCBjMnBba2V5XSwga2V5KVxuICAgIH1cbiAgfVxuXG4gIHByaW50Q29kZXMoKSB7XG4gICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXModGhpcy5jb2RlcykpXG4gICAgICBjb25zb2xlLmxvZyhgLi4gXyR7a2V5fVRPQzogaHR0cDovL2ApXG4gIH1cblxuICBwcmludEFuY2hvcnNJbmRleCgpIHtcbiAgICBmb3IgKGNvbnN0IGNvZGUgb2YgQXJyYXkuZnJvbSh0aGlzLmFuY2hvcnMpKVxuICAgICAgY29uc29sZS5sb2coYCogOnJlZjpcXGAke2NvZGV9IDwke2NvZGV9PlxcYGApXG4gIH1cblxuICBnZXRBZ2dyZWdhdGVkKHByb2NlZHVyZTogc3RyaW5nKSB7XG4gICAgaWYgKHByb2NlZHVyZSA9PSBcIlByb2PDqWR1cmUgbMOpZ2lzbGF0aXZlXCIpIHtcbiAgICAgIGNvbnN0IHJlbWFwcGVkID0gT2JqZWN0LmtleXModGhpcy5yZW1hcHBlZFByb2NlZHVyZXMpLmpvaW4oXCIsIFwiKVxuICAgICAgcmV0dXJuIGAgKGFncsOpZ2F0aW9uIGRlICR7cmVtYXBwZWR9KWBcbiAgICB9IGVsc2UgcmV0dXJuIFwiXCJcbiAgfVxuXG4gIHByaW50KCk6IHZvaWQge1xuICAgIHRoaXMuYW5jaG9yc1ByaW50ZWQgPSB7fVxuICAgIGZvciAoY29uc3QgW2tleSwgYWN0ZXNdIG9mIE9iamVjdC5lbnRyaWVzKHRoaXMucHJvY2VkdXJlcykgYXMgW1xuICAgICAgc3RyaW5nLFxuICAgICAgYW55LFxuICAgIF1bXSkge1xuICAgICAgY29uc3QgY29kZSA9IGtleS5yZXBsYWNlKC8gKy9nLCBcIl9cIilcbiAgICAgIHRoaXMuY29kZXNbY29kZV0gPSBudWxsXG4gICAgICBjb25zdCBhZ2dyZWdhdGVkID0gdGhpcy5nZXRBZ2dyZWdhdGVkKGtleSlcbiAgICAgIGNvbnN0IHRpdGxlID0gYFxcYCR7a2V5fSA8JHtjb2RlfVRPQ18+XFxgX18ke2FnZ3JlZ2F0ZWR9YFxuICAgICAgY29uc29sZS5sb2codGl0bGUpXG4gICAgICBjb25zdCB1bmRlcmxpbmUgPSBuZXcgQXJyYXkodGl0bGUubGVuZ3RoICsgMSkuam9pbihcIj1cIilcbiAgICAgIGNvbnNvbGUubG9nKHVuZGVybGluZSlcbiAgICAgIHRoaXMucHJpbnRMZXZlbChhY3RlcywgXCItfi4nXCIsIHRoaXMuY29kZTJwYXR0ZXJuW2tleV0sIG51bGwpXG4gICAgfVxuICAgIHRoaXMucHJpbnRDb2RlcygpXG4gICAgdGhpcy5wcmludEFuY2hvcnNJbmRleCgpXG4gIH1cbn1cblxuZnVuY3Rpb24gbWFpbihhcmd2OiBhbnkpOiBudW1iZXIge1xuICBjb25zdCBvcHRpb25zID0gcGFyc2VBcmdzKGFyZ3YpXG4gIGlmIChvcHRpb25zID09PSBudWxsKSByZXR1cm4gMVxuICBsZXQgZG9jID0gbmV3IEFjdGVzRG9jdW1lbnRhdGlvbihcbiAgICAhb3B0aW9uc1tcIm5vLXNhbml0eS1jaGVja3NcIl0sXG4gICAgb3B0aW9ucy52ZXJib3NlLFxuICApXG4gIGRvYy5jb2xsZWN0RmlsZXMob3B0aW9ucy5kYXRhKVxuICBkb2MucHJvY2Vzc0ZpbGVzKG9wdGlvbnMuZGF0YSlcbiAgZG9jLnByaW50KClcbiAgcmV0dXJuIDBcbn1cblxuLyogaXN0YW5idWwgaWdub3JlIGlmICovXG5pZiAocHJvY2Vzcy5hcmd2WzFdLmVuZHNXaXRoKFwiZG9jdW1lbnRfZG9zc2llcnNfbGVnaXNsYXRpZnMudHNcIikpXG4gIHByb2Nlc3MuZXhpdChtYWluKHByb2Nlc3MuYXJndikpXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVBLFNBQVNBLFNBQVQsQ0FBbUJDLElBQW5CLEVBQXdDO0VBQ3RDLElBQU1DLGtCQUFrQixHQUFHLENBQ3pCO0lBQ0VDLFdBQVcsRUFBRSx5REFEZjtJQUVFQyxhQUFhLEVBQUUsSUFGakI7SUFHRUMsUUFBUSxFQUFFLElBSFo7SUFJRUMsSUFBSSxFQUFFLE1BSlI7SUFLRUMsSUFBSSxFQUFFQztFQUxSLENBRHlCLEVBUXpCO0lBQ0VGLElBQUksRUFBRSxrQkFEUjtJQUVFQyxJQUFJLEVBQUVFLE9BRlI7SUFHRU4sV0FBVyxFQUFFO0VBSGYsQ0FSeUIsRUFhekI7SUFDRUcsSUFBSSxFQUFFLFNBRFI7SUFFRUMsSUFBSSxFQUFFRSxPQUZSO0lBR0VOLFdBQVcsRUFBRTtFQUhmLENBYnlCLEVBa0J6QjtJQUNFRyxJQUFJLEVBQUUsTUFEUjtJQUVFSCxXQUFXLEVBQUU7RUFGZixDQWxCeUIsQ0FBM0I7RUF1QkEsSUFBTU8sUUFBUSxHQUFH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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tricoteuses/assemblee",
3
- "version": "0.29.10",
3
+ "version": "0.29.11",
4
4
  "description": "Retrieve, clean up & handle French Assemblée nationale's open data",
5
5
  "keywords": [
6
6
  "Assemblée nationale",