@carto/kepler.gl 0.0.53-alpha.interactivity.4 → 0.0.54-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.54-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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QUFDTyxJQUFNQyxlQUFlLEdBQUcsMkJBQVU7QUFDdkNDLEVBQUFBLE1BQU0sRUFBRSxJQUQrQjtBQUV2Q0MsRUFBQUEsT0FBTyxFQUFFO0FBRjhCLENBQVYsQ0FBeEI7O0FBS0EsSUFBTUMsZUFBZSxHQUFHLDJCQUFVO0FBQ3ZDQyxFQUFBQSxHQUFHLEVBQUUsSUFEa0M7QUFFdkM1TixFQUFBQSxPQUFPLEVBQUUsSUFGOEI7QUFHdkM2TixFQUFBQSxHQUFHLEVBQUUsSUFIa0M7QUFJdkNDLEVBQUFBLFFBQVEsRUFBRTtBQUo2QixDQUFWLENBQXhCOztBQU9BLElBQU1DLFlBQVksR0FBRywyQkFBVTtBQUNwQ0MsRUFBQUEsYUFBYSxFQUFFLElBRHFCO0FBRXBDQyxFQUFBQSxTQUFTLEVBQUUsSUFGeUI7QUFHcENDLEVBQUFBLFFBQVEsRUFBRSxJQUgwQjtBQUlwQ0MsRUFBQUEsUUFBUSxFQUFFLElBSjBCO0FBS3BDQyxFQUFBQSxPQUFPLEVBQUUsSUFMMkI7QUFNcENDLEVBQUFBLFNBQVMsRUFBRTtBQU55QixDQUFWLENBQXJCOztBQVNBLElBQU1DLGFBQWEsR0FBRyxZQUF0Qjs7QUFFQSxJQUFNQyxpQkFBaUIsR0FBRztBQUMvQkMsRUFBQUEsR0FBRyxFQUFFLENBRDBCO0FBRS9CQyxFQUFBQSxHQUFHLEVBQUU7QUFGMEIsQ0FBMUIiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgKGMpIDIwMjIgVWJlciBUZWNobm9sb2dpZXMsIEluYy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4vLyBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4vLyBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4vLyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4vLyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbi8vIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cbi8vIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1Jcbi8vIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4vLyBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4vLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuLy8gT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTlxuLy8gVEhFIFNPRlRXQVJFLlxuXG5pbXBvcnQga2V5TWlycm9yIGZyb20gJ2tleW1pcnJvcic7XG5pbXBvcnQge0VkaXRvck1vZGVzfSBmcm9tICdyZWFjdC1tYXAtZ2wtZHJhdyc7XG5cbmltcG9ydCB7XG4gIHNjYWxlTGluZWFyLFxuICBzY2FsZVF1YW50aXplLFxuICBzY2FsZVF1YW50aWxlLFxuICBzY2FsZU9yZGluYWwsXG4gIHNjYWxlU3FydCxcbiAgc2NhbGVMb2csXG4gIHNjYWxlUG9pbnQsXG4gIHNjYWxlVGhyZXNob2xkXG59IGZyb20gJ2QzLXNjYWxlJztcbmltcG9ydCB7XG4gIExheWVycyxcbiAgRmlsdGVyRnVubmVsLFxuICBTZXR0aW5ncyxcbiAgQ3Vyc29yQ2xpY2ssXG4gIFBpbixcbiAgQXJyb3dEb3duLFxuICBBcnJvd1VwLFxuICBDbGlwYm9hcmQsXG4gIENhbmNlbFxufSBmcm9tICdjb21wb25lbnRzL2NvbW1vbi9pY29ucyc7XG5pbXBvcnQge2dldEhUTUxNYXBNb2RlVGlsZVVybH0gZnJvbSAndXRpbHMvdXRpbHMnO1xuaW1wb3J0IHtUT09MVElQX0ZPUk1BVF9UWVBFU30gZnJvbSAnLi90b29sdGlwJztcbmltcG9ydCB7TEFZRVJfVFlQRVN9IGZyb20gJ2xheWVycy90eXBlcyc7XG5cbmV4cG9ydCBjb25zdCBBQ1RJT05fUFJFRklYID0gJ0BAa2VwbGVyLmdsLyc7XG5leHBvcnQgY29uc3QgQ0xPVURGUk9OVCA9ICdodHRwczovL2QxYTNmNHNwYXp6cnA0LmNsb3VkZnJvbnQubmV0L2tlcGxlci5nbCc7XG5leHBvcnQgY29uc3QgSUNPTl9QUkVGSVggPSBgJHtDTE9VREZST05UfS9nZW9kdWRlYDtcbmV4cG9ydCBjb25zdCBERUZBVUxUX01BUEJPWF9BUElfVVJMID0gJ2h0dHBzOi8vYXBpLm1hcGJveC5jb20nO1xuXG4vLyBNb2RhbCBJZHNcbi8qKlxuICogTW9kYWwgaWQ6IGRhdGEgdGFibGVcbiAqIEBjb25zdGFudFxuICogQHR5cGUge3N0cmluZ31cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IERBVEFfVEFCTEVfSUQgPSAnZGF0YVRhYmxlJztcbi8qKlxuICogTW9kYWwgaWQ6IGRlbGV0ZSBkYXRhc2V0IGNvbmZpcm0gZGlhbG9nXG4gKiBAY29uc3RhbnRcbiAqIEB0eXBlIHtzdHJpbmd9XG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBERUxFVEVfREFUQV9JRCA9ICdkZWxldGVEYXRhJztcbi8qKlxuICogTW9kYWwgaWQ6IGFkZCBkYXRhIG1vZGFsXG4gKiBAY29uc3RhbnRcbiAqIEB0eXBlIHtzdHJpbmd9XG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBBRERfREFUQV9JRCA9ICdhZGREYXRhJztcbi8qKlxuICogTW9kYWwgaWQ6IGV4cG9ydCBpbWFnZSBtb2RhbFxuICogQGNvbnN0YW50XG4gKiBAdHlwZSB7c3RyaW5nfVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgRVhQT1JUX0lNQUdFX0lEID0gJ2V4cG9ydEltYWdlJztcbi8qKlxuICogTW9kYWwgaWQ6IGV4cG9ydCBkYXRhIG1vZGFsXG4gKiBAY29uc3RhbnRcbiAqIEB0eXBlIHtzdHJpbmd9XG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBFWFBPUlRfREFUQV9JRCA9ICdleHBvcnREYXRhJztcbi8qKlxuICogTW9kYWwgaWQ6IGFkZCBjdXN0b20gbWFwIHN0eWxlIG1vZGFsXG4gKiBAY29uc3RhbnRcbiAqIEB0eXBlIHtzdHJpbmd9XG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBBRERfTUFQX1NUWUxFX0lEID0gJ2FkZE1hcFN0eWxlJztcbi8qKlxuICogTW9kYWwgaWQ6IGV4cG9ydCBtYXAgbW9kYWxcbiAqIEBjb25zdGFudFxuICogQHR5cGUge3N0cmluZ31cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IEVYUE9SVF9NQVBfSUQgPSAnZXhwb3J0TWFwJztcbi8qKlxuICogTW9kYWwgaWQ6IHNhdmUgbWFwIG1vZGFsXG4gKiBAY29uc3RhbnRcbiAqIEB0eXBlIHtzdHJpbmd9XG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBTQVZFX01BUF9JRCA9ICdzYXZlTWFwJztcbi8qKlxuICogTW9kYWwgaWQ6IGNvbmZpcm0gdG8gb3ZlcndyaXRlIHNhdmVkIG1hcFxuICogQGNvbnN0YW50XG4gKiBAdHlwZSB7c3RyaW5nfVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgT1ZFUldSSVRFX01BUF9JRCA9ICdvdmVyd3JpdGVNYXAnO1xuLyoqXG4gKiBNb2RhbCBpZDogc2hhcmUgbWFwIHVybCBtb2RhbFxuICogQGNvbnN0YW50XG4gKiBAdHlwZSB7c3RyaW5nfVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgU0hBUkVfTUFQX0lEID0gJ3NoYXJlTWFwJztcblxuZXhwb3J0IGNvbnN0IEtFUExFUl9HTF9OQU1FID0gJ2tlcGxlci5nbCc7XG5cbi8vIF9fUEFDS0FHRV9WRVJTSU9OX18gaXMgYXV0b21hdGljYWxseSBpbmplY3RlZCBieSBCYWJlbC9XZWJwYWNrIGR1cmluZyB0aGUgYnVpbGRpbmcgcHJvY2Vzc1xuLy8gU2luY2Ugd2UgYXJlIGluamVjdGluZyB0aGlzIGR1cmluZyB0aGUgYnVpbGQgcHJvY2VzcyB3aXRoIGJhYmVsXG4vLyB3aGlsZSBkZXZlbG9waW5nIFZFUlNJT04gaXMgbm90IGRlZmluZWQsIHdlIGNhcHR1cmUgdGhlIGV4Y2VwdGlvbiBhbmQgcmV0dXJuXG4vLyBhbiBlbXB0eSBzdHJpbmcgd2hpY2ggd2lsbCBhbGxvdyB1cyB0byByZXRyaWV2ZSB0aGUgbGF0ZXN0IHVtZCB2ZXJzaW9uXG5leHBvcnQgY29uc3QgS0VQTEVSX0dMX1ZFUlNJT04gPSAnX19QQUNLQUdFX1ZFUlNJT05fXyc7XG5leHBvcnQgY29uc3QgS0VQTEVSX0dMX1dFQlNJVEUgPSAnaHR0cDovL2tlcGxlci5nbC8nO1xuXG5leHBvcnQgY29uc3QgRElNRU5TSU9OUyA9IHtcbiAgc2lkZVBhbmVsOiB7XG4gICAgd2lkdGg6IDMwMCxcbiAgICBtYXJnaW46IHt0b3A6IDIwLCBsZWZ0OiAyMCwgYm90dG9tOiAzMCwgcmlnaHQ6IDIwfSxcbiAgICBoZWFkZXJIZWlnaHQ6IDk2XG4gIH0sXG4gIG1hcENvbnRyb2w6IHtcbiAgICB3aWR0aDogMTg0LFxuICAgIHBhZGRpbmc6IDEyXG4gIH1cbn07XG5cbi8qKlxuICogVGhlbWUgbmFtZSB0aGF0IGNhbiBiZSBwYXNzZWQgdG8gYEtlcGxlckdsYCBgcHJvcC50aGVtZWAuXG4gKiBBdmFpbGFibGUgdGhlbWVzIGFyZSBgVEhFTUUubGlnaHRgIGFuZCBgVEhFTUUuZGFya2AuIERlZmF1bHQgdGhlbWUgaXMgYFRIRU1FLmRhcmtgXG4gKiBAY29uc3RhbnRcbiAqIEB0eXBlIHtvYmplY3R9XG4gKiBAcHVibGljXG4gKiBAZXhhbXBsZVxuICogYGBganNcbiAqIGNvbnN0IE1hcCA9ICgpID0+IDxLZXBsZXJHbCB0aGVtZT17VEhFTUUubGlnaHR9IGlkPVwibWFwXCIvPlxuICogYGBgXG4gKi9cbmV4cG9ydCBjb25zdCBUSEVNRSA9IGtleU1pcnJvcih7XG4gIGxpZ2h0OiBudWxsLFxuICBkYXJrOiBudWxsLFxuICBiYXNlOiBudWxsXG59KTtcblxuZXhwb3J0IGNvbnN0IFNJREVCQVJfUEFORUxTID0gW1xuICB7XG4gICAgaWQ6ICdsYXllcicsXG4gICAgbGFiZWw6ICdzaWRlYmFyLnBhbmVscy5sYXllcicsXG4gICAgaWNvbkNvbXBvbmVudDogTGF5ZXJzLFxuICAgIG9uQ2xpY2s6IG51bGxcbiAgfSxcbiAge1xuICAgIGlkOiAnZmlsdGVyJyxcbiAgICBsYWJlbDogJ3NpZGViYXIucGFuZWxzLmZpbHRlcicsXG4gICAgaWNvbkNvbXBvbmVudDogRmlsdGVyRnVubmVsLFxuICAgIG9uQ2xpY2s6IG51bGxcbiAgfSxcbiAge1xuICAgIGlkOiAnaW50ZXJhY3Rpb24nLFxuICAgIGxhYmVsOiAnc2lkZWJhci5wYW5lbHMuaW50ZXJhY3Rpb24nLFxuICAgIGljb25Db21wb25lbnQ6IEN1cnNvckNsaWNrLFxuICAgIG9uQ2xpY2s6IG51bGxcbiAgfSxcbiAge1xuICAgIGlkOiAnbWFwJyxcbiAgICBsYWJlbDogJ3NpZGViYXIucGFuZWxzLmJhc2VtYXAnLFxuICAgIGljb25Db21wb25lbnQ6IFNldHRpbmdzLFxuICAgIG9uQ2xpY2s6IG51bGxcbiAgfVxuXTtcblxuLy8gYmFja3dhcmQgY29tcGF0aWJpbGl0eVxuZXhwb3J0IGNvbnN0IFBBTkVMUyA9IFNJREVCQVJfUEFORUxTO1xuXG4vLyBNQVAgU1RZTEVTXG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX0xBWUVSX0dST1VQUyA9IFtcbiAge1xuICAgIHNsdWc6ICdsYWJlbCcsXG4gICAgZmlsdGVyOiAoe2lkfSkgPT4gaWQubWF0Y2goLyg/PShsYWJlbHxwbGFjZS18cG9pLSkpLyksXG4gICAgZGVmYXVsdFZpc2liaWxpdHk6IHRydWVcbiAgfSxcbiAge1xuICAgIHNsdWc6ICdyb2FkJyxcbiAgICBmaWx0ZXI6ICh7aWR9KSA9PiBpZC5tYXRjaCgvKD89KHJvYWR8cmFpbHdheXx0dW5uZWx8c3RyZWV0fGJyaWRnZSkpKD8hLipsYWJlbCkvKSxcbiAgICBkZWZhdWx0VmlzaWJpbGl0eTogdHJ1ZVxuICB9LFxuICB7XG4gICAgc2x1ZzogJ2JvcmRlcicsXG4gICAgZmlsdGVyOiAoe2lkfSkgPT4gaWQubWF0Y2goL2JvcmRlcnxib3VuZGFyaWVzLyksXG4gICAgZGVmYXVsdFZpc2liaWxpdHk6IGZhbHNlXG4gIH0sXG4gIHtcbiAgICBzbHVnOiAnYnVpbGRpbmcnLFxuICAgIGZpbHRlcjogKHtpZH0pID0+IGlkLm1hdGNoKC9idWlsZGluZy8pLFxuICAgIGRlZmF1bHRWaXNpYmlsaXR5OiB0cnVlXG4gIH0sXG4gIHtcbiAgICBzbHVnOiAnd2F0ZXInLFxuICAgIGZpbHRlcjogKHtpZH0pID0+IGlkLm1hdGNoKC8oPz0od2F0ZXJ8c3RyZWFtfGZlcnJ5KSkvKSxcbiAgICBkZWZhdWx0VmlzaWJpbGl0eTogdHJ1ZVxuICB9LFxuICB7XG4gICAgc2x1ZzogJ2xhbmQnLFxuICAgIGZpbHRlcjogKHtpZH0pID0+IGlkLm1hdGNoKC8oPz0ocGFya3N8bGFuZGNvdmVyfGluZHVzdHJpYWx8c2FuZHxoaWxsc2hhZGUpKS8pLFxuICAgIGRlZmF1bHRWaXNpYmlsaXR5OiB0cnVlXG4gIH0sXG4gIHtcbiAgICBzbHVnOiAnM2QgYnVpbGRpbmcnLFxuICAgIGZpbHRlcjogKCkgPT4gZmFsc2UsXG4gICAgZGVmYXVsdFZpc2liaWxpdHk6IGZhbHNlXG4gIH1cbl07XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX01BUF9TVFlMRVMgPSBbXG4gIHtcbiAgICBpZDogJ2RhcmsnLFxuICAgIGxhYmVsOiAnRGFyaycsXG4gICAgdXJsOiAnbWFwYm94Oi8vc3R5bGVzL3ViZXJkYXRhL2Nqb3FiYmY2bDlrMzAyc2w5NnR5dmthMDknLFxuICAgIGljb246IGAke0lDT05fUFJFRklYfS9VQkVSX0RBUktfVjIucG5nYCxcbiAgICBsYXllckdyb3VwczogREVGQVVMVF9MQVlFUl9HUk9VUFNcbiAgfSxcbiAge1xuICAgIGlkOiAnbGlnaHQnLFxuICAgIGxhYmVsOiAnTGlnaHQnLFxuICAgIHVybDogJ21hcGJveDovL3N0eWxlcy91YmVyZGF0YS9jam9xYjlqMzM5azFmMnNsOXQ1aWM1Ym40JyxcbiAgICBpY29uOiBgJHtJQ09OX1BSRUZJWH0vVUJFUl9MSUdIVF9WMi5wbmdgLFxuICAgIGxheWVyR3JvdXBzOiBERUZBVUxUX0xBWUVSX0dST1VQU1xuICB9LFxuICB7XG4gICAgaWQ6ICdtdXRlZCcsXG4gICAgbGFiZWw6ICdNdXRlZCBMaWdodCcsXG4gICAgdXJsOiAnbWFwYm94Oi8vc3R5bGVzL3ViZXJkYXRhL2NqZnlsMDNrcDF0dWwyc21mNXYydGJkZDQnLFxuICAgIGljb246IGAke0lDT05fUFJFRklYfS9VQkVSX01VVEVEX0xJR0hULnBuZ2AsXG4gICAgbGF5ZXJHcm91cHM6IERFRkFVTFRfTEFZRVJfR1JPVVBTXG4gIH0sXG4gIHtcbiAgICBpZDogJ211dGVkX25pZ2h0JyxcbiAgICBsYWJlbDogJ011dGVkIE5pZ2h0JyxcbiAgICB1cmw6ICdtYXBib3g6Ly9zdHlsZXMvdWJlcmRhdGEvY2pmeGhsaWttYWoxYjJzb3l6ZXZueXdncycsXG4gICAgaWNvbjogYCR7SUNPTl9QUkVGSVh9L1VCRVJfTVVURURfTklHSFQucG5nYCxcbiAgICBsYXllckdyb3VwczogREVGQVVMVF9MQVlFUl9HUk9VUFNcbiAgfSxcbiAge1xuICAgIGlkOiAnc2F0ZWxsaXRlJyxcbiAgICBsYWJlbDogJ1NhdGVsbGl0ZScsXG4gICAgdXJsOiBgbWFwYm94Oi8vc3R5bGVzL21hcGJveC9zYXRlbGxpdGUtdjlgLFxuICAgIGljb246IGAke0lDT05fUFJFRklYfS9VQkVSX1NBVEVMTElURS5wbmdgXG4gIH1cbl07XG5cbmV4cG9ydCBjb25zdCBHRU9KU09OX0ZJRUxEUyA9IHtcbiAgZ2VvanNvbjogWydfZ2VvanNvbicsICdhbGxfcG9pbnRzJywgJ2dlb2pzb24nXVxufTtcblxuZXhwb3J0IGNvbnN0IElDT05fRklFTERTID0ge1xuICBpY29uOiBbJ2ljb24nXVxufTtcblxuZXhwb3J0IGNvbnN0IFRSSVBfUE9JTlRfRklFTERTID0gW1xuICBbJ2xhdCcsICdsbmcnXSxcbiAgWydsYXQnLCAnbG9uJ10sXG4gIFsnbGF0aXR1ZGUnLCAnbG9uZ2l0dWRlJ11cbl07XG5cbmV4cG9ydCBjb25zdCBUUklQX0FSQ19GSUVMRFMgPSB7XG4gIGxhdDA6ICdiZWdpbnRyaXAnLFxuICBsbmcwOiAnYmVnaW50cmlwJyxcbiAgbGF0MTogJ2Ryb3BvZmYnLFxuICBsbmcxOiAnZHJvcG9mZidcbn07XG5cbmV4cG9ydCBjb25zdCBGSUxURVJfVFlQRVMgPSBrZXlNaXJyb3Ioe1xuICByYW5nZTogbnVsbCxcbiAgc2VsZWN0OiBudWxsLFxuICBpbnB1dDogbnVsbCxcbiAgdGltZVJhbmdlOiBudWxsLFxuICBtdWx0aVNlbGVjdDogbnVsbCxcbiAgcG9seWdvbjogbnVsbFxufSk7XG5cbmV4cG9ydCBjb25zdCBTQ0FMRV9UWVBFUyA9IGtleU1pcnJvcih7XG4gIG9yZGluYWw6IG51bGwsXG4gIHF1YW50aWxlOiBudWxsLFxuICBxdWFudGl6ZTogbnVsbCxcbiAgbGluZWFyOiBudWxsLFxuICBzcXJ0OiBudWxsLFxuICBsb2c6IG51bGwsXG5cbiAgLy8gb3JkaW5hbCBkb21haW4gdG8gbGluZWFyIHJhbmdlXG4gIHBvaW50OiBudWxsLFxuICBjdXN0b206IG51bGxcbn0pO1xuXG5leHBvcnQgY29uc3QgU0NBTEVfRlVOQyA9IHtcbiAgW1NDQUxFX1RZUEVTLmxpbmVhcl06IHNjYWxlTGluZWFyLFxuICBbU0NBTEVfVFlQRVMucXVhbnRpemVdOiBzY2FsZVF1YW50aXplLFxuICBbU0NBTEVfVFlQRVMucXVhbnRpbGVdOiBzY2FsZVF1YW50aWxlLFxuICBbU0NBTEVfVFlQRVMub3JkaW5hbF06IHNjYWxlT3JkaW5hbCxcbiAgW1NDQUxFX1RZUEVTLnNxcnRdOiBzY2FsZVNxcnQsXG4gIFtTQ0FMRV9UWVBFUy5sb2ddOiBzY2FsZUxvZyxcbiAgW1NDQUxFX1RZUEVTLnBvaW50XTogc2NhbGVQb2ludCxcbiAgW1NDQUxFX1RZUEVTLmN1c3RvbV06IHNjYWxlVGhyZXNob2xkXG59O1xuXG5leHBvcnQgY29uc3QgQUxMX0ZJRUxEX1RZUEVTID0ga2V5TWlycm9yKHtcbiAgYm9vbGVhbjogbnVsbCxcbiAgZGF0ZTogbnVsbCxcbiAgZ2VvanNvbjogbnVsbCxcbiAgaW50ZWdlcjogbnVsbCxcbiAgcmVhbDogbnVsbCxcbiAgc3RyaW5nOiBudWxsLFxuICB0aW1lc3RhbXA6IG51bGwsXG4gIHBvaW50OiBudWxsXG59KTtcblxuLy8gRGF0YSBUYWJsZVxuZXhwb3J0IGNvbnN0IFNPUlRfT1JERVIgPSBrZXlNaXJyb3Ioe1xuICBBU0NFTkRJTkc6IG51bGwsXG4gIERFU0NFTkRJTkc6IG51bGwsXG4gIFVOU09SVDogbnVsbFxufSk7XG5cbmV4cG9ydCBjb25zdCBUQUJMRV9PUFRJT04gPSBrZXlNaXJyb3Ioe1xuICBTT1JUX0FTQzogbnVsbCxcbiAgU09SVF9ERVM6IG51bGwsXG4gIFVOU09SVDogbnVsbCxcbiAgUElOOiBudWxsLFxuICBVTlBJTjogbnVsbCxcbiAgQ09QWTogbnVsbFxufSk7XG5cbmV4cG9ydCBjb25zdCBUQUJMRV9PUFRJT05fTElTVCA9IFtcbiAge1xuICAgIHZhbHVlOiBUQUJMRV9PUFRJT04uU09SVF9BU0MsXG4gICAgZGlzcGxheTogJ1NvcnQgQXNjZW5kaW5nJyxcbiAgICBpY29uOiBBcnJvd1VwLFxuICAgIGNvbmRpdGlvbjogcHJvcHMgPT4gcHJvcHMuc29ydE1vZGUgIT09IFNPUlRfT1JERVIuQVNDRU5ESU5HXG4gIH0sXG4gIHtcbiAgICB2YWx1ZTogVEFCTEVfT1BUSU9OLlNPUlRfREVTLFxuICAgIGRpc3BsYXk6ICdTb3J0IERlc2NlbmRpbmcnLFxuICAgIGljb246IEFycm93RG93bixcbiAgICBjb25kaXRpb246IHByb3BzID0+IHByb3BzLnNvcnRNb2RlICE9PSBTT1JUX09SREVSLkRFU0NFTkRJTkdcbiAgfSxcbiAge1xuICAgIHZhbHVlOiBUQUJMRV9PUFRJT04uVU5TT1JULFxuICAgIGRpc3BsYXk6ICdVbnNvcnQgQ29sdW1uJyxcbiAgICBpY29uOiBDYW5jZWwsXG4gICAgY29uZGl0aW9uOiBwcm9wcyA9PiBwcm9wcy5pc1NvcnRlZFxuICB9LFxuICB7dmFsdWU6IFRBQkxFX09QVElPTi5QSU4sIGRpc3BsYXk6ICdQaW4gQ29sdW1uJywgaWNvbjogUGluLCBjb25kaXRpb246IHByb3BzID0+ICFwcm9wcy5pc1Bpbm5lZH0sXG4gIHtcbiAgICB2YWx1ZTogVEFCTEVfT1BUSU9OLlVOUElOLFxuICAgIGRpc3BsYXk6ICdVbnBpbiBDb2x1bW4nLFxuICAgIGljb246IENhbmNlbCxcbiAgICBjb25kaXRpb246IHByb3BzID0+IHByb3BzLmlzUGlubmVkXG4gIH0sXG4gIHt2YWx1ZTogVEFCTEVfT1BUSU9OLkNPUFksIGRpc3BsYXk6ICdDb3B5IENvbHVtbicsIGljb246IENsaXBib2FyZH1cbl07XG5cbmNvbnN0IE9SQU5HRSA9ICcyNDgsIDE5NCwgMjgnO1xuY29uc3QgUElOSyA9ICcyMzEsIDE4OSwgMTk0JztcbmNvbnN0IFBVUlBMRSA9ICcxNjAsIDEwNiwgMjA2JztcbmNvbnN0IEJMVUUgPSAnMTQwLCAyMTAsIDIwNSc7XG5jb25zdCBCTFVFMiA9ICcxMDYsIDE2MCwgMjA2JztcbmNvbnN0IEJMVUUzID0gJzAsIDE3MiwgMjM3JztcbmNvbnN0IEdSRUVOID0gJzEwNiwgMTYwLCA1Nic7XG5jb25zdCBSRUQgPSAnMjM3LCA4OCwgMTA2JztcblxuZXhwb3J0IGNvbnN0IEZJTEVEX1RZUEVfRElTUExBWSA9IHtcbiAgW0FMTF9GSUVMRF9UWVBFUy5ib29sZWFuXToge1xuICAgIGxhYmVsOiAnYm9vbCcsXG4gICAgY29sb3I6IFBJTktcbiAgfSxcbiAgW0FMTF9GSUVMRF9UWVBFUy5kYXRlXToge1xuICAgIGxhYmVsOiAnZGF0ZScsXG4gICAgY29sb3I6IFBVUlBMRVxuICB9LFxuICBbQUxMX0ZJRUxEX1RZUEVTLmdlb2pzb25dOiB7XG4gICAgbGFiZWw6ICdnZW8nLFxuICAgIGNvbG9yOiBCTFVFMlxuICB9LFxuICBbQUxMX0ZJRUxEX1RZUEVTLmludGVnZXJdOiB7XG4gICAgbGFiZWw6ICdpbnQnLFxuICAgIGNvbG9yOiBPUkFOR0VcbiAgfSxcbiAgW0FMTF9GSUVMRF9UWVBFUy5yZWFsXToge1xuICAgIGxhYmVsOiAnZmxvYXQnLFxuICAgIGNvbG9yOiBPUkFOR0VcbiAgfSxcbiAgW0FMTF9GSUVMRF9UWVBFUy5zdHJpbmddOiB7XG4gICAgbGFiZWw6ICdzdHJpbmcnLFxuICAgIGNvbG9yOiBCTFVFXG4gIH0sXG4gIFtBTExfRklFTERfVFlQRVMudGltZXN0YW1wXToge1xuICAgIGxhYmVsOiAndGltZScsXG4gICAgY29sb3I6IEdSRUVOXG4gIH0sXG4gIC8vIGZpZWxkIHBhaXJzXG4gIFtBTExfRklFTERfVFlQRVMucG9pbnRdOiB7XG4gICAgbGFiZWw6ICdwb2ludCcsXG4gICAgY29sb3I6IEJMVUUzXG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBGSUVMRF9DT0xPUlMgPSB7XG4gIGRlZmF1bHQ6IFJFRFxufTtcbmV4cG9ydCBjb25zdCBISUdITElHSF9DT0xPUl8zRCA9IFsyNTUsIDI1NSwgMjU1LCA2MF07XG5leHBvcnQgY29uc3QgQ0hBTk5FTF9TQ0FMRVMgPSBrZXlNaXJyb3Ioe1xuICBjb2xvcjogbnVsbCxcbiAgcmFkaXVzOiBudWxsLFxuICBzaXplOiBudWxsLFxuICBjdXN0b21NYXJrZXI6IG51bGwsXG4gIGNvbG9yQWdncjogbnVsbCxcbiAgc2l6ZUFnZ3I6IG51bGwsXG4gIGlkZW50aXR5OiBudWxsXG59KTtcblxuZXhwb3J0IGNvbnN0IEFHR1JFR0FUSU9OX1RZUEVTID0ge1xuICAvLyBkZWZhdWx0XG4gIGNvdW50OiAnY291bnQnLFxuICAvLyBsaW5lYXJcbiAgYXZlcmFnZTogJ2F2ZXJhZ2UnLFxuICBtYXhpbXVtOiAnbWF4aW11bScsXG4gIG1pbmltdW06ICdtaW5pbXVtJyxcbiAgbWVkaWFuOiAnbWVkaWFuJyxcbiAgc3RkZXY6ICdzdGRldicsXG4gIHN1bTogJ3N1bScsXG4gIHZhcmlhbmNlOiAndmFyaWFuY2UnLFxuICAvLyBvcmRpbmFsXG4gIG1vZGU6ICdtb2RlJyxcbiAgY291bnRVbmlxdWU6ICdjb3VudCB1bmlxdWUnXG59O1xuXG5leHBvcnQgY29uc3QgRklFTERfVFlQRVNfQUdHUkVHQVRPUlMgPSB7XG4gIGRhdGU6IG51bGwsXG4gIGdlb2pzb246IG51bGwsXG4gIGludGVnZXI6IFtcbiAgICBBR0dSRUdBVElPTl9UWVBFUy5hdmVyYWdlLFxuICAgIEFHR1JFR0FUSU9OX1RZUEVTLm1heGltdW0sXG4gICAgQUdHUkVHQVRJT05fVFlQRVMubWluaW11bSxcbiAgICBBR0dSRUdBVElPTl9UWVBFUy5zdGRldixcbiAgICBBR0dSRUdBVElPTl9UWVBFUy5zdW0sXG4gICAgQUdHUkVHQVRJT05fVFlQRVMudmFyaWFuY2VcbiAgXSxcbiAgcmVhbDogW1xuICAgIEFHR1JFR0FUSU9OX1RZUEVTLmF2ZXJhZ2UsXG4gICAgQUdHUkVHQVRJT05fVFlQRVMubWF4aW11bSxcbiAgICBBR0dSRUdBVElPTl9UWVBFUy5taW5pbXVtLFxuICAgIEFHR1JFR0FUSU9OX1RZUEVTLnN0ZGV2LFxuICAgIEFHR1JFR0FUSU9OX1RZUEVTLnN1bSxcbiAgICBBR0dSRUdBVElPTl9UWVBFUy52YXJpYW5jZVxuICBdLFxuICBzdHJpbmc6IG51bGwsXG4gIHRpbWVzdGFtcDogbnVsbCxcbiAgcG9pbnQ6IG51bGxcbn07XG5cbmV4cG9ydCBjb25zdCBGSUVMRF9BR0dSRUdBVE9SUyA9IFtcbiAge1xuICAgIGlkOiBBR0dSRUdBVElPTl9UWVBFUy5hdmVyYWdlLFxuICAgIGRpc3BsYXlOYW1lOiAnQVZHJ1xuICB9LFxuICB7XG4gICAgaWQ6IEFHR1JFR0FUSU9OX1RZUEVTLm1heGltdW0sXG4gICAgZGlzcGxheU5hbWU6ICdNQVgnXG4gIH0sXG4gIHtcbiAgICBpZDogQUdHUkVHQVRJT05fVFlQRVMubWluaW11bSxcbiAgICBkaXNwbGF5TmFtZTogJ01JTidcbiAgfSxcbiAge1xuICAgIGlkOiBBR0dSRUdBVElPTl9UWVBFUy5zdGRldixcbiAgICBkaXNwbGF5TmFtZTogJ1NUREVWJ1xuICB9LFxuICB7XG4gICAgaWQ6IEFHR1JFR0FUSU9OX1RZUEVTLnN1bSxcbiAgICBkaXNwbGF5TmFtZTogJ1NVTSdcbiAgfSxcbiAge1xuICAgIGlkOiBBR0dSRUdBVElPTl9UWVBFUy52YXJpYW5jZSxcbiAgICBkaXNwbGF5TmFtZTogJ1ZBUklBTkNFJ1xuICB9XG5dO1xuXG5leHBvcnQgY29uc3QgbGluZWFyRmllbGRTY2FsZUZ1bmN0aW9ucyA9IHtcbiAgW0NIQU5ORUxfU0NBTEVTLmNvbG9yXTogW1NDQUxFX1RZUEVTLnF1YW50aXplLCBTQ0FMRV9UWVBFUy5xdWFudGlsZSwgU0NBTEVfVFlQRVMuY3VzdG9tXSxcbiAgW0NIQU5ORUxfU0NBTEVTLnJhZGl1c106IFtTQ0FMRV9UWVBFUy5zcXJ0XSxcbiAgW0NIQU5ORUxfU0NBTEVTLnNpemVdOiBbU0NBTEVfVFlQRVMubGluZWFyLCBTQ0FMRV9UWVBFUy5zcXJ0LCBTQ0FMRV9UWVBFUy5sb2ddLFxuICBbQ0hBTk5FTF9TQ0FMRVMuY3VzdG9tTWFya2VyXTogW1NDQUxFX1RZUEVTLm9yZGluYWxdLFxuICBbQ0hBTk5FTF9TQ0FMRVMuaWRlbnRpdHldOiBbXVxufTtcblxuZXhwb3J0IGNvbnN0IGxpbmVhckZpZWxkQWdnclNjYWxlRnVuY3Rpb25zID0ge1xuICBbQ0hBTk5FTF9TQ0FMRVMuY29sb3JBZ2dyXToge1xuICAgIFtBR0dSRUdBVElPTl9UWVBFUy5hdmVyYWdlXTogW1NDQUxFX1RZUEVTLnF1YW50aXplLCBTQ0FMRV9UWVBFUy5xdWFudGlsZSwgU0NBTEVfVFlQRVMuY3VzdG9tXSxcbiAgICBbQUdHUkVHQVRJT05fVFlQRVMubWF4aW11bV06IFtTQ0FMRV9UWVBFUy5xdWFudGl6ZSwgU0NBTEVfVFlQRVMucXVhbnRpbGUsIFNDQUxFX1RZUEVTLmN1c3RvbV0sXG4gICAgW0FHR1JFR0FUSU9OX1RZUEVTLm1pbmltdW1dOiBbU0NBTEVfVFlQRVMucXVhbnRpemUsIFNDQUxFX1RZUEVTLnF1YW50aWxlLCBTQ0FMRV9UWVBFUy5jdXN0b21dLFxuICAgIFtBR0dSRUdBVElPTl9UWVBFUy5tZWRpYW5dOiBbU0NBTEVfVFlQRVMucXVhbnRpemUsIFNDQUxFX1RZUEVTLnF1YW50aWxlLCBTQ0FMRV9UWVBFUy5jdXN0b21dLFxuICAgIFtBR0dSRUdBVElPTl9UWVBFUy5zdGRldl06IFtTQ0FMRV9UWVBFUy5xdWFudGl6ZSwgU0NBTEVfVFlQRVMucXVhbnRpbGUsIFNDQUxFX1RZUEVTLmN1c3RvbV0sXG4gICAgW0FHR1JFR0FUSU9OX1RZUEVTLnN1bV06IFtTQ0FMRV9UWVBFUy5xdWFudGl6ZSwgU0NBTEVfVFlQRVMucXVhbnRpbGUsIFNDQUxFX1RZUEVTLmN1c3RvbV0sXG4gICAgW0FHR1JFR0FUSU9OX1RZUEVTLnZhcmlhbmNlXTogW1NDQUxFX1RZUEVTLnF1YW50aXplLCBTQ0FMRV9UWVBFUy5xdWFudGlsZSwgU0NBTEVfVFlQRVMuY3VzdG9tXVxuICB9LFxuXG4gIFtDSEFOTkVMX1NDQUxFUy5zaXplQWdncl06IHtcbiAgICBbQUdHUkVHQVRJT05fVFlQRVMuYXZlcmFnZV06IFtTQ0FMRV9UWVBFUy5saW5lYXIsIFNDQUxFX1RZUEVTLnNxcnQsIFNDQUxFX1RZUEVTLmxvZ10sXG4gICAgW0FHR1JFR0FUSU9OX1RZUEVTLm1heGltdW1dOiBbU0NBTEVfVFlQRVMubGluZWFyLCBTQ0FMRV9UWVBFUy5zcXJ0LCBTQ0FMRV9UWVBFUy5sb2ddLFxuICAgIFtBR0dSRUdBVElPTl9UWVBFUy5taW5pbXVtXTogW1NDQUxFX1RZUEVTLmxpbmVhciwgU0NBTEVfVFlQRVMuc3FydCwgU0NBTEVfVFlQRVMubG9nXSxcbiAgICBbQUdHUkVHQVRJT05fVFlQRVMubWVkaWFuXTogW1NDQUxFX1RZUEVTLmxpbmVhciwgU0NBTEVfVFlQRVMuc3FydCwgU0NBTEVfVFlQRVMubG9nXSxcbiAgICBbQUdHUkVHQVRJT05fVFlQRVMuc3RkZXZdOiBbU0NBTEVfVFlQRVMubGluZWFyLCBTQ0FMRV9UWVBFUy5zcXJ0LCBTQ0FMRV9UWVBFUy5sb2ddLFxuICAgIFtBR0dSRUdBVElPTl9UWVBFUy5zdW1dOiBbU0NBTEVfVFlQRVMubGluZWFyLCBTQ0FMRV9UWVBFUy5zcXJ0LCBTQ0FMRV9UWVBFUy5sb2ddLFxuICAgIFtBR0dSRUdBVElPTl9UWVBFUy52YXJpYW5jZV06IFtTQ0FMRV9UWVBFUy5saW5lYXIsIFNDQUxFX1RZUEVTLnNxcnQsIFNDQUxFX1RZUEVTLmxvZ11cbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IG9yZGluYWxGaWVsZFNjYWxlRnVuY3Rpb25zID0ge1xuICBbQ0hBTk5FTF9TQ0FMRVMuY29sb3JdOiBbU0NBTEVfVFlQRVMub3JkaW5hbF0sXG4gIFtDSEFOTkVMX1NDQUxFUy5yYWRpdXNdOiBbU0NBTEVfVFlQRVMucG9pbnRdLFxuICBbQ0hBTk5FTF9TQ0FMRVMuc2l6ZV06IFtTQ0FMRV9UWVBFUy5wb2ludF0sXG4gIFtDSEFOTkVMX1NDQUxFUy5jdXN0b21NYXJrZXJdOiBbU0NBTEVfVFlQRVMub3JkaW5hbF0sXG4gIFtDSEFOTkVMX1NDQUxFUy5pZGVudGl0eV06IFtdXG59O1xuXG5leHBvcnQgY29uc3Qgb3JkaW5hbEZpZWxkQWdnclNjYWxlRnVuY3Rpb25zID0ge1xuICAvLyBbQ0hBTk5FTF9TQ0FMRVMuY29sb3JBZ2dyXTogW1NDQUxFX1RZUEVTLm9yZGluYWwsIFNDQUxFX1RZUEVTLmxpbmVhcl0sXG4gIFtDSEFOTkVMX1NDQUxFUy5jb2xvckFnZ3JdOiB7XG4gICAgW0FHR1JFR0FUSU9OX1RZUEVTLm1vZGVdOiBbU0NBTEVfVFlQRVMub3JkaW5hbF0sXG4gICAgW0FHR1JFR0FUSU9OX1RZUEVTLmNvdW50VW5pcXVlXTogW1xuICAgICAgU0NBTEVfVFlQRVMucXVhbnRpemUsXG4gICAgICBTQ0FMRV9UWVBFUy5xdWFudGlsZSxcbiAgICAgIFNDQUxFX1RZUEVTLmN1c3RvbVxuICAgIF1cbiAgfSxcblxuICAvLyBDdXJyZW50bHkgZG9lc24ndCBzdXBwb3J0IHlldFxuICBbQ0hBTk5FTF9TQ0FMRVMuc2l6ZUFnZ3JdOiB7fVxufTtcblxuZXhwb3J0IGNvbnN0IG5vdFN1cHBvcnRlZFNjYWxlT3B0cyA9IHtcbiAgW0NIQU5ORUxfU0NBTEVTLmNvbG9yXTogW10sXG4gIFtDSEFOTkVMX1NDQUxFUy5yYWRpdXNdOiBbXSxcbiAgW0NIQU5ORUxfU0NBTEVTLnNpemVdOiBbXSxcbiAgW0NIQU5ORUxfU0NBTEVTLmN1c3RvbU1hcmtlcl06IFtdLFxuICBbQ0hBTk5FTF9TQ0FMRVMuaWRlbnRpdHldOiBbXVxufTtcblxuZXhwb3J0IGNvbnN0IG5vdFN1cHBvcnRBZ2dyT3B0cyA9IHtcbiAgW0NIQU5ORUxfU0NBTEVTLmNvbG9yQWdncl06IHt9LFxuICBbQ0hBTk5FTF9TQ0FMRVMuc2l6ZUFnZ3JdOiB7fVxufTtcblxuLyoqXG4gKiBEZWZhdWx0IGFnZ3JlZ2F0aW9uIGFyZSBiYXNlZCBvbiBvY3VudFxuICovXG5leHBvcnQgY29uc3QgREVGQVVMVF9BR0dSRUdBVElPTiA9IHtcbiAgW0NIQU5ORUxfU0NBTEVTLmNvbG9yQWdncl06IHtcbiAgICBbQUdHUkVHQVRJT05fVFlQRVMuY291bnRdOiBbU0NBTEVfVFlQRVMucXVhbnRpemUsIFNDQUxFX1RZUEVTLnF1YW50aWxlLCBTQ0FMRV9UWVBFUy5jdXN0b21dXG4gIH0sXG4gIFtDSEFOTkVMX1NDQUxFUy5zaXplQWdncl06IHtcbiAgICBbQUdHUkVHQVRJT05fVFlQRVMuY291bnRdOiBbU0NBTEVfVFlQRVMubGluZWFyLCBTQ0FMRV9UWVBFUy5zcXJ0LCBTQ0FMRV9UWVBFUy5sb2ddXG4gIH1cbn07XG5cbi8qKlxuICogRGVmaW5lIHdoYXQgdHlwZSBvZiBzY2FsZSBvcGVyYXRpb24gaXMgYWxsb3dlZCBvbiBlYWNoIHR5cGUgb2YgZmllbGRzXG4gKi9cbmV4cG9ydCBjb25zdCBGSUVMRF9PUFRTID0ge1xuICBzdHJpbmc6IHtcbiAgICB0eXBlOiAnY2F0ZWdvcmljYWwnLFxuICAgIHNjYWxlOiB7XG4gICAgICAuLi5vcmRpbmFsRmllbGRTY2FsZUZ1bmN0aW9ucyxcbiAgICAgIC4uLm9yZGluYWxGaWVsZEFnZ3JTY2FsZUZ1bmN0aW9uc1xuICAgIH0sXG4gICAgZm9ybWF0OiB7XG4gICAgICBsZWdlbmQ6IGQgPT4gZCxcbiAgICAgIHRvb2x0aXA6IFtdXG4gICAgfVxuICB9LFxuICByZWFsOiB7XG4gICAgdHlwZTogJ251bWVyaWNhbCcsXG4gICAgc2NhbGU6IHtcbiAgICAgIC4uLmxpbmVhckZpZWxkU2NhbGVGdW5jdGlvbnMsXG4gICAgICAuLi5saW5lYXJGaWVsZEFnZ3JTY2FsZUZ1bmN0aW9uc1xuICAgIH0sXG4gICAgZm9ybWF0OiB7XG4gICAgICBsZWdlbmQ6IGQgPT4gZCxcbiAgICAgIHRvb2x0aXA6IFtcbiAgICAgICAgVE9PTFRJUF9GT1JNQVRfVFlQRVMuTk9ORSxcbiAgICAgICAgVE9PTFRJUF9GT1JNQVRfVFlQRVMuREVDSU1BTCxcbiAgICAgICAgVE9PTFRJUF9GT1JNQVRfVFlQRVMuUEVSQ0VOVEFHRVxuICAgICAgXVxuICAgIH1cbiAgfSxcbiAgdGltZXN0YW1wOiB7XG4gICAgdHlwZTogJ3RpbWUnLFxuICAgIHNjYWxlOiB7XG4gICAgICAuLi5saW5lYXJGaWVsZFNjYWxlRnVuY3Rpb25zLFxuICAgICAgLi4ubm90U3VwcG9ydEFnZ3JPcHRzXG4gICAgfSxcbiAgICBmb3JtYXQ6IHtcbiAgICAgIGxlZ2VuZDogZCA9PiBkLFxuICAgICAgdG9vbHRpcDogW1xuICAgICAgICBUT09MVElQX0ZPUk1BVF9UWVBFUy5OT05FLFxuICAgICAgICBUT09MVElQX0ZPUk1BVF9UWVBFUy5EQVRFLFxuICAgICAgICBUT09MVElQX0ZPUk1BVF9UWVBFUy5EQVRFX1RJTUVcbiAgICAgIF1cbiAgICB9XG4gIH0sXG4gIGludGVnZXI6IHtcbiAgICB0eXBlOiAnbnVtZXJpY2FsJyxcbiAgICBzY2FsZToge1xuICAgICAgLi4ubGluZWFyRmllbGRTY2FsZUZ1bmN0aW9ucyxcbiAgICAgIC4uLmxpbmVhckZpZWxkQWdnclNjYWxlRnVuY3Rpb25zXG4gICAgfSxcbiAgICBmb3JtYXQ6IHtcbiAgICAgIGxlZ2VuZDogZCA9PiBkLFxuICAgICAgdG9vbHRpcDogW1xuICAgICAgICBUT09MVElQX0ZPUk1BVF9UWVBFUy5OT05FLFxuICAgICAgICBUT09MVElQX0ZPUk1BVF9UWVBFUy5ERUNJTUFMLFxuICAgICAgICBUT09MVElQX0ZPUk1BVF9UWVBFUy5QRVJDRU5UQUdFXG4gICAgICBdXG4gICAgfVxuICB9LFxuICBib29sZWFuOiB7XG4gICAgdHlwZTogJ2Jvb2xlYW4nLFxuICAgIHNjYWxlOiB7XG4gICAgICAuLi5vcmRpbmFsRmllbGRTY2FsZUZ1bmN0aW9ucyxcbiAgICAgIC4uLm9yZGluYWxGaWVsZEFnZ3JTY2FsZUZ1bmN0aW9uc1xuICAgIH0sXG4gICAgZm9ybWF0OiB7XG4gICAgICBsZWdlbmQ6IGQgPT4gZCxcbiAgICAgIHRvb2x0aXA6IFtUT09MVElQX0ZPUk1BVF9UWVBFUy5OT05FLCBUT09MVElQX0ZPUk1BVF9UWVBFUy5CT09MRUFOXVxuICAgIH1cbiAgfSxcbiAgZGF0ZToge1xuICAgIHNjYWxlOiB7XG4gICAgICAuLi5vcmRpbmFsRmllbGRTY2FsZUZ1bmN0aW9ucyxcbiAgICAgIC4uLm9yZGluYWxGaWVsZEFnZ3JTY2FsZUZ1bmN0aW9uc1xuICAgIH0sXG4gICAgZm9ybWF0OiB7XG4gICAgICBsZWdlbmQ6IGQgPT4gZCxcbiAgICAgIHRvb2x0aXA6IFtUT09MVElQX0ZPUk1BVF9UWVBFUy5OT05FLCBUT09MVElQX0ZPUk1BVF9UWVBFUy5EQVRFXVxuICAgIH1cbiAgfSxcbiAgZ2VvanNvbjoge1xuICAgIHR5cGU6ICdnZW9tZXRyeScsXG4gICAgc2NhbGU6IHtcbiAgICAgIC4uLm5vdFN1cHBvcnRlZFNjYWxlT3B0cyxcbiAgICAgIC4uLm5vdFN1cHBvcnRBZ2dyT3B0c1xuICAgIH0sXG4gICAgZm9ybWF0OiB7XG4gICAgICBsZWdlbmQ6IGQgPT4gJy4uLicsXG4gICAgICB0b29sdGlwOiBbXVxuICAgIH1cbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IENIQU5ORUxfU0NBTEVfU1VQUE9SVEVEX0ZJRUxEUyA9IE9iamVjdC5rZXlzKENIQU5ORUxfU0NBTEVTKS5yZWR1Y2UoXG4gIChhY2N1LCBrZXkpID0+ICh7XG4gICAgLi4uYWNjdSxcbiAgICBba2V5XTogT2JqZWN0LmtleXMoRklFTERfT1BUUykuZmlsdGVyKGZ0ID0+IE9iamVjdC5rZXlzKEZJRUxEX09QVFNbZnRdLnNjYWxlW2tleV0pLmxlbmd0aClcbiAgfSksXG4gIHt9XG4pO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9MQVlFUl9DT0xPUiA9IHtcbiAgdHJpcEFyYzogJyM5MjI2QzYnLFxuICBiZWdpbnRyaXBfbGF0OiAnIzFFOTZCRScsXG4gIGRyb3BvZmZfbGF0OiAnI0ZGOTkxRicsXG4gIHJlcXVlc3RfbGF0OiAnIzUyQTM1Mydcbn07XG5cbi8vIGxldCB1c2VyIHBhc3MgaW4gZGVmYXVsdCB0b29sdGlwIGZpZWxkc1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfVE9PTFRJUF9GSUVMRFMgPSBbXTtcblxuZXhwb3J0IGNvbnN0IE5PX1ZBTFVFX0NPTE9SID0gWzAsIDAsIDAsIDBdO1xuZXhwb3J0IGNvbnN0IFVOS05PV05fQ09MT1IgPSBbMTM0LCAxNDEsIDE0NV07XG5cbmV4cG9ydCBjb25zdCBMQVlFUl9CTEVORElOR1MgPSB7XG4gIGFkZGl0aXZlOiB7XG4gICAgbGFiZWw6ICdsYXllckJsZW5kaW5nLmFkZGl0aXZlJyxcbiAgICBibGVuZEZ1bmM6IFsnU1JDX0FMUEhBJywgJ0RTVF9BTFBIQSddLFxuICAgIGJsZW5kRXF1YXRpb246ICdGVU5DX0FERCdcbiAgfSxcbiAgbm9ybWFsOiB7XG4gICAgLy8gcmVmZXJlbmNlIHRvXG4gICAgLy8gaHR0cHM6Ly9saW1udS5jb20vd2ViZ2wtYmxlbmRpbmcteW91cmUtcHJvYmFibHktd3JvbmcvXG4gICAgbGFiZWw6ICdsYXllckJsZW5kaW5nLm5vcm1hbCcsXG4gICAgYmxlbmRGdW5jOiBbJ1NSQ19BTFBIQScsICdPTkVfTUlOVVNfU1JDX0FMUEhBJywgJ09ORScsICdPTkVfTUlOVVNfU1JDX0FMUEhBJ10sXG4gICAgYmxlbmRFcXVhdGlvbjogWydGVU5DX0FERCcsICdGVU5DX0FERCddXG4gIH0sXG4gIHN1YnRyYWN0aXZlOiB7XG4gICAgbGFiZWw6ICdsYXllckJsZW5kaW5nLnN1YnRyYWN0aXZlJyxcbiAgICBibGVuZEZ1bmM6IFsnT05FJywgJ09ORV9NSU5VU19EU1RfQ09MT1InLCAnU1JDX0FMUEhBJywgJ0RTVF9BTFBIQSddLFxuICAgIGJsZW5kRXF1YXRpb246IFsnRlVOQ19TVUJUUkFDVCcsICdGVU5DX0FERCddXG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBNQVhfREVGQVVMVF9UT09MVElQUyA9IDU7XG5cbmV4cG9ydCBjb25zdCBSRVNPTFVUSU9OUyA9IGtleU1pcnJvcih7XG4gIE9ORV9YOiBudWxsLFxuICBUV09fWDogbnVsbFxufSk7XG5cbmV4cG9ydCBjb25zdCBFWFBPUlRfSU1HX1JBVElPUyA9IGtleU1pcnJvcih7XG4gIFNDUkVFTjogbnVsbCxcbiAgRk9VUl9CWV9USFJFRTogbnVsbCxcbiAgU0lYVEVFTl9CWV9OSU5FOiBudWxsLFxuICBDVVNUT006IG51bGxcbn0pO1xuXG5leHBvcnQgY29uc3QgRVhQT1JUX0lNR19SQVRJT19PUFRJT05TID0gW1xuICB7XG4gICAgaWQ6IEVYUE9SVF9JTUdfUkFUSU9TLlNDUkVFTixcbiAgICBsYWJlbDogJ21vZGFsLmV4cG9ydEltYWdlLnJhdGlvT3JpZ2luYWxTY3JlZW4nLFxuICAgIGdldFNpemU6IChzY3JlZW5XLCBzY3JlZW5IKSA9PiAoe3dpZHRoOiBzY3JlZW5XLCBoZWlnaHQ6IHNjcmVlbkh9KVxuICB9LFxuICB7XG4gICAgaWQ6IEVYUE9SVF9JTUdfUkFUSU9TLkNVU1RPTSxcbiAgICBoaWRkZW46IHRydWUsXG4gICAgbGFiZWw6ICdtb2RhbC5leHBvcnRJbWFnZS5yYXRpb0N1c3RvbScsXG4gICAgZ2V0U2l6ZTogKG1hcFcsIG1hcEgpID0+ICh7d2lkdGg6IG1hcFcsIGhlaWdodDogbWFwSH0pXG4gIH0sXG4gIHtcbiAgICBpZDogRVhQT1JUX0lNR19SQVRJT1MuRk9VUl9CWV9USFJFRSxcbiAgICBsYWJlbDogJ21vZGFsLmV4cG9ydEltYWdlLnJhdGlvNF8zJyxcbiAgICBnZXRTaXplOiAoc2NyZWVuVywgc2NyZWVuSCkgPT4gKHtcbiAgICAgIHdpZHRoOiBzY3JlZW5XLFxuICAgICAgaGVpZ2h0OiBNYXRoLnJvdW5kKHNjcmVlblcgKiAwLjc1KVxuICAgIH0pXG4gIH0sXG4gIHtcbiAgICBpZDogRVhQT1JUX0lNR19SQVRJT1MuU0lYVEVFTl9CWV9OSU5FLFxuICAgIGxhYmVsOiAnbW9kYWwuZXhwb3J0SW1hZ2UucmF0aW8xNl85JyxcbiAgICBnZXRTaXplOiAoc2NyZWVuVywgc2NyZWVuSCkgPT4gKHtcbiAgICAgIHdpZHRoOiBzY3JlZW5XLFxuICAgICAgaGVpZ2h0OiBNYXRoLnJvdW5kKHNjcmVlblcgKiAwLjU2MjUpXG4gICAgfSlcbiAgfVxuXTtcblxuZXhwb3J0IGNvbnN0IEVYUE9SVF9JTUdfUkVTT0xVVElPTl9PUFRJT05TID0gW1xuICB7XG4gICAgaWQ6IFJFU09MVVRJT05TLk9ORV9YLFxuICAgIGxhYmVsOiAnMXgnLFxuICAgIGF2YWlsYWJsZTogdHJ1ZSxcbiAgICBzY2FsZTogMSxcbiAgICBnZXRTaXplOiAoc2NyZWVuVywgc2NyZWVuSCkgPT4gKHtcbiAgICAgIHdpZHRoOiBzY3JlZW5XLFxuICAgICAgaGVpZ2h0OiBzY3JlZW5IXG4gICAgfSlcbiAgfSxcbiAge1xuICAgIGlkOiBSRVNPTFVUSU9OUy5UV09fWCxcbiAgICBsYWJlbDogJzJ4JyxcbiAgICBhdmFpbGFibGU6IHRydWUsXG4gICAgc2NhbGU6IDIsXG4gICAgZ2V0U2l6ZTogKHNjcmVlblcsIHNjcmVlbkgpID0+ICh7XG4gICAgICB3aWR0aDogc2NyZWVuVyAqIDIsXG4gICAgICBoZWlnaHQ6IHNjcmVlbkggKiAyXG4gICAgfSlcbiAgfVxuXTtcblxuZXhwb3J0IGNvbnN0IEVYUE9SVF9EQVRBX1RZUEUgPSBrZXlNaXJyb3Ioe1xuICBDU1Y6IG51bGxcbiAgLy8gU0hBUEVGSUxFOiBudWxsLFxuICAvLyBKU09OOiBudWxsLFxuICAvLyBHRU9KU09OOiBudWxsLFxuICAvLyBUT1BPSlNPTjogbnVsbFxufSk7XG5cbmV4cG9ydCBjb25zdCBFWFBPUlRfREFUQV9UWVBFX09QVElPTlMgPSBbXG4gIHtcbiAgICBpZDogRVhQT1JUX0RBVEFfVFlQRS5DU1YsXG4gICAgbGFiZWw6IEVYUE9SVF9EQVRBX1RZUEUuQ1NWLnRvTG93ZXJDYXNlKCksXG4gICAgYXZhaWxhYmxlOiB0cnVlXG4gIH1cbiAgLy8ge1xuICAvLyAgIGlkOiBFWFBPUlRfREFUQV9UWVBFLlNIQVBFRklMRSxcbiAgLy8gICBsYWJlbDogJ3NoYXBlZmlsZScsXG4gIC8vICAgYXZhaWxhYmxlOiBmYWxzZVxuICAvLyB9LFxuICAvLyB7XG4gIC8vICAgaWQ6IEVYUE9SVF9EQVRBX1RZUEUuSlNPTixcbiAgLy8gICBsYWJlbDogJ2pzb24nLFxuICAvLyAgIGF2YWlsYWJsZTogZmFsc2VcbiAgLy8gfSxcbiAgLy8ge1xuICAvLyAgIGlkOiBFWFBPUlRfREFUQV9UWVBFLkdFT0pTT04sXG4gIC8vICAgbGFiZWw6ICdnZW9qc29uJyxcbiAgLy8gICBhdmFpbGFibGU6IGZhbHNlXG4gIC8vIH0sXG4gIC8vIHtcbiAgLy8gICBpZDogRVhQT1JUX0RBVEFfVFlQRS5UT1BPSlNPTixcbiAgLy8gICBsYWJlbDogJ3RvcG9qc29uJyxcbiAgLy8gICBhdmFpbGFibGU6IGZhbHNlXG4gIC8vIH1cbl07XG5cbi8vIEV4cG9ydCBtYXAgdHlwZXNcbmV4cG9ydCBjb25zdCBFWFBPUlRfTUFQX0ZPUk1BVFMgPSBrZXlNaXJyb3Ioe1xuICBIVE1MOiBudWxsLFxuICBKU09OOiBudWxsXG59KTtcblxuZXhwb3J0IGNvbnN0IEVYUE9SVF9IVE1MX01BUF9NT0RFUyA9IGtleU1pcnJvcih7XG4gIFJFQUQ6IG51bGwsXG4gIEVESVQ6IG51bGxcbn0pO1xuXG4vLyBFeHBvcnQgbWFwIG9wdGlvbnNcbmV4cG9ydCBjb25zdCBFWFBPUlRfTUFQX0ZPUk1BVF9PUFRJT05TID0gT2JqZWN0LmVudHJpZXMoRVhQT1JUX01BUF9GT1JNQVRTKS5tYXAoZW50cnkgPT4gKHtcbiAgaWQ6IGVudHJ5WzBdLFxuICBsYWJlbDogZW50cnlbMV0udG9Mb3dlckNhc2UoKSxcbiAgYXZhaWxhYmxlOiB0cnVlXG59KSk7XG5cbmV4cG9ydCBjb25zdCBFWFBPUlRfSFRNTF9NQVBfTU9ERV9PUFRJT05TID0gT2JqZWN0LmVudHJpZXMoRVhQT1JUX0hUTUxfTUFQX01PREVTKS5tYXAoZW50cnkgPT4gKHtcbiAgaWQ6IGVudHJ5WzBdLFxuICBsYWJlbDogYG1vZGFsLmV4cG9ydE1hcC5odG1sLiR7ZW50cnlbMV0udG9Mb3dlckNhc2UoKX1gLFxuICBhdmFpbGFibGU6IHRydWUsXG4gIHVybDogZ2V0SFRNTE1hcE1vZGVUaWxlVXJsKGVudHJ5WzFdKVxufSkpO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9VVUlEX0NPVU5UID0gNjtcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfTk9USUZJQ0FUSU9OX01FU1NBR0UgPSAnTUVTU0FHRV9OT1RfUFJPVklERUQnO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9OT1RJRklDQVRJT05fVFlQRVMgPSBrZXlNaXJyb3Ioe1xuICBpbmZvOiBudWxsLFxuICBlcnJvcjogbnVsbCxcbiAgd2FybmluZzogbnVsbCxcbiAgc3VjY2VzczogbnVsbFxufSk7XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX05PVElGSUNBVElPTl9UT1BJQ1MgPSBrZXlNaXJyb3Ioe1xuICBnbG9iYWw6IG51bGwsXG4gIGZpbGU6IG51bGxcbn0pO1xuXG4vLyBNaW5pbXVtIHRpbWUgYmV0d2VlbiBpZGVudGljYWwgbm90aWZpY2F0aW9ucyBhYm91dCBkZWNrLmdsIGVycm9yc1xuZXhwb3J0IGNvbnN0IFRIUk9UVExFX05PVElGSUNBVElPTl9USU1FID0gMjUwMDtcblxuLy8gQW5pbWF0aW9uXG5leHBvcnQgY29uc3QgQkFTRV9TUEVFRCA9IDYwMDtcbmV4cG9ydCBjb25zdCBGUFMgPSA2MDtcblxuLyoqXG4gKiA0IEFuaW1hdGlvbiBXaW5kb3cgVHlwZXNcbiAqIDEuIGZyZWVcbiAqICB8LT4gIHwtPlxuICogQ3VycmVudCB0aW1lIGlzIGEgZml4ZWQgcmFuZ2UsIGFuaW1hdGlvbiBjb250cm9sbGVyIGNhbGxzIG5leHQgYW5pbWF0aW9uIGZyYW1lcyBjb250aW51b3VzbHkgdG8gYW5pbWF0aW9uIGEgbW92aW5nIHdpbmRvd1xuICogVGhlIGluY3JlbWVudCBpZCBiYXNlZCBvbiBkb21haW4gLyBCQVNFX1NQRUVEICogU1BFRURcbiAqXG4gKiAyLiBpbmNyZW1lbnRhbFxuICogfCAgICB8LT5cbiAqIFNhbWUgYXMgZnJlZSwgY3VycmVudCB0aW1lIGlzIGEgZ3Jvd2luZyByYW5nZSwgb25seSB0aGUgbWF4IHZhbHVlIG9mIHJhbmdlIGluY3JlbWVudCBkdXJpbmcgYW5pbWF0aW9uLlxuICogVGhlIGluY3JlbWVudCBpcyBhbHNvIGJhc2VkIG9uIGRvbWFpbiAvIEJBU0VfU1BFRUQgKiBTUEVFRFxuICpcbiAqIDMuIHBvaW50XG4gKiBvIC0+IG9cbiAqIEN1cnJlbnQgdGltZSBpcyBhIHBvaW50LCBhbmltYXRpb24gY29udHJvbGxlciBjYWxscyBuZXh0IGFuaW1hdGlvbiBmcmFtZSBjb250aW51b3VzbHkgdG8gYW5pbWF0aW9uIGEgbW92aW5nIHBvaW50XG4gKiBUaGUgaW5jcmVtZW50IGlzIGJhc2VkIG9uIGRvbWFpbiAvIEJBU0VfU1BFRUQgKiBTUEVFRFxuICpcbiAqIDQuIGludGVydmFsXG4gKiBvIH4+IG9cbiAqIEN1cnJlbnQgdGltZSBpcyBhIHBvaW50LiBBbiBhcnJheSBvZiBzb3J0ZWQgdGltZSBzdGVwcyBuZWVkIHRvIGJlIHByb3ZpZGVkLlxuICogYW5pbWF0aW9uIGNvbnRyb2xsZXIgY2FsbHMgbmV4dCBhbmltYXRpb24gYXQgYSBpbnRlcnZhbCB3aGVuIHRoZSBwb2ludCBqdW1wcyB0byB0aGUgbmV4dCBzdGVwXG4gKi9cbmV4cG9ydCBjb25zdCBBTklNQVRJT05fV0lORE9XID0ga2V5TWlycm9yKHtcbiAgZnJlZTogbnVsbCxcbiAgaW5jcmVtZW50YWw6IG51bGwsXG4gIHBvaW50OiBudWxsLFxuICBpbnRlcnZhbDogbnVsbFxufSk7XG5leHBvcnQgY29uc3QgREVGQVVMVF9USU1FX0ZPUk1BVCA9ICdNTS9ERC9ZWSBISDptbTpzc2EnO1xuZXhwb3J0IGNvbnN0IFNQRUVEX0NPTlRST0xfUkFOR0UgPSBbMCwgMTBdO1xuZXhwb3J0IGNvbnN0IFNQRUVEX0NPTlRST0xfU1RFUCA9IDAuMDAxO1xuXG4vLyBHZW9jb2RlclxuZXhwb3J0IGNvbnN0IEdFT0NPREVSX0RBVEFTRVRfTkFNRSA9ICdnZW9jb2Rlcl9kYXRhc2V0JztcbmV4cG9ydCBjb25zdCBHRU9DT0RFUl9MQVlFUl9JRCA9ICdnZW9jb2Rlcl9sYXllcic7XG5leHBvcnQgY29uc3QgR0VPQ09ERVJfR0VPX09GRlNFVCA9IDAuMDU7XG5leHBvcnQgY29uc3QgR0VPQ09ERVJfSUNPTl9DT0xPUiA9IFsyNTUsIDAsIDBdO1xuZXhwb3J0IGNvbnN0IEdFT0NPREVSX0lDT05fU0laRSA9IDgwO1xuXG4vLyBXZSBjb3VsZCB1c2UgZGlyZWN0bHkgcmVhY3QtbWFwLWdsLWRyYXcgRWRpdG9yTW9kZSBidXQgdGhpcyB3b3VsZFxuLy8gY3JlYXRlIGEgZGlyZWN0IGRlcGVuZGVuY3kgd2l0aCByZWFjdC1tYXAtZ2wtZHJhd1xuLy8gQ3JlYXRlZCB0aGlzIG1hcCB0byBiZSBpbmRlcGVuZGVudCBmcm9tIHJlYWN0LW1hcC1nbC1kcmF3XG5leHBvcnQgY29uc3QgRURJVE9SX01PREVTID0ge1xuICBSRUFEX09OTFk6IEVkaXRvck1vZGVzLlJFQURfT05MWSxcbiAgRFJBV19QT0xZR09OOiBFZGl0b3JNb2Rlcy5EUkFXX1BPTFlHT04sXG4gIERSQVdfUkVDVEFOR0xFOiBFZGl0b3JNb2Rlcy5EUkFXX1JFQ1RBTkdMRSxcbiAgRURJVDogRWRpdG9yTW9kZXMuRURJVF9WRVJURVhcbn07XG5cbmV4cG9ydCBjb25zdCBFRElUT1JfQVZBSUxBQkxFX0xBWUVSUyA9IFtcbiAgTEFZRVJfVFlQRVMucG9pbnQsXG4gIExBWUVSX1RZUEVTLmhleGFnb24sXG4gIExBWUVSX1RZUEVTLmFyYyxcbiAgTEFZRVJfVFlQRVMubGluZSxcbiAgTEFZRVJfVFlQRVMuaGV4YWdvbklkXG5dO1xuLy8gR1BVIEZpbHRlcmluZ1xuLyoqXG4gKiBNYXggbnVtYmVyIG9mIGZpbHRlciB2YWx1ZSBidWZmZXJzIHRoYXQgZGVjay5nbCBwcm92aWRlc1xuICovXG5leHBvcnQgY29uc3QgTUFYX0dQVV9GSUxURVJTID0gNDtcbmV4cG9ydCBjb25zdCBNQVBfVEhVTUJOQUlMX0RJTUVOU0lPTiA9IHtcbiAgd2lkdGg6IDMwMCxcbiAgaGVpZ2h0OiAyMDBcbn07XG5cbmV4cG9ydCBjb25zdCBNQVBfSU5GT19DSEFSQUNURVIgPSB7XG4gIHRpdGxlOiAxMDAsXG4gIGRlc2NyaXB0aW9uOiAxMDBcbn07XG5cbi8vIExvYWQgZGF0YVxuZXhwb3J0IGNvbnN0IExPQURJTkdfTUVUSE9EUyA9IGtleU1pcnJvcih7XG4gIHVwbG9hZDogbnVsbCxcbiAgc3RvcmFnZTogbnVsbFxufSk7XG5cbmV4cG9ydCBjb25zdCBEQVRBU0VUX0ZPUk1BVFMgPSBrZXlNaXJyb3Ioe1xuICByb3c6IG51bGwsXG4gIGdlb2pzb246IG51bGwsXG4gIGNzdjogbnVsbCxcbiAga2VwbGVyZ2w6IG51bGxcbn0pO1xuXG5leHBvcnQgY29uc3QgTUFQX0NPTlRST0xTID0ga2V5TWlycm9yKHtcbiAgdmlzaWJsZUxheWVyczogbnVsbCxcbiAgbWFwTGVnZW5kOiBudWxsLFxuICB0b2dnbGUzZDogbnVsbCxcbiAgc3BsaXRNYXA6IG51bGwsXG4gIG1hcERyYXc6IG51bGwsXG4gIG1hcExvY2FsZTogbnVsbFxufSk7XG5cbmV4cG9ydCBjb25zdCBNQVNLX0xBWUVSX0lEID0gJ21hc2tfbGF5ZXInO1xuXG5leHBvcnQgY29uc3QgWk9PTV9MRVZFTF9MSU1JVFMgPSB7XG4gIG1pbjogMCxcbiAgbWF4OiAyMVxufTtcbiJdfQ==
|
|
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==
|
|
@@ -1533,6 +1533,7 @@ var Layer = /*#__PURE__*/function () {
|
|
|
1533
1533
|
}, {
|
|
1534
1534
|
key: "getCustomMarkerIconAccessor",
|
|
1535
1535
|
value: function getCustomMarkerIconAccessor(customMarkersStatus, iconUrlAccessor) {
|
|
1536
|
+
var mask = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
|
|
1536
1537
|
var maxIconSize = this.getMaxMarkerSize();
|
|
1537
1538
|
return function (d) {
|
|
1538
1539
|
var wantedUrl = typeof iconUrlAccessor === 'function' ? iconUrlAccessor(d) : iconUrlAccessor;
|
|
@@ -1542,7 +1543,7 @@ var Layer = /*#__PURE__*/function () {
|
|
|
1542
1543
|
url: url,
|
|
1543
1544
|
width: maxIconSize,
|
|
1544
1545
|
height: maxIconSize,
|
|
1545
|
-
mask:
|
|
1546
|
+
mask: mask
|
|
1546
1547
|
};
|
|
1547
1548
|
};
|
|
1548
1549
|
}
|
|
@@ -1660,4 +1661,4 @@ var Layer = /*#__PURE__*/function () {
|
|
|
1660
1661
|
|
|
1661
1662
|
var _default = Layer;
|
|
1662
1663
|
exports["default"] = _default;
|
|
1663
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9sYXllcnMvYmFzZS1sYXllci5qcyJdLCJuYW1lcyI6WyJnZW5lcmF0ZUNvbG9yIiwiTEFZRVJfSURfTEVOR1RIIiwiRkFMTEJBQ0tfSUNPTiIsIk1BWF9TQU1QTEVfU0laRSIsImRlZmF1bHREb21haW4iLCJkYXRhRmlsdGVyRXh0ZW5zaW9uIiwiRGF0YUZpbHRlckV4dGVuc2lvbiIsImZpbHRlclNpemUiLCJNQVhfR1BVX0ZJTFRFUlMiLCJkZWZhdWx0RGF0YUFjY2Vzc29yIiwiZGMiLCJkIiwiZGVmYXVsdEdldEZpZWxkVmFsdWUiLCJmaWVsZCIsInZhbHVlQWNjZXNzb3IiLCJzY2FsZUlkZW50aXR5IiwidiIsIk9WRVJMQVlfVFlQRSIsImRlY2tnbCIsIm1hcGJveGdsIiwibGF5ZXJDb2xvcnMiLCJPYmplY3QiLCJ2YWx1ZXMiLCJEYXRhVml6Q29sb3JzIiwibWFwIiwiaGV4VG9SZ2IiLCJpbmRleCIsImxlbmd0aCIsImNvbG9yTWFrZXIiLCJMYXllciIsInByb3BzIiwiaWQiLCJtZXRhIiwidmlzQ29uZmlnU2V0dGluZ3MiLCJfaW50ZXJhY3Rpdml0eVNldHRpbmdzIiwiY29uZmlnIiwiZ2V0RGVmYXVsdExheWVyQ29uZmlnIiwiY29sdW1ucyIsImdldExheWVyQ29sdW1ucyIsIkRlZmF1bHRMYXllckljb24iLCJ0eXBlIiwiY29sb3IiLCJwcm9wZXJ0eSIsInNjYWxlIiwiZG9tYWluIiwicmFuZ2UiLCJrZXkiLCJjaGFubmVsU2NhbGVUeXBlIiwiQ0hBTk5FTF9TQ0FMRVMiLCJudWxsVmFsdWUiLCJOT19WQUxVRV9DT0xPUiIsImRlZmF1bHRWYWx1ZSIsInNpemUiLCJsYXQiLCJwYWlyIiwiZmllbGRQYWlyS2V5IiwibG5nIiwibGF0MCIsImxuZzAiLCJsYXQxIiwibG5nMSIsImludGVyYWN0aXZpdHlTZXR0aW5ncyIsIkJvb2xlYW4iLCJob3ZlciIsImZpZWxkcyIsImNsaWNrIiwiaGFzVG9vbHRpcCIsImVuYWJsZWQiLCJkYXRhSWQiLCJ2aXNpYmlsaXR5Qnlab29tIiwibWluIiwiWk9PTV9MRVZFTF9MSU1JVFMiLCJtYXgiLCJsYWJlbCIsIkRFRkFVTFRfTEFZRVJfTEFCRUwiLCJuZXh0IiwidmFsdWUiLCJpc1Zpc2libGUiLCJpc0NvbmZpZ0FjdGl2ZSIsImhpZ2hsaWdodENvbG9yIiwiREVGQVVMVF9ISUdITElHSFRfQ09MT1IiLCJoaWRkZW4iLCJjb2xvckZpZWxkIiwiY29sb3JEb21haW4iLCJjb2xvclNjYWxlIiwiU0NBTEVfVFlQRVMiLCJxdWFudGlsZSIsInNpemVEb21haW4iLCJzaXplU2NhbGUiLCJsaW5lYXIiLCJzaXplRmllbGQiLCJyYWRpdXNGaWVsZCIsInZpc0NvbmZpZyIsInRleHRMYWJlbCIsIkRFRkFVTFRfVEVYVF9MQUJFTCIsImNvbG9yVUkiLCJERUZBVUxUX0NPTE9SX1VJIiwiY29sb3JSYW5nZSIsImFuaW1hdGlvbiIsInZpc3VhbENoYW5uZWxzIiwibWVhc3VyZSIsImRpc3BsYXlOYW1lIiwibmFtZSIsImRlZmF1bHRNZWFzdXJlIiwidXBkYXRlIiwiZmllbGRJZHgiLCJjb2x1bW5QYWlycyIsInBhcnRuZXJLZXkiLCJwYXJ0bmVyRmllbGRQYWlyS2V5Iiwiem9vbSIsInpvb21PZmZzZXQiLCJNYXRoIiwicG93IiwiZW5hYmxlRWxldmF0aW9uWm9vbUZhY3RvciIsImRhdGFzZXRzIiwiZmlsdGVyZWRJbmRleCIsIm9iamVjdCIsImRhdGFDb250YWluZXIiLCJyb3ciLCJjb25maWdUb0NvcHkiLCJzaGFsbG93Q29weSIsImNvbmNhdCIsIm5vdFRvQ29weSIsImZvckVhY2giLCJncm91cCIsInB1c2giLCJjdXJyZW50Q29uZmlnIiwiY29waWVkIiwiY29weUxheWVyQ29uZmlnIiwidXBkYXRlTGF5ZXJDb25maWciLCJrZXlzIiwiY2hhbm5lbCIsInZhbGlkYXRlVmlzdWFsQ2hhbm5lbCIsImluY2x1ZGVzIiwibGF5ZXJWaXNDb25maWdzIiwiaXRlbSIsIkxBWUVSX1ZJU19DT05GSUdTIiwiZXZlcnkiLCJwIiwiaGFzT3duUHJvcGVydHkiLCJjb2x1bW5WYWxpZGF0b3JzIiwicmVxdWlyZWQiLCJyZXF1aXJlZExheWVyQ29sdW1ucyIsInJlZHVjZSIsImFjY3UiLCJ2YWxpZGF0b3IiLCJvcHRpb25hbCIsIm9wdGlvbmFsQ29sdW1ucyIsIm5ld0NvbmZpZyIsIm5ld1Zpc0NvbmZpZyIsInByb3AiLCJwcmV2aW91cyIsImNvbG9yVUlQcm9wIiwiZW50cmllcyIsImlzQ29sb3JSYW5nZSIsImNvbG9ycyIsInVwZGF0ZUNvbG9yVUlCeUNvbG9yUmFuZ2UiLCJ1cGRhdGVDb2xvclJhbmdlQnlDb2xvclVJIiwidXBkYXRlQ3VzdG9tUGFsZXR0ZSIsImNvbG9yUmFuZ2VDb25maWciLCJjdXN0b20iLCJjdXN0b21QYWxldHRlIiwic2hvd0Ryb3Bkb3duIiwic3RlcHMiLCJyZXZlcnNlZCIsInNob3VsZFVwZGF0ZSIsInNvbWUiLCJzYW1lR3JvdXAiLCJDT0xPUl9SQU5HRVMiLCJmaWx0ZXIiLCJjciIsImZpbmQiLCJjb2xvck1hcCIsInVwZGF0ZUNvbG9yTWFwIiwidXBkYXRlTGF5ZXJWaXNDb25maWciLCJ1cGRhdGVDYXRlZ29yeUNvbG9yTWFwIiwidXBkYXRlTnVtZXJpY0NvbG9yTWFwIiwiYXNzaWduZWRDYXRlZ29yaWVzIiwibmV3Q29sb3JNYXAiLCJzbGljZSIsImNNYXAiLCJ1bmFzc2lnbmVkQ29sb3JzIiwiY2F0ZWdvcnkiLCJjb2xvck1hcFZhbHVlcyIsImMiLCJtYXhWYWx1ZSIsInByZXZWYWx1ZSIsInN0ZXAiLCJpIiwibGF5ZXJEYXRhIiwiZGF0YSIsImhhc0FsbENvbHVtbnMiLCJoYXNMYXllckRhdGEiLCJyZW5kZXJMYXllciIsIkFycmF5IiwiaXNBcnJheSIsIk1hcCIsImsiLCJzZXQiLCJTQ0FMRV9GVU5DIiwiZnJvbSIsInVua25vd24iLCJVTktOT1dOX0NPTE9SIiwiZ2V0VmlzQ2hhbm5lbFNjYWxlIiwiZmFsbGJhY2tJY29uIiwidW5rbm93blZhbHVlIiwibWFwcGluZyIsIm90aGVyc01hcmtlciIsIm1hcmtlck1hcCIsIm1hcmtlclVybCIsImRhdGFBY2Nlc3NvciIsImF0dHJpYnV0ZUFjY2Vzc29ycyIsImZpeGVkIiwiYWNjZXNzb3IiLCJnZXRBdHRyaWJ1dGVWYWx1ZSIsImFnZ3JlZ2F0aW9uIiwic2hvdWxkR2V0U2NhbGUiLCJpZGVudGl0eSIsImFyZ3MiLCJpc0ZpeGVkIiwiZmllbGRDb25maWciLCJhZ2dyZWdhdGlvblZhbHVlIiwic2NhbGVGdW5jdGlvbiIsImdldENvbG9yU2NhbGUiLCJjdXN0b21NYXJrZXIiLCJnZXRDdXN0b21NYXJrZXJzU2NhbGUiLCJjdXN0b21NYXJrZXJzVXJsIiwiZ2V0RW5jb2RlZENoYW5uZWxWYWx1ZSIsIkNvbnNvbGUiLCJ3YXJuIiwib3JkaW5hbCIsImdldFBvc2l0aW9uIiwic2FtcGxlRGF0YSIsIm51bVJvd3MiLCJwb2ludHMiLCJtYXBJbmRleCIsImxhdEJvdW5kcyIsImxuZ0JvdW5kcyIsImRhdGFVcGRhdGVUcmlnZ2VycyIsInRyaWdnZXJDaGFuZ2VkIiwiX29sZERhdGFVcGRhdGVUcmlnZ2VycyIsIl9hZ2dyZWdhdGlvbiIsImdldFZhbHVlIiwiYXR0cmlidXRlVmFsdWUiLCJBTExfRklFTERfVFlQRVMiLCJ0aW1lc3RhbXAiLCJEYXRlIiwiYWxsRGF0YSIsImdldERhdGEiLCJkYXRhc2V0SWQiLCJnZXRNZXRhIiwidGwiLCJvbGRMYXllckRhdGEiLCJsYXllckRhdGFzZXQiLCJ1cGRhdGVWaXN1YWxDaGFubmVsRmllbGRzIiwiZ2V0UG9zaXRpb25BY2Nlc3NvciIsImdldERhdGFVcGRhdGVUcmlnZ2VycyIsImdldENoYW5nZWRUcmlnZ2VycyIsInVwZGF0ZUxheWVyTWV0YSIsImNhbGN1bGF0ZURhdGFBdHRyaWJ1dGUiLCJkYXRhc2V0Iiwib2xkRmllbGQiLCJuZXdEYXRhU2V0RmllbGQiLCJmZCIsIm5ld0ZpbHRlciIsInRhYmxlIiwiZ2V0RGF0YXNldCIsInNjYWxlVHlwZSIsInVwZGF0ZWREb21haW4iLCJjYWxjdWxhdGVMYXllckRvbWFpbiIsInZhbGlkYXRlRmllbGRUeXBlIiwidmFsaWRhdGVTY2FsZSIsInZpc3VhbENoYW5uZWwiLCJzdXBwb3J0ZWRGaWVsZFR5cGVzIiwiY2hhbm5lbFN1cHBvcnRlZEZpZWxkVHlwZXMiLCJDSEFOTkVMX1NDQUxFX1NVUFBPUlRFRF9GSUVMRFMiLCJzY2FsZU9wdGlvbnMiLCJnZXRTY2FsZU9wdGlvbnMiLCJGSUVMRF9PUFRTIiwidXBkYXRlVHJpZ2dlcnMiLCJkYXRhU2V0RmllbGQiLCJmIiwiZ2V0Q29sdW1uTGF5ZXJEb21haW4iLCJvYmplY3RJbmZvIiwiaXNMYXllckhvdmVyZWQiLCJwaWNrZWQiLCJsYXllciIsIm1hcFN0YXRlIiwiZml4ZWRSYWRpdXMiLCJyYWRpdXNDaGFubmVsIiwidmMiLCJ1bmRlZmluZWQiLCJyYWRpdXMiLCJnZXRab29tRmFjdG9yIiwicmFkaXVzUmFuZ2UiLCJjZWlsIiwibm9uZUxheWVyRGF0YUFmZmVjdGluZ1Byb3BzIiwiaW50ZXJhY3Rpb25Db25maWciLCJicnVzaGluZ1RhcmdldCIsImJydXNoIiwiYXV0b0hpZ2hsaWdodCIsImJydXNoaW5nUmFkaXVzIiwiYnJ1c2hpbmdFbmFibGVkIiwiaWR4IiwiZ3B1RmlsdGVyIiwidmlzaWJsZSIsIm1hc2tQb2x5Z29uIiwibWFza0V4dGVuc2lvblByb3BzIiwiY29vcmRpbmF0ZVN5c3RlbSIsIkNPT1JESU5BVEVfU1lTVEVNIiwiTE5HTEFUIiwicGlja2FibGUiLCJoYXNJbnRlcmFjdGl2aXR5Iiwid3JhcExvbmdpdHVkZSIsInBhcmFtZXRlcnMiLCJkZXB0aFRlc3QiLCJkcmFnUm90YXRlIiwiZW5hYmxlM2QiLCJvcGFjaXR5IiwiZXh0ZW5zaW9ucyIsImZpbHRlclJhbmdlIiwicmVuZGVyT3B0cyIsImdldFBpeGVsT2Zmc2V0Iiwic2hhcmVkUHJvcHMiLCJ0ZXh0TGFiZWxzIiwiZ2V0VGV4dCIsIlRleHRMYXllciIsImNoYXJhY3RlclNldCIsImdldFNpemUiLCJnZXRUZXh0QW5jaG9yIiwiYW5jaG9yIiwiZ2V0QWxpZ25tZW50QmFzZWxpbmUiLCJhbGlnbm1lbnQiLCJnZXRDb2xvciIsImdldEZpbHRlclZhbHVlIiwiZ2V0UmFkaXVzIiwiY3VzdG9tTWFya2Vyc1N0YXR1cyIsImljb25VcmxBY2Nlc3NvciIsIm1heEljb25TaXplIiwiZ2V0TWF4TWFya2VyU2l6ZSIsIndhbnRlZFVybCIsInVybCIsIndpZHRoIiwiaGVpZ2h0IiwibWFzayIsImtlcGxlclRhYmxlIiwiZm91bmRMYXllcnMiLCJkZWZhdWx0RmllbGRzIiwiYWxsRmllbGRzIiwicmVxdWlyZWRDb2x1bW5zIiwicHJldiIsInJlcXVpcmVkRmllbGRzIiwiZ2V0QWxsUG9zc2libGVDb2x1bW5QYXJpcyIsImFsbEtleXMiLCJwb2ludGVycyIsImNvdW50UGVyS2V5IiwicGFpcnMiLCJpbmNyZW1lbnRQb2ludGVycyIsIm5ld1BhaXIiLCJjdXVyIiwicHRzIiwiY291bnRzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQW9CQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFQTs7QUFDQTs7QUFFQTs7QUFZQTs7QUFDQTs7QUFDQTs7QUFRQTs7QUFFQTs7QUFDQTs7QUFFQTs7QUFDQTs7QUFDQTs7Ozs7Ozs7Ozs7O3dEQTRCVUEsYTs7QUExQlY7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDTyxJQUFNQyxlQUFlLEdBQUcsQ0FBeEIsQyxDQUVQOzs7QUFDQSxJQUFNQyxhQUFhLEdBQ2pCLDBMQURGO0FBR0EsSUFBTUMsZUFBZSxHQUFHLElBQXhCO0FBQ0EsSUFBTUMsYUFBYSxHQUFHLENBQUMsQ0FBRCxFQUFJLENBQUosQ0FBdEI7QUFDQSxJQUFNQyxtQkFBbUIsR0FBRyxJQUFJQywrQkFBSixDQUF3QjtBQUFDQyxFQUFBQSxVQUFVLEVBQUVDO0FBQWIsQ0FBeEIsQ0FBNUI7O0FBRUEsSUFBTUMsbUJBQW1CLEdBQUcsU0FBdEJBLG1CQUFzQixDQUFBQyxFQUFFO0FBQUEsU0FBSSxVQUFBQyxDQUFDO0FBQUEsV0FBSUEsQ0FBSjtB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LENBQTFDLEVBQTZDO0FBQzNDO0FBQ0EsaUJBQU8sS0FBUDtBQUNEOztBQUVELFlBQUlELEdBQUcsQ0FBQzlVLEtBQUQsQ0FBSCxHQUFhLENBQWIsR0FBaUIrVSxNQUFNLENBQUMvVSxLQUFELENBQTNCLEVBQW9DO0FBQ2xDOFUsVUFBQUEsR0FBRyxDQUFDOVUsS0FBRCxDQUFILEdBQWE4VSxHQUFHLENBQUM5VSxLQUFELENBQUgsR0FBYSxDQUExQjtBQUNBLGlCQUFPLElBQVA7QUFDRDs7QUFFRDhVLFFBQUFBLEdBQUcsQ0FBQzlVLEtBQUQsQ0FBSCxHQUFhLENBQWI7QUFDQSxlQUFPMlUsaUJBQWlCLENBQUNHLEdBQUQsRUFBTUMsTUFBTixFQUFjL1UsS0FBSyxHQUFHLENBQXRCLENBQXhCO0FBQ0Q7O0FBRUQsYUFBTzBVLEtBQVA7QUFDRDs7O1dBRUQsa0JBQWdCNUssQ0FBaEIsRUFBbUI7QUFDakIsYUFBTywwQkFBU0EsQ0FBVCxDQUFQO0FBQ0Q7Ozs7O2VBK2pDWTNKLEsiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgKGMpIDIwMjIgVWJlciBUZWNobm9sb2dpZXMsIEluYy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4vLyBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4vLyBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4vLyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4vLyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbi8vIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cbi8vIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1Jcbi8vIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4vLyBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4vLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuLy8gT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTlxuLy8gVEhFIFNPRlRXQVJFLlxuXG5pbXBvcnQge2NvbnNvbGUgYXMgQ29uc29sZX0gZnJvbSAnZ2xvYmFsL3dpbmRvdyc7XG5pbXBvcnQga2V5bWlycm9yIGZyb20gJ2tleW1pcnJvcic7XG5pbXBvcnQge0RhdGFGaWx0ZXJFeHRlbnNpb259IGZyb20gJ0BkZWNrLmdsL2V4dGVuc2lvbnMnO1xuaW1wb3J0IHtDT09SRElOQVRFX1NZU1RFTX0gZnJvbSAnQGRlY2suZ2wvY29yZSc7XG5pbXBvcnQge1RleHRMYXllcn0gZnJvbSAnQGRlY2suZ2wvbGF5ZXJzJztcblxuaW1wb3J0IERlZmF1bHRMYXllckljb24gZnJvbSAnLi9kZWZhdWx0LWxheWVyLWljb24nO1xuaW1wb3J0IHtkaWZmVXBkYXRlVHJpZ2dlcnN9IGZyb20gJy4vbGF5ZXItdXBkYXRlJztcblxuaW1wb3J0IHtcbiAgQUxMX0ZJRUxEX1RZUEVTLFxuICBOT19WQUxVRV9DT0xPUixcbiAgU0NBTEVfVFlQRVMsXG4gIENIQU5ORUxfU0NBTEVTLFxuICBGSUVMRF9PUFRTLFxuICBTQ0FMRV9GVU5DLFxuICBDSEFOTkVMX1NDQUxFX1NVUFBPUlRFRF9GSUVMRFMsXG4gIE1BWF9HUFVfRklMVEVSUyxcbiAgVU5LTk9XTl9DT0xPUixcbiAgWk9PTV9MRVZFTF9MSU1JVFNcbn0gZnJvbSAnY29uc3RhbnRzL2RlZmF1bHQtc2V0dGluZ3MnO1xuaW1wb3J0IHtDT0xPUl9SQU5HRVN9IGZyb20gJ2NvbnN0YW50cy9jb2xvci1yYW5nZXMnO1xuaW1wb3J0IHtEYXRhVml6Q29sb3JzfSBmcm9tICdjb25zdGFudHMvY3VzdG9tLWNvbG9yLXJhbmdlcyc7XG5pbXBvcnQge1xuICBMQVlFUl9WSVNfQ09ORklHUyxcbiAgREVGQVVMVF9URVhUX0xBQkVMLFxuICBERUZBVUxUX0NPTE9SX1VJLFxuICBERUZBVUxUX0hJR0hMSUdIVF9DT0xPUixcbiAgREVGQVVMVF9MQVlFUl9MQUJFTFxufSBmcm9tICcuL2xheWVyLWZhY3RvcnknO1xuXG5pbXBvcnQge2dlbmVyYXRlSGFzaElkLCBpc1BsYWluT2JqZWN0fSBmcm9tICd1dGlscy91dGlscyc7XG5cbmltcG9ydCB7Z2V0TGF0TG5nQm91bmRzLCBub3ROdWxsb3JVbmRlZmluZWR9IGZyb20gJ3V0aWxzL2RhdGEtdXRpbHMnO1xuaW1wb3J0IHtnZXRTYW1wbGVEYXRhfSBmcm9tICd1dGlscy90YWJsZS11dGlscy9kYXRhLWNvbnRhaW5lci11dGlscyc7XG5cbmltcG9ydCB7aGV4VG9SZ2IsIGdldENvbG9yR3JvdXBCeU5hbWUsIHJldmVyc2VDb2xvclJhbmdlfSBmcm9tICd1dGlscy9jb2xvci11dGlscyc7XG5pbXBvcnQge2dldE1hc2tFeHRlbnNpb25Qcm9wc30gZnJvbSAndXRpbHMvbGF5ZXItdXRpbHMnO1xuaW1wb3J0IHtzY2FsZU9yZGluYWx9IGZyb20gJ2QzLXNjYWxlJztcblxuLyoqIEB0eXBlZGVmIHtpbXBvcnQoJy4vaW5kZXgnKS5MYXllcn0gTGF5ZXJDbGFzc30gKi9cblxuLyoqXG4gKiBBcHByb3guIG51bWJlciBvZiBwb2ludHMgdG8gc2FtcGxlIGluIGEgbGFyZ2UgZGF0YSBzZXRcbiAqIEB0eXBlIHtudW1iZXJ9XG4gKi9cbmV4cG9ydCBjb25zdCBMQVlFUl9JRF9MRU5HVEggPSA2O1xuXG4vLyBOb3RlLCB0aGlzIGlzIGlzIFNWRyBvZiBzb2xpZCBjaXJjbGUgZW5jb2RlZCBhcyBkYXRhLXVyaVxuY29uc3QgRkFMTEJBQ0tfSUNPTiA9XG4gICdkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGYtODtiYXNlNjQsUEhOMlp5QjJhV1YzUW05NFBTSXdJREFnTVRBd0lERXdNQ0lnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JajROQ2lBZ1BHTnBjbU5zWlNCamVEMGlOVEFpSUdONVBTSTFNQ0lnY2owaU5UQWlMejROQ2p3dmMzWm5QZz09JztcblxuY29uc3QgTUFYX1NBTVBMRV9TSVpFID0gNTAwMDtcbmNvbnN0IGRlZmF1bHREb21haW4gPSBbMCwgMV07XG5jb25zdCBkYXRhRmlsdGVyRXh0ZW5zaW9uID0gbmV3IERhdGFGaWx0ZXJFeHRlbnNpb24oe2ZpbHRlclNpemU6IE1BWF9HUFVfRklMVEVSU30pO1xuXG5jb25zdCBkZWZhdWx0RGF0YUFjY2Vzc29yID0gZGMgPT4gZCA9PiBkO1xuY29uc3QgZGVmYXVsdEdldEZpZWxkVmFsdWUgPSAoZmllbGQsIGQpID0+IGZpZWxkLnZhbHVlQWNjZXNzb3IoZCk7XG5jb25zdCBzY2FsZUlkZW50aXR5ID0gdiA9PiB2O1xuXG5leHBvcnQgY29uc3QgT1ZFUkxBWV9UWVBFID0ga2V5bWlycm9yKHtcbiAgZGVja2dsOiBudWxsLFxuICBtYXBib3hnbDogbnVsbFxufSk7XG5cbmV4cG9ydCBjb25zdCBsYXllckNvbG9ycyA9IE9iamVjdC52YWx1ZXMoRGF0YVZpekNvbG9ycykubWFwKGhleFRvUmdiKTtcbmZ1bmN0aW9uKiBnZW5lcmF0ZUNvbG9yKCkge1xuICBsZXQgaW5kZXggPSAwO1xuICB3aGlsZSAoaW5kZXggPCBsYXllckNvbG9ycy5sZW5ndGggKyAxKSB7XG4gICAgaWYgKGluZGV4ID09PSBsYXllckNvbG9ycy5sZW5ndGgpIHtcbiAgICAgIGluZGV4ID0gMDtcbiAgICB9XG4gICAgeWllbGQgbGF5ZXJDb2xvcnNbaW5kZXgrK107XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IGNvbG9yTWFrZXIgPSBnZW5lcmF0ZUNvbG9yKCk7XG5cbi8qKiBAdHlwZSB7TGF5ZXJDbGFzc30gKi9cbmNsYXNzIExheWVyIHtcbiAgY29uc3RydWN0b3IocHJvcHMgPSB7fSkge1xuICAgIHRoaXMuaWQgPSBwcm9wcy5pZCB8fCBnZW5lcmF0ZUhhc2hJZChMQVlFUl9JRF9MRU5HVEgpO1xuXG4gICAgLy8gbWV0YVxuICAgIHRoaXMubWV0YSA9IHt9O1xuXG4gICAgLy8gdmlzQ29uZmlnU2V0dGluZ3NcbiAgICB0aGlzLnZpc0NvbmZpZ1NldHRpbmdzID0ge307XG5cbiAgICAvLyBpbnRlcmFjdGl2aXR5U2V0dGluZ3NcbiAgICB0aGlzLl9pbnRlcmFjdGl2aXR5U2V0dGluZ3MgPSB7fTtcblxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB0aGlzLmNvbmZpZyA9IHRoaXMuZ2V0RGVmYXVsdExheWVyQ29uZmlnKHtcbiAgICAgIGNvbHVtbnM6IHRoaXMuZ2V0TGF5ZXJDb2x1bW5zKCksXG4gICAgICAuLi5wcm9wc1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0IGxheWVySWNvbigpIHtcbiAgICByZXR1cm4gRGVmYXVsdExheWVySWNvbjtcbiAgfVxuXG4gIGdldCBvdmVybGF5VHlwZSgpIHtcbiAgICByZXR1cm4gT1ZFUkxBWV9UWVBFLmRlY2tnbDtcbiAgfVxuXG4gIGdldCB0eXBlKCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgZ2V0IG5hbWUoKSB7XG4gICAgcmV0dXJuIHRoaXMudHlwZTtcbiAgfVxuXG4gIGdldCBpc0FnZ3JlZ2F0ZWQoKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgZ2V0IHJlcXVpcmVkTGF5ZXJDb2x1bW5zKCkge1xuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIGdldCBvcHRpb25hbENvbHVtbnMoKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgZ2V0IG5vbmVMYXllckRhdGFBZmZlY3RpbmdQcm9wcygpIHtcbiAgICByZXR1cm4gWydsYWJlbCcsICdvcGFjaXR5JywgJ3RoaWNrbmVzcycsICdpc1Zpc2libGUnLCAnaGlkZGVuJ107XG4gIH1cblxuICBnZXQgdmlzdWFsQ2hhbm5lbHMoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGNvbG9yOiB7XG4gICAgICAgIHByb3BlcnR5OiAnY29sb3InLFxuICAgICAgICBmaWVsZDogJ2NvbG9yRmllbGQnLFxuICAgICAgICBzY2FsZTogJ2NvbG9yU2NhbGUnLFxuICAgICAgICBkb21haW46ICdjb2xvckRvbWFpbicsXG4gICAgICAgIHJhbmdlOiAnY29sb3JSYW5nZScsXG4gICAgICAgIGtleTogJ2NvbG9yJyxcbiAgICAgICAgY2hhbm5lbFNjYWxlVHlwZTogQ0hBTk5FTF9TQ0FMRVMuY29sb3IsXG4gICAgICAgIG51bGxWYWx1ZTogTk9fVkFMVUVfQ09MT1IsXG4gICAgICAgIGRlZmF1bHRWYWx1ZTogY29uZmlnID0+IGNvbmZpZy5jb2xvclxuICAgICAgfSxcbiAgICAgIHNpemU6IHtcbiAgICAgICAgcHJvcGVydHk6ICdzaXplJyxcbiAgICAgICAgZmllbGQ6ICdzaXplRmllbGQnLFxuICAgICAgICBzY2FsZTogJ3NpemVTY2FsZScsXG4gICAgICAgIGRvbWFpbjogJ3NpemVEb21haW4nLFxuICAgICAgICByYW5nZTogJ3NpemVSYW5nZScsXG4gICAgICAgIGtleTogJ3NpemUnLFxuICAgICAgICBjaGFubmVsU2NhbGVUeXBlOiBDSEFOTkVMX1NDQUxFUy5zaXplLFxuICAgICAgICBudWxsVmFsdWU6IDAsXG4gICAgICAgIGRlZmF1bHRWYWx1ZTogMVxuICAgICAgfVxuICAgIH07XG4gIH1cblxuICAvKlxuICAgKiBDb2x1bW4gcGFpcnMgbWFwcyBsYXllciBjb2x1bW4gdG8gYSBzcGVjaWZpYyBmaWVsZCBwYWlycyxcbiAgICogQnkgZGVmYXVsdCwgaXQgaXMgc2V0IHRvIG51bGxcbiAgICovXG4gIGdldCBjb2x1bW5QYWlycygpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIC8qXG4gICAqIERlZmF1bHQgcG9pbnQgY29sdW1uIHBhaXJzLCBjYW4gYmUgdXNlZCBmb3IgcG9pbnQgYmFzZWQgbGF5ZXJzOiBwb2ludCwgaWNvbiBldGMuXG4gICAqL1xuICBnZXQgZGVmYXVsdFBvaW50Q29sdW1uUGFpcnMoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGxhdDoge3BhaXI6ICdsbmcnLCBmaWVsZFBhaXJLZXk6ICdsYXQnfSxcbiAgICAgIGxuZzoge3BhaXI6ICdsYXQnLCBmaWVsZFBhaXJLZXk6ICdsbmcnfVxuICAgIH07XG4gIH1cblxuICAvKlxuICAgKiBEZWZhdWx0IGxpbmsgY29sdW1uIHBhaXJzLCBjYW4gYmUgdXNlZCBmb3IgbGluayBiYXNlZCBsYXllcnM6IGFyYywgbGluZSBldGNcbiAgICovXG4gIGdldCBkZWZhdWx0TGlua0NvbHVtblBhaXJzKCkge1xuICAgIHJldHVybiB7XG4gICAgICBsYXQwOiB7cGFpcjogJ2xuZzAnLCBmaWVsZFBhaXJLZXk6ICdsYXQnfSxcbiAgICAgIGxuZzA6IHtwYWlyOiAnbGF0MCcsIGZpZWxkUGFpcktleTogJ2xuZyd9LFxuICAgICAgbGF0MToge3BhaXI6ICdsbmcxJywgZmllbGRQYWlyS2V5OiAnbGF0J30sXG4gICAgICBsbmcxOiB7cGFpcjogJ2xhdDEnLCBmaWVsZFBhaXJLZXk6ICdsbmcnfVxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIGEgUmVhY3QgY29tcG9uZW50IGZvciB0byByZW5kZXIgbGF5ZXIgaW5zdHJ1Y3Rpb25zIGluIGEgbW9kYWxcbiAgICogQHJldHVybnMge29iamVjdH0gLSBhbiBvYmplY3RcbiAgICogQGV4YW1wbGVcbiAgICogIHJldHVybiB7XG4gICAqICAgIGlkOiAnaWNvbkluZm8nLFxuICAgKiAgICB0ZW1wbGF0ZTogSWNvbkluZm9Nb2RhbCxcbiAgICogICAgbW9kYWxQcm9wczoge1xuICAgKiAgICAgIHRpdGxlOiAnSG93IHRvIGRyYXcgaWNvbnMnXG4gICAqICAgfTtcbiAgICogfVxuICAgKi9cbiAgZ2V0IGxheWVySW5mb01vZGFsKCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgZ2V0IGludGVyYWN0aXZpdHlTZXR0aW5ncygpIHtcbiAgICByZXR1cm4gdGhpcy5faW50ZXJhY3Rpdml0eVNldHRpbmdzO1xuICB9XG5cbiAgc2V0IGludGVyYWN0aXZpdHlTZXR0aW5ncyhpbnRlcmFjdGl2aXR5U2V0dGluZ3MpIHtcbiAgICB0aGlzLl9pbnRlcmFjdGl2aXR5U2V0dGluZ3MgPSBpbnRlcmFjdGl2aXR5U2V0dGluZ3M7XG4gIH1cblxuICBnZXQgaGFzVG9vbHRpcCgpIHtcbiAgICByZXR1cm4gQm9vbGVhbihcbiAgICAgIHRoaXMuaW50ZXJhY3Rpdml0eVNldHRpbmdzPy5ob3Zlcj8uZmllbGRzLmxlbmd0aCB8fFxuICAgICAgICB0aGlzLmludGVyYWN0aXZpdHlTZXR0aW5ncz8uY2xpY2s/LmZpZWxkcy5sZW5ndGhcbiAgICApO1xuICB9XG5cbiAgZ2V0IGhhc0ludGVyYWN0aXZpdHkoKSB7XG4gICAgcmV0dXJuIEJvb2xlYW4odGhpcy5oYXNUb29sdGlwICYmIHRoaXMuaW50ZXJhY3Rpdml0eVNldHRpbmdzPy5lbmFibGVkKTtcbiAgfVxuXG4gIC8qXG4gICAqIEdpdmVuIGEgZGF0YXNldCwgYXV0b21hdGljYWxseSBmaW5kIHByb3BzIHRvIGNyZWF0ZSBsYXllciBiYXNlZCBvbiBpdFxuICAgKiBhbmQgcmV0dXJuIHRoZSBwcm9wcyBhbmQgcHJldmlvdXMgZm91bmQgbGF5ZXJzLlxuICAgKiBCeSBkZWZhdWx0LCBubyBsYXllcnMgd2lsbCBiZSBmb3VuZFxuICAgKi9cbiAgc3RhdGljIGZpbmREZWZhdWx0TGF5ZXJQcm9wcyhkYXRhc2V0LCBmb3VuZExheWVycykge1xuICAgIHJldHVybiB7cHJvcHM6IFtdLCBmb3VuZExheWVyc307XG4gIH1cblxuICAvKipcbiAgICogR2l2ZW4gYSBhcnJheSBvZiBwcmVzZXQgcmVxdWlyZWQgY29sdW1uIG5hbWVzXG4gICAqIGZvdW5kIGZpZWxkIHRoYXQgaGFzIHRoZSBzYW1lIG5hbWUgdG8gc2V0IGFzIGxheWVyIGNvbHVtblxuICAgKlxuICAgKiBAcGFyYW0ge29iamVjdH0gZGVmYXVsdEZpZWxkc1xuICAgKiBAcGFyYW0ge29iamVjdFtdfSBhbGxGaWVsZHNcbiAgICogQHJldHVybnMge29iamVjdFtdIHwgbnVsbH0gYWxsIHBvc3NpYmxlIHJlcXVpcmVkIGxheWVyIGNvbHVtbiBwYWlyc1xuICAgKi9cbiAgc3RhdGljIGZpbmREZWZhdWx0Q29sdW1uRmllbGQoZGVmYXVsdEZpZWxkcywgYWxsRmllbGRzKSB7XG4gICAgLy8gZmluZCBhbGwgbWF0Y2hlZCBmaWVsZHMgZm9yIGVhY2ggcmVxdWlyZWQgY29sXG4gICAgY29uc3QgcmVxdWlyZWRDb2x1bW5zID0gT2JqZWN0LmtleXMoZGVmYXVsdEZpZWxkcykucmVkdWNlKChwcmV2LCBrZXkpID0+IHtcbiAgICAgIGNvbnN0IHJlcXVpcmVkRmllbGRzID0gYWxsRmllbGRzLmZpbHRlcihcbiAgICAgICAgZiA9PiBmLm5hbWUgPT09IGRlZmF1bHRGaWVsZHNba2V5XSB8fCBkZWZhdWx0RmllbGRzW2tleV0uaW5jbHVkZXMoZi5uYW1lKVxuICAgICAgKTtcblxuICAgICAgcHJldltrZXldID0gcmVxdWlyZWRGaWVsZHMubGVuZ3RoXG4gICAgICAgID8gcmVxdWlyZWRGaWVsZHMubWFwKGYgPT4gKHtcbiAgICAgICAgICAgIHZhbHVlOiBmLm5hbWUsXG4gICAgICAgICAgICBmaWVsZElkeDogZi5maWVsZElkeFxuICAgICAgICAgIH0pKVxuICAgICAgICA6IG51bGw7XG4gICAgICByZXR1cm4gcHJldjtcbiAgICB9LCB7fSk7XG5cbiAgICBpZiAoIU9iamVjdC52YWx1ZXMocmVxdWlyZWRDb2x1bW5zKS5ldmVyeShCb29sZWFuKSkge1xuICAgICAgLy8gaWYgYW55IGZpZWxkIG1pc3NpbmcsIHJldHVybiBudWxsXG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5nZXRBbGxQb3NzaWJsZUNvbHVtblBhcmlzKHJlcXVpcmVkQ29sdW1ucyk7XG4gIH1cblxuICBzdGF0aWMgZ2V0QWxsUG9zc2libGVDb2x1bW5QYXJpcyhyZXF1aXJlZENvbHVtbnMpIHtcbiAgICAvLyBmb3IgbXVsdGlwbGUgbWF0Y2hlZCBmaWVsZCBmb3Igb25lIHJlcXVpcmVkIGNvbHVtbiwgcmV0dXJuIG11bHRpcGxlXG4gICAgLy8gY29tYmluYXRpb25zLCBlLiBnLiBpZiBjb2x1bW4gYSBoYXMgMiBtYXRjaGVkLCBjb2x1bW4gYiBoYXMgMyBtYXRjaGVkXG4gICAgLy8gNiBwb3NzaWJsZSBjb2x1bW4gcGFpcnMgd2lsbCBiZSByZXR1cm5lZFxuICAgIGNvbnN0IGFsbEtleXMgPSBPYmplY3Qua2V5cyhyZXF1aXJlZENvbHVtbnMpO1xuICAgIGNvbnN0IHBvaW50ZXJzID0gYWxsS2V5cy5tYXAoKGssIGkpID0+ICgoaSA9PT0gYWxsS2V5cy5sZW5ndGggLSAxID8gLTEgOiAwKSkpO1xuICAgIGNvbnN0IGNvdW50UGVyS2V5ID0gYWxsS2V5cy5tYXAoayA9PiByZXF1aXJlZENvbHVtbnNba10ubGVuZ3RoKTtcbiAgICBjb25zdCBwYWlycyA9IFtdO1xuXG4gICAgLyogZXNsaW50LWRpc2FibGUgbm8tbG9vcC1mdW5jICovXG4gICAgd2hpbGUgKGluY3JlbWVudFBvaW50ZXJzKHBvaW50ZXJzLCBjb3VudFBlcktleSwgcG9pbnRlcnMubGVuZ3RoIC0gMSkpIHtcbiAgICAgIGNvbnN0IG5ld1BhaXIgPSBwb2ludGVycy5yZWR1Y2UoKHByZXYsIGN1dXIsIGkpID0+IHtcbiAgICAgICAgcHJldlthbGxLZXlzW2ldXSA9IHJlcXVpcmVkQ29sdW1uc1thbGxLZXlzW2ldXVtjdXVyXTtcbiAgICAgICAgcmV0dXJuIHByZXY7XG4gICAgICB9LCB7fSk7XG5cbiAgICAgIHBhaXJzLnB1c2gobmV3UGFpcik7XG4gICAgfVxuICAgIC8qIGVzbGludC1lbmFibGUgbm8tbG9vcC1mdW5jICovXG5cbiAgICAvLyByZWN1cnNpdmVseSBpbmNyZW1lbnQgcG9pbnRlcnNcbiAgICBmdW5jdGlvbiBpbmNyZW1lbnRQb2ludGVycyhwdHMsIGNvdW50cywgaW5kZXgpIHtcbiAgICAgIGlmIChpbmRleCA9PT0gMCAmJiBwdHNbMF0gPT09IGNvdW50c1swXSAtIDEpIHtcbiAgICAgICAgLy8gbm90aGluZyB0byBpbmNyZW1lbnRcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuXG4gICAgICBpZiAocHRzW2luZGV4XSArIDEgPCBjb3VudHNbaW5kZXhdKSB7XG4gICAgICAgIHB0c1tpbmRleF0gPSBwdHNbaW5kZXhdICsgMTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG5cbiAgICAgIHB0c1tpbmRleF0gPSAwO1xuICAgICAgcmV0dXJuIGluY3JlbWVudFBvaW50ZXJzKHB0cywgY291bnRzLCBpbmRleCAtIDEpO1xuICAgIH1cblxuICAgIHJldHVybiBwYWlycztcbiAgfVxuXG4gIHN0YXRpYyBoZXhUb1JnYihjKSB7XG4gICAgcmV0dXJuIGhleFRvUmdiKGMpO1xuICB9XG5cbiAgZ2V0RGVmYXVsdExheWVyQ29uZmlnKHByb3BzID0ge30pIHtcbiAgICByZXR1cm4ge1xuICAgICAgZGF0YUlkOiBwcm9wcy5kYXRhSWQgfHwgbnVsbCxcbiAgICAgIHZpc2liaWxpdHlCeVpvb206IHtcbiAgICAgICAgbWluOiBwcm9wcy52aXNpYmlsaXR5Qnlab29tPy5taW4gfHwgWk9PTV9MRVZFTF9MSU1JVFMubWluLFxuICAgICAgICBtYXg6IHByb3BzLnZpc2liaWxpdHlCeVpvb20/Lm1heCB8fCBaT09NX0xFVkVMX0xJTUlUUy5tYXhcbiAgICAgIH0sXG4gICAgICBsYWJlbDogcHJvcHMubGFiZWwgfHwgREVGQVVMVF9MQVlFUl9MQUJFTCxcbiAgICAgIGNvbG9yOiBwcm9wcy5jb2xvciB8fCBjb2xvck1ha2VyLm5leHQoKS52YWx1ZSxcbiAgICAgIGNvbHVtbnM6IHByb3BzLmNvbHVtbnMgfHwgbnVsbCxcbiAgICAgIGlzVmlzaWJsZTogcHJvcHMuaXNWaXNpYmxlIHx8IGZhbHNlLFxuICAgICAgaXNDb25maWdBY3RpdmU6IHByb3BzLmlzQ29uZmlnQWN0aXZlIHx8IGZhbHNlLFxuICAgICAgaGlnaGxpZ2h0Q29sb3I6IHByb3BzLmhpZ2hsaWdodENvbG9yIHx8IERFRkFVTFRfSElHSExJR0hUX0NPTE9SLFxuICAgICAgaGlkZGVuOiBwcm9wcy5oaWRkZW4gfHwgZmFsc2UsXG5cbiAgICAgIC8vIFRPRE86IHJlZmFjdG9yIHRoaXMgaW50byBzZXBhcmF0ZSB2aXN1YWwgQ2hhbm5lbCBjb25maWdcbiAgICAgIC8vIGNvbG9yIGJ5IGZpZWxkLCBkb21haW4gaXMgc2V0IGJ5IGZpbHRlcnMsIGZpZWxkLCBzY2FsZSB0eXBlXG4gICAgICBjb2xvckZpZWxkOiBudWxsLFxuICAgICAgY29sb3JEb21haW46IFswLCAxXSxcbiAgICAgIGNvbG9yU2NhbGU6IFNDQUxFX1RZUEVTLnF1YW50aWxlLFxuXG4gICAgICAvLyBjb2xvciBieSBzaXplLCBkb21haW4gaXMgc2V0IGJ5IGZpbHRlcnMsIGZpZWxkLCBzY2FsZSB0eXBlXG4gICAgICBzaXplRG9tYWluOiBbMCwgMV0sXG4gICAgICBzaXplU2NhbGU6IFNDQUxFX1RZUEVTLmxpbmVhcixcbiAgICAgIHNpemVGaWVsZDogbnVsbCxcbiAgICAgIHJhZGl1c0ZpZWxkOiBudWxsLFxuXG4gICAgICB2aXNDb25maWc6IHt9LFxuXG4gICAgICB0ZXh0TGFiZWw6IFtERUZBVUxUX1RFWFRfTEFCRUxdLFxuXG4gICAgICBjb2xvclVJOiB7XG4gICAgICAgIGNvbG9yOiBERUZBVUxUX0NPTE9SX1VJLFxuICAgICAgICBjb2xvclJhbmdlOiBERUZBVUxUX0NPTE9SX1VJXG4gICAgICB9LFxuICAgICAgYW5pbWF0aW9uOiB7ZW5hYmxlZDogZmFsc2V9XG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGRlc2NyaXB0aW9uIG9mIGEgdmlzdWFsQ2hhbm5lbCBjb25maWdcbiAgICogQHBhcmFtIGtleVxuICAgKiBAcmV0dXJucyB7e2xhYmVsOiBzdHJpbmcsIG1lYXN1cmU6IChzdHJpbmd8c3RyaW5nKX19XG4gICAqL1xuICBnZXRWaXN1YWxDaGFubmVsRGVzY3JpcHRpb24oa2V5KSB7XG4gICAgLy8gZS5nLiBsYWJlbDogQ29sb3IsIG1lYXN1cmU6IFZlaGljbGUgVHlwZVxuICAgIHJldHVybiB7XG4gICAgICBsYWJlbDogdGhpcy52aXNDb25maWdTZXR0aW5nc1t0aGlzLnZpc3VhbENoYW5uZWxzW2tleV0ucmFuZ2VdLmxhYmVsLFxuICAgICAgbWVhc3VyZTogdGhpcy5jb25maWdbdGhpcy52aXN1YWxDaGFubmVsc1trZXldLmZpZWxkXVxuICAgICAgICA/ICh0aGlzLmNvbmZpZ1t0aGlzLnZpc3VhbENoYW5uZWxzW2tleV0uZmllbGRdLmRpc3BsYXlOYW1lIHx8XG4gICAgICAgICAgdGhpcy5jb25maWdbdGhpcy52aXN1YWxDaGFubmVsc1trZXldLmZpZWxkXS5uYW1lKVxuICAgICAgICA6IHRoaXMudmlzdWFsQ2hhbm5lbHNba2V5XS5kZWZhdWx0TWVhc3VyZVxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogQXNzaWduIGEgZmllbGQgdG8gbGF5ZXIgY29sdW1uLCByZXR1cm4gY29sdW1uIGNvbmZpZ1xuICAgKiBAcGFyYW0ga2V5IC0gQ29sdW1uIEtleVxuICAgKiBAcGFyYW0gZmllbGQgLSBTZWxlY3RlZCBmaWVsZFxuICAgKiBAcmV0dXJucyB7e319IC0gQ29sdW1uIGNvbmZpZ1xuICAgKi9cbiAgYXNzaWduQ29sdW1uKGtleSwgZmllbGQpIHtcbiAgICAvLyBmaWVsZCB2YWx1ZSBjb3VsZCBiZSBudWxsIGZvciBvcHRpb25hbCBjb2x1bW5zXG4gICAgY29uc3QgdXBkYXRlID0gZmllbGRcbiAgICAgID8ge1xuICAgICAgICAgIHZhbHVlOiBmaWVsZC5uYW1lLFxuICAgICAgICAgIGZpZWxkSWR4OiBmaWVsZC5maWVsZElkeFxuICAgICAgICB9XG4gICAgICA6IHt2YWx1ZTogbnVsbCwgZmllbGRJZHg6IC0xfTtcblxuICAgIHJldHVybiB7XG4gICAgICAuLi50aGlzLmNvbmZpZy5jb2x1bW5zLFxuICAgICAgW2tleV06IHtcbiAgICAgICAgLi4udGhpcy5jb25maWcuY29sdW1uc1trZXldLFxuICAgICAgICAuLi51cGRhdGVcbiAgICAgIH1cbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEFzc2lnbiBhIGZpZWxkIHBhaXIgdG8gY29sdW1uIGNvbmZpZywgcmV0dXJuIGNvbHVtbiBjb25maWdcbiAgICogQHBhcmFtIGtleSAtIENvbHVtbiBLZXlcbiAgICogQHBhcmFtIHBhaXIgLSBmaWVsZCBQYWlyXG4gICAqIEByZXR1cm5zIHtvYmplY3R9IC0gQ29sdW1uIGNvbmZpZ1xuICAgKi9cbiAgYXNzaWduQ29sdW1uUGFpcnMoa2V5LCBwYWlyKSB7XG4gICAgaWYgKCF0aGlzLmNvbHVtblBhaXJzIHx8ICF0aGlzLmNvbHVtblBhaXJzPy5ba2V5XSkge1xuICAgICAgLy8gc2hvdWxkIG5vdCBlbmQgaW4gdGhpcyBzdGF0ZVxuICAgICAgcmV0dXJuIHRoaXMuY29uZmlnLmNvbHVtbnM7XG4gICAgfVxuXG4gICAgY29uc3Qge3BhaXI6IHBhcnRuZXJLZXksIGZpZWxkUGFpcktleX0gPSB0aGlzLmNvbHVtblBhaXJzPy5ba2V5XTtcbiAgICBjb25zdCB7ZmllbGRQYWlyS2V5OiBwYXJ0bmVyRmllbGRQYWlyS2V5fSA9IHRoaXMuY29sdW1uUGFpcnM/LltwYXJ0bmVyS2V5XTtcblxuICAgIHJldHVybiB7XG4gICAgICAuLi50aGlzLmNvbmZpZy5jb2x1bW5zLFxuICAgICAgW2tleV06IHBhaXJbZmllbGRQYWlyS2V5XSxcbiAgICAgIFtwYXJ0bmVyS2V5XTogcGFpcltwYXJ0bmVyRmllbGRQYWlyS2V5XVxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogQ2FsY3VsYXRlIGEgcmFkaXVzIHpvb20gbXVsdGlwbGllciB0byByZW5kZXIgcG9pbnRzLCBzbyB0aGV5IGFyZSB2aXNpYmxlIGluIGFsbCB6b29tIGxldmVsXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBtYXBTdGF0ZVxuICAgKiBAcGFyYW0ge251bWJlcn0gbWFwU3RhdGUuem9vbSAtIGFjdHVhbCB6b29tXG4gICAqIEBwYXJhbSB7bnVtYmVyIHwgdm9pZH0gbWFwU3RhdGUuem9vbU9mZnNldCAtIHpvb21PZmZzZXQgd2hlbiByZW5kZXIgaW4gdGhlIHBsb3QgY29udGFpbmVyIGZvciBleHBvcnQgaW1hZ2VcbiAgICogQHJldHVybnMge251bWJlcn1cbiAgICovXG4gIGdldFpvb21GYWN0b3Ioe3pvb20sIHpvb21PZmZzZXQgPSAwfSkge1xuICAgIHJldHVybiBNYXRoLnBvdygyLCBNYXRoLm1heCgxNCAtIHpvb20gKyB6b29tT2Zmc2V0LCAwKSk7XG4gIH1cblxuICAvKipcbiAgICogQ2FsY3VsYXRlIGEgZWxldmF0aW9uIHpvb20gbXVsdGlwbGllciB0byByZW5kZXIgcG9pbnRzLCBzbyB0aGV5IGFyZSB2aXNpYmxlIGluIGFsbCB6b29tIGxldmVsXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBtYXBTdGF0ZVxuICAgKiBAcGFyYW0ge251bWJlcn0gbWFwU3RhdGUuem9vbSAtIGFjdHVhbCB6b29tXG4gICAqIEBwYXJhbSB7bnVtYmVyIHwgdm9pZH0gbWFwU3RhdGUuem9vbU9mZnNldCAtIHpvb21PZmZzZXQgd2hlbiByZW5kZXIgaW4gdGhlIHBsb3QgY29udGFpbmVyIGZvciBleHBvcnQgaW1hZ2VcbiAgICogQHJldHVybnMge251bWJlcn1cbiAgICovXG4gIGdldEVsZXZhdGlvblpvb21GYWN0b3Ioe3pvb20sIHpvb21PZmZzZXQgPSAwfSkge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZy52aXNDb25maWcuZW5hYmxlRWxldmF0aW9uWm9vbUZhY3RvclxuICAgICAgPyBNYXRoLnBvdygyLCBNYXRoLm1heCg4IC0gem9vbSArIHpvb21PZmZzZXQsIDApKVxuICAgICAgOiAxO1xuICB9XG5cbiAgZm9ybWF0TGF5ZXJEYXRhKGRhdGFzZXRzLCBmaWx0ZXJlZEluZGV4KSB7XG4gICAgcmV0dXJuIHt9O1xuICB9XG5cbiAgcmVuZGVyTGF5ZXIoKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgZ2V0SG92ZXJEYXRhKG9iamVjdCwgZGF0YUNvbnRhaW5lcikge1xuICAgIGlmICghb2JqZWN0KSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICAvLyBCeSBkZWZhdWx0LCBlYWNoIGVudHJ5IG9mIGxheWVyRGF0YSBzaG91bGQgaGF2ZSBhbiBpbmRleCBvZiBhIHJvdyBpbiB0aGUgb3JpZ2luYWwgZGF0YSBjb250YWluZXIuXG4gICAgLy8gRWFjaCBsYXllciBjYW4gaW1wbGVtZW50IGl0cyBvd24gZ2V0SG92ZXJEYXRhIG1ldGhvZFxuICAgIHJldHVybiBkYXRhQ29udGFpbmVyLnJvdyhvYmplY3QuaW5kZXgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFdoZW4gY2hhbmdlIGxheWVyIHR5cGUsIHRyeSB0byBjb3B5IG92ZXIgbGF5ZXIgY29uZmlncyBhcyBtdWNoIGFzIHBvc3NpYmxlXG4gICAqIEBwYXJhbSBjb25maWdUb0NvcHkgLSBjb25maWcgdG8gY29weSBvdmVyXG4gICAqIEBwYXJhbSB2aXNDb25maWdTZXR0aW5ncyAtIHZpc0NvbmZpZyBzZXR0aW5ncyBvZiBjb25maWcgdG8gY29weVxuICAgKi9cbiAgYXNzaWduQ29uZmlnVG9MYXllcihjb25maWdUb0NvcHksIHZpc0NvbmZpZ1NldHRpbmdzKSB7XG4gICAgLy8gZG9uJ3QgZGVlcCBtZXJnZSB2aXN1YWxDaGFubmVsIGZpZWxkXG4gICAgLy8gZG9uJ3QgZGVlcCBtZXJnZSBjb2xvciByYW5nZSwgcmV2ZXJzZWQ6IGlzIG5vdCBhIGtleSBieSBkZWZhdWx0XG4gICAgY29uc3Qgc2hhbGxvd0NvcHkgPSBbJ2NvbG9yUmFuZ2UnLCAnc3Ryb2tlQ29sb3JSYW5nZSddLmNvbmNhdChcbiAgICAgIE9iamVjdC52YWx1ZXModGhpcy52aXN1YWxDaGFubmVscykubWFwKHYgPT4gdi5maWVsZClcbiAgICApO1xuXG4gICAgLy8gZG9uJ3QgY29weSBvdmVyIGRvbWFpbiBhbmQgYW5pbWF0aW9uXG4gICAgY29uc3Qgbm90VG9Db3B5ID0gWydhbmltYXRpb24nXS5jb25jYXQoT2JqZWN0LnZhbHVlcyh0aGlzLnZpc3VhbENoYW5uZWxzKS5tYXAodiA9PiB2LmRvbWFpbikpO1xuICAgIC8vIGlmIHJhbmdlIGlzIGZvciB0aGUgc2FtZSBwcm9wZXJ0eSBncm91cCBjb3B5IGl0LCBvdGhlcndpc2UsIG5vdCB0byBjb3B5XG4gICAgT2JqZWN0LnZhbHVlcyh0aGlzLnZpc3VhbENoYW5uZWxzKS5mb3JFYWNoKHYgPT4ge1xuICAgICAgaWYgKFxuICAgICAgICBjb25maWdUb0NvcHkudmlzQ29uZmlnW3YucmFuZ2VdICYmXG4gICAgICAgIHRoaXMudmlzQ29uZmlnU2V0dGluZ3Nbdi5yYW5nZV0gJiZcbiAgICAgICAgdmlzQ29uZmlnU2V0dGluZ3Nbdi5yYW5nZV0uZ3JvdXAgIT09IHRoaXMudmlzQ29uZmlnU2V0dGluZ3Nbdi5yYW5nZV0uZ3JvdXBcbiAgICAgICkge1xuICAgICAgICBub3RUb0NvcHkucHVzaCh2LnJhbmdlKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIC8vIGRvbid0IGNvcHkgb3ZlciB2aXN1YWxDaGFubmVsIHJhbmdlXG4gICAgY29uc3QgY3VycmVudENvbmZpZyA9IHRoaXMuY29uZmlnO1xuICAgIGNvbnN0IGNvcGllZCA9IHRoaXMuY29weUxheWVyQ29uZmlnKGN1cnJlbnRDb25maWcsIGNvbmZpZ1RvQ29weSwge1xuICAgICAgc2hhbGxvd0NvcHksXG4gICAgICBub3RUb0NvcHlcbiAgICB9KTtcbiAgICB0aGlzLnVwZGF0ZUxheWVyQ29uZmlnKGNvcGllZCk7XG4gICAgLy8gdmFsaWRhdGUgdmlzdWFsQ2hhbm5lbCBmaWVsZCB0eXBlIGFuZCBzY2FsZSB0eXBlc1xuICAgIE9iamVjdC5rZXlzKHRoaXMudmlzdWFsQ2hhbm5lbHMpLmZvckVhY2goY2hhbm5lbCA9PiB7XG4gICAgICB0aGlzLnZhbGlkYXRlVmlzdWFsQ2hhbm5lbChjaGFubmVsKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qXG4gICAqIFJlY3Vyc2l2ZWx5IGNvcHkgY29uZmlnIG92ZXIgdG8gYW4gZW1wdHkgbGF5ZXJcbiAgICogd2hlbiByZWNlaXZlZCBzYXZlZCBjb25maWcsIG9yIGNvcHkgY29uZmlnIG92ZXIgZnJvbSBhIGRpZmZlcmVudCBsYXllciB0eXBlXG4gICAqIG1ha2Ugc3VyZSB0byBvbmx5IGNvcHkgb3ZlciB2YWx1ZSB0byBleGlzdGluZyBrZXlzXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBjdXJyZW50Q29uZmlnIC0gZXhpc3RpbmcgY29uZmlnIHRvIGJlIG92ZXJyaWRlXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBjb25maWdUb0NvcHkgLSBuZXcgQ29uZmlnIHRvIGNvcHkgb3ZlclxuICAgKiBAcGFyYW0ge3N0cmluZ1tdfSBzaGFsbG93Q29weSAtIGFycmF5IG9mIHByb3BlcnRpZXMgdG8gbm90IHRvIGJlIGRlZXAgY29waWVkXG4gICAqIEBwYXJhbSB7c3RyaW5nW119IG5vdFRvQ29weSAtIGFycmF5IG9mIHByb3BlcnRpZXMgbm90IHRvIGNvcHlcbiAgICogQHJldHVybnMge29iamVjdH0gLSBjb3BpZWQgY29uZmlnXG4gICAqL1xuICBjb3B5TGF5ZXJDb25maWcoY3VycmVudENvbmZpZywgY29uZmlnVG9Db3B5LCB7c2hhbGxvd0NvcHkgPSBbXSwgbm90VG9Db3B5ID0gW119ID0ge30pIHtcbiAgICBjb25zdCBjb3BpZWQgPSB7fTtcbiAgICBPYmplY3Qua2V5cyhjdXJyZW50Q29uZmlnKS5mb3JFYWNoKGtleSA9PiB7XG4gICAgICBpZiAoXG4gICAgICAgIGlzUGxhaW5PYmplY3QoY3VycmVudENvbmZpZ1trZXldKSAmJlxuICAgICAgICBpc1BsYWluT2JqZWN0KGNvbmZpZ1RvQ29weVtrZXldKSAmJlxuICAgICAgICAhc2hhbGxvd0NvcHkuaW5jbHVkZXMoa2V5KSAmJlxuICAgICAgICAhbm90VG9Db3B5LmluY2x1ZGVzKGtleSlcbiAgICAgICkge1xuICAgICAgICAvLyByZWN1cnNpdmVseSBhc3NpZ24gb2JqZWN0IHZhbHVlXG4gICAgICAgIGNvcGllZFtrZXldID0gdGhpcy5jb3B5TGF5ZXJDb25maWcoY3VycmVudENvbmZpZ1trZXldLCBjb25maWdUb0NvcHlba2V5XSwge1xuICAgICAgICAgIHNoYWxsb3dDb3B5LFxuICAgICAgICAgIG5vdFRvQ29weVxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSBpZiAobm90TnVsbG9yVW5kZWZpbmVkKGNvbmZpZ1RvQ29weVtrZXldKSAmJiAhbm90VG9Db3B5LmluY2x1ZGVzKGtleSkpIHtcbiAgICAgICAgLy8gY29weVxuICAgICAgICBjb3BpZWRba2V5XSA9IGNvbmZpZ1RvQ29weVtrZXldO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8ga2VlcCBleGlzdGluZ1xuICAgICAgICBjb3BpZWRba2V5XSA9IGN1cnJlbnRDb25maWdba2V5XTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBjb3BpZWQ7XG4gIH1cblxuICByZWdpc3RlclZpc0NvbmZpZyhsYXllclZpc0NvbmZpZ3MpIHtcbiAgICBPYmplY3Qua2V5cyhsYXllclZpc0NvbmZpZ3MpLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICBpZiAodHlwZW9mIGl0ZW0gPT09ICdzdHJpbmcnICYmIExBWUVSX1ZJU19DT05GSUdTW2xheWVyVmlzQ29uZmlnc1tpdGVtXV0pIHtcbiAgICAgICAgLy8gaWYgYXNzaWduZWQgb25lIG9mIGRlZmF1bHQgTEFZRVJfQ09ORklHU1xuICAgICAgICB0aGlzLmNvbmZpZy52aXNDb25maWdbaXRlbV0gPSBMQVlFUl9WSVNfQ09ORklHU1tsYXllclZpc0NvbmZpZ3NbaXRlbV1dLmRlZmF1bHRWYWx1ZTtcbiAgICAgICAgdGhpcy52aXNDb25maWdTZXR0aW5nc1tpdGVtXSA9IExBWUVSX1ZJU19DT05GSUdTW2xheWVyVmlzQ29uZmlnc1tpdGVtXV07XG4gICAgICB9IGVsc2UgaWYgKFsndHlwZScsICdkZWZhdWx0VmFsdWUnXS5ldmVyeShwID0+IGxheWVyVmlzQ29uZmlnc1tpdGVtXS5oYXNPd25Qcm9wZXJ0eShwKSkpIHtcbiAgICAgICAgLy8gaWYgcHJvdmlkZWQgY3VzdG9taXplZCB2aXNDb25maWcsIGFuZCBoYXMgdHlwZSAmJiBkZWZhdWx0VmFsdWVcbiAgICAgICAgLy8gVE9ETzogZnVydGhlciBjaGVjayBpZiBjdXN0b21pemVkIHZpc0NvbmZpZyBpcyB2YWxpZFxuICAgICAgICB0aGlzLmNvbmZpZy52aXNDb25maWdbaXRlbV0gPSBsYXllclZpc0NvbmZpZ3NbaXRlbV0uZGVmYXVsdFZhbHVlO1xuICAgICAgICB0aGlzLnZpc0NvbmZpZ1NldHRpbmdzW2l0ZW1dID0gbGF5ZXJWaXNDb25maWdzW2l0ZW1dO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgZ2V0TGF5ZXJDb2x1bW5zKCkge1xuICAgIGNvbnN0IGNvbHVtblZhbGlkYXRvcnMgPSB0aGlzLmNvbHVtblZhbGlkYXRvcnMgfHwge307XG4gICAgY29uc3QgcmVxdWlyZWQgPSB0aGlzLnJlcXVpcmVkTGF5ZXJDb2x1bW5zLnJlZHVjZShcbiAgICAgIChhY2N1LCBrZXkpID0+ICh7XG4gICAgICAgIC4uLmFjY3UsXG4gICAgICAgIFtrZXldOiBjb2x1bW5WYWxpZGF0b3JzW2tleV1cbiAgICAgICAgICA/IHt2YWx1ZTogbnVsbCwgZmllbGRJZHg6IC0xLCB2YWxpZGF0b3I6IGNvbHVtblZhbGlkYXRvcnNba2V5XX1cbiAgICAgICAgICA6IHt2YWx1ZTogbnVsbCwgZmllbGRJZHg6IC0xfVxuICAgICAgfSksXG4gICAgICB7fVxuICAgICk7XG4gICAgY29uc3Qgb3B0aW9uYWwgPSB0aGlzLm9wdGlvbmFsQ29sdW1ucy5yZWR1Y2UoXG4gICAgICAoYWNjdSwga2V5KSA9PiAoe1xuICAgICAgICAuLi5hY2N1LFxuICAgICAgICBba2V5XToge3ZhbHVlOiBudWxsLCBmaWVsZElkeDogLTEsIG9wdGlvbmFsOiB0cnVlfVxuICAgICAgfSksXG4gICAgICB7fVxuICAgICk7XG5cbiAgICByZXR1cm4gey4uLnJlcXVpcmVkLCAuLi5vcHRpb25hbH07XG4gIH1cblxuICB1cGRhdGVMYXllckNvbmZpZyhuZXdDb25maWcpIHtcbiAgICB0aGlzLmNvbmZpZyA9IHsuLi50aGlzLmNvbmZpZywgLi4ubmV3Q29uZmlnfTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHVwZGF0ZUxheWVyVmlzQ29uZmlnKG5ld1Zpc0NvbmZpZykge1xuICAgIHRoaXMuY29uZmlnLnZpc0NvbmZpZyA9IHsuLi50aGlzLmNvbmZpZy52aXNDb25maWcsIC4uLm5ld1Zpc0NvbmZpZ307XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICB1cGRhdGVMYXllckNvbG9yVUkocHJvcCwgbmV3Q29uZmlnKSB7XG4gICAgY29uc3Qge2NvbG9yVUk6IHByZXZpb3VzLCB2aXNDb25maWd9ID0gdGhpcy5jb25maWc7XG5cbiAgICBpZiAoIWlzUGxhaW5PYmplY3QobmV3Q29uZmlnKSB8fCB0eXBlb2YgcHJvcCAhPT0gJ3N0cmluZycpIHtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIGNvbnN0IGNvbG9yVUlQcm9wID0gT2JqZWN0LmVudHJpZXMobmV3Q29uZmlnKS5yZWR1Y2UoKGFjY3UsIFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uYWNjdSxcbiAgICAgICAgW2tleV06IGlzUGxhaW5PYmplY3QoYWNjdVtrZXldKSAmJiBpc1BsYWluT2JqZWN0KHZhbHVlKSA/IHsuLi5hY2N1W2tleV0sIC4uLnZhbHVlfSA6IHZhbHVlXG4gICAgICB9O1xuICAgIH0sIHByZXZpb3VzW3Byb3BdIHx8IERFRkFVTFRfQ09MT1JfVUkpO1xuXG4gICAgY29uc3QgY29sb3JVSSA9IHtcbiAgICAgIC4uLnByZXZpb3VzLFxuICAgICAgW3Byb3BdOiBjb2xvclVJUHJvcFxuICAgIH07XG5cbiAgICB0aGlzLnVwZGF0ZUxheWVyQ29uZmlnKHtjb2xvclVJfSk7XG4gICAgLy8gaWYgY29sb3JVSVtwcm9wXSBpcyBjb2xvclJhbmdlXG4gICAgY29uc3QgaXNDb2xvclJhbmdlID0gdmlzQ29uZmlnW3Byb3BdICYmIHZpc0NvbmZpZ1twcm9wXS5jb2xvcnM7XG5cbiAgICBpZiAoaXNDb2xvclJhbmdlKSB7XG4gICAgICB0aGlzLnVwZGF0ZUNvbG9yVUlCeUNvbG9yUmFuZ2UobmV3Q29uZmlnLCBwcm9wKTtcbiAgICAgIHRoaXMudXBkYXRlQ29sb3JSYW5nZUJ5Q29sb3JVSShuZXdDb25maWcsIHByZXZpb3VzLCBwcm9wKTtcbiAgICAgIHRoaXMudXBkYXRlQ3VzdG9tUGFsZXR0ZShuZXdDb25maWcsIHByZXZpb3VzLCBwcm9wKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHVwZGF0ZUN1c3RvbVBhbGV0dGUobmV3Q29uZmlnLCBwcmV2aW91cywgcHJvcCkge1xuICAgIGlmICghbmV3Q29uZmlnLmNvbG9yUmFuZ2VDb25maWcgfHwgIW5ld0NvbmZpZy5jb2xvclJhbmdlQ29uZmlnLmN1c3RvbSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHtjb2xvclVJLCB2aXNDb25maWd9ID0gdGhpcy5jb25maWc7XG5cbiAgICBpZiAoIXZpc0NvbmZpZ1twcm9wXSkgcmV0dXJuO1xuICAgIGNvbnN0IHtjb2xvcnN9ID0gdmlzQ29uZmlnW3Byb3BdO1xuICAgIGNvbnN0IGN1c3RvbVBhbGV0dGUgPSB7XG4gICAgICAuLi5jb2xvclVJW3Byb3BdLmN1c3RvbVBhbGV0dGUsXG4gICAgICBuYW1lOiAnQ3VzdG9tIFBhbGV0dGUnLFxuICAgICAgY29sb3JzOiBbLi4uY29sb3JzXVxuICAgIH07XG4gICAgdGhpcy51cGRhdGVMYXllckNvbmZpZyh7XG4gICAgICBjb2xvclVJOiB7XG4gICAgICAgIC4uLmNvbG9yVUksXG4gICAgICAgIFtwcm9wXToge1xuICAgICAgICAgIC4uLmNvbG9yVUlbcHJvcF0sXG4gICAgICAgICAgY3VzdG9tUGFsZXR0ZVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbiAgLyoqXG4gICAqIGlmIG9wZW4gZHJvcGRvd24gYW5kIHByb3AgaXMgY29sb3IgcmFuZ2VcbiAgICogQXV0b21hdGljYWxseSBzZXQgY29sb3JSYW5nZUNvbmZpZydzIHN0ZXAsIHJldmVyc2VkIGFuZCB0eXBlXG4gICAqIEBwYXJhbSB7Kn0gbmV3Q29uZmlnXG4gICAqIEBwYXJhbSB7Kn0gcHJvcFxuICAgKi9cbiAgdXBkYXRlQ29sb3JVSUJ5Q29sb3JSYW5nZShuZXdDb25maWcsIHByb3ApIHtcbiAgICBpZiAodHlwZW9mIG5ld0NvbmZpZy5zaG93RHJvcGRvd24gIT09ICdudW1iZXInKSByZXR1cm47XG5cbiAgICBjb25zdCB7Y29sb3JVSSwgdmlzQ29uZmlnfSA9IHRoaXMuY29uZmlnO1xuICAgIHRoaXMudXBkYXRlTGF5ZXJDb25maWcoe1xuICAgICAgY29sb3JVSToge1xuICAgICAgICAuLi5jb2xvclVJLFxuICAgICAgICBbcHJvcF06IHtcbiAgICAgICAgICAuLi5jb2xvclVJW3Byb3BdLFxuICAgICAgICAgIGNvbG9yUmFuZ2VDb25maWc6IHtcbiAgICAgICAgICAgIC4uLmNvbG9yVUlbcHJvcF0uY29sb3JSYW5nZUNvbmZpZyxcbiAgICAgICAgICAgIHR5cGU6IHZpc0NvbmZpZ1twcm9wXS50eXBlLFxuICAgICAgICAgICAgc3RlcHM6IHZpc0NvbmZpZ1twcm9wXS5jb2xvcnMubGVuZ3RoLFxuICAgICAgICAgICAgcmV2ZXJzZWQ6IEJvb2xlYW4odmlzQ29uZmlnW3Byb3BdLnJldmVyc2VkKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGNvbXBsZXhpdHlcbiAgdXBkYXRlQ29sb3JSYW5nZUJ5Q29sb3JVSShuZXdDb25maWcsIHByZXZpb3VzLCBwcm9wKSB7XG4gICAgLy8gb25seSB1cGRhdGUgY29sb3JSYW5nZSBpZiBjaGFuZ2VzIGluIFVJIGlzIG1hZGUgdG8gJ3JldmVyc2VkJywgJ3N0ZXBzJyBvciBzdGVwc1xuICAgIGNvbnN0IHNob3VsZFVwZGF0ZSA9XG4gICAgICBuZXdDb25maWcuY29sb3JSYW5nZUNvbmZpZyAmJlxuICAgICAgWydyZXZlcnNlZCcsICdzdGVwcyddLnNvbWUoXG4gICAgICAgIGtleSA9PlxuICAgICAgICAgIG5ld0NvbmZpZy5jb2xvclJhbmdlQ29uZmlnLmhhc093blByb3BlcnR5KGtleSkgJiZcbiAgICAgICAgICBuZXdDb25maWcuY29sb3JSYW5nZUNvbmZpZ1trZXldICE9PVxuICAgICAgICAgICAgKHByZXZpb3VzW3Byb3BdIHx8IERFRkFVTFRfQ09MT1JfVUkpLmNvbG9yUmFuZ2VDb25maWdba2V5XVxuICAgICAgKTtcbiAgICBpZiAoIXNob3VsZFVwZGF0ZSkgcmV0dXJuO1xuXG4gICAgY29uc3Qge2NvbG9yVUksIHZpc0NvbmZpZ30gPSB0aGlzLmNvbmZpZztcbiAgICBjb25zdCB7c3RlcHMsIHJldmVyc2VkfSA9IGNvbG9yVUlbcHJvcF0uY29sb3JSYW5nZUNvbmZpZztcbiAgICBjb25zdCBjb2xvclJhbmdlID0gdmlzQ29uZmlnW3Byb3BdO1xuICAgIC8vIGZpbmQgYmFzZWQgb24gc3RlcCBvciByZXZlcnNlZFxuICAgIGxldCB1cGRhdGU7XG4gICAgaWYgKG5ld0NvbmZpZy5jb2xvclJhbmdlQ29uZmlnLmhhc093blByb3BlcnR5KCdzdGVwcycpKSB7XG4gICAgICBjb25zdCBncm91cCA9IGdldENvbG9yR3JvdXBCeU5hbWUoY29sb3JSYW5nZSk7XG5cbiAgICAgIGlmIChncm91cCkge1xuICAgICAgICBjb25zdCBzYW1lR3JvdXAgPSBDT0xPUl9SQU5HRVMuZmlsdGVyKGNyID0+IGdldENvbG9yR3JvdXBCeU5hbWUoY3IpID09PSBncm91cCk7XG5cbiAgICAgICAgdXBkYXRlID0gc2FtZUdyb3VwLmZpbmQoY3IgPT4gY3IuY29sb3JzLmxlbmd0aCA9PT0gc3RlcHMpO1xuXG4gICAgICAgIGlmICh1cGRhdGUgJiYgY29sb3JSYW5nZS5yZXZlcnNlZCkge1xuICAgICAgICAgIHVwZGF0ZSA9IHJldmVyc2VDb2xvclJhbmdlKHRydWUsIHVwZGF0ZSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodXBkYXRlICYmIGNvbG9yUmFuZ2UuY29sb3JNYXApIHtcbiAgICAgICAgICB1cGRhdGUgPSB0aGlzLnVwZGF0ZUNvbG9yTWFwKHByb3AsIGNvbG9yUmFuZ2UuY29sb3JNYXAsIHVwZGF0ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAobmV3Q29uZmlnLmNvbG9yUmFuZ2VDb25maWcuaGFzT3duUHJvcGVydHkoJ3JldmVyc2VkJykpIHtcbiAgICAgIHVwZGF0ZSA9IHJldmVyc2VDb2xvclJhbmdlKHJldmVyc2VkLCB1cGRhdGUgfHwgY29sb3JSYW5nZSk7XG4gICAgfVxuXG4gICAgaWYgKHVwZGF0ZSkge1xuICAgICAgdGhpcy51cGRhdGVMYXllclZpc0NvbmZpZyh7W3Byb3BdOiB1cGRhdGV9KTtcbiAgICB9XG4gIH1cblxuICB1cGRhdGVDb2xvck1hcChwcm9wLCBjb2xvck1hcCwgY29sb3JSYW5nZSkge1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBjb25zdCB7ZmllbGQsIGRvbWFpbn0gPSBPYmplY3QudmFsdWVzKHRoaXMudmlzdWFsQ2hhbm5lbHMpLmZpbmQodmFsdWUgPT4gdmFsdWUucmFuZ2UgPT09IHByb3ApO1xuICAgIGNvbnN0IHR5cGUgPSB0aGlzLmNvbmZpZ1tmaWVsZF0/LnR5cGU7XG5cbiAgICBpZiAodHlwZSA9PT0gJ3N0cmluZycgfHwgdHlwZSA9PT0gJ2Jvb2xlYW4nIHx8IHR5cGUgPT09ICdkYXRlJykge1xuICAgICAgcmV0dXJuIHRoaXMudXBkYXRlQ2F0ZWdvcnlDb2xvck1hcChjb2xvck1hcCwgdGhpcy5jb25maWdbZG9tYWluXSwgY29sb3JSYW5nZSk7XG4gICAgfVxuXG4gICAgLy8gSWYgbm8gdHlwZSBvciB0eXBlIGlzIG5vdCBzdHJpbmcsIGJvb2xlYW4gb3IgZGF0ZVxuICAgIHJldHVybiB0aGlzLnVwZGF0ZU51bWVyaWNDb2xvck1hcChjb2xvck1hcCwgdGhpcy5jb25maWdbZG9tYWluXSwgY29sb3JSYW5nZSk7XG4gIH1cblxuICB1cGRhdGVDYXRlZ29yeUNvbG9yTWFwKGNvbG9yTWFwLCBkb21haW4sIGNvbG9yUmFuZ2UpIHtcbiAgICBjb25zdCBjb2xvcnMgPSBjb2xvclJhbmdlLmNvbG9ycztcbiAgICBjb25zdCBhc3NpZ25lZENhdGVnb3JpZXMgPSBbXTtcbiAgICBjb25zdCBuZXdDb2xvck1hcCA9IGNvbG9yTWFwLnNsaWNlKDAsIGNvbG9ycy5sZW5ndGgpLm1hcCgoY01hcCwgaW5kZXgpID0+IHtcbiAgICAgIGFzc2lnbmVkQ2F0ZWdvcmllcy5wdXNoKGNNYXBbMF0pO1xuICAgICAgcmV0dXJuIFtjTWFwWzBdLCBjb2xvcnNbaW5kZXhdXTtcbiAgICB9KTtcbiAgICBjb25zdCB1bmFzc2lnbmVkQ29sb3JzID0gY29sb3JzLnNsaWNlKG5ld0NvbG9yTWFwLmxlbmd0aCwgY29sb3JzLmxlbmd0aCk7XG5cbiAgICBmb3IgKGNvbnN0IGNvbG9yIG9mIHVuYXNzaWduZWRDb2xvcnMpIHtcbiAgICAgIGNvbnN0IGNhdGVnb3J5ID0gZG9tYWluLmZpbmQoZCA9PiAhYXNzaWduZWRDYXRlZ29yaWVzLmluY2x1ZGVzKGQpKTtcbiAgICAgIGlmICghY2F0ZWdvcnkpIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBhc3NpZ25lZENhdGVnb3JpZXMucHVzaChjYXRlZ29yeSk7XG4gICAgICBuZXdDb2xvck1hcC5wdXNoKFtjYXRlZ29yeSwgY29sb3JdKTtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLmNvbG9yUmFuZ2UsXG4gICAgICBjb2xvck1hcDogbmV3Q29sb3JNYXBcbiAgICB9O1xuICB9XG5cbiAgdXBkYXRlTnVtZXJpY0NvbG9yTWFwKGNvbG9yTWFwLCBkb21haW4sIHVwZGF0ZSkge1xuICAgIGNvbnN0IGNvbG9ycyA9IHVwZGF0ZS5jb2xvcnM7XG4gICAgbGV0IG5ld0NvbG9yTWFwID0gY29sb3JNYXAuc2xpY2UoMCwgY29sb3JzLmxlbmd0aCk7XG5cbiAgICBuZXdDb2xvck1hcCA9IG5ld0NvbG9yTWFwLm1hcCgoY01hcCwgaW5kZXgpID0+IHtcbiAgICAgIGNvbnN0IHZhbHVlID0gaW5kZXggPT09IG5ld0NvbG9yTWFwLmxlbmd0aCAtIDEgPyBudWxsIDogY01hcFswXTtcbiAgICAgIHJldHVybiBbdmFsdWUsIGNvbG9yc1tpbmRleF1dO1xuICAgIH0pO1xuICAgIGNvbnN0IHVuYXNzaWduZWRDb2xvcnMgPSBjb2xvcnMuc2xpY2UobmV3Q29sb3JNYXAubGVuZ3RoLCBjb2xvcnMubGVuZ3RoKTtcblxuICAgIGlmICh1bmFzc2lnbmVkQ29sb3JzLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IGNvbG9yTWFwVmFsdWVzID0gY29sb3JNYXAubWFwKGMgPT4gY1swXSkuZmlsdGVyKGMgPT4gdHlwZW9mIGMgPT09ICdudW1iZXInKTtcbiAgICAgIGNvbnN0IG1heFZhbHVlID0gTWF0aC5tYXgoLi4uY29sb3JNYXBWYWx1ZXMsIGRvbWFpbltkb21haW4ubGVuZ3RoIC0gMV0pO1xuICAgICAgY29uc3QgcHJldlZhbHVlID0gbmV3Q29sb3JNYXBbbmV3Q29sb3JNYXAubGVuZ3RoIC0gMl1bMF07XG4gICAgICBjb25zdCBzdGVwID0gKG1heFZhbHVlIC0gcHJldlZhbHVlKSAvICh1bmFzc2lnbmVkQ29sb3JzLmxlbmd0aCArIDEpO1xuICAgICAgbmV3Q29sb3JNYXBbbmV3Q29sb3JNYXAubGVuZ3RoIC0gMV1bMF0gPSBwcmV2VmFsdWUgKyBzdGVwO1xuXG4gICAgICBmb3IgKGNvbnN0IFtpLCBjb2xvcl0gb2YgdW5hc3NpZ25lZENvbG9ycy5lbnRyaWVzKCkpIHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSBpID09PSB1bmFzc2lnbmVkQ29sb3JzLmxlbmd0aCAtIDEgPyBudWxsIDogcHJldlZhbHVlICsgKHN0ZXAgKiAoaSArIDIpKTtcbiAgICAgICAgbmV3Q29sb3JNYXAucHVzaChbdmFsdWUsIGNvbG9yXSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICAuLi51cGRhdGUsXG4gICAgICBjb2xvck1hcDogbmV3Q29sb3JNYXBcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIHdoZXRoZXIgbGF5ZXIgaGFzIGFsbCBjb2x1bW5zXG4gICAqIEByZXR1cm5zIHtib29sZWFufSB5ZXMgb3Igbm9cbiAgICovXG4gIGhhc0FsbENvbHVtbnMoKSB7XG4gICAgY29uc3Qge2NvbHVtbnN9ID0gdGhpcy5jb25maWc7XG4gICAgcmV0dXJuIChcbiAgICAgIChjb2x1bW5zICYmXG4gICAgICBPYmplY3QudmFsdWVzKGNvbHVtbnMpLmV2ZXJ5KHYgPT4ge1xuICAgICAgICByZXR1cm4gQm9vbGVhbih2Lm9wdGlvbmFsIHx8ICh2LnZhbHVlICYmIHYuZmllbGRJZHggPiAtMSkpO1xuICAgICAgfSkpXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVjayB3aGV0aGVyIGxheWVyIGhhcyBkYXRhXG4gICAqXG4gICAqIEBwYXJhbSB7QXJyYXkgfCBPYmplY3R9IGxheWVyRGF0YVxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0geWVzIG9yIG5vXG4gICAqL1xuICBoYXNMYXllckRhdGEobGF5ZXJEYXRhKSB7XG4gICAgaWYgKCFsYXllckRhdGEpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIEJvb2xlYW4obGF5ZXJEYXRhLmRhdGEgJiYgbGF5ZXJEYXRhLmRhdGEubGVuZ3RoKTtcbiAgfVxuXG4gIGlzVmFsaWRUb1NhdmUoKSB7XG4gICAgcmV0dXJuIHRoaXMudHlwZSAmJiB0aGlzLmhhc0FsbENvbHVtbnMoKTtcbiAgfVxuXG4gIHNob3VsZFJlbmRlckxheWVyKGRhdGEpIHtcbiAgICByZXR1cm4gKFxuICAgICAgKHRoaXMudHlwZSAmJlxuICAgICAgdGhpcy5oYXNBbGxDb2x1bW5zKCkgJiZcbiAgICAgIHRoaXMuaGFzTGF5ZXJEYXRhKGRhdGEpICYmXG4gICAgICB0eXBlb2YgdGhpcy5yZW5kZXJMYXllciA9PT0gJ2Z1bmN0aW9uJylcbiAgICApO1xuICB9XG5cbiAgZ2V0Q29sb3JTY2FsZShjb2xvclNjYWxlLCBjb2xvckRvbWFpbiwgY29sb3JSYW5nZSkge1xuICAgIGlmIChBcnJheS5pc0FycmF5KGNvbG9yUmFuZ2UuY29sb3JNYXApKSB7XG4gICAgICBjb25zdCBjTWFwID0gbmV3IE1hcCgpO1xuICAgICAgY29sb3JSYW5nZS5jb2xvck1hcC5mb3JFYWNoKChbaywgdl0pID0+IHtcbiAgICAgICAgY01hcC5zZXQoaywgdHlwZW9mIHYgPT09ICdzdHJpbmcnID8gaGV4VG9SZ2IodikgOiB2KTtcbiAgICAgIH0pO1xuXG4gICAgICAvLyBAdHMtaWdub3JlIGQzIHNjYWxlXG4gICAgICBjb25zdCBzY2FsZSA9IFNDQUxFX0ZVTkNbY29sb3JTY2FsZV0oKVxuICAgICAgICAuZG9tYWluKEFycmF5LmZyb20oY01hcC5rZXlzKCkpKVxuICAgICAgICAucmFuZ2UoQXJyYXkuZnJvbShjTWFwLnZhbHVlcygpKSlcbiAgICAgICAgLnVua25vd24oVU5LTk9XTl9DT0xPUik7XG4gICAgICByZXR1cm4gc2NhbGU7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuZ2V0VmlzQ2hhbm5lbFNjYWxlKGNvbG9yU2NhbGUsIGNvbG9yRG9tYWluLCBjb2xvclJhbmdlLmNvbG9ycy5tYXAoaGV4VG9SZ2IpKTtcbiAgfVxuXG4gIGdldEN1c3RvbU1hcmtlcnNTY2FsZShyYW5nZSwgZmFsbGJhY2tJY29uKSB7XG4gICAgbGV0IHVua25vd25WYWx1ZSA9IGZhbGxiYWNrSWNvbiB8fCBGQUxMQkFDS19JQ09OO1xuICAgIGlmICghcmFuZ2UpIHtcbiAgICAgIHJldHVybiAoKSA9PiB1bmtub3duVmFsdWU7XG4gICAgfVxuXG4gICAgY29uc3QgbWFwcGluZyA9IG5ldyBNYXAoKTtcblxuICAgIGlmIChyYW5nZS5vdGhlcnNNYXJrZXIpIHtcbiAgICAgIHVua25vd25WYWx1ZSA9IHJhbmdlLm90aGVyc01hcmtlcjtcbiAgICB9XG4gICAgZm9yIChjb25zdCB7dmFsdWUsIG1hcmtlclVybH0gb2YgcmFuZ2UubWFya2VyTWFwKSB7XG4gICAgICBpZiAobWFya2VyVXJsKSB7XG4gICAgICAgIG1hcHBpbmcuc2V0KHZhbHVlLCBtYXJrZXJVcmwpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEB0cy1pZ25vcmUgZDMgc2NhbGVcbiAgICBjb25zdCBzY2FsZSA9IHNjYWxlT3JkaW5hbCgpXG4gICAgICAuZG9tYWluKEFycmF5LmZyb20obWFwcGluZy5rZXlzKCkpKVxuICAgICAgLnJhbmdlKEFycmF5LmZyb20obWFwcGluZy52YWx1ZXMoKSkpXG4gICAgICAudW5rbm93bih1bmtub3duVmFsdWUpO1xuICAgIHJldHVybiBzY2FsZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNYXBwaW5nIGZyb20gdmlzdWFsIGNoYW5uZWxzIHRvIGRlY2suZ2wgYWNjZXNvcnNcbiAgICogQHBhcmFtIHtPYmplY3R9IHBhcmFtIFBhcmFtZXRlcnNcbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gcGFyYW0uZGF0YUFjY2Vzc29yIEFjY2VzcyBrZXBsZXIuZ2wgbGF5ZXIgZGF0YSBmcm9tIGRlY2suZ2wgbGF5ZXJcbiAgICogQHBhcmFtIHtpbXBvcnQoJ3V0aWxzL3RhYmxlLXV0aWxzL2RhdGEtY29udGFpbmVyLWludGVyZmFjZScpLkRhdGFDb250YWluZXJJbnRlcmZhY2V9IHBhcmFtLmRhdGFDb250YWluZXIgRGF0YUNvbnRhaW5lciB0byB1c2UgdXNlIHdpdGggZGF0YUFjY2Vzc29yXG4gICAqIEByZXR1cm4ge09iamVjdH0gYXR0cmlidXRlQWNjZXNzb3JzIC0gZGVjay5nbCBsYXllciBhdHRyaWJ1dGUgYWNjZXNzb3JzXG4gICAqL1xuICBnZXRBdHRyaWJ1dGVBY2Nlc3NvcnMoe2RhdGFBY2Nlc3NvciA9IGRlZmF1bHREYXRhQWNjZXNzb3IsIGRhdGFDb250YWluZXJ9KSB7XG4gICAgY29uc3QgYXR0cmlidXRlQWNjZXNzb3JzID0ge307XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgY29tcGxleGl0eVxuICAgIE9iamVjdC5rZXlzKHRoaXMudmlzdWFsQ2hhbm5lbHMpLmZvckVhY2goY2hhbm5lbCA9PiB7XG4gICAgICBjb25zdCB7XG4gICAgICAgIGZpZWxkLFxuICAgICAgICBmaXhlZCxcbiAgICAgICAgc2NhbGUsXG4gICAgICAgIGRvbWFpbixcbiAgICAgICAgcmFuZ2UsXG4gICAgICAgIGFjY2Vzc29yLFxuICAgICAgICBkZWZhdWx0VmFsdWUsXG4gICAgICAgIGdldEF0dHJpYnV0ZVZhbHVlLFxuICAgICAgICBudWxsVmFsdWUsXG4gICAgICAgIGNoYW5uZWxTY2FsZVR5cGUsXG4gICAgICAgIGFnZ3JlZ2F0aW9uXG4gICAgICB9ID0gdGhpcy52aXN1YWxDaGFubmVsc1tjaGFubmVsXTtcblxuICAgICAgY29uc3Qgc2hvdWxkR2V0U2NhbGUgPSBCb29sZWFuKFxuICAgICAgICAoc2NhbGUgfHwgY2hhbm5lbFNjYWxlVHlwZSA9PT0gQ0hBTk5FTF9TQ0FMRVMuaWRlbnRpdHkpICYmIHRoaXMuY29uZmlnW2ZpZWxkXVxuICAgICAgKTtcblxuICAgICAgaWYgKHNob3VsZEdldFNjYWxlKSB7XG4gICAgICAgIGNvbnN0IGFyZ3MgPSBbdGhpcy5jb25maWdbc2NhbGVdLCB0aGlzLmNvbmZpZ1tkb21haW5dLCB0aGlzLmNvbmZpZy52aXNDb25maWdbcmFuZ2VdXTtcbiAgICAgICAgY29uc3QgaXNGaXhlZCA9IGZpeGVkICYmIHRoaXMuY29uZmlnLnZpc0NvbmZpZ1tmaXhlZF07XG4gICAgICAgIC8vIEl0J3MgaW1wb3J0YW50IHRvIGRlY2xhcmUgYXMgY29uc3QgYWxsIHRoZSBwYXJhbWV0ZXJzIHRoYXQgd2UgYXJlIGdvaW5nIHRvIGJlIHVzZSBpbiB0aGUgZ2V0RW5jb2RlZENoYW5uZWxWYWx1ZSBjYWxsXG4gICAgICAgIC8vIG90aGVyd2lzZSwgdGhlIG9sZExheWVyRGF0YSBwYXJhbWV0ZXIgaW4gZm9ybWF0TGF5ZXJEYXRhIG1ldGhvZCB3aWxsIGJlIHdyb25nICh5b3UgY2FuIGNoZWNrIHRoZSBmb3JtYXRMYXllckRhdGEgVGlsZUxheWVyIG1ldGhvZCBpbiBCdWlsZGVyIGFzIGV4YW1wbGUpXG4gICAgICAgIGNvbnN0IGZpZWxkQ29uZmlnID0gdGhpcy5jb25maWdbZmllbGRdO1xuICAgICAgICBjb25zdCBhZ2dyZWdhdGlvblZhbHVlID0gdGhpcy5jb25maWcudmlzQ29uZmlnW2FnZ3JlZ2F0aW9uXTtcblxuICAgICAgICBjb25zdCBzY2FsZUZ1bmN0aW9uID1cbiAgICAgICAgICBjaGFubmVsU2NhbGVUeXBlID09PSBDSEFOTkVMX1NDQUxFUy5pZGVudGl0eVxuICAgICAgICAgICAgPyBzY2FsZUlkZW50aXR5XG4gICAgICAgICAgICA6IGNoYW5uZWxTY2FsZVR5cGUgPT09IENIQU5ORUxfU0NBTEVTLmNvbG9yXG4gICAgICAgICAgICA/IHRoaXMuZ2V0Q29sb3JTY2FsZSguLi5hcmdzKVxuICAgICAgICAgICAgOiBjaGFubmVsU2NhbGVUeXBlID09PSBDSEFOTkVMX1NDQUxFUy5jdXN0b21NYXJrZXJcbiAgICAgICAgICAgID8gdGhpcy5nZXRDdXN0b21NYXJrZXJzU2NhbGUoXG4gICAgICAgICAgICAgICAgdGhpcy5jb25maWcudmlzQ29uZmlnW3JhbmdlXSxcbiAgICAgICAgICAgICAgICB0aGlzLmNvbmZpZy52aXNDb25maWcuY3VzdG9tTWFya2Vyc1VybFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICA6IHRoaXMuZ2V0VmlzQ2hhbm5lbFNjYWxlKC4uLmFyZ3MsIGlzRml4ZWQpO1xuXG4gICAgICAgIGF0dHJpYnV0ZUFjY2Vzc29yc1thY2Nlc3Nvcl0gPSBkID0+XG4gICAgICAgICAgdGhpcy5nZXRFbmNvZGVkQ2hhbm5lbFZhbHVlKFxuICAgICAgICAgICAgc2NhbGVGdW5jdGlvbixcbiAgICAgICAgICAgIGRhdGFBY2Nlc3NvcihkYXRhQ29udGFpbmVyKShkKSxcbiAgICAgICAgICAgIGZpZWxkQ29uZmlnLFxuICAgICAgICAgICAgYWdncmVnYXRpb25WYWx1ZSxcbiAgICAgICAgICAgIG51bGxWYWx1ZVxuICAgICAgICAgICk7XG4gICAgICB9IGVsc2UgaWYgKHR5cGVvZiBnZXRBdHRyaWJ1dGVWYWx1ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBhdHRyaWJ1dGVBY2Nlc3NvcnNbYWNjZXNzb3JdID0gZ2V0QXR0cmlidXRlVmFsdWUodGhpcy5jb25maWcpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYXR0cmlidXRlQWNjZXNzb3JzW2FjY2Vzc29yXSA9XG4gICAgICAgICAgdHlwZW9mIGRlZmF1bHRWYWx1ZSA9PT0gJ2Z1bmN0aW9uJyA/IGRlZmF1bHRWYWx1ZSh0aGlzLmNvbmZpZykgOiBkZWZhdWx0VmFsdWU7XG4gICAgICB9XG5cbiAgICAgIGlmICghKGFjY2Vzc29yIGluIGF0dHJpYnV0ZUFjY2Vzc29ycykpIHtcbiAgICAgICAgQ29uc29sZS53YXJuKGBGYWlsZWQgdG8gcHJvdmlkZSBhY2Nlc3NvciBmdW5jdGlvbiBmb3IgJHthY2Nlc3NvciB8fCBjaGFubmVsfWApO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGF0dHJpYnV0ZUFjY2Vzc29ycztcbiAgfVxuXG4gIGdldFZpc0NoYW5uZWxTY2FsZShzY2FsZSwgZG9tYWluLCByYW5nZSwgZml4ZWQpIHtcbiAgICBpZiAoc2NhbGUgPT09IFNDQUxFX1RZUEVTLm9yZGluYWwpIHtcbiAgICAgIC8vIEB0cy1pZ25vcmUgZDMtc2NhbGUgdHlwZVxuICAgICAgcmV0dXJuIFNDQUxFX0ZVTkNbc2NhbGVdKClcbiAgICAgICAgLmRvbWFpbihkb21haW4uc2xpY2UoMCwgcmFuZ2UubGVuZ3RoKSlcbiAgICAgICAgLnJhbmdlKHJhbmdlKVxuICAgICAgICAudW5rbm93bihVTktOT1dOX0NPTE9SKTtcbiAgICB9XG5cbiAgICAvLyBAdHMtaWdub3JlIGQzLXNjYWxlIHR5cGVcbiAgICByZXR1cm4gU0NBTEVfRlVOQ1tmaXhlZCA/ICdsaW5lYXInIDogc2NhbGVdKClcbiAgICAgIC5kb21haW4oZG9tYWluKVxuICAgICAgLnJhbmdlKGZpeGVkID8gZG9tYWluIDogcmFuZ2UpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBsb25naXR1ZGUgYW5kIGxhdGl0dWRlIGJvdW5kcyBvZiB0aGUgZGF0YS5cbiAgICogQHBhcmFtIHtpbXBvcnQoJ3V0aWxzL3RhYmxlLXV0aWxzL2RhdGEtY29udGFpbmVyLWludGVyZmFjZScpLkRhdGFDb250YWluZXJJbnRlcmZhY2V9IGRhdGFDb250YWluZXIgRGF0YUNvbnRhaW5lciB0byBjYWxjdWxhdGUgYm91bmRzIGZvci5cbiAgICogQHBhcmFtIHsoZDoge2luZGV4OiBudW1iZXJ9LCBkYzogaW1wb3J0KCd1dGlscy90YWJsZS11dGlscy9kYXRhLWNvbnRhaW5lci1pbnRlcmZhY2UnKS5EYXRhQ29udGFpbmVySW50ZXJmYWNlKSA9PiBudW1iZXJbXX0gZ2V0UG9zaXRpb24gQWNjZXNzIGtlcGxlci5nbCBsYXllciBkYXRhIGZyb20gZGVjay5nbCBsYXllclxuICAgKiBAcmV0dXJuIHtudW1iZXJbXXxudWxsfSBib3VuZHMgb2YgdGhlIGRhdGEuXG4gICAqL1xuICBnZXRQb2ludHNCb3VuZHMoZGF0YUNvbnRhaW5lciwgZ2V0UG9zaXRpb24pIHtcbiAgICAvLyBubyBuZWVkIHRvIGxvb3AgdGhyb3VnaCB0aGUgZW50aXJlIGRhdGFzZXRcbiAgICAvLyBnZXQgYSBzYW1wbGUgb2YgZGF0YSB0byBjYWxjdWxhdGUgYm91bmRzXG4gICAgY29uc3Qgc2FtcGxlRGF0YSA9XG4gICAgICBkYXRhQ29udGFpbmVyLm51bVJvd3MoKSA+IE1BWF9TQU1QTEVfU0laRVxuICAgICAgICA/IGdldFNhbXBsZURhdGEoZGF0YUNvbnRhaW5lciwgTUFYX1NBTVBMRV9TSVpFKVxuICAgICAgICA6IGRhdGFDb250YWluZXI7XG5cbiAgICBjb25zdCBwb2ludHMgPSBzYW1wbGVEYXRhLm1hcEluZGV4KGdldFBvc2l0aW9uKTtcblxuICAgIGNvbnN0IGxhdEJvdW5kcyA9IGdldExhdExuZ0JvdW5kcyhwb2ludHMsIDEsIFstOTAsIDkwXSk7XG4gICAgY29uc3QgbG5nQm91bmRzID0gZ2V0TGF0TG5nQm91bmRzKHBvaW50cywgMCwgWy0xODAsIDE4MF0pO1xuXG4gICAgaWYgKCFsYXRCb3VuZHMgfHwgIWxuZ0JvdW5kcykge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIFtsbmdCb3VuZHNbMF0sIGxhdEJvdW5kc1swXSwgbG5nQm91bmRzWzFdLCBsYXRCb3VuZHNbMV1dO1xuICB9XG5cbiAgZ2V0Q2hhbmdlZFRyaWdnZXJzKGRhdGFVcGRhdGVUcmlnZ2Vycykge1xuICAgIGNvbnN0IHRyaWdnZXJDaGFuZ2VkID0gZGlmZlVwZGF0ZVRyaWdnZXJzKGRhdGFVcGRhdGVUcmlnZ2VycywgdGhpcy5fb2xkRGF0YVVwZGF0ZVRyaWdnZXJzKTtcbiAgICB0aGlzLl9vbGREYXRhVXBkYXRlVHJpZ2dlcnMgPSBkYXRhVXBkYXRlVHJpZ2dlcnM7XG5cbiAgICByZXR1cm4gdHJpZ2dlckNoYW5nZWQ7XG4gIH1cblxuICBnZXRFbmNvZGVkQ2hhbm5lbFZhbHVlKFxuICAgIHNjYWxlLFxuICAgIGRhdGEsXG4gICAgZmllbGQsXG4gICAgLy8gSW4gYnVpbGRlciB3ZSBvdmVyd3JpdGUgdGhlIGdldFZhbHVlIGZ1bmN0aW9uIGFuZCB3ZSB1c2UgdGhlIF9hZ2dyZWdhdGlvbiBwYXJhbWV0ZXIgaW4gc3BhdGlhbCBpbmRleCBsYXllcnMgYXMgdGhlIFF1YWRrZXlMYXllci5cbiAgICBfYWdncmVnYXRpb24sXG4gICAgbnVsbFZhbHVlID0gTk9fVkFMVUVfQ09MT1IsXG4gICAgZ2V0VmFsdWUgPSBkZWZhdWx0R2V0RmllbGRWYWx1ZVxuICApIHtcbiAgICBjb25zdCB7dHlwZX0gPSBmaWVsZDtcbiAgICBjb25zdCB2YWx1ZSA9IGdldFZhbHVlKGZpZWxkLCBkYXRhKTtcblxuICAgIGlmICghbm90TnVsbG9yVW5kZWZpbmVkKHZhbHVlKSkge1xuICAgICAgcmV0dXJuIG51bGxWYWx1ZTtcbiAgICB9XG5cbiAgICBsZXQgYXR0cmlidXRlVmFsdWU7XG4gICAgaWYgKHR5cGUgPT09IEFMTF9GSUVMRF9UWVBFUy50aW1lc3RhbXApIHtcbiAgICAgIC8vIHNob3VsZG4ndCBuZWVkIHRvIGNvbnZlcnQgaGVyZVxuICAgICAgLy8gc2NhbGUgRnVuY3Rpb24gc2hvdWxkIHRha2UgY2FyZSBvZiBpdFxuICAgICAgYXR0cmlidXRlVmFsdWUgPSBzY2FsZShuZXcgRGF0ZSh2YWx1ZSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBhdHRyaWJ1dGVWYWx1ZSA9IHNjYWxlKHZhbHVlKTtcbiAgICB9XG5cbiAgICBpZiAoIW5vdE51bGxvclVuZGVmaW5lZChhdHRyaWJ1dGVWYWx1ZSkpIHtcbiAgICAgIGF0dHJpYnV0ZVZhbHVlID0gbnVsbFZhbHVlO1xuICAgIH1cblxuICAgIHJldHVybiBhdHRyaWJ1dGVWYWx1ZTtcbiAgfVxuXG4gIHVwZGF0ZU1ldGEobWV0YSkge1xuICAgIHRoaXMubWV0YSA9IHsuLi50aGlzLm1ldGEsIC4uLm1ldGF9O1xuICB9XG5cbiAgZ2V0RGF0YVVwZGF0ZVRyaWdnZXJzKHtmaWx0ZXJlZEluZGV4LCBpZCwgYWxsRGF0YX0pIHtcbiAgICBjb25zdCB7Y29sdW1uc30gPSB0aGlzLmNvbmZpZztcblxuICAgIHJldHVybiB7XG4gICAgICBnZXREYXRhOiB7ZGF0YXNldElkOiBpZCwgYWxsRGF0YSwgY29sdW1ucywgZmlsdGVyZWRJbmRleH0sXG4gICAgICBnZXRNZXRhOiB7ZGF0YXNldElkOiBpZCwgYWxsRGF0YSwgY29sdW1uc30sXG4gICAgICAuLi4odGhpcy5jb25maWcudGV4dExhYmVsIHx8IFtdKS5yZWR1Y2UoXG4gICAgICAgIChhY2N1LCB0bCwgaSkgPT4gKHtcbiAgICAgICAgICAuLi5hY2N1LFxuICAgICAgICAgIFtgZ2V0TGFiZWxDaGFyYWN0ZXJTZXQtJHtpfWBdOiB0bC5maWVsZCA/IHRsLmZpZWxkLm5hbWUgOiBudWxsXG4gICAgICAgIH0pLFxuICAgICAgICB7fVxuICAgICAgKVxuICAgIH07XG4gIH1cblxuICB1cGRhdGVEYXRhKGRhdGFzZXRzLCBvbGRMYXllckRhdGEpIHtcbiAgICBpZiAoIXRoaXMuY29uZmlnLmRhdGFJZCkge1xuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cbiAgICBjb25zdCBsYXllckRhdGFzZXQgPSBkYXRhc2V0c1t0aGlzLmNvbmZpZy5kYXRhSWRdO1xuICAgIGNvbnN0IHtkYXRhQ29udGFpbmVyfSA9IGxheWVyRGF0YXNldDtcblxuICAgIHRoaXMudXBkYXRlVmlzdWFsQ2hhbm5lbEZpZWxkcyhsYXllckRhdGFzZXQpO1xuXG4gICAgY29uc3QgZ2V0UG9zaXRpb24gPSB0aGlzLmdldFBvc2l0aW9uQWNjZXNzb3IoZGF0YUNvbnRhaW5lcik7XG4gICAgY29uc3QgZGF0YVVwZGF0ZVRyaWdnZXJzID0gdGhpcy5nZXREYXRhVXBkYXRlVHJpZ2dlcnMobGF5ZXJEYXRhc2V0KTtcbiAgICBjb25zdCB0cmlnZ2VyQ2hhbmdlZCA9IHRoaXMuZ2V0Q2hhbmdlZFRyaWdnZXJzKGRhdGFVcGRhdGVUcmlnZ2Vycyk7XG5cbiAgICBpZiAodHJpZ2dlckNoYW5nZWQuZ2V0TWV0YSkge1xuICAgICAgdGhpcy51cGRhdGVMYXllck1ldGEoZGF0YUNvbnRhaW5lciwgZ2V0UG9zaXRpb24pO1xuICAgIH1cblxuICAgIGxldCBkYXRhID0gW107XG5cbiAgICBpZiAoIXRyaWdnZXJDaGFuZ2VkLmdldERhdGEgJiYgb2xkTGF5ZXJEYXRhICYmIG9sZExheWVyRGF0YS5kYXRhKSB7XG4gICAgICAvLyBzYW1lIGRhdGFcbiAgICAgIGRhdGEgPSBvbGRMYXllckRhdGEuZGF0YTtcbiAgICB9IGVsc2Uge1xuICAgICAgZGF0YSA9IHRoaXMuY2FsY3VsYXRlRGF0YUF0dHJpYnV0ZShsYXllckRhdGFzZXQsIGdldFBvc2l0aW9uKTtcbiAgICB9XG5cbiAgICByZXR1cm4ge2RhdGEsIHRyaWdnZXJDaGFuZ2VkfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGUgc3R5bGVkIGZpZWxkcyB0byBtYXRjaCBvbmVzIGZyb20gbmV3IGRhdGFzZXQuXG4gICAqXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBkYXRhc2V0XG4gICAqL1xuICB1cGRhdGVWaXN1YWxDaGFubmVsRmllbGRzKGRhdGFzZXQpIHtcbiAgICBmb3IgKGNvbnN0IHtmaWVsZH0gb2YgT2JqZWN0LnZhbHVlcyh0aGlzLnZpc3VhbENoYW5uZWxzKSkge1xuICAgICAgY29uc3Qgb2xkRmllbGQgPSB0aGlzLmNvbmZpZ1tmaWVsZF07XG4gICAgICBpZiAoIW9sZEZpZWxkKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGNvbnN0IG5ld0RhdGFTZXRGaWVsZCA9IGRhdGFzZXQuZmllbGRzLmZpbmQoZmQgPT4gZmQubmFtZSA9PT0gb2xkRmllbGQubmFtZSkgfHwgbnVsbDtcbiAgICAgIHRoaXMudXBkYXRlTGF5ZXJDb25maWcoe1tmaWVsZF06IG5ld0RhdGFTZXRGaWVsZH0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBoZWxwZXIgZnVuY3Rpb24gdG8gdXBkYXRlIG9uZSBsYXllciBkb21haW4gd2hlbiBzdGF0ZS5kYXRhIGNoYW5nZWRcbiAgICogaWYgc3RhdGUuZGF0YSBjaGFuZ2UgaXMgZHVlIG90IHVwZGF0ZSBmaWx0ZXIsIG5ld0ZpbGVyIHdpbGwgYmUgcGFzc2VkXG4gICAqIGNhbGxlZCBieSB1cGRhdGVBbGxMYXllckRvbWFpbkRhdGFcbiAgICogQHBhcmFtIHtPYmplY3R9IGRhdGFzZXRzXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBuZXdGaWx0ZXJcbiAgICogQHJldHVybnMge29iamVjdH0gbGF5ZXJcbiAgICovXG4gIHVwZGF0ZUxheWVyRG9tYWluKGRhdGFzZXRzLCBuZXdGaWx0ZXIpIHtcbiAgICBjb25zdCB0YWJsZSA9IHRoaXMuZ2V0RGF0YXNldChkYXRhc2V0cyk7XG4gICAgaWYgKCF0YWJsZSkge1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICAgIE9iamVjdC52YWx1ZXModGhpcy52aXN1YWxDaGFubmVscykuZm9yRWFjaChjaGFubmVsID0+IHtcbiAgICAgIGNvbnN0IHtzY2FsZX0gPSBjaGFubmVsO1xuICAgICAgY29uc3Qgc2NhbGVUeXBlID0gdGhpcy5jb25maWdbc2NhbGVdO1xuICAgICAgLy8gb3JkaW5hbCBkb21haW4gaXMgYmFzZWQgb24gZGF0YUNvbnRhaW5lciwgaWYgb25seSBmaWx0ZXIgY2hhbmdlZFxuICAgICAgLy8gbm8gbmVlZCB0byB1cGRhdGUgb3JkaW5hbCBkb21haW5cbiAgICAgIGlmICghbmV3RmlsdGVyIHx8IHNjYWxlVHlwZSAhPT0gU0NBTEVfVFlQRVMub3JkaW5hbCkge1xuICAgICAgICBjb25zdCB7ZG9tYWlufSA9IGNoYW5uZWw7XG4gICAgICAgIGNvbnN0IHVwZGF0ZWREb21haW4gPSB0aGlzLmNhbGN1bGF0ZUxheWVyRG9tYWluKHRhYmxlLCBjaGFubmVsKTtcbiAgICAgICAgdGhpcy51cGRhdGVMYXllckNvbmZpZyh7W2RvbWFpbl06IHVwZGF0ZWREb21haW59KTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgZ2V0RGF0YXNldChkYXRhc2V0cykge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZy5kYXRhSWQgPyBkYXRhc2V0c1t0aGlzLmNvbmZpZy5kYXRhSWRdIDogbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZSB2aXN1YWwgY2hhbm5lbCBmaWVsZCBhbmQgc2NhbGVzIGJhc2VkIG9uIHN1cHBvcnRlZCBmaWVsZCAmIHNjYWxlIHR5cGVcbiAgICogQHBhcmFtIGNoYW5uZWxcbiAgICovXG4gIHZhbGlkYXRlVmlzdWFsQ2hhbm5lbChjaGFubmVsKSB7XG4gICAgdGhpcy52YWxpZGF0ZUZpZWxkVHlwZShjaGFubmVsKTtcbiAgICB0aGlzLnZhbGlkYXRlU2NhbGUoY2hhbm5lbCk7XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGUgZmllbGQgdHlwZSBiYXNlZCBvbiBjaGFubmVsU2NhbGVUeXBlXG4gICAqL1xuICB2YWxpZGF0ZUZpZWxkVHlwZShjaGFubmVsKSB7XG4gICAgY29uc3QgdmlzdWFsQ2hhbm5lbCA9IHRoaXMudmlzdWFsQ2hhbm5lbHNbY2hhbm5lbF07XG4gICAgY29uc3Qge2ZpZWxkLCBjaGFubmVsU2NhbGVUeXBlLCBzdXBwb3J0ZWRGaWVsZFR5cGVzfSA9IHZpc3VhbENoYW5uZWw7XG5cbiAgICBpZiAodGhpcy5jb25maWdbZmllbGRdKSB7XG4gICAgICAvLyBpZiBmaWVsZCBpcyBzZWxlY3RlZCwgY2hlY2sgaWYgZmllbGQgdHlwZSBpcyBzdXBwb3J0ZWRcbiAgICAgIGNvbnN0IGNoYW5uZWxTdXBwb3J0ZWRGaWVsZFR5cGVzID1cbiAgICAgICAgc3VwcG9ydGVkRmllbGRUeXBlcyB8fCBDSEFOTkVMX1NDQUxFX1NVUFBPUlRFRF9GSUVMRFNbY2hhbm5lbFNjYWxlVHlwZV07XG5cbiAgICAgIGlmICghY2hhbm5lbFN1cHBvcnRlZEZpZWxkVHlwZXMuaW5jbHVkZXModGhpcy5jb25maWdbZmllbGRdLnR5cGUpKSB7XG4gICAgICAgIC8vIGZpZWxkIHR5cGUgaXMgbm90IHN1cHBvcnRlZCwgc2V0IGl0IGJhY2sgdG8gbnVsbFxuICAgICAgICAvLyBzZXQgc2NhbGUgYmFjayB0byBkZWZhdWx0XG4gICAgICAgIHRoaXMudXBkYXRlTGF5ZXJDb25maWcoe1tmaWVsZF06IG51bGx9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGUgc2NhbGUgdHlwZSBiYXNlZCBvbiBhZ2dyZWdhdGlvblxuICAgKi9cbiAgdmFsaWRhdGVTY2FsZShjaGFubmVsKSB7XG4gICAgY29uc3QgdmlzdWFsQ2hhbm5lbCA9IHRoaXMudmlzdWFsQ2hhbm5lbHNbY2hhbm5lbF07XG4gICAgY29uc3Qge3NjYWxlfSA9IHZpc3VhbENoYW5uZWw7XG4gICAgaWYgKCFzY2FsZSkge1xuICAgICAgLy8gdmlzdWFsQ2hhbm5lbCBkb2Vzbid0IGhhdmUgc2NhbGVcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3Qgc2NhbGVPcHRpb25zID0gdGhpcy5nZXRTY2FsZU9wdGlvbnMoY2hhbm5lbCk7XG4gICAgLy8gY2hlY2sgaWYgY3VycmVudCBzZWxlY3RlZCBzY2FsZSBpc1xuICAgIC8vIHN1cHBvcnRlZCwgaWYgbm90LCBjaGFuZ2UgdG8gZGVmYXVsdFxuICAgIGlmICghc2NhbGVPcHRpb25zLmluY2x1ZGVzKHRoaXMuY29uZmlnW3NjYWxlXSkpIHtcbiAgICAgIHRoaXMudXBkYXRlTGF5ZXJDb25maWcoe1tzY2FsZV06IHNjYWxlT3B0aW9uc1swXX0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgc2NhbGUgb3B0aW9ucyBiYXNlZCBvbiBjdXJyZW50IGZpZWxkXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBjaGFubmVsXG4gICAqIEByZXR1cm5zIHtzdHJpbmdbXX1cbiAgICovXG4gIGdldFNjYWxlT3B0aW9ucyhjaGFubmVsKSB7XG4gICAgY29uc3QgdmlzdWFsQ2hhbm5lbCA9IHRoaXMudmlzdWFsQ2hhbm5lbHNbY2hhbm5lbF07XG4gICAgY29uc3Qge2ZpZWxkLCBzY2FsZSwgY2hhbm5lbFNjYWxlVHlwZX0gPSB2aXN1YWxDaGFubmVsO1xuXG4gICAgcmV0dXJuIHRoaXMuY29uZmlnW2ZpZWxkXVxuICAgICAgPyBGSUVMRF9PUFRTW3RoaXMuY29uZmlnW2ZpZWxkXS50eXBlXS5zY2FsZVtjaGFubmVsU2NhbGVUeXBlXVxuICAgICAgOiBbdGhpcy5nZXREZWZhdWx0TGF5ZXJDb25maWcoKVtzY2FsZV1dO1xuICB9XG5cbiAgdXBkYXRlTGF5ZXJWaXN1YWxDaGFubmVsKGRhdGFzZXQsIGNoYW5uZWwpIHtcbiAgICBjb25zdCB2aXN1YWxDaGFubmVsID0gdGhpcy52aXN1YWxDaGFubmVsc1tjaGFubmVsXTtcbiAgICB0aGlzLnZhbGlkYXRlVmlzdWFsQ2hhbm5lbChjaGFubmVsKTtcbiAgICAvLyBjYWxjdWxhdGUgbGF5ZXIgY2hhbm5lbCBkb21haW5cbiAgICBjb25zdCB1cGRhdGVkRG9tYWluID0gdGhpcy5jYWxjdWxhdGVMYXllckRvbWFpbihkYXRhc2V0LCB2aXN1YWxDaGFubmVsKTtcbiAgICB0aGlzLnVwZGF0ZUxheWVyQ29uZmlnKHtbdmlzdWFsQ2hhbm5lbC5kb21haW5dOiB1cGRhdGVkRG9tYWlufSk7XG4gIH1cblxuICBnZXRWaXN1YWxDaGFubmVsVXBkYXRlVHJpZ2dlcnMoKSB7XG4gICAgY29uc3QgdXBkYXRlVHJpZ2dlcnMgPSB7fTtcbiAgICBPYmplY3QudmFsdWVzKHRoaXMudmlzdWFsQ2hhbm5lbHMpLmZvckVhY2godmlzdWFsQ2hhbm5lbCA9PiB7XG4gICAgICAvLyBmaWVsZCByYW5nZSBzY2FsZSBkb21haW5cbiAgICAgIGNvbnN0IHthY2Nlc3NvciwgZmllbGQsIHNjYWxlLCBkb21haW4sIHJhbmdlLCBkZWZhdWx0VmFsdWUsIGZpeGVkfSA9IHZpc3VhbENoYW5uZWw7XG5cbiAgICAgIHVwZGF0ZVRyaWdnZXJzW2FjY2Vzc29yXSA9IHtcbiAgICAgICAgW2ZpZWxkXTogdGhpcy5jb25maWdbZmllbGRdLFxuICAgICAgICBbc2NhbGVdOiB0aGlzLmNvbmZpZ1tzY2FsZV0sXG4gICAgICAgIFtkb21haW5dOiB0aGlzLmNvbmZpZ1tkb21haW5dLFxuICAgICAgICBbcmFuZ2VdOiB0aGlzLmNvbmZpZy52aXNDb25maWdbcmFuZ2VdLFxuICAgICAgICBkZWZhdWx0VmFsdWU6IHR5cGVvZiBkZWZhdWx0VmFsdWUgPT09ICdmdW5jdGlvbicgPyBkZWZhdWx0VmFsdWUodGhpcy5jb25maWcpIDogZGVmYXVsdFZhbHVlLFxuICAgICAgICAuLi4oZml4ZWQgPyB7W2ZpeGVkXTogdGhpcy5jb25maWcudmlzQ29uZmlnW2ZpeGVkXX0gOiB7fSlcbiAgICAgIH07XG4gICAgfSk7XG4gICAgcmV0dXJuIHVwZGF0ZVRyaWdnZXJzO1xuICB9XG5cbiAgY2FsY3VsYXRlTGF5ZXJEb21haW4oZGF0YXNldCwgdmlzdWFsQ2hhbm5lbCkge1xuICAgIGNvbnN0IHtzY2FsZX0gPSB2aXN1YWxDaGFubmVsO1xuICAgIGNvbnN0IGZpZWxkID0gdGhpcy5jb25maWdbdmlzdWFsQ2hhbm5lbC5maWVsZF07XG4gICAgaWYgKCFmaWVsZCB8fCAhc2NhbGUpIHtcbiAgICAgIC8vIGlmIGNvbG9yRmllbGQgb3Igc2l6ZUZpZWxkIHdlcmUgc2V0IGJhY2sgdG8gbnVsbFxuICAgICAgcmV0dXJuIGRlZmF1bHREb21haW47XG4gICAgfVxuXG4gICAgY29uc3Qgc2NhbGVUeXBlID0gdGhpcy5jb25maWdbc2NhbGVdO1xuICAgIGNvbnN0IGRhdGFTZXRGaWVsZCA9IGRhdGFzZXQuZmllbGRzLmZpbmQoZiA9PiBmLm5hbWUgPT09IGZpZWxkLm5hbWUpO1xuICAgIGlmICghc2NhbGVUeXBlIHx8ICFkYXRhU2V0RmllbGQpIHtcbiAgICAgIC8vIGlmIG5ldyBkYXRhc2V0IGRvZXNuJ3QgY29udGFpbiBwcmV2aW91c2x5IHNldCBmaWVsZFxuICAgICAgcmV0dXJuIGRlZmF1bHREb21haW47XG4gICAgfVxuXG4gICAgcmV0dXJuIGRhdGFzZXQuZ2V0Q29sdW1uTGF5ZXJEb21haW4oZGF0YVNldEZpZWxkLCBzY2FsZVR5cGUpIHx8IGRlZmF1bHREb21haW47XG4gIH1cblxuICBoYXNIb3ZlcmVkT2JqZWN0KG9iamVjdEluZm8pIHtcbiAgICByZXR1cm4gdGhpcy5pc0xheWVySG92ZXJlZChvYmplY3RJbmZvKSAmJiBvYmplY3RJbmZvLm9iamVjdCA/IG9iamVjdEluZm8ub2JqZWN0IDogbnVsbDtcbiAgfVxuXG4gIGlzTGF5ZXJIb3ZlcmVkKG9iamVjdEluZm8pIHtcbiAgICByZXR1cm4gb2JqZWN0SW5mbz8ucGlja2VkICYmIG9iamVjdEluZm8/LmxheWVyPy5wcm9wcz8uaWQgPT09IHRoaXMuaWQ7XG4gIH1cblxuICBnZXRSYWRpdXNTY2FsZUJ5Wm9vbShtYXBTdGF0ZSwgZml4ZWRSYWRpdXMpIHtcbiAgICBjb25zdCByYWRpdXNDaGFubmVsID0gT2JqZWN0LnZhbHVlcyh0aGlzLnZpc3VhbENoYW5uZWxzKS5maW5kKHZjID0+IHZjLnByb3BlcnR5ID09PSAncmFkaXVzJyk7XG5cbiAgICBpZiAoIXJhZGl1c0NoYW5uZWwpIHtcbiAgICAgIHJldHVybiAxO1xuICAgIH1cblxuICAgIGNvbnN0IGZpZWxkID0gcmFkaXVzQ2hhbm5lbC5maWVsZDtcbiAgICBjb25zdCBmaXhlZCA9IGZpeGVkUmFkaXVzID09PSB1bmRlZmluZWQgPyB0aGlzLmNvbmZpZy52aXNDb25maWcuZml4ZWRSYWRpdXMgOiBmaXhlZFJhZGl1cztcbiAgICBjb25zdCB7cmFkaXVzfSA9IHRoaXMuY29uZmlnLnZpc0NvbmZpZztcblxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICByZXR1cm4gZml4ZWQgPyAxIDogKHRoaXMuY29uZmlnW2ZpZWxkXSA/IDEgOiByYWRpdXMpICogdGhpcy5nZXRab29tRmFjdG9yKG1hcFN0YXRlKTtcbiAgfVxuXG4gIGdldFJhZGl1c1NjYWxlKGZpeGVkUmFkaXVzKSB7XG4gICAgY29uc3QgcmFkaXVzQ2hhbm5lbCA9IE9iamVjdC52YWx1ZXModGhpcy52aXN1YWxDaGFubmVscykuZmluZCh2YyA9PiB2Yy5wcm9wZXJ0eSA9PT0gJ3JhZGl1cycpO1xuXG4gICAgaWYgKCFyYWRpdXNDaGFubmVsKSB7XG4gICAgICByZXR1cm4gMTtcbiAgICB9XG5cbiAgICBjb25zdCBmaWVsZCA9IHJhZGl1c0NoYW5uZWwuZmllbGQ7XG4gICAgY29uc3QgZml4ZWQgPSBmaXhlZFJhZGl1cyA9PT0gdW5kZWZpbmVkID8gdGhpcy5jb25maWcudmlzQ29uZmlnLmZpeGVkUmFkaXVzIDogZml4ZWRSYWRpdXM7XG4gICAgY29uc3Qge3JhZGl1c30gPSB0aGlzLmNvbmZpZy52aXNDb25maWc7XG5cbiAgICByZXR1cm4gZml4ZWQgPyAxIDogKHRoaXMuY29uZmlnW2ZpZWxkXSA/IDEgOiByYWRpdXMpO1xuICB9XG5cbiAgZ2V0TWF4TWFya2VyU2l6ZSgpIHtcbiAgICBjb25zdCB7cmFkaXVzRmllbGQsIHNpemVGaWVsZCwgdmlzQ29uZmlnfSA9IHRoaXMuY29uZmlnO1xuICAgIGNvbnN0IHtyYWRpdXNSYW5nZSwgcmFkaXVzfSA9IHZpc0NvbmZpZztcbiAgICBjb25zdCBmaWVsZCA9IHJhZGl1c0ZpZWxkIHx8IHNpemVGaWVsZDtcbiAgICByZXR1cm4gTWF0aC5jZWlsKChmaWVsZCAmJiByYWRpdXNSYW5nZSA/IHJhZGl1c1JhbmdlWzFdIDogcmFkaXVzKSk7XG4gIH1cblxuICBnZXRSYWRpdXNVbml0KGZpeGVkUmFkaXVzKSB7XG4gICAgY29uc3QgcmFkaXVzQ2hhbm5lbCA9IE9iamVjdC52YWx1ZXModGhpcy52aXN1YWxDaGFubmVscykuZmluZCh2YyA9PiB2Yy5wcm9wZXJ0eSA9PT0gJ3JhZGl1cycpO1xuXG4gICAgaWYgKCFyYWRpdXNDaGFubmVsKSB7XG4gICAgICByZXR1cm4gJ3BpeGVscyc7XG4gICAgfVxuXG4gICAgY29uc3QgZml4ZWQgPSBmaXhlZFJhZGl1cyA9PT0gdW5kZWZpbmVkID8gdGhpcy5jb25maWcudmlzQ29uZmlnLmZpeGVkUmFkaXVzIDogZml4ZWRSYWRpdXM7XG5cbiAgICByZXR1cm4gZml4ZWQgPyAnbWV0ZXJzJyA6ICdwaXhlbHMnO1xuICB9XG5cbiAgc2hvdWxkQ2FsY3VsYXRlTGF5ZXJEYXRhKHByb3BzKSB7XG4gICAgcmV0dXJuIHByb3BzLnNvbWUocCA9PiAhdGhpcy5ub25lTGF5ZXJEYXRhQWZmZWN0aW5nUHJvcHMuaW5jbHVkZXMocCkpO1xuICB9XG5cbiAgZ2V0QnJ1c2hpbmdFeHRlbnNpb25Qcm9wcyhpbnRlcmFjdGlvbkNvbmZpZywgYnJ1c2hpbmdUYXJnZXQpIHtcbiAgICBjb25zdCB7YnJ1c2h9ID0gaW50ZXJhY3Rpb25Db25maWc7XG5cbiAgICByZXR1cm4ge1xuICAgICAgLy8gYnJ1c2hpbmdcbiAgICAgIGF1dG9IaWdobGlnaHQ6ICFicnVzaC5lbmFibGVkLFxuICAgICAgYnJ1c2hpbmdSYWRpdXM6IGJydXNoLmNvbmZpZy5zaXplICogMTAwMCxcbiAgICAgIGJydXNoaW5nVGFyZ2V0OiBicnVzaGluZ1RhcmdldCB8fCAnc291cmNlJyxcbiAgICAgIGJydXNoaW5nRW5hYmxlZDogYnJ1c2guZW5hYmxlZFxuICAgIH07XG4gIH1cblxuICBnZXREZWZhdWx0RGVja0xheWVyUHJvcHMoe2lkeCwgZ3B1RmlsdGVyLCBtYXBTdGF0ZSwgdmlzaWJsZSwgbWFza1BvbHlnb259KSB7XG4gICAgY29uc3QgbWFza0V4dGVuc2lvblByb3BzID0gZ2V0TWFza0V4dGVuc2lvblByb3BzKG1hc2tQb2x5Z29uKTtcbiAgICByZXR1cm4ge1xuICAgICAgLi4ubWFza0V4dGVuc2lvblByb3BzLFxuICAgICAgaWQ6IHRoaXMuaWQsXG4gICAgICBpZHgsXG4gICAgICBjb29yZGluYXRlU3lzdGVtOiBDT09SRElOQVRFX1NZU1RFTS5MTkdMQVQsXG4gICAgICBwaWNrYWJsZTogdGhpcy5oYXNJbnRlcmFjdGl2aXR5LFxuICAgICAgd3JhcExvbmdpdHVkZTogdHJ1ZSxcbiAgICAgIHBhcmFtZXRlcnM6IHtkZXB0aFRlc3Q6IEJvb2xlYW4obWFwU3RhdGUuZHJhZ1JvdGF0ZSB8fCB0aGlzLmNvbmZpZy52aXNDb25maWcuZW5hYmxlM2QpfSxcbiAgICAgIGhpZGRlbjogdGhpcy5jb25maWcuaGlkZGVuLFxuICAgICAgdmlzaWJpbGl0eUJ5Wm9vbToge1xuICAgICAgICBtaW46IHRoaXMuY29uZmlnLnZpc2liaWxpdHlCeVpvb20ubWluLFxuICAgICAgICBtYXg6IHRoaXMuY29uZmlnLnZpc2liaWxpdHlCeVpvb20ubWF4XG4gICAgICB9LFxuICAgICAgLy8gdmlzY29uZmlnXG4gICAgICBvcGFjaXR5OiB0aGlzLmNvbmZpZy52aXNDb25maWcub3BhY2l0eSxcbiAgICAgIGhpZ2hsaWdodENvbG9yOiB0aGlzLmNvbmZpZy5oaWdobGlnaHRDb2xvcixcbiAgICAgIC8vIGRhdGEgZmlsdGVyaW5nXG4gICAgICBleHRlbnNpb25zOiBbZGF0YUZpbHRlckV4dGVuc2lvbiwgLi4ubWFza0V4dGVuc2lvblByb3BzLmV4dGVuc2lvbnNdLFxuICAgICAgZmlsdGVyUmFuZ2U6IGdwdUZpbHRlciA/IGdwdUZpbHRlci5maWx0ZXJSYW5nZSA6IHVuZGVmaW5lZCxcbiAgICAgIC8vIGxheWVyIHNob3VsZCBiZSB2aXNpYmxlIGFuZCBpZiBzcGxpdE1hcCwgc2hvd24gaW4gdG8gb25lIG9mIHBhbmVsXG4gICAgICB2aXNpYmxlOiB0aGlzLmNvbmZpZy5pc1Zpc2libGUgJiYgdmlzaWJsZVxuICAgIH07XG4gIH1cblxuICBnZXREZWZhdWx0SG92ZXJMYXllclByb3BzKCkge1xuICAgIHJldHVybiB7XG4gICAgICBpZDogYCR7dGhpcy5pZH0taG92ZXJlZGAsXG4gICAgICBwaWNrYWJsZTogZmFsc2UsXG4gICAgICB3cmFwTG9uZ2l0dWRlOiB0cnVlLFxuICAgICAgY29vcmRpbmF0ZVN5c3RlbTogQ09PUkRJTkFURV9TWVNURU0uTE5HTEFUXG4gICAgfTtcbiAgfVxuXG4gIHJlbmRlclRleHRMYWJlbExheWVyKHtnZXRQb3NpdGlvbiwgZ2V0UGl4ZWxPZmZzZXQsIHVwZGF0ZVRyaWdnZXJzLCBzaGFyZWRQcm9wc30sIHJlbmRlck9wdHMpIHtcbiAgICBjb25zdCB7ZGF0YSwgbWFwU3RhdGV9ID0gcmVuZGVyT3B0cztcbiAgICBjb25zdCB7dGV4dExhYmVsfSA9IHRoaXMuY29uZmlnO1xuXG4gICAgcmV0dXJuIGRhdGEudGV4dExhYmVscy5yZWR1Y2UoKGFjY3UsIGQsIGkpID0+IHtcbiAgICAgIGlmIChkLmdldFRleHQpIHtcbiAgICAgICAgYWNjdS5wdXNoKFxuICAgICAgICAgIG5ldyBUZXh0TGF5ZXIoe1xuICAgICAgICAgICAgLi4uc2hhcmVkUHJvcHMsXG4gICAgICAgICAgICBpZDogYCR7dGhpcy5pZH0tbGFiZWwtJHt0ZXh0TGFiZWxbaV0uZmllbGQ/Lm5hbWV9YCxcbiAgICAgICAgICAgIGRhdGE6IGRhdGEuZGF0YSxcbiAgICAgICAgICAgIGdldFRleHQ6IGQuZ2V0VGV4dCxcbiAgICAgICAgICAgIGdldFBvc2l0aW9uLFxuICAgICAgICAgICAgY2hhcmFjdGVyU2V0OiBkLmNoYXJhY3RlclNldCxcbiAgICAgICAgICAgIGdldFBpeGVsT2Zmc2V0OiBnZXRQaXhlbE9mZnNldCh0ZXh0TGFiZWxbaV0pLFxuICAgICAgICAgICAgZ2V0U2l6ZTogMSxcbiAgICAgICAgICAgIHNpemVTY2FsZTogdGV4dExhYmVsW2ldLnNpemUsXG4gICAgICAgICAgICBnZXRUZXh0QW5jaG9yOiB0ZXh0TGFiZWxbaV0uYW5jaG9yLFxuICAgICAgICAgICAgZ2V0QWxpZ25tZW50QmFzZWxpbmU6IHRleHRMYWJlbFtpXS5hbGlnbm1lbnQsXG4gICAgICAgICAgICBnZXRDb2xvcjogdGV4dExhYmVsW2ldLmNvbG9yLFxuICAgICAgICAgICAgcGFyYW1ldGVyczoge1xuICAgICAgICAgICAgICAvLyB0ZXh0IHdpbGwgYWx3YXlzIHNob3cgb24gdG9wIG9mIGFsbCBsYXllcnNcbiAgICAgICAgICAgICAgZGVwdGhUZXN0OiBmYWxzZVxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgZ2V0RmlsdGVyVmFsdWU6IGRhdGEuZ2V0RmlsdGVyVmFsdWUsXG4gICAgICAgICAgICB1cGRhdGVUcmlnZ2Vyczoge1xuICAgICAgICAgICAgICAuLi51cGRhdGVUcmlnZ2VycyxcbiAgICAgICAgICAgICAgZ2V0VGV4dDogdGV4dExhYmVsW2ldLmZpZWxkPy5uYW1lLFxuICAgICAgICAgICAgICBnZXRQaXhlbE9mZnNldDoge1xuICAgICAgICAgICAgICAgIC4uLnVwZGF0ZVRyaWdnZXJzLmdldFJhZGl1cyxcbiAgICAgICAgICAgICAgICBtYXBTdGF0ZSxcbiAgICAgICAgICAgICAgICBhbmNob3I6IHRleHRMYWJlbFtpXS5hbmNob3IsXG4gICAgICAgICAgICAgICAgYWxpZ25tZW50OiB0ZXh0TGFiZWxbaV0uYWxpZ25tZW50XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIGdldFRleHRBbmNob3I6IHRleHRMYWJlbFtpXS5hbmNob3IsXG4gICAgICAgICAgICAgIGdldEFsaWdubWVudEJhc2VsaW5lOiB0ZXh0TGFiZWxbaV0uYWxpZ25tZW50LFxuICAgICAgICAgICAgICBnZXRDb2xvcjogdGV4dExhYmVsW2ldLmNvbG9yXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBhY2N1O1xuICAgIH0sIFtdKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgZGVjay5nbCBgSWNvbkxheWVyYCBcImF1dG9QYWNrXCIgbW9kZSBhY2Nlc3NvciBmb3IgY3VzdG9tIG1hcmtlcnMuXG4gICAqXG4gICAqIEBwYXJhbSB7Kn0gY3VzdG9tTWFya2Vyc1N0YXR1cyBSZWNvcmQ8dXJsLCBVcmxTdGF0dXM+IHByb3ZpZGVkIGJ5IGJ1aWxkZXIsIFVybFN0YXR1cyBgb2tgIG1lYW5zIFVSTCBpcyBvayBhbmQgcmVhZHkgdG8gcmVuZGVyXG4gICAqIEBwYXJhbSB7Kn0gaWNvblVybEFjY2Vzc29yIGRlY2suZ2wgYWNjZXNzb3IgKG9yIHZhbHVlKSB0aGF0IHJlc29sdmVzIHRvIFVSTCBvZiBpY29uIGZvciBnaXZlbiByb3dcbiAgICogQHJldHVybnMgZGVjay5nbCBhY2Nlc3NvciB0aGF0IHJldHVybnMgVW5wYWNrZWRJY29uIHJlYWR5IHRvIGNvbnN1bWUgYnkgSWNvbkxheWVyXG4gICAqL1xuICBnZXRDdXN0b21NYXJrZXJJY29uQWNjZXNzb3IoY3VzdG9tTWFya2Vyc1N0YXR1cywgaWNvblVybEFjY2Vzc29yKSB7XG4gICAgY29uc3QgbWF4SWNvblNpemUgPSB0aGlzLmdldE1heE1hcmtlclNpemUoKTtcblxuICAgIHJldHVybiBkID0+IHtcbiAgICAgIGNvbnN0IHdhbnRlZFVybCA9XG4gICAgICAgICh0eXBlb2YgaWNvblVybEFjY2Vzc29yID09PSAnZnVuY3Rpb24nKSA/IGljb25VcmxBY2Nlc3NvcihkKSA6IGljb25VcmxBY2Nlc3NvcjtcbiAgICAgIGNvbnN0IHVybCA9IGN1c3RvbU1hcmtlcnNTdGF0dXM/Llt3YW50ZWRVcmxdID09PSAnb2snID8gd2FudGVkVXJsIDogRkFMTEJBQ0tfSUNPTjtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGlkOiBgJHt1cmx9QEAke21heEljb25TaXplfWAsXG4gICAgICAgIHVybCxcbiAgICAgICAgd2lkdGg6IG1heEljb25TaXplLFxuICAgICAgICBoZWlnaHQ6IG1heEljb25TaXplLFxuICAgICAgICBtYXNrOiB0cnVlXG4gICAgICB9O1xuICAgIH07XG4gIH1cblxuICBjYWxjdWxhdGVEYXRhQXR0cmlidXRlKGtlcGxlclRhYmxlLCBnZXRQb3NpdGlvbikge1xuICAgIC8vIGltcGxlbWVudGVkIGluIHN1YmNsYXNzZXNcbiAgICByZXR1cm4gW107XG4gIH1cblxuICB1cGRhdGVMYXllck1ldGEoZGF0YUNvbnRhaW5lciwgZ2V0UG9zaXRpb24pIHtcbiAgICAvLyBpbXBsZW1lbnRlZCBpbiBzdWJjbGFzc2VzXG4gIH1cblxuICBnZXRQb3NpdGlvbkFjY2Vzc29yKGRhdGFDb250YWluZXIpIHtcbiAgICAvLyBpbXBsZW1lbnRlZCBpbiBzdWJjbGFzc2VzXG4gICAgcmV0dXJuICgpID0+IG51bGw7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgTGF5ZXI7XG4iXX0=
|
|
1664
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9sYXllcnMvYmFzZS1sYXllci5qcyJdLCJuYW1lcyI6WyJnZW5lcmF0ZUNvbG9yIiwiTEFZRVJfSURfTEVOR1RIIiwiRkFMTEJBQ0tfSUNPTiIsIk1BWF9TQU1QTEVfU0laRSIsImRlZmF1bHREb21haW4iLCJkYXRhRmlsdGVyRXh0ZW5zaW9uIiwiRGF0YUZpbHRlckV4dGVuc2lvbiIsImZpbHRlclNpemUiLCJNQVhfR1BVX0ZJTFRFUlMiLCJkZWZhdWx0RGF0YUFjY2Vzc29yIiwiZGMiLCJkIiwiZGVmYXVsdEdldEZpZWxkVmFsdWUiLCJmaWVsZCIsInZhbHVlQWNjZXNzb3IiLCJzY2FsZUlkZW50aXR5IiwidiIsIk9WRVJMQVlfVFlQRSIsImRlY2tnbCIsIm1hcGJveGdsIiwibGF5ZXJDb2xvcnMiLCJPYmplY3QiLCJ2YWx1ZXMiLCJEYXRhVml6Q29sb3JzIiwibWFwIiwiaGV4VG9SZ2IiLCJpbmRleCIsImxlbmd0aCIsImNvbG9yTWFrZXIiLCJMYXllciIsInByb3BzIiwiaWQiLCJtZXRhIiwidmlzQ29uZmlnU2V0dGluZ3MiLCJfaW50ZXJhY3Rpdml0eVNldHRpbmdzIiwiY29uZmlnIiwiZ2V0RGVmYXVsdExheWVyQ29uZmlnIiwiY29sdW1ucyIsImdldExheWVyQ29sdW1ucyIsIkRlZmF1bHRMYXllckljb24iLCJ0eXBlIiwiY29sb3IiLCJwcm9wZXJ0eSIsInNjYWxlIiwiZG9tYWluIiwicmFuZ2UiLCJrZXkiLCJjaGFubmVsU2NhbGVUeXBlIiwiQ0hBTk5FTF9TQ0FMRVMiLCJudWxsVmFsdWUiLCJOT19WQUxVRV9DT0xPUiIsImRlZmF1bHRWYWx1ZSIsInNpemUiLCJsYXQiLCJwYWlyIiwiZmllbGRQYWlyS2V5IiwibG5nIiwibGF0MCIsImxuZzAiLCJsYXQxIiwibG5nMSIsImludGVyYWN0aXZpdHlTZXR0aW5ncyIsIkJvb2xlYW4iLCJob3ZlciIsImZpZWxkcyIsImNsaWNrIiwiaGFzVG9vbHRpcCIsImVuYWJsZWQiLCJkYXRhSWQiLCJ2aXNpYmlsaXR5Qnlab29tIiwibWluIiwiWk9PTV9MRVZFTF9MSU1JVFMiLCJtYXgiLCJsYWJlbCIsIkRFRkFVTFRfTEFZRVJfTEFCRUwiLCJuZXh0IiwidmFsdWUiLCJpc1Zpc2libGUiLCJpc0NvbmZpZ0FjdGl2ZSIsImhpZ2hsaWdodENvbG9yIiwiREVGQVVMVF9ISUdITElHSFRfQ09MT1IiLCJoaWRkZW4iLCJjb2xvckZpZWxkIiwiY29sb3JEb21haW4iLCJjb2xvclNjYWxlIiwiU0NBTEVfVFlQRVMiLCJxdWFudGlsZSIsInNpemVEb21haW4iLCJzaXplU2NhbGUiLCJsaW5lYXIiLCJzaXplRmllbGQiLCJyYWRpdXNGaWVsZCIsInZpc0NvbmZpZyIsInRleHRMYWJlbCIsIkRFRkFVTFRfVEVYVF9MQUJFTCIsImNvbG9yVUkiLCJERUZBVUxUX0NPTE9SX1VJIiwiY29sb3JSYW5nZSIsImFuaW1hdGlvbiIsInZpc3VhbENoYW5uZWxzIiwibWVhc3VyZSIsImRpc3BsYXlOYW1lIiwibmFtZSIsImRlZmF1bHRNZWFzdXJlIiwidXBkYXRlIiwiZmllbGRJZHgiLCJjb2x1bW5QYWlycyIsInBhcnRuZXJLZXkiLCJwYXJ0bmVyRmllbGRQYWlyS2V5Iiwiem9vbSIsInpvb21PZmZzZXQiLCJNYXRoIiwicG93IiwiZW5hYmxlRWxldmF0aW9uWm9vbUZhY3RvciIsImRhdGFzZXRzIiwiZmlsdGVyZWRJbmRleCIsIm9iamVjdCIsImRhdGFDb250YWluZXIiLCJyb3ciLCJjb25maWdUb0NvcHkiLCJzaGFsbG93Q29weSIsImNvbmNhdCIsIm5vdFRvQ29weSIsImZvckVhY2giLCJncm91cCIsInB1c2giLCJjdXJyZW50Q29uZmlnIiwiY29waWVkIiwiY29weUxheWVyQ29uZmlnIiwidXBkYXRlTGF5ZXJDb25maWciLCJrZXlzIiwiY2hhbm5lbCIsInZhbGlkYXRlVmlzdWFsQ2hhbm5lbCIsImluY2x1ZGVzIiwibGF5ZXJWaXNDb25maWdzIiwiaXRlbSIsIkxBWUVSX1ZJU19DT05GSUdTIiwiZXZlcnkiLCJwIiwiaGFzT3duUHJvcGVydHkiLCJjb2x1bW5WYWxpZGF0b3JzIiwicmVxdWlyZWQiLCJyZXF1aXJlZExheWVyQ29sdW1ucyIsInJlZHVjZSIsImFjY3UiLCJ2YWxpZGF0b3IiLCJvcHRpb25hbCIsIm9wdGlvbmFsQ29sdW1ucyIsIm5ld0NvbmZpZyIsIm5ld1Zpc0NvbmZpZyIsInByb3AiLCJwcmV2aW91cyIsImNvbG9yVUlQcm9wIiwiZW50cmllcyIsImlzQ29sb3JSYW5nZSIsImNvbG9ycyIsInVwZGF0ZUNvbG9yVUlCeUNvbG9yUmFuZ2UiLCJ1cGRhdGVDb2xvclJhbmdlQnlDb2xvclVJIiwidXBkYXRlQ3VzdG9tUGFsZXR0ZSIsImNvbG9yUmFuZ2VDb25maWciLCJjdXN0b20iLCJjdXN0b21QYWxldHRlIiwic2hvd0Ryb3Bkb3duIiwic3RlcHMiLCJyZXZlcnNlZCIsInNob3VsZFVwZGF0ZSIsInNvbWUiLCJzYW1lR3JvdXAiLCJDT0xPUl9SQU5HRVMiLCJmaWx0ZXIiLCJjciIsImZpbmQiLCJjb2xvck1hcCIsInVwZGF0ZUNvbG9yTWFwIiwidXBkYXRlTGF5ZXJWaXNDb25maWciLCJ1cGRhdGVDYXRlZ29yeUNvbG9yTWFwIiwidXBkYXRlTnVtZXJpY0NvbG9yTWFwIiwiYXNzaWduZWRDYXRlZ29yaWVzIiwibmV3Q29sb3JNYXAiLCJzbGljZSIsImNNYXAiLCJ1bmFzc2lnbmVkQ29sb3JzIiwiY2F0ZWdvcnkiLCJjb2xvck1hcFZhbHVlcyIsImMiLCJtYXhWYWx1ZSIsInByZXZWYWx1ZSIsInN0ZXAiLCJpIiwibGF5ZXJEYXRhIiwiZGF0YSIsImhhc0FsbENvbHVtbnMiLCJoYXNMYXllckRhdGEiLCJyZW5kZXJMYXllciIsIkFycmF5IiwiaXNBcnJheSIsIk1hcCIsImsiLCJzZXQiLCJTQ0FMRV9GVU5DIiwiZnJvbSIsInVua25vd24iLCJVTktOT1dOX0NPTE9SIiwiZ2V0VmlzQ2hhbm5lbFNjYWxlIiwiZmFsbGJhY2tJY29uIiwidW5rbm93blZhbHVlIiwibWFwcGluZyIsIm90aGVyc01hcmtlciIsIm1hcmtlck1hcCIsIm1hcmtlclVybCIsImRhdGFBY2Nlc3NvciIsImF0dHJpYnV0ZUFjY2Vzc29ycyIsImZpeGVkIiwiYWNjZXNzb3IiLCJnZXRBdHRyaWJ1dGVWYWx1ZSIsImFnZ3JlZ2F0aW9uIiwic2hvdWxkR2V0U2NhbGUiLCJpZGVudGl0eSIsImFyZ3MiLCJpc0ZpeGVkIiwiZmllbGRDb25maWciLCJhZ2dyZWdhdGlvblZhbHVlIiwic2NhbGVGdW5jdGlvbiIsImdldENvbG9yU2NhbGUiLCJjdXN0b21NYXJrZXIiLCJnZXRDdXN0b21NYXJrZXJzU2NhbGUiLCJjdXN0b21NYXJrZXJzVXJsIiwiZ2V0RW5jb2RlZENoYW5uZWxWYWx1ZSIsIkNvbnNvbGUiLCJ3YXJuIiwib3JkaW5hbCIsImdldFBvc2l0aW9uIiwic2FtcGxlRGF0YSIsIm51bVJvd3MiLCJwb2ludHMiLCJtYXBJbmRleCIsImxhdEJvdW5kcyIsImxuZ0JvdW5kcyIsImRhdGFVcGRhdGVUcmlnZ2VycyIsInRyaWdnZXJDaGFuZ2VkIiwiX29sZERhdGFVcGRhdGVUcmlnZ2VycyIsIl9hZ2dyZWdhdGlvbiIsImdldFZhbHVlIiwiYXR0cmlidXRlVmFsdWUiLCJBTExfRklFTERfVFlQRVMiLCJ0aW1lc3RhbXAiLCJEYXRlIiwiYWxsRGF0YSIsImdldERhdGEiLCJkYXRhc2V0SWQiLCJnZXRNZXRhIiwidGwiLCJvbGRMYXllckRhdGEiLCJsYXllckRhdGFzZXQiLCJ1cGRhdGVWaXN1YWxDaGFubmVsRmllbGRzIiwiZ2V0UG9zaXRpb25BY2Nlc3NvciIsImdldERhdGFVcGRhdGVUcmlnZ2VycyIsImdldENoYW5nZWRUcmlnZ2VycyIsInVwZGF0ZUxheWVyTWV0YSIsImNhbGN1bGF0ZURhdGFBdHRyaWJ1dGUiLCJkYXRhc2V0Iiwib2xkRmllbGQiLCJuZXdEYXRhU2V0RmllbGQiLCJmZCIsIm5ld0ZpbHRlciIsInRhYmxlIiwiZ2V0RGF0YXNldCIsInNjYWxlVHlwZSIsInVwZGF0ZWREb21haW4iLCJjYWxjdWxhdGVMYXllckRvbWFpbiIsInZhbGlkYXRlRmllbGRUeXBlIiwidmFsaWRhdGVTY2FsZSIsInZpc3VhbENoYW5uZWwiLCJzdXBwb3J0ZWRGaWVsZFR5cGVzIiwiY2hhbm5lbFN1cHBvcnRlZEZpZWxkVHlwZXMiLCJDSEFOTkVMX1NDQUxFX1NVUFBPUlRFRF9GSUVMRFMiLCJzY2FsZU9wdGlvbnMiLCJnZXRTY2FsZU9wdGlvbnMiLCJGSUVMRF9PUFRTIiwidXBkYXRlVHJpZ2dlcnMiLCJkYXRhU2V0RmllbGQiLCJmIiwiZ2V0Q29sdW1uTGF5ZXJEb21haW4iLCJvYmplY3RJbmZvIiwiaXNMYXllckhvdmVyZWQiLCJwaWNrZWQiLCJsYXllciIsIm1hcFN0YXRlIiwiZml4ZWRSYWRpdXMiLCJyYWRpdXNDaGFubmVsIiwidmMiLCJ1bmRlZmluZWQiLCJyYWRpdXMiLCJnZXRab29tRmFjdG9yIiwicmFkaXVzUmFuZ2UiLCJjZWlsIiwibm9uZUxheWVyRGF0YUFmZmVjdGluZ1Byb3BzIiwiaW50ZXJhY3Rpb25Db25maWciLCJicnVzaGluZ1RhcmdldCIsImJydXNoIiwiYXV0b0hpZ2hsaWdodCIsImJydXNoaW5nUmFkaXVzIiwiYnJ1c2hpbmdFbmFibGVkIiwiaWR4IiwiZ3B1RmlsdGVyIiwidmlzaWJsZSIsIm1hc2tQb2x5Z29uIiwibWFza0V4dGVuc2lvblByb3BzIiwiY29vcmRpbmF0ZVN5c3RlbSIsIkNPT1JESU5BVEVfU1lTVEVNIiwiTE5HTEFUIiwicGlja2FibGUiLCJoYXNJbnRlcmFjdGl2aXR5Iiwid3JhcExvbmdpdHVkZSIsInBhcmFtZXRlcnMiLCJkZXB0aFRlc3QiLCJkcmFnUm90YXRlIiwiZW5hYmxlM2QiLCJvcGFjaXR5IiwiZXh0ZW5zaW9ucyIsImZpbHRlclJhbmdlIiwicmVuZGVyT3B0cyIsImdldFBpeGVsT2Zmc2V0Iiwic2hhcmVkUHJvcHMiLCJ0ZXh0TGFiZWxzIiwiZ2V0VGV4dCIsIlRleHRMYXllciIsImNoYXJhY3RlclNldCIsImdldFNpemUiLCJnZXRUZXh0QW5jaG9yIiwiYW5jaG9yIiwiZ2V0QWxpZ25tZW50QmFzZWxpbmUiLCJhbGlnbm1lbnQiLCJnZXRDb2xvciIsImdldEZpbHRlclZhbHVlIiwiZ2V0UmFkaXVzIiwiY3VzdG9tTWFya2Vyc1N0YXR1cyIsImljb25VcmxBY2Nlc3NvciIsIm1hc2siLCJtYXhJY29uU2l6ZSIsImdldE1heE1hcmtlclNpemUiLCJ3YW50ZWRVcmwiLCJ1cmwiLCJ3aWR0aCIsImhlaWdodCIsImtlcGxlclRhYmxlIiwiZm91bmRMYXllcnMiLCJkZWZhdWx0RmllbGRzIiwiYWxsRmllbGRzIiwicmVxdWlyZWRDb2x1bW5zIiwicHJldiIsInJlcXVpcmVkRmllbGRzIiwiZ2V0QWxsUG9zc2libGVDb2x1bW5QYXJpcyIsImFsbEtleXMiLCJwb2ludGVycyIsImNvdW50UGVyS2V5IiwicGFpcnMiLCJpbmNyZW1lbnRQb2ludGVycyIsIm5ld1BhaXIiLCJjdXVyIiwicHRzIiwiY291bnRzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQW9CQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFQTs7QUFDQTs7QUFFQTs7QUFZQTs7QUFDQTs7QUFDQTs7QUFRQTs7QUFFQTs7QUFDQTs7QUFFQTs7QUFDQTs7QUFDQTs7Ozs7Ozs7Ozs7O3dEQTRCVUEsYTs7QUExQlY7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDTyxJQUFNQyxlQUFlLEdBQUcsQ0FBeEIsQyxDQUVQOzs7QUFDQSxJQUFNQyxhQUFhLEdBQ2pCLDBMQURGO0FBR0EsSUFBTUMsZUFBZSxHQUFHLElBQXhCO0FBQ0EsSUFBTUMsYUFBYSxHQUFHLENBQUMsQ0FBRCxFQUFJLENBQUosQ0FBdEI7QUFDQSxJQUFNQyxtQkFBbUIsR0FBRyxJQUFJQywrQkFBSixDQUF3QjtBQUFDQyxFQUFBQSxVQUFVLEVBQUVDO0FBQWIsQ0FBeEIsQ0FBNUI7O0FBRUEsSUFBTUMsbUJBQW1CLEdBQUcsU0FBdEJBLG1CQUFzQixDQUFBQyxFQUFFO0FBQUEsU0FBSSxVQUFBQyxDQUFDO0FBQUEsV0FBSUEsQ0FBSjtB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QVdDLE1BQU0sQ0FBQyxDQUFELENBQU4sR0FBWSxDQUExQyxFQUE2QztBQUMzQztBQUNBLGlCQUFPLEtBQVA7QUFDRDs7QUFFRCxZQUFJRCxHQUFHLENBQUM5VSxLQUFELENBQUgsR0FBYSxDQUFiLEdBQWlCK1UsTUFBTSxDQUFDL1UsS0FBRCxDQUEzQixFQUFvQztBQUNsQzhVLFVBQUFBLEdBQUcsQ0FBQzlVLEtBQUQsQ0FBSCxHQUFhOFUsR0FBRyxDQUFDOVUsS0FBRCxDQUFILEdBQWEsQ0FBMUI7QUFDQSxpQkFBTyxJQUFQO0FBQ0Q7O0FBRUQ4VSxRQUFBQSxHQUFHLENBQUM5VSxLQUFELENBQUgsR0FBYSxDQUFiO0FBQ0EsZUFBTzJVLGlCQUFpQixDQUFDRyxHQUFELEVBQU1DLE1BQU4sRUFBYy9VLEtBQUssR0FBRyxDQUF0QixDQUF4QjtBQUNEOztBQUVELGFBQU8wVSxLQUFQO0FBQ0Q7OztXQUVELGtCQUFnQjVLLENBQWhCLEVBQW1CO0FBQ2pCLGFBQU8sMEJBQVNBLENBQVQsQ0FBUDtBQUNEOzs7OztlQStqQ1kzSixLIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSAyMDIyIFViZXIgVGVjaG5vbG9naWVzLCBJbmMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuLy8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuLy8gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4vLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuLy8gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbi8vIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbi8vIFRIRSBTT0ZUV0FSRS5cblxuaW1wb3J0IHtjb25zb2xlIGFzIENvbnNvbGV9IGZyb20gJ2dsb2JhbC93aW5kb3cnO1xuaW1wb3J0IGtleW1pcnJvciBmcm9tICdrZXltaXJyb3InO1xuaW1wb3J0IHtEYXRhRmlsdGVyRXh0ZW5zaW9ufSBmcm9tICdAZGVjay5nbC9leHRlbnNpb25zJztcbmltcG9ydCB7Q09PUkRJTkFURV9TWVNURU19IGZyb20gJ0BkZWNrLmdsL2NvcmUnO1xuaW1wb3J0IHtUZXh0TGF5ZXJ9IGZyb20gJ0BkZWNrLmdsL2xheWVycyc7XG5cbmltcG9ydCBEZWZhdWx0TGF5ZXJJY29uIGZyb20gJy4vZGVmYXVsdC1sYXllci1pY29uJztcbmltcG9ydCB7ZGlmZlVwZGF0ZVRyaWdnZXJzfSBmcm9tICcuL2xheWVyLXVwZGF0ZSc7XG5cbmltcG9ydCB7XG4gIEFMTF9GSUVMRF9UWVBFUyxcbiAgTk9fVkFMVUVfQ09MT1IsXG4gIFNDQUxFX1RZUEVTLFxuICBDSEFOTkVMX1NDQUxFUyxcbiAgRklFTERfT1BUUyxcbiAgU0NBTEVfRlVOQyxcbiAgQ0hBTk5FTF9TQ0FMRV9TVVBQT1JURURfRklFTERTLFxuICBNQVhfR1BVX0ZJTFRFUlMsXG4gIFVOS05PV05fQ09MT1IsXG4gIFpPT01fTEVWRUxfTElNSVRTXG59IGZyb20gJ2NvbnN0YW50cy9kZWZhdWx0LXNldHRpbmdzJztcbmltcG9ydCB7Q09MT1JfUkFOR0VTfSBmcm9tICdjb25zdGFudHMvY29sb3ItcmFuZ2VzJztcbmltcG9ydCB7RGF0YVZpekNvbG9yc30gZnJvbSAnY29uc3RhbnRzL2N1c3RvbS1jb2xvci1yYW5nZXMnO1xuaW1wb3J0IHtcbiAgTEFZRVJfVklTX0NPTkZJR1MsXG4gIERFRkFVTFRfVEVYVF9MQUJFTCxcbiAgREVGQVVMVF9DT0xPUl9VSSxcbiAgREVGQVVMVF9ISUdITElHSFRfQ09MT1IsXG4gIERFRkFVTFRfTEFZRVJfTEFCRUxcbn0gZnJvbSAnLi9sYXllci1mYWN0b3J5JztcblxuaW1wb3J0IHtnZW5lcmF0ZUhhc2hJZCwgaXNQbGFpbk9iamVjdH0gZnJvbSAndXRpbHMvdXRpbHMnO1xuXG5pbXBvcnQge2dldExhdExuZ0JvdW5kcywgbm90TnVsbG9yVW5kZWZpbmVkfSBmcm9tICd1dGlscy9kYXRhLXV0aWxzJztcbmltcG9ydCB7Z2V0U2FtcGxlRGF0YX0gZnJvbSAndXRpbHMvdGFibGUtdXRpbHMvZGF0YS1jb250YWluZXItdXRpbHMnO1xuXG5pbXBvcnQge2hleFRvUmdiLCBnZXRDb2xvckdyb3VwQnlOYW1lLCByZXZlcnNlQ29sb3JSYW5nZX0gZnJvbSAndXRpbHMvY29sb3ItdXRpbHMnO1xuaW1wb3J0IHtnZXRNYXNrRXh0ZW5zaW9uUHJvcHN9IGZyb20gJ3V0aWxzL2xheWVyLXV0aWxzJztcbmltcG9ydCB7c2NhbGVPcmRpbmFsfSBmcm9tICdkMy1zY2FsZSc7XG5cbi8qKiBAdHlwZWRlZiB7aW1wb3J0KCcuL2luZGV4JykuTGF5ZXJ9IExheWVyQ2xhc3N9ICovXG5cbi8qKlxuICogQXBwcm94LiBudW1iZXIgb2YgcG9pbnRzIHRvIHNhbXBsZSBpbiBhIGxhcmdlIGRhdGEgc2V0XG4gKiBAdHlwZSB7bnVtYmVyfVxuICovXG5leHBvcnQgY29uc3QgTEFZRVJfSURfTEVOR1RIID0gNjtcblxuLy8gTm90ZSwgdGhpcyBpcyBpcyBTVkcgb2Ygc29saWQgY2lyY2xlIGVuY29kZWQgYXMgZGF0YS11cmlcbmNvbnN0IEZBTExCQUNLX0lDT04gPVxuICAnZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmLTg7YmFzZTY0LFBITjJaeUIyYVdWM1FtOTRQU0l3SURBZ01UQXdJREV3TUNJZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWo0TkNpQWdQR05wY21Oc1pTQmplRDBpTlRBaUlHTjVQU0kxTUNJZ2NqMGlOVEFpTHo0TkNqd3ZjM1puUGc9PSc7XG5cbmNvbnN0IE1BWF9TQU1QTEVfU0laRSA9IDUwMDA7XG5jb25zdCBkZWZhdWx0RG9tYWluID0gWzAsIDFdO1xuY29uc3QgZGF0YUZpbHRlckV4dGVuc2lvbiA9IG5ldyBEYXRhRmlsdGVyRXh0ZW5zaW9uKHtmaWx0ZXJTaXplOiBNQVhfR1BVX0ZJTFRFUlN9KTtcblxuY29uc3QgZGVmYXVsdERhdGFBY2Nlc3NvciA9IGRjID0+IGQgPT4gZDtcbmNvbnN0IGRlZmF1bHRHZXRGaWVsZFZhbHVlID0gKGZpZWxkLCBkKSA9PiBmaWVsZC52YWx1ZUFjY2Vzc29yKGQpO1xuY29uc3Qgc2NhbGVJZGVudGl0eSA9IHYgPT4gdjtcblxuZXhwb3J0IGNvbnN0IE9WRVJMQVlfVFlQRSA9IGtleW1pcnJvcih7XG4gIGRlY2tnbDogbnVsbCxcbiAgbWFwYm94Z2w6IG51bGxcbn0pO1xuXG5leHBvcnQgY29uc3QgbGF5ZXJDb2xvcnMgPSBPYmplY3QudmFsdWVzKERhdGFWaXpDb2xvcnMpLm1hcChoZXhUb1JnYik7XG5mdW5jdGlvbiogZ2VuZXJhdGVDb2xvcigpIHtcbiAgbGV0IGluZGV4ID0gMDtcbiAgd2hpbGUgKGluZGV4IDwgbGF5ZXJDb2xvcnMubGVuZ3RoICsgMSkge1xuICAgIGlmIChpbmRleCA9PT0gbGF5ZXJDb2xvcnMubGVuZ3RoKSB7XG4gICAgICBpbmRleCA9IDA7XG4gICAgfVxuICAgIHlpZWxkIGxheWVyQ29sb3JzW2luZGV4KytdO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBjb2xvck1ha2VyID0gZ2VuZXJhdGVDb2xvcigpO1xuXG4vKiogQHR5cGUge0xheWVyQ2xhc3N9ICovXG5jbGFzcyBMYXllciB7XG4gIGNvbnN0cnVjdG9yKHByb3BzID0ge30pIHtcbiAgICB0aGlzLmlkID0gcHJvcHMuaWQgfHwgZ2VuZXJhdGVIYXNoSWQoTEFZRVJfSURfTEVOR1RIKTtcblxuICAgIC8vIG1ldGFcbiAgICB0aGlzLm1ldGEgPSB7fTtcblxuICAgIC8vIHZpc0NvbmZpZ1NldHRpbmdzXG4gICAgdGhpcy52aXNDb25maWdTZXR0aW5ncyA9IHt9O1xuXG4gICAgLy8gaW50ZXJhY3Rpdml0eVNldHRpbmdzXG4gICAgdGhpcy5faW50ZXJhY3Rpdml0eVNldHRpbmdzID0ge307XG5cbiAgICAvLyBAdHMtaWdub3JlXG4gICAgdGhpcy5jb25maWcgPSB0aGlzLmdldERlZmF1bHRMYXllckNvbmZpZyh7XG4gICAgICBjb2x1bW5zOiB0aGlzLmdldExheWVyQ29sdW1ucygpLFxuICAgICAgLi4ucHJvcHNcbiAgICB9KTtcbiAgfVxuXG4gIGdldCBsYXllckljb24oKSB7XG4gICAgcmV0dXJuIERlZmF1bHRMYXllckljb247XG4gIH1cblxuICBnZXQgb3ZlcmxheVR5cGUoKSB7XG4gICAgcmV0dXJuIE9WRVJMQVlfVFlQRS5kZWNrZ2w7XG4gIH1cblxuICBnZXQgdHlwZSgpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGdldCBuYW1lKCkge1xuICAgIHJldHVybiB0aGlzLnR5cGU7XG4gIH1cblxuICBnZXQgaXNBZ2dyZWdhdGVkKCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGdldCByZXF1aXJlZExheWVyQ29sdW1ucygpIHtcbiAgICByZXR1cm4gW107XG4gIH1cblxuICBnZXQgb3B0aW9uYWxDb2x1bW5zKCkge1xuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIGdldCBub25lTGF5ZXJEYXRhQWZmZWN0aW5nUHJvcHMoKSB7XG4gICAgcmV0dXJuIFsnbGFiZWwnLCAnb3BhY2l0eScsICd0aGlja25lc3MnLCAnaXNWaXNpYmxlJywgJ2hpZGRlbiddO1xuICB9XG5cbiAgZ2V0IHZpc3VhbENoYW5uZWxzKCkge1xuICAgIHJldHVybiB7XG4gICAgICBjb2xvcjoge1xuICAgICAgICBwcm9wZXJ0eTogJ2NvbG9yJyxcbiAgICAgICAgZmllbGQ6ICdjb2xvckZpZWxkJyxcbiAgICAgICAgc2NhbGU6ICdjb2xvclNjYWxlJyxcbiAgICAgICAgZG9tYWluOiAnY29sb3JEb21haW4nLFxuICAgICAgICByYW5nZTogJ2NvbG9yUmFuZ2UnLFxuICAgICAgICBrZXk6ICdjb2xvcicsXG4gICAgICAgIGNoYW5uZWxTY2FsZVR5cGU6IENIQU5ORUxfU0NBTEVTLmNvbG9yLFxuICAgICAgICBudWxsVmFsdWU6IE5PX1ZBTFVFX0NPTE9SLFxuICAgICAgICBkZWZhdWx0VmFsdWU6IGNvbmZpZyA9PiBjb25maWcuY29sb3JcbiAgICAgIH0sXG4gICAgICBzaXplOiB7XG4gICAgICAgIHByb3BlcnR5OiAnc2l6ZScsXG4gICAgICAgIGZpZWxkOiAnc2l6ZUZpZWxkJyxcbiAgICAgICAgc2NhbGU6ICdzaXplU2NhbGUnLFxuICAgICAgICBkb21haW46ICdzaXplRG9tYWluJyxcbiAgICAgICAgcmFuZ2U6ICdzaXplUmFuZ2UnLFxuICAgICAgICBrZXk6ICdzaXplJyxcbiAgICAgICAgY2hhbm5lbFNjYWxlVHlwZTogQ0hBTk5FTF9TQ0FMRVMuc2l6ZSxcbiAgICAgICAgbnVsbFZhbHVlOiAwLFxuICAgICAgICBkZWZhdWx0VmFsdWU6IDFcbiAgICAgIH1cbiAgICB9O1xuICB9XG5cbiAgLypcbiAgICogQ29sdW1uIHBhaXJzIG1hcHMgbGF5ZXIgY29sdW1uIHRvIGEgc3BlY2lmaWMgZmllbGQgcGFpcnMsXG4gICAqIEJ5IGRlZmF1bHQsIGl0IGlzIHNldCB0byBudWxsXG4gICAqL1xuICBnZXQgY29sdW1uUGFpcnMoKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICAvKlxuICAgKiBEZWZhdWx0IHBvaW50IGNvbHVtbiBwYWlycywgY2FuIGJlIHVzZWQgZm9yIHBvaW50IGJhc2VkIGxheWVyczogcG9pbnQsIGljb24gZXRjLlxuICAgKi9cbiAgZ2V0IGRlZmF1bHRQb2ludENvbHVtblBhaXJzKCkge1xuICAgIHJldHVybiB7XG4gICAgICBsYXQ6IHtwYWlyOiAnbG5nJywgZmllbGRQYWlyS2V5OiAnbGF0J30sXG4gICAgICBsbmc6IHtwYWlyOiAnbGF0JywgZmllbGRQYWlyS2V5OiAnbG5nJ31cbiAgICB9O1xuICB9XG5cbiAgLypcbiAgICogRGVmYXVsdCBsaW5rIGNvbHVtbiBwYWlycywgY2FuIGJlIHVzZWQgZm9yIGxpbmsgYmFzZWQgbGF5ZXJzOiBhcmMsIGxpbmUgZXRjXG4gICAqL1xuICBnZXQgZGVmYXVsdExpbmtDb2x1bW5QYWlycygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgbGF0MDoge3BhaXI6ICdsbmcwJywgZmllbGRQYWlyS2V5OiAnbGF0J30sXG4gICAgICBsbmcwOiB7cGFpcjogJ2xhdDAnLCBmaWVsZFBhaXJLZXk6ICdsbmcnfSxcbiAgICAgIGxhdDE6IHtwYWlyOiAnbG5nMScsIGZpZWxkUGFpcktleTogJ2xhdCd9LFxuICAgICAgbG5nMToge3BhaXI6ICdsYXQxJywgZmllbGRQYWlyS2V5OiAnbG5nJ31cbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiBhIFJlYWN0IGNvbXBvbmVudCBmb3IgdG8gcmVuZGVyIGxheWVyIGluc3RydWN0aW9ucyBpbiBhIG1vZGFsXG4gICAqIEByZXR1cm5zIHtvYmplY3R9IC0gYW4gb2JqZWN0XG4gICAqIEBleGFtcGxlXG4gICAqICByZXR1cm4ge1xuICAgKiAgICBpZDogJ2ljb25JbmZvJyxcbiAgICogICAgdGVtcGxhdGU6IEljb25JbmZvTW9kYWwsXG4gICAqICAgIG1vZGFsUHJvcHM6IHtcbiAgICogICAgICB0aXRsZTogJ0hvdyB0byBkcmF3IGljb25zJ1xuICAgKiAgIH07XG4gICAqIH1cbiAgICovXG4gIGdldCBsYXllckluZm9Nb2RhbCgpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGdldCBpbnRlcmFjdGl2aXR5U2V0dGluZ3MoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2ludGVyYWN0aXZpdHlTZXR0aW5ncztcbiAgfVxuXG4gIHNldCBpbnRlcmFjdGl2aXR5U2V0dGluZ3MoaW50ZXJhY3Rpdml0eVNldHRpbmdzKSB7XG4gICAgdGhpcy5faW50ZXJhY3Rpdml0eVNldHRpbmdzID0gaW50ZXJhY3Rpdml0eVNldHRpbmdzO1xuICB9XG5cbiAgZ2V0IGhhc1Rvb2x0aXAoKSB7XG4gICAgcmV0dXJuIEJvb2xlYW4oXG4gICAgICB0aGlzLmludGVyYWN0aXZpdHlTZXR0aW5ncz8uaG92ZXI/LmZpZWxkcy5sZW5ndGggfHxcbiAgICAgICAgdGhpcy5pbnRlcmFjdGl2aXR5U2V0dGluZ3M/LmNsaWNrPy5maWVsZHMubGVuZ3RoXG4gICAgKTtcbiAgfVxuXG4gIGdldCBoYXNJbnRlcmFjdGl2aXR5KCkge1xuICAgIHJldHVybiBCb29sZWFuKHRoaXMuaGFzVG9vbHRpcCAmJiB0aGlzLmludGVyYWN0aXZpdHlTZXR0aW5ncz8uZW5hYmxlZCk7XG4gIH1cblxuICAvKlxuICAgKiBHaXZlbiBhIGRhdGFzZXQsIGF1dG9tYXRpY2FsbHkgZmluZCBwcm9wcyB0byBjcmVhdGUgbGF5ZXIgYmFzZWQgb24gaXRcbiAgICogYW5kIHJldHVybiB0aGUgcHJvcHMgYW5kIHByZXZpb3VzIGZvdW5kIGxheWVycy5cbiAgICogQnkgZGVmYXVsdCwgbm8gbGF5ZXJzIHdpbGwgYmUgZm91bmRcbiAgICovXG4gIHN0YXRpYyBmaW5kRGVmYXVsdExheWVyUHJvcHMoZGF0YXNldCwgZm91bmRMYXllcnMpIHtcbiAgICByZXR1cm4ge3Byb3BzOiBbXSwgZm91bmRMYXllcnN9O1xuICB9XG5cbiAgLyoqXG4gICAqIEdpdmVuIGEgYXJyYXkgb2YgcHJlc2V0IHJlcXVpcmVkIGNvbHVtbiBuYW1lc1xuICAgKiBmb3VuZCBmaWVsZCB0aGF0IGhhcyB0aGUgc2FtZSBuYW1lIHRvIHNldCBhcyBsYXllciBjb2x1bW5cbiAgICpcbiAgICogQHBhcmFtIHtvYmplY3R9IGRlZmF1bHRGaWVsZHNcbiAgICogQHBhcmFtIHtvYmplY3RbXX0gYWxsRmllbGRzXG4gICAqIEByZXR1cm5zIHtvYmplY3RbXSB8IG51bGx9IGFsbCBwb3NzaWJsZSByZXF1aXJlZCBsYXllciBjb2x1bW4gcGFpcnNcbiAgICovXG4gIHN0YXRpYyBmaW5kRGVmYXVsdENvbHVtbkZpZWxkKGRlZmF1bHRGaWVsZHMsIGFsbEZpZWxkcykge1xuICAgIC8vIGZpbmQgYWxsIG1hdGNoZWQgZmllbGRzIGZvciBlYWNoIHJlcXVpcmVkIGNvbFxuICAgIGNvbnN0IHJlcXVpcmVkQ29sdW1ucyA9IE9iamVjdC5rZXlzKGRlZmF1bHRGaWVsZHMpLnJlZHVjZSgocHJldiwga2V5KSA9PiB7XG4gICAgICBjb25zdCByZXF1aXJlZEZpZWxkcyA9IGFsbEZpZWxkcy5maWx0ZXIoXG4gICAgICAgIGYgPT4gZi5uYW1lID09PSBkZWZhdWx0RmllbGRzW2tleV0gfHwgZGVmYXVsdEZpZWxkc1trZXldLmluY2x1ZGVzKGYubmFtZSlcbiAgICAgICk7XG5cbiAgICAgIHByZXZba2V5XSA9IHJlcXVpcmVkRmllbGRzLmxlbmd0aFxuICAgICAgICA/IHJlcXVpcmVkRmllbGRzLm1hcChmID0+ICh7XG4gICAgICAgICAgICB2YWx1ZTogZi5uYW1lLFxuICAgICAgICAgICAgZmllbGRJZHg6IGYuZmllbGRJZHhcbiAgICAgICAgICB9KSlcbiAgICAgICAgOiBudWxsO1xuICAgICAgcmV0dXJuIHByZXY7XG4gICAgfSwge30pO1xuXG4gICAgaWYgKCFPYmplY3QudmFsdWVzKHJlcXVpcmVkQ29sdW1ucykuZXZlcnkoQm9vbGVhbikpIHtcbiAgICAgIC8vIGlmIGFueSBmaWVsZCBtaXNzaW5nLCByZXR1cm4gbnVsbFxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuZ2V0QWxsUG9zc2libGVDb2x1bW5QYXJpcyhyZXF1aXJlZENvbHVtbnMpO1xuICB9XG5cbiAgc3RhdGljIGdldEFsbFBvc3NpYmxlQ29sdW1uUGFyaXMocmVxdWlyZWRDb2x1bW5zKSB7XG4gICAgLy8gZm9yIG11bHRpcGxlIG1hdGNoZWQgZmllbGQgZm9yIG9uZSByZXF1aXJlZCBjb2x1bW4sIHJldHVybiBtdWx0aXBsZVxuICAgIC8vIGNvbWJpbmF0aW9ucywgZS4gZy4gaWYgY29sdW1uIGEgaGFzIDIgbWF0Y2hlZCwgY29sdW1uIGIgaGFzIDMgbWF0Y2hlZFxuICAgIC8vIDYgcG9zc2libGUgY29sdW1uIHBhaXJzIHdpbGwgYmUgcmV0dXJuZWRcbiAgICBjb25zdCBhbGxLZXlzID0gT2JqZWN0LmtleXMocmVxdWlyZWRDb2x1bW5zKTtcbiAgICBjb25zdCBwb2ludGVycyA9IGFsbEtleXMubWFwKChrLCBpKSA9PiAoKGkgPT09IGFsbEtleXMubGVuZ3RoIC0gMSA/IC0xIDogMCkpKTtcbiAgICBjb25zdCBjb3VudFBlcktleSA9IGFsbEtleXMubWFwKGsgPT4gcmVxdWlyZWRDb2x1bW5zW2tdLmxlbmd0aCk7XG4gICAgY29uc3QgcGFpcnMgPSBbXTtcblxuICAgIC8qIGVzbGludC1kaXNhYmxlIG5vLWxvb3AtZnVuYyAqL1xuICAgIHdoaWxlIChpbmNyZW1lbnRQb2ludGVycyhwb2ludGVycywgY291bnRQZXJLZXksIHBvaW50ZXJzLmxlbmd0aCAtIDEpKSB7XG4gICAgICBjb25zdCBuZXdQYWlyID0gcG9pbnRlcnMucmVkdWNlKChwcmV2LCBjdXVyLCBpKSA9PiB7XG4gICAgICAgIHByZXZbYWxsS2V5c1tpXV0gPSByZXF1aXJlZENvbHVtbnNbYWxsS2V5c1tpXV1bY3V1cl07XG4gICAgICAgIHJldHVybiBwcmV2O1xuICAgICAgfSwge30pO1xuXG4gICAgICBwYWlycy5wdXNoKG5ld1BhaXIpO1xuICAgIH1cbiAgICAvKiBlc2xpbnQtZW5hYmxlIG5vLWxvb3AtZnVuYyAqL1xuXG4gICAgLy8gcmVjdXJzaXZlbHkgaW5jcmVtZW50IHBvaW50ZXJzXG4gICAgZnVuY3Rpb24gaW5jcmVtZW50UG9pbnRlcnMocHRzLCBjb3VudHMsIGluZGV4KSB7XG4gICAgICBpZiAoaW5kZXggPT09IDAgJiYgcHRzWzBdID09PSBjb3VudHNbMF0gLSAxKSB7XG4gICAgICAgIC8vIG5vdGhpbmcgdG8gaW5jcmVtZW50XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgaWYgKHB0c1tpbmRleF0gKyAxIDwgY291bnRzW2luZGV4XSkge1xuICAgICAgICBwdHNbaW5kZXhdID0gcHRzW2luZGV4XSArIDE7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuXG4gICAgICBwdHNbaW5kZXhdID0gMDtcbiAgICAgIHJldHVybiBpbmNyZW1lbnRQb2ludGVycyhwdHMsIGNvdW50cywgaW5kZXggLSAxKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcGFpcnM7XG4gIH1cblxuICBzdGF0aWMgaGV4VG9SZ2IoYykge1xuICAgIHJldHVybiBoZXhUb1JnYihjKTtcbiAgfVxuXG4gIGdldERlZmF1bHRMYXllckNvbmZpZyhwcm9wcyA9IHt9KSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGRhdGFJZDogcHJvcHMuZGF0YUlkIHx8IG51bGwsXG4gICAgICB2aXNpYmlsaXR5Qnlab29tOiB7XG4gICAgICAgIG1pbjogcHJvcHMudmlzaWJpbGl0eUJ5Wm9vbT8ubWluIHx8IFpPT01fTEVWRUxfTElNSVRTLm1pbixcbiAgICAgICAgbWF4OiBwcm9wcy52aXNpYmlsaXR5Qnlab29tPy5tYXggfHwgWk9PTV9MRVZFTF9MSU1JVFMubWF4XG4gICAgICB9LFxuICAgICAgbGFiZWw6IHByb3BzLmxhYmVsIHx8IERFRkFVTFRfTEFZRVJfTEFCRUwsXG4gICAgICBjb2xvcjogcHJvcHMuY29sb3IgfHwgY29sb3JNYWtlci5uZXh0KCkudmFsdWUsXG4gICAgICBjb2x1bW5zOiBwcm9wcy5jb2x1bW5zIHx8IG51bGwsXG4gICAgICBpc1Zpc2libGU6IHByb3BzLmlzVmlzaWJsZSB8fCBmYWxzZSxcbiAgICAgIGlzQ29uZmlnQWN0aXZlOiBwcm9wcy5pc0NvbmZpZ0FjdGl2ZSB8fCBmYWxzZSxcbiAgICAgIGhpZ2hsaWdodENvbG9yOiBwcm9wcy5oaWdobGlnaHRDb2xvciB8fCBERUZBVUxUX0hJR0hMSUdIVF9DT0xPUixcbiAgICAgIGhpZGRlbjogcHJvcHMuaGlkZGVuIHx8IGZhbHNlLFxuXG4gICAgICAvLyBUT0RPOiByZWZhY3RvciB0aGlzIGludG8gc2VwYXJhdGUgdmlzdWFsIENoYW5uZWwgY29uZmlnXG4gICAgICAvLyBjb2xvciBieSBmaWVsZCwgZG9tYWluIGlzIHNldCBieSBmaWx0ZXJzLCBmaWVsZCwgc2NhbGUgdHlwZVxuICAgICAgY29sb3JGaWVsZDogbnVsbCxcbiAgICAgIGNvbG9yRG9tYWluOiBbMCwgMV0sXG4gICAgICBjb2xvclNjYWxlOiBTQ0FMRV9UWVBFUy5xdWFudGlsZSxcblxuICAgICAgLy8gY29sb3IgYnkgc2l6ZSwgZG9tYWluIGlzIHNldCBieSBmaWx0ZXJzLCBmaWVsZCwgc2NhbGUgdHlwZVxuICAgICAgc2l6ZURvbWFpbjogWzAsIDFdLFxuICAgICAgc2l6ZVNjYWxlOiBTQ0FMRV9UWVBFUy5saW5lYXIsXG4gICAgICBzaXplRmllbGQ6IG51bGwsXG4gICAgICByYWRpdXNGaWVsZDogbnVsbCxcblxuICAgICAgdmlzQ29uZmlnOiB7fSxcblxuICAgICAgdGV4dExhYmVsOiBbREVGQVVMVF9URVhUX0xBQkVMXSxcblxuICAgICAgY29sb3JVSToge1xuICAgICAgICBjb2xvcjogREVGQVVMVF9DT0xPUl9VSSxcbiAgICAgICAgY29sb3JSYW5nZTogREVGQVVMVF9DT0xPUl9VSVxuICAgICAgfSxcbiAgICAgIGFuaW1hdGlvbjoge2VuYWJsZWQ6IGZhbHNlfVxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBkZXNjcmlwdGlvbiBvZiBhIHZpc3VhbENoYW5uZWwgY29uZmlnXG4gICAqIEBwYXJhbSBrZXlcbiAgICogQHJldHVybnMge3tsYWJlbDogc3RyaW5nLCBtZWFzdXJlOiAoc3RyaW5nfHN0cmluZyl9fVxuICAgKi9cbiAgZ2V0VmlzdWFsQ2hhbm5lbERlc2NyaXB0aW9uKGtleSkge1xuICAgIC8vIGUuZy4gbGFiZWw6IENvbG9yLCBtZWFzdXJlOiBWZWhpY2xlIFR5cGVcbiAgICByZXR1cm4ge1xuICAgICAgbGFiZWw6IHRoaXMudmlzQ29uZmlnU2V0dGluZ3NbdGhpcy52aXN1YWxDaGFubmVsc1trZXldLnJhbmdlXS5sYWJlbCxcbiAgICAgIG1lYXN1cmU6IHRoaXMuY29uZmlnW3RoaXMudmlzdWFsQ2hhbm5lbHNba2V5XS5maWVsZF1cbiAgICAgICAgPyAodGhpcy5jb25maWdbdGhpcy52aXN1YWxDaGFubmVsc1trZXldLmZpZWxkXS5kaXNwbGF5TmFtZSB8fFxuICAgICAgICAgIHRoaXMuY29uZmlnW3RoaXMudmlzdWFsQ2hhbm5lbHNba2V5XS5maWVsZF0ubmFtZSlcbiAgICAgICAgOiB0aGlzLnZpc3VhbENoYW5uZWxzW2tleV0uZGVmYXVsdE1lYXN1cmVcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEFzc2lnbiBhIGZpZWxkIHRvIGxheWVyIGNvbHVtbiwgcmV0dXJuIGNvbHVtbiBjb25maWdcbiAgICogQHBhcmFtIGtleSAtIENvbHVtbiBLZXlcbiAgICogQHBhcmFtIGZpZWxkIC0gU2VsZWN0ZWQgZmllbGRcbiAgICogQHJldHVybnMge3t9fSAtIENvbHVtbiBjb25maWdcbiAgICovXG4gIGFzc2lnbkNvbHVtbihrZXksIGZpZWxkKSB7XG4gICAgLy8gZmllbGQgdmFsdWUgY291bGQgYmUgbnVsbCBmb3Igb3B0aW9uYWwgY29sdW1uc1xuICAgIGNvbnN0IHVwZGF0ZSA9IGZpZWxkXG4gICAgICA/IHtcbiAgICAgICAgICB2YWx1ZTogZmllbGQubmFtZSxcbiAgICAgICAgICBmaWVsZElkeDogZmllbGQuZmllbGRJZHhcbiAgICAgICAgfVxuICAgICAgOiB7dmFsdWU6IG51bGwsIGZpZWxkSWR4OiAtMX07XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4udGhpcy5jb25maWcuY29sdW1ucyxcbiAgICAgIFtrZXldOiB7XG4gICAgICAgIC4uLnRoaXMuY29uZmlnLmNvbHVtbnNba2V5XSxcbiAgICAgICAgLi4udXBkYXRlXG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBc3NpZ24gYSBmaWVsZCBwYWlyIHRvIGNvbHVtbiBjb25maWcsIHJldHVybiBjb2x1bW4gY29uZmlnXG4gICAqIEBwYXJhbSBrZXkgLSBDb2x1bW4gS2V5XG4gICAqIEBwYXJhbSBwYWlyIC0gZmllbGQgUGFpclxuICAgKiBAcmV0dXJucyB7b2JqZWN0fSAtIENvbHVtbiBjb25maWdcbiAgICovXG4gIGFzc2lnbkNvbHVtblBhaXJzKGtleSwgcGFpcikge1xuICAgIGlmICghdGhpcy5jb2x1bW5QYWlycyB8fCAhdGhpcy5jb2x1bW5QYWlycz8uW2tleV0pIHtcbiAgICAgIC8vIHNob3VsZCBub3QgZW5kIGluIHRoaXMgc3RhdGVcbiAgICAgIHJldHVybiB0aGlzLmNvbmZpZy5jb2x1bW5zO1xuICAgIH1cblxuICAgIGNvbnN0IHtwYWlyOiBwYXJ0bmVyS2V5LCBmaWVsZFBhaXJLZXl9ID0gdGhpcy5jb2x1bW5QYWlycz8uW2tleV07XG4gICAgY29uc3Qge2ZpZWxkUGFpcktleTogcGFydG5lckZpZWxkUGFpcktleX0gPSB0aGlzLmNvbHVtblBhaXJzPy5bcGFydG5lcktleV07XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4udGhpcy5jb25maWcuY29sdW1ucyxcbiAgICAgIFtrZXldOiBwYWlyW2ZpZWxkUGFpcktleV0sXG4gICAgICBbcGFydG5lcktleV06IHBhaXJbcGFydG5lckZpZWxkUGFpcktleV1cbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGN1bGF0ZSBhIHJhZGl1cyB6b29tIG11bHRpcGxpZXIgdG8gcmVuZGVyIHBvaW50cywgc28gdGhleSBhcmUgdmlzaWJsZSBpbiBhbGwgem9vbSBsZXZlbFxuICAgKiBAcGFyYW0ge29iamVjdH0gbWFwU3RhdGVcbiAgICogQHBhcmFtIHtudW1iZXJ9IG1hcFN0YXRlLnpvb20gLSBhY3R1YWwgem9vbVxuICAgKiBAcGFyYW0ge251bWJlciB8IHZvaWR9IG1hcFN0YXRlLnpvb21PZmZzZXQgLSB6b29tT2Zmc2V0IHdoZW4gcmVuZGVyIGluIHRoZSBwbG90IGNvbnRhaW5lciBmb3IgZXhwb3J0IGltYWdlXG4gICAqIEByZXR1cm5zIHtudW1iZXJ9XG4gICAqL1xuICBnZXRab29tRmFjdG9yKHt6b29tLCB6b29tT2Zmc2V0ID0gMH0pIHtcbiAgICByZXR1cm4gTWF0aC5wb3coMiwgTWF0aC5tYXgoMTQgLSB6b29tICsgem9vbU9mZnNldCwgMCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGN1bGF0ZSBhIGVsZXZhdGlvbiB6b29tIG11bHRpcGxpZXIgdG8gcmVuZGVyIHBvaW50cywgc28gdGhleSBhcmUgdmlzaWJsZSBpbiBhbGwgem9vbSBsZXZlbFxuICAgKiBAcGFyYW0ge29iamVjdH0gbWFwU3RhdGVcbiAgICogQHBhcmFtIHtudW1iZXJ9IG1hcFN0YXRlLnpvb20gLSBhY3R1YWwgem9vbVxuICAgKiBAcGFyYW0ge251bWJlciB8IHZvaWR9IG1hcFN0YXRlLnpvb21PZmZzZXQgLSB6b29tT2Zmc2V0IHdoZW4gcmVuZGVyIGluIHRoZSBwbG90IGNvbnRhaW5lciBmb3IgZXhwb3J0IGltYWdlXG4gICAqIEByZXR1cm5zIHtudW1iZXJ9XG4gICAqL1xuICBnZXRFbGV2YXRpb25ab29tRmFjdG9yKHt6b29tLCB6b29tT2Zmc2V0ID0gMH0pIHtcbiAgICByZXR1cm4gdGhpcy5jb25maWcudmlzQ29uZmlnLmVuYWJsZUVsZXZhdGlvblpvb21GYWN0b3JcbiAgICAgID8gTWF0aC5wb3coMiwgTWF0aC5tYXgoOCAtIHpvb20gKyB6b29tT2Zmc2V0LCAwKSlcbiAgICAgIDogMTtcbiAgfVxuXG4gIGZvcm1hdExheWVyRGF0YShkYXRhc2V0cywgZmlsdGVyZWRJbmRleCkge1xuICAgIHJldHVybiB7fTtcbiAgfVxuXG4gIHJlbmRlckxheWVyKCkge1xuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIGdldEhvdmVyRGF0YShvYmplY3QsIGRhdGFDb250YWluZXIpIHtcbiAgICBpZiAoIW9iamVjdCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgLy8gQnkgZGVmYXVsdCwgZWFjaCBlbnRyeSBvZiBsYXllckRhdGEgc2hvdWxkIGhhdmUgYW4gaW5kZXggb2YgYSByb3cgaW4gdGhlIG9yaWdpbmFsIGRhdGEgY29udGFpbmVyLlxuICAgIC8vIEVhY2ggbGF5ZXIgY2FuIGltcGxlbWVudCBpdHMgb3duIGdldEhvdmVyRGF0YSBtZXRob2RcbiAgICByZXR1cm4gZGF0YUNvbnRhaW5lci5yb3cob2JqZWN0LmluZGV4KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGVuIGNoYW5nZSBsYXllciB0eXBlLCB0cnkgdG8gY29weSBvdmVyIGxheWVyIGNvbmZpZ3MgYXMgbXVjaCBhcyBwb3NzaWJsZVxuICAgKiBAcGFyYW0gY29uZmlnVG9Db3B5IC0gY29uZmlnIHRvIGNvcHkgb3ZlclxuICAgKiBAcGFyYW0gdmlzQ29uZmlnU2V0dGluZ3MgLSB2aXNDb25maWcgc2V0dGluZ3Mgb2YgY29uZmlnIHRvIGNvcHlcbiAgICovXG4gIGFzc2lnbkNvbmZpZ1RvTGF5ZXIoY29uZmlnVG9Db3B5LCB2aXNDb25maWdTZXR0aW5ncykge1xuICAgIC8vIGRvbid0IGRlZXAgbWVyZ2UgdmlzdWFsQ2hhbm5lbCBmaWVsZFxuICAgIC8vIGRvbid0IGRlZXAgbWVyZ2UgY29sb3IgcmFuZ2UsIHJldmVyc2VkOiBpcyBub3QgYSBrZXkgYnkgZGVmYXVsdFxuICAgIGNvbnN0IHNoYWxsb3dDb3B5ID0gWydjb2xvclJhbmdlJywgJ3N0cm9rZUNvbG9yUmFuZ2UnXS5jb25jYXQoXG4gICAgICBPYmplY3QudmFsdWVzKHRoaXMudmlzdWFsQ2hhbm5lbHMpLm1hcCh2ID0+IHYuZmllbGQpXG4gICAgKTtcblxuICAgIC8vIGRvbid0IGNvcHkgb3ZlciBkb21haW4gYW5kIGFuaW1hdGlvblxuICAgIGNvbnN0IG5vdFRvQ29weSA9IFsnYW5pbWF0aW9uJ10uY29uY2F0KE9iamVjdC52YWx1ZXModGhpcy52aXN1YWxDaGFubmVscykubWFwKHYgPT4gdi5kb21haW4pKTtcbiAgICAvLyBpZiByYW5nZSBpcyBmb3IgdGhlIHNhbWUgcHJvcGVydHkgZ3JvdXAgY29weSBpdCwgb3RoZXJ3aXNlLCBub3QgdG8gY29weVxuICAgIE9iamVjdC52YWx1ZXModGhpcy52aXN1YWxDaGFubmVscykuZm9yRWFjaCh2ID0+IHtcbiAgICAgIGlmIChcbiAgICAgICAgY29uZmlnVG9Db3B5LnZpc0NvbmZpZ1t2LnJhbmdlXSAmJlxuICAgICAgICB0aGlzLnZpc0NvbmZpZ1NldHRpbmdzW3YucmFuZ2VdICYmXG4gICAgICAgIHZpc0NvbmZpZ1NldHRpbmdzW3YucmFuZ2VdLmdyb3VwICE9PSB0aGlzLnZpc0NvbmZpZ1NldHRpbmdzW3YucmFuZ2VdLmdyb3VwXG4gICAgICApIHtcbiAgICAgICAgbm90VG9Db3B5LnB1c2godi5yYW5nZSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICAvLyBkb24ndCBjb3B5IG92ZXIgdmlzdWFsQ2hhbm5lbCByYW5nZVxuICAgIGNvbnN0IGN1cnJlbnRDb25maWcgPSB0aGlzLmNvbmZpZztcbiAgICBjb25zdCBjb3BpZWQgPSB0aGlzLmNvcHlMYXllckNvbmZpZyhjdXJyZW50Q29uZmlnLCBjb25maWdUb0NvcHksIHtcbiAgICAgIHNoYWxsb3dDb3B5LFxuICAgICAgbm90VG9Db3B5XG4gICAgfSk7XG4gICAgdGhpcy51cGRhdGVMYXllckNvbmZpZyhjb3BpZWQpO1xuICAgIC8vIHZhbGlkYXRlIHZpc3VhbENoYW5uZWwgZmllbGQgdHlwZSBhbmQgc2NhbGUgdHlwZXNcbiAgICBPYmplY3Qua2V5cyh0aGlzLnZpc3VhbENoYW5uZWxzKS5mb3JFYWNoKGNoYW5uZWwgPT4ge1xuICAgICAgdGhpcy52YWxpZGF0ZVZpc3VhbENoYW5uZWwoY2hhbm5lbCk7XG4gICAgfSk7XG4gIH1cblxuICAvKlxuICAgKiBSZWN1cnNpdmVseSBjb3B5IGNvbmZpZyBvdmVyIHRvIGFuIGVtcHR5IGxheWVyXG4gICAqIHdoZW4gcmVjZWl2ZWQgc2F2ZWQgY29uZmlnLCBvciBjb3B5IGNvbmZpZyBvdmVyIGZyb20gYSBkaWZmZXJlbnQgbGF5ZXIgdHlwZVxuICAgKiBtYWtlIHN1cmUgdG8gb25seSBjb3B5IG92ZXIgdmFsdWUgdG8gZXhpc3Rpbmcga2V5c1xuICAgKiBAcGFyYW0ge29iamVjdH0gY3VycmVudENvbmZpZyAtIGV4aXN0aW5nIGNvbmZpZyB0byBiZSBvdmVycmlkZVxuICAgKiBAcGFyYW0ge29iamVjdH0gY29uZmlnVG9Db3B5IC0gbmV3IENvbmZpZyB0byBjb3B5IG92ZXJcbiAgICogQHBhcmFtIHtzdHJpbmdbXX0gc2hhbGxvd0NvcHkgLSBhcnJheSBvZiBwcm9wZXJ0aWVzIHRvIG5vdCB0byBiZSBkZWVwIGNvcGllZFxuICAgKiBAcGFyYW0ge3N0cmluZ1tdfSBub3RUb0NvcHkgLSBhcnJheSBvZiBwcm9wZXJ0aWVzIG5vdCB0byBjb3B5XG4gICAqIEByZXR1cm5zIHtvYmplY3R9IC0gY29waWVkIGNvbmZpZ1xuICAgKi9cbiAgY29weUxheWVyQ29uZmlnKGN1cnJlbnRDb25maWcsIGNvbmZpZ1RvQ29weSwge3NoYWxsb3dDb3B5ID0gW10sIG5vdFRvQ29weSA9IFtdfSA9IHt9KSB7XG4gICAgY29uc3QgY29waWVkID0ge307XG4gICAgT2JqZWN0LmtleXMoY3VycmVudENvbmZpZykuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgaWYgKFxuICAgICAgICBpc1BsYWluT2JqZWN0KGN1cnJlbnRDb25maWdba2V5XSkgJiZcbiAgICAgICAgaXNQbGFpbk9iamVjdChjb25maWdUb0NvcHlba2V5XSkgJiZcbiAgICAgICAgIXNoYWxsb3dDb3B5LmluY2x1ZGVzKGtleSkgJiZcbiAgICAgICAgIW5vdFRvQ29weS5pbmNsdWRlcyhrZXkpXG4gICAgICApIHtcbiAgICAgICAgLy8gcmVjdXJzaXZlbHkgYXNzaWduIG9iamVjdCB2YWx1ZVxuICAgICAgICBjb3BpZWRba2V5XSA9IHRoaXMuY29weUxheWVyQ29uZmlnKGN1cnJlbnRDb25maWdba2V5XSwgY29uZmlnVG9Db3B5W2tleV0sIHtcbiAgICAgICAgICBzaGFsbG93Q29weSxcbiAgICAgICAgICBub3RUb0NvcHlcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2UgaWYgKG5vdE51bGxvclVuZGVmaW5lZChjb25maWdUb0NvcHlba2V5XSkgJiYgIW5vdFRvQ29weS5pbmNsdWRlcyhrZXkpKSB7XG4gICAgICAgIC8vIGNvcHlcbiAgICAgICAgY29waWVkW2tleV0gPSBjb25maWdUb0NvcHlba2V5XTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIGtlZXAgZXhpc3RpbmdcbiAgICAgICAgY29waWVkW2tleV0gPSBjdXJyZW50Q29uZmlnW2tleV07XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gY29waWVkO1xuICB9XG5cbiAgcmVnaXN0ZXJWaXNDb25maWcobGF5ZXJWaXNDb25maWdzKSB7XG4gICAgT2JqZWN0LmtleXMobGF5ZXJWaXNDb25maWdzKS5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgaWYgKHR5cGVvZiBpdGVtID09PSAnc3RyaW5nJyAmJiBMQVlFUl9WSVNfQ09ORklHU1tsYXllclZpc0NvbmZpZ3NbaXRlbV1dKSB7XG4gICAgICAgIC8vIGlmIGFzc2lnbmVkIG9uZSBvZiBkZWZhdWx0IExBWUVSX0NPTkZJR1NcbiAgICAgICAgdGhpcy5jb25maWcudmlzQ29uZmlnW2l0ZW1dID0gTEFZRVJfVklTX0NPTkZJR1NbbGF5ZXJWaXNDb25maWdzW2l0ZW1dXS5kZWZhdWx0VmFsdWU7XG4gICAgICAgIHRoaXMudmlzQ29uZmlnU2V0dGluZ3NbaXRlbV0gPSBMQVlFUl9WSVNfQ09ORklHU1tsYXllclZpc0NvbmZpZ3NbaXRlbV1dO1xuICAgICAgfSBlbHNlIGlmIChbJ3R5cGUnLCAnZGVmYXVsdFZhbHVlJ10uZXZlcnkocCA9PiBsYXllclZpc0NvbmZpZ3NbaXRlbV0uaGFzT3duUHJvcGVydHkocCkpKSB7XG4gICAgICAgIC8vIGlmIHByb3ZpZGVkIGN1c3RvbWl6ZWQgdmlzQ29uZmlnLCBhbmQgaGFzIHR5cGUgJiYgZGVmYXVsdFZhbHVlXG4gICAgICAgIC8vIFRPRE86IGZ1cnRoZXIgY2hlY2sgaWYgY3VzdG9taXplZCB2aXNDb25maWcgaXMgdmFsaWRcbiAgICAgICAgdGhpcy5jb25maWcudmlzQ29uZmlnW2l0ZW1dID0gbGF5ZXJWaXNDb25maWdzW2l0ZW1dLmRlZmF1bHRWYWx1ZTtcbiAgICAgICAgdGhpcy52aXNDb25maWdTZXR0aW5nc1tpdGVtXSA9IGxheWVyVmlzQ29uZmlnc1tpdGVtXTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGdldExheWVyQ29sdW1ucygpIHtcbiAgICBjb25zdCBjb2x1bW5WYWxpZGF0b3JzID0gdGhpcy5jb2x1bW5WYWxpZGF0b3JzIHx8IHt9O1xuICAgIGNvbnN0IHJlcXVpcmVkID0gdGhpcy5yZXF1aXJlZExheWVyQ29sdW1ucy5yZWR1Y2UoXG4gICAgICAoYWNjdSwga2V5KSA9PiAoe1xuICAgICAgICAuLi5hY2N1LFxuICAgICAgICBba2V5XTogY29sdW1uVmFsaWRhdG9yc1trZXldXG4gICAgICAgICAgPyB7dmFsdWU6IG51bGwsIGZpZWxkSWR4OiAtMSwgdmFsaWRhdG9yOiBjb2x1bW5WYWxpZGF0b3JzW2tleV19XG4gICAgICAgICAgOiB7dmFsdWU6IG51bGwsIGZpZWxkSWR4OiAtMX1cbiAgICAgIH0pLFxuICAgICAge31cbiAgICApO1xuICAgIGNvbnN0IG9wdGlvbmFsID0gdGhpcy5vcHRpb25hbENvbHVtbnMucmVkdWNlKFxuICAgICAgKGFjY3UsIGtleSkgPT4gKHtcbiAgICAgICAgLi4uYWNjdSxcbiAgICAgICAgW2tleV06IHt2YWx1ZTogbnVsbCwgZmllbGRJZHg6IC0xLCBvcHRpb25hbDogdHJ1ZX1cbiAgICAgIH0pLFxuICAgICAge31cbiAgICApO1xuXG4gICAgcmV0dXJuIHsuLi5yZXF1aXJlZCwgLi4ub3B0aW9uYWx9O1xuICB9XG5cbiAgdXBkYXRlTGF5ZXJDb25maWcobmV3Q29uZmlnKSB7XG4gICAgdGhpcy5jb25maWcgPSB7Li4udGhpcy5jb25maWcsIC4uLm5ld0NvbmZpZ307XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICB1cGRhdGVMYXllclZpc0NvbmZpZyhuZXdWaXNDb25maWcpIHtcbiAgICB0aGlzLmNvbmZpZy52aXNDb25maWcgPSB7Li4udGhpcy5jb25maWcudmlzQ29uZmlnLCAuLi5uZXdWaXNDb25maWd9O1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgdXBkYXRlTGF5ZXJDb2xvclVJKHByb3AsIG5ld0NvbmZpZykge1xuICAgIGNvbnN0IHtjb2xvclVJOiBwcmV2aW91cywgdmlzQ29uZmlnfSA9IHRoaXMuY29uZmlnO1xuXG4gICAgaWYgKCFpc1BsYWluT2JqZWN0KG5ld0NvbmZpZykgfHwgdHlwZW9mIHByb3AgIT09ICdzdHJpbmcnKSB7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBjb25zdCBjb2xvclVJUHJvcCA9IE9iamVjdC5lbnRyaWVzKG5ld0NvbmZpZykucmVkdWNlKChhY2N1LCBba2V5LCB2YWx1ZV0pID0+IHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLmFjY3UsXG4gICAgICAgIFtrZXldOiBpc1BsYWluT2JqZWN0KGFjY3Vba2V5XSkgJiYgaXNQbGFpbk9iamVjdCh2YWx1ZSkgPyB7Li4uYWNjdVtrZXldLCAuLi52YWx1ZX0gOiB2YWx1ZVxuICAgICAgfTtcbiAgICB9LCBwcmV2aW91c1twcm9wXSB8fCBERUZBVUxUX0NPTE9SX1VJKTtcblxuICAgIGNvbnN0IGNvbG9yVUkgPSB7XG4gICAgICAuLi5wcmV2aW91cyxcbiAgICAgIFtwcm9wXTogY29sb3JVSVByb3BcbiAgICB9O1xuXG4gICAgdGhpcy51cGRhdGVMYXllckNvbmZpZyh7Y29sb3JVSX0pO1xuICAgIC8vIGlmIGNvbG9yVUlbcHJvcF0gaXMgY29sb3JSYW5nZVxuICAgIGNvbnN0IGlzQ29sb3JSYW5nZSA9IHZpc0NvbmZpZ1twcm9wXSAmJiB2aXNDb25maWdbcHJvcF0uY29sb3JzO1xuXG4gICAgaWYgKGlzQ29sb3JSYW5nZSkge1xuICAgICAgdGhpcy51cGRhdGVDb2xvclVJQnlDb2xvclJhbmdlKG5ld0NvbmZpZywgcHJvcCk7XG4gICAgICB0aGlzLnVwZGF0ZUNvbG9yUmFuZ2VCeUNvbG9yVUkobmV3Q29uZmlnLCBwcmV2aW91cywgcHJvcCk7XG4gICAgICB0aGlzLnVwZGF0ZUN1c3RvbVBhbGV0dGUobmV3Q29uZmlnLCBwcmV2aW91cywgcHJvcCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICB1cGRhdGVDdXN0b21QYWxldHRlKG5ld0NvbmZpZywgcHJldmlvdXMsIHByb3ApIHtcbiAgICBpZiAoIW5ld0NvbmZpZy5jb2xvclJhbmdlQ29uZmlnIHx8ICFuZXdDb25maWcuY29sb3JSYW5nZUNvbmZpZy5jdXN0b20pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCB7Y29sb3JVSSwgdmlzQ29uZmlnfSA9IHRoaXMuY29uZmlnO1xuXG4gICAgaWYgKCF2aXNDb25maWdbcHJvcF0pIHJldHVybjtcbiAgICBjb25zdCB7Y29sb3JzfSA9IHZpc0NvbmZpZ1twcm9wXTtcbiAgICBjb25zdCBjdXN0b21QYWxldHRlID0ge1xuICAgICAgLi4uY29sb3JVSVtwcm9wXS5jdXN0b21QYWxldHRlLFxuICAgICAgbmFtZTogJ0N1c3RvbSBQYWxldHRlJyxcbiAgICAgIGNvbG9yczogWy4uLmNvbG9yc11cbiAgICB9O1xuICAgIHRoaXMudXBkYXRlTGF5ZXJDb25maWcoe1xuICAgICAgY29sb3JVSToge1xuICAgICAgICAuLi5jb2xvclVJLFxuICAgICAgICBbcHJvcF06IHtcbiAgICAgICAgICAuLi5jb2xvclVJW3Byb3BdLFxuICAgICAgICAgIGN1c3RvbVBhbGV0dGVcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9XG4gIC8qKlxuICAgKiBpZiBvcGVuIGRyb3Bkb3duIGFuZCBwcm9wIGlzIGNvbG9yIHJhbmdlXG4gICAqIEF1dG9tYXRpY2FsbHkgc2V0IGNvbG9yUmFuZ2VDb25maWcncyBzdGVwLCByZXZlcnNlZCBhbmQgdHlwZVxuICAgKiBAcGFyYW0geyp9IG5ld0NvbmZpZ1xuICAgKiBAcGFyYW0geyp9IHByb3BcbiAgICovXG4gIHVwZGF0ZUNvbG9yVUlCeUNvbG9yUmFuZ2UobmV3Q29uZmlnLCBwcm9wKSB7XG4gICAgaWYgKHR5cGVvZiBuZXdDb25maWcuc2hvd0Ryb3Bkb3duICE9PSAnbnVtYmVyJykgcmV0dXJuO1xuXG4gICAgY29uc3Qge2NvbG9yVUksIHZpc0NvbmZpZ30gPSB0aGlzLmNvbmZpZztcbiAgICB0aGlzLnVwZGF0ZUxheWVyQ29uZmlnKHtcbiAgICAgIGNvbG9yVUk6IHtcbiAgICAgICAgLi4uY29sb3JVSSxcbiAgICAgICAgW3Byb3BdOiB7XG4gICAgICAgICAgLi4uY29sb3JVSVtwcm9wXSxcbiAgICAgICAgICBjb2xvclJhbmdlQ29uZmlnOiB7XG4gICAgICAgICAgICAuLi5jb2xvclVJW3Byb3BdLmNvbG9yUmFuZ2VDb25maWcsXG4gICAgICAgICAgICB0eXBlOiB2aXNDb25maWdbcHJvcF0udHlwZSxcbiAgICAgICAgICAgIHN0ZXBzOiB2aXNDb25maWdbcHJvcF0uY29sb3JzLmxlbmd0aCxcbiAgICAgICAgICAgIHJldmVyc2VkOiBCb29sZWFuKHZpc0NvbmZpZ1twcm9wXS5yZXZlcnNlZClcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBjb21wbGV4aXR5XG4gIHVwZGF0ZUNvbG9yUmFuZ2VCeUNvbG9yVUkobmV3Q29uZmlnLCBwcmV2aW91cywgcHJvcCkge1xuICAgIC8vIG9ubHkgdXBkYXRlIGNvbG9yUmFuZ2UgaWYgY2hhbmdlcyBpbiBVSSBpcyBtYWRlIHRvICdyZXZlcnNlZCcsICdzdGVwcycgb3Igc3RlcHNcbiAgICBjb25zdCBzaG91bGRVcGRhdGUgPVxuICAgICAgbmV3Q29uZmlnLmNvbG9yUmFuZ2VDb25maWcgJiZcbiAgICAgIFsncmV2ZXJzZWQnLCAnc3RlcHMnXS5zb21lKFxuICAgICAgICBrZXkgPT5cbiAgICAgICAgICBuZXdDb25maWcuY29sb3JSYW5nZUNvbmZpZy5oYXNPd25Qcm9wZXJ0eShrZXkpICYmXG4gICAgICAgICAgbmV3Q29uZmlnLmNvbG9yUmFuZ2VDb25maWdba2V5XSAhPT1cbiAgICAgICAgICAgIChwcmV2aW91c1twcm9wXSB8fCBERUZBVUxUX0NPTE9SX1VJKS5jb2xvclJhbmdlQ29uZmlnW2tleV1cbiAgICAgICk7XG4gICAgaWYgKCFzaG91bGRVcGRhdGUpIHJldHVybjtcblxuICAgIGNvbnN0IHtjb2xvclVJLCB2aXNDb25maWd9ID0gdGhpcy5jb25maWc7XG4gICAgY29uc3Qge3N0ZXBzLCByZXZlcnNlZH0gPSBjb2xvclVJW3Byb3BdLmNvbG9yUmFuZ2VDb25maWc7XG4gICAgY29uc3QgY29sb3JSYW5nZSA9IHZpc0NvbmZpZ1twcm9wXTtcbiAgICAvLyBmaW5kIGJhc2VkIG9uIHN0ZXAgb3IgcmV2ZXJzZWRcbiAgICBsZXQgdXBkYXRlO1xuICAgIGlmIChuZXdDb25maWcuY29sb3JSYW5nZUNvbmZpZy5oYXNPd25Qcm9wZXJ0eSgnc3RlcHMnKSkge1xuICAgICAgY29uc3QgZ3JvdXAgPSBnZXRDb2xvckdyb3VwQnlOYW1lKGNvbG9yUmFuZ2UpO1xuXG4gICAgICBpZiAoZ3JvdXApIHtcbiAgICAgICAgY29uc3Qgc2FtZUdyb3VwID0gQ09MT1JfUkFOR0VTLmZpbHRlcihjciA9PiBnZXRDb2xvckdyb3VwQnlOYW1lKGNyKSA9PT0gZ3JvdXApO1xuXG4gICAgICAgIHVwZGF0ZSA9IHNhbWVHcm91cC5maW5kKGNyID0+IGNyLmNvbG9ycy5sZW5ndGggPT09IHN0ZXBzKTtcblxuICAgICAgICBpZiAodXBkYXRlICYmIGNvbG9yUmFuZ2UucmV2ZXJzZWQpIHtcbiAgICAgICAgICB1cGRhdGUgPSByZXZlcnNlQ29sb3JSYW5nZSh0cnVlLCB1cGRhdGUpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHVwZGF0ZSAmJiBjb2xvclJhbmdlLmNvbG9yTWFwKSB7XG4gICAgICAgICAgdXBkYXRlID0gdGhpcy51cGRhdGVDb2xvck1hcChwcm9wLCBjb2xvclJhbmdlLmNvbG9yTWFwLCB1cGRhdGUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKG5ld0NvbmZpZy5jb2xvclJhbmdlQ29uZmlnLmhhc093blByb3BlcnR5KCdyZXZlcnNlZCcpKSB7XG4gICAgICB1cGRhdGUgPSByZXZlcnNlQ29sb3JSYW5nZShyZXZlcnNlZCwgdXBkYXRlIHx8IGNvbG9yUmFuZ2UpO1xuICAgIH1cblxuICAgIGlmICh1cGRhdGUpIHtcbiAgICAgIHRoaXMudXBkYXRlTGF5ZXJWaXNDb25maWcoe1twcm9wXTogdXBkYXRlfSk7XG4gICAgfVxuICB9XG5cbiAgdXBkYXRlQ29sb3JNYXAocHJvcCwgY29sb3JNYXAsIGNvbG9yUmFuZ2UpIHtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgY29uc3Qge2ZpZWxkLCBkb21haW59ID0gT2JqZWN0LnZhbHVlcyh0aGlzLnZpc3VhbENoYW5uZWxzKS5maW5kKHZhbHVlID0+IHZhbHVlLnJhbmdlID09PSBwcm9wKTtcbiAgICBjb25zdCB0eXBlID0gdGhpcy5jb25maWdbZmllbGRdPy50eXBlO1xuXG4gICAgaWYgKHR5cGUgPT09ICdzdHJpbmcnIHx8IHR5cGUgPT09ICdib29sZWFuJyB8fCB0eXBlID09PSAnZGF0ZScpIHtcbiAgICAgIHJldHVybiB0aGlzLnVwZGF0ZUNhdGVnb3J5Q29sb3JNYXAoY29sb3JNYXAsIHRoaXMuY29uZmlnW2RvbWFpbl0sIGNvbG9yUmFuZ2UpO1xuICAgIH1cblxuICAgIC8vIElmIG5vIHR5cGUgb3IgdHlwZSBpcyBub3Qgc3RyaW5nLCBib29sZWFuIG9yIGRhdGVcbiAgICByZXR1cm4gdGhpcy51cGRhdGVOdW1lcmljQ29sb3JNYXAoY29sb3JNYXAsIHRoaXMuY29uZmlnW2RvbWFpbl0sIGNvbG9yUmFuZ2UpO1xuICB9XG5cbiAgdXBkYXRlQ2F0ZWdvcnlDb2xvck1hcChjb2xvck1hcCwgZG9tYWluLCBjb2xvclJhbmdlKSB7XG4gICAgY29uc3QgY29sb3JzID0gY29sb3JSYW5nZS5jb2xvcnM7XG4gICAgY29uc3QgYXNzaWduZWRDYXRlZ29yaWVzID0gW107XG4gICAgY29uc3QgbmV3Q29sb3JNYXAgPSBjb2xvck1hcC5zbGljZSgwLCBjb2xvcnMubGVuZ3RoKS5tYXAoKGNNYXAsIGluZGV4KSA9PiB7XG4gICAgICBhc3NpZ25lZENhdGVnb3JpZXMucHVzaChjTWFwWzBdKTtcbiAgICAgIHJldHVybiBbY01hcFswXSwgY29sb3JzW2luZGV4XV07XG4gICAgfSk7XG4gICAgY29uc3QgdW5hc3NpZ25lZENvbG9ycyA9IGNvbG9ycy5zbGljZShuZXdDb2xvck1hcC5sZW5ndGgsIGNvbG9ycy5sZW5ndGgpO1xuXG4gICAgZm9yIChjb25zdCBjb2xvciBvZiB1bmFzc2lnbmVkQ29sb3JzKSB7XG4gICAgICBjb25zdCBjYXRlZ29yeSA9IGRvbWFpbi5maW5kKGQgPT4gIWFzc2lnbmVkQ2F0ZWdvcmllcy5pbmNsdWRlcyhkKSk7XG4gICAgICBpZiAoIWNhdGVnb3J5KSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgYXNzaWduZWRDYXRlZ29yaWVzLnB1c2goY2F0ZWdvcnkpO1xuICAgICAgbmV3Q29sb3JNYXAucHVzaChbY2F0ZWdvcnksIGNvbG9yXSk7XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICAuLi5jb2xvclJhbmdlLFxuICAgICAgY29sb3JNYXA6IG5ld0NvbG9yTWFwXG4gICAgfTtcbiAgfVxuXG4gIHVwZGF0ZU51bWVyaWNDb2xvck1hcChjb2xvck1hcCwgZG9tYWluLCB1cGRhdGUpIHtcbiAgICBjb25zdCBjb2xvcnMgPSB1cGRhdGUuY29sb3JzO1xuICAgIGxldCBuZXdDb2xvck1hcCA9IGNvbG9yTWFwLnNsaWNlKDAsIGNvbG9ycy5sZW5ndGgpO1xuXG4gICAgbmV3Q29sb3JNYXAgPSBuZXdDb2xvck1hcC5tYXAoKGNNYXAsIGluZGV4KSA9PiB7XG4gICAgICBjb25zdCB2YWx1ZSA9IGluZGV4ID09PSBuZXdDb2xvck1hcC5sZW5ndGggLSAxID8gbnVsbCA6IGNNYXBbMF07XG4gICAgICByZXR1cm4gW3ZhbHVlLCBjb2xvcnNbaW5kZXhdXTtcbiAgICB9KTtcbiAgICBjb25zdCB1bmFzc2lnbmVkQ29sb3JzID0gY29sb3JzLnNsaWNlKG5ld0NvbG9yTWFwLmxlbmd0aCwgY29sb3JzLmxlbmd0aCk7XG5cbiAgICBpZiAodW5hc3NpZ25lZENvbG9ycy5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBjb2xvck1hcFZhbHVlcyA9IGNvbG9yTWFwLm1hcChjID0+IGNbMF0pLmZpbHRlcihjID0+IHR5cGVvZiBjID09PSAnbnVtYmVyJyk7XG4gICAgICBjb25zdCBtYXhWYWx1ZSA9IE1hdGgubWF4KC4uLmNvbG9yTWFwVmFsdWVzLCBkb21haW5bZG9tYWluLmxlbmd0aCAtIDFdKTtcbiAgICAgIGNvbnN0IHByZXZWYWx1ZSA9IG5ld0NvbG9yTWFwW25ld0NvbG9yTWFwLmxlbmd0aCAtIDJdWzBdO1xuICAgICAgY29uc3Qgc3RlcCA9IChtYXhWYWx1ZSAtIHByZXZWYWx1ZSkgLyAodW5hc3NpZ25lZENvbG9ycy5sZW5ndGggKyAxKTtcbiAgICAgIG5ld0NvbG9yTWFwW25ld0NvbG9yTWFwLmxlbmd0aCAtIDFdWzBdID0gcHJldlZhbHVlICsgc3RlcDtcblxuICAgICAgZm9yIChjb25zdCBbaSwgY29sb3JdIG9mIHVuYXNzaWduZWRDb2xvcnMuZW50cmllcygpKSB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gaSA9PT0gdW5hc3NpZ25lZENvbG9ycy5sZW5ndGggLSAxID8gbnVsbCA6IHByZXZWYWx1ZSArIChzdGVwICogKGkgKyAyKSk7XG4gICAgICAgIG5ld0NvbG9yTWFwLnB1c2goW3ZhbHVlLCBjb2xvcl0pO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgLi4udXBkYXRlLFxuICAgICAgY29sb3JNYXA6IG5ld0NvbG9yTWFwXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVjayB3aGV0aGVyIGxheWVyIGhhcyBhbGwgY29sdW1uc1xuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0geWVzIG9yIG5vXG4gICAqL1xuICBoYXNBbGxDb2x1bW5zKCkge1xuICAgIGNvbnN0IHtjb2x1bW5zfSA9IHRoaXMuY29uZmlnO1xuICAgIHJldHVybiAoXG4gICAgICAoY29sdW1ucyAmJlxuICAgICAgT2JqZWN0LnZhbHVlcyhjb2x1bW5zKS5ldmVyeSh2ID0+IHtcbiAgICAgICAgcmV0dXJuIEJvb2xlYW4odi5vcHRpb25hbCB8fCAodi52YWx1ZSAmJiB2LmZpZWxkSWR4ID4gLTEpKTtcbiAgICAgIH0pKVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgd2hldGhlciBsYXllciBoYXMgZGF0YVxuICAgKlxuICAgKiBAcGFyYW0ge0FycmF5IHwgT2JqZWN0fSBsYXllckRhdGFcbiAgICogQHJldHVybnMge2Jvb2xlYW59IHllcyBvciBub1xuICAgKi9cbiAgaGFzTGF5ZXJEYXRhKGxheWVyRGF0YSkge1xuICAgIGlmICghbGF5ZXJEYXRhKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiBCb29sZWFuKGxheWVyRGF0YS5kYXRhICYmIGxheWVyRGF0YS5kYXRhLmxlbmd0aCk7XG4gIH1cblxuICBpc1ZhbGlkVG9TYXZlKCkge1xuICAgIHJldHVybiB0aGlzLnR5cGUgJiYgdGhpcy5oYXNBbGxDb2x1bW5zKCk7XG4gIH1cblxuICBzaG91bGRSZW5kZXJMYXllcihkYXRhKSB7XG4gICAgcmV0dXJuIChcbiAgICAgICh0aGlzLnR5cGUgJiZcbiAgICAgIHRoaXMuaGFzQWxsQ29sdW1ucygpICYmXG4gICAgICB0aGlzLmhhc0xheWVyRGF0YShkYXRhKSAmJlxuICAgICAgdHlwZW9mIHRoaXMucmVuZGVyTGF5ZXIgPT09ICdmdW5jdGlvbicpXG4gICAgKTtcbiAgfVxuXG4gIGdldENvbG9yU2NhbGUoY29sb3JTY2FsZSwgY29sb3JEb21haW4sIGNvbG9yUmFuZ2UpIHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShjb2xvclJhbmdlLmNvbG9yTWFwKSkge1xuICAgICAgY29uc3QgY01hcCA9IG5ldyBNYXAoKTtcbiAgICAgIGNvbG9yUmFuZ2UuY29sb3JNYXAuZm9yRWFjaCgoW2ssIHZdKSA9PiB7XG4gICAgICAgIGNNYXAuc2V0KGssIHR5cGVvZiB2ID09PSAnc3RyaW5nJyA/IGhleFRvUmdiKHYpIDogdik7XG4gICAgICB9KTtcblxuICAgICAgLy8gQHRzLWlnbm9yZSBkMyBzY2FsZVxuICAgICAgY29uc3Qgc2NhbGUgPSBTQ0FMRV9GVU5DW2NvbG9yU2NhbGVdKClcbiAgICAgICAgLmRvbWFpbihBcnJheS5mcm9tKGNNYXAua2V5cygpKSlcbiAgICAgICAgLnJhbmdlKEFycmF5LmZyb20oY01hcC52YWx1ZXMoKSkpXG4gICAgICAgIC51bmtub3duKFVOS05PV05fQ09MT1IpO1xuICAgICAgcmV0dXJuIHNjYWxlO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmdldFZpc0NoYW5uZWxTY2FsZShjb2xvclNjYWxlLCBjb2xvckRvbWFpbiwgY29sb3JSYW5nZS5jb2xvcnMubWFwKGhleFRvUmdiKSk7XG4gIH1cblxuICBnZXRDdXN0b21NYXJrZXJzU2NhbGUocmFuZ2UsIGZhbGxiYWNrSWNvbikge1xuICAgIGxldCB1bmtub3duVmFsdWUgPSBmYWxsYmFja0ljb24gfHwgRkFMTEJBQ0tfSUNPTjtcbiAgICBpZiAoIXJhbmdlKSB7XG4gICAgICByZXR1cm4gKCkgPT4gdW5rbm93blZhbHVlO1xuICAgIH1cblxuICAgIGNvbnN0IG1hcHBpbmcgPSBuZXcgTWFwKCk7XG5cbiAgICBpZiAocmFuZ2Uub3RoZXJzTWFya2VyKSB7XG4gICAgICB1bmtub3duVmFsdWUgPSByYW5nZS5vdGhlcnNNYXJrZXI7XG4gICAgfVxuICAgIGZvciAoY29uc3Qge3ZhbHVlLCBtYXJrZXJVcmx9IG9mIHJhbmdlLm1hcmtlck1hcCkge1xuICAgICAgaWYgKG1hcmtlclVybCkge1xuICAgICAgICBtYXBwaW5nLnNldCh2YWx1ZSwgbWFya2VyVXJsKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBAdHMtaWdub3JlIGQzIHNjYWxlXG4gICAgY29uc3Qgc2NhbGUgPSBzY2FsZU9yZGluYWwoKVxuICAgICAgLmRvbWFpbihBcnJheS5mcm9tKG1hcHBpbmcua2V5cygpKSlcbiAgICAgIC5yYW5nZShBcnJheS5mcm9tKG1hcHBpbmcudmFsdWVzKCkpKVxuICAgICAgLnVua25vd24odW5rbm93blZhbHVlKTtcbiAgICByZXR1cm4gc2NhbGU7XG4gIH1cblxuICAvKipcbiAgICogTWFwcGluZyBmcm9tIHZpc3VhbCBjaGFubmVscyB0byBkZWNrLmdsIGFjY2Vzb3JzXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBwYXJhbSBQYXJhbWV0ZXJzXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IHBhcmFtLmRhdGFBY2Nlc3NvciBBY2Nlc3Mga2VwbGVyLmdsIGxheWVyIGRhdGEgZnJvbSBkZWNrLmdsIGxheWVyXG4gICAqIEBwYXJhbSB7aW1wb3J0KCd1dGlscy90YWJsZS11dGlscy9kYXRhLWNvbnRhaW5lci1pbnRlcmZhY2UnKS5EYXRhQ29udGFpbmVySW50ZXJmYWNlfSBwYXJhbS5kYXRhQ29udGFpbmVyIERhdGFDb250YWluZXIgdG8gdXNlIHVzZSB3aXRoIGRhdGFBY2Nlc3NvclxuICAgKiBAcmV0dXJuIHtPYmplY3R9IGF0dHJpYnV0ZUFjY2Vzc29ycyAtIGRlY2suZ2wgbGF5ZXIgYXR0cmlidXRlIGFjY2Vzc29yc1xuICAgKi9cbiAgZ2V0QXR0cmlidXRlQWNjZXNzb3JzKHtkYXRhQWNjZXNzb3IgPSBkZWZhdWx0RGF0YUFjY2Vzc29yLCBkYXRhQ29udGFpbmVyfSkge1xuICAgIGNvbnN0IGF0dHJpYnV0ZUFjY2Vzc29ycyA9IHt9O1xuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGNvbXBsZXhpdHlcbiAgICBPYmplY3Qua2V5cyh0aGlzLnZpc3VhbENoYW5uZWxzKS5mb3JFYWNoKGNoYW5uZWwgPT4ge1xuICAgICAgY29uc3Qge1xuICAgICAgICBmaWVsZCxcbiAgICAgICAgZml4ZWQsXG4gICAgICAgIHNjYWxlLFxuICAgICAgICBkb21haW4sXG4gICAgICAgIHJhbmdlLFxuICAgICAgICBhY2Nlc3NvcixcbiAgICAgICAgZGVmYXVsdFZhbHVlLFxuICAgICAgICBnZXRBdHRyaWJ1dGVWYWx1ZSxcbiAgICAgICAgbnVsbFZhbHVlLFxuICAgICAgICBjaGFubmVsU2NhbGVUeXBlLFxuICAgICAgICBhZ2dyZWdhdGlvblxuICAgICAgfSA9IHRoaXMudmlzdWFsQ2hhbm5lbHNbY2hhbm5lbF07XG5cbiAgICAgIGNvbnN0IHNob3VsZEdldFNjYWxlID0gQm9vbGVhbihcbiAgICAgICAgKHNjYWxlIHx8IGNoYW5uZWxTY2FsZVR5cGUgPT09IENIQU5ORUxfU0NBTEVTLmlkZW50aXR5KSAmJiB0aGlzLmNvbmZpZ1tmaWVsZF1cbiAgICAgICk7XG5cbiAgICAgIGlmIChzaG91bGRHZXRTY2FsZSkge1xuICAgICAgICBjb25zdCBhcmdzID0gW3RoaXMuY29uZmlnW3NjYWxlXSwgdGhpcy5jb25maWdbZG9tYWluXSwgdGhpcy5jb25maWcudmlzQ29uZmlnW3JhbmdlXV07XG4gICAgICAgIGNvbnN0IGlzRml4ZWQgPSBmaXhlZCAmJiB0aGlzLmNvbmZpZy52aXNDb25maWdbZml4ZWRdO1xuICAgICAgICAvLyBJdCdzIGltcG9ydGFudCB0byBkZWNsYXJlIGFzIGNvbnN0IGFsbCB0aGUgcGFyYW1ldGVycyB0aGF0IHdlIGFyZSBnb2luZyB0byBiZSB1c2UgaW4gdGhlIGdldEVuY29kZWRDaGFubmVsVmFsdWUgY2FsbFxuICAgICAgICAvLyBvdGhlcndpc2UsIHRoZSBvbGRMYXllckRhdGEgcGFyYW1ldGVyIGluIGZvcm1hdExheWVyRGF0YSBtZXRob2Qgd2lsbCBiZSB3cm9uZyAoeW91IGNhbiBjaGVjayB0aGUgZm9ybWF0TGF5ZXJEYXRhIFRpbGVMYXllciBtZXRob2QgaW4gQnVpbGRlciBhcyBleGFtcGxlKVxuICAgICAgICBjb25zdCBmaWVsZENvbmZpZyA9IHRoaXMuY29uZmlnW2ZpZWxkXTtcbiAgICAgICAgY29uc3QgYWdncmVnYXRpb25WYWx1ZSA9IHRoaXMuY29uZmlnLnZpc0NvbmZpZ1thZ2dyZWdhdGlvbl07XG5cbiAgICAgICAgY29uc3Qgc2NhbGVGdW5jdGlvbiA9XG4gICAgICAgICAgY2hhbm5lbFNjYWxlVHlwZSA9PT0gQ0hBTk5FTF9TQ0FMRVMuaWRlbnRpdHlcbiAgICAgICAgICAgID8gc2NhbGVJZGVudGl0eVxuICAgICAgICAgICAgOiBjaGFubmVsU2NhbGVUeXBlID09PSBDSEFOTkVMX1NDQUxFUy5jb2xvclxuICAgICAgICAgICAgPyB0aGlzLmdldENvbG9yU2NhbGUoLi4uYXJncylcbiAgICAgICAgICAgIDogY2hhbm5lbFNjYWxlVHlwZSA9PT0gQ0hBTk5FTF9TQ0FMRVMuY3VzdG9tTWFya2VyXG4gICAgICAgICAgICA/IHRoaXMuZ2V0Q3VzdG9tTWFya2Vyc1NjYWxlKFxuICAgICAgICAgICAgICAgIHRoaXMuY29uZmlnLnZpc0NvbmZpZ1tyYW5nZV0sXG4gICAgICAgICAgICAgICAgdGhpcy5jb25maWcudmlzQ29uZmlnLmN1c3RvbU1hcmtlcnNVcmxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgOiB0aGlzLmdldFZpc0NoYW5uZWxTY2FsZSguLi5hcmdzLCBpc0ZpeGVkKTtcblxuICAgICAgICBhdHRyaWJ1dGVBY2Nlc3NvcnNbYWNjZXNzb3JdID0gZCA9PlxuICAgICAgICAgIHRoaXMuZ2V0RW5jb2RlZENoYW5uZWxWYWx1ZShcbiAgICAgICAgICAgIHNjYWxlRnVuY3Rpb24sXG4gICAgICAgICAgICBkYXRhQWNjZXNzb3IoZGF0YUNvbnRhaW5lcikoZCksXG4gICAgICAgICAgICBmaWVsZENvbmZpZyxcbiAgICAgICAgICAgIGFnZ3JlZ2F0aW9uVmFsdWUsXG4gICAgICAgICAgICBudWxsVmFsdWVcbiAgICAgICAgICApO1xuICAgICAgfSBlbHNlIGlmICh0eXBlb2YgZ2V0QXR0cmlidXRlVmFsdWUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgYXR0cmlidXRlQWNjZXNzb3JzW2FjY2Vzc29yXSA9IGdldEF0dHJpYnV0ZVZhbHVlKHRoaXMuY29uZmlnKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGF0dHJpYnV0ZUFjY2Vzc29yc1thY2Nlc3Nvcl0gPVxuICAgICAgICAgIHR5cGVvZiBkZWZhdWx0VmFsdWUgPT09ICdmdW5jdGlvbicgPyBkZWZhdWx0VmFsdWUodGhpcy5jb25maWcpIDogZGVmYXVsdFZhbHVlO1xuICAgICAgfVxuXG4gICAgICBpZiAoIShhY2Nlc3NvciBpbiBhdHRyaWJ1dGVBY2Nlc3NvcnMpKSB7XG4gICAgICAgIENvbnNvbGUud2FybihgRmFpbGVkIHRvIHByb3ZpZGUgYWNjZXNzb3IgZnVuY3Rpb24gZm9yICR7YWNjZXNzb3IgfHwgY2hhbm5lbH1gKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBhdHRyaWJ1dGVBY2Nlc3NvcnM7XG4gIH1cblxuICBnZXRWaXNDaGFubmVsU2NhbGUoc2NhbGUsIGRvbWFpbiwgcmFuZ2UsIGZpeGVkKSB7XG4gICAgaWYgKHNjYWxlID09PSBTQ0FMRV9UWVBFUy5vcmRpbmFsKSB7XG4gICAgICAvLyBAdHMtaWdub3JlIGQzLXNjYWxlIHR5cGVcbiAgICAgIHJldHVybiBTQ0FMRV9GVU5DW3NjYWxlXSgpXG4gICAgICAgIC5kb21haW4oZG9tYWluLnNsaWNlKDAsIHJhbmdlLmxlbmd0aCkpXG4gICAgICAgIC5yYW5nZShyYW5nZSlcbiAgICAgICAgLnVua25vd24oVU5LTk9XTl9DT0xPUik7XG4gICAgfVxuXG4gICAgLy8gQHRzLWlnbm9yZSBkMy1zY2FsZSB0eXBlXG4gICAgcmV0dXJuIFNDQUxFX0ZVTkNbZml4ZWQgPyAnbGluZWFyJyA6IHNjYWxlXSgpXG4gICAgICAuZG9tYWluKGRvbWFpbilcbiAgICAgIC5yYW5nZShmaXhlZCA/IGRvbWFpbiA6IHJhbmdlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgbG9uZ2l0dWRlIGFuZCBsYXRpdHVkZSBib3VuZHMgb2YgdGhlIGRhdGEuXG4gICAqIEBwYXJhbSB7aW1wb3J0KCd1dGlscy90YWJsZS11dGlscy9kYXRhLWNvbnRhaW5lci1pbnRlcmZhY2UnKS5EYXRhQ29udGFpbmVySW50ZXJmYWNlfSBkYXRhQ29udGFpbmVyIERhdGFDb250YWluZXIgdG8gY2FsY3VsYXRlIGJvdW5kcyBmb3IuXG4gICAqIEBwYXJhbSB7KGQ6IHtpbmRleDogbnVtYmVyfSwgZGM6IGltcG9ydCgndXRpbHMvdGFibGUtdXRpbHMvZGF0YS1jb250YWluZXItaW50ZXJmYWNlJykuRGF0YUNvbnRhaW5lckludGVyZmFjZSkgPT4gbnVtYmVyW119IGdldFBvc2l0aW9uIEFjY2VzcyBrZXBsZXIuZ2wgbGF5ZXIgZGF0YSBmcm9tIGRlY2suZ2wgbGF5ZXJcbiAgICogQHJldHVybiB7bnVtYmVyW118bnVsbH0gYm91bmRzIG9mIHRoZSBkYXRhLlxuICAgKi9cbiAgZ2V0UG9pbnRzQm91bmRzKGRhdGFDb250YWluZXIsIGdldFBvc2l0aW9uKSB7XG4gICAgLy8gbm8gbmVlZCB0byBsb29wIHRocm91Z2ggdGhlIGVudGlyZSBkYXRhc2V0XG4gICAgLy8gZ2V0IGEgc2FtcGxlIG9mIGRhdGEgdG8gY2FsY3VsYXRlIGJvdW5kc1xuICAgIGNvbnN0IHNhbXBsZURhdGEgPVxuICAgICAgZGF0YUNvbnRhaW5lci5udW1Sb3dzKCkgPiBNQVhfU0FNUExFX1NJWkVcbiAgICAgICAgPyBnZXRTYW1wbGVEYXRhKGRhdGFDb250YWluZXIsIE1BWF9TQU1QTEVfU0laRSlcbiAgICAgICAgOiBkYXRhQ29udGFpbmVyO1xuXG4gICAgY29uc3QgcG9pbnRzID0gc2FtcGxlRGF0YS5tYXBJbmRleChnZXRQb3NpdGlvbik7XG5cbiAgICBjb25zdCBsYXRCb3VuZHMgPSBnZXRMYXRMbmdCb3VuZHMocG9pbnRzLCAxLCBbLTkwLCA5MF0pO1xuICAgIGNvbnN0IGxuZ0JvdW5kcyA9IGdldExhdExuZ0JvdW5kcyhwb2ludHMsIDAsIFstMTgwLCAxODBdKTtcblxuICAgIGlmICghbGF0Qm91bmRzIHx8ICFsbmdCb3VuZHMpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiBbbG5nQm91bmRzWzBdLCBsYXRCb3VuZHNbMF0sIGxuZ0JvdW5kc1sxXSwgbGF0Qm91bmRzWzFdXTtcbiAgfVxuXG4gIGdldENoYW5nZWRUcmlnZ2VycyhkYXRhVXBkYXRlVHJpZ2dlcnMpIHtcbiAgICBjb25zdCB0cmlnZ2VyQ2hhbmdlZCA9IGRpZmZVcGRhdGVUcmlnZ2VycyhkYXRhVXBkYXRlVHJpZ2dlcnMsIHRoaXMuX29sZERhdGFVcGRhdGVUcmlnZ2Vycyk7XG4gICAgdGhpcy5fb2xkRGF0YVVwZGF0ZVRyaWdnZXJzID0gZGF0YVVwZGF0ZVRyaWdnZXJzO1xuXG4gICAgcmV0dXJuIHRyaWdnZXJDaGFuZ2VkO1xuICB9XG5cbiAgZ2V0RW5jb2RlZENoYW5uZWxWYWx1ZShcbiAgICBzY2FsZSxcbiAgICBkYXRhLFxuICAgIGZpZWxkLFxuICAgIC8vIEluIGJ1aWxkZXIgd2Ugb3ZlcndyaXRlIHRoZSBnZXRWYWx1ZSBmdW5jdGlvbiBhbmQgd2UgdXNlIHRoZSBfYWdncmVnYXRpb24gcGFyYW1ldGVyIGluIHNwYXRpYWwgaW5kZXggbGF5ZXJzIGFzIHRoZSBRdWFka2V5TGF5ZXIuXG4gICAgX2FnZ3JlZ2F0aW9uLFxuICAgIG51bGxWYWx1ZSA9IE5PX1ZBTFVFX0NPTE9SLFxuICAgIGdldFZhbHVlID0gZGVmYXVsdEdldEZpZWxkVmFsdWVcbiAgKSB7XG4gICAgY29uc3Qge3R5cGV9ID0gZmllbGQ7XG4gICAgY29uc3QgdmFsdWUgPSBnZXRWYWx1ZShmaWVsZCwgZGF0YSk7XG5cbiAgICBpZiAoIW5vdE51bGxvclVuZGVmaW5lZCh2YWx1ZSkpIHtcbiAgICAgIHJldHVybiBudWxsVmFsdWU7XG4gICAgfVxuXG4gICAgbGV0IGF0dHJpYnV0ZVZhbHVlO1xuICAgIGlmICh0eXBlID09PSBBTExfRklFTERfVFlQRVMudGltZXN0YW1wKSB7XG4gICAgICAvLyBzaG91bGRuJ3QgbmVlZCB0byBjb252ZXJ0IGhlcmVcbiAgICAgIC8vIHNjYWxlIEZ1bmN0aW9uIHNob3VsZCB0YWtlIGNhcmUgb2YgaXRcbiAgICAgIGF0dHJpYnV0ZVZhbHVlID0gc2NhbGUobmV3IERhdGUodmFsdWUpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgYXR0cmlidXRlVmFsdWUgPSBzY2FsZSh2YWx1ZSk7XG4gICAgfVxuXG4gICAgaWYgKCFub3ROdWxsb3JVbmRlZmluZWQoYXR0cmlidXRlVmFsdWUpKSB7XG4gICAgICBhdHRyaWJ1dGVWYWx1ZSA9IG51bGxWYWx1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gYXR0cmlidXRlVmFsdWU7XG4gIH1cblxuICB1cGRhdGVNZXRhKG1ldGEpIHtcbiAgICB0aGlzLm1ldGEgPSB7Li4udGhpcy5tZXRhLCAuLi5tZXRhfTtcbiAgfVxuXG4gIGdldERhdGFVcGRhdGVUcmlnZ2Vycyh7ZmlsdGVyZWRJbmRleCwgaWQsIGFsbERhdGF9KSB7XG4gICAgY29uc3Qge2NvbHVtbnN9ID0gdGhpcy5jb25maWc7XG5cbiAgICByZXR1cm4ge1xuICAgICAgZ2V0RGF0YToge2RhdGFzZXRJZDogaWQsIGFsbERhdGEsIGNvbHVtbnMsIGZpbHRlcmVkSW5kZXh9LFxuICAgICAgZ2V0TWV0YToge2RhdGFzZXRJZDogaWQsIGFsbERhdGEsIGNvbHVtbnN9LFxuICAgICAgLi4uKHRoaXMuY29uZmlnLnRleHRMYWJlbCB8fCBbXSkucmVkdWNlKFxuICAgICAgICAoYWNjdSwgdGwsIGkpID0+ICh7XG4gICAgICAgICAgLi4uYWNjdSxcbiAgICAgICAgICBbYGdldExhYmVsQ2hhcmFjdGVyU2V0LSR7aX1gXTogdGwuZmllbGQgPyB0bC5maWVsZC5uYW1lIDogbnVsbFxuICAgICAgICB9KSxcbiAgICAgICAge31cbiAgICAgIClcbiAgICB9O1xuICB9XG5cbiAgdXBkYXRlRGF0YShkYXRhc2V0cywgb2xkTGF5ZXJEYXRhKSB7XG4gICAgaWYgKCF0aGlzLmNvbmZpZy5kYXRhSWQpIHtcbiAgICAgIHJldHVybiB7fTtcbiAgICB9XG4gICAgY29uc3QgbGF5ZXJEYXRhc2V0ID0gZGF0YXNldHNbdGhpcy5jb25maWcuZGF0YUlkXTtcbiAgICBjb25zdCB7ZGF0YUNvbnRhaW5lcn0gPSBsYXllckRhdGFzZXQ7XG5cbiAgICB0aGlzLnVwZGF0ZVZpc3VhbENoYW5uZWxGaWVsZHMobGF5ZXJEYXRhc2V0KTtcblxuICAgIGNvbnN0IGdldFBvc2l0aW9uID0gdGhpcy5nZXRQb3NpdGlvbkFjY2Vzc29yKGRhdGFDb250YWluZXIpO1xuICAgIGNvbnN0IGRhdGFVcGRhdGVUcmlnZ2VycyA9IHRoaXMuZ2V0RGF0YVVwZGF0ZVRyaWdnZXJzKGxheWVyRGF0YXNldCk7XG4gICAgY29uc3QgdHJpZ2dlckNoYW5nZWQgPSB0aGlzLmdldENoYW5nZWRUcmlnZ2VycyhkYXRhVXBkYXRlVHJpZ2dlcnMpO1xuXG4gICAgaWYgKHRyaWdnZXJDaGFuZ2VkLmdldE1ldGEpIHtcbiAgICAgIHRoaXMudXBkYXRlTGF5ZXJNZXRhKGRhdGFDb250YWluZXIsIGdldFBvc2l0aW9uKTtcbiAgICB9XG5cbiAgICBsZXQgZGF0YSA9IFtdO1xuXG4gICAgaWYgKCF0cmlnZ2VyQ2hhbmdlZC5nZXREYXRhICYmIG9sZExheWVyRGF0YSAmJiBvbGRMYXllckRhdGEuZGF0YSkge1xuICAgICAgLy8gc2FtZSBkYXRhXG4gICAgICBkYXRhID0gb2xkTGF5ZXJEYXRhLmRhdGE7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRhdGEgPSB0aGlzLmNhbGN1bGF0ZURhdGFBdHRyaWJ1dGUobGF5ZXJEYXRhc2V0LCBnZXRQb3NpdGlvbik7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtkYXRhLCB0cmlnZ2VyQ2hhbmdlZH07XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlIHN0eWxlZCBmaWVsZHMgdG8gbWF0Y2ggb25lcyBmcm9tIG5ldyBkYXRhc2V0LlxuICAgKlxuICAgKiBAcGFyYW0ge09iamVjdH0gZGF0YXNldFxuICAgKi9cbiAgdXBkYXRlVmlzdWFsQ2hhbm5lbEZpZWxkcyhkYXRhc2V0KSB7XG4gICAgZm9yIChjb25zdCB7ZmllbGR9IG9mIE9iamVjdC52YWx1ZXModGhpcy52aXN1YWxDaGFubmVscykpIHtcbiAgICAgIGNvbnN0IG9sZEZpZWxkID0gdGhpcy5jb25maWdbZmllbGRdO1xuICAgICAgaWYgKCFvbGRGaWVsZCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBjb25zdCBuZXdEYXRhU2V0RmllbGQgPSBkYXRhc2V0LmZpZWxkcy5maW5kKGZkID0+IGZkLm5hbWUgPT09IG9sZEZpZWxkLm5hbWUpIHx8IG51bGw7XG4gICAgICB0aGlzLnVwZGF0ZUxheWVyQ29uZmlnKHtbZmllbGRdOiBuZXdEYXRhU2V0RmllbGR9KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogaGVscGVyIGZ1bmN0aW9uIHRvIHVwZGF0ZSBvbmUgbGF5ZXIgZG9tYWluIHdoZW4gc3RhdGUuZGF0YSBjaGFuZ2VkXG4gICAqIGlmIHN0YXRlLmRhdGEgY2hhbmdlIGlzIGR1ZSBvdCB1cGRhdGUgZmlsdGVyLCBuZXdGaWxlciB3aWxsIGJlIHBhc3NlZFxuICAgKiBjYWxsZWQgYnkgdXBkYXRlQWxsTGF5ZXJEb21haW5EYXRhXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBkYXRhc2V0c1xuICAgKiBAcGFyYW0ge09iamVjdH0gbmV3RmlsdGVyXG4gICAqIEByZXR1cm5zIHtvYmplY3R9IGxheWVyXG4gICAqL1xuICB1cGRhdGVMYXllckRvbWFpbihkYXRhc2V0cywgbmV3RmlsdGVyKSB7XG4gICAgY29uc3QgdGFibGUgPSB0aGlzLmdldERhdGFzZXQoZGF0YXNldHMpO1xuICAgIGlmICghdGFibGUpIHtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgICBPYmplY3QudmFsdWVzKHRoaXMudmlzdWFsQ2hhbm5lbHMpLmZvckVhY2goY2hhbm5lbCA9PiB7XG4gICAgICBjb25zdCB7c2NhbGV9ID0gY2hhbm5lbDtcbiAgICAgIGNvbnN0IHNjYWxlVHlwZSA9IHRoaXMuY29uZmlnW3NjYWxlXTtcbiAgICAgIC8vIG9yZGluYWwgZG9tYWluIGlzIGJhc2VkIG9uIGRhdGFDb250YWluZXIsIGlmIG9ubHkgZmlsdGVyIGNoYW5nZWRcbiAgICAgIC8vIG5vIG5lZWQgdG8gdXBkYXRlIG9yZGluYWwgZG9tYWluXG4gICAgICBpZiAoIW5ld0ZpbHRlciB8fCBzY2FsZVR5cGUgIT09IFNDQUxFX1RZUEVTLm9yZGluYWwpIHtcbiAgICAgICAgY29uc3Qge2RvbWFpbn0gPSBjaGFubmVsO1xuICAgICAgICBjb25zdCB1cGRhdGVkRG9tYWluID0gdGhpcy5jYWxjdWxhdGVMYXllckRvbWFpbih0YWJsZSwgY2hhbm5lbCk7XG4gICAgICAgIHRoaXMudXBkYXRlTGF5ZXJDb25maWcoe1tkb21haW5dOiB1cGRhdGVkRG9tYWlufSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGdldERhdGFzZXQoZGF0YXNldHMpIHtcbiAgICByZXR1cm4gdGhpcy5jb25maWcuZGF0YUlkID8gZGF0YXNldHNbdGhpcy5jb25maWcuZGF0YUlkXSA6IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGUgdmlzdWFsIGNoYW5uZWwgZmllbGQgYW5kIHNjYWxlcyBiYXNlZCBvbiBzdXBwb3J0ZWQgZmllbGQgJiBzY2FsZSB0eXBlXG4gICAqIEBwYXJhbSBjaGFubmVsXG4gICAqL1xuICB2YWxpZGF0ZVZpc3VhbENoYW5uZWwoY2hhbm5lbCkge1xuICAgIHRoaXMudmFsaWRhdGVGaWVsZFR5cGUoY2hhbm5lbCk7XG4gICAgdGhpcy52YWxpZGF0ZVNjYWxlKGNoYW5uZWwpO1xuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlIGZpZWxkIHR5cGUgYmFzZWQgb24gY2hhbm5lbFNjYWxlVHlwZVxuICAgKi9cbiAgdmFsaWRhdGVGaWVsZFR5cGUoY2hhbm5lbCkge1xuICAgIGNvbnN0IHZpc3VhbENoYW5uZWwgPSB0aGlzLnZpc3VhbENoYW5uZWxzW2NoYW5uZWxdO1xuICAgIGNvbnN0IHtmaWVsZCwgY2hhbm5lbFNjYWxlVHlwZSwgc3VwcG9ydGVkRmllbGRUeXBlc30gPSB2aXN1YWxDaGFubmVsO1xuXG4gICAgaWYgKHRoaXMuY29uZmlnW2ZpZWxkXSkge1xuICAgICAgLy8gaWYgZmllbGQgaXMgc2VsZWN0ZWQsIGNoZWNrIGlmIGZpZWxkIHR5cGUgaXMgc3VwcG9ydGVkXG4gICAgICBjb25zdCBjaGFubmVsU3VwcG9ydGVkRmllbGRUeXBlcyA9XG4gICAgICAgIHN1cHBvcnRlZEZpZWxkVHlwZXMgfHwgQ0hBTk5FTF9TQ0FMRV9TVVBQT1JURURfRklFTERTW2NoYW5uZWxTY2FsZVR5cGVdO1xuXG4gICAgICBpZiAoIWNoYW5uZWxTdXBwb3J0ZWRGaWVsZFR5cGVzLmluY2x1ZGVzKHRoaXMuY29uZmlnW2ZpZWxkXS50eXBlKSkge1xuICAgICAgICAvLyBmaWVsZCB0eXBlIGlzIG5vdCBzdXBwb3J0ZWQsIHNldCBpdCBiYWNrIHRvIG51bGxcbiAgICAgICAgLy8gc2V0IHNjYWxlIGJhY2sgdG8gZGVmYXVsdFxuICAgICAgICB0aGlzLnVwZGF0ZUxheWVyQ29uZmlnKHtbZmllbGRdOiBudWxsfSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlIHNjYWxlIHR5cGUgYmFzZWQgb24gYWdncmVnYXRpb25cbiAgICovXG4gIHZhbGlkYXRlU2NhbGUoY2hhbm5lbCkge1xuICAgIGNvbnN0IHZpc3VhbENoYW5uZWwgPSB0aGlzLnZpc3VhbENoYW5uZWxzW2NoYW5uZWxdO1xuICAgIGNvbnN0IHtzY2FsZX0gPSB2aXN1YWxDaGFubmVsO1xuICAgIGlmICghc2NhbGUpIHtcbiAgICAgIC8vIHZpc3VhbENoYW5uZWwgZG9lc24ndCBoYXZlIHNjYWxlXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHNjYWxlT3B0aW9ucyA9IHRoaXMuZ2V0U2NhbGVPcHRpb25zKGNoYW5uZWwpO1xuICAgIC8vIGNoZWNrIGlmIGN1cnJlbnQgc2VsZWN0ZWQgc2NhbGUgaXNcbiAgICAvLyBzdXBwb3J0ZWQsIGlmIG5vdCwgY2hhbmdlIHRvIGRlZmF1bHRcbiAgICBpZiAoIXNjYWxlT3B0aW9ucy5pbmNsdWRlcyh0aGlzLmNvbmZpZ1tzY2FsZV0pKSB7XG4gICAgICB0aGlzLnVwZGF0ZUxheWVyQ29uZmlnKHtbc2NhbGVdOiBzY2FsZU9wdGlvbnNbMF19KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogR2V0IHNjYWxlIG9wdGlvbnMgYmFzZWQgb24gY3VycmVudCBmaWVsZFxuICAgKiBAcGFyYW0ge3N0cmluZ30gY2hhbm5lbFxuICAgKiBAcmV0dXJucyB7c3RyaW5nW119XG4gICAqL1xuICBnZXRTY2FsZU9wdGlvbnMoY2hhbm5lbCkge1xuICAgIGNvbnN0IHZpc3VhbENoYW5uZWwgPSB0aGlzLnZpc3VhbENoYW5uZWxzW2NoYW5uZWxdO1xuICAgIGNvbnN0IHtmaWVsZCwgc2NhbGUsIGNoYW5uZWxTY2FsZVR5cGV9ID0gdmlzdWFsQ2hhbm5lbDtcblxuICAgIHJldHVybiB0aGlzLmNvbmZpZ1tmaWVsZF1cbiAgICAgID8gRklFTERfT1BUU1t0aGlzLmNvbmZpZ1tmaWVsZF0udHlwZV0uc2NhbGVbY2hhbm5lbFNjYWxlVHlwZV1cbiAgICAgIDogW3RoaXMuZ2V0RGVmYXVsdExheWVyQ29uZmlnKClbc2NhbGVdXTtcbiAgfVxuXG4gIHVwZGF0ZUxheWVyVmlzdWFsQ2hhbm5lbChkYXRhc2V0LCBjaGFubmVsKSB7XG4gICAgY29uc3QgdmlzdWFsQ2hhbm5lbCA9IHRoaXMudmlzdWFsQ2hhbm5lbHNbY2hhbm5lbF07XG4gICAgdGhpcy52YWxpZGF0ZVZpc3VhbENoYW5uZWwoY2hhbm5lbCk7XG4gICAgLy8gY2FsY3VsYXRlIGxheWVyIGNoYW5uZWwgZG9tYWluXG4gICAgY29uc3QgdXBkYXRlZERvbWFpbiA9IHRoaXMuY2FsY3VsYXRlTGF5ZXJEb21haW4oZGF0YXNldCwgdmlzdWFsQ2hhbm5lbCk7XG4gICAgdGhpcy51cGRhdGVMYXllckNvbmZpZyh7W3Zpc3VhbENoYW5uZWwuZG9tYWluXTogdXBkYXRlZERvbWFpbn0pO1xuICB9XG5cbiAgZ2V0VmlzdWFsQ2hhbm5lbFVwZGF0ZVRyaWdnZXJzKCkge1xuICAgIGNvbnN0IHVwZGF0ZVRyaWdnZXJzID0ge307XG4gICAgT2JqZWN0LnZhbHVlcyh0aGlzLnZpc3VhbENoYW5uZWxzKS5mb3JFYWNoKHZpc3VhbENoYW5uZWwgPT4ge1xuICAgICAgLy8gZmllbGQgcmFuZ2Ugc2NhbGUgZG9tYWluXG4gICAgICBjb25zdCB7YWNjZXNzb3IsIGZpZWxkLCBzY2FsZSwgZG9tYWluLCByYW5nZSwgZGVmYXVsdFZhbHVlLCBmaXhlZH0gPSB2aXN1YWxDaGFubmVsO1xuXG4gICAgICB1cGRhdGVUcmlnZ2Vyc1thY2Nlc3Nvcl0gPSB7XG4gICAgICAgIFtmaWVsZF06IHRoaXMuY29uZmlnW2ZpZWxkXSxcbiAgICAgICAgW3NjYWxlXTogdGhpcy5jb25maWdbc2NhbGVdLFxuICAgICAgICBbZG9tYWluXTogdGhpcy5jb25maWdbZG9tYWluXSxcbiAgICAgICAgW3JhbmdlXTogdGhpcy5jb25maWcudmlzQ29uZmlnW3JhbmdlXSxcbiAgICAgICAgZGVmYXVsdFZhbHVlOiB0eXBlb2YgZGVmYXVsdFZhbHVlID09PSAnZnVuY3Rpb24nID8gZGVmYXVsdFZhbHVlKHRoaXMuY29uZmlnKSA6IGRlZmF1bHRWYWx1ZSxcbiAgICAgICAgLi4uKGZpeGVkID8ge1tmaXhlZF06IHRoaXMuY29uZmlnLnZpc0NvbmZpZ1tmaXhlZF19IDoge30pXG4gICAgICB9O1xuICAgIH0pO1xuICAgIHJldHVybiB1cGRhdGVUcmlnZ2VycztcbiAgfVxuXG4gIGNhbGN1bGF0ZUxheWVyRG9tYWluKGRhdGFzZXQsIHZpc3VhbENoYW5uZWwpIHtcbiAgICBjb25zdCB7c2NhbGV9ID0gdmlzdWFsQ2hhbm5lbDtcbiAgICBjb25zdCBmaWVsZCA9IHRoaXMuY29uZmlnW3Zpc3VhbENoYW5uZWwuZmllbGRdO1xuICAgIGlmICghZmllbGQgfHwgIXNjYWxlKSB7XG4gICAgICAvLyBpZiBjb2xvckZpZWxkIG9yIHNpemVGaWVsZCB3ZXJlIHNldCBiYWNrIHRvIG51bGxcbiAgICAgIHJldHVybiBkZWZhdWx0RG9tYWluO1xuICAgIH1cblxuICAgIGNvbnN0IHNjYWxlVHlwZSA9IHRoaXMuY29uZmlnW3NjYWxlXTtcbiAgICBjb25zdCBkYXRhU2V0RmllbGQgPSBkYXRhc2V0LmZpZWxkcy5maW5kKGYgPT4gZi5uYW1lID09PSBmaWVsZC5uYW1lKTtcbiAgICBpZiAoIXNjYWxlVHlwZSB8fCAhZGF0YVNldEZpZWxkKSB7XG4gICAgICAvLyBpZiBuZXcgZGF0YXNldCBkb2Vzbid0IGNvbnRhaW4gcHJldmlvdXNseSBzZXQgZmllbGRcbiAgICAgIHJldHVybiBkZWZhdWx0RG9tYWluO1xuICAgIH1cblxuICAgIHJldHVybiBkYXRhc2V0LmdldENvbHVtbkxheWVyRG9tYWluKGRhdGFTZXRGaWVsZCwgc2NhbGVUeXBlKSB8fCBkZWZhdWx0RG9tYWluO1xuICB9XG5cbiAgaGFzSG92ZXJlZE9iamVjdChvYmplY3RJbmZvKSB7XG4gICAgcmV0dXJuIHRoaXMuaXNMYXllckhvdmVyZWQob2JqZWN0SW5mbykgJiYgb2JqZWN0SW5mby5vYmplY3QgPyBvYmplY3RJbmZvLm9iamVjdCA6IG51bGw7XG4gIH1cblxuICBpc0xheWVySG92ZXJlZChvYmplY3RJbmZvKSB7XG4gICAgcmV0dXJuIG9iamVjdEluZm8/LnBpY2tlZCAmJiBvYmplY3RJbmZvPy5sYXllcj8ucHJvcHM/LmlkID09PSB0aGlzLmlkO1xuICB9XG5cbiAgZ2V0UmFkaXVzU2NhbGVCeVpvb20obWFwU3RhdGUsIGZpeGVkUmFkaXVzKSB7XG4gICAgY29uc3QgcmFkaXVzQ2hhbm5lbCA9IE9iamVjdC52YWx1ZXModGhpcy52aXN1YWxDaGFubmVscykuZmluZCh2YyA9PiB2Yy5wcm9wZXJ0eSA9PT0gJ3JhZGl1cycpO1xuXG4gICAgaWYgKCFyYWRpdXNDaGFubmVsKSB7XG4gICAgICByZXR1cm4gMTtcbiAgICB9XG5cbiAgICBjb25zdCBmaWVsZCA9IHJhZGl1c0NoYW5uZWwuZmllbGQ7XG4gICAgY29uc3QgZml4ZWQgPSBmaXhlZFJhZGl1cyA9PT0gdW5kZWZpbmVkID8gdGhpcy5jb25maWcudmlzQ29uZmlnLmZpeGVkUmFkaXVzIDogZml4ZWRSYWRpdXM7XG4gICAgY29uc3Qge3JhZGl1c30gPSB0aGlzLmNvbmZpZy52aXNDb25maWc7XG5cbiAgICAvLyBAdHMtaWdub3JlXG4gICAgcmV0dXJuIGZpeGVkID8gMSA6ICh0aGlzLmNvbmZpZ1tmaWVsZF0gPyAxIDogcmFkaXVzKSAqIHRoaXMuZ2V0Wm9vbUZhY3RvcihtYXBTdGF0ZSk7XG4gIH1cblxuICBnZXRSYWRpdXNTY2FsZShmaXhlZFJhZGl1cykge1xuICAgIGNvbnN0IHJhZGl1c0NoYW5uZWwgPSBPYmplY3QudmFsdWVzKHRoaXMudmlzdWFsQ2hhbm5lbHMpLmZpbmQodmMgPT4gdmMucHJvcGVydHkgPT09ICdyYWRpdXMnKTtcblxuICAgIGlmICghcmFkaXVzQ2hhbm5lbCkge1xuICAgICAgcmV0dXJuIDE7XG4gICAgfVxuXG4gICAgY29uc3QgZmllbGQgPSByYWRpdXNDaGFubmVsLmZpZWxkO1xuICAgIGNvbnN0IGZpeGVkID0gZml4ZWRSYWRpdXMgPT09IHVuZGVmaW5lZCA/IHRoaXMuY29uZmlnLnZpc0NvbmZpZy5maXhlZFJhZGl1cyA6IGZpeGVkUmFkaXVzO1xuICAgIGNvbnN0IHtyYWRpdXN9ID0gdGhpcy5jb25maWcudmlzQ29uZmlnO1xuXG4gICAgcmV0dXJuIGZpeGVkID8gMSA6ICh0aGlzLmNvbmZpZ1tmaWVsZF0gPyAxIDogcmFkaXVzKTtcbiAgfVxuXG4gIGdldE1heE1hcmtlclNpemUoKSB7XG4gICAgY29uc3Qge3JhZGl1c0ZpZWxkLCBzaXplRmllbGQsIHZpc0NvbmZpZ30gPSB0aGlzLmNvbmZpZztcbiAgICBjb25zdCB7cmFkaXVzUmFuZ2UsIHJhZGl1c30gPSB2aXNDb25maWc7XG4gICAgY29uc3QgZmllbGQgPSByYWRpdXNGaWVsZCB8fCBzaXplRmllbGQ7XG4gICAgcmV0dXJuIE1hdGguY2VpbCgoZmllbGQgJiYgcmFkaXVzUmFuZ2UgPyByYWRpdXNSYW5nZVsxXSA6IHJhZGl1cykpO1xuICB9XG5cbiAgZ2V0UmFkaXVzVW5pdChmaXhlZFJhZGl1cykge1xuICAgIGNvbnN0IHJhZGl1c0NoYW5uZWwgPSBPYmplY3QudmFsdWVzKHRoaXMudmlzdWFsQ2hhbm5lbHMpLmZpbmQodmMgPT4gdmMucHJvcGVydHkgPT09ICdyYWRpdXMnKTtcblxuICAgIGlmICghcmFkaXVzQ2hhbm5lbCkge1xuICAgICAgcmV0dXJuICdwaXhlbHMnO1xuICAgIH1cblxuICAgIGNvbnN0IGZpeGVkID0gZml4ZWRSYWRpdXMgPT09IHVuZGVmaW5lZCA/IHRoaXMuY29uZmlnLnZpc0NvbmZpZy5maXhlZFJhZGl1cyA6IGZpeGVkUmFkaXVzO1xuXG4gICAgcmV0dXJuIGZpeGVkID8gJ21ldGVycycgOiAncGl4ZWxzJztcbiAgfVxuXG4gIHNob3VsZENhbGN1bGF0ZUxheWVyRGF0YShwcm9wcykge1xuICAgIHJldHVybiBwcm9wcy5zb21lKHAgPT4gIXRoaXMubm9uZUxheWVyRGF0YUFmZmVjdGluZ1Byb3BzLmluY2x1ZGVzKHApKTtcbiAgfVxuXG4gIGdldEJydXNoaW5nRXh0ZW5zaW9uUHJvcHMoaW50ZXJhY3Rpb25Db25maWcsIGJydXNoaW5nVGFyZ2V0KSB7XG4gICAgY29uc3Qge2JydXNofSA9IGludGVyYWN0aW9uQ29uZmlnO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIC8vIGJydXNoaW5nXG4gICAgICBhdXRvSGlnaGxpZ2h0OiAhYnJ1c2guZW5hYmxlZCxcbiAgICAgIGJydXNoaW5nUmFkaXVzOiBicnVzaC5jb25maWcuc2l6ZSAqIDEwMDAsXG4gICAgICBicnVzaGluZ1RhcmdldDogYnJ1c2hpbmdUYXJnZXQgfHwgJ3NvdXJjZScsXG4gICAgICBicnVzaGluZ0VuYWJsZWQ6IGJydXNoLmVuYWJsZWRcbiAgICB9O1xuICB9XG5cbiAgZ2V0RGVmYXVsdERlY2tMYXllclByb3BzKHtpZHgsIGdwdUZpbHRlciwgbWFwU3RhdGUsIHZpc2libGUsIG1hc2tQb2x5Z29ufSkge1xuICAgIGNvbnN0IG1hc2tFeHRlbnNpb25Qcm9wcyA9IGdldE1hc2tFeHRlbnNpb25Qcm9wcyhtYXNrUG9seWdvbik7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLm1hc2tFeHRlbnNpb25Qcm9wcyxcbiAgICAgIGlkOiB0aGlzLmlkLFxuICAgICAgaWR4LFxuICAgICAgY29vcmRpbmF0ZVN5c3RlbTogQ09PUkRJTkFURV9TWVNURU0uTE5HTEFULFxuICAgICAgcGlja2FibGU6IHRoaXMuaGFzSW50ZXJhY3Rpdml0eSxcbiAgICAgIHdyYXBMb25naXR1ZGU6IHRydWUsXG4gICAgICBwYXJhbWV0ZXJzOiB7ZGVwdGhUZXN0OiBCb29sZWFuKG1hcFN0YXRlLmRyYWdSb3RhdGUgfHwgdGhpcy5jb25maWcudmlzQ29uZmlnLmVuYWJsZTNkKX0sXG4gICAgICBoaWRkZW46IHRoaXMuY29uZmlnLmhpZGRlbixcbiAgICAgIHZpc2liaWxpdHlCeVpvb206IHtcbiAgICAgICAgbWluOiB0aGlzLmNvbmZpZy52aXNpYmlsaXR5Qnlab29tLm1pbixcbiAgICAgICAgbWF4OiB0aGlzLmNvbmZpZy52aXNpYmlsaXR5Qnlab29tLm1heFxuICAgICAgfSxcbiAgICAgIC8vIHZpc2NvbmZpZ1xuICAgICAgb3BhY2l0eTogdGhpcy5jb25maWcudmlzQ29uZmlnLm9wYWNpdHksXG4gICAgICBoaWdobGlnaHRDb2xvcjogdGhpcy5jb25maWcuaGlnaGxpZ2h0Q29sb3IsXG4gICAgICAvLyBkYXRhIGZpbHRlcmluZ1xuICAgICAgZXh0ZW5zaW9uczogW2RhdGFGaWx0ZXJFeHRlbnNpb24sIC4uLm1hc2tFeHRlbnNpb25Qcm9wcy5leHRlbnNpb25zXSxcbiAgICAgIGZpbHRlclJhbmdlOiBncHVGaWx0ZXIgPyBncHVGaWx0ZXIuZmlsdGVyUmFuZ2UgOiB1bmRlZmluZWQsXG4gICAgICAvLyBsYXllciBzaG91bGQgYmUgdmlzaWJsZSBhbmQgaWYgc3BsaXRNYXAsIHNob3duIGluIHRvIG9uZSBvZiBwYW5lbFxuICAgICAgdmlzaWJsZTogdGhpcy5jb25maWcuaXNWaXNpYmxlICYmIHZpc2libGVcbiAgICB9O1xuICB9XG5cbiAgZ2V0RGVmYXVsdEhvdmVyTGF5ZXJQcm9wcygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgaWQ6IGAke3RoaXMuaWR9LWhvdmVyZWRgLFxuICAgICAgcGlja2FibGU6IGZhbHNlLFxuICAgICAgd3JhcExvbmdpdHVkZTogdHJ1ZSxcbiAgICAgIGNvb3JkaW5hdGVTeXN0ZW06IENPT1JESU5BVEVfU1lTVEVNLkxOR0xBVFxuICAgIH07XG4gIH1cblxuICByZW5kZXJUZXh0TGFiZWxMYXllcih7Z2V0UG9zaXRpb24sIGdldFBpeGVsT2Zmc2V0LCB1cGRhdGVUcmlnZ2Vycywgc2hhcmVkUHJvcHN9LCByZW5kZXJPcHRzKSB7XG4gICAgY29uc3Qge2RhdGEsIG1hcFN0YXRlfSA9IHJlbmRlck9wdHM7XG4gICAgY29uc3Qge3RleHRMYWJlbH0gPSB0aGlzLmNvbmZpZztcblxuICAgIHJldHVybiBkYXRhLnRleHRMYWJlbHMucmVkdWNlKChhY2N1LCBkLCBpKSA9PiB7XG4gICAgICBpZiAoZC5nZXRUZXh0KSB7XG4gICAgICAgIGFjY3UucHVzaChcbiAgICAgICAgICBuZXcgVGV4dExheWVyKHtcbiAgICAgICAgICAgIC4uLnNoYXJlZFByb3BzLFxuICAgICAgICAgICAgaWQ6IGAke3RoaXMuaWR9LWxhYmVsLSR7dGV4dExhYmVsW2ldLmZpZWxkPy5uYW1lfWAsXG4gICAgICAgICAgICBkYXRhOiBkYXRhLmRhdGEsXG4gICAgICAgICAgICBnZXRUZXh0OiBkLmdldFRleHQsXG4gICAgICAgICAgICBnZXRQb3NpdGlvbixcbiAgICAgICAgICAgIGNoYXJhY3RlclNldDogZC5jaGFyYWN0ZXJTZXQsXG4gICAgICAgICAgICBnZXRQaXhlbE9mZnNldDogZ2V0UGl4ZWxPZmZzZXQodGV4dExhYmVsW2ldKSxcbiAgICAgICAgICAgIGdldFNpemU6IDEsXG4gICAgICAgICAgICBzaXplU2NhbGU6IHRleHRMYWJlbFtpXS5zaXplLFxuICAgICAgICAgICAgZ2V0VGV4dEFuY2hvcjogdGV4dExhYmVsW2ldLmFuY2hvcixcbiAgICAgICAgICAgIGdldEFsaWdubWVudEJhc2VsaW5lOiB0ZXh0TGFiZWxbaV0uYWxpZ25tZW50LFxuICAgICAgICAgICAgZ2V0Q29sb3I6IHRleHRMYWJlbFtpXS5jb2xvcixcbiAgICAgICAgICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgICAgICAgICAgLy8gdGV4dCB3aWxsIGFsd2F5cyBzaG93IG9uIHRvcCBvZiBhbGwgbGF5ZXJzXG4gICAgICAgICAgICAgIGRlcHRoVGVzdDogZmFsc2VcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGdldEZpbHRlclZhbHVlOiBkYXRhLmdldEZpbHRlclZhbHVlLFxuICAgICAgICAgICAgdXBkYXRlVHJpZ2dlcnM6IHtcbiAgICAgICAgICAgICAgLi4udXBkYXRlVHJpZ2dlcnMsXG4gICAgICAgICAgICAgIGdldFRleHQ6IHRleHRMYWJlbFtpXS5maWVsZD8ubmFtZSxcbiAgICAgICAgICAgICAgZ2V0UGl4ZWxPZmZzZXQ6IHtcbiAgICAgICAgICAgICAgICAuLi51cGRhdGVUcmlnZ2Vycy5nZXRSYWRpdXMsXG4gICAgICAgICAgICAgICAgbWFwU3RhdGUsXG4gICAgICAgICAgICAgICAgYW5jaG9yOiB0ZXh0TGFiZWxbaV0uYW5jaG9yLFxuICAgICAgICAgICAgICAgIGFsaWdubWVudDogdGV4dExhYmVsW2ldLmFsaWdubWVudFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBnZXRUZXh0QW5jaG9yOiB0ZXh0TGFiZWxbaV0uYW5jaG9yLFxuICAgICAgICAgICAgICBnZXRBbGlnbm1lbnRCYXNlbGluZTogdGV4dExhYmVsW2ldLmFsaWdubWVudCxcbiAgICAgICAgICAgICAgZ2V0Q29sb3I6IHRleHRMYWJlbFtpXS5jb2xvclxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICByZXR1cm4gYWNjdTtcbiAgICB9LCBbXSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGRlY2suZ2wgYEljb25MYXllcmAgXCJhdXRvUGFja1wiIG1vZGUgYWNjZXNzb3IgZm9yIGN1c3RvbSBtYXJrZXJzLlxuICAgKlxuICAgKiBAcGFyYW0geyp9IGN1c3RvbU1hcmtlcnNTdGF0dXMgUmVjb3JkPHVybCwgVXJsU3RhdHVzPiBwcm92aWRlZCBieSBidWlsZGVyLCBVcmxTdGF0dXMgYG9rYCBtZWFucyBVUkwgaXMgb2sgYW5kIHJlYWR5IHRvIHJlbmRlclxuICAgKiBAcGFyYW0geyp9IGljb25VcmxBY2Nlc3NvciBkZWNrLmdsIGFjY2Vzc29yIChvciB2YWx1ZSkgdGhhdCByZXNvbHZlcyB0byBVUkwgb2YgaWNvbiBmb3IgZ2l2ZW4gcm93XG4gICAqIEByZXR1cm5zIGRlY2suZ2wgYWNjZXNzb3IgdGhhdCByZXR1cm5zIFVucGFja2VkSWNvbiByZWFkeSB0byBjb25zdW1lIGJ5IEljb25MYXllclxuICAgKi9cbiAgZ2V0Q3VzdG9tTWFya2VySWNvbkFjY2Vzc29yKGN1c3RvbU1hcmtlcnNTdGF0dXMsIGljb25VcmxBY2Nlc3NvciwgbWFzayA9IHRydWUpIHtcbiAgICBjb25zdCBtYXhJY29uU2l6ZSA9IHRoaXMuZ2V0TWF4TWFya2VyU2l6ZSgpO1xuXG4gICAgcmV0dXJuIGQgPT4ge1xuICAgICAgY29uc3Qgd2FudGVkVXJsID1cbiAgICAgICAgKHR5cGVvZiBpY29uVXJsQWNjZXNzb3IgPT09ICdmdW5jdGlvbicpID8gaWNvblVybEFjY2Vzc29yKGQpIDogaWNvblVybEFjY2Vzc29yO1xuICAgICAgY29uc3QgdXJsID0gY3VzdG9tTWFya2Vyc1N0YXR1cz8uW3dhbnRlZFVybF0gPT09ICdvaycgPyB3YW50ZWRVcmwgOiBGQUxMQkFDS19JQ09OO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgaWQ6IGAke3VybH1AQCR7bWF4SWNvblNpemV9YCxcbiAgICAgICAgdXJsLFxuICAgICAgICB3aWR0aDogbWF4SWNvblNpemUsXG4gICAgICAgIGhlaWdodDogbWF4SWNvblNpemUsXG4gICAgICAgIG1hc2tcbiAgICAgIH07XG4gICAgfTtcbiAgfVxuXG4gIGNhbGN1bGF0ZURhdGFBdHRyaWJ1dGUoa2VwbGVyVGFibGUsIGdldFBvc2l0aW9uKSB7XG4gICAgLy8gaW1wbGVtZW50ZWQgaW4gc3ViY2xhc3Nlc1xuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIHVwZGF0ZUxheWVyTWV0YShkYXRhQ29udGFpbmVyLCBnZXRQb3NpdGlvbikge1xuICAgIC8vIGltcGxlbWVudGVkIGluIHN1YmNsYXNzZXNcbiAgfVxuXG4gIGdldFBvc2l0aW9uQWNjZXNzb3IoZGF0YUNvbnRhaW5lcikge1xuICAgIC8vIGltcGxlbWVudGVkIGluIHN1YmNsYXNzZXNcbiAgICByZXR1cm4gKCkgPT4gbnVsbDtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBMYXllcjtcbiJdfQ==
|
|
@@ -313,7 +313,7 @@ var PointLayer = /*#__PURE__*/function (_Layer) {
|
|
|
313
313
|
var _objectInfo$layer, _objectInfo$layer$pro, _objectInfo$layer2, _objectInfo$layer2$pr;
|
|
314
314
|
|
|
315
315
|
return (objectInfo === null || objectInfo === void 0 ? void 0 : objectInfo.picked) && (objectInfo === null || objectInfo === void 0 ? void 0 : (_objectInfo$layer = objectInfo.layer) === null || _objectInfo$layer === void 0 ? void 0 : (_objectInfo$layer$pro = _objectInfo$layer.props) === null || _objectInfo$layer$pro === void 0 ? void 0 : _objectInfo$layer$pro.id) === this.id || (objectInfo === null || objectInfo === void 0 ? void 0 : (_objectInfo$layer2 = objectInfo.layer) === null || _objectInfo$layer2 === void 0 ? void 0 : (_objectInfo$layer2$pr = _objectInfo$layer2.props) === null || _objectInfo$layer2$pr === void 0 ? void 0 : _objectInfo$layer2$pr.id) === "".concat(this.id, "-icon");
|
|
316
|
-
} // eslint-disable-next-line complexity
|
|
316
|
+
} // eslint-disable-next-line complexity, max-statements
|
|
317
317
|
|
|
318
318
|
}, {
|
|
319
319
|
key: "renderLayer",
|
|
@@ -373,9 +373,9 @@ var PointLayer = /*#__PURE__*/function (_Layer) {
|
|
|
373
373
|
|
|
374
374
|
if (customMarkersConfigured) {
|
|
375
375
|
var maxIconSize = this.getMaxMarkerSize();
|
|
376
|
-
var
|
|
376
|
+
var useMask = Boolean(this.config.visConfig.filled);
|
|
377
377
|
var iconLayerProps = {
|
|
378
|
-
getIcon:
|
|
378
|
+
getIcon: this.getCustomMarkerIconAccessor(customMarkersStatus, data.getIconUrl, useMask),
|
|
379
379
|
getPosition: data.getPosition,
|
|
380
380
|
getSize: data.getRadius,
|
|
381
381
|
getAngle: (0, _layerUtils.negateAccessor)(data.getRotation),
|
|
@@ -392,6 +392,11 @@ var PointLayer = /*#__PURE__*/function (_Layer) {
|
|
|
392
392
|
}
|
|
393
393
|
}
|
|
394
394
|
};
|
|
395
|
+
|
|
396
|
+
if (useMask) {
|
|
397
|
+
iconLayerProps.getIconColor = this.config.visConfig.filled ? data.getFillColor : _defaultSettings.UNKNOWN_COLOR;
|
|
398
|
+
}
|
|
399
|
+
|
|
395
400
|
return [new _layers.IconLayer(_objectSpread(_objectSpread(_objectSpread({}, commonLayerProps), iconLayerProps), {}, {
|
|
396
401
|
id: "".concat(defaultLayerProps.id, "-icon"),
|
|
397
402
|
data: data.data,
|
|
@@ -400,7 +405,7 @@ var PointLayer = /*#__PURE__*/function (_Layer) {
|
|
|
400
405
|
updateTriggers: {
|
|
401
406
|
getFilterValue: updateTriggers.getFilterValue,
|
|
402
407
|
getColor: [updateTriggers.getFillColor, this.config.visConfig.filled],
|
|
403
|
-
getIcon: [updateTriggers.getIconUrl, maxIconSize, customMarkersStatus],
|
|
408
|
+
getIcon: [updateTriggers.getIconUrl, maxIconSize, customMarkersStatus, useMask],
|
|
404
409
|
getSize: updateTriggers.getRadius,
|
|
405
410
|
getAngle: updateTriggers.getRotation
|
|
406
411
|
}
|
|
@@ -478,4 +483,4 @@ var PointLayer = /*#__PURE__*/function (_Layer) {
|
|
|
478
483
|
}(_baseLayer["default"]);
|
|
479
484
|
|
|
480
485
|
exports["default"] = PointLayer;
|
|
481
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9sYXllcnMvcG9pbnQtbGF5ZXIvcG9pbnQtbGF5ZXIuanMiXSwibmFtZXMiOlsicG9pbnRQb3NBY2Nlc3NvciIsImxhdCIsImxuZyIsImFsdGl0dWRlIiwiZGMiLCJkIiwidmFsdWVBdCIsImluZGV4IiwiZmllbGRJZHgiLCJwb2ludFJlcXVpcmVkQ29sdW1ucyIsInBvaW50T3B0aW9uYWxDb2x1bW5zIiwiYnJ1c2hpbmdFeHRlbnNpb24iLCJCcnVzaGluZ0V4dGVuc2lvbiIsInBvaW50VmlzQ29uZmlncyIsInJhZGl1cyIsImZpeGVkUmFkaXVzIiwiY3VzdG9tTWFya2VycyIsImN1c3RvbU1hcmtlcnNVcmwiLCJjdXN0b21NYXJrZXJzUmFuZ2UiLCJvcGFjaXR5Iiwib3V0bGluZSIsInRoaWNrbmVzcyIsInN0cm9rZUNvbG9yIiwiY29sb3JSYW5nZSIsInN0cm9rZUNvbG9yUmFuZ2UiLCJyYWRpdXNSYW5nZSIsImZpbGxlZCIsInR5cGUiLCJsYWJlbCIsImRlZmF1bHRWYWx1ZSIsInByb3BlcnR5IiwiUG9pbnRMYXllciIsInByb3BzIiwicmVnaXN0ZXJWaXNDb25maWciLCJnZXRQb3NpdGlvbkFjY2Vzc29yIiwiZGF0YUNvbnRhaW5lciIsImNvbmZpZyIsImNvbHVtbnMiLCJQb2ludExheWVySWNvbiIsImRlZmF1bHRQb2ludENvbHVtblBhaXJzIiwiY29sb3IiLCJhY2Nlc3NvciIsImNvbmRpdGlvbiIsInZpc0NvbmZpZyIsImtleSIsImZpZWxkIiwic2NhbGUiLCJkb21haW4iLCJyYW5nZSIsImNoYW5uZWxTY2FsZVR5cGUiLCJDSEFOTkVMX1NDQUxFUyIsInNpemUiLCJmaXhlZCIsImN1c3RvbU1hcmtlciIsInN1cHBvcnRlZEZpZWxkVHlwZXMiLCJyb3RhdGlvbiIsImlkZW50aXR5IiwibnVsbFZhbHVlIiwicm90YXRpb25GaWVsZCIsImRhdGFzZXQiLCJkZWZhdWx0Q29sb3JGaWVsZCIsInVwZGF0ZUxheWVyQ29uZmlnIiwiY29sb3JGaWVsZCIsInVwZGF0ZUxheWVyVmlzdWFsQ2hhbm5lbCIsInN0cm9rZUNvbG9yRmllbGQiLCJzdHJva2VDb2xvckRvbWFpbiIsInN0cm9rZUNvbG9yU2NhbGUiLCJjdXN0b21NYXJrZXJzRmllbGQiLCJjdXN0b21NYXJrZXJzU2NhbGUiLCJnZXRQb3NpdGlvbiIsImZpbHRlcmVkSW5kZXgiLCJkYXRhIiwiaSIsImxlbmd0aCIsInBvcyIsImV2ZXJ5IiwiTnVtYmVyIiwiaXNGaW5pdGUiLCJwdXNoIiwicG9zaXRpb24iLCJkYXRhc2V0cyIsIm9sZExheWVyRGF0YSIsInRleHRMYWJlbCIsImRhdGFJZCIsImdwdUZpbHRlciIsInVwZGF0ZURhdGEiLCJ0cmlnZ2VyQ2hhbmdlZCIsInRleHRMYWJlbHMiLCJhY2Nlc3NvcnMiLCJnZXRBdHRyaWJ1dGVBY2Nlc3NvcnMiLCJnZXRGaWx0ZXJWYWx1ZSIsImZpbHRlclZhbHVlQWNjZXNzb3IiLCJib3VuZHMiLCJnZXRQb2ludHNCb3VuZHMiLCJ1cGRhdGVNZXRhIiwib2JqZWN0SW5mbyIsInBpY2tlZCIsImxheWVyIiwiaWQiLCJvcHRzIiwib2JqZWN0SG92ZXJlZCIsIm1hcFN0YXRlIiwiaW50ZXJhY3Rpb25Db25maWciLCJjdXN0b21NYXJrZXJzU3RhdHVzIiwiQm9vbGVhbiIsInNpemVGaWVsZCIsInJhZGl1c1NjYWxlIiwiZ2V0UmFkaXVzU2NhbGUiLCJyYWRpdXNVbml0cyIsImdldFJhZGl1c1VuaXQiLCJ1cGRhdGVUcmlnZ2VycyIsImZpbHRlclZhbHVlVXBkYXRlVHJpZ2dlcnMiLCJnZXRWaXN1YWxDaGFubmVsVXBkYXRlVHJpZ2dlcnMiLCJkZWZhdWx0TGF5ZXJQcm9wcyIsImdldERlZmF1bHREZWNrTGF5ZXJQcm9wcyIsImJydXNoaW5nUHJvcHMiLCJnZXRCcnVzaGluZ0V4dGVuc2lvblByb3BzIiwiZ2V0UGl4ZWxPZmZzZXQiLCJnZXRSYWRpdXMiLCJleHRlbnNpb25zIiwic2hhcmVkUHJvcHMiLCJmaWx0ZXJSYW5nZSIsInZpc2libGUiLCJob3ZlcmVkT2JqZWN0IiwiaGFzSG92ZXJlZE9iamVjdCIsInRleHRMYWJlbExheWVyIiwicmVuZGVyVGV4dExhYmVsTGF5ZXIiLCJjb21tb25MYXllclByb3BzIiwicGFyYW1ldGVycyIsImRlcHRoVGVzdCIsImN1c3RvbU1hcmtlcnNDb25maWd1cmVkIiwiY3VzdG9tTWFya2Vyc01pc0NvbmZpZ3VyZWQiLCJtYXhJY29uU2l6ZSIsImdldE1heE1hcmtlclNpemUiLCJnZXRJY29uIiwiZ2V0Q3VzdG9tTWFya2VySWNvbkFjY2Vzc29yIiwiZ2V0SWNvblVybCIsImljb25MYXllclByb3BzIiwiZ2V0U2l6ZSIsImdldEFuZ2xlIiwiZ2V0Um90YXRpb24iLCJzaXplU2NhbGUiLCJzaXplVW5pdHMiLCJsb2FkT3B0aW9ucyIsImltYWdlIiwiaW1hZ2ViaXRtYXAiLCJyZXNpemVXaWR0aCIsInJlc2l6ZUhlaWdodCIsInJlc2l6ZVF1YWxpdHkiLCJJY29uTGF5ZXIiLCJnZXRDb2xvciIsImdldEZpbGxDb2xvciIsIlVOS05PV05fQ09MT1IiLCJnZXREZWZhdWx0SG92ZXJMYXllclByb3BzIiwiaGlnaGxpZ2h0Q29sb3IiLCJzY2F0dGVyUGxvdExheWVyUHJvcHMiLCJzdHJva2VkIiwibGluZVdpZHRoU2NhbGUiLCJyYWRpdXNNYXhQaXhlbHMiLCJTY2F0dGVycGxvdExheWVyIiwibGluZVdpZHRoVW5pdHMiLCJnZXRMaW5lQ29sb3IiLCJmaWVsZFBhaXJzIiwiZm9yRWFjaCIsInBhaXIiLCJsYXRGaWVsZCIsImxuZ0ZpZWxkIiwibGF5ZXJOYW1lIiwiZGVmYXVsdE5hbWUiLCJwcm9wIiwidmFsdWUiLCJERUZBVUxUX0xBWUVSX0NPTE9SIiwiaXNWaXNpYmxlIiwib3B0aW9uYWwiLCJMYXllciJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQW9CQTs7QUFDQTs7QUFHQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFQTs7Ozs7Ozs7OztBQUVPLElBQU1BLGdCQUFn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SUFBUjtBQUFjbEssWUFBQUEsUUFBUSxFQUFFLENBQUMsQ0FBekI7QUFBNEJxSyxZQUFBQSxRQUFRLEVBQUU7QUFBdEM7QUFIRyxTQUFmO0FBTUE3SSxRQUFBQSxLQUFLLENBQUM4QyxJQUFOLENBQVcyRixJQUFYO0FBQ0QsT0ExQkQ7QUE0QkEsYUFBTztBQUFDekksUUFBQUEsS0FBSyxFQUFMQTtBQUFELE9BQVA7QUFDRDs7O0VBM0lxQzhJLHFCIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSAyMDIyIFViZXIgVGVjaG5vbG9naWVzLCBJbmMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuLy8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuLy8gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4vLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuLy8gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbi8vIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbi8vIFRIRSBTT0ZUV0FSRS5cblxuaW1wb3J0IHtCcnVzaGluZ0V4dGVuc2lvbn0gZnJvbSAnQGRlY2suZ2wvZXh0ZW5zaW9ucyc7XG5pbXBvcnQge1NjYXR0ZXJwbG90TGF5ZXJ9IGZyb20gJ0BkZWNrLmdsL2xheWVycyc7XG5pbXBvcnQge0ljb25MYXllcn0gZnJvbSAnQGRlY2suZ2wvbGF5ZXJzJztcblxuaW1wb3J0IExheWVyIGZyb20gJy4uL2Jhc2UtbGF5ZXInO1xuaW1wb3J0IHtoZXhUb1JnYn0gZnJvbSAndXRpbHMvY29sb3ItdXRpbHMnO1xuaW1wb3J0IHtuZWdhdGVBY2Nlc3Nvcn0gZnJvbSAndXRpbHMvbGF5ZXItdXRpbHMnO1xuaW1wb3J0IHtmaW5kRGVmYXVsdENvbG9yRmllbGR9IGZyb20gJ3V0aWxzL2RhdGFzZXQtdXRpbHMnO1xuaW1wb3J0IFBvaW50TGF5ZXJJY29uIGZyb20gJy4vcG9pbnQtbGF5ZXItaWNvbic7XG5pbXBvcnQge0RFRkFVTFRfTEFZRVJfQ09MT1IsIENIQU5ORUxfU0NBTEVTLCBVTktOT1dOX0NPTE9SfSBmcm9tICdjb25zdGFudHMvZGVmYXVsdC1zZXR0aW5ncyc7XG5cbmltcG9ydCB7Z2V0VGV4dE9mZnNldEJ5UmFkaXVzLCBmb3JtYXRUZXh0TGFiZWxEYXRhfSBmcm9tICcuLi9sYXllci10ZXh0LWxhYmVsJztcblxuZXhwb3J0IGNvbnN0IHBvaW50UG9zQWNjZXNzb3IgPSAoe2xhdCwgbG5nLCBhbHRpdHVkZX0pID0+IGRjID0+IGQgPT4gW1xuICBkYy52YWx1ZUF0KGQuaW5kZXgsIGxuZy5maWVsZElkeCksXG4gIGRjLnZhbHVlQXQoZC5pbmRleCwgbGF0LmZpZWxkSWR4KSxcbiAgYWx0aXR1ZGUgJiYgYWx0aXR1ZGUuZmllbGRJZHggPiAtMSA/IGRjLnZhbHVlQXQoZC5pbmRleCwgYWx0aXR1ZGUuZmllbGRJZHgpIDogMFxuXTtcblxuZXhwb3J0IGNvbnN0IHBvaW50UmVxdWlyZWRDb2x1bW5zID0gWydsYXQnLCAnbG5nJ107XG5leHBvcnQgY29uc3QgcG9pbnRPcHRpb25hbENvbHVtbnMgPSBbJ2FsdGl0dWRlJ107XG5cbmNvbnN0IGJydXNoaW5nRXh0ZW5zaW9uID0gbmV3IEJydXNoaW5nRXh0ZW5zaW9uKCk7XG5cbmV4cG9ydCBjb25zdCBwb2ludFZpc0NvbmZpZ3MgPSB7XG4gIHJhZGl1czogJ3JhZGl1cycsXG4gIGZpeGVkUmFkaXVzOiAnZml4ZWRSYWRpdXMnLFxuICBjdXN0b21NYXJrZXJzOiAnY3VzdG9tTWFya2VycycsXG4gIGN1c3RvbU1hcmtlcnNVcmw6ICdjdXN0b21NYXJrZXJzVXJsJyxcbiAgY3VzdG9tTWFya2Vyc1JhbmdlOiAnY3VzdG9tTWFya2Vyc1JhbmdlJyxcbiAgb3BhY2l0eTogJ29wYWNpdHknLFxuICBvdXRsaW5lOiAnb3V0bGluZScsXG4gIHRoaWNrbmVzczogJ3RoaWNrbmVzcycsXG4gIHN0cm9rZUNvbG9yOiAnc3Ryb2tlQ29sb3InLFxuICBjb2xvclJhbmdlOiAnY29sb3JSYW5nZScsXG4gIHN0cm9rZUNvbG9yUmFuZ2U6ICdzdHJva2VDb2xvclJhbmdlJyxcbiAgcmFkaXVzUmFuZ2U6ICdyYWRpdXNSYW5nZScsXG4gIGZpbGxlZDoge1xuICAgIHR5cGU6ICdib29sZWFuJyxcbiAgICBsYWJlbDogJ2xheWVyLmZpbGxDb2xvcicsXG4gICAgZGVmYXVsdFZhbHVlOiB0cnVlLFxuICAgIHByb3BlcnR5OiAnZmlsbGVkJ1xuICB9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBQb2ludExheWVyIGV4dGVuZHMgTGF5ZXIge1xuICBjb25zdHJ1Y3Rvcihwcm9wcykge1xuICAgIHN1cGVyKHByb3BzKTtcblxuICAgIHRoaXMucmVnaXN0ZXJWaXNDb25maWcocG9pbnRWaXNDb25maWdzKTtcbiAgICB0aGlzLmdldFBvc2l0aW9uQWNjZXNzb3IgPSBkYXRhQ29udGFpbmVyID0+XG4gICAgICBwb2ludFBvc0FjY2Vzc29yKHRoaXMuY29uZmlnLmNvbHVtbnMpKGRhdGFDb250YWluZXIpO1xuICB9XG5cbiAgZ2V0IHR5cGUoKSB7XG4gICAgcmV0dXJuICdwb2ludCc7XG4gIH1cblxuICBnZXQgaXNBZ2dyZWdhdGVkKCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGdldCBsYXllckljb24oKSB7XG4gICAgcmV0dXJuIFBvaW50TGF5ZXJJY29uO1xuICB9XG4gIGdldCByZXF1aXJlZExheWVyQ29sdW1ucygpIHtcbiAgICByZXR1cm4gcG9pbnRSZXF1aXJlZENvbHVtbnM7XG4gIH1cblxuICBnZXQgb3B0aW9uYWxDb2x1bW5zKCkge1xuICAgIHJldHVybiBwb2ludE9wdGlvbmFsQ29sdW1ucztcbiAgfVxuXG4gIGdldCBjb2x1bW5QYWlycygpIHtcbiAgICByZXR1cm4gdGhpcy5kZWZhdWx0UG9pbnRDb2x1bW5QYWlycztcbiAgfVxuXG4gIGdldCBub25lTGF5ZXJEYXRhQWZmZWN0aW5nUHJvcHMoKSB7XG4gICAgcmV0dXJuIFsuLi5zdXBlci5ub25lTGF5ZXJEYXRhQWZmZWN0aW5nUHJvcHMsICdyYWRpdXMnXTtcbiAgfVxuXG4gIGdldCB2aXN1YWxDaGFubmVscygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgY29sb3I6IHtcbiAgICAgICAgLi4uc3VwZXIudmlzdWFsQ2hhbm5lbHMuY29sb3IsXG4gICAgICAgIGFjY2Vzc29yOiAnZ2V0RmlsbENvbG9yJyxcbiAgICAgICAgY29uZGl0aW9uOiBjb25maWcgPT4gY29uZmlnLnZpc0NvbmZpZy5maWxsZWQsXG4gICAgICAgIGRlZmF1bHRWYWx1ZTogY29uZmlnID0+IGNvbmZpZy5jb2xvclxuICAgICAgfSxcbiAgICAgIHN0cm9rZUNvbG9yOiB7XG4gICAgICAgIHByb3BlcnR5OiAnc3Ryb2tlQ29sb3InLFxuICAgICAgICBrZXk6ICdzdHJva2VDb2xvcicsXG4gICAgICAgIGZpZWxkOiAnc3Ryb2tlQ29sb3JGaWVsZCcsXG4gICAgICAgIHNjYWxlOiAnc3Ryb2tlQ29sb3JTY2FsZScsXG4gICAgICAgIGRvbWFpbjogJ3N0cm9rZUNvbG9yRG9tYWluJyxcbiAgICAgICAgcmFuZ2U6ICdzdHJva2VDb2xvclJhbmdlJyxcbiAgICAgICAgY2hhbm5lbFNjYWxlVHlwZTogQ0hBTk5FTF9TQ0FMRVMuY29sb3IsXG4gICAgICAgIGFjY2Vzc29yOiAnZ2V0TGluZUNvbG9yJyxcbiAgICAgICAgY29uZGl0aW9uOiBjb25maWcgPT4gY29uZmlnLnZpc0NvbmZpZy5vdXRsaW5lLFxuICAgICAgICBkZWZhdWx0VmFsdWU6IGNvbmZpZyA9PiBjb25maWcudmlzQ29uZmlnLnN0cm9rZUNvbG9yIHx8IGNvbmZpZy5jb2xvclxuICAgICAgfSxcbiAgICAgIHNpemU6IHtcbiAgICAgICAgLi4uc3VwZXIudmlzdWFsQ2hhbm5lbHMuc2l6ZSxcbiAgICAgICAgcHJvcGVydHk6ICdyYWRpdXMnLFxuICAgICAgICByYW5nZTogJ3JhZGl1c1JhbmdlJyxcbiAgICAgICAgZml4ZWQ6ICdmaXhlZFJhZGl1cycsXG4gICAgICAgIGNoYW5uZWxTY2FsZVR5cGU6ICdyYWRpdXMnLFxuICAgICAgICBhY2Nlc3NvcjogJ2dldFJhZGl1cycsXG4gICAgICAgIGRlZmF1bHRWYWx1ZTogMVxuICAgICAgfSxcbiAgICAgIGN1c3RvbU1hcmtlcnM6IHtcbiAgICAgICAgcHJvcGVydHk6ICdjdXN0b21NYXJrZXJzJyxcbiAgICAgICAga2V5OiAnY3VzdG9tTWFya2VycycsXG4gICAgICAgIGZpZWxkOiAnY3VzdG9tTWFya2Vyc0ZpZWxkJyxcbiAgICAgICAgc2NhbGU6ICdjdXN0b21NYXJrZXJzU2NhbGUnLFxuICAgICAgICBkb21haW46ICdjdXN0b21NYXJrZXJzRG9tYWluJyxcbiAgICAgICAgcmFuZ2U6ICdjdXN0b21NYXJrZXJzUmFuZ2UnLFxuICAgICAgICBmaXhlZDogJ2N1c3RvbU1hcmtlcnNVcmwnLFxuICAgICAgICBjaGFubmVsU2NhbGVUeXBlOiBDSEFOTkVMX1NDQUxFUy5jdXN0b21NYXJrZXIsXG4gICAgICAgIGFjY2Vzc29yOiAnZ2V0SWNvblVybCcsXG4gICAgICAgIHN1cHBvcnRlZEZpZWxkVHlwZXM6IFsnc3RyaW5nJ10sXG4gICAgICAgIGRlZmF1bHRWYWx1ZTogY29uZmlnID0+IGNvbmZpZy52aXNDb25maWcuY3VzdG9tTWFya2Vyc1VybCxcbiAgICAgICAgY29uZGl0aW9uOiBjb25maWcgPT4gY29uZmlnLnZpc0NvbmZpZy5jdXN0b21NYXJrZXJzXG4gICAgICB9LFxuICAgICAgcm90YXRpb246IHtcbiAgICAgICAgcHJvcGVydHk6ICdyb3RhdGlvbicsXG4gICAgICAgIGtleTogJ3JvdGF0aW9uJyxcbiAgICAgICAgZmllbGQ6ICdyb3RhdGlvbkZpZWxkJyxcbiAgICAgICAgY2hhbm5lbFNjYWxlVHlwZTogQ0hBTk5FTF9TQ0FMRVMuaWRlbnRpdHksXG4gICAgICAgIGFjY2Vzc29yOiAnZ2V0Um90YXRpb24nLFxuICAgICAgICBzdXBwb3J0ZWRGaWVsZFR5cGVzOiBbJ2Zsb2F0JywgJ2ludGVnZXInLCAncmVhbCcsICdudW1iZXInXSxcbiAgICAgICAgZGVmYXVsdFZhbHVlOiAoKSA9PiAwLFxuICAgICAgICBudWxsVmFsdWU6IDAsXG4gICAgICAgIGNvbmRpdGlvbjogY29uZmlnID0+IGNvbmZpZy5yb3RhdGlvbkZpZWxkXG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIHNldEluaXRpYWxMYXllckNvbmZpZyhkYXRhc2V0KSB7XG4gICAgY29uc3QgZGVmYXVsdENvbG9yRmllbGQgPSBmaW5kRGVmYXVsdENvbG9yRmllbGQoZGF0YXNldCk7XG5cbiAgICBpZiAoZGVmYXVsdENvbG9yRmllbGQpIHtcbiAgICAgIHRoaXMudXBkYXRlTGF5ZXJDb25maWcoe1xuICAgICAgICBjb2xvckZpZWxkOiBkZWZhdWx0Q29sb3JGaWVsZFxuICAgICAgfSk7XG4gICAgICB0aGlzLnVwZGF0ZUxheWVyVmlzdWFsQ2hhbm5lbChkYXRhc2V0LCAnY29sb3InKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHN0YXRpYyBmaW5kRGVmYXVsdExheWVyUHJvcHMoe2ZpZWxkUGFpcnMgPSBbXX0pIHtcbiAgICBjb25zdCBwcm9wcyA9IFtdO1xuXG4gICAgLy8gTWFrZSBsYXllciBmb3IgZWFjaCBwYWlyXG4gICAgZmllbGRQYWlycy5mb3JFYWNoKHBhaXIgPT4ge1xuICAgICAgY29uc3QgbGF0RmllbGQgPSBwYWlyLnBhaXIubGF0O1xuICAgICAgY29uc3QgbG5nRmllbGQgPSBwYWlyLnBhaXIubG5nO1xuICAgICAgY29uc3QgbGF5ZXJOYW1lID0gcGFpci5kZWZhdWx0TmFtZTtcblxuICAgICAgY29uc3QgcHJvcCA9IHtcbiAgICAgICAgbGFiZWw6IGxheWVyTmFtZS5sZW5ndGggPyBsYXllck5hbWUgOiAnUG9pbnQnXG4gICAgICB9O1xuXG4gICAgICAvLyBkZWZhdWx0IGxheWVyIGNvbG9yIGZvciBiZWdpbnRyaXAgYW5kIGRyb3BvZmYgcG9pbnRcbiAgICAgIGlmIChsYXRGaWVsZC52YWx1ZSBpbiBERUZBVUxUX0xBWUVSX0NPTE9SKSB7XG4gICAgICAgIHByb3AuY29sb3IgPSBoZXhUb1JnYihERUZBVUxUX0xBWUVSX0NPTE9SW2xhdEZpZWxkLnZhbHVlXSk7XG4gICAgICB9XG5cbiAgICAgIC8vIHNldCB0aGUgZmlyc3QgbGF5ZXIgdG8gYmUgdmlzaWJsZVxuICAgICAgaWYgKHByb3BzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICBwcm9wLmlzVmlzaWJsZSA9IHRydWU7XG4gICAgICB9XG5cbiAgICAgIHByb3AuY29sdW1ucyA9IHtcbiAgICAgICAgbGF0OiBsYXRGaWVsZCxcbiAgICAgICAgbG5nOiBsbmdGaWVsZCxcbiAgICAgICAgYWx0aXR1ZGU6IHt2YWx1ZTogbnVsbCwgZmllbGRJZHg6IC0xLCBvcHRpb25hbDogdHJ1ZX1cbiAgICAgIH07XG5cbiAgICAgIHByb3BzLnB1c2gocHJvcCk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4ge3Byb3BzfTtcbiAgfVxuXG4gIGdldERlZmF1bHRMYXllckNvbmZpZyhwcm9wcyA9IHt9KSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnN1cGVyLmdldERlZmF1bHRMYXllckNvbmZpZyhwcm9wcyksXG5cbiAgICAgIC8vIGFkZCBzdHJva2UgY29sb3IgdmlzdWFsIGNoYW5uZWxcbiAgICAgIHN0cm9rZUNvbG9yRmllbGQ6IG51bGwsXG4gICAgICBzdHJva2VDb2xvckRvbWFpbjogWzAsIDFdLFxuICAgICAgc3Ryb2tlQ29sb3JTY2FsZTogJ3F1YW50aWxlJyxcblxuICAgICAgY3VzdG9tTWFya2Vyc0ZpZWxkOiBudWxsLFxuICAgICAgY3VzdG9tTWFya2Vyc1NjYWxlOiAnb3JkaW5hbCdcbiAgICB9O1xuICB9XG5cbiAgY2FsY3VsYXRlRGF0YUF0dHJpYnV0ZSh7ZmlsdGVyZWRJbmRleH0sIGdldFBvc2l0aW9uKSB7XG4gICAgY29uc3QgZGF0YSA9IFtdO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBmaWx0ZXJlZEluZGV4Lmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCBpbmRleCA9IGZpbHRlcmVkSW5kZXhbaV07XG4gICAgICBjb25zdCBwb3MgPSBnZXRQb3NpdGlvbih7aW5kZXh9KTtcblxuICAgICAgLy8gaWYgZG9lc24ndCBoYXZlIHBvaW50IGxhdCBvciBsbmcsIGRvIG5vdCBhZGQgdGhlIHBvaW50XG4gICAgICAvLyBkZWNrLmdsIGNhbid0IGhhbmRsZSBwb3NpdGlvbiA9IG51bGxcbiAgICAgIGlmIChwb3MuZXZlcnkoTnVtYmVyLmlzRmluaXRlKSkge1xuICAgICAgICBkYXRhLnB1c2goe1xuICAgICAgICAgIHBvc2l0aW9uOiBwb3MsXG4gICAgICAgICAgaW5kZXhcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBkYXRhO1xuICB9XG5cbiAgZm9ybWF0TGF5ZXJEYXRhKGRhdGFzZXRzLCBvbGRMYXllckRhdGEpIHtcbiAgICBjb25zdCB7dGV4dExhYmVsfSA9IHRoaXMuY29uZmlnO1xuICAgIGNvbnN0IHtncHVGaWx0ZXIsIGRhdGFDb250YWluZXJ9ID0gZGF0YXNldHNbdGhpcy5jb25maWcuZGF0YUlkXTtcbiAgICBjb25zdCB7ZGF0YSwgdHJpZ2dlckNoYW5nZWR9ID0gdGhpcy51cGRhdGVEYXRhKGRhdGFzZXRzLCBvbGRMYXllckRhdGEpO1xuICAgIGNvbnN0IGdldFBvc2l0aW9uID0gdGhpcy5nZXRQb3NpdGlvbkFjY2Vzc29yKGRhdGFDb250YWluZXIpO1xuXG4gICAgLy8gZ2V0IGFsbCBkaXN0aW5jdCBjaGFyYWN0ZXJzIGluIHRoZSB0ZXh0IGxhYmVsc1xuICAgIGNvbnN0IHRleHRMYWJlbHMgPSBmb3JtYXRUZXh0TGFiZWxEYXRhKHtcbiAgICAgIHRleHRMYWJlbCxcbiAgICAgIHRyaWdnZXJDaGFuZ2VkLFxuICAgICAgb2xkTGF5ZXJEYXRhLFxuICAgICAgZGF0YSxcbiAgICAgIGRhdGFDb250YWluZXJcbiAgICB9KTtcblxuICAgIGNvbnN0IGFjY2Vzc29ycyA9IHRoaXMuZ2V0QXR0cmlidXRlQWNjZXNzb3JzKHtkYXRhQ29udGFpbmVyfSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgZGF0YSxcbiAgICAgIGdldFBvc2l0aW9uLFxuICAgICAgZ2V0RmlsdGVyVmFsdWU6IGdwdUZpbHRlci5maWx0ZXJWYWx1ZUFjY2Vzc29yKGRhdGFDb250YWluZXIpKCksXG4gICAgICB0ZXh0TGFiZWxzLFxuICAgICAgLi4uYWNjZXNzb3JzXG4gICAgfTtcbiAgfVxuICAvKiBlc2xpbnQtZW5hYmxlIGNvbXBsZXhpdHkgKi9cblxuICB1cGRhdGVMYXllck1ldGEoZGF0YUNvbnRhaW5lcikge1xuICAgIGNvbnN0IGdldFBvc2l0aW9uID0gdGhpcy5nZXRQb3NpdGlvbkFjY2Vzc29yKGRhdGFDb250YWluZXIpO1xuICAgIGNvbnN0IGJvdW5kcyA9IHRoaXMuZ2V0UG9pbnRzQm91bmRzKGRhdGFDb250YWluZXIsIGdldFBvc2l0aW9uKTtcbiAgICB0aGlzLnVwZGF0ZU1ldGEoe2JvdW5kc30pO1xuICB9XG5cbiAgaXNMYXllckhvdmVyZWQob2JqZWN0SW5mbykge1xuICAgIHJldHVybiAoXG4gICAgICAob2JqZWN0SW5mbz8ucGlja2VkICYmIG9iamVjdEluZm8/LmxheWVyPy5wcm9wcz8uaWQgPT09IHRoaXMuaWQpIHx8XG4gICAgICBvYmplY3RJbmZvPy5sYXllcj8ucHJvcHM/LmlkID09PSBgJHt0aGlzLmlkfS1pY29uYFxuICAgICk7XG4gIH1cblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgY29tcGxleGl0eVxuICByZW5kZXJMYXllcihvcHRzKSB7XG4gICAgY29uc3Qge2RhdGEsIGdwdUZpbHRlciwgb2JqZWN0SG92ZXJlZCwgbWFwU3RhdGUsIGludGVyYWN0aW9uQ29uZmlnLCBjdXN0b21NYXJrZXJzU3RhdHVzfSA9IG9wdHM7XG5cbiAgICAvLyBpZiBubyBmaWVsZCBzaXplIGlzIGRlZmluZWQgd2UgbmVlZCB0byBwYXNzIGZpeGVkIHJhZGl1cyA9IGZhbHNlXG4gICAgY29uc3QgZml4ZWRSYWRpdXMgPSB0aGlzLmNvbmZpZy52aXNDb25maWcuZml4ZWRSYWRpdXMgJiYgQm9vbGVhbih0aGlzLmNvbmZpZy5zaXplRmllbGQpO1xuICAgIGNvbnN0IHJhZGl1c1NjYWxlID0gdGhpcy5nZXRSYWRpdXNTY2FsZShmaXhlZFJhZGl1cyk7XG4gICAgY29uc3QgcmFkaXVzVW5pdHMgPSB0aGlzLmdldFJhZGl1c1VuaXQoZml4ZWRSYWRpdXMpO1xuXG4gICAgY29uc3QgdXBkYXRlVHJpZ2dlcnMgPSB7XG4gICAgICBnZXRQb3NpdGlvbjogdGhpcy5jb25maWcuY29sdW1ucyxcbiAgICAgIGdldEZpbHRlclZhbHVlOiBncHVGaWx0ZXIuZmlsdGVyVmFsdWVVcGRhdGVUcmlnZ2VycyxcbiAgICAgIC4uLnRoaXMuZ2V0VmlzdWFsQ2hhbm5lbFVwZGF0ZVRyaWdnZXJzKClcbiAgICB9O1xuXG4gICAgY29uc3QgZGVmYXVsdExheWVyUHJvcHMgPSB0aGlzLmdldERlZmF1bHREZWNrTGF5ZXJQcm9wcyhvcHRzKTtcbiAgICBjb25zdCBicnVzaGluZ1Byb3BzID0gdGhpcy5nZXRCcnVzaGluZ0V4dGVuc2lvblByb3BzKGludGVyYWN0aW9uQ29uZmlnKTtcbiAgICBjb25zdCBnZXRQaXhlbE9mZnNldCA9IGdldFRleHRPZmZzZXRCeVJhZGl1cyhcbiAgICAgIHJhZGl1c1NjYWxlLFxuICAgICAgZGF0YS5nZXRSYWRpdXMsXG4gICAgICBtYXBTdGF0ZSxcbiAgICAgIGZpeGVkUmFkaXVzXG4gICAgKTtcbiAgICBjb25zdCBleHRlbnNpb25zID0gWy4uLmRlZmF1bHRMYXllclByb3BzLmV4dGVuc2lvbnMsIGJydXNoaW5nRXh0ZW5zaW9uXTtcblxuICAgIGNvbnN0IHNoYXJlZFByb3BzID0ge1xuICAgICAgZ2V0RmlsdGVyVmFsdWU6IGRhdGEuZ2V0RmlsdGVyVmFsdWUsXG4gICAgICBleHRlbnNpb25zLFxuICAgICAgZmlsdGVyUmFuZ2U6IGRlZmF1bHRMYXllclByb3BzLmZpbHRlclJhbmdlLFxuICAgICAgdmlzaWJsZTogZGVmYXVsdExheWVyUHJvcHMudmlzaWJsZSxcbiAgICAgIC4uLmJydXNoaW5nUHJvcHNcbiAgICB9O1xuICAgIGNvbnN0IGhvdmVyZWRPYmplY3QgPSB0aGlzLmhhc0hvdmVyZWRPYmplY3Qob2JqZWN0SG92ZXJlZCk7XG5cbiAgICBjb25zdCB0ZXh0TGFiZWxMYXllciA9IHRoaXMucmVuZGVyVGV4dExhYmVsTGF5ZXIoXG4gICAgICB7XG4gICAgICAgIGdldFBvc2l0aW9uOiBkYXRhLmdldFBvc2l0aW9uLFxuICAgICAgICBzaGFyZWRQcm9wcyxcbiAgICAgICAgZ2V0UGl4ZWxPZmZzZXQsXG4gICAgICAgIHVwZGF0ZVRyaWdnZXJzXG4gICAgICB9LFxuICAgICAgb3B0c1xuICAgICk7XG4gICAgY29uc3QgY29tbW9uTGF5ZXJQcm9wcyA9IHtcbiAgICAgIC4uLmRlZmF1bHRMYXllclByb3BzLFxuICAgICAgcGFyYW1ldGVyczoge1xuICAgICAgICAvLyBjaXJjbGVzIHdpbGwgYmUgZmxhdCBvbiB0aGUgbWFwIHdoZW4gdGhlIGFsdGl0dWRlIGNvbHVtbiBpcyBub3QgdXNlZFxuICAgICAgICBkZXB0aFRlc3Q6IHRoaXMuY29uZmlnLmNvbHVtbnMuYWx0aXR1ZGU/LmZpZWxkSWR4ID4gLTFcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgY29uc3QgY3VzdG9tTWFya2Vyc0ZpZWxkID0gdGhpcy5jb25maWcuY3VzdG9tTWFya2Vyc0ZpZWxkO1xuICAgIGNvbnN0IHtjdXN0b21NYXJrZXJzLCBjdXN0b21NYXJrZXJzVXJsLCBjdXN0b21NYXJrZXJzUmFuZ2V9ID0gdGhpcy5jb25maWcudmlzQ29uZmlnO1xuICAgIGNvbnN0IGN1c3RvbU1hcmtlcnNDb25maWd1cmVkID1cbiAgICAgIGN1c3RvbU1hcmtlcnMgJiYgQm9vbGVhbihjdXN0b21NYXJrZXJzVXJsIHx8IChjdXN0b21NYXJrZXJzRmllbGQgJiYgY3VzdG9tTWFya2Vyc1JhbmdlKSk7XG4gICAgY29uc3QgY3VzdG9tTWFya2Vyc01pc0NvbmZpZ3VyZWQgPSBjdXN0b21NYXJrZXJzICYmICFjdXN0b21NYXJrZXJzQ29uZmlndXJlZDtcblxuICAgIGlmIChjdXN0b21NYXJrZXJzQ29uZmlndXJlZCkge1xuICAgICAgY29uc3QgbWF4SWNvblNpemUgPSB0aGlzLmdldE1heE1hcmtlclNpemUoKTtcbiAgICAgIGNvbnN0IGdldEljb24gPSB0aGlzLmdldEN1c3RvbU1hcmtlckljb25BY2Nlc3NvcihjdXN0b21NYXJrZXJzU3RhdHVzLCBkYXRhLmdldEljb25VcmwpO1xuICAgICAgY29uc3QgaWNvbkxheWVyUHJvcHMgPSB7XG4gICAgICAgIGdldEljb24sXG4gICAgICAgIGdldFBvc2l0aW9uOiBkYXRhLmdldFBvc2l0aW9uLFxuICAgICAgICBnZXRTaXplOiBkYXRhLmdldFJhZGl1cyxcbiAgICAgICAgZ2V0QW5nbGU6IG5lZ2F0ZUFjY2Vzc29yKGRhdGEuZ2V0Um90YXRpb24pLFxuICAgICAgICBzaXplU2NhbGU6IHJhZGl1c1NjYWxlLFxuICAgICAgICBzaXplVW5pdHM6ICdwaXhlbHMnLFxuICAgICAgICBsb2FkT3B0aW9uczoge1xuICAgICAgICAgIGltYWdlOiB7XG4gICAgICAgICAgICB0eXBlOiAnaW1hZ2ViaXRtYXAnXG4gICAgICAgICAgfSxcbiAgICAgICAgICBpbWFnZWJpdG1hcDoge1xuICAgICAgICAgICAgcmVzaXplV2lkdGg6IG1heEljb25TaXplLFxuICAgICAgICAgICAgcmVzaXplSGVpZ2h0OiBtYXhJY29uU2l6ZSxcbiAgICAgICAgICAgIHJlc2l6ZVF1YWxpdHk6ICdoaWdoJ1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfTtcblxuICAgICAgcmV0dXJuIFtcbiAgICAgICAgbmV3IEljb25MYXllcih7XG4gICAgICAgICAgLi4uY29tbW9uTGF5ZXJQcm9wcyxcbiAgICAgICAgICAuLi5pY29uTGF5ZXJQcm9wcyxcbiAgICAgICAgICBpZDogYCR7ZGVmYXVsdExheWVyUHJvcHMuaWR9LWljb25gLFxuICAgICAgICAgIGRhdGE6IGRhdGEuZGF0YSxcbiAgICAgICAgICBnZXRDb2xvcjogdGhpcy5jb25maWcudmlzQ29uZmlnLmZpbGxlZCA/IGRhdGEuZ2V0RmlsbENvbG9yIDogVU5LTk9XTl9DT0xPUixcbiAgICAgICAgICBnZXRGaWx0ZXJWYWx1ZTogZGF0YS5nZXRGaWx0ZXJWYWx1ZSxcbiAgICAgICAgICB1cGRhdGVUcmlnZ2Vyczoge1xuICAgICAgICAgICAgZ2V0RmlsdGVyVmFsdWU6IHVwZGF0ZVRyaWdnZXJzLmdldEZpbHRlclZhbHVlLFxuICAgICAgICAgICAgZ2V0Q29sb3I6IFt1cGRhdGVUcmlnZ2Vycy5nZXRGaWxsQ29sb3IsIHRoaXMuY29uZmlnLnZpc0NvbmZpZy5maWxsZWRdLFxuICAgICAgICAgICAgZ2V0SWNvbjogW3VwZGF0ZVRyaWdnZXJzLmdldEljb25VcmwsIG1heEljb25TaXplLCBjdXN0b21NYXJrZXJzU3RhdHVzXSxcbiAgICAgICAgICAgIGdldFNpemU6IHVwZGF0ZVRyaWdnZXJzLmdldFJhZGl1cyxcbiAgICAgICAgICAgIGdldEFuZ2xlOiB1cGRhdGVUcmlnZ2Vycy5nZXRSb3RhdGlvblxuICAgICAgICAgIH1cbiAgICAgICAgfSksXG4gICAgICAgIC4uLihob3ZlcmVkT2JqZWN0XG4gICAgICAgICAgPyBbXG4gICAgICAgICAgICAgIG5ldyBJY29uTGF5ZXIoe1xuICAgICAgICAgICAgICAgIC4uLmljb25MYXllclByb3BzLFxuICAgICAgICAgICAgICAgIC4uLnRoaXMuZ2V0RGVmYXVsdEhvdmVyTGF5ZXJQcm9wcygpLFxuICAgICAgICAgICAgICAgIGlkOiBgJHtkZWZhdWx0TGF5ZXJQcm9wcy5pZH0taWNvbi1ob3ZlcmVkYCxcbiAgICAgICAgICAgICAgICBkYXRhOiBbaG92ZXJlZE9iamVjdF0sXG4gICAgICAgICAgICAgICAgZ2V0Q29sb3I6IHRoaXMuY29uZmlnLmhpZ2hsaWdodENvbG9yXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICBdXG4gICAgICAgICAgOiBbXSksXG4gICAgICAgIC4uLnRleHRMYWJlbExheWVyXG4gICAgICBdO1xuICAgIH1cblxuICAgIGNvbnN0IHNjYXR0ZXJQbG90TGF5ZXJQcm9wcyA9IHtcbiAgICAgIHN0cm9rZWQ6IHRoaXMuY29uZmlnLnZpc0NvbmZpZy5vdXRsaW5lLFxuICAgICAgZmlsbGVkOiB0aGlzLmNvbmZpZy52aXNDb25maWcuZmlsbGVkLFxuICAgICAgbGluZVdpZHRoU2NhbGU6IHRoaXMuY29uZmlnLnZpc0NvbmZpZy50aGlja25lc3MsXG4gICAgICAvLyBUT0RPOiBpbnZlbnQgYmV0dGVyIHdheSB0byByZW5kZXIgc29tZXRoaW5nIHdoZW4gY3VzdG9tTWFya2VycyBhcmUgbm90IHlldCBjb25maWd1cmVkXG4gICAgICByYWRpdXNTY2FsZTogY3VzdG9tTWFya2Vyc01pc0NvbmZpZ3VyZWQgPyByYWRpdXNTY2FsZSAvIDIgOiByYWRpdXNTY2FsZSxcbiAgICAgIC4uLih0aGlzLmNvbmZpZy52aXNDb25maWcuZml4ZWRSYWRpdXMgPyB7fSA6IHtyYWRpdXNNYXhQaXhlbHM6IDUwMH0pXG4gICAgfTtcblxuICAgIHJldHVybiBbXG4gICAgICBuZXcgU2NhdHRlcnBsb3RMYXllcih7XG4gICAgICAgIC4uLmJydXNoaW5nUHJvcHMsXG4gICAgICAgIC4uLmRhdGEsXG4gICAgICAgIC4uLmNvbW1vbkxheWVyUHJvcHMsXG4gICAgICAgIC4uLnNjYXR0ZXJQbG90TGF5ZXJQcm9wcyxcbiAgICAgICAgcmFkaXVzVW5pdHMsXG4gICAgICAgIGxpbmVXaWR0aFVuaXRzOiAncGl4ZWxzJyxcbiAgICAgICAgdXBkYXRlVHJpZ2dlcnMsXG4gICAgICAgIGV4dGVuc2lvbnNcbiAgICAgIH0pLFxuICAgICAgLy8gaG92ZXIgbGF5ZXJcbiAgICAgIC4uLihob3ZlcmVkT2JqZWN0XG4gICAgICAgID8gW1xuICAgICAgICAgICAgbmV3IFNjYXR0ZXJwbG90TGF5ZXIoe1xuICAgICAgICAgICAgICAuLi50aGlzLmdldERlZmF1bHRIb3ZlckxheWVyUHJvcHMoKSxcbiAgICAgICAgICAgICAgLi4uc2NhdHRlclBsb3RMYXllclByb3BzLFxuICAgICAgICAgICAgICBkYXRhOiBbaG92ZXJlZE9iamVjdF0sXG4gICAgICAgICAgICAgIGdldExpbmVDb2xvcjogdGhpcy5jb25maWcuaGlnaGxpZ2h0Q29sb3IsXG4gICAgICAgICAgICAgIGdldEZpbGxDb2xvcjogdGhpcy5jb25maWcuaGlnaGxpZ2h0Q29sb3IsXG4gICAgICAgICAgICAgIGdldFJhZGl1czogZGF0YS5nZXRSYWRpdXMsXG4gICAgICAgICAgICAgIGdldFBvc2l0aW9uOiBkYXRhLmdldFBvc2l0aW9uXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIF1cbiAgICAgICAgOiBbXSksXG4gICAgICAvLyB0ZXh0IGxhYmVsIGxheWVyXG4gICAgICAuLi50ZXh0TGFiZWxMYXllclxuICAgIF07XG4gIH1cbn1cbiJdfQ==
|
|
486
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9sYXllcnMvcG9pbnQtbGF5ZXIvcG9pbnQtbGF5ZXIuanMiXSwibmFtZXMiOlsicG9pbnRQb3NBY2Nlc3NvciIsImxhdCIsImxuZyIsImFsdGl0dWRlIiwiZGMiLCJkIiwidmFsdWVBdCIsImluZGV4IiwiZmllbGRJZHgiLCJwb2ludFJlcXVpcmVkQ29sdW1ucyIsInBvaW50T3B0aW9uYWxDb2x1bW5zIiwiYnJ1c2hpbmdFeHRlbnNpb24iLCJCcnVzaGluZ0V4dGVuc2lvbiIsInBvaW50VmlzQ29uZmlncyIsInJhZGl1cyIsImZpeGVkUmFkaXVzIiwiY3VzdG9tTWFya2VycyIsImN1c3RvbU1hcmtlcnNVcmwiLCJjdXN0b21NYXJrZXJzUmFuZ2UiLCJvcGFjaXR5Iiwib3V0bGluZSIsInRoaWNrbmVzcyIsInN0cm9rZUNvbG9yIiwiY29sb3JSYW5nZSIsInN0cm9rZUNvbG9yUmFuZ2UiLCJyYWRpdXNSYW5nZSIsImZpbGxlZCIsInR5cGUiLCJsYWJlbCIsImRlZmF1bHRWYWx1ZSIsInByb3BlcnR5IiwiUG9pbnRMYXllciIsInByb3BzIiwicmVnaXN0ZXJWaXNDb25maWciLCJnZXRQb3NpdGlvbkFjY2Vzc29yIiwiZGF0YUNvbnRhaW5lciIsImNvbmZpZyIsImNvbHVtbnMiLCJQb2ludExheWVySWNvbiIsImRlZmF1bHRQb2ludENvbHVtblBhaXJzIiwiY29sb3IiLCJhY2Nlc3NvciIsImNvbmRpdGlvbiIsInZpc0NvbmZpZyIsImtleSIsImZpZWxkIiwic2NhbGUiLCJkb21haW4iLCJyYW5nZSIsImNoYW5uZWxTY2FsZVR5cGUiLCJDSEFOTkVMX1NDQUxFUyIsInNpemUiLCJmaXhlZCIsImN1c3RvbU1hcmtlciIsInN1cHBvcnRlZEZpZWxkVHlwZXMiLCJyb3RhdGlvbiIsImlkZW50aXR5IiwibnVsbFZhbHVlIiwicm90YXRpb25GaWVsZCIsImRhdGFzZXQiLCJkZWZhdWx0Q29sb3JGaWVsZCIsInVwZGF0ZUxheWVyQ29uZmlnIiwiY29sb3JGaWVsZCIsInVwZGF0ZUxheWVyVmlzdWFsQ2hhbm5lbCIsInN0cm9rZUNvbG9yRmllbGQiLCJzdHJva2VDb2xvckRvbWFpbiIsInN0cm9rZUNvbG9yU2NhbGUiLCJjdXN0b21NYXJrZXJzRmllbGQiLCJjdXN0b21NYXJrZXJzU2NhbGUiLCJnZXRQb3NpdGlvbiIsImZpbHRlcmVkSW5kZXgiLCJkYXRhIiwiaSIsImxlbmd0aCIsInBvcyIsImV2ZXJ5IiwiTnVtYmVyIiwiaXNGaW5pdGUiLCJwdXNoIiwicG9zaXRpb24iLCJkYXRhc2V0cyIsIm9sZExheWVyRGF0YSIsInRleHRMYWJlbCIsImRhdGFJZCIsImdwdUZpbHRlciIsInVwZGF0ZURhdGEiLCJ0cmlnZ2VyQ2hhbmdlZCIsInRleHRMYWJlbHMiLCJhY2Nlc3NvcnMiLCJnZXRBdHRyaWJ1dGVBY2Nlc3NvcnMiLCJnZXRGaWx0ZXJWYWx1ZSIsImZpbHRlclZhbHVlQWNjZXNzb3IiLCJib3VuZHMiLCJnZXRQb2ludHNCb3VuZHMiLCJ1cGRhdGVNZXRhIiwib2JqZWN0SW5mbyIsInBpY2tlZCIsImxheWVyIiwiaWQiLCJvcHRzIiwib2JqZWN0SG92ZXJlZCIsIm1hcFN0YXRlIiwiaW50ZXJhY3Rpb25Db25maWciLCJjdXN0b21NYXJrZXJzU3RhdHVzIiwiQm9vbGVhbiIsInNpemVGaWVsZCIsInJhZGl1c1NjYWxlIiwiZ2V0UmFkaXVzU2NhbGUiLCJyYWRpdXNVbml0cyIsImdldFJhZGl1c1VuaXQiLCJ1cGRhdGVUcmlnZ2VycyIsImZpbHRlclZhbHVlVXBkYXRlVHJpZ2dlcnMiLCJnZXRWaXN1YWxDaGFubmVsVXBkYXRlVHJpZ2dlcnMiLCJkZWZhdWx0TGF5ZXJQcm9wcyIsImdldERlZmF1bHREZWNrTGF5ZXJQcm9wcyIsImJydXNoaW5nUHJvcHMiLCJnZXRCcnVzaGluZ0V4dGVuc2lvblByb3BzIiwiZ2V0UGl4ZWxPZmZzZXQiLCJnZXRSYWRpdXMiLCJleHRlbnNpb25zIiwic2hhcmVkUHJvcHMiLCJmaWx0ZXJSYW5nZSIsInZpc2libGUiLCJob3ZlcmVkT2JqZWN0IiwiaGFzSG92ZXJlZE9iamVjdCIsInRleHRMYWJlbExheWVyIiwicmVuZGVyVGV4dExhYmVsTGF5ZXIiLCJjb21tb25MYXllclByb3BzIiwicGFyYW1ldGVycyIsImRlcHRoVGVzdCIsImN1c3RvbU1hcmtlcnNDb25maWd1cmVkIiwiY3VzdG9tTWFya2Vyc01pc0NvbmZpZ3VyZWQiLCJtYXhJY29uU2l6ZSIsImdldE1heE1hcmtlclNpemUiLCJ1c2VNYXNrIiwiaWNvbkxheWVyUHJvcHMiLCJnZXRJY29uIiwiZ2V0Q3VzdG9tTWFya2VySWNvbkFjY2Vzc29yIiwiZ2V0SWNvblVybCIsImdldFNpemUiLCJnZXRBbmdsZSIsImdldFJvdGF0aW9uIiwic2l6ZVNjYWxlIiwic2l6ZVVuaXRzIiwibG9hZE9wdGlvbnMiLCJpbWFnZSIsImltYWdlYml0bWFwIiwicmVzaXplV2lkdGgiLCJyZXNpemVIZWlnaHQiLCJyZXNpemVRdWFsaXR5IiwiZ2V0SWNvbkNvbG9yIiwiZ2V0RmlsbENvbG9yIiwiVU5LTk9XTl9DT0xPUiIsIkljb25MYXllciIsImdldENvbG9yIiwiZ2V0RGVmYXVsdEhvdmVyTGF5ZXJQcm9wcyIsImhpZ2hsaWdodENvbG9yIiwic2NhdHRlclBsb3RMYXllclByb3BzIiwic3Ryb2tlZCIsImxpbmVXaWR0aFNjYWxlIiwicmFkaXVzTWF4UGl4ZWxzIiwiU2NhdHRlcnBsb3RMYXllciIsImxpbmVXaWR0aFVuaXRzIiwiZ2V0TGluZUNvbG9yIiwiZmllbGRQYWlycyIsImZvckVhY2giLCJwYWlyIiwibGF0RmllbGQiLCJsbmdGaWVsZCIsImxheWVyTmFtZSIsImRlZmF1bHROYW1lIiwicHJvcCIsInZhbHVlIiwiREVGQVVMVF9MQVlFUl9DT0xPUiIsImlzVmlzaWJsZSIsIm9wdGlvbmFsIiwiTGF5ZXIiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFvQkE7O0FBQ0E7O0FBR0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUE7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ekI7OztBQUNBLFlBQUk1SSxLQUFLLENBQUN5QyxNQUFOLEtBQWlCLENBQXJCLEVBQXdCO0FBQ3RCa0csVUFBQUEsSUFBSSxDQUFDRyxTQUFMLEdBQWlCLElBQWpCO0FBQ0Q7O0FBRURILFFBQUFBLElBQUksQ0FBQ3RJLE9BQUwsR0FBZTtBQUNicEMsVUFBQUEsR0FBRyxFQUFFc0ssUUFEUTtBQUVickssVUFBQUEsR0FBRyxFQUFFc0ssUUFGUTtBQUdickssVUFBQUEsUUFBUSxFQUFFO0FBQUN5SyxZQUFBQSxLQUFLLEVBQUUsSUFBUjtBQUFjcEssWUFBQUEsUUFBUSxFQUFFLENBQUMsQ0FBekI7QUFBNEJ1SyxZQUFBQSxRQUFRLEVBQUU7QUFBdEM7QUFIRyxTQUFmO0FBTUEvSSxRQUFBQSxLQUFLLENBQUM4QyxJQUFOLENBQVc2RixJQUFYO0FBQ0QsT0ExQkQ7QUE0QkEsYUFBTztBQUFDM0ksUUFBQUEsS0FBSyxFQUFMQTtBQUFELE9BQVA7QUFDRDs7O0VBM0lxQ2dKLHFCIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSAyMDIyIFViZXIgVGVjaG5vbG9naWVzLCBJbmMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuLy8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuLy8gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4vLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuLy8gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbi8vIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbi8vIFRIRSBTT0ZUV0FSRS5cblxuaW1wb3J0IHtCcnVzaGluZ0V4dGVuc2lvbn0gZnJvbSAnQGRlY2suZ2wvZXh0ZW5zaW9ucyc7XG5pbXBvcnQge1NjYXR0ZXJwbG90TGF5ZXJ9IGZyb20gJ0BkZWNrLmdsL2xheWVycyc7XG5pbXBvcnQge0ljb25MYXllcn0gZnJvbSAnQGRlY2suZ2wvbGF5ZXJzJztcblxuaW1wb3J0IExheWVyIGZyb20gJy4uL2Jhc2UtbGF5ZXInO1xuaW1wb3J0IHtoZXhUb1JnYn0gZnJvbSAndXRpbHMvY29sb3ItdXRpbHMnO1xuaW1wb3J0IHtuZWdhdGVBY2Nlc3Nvcn0gZnJvbSAndXRpbHMvbGF5ZXItdXRpbHMnO1xuaW1wb3J0IHtmaW5kRGVmYXVsdENvbG9yRmllbGR9IGZyb20gJ3V0aWxzL2RhdGFzZXQtdXRpbHMnO1xuaW1wb3J0IFBvaW50TGF5ZXJJY29uIGZyb20gJy4vcG9pbnQtbGF5ZXItaWNvbic7XG5pbXBvcnQge0RFRkFVTFRfTEFZRVJfQ09MT1IsIENIQU5ORUxfU0NBTEVTLCBVTktOT1dOX0NPTE9SfSBmcm9tICdjb25zdGFudHMvZGVmYXVsdC1zZXR0aW5ncyc7XG5cbmltcG9ydCB7Z2V0VGV4dE9mZnNldEJ5UmFkaXVzLCBmb3JtYXRUZXh0TGFiZWxEYXRhfSBmcm9tICcuLi9sYXllci10ZXh0LWxhYmVsJztcblxuZXhwb3J0IGNvbnN0IHBvaW50UG9zQWNjZXNzb3IgPSAoe2xhdCwgbG5nLCBhbHRpdHVkZX0pID0+IGRjID0+IGQgPT4gW1xuICBkYy52YWx1ZUF0KGQuaW5kZXgsIGxuZy5maWVsZElkeCksXG4gIGRjLnZhbHVlQXQoZC5pbmRleCwgbGF0LmZpZWxkSWR4KSxcbiAgYWx0aXR1ZGUgJiYgYWx0aXR1ZGUuZmllbGRJZHggPiAtMSA/IGRjLnZhbHVlQXQoZC5pbmRleCwgYWx0aXR1ZGUuZmllbGRJZHgpIDogMFxuXTtcblxuZXhwb3J0IGNvbnN0IHBvaW50UmVxdWlyZWRDb2x1bW5zID0gWydsYXQnLCAnbG5nJ107XG5leHBvcnQgY29uc3QgcG9pbnRPcHRpb25hbENvbHVtbnMgPSBbJ2FsdGl0dWRlJ107XG5cbmNvbnN0IGJydXNoaW5nRXh0ZW5zaW9uID0gbmV3IEJydXNoaW5nRXh0ZW5zaW9uKCk7XG5cbmV4cG9ydCBjb25zdCBwb2ludFZpc0NvbmZpZ3MgPSB7XG4gIHJhZGl1czogJ3JhZGl1cycsXG4gIGZpeGVkUmFkaXVzOiAnZml4ZWRSYWRpdXMnLFxuICBjdXN0b21NYXJrZXJzOiAnY3VzdG9tTWFya2VycycsXG4gIGN1c3RvbU1hcmtlcnNVcmw6ICdjdXN0b21NYXJrZXJzVXJsJyxcbiAgY3VzdG9tTWFya2Vyc1JhbmdlOiAnY3VzdG9tTWFya2Vyc1JhbmdlJyxcbiAgb3BhY2l0eTogJ29wYWNpdHknLFxuICBvdXRsaW5lOiAnb3V0bGluZScsXG4gIHRoaWNrbmVzczogJ3RoaWNrbmVzcycsXG4gIHN0cm9rZUNvbG9yOiAnc3Ryb2tlQ29sb3InLFxuICBjb2xvclJhbmdlOiAnY29sb3JSYW5nZScsXG4gIHN0cm9rZUNvbG9yUmFuZ2U6ICdzdHJva2VDb2xvclJhbmdlJyxcbiAgcmFkaXVzUmFuZ2U6ICdyYWRpdXNSYW5nZScsXG4gIGZpbGxlZDoge1xuICAgIHR5cGU6ICdib29sZWFuJyxcbiAgICBsYWJlbDogJ2xheWVyLmZpbGxDb2xvcicsXG4gICAgZGVmYXVsdFZhbHVlOiB0cnVlLFxuICAgIHByb3BlcnR5OiAnZmlsbGVkJ1xuICB9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBQb2ludExheWVyIGV4dGVuZHMgTGF5ZXIge1xuICBjb25zdHJ1Y3Rvcihwcm9wcykge1xuICAgIHN1cGVyKHByb3BzKTtcblxuICAgIHRoaXMucmVnaXN0ZXJWaXNDb25maWcocG9pbnRWaXNDb25maWdzKTtcbiAgICB0aGlzLmdldFBvc2l0aW9uQWNjZXNzb3IgPSBkYXRhQ29udGFpbmVyID0+XG4gICAgICBwb2ludFBvc0FjY2Vzc29yKHRoaXMuY29uZmlnLmNvbHVtbnMpKGRhdGFDb250YWluZXIpO1xuICB9XG5cbiAgZ2V0IHR5cGUoKSB7XG4gICAgcmV0dXJuICdwb2ludCc7XG4gIH1cblxuICBnZXQgaXNBZ2dyZWdhdGVkKCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGdldCBsYXllckljb24oKSB7XG4gICAgcmV0dXJuIFBvaW50TGF5ZXJJY29uO1xuICB9XG4gIGdldCByZXF1aXJlZExheWVyQ29sdW1ucygpIHtcbiAgICByZXR1cm4gcG9pbnRSZXF1aXJlZENvbHVtbnM7XG4gIH1cblxuICBnZXQgb3B0aW9uYWxDb2x1bW5zKCkge1xuICAgIHJldHVybiBwb2ludE9wdGlvbmFsQ29sdW1ucztcbiAgfVxuXG4gIGdldCBjb2x1bW5QYWlycygpIHtcbiAgICByZXR1cm4gdGhpcy5kZWZhdWx0UG9pbnRDb2x1bW5QYWlycztcbiAgfVxuXG4gIGdldCBub25lTGF5ZXJEYXRhQWZmZWN0aW5nUHJvcHMoKSB7XG4gICAgcmV0dXJuIFsuLi5zdXBlci5ub25lTGF5ZXJEYXRhQWZmZWN0aW5nUHJvcHMsICdyYWRpdXMnXTtcbiAgfVxuXG4gIGdldCB2aXN1YWxDaGFubmVscygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgY29sb3I6IHtcbiAgICAgICAgLi4uc3VwZXIudmlzdWFsQ2hhbm5lbHMuY29sb3IsXG4gICAgICAgIGFjY2Vzc29yOiAnZ2V0RmlsbENvbG9yJyxcbiAgICAgICAgY29uZGl0aW9uOiBjb25maWcgPT4gY29uZmlnLnZpc0NvbmZpZy5maWxsZWQsXG4gICAgICAgIGRlZmF1bHRWYWx1ZTogY29uZmlnID0+IGNvbmZpZy5jb2xvclxuICAgICAgfSxcbiAgICAgIHN0cm9rZUNvbG9yOiB7XG4gICAgICAgIHByb3BlcnR5OiAnc3Ryb2tlQ29sb3InLFxuICAgICAgICBrZXk6ICdzdHJva2VDb2xvcicsXG4gICAgICAgIGZpZWxkOiAnc3Ryb2tlQ29sb3JGaWVsZCcsXG4gICAgICAgIHNjYWxlOiAnc3Ryb2tlQ29sb3JTY2FsZScsXG4gICAgICAgIGRvbWFpbjogJ3N0cm9rZUNvbG9yRG9tYWluJyxcbiAgICAgICAgcmFuZ2U6ICdzdHJva2VDb2xvclJhbmdlJyxcbiAgICAgICAgY2hhbm5lbFNjYWxlVHlwZTogQ0hBTk5FTF9TQ0FMRVMuY29sb3IsXG4gICAgICAgIGFjY2Vzc29yOiAnZ2V0TGluZUNvbG9yJyxcbiAgICAgICAgY29uZGl0aW9uOiBjb25maWcgPT4gY29uZmlnLnZpc0NvbmZpZy5vdXRsaW5lLFxuICAgICAgICBkZWZhdWx0VmFsdWU6IGNvbmZpZyA9PiBjb25maWcudmlzQ29uZmlnLnN0cm9rZUNvbG9yIHx8IGNvbmZpZy5jb2xvclxuICAgICAgfSxcbiAgICAgIHNpemU6IHtcbiAgICAgICAgLi4uc3VwZXIudmlzdWFsQ2hhbm5lbHMuc2l6ZSxcbiAgICAgICAgcHJvcGVydHk6ICdyYWRpdXMnLFxuICAgICAgICByYW5nZTogJ3JhZGl1c1JhbmdlJyxcbiAgICAgICAgZml4ZWQ6ICdmaXhlZFJhZGl1cycsXG4gICAgICAgIGNoYW5uZWxTY2FsZVR5cGU6ICdyYWRpdXMnLFxuICAgICAgICBhY2Nlc3NvcjogJ2dldFJhZGl1cycsXG4gICAgICAgIGRlZmF1bHRWYWx1ZTogMVxuICAgICAgfSxcbiAgICAgIGN1c3RvbU1hcmtlcnM6IHtcbiAgICAgICAgcHJvcGVydHk6ICdjdXN0b21NYXJrZXJzJyxcbiAgICAgICAga2V5OiAnY3VzdG9tTWFya2VycycsXG4gICAgICAgIGZpZWxkOiAnY3VzdG9tTWFya2Vyc0ZpZWxkJyxcbiAgICAgICAgc2NhbGU6ICdjdXN0b21NYXJrZXJzU2NhbGUnLFxuICAgICAgICBkb21haW46ICdjdXN0b21NYXJrZXJzRG9tYWluJyxcbiAgICAgICAgcmFuZ2U6ICdjdXN0b21NYXJrZXJzUmFuZ2UnLFxuICAgICAgICBmaXhlZDogJ2N1c3RvbU1hcmtlcnNVcmwnLFxuICAgICAgICBjaGFubmVsU2NhbGVUeXBlOiBDSEFOTkVMX1NDQUxFUy5jdXN0b21NYXJrZXIsXG4gICAgICAgIGFjY2Vzc29yOiAnZ2V0SWNvblVybCcsXG4gICAgICAgIHN1cHBvcnRlZEZpZWxkVHlwZXM6IFsnc3RyaW5nJ10sXG4gICAgICAgIGRlZmF1bHRWYWx1ZTogY29uZmlnID0+IGNvbmZpZy52aXNDb25maWcuY3VzdG9tTWFya2Vyc1VybCxcbiAgICAgICAgY29uZGl0aW9uOiBjb25maWcgPT4gY29uZmlnLnZpc0NvbmZpZy5jdXN0b21NYXJrZXJzXG4gICAgICB9LFxuICAgICAgcm90YXRpb246IHtcbiAgICAgICAgcHJvcGVydHk6ICdyb3RhdGlvbicsXG4gICAgICAgIGtleTogJ3JvdGF0aW9uJyxcbiAgICAgICAgZmllbGQ6ICdyb3RhdGlvbkZpZWxkJyxcbiAgICAgICAgY2hhbm5lbFNjYWxlVHlwZTogQ0hBTk5FTF9TQ0FMRVMuaWRlbnRpdHksXG4gICAgICAgIGFjY2Vzc29yOiAnZ2V0Um90YXRpb24nLFxuICAgICAgICBzdXBwb3J0ZWRGaWVsZFR5cGVzOiBbJ2Zsb2F0JywgJ2ludGVnZXInLCAncmVhbCcsICdudW1iZXInXSxcbiAgICAgICAgZGVmYXVsdFZhbHVlOiAoKSA9PiAwLFxuICAgICAgICBudWxsVmFsdWU6IDAsXG4gICAgICAgIGNvbmRpdGlvbjogY29uZmlnID0+IGNvbmZpZy5yb3RhdGlvbkZpZWxkXG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIHNldEluaXRpYWxMYXllckNvbmZpZyhkYXRhc2V0KSB7XG4gICAgY29uc3QgZGVmYXVsdENvbG9yRmllbGQgPSBmaW5kRGVmYXVsdENvbG9yRmllbGQoZGF0YXNldCk7XG5cbiAgICBpZiAoZGVmYXVsdENvbG9yRmllbGQpIHtcbiAgICAgIHRoaXMudXBkYXRlTGF5ZXJDb25maWcoe1xuICAgICAgICBjb2xvckZpZWxkOiBkZWZhdWx0Q29sb3JGaWVsZFxuICAgICAgfSk7XG4gICAgICB0aGlzLnVwZGF0ZUxheWVyVmlzdWFsQ2hhbm5lbChkYXRhc2V0LCAnY29sb3InKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHN0YXRpYyBmaW5kRGVmYXVsdExheWVyUHJvcHMoe2ZpZWxkUGFpcnMgPSBbXX0pIHtcbiAgICBjb25zdCBwcm9wcyA9IFtdO1xuXG4gICAgLy8gTWFrZSBsYXllciBmb3IgZWFjaCBwYWlyXG4gICAgZmllbGRQYWlycy5mb3JFYWNoKHBhaXIgPT4ge1xuICAgICAgY29uc3QgbGF0RmllbGQgPSBwYWlyLnBhaXIubGF0O1xuICAgICAgY29uc3QgbG5nRmllbGQgPSBwYWlyLnBhaXIubG5nO1xuICAgICAgY29uc3QgbGF5ZXJOYW1lID0gcGFpci5kZWZhdWx0TmFtZTtcblxuICAgICAgY29uc3QgcHJvcCA9IHtcbiAgICAgICAgbGFiZWw6IGxheWVyTmFtZS5sZW5ndGggPyBsYXllck5hbWUgOiAnUG9pbnQnXG4gICAgICB9O1xuXG4gICAgICAvLyBkZWZhdWx0IGxheWVyIGNvbG9yIGZvciBiZWdpbnRyaXAgYW5kIGRyb3BvZmYgcG9pbnRcbiAgICAgIGlmIChsYXRGaWVsZC52YWx1ZSBpbiBERUZBVUxUX0xBWUVSX0NPTE9SKSB7XG4gICAgICAgIHByb3AuY29sb3IgPSBoZXhUb1JnYihERUZBVUxUX0xBWUVSX0NPTE9SW2xhdEZpZWxkLnZhbHVlXSk7XG4gICAgICB9XG5cbiAgICAgIC8vIHNldCB0aGUgZmlyc3QgbGF5ZXIgdG8gYmUgdmlzaWJsZVxuICAgICAgaWYgKHByb3BzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICBwcm9wLmlzVmlzaWJsZSA9IHRydWU7XG4gICAgICB9XG5cbiAgICAgIHByb3AuY29sdW1ucyA9IHtcbiAgICAgICAgbGF0OiBsYXRGaWVsZCxcbiAgICAgICAgbG5nOiBsbmdGaWVsZCxcbiAgICAgICAgYWx0aXR1ZGU6IHt2YWx1ZTogbnVsbCwgZmllbGRJZHg6IC0xLCBvcHRpb25hbDogdHJ1ZX1cbiAgICAgIH07XG5cbiAgICAgIHByb3BzLnB1c2gocHJvcCk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4ge3Byb3BzfTtcbiAgfVxuXG4gIGdldERlZmF1bHRMYXllckNvbmZpZyhwcm9wcyA9IHt9KSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnN1cGVyLmdldERlZmF1bHRMYXllckNvbmZpZyhwcm9wcyksXG5cbiAgICAgIC8vIGFkZCBzdHJva2UgY29sb3IgdmlzdWFsIGNoYW5uZWxcbiAgICAgIHN0cm9rZUNvbG9yRmllbGQ6IG51bGwsXG4gICAgICBzdHJva2VDb2xvckRvbWFpbjogWzAsIDFdLFxuICAgICAgc3Ryb2tlQ29sb3JTY2FsZTogJ3F1YW50aWxlJyxcblxuICAgICAgY3VzdG9tTWFya2Vyc0ZpZWxkOiBudWxsLFxuICAgICAgY3VzdG9tTWFya2Vyc1NjYWxlOiAnb3JkaW5hbCdcbiAgICB9O1xuICB9XG5cbiAgY2FsY3VsYXRlRGF0YUF0dHJpYnV0ZSh7ZmlsdGVyZWRJbmRleH0sIGdldFBvc2l0aW9uKSB7XG4gICAgY29uc3QgZGF0YSA9IFtdO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBmaWx0ZXJlZEluZGV4Lmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCBpbmRleCA9IGZpbHRlcmVkSW5kZXhbaV07XG4gICAgICBjb25zdCBwb3MgPSBnZXRQb3NpdGlvbih7aW5kZXh9KTtcblxuICAgICAgLy8gaWYgZG9lc24ndCBoYXZlIHBvaW50IGxhdCBvciBsbmcsIGRvIG5vdCBhZGQgdGhlIHBvaW50XG4gICAgICAvLyBkZWNrLmdsIGNhbid0IGhhbmRsZSBwb3NpdGlvbiA9IG51bGxcbiAgICAgIGlmIChwb3MuZXZlcnkoTnVtYmVyLmlzRmluaXRlKSkge1xuICAgICAgICBkYXRhLnB1c2goe1xuICAgICAgICAgIHBvc2l0aW9uOiBwb3MsXG4gICAgICAgICAgaW5kZXhcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBkYXRhO1xuICB9XG5cbiAgZm9ybWF0TGF5ZXJEYXRhKGRhdGFzZXRzLCBvbGRMYXllckRhdGEpIHtcbiAgICBjb25zdCB7dGV4dExhYmVsfSA9IHRoaXMuY29uZmlnO1xuICAgIGNvbnN0IHtncHVGaWx0ZXIsIGRhdGFDb250YWluZXJ9ID0gZGF0YXNldHNbdGhpcy5jb25maWcuZGF0YUlkXTtcbiAgICBjb25zdCB7ZGF0YSwgdHJpZ2dlckNoYW5nZWR9ID0gdGhpcy51cGRhdGVEYXRhKGRhdGFzZXRzLCBvbGRMYXllckRhdGEpO1xuICAgIGNvbnN0IGdldFBvc2l0aW9uID0gdGhpcy5nZXRQb3NpdGlvbkFjY2Vzc29yKGRhdGFDb250YWluZXIpO1xuXG4gICAgLy8gZ2V0IGFsbCBkaXN0aW5jdCBjaGFyYWN0ZXJzIGluIHRoZSB0ZXh0IGxhYmVsc1xuICAgIGNvbnN0IHRleHRMYWJlbHMgPSBmb3JtYXRUZXh0TGFiZWxEYXRhKHtcbiAgICAgIHRleHRMYWJlbCxcbiAgICAgIHRyaWdnZXJDaGFuZ2VkLFxuICAgICAgb2xkTGF5ZXJEYXRhLFxuICAgICAgZGF0YSxcbiAgICAgIGRhdGFDb250YWluZXJcbiAgICB9KTtcblxuICAgIGNvbnN0IGFjY2Vzc29ycyA9IHRoaXMuZ2V0QXR0cmlidXRlQWNjZXNzb3JzKHtkYXRhQ29udGFpbmVyfSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgZGF0YSxcbiAgICAgIGdldFBvc2l0aW9uLFxuICAgICAgZ2V0RmlsdGVyVmFsdWU6IGdwdUZpbHRlci5maWx0ZXJWYWx1ZUFjY2Vzc29yKGRhdGFDb250YWluZXIpKCksXG4gICAgICB0ZXh0TGFiZWxzLFxuICAgICAgLi4uYWNjZXNzb3JzXG4gICAgfTtcbiAgfVxuICAvKiBlc2xpbnQtZW5hYmxlIGNvbXBsZXhpdHkgKi9cblxuICB1cGRhdGVMYXllck1ldGEoZGF0YUNvbnRhaW5lcikge1xuICAgIGNvbnN0IGdldFBvc2l0aW9uID0gdGhpcy5nZXRQb3NpdGlvbkFjY2Vzc29yKGRhdGFDb250YWluZXIpO1xuICAgIGNvbnN0IGJvdW5kcyA9IHRoaXMuZ2V0UG9pbnRzQm91bmRzKGRhdGFDb250YWluZXIsIGdldFBvc2l0aW9uKTtcbiAgICB0aGlzLnVwZGF0ZU1ldGEoe2JvdW5kc30pO1xuICB9XG5cbiAgaXNMYXllckhvdmVyZWQob2JqZWN0SW5mbykge1xuICAgIHJldHVybiAoXG4gICAgICAob2JqZWN0SW5mbz8ucGlja2VkICYmIG9iamVjdEluZm8/LmxheWVyPy5wcm9wcz8uaWQgPT09IHRoaXMuaWQpIHx8XG4gICAgICBvYmplY3RJbmZvPy5sYXllcj8ucHJvcHM/LmlkID09PSBgJHt0aGlzLmlkfS1pY29uYFxuICAgICk7XG4gIH1cblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgY29tcGxleGl0eSwgbWF4LXN0YXRlbWVudHNcbiAgcmVuZGVyTGF5ZXIob3B0cykge1xuICAgIGNvbnN0IHtkYXRhLCBncHVGaWx0ZXIsIG9iamVjdEhvdmVyZWQsIG1hcFN0YXRlLCBpbnRlcmFjdGlvbkNvbmZpZywgY3VzdG9tTWFya2Vyc1N0YXR1c30gPSBvcHRzO1xuXG4gICAgLy8gaWYgbm8gZmllbGQgc2l6ZSBpcyBkZWZpbmVkIHdlIG5lZWQgdG8gcGFzcyBmaXhlZCByYWRpdXMgPSBmYWxzZVxuICAgIGNvbnN0IGZpeGVkUmFkaXVzID0gdGhpcy5jb25maWcudmlzQ29uZmlnLmZpeGVkUmFkaXVzICYmIEJvb2xlYW4odGhpcy5jb25maWcuc2l6ZUZpZWxkKTtcbiAgICBjb25zdCByYWRpdXNTY2FsZSA9IHRoaXMuZ2V0UmFkaXVzU2NhbGUoZml4ZWRSYWRpdXMpO1xuICAgIGNvbnN0IHJhZGl1c1VuaXRzID0gdGhpcy5nZXRSYWRpdXNVbml0KGZpeGVkUmFkaXVzKTtcblxuICAgIGNvbnN0IHVwZGF0ZVRyaWdnZXJzID0ge1xuICAgICAgZ2V0UG9zaXRpb246IHRoaXMuY29uZmlnLmNvbHVtbnMsXG4gICAgICBnZXRGaWx0ZXJWYWx1ZTogZ3B1RmlsdGVyLmZpbHRlclZhbHVlVXBkYXRlVHJpZ2dlcnMsXG4gICAgICAuLi50aGlzLmdldFZpc3VhbENoYW5uZWxVcGRhdGVUcmlnZ2VycygpXG4gICAgfTtcblxuICAgIGNvbnN0IGRlZmF1bHRMYXllclByb3BzID0gdGhpcy5nZXREZWZhdWx0RGVja0xheWVyUHJvcHMob3B0cyk7XG4gICAgY29uc3QgYnJ1c2hpbmdQcm9wcyA9IHRoaXMuZ2V0QnJ1c2hpbmdFeHRlbnNpb25Qcm9wcyhpbnRlcmFjdGlvbkNvbmZpZyk7XG4gICAgY29uc3QgZ2V0UGl4ZWxPZmZzZXQgPSBnZXRUZXh0T2Zmc2V0QnlSYWRpdXMoXG4gICAgICByYWRpdXNTY2FsZSxcbiAgICAgIGRhdGEuZ2V0UmFkaXVzLFxuICAgICAgbWFwU3RhdGUsXG4gICAgICBmaXhlZFJhZGl1c1xuICAgICk7XG4gICAgY29uc3QgZXh0ZW5zaW9ucyA9IFsuLi5kZWZhdWx0TGF5ZXJQcm9wcy5leHRlbnNpb25zLCBicnVzaGluZ0V4dGVuc2lvbl07XG5cbiAgICBjb25zdCBzaGFyZWRQcm9wcyA9IHtcbiAgICAgIGdldEZpbHRlclZhbHVlOiBkYXRhLmdldEZpbHRlclZhbHVlLFxuICAgICAgZXh0ZW5zaW9ucyxcbiAgICAgIGZpbHRlclJhbmdlOiBkZWZhdWx0TGF5ZXJQcm9wcy5maWx0ZXJSYW5nZSxcbiAgICAgIHZpc2libGU6IGRlZmF1bHRMYXllclByb3BzLnZpc2libGUsXG4gICAgICAuLi5icnVzaGluZ1Byb3BzXG4gICAgfTtcbiAgICBjb25zdCBob3ZlcmVkT2JqZWN0ID0gdGhpcy5oYXNIb3ZlcmVkT2JqZWN0KG9iamVjdEhvdmVyZWQpO1xuXG4gICAgY29uc3QgdGV4dExhYmVsTGF5ZXIgPSB0aGlzLnJlbmRlclRleHRMYWJlbExheWVyKFxuICAgICAge1xuICAgICAgICBnZXRQb3NpdGlvbjogZGF0YS5nZXRQb3NpdGlvbixcbiAgICAgICAgc2hhcmVkUHJvcHMsXG4gICAgICAgIGdldFBpeGVsT2Zmc2V0LFxuICAgICAgICB1cGRhdGVUcmlnZ2Vyc1xuICAgICAgfSxcbiAgICAgIG9wdHNcbiAgICApO1xuICAgIGNvbnN0IGNvbW1vbkxheWVyUHJvcHMgPSB7XG4gICAgICAuLi5kZWZhdWx0TGF5ZXJQcm9wcyxcbiAgICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgICAgLy8gY2lyY2xlcyB3aWxsIGJlIGZsYXQgb24gdGhlIG1hcCB3aGVuIHRoZSBhbHRpdHVkZSBjb2x1bW4gaXMgbm90IHVzZWRcbiAgICAgICAgZGVwdGhUZXN0OiB0aGlzLmNvbmZpZy5jb2x1bW5zLmFsdGl0dWRlPy5maWVsZElkeCA+IC0xXG4gICAgICB9XG4gICAgfTtcblxuICAgIGNvbnN0IGN1c3RvbU1hcmtlcnNGaWVsZCA9IHRoaXMuY29uZmlnLmN1c3RvbU1hcmtlcnNGaWVsZDtcbiAgICBjb25zdCB7Y3VzdG9tTWFya2VycywgY3VzdG9tTWFya2Vyc1VybCwgY3VzdG9tTWFya2Vyc1JhbmdlfSA9IHRoaXMuY29uZmlnLnZpc0NvbmZpZztcbiAgICBjb25zdCBjdXN0b21NYXJrZXJzQ29uZmlndXJlZCA9XG4gICAgICBjdXN0b21NYXJrZXJzICYmIEJvb2xlYW4oY3VzdG9tTWFya2Vyc1VybCB8fCAoY3VzdG9tTWFya2Vyc0ZpZWxkICYmIGN1c3RvbU1hcmtlcnNSYW5nZSkpO1xuICAgIGNvbnN0IGN1c3RvbU1hcmtlcnNNaXNDb25maWd1cmVkID0gY3VzdG9tTWFya2VycyAmJiAhY3VzdG9tTWFya2Vyc0NvbmZpZ3VyZWQ7XG5cbiAgICBpZiAoY3VzdG9tTWFya2Vyc0NvbmZpZ3VyZWQpIHtcbiAgICAgIGNvbnN0IG1heEljb25TaXplID0gdGhpcy5nZXRNYXhNYXJrZXJTaXplKCk7XG4gICAgICBjb25zdCB1c2VNYXNrID0gQm9vbGVhbih0aGlzLmNvbmZpZy52aXNDb25maWcuZmlsbGVkKTtcbiAgICAgIGNvbnN0IGljb25MYXllclByb3BzID0ge1xuICAgICAgICBnZXRJY29uOiB0aGlzLmdldEN1c3RvbU1hcmtlckljb25BY2Nlc3NvcihjdXN0b21NYXJrZXJzU3RhdHVzLCBkYXRhLmdldEljb25VcmwsIHVzZU1hc2spLFxuICAgICAgICBnZXRQb3NpdGlvbjogZGF0YS5nZXRQb3NpdGlvbixcbiAgICAgICAgZ2V0U2l6ZTogZGF0YS5nZXRSYWRpdXMsXG4gICAgICAgIGdldEFuZ2xlOiBuZWdhdGVBY2Nlc3NvcihkYXRhLmdldFJvdGF0aW9uKSxcbiAgICAgICAgc2l6ZVNjYWxlOiByYWRpdXNTY2FsZSxcbiAgICAgICAgc2l6ZVVuaXRzOiAncGl4ZWxzJyxcbiAgICAgICAgbG9hZE9wdGlvbnM6IHtcbiAgICAgICAgICBpbWFnZToge1xuICAgICAgICAgICAgdHlwZTogJ2ltYWdlYml0bWFwJ1xuICAgICAgICAgIH0sXG4gICAgICAgICAgaW1hZ2ViaXRtYXA6IHtcbiAgICAgICAgICAgIHJlc2l6ZVdpZHRoOiBtYXhJY29uU2l6ZSxcbiAgICAgICAgICAgIHJlc2l6ZUhlaWdodDogbWF4SWNvblNpemUsXG4gICAgICAgICAgICByZXNpemVRdWFsaXR5OiAnaGlnaCdcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgICBpZiAodXNlTWFzaykge1xuICAgICAgICBpY29uTGF5ZXJQcm9wcy5nZXRJY29uQ29sb3IgPSB0aGlzLmNvbmZpZy52aXNDb25maWcuZmlsbGVkXG4gICAgICAgICAgPyBkYXRhLmdldEZpbGxDb2xvclxuICAgICAgICAgIDogVU5LTk9XTl9DT0xPUjtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIFtcbiAgICAgICAgbmV3IEljb25MYXllcih7XG4gICAgICAgICAgLi4uY29tbW9uTGF5ZXJQcm9wcyxcbiAgICAgICAgICAuLi5pY29uTGF5ZXJQcm9wcyxcbiAgICAgICAgICBpZDogYCR7ZGVmYXVsdExheWVyUHJvcHMuaWR9LWljb25gLFxuICAgICAgICAgIGRhdGE6IGRhdGEuZGF0YSxcbiAgICAgICAgICBnZXRDb2xvcjogdGhpcy5jb25maWcudmlzQ29uZmlnLmZpbGxlZCA/IGRhdGEuZ2V0RmlsbENvbG9yIDogVU5LTk9XTl9DT0xPUixcbiAgICAgICAgICBnZXRGaWx0ZXJWYWx1ZTogZGF0YS5nZXRGaWx0ZXJWYWx1ZSxcbiAgICAgICAgICB1cGRhdGVUcmlnZ2Vyczoge1xuICAgICAgICAgICAgZ2V0RmlsdGVyVmFsdWU6IHVwZGF0ZVRyaWdnZXJzLmdldEZpbHRlclZhbHVlLFxuICAgICAgICAgICAgZ2V0Q29sb3I6IFt1cGRhdGVUcmlnZ2Vycy5nZXRGaWxsQ29sb3IsIHRoaXMuY29uZmlnLnZpc0NvbmZpZy5maWxsZWRdLFxuICAgICAgICAgICAgZ2V0SWNvbjogW3VwZGF0ZVRyaWdnZXJzLmdldEljb25VcmwsIG1heEljb25TaXplLCBjdXN0b21NYXJrZXJzU3RhdHVzLCB1c2VNYXNrXSxcbiAgICAgICAgICAgIGdldFNpemU6IHVwZGF0ZVRyaWdnZXJzLmdldFJhZGl1cyxcbiAgICAgICAgICAgIGdldEFuZ2xlOiB1cGRhdGVUcmlnZ2Vycy5nZXRSb3RhdGlvblxuICAgICAgICAgIH1cbiAgICAgICAgfSksXG4gICAgICAgIC4uLihob3ZlcmVkT2JqZWN0XG4gICAgICAgICAgPyBbXG4gICAgICAgICAgICAgIG5ldyBJY29uTGF5ZXIoe1xuICAgICAgICAgICAgICAgIC4uLmljb25MYXllclByb3BzLFxuICAgICAgICAgICAgICAgIC4uLnRoaXMuZ2V0RGVmYXVsdEhvdmVyTGF5ZXJQcm9wcygpLFxuICAgICAgICAgICAgICAgIGlkOiBgJHtkZWZhdWx0TGF5ZXJQcm9wcy5pZH0taWNvbi1ob3ZlcmVkYCxcbiAgICAgICAgICAgICAgICBkYXRhOiBbaG92ZXJlZE9iamVjdF0sXG4gICAgICAgICAgICAgICAgZ2V0Q29sb3I6IHRoaXMuY29uZmlnLmhpZ2hsaWdodENvbG9yXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICBdXG4gICAgICAgICAgOiBbXSksXG4gICAgICAgIC4uLnRleHRMYWJlbExheWVyXG4gICAgICBdO1xuICAgIH1cblxuICAgIGNvbnN0IHNjYXR0ZXJQbG90TGF5ZXJQcm9wcyA9IHtcbiAgICAgIHN0cm9rZWQ6IHRoaXMuY29uZmlnLnZpc0NvbmZpZy5vdXRsaW5lLFxuICAgICAgZmlsbGVkOiB0aGlzLmNvbmZpZy52aXNDb25maWcuZmlsbGVkLFxuICAgICAgbGluZVdpZHRoU2NhbGU6IHRoaXMuY29uZmlnLnZpc0NvbmZpZy50aGlja25lc3MsXG4gICAgICAvLyBUT0RPOiBpbnZlbnQgYmV0dGVyIHdheSB0byByZW5kZXIgc29tZXRoaW5nIHdoZW4gY3VzdG9tTWFya2VycyBhcmUgbm90IHlldCBjb25maWd1cmVkXG4gICAgICByYWRpdXNTY2FsZTogY3VzdG9tTWFya2Vyc01pc0NvbmZpZ3VyZWQgPyByYWRpdXNTY2FsZSAvIDIgOiByYWRpdXNTY2FsZSxcbiAgICAgIC4uLih0aGlzLmNvbmZpZy52aXNDb25maWcuZml4ZWRSYWRpdXMgPyB7fSA6IHtyYWRpdXNNYXhQaXhlbHM6IDUwMH0pXG4gICAgfTtcblxuICAgIHJldHVybiBbXG4gICAgICBuZXcgU2NhdHRlcnBsb3RMYXllcih7XG4gICAgICAgIC4uLmJydXNoaW5nUHJvcHMsXG4gICAgICAgIC4uLmRhdGEsXG4gICAgICAgIC4uLmNvbW1vbkxheWVyUHJvcHMsXG4gICAgICAgIC4uLnNjYXR0ZXJQbG90TGF5ZXJQcm9wcyxcbiAgICAgICAgcmFkaXVzVW5pdHMsXG4gICAgICAgIGxpbmVXaWR0aFVuaXRzOiAncGl4ZWxzJyxcbiAgICAgICAgdXBkYXRlVHJpZ2dlcnMsXG4gICAgICAgIGV4dGVuc2lvbnNcbiAgICAgIH0pLFxuICAgICAgLy8gaG92ZXIgbGF5ZXJcbiAgICAgIC4uLihob3ZlcmVkT2JqZWN0XG4gICAgICAgID8gW1xuICAgICAgICAgICAgbmV3IFNjYXR0ZXJwbG90TGF5ZXIoe1xuICAgICAgICAgICAgICAuLi50aGlzLmdldERlZmF1bHRIb3ZlckxheWVyUHJvcHMoKSxcbiAgICAgICAgICAgICAgLi4uc2NhdHRlclBsb3RMYXllclByb3BzLFxuICAgICAgICAgICAgICBkYXRhOiBbaG92ZXJlZE9iamVjdF0sXG4gICAgICAgICAgICAgIGdldExpbmVDb2xvcjogdGhpcy5jb25maWcuaGlnaGxpZ2h0Q29sb3IsXG4gICAgICAgICAgICAgIGdldEZpbGxDb2xvcjogdGhpcy5jb25maWcuaGlnaGxpZ2h0Q29sb3IsXG4gICAgICAgICAgICAgIGdldFJhZGl1czogZGF0YS5nZXRSYWRpdXMsXG4gICAgICAgICAgICAgIGdldFBvc2l0aW9uOiBkYXRhLmdldFBvc2l0aW9uXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIF1cbiAgICAgICAgOiBbXSksXG4gICAgICAvLyB0ZXh0IGxhYmVsIGxheWVyXG4gICAgICAuLi50ZXh0TGFiZWxMYXllclxuICAgIF07XG4gIH1cbn1cbiJdfQ==
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@carto/kepler.gl",
|
|
3
3
|
"author": "Shan He <shan@uber.com>",
|
|
4
|
-
"version": "0.0.
|
|
4
|
+
"version": "0.0.54-alpha-markers.1",
|
|
5
5
|
"description": "kepler.gl is a webgl based application to visualize large scale location data in the browser",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"main": "dist/index.js",
|
package/src/layers/base-layer.js
CHANGED
|
@@ -1378,7 +1378,7 @@ class Layer {
|
|
|
1378
1378
|
* @param {*} iconUrlAccessor deck.gl accessor (or value) that resolves to URL of icon for given row
|
|
1379
1379
|
* @returns deck.gl accessor that returns UnpackedIcon ready to consume by IconLayer
|
|
1380
1380
|
*/
|
|
1381
|
-
getCustomMarkerIconAccessor(customMarkersStatus, iconUrlAccessor) {
|
|
1381
|
+
getCustomMarkerIconAccessor(customMarkersStatus, iconUrlAccessor, mask = true) {
|
|
1382
1382
|
const maxIconSize = this.getMaxMarkerSize();
|
|
1383
1383
|
|
|
1384
1384
|
return d => {
|
|
@@ -1390,7 +1390,7 @@ class Layer {
|
|
|
1390
1390
|
url,
|
|
1391
1391
|
width: maxIconSize,
|
|
1392
1392
|
height: maxIconSize,
|
|
1393
|
-
mask
|
|
1393
|
+
mask
|
|
1394
1394
|
};
|
|
1395
1395
|
};
|
|
1396
1396
|
}
|
|
@@ -277,7 +277,7 @@ export default class PointLayer extends Layer {
|
|
|
277
277
|
);
|
|
278
278
|
}
|
|
279
279
|
|
|
280
|
-
// eslint-disable-next-line complexity
|
|
280
|
+
// eslint-disable-next-line complexity, max-statements
|
|
281
281
|
renderLayer(opts) {
|
|
282
282
|
const {data, gpuFilter, objectHovered, mapState, interactionConfig, customMarkersStatus} = opts;
|
|
283
283
|
|
|
@@ -336,9 +336,9 @@ export default class PointLayer extends Layer {
|
|
|
336
336
|
|
|
337
337
|
if (customMarkersConfigured) {
|
|
338
338
|
const maxIconSize = this.getMaxMarkerSize();
|
|
339
|
-
const
|
|
339
|
+
const useMask = Boolean(this.config.visConfig.filled);
|
|
340
340
|
const iconLayerProps = {
|
|
341
|
-
getIcon,
|
|
341
|
+
getIcon: this.getCustomMarkerIconAccessor(customMarkersStatus, data.getIconUrl, useMask),
|
|
342
342
|
getPosition: data.getPosition,
|
|
343
343
|
getSize: data.getRadius,
|
|
344
344
|
getAngle: negateAccessor(data.getRotation),
|
|
@@ -355,6 +355,11 @@ export default class PointLayer extends Layer {
|
|
|
355
355
|
}
|
|
356
356
|
}
|
|
357
357
|
};
|
|
358
|
+
if (useMask) {
|
|
359
|
+
iconLayerProps.getIconColor = this.config.visConfig.filled
|
|
360
|
+
? data.getFillColor
|
|
361
|
+
: UNKNOWN_COLOR;
|
|
362
|
+
}
|
|
358
363
|
|
|
359
364
|
return [
|
|
360
365
|
new IconLayer({
|
|
@@ -367,7 +372,7 @@ export default class PointLayer extends Layer {
|
|
|
367
372
|
updateTriggers: {
|
|
368
373
|
getFilterValue: updateTriggers.getFilterValue,
|
|
369
374
|
getColor: [updateTriggers.getFillColor, this.config.visConfig.filled],
|
|
370
|
-
getIcon: [updateTriggers.getIconUrl, maxIconSize, customMarkersStatus],
|
|
375
|
+
getIcon: [updateTriggers.getIconUrl, maxIconSize, customMarkersStatus, useMask],
|
|
371
376
|
getSize: updateTriggers.getRadius,
|
|
372
377
|
getAngle: updateTriggers.getRotation
|
|
373
378
|
}
|