@tricoteuses/assemblee 0.28.0 → 0.28.3
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/api.js +1 -1
- package/lib/api.mjs +1 -1
- package/lib/bugs/acteur-00010/plugin.test.js +45 -5
- package/lib/bugs/acteur-00010/plugin.test.mjs +1 -1
- package/lib/bugs/acteur-00010.js +29 -9
- package/lib/bugs/acteur-00010.mjs +1 -1
- package/lib/bugs/agenda-00002/plugin.test.js +46 -6
- package/lib/bugs/agenda-00002/plugin.test.mjs +1 -1
- package/lib/bugs/agenda-00002.js +29 -13
- package/lib/bugs/agenda-00002.mjs +1 -1
- package/lib/bugs/agenda-00008/plugin.test.js +44 -4
- package/lib/bugs/agenda-00008/plugin.test.mjs +1 -1
- package/lib/bugs/agenda-00008.js +29 -9
- package/lib/bugs/agenda-00008.mjs +1 -1
- package/lib/bugs/agenda-00011/plugin.test.js +50 -12
- package/lib/bugs/agenda-00011/plugin.test.mjs +1 -1
- package/lib/bugs/agenda-00011.js +39 -19
- package/lib/bugs/agenda-00011.mjs +1 -1
- package/lib/bugs.js +51 -31
- package/lib/bugs.mjs +1 -1
- package/lib/cleaners/actes_legislatifs.js +1 -1
- package/lib/cleaners/actes_legislatifs.mjs +1 -1
- package/lib/cleaners/acteurs.js +1 -1
- package/lib/cleaners/acteurs.mjs +1 -1
- package/lib/cleaners/amendements.js +1 -1
- package/lib/cleaners/amendements.mjs +1 -1
- package/lib/cleaners/documents.js +13 -1
- package/lib/cleaners/documents.mjs +13 -1
- package/lib/cleaners/dossiers_legislatifs.js +1 -1
- package/lib/cleaners/dossiers_legislatifs.mjs +1 -1
- package/lib/cleaners/index.js +1 -1
- package/lib/cleaners/index.mjs +1 -1
- package/lib/cleaners/organes.js +1 -1
- package/lib/cleaners/organes.mjs +1 -1
- package/lib/cleaners/reunions.js +1 -1
- package/lib/cleaners/reunions.mjs +1 -1
- package/lib/cleaners/scrutins.js +1 -1
- package/lib/cleaners/scrutins.mjs +1 -1
- package/lib/cleaners/xml.js +1 -1
- package/lib/cleaners/xml.mjs +1 -1
- package/lib/datasets.js +1 -1
- package/lib/datasets.mjs +1 -1
- package/lib/dates.js +1 -1
- package/lib/dates.mjs +1 -1
- package/lib/dossiers_legislatifs.js +1 -1
- package/lib/dossiers_legislatifs.mjs +1 -1
- package/lib/file_systems.js +25 -5
- package/lib/file_systems.mjs +1 -1
- package/lib/git.js +1 -1
- package/lib/git.mjs +1 -1
- package/lib/index.d.ts +1 -1
- package/lib/index.js +1 -1
- package/lib/index.mjs +1 -1
- package/lib/inserters.js +1 -1
- package/lib/inserters.mjs +1 -1
- package/lib/loaders.js +1 -1
- package/lib/loaders.mjs +1 -1
- package/lib/organes.js +1 -1
- package/lib/organes.mjs +1 -1
- package/lib/parsers/documents.js +27 -5
- package/lib/parsers/documents.mjs +1 -1
- package/lib/parsers/index.js +1 -1
- package/lib/parsers/index.mjs +1 -1
- package/lib/parsers/recherche_amendements.js +27 -7
- package/lib/parsers/recherche_amendements.mjs +1 -1
- package/lib/raw_types/acteurs_et_organes.d.ts +2 -1
- package/lib/raw_types/acteurs_et_organes.js +3 -2
- package/lib/raw_types/acteurs_et_organes.mjs +3 -2
- package/lib/raw_types/agendas.js +1 -1
- package/lib/raw_types/agendas.mjs +1 -1
- package/lib/raw_types/amendements.js +1 -1
- package/lib/raw_types/amendements.mjs +1 -1
- package/lib/raw_types/dossiers_legislatifs.d.ts +4 -0
- package/lib/raw_types/dossiers_legislatifs.js +10 -1
- package/lib/raw_types/dossiers_legislatifs.mjs +10 -1
- package/lib/raw_types/scrutins.js +1 -1
- package/lib/raw_types/scrutins.mjs +1 -1
- package/lib/scripts/bugs_helper.js +39 -19
- package/lib/scripts/bugs_helper.mjs +1 -1
- package/lib/scripts/clean_data.js +1 -1
- package/lib/scripts/clean_data.mjs +1 -1
- package/lib/scripts/clean_reorganized_data.js +1 -1
- package/lib/scripts/clean_reorganized_data.mjs +1 -1
- package/lib/scripts/diff_amendements.js +1 -1
- package/lib/scripts/diff_amendements.mjs +1 -1
- package/lib/scripts/document_dossiers_legislatifs.js +5 -3
- package/lib/scripts/document_dossiers_legislatifs.mjs +1 -1
- package/lib/scripts/get_today_reunions.js +1 -1
- package/lib/scripts/get_today_reunions.mjs +1 -1
- package/lib/scripts/merge_scrutins.js +1 -1
- package/lib/scripts/merge_scrutins.mjs +1 -1
- package/lib/scripts/parse_textes_lois.js +1 -1
- package/lib/scripts/parse_textes_lois.mjs +1 -1
- package/lib/scripts/raw_types_from_amendements.js +28 -4
- package/lib/scripts/raw_types_from_amendements.mjs +1 -1
- package/lib/scripts/reorganize_data.js +1 -1
- package/lib/scripts/reorganize_data.mjs +1 -1
- package/lib/scripts/retrieve_deputes_photos.js +28 -4
- package/lib/scripts/retrieve_deputes_photos.mjs +1 -1
- package/lib/scripts/retrieve_documents.js +35 -15
- package/lib/scripts/retrieve_documents.mjs +1 -1
- package/lib/scripts/retrieve_open_data.js +30 -6
- package/lib/scripts/retrieve_open_data.mjs +1 -1
- package/lib/scripts/retrieve_pending_amendments.js +26 -4
- package/lib/scripts/retrieve_pending_amendments.mjs +1 -1
- package/lib/scripts/retrieve_senateurs_photos.js +28 -4
- package/lib/scripts/retrieve_senateurs_photos.mjs +1 -1
- package/lib/scripts/retrieve_textes_lois.js +22 -4
- package/lib/scripts/retrieve_textes_lois.mjs +1 -1
- package/lib/scripts/test_load.js +1 -1
- package/lib/scripts/test_load.mjs +1 -1
- package/lib/scripts/test_load_big_files.js +1 -1
- package/lib/scripts/test_load_big_files.mjs +1 -1
- package/lib/scripts/validate_json.js +27 -7
- package/lib/scripts/validate_json.mjs +1 -1
- package/lib/shared_types/codes_actes.js +1 -1
- package/lib/shared_types/codes_actes.mjs +1 -1
- package/lib/strings.js +1 -1
- package/lib/strings.mjs +1 -1
- package/lib/types/acteurs_et_organes.js +1 -1
- package/lib/types/acteurs_et_organes.mjs +1 -1
- package/lib/types/agendas.js +1 -1
- package/lib/types/agendas.mjs +1 -1
- package/lib/types/amendements.js +1 -1
- package/lib/types/amendements.mjs +1 -1
- package/lib/types/dossiers_legislatifs.d.ts +1 -0
- package/lib/types/dossiers_legislatifs.js +5 -1
- package/lib/types/dossiers_legislatifs.mjs +5 -1
- package/lib/types/legislatures.js +1 -1
- package/lib/types/legislatures.mjs +1 -1
- package/lib/types/scrutins.js +1 -1
- package/lib/types/scrutins.mjs +1 -1
- package/lib/urls.js +1 -1
- package/lib/urls.mjs +1 -1
- package/package.json +6 -6
package/lib/inserters.mjs
CHANGED
|
@@ -410,4 +410,4 @@ export function insertScrutinReferences(scrutin, _data, visitedUids) {
|
|
|
410
410
|
|
|
411
411
|
return scrutin;
|
|
412
412
|
}
|
|
413
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbnNlcnRlcnMudHMiXSwibmFtZXMiOlsiaW5zZXJ0QWN0ZUxlZ2lzbGF0aWZSZWZlcmVuY2VzIiwiYWN0ZSIsImRhdGEiLCJ2aXNpdGVkVWlkcyIsImhhcyIsInVpZCIsImFkZCIsImRvY3VtZW50QnlVaWQiLCJ1bmRlZmluZWQiLCJkZXBvdEluaXRpYWxMZWN0dXJlRGVmaW5pdGl2ZVJlZiIsImRvY3VtZW50IiwiZGVwb3RJbml0aWFsTGVjdHVyZURlZmluaXRpdmUiLCJpbnNlcnREb2N1bWVudFJlZmVyZW5jZXMiLCJvcmdhbmVCeVVpZCIsIm9yZ2FuZVJlZiIsIm9yZ2FuZSIsImluc2VydE9yZ2FuZVJlZmVyZW5jZXMiLCJwcm92ZW5hbmNlUmVmIiwicHJvdmVuYW5jZSIsImFjdGV1ckJ5VWlkIiwicmFwcG9ydGV1cnMiLCJyYXBwb3J0ZXVyIiwiYWN0ZXVyIiwiYWN0ZXVyUmVmIiwiaW5zZXJ0QWN0ZXVyUmVmZXJlbmNlcyIsInJldW5pb25CeVVpZCIsInJldW5pb25SZWYiLCJyZXVuaW9uIiwiaW5zZXJ0UmV1bmlvblJlZmVyZW5jZXMiLCJvZGpSZWYiLCJvZGoiLCJwb2ludHNPZGoiLCJwb2ludE9kaiIsInRleHRlQWRvcHRlUmVmIiwidGV4dGVBZG9wdGUiLCJ0ZXh0ZUFzc29jaWVSZWYiLCJ0ZXh0ZUFzc29jaWUiLCJ0ZXh0ZXNBc3NvY2llcyIsInNjcnV0aW5CeVVpZCIsInZvdGVSZWZzIiwic2NydXRpbnMiLCJ2b3RlUmVmIiwic2NydXRpbiIsInB1c2giLCJpbnNlcnRTY3J1dGluUmVmZXJlbmNlcyIsInZvdGVzIiwiY2hpbGRBY3RlIiwiYWN0ZXNMZWdpc2xhdGlmcyIsIm1hbmRhdCIsIm1hbmRhdHMiLCJvcmdhbmVzIiwib3JnYW5lc1JlZnMiLCJpbnNlcnRBbWVuZGVtZW50UmVmZXJlbmNlcyIsImFtZW5kZW1lbnQiLCJzaWduYXRhaXJlcyIsImF1dGV1ciIsImF1dGV1clJhcHBvcnRldXJPcmdhbmVSZWYiLCJhdXRldXJSYXBwb3J0ZXVyT3JnYW5lIiwiZ291dmVybmVtZW50UmVmIiwiZ291dmVybmVtZW50IiwiZ3JvdXBlUG9saXRpcXVlUmVmIiwiZ3JvdXBlUG9saXRpcXVlIiwiY29zaWduYXRhaXJlc1JlZnMiLCJjb3NpZ25hdGFpcmVzIiwiY29zaWduYXRhaXJlUmVmIiwiY29zaWduYXRhaXJlIiwiaW5zZXJ0RGl2aXNpb25SZWZlcmVuY2VzIiwiZGl2aXNpb24iLCJhdXRldXJzIiwiYWN0ZXVyU3VtbWFyeSIsImRvc3NpZXJCeVVpZCIsImRvc3NpZXIiLCJkb3NzaWVyUmVmIiwiaW5zZXJ0RG9zc2llclJlZmVyZW5jZXMiLCJjaGlsZERpdmlzaW9uIiwiZGl2aXNpb25zIiwiaW5pdGlhdGV1ciIsImFjdGV1cnMiLCJtYW5kYXRSZWYiLCJvcmdhbmVQYXJlbnRSZWYiLCJvcmdhbmVQYXJlbnQiLCJkZW1hbmRldXJzIiwib3JnYW5lU3VtbWFyeSIsIm9yZ2FuZVJldW5pUmVmIiwib3JnYW5lUmV1bmkiLCJwYXJ0aWNpcGFudHMiLCJwYXJ0aWNpcGFudEludGVybmUiLCJwYXJ0aWNpcGFudHNJbnRlcm5lcyIsIl9kYXRhIl0sIm1hcHBpbmdzIjoiQUFxQkEsU0FBU0EsOEJBQVQsQ0FDRUMsSUFERixFQUVFQyxJQUZGLEVBR0VDLFdBSEYsRUFJRTtBQUNBLE1BQUksQ0FBQ0EsV0FBVyxDQUFDQyxHQUFaLENBQWdCSCxJQUFJLENBQUNJLEdBQXJCLENBQUwsRUFBZ0M7QUFDOUJGLElBQUFBLFdBQVcsQ0FBQ0csR0FBWixDQUFnQkwsSUFBSSxDQUFDSSxHQUFyQjs7QUFFQSxRQUNFSCxJQUFJLENBQUNLLGFBQUwsS0FBdUJDLFNBQXZCLElBQ0FQLElBQUksQ0FBQ1EsZ0NBQUwsS0FBMENELFNBRjVDLEVBR0U7QUFDQSxZQUFNRSxRQUFRLEdBQUdSLElBQUksQ0FBQ0ssYUFBTCxDQUFtQk4sSUFBSSxDQUFDUSxnQ0FBeEIsQ0FBakI7O0FBQ0EsVUFBSUMsUUFBUSxLQUFLRixTQUFqQixFQUE0QjtBQUMxQlAsUUFBQUEsSUFB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QWlDRCxZQUFZLENBQUNFLG9CQUFiLElBQy9CLEVBREYsRUFDTTtBQUNKLGdCQUFNakUsTUFBTSxHQUFHcEIsSUFBSSxDQUFDaUIsV0FBTCxDQUFpQm1FLGtCQUFrQixDQUFDL0QsU0FBcEMsQ0FBZjs7QUFDQSxjQUFJRCxNQUFNLEtBQUtkLFNBQWYsRUFBMEI7QUFDeEI4RSxZQUFBQSxrQkFBa0IsQ0FBQ2hFLE1BQW5CLEdBQTRCQSxNQUE1QjtBQUNBRSxZQUFBQSxzQkFBc0IsQ0FBQ0YsTUFBRCxFQUFTcEIsSUFBVCxFQUFlQyxXQUFmLENBQXRCO0FBQ0Q7QUFDRjtBQUNGO0FBQ0Y7QUFDRjs7QUFFRCxTQUFPd0IsT0FBUDtBQUNEO0FBRUQsT0FBTyxTQUFTaUIsdUJBQVQsQ0FDTEYsT0FESyxFQUVMOEMsS0FGSyxFQUdMckYsV0FISyxFQUlMO0FBQ0EsTUFBSSxDQUFDQSxXQUFXLENBQUNDLEdBQVosQ0FBZ0JzQyxPQUFPLENBQUNyQyxHQUF4QixDQUFMLEVBQW1DO0FBQ2pDRixJQUFBQSxXQUFXLENBQUNHLEdBQVosQ0FBZ0JvQyxPQUFPLENBQUNyQyxHQUF4QixFQURpQyxDQUdqQztBQUNEOztBQUVELFNBQU9xQyxPQUFQO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBY3RldXIsIE9yZ2FuZSB9IGZyb20gXCIuL3R5cGVzL2FjdGV1cnNfZXRfb3JnYW5lc1wiXG5pbXBvcnQgeyBSZXVuaW9uIH0gZnJvbSBcIi4vdHlwZXMvYWdlbmRhc1wiXG5pbXBvcnQgeyBBbWVuZGVtZW50IH0gZnJvbSBcIi4vdHlwZXMvYW1lbmRlbWVudHNcIlxuaW1wb3J0IHtcbiAgQWN0ZUxlZ2lzbGF0aWYsXG4gIERpdmlzaW9uLFxuICBEb2N1bWVudCxcbiAgRG9zc2llclBhcmxlbWVudGFpcmUsXG59IGZyb20gXCIuL3R5cGVzL2Rvc3NpZXJzX2xlZ2lzbGF0aWZzXCJcbmltcG9ydCB7IFNjcnV0aW4gfSBmcm9tIFwiLi90eXBlcy9zY3J1dGluc1wiXG5cbmV4cG9ydCBpbnRlcmZhY2UgT3V0cHV0RGF0YSB7XG4gIHJlYWRvbmx5IGFjdGV1ckJ5VWlkPzogeyBbdWlkOiBzdHJpbmddOiBBY3RldXIgfVxuICByZWFkb25seSBhbWVuZGVtZW50QnlVaWQ/OiB7IFt1aWQ6IHN0cmluZ106IEFtZW5kZW1lbnQgfVxuICByZWFkb25seSBkb2N1bWVudEJ5VWlkPzogeyBbdWlkOiBzdHJpbmddOiBEb2N1bWVudCB9XG4gIHJlYWRvbmx5IGRvc3NpZXJCeVVpZD86IHsgW3VpZDogc3RyaW5nXTogRG9zc2llclBhcmxlbWVudGFpcmUgfVxuICByZWFkb25seSBvcmdhbmVCeVVpZD86IHsgW3VpZDogc3RyaW5nXTogT3JnYW5lIH1cbiAgcmVhZG9ubHkgcmV1bmlvbkJ5VWlkPzogeyBbdWlkOiBzdHJpbmddOiBSZXVuaW9uIH1cbiAgcmVhZG9ubHkgc2NydXRpbkJ5VWlkPzogeyBbdWlkOiBzdHJpbmddOiBTY3J1dGluIH1cbn1cblxuZnVuY3Rpb24gaW5zZXJ0QWN0ZUxlZ2lzbGF0aWZSZWZlcmVuY2VzKFxuICBhY3RlOiBBY3RlTGVnaXNsYXRpZixcbiAgZGF0YTogT3V0cHV0RGF0YSxcbiAgdmlzaXRlZFVpZHM6IFNldDxzdHJpbmc+LFxuKSB7XG4gIGlmICghdmlzaXRlZFVpZHMuaGFzKGFjdGUudWlkKSkge1xuICAgIHZpc2l0ZWRVaWRzLmFkZChhY3RlLnVpZClcblxuICAgIGlmIChcbiAgICAgIGRhdGEuZG9jdW1lbnRCeVVpZCAhPT0gdW5kZWZpbmVkICYmXG4gICAgICBhY3RlLmRlcG90SW5pdGlhbExlY3R1cmVEZWZpbml0aXZlUmVmICE9PSB1bmRlZmluZWRcbiAgICApIHtcbiAgICAgIGNvbnN0IGRvY3VtZW50ID0gZGF0YS5kb2N1bWVudEJ5VWlkW2FjdGUuZGVwb3RJbml0aWFsTGVjdHVyZURlZmluaXRpdmVSZWZdXG4gICAgICBpZiAoZG9jdW1lbnQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBhY3RlLmRlcG90SW5pdGlhbExlY3R1cmVEZWZpbml0aXZlID0gZG9jdW1lbnRcbiAgICAgICAgaW5zZXJ0RG9jdW1lbnRSZWZlcmVuY2VzKGRvY3VtZW50LCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGRhdGEub3JnYW5lQnlVaWQgIT09IHVuZGVmaW5lZCAmJiBhY3RlLm9yZ2FuZVJlZiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zdCBvcmdhbmUgPSBkYXRhLm9yZ2FuZUJ5VWlkW2FjdGUub3JnYW5lUmVmXVxuICAgICAgaWYgKG9yZ2FuZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGFjdGUub3JnYW5lID0gb3JnYW5lXG4gICAgICAgIGluc2VydE9yZ2FuZVJlZmVyZW5jZXMob3JnYW5lLCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGRhdGEub3JnYW5lQnlVaWQgIT09IHVuZGVmaW5lZCAmJiBhY3RlLnByb3ZlbmFuY2VSZWYgIT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uc3Qgb3JnYW5lID0gZGF0YS5vcmdhbmVCeVVpZFthY3RlLnByb3ZlbmFuY2VSZWZdXG4gICAgICBpZiAob3JnYW5lICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgYWN0ZS5wcm92ZW5hbmNlID0gb3JnYW5lXG4gICAgICAgIGluc2VydE9yZ2FuZVJlZmVyZW5jZXMob3JnYW5lLCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGRhdGEuYWN0ZXVyQnlVaWQgIT09IHVuZGVmaW5lZCAmJiBhY3RlLnJhcHBvcnRldXJzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGZvciAoY29uc3QgcmFwcG9ydGV1ciBvZiBhY3RlLnJhcHBvcnRldXJzKSB7XG4gICAgICAgIGNvbnN0IGFjdGV1ciA9IGRhdGEuYWN0ZXVyQnlVaWRbcmFwcG9ydGV1ci5hY3RldXJSZWZdXG4gICAgICAgIGlmIChhY3RldXIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHJhcHBvcnRldXIuYWN0ZXVyID0gYWN0ZXVyXG4gICAgICAgICAgaW5zZXJ0QWN0ZXVyUmVmZXJlbmNlcyhhY3RldXIsIGRhdGEsIHZpc2l0ZWRVaWRzKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChkYXRhLnJldW5pb25CeVVpZCAhPT0gdW5kZWZpbmVkICYmIGFjdGUucmV1bmlvblJlZiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zdCByZXVuaW9uID0gZGF0YS5yZXVuaW9uQnlVaWRbYWN0ZS5yZXVuaW9uUmVmXVxuICAgICAgaWYgKHJldW5pb24gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBhY3RlLnJldW5pb24gPSByZXVuaW9uXG4gICAgICAgIGluc2VydFJldW5pb25SZWZlcmVuY2VzKHJldW5pb24sIGRhdGEsIHZpc2l0ZWRVaWRzKVxuICAgICAgICBpZiAoYWN0ZS5vZGpSZWYgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGNvbnN0IG9kaiA9IHJldW5pb24ub2RqXG4gICAgICAgICAgaWYgKG9kaiAhPT0gdW5kZWZpbmVkICYmIG9kai5wb2ludHNPZGogIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgZm9yIChjb25zdCBwb2ludE9kaiBvZiBvZGoucG9pbnRzT2RqKSB7XG4gICAgICAgICAgICAgIGlmIChwb2ludE9kai51aWQgPT09IGFjdGUub2RqUmVmKSB7XG4gICAgICAgICAgICAgICAgYWN0ZS5vZGogPSBwb2ludE9kalxuICAgICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGRhdGEuZG9jdW1lbnRCeVVpZCAhPT0gdW5kZWZpbmVkICYmIGFjdGUudGV4dGVBZG9wdGVSZWYgIT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uc3QgZG9jdW1lbnQgPSBkYXRhLmRvY3VtZW50QnlVaWRbYWN0ZS50ZXh0ZUFkb3B0ZVJlZl1cbiAgICAgIGlmIChkb2N1bWVudCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGFjdGUudGV4dGVBZG9wdGUgPSBkb2N1bWVudFxuICAgICAgICBpbnNlcnREb2N1bWVudFJlZmVyZW5jZXMoZG9jdW1lbnQsIGRhdGEsIHZpc2l0ZWRVaWRzKVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoXG4gICAgICBkYXRhLmRvY3VtZW50QnlVaWQgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgYWN0ZS50ZXh0ZUFzc29jaWVSZWYgIT09IHVuZGVmaW5lZFxuICAgICkge1xuICAgICAgY29uc3QgZG9jdW1lbnQgPSBkYXRhLmRvY3VtZW50QnlVaWRbYWN0ZS50ZXh0ZUFzc29jaWVSZWZdXG4gICAgICBpZiAoZG9jdW1lbnQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBhY3RlLnRleHRlQXNzb2NpZSA9IGRvY3VtZW50XG4gICAgICAgIGluc2VydERvY3VtZW50UmVmZXJlbmNlcyhkb2N1bWVudCwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgICB9XG4gICAgfVxuICAgIGlmIChkYXRhLmRvY3VtZW50QnlVaWQgIT09IHVuZGVmaW5lZCAmJiBhY3RlLnRleHRlc0Fzc29jaWVzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGZvciAoY29uc3QgdGV4dGVBc3NvY2llIG9mIGFjdGUudGV4dGVzQXNzb2NpZXMpIHtcbiAgICAgICAgY29uc3QgZG9jdW1lbnQgPSBkYXRhLmRvY3VtZW50QnlVaWRbdGV4dGVBc3NvY2llLnRleHRlQXNzb2NpZVJlZl1cbiAgICAgICAgaWYgKGRvY3VtZW50ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICB0ZXh0ZUFzc29jaWUudGV4dGVBc3NvY2llID0gZG9jdW1lbnRcbiAgICAgICAgICBpbnNlcnREb2N1bWVudFJlZmVyZW5jZXMoZG9jdW1lbnQsIGRhdGEsIHZpc2l0ZWRVaWRzKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChkYXRhLnNjcnV0aW5CeVVpZCAhPT0gdW5kZWZpbmVkICYmIGFjdGUudm90ZVJlZnMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uc3Qgc2NydXRpbnMgPSBbXVxuICAgICAgZm9yIChjb25zdCB2b3RlUmVmIG9mIGFjdGUudm90ZVJlZnMpIHtcbiAgICAgICAgY29uc3Qgc2NydXRpbiA9IGRhdGEuc2NydXRpbkJ5VWlkW3ZvdGVSZWZdXG4gICAgICAgIGlmIChzY3J1dGluICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBzY3J1dGlucy5wdXNoKHNjcnV0aW4pXG4gICAgICAgICAgaW5zZXJ0U2NydXRpblJlZmVyZW5jZXMoc2NydXRpbiwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGFjdGUudm90ZXMgPSBzY3J1dGluc1xuICAgIH1cblxuICAgIGZvciAoY29uc3QgY2hpbGRBY3RlIG9mIGFjdGUuYWN0ZXNMZWdpc2xhdGlmcyB8fCBbXSkge1xuICAgICAgaW5zZXJ0QWN0ZUxlZ2lzbGF0aWZSZWZlcmVuY2VzKGNoaWxkQWN0ZSwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGFjdGVcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc2VydEFjdGV1clJlZmVyZW5jZXMoXG4gIGFjdGV1cjogQWN0ZXVyLFxuICBkYXRhOiBPdXRwdXREYXRhLFxuICB2aXNpdGVkVWlkczogU2V0PHN0cmluZz4sXG4pIHtcbiAgaWYgKCF2aXNpdGVkVWlkcy5oYXMoYWN0ZXVyLnVpZCkpIHtcbiAgICB2aXNpdGVkVWlkcy5hZGQoYWN0ZXVyLnVpZClcblxuICAgIGlmIChkYXRhLm9yZ2FuZUJ5VWlkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGZvciAoY29uc3QgbWFuZGF0IG9mIGFjdGV1ci5tYW5kYXRzIHx8IFtdKSB7XG4gICAgICAgIGNvbnN0IG9yZ2FuZXMgPSBbXVxuICAgICAgICBmb3IgKGNvbnN0IG9yZ2FuZVJlZiBvZiBtYW5kYXQub3JnYW5lc1JlZnMpIHtcbiAgICAgICAgICBjb25zdCBvcmdhbmUgPSBkYXRhLm9yZ2FuZUJ5VWlkW29yZ2FuZVJlZl1cbiAgICAgICAgICBpZiAob3JnYW5lICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIG9yZ2FuZXMucHVzaChvcmdhbmUpXG4gICAgICAgICAgICBpbnNlcnRPcmdhbmVSZWZlcmVuY2VzKG9yZ2FuZSwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIG1hbmRhdC5vcmdhbmVzID0gb3JnYW5lc1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBhY3RldXJcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc2VydEFtZW5kZW1lbnRSZWZlcmVuY2VzKFxuICBhbWVuZGVtZW50OiBBbWVuZGVtZW50LFxuICBkYXRhOiBPdXRwdXREYXRhLFxuICB2aXNpdGVkVWlkczogU2V0PHN0cmluZz4sXG4pIHtcbiAgaWYgKCF2aXNpdGVkVWlkcy5oYXMoYW1lbmRlbWVudC51aWQpKSB7XG4gICAgdmlzaXRlZFVpZHMuYWRkKGFtZW5kZW1lbnQudWlkKVxuXG4gICAgY29uc3Qgc2lnbmF0YWlyZXMgPSBhbWVuZGVtZW50LnNpZ25hdGFpcmVzXG4gICAgY29uc3QgYXV0ZXVyID0gc2lnbmF0YWlyZXMuYXV0ZXVyXG4gICAgaWYgKGRhdGEuYWN0ZXVyQnlVaWQgIT09IHVuZGVmaW5lZCAmJiBhdXRldXIuYWN0ZXVyUmVmICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IGFjdGV1ciA9IGRhdGEuYWN0ZXVyQnlVaWRbYXV0ZXVyLmFjdGV1clJlZl1cbiAgICAgIGlmIChhY3RldXIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBhdXRldXIuYWN0ZXVyID0gYWN0ZXVyXG4gICAgICAgIGluc2VydEFjdGV1clJlZmVyZW5jZXMoYWN0ZXVyLCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKFxuICAgICAgZGF0YS5vcmdhbmVCeVVpZCAhPT0gdW5kZWZpbmVkICYmXG4gICAgICBhdXRldXIuYXV0ZXVyUmFwcG9ydGV1ck9yZ2FuZVJlZiAhPT0gdW5kZWZpbmVkXG4gICAgKSB7XG4gICAgICBjb25zdCBhdXRldXJSYXBwb3J0ZXVyT3JnYW5lID1cbiAgICAgICAgZGF0YS5vcmdhbmVCeVVpZFthdXRldXIuYXV0ZXVyUmFwcG9ydGV1ck9yZ2FuZVJlZl1cbiAgICAgIGlmIChhdXRldXJSYXBwb3J0ZXVyT3JnYW5lICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgYXV0ZXVyLmF1dGV1clJhcHBvcnRldXJPcmdhbmUgPSBhdXRldXJSYXBwb3J0ZXVyT3JnYW5lXG4gICAgICAgIGluc2VydE9yZ2FuZVJlZmVyZW5jZXMoYXV0ZXVyUmFwcG9ydGV1ck9yZ2FuZSwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgICB9XG4gICAgfVxuICAgIGlmIChcbiAgICAgIGRhdGEub3JnYW5lQnlVaWQgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgYXV0ZXVyLmdvdXZlcm5lbWVudFJlZiAhPT0gdW5kZWZpbmVkXG4gICAgKSB7XG4gICAgICBjb25zdCBnb3V2ZXJuZW1lbnQgPSBkYXRhLm9yZ2FuZUJ5VWlkW2F1dGV1ci5nb3V2ZXJuZW1lbnRSZWZdXG4gICAgICBpZiAoZ291dmVybmVtZW50ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgYXV0ZXVyLmdvdXZlcm5lbWVudCA9IGdvdXZlcm5lbWVudFxuICAgICAgICBpbnNlcnRPcmdhbmVSZWZlcmVuY2VzKGdvdXZlcm5lbWVudCwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgICB9XG4gICAgfVxuICAgIGlmIChcbiAgICAgIGRhdGEub3JnYW5lQnlVaWQgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgYXV0ZXVyLmdyb3VwZVBvbGl0aXF1ZVJlZiAhPT0gdW5kZWZpbmVkXG4gICAgKSB7XG4gICAgICBjb25zdCBvcmdhbmUgPSBkYXRhLm9yZ2FuZUJ5VWlkW2F1dGV1ci5ncm91cGVQb2xpdGlxdWVSZWZdXG4gICAgICBpZiAob3JnYW5lICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgYXV0ZXVyLmdyb3VwZVBvbGl0aXF1ZSA9IG9yZ2FuZVxuICAgICAgICBpbnNlcnRPcmdhbmVSZWZlcmVuY2VzKG9yZ2FuZSwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgICB9XG4gICAgfVxuICAgIGlmIChkYXRhLmFjdGV1ckJ5VWlkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IGNvc2lnbmF0YWlyZXNSZWZzID0gc2lnbmF0YWlyZXMuY29zaWduYXRhaXJlc1JlZnNcbiAgICAgIGlmIChjb3NpZ25hdGFpcmVzUmVmcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGNvbnN0IGNvc2lnbmF0YWlyZXMgPSBbXVxuICAgICAgICBmb3IgKGNvbnN0IGNvc2lnbmF0YWlyZVJlZiBvZiBzaWduYXRhaXJlcy5jb3NpZ25hdGFpcmVzUmVmcyB8fCBbXSkge1xuICAgICAgICAgIGNvbnN0IGNvc2lnbmF0YWlyZSA9IGRhdGEuYWN0ZXVyQnlVaWRbY29zaWduYXRhaXJlUmVmXVxuICAgICAgICAgIGlmIChjb3NpZ25hdGFpcmUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgY29zaWduYXRhaXJlcy5wdXNoKGNvc2lnbmF0YWlyZSlcbiAgICAgICAgICAgIGluc2VydEFjdGV1clJlZmVyZW5jZXMoY29zaWduYXRhaXJlLCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgc2lnbmF0YWlyZXMuY29zaWduYXRhaXJlcyA9IGNvc2lnbmF0YWlyZXNcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gYW1lbmRlbWVudFxufVxuXG5mdW5jdGlvbiBpbnNlcnREaXZpc2lvblJlZmVyZW5jZXMoXG4gIGRpdmlzaW9uOiBEaXZpc2lvbixcbiAgZGF0YTogT3V0cHV0RGF0YSxcbiAgdmlzaXRlZFVpZHM6IFNldDxzdHJpbmc+LFxuKSB7XG4gIGZvciAoY29uc3QgYXV0ZXVyIG9mIGRpdmlzaW9uLmF1dGV1cnMpIHtcbiAgICBjb25zdCBhY3RldXJTdW1tYXJ5ID0gYXV0ZXVyLmFjdGV1clxuICAgIGlmIChkYXRhLmFjdGV1ckJ5VWlkICE9PSB1bmRlZmluZWQgJiYgYWN0ZXVyU3VtbWFyeSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zdCBhY3RldXIgPSBkYXRhLmFjdGV1ckJ5VWlkW2FjdGV1clN1bW1hcnkuYWN0ZXVyUmVmXVxuICAgICAgaWYgKGFjdGV1ciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGFjdGV1clN1bW1hcnkuYWN0ZXVyID0gYWN0ZXVyXG4gICAgICAgIGluc2VydEFjdGV1clJlZmVyZW5jZXMoYWN0ZXVyLCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoZGF0YS5vcmdhbmVCeVVpZCAhPT0gdW5kZWZpbmVkICYmIGF1dGV1ci5vcmdhbmVSZWYgIT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uc3Qgb3JnYW5lID0gZGF0YS5vcmdhbmVCeVVpZFthdXRldXIub3JnYW5lUmVmXVxuICAgICAgaWYgKG9yZ2FuZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGF1dGV1ci5vcmdhbmUgPSBvcmdhbmVcbiAgICAgICAgaW5zZXJ0T3JnYW5lUmVmZXJlbmNlcyhvcmdhbmUsIGRhdGEsIHZpc2l0ZWRVaWRzKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlmIChkYXRhLmRvc3NpZXJCeVVpZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgY29uc3QgZG9zc2llciA9IGRhdGEuZG9zc2llckJ5VWlkW2RpdmlzaW9uLmRvc3NpZXJSZWZdXG4gICAgaWYgKGRvc3NpZXIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgZGl2aXNpb24uZG9zc2llciA9IGRvc3NpZXJcbiAgICAgIGluc2VydERvc3NpZXJSZWZlcmVuY2VzKGRvc3NpZXIsIGRhdGEsIHZpc2l0ZWRVaWRzKVxuICAgIH1cbiAgfVxuXG4gIGZvciAoY29uc3QgY2hpbGREaXZpc2lvbiBvZiBkaXZpc2lvbi5kaXZpc2lvbnMgfHwgW10pIHtcbiAgICBpbnNlcnREaXZpc2lvblJlZmVyZW5jZXMoY2hpbGREaXZpc2lvbiwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gIH1cblxuICByZXR1cm4gZGl2aXNpb25cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc2VydERvY3VtZW50UmVmZXJlbmNlcyhcbiAgZG9jdW1lbnQ6IERvY3VtZW50LFxuICBkYXRhOiBPdXRwdXREYXRhLFxuICB2aXNpdGVkVWlkczogU2V0PHN0cmluZz4sXG4pIHtcbiAgaWYgKCF2aXNpdGVkVWlkcy5oYXMoZG9jdW1lbnQudWlkKSkge1xuICAgIHZpc2l0ZWRVaWRzLmFkZChkb2N1bWVudC51aWQpXG5cbiAgICBmb3IgKGNvbnN0IGF1dGV1ciBvZiBkb2N1bWVudC5hdXRldXJzKSB7XG4gICAgICBjb25zdCBhY3RldXJTdW1tYXJ5ID0gYXV0ZXVyLmFjdGV1clxuICAgICAgaWYgKGRhdGEuYWN0ZXVyQnlVaWQgIT09IHVuZGVmaW5lZCAmJiBhY3RldXJTdW1tYXJ5ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgY29uc3QgYWN0ZXVyID0gZGF0YS5hY3RldXJCeVVpZFthY3RldXJTdW1tYXJ5LmFjdGV1clJlZl1cbiAgICAgICAgaWYgKGFjdGV1ciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgYWN0ZXVyU3VtbWFyeS5hY3RldXIgPSBhY3RldXJcbiAgICAgICAgICBpbnNlcnRBY3RldXJSZWZlcmVuY2VzKGFjdGV1ciwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGRhdGEub3JnYW5lQnlVaWQgIT09IHVuZGVmaW5lZCAmJiBhdXRldXIub3JnYW5lUmVmICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgY29uc3Qgb3JnYW5lID0gZGF0YS5vcmdhbmVCeVVpZFthdXRldXIub3JnYW5lUmVmXVxuICAgICAgICBpZiAob3JnYW5lICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBhdXRldXIub3JnYW5lID0gb3JnYW5lXG4gICAgICAgICAgaW5zZXJ0T3JnYW5lUmVmZXJlbmNlcyhvcmdhbmUsIGRhdGEsIHZpc2l0ZWRVaWRzKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGRhdGEuZG9zc2llckJ5VWlkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IGRvc3NpZXIgPSBkYXRhLmRvc3NpZXJCeVVpZFtkb2N1bWVudC5kb3NzaWVyUmVmXVxuICAgICAgaWYgKGRvc3NpZXIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBkb2N1bWVudC5kb3NzaWVyID0gZG9zc2llclxuICAgICAgICBpbnNlcnREb3NzaWVyUmVmZXJlbmNlcyhkb3NzaWVyLCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICAgIH1cbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IGRpdmlzaW9uIG9mIGRvY3VtZW50LmRpdmlzaW9ucyB8fCBbXSkge1xuICAgICAgaW5zZXJ0RGl2aXNpb25SZWZlcmVuY2VzKGRpdmlzaW9uLCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZG9jdW1lbnRcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc2VydERvc3NpZXJSZWZlcmVuY2VzKFxuICBkb3NzaWVyOiBEb3NzaWVyUGFybGVtZW50YWlyZSxcbiAgZGF0YTogT3V0cHV0RGF0YSxcbiAgdmlzaXRlZFVpZHM6IFNldDxzdHJpbmc+LFxuKSB7XG4gIGlmICghdmlzaXRlZFVpZHMuaGFzKGRvc3NpZXIudWlkKSkge1xuICAgIHZpc2l0ZWRVaWRzLmFkZChkb3NzaWVyLnVpZClcblxuICAgIGZvciAoY29uc3QgYWN0ZSBvZiBkb3NzaWVyLmFjdGVzTGVnaXNsYXRpZnMgPz8gW10pIHtcbiAgICAgIGluc2VydEFjdGVMZWdpc2xhdGlmUmVmZXJlbmNlcyhhY3RlLCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICB9XG5cbiAgICBjb25zdCBpbml0aWF0ZXVyID0gZG9zc2llci5pbml0aWF0ZXVyXG4gICAgaWYgKGluaXRpYXRldXIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgaWYgKGRhdGEuYWN0ZXVyQnlVaWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBmb3IgKGNvbnN0IGFjdGV1clN1bW1hcnkgb2YgaW5pdGlhdGV1ci5hY3RldXJzIHx8IFtdKSB7XG4gICAgICAgICAgY29uc3QgYWN0ZXVyID0gZGF0YS5hY3RldXJCeVVpZFthY3RldXJTdW1tYXJ5LmFjdGV1clJlZl1cbiAgICAgICAgICBpZiAoYWN0ZXVyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGFjdGV1clN1bW1hcnkuYWN0ZXVyID0gYWN0ZXVyXG4gICAgICAgICAgICBpbnNlcnRBY3RldXJSZWZlcmVuY2VzKGFjdGV1ciwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChhY3RldXIgIT09IHVuZGVmaW5lZCAmJiBhY3RldXJTdW1tYXJ5Lm1hbmRhdFJlZiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IG1hbmRhdCBvZiBhY3RldXIubWFuZGF0cyB8fCBbXSkge1xuICAgICAgICAgICAgICBpZiAobWFuZGF0LnVpZCA9PT0gYWN0ZXVyU3VtbWFyeS5tYW5kYXRSZWYpIHtcbiAgICAgICAgICAgICAgICBhY3RldXJTdW1tYXJ5Lm1hbmRhdCA9IG1hbmRhdFxuICAgICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgZGF0YS5vcmdhbmVCeVVpZCAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgIGluaXRpYXRldXIub3JnYW5lUmVmICE9PSB1bmRlZmluZWRcbiAgICAgICkge1xuICAgICAgICBjb25zdCBvcmdhbmUgPSBkYXRhLm9yZ2FuZUJ5VWlkW2luaXRpYXRldXIub3JnYW5lUmVmXVxuICAgICAgICBpZiAob3JnYW5lICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBpbml0aWF0ZXVyLm9yZ2FuZSA9IG9yZ2FuZVxuICAgICAgICAgIGluc2VydE9yZ2FuZVJlZmVyZW5jZXMob3JnYW5lLCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBkb3NzaWVyXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnNlcnRPcmdhbmVSZWZlcmVuY2VzKFxuICBvcmdhbmU6IE9yZ2FuZSxcbiAgZGF0YTogT3V0cHV0RGF0YSxcbiAgdmlzaXRlZFVpZHM6IFNldDxzdHJpbmc+LFxuKSB7XG4gIGlmICghdmlzaXRlZFVpZHMuaGFzKG9yZ2FuZS51aWQpKSB7XG4gICAgdmlzaXRlZFVpZHMuYWRkKG9yZ2FuZS51aWQpXG5cbiAgICBpZiAoXG4gICAgICBkYXRhLm9yZ2FuZUJ5VWlkICE9PSB1bmRlZmluZWQgJiZcbiAgICAgIG9yZ2FuZS5vcmdhbmVQYXJlbnRSZWYgIT09IHVuZGVmaW5lZFxuICAgICkge1xuICAgICAgY29uc3Qgb3JnYW5lUGFyZW50ID0gZGF0YS5vcmdhbmVCeVVpZFtvcmdhbmUub3JnYW5lUGFyZW50UmVmXVxuICAgICAgaWYgKG9yZ2FuZVBhcmVudCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIG9yZ2FuZS5vcmdhbmVQYXJlbnQgPSBvcmdhbmVQYXJlbnRcbiAgICAgICAgaW5zZXJ0T3JnYW5lUmVmZXJlbmNlcyhvcmdhbmVQYXJlbnQsIGRhdGEsIHZpc2l0ZWRVaWRzKVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFRPRE9cbiAgfVxuXG4gIHJldHVybiBvcmdhbmVcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc2VydFJldW5pb25SZWZlcmVuY2VzKFxuICByZXVuaW9uOiBSZXVuaW9uLFxuICBkYXRhOiBPdXRwdXREYXRhLFxuICB2aXNpdGVkVWlkczogU2V0PHN0cmluZz4sXG4pIHtcbiAgaWYgKCF2aXNpdGVkVWlkcy5oYXMocmV1bmlvbi51aWQpKSB7XG4gICAgdmlzaXRlZFVpZHMuYWRkKHJldW5pb24udWlkKVxuXG4gICAgY29uc3QgZGVtYW5kZXVycyA9IHJldW5pb24uZGVtYW5kZXVyc1xuICAgIGlmIChkZW1hbmRldXJzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGlmIChkYXRhLmFjdGV1ckJ5VWlkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgZm9yIChjb25zdCBhY3RldXJTdW1tYXJ5IG9mIGRlbWFuZGV1cnMuYWN0ZXVycyB8fCBbXSkge1xuICAgICAgICAgIGNvbnN0IGFjdGV1ciA9IGRhdGEuYWN0ZXVyQnlVaWRbYWN0ZXVyU3VtbWFyeS5hY3RldXJSZWZdXG4gICAgICAgICAgaWYgKGFjdGV1ciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBhY3RldXJTdW1tYXJ5LmFjdGV1ciA9IGFjdGV1clxuICAgICAgICAgICAgaW5zZXJ0QWN0ZXVyUmVmZXJlbmNlcyhhY3RldXIsIGRhdGEsIHZpc2l0ZWRVaWRzKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGRhdGEub3JnYW5lQnlVaWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBjb25zdCBvcmdhbmVTdW1tYXJ5ID0gZGVtYW5kZXVycy5vcmdhbmVcbiAgICAgICAgaWYgKG9yZ2FuZVN1bW1hcnkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGNvbnN0IG9yZ2FuZSA9IGRhdGEub3JnYW5lQnlVaWRbb3JnYW5lU3VtbWFyeS5vcmdhbmVSZWZdXG4gICAgICAgICAgaWYgKG9yZ2FuZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBvcmdhbmVTdW1tYXJ5Lm9yZ2FuZSA9IG9yZ2FuZVxuICAgICAgICAgICAgaW5zZXJ0T3JnYW5lUmVmZXJlbmNlcyhvcmdhbmUsIGRhdGEsIHZpc2l0ZWRVaWRzKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoXG4gICAgICBkYXRhLm9yZ2FuZUJ5VWlkICE9PSB1bmRlZmluZWQgJiZcbiAgICAgIHJldW5pb24ub3JnYW5lUmV1bmlSZWYgIT09IHVuZGVmaW5lZFxuICAgICkge1xuICAgICAgY29uc3Qgb3JnYW5lUmV1bmkgPSBkYXRhLm9yZ2FuZUJ5VWlkW3JldW5pb24ub3JnYW5lUmV1bmlSZWZdXG4gICAgICBpZiAob3JnYW5lUmV1bmkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXVuaW9uLm9yZ2FuZVJldW5pID0gb3JnYW5lUmV1bmlcbiAgICAgICAgaW5zZXJ0T3JnYW5lUmVmZXJlbmNlcyhvcmdhbmVSZXVuaSwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgICB9XG4gICAgfVxuICAgIGlmIChkYXRhLmFjdGV1ckJ5VWlkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IHBhcnRpY2lwYW50cyA9IHJldW5pb24ucGFydGljaXBhbnRzXG4gICAgICBpZiAocGFydGljaXBhbnRzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgZm9yIChjb25zdCBwYXJ0aWNpcGFudEludGVybmUgb2YgcGFydGljaXBhbnRzLnBhcnRpY2lwYW50c0ludGVybmVzIHx8XG4gICAgICAgICAgW10pIHtcbiAgICAgICAgICBjb25zdCBhY3RldXIgPSBkYXRhLmFjdGV1ckJ5VWlkW3BhcnRpY2lwYW50SW50ZXJuZS5hY3RldXJSZWZdXG4gICAgICAgICAgaWYgKGFjdGV1ciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBwYXJ0aWNpcGFudEludGVybmUuYWN0ZXVyID0gYWN0ZXVyXG4gICAgICAgICAgICBpbnNlcnRBY3RldXJSZWZlcmVuY2VzKGFjdGV1ciwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHJldW5pb25cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc2VydFNjcnV0aW5SZWZlcmVuY2VzKFxuICBzY3J1dGluOiBTY3J1dGluLFxuICBfZGF0YTogT3V0cHV0RGF0YSxcbiAgdmlzaXRlZFVpZHM6IFNldDxzdHJpbmc+LFxuKSB7XG4gIGlmICghdmlzaXRlZFVpZHMuaGFzKHNjcnV0aW4udWlkKSkge1xuICAgIHZpc2l0ZWRVaWRzLmFkZChzY3J1dGluLnVpZClcblxuICAgIC8vIFRPRE9cbiAgfVxuXG4gIHJldHVybiBzY3J1dGluXG59XG4iXX0=
|
|
413
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJpbnNlcnRBY3RlTGVnaXNsYXRpZlJlZmVyZW5jZXMiLCJhY3RlIiwiZGF0YSIsInZpc2l0ZWRVaWRzIiwiaGFzIiwidWlkIiwiYWRkIiwiZG9jdW1lbnRCeVVpZCIsInVuZGVmaW5lZCIsImRlcG90SW5pdGlhbExlY3R1cmVEZWZpbml0aXZlUmVmIiwiZG9jdW1lbnQiLCJkZXBvdEluaXRpYWxMZWN0dXJlRGVmaW5pdGl2ZSIsImluc2VydERvY3VtZW50UmVmZXJlbmNlcyIsIm9yZ2FuZUJ5VWlkIiwib3JnYW5lUmVmIiwib3JnYW5lIiwiaW5zZXJ0T3JnYW5lUmVmZXJlbmNlcyIsInByb3ZlbmFuY2VSZWYiLCJwcm92ZW5hbmNlIiwiYWN0ZXVyQnlVaWQiLCJyYXBwb3J0ZXVycyIsInJhcHBvcnRldXIiLCJhY3RldXIiLCJhY3RldXJSZWYiLCJpbnNlcnRBY3RldXJSZWZlcmVuY2VzIiwicmV1bmlvbkJ5VWlkIiwicmV1bmlvblJlZiIsInJldW5pb24iLCJpbnNlcnRSZXVuaW9uUmVmZXJlbmNlcyIsIm9kalJlZiIsIm9kaiIsInBvaW50c09kaiIsInBvaW50T2RqIiwidGV4dGVBZG9wdGVSZWYiLCJ0ZXh0ZUFkb3B0ZSIsInRleHRlQXNzb2NpZVJlZiIsInRleHRlQXNzb2NpZSIsInRleHRlc0Fzc29jaWVzIiwic2NydXRpbkJ5VWlkIiwidm90ZVJlZnMiLCJzY3J1dGlucyIsInZvdGVSZWYiLCJzY3J1dGluIiwicHVzaCIsImluc2VydFNjcnV0aW5SZWZlcmVuY2VzIiwidm90ZXMiLCJjaGlsZEFjdGUiLCJhY3Rlc0xlZ2lzbGF0aWZzIiwibWFuZGF0IiwibWFuZGF0cyIsIm9yZ2FuZXMiLCJvcmdhbmVzUmVmcyIsImluc2VydEFtZW5kZW1lbnRSZWZlcmVuY2VzIiwiYW1lbmRlbWVudCIsInNpZ25hdGFpcmVzIiwiYXV0ZXVyIiwiYXV0ZXVyUmFwcG9ydGV1ck9yZ2FuZVJlZiIsImF1dGV1clJhcHBvcnRldXJPcmdhbmUiLCJnb3V2ZXJuZW1lbnRSZWYiLCJnb3V2ZXJuZW1lbnQiLCJncm91cGVQb2xpdGlxdWVSZWYiLCJncm91cGVQb2xpdGlxdWUiLCJjb3NpZ25hdGFpcmVzUmVmcyIsImNvc2lnbmF0YWlyZXMiLCJjb3NpZ25hdGFpcmVSZWYiLCJjb3NpZ25hdGFpcmUiLCJpbnNlcnREaXZpc2lvblJlZmVyZW5jZXMiLCJkaXZpc2lvbiIsImF1dGV1cnMiLCJhY3RldXJTdW1tYXJ5IiwiZG9zc2llckJ5VWlkIiwiZG9zc2llciIsImRvc3NpZXJSZWYiLCJpbnNlcnREb3NzaWVyUmVmZXJlbmNlcyIsImNoaWxkRGl2aXNpb24iLCJkaXZpc2lvbnMiLCJpbml0aWF0ZXVyIiwiYWN0ZXVycyIsIm1hbmRhdFJlZiIsIm9yZ2FuZVBhcmVudFJlZiIsIm9yZ2FuZVBhcmVudCIsImRlbWFuZGV1cnMiLCJvcmdhbmVTdW1tYXJ5Iiwib3JnYW5lUmV1bmlSZWYiLCJvcmdhbmVSZXVuaSIsInBhcnRpY2lwYW50cyIsInBhcnRpY2lwYW50SW50ZXJuZSIsInBhcnRpY2lwYW50c0ludGVybmVzIiwiX2RhdGEiXSwic291cmNlcyI6WyIuLi9zcmMvaW5zZXJ0ZXJzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFjdGV1ciwgT3JnYW5lIH0gZnJvbSBcIi4vdHlwZXMvYWN0ZXVyc19ldF9vcmdhbmVzXCJcbmltcG9ydCB7IFJldW5pb24gfSBmcm9tIFwiLi90eXBlcy9hZ2VuZGFzXCJcbmltcG9ydCB7IEFtZW5kZW1lbnQgfSBmcm9tIFwiLi90eXBlcy9hbWVuZGVtZW50c1wiXG5pbXBvcnQge1xuICBBY3RlTGVnaXNsYXRpZixcbiAgRGl2aXNpb24sXG4gIERvY3VtZW50LFxuICBEb3NzaWVyUGFybGVtZW50YWlyZSxcbn0gZnJvbSBcIi4vdHlwZXMvZG9zc2llcnNfbGVnaXNsYXRpZnNcIlxuaW1wb3J0IHsgU2NydXRpbiB9IGZyb20gXCIuL3R5cGVzL3NjcnV0aW5zXCJcblxuZXhwb3J0IGludGVyZmFjZSBPdXRwdXREYXRhIHtcbiAgcmVhZG9ubHkgYWN0ZXVyQnlVaWQ/OiB7IFt1aWQ6IHN0cmluZ106IEFjdGV1ciB9XG4gIHJlYWRvbmx5IGFtZW5kZW1lbnRCeVVpZD86IHsgW3VpZDogc3RyaW5nXTogQW1lbmRlbWVudCB9XG4gIHJlYWRvbmx5IGRvY3VtZW50QnlVaWQ/OiB7IFt1aWQ6IHN0cmluZ106IERvY3VtZW50IH1cbiAgcmVhZG9ubHkgZG9zc2llckJ5VWlkPzogeyBbdWlkOiBzdHJpbmddOiBEb3NzaWVyUGFybGVtZW50YWlyZSB9XG4gIHJlYWRvbmx5IG9yZ2FuZUJ5VWlkPzogeyBbdWlkOiBzdHJpbmddOiBPcmdhbmUgfVxuICByZWFkb25seSByZXVuaW9uQnlVaWQ/OiB7IFt1aWQ6IHN0cmluZ106IFJldW5pb24gfVxuICByZWFkb25seSBzY3J1dGluQnlVaWQ/OiB7IFt1aWQ6IHN0cmluZ106IFNjcnV0aW4gfVxufVxuXG5mdW5jdGlvbiBpbnNlcnRBY3RlTGVnaXNsYXRpZlJlZmVyZW5jZXMoXG4gIGFjdGU6IEFjdGVMZWdpc2xhdGlmLFxuICBkYXRhOiBPdXRwdXREYXRhLFxuICB2aXNpdGVkVWlkczogU2V0PHN0cmluZz4sXG4pIHtcbiAgaWYgKCF2aXNpdGVkVWlkcy5oYXMoYWN0ZS51aWQpKSB7XG4gICAgdmlzaXRlZFVpZHMuYWRkKGFjdGUudWlkKVxuXG4gICAgaWYgKFxuICAgICAgZGF0YS5kb2N1bWVudEJ5VWlkICE9PSB1bmRlZmluZWQgJiZcbiAgICAgIGFjdGUuZGVwb3RJbml0aWFsTGVjdHVyZURlZmluaXRpdmVSZWYgIT09IHVuZGVmaW5lZFxuICAgICkge1xuICAgICAgY29uc3QgZG9jdW1lbnQgPSBkYXRhLmRvY3VtZW50QnlVaWRbYWN0ZS5kZXBvdEluaXRpYWxMZWN0dXJlRGVmaW5pdGl2ZVJlZl1cbiAgICAgIGlmIChkb2N1bWVudCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGFjdGUuZGVwb3RJbml0aWFsTGVjdHVyZURlZmluaXRpdmUgPSBkb2N1bWVudFxuICAgICAgICBpbnNlcnREb2N1bWVudFJlZmVyZW5jZXMoZG9jdW1lbnQsIGRhdGEsIHZpc2l0ZWRVaWRzKVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoZGF0YS5vcmdhbmVCeVVpZCAhPT0gdW5kZWZpbmVkICYmIGFjdGUub3JnYW5lUmVmICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IG9yZ2FuZSA9IGRhdGEub3JnYW5lQnlVaWRbYWN0ZS5vcmdhbmVSZWZdXG4gICAgICBpZiAob3JnYW5lICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgYWN0ZS5vcmdhbmUgPSBvcmdhbmVcbiAgICAgICAgaW5zZXJ0T3JnYW5lUmVmZXJlbmNlcyhvcmdhbmUsIGRhdGEsIHZpc2l0ZWRVaWRzKVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoZGF0YS5vcmdhbmVCeVVpZCAhPT0gdW5kZWZpbmVkICYmIGFjdGUucHJvdmVuYW5jZVJlZiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zdCBvcmdhbmUgPSBkYXRhLm9yZ2FuZUJ5VWlkW2FjdGUucHJvdmVuYW5jZVJlZl1cbiAgICAgIGlmIChvcmdhbmUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBhY3RlLnByb3ZlbmFuY2UgPSBvcmdhbmVcbiAgICAgICAgaW5zZXJ0T3JnYW5lUmVmZXJlbmNlcyhvcmdhbmUsIGRhdGEsIHZpc2l0ZWRVaWRzKVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoZGF0YS5hY3RldXJCeVVpZCAhPT0gdW5kZWZpbmVkICYmIGFjdGUucmFwcG9ydGV1cnMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgZm9yIChjb25zdCByYXBwb3J0ZXVyIG9mIGFjdGUucmFwcG9ydGV1cnMpIHtcbiAgICAgICAgY29uc3QgYWN0ZXVyID0gZGF0YS5hY3RldXJCeVVpZFtyYXBwb3J0ZXVyLmFjdGV1clJlZl1cbiAgICAgICAgaWYgKGFjdGV1ciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgcmFwcG9ydGV1ci5hY3RldXIgPSBhY3RldXJcbiAgICAgICAgICBpbnNlcnRBY3RldXJSZWZlcmVuY2VzKGFjdGV1ciwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGRhdGEucmV1bmlvbkJ5VWlkICE9PSB1bmRlZmluZWQgJiYgYWN0ZS5yZXVuaW9uUmVmICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IHJldW5pb24gPSBkYXRhLnJldW5pb25CeVVpZFthY3RlLnJldW5pb25SZWZdXG4gICAgICBpZiAocmV1bmlvbiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGFjdGUucmV1bmlvbiA9IHJldW5pb25cbiAgICAgICAgaW5zZXJ0UmV1bmlvblJlZmVyZW5jZXMocmV1bmlvbiwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgICAgIGlmIChhY3RlLm9kalJlZiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgY29uc3Qgb2RqID0gcmV1bmlvbi5vZGpcbiAgICAgICAgICBpZiAob2RqICE9PSB1bmRlZmluZWQgJiYgb2RqLnBvaW50c09kaiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IHBvaW50T2RqIG9mIG9kai5wb2ludHNPZGopIHtcbiAgICAgICAgICAgICAgaWYgKHBvaW50T2RqLnVpZCA9PT0gYWN0ZS5vZGpSZWYpIHtcbiAgICAgICAgICAgICAgICBhY3RlLm9kaiA9IHBvaW50T2RqXG4gICAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoZGF0YS5kb2N1bWVudEJ5VWlkICE9PSB1bmRlZmluZWQgJiYgYWN0ZS50ZXh0ZUFkb3B0ZVJlZiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zdCBkb2N1bWVudCA9IGRhdGEuZG9jdW1lbnRCeVVpZFthY3RlLnRleHRlQWRvcHRlUmVmXVxuICAgICAgaWYgKGRvY3VtZW50ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgYWN0ZS50ZXh0ZUFkb3B0ZSA9IGRvY3VtZW50XG4gICAgICAgIGluc2VydERvY3VtZW50UmVmZXJlbmNlcyhkb2N1bWVudCwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgICB9XG4gICAgfVxuICAgIGlmIChcbiAgICAgIGRhdGEuZG9jdW1lbnRCeVVpZCAhPT0gdW5kZWZpbmVkICYmXG4gICAgICBhY3RlLnRleHRlQXNzb2NpZVJlZiAhPT0gdW5kZWZpbmVkXG4gICAgKSB7XG4gICAgICBjb25zdCBkb2N1bWVudCA9IGRhdGEuZG9jdW1lbnRCeVVpZFthY3RlLnRleHRlQXNzb2NpZVJlZl1cbiAgICAgIGlmIChkb2N1bWVudCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGFjdGUudGV4dGVBc3NvY2llID0gZG9jdW1lbnRcbiAgICAgICAgaW5zZXJ0RG9jdW1lbnRSZWZlcmVuY2VzKGRvY3VtZW50LCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGRhdGEuZG9jdW1lbnRCeVVpZCAhPT0gdW5kZWZpbmVkICYmIGFjdGUudGV4dGVzQXNzb2NpZXMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgZm9yIChjb25zdCB0ZXh0ZUFzc29jaWUgb2YgYWN0ZS50ZXh0ZXNBc3NvY2llcykge1xuICAgICAgICBjb25zdCBkb2N1bWVudCA9IGRhdGEuZG9jdW1lbnRCeVVpZFt0ZXh0ZUFzc29jaWUudGV4dGVBc3NvY2llUmVmXVxuICAgICAgICBpZiAoZG9jdW1lbnQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHRleHRlQXNzb2NpZS50ZXh0ZUFzc29jaWUgPSBkb2N1bWVudFxuICAgICAgICAgIGluc2VydERvY3VtZW50UmVmZXJlbmNlcyhkb2N1bWVudCwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGRhdGEuc2NydXRpbkJ5VWlkICE9PSB1bmRlZmluZWQgJiYgYWN0ZS52b3RlUmVmcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zdCBzY3J1dGlucyA9IFtdXG4gICAgICBmb3IgKGNvbnN0IHZvdGVSZWYgb2YgYWN0ZS52b3RlUmVmcykge1xuICAgICAgICBjb25zdCBzY3J1dGluID0gZGF0YS5zY3J1dGluQnlVaWRbdm90ZVJlZl1cbiAgICAgICAgaWYgKHNjcnV0aW4gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHNjcnV0aW5zLnB1c2goc2NydXRpbilcbiAgICAgICAgICBpbnNlcnRTY3J1dGluUmVmZXJlbmNlcyhzY3J1dGluLCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgYWN0ZS52b3RlcyA9IHNjcnV0aW5zXG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBjaGlsZEFjdGUgb2YgYWN0ZS5hY3Rlc0xlZ2lzbGF0aWZzIHx8IFtdKSB7XG4gICAgICBpbnNlcnRBY3RlTGVnaXNsYXRpZlJlZmVyZW5jZXMoY2hpbGRBY3RlLCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICB9XG4gIH1cblxuICByZXR1cm4gYWN0ZVxufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zZXJ0QWN0ZXVyUmVmZXJlbmNlcyhcbiAgYWN0ZXVyOiBBY3RldXIsXG4gIGRhdGE6IE91dHB1dERhdGEsXG4gIHZpc2l0ZWRVaWRzOiBTZXQ8c3RyaW5nPixcbikge1xuICBpZiAoIXZpc2l0ZWRVaWRzLmhhcyhhY3RldXIudWlkKSkge1xuICAgIHZpc2l0ZWRVaWRzLmFkZChhY3RldXIudWlkKVxuXG4gICAgaWYgKGRhdGEub3JnYW5lQnlVaWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgZm9yIChjb25zdCBtYW5kYXQgb2YgYWN0ZXVyLm1hbmRhdHMgfHwgW10pIHtcbiAgICAgICAgY29uc3Qgb3JnYW5lcyA9IFtdXG4gICAgICAgIGZvciAoY29uc3Qgb3JnYW5lUmVmIG9mIG1hbmRhdC5vcmdhbmVzUmVmcykge1xuICAgICAgICAgIGNvbnN0IG9yZ2FuZSA9IGRhdGEub3JnYW5lQnlVaWRbb3JnYW5lUmVmXVxuICAgICAgICAgIGlmIChvcmdhbmUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgb3JnYW5lcy5wdXNoKG9yZ2FuZSlcbiAgICAgICAgICAgIGluc2VydE9yZ2FuZVJlZmVyZW5jZXMob3JnYW5lLCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgbWFuZGF0Lm9yZ2FuZXMgPSBvcmdhbmVzXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGFjdGV1clxufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zZXJ0QW1lbmRlbWVudFJlZmVyZW5jZXMoXG4gIGFtZW5kZW1lbnQ6IEFtZW5kZW1lbnQsXG4gIGRhdGE6IE91dHB1dERhdGEsXG4gIHZpc2l0ZWRVaWRzOiBTZXQ8c3RyaW5nPixcbikge1xuICBpZiAoIXZpc2l0ZWRVaWRzLmhhcyhhbWVuZGVtZW50LnVpZCkpIHtcbiAgICB2aXNpdGVkVWlkcy5hZGQoYW1lbmRlbWVudC51aWQpXG5cbiAgICBjb25zdCBzaWduYXRhaXJlcyA9IGFtZW5kZW1lbnQuc2lnbmF0YWlyZXNcbiAgICBjb25zdCBhdXRldXIgPSBzaWduYXRhaXJlcy5hdXRldXJcbiAgICBpZiAoZGF0YS5hY3RldXJCeVVpZCAhPT0gdW5kZWZpbmVkICYmIGF1dGV1ci5hY3RldXJSZWYgIT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uc3QgYWN0ZXVyID0gZGF0YS5hY3RldXJCeVVpZFthdXRldXIuYWN0ZXVyUmVmXVxuICAgICAgaWYgKGFjdGV1ciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGF1dGV1ci5hY3RldXIgPSBhY3RldXJcbiAgICAgICAgaW5zZXJ0QWN0ZXVyUmVmZXJlbmNlcyhhY3RldXIsIGRhdGEsIHZpc2l0ZWRVaWRzKVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoXG4gICAgICBkYXRhLm9yZ2FuZUJ5VWlkICE9PSB1bmRlZmluZWQgJiZcbiAgICAgIGF1dGV1ci5hdXRldXJSYXBwb3J0ZXVyT3JnYW5lUmVmICE9PSB1bmRlZmluZWRcbiAgICApIHtcbiAgICAgIGNvbnN0IGF1dGV1clJhcHBvcnRldXJPcmdhbmUgPVxuICAgICAgICBkYXRhLm9yZ2FuZUJ5VWlkW2F1dGV1ci5hdXRldXJSYXBwb3J0ZXVyT3JnYW5lUmVmXVxuICAgICAgaWYgKGF1dGV1clJhcHBvcnRldXJPcmdhbmUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBhdXRldXIuYXV0ZXVyUmFwcG9ydGV1ck9yZ2FuZSA9IGF1dGV1clJhcHBvcnRldXJPcmdhbmVcbiAgICAgICAgaW5zZXJ0T3JnYW5lUmVmZXJlbmNlcyhhdXRldXJSYXBwb3J0ZXVyT3JnYW5lLCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKFxuICAgICAgZGF0YS5vcmdhbmVCeVVpZCAhPT0gdW5kZWZpbmVkICYmXG4gICAgICBhdXRldXIuZ291dmVybmVtZW50UmVmICE9PSB1bmRlZmluZWRcbiAgICApIHtcbiAgICAgIGNvbnN0IGdvdXZlcm5lbWVudCA9IGRhdGEub3JnYW5lQnlVaWRbYXV0ZXVyLmdvdXZlcm5lbWVudFJlZl1cbiAgICAgIGlmIChnb3V2ZXJuZW1lbnQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBhdXRldXIuZ291dmVybmVtZW50ID0gZ291dmVybmVtZW50XG4gICAgICAgIGluc2VydE9yZ2FuZVJlZmVyZW5jZXMoZ291dmVybmVtZW50LCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKFxuICAgICAgZGF0YS5vcmdhbmVCeVVpZCAhPT0gdW5kZWZpbmVkICYmXG4gICAgICBhdXRldXIuZ3JvdXBlUG9saXRpcXVlUmVmICE9PSB1bmRlZmluZWRcbiAgICApIHtcbiAgICAgIGNvbnN0IG9yZ2FuZSA9IGRhdGEub3JnYW5lQnlVaWRbYXV0ZXVyLmdyb3VwZVBvbGl0aXF1ZVJlZl1cbiAgICAgIGlmIChvcmdhbmUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBhdXRldXIuZ3JvdXBlUG9saXRpcXVlID0gb3JnYW5lXG4gICAgICAgIGluc2VydE9yZ2FuZVJlZmVyZW5jZXMob3JnYW5lLCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGRhdGEuYWN0ZXVyQnlVaWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uc3QgY29zaWduYXRhaXJlc1JlZnMgPSBzaWduYXRhaXJlcy5jb3NpZ25hdGFpcmVzUmVmc1xuICAgICAgaWYgKGNvc2lnbmF0YWlyZXNSZWZzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgY29uc3QgY29zaWduYXRhaXJlcyA9IFtdXG4gICAgICAgIGZvciAoY29uc3QgY29zaWduYXRhaXJlUmVmIG9mIHNpZ25hdGFpcmVzLmNvc2lnbmF0YWlyZXNSZWZzIHx8IFtdKSB7XG4gICAgICAgICAgY29uc3QgY29zaWduYXRhaXJlID0gZGF0YS5hY3RldXJCeVVpZFtjb3NpZ25hdGFpcmVSZWZdXG4gICAgICAgICAgaWYgKGNvc2lnbmF0YWlyZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBjb3NpZ25hdGFpcmVzLnB1c2goY29zaWduYXRhaXJlKVxuICAgICAgICAgICAgaW5zZXJ0QWN0ZXVyUmVmZXJlbmNlcyhjb3NpZ25hdGFpcmUsIGRhdGEsIHZpc2l0ZWRVaWRzKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBzaWduYXRhaXJlcy5jb3NpZ25hdGFpcmVzID0gY29zaWduYXRhaXJlc1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBhbWVuZGVtZW50XG59XG5cbmZ1bmN0aW9uIGluc2VydERpdmlzaW9uUmVmZXJlbmNlcyhcbiAgZGl2aXNpb246IERpdmlzaW9uLFxuICBkYXRhOiBPdXRwdXREYXRhLFxuICB2aXNpdGVkVWlkczogU2V0PHN0cmluZz4sXG4pIHtcbiAgZm9yIChjb25zdCBhdXRldXIgb2YgZGl2aXNpb24uYXV0ZXVycykge1xuICAgIGNvbnN0IGFjdGV1clN1bW1hcnkgPSBhdXRldXIuYWN0ZXVyXG4gICAgaWYgKGRhdGEuYWN0ZXVyQnlVaWQgIT09IHVuZGVmaW5lZCAmJiBhY3RldXJTdW1tYXJ5ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IGFjdGV1ciA9IGRhdGEuYWN0ZXVyQnlVaWRbYWN0ZXVyU3VtbWFyeS5hY3RldXJSZWZdXG4gICAgICBpZiAoYWN0ZXVyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgYWN0ZXVyU3VtbWFyeS5hY3RldXIgPSBhY3RldXJcbiAgICAgICAgaW5zZXJ0QWN0ZXVyUmVmZXJlbmNlcyhhY3RldXIsIGRhdGEsIHZpc2l0ZWRVaWRzKVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChkYXRhLm9yZ2FuZUJ5VWlkICE9PSB1bmRlZmluZWQgJiYgYXV0ZXVyLm9yZ2FuZVJlZiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zdCBvcmdhbmUgPSBkYXRhLm9yZ2FuZUJ5VWlkW2F1dGV1ci5vcmdhbmVSZWZdXG4gICAgICBpZiAob3JnYW5lICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgYXV0ZXVyLm9yZ2FuZSA9IG9yZ2FuZVxuICAgICAgICBpbnNlcnRPcmdhbmVSZWZlcmVuY2VzKG9yZ2FuZSwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKGRhdGEuZG9zc2llckJ5VWlkICE9PSB1bmRlZmluZWQpIHtcbiAgICBjb25zdCBkb3NzaWVyID0gZGF0YS5kb3NzaWVyQnlVaWRbZGl2aXNpb24uZG9zc2llclJlZl1cbiAgICBpZiAoZG9zc2llciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBkaXZpc2lvbi5kb3NzaWVyID0gZG9zc2llclxuICAgICAgaW5zZXJ0RG9zc2llclJlZmVyZW5jZXMoZG9zc2llciwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgfVxuICB9XG5cbiAgZm9yIChjb25zdCBjaGlsZERpdmlzaW9uIG9mIGRpdmlzaW9uLmRpdmlzaW9ucyB8fCBbXSkge1xuICAgIGluc2VydERpdmlzaW9uUmVmZXJlbmNlcyhjaGlsZERpdmlzaW9uLCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgfVxuXG4gIHJldHVybiBkaXZpc2lvblxufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zZXJ0RG9jdW1lbnRSZWZlcmVuY2VzKFxuICBkb2N1bWVudDogRG9jdW1lbnQsXG4gIGRhdGE6IE91dHB1dERhdGEsXG4gIHZpc2l0ZWRVaWRzOiBTZXQ8c3RyaW5nPixcbikge1xuICBpZiAoIXZpc2l0ZWRVaWRzLmhhcyhkb2N1bWVudC51aWQpKSB7XG4gICAgdmlzaXRlZFVpZHMuYWRkKGRvY3VtZW50LnVpZClcblxuICAgIGZvciAoY29uc3QgYXV0ZXVyIG9mIGRvY3VtZW50LmF1dGV1cnMpIHtcbiAgICAgIGNvbnN0IGFjdGV1clN1bW1hcnkgPSBhdXRldXIuYWN0ZXVyXG4gICAgICBpZiAoZGF0YS5hY3RldXJCeVVpZCAhPT0gdW5kZWZpbmVkICYmIGFjdGV1clN1bW1hcnkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBjb25zdCBhY3RldXIgPSBkYXRhLmFjdGV1ckJ5VWlkW2FjdGV1clN1bW1hcnkuYWN0ZXVyUmVmXVxuICAgICAgICBpZiAoYWN0ZXVyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBhY3RldXJTdW1tYXJ5LmFjdGV1ciA9IGFjdGV1clxuICAgICAgICAgIGluc2VydEFjdGV1clJlZmVyZW5jZXMoYWN0ZXVyLCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoZGF0YS5vcmdhbmVCeVVpZCAhPT0gdW5kZWZpbmVkICYmIGF1dGV1ci5vcmdhbmVSZWYgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBjb25zdCBvcmdhbmUgPSBkYXRhLm9yZ2FuZUJ5VWlkW2F1dGV1ci5vcmdhbmVSZWZdXG4gICAgICAgIGlmIChvcmdhbmUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGF1dGV1ci5vcmdhbmUgPSBvcmdhbmVcbiAgICAgICAgICBpbnNlcnRPcmdhbmVSZWZlcmVuY2VzKG9yZ2FuZSwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoZGF0YS5kb3NzaWVyQnlVaWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uc3QgZG9zc2llciA9IGRhdGEuZG9zc2llckJ5VWlkW2RvY3VtZW50LmRvc3NpZXJSZWZdXG4gICAgICBpZiAoZG9zc2llciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGRvY3VtZW50LmRvc3NpZXIgPSBkb3NzaWVyXG4gICAgICAgIGluc2VydERvc3NpZXJSZWZlcmVuY2VzKGRvc3NpZXIsIGRhdGEsIHZpc2l0ZWRVaWRzKVxuICAgICAgfVxuICAgIH1cblxuICAgIGZvciAoY29uc3QgZGl2aXNpb24gb2YgZG9jdW1lbnQuZGl2aXNpb25zIHx8IFtdKSB7XG4gICAgICBpbnNlcnREaXZpc2lvblJlZmVyZW5jZXMoZGl2aXNpb24sIGRhdGEsIHZpc2l0ZWRVaWRzKVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBkb2N1bWVudFxufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zZXJ0RG9zc2llclJlZmVyZW5jZXMoXG4gIGRvc3NpZXI6IERvc3NpZXJQYXJsZW1lbnRhaXJlLFxuICBkYXRhOiBPdXRwdXREYXRhLFxuICB2aXNpdGVkVWlkczogU2V0PHN0cmluZz4sXG4pIHtcbiAgaWYgKCF2aXNpdGVkVWlkcy5oYXMoZG9zc2llci51aWQpKSB7XG4gICAgdmlzaXRlZFVpZHMuYWRkKGRvc3NpZXIudWlkKVxuXG4gICAgZm9yIChjb25zdCBhY3RlIG9mIGRvc3NpZXIuYWN0ZXNMZWdpc2xhdGlmcyA/PyBbXSkge1xuICAgICAgaW5zZXJ0QWN0ZUxlZ2lzbGF0aWZSZWZlcmVuY2VzKGFjdGUsIGRhdGEsIHZpc2l0ZWRVaWRzKVxuICAgIH1cblxuICAgIGNvbnN0IGluaXRpYXRldXIgPSBkb3NzaWVyLmluaXRpYXRldXJcbiAgICBpZiAoaW5pdGlhdGV1ciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBpZiAoZGF0YS5hY3RldXJCeVVpZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGZvciAoY29uc3QgYWN0ZXVyU3VtbWFyeSBvZiBpbml0aWF0ZXVyLmFjdGV1cnMgfHwgW10pIHtcbiAgICAgICAgICBjb25zdCBhY3RldXIgPSBkYXRhLmFjdGV1ckJ5VWlkW2FjdGV1clN1bW1hcnkuYWN0ZXVyUmVmXVxuICAgICAgICAgIGlmIChhY3RldXIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgYWN0ZXVyU3VtbWFyeS5hY3RldXIgPSBhY3RldXJcbiAgICAgICAgICAgIGluc2VydEFjdGV1clJlZmVyZW5jZXMoYWN0ZXVyLCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGFjdGV1ciAhPT0gdW5kZWZpbmVkICYmIGFjdGV1clN1bW1hcnkubWFuZGF0UmVmICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgbWFuZGF0IG9mIGFjdGV1ci5tYW5kYXRzIHx8IFtdKSB7XG4gICAgICAgICAgICAgIGlmIChtYW5kYXQudWlkID09PSBhY3RldXJTdW1tYXJ5Lm1hbmRhdFJlZikge1xuICAgICAgICAgICAgICAgIGFjdGV1clN1bW1hcnkubWFuZGF0ID0gbWFuZGF0XG4gICAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKFxuICAgICAgICBkYXRhLm9yZ2FuZUJ5VWlkICE9PSB1bmRlZmluZWQgJiZcbiAgICAgICAgaW5pdGlhdGV1ci5vcmdhbmVSZWYgIT09IHVuZGVmaW5lZFxuICAgICAgKSB7XG4gICAgICAgIGNvbnN0IG9yZ2FuZSA9IGRhdGEub3JnYW5lQnlVaWRbaW5pdGlhdGV1ci5vcmdhbmVSZWZdXG4gICAgICAgIGlmIChvcmdhbmUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGluaXRpYXRldXIub3JnYW5lID0gb3JnYW5lXG4gICAgICAgICAgaW5zZXJ0T3JnYW5lUmVmZXJlbmNlcyhvcmdhbmUsIGRhdGEsIHZpc2l0ZWRVaWRzKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGRvc3NpZXJcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc2VydE9yZ2FuZVJlZmVyZW5jZXMoXG4gIG9yZ2FuZTogT3JnYW5lLFxuICBkYXRhOiBPdXRwdXREYXRhLFxuICB2aXNpdGVkVWlkczogU2V0PHN0cmluZz4sXG4pIHtcbiAgaWYgKCF2aXNpdGVkVWlkcy5oYXMob3JnYW5lLnVpZCkpIHtcbiAgICB2aXNpdGVkVWlkcy5hZGQob3JnYW5lLnVpZClcblxuICAgIGlmIChcbiAgICAgIGRhdGEub3JnYW5lQnlVaWQgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgb3JnYW5lLm9yZ2FuZVBhcmVudFJlZiAhPT0gdW5kZWZpbmVkXG4gICAgKSB7XG4gICAgICBjb25zdCBvcmdhbmVQYXJlbnQgPSBkYXRhLm9yZ2FuZUJ5VWlkW29yZ2FuZS5vcmdhbmVQYXJlbnRSZWZdXG4gICAgICBpZiAob3JnYW5lUGFyZW50ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgb3JnYW5lLm9yZ2FuZVBhcmVudCA9IG9yZ2FuZVBhcmVudFxuICAgICAgICBpbnNlcnRPcmdhbmVSZWZlcmVuY2VzKG9yZ2FuZVBhcmVudCwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gVE9ET1xuICB9XG5cbiAgcmV0dXJuIG9yZ2FuZVxufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zZXJ0UmV1bmlvblJlZmVyZW5jZXMoXG4gIHJldW5pb246IFJldW5pb24sXG4gIGRhdGE6IE91dHB1dERhdGEsXG4gIHZpc2l0ZWRVaWRzOiBTZXQ8c3RyaW5nPixcbikge1xuICBpZiAoIXZpc2l0ZWRVaWRzLmhhcyhyZXVuaW9uLnVpZCkpIHtcbiAgICB2aXNpdGVkVWlkcy5hZGQocmV1bmlvbi51aWQpXG5cbiAgICBjb25zdCBkZW1hbmRldXJzID0gcmV1bmlvbi5kZW1hbmRldXJzXG4gICAgaWYgKGRlbWFuZGV1cnMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgaWYgKGRhdGEuYWN0ZXVyQnlVaWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBmb3IgKGNvbnN0IGFjdGV1clN1bW1hcnkgb2YgZGVtYW5kZXVycy5hY3RldXJzIHx8IFtdKSB7XG4gICAgICAgICAgY29uc3QgYWN0ZXVyID0gZGF0YS5hY3RldXJCeVVpZFthY3RldXJTdW1tYXJ5LmFjdGV1clJlZl1cbiAgICAgICAgICBpZiAoYWN0ZXVyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGFjdGV1clN1bW1hcnkuYWN0ZXVyID0gYWN0ZXVyXG4gICAgICAgICAgICBpbnNlcnRBY3RldXJSZWZlcmVuY2VzKGFjdGV1ciwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoZGF0YS5vcmdhbmVCeVVpZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGNvbnN0IG9yZ2FuZVN1bW1hcnkgPSBkZW1hbmRldXJzLm9yZ2FuZVxuICAgICAgICBpZiAob3JnYW5lU3VtbWFyeSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgY29uc3Qgb3JnYW5lID0gZGF0YS5vcmdhbmVCeVVpZFtvcmdhbmVTdW1tYXJ5Lm9yZ2FuZVJlZl1cbiAgICAgICAgICBpZiAob3JnYW5lICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIG9yZ2FuZVN1bW1hcnkub3JnYW5lID0gb3JnYW5lXG4gICAgICAgICAgICBpbnNlcnRPcmdhbmVSZWZlcmVuY2VzKG9yZ2FuZSwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChcbiAgICAgIGRhdGEub3JnYW5lQnlVaWQgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgcmV1bmlvbi5vcmdhbmVSZXVuaVJlZiAhPT0gdW5kZWZpbmVkXG4gICAgKSB7XG4gICAgICBjb25zdCBvcmdhbmVSZXVuaSA9IGRhdGEub3JnYW5lQnlVaWRbcmV1bmlvbi5vcmdhbmVSZXVuaVJlZl1cbiAgICAgIGlmIChvcmdhbmVSZXVuaSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldW5pb24ub3JnYW5lUmV1bmkgPSBvcmdhbmVSZXVuaVxuICAgICAgICBpbnNlcnRPcmdhbmVSZWZlcmVuY2VzKG9yZ2FuZVJldW5pLCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGRhdGEuYWN0ZXVyQnlVaWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uc3QgcGFydGljaXBhbnRzID0gcmV1bmlvbi5wYXJ0aWNpcGFudHNcbiAgICAgIGlmIChwYXJ0aWNpcGFudHMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBmb3IgKGNvbnN0IHBhcnRpY2lwYW50SW50ZXJuZSBvZiBwYXJ0aWNpcGFudHMucGFydGljaXBhbnRzSW50ZXJuZXMgfHxcbiAgICAgICAgICBbXSkge1xuICAgICAgICAgIGNvbnN0IGFjdGV1ciA9IGRhdGEuYWN0ZXVyQnlVaWRbcGFydGljaXBhbnRJbnRlcm5lLmFjdGV1clJlZl1cbiAgICAgICAgICBpZiAoYWN0ZXVyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHBhcnRpY2lwYW50SW50ZXJuZS5hY3RldXIgPSBhY3RldXJcbiAgICAgICAgICAgIGluc2VydEFjdGV1clJlZmVyZW5jZXMoYWN0ZXVyLCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gcmV1bmlvblxufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zZXJ0U2NydXRpblJlZmVyZW5jZXMoXG4gIHNjcnV0aW46IFNjcnV0aW4sXG4gIF9kYXRhOiBPdXRwdXREYXRhLFxuICB2aXNpdGVkVWlkczogU2V0PHN0cmluZz4sXG4pIHtcbiAgaWYgKCF2aXNpdGVkVWlkcy5oYXMoc2NydXRpbi51aWQpKSB7XG4gICAgdmlzaXRlZFVpZHMuYWRkKHNjcnV0aW4udWlkKVxuXG4gICAgLy8gVE9ET1xuICB9XG5cbiAgcmV0dXJuIHNjcnV0aW5cbn1cbiJdLCJtYXBwaW5ncyI6IkFBcUJBLFNBQVNBLDhCQUFULENBQ0VDLElBREYsRUFFRUMsSUFGRixFQUdFQyxXQUhGLEVBSUU7RUFDQSxJQUFJLENBQUNBLFdBQVcsQ0FBQ0MsR0FBWixDQUFnQkgsSUFBSSxDQUFDSSxHQUFyQixDQUFMLEVBQWdDO0lBQzlCRixXQUFXLENBQUNHLEdBQVosQ0FBZ0JMLElBQUksQ0FBQ0ksR0FBckI7O0lBRUEsSUFDRUgsSUFBSSxDQUFDSyxhQUFMLEtBQXVCQyxTQUF2QixJQUNBUCxJQUFJLENBQUNRLGdDQUFMLEtBQTBDRCxTQUY1QyxFQUdFO01BQ0EsTUFBTUUsUUFBUSxHQUFHUixJQUFJLENBQUNLLGFBQUwsQ0FBbUJOLElBQUksQ0FBQ1EsZ0NBQXhCLENBQWpCOztNQUNBLElBQUlDLFFBQVEsS0FBS0YsU0FBakIsRUFBNEI7UUFDMUJQLElBQUksQ0FBQ1UsNkJBQUwsR0FBcUNELFFBQXJDO1FBQ0FFLHdCQUF3QixDQUFDRixRQUFELEVBQVdSLElBQVgsRUFBaUJDLFdBQWpCLENBQXhCO01BQ0Q7SUFDRjs7SUFDRCxJQUFJRCxJQUFJLENBQUNXLFdBQUwsS0FBcUJMLFNBQXJCLElBQWtDUCxJQUFJLENBQUNhLFNBQUwsS0FBbUJOLFNBQXpELEVBQW9FO01BQ2xFLE1BQU1PLE1BQU0sR0FBR2IsSUFBSSxDQUFDVyxXQUFMLENBQWlCWixJQUFJLENBQUNhLFNBQXRCLENBQWY7O01BQ0EsSUFBSUMsTUFBTSxLQUFLUCxTQUFmLEVBQTBCO1FBQ3hCUCxJQUFJLENBQUNjLE1BQUwsR0FBY0EsTUFBZDtRQUNBQyxzQkFBc0IsQ0FBQ0QsTUFBRCxFQUFTYixJQUFULEVBQWVDLFdBQWYsQ0FBdEI7TUFDRDtJQUNGOztJQUNELElBQUlELElBQUksQ0FBQ1csV0FBTCxLQUFxQkws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
|
package/lib/loaders.js
CHANGED
|
@@ -1135,4 +1135,4 @@ function pathFromScrutinUid(scrutinsDir, uid) {
|
|
|
1135
1135
|
|
|
1136
1136
|
return _path["default"].join(numeroMilliersDir, uid);
|
|
1137
1137
|
}
|
|
1138
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9sb2FkZXJzLnRzIl0sIm5hbWVzIjpbImRvY3VtZW50VWlkUmVnZXgiLCJkb3NzaWVyVWlkUmVnZXgiLCJyZXVuaW9uVWlkUmVnZXgiLCJzY3J1dGluVWlkUmVnZXgiLCJsb2FkQXNzZW1ibGVlRGF0YSIsImRhdGFEaXIiLCJlbmFibGVkRGF0YXNldHMiLCJsZWdpc2xhdHVyZSIsImxvZyIsImFjdGV1ckJ5VWlkIiwib3JnYW5lQnlVaWQiLCJFbmFibGVkRGF0YXNldHMiLCJBY3RldXJzRXRPcmdhbmVzIiwiZGF0YXNldHMiLCJhY3RldXJzRXRPcmdhbmVzIiwiZGF0YXNldCIsImlnbm9yZUZvcldlYiIsIkxlZ2lzbGF0dXJlIiwiQWxsIiwiZGF0YXNldERpciIsInBhdGgiLCJqb2luIiwiZmlsZW5hbWUiLCJyZXBsYWNlIiwiYWN0ZXVyU3BsaXRQYXRoIiwiYWN0ZXVyRmlsZW5hbWUiLCJsZW5ndGgiLCJlbmRzV2l0aCIsImFjdGV1ckZpbGVQYXRoIiwiY29uc29sZSIsImFjdGV1ckpzb24iLCJmcyIsInJlYWRGaWxlU3luYyIsImVuY29kaW5nIiwiYWN0ZXVyIiwiQWN0ZXVyc0V0T3JnYW5lc0NvbnZlcnQiLCJ0b0FjdGV1ciIsInVpZCIsInVuZGVmaW5lZCIsIm9yZ2FuZVNwbGl0UGF0aCIsIm9yZ2FuZUZpbGVuYW1lIiwib3JnYW5lRmlsZVBhdGgiLCJvcmdhbmVKc29uIiwib3JnYW5lIiwidG9PcmdhbmUiLCJyZXVuaW9uQnlVaWQiLCJyZXVuaW9uc0J5RGF5IiwicmV1bmlvbnNCeURvc3NpZXJVaWQiLCJBZ2VuZGFzIiwiYWdlbmRhcyIsInJldW5pb25TcGxpdFBhdGgiLCJyZXVuaW9uRmlsZW5hbWUiLCJyZXVuaW9uRmlsZVBhdGgiLCJyZXVuaW9uSnNvbiIsInJldW5pb24iLCJBZ2VuZGFzQ29udmVydCIsInRvUmV1bmlvbiIsImRheSIsInRpbWVzdGFtcERlYnV0IiwidG9JU09TdHJpbmciLCJzcGxpdCIsInJldW5pb25zQXREYXkiLCJwdXNoIiwib2RqIiwicG9pbnRzT2RqIiwicG9pbnRPZGoiLCJkb3NzaWVyc0xlZ2lzbGF0aWZzUmVmcyIsImRvc3NpZXJMZWdpc2xhdGlmUmVmIiwicmV1bmlvbnNBdERvc3NpZXJVaWQiLCJhbWVuZGVtZW50QnlVaWQiLCJBbWVuZGVtZW50cyIsImFtZW5kZW1lbnRzIiwiYW1lbmRlbWVudFNwbGl0UGF0aCIsImFtZW5kZW1lbnRGaWxlbmFtZSIsImFtZW5kZW1lbnRGaWxlUGF0aCIsImFtZW5kZW1lbnRKc29uIiwiYW1lbmRlbWVudCIsIkFtZW5kZW1lbnRzQ29udmVydCIsInRvQW1lbmRlbWVudCIsImRvY3VtZW50QnlVaWQiLCJkb3NzaWVyUGFybGVtZW50YWlyZUJ5U2VuYXRDaGVtaW4iLCJkb3NzaWVyUGFybGVtZW50YWlyZUJ5VGl0cmVDaGVtaW4iLCJkb3NzaWVyUGFybGVtZW50YWlyZUJ5VWlkIiwiRG9zc2llcnNMZWdpc2xhdGlmcyIsImRvc3NpZXJzTGVnaXNsYXRpZnMiLCJkb2N1bWVudFNwbGl0UGF0aCIsImRvY3VtZW50RmlsZW5hbWUiLCJkb2N1bWVudEZpbGVQYXRoIiwiZG9jdW1lbnRKc29uIiwiZG9jdW1lbnQiLCJEb3NzaWVyc0xlZ2lzbGF0aWZzQ29udmVydCIsInRvRG9jdW1lbnQiLCJkb3NzaWVyU3BsaXRQYXRoIiwiZG9zc2llckZpbGVuYW1lIiwiZG9zc2llckZpbGVQYXRoIiwiZG9zc2llckpzb24iLCJkb3NzaWVyIiwidG9Eb3NzaWVyUGFybGVtZW50YWlyZSIsInRpdHJlRG9zc2llciIsInNlbmF0Q2hlbWluIiwidGl0cmVDaGVtaW4iLCJwaG90b0J5VWlkIiwiUGhvdG9zIiwianNvbkZpbGVQYXRoIiwiUXVpbnplIiwiZXhpc3RzU3luYyIsImpzb24iLCJPYmplY3QiLCJhc3NpZ24iLCJKU09OIiwicGFyc2UiLCJzY3J1dGluQnlVaWQiLCJTY3J1dGlucyIsInNjcnV0aW5zIiwic2NydXRpblNwbGl0UGF0aCIsInNjcnV0aW5GaWxlbmFtZSIsInNjcnV0aW5GaWxlUGF0aCIsInNjcnV0aW5Kc29uIiwic2NydXRpbiIsIlNjcnV0aW5zQ29udmVydCIsInRvU2NydXRpbiIsImxvYWRBc3NlbWJsZWVEYXRhRnJvbUJpZ0ZpbGVzIiwidG9BY3RldXJzRXRPcmdhbmVzIiwiYWN0ZXVycyIsIm9yZ2FuZXMiLCJ0b0FnZW5kYXMiLCJyZXVuaW9ucyIsInRvQW1lbmRlbWVudHMiLCJ0ZXh0ZXNMZWdpc2xhdGlmcyIsInRleHRlTGVnaXNsYXRpZiIsInRvRG9zc2llcnNMZWdpc2xhdGlmcyIsImRvc3NpZXJzUGFybGVtZW50YWlyZXMiLCJ0b1NjcnV0aW5zIiwicGF0aEZyb21Eb2N1bWVudFVpZCIsImRvY3VtZW50c0RpciIsIm1hdGNoIiwiZXhlYyIsImFzc2VydCIsIm5vdFN0cmljdEVxdWFsIiwiZG9jdW1lbnRUeXBlIiwiY2hhbWJyZURpciIsInJlcHVibGlxdWVEaXIiLCJsZWdpc2xhdHVyZURpciIsImV0YXREaXIiLCJudW1lcm8iLCJzdWJzdHIiLCJudW1lcm9NaWxsaWVyc0RpciIsImVuc3VyZURpclN5bmMiLCJwYXRoRnJvbURvc3NpZXJQYXJsZW1lbnRhaXJlVWlkIiwiZG9zc2llcnNEaXIiLCJwYXRoRnJvbVJldW5pb25VaWQiLCJyZXVuaW9uc0RpciIsInNlc3Npb25EaXIiLCJpZERpciIsIm51bWVyb01pbGxpb25zRGlyIiwicGF0aEZyb21TY3J1dGluVWlkIiwic2NydXRpbnNEaXIiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFQTs7QUFDQTs7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFNQTs7QUFDQTs7QUFDQTs7QUFLQTs7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBcUJBLElBQU1BLGdCQUFnQixHQUNwQixzSEFERjtBQUVBLElBQU1DLGVBQWUsR0FBRyx3QkFBeEI7QUFDQSxJQUFNQyxlQUFlLEdBQ25CLDJEQURGO0FBRUEsSUFBTUMsZUFBZSxH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QUFHQSxNQUFNLENBQUNDLE1BQVAsQ0FBY0QsTUFBTSxDQUFDdEgsTUFBUCxHQUFnQixDQUE5QixDQUFUOztBQUNBLE1BQU13SCxpQkFBaUIsR0FBRzlILGlCQUFLQyxJQUFMLENBQVV5SCxjQUFWLEVBQTBCRSxNQUFNLENBQUNDLE1BQVAsQ0FBYyxDQUFkLEVBQWlCLENBQWpCLENBQTFCLENBQTFCOztBQUNBbEgsc0JBQUdvSCxhQUFILENBQWlCRCxpQkFBakI7O0FBQ0EsU0FBTzlILGlCQUFLQyxJQUFMLENBQVU2SCxpQkFBVixFQUE2QjdHLEdBQTdCLENBQVA7QUFDRCIsInNvdXJjZXNDb250ZW50IjpbIi8vLyBMb2FkIGRhdGEgZnJvbSBmaWxlc1xuXG5pbXBvcnQgYXNzZXJ0IGZyb20gXCJhc3NlcnRcIlxuaW1wb3J0IGZzIGZyb20gXCJmcy1leHRyYVwiXG5pbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiXG5cbmV4cG9ydCB7IEVuYWJsZWREYXRhc2V0cyB9IGZyb20gXCIuL2RhdGFzZXRzXCJcbmltcG9ydCB7IGRhdGFzZXRzLCBFbmFibGVkRGF0YXNldHMgfSBmcm9tIFwiLi9kYXRhc2V0c1wiXG5leHBvcnQgeyB3YWxrRGlyIH0gZnJvbSBcIi4vZmlsZV9zeXN0ZW1zXCJcbmltcG9ydCB7IHdhbGtEaXIgfSBmcm9tIFwiLi9maWxlX3N5c3RlbXNcIlxuaW1wb3J0IHtcbiAgQWN0ZXVyLFxuICBDb252ZXJ0IGFzIEFjdGV1cnNFdE9yZ2FuZXNDb252ZXJ0LFxuICBPcmdhbmUsXG4gIFBob3RvLFxufSBmcm9tIFwiLi90eXBlcy9hY3RldXJzX2V0X29yZ2FuZXNcIlxuaW1wb3J0IHsgQ29udmVydCBhcyBBZ2VuZGFzQ29udmVydCwgUmV1bmlvbiB9IGZyb20gXCIuL3R5cGVzL2FnZW5kYXNcIlxuaW1wb3J0IHsgQW1lbmRlbWVudCwgQ29udmVydCBhcyBBbWVuZGVtZW50c0NvbnZlcnQgfSBmcm9tIFwiLi90eXBlcy9hbWVuZGVtZW50c1wiXG5pbXBvcnQge1xuICBDb252ZXJ0IGFzIERvc3NpZXJzTGVnaXNsYXRpZnNDb252ZXJ0LFxuICBEb2N1bWVudCxcbiAgRG9zc2llclBhcmxlbWVudGFpcmUsXG59IGZyb20gXCIuL3R5cGVzL2Rvc3NpZXJzX2xlZ2lzbGF0aWZzXCJcbmltcG9ydCB7IExlZ2lzbGF0dXJlIH0gZnJvbSBcIi4vdHlwZXMvbGVnaXNsYXR1cmVzXCJcbmltcG9ydCB7IENvbnZlcnQgYXMgU2NydXRpbnNDb252ZXJ0LCBTY3J1dGluIH0gZnJvbSBcIi4vdHlwZXMvc2NydXRpbnNcIlxuXG5leHBvcnQgaW50ZXJmYWNlIERhdGEge1xuICByZWFkb25seSBhY3RldXJCeVVpZDogeyBbdWlkOiBzdHJpbmddOiBBY3RldXIgfVxuICByZWFkb25seSBhbWVuZGVtZW50QnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogQW1lbmRlbWVudCB9XG4gIHJlYWRvbmx5IGRvY3VtZW50QnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogRG9jdW1lbnQgfVxuICByZWFkb25seSBkb3NzaWVyUGFybGVtZW50YWlyZUJ5U2VuYXRDaGVtaW46IHtcbiAgICBbdWlkOiBzdHJpbmddOiBEb3NzaWVyUGFybGVtZW50YWlyZVxuICB9XG4gIHJlYWRvbmx5IGRvc3NpZXJQYXJsZW1lbnRhaXJlQnlUaXRyZUNoZW1pbjoge1xuICAgIFt1aWQ6IHN0cmluZ106IERvc3NpZXJQYXJsZW1lbnRhaXJlXG4gIH1cbiAgcmVhZG9ubHkgZG9zc2llclBhcmxlbWVudGFpcmVCeVVpZDogeyBbdWlkOiBzdHJpbmddOiBEb3NzaWVyUGFybGVtZW50YWlyZSB9XG4gIHJlYWRvbmx5IG9yZ2FuZUJ5VWlkOiB7IFt1aWQ6IHN0cmluZ106IE9yZ2FuZSB9XG4gIHJlYWRvbmx5IHBob3RvQnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogUGhvdG8gfVxuICByZWFkb25seSByZXVuaW9uQnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogUmV1bmlvbiB9XG4gIHJlYWRvbmx5IHJldW5pb25zQnlEYXk6IHsgW2RheTogc3RyaW5nXTogUmV1bmlvbltdIH1cbiAgcmVhZG9ubHkgcmV1bmlvbnNCeURvc3NpZXJVaWQ6IHsgW2Rvc3NpZXJVaWQ6IHN0cmluZ106IFJldW5pb25bXSB9XG4gIHJlYWRvbmx5IHNjcnV0aW5CeVVpZDogeyBbdWlkOiBzdHJpbmddOiBTY3J1dGluIH1cbn1cblxuY29uc3QgZG9jdW1lbnRVaWRSZWdleCA9XG4gIC9eKEFDSU58QVZDRXxBVklTfERFQ0x8RVRESXxMRVRUfE1FU1N8UElPTnxQTlJFfFBSSkx8UkFQUHxSSU5GfFJJT04pKEFOfFNOKShSXFxkKylbTFNdKFxcZCspKEJ8QlRBfEJUQ3xUQVApKFxcZCspKC0uKik/JC9cbmNvbnN0IGRvc3NpZXJVaWRSZWdleCA9IC9eREwoUlxcZCspKExcXGQrKU4oXFxkKykkL1xuY29uc3QgcmV1bmlvblVpZFJlZ2V4ID1cbiAgL15SVShBTnxDR3xTTikoUlxcZCspKExcXGQrKShbQVNdXFxkezR9KShJREN8SURGTD98SURTKShcXGQrKSQvXG5jb25zdCBzY3J1dGluVWlkUmVnZXggPSAvXlZUQU4oUlxcZCspKExcXGQrKVYoXFxkKykkL1xuXG4vKiogTG9hZCBkYXRhIGZyb20gc3BsaXQgZmlsZXMuICovXG5leHBvcnQgZnVuY3Rpb24gbG9hZEFzc2VtYmxlZURhdGEoXG4gIGRhdGFEaXI6IHN0cmluZyxcbiAgZW5hYmxlZERhdGFzZXRzOiBFbmFibGVkRGF0YXNldHMsXG4gIGxlZ2lzbGF0dXJlOiBMZWdpc2xhdHVyZSxcbiAgeyBsb2cgPSBmYWxzZSB9ID0ge30sXG4pOiBEYXRhIHtcbiAgY29uc3QgYWN0ZXVyQnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogQWN0ZXVyIH0gPSB7fVxuICBjb25zdCBvcmdhbmVCeVVpZDogeyBbdWlkOiBzdHJpbmddOiBPcmdhbmUgfSA9IHt9XG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuQWN0ZXVyc0V0T3JnYW5lcykge1xuICAgIGZvciAoY29uc3QgZGF0YXNldCBvZiBkYXRhc2V0cy5hY3RldXJzRXRPcmdhbmVzKSB7XG4gICAgICBpZiAoZGF0YXNldC5pZ25vcmVGb3JXZWIpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgbGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgICBkYXRhc2V0LmxlZ2lzbGF0dXJlICE9PSBMZWdpc2xhdHVyZS5BbGwgJiZcbiAgICAgICAgbGVnaXNsYXR1cmUgIT09IGRhdGFzZXQubGVnaXNsYXR1cmVcbiAgICAgICkge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgY29uc3QgZGF0YXNldERpciA9IHBhdGguam9pbihcbiAgICAgICAgZGF0YURpcixcbiAgICAgICAgZGF0YXNldC5maWxlbmFtZS5yZXBsYWNlKC9cXC5qc29uJC8sIFwiX25ldHRveWVcIiksXG4gICAgICApXG5cbiAgICAgIGZvciAoY29uc3QgYWN0ZXVyU3BsaXRQYXRoIG9mIHdhbGtEaXIoZGF0YXNldERpciwgW1wiYWN0ZXVyc1wiXSkpIHtcbiAgICAgICAgY29uc3QgYWN0ZXVyRmlsZW5hbWUgPSBhY3RldXJTcGxpdFBhdGhbYWN0ZXVyU3BsaXRQYXRoLmxlbmd0aCAtIDFdXG4gICAgICAgIGlmICghYWN0ZXVyRmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYWN0ZXVyRmlsZVBhdGggPSBwYXRoLmpvaW4oZGF0YXNldERpciwgLi4uYWN0ZXVyU3BsaXRQYXRoKVxuICAgICAgICBpZiAobG9nKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coYExvYWRpbmcgZmlsZTogJHthY3RldXJGaWxlUGF0aH3igKZgKVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGFjdGV1ckpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhhY3RldXJGaWxlUGF0aCwge1xuICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgfSlcbiAgICAgICAgY29uc3QgYWN0ZXVyID0gQWN0ZXVyc0V0T3JnYW5lc0NvbnZlcnQudG9BY3RldXIoYWN0ZXVySnNvbilcbiAgICAgICAgLy8gS2VlcCB0aGUgZmlyc3QgZXhpc3RpbmcgXCJhY3RldXJcIiwgYmVjYXVzZSB0aGUgZmlyc3Qgd3JhcHBlciBpcyB0aGUgbW9zdCBjb21wbGV0ZS5cbiAgICAgICAgaWYgKGFjdGV1ckJ5VWlkW2FjdGV1ci51aWRdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBhY3RldXJCeVVpZFthY3RldXIudWlkXSA9IGFjdGV1clxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGZvciAoY29uc3Qgb3JnYW5lU3BsaXRQYXRoIG9mIHdhbGtEaXIoZGF0YXNldERpciwgW1wib3JnYW5lc1wiXSkpIHtcbiAgICAgICAgY29uc3Qgb3JnYW5lRmlsZW5hbWUgPSBvcmdhbmVTcGxpdFBhdGhbb3JnYW5lU3BsaXRQYXRoLmxlbmd0aCAtIDFdXG4gICAgICAgIGlmICghb3JnYW5lRmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgb3JnYW5lRmlsZVBhdGggPSBwYXRoLmpvaW4oZGF0YXNldERpciwgLi4ub3JnYW5lU3BsaXRQYXRoKVxuICAgICAgICBpZiAobG9nKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coYExvYWRpbmcgZmlsZTogJHtvcmdhbmVGaWxlUGF0aH3igKZgKVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG9yZ2FuZUpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhvcmdhbmVGaWxlUGF0aCwge1xuICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgfSlcbiAgICAgICAgY29uc3Qgb3JnYW5lID0gQWN0ZXVyc0V0T3JnYW5lc0NvbnZlcnQudG9PcmdhbmUob3JnYW5lSnNvbilcbiAgICAgICAgLy8gS2VlcCB0aGUgZmlyc3QgZXhpc3RpbmcgXCJvcmdhbmVcIiwgYmVjYXVzZSB0aGUgZmlyc3Qgd3JhcHBlciBpcyB0aGUgbW9zdCBjb21wbGV0ZS5cbiAgICAgICAgaWYgKG9yZ2FuZUJ5VWlkW29yZ2FuZS51aWRdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBvcmdhbmVCeVVpZFtvcmdhbmUudWlkXSA9IG9yZ2FuZVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY29uc3QgcmV1bmlvbkJ5VWlkOiB7IFt1aWQ6IHN0cmluZ106IFJldW5pb24gfSA9IHt9XG4gIGNvbnN0IHJldW5pb25zQnlEYXk6IHsgW2RheTogc3RyaW5nXTogUmV1bmlvbltdIH0gPSB7fVxuICBjb25zdCByZXVuaW9uc0J5RG9zc2llclVpZDogeyBbZG9zc2llclVpZDogc3RyaW5nXTogUmV1bmlvbltdIH0gPSB7fVxuICBpZiAoZW5hYmxlZERhdGFzZXRzICYgRW5hYmxlZERhdGFzZXRzLkFnZW5kYXMpIHtcbiAgICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgZGF0YXNldHMuYWdlbmRhcykge1xuICAgICAgaWYgKGRhdGFzZXQuaWdub3JlRm9yV2ViKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBpZiAoXG4gICAgICAgIGxlZ2lzbGF0dXJlICE9PSBMZWdpc2xhdHVyZS5BbGwgJiZcbiAgICAgICAgZGF0YXNldC5sZWdpc2xhdHVyZSAhPT0gTGVnaXNsYXR1cmUuQWxsICYmXG4gICAgICAgIGxlZ2lzbGF0dXJlICE9PSBkYXRhc2V0LmxlZ2lzbGF0dXJlXG4gICAgICApIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGNvbnN0IGRhdGFzZXREaXIgPSBwYXRoLmpvaW4oXG4gICAgICAgIGRhdGFEaXIsXG4gICAgICAgIGRhdGFzZXQuZmlsZW5hbWUucmVwbGFjZSgvXFwuanNvbiQvLCBcIl9uZXR0b3llXCIpLFxuICAgICAgKVxuICAgICAgZm9yIChjb25zdCByZXVuaW9uU3BsaXRQYXRoIG9mIHdhbGtEaXIoZGF0YXNldERpcikpIHtcbiAgICAgICAgY29uc3QgcmV1bmlvbkZpbGVuYW1lID0gcmV1bmlvblNwbGl0UGF0aFtyZXVuaW9uU3BsaXRQYXRoLmxlbmd0aCAtIDFdXG4gICAgICAgIGlmICghcmV1bmlvbkZpbGVuYW1lLmVuZHNXaXRoKFwiLmpzb25cIikpIHtcbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHJldW5pb25GaWxlUGF0aCA9IHBhdGguam9pbihkYXRhc2V0RGlyLCAuLi5yZXVuaW9uU3BsaXRQYXRoKVxuICAgICAgICBpZiAobG9nKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coYExvYWRpbmcgZmlsZTogJHtyZXVuaW9uRmlsZVBhdGh94oCmYClcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByZXVuaW9uSnNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKHJldW5pb25GaWxlUGF0aCwge1xuICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgfSlcbiAgICAgICAgY29uc3QgcmV1bmlvbiA9IEFnZW5kYXNDb252ZXJ0LnRvUmV1bmlvbihyZXVuaW9uSnNvbilcbiAgICAgICAgaWYgKHJldW5pb25CeVVpZFtyZXVuaW9uLnVpZF0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHJldW5pb25CeVVpZFtyZXVuaW9uLnVpZF0gPSByZXVuaW9uXG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBkYXkgPSByZXVuaW9uLnRpbWVzdGFtcERlYnV0LnRvSVNPU3RyaW5nKCkuc3BsaXQoXCJUXCIpWzBdXG4gICAgICAgIGxldCByZXVuaW9uc0F0RGF5ID0gcmV1bmlvbnNCeURheVtkYXldXG4gICAgICAgIGlmIChyZXVuaW9uc0F0RGF5ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICByZXVuaW9uc0F0RGF5ID0gcmV1bmlvbnNCeURheVtkYXldID0gW11cbiAgICAgICAgfVxuICAgICAgICByZXVuaW9uc0F0RGF5LnB1c2gocmV1bmlvbilcblxuICAgICAgICBjb25zdCBvZGogPSByZXVuaW9uLm9kalxuICAgICAgICBpZiAob2RqICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBmb3IgKGNvbnN0IHBvaW50T2RqIG9mIG9kai5wb2ludHNPZGogfHwgW10pIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgZG9zc2llckxlZ2lzbGF0aWZSZWYgb2YgcG9pbnRPZGouZG9zc2llcnNMZWdpc2xhdGlmc1JlZnMgfHxcbiAgICAgICAgICAgICAgW10pIHtcbiAgICAgICAgICAgICAgbGV0IHJldW5pb25zQXREb3NzaWVyVWlkID1cbiAgICAgICAgICAgICAgICByZXVuaW9uc0J5RG9zc2llclVpZFtkb3NzaWVyTGVnaXNsYXRpZlJlZl1cbiAgICAgICAgICAgICAgaWYgKHJldW5pb25zQXREb3NzaWVyVWlkID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICByZXVuaW9uc0F0RG9zc2llclVpZCA9IHJldW5pb25zQnlEb3NzaWVyVWlkW1xuICAgICAgICAgICAgICAgICAgZG9zc2llckxlZ2lzbGF0aWZSZWZcbiAgICAgICAgICAgICAgICBdID0gW11cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICByZXVuaW9uc0F0RG9zc2llclVpZC5wdXNoKHJldW5pb24pXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY29uc3QgYW1lbmRlbWVudEJ5VWlkOiB7IFt1aWQ6IHN0cmluZ106IEFtZW5kZW1lbnQgfSA9IHt9XG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuQW1lbmRlbWVudHMpIHtcbiAgICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgZGF0YXNldHMuYW1lbmRlbWVudHMpIHtcbiAgICAgIGlmIChkYXRhc2V0Lmlnbm9yZUZvcldlYikge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgaWYgKFxuICAgICAgICBsZWdpc2xhdHVyZSAhPT0gTGVnaXNsYXR1cmUuQWxsICYmXG4gICAgICAgIGRhdGFzZXQubGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgICBsZWdpc2xhdHVyZSAhPT0gZGF0YXNldC5sZWdpc2xhdHVyZVxuICAgICAgKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBjb25zdCBkYXRhc2V0RGlyID0gcGF0aC5qb2luKFxuICAgICAgICBkYXRhRGlyLFxuICAgICAgICBkYXRhc2V0LmZpbGVuYW1lLnJlcGxhY2UoL1xcLmpzb24kLywgXCJfbmV0dG95ZVwiKSxcbiAgICAgIClcblxuICAgICAgZm9yIChjb25zdCBhbWVuZGVtZW50U3BsaXRQYXRoIG9mIHdhbGtEaXIoZGF0YXNldERpcikpIHtcbiAgICAgICAgY29uc3QgYW1lbmRlbWVudEZpbGVuYW1lID1cbiAgICAgICAgICBhbWVuZGVtZW50U3BsaXRQYXRoW2FtZW5kZW1lbnRTcGxpdFBhdGgubGVuZ3RoIC0gMV1cbiAgICAgICAgaWYgKCFhbWVuZGVtZW50RmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYW1lbmRlbWVudEZpbGVQYXRoID0gcGF0aC5qb2luKGRhdGFzZXREaXIsIC4uLmFtZW5kZW1lbnRTcGxpdFBhdGgpXG4gICAgICAgIGlmIChsb2cpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhgTG9hZGluZyBmaWxlOiAke2FtZW5kZW1lbnRGaWxlUGF0aH3igKZgKVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGFtZW5kZW1lbnRKc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoYW1lbmRlbWVudEZpbGVQYXRoLCB7XG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICB9KVxuICAgICAgICBjb25zdCBhbWVuZGVtZW50ID0gQW1lbmRlbWVudHNDb252ZXJ0LnRvQW1lbmRlbWVudChhbWVuZGVtZW50SnNvbilcbiAgICAgICAgaWYgKGFtZW5kZW1lbnRCeVVpZFthbWVuZGVtZW50LnVpZF0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGFtZW5kZW1lbnRCeVVpZFthbWVuZGVtZW50LnVpZF0gPSBhbWVuZGVtZW50XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjb25zdCBkb2N1bWVudEJ5VWlkOiB7IFt1aWQ6IHN0cmluZ106IERvY3VtZW50IH0gPSB7fVxuICBjb25zdCBkb3NzaWVyUGFybGVtZW50YWlyZUJ5U2VuYXRDaGVtaW46IHtcbiAgICBbdWlkOiBzdHJpbmddOiBEb3NzaWVyUGFybGVtZW50YWlyZVxuICB9ID0ge31cbiAgY29uc3QgZG9zc2llclBhcmxlbWVudGFpcmVCeVRpdHJlQ2hlbWluOiB7XG4gICAgW3VpZDogc3RyaW5nXTogRG9zc2llclBhcmxlbWVudGFpcmVcbiAgfSA9IHt9XG4gIGNvbnN0IGRvc3NpZXJQYXJsZW1lbnRhaXJlQnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogRG9zc2llclBhcmxlbWVudGFpcmUgfSA9IHt9XG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuRG9zc2llcnNMZWdpc2xhdGlmcykge1xuICAgIGZvciAoY29uc3QgZGF0YXNldCBvZiBkYXRhc2V0cy5kb3NzaWVyc0xlZ2lzbGF0aWZzKSB7XG4gICAgICBpZiAoZGF0YXNldC5pZ25vcmVGb3JXZWIpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgbGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgICBkYXRhc2V0LmxlZ2lzbGF0dXJlICE9PSBMZWdpc2xhdHVyZS5BbGwgJiZcbiAgICAgICAgbGVnaXNsYXR1cmUgIT09IGRhdGFzZXQubGVnaXNsYXR1cmVcbiAgICAgICkge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgY29uc3QgZGF0YXNldERpciA9IHBhdGguam9pbihcbiAgICAgICAgZGF0YURpcixcbiAgICAgICAgZGF0YXNldC5maWxlbmFtZS5yZXBsYWNlKC9cXC5qc29uJC8sIFwiX25ldHRveWVcIiksXG4gICAgICApXG5cbiAgICAgIGZvciAoY29uc3QgZG9jdW1lbnRTcGxpdFBhdGggb2Ygd2Fsa0RpcihkYXRhc2V0RGlyLCBbXCJkb2N1bWVudHNcIl0pKSB7XG4gICAgICAgIGNvbnN0IGRvY3VtZW50RmlsZW5hbWUgPSBkb2N1bWVudFNwbGl0UGF0aFtkb2N1bWVudFNwbGl0UGF0aC5sZW5ndGggLSAxXVxuICAgICAgICBpZiAoIWRvY3VtZW50RmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZG9jdW1lbnRGaWxlUGF0aCA9IHBhdGguam9pbihkYXRhc2V0RGlyLCAuLi5kb2N1bWVudFNwbGl0UGF0aClcbiAgICAgICAgaWYgKGxvZykge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGBMb2FkaW5nIGZpbGU6ICR7ZG9jdW1lbnRGaWxlUGF0aH3igKZgKVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGRvY3VtZW50SnNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKGRvY3VtZW50RmlsZVBhdGgsIHtcbiAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgIH0pXG4gICAgICAgIGNvbnN0IGRvY3VtZW50ID0gRG9zc2llcnNMZWdpc2xhdGlmc0NvbnZlcnQudG9Eb2N1bWVudChkb2N1bWVudEpzb24pXG4gICAgICAgIGlmIChkb2N1bWVudEJ5VWlkW2RvY3VtZW50LnVpZF0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGRvY3VtZW50QnlVaWRbZG9jdW1lbnQudWlkXSA9IGRvY3VtZW50XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgZm9yIChjb25zdCBkb3NzaWVyU3BsaXRQYXRoIG9mIHdhbGtEaXIoZGF0YXNldERpciwgW1wiZG9zc2llcnNcIl0pKSB7XG4gICAgICAgIGNvbnN0IGRvc3NpZXJGaWxlbmFtZSA9IGRvc3NpZXJTcGxpdFBhdGhbZG9zc2llclNwbGl0UGF0aC5sZW5ndGggLSAxXVxuICAgICAgICBpZiAoIWRvc3NpZXJGaWxlbmFtZS5lbmRzV2l0aChcIi5qc29uXCIpKSB7XG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBkb3NzaWVyRmlsZVBhdGggPSBwYXRoLmpvaW4oZGF0YXNldERpciwgLi4uZG9zc2llclNwbGl0UGF0aClcbiAgICAgICAgaWYgKGxvZykge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGBMb2FkaW5nIGZpbGU6ICR7ZG9zc2llckZpbGVQYXRofeKApmApXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZG9zc2llckpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhkb3NzaWVyRmlsZVBhdGgsIHtcbiAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgIH0pXG4gICAgICAgIGNvbnN0IGRvc3NpZXIgPVxuICAgICAgICAgIERvc3NpZXJzTGVnaXNsYXRpZnNDb252ZXJ0LnRvRG9zc2llclBhcmxlbWVudGFpcmUoZG9zc2llckpzb24pXG4gICAgICAgIGNvbnN0IHRpdHJlRG9zc2llciA9IGRvc3NpZXIudGl0cmVEb3NzaWVyXG4gICAgICAgIGlmIChcbiAgICAgICAgICB0aXRyZURvc3NpZXIuc2VuYXRDaGVtaW4gJiZcbiAgICAgICAgICBkb3NzaWVyUGFybGVtZW50YWlyZUJ5U2VuYXRDaGVtaW5bdGl0cmVEb3NzaWVyLnNlbmF0Q2hlbWluXSA9PT1cbiAgICAgICAgICAgIHVuZGVmaW5lZFxuICAgICAgICApIHtcbiAgICAgICAgICBkb3NzaWVyUGFybGVtZW50YWlyZUJ5U2VuYXRDaGVtaW5bdGl0cmVEb3NzaWVyLnNlbmF0Q2hlbWluXSA9IGRvc3NpZXJcbiAgICAgICAgfVxuICAgICAgICBpZiAoXG4gICAgICAgICAgdGl0cmVEb3NzaWVyLnRpdHJlQ2hlbWluICYmXG4gICAgICAgICAgZG9zc2llclBhcmxlbWVudGFpcmVCeVRpdHJlQ2hlbWluW3RpdHJlRG9zc2llci50aXRyZUNoZW1pbl0gPT09XG4gICAgICAgICAgICB1bmRlZmluZWRcbiAgICAgICAgKSB7XG4gICAgICAgICAgZG9zc2llclBhcmxlbWVudGFpcmVCeVRpdHJlQ2hlbWluW3RpdHJlRG9zc2llci50aXRyZUNoZW1pbl0gPSBkb3NzaWVyXG4gICAgICAgIH1cbiAgICAgICAgaWYgKGRvc3NpZXJQYXJsZW1lbnRhaXJlQnlVaWRbZG9zc2llci51aWRdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBkb3NzaWVyUGFybGVtZW50YWlyZUJ5VWlkW2Rvc3NpZXIudWlkXSA9IGRvc3NpZXJcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGxldCBwaG90b0J5VWlkOiB7IFt1aWQ6IHN0cmluZ106IFBob3RvIH0gPSB7fVxuICBpZiAoZW5hYmxlZERhdGFzZXRzICYgRW5hYmxlZERhdGFzZXRzLlBob3Rvcykge1xuICAgIHtcbiAgICAgIGNvbnN0IGpzb25GaWxlUGF0aDogc3RyaW5nID0gcGF0aC5qb2luKFxuICAgICAgICBkYXRhRGlyLFxuICAgICAgICBgcGhvdG9zX2RlcHV0ZXNfJHtcbiAgICAgICAgICAvLyBUT0RPOiBIYW5kbGUgTGVnaXNsYXR1cmUuQWxsLlxuICAgICAgICAgIGxlZ2lzbGF0dXJlID09PSBMZWdpc2xhdHVyZS5BbGwgPyBMZWdpc2xhdHVyZS5RdWluemUgOiBsZWdpc2xhdHVyZVxuICAgICAgICB9YCxcbiAgICAgICAgXCJkZXB1dGVzLmpzb25cIixcbiAgICAgIClcbiAgICAgIGlmIChmcy5leGlzdHNTeW5jKGpzb25GaWxlUGF0aCkpIHtcbiAgICAgICAgaWYgKGxvZykge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGBMb2FkaW5nIGZpbGU6ICR7anNvbkZpbGVQYXRofWApXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QganNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKGpzb25GaWxlUGF0aCwgeyBlbmNvZGluZzogXCJ1dGY4XCIgfSlcbiAgICAgICAgT2JqZWN0LmFzc2lnbihwaG90b0J5VWlkLCBKU09OLnBhcnNlKGpzb24pKVxuICAgICAgfSBlbHNlIGlmIChsb2cpIHtcbiAgICAgICAgY29uc29sZS5sb2coYElnbm9yaW5nIG1pc3NpbmcgZmlsZTogJHtqc29uRmlsZVBhdGh9YClcbiAgICAgIH1cbiAgICB9XG5cbiAgICB7XG4gICAgICBjb25zdCBqc29uRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihcbiAgICAgICAgZGF0YURpcixcbiAgICAgICAgXCJwaG90b3Nfc2VuYXRldXJzXCIsXG4gICAgICAgIFwic2VuYXRldXJzLmpzb25cIixcbiAgICAgIClcbiAgICAgIGlmIChmcy5leGlzdHNTeW5jKGpzb25GaWxlUGF0aCkpIHtcbiAgICAgICAgaWYgKGxvZykge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGBMb2FkaW5nIGZpbGU6ICR7anNvbkZpbGVQYXRofWApXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QganNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKGpzb25GaWxlUGF0aCwgeyBlbmNvZGluZzogXCJ1dGY4XCIgfSlcbiAgICAgICAgT2JqZWN0LmFzc2lnbihwaG90b0J5VWlkLCBKU09OLnBhcnNlKGpzb24pKVxuICAgICAgfSBlbHNlIGlmIChsb2cpIHtcbiAgICAgICAgY29uc29sZS5sb2coYElnbm9yaW5nIG1pc3NpbmcgZmlsZTogJHtqc29uRmlsZVBhdGh9YClcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjb25zdCBzY3J1dGluQnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogU2NydXRpbiB9ID0ge31cbiAgaWYgKGVuYWJsZWREYXRhc2V0cyAmIEVuYWJsZWREYXRhc2V0cy5TY3J1dGlucykge1xuICAgIGZvciAoY29uc3QgZGF0YXNldCBvZiBkYXRhc2V0cy5zY3J1dGlucykge1xuICAgICAgaWYgKGRhdGFzZXQuaWdub3JlRm9yV2ViKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBpZiAoXG4gICAgICAgIGxlZ2lzbGF0dXJlICE9PSBMZWdpc2xhdHVyZS5BbGwgJiZcbiAgICAgICAgZGF0YXNldC5sZWdpc2xhdHVyZSAhPT0gTGVnaXNsYXR1cmUuQWxsICYmXG4gICAgICAgIGxlZ2lzbGF0dXJlICE9PSBkYXRhc2V0LmxlZ2lzbGF0dXJlXG4gICAgICApIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGNvbnN0IGRhdGFzZXREaXIgPSBwYXRoLmpvaW4oXG4gICAgICAgIGRhdGFEaXIsXG4gICAgICAgIGRhdGFzZXQuZmlsZW5hbWUucmVwbGFjZSgvXFwuanNvbiQvLCBcIl9uZXR0b3llXCIpLFxuICAgICAgKVxuXG4gICAgICBmb3IgKGNvbnN0IHNjcnV0aW5TcGxpdFBhdGggb2Ygd2Fsa0RpcihkYXRhc2V0RGlyKSkge1xuICAgICAgICBjb25zdCBzY3J1dGluRmlsZW5hbWUgPSBzY3J1dGluU3BsaXRQYXRoW3NjcnV0aW5TcGxpdFBhdGgubGVuZ3RoIC0gMV1cbiAgICAgICAgaWYgKCFzY3J1dGluRmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgc2NydXRpbkZpbGVQYXRoID0gcGF0aC5qb2luKGRhdGFzZXREaXIsIC4uLnNjcnV0aW5TcGxpdFBhdGgpXG4gICAgICAgIGlmIChsb2cpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhgTG9hZGluZyBmaWxlOiAke3NjcnV0aW5GaWxlUGF0aH3igKZgKVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHNjcnV0aW5Kc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoc2NydXRpbkZpbGVQYXRoLCB7XG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICB9KVxuICAgICAgICBjb25zdCBzY3J1dGluID0gU2NydXRpbnNDb252ZXJ0LnRvU2NydXRpbihzY3J1dGluSnNvbilcbiAgICAgICAgaWYgKHNjcnV0aW5CeVVpZFtzY3J1dGluLnVpZF0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHNjcnV0aW5CeVVpZFtzY3J1dGluLnVpZF0gPSBzY3J1dGluXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGFjdGV1ckJ5VWlkLFxuICAgIGFtZW5kZW1lbnRCeVVpZCxcbiAgICBkb2N1bWVudEJ5VWlkLFxuICAgIGRvc3NpZXJQYXJsZW1lbnRhaXJlQnlTZW5hdENoZW1pbixcbiAgICBkb3NzaWVyUGFybGVtZW50YWlyZUJ5VGl0cmVDaGVtaW4sXG4gICAgZG9zc2llclBhcmxlbWVudGFpcmVCeVVpZCxcbiAgICBvcmdhbmVCeVVpZCxcbiAgICBwaG90b0J5VWlkLFxuICAgIHJldW5pb25CeVVpZCxcbiAgICByZXVuaW9uc0J5RGF5LFxuICAgIHJldW5pb25zQnlEb3NzaWVyVWlkLFxuICAgIHNjcnV0aW5CeVVpZCxcbiAgfVxufVxuXG4vKiogTG9hZCBkYXRhIGZyb20gYmlnIG1vbm9seXRpYyBmaWxlcy4gKi9cbmV4cG9ydCBmdW5jdGlvbiBsb2FkQXNzZW1ibGVlRGF0YUZyb21CaWdGaWxlcyhcbiAgZGF0YURpcjogc3RyaW5nLFxuICBlbmFibGVkRGF0YXNldHM6IEVuYWJsZWREYXRhc2V0cyxcbiAgbGVnaXNsYXR1cmU6IExlZ2lzbGF0dXJlLFxuICB7IGxvZyA9IGZhbHNlIH0gPSB7fSxcbik6IERhdGEge1xuICBjb25zdCBhY3RldXJCeVVpZDogeyBbdWlkOiBzdHJpbmddOiBBY3RldXIgfSA9IHt9XG4gIGNvbnN0IG9yZ2FuZUJ5VWlkOiB7IFt1aWQ6IHN0cmluZ106IE9yZ2FuZSB9ID0ge31cbiAgaWYgKGVuYWJsZWREYXRhc2V0cyAmIEVuYWJsZWREYXRhc2V0cy5BY3RldXJzRXRPcmdhbmVzKSB7XG4gICAgZm9yIChjb25zdCBkYXRhc2V0IG9mIGRhdGFzZXRzLmFjdGV1cnNFdE9yZ2FuZXMpIHtcbiAgICAgIGlmIChkYXRhc2V0Lmlnbm9yZUZvcldlYikge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgaWYgKFxuICAgICAgICBsZWdpc2xhdHVyZSAhPT0gTGVnaXNsYXR1cmUuQWxsICYmXG4gICAgICAgIGRhdGFzZXQubGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgICBsZWdpc2xhdHVyZSAhPT0gZGF0YXNldC5sZWdpc2xhdHVyZVxuICAgICAgKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBjb25zdCBqc29uRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihcbiAgICAgICAgZGF0YURpcixcbiAgICAgICAgZGF0YXNldC5maWxlbmFtZS5yZXBsYWNlKC9cXC5qc29uJC8sIFwiX25ldHRveWUuanNvblwiKSxcbiAgICAgIClcbiAgICAgIGlmIChsb2cpIHtcbiAgICAgICAgY29uc29sZS5sb2coYExvYWRpbmcgZmlsZTogJHtqc29uRmlsZVBhdGh9YClcbiAgICAgIH1cbiAgICAgIGNvbnN0IGpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhqc29uRmlsZVBhdGgsIHsgZW5jb2Rpbmc6IFwidXRmOFwiIH0pXG4gICAgICBjb25zdCBhY3RldXJzRXRPcmdhbmVzID0gQWN0ZXVyc0V0T3JnYW5lc0NvbnZlcnQudG9BY3RldXJzRXRPcmdhbmVzKGpzb24pXG4gICAgICBmb3IgKGNvbnN0IGFjdGV1ciBvZiBhY3RldXJzRXRPcmdhbmVzLmFjdGV1cnMpIHtcbiAgICAgICAgLy8gS2VlcCB0aGUgZmlyc3QgZXhpc3RpbmcgXCJhY3RldXJcIiwgYmVjYXVzZSB0aGUgZmlyc3Qgd3JhcHBlciBpcyB0aGUgbW9zdCBjb21wbGV0ZS5cbiAgICAgICAgaWYgKGFjdGV1ckJ5VWlkW2FjdGV1ci51aWRdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBhY3RldXJCeVVpZFthY3RldXIudWlkXSA9IGFjdGV1clxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBmb3IgKGNvbnN0IG9yZ2FuZSBvZiBhY3RldXJzRXRPcmdhbmVzLm9yZ2FuZXMpIHtcbiAgICAgICAgLy8gS2VlcCB0aGUgZmlyc3QgZXhpc3RpbmcgXCJvcmdhbmVcIiwgYmVjYXVzZSB0aGUgZmlyc3Qgd3JhcHBlciBpcyB0aGUgbW9zdCBjb21wbGV0ZS5cbiAgICAgICAgaWYgKG9yZ2FuZUJ5VWlkW29yZ2FuZS51aWRdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBvcmdhbmVCeVVpZFtvcmdhbmUudWlkXSA9IG9yZ2FuZVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY29uc3QgcmV1bmlvbkJ5VWlkOiB7IFt1aWQ6IHN0cmluZ106IFJldW5pb24gfSA9IHt9XG4gIGNvbnN0IHJldW5pb25zQnlEYXk6IHsgW2RheTogc3RyaW5nXTogUmV1bmlvbltdIH0gPSB7fVxuICBjb25zdCByZXVuaW9uc0J5RG9zc2llclVpZDogeyBbZG9zc2llclVpZDogc3RyaW5nXTogUmV1bmlvbltdIH0gPSB7fVxuICBpZiAoZW5hYmxlZERhdGFzZXRzICYgRW5hYmxlZERhdGFzZXRzLkFnZW5kYXMpIHtcbiAgICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgZGF0YXNldHMuYWdlbmRhcykge1xuICAgICAgaWYgKGRhdGFzZXQuaWdub3JlRm9yV2ViKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBpZiAoXG4gICAgICAgIGxlZ2lzbGF0dXJlICE9PSBMZWdpc2xhdHVyZS5BbGwgJiZcbiAgICAgICAgZGF0YXNldC5sZWdpc2xhdHVyZSAhPT0gTGVnaXNsYXR1cmUuQWxsICYmXG4gICAgICAgIGxlZ2lzbGF0dXJlICE9PSBkYXRhc2V0LmxlZ2lzbGF0dXJlXG4gICAgICApIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGNvbnN0IGpzb25GaWxlUGF0aDogc3RyaW5nID0gcGF0aC5qb2luKFxuICAgICAgICBkYXRhRGlyLFxuICAgICAgICBkYXRhc2V0LmZpbGVuYW1lLnJlcGxhY2UoL1xcLmpzb24kLywgXCJfbmV0dG95ZS5qc29uXCIpLFxuICAgICAgKVxuICAgICAgaWYgKGxvZykge1xuICAgICAgICBjb25zb2xlLmxvZyhgTG9hZGluZyBmaWxlOiAke2pzb25GaWxlUGF0aH1gKVxuICAgICAgfVxuICAgICAgY29uc3QganNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKGpzb25GaWxlUGF0aCwgeyBlbmNvZGluZzogXCJ1dGY4XCIgfSlcbiAgICAgIGNvbnN0IGFnZW5kYXMgPSBBZ2VuZGFzQ29udmVydC50b0FnZW5kYXMoanNvbilcbiAgICAgIGZvciAoY29uc3QgcmV1bmlvbiBvZiBhZ2VuZGFzLnJldW5pb25zKSB7XG4gICAgICAgIGlmIChyZXVuaW9uQnlVaWRbcmV1bmlvbi51aWRdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICByZXVuaW9uQnlVaWRbcmV1bmlvbi51aWRdID0gcmV1bmlvblxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZGF5ID0gcmV1bmlvbi50aW1lc3RhbXBEZWJ1dC50b0lTT1N0cmluZygpLnNwbGl0KFwiVFwiKVswXVxuICAgICAgICBsZXQgcmV1bmlvbnNBdERheSA9IHJldW5pb25zQnlEYXlbZGF5XVxuICAgICAgICBpZiAocmV1bmlvbnNBdERheSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgcmV1bmlvbnNBdERheSA9IHJldW5pb25zQnlEYXlbZGF5XSA9IFtdXG4gICAgICAgIH1cbiAgICAgICAgcmV1bmlvbnNBdERheS5wdXNoKHJldW5pb24pXG5cbiAgICAgICAgY29uc3Qgb2RqID0gcmV1bmlvbi5vZGpcbiAgICAgICAgaWYgKG9kaiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgZm9yIChjb25zdCBwb2ludE9kaiBvZiBvZGoucG9pbnRzT2RqIHx8IFtdKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGRvc3NpZXJMZWdpc2xhdGlmUmVmIG9mIHBvaW50T2RqLmRvc3NpZXJzTGVnaXNsYXRpZnNSZWZzIHx8XG4gICAgICAgICAgICAgIFtdKSB7XG4gICAgICAgICAgICAgIGxldCByZXVuaW9uc0F0RG9zc2llclVpZCA9XG4gICAgICAgICAgICAgICAgcmV1bmlvbnNCeURvc3NpZXJVaWRbZG9zc2llckxlZ2lzbGF0aWZSZWZdXG4gICAgICAgICAgICAgIGlmIChyZXVuaW9uc0F0RG9zc2llclVpZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgcmV1bmlvbnNBdERvc3NpZXJVaWQgPSByZXVuaW9uc0J5RG9zc2llclVpZFtcbiAgICAgICAgICAgICAgICAgIGRvc3NpZXJMZWdpc2xhdGlmUmVmXG4gICAgICAgICAgICAgICAgXSA9IFtdXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgcmV1bmlvbnNBdERvc3NpZXJVaWQucHVzaChyZXVuaW9uKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGFtZW5kZW1lbnRCeVVpZDogeyBbdWlkOiBzdHJpbmddOiBBbWVuZGVtZW50IH0gPSB7fVxuICBpZiAoZW5hYmxlZERhdGFzZXRzICYgRW5hYmxlZERhdGFzZXRzLkFtZW5kZW1lbnRzKSB7XG4gICAgZm9yIChjb25zdCBkYXRhc2V0IG9mIGRhdGFzZXRzLmFtZW5kZW1lbnRzKSB7XG4gICAgICBpZiAoZGF0YXNldC5pZ25vcmVGb3JXZWIpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgbGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgICBkYXRhc2V0LmxlZ2lzbGF0dXJlICE9PSBMZWdpc2xhdHVyZS5BbGwgJiZcbiAgICAgICAgbGVnaXNsYXR1cmUgIT09IGRhdGFzZXQubGVnaXNsYXR1cmVcbiAgICAgICkge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgY29uc3QganNvbkZpbGVQYXRoOiBzdHJpbmcgPSBwYXRoLmpvaW4oXG4gICAgICAgIGRhdGFEaXIsXG4gICAgICAgIGRhdGFzZXQuZmlsZW5hbWUucmVwbGFjZSgvXFwuanNvbiQvLCBcIl9uZXR0b3llLmpzb25cIiksXG4gICAgICApXG4gICAgICBpZiAobG9nKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGBMb2FkaW5nIGZpbGU6ICR7anNvbkZpbGVQYXRofWApXG4gICAgICB9XG4gICAgICBjb25zdCBqc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoanNvbkZpbGVQYXRoLCB7IGVuY29kaW5nOiBcInV0ZjhcIiB9KVxuICAgICAgY29uc3QgYW1lbmRlbWVudHMgPSBBbWVuZGVtZW50c0NvbnZlcnQudG9BbWVuZGVtZW50cyhqc29uKVxuICAgICAgZm9yIChjb25zdCB0ZXh0ZUxlZ2lzbGF0aWYgb2YgYW1lbmRlbWVudHMudGV4dGVzTGVnaXNsYXRpZnMpIHtcbiAgICAgICAgZm9yIChjb25zdCBhbWVuZGVtZW50IG9mIHRleHRlTGVnaXNsYXRpZi5hbWVuZGVtZW50cykge1xuICAgICAgICAgIGlmIChhbWVuZGVtZW50QnlVaWRbYW1lbmRlbWVudC51aWRdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGFtZW5kZW1lbnRCeVVpZFthbWVuZGVtZW50LnVpZF0gPSBhbWVuZGVtZW50XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY29uc3QgZG9jdW1lbnRCeVVpZDogeyBbdWlkOiBzdHJpbmddOiBEb2N1bWVudCB9ID0ge31cbiAgY29uc3QgZG9zc2llclBhcmxlbWVudGFpcmVCeVNlbmF0Q2hlbWluOiB7XG4gICAgW3VpZDogc3RyaW5nXTogRG9zc2llclBhcmxlbWVudGFpcmVcbiAgfSA9IHt9XG4gIGNvbnN0IGRvc3NpZXJQYXJsZW1lbnRhaXJlQnlUaXRyZUNoZW1pbjoge1xuICAgIFt1aWQ6IHN0cmluZ106IERvc3NpZXJQYXJsZW1lbnRhaXJlXG4gIH0gPSB7fVxuICBjb25zdCBkb3NzaWVyUGFybGVtZW50YWlyZUJ5VWlkOiB7IFt1aWQ6IHN0cmluZ106IERvc3NpZXJQYXJsZW1lbnRhaXJlIH0gPSB7fVxuICBpZiAoZW5hYmxlZERhdGFzZXRzICYgRW5hYmxlZERhdGFzZXRzLkRvc3NpZXJzTGVnaXNsYXRpZnMpIHtcbiAgICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgZGF0YXNldHMuZG9zc2llcnNMZWdpc2xhdGlmcykge1xuICAgICAgaWYgKGRhdGFzZXQuaWdub3JlRm9yV2ViKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBpZiAoXG4gICAgICAgIGxlZ2lzbGF0dXJlICE9PSBMZWdpc2xhdHVyZS5BbGwgJiZcbiAgICAgICAgZGF0YXNldC5sZWdpc2xhdHVyZSAhPT0gTGVnaXNsYXR1cmUuQWxsICYmXG4gICAgICAgIGxlZ2lzbGF0dXJlICE9PSBkYXRhc2V0LmxlZ2lzbGF0dXJlXG4gICAgICApIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGNvbnN0IGpzb25GaWxlUGF0aDogc3RyaW5nID0gcGF0aC5qb2luKFxuICAgICAgICBkYXRhRGlyLFxuICAgICAgICBkYXRhc2V0LmZpbGVuYW1lLnJlcGxhY2UoL1xcLmpzb24kLywgXCJfbmV0dG95ZS5qc29uXCIpLFxuICAgICAgKVxuICAgICAgaWYgKGxvZykge1xuICAgICAgICBjb25zb2xlLmxvZyhgTG9hZGluZyBmaWxlOiAke2pzb25GaWxlUGF0aH1gKVxuICAgICAgfVxuICAgICAgY29uc3QganNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKGpzb25GaWxlUGF0aCwgeyBlbmNvZGluZzogXCJ1dGY4XCIgfSlcbiAgICAgIGNvbnN0IGRvc3NpZXJzTGVnaXNsYXRpZnMgPVxuICAgICAgICBEb3NzaWVyc0xlZ2lzbGF0aWZzQ29udmVydC50b0Rvc3NpZXJzTGVnaXNsYXRpZnMoanNvbilcbiAgICAgIGZvciAoY29uc3QgZG9jdW1lbnQgb2YgZG9zc2llcnNMZWdpc2xhdGlmcy50ZXh0ZXNMZWdpc2xhdGlmcykge1xuICAgICAgICBpZiAoZG9jdW1lbnRCeVVpZFtkb2N1bWVudC51aWRdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBkb2N1bWVudEJ5VWlkW2RvY3VtZW50LnVpZF0gPSBkb2N1bWVudFxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBmb3IgKGNvbnN0IGRvc3NpZXIgb2YgZG9zc2llcnNMZWdpc2xhdGlmcy5kb3NzaWVyc1BhcmxlbWVudGFpcmVzKSB7XG4gICAgICAgIGNvbnN0IHRpdHJlRG9zc2llciA9IGRvc3NpZXIudGl0cmVEb3NzaWVyXG4gICAgICAgIGlmIChcbiAgICAgICAgICB0aXRyZURvc3NpZXIuc2VuYXRDaGVtaW4gJiZcbiAgICAgICAgICBkb3NzaWVyUGFybGVtZW50YWlyZUJ5U2VuYXRDaGVtaW5bdGl0cmVEb3NzaWVyLnNlbmF0Q2hlbWluXSA9PT1cbiAgICAgICAgICAgIHVuZGVmaW5lZFxuICAgICAgICApIHtcbiAgICAgICAgICBkb3NzaWVyUGFybGVtZW50YWlyZUJ5U2VuYXRDaGVtaW5bdGl0cmVEb3NzaWVyLnNlbmF0Q2hlbWluXSA9IGRvc3NpZXJcbiAgICAgICAgfVxuICAgICAgICBpZiAoXG4gICAgICAgICAgdGl0cmVEb3NzaWVyLnRpdHJlQ2hlbWluICYmXG4gICAgICAgICAgZG9zc2llclBhcmxlbWVudGFpcmVCeVRpdHJlQ2hlbWluW3RpdHJlRG9zc2llci50aXRyZUNoZW1pbl0gPT09XG4gICAgICAgICAgICB1bmRlZmluZWRcbiAgICAgICAgKSB7XG4gICAgICAgICAgZG9zc2llclBhcmxlbWVudGFpcmVCeVRpdHJlQ2hlbWluW3RpdHJlRG9zc2llci50aXRyZUNoZW1pbl0gPSBkb3NzaWVyXG4gICAgICAgIH1cbiAgICAgICAgaWYgKGRvc3NpZXJQYXJsZW1lbnRhaXJlQnlVaWRbZG9zc2llci51aWRdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBkb3NzaWVyUGFybGVtZW50YWlyZUJ5VWlkW2Rvc3NpZXIudWlkXSA9IGRvc3NpZXJcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IHBob3RvQnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogUGhvdG8gfSA9IHt9XG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuUGhvdG9zKSB7XG4gICAgY29uc3QgcGhvdG9CeVVpZCA9IHt9XG5cbiAgICB7XG4gICAgICBjb25zdCBqc29uRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihcbiAgICAgICAgZGF0YURpcixcbiAgICAgICAgYHBob3Rvc19kZXB1dGVzXyR7XG4gICAgICAgICAgLy8gVE9ETzogSGFuZGxlIExlZ2lzbGF0dXJlLkFsbC5cbiAgICAgICAgICBsZWdpc2xhdHVyZSA9PT0gTGVnaXNsYXR1cmUuQWxsID8gTGVnaXNsYXR1cmUuUXVpbnplIDogbGVnaXNsYXR1cmVcbiAgICAgICAgfWAsXG4gICAgICAgIFwiZGVwdXRlcy5qc29uXCIsXG4gICAgICApXG4gICAgICBpZiAoZnMuZXhpc3RzU3luYyhqc29uRmlsZVBhdGgpKSB7XG4gICAgICAgIGlmIChsb2cpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhgTG9hZGluZyBmaWxlOiAke2pzb25GaWxlUGF0aH1gKVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhqc29uRmlsZVBhdGgsIHsgZW5jb2Rpbmc6IFwidXRmOFwiIH0pXG4gICAgICAgIE9iamVjdC5hc3NpZ24ocGhvdG9CeVVpZCwgSlNPTi5wYXJzZShqc29uKSlcbiAgICAgIH0gZWxzZSBpZiAobG9nKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGBJZ25vcmluZyBtaXNzaW5nIGZpbGU6ICR7anNvbkZpbGVQYXRofWApXG4gICAgICB9XG4gICAgfVxuXG4gICAge1xuICAgICAgY29uc3QganNvbkZpbGVQYXRoOiBzdHJpbmcgPSBwYXRoLmpvaW4oXG4gICAgICAgIGRhdGFEaXIsXG4gICAgICAgIFwicGhvdG9zX3NlbmF0ZXVyc1wiLFxuICAgICAgICBcInNlbmF0ZXVycy5qc29uXCIsXG4gICAgICApXG4gICAgICBpZiAoZnMuZXhpc3RzU3luYyhqc29uRmlsZVBhdGgpKSB7XG4gICAgICAgIGlmIChsb2cpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhgTG9hZGluZyBmaWxlOiAke2pzb25GaWxlUGF0aH1gKVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhqc29uRmlsZVBhdGgsIHsgZW5jb2Rpbmc6IFwidXRmOFwiIH0pXG4gICAgICAgIE9iamVjdC5hc3NpZ24ocGhvdG9CeVVpZCwgSlNPTi5wYXJzZShqc29uKSlcbiAgICAgIH0gZWxzZSBpZiAobG9nKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGBJZ25vcmluZyBtaXNzaW5nIGZpbGU6ICR7anNvbkZpbGVQYXRofWApXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY29uc3Qgc2NydXRpbkJ5VWlkOiB7IFt1aWQ6IHN0cmluZ106IFNjcnV0aW4gfSA9IHt9XG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuU2NydXRpbnMpIHtcbiAgICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgZGF0YXNldHMuc2NydXRpbnMpIHtcbiAgICAgIGlmIChkYXRhc2V0Lmlnbm9yZUZvcldlYikge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgaWYgKFxuICAgICAgICBsZWdpc2xhdHVyZSAhPT0gTGVnaXNsYXR1cmUuQWxsICYmXG4gICAgICAgIGRhdGFzZXQubGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgICBsZWdpc2xhdHVyZSAhPT0gZGF0YXNldC5sZWdpc2xhdHVyZVxuICAgICAgKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBjb25zdCBqc29uRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihcbiAgICAgICAgZGF0YURpcixcbiAgICAgICAgZGF0YXNldC5maWxlbmFtZS5yZXBsYWNlKC9cXC5qc29uJC8sIFwiX25ldHRveWUuanNvblwiKSxcbiAgICAgIClcbiAgICAgIGlmIChsb2cpIHtcbiAgICAgICAgY29uc29sZS5sb2coYExvYWRpbmcgZmlsZTogJHtqc29uRmlsZVBhdGh9YClcbiAgICAgIH1cbiAgICAgIGNvbnN0IGpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhqc29uRmlsZVBhdGgsIHsgZW5jb2Rpbmc6IFwidXRmOFwiIH0pXG4gICAgICBjb25zdCBzY3J1dGlucyA9IFNjcnV0aW5zQ29udmVydC50b1NjcnV0aW5zKGpzb24pXG4gICAgICBmb3IgKGNvbnN0IHNjcnV0aW4gb2Ygc2NydXRpbnMuc2NydXRpbnMpIHtcbiAgICAgICAgaWYgKHNjcnV0aW5CeVVpZFtzY3J1dGluLnVpZF0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHNjcnV0aW5CeVVpZFtzY3J1dGluLnVpZF0gPSBzY3J1dGluXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGFjdGV1ckJ5VWlkLFxuICAgIGFtZW5kZW1lbnRCeVVpZCxcbiAgICBkb2N1bWVudEJ5VWlkLFxuICAgIGRvc3NpZXJQYXJsZW1lbnRhaXJlQnlTZW5hdENoZW1pbixcbiAgICBkb3NzaWVyUGFybGVtZW50YWlyZUJ5VGl0cmVDaGVtaW4sXG4gICAgZG9zc2llclBhcmxlbWVudGFpcmVCeVVpZCxcbiAgICBvcmdhbmVCeVVpZCxcbiAgICBwaG90b0J5VWlkLFxuICAgIHJldW5pb25CeVVpZCxcbiAgICByZXVuaW9uc0J5RGF5LFxuICAgIHJldW5pb25zQnlEb3NzaWVyVWlkLFxuICAgIHNjcnV0aW5CeVVpZCxcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcGF0aEZyb21Eb2N1bWVudFVpZChkb2N1bWVudHNEaXI6IHN0cmluZywgdWlkOiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCBtYXRjaCA9IGRvY3VtZW50VWlkUmVnZXguZXhlYyh1aWQpXG4gIGFzc2VydC5ub3RTdHJpY3RFcXVhbChcbiAgICBtYXRjaCxcbiAgICBudWxsLFxuICAgIGBVbmV4cGVjdGVkIHN0cnVjdHVyZSBmb3IgZG9jdW1lbnQgVUlEOiAke3VpZH1gLFxuICApXG4gIGNvbnN0IGRvY3VtZW50VHlwZSA9IHBhdGguam9pbihkb2N1bWVudHNEaXIsIG1hdGNoIVsxXSlcbiAgY29uc3QgY2hhbWJyZURpciA9IHBhdGguam9pbihkb2N1bWVudFR5cGUsIG1hdGNoIVsyXSlcbiAgY29uc3QgcmVwdWJsaXF1ZURpciA9IHBhdGguam9pbihjaGFtYnJlRGlyLCBtYXRjaCFbM10pXG4gIGNvbnN0IGxlZ2lzbGF0dXJlRGlyID0gcGF0aC5qb2luKHJlcHVibGlxdWVEaXIsIG1hdGNoIVs0XSlcbiAgY29uc3QgZXRhdERpciA9IHBhdGguam9pbihsZWdpc2xhdHVyZURpciwgbWF0Y2ghWzVdKVxuICBsZXQgbnVtZXJvID0gXCIwMDAwMDBcIiArIG1hdGNoIVs2XVxuICBudW1lcm8gPSBudW1lcm8uc3Vic3RyKG51bWVyby5sZW5ndGggLSA2KVxuICBjb25zdCBudW1lcm9NaWxsaWVyc0RpciA9IHBhdGguam9pbihldGF0RGlyLCBudW1lcm8uc3Vic3RyKDAsIDMpKVxuICBmcy5lbnN1cmVEaXJTeW5jKG51bWVyb01pbGxpZXJzRGlyKVxuICByZXR1cm4gcGF0aC5qb2luKG51bWVyb01pbGxpZXJzRGlyLCB1aWQpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXRoRnJvbURvc3NpZXJQYXJsZW1lbnRhaXJlVWlkKFxuICBkb3NzaWVyc0Rpcjogc3RyaW5nLFxuICB1aWQ6IHN0cmluZyxcbik6IHN0cmluZyB7XG4gIGNvbnN0IG1hdGNoID0gZG9zc2llclVpZFJlZ2V4LmV4ZWModWlkKVxuICBhc3NlcnQubm90U3RyaWN0RXF1YWwoXG4gICAgbWF0Y2gsXG4gICAgbnVsbCxcbiAgICBgVW5leHBlY3RlZCBzdHJ1Y3R1cmUgZm9yIGRvc3NpZXIgcGFybGVtZW50YWlyZSBVSUQ6ICR7dWlkfWAsXG4gIClcbiAgY29uc3QgcmVwdWJsaXF1ZURpciA9IHBhdGguam9pbihkb3NzaWVyc0RpciwgbWF0Y2ghWzFdKVxuICBjb25zdCBsZWdpc2xhdHVyZURpciA9IHBhdGguam9pbihyZXB1YmxpcXVlRGlyLCBtYXRjaCFbMl0pXG4gIGxldCBudW1lcm8gPSBcIjAwMDAwMFwiICsgbWF0Y2ghWzNdXG4gIG51bWVybyA9IG51bWVyby5zdWJzdHIobnVtZXJvLmxlbmd0aCAtIDYpXG4gIGNvbnN0IG51bWVyb01pbGxpZXJzRGlyID0gcGF0aC5qb2luKGxlZ2lzbGF0dXJlRGlyLCBudW1lcm8uc3Vic3RyKDAsIDMpKVxuICBmcy5lbnN1cmVEaXJTeW5jKG51bWVyb01pbGxpZXJzRGlyKVxuICByZXR1cm4gcGF0aC5qb2luKG51bWVyb01pbGxpZXJzRGlyLCB1aWQpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXRoRnJvbVJldW5pb25VaWQocmV1bmlvbnNEaXI6IHN0cmluZywgdWlkOiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCBtYXRjaCA9IHJldW5pb25VaWRSZWdleC5leGVjKHVpZClcbiAgYXNzZXJ0Lm5vdFN0cmljdEVxdWFsKFxuICAgIG1hdGNoLFxuICAgIG51bGwsXG4gICAgYFVuZXhwZWN0ZWQgc3RydWN0dXJlIGZvciByZXVuaW9uIFVJRDogJHt1aWR9YCxcbiAgKVxuICBjb25zdCBjaGFtYnJlRGlyID0gcGF0aC5qb2luKHJldW5pb25zRGlyLCBtYXRjaCFbMV0pXG4gIGNvbnN0IHJlcHVibGlxdWVEaXIgPSBwYXRoLmpvaW4oY2hhbWJyZURpciwgbWF0Y2ghWzJdKVxuICBjb25zdCBsZWdpc2xhdHVyZURpciA9IHBhdGguam9pbihyZXB1YmxpcXVlRGlyLCBtYXRjaCFbM10pXG4gIGNvbnN0IHNlc3Npb25EaXIgPSBwYXRoLmpvaW4obGVnaXNsYXR1cmVEaXIsIG1hdGNoIVs0XSlcbiAgY29uc3QgaWREaXIgPSBwYXRoLmpvaW4oc2Vzc2lvbkRpciwgbWF0Y2ghWzVdKVxuICBsZXQgbnVtZXJvID0gXCIwMDAwMDAwMDBcIiArIG1hdGNoIVs2XVxuICBudW1lcm8gPSBudW1lcm8uc3Vic3RyKG51bWVyby5sZW5ndGggLSA5KVxuICBjb25zdCBudW1lcm9NaWxsaW9uc0RpciA9IHBhdGguam9pbihpZERpciwgbnVtZXJvLnN1YnN0cigwLCAzKSlcbiAgY29uc3QgbnVtZXJvTWlsbGllcnNEaXIgPSBwYXRoLmpvaW4obnVtZXJvTWlsbGlvbnNEaXIsIG51bWVyby5zdWJzdHIoMywgMykpXG4gIGZzLmVuc3VyZURpclN5bmMobnVtZXJvTWlsbGllcnNEaXIpXG4gIHJldHVybiBwYXRoLmpvaW4obnVtZXJvTWlsbGllcnNEaXIsIHVpZClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhdGhGcm9tU2NydXRpblVpZChzY3J1dGluc0Rpcjogc3RyaW5nLCB1aWQ6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IG1hdGNoID0gc2NydXRpblVpZFJlZ2V4LmV4ZWModWlkKVxuICBhc3NlcnQubm90U3RyaWN0RXF1YWwoXG4gICAgbWF0Y2gsXG4gICAgbnVsbCxcbiAgICBgVW5leHBlY3RlZCBzdHJ1Y3R1cmUgZm9yIHNjcnV0aW4gVUlEOiAke3VpZH1gLFxuICApXG4gIGNvbnN0IHJlcHVibGlxdWVEaXIgPSBwYXRoLmpvaW4oc2NydXRpbnNEaXIsIG1hdGNoIVsxXSlcbiAgY29uc3QgbGVnaXNsYXR1cmVEaXIgPSBwYXRoLmpvaW4ocmVwdWJsaXF1ZURpciwgbWF0Y2ghWzJdKVxuICBsZXQgbnVtZXJvID0gXCIwMDAwMDBcIiArIG1hdGNoIVszXVxuICBudW1lcm8gPSBudW1lcm8uc3Vic3RyKG51bWVyby5sZW5ndGggLSA2KVxuICBjb25zdCBudW1lcm9NaWxsaWVyc0RpciA9IHBhdGguam9pbihsZWdpc2xhdHVyZURpciwgbnVtZXJvLnN1YnN0cigwLCAzKSlcbiAgZnMuZW5zdXJlRGlyU3luYyhudW1lcm9NaWxsaWVyc0RpcilcbiAgcmV0dXJuIHBhdGguam9pbihudW1lcm9NaWxsaWVyc0RpciwgdWlkKVxufVxuIl19
|
|
1138
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJkb2N1bWVudFVpZFJlZ2V4IiwiZG9zc2llclVpZFJlZ2V4IiwicmV1bmlvblVpZFJlZ2V4Iiwic2NydXRpblVpZFJlZ2V4IiwibG9hZEFzc2VtYmxlZURhdGEiLCJkYXRhRGlyIiwiZW5hYmxlZERhdGFzZXRzIiwibGVnaXNsYXR1cmUiLCJsb2ciLCJhY3RldXJCeVVpZCIsIm9yZ2FuZUJ5VWlkIiwiRW5hYmxlZERhdGFzZXRzIiwiQWN0ZXVyc0V0T3JnYW5lcyIsImRhdGFzZXRzIiwiYWN0ZXVyc0V0T3JnYW5lcyIsImRhdGFzZXQiLCJpZ25vcmVGb3JXZWIiLCJMZWdpc2xhdHVyZSIsIkFsbCIsImRhdGFzZXREaXIiLCJwYXRoIiwiam9pbiIsImZpbGVuYW1lIiwicmVwbGFjZSIsIndhbGtEaXIiLCJhY3RldXJTcGxpdFBhdGgiLCJhY3RldXJGaWxlbmFtZSIsImxlbmd0aCIsImVuZHNXaXRoIiwiYWN0ZXVyRmlsZVBhdGgiLCJjb25zb2xlIiwiYWN0ZXVySnNvbiIsImZzIiwicmVhZEZpbGVTeW5jIiwiZW5jb2RpbmciLCJhY3RldXIiLCJBY3RldXJzRXRPcmdhbmVzQ29udmVydCIsInRvQWN0ZXVyIiwidWlkIiwidW5kZWZpbmVkIiwib3JnYW5lU3BsaXRQYXRoIiwib3JnYW5lRmlsZW5hbWUiLCJvcmdhbmVGaWxlUGF0aCIsIm9yZ2FuZUpzb24iLCJvcmdhbmUiLCJ0b09yZ2FuZSIsInJldW5pb25CeVVpZCIsInJldW5pb25zQnlEYXkiLCJyZXVuaW9uc0J5RG9zc2llclVpZCIsIkFnZW5kYXMiLCJhZ2VuZGFzIiwicmV1bmlvblNwbGl0UGF0aCIsInJldW5pb25GaWxlbmFtZSIsInJldW5pb25GaWxlUGF0aCIsInJldW5pb25Kc29uIiwicmV1bmlvbiIsIkFnZW5kYXNDb252ZXJ0IiwidG9SZXVuaW9uIiwiZGF5IiwidGltZXN0YW1wRGVidXQiLCJ0b0lTT1N0cmluZyIsInNwbGl0IiwicmV1bmlvbnNBdERheSIsInB1c2giLCJvZGoiLCJwb2ludHNPZGoiLCJwb2ludE9kaiIsImRvc3NpZXJzTGVnaXNsYXRpZnNSZWZzIiwiZG9zc2llckxlZ2lzbGF0aWZSZWYiLCJyZXVuaW9uc0F0RG9zc2llclVpZCIsImFtZW5kZW1lbnRCeVVpZCIsIkFtZW5kZW1lbnRzIiwiYW1lbmRlbWVudHMiLCJhbWVuZGVtZW50U3BsaXRQYXRoIiwiYW1lbmRlbWVudEZpbGVuYW1lIiwiYW1lbmRlbWVudEZpbGVQYXRoIiwiYW1lbmRlbWVudEpzb24iLCJhbWVuZGVtZW50IiwiQW1lbmRlbWVudHNDb252ZXJ0IiwidG9BbWVuZGVtZW50IiwiZG9jdW1lbnRCeVVpZCIsImRvc3NpZXJQYXJsZW1lbnRhaXJlQnlTZW5hdENoZW1pbiIsImRvc3NpZXJQYXJsZW1lbnRhaXJlQnlUaXRyZUNoZW1pbiIsImRvc3NpZXJQYXJsZW1lbnRhaXJlQnlVaWQiLCJEb3NzaWVyc0xlZ2lzbGF0aWZzIiwiZG9zc2llcnNMZWdpc2xhdGlmcyIsImRvY3VtZW50U3BsaXRQYXRoIiwiZG9jdW1lbnRGaWxlbmFtZSIsImRvY3VtZW50RmlsZVBhdGgiLCJkb2N1bWVudEpzb24iLCJkb2N1bWVudCIsIkRvc3NpZXJzTGVnaXNsYXRpZnNDb252ZXJ0IiwidG9Eb2N1bWVudCIsImRvc3NpZXJTcGxpdFBhdGgiLCJkb3NzaWVyRmlsZW5hbWUiLCJkb3NzaWVyRmlsZVBhdGgiLCJkb3NzaWVySnNvbiIsImRvc3NpZXIiLCJ0b0Rvc3NpZXJQYXJsZW1lbnRhaXJlIiwidGl0cmVEb3NzaWVyIiwic2VuYXRDaGVtaW4iLCJ0aXRyZUNoZW1pbiIsInBob3RvQnlVaWQiLCJQaG90b3MiLCJqc29uRmlsZVBhdGgiLCJRdWluemUiLCJleGlzdHNTeW5jIiwianNvbiIsIk9iamVjdCIsImFzc2lnbiIsIkpTT04iLCJwYXJzZSIsInNjcnV0aW5CeVVpZCIsIlNjcnV0aW5zIiwic2NydXRpbnMiLCJzY3J1dGluU3BsaXRQYXRoIiwic2NydXRpbkZpbGVuYW1lIiwic2NydXRpbkZpbGVQYXRoIiwic2NydXRpbkpzb24iLCJzY3J1dGluIiwiU2NydXRpbnNDb252ZXJ0IiwidG9TY3J1dGluIiwibG9hZEFzc2VtYmxlZURhdGFGcm9tQmlnRmlsZXMiLCJ0b0FjdGV1cnNFdE9yZ2FuZXMiLCJhY3RldXJzIiwib3JnYW5lcyIsInRvQWdlbmRhcyIsInJldW5pb25zIiwidG9BbWVuZGVtZW50cyIsInRleHRlc0xlZ2lzbGF0aWZzIiwidGV4dGVMZWdpc2xhdGlmIiwidG9Eb3NzaWVyc0xlZ2lzbGF0aWZzIiwiZG9zc2llcnNQYXJsZW1lbnRhaXJlcyIsInRvU2NydXRpbnMiLCJwYXRoRnJvbURvY3VtZW50VWlkIiwiZG9jdW1lbnRzRGlyIiwibWF0Y2giLCJleGVjIiwiYXNzZXJ0Iiwibm90U3RyaWN0RXF1YWwiLCJkb2N1bWVudFR5cGUiLCJjaGFtYnJlRGlyIiwicmVwdWJsaXF1ZURpciIsImxlZ2lzbGF0dXJlRGlyIiwiZXRhdERpciIsIm51bWVybyIsInN1YnN0ciIsIm51bWVyb01pbGxpZXJzRGlyIiwiZW5zdXJlRGlyU3luYyIsInBhdGhGcm9tRG9zc2llclBhcmxlbWVudGFpcmVVaWQiLCJkb3NzaWVyc0RpciIsInBhdGhGcm9tUmV1bmlvblVpZCIsInJldW5pb25zRGlyIiwic2Vzc2lvbkRpciIsImlkRGlyIiwibnVtZXJvTWlsbGlvbnNEaXIiLCJwYXRoRnJvbVNjcnV0aW5VaWQiLCJzY3J1dGluc0RpciJdLCJzb3VyY2VzIjpbIi4uL3NyYy9sb2FkZXJzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vLyBMb2FkIGRhdGEgZnJvbSBmaWxlc1xuXG5pbXBvcnQgYXNzZXJ0IGZyb20gXCJhc3NlcnRcIlxuaW1wb3J0IGZzIGZyb20gXCJmcy1leHRyYVwiXG5pbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiXG5cbmV4cG9ydCB7IEVuYWJsZWREYXRhc2V0cyB9IGZyb20gXCIuL2RhdGFzZXRzXCJcbmltcG9ydCB7IGRhdGFzZXRzLCBFbmFibGVkRGF0YXNldHMgfSBmcm9tIFwiLi9kYXRhc2V0c1wiXG5leHBvcnQgeyB3YWxrRGlyIH0gZnJvbSBcIi4vZmlsZV9zeXN0ZW1zXCJcbmltcG9ydCB7IHdhbGtEaXIgfSBmcm9tIFwiLi9maWxlX3N5c3RlbXNcIlxuaW1wb3J0IHtcbiAgQWN0ZXVyLFxuICBDb252ZXJ0IGFzIEFjdGV1cnNFdE9yZ2FuZXNDb252ZXJ0LFxuICBPcmdhbmUsXG4gIFBob3RvLFxufSBmcm9tIFwiLi90eXBlcy9hY3RldXJzX2V0X29yZ2FuZXNcIlxuaW1wb3J0IHsgQ29udmVydCBhcyBBZ2VuZGFzQ29udmVydCwgUmV1bmlvbiB9IGZyb20gXCIuL3R5cGVzL2FnZW5kYXNcIlxuaW1wb3J0IHsgQW1lbmRlbWVudCwgQ29udmVydCBhcyBBbWVuZGVtZW50c0NvbnZlcnQgfSBmcm9tIFwiLi90eXBlcy9hbWVuZGVtZW50c1wiXG5pbXBvcnQge1xuICBDb252ZXJ0IGFzIERvc3NpZXJzTGVnaXNsYXRpZnNDb252ZXJ0LFxuICBEb2N1bWVudCxcbiAgRG9zc2llclBhcmxlbWVudGFpcmUsXG59IGZyb20gXCIuL3R5cGVzL2Rvc3NpZXJzX2xlZ2lzbGF0aWZzXCJcbmltcG9ydCB7IExlZ2lzbGF0dXJlIH0gZnJvbSBcIi4vdHlwZXMvbGVnaXNsYXR1cmVzXCJcbmltcG9ydCB7IENvbnZlcnQgYXMgU2NydXRpbnNDb252ZXJ0LCBTY3J1dGluIH0gZnJvbSBcIi4vdHlwZXMvc2NydXRpbnNcIlxuXG5leHBvcnQgaW50ZXJmYWNlIERhdGEge1xuICByZWFkb25seSBhY3RldXJCeVVpZDogeyBbdWlkOiBzdHJpbmddOiBBY3RldXIgfVxuICByZWFkb25seSBhbWVuZGVtZW50QnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogQW1lbmRlbWVudCB9XG4gIHJlYWRvbmx5IGRvY3VtZW50QnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogRG9jdW1lbnQgfVxuICByZWFkb25seSBkb3NzaWVyUGFybGVtZW50YWlyZUJ5U2VuYXRDaGVtaW46IHtcbiAgICBbdWlkOiBzdHJpbmddOiBEb3NzaWVyUGFybGVtZW50YWlyZVxuICB9XG4gIHJlYWRvbmx5IGRvc3NpZXJQYXJsZW1lbnRhaXJlQnlUaXRyZUNoZW1pbjoge1xuICAgIFt1aWQ6IHN0cmluZ106IERvc3NpZXJQYXJsZW1lbnRhaXJlXG4gIH1cbiAgcmVhZG9ubHkgZG9zc2llclBhcmxlbWVudGFpcmVCeVVpZDogeyBbdWlkOiBzdHJpbmddOiBEb3NzaWVyUGFybGVtZW50YWlyZSB9XG4gIHJlYWRvbmx5IG9yZ2FuZUJ5VWlkOiB7IFt1aWQ6IHN0cmluZ106IE9yZ2FuZSB9XG4gIHJlYWRvbmx5IHBob3RvQnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogUGhvdG8gfVxuICByZWFkb25seSByZXVuaW9uQnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogUmV1bmlvbiB9XG4gIHJlYWRvbmx5IHJldW5pb25zQnlEYXk6IHsgW2RheTogc3RyaW5nXTogUmV1bmlvbltdIH1cbiAgcmVhZG9ubHkgcmV1bmlvbnNCeURvc3NpZXJVaWQ6IHsgW2Rvc3NpZXJVaWQ6IHN0cmluZ106IFJldW5pb25bXSB9XG4gIHJlYWRvbmx5IHNjcnV0aW5CeVVpZDogeyBbdWlkOiBzdHJpbmddOiBTY3J1dGluIH1cbn1cblxuY29uc3QgZG9jdW1lbnRVaWRSZWdleCA9XG4gIC9eKEFDSU58QVZDRXxBVklTfERFQ0x8RVRESXxMRVRUfE1FU1N8UElPTnxQTlJFfFBSSkx8UkFQUHxSSU5GfFJJT04pKEFOfFNOKShSXFxkKylbTFNdKFxcZCspKEJ8QlRBfEJUQ3xUQVApKFxcZCspKC0uKik/JC9cbmNvbnN0IGRvc3NpZXJVaWRSZWdleCA9IC9eREwoUlxcZCspKExcXGQrKU4oXFxkKykkL1xuY29uc3QgcmV1bmlvblVpZFJlZ2V4ID1cbiAgL15SVShBTnxDR3xTTikoUlxcZCspKExcXGQrKShbQVNdXFxkezR9KShJREN8SURGTD98SURTKShcXGQrKSQvXG5jb25zdCBzY3J1dGluVWlkUmVnZXggPSAvXlZUQU4oUlxcZCspKExcXGQrKVYoXFxkKykkL1xuXG4vKiogTG9hZCBkYXRhIGZyb20gc3BsaXQgZmlsZXMuICovXG5leHBvcnQgZnVuY3Rpb24gbG9hZEFzc2VtYmxlZURhdGEoXG4gIGRhdGFEaXI6IHN0cmluZyxcbiAgZW5hYmxlZERhdGFzZXRzOiBFbmFibGVkRGF0YXNldHMsXG4gIGxlZ2lzbGF0dXJlOiBMZWdpc2xhdHVyZSxcbiAgeyBsb2cgPSBmYWxzZSB9ID0ge30sXG4pOiBEYXRhIHtcbiAgY29uc3QgYWN0ZXVyQnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogQWN0ZXVyIH0gPSB7fVxuICBjb25zdCBvcmdhbmVCeVVpZDogeyBbdWlkOiBzdHJpbmddOiBPcmdhbmUgfSA9IHt9XG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuQWN0ZXVyc0V0T3JnYW5lcykge1xuICAgIGZvciAoY29uc3QgZGF0YXNldCBvZiBkYXRhc2V0cy5hY3RldXJzRXRPcmdhbmVzKSB7XG4gICAgICBpZiAoZGF0YXNldC5pZ25vcmVGb3JXZWIpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgbGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgICBkYXRhc2V0LmxlZ2lzbGF0dXJlICE9PSBMZWdpc2xhdHVyZS5BbGwgJiZcbiAgICAgICAgbGVnaXNsYXR1cmUgIT09IGRhdGFzZXQubGVnaXNsYXR1cmVcbiAgICAgICkge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgY29uc3QgZGF0YXNldERpciA9IHBhdGguam9pbihcbiAgICAgICAgZGF0YURpcixcbiAgICAgICAgZGF0YXNldC5maWxlbmFtZS5yZXBsYWNlKC9cXC5qc29uJC8sIFwiX25ldHRveWVcIiksXG4gICAgICApXG5cbiAgICAgIGZvciAoY29uc3QgYWN0ZXVyU3BsaXRQYXRoIG9mIHdhbGtEaXIoZGF0YXNldERpciwgW1wiYWN0ZXVyc1wiXSkpIHtcbiAgICAgICAgY29uc3QgYWN0ZXVyRmlsZW5hbWUgPSBhY3RldXJTcGxpdFBhdGhbYWN0ZXVyU3BsaXRQYXRoLmxlbmd0aCAtIDFdXG4gICAgICAgIGlmICghYWN0ZXVyRmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYWN0ZXVyRmlsZVBhdGggPSBwYXRoLmpvaW4oZGF0YXNldERpciwgLi4uYWN0ZXVyU3BsaXRQYXRoKVxuICAgICAgICBpZiAobG9nKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coYExvYWRpbmcgZmlsZTogJHthY3RldXJGaWxlUGF0aH3igKZgKVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGFjdGV1ckpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhhY3RldXJGaWxlUGF0aCwge1xuICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgfSlcbiAgICAgICAgY29uc3QgYWN0ZXVyID0gQWN0ZXVyc0V0T3JnYW5lc0NvbnZlcnQudG9BY3RldXIoYWN0ZXVySnNvbilcbiAgICAgICAgLy8gS2VlcCB0aGUgZmlyc3QgZXhpc3RpbmcgXCJhY3RldXJcIiwgYmVjYXVzZSB0aGUgZmlyc3Qgd3JhcHBlciBpcyB0aGUgbW9zdCBjb21wbGV0ZS5cbiAgICAgICAgaWYgKGFjdGV1ckJ5VWlkW2FjdGV1ci51aWRdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBhY3RldXJCeVVpZFthY3RldXIudWlkXSA9IGFjdGV1clxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGZvciAoY29uc3Qgb3JnYW5lU3BsaXRQYXRoIG9mIHdhbGtEaXIoZGF0YXNldERpciwgW1wib3JnYW5lc1wiXSkpIHtcbiAgICAgICAgY29uc3Qgb3JnYW5lRmlsZW5hbWUgPSBvcmdhbmVTcGxpdFBhdGhbb3JnYW5lU3BsaXRQYXRoLmxlbmd0aCAtIDFdXG4gICAgICAgIGlmICghb3JnYW5lRmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgb3JnYW5lRmlsZVBhdGggPSBwYXRoLmpvaW4oZGF0YXNldERpciwgLi4ub3JnYW5lU3BsaXRQYXRoKVxuICAgICAgICBpZiAobG9nKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coYExvYWRpbmcgZmlsZTogJHtvcmdhbmVGaWxlUGF0aH3igKZgKVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG9yZ2FuZUpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhvcmdhbmVGaWxlUGF0aCwge1xuICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgfSlcbiAgICAgICAgY29uc3Qgb3JnYW5lID0gQWN0ZXVyc0V0T3JnYW5lc0NvbnZlcnQudG9PcmdhbmUob3JnYW5lSnNvbilcbiAgICAgICAgLy8gS2VlcCB0aGUgZmlyc3QgZXhpc3RpbmcgXCJvcmdhbmVcIiwgYmVjYXVzZSB0aGUgZmlyc3Qgd3JhcHBlciBpcyB0aGUgbW9zdCBjb21wbGV0ZS5cbiAgICAgICAgaWYgKG9yZ2FuZUJ5VWlkW29yZ2FuZS51aWRdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBvcmdhbmVCeVVpZFtvcmdhbmUudWlkXSA9IG9yZ2FuZVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY29uc3QgcmV1bmlvbkJ5VWlkOiB7IFt1aWQ6IHN0cmluZ106IFJldW5pb24gfSA9IHt9XG4gIGNvbnN0IHJldW5pb25zQnlEYXk6IHsgW2RheTogc3RyaW5nXTogUmV1bmlvbltdIH0gPSB7fVxuICBjb25zdCByZXVuaW9uc0J5RG9zc2llclVpZDogeyBbZG9zc2llclVpZDogc3RyaW5nXTogUmV1bmlvbltdIH0gPSB7fVxuICBpZiAoZW5hYmxlZERhdGFzZXRzICYgRW5hYmxlZERhdGFzZXRzLkFnZW5kYXMpIHtcbiAgICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgZGF0YXNldHMuYWdlbmRhcykge1xuICAgICAgaWYgKGRhdGFzZXQuaWdub3JlRm9yV2ViKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBpZiAoXG4gICAgICAgIGxlZ2lzbGF0dXJlICE9PSBMZWdpc2xhdHVyZS5BbGwgJiZcbiAgICAgICAgZGF0YXNldC5sZWdpc2xhdHVyZSAhPT0gTGVnaXNsYXR1cmUuQWxsICYmXG4gICAgICAgIGxlZ2lzbGF0dXJlICE9PSBkYXRhc2V0LmxlZ2lzbGF0dXJlXG4gICAgICApIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGNvbnN0IGRhdGFzZXREaXIgPSBwYXRoLmpvaW4oXG4gICAgICAgIGRhdGFEaXIsXG4gICAgICAgIGRhdGFzZXQuZmlsZW5hbWUucmVwbGFjZSgvXFwuanNvbiQvLCBcIl9uZXR0b3llXCIpLFxuICAgICAgKVxuICAgICAgZm9yIChjb25zdCByZXVuaW9uU3BsaXRQYXRoIG9mIHdhbGtEaXIoZGF0YXNldERpcikpIHtcbiAgICAgICAgY29uc3QgcmV1bmlvbkZpbGVuYW1lID0gcmV1bmlvblNwbGl0UGF0aFtyZXVuaW9uU3BsaXRQYXRoLmxlbmd0aCAtIDFdXG4gICAgICAgIGlmICghcmV1bmlvbkZpbGVuYW1lLmVuZHNXaXRoKFwiLmpzb25cIikpIHtcbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHJldW5pb25GaWxlUGF0aCA9IHBhdGguam9pbihkYXRhc2V0RGlyLCAuLi5yZXVuaW9uU3BsaXRQYXRoKVxuICAgICAgICBpZiAobG9nKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coYExvYWRpbmcgZmlsZTogJHtyZXVuaW9uRmlsZVBhdGh94oCmYClcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByZXVuaW9uSnNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKHJldW5pb25GaWxlUGF0aCwge1xuICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgfSlcbiAgICAgICAgY29uc3QgcmV1bmlvbiA9IEFnZW5kYXNDb252ZXJ0LnRvUmV1bmlvbihyZXVuaW9uSnNvbilcbiAgICAgICAgaWYgKHJldW5pb25CeVVpZFtyZXVuaW9uLnVpZF0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHJldW5pb25CeVVpZFtyZXVuaW9uLnVpZF0gPSByZXVuaW9uXG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBkYXkgPSByZXVuaW9uLnRpbWVzdGFtcERlYnV0LnRvSVNPU3RyaW5nKCkuc3BsaXQoXCJUXCIpWzBdXG4gICAgICAgIGxldCByZXVuaW9uc0F0RGF5ID0gcmV1bmlvbnNCeURheVtkYXldXG4gICAgICAgIGlmIChyZXVuaW9uc0F0RGF5ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICByZXVuaW9uc0F0RGF5ID0gcmV1bmlvbnNCeURheVtkYXldID0gW11cbiAgICAgICAgfVxuICAgICAgICByZXVuaW9uc0F0RGF5LnB1c2gocmV1bmlvbilcblxuICAgICAgICBjb25zdCBvZGogPSByZXVuaW9uLm9kalxuICAgICAgICBpZiAob2RqICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBmb3IgKGNvbnN0IHBvaW50T2RqIG9mIG9kai5wb2ludHNPZGogfHwgW10pIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgZG9zc2llckxlZ2lzbGF0aWZSZWYgb2YgcG9pbnRPZGouZG9zc2llcnNMZWdpc2xhdGlmc1JlZnMgfHxcbiAgICAgICAgICAgICAgW10pIHtcbiAgICAgICAgICAgICAgbGV0IHJldW5pb25zQXREb3NzaWVyVWlkID1cbiAgICAgICAgICAgICAgICByZXVuaW9uc0J5RG9zc2llclVpZFtkb3NzaWVyTGVnaXNsYXRpZlJlZl1cbiAgICAgICAgICAgICAgaWYgKHJldW5pb25zQXREb3NzaWVyVWlkID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICByZXVuaW9uc0F0RG9zc2llclVpZCA9IHJldW5pb25zQnlEb3NzaWVyVWlkW1xuICAgICAgICAgICAgICAgICAgZG9zc2llckxlZ2lzbGF0aWZSZWZcbiAgICAgICAgICAgICAgICBdID0gW11cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICByZXVuaW9uc0F0RG9zc2llclVpZC5wdXNoKHJldW5pb24pXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY29uc3QgYW1lbmRlbWVudEJ5VWlkOiB7IFt1aWQ6IHN0cmluZ106IEFtZW5kZW1lbnQgfSA9IHt9XG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuQW1lbmRlbWVudHMpIHtcbiAgICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgZGF0YXNldHMuYW1lbmRlbWVudHMpIHtcbiAgICAgIGlmIChkYXRhc2V0Lmlnbm9yZUZvcldlYikge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgaWYgKFxuICAgICAgICBsZWdpc2xhdHVyZSAhPT0gTGVnaXNsYXR1cmUuQWxsICYmXG4gICAgICAgIGRhdGFzZXQubGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgICBsZWdpc2xhdHVyZSAhPT0gZGF0YXNldC5sZWdpc2xhdHVyZVxuICAgICAgKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBjb25zdCBkYXRhc2V0RGlyID0gcGF0aC5qb2luKFxuICAgICAgICBkYXRhRGlyLFxuICAgICAgICBkYXRhc2V0LmZpbGVuYW1lLnJlcGxhY2UoL1xcLmpzb24kLywgXCJfbmV0dG95ZVwiKSxcbiAgICAgIClcblxuICAgICAgZm9yIChjb25zdCBhbWVuZGVtZW50U3BsaXRQYXRoIG9mIHdhbGtEaXIoZGF0YXNldERpcikpIHtcbiAgICAgICAgY29uc3QgYW1lbmRlbWVudEZpbGVuYW1lID1cbiAgICAgICAgICBhbWVuZGVtZW50U3BsaXRQYXRoW2FtZW5kZW1lbnRTcGxpdFBhdGgubGVuZ3RoIC0gMV1cbiAgICAgICAgaWYgKCFhbWVuZGVtZW50RmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYW1lbmRlbWVudEZpbGVQYXRoID0gcGF0aC5qb2luKGRhdGFzZXREaXIsIC4uLmFtZW5kZW1lbnRTcGxpdFBhdGgpXG4gICAgICAgIGlmIChsb2cpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhgTG9hZGluZyBmaWxlOiAke2FtZW5kZW1lbnRGaWxlUGF0aH3igKZgKVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGFtZW5kZW1lbnRKc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoYW1lbmRlbWVudEZpbGVQYXRoLCB7XG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICB9KVxuICAgICAgICBjb25zdCBhbWVuZGVtZW50ID0gQW1lbmRlbWVudHNDb252ZXJ0LnRvQW1lbmRlbWVudChhbWVuZGVtZW50SnNvbilcbiAgICAgICAgaWYgKGFtZW5kZW1lbnRCeVVpZFthbWVuZGVtZW50LnVpZF0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGFtZW5kZW1lbnRCeVVpZFthbWVuZGVtZW50LnVpZF0gPSBhbWVuZGVtZW50XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjb25zdCBkb2N1bWVudEJ5VWlkOiB7IFt1aWQ6IHN0cmluZ106IERvY3VtZW50IH0gPSB7fVxuICBjb25zdCBkb3NzaWVyUGFybGVtZW50YWlyZUJ5U2VuYXRDaGVtaW46IHtcbiAgICBbdWlkOiBzdHJpbmddOiBEb3NzaWVyUGFybGVtZW50YWlyZVxuICB9ID0ge31cbiAgY29uc3QgZG9zc2llclBhcmxlbWVudGFpcmVCeVRpdHJlQ2hlbWluOiB7XG4gICAgW3VpZDogc3RyaW5nXTogRG9zc2llclBhcmxlbWVudGFpcmVcbiAgfSA9IHt9XG4gIGNvbnN0IGRvc3NpZXJQYXJsZW1lbnRhaXJlQnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogRG9zc2llclBhcmxlbWVudGFpcmUgfSA9IHt9XG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuRG9zc2llcnNMZWdpc2xhdGlmcykge1xuICAgIGZvciAoY29uc3QgZGF0YXNldCBvZiBkYXRhc2V0cy5kb3NzaWVyc0xlZ2lzbGF0aWZzKSB7XG4gICAgICBpZiAoZGF0YXNldC5pZ25vcmVGb3JXZWIpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgbGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgICBkYXRhc2V0LmxlZ2lzbGF0dXJlICE9PSBMZWdpc2xhdHVyZS5BbGwgJiZcbiAgICAgICAgbGVnaXNsYXR1cmUgIT09IGRhdGFzZXQubGVnaXNsYXR1cmVcbiAgICAgICkge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgY29uc3QgZGF0YXNldERpciA9IHBhdGguam9pbihcbiAgICAgICAgZGF0YURpcixcbiAgICAgICAgZGF0YXNldC5maWxlbmFtZS5yZXBsYWNlKC9cXC5qc29uJC8sIFwiX25ldHRveWVcIiksXG4gICAgICApXG5cbiAgICAgIGZvciAoY29uc3QgZG9jdW1lbnRTcGxpdFBhdGggb2Ygd2Fsa0RpcihkYXRhc2V0RGlyLCBbXCJkb2N1bWVudHNcIl0pKSB7XG4gICAgICAgIGNvbnN0IGRvY3VtZW50RmlsZW5hbWUgPSBkb2N1bWVudFNwbGl0UGF0aFtkb2N1bWVudFNwbGl0UGF0aC5sZW5ndGggLSAxXVxuICAgICAgICBpZiAoIWRvY3VtZW50RmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZG9jdW1lbnRGaWxlUGF0aCA9IHBhdGguam9pbihkYXRhc2V0RGlyLCAuLi5kb2N1bWVudFNwbGl0UGF0aClcbiAgICAgICAgaWYgKGxvZykge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGBMb2FkaW5nIGZpbGU6ICR7ZG9jdW1lbnRGaWxlUGF0aH3igKZgKVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGRvY3VtZW50SnNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKGRvY3VtZW50RmlsZVBhdGgsIHtcbiAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgIH0pXG4gICAgICAgIGNvbnN0IGRvY3VtZW50ID0gRG9zc2llcnNMZWdpc2xhdGlmc0NvbnZlcnQudG9Eb2N1bWVudChkb2N1bWVudEpzb24pXG4gICAgICAgIGlmIChkb2N1bWVudEJ5VWlkW2RvY3VtZW50LnVpZF0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGRvY3VtZW50QnlVaWRbZG9jdW1lbnQudWlkXSA9IGRvY3VtZW50XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgZm9yIChjb25zdCBkb3NzaWVyU3BsaXRQYXRoIG9mIHdhbGtEaXIoZGF0YXNldERpciwgW1wiZG9zc2llcnNcIl0pKSB7XG4gICAgICAgIGNvbnN0IGRvc3NpZXJGaWxlbmFtZSA9IGRvc3NpZXJTcGxpdFBhdGhbZG9zc2llclNwbGl0UGF0aC5sZW5ndGggLSAxXVxuICAgICAgICBpZiAoIWRvc3NpZXJGaWxlbmFtZS5lbmRzV2l0aChcIi5qc29uXCIpKSB7XG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBkb3NzaWVyRmlsZVBhdGggPSBwYXRoLmpvaW4oZGF0YXNldERpciwgLi4uZG9zc2llclNwbGl0UGF0aClcbiAgICAgICAgaWYgKGxvZykge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGBMb2FkaW5nIGZpbGU6ICR7ZG9zc2llckZpbGVQYXRofeKApmApXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZG9zc2llckpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhkb3NzaWVyRmlsZVBhdGgsIHtcbiAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgIH0pXG4gICAgICAgIGNvbnN0IGRvc3NpZXIgPVxuICAgICAgICAgIERvc3NpZXJzTGVnaXNsYXRpZnNDb252ZXJ0LnRvRG9zc2llclBhcmxlbWVudGFpcmUoZG9zc2llckpzb24pXG4gICAgICAgIGNvbnN0IHRpdHJlRG9zc2llciA9IGRvc3NpZXIudGl0cmVEb3NzaWVyXG4gICAgICAgIGlmIChcbiAgICAgICAgICB0aXRyZURvc3NpZXIuc2VuYXRDaGVtaW4gJiZcbiAgICAgICAgICBkb3NzaWVyUGFybGVtZW50YWlyZUJ5U2VuYXRDaGVtaW5bdGl0cmVEb3NzaWVyLnNlbmF0Q2hlbWluXSA9PT1cbiAgICAgICAgICAgIHVuZGVmaW5lZFxuICAgICAgICApIHtcbiAgICAgICAgICBkb3NzaWVyUGFybGVtZW50YWlyZUJ5U2VuYXRDaGVtaW5bdGl0cmVEb3NzaWVyLnNlbmF0Q2hlbWluXSA9IGRvc3NpZXJcbiAgICAgICAgfVxuICAgICAgICBpZiAoXG4gICAgICAgICAgdGl0cmVEb3NzaWVyLnRpdHJlQ2hlbWluICYmXG4gICAgICAgICAgZG9zc2llclBhcmxlbWVudGFpcmVCeVRpdHJlQ2hlbWluW3RpdHJlRG9zc2llci50aXRyZUNoZW1pbl0gPT09XG4gICAgICAgICAgICB1bmRlZmluZWRcbiAgICAgICAgKSB7XG4gICAgICAgICAgZG9zc2llclBhcmxlbWVudGFpcmVCeVRpdHJlQ2hlbWluW3RpdHJlRG9zc2llci50aXRyZUNoZW1pbl0gPSBkb3NzaWVyXG4gICAgICAgIH1cbiAgICAgICAgaWYgKGRvc3NpZXJQYXJsZW1lbnRhaXJlQnlVaWRbZG9zc2llci51aWRdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBkb3NzaWVyUGFybGVtZW50YWlyZUJ5VWlkW2Rvc3NpZXIudWlkXSA9IGRvc3NpZXJcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGxldCBwaG90b0J5VWlkOiB7IFt1aWQ6IHN0cmluZ106IFBob3RvIH0gPSB7fVxuICBpZiAoZW5hYmxlZERhdGFzZXRzICYgRW5hYmxlZERhdGFzZXRzLlBob3Rvcykge1xuICAgIHtcbiAgICAgIGNvbnN0IGpzb25GaWxlUGF0aDogc3RyaW5nID0gcGF0aC5qb2luKFxuICAgICAgICBkYXRhRGlyLFxuICAgICAgICBgcGhvdG9zX2RlcHV0ZXNfJHtcbiAgICAgICAgICAvLyBUT0RPOiBIYW5kbGUgTGVnaXNsYXR1cmUuQWxsLlxuICAgICAgICAgIGxlZ2lzbGF0dXJlID09PSBMZWdpc2xhdHVyZS5BbGwgPyBMZWdpc2xhdHVyZS5RdWluemUgOiBsZWdpc2xhdHVyZVxuICAgICAgICB9YCxcbiAgICAgICAgXCJkZXB1dGVzLmpzb25cIixcbiAgICAgIClcbiAgICAgIGlmIChmcy5leGlzdHNTeW5jKGpzb25GaWxlUGF0aCkpIHtcbiAgICAgICAgaWYgKGxvZykge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGBMb2FkaW5nIGZpbGU6ICR7anNvbkZpbGVQYXRofWApXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QganNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKGpzb25GaWxlUGF0aCwgeyBlbmNvZGluZzogXCJ1dGY4XCIgfSlcbiAgICAgICAgT2JqZWN0LmFzc2lnbihwaG90b0J5VWlkLCBKU09OLnBhcnNlKGpzb24pKVxuICAgICAgfSBlbHNlIGlmIChsb2cpIHtcbiAgICAgICAgY29uc29sZS5sb2coYElnbm9yaW5nIG1pc3NpbmcgZmlsZTogJHtqc29uRmlsZVBhdGh9YClcbiAgICAgIH1cbiAgICB9XG5cbiAgICB7XG4gICAgICBjb25zdCBqc29uRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihcbiAgICAgICAgZGF0YURpcixcbiAgICAgICAgXCJwaG90b3Nfc2VuYXRldXJzXCIsXG4gICAgICAgIFwic2VuYXRldXJzLmpzb25cIixcbiAgICAgIClcbiAgICAgIGlmIChmcy5leGlzdHNTeW5jKGpzb25GaWxlUGF0aCkpIHtcbiAgICAgICAgaWYgKGxvZykge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGBMb2FkaW5nIGZpbGU6ICR7anNvbkZpbGVQYXRofWApXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QganNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKGpzb25GaWxlUGF0aCwgeyBlbmNvZGluZzogXCJ1dGY4XCIgfSlcbiAgICAgICAgT2JqZWN0LmFzc2lnbihwaG90b0J5VWlkLCBKU09OLnBhcnNlKGpzb24pKVxuICAgICAgfSBlbHNlIGlmIChsb2cpIHtcbiAgICAgICAgY29uc29sZS5sb2coYElnbm9yaW5nIG1pc3NpbmcgZmlsZTogJHtqc29uRmlsZVBhdGh9YClcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjb25zdCBzY3J1dGluQnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogU2NydXRpbiB9ID0ge31cbiAgaWYgKGVuYWJsZWREYXRhc2V0cyAmIEVuYWJsZWREYXRhc2V0cy5TY3J1dGlucykge1xuICAgIGZvciAoY29uc3QgZGF0YXNldCBvZiBkYXRhc2V0cy5zY3J1dGlucykge1xuICAgICAgaWYgKGRhdGFzZXQuaWdub3JlRm9yV2ViKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBpZiAoXG4gICAgICAgIGxlZ2lzbGF0dXJlICE9PSBMZWdpc2xhdHVyZS5BbGwgJiZcbiAgICAgICAgZGF0YXNldC5sZWdpc2xhdHVyZSAhPT0gTGVnaXNsYXR1cmUuQWxsICYmXG4gICAgICAgIGxlZ2lzbGF0dXJlICE9PSBkYXRhc2V0LmxlZ2lzbGF0dXJlXG4gICAgICApIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGNvbnN0IGRhdGFzZXREaXIgPSBwYXRoLmpvaW4oXG4gICAgICAgIGRhdGFEaXIsXG4gICAgICAgIGRhdGFzZXQuZmlsZW5hbWUucmVwbGFjZSgvXFwuanNvbiQvLCBcIl9uZXR0b3llXCIpLFxuICAgICAgKVxuXG4gICAgICBmb3IgKGNvbnN0IHNjcnV0aW5TcGxpdFBhdGggb2Ygd2Fsa0RpcihkYXRhc2V0RGlyKSkge1xuICAgICAgICBjb25zdCBzY3J1dGluRmlsZW5hbWUgPSBzY3J1dGluU3BsaXRQYXRoW3NjcnV0aW5TcGxpdFBhdGgubGVuZ3RoIC0gMV1cbiAgICAgICAgaWYgKCFzY3J1dGluRmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgc2NydXRpbkZpbGVQYXRoID0gcGF0aC5qb2luKGRhdGFzZXREaXIsIC4uLnNjcnV0aW5TcGxpdFBhdGgpXG4gICAgICAgIGlmIChsb2cpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhgTG9hZGluZyBmaWxlOiAke3NjcnV0aW5GaWxlUGF0aH3igKZgKVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHNjcnV0aW5Kc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoc2NydXRpbkZpbGVQYXRoLCB7XG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICB9KVxuICAgICAgICBjb25zdCBzY3J1dGluID0gU2NydXRpbnNDb252ZXJ0LnRvU2NydXRpbihzY3J1dGluSnNvbilcbiAgICAgICAgaWYgKHNjcnV0aW5CeVVpZFtzY3J1dGluLnVpZF0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHNjcnV0aW5CeVVpZFtzY3J1dGluLnVpZF0gPSBzY3J1dGluXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGFjdGV1ckJ5VWlkLFxuICAgIGFtZW5kZW1lbnRCeVVpZCxcbiAgICBkb2N1bWVudEJ5VWlkLFxuICAgIGRvc3NpZXJQYXJsZW1lbnRhaXJlQnlTZW5hdENoZW1pbixcbiAgICBkb3NzaWVyUGFybGVtZW50YWlyZUJ5VGl0cmVDaGVtaW4sXG4gICAgZG9zc2llclBhcmxlbWVudGFpcmVCeVVpZCxcbiAgICBvcmdhbmVCeVVpZCxcbiAgICBwaG90b0J5VWlkLFxuICAgIHJldW5pb25CeVVpZCxcbiAgICByZXVuaW9uc0J5RGF5LFxuICAgIHJldW5pb25zQnlEb3NzaWVyVWlkLFxuICAgIHNjcnV0aW5CeVVpZCxcbiAgfVxufVxuXG4vKiogTG9hZCBkYXRhIGZyb20gYmlnIG1vbm9seXRpYyBmaWxlcy4gKi9cbmV4cG9ydCBmdW5jdGlvbiBsb2FkQXNzZW1ibGVlRGF0YUZyb21CaWdGaWxlcyhcbiAgZGF0YURpcjogc3RyaW5nLFxuICBlbmFibGVkRGF0YXNldHM6IEVuYWJsZWREYXRhc2V0cyxcbiAgbGVnaXNsYXR1cmU6IExlZ2lzbGF0dXJlLFxuICB7IGxvZyA9IGZhbHNlIH0gPSB7fSxcbik6IERhdGEge1xuICBjb25zdCBhY3RldXJCeVVpZDogeyBbdWlkOiBzdHJpbmddOiBBY3RldXIgfSA9IHt9XG4gIGNvbnN0IG9yZ2FuZUJ5VWlkOiB7IFt1aWQ6IHN0cmluZ106IE9yZ2FuZSB9ID0ge31cbiAgaWYgKGVuYWJsZWREYXRhc2V0cyAmIEVuYWJsZWREYXRhc2V0cy5BY3RldXJzRXRPcmdhbmVzKSB7XG4gICAgZm9yIChjb25zdCBkYXRhc2V0IG9mIGRhdGFzZXRzLmFjdGV1cnNFdE9yZ2FuZXMpIHtcbiAgICAgIGlmIChkYXRhc2V0Lmlnbm9yZUZvcldlYikge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgaWYgKFxuICAgICAgICBsZWdpc2xhdHVyZSAhPT0gTGVnaXNsYXR1cmUuQWxsICYmXG4gICAgICAgIGRhdGFzZXQubGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgICBsZWdpc2xhdHVyZSAhPT0gZGF0YXNldC5sZWdpc2xhdHVyZVxuICAgICAgKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBjb25zdCBqc29uRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihcbiAgICAgICAgZGF0YURpcixcbiAgICAgICAgZGF0YXNldC5maWxlbmFtZS5yZXBsYWNlKC9cXC5qc29uJC8sIFwiX25ldHRveWUuanNvblwiKSxcbiAgICAgIClcbiAgICAgIGlmIChsb2cpIHtcbiAgICAgICAgY29uc29sZS5sb2coYExvYWRpbmcgZmlsZTogJHtqc29uRmlsZVBhdGh9YClcbiAgICAgIH1cbiAgICAgIGNvbnN0IGpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhqc29uRmlsZVBhdGgsIHsgZW5jb2Rpbmc6IFwidXRmOFwiIH0pXG4gICAgICBjb25zdCBhY3RldXJzRXRPcmdhbmVzID0gQWN0ZXVyc0V0T3JnYW5lc0NvbnZlcnQudG9BY3RldXJzRXRPcmdhbmVzKGpzb24pXG4gICAgICBmb3IgKGNvbnN0IGFjdGV1ciBvZiBhY3RldXJzRXRPcmdhbmVzLmFjdGV1cnMpIHtcbiAgICAgICAgLy8gS2VlcCB0aGUgZmlyc3QgZXhpc3RpbmcgXCJhY3RldXJcIiwgYmVjYXVzZSB0aGUgZmlyc3Qgd3JhcHBlciBpcyB0aGUgbW9zdCBjb21wbGV0ZS5cbiAgICAgICAgaWYgKGFjdGV1ckJ5VWlkW2FjdGV1ci51aWRdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBhY3RldXJCeVVpZFthY3RldXIudWlkXSA9IGFjdGV1clxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBmb3IgKGNvbnN0IG9yZ2FuZSBvZiBhY3RldXJzRXRPcmdhbmVzLm9yZ2FuZXMpIHtcbiAgICAgICAgLy8gS2VlcCB0aGUgZmlyc3QgZXhpc3RpbmcgXCJvcmdhbmVcIiwgYmVjYXVzZSB0aGUgZmlyc3Qgd3JhcHBlciBpcyB0aGUgbW9zdCBjb21wbGV0ZS5cbiAgICAgICAgaWYgKG9yZ2FuZUJ5VWlkW29yZ2FuZS51aWRdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBvcmdhbmVCeVVpZFtvcmdhbmUudWlkXSA9IG9yZ2FuZVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY29uc3QgcmV1bmlvbkJ5VWlkOiB7IFt1aWQ6IHN0cmluZ106IFJldW5pb24gfSA9IHt9XG4gIGNvbnN0IHJldW5pb25zQnlEYXk6IHsgW2RheTogc3RyaW5nXTogUmV1bmlvbltdIH0gPSB7fVxuICBjb25zdCByZXVuaW9uc0J5RG9zc2llclVpZDogeyBbZG9zc2llclVpZDogc3RyaW5nXTogUmV1bmlvbltdIH0gPSB7fVxuICBpZiAoZW5hYmxlZERhdGFzZXRzICYgRW5hYmxlZERhdGFzZXRzLkFnZW5kYXMpIHtcbiAgICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgZGF0YXNldHMuYWdlbmRhcykge1xuICAgICAgaWYgKGRhdGFzZXQuaWdub3JlRm9yV2ViKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBpZiAoXG4gICAgICAgIGxlZ2lzbGF0dXJlICE9PSBMZWdpc2xhdHVyZS5BbGwgJiZcbiAgICAgICAgZGF0YXNldC5sZWdpc2xhdHVyZSAhPT0gTGVnaXNsYXR1cmUuQWxsICYmXG4gICAgICAgIGxlZ2lzbGF0dXJlICE9PSBkYXRhc2V0LmxlZ2lzbGF0dXJlXG4gICAgICApIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGNvbnN0IGpzb25GaWxlUGF0aDogc3RyaW5nID0gcGF0aC5qb2luKFxuICAgICAgICBkYXRhRGlyLFxuICAgICAgICBkYXRhc2V0LmZpbGVuYW1lLnJlcGxhY2UoL1xcLmpzb24kLywgXCJfbmV0dG95ZS5qc29uXCIpLFxuICAgICAgKVxuICAgICAgaWYgKGxvZykge1xuICAgICAgICBjb25zb2xlLmxvZyhgTG9hZGluZyBmaWxlOiAke2pzb25GaWxlUGF0aH1gKVxuICAgICAgfVxuICAgICAgY29uc3QganNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKGpzb25GaWxlUGF0aCwgeyBlbmNvZGluZzogXCJ1dGY4XCIgfSlcbiAgICAgIGNvbnN0IGFnZW5kYXMgPSBBZ2VuZGFzQ29udmVydC50b0FnZW5kYXMoanNvbilcbiAgICAgIGZvciAoY29uc3QgcmV1bmlvbiBvZiBhZ2VuZGFzLnJldW5pb25zKSB7XG4gICAgICAgIGlmIChyZXVuaW9uQnlVaWRbcmV1bmlvbi51aWRdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICByZXVuaW9uQnlVaWRbcmV1bmlvbi51aWRdID0gcmV1bmlvblxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZGF5ID0gcmV1bmlvbi50aW1lc3RhbXBEZWJ1dC50b0lTT1N0cmluZygpLnNwbGl0KFwiVFwiKVswXVxuICAgICAgICBsZXQgcmV1bmlvbnNBdERheSA9IHJldW5pb25zQnlEYXlbZGF5XVxuICAgICAgICBpZiAocmV1bmlvbnNBdERheSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgcmV1bmlvbnNBdERheSA9IHJldW5pb25zQnlEYXlbZGF5XSA9IFtdXG4gICAgICAgIH1cbiAgICAgICAgcmV1bmlvbnNBdERheS5wdXNoKHJldW5pb24pXG5cbiAgICAgICAgY29uc3Qgb2RqID0gcmV1bmlvbi5vZGpcbiAgICAgICAgaWYgKG9kaiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgZm9yIChjb25zdCBwb2ludE9kaiBvZiBvZGoucG9pbnRzT2RqIHx8IFtdKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGRvc3NpZXJMZWdpc2xhdGlmUmVmIG9mIHBvaW50T2RqLmRvc3NpZXJzTGVnaXNsYXRpZnNSZWZzIHx8XG4gICAgICAgICAgICAgIFtdKSB7XG4gICAgICAgICAgICAgIGxldCByZXVuaW9uc0F0RG9zc2llclVpZCA9XG4gICAgICAgICAgICAgICAgcmV1bmlvbnNCeURvc3NpZXJVaWRbZG9zc2llckxlZ2lzbGF0aWZSZWZdXG4gICAgICAgICAgICAgIGlmIChyZXVuaW9uc0F0RG9zc2llclVpZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgcmV1bmlvbnNBdERvc3NpZXJVaWQgPSByZXVuaW9uc0J5RG9zc2llclVpZFtcbiAgICAgICAgICAgICAgICAgIGRvc3NpZXJMZWdpc2xhdGlmUmVmXG4gICAgICAgICAgICAgICAgXSA9IFtdXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgcmV1bmlvbnNBdERvc3NpZXJVaWQucHVzaChyZXVuaW9uKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGFtZW5kZW1lbnRCeVVpZDogeyBbdWlkOiBzdHJpbmddOiBBbWVuZGVtZW50IH0gPSB7fVxuICBpZiAoZW5hYmxlZERhdGFzZXRzICYgRW5hYmxlZERhdGFzZXRzLkFtZW5kZW1lbnRzKSB7XG4gICAgZm9yIChjb25zdCBkYXRhc2V0IG9mIGRhdGFzZXRzLmFtZW5kZW1lbnRzKSB7XG4gICAgICBpZiAoZGF0YXNldC5pZ25vcmVGb3JXZWIpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgbGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgICBkYXRhc2V0LmxlZ2lzbGF0dXJlICE9PSBMZWdpc2xhdHVyZS5BbGwgJiZcbiAgICAgICAgbGVnaXNsYXR1cmUgIT09IGRhdGFzZXQubGVnaXNsYXR1cmVcbiAgICAgICkge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgY29uc3QganNvbkZpbGVQYXRoOiBzdHJpbmcgPSBwYXRoLmpvaW4oXG4gICAgICAgIGRhdGFEaXIsXG4gICAgICAgIGRhdGFzZXQuZmlsZW5hbWUucmVwbGFjZSgvXFwuanNvbiQvLCBcIl9uZXR0b3llLmpzb25cIiksXG4gICAgICApXG4gICAgICBpZiAobG9nKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGBMb2FkaW5nIGZpbGU6ICR7anNvbkZpbGVQYXRofWApXG4gICAgICB9XG4gICAgICBjb25zdCBqc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoanNvbkZpbGVQYXRoLCB7IGVuY29kaW5nOiBcInV0ZjhcIiB9KVxuICAgICAgY29uc3QgYW1lbmRlbWVudHMgPSBBbWVuZGVtZW50c0NvbnZlcnQudG9BbWVuZGVtZW50cyhqc29uKVxuICAgICAgZm9yIChjb25zdCB0ZXh0ZUxlZ2lzbGF0aWYgb2YgYW1lbmRlbWVudHMudGV4dGVzTGVnaXNsYXRpZnMpIHtcbiAgICAgICAgZm9yIChjb25zdCBhbWVuZGVtZW50IG9mIHRleHRlTGVnaXNsYXRpZi5hbWVuZGVtZW50cykge1xuICAgICAgICAgIGlmIChhbWVuZGVtZW50QnlVaWRbYW1lbmRlbWVudC51aWRdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGFtZW5kZW1lbnRCeVVpZFthbWVuZGVtZW50LnVpZF0gPSBhbWVuZGVtZW50XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY29uc3QgZG9jdW1lbnRCeVVpZDogeyBbdWlkOiBzdHJpbmddOiBEb2N1bWVudCB9ID0ge31cbiAgY29uc3QgZG9zc2llclBhcmxlbWVudGFpcmVCeVNlbmF0Q2hlbWluOiB7XG4gICAgW3VpZDogc3RyaW5nXTogRG9zc2llclBhcmxlbWVudGFpcmVcbiAgfSA9IHt9XG4gIGNvbnN0IGRvc3NpZXJQYXJsZW1lbnRhaXJlQnlUaXRyZUNoZW1pbjoge1xuICAgIFt1aWQ6IHN0cmluZ106IERvc3NpZXJQYXJsZW1lbnRhaXJlXG4gIH0gPSB7fVxuICBjb25zdCBkb3NzaWVyUGFybGVtZW50YWlyZUJ5VWlkOiB7IFt1aWQ6IHN0cmluZ106IERvc3NpZXJQYXJsZW1lbnRhaXJlIH0gPSB7fVxuICBpZiAoZW5hYmxlZERhdGFzZXRzICYgRW5hYmxlZERhdGFzZXRzLkRvc3NpZXJzTGVnaXNsYXRpZnMpIHtcbiAgICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgZGF0YXNldHMuZG9zc2llcnNMZWdpc2xhdGlmcykge1xuICAgICAgaWYgKGRhdGFzZXQuaWdub3JlRm9yV2ViKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBpZiAoXG4gICAgICAgIGxlZ2lzbGF0dXJlICE9PSBMZWdpc2xhdHVyZS5BbGwgJiZcbiAgICAgICAgZGF0YXNldC5sZWdpc2xhdHVyZSAhPT0gTGVnaXNsYXR1cmUuQWxsICYmXG4gICAgICAgIGxlZ2lzbGF0dXJlICE9PSBkYXRhc2V0LmxlZ2lzbGF0dXJlXG4gICAgICApIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGNvbnN0IGpzb25GaWxlUGF0aDogc3RyaW5nID0gcGF0aC5qb2luKFxuICAgICAgICBkYXRhRGlyLFxuICAgICAgICBkYXRhc2V0LmZpbGVuYW1lLnJlcGxhY2UoL1xcLmpzb24kLywgXCJfbmV0dG95ZS5qc29uXCIpLFxuICAgICAgKVxuICAgICAgaWYgKGxvZykge1xuICAgICAgICBjb25zb2xlLmxvZyhgTG9hZGluZyBmaWxlOiAke2pzb25GaWxlUGF0aH1gKVxuICAgICAgfVxuICAgICAgY29uc3QganNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKGpzb25GaWxlUGF0aCwgeyBlbmNvZGluZzogXCJ1dGY4XCIgfSlcbiAgICAgIGNvbnN0IGRvc3NpZXJzTGVnaXNsYXRpZnMgPVxuICAgICAgICBEb3NzaWVyc0xlZ2lzbGF0aWZzQ29udmVydC50b0Rvc3NpZXJzTGVnaXNsYXRpZnMoanNvbilcbiAgICAgIGZvciAoY29uc3QgZG9jdW1lbnQgb2YgZG9zc2llcnNMZWdpc2xhdGlmcy50ZXh0ZXNMZWdpc2xhdGlmcykge1xuICAgICAgICBpZiAoZG9jdW1lbnRCeVVpZFtkb2N1bWVudC51aWRdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBkb2N1bWVudEJ5VWlkW2RvY3VtZW50LnVpZF0gPSBkb2N1bWVudFxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBmb3IgKGNvbnN0IGRvc3NpZXIgb2YgZG9zc2llcnNMZWdpc2xhdGlmcy5kb3NzaWVyc1BhcmxlbWVudGFpcmVzKSB7XG4gICAgICAgIGNvbnN0IHRpdHJlRG9zc2llciA9IGRvc3NpZXIudGl0cmVEb3NzaWVyXG4gICAgICAgIGlmIChcbiAgICAgICAgICB0aXRyZURvc3NpZXIuc2VuYXRDaGVtaW4gJiZcbiAgICAgICAgICBkb3NzaWVyUGFybGVtZW50YWlyZUJ5U2VuYXRDaGVtaW5bdGl0cmVEb3NzaWVyLnNlbmF0Q2hlbWluXSA9PT1cbiAgICAgICAgICAgIHVuZGVmaW5lZFxuICAgICAgICApIHtcbiAgICAgICAgICBkb3NzaWVyUGFybGVtZW50YWlyZUJ5U2VuYXRDaGVtaW5bdGl0cmVEb3NzaWVyLnNlbmF0Q2hlbWluXSA9IGRvc3NpZXJcbiAgICAgICAgfVxuICAgICAgICBpZiAoXG4gICAgICAgICAgdGl0cmVEb3NzaWVyLnRpdHJlQ2hlbWluICYmXG4gICAgICAgICAgZG9zc2llclBhcmxlbWVudGFpcmVCeVRpdHJlQ2hlbWluW3RpdHJlRG9zc2llci50aXRyZUNoZW1pbl0gPT09XG4gICAgICAgICAgICB1bmRlZmluZWRcbiAgICAgICAgKSB7XG4gICAgICAgICAgZG9zc2llclBhcmxlbWVudGFpcmVCeVRpdHJlQ2hlbWluW3RpdHJlRG9zc2llci50aXRyZUNoZW1pbl0gPSBkb3NzaWVyXG4gICAgICAgIH1cbiAgICAgICAgaWYgKGRvc3NpZXJQYXJsZW1lbnRhaXJlQnlVaWRbZG9zc2llci51aWRdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBkb3NzaWVyUGFybGVtZW50YWlyZUJ5VWlkW2Rvc3NpZXIudWlkXSA9IGRvc3NpZXJcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IHBob3RvQnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogUGhvdG8gfSA9IHt9XG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuUGhvdG9zKSB7XG4gICAgY29uc3QgcGhvdG9CeVVpZCA9IHt9XG5cbiAgICB7XG4gICAgICBjb25zdCBqc29uRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihcbiAgICAgICAgZGF0YURpcixcbiAgICAgICAgYHBob3Rvc19kZXB1dGVzXyR7XG4gICAgICAgICAgLy8gVE9ETzogSGFuZGxlIExlZ2lzbGF0dXJlLkFsbC5cbiAgICAgICAgICBsZWdpc2xhdHVyZSA9PT0gTGVnaXNsYXR1cmUuQWxsID8gTGVnaXNsYXR1cmUuUXVpbnplIDogbGVnaXNsYXR1cmVcbiAgICAgICAgfWAsXG4gICAgICAgIFwiZGVwdXRlcy5qc29uXCIsXG4gICAgICApXG4gICAgICBpZiAoZnMuZXhpc3RzU3luYyhqc29uRmlsZVBhdGgpKSB7XG4gICAgICAgIGlmIChsb2cpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhgTG9hZGluZyBmaWxlOiAke2pzb25GaWxlUGF0aH1gKVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhqc29uRmlsZVBhdGgsIHsgZW5jb2Rpbmc6IFwidXRmOFwiIH0pXG4gICAgICAgIE9iamVjdC5hc3NpZ24ocGhvdG9CeVVpZCwgSlNPTi5wYXJzZShqc29uKSlcbiAgICAgIH0gZWxzZSBpZiAobG9nKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGBJZ25vcmluZyBtaXNzaW5nIGZpbGU6ICR7anNvbkZpbGVQYXRofWApXG4gICAgICB9XG4gICAgfVxuXG4gICAge1xuICAgICAgY29uc3QganNvbkZpbGVQYXRoOiBzdHJpbmcgPSBwYXRoLmpvaW4oXG4gICAgICAgIGRhdGFEaXIsXG4gICAgICAgIFwicGhvdG9zX3NlbmF0ZXVyc1wiLFxuICAgICAgICBcInNlbmF0ZXVycy5qc29uXCIsXG4gICAgICApXG4gICAgICBpZiAoZnMuZXhpc3RzU3luYyhqc29uRmlsZVBhdGgpKSB7XG4gICAgICAgIGlmIChsb2cpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhgTG9hZGluZyBmaWxlOiAke2pzb25GaWxlUGF0aH1gKVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhqc29uRmlsZVBhdGgsIHsgZW5jb2Rpbmc6IFwidXRmOFwiIH0pXG4gICAgICAgIE9iamVjdC5hc3NpZ24ocGhvdG9CeVVpZCwgSlNPTi5wYXJzZShqc29uKSlcbiAgICAgIH0gZWxzZSBpZiAobG9nKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGBJZ25vcmluZyBtaXNzaW5nIGZpbGU6ICR7anNvbkZpbGVQYXRofWApXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY29uc3Qgc2NydXRpbkJ5VWlkOiB7IFt1aWQ6IHN0cmluZ106IFNjcnV0aW4gfSA9IHt9XG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuU2NydXRpbnMpIHtcbiAgICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgZGF0YXNldHMuc2NydXRpbnMpIHtcbiAgICAgIGlmIChkYXRhc2V0Lmlnbm9yZUZvcldlYikge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgaWYgKFxuICAgICAgICBsZWdpc2xhdHVyZSAhPT0gTGVnaXNsYXR1cmUuQWxsICYmXG4gICAgICAgIGRhdGFzZXQubGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgICBsZWdpc2xhdHVyZSAhPT0gZGF0YXNldC5sZWdpc2xhdHVyZVxuICAgICAgKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBjb25zdCBqc29uRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihcbiAgICAgICAgZGF0YURpcixcbiAgICAgICAgZGF0YXNldC5maWxlbmFtZS5yZXBsYWNlKC9cXC5qc29uJC8sIFwiX25ldHRveWUuanNvblwiKSxcbiAgICAgIClcbiAgICAgIGlmIChsb2cpIHtcbiAgICAgICAgY29uc29sZS5sb2coYExvYWRpbmcgZmlsZTogJHtqc29uRmlsZVBhdGh9YClcbiAgICAgIH1cbiAgICAgIGNvbnN0IGpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhqc29uRmlsZVBhdGgsIHsgZW5jb2Rpbmc6IFwidXRmOFwiIH0pXG4gICAgICBjb25zdCBzY3J1dGlucyA9IFNjcnV0aW5zQ29udmVydC50b1NjcnV0aW5zKGpzb24pXG4gICAgICBmb3IgKGNvbnN0IHNjcnV0aW4gb2Ygc2NydXRpbnMuc2NydXRpbnMpIHtcbiAgICAgICAgaWYgKHNjcnV0aW5CeVVpZFtzY3J1dGluLnVpZF0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHNjcnV0aW5CeVVpZFtzY3J1dGluLnVpZF0gPSBzY3J1dGluXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGFjdGV1ckJ5VWlkLFxuICAgIGFtZW5kZW1lbnRCeVVpZCxcbiAgICBkb2N1bWVudEJ5VWlkLFxuICAgIGRvc3NpZXJQYXJsZW1lbnRhaXJlQnlTZW5hdENoZW1pbixcbiAgICBkb3NzaWVyUGFybGVtZW50YWlyZUJ5VGl0cmVDaGVtaW4sXG4gICAgZG9zc2llclBhcmxlbWVudGFpcmVCeVVpZCxcbiAgICBvcmdhbmVCeVVpZCxcbiAgICBwaG90b0J5VWlkLFxuICAgIHJldW5pb25CeVVpZCxcbiAgICByZXVuaW9uc0J5RGF5LFxuICAgIHJldW5pb25zQnlEb3NzaWVyVWlkLFxuICAgIHNjcnV0aW5CeVVpZCxcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcGF0aEZyb21Eb2N1bWVudFVpZChkb2N1bWVudHNEaXI6IHN0cmluZywgdWlkOiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCBtYXRjaCA9IGRvY3VtZW50VWlkUmVnZXguZXhlYyh1aWQpXG4gIGFzc2VydC5ub3RTdHJpY3RFcXVhbChcbiAgICBtYXRjaCxcbiAgICBudWxsLFxuICAgIGBVbmV4cGVjdGVkIHN0cnVjdHVyZSBmb3IgZG9jdW1lbnQgVUlEOiAke3VpZH1gLFxuICApXG4gIGNvbnN0IGRvY3VtZW50VHlwZSA9IHBhdGguam9pbihkb2N1bWVudHNEaXIsIG1hdGNoIVsxXSlcbiAgY29uc3QgY2hhbWJyZURpciA9IHBhdGguam9pbihkb2N1bWVudFR5cGUsIG1hdGNoIVsyXSlcbiAgY29uc3QgcmVwdWJsaXF1ZURpciA9IHBhdGguam9pbihjaGFtYnJlRGlyLCBtYXRjaCFbM10pXG4gIGNvbnN0IGxlZ2lzbGF0dXJlRGlyID0gcGF0aC5qb2luKHJlcHVibGlxdWVEaXIsIG1hdGNoIVs0XSlcbiAgY29uc3QgZXRhdERpciA9IHBhdGguam9pbihsZWdpc2xhdHVyZURpciwgbWF0Y2ghWzVdKVxuICBsZXQgbnVtZXJvID0gXCIwMDAwMDBcIiArIG1hdGNoIVs2XVxuICBudW1lcm8gPSBudW1lcm8uc3Vic3RyKG51bWVyby5sZW5ndGggLSA2KVxuICBjb25zdCBudW1lcm9NaWxsaWVyc0RpciA9IHBhdGguam9pbihldGF0RGlyLCBudW1lcm8uc3Vic3RyKDAsIDMpKVxuICBmcy5lbnN1cmVEaXJTeW5jKG51bWVyb01pbGxpZXJzRGlyKVxuICByZXR1cm4gcGF0aC5qb2luKG51bWVyb01pbGxpZXJzRGlyLCB1aWQpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXRoRnJvbURvc3NpZXJQYXJsZW1lbnRhaXJlVWlkKFxuICBkb3NzaWVyc0Rpcjogc3RyaW5nLFxuICB1aWQ6IHN0cmluZyxcbik6IHN0cmluZyB7XG4gIGNvbnN0IG1hdGNoID0gZG9zc2llclVpZFJlZ2V4LmV4ZWModWlkKVxuICBhc3NlcnQubm90U3RyaWN0RXF1YWwoXG4gICAgbWF0Y2gsXG4gICAgbnVsbCxcbiAgICBgVW5leHBlY3RlZCBzdHJ1Y3R1cmUgZm9yIGRvc3NpZXIgcGFybGVtZW50YWlyZSBVSUQ6ICR7dWlkfWAsXG4gIClcbiAgY29uc3QgcmVwdWJsaXF1ZURpciA9IHBhdGguam9pbihkb3NzaWVyc0RpciwgbWF0Y2ghWzFdKVxuICBjb25zdCBsZWdpc2xhdHVyZURpciA9IHBhdGguam9pbihyZXB1YmxpcXVlRGlyLCBtYXRjaCFbMl0pXG4gIGxldCBudW1lcm8gPSBcIjAwMDAwMFwiICsgbWF0Y2ghWzNdXG4gIG51bWVybyA9IG51bWVyby5zdWJzdHIobnVtZXJvLmxlbmd0aCAtIDYpXG4gIGNvbnN0IG51bWVyb01pbGxpZXJzRGlyID0gcGF0aC5qb2luKGxlZ2lzbGF0dXJlRGlyLCBudW1lcm8uc3Vic3RyKDAsIDMpKVxuICBmcy5lbnN1cmVEaXJTeW5jKG51bWVyb01pbGxpZXJzRGlyKVxuICByZXR1cm4gcGF0aC5qb2luKG51bWVyb01pbGxpZXJzRGlyLCB1aWQpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXRoRnJvbVJldW5pb25VaWQocmV1bmlvbnNEaXI6IHN0cmluZywgdWlkOiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCBtYXRjaCA9IHJldW5pb25VaWRSZWdleC5leGVjKHVpZClcbiAgYXNzZXJ0Lm5vdFN0cmljdEVxdWFsKFxuICAgIG1hdGNoLFxuICAgIG51bGwsXG4gICAgYFVuZXhwZWN0ZWQgc3RydWN0dXJlIGZvciByZXVuaW9uIFVJRDogJHt1aWR9YCxcbiAgKVxuICBjb25zdCBjaGFtYnJlRGlyID0gcGF0aC5qb2luKHJldW5pb25zRGlyLCBtYXRjaCFbMV0pXG4gIGNvbnN0IHJlcHVibGlxdWVEaXIgPSBwYXRoLmpvaW4oY2hhbWJyZURpciwgbWF0Y2ghWzJdKVxuICBjb25zdCBsZWdpc2xhdHVyZURpciA9IHBhdGguam9pbihyZXB1YmxpcXVlRGlyLCBtYXRjaCFbM10pXG4gIGNvbnN0IHNlc3Npb25EaXIgPSBwYXRoLmpvaW4obGVnaXNsYXR1cmVEaXIsIG1hdGNoIVs0XSlcbiAgY29uc3QgaWREaXIgPSBwYXRoLmpvaW4oc2Vzc2lvbkRpciwgbWF0Y2ghWzVdKVxuICBsZXQgbnVtZXJvID0gXCIwMDAwMDAwMDBcIiArIG1hdGNoIVs2XVxuICBudW1lcm8gPSBudW1lcm8uc3Vic3RyKG51bWVyby5sZW5ndGggLSA5KVxuICBjb25zdCBudW1lcm9NaWxsaW9uc0RpciA9IHBhdGguam9pbihpZERpciwgbnVtZXJvLnN1YnN0cigwLCAzKSlcbiAgY29uc3QgbnVtZXJvTWlsbGllcnNEaXIgPSBwYXRoLmpvaW4obnVtZXJvTWlsbGlvbnNEaXIsIG51bWVyby5zdWJzdHIoMywgMykpXG4gIGZzLmVuc3VyZURpclN5bmMobnVtZXJvTWlsbGllcnNEaXIpXG4gIHJldHVybiBwYXRoLmpvaW4obnVtZXJvTWlsbGllcnNEaXIsIHVpZClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhdGhGcm9tU2NydXRpblVpZChzY3J1dGluc0Rpcjogc3RyaW5nLCB1aWQ6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IG1hdGNoID0gc2NydXRpblVpZFJlZ2V4LmV4ZWModWlkKVxuICBhc3NlcnQubm90U3RyaWN0RXF1YWwoXG4gICAgbWF0Y2gsXG4gICAgbnVsbCxcbiAgICBgVW5leHBlY3RlZCBzdHJ1Y3R1cmUgZm9yIHNjcnV0aW4gVUlEOiAke3VpZH1gLFxuICApXG4gIGNvbnN0IHJlcHVibGlxdWVEaXIgPSBwYXRoLmpvaW4oc2NydXRpbnNEaXIsIG1hdGNoIVsxXSlcbiAgY29uc3QgbGVnaXNsYXR1cmVEaXIgPSBwYXRoLmpvaW4ocmVwdWJsaXF1ZURpciwgbWF0Y2ghWzJdKVxuICBsZXQgbnVtZXJvID0gXCIwMDAwMDBcIiArIG1hdGNoIVszXVxuICBudW1lcm8gPSBudW1lcm8uc3Vic3RyKG51bWVyby5sZW5ndGggLSA2KVxuICBjb25zdCBudW1lcm9NaWxsaWVyc0RpciA9IHBhdGguam9pbihsZWdpc2xhdHVyZURpciwgbnVtZXJvLnN1YnN0cigwLCAzKSlcbiAgZnMuZW5zdXJlRGlyU3luYyhudW1lcm9NaWxsaWVyc0RpcilcbiAgcmV0dXJuIHBhdGguam9pbihudW1lcm9NaWxsaWVyc0RpciwgdWlkKVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRUE7O0FBQ0E7O0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7O0FBTUE7O0FBQ0E7O0FBQ0E7O0FBS0E7O0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXFCQSxJQUFNQSxnQkFBZ0IsR0FDcEIsc0hBREY7QUFFQSxJQUFNQyxlQUFlLEdBQUcsd0JBQXhCO0FBQ0EsSUFBTUMsZUFBZSxHQUNuQiwyREFERjtBQUVBLElBQU1DLGVBQWUsR0FBRywwQkFBeEI7QUFFQTs7QUFDTyxTQUFTQyxpQkFBVCxDQUNMQyxPQURLLEVBRUxDLGVBRkssRUFHTEMsV0FISyxFQUtDO0VBQUEsK0VBRFksRUFDWjtFQUFBLG9CQURKQyxHQUNJO0VBQUEsSUFESkEsR0FDSSx5QkFERSxLQUNGOztFQUNOLElBQU1DLFdBQXNDLEdBQUcsRUFBL0M7RUFDQSxJQUFNQyxXQUFzQyxHQUFHLEVBQS9DOztFQUNBLElBQUlKLGVBQWUsR0FBR0sseUJBQUEsQ0FBZ0JDLGdCQUF0QyxFQUF3RDtJQUFBLDJDQUNoQ0Msa0JBQUEsQ0FBU0MsZ0JBRHVCO0lBQUE7O0lBQUE7TUFDdEQsb0RBQWlEO1FBQUEsSUFBdENDLE9BQXNDOztRQUMvQyxJQUFJQSxPQUFPLENBQUNDLFlBQVosRUFBMEI7VUFDeEI7UUFDRDs7UUFDRCxJQUNFVCxXQUFXLEtBQUtVLHlCQUFBLENBQVlDLEdBQTVCLElBQ0FILE9BQU8sQ0FBQ1IsV0FBUixLQUF3QlUseUJBQUEsQ0FBWUMsR0FEcEMsSUFFQVgsV0FBVyxLQUFLUSxPQUFPLENBQUNSLFdBSDFCLEVBSUU7VUFDQTtRQUNEOztRQUNELElBQU1ZLFVBQVUsR0FBR0MsZ0JBQUEsQ0FBS0MsSUFBTCxDQUNqQmhCLE9BRGlCLEVBRWpCVSxPQUFPLENBQUNPLFFBQVIsQ0FBaUJDLE9BQWpCLENBQXlCLFNBQXpCLEVBQW9DLFVBQXBDLENBRmlCLENBQW5COztRQVgrQyw0Q0FnQmpCLElBQUFDLHFCQUFBLEVBQVFMLFVBQVIsRUFBb0IsQ0FBQyxTQUFELENBQXBCLENBaEJpQjtRQUFBOztRQUFBO1VBZ0IvQyx1REFBZ0U7WUFBQSxJQUFyRE0sZUFBcUQ7WUFDOUQsSUFBTUMsY0FBYyxHQUFHRCxlQUFlLENBQUNBLGVBQWUsQ0FBQ0UsTUFBaEIsR0FBeUIsQ0FBMUIsQ0FBdEM7O1lBQ0EsSUFBSSxDQUFDRCxjQUFjLENBQUNFLFFBQWYsQ0FBd0IsT0FBeEIsQ0FBTCxFQUF1QztjQUNyQztZQUNEOztZQUNELElBQU1DLGNBQWMsR0FBR1QsZ0JBQUEsQ0FBS0MsSUFBTCxPQUFBRCxnQkFBQSxHQUFVRCxVQUFWLDRCQUF5Qk0sZUFBekIsR0FBdkI7O1lBQ0EsSUFBSWpCLEdBQUosRUFBUztjQUNQc0IsT0FBTyxDQUFDdEIsR0FBUix5QkFBNkJxQixjQUE3QjtZQUNEOztZQUNELElBQU1FLFVBQWtCLEdBQUdDLG1CQUFBLENBQUdDLFlBQUgsQ0FBZ0JKLGNBQWhCLEVBQWdDO2NBQ3pESyxRQUFRLEVBQUU7WUFEK0MsQ0FBaEMsQ0FBM0I7O1lBR0EsSUFBTUMsTUFBTSxHQUFHQywyQkFBQSxDQUF3QkMsUUFBeEIsQ0FBaUNOLFVBQWpDLENBQWYsQ0FaOEQsQ0FhOUQ7OztZQUNBLElBQUl0QixXQUFXLENBQUMwQixNQUFNLENBQUNHLEdBQVIsQ0FBWCxLQUE0QkMsU0FBaEMsRUFBMkM7Y0FDekM5QixXQUFXLENBQUMwQixNQUFNLENBQUNHLEdBQVIsQ0FBWCxHQUEwQkgsTUFBMUI7WUFDRDtVQUNGO1FBakM4QztVQUFBO1FBQUE7VUFBQTtRQUFBOztRQUFBLDRDQW1DakIsSUFBQVgscUJBQUEsRUFBUUwsVUFBUixFQUFvQixDQUFDLFNBQUQsQ0FBcEIsQ0FuQ2lCO1FBQUE7O1FBQUE7VUFtQy9DLHVEQUFnRTtZQUFBLElBQXJEcUIsZUFBcUQ7WUFDOUQsSUFBTUMsY0FBYyxHQUFHRCxlQUFlLENBQUNBLGVBQWUsQ0FBQ2IsTUFBaEIsR0FBeUIsQ0FBMUIsQ0FBdEM7O1lBQ0EsSUFBSSxDQUFDYyxjQUFjLENBQUNiLFFBQWYsQ0FBd0IsT0FBeEIsQ0FBTCxFQUF1QztjQUNyQztZQUNEOztZQUNELElBQU1jLGNBQWMsR0FBR3RCLGdCQUFBLENBQUtDLElBQUwsT0FBQUQsZ0JBQUEsR0FBVUQsVUFBViw0QkFBeUJxQixlQUF6QixHQUF2Qjs7WUFDQSxJQUFJaEMsR0FBSixFQUFTO2NBQ1BzQixPQUFPLENBQUN0QixHQUFSLHlCQUE2QmtDLGNBQTdCO1lBQ0Q7O1lBQ0QsSUFBTUMsVUFBa0IsR0FBR1gsbUJBQUEsQ0FBR0MsWUFBSCxDQUFnQlMsY0FBaEIsRUFBZ0M7Y0FDekRSLFFBQVEsRUFBRTtZQUQrQyxDQUFoQyxDQUEzQjs7WUFHQSxJQUFNVSxNQUFNLEdBQUdSLDJCQUFBLENBQXdCUyxRQUF4QixDQUFpQ0YsVUFBakMsQ0FBZixDQVo4RCxDQWE5RDs7O1lBQ0EsSUFBSWpDLFdBQVcsQ0FBQ2tDLE1BQU0sQ0FBQ04sR0FBUixDQUFYLEtBQTRCQyxTQUFoQyxFQUEyQztjQUN6QzdCLFdBQVcsQ0FBQ2tDLE1BQU0sQ0FBQ04sR0FBUixDQUFYLEdBQTBCTSxNQUExQjtZQUNEO1VBQ0Y7UUFwRDhDO1VBQUE7UUFBQTtVQUFBO1FBQUE7TUFxRGhEO0lBdERxRDtNQUFBO0lBQUE7TUFBQTtJQUFBO0VBdUR2RDs7RUFFRCxJQUFNRSxZQUF3QyxHQUFHLEVBQWpEO0VBQ0EsSUFBTUMsYUFBMkMsR0FBRyxFQUFwRDtFQUNBLElBQU1DLG9CQUF5RCxHQUFHLEVBQWxFOztFQUNBLElBQUkxQyxlQUFlLEdBQUdLLHlCQUFBLENBQWdCc0MsT0FBdEMsRUFBK0M7SUFBQSw0Q0FDdkJwQyxrQkFBQSxDQUFTcUMsT0FEYztJQUFBOztJQUFBO01BQzdDLHVEQUF3QztRQUFBLElBQTdCbkMsUUFBNkI7O1FBQ3RDLElBQUlBLFFBQU8sQ0FBQ0MsWUFBWixFQUEwQjtVQUN4QjtRQUNEOztRQUNELElBQ0VULFdBQVcsS0FBS1UseUJBQUEsQ0FBWUMsR0FBNUIsSUFDQUgsUUFBTyxDQUFDUixXQUFSLEtBQXdCVSx5QkFBQSxDQUFZQyxHQURwQyxJQUVBWCxXQUFXLEtBQUtRLFFBQU8sQ0FBQ1IsV0FIMUIsRUFJRTtVQUNBO1FBQ0Q7O1FBQ0QsSUFBTVksV0FBVSxHQUFHQyxnQkFBQSxDQUFLQyxJQUFMLENBQ2pCaEIsT0FEaUIsRUFFakJVLFFBQU8sQ0FBQ08sUUFBUixDQUFpQkMsT0FBakIsQ0FBeUIsU0FBekIsRUFBb0MsVUFBcEMsQ0FGaUIsQ0FBbkI7O1FBWHNDLDRDQWVQLElBQUFDLHFCQUFBLEVBQVFMLFdBQVIsQ0FmTztRQUFBOztRQUFBO1VBZXRDLHVEQUFvRDtZQUFBLElBQXpDZ0MsZ0JBQXlDO1lBQ2xELElBQU1DLGVBQWUsR0FBR0QsZ0JBQWdCLENBQUNBLGdCQUFnQixDQUFDeEIsTUFBakIsR0FBMEIsQ0FBM0IsQ0FBeEM7O1lBQ0EsSUFBSSxDQUFDeUIsZUFBZSxDQUFDeEIsUUFBaEIsQ0FBeUIsT0FBekIsQ0FBTCxFQUF3QztjQUN0QztZQUNEOztZQUNELElBQU15QixlQUFlLEdBQUdqQyxnQkFBQSxDQUFLQyxJQUFMLE9BQUFELGdCQUFBLEdBQVVELFdBQVYsNEJBQXlCZ0MsZ0JBQXpCLEdBQXhCOztZQUNBLElBQUkzQyxHQUFKLEVBQVM7Y0FDUHNCLE9BQU8sQ0FBQ3RCLEdBQVIseUJBQTZCNkMsZUFBN0I7WUFDRDs7WUFDRCxJQUFNQyxXQUFtQixHQUFHdEIsbUJBQUEsQ0FBR0MsWUFBSCxDQUFnQm9CLGVBQWhCLEVBQWlDO2NBQzNEbkIsUUFBUSxFQUFFO1lBRGlELENBQWpDLENBQTVCOztZQUdBLElBQU1xQixPQUFPLEdBQUdDLGdCQUFBLENBQWVDLFNBQWYsQ0FBeUJILFdBQXpCLENBQWhCOztZQUNBLElBQUlSLFlBQVksQ0FBQ1MsT0FBTyxDQUFDakIsR0FBVCxDQUFaLEtBQThCQyxTQUFsQyxFQUE2QztjQUMzQ08sWUFBWSxDQUFDUyxPQUFPLENBQUNqQixHQUFULENBQVosR0FBNEJpQixPQUE1QjtZQUNEOztZQUVELElBQU1HLElBQUcsR0FBR0gsT0FBTyxDQUFDSSxjQUFSLENBQXVCQyxXQUF2QixHQUFxQ0MsS0FBckMsQ0FBMkMsR0FBM0MsRUFBZ0QsQ0FBaEQsQ0FBWjtZQUNBLElBQUlDLGFBQWEsR0FBR2YsYUFBYSxDQUFDVyxJQUFELENBQWpDOztZQUNBLElBQUlJLGFBQWEsS0FBS3ZCLFNBQXRCLEVBQWlDO2NBQy9CdUIsYUFBYSxHQUFHZixhQUFhLENBQUNXLElBQUQsQ0FBYixHQUFxQixFQUFyQztZQUNEOztZQUNESSxhQUFhLENBQUNDLElBQWQsQ0FBbUJSLE9BQW5CO1lBRUEsSUFBTVMsR0FBRyxHQUFHVCxPQUFPLENBQUNTLEdBQXBCOztZQUNBLElBQUlBLEdBQUcsS0FBS3pCLFNBQVosRUFBdUI7Y0FBQSw0Q0FDRXlCLEdBQUcsQ0FBQ0MsU0FBSixJQUFpQixFQURuQjtjQUFBOztjQUFBO2dCQUNyQix1REFBNEM7a0JBQUEsSUFBakNDLFFBQWlDOztrQkFBQSw0Q0FDUEEsUUFBUSxDQUFDQyx1QkFBVCxJQUNqQyxFQUZ3QztrQkFBQTs7a0JBQUE7b0JBQzFDLHVEQUNNO3NCQUFBLElBREtDLG9CQUNMO3NCQUNKLElBQUlDLG9CQUFvQixHQUN0QnJCLG9CQUFvQixDQUFDb0Isb0JBQUQsQ0FEdEI7O3NCQUVBLElBQUlDLG9CQUFvQixLQUFLOUIsU0FBN0IsRUFBd0M7d0JBQ3RDOEIsb0JBQW9CLEdBQUdyQixvQkFBb0IsQ0FDekNvQixvQkFEeUMsQ0FBcEIsR0FFbkIsRUFGSjtzQkFHRDs7c0JBQ0RDLG9CQUFvQixDQUFDTixJQUFyQixDQUEwQlIsT0FBMUI7b0JBQ0Q7a0JBWHlDO29CQUFBO2tCQUFBO29CQUFBO2tCQUFBO2dCQVkzQztjQWJvQjtnQkFBQTtjQUFBO2dCQUFBO2NBQUE7WUFjdEI7VUFDRjtRQXZEcUM7VUFBQTtRQUFBO1VBQUE7UUFBQTtNQXdEdkM7SUF6RDRDO01BQUE7SUFBQTtNQUFBO0lBQUE7RUEwRDlDOztFQUVELElBQU1lLGVBQThDLEdBQUcsRUFBdkQ7O0VBQ0EsSUFBSWhFLGVBQWUsR0FBR0sseUJBQUEsQ0FBZ0I0RCxXQUF0QyxFQUFtRDtJQUFBLDRDQUMzQjFELGtCQUFBLENBQVMyRCxXQURrQjtJQUFBOztJQUFBO01BQ2pELHVEQUE0QztRQUFBLElBQWpDekQsU0FBaUM7O1FBQzFDLElBQUlBLFNBQU8sQ0FBQ0MsWUFBWixFQUEwQjtVQUN4QjtRQUNEOztRQUNELElBQ0VULFdBQVcsS0FBS1UseUJBQUEsQ0FBWUMsR0FBNUIsSUFDQUgsU0FBTyxDQUFDUixXQUFSLEtBQXdCVSx5QkFBQSxDQUFZQyxHQURwQyxJQUVBWCxXQUFXLEtBQUtRLFNBQU8sQ0FBQ1IsV0FIMUIsRUFJRTtVQUNBO1FBQ0Q7O1FBQ0QsSUFBTVksWUFBVSxHQUFHQyxnQkFBQSxDQUFLQyxJQUFMLENBQ2pCaEIsT0FEaUIsRUFFakJVLFNBQU8sQ0FBQ08sUUFBUixDQUFpQkMsT0FBakIsQ0FBeUIsU0FBekIsRUFBb0MsVUFBcEMsQ0FGaUIsQ0FBbkI7O1FBWDBDLDRDQWdCUixJQUFBQyxxQkFBQSxFQUFRTCxZQUFSLENBaEJRO1FBQUE7O1FBQUE7VUFnQjFDLHVEQUF1RDtZQUFBLElBQTVDc0QsbUJBQTRDO1lBQ3JELElBQU1DLGtCQUFrQixHQUN0QkQsbUJBQW1CLENBQUNBLG1CQUFtQixDQUFDOUMsTUFBcEIsR0FBNkIsQ0FBOUIsQ0FEckI7O1lBRUEsSUFBSSxDQUFDK0Msa0JBQWtCLENBQUM5QyxRQUFuQixDQUE0QixPQUE1QixDQUFMLEVBQTJDO2NBQ3pDO1lBQ0Q7O1lBQ0QsSUFBTStDLGtCQUFrQixHQUFHdkQsZ0JBQUEsQ0FBS0MsSUFBTCxPQUFBRCxnQkFBQSxHQUFVRCxZQUFWLDRCQUF5QnNELG1CQUF6QixHQUEzQjs7WUFDQSxJQUFJakUsR0FBSixFQUFTO2NBQ1BzQixPQUFPLENBQUN0QixHQUFSLHlCQUE2Qm1FLGtCQUE3QjtZQUNEOztZQUNELElBQU1DLGNBQXNCLEdBQUc1QyxtQkFBQSxDQUFHQyxZQUFILENBQWdCMEMsa0JBQWhCLEVBQW9DO2NBQ2pFekMsUUFBUSxFQUFFO1lBRHVELENBQXBDLENBQS9COztZQUdBLElBQU0yQyxVQUFVLEdBQUdDLG9CQUFBLENBQW1CQyxZQUFuQixDQUFnQ0gsY0FBaEMsQ0FBbkI7O1lBQ0EsSUFBSU4sZUFBZSxDQUFDTyxVQUFVLENBQUN2QyxHQUFaLENBQWYsS0FBb0NDLFNBQXhDLEVBQW1EO2NBQ2pEK0IsZUFBZSxDQUFDTyxVQUFVLENBQUN2QyxHQUFaLENBQWYsR0FBa0N1QyxVQUFsQztZQUNEO1VBQ0Y7UUFqQ3lDO1VBQUE7UUFBQTtVQUFBO1FBQUE7TUFrQzNDO0lBbkNnRDtNQUFBO0lBQUE7TUFBQTtJQUFBO0VBb0NsRDs7RUFFRCxJQUFNRyxhQUEwQyxHQUFHLEVBQW5EO0VBQ0EsSUFBTUMsaUNBRUwsR0FBRyxFQUZKO0VBR0EsSUFBTUMsaUNBRUwsR0FBRyxFQUZKO0VBR0EsSUFBTUMseUJBQWtFLEdBQUcsRUFBM0U7O0VBQ0EsSUFBSTdFLGVBQWUsR0FBR0sseUJBQUEsQ0FBZ0J5RSxtQkFBdEMsRUFBMkQ7SUFBQSw2Q0FDbkN2RSxrQkFBQSxDQUFTd0UsbUJBRDBCO0lBQUE7O0lBQUE7TUFDekQsMERBQW9EO1FBQUEsSUFBekN0RSxTQUF5Qzs7UUFDbEQsSUFBSUEsU0FBTyxDQUFDQyxZQUFaLEVBQTBCO1VBQ3hCO1FBQ0Q7O1FBQ0QsSUFDRVQsV0FBVyxLQUFLVSx5QkFBQSxDQUFZQyxHQUE1QixJQUNBSCxTQUFPLENBQUNSLFdBQVIsS0FBd0JVLHlCQUFBLENBQVlDLEdBRHBDLElBRUFYLFdBQVcsS0FBS1EsU0FBTyxDQUFDUixXQUgxQixFQUlFO1VBQ0E7UUFDRDs7UUFDRCxJQUFNWSxZQUFVLEdBQUdDLGdCQUFBLENBQUtDLElBQUwsQ0FDakJoQixPQURpQixFQUVqQlUsU0FBTyxDQUFDTyxRQUFSLENBQWlCQyxPQUFqQixDQUF5QixTQUF6QixFQUFvQyxVQUFwQyxDQUZpQixDQUFuQjs7UUFYa0QsNkNBZ0JsQixJQUFBQyxxQkFBQSxFQUFRTCxZQUFSLEVBQW9CLENBQUMsV0FBRCxDQUFwQixDQWhCa0I7UUFBQTs7UUFBQTtVQWdCbEQsMERBQW9FO1lBQUEsSUFBekRtRSxpQkFBeUQ7WUFDbEUsSUFBTUMsZ0JBQWdCLEdBQUdELGlCQUFpQixDQUFDQSxpQkFBaUIsQ0FBQzNELE1BQWxCLEdBQTJCLENBQTVCLENBQTFDOztZQUNBLElBQUksQ0FBQzRELGdCQUFnQixDQUFDM0QsUUFBakIsQ0FBMEIsT0FBMUIsQ0FBTCxFQUF5QztjQUN2QztZQUNEOztZQUNELElBQU00RCxnQkFBZ0IsR0FBR3BFLGdCQUFBLENBQUtDLElBQUwsT0FBQUQsZ0JBQUEsR0FBVUQsWUFBViw0QkFBeUJtRSxpQkFBekIsR0FBekI7O1lBQ0EsSUFBSTlFLEdBQUosRUFBUztjQUNQc0IsT0FBTyxDQUFDdEIsR0FBUix5QkFBNkJnRixnQkFBN0I7WUFDRDs7WUFDRCxJQUFNQyxZQUFvQixHQUFHekQsbUJBQUEsQ0FBR0MsWUFBSCxDQUFnQnVELGdCQUFoQixFQUFrQztjQUM3RHRELFFBQVEsRUFBRTtZQURtRCxDQUFsQyxDQUE3Qjs7WUFHQSxJQUFNd0QsUUFBUSxHQUFHQyw2QkFBQSxDQUEyQkMsVUFBM0IsQ0FBc0NILFlBQXRDLENBQWpCOztZQUNBLElBQUlULGFBQWEsQ0FBQ1UsUUFBUSxDQUFDcEQsR0FBVixDQUFiLEtBQWdDQyxTQUFwQyxFQUErQztjQUM3Q3lDLGFBQWEsQ0FBQ1UsUUFBUSxDQUFDcEQsR0FBVixDQUFiLEdBQThCb0QsUUFBOUI7WUFDRDtVQUNGO1FBaENpRDtVQUFBO1FBQUE7VUFBQTtRQUFBOztRQUFBLDZDQWtDbkIsSUFBQWxFLHFCQUFBLEVBQVFMLFlBQVIsRUFBb0IsQ0FBQyxVQUFELENBQXBCLENBbENtQjtRQUFBOztRQUFBO1VBa0NsRCwwREFBa0U7WUFBQSxJQUF2RDBFLGdCQUF1RDtZQUNoRSxJQUFNQyxlQUFlLEdBQUdELGdCQUFnQixDQUFDQSxnQkFBZ0IsQ0FBQ2xFLE1BQWpCLEdBQTBCLENBQTNCLENBQXhDOztZQUNBLElBQUksQ0FBQ21FLGVBQWUsQ0FBQ2xFLFFBQWhCLENBQXlCLE9BQXpCLENBQUwsRUFBd0M7Y0FDdEM7WUFDRDs7WUFDRCxJQUFNbUUsZUFBZSxHQUFHM0UsZ0JBQUEsQ0FBS0MsSUFBTCxPQUFBRCxnQkFBQSxHQUFVRCxZQUFWLDRCQUF5QjBFLGdCQUF6QixHQUF4Qjs7WUFDQSxJQUFJckYsR0FBSixFQUFTO2NBQ1BzQixPQUFPLENBQUN0QixHQUFSLHlCQUE2QnVGLGVBQTdCO1lBQ0Q7O1lBQ0QsSUFBTUMsV0FBbUIsR0FBR2hFLG1CQUFBLENBQUdDLFlBQUgsQ0FBZ0I4RCxlQUFoQixFQUFpQztjQUMzRDdELFFBQVEsRUFBRTtZQURpRCxDQUFqQyxDQUE1Qjs7WUFHQSxJQUFNK0QsT0FBTyxHQUNYTiw2QkFBQSxDQUEyQk8sc0JBQTNCLENBQWtERixXQUFsRCxDQURGOztZQUVBLElBQU1HLFlBQVksR0FBR0YsT0FBTyxDQUFDRSxZQUE3Qjs7WUFDQSxJQUNFQSxZQUFZLENBQUNDLFdBQWIsSUFDQW5CLGlDQUFpQyxDQUFDa0IsWUFBWSxDQUFDQyxXQUFkLENBQWpDLEtBQ0U3RCxTQUhKLEVBSUU7Y0FDQTBDLGlDQUFpQyxDQUFDa0IsWUFBWSxDQUFDQyxXQUFkLENBQWpDLEdBQThESCxPQUE5RDtZQUNEOztZQUNELElBQ0VFLFlBQVksQ0FBQ0UsV0FBYixJQUNBbkIsaUNBQWlDLENBQUNpQixZQUFZLENBQUNFLFdBQWQsQ0FBakMsS0FDRTlELFNBSEosRUFJRTtjQUNBMkMsaUNBQWlDLENBQUNpQixZQUFZLENBQUNFLFdBQWQsQ0FBakMsR0FBOERKLE9BQTlEO1lBQ0Q7O1lBQ0QsSUFBSWQseUJBQXlCLENBQUNjLE9BQU8sQ0FBQzNELEdBQVQsQ0FBekIsS0FBMkNDLFNBQS9DLEVBQTBEO2NBQ3hENEMseUJBQXlCLENBQUNjLE9BQU8sQ0FBQzNELEdBQVQsQ0FBekIsR0FBeUMyRCxPQUF6QztZQUNEO1VBQ0Y7UUFsRWlEO1VBQUE7UUFBQTtVQUFBO1FBQUE7TUFtRW5EO0lBcEV3RDtNQUFBO0lBQUE7TUFBQTtJQUFBO0VBcUUxRDs7RUFFRCxJQUFJSyxVQUFvQyxHQUFHLEVBQTNDOztFQUNBLElBQUloRyxlQUFlLEdBQUdLLHlCQUFBLENBQWdCNEYsTUFBdEMsRUFBOEM7SUFDNUM7TUFDRSxJQUFNQyxZQUFvQixHQUFHcEYsZ0JBQUEsQ0FBS0MsSUFBTCxDQUMzQmhCLE9BRDJCLDRCQUd6QjtNQUNBRSxXQUFXLEtBQUtVLHlCQUFBLENBQVlDLEdBQTVCLEdBQWtDRCx5QkFBQSxDQUFZd0YsTUFBOUMsR0FBdURsRyxXQUo5QixHQU0zQixjQU4yQixDQUE3Qjs7TUFRQSxJQUFJeUIsbUJBQUEsQ0FBRzBFLFVBQUgsQ0FBY0YsWUFBZCxDQUFKLEVBQWlDO1FBQy9CLElBQUloRyxHQUFKLEVBQVM7VUFDUHNCLE9BQU8sQ0FBQ3RCLEdBQVIseUJBQTZCZ0csWUFBN0I7UUFDRDs7UUFDRCxJQUFNRyxJQUFZLEdBQUczRSxtQkFBQSxDQUFHQyxZQUFILENBQWdCdUUsWUFBaEIsRUFBOEI7VUFBRXRFLFFBQVEsRUFBRTtRQUFaLENBQTlCLENBQXJCOztRQUNBMEUsTUFBTSxDQUFDQyxNQUFQLENBQWNQLFVBQWQsRUFBMEJRLElBQUksQ0FBQ0MsS0FBTCxDQUFXSixJQUFYLENBQTFCO01BQ0QsQ0FORCxNQU1PLElBQUluRyxHQUFKLEVBQVM7UUFDZHNCLE9BQU8sQ0FBQ3RCLEdBQVIsa0NBQXNDZ0csWUFBdEM7TUFDRDtJQUNGO0lBRUQ7TUFDRSxJQUFNQSxhQUFvQixHQUFHcEYsZ0JBQUEsQ0FBS0MsSUFBTCxDQUMzQmhCLE9BRDJCLEVBRTNCLGtCQUYyQixFQUczQixnQkFIMkIsQ0FBN0I7O01BS0EsSUFBSTJCLG1CQUFBLENBQUcwRSxVQUFILENBQWNGLGFBQWQsQ0FBSixFQUFpQztRQUMvQixJQUFJaEcsR0FBSixFQUFTO1VBQ1BzQixPQUFPLENBQUN0QixHQUFSLHlCQUE2QmdHLGFBQTdCO1FBQ0Q7O1FBQ0QsSUFBTUcsS0FBWSxHQUFHM0UsbUJBQUEsQ0FBR0MsWUFBSCxDQUFnQnVFLGFBQWhCLEVBQThCO1VBQUV0RSxRQUFRLEVBQUU7UUFBWixDQUE5QixDQUFyQjs7UUFDQTBFLE1BQU0sQ0FBQ0MsTUFBUCxDQUFjUCxVQUFkLEVBQTBCUSxJQUFJLENBQUNDLEtBQUwsQ0FBV0osS0FBWCxDQUExQjtNQUNELENBTkQsTUFNTyxJQUFJbkcsR0FBSixFQUFTO1FBQ2RzQixPQUFPLENBQUN0QixHQUFSLGtDQUFzQ2dHLGFBQXRDO01BQ0Q7SUFDRjtFQUNGOztFQUVELElBQU1RLFlBQXdDLEdBQUcsRUFBakQ7O0VBQ0EsSUFBSTFHLGVBQWUsR0FBR0sseUJBQUEsQ0FBZ0JzRyxRQUF0QyxFQUFnRDtJQUFBLDZDQUN4QnBHLGtCQUFBLENBQVNxRyxRQURlO0lBQUE7O0lBQUE7TUFDOUMsMERBQXlDO1FBQUEsSUFBOUJuRyxTQUE4Qjs7UUFDdkMsSUFBSUEsU0FBTyxDQUFDQyxZQUFaLEVBQTBCO1VBQ3hCO1FBQ0Q7O1FBQ0QsSUFDRVQsV0FBVyxLQUFLVSx5QkFBQSxDQUFZQyxHQUE1QixJQUNBSCxTQUFPLENBQUNSLFdBQVIsS0FBd0JVLHlCQUFBLENBQVlDLEdBRHBDLElBRUFYLFdBQVcsS0FBS1EsU0FBTyxDQUFDUixXQUgxQixFQUlFO1VBQ0E7UUFDRDs7UUFDRCxJQUFNWSxZQUFVLEdBQUdDLGdCQUFBLENBQUtDLElBQUwsQ0FDakJoQixPQURpQixFQUVqQlUsU0FBTyxDQUFDTyxRQUFSLENBQWlCQyxPQUFqQixDQUF5QixTQUF6QixFQUFvQyxVQUFwQyxDQUZpQixDQUFuQjs7UUFYdUMsNkNBZ0JSLElBQUFDLHFCQUFBLEVBQVFMLFlBQVIsQ0FoQlE7UUFBQTs7UUFBQTtVQWdCdkMsMERBQW9EO1lBQUEsSUFBekNnRyxnQkFBeUM7WUFDbEQsSUFBTUMsZUFBZSxHQUFHRCxnQkFBZ0IsQ0FBQ0EsZ0JBQWdCLENBQUN4RixNQUFqQixHQUEwQixDQUEzQixDQUF4Qzs7WUFDQSxJQUFJLENBQUN5RixlQUFlLENBQUN4RixRQUFoQixDQUF5QixPQUF6QixDQUFMLEVBQXdDO2NBQ3RDO1lBQ0Q7O1lBQ0QsSUFBTXlGLGVBQWUsR0FBR2pHLGdCQUFBLENBQUtDLElBQUwsT0FBQUQsZ0JBQUEsR0FBVUQsWUFBViw0QkFBeUJnRyxnQkFBekIsR0FBeEI7O1lBQ0EsSUFBSTNHLEdBQUosRUFBUztjQUNQc0IsT0FBTyxDQUFDdEIsR0FBUix5QkFBNkI2RyxlQUE3QjtZQUNEOztZQUNELElBQU1DLFdBQW1CLEdBQUd0RixtQkFBQSxDQUFHQyxZQUFILENBQWdCb0YsZUFBaEIsRUFBaUM7Y0FDM0RuRixRQUFRLEVBQUU7WUFEaUQsQ0FBakMsQ0FBNUI7O1lBR0EsSUFBTXFGLE9BQU8sR0FBR0MsaUJBQUEsQ0FBZ0JDLFNBQWhCLENBQTBCSCxXQUExQixDQUFoQjs7WUFDQSxJQUFJTixZQUFZLENBQUNPLE9BQU8sQ0FBQ2pGLEdBQVQsQ0FBWixLQUE4QkMsU0FBbEMsRUFBNkM7Y0FDM0N5RSxZQUFZLENBQUNPLE9BQU8sQ0FBQ2pGLEdBQVQsQ0FBWixHQUE0QmlGLE9BQTVCO1lBQ0Q7VUFDRjtRQWhDc0M7VUFBQTtRQUFBO1VBQUE7UUFBQTtNQWlDeEM7SUFsQzZDO01BQUE7SUFBQTtNQUFBO0lBQUE7RUFtQy9DOztFQUVELE9BQU87SUFDTDlHLFdBQVcsRUFBWEEsV0FESztJQUVMNkQsZUFBZSxFQUFmQSxlQUZLO0lBR0xVLGFBQWEsRUFBYkEsYUFISztJQUlMQyxpQ0FBaUMsRUFBakNBLGlDQUpLO0lBS0xDLGlDQUFpQyxFQUFqQ0EsaUNBTEs7SUFNTEMseUJBQXlCLEVBQXpCQSx5QkFOSztJQU9MekUsV0FBVyxFQUFYQSxXQVBLO0lBUUw0RixVQUFVLEVBQVZBLFVBUks7SUFTTHhELFlBQVksRUFBWkEsWUFUSztJQVVMQyxhQUFhLEVBQWJBLGFBVks7SUFXTEMsb0JBQW9CLEVBQXBCQSxvQkFYSztJQVlMZ0UsWUFBWSxFQUFaQTtFQVpLLENBQVA7QUFjRDtBQUVEOzs7QUFDTyxTQUFTVSw2QkFBVCxDQUNMckgsT0FESyxFQUVMQyxlQUZLLEVBR0xDLFdBSEssRUFLQztFQUFBLGdGQURZLEVBQ1o7RUFBQSxzQkFESkMsR0FDSTtFQUFBLElBREpBLEdBQ0ksMEJBREUsS0FDRjs7RUFDTixJQUFNQyxXQUFzQyxHQUFHLEVBQS9DO0VBQ0EsSUFBTUMsV0FBc0MsR0FBRyxFQUEvQzs7RUFDQSxJQUFJSixlQUFlLEdBQUdLLHlCQUFBLENBQWdCQyxnQkFBdEMsRUFBd0Q7SUFBQSw2Q0FDaENDLGtCQUFBLENBQVNDLGdCQUR1QjtJQUFBOztJQUFBO01BQ3RELDBEQUFpRDtRQUFBLElBQXRDQyxPQUFzQzs7UUFDL0MsSUFBSUEsT0FBTyxDQUFDQyxZQUFaLEVBQTBCO1VBQ3hCO1FBQ0Q7O1FBQ0QsSUFDRVQsV0FBVyxLQUFLVSx5QkFBQSxDQUFZQyxHQUE1QixJQUNBSCxPQUFPLENBQUNSLFdBQVIsS0FBd0JVLHlCQUFBLENBQVlDLEdBRHBDLElBRUFYLFdBQVcsS0FBS1EsT0FBTyxDQUFDUixXQUgxQixFQUlFO1VBQ0E7UUFDRDs7UUFDRCxJQUFNaUcsWUFBb0IsR0FBR3BGLGdCQUFBLENBQUtDLElBQUwsQ0FDM0JoQixPQUQyQixFQUUzQlUsT0FBTyxDQUFDTyxRQUFSLENBQWlCQyxPQUFqQixDQUF5QixTQUF6QixFQUFvQyxlQUFwQyxDQUYyQixDQUE3Qjs7UUFJQSxJQUFJZixHQUFKLEVBQVM7VUFDUHNCLE9BQU8sQ0FBQ3RCLEdBQVIseUJBQTZCZ0csWUFBN0I7UUFDRDs7UUFDRCxJQUFNRyxJQUFZLEdBQUczRSxtQkFBQSxDQUFHQyxZQUFILENBQWdCdUUsWUFBaEIsRUFBOEI7VUFBRXRFLFFBQVEsRUFBRTtRQUFaLENBQTlCLENBQXJCOztRQUNBLElBQU1wQixnQkFBZ0IsR0FBR3NCLDJCQUFBLENBQXdCdUYsa0JBQXhCLENBQTJDaEIsSUFBM0MsQ0FBekI7O1FBbkIrQyw2Q0FvQjFCN0YsZ0JBQWdCLENBQUM4RyxPQXBCUztRQUFBOztRQUFBO1VBb0IvQywwREFBK0M7WUFBQSxJQUFwQ3pGLE1BQW9DOztZQUM3QztZQUNBLElBQUkxQixXQUFXLENBQUMwQixNQUFNLENBQUNHLEdBQVIsQ0FBWCxLQUE0QkMsU0FBaEMsRUFBMkM7Y0FDekM5QixXQUFXLENBQUMwQixNQUFNLENBQUNHLEdBQVIsQ0FBWCxHQUEwQkgsTUFBMUI7WUFDRDtVQUNGO1FBekI4QztVQUFBO1FBQUE7VUFBQTtRQUFBOztRQUFBLDZDQTBCMUJyQixnQkFBZ0IsQ0FBQytHLE9BMUJTO1FBQUE7O1FBQUE7VUEwQi9DLDBEQUErQztZQUFBLElBQXBDakYsTUFBb0M7O1lBQzdDO1lBQ0EsSUFBSWxDLFdBQVcsQ0FBQ2tDLE1BQU0sQ0FBQ04sR0FBUixDQUFYLEtBQTRCQyxTQUFoQyxFQUEyQztjQUN6QzdCLFdBQVcsQ0FBQ2tDLE1BQU0sQ0FBQ04sR0FBUixDQUFYLEdBQTBCTSxNQUExQjtZQUNEO1VBQ0Y7UUEvQjhDO1VBQUE7UUFBQTtVQUFBO1FBQUE7TUFnQ2hEO0lBakNxRDtNQUFBO0lBQUE7TUFBQTtJQUFBO0VBa0N2RDs7RUFFRCxJQUFNRSxZQUF3QyxHQUFHLEVBQWpEO0VBQ0EsSUFBTUMsYUFBMkMsR0FBRyxFQUFwRDtFQUNBLElBQU1DLG9CQUF5RCxHQUFHLEVBQWxFOztFQUNBLElBQUkxQyxlQUFlLEdBQUdLLHlCQUFBLENBQWdCc0MsT0FBdEMsRUFBK0M7SUFBQSw2Q0FDdkJwQyxrQkFBQSxDQUFTcUMsT0FEYztJQUFBOztJQUFBO01BQzdDLDBEQUF3QztRQUFBLElBQTdCbkMsU0FBNkI7O1FBQ3RDLElBQUlBLFNBQU8sQ0FBQ0MsWUFBWixFQUEwQjtVQUN4QjtRQUNEOztRQUNELElBQ0VULFdBQVcsS0FBS1UseUJBQUEsQ0FBWUMsR0FBNUIsSUFDQUgsU0FBTyxDQUFDUixXQUFSLEtBQXdCVSx5QkFBQSxDQUFZQyxHQURwQyxJQUVBWCxXQUFXLEtBQUtRLFNBQU8sQ0FBQ1IsV0FIMUIsRUFJRTtVQUNBO1FBQ0Q7O1FBQ0QsSUFBTWlHLGNBQW9CLEdBQUdwRixnQkFBQSxDQUFLQyxJQUFMLENBQzNCaEIsT0FEMkIsRUFFM0JVLFNBQU8sQ0FBQ08sUUFBUixDQUFpQkMsT0FBakIsQ0FBeUIsU0FBekIsRUFBb0MsZUFBcEMsQ0FGMkIsQ0FBN0I7O1FBSUEsSUFBSWYsR0FBSixFQUFTO1VBQ1BzQixPQUFPLENBQUN0QixHQUFSLHlCQUE2QmdHLGNBQTdCO1FBQ0Q7O1FBQ0QsSUFBTUcsTUFBWSxHQUFHM0UsbUJBQUEsQ0FBR0MsWUFBSCxDQUFnQnVFLGNBQWhCLEVBQThCO1VBQUV0RSxRQUFRLEVBQUU7UUFBWixDQUE5QixDQUFyQjs7UUFDQSxJQUFNZ0IsT0FBTyxHQUFHTSxnQkFBQSxDQUFlc0UsU0FBZixDQUF5Qm5CLE1BQXpCLENBQWhCOztRQW5Cc0MsNkNBb0JoQnpELE9BQU8sQ0FBQzZFLFFBcEJRO1FBQUE7O1FBQUE7VUFvQnRDLDBEQUF3QztZQUFBLElBQTdCeEUsT0FBNkI7O1lBQ3RDLElBQUlULFlBQVksQ0FBQ1MsT0FBTyxDQUFDakIsR0FBVCxDQUFaLEtBQThCQyxTQUFsQyxFQUE2QztjQUMzQ08sWUFBWSxDQUFDUyxPQUFPLENBQUNqQixHQUFULENBQVosR0FBNEJpQixPQUE1QjtZQUNEOztZQUVELElBQU1HLEtBQUcsR0FBR0gsT0FBTyxDQUFDSSxjQUFSLENBQXVCQyxXQUF2QixHQUFxQ0MsS0FBckMsQ0FBMkMsR0FBM0MsRUFBZ0QsQ0FBaEQsQ0FBWjtZQUNBLElBQUlDLGFBQWEsR0FBR2YsYUFBYSxDQUFDVyxLQUFELENBQWpDOztZQUNBLElBQUlJLGFBQWEsS0FBS3ZCLFNBQXRCLEVBQWlDO2NBQy9CdUIsYUFBYSxHQUFHZixhQUFhLENBQUNXLEtBQUQsQ0FBYixHQUFxQixFQUFyQztZQUNEOztZQUNESSxhQUFhLENBQUNDLElBQWQsQ0FBbUJSLE9BQW5CO1lBRUEsSUFBTVMsR0FBRyxHQUFHVCxPQUFPLENBQUNTLEdBQXBCOztZQUNBLElBQUlBLEdBQUcsS0FBS3pCLFNBQVosRUFBdUI7Y0FBQSw2Q0FDRXlCLEdBQUcsQ0FBQ0MsU0FBSixJQUFpQixFQURuQjtjQUFBOztjQUFBO2dCQUNyQiwwREFBNEM7a0JBQUEsSUFBakNDLFFBQWlDOztrQkFBQSw2Q0FDUEEsUUFBUSxDQUFDQyx1QkFBVCxJQUNqQyxFQUZ3QztrQkFBQTs7a0JBQUE7b0JBQzFDLDBEQUNNO3NCQUFBLElBREtDLG9CQUNMO3NCQUNKLElBQUlDLG9CQUFvQixHQUN0QnJCLG9CQUFvQixDQUFDb0Isb0JBQUQsQ0FEdEI7O3NCQUVBLElBQUlDLG9CQUFvQixLQUFLOUIsU0FBN0IsRUFBd0M7d0JBQ3RDOEIsb0JBQW9CLEdBQUdyQixvQkFBb0IsQ0FDekNvQixvQkFEeUMsQ0FBcEIsR0FFbkIsRUFGSjtzQkFHRDs7c0JBQ0RDLG9CQUFvQixDQUFDTixJQUFyQixDQUEwQlIsT0FBMUI7b0JBQ0Q7a0JBWHlDO29CQUFBO2tCQUFBO29CQUFBO2tCQUFBO2dCQVkzQztjQWJvQjtnQkFBQTtjQUFBO2dCQUFBO2NBQUE7WUFjdEI7VUFDRjtRQWhEcUM7VUFBQTtRQUFBO1VBQUE7UUFBQTtNQWlEdkM7SUFsRDRDO01BQUE7SUFBQTtNQUFBO0lBQUE7RUFtRDlDOztFQUVELElBQU1lLGVBQThDLEdBQUcsRUFBdkQ7O0VBQ0EsSUFBSWhFLGVBQWUsR0FBR0sseUJBQUEsQ0FBZ0I0RCxXQUF0QyxFQUFtRDtJQUFBLDZDQUMzQjFELGtCQUFBLENBQVMyRCxXQURrQjtJQUFBOztJQUFBO01BQ2pELDBEQUE0QztRQUFBLElBQWpDekQsU0FBaUM7O1FBQzFDLElBQUlBLFNBQU8sQ0FBQ0MsWUFBWixFQUEwQjtVQUN4QjtRQUNEOztRQUNELElBQ0VULFdBQVcsS0FBS1UseUJBQUEsQ0FBWUMsR0FBNUIsSUFDQUgsU0FBTyxDQUFDUixXQUFSLEtBQXdCVSx5QkFBQSxDQUFZQyxHQURwQyxJQUVBWCxXQUFXLEtBQUtRLFNBQU8sQ0FBQ1IsV0FIMUIsRUFJRTtVQUNBO1FBQ0Q7O1FBQ0QsSUFBTWlHLGNBQW9CLEdBQUdwRixnQkFBQSxDQUFLQyxJQUFMLENBQzNCaEIsT0FEMkIsRUFFM0JVLFNBQU8sQ0FBQ08sUUFBUixDQUFpQkMsT0FBakIsQ0FBeUIsU0FBekIsRUFBb0MsZUFBcEMsQ0FGMkIsQ0FBN0I7O1FBSUEsSUFBSWYsR0FBSixFQUFTO1VBQ1BzQixPQUFPLENBQUN0QixHQUFSLHlCQUE2QmdHLGNBQTdCO1FBQ0Q7O1FBQ0QsSUFBTUcsTUFBWSxHQUFHM0UsbUJBQUEsQ0FBR0MsWUFBSCxDQUFnQnVFLGNBQWhCLEVBQThCO1VBQUV0RSxRQUFRLEVBQUU7UUFBWixDQUE5QixDQUFyQjs7UUFDQSxJQUFNc0MsV0FBVyxHQUFHTSxvQkFBQSxDQUFtQmtELGFBQW5CLENBQWlDckIsTUFBakMsQ0FBcEI7O1FBbkIwQyw2Q0FvQlpuQyxXQUFXLENBQUN5RCxpQkFwQkE7UUFBQTs7UUFBQTtVQW9CMUMsMERBQTZEO1lBQUEsSUFBbERDLGVBQWtEOztZQUFBLDZDQUNsQ0EsZUFBZSxDQUFDMUQsV0FEa0I7WUFBQTs7WUFBQTtjQUMzRCwwREFBc0Q7Z0JBQUEsSUFBM0NLLFVBQTJDOztnQkFDcEQsSUFBSVAsZUFBZSxDQUFDTyxVQUFVLENBQUN2QyxHQUFaLENBQWYsS0FBb0NDLFNBQXhDLEVBQW1EO2tCQUNqRCtCLGVBQWUsQ0FBQ08sVUFBVSxDQUFDdkMsR0FBWixDQUFmLEdBQWtDdUMsVUFBbEM7Z0JBQ0Q7Y0FDRjtZQUwwRDtjQUFBO1lBQUE7Y0FBQTtZQUFBO1VBTTVEO1FBMUJ5QztVQUFBO1FBQUE7VUFBQTtRQUFBO01BMkIzQztJQTVCZ0Q7TUFBQTtJQUFBO01BQUE7SUFBQTtFQTZCbEQ7O0VBRUQsSUFBTUcsYUFBMEMsR0FBRyxFQUFuRDtFQUNBLElBQU1DLGlDQUVMLEdBQUcsRUFGSjtFQUdBLElBQU1DLGlDQUVMLEdBQUcsRUFGSjtFQUdBLElBQU1DLHlCQUFrRSxHQUFHLEVBQTNFOztFQUNBLElBQUk3RSxlQUFlLEdBQUdLLHlCQUFBLENBQWdCeUUsbUJBQXRDLEVBQTJEO0lBQUEsNkNBQ25DdkUsa0JBQUEsQ0FBU3dFLG1CQUQwQjtJQUFBOztJQUFBO01BQ3pELDBEQUFvRDtRQUFBLElBQXpDdEUsU0FBeUM7O1FBQ2xELElBQUlBLFNBQU8sQ0FBQ0MsWUFBWixFQUEwQjtVQUN4QjtRQUNEOztRQUNELElBQ0VULFdBQVcsS0FBS1UseUJBQUEsQ0FBWUMsR0FBNUIsSUFDQUgsU0FBTyxDQUFDUixXQUFSLEtBQXdCVSx5QkFBQSxDQUFZQyxHQURwQyxJQUVBWCxXQUFXLEtBQUtRLFNBQU8sQ0FBQ1IsV0FIMUIsRUFJRTtVQUNBO1FBQ0Q7O1FBQ0QsSUFBTWlHLGNBQW9CLEdBQUdwRixnQkFBQSxDQUFLQyxJQUFMLENBQzNCaEIsT0FEMkIsRUFFM0JVLFNBQU8sQ0FBQ08sUUFBUixDQUFpQkMsT0FBakIsQ0FBeUIsU0FBekIsRUFBb0MsZUFBcEMsQ0FGMkIsQ0FBN0I7O1FBSUEsSUFBSWYsR0FBSixFQUFTO1VBQ1BzQixPQUFPLENBQUN0QixHQUFSLHlCQUE2QmdHLGNBQTdCO1FBQ0Q7O1FBQ0QsSUFBTUcsTUFBWSxHQUFHM0UsbUJBQUEsQ0FBR0MsWUFBSCxDQUFnQnVFLGNBQWhCLEVBQThCO1VBQUV0RSxRQUFRLEVBQUU7UUFBWixDQUE5QixDQUFyQjs7UUFDQSxJQUFNbUQsbUJBQW1CLEdBQ3ZCTSw2QkFBQSxDQUEyQndDLHFCQUEzQixDQUFpRHhCLE1BQWpELENBREY7O1FBbkJrRCw2Q0FxQjNCdEIsbUJBQW1CLENBQUM0QyxpQkFyQk87UUFBQTs7UUFBQTtVQXFCbEQsMERBQThEO1lBQUEsSUFBbkR2QyxRQUFtRDs7WUFDNUQsSUFBSVYsYUFBYSxDQUFDVSxRQUFRLENBQUNwRCxHQUFWLENBQWIsS0FBZ0NDLFNBQXBDLEVBQStDO2NBQzdDeUMsYUFBYSxDQUFDVSxRQUFRLENBQUNwRCxHQUFWLENBQWIsR0FBOEJvRCxRQUE5QjtZQUNEO1VBQ0Y7UUF6QmlEO1VBQUE7UUFBQTtVQUFBO1FBQUE7O1FBQUEsNkNBMEI1QkwsbUJBQW1CLENBQUMrQyxzQkExQlE7UUFBQTs7UUFBQTtVQTBCbEQsMERBQWtFO1lBQUEsSUFBdkRuQyxPQUF1RDtZQUNoRSxJQUFNRSxZQUFZLEdBQUdGLE9BQU8sQ0FBQ0UsWUFBN0I7O1lBQ0EsSUFDRUEsWUFBWSxDQUFDQyxXQUFiLElBQ0FuQixpQ0FBaUMsQ0FBQ2tCLFlBQVksQ0FBQ0MsV0FBZCxDQUFqQyxLQUNFN0QsU0FISixFQUlFO2NBQ0EwQyxpQ0FBaUMsQ0FBQ2tCLFlBQVksQ0FBQ0MsV0FBZCxDQUFqQyxHQUE4REgsT0FBOUQ7WUFDRDs7WUFDRCxJQUNFRSxZQUFZLENBQUNFLFdBQWIsSUFDQW5CLGlDQUFpQyxDQUFDaUIsWUFBWSxDQUFDRSxXQUFkLENBQWpDLEtBQ0U5RCxTQUhKLEVBSUU7Y0FDQTJDLGlDQUFpQyxDQUFDaUIsWUFBWSxDQUFDRSxXQUFkLENBQWpDLEdBQThESixPQUE5RDtZQUNEOztZQUNELElBQUlkLHlCQUF5QixDQUFDYyxPQUFPLENBQUMzRCxHQUFULENBQXpCLEtBQTJDQyxTQUEvQyxFQUEwRDtjQUN4RDRDLHlCQUF5QixDQUFDYyxPQUFPLENBQUMzRCxHQUFULENBQXpCLEdBQXlDMkQsT0FBekM7WUFDRDtVQUNGO1FBN0NpRDtVQUFBO1FBQUE7VUFBQTtRQUFBO01BOENuRDtJQS9Dd0Q7TUFBQTtJQUFBO01BQUE7SUFBQTtFQWdEMUQ7O0VBRUQsSUFBTUssVUFBb0MsR0FBRyxFQUE3Qzs7RUFDQSxJQUFJaEcsZUFBZSxHQUFHSyx5QkFBQSxDQUFnQjRGLE1BQXRDLEVBQThDO0lBQzVDLElBQU1ELFdBQVUsR0FBRyxFQUFuQjtJQUVBO01BQ0UsSUFBTUUsY0FBb0IsR0FBR3BGLGdCQUFBLENBQUtDLElBQUwsQ0FDM0JoQixPQUQyQiw0QkFHekI7TUFDQUUsV0FBVyxLQUFLVSx5QkFBQSxDQUFZQyxHQUE1QixHQUFrQ0QseUJBQUEsQ0FBWXdGLE1BQTlDLEdBQXVEbEcsV0FKOUIsR0FNM0IsY0FOMkIsQ0FBN0I7O01BUUEsSUFBSXlCLG1CQUFBLENBQUcwRSxVQUFILENBQWNGLGNBQWQsQ0FBSixFQUFpQztRQUMvQixJQUFJaEcsR0FBSixFQUFTO1VBQ1BzQixPQUFPLENBQUN0QixHQUFSLHlCQUE2QmdHLGNBQTdCO1FBQ0Q7O1FBQ0QsSUFBTUcsTUFBWSxHQUFHM0UsbUJBQUEsQ0FBR0MsWUFBSCxDQUFnQnVFLGNBQWhCLEVBQThCO1VBQUV0RSxRQUFRLEVBQUU7UUFBWixDQUE5QixDQUFyQjs7UUFDQTBFLE1BQU0sQ0FBQ0MsTUFBUCxDQUFjUCxXQUFkLEVBQTBCUSxJQUFJLENBQUNDLEtBQUwsQ0FBV0osTUFBWCxDQUExQjtNQUNELENBTkQsTUFNTyxJQUFJbkcsR0FBSixFQUFTO1FBQ2RzQixPQUFPLENBQUN0QixHQUFSLGtDQUFzQ2dHLGNBQXRDO01BQ0Q7SUFDRjtJQUVEO01BQ0UsSUFBTUEsY0FBb0IsR0FBR3BGLGdCQUFBLENBQUtDLElBQUwsQ0FDM0JoQixPQUQyQixFQUUzQixrQkFGMkIsRUFHM0IsZ0JBSDJCLENBQTdCOztNQUtBLElBQUkyQixtQkFBQSxDQUFHMEUsVUFBSCxDQUFjRixjQUFkLENBQUosRUFBaUM7UUFDL0IsSUFBSWhHLEdBQUosRUFBUztVQUNQc0IsT0FBTyxDQUFDdEIsR0FBUix5QkFBNkJnRyxjQUE3QjtRQUNEOztRQUNELElBQU1HLE1BQVksR0FBRzNFLG1CQUFBLENBQUdDLFlBQUgsQ0FBZ0J1RSxjQUFoQixFQUE4QjtVQUFFdEUsUUFBUSxFQUFFO1FBQVosQ0FBOUIsQ0FBckI7O1FBQ0EwRSxNQUFNLENBQUNDLE1BQVAsQ0FBY1AsV0FBZCxFQUEwQlEsSUFBSSxDQUFDQyxLQUFMLENBQVdKLE1BQVgsQ0FBMUI7TUFDRCxDQU5ELE1BTU8sSUFBSW5HLEdBQUosRUFBUztRQUNkc0IsT0FBTyxDQUFDdEIsR0FBUixrQ0FBc0NnRyxjQUF0QztNQUNEO0lBQ0Y7RUFDRjs7RUFFRCxJQUFNUSxZQUF3QyxHQUFHLEVBQWpEOztFQUNBLElBQUkxRyxlQUFlLEdBQUdLLHlCQUFBLENBQWdCc0csUUFBdEMsRUFBZ0Q7SUFBQSw2Q0FDeEJwRyxrQkFBQSxDQUFTcUcsUUFEZTtJQUFBOztJQUFBO01BQzlDLDBEQUF5QztRQUFBLElBQTlCbkcsU0FBOEI7O1FBQ3ZDLElBQUlBLFNBQU8sQ0FBQ0MsWUFBWixFQUEwQjtVQUN4QjtRQUNEOztRQUNELElBQ0VULFdBQVcsS0FBS1UseUJBQUEsQ0FBWUMsR0FBNUIsSUFDQUgsU0FBTyxDQUFDUixXQUFSLEtBQXdCVSx5QkFBQSxDQUFZQyxHQURwQyxJQUVBWCxXQUFXLEtBQUtRLFNBQU8sQ0FBQ1IsV0FIMUIsRUFJRTtVQUNBO1FBQ0Q7O1FBQ0QsSUFBTWlHLGNBQW9CLEdBQUdwRixnQkFBQSxDQUFLQyxJQUFMLENBQzNCaEIsT0FEMkIsRUFFM0JVLFNBQU8sQ0FBQ08sUUFBUixDQUFpQkMsT0FBakIsQ0FBeUIsU0FBekIsRUFBb0MsZUFBcEMsQ0FGMkIsQ0FBN0I7O1FBSUEsSUFBSWYsR0FBSixFQUFTO1VBQ1BzQixPQUFPLENBQUN0QixHQUFSLHlCQUE2QmdHLGNBQTdCO1FBQ0Q7O1FBQ0QsSUFBTUcsTUFBWSxHQUFHM0UsbUJBQUEsQ0FBR0MsWUFBSCxDQUFnQnVFLGNBQWhCLEVBQThCO1VBQUV0RSxRQUFRLEVBQUU7UUFBWixDQUE5QixDQUFyQjs7UUFDQSxJQUFNZ0YsUUFBUSxHQUFHTSxpQkFBQSxDQUFnQmEsVUFBaEIsQ0FBMkIxQixNQUEzQixDQUFqQjs7UUFuQnVDLDZDQW9CakJPLFFBQVEsQ0FBQ0EsUUFwQlE7UUFBQTs7UUFBQTtVQW9CdkMsMERBQXlDO1lBQUEsSUFBOUJLLE9BQThCOztZQUN2QyxJQUFJUCxZQUFZLENBQUNPLE9BQU8sQ0FBQ2pGLEdBQVQsQ0FBWixLQUE4QkMsU0FBbEMsRUFBNkM7Y0FDM0N5RSxZQUFZLENBQUNPLE9BQU8sQ0FBQ2pGLEdBQVQsQ0FBWixHQUE0QmlGLE9BQTVCO1lBQ0Q7VUFDRjtRQXhCc0M7VUFBQTtRQUFBO1VBQUE7UUFBQTtNQXlCeEM7SUExQjZDO01BQUE7SUFBQTtNQUFBO0lBQUE7RUEyQi9DOztFQUVELE9BQU87SUFDTDlHLFdBQVcsRUFBWEEsV0FESztJQUVMNkQsZUFBZSxFQUFmQSxlQUZLO0lBR0xVLGFBQWEsRUFBYkEsYUFISztJQUlMQyxpQ0FBaUMsRUFBakNBLGlDQUpLO0lBS0xDLGlDQUFpQyxFQUFqQ0EsaUNBTEs7SUFNTEMseUJBQXlCLEVBQXpCQSx5QkFOSztJQU9MekUsV0FBVyxFQUFYQSxXQVBLO0lBUUw0RixVQUFVLEVBQVZBLFVBUks7SUFTTHhELFlBQVksRUFBWkEsWUFUSztJQVVMQyxhQUFhLEVBQWJBLGFBVks7SUFXTEMsb0JBQW9CLEVBQXBCQSxvQkFYSztJQVlMZ0UsWUFBWSxFQUFaQTtFQVpLLENBQVA7QUFjRDs7QUFFTSxTQUFTc0IsbUJBQVQsQ0FBNkJDLFlBQTdCLEVBQW1EakcsR0FBbkQsRUFBd0U7RUFDN0UsSUFBTWtHLEtBQUssR0FBR3hJLGdCQUFnQixDQUFDeUksSUFBakIsQ0FBc0JuRyxHQUF0QixDQUFkOztFQUNBb0csa0JBQUEsQ0FBT0MsY0FBUCxDQUNFSCxLQURGLEVBRUUsSUFGRixtREFHNENsRyxHQUg1Qzs7RUFLQSxJQUFNc0csWUFBWSxHQUFHeEgsZ0JBQUEsQ0FBS0MsSUFBTCxDQUFVa0gsWUFBVixFQUF3QkMsS0FBSyxDQUFFLENBQUYsQ0FBN0IsQ0FBckI7O0VBQ0EsSUFBTUssVUFBVSxHQUFHekgsZ0JBQUEsQ0FBS0MsSUFBTCxDQUFVdUgsWUFBVixFQUF3QkosS0FBSyxDQUFFLENBQUYsQ0FBN0IsQ0FBbkI7O0VBQ0EsSUFBTU0sYUFBYSxHQUFHMUgsZ0JBQUEsQ0FBS0MsSUFBTCxDQUFVd0gsVUFBVixFQUFzQkwsS0FBSyxDQUFFLENBQUYsQ0FBM0IsQ0FBdEI7O0VBQ0EsSUFBTU8sY0FBYyxHQUFHM0gsZ0JBQUEsQ0FBS0MsSUFBTCxDQUFVeUgsYUFBVixFQUF5Qk4sS0FBSyxDQUFFLENBQUYsQ0FBOUIsQ0FBdkI7O0VBQ0EsSUFBTVEsT0FBTyxHQUFHNUgsZ0JBQUEsQ0FBS0MsSUFBTCxDQUFVMEgsY0FBVixFQUEwQlAsS0FBSyxDQUFFLENBQUYsQ0FBL0IsQ0FBaEI7O0VBQ0EsSUFBSVMsTUFBTSxHQUFHLFdBQVdULEtBQUssQ0FBRSxDQUFGLENBQTdCO0VBQ0FTLE1BQU0sR0FBR0EsTUFBTSxDQUFDQyxNQUFQLENBQWNELE1BQU0sQ0FBQ3RILE1BQVAsR0FBZ0IsQ0FBOUIsQ0FBVDs7RUFDQSxJQUFNd0gsaUJBQWlCLEdBQUcvSCxnQkFBQSxDQUFLQyxJQUFMLENBQVUySCxPQUFWLEVBQW1CQyxNQUFNLENBQUNDLE1BQVAsQ0FBYyxDQUFkLEVBQWlCLENBQWpCLENBQW5CLENBQTFCOztFQUNBbEgsbUJBQUEsQ0FBR29ILGFBQUgsQ0FBaUJELGlCQUFqQjs7RUFDQSxPQUFPL0gsZ0JBQUEsQ0FBS0MsSUFBTCxDQUFVOEgsaUJBQVYsRUFBNkI3RyxHQUE3QixDQUFQO0FBQ0Q7O0FBRU0sU0FBUytHLCtCQUFULENBQ0xDLFdBREssRUFFTGhILEdBRkssRUFHRztFQUNSLElBQU1rRyxLQUFLLEdBQUd2SSxlQUFlLENBQUN3SSxJQUFoQixDQUFxQm5HLEdBQXJCLENBQWQ7O0VBQ0FvRyxrQkFBQSxDQUFPQyxjQUFQLENBQ0VILEtBREYsRUFFRSxJQUZGLGdFQUd5RGxHLEdBSHpEOztFQUtBLElBQU13RyxhQUFhLEdBQUcxSCxnQkFBQSxDQUFLQyxJQUFMLENBQVVpSSxXQUFWLEVBQXVCZCxLQUFLLENBQUUsQ0FBRixDQUE1QixDQUF0Qjs7RUFDQSxJQUFNTyxjQUFjLEdBQUczSCxnQkFBQSxDQUFLQyxJQUFMLENBQVV5SCxhQUFWLEVBQXlCTixLQUFLLENBQUUsQ0FBRixDQUE5QixDQUF2Qjs7RUFDQSxJQUFJUyxNQUFNLEdBQUcsV0FBV1QsS0FBSyxDQUFFLENBQUYsQ0FBN0I7RUFDQVMsTUFBTSxHQUFHQSxNQUFNLENBQUNDLE1BQVAsQ0FBY0QsTUFBTSxDQUFDdEgsTUFBUCxHQUFnQixDQUE5QixDQUFUOztFQUNBLElBQU13SCxpQkFBaUIsR0FBRy9ILGdCQUFBLENBQUtDLElBQUwsQ0FBVTBILGNBQVYsRUFBMEJFLE1BQU0sQ0FBQ0MsTUFBUCxDQUFjLENBQWQsRUFBaUIsQ0FBakIsQ0FBMUIsQ0FBMUI7O0VBQ0FsSCxtQkFBQSxDQUFHb0gsYUFBSCxDQUFpQkQsaUJBQWpCOztFQUNBLE9BQU8vSCxnQkFBQSxDQUFLQyxJQUFMLENBQVU4SCxpQkFBVixFQUE2QjdHLEdBQTdCLENBQVA7QUFDRDs7QUFFTSxTQUFTaUgsa0JBQVQsQ0FBNEJDLFdBQTVCLEVBQWlEbEgsR0FBakQsRUFBc0U7RUFDM0UsSUFBTWtHLEtBQUssR0FBR3RJLGVBQWUsQ0FBQ3VJLElBQWhCLENBQXFCbkcsR0FBckIsQ0FBZDs7RUFDQW9HLGtCQUFBLENBQU9DLGNBQVAsQ0FDRUgsS0FERixFQUVFLElBRkYsa0RBRzJDbEcsR0FIM0M7O0VBS0EsSUFBTXVHLFVBQVUsR0FBR3pILGdCQUFBLENBQUtDLElBQUwsQ0FBVW1JLFdBQVYsRUFBdUJoQixLQUFLLENBQUUsQ0FBRixDQUE1QixDQUFuQjs7RUFDQSxJQUFNTSxhQUFhLEdBQUcxSCxnQkFBQSxDQUFLQyxJQUFMLENBQVV3SCxVQUFWLEVBQXNCTCxLQUFLLENBQUUsQ0FBRixDQUEzQixDQUF0Qjs7RUFDQSxJQUFNTyxjQUFjLEdBQUczSCxnQkFBQSxDQUFLQyxJQUFMLENBQVV5SCxhQUFWLEVBQXlCTixLQUFLLENBQUUsQ0FBRixDQUE5QixDQUF2Qjs7RUFDQSxJQUFNaUIsVUFBVSxHQUFHckksZ0JBQUEsQ0FBS0MsSUFBTCxDQUFVMEgsY0FBVixFQUEwQlAsS0FBSyxDQUFFLENBQUYsQ0FBL0IsQ0FBbkI7O0VBQ0EsSUFBTWtCLEtBQUssR0FBR3RJLGdCQUFBLENBQUtDLElBQUwsQ0FBVW9JLFVBQVYsRUFBc0JqQixLQUFLLENBQUUsQ0FBRixDQUEzQixDQUFkOztFQUNBLElBQUlTLE1BQU0sR0FBRyxjQUFjVCxLQUFLLENBQUUsQ0FBRixDQUFoQztFQUNBUyxNQUFNLEdBQUdBLE1BQU0sQ0FBQ0MsTUFBUCxDQUFjRCxNQUFNLENBQUN0SCxNQUFQLEdBQWdCLENBQTlCLENBQVQ7O0VBQ0EsSUFBTWdJLGlCQUFpQixHQUFHdkksZ0JBQUEsQ0FBS0MsSUFBTCxDQUFVcUksS0FBVixFQUFpQlQsTUFBTSxDQUFDQyxNQUFQLENBQWMsQ0FBZCxFQUFpQixDQUFqQixDQUFqQixDQUExQjs7RUFDQSxJQUFNQyxpQkFBaUIsR0FBRy9ILGdCQUFBLENBQUtDLElBQUwsQ0FBVXNJLGlCQUFWLEVBQTZCVixNQUFNLENBQUNDLE1BQVAsQ0FBYyxDQUFkLEVBQWlCLENBQWpCLENBQTdCLENBQTFCOztFQUNBbEgsbUJBQUEsQ0FBR29ILGFBQUgsQ0FBaUJELGlCQUFqQjs7RUFDQSxPQUFPL0gsZ0JBQUEsQ0FBS0MsSUFBTCxDQUFVOEgsaUJBQVYsRUFBNkI3RyxHQUE3QixDQUFQO0FBQ0Q7O0FBRU0sU0FBU3NILGtCQUFULENBQTRCQyxXQUE1QixFQUFpRHZILEdBQWpELEVBQXNFO0VBQzNFLElBQU1rRyxLQUFLLEdBQUdySSxlQUFlLENBQUNzSSxJQUFoQixDQUFxQm5HLEdBQXJCLENBQWQ7O0VBQ0FvRyxrQkFBQSxDQUFPQyxjQUFQLENBQ0VILEtBREYsRUFFRSxJQUZGLGtEQUcyQ2xHLEdBSDNDOztFQUtBLElBQU13RyxhQUFhLEdBQUcxSCxnQkFBQSxDQUFLQyxJQUFMLENBQVV3SSxXQUFWLEVBQXVCckIsS0FBSyxDQUFFLENBQUYsQ0FBNUIsQ0FBdEI7O0VBQ0EsSUFBTU8sY0FBYyxHQUFHM0gsZ0JBQUEsQ0FBS0MsSUFBTCxDQUFVeUgsYUFBVixFQUF5Qk4sS0FBSyxDQUFFLENBQUYsQ0FBOUIsQ0FBdkI7O0VBQ0EsSUFBSVMsTUFBTSxHQUFHLFdBQVdULEtBQUssQ0FBRSxDQUFGLENBQTdCO0VBQ0FTLE1BQU0sR0FBR0EsTUFBTSxDQUFDQyxNQUFQLENBQWNELE1BQU0sQ0FBQ3RILE1BQVAsR0FBZ0IsQ0FBOUIsQ0FBVDs7RUFDQSxJQUFNd0gsaUJBQWlCLEdBQUcvSCxnQkFBQSxDQUFLQyxJQUFMLENBQVUwSCxjQUFWLEVBQTBCRSxNQUFNLENBQUNDLE1BQVAsQ0FBYyxDQUFkLEVBQWlCLENBQWpCLENBQTFCLENBQTFCOztFQUNBbEgsbUJBQUEsQ0FBR29ILGFBQUgsQ0FBaUJELGlCQUFqQjs7RUFDQSxPQUFPL0gsZ0JBQUEsQ0FBS0MsSUFBTCxDQUFVOEgsaUJBQVYsRUFBNkI3RyxHQUE3QixDQUFQO0FBQ0QifQ==
|