@carto/kepler.gl 0.0.51 → 0.0.52-alpha.markers.1
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.
|
@@ -134,7 +134,7 @@ var KEPLER_GL_NAME = 'kepler.gl'; // __PACKAGE_VERSION__ is automatically inject
|
|
|
134
134
|
// an empty string which will allow us to retrieve the latest umd version
|
|
135
135
|
|
|
136
136
|
exports.KEPLER_GL_NAME = KEPLER_GL_NAME;
|
|
137
|
-
var KEPLER_GL_VERSION = "0.0.
|
|
137
|
+
var KEPLER_GL_VERSION = "0.0.52-alpha.markers.1";
|
|
138
138
|
exports.KEPLER_GL_VERSION = KEPLER_GL_VERSION;
|
|
139
139
|
var KEPLER_GL_WEBSITE = 'http://kepler.gl/';
|
|
140
140
|
exports.KEPLER_GL_WEBSITE = KEPLER_GL_WEBSITE;
|
|
@@ -887,4 +887,4 @@ var ZOOM_LEVEL_LIMITS = {
|
|
|
887
887
|
max: 21
|
|
888
888
|
};
|
|
889
889
|
exports.ZOOM_LEVEL_LIMITS = ZOOM_LEVEL_LIMITS;
|
|
890
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb25zdGFudHMvZGVmYXVsdC1zZXR0aW5ncy5qcyJdLCJuYW1lcyI6WyJBQ1RJT05fUFJFRklYIiwiQ0xPVURGUk9OVCIsIklDT05fUFJFRklYIiwiREVGQVVMVF9NQVBCT1hfQVBJX1VSTCIsIkRBVEFfVEFCTEVfSUQiLCJERUxFVEVfREFUQV9JRCIsIkFERF9EQVRBX0lEIiwiRVhQT1JUX0lNQUdFX0lEIiwiRVhQT1JUX0RBVEFfSUQiLCJBRERfTUFQX1NUWUxFX0lEIiwiRVhQT1JUX01BUF9JRCIsIlNBVkVfTUFQX0lEIiwiT1ZFUldSSVRFX01BUF9JRCIsIlNIQVJFX01BUF9JRCIsIktFUExFUl9HTF9OQU1FIiwiS0VQTEVSX0dMX1ZFUlNJT04iLCJLRVBMRVJfR0xfV0VCU0lURSIsIkRJTUVOU0lPTlMiLCJzaWRlUGFuZWwiLCJ3aWR0aCIsIm1hcmdpbiIsInRvcCIsImxlZnQiLCJib3R0b20iLCJyaWdodCIsImhlYWRlckhlaWdodCIsIm1hcENvbnRyb2wiLCJwYWRkaW5nIiwiVEhFTUUiLCJsaWdodCIsImRhcmsiLCJiYXNlIiwiU0lERUJBUl9QQU5FTFMiLCJpZCIsImxhYmVsIiwiaWNvbkNvbXBvbmVudCIsIkxheWVycyIsIm9uQ2xpY2siLCJGaWx0ZXJGdW5uZWwiLCJDdXJzb3JDbGljayIsIlNldHRpbmdzIiwiUEFORUxTIiwiREVGQVVMVF9MQVlFUl9HUk9VUFMiLCJzbHVnIiwiZmlsdGVyIiwibWF0Y2giLCJkZWZhdWx0VmlzaWJpbGl0eSIsIkRFRkFVTFRfTUFQX1NUWUxFUyIsInVybCIsImljb24iLCJsYXllckdyb3VwcyIsIkdFT0pTT05fRklFTERTIiwiZ2VvanNvbiIsIklDT05fRklFTERTIiwiVFJJUF9QT0lOVF9GSUVMRFMiLCJUUklQX0FSQ19GSUVMRFMiLCJsYXQwIiwibG5nMCIsImxhdDEiLCJsbmcxIiwiRklMVEVSX1RZUEVTIiwicmFuZ2UiLCJzZWxlY3QiLCJpbnB1dCIsInRpbWVSYW5nZSIsIm11bHRpU2VsZWN0IiwicG9seWdvbiIsIlNDQUxFX1RZUEVTIiwib3JkaW5hbCIsInF1YW50aWxlIiwicXVhbnRpemUiLCJsaW5lYXIiLCJzcXJ0IiwibG9nIiwicG9pbnQiLCJjdXN0b20iLCJTQ0FMRV9GVU5DIiwic2NhbGVMaW5lYXIiLCJzY2FsZVF1YW50aXplIiwic2NhbGVRdWFudGlsZSIsInNjYWxlT3JkaW5hbCIsInNjYWxlU3FydCIsInNjYWxlTG9nIiwic2NhbGVQb2ludCIsInNjYWxlVGhyZXNob2xkIiwiQUxMX0ZJRUxEX1RZUEVTIiwiZGF0ZSIsImludGVnZXIiLCJyZWFsIiwic3RyaW5nIiwidGltZXN0YW1wIiwiU09SVF9PUkRFUiIsIkFTQ0VORElORyIsIkRFU0NFTkRJTkciLCJVTlNPUlQiLCJUQUJMRV9PUFRJT04iLCJTT1JUX0FTQyIsIlNPUlRfREVTIiwiUElOIiwiVU5QSU4iLCJDT1BZIiwiVEFCTEVfT1BUSU9OX0xJU1QiLCJ2YWx1ZSIsImRpc3BsYXkiLCJBcnJvd1VwIiwiY29uZGl0aW9uIiwicHJvcHMiLCJzb3J0TW9kZSIsIkFycm93RG93biIsIkNhbmNlbCIsImlzU29ydGVkIiwiUGluIiwiaXNQaW5uZWQiLCJDbGlwYm9hcmQiLCJPUkFOR0UiLCJQSU5LIiwiUFVSUExFIiwiQkxVRSIsIkJMVUUyIiwiQkxVRTMiLCJHUkVFTiIsIlJFRCIsIkZJTEVEX1RZUEVfRElTUExBWSIsImNvbG9yIiwiRklFTERfQ09MT1JTIiwiSElHSExJR0hfQ09MT1JfM0QiLCJDSEFOTkVMX1NDQUxFUyIsInJhZGl1cyIsInNpemUiLCJjdXN0b21NYXJrZXIiLCJjb2xvckFnZ3IiLCJzaXplQWdnciIsImlkZW50aXR5IiwiQUdHUkVHQVRJT05fVFlQRVMiLCJjb3VudCIsImF2ZXJhZ2UiLCJtYXhpbXVtIiwibWluaW11bSIsIm1lZGlhbiIsInN0ZGV2Iiwic3VtIiwidmFyaWFuY2UiLCJtb2RlIiwiY291bnRVbmlxdWUiLCJGSUVMRF9UWVBFU19BR0dSRUdBVE9SUyIsIkZJRUxEX0FHR1JFR0FUT1JTIiwiZGlzcGxheU5hbWUiLCJsaW5lYXJGaWVsZFNjYWxlRnVuY3Rpb25zIiwibGluZWFyRmllbGRBZ2dyU2NhbGVGdW5jdGlvbnMiLCJvcmRpbmFsRmllbGRTY2FsZUZ1bmN0aW9ucyIsIm9yZGluYWxGaWVsZEFnZ3JTY2FsZUZ1bmN0aW9ucyIsIm5vdFN1cHBvcnRlZFNjYWxlT3B0cyIsIm5vdFN1cHBvcnRBZ2dyT3B0cyIsIkRFRkFVTFRfQUdHUkVHQVRJT04iLCJGSUVMRF9PUFRTIiwidHlwZSIsInNjYWxlIiwiZm9ybWF0IiwibGVnZW5kIiwiZCIsInRvb2x0aXAiLCJUT09MVElQX0ZPUk1BVF9UWVBFUyIsIk5PTkUiLCJERUNJTUFMIiwiUEVSQ0VOVEFHRSIsIkRBVEUiLCJEQVRFX1RJTUUiLCJCT09MRUFOIiwiQ0hBTk5FTF9TQ0FMRV9TVVBQT1JURURfRklFTERTIiwiT2JqZWN0Iiwia2V5cyIsInJlZHVjZSIsImFjY3UiLCJrZXkiLCJmdCIsImxlbmd0aCIsIkRFRkFVTFRfTEFZRVJfQ09MT1IiLCJ0cmlwQXJjIiwiYmVnaW50cmlwX2xhdCIsImRyb3BvZmZfbGF0IiwicmVxdWVzdF9sYXQiLCJERUZBVUxUX1RPT0xUSVBfRklFTERTIiwiTk9fVkFMVUVfQ09MT1IiLCJVTktOT1dOX0NPTE9SIiwiTEFZRVJfQkxFTkRJTkdTIiwiYWRkaXRpdmUiLCJibGVuZEZ1bmMiLCJibGVuZEVxdWF0aW9uIiwibm9ybWFsIiwic3VidHJhY3RpdmUiLCJNQVhfREVGQVVMVF9UT09MVElQUyIsIlJFU09MVVRJT05TIiwiT05FX1giLCJUV09fWCIsIkVYUE9SVF9JTUdfUkFUSU9TIiwiU0NSRUVOIiwiRk9VUl9CWV9USFJFRSIsIlNJWFRFRU5fQllfTklORSIsIkNVU1RPTSIsIkVYUE9SVF9JTUdfUkFUSU9fT1BUSU9OUyIsImdldFNpemUiLCJzY3JlZW5XIiwic2NyZWVuSCIsImhlaWdodCIsImhpZGRlbiIsIm1hcFciLCJtYXBIIiwiTWF0aCIsInJvdW5kIiwiRVhQT1JUX0lNR19SRVNPTFVUSU9OX09QVElPTlMiLCJhdmFpbGFibGUiLCJFWFBPUlRfREFUQV9UWVBFIiwiQ1NWIiwiRVhQT1JUX0RBVEFfVFlQRV9PUFRJT05TIiwidG9Mb3dlckNhc2UiLCJFWFBPUlRfTUFQX0ZPUk1BVFMiLCJIVE1MIiwiSlNPTiIsIkVYUE9SVF9IVE1MX01BUF9NT0RFUyIsIlJFQUQiLCJFRElUIiwiRVhQT1JUX01BUF9GT1JNQVRfT1BUSU9OUyIsImVudHJpZXMiLCJtYXAiLCJlbnRyeSIsIkVYUE9SVF9IVE1MX01BUF9NT0RFX09QVElPTlMiLCJERUZBVUxUX1VVSURfQ09VTlQiLCJERUZBVUxUX05PVElGSUNBVElPTl9NRVNTQUdFIiwiREVGQVVMVF9OT1RJRklDQVRJT05fVFlQRVMiLCJpbmZvIiwiZXJyb3IiLCJ3YXJuaW5nIiwic3VjY2VzcyIsIkRFRkFVTFRfTk9USUZJQ0FUSU9OX1RPUElDUyIsImdsb2JhbCIsImZpbGUiLCJUSFJPVFRMRV9OT1RJRklDQVRJT05fVElNRSIsIkJBU0VfU1BFRUQiLCJGUFMiLCJBTklNQVRJT05fV0lORE9XIiwiZnJlZSIsImluY3JlbWVudGFsIiwiaW50ZXJ2YWwiLCJERUZBVUxUX1RJTUVfRk9STUFUIiwiU1BFRURfQ09OVFJPTF9SQU5HRSIsIlNQRUVEX0NPTlRST0xfU1RFUCIsIkdFT0NPREVSX0RBVEFTRVRfTkFNRSIsIkdFT0NPREVSX0xBWUVSX0lEIiwiR0VPQ09ERVJfR0VPX09GRlNFVCIsIkdFT0NPREVSX0lDT05fQ09MT1IiLCJHRU9DT0RFUl9JQ09OX1NJWkUiLCJFRElUT1JfTU9ERVMiLCJSRUFEX09OTFkiLCJFZGl0b3JNb2RlcyIsIkRSQVdfUE9MWUdPTiIsIkRSQVdfUkVDVEFOR0xFIiwiRURJVF9WRVJURVgiLCJFRElUT1JfQVZBSUxBQkxFX0xBWUVSUyIsIkxBWUVSX1RZUEVTIiwiaGV4YWdvbiIsImFyYyIsImxpbmUiLCJoZXhhZ29uSWQiLCJNQVhfR1BVX0ZJTFRFUlMiLCJNQVBfVEhVTUJOQUlMX0RJTUVOU0lPTiIsIk1BUF9JTkZPX0NIQVJBQ1RFUiIsInRpdGxlIiwiZGVzY3JpcHRpb24iLCJMT0FESU5HX01FVEhPRFMiLCJ1cGxvYWQiLCJzdG9yYWdlIiwiREFUQVNFVF9GT1JNQVRTIiwicm93IiwiY3N2Iiwia2VwbGVyZ2wiLCJNQVBfQ09OVFJPTFMiLCJ2aXNpYmxlTGF5ZXJzIiwibWFwTGVnZW5kIiwidG9nZ2xlM2QiLCJzcGxpdE1hcCIsIm1hcERyYXciLCJtYXBMb2NhbGUiLCJNQVNLX0xBWUVSX0lEIiwiWk9PTV9MRVZFTF9MSU1JVFMiLCJtaW4iLCJtYXgiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBb0JBOztBQUNBOztBQUVBOztBQVVBOztBQVdBOztBQUNBOztBQUNBOzs7Ozs7OztBQUVPLElBQU1BLGFBQWEsR0FBRyxjQUF0Qjs7QUFDQSxJQUFNQyxVQUFVLEdBQUcsaURBQW5COztBQUNBLElBQU1DLFdBQVcsYUFBTUQsVUFBTixhQUFqQjs7QUFDQSxJQUFNRSxzQkFBc0IsR0FBRyx3QkFBL0IsQyxDQUVQOztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ08sSUFBTUMsYUFBYSxHQUFHLFdBQXRCO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDTyxJQUFNQyxjQUFjLEdBQUcsWUFBdkI7QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUNPLElBQU1DLFdBQVcsR0FBRyxTQUFwQjtBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ08sSUFBTUMsZUFBZSxHQUFHLGFBQXhCO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDTyxJQUFNQyxjQUFjLEdBQUcsWUFBdkI7QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUNPLElBQU1DLGdCQUFnQixHQUFHLGFBQXpCO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDTyxJQUFNQyxhQUFhLEdBQUcsV0FBdEI7QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUNPLElBQU1D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QUNPLElBQU1DLGVBQWUsR0FBRywyQkFBVTtBQUN2Q0MsRUFBQUEsTUFBTSxFQUFFLElBRCtCO0FBRXZDQyxFQUFBQSxPQUFPLEVBQUU7QUFGOEIsQ0FBVixDQUF4Qjs7QUFLQSxJQUFNQyxlQUFlLEdBQUcsMkJBQVU7QUFDdkNDLEVBQUFBLEdBQUcsRUFBRSxJQURrQztBQUV2QzVOLEVBQUFBLE9BQU8sRUFBRSxJQUY4QjtBQUd2QzZOLEVBQUFBLEdBQUcsRUFBRSxJQUhrQztBQUl2Q0MsRUFBQUEsUUFBUSxFQUFFO0FBSjZCLENBQVYsQ0FBeEI7O0FBT0EsSUFBTUMsWUFBWSxHQUFHLDJCQUFVO0FBQ3BDQyxFQUFBQSxhQUFhLEVBQUUsSUFEcUI7QUFFcENDLEVBQUFBLFNBQVMsRUFBRSxJQUZ5QjtBQUdwQ0MsRUFBQUEsUUFBUSxFQUFFLElBSDBCO0FBSXBDQyxFQUFBQSxRQUFRLEVBQUUsSUFKMEI7QUFLcENDLEVBQUFBLE9BQU8sRUFBRSxJQUwyQjtBQU1wQ0MsRUFBQUEsU0FBUyxFQUFFO0FBTnlCLENBQVYsQ0FBckI7O0FBU0EsSUFBTUMsYUFBYSxHQUFHLFlBQXRCOztBQUVBLElBQU1DLGlCQUFpQixHQUFHO0FBQy9CQyxFQUFBQSxHQUFHLEVBQUUsQ0FEMEI7QUFFL0JDLEVBQUFBLEdBQUcsRUFBRTtBQUYwQixDQUExQiIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAoYykgMjAyMiBVYmVyIFRlY2hub2xvZ2llcywgSW5jLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbi8vIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbi8vIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbi8vIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbi8vIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuLy8gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpblxuLy8gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuLy8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4vLyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbi8vIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbi8vIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4vLyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOXG4vLyBUSEUgU09GVFdBUkUuXG5cbmltcG9ydCBrZXlNaXJyb3IgZnJvbSAna2V5bWlycm9yJztcbmltcG9ydCB7RWRpdG9yTW9kZXN9IGZyb20gJ3JlYWN0LW1hcC1nbC1kcmF3JztcblxuaW1wb3J0IHtcbiAgc2NhbGVMaW5lYXIsXG4gIHNjYWxlUXVhbnRpemUsXG4gIHNjYWxlUXVhbnRpbGUsXG4gIHNjYWxlT3JkaW5hbCxcbiAgc2NhbGVTcXJ0LFxuICBzY2FsZUxvZyxcbiAgc2NhbGVQb2ludCxcbiAgc2NhbGVUaHJlc2hvbGRcbn0gZnJvbSAnZDMtc2NhbGUnO1xuaW1wb3J0IHtcbiAgTGF5ZXJzLFxuICBGaWx0ZXJGdW5uZWwsXG4gIFNldHRpbmdzLFxuICBDdXJzb3JDbGljayxcbiAgUGluLFxuICBBcnJvd0Rvd24sXG4gIEFycm93VXAsXG4gIENsaXBib2FyZCxcbiAgQ2FuY2VsXG59IGZyb20gJ2NvbXBvbmVudHMvY29tbW9uL2ljb25zJztcbmltcG9ydCB7Z2V0SFRNTE1hcE1vZGVUaWxlVXJsfSBmcm9tICd1dGlscy91dGlscyc7XG5pbXBvcnQge1RPT0xUSVBfRk9STUFUX1RZUEVTfSBmcm9tICcuL3Rvb2x0aXAnO1xuaW1wb3J0IHtMQVlFUl9UWVBFU30gZnJvbSAnbGF5ZXJzL3R5cGVzJztcblxuZXhwb3J0IGNvbnN0IEFDVElPTl9QUkVGSVggPSAnQEBrZXBsZXIuZ2wvJztcbmV4cG9ydCBjb25zdCBDTE9VREZST05UID0gJ2h0dHBzOi8vZDFhM2Y0c3BhenpycDQuY2xvdWRmcm9udC5uZXQva2VwbGVyLmdsJztcbmV4cG9ydCBjb25zdCBJQ09OX1BSRUZJWCA9IGAke0NMT1VERlJPTlR9L2dlb2R1ZGVgO1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfTUFQQk9YX0FQSV9VUkwgPSAnaHR0cHM6Ly9hcGkubWFwYm94LmNvbSc7XG5cbi8vIE1vZGFsIElkc1xuLyoqXG4gKiBNb2RhbCBpZDogZGF0YSB0YWJsZVxuICogQGNvbnN0YW50XG4gKiBAdHlwZSB7c3RyaW5nfVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgREFUQV9UQUJMRV9JRCA9ICdkYXRhVGFibGUnO1xuLyoqXG4gKiBNb2RhbCBpZDogZGVsZXRlIGRhdGFzZXQgY29uZmlybSBkaWFsb2dcbiAqIEBjb25zdGFudFxuICogQHR5cGUge3N0cmluZ31cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IERFTEVURV9EQVRBX0lEID0gJ2RlbGV0ZURhdGEnO1xuLyoqXG4gKiBNb2RhbCBpZDogYWRkIGRhdGEgbW9kYWxcbiAqIEBjb25zdGFudFxuICogQHR5cGUge3N0cmluZ31cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IEFERF9EQVRBX0lEID0gJ2FkZERhdGEnO1xuLyoqXG4gKiBNb2RhbCBpZDogZXhwb3J0IGltYWdlIG1vZGFsXG4gKiBAY29uc3RhbnRcbiAqIEB0eXBlIHtzdHJpbmd9XG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBFWFBPUlRfSU1BR0VfSUQgPSAnZXhwb3J0SW1hZ2UnO1xuLyoqXG4gKiBNb2RhbCBpZDogZXhwb3J0IGRhdGEgbW9kYWxcbiAqIEBjb25zdGFudFxuICogQHR5cGUge3N0cmluZ31cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IEVYUE9SVF9EQVRBX0lEID0gJ2V4cG9ydERhdGEnO1xuLyoqXG4gKiBNb2RhbCBpZDogYWRkIGN1c3RvbSBtYXAgc3R5bGUgbW9kYWxcbiAqIEBjb25zdGFudFxuICogQHR5cGUge3N0cmluZ31cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IEFERF9NQVBfU1RZTEVfSUQgPSAnYWRkTWFwU3R5bGUnO1xuLyoqXG4gKiBNb2RhbCBpZDogZXhwb3J0IG1hcCBtb2RhbFxuICogQGNvbnN0YW50XG4gKiBAdHlwZSB7c3RyaW5nfVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgRVhQT1JUX01BUF9JRCA9ICdleHBvcnRNYXAnO1xuLyoqXG4gKiBNb2RhbCBpZDogc2F2ZSBtYXAgbW9kYWxcbiAqIEBjb25zdGFudFxuICogQHR5cGUge3N0cmluZ31cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IFNBVkVfTUFQX0lEID0gJ3NhdmVNYXAnO1xuLyoqXG4gKiBNb2RhbCBpZDogY29uZmlybSB0byBvdmVyd3JpdGUgc2F2ZWQgbWFwXG4gKiBAY29uc3RhbnRcbiAqIEB0eXBlIHtzdHJpbmd9XG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBPVkVSV1JJVEVfTUFQX0lEID0gJ292ZXJ3cml0ZU1hcCc7XG4vKipcbiAqIE1vZGFsIGlkOiBzaGFyZSBtYXAgdXJsIG1vZGFsXG4gKiBAY29uc3RhbnRcbiAqIEB0eXBlIHtzdHJpbmd9XG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBTSEFSRV9NQVBfSUQgPSAnc2hhcmVNYXAnO1xuXG5leHBvcnQgY29uc3QgS0VQTEVSX0dMX05BTUUgPSAna2VwbGVyLmdsJztcblxuLy8gX19QQUNLQUdFX1ZFUlNJT05fXyBpcyBhdXRvbWF0aWNhbGx5IGluamVjdGVkIGJ5IEJhYmVsL1dlYnBhY2sgZHVyaW5nIHRoZSBidWlsZGluZyBwcm9jZXNzXG4vLyBTaW5jZSB3ZSBhcmUgaW5qZWN0aW5nIHRoaXMgZHVyaW5nIHRoZSBidWlsZCBwcm9jZXNzIHdpdGggYmFiZWxcbi8vIHdoaWxlIGRldmVsb3BpbmcgVkVSU0lPTiBpcyBub3QgZGVmaW5lZCwgd2UgY2FwdHVyZSB0aGUgZXhjZXB0aW9uIGFuZCByZXR1cm5cbi8vIGFuIGVtcHR5IHN0cmluZyB3aGljaCB3aWxsIGFsbG93IHVzIHRvIHJldHJpZXZlIHRoZSBsYXRlc3QgdW1kIHZlcnNpb25cbmV4cG9ydCBjb25zdCBLRVBMRVJfR0xfVkVSU0lPTiA9ICdfX1BBQ0tBR0VfVkVSU0lPTl9fJztcbmV4cG9ydCBjb25zdCBLRVBMRVJfR0xfV0VCU0lURSA9ICdodHRwOi8va2VwbGVyLmdsLyc7XG5cbmV4cG9ydCBjb25zdCBESU1FTlNJT05TID0ge1xuICBzaWRlUGFuZWw6IHtcbiAgICB3aWR0aDogMzAwLFxuICAgIG1hcmdpbjoge3RvcDogMjAsIGxlZnQ6IDIwLCBib3R0b206IDMwLCByaWdodDogMjB9LFxuICAgIGhlYWRlckhlaWdodDogOTZcbiAgfSxcbiAgbWFwQ29udHJvbDoge1xuICAgIHdpZHRoOiAxODQsXG4gICAgcGFkZGluZzogMTJcbiAgfVxufTtcblxuLyoqXG4gKiBUaGVtZSBuYW1lIHRoYXQgY2FuIGJlIHBhc3NlZCB0byBgS2VwbGVyR2xgIGBwcm9wLnRoZW1lYC5cbiAqIEF2YWlsYWJsZSB0aGVtZXMgYXJlIGBUSEVNRS5saWdodGAgYW5kIGBUSEVNRS5kYXJrYC4gRGVmYXVsdCB0aGVtZSBpcyBgVEhFTUUuZGFya2BcbiAqIEBjb25zdGFudFxuICogQHR5cGUge29iamVjdH1cbiAqIEBwdWJsaWNcbiAqIEBleGFtcGxlXG4gKiBgYGBqc1xuICogY29uc3QgTWFwID0gKCkgPT4gPEtlcGxlckdsIHRoZW1lPXtUSEVNRS5saWdodH0gaWQ9XCJtYXBcIi8+XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGNvbnN0IFRIRU1FID0ga2V5TWlycm9yKHtcbiAgbGlnaHQ6IG51bGwsXG4gIGRhcms6IG51bGwsXG4gIGJhc2U6IG51bGxcbn0pO1xuXG5leHBvcnQgY29uc3QgU0lERUJBUl9QQU5FTFMgPSBbXG4gIHtcbiAgICBpZDogJ2xheWVyJyxcbiAgICBsYWJlbDogJ3NpZGViYXIucGFuZWxzLmxheWVyJyxcbiAgICBpY29uQ29tcG9uZW50OiBMYXllcnMsXG4gICAgb25DbGljazogbnVsbFxuICB9LFxuICB7XG4gICAgaWQ6ICdmaWx0ZXInLFxuICAgIGxhYmVsOiAnc2lkZWJhci5wYW5lbHMuZmlsdGVyJyxcbiAgICBpY29uQ29tcG9uZW50OiBGaWx0ZXJGdW5uZWwsXG4gICAgb25DbGljazogbnVsbFxuICB9LFxuICB7XG4gICAgaWQ6ICdpbnRlcmFjdGlvbicsXG4gICAgbGFiZWw6ICdzaWRlYmFyLnBhbmVscy5pbnRlcmFjdGlvbicsXG4gICAgaWNvbkNvbXBvbmVudDogQ3Vyc29yQ2xpY2ssXG4gICAgb25DbGljazogbnVsbFxuICB9LFxuICB7XG4gICAgaWQ6ICdtYXAnLFxuICAgIGxhYmVsOiAnc2lkZWJhci5wYW5lbHMuYmFzZW1hcCcsXG4gICAgaWNvbkNvbXBvbmVudDogU2V0dGluZ3MsXG4gICAgb25DbGljazogbnVsbFxuICB9XG5dO1xuXG4vLyBiYWNrd2FyZCBjb21wYXRpYmlsaXR5XG5leHBvcnQgY29uc3QgUEFORUxTID0gU0lERUJBUl9QQU5FTFM7XG5cbi8vIE1BUCBTVFlMRVNcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfTEFZRVJfR1JPVVBTID0gW1xuICB7XG4gICAgc2x1ZzogJ2xhYmVsJyxcbiAgICBmaWx0ZXI6ICh7aWR9KSA9PiBpZC5tYXRjaCgvKD89KGxhYmVsfHBsYWNlLXxwb2ktKSkvKSxcbiAgICBkZWZhdWx0VmlzaWJpbGl0eTogdHJ1ZVxuICB9LFxuICB7XG4gICAgc2x1ZzogJ3JvYWQnLFxuICAgIGZpbHRlcjogKHtpZH0pID0+IGlkLm1hdGNoKC8oPz0ocm9hZHxyYWlsd2F5fHR1bm5lbHxzdHJlZXR8YnJpZGdlKSkoPyEuKmxhYmVsKS8pLFxuICAgIGRlZmF1bHRWaXNpYmlsaXR5OiB0cnVlXG4gIH0sXG4gIHtcbiAgICBzbHVnOiAnYm9yZGVyJyxcbiAgICBmaWx0ZXI6ICh7aWR9KSA9PiBpZC5tYXRjaCgvYm9yZGVyfGJvdW5kYXJpZXMvKSxcbiAgICBkZWZhdWx0VmlzaWJpbGl0eTogZmFsc2VcbiAgfSxcbiAge1xuICAgIHNsdWc6ICdidWlsZGluZycsXG4gICAgZmlsdGVyOiAoe2lkfSkgPT4gaWQubWF0Y2goL2J1aWxkaW5nLyksXG4gICAgZGVmYXVsdFZpc2liaWxpdHk6IHRydWVcbiAgfSxcbiAge1xuICAgIHNsdWc6ICd3YXRlcicsXG4gICAgZmlsdGVyOiAoe2lkfSkgPT4gaWQubWF0Y2goLyg/PSh3YXRlcnxzdHJlYW18ZmVycnkpKS8pLFxuICAgIGRlZmF1bHRWaXNpYmlsaXR5OiB0cnVlXG4gIH0sXG4gIHtcbiAgICBzbHVnOiAnbGFuZCcsXG4gICAgZmlsdGVyOiAoe2lkfSkgPT4gaWQubWF0Y2goLyg/PShwYXJrc3xsYW5kY292ZXJ8aW5kdXN0cmlhbHxzYW5kfGhpbGxzaGFkZSkpLyksXG4gICAgZGVmYXVsdFZpc2liaWxpdHk6IHRydWVcbiAgfSxcbiAge1xuICAgIHNsdWc6ICczZCBidWlsZGluZycsXG4gICAgZmlsdGVyOiAoKSA9PiBmYWxzZSxcbiAgICBkZWZhdWx0VmlzaWJpbGl0eTogZmFsc2VcbiAgfVxuXTtcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfTUFQX1NUWUxFUyA9IFtcbiAge1xuICAgIGlkOiAnZGFyaycsXG4gICAgbGFiZWw6ICdEYXJrJyxcbiAgICB1cmw6ICdtYXBib3g6Ly9zdHlsZXMvdWJlcmRhdGEvY2pvcWJiZjZsOWszMDJzbDk2dHl2a2EwOScsXG4gICAgaWNvbjogYCR7SUNPTl9QUkVGSVh9L1VCRVJfREFSS19WMi5wbmdgLFxuICAgIGxheWVyR3JvdXBzOiBERUZBVUxUX0xBWUVSX0dST1VQU1xuICB9LFxuICB7XG4gICAgaWQ6ICdsaWdodCcsXG4gICAgbGFiZWw6ICdMaWdodCcsXG4gICAgdXJsOiAnbWFwYm94Oi8vc3R5bGVzL3ViZXJkYXRhL2Nqb3FiOWozMzlrMWYyc2w5dDVpYzVibjQnLFxuICAgIGljb246IGAke0lDT05fUFJFRklYfS9VQkVSX0xJR0hUX1YyLnBuZ2AsXG4gICAgbGF5ZXJHcm91cHM6IERFRkFVTFRfTEFZRVJfR1JPVVBTXG4gIH0sXG4gIHtcbiAgICBpZDogJ211dGVkJyxcbiAgICBsYWJlbDogJ011dGVkIExpZ2h0JyxcbiAgICB1cmw6ICdtYXBib3g6Ly9zdHlsZXMvdWJlcmRhdGEvY2pmeWwwM2twMXR1bDJzbWY1djJ0YmRkNCcsXG4gICAgaWNvbjogYCR7SUNPTl9QUkVGSVh9L1VCRVJfTVVURURfTElHSFQucG5nYCxcbiAgICBsYXllckdyb3VwczogREVGQVVMVF9MQVlFUl9HUk9VUFNcbiAgfSxcbiAge1xuICAgIGlkOiAnbXV0ZWRfbmlnaHQnLFxuICAgIGxhYmVsOiAnTXV0ZWQgTmlnaHQnLFxuICAgIHVybDogJ21hcGJveDovL3N0eWxlcy91YmVyZGF0YS9jamZ4aGxpa21hajFiMnNveXpldm55d2dzJyxcbiAgICBpY29uOiBgJHtJQ09OX1BSRUZJWH0vVUJFUl9NVVRFRF9OSUdIVC5wbmdgLFxuICAgIGxheWVyR3JvdXBzOiBERUZBVUxUX0xBWUVSX0dST1VQU1xuICB9LFxuICB7XG4gICAgaWQ6ICdzYXRlbGxpdGUnLFxuICAgIGxhYmVsOiAnU2F0ZWxsaXRlJyxcbiAgICB1cmw6IGBtYXBib3g6Ly9zdHlsZXMvbWFwYm94L3NhdGVsbGl0ZS12OWAsXG4gICAgaWNvbjogYCR7SUNPTl9QUkVGSVh9L1VCRVJfU0FURUxMSVRFLnBuZ2BcbiAgfVxuXTtcblxuZXhwb3J0IGNvbnN0IEdFT0pTT05fRklFTERTID0ge1xuICBnZW9qc29uOiBbJ19nZW9qc29uJywgJ2FsbF9wb2ludHMnLCAnZ2VvanNvbiddXG59O1xuXG5leHBvcnQgY29uc3QgSUNPTl9GSUVMRFMgPSB7XG4gIGljb246IFsnaWNvbiddXG59O1xuXG5leHBvcnQgY29uc3QgVFJJUF9QT0lOVF9GSUVMRFMgPSBbXG4gIFsnbGF0JywgJ2xuZyddLFxuICBbJ2xhdCcsICdsb24nXSxcbiAgWydsYXRpdHVkZScsICdsb25naXR1ZGUnXVxuXTtcblxuZXhwb3J0IGNvbnN0IFRSSVBfQVJDX0ZJRUxEUyA9IHtcbiAgbGF0MDogJ2JlZ2ludHJpcCcsXG4gIGxuZzA6ICdiZWdpbnRyaXAnLFxuICBsYXQxOiAnZHJvcG9mZicsXG4gIGxuZzE6ICdkcm9wb2ZmJ1xufTtcblxuZXhwb3J0IGNvbnN0IEZJTFRFUl9UWVBFUyA9IGtleU1pcnJvcih7XG4gIHJhbmdlOiBudWxsLFxuICBzZWxlY3Q6IG51bGwsXG4gIGlucHV0OiBudWxsLFxuICB0aW1lUmFuZ2U6IG51bGwsXG4gIG11bHRpU2VsZWN0OiBudWxsLFxuICBwb2x5Z29uOiBudWxsXG59KTtcblxuZXhwb3J0IGNvbnN0IFNDQUxFX1RZUEVTID0ga2V5TWlycm9yKHtcbiAgb3JkaW5hbDogbnVsbCxcbiAgcXVhbnRpbGU6IG51bGwsXG4gIHF1YW50aXplOiBudWxsLFxuICBsaW5lYXI6IG51bGwsXG4gIHNxcnQ6IG51bGwsXG4gIGxvZzogbnVsbCxcblxuICAvLyBvcmRpbmFsIGRvbWFpbiB0byBsaW5lYXIgcmFuZ2VcbiAgcG9pbnQ6IG51bGwsXG4gIGN1c3RvbTogbnVsbFxufSk7XG5cbmV4cG9ydCBjb25zdCBTQ0FMRV9GVU5DID0ge1xuICBbU0NBTEVfVFlQRVMubGluZWFyXTogc2NhbGVMaW5lYXIsXG4gIFtTQ0FMRV9UWVBFUy5xdWFudGl6ZV06IHNjYWxlUXVhbnRpemUsXG4gIFtTQ0FMRV9UWVBFUy5xdWFudGlsZV06IHNjYWxlUXVhbnRpbGUsXG4gIFtTQ0FMRV9UWVBFUy5vcmRpbmFsXTogc2NhbGVPcmRpbmFsLFxuICBbU0NBTEVfVFlQRVMuc3FydF06IHNjYWxlU3FydCxcbiAgW1NDQUxFX1RZUEVTLmxvZ106IHNjYWxlTG9nLFxuICBbU0NBTEVfVFlQRVMucG9pbnRdOiBzY2FsZVBvaW50LFxuICBbU0NBTEVfVFlQRVMuY3VzdG9tXTogc2NhbGVUaHJlc2hvbGRcbn07XG5cbmV4cG9ydCBjb25zdCBBTExfRklFTERfVFlQRVMgPSBrZXlNaXJyb3Ioe1xuICBib29sZWFuOiBudWxsLFxuICBkYXRlOiBudWxsLFxuICBnZW9qc29uOiBudWxsLFxuICBpbnRlZ2VyOiBudWxsLFxuICByZWFsOiBudWxsLFxuICBzdHJpbmc6IG51bGwsXG4gIHRpbWVzdGFtcDogbnVsbCxcbiAgcG9pbnQ6IG51bGxcbn0pO1xuXG4vLyBEYXRhIFRhYmxlXG5leHBvcnQgY29uc3QgU09SVF9PUkRFUiA9IGtleU1pcnJvcih7XG4gIEFTQ0VORElORzogbnVsbCxcbiAgREVTQ0VORElORzogbnVsbCxcbiAgVU5TT1JUOiBudWxsXG59KTtcblxuZXhwb3J0IGNvbnN0IFRBQkxFX09QVElPTiA9IGtleU1pcnJvcih7XG4gIFNPUlRfQVNDOiBudWxsLFxuICBTT1JUX0RFUzogbnVsbCxcbiAgVU5TT1JUOiBudWxsLFxuICBQSU46IG51bGwsXG4gIFVOUElOOiBudWxsLFxuICBDT1BZOiBudWxsXG59KTtcblxuZXhwb3J0IGNvbnN0IFRBQkxFX09QVElPTl9MSVNUID0gW1xuICB7XG4gICAgdmFsdWU6IFRBQkxFX09QVElPTi5TT1JUX0FTQyxcbiAgICBkaXNwbGF5OiAnU29ydCBBc2NlbmRpbmcnLFxuICAgIGljb246IEFycm93VXAsXG4gICAgY29uZGl0aW9uOiBwcm9wcyA9PiBwcm9wcy5zb3J0TW9kZSAhPT0gU09SVF9PUkRFUi5BU0NFTkRJTkdcbiAgfSxcbiAge1xuICAgIHZhbHVlOiBUQUJMRV9PUFRJT04uU09SVF9ERVMsXG4gICAgZGlzcGxheTogJ1NvcnQgRGVzY2VuZGluZycsXG4gICAgaWNvbjogQXJyb3dEb3duLFxuICAgIGNvbmRpdGlvbjogcHJvcHMgPT4gcHJvcHMuc29ydE1vZGUgIT09IFNPUlRfT1JERVIuREVTQ0VORElOR1xuICB9LFxuICB7XG4gICAgdmFsdWU6IFRBQkxFX09QVElPTi5VTlNPUlQsXG4gICAgZGlzcGxheTogJ1Vuc29ydCBDb2x1bW4nLFxuICAgIGljb246IENhbmNlbCxcbiAgICBjb25kaXRpb246IHByb3BzID0+IHByb3BzLmlzU29ydGVkXG4gIH0sXG4gIHt2YWx1ZTogVEFCTEVfT1BUSU9OLlBJTiwgZGlzcGxheTogJ1BpbiBDb2x1bW4nLCBpY29uOiBQaW4sIGNvbmRpdGlvbjogcHJvcHMgPT4gIXByb3BzLmlzUGlubmVkfSxcbiAge1xuICAgIHZhbHVlOiBUQUJMRV9PUFRJT04uVU5QSU4sXG4gICAgZGlzcGxheTogJ1VucGluIENvbHVtbicsXG4gICAgaWNvbjogQ2FuY2VsLFxuICAgIGNvbmRpdGlvbjogcHJvcHMgPT4gcHJvcHMuaXNQaW5uZWRcbiAgfSxcbiAge3ZhbHVlOiBUQUJMRV9PUFRJT04uQ09QWSwgZGlzcGxheTogJ0NvcHkgQ29sdW1uJywgaWNvbjogQ2xpcGJvYXJkfVxuXTtcblxuY29uc3QgT1JBTkdFID0gJzI0OCwgMTk0LCAyOCc7XG5jb25zdCBQSU5LID0gJzIzMSwgMTg5LCAxOTQnO1xuY29uc3QgUFVSUExFID0gJzE2MCwgMTA2LCAyMDYnO1xuY29uc3QgQkxVRSA9ICcxNDAsIDIxMCwgMjA1JztcbmNvbnN0IEJMVUUyID0gJzEwNiwgMTYwLCAyMDYnO1xuY29uc3QgQkxVRTMgPSAnMCwgMTcyLCAyMzcnO1xuY29uc3QgR1JFRU4gPSAnMTA2LCAxNjAsIDU2JztcbmNvbnN0IFJFRCA9ICcyMzcsIDg4LCAxMDYnO1xuXG5leHBvcnQgY29uc3QgRklMRURfVFlQRV9ESVNQTEFZID0ge1xuICBbQUxMX0ZJRUxEX1RZUEVTLmJvb2xlYW5dOiB7XG4gICAgbGFiZWw6ICdib29sJyxcbiAgICBjb2xvcjogUElOS1xuICB9LFxuICBbQUxMX0ZJRUxEX1RZUEVTLmRhdGVdOiB7XG4gICAgbGFiZWw6ICdkYXRlJyxcbiAgICBjb2xvcjogUFVSUExFXG4gIH0sXG4gIFtBTExfRklFTERfVFlQRVMuZ2VvanNvbl06IHtcbiAgICBsYWJlbDogJ2dlbycsXG4gICAgY29sb3I6IEJMVUUyXG4gIH0sXG4gIFtBTExfRklFTERfVFlQRVMuaW50ZWdlcl06IHtcbiAgICBsYWJlbDogJ2ludCcsXG4gICAgY29sb3I6IE9SQU5HRVxuICB9LFxuICBbQUxMX0ZJRUxEX1RZUEVTLnJlYWxdOiB7XG4gICAgbGFiZWw6ICdmbG9hdCcsXG4gICAgY29sb3I6IE9SQU5HRVxuICB9LFxuICBbQUxMX0ZJRUxEX1RZUEVTLnN0cmluZ106IHtcbiAgICBsYWJlbDogJ3N0cmluZycsXG4gICAgY29sb3I6IEJMVUVcbiAgfSxcbiAgW0FMTF9GSUVMRF9UWVBFUy50aW1lc3RhbXBdOiB7XG4gICAgbGFiZWw6ICd0aW1lJyxcbiAgICBjb2xvcjogR1JFRU5cbiAgfSxcbiAgLy8gZmllbGQgcGFpcnNcbiAgW0FMTF9GSUVMRF9UWVBFUy5wb2ludF06IHtcbiAgICBsYWJlbDogJ3BvaW50JyxcbiAgICBjb2xvcjogQkxVRTNcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IEZJRUxEX0NPTE9SUyA9IHtcbiAgZGVmYXVsdDogUkVEXG59O1xuZXhwb3J0IGNvbnN0IEhJR0hMSUdIX0NPTE9SXzNEID0gWzI1NSwgMjU1LCAyNTUsIDYwXTtcbmV4cG9ydCBjb25zdCBDSEFOTkVMX1NDQUxFUyA9IGtleU1pcnJvcih7XG4gIGNvbG9yOiBudWxsLFxuICByYWRpdXM6IG51bGwsXG4gIHNpemU6IG51bGwsXG4gIGN1c3RvbU1hcmtlcjogbnVsbCxcbiAgY29sb3JBZ2dyOiBudWxsLFxuICBzaXplQWdncjogbnVsbCxcbiAgaWRlbnRpdHk6IG51bGxcbn0pO1xuXG5leHBvcnQgY29uc3QgQUdHUkVHQVRJT05fVFlQRVMgPSB7XG4gIC8vIGRlZmF1bHRcbiAgY291bnQ6ICdjb3VudCcsXG4gIC8vIGxpbmVhclxuICBhdmVyYWdlOiAnYXZlcmFnZScsXG4gIG1heGltdW06ICdtYXhpbXVtJyxcbiAgbWluaW11bTogJ21pbmltdW0nLFxuICBtZWRpYW46ICdtZWRpYW4nLFxuICBzdGRldjogJ3N0ZGV2JyxcbiAgc3VtOiAnc3VtJyxcbiAgdmFyaWFuY2U6ICd2YXJpYW5jZScsXG4gIC8vIG9yZGluYWxcbiAgbW9kZTogJ21vZGUnLFxuICBjb3VudFVuaXF1ZTogJ2NvdW50IHVuaXF1ZSdcbn07XG5cbmV4cG9ydCBjb25zdCBGSUVMRF9UWVBFU19BR0dSRUdBVE9SUyA9IHtcbiAgZGF0ZTogbnVsbCxcbiAgZ2VvanNvbjogbnVsbCxcbiAgaW50ZWdlcjogW1xuICAgIEFHR1JFR0FUSU9OX1RZUEVTLmF2ZXJhZ2UsXG4gICAgQUdHUkVHQVRJT05fVFlQRVMubWF4aW11bSxcbiAgICBBR0dSRUdBVElPTl9UWVBFUy5taW5pbXVtLFxuICAgIEFHR1JFR0FUSU9OX1RZUEVTLnN0ZGV2LFxuICAgIEFHR1JFR0FUSU9OX1RZUEVTLnN1bSxcbiAgICBBR0dSRUdBVElPTl9UWVBFUy52YXJpYW5jZVxuICBdLFxuICByZWFsOiBbXG4gICAgQUdHUkVHQVRJT05fVFlQRVMuYXZlcmFnZSxcbiAgICBBR0dSRUdBVElPTl9UWVBFUy5tYXhpbXVtLFxuICAgIEFHR1JFR0FUSU9OX1RZUEVTLm1pbmltdW0sXG4gICAgQUdHUkVHQVRJT05fVFlQRVMuc3RkZXYsXG4gICAgQUdHUkVHQVRJT05fVFlQRVMuc3VtLFxuICAgIEFHR1JFR0FUSU9OX1RZUEVTLnZhcmlhbmNlXG4gIF0sXG4gIHN0cmluZzogbnVsbCxcbiAgdGltZXN0YW1wOiBudWxsLFxuICBwb2ludDogbnVsbFxufTtcblxuZXhwb3J0IGNvbnN0IEZJRUxEX0FHR1JFR0FUT1JTID0gW1xuICB7XG4gICAgaWQ6IEFHR1JFR0FUSU9OX1RZUEVTLmF2ZXJhZ2UsXG4gICAgZGlzcGxheU5hbWU6ICdBVkcnXG4gIH0sXG4gIHtcbiAgICBpZDogQUdHUkVHQVRJT05fVFlQRVMubWF4aW11bSxcbiAgICBkaXNwbGF5TmFtZTogJ01BWCdcbiAgfSxcbiAge1xuICAgIGlkOiBBR0dSRUdBVElPTl9UWVBFUy5taW5pbXVtLFxuICAgIGRpc3BsYXlOYW1lOiAnTUlOJ1xuICB9LFxuICB7XG4gICAgaWQ6IEFHR1JFR0FUSU9OX1RZUEVTLnN0ZGV2LFxuICAgIGRpc3BsYXlOYW1lOiAnU1RERVYnXG4gIH0sXG4gIHtcbiAgICBpZDogQUdHUkVHQVRJT05fVFlQRVMuc3VtLFxuICAgIGRpc3BsYXlOYW1lOiAnU1VNJ1xuICB9LFxuICB7XG4gICAgaWQ6IEFHR1JFR0FUSU9OX1RZUEVTLnZhcmlhbmNlLFxuICAgIGRpc3BsYXlOYW1lOiAnVkFSSUFOQ0UnXG4gIH1cbl07XG5cbmV4cG9ydCBjb25zdCBsaW5lYXJGaWVsZFNjYWxlRnVuY3Rpb25zID0ge1xuICBbQ0hBTk5FTF9TQ0FMRVMuY29sb3JdOiBbU0NBTEVfVFlQRVMucXVhbnRpemUsIFNDQUxFX1RZUEVTLnF1YW50aWxlLCBTQ0FMRV9UWVBFUy5jdXN0b21dLFxuICBbQ0hBTk5FTF9TQ0FMRVMucmFkaXVzXTogW1NDQUxFX1RZUEVTLnNxcnRdLFxuICBbQ0hBTk5FTF9TQ0FMRVMuc2l6ZV06IFtTQ0FMRV9UWVBFUy5saW5lYXIsIFNDQUxFX1RZUEVTLnNxcnQsIFNDQUxFX1RZUEVTLmxvZ10sXG4gIFtDSEFOTkVMX1NDQUxFUy5jdXN0b21NYXJrZXJdOiBbU0NBTEVfVFlQRVMub3JkaW5hbF0sXG4gIFtDSEFOTkVMX1NDQUxFUy5pZGVudGl0eV06IFtdXG59O1xuXG5leHBvcnQgY29uc3QgbGluZWFyRmllbGRBZ2dyU2NhbGVGdW5jdGlvbnMgPSB7XG4gIFtDSEFOTkVMX1NDQUxFUy5jb2xvckFnZ3JdOiB7XG4gICAgW0FHR1JFR0FUSU9OX1RZUEVTLmF2ZXJhZ2VdOiBbU0NBTEVfVFlQRVMucXVhbnRpemUsIFNDQUxFX1RZUEVTLnF1YW50aWxlLCBTQ0FMRV9UWVBFUy5jdXN0b21dLFxuICAgIFtBR0dSRUdBVElPTl9UWVBFUy5tYXhpbXVtXTogW1NDQUxFX1RZUEVTLnF1YW50aXplLCBTQ0FMRV9UWVBFUy5xdWFudGlsZSwgU0NBTEVfVFlQRVMuY3VzdG9tXSxcbiAgICBbQUdHUkVHQVRJT05fVFlQRVMubWluaW11bV06IFtTQ0FMRV9UWVBFUy5xdWFudGl6ZSwgU0NBTEVfVFlQRVMucXVhbnRpbGUsIFNDQUxFX1RZUEVTLmN1c3RvbV0sXG4gICAgW0FHR1JFR0FUSU9OX1RZUEVTLm1lZGlhbl06IFtTQ0FMRV9UWVBFUy5xdWFudGl6ZSwgU0NBTEVfVFlQRVMucXVhbnRpbGUsIFNDQUxFX1RZUEVTLmN1c3RvbV0sXG4gICAgW0FHR1JFR0FUSU9OX1RZUEVTLnN0ZGV2XTogW1NDQUxFX1RZUEVTLnF1YW50aXplLCBTQ0FMRV9UWVBFUy5xdWFudGlsZSwgU0NBTEVfVFlQRVMuY3VzdG9tXSxcbiAgICBbQUdHUkVHQVRJT05fVFlQRVMuc3VtXTogW1NDQUxFX1RZUEVTLnF1YW50aXplLCBTQ0FMRV9UWVBFUy5xdWFudGlsZSwgU0NBTEVfVFlQRVMuY3VzdG9tXSxcbiAgICBbQUdHUkVHQVRJT05fVFlQRVMudmFyaWFuY2VdOiBbU0NBTEVfVFlQRVMucXVhbnRpemUsIFNDQUxFX1RZUEVTLnF1YW50aWxlLCBTQ0FMRV9UWVBFUy5jdXN0b21dXG4gIH0sXG5cbiAgW0NIQU5ORUxfU0NBTEVTLnNpemVBZ2dyXToge1xuICAgIFtBR0dSRUdBVElPTl9UWVBFUy5hdmVyYWdlXTogW1NDQUxFX1RZUEVTLmxpbmVhciwgU0NBTEVfVFlQRVMuc3FydCwgU0NBTEVfVFlQRVMubG9nXSxcbiAgICBbQUdHUkVHQVRJT05fVFlQRVMubWF4aW11bV06IFtTQ0FMRV9UWVBFUy5saW5lYXIsIFNDQUxFX1RZUEVTLnNxcnQsIFNDQUxFX1RZUEVTLmxvZ10sXG4gICAgW0FHR1JFR0FUSU9OX1RZUEVTLm1pbmltdW1dOiBbU0NBTEVfVFlQRVMubGluZWFyLCBTQ0FMRV9UWVBFUy5zcXJ0LCBTQ0FMRV9UWVBFUy5sb2ddLFxuICAgIFtBR0dSRUdBVElPTl9UWVBFUy5tZWRpYW5dOiBbU0NBTEVfVFlQRVMubGluZWFyLCBTQ0FMRV9UWVBFUy5zcXJ0LCBTQ0FMRV9UWVBFUy5sb2ddLFxuICAgIFtBR0dSRUdBVElPTl9UWVBFUy5zdGRldl06IFtTQ0FMRV9UWVBFUy5saW5lYXIsIFNDQUxFX1RZUEVTLnNxcnQsIFNDQUxFX1RZUEVTLmxvZ10sXG4gICAgW0FHR1JFR0FUSU9OX1RZUEVTLnN1bV06IFtTQ0FMRV9UWVBFUy5saW5lYXIsIFNDQUxFX1RZUEVTLnNxcnQsIFNDQUxFX1RZUEVTLmxvZ10sXG4gICAgW0FHR1JFR0FUSU9OX1RZUEVTLnZhcmlhbmNlXTogW1NDQUxFX1RZUEVTLmxpbmVhciwgU0NBTEVfVFlQRVMuc3FydCwgU0NBTEVfVFlQRVMubG9nXVxuICB9XG59O1xuXG5leHBvcnQgY29uc3Qgb3JkaW5hbEZpZWxkU2NhbGVGdW5jdGlvbnMgPSB7XG4gIFtDSEFOTkVMX1NDQUxFUy5jb2xvcl06IFtTQ0FMRV9UWVBFUy5vcmRpbmFsXSxcbiAgW0NIQU5ORUxfU0NBTEVTLnJhZGl1c106IFtTQ0FMRV9UWVBFUy5wb2ludF0sXG4gIFtDSEFOTkVMX1NDQUxFUy5zaXplXTogW1NDQUxFX1RZUEVTLnBvaW50XSxcbiAgW0NIQU5ORUxfU0NBTEVTLmN1c3RvbU1hcmtlcl06IFtTQ0FMRV9UWVBFUy5vcmRpbmFsXSxcbiAgW0NIQU5ORUxfU0NBTEVTLmlkZW50aXR5XTogW11cbn07XG5cbmV4cG9ydCBjb25zdCBvcmRpbmFsRmllbGRBZ2dyU2NhbGVGdW5jdGlvbnMgPSB7XG4gIC8vIFtDSEFOTkVMX1NDQUxFUy5jb2xvckFnZ3JdOiBbU0NBTEVfVFlQRVMub3JkaW5hbCwgU0NBTEVfVFlQRVMubGluZWFyXSxcbiAgW0NIQU5ORUxfU0NBTEVTLmNvbG9yQWdncl06IHtcbiAgICBbQUdHUkVHQVRJT05fVFlQRVMubW9kZV06IFtTQ0FMRV9UWVBFUy5vcmRpbmFsXSxcbiAgICBbQUdHUkVHQVRJT05fVFlQRVMuY291bnRVbmlxdWVdOiBbXG4gICAgICBTQ0FMRV9UWVBFUy5xdWFudGl6ZSxcbiAgICAgIFNDQUxFX1RZUEVTLnF1YW50aWxlLFxuICAgICAgU0NBTEVfVFlQRVMuY3VzdG9tXG4gICAgXVxuICB9LFxuXG4gIC8vIEN1cnJlbnRseSBkb2Vzbid0IHN1cHBvcnQgeWV0XG4gIFtDSEFOTkVMX1NDQUxFUy5zaXplQWdncl06IHt9XG59O1xuXG5leHBvcnQgY29uc3Qgbm90U3VwcG9ydGVkU2NhbGVPcHRzID0ge1xuICBbQ0hBTk5FTF9TQ0FMRVMuY29sb3JdOiBbXSxcbiAgW0NIQU5ORUxfU0NBTEVTLnJhZGl1c106IFtdLFxuICBbQ0hBTk5FTF9TQ0FMRVMuc2l6ZV06IFtdLFxuICBbQ0hBTk5FTF9TQ0FMRVMuY3VzdG9tTWFya2VyXTogW10sXG4gIFtDSEFOTkVMX1NDQUxFUy5pZGVudGl0eV06IFtdXG59O1xuXG5leHBvcnQgY29uc3Qgbm90U3VwcG9ydEFnZ3JPcHRzID0ge1xuICBbQ0hBTk5FTF9TQ0FMRVMuY29sb3JBZ2dyXToge30sXG4gIFtDSEFOTkVMX1NDQUxFUy5zaXplQWdncl06IHt9XG59O1xuXG4vKipcbiAqIERlZmF1bHQgYWdncmVnYXRpb24gYXJlIGJhc2VkIG9uIG9jdW50XG4gKi9cbmV4cG9ydCBjb25zdCBERUZBVUxUX0FHR1JFR0FUSU9OID0ge1xuICBbQ0hBTk5FTF9TQ0FMRVMuY29sb3JBZ2dyXToge1xuICAgIFtBR0dSRUdBVElPTl9UWVBFUy5jb3VudF06IFtTQ0FMRV9UWVBFUy5xdWFudGl6ZSwgU0NBTEVfVFlQRVMucXVhbnRpbGUsIFNDQUxFX1RZUEVTLmN1c3RvbV1cbiAgfSxcbiAgW0NIQU5ORUxfU0NBTEVTLnNpemVBZ2dyXToge1xuICAgIFtBR0dSRUdBVElPTl9UWVBFUy5jb3VudF06IFtTQ0FMRV9UWVBFUy5saW5lYXIsIFNDQUxFX1RZUEVTLnNxcnQsIFNDQUxFX1RZUEVTLmxvZ11cbiAgfVxufTtcblxuLyoqXG4gKiBEZWZpbmUgd2hhdCB0eXBlIG9mIHNjYWxlIG9wZXJhdGlvbiBpcyBhbGxvd2VkIG9uIGVhY2ggdHlwZSBvZiBmaWVsZHNcbiAqL1xuZXhwb3J0IGNvbnN0IEZJRUxEX09QVFMgPSB7XG4gIHN0cmluZzoge1xuICAgIHR5cGU6ICdjYXRlZ29yaWNhbCcsXG4gICAgc2NhbGU6IHtcbiAgICAgIC4uLm9yZGluYWxGaWVsZFNjYWxlRnVuY3Rpb25zLFxuICAgICAgLi4ub3JkaW5hbEZpZWxkQWdnclNjYWxlRnVuY3Rpb25zXG4gICAgfSxcbiAgICBmb3JtYXQ6IHtcbiAgICAgIGxlZ2VuZDogZCA9PiBkLFxuICAgICAgdG9vbHRpcDogW11cbiAgICB9XG4gIH0sXG4gIHJlYWw6IHtcbiAgICB0eXBlOiAnbnVtZXJpY2FsJyxcbiAgICBzY2FsZToge1xuICAgICAgLi4ubGluZWFyRmllbGRTY2FsZUZ1bmN0aW9ucyxcbiAgICAgIC4uLmxpbmVhckZpZWxkQWdnclNjYWxlRnVuY3Rpb25zXG4gICAgfSxcbiAgICBmb3JtYXQ6IHtcbiAgICAgIGxlZ2VuZDogZCA9PiBkLFxuICAgICAgdG9vbHRpcDogW1xuICAgICAgICBUT09MVElQX0ZPUk1BVF9UWVBFUy5OT05FLFxuICAgICAgICBUT09MVElQX0ZPUk1BVF9UWVBFUy5ERUNJTUFMLFxuICAgICAgICBUT09MVElQX0ZPUk1BVF9UWVBFUy5QRVJDRU5UQUdFXG4gICAgICBdXG4gICAgfVxuICB9LFxuICB0aW1lc3RhbXA6IHtcbiAgICB0eXBlOiAndGltZScsXG4gICAgc2NhbGU6IHtcbiAgICAgIC4uLmxpbmVhckZpZWxkU2NhbGVGdW5jdGlvbnMsXG4gICAgICAuLi5ub3RTdXBwb3J0QWdnck9wdHNcbiAgICB9LFxuICAgIGZvcm1hdDoge1xuICAgICAgbGVnZW5kOiBkID0+IGQsXG4gICAgICB0b29sdGlwOiBbXG4gICAgICAgIFRPT0xUSVBfRk9STUFUX1RZUEVTLk5PTkUsXG4gICAgICAgIFRPT0xUSVBfRk9STUFUX1RZUEVTLkRBVEUsXG4gICAgICAgIFRPT0xUSVBfRk9STUFUX1RZUEVTLkRBVEVfVElNRVxuICAgICAgXVxuICAgIH1cbiAgfSxcbiAgaW50ZWdlcjoge1xuICAgIHR5cGU6ICdudW1lcmljYWwnLFxuICAgIHNjYWxlOiB7XG4gICAgICAuLi5saW5lYXJGaWVsZFNjYWxlRnVuY3Rpb25zLFxuICAgICAgLi4ubGluZWFyRmllbGRBZ2dyU2NhbGVGdW5jdGlvbnNcbiAgICB9LFxuICAgIGZvcm1hdDoge1xuICAgICAgbGVnZW5kOiBkID0+IGQsXG4gICAgICB0b29sdGlwOiBbXG4gICAgICAgIFRPT0xUSVBfRk9STUFUX1RZUEVTLk5PTkUsXG4gICAgICAgIFRPT0xUSVBfRk9STUFUX1RZUEVTLkRFQ0lNQUwsXG4gICAgICAgIFRPT0xUSVBfRk9STUFUX1RZUEVTLlBFUkNFTlRBR0VcbiAgICAgIF1cbiAgICB9XG4gIH0sXG4gIGJvb2xlYW46IHtcbiAgICB0eXBlOiAnYm9vbGVhbicsXG4gICAgc2NhbGU6IHtcbiAgICAgIC4uLm9yZGluYWxGaWVsZFNjYWxlRnVuY3Rpb25zLFxuICAgICAgLi4ub3JkaW5hbEZpZWxkQWdnclNjYWxlRnVuY3Rpb25zXG4gICAgfSxcbiAgICBmb3JtYXQ6IHtcbiAgICAgIGxlZ2VuZDogZCA9PiBkLFxuICAgICAgdG9vbHRpcDogW1RPT0xUSVBfRk9STUFUX1RZUEVTLk5PTkUsIFRPT0xUSVBfRk9STUFUX1RZUEVTLkJPT0xFQU5dXG4gICAgfVxuICB9LFxuICBkYXRlOiB7XG4gICAgc2NhbGU6IHtcbiAgICAgIC4uLm9yZGluYWxGaWVsZFNjYWxlRnVuY3Rpb25zLFxuICAgICAgLi4ub3JkaW5hbEZpZWxkQWdnclNjYWxlRnVuY3Rpb25zXG4gICAgfSxcbiAgICBmb3JtYXQ6IHtcbiAgICAgIGxlZ2VuZDogZCA9PiBkLFxuICAgICAgdG9vbHRpcDogW1RPT0xUSVBfRk9STUFUX1RZUEVTLk5PTkUsIFRPT0xUSVBfRk9STUFUX1RZUEVTLkRBVEVdXG4gICAgfVxuICB9LFxuICBnZW9qc29uOiB7XG4gICAgdHlwZTogJ2dlb21ldHJ5JyxcbiAgICBzY2FsZToge1xuICAgICAgLi4ubm90U3VwcG9ydGVkU2NhbGVPcHRzLFxuICAgICAgLi4ubm90U3VwcG9ydEFnZ3JPcHRzXG4gICAgfSxcbiAgICBmb3JtYXQ6IHtcbiAgICAgIGxlZ2VuZDogZCA9PiAnLi4uJyxcbiAgICAgIHRvb2x0aXA6IFtdXG4gICAgfVxuICB9XG59O1xuXG5leHBvcnQgY29uc3QgQ0hBTk5FTF9TQ0FMRV9TVVBQT1JURURfRklFTERTID0gT2JqZWN0LmtleXMoQ0hBTk5FTF9TQ0FMRVMpLnJlZHVjZShcbiAgKGFjY3UsIGtleSkgPT4gKHtcbiAgICAuLi5hY2N1LFxuICAgIFtrZXldOiBPYmplY3Qua2V5cyhGSUVMRF9PUFRTKS5maWx0ZXIoZnQgPT4gT2JqZWN0LmtleXMoRklFTERfT1BUU1tmdF0uc2NhbGVba2V5XSkubGVuZ3RoKVxuICB9KSxcbiAge31cbik7XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX0xBWUVSX0NPTE9SID0ge1xuICB0cmlwQXJjOiAnIzkyMjZDNicsXG4gIGJlZ2ludHJpcF9sYXQ6ICcjMUU5NkJFJyxcbiAgZHJvcG9mZl9sYXQ6ICcjRkY5OTFGJyxcbiAgcmVxdWVzdF9sYXQ6ICcjNTJBMzUzJ1xufTtcblxuLy8gbGV0IHVzZXIgcGFzcyBpbiBkZWZhdWx0IHRvb2x0aXAgZmllbGRzXG5leHBvcnQgY29uc3QgREVGQVVMVF9UT09MVElQX0ZJRUxEUyA9IFtdO1xuXG5leHBvcnQgY29uc3QgTk9fVkFMVUVfQ09MT1IgPSBbMCwgMCwgMCwgMF07XG5leHBvcnQgY29uc3QgVU5LTk9XTl9DT0xPUiA9IFsxMzQsIDE0MSwgMTQ1XTtcblxuZXhwb3J0IGNvbnN0IExBWUVSX0JMRU5ESU5HUyA9IHtcbiAgYWRkaXRpdmU6IHtcbiAgICBsYWJlbDogJ2xheWVyQmxlbmRpbmcuYWRkaXRpdmUnLFxuICAgIGJsZW5kRnVuYzogWydTUkNfQUxQSEEnLCAnRFNUX0FMUEhBJ10sXG4gICAgYmxlbmRFcXVhdGlvbjogJ0ZVTkNfQUREJ1xuICB9LFxuICBub3JtYWw6IHtcbiAgICAvLyByZWZlcmVuY2UgdG9cbiAgICAvLyBodHRwczovL2xpbW51LmNvbS93ZWJnbC1ibGVuZGluZy15b3VyZS1wcm9iYWJseS13cm9uZy9cbiAgICBsYWJlbDogJ2xheWVyQmxlbmRpbmcubm9ybWFsJyxcbiAgICBibGVuZEZ1bmM6IFsnU1JDX0FMUEhBJywgJ09ORV9NSU5VU19TUkNfQUxQSEEnLCAnT05FJywgJ09ORV9NSU5VU19TUkNfQUxQSEEnXSxcbiAgICBibGVuZEVxdWF0aW9uOiBbJ0ZVTkNfQUREJywgJ0ZVTkNfQUREJ11cbiAgfSxcbiAgc3VidHJhY3RpdmU6IHtcbiAgICBsYWJlbDogJ2xheWVyQmxlbmRpbmcuc3VidHJhY3RpdmUnLFxuICAgIGJsZW5kRnVuYzogWydPTkUnLCAnT05FX01JTlVTX0RTVF9DT0xPUicsICdTUkNfQUxQSEEnLCAnRFNUX0FMUEhBJ10sXG4gICAgYmxlbmRFcXVhdGlvbjogWydGVU5DX1NVQlRSQUNUJywgJ0ZVTkNfQUREJ11cbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IE1BWF9ERUZBVUxUX1RPT0xUSVBTID0gNTtcblxuZXhwb3J0IGNvbnN0IFJFU09MVVRJT05TID0ga2V5TWlycm9yKHtcbiAgT05FX1g6IG51bGwsXG4gIFRXT19YOiBudWxsXG59KTtcblxuZXhwb3J0IGNvbnN0IEVYUE9SVF9JTUdfUkFUSU9TID0ga2V5TWlycm9yKHtcbiAgU0NSRUVOOiBudWxsLFxuICBGT1VSX0JZX1RIUkVFOiBudWxsLFxuICBTSVhURUVOX0JZX05JTkU6IG51bGwsXG4gIENVU1RPTTogbnVsbFxufSk7XG5cbmV4cG9ydCBjb25zdCBFWFBPUlRfSU1HX1JBVElPX09QVElPTlMgPSBbXG4gIHtcbiAgICBpZDogRVhQT1JUX0lNR19SQVRJT1MuU0NSRUVOLFxuICAgIGxhYmVsOiAnbW9kYWwuZXhwb3J0SW1hZ2UucmF0aW9PcmlnaW5hbFNjcmVlbicsXG4gICAgZ2V0U2l6ZTogKHNjcmVlblcsIHNjcmVlbkgpID0+ICh7d2lkdGg6IHNjcmVlblcsIGhlaWdodDogc2NyZWVuSH0pXG4gIH0sXG4gIHtcbiAgICBpZDogRVhQT1JUX0lNR19SQVRJT1MuQ1VTVE9NLFxuICAgIGhpZGRlbjogdHJ1ZSxcbiAgICBsYWJlbDogJ21vZGFsLmV4cG9ydEltYWdlLnJhdGlvQ3VzdG9tJyxcbiAgICBnZXRTaXplOiAobWFwVywgbWFwSCkgPT4gKHt3aWR0aDogbWFwVywgaGVpZ2h0OiBtYXBIfSlcbiAgfSxcbiAge1xuICAgIGlkOiBFWFBPUlRfSU1HX1JBVElPUy5GT1VSX0JZX1RIUkVFLFxuICAgIGxhYmVsOiAnbW9kYWwuZXhwb3J0SW1hZ2UucmF0aW80XzMnLFxuICAgIGdldFNpemU6IChzY3JlZW5XLCBzY3JlZW5IKSA9PiAoe1xuICAgICAgd2lkdGg6IHNjcmVlblcsXG4gICAgICBoZWlnaHQ6IE1hdGgucm91bmQoc2NyZWVuVyAqIDAuNzUpXG4gICAgfSlcbiAgfSxcbiAge1xuICAgIGlkOiBFWFBPUlRfSU1HX1JBVElPUy5TSVhURUVOX0JZX05JTkUsXG4gICAgbGFiZWw6ICdtb2RhbC5leHBvcnRJbWFnZS5yYXRpbzE2XzknLFxuICAgIGdldFNpemU6IChzY3JlZW5XLCBzY3JlZW5IKSA9PiAoe1xuICAgICAgd2lkdGg6IHNjcmVlblcsXG4gICAgICBoZWlnaHQ6IE1hdGgucm91bmQoc2NyZWVuVyAqIDAuNTYyNSlcbiAgICB9KVxuICB9XG5dO1xuXG5leHBvcnQgY29uc3QgRVhQT1JUX0lNR19SRVNPTFVUSU9OX09QVElPTlMgPSBbXG4gIHtcbiAgICBpZDogUkVTT0xVVElPTlMuT05FX1gsXG4gICAgbGFiZWw6ICcxeCcsXG4gICAgYXZhaWxhYmxlOiB0cnVlLFxuICAgIHNjYWxlOiAxLFxuICAgIGdldFNpemU6IChzY3JlZW5XLCBzY3JlZW5IKSA9PiAoe1xuICAgICAgd2lkdGg6IHNjcmVlblcsXG4gICAgICBoZWlnaHQ6IHNjcmVlbkhcbiAgICB9KVxuICB9LFxuICB7XG4gICAgaWQ6IFJFU09MVVRJT05TLlRXT19YLFxuICAgIGxhYmVsOiAnMngnLFxuICAgIGF2YWlsYWJsZTogdHJ1ZSxcbiAgICBzY2FsZTogMixcbiAgICBnZXRTaXplOiAoc2NyZWVuVywgc2NyZWVuSCkgPT4gKHtcbiAgICAgIHdpZHRoOiBzY3JlZW5XICogMixcbiAgICAgIGhlaWdodDogc2NyZWVuSCAqIDJcbiAgICB9KVxuICB9XG5dO1xuXG5leHBvcnQgY29uc3QgRVhQT1JUX0RBVEFfVFlQRSA9IGtleU1pcnJvcih7XG4gIENTVjogbnVsbFxuICAvLyBTSEFQRUZJTEU6IG51bGwsXG4gIC8vIEpTT046IG51bGwsXG4gIC8vIEdFT0pTT046IG51bGwsXG4gIC8vIFRPUE9KU09OOiBudWxsXG59KTtcblxuZXhwb3J0IGNvbnN0IEVYUE9SVF9EQVRBX1RZUEVfT1BUSU9OUyA9IFtcbiAge1xuICAgIGlkOiBFWFBPUlRfREFUQV9UWVBFLkNTVixcbiAgICBsYWJlbDogRVhQT1JUX0RBVEFfVFlQRS5DU1YudG9Mb3dlckNhc2UoKSxcbiAgICBhdmFpbGFibGU6IHRydWVcbiAgfVxuICAvLyB7XG4gIC8vICAgaWQ6IEVYUE9SVF9EQVRBX1RZUEUuU0hBUEVGSUxFLFxuICAvLyAgIGxhYmVsOiAnc2hhcGVmaWxlJyxcbiAgLy8gICBhdmFpbGFibGU6IGZhbHNlXG4gIC8vIH0sXG4gIC8vIHtcbiAgLy8gICBpZDogRVhQT1JUX0RBVEFfVFlQRS5KU09OLFxuICAvLyAgIGxhYmVsOiAnanNvbicsXG4gIC8vICAgYXZhaWxhYmxlOiBmYWxzZVxuICAvLyB9LFxuICAvLyB7XG4gIC8vICAgaWQ6IEVYUE9SVF9EQVRBX1RZUEUuR0VPSlNPTixcbiAgLy8gICBsYWJlbDogJ2dlb2pzb24nLFxuICAvLyAgIGF2YWlsYWJsZTogZmFsc2VcbiAgLy8gfSxcbiAgLy8ge1xuICAvLyAgIGlkOiBFWFBPUlRfREFUQV9UWVBFLlRPUE9KU09OLFxuICAvLyAgIGxhYmVsOiAndG9wb2pzb24nLFxuICAvLyAgIGF2YWlsYWJsZTogZmFsc2VcbiAgLy8gfVxuXTtcblxuLy8gRXhwb3J0IG1hcCB0eXBlc1xuZXhwb3J0IGNvbnN0IEVYUE9SVF9NQVBfRk9STUFUUyA9IGtleU1pcnJvcih7XG4gIEhUTUw6IG51bGwsXG4gIEpTT046IG51bGxcbn0pO1xuXG5leHBvcnQgY29uc3QgRVhQT1JUX0hUTUxfTUFQX01PREVTID0ga2V5TWlycm9yKHtcbiAgUkVBRDogbnVsbCxcbiAgRURJVDogbnVsbFxufSk7XG5cbi8vIEV4cG9ydCBtYXAgb3B0aW9uc1xuZXhwb3J0IGNvbnN0IEVYUE9SVF9NQVBfRk9STUFUX09QVElPTlMgPSBPYmplY3QuZW50cmllcyhFWFBPUlRfTUFQX0ZPUk1BVFMpLm1hcChlbnRyeSA9PiAoe1xuICBpZDogZW50cnlbMF0sXG4gIGxhYmVsOiBlbnRyeVsxXS50b0xvd2VyQ2FzZSgpLFxuICBhdmFpbGFibGU6IHRydWVcbn0pKTtcblxuZXhwb3J0IGNvbnN0IEVYUE9SVF9IVE1MX01BUF9NT0RFX09QVElPTlMgPSBPYmplY3QuZW50cmllcyhFWFBPUlRfSFRNTF9NQVBfTU9ERVMpLm1hcChlbnRyeSA9PiAoe1xuICBpZDogZW50cnlbMF0sXG4gIGxhYmVsOiBgbW9kYWwuZXhwb3J0TWFwLmh0bWwuJHtlbnRyeVsxXS50b0xvd2VyQ2FzZSgpfWAsXG4gIGF2YWlsYWJsZTogdHJ1ZSxcbiAgdXJsOiBnZXRIVE1MTWFwTW9kZVRpbGVVcmwoZW50cnlbMV0pXG59KSk7XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX1VVSURfQ09VTlQgPSA2O1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9OT1RJRklDQVRJT05fTUVTU0FHRSA9ICdNRVNTQUdFX05PVF9QUk9WSURFRCc7XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX05PVElGSUNBVElPTl9UWVBFUyA9IGtleU1pcnJvcih7XG4gIGluZm86IG51bGwsXG4gIGVycm9yOiBudWxsLFxuICB3YXJuaW5nOiBudWxsLFxuICBzdWNjZXNzOiBudWxsXG59KTtcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfTk9USUZJQ0FUSU9OX1RPUElDUyA9IGtleU1pcnJvcih7XG4gIGdsb2JhbDogbnVsbCxcbiAgZmlsZTogbnVsbFxufSk7XG5cbi8vIE1pbmltdW0gdGltZSBiZXR3ZWVuIGlkZW50aWNhbCBub3RpZmljYXRpb25zIGFib3V0IGRlY2suZ2wgZXJyb3JzXG5leHBvcnQgY29uc3QgVEhST1RUTEVfTk9USUZJQ0FUSU9OX1RJTUUgPSAyNTAwO1xuXG4vLyBBbmltYXRpb25cbmV4cG9ydCBjb25zdCBCQVNFX1NQRUVEID0gNjAwO1xuZXhwb3J0IGNvbnN0IEZQUyA9IDYwO1xuXG4vKipcbiAqIDQgQW5pbWF0aW9uIFdpbmRvdyBUeXBlc1xuICogMS4gZnJlZVxuICogIHwtPiAgfC0+XG4gKiBDdXJyZW50IHRpbWUgaXMgYSBmaXhlZCByYW5nZSwgYW5pbWF0aW9uIGNvbnRyb2xsZXIgY2FsbHMgbmV4dCBhbmltYXRpb24gZnJhbWVzIGNvbnRpbnVvdXNseSB0byBhbmltYXRpb24gYSBtb3Zpbmcgd2luZG93XG4gKiBUaGUgaW5jcmVtZW50IGlkIGJhc2VkIG9uIGRvbWFpbiAvIEJBU0VfU1BFRUQgKiBTUEVFRFxuICpcbiAqIDIuIGluY3JlbWVudGFsXG4gKiB8ICAgIHwtPlxuICogU2FtZSBhcyBmcmVlLCBjdXJyZW50IHRpbWUgaXMgYSBncm93aW5nIHJhbmdlLCBvbmx5IHRoZSBtYXggdmFsdWUgb2YgcmFuZ2UgaW5jcmVtZW50IGR1cmluZyBhbmltYXRpb24uXG4gKiBUaGUgaW5jcmVtZW50IGlzIGFsc28gYmFzZWQgb24gZG9tYWluIC8gQkFTRV9TUEVFRCAqIFNQRUVEXG4gKlxuICogMy4gcG9pbnRcbiAqIG8gLT4gb1xuICogQ3VycmVudCB0aW1lIGlzIGEgcG9pbnQsIGFuaW1hdGlvbiBjb250cm9sbGVyIGNhbGxzIG5leHQgYW5pbWF0aW9uIGZyYW1lIGNvbnRpbnVvdXNseSB0byBhbmltYXRpb24gYSBtb3ZpbmcgcG9pbnRcbiAqIFRoZSBpbmNyZW1lbnQgaXMgYmFzZWQgb24gZG9tYWluIC8gQkFTRV9TUEVFRCAqIFNQRUVEXG4gKlxuICogNC4gaW50ZXJ2YWxcbiAqIG8gfj4gb1xuICogQ3VycmVudCB0aW1lIGlzIGEgcG9pbnQuIEFuIGFycmF5IG9mIHNvcnRlZCB0aW1lIHN0ZXBzIG5lZWQgdG8gYmUgcHJvdmlkZWQuXG4gKiBhbmltYXRpb24gY29udHJvbGxlciBjYWxscyBuZXh0IGFuaW1hdGlvbiBhdCBhIGludGVydmFsIHdoZW4gdGhlIHBvaW50IGp1bXBzIHRvIHRoZSBuZXh0IHN0ZXBcbiAqL1xuZXhwb3J0IGNvbnN0IEFOSU1BVElPTl9XSU5ET1cgPSBrZXlNaXJyb3Ioe1xuICBmcmVlOiBudWxsLFxuICBpbmNyZW1lbnRhbDogbnVsbCxcbiAgcG9pbnQ6IG51bGwsXG4gIGludGVydmFsOiBudWxsXG59KTtcbmV4cG9ydCBjb25zdCBERUZBVUxUX1RJTUVfRk9STUFUID0gJ01NL0REL1lZIEhIOm1tOnNzYSc7XG5leHBvcnQgY29uc3QgU1BFRURfQ09OVFJPTF9SQU5HRSA9IFswLCAxMF07XG5leHBvcnQgY29uc3QgU1BFRURfQ09OVFJPTF9TVEVQID0gMC4wMDE7XG5cbi8vIEdlb2NvZGVyXG5leHBvcnQgY29uc3QgR0VPQ09ERVJfREFUQVNFVF9OQU1FID0gJ2dlb2NvZGVyX2RhdGFzZXQnO1xuZXhwb3J0IGNvbnN0IEdFT0NPREVSX0xBWUVSX0lEID0gJ2dlb2NvZGVyX2xheWVyJztcbmV4cG9ydCBjb25zdCBHRU9DT0RFUl9HRU9fT0ZGU0VUID0gMC4wNTtcbmV4cG9ydCBjb25zdCBHRU9DT0RFUl9JQ09OX0NPTE9SID0gWzI1NSwgMCwgMF07XG5leHBvcnQgY29uc3QgR0VPQ09ERVJfSUNPTl9TSVpFID0gODA7XG5cbi8vIFdlIGNvdWxkIHVzZSBkaXJlY3RseSByZWFjdC1tYXAtZ2wtZHJhdyBFZGl0b3JNb2RlIGJ1dCB0aGlzIHdvdWxkXG4vLyBjcmVhdGUgYSBkaXJlY3QgZGVwZW5kZW5jeSB3aXRoIHJlYWN0LW1hcC1nbC1kcmF3XG4vLyBDcmVhdGVkIHRoaXMgbWFwIHRvIGJlIGluZGVwZW5kZW50IGZyb20gcmVhY3QtbWFwLWdsLWRyYXdcbmV4cG9ydCBjb25zdCBFRElUT1JfTU9ERVMgPSB7XG4gIFJFQURfT05MWTogRWRpdG9yTW9kZXMuUkVBRF9PTkxZLFxuICBEUkFXX1BPTFlHT046IEVkaXRvck1vZGVzLkRSQVdfUE9MWUdPTixcbiAgRFJBV19SRUNUQU5HTEU6IEVkaXRvck1vZGVzLkRSQVdfUkVDVEFOR0xFLFxuICBFRElUOiBFZGl0b3JNb2Rlcy5FRElUX1ZFUlRFWFxufTtcblxuZXhwb3J0IGNvbnN0IEVESVRPUl9BVkFJTEFCTEVfTEFZRVJTID0gW1xuICBMQVlFUl9UWVBFUy5wb2ludCxcbiAgTEFZRVJfVFlQRVMuaGV4YWdvbixcbiAgTEFZRVJfVFlQRVMuYXJjLFxuICBMQVlFUl9UWVBFUy5saW5lLFxuICBMQVlFUl9UWVBFUy5oZXhhZ29uSWRcbl07XG4vLyBHUFUgRmlsdGVyaW5nXG4vKipcbiAqIE1heCBudW1iZXIgb2YgZmlsdGVyIHZhbHVlIGJ1ZmZlcnMgdGhhdCBkZWNrLmdsIHByb3ZpZGVzXG4gKi9cbmV4cG9ydCBjb25zdCBNQVhfR1BVX0ZJTFRFUlMgPSA0O1xuZXhwb3J0IGNvbnN0IE1BUF9USFVNQk5BSUxfRElNRU5TSU9OID0ge1xuICB3aWR0aDogMzAwLFxuICBoZWlnaHQ6IDIwMFxufTtcblxuZXhwb3J0IGNvbnN0IE1BUF9JTkZPX0NIQVJBQ1RFUiA9IHtcbiAgdGl0bGU6IDEwMCxcbiAgZGVzY3JpcHRpb246IDEwMFxufTtcblxuLy8gTG9hZCBkYXRhXG5leHBvcnQgY29uc3QgTE9BRElOR19NRVRIT0RTID0ga2V5TWlycm9yKHtcbiAgdXBsb2FkOiBudWxsLFxuICBzdG9yYWdlOiBudWxsXG59KTtcblxuZXhwb3J0IGNvbnN0IERBVEFTRVRfRk9STUFUUyA9IGtleU1pcnJvcih7XG4gIHJvdzogbnVsbCxcbiAgZ2VvanNvbjogbnVsbCxcbiAgY3N2OiBudWxsLFxuICBrZXBsZXJnbDogbnVsbFxufSk7XG5cbmV4cG9ydCBjb25zdCBNQVBfQ09OVFJPTFMgPSBrZXlNaXJyb3Ioe1xuICB2aXNpYmxlTGF5ZXJzOiBudWxsLFxuICBtYXBMZWdlbmQ6IG51bGwsXG4gIHRvZ2dsZTNkOiBudWxsLFxuICBzcGxpdE1hcDogbnVsbCxcbiAgbWFwRHJhdzogbnVsbCxcbiAgbWFwTG9jYWxlOiBudWxsXG59KTtcblxuZXhwb3J0IGNvbnN0IE1BU0tfTEFZRVJfSUQgPSAnbWFza19sYXllcic7XG5cbmV4cG9ydCBjb25zdCBaT09NX0xFVkVMX0xJTUlUUyA9IHtcbiAgbWluOiAwLFxuICBtYXg6IDIxXG59O1xuIl19
|
|
890
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb25zdGFudHMvZGVmYXVsdC1zZXR0aW5ncy5qcyJdLCJuYW1lcyI6WyJBQ1RJT05fUFJFRklYIiwiQ0xPVURGUk9OVCIsIklDT05fUFJFRklYIiwiREVGQVVMVF9NQVBCT1hfQVBJX1VSTCIsIkRBVEFfVEFCTEVfSUQiLCJERUxFVEVfREFUQV9JRCIsIkFERF9EQVRBX0lEIiwiRVhQT1JUX0lNQUdFX0lEIiwiRVhQT1JUX0RBVEFfSUQiLCJBRERfTUFQX1NUWUxFX0lEIiwiRVhQT1JUX01BUF9JRCIsIlNBVkVfTUFQX0lEIiwiT1ZFUldSSVRFX01BUF9JRCIsIlNIQVJFX01BUF9JRCIsIktFUExFUl9HTF9OQU1FIiwiS0VQTEVSX0dMX1ZFUlNJT04iLCJLRVBMRVJfR0xfV0VCU0lURSIsIkRJTUVOU0lPTlMiLCJzaWRlUGFuZWwiLCJ3aWR0aCIsIm1hcmdpbiIsInRvcCIsImxlZnQiLCJib3R0b20iLCJyaWdodCIsImhlYWRlckhlaWdodCIsIm1hcENvbnRyb2wiLCJwYWRkaW5nIiwiVEhFTUUiLCJsaWdodCIsImRhcmsiLCJiYXNlIiwiU0lERUJBUl9QQU5FTFMiLCJpZCIsImxhYmVsIiwiaWNvbkNvbXBvbmVudCIsIkxheWVycyIsIm9uQ2xpY2siLCJGaWx0ZXJGdW5uZWwiLCJDdXJzb3JDbGljayIsIlNldHRpbmdzIiwiUEFORUxTIiwiREVGQVVMVF9MQVlFUl9HUk9VUFMiLCJzbHVnIiwiZmlsdGVyIiwibWF0Y2giLCJkZWZhdWx0VmlzaWJpbGl0eSIsIkRFRkFVTFRfTUFQX1NUWUxFUyIsInVybCIsImljb24iLCJsYXllckdyb3VwcyIsIkdFT0pTT05fRklFTERTIiwiZ2VvanNvbiIsIklDT05fRklFTERTIiwiVFJJUF9QT0lOVF9GSUVMRFMiLCJUUklQX0FSQ19GSUVMRFMiLCJsYXQwIiwibG5nMCIsImxhdDEiLCJsbmcxIiwiRklMVEVSX1RZUEVTIiwicmFuZ2UiLCJzZWxlY3QiLCJpbnB1dCIsInRpbWVSYW5nZSIsIm11bHRpU2VsZWN0IiwicG9seWdvbiIsIlNDQUxFX1RZUEVTIiwib3JkaW5hbCIsInF1YW50aWxlIiwicXVhbnRpemUiLCJsaW5lYXIiLCJzcXJ0IiwibG9nIiwicG9pbnQiLCJjdXN0b20iLCJTQ0FMRV9GVU5DIiwic2NhbGVMaW5lYXIiLCJzY2FsZVF1YW50aXplIiwic2NhbGVRdWFudGlsZSIsInNjYWxlT3JkaW5hbCIsInNjYWxlU3FydCIsInNjYWxlTG9nIiwic2NhbGVQb2ludCIsInNjYWxlVGhyZXNob2xkIiwiQUxMX0ZJRUxEX1RZUEVTIiwiZGF0ZSIsImludGVnZXIiLCJyZWFsIiwic3RyaW5nIiwidGltZXN0YW1wIiwiU09SVF9PUkRFUiIsIkFTQ0VORElORyIsIkRFU0NFTkRJTkciLCJVTlNPUlQiLCJUQUJMRV9PUFRJT04iLCJTT1JUX0FTQyIsIlNPUlRfREVTIiwiUElOIiwiVU5QSU4iLCJDT1BZIiwiVEFCTEVfT1BUSU9OX0xJU1QiLCJ2YWx1ZSIsImRpc3BsYXkiLCJBcnJvd1VwIiwiY29uZGl0aW9uIiwicHJvcHMiLCJzb3J0TW9kZSIsIkFycm93RG93biIsIkNhbmNlbCIsImlzU29ydGVkIiwiUGluIiwiaXNQaW5uZWQiLCJDbGlwYm9hcmQiLCJPUkFOR0UiLCJQSU5LIiwiUFVSUExFIiwiQkxVRSIsIkJMVUUyIiwiQkxVRTMiLCJHUkVFTiIsIlJFRCIsIkZJTEVEX1RZUEVfRElTUExBWSIsImNvbG9yIiwiRklFTERfQ09MT1JTIiwiSElHSExJR0hfQ09MT1JfM0QiLCJDSEFOTkVMX1NDQUxFUyIsInJhZGl1cyIsInNpemUiLCJjdXN0b21NYXJrZXIiLCJjb2xvckFnZ3IiLCJzaXplQWdnciIsImlkZW50aXR5IiwiQUdHUkVHQVRJT05fVFlQRVMiLCJjb3VudCIsImF2ZXJhZ2UiLCJtYXhpbXVtIiwibWluaW11bSIsIm1lZGlhbiIsInN0ZGV2Iiwic3VtIiwidmFyaWFuY2UiLCJtb2RlIiwiY291bnRVbmlxdWUiLCJGSUVMRF9UWVBFU19BR0dSRUdBVE9SUyIsIkZJRUxEX0FHR1JFR0FUT1JTIiwiZGlzcGxheU5hbWUiLCJsaW5lYXJGaWVsZFNjYWxlRnVuY3Rpb25zIiwibGluZWFyRmllbGRBZ2dyU2NhbGVGdW5jdGlvbnMiLCJvcmRpbmFsRmllbGRTY2FsZUZ1bmN0aW9ucyIsIm9yZGluYWxGaWVsZEFnZ3JTY2FsZUZ1bmN0aW9ucyIsIm5vdFN1cHBvcnRlZFNjYWxlT3B0cyIsIm5vdFN1cHBvcnRBZ2dyT3B0cyIsIkRFRkFVTFRfQUdHUkVHQVRJT04iLCJGSUVMRF9PUFRTIiwidHlwZSIsInNjYWxlIiwiZm9ybWF0IiwibGVnZW5kIiwiZCIsInRvb2x0aXAiLCJUT09MVElQX0ZPUk1BVF9UWVBFUyIsIk5PTkUiLCJERUNJTUFMIiwiUEVSQ0VOVEFHRSIsIkRBVEUiLCJEQVRFX1RJTUUiLCJCT09MRUFOIiwiQ0hBTk5FTF9TQ0FMRV9TVVBQT1JURURfRklFTERTIiwiT2JqZWN0Iiwia2V5cyIsInJlZHVjZSIsImFjY3UiLCJrZXkiLCJmdCIsImxlbmd0aCIsIkRFRkFVTFRfTEFZRVJfQ09MT1IiLCJ0cmlwQXJjIiwiYmVnaW50cmlwX2xhdCIsImRyb3BvZmZfbGF0IiwicmVxdWVzdF9sYXQiLCJERUZBVUxUX1RPT0xUSVBfRklFTERTIiwiTk9fVkFMVUVfQ09MT1IiLCJVTktOT1dOX0NPTE9SIiwiTEFZRVJfQkxFTkRJTkdTIiwiYWRkaXRpdmUiLCJibGVuZEZ1bmMiLCJibGVuZEVxdWF0aW9uIiwibm9ybWFsIiwic3VidHJhY3RpdmUiLCJNQVhfREVGQVVMVF9UT09MVElQUyIsIlJFU09MVVRJT05TIiwiT05FX1giLCJUV09fWCIsIkVYUE9SVF9JTUdfUkFUSU9TIiwiU0NSRUVOIiwiRk9VUl9CWV9USFJFRSIsIlNJWFRFRU5fQllfTklORSIsIkNVU1RPTSIsIkVYUE9SVF9JTUdfUkFUSU9fT1BUSU9OUyIsImdldFNpemUiLCJzY3JlZW5XIiwic2NyZWVuSCIsImhlaWdodCIsImhpZGRlbiIsIm1hcFciLCJtYXBIIiwiTWF0aCIsInJvdW5kIiwiRVhQT1JUX0lNR19SRVNPTFVUSU9OX09QVElPTlMiLCJhdmFpbGFibGUiLCJFWFBPUlRfREFUQV9UWVBFIiwiQ1NWIiwiRVhQT1JUX0RBVEFfVFlQRV9PUFRJT05TIiwidG9Mb3dlckNhc2UiLCJFWFBPUlRfTUFQX0ZPUk1BVFMiLCJIVE1MIiwiSlNPTiIsIkVYUE9SVF9IVE1MX01BUF9NT0RFUyIsIlJFQUQiLCJFRElUIiwiRVhQT1JUX01BUF9GT1JNQVRfT1BUSU9OUyIsImVudHJpZXMiLCJtYXAiLCJlbnRyeSIsIkVYUE9SVF9IVE1MX01BUF9NT0RFX09QVElPTlMiLCJERUZBVUxUX1VVSURfQ09VTlQiLCJERUZBVUxUX05PVElGSUNBVElPTl9NRVNTQUdFIiwiREVGQVVMVF9OT1RJRklDQVRJT05fVFlQRVMiLCJpbmZvIiwiZXJyb3IiLCJ3YXJuaW5nIiwic3VjY2VzcyIsIkRFRkFVTFRfTk9USUZJQ0FUSU9OX1RPUElDUyIsImdsb2JhbCIsImZpbGUiLCJUSFJPVFRMRV9OT1RJRklDQVRJT05fVElNRSIsIkJBU0VfU1BFRUQiLCJGUFMiLCJBTklNQVRJT05fV0lORE9XIiwiZnJlZSIsImluY3JlbWVudGFsIiwiaW50ZXJ2YWwiLCJERUZBVUxUX1RJTUVfRk9STUFUIiwiU1BFRURfQ09OVFJPTF9SQU5HRSIsIlNQRUVEX0NPTlRST0xfU1RFUCIsIkdFT0NPREVSX0RBVEFTRVRfTkFNRSIsIkdFT0NPREVSX0xBWUVSX0lEIiwiR0VPQ09ERVJfR0VPX09GRlNFVCIsIkdFT0NPREVSX0lDT05fQ09MT1IiLCJHRU9DT0RFUl9JQ09OX1NJWkUiLCJFRElUT1JfTU9ERVMiLCJSRUFEX09OTFkiLCJFZGl0b3JNb2RlcyIsIkRSQVdfUE9MWUdPTiIsIkRSQVdfUkVDVEFOR0xFIiwiRURJVF9WRVJURVgiLCJFRElUT1JfQVZBSUxBQkxFX0xBWUVSUyIsIkxBWUVSX1RZUEVTIiwiaGV4YWdvbiIsImFyYyIsImxpbmUiLCJoZXhhZ29uSWQiLCJNQVhfR1BVX0ZJTFRFUlMiLCJNQVBfVEhVTUJOQUlMX0RJTUVOU0lPTiIsIk1BUF9JTkZPX0NIQVJBQ1RFUiIsInRpdGxlIiwiZGVzY3JpcHRpb24iLCJMT0FESU5HX01FVEhPRFMiLCJ1cGxvYWQiLCJzdG9yYWdlIiwiREFUQVNFVF9GT1JNQVRTIiwicm93IiwiY3N2Iiwia2VwbGVyZ2wiLCJNQVBfQ09OVFJPTFMiLCJ2aXNpYmxlTGF5ZXJzIiwibWFwTGVnZW5kIiwidG9nZ2xlM2QiLCJzcGxpdE1hcCIsIm1hcERyYXciLCJtYXBMb2NhbGUiLCJNQVNLX0xBWUVSX0lEIiwiWk9PTV9MRVZFTF9MSU1JVFMiLCJtaW4iLCJtYXgiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBb0JBOztBQUNBOztBQUVBOztBQVVBOztBQVdBOztBQUNBOztBQUNBOzs7Ozs7OztBQUVPLElBQU1BLGFBQWEsR0FBRyxjQUF0Qjs7QUFDQSxJQUFNQyxVQUFVLEdBQUcsaURBQW5COztBQUNBLElBQU1DLFdBQVcsYUFBTUQsVUFBTixhQUFqQjs7QUFDQSxJQUFNRSxzQkFBc0IsR0FBRyx3QkFBL0IsQyxDQUVQOztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ08sSUFBTUMsYUFBYSxHQUFHLFdBQXRCO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDTyxJQUFNQyxjQUFjLEdBQUcsWUFBdkI7QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUNPLElBQU1DLFdBQVcsR0FBRyxTQUFwQjtBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ08sSUFBTUMsZUFBZSxHQUFHLGFBQXhCO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDTyxJQUFNQyxjQUFjLEdBQUcsWUFBdkI7QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUNPLElBQU1DLGdCQUFnQixHQUFHLGFBQXpCO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDTyxJQUFNQyxhQUFhLEdBQUcsV0FBdEI7QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUNPLElBQU1D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QUFDTyxJQUFNQyxlQUFlLEdBQUcsMkJBQVU7QUFDdkNDLEVBQUFBLE1BQU0sRUFBRSxJQUQrQjtBQUV2Q0MsRUFBQUEsT0FBTyxFQUFFO0FBRjhCLENBQVYsQ0FBeEI7O0FBS0EsSUFBTUMsZUFBZSxHQUFHLDJCQUFVO0FBQ3ZDQyxFQUFBQSxHQUFHLEVBQUUsSUFEa0M7QUFFdkM1TixFQUFBQSxPQUFPLEVBQUUsSUFGOEI7QUFHdkM2TixFQUFBQSxHQUFHLEVBQUUsSUFIa0M7QUFJdkNDLEVBQUFBLFFBQVEsRUFBRTtBQUo2QixDQUFWLENBQXhCOztBQU9BLElBQU1DLFlBQVksR0FBRywyQkFBVTtBQUNwQ0MsRUFBQUEsYUFBYSxFQUFFLElBRHFCO0FBRXBDQyxFQUFBQSxTQUFTLEVBQUUsSUFGeUI7QUFHcENDLEVBQUFBLFFBQVEsRUFBRSxJQUgwQjtBQUlwQ0MsRUFBQUEsUUFBUSxFQUFFLElBSjBCO0FBS3BDQyxFQUFBQSxPQUFPLEVBQUUsSUFMMkI7QUFNcENDLEVBQUFBLFNBQVMsRUFBRTtBQU55QixDQUFWLENBQXJCOztBQVNBLElBQU1DLGFBQWEsR0FBRyxZQUF0Qjs7QUFFQSxJQUFNQyxpQkFBaUIsR0FBRztBQUMvQkMsRUFBQUEsR0FBRyxFQUFFLENBRDBCO0FBRS9CQyxFQUFBQSxHQUFHLEVBQUU7QUFGMEIsQ0FBMUIiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgKGMpIDIwMjIgVWJlciBUZWNobm9sb2dpZXMsIEluYy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4vLyBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4vLyBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4vLyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4vLyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbi8vIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cbi8vIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1Jcbi8vIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4vLyBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4vLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuLy8gT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTlxuLy8gVEhFIFNPRlRXQVJFLlxuXG5pbXBvcnQga2V5TWlycm9yIGZyb20gJ2tleW1pcnJvcic7XG5pbXBvcnQge0VkaXRvck1vZGVzfSBmcm9tICdyZWFjdC1tYXAtZ2wtZHJhdyc7XG5cbmltcG9ydCB7XG4gIHNjYWxlTGluZWFyLFxuICBzY2FsZVF1YW50aXplLFxuICBzY2FsZVF1YW50aWxlLFxuICBzY2FsZU9yZGluYWwsXG4gIHNjYWxlU3FydCxcbiAgc2NhbGVMb2csXG4gIHNjYWxlUG9pbnQsXG4gIHNjYWxlVGhyZXNob2xkXG59IGZyb20gJ2QzLXNjYWxlJztcbmltcG9ydCB7XG4gIExheWVycyxcbiAgRmlsdGVyRnVubmVsLFxuICBTZXR0aW5ncyxcbiAgQ3Vyc29yQ2xpY2ssXG4gIFBpbixcbiAgQXJyb3dEb3duLFxuICBBcnJvd1VwLFxuICBDbGlwYm9hcmQsXG4gIENhbmNlbFxufSBmcm9tICdjb21wb25lbnRzL2NvbW1vbi9pY29ucyc7XG5pbXBvcnQge2dldEhUTUxNYXBNb2RlVGlsZVVybH0gZnJvbSAndXRpbHMvdXRpbHMnO1xuaW1wb3J0IHtUT09MVElQX0ZPUk1BVF9UWVBFU30gZnJvbSAnLi90b29sdGlwJztcbmltcG9ydCB7TEFZRVJfVFlQRVN9IGZyb20gJ2xheWVycy90eXBlcyc7XG5cbmV4cG9ydCBjb25zdCBBQ1RJT05fUFJFRklYID0gJ0BAa2VwbGVyLmdsLyc7XG5leHBvcnQgY29uc3QgQ0xPVURGUk9OVCA9ICdodHRwczovL2QxYTNmNHNwYXp6cnA0LmNsb3VkZnJvbnQubmV0L2tlcGxlci5nbCc7XG5leHBvcnQgY29uc3QgSUNPTl9QUkVGSVggPSBgJHtDTE9VREZST05UfS9nZW9kdWRlYDtcbmV4cG9ydCBjb25zdCBERUZBVUxUX01BUEJPWF9BUElfVVJMID0gJ2h0dHBzOi8vYXBpLm1hcGJveC5jb20nO1xuXG4vLyBNb2RhbCBJZHNcbi8qKlxuICogTW9kYWwgaWQ6IGRhdGEgdGFibGVcbiAqIEBjb25zdGFudFxuICogQHR5cGUge3N0cmluZ31cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IERBVEFfVEFCTEVfSUQgPSAnZGF0YVRhYmxlJztcbi8qKlxuICogTW9kYWwgaWQ6IGRlbGV0ZSBkYXRhc2V0IGNvbmZpcm0gZGlhbG9nXG4gKiBAY29uc3RhbnRcbiAqIEB0eXBlIHtzdHJpbmd9XG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBERUxFVEVfREFUQV9JRCA9ICdkZWxldGVEYXRhJztcbi8qKlxuICogTW9kYWwgaWQ6IGFkZCBkYXRhIG1vZGFsXG4gKiBAY29uc3RhbnRcbiAqIEB0eXBlIHtzdHJpbmd9XG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBBRERfREFUQV9JRCA9ICdhZGREYXRhJztcbi8qKlxuICogTW9kYWwgaWQ6IGV4cG9ydCBpbWFnZSBtb2RhbFxuICogQGNvbnN0YW50XG4gKiBAdHlwZSB7c3RyaW5nfVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgRVhQT1JUX0lNQUdFX0lEID0gJ2V4cG9ydEltYWdlJztcbi8qKlxuICogTW9kYWwgaWQ6IGV4cG9ydCBkYXRhIG1vZGFsXG4gKiBAY29uc3RhbnRcbiAqIEB0eXBlIHtzdHJpbmd9XG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBFWFBPUlRfREFUQV9JRCA9ICdleHBvcnREYXRhJztcbi8qKlxuICogTW9kYWwgaWQ6IGFkZCBjdXN0b20gbWFwIHN0eWxlIG1vZGFsXG4gKiBAY29uc3RhbnRcbiAqIEB0eXBlIHtzdHJpbmd9XG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBBRERfTUFQX1NUWUxFX0lEID0gJ2FkZE1hcFN0eWxlJztcbi8qKlxuICogTW9kYWwgaWQ6IGV4cG9ydCBtYXAgbW9kYWxcbiAqIEBjb25zdGFudFxuICogQHR5cGUge3N0cmluZ31cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IEVYUE9SVF9NQVBfSUQgPSAnZXhwb3J0TWFwJztcbi8qKlxuICogTW9kYWwgaWQ6IHNhdmUgbWFwIG1vZGFsXG4gKiBAY29uc3RhbnRcbiAqIEB0eXBlIHtzdHJpbmd9XG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBTQVZFX01BUF9JRCA9ICdzYXZlTWFwJztcbi8qKlxuICogTW9kYWwgaWQ6IGNvbmZpcm0gdG8gb3ZlcndyaXRlIHNhdmVkIG1hcFxuICogQGNvbnN0YW50XG4gKiBAdHlwZSB7c3RyaW5nfVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgT1ZFUldSSVRFX01BUF9JRCA9ICdvdmVyd3JpdGVNYXAnO1xuLyoqXG4gKiBNb2RhbCBpZDogc2hhcmUgbWFwIHVybCBtb2RhbFxuICogQGNvbnN0YW50XG4gKiBAdHlwZSB7c3RyaW5nfVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgU0hBUkVfTUFQX0lEID0gJ3NoYXJlTWFwJztcblxuZXhwb3J0IGNvbnN0IEtFUExFUl9HTF9OQU1FID0gJ2tlcGxlci5nbCc7XG5cbi8vIF9fUEFDS0FHRV9WRVJTSU9OX18gaXMgYXV0b21hdGljYWxseSBpbmplY3RlZCBieSBCYWJlbC9XZWJwYWNrIGR1cmluZyB0aGUgYnVpbGRpbmcgcHJvY2Vzc1xuLy8gU2luY2Ugd2UgYXJlIGluamVjdGluZyB0aGlzIGR1cmluZyB0aGUgYnVpbGQgcHJvY2VzcyB3aXRoIGJhYmVsXG4vLyB3aGlsZSBkZXZlbG9waW5nIFZFUlNJT04gaXMgbm90IGRlZmluZWQsIHdlIGNhcHR1cmUgdGhlIGV4Y2VwdGlvbiBhbmQgcmV0dXJuXG4vLyBhbiBlbXB0eSBzdHJpbmcgd2hpY2ggd2lsbCBhbGxvdyB1cyB0byByZXRyaWV2ZSB0aGUgbGF0ZXN0IHVtZCB2ZXJzaW9uXG5leHBvcnQgY29uc3QgS0VQTEVSX0dMX1ZFUlNJT04gPSAnX19QQUNLQUdFX1ZFUlNJT05fXyc7XG5leHBvcnQgY29uc3QgS0VQTEVSX0dMX1dFQlNJVEUgPSAnaHR0cDovL2tlcGxlci5nbC8nO1xuXG5leHBvcnQgY29uc3QgRElNRU5TSU9OUyA9IHtcbiAgc2lkZVBhbmVsOiB7XG4gICAgd2lkdGg6IDMwMCxcbiAgICBtYXJnaW46IHt0b3A6IDIwLCBsZWZ0OiAyMCwgYm90dG9tOiAzMCwgcmlnaHQ6IDIwfSxcbiAgICBoZWFkZXJIZWlnaHQ6IDk2XG4gIH0sXG4gIG1hcENvbnRyb2w6IHtcbiAgICB3aWR0aDogMTg0LFxuICAgIHBhZGRpbmc6IDEyXG4gIH1cbn07XG5cbi8qKlxuICogVGhlbWUgbmFtZSB0aGF0IGNhbiBiZSBwYXNzZWQgdG8gYEtlcGxlckdsYCBgcHJvcC50aGVtZWAuXG4gKiBBdmFpbGFibGUgdGhlbWVzIGFyZSBgVEhFTUUubGlnaHRgIGFuZCBgVEhFTUUuZGFya2AuIERlZmF1bHQgdGhlbWUgaXMgYFRIRU1FLmRhcmtgXG4gKiBAY29uc3RhbnRcbiAqIEB0eXBlIHtvYmplY3R9XG4gKiBAcHVibGljXG4gKiBAZXhhbXBsZVxuICogYGBganNcbiAqIGNvbnN0IE1hcCA9ICgpID0+IDxLZXBsZXJHbCB0aGVtZT17VEhFTUUubGlnaHR9IGlkPVwibWFwXCIvPlxuICogYGBgXG4gKi9cbmV4cG9ydCBjb25zdCBUSEVNRSA9IGtleU1pcnJvcih7XG4gIGxpZ2h0OiBudWxsLFxuICBkYXJrOiBudWxsLFxuICBiYXNlOiBudWxsXG59KTtcblxuZXhwb3J0IGNvbnN0IFNJREVCQVJfUEFORUxTID0gW1xuICB7XG4gICAgaWQ6ICdsYXllcicsXG4gICAgbGFiZWw6ICdzaWRlYmFyLnBhbmVscy5sYXllcicsXG4gICAgaWNvbkNvbXBvbmVudDogTGF5ZXJzLFxuICAgIG9uQ2xpY2s6IG51bGxcbiAgfSxcbiAge1xuICAgIGlkOiAnZmlsdGVyJyxcbiAgICBsYWJlbDogJ3NpZGViYXIucGFuZWxzLmZpbHRlcicsXG4gICAgaWNvbkNvbXBvbmVudDogRmlsdGVyRnVubmVsLFxuICAgIG9uQ2xpY2s6IG51bGxcbiAgfSxcbiAge1xuICAgIGlkOiAnaW50ZXJhY3Rpb24nLFxuICAgIGxhYmVsOiAnc2lkZWJhci5wYW5lbHMuaW50ZXJhY3Rpb24nLFxuICAgIGljb25Db21wb25lbnQ6IEN1cnNvckNsaWNrLFxuICAgIG9uQ2xpY2s6IG51bGxcbiAgfSxcbiAge1xuICAgIGlkOiAnbWFwJyxcbiAgICBsYWJlbDogJ3NpZGViYXIucGFuZWxzLmJhc2VtYXAnLFxuICAgIGljb25Db21wb25lbnQ6IFNldHRpbmdzLFxuICAgIG9uQ2xpY2s6IG51bGxcbiAgfVxuXTtcblxuLy8gYmFja3dhcmQgY29tcGF0aWJpbGl0eVxuZXhwb3J0IGNvbnN0IFBBTkVMUyA9IFNJREVCQVJfUEFORUxTO1xuXG4vLyBNQVAgU1RZTEVTXG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX0xBWUVSX0dST1VQUyA9IFtcbiAge1xuICAgIHNsdWc6ICdsYWJlbCcsXG4gICAgZmlsdGVyOiAoe2lkfSkgPT4gaWQubWF0Y2goLyg/PShsYWJlbHxwbGFjZS18cG9pLSkpLyksXG4gICAgZGVmYXVsdFZpc2liaWxpdHk6IHRydWVcbiAgfSxcbiAge1xuICAgIHNsdWc6ICdyb2FkJyxcbiAgICBmaWx0ZXI6ICh7aWR9KSA9PiBpZC5tYXRjaCgvKD89KHJvYWR8cmFpbHdheXx0dW5uZWx8c3RyZWV0fGJyaWRnZSkpKD8hLipsYWJlbCkvKSxcbiAgICBkZWZhdWx0VmlzaWJpbGl0eTogdHJ1ZVxuICB9LFxuICB7XG4gICAgc2x1ZzogJ2JvcmRlcicsXG4gICAgZmlsdGVyOiAoe2lkfSkgPT4gaWQubWF0Y2goL2JvcmRlcnxib3VuZGFyaWVzLyksXG4gICAgZGVmYXVsdFZpc2liaWxpdHk6IGZhbHNlXG4gIH0sXG4gIHtcbiAgICBzbHVnOiAnYnVpbGRpbmcnLFxuICAgIGZpbHRlcjogKHtpZH0pID0+IGlkLm1hdGNoKC9idWlsZGluZy8pLFxuICAgIGRlZmF1bHRWaXNpYmlsaXR5OiB0cnVlXG4gIH0sXG4gIHtcbiAgICBzbHVnOiAnd2F0ZXInLFxuICAgIGZpbHRlcjogKHtpZH0pID0+IGlkLm1hdGNoKC8oPz0od2F0ZXJ8c3RyZWFtfGZlcnJ5KSkvKSxcbiAgICBkZWZhdWx0VmlzaWJpbGl0eTogdHJ1ZVxuICB9LFxuICB7XG4gICAgc2x1ZzogJ2xhbmQnLFxuICAgIGZpbHRlcjogKHtpZH0pID0+IGlkLm1hdGNoKC8oPz0ocGFya3N8bGFuZGNvdmVyfGluZHVzdHJpYWx8c2FuZHxoaWxsc2hhZGUpKS8pLFxuICAgIGRlZmF1bHRWaXNpYmlsaXR5OiB0cnVlXG4gIH0sXG4gIHtcbiAgICBzbHVnOiAnM2QgYnVpbGRpbmcnLFxuICAgIGZpbHRlcjogKCkgPT4gZmFsc2UsXG4gICAgZGVmYXVsdFZpc2liaWxpdHk6IGZhbHNlXG4gIH1cbl07XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX01BUF9TVFlMRVMgPSBbXG4gIHtcbiAgICBpZDogJ2RhcmsnLFxuICAgIGxhYmVsOiAnRGFyaycsXG4gICAgdXJsOiAnbWFwYm94Oi8vc3R5bGVzL3ViZXJkYXRhL2Nqb3FiYmY2bDlrMzAyc2w5NnR5dmthMDknLFxuICAgIGljb246IGAke0lDT05fUFJFRklYfS9VQkVSX0RBUktfVjIucG5nYCxcbiAgICBsYXllckdyb3VwczogREVGQVVMVF9MQVlFUl9HUk9VUFNcbiAgfSxcbiAge1xuICAgIGlkOiAnbGlnaHQnLFxuICAgIGxhYmVsOiAnTGlnaHQnLFxuICAgIHVybDogJ21hcGJveDovL3N0eWxlcy91YmVyZGF0YS9jam9xYjlqMzM5azFmMnNsOXQ1aWM1Ym40JyxcbiAgICBpY29uOiBgJHtJQ09OX1BSRUZJWH0vVUJFUl9MSUdIVF9WMi5wbmdgLFxuICAgIGxheWVyR3JvdXBzOiBERUZBVUxUX0xBWUVSX0dST1VQU1xuICB9LFxuICB7XG4gICAgaWQ6ICdtdXRlZCcsXG4gICAgbGFiZWw6ICdNdXRlZCBMaWdodCcsXG4gICAgdXJsOiAnbWFwYm94Oi8vc3R5bGVzL3ViZXJkYXRhL2NqZnlsMDNrcDF0dWwyc21mNXYydGJkZDQnLFxuICAgIGljb246IGAke0lDT05fUFJFRklYfS9VQkVSX01VVEVEX0xJR0hULnBuZ2AsXG4gICAgbGF5ZXJHcm91cHM6IERFRkFVTFRfTEFZRVJfR1JPVVBTXG4gIH0sXG4gIHtcbiAgICBpZDogJ211dGVkX25pZ2h0JyxcbiAgICBsYWJlbDogJ011dGVkIE5pZ2h0JyxcbiAgICB1cmw6ICdtYXBib3g6Ly9zdHlsZXMvdWJlcmRhdGEvY2pmeGhsaWttYWoxYjJzb3l6ZXZueXdncycsXG4gICAgaWNvbjogYCR7SUNPTl9QUkVGSVh9L1VCRVJfTVVURURfTklHSFQucG5nYCxcbiAgICBsYXllckdyb3VwczogREVGQVVMVF9MQVlFUl9HUk9VUFNcbiAgfSxcbiAge1xuICAgIGlkOiAnc2F0ZWxsaXRlJyxcbiAgICBsYWJlbDogJ1NhdGVsbGl0ZScsXG4gICAgdXJsOiBgbWFwYm94Oi8vc3R5bGVzL21hcGJveC9zYXRlbGxpdGUtdjlgLFxuICAgIGljb246IGAke0lDT05fUFJFRklYfS9VQkVSX1NBVEVMTElURS5wbmdgXG4gIH1cbl07XG5cbmV4cG9ydCBjb25zdCBHRU9KU09OX0ZJRUxEUyA9IHtcbiAgZ2VvanNvbjogWydfZ2VvanNvbicsICdhbGxfcG9pbnRzJywgJ2dlb2pzb24nXVxufTtcblxuZXhwb3J0IGNvbnN0IElDT05fRklFTERTID0ge1xuICBpY29uOiBbJ2ljb24nXVxufTtcblxuZXhwb3J0IGNvbnN0IFRSSVBfUE9JTlRfRklFTERTID0gW1xuICBbJ2xhdCcsICdsbmcnXSxcbiAgWydsYXQnLCAnbG9uJ10sXG4gIFsnbGF0aXR1ZGUnLCAnbG9uZ2l0dWRlJ11cbl07XG5cbmV4cG9ydCBjb25zdCBUUklQX0FSQ19GSUVMRFMgPSB7XG4gIGxhdDA6ICdiZWdpbnRyaXAnLFxuICBsbmcwOiAnYmVnaW50cmlwJyxcbiAgbGF0MTogJ2Ryb3BvZmYnLFxuICBsbmcxOiAnZHJvcG9mZidcbn07XG5cbmV4cG9ydCBjb25zdCBGSUxURVJfVFlQRVMgPSBrZXlNaXJyb3Ioe1xuICByYW5nZTogbnVsbCxcbiAgc2VsZWN0OiBudWxsLFxuICBpbnB1dDogbnVsbCxcbiAgdGltZVJhbmdlOiBudWxsLFxuICBtdWx0aVNlbGVjdDogbnVsbCxcbiAgcG9seWdvbjogbnVsbFxufSk7XG5cbmV4cG9ydCBjb25zdCBTQ0FMRV9UWVBFUyA9IGtleU1pcnJvcih7XG4gIG9yZGluYWw6IG51bGwsXG4gIHF1YW50aWxlOiBudWxsLFxuICBxdWFudGl6ZTogbnVsbCxcbiAgbGluZWFyOiBudWxsLFxuICBzcXJ0OiBudWxsLFxuICBsb2c6IG51bGwsXG5cbiAgLy8gb3JkaW5hbCBkb21haW4gdG8gbGluZWFyIHJhbmdlXG4gIHBvaW50OiBudWxsLFxuICBjdXN0b206IG51bGxcbn0pO1xuXG5leHBvcnQgY29uc3QgU0NBTEVfRlVOQyA9IHtcbiAgW1NDQUxFX1RZUEVTLmxpbmVhcl06IHNjYWxlTGluZWFyLFxuICBbU0NBTEVfVFlQRVMucXVhbnRpemVdOiBzY2FsZVF1YW50aXplLFxuICBbU0NBTEVfVFlQRVMucXVhbnRpbGVdOiBzY2FsZVF1YW50aWxlLFxuICBbU0NBTEVfVFlQRVMub3JkaW5hbF06IHNjYWxlT3JkaW5hbCxcbiAgW1NDQUxFX1RZUEVTLnNxcnRdOiBzY2FsZVNxcnQsXG4gIFtTQ0FMRV9UWVBFUy5sb2ddOiBzY2FsZUxvZyxcbiAgW1NDQUxFX1RZUEVTLnBvaW50XTogc2NhbGVQb2ludCxcbiAgW1NDQUxFX1RZUEVTLmN1c3RvbV06IHNjYWxlVGhyZXNob2xkXG59O1xuXG5leHBvcnQgY29uc3QgQUxMX0ZJRUxEX1RZUEVTID0ga2V5TWlycm9yKHtcbiAgYm9vbGVhbjogbnVsbCxcbiAgZGF0ZTogbnVsbCxcbiAgZ2VvanNvbjogbnVsbCxcbiAgaW50ZWdlcjogbnVsbCxcbiAgcmVhbDogbnVsbCxcbiAgc3RyaW5nOiBudWxsLFxuICB0aW1lc3RhbXA6IG51bGwsXG4gIHBvaW50OiBudWxsXG59KTtcblxuLy8gRGF0YSBUYWJsZVxuZXhwb3J0IGNvbnN0IFNPUlRfT1JERVIgPSBrZXlNaXJyb3Ioe1xuICBBU0NFTkRJTkc6IG51bGwsXG4gIERFU0NFTkRJTkc6IG51bGwsXG4gIFVOU09SVDogbnVsbFxufSk7XG5cbmV4cG9ydCBjb25zdCBUQUJMRV9PUFRJT04gPSBrZXlNaXJyb3Ioe1xuICBTT1JUX0FTQzogbnVsbCxcbiAgU09SVF9ERVM6IG51bGwsXG4gIFVOU09SVDogbnVsbCxcbiAgUElOOiBudWxsLFxuICBVTlBJTjogbnVsbCxcbiAgQ09QWTogbnVsbFxufSk7XG5cbmV4cG9ydCBjb25zdCBUQUJMRV9PUFRJT05fTElTVCA9IFtcbiAge1xuICAgIHZhbHVlOiBUQUJMRV9PUFRJT04uU09SVF9BU0MsXG4gICAgZGlzcGxheTogJ1NvcnQgQXNjZW5kaW5nJyxcbiAgICBpY29uOiBBcnJvd1VwLFxuICAgIGNvbmRpdGlvbjogcHJvcHMgPT4gcHJvcHMuc29ydE1vZGUgIT09IFNPUlRfT1JERVIuQVNDRU5ESU5HXG4gIH0sXG4gIHtcbiAgICB2YWx1ZTogVEFCTEVfT1BUSU9OLlNPUlRfREVTLFxuICAgIGRpc3BsYXk6ICdTb3J0IERlc2NlbmRpbmcnLFxuICAgIGljb246IEFycm93RG93bixcbiAgICBjb25kaXRpb246IHByb3BzID0+IHByb3BzLnNvcnRNb2RlICE9PSBTT1JUX09SREVSLkRFU0NFTkRJTkdcbiAgfSxcbiAge1xuICAgIHZhbHVlOiBUQUJMRV9PUFRJT04uVU5TT1JULFxuICAgIGRpc3BsYXk6ICdVbnNvcnQgQ29sdW1uJyxcbiAgICBpY29uOiBDYW5jZWwsXG4gICAgY29uZGl0aW9uOiBwcm9wcyA9PiBwcm9wcy5pc1NvcnRlZFxuICB9LFxuICB7dmFsdWU6IFRBQkxFX09QVElPTi5QSU4sIGRpc3BsYXk6ICdQaW4gQ29sdW1uJywgaWNvbjogUGluLCBjb25kaXRpb246IHByb3BzID0+ICFwcm9wcy5pc1Bpbm5lZH0sXG4gIHtcbiAgICB2YWx1ZTogVEFCTEVfT1BUSU9OLlVOUElOLFxuICAgIGRpc3BsYXk6ICdVbnBpbiBDb2x1bW4nLFxuICAgIGljb246IENhbmNlbCxcbiAgICBjb25kaXRpb246IHByb3BzID0+IHByb3BzLmlzUGlubmVkXG4gIH0sXG4gIHt2YWx1ZTogVEFCTEVfT1BUSU9OLkNPUFksIGRpc3BsYXk6ICdDb3B5IENvbHVtbicsIGljb246IENsaXBib2FyZH1cbl07XG5cbmNvbnN0IE9SQU5HRSA9ICcyNDgsIDE5NCwgMjgnO1xuY29uc3QgUElOSyA9ICcyMzEsIDE4OSwgMTk0JztcbmNvbnN0IFBVUlBMRSA9ICcxNjAsIDEwNiwgMjA2JztcbmNvbnN0IEJMVUUgPSAnMTQwLCAyMTAsIDIwNSc7XG5jb25zdCBCTFVFMiA9ICcxMDYsIDE2MCwgMjA2JztcbmNvbnN0IEJMVUUzID0gJzAsIDE3MiwgMjM3JztcbmNvbnN0IEdSRUVOID0gJzEwNiwgMTYwLCA1Nic7XG5jb25zdCBSRUQgPSAnMjM3LCA4OCwgMTA2JztcblxuZXhwb3J0IGNvbnN0IEZJTEVEX1RZUEVfRElTUExBWSA9IHtcbiAgW0FMTF9GSUVMRF9UWVBFUy5ib29sZWFuXToge1xuICAgIGxhYmVsOiAnYm9vbCcsXG4gICAgY29sb3I6IFBJTktcbiAgfSxcbiAgW0FMTF9GSUVMRF9UWVBFUy5kYXRlXToge1xuICAgIGxhYmVsOiAnZGF0ZScsXG4gICAgY29sb3I6IFBVUlBMRVxuICB9LFxuICBbQUxMX0ZJRUxEX1RZUEVTLmdlb2pzb25dOiB7XG4gICAgbGFiZWw6ICdnZW8nLFxuICAgIGNvbG9yOiBCTFVFMlxuICB9LFxuICBbQUxMX0ZJRUxEX1RZUEVTLmludGVnZXJdOiB7XG4gICAgbGFiZWw6ICdpbnQnLFxuICAgIGNvbG9yOiBPUkFOR0VcbiAgfSxcbiAgW0FMTF9GSUVMRF9UWVBFUy5yZWFsXToge1xuICAgIGxhYmVsOiAnZmxvYXQnLFxuICAgIGNvbG9yOiBPUkFOR0VcbiAgfSxcbiAgW0FMTF9GSUVMRF9UWVBFUy5zdHJpbmddOiB7XG4gICAgbGFiZWw6ICdzdHJpbmcnLFxuICAgIGNvbG9yOiBCTFVFXG4gIH0sXG4gIFtBTExfRklFTERfVFlQRVMudGltZXN0YW1wXToge1xuICAgIGxhYmVsOiAndGltZScsXG4gICAgY29sb3I6IEdSRUVOXG4gIH0sXG4gIC8vIGZpZWxkIHBhaXJzXG4gIFtBTExfRklFTERfVFlQRVMucG9pbnRdOiB7XG4gICAgbGFiZWw6ICdwb2ludCcsXG4gICAgY29sb3I6IEJMVUUzXG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBGSUVMRF9DT0xPUlMgPSB7XG4gIGRlZmF1bHQ6IFJFRFxufTtcbmV4cG9ydCBjb25zdCBISUdITElHSF9DT0xPUl8zRCA9IFsyNTUsIDI1NSwgMjU1LCA2MF07XG5leHBvcnQgY29uc3QgQ0hBTk5FTF9TQ0FMRVMgPSBrZXlNaXJyb3Ioe1xuICBjb2xvcjogbnVsbCxcbiAgcmFkaXVzOiBudWxsLFxuICBzaXplOiBudWxsLFxuICBjdXN0b21NYXJrZXI6IG51bGwsXG4gIGNvbG9yQWdncjogbnVsbCxcbiAgc2l6ZUFnZ3I6IG51bGwsXG4gIGlkZW50aXR5OiBudWxsXG59KTtcblxuZXhwb3J0IGNvbnN0IEFHR1JFR0FUSU9OX1RZUEVTID0ge1xuICAvLyBkZWZhdWx0XG4gIGNvdW50OiAnY291bnQnLFxuICAvLyBsaW5lYXJcbiAgYXZlcmFnZTogJ2F2ZXJhZ2UnLFxuICBtYXhpbXVtOiAnbWF4aW11bScsXG4gIG1pbmltdW06ICdtaW5pbXVtJyxcbiAgbWVkaWFuOiAnbWVkaWFuJyxcbiAgc3RkZXY6ICdzdGRldicsXG4gIHN1bTogJ3N1bScsXG4gIHZhcmlhbmNlOiAndmFyaWFuY2UnLFxuICAvLyBvcmRpbmFsXG4gIG1vZGU6ICdtb2RlJyxcbiAgY291bnRVbmlxdWU6ICdjb3VudCB1bmlxdWUnXG59O1xuXG5leHBvcnQgY29uc3QgRklFTERfVFlQRVNfQUdHUkVHQVRPUlMgPSB7XG4gIGRhdGU6IG51bGwsXG4gIGdlb2pzb246IG51bGwsXG4gIGludGVnZXI6IFtcbiAgICBBR0dSRUdBVElPTl9UWVBFUy5hdmVyYWdlLFxuICAgIEFHR1JFR0FUSU9OX1RZUEVTLm1heGltdW0sXG4gICAgQUdHUkVHQVRJT05fVFlQRVMubWluaW11bSxcbiAgICBBR0dSRUdBVElPTl9UWVBFUy5zdGRldixcbiAgICBBR0dSRUdBVElPTl9UWVBFUy5zdW0sXG4gICAgQUdHUkVHQVRJT05fVFlQRVMudmFyaWFuY2VcbiAgXSxcbiAgcmVhbDogW1xuICAgIEFHR1JFR0FUSU9OX1RZUEVTLmF2ZXJhZ2UsXG4gICAgQUdHUkVHQVRJT05fVFlQRVMubWF4aW11bSxcbiAgICBBR0dSRUdBVElPTl9UWVBFUy5taW5pbXVtLFxuICAgIEFHR1JFR0FUSU9OX1RZUEVTLnN0ZGV2LFxuICAgIEFHR1JFR0FUSU9OX1RZUEVTLnN1bSxcbiAgICBBR0dSRUdBVElPTl9UWVBFUy52YXJpYW5jZVxuICBdLFxuICBzdHJpbmc6IG51bGwsXG4gIHRpbWVzdGFtcDogbnVsbCxcbiAgcG9pbnQ6IG51bGxcbn07XG5cbmV4cG9ydCBjb25zdCBGSUVMRF9BR0dSRUdBVE9SUyA9IFtcbiAge1xuICAgIGlkOiBBR0dSRUdBVElPTl9UWVBFUy5hdmVyYWdlLFxuICAgIGRpc3BsYXlOYW1lOiAnQVZHJ1xuICB9LFxuICB7XG4gICAgaWQ6IEFHR1JFR0FUSU9OX1RZUEVTLm1heGltdW0sXG4gICAgZGlzcGxheU5hbWU6ICdNQVgnXG4gIH0sXG4gIHtcbiAgICBpZDogQUdHUkVHQVRJT05fVFlQRVMubWluaW11bSxcbiAgICBkaXNwbGF5TmFtZTogJ01JTidcbiAgfSxcbiAge1xuICAgIGlkOiBBR0dSRUdBVElPTl9UWVBFUy5zdGRldixcbiAgICBkaXNwbGF5TmFtZTogJ1NUREVWJ1xuICB9LFxuICB7XG4gICAgaWQ6IEFHR1JFR0FUSU9OX1RZUEVTLnN1bSxcbiAgICBkaXNwbGF5TmFtZTogJ1NVTSdcbiAgfSxcbiAge1xuICAgIGlkOiBBR0dSRUdBVElPTl9UWVBFUy52YXJpYW5jZSxcbiAgICBkaXNwbGF5TmFtZTogJ1ZBUklBTkNFJ1xuICB9XG5dO1xuXG5leHBvcnQgY29uc3QgbGluZWFyRmllbGRTY2FsZUZ1bmN0aW9ucyA9IHtcbiAgW0NIQU5ORUxfU0NBTEVTLmNvbG9yXTogW1NDQUxFX1RZUEVTLnF1YW50aXplLCBTQ0FMRV9UWVBFUy5xdWFudGlsZSwgU0NBTEVfVFlQRVMuY3VzdG9tXSxcbiAgW0NIQU5ORUxfU0NBTEVTLnJhZGl1c106IFtTQ0FMRV9UWVBFUy5zcXJ0XSxcbiAgW0NIQU5ORUxfU0NBTEVTLnNpemVdOiBbU0NBTEVfVFlQRVMubGluZWFyLCBTQ0FMRV9UWVBFUy5zcXJ0LCBTQ0FMRV9UWVBFUy5sb2ddLFxuICBbQ0hBTk5FTF9TQ0FMRVMuY3VzdG9tTWFya2VyXTogW1NDQUxFX1RZUEVTLm9yZGluYWxdLFxuICBbQ0hBTk5FTF9TQ0FMRVMuaWRlbnRpdHldOiBbXVxufTtcblxuZXhwb3J0IGNvbnN0IGxpbmVhckZpZWxkQWdnclNjYWxlRnVuY3Rpb25zID0ge1xuICBbQ0hBTk5FTF9TQ0FMRVMuY29sb3JBZ2dyXToge1xuICAgIFtBR0dSRUdBVElPTl9UWVBFUy5hdmVyYWdlXTogW1NDQUxFX1RZUEVTLnF1YW50aXplLCBTQ0FMRV9UWVBFUy5xdWFudGlsZSwgU0NBTEVfVFlQRVMuY3VzdG9tXSxcbiAgICBbQUdHUkVHQVRJT05fVFlQRVMubWF4aW11bV06IFtTQ0FMRV9UWVBFUy5xdWFudGl6ZSwgU0NBTEVfVFlQRVMucXVhbnRpbGUsIFNDQUxFX1RZUEVTLmN1c3RvbV0sXG4gICAgW0FHR1JFR0FUSU9OX1RZUEVTLm1pbmltdW1dOiBbU0NBTEVfVFlQRVMucXVhbnRpemUsIFNDQUxFX1RZUEVTLnF1YW50aWxlLCBTQ0FMRV9UWVBFUy5jdXN0b21dLFxuICAgIFtBR0dSRUdBVElPTl9UWVBFUy5tZWRpYW5dOiBbU0NBTEVfVFlQRVMucXVhbnRpemUsIFNDQUxFX1RZUEVTLnF1YW50aWxlLCBTQ0FMRV9UWVBFUy5jdXN0b21dLFxuICAgIFtBR0dSRUdBVElPTl9UWVBFUy5zdGRldl06IFtTQ0FMRV9UWVBFUy5xdWFudGl6ZSwgU0NBTEVfVFlQRVMucXVhbnRpbGUsIFNDQUxFX1RZUEVTLmN1c3RvbV0sXG4gICAgW0FHR1JFR0FUSU9OX1RZUEVTLnN1bV06IFtTQ0FMRV9UWVBFUy5xdWFudGl6ZSwgU0NBTEVfVFlQRVMucXVhbnRpbGUsIFNDQUxFX1RZUEVTLmN1c3RvbV0sXG4gICAgW0FHR1JFR0FUSU9OX1RZUEVTLnZhcmlhbmNlXTogW1NDQUxFX1RZUEVTLnF1YW50aXplLCBTQ0FMRV9UWVBFUy5xdWFudGlsZSwgU0NBTEVfVFlQRVMuY3VzdG9tXVxuICB9LFxuXG4gIFtDSEFOTkVMX1NDQUxFUy5zaXplQWdncl06IHtcbiAgICBbQUdHUkVHQVRJT05fVFlQRVMuYXZlcmFnZV06IFtTQ0FMRV9UWVBFUy5saW5lYXIsIFNDQUxFX1RZUEVTLnNxcnQsIFNDQUxFX1RZUEVTLmxvZ10sXG4gICAgW0FHR1JFR0FUSU9OX1RZUEVTLm1heGltdW1dOiBbU0NBTEVfVFlQRVMubGluZWFyLCBTQ0FMRV9UWVBFUy5zcXJ0LCBTQ0FMRV9UWVBFUy5sb2ddLFxuICAgIFtBR0dSRUdBVElPTl9UWVBFUy5taW5pbXVtXTogW1NDQUxFX1RZUEVTLmxpbmVhciwgU0NBTEVfVFlQRVMuc3FydCwgU0NBTEVfVFlQRVMubG9nXSxcbiAgICBbQUdHUkVHQVRJT05fVFlQRVMubWVkaWFuXTogW1NDQUxFX1RZUEVTLmxpbmVhciwgU0NBTEVfVFlQRVMuc3FydCwgU0NBTEVfVFlQRVMubG9nXSxcbiAgICBbQUdHUkVHQVRJT05fVFlQRVMuc3RkZXZdOiBbU0NBTEVfVFlQRVMubGluZWFyLCBTQ0FMRV9UWVBFUy5zcXJ0LCBTQ0FMRV9UWVBFUy5sb2ddLFxuICAgIFtBR0dSRUdBVElPTl9UWVBFUy5zdW1dOiBbU0NBTEVfVFlQRVMubGluZWFyLCBTQ0FMRV9UWVBFUy5zcXJ0LCBTQ0FMRV9UWVBFUy5sb2ddLFxuICAgIFtBR0dSRUdBVElPTl9UWVBFUy52YXJpYW5jZV06IFtTQ0FMRV9UWVBFUy5saW5lYXIsIFNDQUxFX1RZUEVTLnNxcnQsIFNDQUxFX1RZUEVTLmxvZ11cbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IG9yZGluYWxGaWVsZFNjYWxlRnVuY3Rpb25zID0ge1xuICBbQ0hBTk5FTF9TQ0FMRVMuY29sb3JdOiBbU0NBTEVfVFlQRVMub3JkaW5hbF0sXG4gIFtDSEFOTkVMX1NDQUxFUy5yYWRpdXNdOiBbU0NBTEVfVFlQRVMucG9pbnRdLFxuICBbQ0hBTk5FTF9TQ0FMRVMuc2l6ZV06IFtTQ0FMRV9UWVBFUy5wb2ludF0sXG4gIFtDSEFOTkVMX1NDQUxFUy5jdXN0b21NYXJrZXJdOiBbU0NBTEVfVFlQRVMub3JkaW5hbF0sXG4gIFtDSEFOTkVMX1NDQUxFUy5pZGVudGl0eV06IFtdXG59O1xuXG5leHBvcnQgY29uc3Qgb3JkaW5hbEZpZWxkQWdnclNjYWxlRnVuY3Rpb25zID0ge1xuICAvLyBbQ0hBTk5FTF9TQ0FMRVMuY29sb3JBZ2dyXTogW1NDQUxFX1RZUEVTLm9yZGluYWwsIFNDQUxFX1RZUEVTLmxpbmVhcl0sXG4gIFtDSEFOTkVMX1NDQUxFUy5jb2xvckFnZ3JdOiB7XG4gICAgW0FHR1JFR0FUSU9OX1RZUEVTLm1vZGVdOiBbU0NBTEVfVFlQRVMub3JkaW5hbF0sXG4gICAgW0FHR1JFR0FUSU9OX1RZUEVTLmNvdW50VW5pcXVlXTogW1xuICAgICAgU0NBTEVfVFlQRVMucXVhbnRpemUsXG4gICAgICBTQ0FMRV9UWVBFUy5xdWFudGlsZSxcbiAgICAgIFNDQUxFX1RZUEVTLmN1c3RvbVxuICAgIF1cbiAgfSxcblxuICAvLyBDdXJyZW50bHkgZG9lc24ndCBzdXBwb3J0IHlldFxuICBbQ0hBTk5FTF9TQ0FMRVMuc2l6ZUFnZ3JdOiB7fVxufTtcblxuZXhwb3J0IGNvbnN0IG5vdFN1cHBvcnRlZFNjYWxlT3B0cyA9IHtcbiAgW0NIQU5ORUxfU0NBTEVTLmNvbG9yXTogW10sXG4gIFtDSEFOTkVMX1NDQUxFUy5yYWRpdXNdOiBbXSxcbiAgW0NIQU5ORUxfU0NBTEVTLnNpemVdOiBbXSxcbiAgW0NIQU5ORUxfU0NBTEVTLmN1c3RvbU1hcmtlcl06IFtdLFxuICBbQ0hBTk5FTF9TQ0FMRVMuaWRlbnRpdHldOiBbXVxufTtcblxuZXhwb3J0IGNvbnN0IG5vdFN1cHBvcnRBZ2dyT3B0cyA9IHtcbiAgW0NIQU5ORUxfU0NBTEVTLmNvbG9yQWdncl06IHt9LFxuICBbQ0hBTk5FTF9TQ0FMRVMuc2l6ZUFnZ3JdOiB7fVxufTtcblxuLyoqXG4gKiBEZWZhdWx0IGFnZ3JlZ2F0aW9uIGFyZSBiYXNlZCBvbiBvY3VudFxuICovXG5leHBvcnQgY29uc3QgREVGQVVMVF9BR0dSRUdBVElPTiA9IHtcbiAgW0NIQU5ORUxfU0NBTEVTLmNvbG9yQWdncl06IHtcbiAgICBbQUdHUkVHQVRJT05fVFlQRVMuY291bnRdOiBbU0NBTEVfVFlQRVMucXVhbnRpemUsIFNDQUxFX1RZUEVTLnF1YW50aWxlLCBTQ0FMRV9UWVBFUy5jdXN0b21dXG4gIH0sXG4gIFtDSEFOTkVMX1NDQUxFUy5zaXplQWdncl06IHtcbiAgICBbQUdHUkVHQVRJT05fVFlQRVMuY291bnRdOiBbU0NBTEVfVFlQRVMubGluZWFyLCBTQ0FMRV9UWVBFUy5zcXJ0LCBTQ0FMRV9UWVBFUy5sb2ddXG4gIH1cbn07XG5cbi8qKlxuICogRGVmaW5lIHdoYXQgdHlwZSBvZiBzY2FsZSBvcGVyYXRpb24gaXMgYWxsb3dlZCBvbiBlYWNoIHR5cGUgb2YgZmllbGRzXG4gKi9cbmV4cG9ydCBjb25zdCBGSUVMRF9PUFRTID0ge1xuICBzdHJpbmc6IHtcbiAgICB0eXBlOiAnY2F0ZWdvcmljYWwnLFxuICAgIHNjYWxlOiB7XG4gICAgICAuLi5vcmRpbmFsRmllbGRTY2FsZUZ1bmN0aW9ucyxcbiAgICAgIC4uLm9yZGluYWxGaWVsZEFnZ3JTY2FsZUZ1bmN0aW9uc1xuICAgIH0sXG4gICAgZm9ybWF0OiB7XG4gICAgICBsZWdlbmQ6IGQgPT4gZCxcbiAgICAgIHRvb2x0aXA6IFtdXG4gICAgfVxuICB9LFxuICByZWFsOiB7XG4gICAgdHlwZTogJ251bWVyaWNhbCcsXG4gICAgc2NhbGU6IHtcbiAgICAgIC4uLmxpbmVhckZpZWxkU2NhbGVGdW5jdGlvbnMsXG4gICAgICAuLi5saW5lYXJGaWVsZEFnZ3JTY2FsZUZ1bmN0aW9uc1xuICAgIH0sXG4gICAgZm9ybWF0OiB7XG4gICAgICBsZWdlbmQ6IGQgPT4gZCxcbiAgICAgIHRvb2x0aXA6IFtcbiAgICAgICAgVE9PTFRJUF9GT1JNQVRfVFlQRVMuTk9ORSxcbiAgICAgICAgVE9PTFRJUF9GT1JNQVRfVFlQRVMuREVDSU1BTCxcbiAgICAgICAgVE9PTFRJUF9GT1JNQVRfVFlQRVMuUEVSQ0VOVEFHRVxuICAgICAgXVxuICAgIH1cbiAgfSxcbiAgdGltZXN0YW1wOiB7XG4gICAgdHlwZTogJ3RpbWUnLFxuICAgIHNjYWxlOiB7XG4gICAgICAuLi5saW5lYXJGaWVsZFNjYWxlRnVuY3Rpb25zLFxuICAgICAgLi4ubm90U3VwcG9ydEFnZ3JPcHRzXG4gICAgfSxcbiAgICBmb3JtYXQ6IHtcbiAgICAgIGxlZ2VuZDogZCA9PiBkLFxuICAgICAgdG9vbHRpcDogW1xuICAgICAgICBUT09MVElQX0ZPUk1BVF9UWVBFUy5OT05FLFxuICAgICAgICBUT09MVElQX0ZPUk1BVF9UWVBFUy5EQVRFLFxuICAgICAgICBUT09MVElQX0ZPUk1BVF9UWVBFUy5EQVRFX1RJTUVcbiAgICAgIF1cbiAgICB9XG4gIH0sXG4gIGludGVnZXI6IHtcbiAgICB0eXBlOiAnbnVtZXJpY2FsJyxcbiAgICBzY2FsZToge1xuICAgICAgLi4ubGluZWFyRmllbGRTY2FsZUZ1bmN0aW9ucyxcbiAgICAgIC4uLmxpbmVhckZpZWxkQWdnclNjYWxlRnVuY3Rpb25zXG4gICAgfSxcbiAgICBmb3JtYXQ6IHtcbiAgICAgIGxlZ2VuZDogZCA9PiBkLFxuICAgICAgdG9vbHRpcDogW1xuICAgICAgICBUT09MVElQX0ZPUk1BVF9UWVBFUy5OT05FLFxuICAgICAgICBUT09MVElQX0ZPUk1BVF9UWVBFUy5ERUNJTUFMLFxuICAgICAgICBUT09MVElQX0ZPUk1BVF9UWVBFUy5QRVJDRU5UQUdFXG4gICAgICBdXG4gICAgfVxuICB9LFxuICBib29sZWFuOiB7XG4gICAgdHlwZTogJ2Jvb2xlYW4nLFxuICAgIHNjYWxlOiB7XG4gICAgICAuLi5vcmRpbmFsRmllbGRTY2FsZUZ1bmN0aW9ucyxcbiAgICAgIC4uLm9yZGluYWxGaWVsZEFnZ3JTY2FsZUZ1bmN0aW9uc1xuICAgIH0sXG4gICAgZm9ybWF0OiB7XG4gICAgICBsZWdlbmQ6IGQgPT4gZCxcbiAgICAgIHRvb2x0aXA6IFtUT09MVElQX0ZPUk1BVF9UWVBFUy5OT05FLCBUT09MVElQX0ZPUk1BVF9UWVBFUy5CT09MRUFOXVxuICAgIH1cbiAgfSxcbiAgZGF0ZToge1xuICAgIHNjYWxlOiB7XG4gICAgICAuLi5vcmRpbmFsRmllbGRTY2FsZUZ1bmN0aW9ucyxcbiAgICAgIC4uLm9yZGluYWxGaWVsZEFnZ3JTY2FsZUZ1bmN0aW9uc1xuICAgIH0sXG4gICAgZm9ybWF0OiB7XG4gICAgICBsZWdlbmQ6IGQgPT4gZCxcbiAgICAgIHRvb2x0aXA6IFtUT09MVElQX0ZPUk1BVF9UWVBFUy5OT05FLCBUT09MVElQX0ZPUk1BVF9UWVBFUy5EQVRFXVxuICAgIH1cbiAgfSxcbiAgZ2VvanNvbjoge1xuICAgIHR5cGU6ICdnZW9tZXRyeScsXG4gICAgc2NhbGU6IHtcbiAgICAgIC4uLm5vdFN1cHBvcnRlZFNjYWxlT3B0cyxcbiAgICAgIC4uLm5vdFN1cHBvcnRBZ2dyT3B0c1xuICAgIH0sXG4gICAgZm9ybWF0OiB7XG4gICAgICBsZWdlbmQ6IGQgPT4gJy4uLicsXG4gICAgICB0b29sdGlwOiBbXVxuICAgIH1cbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IENIQU5ORUxfU0NBTEVfU1VQUE9SVEVEX0ZJRUxEUyA9IE9iamVjdC5rZXlzKENIQU5ORUxfU0NBTEVTKS5yZWR1Y2UoXG4gIChhY2N1LCBrZXkpID0+ICh7XG4gICAgLi4uYWNjdSxcbiAgICBba2V5XTogT2JqZWN0LmtleXMoRklFTERfT1BUUykuZmlsdGVyKGZ0ID0+IE9iamVjdC5rZXlzKEZJRUxEX09QVFNbZnRdLnNjYWxlW2tleV0pLmxlbmd0aClcbiAgfSksXG4gIHt9XG4pO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9MQVlFUl9DT0xPUiA9IHtcbiAgdHJpcEFyYzogJyM5MjI2QzYnLFxuICBiZWdpbnRyaXBfbGF0OiAnIzFFOTZCRScsXG4gIGRyb3BvZmZfbGF0OiAnI0ZGOTkxRicsXG4gIHJlcXVlc3RfbGF0OiAnIzUyQTM1Mydcbn07XG5cbi8vIGxldCB1c2VyIHBhc3MgaW4gZGVmYXVsdCB0b29sdGlwIGZpZWxkc1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfVE9PTFRJUF9GSUVMRFMgPSBbXTtcblxuZXhwb3J0IGNvbnN0IE5PX1ZBTFVFX0NPTE9SID0gWzAsIDAsIDAsIDBdO1xuZXhwb3J0IGNvbnN0IFVOS05PV05fQ09MT1IgPSBbMTM0LCAxNDEsIDE0NV07XG5cbmV4cG9ydCBjb25zdCBMQVlFUl9CTEVORElOR1MgPSB7XG4gIGFkZGl0aXZlOiB7XG4gICAgbGFiZWw6ICdsYXllckJsZW5kaW5nLmFkZGl0aXZlJyxcbiAgICBibGVuZEZ1bmM6IFsnU1JDX0FMUEhBJywgJ0RTVF9BTFBIQSddLFxuICAgIGJsZW5kRXF1YXRpb246ICdGVU5DX0FERCdcbiAgfSxcbiAgbm9ybWFsOiB7XG4gICAgLy8gcmVmZXJlbmNlIHRvXG4gICAgLy8gaHR0cHM6Ly9saW1udS5jb20vd2ViZ2wtYmxlbmRpbmcteW91cmUtcHJvYmFibHktd3JvbmcvXG4gICAgbGFiZWw6ICdsYXllckJsZW5kaW5nLm5vcm1hbCcsXG4gICAgYmxlbmRGdW5jOiBbJ1NSQ19BTFBIQScsICdPTkVfTUlOVVNfU1JDX0FMUEhBJywgJ09ORScsICdPTkVfTUlOVVNfU1JDX0FMUEhBJ10sXG4gICAgYmxlbmRFcXVhdGlvbjogWydGVU5DX0FERCcsICdGVU5DX0FERCddXG4gIH0sXG4gIHN1YnRyYWN0aXZlOiB7XG4gICAgbGFiZWw6ICdsYXllckJsZW5kaW5nLnN1YnRyYWN0aXZlJyxcbiAgICBibGVuZEZ1bmM6IFsnT05FJywgJ09ORV9NSU5VU19EU1RfQ09MT1InLCAnU1JDX0FMUEhBJywgJ0RTVF9BTFBIQSddLFxuICAgIGJsZW5kRXF1YXRpb246IFsnRlVOQ19TVUJUUkFDVCcsICdGVU5DX0FERCddXG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBNQVhfREVGQVVMVF9UT09MVElQUyA9IDU7XG5cbmV4cG9ydCBjb25zdCBSRVNPTFVUSU9OUyA9IGtleU1pcnJvcih7XG4gIE9ORV9YOiBudWxsLFxuICBUV09fWDogbnVsbFxufSk7XG5cbmV4cG9ydCBjb25zdCBFWFBPUlRfSU1HX1JBVElPUyA9IGtleU1pcnJvcih7XG4gIFNDUkVFTjogbnVsbCxcbiAgRk9VUl9CWV9USFJFRTogbnVsbCxcbiAgU0lYVEVFTl9CWV9OSU5FOiBudWxsLFxuICBDVVNUT006IG51bGxcbn0pO1xuXG5leHBvcnQgY29uc3QgRVhQT1JUX0lNR19SQVRJT19PUFRJT05TID0gW1xuICB7XG4gICAgaWQ6IEVYUE9SVF9JTUdfUkFUSU9TLlNDUkVFTixcbiAgICBsYWJlbDogJ21vZGFsLmV4cG9ydEltYWdlLnJhdGlvT3JpZ2luYWxTY3JlZW4nLFxuICAgIGdldFNpemU6IChzY3JlZW5XLCBzY3JlZW5IKSA9PiAoe3dpZHRoOiBzY3JlZW5XLCBoZWlnaHQ6IHNjcmVlbkh9KVxuICB9LFxuICB7XG4gICAgaWQ6IEVYUE9SVF9JTUdfUkFUSU9TLkNVU1RPTSxcbiAgICBoaWRkZW46IHRydWUsXG4gICAgbGFiZWw6ICdtb2RhbC5leHBvcnRJbWFnZS5yYXRpb0N1c3RvbScsXG4gICAgZ2V0U2l6ZTogKG1hcFcsIG1hcEgpID0+ICh7d2lkdGg6IG1hcFcsIGhlaWdodDogbWFwSH0pXG4gIH0sXG4gIHtcbiAgICBpZDogRVhQT1JUX0lNR19SQVRJT1MuRk9VUl9CWV9USFJFRSxcbiAgICBsYWJlbDogJ21vZGFsLmV4cG9ydEltYWdlLnJhdGlvNF8zJyxcbiAgICBnZXRTaXplOiAoc2NyZWVuVywgc2NyZWVuSCkgPT4gKHtcbiAgICAgIHdpZHRoOiBzY3JlZW5XLFxuICAgICAgaGVpZ2h0OiBNYXRoLnJvdW5kKHNjcmVlblcgKiAwLjc1KVxuICAgIH0pXG4gIH0sXG4gIHtcbiAgICBpZDogRVhQT1JUX0lNR19SQVRJT1MuU0lYVEVFTl9CWV9OSU5FLFxuICAgIGxhYmVsOiAnbW9kYWwuZXhwb3J0SW1hZ2UucmF0aW8xNl85JyxcbiAgICBnZXRTaXplOiAoc2NyZWVuVywgc2NyZWVuSCkgPT4gKHtcbiAgICAgIHdpZHRoOiBzY3JlZW5XLFxuICAgICAgaGVpZ2h0OiBNYXRoLnJvdW5kKHNjcmVlblcgKiAwLjU2MjUpXG4gICAgfSlcbiAgfVxuXTtcblxuZXhwb3J0IGNvbnN0IEVYUE9SVF9JTUdfUkVTT0xVVElPTl9PUFRJT05TID0gW1xuICB7XG4gICAgaWQ6IFJFU09MVVRJT05TLk9ORV9YLFxuICAgIGxhYmVsOiAnMXgnLFxuICAgIGF2YWlsYWJsZTogdHJ1ZSxcbiAgICBzY2FsZTogMSxcbiAgICBnZXRTaXplOiAoc2NyZWVuVywgc2NyZWVuSCkgPT4gKHtcbiAgICAgIHdpZHRoOiBzY3JlZW5XLFxuICAgICAgaGVpZ2h0OiBzY3JlZW5IXG4gICAgfSlcbiAgfSxcbiAge1xuICAgIGlkOiBSRVNPTFVUSU9OUy5UV09fWCxcbiAgICBsYWJlbDogJzJ4JyxcbiAgICBhdmFpbGFibGU6IHRydWUsXG4gICAgc2NhbGU6IDIsXG4gICAgZ2V0U2l6ZTogKHNjcmVlblcsIHNjcmVlbkgpID0+ICh7XG4gICAgICB3aWR0aDogc2NyZWVuVyAqIDIsXG4gICAgICBoZWlnaHQ6IHNjcmVlbkggKiAyXG4gICAgfSlcbiAgfVxuXTtcblxuZXhwb3J0IGNvbnN0IEVYUE9SVF9EQVRBX1RZUEUgPSBrZXlNaXJyb3Ioe1xuICBDU1Y6IG51bGxcbiAgLy8gU0hBUEVGSUxFOiBudWxsLFxuICAvLyBKU09OOiBudWxsLFxuICAvLyBHRU9KU09OOiBudWxsLFxuICAvLyBUT1BPSlNPTjogbnVsbFxufSk7XG5cbmV4cG9ydCBjb25zdCBFWFBPUlRfREFUQV9UWVBFX09QVElPTlMgPSBbXG4gIHtcbiAgICBpZDogRVhQT1JUX0RBVEFfVFlQRS5DU1YsXG4gICAgbGFiZWw6IEVYUE9SVF9EQVRBX1RZUEUuQ1NWLnRvTG93ZXJDYXNlKCksXG4gICAgYXZhaWxhYmxlOiB0cnVlXG4gIH1cbiAgLy8ge1xuICAvLyAgIGlkOiBFWFBPUlRfREFUQV9UWVBFLlNIQVBFRklMRSxcbiAgLy8gICBsYWJlbDogJ3NoYXBlZmlsZScsXG4gIC8vICAgYXZhaWxhYmxlOiBmYWxzZVxuICAvLyB9LFxuICAvLyB7XG4gIC8vICAgaWQ6IEVYUE9SVF9EQVRBX1RZUEUuSlNPTixcbiAgLy8gICBsYWJlbDogJ2pzb24nLFxuICAvLyAgIGF2YWlsYWJsZTogZmFsc2VcbiAgLy8gfSxcbiAgLy8ge1xuICAvLyAgIGlkOiBFWFBPUlRfREFUQV9UWVBFLkdFT0pTT04sXG4gIC8vICAgbGFiZWw6ICdnZW9qc29uJyxcbiAgLy8gICBhdmFpbGFibGU6IGZhbHNlXG4gIC8vIH0sXG4gIC8vIHtcbiAgLy8gICBpZDogRVhQT1JUX0RBVEFfVFlQRS5UT1BPSlNPTixcbiAgLy8gICBsYWJlbDogJ3RvcG9qc29uJyxcbiAgLy8gICBhdmFpbGFibGU6IGZhbHNlXG4gIC8vIH1cbl07XG5cbi8vIEV4cG9ydCBtYXAgdHlwZXNcbmV4cG9ydCBjb25zdCBFWFBPUlRfTUFQX0ZPUk1BVFMgPSBrZXlNaXJyb3Ioe1xuICBIVE1MOiBudWxsLFxuICBKU09OOiBudWxsXG59KTtcblxuZXhwb3J0IGNvbnN0IEVYUE9SVF9IVE1MX01BUF9NT0RFUyA9IGtleU1pcnJvcih7XG4gIFJFQUQ6IG51bGwsXG4gIEVESVQ6IG51bGxcbn0pO1xuXG4vLyBFeHBvcnQgbWFwIG9wdGlvbnNcbmV4cG9ydCBjb25zdCBFWFBPUlRfTUFQX0ZPUk1BVF9PUFRJT05TID0gT2JqZWN0LmVudHJpZXMoRVhQT1JUX01BUF9GT1JNQVRTKS5tYXAoZW50cnkgPT4gKHtcbiAgaWQ6IGVudHJ5WzBdLFxuICBsYWJlbDogZW50cnlbMV0udG9Mb3dlckNhc2UoKSxcbiAgYXZhaWxhYmxlOiB0cnVlXG59KSk7XG5cbmV4cG9ydCBjb25zdCBFWFBPUlRfSFRNTF9NQVBfTU9ERV9PUFRJT05TID0gT2JqZWN0LmVudHJpZXMoRVhQT1JUX0hUTUxfTUFQX01PREVTKS5tYXAoZW50cnkgPT4gKHtcbiAgaWQ6IGVudHJ5WzBdLFxuICBsYWJlbDogYG1vZGFsLmV4cG9ydE1hcC5odG1sLiR7ZW50cnlbMV0udG9Mb3dlckNhc2UoKX1gLFxuICBhdmFpbGFibGU6IHRydWUsXG4gIHVybDogZ2V0SFRNTE1hcE1vZGVUaWxlVXJsKGVudHJ5WzFdKVxufSkpO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9VVUlEX0NPVU5UID0gNjtcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfTk9USUZJQ0FUSU9OX01FU1NBR0UgPSAnTUVTU0FHRV9OT1RfUFJPVklERUQnO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9OT1RJRklDQVRJT05fVFlQRVMgPSBrZXlNaXJyb3Ioe1xuICBpbmZvOiBudWxsLFxuICBlcnJvcjogbnVsbCxcbiAgd2FybmluZzogbnVsbCxcbiAgc3VjY2VzczogbnVsbFxufSk7XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX05PVElGSUNBVElPTl9UT1BJQ1MgPSBrZXlNaXJyb3Ioe1xuICBnbG9iYWw6IG51bGwsXG4gIGZpbGU6IG51bGxcbn0pO1xuXG4vLyBNaW5pbXVtIHRpbWUgYmV0d2VlbiBpZGVudGljYWwgbm90aWZpY2F0aW9ucyBhYm91dCBkZWNrLmdsIGVycm9yc1xuZXhwb3J0IGNvbnN0IFRIUk9UVExFX05PVElGSUNBVElPTl9USU1FID0gMjUwMDtcblxuLy8gQW5pbWF0aW9uXG5leHBvcnQgY29uc3QgQkFTRV9TUEVFRCA9IDYwMDtcbmV4cG9ydCBjb25zdCBGUFMgPSA2MDtcblxuLyoqXG4gKiA0IEFuaW1hdGlvbiBXaW5kb3cgVHlwZXNcbiAqIDEuIGZyZWVcbiAqICB8LT4gIHwtPlxuICogQ3VycmVudCB0aW1lIGlzIGEgZml4ZWQgcmFuZ2UsIGFuaW1hdGlvbiBjb250cm9sbGVyIGNhbGxzIG5leHQgYW5pbWF0aW9uIGZyYW1lcyBjb250aW51b3VzbHkgdG8gYW5pbWF0aW9uIGEgbW92aW5nIHdpbmRvd1xuICogVGhlIGluY3JlbWVudCBpZCBiYXNlZCBvbiBkb21haW4gLyBCQVNFX1NQRUVEICogU1BFRURcbiAqXG4gKiAyLiBpbmNyZW1lbnRhbFxuICogfCAgICB8LT5cbiAqIFNhbWUgYXMgZnJlZSwgY3VycmVudCB0aW1lIGlzIGEgZ3Jvd2luZyByYW5nZSwgb25seSB0aGUgbWF4IHZhbHVlIG9mIHJhbmdlIGluY3JlbWVudCBkdXJpbmcgYW5pbWF0aW9uLlxuICogVGhlIGluY3JlbWVudCBpcyBhbHNvIGJhc2VkIG9uIGRvbWFpbiAvIEJBU0VfU1BFRUQgKiBTUEVFRFxuICpcbiAqIDMuIHBvaW50XG4gKiBvIC0+IG9cbiAqIEN1cnJlbnQgdGltZSBpcyBhIHBvaW50LCBhbmltYXRpb24gY29udHJvbGxlciBjYWxscyBuZXh0IGFuaW1hdGlvbiBmcmFtZSBjb250aW51b3VzbHkgdG8gYW5pbWF0aW9uIGEgbW92aW5nIHBvaW50XG4gKiBUaGUgaW5jcmVtZW50IGlzIGJhc2VkIG9uIGRvbWFpbiAvIEJBU0VfU1BFRUQgKiBTUEVFRFxuICpcbiAqIDQuIGludGVydmFsXG4gKiBvIH4+IG9cbiAqIEN1cnJlbnQgdGltZSBpcyBhIHBvaW50LiBBbiBhcnJheSBvZiBzb3J0ZWQgdGltZSBzdGVwcyBuZWVkIHRvIGJlIHByb3ZpZGVkLlxuICogYW5pbWF0aW9uIGNvbnRyb2xsZXIgY2FsbHMgbmV4dCBhbmltYXRpb24gYXQgYSBpbnRlcnZhbCB3aGVuIHRoZSBwb2ludCBqdW1wcyB0byB0aGUgbmV4dCBzdGVwXG4gKi9cbmV4cG9ydCBjb25zdCBBTklNQVRJT05fV0lORE9XID0ga2V5TWlycm9yKHtcbiAgZnJlZTogbnVsbCxcbiAgaW5jcmVtZW50YWw6IG51bGwsXG4gIHBvaW50OiBudWxsLFxuICBpbnRlcnZhbDogbnVsbFxufSk7XG5leHBvcnQgY29uc3QgREVGQVVMVF9USU1FX0ZPUk1BVCA9ICdNTS9ERC9ZWSBISDptbTpzc2EnO1xuZXhwb3J0IGNvbnN0IFNQRUVEX0NPTlRST0xfUkFOR0UgPSBbMCwgMTBdO1xuZXhwb3J0IGNvbnN0IFNQRUVEX0NPTlRST0xfU1RFUCA9IDAuMDAxO1xuXG4vLyBHZW9jb2RlclxuZXhwb3J0IGNvbnN0IEdFT0NPREVSX0RBVEFTRVRfTkFNRSA9ICdnZW9jb2Rlcl9kYXRhc2V0JztcbmV4cG9ydCBjb25zdCBHRU9DT0RFUl9MQVlFUl9JRCA9ICdnZW9jb2Rlcl9sYXllcic7XG5leHBvcnQgY29uc3QgR0VPQ09ERVJfR0VPX09GRlNFVCA9IDAuMDU7XG5leHBvcnQgY29uc3QgR0VPQ09ERVJfSUNPTl9DT0xPUiA9IFsyNTUsIDAsIDBdO1xuZXhwb3J0IGNvbnN0IEdFT0NPREVSX0lDT05fU0laRSA9IDgwO1xuXG4vLyBXZSBjb3VsZCB1c2UgZGlyZWN0bHkgcmVhY3QtbWFwLWdsLWRyYXcgRWRpdG9yTW9kZSBidXQgdGhpcyB3b3VsZFxuLy8gY3JlYXRlIGEgZGlyZWN0IGRlcGVuZGVuY3kgd2l0aCByZWFjdC1tYXAtZ2wtZHJhd1xuLy8gQ3JlYXRlZCB0aGlzIG1hcCB0byBiZSBpbmRlcGVuZGVudCBmcm9tIHJlYWN0LW1hcC1nbC1kcmF3XG5leHBvcnQgY29uc3QgRURJVE9SX01PREVTID0ge1xuICBSRUFEX09OTFk6IEVkaXRvck1vZGVzLlJFQURfT05MWSxcbiAgRFJBV19QT0xZR09OOiBFZGl0b3JNb2Rlcy5EUkFXX1BPTFlHT04sXG4gIERSQVdfUkVDVEFOR0xFOiBFZGl0b3JNb2Rlcy5EUkFXX1JFQ1RBTkdMRSxcbiAgRURJVDogRWRpdG9yTW9kZXMuRURJVF9WRVJURVhcbn07XG5cbmV4cG9ydCBjb25zdCBFRElUT1JfQVZBSUxBQkxFX0xBWUVSUyA9IFtcbiAgTEFZRVJfVFlQRVMucG9pbnQsXG4gIExBWUVSX1RZUEVTLmhleGFnb24sXG4gIExBWUVSX1RZUEVTLmFyYyxcbiAgTEFZRVJfVFlQRVMubGluZSxcbiAgTEFZRVJfVFlQRVMuaGV4YWdvbklkXG5dO1xuLy8gR1BVIEZpbHRlcmluZ1xuLyoqXG4gKiBNYXggbnVtYmVyIG9mIGZpbHRlciB2YWx1ZSBidWZmZXJzIHRoYXQgZGVjay5nbCBwcm92aWRlc1xuICovXG5leHBvcnQgY29uc3QgTUFYX0dQVV9GSUxURVJTID0gNDtcbmV4cG9ydCBjb25zdCBNQVBfVEhVTUJOQUlMX0RJTUVOU0lPTiA9IHtcbiAgd2lkdGg6IDMwMCxcbiAgaGVpZ2h0OiAyMDBcbn07XG5cbmV4cG9ydCBjb25zdCBNQVBfSU5GT19DSEFSQUNURVIgPSB7XG4gIHRpdGxlOiAxMDAsXG4gIGRlc2NyaXB0aW9uOiAxMDBcbn07XG5cbi8vIExvYWQgZGF0YVxuZXhwb3J0IGNvbnN0IExPQURJTkdfTUVUSE9EUyA9IGtleU1pcnJvcih7XG4gIHVwbG9hZDogbnVsbCxcbiAgc3RvcmFnZTogbnVsbFxufSk7XG5cbmV4cG9ydCBjb25zdCBEQVRBU0VUX0ZPUk1BVFMgPSBrZXlNaXJyb3Ioe1xuICByb3c6IG51bGwsXG4gIGdlb2pzb246IG51bGwsXG4gIGNzdjogbnVsbCxcbiAga2VwbGVyZ2w6IG51bGxcbn0pO1xuXG5leHBvcnQgY29uc3QgTUFQX0NPTlRST0xTID0ga2V5TWlycm9yKHtcbiAgdmlzaWJsZUxheWVyczogbnVsbCxcbiAgbWFwTGVnZW5kOiBudWxsLFxuICB0b2dnbGUzZDogbnVsbCxcbiAgc3BsaXRNYXA6IG51bGwsXG4gIG1hcERyYXc6IG51bGwsXG4gIG1hcExvY2FsZTogbnVsbFxufSk7XG5cbmV4cG9ydCBjb25zdCBNQVNLX0xBWUVSX0lEID0gJ21hc2tfbGF5ZXInO1xuXG5leHBvcnQgY29uc3QgWk9PTV9MRVZFTF9MSU1JVFMgPSB7XG4gIG1pbjogMCxcbiAgbWF4OiAyMVxufTtcbiJdfQ==
|
|
@@ -334,6 +334,7 @@ var Layer = /*#__PURE__*/function () {
|
|
|
334
334
|
sizeDomain: [0, 1],
|
|
335
335
|
sizeScale: _defaultSettings.SCALE_TYPES.linear,
|
|
336
336
|
sizeField: null,
|
|
337
|
+
radiusField: null,
|
|
337
338
|
visConfig: {},
|
|
338
339
|
textLabel: [_layerFactory.DEFAULT_TEXT_LABEL],
|
|
339
340
|
colorUI: {
|
|
@@ -1362,10 +1363,12 @@ var Layer = /*#__PURE__*/function () {
|
|
|
1362
1363
|
value: function getMaxMarkerSize() {
|
|
1363
1364
|
var _this$config5 = this.config,
|
|
1364
1365
|
radiusField = _this$config5.radiusField,
|
|
1366
|
+
sizeField = _this$config5.sizeField,
|
|
1365
1367
|
visConfig = _this$config5.visConfig;
|
|
1366
1368
|
var radiusRange = visConfig.radiusRange,
|
|
1367
1369
|
radius = visConfig.radius;
|
|
1368
|
-
|
|
1370
|
+
var field = radiusField || sizeField;
|
|
1371
|
+
return Math.ceil(field && radiusRange ? radiusRange[1] : radius);
|
|
1369
1372
|
}
|
|
1370
1373
|
}, {
|
|
1371
1374
|
key: "getRadiusUnit",
|
|
@@ -1633,4 +1636,4 @@ var Layer = /*#__PURE__*/function () {
|
|
|
1633
1636
|
|
|
1634
1637
|
var _default = Layer;
|
|
1635
1638
|
exports["default"] = _default;
|
|
1636
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9sYXllcnMvYmFzZS1sYXllci5qcyJdLCJuYW1lcyI6WyJnZW5lcmF0ZUNvbG9yIiwiTEFZRVJfSURfTEVOR1RIIiwiRkFMTEJBQ0tfSUNPTiIsIk1BWF9TQU1QTEVfU0laRSIsImRlZmF1bHREb21haW4iLCJkYXRhRmlsdGVyRXh0ZW5zaW9uIiwiRGF0YUZpbHRlckV4dGVuc2lvbiIsImZpbHRlclNpemUiLCJNQVhfR1BVX0ZJTFRFUlMiLCJkZWZhdWx0RGF0YUFjY2Vzc29yIiwiZGMiLCJkIiwiZGVmYXVsdEdldEZpZWxkVmFsdWUiLCJmaWVsZCIsInZhbHVlQWNjZXNzb3IiLCJzY2FsZUlkZW50aXR5IiwidiIsIk9WRVJMQVlfVFlQRSIsImRlY2tnbCIsIm1hcGJveGdsIiwibGF5ZXJDb2xvcnMiLCJPYmplY3QiLCJ2YWx1ZXMiLCJEYXRhVml6Q29sb3JzIiwibWFwIiwiaGV4VG9SZ2IiLCJpbmRleCIsImxlbmd0aCIsImNvbG9yTWFrZXIiLCJMYXllciIsInByb3BzIiwiaWQiLCJtZXRhIiwidmlzQ29uZmlnU2V0dGluZ3MiLCJjb25maWciLCJnZXREZWZhdWx0TGF5ZXJDb25maWciLCJjb2x1bW5zIiwiZ2V0TGF5ZXJDb2x1bW5zIiwiRGVmYXVsdExheWVySWNvbiIsInR5cGUiLCJjb2xvciIsInByb3BlcnR5Iiwic2NhbGUiLCJkb21haW4iLCJyYW5nZSIsImtleSIsImNoYW5uZWxTY2FsZVR5cGUiLCJDSEFOTkVMX1NDQUxFUyIsIm51bGxWYWx1ZSIsIk5PX1ZBTFVFX0NPTE9SIiwiZGVmYXVsdFZhbHVlIiwic2l6ZSIsImxhdCIsInBhaXIiLCJmaWVsZFBhaXJLZXkiLCJsbmciLCJsYXQwIiwibG5nMCIsImxhdDEiLCJsbmcxIiwiZGF0YUlkIiwidmlzaWJpbGl0eUJ5Wm9vbSIsIm1pbiIsIlpPT01fTEVWRUxfTElNSVRTIiwibWF4IiwibGFiZWwiLCJERUZBVUxUX0xBWUVSX0xBQkVMIiwibmV4dCIsInZhbHVlIiwiaXNWaXNpYmxlIiwiaXNDb25maWdBY3RpdmUiLCJoaWdobGlnaHRDb2xvciIsIkRFRkFVTFRfSElHSExJR0hUX0NPTE9SIiwiaGlkZGVuIiwiY29sb3JGaWVsZCIsImNvbG9yRG9tYWluIiwiY29sb3JTY2FsZSIsIlNDQUxFX1RZUEVTIiwicXVhbnRpbGUiLCJzaXplRG9tYWluIiwic2l6ZVNjYWxlIiwibGluZWFyIiwic2l6ZUZpZWxkIiwidmlzQ29uZmlnIiwidGV4dExhYmVsIiwiREVGQVVMVF9URVhUX0xBQkVMIiwiY29sb3JVSSIsIkRFRkFVTFRfQ09MT1JfVUkiLCJjb2xvclJhbmdlIiwiYW5pbWF0aW9uIiwiZW5hYmxlZCIsInZpc3VhbENoYW5uZWxzIiwibWVhc3VyZSIsImRpc3BsYXlOYW1lIiwibmFtZSIsImRlZmF1bHRNZWFzdXJlIiwidXBkYXRlIiwiZmllbGRJZHgiLCJjb2x1bW5QYWlycyIsInBhcnRuZXJLZXkiLCJwYXJ0bmVyRmllbGRQYWlyS2V5Iiwiem9vbSIsInpvb21PZmZzZXQiLCJNYXRoIiwicG93IiwiZW5hYmxlRWxldmF0aW9uWm9vbUZhY3RvciIsImRhdGFzZXRzIiwiZmlsdGVyZWRJbmRleCIsIm9iamVjdCIsImRhdGFDb250YWluZXIiLCJyb3ciLCJjb25maWdUb0NvcHkiLCJzaGFsbG93Q29weSIsImNvbmNhdCIsIm5vdFRvQ29weSIsImZvckVhY2giLCJncm91cCIsInB1c2giLCJjdXJyZW50Q29uZmlnIiwiY29waWVkIiwiY29weUxheWVyQ29uZmlnIiwidXBkYXRlTGF5ZXJDb25maWciLCJrZXlzIiwiY2hhbm5lbCIsInZhbGlkYXRlVmlzdWFsQ2hhbm5lbCIsImluY2x1ZGVzIiwibGF5ZXJWaXNDb25maWdzIiwiaXRlbSIsIkxBWUVSX1ZJU19DT05GSUdTIiwiZXZlcnkiLCJwIiwiaGFzT3duUHJvcGVydHkiLCJjb2x1bW5WYWxpZGF0b3JzIiwicmVxdWlyZWQiLCJyZXF1aXJlZExheWVyQ29sdW1ucyIsInJlZHVjZSIsImFjY3UiLCJ2YWxpZGF0b3IiLCJvcHRpb25hbCIsIm9wdGlvbmFsQ29sdW1ucyIsIm5ld0NvbmZpZyIsIm5ld1Zpc0NvbmZpZyIsInByb3AiLCJwcmV2aW91cyIsImNvbG9yVUlQcm9wIiwiZW50cmllcyIsImlzQ29sb3JSYW5nZSIsImNvbG9ycyIsInVwZGF0ZUNvbG9yVUlCeUNvbG9yUmFuZ2UiLCJ1cGRhdGVDb2xvclJhbmdlQnlDb2xvclVJIiwidXBkYXRlQ3VzdG9tUGFsZXR0ZSIsImNvbG9yUmFuZ2VDb25maWciLCJjdXN0b20iLCJjdXN0b21QYWxldHRlIiwic2hvd0Ryb3Bkb3duIiwic3RlcHMiLCJyZXZlcnNlZCIsIkJvb2xlYW4iLCJzaG91bGRVcGRhdGUiLCJzb21lIiwic2FtZUdyb3VwIiwiQ09MT1JfUkFOR0VTIiwiZmlsdGVyIiwiY3IiLCJmaW5kIiwiY29sb3JNYXAiLCJ1cGRhdGVDb2xvck1hcCIsInVwZGF0ZUxheWVyVmlzQ29uZmlnIiwidXBkYXRlQ2F0ZWdvcnlDb2xvck1hcCIsInVwZGF0ZU51bWVyaWNDb2xvck1hcCIsImFzc2lnbmVkQ2F0ZWdvcmllcyIsIm5ld0NvbG9yTWFwIiwic2xpY2UiLCJjTWFwIiwidW5hc3NpZ25lZENvbG9ycyIsImNhdGVnb3J5IiwiY29sb3JNYXBWYWx1ZXMiLCJjIiwibWF4VmFsdWUiLCJwcmV2VmFsdWUiLCJzdGVwIiwiaSIsImxheWVyRGF0YSIsImRhdGEiLCJoYXNBbGxDb2x1bW5zIiwiaGFzTGF5ZXJEYXRhIiwicmVuZGVyTGF5ZXIiLCJBcnJheSIsImlzQXJyYXkiLCJNYXAiLCJrIiwic2V0IiwiU0NBTEVfRlVOQyIsImZyb20iLCJ1bmtub3duIiwiVU5LTk9XTl9DT0xPUiIsImdldFZpc0NoYW5uZWxTY2FsZSIsInVua25vd25WYWx1ZSIsIm1hcHBpbmciLCJvdGhlcnNNYXJrZXIiLCJtYXJrZXJNYXAiLCJtYXJrZXJVcmwiLCJkYXRhQWNjZXNzb3IiLCJhdHRyaWJ1dGVBY2Nlc3NvcnMiLCJmaXhlZCIsImFjY2Vzc29yIiwiZ2V0QXR0cmlidXRlVmFsdWUiLCJhZ2dyZWdhdGlvbiIsInNob3VsZEdldFNjYWxlIiwiaWRlbnRpdHkiLCJhcmdzIiwiaXNGaXhlZCIsImZpZWxkQ29uZmlnIiwiYWdncmVnYXRpb25WYWx1ZSIsInNjYWxlRnVuY3Rpb24iLCJnZXRDb2xvclNjYWxlIiwiY3VzdG9tTWFya2VyIiwiZ2V0Q3VzdG9tTWFya2Vyc1NjYWxlIiwiZ2V0RW5jb2RlZENoYW5uZWxWYWx1ZSIsIkNvbnNvbGUiLCJ3YXJuIiwib3JkaW5hbCIsImdldFBvc2l0aW9uIiwic2FtcGxlRGF0YSIsIm51bVJvd3MiLCJwb2ludHMiLCJtYXBJbmRleCIsImxhdEJvdW5kcyIsImxuZ0JvdW5kcyIsImRhdGFVcGRhdGVUcmlnZ2VycyIsInRyaWdnZXJDaGFuZ2VkIiwiX29sZERhdGFVcGRhdGVUcmlnZ2VycyIsIl9hZ2dyZWdhdGlvbiIsImdldFZhbHVlIiwiYXR0cmlidXRlVmFsdWUiLCJBTExfRklFTERfVFlQRVMiLCJ0aW1lc3RhbXAiLCJEYXRlIiwiYWxsRGF0YSIsImdldERhdGEiLCJkYXRhc2V0SWQiLCJnZXRNZXRhIiwidGwiLCJvbGRMYXllckRhdGEiLCJsYXllckRhdGFzZXQiLCJ1cGRhdGVWaXN1YWxDaGFubmVsRmllbGRzIiwiZ2V0UG9zaXRpb25BY2Nlc3NvciIsImdldERhdGFVcGRhdGVUcmlnZ2VycyIsImdldENoYW5nZWRUcmlnZ2VycyIsInVwZGF0ZUxheWVyTWV0YSIsImNhbGN1bGF0ZURhdGFBdHRyaWJ1dGUiLCJkYXRhc2V0Iiwib2xkRmllbGQiLCJuZXdEYXRhU2V0RmllbGQiLCJmaWVsZHMiLCJmZCIsIm5ld0ZpbHRlciIsInRhYmxlIiwiZ2V0RGF0YXNldCIsInNjYWxlVHlwZSIsInVwZGF0ZWREb21haW4iLCJjYWxjdWxhdGVMYXllckRvbWFpbiIsInZhbGlkYXRlRmllbGRUeXBlIiwidmFsaWRhdGVTY2FsZSIsInZpc3VhbENoYW5uZWwiLCJzdXBwb3J0ZWRGaWVsZFR5cGVzIiwiY2hhbm5lbFN1cHBvcnRlZEZpZWxkVHlwZXMiLCJDSEFOTkVMX1NDQUxFX1NVUFBPUlRFRF9GSUVMRFMiLCJzY2FsZU9wdGlvbnMiLCJnZXRTY2FsZU9wdGlvbnMiLCJGSUVMRF9PUFRTIiwidXBkYXRlVHJpZ2dlcnMiLCJkYXRhU2V0RmllbGQiLCJmIiwiZ2V0Q29sdW1uTGF5ZXJEb21haW4iLCJvYmplY3RJbmZvIiwiaXNMYXllckhvdmVyZWQiLCJwaWNrZWQiLCJsYXllciIsIm1hcFN0YXRlIiwiZml4ZWRSYWRpdXMiLCJyYWRpdXNDaGFubmVsIiwidmMiLCJ1bmRlZmluZWQiLCJyYWRpdXMiLCJnZXRab29tRmFjdG9yIiwicmFkaXVzRmllbGQiLCJyYWRpdXNSYW5nZSIsImNlaWwiLCJub25lTGF5ZXJEYXRhQWZmZWN0aW5nUHJvcHMiLCJpbnRlcmFjdGlvbkNvbmZpZyIsImJydXNoaW5nVGFyZ2V0IiwiYnJ1c2giLCJhdXRvSGlnaGxpZ2h0IiwiYnJ1c2hpbmdSYWRpdXMiLCJicnVzaGluZ0VuYWJsZWQiLCJpZHgiLCJncHVGaWx0ZXIiLCJ2aXNpYmxlIiwibWFza1BvbHlnb24iLCJtYXNrRXh0ZW5zaW9uUHJvcHMiLCJjb29yZGluYXRlU3lzdGVtIiwiQ09PUkRJTkFURV9TWVNURU0iLCJMTkdMQVQiLCJwaWNrYWJsZSIsIndyYXBMb25naXR1ZGUiLCJwYXJhbWV0ZXJzIiwiZGVwdGhUZXN0IiwiZHJhZ1JvdGF0ZSIsImVuYWJsZTNkIiwib3BhY2l0eSIsImV4dGVuc2lvbnMiLCJmaWx0ZXJSYW5nZSIsInJlbmRlck9wdHMiLCJnZXRQaXhlbE9mZnNldCIsInNoYXJlZFByb3BzIiwidGV4dExhYmVscyIsImdldFRleHQiLCJUZXh0TGF5ZXIiLCJjaGFyYWN0ZXJTZXQiLCJnZXRTaXplIiwiZ2V0VGV4dEFuY2hvciIsImFuY2hvciIsImdldEFsaWdubWVudEJhc2VsaW5lIiwiYWxpZ25tZW50IiwiZ2V0Q29sb3IiLCJnZXRGaWx0ZXJWYWx1ZSIsImdldFJhZGl1cyIsImN1c3RvbU1hcmtlcnNTdGF0dXMiLCJpY29uVXJsQWNjZXNzb3IiLCJtYXhJY29uU2l6ZSIsImdldE1heE1hcmtlclNpemUiLCJ3YW50ZWRVcmwiLCJ1cmwiLCJ3aWR0aCIsImhlaWdodCIsIm1hc2siLCJrZXBsZXJUYWJsZSIsImZvdW5kTGF5ZXJzIiwiZGVmYXVsdEZpZWxkcyIsImFsbEZpZWxkcyIsInJlcXVpcmVkQ29sdW1ucyIsInByZXYiLCJyZXF1aXJlZEZpZWxkcyIsImdldEFsbFBvc3NpYmxlQ29sdW1uUGFyaXMiLCJhbGxLZXlzIiwicG9pbnRlcnMiLCJjb3VudFBlcktleSIsInBhaXJzIiwiaW5jcmVtZW50UG9pbnRlcnMiLCJuZXdQYWlyIiwiY3V1ciIsInB0cyIsImNvdW50cyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFvQkE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUE7O0FBQ0E7O0FBRUE7O0FBWUE7O0FBQ0E7O0FBQ0E7O0FBUUE7O0FBRUE7O0FBQ0E7O0FBRUE7O0FBQ0E7O0FBQ0E7Ozs7Ozs7Ozs7Ozt3REE0QlVBLGE7O0FBMUJWOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ08sSUFBTUMsZUFBZSxHQUFHLENBQXhCLEMsQ0FFUDs7O0FBQ0EsSUFBTUMsYUFBYSxHQUNqQiwwTEFERjtBQUdBLElBQU1DLGVBQWUsR0FBRyxJQUF4QjtBQUNBLElBQU1DLGFBQWEsR0FBRyxDQUFDLENBQUQsRUFBSSxDQUFKLENBQXRCO0FBQ0EsSUFBTUMsbUJBQW1CLEdBQUcsSUFBSUMsK0JBQUosQ0FBd0I7QUFBQ0MsRUFBQUEsVUFBVSxFQUFFQztBQUFiLENBQXhCLENBQTVCOztBQUVBLElBQU1DLG1CQUFtQixHQUFHLFNBQXRCQSxtQkFBc0IsQ0FBQUMsRUFBRTtBQUFBLFNBQUksVUFBQUMsQ0FBQztBQUFBLFdBQUlBLENBQUo7QUFBQSxHQUFMO0FBQUEsQ0FBOUI7O0FBQ0EsSUFBTUMsb0JBQW9CLEdBQUcsU0FBdkJBLG9CQUF1QixDQUFDQyxLQUFELEVBQVFGLENBQVI7QUFBQSxTQUFjRSxLQUFLLENBQUNDLGFBQU4sQ0FBb0JILENBQXBCLENBQWQ7QUFBQSxD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LGVBQVNELGlCQUFULENBQTJCRyxHQUEzQixFQUFnQ0MsTUFBaEMsRUFBd0N2VSxLQUF4QyxFQUErQztBQUM3QyxZQUFJQSxLQUFLLEtBQUssQ0FBVixJQUFlc1UsR0FBRyxDQUFDLENBQUQsQ0FBSCxLQUFXQyxNQUFNLENBQUMsQ0FBRCxDQUFOLEdBQVksQ0FBMUMsRUFBNkM7QUFDM0M7QUFDQSxpQkFBTyxLQUFQO0FBQ0Q7O0FBRUQsWUFBSUQsR0FBRyxDQUFDdFUsS0FBRCxDQUFILEdBQWEsQ0FBYixHQUFpQnVVLE1BQU0sQ0FBQ3ZVLEtBQUQsQ0FBM0IsRUFBb0M7QUFDbENzVSxVQUFBQSxHQUFHLENBQUN0VSxLQUFELENBQUgsR0FBYXNVLEdBQUcsQ0FBQ3RVLEtBQUQsQ0FBSCxHQUFhLENBQTFCO0FBQ0EsaUJBQU8sSUFBUDtBQUNEOztBQUVEc1UsUUFBQUEsR0FBRyxDQUFDdFUsS0FBRCxDQUFILEdBQWEsQ0FBYjtBQUNBLGVBQU9tVSxpQkFBaUIsQ0FBQ0csR0FBRCxFQUFNQyxNQUFOLEVBQWN2VSxLQUFLLEdBQUcsQ0FBdEIsQ0FBeEI7QUFDRDs7QUFFRCxhQUFPa1UsS0FBUDtBQUNEOzs7V0FFRCxrQkFBZ0IzSyxDQUFoQixFQUFtQjtBQUNqQixhQUFPLDBCQUFTQSxDQUFULENBQVA7QUFDRDs7Ozs7ZUEwakNZcEosSyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAoYykgMjAyMiBVYmVyIFRlY2hub2xvZ2llcywgSW5jLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbi8vIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbi8vIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbi8vIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbi8vIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuLy8gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpblxuLy8gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuLy8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4vLyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbi8vIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbi8vIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4vLyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOXG4vLyBUSEUgU09GVFdBUkUuXG5cbmltcG9ydCB7Y29uc29sZSBhcyBDb25zb2xlfSBmcm9tICdnbG9iYWwvd2luZG93JztcbmltcG9ydCBrZXltaXJyb3IgZnJvbSAna2V5bWlycm9yJztcbmltcG9ydCB7RGF0YUZpbHRlckV4dGVuc2lvbn0gZnJvbSAnQGRlY2suZ2wvZXh0ZW5zaW9ucyc7XG5pbXBvcnQge0NPT1JESU5BVEVfU1lTVEVNfSBmcm9tICdAZGVjay5nbC9jb3JlJztcbmltcG9ydCB7VGV4dExheWVyfSBmcm9tICdAZGVjay5nbC9sYXllcnMnO1xuXG5pbXBvcnQgRGVmYXVsdExheWVySWNvbiBmcm9tICcuL2RlZmF1bHQtbGF5ZXItaWNvbic7XG5pbXBvcnQge2RpZmZVcGRhdGVUcmlnZ2Vyc30gZnJvbSAnLi9sYXllci11cGRhdGUnO1xuXG5pbXBvcnQge1xuICBBTExfRklFTERfVFlQRVMsXG4gIE5PX1ZBTFVFX0NPTE9SLFxuICBTQ0FMRV9UWVBFUyxcbiAgQ0hBTk5FTF9TQ0FMRVMsXG4gIEZJRUxEX09QVFMsXG4gIFNDQUxFX0ZVTkMsXG4gIENIQU5ORUxfU0NBTEVfU1VQUE9SVEVEX0ZJRUxEUyxcbiAgTUFYX0dQVV9GSUxURVJTLFxuICBVTktOT1dOX0NPTE9SLFxuICBaT09NX0xFVkVMX0xJTUlUU1xufSBmcm9tICdjb25zdGFudHMvZGVmYXVsdC1zZXR0aW5ncyc7XG5pbXBvcnQge0NPTE9SX1JBTkdFU30gZnJvbSAnY29uc3RhbnRzL2NvbG9yLXJhbmdlcyc7XG5pbXBvcnQge0RhdGFWaXpDb2xvcnN9IGZyb20gJ2NvbnN0YW50cy9jdXN0b20tY29sb3ItcmFuZ2VzJztcbmltcG9ydCB7XG4gIExBWUVSX1ZJU19DT05GSUdTLFxuICBERUZBVUxUX1RFWFRfTEFCRUwsXG4gIERFRkFVTFRfQ09MT1JfVUksXG4gIERFRkFVTFRfSElHSExJR0hUX0NPTE9SLFxuICBERUZBVUxUX0xBWUVSX0xBQkVMXG59IGZyb20gJy4vbGF5ZXItZmFjdG9yeSc7XG5cbmltcG9ydCB7Z2VuZXJhdGVIYXNoSWQsIGlzUGxhaW5PYmplY3R9IGZyb20gJ3V0aWxzL3V0aWxzJztcblxuaW1wb3J0IHtnZXRMYXRMbmdCb3VuZHMsIG5vdE51bGxvclVuZGVmaW5lZH0gZnJvbSAndXRpbHMvZGF0YS11dGlscyc7XG5pbXBvcnQge2dldFNhbXBsZURhdGF9IGZyb20gJ3V0aWxzL3RhYmxlLXV0aWxzL2RhdGEtY29udGFpbmVyLXV0aWxzJztcblxuaW1wb3J0IHtoZXhUb1JnYiwgZ2V0Q29sb3JHcm91cEJ5TmFtZSwgcmV2ZXJzZUNvbG9yUmFuZ2V9IGZyb20gJ3V0aWxzL2NvbG9yLXV0aWxzJztcbmltcG9ydCB7Z2V0TWFza0V4dGVuc2lvblByb3BzfSBmcm9tICd1dGlscy9sYXllci11dGlscyc7XG5pbXBvcnQge3NjYWxlT3JkaW5hbH0gZnJvbSAnZDMtc2NhbGUnO1xuXG4vKiogQHR5cGVkZWYge2ltcG9ydCgnLi9pbmRleCcpLkxheWVyfSBMYXllckNsYXNzfSAqL1xuXG4vKipcbiAqIEFwcHJveC4gbnVtYmVyIG9mIHBvaW50cyB0byBzYW1wbGUgaW4gYSBsYXJnZSBkYXRhIHNldFxuICogQHR5cGUge251bWJlcn1cbiAqL1xuZXhwb3J0IGNvbnN0IExBWUVSX0lEX0xFTkdUSCA9IDY7XG5cbi8vIE5vdGUsIHRoaXMgaXMgaXMgU1ZHIG9mIHNvbGlkIGNpcmNsZSBlbmNvZGVkIGFzIGRhdGEtdXJpXG5jb25zdCBGQUxMQkFDS19JQ09OID1cbiAgJ2RhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PXV0Zi04O2Jhc2U2NCxQSE4yWnlCMmFXVjNRbTk0UFNJd0lEQWdNVEF3SURFd01DSWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklqNE5DaUFnUEdOcGNtTnNaU0JqZUQwaU5UQWlJR041UFNJMU1DSWdjajBpTlRBaUx6NE5Dand2YzNablBnPT0nO1xuXG5jb25zdCBNQVhfU0FNUExFX1NJWkUgPSA1MDAwO1xuY29uc3QgZGVmYXVsdERvbWFpbiA9IFswLCAxXTtcbmNvbnN0IGRhdGFGaWx0ZXJFeHRlbnNpb24gPSBuZXcgRGF0YUZpbHRlckV4dGVuc2lvbih7ZmlsdGVyU2l6ZTogTUFYX0dQVV9GSUxURVJTfSk7XG5cbmNvbnN0IGRlZmF1bHREYXRhQWNjZXNzb3IgPSBkYyA9PiBkID0+IGQ7XG5jb25zdCBkZWZhdWx0R2V0RmllbGRWYWx1ZSA9IChmaWVsZCwgZCkgPT4gZmllbGQudmFsdWVBY2Nlc3NvcihkKTtcbmNvbnN0IHNjYWxlSWRlbnRpdHkgPSB2ID0+IHY7XG5cbmV4cG9ydCBjb25zdCBPVkVSTEFZX1RZUEUgPSBrZXltaXJyb3Ioe1xuICBkZWNrZ2w6IG51bGwsXG4gIG1hcGJveGdsOiBudWxsXG59KTtcblxuZXhwb3J0IGNvbnN0IGxheWVyQ29sb3JzID0gT2JqZWN0LnZhbHVlcyhEYXRhVml6Q29sb3JzKS5tYXAoaGV4VG9SZ2IpO1xuZnVuY3Rpb24qIGdlbmVyYXRlQ29sb3IoKSB7XG4gIGxldCBpbmRleCA9IDA7XG4gIHdoaWxlIChpbmRleCA8IGxheWVyQ29sb3JzLmxlbmd0aCArIDEpIHtcbiAgICBpZiAoaW5kZXggPT09IGxheWVyQ29sb3JzLmxlbmd0aCkge1xuICAgICAgaW5kZXggPSAwO1xuICAgIH1cbiAgICB5aWVsZCBsYXllckNvbG9yc1tpbmRleCsrXTtcbiAgfVxufVxuXG5leHBvcnQgY29uc3QgY29sb3JNYWtlciA9IGdlbmVyYXRlQ29sb3IoKTtcblxuLyoqIEB0eXBlIHtMYXllckNsYXNzfSAqL1xuY2xhc3MgTGF5ZXIge1xuICBjb25zdHJ1Y3Rvcihwcm9wcyA9IHt9KSB7XG4gICAgdGhpcy5pZCA9IHByb3BzLmlkIHx8IGdlbmVyYXRlSGFzaElkKExBWUVSX0lEX0xFTkdUSCk7XG5cbiAgICAvLyBtZXRhXG4gICAgdGhpcy5tZXRhID0ge307XG5cbiAgICAvLyB2aXNDb25maWdTZXR0aW5nc1xuICAgIHRoaXMudmlzQ29uZmlnU2V0dGluZ3MgPSB7fTtcblxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB0aGlzLmNvbmZpZyA9IHRoaXMuZ2V0RGVmYXVsdExheWVyQ29uZmlnKHtcbiAgICAgIGNvbHVtbnM6IHRoaXMuZ2V0TGF5ZXJDb2x1bW5zKCksXG4gICAgICAuLi5wcm9wc1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0IGxheWVySWNvbigpIHtcbiAgICByZXR1cm4gRGVmYXVsdExheWVySWNvbjtcbiAgfVxuXG4gIGdldCBvdmVybGF5VHlwZSgpIHtcbiAgICByZXR1cm4gT1ZFUkxBWV9UWVBFLmRlY2tnbDtcbiAgfVxuXG4gIGdldCB0eXBlKCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgZ2V0IG5hbWUoKSB7XG4gICAgcmV0dXJuIHRoaXMudHlwZTtcbiAgfVxuXG4gIGdldCBpc0FnZ3JlZ2F0ZWQoKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgZ2V0IHJlcXVpcmVkTGF5ZXJDb2x1bW5zKCkge1xuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIGdldCBvcHRpb25hbENvbHVtbnMoKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgZ2V0IG5vbmVMYXllckRhdGFBZmZlY3RpbmdQcm9wcygpIHtcbiAgICByZXR1cm4gWydsYWJlbCcsICdvcGFjaXR5JywgJ3RoaWNrbmVzcycsICdpc1Zpc2libGUnLCAnaGlkZGVuJ107XG4gIH1cblxuICBnZXQgdmlzdWFsQ2hhbm5lbHMoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGNvbG9yOiB7XG4gICAgICAgIHByb3BlcnR5OiAnY29sb3InLFxuICAgICAgICBmaWVsZDogJ2NvbG9yRmllbGQnLFxuICAgICAgICBzY2FsZTogJ2NvbG9yU2NhbGUnLFxuICAgICAgICBkb21haW46ICdjb2xvckRvbWFpbicsXG4gICAgICAgIHJhbmdlOiAnY29sb3JSYW5nZScsXG4gICAgICAgIGtleTogJ2NvbG9yJyxcbiAgICAgICAgY2hhbm5lbFNjYWxlVHlwZTogQ0hBTk5FTF9TQ0FMRVMuY29sb3IsXG4gICAgICAgIG51bGxWYWx1ZTogTk9fVkFMVUVfQ09MT1IsXG4gICAgICAgIGRlZmF1bHRWYWx1ZTogY29uZmlnID0+IGNvbmZpZy5jb2xvclxuICAgICAgfSxcbiAgICAgIHNpemU6IHtcbiAgICAgICAgcHJvcGVydHk6ICdzaXplJyxcbiAgICAgICAgZmllbGQ6ICdzaXplRmllbGQnLFxuICAgICAgICBzY2FsZTogJ3NpemVTY2FsZScsXG4gICAgICAgIGRvbWFpbjogJ3NpemVEb21haW4nLFxuICAgICAgICByYW5nZTogJ3NpemVSYW5nZScsXG4gICAgICAgIGtleTogJ3NpemUnLFxuICAgICAgICBjaGFubmVsU2NhbGVUeXBlOiBDSEFOTkVMX1NDQUxFUy5zaXplLFxuICAgICAgICBudWxsVmFsdWU6IDAsXG4gICAgICAgIGRlZmF1bHRWYWx1ZTogMVxuICAgICAgfVxuICAgIH07XG4gIH1cblxuICAvKlxuICAgKiBDb2x1bW4gcGFpcnMgbWFwcyBsYXllciBjb2x1bW4gdG8gYSBzcGVjaWZpYyBmaWVsZCBwYWlycyxcbiAgICogQnkgZGVmYXVsdCwgaXQgaXMgc2V0IHRvIG51bGxcbiAgICovXG4gIGdldCBjb2x1bW5QYWlycygpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIC8qXG4gICAqIERlZmF1bHQgcG9pbnQgY29sdW1uIHBhaXJzLCBjYW4gYmUgdXNlZCBmb3IgcG9pbnQgYmFzZWQgbGF5ZXJzOiBwb2ludCwgaWNvbiBldGMuXG4gICAqL1xuICBnZXQgZGVmYXVsdFBvaW50Q29sdW1uUGFpcnMoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGxhdDoge3BhaXI6ICdsbmcnLCBmaWVsZFBhaXJLZXk6ICdsYXQnfSxcbiAgICAgIGxuZzoge3BhaXI6ICdsYXQnLCBmaWVsZFBhaXJLZXk6ICdsbmcnfVxuICAgIH07XG4gIH1cblxuICAvKlxuICAgKiBEZWZhdWx0IGxpbmsgY29sdW1uIHBhaXJzLCBjYW4gYmUgdXNlZCBmb3IgbGluayBiYXNlZCBsYXllcnM6IGFyYywgbGluZSBldGNcbiAgICovXG4gIGdldCBkZWZhdWx0TGlua0NvbHVtblBhaXJzKCkge1xuICAgIHJldHVybiB7XG4gICAgICBsYXQwOiB7cGFpcjogJ2xuZzAnLCBmaWVsZFBhaXJLZXk6ICdsYXQnfSxcbiAgICAgIGxuZzA6IHtwYWlyOiAnbGF0MCcsIGZpZWxkUGFpcktleTogJ2xuZyd9LFxuICAgICAgbGF0MToge3BhaXI6ICdsbmcxJywgZmllbGRQYWlyS2V5OiAnbGF0J30sXG4gICAgICBsbmcxOiB7cGFpcjogJ2xhdDEnLCBmaWVsZFBhaXJLZXk6ICdsbmcnfVxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIGEgUmVhY3QgY29tcG9uZW50IGZvciB0byByZW5kZXIgbGF5ZXIgaW5zdHJ1Y3Rpb25zIGluIGEgbW9kYWxcbiAgICogQHJldHVybnMge29iamVjdH0gLSBhbiBvYmplY3RcbiAgICogQGV4YW1wbGVcbiAgICogIHJldHVybiB7XG4gICAqICAgIGlkOiAnaWNvbkluZm8nLFxuICAgKiAgICB0ZW1wbGF0ZTogSWNvbkluZm9Nb2RhbCxcbiAgICogICAgbW9kYWxQcm9wczoge1xuICAgKiAgICAgIHRpdGxlOiAnSG93IHRvIGRyYXcgaWNvbnMnXG4gICAqICAgfTtcbiAgICogfVxuICAgKi9cbiAgZ2V0IGxheWVySW5mb01vZGFsKCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIC8qXG4gICAqIEdpdmVuIGEgZGF0YXNldCwgYXV0b21hdGljYWxseSBmaW5kIHByb3BzIHRvIGNyZWF0ZSBsYXllciBiYXNlZCBvbiBpdFxuICAgKiBhbmQgcmV0dXJuIHRoZSBwcm9wcyBhbmQgcHJldmlvdXMgZm91bmQgbGF5ZXJzLlxuICAgKiBCeSBkZWZhdWx0LCBubyBsYXllcnMgd2lsbCBiZSBmb3VuZFxuICAgKi9cbiAgc3RhdGljIGZpbmREZWZhdWx0TGF5ZXJQcm9wcyhkYXRhc2V0LCBmb3VuZExheWVycykge1xuICAgIHJldHVybiB7cHJvcHM6IFtdLCBmb3VuZExheWVyc307XG4gIH1cblxuICAvKipcbiAgICogR2l2ZW4gYSBhcnJheSBvZiBwcmVzZXQgcmVxdWlyZWQgY29sdW1uIG5hbWVzXG4gICAqIGZvdW5kIGZpZWxkIHRoYXQgaGFzIHRoZSBzYW1lIG5hbWUgdG8gc2V0IGFzIGxheWVyIGNvbHVtblxuICAgKlxuICAgKiBAcGFyYW0ge29iamVjdH0gZGVmYXVsdEZpZWxkc1xuICAgKiBAcGFyYW0ge29iamVjdFtdfSBhbGxGaWVsZHNcbiAgICogQHJldHVybnMge29iamVjdFtdIHwgbnVsbH0gYWxsIHBvc3NpYmxlIHJlcXVpcmVkIGxheWVyIGNvbHVtbiBwYWlyc1xuICAgKi9cbiAgc3RhdGljIGZpbmREZWZhdWx0Q29sdW1uRmllbGQoZGVmYXVsdEZpZWxkcywgYWxsRmllbGRzKSB7XG4gICAgLy8gZmluZCBhbGwgbWF0Y2hlZCBmaWVsZHMgZm9yIGVhY2ggcmVxdWlyZWQgY29sXG4gICAgY29uc3QgcmVxdWlyZWRDb2x1bW5zID0gT2JqZWN0LmtleXMoZGVmYXVsdEZpZWxkcykucmVkdWNlKChwcmV2LCBrZXkpID0+IHtcbiAgICAgIGNvbnN0IHJlcXVpcmVkRmllbGRzID0gYWxsRmllbGRzLmZpbHRlcihcbiAgICAgICAgZiA9PiBmLm5hbWUgPT09IGRlZmF1bHRGaWVsZHNba2V5XSB8fCBkZWZhdWx0RmllbGRzW2tleV0uaW5jbHVkZXMoZi5uYW1lKVxuICAgICAgKTtcblxuICAgICAgcHJldltrZXldID0gcmVxdWlyZWRGaWVsZHMubGVuZ3RoXG4gICAgICAgID8gcmVxdWlyZWRGaWVsZHMubWFwKGYgPT4gKHtcbiAgICAgICAgICAgIHZhbHVlOiBmLm5hbWUsXG4gICAgICAgICAgICBmaWVsZElkeDogZi5maWVsZElkeFxuICAgICAgICAgIH0pKVxuICAgICAgICA6IG51bGw7XG4gICAgICByZXR1cm4gcHJldjtcbiAgICB9LCB7fSk7XG5cbiAgICBpZiAoIU9iamVjdC52YWx1ZXMocmVxdWlyZWRDb2x1bW5zKS5ldmVyeShCb29sZWFuKSkge1xuICAgICAgLy8gaWYgYW55IGZpZWxkIG1pc3NpbmcsIHJldHVybiBudWxsXG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5nZXRBbGxQb3NzaWJsZUNvbHVtblBhcmlzKHJlcXVpcmVkQ29sdW1ucyk7XG4gIH1cblxuICBzdGF0aWMgZ2V0QWxsUG9zc2libGVDb2x1bW5QYXJpcyhyZXF1aXJlZENvbHVtbnMpIHtcbiAgICAvLyBmb3IgbXVsdGlwbGUgbWF0Y2hlZCBmaWVsZCBmb3Igb25lIHJlcXVpcmVkIGNvbHVtbiwgcmV0dXJuIG11bHRpcGxlXG4gICAgLy8gY29tYmluYXRpb25zLCBlLiBnLiBpZiBjb2x1bW4gYSBoYXMgMiBtYXRjaGVkLCBjb2x1bW4gYiBoYXMgMyBtYXRjaGVkXG4gICAgLy8gNiBwb3NzaWJsZSBjb2x1bW4gcGFpcnMgd2lsbCBiZSByZXR1cm5lZFxuICAgIGNvbnN0IGFsbEtleXMgPSBPYmplY3Qua2V5cyhyZXF1aXJlZENvbHVtbnMpO1xuICAgIGNvbnN0IHBvaW50ZXJzID0gYWxsS2V5cy5tYXAoKGssIGkpID0+ICgoaSA9PT0gYWxsS2V5cy5sZW5ndGggLSAxID8gLTEgOiAwKSkpO1xuICAgIGNvbnN0IGNvdW50UGVyS2V5ID0gYWxsS2V5cy5tYXAoayA9PiByZXF1aXJlZENvbHVtbnNba10ubGVuZ3RoKTtcbiAgICBjb25zdCBwYWlycyA9IFtdO1xuXG4gICAgLyogZXNsaW50LWRpc2FibGUgbm8tbG9vcC1mdW5jICovXG4gICAgd2hpbGUgKGluY3JlbWVudFBvaW50ZXJzKHBvaW50ZXJzLCBjb3VudFBlcktleSwgcG9pbnRlcnMubGVuZ3RoIC0gMSkpIHtcbiAgICAgIGNvbnN0IG5ld1BhaXIgPSBwb2ludGVycy5yZWR1Y2UoKHByZXYsIGN1dXIsIGkpID0+IHtcbiAgICAgICAgcHJldlthbGxLZXlzW2ldXSA9IHJlcXVpcmVkQ29sdW1uc1thbGxLZXlzW2ldXVtjdXVyXTtcbiAgICAgICAgcmV0dXJuIHByZXY7XG4gICAgICB9LCB7fSk7XG5cbiAgICAgIHBhaXJzLnB1c2gobmV3UGFpcik7XG4gICAgfVxuICAgIC8qIGVzbGludC1lbmFibGUgbm8tbG9vcC1mdW5jICovXG5cbiAgICAvLyByZWN1cnNpdmVseSBpbmNyZW1lbnQgcG9pbnRlcnNcbiAgICBmdW5jdGlvbiBpbmNyZW1lbnRQb2ludGVycyhwdHMsIGNvdW50cywgaW5kZXgpIHtcbiAgICAgIGlmIChpbmRleCA9PT0gMCAmJiBwdHNbMF0gPT09IGNvdW50c1swXSAtIDEpIHtcbiAgICAgICAgLy8gbm90aGluZyB0byBpbmNyZW1lbnRcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuXG4gICAgICBpZiAocHRzW2luZGV4XSArIDEgPCBjb3VudHNbaW5kZXhdKSB7XG4gICAgICAgIHB0c1tpbmRleF0gPSBwdHNbaW5kZXhdICsgMTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG5cbiAgICAgIHB0c1tpbmRleF0gPSAwO1xuICAgICAgcmV0dXJuIGluY3JlbWVudFBvaW50ZXJzKHB0cywgY291bnRzLCBpbmRleCAtIDEpO1xuICAgIH1cblxuICAgIHJldHVybiBwYWlycztcbiAgfVxuXG4gIHN0YXRpYyBoZXhUb1JnYihjKSB7XG4gICAgcmV0dXJuIGhleFRvUmdiKGMpO1xuICB9XG5cbiAgZ2V0RGVmYXVsdExheWVyQ29uZmlnKHByb3BzID0ge30pIHtcbiAgICByZXR1cm4ge1xuICAgICAgZGF0YUlkOiBwcm9wcy5kYXRhSWQgfHwgbnVsbCxcbiAgICAgIHZpc2liaWxpdHlCeVpvb206IHtcbiAgICAgICAgbWluOiBwcm9wcy52aXNpYmlsaXR5Qnlab29tPy5taW4gfHwgWk9PTV9MRVZFTF9MSU1JVFMubWluLFxuICAgICAgICBtYXg6IHByb3BzLnZpc2liaWxpdHlCeVpvb20/Lm1heCB8fCBaT09NX0xFVkVMX0xJTUlUUy5tYXhcbiAgICAgIH0sXG4gICAgICBsYWJlbDogcHJvcHMubGFiZWwgfHwgREVGQVVMVF9MQVlFUl9MQUJFTCxcbiAgICAgIGNvbG9yOiBwcm9wcy5jb2xvciB8fCBjb2xvck1ha2VyLm5leHQoKS52YWx1ZSxcbiAgICAgIGNvbHVtbnM6IHByb3BzLmNvbHVtbnMgfHwgbnVsbCxcbiAgICAgIGlzVmlzaWJsZTogcHJvcHMuaXNWaXNpYmxlIHx8IGZhbHNlLFxuICAgICAgaXNDb25maWdBY3RpdmU6IHByb3BzLmlzQ29uZmlnQWN0aXZlIHx8IGZhbHNlLFxuICAgICAgaGlnaGxpZ2h0Q29sb3I6IHByb3BzLmhpZ2hsaWdodENvbG9yIHx8IERFRkFVTFRfSElHSExJR0hUX0NPTE9SLFxuICAgICAgaGlkZGVuOiBwcm9wcy5oaWRkZW4gfHwgZmFsc2UsXG5cbiAgICAgIC8vIFRPRE86IHJlZmFjdG9yIHRoaXMgaW50byBzZXBhcmF0ZSB2aXN1YWwgQ2hhbm5lbCBjb25maWdcbiAgICAgIC8vIGNvbG9yIGJ5IGZpZWxkLCBkb21haW4gaXMgc2V0IGJ5IGZpbHRlcnMsIGZpZWxkLCBzY2FsZSB0eXBlXG4gICAgICBjb2xvckZpZWxkOiBudWxsLFxuICAgICAgY29sb3JEb21haW46IFswLCAxXSxcbiAgICAgIGNvbG9yU2NhbGU6IFNDQUxFX1RZUEVTLnF1YW50aWxlLFxuXG4gICAgICAvLyBjb2xvciBieSBzaXplLCBkb21haW4gaXMgc2V0IGJ5IGZpbHRlcnMsIGZpZWxkLCBzY2FsZSB0eXBlXG4gICAgICBzaXplRG9tYWluOiBbMCwgMV0sXG4gICAgICBzaXplU2NhbGU6IFNDQUxFX1RZUEVTLmxpbmVhcixcbiAgICAgIHNpemVGaWVsZDogbnVsbCxcblxuICAgICAgdmlzQ29uZmlnOiB7fSxcblxuICAgICAgdGV4dExhYmVsOiBbREVGQVVMVF9URVhUX0xBQkVMXSxcblxuICAgICAgY29sb3JVSToge1xuICAgICAgICBjb2xvcjogREVGQVVMVF9DT0xPUl9VSSxcbiAgICAgICAgY29sb3JSYW5nZTogREVGQVVMVF9DT0xPUl9VSVxuICAgICAgfSxcbiAgICAgIGFuaW1hdGlvbjoge2VuYWJsZWQ6IGZhbHNlfVxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBkZXNjcmlwdGlvbiBvZiBhIHZpc3VhbENoYW5uZWwgY29uZmlnXG4gICAqIEBwYXJhbSBrZXlcbiAgICogQHJldHVybnMge3tsYWJlbDogc3RyaW5nLCBtZWFzdXJlOiAoc3RyaW5nfHN0cmluZyl9fVxuICAgKi9cbiAgZ2V0VmlzdWFsQ2hhbm5lbERlc2NyaXB0aW9uKGtleSkge1xuICAgIC8vIGUuZy4gbGFiZWw6IENvbG9yLCBtZWFzdXJlOiBWZWhpY2xlIFR5cGVcbiAgICByZXR1cm4ge1xuICAgICAgbGFiZWw6IHRoaXMudmlzQ29uZmlnU2V0dGluZ3NbdGhpcy52aXN1YWxDaGFubmVsc1trZXldLnJhbmdlXS5sYWJlbCxcbiAgICAgIG1lYXN1cmU6IHRoaXMuY29uZmlnW3RoaXMudmlzdWFsQ2hhbm5lbHNba2V5XS5maWVsZF1cbiAgICAgICAgPyAodGhpcy5jb25maWdbdGhpcy52aXN1YWxDaGFubmVsc1trZXldLmZpZWxkXS5kaXNwbGF5TmFtZSB8fFxuICAgICAgICAgIHRoaXMuY29uZmlnW3RoaXMudmlzdWFsQ2hhbm5lbHNba2V5XS5maWVsZF0ubmFtZSlcbiAgICAgICAgOiB0aGlzLnZpc3VhbENoYW5uZWxzW2tleV0uZGVmYXVsdE1lYXN1cmVcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEFzc2lnbiBhIGZpZWxkIHRvIGxheWVyIGNvbHVtbiwgcmV0dXJuIGNvbHVtbiBjb25maWdcbiAgICogQHBhcmFtIGtleSAtIENvbHVtbiBLZXlcbiAgICogQHBhcmFtIGZpZWxkIC0gU2VsZWN0ZWQgZmllbGRcbiAgICogQHJldHVybnMge3t9fSAtIENvbHVtbiBjb25maWdcbiAgICovXG4gIGFzc2lnbkNvbHVtbihrZXksIGZpZWxkKSB7XG4gICAgLy8gZmllbGQgdmFsdWUgY291bGQgYmUgbnVsbCBmb3Igb3B0aW9uYWwgY29sdW1uc1xuICAgIGNvbnN0IHVwZGF0ZSA9IGZpZWxkXG4gICAgICA/IHtcbiAgICAgICAgICB2YWx1ZTogZmllbGQubmFtZSxcbiAgICAgICAgICBmaWVsZElkeDogZmllbGQuZmllbGRJZHhcbiAgICAgICAgfVxuICAgICAgOiB7dmFsdWU6IG51bGwsIGZpZWxkSWR4OiAtMX07XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4udGhpcy5jb25maWcuY29sdW1ucyxcbiAgICAgIFtrZXldOiB7XG4gICAgICAgIC4uLnRoaXMuY29uZmlnLmNvbHVtbnNba2V5XSxcbiAgICAgICAgLi4udXBkYXRlXG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBc3NpZ24gYSBmaWVsZCBwYWlyIHRvIGNvbHVtbiBjb25maWcsIHJldHVybiBjb2x1bW4gY29uZmlnXG4gICAqIEBwYXJhbSBrZXkgLSBDb2x1bW4gS2V5XG4gICAqIEBwYXJhbSBwYWlyIC0gZmllbGQgUGFpclxuICAgKiBAcmV0dXJucyB7b2JqZWN0fSAtIENvbHVtbiBjb25maWdcbiAgICovXG4gIGFzc2lnbkNvbHVtblBhaXJzKGtleSwgcGFpcikge1xuICAgIGlmICghdGhpcy5jb2x1bW5QYWlycyB8fCAhdGhpcy5jb2x1bW5QYWlycz8uW2tleV0pIHtcbiAgICAgIC8vIHNob3VsZCBub3QgZW5kIGluIHRoaXMgc3RhdGVcbiAgICAgIHJldHVybiB0aGlzLmNvbmZpZy5jb2x1bW5zO1xuICAgIH1cblxuICAgIGNvbnN0IHtwYWlyOiBwYXJ0bmVyS2V5LCBmaWVsZFBhaXJLZXl9ID0gdGhpcy5jb2x1bW5QYWlycz8uW2tleV07XG4gICAgY29uc3Qge2ZpZWxkUGFpcktleTogcGFydG5lckZpZWxkUGFpcktleX0gPSB0aGlzLmNvbHVtblBhaXJzPy5bcGFydG5lcktleV07XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4udGhpcy5jb25maWcuY29sdW1ucyxcbiAgICAgIFtrZXldOiBwYWlyW2ZpZWxkUGFpcktleV0sXG4gICAgICBbcGFydG5lcktleV06IHBhaXJbcGFydG5lckZpZWxkUGFpcktleV1cbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGN1bGF0ZSBhIHJhZGl1cyB6b29tIG11bHRpcGxpZXIgdG8gcmVuZGVyIHBvaW50cywgc28gdGhleSBhcmUgdmlzaWJsZSBpbiBhbGwgem9vbSBsZXZlbFxuICAgKiBAcGFyYW0ge29iamVjdH0gbWFwU3RhdGVcbiAgICogQHBhcmFtIHtudW1iZXJ9IG1hcFN0YXRlLnpvb20gLSBhY3R1YWwgem9vbVxuICAgKiBAcGFyYW0ge251bWJlciB8IHZvaWR9IG1hcFN0YXRlLnpvb21PZmZzZXQgLSB6b29tT2Zmc2V0IHdoZW4gcmVuZGVyIGluIHRoZSBwbG90IGNvbnRhaW5lciBmb3IgZXhwb3J0IGltYWdlXG4gICAqIEByZXR1cm5zIHtudW1iZXJ9XG4gICAqL1xuICBnZXRab29tRmFjdG9yKHt6b29tLCB6b29tT2Zmc2V0ID0gMH0pIHtcbiAgICByZXR1cm4gTWF0aC5wb3coMiwgTWF0aC5tYXgoMTQgLSB6b29tICsgem9vbU9mZnNldCwgMCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGN1bGF0ZSBhIGVsZXZhdGlvbiB6b29tIG11bHRpcGxpZXIgdG8gcmVuZGVyIHBvaW50cywgc28gdGhleSBhcmUgdmlzaWJsZSBpbiBhbGwgem9vbSBsZXZlbFxuICAgKiBAcGFyYW0ge29iamVjdH0gbWFwU3RhdGVcbiAgICogQHBhcmFtIHtudW1iZXJ9IG1hcFN0YXRlLnpvb20gLSBhY3R1YWwgem9vbVxuICAgKiBAcGFyYW0ge251bWJlciB8IHZvaWR9IG1hcFN0YXRlLnpvb21PZmZzZXQgLSB6b29tT2Zmc2V0IHdoZW4gcmVuZGVyIGluIHRoZSBwbG90IGNvbnRhaW5lciBmb3IgZXhwb3J0IGltYWdlXG4gICAqIEByZXR1cm5zIHtudW1iZXJ9XG4gICAqL1xuICBnZXRFbGV2YXRpb25ab29tRmFjdG9yKHt6b29tLCB6b29tT2Zmc2V0ID0gMH0pIHtcbiAgICByZXR1cm4gdGhpcy5jb25maWcudmlzQ29uZmlnLmVuYWJsZUVsZXZhdGlvblpvb21GYWN0b3JcbiAgICAgID8gTWF0aC5wb3coMiwgTWF0aC5tYXgoOCAtIHpvb20gKyB6b29tT2Zmc2V0LCAwKSlcbiAgICAgIDogMTtcbiAgfVxuXG4gIGZvcm1hdExheWVyRGF0YShkYXRhc2V0cywgZmlsdGVyZWRJbmRleCkge1xuICAgIHJldHVybiB7fTtcbiAgfVxuXG4gIHJlbmRlckxheWVyKCkge1xuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIGdldEhvdmVyRGF0YShvYmplY3QsIGRhdGFDb250YWluZXIpIHtcbiAgICBpZiAoIW9iamVjdCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgLy8gQnkgZGVmYXVsdCwgZWFjaCBlbnRyeSBvZiBsYXllckRhdGEgc2hvdWxkIGhhdmUgYW4gaW5kZXggb2YgYSByb3cgaW4gdGhlIG9yaWdpbmFsIGRhdGEgY29udGFpbmVyLlxuICAgIC8vIEVhY2ggbGF5ZXIgY2FuIGltcGxlbWVudCBpdHMgb3duIGdldEhvdmVyRGF0YSBtZXRob2RcbiAgICByZXR1cm4gZGF0YUNvbnRhaW5lci5yb3cob2JqZWN0LmluZGV4KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGVuIGNoYW5nZSBsYXllciB0eXBlLCB0cnkgdG8gY29weSBvdmVyIGxheWVyIGNvbmZpZ3MgYXMgbXVjaCBhcyBwb3NzaWJsZVxuICAgKiBAcGFyYW0gY29uZmlnVG9Db3B5IC0gY29uZmlnIHRvIGNvcHkgb3ZlclxuICAgKiBAcGFyYW0gdmlzQ29uZmlnU2V0dGluZ3MgLSB2aXNDb25maWcgc2V0dGluZ3Mgb2YgY29uZmlnIHRvIGNvcHlcbiAgICovXG4gIGFzc2lnbkNvbmZpZ1RvTGF5ZXIoY29uZmlnVG9Db3B5LCB2aXNDb25maWdTZXR0aW5ncykge1xuICAgIC8vIGRvbid0IGRlZXAgbWVyZ2UgdmlzdWFsQ2hhbm5lbCBmaWVsZFxuICAgIC8vIGRvbid0IGRlZXAgbWVyZ2UgY29sb3IgcmFuZ2UsIHJldmVyc2VkOiBpcyBub3QgYSBrZXkgYnkgZGVmYXVsdFxuICAgIGNvbnN0IHNoYWxsb3dDb3B5ID0gWydjb2xvclJhbmdlJywgJ3N0cm9rZUNvbG9yUmFuZ2UnXS5jb25jYXQoXG4gICAgICBPYmplY3QudmFsdWVzKHRoaXMudmlzdWFsQ2hhbm5lbHMpLm1hcCh2ID0+IHYuZmllbGQpXG4gICAgKTtcblxuICAgIC8vIGRvbid0IGNvcHkgb3ZlciBkb21haW4gYW5kIGFuaW1hdGlvblxuICAgIGNvbnN0IG5vdFRvQ29weSA9IFsnYW5pbWF0aW9uJ10uY29uY2F0KE9iamVjdC52YWx1ZXModGhpcy52aXN1YWxDaGFubmVscykubWFwKHYgPT4gdi5kb21haW4pKTtcbiAgICAvLyBpZiByYW5nZSBpcyBmb3IgdGhlIHNhbWUgcHJvcGVydHkgZ3JvdXAgY29weSBpdCwgb3RoZXJ3aXNlLCBub3QgdG8gY29weVxuICAgIE9iamVjdC52YWx1ZXModGhpcy52aXN1YWxDaGFubmVscykuZm9yRWFjaCh2ID0+IHtcbiAgICAgIGlmIChcbiAgICAgICAgY29uZmlnVG9Db3B5LnZpc0NvbmZpZ1t2LnJhbmdlXSAmJlxuICAgICAgICB0aGlzLnZpc0NvbmZpZ1NldHRpbmdzW3YucmFuZ2VdICYmXG4gICAgICAgIHZpc0NvbmZpZ1NldHRpbmdzW3YucmFuZ2VdLmdyb3VwICE9PSB0aGlzLnZpc0NvbmZpZ1NldHRpbmdzW3YucmFuZ2VdLmdyb3VwXG4gICAgICApIHtcbiAgICAgICAgbm90VG9Db3B5LnB1c2godi5yYW5nZSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICAvLyBkb24ndCBjb3B5IG92ZXIgdmlzdWFsQ2hhbm5lbCByYW5nZVxuICAgIGNvbnN0IGN1cnJlbnRDb25maWcgPSB0aGlzLmNvbmZpZztcbiAgICBjb25zdCBjb3BpZWQgPSB0aGlzLmNvcHlMYXllckNvbmZpZyhjdXJyZW50Q29uZmlnLCBjb25maWdUb0NvcHksIHtcbiAgICAgIHNoYWxsb3dDb3B5LFxuICAgICAgbm90VG9Db3B5XG4gICAgfSk7XG4gICAgdGhpcy51cGRhdGVMYXllckNvbmZpZyhjb3BpZWQpO1xuICAgIC8vIHZhbGlkYXRlIHZpc3VhbENoYW5uZWwgZmllbGQgdHlwZSBhbmQgc2NhbGUgdHlwZXNcbiAgICBPYmplY3Qua2V5cyh0aGlzLnZpc3VhbENoYW5uZWxzKS5mb3JFYWNoKGNoYW5uZWwgPT4ge1xuICAgICAgdGhpcy52YWxpZGF0ZVZpc3VhbENoYW5uZWwoY2hhbm5lbCk7XG4gICAgfSk7XG4gIH1cblxuICAvKlxuICAgKiBSZWN1cnNpdmVseSBjb3B5IGNvbmZpZyBvdmVyIHRvIGFuIGVtcHR5IGxheWVyXG4gICAqIHdoZW4gcmVjZWl2ZWQgc2F2ZWQgY29uZmlnLCBvciBjb3B5IGNvbmZpZyBvdmVyIGZyb20gYSBkaWZmZXJlbnQgbGF5ZXIgdHlwZVxuICAgKiBtYWtlIHN1cmUgdG8gb25seSBjb3B5IG92ZXIgdmFsdWUgdG8gZXhpc3Rpbmcga2V5c1xuICAgKiBAcGFyYW0ge29iamVjdH0gY3VycmVudENvbmZpZyAtIGV4aXN0aW5nIGNvbmZpZyB0byBiZSBvdmVycmlkZVxuICAgKiBAcGFyYW0ge29iamVjdH0gY29uZmlnVG9Db3B5IC0gbmV3IENvbmZpZyB0byBjb3B5IG92ZXJcbiAgICogQHBhcmFtIHtzdHJpbmdbXX0gc2hhbGxvd0NvcHkgLSBhcnJheSBvZiBwcm9wZXJ0aWVzIHRvIG5vdCB0byBiZSBkZWVwIGNvcGllZFxuICAgKiBAcGFyYW0ge3N0cmluZ1tdfSBub3RUb0NvcHkgLSBhcnJheSBvZiBwcm9wZXJ0aWVzIG5vdCB0byBjb3B5XG4gICAqIEByZXR1cm5zIHtvYmplY3R9IC0gY29waWVkIGNvbmZpZ1xuICAgKi9cbiAgY29weUxheWVyQ29uZmlnKGN1cnJlbnRDb25maWcsIGNvbmZpZ1RvQ29weSwge3NoYWxsb3dDb3B5ID0gW10sIG5vdFRvQ29weSA9IFtdfSA9IHt9KSB7XG4gICAgY29uc3QgY29waWVkID0ge307XG4gICAgT2JqZWN0LmtleXMoY3VycmVudENvbmZpZykuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgaWYgKFxuICAgICAgICBpc1BsYWluT2JqZWN0KGN1cnJlbnRDb25maWdba2V5XSkgJiZcbiAgICAgICAgaXNQbGFpbk9iamVjdChjb25maWdUb0NvcHlba2V5XSkgJiZcbiAgICAgICAgIXNoYWxsb3dDb3B5LmluY2x1ZGVzKGtleSkgJiZcbiAgICAgICAgIW5vdFRvQ29weS5pbmNsdWRlcyhrZXkpXG4gICAgICApIHtcbiAgICAgICAgLy8gcmVjdXJzaXZlbHkgYXNzaWduIG9iamVjdCB2YWx1ZVxuICAgICAgICBjb3BpZWRba2V5XSA9IHRoaXMuY29weUxheWVyQ29uZmlnKGN1cnJlbnRDb25maWdba2V5XSwgY29uZmlnVG9Db3B5W2tleV0sIHtcbiAgICAgICAgICBzaGFsbG93Q29weSxcbiAgICAgICAgICBub3RUb0NvcHlcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2UgaWYgKG5vdE51bGxvclVuZGVmaW5lZChjb25maWdUb0NvcHlba2V5XSkgJiYgIW5vdFRvQ29weS5pbmNsdWRlcyhrZXkpKSB7XG4gICAgICAgIC8vIGNvcHlcbiAgICAgICAgY29waWVkW2tleV0gPSBjb25maWdUb0NvcHlba2V5XTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIGtlZXAgZXhpc3RpbmdcbiAgICAgICAgY29waWVkW2tleV0gPSBjdXJyZW50Q29uZmlnW2tleV07XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gY29waWVkO1xuICB9XG5cbiAgcmVnaXN0ZXJWaXNDb25maWcobGF5ZXJWaXNDb25maWdzKSB7XG4gICAgT2JqZWN0LmtleXMobGF5ZXJWaXNDb25maWdzKS5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgaWYgKHR5cGVvZiBpdGVtID09PSAnc3RyaW5nJyAmJiBMQVlFUl9WSVNfQ09ORklHU1tsYXllclZpc0NvbmZpZ3NbaXRlbV1dKSB7XG4gICAgICAgIC8vIGlmIGFzc2lnbmVkIG9uZSBvZiBkZWZhdWx0IExBWUVSX0NPTkZJR1NcbiAgICAgICAgdGhpcy5jb25maWcudmlzQ29uZmlnW2l0ZW1dID0gTEFZRVJfVklTX0NPTkZJR1NbbGF5ZXJWaXNDb25maWdzW2l0ZW1dXS5kZWZhdWx0VmFsdWU7XG4gICAgICAgIHRoaXMudmlzQ29uZmlnU2V0dGluZ3NbaXRlbV0gPSBMQVlFUl9WSVNfQ09ORklHU1tsYXllclZpc0NvbmZpZ3NbaXRlbV1dO1xuICAgICAgfSBlbHNlIGlmIChbJ3R5cGUnLCAnZGVmYXVsdFZhbHVlJ10uZXZlcnkocCA9PiBsYXllclZpc0NvbmZpZ3NbaXRlbV0uaGFzT3duUHJvcGVydHkocCkpKSB7XG4gICAgICAgIC8vIGlmIHByb3ZpZGVkIGN1c3RvbWl6ZWQgdmlzQ29uZmlnLCBhbmQgaGFzIHR5cGUgJiYgZGVmYXVsdFZhbHVlXG4gICAgICAgIC8vIFRPRE86IGZ1cnRoZXIgY2hlY2sgaWYgY3VzdG9taXplZCB2aXNDb25maWcgaXMgdmFsaWRcbiAgICAgICAgdGhpcy5jb25maWcudmlzQ29uZmlnW2l0ZW1dID0gbGF5ZXJWaXNDb25maWdzW2l0ZW1dLmRlZmF1bHRWYWx1ZTtcbiAgICAgICAgdGhpcy52aXNDb25maWdTZXR0aW5nc1tpdGVtXSA9IGxheWVyVmlzQ29uZmlnc1tpdGVtXTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGdldExheWVyQ29sdW1ucygpIHtcbiAgICBjb25zdCBjb2x1bW5WYWxpZGF0b3JzID0gdGhpcy5jb2x1bW5WYWxpZGF0b3JzIHx8IHt9O1xuICAgIGNvbnN0IHJlcXVpcmVkID0gdGhpcy5yZXF1aXJlZExheWVyQ29sdW1ucy5yZWR1Y2UoXG4gICAgICAoYWNjdSwga2V5KSA9PiAoe1xuICAgICAgICAuLi5hY2N1LFxuICAgICAgICBba2V5XTogY29sdW1uVmFsaWRhdG9yc1trZXldXG4gICAgICAgICAgPyB7dmFsdWU6IG51bGwsIGZpZWxkSWR4OiAtMSwgdmFsaWRhdG9yOiBjb2x1bW5WYWxpZGF0b3JzW2tleV19XG4gICAgICAgICAgOiB7dmFsdWU6IG51bGwsIGZpZWxkSWR4OiAtMX1cbiAgICAgIH0pLFxuICAgICAge31cbiAgICApO1xuICAgIGNvbnN0IG9wdGlvbmFsID0gdGhpcy5vcHRpb25hbENvbHVtbnMucmVkdWNlKFxuICAgICAgKGFjY3UsIGtleSkgPT4gKHtcbiAgICAgICAgLi4uYWNjdSxcbiAgICAgICAgW2tleV06IHt2YWx1ZTogbnVsbCwgZmllbGRJZHg6IC0xLCBvcHRpb25hbDogdHJ1ZX1cbiAgICAgIH0pLFxuICAgICAge31cbiAgICApO1xuXG4gICAgcmV0dXJuIHsuLi5yZXF1aXJlZCwgLi4ub3B0aW9uYWx9O1xuICB9XG5cbiAgdXBkYXRlTGF5ZXJDb25maWcobmV3Q29uZmlnKSB7XG4gICAgdGhpcy5jb25maWcgPSB7Li4udGhpcy5jb25maWcsIC4uLm5ld0NvbmZpZ307XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICB1cGRhdGVMYXllclZpc0NvbmZpZyhuZXdWaXNDb25maWcpIHtcbiAgICB0aGlzLmNvbmZpZy52aXNDb25maWcgPSB7Li4udGhpcy5jb25maWcudmlzQ29uZmlnLCAuLi5uZXdWaXNDb25maWd9O1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgdXBkYXRlTGF5ZXJDb2xvclVJKHByb3AsIG5ld0NvbmZpZykge1xuICAgIGNvbnN0IHtjb2xvclVJOiBwcmV2aW91cywgdmlzQ29uZmlnfSA9IHRoaXMuY29uZmlnO1xuXG4gICAgaWYgKCFpc1BsYWluT2JqZWN0KG5ld0NvbmZpZykgfHwgdHlwZW9mIHByb3AgIT09ICdzdHJpbmcnKSB7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBjb25zdCBjb2xvclVJUHJvcCA9IE9iamVjdC5lbnRyaWVzKG5ld0NvbmZpZykucmVkdWNlKChhY2N1LCBba2V5LCB2YWx1ZV0pID0+IHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLmFjY3UsXG4gICAgICAgIFtrZXldOiBpc1BsYWluT2JqZWN0KGFjY3Vba2V5XSkgJiYgaXNQbGFpbk9iamVjdCh2YWx1ZSkgPyB7Li4uYWNjdVtrZXldLCAuLi52YWx1ZX0gOiB2YWx1ZVxuICAgICAgfTtcbiAgICB9LCBwcmV2aW91c1twcm9wXSB8fCBERUZBVUxUX0NPTE9SX1VJKTtcblxuICAgIGNvbnN0IGNvbG9yVUkgPSB7XG4gICAgICAuLi5wcmV2aW91cyxcbiAgICAgIFtwcm9wXTogY29sb3JVSVByb3BcbiAgICB9O1xuXG4gICAgdGhpcy51cGRhdGVMYXllckNvbmZpZyh7Y29sb3JVSX0pO1xuICAgIC8vIGlmIGNvbG9yVUlbcHJvcF0gaXMgY29sb3JSYW5nZVxuICAgIGNvbnN0IGlzQ29sb3JSYW5nZSA9IHZpc0NvbmZpZ1twcm9wXSAmJiB2aXNDb25maWdbcHJvcF0uY29sb3JzO1xuXG4gICAgaWYgKGlzQ29sb3JSYW5nZSkge1xuICAgICAgdGhpcy51cGRhdGVDb2xvclVJQnlDb2xvclJhbmdlKG5ld0NvbmZpZywgcHJvcCk7XG4gICAgICB0aGlzLnVwZGF0ZUNvbG9yUmFuZ2VCeUNvbG9yVUkobmV3Q29uZmlnLCBwcmV2aW91cywgcHJvcCk7XG4gICAgICB0aGlzLnVwZGF0ZUN1c3RvbVBhbGV0dGUobmV3Q29uZmlnLCBwcmV2aW91cywgcHJvcCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICB1cGRhdGVDdXN0b21QYWxldHRlKG5ld0NvbmZpZywgcHJldmlvdXMsIHByb3ApIHtcbiAgICBpZiAoIW5ld0NvbmZpZy5jb2xvclJhbmdlQ29uZmlnIHx8ICFuZXdDb25maWcuY29sb3JSYW5nZUNvbmZpZy5jdXN0b20pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCB7Y29sb3JVSSwgdmlzQ29uZmlnfSA9IHRoaXMuY29uZmlnO1xuXG4gICAgaWYgKCF2aXNDb25maWdbcHJvcF0pIHJldHVybjtcbiAgICBjb25zdCB7Y29sb3JzfSA9IHZpc0NvbmZpZ1twcm9wXTtcbiAgICBjb25zdCBjdXN0b21QYWxldHRlID0ge1xuICAgICAgLi4uY29sb3JVSVtwcm9wXS5jdXN0b21QYWxldHRlLFxuICAgICAgbmFtZTogJ0N1c3RvbSBQYWxldHRlJyxcbiAgICAgIGNvbG9yczogWy4uLmNvbG9yc11cbiAgICB9O1xuICAgIHRoaXMudXBkYXRlTGF5ZXJDb25maWcoe1xuICAgICAgY29sb3JVSToge1xuICAgICAgICAuLi5jb2xvclVJLFxuICAgICAgICBbcHJvcF06IHtcbiAgICAgICAgICAuLi5jb2xvclVJW3Byb3BdLFxuICAgICAgICAgIGN1c3RvbVBhbGV0dGVcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9XG4gIC8qKlxuICAgKiBpZiBvcGVuIGRyb3Bkb3duIGFuZCBwcm9wIGlzIGNvbG9yIHJhbmdlXG4gICAqIEF1dG9tYXRpY2FsbHkgc2V0IGNvbG9yUmFuZ2VDb25maWcncyBzdGVwLCByZXZlcnNlZCBhbmQgdHlwZVxuICAgKiBAcGFyYW0geyp9IG5ld0NvbmZpZ1xuICAgKiBAcGFyYW0geyp9IHByb3BcbiAgICovXG4gIHVwZGF0ZUNvbG9yVUlCeUNvbG9yUmFuZ2UobmV3Q29uZmlnLCBwcm9wKSB7XG4gICAgaWYgKHR5cGVvZiBuZXdDb25maWcuc2hvd0Ryb3Bkb3duICE9PSAnbnVtYmVyJykgcmV0dXJuO1xuXG4gICAgY29uc3Qge2NvbG9yVUksIHZpc0NvbmZpZ30gPSB0aGlzLmNvbmZpZztcbiAgICB0aGlzLnVwZGF0ZUxheWVyQ29uZmlnKHtcbiAgICAgIGNvbG9yVUk6IHtcbiAgICAgICAgLi4uY29sb3JVSSxcbiAgICAgICAgW3Byb3BdOiB7XG4gICAgICAgICAgLi4uY29sb3JVSVtwcm9wXSxcbiAgICAgICAgICBjb2xvclJhbmdlQ29uZmlnOiB7XG4gICAgICAgICAgICAuLi5jb2xvclVJW3Byb3BdLmNvbG9yUmFuZ2VDb25maWcsXG4gICAgICAgICAgICB0eXBlOiB2aXNDb25maWdbcHJvcF0udHlwZSxcbiAgICAgICAgICAgIHN0ZXBzOiB2aXNDb25maWdbcHJvcF0uY29sb3JzLmxlbmd0aCxcbiAgICAgICAgICAgIHJldmVyc2VkOiBCb29sZWFuKHZpc0NvbmZpZ1twcm9wXS5yZXZlcnNlZClcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBjb21wbGV4aXR5XG4gIHVwZGF0ZUNvbG9yUmFuZ2VCeUNvbG9yVUkobmV3Q29uZmlnLCBwcmV2aW91cywgcHJvcCkge1xuICAgIC8vIG9ubHkgdXBkYXRlIGNvbG9yUmFuZ2UgaWYgY2hhbmdlcyBpbiBVSSBpcyBtYWRlIHRvICdyZXZlcnNlZCcsICdzdGVwcycgb3Igc3RlcHNcbiAgICBjb25zdCBzaG91bGRVcGRhdGUgPVxuICAgICAgbmV3Q29uZmlnLmNvbG9yUmFuZ2VDb25maWcgJiZcbiAgICAgIFsncmV2ZXJzZWQnLCAnc3RlcHMnXS5zb21lKFxuICAgICAgICBrZXkgPT5cbiAgICAgICAgICBuZXdDb25maWcuY29sb3JSYW5nZUNvbmZpZy5oYXNPd25Qcm9wZXJ0eShrZXkpICYmXG4gICAgICAgICAgbmV3Q29uZmlnLmNvbG9yUmFuZ2VDb25maWdba2V5XSAhPT1cbiAgICAgICAgICAgIChwcmV2aW91c1twcm9wXSB8fCBERUZBVUxUX0NPTE9SX1VJKS5jb2xvclJhbmdlQ29uZmlnW2tleV1cbiAgICAgICk7XG4gICAgaWYgKCFzaG91bGRVcGRhdGUpIHJldHVybjtcblxuICAgIGNvbnN0IHtjb2xvclVJLCB2aXNDb25maWd9ID0gdGhpcy5jb25maWc7XG4gICAgY29uc3Qge3N0ZXBzLCByZXZlcnNlZH0gPSBjb2xvclVJW3Byb3BdLmNvbG9yUmFuZ2VDb25maWc7XG4gICAgY29uc3QgY29sb3JSYW5nZSA9IHZpc0NvbmZpZ1twcm9wXTtcbiAgICAvLyBmaW5kIGJhc2VkIG9uIHN0ZXAgb3IgcmV2ZXJzZWRcbiAgICBsZXQgdXBkYXRlO1xuICAgIGlmIChuZXdDb25maWcuY29sb3JSYW5nZUNvbmZpZy5oYXNPd25Qcm9wZXJ0eSgnc3RlcHMnKSkge1xuICAgICAgY29uc3QgZ3JvdXAgPSBnZXRDb2xvckdyb3VwQnlOYW1lKGNvbG9yUmFuZ2UpO1xuXG4gICAgICBpZiAoZ3JvdXApIHtcbiAgICAgICAgY29uc3Qgc2FtZUdyb3VwID0gQ09MT1JfUkFOR0VTLmZpbHRlcihjciA9PiBnZXRDb2xvckdyb3VwQnlOYW1lKGNyKSA9PT0gZ3JvdXApO1xuXG4gICAgICAgIHVwZGF0ZSA9IHNhbWVHcm91cC5maW5kKGNyID0+IGNyLmNvbG9ycy5sZW5ndGggPT09IHN0ZXBzKTtcblxuICAgICAgICBpZiAodXBkYXRlICYmIGNvbG9yUmFuZ2UucmV2ZXJzZWQpIHtcbiAgICAgICAgICB1cGRhdGUgPSByZXZlcnNlQ29sb3JSYW5nZSh0cnVlLCB1cGRhdGUpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHVwZGF0ZSAmJiBjb2xvclJhbmdlLmNvbG9yTWFwKSB7XG4gICAgICAgICAgdXBkYXRlID0gdGhpcy51cGRhdGVDb2xvck1hcChwcm9wLCBjb2xvclJhbmdlLmNvbG9yTWFwLCB1cGRhdGUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKG5ld0NvbmZpZy5jb2xvclJhbmdlQ29uZmlnLmhhc093blByb3BlcnR5KCdyZXZlcnNlZCcpKSB7XG4gICAgICB1cGRhdGUgPSByZXZlcnNlQ29sb3JSYW5nZShyZXZlcnNlZCwgdXBkYXRlIHx8IGNvbG9yUmFuZ2UpO1xuICAgIH1cblxuICAgIGlmICh1cGRhdGUpIHtcbiAgICAgIHRoaXMudXBkYXRlTGF5ZXJWaXNDb25maWcoe1twcm9wXTogdXBkYXRlfSk7XG4gICAgfVxuICB9XG5cbiAgdXBkYXRlQ29sb3JNYXAocHJvcCwgY29sb3JNYXAsIGNvbG9yUmFuZ2UpIHtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgY29uc3Qge2ZpZWxkLCBkb21haW59ID0gT2JqZWN0LnZhbHVlcyh0aGlzLnZpc3VhbENoYW5uZWxzKS5maW5kKHZhbHVlID0+IHZhbHVlLnJhbmdlID09PSBwcm9wKTtcbiAgICBjb25zdCB0eXBlID0gdGhpcy5jb25maWdbZmllbGRdPy50eXBlO1xuXG4gICAgaWYgKHR5cGUgPT09ICdzdHJpbmcnIHx8IHR5cGUgPT09ICdib29sZWFuJyB8fCB0eXBlID09PSAnZGF0ZScpIHtcbiAgICAgIHJldHVybiB0aGlzLnVwZGF0ZUNhdGVnb3J5Q29sb3JNYXAoY29sb3JNYXAsIHRoaXMuY29uZmlnW2RvbWFpbl0sIGNvbG9yUmFuZ2UpO1xuICAgIH1cblxuICAgIC8vIElmIG5vIHR5cGUgb3IgdHlwZSBpcyBub3Qgc3RyaW5nLCBib29sZWFuIG9yIGRhdGVcbiAgICByZXR1cm4gdGhpcy51cGRhdGVOdW1lcmljQ29sb3JNYXAoY29sb3JNYXAsIHRoaXMuY29uZmlnW2RvbWFpbl0sIGNvbG9yUmFuZ2UpO1xuICB9XG5cbiAgdXBkYXRlQ2F0ZWdvcnlDb2xvck1hcChjb2xvck1hcCwgZG9tYWluLCBjb2xvclJhbmdlKSB7XG4gICAgY29uc3QgY29sb3JzID0gY29sb3JSYW5nZS5jb2xvcnM7XG4gICAgY29uc3QgYXNzaWduZWRDYXRlZ29yaWVzID0gW107XG4gICAgY29uc3QgbmV3Q29sb3JNYXAgPSBjb2xvck1hcC5zbGljZSgwLCBjb2xvcnMubGVuZ3RoKS5tYXAoKGNNYXAsIGluZGV4KSA9PiB7XG4gICAgICBhc3NpZ25lZENhdGVnb3JpZXMucHVzaChjTWFwWzBdKTtcbiAgICAgIHJldHVybiBbY01hcFswXSwgY29sb3JzW2luZGV4XV07XG4gICAgfSk7XG4gICAgY29uc3QgdW5hc3NpZ25lZENvbG9ycyA9IGNvbG9ycy5zbGljZShuZXdDb2xvck1hcC5sZW5ndGgsIGNvbG9ycy5sZW5ndGgpO1xuXG4gICAgZm9yIChjb25zdCBjb2xvciBvZiB1bmFzc2lnbmVkQ29sb3JzKSB7XG4gICAgICBjb25zdCBjYXRlZ29yeSA9IGRvbWFpbi5maW5kKGQgPT4gIWFzc2lnbmVkQ2F0ZWdvcmllcy5pbmNsdWRlcyhkKSk7XG4gICAgICBpZiAoIWNhdGVnb3J5KSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgYXNzaWduZWRDYXRlZ29yaWVzLnB1c2goY2F0ZWdvcnkpO1xuICAgICAgbmV3Q29sb3JNYXAucHVzaChbY2F0ZWdvcnksIGNvbG9yXSk7XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICAuLi5jb2xvclJhbmdlLFxuICAgICAgY29sb3JNYXA6IG5ld0NvbG9yTWFwXG4gICAgfTtcbiAgfVxuXG4gIHVwZGF0ZU51bWVyaWNDb2xvck1hcChjb2xvck1hcCwgZG9tYWluLCB1cGRhdGUpIHtcbiAgICBjb25zdCBjb2xvcnMgPSB1cGRhdGUuY29sb3JzO1xuICAgIGxldCBuZXdDb2xvck1hcCA9IGNvbG9yTWFwLnNsaWNlKDAsIGNvbG9ycy5sZW5ndGgpO1xuXG4gICAgbmV3Q29sb3JNYXAgPSBuZXdDb2xvck1hcC5tYXAoKGNNYXAsIGluZGV4KSA9PiB7XG4gICAgICBjb25zdCB2YWx1ZSA9IGluZGV4ID09PSBuZXdDb2xvck1hcC5sZW5ndGggLSAxID8gbnVsbCA6IGNNYXBbMF07XG4gICAgICByZXR1cm4gW3ZhbHVlLCBjb2xvcnNbaW5kZXhdXTtcbiAgICB9KTtcbiAgICBjb25zdCB1bmFzc2lnbmVkQ29sb3JzID0gY29sb3JzLnNsaWNlKG5ld0NvbG9yTWFwLmxlbmd0aCwgY29sb3JzLmxlbmd0aCk7XG5cbiAgICBpZiAodW5hc3NpZ25lZENvbG9ycy5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBjb2xvck1hcFZhbHVlcyA9IGNvbG9yTWFwLm1hcChjID0+IGNbMF0pLmZpbHRlcihjID0+IHR5cGVvZiBjID09PSAnbnVtYmVyJyk7XG4gICAgICBjb25zdCBtYXhWYWx1ZSA9IE1hdGgubWF4KC4uLmNvbG9yTWFwVmFsdWVzLCBkb21haW5bZG9tYWluLmxlbmd0aCAtIDFdKTtcbiAgICAgIGNvbnN0IHByZXZWYWx1ZSA9IG5ld0NvbG9yTWFwW25ld0NvbG9yTWFwLmxlbmd0aCAtIDJdWzBdO1xuICAgICAgY29uc3Qgc3RlcCA9IChtYXhWYWx1ZSAtIHByZXZWYWx1ZSkgLyAodW5hc3NpZ25lZENvbG9ycy5sZW5ndGggKyAxKTtcbiAgICAgIG5ld0NvbG9yTWFwW25ld0NvbG9yTWFwLmxlbmd0aCAtIDFdWzBdID0gcHJldlZhbHVlICsgc3RlcDtcblxuICAgICAgZm9yIChjb25zdCBbaSwgY29sb3JdIG9mIHVuYXNzaWduZWRDb2xvcnMuZW50cmllcygpKSB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gaSA9PT0gdW5hc3NpZ25lZENvbG9ycy5sZW5ndGggLSAxID8gbnVsbCA6IHByZXZWYWx1ZSArIChzdGVwICogKGkgKyAyKSk7XG4gICAgICAgIG5ld0NvbG9yTWFwLnB1c2goW3ZhbHVlLCBjb2xvcl0pO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgLi4udXBkYXRlLFxuICAgICAgY29sb3JNYXA6IG5ld0NvbG9yTWFwXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVjayB3aGV0aGVyIGxheWVyIGhhcyBhbGwgY29sdW1uc1xuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0geWVzIG9yIG5vXG4gICAqL1xuICBoYXNBbGxDb2x1bW5zKCkge1xuICAgIGNvbnN0IHtjb2x1bW5zfSA9IHRoaXMuY29uZmlnO1xuICAgIHJldHVybiAoXG4gICAgICAoY29sdW1ucyAmJlxuICAgICAgT2JqZWN0LnZhbHVlcyhjb2x1bW5zKS5ldmVyeSh2ID0+IHtcbiAgICAgICAgcmV0dXJuIEJvb2xlYW4odi5vcHRpb25hbCB8fCAodi52YWx1ZSAmJiB2LmZpZWxkSWR4ID4gLTEpKTtcbiAgICAgIH0pKVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgd2hldGhlciBsYXllciBoYXMgZGF0YVxuICAgKlxuICAgKiBAcGFyYW0ge0FycmF5IHwgT2JqZWN0fSBsYXllckRhdGFcbiAgICogQHJldHVybnMge2Jvb2xlYW59IHllcyBvciBub1xuICAgKi9cbiAgaGFzTGF5ZXJEYXRhKGxheWVyRGF0YSkge1xuICAgIGlmICghbGF5ZXJEYXRhKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiBCb29sZWFuKGxheWVyRGF0YS5kYXRhICYmIGxheWVyRGF0YS5kYXRhLmxlbmd0aCk7XG4gIH1cblxuICBpc1ZhbGlkVG9TYXZlKCkge1xuICAgIHJldHVybiB0aGlzLnR5cGUgJiYgdGhpcy5oYXNBbGxDb2x1bW5zKCk7XG4gIH1cblxuICBzaG91bGRSZW5kZXJMYXllcihkYXRhKSB7XG4gICAgcmV0dXJuIChcbiAgICAgICh0aGlzLnR5cGUgJiZcbiAgICAgIHRoaXMuaGFzQWxsQ29sdW1ucygpICYmXG4gICAgICB0aGlzLmhhc0xheWVyRGF0YShkYXRhKSAmJlxuICAgICAgdHlwZW9mIHRoaXMucmVuZGVyTGF5ZXIgPT09ICdmdW5jdGlvbicpXG4gICAgKTtcbiAgfVxuXG4gIGdldENvbG9yU2NhbGUoY29sb3JTY2FsZSwgY29sb3JEb21haW4sIGNvbG9yUmFuZ2UpIHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShjb2xvclJhbmdlLmNvbG9yTWFwKSkge1xuICAgICAgY29uc3QgY01hcCA9IG5ldyBNYXAoKTtcbiAgICAgIGNvbG9yUmFuZ2UuY29sb3JNYXAuZm9yRWFjaCgoW2ssIHZdKSA9PiB7XG4gICAgICAgIGNNYXAuc2V0KGssIHR5cGVvZiB2ID09PSAnc3RyaW5nJyA/IGhleFRvUmdiKHYpIDogdik7XG4gICAgICB9KTtcblxuICAgICAgLy8gQHRzLWlnbm9yZSBkMyBzY2FsZVxuICAgICAgY29uc3Qgc2NhbGUgPSBTQ0FMRV9GVU5DW2NvbG9yU2NhbGVdKClcbiAgICAgICAgLmRvbWFpbihBcnJheS5mcm9tKGNNYXAua2V5cygpKSlcbiAgICAgICAgLnJhbmdlKEFycmF5LmZyb20oY01hcC52YWx1ZXMoKSkpXG4gICAgICAgIC51bmtub3duKFVOS05PV05fQ09MT1IpO1xuICAgICAgcmV0dXJuIHNjYWxlO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmdldFZpc0NoYW5uZWxTY2FsZShjb2xvclNjYWxlLCBjb2xvckRvbWFpbiwgY29sb3JSYW5nZS5jb2xvcnMubWFwKGhleFRvUmdiKSk7XG4gIH1cblxuICBnZXRDdXN0b21NYXJrZXJzU2NhbGUocmFuZ2UpIHtcbiAgICBsZXQgdW5rbm93blZhbHVlID0gRkFMTEJBQ0tfSUNPTjtcbiAgICBpZiAoIXJhbmdlKSB7XG4gICAgICByZXR1cm4gKCkgPT4gdW5rbm93blZhbHVlO1xuICAgIH1cblxuICAgIGNvbnN0IG1hcHBpbmcgPSBuZXcgTWFwKCk7XG5cbiAgICBpZiAocmFuZ2Uub3RoZXJzTWFya2VyKSB7XG4gICAgICB1bmtub3duVmFsdWUgPSByYW5nZS5vdGhlcnNNYXJrZXI7XG4gICAgfVxuICAgIGZvciAoY29uc3Qge3ZhbHVlLCBtYXJrZXJVcmx9IG9mIHJhbmdlLm1hcmtlck1hcCkge1xuICAgICAgaWYgKG1hcmtlclVybCkge1xuICAgICAgICBtYXBwaW5nLnNldCh2YWx1ZSwgbWFya2VyVXJsKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBAdHMtaWdub3JlIGQzIHNjYWxlXG4gICAgY29uc3Qgc2NhbGUgPSBzY2FsZU9yZGluYWwoKVxuICAgICAgLmRvbWFpbihBcnJheS5mcm9tKG1hcHBpbmcua2V5cygpKSlcbiAgICAgIC5yYW5nZShBcnJheS5mcm9tKG1hcHBpbmcudmFsdWVzKCkpKVxuICAgICAgLnVua25vd24odW5rbm93blZhbHVlKTtcbiAgICByZXR1cm4gc2NhbGU7XG4gIH1cblxuICAvKipcbiAgICogTWFwcGluZyBmcm9tIHZpc3VhbCBjaGFubmVscyB0byBkZWNrLmdsIGFjY2Vzb3JzXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBwYXJhbSBQYXJhbWV0ZXJzXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IHBhcmFtLmRhdGFBY2Nlc3NvciBBY2Nlc3Mga2VwbGVyLmdsIGxheWVyIGRhdGEgZnJvbSBkZWNrLmdsIGxheWVyXG4gICAqIEBwYXJhbSB7aW1wb3J0KCd1dGlscy90YWJsZS11dGlscy9kYXRhLWNvbnRhaW5lci1pbnRlcmZhY2UnKS5EYXRhQ29udGFpbmVySW50ZXJmYWNlfSBwYXJhbS5kYXRhQ29udGFpbmVyIERhdGFDb250YWluZXIgdG8gdXNlIHVzZSB3aXRoIGRhdGFBY2Nlc3NvclxuICAgKiBAcmV0dXJuIHtPYmplY3R9IGF0dHJpYnV0ZUFjY2Vzc29ycyAtIGRlY2suZ2wgbGF5ZXIgYXR0cmlidXRlIGFjY2Vzc29yc1xuICAgKi9cbiAgZ2V0QXR0cmlidXRlQWNjZXNzb3JzKHtkYXRhQWNjZXNzb3IgPSBkZWZhdWx0RGF0YUFjY2Vzc29yLCBkYXRhQ29udGFpbmVyfSkge1xuICAgIGNvbnN0IGF0dHJpYnV0ZUFjY2Vzc29ycyA9IHt9O1xuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGNvbXBsZXhpdHlcbiAgICBPYmplY3Qua2V5cyh0aGlzLnZpc3VhbENoYW5uZWxzKS5mb3JFYWNoKGNoYW5uZWwgPT4ge1xuICAgICAgY29uc3Qge1xuICAgICAgICBmaWVsZCxcbiAgICAgICAgZml4ZWQsXG4gICAgICAgIHNjYWxlLFxuICAgICAgICBkb21haW4sXG4gICAgICAgIHJhbmdlLFxuICAgICAgICBhY2Nlc3NvcixcbiAgICAgICAgZGVmYXVsdFZhbHVlLFxuICAgICAgICBnZXRBdHRyaWJ1dGVWYWx1ZSxcbiAgICAgICAgbnVsbFZhbHVlLFxuICAgICAgICBjaGFubmVsU2NhbGVUeXBlLFxuICAgICAgICBhZ2dyZWdhdGlvblxuICAgICAgfSA9IHRoaXMudmlzdWFsQ2hhbm5lbHNbY2hhbm5lbF07XG5cbiAgICAgIGNvbnN0IHNob3VsZEdldFNjYWxlID0gQm9vbGVhbihcbiAgICAgICAgKHNjYWxlIHx8IGNoYW5uZWxTY2FsZVR5cGUgPT09IENIQU5ORUxfU0NBTEVTLmlkZW50aXR5KSAmJiB0aGlzLmNvbmZpZ1tmaWVsZF1cbiAgICAgICk7XG5cbiAgICAgIGlmIChzaG91bGRHZXRTY2FsZSkge1xuICAgICAgICBjb25zdCBhcmdzID0gW3RoaXMuY29uZmlnW3NjYWxlXSwgdGhpcy5jb25maWdbZG9tYWluXSwgdGhpcy5jb25maWcudmlzQ29uZmlnW3JhbmdlXV07XG4gICAgICAgIGNvbnN0IGlzRml4ZWQgPSBmaXhlZCAmJiB0aGlzLmNvbmZpZy52aXNDb25maWdbZml4ZWRdO1xuICAgICAgICAvLyBJdCdzIGltcG9ydGFudCB0byBkZWNsYXJlIGFzIGNvbnN0IGFsbCB0aGUgcGFyYW1ldGVycyB0aGF0IHdlIGFyZSBnb2luZyB0byBiZSB1c2UgaW4gdGhlIGdldEVuY29kZWRDaGFubmVsVmFsdWUgY2FsbFxuICAgICAgICAvLyBvdGhlcndpc2UsIHRoZSBvbGRMYXllckRhdGEgcGFyYW1ldGVyIGluIGZvcm1hdExheWVyRGF0YSBtZXRob2Qgd2lsbCBiZSB3cm9uZyAoeW91IGNhbiBjaGVjayB0aGUgZm9ybWF0TGF5ZXJEYXRhIFRpbGVMYXllciBtZXRob2QgaW4gQnVpbGRlciBhcyBleGFtcGxlKVxuICAgICAgICBjb25zdCBmaWVsZENvbmZpZyA9IHRoaXMuY29uZmlnW2ZpZWxkXTtcbiAgICAgICAgY29uc3QgYWdncmVnYXRpb25WYWx1ZSA9IHRoaXMuY29uZmlnLnZpc0NvbmZpZ1thZ2dyZWdhdGlvbl07XG5cbiAgICAgICAgY29uc3Qgc2NhbGVGdW5jdGlvbiA9XG4gICAgICAgICAgY2hhbm5lbFNjYWxlVHlwZSA9PT0gQ0hBTk5FTF9TQ0FMRVMuaWRlbnRpdHlcbiAgICAgICAgICAgID8gc2NhbGVJZGVudGl0eVxuICAgICAgICAgICAgOiBjaGFubmVsU2NhbGVUeXBlID09PSBDSEFOTkVMX1NDQUxFUy5jb2xvclxuICAgICAgICAgICAgPyB0aGlzLmdldENvbG9yU2NhbGUoLi4uYXJncylcbiAgICAgICAgICAgIDogY2hhbm5lbFNjYWxlVHlwZSA9PT0gQ0hBTk5FTF9TQ0FMRVMuY3VzdG9tTWFya2VyXG4gICAgICAgICAgICA/IHRoaXMuZ2V0Q3VzdG9tTWFya2Vyc1NjYWxlKHRoaXMuY29uZmlnLnZpc0NvbmZpZ1tyYW5nZV0pXG4gICAgICAgICAgICA6IHRoaXMuZ2V0VmlzQ2hhbm5lbFNjYWxlKC4uLmFyZ3MsIGlzRml4ZWQpO1xuXG4gICAgICAgIGF0dHJpYnV0ZUFjY2Vzc29yc1thY2Nlc3Nvcl0gPSBkID0+XG4gICAgICAgICAgdGhpcy5nZXRFbmNvZGVkQ2hhbm5lbFZhbHVlKFxuICAgICAgICAgICAgc2NhbGVGdW5jdGlvbixcbiAgICAgICAgICAgIGRhdGFBY2Nlc3NvcihkYXRhQ29udGFpbmVyKShkKSxcbiAgICAgICAgICAgIGZpZWxkQ29uZmlnLFxuICAgICAgICAgICAgYWdncmVnYXRpb25WYWx1ZSxcbiAgICAgICAgICAgIG51bGxWYWx1ZVxuICAgICAgICAgICk7XG4gICAgICB9IGVsc2UgaWYgKHR5cGVvZiBnZXRBdHRyaWJ1dGVWYWx1ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBhdHRyaWJ1dGVBY2Nlc3NvcnNbYWNjZXNzb3JdID0gZ2V0QXR0cmlidXRlVmFsdWUodGhpcy5jb25maWcpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYXR0cmlidXRlQWNjZXNzb3JzW2FjY2Vzc29yXSA9XG4gICAgICAgICAgdHlwZW9mIGRlZmF1bHRWYWx1ZSA9PT0gJ2Z1bmN0aW9uJyA/IGRlZmF1bHRWYWx1ZSh0aGlzLmNvbmZpZykgOiBkZWZhdWx0VmFsdWU7XG4gICAgICB9XG5cbiAgICAgIGlmICghKGFjY2Vzc29yIGluIGF0dHJpYnV0ZUFjY2Vzc29ycykpIHtcbiAgICAgICAgQ29uc29sZS53YXJuKGBGYWlsZWQgdG8gcHJvdmlkZSBhY2Nlc3NvciBmdW5jdGlvbiBmb3IgJHthY2Nlc3NvciB8fCBjaGFubmVsfWApO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGF0dHJpYnV0ZUFjY2Vzc29ycztcbiAgfVxuXG4gIGdldFZpc0NoYW5uZWxTY2FsZShzY2FsZSwgZG9tYWluLCByYW5nZSwgZml4ZWQpIHtcbiAgICBpZiAoc2NhbGUgPT09IFNDQUxFX1RZUEVTLm9yZGluYWwpIHtcbiAgICAgIC8vIEB0cy1pZ25vcmUgZDMtc2NhbGUgdHlwZVxuICAgICAgcmV0dXJuIFNDQUxFX0ZVTkNbc2NhbGVdKClcbiAgICAgICAgLmRvbWFpbihkb21haW4uc2xpY2UoMCwgcmFuZ2UubGVuZ3RoKSlcbiAgICAgICAgLnJhbmdlKHJhbmdlKVxuICAgICAgICAudW5rbm93bihVTktOT1dOX0NPTE9SKTtcbiAgICB9XG5cbiAgICAvLyBAdHMtaWdub3JlIGQzLXNjYWxlIHR5cGVcbiAgICByZXR1cm4gU0NBTEVfRlVOQ1tmaXhlZCA/ICdsaW5lYXInIDogc2NhbGVdKClcbiAgICAgIC5kb21haW4oZG9tYWluKVxuICAgICAgLnJhbmdlKGZpeGVkID8gZG9tYWluIDogcmFuZ2UpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBsb25naXR1ZGUgYW5kIGxhdGl0dWRlIGJvdW5kcyBvZiB0aGUgZGF0YS5cbiAgICogQHBhcmFtIHtpbXBvcnQoJ3V0aWxzL3RhYmxlLXV0aWxzL2RhdGEtY29udGFpbmVyLWludGVyZmFjZScpLkRhdGFDb250YWluZXJJbnRlcmZhY2V9IGRhdGFDb250YWluZXIgRGF0YUNvbnRhaW5lciB0byBjYWxjdWxhdGUgYm91bmRzIGZvci5cbiAgICogQHBhcmFtIHsoZDoge2luZGV4OiBudW1iZXJ9LCBkYzogaW1wb3J0KCd1dGlscy90YWJsZS11dGlscy9kYXRhLWNvbnRhaW5lci1pbnRlcmZhY2UnKS5EYXRhQ29udGFpbmVySW50ZXJmYWNlKSA9PiBudW1iZXJbXX0gZ2V0UG9zaXRpb24gQWNjZXNzIGtlcGxlci5nbCBsYXllciBkYXRhIGZyb20gZGVjay5nbCBsYXllclxuICAgKiBAcmV0dXJuIHtudW1iZXJbXXxudWxsfSBib3VuZHMgb2YgdGhlIGRhdGEuXG4gICAqL1xuICBnZXRQb2ludHNCb3VuZHMoZGF0YUNvbnRhaW5lciwgZ2V0UG9zaXRpb24pIHtcbiAgICAvLyBubyBuZWVkIHRvIGxvb3AgdGhyb3VnaCB0aGUgZW50aXJlIGRhdGFzZXRcbiAgICAvLyBnZXQgYSBzYW1wbGUgb2YgZGF0YSB0byBjYWxjdWxhdGUgYm91bmRzXG4gICAgY29uc3Qgc2FtcGxlRGF0YSA9XG4gICAgICBkYXRhQ29udGFpbmVyLm51bVJvd3MoKSA+IE1BWF9TQU1QTEVfU0laRVxuICAgICAgICA/IGdldFNhbXBsZURhdGEoZGF0YUNvbnRhaW5lciwgTUFYX1NBTVBMRV9TSVpFKVxuICAgICAgICA6IGRhdGFDb250YWluZXI7XG5cbiAgICBjb25zdCBwb2ludHMgPSBzYW1wbGVEYXRhLm1hcEluZGV4KGdldFBvc2l0aW9uKTtcblxuICAgIGNvbnN0IGxhdEJvdW5kcyA9IGdldExhdExuZ0JvdW5kcyhwb2ludHMsIDEsIFstOTAsIDkwXSk7XG4gICAgY29uc3QgbG5nQm91bmRzID0gZ2V0TGF0TG5nQm91bmRzKHBvaW50cywgMCwgWy0xODAsIDE4MF0pO1xuXG4gICAgaWYgKCFsYXRCb3VuZHMgfHwgIWxuZ0JvdW5kcykge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIFtsbmdCb3VuZHNbMF0sIGxhdEJvdW5kc1swXSwgbG5nQm91bmRzWzFdLCBsYXRCb3VuZHNbMV1dO1xuICB9XG5cbiAgZ2V0Q2hhbmdlZFRyaWdnZXJzKGRhdGFVcGRhdGVUcmlnZ2Vycykge1xuICAgIGNvbnN0IHRyaWdnZXJDaGFuZ2VkID0gZGlmZlVwZGF0ZVRyaWdnZXJzKGRhdGFVcGRhdGVUcmlnZ2VycywgdGhpcy5fb2xkRGF0YVVwZGF0ZVRyaWdnZXJzKTtcbiAgICB0aGlzLl9vbGREYXRhVXBkYXRlVHJpZ2dlcnMgPSBkYXRhVXBkYXRlVHJpZ2dlcnM7XG5cbiAgICByZXR1cm4gdHJpZ2dlckNoYW5nZWQ7XG4gIH1cblxuICBnZXRFbmNvZGVkQ2hhbm5lbFZhbHVlKFxuICAgIHNjYWxlLFxuICAgIGRhdGEsXG4gICAgZmllbGQsXG4gICAgLy8gSW4gYnVpbGRlciB3ZSBvdmVyd3JpdGUgdGhlIGdldFZhbHVlIGZ1bmN0aW9uIGFuZCB3ZSB1c2UgdGhlIF9hZ2dyZWdhdGlvbiBwYXJhbWV0ZXIgaW4gc3BhdGlhbCBpbmRleCBsYXllcnMgYXMgdGhlIFF1YWRrZXlMYXllci5cbiAgICBfYWdncmVnYXRpb24sXG4gICAgbnVsbFZhbHVlID0gTk9fVkFMVUVfQ09MT1IsXG4gICAgZ2V0VmFsdWUgPSBkZWZhdWx0R2V0RmllbGRWYWx1ZVxuICApIHtcbiAgICBjb25zdCB7dHlwZX0gPSBmaWVsZDtcbiAgICBjb25zdCB2YWx1ZSA9IGdldFZhbHVlKGZpZWxkLCBkYXRhKTtcblxuICAgIGlmICghbm90TnVsbG9yVW5kZWZpbmVkKHZhbHVlKSkge1xuICAgICAgcmV0dXJuIG51bGxWYWx1ZTtcbiAgICB9XG5cbiAgICBsZXQgYXR0cmlidXRlVmFsdWU7XG4gICAgaWYgKHR5cGUgPT09IEFMTF9GSUVMRF9UWVBFUy50aW1lc3RhbXApIHtcbiAgICAgIC8vIHNob3VsZG4ndCBuZWVkIHRvIGNvbnZlcnQgaGVyZVxuICAgICAgLy8gc2NhbGUgRnVuY3Rpb24gc2hvdWxkIHRha2UgY2FyZSBvZiBpdFxuICAgICAgYXR0cmlidXRlVmFsdWUgPSBzY2FsZShuZXcgRGF0ZSh2YWx1ZSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBhdHRyaWJ1dGVWYWx1ZSA9IHNjYWxlKHZhbHVlKTtcbiAgICB9XG5cbiAgICBpZiAoIW5vdE51bGxvclVuZGVmaW5lZChhdHRyaWJ1dGVWYWx1ZSkpIHtcbiAgICAgIGF0dHJpYnV0ZVZhbHVlID0gbnVsbFZhbHVlO1xuICAgIH1cblxuICAgIHJldHVybiBhdHRyaWJ1dGVWYWx1ZTtcbiAgfVxuXG4gIHVwZGF0ZU1ldGEobWV0YSkge1xuICAgIHRoaXMubWV0YSA9IHsuLi50aGlzLm1ldGEsIC4uLm1ldGF9O1xuICB9XG5cbiAgZ2V0RGF0YVVwZGF0ZVRyaWdnZXJzKHtmaWx0ZXJlZEluZGV4LCBpZCwgYWxsRGF0YX0pIHtcbiAgICBjb25zdCB7Y29sdW1uc30gPSB0aGlzLmNvbmZpZztcblxuICAgIHJldHVybiB7XG4gICAgICBnZXREYXRhOiB7ZGF0YXNldElkOiBpZCwgYWxsRGF0YSwgY29sdW1ucywgZmlsdGVyZWRJbmRleH0sXG4gICAgICBnZXRNZXRhOiB7ZGF0YXNldElkOiBpZCwgYWxsRGF0YSwgY29sdW1uc30sXG4gICAgICAuLi4odGhpcy5jb25maWcudGV4dExhYmVsIHx8IFtdKS5yZWR1Y2UoXG4gICAgICAgIChhY2N1LCB0bCwgaSkgPT4gKHtcbiAgICAgICAgICAuLi5hY2N1LFxuICAgICAgICAgIFtgZ2V0TGFiZWxDaGFyYWN0ZXJTZXQtJHtpfWBdOiB0bC5maWVsZCA/IHRsLmZpZWxkLm5hbWUgOiBudWxsXG4gICAgICAgIH0pLFxuICAgICAgICB7fVxuICAgICAgKVxuICAgIH07XG4gIH1cblxuICB1cGRhdGVEYXRhKGRhdGFzZXRzLCBvbGRMYXllckRhdGEpIHtcbiAgICBpZiAoIXRoaXMuY29uZmlnLmRhdGFJZCkge1xuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cbiAgICBjb25zdCBsYXllckRhdGFzZXQgPSBkYXRhc2V0c1t0aGlzLmNvbmZpZy5kYXRhSWRdO1xuICAgIGNvbnN0IHtkYXRhQ29udGFpbmVyfSA9IGxheWVyRGF0YXNldDtcblxuICAgIHRoaXMudXBkYXRlVmlzdWFsQ2hhbm5lbEZpZWxkcyhsYXllckRhdGFzZXQpO1xuXG4gICAgY29uc3QgZ2V0UG9zaXRpb24gPSB0aGlzLmdldFBvc2l0aW9uQWNjZXNzb3IoZGF0YUNvbnRhaW5lcik7XG4gICAgY29uc3QgZGF0YVVwZGF0ZVRyaWdnZXJzID0gdGhpcy5nZXREYXRhVXBkYXRlVHJpZ2dlcnMobGF5ZXJEYXRhc2V0KTtcbiAgICBjb25zdCB0cmlnZ2VyQ2hhbmdlZCA9IHRoaXMuZ2V0Q2hhbmdlZFRyaWdnZXJzKGRhdGFVcGRhdGVUcmlnZ2Vycyk7XG5cbiAgICBpZiAodHJpZ2dlckNoYW5nZWQuZ2V0TWV0YSkge1xuICAgICAgdGhpcy51cGRhdGVMYXllck1ldGEoZGF0YUNvbnRhaW5lciwgZ2V0UG9zaXRpb24pO1xuICAgIH1cblxuICAgIGxldCBkYXRhID0gW107XG5cbiAgICBpZiAoIXRyaWdnZXJDaGFuZ2VkLmdldERhdGEgJiYgb2xkTGF5ZXJEYXRhICYmIG9sZExheWVyRGF0YS5kYXRhKSB7XG4gICAgICAvLyBzYW1lIGRhdGFcbiAgICAgIGRhdGEgPSBvbGRMYXllckRhdGEuZGF0YTtcbiAgICB9IGVsc2Uge1xuICAgICAgZGF0YSA9IHRoaXMuY2FsY3VsYXRlRGF0YUF0dHJpYnV0ZShsYXllckRhdGFzZXQsIGdldFBvc2l0aW9uKTtcbiAgICB9XG5cbiAgICByZXR1cm4ge2RhdGEsIHRyaWdnZXJDaGFuZ2VkfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGUgc3R5bGVkIGZpZWxkcyB0byBtYXRjaCBvbmVzIGZyb20gbmV3IGRhdGFzZXQuXG4gICAqXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBkYXRhc2V0XG4gICAqL1xuICB1cGRhdGVWaXN1YWxDaGFubmVsRmllbGRzKGRhdGFzZXQpIHtcbiAgICBmb3IgKGNvbnN0IHtmaWVsZH0gb2YgT2JqZWN0LnZhbHVlcyh0aGlzLnZpc3VhbENoYW5uZWxzKSkge1xuICAgICAgY29uc3Qgb2xkRmllbGQgPSB0aGlzLmNvbmZpZ1tmaWVsZF07XG4gICAgICBpZiAoIW9sZEZpZWxkKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGNvbnN0IG5ld0RhdGFTZXRGaWVsZCA9IGRhdGFzZXQuZmllbGRzLmZpbmQoZmQgPT4gZmQubmFtZSA9PT0gb2xkRmllbGQubmFtZSkgfHwgbnVsbDtcbiAgICAgIHRoaXMudXBkYXRlTGF5ZXJDb25maWcoe1tmaWVsZF06IG5ld0RhdGFTZXRGaWVsZH0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBoZWxwZXIgZnVuY3Rpb24gdG8gdXBkYXRlIG9uZSBsYXllciBkb21haW4gd2hlbiBzdGF0ZS5kYXRhIGNoYW5nZWRcbiAgICogaWYgc3RhdGUuZGF0YSBjaGFuZ2UgaXMgZHVlIG90IHVwZGF0ZSBmaWx0ZXIsIG5ld0ZpbGVyIHdpbGwgYmUgcGFzc2VkXG4gICAqIGNhbGxlZCBieSB1cGRhdGVBbGxMYXllckRvbWFpbkRhdGFcbiAgICogQHBhcmFtIHtPYmplY3R9IGRhdGFzZXRzXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBuZXdGaWx0ZXJcbiAgICogQHJldHVybnMge29iamVjdH0gbGF5ZXJcbiAgICovXG4gIHVwZGF0ZUxheWVyRG9tYWluKGRhdGFzZXRzLCBuZXdGaWx0ZXIpIHtcbiAgICBjb25zdCB0YWJsZSA9IHRoaXMuZ2V0RGF0YXNldChkYXRhc2V0cyk7XG4gICAgaWYgKCF0YWJsZSkge1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICAgIE9iamVjdC52YWx1ZXModGhpcy52aXN1YWxDaGFubmVscykuZm9yRWFjaChjaGFubmVsID0+IHtcbiAgICAgIGNvbnN0IHtzY2FsZX0gPSBjaGFubmVsO1xuICAgICAgY29uc3Qgc2NhbGVUeXBlID0gdGhpcy5jb25maWdbc2NhbGVdO1xuICAgICAgLy8gb3JkaW5hbCBkb21haW4gaXMgYmFzZWQgb24gZGF0YUNvbnRhaW5lciwgaWYgb25seSBmaWx0ZXIgY2hhbmdlZFxuICAgICAgLy8gbm8gbmVlZCB0byB1cGRhdGUgb3JkaW5hbCBkb21haW5cbiAgICAgIGlmICghbmV3RmlsdGVyIHx8IHNjYWxlVHlwZSAhPT0gU0NBTEVfVFlQRVMub3JkaW5hbCkge1xuICAgICAgICBjb25zdCB7ZG9tYWlufSA9IGNoYW5uZWw7XG4gICAgICAgIGNvbnN0IHVwZGF0ZWREb21haW4gPSB0aGlzLmNhbGN1bGF0ZUxheWVyRG9tYWluKHRhYmxlLCBjaGFubmVsKTtcbiAgICAgICAgdGhpcy51cGRhdGVMYXllckNvbmZpZyh7W2RvbWFpbl06IHVwZGF0ZWREb21haW59KTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgZ2V0RGF0YXNldChkYXRhc2V0cykge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZy5kYXRhSWQgPyBkYXRhc2V0c1t0aGlzLmNvbmZpZy5kYXRhSWRdIDogbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZSB2aXN1YWwgY2hhbm5lbCBmaWVsZCBhbmQgc2NhbGVzIGJhc2VkIG9uIHN1cHBvcnRlZCBmaWVsZCAmIHNjYWxlIHR5cGVcbiAgICogQHBhcmFtIGNoYW5uZWxcbiAgICovXG4gIHZhbGlkYXRlVmlzdWFsQ2hhbm5lbChjaGFubmVsKSB7XG4gICAgdGhpcy52YWxpZGF0ZUZpZWxkVHlwZShjaGFubmVsKTtcbiAgICB0aGlzLnZhbGlkYXRlU2NhbGUoY2hhbm5lbCk7XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGUgZmllbGQgdHlwZSBiYXNlZCBvbiBjaGFubmVsU2NhbGVUeXBlXG4gICAqL1xuICB2YWxpZGF0ZUZpZWxkVHlwZShjaGFubmVsKSB7XG4gICAgY29uc3QgdmlzdWFsQ2hhbm5lbCA9IHRoaXMudmlzdWFsQ2hhbm5lbHNbY2hhbm5lbF07XG4gICAgY29uc3Qge2ZpZWxkLCBjaGFubmVsU2NhbGVUeXBlLCBzdXBwb3J0ZWRGaWVsZFR5cGVzfSA9IHZpc3VhbENoYW5uZWw7XG5cbiAgICBpZiAodGhpcy5jb25maWdbZmllbGRdKSB7XG4gICAgICAvLyBpZiBmaWVsZCBpcyBzZWxlY3RlZCwgY2hlY2sgaWYgZmllbGQgdHlwZSBpcyBzdXBwb3J0ZWRcbiAgICAgIGNvbnN0IGNoYW5uZWxTdXBwb3J0ZWRGaWVsZFR5cGVzID1cbiAgICAgICAgc3VwcG9ydGVkRmllbGRUeXBlcyB8fCBDSEFOTkVMX1NDQUxFX1NVUFBPUlRFRF9GSUVMRFNbY2hhbm5lbFNjYWxlVHlwZV07XG5cbiAgICAgIGlmICghY2hhbm5lbFN1cHBvcnRlZEZpZWxkVHlwZXMuaW5jbHVkZXModGhpcy5jb25maWdbZmllbGRdLnR5cGUpKSB7XG4gICAgICAgIC8vIGZpZWxkIHR5cGUgaXMgbm90IHN1cHBvcnRlZCwgc2V0IGl0IGJhY2sgdG8gbnVsbFxuICAgICAgICAvLyBzZXQgc2NhbGUgYmFjayB0byBkZWZhdWx0XG4gICAgICAgIHRoaXMudXBkYXRlTGF5ZXJDb25maWcoe1tmaWVsZF06IG51bGx9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGUgc2NhbGUgdHlwZSBiYXNlZCBvbiBhZ2dyZWdhdGlvblxuICAgKi9cbiAgdmFsaWRhdGVTY2FsZShjaGFubmVsKSB7XG4gICAgY29uc3QgdmlzdWFsQ2hhbm5lbCA9IHRoaXMudmlzdWFsQ2hhbm5lbHNbY2hhbm5lbF07XG4gICAgY29uc3Qge3NjYWxlfSA9IHZpc3VhbENoYW5uZWw7XG4gICAgaWYgKCFzY2FsZSkge1xuICAgICAgLy8gdmlzdWFsQ2hhbm5lbCBkb2Vzbid0IGhhdmUgc2NhbGVcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3Qgc2NhbGVPcHRpb25zID0gdGhpcy5nZXRTY2FsZU9wdGlvbnMoY2hhbm5lbCk7XG4gICAgLy8gY2hlY2sgaWYgY3VycmVudCBzZWxlY3RlZCBzY2FsZSBpc1xuICAgIC8vIHN1cHBvcnRlZCwgaWYgbm90LCBjaGFuZ2UgdG8gZGVmYXVsdFxuICAgIGlmICghc2NhbGVPcHRpb25zLmluY2x1ZGVzKHRoaXMuY29uZmlnW3NjYWxlXSkpIHtcbiAgICAgIHRoaXMudXBkYXRlTGF5ZXJDb25maWcoe1tzY2FsZV06IHNjYWxlT3B0aW9uc1swXX0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgc2NhbGUgb3B0aW9ucyBiYXNlZCBvbiBjdXJyZW50IGZpZWxkXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBjaGFubmVsXG4gICAqIEByZXR1cm5zIHtzdHJpbmdbXX1cbiAgICovXG4gIGdldFNjYWxlT3B0aW9ucyhjaGFubmVsKSB7XG4gICAgY29uc3QgdmlzdWFsQ2hhbm5lbCA9IHRoaXMudmlzdWFsQ2hhbm5lbHNbY2hhbm5lbF07XG4gICAgY29uc3Qge2ZpZWxkLCBzY2FsZSwgY2hhbm5lbFNjYWxlVHlwZX0gPSB2aXN1YWxDaGFubmVsO1xuXG4gICAgcmV0dXJuIHRoaXMuY29uZmlnW2ZpZWxkXVxuICAgICAgPyBGSUVMRF9PUFRTW3RoaXMuY29uZmlnW2ZpZWxkXS50eXBlXS5zY2FsZVtjaGFubmVsU2NhbGVUeXBlXVxuICAgICAgOiBbdGhpcy5nZXREZWZhdWx0TGF5ZXJDb25maWcoKVtzY2FsZV1dO1xuICB9XG5cbiAgdXBkYXRlTGF5ZXJWaXN1YWxDaGFubmVsKGRhdGFzZXQsIGNoYW5uZWwpIHtcbiAgICBjb25zdCB2aXN1YWxDaGFubmVsID0gdGhpcy52aXN1YWxDaGFubmVsc1tjaGFubmVsXTtcbiAgICB0aGlzLnZhbGlkYXRlVmlzdWFsQ2hhbm5lbChjaGFubmVsKTtcbiAgICAvLyBjYWxjdWxhdGUgbGF5ZXIgY2hhbm5lbCBkb21haW5cbiAgICBjb25zdCB1cGRhdGVkRG9tYWluID0gdGhpcy5jYWxjdWxhdGVMYXllckRvbWFpbihkYXRhc2V0LCB2aXN1YWxDaGFubmVsKTtcbiAgICB0aGlzLnVwZGF0ZUxheWVyQ29uZmlnKHtbdmlzdWFsQ2hhbm5lbC5kb21haW5dOiB1cGRhdGVkRG9tYWlufSk7XG4gIH1cblxuICBnZXRWaXN1YWxDaGFubmVsVXBkYXRlVHJpZ2dlcnMoKSB7XG4gICAgY29uc3QgdXBkYXRlVHJpZ2dlcnMgPSB7fTtcbiAgICBPYmplY3QudmFsdWVzKHRoaXMudmlzdWFsQ2hhbm5lbHMpLmZvckVhY2godmlzdWFsQ2hhbm5lbCA9PiB7XG4gICAgICAvLyBmaWVsZCByYW5nZSBzY2FsZSBkb21haW5cbiAgICAgIGNvbnN0IHthY2Nlc3NvciwgZmllbGQsIHNjYWxlLCBkb21haW4sIHJhbmdlLCBkZWZhdWx0VmFsdWUsIGZpeGVkfSA9IHZpc3VhbENoYW5uZWw7XG5cbiAgICAgIHVwZGF0ZVRyaWdnZXJzW2FjY2Vzc29yXSA9IHtcbiAgICAgICAgW2ZpZWxkXTogdGhpcy5jb25maWdbZmllbGRdLFxuICAgICAgICBbc2NhbGVdOiB0aGlzLmNvbmZpZ1tzY2FsZV0sXG4gICAgICAgIFtkb21haW5dOiB0aGlzLmNvbmZpZ1tkb21haW5dLFxuICAgICAgICBbcmFuZ2VdOiB0aGlzLmNvbmZpZy52aXNDb25maWdbcmFuZ2VdLFxuICAgICAgICBkZWZhdWx0VmFsdWU6IHR5cGVvZiBkZWZhdWx0VmFsdWUgPT09ICdmdW5jdGlvbicgPyBkZWZhdWx0VmFsdWUodGhpcy5jb25maWcpIDogZGVmYXVsdFZhbHVlLFxuICAgICAgICAuLi4oZml4ZWQgPyB7W2ZpeGVkXTogdGhpcy5jb25maWcudmlzQ29uZmlnW2ZpeGVkXX0gOiB7fSlcbiAgICAgIH07XG4gICAgfSk7XG4gICAgcmV0dXJuIHVwZGF0ZVRyaWdnZXJzO1xuICB9XG5cbiAgY2FsY3VsYXRlTGF5ZXJEb21haW4oZGF0YXNldCwgdmlzdWFsQ2hhbm5lbCkge1xuICAgIGNvbnN0IHtzY2FsZX0gPSB2aXN1YWxDaGFubmVsO1xuICAgIGNvbnN0IGZpZWxkID0gdGhpcy5jb25maWdbdmlzdWFsQ2hhbm5lbC5maWVsZF07XG4gICAgaWYgKCFmaWVsZCB8fCAhc2NhbGUpIHtcbiAgICAgIC8vIGlmIGNvbG9yRmllbGQgb3Igc2l6ZUZpZWxkIHdlcmUgc2V0IGJhY2sgdG8gbnVsbFxuICAgICAgcmV0dXJuIGRlZmF1bHREb21haW47XG4gICAgfVxuXG4gICAgY29uc3Qgc2NhbGVUeXBlID0gdGhpcy5jb25maWdbc2NhbGVdO1xuICAgIGNvbnN0IGRhdGFTZXRGaWVsZCA9IGRhdGFzZXQuZmllbGRzLmZpbmQoZiA9PiBmLm5hbWUgPT09IGZpZWxkLm5hbWUpO1xuICAgIGlmICghc2NhbGVUeXBlIHx8ICFkYXRhU2V0RmllbGQpIHtcbiAgICAgIC8vIGlmIG5ldyBkYXRhc2V0IGRvZXNuJ3QgY29udGFpbiBwcmV2aW91c2x5IHNldCBmaWVsZFxuICAgICAgcmV0dXJuIGRlZmF1bHREb21haW47XG4gICAgfVxuXG4gICAgcmV0dXJuIGRhdGFzZXQuZ2V0Q29sdW1uTGF5ZXJEb21haW4oZGF0YVNldEZpZWxkLCBzY2FsZVR5cGUpIHx8IGRlZmF1bHREb21haW47XG4gIH1cblxuICBoYXNIb3ZlcmVkT2JqZWN0KG9iamVjdEluZm8pIHtcbiAgICByZXR1cm4gdGhpcy5pc0xheWVySG92ZXJlZChvYmplY3RJbmZvKSAmJiBvYmplY3RJbmZvLm9iamVjdCA/IG9iamVjdEluZm8ub2JqZWN0IDogbnVsbDtcbiAgfVxuXG4gIGlzTGF5ZXJIb3ZlcmVkKG9iamVjdEluZm8pIHtcbiAgICByZXR1cm4gb2JqZWN0SW5mbz8ucGlja2VkICYmIG9iamVjdEluZm8/LmxheWVyPy5wcm9wcz8uaWQgPT09IHRoaXMuaWQ7XG4gIH1cblxuICBnZXRSYWRpdXNTY2FsZUJ5Wm9vbShtYXBTdGF0ZSwgZml4ZWRSYWRpdXMpIHtcbiAgICBjb25zdCByYWRpdXNDaGFubmVsID0gT2JqZWN0LnZhbHVlcyh0aGlzLnZpc3VhbENoYW5uZWxzKS5maW5kKHZjID0+IHZjLnByb3BlcnR5ID09PSAncmFkaXVzJyk7XG5cbiAgICBpZiAoIXJhZGl1c0NoYW5uZWwpIHtcbiAgICAgIHJldHVybiAxO1xuICAgIH1cblxuICAgIGNvbnN0IGZpZWxkID0gcmFkaXVzQ2hhbm5lbC5maWVsZDtcbiAgICBjb25zdCBmaXhlZCA9IGZpeGVkUmFkaXVzID09PSB1bmRlZmluZWQgPyB0aGlzLmNvbmZpZy52aXNDb25maWcuZml4ZWRSYWRpdXMgOiBmaXhlZFJhZGl1cztcbiAgICBjb25zdCB7cmFkaXVzfSA9IHRoaXMuY29uZmlnLnZpc0NvbmZpZztcblxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICByZXR1cm4gZml4ZWQgPyAxIDogKHRoaXMuY29uZmlnW2ZpZWxkXSA/IDEgOiByYWRpdXMpICogdGhpcy5nZXRab29tRmFjdG9yKG1hcFN0YXRlKTtcbiAgfVxuXG4gIGdldFJhZGl1c1NjYWxlKGZpeGVkUmFkaXVzKSB7XG4gICAgY29uc3QgcmFkaXVzQ2hhbm5lbCA9IE9iamVjdC52YWx1ZXModGhpcy52aXN1YWxDaGFubmVscykuZmluZCh2YyA9PiB2Yy5wcm9wZXJ0eSA9PT0gJ3JhZGl1cycpO1xuXG4gICAgaWYgKCFyYWRpdXNDaGFubmVsKSB7XG4gICAgICByZXR1cm4gMTtcbiAgICB9XG5cbiAgICBjb25zdCBmaWVsZCA9IHJhZGl1c0NoYW5uZWwuZmllbGQ7XG4gICAgY29uc3QgZml4ZWQgPSBmaXhlZFJhZGl1cyA9PT0gdW5kZWZpbmVkID8gdGhpcy5jb25maWcudmlzQ29uZmlnLmZpeGVkUmFkaXVzIDogZml4ZWRSYWRpdXM7XG4gICAgY29uc3Qge3JhZGl1c30gPSB0aGlzLmNvbmZpZy52aXNDb25maWc7XG5cbiAgICByZXR1cm4gZml4ZWQgPyAxIDogKHRoaXMuY29uZmlnW2ZpZWxkXSA/IDEgOiByYWRpdXMpO1xuICB9XG5cbiAgZ2V0TWF4TWFya2VyU2l6ZSgpIHtcbiAgICBjb25zdCB7cmFkaXVzRmllbGQsIHZpc0NvbmZpZ30gPSB0aGlzLmNvbmZpZztcbiAgICBjb25zdCB7cmFkaXVzUmFuZ2UsIHJhZGl1c30gPSB2aXNDb25maWc7XG4gICAgcmV0dXJuIE1hdGguY2VpbCgocmFkaXVzRmllbGQgJiYgcmFkaXVzUmFuZ2UgPyByYWRpdXNSYW5nZVsxXSA6IHJhZGl1cykpO1xuICB9XG5cbiAgZ2V0UmFkaXVzVW5pdChmaXhlZFJhZGl1cykge1xuICAgIGNvbnN0IHJhZGl1c0NoYW5uZWwgPSBPYmplY3QudmFsdWVzKHRoaXMudmlzdWFsQ2hhbm5lbHMpLmZpbmQodmMgPT4gdmMucHJvcGVydHkgPT09ICdyYWRpdXMnKTtcblxuICAgIGlmICghcmFkaXVzQ2hhbm5lbCkge1xuICAgICAgcmV0dXJuICdwaXhlbHMnO1xuICAgIH1cblxuICAgIGNvbnN0IGZpeGVkID0gZml4ZWRSYWRpdXMgPT09IHVuZGVmaW5lZCA/IHRoaXMuY29uZmlnLnZpc0NvbmZpZy5maXhlZFJhZGl1cyA6IGZpeGVkUmFkaXVzO1xuXG4gICAgcmV0dXJuIGZpeGVkID8gJ21ldGVycycgOiAncGl4ZWxzJztcbiAgfVxuXG4gIHNob3VsZENhbGN1bGF0ZUxheWVyRGF0YShwcm9wcykge1xuICAgIHJldHVybiBwcm9wcy5zb21lKHAgPT4gIXRoaXMubm9uZUxheWVyRGF0YUFmZmVjdGluZ1Byb3BzLmluY2x1ZGVzKHApKTtcbiAgfVxuXG4gIGdldEJydXNoaW5nRXh0ZW5zaW9uUHJvcHMoaW50ZXJhY3Rpb25Db25maWcsIGJydXNoaW5nVGFyZ2V0KSB7XG4gICAgY29uc3Qge2JydXNofSA9IGludGVyYWN0aW9uQ29uZmlnO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIC8vIGJydXNoaW5nXG4gICAgICBhdXRvSGlnaGxpZ2h0OiAhYnJ1c2guZW5hYmxlZCxcbiAgICAgIGJydXNoaW5nUmFkaXVzOiBicnVzaC5jb25maWcuc2l6ZSAqIDEwMDAsXG4gICAgICBicnVzaGluZ1RhcmdldDogYnJ1c2hpbmdUYXJnZXQgfHwgJ3NvdXJjZScsXG4gICAgICBicnVzaGluZ0VuYWJsZWQ6IGJydXNoLmVuYWJsZWRcbiAgICB9O1xuICB9XG5cbiAgZ2V0RGVmYXVsdERlY2tMYXllclByb3BzKHtpZHgsIGdwdUZpbHRlciwgbWFwU3RhdGUsIHZpc2libGUsIG1hc2tQb2x5Z29ufSkge1xuICAgIGNvbnN0IG1hc2tFeHRlbnNpb25Qcm9wcyA9IGdldE1hc2tFeHRlbnNpb25Qcm9wcyhtYXNrUG9seWdvbik7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLm1hc2tFeHRlbnNpb25Qcm9wcyxcbiAgICAgIGlkOiB0aGlzLmlkLFxuICAgICAgaWR4LFxuICAgICAgY29vcmRpbmF0ZVN5c3RlbTogQ09PUkRJTkFURV9TWVNURU0uTE5HTEFULFxuICAgICAgcGlja2FibGU6IHRydWUsXG4gICAgICB3cmFwTG9uZ2l0dWRlOiB0cnVlLFxuICAgICAgcGFyYW1ldGVyczoge2RlcHRoVGVzdDogQm9vbGVhbihtYXBTdGF0ZS5kcmFnUm90YXRlIHx8IHRoaXMuY29uZmlnLnZpc0NvbmZpZy5lbmFibGUzZCl9LFxuICAgICAgaGlkZGVuOiB0aGlzLmNvbmZpZy5oaWRkZW4sXG4gICAgICB2aXNpYmlsaXR5Qnlab29tOiB7XG4gICAgICAgIG1pbjogdGhpcy5jb25maWcudmlzaWJpbGl0eUJ5Wm9vbS5taW4sXG4gICAgICAgIG1heDogdGhpcy5jb25maWcudmlzaWJpbGl0eUJ5Wm9vbS5tYXhcbiAgICAgIH0sXG4gICAgICAvLyB2aXNjb25maWdcbiAgICAgIG9wYWNpdHk6IHRoaXMuY29uZmlnLnZpc0NvbmZpZy5vcGFjaXR5LFxuICAgICAgaGlnaGxpZ2h0Q29sb3I6IHRoaXMuY29uZmlnLmhpZ2hsaWdodENvbG9yLFxuICAgICAgLy8gZGF0YSBmaWx0ZXJpbmdcbiAgICAgIGV4dGVuc2lvbnM6IFtkYXRhRmlsdGVyRXh0ZW5zaW9uLCAuLi5tYXNrRXh0ZW5zaW9uUHJvcHMuZXh0ZW5zaW9uc10sXG4gICAgICBmaWx0ZXJSYW5nZTogZ3B1RmlsdGVyID8gZ3B1RmlsdGVyLmZpbHRlclJhbmdlIDogdW5kZWZpbmVkLFxuICAgICAgLy8gbGF5ZXIgc2hvdWxkIGJlIHZpc2libGUgYW5kIGlmIHNwbGl0TWFwLCBzaG93biBpbiB0byBvbmUgb2YgcGFuZWxcbiAgICAgIHZpc2libGU6IHRoaXMuY29uZmlnLmlzVmlzaWJsZSAmJiB2aXNpYmxlXG4gICAgfTtcbiAgfVxuXG4gIGdldERlZmF1bHRIb3ZlckxheWVyUHJvcHMoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGlkOiBgJHt0aGlzLmlkfS1ob3ZlcmVkYCxcbiAgICAgIHBpY2thYmxlOiBmYWxzZSxcbiAgICAgIHdyYXBMb25naXR1ZGU6IHRydWUsXG4gICAgICBjb29yZGluYXRlU3lzdGVtOiBDT09SRElOQVRFX1NZU1RFTS5MTkdMQVRcbiAgICB9O1xuICB9XG5cbiAgcmVuZGVyVGV4dExhYmVsTGF5ZXIoe2dldFBvc2l0aW9uLCBnZXRQaXhlbE9mZnNldCwgdXBkYXRlVHJpZ2dlcnMsIHNoYXJlZFByb3BzfSwgcmVuZGVyT3B0cykge1xuICAgIGNvbnN0IHtkYXRhLCBtYXBTdGF0ZX0gPSByZW5kZXJPcHRzO1xuICAgIGNvbnN0IHt0ZXh0TGFiZWx9ID0gdGhpcy5jb25maWc7XG5cbiAgICByZXR1cm4gZGF0YS50ZXh0TGFiZWxzLnJlZHVjZSgoYWNjdSwgZCwgaSkgPT4ge1xuICAgICAgaWYgKGQuZ2V0VGV4dCkge1xuICAgICAgICBhY2N1LnB1c2goXG4gICAgICAgICAgbmV3IFRleHRMYXllcih7XG4gICAgICAgICAgICAuLi5zaGFyZWRQcm9wcyxcbiAgICAgICAgICAgIGlkOiBgJHt0aGlzLmlkfS1sYWJlbC0ke3RleHRMYWJlbFtpXS5maWVsZD8ubmFtZX1gLFxuICAgICAgICAgICAgZGF0YTogZGF0YS5kYXRhLFxuICAgICAgICAgICAgZ2V0VGV4dDogZC5nZXRUZXh0LFxuICAgICAgICAgICAgZ2V0UG9zaXRpb24sXG4gICAgICAgICAgICBjaGFyYWN0ZXJTZXQ6IGQuY2hhcmFjdGVyU2V0LFxuICAgICAgICAgICAgZ2V0UGl4ZWxPZmZzZXQ6IGdldFBpeGVsT2Zmc2V0KHRleHRMYWJlbFtpXSksXG4gICAgICAgICAgICBnZXRTaXplOiAxLFxuICAgICAgICAgICAgc2l6ZVNjYWxlOiB0ZXh0TGFiZWxbaV0uc2l6ZSxcbiAgICAgICAgICAgIGdldFRleHRBbmNob3I6IHRleHRMYWJlbFtpXS5hbmNob3IsXG4gICAgICAgICAgICBnZXRBbGlnbm1lbnRCYXNlbGluZTogdGV4dExhYmVsW2ldLmFsaWdubWVudCxcbiAgICAgICAgICAgIGdldENvbG9yOiB0ZXh0TGFiZWxbaV0uY29sb3IsXG4gICAgICAgICAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICAgICAgICAgIC8vIHRleHQgd2lsbCBhbHdheXMgc2hvdyBvbiB0b3Agb2YgYWxsIGxheWVyc1xuICAgICAgICAgICAgICBkZXB0aFRlc3Q6IGZhbHNlXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBnZXRGaWx0ZXJWYWx1ZTogZGF0YS5nZXRGaWx0ZXJWYWx1ZSxcbiAgICAgICAgICAgIHVwZGF0ZVRyaWdnZXJzOiB7XG4gICAgICAgICAgICAgIC4uLnVwZGF0ZVRyaWdnZXJzLFxuICAgICAgICAgICAgICBnZXRUZXh0OiB0ZXh0TGFiZWxbaV0uZmllbGQ/Lm5hbWUsXG4gICAgICAgICAgICAgIGdldFBpeGVsT2Zmc2V0OiB7XG4gICAgICAgICAgICAgICAgLi4udXBkYXRlVHJpZ2dlcnMuZ2V0UmFkaXVzLFxuICAgICAgICAgICAgICAgIG1hcFN0YXRlLFxuICAgICAgICAgICAgICAgIGFuY2hvcjogdGV4dExhYmVsW2ldLmFuY2hvcixcbiAgICAgICAgICAgICAgICBhbGlnbm1lbnQ6IHRleHRMYWJlbFtpXS5hbGlnbm1lbnRcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgZ2V0VGV4dEFuY2hvcjogdGV4dExhYmVsW2ldLmFuY2hvcixcbiAgICAgICAgICAgICAgZ2V0QWxpZ25tZW50QmFzZWxpbmU6IHRleHRMYWJlbFtpXS5hbGlnbm1lbnQsXG4gICAgICAgICAgICAgIGdldENvbG9yOiB0ZXh0TGFiZWxbaV0uY29sb3JcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGFjY3U7XG4gICAgfSwgW10pO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBkZWNrLmdsIGBJY29uTGF5ZXJgIFwiYXV0b1BhY2tcIiBtb2RlIGFjY2Vzc29yIGZvciBjdXN0b20gbWFya2Vycy5cbiAgICpcbiAgICogQHBhcmFtIHsqfSBjdXN0b21NYXJrZXJzU3RhdHVzIFJlY29yZDx1cmwsIFVybFN0YXR1cz4gcHJvdmlkZWQgYnkgYnVpbGRlciwgVXJsU3RhdHVzIGBva2AgbWVhbnMgVVJMIGlzIG9rIGFuZCByZWFkeSB0byByZW5kZXJcbiAgICogQHBhcmFtIHsqfSBpY29uVXJsQWNjZXNzb3IgZGVjay5nbCBhY2Nlc3NvciAob3IgdmFsdWUpIHRoYXQgcmVzb2x2ZXMgdG8gVVJMIG9mIGljb24gZm9yIGdpdmVuIHJvd1xuICAgKiBAcmV0dXJucyBkZWNrLmdsIGFjY2Vzc29yIHRoYXQgcmV0dXJucyBVbnBhY2tlZEljb24gcmVhZHkgdG8gY29uc3VtZSBieSBJY29uTGF5ZXJcbiAgICovXG4gIGdldEN1c3RvbU1hcmtlckljb25BY2Nlc3NvcihjdXN0b21NYXJrZXJzU3RhdHVzLCBpY29uVXJsQWNjZXNzb3IpIHtcbiAgICBjb25zdCBtYXhJY29uU2l6ZSA9IHRoaXMuZ2V0TWF4TWFya2VyU2l6ZSgpO1xuXG4gICAgcmV0dXJuIGQgPT4ge1xuICAgICAgY29uc3Qgd2FudGVkVXJsID1cbiAgICAgICAgKHR5cGVvZiBpY29uVXJsQWNjZXNzb3IgPT09ICdmdW5jdGlvbicpID8gaWNvblVybEFjY2Vzc29yKGQpIDogaWNvblVybEFjY2Vzc29yO1xuICAgICAgY29uc3QgdXJsID0gY3VzdG9tTWFya2Vyc1N0YXR1cz8uW3dhbnRlZFVybF0gPT09ICdvaycgPyB3YW50ZWRVcmwgOiBGQUxMQkFDS19JQ09OO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgaWQ6IGAke3VybH1AQCR7bWF4SWNvblNpemV9YCxcbiAgICAgICAgdXJsLFxuICAgICAgICB3aWR0aDogbWF4SWNvblNpemUsXG4gICAgICAgIGhlaWdodDogbWF4SWNvblNpemUsXG4gICAgICAgIG1hc2s6IHRydWVcbiAgICAgIH07XG4gICAgfTtcbiAgfVxuXG4gIGNhbGN1bGF0ZURhdGFBdHRyaWJ1dGUoa2VwbGVyVGFibGUsIGdldFBvc2l0aW9uKSB7XG4gICAgLy8gaW1wbGVtZW50ZWQgaW4gc3ViY2xhc3Nlc1xuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIHVwZGF0ZUxheWVyTWV0YShkYXRhQ29udGFpbmVyLCBnZXRQb3NpdGlvbikge1xuICAgIC8vIGltcGxlbWVudGVkIGluIHN1YmNsYXNzZXNcbiAgfVxuXG4gIGdldFBvc2l0aW9uQWNjZXNzb3IoZGF0YUNvbnRhaW5lcikge1xuICAgIC8vIGltcGxlbWVudGVkIGluIHN1YmNsYXNzZXNcbiAgICByZXR1cm4gKCkgPT4gbnVsbDtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBMYXllcjtcbiJdfQ==
|
|
1639
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9sYXllcnMvYmFzZS1sYXllci5qcyJdLCJuYW1lcyI6WyJnZW5lcmF0ZUNvbG9yIiwiTEFZRVJfSURfTEVOR1RIIiwiRkFMTEJBQ0tfSUNPTiIsIk1BWF9TQU1QTEVfU0laRSIsImRlZmF1bHREb21haW4iLCJkYXRhRmlsdGVyRXh0ZW5zaW9uIiwiRGF0YUZpbHRlckV4dGVuc2lvbiIsImZpbHRlclNpemUiLCJNQVhfR1BVX0ZJTFRFUlMiLCJkZWZhdWx0RGF0YUFjY2Vzc29yIiwiZGMiLCJkIiwiZGVmYXVsdEdldEZpZWxkVmFsdWUiLCJmaWVsZCIsInZhbHVlQWNjZXNzb3IiLCJzY2FsZUlkZW50aXR5IiwidiIsIk9WRVJMQVlfVFlQRSIsImRlY2tnbCIsIm1hcGJveGdsIiwibGF5ZXJDb2xvcnMiLCJPYmplY3QiLCJ2YWx1ZXMiLCJEYXRhVml6Q29sb3JzIiwibWFwIiwiaGV4VG9SZ2IiLCJpbmRleCIsImxlbmd0aCIsImNvbG9yTWFrZXIiLCJMYXllciIsInByb3BzIiwiaWQiLCJtZXRhIiwidmlzQ29uZmlnU2V0dGluZ3MiLCJjb25maWciLCJnZXREZWZhdWx0TGF5ZXJDb25maWciLCJjb2x1bW5zIiwiZ2V0TGF5ZXJDb2x1bW5zIiwiRGVmYXVsdExheWVySWNvbiIsInR5cGUiLCJjb2xvciIsInByb3BlcnR5Iiwic2NhbGUiLCJkb21haW4iLCJyYW5nZSIsImtleSIsImNoYW5uZWxTY2FsZVR5cGUiLCJDSEFOTkVMX1NDQUxFUyIsIm51bGxWYWx1ZSIsIk5PX1ZBTFVFX0NPTE9SIiwiZGVmYXVsdFZhbHVlIiwic2l6ZSIsImxhdCIsInBhaXIiLCJmaWVsZFBhaXJLZXkiLCJsbmciLCJsYXQwIiwibG5nMCIsImxhdDEiLCJsbmcxIiwiZGF0YUlkIiwidmlzaWJpbGl0eUJ5Wm9vbSIsIm1pbiIsIlpPT01fTEVWRUxfTElNSVRTIiwibWF4IiwibGFiZWwiLCJERUZBVUxUX0xBWUVSX0xBQkVMIiwibmV4dCIsInZhbHVlIiwiaXNWaXNpYmxlIiwiaXNDb25maWdBY3RpdmUiLCJoaWdobGlnaHRDb2xvciIsIkRFRkFVTFRfSElHSExJR0hUX0NPTE9SIiwiaGlkZGVuIiwiY29sb3JGaWVsZCIsImNvbG9yRG9tYWluIiwiY29sb3JTY2FsZSIsIlNDQUxFX1RZUEVTIiwicXVhbnRpbGUiLCJzaXplRG9tYWluIiwic2l6ZVNjYWxlIiwibGluZWFyIiwic2l6ZUZpZWxkIiwicmFkaXVzRmllbGQiLCJ2aXNDb25maWciLCJ0ZXh0TGFiZWwiLCJERUZBVUxUX1RFWFRfTEFCRUwiLCJjb2xvclVJIiwiREVGQVVMVF9DT0xPUl9VSSIsImNvbG9yUmFuZ2UiLCJhbmltYXRpb24iLCJlbmFibGVkIiwidmlzdWFsQ2hhbm5lbHMiLCJtZWFzdXJlIiwiZGlzcGxheU5hbWUiLCJuYW1lIiwiZGVmYXVsdE1lYXN1cmUiLCJ1cGRhdGUiLCJmaWVsZElkeCIsImNvbHVtblBhaXJzIiwicGFydG5lcktleSIsInBhcnRuZXJGaWVsZFBhaXJLZXkiLCJ6b29tIiwiem9vbU9mZnNldCIsIk1hdGgiLCJwb3ciLCJlbmFibGVFbGV2YXRpb25ab29tRmFjdG9yIiwiZGF0YXNldHMiLCJmaWx0ZXJlZEluZGV4Iiwib2JqZWN0IiwiZGF0YUNvbnRhaW5lciIsInJvdyIsImNvbmZpZ1RvQ29weSIsInNoYWxsb3dDb3B5IiwiY29uY2F0Iiwibm90VG9Db3B5IiwiZm9yRWFjaCIsImdyb3VwIiwicHVzaCIsImN1cnJlbnRDb25maWciLCJjb3BpZWQiLCJjb3B5TGF5ZXJDb25maWciLCJ1cGRhdGVMYXllckNvbmZpZyIsImtleXMiLCJjaGFubmVsIiwidmFsaWRhdGVWaXN1YWxDaGFubmVsIiwiaW5jbHVkZXMiLCJsYXllclZpc0NvbmZpZ3MiLCJpdGVtIiwiTEFZRVJfVklTX0NPTkZJR1MiLCJldmVyeSIsInAiLCJoYXNPd25Qcm9wZXJ0eSIsImNvbHVtblZhbGlkYXRvcnMiLCJyZXF1aXJlZCIsInJlcXVpcmVkTGF5ZXJDb2x1bW5zIiwicmVkdWNlIiwiYWNjdSIsInZhbGlkYXRvciIsIm9wdGlvbmFsIiwib3B0aW9uYWxDb2x1bW5zIiwibmV3Q29uZmlnIiwibmV3VmlzQ29uZmlnIiwicHJvcCIsInByZXZpb3VzIiwiY29sb3JVSVByb3AiLCJlbnRyaWVzIiwiaXNDb2xvclJhbmdlIiwiY29sb3JzIiwidXBkYXRlQ29sb3JVSUJ5Q29sb3JSYW5nZSIsInVwZGF0ZUNvbG9yUmFuZ2VCeUNvbG9yVUkiLCJ1cGRhdGVDdXN0b21QYWxldHRlIiwiY29sb3JSYW5nZUNvbmZpZyIsImN1c3RvbSIsImN1c3RvbVBhbGV0dGUiLCJzaG93RHJvcGRvd24iLCJzdGVwcyIsInJldmVyc2VkIiwiQm9vbGVhbiIsInNob3VsZFVwZGF0ZSIsInNvbWUiLCJzYW1lR3JvdXAiLCJDT0xPUl9SQU5HRVMiLCJmaWx0ZXIiLCJjciIsImZpbmQiLCJjb2xvck1hcCIsInVwZGF0ZUNvbG9yTWFwIiwidXBkYXRlTGF5ZXJWaXNDb25maWciLCJ1cGRhdGVDYXRlZ29yeUNvbG9yTWFwIiwidXBkYXRlTnVtZXJpY0NvbG9yTWFwIiwiYXNzaWduZWRDYXRlZ29yaWVzIiwibmV3Q29sb3JNYXAiLCJzbGljZSIsImNNYXAiLCJ1bmFzc2lnbmVkQ29sb3JzIiwiY2F0ZWdvcnkiLCJjb2xvck1hcFZhbHVlcyIsImMiLCJtYXhWYWx1ZSIsInByZXZWYWx1ZSIsInN0ZXAiLCJpIiwibGF5ZXJEYXRhIiwiZGF0YSIsImhhc0FsbENvbHVtbnMiLCJoYXNMYXllckRhdGEiLCJyZW5kZXJMYXllciIsIkFycmF5IiwiaXNBcnJheSIsIk1hcCIsImsiLCJzZXQiLCJTQ0FMRV9GVU5DIiwiZnJvbSIsInVua25vd24iLCJVTktOT1dOX0NPTE9SIiwiZ2V0VmlzQ2hhbm5lbFNjYWxlIiwidW5rbm93blZhbHVlIiwibWFwcGluZyIsIm90aGVyc01hcmtlciIsIm1hcmtlck1hcCIsIm1hcmtlclVybCIsImRhdGFBY2Nlc3NvciIsImF0dHJpYnV0ZUFjY2Vzc29ycyIsImZpeGVkIiwiYWNjZXNzb3IiLCJnZXRBdHRyaWJ1dGVWYWx1ZSIsImFnZ3JlZ2F0aW9uIiwic2hvdWxkR2V0U2NhbGUiLCJpZGVudGl0eSIsImFyZ3MiLCJpc0ZpeGVkIiwiZmllbGRDb25maWciLCJhZ2dyZWdhdGlvblZhbHVlIiwic2NhbGVGdW5jdGlvbiIsImdldENvbG9yU2NhbGUiLCJjdXN0b21NYXJrZXIiLCJnZXRDdXN0b21NYXJrZXJzU2NhbGUiLCJnZXRFbmNvZGVkQ2hhbm5lbFZhbHVlIiwiQ29uc29sZSIsIndhcm4iLCJvcmRpbmFsIiwiZ2V0UG9zaXRpb24iLCJzYW1wbGVEYXRhIiwibnVtUm93cyIsInBvaW50cyIsIm1hcEluZGV4IiwibGF0Qm91bmRzIiwibG5nQm91bmRzIiwiZGF0YVVwZGF0ZVRyaWdnZXJzIiwidHJpZ2dlckNoYW5nZWQiLCJfb2xkRGF0YVVwZGF0ZVRyaWdnZXJzIiwiX2FnZ3JlZ2F0aW9uIiwiZ2V0VmFsdWUiLCJhdHRyaWJ1dGVWYWx1ZSIsIkFMTF9GSUVMRF9UWVBFUyIsInRpbWVzdGFtcCIsIkRhdGUiLCJhbGxEYXRhIiwiZ2V0RGF0YSIsImRhdGFzZXRJZCIsImdldE1ldGEiLCJ0bCIsIm9sZExheWVyRGF0YSIsImxheWVyRGF0YXNldCIsInVwZGF0ZVZpc3VhbENoYW5uZWxGaWVsZHMiLCJnZXRQb3NpdGlvbkFjY2Vzc29yIiwiZ2V0RGF0YVVwZGF0ZVRyaWdnZXJzIiwiZ2V0Q2hhbmdlZFRyaWdnZXJzIiwidXBkYXRlTGF5ZXJNZXRhIiwiY2FsY3VsYXRlRGF0YUF0dHJpYnV0ZSIsImRhdGFzZXQiLCJvbGRGaWVsZCIsIm5ld0RhdGFTZXRGaWVsZCIsImZpZWxkcyIsImZkIiwibmV3RmlsdGVyIiwidGFibGUiLCJnZXREYXRhc2V0Iiwic2NhbGVUeXBlIiwidXBkYXRlZERvbWFpbiIsImNhbGN1bGF0ZUxheWVyRG9tYWluIiwidmFsaWRhdGVGaWVsZFR5cGUiLCJ2YWxpZGF0ZVNjYWxlIiwidmlzdWFsQ2hhbm5lbCIsInN1cHBvcnRlZEZpZWxkVHlwZXMiLCJjaGFubmVsU3VwcG9ydGVkRmllbGRUeXBlcyIsIkNIQU5ORUxfU0NBTEVfU1VQUE9SVEVEX0ZJRUxEUyIsInNjYWxlT3B0aW9ucyIsImdldFNjYWxlT3B0aW9ucyIsIkZJRUxEX09QVFMiLCJ1cGRhdGVUcmlnZ2VycyIsImRhdGFTZXRGaWVsZCIsImYiLCJnZXRDb2x1bW5MYXllckRvbWFpbiIsIm9iamVjdEluZm8iLCJpc0xheWVySG92ZXJlZCIsInBpY2tlZCIsImxheWVyIiwibWFwU3RhdGUiLCJmaXhlZFJhZGl1cyIsInJhZGl1c0NoYW5uZWwiLCJ2YyIsInVuZGVmaW5lZCIsInJhZGl1cyIsImdldFpvb21GYWN0b3IiLCJyYWRpdXNSYW5nZSIsImNlaWwiLCJub25lTGF5ZXJEYXRhQWZmZWN0aW5nUHJvcHMiLCJpbnRlcmFjdGlvbkNvbmZpZyIsImJydXNoaW5nVGFyZ2V0IiwiYnJ1c2giLCJhdXRvSGlnaGxpZ2h0IiwiYnJ1c2hpbmdSYWRpdXMiLCJicnVzaGluZ0VuYWJsZWQiLCJpZHgiLCJncHVGaWx0ZXIiLCJ2aXNpYmxlIiwibWFza1BvbHlnb24iLCJtYXNrRXh0ZW5zaW9uUHJvcHMiLCJjb29yZGluYXRlU3lzdGVtIiwiQ09PUkRJTkFURV9TWVNURU0iLCJMTkdMQVQiLCJwaWNrYWJsZSIsIndyYXBMb25naXR1ZGUiLCJwYXJhbWV0ZXJzIiwiZGVwdGhUZXN0IiwiZHJhZ1JvdGF0ZSIsImVuYWJsZTNkIiwib3BhY2l0eSIsImV4dGVuc2lvbnMiLCJmaWx0ZXJSYW5nZSIsInJlbmRlck9wdHMiLCJnZXRQaXhlbE9mZnNldCIsInNoYXJlZFByb3BzIiwidGV4dExhYmVscyIsImdldFRleHQiLCJUZXh0TGF5ZXIiLCJjaGFyYWN0ZXJTZXQiLCJnZXRTaXplIiwiZ2V0VGV4dEFuY2hvciIsImFuY2hvciIsImdldEFsaWdubWVudEJhc2VsaW5lIiwiYWxpZ25tZW50IiwiZ2V0Q29sb3IiLCJnZXRGaWx0ZXJWYWx1ZSIsImdldFJhZGl1cyIsImN1c3RvbU1hcmtlcnNTdGF0dXMiLCJpY29uVXJsQWNjZXNzb3IiLCJtYXhJY29uU2l6ZSIsImdldE1heE1hcmtlclNpemUiLCJ3YW50ZWRVcmwiLCJ1cmwiLCJ3aWR0aCIsImhlaWdodCIsIm1hc2siLCJrZXBsZXJUYWJsZSIsImZvdW5kTGF5ZXJzIiwiZGVmYXVsdEZpZWxkcyIsImFsbEZpZWxkcyIsInJlcXVpcmVkQ29sdW1ucyIsInByZXYiLCJyZXF1aXJlZEZpZWxkcyIsImdldEFsbFBvc3NpYmxlQ29sdW1uUGFyaXMiLCJhbGxLZXlzIiwicG9pbnRlcnMiLCJjb3VudFBlcktleSIsInBhaXJzIiwiaW5jcmVtZW50UG9pbnRlcnMiLCJuZXdQYWlyIiwiY3V1ciIsInB0cyIsImNvdW50cyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFvQkE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUE7O0FBQ0E7O0FBRUE7O0FBWUE7O0FBQ0E7O0FBQ0E7O0FBUUE7O0FBRUE7O0FBQ0E7O0FBRUE7O0FBQ0E7O0FBQ0E7Ozs7Ozs7Ozs7Ozt3REE0QlVBLGE7O0FBMUJWOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ08sSUFBTUMsZUFBZSxHQUFHLENBQXhCLEMsQ0FFUDs7O0FBQ0EsSUFBTUMsYUFBYSxHQUNqQiwwTEFERjtBQUdBLElBQU1DLGVBQWUsR0FBRyxJQUF4QjtBQUNBLElBQU1DLGFBQWEsR0FBRyxDQUFDLENBQUQsRUFBSSxDQUFKLENBQXRCO0FBQ0EsSUFBTUMsbUJBQW1CLEdBQUcsSUFBSUMsK0JBQUosQ0FBd0I7QUFBQ0MsRUFBQUEsVUFBVSxFQUFFQztBQUFiLENBQXhCLENBQTVCOztBQUVBLElBQU1DLG1CQUFtQixHQUFHLFNBQXRCQSxtQkFBc0IsQ0FBQUMsRUFBRTtBQUFBLFNBQUksVUFBQUMsQ0FBQztBQUFBLFdBQUlBLENBQUo7QUFBQSxHQUFMO0FBQUEsQ0FBOUI7O0FBQ0EsSUFBTUMsb0JBQW9CLEdBQUcsU0FBdkJBLG9CQUF1QixDQUFDQyxLQUFELEVBQVFGLENBQVI7QUFBQSxTQUFjRSxLQUFLLENBQUNDLGFBQU4sQ0FBb0JILENBQXBCLENBQWQ7QUFBQSxD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QkFBT1QsSUFBUDtBQUNELFNBSGUsRUFHYixFQUhhLENBQWhCO0FBS0FNLFFBQUFBLEtBQUssQ0FBQ3RPLElBQU4sQ0FBV3dPLE9BQVg7QUFDRDtBQUNEO0FBRUE7OztBQUNBLGVBQVNELGlCQUFULENBQTJCRyxHQUEzQixFQUFnQ0MsTUFBaEMsRUFBd0N2VSxLQUF4QyxFQUErQztBQUM3QyxZQUFJQSxLQUFLLEtBQUssQ0FBVixJQUFlc1UsR0FBRyxDQUFDLENBQUQsQ0FBSCxLQUFXQyxNQUFNLENBQUMsQ0FBRCxDQUFOLEdBQVksQ0FBMUMsRUFBNkM7QUFDM0M7QUFDQSxpQkFBTyxLQUFQO0FBQ0Q7O0FBRUQsWUFBSUQsR0FBRyxDQUFDdFUsS0FBRCxDQUFILEdBQWEsQ0FBYixHQUFpQnVVLE1BQU0sQ0FBQ3ZVLEtBQUQsQ0FBM0IsRUFBb0M7QUFDbENzVSxVQUFBQSxHQUFHLENBQUN0VSxLQUFELENBQUgsR0FBYXNVLEdBQUcsQ0FBQ3RVLEtBQUQsQ0FBSCxHQUFhLENBQTFCO0FBQ0EsaUJBQU8sSUFBUDtBQUNEOztBQUVEc1UsUUFBQUEsR0FBRyxDQUFDdFUsS0FBRCxDQUFILEdBQWEsQ0FBYjtBQUNBLGVBQU9tVSxpQkFBaUIsQ0FBQ0csR0FBRCxFQUFNQyxNQUFOLEVBQWN2VSxLQUFLLEdBQUcsQ0FBdEIsQ0FBeEI7QUFDRDs7QUFFRCxhQUFPa1UsS0FBUDtBQUNEOzs7V0FFRCxrQkFBZ0IxSyxDQUFoQixFQUFtQjtBQUNqQixhQUFPLDBCQUFTQSxDQUFULENBQVA7QUFDRDs7Ozs7ZUE0akNZckosSyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAoYykgMjAyMiBVYmVyIFRlY2hub2xvZ2llcywgSW5jLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbi8vIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbi8vIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbi8vIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbi8vIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuLy8gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpblxuLy8gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuLy8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4vLyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbi8vIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbi8vIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4vLyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOXG4vLyBUSEUgU09GVFdBUkUuXG5cbmltcG9ydCB7Y29uc29sZSBhcyBDb25zb2xlfSBmcm9tICdnbG9iYWwvd2luZG93JztcbmltcG9ydCBrZXltaXJyb3IgZnJvbSAna2V5bWlycm9yJztcbmltcG9ydCB7RGF0YUZpbHRlckV4dGVuc2lvbn0gZnJvbSAnQGRlY2suZ2wvZXh0ZW5zaW9ucyc7XG5pbXBvcnQge0NPT1JESU5BVEVfU1lTVEVNfSBmcm9tICdAZGVjay5nbC9jb3JlJztcbmltcG9ydCB7VGV4dExheWVyfSBmcm9tICdAZGVjay5nbC9sYXllcnMnO1xuXG5pbXBvcnQgRGVmYXVsdExheWVySWNvbiBmcm9tICcuL2RlZmF1bHQtbGF5ZXItaWNvbic7XG5pbXBvcnQge2RpZmZVcGRhdGVUcmlnZ2Vyc30gZnJvbSAnLi9sYXllci11cGRhdGUnO1xuXG5pbXBvcnQge1xuICBBTExfRklFTERfVFlQRVMsXG4gIE5PX1ZBTFVFX0NPTE9SLFxuICBTQ0FMRV9UWVBFUyxcbiAgQ0hBTk5FTF9TQ0FMRVMsXG4gIEZJRUxEX09QVFMsXG4gIFNDQUxFX0ZVTkMsXG4gIENIQU5ORUxfU0NBTEVfU1VQUE9SVEVEX0ZJRUxEUyxcbiAgTUFYX0dQVV9GSUxURVJTLFxuICBVTktOT1dOX0NPTE9SLFxuICBaT09NX0xFVkVMX0xJTUlUU1xufSBmcm9tICdjb25zdGFudHMvZGVmYXVsdC1zZXR0aW5ncyc7XG5pbXBvcnQge0NPTE9SX1JBTkdFU30gZnJvbSAnY29uc3RhbnRzL2NvbG9yLXJhbmdlcyc7XG5pbXBvcnQge0RhdGFWaXpDb2xvcnN9IGZyb20gJ2NvbnN0YW50cy9jdXN0b20tY29sb3ItcmFuZ2VzJztcbmltcG9ydCB7XG4gIExBWUVSX1ZJU19DT05GSUdTLFxuICBERUZBVUxUX1RFWFRfTEFCRUwsXG4gIERFRkFVTFRfQ09MT1JfVUksXG4gIERFRkFVTFRfSElHSExJR0hUX0NPTE9SLFxuICBERUZBVUxUX0xBWUVSX0xBQkVMXG59IGZyb20gJy4vbGF5ZXItZmFjdG9yeSc7XG5cbmltcG9ydCB7Z2VuZXJhdGVIYXNoSWQsIGlzUGxhaW5PYmplY3R9IGZyb20gJ3V0aWxzL3V0aWxzJztcblxuaW1wb3J0IHtnZXRMYXRMbmdCb3VuZHMsIG5vdE51bGxvclVuZGVmaW5lZH0gZnJvbSAndXRpbHMvZGF0YS11dGlscyc7XG5pbXBvcnQge2dldFNhbXBsZURhdGF9IGZyb20gJ3V0aWxzL3RhYmxlLXV0aWxzL2RhdGEtY29udGFpbmVyLXV0aWxzJztcblxuaW1wb3J0IHtoZXhUb1JnYiwgZ2V0Q29sb3JHcm91cEJ5TmFtZSwgcmV2ZXJzZUNvbG9yUmFuZ2V9IGZyb20gJ3V0aWxzL2NvbG9yLXV0aWxzJztcbmltcG9ydCB7Z2V0TWFza0V4dGVuc2lvblByb3BzfSBmcm9tICd1dGlscy9sYXllci11dGlscyc7XG5pbXBvcnQge3NjYWxlT3JkaW5hbH0gZnJvbSAnZDMtc2NhbGUnO1xuXG4vKiogQHR5cGVkZWYge2ltcG9ydCgnLi9pbmRleCcpLkxheWVyfSBMYXllckNsYXNzfSAqL1xuXG4vKipcbiAqIEFwcHJveC4gbnVtYmVyIG9mIHBvaW50cyB0byBzYW1wbGUgaW4gYSBsYXJnZSBkYXRhIHNldFxuICogQHR5cGUge251bWJlcn1cbiAqL1xuZXhwb3J0IGNvbnN0IExBWUVSX0lEX0xFTkdUSCA9IDY7XG5cbi8vIE5vdGUsIHRoaXMgaXMgaXMgU1ZHIG9mIHNvbGlkIGNpcmNsZSBlbmNvZGVkIGFzIGRhdGEtdXJpXG5jb25zdCBGQUxMQkFDS19JQ09OID1cbiAgJ2RhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PXV0Zi04O2Jhc2U2NCxQSE4yWnlCMmFXVjNRbTk0UFNJd0lEQWdNVEF3SURFd01DSWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklqNE5DaUFnUEdOcGNtTnNaU0JqZUQwaU5UQWlJR041UFNJMU1DSWdjajBpTlRBaUx6NE5Dand2YzNablBnPT0nO1xuXG5jb25zdCBNQVhfU0FNUExFX1NJWkUgPSA1MDAwO1xuY29uc3QgZGVmYXVsdERvbWFpbiA9IFswLCAxXTtcbmNvbnN0IGRhdGFGaWx0ZXJFeHRlbnNpb24gPSBuZXcgRGF0YUZpbHRlckV4dGVuc2lvbih7ZmlsdGVyU2l6ZTogTUFYX0dQVV9GSUxURVJTfSk7XG5cbmNvbnN0IGRlZmF1bHREYXRhQWNjZXNzb3IgPSBkYyA9PiBkID0+IGQ7XG5jb25zdCBkZWZhdWx0R2V0RmllbGRWYWx1ZSA9IChmaWVsZCwgZCkgPT4gZmllbGQudmFsdWVBY2Nlc3NvcihkKTtcbmNvbnN0IHNjYWxlSWRlbnRpdHkgPSB2ID0+IHY7XG5cbmV4cG9ydCBjb25zdCBPVkVSTEFZX1RZUEUgPSBrZXltaXJyb3Ioe1xuICBkZWNrZ2w6IG51bGwsXG4gIG1hcGJveGdsOiBudWxsXG59KTtcblxuZXhwb3J0IGNvbnN0IGxheWVyQ29sb3JzID0gT2JqZWN0LnZhbHVlcyhEYXRhVml6Q29sb3JzKS5tYXAoaGV4VG9SZ2IpO1xuZnVuY3Rpb24qIGdlbmVyYXRlQ29sb3IoKSB7XG4gIGxldCBpbmRleCA9IDA7XG4gIHdoaWxlIChpbmRleCA8IGxheWVyQ29sb3JzLmxlbmd0aCArIDEpIHtcbiAgICBpZiAoaW5kZXggPT09IGxheWVyQ29sb3JzLmxlbmd0aCkge1xuICAgICAgaW5kZXggPSAwO1xuICAgIH1cbiAgICB5aWVsZCBsYXllckNvbG9yc1tpbmRleCsrXTtcbiAgfVxufVxuXG5leHBvcnQgY29uc3QgY29sb3JNYWtlciA9IGdlbmVyYXRlQ29sb3IoKTtcblxuLyoqIEB0eXBlIHtMYXllckNsYXNzfSAqL1xuY2xhc3MgTGF5ZXIge1xuICBjb25zdHJ1Y3Rvcihwcm9wcyA9IHt9KSB7XG4gICAgdGhpcy5pZCA9IHByb3BzLmlkIHx8IGdlbmVyYXRlSGFzaElkKExBWUVSX0lEX0xFTkdUSCk7XG5cbiAgICAvLyBtZXRhXG4gICAgdGhpcy5tZXRhID0ge307XG5cbiAgICAvLyB2aXNDb25maWdTZXR0aW5nc1xuICAgIHRoaXMudmlzQ29uZmlnU2V0dGluZ3MgPSB7fTtcblxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB0aGlzLmNvbmZpZyA9IHRoaXMuZ2V0RGVmYXVsdExheWVyQ29uZmlnKHtcbiAgICAgIGNvbHVtbnM6IHRoaXMuZ2V0TGF5ZXJDb2x1bW5zKCksXG4gICAgICAuLi5wcm9wc1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0IGxheWVySWNvbigpIHtcbiAgICByZXR1cm4gRGVmYXVsdExheWVySWNvbjtcbiAgfVxuXG4gIGdldCBvdmVybGF5VHlwZSgpIHtcbiAgICByZXR1cm4gT1ZFUkxBWV9UWVBFLmRlY2tnbDtcbiAgfVxuXG4gIGdldCB0eXBlKCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgZ2V0IG5hbWUoKSB7XG4gICAgcmV0dXJuIHRoaXMudHlwZTtcbiAgfVxuXG4gIGdldCBpc0FnZ3JlZ2F0ZWQoKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgZ2V0IHJlcXVpcmVkTGF5ZXJDb2x1bW5zKCkge1xuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIGdldCBvcHRpb25hbENvbHVtbnMoKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgZ2V0IG5vbmVMYXllckRhdGFBZmZlY3RpbmdQcm9wcygpIHtcbiAgICByZXR1cm4gWydsYWJlbCcsICdvcGFjaXR5JywgJ3RoaWNrbmVzcycsICdpc1Zpc2libGUnLCAnaGlkZGVuJ107XG4gIH1cblxuICBnZXQgdmlzdWFsQ2hhbm5lbHMoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGNvbG9yOiB7XG4gICAgICAgIHByb3BlcnR5OiAnY29sb3InLFxuICAgICAgICBmaWVsZDogJ2NvbG9yRmllbGQnLFxuICAgICAgICBzY2FsZTogJ2NvbG9yU2NhbGUnLFxuICAgICAgICBkb21haW46ICdjb2xvckRvbWFpbicsXG4gICAgICAgIHJhbmdlOiAnY29sb3JSYW5nZScsXG4gICAgICAgIGtleTogJ2NvbG9yJyxcbiAgICAgICAgY2hhbm5lbFNjYWxlVHlwZTogQ0hBTk5FTF9TQ0FMRVMuY29sb3IsXG4gICAgICAgIG51bGxWYWx1ZTogTk9fVkFMVUVfQ09MT1IsXG4gICAgICAgIGRlZmF1bHRWYWx1ZTogY29uZmlnID0+IGNvbmZpZy5jb2xvclxuICAgICAgfSxcbiAgICAgIHNpemU6IHtcbiAgICAgICAgcHJvcGVydHk6ICdzaXplJyxcbiAgICAgICAgZmllbGQ6ICdzaXplRmllbGQnLFxuICAgICAgICBzY2FsZTogJ3NpemVTY2FsZScsXG4gICAgICAgIGRvbWFpbjogJ3NpemVEb21haW4nLFxuICAgICAgICByYW5nZTogJ3NpemVSYW5nZScsXG4gICAgICAgIGtleTogJ3NpemUnLFxuICAgICAgICBjaGFubmVsU2NhbGVUeXBlOiBDSEFOTkVMX1NDQUxFUy5zaXplLFxuICAgICAgICBudWxsVmFsdWU6IDAsXG4gICAgICAgIGRlZmF1bHRWYWx1ZTogMVxuICAgICAgfVxuICAgIH07XG4gIH1cblxuICAvKlxuICAgKiBDb2x1bW4gcGFpcnMgbWFwcyBsYXllciBjb2x1bW4gdG8gYSBzcGVjaWZpYyBmaWVsZCBwYWlycyxcbiAgICogQnkgZGVmYXVsdCwgaXQgaXMgc2V0IHRvIG51bGxcbiAgICovXG4gIGdldCBjb2x1bW5QYWlycygpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIC8qXG4gICAqIERlZmF1bHQgcG9pbnQgY29sdW1uIHBhaXJzLCBjYW4gYmUgdXNlZCBmb3IgcG9pbnQgYmFzZWQgbGF5ZXJzOiBwb2ludCwgaWNvbiBldGMuXG4gICAqL1xuICBnZXQgZGVmYXVsdFBvaW50Q29sdW1uUGFpcnMoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGxhdDoge3BhaXI6ICdsbmcnLCBmaWVsZFBhaXJLZXk6ICdsYXQnfSxcbiAgICAgIGxuZzoge3BhaXI6ICdsYXQnLCBmaWVsZFBhaXJLZXk6ICdsbmcnfVxuICAgIH07XG4gIH1cblxuICAvKlxuICAgKiBEZWZhdWx0IGxpbmsgY29sdW1uIHBhaXJzLCBjYW4gYmUgdXNlZCBmb3IgbGluayBiYXNlZCBsYXllcnM6IGFyYywgbGluZSBldGNcbiAgICovXG4gIGdldCBkZWZhdWx0TGlua0NvbHVtblBhaXJzKCkge1xuICAgIHJldHVybiB7XG4gICAgICBsYXQwOiB7cGFpcjogJ2xuZzAnLCBmaWVsZFBhaXJLZXk6ICdsYXQnfSxcbiAgICAgIGxuZzA6IHtwYWlyOiAnbGF0MCcsIGZpZWxkUGFpcktleTogJ2xuZyd9LFxuICAgICAgbGF0MToge3BhaXI6ICdsbmcxJywgZmllbGRQYWlyS2V5OiAnbGF0J30sXG4gICAgICBsbmcxOiB7cGFpcjogJ2xhdDEnLCBmaWVsZFBhaXJLZXk6ICdsbmcnfVxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIGEgUmVhY3QgY29tcG9uZW50IGZvciB0byByZW5kZXIgbGF5ZXIgaW5zdHJ1Y3Rpb25zIGluIGEgbW9kYWxcbiAgICogQHJldHVybnMge29iamVjdH0gLSBhbiBvYmplY3RcbiAgICogQGV4YW1wbGVcbiAgICogIHJldHVybiB7XG4gICAqICAgIGlkOiAnaWNvbkluZm8nLFxuICAgKiAgICB0ZW1wbGF0ZTogSWNvbkluZm9Nb2RhbCxcbiAgICogICAgbW9kYWxQcm9wczoge1xuICAgKiAgICAgIHRpdGxlOiAnSG93IHRvIGRyYXcgaWNvbnMnXG4gICAqICAgfTtcbiAgICogfVxuICAgKi9cbiAgZ2V0IGxheWVySW5mb01vZGFsKCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIC8qXG4gICAqIEdpdmVuIGEgZGF0YXNldCwgYXV0b21hdGljYWxseSBmaW5kIHByb3BzIHRvIGNyZWF0ZSBsYXllciBiYXNlZCBvbiBpdFxuICAgKiBhbmQgcmV0dXJuIHRoZSBwcm9wcyBhbmQgcHJldmlvdXMgZm91bmQgbGF5ZXJzLlxuICAgKiBCeSBkZWZhdWx0LCBubyBsYXllcnMgd2lsbCBiZSBmb3VuZFxuICAgKi9cbiAgc3RhdGljIGZpbmREZWZhdWx0TGF5ZXJQcm9wcyhkYXRhc2V0LCBmb3VuZExheWVycykge1xuICAgIHJldHVybiB7cHJvcHM6IFtdLCBmb3VuZExheWVyc307XG4gIH1cblxuICAvKipcbiAgICogR2l2ZW4gYSBhcnJheSBvZiBwcmVzZXQgcmVxdWlyZWQgY29sdW1uIG5hbWVzXG4gICAqIGZvdW5kIGZpZWxkIHRoYXQgaGFzIHRoZSBzYW1lIG5hbWUgdG8gc2V0IGFzIGxheWVyIGNvbHVtblxuICAgKlxuICAgKiBAcGFyYW0ge29iamVjdH0gZGVmYXVsdEZpZWxkc1xuICAgKiBAcGFyYW0ge29iamVjdFtdfSBhbGxGaWVsZHNcbiAgICogQHJldHVybnMge29iamVjdFtdIHwgbnVsbH0gYWxsIHBvc3NpYmxlIHJlcXVpcmVkIGxheWVyIGNvbHVtbiBwYWlyc1xuICAgKi9cbiAgc3RhdGljIGZpbmREZWZhdWx0Q29sdW1uRmllbGQoZGVmYXVsdEZpZWxkcywgYWxsRmllbGRzKSB7XG4gICAgLy8gZmluZCBhbGwgbWF0Y2hlZCBmaWVsZHMgZm9yIGVhY2ggcmVxdWlyZWQgY29sXG4gICAgY29uc3QgcmVxdWlyZWRDb2x1bW5zID0gT2JqZWN0LmtleXMoZGVmYXVsdEZpZWxkcykucmVkdWNlKChwcmV2LCBrZXkpID0+IHtcbiAgICAgIGNvbnN0IHJlcXVpcmVkRmllbGRzID0gYWxsRmllbGRzLmZpbHRlcihcbiAgICAgICAgZiA9PiBmLm5hbWUgPT09IGRlZmF1bHRGaWVsZHNba2V5XSB8fCBkZWZhdWx0RmllbGRzW2tleV0uaW5jbHVkZXMoZi5uYW1lKVxuICAgICAgKTtcblxuICAgICAgcHJldltrZXldID0gcmVxdWlyZWRGaWVsZHMubGVuZ3RoXG4gICAgICAgID8gcmVxdWlyZWRGaWVsZHMubWFwKGYgPT4gKHtcbiAgICAgICAgICAgIHZhbHVlOiBmLm5hbWUsXG4gICAgICAgICAgICBmaWVsZElkeDogZi5maWVsZElkeFxuICAgICAgICAgIH0pKVxuICAgICAgICA6IG51bGw7XG4gICAgICByZXR1cm4gcHJldjtcbiAgICB9LCB7fSk7XG5cbiAgICBpZiAoIU9iamVjdC52YWx1ZXMocmVxdWlyZWRDb2x1bW5zKS5ldmVyeShCb29sZWFuKSkge1xuICAgICAgLy8gaWYgYW55IGZpZWxkIG1pc3NpbmcsIHJldHVybiBudWxsXG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5nZXRBbGxQb3NzaWJsZUNvbHVtblBhcmlzKHJlcXVpcmVkQ29sdW1ucyk7XG4gIH1cblxuICBzdGF0aWMgZ2V0QWxsUG9zc2libGVDb2x1bW5QYXJpcyhyZXF1aXJlZENvbHVtbnMpIHtcbiAgICAvLyBmb3IgbXVsdGlwbGUgbWF0Y2hlZCBmaWVsZCBmb3Igb25lIHJlcXVpcmVkIGNvbHVtbiwgcmV0dXJuIG11bHRpcGxlXG4gICAgLy8gY29tYmluYXRpb25zLCBlLiBnLiBpZiBjb2x1bW4gYSBoYXMgMiBtYXRjaGVkLCBjb2x1bW4gYiBoYXMgMyBtYXRjaGVkXG4gICAgLy8gNiBwb3NzaWJsZSBjb2x1bW4gcGFpcnMgd2lsbCBiZSByZXR1cm5lZFxuICAgIGNvbnN0IGFsbEtleXMgPSBPYmplY3Qua2V5cyhyZXF1aXJlZENvbHVtbnMpO1xuICAgIGNvbnN0IHBvaW50ZXJzID0gYWxsS2V5cy5tYXAoKGssIGkpID0+ICgoaSA9PT0gYWxsS2V5cy5sZW5ndGggLSAxID8gLTEgOiAwKSkpO1xuICAgIGNvbnN0IGNvdW50UGVyS2V5ID0gYWxsS2V5cy5tYXAoayA9PiByZXF1aXJlZENvbHVtbnNba10ubGVuZ3RoKTtcbiAgICBjb25zdCBwYWlycyA9IFtdO1xuXG4gICAgLyogZXNsaW50LWRpc2FibGUgbm8tbG9vcC1mdW5jICovXG4gICAgd2hpbGUgKGluY3JlbWVudFBvaW50ZXJzKHBvaW50ZXJzLCBjb3VudFBlcktleSwgcG9pbnRlcnMubGVuZ3RoIC0gMSkpIHtcbiAgICAgIGNvbnN0IG5ld1BhaXIgPSBwb2ludGVycy5yZWR1Y2UoKHByZXYsIGN1dXIsIGkpID0+IHtcbiAgICAgICAgcHJldlthbGxLZXlzW2ldXSA9IHJlcXVpcmVkQ29sdW1uc1thbGxLZXlzW2ldXVtjdXVyXTtcbiAgICAgICAgcmV0dXJuIHByZXY7XG4gICAgICB9LCB7fSk7XG5cbiAgICAgIHBhaXJzLnB1c2gobmV3UGFpcik7XG4gICAgfVxuICAgIC8qIGVzbGludC1lbmFibGUgbm8tbG9vcC1mdW5jICovXG5cbiAgICAvLyByZWN1cnNpdmVseSBpbmNyZW1lbnQgcG9pbnRlcnNcbiAgICBmdW5jdGlvbiBpbmNyZW1lbnRQb2ludGVycyhwdHMsIGNvdW50cywgaW5kZXgpIHtcbiAgICAgIGlmIChpbmRleCA9PT0gMCAmJiBwdHNbMF0gPT09IGNvdW50c1swXSAtIDEpIHtcbiAgICAgICAgLy8gbm90aGluZyB0byBpbmNyZW1lbnRcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuXG4gICAgICBpZiAocHRzW2luZGV4XSArIDEgPCBjb3VudHNbaW5kZXhdKSB7XG4gICAgICAgIHB0c1tpbmRleF0gPSBwdHNbaW5kZXhdICsgMTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG5cbiAgICAgIHB0c1tpbmRleF0gPSAwO1xuICAgICAgcmV0dXJuIGluY3JlbWVudFBvaW50ZXJzKHB0cywgY291bnRzLCBpbmRleCAtIDEpO1xuICAgIH1cblxuICAgIHJldHVybiBwYWlycztcbiAgfVxuXG4gIHN0YXRpYyBoZXhUb1JnYihjKSB7XG4gICAgcmV0dXJuIGhleFRvUmdiKGMpO1xuICB9XG5cbiAgZ2V0RGVmYXVsdExheWVyQ29uZmlnKHByb3BzID0ge30pIHtcbiAgICByZXR1cm4ge1xuICAgICAgZGF0YUlkOiBwcm9wcy5kYXRhSWQgfHwgbnVsbCxcbiAgICAgIHZpc2liaWxpdHlCeVpvb206IHtcbiAgICAgICAgbWluOiBwcm9wcy52aXNpYmlsaXR5Qnlab29tPy5taW4gfHwgWk9PTV9MRVZFTF9MSU1JVFMubWluLFxuICAgICAgICBtYXg6IHByb3BzLnZpc2liaWxpdHlCeVpvb20/Lm1heCB8fCBaT09NX0xFVkVMX0xJTUlUUy5tYXhcbiAgICAgIH0sXG4gICAgICBsYWJlbDogcHJvcHMubGFiZWwgfHwgREVGQVVMVF9MQVlFUl9MQUJFTCxcbiAgICAgIGNvbG9yOiBwcm9wcy5jb2xvciB8fCBjb2xvck1ha2VyLm5leHQoKS52YWx1ZSxcbiAgICAgIGNvbHVtbnM6IHByb3BzLmNvbHVtbnMgfHwgbnVsbCxcbiAgICAgIGlzVmlzaWJsZTogcHJvcHMuaXNWaXNpYmxlIHx8IGZhbHNlLFxuICAgICAgaXNDb25maWdBY3RpdmU6IHByb3BzLmlzQ29uZmlnQWN0aXZlIHx8IGZhbHNlLFxuICAgICAgaGlnaGxpZ2h0Q29sb3I6IHByb3BzLmhpZ2hsaWdodENvbG9yIHx8IERFRkFVTFRfSElHSExJR0hUX0NPTE9SLFxuICAgICAgaGlkZGVuOiBwcm9wcy5oaWRkZW4gfHwgZmFsc2UsXG5cbiAgICAgIC8vIFRPRE86IHJlZmFjdG9yIHRoaXMgaW50byBzZXBhcmF0ZSB2aXN1YWwgQ2hhbm5lbCBjb25maWdcbiAgICAgIC8vIGNvbG9yIGJ5IGZpZWxkLCBkb21haW4gaXMgc2V0IGJ5IGZpbHRlcnMsIGZpZWxkLCBzY2FsZSB0eXBlXG4gICAgICBjb2xvckZpZWxkOiBudWxsLFxuICAgICAgY29sb3JEb21haW46IFswLCAxXSxcbiAgICAgIGNvbG9yU2NhbGU6IFNDQUxFX1RZUEVTLnF1YW50aWxlLFxuXG4gICAgICAvLyBjb2xvciBieSBzaXplLCBkb21haW4gaXMgc2V0IGJ5IGZpbHRlcnMsIGZpZWxkLCBzY2FsZSB0eXBlXG4gICAgICBzaXplRG9tYWluOiBbMCwgMV0sXG4gICAgICBzaXplU2NhbGU6IFNDQUxFX1RZUEVTLmxpbmVhcixcbiAgICAgIHNpemVGaWVsZDogbnVsbCxcbiAgICAgIHJhZGl1c0ZpZWxkOiBudWxsLFxuXG4gICAgICB2aXNDb25maWc6IHt9LFxuXG4gICAgICB0ZXh0TGFiZWw6IFtERUZBVUxUX1RFWFRfTEFCRUxdLFxuXG4gICAgICBjb2xvclVJOiB7XG4gICAgICAgIGNvbG9yOiBERUZBVUxUX0NPTE9SX1VJLFxuICAgICAgICBjb2xvclJhbmdlOiBERUZBVUxUX0NPTE9SX1VJXG4gICAgICB9LFxuICAgICAgYW5pbWF0aW9uOiB7ZW5hYmxlZDogZmFsc2V9XG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGRlc2NyaXB0aW9uIG9mIGEgdmlzdWFsQ2hhbm5lbCBjb25maWdcbiAgICogQHBhcmFtIGtleVxuICAgKiBAcmV0dXJucyB7e2xhYmVsOiBzdHJpbmcsIG1lYXN1cmU6IChzdHJpbmd8c3RyaW5nKX19XG4gICAqL1xuICBnZXRWaXN1YWxDaGFubmVsRGVzY3JpcHRpb24oa2V5KSB7XG4gICAgLy8gZS5nLiBsYWJlbDogQ29sb3IsIG1lYXN1cmU6IFZlaGljbGUgVHlwZVxuICAgIHJldHVybiB7XG4gICAgICBsYWJlbDogdGhpcy52aXNDb25maWdTZXR0aW5nc1t0aGlzLnZpc3VhbENoYW5uZWxzW2tleV0ucmFuZ2VdLmxhYmVsLFxuICAgICAgbWVhc3VyZTogdGhpcy5jb25maWdbdGhpcy52aXN1YWxDaGFubmVsc1trZXldLmZpZWxkXVxuICAgICAgICA/ICh0aGlzLmNvbmZpZ1t0aGlzLnZpc3VhbENoYW5uZWxzW2tleV0uZmllbGRdLmRpc3BsYXlOYW1lIHx8XG4gICAgICAgICAgdGhpcy5jb25maWdbdGhpcy52aXN1YWxDaGFubmVsc1trZXldLmZpZWxkXS5uYW1lKVxuICAgICAgICA6IHRoaXMudmlzdWFsQ2hhbm5lbHNba2V5XS5kZWZhdWx0TWVhc3VyZVxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogQXNzaWduIGEgZmllbGQgdG8gbGF5ZXIgY29sdW1uLCByZXR1cm4gY29sdW1uIGNvbmZpZ1xuICAgKiBAcGFyYW0ga2V5IC0gQ29sdW1uIEtleVxuICAgKiBAcGFyYW0gZmllbGQgLSBTZWxlY3RlZCBmaWVsZFxuICAgKiBAcmV0dXJucyB7e319IC0gQ29sdW1uIGNvbmZpZ1xuICAgKi9cbiAgYXNzaWduQ29sdW1uKGtleSwgZmllbGQpIHtcbiAgICAvLyBmaWVsZCB2YWx1ZSBjb3VsZCBiZSBudWxsIGZvciBvcHRpb25hbCBjb2x1bW5zXG4gICAgY29uc3QgdXBkYXRlID0gZmllbGRcbiAgICAgID8ge1xuICAgICAgICAgIHZhbHVlOiBmaWVsZC5uYW1lLFxuICAgICAgICAgIGZpZWxkSWR4OiBmaWVsZC5maWVsZElkeFxuICAgICAgICB9XG4gICAgICA6IHt2YWx1ZTogbnVsbCwgZmllbGRJZHg6IC0xfTtcblxuICAgIHJldHVybiB7XG4gICAgICAuLi50aGlzLmNvbmZpZy5jb2x1bW5zLFxuICAgICAgW2tleV06IHtcbiAgICAgICAgLi4udGhpcy5jb25maWcuY29sdW1uc1trZXldLFxuICAgICAgICAuLi51cGRhdGVcbiAgICAgIH1cbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEFzc2lnbiBhIGZpZWxkIHBhaXIgdG8gY29sdW1uIGNvbmZpZywgcmV0dXJuIGNvbHVtbiBjb25maWdcbiAgICogQHBhcmFtIGtleSAtIENvbHVtbiBLZXlcbiAgICogQHBhcmFtIHBhaXIgLSBmaWVsZCBQYWlyXG4gICAqIEByZXR1cm5zIHtvYmplY3R9IC0gQ29sdW1uIGNvbmZpZ1xuICAgKi9cbiAgYXNzaWduQ29sdW1uUGFpcnMoa2V5LCBwYWlyKSB7XG4gICAgaWYgKCF0aGlzLmNvbHVtblBhaXJzIHx8ICF0aGlzLmNvbHVtblBhaXJzPy5ba2V5XSkge1xuICAgICAgLy8gc2hvdWxkIG5vdCBlbmQgaW4gdGhpcyBzdGF0ZVxuICAgICAgcmV0dXJuIHRoaXMuY29uZmlnLmNvbHVtbnM7XG4gICAgfVxuXG4gICAgY29uc3Qge3BhaXI6IHBhcnRuZXJLZXksIGZpZWxkUGFpcktleX0gPSB0aGlzLmNvbHVtblBhaXJzPy5ba2V5XTtcbiAgICBjb25zdCB7ZmllbGRQYWlyS2V5OiBwYXJ0bmVyRmllbGRQYWlyS2V5fSA9IHRoaXMuY29sdW1uUGFpcnM/LltwYXJ0bmVyS2V5XTtcblxuICAgIHJldHVybiB7XG4gICAgICAuLi50aGlzLmNvbmZpZy5jb2x1bW5zLFxuICAgICAgW2tleV06IHBhaXJbZmllbGRQYWlyS2V5XSxcbiAgICAgIFtwYXJ0bmVyS2V5XTogcGFpcltwYXJ0bmVyRmllbGRQYWlyS2V5XVxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogQ2FsY3VsYXRlIGEgcmFkaXVzIHpvb20gbXVsdGlwbGllciB0byByZW5kZXIgcG9pbnRzLCBzbyB0aGV5IGFyZSB2aXNpYmxlIGluIGFsbCB6b29tIGxldmVsXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBtYXBTdGF0ZVxuICAgKiBAcGFyYW0ge251bWJlcn0gbWFwU3RhdGUuem9vbSAtIGFjdHVhbCB6b29tXG4gICAqIEBwYXJhbSB7bnVtYmVyIHwgdm9pZH0gbWFwU3RhdGUuem9vbU9mZnNldCAtIHpvb21PZmZzZXQgd2hlbiByZW5kZXIgaW4gdGhlIHBsb3QgY29udGFpbmVyIGZvciBleHBvcnQgaW1hZ2VcbiAgICogQHJldHVybnMge251bWJlcn1cbiAgICovXG4gIGdldFpvb21GYWN0b3Ioe3pvb20sIHpvb21PZmZzZXQgPSAwfSkge1xuICAgIHJldHVybiBNYXRoLnBvdygyLCBNYXRoLm1heCgxNCAtIHpvb20gKyB6b29tT2Zmc2V0LCAwKSk7XG4gIH1cblxuICAvKipcbiAgICogQ2FsY3VsYXRlIGEgZWxldmF0aW9uIHpvb20gbXVsdGlwbGllciB0byByZW5kZXIgcG9pbnRzLCBzbyB0aGV5IGFyZSB2aXNpYmxlIGluIGFsbCB6b29tIGxldmVsXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBtYXBTdGF0ZVxuICAgKiBAcGFyYW0ge251bWJlcn0gbWFwU3RhdGUuem9vbSAtIGFjdHVhbCB6b29tXG4gICAqIEBwYXJhbSB7bnVtYmVyIHwgdm9pZH0gbWFwU3RhdGUuem9vbU9mZnNldCAtIHpvb21PZmZzZXQgd2hlbiByZW5kZXIgaW4gdGhlIHBsb3QgY29udGFpbmVyIGZvciBleHBvcnQgaW1hZ2VcbiAgICogQHJldHVybnMge251bWJlcn1cbiAgICovXG4gIGdldEVsZXZhdGlvblpvb21GYWN0b3Ioe3pvb20sIHpvb21PZmZzZXQgPSAwfSkge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZy52aXNDb25maWcuZW5hYmxlRWxldmF0aW9uWm9vbUZhY3RvclxuICAgICAgPyBNYXRoLnBvdygyLCBNYXRoLm1heCg4IC0gem9vbSArIHpvb21PZmZzZXQsIDApKVxuICAgICAgOiAxO1xuICB9XG5cbiAgZm9ybWF0TGF5ZXJEYXRhKGRhdGFzZXRzLCBmaWx0ZXJlZEluZGV4KSB7XG4gICAgcmV0dXJuIHt9O1xuICB9XG5cbiAgcmVuZGVyTGF5ZXIoKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgZ2V0SG92ZXJEYXRhKG9iamVjdCwgZGF0YUNvbnRhaW5lcikge1xuICAgIGlmICghb2JqZWN0KSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICAvLyBCeSBkZWZhdWx0LCBlYWNoIGVudHJ5IG9mIGxheWVyRGF0YSBzaG91bGQgaGF2ZSBhbiBpbmRleCBvZiBhIHJvdyBpbiB0aGUgb3JpZ2luYWwgZGF0YSBjb250YWluZXIuXG4gICAgLy8gRWFjaCBsYXllciBjYW4gaW1wbGVtZW50IGl0cyBvd24gZ2V0SG92ZXJEYXRhIG1ldGhvZFxuICAgIHJldHVybiBkYXRhQ29udGFpbmVyLnJvdyhvYmplY3QuaW5kZXgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFdoZW4gY2hhbmdlIGxheWVyIHR5cGUsIHRyeSB0byBjb3B5IG92ZXIgbGF5ZXIgY29uZmlncyBhcyBtdWNoIGFzIHBvc3NpYmxlXG4gICAqIEBwYXJhbSBjb25maWdUb0NvcHkgLSBjb25maWcgdG8gY29weSBvdmVyXG4gICAqIEBwYXJhbSB2aXNDb25maWdTZXR0aW5ncyAtIHZpc0NvbmZpZyBzZXR0aW5ncyBvZiBjb25maWcgdG8gY29weVxuICAgKi9cbiAgYXNzaWduQ29uZmlnVG9MYXllcihjb25maWdUb0NvcHksIHZpc0NvbmZpZ1NldHRpbmdzKSB7XG4gICAgLy8gZG9uJ3QgZGVlcCBtZXJnZSB2aXN1YWxDaGFubmVsIGZpZWxkXG4gICAgLy8gZG9uJ3QgZGVlcCBtZXJnZSBjb2xvciByYW5nZSwgcmV2ZXJzZWQ6IGlzIG5vdCBhIGtleSBieSBkZWZhdWx0XG4gICAgY29uc3Qgc2hhbGxvd0NvcHkgPSBbJ2NvbG9yUmFuZ2UnLCAnc3Ryb2tlQ29sb3JSYW5nZSddLmNvbmNhdChcbiAgICAgIE9iamVjdC52YWx1ZXModGhpcy52aXN1YWxDaGFubmVscykubWFwKHYgPT4gdi5maWVsZClcbiAgICApO1xuXG4gICAgLy8gZG9uJ3QgY29weSBvdmVyIGRvbWFpbiBhbmQgYW5pbWF0aW9uXG4gICAgY29uc3Qgbm90VG9Db3B5ID0gWydhbmltYXRpb24nXS5jb25jYXQoT2JqZWN0LnZhbHVlcyh0aGlzLnZpc3VhbENoYW5uZWxzKS5tYXAodiA9PiB2LmRvbWFpbikpO1xuICAgIC8vIGlmIHJhbmdlIGlzIGZvciB0aGUgc2FtZSBwcm9wZXJ0eSBncm91cCBjb3B5IGl0LCBvdGhlcndpc2UsIG5vdCB0byBjb3B5XG4gICAgT2JqZWN0LnZhbHVlcyh0aGlzLnZpc3VhbENoYW5uZWxzKS5mb3JFYWNoKHYgPT4ge1xuICAgICAgaWYgKFxuICAgICAgICBjb25maWdUb0NvcHkudmlzQ29uZmlnW3YucmFuZ2VdICYmXG4gICAgICAgIHRoaXMudmlzQ29uZmlnU2V0dGluZ3Nbdi5yYW5nZV0gJiZcbiAgICAgICAgdmlzQ29uZmlnU2V0dGluZ3Nbdi5yYW5nZV0uZ3JvdXAgIT09IHRoaXMudmlzQ29uZmlnU2V0dGluZ3Nbdi5yYW5nZV0uZ3JvdXBcbiAgICAgICkge1xuICAgICAgICBub3RUb0NvcHkucHVzaCh2LnJhbmdlKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIC8vIGRvbid0IGNvcHkgb3ZlciB2aXN1YWxDaGFubmVsIHJhbmdlXG4gICAgY29uc3QgY3VycmVudENvbmZpZyA9IHRoaXMuY29uZmlnO1xuICAgIGNvbnN0IGNvcGllZCA9IHRoaXMuY29weUxheWVyQ29uZmlnKGN1cnJlbnRDb25maWcsIGNvbmZpZ1RvQ29weSwge1xuICAgICAgc2hhbGxvd0NvcHksXG4gICAgICBub3RUb0NvcHlcbiAgICB9KTtcbiAgICB0aGlzLnVwZGF0ZUxheWVyQ29uZmlnKGNvcGllZCk7XG4gICAgLy8gdmFsaWRhdGUgdmlzdWFsQ2hhbm5lbCBmaWVsZCB0eXBlIGFuZCBzY2FsZSB0eXBlc1xuICAgIE9iamVjdC5rZXlzKHRoaXMudmlzdWFsQ2hhbm5lbHMpLmZvckVhY2goY2hhbm5lbCA9PiB7XG4gICAgICB0aGlzLnZhbGlkYXRlVmlzdWFsQ2hhbm5lbChjaGFubmVsKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qXG4gICAqIFJlY3Vyc2l2ZWx5IGNvcHkgY29uZmlnIG92ZXIgdG8gYW4gZW1wdHkgbGF5ZXJcbiAgICogd2hlbiByZWNlaXZlZCBzYXZlZCBjb25maWcsIG9yIGNvcHkgY29uZmlnIG92ZXIgZnJvbSBhIGRpZmZlcmVudCBsYXllciB0eXBlXG4gICAqIG1ha2Ugc3VyZSB0byBvbmx5IGNvcHkgb3ZlciB2YWx1ZSB0byBleGlzdGluZyBrZXlzXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBjdXJyZW50Q29uZmlnIC0gZXhpc3RpbmcgY29uZmlnIHRvIGJlIG92ZXJyaWRlXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBjb25maWdUb0NvcHkgLSBuZXcgQ29uZmlnIHRvIGNvcHkgb3ZlclxuICAgKiBAcGFyYW0ge3N0cmluZ1tdfSBzaGFsbG93Q29weSAtIGFycmF5IG9mIHByb3BlcnRpZXMgdG8gbm90IHRvIGJlIGRlZXAgY29waWVkXG4gICAqIEBwYXJhbSB7c3RyaW5nW119IG5vdFRvQ29weSAtIGFycmF5IG9mIHByb3BlcnRpZXMgbm90IHRvIGNvcHlcbiAgICogQHJldHVybnMge29iamVjdH0gLSBjb3BpZWQgY29uZmlnXG4gICAqL1xuICBjb3B5TGF5ZXJDb25maWcoY3VycmVudENvbmZpZywgY29uZmlnVG9Db3B5LCB7c2hhbGxvd0NvcHkgPSBbXSwgbm90VG9Db3B5ID0gW119ID0ge30pIHtcbiAgICBjb25zdCBjb3BpZWQgPSB7fTtcbiAgICBPYmplY3Qua2V5cyhjdXJyZW50Q29uZmlnKS5mb3JFYWNoKGtleSA9PiB7XG4gICAgICBpZiAoXG4gICAgICAgIGlzUGxhaW5PYmplY3QoY3VycmVudENvbmZpZ1trZXldKSAmJlxuICAgICAgICBpc1BsYWluT2JqZWN0KGNvbmZpZ1RvQ29weVtrZXldKSAmJlxuICAgICAgICAhc2hhbGxvd0NvcHkuaW5jbHVkZXMoa2V5KSAmJlxuICAgICAgICAhbm90VG9Db3B5LmluY2x1ZGVzKGtleSlcbiAgICAgICkge1xuICAgICAgICAvLyByZWN1cnNpdmVseSBhc3NpZ24gb2JqZWN0IHZhbHVlXG4gICAgICAgIGNvcGllZFtrZXldID0gdGhpcy5jb3B5TGF5ZXJDb25maWcoY3VycmVudENvbmZpZ1trZXldLCBjb25maWdUb0NvcHlba2V5XSwge1xuICAgICAgICAgIHNoYWxsb3dDb3B5LFxuICAgICAgICAgIG5vdFRvQ29weVxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSBpZiAobm90TnVsbG9yVW5kZWZpbmVkKGNvbmZpZ1RvQ29weVtrZXldKSAmJiAhbm90VG9Db3B5LmluY2x1ZGVzKGtleSkpIHtcbiAgICAgICAgLy8gY29weVxuICAgICAgICBjb3BpZWRba2V5XSA9IGNvbmZpZ1RvQ29weVtrZXldO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8ga2VlcCBleGlzdGluZ1xuICAgICAgICBjb3BpZWRba2V5XSA9IGN1cnJlbnRDb25maWdba2V5XTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBjb3BpZWQ7XG4gIH1cblxuICByZWdpc3RlclZpc0NvbmZpZyhsYXllclZpc0NvbmZpZ3MpIHtcbiAgICBPYmplY3Qua2V5cyhsYXllclZpc0NvbmZpZ3MpLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICBpZiAodHlwZW9mIGl0ZW0gPT09ICdzdHJpbmcnICYmIExBWUVSX1ZJU19DT05GSUdTW2xheWVyVmlzQ29uZmlnc1tpdGVtXV0pIHtcbiAgICAgICAgLy8gaWYgYXNzaWduZWQgb25lIG9mIGRlZmF1bHQgTEFZRVJfQ09ORklHU1xuICAgICAgICB0aGlzLmNvbmZpZy52aXNDb25maWdbaXRlbV0gPSBMQVlFUl9WSVNfQ09ORklHU1tsYXllclZpc0NvbmZpZ3NbaXRlbV1dLmRlZmF1bHRWYWx1ZTtcbiAgICAgICAgdGhpcy52aXNDb25maWdTZXR0aW5nc1tpdGVtXSA9IExBWUVSX1ZJU19DT05GSUdTW2xheWVyVmlzQ29uZmlnc1tpdGVtXV07XG4gICAgICB9IGVsc2UgaWYgKFsndHlwZScsICdkZWZhdWx0VmFsdWUnXS5ldmVyeShwID0+IGxheWVyVmlzQ29uZmlnc1tpdGVtXS5oYXNPd25Qcm9wZXJ0eShwKSkpIHtcbiAgICAgICAgLy8gaWYgcHJvdmlkZWQgY3VzdG9taXplZCB2aXNDb25maWcsIGFuZCBoYXMgdHlwZSAmJiBkZWZhdWx0VmFsdWVcbiAgICAgICAgLy8gVE9ETzogZnVydGhlciBjaGVjayBpZiBjdXN0b21pemVkIHZpc0NvbmZpZyBpcyB2YWxpZFxuICAgICAgICB0aGlzLmNvbmZpZy52aXNDb25maWdbaXRlbV0gPSBsYXllclZpc0NvbmZpZ3NbaXRlbV0uZGVmYXVsdFZhbHVlO1xuICAgICAgICB0aGlzLnZpc0NvbmZpZ1NldHRpbmdzW2l0ZW1dID0gbGF5ZXJWaXNDb25maWdzW2l0ZW1dO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgZ2V0TGF5ZXJDb2x1bW5zKCkge1xuICAgIGNvbnN0IGNvbHVtblZhbGlkYXRvcnMgPSB0aGlzLmNvbHVtblZhbGlkYXRvcnMgfHwge307XG4gICAgY29uc3QgcmVxdWlyZWQgPSB0aGlzLnJlcXVpcmVkTGF5ZXJDb2x1bW5zLnJlZHVjZShcbiAgICAgIChhY2N1LCBrZXkpID0+ICh7XG4gICAgICAgIC4uLmFjY3UsXG4gICAgICAgIFtrZXldOiBjb2x1bW5WYWxpZGF0b3JzW2tleV1cbiAgICAgICAgICA/IHt2YWx1ZTogbnVsbCwgZmllbGRJZHg6IC0xLCB2YWxpZGF0b3I6IGNvbHVtblZhbGlkYXRvcnNba2V5XX1cbiAgICAgICAgICA6IHt2YWx1ZTogbnVsbCwgZmllbGRJZHg6IC0xfVxuICAgICAgfSksXG4gICAgICB7fVxuICAgICk7XG4gICAgY29uc3Qgb3B0aW9uYWwgPSB0aGlzLm9wdGlvbmFsQ29sdW1ucy5yZWR1Y2UoXG4gICAgICAoYWNjdSwga2V5KSA9PiAoe1xuICAgICAgICAuLi5hY2N1LFxuICAgICAgICBba2V5XToge3ZhbHVlOiBudWxsLCBmaWVsZElkeDogLTEsIG9wdGlvbmFsOiB0cnVlfVxuICAgICAgfSksXG4gICAgICB7fVxuICAgICk7XG5cbiAgICByZXR1cm4gey4uLnJlcXVpcmVkLCAuLi5vcHRpb25hbH07XG4gIH1cblxuICB1cGRhdGVMYXllckNvbmZpZyhuZXdDb25maWcpIHtcbiAgICB0aGlzLmNvbmZpZyA9IHsuLi50aGlzLmNvbmZpZywgLi4ubmV3Q29uZmlnfTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHVwZGF0ZUxheWVyVmlzQ29uZmlnKG5ld1Zpc0NvbmZpZykge1xuICAgIHRoaXMuY29uZmlnLnZpc0NvbmZpZyA9IHsuLi50aGlzLmNvbmZpZy52aXNDb25maWcsIC4uLm5ld1Zpc0NvbmZpZ307XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICB1cGRhdGVMYXllckNvbG9yVUkocHJvcCwgbmV3Q29uZmlnKSB7XG4gICAgY29uc3Qge2NvbG9yVUk6IHByZXZpb3VzLCB2aXNDb25maWd9ID0gdGhpcy5jb25maWc7XG5cbiAgICBpZiAoIWlzUGxhaW5PYmplY3QobmV3Q29uZmlnKSB8fCB0eXBlb2YgcHJvcCAhPT0gJ3N0cmluZycpIHtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIGNvbnN0IGNvbG9yVUlQcm9wID0gT2JqZWN0LmVudHJpZXMobmV3Q29uZmlnKS5yZWR1Y2UoKGFjY3UsIFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uYWNjdSxcbiAgICAgICAgW2tleV06IGlzUGxhaW5PYmplY3QoYWNjdVtrZXldKSAmJiBpc1BsYWluT2JqZWN0KHZhbHVlKSA/IHsuLi5hY2N1W2tleV0sIC4uLnZhbHVlfSA6IHZhbHVlXG4gICAgICB9O1xuICAgIH0sIHByZXZpb3VzW3Byb3BdIHx8IERFRkFVTFRfQ09MT1JfVUkpO1xuXG4gICAgY29uc3QgY29sb3JVSSA9IHtcbiAgICAgIC4uLnByZXZpb3VzLFxuICAgICAgW3Byb3BdOiBjb2xvclVJUHJvcFxuICAgIH07XG5cbiAgICB0aGlzLnVwZGF0ZUxheWVyQ29uZmlnKHtjb2xvclVJfSk7XG4gICAgLy8gaWYgY29sb3JVSVtwcm9wXSBpcyBjb2xvclJhbmdlXG4gICAgY29uc3QgaXNDb2xvclJhbmdlID0gdmlzQ29uZmlnW3Byb3BdICYmIHZpc0NvbmZpZ1twcm9wXS5jb2xvcnM7XG5cbiAgICBpZiAoaXNDb2xvclJhbmdlKSB7XG4gICAgICB0aGlzLnVwZGF0ZUNvbG9yVUlCeUNvbG9yUmFuZ2UobmV3Q29uZmlnLCBwcm9wKTtcbiAgICAgIHRoaXMudXBkYXRlQ29sb3JSYW5nZUJ5Q29sb3JVSShuZXdDb25maWcsIHByZXZpb3VzLCBwcm9wKTtcbiAgICAgIHRoaXMudXBkYXRlQ3VzdG9tUGFsZXR0ZShuZXdDb25maWcsIHByZXZpb3VzLCBwcm9wKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHVwZGF0ZUN1c3RvbVBhbGV0dGUobmV3Q29uZmlnLCBwcmV2aW91cywgcHJvcCkge1xuICAgIGlmICghbmV3Q29uZmlnLmNvbG9yUmFuZ2VDb25maWcgfHwgIW5ld0NvbmZpZy5jb2xvclJhbmdlQ29uZmlnLmN1c3RvbSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHtjb2xvclVJLCB2aXNDb25maWd9ID0gdGhpcy5jb25maWc7XG5cbiAgICBpZiAoIXZpc0NvbmZpZ1twcm9wXSkgcmV0dXJuO1xuICAgIGNvbnN0IHtjb2xvcnN9ID0gdmlzQ29uZmlnW3Byb3BdO1xuICAgIGNvbnN0IGN1c3RvbVBhbGV0dGUgPSB7XG4gICAgICAuLi5jb2xvclVJW3Byb3BdLmN1c3RvbVBhbGV0dGUsXG4gICAgICBuYW1lOiAnQ3VzdG9tIFBhbGV0dGUnLFxuICAgICAgY29sb3JzOiBbLi4uY29sb3JzXVxuICAgIH07XG4gICAgdGhpcy51cGRhdGVMYXllckNvbmZpZyh7XG4gICAgICBjb2xvclVJOiB7XG4gICAgICAgIC4uLmNvbG9yVUksXG4gICAgICAgIFtwcm9wXToge1xuICAgICAgICAgIC4uLmNvbG9yVUlbcHJvcF0sXG4gICAgICAgICAgY3VzdG9tUGFsZXR0ZVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbiAgLyoqXG4gICAqIGlmIG9wZW4gZHJvcGRvd24gYW5kIHByb3AgaXMgY29sb3IgcmFuZ2VcbiAgICogQXV0b21hdGljYWxseSBzZXQgY29sb3JSYW5nZUNvbmZpZydzIHN0ZXAsIHJldmVyc2VkIGFuZCB0eXBlXG4gICAqIEBwYXJhbSB7Kn0gbmV3Q29uZmlnXG4gICAqIEBwYXJhbSB7Kn0gcHJvcFxuICAgKi9cbiAgdXBkYXRlQ29sb3JVSUJ5Q29sb3JSYW5nZShuZXdDb25maWcsIHByb3ApIHtcbiAgICBpZiAodHlwZW9mIG5ld0NvbmZpZy5zaG93RHJvcGRvd24gIT09ICdudW1iZXInKSByZXR1cm47XG5cbiAgICBjb25zdCB7Y29sb3JVSSwgdmlzQ29uZmlnfSA9IHRoaXMuY29uZmlnO1xuICAgIHRoaXMudXBkYXRlTGF5ZXJDb25maWcoe1xuICAgICAgY29sb3JVSToge1xuICAgICAgICAuLi5jb2xvclVJLFxuICAgICAgICBbcHJvcF06IHtcbiAgICAgICAgICAuLi5jb2xvclVJW3Byb3BdLFxuICAgICAgICAgIGNvbG9yUmFuZ2VDb25maWc6IHtcbiAgICAgICAgICAgIC4uLmNvbG9yVUlbcHJvcF0uY29sb3JSYW5nZUNvbmZpZyxcbiAgICAgICAgICAgIHR5cGU6IHZpc0NvbmZpZ1twcm9wXS50eXBlLFxuICAgICAgICAgICAgc3RlcHM6IHZpc0NvbmZpZ1twcm9wXS5jb2xvcnMubGVuZ3RoLFxuICAgICAgICAgICAgcmV2ZXJzZWQ6IEJvb2xlYW4odmlzQ29uZmlnW3Byb3BdLnJldmVyc2VkKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGNvbXBsZXhpdHlcbiAgdXBkYXRlQ29sb3JSYW5nZUJ5Q29sb3JVSShuZXdDb25maWcsIHByZXZpb3VzLCBwcm9wKSB7XG4gICAgLy8gb25seSB1cGRhdGUgY29sb3JSYW5nZSBpZiBjaGFuZ2VzIGluIFVJIGlzIG1hZGUgdG8gJ3JldmVyc2VkJywgJ3N0ZXBzJyBvciBzdGVwc1xuICAgIGNvbnN0IHNob3VsZFVwZGF0ZSA9XG4gICAgICBuZXdDb25maWcuY29sb3JSYW5nZUNvbmZpZyAmJlxuICAgICAgWydyZXZlcnNlZCcsICdzdGVwcyddLnNvbWUoXG4gICAgICAgIGtleSA9PlxuICAgICAgICAgIG5ld0NvbmZpZy5jb2xvclJhbmdlQ29uZmlnLmhhc093blByb3BlcnR5KGtleSkgJiZcbiAgICAgICAgICBuZXdDb25maWcuY29sb3JSYW5nZUNvbmZpZ1trZXldICE9PVxuICAgICAgICAgICAgKHByZXZpb3VzW3Byb3BdIHx8IERFRkFVTFRfQ09MT1JfVUkpLmNvbG9yUmFuZ2VDb25maWdba2V5XVxuICAgICAgKTtcbiAgICBpZiAoIXNob3VsZFVwZGF0ZSkgcmV0dXJuO1xuXG4gICAgY29uc3Qge2NvbG9yVUksIHZpc0NvbmZpZ30gPSB0aGlzLmNvbmZpZztcbiAgICBjb25zdCB7c3RlcHMsIHJldmVyc2VkfSA9IGNvbG9yVUlbcHJvcF0uY29sb3JSYW5nZUNvbmZpZztcbiAgICBjb25zdCBjb2xvclJhbmdlID0gdmlzQ29uZmlnW3Byb3BdO1xuICAgIC8vIGZpbmQgYmFzZWQgb24gc3RlcCBvciByZXZlcnNlZFxuICAgIGxldCB1cGRhdGU7XG4gICAgaWYgKG5ld0NvbmZpZy5jb2xvclJhbmdlQ29uZmlnLmhhc093blByb3BlcnR5KCdzdGVwcycpKSB7XG4gICAgICBjb25zdCBncm91cCA9IGdldENvbG9yR3JvdXBCeU5hbWUoY29sb3JSYW5nZSk7XG5cbiAgICAgIGlmIChncm91cCkge1xuICAgICAgICBjb25zdCBzYW1lR3JvdXAgPSBDT0xPUl9SQU5HRVMuZmlsdGVyKGNyID0+IGdldENvbG9yR3JvdXBCeU5hbWUoY3IpID09PSBncm91cCk7XG5cbiAgICAgICAgdXBkYXRlID0gc2FtZUdyb3VwLmZpbmQoY3IgPT4gY3IuY29sb3JzLmxlbmd0aCA9PT0gc3RlcHMpO1xuXG4gICAgICAgIGlmICh1cGRhdGUgJiYgY29sb3JSYW5nZS5yZXZlcnNlZCkge1xuICAgICAgICAgIHVwZGF0ZSA9IHJldmVyc2VDb2xvclJhbmdlKHRydWUsIHVwZGF0ZSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodXBkYXRlICYmIGNvbG9yUmFuZ2UuY29sb3JNYXApIHtcbiAgICAgICAgICB1cGRhdGUgPSB0aGlzLnVwZGF0ZUNvbG9yTWFwKHByb3AsIGNvbG9yUmFuZ2UuY29sb3JNYXAsIHVwZGF0ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAobmV3Q29uZmlnLmNvbG9yUmFuZ2VDb25maWcuaGFzT3duUHJvcGVydHkoJ3JldmVyc2VkJykpIHtcbiAgICAgIHVwZGF0ZSA9IHJldmVyc2VDb2xvclJhbmdlKHJldmVyc2VkLCB1cGRhdGUgfHwgY29sb3JSYW5nZSk7XG4gICAgfVxuXG4gICAgaWYgKHVwZGF0ZSkge1xuICAgICAgdGhpcy51cGRhdGVMYXllclZpc0NvbmZpZyh7W3Byb3BdOiB1cGRhdGV9KTtcbiAgICB9XG4gIH1cblxuICB1cGRhdGVDb2xvck1hcChwcm9wLCBjb2xvck1hcCwgY29sb3JSYW5nZSkge1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBjb25zdCB7ZmllbGQsIGRvbWFpbn0gPSBPYmplY3QudmFsdWVzKHRoaXMudmlzdWFsQ2hhbm5lbHMpLmZpbmQodmFsdWUgPT4gdmFsdWUucmFuZ2UgPT09IHByb3ApO1xuICAgIGNvbnN0IHR5cGUgPSB0aGlzLmNvbmZpZ1tmaWVsZF0/LnR5cGU7XG5cbiAgICBpZiAodHlwZSA9PT0gJ3N0cmluZycgfHwgdHlwZSA9PT0gJ2Jvb2xlYW4nIHx8IHR5cGUgPT09ICdkYXRlJykge1xuICAgICAgcmV0dXJuIHRoaXMudXBkYXRlQ2F0ZWdvcnlDb2xvck1hcChjb2xvck1hcCwgdGhpcy5jb25maWdbZG9tYWluXSwgY29sb3JSYW5nZSk7XG4gICAgfVxuXG4gICAgLy8gSWYgbm8gdHlwZSBvciB0eXBlIGlzIG5vdCBzdHJpbmcsIGJvb2xlYW4gb3IgZGF0ZVxuICAgIHJldHVybiB0aGlzLnVwZGF0ZU51bWVyaWNDb2xvck1hcChjb2xvck1hcCwgdGhpcy5jb25maWdbZG9tYWluXSwgY29sb3JSYW5nZSk7XG4gIH1cblxuICB1cGRhdGVDYXRlZ29yeUNvbG9yTWFwKGNvbG9yTWFwLCBkb21haW4sIGNvbG9yUmFuZ2UpIHtcbiAgICBjb25zdCBjb2xvcnMgPSBjb2xvclJhbmdlLmNvbG9ycztcbiAgICBjb25zdCBhc3NpZ25lZENhdGVnb3JpZXMgPSBbXTtcbiAgICBjb25zdCBuZXdDb2xvck1hcCA9IGNvbG9yTWFwLnNsaWNlKDAsIGNvbG9ycy5sZW5ndGgpLm1hcCgoY01hcCwgaW5kZXgpID0+IHtcbiAgICAgIGFzc2lnbmVkQ2F0ZWdvcmllcy5wdXNoKGNNYXBbMF0pO1xuICAgICAgcmV0dXJuIFtjTWFwWzBdLCBjb2xvcnNbaW5kZXhdXTtcbiAgICB9KTtcbiAgICBjb25zdCB1bmFzc2lnbmVkQ29sb3JzID0gY29sb3JzLnNsaWNlKG5ld0NvbG9yTWFwLmxlbmd0aCwgY29sb3JzLmxlbmd0aCk7XG5cbiAgICBmb3IgKGNvbnN0IGNvbG9yIG9mIHVuYXNzaWduZWRDb2xvcnMpIHtcbiAgICAgIGNvbnN0IGNhdGVnb3J5ID0gZG9tYWluLmZpbmQoZCA9PiAhYXNzaWduZWRDYXRlZ29yaWVzLmluY2x1ZGVzKGQpKTtcbiAgICAgIGlmICghY2F0ZWdvcnkpIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBhc3NpZ25lZENhdGVnb3JpZXMucHVzaChjYXRlZ29yeSk7XG4gICAgICBuZXdDb2xvck1hcC5wdXNoKFtjYXRlZ29yeSwgY29sb3JdKTtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLmNvbG9yUmFuZ2UsXG4gICAgICBjb2xvck1hcDogbmV3Q29sb3JNYXBcbiAgICB9O1xuICB9XG5cbiAgdXBkYXRlTnVtZXJpY0NvbG9yTWFwKGNvbG9yTWFwLCBkb21haW4sIHVwZGF0ZSkge1xuICAgIGNvbnN0IGNvbG9ycyA9IHVwZGF0ZS5jb2xvcnM7XG4gICAgbGV0IG5ld0NvbG9yTWFwID0gY29sb3JNYXAuc2xpY2UoMCwgY29sb3JzLmxlbmd0aCk7XG5cbiAgICBuZXdDb2xvck1hcCA9IG5ld0NvbG9yTWFwLm1hcCgoY01hcCwgaW5kZXgpID0+IHtcbiAgICAgIGNvbnN0IHZhbHVlID0gaW5kZXggPT09IG5ld0NvbG9yTWFwLmxlbmd0aCAtIDEgPyBudWxsIDogY01hcFswXTtcbiAgICAgIHJldHVybiBbdmFsdWUsIGNvbG9yc1tpbmRleF1dO1xuICAgIH0pO1xuICAgIGNvbnN0IHVuYXNzaWduZWRDb2xvcnMgPSBjb2xvcnMuc2xpY2UobmV3Q29sb3JNYXAubGVuZ3RoLCBjb2xvcnMubGVuZ3RoKTtcblxuICAgIGlmICh1bmFzc2lnbmVkQ29sb3JzLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IGNvbG9yTWFwVmFsdWVzID0gY29sb3JNYXAubWFwKGMgPT4gY1swXSkuZmlsdGVyKGMgPT4gdHlwZW9mIGMgPT09ICdudW1iZXInKTtcbiAgICAgIGNvbnN0IG1heFZhbHVlID0gTWF0aC5tYXgoLi4uY29sb3JNYXBWYWx1ZXMsIGRvbWFpbltkb21haW4ubGVuZ3RoIC0gMV0pO1xuICAgICAgY29uc3QgcHJldlZhbHVlID0gbmV3Q29sb3JNYXBbbmV3Q29sb3JNYXAubGVuZ3RoIC0gMl1bMF07XG4gICAgICBjb25zdCBzdGVwID0gKG1heFZhbHVlIC0gcHJldlZhbHVlKSAvICh1bmFzc2lnbmVkQ29sb3JzLmxlbmd0aCArIDEpO1xuICAgICAgbmV3Q29sb3JNYXBbbmV3Q29sb3JNYXAubGVuZ3RoIC0gMV1bMF0gPSBwcmV2VmFsdWUgKyBzdGVwO1xuXG4gICAgICBmb3IgKGNvbnN0IFtpLCBjb2xvcl0gb2YgdW5hc3NpZ25lZENvbG9ycy5lbnRyaWVzKCkpIHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSBpID09PSB1bmFzc2lnbmVkQ29sb3JzLmxlbmd0aCAtIDEgPyBudWxsIDogcHJldlZhbHVlICsgKHN0ZXAgKiAoaSArIDIpKTtcbiAgICAgICAgbmV3Q29sb3JNYXAucHVzaChbdmFsdWUsIGNvbG9yXSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICAuLi51cGRhdGUsXG4gICAgICBjb2xvck1hcDogbmV3Q29sb3JNYXBcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIHdoZXRoZXIgbGF5ZXIgaGFzIGFsbCBjb2x1bW5zXG4gICAqIEByZXR1cm5zIHtib29sZWFufSB5ZXMgb3Igbm9cbiAgICovXG4gIGhhc0FsbENvbHVtbnMoKSB7XG4gICAgY29uc3Qge2NvbHVtbnN9ID0gdGhpcy5jb25maWc7XG4gICAgcmV0dXJuIChcbiAgICAgIChjb2x1bW5zICYmXG4gICAgICBPYmplY3QudmFsdWVzKGNvbHVtbnMpLmV2ZXJ5KHYgPT4ge1xuICAgICAgICByZXR1cm4gQm9vbGVhbih2Lm9wdGlvbmFsIHx8ICh2LnZhbHVlICYmIHYuZmllbGRJZHggPiAtMSkpO1xuICAgICAgfSkpXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVjayB3aGV0aGVyIGxheWVyIGhhcyBkYXRhXG4gICAqXG4gICAqIEBwYXJhbSB7QXJyYXkgfCBPYmplY3R9IGxheWVyRGF0YVxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0geWVzIG9yIG5vXG4gICAqL1xuICBoYXNMYXllckRhdGEobGF5ZXJEYXRhKSB7XG4gICAgaWYgKCFsYXllckRhdGEpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIEJvb2xlYW4obGF5ZXJEYXRhLmRhdGEgJiYgbGF5ZXJEYXRhLmRhdGEubGVuZ3RoKTtcbiAgfVxuXG4gIGlzVmFsaWRUb1NhdmUoKSB7XG4gICAgcmV0dXJuIHRoaXMudHlwZSAmJiB0aGlzLmhhc0FsbENvbHVtbnMoKTtcbiAgfVxuXG4gIHNob3VsZFJlbmRlckxheWVyKGRhdGEpIHtcbiAgICByZXR1cm4gKFxuICAgICAgKHRoaXMudHlwZSAmJlxuICAgICAgdGhpcy5oYXNBbGxDb2x1bW5zKCkgJiZcbiAgICAgIHRoaXMuaGFzTGF5ZXJEYXRhKGRhdGEpICYmXG4gICAgICB0eXBlb2YgdGhpcy5yZW5kZXJMYXllciA9PT0gJ2Z1bmN0aW9uJylcbiAgICApO1xuICB9XG5cbiAgZ2V0Q29sb3JTY2FsZShjb2xvclNjYWxlLCBjb2xvckRvbWFpbiwgY29sb3JSYW5nZSkge1xuICAgIGlmIChBcnJheS5pc0FycmF5KGNvbG9yUmFuZ2UuY29sb3JNYXApKSB7XG4gICAgICBjb25zdCBjTWFwID0gbmV3IE1hcCgpO1xuICAgICAgY29sb3JSYW5nZS5jb2xvck1hcC5mb3JFYWNoKChbaywgdl0pID0+IHtcbiAgICAgICAgY01hcC5zZXQoaywgdHlwZW9mIHYgPT09ICdzdHJpbmcnID8gaGV4VG9SZ2IodikgOiB2KTtcbiAgICAgIH0pO1xuXG4gICAgICAvLyBAdHMtaWdub3JlIGQzIHNjYWxlXG4gICAgICBjb25zdCBzY2FsZSA9IFNDQUxFX0ZVTkNbY29sb3JTY2FsZV0oKVxuICAgICAgICAuZG9tYWluKEFycmF5LmZyb20oY01hcC5rZXlzKCkpKVxuICAgICAgICAucmFuZ2UoQXJyYXkuZnJvbShjTWFwLnZhbHVlcygpKSlcbiAgICAgICAgLnVua25vd24oVU5LTk9XTl9DT0xPUik7XG4gICAgICByZXR1cm4gc2NhbGU7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuZ2V0VmlzQ2hhbm5lbFNjYWxlKGNvbG9yU2NhbGUsIGNvbG9yRG9tYWluLCBjb2xvclJhbmdlLmNvbG9ycy5tYXAoaGV4VG9SZ2IpKTtcbiAgfVxuXG4gIGdldEN1c3RvbU1hcmtlcnNTY2FsZShyYW5nZSkge1xuICAgIGxldCB1bmtub3duVmFsdWUgPSBGQUxMQkFDS19JQ09OO1xuICAgIGlmICghcmFuZ2UpIHtcbiAgICAgIHJldHVybiAoKSA9PiB1bmtub3duVmFsdWU7XG4gICAgfVxuXG4gICAgY29uc3QgbWFwcGluZyA9IG5ldyBNYXAoKTtcblxuICAgIGlmIChyYW5nZS5vdGhlcnNNYXJrZXIpIHtcbiAgICAgIHVua25vd25WYWx1ZSA9IHJhbmdlLm90aGVyc01hcmtlcjtcbiAgICB9XG4gICAgZm9yIChjb25zdCB7dmFsdWUsIG1hcmtlclVybH0gb2YgcmFuZ2UubWFya2VyTWFwKSB7XG4gICAgICBpZiAobWFya2VyVXJsKSB7XG4gICAgICAgIG1hcHBpbmcuc2V0KHZhbHVlLCBtYXJrZXJVcmwpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEB0cy1pZ25vcmUgZDMgc2NhbGVcbiAgICBjb25zdCBzY2FsZSA9IHNjYWxlT3JkaW5hbCgpXG4gICAgICAuZG9tYWluKEFycmF5LmZyb20obWFwcGluZy5rZXlzKCkpKVxuICAgICAgLnJhbmdlKEFycmF5LmZyb20obWFwcGluZy52YWx1ZXMoKSkpXG4gICAgICAudW5rbm93bih1bmtub3duVmFsdWUpO1xuICAgIHJldHVybiBzY2FsZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNYXBwaW5nIGZyb20gdmlzdWFsIGNoYW5uZWxzIHRvIGRlY2suZ2wgYWNjZXNvcnNcbiAgICogQHBhcmFtIHtPYmplY3R9IHBhcmFtIFBhcmFtZXRlcnNcbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gcGFyYW0uZGF0YUFjY2Vzc29yIEFjY2VzcyBrZXBsZXIuZ2wgbGF5ZXIgZGF0YSBmcm9tIGRlY2suZ2wgbGF5ZXJcbiAgICogQHBhcmFtIHtpbXBvcnQoJ3V0aWxzL3RhYmxlLXV0aWxzL2RhdGEtY29udGFpbmVyLWludGVyZmFjZScpLkRhdGFDb250YWluZXJJbnRlcmZhY2V9IHBhcmFtLmRhdGFDb250YWluZXIgRGF0YUNvbnRhaW5lciB0byB1c2UgdXNlIHdpdGggZGF0YUFjY2Vzc29yXG4gICAqIEByZXR1cm4ge09iamVjdH0gYXR0cmlidXRlQWNjZXNzb3JzIC0gZGVjay5nbCBsYXllciBhdHRyaWJ1dGUgYWNjZXNzb3JzXG4gICAqL1xuICBnZXRBdHRyaWJ1dGVBY2Nlc3NvcnMoe2RhdGFBY2Nlc3NvciA9IGRlZmF1bHREYXRhQWNjZXNzb3IsIGRhdGFDb250YWluZXJ9KSB7XG4gICAgY29uc3QgYXR0cmlidXRlQWNjZXNzb3JzID0ge307XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgY29tcGxleGl0eVxuICAgIE9iamVjdC5rZXlzKHRoaXMudmlzdWFsQ2hhbm5lbHMpLmZvckVhY2goY2hhbm5lbCA9PiB7XG4gICAgICBjb25zdCB7XG4gICAgICAgIGZpZWxkLFxuICAgICAgICBmaXhlZCxcbiAgICAgICAgc2NhbGUsXG4gICAgICAgIGRvbWFpbixcbiAgICAgICAgcmFuZ2UsXG4gICAgICAgIGFjY2Vzc29yLFxuICAgICAgICBkZWZhdWx0VmFsdWUsXG4gICAgICAgIGdldEF0dHJpYnV0ZVZhbHVlLFxuICAgICAgICBudWxsVmFsdWUsXG4gICAgICAgIGNoYW5uZWxTY2FsZVR5cGUsXG4gICAgICAgIGFnZ3JlZ2F0aW9uXG4gICAgICB9ID0gdGhpcy52aXN1YWxDaGFubmVsc1tjaGFubmVsXTtcblxuICAgICAgY29uc3Qgc2hvdWxkR2V0U2NhbGUgPSBCb29sZWFuKFxuICAgICAgICAoc2NhbGUgfHwgY2hhbm5lbFNjYWxlVHlwZSA9PT0gQ0hBTk5FTF9TQ0FMRVMuaWRlbnRpdHkpICYmIHRoaXMuY29uZmlnW2ZpZWxkXVxuICAgICAgKTtcblxuICAgICAgaWYgKHNob3VsZEdldFNjYWxlKSB7XG4gICAgICAgIGNvbnN0IGFyZ3MgPSBbdGhpcy5jb25maWdbc2NhbGVdLCB0aGlzLmNvbmZpZ1tkb21haW5dLCB0aGlzLmNvbmZpZy52aXNDb25maWdbcmFuZ2VdXTtcbiAgICAgICAgY29uc3QgaXNGaXhlZCA9IGZpeGVkICYmIHRoaXMuY29uZmlnLnZpc0NvbmZpZ1tmaXhlZF07XG4gICAgICAgIC8vIEl0J3MgaW1wb3J0YW50IHRvIGRlY2xhcmUgYXMgY29uc3QgYWxsIHRoZSBwYXJhbWV0ZXJzIHRoYXQgd2UgYXJlIGdvaW5nIHRvIGJlIHVzZSBpbiB0aGUgZ2V0RW5jb2RlZENoYW5uZWxWYWx1ZSBjYWxsXG4gICAgICAgIC8vIG90aGVyd2lzZSwgdGhlIG9sZExheWVyRGF0YSBwYXJhbWV0ZXIgaW4gZm9ybWF0TGF5ZXJEYXRhIG1ldGhvZCB3aWxsIGJlIHdyb25nICh5b3UgY2FuIGNoZWNrIHRoZSBmb3JtYXRMYXllckRhdGEgVGlsZUxheWVyIG1ldGhvZCBpbiBCdWlsZGVyIGFzIGV4YW1wbGUpXG4gICAgICAgIGNvbnN0IGZpZWxkQ29uZmlnID0gdGhpcy5jb25maWdbZmllbGRdO1xuICAgICAgICBjb25zdCBhZ2dyZWdhdGlvblZhbHVlID0gdGhpcy5jb25maWcudmlzQ29uZmlnW2FnZ3JlZ2F0aW9uXTtcblxuICAgICAgICBjb25zdCBzY2FsZUZ1bmN0aW9uID1cbiAgICAgICAgICBjaGFubmVsU2NhbGVUeXBlID09PSBDSEFOTkVMX1NDQUxFUy5pZGVudGl0eVxuICAgICAgICAgICAgPyBzY2FsZUlkZW50aXR5XG4gICAgICAgICAgICA6IGNoYW5uZWxTY2FsZVR5cGUgPT09IENIQU5ORUxfU0NBTEVTLmNvbG9yXG4gICAgICAgICAgICA/IHRoaXMuZ2V0Q29sb3JTY2FsZSguLi5hcmdzKVxuICAgICAgICAgICAgOiBjaGFubmVsU2NhbGVUeXBlID09PSBDSEFOTkVMX1NDQUxFUy5jdXN0b21NYXJrZXJcbiAgICAgICAgICAgID8gdGhpcy5nZXRDdXN0b21NYXJrZXJzU2NhbGUodGhpcy5jb25maWcudmlzQ29uZmlnW3JhbmdlXSlcbiAgICAgICAgICAgIDogdGhpcy5nZXRWaXNDaGFubmVsU2NhbGUoLi4uYXJncywgaXNGaXhlZCk7XG5cbiAgICAgICAgYXR0cmlidXRlQWNjZXNzb3JzW2FjY2Vzc29yXSA9IGQgPT5cbiAgICAgICAgICB0aGlzLmdldEVuY29kZWRDaGFubmVsVmFsdWUoXG4gICAgICAgICAgICBzY2FsZUZ1bmN0aW9uLFxuICAgICAgICAgICAgZGF0YUFjY2Vzc29yKGRhdGFDb250YWluZXIpKGQpLFxuICAgICAgICAgICAgZmllbGRDb25maWcsXG4gICAgICAgICAgICBhZ2dyZWdhdGlvblZhbHVlLFxuICAgICAgICAgICAgbnVsbFZhbHVlXG4gICAgICAgICAgKTtcbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGdldEF0dHJpYnV0ZVZhbHVlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIGF0dHJpYnV0ZUFjY2Vzc29yc1thY2Nlc3Nvcl0gPSBnZXRBdHRyaWJ1dGVWYWx1ZSh0aGlzLmNvbmZpZyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhdHRyaWJ1dGVBY2Nlc3NvcnNbYWNjZXNzb3JdID1cbiAgICAgICAgICB0eXBlb2YgZGVmYXVsdFZhbHVlID09PSAnZnVuY3Rpb24nID8gZGVmYXVsdFZhbHVlKHRoaXMuY29uZmlnKSA6IGRlZmF1bHRWYWx1ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKCEoYWNjZXNzb3IgaW4gYXR0cmlidXRlQWNjZXNzb3JzKSkge1xuICAgICAgICBDb25zb2xlLndhcm4oYEZhaWxlZCB0byBwcm92aWRlIGFjY2Vzc29yIGZ1bmN0aW9uIGZvciAke2FjY2Vzc29yIHx8IGNoYW5uZWx9YCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gYXR0cmlidXRlQWNjZXNzb3JzO1xuICB9XG5cbiAgZ2V0VmlzQ2hhbm5lbFNjYWxlKHNjYWxlLCBkb21haW4sIHJhbmdlLCBmaXhlZCkge1xuICAgIGlmIChzY2FsZSA9PT0gU0NBTEVfVFlQRVMub3JkaW5hbCkge1xuICAgICAgLy8gQHRzLWlnbm9yZSBkMy1zY2FsZSB0eXBlXG4gICAgICByZXR1cm4gU0NBTEVfRlVOQ1tzY2FsZV0oKVxuICAgICAgICAuZG9tYWluKGRvbWFpbi5zbGljZSgwLCByYW5nZS5sZW5ndGgpKVxuICAgICAgICAucmFuZ2UocmFuZ2UpXG4gICAgICAgIC51bmtub3duKFVOS05PV05fQ09MT1IpO1xuICAgIH1cblxuICAgIC8vIEB0cy1pZ25vcmUgZDMtc2NhbGUgdHlwZVxuICAgIHJldHVybiBTQ0FMRV9GVU5DW2ZpeGVkID8gJ2xpbmVhcicgOiBzY2FsZV0oKVxuICAgICAgLmRvbWFpbihkb21haW4pXG4gICAgICAucmFuZ2UoZml4ZWQgPyBkb21haW4gOiByYW5nZSk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGxvbmdpdHVkZSBhbmQgbGF0aXR1ZGUgYm91bmRzIG9mIHRoZSBkYXRhLlxuICAgKiBAcGFyYW0ge2ltcG9ydCgndXRpbHMvdGFibGUtdXRpbHMvZGF0YS1jb250YWluZXItaW50ZXJmYWNlJykuRGF0YUNvbnRhaW5lckludGVyZmFjZX0gZGF0YUNvbnRhaW5lciBEYXRhQ29udGFpbmVyIHRvIGNhbGN1bGF0ZSBib3VuZHMgZm9yLlxuICAgKiBAcGFyYW0geyhkOiB7aW5kZXg6IG51bWJlcn0sIGRjOiBpbXBvcnQoJ3V0aWxzL3RhYmxlLXV0aWxzL2RhdGEtY29udGFpbmVyLWludGVyZmFjZScpLkRhdGFDb250YWluZXJJbnRlcmZhY2UpID0+IG51bWJlcltdfSBnZXRQb3NpdGlvbiBBY2Nlc3Mga2VwbGVyLmdsIGxheWVyIGRhdGEgZnJvbSBkZWNrLmdsIGxheWVyXG4gICAqIEByZXR1cm4ge251bWJlcltdfG51bGx9IGJvdW5kcyBvZiB0aGUgZGF0YS5cbiAgICovXG4gIGdldFBvaW50c0JvdW5kcyhkYXRhQ29udGFpbmVyLCBnZXRQb3NpdGlvbikge1xuICAgIC8vIG5vIG5lZWQgdG8gbG9vcCB0aHJvdWdoIHRoZSBlbnRpcmUgZGF0YXNldFxuICAgIC8vIGdldCBhIHNhbXBsZSBvZiBkYXRhIHRvIGNhbGN1bGF0ZSBib3VuZHNcbiAgICBjb25zdCBzYW1wbGVEYXRhID1cbiAgICAgIGRhdGFDb250YWluZXIubnVtUm93cygpID4gTUFYX1NBTVBMRV9TSVpFXG4gICAgICAgID8gZ2V0U2FtcGxlRGF0YShkYXRhQ29udGFpbmVyLCBNQVhfU0FNUExFX1NJWkUpXG4gICAgICAgIDogZGF0YUNvbnRhaW5lcjtcblxuICAgIGNvbnN0IHBvaW50cyA9IHNhbXBsZURhdGEubWFwSW5kZXgoZ2V0UG9zaXRpb24pO1xuXG4gICAgY29uc3QgbGF0Qm91bmRzID0gZ2V0TGF0TG5nQm91bmRzKHBvaW50cywgMSwgWy05MCwgOTBdKTtcbiAgICBjb25zdCBsbmdCb3VuZHMgPSBnZXRMYXRMbmdCb3VuZHMocG9pbnRzLCAwLCBbLTE4MCwgMTgwXSk7XG5cbiAgICBpZiAoIWxhdEJvdW5kcyB8fCAhbG5nQm91bmRzKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4gW2xuZ0JvdW5kc1swXSwgbGF0Qm91bmRzWzBdLCBsbmdCb3VuZHNbMV0sIGxhdEJvdW5kc1sxXV07XG4gIH1cblxuICBnZXRDaGFuZ2VkVHJpZ2dlcnMoZGF0YVVwZGF0ZVRyaWdnZXJzKSB7XG4gICAgY29uc3QgdHJpZ2dlckNoYW5nZWQgPSBkaWZmVXBkYXRlVHJpZ2dlcnMoZGF0YVVwZGF0ZVRyaWdnZXJzLCB0aGlzLl9vbGREYXRhVXBkYXRlVHJpZ2dlcnMpO1xuICAgIHRoaXMuX29sZERhdGFVcGRhdGVUcmlnZ2VycyA9IGRhdGFVcGRhdGVUcmlnZ2VycztcblxuICAgIHJldHVybiB0cmlnZ2VyQ2hhbmdlZDtcbiAgfVxuXG4gIGdldEVuY29kZWRDaGFubmVsVmFsdWUoXG4gICAgc2NhbGUsXG4gICAgZGF0YSxcbiAgICBmaWVsZCxcbiAgICAvLyBJbiBidWlsZGVyIHdlIG92ZXJ3cml0ZSB0aGUgZ2V0VmFsdWUgZnVuY3Rpb24gYW5kIHdlIHVzZSB0aGUgX2FnZ3JlZ2F0aW9uIHBhcmFtZXRlciBpbiBzcGF0aWFsIGluZGV4IGxheWVycyBhcyB0aGUgUXVhZGtleUxheWVyLlxuICAgIF9hZ2dyZWdhdGlvbixcbiAgICBudWxsVmFsdWUgPSBOT19WQUxVRV9DT0xPUixcbiAgICBnZXRWYWx1ZSA9IGRlZmF1bHRHZXRGaWVsZFZhbHVlXG4gICkge1xuICAgIGNvbnN0IHt0eXBlfSA9IGZpZWxkO1xuICAgIGNvbnN0IHZhbHVlID0gZ2V0VmFsdWUoZmllbGQsIGRhdGEpO1xuXG4gICAgaWYgKCFub3ROdWxsb3JVbmRlZmluZWQodmFsdWUpKSB7XG4gICAgICByZXR1cm4gbnVsbFZhbHVlO1xuICAgIH1cblxuICAgIGxldCBhdHRyaWJ1dGVWYWx1ZTtcbiAgICBpZiAodHlwZSA9PT0gQUxMX0ZJRUxEX1RZUEVTLnRpbWVzdGFtcCkge1xuICAgICAgLy8gc2hvdWxkbid0IG5lZWQgdG8gY29udmVydCBoZXJlXG4gICAgICAvLyBzY2FsZSBGdW5jdGlvbiBzaG91bGQgdGFrZSBjYXJlIG9mIGl0XG4gICAgICBhdHRyaWJ1dGVWYWx1ZSA9IHNjYWxlKG5ldyBEYXRlKHZhbHVlKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGF0dHJpYnV0ZVZhbHVlID0gc2NhbGUodmFsdWUpO1xuICAgIH1cblxuICAgIGlmICghbm90TnVsbG9yVW5kZWZpbmVkKGF0dHJpYnV0ZVZhbHVlKSkge1xuICAgICAgYXR0cmlidXRlVmFsdWUgPSBudWxsVmFsdWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIGF0dHJpYnV0ZVZhbHVlO1xuICB9XG5cbiAgdXBkYXRlTWV0YShtZXRhKSB7XG4gICAgdGhpcy5tZXRhID0gey4uLnRoaXMubWV0YSwgLi4ubWV0YX07XG4gIH1cblxuICBnZXREYXRhVXBkYXRlVHJpZ2dlcnMoe2ZpbHRlcmVkSW5kZXgsIGlkLCBhbGxEYXRhfSkge1xuICAgIGNvbnN0IHtjb2x1bW5zfSA9IHRoaXMuY29uZmlnO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGdldERhdGE6IHtkYXRhc2V0SWQ6IGlkLCBhbGxEYXRhLCBjb2x1bW5zLCBmaWx0ZXJlZEluZGV4fSxcbiAgICAgIGdldE1ldGE6IHtkYXRhc2V0SWQ6IGlkLCBhbGxEYXRhLCBjb2x1bW5zfSxcbiAgICAgIC4uLih0aGlzLmNvbmZpZy50ZXh0TGFiZWwgfHwgW10pLnJlZHVjZShcbiAgICAgICAgKGFjY3UsIHRsLCBpKSA9PiAoe1xuICAgICAgICAgIC4uLmFjY3UsXG4gICAgICAgICAgW2BnZXRMYWJlbENoYXJhY3RlclNldC0ke2l9YF06IHRsLmZpZWxkID8gdGwuZmllbGQubmFtZSA6IG51bGxcbiAgICAgICAgfSksXG4gICAgICAgIHt9XG4gICAgICApXG4gICAgfTtcbiAgfVxuXG4gIHVwZGF0ZURhdGEoZGF0YXNldHMsIG9sZExheWVyRGF0YSkge1xuICAgIGlmICghdGhpcy5jb25maWcuZGF0YUlkKSB7XG4gICAgICByZXR1cm4ge307XG4gICAgfVxuICAgIGNvbnN0IGxheWVyRGF0YXNldCA9IGRhdGFzZXRzW3RoaXMuY29uZmlnLmRhdGFJZF07XG4gICAgY29uc3Qge2RhdGFDb250YWluZXJ9ID0gbGF5ZXJEYXRhc2V0O1xuXG4gICAgdGhpcy51cGRhdGVWaXN1YWxDaGFubmVsRmllbGRzKGxheWVyRGF0YXNldCk7XG5cbiAgICBjb25zdCBnZXRQb3NpdGlvbiA9IHRoaXMuZ2V0UG9zaXRpb25BY2Nlc3NvcihkYXRhQ29udGFpbmVyKTtcbiAgICBjb25zdCBkYXRhVXBkYXRlVHJpZ2dlcnMgPSB0aGlzLmdldERhdGFVcGRhdGVUcmlnZ2VycyhsYXllckRhdGFzZXQpO1xuICAgIGNvbnN0IHRyaWdnZXJDaGFuZ2VkID0gdGhpcy5nZXRDaGFuZ2VkVHJpZ2dlcnMoZGF0YVVwZGF0ZVRyaWdnZXJzKTtcblxuICAgIGlmICh0cmlnZ2VyQ2hhbmdlZC5nZXRNZXRhKSB7XG4gICAgICB0aGlzLnVwZGF0ZUxheWVyTWV0YShkYXRhQ29udGFpbmVyLCBnZXRQb3NpdGlvbik7XG4gICAgfVxuXG4gICAgbGV0IGRhdGEgPSBbXTtcblxuICAgIGlmICghdHJpZ2dlckNoYW5nZWQuZ2V0RGF0YSAmJiBvbGRMYXllckRhdGEgJiYgb2xkTGF5ZXJEYXRhLmRhdGEpIHtcbiAgICAgIC8vIHNhbWUgZGF0YVxuICAgICAgZGF0YSA9IG9sZExheWVyRGF0YS5kYXRhO1xuICAgIH0gZWxzZSB7XG4gICAgICBkYXRhID0gdGhpcy5jYWxjdWxhdGVEYXRhQXR0cmlidXRlKGxheWVyRGF0YXNldCwgZ2V0UG9zaXRpb24pO1xuICAgIH1cblxuICAgIHJldHVybiB7ZGF0YSwgdHJpZ2dlckNoYW5nZWR9O1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSBzdHlsZWQgZmllbGRzIHRvIG1hdGNoIG9uZXMgZnJvbSBuZXcgZGF0YXNldC5cbiAgICpcbiAgICogQHBhcmFtIHtPYmplY3R9IGRhdGFzZXRcbiAgICovXG4gIHVwZGF0ZVZpc3VhbENoYW5uZWxGaWVsZHMoZGF0YXNldCkge1xuICAgIGZvciAoY29uc3Qge2ZpZWxkfSBvZiBPYmplY3QudmFsdWVzKHRoaXMudmlzdWFsQ2hhbm5lbHMpKSB7XG4gICAgICBjb25zdCBvbGRGaWVsZCA9IHRoaXMuY29uZmlnW2ZpZWxkXTtcbiAgICAgIGlmICghb2xkRmllbGQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY29uc3QgbmV3RGF0YVNldEZpZWxkID0gZGF0YXNldC5maWVsZHMuZmluZChmZCA9PiBmZC5uYW1lID09PSBvbGRGaWVsZC5uYW1lKSB8fCBudWxsO1xuICAgICAgdGhpcy51cGRhdGVMYXllckNvbmZpZyh7W2ZpZWxkXTogbmV3RGF0YVNldEZpZWxkfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIGhlbHBlciBmdW5jdGlvbiB0byB1cGRhdGUgb25lIGxheWVyIGRvbWFpbiB3aGVuIHN0YXRlLmRhdGEgY2hhbmdlZFxuICAgKiBpZiBzdGF0ZS5kYXRhIGNoYW5nZSBpcyBkdWUgb3QgdXBkYXRlIGZpbHRlciwgbmV3RmlsZXIgd2lsbCBiZSBwYXNzZWRcbiAgICogY2FsbGVkIGJ5IHVwZGF0ZUFsbExheWVyRG9tYWluRGF0YVxuICAgKiBAcGFyYW0ge09iamVjdH0gZGF0YXNldHNcbiAgICogQHBhcmFtIHtPYmplY3R9IG5ld0ZpbHRlclxuICAgKiBAcmV0dXJucyB7b2JqZWN0fSBsYXllclxuICAgKi9cbiAgdXBkYXRlTGF5ZXJEb21haW4oZGF0YXNldHMsIG5ld0ZpbHRlcikge1xuICAgIGNvbnN0IHRhYmxlID0gdGhpcy5nZXREYXRhc2V0KGRhdGFzZXRzKTtcbiAgICBpZiAoIXRhYmxlKSB7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gICAgT2JqZWN0LnZhbHVlcyh0aGlzLnZpc3VhbENoYW5uZWxzKS5mb3JFYWNoKGNoYW5uZWwgPT4ge1xuICAgICAgY29uc3Qge3NjYWxlfSA9IGNoYW5uZWw7XG4gICAgICBjb25zdCBzY2FsZVR5cGUgPSB0aGlzLmNvbmZpZ1tzY2FsZV07XG4gICAgICAvLyBvcmRpbmFsIGRvbWFpbiBpcyBiYXNlZCBvbiBkYXRhQ29udGFpbmVyLCBpZiBvbmx5IGZpbHRlciBjaGFuZ2VkXG4gICAgICAvLyBubyBuZWVkIHRvIHVwZGF0ZSBvcmRpbmFsIGRvbWFpblxuICAgICAgaWYgKCFuZXdGaWx0ZXIgfHwgc2NhbGVUeXBlICE9PSBTQ0FMRV9UWVBFUy5vcmRpbmFsKSB7XG4gICAgICAgIGNvbnN0IHtkb21haW59ID0gY2hhbm5lbDtcbiAgICAgICAgY29uc3QgdXBkYXRlZERvbWFpbiA9IHRoaXMuY2FsY3VsYXRlTGF5ZXJEb21haW4odGFibGUsIGNoYW5uZWwpO1xuICAgICAgICB0aGlzLnVwZGF0ZUxheWVyQ29uZmlnKHtbZG9tYWluXTogdXBkYXRlZERvbWFpbn0pO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBnZXREYXRhc2V0KGRhdGFzZXRzKSB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnLmRhdGFJZCA/IGRhdGFzZXRzW3RoaXMuY29uZmlnLmRhdGFJZF0gOiBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlIHZpc3VhbCBjaGFubmVsIGZpZWxkIGFuZCBzY2FsZXMgYmFzZWQgb24gc3VwcG9ydGVkIGZpZWxkICYgc2NhbGUgdHlwZVxuICAgKiBAcGFyYW0gY2hhbm5lbFxuICAgKi9cbiAgdmFsaWRhdGVWaXN1YWxDaGFubmVsKGNoYW5uZWwpIHtcbiAgICB0aGlzLnZhbGlkYXRlRmllbGRUeXBlKGNoYW5uZWwpO1xuICAgIHRoaXMudmFsaWRhdGVTY2FsZShjaGFubmVsKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZSBmaWVsZCB0eXBlIGJhc2VkIG9uIGNoYW5uZWxTY2FsZVR5cGVcbiAgICovXG4gIHZhbGlkYXRlRmllbGRUeXBlKGNoYW5uZWwpIHtcbiAgICBjb25zdCB2aXN1YWxDaGFubmVsID0gdGhpcy52aXN1YWxDaGFubmVsc1tjaGFubmVsXTtcbiAgICBjb25zdCB7ZmllbGQsIGNoYW5uZWxTY2FsZVR5cGUsIHN1cHBvcnRlZEZpZWxkVHlwZXN9ID0gdmlzdWFsQ2hhbm5lbDtcblxuICAgIGlmICh0aGlzLmNvbmZpZ1tmaWVsZF0pIHtcbiAgICAgIC8vIGlmIGZpZWxkIGlzIHNlbGVjdGVkLCBjaGVjayBpZiBmaWVsZCB0eXBlIGlzIHN1cHBvcnRlZFxuICAgICAgY29uc3QgY2hhbm5lbFN1cHBvcnRlZEZpZWxkVHlwZXMgPVxuICAgICAgICBzdXBwb3J0ZWRGaWVsZFR5cGVzIHx8IENIQU5ORUxfU0NBTEVfU1VQUE9SVEVEX0ZJRUxEU1tjaGFubmVsU2NhbGVUeXBlXTtcblxuICAgICAgaWYgKCFjaGFubmVsU3VwcG9ydGVkRmllbGRUeXBlcy5pbmNsdWRlcyh0aGlzLmNvbmZpZ1tmaWVsZF0udHlwZSkpIHtcbiAgICAgICAgLy8gZmllbGQgdHlwZSBpcyBub3Qgc3VwcG9ydGVkLCBzZXQgaXQgYmFjayB0byBudWxsXG4gICAgICAgIC8vIHNldCBzY2FsZSBiYWNrIHRvIGRlZmF1bHRcbiAgICAgICAgdGhpcy51cGRhdGVMYXllckNvbmZpZyh7W2ZpZWxkXTogbnVsbH0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZSBzY2FsZSB0eXBlIGJhc2VkIG9uIGFnZ3JlZ2F0aW9uXG4gICAqL1xuICB2YWxpZGF0ZVNjYWxlKGNoYW5uZWwpIHtcbiAgICBjb25zdCB2aXN1YWxDaGFubmVsID0gdGhpcy52aXN1YWxDaGFubmVsc1tjaGFubmVsXTtcbiAgICBjb25zdCB7c2NhbGV9ID0gdmlzdWFsQ2hhbm5lbDtcbiAgICBpZiAoIXNjYWxlKSB7XG4gICAgICAvLyB2aXN1YWxDaGFubmVsIGRvZXNuJ3QgaGF2ZSBzY2FsZVxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBzY2FsZU9wdGlvbnMgPSB0aGlzLmdldFNjYWxlT3B0aW9ucyhjaGFubmVsKTtcbiAgICAvLyBjaGVjayBpZiBjdXJyZW50IHNlbGVjdGVkIHNjYWxlIGlzXG4gICAgLy8gc3VwcG9ydGVkLCBpZiBub3QsIGNoYW5nZSB0byBkZWZhdWx0XG4gICAgaWYgKCFzY2FsZU9wdGlvbnMuaW5jbHVkZXModGhpcy5jb25maWdbc2NhbGVdKSkge1xuICAgICAgdGhpcy51cGRhdGVMYXllckNvbmZpZyh7W3NjYWxlXTogc2NhbGVPcHRpb25zWzBdfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEdldCBzY2FsZSBvcHRpb25zIGJhc2VkIG9uIGN1cnJlbnQgZmllbGRcbiAgICogQHBhcmFtIHtzdHJpbmd9IGNoYW5uZWxcbiAgICogQHJldHVybnMge3N0cmluZ1tdfVxuICAgKi9cbiAgZ2V0U2NhbGVPcHRpb25zKGNoYW5uZWwpIHtcbiAgICBjb25zdCB2aXN1YWxDaGFubmVsID0gdGhpcy52aXN1YWxDaGFubmVsc1tjaGFubmVsXTtcbiAgICBjb25zdCB7ZmllbGQsIHNjYWxlLCBjaGFubmVsU2NhbGVUeXBlfSA9IHZpc3VhbENoYW5uZWw7XG5cbiAgICByZXR1cm4gdGhpcy5jb25maWdbZmllbGRdXG4gICAgICA/IEZJRUxEX09QVFNbdGhpcy5jb25maWdbZmllbGRdLnR5cGVdLnNjYWxlW2NoYW5uZWxTY2FsZVR5cGVdXG4gICAgICA6IFt0aGlzLmdldERlZmF1bHRMYXllckNvbmZpZygpW3NjYWxlXV07XG4gIH1cblxuICB1cGRhdGVMYXllclZpc3VhbENoYW5uZWwoZGF0YXNldCwgY2hhbm5lbCkge1xuICAgIGNvbnN0IHZpc3VhbENoYW5uZWwgPSB0aGlzLnZpc3VhbENoYW5uZWxzW2NoYW5uZWxdO1xuICAgIHRoaXMudmFsaWRhdGVWaXN1YWxDaGFubmVsKGNoYW5uZWwpO1xuICAgIC8vIGNhbGN1bGF0ZSBsYXllciBjaGFubmVsIGRvbWFpblxuICAgIGNvbnN0IHVwZGF0ZWREb21haW4gPSB0aGlzLmNhbGN1bGF0ZUxheWVyRG9tYWluKGRhdGFzZXQsIHZpc3VhbENoYW5uZWwpO1xuICAgIHRoaXMudXBkYXRlTGF5ZXJDb25maWcoe1t2aXN1YWxDaGFubmVsLmRvbWFpbl06IHVwZGF0ZWREb21haW59KTtcbiAgfVxuXG4gIGdldFZpc3VhbENoYW5uZWxVcGRhdGVUcmlnZ2VycygpIHtcbiAgICBjb25zdCB1cGRhdGVUcmlnZ2VycyA9IHt9O1xuICAgIE9iamVjdC52YWx1ZXModGhpcy52aXN1YWxDaGFubmVscykuZm9yRWFjaCh2aXN1YWxDaGFubmVsID0+IHtcbiAgICAgIC8vIGZpZWxkIHJhbmdlIHNjYWxlIGRvbWFpblxuICAgICAgY29uc3Qge2FjY2Vzc29yLCBmaWVsZCwgc2NhbGUsIGRvbWFpbiwgcmFuZ2UsIGRlZmF1bHRWYWx1ZSwgZml4ZWR9ID0gdmlzdWFsQ2hhbm5lbDtcblxuICAgICAgdXBkYXRlVHJpZ2dlcnNbYWNjZXNzb3JdID0ge1xuICAgICAgICBbZmllbGRdOiB0aGlzLmNvbmZpZ1tmaWVsZF0sXG4gICAgICAgIFtzY2FsZV06IHRoaXMuY29uZmlnW3NjYWxlXSxcbiAgICAgICAgW2RvbWFpbl06IHRoaXMuY29uZmlnW2RvbWFpbl0sXG4gICAgICAgIFtyYW5nZV06IHRoaXMuY29uZmlnLnZpc0NvbmZpZ1tyYW5nZV0sXG4gICAgICAgIGRlZmF1bHRWYWx1ZTogdHlwZW9mIGRlZmF1bHRWYWx1ZSA9PT0gJ2Z1bmN0aW9uJyA/IGRlZmF1bHRWYWx1ZSh0aGlzLmNvbmZpZykgOiBkZWZhdWx0VmFsdWUsXG4gICAgICAgIC4uLihmaXhlZCA/IHtbZml4ZWRdOiB0aGlzLmNvbmZpZy52aXNDb25maWdbZml4ZWRdfSA6IHt9KVxuICAgICAgfTtcbiAgICB9KTtcbiAgICByZXR1cm4gdXBkYXRlVHJpZ2dlcnM7XG4gIH1cblxuICBjYWxjdWxhdGVMYXllckRvbWFpbihkYXRhc2V0LCB2aXN1YWxDaGFubmVsKSB7XG4gICAgY29uc3Qge3NjYWxlfSA9IHZpc3VhbENoYW5uZWw7XG4gICAgY29uc3QgZmllbGQgPSB0aGlzLmNvbmZpZ1t2aXN1YWxDaGFubmVsLmZpZWxkXTtcbiAgICBpZiAoIWZpZWxkIHx8ICFzY2FsZSkge1xuICAgICAgLy8gaWYgY29sb3JGaWVsZCBvciBzaXplRmllbGQgd2VyZSBzZXQgYmFjayB0byBudWxsXG4gICAgICByZXR1cm4gZGVmYXVsdERvbWFpbjtcbiAgICB9XG5cbiAgICBjb25zdCBzY2FsZVR5cGUgPSB0aGlzLmNvbmZpZ1tzY2FsZV07XG4gICAgY29uc3QgZGF0YVNldEZpZWxkID0gZGF0YXNldC5maWVsZHMuZmluZChmID0+IGYubmFtZSA9PT0gZmllbGQubmFtZSk7XG4gICAgaWYgKCFzY2FsZVR5cGUgfHwgIWRhdGFTZXRGaWVsZCkge1xuICAgICAgLy8gaWYgbmV3IGRhdGFzZXQgZG9lc24ndCBjb250YWluIHByZXZpb3VzbHkgc2V0IGZpZWxkXG4gICAgICByZXR1cm4gZGVmYXVsdERvbWFpbjtcbiAgICB9XG5cbiAgICByZXR1cm4gZGF0YXNldC5nZXRDb2x1bW5MYXllckRvbWFpbihkYXRhU2V0RmllbGQsIHNjYWxlVHlwZSkgfHwgZGVmYXVsdERvbWFpbjtcbiAgfVxuXG4gIGhhc0hvdmVyZWRPYmplY3Qob2JqZWN0SW5mbykge1xuICAgIHJldHVybiB0aGlzLmlzTGF5ZXJIb3ZlcmVkKG9iamVjdEluZm8pICYmIG9iamVjdEluZm8ub2JqZWN0ID8gb2JqZWN0SW5mby5vYmplY3QgOiBudWxsO1xuICB9XG5cbiAgaXNMYXllckhvdmVyZWQob2JqZWN0SW5mbykge1xuICAgIHJldHVybiBvYmplY3RJbmZvPy5waWNrZWQgJiYgb2JqZWN0SW5mbz8ubGF5ZXI/LnByb3BzPy5pZCA9PT0gdGhpcy5pZDtcbiAgfVxuXG4gIGdldFJhZGl1c1NjYWxlQnlab29tKG1hcFN0YXRlLCBmaXhlZFJhZGl1cykge1xuICAgIGNvbnN0IHJhZGl1c0NoYW5uZWwgPSBPYmplY3QudmFsdWVzKHRoaXMudmlzdWFsQ2hhbm5lbHMpLmZpbmQodmMgPT4gdmMucHJvcGVydHkgPT09ICdyYWRpdXMnKTtcblxuICAgIGlmICghcmFkaXVzQ2hhbm5lbCkge1xuICAgICAgcmV0dXJuIDE7XG4gICAgfVxuXG4gICAgY29uc3QgZmllbGQgPSByYWRpdXNDaGFubmVsLmZpZWxkO1xuICAgIGNvbnN0IGZpeGVkID0gZml4ZWRSYWRpdXMgPT09IHVuZGVmaW5lZCA/IHRoaXMuY29uZmlnLnZpc0NvbmZpZy5maXhlZFJhZGl1cyA6IGZpeGVkUmFkaXVzO1xuICAgIGNvbnN0IHtyYWRpdXN9ID0gdGhpcy5jb25maWcudmlzQ29uZmlnO1xuXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHJldHVybiBmaXhlZCA/IDEgOiAodGhpcy5jb25maWdbZmllbGRdID8gMSA6IHJhZGl1cykgKiB0aGlzLmdldFpvb21GYWN0b3IobWFwU3RhdGUpO1xuICB9XG5cbiAgZ2V0UmFkaXVzU2NhbGUoZml4ZWRSYWRpdXMpIHtcbiAgICBjb25zdCByYWRpdXNDaGFubmVsID0gT2JqZWN0LnZhbHVlcyh0aGlzLnZpc3VhbENoYW5uZWxzKS5maW5kKHZjID0+IHZjLnByb3BlcnR5ID09PSAncmFkaXVzJyk7XG5cbiAgICBpZiAoIXJhZGl1c0NoYW5uZWwpIHtcbiAgICAgIHJldHVybiAxO1xuICAgIH1cblxuICAgIGNvbnN0IGZpZWxkID0gcmFkaXVzQ2hhbm5lbC5maWVsZDtcbiAgICBjb25zdCBmaXhlZCA9IGZpeGVkUmFkaXVzID09PSB1bmRlZmluZWQgPyB0aGlzLmNvbmZpZy52aXNDb25maWcuZml4ZWRSYWRpdXMgOiBmaXhlZFJhZGl1cztcbiAgICBjb25zdCB7cmFkaXVzfSA9IHRoaXMuY29uZmlnLnZpc0NvbmZpZztcblxuICAgIHJldHVybiBmaXhlZCA/IDEgOiAodGhpcy5jb25maWdbZmllbGRdID8gMSA6IHJhZGl1cyk7XG4gIH1cblxuICBnZXRNYXhNYXJrZXJTaXplKCkge1xuICAgIGNvbnN0IHtyYWRpdXNGaWVsZCwgc2l6ZUZpZWxkLCB2aXNDb25maWd9ID0gdGhpcy5jb25maWc7XG4gICAgY29uc3Qge3JhZGl1c1JhbmdlLCByYWRpdXN9ID0gdmlzQ29uZmlnO1xuICAgIGNvbnN0IGZpZWxkID0gcmFkaXVzRmllbGQgfHwgc2l6ZUZpZWxkXG4gICAgcmV0dXJuIE1hdGguY2VpbCgoZmllbGQgJiYgcmFkaXVzUmFuZ2UgPyByYWRpdXNSYW5nZVsxXSA6IHJhZGl1cykpO1xuICB9XG5cbiAgZ2V0UmFkaXVzVW5pdChmaXhlZFJhZGl1cykge1xuICAgIGNvbnN0IHJhZGl1c0NoYW5uZWwgPSBPYmplY3QudmFsdWVzKHRoaXMudmlzdWFsQ2hhbm5lbHMpLmZpbmQodmMgPT4gdmMucHJvcGVydHkgPT09ICdyYWRpdXMnKTtcblxuICAgIGlmICghcmFkaXVzQ2hhbm5lbCkge1xuICAgICAgcmV0dXJuICdwaXhlbHMnO1xuICAgIH1cblxuICAgIGNvbnN0IGZpeGVkID0gZml4ZWRSYWRpdXMgPT09IHVuZGVmaW5lZCA/IHRoaXMuY29uZmlnLnZpc0NvbmZpZy5maXhlZFJhZGl1cyA6IGZpeGVkUmFkaXVzO1xuXG4gICAgcmV0dXJuIGZpeGVkID8gJ21ldGVycycgOiAncGl4ZWxzJztcbiAgfVxuXG4gIHNob3VsZENhbGN1bGF0ZUxheWVyRGF0YShwcm9wcykge1xuICAgIHJldHVybiBwcm9wcy5zb21lKHAgPT4gIXRoaXMubm9uZUxheWVyRGF0YUFmZmVjdGluZ1Byb3BzLmluY2x1ZGVzKHApKTtcbiAgfVxuXG4gIGdldEJydXNoaW5nRXh0ZW5zaW9uUHJvcHMoaW50ZXJhY3Rpb25Db25maWcsIGJydXNoaW5nVGFyZ2V0KSB7XG4gICAgY29uc3Qge2JydXNofSA9IGludGVyYWN0aW9uQ29uZmlnO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIC8vIGJydXNoaW5nXG4gICAgICBhdXRvSGlnaGxpZ2h0OiAhYnJ1c2guZW5hYmxlZCxcbiAgICAgIGJydXNoaW5nUmFkaXVzOiBicnVzaC5jb25maWcuc2l6ZSAqIDEwMDAsXG4gICAgICBicnVzaGluZ1RhcmdldDogYnJ1c2hpbmdUYXJnZXQgfHwgJ3NvdXJjZScsXG4gICAgICBicnVzaGluZ0VuYWJsZWQ6IGJydXNoLmVuYWJsZWRcbiAgICB9O1xuICB9XG5cbiAgZ2V0RGVmYXVsdERlY2tMYXllclByb3BzKHtpZHgsIGdwdUZpbHRlciwgbWFwU3RhdGUsIHZpc2libGUsIG1hc2tQb2x5Z29ufSkge1xuICAgIGNvbnN0IG1hc2tFeHRlbnNpb25Qcm9wcyA9IGdldE1hc2tFeHRlbnNpb25Qcm9wcyhtYXNrUG9seWdvbik7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLm1hc2tFeHRlbnNpb25Qcm9wcyxcbiAgICAgIGlkOiB0aGlzLmlkLFxuICAgICAgaWR4LFxuICAgICAgY29vcmRpbmF0ZVN5c3RlbTogQ09PUkRJTkFURV9TWVNURU0uTE5HTEFULFxuICAgICAgcGlja2FibGU6IHRydWUsXG4gICAgICB3cmFwTG9uZ2l0dWRlOiB0cnVlLFxuICAgICAgcGFyYW1ldGVyczoge2RlcHRoVGVzdDogQm9vbGVhbihtYXBTdGF0ZS5kcmFnUm90YXRlIHx8IHRoaXMuY29uZmlnLnZpc0NvbmZpZy5lbmFibGUzZCl9LFxuICAgICAgaGlkZGVuOiB0aGlzLmNvbmZpZy5oaWRkZW4sXG4gICAgICB2aXNpYmlsaXR5Qnlab29tOiB7XG4gICAgICAgIG1pbjogdGhpcy5jb25maWcudmlzaWJpbGl0eUJ5Wm9vbS5taW4sXG4gICAgICAgIG1heDogdGhpcy5jb25maWcudmlzaWJpbGl0eUJ5Wm9vbS5tYXhcbiAgICAgIH0sXG4gICAgICAvLyB2aXNjb25maWdcbiAgICAgIG9wYWNpdHk6IHRoaXMuY29uZmlnLnZpc0NvbmZpZy5vcGFjaXR5LFxuICAgICAgaGlnaGxpZ2h0Q29sb3I6IHRoaXMuY29uZmlnLmhpZ2hsaWdodENvbG9yLFxuICAgICAgLy8gZGF0YSBmaWx0ZXJpbmdcbiAgICAgIGV4dGVuc2lvbnM6IFtkYXRhRmlsdGVyRXh0ZW5zaW9uLCAuLi5tYXNrRXh0ZW5zaW9uUHJvcHMuZXh0ZW5zaW9uc10sXG4gICAgICBmaWx0ZXJSYW5nZTogZ3B1RmlsdGVyID8gZ3B1RmlsdGVyLmZpbHRlclJhbmdlIDogdW5kZWZpbmVkLFxuICAgICAgLy8gbGF5ZXIgc2hvdWxkIGJlIHZpc2libGUgYW5kIGlmIHNwbGl0TWFwLCBzaG93biBpbiB0byBvbmUgb2YgcGFuZWxcbiAgICAgIHZpc2libGU6IHRoaXMuY29uZmlnLmlzVmlzaWJsZSAmJiB2aXNpYmxlXG4gICAgfTtcbiAgfVxuXG4gIGdldERlZmF1bHRIb3ZlckxheWVyUHJvcHMoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGlkOiBgJHt0aGlzLmlkfS1ob3ZlcmVkYCxcbiAgICAgIHBpY2thYmxlOiBmYWxzZSxcbiAgICAgIHdyYXBMb25naXR1ZGU6IHRydWUsXG4gICAgICBjb29yZGluYXRlU3lzdGVtOiBDT09SRElOQVRFX1NZU1RFTS5MTkdMQVRcbiAgICB9O1xuICB9XG5cbiAgcmVuZGVyVGV4dExhYmVsTGF5ZXIoe2dldFBvc2l0aW9uLCBnZXRQaXhlbE9mZnNldCwgdXBkYXRlVHJpZ2dlcnMsIHNoYXJlZFByb3BzfSwgcmVuZGVyT3B0cykge1xuICAgIGNvbnN0IHtkYXRhLCBtYXBTdGF0ZX0gPSByZW5kZXJPcHRzO1xuICAgIGNvbnN0IHt0ZXh0TGFiZWx9ID0gdGhpcy5jb25maWc7XG5cbiAgICByZXR1cm4gZGF0YS50ZXh0TGFiZWxzLnJlZHVjZSgoYWNjdSwgZCwgaSkgPT4ge1xuICAgICAgaWYgKGQuZ2V0VGV4dCkge1xuICAgICAgICBhY2N1LnB1c2goXG4gICAgICAgICAgbmV3IFRleHRMYXllcih7XG4gICAgICAgICAgICAuLi5zaGFyZWRQcm9wcyxcbiAgICAgICAgICAgIGlkOiBgJHt0aGlzLmlkfS1sYWJlbC0ke3RleHRMYWJlbFtpXS5maWVsZD8ubmFtZX1gLFxuICAgICAgICAgICAgZGF0YTogZGF0YS5kYXRhLFxuICAgICAgICAgICAgZ2V0VGV4dDogZC5nZXRUZXh0LFxuICAgICAgICAgICAgZ2V0UG9zaXRpb24sXG4gICAgICAgICAgICBjaGFyYWN0ZXJTZXQ6IGQuY2hhcmFjdGVyU2V0LFxuICAgICAgICAgICAgZ2V0UGl4ZWxPZmZzZXQ6IGdldFBpeGVsT2Zmc2V0KHRleHRMYWJlbFtpXSksXG4gICAgICAgICAgICBnZXRTaXplOiAxLFxuICAgICAgICAgICAgc2l6ZVNjYWxlOiB0ZXh0TGFiZWxbaV0uc2l6ZSxcbiAgICAgICAgICAgIGdldFRleHRBbmNob3I6IHRleHRMYWJlbFtpXS5hbmNob3IsXG4gICAgICAgICAgICBnZXRBbGlnbm1lbnRCYXNlbGluZTogdGV4dExhYmVsW2ldLmFsaWdubWVudCxcbiAgICAgICAgICAgIGdldENvbG9yOiB0ZXh0TGFiZWxbaV0uY29sb3IsXG4gICAgICAgICAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICAgICAgICAgIC8vIHRleHQgd2lsbCBhbHdheXMgc2hvdyBvbiB0b3Agb2YgYWxsIGxheWVyc1xuICAgICAgICAgICAgICBkZXB0aFRlc3Q6IGZhbHNlXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBnZXRGaWx0ZXJWYWx1ZTogZGF0YS5nZXRGaWx0ZXJWYWx1ZSxcbiAgICAgICAgICAgIHVwZGF0ZVRyaWdnZXJzOiB7XG4gICAgICAgICAgICAgIC4uLnVwZGF0ZVRyaWdnZXJzLFxuICAgICAgICAgICAgICBnZXRUZXh0OiB0ZXh0TGFiZWxbaV0uZmllbGQ/Lm5hbWUsXG4gICAgICAgICAgICAgIGdldFBpeGVsT2Zmc2V0OiB7XG4gICAgICAgICAgICAgICAgLi4udXBkYXRlVHJpZ2dlcnMuZ2V0UmFkaXVzLFxuICAgICAgICAgICAgICAgIG1hcFN0YXRlLFxuICAgICAgICAgICAgICAgIGFuY2hvcjogdGV4dExhYmVsW2ldLmFuY2hvcixcbiAgICAgICAgICAgICAgICBhbGlnbm1lbnQ6IHRleHRMYWJlbFtpXS5hbGlnbm1lbnRcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgZ2V0VGV4dEFuY2hvcjogdGV4dExhYmVsW2ldLmFuY2hvcixcbiAgICAgICAgICAgICAgZ2V0QWxpZ25tZW50QmFzZWxpbmU6IHRleHRMYWJlbFtpXS5hbGlnbm1lbnQsXG4gICAgICAgICAgICAgIGdldENvbG9yOiB0ZXh0TGFiZWxbaV0uY29sb3JcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGFjY3U7XG4gICAgfSwgW10pO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBkZWNrLmdsIGBJY29uTGF5ZXJgIFwiYXV0b1BhY2tcIiBtb2RlIGFjY2Vzc29yIGZvciBjdXN0b20gbWFya2Vycy5cbiAgICpcbiAgICogQHBhcmFtIHsqfSBjdXN0b21NYXJrZXJzU3RhdHVzIFJlY29yZDx1cmwsIFVybFN0YXR1cz4gcHJvdmlkZWQgYnkgYnVpbGRlciwgVXJsU3RhdHVzIGBva2AgbWVhbnMgVVJMIGlzIG9rIGFuZCByZWFkeSB0byByZW5kZXJcbiAgICogQHBhcmFtIHsqfSBpY29uVXJsQWNjZXNzb3IgZGVjay5nbCBhY2Nlc3NvciAob3IgdmFsdWUpIHRoYXQgcmVzb2x2ZXMgdG8gVVJMIG9mIGljb24gZm9yIGdpdmVuIHJvd1xuICAgKiBAcmV0dXJucyBkZWNrLmdsIGFjY2Vzc29yIHRoYXQgcmV0dXJucyBVbnBhY2tlZEljb24gcmVhZHkgdG8gY29uc3VtZSBieSBJY29uTGF5ZXJcbiAgICovXG4gIGdldEN1c3RvbU1hcmtlckljb25BY2Nlc3NvcihjdXN0b21NYXJrZXJzU3RhdHVzLCBpY29uVXJsQWNjZXNzb3IpIHtcbiAgICBjb25zdCBtYXhJY29uU2l6ZSA9IHRoaXMuZ2V0TWF4TWFya2VyU2l6ZSgpO1xuXG4gICAgcmV0dXJuIGQgPT4ge1xuICAgICAgY29uc3Qgd2FudGVkVXJsID1cbiAgICAgICAgKHR5cGVvZiBpY29uVXJsQWNjZXNzb3IgPT09ICdmdW5jdGlvbicpID8gaWNvblVybEFjY2Vzc29yKGQpIDogaWNvblVybEFjY2Vzc29yO1xuICAgICAgY29uc3QgdXJsID0gY3VzdG9tTWFya2Vyc1N0YXR1cz8uW3dhbnRlZFVybF0gPT09ICdvaycgPyB3YW50ZWRVcmwgOiBGQUxMQkFDS19JQ09OO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgaWQ6IGAke3VybH1AQCR7bWF4SWNvblNpemV9YCxcbiAgICAgICAgdXJsLFxuICAgICAgICB3aWR0aDogbWF4SWNvblNpemUsXG4gICAgICAgIGhlaWdodDogbWF4SWNvblNpemUsXG4gICAgICAgIG1hc2s6IHRydWVcbiAgICAgIH07XG4gICAgfTtcbiAgfVxuXG4gIGNhbGN1bGF0ZURhdGFBdHRyaWJ1dGUoa2VwbGVyVGFibGUsIGdldFBvc2l0aW9uKSB7XG4gICAgLy8gaW1wbGVtZW50ZWQgaW4gc3ViY2xhc3Nlc1xuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIHVwZGF0ZUxheWVyTWV0YShkYXRhQ29udGFpbmVyLCBnZXRQb3NpdGlvbikge1xuICAgIC8vIGltcGxlbWVudGVkIGluIHN1YmNsYXNzZXNcbiAgfVxuXG4gIGdldFBvc2l0aW9uQWNjZXNzb3IoZGF0YUNvbnRhaW5lcikge1xuICAgIC8vIGltcGxlbWVudGVkIGluIHN1YmNsYXNzZXNcbiAgICByZXR1cm4gKCkgPT4gbnVsbDtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBMYXllcjtcbiJdfQ==
|
package/package.json
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@carto/kepler.gl",
|
|
3
|
-
"author": "
|
|
4
|
-
"
|
|
5
|
-
"version": "0.0.51",
|
|
3
|
+
"author": "Shan He <shan@uber.com>",
|
|
4
|
+
"version": "0.0.52-alpha.markers.1",
|
|
6
5
|
"description": "kepler.gl is a webgl based application to visualize large scale location data in the browser",
|
|
7
6
|
"license": "MIT",
|
|
8
7
|
"main": "dist/index.js",
|
|
@@ -16,7 +15,7 @@
|
|
|
16
15
|
],
|
|
17
16
|
"repository": {
|
|
18
17
|
"type": "git",
|
|
19
|
-
"url": "https://github.com/
|
|
18
|
+
"url": "https://github.com/keplergl/kepler.gl.git"
|
|
20
19
|
},
|
|
21
20
|
"scripts": {
|
|
22
21
|
"install:example": "cd examples/demo-app && yarn",
|
|
@@ -270,6 +269,10 @@
|
|
|
270
269
|
"engines": {
|
|
271
270
|
"node": ">=12.0.0"
|
|
272
271
|
},
|
|
272
|
+
"maintainers": [
|
|
273
|
+
"Shan He <heshan0131@gmail.com>",
|
|
274
|
+
"Giuseppe Macri <gmacri@uber.com>"
|
|
275
|
+
],
|
|
273
276
|
"volta": {
|
|
274
277
|
"node": "12.19.0"
|
|
275
278
|
}
|
package/src/layers/base-layer.js
CHANGED
|
@@ -327,6 +327,7 @@ class Layer {
|
|
|
327
327
|
sizeDomain: [0, 1],
|
|
328
328
|
sizeScale: SCALE_TYPES.linear,
|
|
329
329
|
sizeField: null,
|
|
330
|
+
radiusField: null,
|
|
330
331
|
|
|
331
332
|
visConfig: {},
|
|
332
333
|
|
|
@@ -1229,9 +1230,10 @@ class Layer {
|
|
|
1229
1230
|
}
|
|
1230
1231
|
|
|
1231
1232
|
getMaxMarkerSize() {
|
|
1232
|
-
const {radiusField, visConfig} = this.config;
|
|
1233
|
+
const {radiusField, sizeField, visConfig} = this.config;
|
|
1233
1234
|
const {radiusRange, radius} = visConfig;
|
|
1234
|
-
|
|
1235
|
+
const field = radiusField || sizeField
|
|
1236
|
+
return Math.ceil((field && radiusRange ? radiusRange[1] : radius));
|
|
1235
1237
|
}
|
|
1236
1238
|
|
|
1237
1239
|
getRadiusUnit(fixedRadius) {
|
package/src/layers/index.d.ts
CHANGED