@codingame/monaco-editor-wrapper 2.3.0 → 3.1.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.
- package/README.md +1 -3
- package/dist/_monaco-editor_commonjs-external.js +28 -2
- package/dist/configuration/index.d.ts +3 -3
- package/dist/css.worker.js +1 -1
- package/dist/features/extensionConfigurations.js +1 -2
- package/dist/features/htmlContribution.js +7 -7
- package/dist/features/jsonContribution.js +6 -66
- package/dist/features/typescriptContribution.d.ts +0 -4
- package/dist/features/typescriptContribution.js +1 -29
- package/dist/hacks.d.ts +15 -2
- package/dist/html.worker.js +1 -1
- package/dist/index.d.ts +1 -4
- package/dist/index.js +1343 -4899
- package/dist/index2.js +2191 -1309
- package/dist/json.worker.js +1 -1
- package/dist/keybindings/index.d.ts +1 -1
- package/dist/languages/extensions/extensionConfigurationLoader.d.ts +2 -2
- package/dist/languages/extensions/languageConfigurationLoader.d.ts +1 -10
- package/dist/languages/extensions/snippetLoader.d.ts +1 -2
- package/dist/languages/extensions/themeLoader.d.ts +1 -2
- package/dist/languages/index.d.ts +1 -0
- package/dist/languages/textMate/index.d.ts +0 -2
- package/dist/main.js +4342 -10
- package/dist/monaco.d.ts +2 -2
- package/dist/theme/index.d.ts +2 -2
- package/dist/ts.worker.js +1 -1
- package/dist/vim.js +45 -20
- package/dist/worker.js +1 -1
- package/package.json +27 -26
- package/stats.html +1455 -110
- package/dist/_rollupPluginBabelHelpers.js +0 -42
- package/dist/index3.js +0 -2208
- package/dist/keybindings/keybindingHelper.d.ts +0 -2
- package/dist/languages/monarch/index.d.ts +0 -7
- package/dist/languages/monarch/stub-generator.d.ts +0 -2
- package/dist/languages/textMate/CGTMGrammarFactory.d.ts +0 -5
- package/dist/languages/textMate/CGTMTokenizationSupport.d.ts +0 -8
- package/dist/stub-generator.js +0 -15
- package/dist/theme/registry.d.ts +0 -9
- package/dist/theme/semanticHighlight.d.ts +0 -1
- package/dist/theme/tools.d.ts +0 -12
package/dist/html.worker.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { c as createBase64WorkerFactory } from './worker.js';
|
|
2
2
|
|
|
3
|
-
var WorkerFactory = createBase64WorkerFactory('Lyogcm9sbHVwLXBsdWdpbi13ZWItd29ya2VyLWxvYWRlciAqLwohZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7Y2xhc3MgZXtjb25zdHJ1Y3Rvcigpe3RoaXMubGlzdGVuZXJzPVtdLHRoaXMudW5leHBlY3RlZEVycm9ySGFuZGxlcj1mdW5jdGlvbihlKXtzZXRUaW1lb3V0KCgoKT0+e2lmKGUuc3RhY2spdGhyb3cgbmV3IEVycm9yKGUubWVzc2FnZSsiXG5cbiIrZS5zdGFjayk7dGhyb3cgZX0pLDApfX1hZGRMaXN0ZW5lcihlKXtyZXR1cm4gdGhpcy5saXN0ZW5lcnMucHVzaChlKSwoKT0+e3RoaXMuX3JlbW92ZUxpc3RlbmVyKGUpfX1lbWl0KGUpe3RoaXMubGlzdGVuZXJzLmZvckVhY2goKHQ9Pnt0KGUpfSkpfV9yZW1vdmVMaXN0ZW5lcihlKXt0aGlzLmxpc3RlbmVycy5zcGxpY2UodGhpcy5saXN0ZW5lcnMuaW5kZXhPZihlKSwxKX1zZXRVbmV4cGVjdGVkRXJyb3JIYW5kbGVyKGUpe3RoaXMudW5leHBlY3RlZEVycm9ySGFuZGxlcj1lfWdldFVuZXhwZWN0ZWRFcnJvckhhbmRsZXIoKXtyZXR1cm4gdGhpcy51bmV4cGVjdGVkRXJyb3JIYW5kbGVyfW9uVW5leHBlY3RlZEVycm9yKGUpe3RoaXMudW5leHBlY3RlZEVycm9ySGFuZGxlcihlKSx0aGlzLmVtaXQoZSl9b25VbmV4cGVjdGVkRXh0ZXJuYWxFcnJvcihlKXt0aGlzLnVuZXhwZWN0ZWRFcnJvckhhbmRsZXIoZSl9fWNvbnN0IHQ9bmV3IGU7ZnVuY3Rpb24gbihlKXsoZnVuY3Rpb24oZSl7aWYoZSBpbnN0YW5jZW9mIGEpcmV0dXJuITA7cmV0dXJuIGUgaW5zdGFuY2VvZiBFcnJvciYmZS5uYW1lPT09aSYmZS5tZXNzYWdlPT09aX0pKGUpfHx0Lm9uVW5leHBlY3RlZEVycm9yKGUpfWZ1bmN0aW9uIHIoZSl7aWYoZSBpbnN0YW5jZW9mIEVycm9yKXtsZXR7bmFtZTp0LG1lc3NhZ2U6bn09ZTtyZXR1cm57JGlzRXJyb3I6ITAsbmFtZTp0LG1lc3NhZ2U6bixzdGFjazplLnN0YWNrdHJhY2V8fGUuc3RhY2t9fXJldHVybiBlfWNvbnN0IGk9IkNhbmNlbGVkIjtjbGFzcyBhIGV4dGVuZHMgRXJyb3J7Y29uc3RydWN0b3IoKXtzdXBlcihpKSx0aGlzLm5hbWU9dGhpcy5tZXNzYWdlfX1mdW5jdGlvbiBvKGUpe2NvbnN0IHQ9dGhpcztsZXQgbixyPSExO3JldHVybiBmdW5jdGlvbigpe3JldHVybiByfHwocj0hMCxuPWUuYXBwbHkodCxhcmd1bWVudHMpKSxufX12YXIgcyxsOyFmdW5jdGlvbihlKXtlLmlzPWZ1bmN0aW9uKGUpe3JldHVybiBlJiYib2JqZWN0Ij09dHlwZW9mIGUmJiJmdW5jdGlvbiI9PXR5cGVvZiBlW1N5bWJvbC5pdGVyYXRvcl19O2NvbnN0IHQ9T2JqZWN0LmZyZWV6ZShbXSk7ZS5lbXB0eT1mdW5jdGlvbigpe3JldHVybiB0fSxlLnNpbmdsZT1mdW5jdGlvbiooZSl7eWllbGQgZX0sZS5mcm9tPWZ1bmN0aW9uKGUpe3JldHVybiBlfHx0fSxlLmlzRW1wdHk9ZnVuY3Rpb24oZSl7cmV0dXJuIWV8fCEwPT09ZVtTeW1ib2wuaXRlcmF0b3JdKCkubmV4dCgpLmRvbmV9LGUuZmlyc3Q9ZnVuY3Rpb24oZSl7cmV0dXJuIGVbU3ltYm9sLml0ZXJhdG9yXSgpLm5leHQoKS52YWx1ZX0sZS5zb21lPWZ1bmN0aW9uKGUsdCl7Zm9yKGNvbnN0IG4gb2YgZSlpZih0KG4pKXJldHVybiEwO3JldHVybiExfSxlLmZpbmQ9ZnVuY3Rpb24oZSx0KXtmb3IoY29uc3QgbiBvZiBlKWlmKHQobikpcmV0dXJuIG59LGUuZmlsdGVyPWZ1bmN0aW9uKihlLHQpe2Zvcihjb25zdCBuIG9mIGUpdChuKSYmKHlpZWxkIG4pfSxlLm1hcD1mdW5jdGlvbiooZSx0KXtsZXQgbj0wO2Zvcihjb25zdCByIG9mIGUpeWllbGQgdChyLG4rKyl9LGUuY29uY2F0PWZ1bmN0aW9uKiguLi5lKXtmb3IoY29uc3QgdCBvZiBlKWZvcihjb25zdCBlIG9mIHQpeWllbGQgZX0sZS5jb25jYXROZXN0ZWQ9ZnVuY3Rpb24qKGUpe2Zvcihjb25zdCB0IG9mIGUpZm9yKGNvbnN0IGUgb2YgdCl5aWVsZCBlfSxlLnJlZHVjZT1mdW5jdGlvbihlLHQsbil7bGV0IHI9bjtmb3IoY29uc3QgbiBvZiBlKXI9dChyLG4pO3JldHVybiByfSxlLnNsaWNlPWZ1bmN0aW9uKihlLHQsbj1lLmxlbmd0aCl7Zm9yKHQ8MCYmKHQrPWUubGVuZ3RoKSxuPDA/bis9ZS5sZW5ndGg6bj5lLmxlbmd0aCYmKG49ZS5sZW5ndGgpO3Q8bjt0KyspeWllbGQgZVt0XX0sZS5jb25zdW1lPWZ1bmN0aW9uKHQsbj1OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFkpe2NvbnN0IHI9W107aWYoMD09PW4pcmV0dXJuW3IsdF07Y29uc3QgaT10W1N5bWJvbC5pdGVyYXRvcl0oKTtmb3IobGV0IHQ9MDt0PG47dCsrKXtjb25zdCB0PWkubmV4dCgpO2lmKHQuZG9uZSlyZXR1cm5bcixlLmVtcHR5KCldO3IucHVzaCh0LnZhbHVlKX1yZXR1cm5bcix7W1N5bWJvbC5pdGVyYXRvcl06KCk9Pml9XX0sZS5lcXVhbHM9ZnVuY3Rpb24oZSx0LG49KChlLHQpPT5lPT09dCkpe2NvbnN0IHI9ZVtTeW1ib2wuaXRlcmF0b3JdKCksaT10W1N5bWJvbC5pdGVyYXRvcl0oKTtmb3IoOzspe2NvbnN0IGU9ci5uZXh0KCksdD1pLm5leHQoKTtpZihlLmRvbmUhPT10LmRvbmUpcmV0dXJuITE7aWYoZS5kb25lKXJldHVybiEwO2lmKCFuKGUudmFsdWUsdC52YWx1ZSkpcmV0dXJuITF9fX0oc3x8KHM9e30pKTtjbGFzcyBjIGV4dGVuZHMgRXJyb3J7Y29uc3RydWN0b3IoZSl7c3VwZXIoYEVuY291bnRlcmVkIGVycm9ycyB3aGlsZSBkaXNwb3Npbmcgb2Ygc3RvcmUuIEVycm9yczogWyR7ZS5qb2luKCIsICIpfV1gKSx0aGlzLmVycm9ycz1lfX1mdW5jdGlvbiBoKGUpe2lmKHMuaXMoZSkpe2xldCB0PVtdO2Zvcihjb25zdCBuIG9mIGUpaWYobil0cnl7bi5kaXNwb3NlKCl9Y2F0Y2goZSl7dC5wdXNoKGUpfWlmKDE9PT10Lmxlbmd0aCl0aHJvdyB0WzBdO2lmKHQubGVuZ3RoPjEpdGhyb3cgbmV3IGModCk7cmV0dXJuIEFycmF5LmlzQXJyYXkoZSk/W106ZX1pZihlKXJldHVybiBlLmRpc3Bvc2UoKSxlfWZ1bmN0aW9uIGQoZSl7cmV0dXJue2Rpc3Bvc2U6bygoKCk9PntlKCl9KSl9fWNsYXNzIHV7Y29uc3RydWN0b3IoKXt0aGlzLl90b0Rpc3Bvc2U9bmV3IFNldCx0aGlzLl9pc0Rpc3Bvc2VkPSExfWRpc3Bvc2UoKXt0aGlzLl9pc0Rpc3Bvc2VkfHwodGhpcy5faXNEaXNwb3NlZD0hMCx0aGlzLmNsZWFyKCkpfWdldCBpc0Rpc3Bvc2VkKCl7cmV0dXJuIHRoaXMuX2lzRGlzcG9zZWR9Y2xlYXIoKXt0cnl7aCh0aGlzLl90b0Rpc3Bvc2UudmFsdWVzKCkpfWZpbmFsbHl7dGhpcy5fdG9EaXNwb3NlLmNsZWFyKCl9fWFkZChlKXtpZighZSlyZXR1cm4gZTtpZihlPT09dGhpcyl0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCByZWdpc3RlciBhIGRpc3Bvc2FibGUgb24gaXRzZWxmISIpO3JldHVybiB0aGlzLl9pc0Rpc3Bvc2VkP3UuRElTQUJMRV9ESVNQT1NFRF9XQVJOSU5HfHxjb25zb2xlLndhcm4obmV3IEVycm9yKCJUcnlpbmcgdG8gYWRkIGEgZGlzcG9zYWJsZSB0byBhIERpc3Bvc2FibGVTdG9yZSB0aGF0IGhhcyBhbHJlYWR5IGJlZW4gZGlzcG9zZWQgb2YuIFRoZSBhZGRlZCBvYmplY3Qgd2lsbCBiZSBsZWFrZWQhIikuc3RhY2spOnRoaXMuX3RvRGlzcG9zZS5hZGQoZSksZX19dS5ESVNBQkxFX0RJU1BPU0VEX1dBUk5JTkc9ITE7Y2xhc3MgcHtjb25zdHJ1Y3Rvcigpe3RoaXMuX3N0b3JlPW5ldyB1LHRoaXMuX3N0b3JlfWRpc3Bvc2UoKXt0aGlzLl9zdG9yZS5kaXNwb3NlKCl9X3JlZ2lzdGVyKGUpe2lmKGU9PT10aGlzKXRocm93IG5ldyBFcnJvcigiQ2Fubm90IHJlZ2lzdGVyIGEgZGlzcG9zYWJsZSBvbiBpdHNlbGYhIik7cmV0dXJuIHRoaXMuX3N0b3JlLmFkZChlKX19cC5Ob25lPU9iamVjdC5mcmVlemUoe2Rpc3Bvc2UoKXt9fSk7Y2xhc3MgbXtjb25zdHJ1Y3Rvcigpe3RoaXMuZGlzcG9zZT0oKT0+e30sdGhpcy51bnNldD0oKT0+e30sdGhpcy5pc3NldD0oKT0+ITF9c2V0KGUpe2xldCB0PWU7cmV0dXJuIHRoaXMudW5zZXQ9KCk9PnQ9dm9pZCAwLHRoaXMuaXNzZXQ9KCk9PnZvaWQgMCE9PXQsdGhpcy5kaXNwb3NlPSgpPT57dCYmKHQoKSx0PXZvaWQgMCl9LHRoaXN9fWNsYXNzIGZ7Y29uc3RydWN0b3IoZSl7dGhpcy5lbGVtZW50PWUsdGhpcy5uZXh0PWYuVW5kZWZpbmVkLHRoaXMucHJldj1mLlVuZGVmaW5lZH19Zi5VbmRlZmluZWQ9bmV3IGYodm9pZCAwKTtjbGFzcyBne2NvbnN0cnVjdG9yKCl7dGhpcy5fZmlyc3Q9Zi5VbmRlZmluZWQsdGhpcy5fbGFzdD1mLlVuZGVmaW5lZCx0aGlzLl9zaXplPTB9Z2V0IHNpemUoKXtyZXR1cm4gdGhpcy5fc2l6ZX1pc0VtcHR5KCl7cmV0dXJuIHRoaXMuX2ZpcnN0PT09Zi5VbmRlZmluZWR9Y2xlYXIoKXtsZXQgZT10aGlzLl9maXJzdDtmb3IoO2UhPT1mLlVuZGVmaW5lZDspe2NvbnN0IHQ9ZS5uZXh0O2UucHJldj1mLlVuZGVmaW5lZCxlLm5leHQ9Zi5VbmRlZmluZWQsZT10fXRoaXMuX2ZpcnN0PWYuVW5kZWZpbmVkLHRoaXMuX2xhc3Q9Zi5VbmRlZmluZWQsdGhpcy5fc2l6ZT0wfXVuc2hpZnQoZSl7cmV0dXJuIHRoaXMuX2luc2VydChlLCExKX1wdXNoKGUpe3JldHVybiB0aGlzLl9pbnNlcnQoZSwhMCl9X2luc2VydChlLHQpe2NvbnN0IG49bmV3IGYoZSk7aWYodGhpcy5fZmlyc3Q9PT1mLlVuZGVmaW5lZCl0aGlzLl9maXJzdD1uLHRoaXMuX2xhc3Q9bjtlbHNlIGlmKHQpe2NvbnN0IGU9dGhpcy5fbGFzdDt0aGlzLl9sYXN0PW4sbi5wcmV2PWUsZS5uZXh0PW59ZWxzZXtjb25zdCBlPXRoaXMuX2ZpcnN0O3RoaXMuX2ZpcnN0PW4sbi5uZXh0PWUsZS5wcmV2PW59dGhpcy5fc2l6ZSs9MTtsZXQgcj0hMTtyZXR1cm4oKT0+e3J8fChyPSEwLHRoaXMuX3JlbW92ZShuKSl9fXNoaWZ0KCl7aWYodGhpcy5fZmlyc3QhPT1mLlVuZGVmaW5lZCl7Y29uc3QgZT10aGlzLl9maXJzdC5lbGVtZW50O3JldHVybiB0aGlzLl9yZW1vdmUodGhpcy5fZmlyc3QpLGV9fXBvcCgpe2lmKHRoaXMuX2xhc3QhPT1mLlVuZGVmaW5lZCl7Y29uc3QgZT10aGlzLl9sYXN0LmVsZW1lbnQ7cmV0dXJuIHRoaXMuX3JlbW92ZSh0aGlzLl9sYXN0KSxlfX1fcmVtb3ZlKGUpe2lmKGUucHJldiE9PWYuVW5kZWZpbmVkJiZlLm5leHQhPT1mLlVuZGVmaW5lZCl7Y29uc3QgdD1lLnByZXY7dC5uZXh0PWUubmV4dCxlLm5leHQucHJldj10fWVsc2UgZS5wcmV2PT09Zi5VbmRlZmluZWQmJmUubmV4dD09PWYuVW5kZWZpbmVkPyh0aGlzLl9maXJzdD1mLlVuZGVmaW5lZCx0aGlzLl9sYXN0PWYuVW5kZWZpbmVkKTplLm5leHQ9PT1mLlVuZGVmaW5lZD8odGhpcy5fbGFzdD10aGlzLl9sYXN0LnByZXYsdGhpcy5fbGFzdC5uZXh0PWYuVW5kZWZpbmVkKTplLnByZXY9PT1mLlVuZGVmaW5lZCYmKHRoaXMuX2ZpcnN0PXRoaXMuX2ZpcnN0Lm5leHQsdGhpcy5fZmlyc3QucHJldj1mLlVuZGVmaW5lZCk7dGhpcy5fc2l6ZS09MX0qW1N5bWJvbC5pdGVyYXRvcl0oKXtsZXQgZT10aGlzLl9maXJzdDtmb3IoO2UhPT1mLlVuZGVmaW5lZDspeWllbGQgZS5lbGVtZW50LGU9ZS5uZXh0fX1jb25zdCBiPSJlbiI7bGV0IHcsXyx2LHk9ITEsVD0hMSxrPSExLFM9ITEsQz1iO2NvbnN0IHg9Im9iamVjdCI9PXR5cGVvZiBzZWxmP3NlbGY6Im9iamVjdCI9PXR5cGVvZiBnbG9iYWw/Z2xvYmFsOnt9O2xldCBMO3ZvaWQgMCE9PXgudnNjb2RlJiZ2b2lkIDAhPT14LnZzY29kZS5wcm9jZXNzP0w9eC52c2NvZGUucHJvY2VzczoidW5kZWZpbmVkIiE9dHlwZW9mIHByb2Nlc3MmJihMPXByb2Nlc3MpO2NvbnN0IEU9InN0cmluZyI9PXR5cGVvZihudWxsPT09KGw9bnVsbD09TD92b2lkIDA6TC52ZXJzaW9ucyl8fHZvaWQgMD09PWw/dm9pZCAwOmwuZWxlY3Ryb24pJiYicmVuZGVyZXIiPT09KG51bGw9PUw/dm9pZCAwOkwudHlwZSk7aWYoIm9iamVjdCIhPXR5cGVvZiBuYXZpZ2F0b3J8fEUpaWYoIm9iamVjdCI9PXR5cGVvZiBMKXt5PSJ3aW4zMiI9PT1MLnBsYXRmb3JtLFQ9ImRhcndpbiI9PT1MLnBsYXRmb3JtLGs9ImxpbnV4Ij09PUwucGxhdGZvcm0sayYmTC5lbnYuU05BUCYmTC5lbnYuU05BUF9SRVZJU0lPTixMLmVudi5DSXx8TC5lbnYuQlVJTERfQVJUSUZBQ1RTVEFHSU5HRElSRUNUT1JZLHc9YixDPWI7Y29uc3QgZT1MLmVudi5WU0NPREVfTkxTX0NPTkZJRztpZihlKXRyeXtjb25zdCB0PUpTT04ucGFyc2UoZSksbj10LmF2YWlsYWJsZUxhbmd1YWdlc1siKiJdO3c9dC5sb2NhbGUsQz1ufHxiLF89dC5fdHJhbnNsYXRpb25zQ29uZmlnRmlsZX1jYXRjaChlKXt9fWVsc2UgY29uc29sZS5lcnJvcigiVW5hYmxlIHRvIHJlc29sdmUgcGxhdGZvcm0uIik7ZWxzZSB2PW5hdmlnYXRvci51c2VyQWdlbnQseT12LmluZGV4T2YoIldpbmRvd3MiKT49MCxUPXYuaW5kZXhPZigiTWFjaW50b3NoIik+PTAsKHYuaW5kZXhPZigiTWFjaW50b3NoIik+PTB8fHYuaW5kZXhPZigiaVBhZCIpPj0wfHx2LmluZGV4T2YoImlQaG9uZSIpPj0wKSYmbmF2aWdhdG9yLm1heFRvdWNoUG9pbnRzJiZuYXZpZ2F0b3IubWF4VG91Y2hQb2ludHMsaz12LmluZGV4T2YoIkxpbnV4Iik+PTAsUz0hMCx3PW5hdmlnYXRvci5sYW5ndWFnZSxDPXc7Y29uc3QgQT15LE09VDtTJiZ4LmltcG9ydFNjcmlwdHM7Y29uc3QgUj12OygoKT0+e2lmKCJmdW5jdGlvbiI9PXR5cGVvZiB4LnBvc3RNZXNzYWdlJiYheC5pbXBvcnRTY3JpcHRzKXtsZXQgZT1bXTt4LmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCh0PT57aWYodC5kYXRhJiZ0LmRhdGEudnNjb2RlU2NoZWR1bGVBc3luY1dvcmspZm9yKGxldCBuPTAscj1lLmxlbmd0aDtuPHI7bisrKXtjb25zdCByPWVbbl07aWYoci5pZD09PXQuZGF0YS52c2NvZGVTY2hlZHVsZUFzeW5jV29yaylyZXR1cm4gZS5zcGxpY2UobiwxKSx2b2lkIHIuY2FsbGJhY2soKX19KSk7bGV0IHQ9MDtyZXR1cm4gbj0+e2NvbnN0IHI9Kyt0O2UucHVzaCh7aWQ6cixjYWxsYmFjazpufSkseC5wb3N0TWVzc2FnZSh7dnNjb2RlU2NoZWR1bGVBc3luY1dvcms6cn0sIioiKX19fSkoKTtjb25zdCBOPSEhKFImJlIuaW5kZXhPZigiQ2hyb21lIik+PTApO1ImJlIuaW5kZXhPZigiRmlyZWZveCIpLCFOJiZSJiZSLmluZGV4T2YoIlNhZmFyaSIpLFImJlIuaW5kZXhPZigiRWRnLyIpLFImJlIuaW5kZXhPZigiQW5kcm9pZCIpO2NvbnN0IEk9eC5wZXJmb3JtYW5jZSYmImZ1bmN0aW9uIj09dHlwZW9mIHgucGVyZm9ybWFuY2Uubm93O2NsYXNzIFV7Y29uc3RydWN0b3IoZSl7dGhpcy5faGlnaFJlc29sdXRpb249SSYmZSx0aGlzLl9zdGFydFRpbWU9dGhpcy5fbm93KCksdGhpcy5fc3RvcFRpbWU9LTF9c3RhdGljIGNyZWF0ZShlPSEwKXtyZXR1cm4gbmV3IFUoZSl9c3RvcCgpe3RoaXMuX3N0b3BUaW1lPXRoaXMuX25vdygpfWVsYXBzZWQoKXtyZXR1cm4tMSE9PXRoaXMuX3N0b3BUaW1lP3RoaXMuX3N0b3BUaW1lLXRoaXMuX3N0YXJ0VGltZTp0aGlzLl9ub3coKS10aGlzLl9zdGFydFRpbWV9X25vdygpe3JldHVybiB0aGlzLl9oaWdoUmVzb2x1dGlvbj94LnBlcmZvcm1hbmNlLm5vdygpOkRhdGUubm93KCl9fXZhciBILEQ7IWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoZSl7cmV0dXJuKHQsbj1udWxsLHIpPT57bGV0IGksYT0hMTtyZXR1cm4gaT1lKChlPT57aWYoIWEpcmV0dXJuIGk/aS5kaXNwb3NlKCk6YT0hMCx0LmNhbGwobixlKX0pLG51bGwsciksYSYmaS5kaXNwb3NlKCksaX19ZnVuY3Rpb24gbihlLHQsbil7cmV0dXJuIG8oKChuLHI9bnVsbCxpKT0+ZSgoZT0+bi5jYWxsKHIsdChlKSkpLG51bGwsaSkpLG4pfWZ1bmN0aW9uIHIoZSx0LG4pe3JldHVybiBvKCgobixyPW51bGwsaSk9PmUoKGU9Pnt0KGUpLG4uY2FsbChyLGUpfSksbnVsbCxpKSksbil9ZnVuY3Rpb24gaShlLHQsbil7cmV0dXJuIG8oKChuLHI9bnVsbCxpKT0+ZSgoZT0+dChlKSYmbi5jYWxsKHIsZSkpLG51bGwsaSkpLG4pfWZ1bmN0aW9uIGEoZSx0LHIsaSl7bGV0IGE9cjtyZXR1cm4gbihlLChlPT4oYT10KGEsZSksYSkpLGkpfWZ1bmN0aW9uIG8oZSx0KXtsZXQgbjtjb25zdCByPW5ldyBQKHtvbkZpcnN0TGlzdGVuZXJBZGQoKXtuPWUoci5maXJlLHIpfSxvbkxhc3RMaXN0ZW5lclJlbW92ZSgpe24uZGlzcG9zZSgpfX0pO3JldHVybiB0JiZ0LmFkZChyKSxyLmV2ZW50fWZ1bmN0aW9uIHMoZSx0LG49MTAwLHI9ITEsaSxhKXtsZXQgbyxzLGwsYz0wO2NvbnN0IGg9bmV3IFAoe2xlYWtXYXJuaW5nVGhyZXNob2xkOmksb25GaXJzdExpc3RlbmVyQWRkKCl7bz1lKChlPT57YysrLHM9dChzLGUpLHImJiFsJiYoaC5maXJlKHMpLHM9dm9pZCAwKSxjbGVhclRpbWVvdXQobCksbD1zZXRUaW1lb3V0KCgoKT0+e2NvbnN0IGU9cztzPXZvaWQgMCxsPXZvaWQgMCwoIXJ8fGM+MSkmJmguZmlyZShlKSxjPTB9KSxuKX0pKX0sb25MYXN0TGlzdGVuZXJSZW1vdmUoKXtvLmRpc3Bvc2UoKX19KTtyZXR1cm4gYSYmYS5hZGQoaCksaC5ldmVudH1mdW5jdGlvbiBsKGUsdD0oKGUsdCk9PmU9PT10KSxuKXtsZXQgcixhPSEwO3JldHVybiBpKGUsKGU9Pntjb25zdCBuPWF8fCF0KGUscik7cmV0dXJuIGE9ITEscj1lLG59KSxuKX1lLk5vbmU9KCk9PnAuTm9uZSxlLm9uY2U9dCxlLm1hcD1uLGUuZm9yRWFjaD1yLGUuZmlsdGVyPWksZS5zaWduYWw9ZnVuY3Rpb24oZSl7cmV0dXJuIGV9LGUuYW55PWZ1bmN0aW9uKC4uLmUpe3JldHVybih0LG49bnVsbCxyKT0+ZnVuY3Rpb24oLi4uZSl7cmV0dXJuIGQoKCgpPT5oKGUpKSl9KC4uLmUubWFwKChlPT5lKChlPT50LmNhbGwobixlKSksbnVsbCxyKSkpKX0sZS5yZWR1Y2U9YSxlLmRlYm91bmNlPXMsZS5sYXRjaD1sLGUuc3BsaXQ9ZnVuY3Rpb24odCxuLHIpe3JldHVybltlLmZpbHRlcih0LG4sciksZS5maWx0ZXIodCwoZT0+IW4oZSkpLHIpXX0sZS5idWZmZXI9ZnVuY3Rpb24oZSx0PSExLG49W10pe2xldCByPW4uc2xpY2UoKSxpPWUoKGU9PntyP3IucHVzaChlKTpvLmZpcmUoZSl9KSk7Y29uc3QgYT0oKT0+e3ImJnIuZm9yRWFjaCgoZT0+by5maXJlKGUpKSkscj1udWxsfSxvPW5ldyBQKHtvbkZpcnN0TGlzdGVuZXJBZGQoKXtpfHwoaT1lKChlPT5vLmZpcmUoZSkpKSl9LG9uRmlyc3RMaXN0ZW5lckRpZEFkZCgpe3ImJih0P3NldFRpbWVvdXQoYSk6YSgpKX0sb25MYXN0TGlzdGVuZXJSZW1vdmUoKXtpJiZpLmRpc3Bvc2UoKSxpPW51bGx9fSk7cmV0dXJuIG8uZXZlbnR9O2NsYXNzIGN7Y29uc3RydWN0b3IoZSl7dGhpcy5ldmVudD1lfW1hcChlKXtyZXR1cm4gbmV3IGMobih0aGlzLmV2ZW50LGUpKX1mb3JFYWNoKGUpe3JldHVybiBuZXcgYyhyKHRoaXMuZXZlbnQsZSkpfWZpbHRlcihlKXtyZXR1cm4gbmV3IGMoaSh0aGlzLmV2ZW50LGUpKX1yZWR1Y2UoZSx0KXtyZXR1cm4gbmV3IGMoYSh0aGlzLmV2ZW50LGUsdCkpfWxhdGNoKCl7cmV0dXJuIG5ldyBjKGwodGhpcy5ldmVudCkpfWRlYm91bmNlKGUsdD0xMDAsbj0hMSxyKXtyZXR1cm4gbmV3IGMocyh0aGlzLmV2ZW50LGUsdCxuLHIpKX1vbihlLHQsbil7cmV0dXJuIHRoaXMuZXZlbnQoZSx0LG4pfW9uY2UoZSxuLHIpe3JldHVybiB0KHRoaXMuZXZlbnQpKGUsbixyKX19ZS5jaGFpbj1mdW5jdGlvbihlKXtyZXR1cm4gbmV3IGMoZSl9LGUuZnJvbU5vZGVFdmVudEVtaXR0ZXI9ZnVuY3Rpb24oZSx0LG49KGU9PmUpKXtjb25zdCByPSguLi5lKT0+aS5maXJlKG4oLi4uZSkpLGk9bmV3IFAoe29uRmlyc3RMaXN0ZW5lckFkZDooKT0+ZS5vbih0LHIpLG9uTGFzdExpc3RlbmVyUmVtb3ZlOigpPT5lLnJlbW92ZUxpc3RlbmVyKHQscil9KTtyZXR1cm4gaS5ldmVudH0sZS5mcm9tRE9NRXZlbnRFbWl0dGVyPWZ1bmN0aW9uKGUsdCxuPShlPT5lKSl7Y29uc3Qgcj0oLi4uZSk9PmkuZmlyZShuKC4uLmUpKSxpPW5ldyBQKHtvbkZpcnN0TGlzdGVuZXJBZGQ6KCk9PmUuYWRkRXZlbnRMaXN0ZW5lcih0LHIpLG9uTGFzdExpc3RlbmVyUmVtb3ZlOigpPT5lLnJlbW92ZUV2ZW50TGlzdGVuZXIodCxyKX0pO3JldHVybiBpLmV2ZW50fSxlLnRvUHJvbWlzZT1mdW5jdGlvbihlKXtyZXR1cm4gbmV3IFByb21pc2UoKG49PnQoZSkobikpKX0sZS5ydW5BbmRTdWJzY3JpYmU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdCh2b2lkIDApLGUoKGU9PnQoZSkpKX0sZS5ydW5BbmRTdWJzY3JpYmVXaXRoU3RvcmU9ZnVuY3Rpb24oZSx0KXtsZXQgbj1udWxsO2Z1bmN0aW9uIHIoZSl7bnVsbD09bnx8bi5kaXNwb3NlKCksbj1uZXcgdSx0KGUsbil9cih2b2lkIDApO2NvbnN0IGk9ZSgoZT0+cihlKSkpO3JldHVybiBkKCgoKT0+e2kuZGlzcG9zZSgpLG51bGw9PW58fG4uZGlzcG9zZSgpfSkpfX0oSHx8KEg9e30pKTtjbGFzcyB6e2NvbnN0cnVjdG9yKGUpe3RoaXMuX2xpc3RlbmVyQ291bnQ9MCx0aGlzLl9pbnZvY2F0aW9uQ291bnQ9MCx0aGlzLl9lbGFwc2VkT3ZlcmFsbD0wLHRoaXMuX25hbWU9YCR7ZX1fJHt6Ll9pZFBvb2wrK31gfXN0YXJ0KGUpe3RoaXMuX3N0b3BXYXRjaD1uZXcgVSghMCksdGhpcy5fbGlzdGVuZXJDb3VudD1lfXN0b3AoKXtpZih0aGlzLl9zdG9wV2F0Y2gpe2NvbnN0IGU9dGhpcy5fc3RvcFdhdGNoLmVsYXBzZWQoKTt0aGlzLl9lbGFwc2VkT3ZlcmFsbCs9ZSx0aGlzLl9pbnZvY2F0aW9uQ291bnQrPTEsY29uc29sZS5pbmZvKGBkaWQgRklSRSAke3RoaXMuX25hbWV9OiBlbGFwc2VkX21zOiAke2UudG9GaXhlZCg1KX0sIGxpc3RlbmVyOiAke3RoaXMuX2xpc3RlbmVyQ291bnR9IChlbGFwc2VkX292ZXJhbGw6ICR7dGhpcy5fZWxhcHNlZE92ZXJhbGwudG9GaXhlZCgyKX0sIGludm9jYXRpb25zOiAke3RoaXMuX2ludm9jYXRpb25Db3VudH0pYCksdGhpcy5fc3RvcFdhdGNoPXZvaWQgMH19fXouX2lkUG9vbD0wO2NsYXNzIFd7Y29uc3RydWN0b3IoZSl7dGhpcy52YWx1ZT1lfXN0YXRpYyBjcmVhdGUoKXt2YXIgZTtyZXR1cm4gbmV3IFcobnVsbCE9PShlPShuZXcgRXJyb3IpLnN0YWNrKSYmdm9pZCAwIT09ZT9lOiIiKX1wcmludCgpe2NvbnNvbGUud2Fybih0aGlzLnZhbHVlLnNwbGl0KCJcbiIpLnNsaWNlKDIpLmpvaW4oIlxuIikpfX1jbGFzcyBPe2NvbnN0cnVjdG9yKGUsdCxuKXt0aGlzLmNhbGxiYWNrPWUsdGhpcy5jYWxsYmFja1RoaXM9dCx0aGlzLnN0YWNrPW4sdGhpcy5zdWJzY3JpcHRpb249bmV3IG19aW52b2tlKGUpe3RoaXMuY2FsbGJhY2suY2FsbCh0aGlzLmNhbGxiYWNrVGhpcyxlKX19Y2xhc3MgUHtjb25zdHJ1Y3RvcihlKXt2YXIgdDt0aGlzLl9kaXNwb3NlZD0hMSx0aGlzLl9vcHRpb25zPWUsdGhpcy5fbGVha2FnZU1vbj12b2lkIDAsdGhpcy5fcGVyZk1vbj0obnVsbD09PSh0PXRoaXMuX29wdGlvbnMpfHx2b2lkIDA9PT10P3ZvaWQgMDp0Ll9wcm9mTmFtZSk/bmV3IHoodGhpcy5fb3B0aW9ucy5fcHJvZk5hbWUpOnZvaWQgMH1kaXNwb3NlKCl7dmFyIGUsdCxuLHI7dGhpcy5fZGlzcG9zZWR8fCh0aGlzLl9kaXNwb3NlZD0hMCx0aGlzLl9saXN0ZW5lcnMmJnRoaXMuX2xpc3RlbmVycy5jbGVhcigpLG51bGw9PT0oZT10aGlzLl9kZWxpdmVyeVF1ZXVlKXx8dm9pZCAwPT09ZXx8ZS5jbGVhcigpLG51bGw9PT0obj1udWxsPT09KHQ9dGhpcy5fb3B0aW9ucyl8fHZvaWQgMD09PXQ/dm9pZCAwOnQub25MYXN0TGlzdGVuZXJSZW1vdmUpfHx2b2lkIDA9PT1ufHxuLmNhbGwodCksbnVsbD09PShyPXRoaXMuX2xlYWthZ2VNb24pfHx2b2lkIDA9PT1yfHxyLmRpc3Bvc2UoKSl9Z2V0IGV2ZW50KCl7cmV0dXJuIHRoaXMuX2V2ZW50fHwodGhpcy5fZXZlbnQ9KGUsdCxuKT0+e3ZhciByLGksYTt0aGlzLl9saXN0ZW5lcnN8fCh0aGlzLl9saXN0ZW5lcnM9bmV3IGcpO2NvbnN0IG89dGhpcy5fbGlzdGVuZXJzLmlzRW1wdHkoKTtsZXQgcyxsO28mJihudWxsPT09KHI9dGhpcy5fb3B0aW9ucyl8fHZvaWQgMD09PXI/dm9pZCAwOnIub25GaXJzdExpc3RlbmVyQWRkKSYmdGhpcy5fb3B0aW9ucy5vbkZpcnN0TGlzdGVuZXJBZGQodGhpcyksdGhpcy5fbGVha2FnZU1vbiYmdGhpcy5fbGlzdGVuZXJzLnNpemU+PTMwJiYobD1XLmNyZWF0ZSgpLHM9dGhpcy5fbGVha2FnZU1vbi5jaGVjayhsLHRoaXMuX2xpc3RlbmVycy5zaXplKzEpKTtjb25zdCBjPW5ldyBPKGUsdCxsKSxoPXRoaXMuX2xpc3RlbmVycy5wdXNoKGMpO28mJihudWxsPT09KGk9dGhpcy5fb3B0aW9ucyl8fHZvaWQgMD09PWk/dm9pZCAwOmkub25GaXJzdExpc3RlbmVyRGlkQWRkKSYmdGhpcy5fb3B0aW9ucy5vbkZpcnN0TGlzdGVuZXJEaWRBZGQodGhpcyksKG51bGw9PT0oYT10aGlzLl9vcHRpb25zKXx8dm9pZCAwPT09YT92b2lkIDA6YS5vbkxpc3RlbmVyRGlkQWRkKSYmdGhpcy5fb3B0aW9ucy5vbkxpc3RlbmVyRGlkQWRkKHRoaXMsZSx0KTtjb25zdCBkPWMuc3Vic2NyaXB0aW9uLnNldCgoKCk9PntpZihzJiZzKCksIXRoaXMuX2Rpc3Bvc2VkJiYoaCgpLHRoaXMuX29wdGlvbnMmJnRoaXMuX29wdGlvbnMub25MYXN0TGlzdGVuZXJSZW1vdmUpKXt0aGlzLl9saXN0ZW5lcnMmJiF0aGlzLl9saXN0ZW5lcnMuaXNFbXB0eSgpfHx0aGlzLl9vcHRpb25zLm9uTGFzdExpc3RlbmVyUmVtb3ZlKHRoaXMpfX0pKTtyZXR1cm4gbiBpbnN0YW5jZW9mIHU/bi5hZGQoZCk6QXJyYXkuaXNBcnJheShuKSYmbi5wdXNoKGQpLGR9KSx0aGlzLl9ldmVudH1maXJlKGUpe3ZhciB0LHI7aWYodGhpcy5fbGlzdGVuZXJzKXt0aGlzLl9kZWxpdmVyeVF1ZXVlfHwodGhpcy5fZGVsaXZlcnlRdWV1ZT1uZXcgZyk7Zm9yKGxldCB0IG9mIHRoaXMuX2xpc3RlbmVycyl0aGlzLl9kZWxpdmVyeVF1ZXVlLnB1c2goW3QsZV0pO2ZvcihudWxsPT09KHQ9dGhpcy5fcGVyZk1vbil8fHZvaWQgMD09PXR8fHQuc3RhcnQodGhpcy5fZGVsaXZlcnlRdWV1ZS5zaXplKTt0aGlzLl9kZWxpdmVyeVF1ZXVlLnNpemU+MDspe2NvbnN0W2UsdF09dGhpcy5fZGVsaXZlcnlRdWV1ZS5zaGlmdCgpO3RyeXtlLmludm9rZSh0KX1jYXRjaChlKXtuKGUpfX1udWxsPT09KHI9dGhpcy5fcGVyZk1vbil8fHZvaWQgMD09PXJ8fHIuc3RvcCgpfX19ZnVuY3Rpb24gcShlKXtjb25zdCB0PVtdO2Zvcihjb25zdCBuIG9mIGZ1bmN0aW9uKGUpe2xldCB0PVtdLG49T2JqZWN0LmdldFByb3RvdHlwZU9mKGUpO2Zvcig7T2JqZWN0LnByb3RvdHlwZSE9PW47KXQ9dC5jb25jYXQoT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMobikpLG49T2JqZWN0LmdldFByb3RvdHlwZU9mKG4pO3JldHVybiB0fShlKSkiZnVuY3Rpb24iPT10eXBlb2YgZVtuXSYmdC5wdXNoKG4pO3JldHVybiB0fWZ1bmN0aW9uIEYoZSx0PSJVbnJlYWNoYWJsZSIpe3Rocm93IG5ldyBFcnJvcih0KX1jbGFzcyBCe2NvbnN0cnVjdG9yKGUpe3RoaXMuZXhlY3V0b3I9ZSx0aGlzLl9kaWRSdW49ITF9Z2V0VmFsdWUoKXtpZighdGhpcy5fZGlkUnVuKXRyeXt0aGlzLl92YWx1ZT10aGlzLmV4ZWN1dG9yKCl9Y2F0Y2goZSl7dGhpcy5fZXJyb3I9ZX1maW5hbGx5e3RoaXMuX2RpZFJ1bj0hMH1pZih0aGlzLl9lcnJvcil0aHJvdyB0aGlzLl9lcnJvcjtyZXR1cm4gdGhpcy5fdmFsdWV9Z2V0IHJhd1ZhbHVlKCl7cmV0dXJuIHRoaXMuX3ZhbHVlfX1mdW5jdGlvbiBWKGUsdCxuPTAscj1lLmxlbmd0aCxpPTAsYT10Lmxlbmd0aCl7Zm9yKDtuPHImJmk8YTtuKyssaSsrKXtsZXQgcj1lLmNoYXJDb2RlQXQobiksYT10LmNoYXJDb2RlQXQoaSk7aWYocjxhKXJldHVybi0xO2lmKHI+YSlyZXR1cm4gMX1jb25zdCBvPXItbixzPWEtaTtyZXR1cm4gbzxzPy0xOm8+cz8xOjB9ZnVuY3Rpb24gSyhlKXtyZXR1cm4gZT49OTcmJmU8PTEyMn1mdW5jdGlvbiBqKGUpe3JldHVybiBlPj02NSYmZTw9OTB9ZnVuY3Rpb24gRyhlLHQpe2NvbnN0IG49dC5sZW5ndGg7cmV0dXJuISh0Lmxlbmd0aD5lLmxlbmd0aCkmJjA9PT1mdW5jdGlvbihlLHQsbj0wLHI9ZS5sZW5ndGgsaT0wLGE9dC5sZW5ndGgpe2Zvcig7bjxyJiZpPGE7bisrLGkrKyl7bGV0IG89ZS5jaGFyQ29kZUF0KG4pLHM9dC5jaGFyQ29kZUF0KGkpO2lmKG89PT1zKWNvbnRpbnVlO2lmKG8+PTEyOHx8cz49MTI4KXJldHVybiBWKGUudG9Mb3dlckNhc2UoKSx0LnRvTG93ZXJDYXNlKCksbixyLGksYSk7SyhvKSYmKG8tPTMyKSxLKHMpJiYocy09MzIpO2NvbnN0IGw9by1zO2lmKDAhPT1sKXJldHVybiBsfWNvbnN0IG89ci1uLHM9YS1pO3JldHVybiBvPHM/LTE6bz5zPzE6MH0oZSx0LDAsbil9ZnVuY3Rpb24gJChlKXtyZXR1cm4gNTUyOTY8PWUmJmU8PTU2MzE5fWZ1bmN0aW9uIEooZSx0LG4pe2NvbnN0IHI9ZS5jaGFyQ29kZUF0KG4pO2lmKCQocikmJm4rMTx0KXtjb25zdCB0PWUuY2hhckNvZGVBdChuKzEpO2lmKGZ1bmN0aW9uKGUpe3JldHVybiA1NjMyMDw9ZSYmZTw9NTczNDN9KHQpKXJldHVybiB0LTU2MzIwKyhyLTU1Mjk2PDwxMCkrNjU1MzZ9cmV0dXJuIHJ9Y29uc3QgWD0vXltcdFxuXHJceDIwLVx4N0VdKiQvO2NsYXNzIFl7Y29uc3RydWN0b3IoZSl7dGhpcy5jb25mdXNhYmxlRGljdGlvbmFyeT1lfXN0YXRpYyBnZXRJbnN0YW5jZShlKXtyZXR1cm4gWS5jYWNoZS5nZXQoQXJyYXkuZnJvbShlKSl9c3RhdGljIGdldExvY2FsZXMoKXtyZXR1cm4gWS5fbG9jYWxlcy5nZXRWYWx1ZSgpfWlzQW1iaWd1b3VzKGUpe3JldHVybiB0aGlzLmNvbmZ1c2FibGVEaWN0aW9uYXJ5LmhhcyhlKX1nZXRQcmltYXJ5Q29uZnVzYWJsZShlKXtyZXR1cm4gdGhpcy5jb25mdXNhYmxlRGljdGlvbmFyeS5nZXQoZSl9Z2V0Q29uZnVzYWJsZUNvZGVQb2ludHMoKXtyZXR1cm4gbmV3IFNldCh0aGlzLmNvbmZ1c2FibGVEaWN0aW9uYXJ5LmtleXMoKSl9fUQ9WSxZLmFtYmlndW91c0NoYXJhY3RlckRhdGE9bmV3IEIoKCgpPT5KU09OLnBhcnNlKCd7Il9jb21tb24iOls4MjMyLDMyLDgyMzMsMzIsNTc2MCwzMiw4MTkyLDMyLDgxOTMsMzIsODE5NCwzMiw4MTk1LDMyLDgxOTYsMzIsODE5NywzMiw4MTk4LDMyLDgyMDAsMzIsODIwMSwzMiw4MjAyLDMyLDgyODcsMzIsODE5OSwzMiw4MjM5LDMyLDIwNDIsOTUsNjUxMDEsOTUsNjUxMDIsOTUsNjUxMDMsOTUsODIwOCw0NSw4MjA5LDQ1LDgyMTAsNDUsNjUxMTIsNDUsMTc0OCw0NSw4MjU5LDQ1LDcyNyw0NSw4NzIyLDQ1LDEwMTM0LDQ1LDExNDUwLDQ1LDE1NDksNDQsMTY0Myw0NCw4MjE4LDQ0LDE4NCw0NCw0MjIzMyw0NCw4OTQsNTksMjMwNyw1OCwyNjkxLDU4LDE0MTcsNTgsMTc5NSw1OCwxNzk2LDU4LDU4NjgsNTgsNjUwNzIsNTgsNjE0Nyw1OCw2MTUzLDU4LDgyODIsNTgsMTQ3NSw1OCw3NjAsNTgsNDI4ODksNTgsODc1OCw1OCw3MjAsNTgsNDIyMzcsNTgsNDUxLDMzLDExNjAxLDMzLDY2MCw2Myw1NzcsNjMsMjQyOSw2Myw1MDM4LDYzLDQyNzMxLDYzLDExOTE0OSw0Niw4MjI4LDQ2LDE3OTMsNDYsMTc5NCw0Niw0MjUxMCw0Niw2ODE3Niw0NiwxNjMyLDQ2LDE3NzYsNDYsNDIyMzIsNDYsMTM3Myw5Niw2NTI4Nyw5Niw4MjE5LDk2LDgyNDIsOTYsMTM3MCw5NiwxNTIzLDk2LDgxNzUsOTYsNjUzNDQsOTYsOTAwLDk2LDgxODksOTYsODEyNSw5Niw4MTI3LDk2LDgxOTAsOTYsNjk3LDk2LDg4NCw5Niw3MTIsOTYsNzE0LDk2LDcxNSw5Niw3NTYsOTYsNjk5LDk2LDcwMSw5Niw3MDAsOTYsNzAyLDk2LDQyODkyLDk2LDE0OTcsOTYsMjAzNiw5NiwyMDM3LDk2LDUxOTQsOTYsNTgzNiw5Niw5NDAzMyw5Niw5NDAzNCw5Niw2NTMzOSw5MSwxMDA4OCw0MCwxMDA5OCw0MCwxMjMwOCw0MCw2NDgzMCw0MCw2NTM0MSw5MywxMDA4OSw0MSwxMDA5OSw0MSwxMjMwOSw0MSw2NDgzMSw0MSwxMDEwMCwxMjMsMTE5MDYwLDEyMywxMDEwMSwxMjUsNjUzNDIsOTQsODI3MCw0MiwxNjQ1LDQyLDg3MjcsNDIsNjYzMzUsNDIsNTk0MSw0Nyw4MjU3LDQ3LDg3MjUsNDcsODI2MCw0Nyw5NTg1LDQ3LDEwMTg3LDQ3LDEwNzQ0LDQ3LDExOTM1NCw0NywxMjc1NSw0NywxMjMzOSw0NywxMTQ2Miw0NywyMDAzMSw0NywxMjAzNSw0Nyw2NTM0MCw5Miw2NTEyOCw5Miw4NzI2LDkyLDEwMTg5LDkyLDEwNzQxLDkyLDEwNzQ1LDkyLDExOTMxMSw5MiwxMTkzNTUsOTIsMTI3NTYsOTIsMjAwMjIsOTIsMTIwMzQsOTIsNDI4NzIsMzgsNzA4LDk0LDcxMCw5NCw1ODY5LDQzLDEwMTMzLDQzLDY2MjAzLDQzLDgyNDksNjAsMTAwOTQsNjAsNzA2LDYwLDExOTM1MCw2MCw1MTc2LDYwLDU4MTAsNjAsNTEyMCw2MSwxMTg0MCw2MSwxMjQ0OCw2MSw0MjIzOSw2MSw4MjUwLDYyLDEwMDk1LDYyLDcwNyw2MiwxMTkzNTEsNjIsNTE3MSw2Miw5NDAxNSw2Miw4Mjc1LDEyNiw3MzIsMTI2LDgxMjgsMTI2LDg3NjQsMTI2LDY1MzcyLDEyNCw2NTI5Myw0NSwxMjA3ODQsNTAsMTIwNzk0LDUwLDEyMDgwNCw1MCwxMjA4MTQsNTAsMTIwODI0LDUwLDEzMDAzNCw1MCw0Mjg0Miw1MCw0MjMsNTAsMTAwMCw1MCw0MjU2NCw1MCw1MzExLDUwLDQyNzM1LDUwLDExOTMwMiw1MSwxMjA3ODUsNTEsMTIwNzk1LDUxLDEyMDgwNSw1MSwxMjA4MTUsNTEsMTIwODI1LDUxLDEzMDAzNSw1MSw0MjkyMyw1MSw1NDAsNTEsNDM5LDUxLDQyODU4LDUxLDExNDY4LDUxLDEyNDgsNTEsOTQwMTEsNTEsNzE4ODIsNTEsMTIwNzg2LDUyLDEyMDc5Niw1MiwxMjA4MDYsNTIsMTIwODE2LDUyLDEyMDgyNiw1MiwxMzAwMzYsNTIsNTA3MCw1Miw3MTg1NSw1MiwxMjA3ODcsNTMsMTIwNzk3LDUzLDEyMDgwNyw1MywxMjA4MTcsNTMsMTIwODI3LDUzLDEzMDAzNyw1Myw0NDQsNTMsNzE4NjcsNTMsMTIwNzg4LDU0LDEyMDc5OCw1NCwxMjA4MDgsNTQsMTIwODE4LDU0LDEyMDgyOCw1NCwxMzAwMzgsNTQsMTE0NzQsNTQsNTEwMiw1NCw3MTg5Myw1NCwxMTkzMTQsNTUsMTIwNzg5LDU1LDEyMDc5OSw1NSwxMjA4MDksNTUsMTIwODE5LDU1LDEyMDgyOSw1NSwxMzAwMzksNTUsNjY3NzAsNTUsNzE4NzgsNTUsMjgxOSw1NiwyNTM4LDU2LDI2NjYsNTYsMTI1MTMxLDU2LDEyMDc5MCw1NiwxMjA4MDAsNTYsMTIwODEwLDU2LDEyMDgyMCw1NiwxMjA4MzAsNTYsMTMwMDQwLDU2LDU0Nyw1Niw1NDYsNTYsNjYzMzAsNTYsMjY2Myw1NywyOTIwLDU3LDI1NDEsNTcsMzQzNyw1NywxMjA3OTEsNTcsMTIwODAxLDU3LDEyMDgxMSw1NywxMjA4MjEsNTcsMTIwODMxLDU3LDEzMDA0MSw1Nyw0Mjg2Miw1NywxMTQ2Niw1Nyw3MTg4NCw1Nyw3MTg1Miw1Nyw3MTg5NCw1Nyw5MDgyLDk3LDY1MzQ1LDk3LDExOTgzNCw5NywxMTk4ODYsOTcsMTE5OTM4LDk3LDExOTk5MCw5NywxMjAwNDIsOTcsMTIwMDk0LDk3LDEyMDE0Niw5NywxMjAxOTgsOTcsMTIwMjUwLDk3LDEyMDMwMiw5NywxMjAzNTQsOTcsMTIwNDA2LDk3LDEyMDQ1OCw5Nyw1OTMsOTcsOTQ1LDk3LDEyMDUxNCw5NywxMjA1NzIsOTcsMTIwNjMwLDk3LDEyMDY4OCw5NywxMjA3NDYsOTcsNjUzMTMsNjUsMTE5ODA4LDY1LDExOTg2MCw2NSwxMTk5MTIsNjUsMTE5OTY0LDY1LDEyMDAxNiw2NSwxMjAwNjgsNjUsMTIwMTIwLDY1LDEyMDE3Miw2NSwxMjAyMjQsNjUsMTIwMjc2LDY1LDEyMDMyOCw2NSwxMjAzODAsNjUsMTIwNDMyLDY1LDkxMyw2NSwxMjA0ODgsNjUsMTIwNTQ2LDY1LDEyMDYwNCw2NSwxMjA2NjIsNjUsMTIwNzIwLDY1LDUwMzQsNjUsNTU3Myw2NSw0MjIyMiw2NSw5NDAxNiw2NSw2NjIwOCw2NSwxMTk4MzUsOTgsMTE5ODg3LDk4LDExOTkzOSw5OCwxMTk5OTEsOTgsMTIwMDQzLDk4LDEyMDA5NSw5OCwxMjAxNDcsOTgsMTIwMTk5LDk4LDEyMDI1MSw5OCwxMjAzMDMsOTgsMTIwMzU1LDk4LDEyMDQwNyw5OCwxMjA0NTksOTgsMzg4LDk4LDUwNzEsOTgsNTIzNCw5OCw1NTUxLDk4LDY1MzE0LDY2LDg0OTIsNjYsMTE5ODA5LDY2LDExOTg2MSw2NiwxMTk5MTMsNjYsMTIwMDE3LDY2LDEyMDA2OSw2NiwxMjAxMjEsNjYsMTIwMTczLDY2LDEyMDIyNSw2NiwxMjAyNzcsNjYsMTIwMzI5LDY2LDEyMDM4MSw2NiwxMjA0MzMsNjYsNDI5MzIsNjYsOTE0LDY2LDEyMDQ4OSw2NiwxMjA1NDcsNjYsMTIwNjA1LDY2LDEyMDY2Myw2NiwxMjA3MjEsNjYsNTEwOCw2Niw1NjIzLDY2LDQyMTkyLDY2LDY2MTc4LDY2LDY2MjA5LDY2LDY2MzA1LDY2LDY1MzQ3LDk5LDg1NzMsOTksMTE5ODM2LDk5LDExOTg4OCw5OSwxMTk5NDAsOTksMTE5OTkyLDk5LDEyMDA0NCw5OSwxMjAwOTYsOTksMTIwMTQ4LDk5LDEyMDIwMCw5OSwxMjAyNTIsOTksMTIwMzA0LDk5LDEyMDM1Niw5OSwxMjA0MDgsOTksMTIwNDYwLDk5LDc0MjgsOTksMTAxMCw5OSwxMTQyOSw5OSw0Mzk1MSw5OSw2NjYyMSw5OSwxMjg4NDQsNjcsNzE5MjIsNjcsNzE5MTMsNjcsNjUzMTUsNjcsODU1Nyw2Nyw4NDUwLDY3LDg0OTMsNjcsMTE5ODEwLDY3LDExOTg2Miw2NywxMTk5MTQsNjcsMTE5OTY2LDY3LDEyMDAxOCw2NywxMjAxNzQsNjcsMTIwMjI2LDY3LDEyMDI3OCw2NywxMjAzMzAsNjcsMTIwMzgyLDY3LDEyMDQzNCw2NywxMDE3LDY3LDExNDI4LDY3LDUwODcsNjcsNDIyMDIsNjcsNjYyMTAsNjcsNjYzMDYsNjcsNjY1ODEsNjcsNjY4NDQsNjcsODU3NCwxMDAsODUxOCwxMDAsMTE5ODM3LDEwMCwxMTk4ODksMTAwLDExOTk0MSwxMDAsMTE5OTkzLDEwMCwxMjAwNDUsMTAwLDEyMDA5NywxMDAsMTIwMTQ5LDEwMCwxMjAyMDEsMTAwLDEyMDI1MywxMDAsMTIwMzA1LDEwMCwxMjAzNTcsMTAwLDEyMDQwOSwxMDAsMTIwNDYxLDEwMCwxMjgxLDEwMCw1MDk1LDEwMCw1MjMxLDEwMCw0MjE5NCwxMDAsODU1OCw2OCw4NTE3LDY4LDExOTgxMSw2OCwxMTk4NjMsNjgsMTE5OTE1LDY4LDExOTk2Nyw2OCwxMjAwMTksNjgsMTIwMDcxLDY4LDEyMDEyMyw2OCwxMjAxNzUsNjgsMTIwMjI3LDY4LDEyMDI3OSw2OCwxMjAzMzEsNjgsMTIwMzgzLDY4LDEyMDQzNSw2OCw1MDI0LDY4LDU1OTgsNjgsNTYxMCw2OCw0MjE5NSw2OCw4NDk0LDEwMSw2NTM0OSwxMDEsODQ5NSwxMDEsODUxOSwxMDEsMTE5ODM4LDEwMSwxMTk4OTAsMTAxLDExOTk0MiwxMDEsMTIwMDQ2LDEwMSwxMjAwOTgsMTAxLDEyMDE1MCwxMDEsMTIwMjAyLDEwMSwxMjAyNTQsMTAxLDEyMDMwNiwxMDEsMTIwMzU4LDEwMSwxMjA0MTAsMTAxLDEyMDQ2MiwxMDEsNDM4MjYsMTAxLDEyMTMsMTAxLDg5NTksNjksNjUzMTcsNjksODQ5Niw2OSwxMTk4MTIsNjksMTE5ODY0LDY5LDExOTkxNiw2OSwxMjAwMjAsNjksMTIwMDcyLDY5LDEyMDEyNCw2OSwxMjAxNzYsNjksMTIwMjI4LDY5LDEyMDI4MCw2OSwxMjAzMzIsNjksMTIwMzg0LDY5LDEyMDQzNiw2OSw5MTcsNjksMTIwNDkyLDY5LDEyMDU1MCw2OSwxMjA2MDgsNjksMTIwNjY2LDY5LDEyMDcyNCw2OSwxMTU3Nyw2OSw1MDM2LDY5LDQyMjI0LDY5LDcxODQ2LDY5LDcxODU0LDY5LDY2MTgyLDY5LDExOTgzOSwxMDIsMTE5ODkxLDEwMiwxMTk5NDMsMTAyLDExOTk5NSwxMDIsMTIwMDQ3LDEwMiwxMjAwOTksMTAyLDEyMDE1MSwxMDIsMTIwMjAzLDEwMiwxMjAyNTUsMTAyLDEyMDMwNywxMDIsMTIwMzU5LDEwMiwxMjA0MTEsMTAyLDEyMDQ2MywxMDIsNDM4MjksMTAyLDQyOTA1LDEwMiwzODMsMTAyLDc4MzcsMTAyLDE0MTIsMTAyLDExOTMxNSw3MCw4NDk3LDcwLDExOTgxMyw3MCwxMTk4NjUsNzAsMTE5OTE3LDcwLDEyMDAyMSw3MCwxMjAwNzMsNzAsMTIwMTI1LDcwLDEyMDE3Nyw3MCwxMjAyMjksNzAsMTIwMjgxLDcwLDEyMDMzMyw3MCwxMjAzODUsNzAsMTIwNDM3LDcwLDQyOTA0LDcwLDk4OCw3MCwxMjA3NzgsNzAsNTU1Niw3MCw0MjIwNSw3MCw3MTg3NCw3MCw3MTg0Miw3MCw2NjE4Myw3MCw2NjIxMyw3MCw2Njg1Myw3MCw2NTM1MSwxMDMsODQ1OCwxMDMsMTE5ODQwLDEwMywxMTk4OTIsMTAzLDExOTk0NCwxMDMsMTIwMDQ4LDEwMywxMjAxMDAsMTAzLDEyMDE1MiwxMDMsMTIwMjA0LDEwMywxMjAyNTYsMTAzLDEyMDMwOCwxMDMsMTIwMzYwLDEwMywxMjA0MTIsMTAzLDEyMDQ2NCwxMDMsNjA5LDEwMyw3NTU1LDEwMywzOTcsMTAzLDE0MDksMTAzLDExOTgxNCw3MSwxMTk4NjYsNzEsMTE5OTE4LDcxLDExOTk3MCw3MSwxMjAwMjIsNzEsMTIwMDc0LDcxLDEyMDEyNiw3MSwxMjAxNzgsNzEsMTIwMjMwLDcxLDEyMDI4Miw3MSwxMjAzMzQsNzEsMTIwMzg2LDcxLDEyMDQzOCw3MSwxMjkyLDcxLDUwNTYsNzEsNTEwNyw3MSw0MjE5OCw3MSw2NTM1MiwxMDQsODQ2MiwxMDQsMTE5ODQxLDEwNCwxMTk5NDUsMTA0LDExOTk5NywxMDQsMTIwMDQ5LDEwNCwxMjAxMDEsMTA0LDEyMDE1MywxMDQsMTIwMjA1LDEwNCwxMjAyNTcsMTA0LDEyMDMwOSwxMDQsMTIwMzYxLDEwNCwxMjA0MTMsMTA0LDEyMDQ2NSwxMDQsMTIxMSwxMDQsMTM5MiwxMDQsNTA1OCwxMDQsNjUzMjAsNzIsODQ1OSw3Miw4NDYwLDcyLDg0NjEsNzIsMTE5ODE1LDcyLDExOTg2Nyw3MiwxMTk5MTksNzIsMTIwMDIzLDcyLDEyMDE3OSw3MiwxMjAyMzEsNzIsMTIwMjgzLDcyLDEyMDMzNSw3MiwxMjAzODcsNzIsMTIwNDM5LDcyLDkxOSw3MiwxMjA0OTQsNzIsMTIwNTUyLDcyLDEyMDYxMCw3MiwxMjA2NjgsNzIsMTIwNzI2LDcyLDExNDA2LDcyLDUwNTEsNzIsNTUwMCw3Miw0MjIxNSw3Miw2NjI1NSw3Miw3MzEsMTA1LDkwNzUsMTA1LDY1MzUzLDEwNSw4NTYwLDEwNSw4NTA1LDEwNSw4NTIwLDEwNSwxMTk4NDIsMTA1LDExOTg5NCwxMDUsMTE5OTQ2LDEwNSwxMTk5OTgsMTA1LDEyMDA1MCwxMDUsMTIwMTAyLDEwNSwxMjAxNTQsMTA1LDEyMDIwNiwxMDUsMTIwMjU4LDEwNSwxMjAzMTAsMTA1LDEyMDM2MiwxMDUsMTIwNDE0LDEwNSwxMjA0NjYsMTA1LDEyMDQ4NCwxMDUsNjE4LDEwNSw2MTcsMTA1LDk1MywxMDUsODEyNiwxMDUsODkwLDEwNSwxMjA1MjIsMTA1LDEyMDU4MCwxMDUsMTIwNjM4LDEwNSwxMjA2OTYsMTA1LDEyMDc1NCwxMDUsMTExMCwxMDUsNDI1NjcsMTA1LDEyMzEsMTA1LDQzODkzLDEwNSw1MDI5LDEwNSw3MTg3NSwxMDUsNjUzNTQsMTA2LDg1MjEsMTA2LDExOTg0MywxMDYsMTE5ODk1LDEwNiwxMTk5NDcsMTA2LDExOTk5OSwxMDYsMTIwMDUxLDEwNiwxMjAxMDMsMTA2LDEyMDE1NSwxMDYsMTIwMjA3LDEwNiwxMjAyNTksMTA2LDEyMDMxMSwxMDYsMTIwMzYzLDEwNiwxMjA0MTUsMTA2LDEyMDQ2NywxMDYsMTAxMSwxMDYsMTExMiwxMDYsNjUzMjIsNzQsMTE5ODE3LDc0LDExOTg2OSw3NCwxMTk5MjEsNzQsMTE5OTczLDc0LDEyMDAyNSw3NCwxMjAwNzcsNzQsMTIwMTI5LDc0LDEyMDE4MSw3NCwxMjAyMzMsNzQsMTIwMjg1LDc0LDEyMDMzNyw3NCwxMjAzODksNzQsMTIwNDQxLDc0LDQyOTMwLDc0LDg5NSw3NCwxMDMyLDc0LDUwMzUsNzQsNTI2MSw3NCw0MjIwMSw3NCwxMTk4NDQsMTA3LDExOTg5NiwxMDcsMTE5OTQ4LDEwNywxMjAwMDAsMTA3LDEyMDA1MiwxMDcsMTIwMTA0LDEwNywxMjAxNTYsMTA3LDEyMDIwOCwxMDcsMTIwMjYwLDEwNywxMjAzMTIsMTA3LDEyMDM2NCwxMDcsMTIwNDE2LDEwNywxMjA0NjgsMTA3LDg0OTAsNzUsNjUzMjMsNzUsMTE5ODE4LDc1LDExOTg3MCw3NSwxMTk5MjIsNzUsMTE5OTc0LDc1LDEyMDAyNiw3NSwxMjAwNzgsNzUsMTIwMTMwLDc1LDEyMDE4Miw3NSwxMjAyMzQsNzUsMTIwMjg2LDc1LDEyMDMzOCw3NSwxMjAzOTAsNzUsMTIwNDQyLDc1LDkyMiw3NSwxMjA0OTcsNzUsMTIwNTU1LDc1LDEyMDYxMyw3NSwxMjA2NzEsNzUsMTIwNzI5LDc1LDExNDEyLDc1LDUwOTQsNzUsNTg0NSw3NSw0MjE5OSw3NSw2Njg0MCw3NSwxNDcyLDEwOCw4NzM5LDczLDkyMTMsNzMsNjU1MTIsNzMsMTYzMywxMDgsMTc3Nyw3Myw2NjMzNiwxMDgsMTI1MTI3LDEwOCwxMjA3ODMsNzMsMTIwNzkzLDczLDEyMDgwMyw3MywxMjA4MTMsNzMsMTIwODIzLDczLDEzMDAzMyw3Myw2NTMyMSw3Myw4NTQ0LDczLDg0NjQsNzMsODQ2NSw3MywxMTk4MTYsNzMsMTE5ODY4LDczLDExOTkyMCw3MywxMjAwMjQsNzMsMTIwMTI4LDczLDEyMDE4MCw3MywxMjAyMzIsNzMsMTIwMjg0LDczLDEyMDMzNiw3MywxMjAzODgsNzMsMTIwNDQwLDczLDY1MzU2LDEwOCw4NTcyLDczLDg0NjcsMTA4LDExOTg0NSwxMDgsMTE5ODk3LDEwOCwxMTk5NDksMTA4LDEyMDAwMSwxMDgsMTIwMDUzLDEwOCwxMjAxMDUsNzMsMTIwMTU3LDczLDEyMDIwOSw3MywxMjAyNjEsNzMsMTIwMzEzLDczLDEyMDM2NSw3MywxMjA0MTcsNzMsMTIwNDY5LDczLDQ0OCw3MywxMjA0OTYsNzMsMTIwNTU0LDczLDEyMDYxMiw3MywxMjA2NzAsNzMsMTIwNzI4LDczLDExNDEwLDczLDEwMzAsNzMsMTIxNiw3MywxNDkzLDEwOCwxNTAzLDEwOCwxNTc1LDEwOCwxMjY0NjQsMTA4LDEyNjU5MiwxMDgsNjUxNjYsMTA4LDY1MTY1LDEwOCwxOTk0LDEwOCwxMTU5OSw3Myw1ODI1LDczLDQyMjI2LDczLDkzOTkyLDczLDY2MTg2LDEyNCw2NjMxMywxMjQsMTE5MzM4LDc2LDg1NTYsNzYsODQ2Niw3NiwxMTk4MTksNzYsMTE5ODcxLDc2LDExOTkyMyw3NiwxMjAwMjcsNzYsMTIwMDc5LDc2LDEyMDEzMSw3NiwxMjAxODMsNzYsMTIwMjM1LDc2LDEyMDI4Nyw3NiwxMjAzMzksNzYsMTIwMzkxLDc2LDEyMDQ0Myw3NiwxMTQ3Miw3Niw1MDg2LDc2LDUyOTAsNzYsNDIyMDksNzYsOTM5NzQsNzYsNzE4NDMsNzYsNzE4NTgsNzYsNjY1ODcsNzYsNjY4NTQsNzYsNjUzMjUsNzcsODU1OSw3Nyw4NDk5LDc3LDExOTgyMCw3NywxMTk4NzIsNzcsMTE5OTI0LDc3LDEyMDAyOCw3NywxMjAwODAsNzcsMTIwMTMyLDc3LDEyMDE4NCw3NywxMjAyMzYsNzcsMTIwMjg4LDc3LDEyMDM0MCw3NywxMjAzOTIsNzcsMTIwNDQ0LDc3LDkyNCw3NywxMjA0OTksNzcsMTIwNTU3LDc3LDEyMDYxNSw3NywxMjA2NzMsNzcsMTIwNzMxLDc3LDEwMTgsNzcsMTE0MTYsNzcsNTA0Nyw3Nyw1NjE2LDc3LDU4NDYsNzcsNDIyMDcsNzcsNjYyMjQsNzcsNjYzMjEsNzcsMTE5ODQ3LDExMCwxMTk4OTksMTEwLDExOTk1MSwxMTAsMTIwMDAzLDExMCwxMjAwNTUsMTEwLDEyMDEwNywxMTAsMTIwMTU5LDExMCwxMjAyMTEsMTEwLDEyMDI2MywxMTAsMTIwMzE1LDExMCwxMjAzNjcsMTEwLDEyMDQxOSwxMTAsMTIwNDcxLDExMCwxNDAwLDExMCwxNDA0LDExMCw2NTMyNiw3OCw4NDY5LDc4LDExOTgyMSw3OCwxMTk4NzMsNzgsMTE5OTI1LDc4LDExOTk3Nyw3OCwxMjAwMjksNzgsMTIwMDgxLDc4LDEyMDE4NSw3OCwxMjAyMzcsNzgsMTIwMjg5LDc4LDEyMDM0MSw3OCwxMjAzOTMsNzgsMTIwNDQ1LDc4LDkyNSw3OCwxMjA1MDAsNzgsMTIwNTU4LDc4LDEyMDYxNiw3OCwxMjA2NzQsNzgsMTIwNzMyLDc4LDExNDE4LDc4LDQyMjA4LDc4LDY2ODM1LDc4LDMwNzQsMTExLDMyMDIsMTExLDMzMzAsMTExLDM0NTgsMTExLDI0MDYsMTExLDI2NjIsMTExLDI3OTAsMTExLDMwNDYsMTExLDMxNzQsMTExLDMzMDIsMTExLDM0MzAsMTExLDM2NjQsMTExLDM3OTIsMTExLDQxNjAsMTExLDE2MzcsMTExLDE3ODEsMTExLDY1MzU5LDExMSw4NTAwLDExMSwxMTk4NDgsMTExLDExOTkwMCwxMTEsMTE5OTUyLDExMSwxMjAwNTYsMTExLDEyMDEwOCwxMTEsMTIwMTYwLDExMSwxMjAyMTIsMTExLDEyMDI2NCwxMTEsMTIwMzE2LDExMSwxMjAzNjgsMTExLDEyMDQyMCwxMTEsMTIwNDcyLDExMSw3NDM5LDExMSw3NDQxLDExMSw0MzgzNywxMTEsOTU5LDExMSwxMjA1MjgsMTExLDEyMDU4NiwxMTEsMTIwNjQ0LDExMSwxMjA3MDIsMTExLDEyMDc2MCwxMTEsOTYzLDExMSwxMjA1MzIsMTExLDEyMDU5MCwxMTEsMTIwNjQ4LDExMSwxMjA3MDYsMTExLDEyMDc2NCwxMTEsMTE0MjMsMTExLDQzNTEsMTExLDE0MTMsMTExLDE1MDUsMTExLDE2MDcsMTExLDEyNjUwMCwxMTEsMTI2NTY0LDExMSwxMjY1OTYsMTExLDY1MjU5LDExMSw2NTI2MCwxMTEsNjUyNTgsMTExLDY1MjU3LDExMSwxNzI2LDExMSw2NDQyOCwxMTEsNjQ0MjksMTExLDY0NDI3LDExMSw2NDQyNiwxMTEsMTcyOSwxMTEsNjQ0MjQsMTExLDY0NDI1LDExMSw2NDQyMywxMTEsNjQ0MjIsMTExLDE3NDksMTExLDMzNjAsMTExLDQxMjUsMTExLDY2Nzk0LDExMSw3MTg4MCwxMTEsNzE4OTUsMTExLDY2NjA0LDExMSwxOTg0LDc5LDI1MzQsNzksMjkxOCw3OSwxMjI5NSw3OSw3MDg2NCw3OSw3MTkwNCw3OSwxMjA3ODIsNzksMTIwNzkyLDc5LDEyMDgwMiw3OSwxMjA4MTIsNzksMTIwODIyLDc5LDEzMDAzMiw3OSw2NTMyNyw3OSwxMTk4MjIsNzksMTE5ODc0LDc5LDExOTkyNiw3OSwxMTk5NzgsNzksMTIwMDMwLDc5LDEyMDA4Miw3OSwxMjAxMzQsNzksMTIwMTg2LDc5LDEyMDIzOCw3OSwxMjAyOTAsNzksMTIwMzQyLDc5LDEyMDM5NCw3OSwxMjA0NDYsNzksOTI3LDc5LDEyMDUwMiw3OSwxMjA1NjAsNzksMTIwNjE4LDc5LDEyMDY3Niw3OSwxMjA3MzQsNzksMTE0MjIsNzksMTM2NSw3OSwxMTYwNCw3OSw0ODE2LDc5LDI4NDgsNzksNjY3NTQsNzksNDIyMjcsNzksNzE4NjEsNzksNjYxOTQsNzksNjYyMTksNzksNjY1NjQsNzksNjY4MzgsNzksOTA3NiwxMTIsNjUzNjAsMTEyLDExOTg0OSwxMTIsMTE5OTAxLDExMiwxMTk5NTMsMTEyLDEyMDAwNSwxMTIsMTIwMDU3LDExMiwxMjAxMDksMTEyLDEyMDE2MSwxMTIsMTIwMjEzLDExMiwxMjAyNjUsMTEyLDEyMDMxNywxMTIsMTIwMzY5LDExMiwxMjA0MjEsMTEyLDEyMDQ3MywxMTIsOTYxLDExMiwxMjA1MzAsMTEyLDEyMDU0NCwxMTIsMTIwNTg4LDExMiwxMjA2MDIsMTEyLDEyMDY0NiwxMTIsMTIwNjYwLDExMiwxMjA3MDQsMTEyLDEyMDcxOCwxMTIsMTIwNzYyLDExMiwxMjA3NzYsMTEyLDExNDI3LDExMiw2NTMyOCw4MCw4NDczLDgwLDExOTgyMyw4MCwxMTk4NzUsODAsMTE5OTI3LDgwLDExOTk3OSw4MCwxMjAwMzEsODAsMTIwMDgzLDgwLDEyMDE4Nyw4MCwxMjAyMzksODAsMTIwMjkxLDgwLDEyMDM0Myw4MCwxMjAzOTUsODAsMTIwNDQ3LDgwLDkyOSw4MCwxMjA1MDQsODAsMTIwNTYyLDgwLDEyMDYyMCw4MCwxMjA2NzgsODAsMTIwNzM2LDgwLDExNDI2LDgwLDUwOTAsODAsNTIyOSw4MCw0MjE5Myw4MCw2NjE5Nyw4MCwxMTk4NTAsMTEzLDExOTkwMiwxMTMsMTE5OTU0LDExMywxMjAwMDYsMTEzLDEyMDA1OCwxMTMsMTIwMTEwLDExMywxMjAxNjIsMTEzLDEyMDIxNCwxMTMsMTIwMjY2LDExMywxMjAzMTgsMTEzLDEyMDM3MCwxMTMsMTIwNDIyLDExMywxMjA0NzQsMTEzLDEzMDcsMTEzLDEzNzksMTEzLDEzODIsMTEzLDg0NzQsODEsMTE5ODI0LDgxLDExOTg3Niw4MSwxMTk5MjgsODEsMTE5OTgwLDgxLDEyMDAzMiw4MSwxMjAwODQsODEsMTIwMTg4LDgxLDEyMDI0MCw4MSwxMjAyOTIsODEsMTIwMzQ0LDgxLDEyMDM5Niw4MSwxMjA0NDgsODEsMTE2MDUsODEsMTE5ODUxLDExNCwxMTk5MDMsMTE0LDExOTk1NSwxMTQsMTIwMDA3LDExNCwxMjAwNTksMTE0LDEyMDExMSwxMTQsMTIwMTYzLDExNCwxMjAyMTUsMTE0LDEyMDI2NywxMTQsMTIwMzE5LDExNCwxMjAzNzEsMTE0LDEyMDQyMywxMTQsMTIwNDc1LDExNCw0Mzg0NywxMTQsNDM4NDgsMTE0LDc0NjIsMTE0LDExMzk3LDExNCw0MzkwNSwxMTQsMTE5MzE4LDgyLDg0NzUsODIsODQ3Niw4Miw4NDc3LDgyLDExOTgyNSw4MiwxMTk4NzcsODIsMTE5OTI5LDgyLDEyMDAzMyw4MiwxMjAxODksODIsMTIwMjQxLDgyLDEyMDI5Myw4MiwxMjAzNDUsODIsMTIwMzk3LDgyLDEyMDQ0OSw4Miw0MjIsODIsNTAyNSw4Miw1MDc0LDgyLDY2NzQwLDgyLDU1MTEsODIsNDIyMTEsODIsOTQwMDUsODIsNjUzNjMsMTE1LDExOTg1MiwxMTUsMTE5OTA0LDExNSwxMTk5NTYsMTE1LDEyMDAwOCwxMTUsMTIwMDYwLDExNSwxMjAxMTIsMTE1LDEyMDE2NCwxMTUsMTIwMjE2LDExNSwxMjAyNjgsMTE1LDEyMDMyMCwxMTUsMTIwMzcyLDExNSwxMjA0MjQsMTE1LDEyMDQ3NiwxMTUsNDI4MDEsMTE1LDQ0NSwxMTUsMTEwOSwxMTUsNDM5NDYsMTE1LDcxODczLDExNSw2NjYzMiwxMTUsNjUzMzEsODMsMTE5ODI2LDgzLDExOTg3OCw4MywxMTk5MzAsODMsMTE5OTgyLDgzLDEyMDAzNCw4MywxMjAwODYsODMsMTIwMTM4LDgzLDEyMDE5MCw4MywxMjAyNDIsODMsMTIwMjk0LDgzLDEyMDM0Niw4MywxMjAzOTgsODMsMTIwNDUwLDgzLDEwMjksODMsMTM1OSw4Myw1MDc3LDgzLDUwODIsODMsNDIyMTAsODMsOTQwMTAsODMsNjYxOTgsODMsNjY1OTIsODMsMTE5ODUzLDExNiwxMTk5MDUsMTE2LDExOTk1NywxMTYsMTIwMDA5LDExNiwxMjAwNjEsMTE2LDEyMDExMywxMTYsMTIwMTY1LDExNiwxMjAyMTcsMTE2LDEyMDI2OSwxMTYsMTIwMzIxLDExNiwxMjAzNzMsMTE2LDEyMDQyNSwxMTYsMTIwNDc3LDExNiw4ODY4LDg0LDEwMjAxLDg0LDEyODg3Miw4NCw2NTMzMiw4NCwxMTk4MjcsODQsMTE5ODc5LDg0LDExOTkzMSw4NCwxMTk5ODMsODQsMTIwMDM1LDg0LDEyMDA4Nyw4NCwxMjAxMzksODQsMTIwMTkxLDg0LDEyMDI0Myw4NCwxMjAyOTUsODQsMTIwMzQ3LDg0LDEyMDM5OSw4NCwxMjA0NTEsODQsOTMyLDg0LDEyMDUwNyw4NCwxMjA1NjUsODQsMTIwNjIzLDg0LDEyMDY4MSw4NCwxMjA3MzksODQsMTE0MzAsODQsNTAyNiw4NCw0MjE5Niw4NCw5Mzk2Miw4NCw3MTg2OCw4NCw2NjE5OSw4NCw2NjIyNSw4NCw2NjMyNSw4NCwxMTk4NTQsMTE3LDExOTkwNiwxMTcsMTE5OTU4LDExNywxMjAwMTAsMTE3LDEyMDA2MiwxMTcsMTIwMTE0LDExNywxMjAxNjYsMTE3LDEyMDIxOCwxMTcsMTIwMjcwLDExNywxMjAzMjIsMTE3LDEyMDM3NCwxMTcsMTIwNDI2LDExNywxMjA0NzgsMTE3LDQyOTExLDExNyw3NDUyLDExNyw0Mzg1NCwxMTcsNDM4NTgsMTE3LDY1MSwxMTcsOTY1LDExNywxMjA1MzQsMTE3LDEyMDU5MiwxMTcsMTIwNjUwLDExNywxMjA3MDgsMTE3LDEyMDc2NiwxMTcsMTQwNSwxMTcsNjY4MDYsMTE3LDcxODk2LDExNyw4NzQ2LDg1LDg4OTksODUsMTE5ODI4LDg1LDExOTg4MCw4NSwxMTk5MzIsODUsMTE5OTg0LDg1LDEyMDAzNiw4NSwxMjAwODgsODUsMTIwMTQwLDg1LDEyMDE5Miw4NSwxMjAyNDQsODUsMTIwMjk2LDg1LDEyMDM0OCw4NSwxMjA0MDAsODUsMTIwNDUyLDg1LDEzNTcsODUsNDYwOCw4NSw2Njc2Niw4NSw1MTk2LDg1LDQyMjI4LDg1LDk0MDE4LDg1LDcxODY0LDg1LDg3NDQsMTE4LDg4OTcsMTE4LDY1MzY2LDExOCw4NTY0LDExOCwxMTk4NTUsMTE4LDExOTkwNywxMTgsMTE5OTU5LDExOCwxMjAwMTEsMTE4LDEyMDA2MywxMTgsMTIwMTE1LDExOCwxMjAxNjcsMTE4LDEyMDIxOSwxMTgsMTIwMjcxLDExOCwxMjAzMjMsMTE4LDEyMDM3NSwxMTgsMTIwNDI3LDExOCwxMjA0NzksMTE4LDc0NTYsMTE4LDk1NywxMTgsMTIwNTI2LDExOCwxMjA1ODQsMTE4LDEyMDY0MiwxMTgsMTIwNzAwLDExOCwxMjA3NTgsMTE4LDExNDEsMTE4LDE0OTYsMTE4LDcxNDMwLDExOCw0Mzk0NSwxMTgsNzE4NzIsMTE4LDExOTMwOSw4NiwxNjM5LDg2LDE3ODMsODYsODU0OCw4NiwxMTk4MjksODYsMTE5ODgxLDg2LDExOTkzMyw4NiwxMTk5ODUsODYsMTIwMDM3LDg2LDEyMDA4OSw4NiwxMjAxNDEsODYsMTIwMTkzLDg2LDEyMDI0NSw4NiwxMjAyOTcsODYsMTIwMzQ5LDg2LDEyMDQwMSw4NiwxMjA0NTMsODYsMTE0MCw4NiwxMTU3Niw4Niw1MDgxLDg2LDUxNjcsODYsNDI3MTksODYsNDIyMTQsODYsOTM5NjAsODYsNzE4NDAsODYsNjY4NDUsODYsNjIzLDExOSwxMTk4NTYsMTE5LDExOTkwOCwxMTksMTE5OTYwLDExOSwxMjAwMTIsMTE5LDEyMDA2NCwxMTksMTIwMTE2LDExOSwxMjAxNjgsMTE5LDEyMDIyMCwxMTksMTIwMjcyLDExOSwxMjAzMjQsMTE5LDEyMDM3NiwxMTksMTIwNDI4LDExOSwxMjA0ODAsMTE5LDc0NTcsMTE5LDExMjEsMTE5LDEzMDksMTE5LDEzNzcsMTE5LDcxNDM0LDExOSw3MTQzOCwxMTksNzE0MzksMTE5LDQzOTA3LDExOSw3MTkxOSw4Nyw3MTkxMCw4NywxMTk4MzAsODcsMTE5ODgyLDg3LDExOTkzNCw4NywxMTk5ODYsODcsMTIwMDM4LDg3LDEyMDA5MCw4NywxMjAxNDIsODcsMTIwMTk0LDg3LDEyMDI0Niw4NywxMjAyOTgsODcsMTIwMzUwLDg3LDEyMDQwMiw4NywxMjA0NTQsODcsMTMwOCw4Nyw1MDQzLDg3LDUwNzYsODcsNDIyMTgsODcsNTc0MiwxMjAsMTA1MzksMTIwLDEwNTQwLDEyMCwxMDc5OSwxMjAsNjUzNjgsMTIwLDg1NjksMTIwLDExOTg1NywxMjAsMTE5OTA5LDEyMCwxMTk5NjEsMTIwLDEyMDAxMywxMjAsMTIwMDY1LDEyMCwxMjAxMTcsMTIwLDEyMDE2OSwxMjAsMTIwMjIxLDEyMCwxMjAyNzMsMTIwLDEyMDMyNSwxMjAsMTIwMzc3LDEyMCwxMjA0MjksMTIwLDEyMDQ4MSwxMjAsNTQ0MSwxMjAsNTUwMSwxMjAsNTc0MSw4OCw5NTg3LDg4LDY2MzM4LDg4LDcxOTE2LDg4LDY1MzM2LDg4LDg1NTMsODgsMTE5ODMxLDg4LDExOTg4Myw4OCwxMTk5MzUsODgsMTE5OTg3LDg4LDEyMDAzOSw4OCwxMjAwOTEsODgsMTIwMTQzLDg4LDEyMDE5NSw4OCwxMjAyNDcsODgsMTIwMjk5LDg4LDEyMDM1MSw4OCwxMjA0MDMsODgsMTIwNDU1LDg4LDQyOTMxLDg4LDkzNSw4OCwxMjA1MTAsODgsMTIwNTY4LDg4LDEyMDYyNiw4OCwxMjA2ODQsODgsMTIwNzQyLDg4LDExNDM2LDg4LDExNjEzLDg4LDU4MTUsODgsNDIyMTksODgsNjYxOTIsODgsNjYyMjgsODgsNjYzMjcsODgsNjY4NTUsODgsNjExLDEyMSw3NTY0LDEyMSw2NTM2OSwxMjEsMTE5ODU4LDEyMSwxMTk5MTAsMTIxLDExOTk2MiwxMjEsMTIwMDE0LDEyMSwxMjAwNjYsMTIxLDEyMDExOCwxMjEsMTIwMTcwLDEyMSwxMjAyMjIsMTIxLDEyMDI3NCwxMjEsMTIwMzI2LDEyMSwxMjAzNzgsMTIxLDEyMDQzMCwxMjEsMTIwNDgyLDEyMSw2NTUsMTIxLDc5MzUsMTIxLDQzODY2LDEyMSw5NDcsMTIxLDg1MDksMTIxLDEyMDUxNiwxMjEsMTIwNTc0LDEyMSwxMjA2MzIsMTIxLDEyMDY5MCwxMjEsMTIwNzQ4LDEyMSwxMTk5LDEyMSw0MzI3LDEyMSw3MTkwMCwxMjEsNjUzMzcsODksMTE5ODMyLDg5LDExOTg4NCw4OSwxMTk5MzYsODksMTE5OTg4LDg5LDEyMDA0MCw4OSwxMjAwOTIsODksMTIwMTQ0LDg5LDEyMDE5Niw4OSwxMjAyNDgsODksMTIwMzAwLDg5LDEyMDM1Miw4OSwxMjA0MDQsODksMTIwNDU2LDg5LDkzMyw4OSw5NzgsODksMTIwNTA4LDg5LDEyMDU2Niw4OSwxMjA2MjQsODksMTIwNjgyLDg5LDEyMDc0MCw4OSwxMTQzMiw4OSwxMTk4LDg5LDUwMzMsODksNTA1Myw4OSw0MjIyMCw4OSw5NDAxOSw4OSw3MTg0NCw4OSw2NjIyNiw4OSwxMTk4NTksMTIyLDExOTkxMSwxMjIsMTE5OTYzLDEyMiwxMjAwMTUsMTIyLDEyMDA2NywxMjIsMTIwMTE5LDEyMiwxMjAxNzEsMTIyLDEyMDIyMywxMjIsMTIwMjc1LDEyMiwxMjAzMjcsMTIyLDEyMDM3OSwxMjIsMTIwNDMxLDEyMiwxMjA0ODMsMTIyLDc0NTgsMTIyLDQzOTIzLDEyMiw3MTg3NiwxMjIsNjYyOTMsOTAsNzE5MDksOTAsNjUzMzgsOTAsODQ4NCw5MCw4NDg4LDkwLDExOTgzMyw5MCwxMTk4ODUsOTAsMTE5OTM3LDkwLDExOTk4OSw5MCwxMjAwNDEsOTAsMTIwMTk3LDkwLDEyMDI0OSw5MCwxMjAzMDEsOTAsMTIwMzUzLDkwLDEyMDQwNSw5MCwxMjA0NTcsOTAsOTE4LDkwLDEyMDQ5Myw5MCwxMjA1NTEsOTAsMTIwNjA5LDkwLDEyMDY2Nyw5MCwxMjA3MjUsOTAsNTA1OSw5MCw0MjIwNCw5MCw3MTg0OSw5MCw2NTI4MiwzNCw2NTI4NCwzNiw2NTI4NSwzNyw2NTI4NiwzOCw2NTI5MCw0Miw2NTI5MSw0Myw2NTI5NCw0Niw2NTI5NSw0Nyw2NTI5Niw0OCw2NTI5Nyw0OSw2NTI5OCw1MCw2NTI5OSw1MSw2NTMwMCw1Miw2NTMwMSw1Myw2NTMwMiw1NCw2NTMwMyw1NSw2NTMwNCw1Niw2NTMwNSw1Nyw2NTMwOCw2MCw2NTMwOSw2MSw2NTMxMCw2Miw2NTMxMiw2NCw2NTMxNiw2OCw2NTMxOCw3MCw2NTMxOSw3MSw2NTMyNCw3Niw2NTMyOSw4MSw2NTMzMCw4Miw2NTMzMyw4NSw2NTMzNCw4Niw2NTMzNSw4Nyw2NTM0Myw5NSw2NTM0Niw5OCw2NTM0OCwxMDAsNjUzNTAsMTAyLDY1MzU1LDEwNyw2NTM1NywxMDksNjUzNTgsMTEwLDY1MzYxLDExMyw2NTM2MiwxMTQsNjUzNjQsMTE2LDY1MzY1LDExNyw2NTM2NywxMTksNjUzNzAsMTIyLDY1MzcxLDEyMyw2NTM3MywxMjVdLCJfZGVmYXVsdCI6WzE2MCwzMiw4MjExLDQ1LDY1Mzc0LDEyNiw2NTMwNiw1OCw2NTI4MSwzMyw4MjE2LDk2LDgyMTcsOTYsODI0NSw5NiwxODAsOTYsMTI0OTQsNDcsMTA0Nyw1MSwxMDczLDU0LDEwNzIsOTcsMTA0MCw2NSwxMDY4LDk4LDEwNDIsNjYsMTA4OSw5OSwxMDU3LDY3LDEwNzcsMTAxLDEwNDUsNjksMTA1Myw3MiwzMDUsMTA1LDEwNTAsNzUsOTIxLDczLDEwNTIsNzcsMTA4NiwxMTEsMTA1NCw3OSwxMDA5LDExMiwxMDg4LDExMiwxMDU2LDgwLDEwNzUsMTE0LDEwNTgsODQsMjE1LDEyMCwxMDkzLDEyMCwxMDYxLDg4LDEwOTEsMTIxLDEwNTksODksNjUyODMsMzUsNjUyODgsNDAsNjUyODksNDEsNjUyOTIsNDQsNjUzMDcsNTksNjUzMTEsNjNdLCJjcyI6WzY1Mzc0LDEyNiw2NTMwNiw1OCw2NTI4MSwzMyw4MjE2LDk2LDgyMTcsOTYsODI0NSw5NiwxODAsOTYsMTI0OTQsNDcsMTA0Nyw1MSwxMDczLDU0LDEwNzIsOTcsMTA0MCw2NSwxMDY4LDk4LDEwNDIsNjYsMTA4OSw5OSwxMDU3LDY3LDEwNzcsMTAxLDEwNDUsNjksMTA1Myw3MiwzMDUsMTA1LDEwNTAsNzUsOTIxLDczLDEwNTIsNzcsMTA4NiwxMTEsMTA1NCw3OSwxMDA5LDExMiwxMDg4LDExMiwxMDU2LDgwLDEwNzUsMTE0LDEwNTgsODQsMTA5MywxMjAsMTA2MSw4OCwxMDkxLDEyMSwxMDU5LDg5LDY1MjgzLDM1LDY1Mjg4LDQwLDY1Mjg5LDQxLDY1MjkyLDQ0LDY1MzA3LDU5LDY1MzExLDYzXSwiZGUiOls2NTM3NCwxMjYsNjUzMDYsNTgsNjUyODEsMzMsODIxNiw5Niw4MjE3LDk2LDgyNDUsOTYsMTgwLDk2LDEyNDk0LDQ3LDEwNDcsNTEsMTA3Myw1NCwxMDcyLDk3LDEwNDAsNjUsMTA2OCw5OCwxMDQyLDY2LDEwODksOTksMTA1Nyw2NywxMDc3LDEwMSwxMDQ1LDY5LDEwNTMsNzIsMzA1LDEwNSwxMDUwLDc1LDkyMSw3MywxMDUyLDc3LDEwODYsMTExLDEwNTQsNzksMTAwOSwxMTIsMTA4OCwxMTIsMTA1Niw4MCwxMDc1LDExNCwxMDU4LDg0LDEwOTMsMTIwLDEwNjEsODgsMTA5MSwxMjEsMTA1OSw4OSw2NTI4MywzNSw2NTI4OCw0MCw2NTI4OSw0MSw2NTI5Miw0NCw2NTMwNyw1OSw2NTMxMSw2M10sImVzIjpbODIxMSw0NSw2NTM3NCwxMjYsNjUzMDYsNTgsNjUyODEsMzMsODI0NSw5NiwxODAsOTYsMTI0OTQsNDcsMTA0Nyw1MSwxMDczLDU0LDEwNzIsOTcsMTA0MCw2NSwxMDY4LDk4LDEwNDIsNjYsMTA4OSw5OSwxMDU3LDY3LDEwNzcsMTAxLDEwNDUsNjksMTA1Myw3MiwzMDUsMTA1LDEwNTAsNzUsMTA1Miw3NywxMDg2LDExMSwxMDU0LDc5LDEwMDksMTEyLDEwODgsMTEyLDEwNTYsODAsMTA3NSwxMTQsMTA1OCw4NCwyMTUsMTIwLDEwOTMsMTIwLDEwNjEsODgsMTA5MSwxMjEsMTA1OSw4OSw2NTI4MywzNSw2NTI4OCw0MCw2NTI4OSw0MSw2NTI5Miw0NCw2NTMwNyw1OSw2NTMxMSw2M10sImZyIjpbNjUzNzQsMTI2LDY1MzA2LDU4LDY1MjgxLDMzLDgyMTYsOTYsODI0NSw5NiwxMjQ5NCw0NywxMDQ3LDUxLDEwNzMsNTQsMTA3Miw5NywxMDQwLDY1LDEwNjgsOTgsMTA0Miw2NiwxMDg5LDk5LDEwNTcsNjcsMTA3NywxMDEsMTA0NSw2OSwxMDUzLDcyLDMwNSwxMDUsMTA1MCw3NSw5MjEsNzMsMTA1Miw3NywxMDg2LDExMSwxMDU0LDc5LDEwMDksMTEyLDEwODgsMTEyLDEwNTYsODAsMTA3NSwxMTQsMTA1OCw4NCwyMTUsMTIwLDEwOTMsMTIwLDEwNjEsODgsMTA5MSwxMjEsMTA1OSw4OSw2NTI4MywzNSw2NTI4OCw0MCw2NTI4OSw0MSw2NTI5Miw0NCw2NTMwNyw1OSw2NTMxMSw2M10sIml0IjpbMTYwLDMyLDgyMTEsNDUsNjUzNzQsMTI2LDY1MzA2LDU4LDY1MjgxLDMzLDgyMTYsOTYsODI0NSw5NiwxODAsOTYsMTI0OTQsNDcsMTA0Nyw1MSwxMDczLDU0LDEwNzIsOTcsMTA0MCw2NSwxMDY4LDk4LDEwNDIsNjYsMTA4OSw5OSwxMDU3LDY3LDEwNzcsMTAxLDEwNDUsNjksMTA1Myw3MiwzMDUsMTA1LDEwNTAsNzUsOTIxLDczLDEwNTIsNzcsMTA4NiwxMTEsMTA1NCw3OSwxMDA5LDExMiwxMDg4LDExMiwxMDU2LDgwLDEwNzUsMTE0LDEwNTgsODQsMjE1LDEyMCwxMDkzLDEyMCwxMDYxLDg4LDEwOTEsMTIxLDEwNTksODksNjUyODMsMzUsNjUyODgsNDAsNjUyODksNDEsNjUyOTIsNDQsNjUzMDcsNTksNjUzMTEsNjNdLCJqYSI6WzgyMTEsNDUsNjUzMDYsNTgsNjUyODEsMzMsODIxNiw5Niw4MjE3LDk2LDgyNDUsOTYsMTgwLDk2LDEwNDcsNTEsMTA3Myw1NCwxMDcyLDk3LDEwNDAsNjUsMTA2OCw5OCwxMDQyLDY2LDEwODksOTksMTA1Nyw2NywxMDc3LDEwMSwxMDQ1LDY5LDEwNTMsNzIsMzA1LDEwNSwxMDUwLDc1LDkyMSw3MywxMDUyLDc3LDEwODYsMTExLDEwNTQsNzksMTAwOSwxMTIsMTA4OCwxMTIsMTA1Niw4MCwxMDc1LDExNCwxMDU4LDg0LDIxNSwxMjAsMTA5MywxMjAsMTA2MSw4OCwxMDkxLDEyMSwxMDU5LDg5LDY1MjgzLDM1LDY1MjkyLDQ0LDY1MzA3LDU5XSwia28iOls4MjExLDQ1LDY1Mzc0LDEyNiw2NTMwNiw1OCw2NTI4MSwzMyw4MjQ1LDk2LDE4MCw5NiwxMjQ5NCw0NywxMDQ3LDUxLDEwNzMsNTQsMTA3Miw5NywxMDQwLDY1LDEwNjgsOTgsMTA0Miw2NiwxMDg5LDk5LDEwNTcsNjcsMTA3NywxMDEsMTA0NSw2OSwxMDUzLDcyLDMwNSwxMDUsMTA1MCw3NSw5MjEsNzMsMTA1Miw3NywxMDg2LDExMSwxMDU0LDc5LDEwMDksMTEyLDEwODgsMTEyLDEwNTYsODAsMTA3NSwxMTQsMTA1OCw4NCwyMTUsMTIwLDEwOTMsMTIwLDEwNjEsODgsMTA5MSwxMjEsMTA1OSw4OSw2NTI4MywzNSw2NTI4OCw0MCw2NTI4OSw0MSw2NTI5Miw0NCw2NTMwNyw1OSw2NTMxMSw2M10sInBsIjpbNjUzNzQsMTI2LDY1MzA2LDU4LDY1MjgxLDMzLDgyMTYsOTYsODIxNyw5Niw4MjQ1LDk2LDE4MCw5NiwxMjQ5NCw0NywxMDQ3LDUxLDEwNzMsNTQsMTA3Miw5NywxMDQwLDY1LDEwNjgsOTgsMTA0Miw2NiwxMDg5LDk5LDEwNTcsNjcsMTA3NywxMDEsMTA0NSw2OSwxMDUzLDcyLDMwNSwxMDUsMTA1MCw3NSw5MjEsNzMsMTA1Miw3NywxMDg2LDExMSwxMDU0LDc5LDEwMDksMTEyLDEwODgsMTEyLDEwNTYsODAsMTA3NSwxMTQsMTA1OCw4NCwyMTUsMTIwLDEwOTMsMTIwLDEwNjEsODgsMTA5MSwxMjEsMTA1OSw4OSw2NTI4MywzNSw2NTI4OCw0MCw2NTI4OSw0MSw2NTI5Miw0NCw2NTMwNyw1OSw2NTMxMSw2M10sInB0LUJSIjpbNjUzNzQsMTI2LDY1MzA2LDU4LDY1MjgxLDMzLDgyMTYsOTYsODIxNyw5Niw4MjQ1LDk2LDE4MCw5NiwxMjQ5NCw0NywxMDQ3LDUxLDEwNzMsNTQsMTA3Miw5NywxMDQwLDY1LDEwNjgsOTgsMTA0Miw2NiwxMDg5LDk5LDEwNTcsNjcsMTA3NywxMDEsMTA0NSw2OSwxMDUzLDcyLDMwNSwxMDUsMTA1MCw3NSw5MjEsNzMsMTA1Miw3NywxMDg2LDExMSwxMDU0LDc5LDEwMDksMTEyLDEwODgsMTEyLDEwNTYsODAsMTA3NSwxMTQsMTA1OCw4NCwyMTUsMTIwLDEwOTMsMTIwLDEwNjEsODgsMTA5MSwxMjEsMTA1OSw4OSw2NTI4MywzNSw2NTI4OCw0MCw2NTI4OSw0MSw2NTI5Miw0NCw2NTMwNyw1OSw2NTMxMSw2M10sInFwcy1wbG9jIjpbMTYwLDMyLDgyMTEsNDUsNjUzNzQsMTI2LDY1MzA2LDU4LDY1MjgxLDMzLDgyMTYsOTYsODIxNyw5Niw4MjQ1LDk2LDE4MCw5NiwxMjQ5NCw0NywxMDQ3LDUxLDEwNzMsNTQsMTA3Miw5NywxMDQwLDY1LDEwNjgsOTgsMTA0Miw2NiwxMDg5LDk5LDEwNTcsNjcsMTA3NywxMDEsMTA0NSw2OSwxMDUzLDcyLDMwNSwxMDUsMTA1MCw3NSw5MjEsNzMsMTA1Miw3NywxMDg2LDExMSwxMDU0LDc5LDEwODgsMTEyLDEwNTYsODAsMTA3NSwxMTQsMTA1OCw4NCwyMTUsMTIwLDEwOTMsMTIwLDEwNjEsODgsMTA5MSwxMjEsMTA1OSw4OSw2NTI4MywzNSw2NTI4OCw0MCw2NTI4OSw0MSw2NTI5Miw0NCw2NTMwNyw1OSw2NTMxMSw2M10sInJ1IjpbNjUzNzQsMTI2LDY1MzA2LDU4LDY1MjgxLDMzLDgyMTYsOTYsODIxNyw5Niw4MjQ1LDk2LDE4MCw5NiwxMjQ5NCw0NywzMDUsMTA1LDkyMSw3MywxMDA5LDExMiwyMTUsMTIwLDY1MjgzLDM1LDY1Mjg4LDQwLDY1Mjg5LDQxLDY1MjkyLDQ0LDY1MzA3LDU5LDY1MzExLDYzXSwidHIiOlsxNjAsMzIsODIxMSw0NSw2NTM3NCwxMjYsNjUzMDYsNTgsNjUyODEsMzMsODI0NSw5NiwxODAsOTYsMTI0OTQsNDcsMTA0Nyw1MSwxMDczLDU0LDEwNzIsOTcsMTA0MCw2NSwxMDY4LDk4LDEwNDIsNjYsMTA4OSw5OSwxMDU3LDY3LDEwNzcsMTAxLDEwNDUsNjksMTA1Myw3MiwxMDUwLDc1LDkyMSw3MywxMDUyLDc3LDEwODYsMTExLDEwNTQsNzksMTAwOSwxMTIsMTA4OCwxMTIsMTA1Niw4MCwxMDc1LDExNCwxMDU4LDg0LDIxNSwxMjAsMTA5MywxMjAsMTA2MSw4OCwxMDkxLDEyMSwxMDU5LDg5LDY1MjgzLDM1LDY1Mjg4LDQwLDY1Mjg5LDQxLDY1MjkyLDQ0LDY1MzA3LDU5LDY1MzExLDYzXSwiemgtaGFucyI6WzY1Mzc0LDEyNiw2NTMwNiw1OCw2NTI4MSwzMyw4MjQ1LDk2LDE4MCw5NiwxMjQ5NCw0NywxMDQ3LDUxLDEwNzMsNTQsMTA3Miw5NywxMDQwLDY1LDEwNjgsOTgsMTA0Miw2NiwxMDg5LDk5LDEwNTcsNjcsMTA3NywxMDEsMTA0NSw2OSwxMDUzLDcyLDMwNSwxMDUsMTA1MCw3NSw5MjEsNzMsMTA1Miw3NywxMDg2LDExMSwxMDU0LDc5LDEwMDksMTEyLDEwODgsMTEyLDEwNTYsODAsMTA3NSwxMTQsMTA1OCw4NCwyMTUsMTIwLDEwOTMsMTIwLDEwNjEsODgsMTA5MSwxMjEsMTA1OSw4OSw2NTI4OCw0MCw2NTI4OSw0MV0sInpoLWhhbnQiOls4MjExLDQ1LDY1Mzc0LDEyNiwxODAsOTYsMTI0OTQsNDcsMTA0Nyw1MSwxMDczLDU0LDEwNzIsOTcsMTA0MCw2NSwxMDY4LDk4LDEwNDIsNjYsMTA4OSw5OSwxMDU3LDY3LDEwNzcsMTAxLDEwNDUsNjksMTA1Myw3MiwzMDUsMTA1LDEwNTAsNzUsOTIxLDczLDEwNTIsNzcsMTA4NiwxMTEsMTA1NCw3OSwxMDA5LDExMiwxMDg4LDExMiwxMDU2LDgwLDEwNzUsMTE0LDEwNTgsODQsMjE1LDEyMCwxMDkzLDEyMCwxMDYxLDg4LDEwOTEsMTIxLDEwNTksODksNjUyODMsMzUsNjUzMDcsNTldfScpKSksWS5jYWNoZT1uZXcgY2xhc3N7Y29uc3RydWN0b3IoZSl7dGhpcy5jb21wdXRlRm49ZSx0aGlzLmxhc3RDYWNoZT12b2lkIDAsdGhpcy5sYXN0QXJnS2V5PXZvaWQgMH1nZXQoZSl7Y29uc3QgdD1KU09OLnN0cmluZ2lmeShlKTtyZXR1cm4gdGhpcy5sYXN0QXJnS2V5IT09dCYmKHRoaXMubGFzdEFyZ0tleT10LHRoaXMubGFzdENhY2hlPXRoaXMuY29tcHV0ZUZuKGUpKSx0aGlzLmxhc3RDYWNoZX19KChlPT57ZnVuY3Rpb24gdChlKXtjb25zdCB0PW5ldyBNYXA7Zm9yKGxldCBuPTA7bjxlLmxlbmd0aDtuKz0yKXQuc2V0KGVbbl0sZVtuKzFdKTtyZXR1cm4gdH1mdW5jdGlvbiBuKGUsdCl7aWYoIWUpcmV0dXJuIHQ7Y29uc3Qgbj1uZXcgTWFwO2Zvcihjb25zdFtyLGldb2YgZSl0LmhhcyhyKSYmbi5zZXQocixpKTtyZXR1cm4gbn1jb25zdCByPUQuYW1iaWd1b3VzQ2hhcmFjdGVyRGF0YS5nZXRWYWx1ZSgpO2xldCBpLGE9ZS5maWx0ZXIoKGU9PiFlLnN0YXJ0c1dpdGgoIl8iKSYmZSBpbiByKSk7MD09PWEubGVuZ3RoJiYoYT1bIl9kZWZhdWx0Il0pO2Zvcihjb25zdCBlIG9mIGEpe2k9bihpLHQocltlXSkpfWNvbnN0IG89ZnVuY3Rpb24oZSx0KXtjb25zdCBuPW5ldyBNYXAoZSk7Zm9yKGNvbnN0W2Uscl1vZiB0KW4uc2V0KGUscik7cmV0dXJuIG59KHQoci5fY29tbW9uKSxpKTtyZXR1cm4gbmV3IFkobyl9KSksWS5fbG9jYWxlcz1uZXcgQigoKCk9Pk9iamVjdC5rZXlzKFkuYW1iaWd1b3VzQ2hhcmFjdGVyRGF0YS5nZXRWYWx1ZSgpKS5maWx0ZXIoKGU9PiFlLnN0YXJ0c1dpdGgoIl8iKSkpKSk7Y2xhc3MgUXtzdGF0aWMgZ2V0UmF3RGF0YSgpe3JldHVybiBKU09OLnBhcnNlKCJbOSwxMCwxMSwxMiwxMywzMiwxMjcsMTYwLDE3Myw4NDcsMTU2NCw0NDQ3LDQ0NDgsNjA2OCw2MDY5LDYxNTUsNjE1Niw2MTU3LDYxNTgsNzM1NSw3MzU2LDgxOTIsODE5Myw4MTk0LDgxOTUsODE5Niw4MTk3LDgxOTgsODE5OSw4MjAwLDgyMDEsODIwMiw4MjAzLDgyMDQsODIwNSw4MjA2LDgyMDcsODIzNCw4MjM1LDgyMzYsODIzNyw4MjM4LDgyMzksODI4Nyw4Mjg4LDgyODksODI5MCw4MjkxLDgyOTIsODI5Myw4Mjk0LDgyOTUsODI5Niw4Mjk3LDgyOTgsODI5OSw4MzAwLDgzMDEsODMwMiw4MzAzLDEwMjQwLDEyMjg4LDEyNjQ0LDY1MDI0LDY1MDI1LDY1MDI2LDY1MDI3LDY1MDI4LDY1MDI5LDY1MDMwLDY1MDMxLDY1MDMyLDY1MDMzLDY1MDM0LDY1MDM1LDY1MDM2LDY1MDM3LDY1MDM4LDY1MDM5LDY1Mjc5LDY1NDQwLDY1NTIwLDY1NTIxLDY1NTIyLDY1NTIzLDY1NTI0LDY1NTI1LDY1NTI2LDY1NTI3LDY1NTI4LDY1NTMyLDc4ODQ0LDExOTE1NSwxMTkxNTYsMTE5MTU3LDExOTE1OCwxMTkxNTksMTE5MTYwLDExOTE2MSwxMTkxNjIsOTE3NTA0LDkxNzUwNSw5MTc1MDYsOTE3NTA3LDkxNzUwOCw5MTc1MDksOTE3NTEwLDkxNzUxMSw5MTc1MTIsOTE3NTEzLDkxNzUxNCw5MTc1MTUsOTE3NTE2LDkxNzUxNyw5MTc1MTgsOTE3NTE5LDkxNzUyMCw5MTc1MjEsOTE3NTIyLDkxNzUyMyw5MTc1MjQsOTE3NTI1LDkxNzUyNiw5MTc1MjcsOTE3NTI4LDkxNzUyOSw5MTc1MzAsOTE3NTMxLDkxNzUzMiw5MTc1MzMsOTE3NTM0LDkxNzUzNSw5MTc1MzYsOTE3NTM3LDkxNzUzOCw5MTc1MzksOTE3NTQwLDkxNzU0MSw5MTc1NDIsOTE3NTQzLDkxNzU0NCw5MTc1NDUsOTE3NTQ2LDkxNzU0Nyw5MTc1NDgsOTE3NTQ5LDkxNzU1MCw5MTc1NTEsOTE3NTUyLDkxNzU1Myw5MTc1NTQsOTE3NTU1LDkxNzU1Niw5MTc1NTcsOTE3NTU4LDkxNzU1OSw5MTc1NjAsOTE3NTYxLDkxNzU2Miw5MTc1NjMsOTE3NTY0LDkxNzU2NSw5MTc1NjYsOTE3NTY3LDkxNzU2OCw5MTc1NjksOTE3NTcwLDkxNzU3MSw5MTc1NzIsOTE3NTczLDkxNzU3NCw5MTc1NzUsOTE3NTc2LDkxNzU3Nyw5MTc1NzgsOTE3NTc5LDkxNzU4MCw5MTc1ODEsOTE3NTgyLDkxNzU4Myw5MTc1ODQsOTE3NTg1LDkxNzU4Niw5MTc1ODcsOTE3NTg4LDkxNzU4OSw5MTc1OTAsOTE3NTkxLDkxNzU5Miw5MTc1OTMsOTE3NTk0LDkxNzU5NSw5MTc1OTYsOTE3NTk3LDkxNzU5OCw5MTc1OTksOTE3NjAwLDkxNzYwMSw5MTc2MDIsOTE3NjAzLDkxNzYwNCw5MTc2MDUsOTE3NjA2LDkxNzYwNyw5MTc2MDgsOTE3NjA5LDkxNzYxMCw5MTc2MTEsOTE3NjEyLDkxNzYxMyw5MTc2MTQsOTE3NjE1LDkxNzYxNiw5MTc2MTcsOTE3NjE4LDkxNzYxOSw5MTc2MjAsOTE3NjIxLDkxNzYyMiw5MTc2MjMsOTE3NjI0LDkxNzYyNSw5MTc2MjYsOTE3NjI3LDkxNzYyOCw5MTc2MjksOTE3NjMwLDkxNzYzMSw5MTc3NjAsOTE3NzYxLDkxNzc2Miw5MTc3NjMsOTE3NzY0LDkxNzc2NSw5MTc3NjYsOTE3NzY3LDkxNzc2OCw5MTc3NjksOTE3NzcwLDkxNzc3MSw5MTc3NzIsOTE3NzczLDkxNzc3NCw5MTc3NzUsOTE3Nzc2LDkxNzc3Nyw5MTc3NzgsOTE3Nzc5LDkxNzc4MCw5MTc3ODEsOTE3NzgyLDkxNzc4Myw5MTc3ODQsOTE3Nzg1LDkxNzc4Niw5MTc3ODcsOTE3Nzg4LDkxNzc4OSw5MTc3OTAsOTE3NzkxLDkxNzc5Miw5MTc3OTMsOTE3Nzk0LDkxNzc5NSw5MTc3OTYsOTE3Nzk3LDkxNzc5OCw5MTc3OTksOTE3ODAwLDkxNzgwMSw5MTc4MDIsOTE3ODAzLDkxNzgwNCw5MTc4MDUsOTE3ODA2LDkxNzgwNyw5MTc4MDgsOTE3ODA5LDkxNzgxMCw5MTc4MTEsOTE3ODEyLDkxNzgxMyw5MTc4MTQsOTE3ODE1LDkxNzgxNiw5MTc4MTcsOTE3ODE4LDkxNzgxOSw5MTc4MjAsOTE3ODIxLDkxNzgyMiw5MTc4MjMsOTE3ODI0LDkxNzgyNSw5MTc4MjYsOTE3ODI3LDkxNzgyOCw5MTc4MjksOTE3ODMwLDkxNzgzMSw5MTc4MzIsOTE3ODMzLDkxNzgzNCw5MTc4MzUsOTE3ODM2LDkxNzgzNyw5MTc4MzgsOTE3ODM5LDkxNzg0MCw5MTc4NDEsOTE3ODQyLDkxNzg0Myw5MTc4NDQsOTE3ODQ1LDkxNzg0Niw5MTc4NDcsOTE3ODQ4LDkxNzg0OSw5MTc4NTAsOTE3ODUxLDkxNzg1Miw5MTc4NTMsOTE3ODU0LDkxNzg1NSw5MTc4NTYsOTE3ODU3LDkxNzg1OCw5MTc4NTksOTE3ODYwLDkxNzg2MSw5MTc4NjIsOTE3ODYzLDkxNzg2NCw5MTc4NjUsOTE3ODY2LDkxNzg2Nyw5MTc4NjgsOTE3ODY5LDkxNzg3MCw5MTc4NzEsOTE3ODcyLDkxNzg3Myw5MTc4NzQsOTE3ODc1LDkxNzg3Niw5MTc4NzcsOTE3ODc4LDkxNzg3OSw5MTc4ODAsOTE3ODgxLDkxNzg4Miw5MTc4ODMsOTE3ODg0LDkxNzg4NSw5MTc4ODYsOTE3ODg3LDkxNzg4OCw5MTc4ODksOTE3ODkwLDkxNzg5MSw5MTc4OTIsOTE3ODkzLDkxNzg5NCw5MTc4OTUsOTE3ODk2LDkxNzg5Nyw5MTc4OTgsOTE3ODk5LDkxNzkwMCw5MTc5MDEsOTE3OTAyLDkxNzkwMyw5MTc5MDQsOTE3OTA1LDkxNzkwNiw5MTc5MDcsOTE3OTA4LDkxNzkwOSw5MTc5MTAsOTE3OTExLDkxNzkxMiw5MTc5MTMsOTE3OTE0LDkxNzkxNSw5MTc5MTYsOTE3OTE3LDkxNzkxOCw5MTc5MTksOTE3OTIwLDkxNzkyMSw5MTc5MjIsOTE3OTIzLDkxNzkyNCw5MTc5MjUsOTE3OTI2LDkxNzkyNyw5MTc5MjgsOTE3OTI5LDkxNzkzMCw5MTc5MzEsOTE3OTMyLDkxNzkzMyw5MTc5MzQsOTE3OTM1LDkxNzkzNiw5MTc5MzcsOTE3OTM4LDkxNzkzOSw5MTc5NDAsOTE3OTQxLDkxNzk0Miw5MTc5NDMsOTE3OTQ0LDkxNzk0NSw5MTc5NDYsOTE3OTQ3LDkxNzk0OCw5MTc5NDksOTE3OTUwLDkxNzk1MSw5MTc5NTIsOTE3OTUzLDkxNzk1NCw5MTc5NTUsOTE3OTU2LDkxNzk1Nyw5MTc5NTgsOTE3OTU5LDkxNzk2MCw5MTc5NjEsOTE3OTYyLDkxNzk2Myw5MTc5NjQsOTE3OTY1LDkxNzk2Niw5MTc5NjcsOTE3OTY4LDkxNzk2OSw5MTc5NzAsOTE3OTcxLDkxNzk3Miw5MTc5NzMsOTE3OTc0LDkxNzk3NSw5MTc5NzYsOTE3OTc3LDkxNzk3OCw5MTc5NzksOTE3OTgwLDkxNzk4MSw5MTc5ODIsOTE3OTgzLDkxNzk4NCw5MTc5ODUsOTE3OTg2LDkxNzk4Nyw5MTc5ODgsOTE3OTg5LDkxNzk5MCw5MTc5OTEsOTE3OTkyLDkxNzk5Myw5MTc5OTQsOTE3OTk1LDkxNzk5Niw5MTc5OTcsOTE3OTk4LDkxNzk5OV0iKX1zdGF0aWMgZ2V0RGF0YSgpe3JldHVybiB0aGlzLl9kYXRhfHwodGhpcy5fZGF0YT1uZXcgU2V0KFEuZ2V0UmF3RGF0YSgpKSksdGhpcy5fZGF0YX1zdGF0aWMgaXNJbnZpc2libGVDaGFyYWN0ZXIoZSl7cmV0dXJuIFEuZ2V0RGF0YSgpLmhhcyhlKX1zdGF0aWMgZ2V0IGNvZGVQb2ludHMoKXtyZXR1cm4gUS5nZXREYXRhKCl9fVEuX2RhdGE9dm9pZCAwO2NsYXNzIFp7Y29uc3RydWN0b3IoZSx0LG4scil7dGhpcy52c1dvcmtlcj1lLHRoaXMucmVxPXQsdGhpcy5tZXRob2Q9bix0aGlzLmFyZ3M9cix0aGlzLnR5cGU9MH19Y2xhc3MgZWV7Y29uc3RydWN0b3IoZSx0LG4scil7dGhpcy52c1dvcmtlcj1lLHRoaXMuc2VxPXQsdGhpcy5yZXM9bix0aGlzLmVycj1yLHRoaXMudHlwZT0xfX1jbGFzcyB0ZXtjb25zdHJ1Y3RvcihlLHQsbixyKXt0aGlzLnZzV29ya2VyPWUsdGhpcy5yZXE9dCx0aGlzLmV2ZW50TmFtZT1uLHRoaXMuYXJnPXIsdGhpcy50eXBlPTJ9fWNsYXNzIG5le2NvbnN0cnVjdG9yKGUsdCxuKXt0aGlzLnZzV29ya2VyPWUsdGhpcy5yZXE9dCx0aGlzLmV2ZW50PW4sdGhpcy50eXBlPTN9fWNsYXNzIHJle2NvbnN0cnVjdG9yKGUsdCl7dGhpcy52c1dvcmtlcj1lLHRoaXMucmVxPXQsdGhpcy50eXBlPTR9fWNsYXNzIGlle2NvbnN0cnVjdG9yKGUpe3RoaXMuX3dvcmtlcklkPS0xLHRoaXMuX2hhbmRsZXI9ZSx0aGlzLl9sYXN0U2VudFJlcT0wLHRoaXMuX3BlbmRpbmdSZXBsaWVzPU9iamVjdC5jcmVhdGUobnVsbCksdGhpcy5fcGVuZGluZ0VtaXR0ZXJzPW5ldyBNYXAsdGhpcy5fcGVuZGluZ0V2ZW50cz1uZXcgTWFwfXNldFdvcmtlcklkKGUpe3RoaXMuX3dvcmtlcklkPWV9c2VuZE1lc3NhZ2UoZSx0KXtjb25zdCBuPVN0cmluZygrK3RoaXMuX2xhc3RTZW50UmVxKTtyZXR1cm4gbmV3IFByb21pc2UoKChyLGkpPT57dGhpcy5fcGVuZGluZ1JlcGxpZXNbbl09e3Jlc29sdmU6cixyZWplY3Q6aX0sdGhpcy5fc2VuZChuZXcgWih0aGlzLl93b3JrZXJJZCxuLGUsdCkpfSkpfWxpc3RlbihlLHQpe2xldCBuPW51bGw7Y29uc3Qgcj1uZXcgUCh7b25GaXJzdExpc3RlbmVyQWRkOigpPT57bj1TdHJpbmcoKyt0aGlzLl9sYXN0U2VudFJlcSksdGhpcy5fcGVuZGluZ0VtaXR0ZXJzLnNldChuLHIpLHRoaXMuX3NlbmQobmV3IHRlKHRoaXMuX3dvcmtlcklkLG4sZSx0KSl9LG9uTGFzdExpc3RlbmVyUmVtb3ZlOigpPT57dGhpcy5fcGVuZGluZ0VtaXR0ZXJzLmRlbGV0ZShuKSx0aGlzLl9zZW5kKG5ldyByZSh0aGlzLl93b3JrZXJJZCxuKSksbj1udWxsfX0pO3JldHVybiByLmV2ZW50fWhhbmRsZU1lc3NhZ2UoZSl7ZSYmZS52c1dvcmtlciYmKC0xIT09dGhpcy5fd29ya2VySWQmJmUudnNXb3JrZXIhPT10aGlzLl93b3JrZXJJZHx8dGhpcy5faGFuZGxlTWVzc2FnZShlKSl9X2hhbmRsZU1lc3NhZ2UoZSl7c3dpdGNoKGUudHlwZSl7Y2FzZSAxOnJldHVybiB0aGlzLl9oYW5kbGVSZXBseU1lc3NhZ2UoZSk7Y2FzZSAwOnJldHVybiB0aGlzLl9oYW5kbGVSZXF1ZXN0TWVzc2FnZShlKTtjYXNlIDI6cmV0dXJuIHRoaXMuX2hhbmRsZVN1YnNjcmliZUV2ZW50TWVzc2FnZShlKTtjYXNlIDM6cmV0dXJuIHRoaXMuX2hhbmRsZUV2ZW50TWVzc2FnZShlKTtjYXNlIDQ6cmV0dXJuIHRoaXMuX2hhbmRsZVVuc3Vic2NyaWJlRXZlbnRNZXNzYWdlKGUpfX1faGFuZGxlUmVwbHlNZXNzYWdlKGUpe2lmKCF0aGlzLl9wZW5kaW5nUmVwbGllc1tlLnNlcV0pcmV0dXJuIHZvaWQgY29uc29sZS53YXJuKCJHb3QgcmVwbHkgdG8gdW5rbm93biBzZXEiKTtsZXQgdD10aGlzLl9wZW5kaW5nUmVwbGllc1tlLnNlcV07aWYoZGVsZXRlIHRoaXMuX3BlbmRpbmdSZXBsaWVzW2Uuc2VxXSxlLmVycil7bGV0IG49ZS5lcnI7cmV0dXJuIGUuZXJyLiRpc0Vycm9yJiYobj1uZXcgRXJyb3Isbi5uYW1lPWUuZXJyLm5hbWUsbi5tZXNzYWdlPWUuZXJyLm1lc3NhZ2Usbi5zdGFjaz1lLmVyci5zdGFjayksdm9pZCB0LnJlamVjdChuKX10LnJlc29sdmUoZS5yZXMpfV9oYW5kbGVSZXF1ZXN0TWVzc2FnZShlKXtsZXQgdD1lLnJlcTt0aGlzLl9oYW5kbGVyLmhhbmRsZU1lc3NhZ2UoZS5tZXRob2QsZS5hcmdzKS50aGVuKChlPT57dGhpcy5fc2VuZChuZXcgZWUodGhpcy5fd29ya2VySWQsdCxlLHZvaWQgMCkpfSksKGU9PntlLmRldGFpbCBpbnN0YW5jZW9mIEVycm9yJiYoZS5kZXRhaWw9cihlLmRldGFpbCkpLHRoaXMuX3NlbmQobmV3IGVlKHRoaXMuX3dvcmtlcklkLHQsdm9pZCAwLHIoZSkpKX0pKX1faGFuZGxlU3Vic2NyaWJlRXZlbnRNZXNzYWdlKGUpe2NvbnN0IHQ9ZS5yZXEsbj10aGlzLl9oYW5kbGVyLmhhbmRsZUV2ZW50KGUuZXZlbnROYW1lLGUuYXJnKSgoZT0+e3RoaXMuX3NlbmQobmV3IG5lKHRoaXMuX3dvcmtlcklkLHQsZSkpfSkpO3RoaXMuX3BlbmRpbmdFdmVudHMuc2V0KHQsbil9X2hhbmRsZUV2ZW50TWVzc2FnZShlKXt0aGlzLl9wZW5kaW5nRW1pdHRlcnMuaGFzKGUucmVxKT90aGlzLl9wZW5kaW5nRW1pdHRlcnMuZ2V0KGUucmVxKS5maXJlKGUuZXZlbnQpOmNvbnNvbGUud2FybigiR290IGV2ZW50IGZvciB1bmtub3duIHJlcSIpfV9oYW5kbGVVbnN1YnNjcmliZUV2ZW50TWVzc2FnZShlKXt0aGlzLl9wZW5kaW5nRXZlbnRzLmhhcyhlLnJlcSk/KHRoaXMuX3BlbmRpbmdFdmVudHMuZ2V0KGUucmVxKS5kaXNwb3NlKCksdGhpcy5fcGVuZGluZ0V2ZW50cy5kZWxldGUoZS5yZXEpKTpjb25zb2xlLndhcm4oIkdvdCB1bnN1YnNjcmliZSBmb3IgdW5rbm93biByZXEiKX1fc2VuZChlKXtsZXQgdD1bXTtpZigwPT09ZS50eXBlKWZvcihsZXQgbj0wO248ZS5hcmdzLmxlbmd0aDtuKyspZS5hcmdzW25daW5zdGFuY2VvZiBBcnJheUJ1ZmZlciYmdC5wdXNoKGUuYXJnc1tuXSk7ZWxzZSAxPT09ZS50eXBlJiZlLnJlcyBpbnN0YW5jZW9mIEFycmF5QnVmZmVyJiZ0LnB1c2goZS5yZXMpO3RoaXMuX2hhbmRsZXIuc2VuZE1lc3NhZ2UoZSx0KX19ZnVuY3Rpb24gYWUoZSl7cmV0dXJuIm8iPT09ZVswXSYmIm4iPT09ZVsxXSYmaihlLmNoYXJDb2RlQXQoMikpfWZ1bmN0aW9uIG9lKGUpe3JldHVybi9eb25EeW5hbWljLy50ZXN0KGUpJiZqKGUuY2hhckNvZGVBdCg5KSl9Y2xhc3Mgc2V7Y29uc3RydWN0b3IoZSx0KXt0aGlzLl9yZXF1ZXN0SGFuZGxlckZhY3Rvcnk9dCx0aGlzLl9yZXF1ZXN0SGFuZGxlcj1udWxsLHRoaXMuX3Byb3RvY29sPW5ldyBpZSh7c2VuZE1lc3NhZ2U6KHQsbik9PntlKHQsbil9LGhhbmRsZU1lc3NhZ2U6KGUsdCk9PnRoaXMuX2hhbmRsZU1lc3NhZ2UoZSx0KSxoYW5kbGVFdmVudDooZSx0KT0+dGhpcy5faGFuZGxlRXZlbnQoZSx0KX0pfW9ubWVzc2FnZShlKXt0aGlzLl9wcm90b2NvbC5oYW5kbGVNZXNzYWdlKGUpfV9oYW5kbGVNZXNzYWdlKGUsdCl7aWYoIiRpbml0aWFsaXplIj09PWUpcmV0dXJuIHRoaXMuaW5pdGlhbGl6ZSh0WzBdLHRbMV0sdFsyXSx0WzNdKTtpZighdGhpcy5fcmVxdWVzdEhhbmRsZXJ8fCJmdW5jdGlvbiIhPXR5cGVvZiB0aGlzLl9yZXF1ZXN0SGFuZGxlcltlXSlyZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKCJNaXNzaW5nIHJlcXVlc3RIYW5kbGVyIG9yIG1ldGhvZDogIitlKSk7dHJ5e3JldHVybiBQcm9taXNlLnJlc29sdmUodGhpcy5fcmVxdWVzdEhhbmRsZXJbZV0uYXBwbHkodGhpcy5fcmVxdWVzdEhhbmRsZXIsdCkpfWNhdGNoKGUpe3JldHVybiBQcm9taXNlLnJlamVjdChlKX19X2hhbmRsZUV2ZW50KGUsdCl7aWYoIXRoaXMuX3JlcXVlc3RIYW5kbGVyKXRocm93IG5ldyBFcnJvcigiTWlzc2luZyByZXF1ZXN0SGFuZGxlciIpO2lmKG9lKGUpKXtjb25zdCBuPXRoaXMuX3JlcXVlc3RIYW5kbGVyW2VdLmNhbGwodGhpcy5fcmVxdWVzdEhhbmRsZXIsdCk7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIG4pdGhyb3cgbmV3IEVycm9yKGBNaXNzaW5nIGR5bmFtaWMgZXZlbnQgJHtlfSBvbiByZXF1ZXN0IGhhbmRsZXIuYCk7cmV0dXJuIG59aWYoYWUoZSkpe2NvbnN0IHQ9dGhpcy5fcmVxdWVzdEhhbmRsZXJbZV07aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQpdGhyb3cgbmV3IEVycm9yKGBNaXNzaW5nIGV2ZW50ICR7ZX0gb24gcmVxdWVzdCBoYW5kbGVyLmApO3JldHVybiB0fXRocm93IG5ldyBFcnJvcihgTWFsZm9ybWVkIGV2ZW50IG5hbWUgJHtlfWApfWluaXRpYWxpemUoZSx0LG4scil7dGhpcy5fcHJvdG9jb2wuc2V0V29ya2VySWQoZSk7Y29uc3QgaT1mdW5jdGlvbihlLHQsbil7Y29uc3Qgcj1lPT5mdW5jdGlvbigpe2NvbnN0IG49QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDApO3JldHVybiB0KGUsbil9LGk9ZT0+ZnVuY3Rpb24odCl7cmV0dXJuIG4oZSx0KX07bGV0IGE9e307Zm9yKGNvbnN0IHQgb2YgZSlvZSh0KT9hW3RdPWkodCk6YWUodCk/YVt0XT1uKHQsdm9pZCAwKTphW3RdPXIodCk7cmV0dXJuIGF9KHIsKChlLHQpPT50aGlzLl9wcm90b2NvbC5zZW5kTWVzc2FnZShlLHQpKSwoKGUsdCk9PnRoaXMuX3Byb3RvY29sLmxpc3RlbihlLHQpKSk7cmV0dXJuIHRoaXMuX3JlcXVlc3RIYW5kbGVyRmFjdG9yeT8odGhpcy5fcmVxdWVzdEhhbmRsZXI9dGhpcy5fcmVxdWVzdEhhbmRsZXJGYWN0b3J5KGkpLFByb21pc2UucmVzb2x2ZShxKHRoaXMuX3JlcXVlc3RIYW5kbGVyKSkpOih0JiYodm9pZCAwIT09dC5iYXNlVXJsJiZkZWxldGUgdC5iYXNlVXJsLHZvaWQgMCE9PXQucGF0aHMmJnZvaWQgMCE9PXQucGF0aHMudnMmJmRlbGV0ZSB0LnBhdGhzLnZzLHZvaWQgMCE9PXR5cGVvZiB0LnRydXN0ZWRUeXBlc1BvbGljeSYmZGVsZXRlIHQudHJ1c3RlZFR5cGVzUG9saWN5LHQuY2F0Y2hFcnJvcj0hMCx4LnJlcXVpcmUuY29uZmlnKHQpKSxuZXcgUHJvbWlzZSgoKGUsdCk9PnsoMCx4LnJlcXVpcmUpKFtuXSwobj0+e3RoaXMuX3JlcXVlc3RIYW5kbGVyPW4uY3JlYXRlKGkpLHRoaXMuX3JlcXVlc3RIYW5kbGVyP2UocSh0aGlzLl9yZXF1ZXN0SGFuZGxlcikpOnQobmV3IEVycm9yKCJObyBSZXF1ZXN0SGFuZGxlciEiKSl9KSx0KX0pKSl9fWNsYXNzIGxle2NvbnN0cnVjdG9yKGUsdCxuLHIpe3RoaXMub3JpZ2luYWxTdGFydD1lLHRoaXMub3JpZ2luYWxMZW5ndGg9dCx0aGlzLm1vZGlmaWVkU3RhcnQ9bix0aGlzLm1vZGlmaWVkTGVuZ3RoPXJ9Z2V0T3JpZ2luYWxFbmQoKXtyZXR1cm4gdGhpcy5vcmlnaW5hbFN0YXJ0K3RoaXMub3JpZ2luYWxMZW5ndGh9Z2V0TW9kaWZpZWRFbmQoKXtyZXR1cm4gdGhpcy5tb2RpZmllZFN0YXJ0K3RoaXMubW9kaWZpZWRMZW5ndGh9fWZ1bmN0aW9uIGNlKGUsdCl7cmV0dXJuKHQ8PDUpLXQrZXwwfWZ1bmN0aW9uIGhlKGUsdCl7dD1jZSgxNDk0MTcsdCk7Zm9yKGxldCBuPTAscj1lLmxlbmd0aDtuPHI7bisrKXQ9Y2UoZS5jaGFyQ29kZUF0KG4pLHQpO3JldHVybiB0fWNsYXNzIGRle2NvbnN0cnVjdG9yKGUpe3RoaXMuc291cmNlPWV9Z2V0RWxlbWVudHMoKXtjb25zdCBlPXRoaXMuc291cmNlLHQ9bmV3IEludDMyQXJyYXkoZS5sZW5ndGgpO2ZvcihsZXQgbj0wLHI9ZS5sZW5ndGg7bjxyO24rKyl0W25dPWUuY2hhckNvZGVBdChuKTtyZXR1cm4gdH19ZnVuY3Rpb24gdWUoZSx0LG4pe3JldHVybiBuZXcgZ2UobmV3IGRlKGUpLG5ldyBkZSh0KSkuQ29tcHV0ZURpZmYobikuY2hhbmdlc31jbGFzcyBwZXtzdGF0aWMgQXNzZXJ0KGUsdCl7aWYoIWUpdGhyb3cgbmV3IEVycm9yKHQpfX1jbGFzcyBtZXtzdGF0aWMgQ29weShlLHQsbixyLGkpe2ZvcihsZXQgYT0wO2E8aTthKyspbltyK2FdPWVbdCthXX1zdGF0aWMgQ29weTIoZSx0LG4scixpKXtmb3IobGV0IGE9MDthPGk7YSsrKW5bcithXT1lW3QrYV19fWNsYXNzIGZle2NvbnN0cnVjdG9yKCl7dGhpcy5tX2NoYW5nZXM9W10sdGhpcy5tX29yaWdpbmFsU3RhcnQ9MTA3Mzc0MTgyNCx0aGlzLm1fbW9kaWZpZWRTdGFydD0xMDczNzQxODI0LHRoaXMubV9vcmlnaW5hbENvdW50PTAsdGhpcy5tX21vZGlmaWVkQ291bnQ9MH1NYXJrTmV4dENoYW5nZSgpeyh0aGlzLm1fb3JpZ2luYWxDb3VudD4wfHx0aGlzLm1fbW9kaWZpZWRDb3VudD4wKSYmdGhpcy5tX2NoYW5nZXMucHVzaChuZXcgbGUodGhpcy5tX29yaWdpbmFsU3RhcnQsdGhpcy5tX29yaWdpbmFsQ291bnQsdGhpcy5tX21vZGlmaWVkU3RhcnQsdGhpcy5tX21vZGlmaWVkQ291bnQpKSx0aGlzLm1fb3JpZ2luYWxDb3VudD0wLHRoaXMubV9tb2RpZmllZENvdW50PTAsdGhpcy5tX29yaWdpbmFsU3RhcnQ9MTA3Mzc0MTgyNCx0aGlzLm1fbW9kaWZpZWRTdGFydD0xMDczNzQxODI0fUFkZE9yaWdpbmFsRWxlbWVudChlLHQpe3RoaXMubV9vcmlnaW5hbFN0YXJ0PU1hdGgubWluKHRoaXMubV9vcmlnaW5hbFN0YXJ0LGUpLHRoaXMubV9tb2RpZmllZFN0YXJ0PU1hdGgubWluKHRoaXMubV9tb2RpZmllZFN0YXJ0LHQpLHRoaXMubV9vcmlnaW5hbENvdW50Kyt9QWRkTW9kaWZpZWRFbGVtZW50KGUsdCl7dGhpcy5tX29yaWdpbmFsU3RhcnQ9TWF0aC5taW4odGhpcy5tX29yaWdpbmFsU3RhcnQsZSksdGhpcy5tX21vZGlmaWVkU3RhcnQ9TWF0aC5taW4odGhpcy5tX21vZGlmaWVkU3RhcnQsdCksdGhpcy5tX21vZGlmaWVkQ291bnQrK31nZXRDaGFuZ2VzKCl7cmV0dXJuKHRoaXMubV9vcmlnaW5hbENvdW50PjB8fHRoaXMubV9tb2RpZmllZENvdW50PjApJiZ0aGlzLk1hcmtOZXh0Q2hhbmdlKCksdGhpcy5tX2NoYW5nZXN9Z2V0UmV2ZXJzZUNoYW5nZXMoKXtyZXR1cm4odGhpcy5tX29yaWdpbmFsQ291bnQ+MHx8dGhpcy5tX21vZGlmaWVkQ291bnQ+MCkmJnRoaXMuTWFya05leHRDaGFuZ2UoKSx0aGlzLm1fY2hhbmdlcy5yZXZlcnNlKCksdGhpcy5tX2NoYW5nZXN9fWNsYXNzIGdle2NvbnN0cnVjdG9yKGUsdCxuPW51bGwpe3RoaXMuQ29udGludWVQcm9jZXNzaW5nUHJlZGljYXRlPW4sdGhpcy5fb3JpZ2luYWxTZXF1ZW5jZT1lLHRoaXMuX21vZGlmaWVkU2VxdWVuY2U9dDtjb25zdFtyLGksYV09Z2UuX2dldEVsZW1lbnRzKGUpLFtvLHMsbF09Z2UuX2dldEVsZW1lbnRzKHQpO3RoaXMuX2hhc1N0cmluZ3M9YSYmbCx0aGlzLl9vcmlnaW5hbFN0cmluZ0VsZW1lbnRzPXIsdGhpcy5fb3JpZ2luYWxFbGVtZW50c09ySGFzaD1pLHRoaXMuX21vZGlmaWVkU3RyaW5nRWxlbWVudHM9byx0aGlzLl9tb2RpZmllZEVsZW1lbnRzT3JIYXNoPXMsdGhpcy5tX2ZvcndhcmRIaXN0b3J5PVtdLHRoaXMubV9yZXZlcnNlSGlzdG9yeT1bXX1zdGF0aWMgX2lzU3RyaW5nQXJyYXkoZSl7cmV0dXJuIGUubGVuZ3RoPjAmJiJzdHJpbmciPT10eXBlb2YgZVswXX1zdGF0aWMgX2dldEVsZW1lbnRzKGUpe2NvbnN0IHQ9ZS5nZXRFbGVtZW50cygpO2lmKGdlLl9pc1N0cmluZ0FycmF5KHQpKXtjb25zdCBlPW5ldyBJbnQzMkFycmF5KHQubGVuZ3RoKTtmb3IobGV0IG49MCxyPXQubGVuZ3RoO248cjtuKyspZVtuXT1oZSh0W25dLDApO3JldHVyblt0LGUsITBdfXJldHVybiB0IGluc3RhbmNlb2YgSW50MzJBcnJheT9bW10sdCwhMV06W1tdLG5ldyBJbnQzMkFycmF5KHQpLCExXX1FbGVtZW50c0FyZUVxdWFsKGUsdCl7cmV0dXJuIHRoaXMuX29yaWdpbmFsRWxlbWVudHNPckhhc2hbZV09PT10aGlzLl9tb2RpZmllZEVsZW1lbnRzT3JIYXNoW3RdJiYoIXRoaXMuX2hhc1N0cmluZ3N8fHRoaXMuX29yaWdpbmFsU3RyaW5nRWxlbWVudHNbZV09PT10aGlzLl9tb2RpZmllZFN0cmluZ0VsZW1lbnRzW3RdKX1FbGVtZW50c0FyZVN0cmljdEVxdWFsKGUsdCl7aWYoIXRoaXMuRWxlbWVudHNBcmVFcXVhbChlLHQpKXJldHVybiExO3JldHVybiBnZS5fZ2V0U3RyaWN0RWxlbWVudCh0aGlzLl9vcmlnaW5hbFNlcXVlbmNlLGUpPT09Z2UuX2dldFN0cmljdEVsZW1lbnQodGhpcy5fbW9kaWZpZWRTZXF1ZW5jZSx0KX1zdGF0aWMgX2dldFN0cmljdEVsZW1lbnQoZSx0KXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgZS5nZXRTdHJpY3RFbGVtZW50P2UuZ2V0U3RyaWN0RWxlbWVudCh0KTpudWxsfU9yaWdpbmFsRWxlbWVudHNBcmVFcXVhbChlLHQpe3JldHVybiB0aGlzLl9vcmlnaW5hbEVsZW1lbnRzT3JIYXNoW2VdPT09dGhpcy5fb3JpZ2luYWxFbGVtZW50c09ySGFzaFt0XSYmKCF0aGlzLl9oYXNTdHJpbmdzfHx0aGlzLl9vcmlnaW5hbFN0cmluZ0VsZW1lbnRzW2VdPT09dGhpcy5fb3JpZ2luYWxTdHJpbmdFbGVtZW50c1t0XSl9TW9kaWZpZWRFbGVtZW50c0FyZUVxdWFsKGUsdCl7cmV0dXJuIHRoaXMuX21vZGlmaWVkRWxlbWVudHNPckhhc2hbZV09PT10aGlzLl9tb2RpZmllZEVsZW1lbnRzT3JIYXNoW3RdJiYoIXRoaXMuX2hhc1N0cmluZ3N8fHRoaXMuX21vZGlmaWVkU3RyaW5nRWxlbWVudHNbZV09PT10aGlzLl9tb2RpZmllZFN0cmluZ0VsZW1lbnRzW3RdKX1Db21wdXRlRGlmZihlKXtyZXR1cm4gdGhpcy5fQ29tcHV0ZURpZmYoMCx0aGlzLl9vcmlnaW5hbEVsZW1lbnRzT3JIYXNoLmxlbmd0aC0xLDAsdGhpcy5fbW9kaWZpZWRFbGVtZW50c09ySGFzaC5sZW5ndGgtMSxlKX1fQ29tcHV0ZURpZmYoZSx0LG4scixpKXtjb25zdCBhPVshMV07bGV0IG89dGhpcy5Db21wdXRlRGlmZlJlY3Vyc2l2ZShlLHQsbixyLGEpO3JldHVybiBpJiYobz10aGlzLlByZXR0aWZ5Q2hhbmdlcyhvKSkse3F1aXRFYXJseTphWzBdLGNoYW5nZXM6b319Q29tcHV0ZURpZmZSZWN1cnNpdmUoZSx0LG4scixpKXtmb3IoaVswXT0hMTtlPD10JiZuPD1yJiZ0aGlzLkVsZW1lbnRzQXJlRXF1YWwoZSxuKTspZSsrLG4rKztmb3IoO3Q+PWUmJnI+PW4mJnRoaXMuRWxlbWVudHNBcmVFcXVhbCh0LHIpOyl0LS0sci0tO2lmKGU+dHx8bj5yKXtsZXQgaTtyZXR1cm4gbjw9cj8ocGUuQXNzZXJ0KGU9PT10KzEsIm9yaWdpbmFsU3RhcnQgc2hvdWxkIG9ubHkgYmUgb25lIG1vcmUgdGhhbiBvcmlnaW5hbEVuZCIpLGk9W25ldyBsZShlLDAsbixyLW4rMSldKTplPD10PyhwZS5Bc3NlcnQobj09PXIrMSwibW9kaWZpZWRTdGFydCBzaG91bGQgb25seSBiZSBvbmUgbW9yZSB0aGFuIG1vZGlmaWVkRW5kIiksaT1bbmV3IGxlKGUsdC1lKzEsbiwwKV0pOihwZS5Bc3NlcnQoZT09PXQrMSwib3JpZ2luYWxTdGFydCBzaG91bGQgb25seSBiZSBvbmUgbW9yZSB0aGFuIG9yaWdpbmFsRW5kIikscGUuQXNzZXJ0KG49PT1yKzEsIm1vZGlmaWVkU3RhcnQgc2hvdWxkIG9ubHkgYmUgb25lIG1vcmUgdGhhbiBtb2RpZmllZEVuZCIpLGk9W10pLGl9Y29uc3QgYT1bMF0sbz1bMF0scz10aGlzLkNvbXB1dGVSZWN1cnNpb25Qb2ludChlLHQsbixyLGEsbyxpKSxsPWFbMF0sYz1vWzBdO2lmKG51bGwhPT1zKXJldHVybiBzO2lmKCFpWzBdKXtjb25zdCBhPXRoaXMuQ29tcHV0ZURpZmZSZWN1cnNpdmUoZSxsLG4sYyxpKTtsZXQgbz1bXTtyZXR1cm4gbz1pWzBdP1tuZXcgbGUobCsxLHQtKGwrMSkrMSxjKzEsci0oYysxKSsxKV06dGhpcy5Db21wdXRlRGlmZlJlY3Vyc2l2ZShsKzEsdCxjKzEscixpKSx0aGlzLkNvbmNhdGVuYXRlQ2hhbmdlcyhhLG8pfXJldHVybltuZXcgbGUoZSx0LWUrMSxuLHItbisxKV19V0FMS1RSQUNFKGUsdCxuLHIsaSxhLG8scyxsLGMsaCxkLHUscCxtLGYsZyxiKXtsZXQgdz1udWxsLF89bnVsbCx2PW5ldyBmZSx5PXQsVD1uLGs9dVswXS1mWzBdLXIsUz0tMTA3Mzc0MTgyNCxDPXRoaXMubV9mb3J3YXJkSGlzdG9yeS5sZW5ndGgtMTtkb3tjb25zdCB0PWsrZTt0PT09eXx8dDxUJiZsW3QtMV08bFt0KzFdPyhwPShoPWxbdCsxXSktay1yLGg8UyYmdi5NYXJrTmV4dENoYW5nZSgpLFM9aCx2LkFkZE1vZGlmaWVkRWxlbWVudChoKzEscCksaz10KzEtZSk6KHA9KGg9bFt0LTFdKzEpLWstcixoPFMmJnYuTWFya05leHRDaGFuZ2UoKSxTPWgtMSx2LkFkZE9yaWdpbmFsRWxlbWVudChoLHArMSksaz10LTEtZSksQz49MCYmKGU9KGw9dGhpcy5tX2ZvcndhcmRIaXN0b3J5W0NdKVswXSx5PTEsVD1sLmxlbmd0aC0xKX13aGlsZSgtLUM+PS0xKTtpZih3PXYuZ2V0UmV2ZXJzZUNoYW5nZXMoKSxiWzBdKXtsZXQgZT11WzBdKzEsdD1mWzBdKzE7aWYobnVsbCE9PXcmJncubGVuZ3RoPjApe2NvbnN0IG49d1t3Lmxlbmd0aC0xXTtlPU1hdGgubWF4KGUsbi5nZXRPcmlnaW5hbEVuZCgpKSx0PU1hdGgubWF4KHQsbi5nZXRNb2RpZmllZEVuZCgpKX1fPVtuZXcgbGUoZSxkLWUrMSx0LG0tdCsxKV19ZWxzZXt2PW5ldyBmZSx5PWEsVD1vLGs9dVswXS1mWzBdLXMsUz0xMDczNzQxODI0LEM9Zz90aGlzLm1fcmV2ZXJzZUhpc3RvcnkubGVuZ3RoLTE6dGhpcy5tX3JldmVyc2VIaXN0b3J5Lmxlbmd0aC0yO2Rve2NvbnN0IGU9aytpO2U9PT15fHxlPFQmJmNbZS0xXT49Y1tlKzFdPyhwPShoPWNbZSsxXS0xKS1rLXMsaD5TJiZ2Lk1hcmtOZXh0Q2hhbmdlKCksUz1oKzEsdi5BZGRPcmlnaW5hbEVsZW1lbnQoaCsxLHArMSksaz1lKzEtaSk6KHA9KGg9Y1tlLTFdKS1rLXMsaD5TJiZ2Lk1hcmtOZXh0Q2hhbmdlKCksUz1oLHYuQWRkTW9kaWZpZWRFbGVtZW50KGgrMSxwKzEpLGs9ZS0xLWkpLEM+PTAmJihpPShjPXRoaXMubV9yZXZlcnNlSGlzdG9yeVtDXSlbMF0seT0xLFQ9Yy5sZW5ndGgtMSl9d2hpbGUoLS1DPj0tMSk7Xz12LmdldENoYW5nZXMoKX1yZXR1cm4gdGhpcy5Db25jYXRlbmF0ZUNoYW5nZXModyxfKX1Db21wdXRlUmVjdXJzaW9uUG9pbnQoZSx0LG4scixpLGEsbyl7bGV0IHM9MCxsPTAsYz0wLGg9MCxkPTAsdT0wO2UtLSxuLS0saVswXT0wLGFbMF09MCx0aGlzLm1fZm9yd2FyZEhpc3Rvcnk9W10sdGhpcy5tX3JldmVyc2VIaXN0b3J5PVtdO2NvbnN0IHA9dC1lKyhyLW4pLG09cCsxLGY9bmV3IEludDMyQXJyYXkobSksZz1uZXcgSW50MzJBcnJheShtKSxiPXItbix3PXQtZSxfPWUtbix2PXQtcix5PSh3LWIpJTI9PTA7ZltiXT1lLGdbd109dCxvWzBdPSExO2ZvcihsZXQgVD0xO1Q8PXAvMisxO1QrKyl7bGV0IHA9MCxrPTA7Yz10aGlzLkNsaXBEaWFnb25hbEJvdW5kKGItVCxULGIsbSksaD10aGlzLkNsaXBEaWFnb25hbEJvdW5kKGIrVCxULGIsbSk7Zm9yKGxldCBlPWM7ZTw9aDtlKz0yKXtzPWU9PT1jfHxlPGgmJmZbZS0xXTxmW2UrMV0/ZltlKzFdOmZbZS0xXSsxLGw9cy0oZS1iKS1fO2NvbnN0IG49cztmb3IoO3M8dCYmbDxyJiZ0aGlzLkVsZW1lbnRzQXJlRXF1YWwocysxLGwrMSk7KXMrKyxsKys7aWYoZltlXT1zLHMrbD5wK2smJihwPXMsaz1sKSwheSYmTWF0aC5hYnMoZS13KTw9VC0xJiZzPj1nW2VdKXJldHVybiBpWzBdPXMsYVswXT1sLG48PWdbZV0mJlQ8PTE0NDg/dGhpcy5XQUxLVFJBQ0UoYixjLGgsXyx3LGQsdSx2LGYsZyxzLHQsaSxsLHIsYSx5LG8pOm51bGx9Y29uc3QgUz0ocC1lKyhrLW4pLVQpLzI7aWYobnVsbCE9PXRoaXMuQ29udGludWVQcm9jZXNzaW5nUHJlZGljYXRlJiYhdGhpcy5Db250aW51ZVByb2Nlc3NpbmdQcmVkaWNhdGUocCxTKSlyZXR1cm4gb1swXT0hMCxpWzBdPXAsYVswXT1rLFM+MCYmVDw9MTQ0OD90aGlzLldBTEtUUkFDRShiLGMsaCxfLHcsZCx1LHYsZixnLHMsdCxpLGwscixhLHksbyk6KGUrKyxuKyssW25ldyBsZShlLHQtZSsxLG4sci1uKzEpXSk7ZD10aGlzLkNsaXBEaWFnb25hbEJvdW5kKHctVCxULHcsbSksdT10aGlzLkNsaXBEaWFnb25hbEJvdW5kKHcrVCxULHcsbSk7Zm9yKGxldCBwPWQ7cDw9dTtwKz0yKXtzPXA9PT1kfHxwPHUmJmdbcC0xXT49Z1twKzFdP2dbcCsxXS0xOmdbcC0xXSxsPXMtKHAtdyktdjtjb25zdCBtPXM7Zm9yKDtzPmUmJmw+biYmdGhpcy5FbGVtZW50c0FyZUVxdWFsKHMsbCk7KXMtLSxsLS07aWYoZ1twXT1zLHkmJk1hdGguYWJzKHAtYik8PVQmJnM8PWZbcF0pcmV0dXJuIGlbMF09cyxhWzBdPWwsbT49ZltwXSYmVDw9MTQ0OD90aGlzLldBTEtUUkFDRShiLGMsaCxfLHcsZCx1LHYsZixnLHMsdCxpLGwscixhLHksbyk6bnVsbH1pZihUPD0xNDQ3KXtsZXQgZT1uZXcgSW50MzJBcnJheShoLWMrMik7ZVswXT1iLWMrMSxtZS5Db3B5MihmLGMsZSwxLGgtYysxKSx0aGlzLm1fZm9yd2FyZEhpc3RvcnkucHVzaChlKSxlPW5ldyBJbnQzMkFycmF5KHUtZCsyKSxlWzBdPXctZCsxLG1lLkNvcHkyKGcsZCxlLDEsdS1kKzEpLHRoaXMubV9yZXZlcnNlSGlzdG9yeS5wdXNoKGUpfX1yZXR1cm4gdGhpcy5XQUxLVFJBQ0UoYixjLGgsXyx3LGQsdSx2LGYsZyxzLHQsaSxsLHIsYSx5LG8pfVByZXR0aWZ5Q2hhbmdlcyhlKXtmb3IobGV0IHQ9MDt0PGUubGVuZ3RoO3QrKyl7Y29uc3Qgbj1lW3RdLHI9dDxlLmxlbmd0aC0xP2VbdCsxXS5vcmlnaW5hbFN0YXJ0OnRoaXMuX29yaWdpbmFsRWxlbWVudHNPckhhc2gubGVuZ3RoLGk9dDxlLmxlbmd0aC0xP2VbdCsxXS5tb2RpZmllZFN0YXJ0OnRoaXMuX21vZGlmaWVkRWxlbWVudHNPckhhc2gubGVuZ3RoLGE9bi5vcmlnaW5hbExlbmd0aD4wLG89bi5tb2RpZmllZExlbmd0aD4wO2Zvcig7bi5vcmlnaW5hbFN0YXJ0K24ub3JpZ2luYWxMZW5ndGg8ciYmbi5tb2RpZmllZFN0YXJ0K24ubW9kaWZpZWRMZW5ndGg8aSYmKCFhfHx0aGlzLk9yaWdpbmFsRWxlbWVudHNBcmVFcXVhbChuLm9yaWdpbmFsU3RhcnQsbi5vcmlnaW5hbFN0YXJ0K24ub3JpZ2luYWxMZW5ndGgpKSYmKCFvfHx0aGlzLk1vZGlmaWVkRWxlbWVudHNBcmVFcXVhbChuLm1vZGlmaWVkU3RhcnQsbi5tb2RpZmllZFN0YXJ0K24ubW9kaWZpZWRMZW5ndGgpKTspe2NvbnN0IGU9dGhpcy5FbGVtZW50c0FyZVN0cmljdEVxdWFsKG4ub3JpZ2luYWxTdGFydCxuLm1vZGlmaWVkU3RhcnQpO2lmKHRoaXMuRWxlbWVudHNBcmVTdHJpY3RFcXVhbChuLm9yaWdpbmFsU3RhcnQrbi5vcmlnaW5hbExlbmd0aCxuLm1vZGlmaWVkU3RhcnQrbi5tb2RpZmllZExlbmd0aCkmJiFlKWJyZWFrO24ub3JpZ2luYWxTdGFydCsrLG4ubW9kaWZpZWRTdGFydCsrfWxldCBzPVtudWxsXTt0PGUubGVuZ3RoLTEmJnRoaXMuQ2hhbmdlc092ZXJsYXAoZVt0XSxlW3QrMV0scykmJihlW3RdPXNbMF0sZS5zcGxpY2UodCsxLDEpLHQtLSl9Zm9yKGxldCB0PWUubGVuZ3RoLTE7dD49MDt0LS0pe2NvbnN0IG49ZVt0XTtsZXQgcj0wLGk9MDtpZih0PjApe2NvbnN0IG49ZVt0LTFdO3I9bi5vcmlnaW5hbFN0YXJ0K24ub3JpZ2luYWxMZW5ndGgsaT1uLm1vZGlmaWVkU3RhcnQrbi5tb2RpZmllZExlbmd0aH1jb25zdCBhPW4ub3JpZ2luYWxMZW5ndGg+MCxvPW4ubW9kaWZpZWRMZW5ndGg+MDtsZXQgcz0wLGw9dGhpcy5fYm91bmRhcnlTY29yZShuLm9yaWdpbmFsU3RhcnQsbi5vcmlnaW5hbExlbmd0aCxuLm1vZGlmaWVkU3RhcnQsbi5tb2RpZmllZExlbmd0aCk7Zm9yKGxldCBlPTE7O2UrKyl7Y29uc3QgdD1uLm9yaWdpbmFsU3RhcnQtZSxjPW4ubW9kaWZpZWRTdGFydC1lO2lmKHQ8cnx8YzxpKWJyZWFrO2lmKGEmJiF0aGlzLk9yaWdpbmFsRWxlbWVudHNBcmVFcXVhbCh0LHQrbi5vcmlnaW5hbExlbmd0aCkpYnJlYWs7aWYobyYmIXRoaXMuTW9kaWZpZWRFbGVtZW50c0FyZUVxdWFsKGMsYytuLm1vZGlmaWVkTGVuZ3RoKSlicmVhaztjb25zdCBoPSh0PT09ciYmYz09PWk/NTowKSt0aGlzLl9ib3VuZGFyeVNjb3JlKHQsbi5vcmlnaW5hbExlbmd0aCxjLG4ubW9kaWZpZWRMZW5ndGgpO2g+bCYmKGw9aCxzPWUpfW4ub3JpZ2luYWxTdGFydC09cyxuLm1vZGlmaWVkU3RhcnQtPXM7Y29uc3QgYz1bbnVsbF07dD4wJiZ0aGlzLkNoYW5nZXNPdmVybGFwKGVbdC0xXSxlW3RdLGMpJiYoZVt0LTFdPWNbMF0sZS5zcGxpY2UodCwxKSx0KyspfWlmKHRoaXMuX2hhc1N0cmluZ3MpZm9yKGxldCB0PTEsbj1lLmxlbmd0aDt0PG47dCsrKXtjb25zdCBuPWVbdC0xXSxyPWVbdF0saT1yLm9yaWdpbmFsU3RhcnQtbi5vcmlnaW5hbFN0YXJ0LW4ub3JpZ2luYWxMZW5ndGgsYT1uLm9yaWdpbmFsU3RhcnQsbz1yLm9yaWdpbmFsU3RhcnQrci5vcmlnaW5hbExlbmd0aCxzPW8tYSxsPW4ubW9kaWZpZWRTdGFydCxjPXIubW9kaWZpZWRTdGFydCtyLm1vZGlmaWVkTGVuZ3RoLGg9Yy1sO2lmKGk8NSYmczwyMCYmaDwyMCl7Y29uc3QgZT10aGlzLl9maW5kQmV0dGVyQ29udGlndW91c1NlcXVlbmNlKGEscyxsLGgsaSk7aWYoZSl7Y29uc3RbdCxhXT1lO3Q9PT1uLm9yaWdpbmFsU3RhcnQrbi5vcmlnaW5hbExlbmd0aCYmYT09PW4ubW9kaWZpZWRTdGFydCtuLm1vZGlmaWVkTGVuZ3RofHwobi5vcmlnaW5hbExlbmd0aD10LW4ub3JpZ2luYWxTdGFydCxuLm1vZGlmaWVkTGVuZ3RoPWEtbi5tb2RpZmllZFN0YXJ0LHIub3JpZ2luYWxTdGFydD10K2ksci5tb2RpZmllZFN0YXJ0PWEraSxyLm9yaWdpbmFsTGVuZ3RoPW8tci5vcmlnaW5hbFN0YXJ0LHIubW9kaWZpZWRMZW5ndGg9Yy1yLm1vZGlmaWVkU3RhcnQpfX19cmV0dXJuIGV9X2ZpbmRCZXR0ZXJDb250aWd1b3VzU2VxdWVuY2UoZSx0LG4scixpKXtpZih0PGl8fHI8aSlyZXR1cm4gbnVsbDtjb25zdCBhPWUrdC1pKzEsbz1uK3ItaSsxO2xldCBzPTAsbD0wLGM9MDtmb3IobGV0IHQ9ZTt0PGE7dCsrKWZvcihsZXQgZT1uO2U8bztlKyspe2NvbnN0IG49dGhpcy5fY29udGlndW91c1NlcXVlbmNlU2NvcmUodCxlLGkpO24+MCYmbj5zJiYocz1uLGw9dCxjPWUpfXJldHVybiBzPjA/W2wsY106bnVsbH1fY29udGlndW91c1NlcXVlbmNlU2NvcmUoZSx0LG4pe2xldCByPTA7Zm9yKGxldCBpPTA7aTxuO2krKyl7aWYoIXRoaXMuRWxlbWVudHNBcmVFcXVhbChlK2ksdCtpKSlyZXR1cm4gMDtyKz10aGlzLl9vcmlnaW5hbFN0cmluZ0VsZW1lbnRzW2UraV0ubGVuZ3RofXJldHVybiByfV9PcmlnaW5hbElzQm91bmRhcnkoZSl7cmV0dXJuIGU8PTB8fGU+PXRoaXMuX29yaWdpbmFsRWxlbWVudHNPckhhc2gubGVuZ3RoLTF8fHRoaXMuX2hhc1N0cmluZ3MmJi9eXHMqJC8udGVzdCh0aGlzLl9vcmlnaW5hbFN0cmluZ0VsZW1lbnRzW2VdKX1fT3JpZ2luYWxSZWdpb25Jc0JvdW5kYXJ5KGUsdCl7aWYodGhpcy5fT3JpZ2luYWxJc0JvdW5kYXJ5KGUpfHx0aGlzLl9PcmlnaW5hbElzQm91bmRhcnkoZS0xKSlyZXR1cm4hMDtpZih0PjApe2NvbnN0IG49ZSt0O2lmKHRoaXMuX09yaWdpbmFsSXNCb3VuZGFyeShuLTEpfHx0aGlzLl9PcmlnaW5hbElzQm91bmRhcnkobikpcmV0dXJuITB9cmV0dXJuITF9X01vZGlmaWVkSXNCb3VuZGFyeShlKXtyZXR1cm4gZTw9MHx8ZT49dGhpcy5fbW9kaWZpZWRFbGVtZW50c09ySGFzaC5sZW5ndGgtMXx8dGhpcy5faGFzU3RyaW5ncyYmL15ccyokLy50ZXN0KHRoaXMuX21vZGlmaWVkU3RyaW5nRWxlbWVudHNbZV0pfV9Nb2RpZmllZFJlZ2lvbklzQm91bmRhcnkoZSx0KXtpZih0aGlzLl9Nb2RpZmllZElzQm91bmRhcnkoZSl8fHRoaXMuX01vZGlmaWVkSXNCb3VuZGFyeShlLTEpKXJldHVybiEwO2lmKHQ+MCl7Y29uc3Qgbj1lK3Q7aWYodGhpcy5fTW9kaWZpZWRJc0JvdW5kYXJ5KG4tMSl8fHRoaXMuX01vZGlmaWVkSXNCb3VuZGFyeShuKSlyZXR1cm4hMH1yZXR1cm4hMX1fYm91bmRhcnlTY29yZShlLHQsbixyKXtyZXR1cm4odGhpcy5fT3JpZ2luYWxSZWdpb25Jc0JvdW5kYXJ5KGUsdCk/MTowKSsodGhpcy5fTW9kaWZpZWRSZWdpb25Jc0JvdW5kYXJ5KG4scik/MTowKX1Db25jYXRlbmF0ZUNoYW5nZXMoZSx0KXtsZXQgbj1bXTtpZigwPT09ZS5sZW5ndGh8fDA9PT10Lmxlbmd0aClyZXR1cm4gdC5sZW5ndGg+MD90OmU7aWYodGhpcy5DaGFuZ2VzT3ZlcmxhcChlW2UubGVuZ3RoLTFdLHRbMF0sbikpe2NvbnN0IHI9bmV3IEFycmF5KGUubGVuZ3RoK3QubGVuZ3RoLTEpO3JldHVybiBtZS5Db3B5KGUsMCxyLDAsZS5sZW5ndGgtMSkscltlLmxlbmd0aC0xXT1uWzBdLG1lLkNvcHkodCwxLHIsZS5sZW5ndGgsdC5sZW5ndGgtMSkscn17Y29uc3Qgbj1uZXcgQXJyYXkoZS5sZW5ndGgrdC5sZW5ndGgpO3JldHVybiBtZS5Db3B5KGUsMCxuLDAsZS5sZW5ndGgpLG1lLkNvcHkodCwwLG4sZS5sZW5ndGgsdC5sZW5ndGgpLG59fUNoYW5nZXNPdmVybGFwKGUsdCxuKXtpZihwZS5Bc3NlcnQoZS5vcmlnaW5hbFN0YXJ0PD10Lm9yaWdpbmFsU3RhcnQsIkxlZnQgY2hhbmdlIGlzIG5vdCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gcmlnaHQgY2hhbmdlIikscGUuQXNzZXJ0KGUubW9kaWZpZWRTdGFydDw9dC5tb2RpZmllZFN0YXJ0LCJMZWZ0IGNoYW5nZSBpcyBub3QgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHJpZ2h0IGNoYW5nZSIpLGUub3JpZ2luYWxTdGFydCtlLm9yaWdpbmFsTGVuZ3RoPj10Lm9yaWdpbmFsU3RhcnR8fGUubW9kaWZpZWRTdGFydCtlLm1vZGlmaWVkTGVuZ3RoPj10Lm1vZGlmaWVkU3RhcnQpe2NvbnN0IHI9ZS5vcmlnaW5hbFN0YXJ0O2xldCBpPWUub3JpZ2luYWxMZW5ndGg7Y29uc3QgYT1lLm1vZGlmaWVkU3RhcnQ7bGV0IG89ZS5tb2RpZmllZExlbmd0aDtyZXR1cm4gZS5vcmlnaW5hbFN0YXJ0K2Uub3JpZ2luYWxMZW5ndGg+PXQub3JpZ2luYWxTdGFydCYmKGk9dC5vcmlnaW5hbFN0YXJ0K3Qub3JpZ2luYWxMZW5ndGgtZS5vcmlnaW5hbFN0YXJ0KSxlLm1vZGlmaWVkU3RhcnQrZS5tb2RpZmllZExlbmd0aD49dC5tb2RpZmllZFN0YXJ0JiYobz10Lm1vZGlmaWVkU3RhcnQrdC5tb2RpZmllZExlbmd0aC1lLm1vZGlmaWVkU3RhcnQpLG5bMF09bmV3IGxlKHIsaSxhLG8pLCEwfXJldHVybiBuWzBdPW51bGwsITF9Q2xpcERpYWdvbmFsQm91bmQoZSx0LG4scil7aWYoZT49MCYmZTxyKXJldHVybiBlO2NvbnN0IGk9dCUyPT0wO2lmKGU8MCl7cmV0dXJuIGk9PT0obiUyPT0wKT8wOjF9cmV0dXJuIGk9PT0oKHItbi0xKSUyPT0wKT9yLTE6ci0yfX1sZXQgYmU7aWYodm9pZCAwIT09eC52c2NvZGUmJnZvaWQgMCE9PXgudnNjb2RlLnByb2Nlc3Mpe2NvbnN0IGU9eC52c2NvZGUucHJvY2VzcztiZT17Z2V0IHBsYXRmb3JtKCl7cmV0dXJuIGUucGxhdGZvcm19LGdldCBhcmNoKCl7cmV0dXJuIGUuYXJjaH0sZ2V0IGVudigpe3JldHVybiBlLmVudn0sY3dkOigpPT5lLmN3ZCgpfX1lbHNlIGJlPSJ1bmRlZmluZWQiIT10eXBlb2YgcHJvY2Vzcz97Z2V0IHBsYXRmb3JtKCl7cmV0dXJuIHByb2Nlc3MucGxhdGZvcm19LGdldCBhcmNoKCl7cmV0dXJuIHByb2Nlc3MuYXJjaH0sZ2V0IGVudigpe3JldHVybiBwcm9jZXNzLmVudn0sY3dkOigpPT5wcm9jZXNzLmVudi5WU0NPREVfQ1dEfHxwcm9jZXNzLmN3ZCgpfTp7Z2V0IHBsYXRmb3JtKCl7cmV0dXJuIEE/IndpbjMyIjpNPyJkYXJ3aW4iOiJsaW51eCJ9LGdldCBhcmNoKCl7fSxnZXQgZW52KCl7cmV0dXJue319LGN3ZDooKT0+Ii8ifTtjb25zdCB3ZT1iZS5jd2QsX2U9YmUuZW52LHZlPWJlLnBsYXRmb3JtLHllPTQ2LFRlPTQ3LGtlPTkyLFNlPTU4O2NsYXNzIENlIGV4dGVuZHMgRXJyb3J7Y29uc3RydWN0b3IoZSx0LG4pe2xldCByOyJzdHJpbmciPT10eXBlb2YgdCYmMD09PXQuaW5kZXhPZigibm90ICIpPyhyPSJtdXN0IG5vdCBiZSIsdD10LnJlcGxhY2UoL15ub3QgLywiIikpOnI9Im11c3QgYmUiO2NvbnN0IGk9LTEhPT1lLmluZGV4T2YoIi4iKT8icHJvcGVydHkiOiJhcmd1bWVudCI7bGV0IGE9YFRoZSAiJHtlfSIgJHtpfSAke3J9IG9mIHR5cGUgJHt0fWA7YSs9Ii4gUmVjZWl2ZWQgdHlwZSAiK3R5cGVvZiBuLHN1cGVyKGEpLHRoaXMuY29kZT0iRVJSX0lOVkFMSURfQVJHX1RZUEUifX1mdW5jdGlvbiB4ZShlLHQpe2lmKCJzdHJpbmciIT10eXBlb2YgZSl0aHJvdyBuZXcgQ2UodCwic3RyaW5nIixlKX1mdW5jdGlvbiBMZShlKXtyZXR1cm4gZT09PVRlfHxlPT09a2V9ZnVuY3Rpb24gRWUoZSl7cmV0dXJuIGU9PT1UZX1mdW5jdGlvbiBBZShlKXtyZXR1cm4gZT49NjUmJmU8PTkwfHxlPj05NyYmZTw9MTIyfWZ1bmN0aW9uIE1lKGUsdCxuLHIpe2xldCBpPSIiLGE9MCxvPS0xLHM9MCxsPTA7Zm9yKGxldCBjPTA7Yzw9ZS5sZW5ndGg7KytjKXtpZihjPGUubGVuZ3RoKWw9ZS5jaGFyQ29kZUF0KGMpO2Vsc2V7aWYocihsKSlicmVhaztsPVRlfWlmKHIobCkpe2lmKG89PT1jLTF8fDE9PT1zKTtlbHNlIGlmKDI9PT1zKXtpZihpLmxlbmd0aDwyfHwyIT09YXx8aS5jaGFyQ29kZUF0KGkubGVuZ3RoLTEpIT09eWV8fGkuY2hhckNvZGVBdChpLmxlbmd0aC0yKSE9PXllKXtpZihpLmxlbmd0aD4yKXtjb25zdCBlPWkubGFzdEluZGV4T2Yobik7LTE9PT1lPyhpPSIiLGE9MCk6KGk9aS5zbGljZSgwLGUpLGE9aS5sZW5ndGgtMS1pLmxhc3RJbmRleE9mKG4pKSxvPWMscz0wO2NvbnRpbnVlfWlmKDAhPT1pLmxlbmd0aCl7aT0iIixhPTAsbz1jLHM9MDtjb250aW51ZX19dCYmKGkrPWkubGVuZ3RoPjA/YCR7bn0uLmA6Ii4uIixhPTIpfWVsc2UgaS5sZW5ndGg+MD9pKz1gJHtufSR7ZS5zbGljZShvKzEsYyl9YDppPWUuc2xpY2UobysxLGMpLGE9Yy1vLTE7bz1jLHM9MH1lbHNlIGw9PT15ZSYmLTEhPT1zPysrczpzPS0xfXJldHVybiBpfWZ1bmN0aW9uIFJlKGUsdCl7aWYobnVsbD09PXR8fCJvYmplY3QiIT10eXBlb2YgdCl0aHJvdyBuZXcgQ2UoInBhdGhPYmplY3QiLCJPYmplY3QiLHQpO2NvbnN0IG49dC5kaXJ8fHQucm9vdCxyPXQuYmFzZXx8YCR7dC5uYW1lfHwiIn0ke3QuZXh0fHwiIn1gO3JldHVybiBuP249PT10LnJvb3Q/YCR7bn0ke3J9YDpgJHtufSR7ZX0ke3J9YDpyfWNvbnN0IE5lPXtyZXNvbHZlKC4uLmUpe2xldCB0PSIiLG49IiIscj0hMTtmb3IobGV0IGk9ZS5sZW5ndGgtMTtpPj0tMTtpLS0pe2xldCBhO2lmKGk+PTApe2lmKGE9ZVtpXSx4ZShhLCJwYXRoIiksMD09PWEubGVuZ3RoKWNvbnRpbnVlfWVsc2UgMD09PXQubGVuZ3RoP2E9d2UoKTooYT1fZVtgPSR7dH1gXXx8d2UoKSwodm9pZCAwPT09YXx8YS5zbGljZSgwLDIpLnRvTG93ZXJDYXNlKCkhPT10LnRvTG93ZXJDYXNlKCkmJmEuY2hhckNvZGVBdCgyKT09PWtlKSYmKGE9YCR7dH1cXGApKTtjb25zdCBvPWEubGVuZ3RoO2xldCBzPTAsbD0iIixjPSExO2NvbnN0IGg9YS5jaGFyQ29kZUF0KDApO2lmKDE9PT1vKUxlKGgpJiYocz0xLGM9ITApO2Vsc2UgaWYoTGUoaCkpaWYoYz0hMCxMZShhLmNoYXJDb2RlQXQoMSkpKXtsZXQgZT0yLHQ9ZTtmb3IoO2U8byYmIUxlKGEuY2hhckNvZGVBdChlKSk7KWUrKztpZihlPG8mJmUhPT10KXtjb25zdCBuPWEuc2xpY2UodCxlKTtmb3IodD1lO2U8byYmTGUoYS5jaGFyQ29kZUF0KGUpKTspZSsrO2lmKGU8byYmZSE9PXQpe2Zvcih0PWU7ZTxvJiYhTGUoYS5jaGFyQ29kZUF0KGUpKTspZSsrO2UhPT1vJiZlPT09dHx8KGw9YFxcXFwke259XFwke2Euc2xpY2UodCxlKX1gLHM9ZSl9fX1lbHNlIHM9MTtlbHNlIEFlKGgpJiZhLmNoYXJDb2RlQXQoMSk9PT1TZSYmKGw9YS5zbGljZSgwLDIpLHM9MixvPjImJkxlKGEuY2hhckNvZGVBdCgyKSkmJihjPSEwLHM9MykpO2lmKGwubGVuZ3RoPjApaWYodC5sZW5ndGg+MCl7aWYobC50b0xvd2VyQ2FzZSgpIT09dC50b0xvd2VyQ2FzZSgpKWNvbnRpbnVlfWVsc2UgdD1sO2lmKHIpe2lmKHQubGVuZ3RoPjApYnJlYWt9ZWxzZSBpZihuPWAke2Euc2xpY2Uocyl9XFwke259YCxyPWMsYyYmdC5sZW5ndGg+MClicmVha31yZXR1cm4gbj1NZShuLCFyLCJcXCIsTGUpLHI/YCR7dH1cXCR7bn1gOmAke3R9JHtufWB8fCIuIn0sbm9ybWFsaXplKGUpe3hlKGUsInBhdGgiKTtjb25zdCB0PWUubGVuZ3RoO2lmKDA9PT10KXJldHVybiIuIjtsZXQgbixyPTAsaT0hMTtjb25zdCBhPWUuY2hhckNvZGVBdCgwKTtpZigxPT09dClyZXR1cm4gRWUoYSk/IlxcIjplO2lmKExlKGEpKWlmKGk9ITAsTGUoZS5jaGFyQ29kZUF0KDEpKSl7bGV0IGk9MixhPWk7Zm9yKDtpPHQmJiFMZShlLmNoYXJDb2RlQXQoaSkpOylpKys7aWYoaTx0JiZpIT09YSl7Y29uc3Qgbz1lLnNsaWNlKGEsaSk7Zm9yKGE9aTtpPHQmJkxlKGUuY2hhckNvZGVBdChpKSk7KWkrKztpZihpPHQmJmkhPT1hKXtmb3IoYT1pO2k8dCYmIUxlKGUuY2hhckNvZGVBdChpKSk7KWkrKztpZihpPT09dClyZXR1cm5gXFxcXCR7b31cXCR7ZS5zbGljZShhKX1cXGA7aSE9PWEmJihuPWBcXFxcJHtvfVxcJHtlLnNsaWNlKGEsaSl9YCxyPWkpfX19ZWxzZSByPTE7ZWxzZSBBZShhKSYmZS5jaGFyQ29kZUF0KDEpPT09U2UmJihuPWUuc2xpY2UoMCwyKSxyPTIsdD4yJiZMZShlLmNoYXJDb2RlQXQoMikpJiYoaT0hMCxyPTMpKTtsZXQgbz1yPHQ/TWUoZS5zbGljZShyKSwhaSwiXFwiLExlKToiIjtyZXR1cm4gMCE9PW8ubGVuZ3RofHxpfHwobz0iLiIpLG8ubGVuZ3RoPjAmJkxlKGUuY2hhckNvZGVBdCh0LTEpKSYmKG8rPSJcXCIpLHZvaWQgMD09PW4/aT9gXFwke299YDpvOmk/YCR7bn1cXCR7b31gOmAke259JHtvfWB9LGlzQWJzb2x1dGUoZSl7eGUoZSwicGF0aCIpO2NvbnN0IHQ9ZS5sZW5ndGg7aWYoMD09PXQpcmV0dXJuITE7Y29uc3Qgbj1lLmNoYXJDb2RlQXQoMCk7cmV0dXJuIExlKG4pfHx0PjImJkFlKG4pJiZlLmNoYXJDb2RlQXQoMSk9PT1TZSYmTGUoZS5jaGFyQ29kZUF0KDIpKX0sam9pbiguLi5lKXtpZigwPT09ZS5sZW5ndGgpcmV0dXJuIi4iO2xldCB0LG47Zm9yKGxldCByPTA7cjxlLmxlbmd0aDsrK3Ipe2NvbnN0IGk9ZVtyXTt4ZShpLCJwYXRoIiksaS5sZW5ndGg+MCYmKHZvaWQgMD09PXQ/dD1uPWk6dCs9YFxcJHtpfWApfWlmKHZvaWQgMD09PXQpcmV0dXJuIi4iO2xldCByPSEwLGk9MDtpZigic3RyaW5nIj09dHlwZW9mIG4mJkxlKG4uY2hhckNvZGVBdCgwKSkpeysraTtjb25zdCBlPW4ubGVuZ3RoO2U+MSYmTGUobi5jaGFyQ29kZUF0KDEpKSYmKCsraSxlPjImJihMZShuLmNoYXJDb2RlQXQoMikpPysraTpyPSExKSl9aWYocil7Zm9yKDtpPHQubGVuZ3RoJiZMZSh0LmNoYXJDb2RlQXQoaSkpOylpKys7aT49MiYmKHQ9YFxcJHt0LnNsaWNlKGkpfWApfXJldHVybiBOZS5ub3JtYWxpemUodCl9LHJlbGF0aXZlKGUsdCl7aWYoeGUoZSwiZnJvbSIpLHhlKHQsInRvIiksZT09PXQpcmV0dXJuIiI7Y29uc3Qgbj1OZS5yZXNvbHZlKGUpLHI9TmUucmVzb2x2ZSh0KTtpZihuPT09cilyZXR1cm4iIjtpZigoZT1uLnRvTG93ZXJDYXNlKCkpPT09KHQ9ci50b0xvd2VyQ2FzZSgpKSlyZXR1cm4iIjtsZXQgaT0wO2Zvcig7aTxlLmxlbmd0aCYmZS5jaGFyQ29kZUF0KGkpPT09a2U7KWkrKztsZXQgYT1lLmxlbmd0aDtmb3IoO2EtMT5pJiZlLmNoYXJDb2RlQXQoYS0xKT09PWtlOylhLS07Y29uc3Qgbz1hLWk7bGV0IHM9MDtmb3IoO3M8dC5sZW5ndGgmJnQuY2hhckNvZGVBdChzKT09PWtlOylzKys7bGV0IGw9dC5sZW5ndGg7Zm9yKDtsLTE+cyYmdC5jaGFyQ29kZUF0KGwtMSk9PT1rZTspbC0tO2NvbnN0IGM9bC1zLGg9bzxjP286YztsZXQgZD0tMSx1PTA7Zm9yKDt1PGg7dSsrKXtjb25zdCBuPWUuY2hhckNvZGVBdChpK3UpO2lmKG4hPT10LmNoYXJDb2RlQXQocyt1KSlicmVhaztuPT09a2UmJihkPXUpfWlmKHUhPT1oKXtpZigtMT09PWQpcmV0dXJuIHJ9ZWxzZXtpZihjPmgpe2lmKHQuY2hhckNvZGVBdChzK3UpPT09a2UpcmV0dXJuIHIuc2xpY2Uocyt1KzEpO2lmKDI9PT11KXJldHVybiByLnNsaWNlKHMrdSl9bz5oJiYoZS5jaGFyQ29kZUF0KGkrdSk9PT1rZT9kPXU6Mj09PXUmJihkPTMpKSwtMT09PWQmJihkPTApfWxldCBwPSIiO2Zvcih1PWkrZCsxO3U8PWE7Kyt1KXUhPT1hJiZlLmNoYXJDb2RlQXQodSkhPT1rZXx8KHArPTA9PT1wLmxlbmd0aD8iLi4iOiJcXC4uIik7cmV0dXJuIHMrPWQscC5sZW5ndGg+MD9gJHtwfSR7ci5zbGljZShzLGwpfWA6KHIuY2hhckNvZGVBdChzKT09PWtlJiYrK3Msci5zbGljZShzLGwpKX0sdG9OYW1lc3BhY2VkUGF0aChlKXtpZigic3RyaW5nIiE9dHlwZW9mIGUpcmV0dXJuIGU7aWYoMD09PWUubGVuZ3RoKXJldHVybiIiO2NvbnN0IHQ9TmUucmVzb2x2ZShlKTtpZih0Lmxlbmd0aDw9MilyZXR1cm4gZTtpZih0LmNoYXJDb2RlQXQoMCk9PT1rZSl7aWYodC5jaGFyQ29kZUF0KDEpPT09a2Upe2NvbnN0IGU9dC5jaGFyQ29kZUF0KDIpO2lmKDYzIT09ZSYmZSE9PXllKXJldHVybmBcXFxcP1xcVU5DXFwke3Quc2xpY2UoMil9YH19ZWxzZSBpZihBZSh0LmNoYXJDb2RlQXQoMCkpJiZ0LmNoYXJDb2RlQXQoMSk9PT1TZSYmdC5jaGFyQ29kZUF0KDIpPT09a2UpcmV0dXJuYFxcXFw/XFwke3R9YDtyZXR1cm4gZX0sZGlybmFtZShlKXt4ZShlLCJwYXRoIik7Y29uc3QgdD1lLmxlbmd0aDtpZigwPT09dClyZXR1cm4iLiI7bGV0IG49LTEscj0wO2NvbnN0IGk9ZS5jaGFyQ29kZUF0KDApO2lmKDE9PT10KXJldHVybiBMZShpKT9lOiIuIjtpZihMZShpKSl7aWYobj1yPTEsTGUoZS5jaGFyQ29kZUF0KDEpKSl7bGV0IGk9MixhPWk7Zm9yKDtpPHQmJiFMZShlLmNoYXJDb2RlQXQoaSkpOylpKys7aWYoaTx0JiZpIT09YSl7Zm9yKGE9aTtpPHQmJkxlKGUuY2hhckNvZGVBdChpKSk7KWkrKztpZihpPHQmJmkhPT1hKXtmb3IoYT1pO2k8dCYmIUxlKGUuY2hhckNvZGVBdChpKSk7KWkrKztpZihpPT09dClyZXR1cm4gZTtpIT09YSYmKG49cj1pKzEpfX19fWVsc2UgQWUoaSkmJmUuY2hhckNvZGVBdCgxKT09PVNlJiYobj10PjImJkxlKGUuY2hhckNvZGVBdCgyKSk/MzoyLHI9bik7bGV0IGE9LTEsbz0hMDtmb3IobGV0IG49dC0xO24+PXI7LS1uKWlmKExlKGUuY2hhckNvZGVBdChuKSkpe2lmKCFvKXthPW47YnJlYWt9fWVsc2Ugbz0hMTtpZigtMT09PWEpe2lmKC0xPT09bilyZXR1cm4iLiI7YT1ufXJldHVybiBlLnNsaWNlKDAsYSl9LGJhc2VuYW1lKGUsdCl7dm9pZCAwIT09dCYmeGUodCwiZXh0IikseGUoZSwicGF0aCIpO2xldCBuLHI9MCxpPS0xLGE9ITA7aWYoZS5sZW5ndGg+PTImJkFlKGUuY2hhckNvZGVBdCgwKSkmJmUuY2hhckNvZGVBdCgxKT09PVNlJiYocj0yKSx2b2lkIDAhPT10JiZ0Lmxlbmd0aD4wJiZ0Lmxlbmd0aDw9ZS5sZW5ndGgpe2lmKHQ9PT1lKXJldHVybiIiO2xldCBvPXQubGVuZ3RoLTEscz0tMTtmb3Iobj1lLmxlbmd0aC0xO24+PXI7LS1uKXtjb25zdCBsPWUuY2hhckNvZGVBdChuKTtpZihMZShsKSl7aWYoIWEpe3I9bisxO2JyZWFrfX1lbHNlLTE9PT1zJiYoYT0hMSxzPW4rMSksbz49MCYmKGw9PT10LmNoYXJDb2RlQXQobyk/LTE9PS0tbyYmKGk9bik6KG89LTEsaT1zKSl9cmV0dXJuIHI9PT1pP2k9czotMT09PWkmJihpPWUubGVuZ3RoKSxlLnNsaWNlKHIsaSl9Zm9yKG49ZS5sZW5ndGgtMTtuPj1yOy0tbilpZihMZShlLmNoYXJDb2RlQXQobikpKXtpZighYSl7cj1uKzE7YnJlYWt9fWVsc2UtMT09PWkmJihhPSExLGk9bisxKTtyZXR1cm4tMT09PWk/IiI6ZS5zbGljZShyLGkpfSxleHRuYW1lKGUpe3hlKGUsInBhdGgiKTtsZXQgdD0wLG49LTEscj0wLGk9LTEsYT0hMCxvPTA7ZS5sZW5ndGg+PTImJmUuY2hhckNvZGVBdCgxKT09PVNlJiZBZShlLmNoYXJDb2RlQXQoMCkpJiYodD1yPTIpO2ZvcihsZXQgcz1lLmxlbmd0aC0xO3M+PXQ7LS1zKXtjb25zdCB0PWUuY2hhckNvZGVBdChzKTtpZihMZSh0KSl7aWYoIWEpe3I9cysxO2JyZWFrfX1lbHNlLTE9PT1pJiYoYT0hMSxpPXMrMSksdD09PXllPy0xPT09bj9uPXM6MSE9PW8mJihvPTEpOi0xIT09biYmKG89LTEpfXJldHVybi0xPT09bnx8LTE9PT1pfHwwPT09b3x8MT09PW8mJm49PT1pLTEmJm49PT1yKzE/IiI6ZS5zbGljZShuLGkpfSxmb3JtYXQ6UmUuYmluZChudWxsLCJcXCIpLHBhcnNlKGUpe3hlKGUsInBhdGgiKTtjb25zdCB0PXtyb290OiIiLGRpcjoiIixiYXNlOiIiLGV4dDoiIixuYW1lOiIifTtpZigwPT09ZS5sZW5ndGgpcmV0dXJuIHQ7Y29uc3Qgbj1lLmxlbmd0aDtsZXQgcj0wLGk9ZS5jaGFyQ29kZUF0KDApO2lmKDE9PT1uKXJldHVybiBMZShpKT8odC5yb290PXQuZGlyPWUsdCk6KHQuYmFzZT10Lm5hbWU9ZSx0KTtpZihMZShpKSl7aWYocj0xLExlKGUuY2hhckNvZGVBdCgxKSkpe2xldCB0PTIsaT10O2Zvcig7dDxuJiYhTGUoZS5jaGFyQ29kZUF0KHQpKTspdCsrO2lmKHQ8biYmdCE9PWkpe2ZvcihpPXQ7dDxuJiZMZShlLmNoYXJDb2RlQXQodCkpOyl0Kys7aWYodDxuJiZ0IT09aSl7Zm9yKGk9dDt0PG4mJiFMZShlLmNoYXJDb2RlQXQodCkpOyl0Kys7dD09PW4/cj10OnQhPT1pJiYocj10KzEpfX19fWVsc2UgaWYoQWUoaSkmJmUuY2hhckNvZGVBdCgxKT09PVNlKXtpZihuPD0yKXJldHVybiB0LnJvb3Q9dC5kaXI9ZSx0O2lmKHI9MixMZShlLmNoYXJDb2RlQXQoMikpKXtpZigzPT09bilyZXR1cm4gdC5yb290PXQuZGlyPWUsdDtyPTN9fXI+MCYmKHQucm9vdD1lLnNsaWNlKDAscikpO2xldCBhPS0xLG89cixzPS0xLGw9ITAsYz1lLmxlbmd0aC0xLGg9MDtmb3IoO2M+PXI7LS1jKWlmKGk9ZS5jaGFyQ29kZUF0KGMpLExlKGkpKXtpZighbCl7bz1jKzE7YnJlYWt9fWVsc2UtMT09PXMmJihsPSExLHM9YysxKSxpPT09eWU/LTE9PT1hP2E9YzoxIT09aCYmKGg9MSk6LTEhPT1hJiYoaD0tMSk7cmV0dXJuLTEhPT1zJiYoLTE9PT1hfHwwPT09aHx8MT09PWgmJmE9PT1zLTEmJmE9PT1vKzE/dC5iYXNlPXQubmFtZT1lLnNsaWNlKG8scyk6KHQubmFtZT1lLnNsaWNlKG8sYSksdC5iYXNlPWUuc2xpY2UobyxzKSx0LmV4dD1lLnNsaWNlKGEscykpKSx0LmRpcj1vPjAmJm8hPT1yP2Uuc2xpY2UoMCxvLTEpOnQucm9vdCx0fSxzZXA6IlxcIixkZWxpbWl0ZXI6IjsiLHdpbjMyOm51bGwscG9zaXg6bnVsbH0sSWU9e3Jlc29sdmUoLi4uZSl7bGV0IHQ9IiIsbj0hMTtmb3IobGV0IHI9ZS5sZW5ndGgtMTtyPj0tMSYmIW47ci0tKXtjb25zdCBpPXI+PTA/ZVtyXTp3ZSgpO3hlKGksInBhdGgiKSwwIT09aS5sZW5ndGgmJih0PWAke2l9LyR7dH1gLG49aS5jaGFyQ29kZUF0KDApPT09VGUpfXJldHVybiB0PU1lKHQsIW4sIi8iLEVlKSxuP2AvJHt0fWA6dC5sZW5ndGg+MD90OiIuIn0sbm9ybWFsaXplKGUpe2lmKHhlKGUsInBhdGgiKSwwPT09ZS5sZW5ndGgpcmV0dXJuIi4iO2NvbnN0IHQ9ZS5jaGFyQ29kZUF0KDApPT09VGUsbj1lLmNoYXJDb2RlQXQoZS5sZW5ndGgtMSk9PT1UZTtyZXR1cm4gMD09PShlPU1lKGUsIXQsIi8iLEVlKSkubGVuZ3RoP3Q/Ii8iOm4/Ii4vIjoiLiI6KG4mJihlKz0iLyIpLHQ/YC8ke2V9YDplKX0saXNBYnNvbHV0ZTplPT4oeGUoZSwicGF0aCIpLGUubGVuZ3RoPjAmJmUuY2hhckNvZGVBdCgwKT09PVRlKSxqb2luKC4uLmUpe2lmKDA9PT1lLmxlbmd0aClyZXR1cm4iLiI7bGV0IHQ7Zm9yKGxldCBuPTA7bjxlLmxlbmd0aDsrK24pe2NvbnN0IHI9ZVtuXTt4ZShyLCJwYXRoIiksci5sZW5ndGg+MCYmKHZvaWQgMD09PXQ/dD1yOnQrPWAvJHtyfWApfXJldHVybiB2b2lkIDA9PT10PyIuIjpJZS5ub3JtYWxpemUodCl9LHJlbGF0aXZlKGUsdCl7aWYoeGUoZSwiZnJvbSIpLHhlKHQsInRvIiksZT09PXQpcmV0dXJuIiI7aWYoKGU9SWUucmVzb2x2ZShlKSk9PT0odD1JZS5yZXNvbHZlKHQpKSlyZXR1cm4iIjtjb25zdCBuPWUubGVuZ3RoLHI9bi0xLGk9dC5sZW5ndGgtMSxhPXI8aT9yOmk7bGV0IG89LTEscz0wO2Zvcig7czxhO3MrKyl7Y29uc3Qgbj1lLmNoYXJDb2RlQXQoMStzKTtpZihuIT09dC5jaGFyQ29kZUF0KDErcykpYnJlYWs7bj09PVRlJiYobz1zKX1pZihzPT09YSlpZihpPmEpe2lmKHQuY2hhckNvZGVBdCgxK3MpPT09VGUpcmV0dXJuIHQuc2xpY2UoMStzKzEpO2lmKDA9PT1zKXJldHVybiB0LnNsaWNlKDErcyl9ZWxzZSByPmEmJihlLmNoYXJDb2RlQXQoMStzKT09PVRlP289czowPT09cyYmKG89MCkpO2xldCBsPSIiO2ZvcihzPTErbysxO3M8PW47KytzKXMhPT1uJiZlLmNoYXJDb2RlQXQocykhPT1UZXx8KGwrPTA9PT1sLmxlbmd0aD8iLi4iOiIvLi4iKTtyZXR1cm5gJHtsfSR7dC5zbGljZSgxK28pfWB9LHRvTmFtZXNwYWNlZFBhdGg6ZT0+ZSxkaXJuYW1lKGUpe2lmKHhlKGUsInBhdGgiKSwwPT09ZS5sZW5ndGgpcmV0dXJuIi4iO2NvbnN0IHQ9ZS5jaGFyQ29kZUF0KDApPT09VGU7bGV0IG49LTEscj0hMDtmb3IobGV0IHQ9ZS5sZW5ndGgtMTt0Pj0xOy0tdClpZihlLmNoYXJDb2RlQXQodCk9PT1UZSl7aWYoIXIpe249dDticmVha319ZWxzZSByPSExO3JldHVybi0xPT09bj90PyIvIjoiLiI6dCYmMT09PW4/Ii8vIjplLnNsaWNlKDAsbil9LGJhc2VuYW1lKGUsdCl7dm9pZCAwIT09dCYmeGUodCwiZXh0IikseGUoZSwicGF0aCIpO2xldCBuLHI9MCxpPS0xLGE9ITA7aWYodm9pZCAwIT09dCYmdC5sZW5ndGg+MCYmdC5sZW5ndGg8PWUubGVuZ3RoKXtpZih0PT09ZSlyZXR1cm4iIjtsZXQgbz10Lmxlbmd0aC0xLHM9LTE7Zm9yKG49ZS5sZW5ndGgtMTtuPj0wOy0tbil7Y29uc3QgbD1lLmNoYXJDb2RlQXQobik7aWYobD09PVRlKXtpZighYSl7cj1uKzE7YnJlYWt9fWVsc2UtMT09PXMmJihhPSExLHM9bisxKSxvPj0wJiYobD09PXQuY2hhckNvZGVBdChvKT8tMT09LS1vJiYoaT1uKToobz0tMSxpPXMpKX1yZXR1cm4gcj09PWk/aT1zOi0xPT09aSYmKGk9ZS5sZW5ndGgpLGUuc2xpY2UocixpKX1mb3Iobj1lLmxlbmd0aC0xO24+PTA7LS1uKWlmKGUuY2hhckNvZGVBdChuKT09PVRlKXtpZighYSl7cj1uKzE7YnJlYWt9fWVsc2UtMT09PWkmJihhPSExLGk9bisxKTtyZXR1cm4tMT09PWk/IiI6ZS5zbGljZShyLGkpfSxleHRuYW1lKGUpe3hlKGUsInBhdGgiKTtsZXQgdD0tMSxuPTAscj0tMSxpPSEwLGE9MDtmb3IobGV0IG89ZS5sZW5ndGgtMTtvPj0wOy0tbyl7Y29uc3Qgcz1lLmNoYXJDb2RlQXQobyk7aWYocyE9PVRlKS0xPT09ciYmKGk9ITEscj1vKzEpLHM9PT15ZT8tMT09PXQ/dD1vOjEhPT1hJiYoYT0xKTotMSE9PXQmJihhPS0xKTtlbHNlIGlmKCFpKXtuPW8rMTticmVha319cmV0dXJuLTE9PT10fHwtMT09PXJ8fDA9PT1hfHwxPT09YSYmdD09PXItMSYmdD09PW4rMT8iIjplLnNsaWNlKHQscil9LGZvcm1hdDpSZS5iaW5kKG51bGwsIi8iKSxwYXJzZShlKXt4ZShlLCJwYXRoIik7Y29uc3QgdD17cm9vdDoiIixkaXI6IiIsYmFzZToiIixleHQ6IiIsbmFtZToiIn07aWYoMD09PWUubGVuZ3RoKXJldHVybiB0O2NvbnN0IG49ZS5jaGFyQ29kZUF0KDApPT09VGU7bGV0IHI7bj8odC5yb290PSIvIixyPTEpOnI9MDtsZXQgaT0tMSxhPTAsbz0tMSxzPSEwLGw9ZS5sZW5ndGgtMSxjPTA7Zm9yKDtsPj1yOy0tbCl7Y29uc3QgdD1lLmNoYXJDb2RlQXQobCk7aWYodCE9PVRlKS0xPT09byYmKHM9ITEsbz1sKzEpLHQ9PT15ZT8tMT09PWk/aT1sOjEhPT1jJiYoYz0xKTotMSE9PWkmJihjPS0xKTtlbHNlIGlmKCFzKXthPWwrMTticmVha319aWYoLTEhPT1vKXtjb25zdCByPTA9PT1hJiZuPzE6YTstMT09PWl8fDA9PT1jfHwxPT09YyYmaT09PW8tMSYmaT09PWErMT90LmJhc2U9dC5uYW1lPWUuc2xpY2UocixvKToodC5uYW1lPWUuc2xpY2UocixpKSx0LmJhc2U9ZS5zbGljZShyLG8pLHQuZXh0PWUuc2xpY2UoaSxvKSl9cmV0dXJuIGE+MD90LmRpcj1lLnNsaWNlKDAsYS0xKTpuJiYodC5kaXI9Ii8iKSx0fSxzZXA6Ii8iLGRlbGltaXRlcjoiOiIsd2luMzI6bnVsbCxwb3NpeDpudWxsfTtJZS53aW4zMj1OZS53aW4zMj1OZSxJZS5wb3NpeD1OZS5wb3NpeD1JZSwid2luMzIiPT09dmU/TmUubm9ybWFsaXplOkllLm5vcm1hbGl6ZSwid2luMzIiPT09dmU/TmUucmVzb2x2ZTpJZS5yZXNvbHZlLCJ3aW4zMiI9PT12ZT9OZS5yZWxhdGl2ZTpJZS5yZWxhdGl2ZSwid2luMzIiPT09dmU/TmUuZGlybmFtZTpJZS5kaXJuYW1lLCJ3aW4zMiI9PT12ZT9OZS5iYXNlbmFtZTpJZS5iYXNlbmFtZSwid2luMzIiPT09dmU/TmUuZXh0bmFtZTpJZS5leHRuYW1lLCJ3aW4zMiI9PT12ZT9OZS5zZXA6SWUuc2VwO2NvbnN0IFVlPS9eXHdbXHdcZCsuLV0qJC8sSGU9L15cLy8sRGU9L15cL1wvLztmdW5jdGlvbiB6ZShlLHQpe2lmKCFlLnNjaGVtZSYmdCl0aHJvdyBuZXcgRXJyb3IoYFtVcmlFcnJvcl06IFNjaGVtZSBpcyBtaXNzaW5nOiB7c2NoZW1lOiAiIiwgYXV0aG9yaXR5OiAiJHtlLmF1dGhvcml0eX0iLCBwYXRoOiAiJHtlLnBhdGh9IiwgcXVlcnk6ICIke2UucXVlcnl9IiwgZnJhZ21lbnQ6ICIke2UuZnJhZ21lbnR9In1gKTtpZihlLnNjaGVtZSYmIVVlLnRlc3QoZS5zY2hlbWUpKXRocm93IG5ldyBFcnJvcigiW1VyaUVycm9yXTogU2NoZW1lIGNvbnRhaW5zIGlsbGVnYWwgY2hhcmFjdGVycy4iKTtpZihlLnBhdGgpaWYoZS5hdXRob3JpdHkpe2lmKCFIZS50ZXN0KGUucGF0aCkpdGhyb3cgbmV3IEVycm9yKCdbVXJpRXJyb3JdOiBJZiBhIFVSSSBjb250YWlucyBhbiBhdXRob3JpdHkgY29tcG9uZW50LCB0aGVuIHRoZSBwYXRoIGNvbXBvbmVudCBtdXN0IGVpdGhlciBiZSBlbXB0eSBvciBiZWdpbiB3aXRoIGEgc2xhc2ggKCIvIikgY2hhcmFjdGVyJyl9ZWxzZSBpZihEZS50ZXN0KGUucGF0aCkpdGhyb3cgbmV3IEVycm9yKCdbVXJpRXJyb3JdOiBJZiBhIFVSSSBkb2VzIG5vdCBjb250YWluIGFuIGF1dGhvcml0eSBjb21wb25lbnQsIHRoZW4gdGhlIHBhdGggY2Fubm90IGJlZ2luIHdpdGggdHdvIHNsYXNoIGNoYXJhY3RlcnMgKCIvLyIpJyl9Y29uc3QgV2U9IiIsT2U9Ii8iLFBlPS9eKChbXjovPyNdKz8pOik/KFwvXC8oW14vPyNdKikpPyhbXj8jXSopKFw/KFteI10qKSk/KCMoLiopKT8vO2NsYXNzIHFle2NvbnN0cnVjdG9yKGUsdCxuLHIsaSxhPSExKXsib2JqZWN0Ij09dHlwZW9mIGU/KHRoaXMuc2NoZW1lPWUuc2NoZW1lfHxXZSx0aGlzLmF1dGhvcml0eT1lLmF1dGhvcml0eXx8V2UsdGhpcy5wYXRoPWUucGF0aHx8V2UsdGhpcy5xdWVyeT1lLnF1ZXJ5fHxXZSx0aGlzLmZyYWdtZW50PWUuZnJhZ21lbnR8fFdlKToodGhpcy5zY2hlbWU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZXx8dD9lOiJmaWxlIn0oZSxhKSx0aGlzLmF1dGhvcml0eT10fHxXZSx0aGlzLnBhdGg9ZnVuY3Rpb24oZSx0KXtzd2l0Y2goZSl7Y2FzZSJodHRwcyI6Y2FzZSJodHRwIjpjYXNlImZpbGUiOnQ/dFswXSE9PU9lJiYodD1PZSt0KTp0PU9lfXJldHVybiB0fSh0aGlzLnNjaGVtZSxufHxXZSksdGhpcy5xdWVyeT1yfHxXZSx0aGlzLmZyYWdtZW50PWl8fFdlLHplKHRoaXMsYSkpfXN0YXRpYyBpc1VyaShlKXtyZXR1cm4gZSBpbnN0YW5jZW9mIHFlfHwhIWUmJigic3RyaW5nIj09dHlwZW9mIGUuYXV0aG9yaXR5JiYic3RyaW5nIj09dHlwZW9mIGUuZnJhZ21lbnQmJiJzdHJpbmciPT10eXBlb2YgZS5wYXRoJiYic3RyaW5nIj09dHlwZW9mIGUucXVlcnkmJiJzdHJpbmciPT10eXBlb2YgZS5zY2hlbWUmJiJzdHJpbmciPT10eXBlb2YgZS5mc1BhdGgmJiJmdW5jdGlvbiI9PXR5cGVvZiBlLndpdGgmJiJmdW5jdGlvbiI9PXR5cGVvZiBlLnRvU3RyaW5nKX1nZXQgZnNQYXRoKCl7cmV0dXJuIEdlKHRoaXMsITEpfXdpdGgoZSl7aWYoIWUpcmV0dXJuIHRoaXM7bGV0e3NjaGVtZTp0LGF1dGhvcml0eTpuLHBhdGg6cixxdWVyeTppLGZyYWdtZW50OmF9PWU7cmV0dXJuIHZvaWQgMD09PXQ/dD10aGlzLnNjaGVtZTpudWxsPT09dCYmKHQ9V2UpLHZvaWQgMD09PW4/bj10aGlzLmF1dGhvcml0eTpudWxsPT09biYmKG49V2UpLHZvaWQgMD09PXI/cj10aGlzLnBhdGg6bnVsbD09PXImJihyPVdlKSx2b2lkIDA9PT1pP2k9dGhpcy5xdWVyeTpudWxsPT09aSYmKGk9V2UpLHZvaWQgMD09PWE/YT10aGlzLmZyYWdtZW50Om51bGw9PT1hJiYoYT1XZSksdD09PXRoaXMuc2NoZW1lJiZuPT09dGhpcy5hdXRob3JpdHkmJnI9PT10aGlzLnBhdGgmJmk9PT10aGlzLnF1ZXJ5JiZhPT09dGhpcy5mcmFnbWVudD90aGlzOm5ldyBCZSh0LG4scixpLGEpfXN0YXRpYyBwYXJzZShlLHQ9ITEpe2NvbnN0IG49UGUuZXhlYyhlKTtyZXR1cm4gbj9uZXcgQmUoblsyXXx8V2UsWWUobls0XXx8V2UpLFllKG5bNV18fFdlKSxZZShuWzddfHxXZSksWWUobls5XXx8V2UpLHQpOm5ldyBCZShXZSxXZSxXZSxXZSxXZSl9c3RhdGljIGZpbGUoZSl7bGV0IHQ9V2U7aWYoQSYmKGU9ZS5yZXBsYWNlKC9cXC9nLE9lKSksZVswXT09PU9lJiZlWzFdPT09T2Upe2NvbnN0IG49ZS5pbmRleE9mKE9lLDIpOy0xPT09bj8odD1lLnN1YnN0cmluZygyKSxlPU9lKToodD1lLnN1YnN0cmluZygyLG4pLGU9ZS5zdWJzdHJpbmcobil8fE9lKX1yZXR1cm4gbmV3IEJlKCJmaWxlIix0LGUsV2UsV2UpfXN0YXRpYyBmcm9tKGUpe2NvbnN0IHQ9bmV3IEJlKGUuc2NoZW1lLGUuYXV0aG9yaXR5LGUucGF0aCxlLnF1ZXJ5LGUuZnJhZ21lbnQpO3JldHVybiB6ZSh0LCEwKSx0fXN0YXRpYyBqb2luUGF0aChlLC4uLnQpe2lmKCFlLnBhdGgpdGhyb3cgbmV3IEVycm9yKCJbVXJpRXJyb3JdOiBjYW5ub3QgY2FsbCBqb2luUGF0aCBvbiBVUkkgd2l0aG91dCBwYXRoIik7bGV0IG47cmV0dXJuIG49QSYmImZpbGUiPT09ZS5zY2hlbWU/cWUuZmlsZShOZS5qb2luKEdlKGUsITApLC4uLnQpKS5wYXRoOkllLmpvaW4oZS5wYXRoLC4uLnQpLGUud2l0aCh7cGF0aDpufSl9dG9TdHJpbmcoZT0hMSl7cmV0dXJuICRlKHRoaXMsZSl9dG9KU09OKCl7cmV0dXJuIHRoaXN9c3RhdGljIHJldml2ZShlKXtpZihlKXtpZihlIGluc3RhbmNlb2YgcWUpcmV0dXJuIGU7e2NvbnN0IHQ9bmV3IEJlKGUpO3JldHVybiB0Ll9mb3JtYXR0ZWQ9ZS5leHRlcm5hbCx0Ll9mc1BhdGg9ZS5fc2VwPT09RmU/ZS5mc1BhdGg6bnVsbCx0fX1yZXR1cm4gZX19Y29uc3QgRmU9QT8xOnZvaWQgMDtjbGFzcyBCZSBleHRlbmRzIHFle2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLl9mb3JtYXR0ZWQ9bnVsbCx0aGlzLl9mc1BhdGg9bnVsbH1nZXQgZnNQYXRoKCl7cmV0dXJuIHRoaXMuX2ZzUGF0aHx8KHRoaXMuX2ZzUGF0aD1HZSh0aGlzLCExKSksdGhpcy5fZnNQYXRofXRvU3RyaW5nKGU9ITEpe3JldHVybiBlPyRlKHRoaXMsITApOih0aGlzLl9mb3JtYXR0ZWR8fCh0aGlzLl9mb3JtYXR0ZWQ9JGUodGhpcywhMSkpLHRoaXMuX2Zvcm1hdHRlZCl9dG9KU09OKCl7Y29uc3QgZT17JG1pZDoxfTtyZXR1cm4gdGhpcy5fZnNQYXRoJiYoZS5mc1BhdGg9dGhpcy5fZnNQYXRoLGUuX3NlcD1GZSksdGhpcy5fZm9ybWF0dGVkJiYoZS5leHRlcm5hbD10aGlzLl9mb3JtYXR0ZWQpLHRoaXMucGF0aCYmKGUucGF0aD10aGlzLnBhdGgpLHRoaXMuc2NoZW1lJiYoZS5zY2hlbWU9dGhpcy5zY2hlbWUpLHRoaXMuYXV0aG9yaXR5JiYoZS5hdXRob3JpdHk9dGhpcy5hdXRob3JpdHkpLHRoaXMucXVlcnkmJihlLnF1ZXJ5PXRoaXMucXVlcnkpLHRoaXMuZnJhZ21lbnQmJihlLmZyYWdtZW50PXRoaXMuZnJhZ21lbnQpLGV9fWNvbnN0IFZlPXs1ODoiJTNBIiw0NzoiJTJGIiw2MzoiJTNGIiwzNToiJTIzIiw5MToiJTVCIiw5MzoiJTVEIiw2NDoiJTQwIiwzMzoiJTIxIiwzNjoiJTI0IiwzODoiJTI2IiwzOToiJTI3Iiw0MDoiJTI4Iiw0MToiJTI5Iiw0MjoiJTJBIiw0MzoiJTJCIiw0NDoiJTJDIiw1OToiJTNCIiw2MToiJTNEIiwzMjoiJTIwIn07ZnVuY3Rpb24gS2UoZSx0KXtsZXQgbixyPS0xO2ZvcihsZXQgaT0wO2k8ZS5sZW5ndGg7aSsrKXtjb25zdCBhPWUuY2hhckNvZGVBdChpKTtpZihhPj05NyYmYTw9MTIyfHxhPj02NSYmYTw9OTB8fGE+PTQ4JiZhPD01N3x8NDU9PT1hfHw0Nj09PWF8fDk1PT09YXx8MTI2PT09YXx8dCYmNDc9PT1hKS0xIT09ciYmKG4rPWVuY29kZVVSSUNvbXBvbmVudChlLnN1YnN0cmluZyhyLGkpKSxyPS0xKSx2b2lkIDAhPT1uJiYobis9ZS5jaGFyQXQoaSkpO2Vsc2V7dm9pZCAwPT09biYmKG49ZS5zdWJzdHIoMCxpKSk7Y29uc3QgdD1WZVthXTt2b2lkIDAhPT10PygtMSE9PXImJihuKz1lbmNvZGVVUklDb21wb25lbnQoZS5zdWJzdHJpbmcocixpKSkscj0tMSksbis9dCk6LTE9PT1yJiYocj1pKX19cmV0dXJuLTEhPT1yJiYobis9ZW5jb2RlVVJJQ29tcG9uZW50KGUuc3Vic3RyaW5nKHIpKSksdm9pZCAwIT09bj9uOmV9ZnVuY3Rpb24gamUoZSl7bGV0IHQ7Zm9yKGxldCBuPTA7bjxlLmxlbmd0aDtuKyspe2NvbnN0IHI9ZS5jaGFyQ29kZUF0KG4pOzM1PT09cnx8NjM9PT1yPyh2b2lkIDA9PT10JiYodD1lLnN1YnN0cigwLG4pKSx0Kz1WZVtyXSk6dm9pZCAwIT09dCYmKHQrPWVbbl0pfXJldHVybiB2b2lkIDAhPT10P3Q6ZX1mdW5jdGlvbiBHZShlLHQpe2xldCBuO3JldHVybiBuPWUuYXV0aG9yaXR5JiZlLnBhdGgubGVuZ3RoPjEmJiJmaWxlIj09PWUuc2NoZW1lP2AvLyR7ZS5hdXRob3JpdHl9JHtlLnBhdGh9YDo0Nz09PWUucGF0aC5jaGFyQ29kZUF0KDApJiYoZS5wYXRoLmNoYXJDb2RlQXQoMSk+PTY1JiZlLnBhdGguY2hhckNvZGVBdCgxKTw9OTB8fGUucGF0aC5jaGFyQ29kZUF0KDEpPj05NyYmZS5wYXRoLmNoYXJDb2RlQXQoMSk8PTEyMikmJjU4PT09ZS5wYXRoLmNoYXJDb2RlQXQoMik/dD9lLnBhdGguc3Vic3RyKDEpOmUucGF0aFsxXS50b0xvd2VyQ2FzZSgpK2UucGF0aC5zdWJzdHIoMik6ZS5wYXRoLEEmJihuPW4ucmVwbGFjZSgvXC8vZywiXFwiKSksbn1mdW5jdGlvbiAkZShlLHQpe2NvbnN0IG49dD9qZTpLZTtsZXQgcj0iIix7c2NoZW1lOmksYXV0aG9yaXR5OmEscGF0aDpvLHF1ZXJ5OnMsZnJhZ21lbnQ6bH09ZTtpZihpJiYocis9aSxyKz0iOiIpLChhfHwiZmlsZSI9PT1pKSYmKHIrPU9lLHIrPU9lKSxhKXtsZXQgZT1hLmluZGV4T2YoIkAiKTtpZigtMSE9PWUpe2NvbnN0IHQ9YS5zdWJzdHIoMCxlKTthPWEuc3Vic3RyKGUrMSksZT10LmluZGV4T2YoIjoiKSwtMT09PWU/cis9bih0LCExKToocis9bih0LnN1YnN0cigwLGUpLCExKSxyKz0iOiIscis9bih0LnN1YnN0cihlKzEpLCExKSkscis9IkAifWE9YS50b0xvd2VyQ2FzZSgpLGU9YS5pbmRleE9mKCI6IiksLTE9PT1lP3IrPW4oYSwhMSk6KHIrPW4oYS5zdWJzdHIoMCxlKSwhMSkscis9YS5zdWJzdHIoZSkpfWlmKG8pe2lmKG8ubGVuZ3RoPj0zJiY0Nz09PW8uY2hhckNvZGVBdCgwKSYmNTg9PT1vLmNoYXJDb2RlQXQoMikpe2NvbnN0IGU9by5jaGFyQ29kZUF0KDEpO2U+PTY1JiZlPD05MCYmKG89YC8ke1N0cmluZy5mcm9tQ2hhckNvZGUoZSszMil9OiR7by5zdWJzdHIoMyl9YCl9ZWxzZSBpZihvLmxlbmd0aD49MiYmNTg9PT1vLmNoYXJDb2RlQXQoMSkpe2NvbnN0IGU9by5jaGFyQ29kZUF0KDApO2U+PTY1JiZlPD05MCYmKG89YCR7U3RyaW5nLmZyb21DaGFyQ29kZShlKzMyKX06JHtvLnN1YnN0cigyKX1gKX1yKz1uKG8sITApfXJldHVybiBzJiYocis9Ij8iLHIrPW4ocywhMSkpLGwmJihyKz0iIyIscis9dD9sOktlKGwsITEpKSxyfWZ1bmN0aW9uIEplKGUpe3RyeXtyZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KGUpfWNhdGNoKHQpe3JldHVybiBlLmxlbmd0aD4zP2Uuc3Vic3RyKDAsMykrSmUoZS5zdWJzdHIoMykpOmV9fWNvbnN0IFhlPS8oJVswLTlBLVphLXpdWzAtOUEtWmEtel0pKy9nO2Z1bmN0aW9uIFllKGUpe3JldHVybiBlLm1hdGNoKFhlKT9lLnJlcGxhY2UoWGUsKGU9PkplKGUpKSk6ZX1jbGFzcyBRZXtjb25zdHJ1Y3RvcihlLHQpe3RoaXMubGluZU51bWJlcj1lLHRoaXMuY29sdW1uPXR9d2l0aChlPXRoaXMubGluZU51bWJlcix0PXRoaXMuY29sdW1uKXtyZXR1cm4gZT09PXRoaXMubGluZU51bWJlciYmdD09PXRoaXMuY29sdW1uP3RoaXM6bmV3IFFlKGUsdCl9ZGVsdGEoZT0wLHQ9MCl7cmV0dXJuIHRoaXMud2l0aCh0aGlzLmxpbmVOdW1iZXIrZSx0aGlzLmNvbHVtbit0KX1lcXVhbHMoZSl7cmV0dXJuIFFlLmVxdWFscyh0aGlzLGUpfXN0YXRpYyBlcXVhbHMoZSx0KXtyZXR1cm4hZSYmIXR8fCEhZSYmISF0JiZlLmxpbmVOdW1iZXI9PT10LmxpbmVOdW1iZXImJmUuY29sdW1uPT09dC5jb2x1bW59aXNCZWZvcmUoZSl7cmV0dXJuIFFlLmlzQmVmb3JlKHRoaXMsZSl9c3RhdGljIGlzQmVmb3JlKGUsdCl7cmV0dXJuIGUubGluZU51bWJlcjx0LmxpbmVOdW1iZXJ8fCEodC5saW5lTnVtYmVyPGUubGluZU51bWJlcikmJmUuY29sdW1uPHQuY29sdW1ufWlzQmVmb3JlT3JFcXVhbChlKXtyZXR1cm4gUWUuaXNCZWZvcmVPckVxdWFsKHRoaXMsZSl9c3RhdGljIGlzQmVmb3JlT3JFcXVhbChlLHQpe3JldHVybiBlLmxpbmVOdW1iZXI8dC5saW5lTnVtYmVyfHwhKHQubGluZU51bWJlcjxlLmxpbmVOdW1iZXIpJiZlLmNvbHVtbjw9dC5jb2x1bW59c3RhdGljIGNvbXBhcmUoZSx0KXtjb25zdCBuPTB8ZS5saW5lTnVtYmVyLHI9MHx0LmxpbmVOdW1iZXI7aWYobj09PXIpe3JldHVybigwfGUuY29sdW1uKS0oMHx0LmNvbHVtbil9cmV0dXJuIG4tcn1jbG9uZSgpe3JldHVybiBuZXcgUWUodGhpcy5saW5lTnVtYmVyLHRoaXMuY29sdW1uKX10b1N0cmluZygpe3JldHVybiIoIit0aGlzLmxpbmVOdW1iZXIrIiwiK3RoaXMuY29sdW1uKyIpIn1zdGF0aWMgbGlmdChlKXtyZXR1cm4gbmV3IFFlKGUubGluZU51bWJlcixlLmNvbHVtbil9c3RhdGljIGlzSVBvc2l0aW9uKGUpe3JldHVybiBlJiYibnVtYmVyIj09dHlwZW9mIGUubGluZU51bWJlciYmIm51bWJlciI9PXR5cGVvZiBlLmNvbHVtbn19Y2xhc3MgWmV7Y29uc3RydWN0b3IoZSx0LG4scil7ZT5ufHxlPT09biYmdD5yPyh0aGlzLnN0YXJ0TGluZU51bWJlcj1uLHRoaXMuc3RhcnRDb2x1bW49cix0aGlzLmVuZExpbmVOdW1iZXI9ZSx0aGlzLmVuZENvbHVtbj10KToodGhpcy5zdGFydExpbmVOdW1iZXI9ZSx0aGlzLnN0YXJ0Q29sdW1uPXQsdGhpcy5lbmRMaW5lTnVtYmVyPW4sdGhpcy5lbmRDb2x1bW49cil9aXNFbXB0eSgpe3JldHVybiBaZS5pc0VtcHR5KHRoaXMpfXN0YXRpYyBpc0VtcHR5KGUpe3JldHVybiBlLnN0YXJ0TGluZU51bWJlcj09PWUuZW5kTGluZU51bWJlciYmZS5zdGFydENvbHVtbj09PWUuZW5kQ29sdW1ufWNvbnRhaW5zUG9zaXRpb24oZSl7cmV0dXJuIFplLmNvbnRhaW5zUG9zaXRpb24odGhpcyxlKX1zdGF0aWMgY29udGFpbnNQb3NpdGlvbihlLHQpe3JldHVybiEodC5saW5lTnVtYmVyPGUuc3RhcnRMaW5lTnVtYmVyfHx0LmxpbmVOdW1iZXI+ZS5lbmRMaW5lTnVtYmVyKSYmKCEodC5saW5lTnVtYmVyPT09ZS5zdGFydExpbmVOdW1iZXImJnQuY29sdW1uPGUuc3RhcnRDb2x1bW4pJiYhKHQubGluZU51bWJlcj09PWUuZW5kTGluZU51bWJlciYmdC5jb2x1bW4+ZS5lbmRDb2x1bW4pKX1zdGF0aWMgc3RyaWN0Q29udGFpbnNQb3NpdGlvbihlLHQpe3JldHVybiEodC5saW5lTnVtYmVyPGUuc3RhcnRMaW5lTnVtYmVyfHx0LmxpbmVOdW1iZXI+ZS5lbmRMaW5lTnVtYmVyKSYmKCEodC5saW5lTnVtYmVyPT09ZS5zdGFydExpbmVOdW1iZXImJnQuY29sdW1uPD1lLnN0YXJ0Q29sdW1uKSYmISh0LmxpbmVOdW1iZXI9PT1lLmVuZExpbmVOdW1iZXImJnQuY29sdW1uPj1lLmVuZENvbHVtbikpfWNvbnRhaW5zUmFuZ2UoZSl7cmV0dXJuIFplLmNvbnRhaW5zUmFuZ2UodGhpcyxlKX1zdGF0aWMgY29udGFpbnNSYW5nZShlLHQpe3JldHVybiEodC5zdGFydExpbmVOdW1iZXI8ZS5zdGFydExpbmVOdW1iZXJ8fHQuZW5kTGluZU51bWJlcjxlLnN0YXJ0TGluZU51bWJlcikmJighKHQuc3RhcnRMaW5lTnVtYmVyPmUuZW5kTGluZU51bWJlcnx8dC5lbmRMaW5lTnVtYmVyPmUuZW5kTGluZU51bWJlcikmJighKHQuc3RhcnRMaW5lTnVtYmVyPT09ZS5zdGFydExpbmVOdW1iZXImJnQuc3RhcnRDb2x1bW48ZS5zdGFydENvbHVtbikmJiEodC5lbmRMaW5lTnVtYmVyPT09ZS5lbmRMaW5lTnVtYmVyJiZ0LmVuZENvbHVtbj5lLmVuZENvbHVtbikpKX1zdHJpY3RDb250YWluc1JhbmdlKGUpe3JldHVybiBaZS5zdHJpY3RDb250YWluc1JhbmdlKHRoaXMsZSl9c3RhdGljIHN0cmljdENvbnRhaW5zUmFuZ2UoZSx0KXtyZXR1cm4hKHQuc3RhcnRMaW5lTnVtYmVyPGUuc3RhcnRMaW5lTnVtYmVyfHx0LmVuZExpbmVOdW1iZXI8ZS5zdGFydExpbmVOdW1iZXIpJiYoISh0LnN0YXJ0TGluZU51bWJlcj5lLmVuZExpbmVOdW1iZXJ8fHQuZW5kTGluZU51bWJlcj5lLmVuZExpbmVOdW1iZXIpJiYoISh0LnN0YXJ0TGluZU51bWJlcj09PWUuc3RhcnRMaW5lTnVtYmVyJiZ0LnN0YXJ0Q29sdW1uPD1lLnN0YXJ0Q29sdW1uKSYmISh0LmVuZExpbmVOdW1iZXI9PT1lLmVuZExpbmVOdW1iZXImJnQuZW5kQ29sdW1uPj1lLmVuZENvbHVtbikpKX1wbHVzUmFuZ2UoZSl7cmV0dXJuIFplLnBsdXNSYW5nZSh0aGlzLGUpfXN0YXRpYyBwbHVzUmFuZ2UoZSx0KXtsZXQgbixyLGksYTtyZXR1cm4gdC5zdGFydExpbmVOdW1iZXI8ZS5zdGFydExpbmVOdW1iZXI/KG49dC5zdGFydExpbmVOdW1iZXIscj10LnN0YXJ0Q29sdW1uKTp0LnN0YXJ0TGluZU51bWJlcj09PWUuc3RhcnRMaW5lTnVtYmVyPyhuPXQuc3RhcnRMaW5lTnVtYmVyLHI9TWF0aC5taW4odC5zdGFydENvbHVtbixlLnN0YXJ0Q29sdW1uKSk6KG49ZS5zdGFydExpbmVOdW1iZXIscj1lLnN0YXJ0Q29sdW1uKSx0LmVuZExpbmVOdW1iZXI+ZS5lbmRMaW5lTnVtYmVyPyhpPXQuZW5kTGluZU51bWJlcixhPXQuZW5kQ29sdW1uKTp0LmVuZExpbmVOdW1iZXI9PT1lLmVuZExpbmVOdW1iZXI/KGk9dC5lbmRMaW5lTnVtYmVyLGE9TWF0aC5tYXgodC5lbmRDb2x1bW4sZS5lbmRDb2x1bW4pKTooaT1lLmVuZExpbmVOdW1iZXIsYT1lLmVuZENvbHVtbiksbmV3IFplKG4scixpLGEpfWludGVyc2VjdFJhbmdlcyhlKXtyZXR1cm4gWmUuaW50ZXJzZWN0UmFuZ2VzKHRoaXMsZSl9c3RhdGljIGludGVyc2VjdFJhbmdlcyhlLHQpe2xldCBuPWUuc3RhcnRMaW5lTnVtYmVyLHI9ZS5zdGFydENvbHVtbixpPWUuZW5kTGluZU51bWJlcixhPWUuZW5kQ29sdW1uLG89dC5zdGFydExpbmVOdW1iZXIscz10LnN0YXJ0Q29sdW1uLGw9dC5lbmRMaW5lTnVtYmVyLGM9dC5lbmRDb2x1bW47cmV0dXJuIG48bz8obj1vLHI9cyk6bj09PW8mJihyPU1hdGgubWF4KHIscykpLGk+bD8oaT1sLGE9Yyk6aT09PWwmJihhPU1hdGgubWluKGEsYykpLG4+aXx8bj09PWkmJnI+YT9udWxsOm5ldyBaZShuLHIsaSxhKX1lcXVhbHNSYW5nZShlKXtyZXR1cm4gWmUuZXF1YWxzUmFuZ2UodGhpcyxlKX1zdGF0aWMgZXF1YWxzUmFuZ2UoZSx0KXtyZXR1cm4hIWUmJiEhdCYmZS5zdGFydExpbmVOdW1iZXI9PT10LnN0YXJ0TGluZU51bWJlciYmZS5zdGFydENvbHVtbj09PXQuc3RhcnRDb2x1bW4mJmUuZW5kTGluZU51bWJlcj09PXQuZW5kTGluZU51bWJlciYmZS5lbmRDb2x1bW49PT10LmVuZENvbHVtbn1nZXRFbmRQb3NpdGlvbigpe3JldHVybiBaZS5nZXRFbmRQb3NpdGlvbih0aGlzKX1zdGF0aWMgZ2V0RW5kUG9zaXRpb24oZSl7cmV0dXJuIG5ldyBRZShlLmVuZExpbmVOdW1iZXIsZS5lbmRDb2x1bW4pfWdldFN0YXJ0UG9zaXRpb24oKXtyZXR1cm4gWmUuZ2V0U3RhcnRQb3NpdGlvbih0aGlzKX1zdGF0aWMgZ2V0U3RhcnRQb3NpdGlvbihlKXtyZXR1cm4gbmV3IFFlKGUuc3RhcnRMaW5lTnVtYmVyLGUuc3RhcnRDb2x1bW4pfXRvU3RyaW5nKCl7cmV0dXJuIlsiK3RoaXMuc3RhcnRMaW5lTnVtYmVyKyIsIit0aGlzLnN0YXJ0Q29sdW1uKyIgLT4gIit0aGlzLmVuZExpbmVOdW1iZXIrIiwiK3RoaXMuZW5kQ29sdW1uKyJdIn1zZXRFbmRQb3NpdGlvbihlLHQpe3JldHVybiBuZXcgWmUodGhpcy5zdGFydExpbmVOdW1iZXIsdGhpcy5zdGFydENvbHVtbixlLHQpfXNldFN0YXJ0UG9zaXRpb24oZSx0KXtyZXR1cm4gbmV3IFplKGUsdCx0aGlzLmVuZExpbmVOdW1iZXIsdGhpcy5lbmRDb2x1bW4pfWNvbGxhcHNlVG9TdGFydCgpe3JldHVybiBaZS5jb2xsYXBzZVRvU3RhcnQodGhpcyl9c3RhdGljIGNvbGxhcHNlVG9TdGFydChlKXtyZXR1cm4gbmV3IFplKGUuc3RhcnRMaW5lTnVtYmVyLGUuc3RhcnRDb2x1bW4sZS5zdGFydExpbmVOdW1iZXIsZS5zdGFydENvbHVtbil9c3RhdGljIGZyb21Qb3NpdGlvbnMoZSx0PWUpe3JldHVybiBuZXcgWmUoZS5saW5lTnVtYmVyLGUuY29sdW1uLHQubGluZU51bWJlcix0LmNvbHVtbil9c3RhdGljIGxpZnQoZSl7cmV0dXJuIGU/bmV3IFplKGUuc3RhcnRMaW5lTnVtYmVyLGUuc3RhcnRDb2x1bW4sZS5lbmRMaW5lTnVtYmVyLGUuZW5kQ29sdW1uKTpudWxsfXN0YXRpYyBpc0lSYW5nZShlKXtyZXR1cm4gZSYmIm51bWJlciI9PXR5cGVvZiBlLnN0YXJ0TGluZU51bWJlciYmIm51bWJlciI9PXR5cGVvZiBlLnN0YXJ0Q29sdW1uJiYibnVtYmVyIj09dHlwZW9mIGUuZW5kTGluZU51bWJlciYmIm51bWJlciI9PXR5cGVvZiBlLmVuZENvbHVtbn1zdGF0aWMgYXJlSW50ZXJzZWN0aW5nT3JUb3VjaGluZyhlLHQpe3JldHVybiEoZS5lbmRMaW5lTnVtYmVyPHQuc3RhcnRMaW5lTnVtYmVyfHxlLmVuZExpbmVOdW1iZXI9PT10LnN0YXJ0TGluZU51bWJlciYmZS5lbmRDb2x1bW48dC5zdGFydENvbHVtbikmJiEodC5lbmRMaW5lTnVtYmVyPGUuc3RhcnRMaW5lTnVtYmVyfHx0LmVuZExpbmVOdW1iZXI9PT1lLnN0YXJ0TGluZU51bWJlciYmdC5lbmRDb2x1bW48ZS5zdGFydENvbHVtbil9c3RhdGljIGFyZUludGVyc2VjdGluZyhlLHQpe3JldHVybiEoZS5lbmRMaW5lTnVtYmVyPHQuc3RhcnRMaW5lTnVtYmVyfHxlLmVuZExpbmVOdW1iZXI9PT10LnN0YXJ0TGluZU51bWJlciYmZS5lbmRDb2x1bW48PXQuc3RhcnRDb2x1bW4pJiYhKHQuZW5kTGluZU51bWJlcjxlLnN0YXJ0TGluZU51bWJlcnx8dC5lbmRMaW5lTnVtYmVyPT09ZS5zdGFydExpbmVOdW1iZXImJnQuZW5kQ29sdW1uPD1lLnN0YXJ0Q29sdW1uKX1zdGF0aWMgY29tcGFyZVJhbmdlc1VzaW5nU3RhcnRzKGUsdCl7aWYoZSYmdCl7Y29uc3Qgbj0wfGUuc3RhcnRMaW5lTnVtYmVyLHI9MHx0LnN0YXJ0TGluZU51bWJlcjtpZihuPT09cil7Y29uc3Qgbj0wfGUuc3RhcnRDb2x1bW4scj0wfHQuc3RhcnRDb2x1bW47aWYobj09PXIpe2NvbnN0IG49MHxlLmVuZExpbmVOdW1iZXIscj0wfHQuZW5kTGluZU51bWJlcjtpZihuPT09cil7cmV0dXJuKDB8ZS5lbmRDb2x1bW4pLSgwfHQuZW5kQ29sdW1uKX1yZXR1cm4gbi1yfXJldHVybiBuLXJ9cmV0dXJuIG4tcn1yZXR1cm4oZT8xOjApLSh0PzE6MCl9c3RhdGljIGNvbXBhcmVSYW5nZXNVc2luZ0VuZHMoZSx0KXtyZXR1cm4gZS5lbmRMaW5lTnVtYmVyPT09dC5lbmRMaW5lTnVtYmVyP2UuZW5kQ29sdW1uPT09dC5lbmRDb2x1bW4/ZS5zdGFydExpbmVOdW1iZXI9PT10LnN0YXJ0TGluZU51bWJlcj9lLnN0YXJ0Q29sdW1uLXQuc3RhcnRDb2x1bW46ZS5zdGFydExpbmVOdW1iZXItdC5zdGFydExpbmVOdW1iZXI6ZS5lbmRDb2x1bW4tdC5lbmRDb2x1bW46ZS5lbmRMaW5lTnVtYmVyLXQuZW5kTGluZU51bWJlcn1zdGF0aWMgc3BhbnNNdWx0aXBsZUxpbmVzKGUpe3JldHVybiBlLmVuZExpbmVOdW1iZXI+ZS5zdGFydExpbmVOdW1iZXJ9dG9KU09OKCl7cmV0dXJuIHRoaXN9fWZ1bmN0aW9uIGV0KGUsdCxuLHIpe3JldHVybiBuZXcgZ2UoZSx0LG4pLkNvbXB1dGVEaWZmKHIpfWNsYXNzIHR0e2NvbnN0cnVjdG9yKGUpe2NvbnN0IHQ9W10sbj1bXTtmb3IobGV0IHI9MCxpPWUubGVuZ3RoO3I8aTtyKyspdFtyXT1vdChlW3JdLDEpLG5bcl09c3QoZVtyXSwxKTt0aGlzLmxpbmVzPWUsdGhpcy5fc3RhcnRDb2x1bW5zPXQsdGhpcy5fZW5kQ29sdW1ucz1ufWdldEVsZW1lbnRzKCl7Y29uc3QgZT1bXTtmb3IobGV0IHQ9MCxuPXRoaXMubGluZXMubGVuZ3RoO3Q8bjt0KyspZVt0XT10aGlzLmxpbmVzW3RdLnN1YnN0cmluZyh0aGlzLl9zdGFydENvbHVtbnNbdF0tMSx0aGlzLl9lbmRDb2x1bW5zW3RdLTEpO3JldHVybiBlfWdldFN0cmljdEVsZW1lbnQoZSl7cmV0dXJuIHRoaXMubGluZXNbZV19Z2V0U3RhcnRMaW5lTnVtYmVyKGUpe3JldHVybiBlKzF9Z2V0RW5kTGluZU51bWJlcihlKXtyZXR1cm4gZSsxfWNyZWF0ZUNoYXJTZXF1ZW5jZShlLHQsbil7Y29uc3Qgcj1bXSxpPVtdLGE9W107bGV0IG89MDtmb3IobGV0IHM9dDtzPD1uO3MrKyl7Y29uc3QgdD10aGlzLmxpbmVzW3NdLG49ZT90aGlzLl9zdGFydENvbHVtbnNbc106MSxsPWU/dGhpcy5fZW5kQ29sdW1uc1tzXTp0Lmxlbmd0aCsxO2ZvcihsZXQgZT1uO2U8bDtlKyspcltvXT10LmNoYXJDb2RlQXQoZS0xKSxpW29dPXMrMSxhW29dPWUsbysrfXJldHVybiBuZXcgbnQocixpLGEpfX1jbGFzcyBudHtjb25zdHJ1Y3RvcihlLHQsbil7dGhpcy5fY2hhckNvZGVzPWUsdGhpcy5fbGluZU51bWJlcnM9dCx0aGlzLl9jb2x1bW5zPW59Z2V0RWxlbWVudHMoKXtyZXR1cm4gdGhpcy5fY2hhckNvZGVzfWdldFN0YXJ0TGluZU51bWJlcihlKXtyZXR1cm4gdGhpcy5fbGluZU51bWJlcnNbZV19Z2V0U3RhcnRDb2x1bW4oZSl7cmV0dXJuIHRoaXMuX2NvbHVtbnNbZV19Z2V0RW5kTGluZU51bWJlcihlKXtyZXR1cm4gdGhpcy5fbGluZU51bWJlcnNbZV19Z2V0RW5kQ29sdW1uKGUpe3JldHVybiB0aGlzLl9jb2x1bW5zW2VdKzF9fWNsYXNzIHJ0e2NvbnN0cnVjdG9yKGUsdCxuLHIsaSxhLG8scyl7dGhpcy5vcmlnaW5hbFN0YXJ0TGluZU51bWJlcj1lLHRoaXMub3JpZ2luYWxTdGFydENvbHVtbj10LHRoaXMub3JpZ2luYWxFbmRMaW5lTnVtYmVyPW4sdGhpcy5vcmlnaW5hbEVuZENvbHVtbj1yLHRoaXMubW9kaWZpZWRTdGFydExpbmVOdW1iZXI9aSx0aGlzLm1vZGlmaWVkU3RhcnRDb2x1bW49YSx0aGlzLm1vZGlmaWVkRW5kTGluZU51bWJlcj1vLHRoaXMubW9kaWZpZWRFbmRDb2x1bW49c31zdGF0aWMgY3JlYXRlRnJvbURpZmZDaGFuZ2UoZSx0LG4pe2xldCByLGksYSxvLHMsbCxjLGg7cmV0dXJuIDA9PT1lLm9yaWdpbmFsTGVuZ3RoPyhyPTAsaT0wLGE9MCxvPTApOihyPXQuZ2V0U3RhcnRMaW5lTnVtYmVyKGUub3JpZ2luYWxTdGFydCksaT10LmdldFN0YXJ0Q29sdW1uKGUub3JpZ2luYWxTdGFydCksYT10LmdldEVuZExpbmVOdW1iZXIoZS5vcmlnaW5hbFN0YXJ0K2Uub3JpZ2luYWxMZW5ndGgtMSksbz10LmdldEVuZENvbHVtbihlLm9yaWdpbmFsU3RhcnQrZS5vcmlnaW5hbExlbmd0aC0xKSksMD09PWUubW9kaWZpZWRMZW5ndGg/KHM9MCxsPTAsYz0wLGg9MCk6KHM9bi5nZXRTdGFydExpbmVOdW1iZXIoZS5tb2RpZmllZFN0YXJ0KSxsPW4uZ2V0U3RhcnRDb2x1bW4oZS5tb2RpZmllZFN0YXJ0KSxjPW4uZ2V0RW5kTGluZU51bWJlcihlLm1vZGlmaWVkU3RhcnQrZS5tb2RpZmllZExlbmd0aC0xKSxoPW4uZ2V0RW5kQ29sdW1uKGUubW9kaWZpZWRTdGFydCtlLm1vZGlmaWVkTGVuZ3RoLTEpKSxuZXcgcnQocixpLGEsbyxzLGwsYyxoKX19Y2xhc3MgaXR7Y29uc3RydWN0b3IoZSx0LG4scixpKXt0aGlzLm9yaWdpbmFsU3RhcnRMaW5lTnVtYmVyPWUsdGhpcy5vcmlnaW5hbEVuZExpbmVOdW1iZXI9dCx0aGlzLm1vZGlmaWVkU3RhcnRMaW5lTnVtYmVyPW4sdGhpcy5tb2RpZmllZEVuZExpbmVOdW1iZXI9cix0aGlzLmNoYXJDaGFuZ2VzPWl9c3RhdGljIGNyZWF0ZUZyb21EaWZmUmVzdWx0KGUsdCxuLHIsaSxhLG8pe2xldCBzLGwsYyxoLGQ7aWYoMD09PXQub3JpZ2luYWxMZW5ndGg/KHM9bi5nZXRTdGFydExpbmVOdW1iZXIodC5vcmlnaW5hbFN0YXJ0KS0xLGw9MCk6KHM9bi5nZXRTdGFydExpbmVOdW1iZXIodC5vcmlnaW5hbFN0YXJ0KSxsPW4uZ2V0RW5kTGluZU51bWJlcih0Lm9yaWdpbmFsU3RhcnQrdC5vcmlnaW5hbExlbmd0aC0xKSksMD09PXQubW9kaWZpZWRMZW5ndGg/KGM9ci5nZXRTdGFydExpbmVOdW1iZXIodC5tb2RpZmllZFN0YXJ0KS0xLGg9MCk6KGM9ci5nZXRTdGFydExpbmVOdW1iZXIodC5tb2RpZmllZFN0YXJ0KSxoPXIuZ2V0RW5kTGluZU51bWJlcih0Lm1vZGlmaWVkU3RhcnQrdC5tb2RpZmllZExlbmd0aC0xKSksYSYmdC5vcmlnaW5hbExlbmd0aD4wJiZ0Lm9yaWdpbmFsTGVuZ3RoPDIwJiZ0Lm1vZGlmaWVkTGVuZ3RoPjAmJnQubW9kaWZpZWRMZW5ndGg8MjAmJmkoKSl7Y29uc3QgYT1uLmNyZWF0ZUNoYXJTZXF1ZW5jZShlLHQub3JpZ2luYWxTdGFydCx0Lm9yaWdpbmFsU3RhcnQrdC5vcmlnaW5hbExlbmd0aC0xKSxzPXIuY3JlYXRlQ2hhclNlcXVlbmNlKGUsdC5tb2RpZmllZFN0YXJ0LHQubW9kaWZpZWRTdGFydCt0Lm1vZGlmaWVkTGVuZ3RoLTEpO2xldCBsPWV0KGEscyxpLCEwKS5jaGFuZ2VzO28mJihsPWZ1bmN0aW9uKGUpe2lmKGUubGVuZ3RoPD0xKXJldHVybiBlO2NvbnN0IHQ9W2VbMF1dO2xldCBuPXRbMF07Zm9yKGxldCByPTEsaT1lLmxlbmd0aDtyPGk7cisrKXtjb25zdCBpPWVbcl0sYT1pLm9yaWdpbmFsU3RhcnQtKG4ub3JpZ2luYWxTdGFydCtuLm9yaWdpbmFsTGVuZ3RoKSxvPWkubW9kaWZpZWRTdGFydC0obi5tb2RpZmllZFN0YXJ0K24ubW9kaWZpZWRMZW5ndGgpO01hdGgubWluKGEsbyk8Mz8obi5vcmlnaW5hbExlbmd0aD1pLm9yaWdpbmFsU3RhcnQraS5vcmlnaW5hbExlbmd0aC1uLm9yaWdpbmFsU3RhcnQsbi5tb2RpZmllZExlbmd0aD1pLm1vZGlmaWVkU3RhcnQraS5tb2RpZmllZExlbmd0aC1uLm1vZGlmaWVkU3RhcnQpOih0LnB1c2goaSksbj1pKX1yZXR1cm4gdH0obCkpLGQ9W107Zm9yKGxldCBlPTAsdD1sLmxlbmd0aDtlPHQ7ZSsrKWQucHVzaChydC5jcmVhdGVGcm9tRGlmZkNoYW5nZShsW2VdLGEscykpfXJldHVybiBuZXcgaXQocyxsLGMsaCxkKX19Y2xhc3MgYXR7Y29uc3RydWN0b3IoZSx0LG4pe3RoaXMuc2hvdWxkQ29tcHV0ZUNoYXJDaGFuZ2VzPW4uc2hvdWxkQ29tcHV0ZUNoYXJDaGFuZ2VzLHRoaXMuc2hvdWxkUG9zdFByb2Nlc3NDaGFyQ2hhbmdlcz1uLnNob3VsZFBvc3RQcm9jZXNzQ2hhckNoYW5nZXMsdGhpcy5zaG91bGRJZ25vcmVUcmltV2hpdGVzcGFjZT1uLnNob3VsZElnbm9yZVRyaW1XaGl0ZXNwYWNlLHRoaXMuc2hvdWxkTWFrZVByZXR0eURpZmY9bi5zaG91bGRNYWtlUHJldHR5RGlmZix0aGlzLm9yaWdpbmFsTGluZXM9ZSx0aGlzLm1vZGlmaWVkTGluZXM9dCx0aGlzLm9yaWdpbmFsPW5ldyB0dChlKSx0aGlzLm1vZGlmaWVkPW5ldyB0dCh0KSx0aGlzLmNvbnRpbnVlTGluZURpZmY9bHQobi5tYXhDb21wdXRhdGlvblRpbWUpLHRoaXMuY29udGludWVDaGFyRGlmZj1sdCgwPT09bi5tYXhDb21wdXRhdGlvblRpbWU/MDpNYXRoLm1pbihuLm1heENvbXB1dGF0aW9uVGltZSw1ZTMpKX1jb21wdXRlRGlmZigpe2lmKDE9PT10aGlzLm9yaWdpbmFsLmxpbmVzLmxlbmd0aCYmMD09PXRoaXMub3JpZ2luYWwubGluZXNbMF0ubGVuZ3RoKXJldHVybiAxPT09dGhpcy5tb2RpZmllZC5saW5lcy5sZW5ndGgmJjA9PT10aGlzLm1vZGlmaWVkLmxpbmVzWzBdLmxlbmd0aD97cXVpdEVhcmx5OiExLGNoYW5nZXM6W119OntxdWl0RWFybHk6ITEsY2hhbmdlczpbe29yaWdpbmFsU3RhcnRMaW5lTnVtYmVyOjEsb3JpZ2luYWxFbmRMaW5lTnVtYmVyOjEsbW9kaWZpZWRTdGFydExpbmVOdW1iZXI6MSxtb2RpZmllZEVuZExpbmVOdW1iZXI6dGhpcy5tb2RpZmllZC5saW5lcy5sZW5ndGgsY2hhckNoYW5nZXM6W3ttb2RpZmllZEVuZENvbHVtbjowLG1vZGlmaWVkRW5kTGluZU51bWJlcjowLG1vZGlmaWVkU3RhcnRDb2x1bW46MCxtb2RpZmllZFN0YXJ0TGluZU51bWJlcjowLG9yaWdpbmFsRW5kQ29sdW1uOjAsb3JpZ2luYWxFbmRMaW5lTnVtYmVyOjAsb3JpZ2luYWxTdGFydENvbHVtbjowLG9yaWdpbmFsU3RhcnRMaW5lTnVtYmVyOjB9XX1dfTtpZigxPT09dGhpcy5tb2RpZmllZC5saW5lcy5sZW5ndGgmJjA9PT10aGlzLm1vZGlmaWVkLmxpbmVzWzBdLmxlbmd0aClyZXR1cm57cXVpdEVhcmx5OiExLGNoYW5nZXM6W3tvcmlnaW5hbFN0YXJ0TGluZU51bWJlcjoxLG9yaWdpbmFsRW5kTGluZU51bWJlcjp0aGlzLm9yaWdpbmFsLmxpbmVzLmxlbmd0aCxtb2RpZmllZFN0YXJ0TGluZU51bWJlcjoxLG1vZGlmaWVkRW5kTGluZU51bWJlcjoxLGNoYXJDaGFuZ2VzOlt7bW9kaWZpZWRFbmRDb2x1bW46MCxtb2RpZmllZEVuZExpbmVOdW1iZXI6MCxtb2RpZmllZFN0YXJ0Q29sdW1uOjAsbW9kaWZpZWRTdGFydExpbmVOdW1iZXI6MCxvcmlnaW5hbEVuZENvbHVtbjowLG9yaWdpbmFsRW5kTGluZU51bWJlcjowLG9yaWdpbmFsU3RhcnRDb2x1bW46MCxvcmlnaW5hbFN0YXJ0TGluZU51bWJlcjowfV19XX07Y29uc3QgZT1ldCh0aGlzLm9yaWdpbmFsLHRoaXMubW9kaWZpZWQsdGhpcy5jb250aW51ZUxpbmVEaWZmLHRoaXMuc2hvdWxkTWFrZVByZXR0eURpZmYpLHQ9ZS5jaGFuZ2VzLG49ZS5xdWl0RWFybHk7aWYodGhpcy5zaG91bGRJZ25vcmVUcmltV2hpdGVzcGFjZSl7Y29uc3QgZT1bXTtmb3IobGV0IG49MCxyPXQubGVuZ3RoO248cjtuKyspZS5wdXNoKGl0LmNyZWF0ZUZyb21EaWZmUmVzdWx0KHRoaXMuc2hvdWxkSWdub3JlVHJpbVdoaXRlc3BhY2UsdFtuXSx0aGlzLm9yaWdpbmFsLHRoaXMubW9kaWZpZWQsdGhpcy5jb250aW51ZUNoYXJEaWZmLHRoaXMuc2hvdWxkQ29tcHV0ZUNoYXJDaGFuZ2VzLHRoaXMuc2hvdWxkUG9zdFByb2Nlc3NDaGFyQ2hhbmdlcykpO3JldHVybntxdWl0RWFybHk6bixjaGFuZ2VzOmV9fWNvbnN0IHI9W107bGV0IGk9MCxhPTA7Zm9yKGxldCBlPS0xLG49dC5sZW5ndGg7ZTxuO2UrKyl7Y29uc3Qgbz1lKzE8bj90W2UrMV06bnVsbCxzPW8/by5vcmlnaW5hbFN0YXJ0OnRoaXMub3JpZ2luYWxMaW5lcy5sZW5ndGgsbD1vP28ubW9kaWZpZWRTdGFydDp0aGlzLm1vZGlmaWVkTGluZXMubGVuZ3RoO2Zvcig7aTxzJiZhPGw7KXtjb25zdCBlPXRoaXMub3JpZ2luYWxMaW5lc1tpXSx0PXRoaXMubW9kaWZpZWRMaW5lc1thXTtpZihlIT09dCl7e2xldCBuPW90KGUsMSksbz1vdCh0LDEpO2Zvcig7bj4xJiZvPjE7KXtpZihlLmNoYXJDb2RlQXQobi0yKSE9PXQuY2hhckNvZGVBdChvLTIpKWJyZWFrO24tLSxvLS19KG4+MXx8bz4xKSYmdGhpcy5fcHVzaFRyaW1XaGl0ZXNwYWNlQ2hhckNoYW5nZShyLGkrMSwxLG4sYSsxLDEsbyl9e2xldCBuPXN0KGUsMSksbz1zdCh0LDEpO2NvbnN0IHM9ZS5sZW5ndGgrMSxsPXQubGVuZ3RoKzE7Zm9yKDtuPHMmJm88bDspe2lmKGUuY2hhckNvZGVBdChuLTEpIT09ZS5jaGFyQ29kZUF0KG8tMSkpYnJlYWs7bisrLG8rK30objxzfHxvPGwpJiZ0aGlzLl9wdXNoVHJpbVdoaXRlc3BhY2VDaGFyQ2hhbmdlKHIsaSsxLG4scyxhKzEsbyxsKX19aSsrLGErK31vJiYoci5wdXNoKGl0LmNyZWF0ZUZyb21EaWZmUmVzdWx0KHRoaXMuc2hvdWxkSWdub3JlVHJpbVdoaXRlc3BhY2Usbyx0aGlzLm9yaWdpbmFsLHRoaXMubW9kaWZpZWQsdGhpcy5jb250aW51ZUNoYXJEaWZmLHRoaXMuc2hvdWxkQ29tcHV0ZUNoYXJDaGFuZ2VzLHRoaXMuc2hvdWxkUG9zdFByb2Nlc3NDaGFyQ2hhbmdlcykpLGkrPW8ub3JpZ2luYWxMZW5ndGgsYSs9by5tb2RpZmllZExlbmd0aCl9cmV0dXJue3F1aXRFYXJseTpuLGNoYW5nZXM6cn19X3B1c2hUcmltV2hpdGVzcGFjZUNoYXJDaGFuZ2UoZSx0LG4scixpLGEsbyl7aWYodGhpcy5fbWVyZ2VUcmltV2hpdGVzcGFjZUNoYXJDaGFuZ2UoZSx0LG4scixpLGEsbykpcmV0dXJuO2xldCBzO3RoaXMuc2hvdWxkQ29tcHV0ZUNoYXJDaGFuZ2VzJiYocz1bbmV3IHJ0KHQsbix0LHIsaSxhLGksbyldKSxlLnB1c2gobmV3IGl0KHQsdCxpLGkscykpfV9tZXJnZVRyaW1XaGl0ZXNwYWNlQ2hhckNoYW5nZShlLHQsbixyLGksYSxvKXtjb25zdCBzPWUubGVuZ3RoO2lmKDA9PT1zKXJldHVybiExO2NvbnN0IGw9ZVtzLTFdO3JldHVybiAwIT09bC5vcmlnaW5hbEVuZExpbmVOdW1iZXImJjAhPT1sLm1vZGlmaWVkRW5kTGluZU51bWJlciYmKGwub3JpZ2luYWxFbmRMaW5lTnVtYmVyKzE9PT10JiZsLm1vZGlmaWVkRW5kTGluZU51bWJlcisxPT09aSYmKGwub3JpZ2luYWxFbmRMaW5lTnVtYmVyPXQsbC5tb2RpZmllZEVuZExpbmVOdW1iZXI9aSx0aGlzLnNob3VsZENvbXB1dGVDaGFyQ2hhbmdlcyYmbC5jaGFyQ2hhbmdlcyYmbC5jaGFyQ2hhbmdlcy5wdXNoKG5ldyBydCh0LG4sdCxyLGksYSxpLG8pKSwhMCkpfX1mdW5jdGlvbiBvdChlLHQpe2NvbnN0IG49ZnVuY3Rpb24oZSl7Zm9yKGxldCB0PTAsbj1lLmxlbmd0aDt0PG47dCsrKXtjb25zdCBuPWUuY2hhckNvZGVBdCh0KTtpZigzMiE9PW4mJjkhPT1uKXJldHVybiB0fXJldHVybi0xfShlKTtyZXR1cm4tMT09PW4/dDpuKzF9ZnVuY3Rpb24gc3QoZSx0KXtjb25zdCBuPWZ1bmN0aW9uKGUsdD1lLmxlbmd0aC0xKXtmb3IobGV0IG49dDtuPj0wO24tLSl7Y29uc3QgdD1lLmNoYXJDb2RlQXQobik7aWYoMzIhPT10JiY5IT09dClyZXR1cm4gbn1yZXR1cm4tMX0oZSk7cmV0dXJuLTE9PT1uP3Q6bisyfWZ1bmN0aW9uIGx0KGUpe2lmKDA9PT1lKXJldHVybigpPT4hMDtjb25zdCB0PURhdGUubm93KCk7cmV0dXJuKCk9PkRhdGUubm93KCktdDxlfWZ1bmN0aW9uIGN0KGUpe3JldHVybiBlPDA/MDplPjI1NT8yNTU6MHxlfWZ1bmN0aW9uIGh0KGUpe3JldHVybiBlPDA/MDplPjQyOTQ5NjcyOTU/NDI5NDk2NzI5NTowfGV9Y2xhc3MgZHR7Y29uc3RydWN0b3IoZSl7dGhpcy52YWx1ZXM9ZSx0aGlzLnByZWZpeFN1bT1uZXcgVWludDMyQXJyYXkoZS5sZW5ndGgpLHRoaXMucHJlZml4U3VtVmFsaWRJbmRleD1uZXcgSW50MzJBcnJheSgxKSx0aGlzLnByZWZpeFN1bVZhbGlkSW5kZXhbMF09LTF9aW5zZXJ0VmFsdWVzKGUsdCl7ZT1odChlKTtjb25zdCBuPXRoaXMudmFsdWVzLHI9dGhpcy5wcmVmaXhTdW0saT10Lmxlbmd0aDtyZXR1cm4gMCE9PWkmJih0aGlzLnZhbHVlcz1uZXcgVWludDMyQXJyYXkobi5sZW5ndGgraSksdGhpcy52YWx1ZXMuc2V0KG4uc3ViYXJyYXkoMCxlKSwwKSx0aGlzLnZhbHVlcy5zZXQobi5zdWJhcnJheShlKSxlK2kpLHRoaXMudmFsdWVzLnNldCh0LGUpLGUtMTx0aGlzLnByZWZpeFN1bVZhbGlkSW5kZXhbMF0mJih0aGlzLnByZWZpeFN1bVZhbGlkSW5kZXhbMF09ZS0xKSx0aGlzLnByZWZpeFN1bT1uZXcgVWludDMyQXJyYXkodGhpcy52YWx1ZXMubGVuZ3RoKSx0aGlzLnByZWZpeFN1bVZhbGlkSW5kZXhbMF0+PTAmJnRoaXMucHJlZml4U3VtLnNldChyLnN1YmFycmF5KDAsdGhpcy5wcmVmaXhTdW1WYWxpZEluZGV4WzBdKzEpKSwhMCl9c2V0VmFsdWUoZSx0KXtyZXR1cm4gZT1odChlKSx0PWh0KHQpLHRoaXMudmFsdWVzW2VdIT09dCYmKHRoaXMudmFsdWVzW2VdPXQsZS0xPHRoaXMucHJlZml4U3VtVmFsaWRJbmRleFswXSYmKHRoaXMucHJlZml4U3VtVmFsaWRJbmRleFswXT1lLTEpLCEwKX1yZW1vdmVWYWx1ZXMoZSx0KXtlPWh0KGUpLHQ9aHQodCk7Y29uc3Qgbj10aGlzLnZhbHVlcyxyPXRoaXMucHJlZml4U3VtO2lmKGU+PW4ubGVuZ3RoKXJldHVybiExO2NvbnN0IGk9bi5sZW5ndGgtZTtyZXR1cm4gdD49aSYmKHQ9aSksMCE9PXQmJih0aGlzLnZhbHVlcz1uZXcgVWludDMyQXJyYXkobi5sZW5ndGgtdCksdGhpcy52YWx1ZXMuc2V0KG4uc3ViYXJyYXkoMCxlKSwwKSx0aGlzLnZhbHVlcy5zZXQobi5zdWJhcnJheShlK3QpLGUpLHRoaXMucHJlZml4U3VtPW5ldyBVaW50MzJBcnJheSh0aGlzLnZhbHVlcy5sZW5ndGgpLGUtMTx0aGlzLnByZWZpeFN1bVZhbGlkSW5kZXhbMF0mJih0aGlzLnByZWZpeFN1bVZhbGlkSW5kZXhbMF09ZS0xKSx0aGlzLnByZWZpeFN1bVZhbGlkSW5kZXhbMF0+PTAmJnRoaXMucHJlZml4U3VtLnNldChyLnN1YmFycmF5KDAsdGhpcy5wcmVmaXhTdW1WYWxpZEluZGV4WzBdKzEpKSwhMCl9Z2V0VG90YWxTdW0oKXtyZXR1cm4gMD09PXRoaXMudmFsdWVzLmxlbmd0aD8wOnRoaXMuX2dldFByZWZpeFN1bSh0aGlzLnZhbHVlcy5sZW5ndGgtMSl9Z2V0UHJlZml4U3VtKGUpe3JldHVybiBlPDA/MDooZT1odChlKSx0aGlzLl9nZXRQcmVmaXhTdW0oZSkpfV9nZXRQcmVmaXhTdW0oZSl7aWYoZTw9dGhpcy5wcmVmaXhTdW1WYWxpZEluZGV4WzBdKXJldHVybiB0aGlzLnByZWZpeFN1bVtlXTtsZXQgdD10aGlzLnByZWZpeFN1bVZhbGlkSW5kZXhbMF0rMTswPT09dCYmKHRoaXMucHJlZml4U3VtWzBdPXRoaXMudmFsdWVzWzBdLHQrKyksZT49dGhpcy52YWx1ZXMubGVuZ3RoJiYoZT10aGlzLnZhbHVlcy5sZW5ndGgtMSk7Zm9yKGxldCBuPXQ7bjw9ZTtuKyspdGhpcy5wcmVmaXhTdW1bbl09dGhpcy5wcmVmaXhTdW1bbi0xXSt0aGlzLnZhbHVlc1tuXTtyZXR1cm4gdGhpcy5wcmVmaXhTdW1WYWxpZEluZGV4WzBdPU1hdGgubWF4KHRoaXMucHJlZml4U3VtVmFsaWRJbmRleFswXSxlKSx0aGlzLnByZWZpeFN1bVtlXX1nZXRJbmRleE9mKGUpe2U9TWF0aC5mbG9vcihlKSx0aGlzLmdldFRvdGFsU3VtKCk7bGV0IHQ9MCxuPXRoaXMudmFsdWVzLmxlbmd0aC0xLHI9MCxpPTAsYT0wO2Zvcig7dDw9bjspaWYocj10KyhuLXQpLzJ8MCxpPXRoaXMucHJlZml4U3VtW3JdLGE9aS10aGlzLnZhbHVlc1tyXSxlPGEpbj1yLTE7ZWxzZXtpZighKGU+PWkpKWJyZWFrO3Q9cisxfXJldHVybiBuZXcgdXQocixlLWEpfX1jbGFzcyB1dHtjb25zdHJ1Y3RvcihlLHQpe3RoaXMuaW5kZXg9ZSx0aGlzLnJlbWFpbmRlcj10LHRoaXMuX3ByZWZpeFN1bUluZGV4T2ZSZXN1bHRCcmFuZD12b2lkIDAsdGhpcy5pbmRleD1lLHRoaXMucmVtYWluZGVyPXR9fWNvbnN0IHB0PWZ1bmN0aW9uKGU9IiIpe2xldCB0PSIoLT9cXGQqXFwuXFxkXFx3Kil8KFteIjtmb3IoY29uc3QgbiBvZiJgfiFAIyQlXiYqKCktPStbe119XFx8OzonXCIsLjw+Lz8iKWUuaW5kZXhPZihuKT49MHx8KHQrPSJcXCIrbik7cmV0dXJuIHQrPSJcXHNdKykiLG5ldyBSZWdFeHAodCwiZyIpfSgpO2NvbnN0IG10PXttYXhMZW46MWUzLHdpbmRvd1NpemU6MTUsdGltZUJ1ZGdldDoxNTB9O2Z1bmN0aW9uIGZ0KGUsdCxuLHIsaT1tdCl7aWYobi5sZW5ndGg+aS5tYXhMZW4pe2xldCBhPWUtaS5tYXhMZW4vMjtyZXR1cm4gYTwwP2E9MDpyKz1hLGZ0KGUsdCxuPW4uc3Vic3RyaW5nKGEsZStpLm1heExlbi8yKSxyLGkpfWNvbnN0IGE9RGF0ZS5ub3coKSxvPWUtMS1yO2xldCBzPS0xLGw9bnVsbDtmb3IobGV0IGU9MTshKERhdGUubm93KCktYT49aS50aW1lQnVkZ2V0KTtlKyspe2NvbnN0IHI9by1pLndpbmRvd1NpemUqZTt0Lmxhc3RJbmRleD1NYXRoLm1heCgwLHIpO2NvbnN0IGE9Z3QodCxuLG8scyk7aWYoIWEmJmwpYnJlYWs7aWYobD1hLHI8PTApYnJlYWs7cz1yfWlmKGwpe2NvbnN0IGU9e3dvcmQ6bFswXSxzdGFydENvbHVtbjpyKzErbC5pbmRleCxlbmRDb2x1bW46cisxK2wuaW5kZXgrbFswXS5sZW5ndGh9O3JldHVybiB0Lmxhc3RJbmRleD0wLGV9cmV0dXJuIG51bGx9ZnVuY3Rpb24gZ3QoZSx0LG4scil7bGV0IGk7Zm9yKDtpPWUuZXhlYyh0KTspe2NvbnN0IHQ9aS5pbmRleHx8MDtpZih0PD1uJiZlLmxhc3RJbmRleD49bilyZXR1cm4gaTtpZihyPjAmJnQ+cilyZXR1cm4gbnVsbH1yZXR1cm4gbnVsbH1jbGFzcyBidHtjb25zdHJ1Y3RvcihlKXtjb25zdCB0PWN0KGUpO3RoaXMuX2RlZmF1bHRWYWx1ZT10LHRoaXMuX2FzY2lpTWFwPWJ0Ll9jcmVhdGVBc2NpaU1hcCh0KSx0aGlzLl9tYXA9bmV3IE1hcH1zdGF0aWMgX2NyZWF0ZUFzY2lpTWFwKGUpe2NvbnN0IHQ9bmV3IFVpbnQ4QXJyYXkoMjU2KTtmb3IobGV0IG49MDtuPDI1NjtuKyspdFtuXT1lO3JldHVybiB0fXNldChlLHQpe2NvbnN0IG49Y3QodCk7ZT49MCYmZTwyNTY/dGhpcy5fYXNjaWlNYXBbZV09bjp0aGlzLl9tYXAuc2V0KGUsbil9Z2V0KGUpe3JldHVybiBlPj0wJiZlPDI1Nj90aGlzLl9hc2NpaU1hcFtlXTp0aGlzLl9tYXAuZ2V0KGUpfHx0aGlzLl9kZWZhdWx0VmFsdWV9fWNsYXNzIHd0e2NvbnN0cnVjdG9yKGUsdCxuKXtjb25zdCByPW5ldyBVaW50OEFycmF5KGUqdCk7Zm9yKGxldCBpPTAsYT1lKnQ7aTxhO2krKylyW2ldPW47dGhpcy5fZGF0YT1yLHRoaXMucm93cz1lLHRoaXMuY29scz10fWdldChlLHQpe3JldHVybiB0aGlzLl9kYXRhW2UqdGhpcy5jb2xzK3RdfXNldChlLHQsbil7dGhpcy5fZGF0YVtlKnRoaXMuY29scyt0XT1ufX1jbGFzcyBfdHtjb25zdHJ1Y3RvcihlKXtsZXQgdD0wLG49MDtmb3IobGV0IHI9MCxpPWUubGVuZ3RoO3I8aTtyKyspe2NvbnN0W2ksYSxvXT1lW3JdO2E+dCYmKHQ9YSksaT5uJiYobj1pKSxvPm4mJihuPW8pfXQrKyxuKys7Y29uc3Qgcj1uZXcgd3Qobix0LDApO2ZvcihsZXQgdD0wLG49ZS5sZW5ndGg7dDxuO3QrKyl7Y29uc3RbbixpLGFdPWVbdF07ci5zZXQobixpLGEpfXRoaXMuX3N0YXRlcz1yLHRoaXMuX21heENoYXJDb2RlPXR9bmV4dFN0YXRlKGUsdCl7cmV0dXJuIHQ8MHx8dD49dGhpcy5fbWF4Q2hhckNvZGU/MDp0aGlzLl9zdGF0ZXMuZ2V0KGUsdCl9fWxldCB2dD1udWxsO2xldCB5dD1udWxsO2NsYXNzIFR0e3N0YXRpYyBfY3JlYXRlTGluayhlLHQsbixyLGkpe2xldCBhPWktMTtkb3tjb25zdCBuPXQuY2hhckNvZGVBdChhKTtpZigyIT09ZS5nZXQobikpYnJlYWs7YS0tfXdoaWxlKGE+cik7aWYocj4wKXtjb25zdCBlPXQuY2hhckNvZGVBdChyLTEpLG49dC5jaGFyQ29kZUF0KGEpOyg0MD09PWUmJjQxPT09bnx8OTE9PT1lJiY5Mz09PW58fDEyMz09PWUmJjEyNT09PW4pJiZhLS19cmV0dXJue3JhbmdlOntzdGFydExpbmVOdW1iZXI6bixzdGFydENvbHVtbjpyKzEsZW5kTGluZU51bWJlcjpuLGVuZENvbHVtbjphKzJ9LHVybDp0LnN1YnN0cmluZyhyLGErMSl9fXN0YXRpYyBjb21wdXRlTGlua3MoZSx0PWZ1bmN0aW9uKCl7cmV0dXJuIG51bGw9PT12dCYmKHZ0PW5ldyBfdChbWzEsMTA0LDJdLFsxLDcyLDJdLFsxLDEwMiw2XSxbMSw3MCw2XSxbMiwxMTYsM10sWzIsODQsM10sWzMsMTE2LDRdLFszLDg0LDRdLFs0LDExMiw1XSxbNCw4MCw1XSxbNSwxMTUsOV0sWzUsODMsOV0sWzUsNTgsMTBdLFs2LDEwNSw3XSxbNiw3Myw3XSxbNywxMDgsOF0sWzcsNzYsOF0sWzgsMTAxLDldLFs4LDY5LDldLFs5LDU4LDEwXSxbMTAsNDcsMTFdLFsxMSw0NywxMl1dKSksdnR9KCkpe2NvbnN0IG49ZnVuY3Rpb24oKXtpZihudWxsPT09eXQpe3l0PW5ldyBidCgwKTtjb25zdCBlPSIgXHQ8PidcIuOAgeOAgu+9oe+9pO+8jO+8ju+8mu+8m+KAmOOAiOOAjOOAjuOAlO+8iO+8u++9m++9ou+9o++9ne+8ve+8ieOAleOAj+OAjeOAieKAme+9gO+9nuKApiI7Zm9yKGxldCB0PTA7dDxlLmxlbmd0aDt0KyspeXQuc2V0KGUuY2hhckNvZGVBdCh0KSwxKTtjb25zdCB0PSIuLDsiO2ZvcihsZXQgZT0wO2U8dC5sZW5ndGg7ZSsrKXl0LnNldCh0LmNoYXJDb2RlQXQoZSksMil9cmV0dXJuIHl0fSgpLHI9W107Zm9yKGxldCBpPTEsYT1lLmdldExpbmVDb3VudCgpO2k8PWE7aSsrKXtjb25zdCBhPWUuZ2V0TGluZUNvbnRlbnQoaSksbz1hLmxlbmd0aDtsZXQgcz0wLGw9MCxjPTAsaD0xLGQ9ITEsdT0hMSxwPSExLG09ITE7Zm9yKDtzPG87KXtsZXQgZT0hMTtjb25zdCBvPWEuY2hhckNvZGVBdChzKTtpZigxMz09PWgpe2xldCB0O3N3aXRjaChvKXtjYXNlIDQwOmQ9ITAsdD0wO2JyZWFrO2Nhc2UgNDE6dD1kPzA6MTticmVhaztjYXNlIDkxOnA9ITAsdT0hMCx0PTA7YnJlYWs7Y2FzZSA5MzpwPSExLHQ9dT8wOjE7YnJlYWs7Y2FzZSAxMjM6bT0hMCx0PTA7YnJlYWs7Y2FzZSAxMjU6dD1tPzA6MTticmVhaztjYXNlIDM5OnQ9MzQ9PT1jfHw5Nj09PWM/MDoxO2JyZWFrO2Nhc2UgMzQ6dD0zOT09PWN8fDk2PT09Yz8wOjE7YnJlYWs7Y2FzZSA5Njp0PTM5PT09Y3x8MzQ9PT1jPzA6MTticmVhaztjYXNlIDQyOnQ9NDI9PT1jPzE6MDticmVhaztjYXNlIDEyNDp0PTEyND09PWM/MTowO2JyZWFrO2Nhc2UgMzI6dD1wPzA6MTticmVhaztkZWZhdWx0OnQ9bi5nZXQobyl9MT09PXQmJihyLnB1c2goVHQuX2NyZWF0ZUxpbmsobixhLGksbCxzKSksZT0hMCl9ZWxzZSBpZigxMj09PWgpe2xldCB0OzkxPT09bz8odT0hMCx0PTApOnQ9bi5nZXQobyksMT09PXQ/ZT0hMDpoPTEzfWVsc2UgaD10Lm5leHRTdGF0ZShoLG8pLDA9PT1oJiYoZT0hMCk7ZSYmKGg9MSxkPSExLHU9ITEsbT0hMSxsPXMrMSxjPW8pLHMrK30xMz09PWgmJnIucHVzaChUdC5fY3JlYXRlTGluayhuLGEsaSxsLG8pKX1yZXR1cm4gcn19Y2xhc3Mga3R7Y29uc3RydWN0b3IoKXt0aGlzLl9kZWZhdWx0VmFsdWVTZXQ9W1sidHJ1ZSIsImZhbHNlIl0sWyJUcnVlIiwiRmFsc2UiXSxbIlByaXZhdGUiLCJQdWJsaWMiLCJGcmllbmQiLCJSZWFkT25seSIsIlBhcnRpYWwiLCJQcm90ZWN0ZWQiLCJXcml0ZU9ubHkiXSxbInB1YmxpYyIsInByb3RlY3RlZCIsInByaXZhdGUiXV19bmF2aWdhdGVWYWx1ZVNldChlLHQsbixyLGkpe2lmKGUmJnQpe2NvbnN0IG49dGhpcy5kb05hdmlnYXRlVmFsdWVTZXQodCxpKTtpZihuKXJldHVybntyYW5nZTplLHZhbHVlOm59fWlmKG4mJnIpe2NvbnN0IGU9dGhpcy5kb05hdmlnYXRlVmFsdWVTZXQocixpKTtpZihlKXJldHVybntyYW5nZTpuLHZhbHVlOmV9fXJldHVybiBudWxsfWRvTmF2aWdhdGVWYWx1ZVNldChlLHQpe2NvbnN0IG49dGhpcy5udW1iZXJSZXBsYWNlKGUsdCk7cmV0dXJuIG51bGwhPT1uP246dGhpcy50ZXh0UmVwbGFjZShlLHQpfW51bWJlclJlcGxhY2UoZSx0KXtjb25zdCBuPU1hdGgucG93KDEwLGUubGVuZ3RoLShlLmxhc3RJbmRleE9mKCIuIikrMSkpO2xldCByPU51bWJlcihlKSxpPXBhcnNlRmxvYXQoZSk7cmV0dXJuIGlzTmFOKHIpfHxpc05hTihpKXx8ciE9PWk/bnVsbDowIT09cnx8dD8ocj1NYXRoLmZsb29yKHIqbikscis9dD9uOi1uLFN0cmluZyhyL24pKTpudWxsfXRleHRSZXBsYWNlKGUsdCl7cmV0dXJuIHRoaXMudmFsdWVTZXRzUmVwbGFjZSh0aGlzLl9kZWZhdWx0VmFsdWVTZXQsZSx0KX12YWx1ZVNldHNSZXBsYWNlKGUsdCxuKXtsZXQgcj1udWxsO2ZvcihsZXQgaT0wLGE9ZS5sZW5ndGg7bnVsbD09PXImJmk8YTtpKyspcj10aGlzLnZhbHVlU2V0UmVwbGFjZShlW2ldLHQsbik7cmV0dXJuIHJ9dmFsdWVTZXRSZXBsYWNlKGUsdCxuKXtsZXQgcj1lLmluZGV4T2YodCk7cmV0dXJuIHI+PTA/KHIrPW4/MTotMSxyPDA/cj1lLmxlbmd0aC0xOnIlPWUubGVuZ3RoLGVbcl0pOm51bGx9fWt0LklOU1RBTkNFPW5ldyBrdDtjb25zdCBTdD1PYmplY3QuZnJlZXplKChmdW5jdGlvbihlLHQpe2NvbnN0IG49c2V0VGltZW91dChlLmJpbmQodCksMCk7cmV0dXJue2Rpc3Bvc2UoKXtjbGVhclRpbWVvdXQobil9fX0pKTt2YXIgQ3Q7IWZ1bmN0aW9uKGUpe2UuaXNDYW5jZWxsYXRpb25Ub2tlbj1mdW5jdGlvbih0KXtyZXR1cm4gdD09PWUuTm9uZXx8dD09PWUuQ2FuY2VsbGVkfHwodCBpbnN0YW5jZW9mIHh0fHwhKCF0fHwib2JqZWN0IiE9dHlwZW9mIHQpJiYoImJvb2xlYW4iPT10eXBlb2YgdC5pc0NhbmNlbGxhdGlvblJlcXVlc3RlZCYmImZ1bmN0aW9uIj09dHlwZW9mIHQub25DYW5jZWxsYXRpb25SZXF1ZXN0ZWQpKX0sZS5Ob25lPU9iamVjdC5mcmVlemUoe2lzQ2FuY2VsbGF0aW9uUmVxdWVzdGVkOiExLG9uQ2FuY2VsbGF0aW9uUmVxdWVzdGVkOkguTm9uZX0pLGUuQ2FuY2VsbGVkPU9iamVjdC5mcmVlemUoe2lzQ2FuY2VsbGF0aW9uUmVxdWVzdGVkOiEwLG9uQ2FuY2VsbGF0aW9uUmVxdWVzdGVkOlN0fSl9KEN0fHwoQ3Q9e30pKTtjbGFzcyB4dHtjb25zdHJ1Y3Rvcigpe3RoaXMuX2lzQ2FuY2VsbGVkPSExLHRoaXMuX2VtaXR0ZXI9bnVsbH1jYW5jZWwoKXt0aGlzLl9pc0NhbmNlbGxlZHx8KHRoaXMuX2lzQ2FuY2VsbGVkPSEwLHRoaXMuX2VtaXR0ZXImJih0aGlzLl9lbWl0dGVyLmZpcmUodm9pZCAwKSx0aGlzLmRpc3Bvc2UoKSkpfWdldCBpc0NhbmNlbGxhdGlvblJlcXVlc3RlZCgpe3JldHVybiB0aGlzLl9pc0NhbmNlbGxlZH1nZXQgb25DYW5jZWxsYXRpb25SZXF1ZXN0ZWQoKXtyZXR1cm4gdGhpcy5faXNDYW5jZWxsZWQ/U3Q6KHRoaXMuX2VtaXR0ZXJ8fCh0aGlzLl9lbWl0dGVyPW5ldyBQKSx0aGlzLl9lbWl0dGVyLmV2ZW50KX1kaXNwb3NlKCl7dGhpcy5fZW1pdHRlciYmKHRoaXMuX2VtaXR0ZXIuZGlzcG9zZSgpLHRoaXMuX2VtaXR0ZXI9bnVsbCl9fWNsYXNzIEx0e2NvbnN0cnVjdG9yKGUpe3RoaXMuX3Rva2VuPXZvaWQgMCx0aGlzLl9wYXJlbnRMaXN0ZW5lcj12b2lkIDAsdGhpcy5fcGFyZW50TGlzdGVuZXI9ZSYmZS5vbkNhbmNlbGxhdGlvblJlcXVlc3RlZCh0aGlzLmNhbmNlbCx0aGlzKX1nZXQgdG9rZW4oKXtyZXR1cm4gdGhpcy5fdG9rZW58fCh0aGlzLl90b2tlbj1uZXcgeHQpLHRoaXMuX3Rva2VufWNhbmNlbCgpe3RoaXMuX3Rva2VuP3RoaXMuX3Rva2VuIGluc3RhbmNlb2YgeHQmJnRoaXMuX3Rva2VuLmNhbmNlbCgpOnRoaXMuX3Rva2VuPUN0LkNhbmNlbGxlZH1kaXNwb3NlKGU9ITEpe2UmJnRoaXMuY2FuY2VsKCksdGhpcy5fcGFyZW50TGlzdGVuZXImJnRoaXMuX3BhcmVudExpc3RlbmVyLmRpc3Bvc2UoKSx0aGlzLl90b2tlbj90aGlzLl90b2tlbiBpbnN0YW5jZW9mIHh0JiZ0aGlzLl90b2tlbi5kaXNwb3NlKCk6dGhpcy5fdG9rZW49Q3QuTm9uZX19Y2xhc3MgRXR7Y29uc3RydWN0b3IoKXt0aGlzLl9rZXlDb2RlVG9TdHI9W10sdGhpcy5fc3RyVG9LZXlDb2RlPU9iamVjdC5jcmVhdGUobnVsbCl9ZGVmaW5lKGUsdCl7dGhpcy5fa2V5Q29kZVRvU3RyW2VdPXQsdGhpcy5fc3RyVG9LZXlDb2RlW3QudG9Mb3dlckNhc2UoKV09ZX1rZXlDb2RlVG9TdHIoZSl7cmV0dXJuIHRoaXMuX2tleUNvZGVUb1N0cltlXX1zdHJUb0tleUNvZGUoZSl7cmV0dXJuIHRoaXMuX3N0clRvS2V5Q29kZVtlLnRvTG93ZXJDYXNlKCldfHwwfX1jb25zdCBBdD1uZXcgRXQsTXQ9bmV3IEV0LFJ0PW5ldyBFdCxOdD1uZXcgQXJyYXkoMjMwKSxJdD1PYmplY3QuY3JlYXRlKG51bGwpLFV0PU9iamVjdC5jcmVhdGUobnVsbCk7dmFyIEh0OyFmdW5jdGlvbigpe2NvbnN0IGU9IiIsdD1bWzAsMSwwLCJOb25lIiwwLCJ1bmtub3duIiwwLCJWS19VTktOT1dOIixlLGVdLFswLDEsMSwiSHlwZXIiLDAsZSwwLGUsZSxlXSxbMCwxLDIsIlN1cGVyIiwwLGUsMCxlLGUsZV0sWzAsMSwzLCJGbiIsMCxlLDAsZSxlLGVdLFswLDEsNCwiRm5Mb2NrIiwwLGUsMCxlLGUsZV0sWzAsMSw1LCJTdXNwZW5kIiwwLGUsMCxlLGUsZV0sWzAsMSw2LCJSZXN1bWUiLDAsZSwwLGUsZSxlXSxbMCwxLDcsIlR1cmJvIiwwLGUsMCxlLGUsZV0sWzAsMSw4LCJTbGVlcCIsMCxlLDAsIlZLX1NMRUVQIixlLGVdLFswLDEsOSwiV2FrZVVwIiwwLGUsMCxlLGUsZV0sWzMxLDAsMTAsIktleUEiLDMxLCJBIiw2NSwiVktfQSIsZSxlXSxbMzIsMCwxMSwiS2V5QiIsMzIsIkIiLDY2LCJWS19CIixlLGVdLFszMywwLDEyLCJLZXlDIiwzMywiQyIsNjcsIlZLX0MiLGUsZV0sWzM0LDAsMTMsIktleUQiLDM0LCJEIiw2OCwiVktfRCIsZSxlXSxbMzUsMCwxNCwiS2V5RSIsMzUsIkUiLDY5LCJWS19FIixlLGVdLFszNiwwLDE1LCJLZXlGIiwzNiwiRiIsNzAsIlZLX0YiLGUsZV0sWzM3LDAsMTYsIktleUciLDM3LCJHIiw3MSwiVktfRyIsZSxlXSxbMzgsMCwxNywiS2V5SCIsMzgsIkgiLDcyLCJWS19IIixlLGVdLFszOSwwLDE4LCJLZXlJIiwzOSwiSSIsNzMsIlZLX0kiLGUsZV0sWzQwLDAsMTksIktleUoiLDQwLCJKIiw3NCwiVktfSiIsZSxlXSxbNDEsMCwyMCwiS2V5SyIsNDEsIksiLDc1LCJWS19LIixlLGVdLFs0MiwwLDIxLCJLZXlMIiw0MiwiTCIsNzYsIlZLX0wiLGUsZV0sWzQzLDAsMjIsIktleU0iLDQzLCJNIiw3NywiVktfTSIsZSxlXSxbNDQsMCwyMywiS2V5TiIsNDQsIk4iLDc4LCJWS19OIixlLGVdLFs0NSwwLDI0LCJLZXlPIiw0NSwiTyIsNzksIlZLX08iLGUsZV0sWzQ2LDAsMjUsIktleVAiLDQ2LCJQIiw4MCwiVktfUCIsZSxlXSxbNDcsMCwyNiwiS2V5USIsNDcsIlEiLDgxLCJWS19RIixlLGVdLFs0OCwwLDI3LCJLZXlSIiw0OCwiUiIsODIsIlZLX1IiLGUsZV0sWzQ5LDAsMjgsIktleVMiLDQ5LCJTIiw4MywiVktfUyIsZSxlXSxbNTAsMCwyOSwiS2V5VCIsNTAsIlQiLDg0LCJWS19UIixlLGVdLFs1MSwwLDMwLCJLZXlVIiw1MSwiVSIsODUsIlZLX1UiLGUsZV0sWzUyLDAsMzEsIktleVYiLDUyLCJWIiw4NiwiVktfViIsZSxlXSxbNTMsMCwzMiwiS2V5VyIsNTMsIlciLDg3LCJWS19XIixlLGVdLFs1NCwwLDMzLCJLZXlYIiw1NCwiWCIsODgsIlZLX1giLGUsZV0sWzU1LDAsMzQsIktleVkiLDU1LCJZIiw4OSwiVktfWSIsZSxlXSxbNTYsMCwzNSwiS2V5WiIsNTYsIloiLDkwLCJWS19aIixlLGVdLFsyMiwwLDM2LCJEaWdpdDEiLDIyLCIxIiw0OSwiVktfMSIsZSxlXSxbMjMsMCwzNywiRGlnaXQyIiwyMywiMiIsNTAsIlZLXzIiLGUsZV0sWzI0LDAsMzgsIkRpZ2l0MyIsMjQsIjMiLDUxLCJWS18zIixlLGVdLFsyNSwwLDM5LCJEaWdpdDQiLDI1LCI0Iiw1MiwiVktfNCIsZSxlXSxbMjYsMCw0MCwiRGlnaXQ1IiwyNiwiNSIsNTMsIlZLXzUiLGUsZV0sWzI3LDAsNDEsIkRpZ2l0NiIsMjcsIjYiLDU0LCJWS182IixlLGVdLFsyOCwwLDQyLCJEaWdpdDciLDI4LCI3Iiw1NSwiVktfNyIsZSxlXSxbMjksMCw0MywiRGlnaXQ4IiwyOSwiOCIsNTYsIlZLXzgiLGUsZV0sWzMwLDAsNDQsIkRpZ2l0OSIsMzAsIjkiLDU3LCJWS185IixlLGVdLFsyMSwwLDQ1LCJEaWdpdDAiLDIxLCIwIiw0OCwiVktfMCIsZSxlXSxbMywxLDQ2LCJFbnRlciIsMywiRW50ZXIiLDEzLCJWS19SRVRVUk4iLGUsZV0sWzksMSw0NywiRXNjYXBlIiw5LCJFc2NhcGUiLDI3LCJWS19FU0NBUEUiLGUsZV0sWzEsMSw0OCwiQmFja3NwYWNlIiwxLCJCYWNrc3BhY2UiLDgsIlZLX0JBQ0siLGUsZV0sWzIsMSw0OSwiVGFiIiwyLCJUYWIiLDksIlZLX1RBQiIsZSxlXSxbMTAsMSw1MCwiU3BhY2UiLDEwLCJTcGFjZSIsMzIsIlZLX1NQQUNFIixlLGVdLFs4MywwLDUxLCJNaW51cyIsODMsIi0iLDE4OSwiVktfT0VNX01JTlVTIiwiLSIsIk9FTV9NSU5VUyJdLFs4MSwwLDUyLCJFcXVhbCIsODEsIj0iLDE4NywiVktfT0VNX1BMVVMiLCI9IiwiT0VNX1BMVVMiXSxbODcsMCw1MywiQnJhY2tldExlZnQiLDg3LCJbIiwyMTksIlZLX09FTV80IiwiWyIsIk9FTV80Il0sWzg5LDAsNTQsIkJyYWNrZXRSaWdodCIsODksIl0iLDIyMSwiVktfT0VNXzYiLCJdIiwiT0VNXzYiXSxbODgsMCw1NSwiQmFja3NsYXNoIiw4OCwiXFwiLDIyMCwiVktfT0VNXzUiLCJcXCIsIk9FTV81Il0sWzAsMCw1NiwiSW50bEhhc2giLDAsZSwwLGUsZSxlXSxbODAsMCw1NywiU2VtaWNvbG9uIiw4MCwiOyIsMTg2LCJWS19PRU1fMSIsIjsiLCJPRU1fMSJdLFs5MCwwLDU4LCJRdW90ZSIsOTAsIiciLDIyMiwiVktfT0VNXzciLCInIiwiT0VNXzciXSxbODYsMCw1OSwiQmFja3F1b3RlIiw4NiwiYCIsMTkyLCJWS19PRU1fMyIsImAiLCJPRU1fMyJdLFs4MiwwLDYwLCJDb21tYSIsODIsIiwiLDE4OCwiVktfT0VNX0NPTU1BIiwiLCIsIk9FTV9DT01NQSJdLFs4NCwwLDYxLCJQZXJpb2QiLDg0LCIuIiwxOTAsIlZLX09FTV9QRVJJT0QiLCIuIiwiT0VNX1BFUklPRCJdLFs4NSwwLDYyLCJTbGFzaCIsODUsIi8iLDE5MSwiVktfT0VNXzIiLCIvIiwiT0VNXzIiXSxbOCwxLDYzLCJDYXBzTG9jayIsOCwiQ2Fwc0xvY2siLDIwLCJWS19DQVBJVEFMIixlLGVdLFs1OSwxLDY0LCJGMSIsNTksIkYxIiwxMTIsIlZLX0YxIixlLGVdLFs2MCwxLDY1LCJGMiIsNjAsIkYyIiwxMTMsIlZLX0YyIixlLGVdLFs2MSwxLDY2LCJGMyIsNjEsIkYzIiwxMTQsIlZLX0YzIixlLGVdLFs2MiwxLDY3LCJGNCIsNjIsIkY0IiwxMTUsIlZLX0Y0IixlLGVdLFs2MywxLDY4LCJGNSIsNjMsIkY1IiwxMTYsIlZLX0Y1IixlLGVdLFs2NCwxLDY5LCJGNiIsNjQsIkY2IiwxMTcsIlZLX0Y2IixlLGVdLFs2NSwxLDcwLCJGNyIsNjUsIkY3IiwxMTgsIlZLX0Y3IixlLGVdLFs2NiwxLDcxLCJGOCIsNjYsIkY4IiwxMTksIlZLX0Y4IixlLGVdLFs2NywxLDcyLCJGOSIsNjcsIkY5IiwxMjAsIlZLX0Y5IixlLGVdLFs2OCwxLDczLCJGMTAiLDY4LCJGMTAiLDEyMSwiVktfRjEwIixlLGVdLFs2OSwxLDc0LCJGMTEiLDY5LCJGMTEiLDEyMiwiVktfRjExIixlLGVdLFs3MCwxLDc1LCJGMTIiLDcwLCJGMTIiLDEyMywiVktfRjEyIixlLGVdLFswLDEsNzYsIlByaW50U2NyZWVuIiwwLGUsMCxlLGUsZV0sWzc5LDEsNzcsIlNjcm9sbExvY2siLDc5LCJTY3JvbGxMb2NrIiwxNDUsIlZLX1NDUk9MTCIsZSxlXSxbNywxLDc4LCJQYXVzZSIsNywiUGF1c2VCcmVhayIsMTksIlZLX1BBVVNFIixlLGVdLFsxOSwxLDc5LCJJbnNlcnQiLDE5LCJJbnNlcnQiLDQ1LCJWS19JTlNFUlQiLGUsZV0sWzE0LDEsODAsIkhvbWUiLDE0LCJIb21lIiwzNiwiVktfSE9NRSIsZSxlXSxbMTEsMSw4MSwiUGFnZVVwIiwxMSwiUGFnZVVwIiwzMywiVktfUFJJT1IiLGUsZV0sWzIwLDEsODIsIkRlbGV0ZSIsMjAsIkRlbGV0ZSIsNDYsIlZLX0RFTEVURSIsZSxlXSxbMTMsMSw4MywiRW5kIiwxMywiRW5kIiwzNSwiVktfRU5EIixlLGVdLFsxMiwxLDg0LCJQYWdlRG93biIsMTIsIlBhZ2VEb3duIiwzNCwiVktfTkVYVCIsZSxlXSxbMTcsMSw4NSwiQXJyb3dSaWdodCIsMTcsIlJpZ2h0QXJyb3ciLDM5LCJWS19SSUdIVCIsIlJpZ2h0IixlXSxbMTUsMSw4NiwiQXJyb3dMZWZ0IiwxNSwiTGVmdEFycm93IiwzNywiVktfTEVGVCIsIkxlZnQiLGVdLFsxOCwxLDg3LCJBcnJvd0Rvd24iLDE4LCJEb3duQXJyb3ciLDQwLCJWS19ET1dOIiwiRG93biIsZV0sWzE2LDEsODgsIkFycm93VXAiLDE2LCJVcEFycm93IiwzOCwiVktfVVAiLCJVcCIsZV0sWzc4LDEsODksIk51bUxvY2siLDc4LCJOdW1Mb2NrIiwxNDQsIlZLX05VTUxPQ0siLGUsZV0sWzEwOCwxLDkwLCJOdW1wYWREaXZpZGUiLDEwOCwiTnVtUGFkX0RpdmlkZSIsMTExLCJWS19ESVZJREUiLGUsZV0sWzEwMywxLDkxLCJOdW1wYWRNdWx0aXBseSIsMTAzLCJOdW1QYWRfTXVsdGlwbHkiLDEwNiwiVktfTVVMVElQTFkiLGUsZV0sWzEwNiwxLDkyLCJOdW1wYWRTdWJ0cmFjdCIsMTA2LCJOdW1QYWRfU3VidHJhY3QiLDEwOSwiVktfU1VCVFJBQ1QiLGUsZV0sWzEwNCwxLDkzLCJOdW1wYWRBZGQiLDEwNCwiTnVtUGFkX0FkZCIsMTA3LCJWS19BREQiLGUsZV0sWzMsMSw5NCwiTnVtcGFkRW50ZXIiLDMsZSwwLGUsZSxlXSxbOTQsMSw5NSwiTnVtcGFkMSIsOTQsIk51bVBhZDEiLDk3LCJWS19OVU1QQUQxIixlLGVdLFs5NSwxLDk2LCJOdW1wYWQyIiw5NSwiTnVtUGFkMiIsOTgsIlZLX05VTVBBRDIiLGUsZV0sWzk2LDEsOTcsIk51bXBhZDMiLDk2LCJOdW1QYWQzIiw5OSwiVktfTlVNUEFEMyIsZSxlXSxbOTcsMSw5OCwiTnVtcGFkNCIsOTcsIk51bVBhZDQiLDEwMCwiVktfTlVNUEFENCIsZSxlXSxbOTgsMSw5OSwiTnVtcGFkNSIsOTgsIk51bVBhZDUiLDEwMSwiVktfTlVNUEFENSIsZSxlXSxbOTksMSwxMDAsIk51bXBhZDYiLDk5LCJOdW1QYWQ2IiwxMDIsIlZLX05VTVBBRDYiLGUsZV0sWzEwMCwxLDEwMSwiTnVtcGFkNyIsMTAwLCJOdW1QYWQ3IiwxMDMsIlZLX05VTVBBRDciLGUsZV0sWzEwMSwxLDEwMiwiTnVtcGFkOCIsMTAxLCJOdW1QYWQ4IiwxMDQsIlZLX05VTVBBRDgiLGUsZV0sWzEwMiwxLDEwMywiTnVtcGFkOSIsMTAyLCJOdW1QYWQ5IiwxMDUsIlZLX05VTVBBRDkiLGUsZV0sWzkzLDEsMTA0LCJOdW1wYWQwIiw5MywiTnVtUGFkMCIsOTYsIlZLX05VTVBBRDAiLGUsZV0sWzEwNywxLDEwNSwiTnVtcGFkRGVjaW1hbCIsMTA3LCJOdW1QYWRfRGVjaW1hbCIsMTEwLCJWS19ERUNJTUFMIixlLGVdLFs5MiwwLDEwNiwiSW50bEJhY2tzbGFzaCIsOTIsIk9FTV8xMDIiLDIyNiwiVktfT0VNXzEwMiIsZSxlXSxbNTgsMSwxMDcsIkNvbnRleHRNZW51Iiw1OCwiQ29udGV4dE1lbnUiLDkzLGUsZSxlXSxbMCwxLDEwOCwiUG93ZXIiLDAsZSwwLGUsZSxlXSxbMCwxLDEwOSwiTnVtcGFkRXF1YWwiLDAsZSwwLGUsZSxlXSxbNzEsMSwxMTAsIkYxMyIsNzEsIkYxMyIsMTI0LCJWS19GMTMiLGUsZV0sWzcyLDEsMTExLCJGMTQiLDcyLCJGMTQiLDEyNSwiVktfRjE0IixlLGVdLFs3MywxLDExMiwiRjE1Iiw3MywiRjE1IiwxMjYsIlZLX0YxNSIsZSxlXSxbNzQsMSwxMTMsIkYxNiIsNzQsIkYxNiIsMTI3LCJWS19GMTYiLGUsZV0sWzc1LDEsMTE0LCJGMTciLDc1LCJGMTciLDEyOCwiVktfRjE3IixlLGVdLFs3NiwxLDExNSwiRjE4Iiw3NiwiRjE4IiwxMjksIlZLX0YxOCIsZSxlXSxbNzcsMSwxMTYsIkYxOSIsNzcsIkYxOSIsMTMwLCJWS19GMTkiLGUsZV0sWzAsMSwxMTcsIkYyMCIsMCxlLDAsIlZLX0YyMCIsZSxlXSxbMCwxLDExOCwiRjIxIiwwLGUsMCwiVktfRjIxIixlLGVdLFswLDEsMTE5LCJGMjIiLDAsZSwwLCJWS19GMjIiLGUsZV0sWzAsMSwxMjAsIkYyMyIsMCxlLDAsIlZLX0YyMyIsZSxlXSxbMCwxLDEyMSwiRjI0IiwwLGUsMCwiVktfRjI0IixlLGVdLFswLDEsMTIyLCJPcGVuIiwwLGUsMCxlLGUsZV0sWzAsMSwxMjMsIkhlbHAiLDAsZSwwLGUsZSxlXSxbMCwxLDEyNCwiU2VsZWN0IiwwLGUsMCxlLGUsZV0sWzAsMSwxMjUsIkFnYWluIiwwLGUsMCxlLGUsZV0sWzAsMSwxMjYsIlVuZG8iLDAsZSwwLGUsZSxlXSxbMCwxLDEyNywiQ3V0IiwwLGUsMCxlLGUsZV0sWzAsMSwxMjgsIkNvcHkiLDAsZSwwLGUsZSxlXSxbMCwxLDEyOSwiUGFzdGUiLDAsZSwwLGUsZSxlXSxbMCwxLDEzMCwiRmluZCIsMCxlLDAsZSxlLGVdLFswLDEsMTMxLCJBdWRpb1ZvbHVtZU11dGUiLDExMiwiQXVkaW9Wb2x1bWVNdXRlIiwxNzMsIlZLX1ZPTFVNRV9NVVRFIixlLGVdLFswLDEsMTMyLCJBdWRpb1ZvbHVtZVVwIiwxMTMsIkF1ZGlvVm9sdW1lVXAiLDE3NSwiVktfVk9MVU1FX1VQIixlLGVdLFswLDEsMTMzLCJBdWRpb1ZvbHVtZURvd24iLDExNCwiQXVkaW9Wb2x1bWVEb3duIiwxNzQsIlZLX1ZPTFVNRV9ET1dOIixlLGVdLFsxMDUsMSwxMzQsIk51bXBhZENvbW1hIiwxMDUsIk51bVBhZF9TZXBhcmF0b3IiLDEwOCwiVktfU0VQQVJBVE9SIixlLGVdLFsxMTAsMCwxMzUsIkludGxSbyIsMTEwLCJBQk5UX0MxIiwxOTMsIlZLX0FCTlRfQzEiLGUsZV0sWzAsMSwxMzYsIkthbmFNb2RlIiwwLGUsMCxlLGUsZV0sWzAsMCwxMzcsIkludGxZZW4iLDAsZSwwLGUsZSxlXSxbMCwxLDEzOCwiQ29udmVydCIsMCxlLDAsZSxlLGVdLFswLDEsMTM5LCJOb25Db252ZXJ0IiwwLGUsMCxlLGUsZV0sWzAsMSwxNDAsIkxhbmcxIiwwLGUsMCxlLGUsZV0sWzAsMSwxNDEsIkxhbmcyIiwwLGUsMCxlLGUsZV0sWzAsMSwxNDIsIkxhbmczIiwwLGUsMCxlLGUsZV0sWzAsMSwxNDMsIkxhbmc0IiwwLGUsMCxlLGUsZV0sWzAsMSwxNDQsIkxhbmc1IiwwLGUsMCxlLGUsZV0sWzAsMSwxNDUsIkFib3J0IiwwLGUsMCxlLGUsZV0sWzAsMSwxNDYsIlByb3BzIiwwLGUsMCxlLGUsZV0sWzAsMSwxNDcsIk51bXBhZFBhcmVuTGVmdCIsMCxlLDAsZSxlLGVdLFswLDEsMTQ4LCJOdW1wYWRQYXJlblJpZ2h0IiwwLGUsMCxlLGUsZV0sWzAsMSwxNDksIk51bXBhZEJhY2tzcGFjZSIsMCxlLDAsZSxlLGVdLFswLDEsMTUwLCJOdW1wYWRNZW1vcnlTdG9yZSIsMCxlLDAsZSxlLGVdLFswLDEsMTUxLCJOdW1wYWRNZW1vcnlSZWNhbGwiLDAsZSwwLGUsZSxlXSxbMCwxLDE1MiwiTnVtcGFkTWVtb3J5Q2xlYXIiLDAsZSwwLGUsZSxlXSxbMCwxLDE1MywiTnVtcGFkTWVtb3J5QWRkIiwwLGUsMCxlLGUsZV0sWzAsMSwxNTQsIk51bXBhZE1lbW9yeVN1YnRyYWN0IiwwLGUsMCxlLGUsZV0sWzAsMSwxNTUsIk51bXBhZENsZWFyIiwxMjYsIkNsZWFyIiwxMiwiVktfQ0xFQVIiLGUsZV0sWzAsMSwxNTYsIk51bXBhZENsZWFyRW50cnkiLDAsZSwwLGUsZSxlXSxbNSwxLDAsZSw1LCJDdHJsIiwxNywiVktfQ09OVFJPTCIsZSxlXSxbNCwxLDAsZSw0LCJTaGlmdCIsMTYsIlZLX1NISUZUIixlLGVdLFs2LDEsMCxlLDYsIkFsdCIsMTgsIlZLX01FTlUiLGUsZV0sWzU3LDEsMCxlLDU3LCJNZXRhIiwwLCJWS19DT01NQU5EIixlLGVdLFs1LDEsMTU3LCJDb250cm9sTGVmdCIsNSxlLDAsIlZLX0xDT05UUk9MIixlLGVdLFs0LDEsMTU4LCJTaGlmdExlZnQiLDQsZSwwLCJWS19MU0hJRlQiLGUsZV0sWzYsMSwxNTksIkFsdExlZnQiLDYsZSwwLCJWS19MTUVOVSIsZSxlXSxbNTcsMSwxNjAsIk1ldGFMZWZ0Iiw1NyxlLDAsIlZLX0xXSU4iLGUsZV0sWzUsMSwxNjEsIkNvbnRyb2xSaWdodCIsNSxlLDAsIlZLX1JDT05UUk9MIixlLGVdLFs0LDEsMTYyLCJTaGlmdFJpZ2h0Iiw0LGUsMCwiVktfUlNISUZUIixlLGVdLFs2LDEsMTYzLCJBbHRSaWdodCIsNixlLDAsIlZLX1JNRU5VIixlLGVdLFs1NywxLDE2NCwiTWV0YVJpZ2h0Iiw1NyxlLDAsIlZLX1JXSU4iLGUsZV0sWzAsMSwxNjUsIkJyaWdodG5lc3NVcCIsMCxlLDAsZSxlLGVdLFswLDEsMTY2LCJCcmlnaHRuZXNzRG93biIsMCxlLDAsZSxlLGVdLFswLDEsMTY3LCJNZWRpYVBsYXkiLDAsZSwwLGUsZSxlXSxbMCwxLDE2OCwiTWVkaWFSZWNvcmQiLDAsZSwwLGUsZSxlXSxbMCwxLDE2OSwiTWVkaWFGYXN0Rm9yd2FyZCIsMCxlLDAsZSxlLGVdLFswLDEsMTcwLCJNZWRpYVJld2luZCIsMCxlLDAsZSxlLGVdLFsxMTQsMSwxNzEsIk1lZGlhVHJhY2tOZXh0IiwxMTksIk1lZGlhVHJhY2tOZXh0IiwxNzYsIlZLX01FRElBX05FWFRfVFJBQ0siLGUsZV0sWzExNSwxLDE3MiwiTWVkaWFUcmFja1ByZXZpb3VzIiwxMjAsIk1lZGlhVHJhY2tQcmV2aW91cyIsMTc3LCJWS19NRURJQV9QUkVWX1RSQUNLIixlLGVdLFsxMTYsMSwxNzMsIk1lZGlhU3RvcCIsMTIxLCJNZWRpYVN0b3AiLDE3OCwiVktfTUVESUFfU1RPUCIsZSxlXSxbMCwxLDE3NCwiRWplY3QiLDAsZSwwLGUsZSxlXSxbMTE3LDEsMTc1LCJNZWRpYVBsYXlQYXVzZSIsMTIyLCJNZWRpYVBsYXlQYXVzZSIsMTc5LCJWS19NRURJQV9QTEFZX1BBVVNFIixlLGVdLFswLDEsMTc2LCJNZWRpYVNlbGVjdCIsMTIzLCJMYXVuY2hNZWRpYVBsYXllciIsMTgxLCJWS19NRURJQV9MQVVOQ0hfTUVESUFfU0VMRUNUIixlLGVdLFswLDEsMTc3LCJMYXVuY2hNYWlsIiwxMjQsIkxhdW5jaE1haWwiLDE4MCwiVktfTUVESUFfTEFVTkNIX01BSUwiLGUsZV0sWzAsMSwxNzgsIkxhdW5jaEFwcDIiLDEyNSwiTGF1bmNoQXBwMiIsMTgzLCJWS19NRURJQV9MQVVOQ0hfQVBQMiIsZSxlXSxbMCwxLDE3OSwiTGF1bmNoQXBwMSIsMCxlLDAsIlZLX01FRElBX0xBVU5DSF9BUFAxIixlLGVdLFswLDEsMTgwLCJTZWxlY3RUYXNrIiwwLGUsMCxlLGUsZV0sWzAsMSwxODEsIkxhdW5jaFNjcmVlblNhdmVyIiwwLGUsMCxlLGUsZV0sWzAsMSwxODIsIkJyb3dzZXJTZWFyY2giLDExNSwiQnJvd3NlclNlYXJjaCIsMTcwLCJWS19CUk9XU0VSX1NFQVJDSCIsZSxlXSxbMCwxLDE4MywiQnJvd3NlckhvbWUiLDExNiwiQnJvd3NlckhvbWUiLDE3MiwiVktfQlJPV1NFUl9IT01FIixlLGVdLFsxMTIsMSwxODQsIkJyb3dzZXJCYWNrIiwxMTcsIkJyb3dzZXJCYWNrIiwxNjYsIlZLX0JST1dTRVJfQkFDSyIsZSxlXSxbMTEzLDEsMTg1LCJCcm93c2VyRm9yd2FyZCIsMTE4LCJCcm93c2VyRm9yd2FyZCIsMTY3LCJWS19CUk9XU0VSX0ZPUldBUkQiLGUsZV0sWzAsMSwxODYsIkJyb3dzZXJTdG9wIiwwLGUsMCwiVktfQlJPV1NFUl9TVE9QIixlLGVdLFswLDEsMTg3LCJCcm93c2VyUmVmcmVzaCIsMCxlLDAsIlZLX0JST1dTRVJfUkVGUkVTSCIsZSxlXSxbMCwxLDE4OCwiQnJvd3NlckZhdm9yaXRlcyIsMCxlLDAsIlZLX0JST1dTRVJfRkFWT1JJVEVTIixlLGVdLFswLDEsMTg5LCJab29tVG9nZ2xlIiwwLGUsMCxlLGUsZV0sWzAsMSwxOTAsIk1haWxSZXBseSIsMCxlLDAsZSxlLGVdLFswLDEsMTkxLCJNYWlsRm9yd2FyZCIsMCxlLDAsZSxlLGVdLFswLDEsMTkyLCJNYWlsU2VuZCIsMCxlLDAsZSxlLGVdLFsxMDksMSwwLGUsMTA5LCJLZXlJbkNvbXBvc2l0aW9uIiwyMjksZSxlLGVdLFsxMTEsMSwwLGUsMTExLCJBQk5UX0MyIiwxOTQsIlZLX0FCTlRfQzIiLGUsZV0sWzkxLDEsMCxlLDkxLCJPRU1fOCIsMjIzLCJWS19PRU1fOCIsZSxlXSxbMCwxLDAsZSwwLGUsMCwiVktfS0FOQSIsZSxlXSxbMCwxLDAsZSwwLGUsMCwiVktfSEFOR1VMIixlLGVdLFswLDEsMCxlLDAsZSwwLCJWS19KVU5KQSIsZSxlXSxbMCwxLDAsZSwwLGUsMCwiVktfRklOQUwiLGUsZV0sWzAsMSwwLGUsMCxlLDAsIlZLX0hBTkpBIixlLGVdLFswLDEsMCxlLDAsZSwwLCJWS19LQU5KSSIsZSxlXSxbMCwxLDAsZSwwLGUsMCwiVktfQ09OVkVSVCIsZSxlXSxbMCwxLDAsZSwwLGUsMCwiVktfTk9OQ09OVkVSVCIsZSxlXSxbMCwxLDAsZSwwLGUsMCwiVktfQUNDRVBUIixlLGVdLFswLDEsMCxlLDAsZSwwLCJWS19NT0RFQ0hBTkdFIixlLGVdLFswLDEsMCxlLDAsZSwwLCJWS19TRUxFQ1QiLGUsZV0sWzAsMSwwLGUsMCxlLDAsIlZLX1BSSU5UIixlLGVdLFswLDEsMCxlLDAsZSwwLCJWS19FWEVDVVRFIixlLGVdLFswLDEsMCxlLDAsZSwwLCJWS19TTkFQU0hPVCIsZSxlXSxbMCwxLDAsZSwwLGUsMCwiVktfSEVMUCIsZSxlXSxbMCwxLDAsZSwwLGUsMCwiVktfQVBQUyIsZSxlXSxbMCwxLDAsZSwwLGUsMCwiVktfUFJPQ0VTU0tFWSIsZSxlXSxbMCwxLDAsZSwwLGUsMCwiVktfUEFDS0VUIixlLGVdLFswLDEsMCxlLDAsZSwwLCJWS19EQkVfU0JDU0NIQVIiLGUsZV0sWzAsMSwwLGUsMCxlLDAsIlZLX0RCRV9EQkNTQ0hBUiIsZSxlXSxbMCwxLDAsZSwwLGUsMCwiVktfQVRUTiIsZSxlXSxbMCwxLDAsZSwwLGUsMCwiVktfQ1JTRUwiLGUsZV0sWzAsMSwwLGUsMCxlLDAsIlZLX0VYU0VMIixlLGVdLFswLDEsMCxlLDAsZSwwLCJWS19FUkVPRiIsZSxlXSxbMCwxLDAsZSwwLGUsMCwiVktfUExBWSIsZSxlXSxbMCwxLDAsZSwwLGUsMCwiVktfWk9PTSIsZSxlXSxbMCwxLDAsZSwwLGUsMCwiVktfTk9OQU1FIixlLGVdLFswLDEsMCxlLDAsZSwwLCJWS19QQTEiLGUsZV0sWzAsMSwwLGUsMCxlLDAsIlZLX09FTV9DTEVBUiIsZSxlXV07bGV0IG49W10scj1bXTtmb3IoY29uc3QgZSBvZiB0KXtjb25zdFt0LGksYSxvLHMsbCxjLGgsZCx1XT1lO2lmKHJbYV18fChyW2FdPSEwLEl0W29dPWEsVXRbby50b0xvd2VyQ2FzZSgpXT1hKSwhbltzXSl7aWYobltzXT0hMCwhbCl0aHJvdyBuZXcgRXJyb3IoYFN0cmluZyByZXByZXNlbnRhdGlvbiBtaXNzaW5nIGZvciBrZXkgY29kZSAke3N9IGFyb3VuZCBzY2FuIGNvZGUgJHtvfWApO0F0LmRlZmluZShzLGwpLE10LmRlZmluZShzLGR8fGwpLFJ0LmRlZmluZShzLHV8fGR8fGwpfWMmJihOdFtjXT1zKX19KCksZnVuY3Rpb24oZSl7ZS50b1N0cmluZz1mdW5jdGlvbihlKXtyZXR1cm4gQXQua2V5Q29kZVRvU3RyKGUpfSxlLmZyb21TdHJpbmc9ZnVuY3Rpb24oZSl7cmV0dXJuIEF0LnN0clRvS2V5Q29kZShlKX0sZS50b1VzZXJTZXR0aW5nc1VTPWZ1bmN0aW9uKGUpe3JldHVybiBNdC5rZXlDb2RlVG9TdHIoZSl9LGUudG9Vc2VyU2V0dGluZ3NHZW5lcmFsPWZ1bmN0aW9uKGUpe3JldHVybiBSdC5rZXlDb2RlVG9TdHIoZSl9LGUuZnJvbVVzZXJTZXR0aW5ncz1mdW5jdGlvbihlKXtyZXR1cm4gTXQuc3RyVG9LZXlDb2RlKGUpfHxSdC5zdHJUb0tleUNvZGUoZSl9LGUudG9FbGVjdHJvbkFjY2VsZXJhdG9yPWZ1bmN0aW9uKGUpe2lmKGU+PTkzJiZlPD0xMDgpcmV0dXJuIG51bGw7c3dpdGNoKGUpe2Nhc2UgMTY6cmV0dXJuIlVwIjtjYXNlIDE4OnJldHVybiJEb3duIjtjYXNlIDE1OnJldHVybiJMZWZ0IjtjYXNlIDE3OnJldHVybiJSaWdodCJ9cmV0dXJuIEF0LmtleUNvZGVUb1N0cihlKX19KEh0fHwoSHQ9e30pKTtjbGFzcyBEdCBleHRlbmRzIFple2NvbnN0cnVjdG9yKGUsdCxuLHIpe3N1cGVyKGUsdCxuLHIpLHRoaXMuc2VsZWN0aW9uU3RhcnRMaW5lTnVtYmVyPWUsdGhpcy5zZWxlY3Rpb25TdGFydENvbHVtbj10LHRoaXMucG9zaXRpb25MaW5lTnVtYmVyPW4sdGhpcy5wb3NpdGlvbkNvbHVtbj1yfXRvU3RyaW5nKCl7cmV0dXJuIlsiK3RoaXMuc2VsZWN0aW9uU3RhcnRMaW5lTnVtYmVyKyIsIit0aGlzLnNlbGVjdGlvblN0YXJ0Q29sdW1uKyIgLT4gIit0aGlzLnBvc2l0aW9uTGluZU51bWJlcisiLCIrdGhpcy5wb3NpdGlvbkNvbHVtbisiXSJ9ZXF1YWxzU2VsZWN0aW9uKGUpe3JldHVybiBEdC5zZWxlY3Rpb25zRXF1YWwodGhpcyxlKX1zdGF0aWMgc2VsZWN0aW9uc0VxdWFsKGUsdCl7cmV0dXJuIGUuc2VsZWN0aW9uU3RhcnRMaW5lTnVtYmVyPT09dC5zZWxlY3Rpb25TdGFydExpbmVOdW1iZXImJmUuc2VsZWN0aW9uU3RhcnRDb2x1bW49PT10LnNlbGVjdGlvblN0YXJ0Q29sdW1uJiZlLnBvc2l0aW9uTGluZU51bWJlcj09PXQucG9zaXRpb25MaW5lTnVtYmVyJiZlLnBvc2l0aW9uQ29sdW1uPT09dC5wb3NpdGlvbkNvbHVtbn1nZXREaXJlY3Rpb24oKXtyZXR1cm4gdGhpcy5zZWxlY3Rpb25TdGFydExpbmVOdW1iZXI9PT10aGlzLnN0YXJ0TGluZU51bWJlciYmdGhpcy5zZWxlY3Rpb25TdGFydENvbHVtbj09PXRoaXMuc3RhcnRDb2x1bW4/MDoxfXNldEVuZFBvc2l0aW9uKGUsdCl7cmV0dXJuIDA9PT10aGlzLmdldERpcmVjdGlvbigpP25ldyBEdCh0aGlzLnN0YXJ0TGluZU51bWJlcix0aGlzLnN0YXJ0Q29sdW1uLGUsdCk6bmV3IER0KGUsdCx0aGlzLnN0YXJ0TGluZU51bWJlcix0aGlzLnN0YXJ0Q29sdW1uKX1nZXRQb3NpdGlvbigpe3JldHVybiBuZXcgUWUodGhpcy5wb3NpdGlvbkxpbmVOdW1iZXIsdGhpcy5wb3NpdGlvbkNvbHVtbil9Z2V0U2VsZWN0aW9uU3RhcnQoKXtyZXR1cm4gbmV3IFFlKHRoaXMuc2VsZWN0aW9uU3RhcnRMaW5lTnVtYmVyLHRoaXMuc2VsZWN0aW9uU3RhcnRDb2x1bW4pfXNldFN0YXJ0UG9zaXRpb24oZSx0KXtyZXR1cm4gMD09PXRoaXMuZ2V0RGlyZWN0aW9uKCk/bmV3IER0KGUsdCx0aGlzLmVuZExpbmVOdW1iZXIsdGhpcy5lbmRDb2x1bW4pOm5ldyBEdCh0aGlzLmVuZExpbmVOdW1iZXIsdGhpcy5lbmRDb2x1bW4sZSx0KX1zdGF0aWMgZnJvbVBvc2l0aW9ucyhlLHQ9ZSl7cmV0dXJuIG5ldyBEdChlLmxpbmVOdW1iZXIsZS5jb2x1bW4sdC5saW5lTnVtYmVyLHQuY29sdW1uKX1zdGF0aWMgZnJvbVJhbmdlKGUsdCl7cmV0dXJuIDA9PT10P25ldyBEdChlLnN0YXJ0TGluZU51bWJlcixlLnN0YXJ0Q29sdW1uLGUuZW5kTGluZU51bWJlcixlLmVuZENvbHVtbik6bmV3IER0KGUuZW5kTGluZU51bWJlcixlLmVuZENvbHVtbixlLnN0YXJ0TGluZU51bWJlcixlLnN0YXJ0Q29sdW1uKX1zdGF0aWMgbGlmdFNlbGVjdGlvbihlKXtyZXR1cm4gbmV3IER0KGUuc2VsZWN0aW9uU3RhcnRMaW5lTnVtYmVyLGUuc2VsZWN0aW9uU3RhcnRDb2x1bW4sZS5wb3NpdGlvbkxpbmVOdW1iZXIsZS5wb3NpdGlvbkNvbHVtbil9c3RhdGljIHNlbGVjdGlvbnNBcnJFcXVhbChlLHQpe2lmKGUmJiF0fHwhZSYmdClyZXR1cm4hMTtpZighZSYmIXQpcmV0dXJuITA7aWYoZS5sZW5ndGghPT10Lmxlbmd0aClyZXR1cm4hMTtmb3IobGV0IG49MCxyPWUubGVuZ3RoO248cjtuKyspaWYoIXRoaXMuc2VsZWN0aW9uc0VxdWFsKGVbbl0sdFtuXSkpcmV0dXJuITE7cmV0dXJuITB9c3RhdGljIGlzSVNlbGVjdGlvbihlKXtyZXR1cm4gZSYmIm51bWJlciI9PXR5cGVvZiBlLnNlbGVjdGlvblN0YXJ0TGluZU51bWJlciYmIm51bWJlciI9PXR5cGVvZiBlLnNlbGVjdGlvblN0YXJ0Q29sdW1uJiYibnVtYmVyIj09dHlwZW9mIGUucG9zaXRpb25MaW5lTnVtYmVyJiYibnVtYmVyIj09dHlwZW9mIGUucG9zaXRpb25Db2x1bW59c3RhdGljIGNyZWF0ZVdpdGhEaXJlY3Rpb24oZSx0LG4scixpKXtyZXR1cm4gMD09PWk/bmV3IER0KGUsdCxuLHIpOm5ldyBEdChuLHIsZSx0KX19dmFyIHp0LFd0LE90LFB0LHF0LEZ0LEJ0LFZ0LEt0LGp0LEd0LCR0LEp0LFh0LFl0LFF0LFp0LGVuLHRuLG5uLHJuLGFuLG9uLHNuLGxuLGNuLGhuLGRuLHVuLHBuLG1uLGZuLGduLGJuLHduLF9uLHZuLHluLFRuLGtuLFNuLENuLHhuLExuLEVuLEFuLE1uLFJuLE5uLEluLFVuLEhuLERuLHpuLFduLE9uLFBuLHFuLEZuLEJuLFZuLEtuLGpuLEduLCRuLEpuLFhuPWZ1bmN0aW9uKGUsdCxuLHIpe3JldHVybiBuZXcobnx8KG49UHJvbWlzZSkpKChmdW5jdGlvbihpLGEpe2Z1bmN0aW9uIG8oZSl7dHJ5e2woci5uZXh0KGUpKX1jYXRjaChlKXthKGUpfX1mdW5jdGlvbiBzKGUpe3RyeXtsKHIudGhyb3coZSkpfWNhdGNoKGUpe2EoZSl9fWZ1bmN0aW9uIGwoZSl7dmFyIHQ7ZS5kb25lP2koZS52YWx1ZSk6KHQ9ZS52YWx1ZSx0IGluc3RhbmNlb2Ygbj90Om5ldyBuKChmdW5jdGlvbihlKXtlKHQpfSkpKS50aGVuKG8scyl9bCgocj1yLmFwcGx5KGUsdHx8W10pKS5uZXh0KCkpfSkpfTtjbGFzcyBZbiBleHRlbmRzIHB7Y29uc3RydWN0b3IoZSx0LG4pe3N1cGVyKCksdGhpcy5fcmVnaXN0cnk9ZSx0aGlzLl9sYW5ndWFnZUlkPXQsdGhpcy5fZmFjdG9yeT1uLHRoaXMuX2lzRGlzcG9zZWQ9ITEsdGhpcy5fcmVzb2x2ZVByb21pc2U9bnVsbCx0aGlzLl9pc1Jlc29sdmVkPSExfWdldCBpc1Jlc29sdmVkKCl7cmV0dXJuIHRoaXMuX2lzUmVzb2x2ZWR9ZGlzcG9zZSgpe3RoaXMuX2lzRGlzcG9zZWQ9ITAsc3VwZXIuZGlzcG9zZSgpfXJlc29sdmUoKXtyZXR1cm4gWG4odGhpcyx2b2lkIDAsdm9pZCAwLChmdW5jdGlvbiooKXtyZXR1cm4gdGhpcy5fcmVzb2x2ZVByb21pc2V8fCh0aGlzLl9yZXNvbHZlUHJvbWlzZT10aGlzLl9jcmVhdGUoKSksdGhpcy5fcmVzb2x2ZVByb21pc2V9KSl9X2NyZWF0ZSgpe3JldHVybiBYbih0aGlzLHZvaWQgMCx2b2lkIDAsKGZ1bmN0aW9uKigpe2NvbnN0IGU9eWllbGQgUHJvbWlzZS5yZXNvbHZlKHRoaXMuX2ZhY3RvcnkuY3JlYXRlVG9rZW5pemF0aW9uU3VwcG9ydCgpKTt0aGlzLl9pc1Jlc29sdmVkPSEwLGUmJiF0aGlzLl9pc0Rpc3Bvc2VkJiZ0aGlzLl9yZWdpc3Rlcih0aGlzLl9yZWdpc3RyeS5yZWdpc3Rlcih0aGlzLl9sYW5ndWFnZUlkLGUpKX0pKX19Y2xhc3MgUW57Y29uc3RydWN0b3IoZSx0LG4pe3RoaXMuaWQ9ZSx0aGlzLmRlZmluaXRpb249dCx0aGlzLmRlc2NyaXB0aW9uPW4sUW4uX2FsbENvZGljb25zLnB1c2godGhpcyl9Z2V0IGNsYXNzTmFtZXMoKXtyZXR1cm4iY29kaWNvbiBjb2RpY29uLSIrdGhpcy5pZH1nZXQgY2xhc3NOYW1lc0FycmF5KCl7cmV0dXJuWyJjb2RpY29uIiwiY29kaWNvbi0iK3RoaXMuaWRdfWdldCBjc3NTZWxlY3Rvcigpe3JldHVybiIuY29kaWNvbi5jb2RpY29uLSIrdGhpcy5pZH1zdGF0aWMgZ2V0QWxsKCl7cmV0dXJuIFFuLl9hbGxDb2RpY29uc319UW4uX2FsbENvZGljb25zPVtdLFFuLmFkZD1uZXcgUW4oImFkZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE2MCJ9KSxRbi5wbHVzPW5ldyBRbigicGx1cyIsUW4uYWRkLmRlZmluaXRpb24pLFFuLmdpc3ROZXc9bmV3IFFuKCJnaXN0LW5ldyIsUW4uYWRkLmRlZmluaXRpb24pLFFuLnJlcG9DcmVhdGU9bmV3IFFuKCJyZXBvLWNyZWF0ZSIsUW4uYWRkLmRlZmluaXRpb24pLFFuLmxpZ2h0YnVsYj1uZXcgUW4oImxpZ2h0YnVsYiIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE2MSJ9KSxRbi5saWdodEJ1bGI9bmV3IFFuKCJsaWdodC1idWxiIix7Zm9udENoYXJhY3RlcjoiXFxlYTYxIn0pLFFuLnJlcG89bmV3IFFuKCJyZXBvIix7Zm9udENoYXJhY3RlcjoiXFxlYTYyIn0pLFFuLnJlcG9EZWxldGU9bmV3IFFuKCJyZXBvLWRlbGV0ZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE2MiJ9KSxRbi5naXN0Rm9yaz1uZXcgUW4oImdpc3QtZm9yayIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE2MyJ9KSxRbi5yZXBvRm9ya2VkPW5ldyBRbigicmVwby1mb3JrZWQiLHtmb250Q2hhcmFjdGVyOiJcXGVhNjMifSksUW4uZ2l0UHVsbFJlcXVlc3Q9bmV3IFFuKCJnaXQtcHVsbC1yZXF1ZXN0Iix7Zm9udENoYXJhY3RlcjoiXFxlYTY0In0pLFFuLmdpdFB1bGxSZXF1ZXN0QWJhbmRvbmVkPW5ldyBRbigiZ2l0LXB1bGwtcmVxdWVzdC1hYmFuZG9uZWQiLHtmb250Q2hhcmFjdGVyOiJcXGVhNjQifSksUW4ucmVjb3JkS2V5cz1uZXcgUW4oInJlY29yZC1rZXlzIix7Zm9udENoYXJhY3RlcjoiXFxlYTY1In0pLFFuLmtleWJvYXJkPW5ldyBRbigia2V5Ym9hcmQiLHtmb250Q2hhcmFjdGVyOiJcXGVhNjUifSksUW4udGFnPW5ldyBRbigidGFnIix7Zm9udENoYXJhY3RlcjoiXFxlYTY2In0pLFFuLnRhZ0FkZD1uZXcgUW4oInRhZy1hZGQiLHtmb250Q2hhcmFjdGVyOiJcXGVhNjYifSksUW4udGFnUmVtb3ZlPW5ldyBRbigidGFnLXJlbW92ZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE2NiJ9KSxRbi5wZXJzb249bmV3IFFuKCJwZXJzb24iLHtmb250Q2hhcmFjdGVyOiJcXGVhNjcifSksUW4ucGVyc29uRm9sbG93PW5ldyBRbigicGVyc29uLWZvbGxvdyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE2NyJ9KSxRbi5wZXJzb25PdXRsaW5lPW5ldyBRbigicGVyc29uLW91dGxpbmUiLHtmb250Q2hhcmFjdGVyOiJcXGVhNjcifSksUW4ucGVyc29uRmlsbGVkPW5ldyBRbigicGVyc29uLWZpbGxlZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE2NyJ9KSxRbi5naXRCcmFuY2g9bmV3IFFuKCJnaXQtYnJhbmNoIix7Zm9udENoYXJhY3RlcjoiXFxlYTY4In0pLFFuLmdpdEJyYW5jaENyZWF0ZT1uZXcgUW4oImdpdC1icmFuY2gtY3JlYXRlIix7Zm9udENoYXJhY3RlcjoiXFxlYTY4In0pLFFuLmdpdEJyYW5jaERlbGV0ZT1uZXcgUW4oImdpdC1icmFuY2gtZGVsZXRlIix7Zm9udENoYXJhY3RlcjoiXFxlYTY4In0pLFFuLnNvdXJjZUNvbnRyb2w9bmV3IFFuKCJzb3VyY2UtY29udHJvbCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE2OCJ9KSxRbi5taXJyb3I9bmV3IFFuKCJtaXJyb3IiLHtmb250Q2hhcmFjdGVyOiJcXGVhNjkifSksUW4ubWlycm9yUHVibGljPW5ldyBRbigibWlycm9yLXB1YmxpYyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE2OSJ9KSxRbi5zdGFyPW5ldyBRbigic3RhciIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE2YSJ9KSxRbi5zdGFyQWRkPW5ldyBRbigic3Rhci1hZGQiLHtmb250Q2hhcmFjdGVyOiJcXGVhNmEifSksUW4uc3RhckRlbGV0ZT1uZXcgUW4oInN0YXItZGVsZXRlIix7Zm9udENoYXJhY3RlcjoiXFxlYTZhIn0pLFFuLnN0YXJFbXB0eT1uZXcgUW4oInN0YXItZW1wdHkiLHtmb250Q2hhcmFjdGVyOiJcXGVhNmEifSksUW4uY29tbWVudD1uZXcgUW4oImNvbW1lbnQiLHtmb250Q2hhcmFjdGVyOiJcXGVhNmIifSksUW4uY29tbWVudEFkZD1uZXcgUW4oImNvbW1lbnQtYWRkIix7Zm9udENoYXJhY3RlcjoiXFxlYTZiIn0pLFFuLmFsZXJ0PW5ldyBRbigiYWxlcnQiLHtmb250Q2hhcmFjdGVyOiJcXGVhNmMifSksUW4ud2FybmluZz1uZXcgUW4oIndhcm5pbmciLHtmb250Q2hhcmFjdGVyOiJcXGVhNmMifSksUW4uc2VhcmNoPW5ldyBRbigic2VhcmNoIix7Zm9udENoYXJhY3RlcjoiXFxlYTZkIn0pLFFuLnNlYXJjaFNhdmU9bmV3IFFuKCJzZWFyY2gtc2F2ZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE2ZCJ9KSxRbi5sb2dPdXQ9bmV3IFFuKCJsb2ctb3V0Iix7Zm9udENoYXJhY3RlcjoiXFxlYTZlIn0pLFFuLnNpZ25PdXQ9bmV3IFFuKCJzaWduLW91dCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE2ZSJ9KSxRbi5sb2dJbj1uZXcgUW4oImxvZy1pbiIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE2ZiJ9KSxRbi5zaWduSW49bmV3IFFuKCJzaWduLWluIix7Zm9udENoYXJhY3RlcjoiXFxlYTZmIn0pLFFuLmV5ZT1uZXcgUW4oImV5ZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3MCJ9KSxRbi5leWVVbndhdGNoPW5ldyBRbigiZXllLXVud2F0Y2giLHtmb250Q2hhcmFjdGVyOiJcXGVhNzAifSksUW4uZXllV2F0Y2g9bmV3IFFuKCJleWUtd2F0Y2giLHtmb250Q2hhcmFjdGVyOiJcXGVhNzAifSksUW4uY2lyY2xlRmlsbGVkPW5ldyBRbigiY2lyY2xlLWZpbGxlZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3MSJ9KSxRbi5wcmltaXRpdmVEb3Q9bmV3IFFuKCJwcmltaXRpdmUtZG90Iix7Zm9udENoYXJhY3RlcjoiXFxlYTcxIn0pLFFuLmNsb3NlRGlydHk9bmV3IFFuKCJjbG9zZS1kaXJ0eSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3MSJ9KSxRbi5kZWJ1Z0JyZWFrcG9pbnQ9bmV3IFFuKCJkZWJ1Zy1icmVha3BvaW50Iix7Zm9udENoYXJhY3RlcjoiXFxlYTcxIn0pLFFuLmRlYnVnQnJlYWtwb2ludERpc2FibGVkPW5ldyBRbigiZGVidWctYnJlYWtwb2ludC1kaXNhYmxlZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3MSJ9KSxRbi5kZWJ1Z0hpbnQ9bmV3IFFuKCJkZWJ1Zy1oaW50Iix7Zm9udENoYXJhY3RlcjoiXFxlYTcxIn0pLFFuLnByaW1pdGl2ZVNxdWFyZT1uZXcgUW4oInByaW1pdGl2ZS1zcXVhcmUiLHtmb250Q2hhcmFjdGVyOiJcXGVhNzIifSksUW4uZWRpdD1uZXcgUW4oImVkaXQiLHtmb250Q2hhcmFjdGVyOiJcXGVhNzMifSksUW4ucGVuY2lsPW5ldyBRbigicGVuY2lsIix7Zm9udENoYXJhY3RlcjoiXFxlYTczIn0pLFFuLmluZm89bmV3IFFuKCJpbmZvIix7Zm9udENoYXJhY3RlcjoiXFxlYTc0In0pLFFuLmlzc3VlT3BlbmVkPW5ldyBRbigiaXNzdWUtb3BlbmVkIix7Zm9udENoYXJhY3RlcjoiXFxlYTc0In0pLFFuLmdpc3RQcml2YXRlPW5ldyBRbigiZ2lzdC1wcml2YXRlIix7Zm9udENoYXJhY3RlcjoiXFxlYTc1In0pLFFuLmdpdEZvcmtQcml2YXRlPW5ldyBRbigiZ2l0LWZvcmstcHJpdmF0ZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3NSJ9KSxRbi5sb2NrPW5ldyBRbigibG9jayIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3NSJ9KSxRbi5taXJyb3JQcml2YXRlPW5ldyBRbigibWlycm9yLXByaXZhdGUiLHtmb250Q2hhcmFjdGVyOiJcXGVhNzUifSksUW4uY2xvc2U9bmV3IFFuKCJjbG9zZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3NiJ9KSxRbi5yZW1vdmVDbG9zZT1uZXcgUW4oInJlbW92ZS1jbG9zZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3NiJ9KSxRbi54PW5ldyBRbigieCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3NiJ9KSxRbi5yZXBvU3luYz1uZXcgUW4oInJlcG8tc3luYyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3NyJ9KSxRbi5zeW5jPW5ldyBRbigic3luYyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3NyJ9KSxRbi5jbG9uZT1uZXcgUW4oImNsb25lIix7Zm9udENoYXJhY3RlcjoiXFxlYTc4In0pLFFuLmRlc2t0b3BEb3dubG9hZD1uZXcgUW4oImRlc2t0b3AtZG93bmxvYWQiLHtmb250Q2hhcmFjdGVyOiJcXGVhNzgifSksUW4uYmVha2VyPW5ldyBRbigiYmVha2VyIix7Zm9udENoYXJhY3RlcjoiXFxlYTc5In0pLFFuLm1pY3Jvc2NvcGU9bmV3IFFuKCJtaWNyb3Njb3BlIix7Zm9udENoYXJhY3RlcjoiXFxlYTc5In0pLFFuLnZtPW5ldyBRbigidm0iLHtmb250Q2hhcmFjdGVyOiJcXGVhN2EifSksUW4uZGV2aWNlRGVza3RvcD1uZXcgUW4oImRldmljZS1kZXNrdG9wIix7Zm9udENoYXJhY3RlcjoiXFxlYTdhIn0pLFFuLmZpbGU9bmV3IFFuKCJmaWxlIix7Zm9udENoYXJhY3RlcjoiXFxlYTdiIn0pLFFuLmZpbGVUZXh0PW5ldyBRbigiZmlsZS10ZXh0Iix7Zm9udENoYXJhY3RlcjoiXFxlYTdiIn0pLFFuLm1vcmU9bmV3IFFuKCJtb3JlIix7Zm9udENoYXJhY3RlcjoiXFxlYTdjIn0pLFFuLmVsbGlwc2lzPW5ldyBRbigiZWxsaXBzaXMiLHtmb250Q2hhcmFjdGVyOiJcXGVhN2MifSksUW4ua2ViYWJIb3Jpem9udGFsPW5ldyBRbigia2ViYWItaG9yaXpvbnRhbCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3YyJ9KSxRbi5tYWlsUmVwbHk9bmV3IFFuKCJtYWlsLXJlcGx5Iix7Zm9udENoYXJhY3RlcjoiXFxlYTdkIn0pLFFuLnJlcGx5PW5ldyBRbigicmVwbHkiLHtmb250Q2hhcmFjdGVyOiJcXGVhN2QifSksUW4ub3JnYW5pemF0aW9uPW5ldyBRbigib3JnYW5pemF0aW9uIix7Zm9udENoYXJhY3RlcjoiXFxlYTdlIn0pLFFuLm9yZ2FuaXphdGlvbkZpbGxlZD1uZXcgUW4oIm9yZ2FuaXphdGlvbi1maWxsZWQiLHtmb250Q2hhcmFjdGVyOiJcXGVhN2UifSksUW4ub3JnYW5pemF0aW9uT3V0bGluZT1uZXcgUW4oIm9yZ2FuaXphdGlvbi1vdXRsaW5lIix7Zm9udENoYXJhY3RlcjoiXFxlYTdlIn0pLFFuLm5ld0ZpbGU9bmV3IFFuKCJuZXctZmlsZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3ZiJ9KSxRbi5maWxlQWRkPW5ldyBRbigiZmlsZS1hZGQiLHtmb250Q2hhcmFjdGVyOiJcXGVhN2YifSksUW4ubmV3Rm9sZGVyPW5ldyBRbigibmV3LWZvbGRlciIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE4MCJ9KSxRbi5maWxlRGlyZWN0b3J5Q3JlYXRlPW5ldyBRbigiZmlsZS1kaXJlY3RvcnktY3JlYXRlIix7Zm9udENoYXJhY3RlcjoiXFxlYTgwIn0pLFFuLnRyYXNoPW5ldyBRbigidHJhc2giLHtmb250Q2hhcmFjdGVyOiJcXGVhODEifSksUW4udHJhc2hjYW49bmV3IFFuKCJ0cmFzaGNhbiIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE4MSJ9KSxRbi5oaXN0b3J5PW5ldyBRbigiaGlzdG9yeSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE4MiJ9KSxRbi5jbG9jaz1uZXcgUW4oImNsb2NrIix7Zm9udENoYXJhY3RlcjoiXFxlYTgyIn0pLFFuLmZvbGRlcj1uZXcgUW4oImZvbGRlciIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE4MyJ9KSxRbi5maWxlRGlyZWN0b3J5PW5ldyBRbigiZmlsZS1kaXJlY3RvcnkiLHtmb250Q2hhcmFjdGVyOiJcXGVhODMifSksUW4uc3ltYm9sRm9sZGVyPW5ldyBRbigic3ltYm9sLWZvbGRlciIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE4MyJ9KSxRbi5sb2dvR2l0aHViPW5ldyBRbigibG9nby1naXRodWIiLHtmb250Q2hhcmFjdGVyOiJcXGVhODQifSksUW4ubWFya0dpdGh1Yj1uZXcgUW4oIm1hcmstZ2l0aHViIix7Zm9udENoYXJhY3RlcjoiXFxlYTg0In0pLFFuLmdpdGh1Yj1uZXcgUW4oImdpdGh1YiIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE4NCJ9KSxRbi50ZXJtaW5hbD1uZXcgUW4oInRlcm1pbmFsIix7Zm9udENoYXJhY3RlcjoiXFxlYTg1In0pLFFuLmNvbnNvbGU9bmV3IFFuKCJjb25zb2xlIix7Zm9udENoYXJhY3RlcjoiXFxlYTg1In0pLFFuLnJlcGw9bmV3IFFuKCJyZXBsIix7Zm9udENoYXJhY3RlcjoiXFxlYTg1In0pLFFuLnphcD1uZXcgUW4oInphcCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE4NiJ9KSxRbi5zeW1ib2xFdmVudD1uZXcgUW4oInN5bWJvbC1ldmVudCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE4NiJ9KSxRbi5lcnJvcj1uZXcgUW4oImVycm9yIix7Zm9udENoYXJhY3RlcjoiXFxlYTg3In0pLFFuLnN0b3A9bmV3IFFuKCJzdG9wIix7Zm9udENoYXJhY3RlcjoiXFxlYTg3In0pLFFuLnZhcmlhYmxlPW5ldyBRbigidmFyaWFibGUiLHtmb250Q2hhcmFjdGVyOiJcXGVhODgifSksUW4uc3ltYm9sVmFyaWFibGU9bmV3IFFuKCJzeW1ib2wtdmFyaWFibGUiLHtmb250Q2hhcmFjdGVyOiJcXGVhODgifSksUW4uYXJyYXk9bmV3IFFuKCJhcnJheSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE4YSJ9KSxRbi5zeW1ib2xBcnJheT1uZXcgUW4oInN5bWJvbC1hcnJheSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE4YSJ9KSxRbi5zeW1ib2xNb2R1bGU9bmV3IFFuKCJzeW1ib2wtbW9kdWxlIix7Zm9udENoYXJhY3RlcjoiXFxlYThiIn0pLFFuLnN5bWJvbFBhY2thZ2U9bmV3IFFuKCJzeW1ib2wtcGFja2FnZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE4YiJ9KSxRbi5zeW1ib2xOYW1lc3BhY2U9bmV3IFFuKCJzeW1ib2wtbmFtZXNwYWNlIix7Zm9udENoYXJhY3RlcjoiXFxlYThiIn0pLFFuLnN5bWJvbE9iamVjdD1uZXcgUW4oInN5bWJvbC1vYmplY3QiLHtmb250Q2hhcmFjdGVyOiJcXGVhOGIifSksUW4uc3ltYm9sTWV0aG9kPW5ldyBRbigic3ltYm9sLW1ldGhvZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE4YyJ9KSxRbi5zeW1ib2xGdW5jdGlvbj1uZXcgUW4oInN5bWJvbC1mdW5jdGlvbiIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE4YyJ9KSxRbi5zeW1ib2xDb25zdHJ1Y3Rvcj1uZXcgUW4oInN5bWJvbC1jb25zdHJ1Y3RvciIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE4YyJ9KSxRbi5zeW1ib2xCb29sZWFuPW5ldyBRbigic3ltYm9sLWJvb2xlYW4iLHtmb250Q2hhcmFjdGVyOiJcXGVhOGYifSksUW4uc3ltYm9sTnVsbD1uZXcgUW4oInN5bWJvbC1udWxsIix7Zm9udENoYXJhY3RlcjoiXFxlYThmIn0pLFFuLnN5bWJvbE51bWVyaWM9bmV3IFFuKCJzeW1ib2wtbnVtZXJpYyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE5MCJ9KSxRbi5zeW1ib2xOdW1iZXI9bmV3IFFuKCJzeW1ib2wtbnVtYmVyIix7Zm9udENoYXJhY3RlcjoiXFxlYTkwIn0pLFFuLnN5bWJvbFN0cnVjdHVyZT1uZXcgUW4oInN5bWJvbC1zdHJ1Y3R1cmUiLHtmb250Q2hhcmFjdGVyOiJcXGVhOTEifSksUW4uc3ltYm9sU3RydWN0PW5ldyBRbigic3ltYm9sLXN0cnVjdCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE5MSJ9KSxRbi5zeW1ib2xQYXJhbWV0ZXI9bmV3IFFuKCJzeW1ib2wtcGFyYW1ldGVyIix7Zm9udENoYXJhY3RlcjoiXFxlYTkyIn0pLFFuLnN5bWJvbFR5cGVQYXJhbWV0ZXI9bmV3IFFuKCJzeW1ib2wtdHlwZS1wYXJhbWV0ZXIiLHtmb250Q2hhcmFjdGVyOiJcXGVhOTIifSksUW4uc3ltYm9sS2V5PW5ldyBRbigic3ltYm9sLWtleSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE5MyJ9KSxRbi5zeW1ib2xUZXh0PW5ldyBRbigic3ltYm9sLXRleHQiLHtmb250Q2hhcmFjdGVyOiJcXGVhOTMifSksUW4uc3ltYm9sUmVmZXJlbmNlPW5ldyBRbigic3ltYm9sLXJlZmVyZW5jZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE5NCJ9KSxRbi5nb1RvRmlsZT1uZXcgUW4oImdvLXRvLWZpbGUiLHtmb250Q2hhcmFjdGVyOiJcXGVhOTQifSksUW4uc3ltYm9sRW51bT1uZXcgUW4oInN5bWJvbC1lbnVtIix7Zm9udENoYXJhY3RlcjoiXFxlYTk1In0pLFFuLnN5bWJvbFZhbHVlPW5ldyBRbigic3ltYm9sLXZhbHVlIix7Zm9udENoYXJhY3RlcjoiXFxlYTk1In0pLFFuLnN5bWJvbFJ1bGVyPW5ldyBRbigic3ltYm9sLXJ1bGVyIix7Zm9udENoYXJhY3RlcjoiXFxlYTk2In0pLFFuLnN5bWJvbFVuaXQ9bmV3IFFuKCJzeW1ib2wtdW5pdCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE5NiJ9KSxRbi5hY3RpdmF0ZUJyZWFrcG9pbnRzPW5ldyBRbigiYWN0aXZhdGUtYnJlYWtwb2ludHMiLHtmb250Q2hhcmFjdGVyOiJcXGVhOTcifSksUW4uYXJjaGl2ZT1uZXcgUW4oImFyY2hpdmUiLHtmb250Q2hhcmFjdGVyOiJcXGVhOTgifSksUW4uYXJyb3dCb3RoPW5ldyBRbigiYXJyb3ctYm90aCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE5OSJ9KSxRbi5hcnJvd0Rvd249bmV3IFFuKCJhcnJvdy1kb3duIix7Zm9udENoYXJhY3RlcjoiXFxlYTlhIn0pLFFuLmFycm93TGVmdD1uZXcgUW4oImFycm93LWxlZnQiLHtmb250Q2hhcmFjdGVyOiJcXGVhOWIifSksUW4uYXJyb3dSaWdodD1uZXcgUW4oImFycm93LXJpZ2h0Iix7Zm9udENoYXJhY3RlcjoiXFxlYTljIn0pLFFuLmFycm93U21hbGxEb3duPW5ldyBRbigiYXJyb3ctc21hbGwtZG93biIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE5ZCJ9KSxRbi5hcnJvd1NtYWxsTGVmdD1uZXcgUW4oImFycm93LXNtYWxsLWxlZnQiLHtmb250Q2hhcmFjdGVyOiJcXGVhOWUifSksUW4uYXJyb3dTbWFsbFJpZ2h0PW5ldyBRbigiYXJyb3ctc21hbGwtcmlnaHQiLHtmb250Q2hhcmFjdGVyOiJcXGVhOWYifSksUW4uYXJyb3dTbWFsbFVwPW5ldyBRbigiYXJyb3ctc21hbGwtdXAiLHtmb250Q2hhcmFjdGVyOiJcXGVhYTAifSksUW4uYXJyb3dVcD1uZXcgUW4oImFycm93LXVwIix7Zm9udENoYXJhY3RlcjoiXFxlYWExIn0pLFFuLmJlbGw9bmV3IFFuKCJiZWxsIix7Zm9udENoYXJhY3RlcjoiXFxlYWEyIn0pLFFuLmJvbGQ9bmV3IFFuKCJib2xkIix7Zm9udENoYXJhY3RlcjoiXFxlYWEzIn0pLFFuLmJvb2s9bmV3IFFuKCJib29rIix7Zm9udENoYXJhY3RlcjoiXFxlYWE0In0pLFFuLmJvb2ttYXJrPW5ldyBRbigiYm9va21hcmsiLHtmb250Q2hhcmFjdGVyOiJcXGVhYTUifSksUW4uZGVidWdCcmVha3BvaW50Q29uZGl0aW9uYWxVbnZlcmlmaWVkPW5ldyBRbigiZGVidWctYnJlYWtwb2ludC1jb25kaXRpb25hbC11bnZlcmlmaWVkIix7Zm9udENoYXJhY3RlcjoiXFxlYWE2In0pLFFuLmRlYnVnQnJlYWtwb2ludENvbmRpdGlvbmFsPW5ldyBRbigiZGVidWctYnJlYWtwb2ludC1jb25kaXRpb25hbCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFhNyJ9KSxRbi5kZWJ1Z0JyZWFrcG9pbnRDb25kaXRpb25hbERpc2FibGVkPW5ldyBRbigiZGVidWctYnJlYWtwb2ludC1jb25kaXRpb25hbC1kaXNhYmxlZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFhNyJ9KSxRbi5kZWJ1Z0JyZWFrcG9pbnREYXRhVW52ZXJpZmllZD1uZXcgUW4oImRlYnVnLWJyZWFrcG9pbnQtZGF0YS11bnZlcmlmaWVkIix7Zm9udENoYXJhY3RlcjoiXFxlYWE4In0pLFFuLmRlYnVnQnJlYWtwb2ludERhdGE9bmV3IFFuKCJkZWJ1Zy1icmVha3BvaW50LWRhdGEiLHtmb250Q2hhcmFjdGVyOiJcXGVhYTkifSksUW4uZGVidWdCcmVha3BvaW50RGF0YURpc2FibGVkPW5ldyBRbigiZGVidWctYnJlYWtwb2ludC1kYXRhLWRpc2FibGVkIix7Zm9udENoYXJhY3RlcjoiXFxlYWE5In0pLFFuLmRlYnVnQnJlYWtwb2ludExvZ1VudmVyaWZpZWQ9bmV3IFFuKCJkZWJ1Zy1icmVha3BvaW50LWxvZy11bnZlcmlmaWVkIix7Zm9udENoYXJhY3RlcjoiXFxlYWFhIn0pLFFuLmRlYnVnQnJlYWtwb2ludExvZz1uZXcgUW4oImRlYnVnLWJyZWFrcG9pbnQtbG9nIix7Zm9udENoYXJhY3RlcjoiXFxlYWFiIn0pLFFuLmRlYnVnQnJlYWtwb2ludExvZ0Rpc2FibGVkPW5ldyBRbigiZGVidWctYnJlYWtwb2ludC1sb2ctZGlzYWJsZWQiLHtmb250Q2hhcmFjdGVyOiJcXGVhYWIifSksUW4uYnJpZWZjYXNlPW5ldyBRbigiYnJpZWZjYXNlIix7Zm9udENoYXJhY3RlcjoiXFxlYWFjIn0pLFFuLmJyb2FkY2FzdD1uZXcgUW4oImJyb2FkY2FzdCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFhZCJ9KSxRbi5icm93c2VyPW5ldyBRbigiYnJvd3NlciIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFhZSJ9KSxRbi5idWc9bmV3IFFuKCJidWciLHtmb250Q2hhcmFjdGVyOiJcXGVhYWYifSksUW4uY2FsZW5kYXI9bmV3IFFuKCJjYWxlbmRhciIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFiMCJ9KSxRbi5jYXNlU2Vuc2l0aXZlPW5ldyBRbigiY2FzZS1zZW5zaXRpdmUiLHtmb250Q2hhcmFjdGVyOiJcXGVhYjEifSksUW4uY2hlY2s9bmV3IFFuKCJjaGVjayIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFiMiJ9KSxRbi5jaGVja2xpc3Q9bmV3IFFuKCJjaGVja2xpc3QiLHtmb250Q2hhcmFjdGVyOiJcXGVhYjMifSksUW4uY2hldnJvbkRvd249bmV3IFFuKCJjaGV2cm9uLWRvd24iLHtmb250Q2hhcmFjdGVyOiJcXGVhYjQifSksUW4uZHJvcERvd25CdXR0b249bmV3IFFuKCJkcm9wLWRvd24tYnV0dG9uIixRbi5jaGV2cm9uRG93bi5kZWZpbml0aW9uKSxRbi5jaGV2cm9uTGVmdD1uZXcgUW4oImNoZXZyb24tbGVmdCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFiNSJ9KSxRbi5jaGV2cm9uUmlnaHQ9bmV3IFFuKCJjaGV2cm9uLXJpZ2h0Iix7Zm9udENoYXJhY3RlcjoiXFxlYWI2In0pLFFuLmNoZXZyb25VcD1uZXcgUW4oImNoZXZyb24tdXAiLHtmb250Q2hhcmFjdGVyOiJcXGVhYjcifSksUW4uY2hyb21lQ2xvc2U9bmV3IFFuKCJjaHJvbWUtY2xvc2UiLHtmb250Q2hhcmFjdGVyOiJcXGVhYjgifSksUW4uY2hyb21lTWF4aW1pemU9bmV3IFFuKCJjaHJvbWUtbWF4aW1pemUiLHtmb250Q2hhcmFjdGVyOiJcXGVhYjkifSksUW4uY2hyb21lTWluaW1pemU9bmV3IFFuKCJjaHJvbWUtbWluaW1pemUiLHtmb250Q2hhcmFjdGVyOiJcXGVhYmEifSksUW4uY2hyb21lUmVzdG9yZT1uZXcgUW4oImNocm9tZS1yZXN0b3JlIix7Zm9udENoYXJhY3RlcjoiXFxlYWJiIn0pLFFuLmNpcmNsZU91dGxpbmU9bmV3IFFuKCJjaXJjbGUtb3V0bGluZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFiYyJ9KSxRbi5kZWJ1Z0JyZWFrcG9pbnRVbnZlcmlmaWVkPW5ldyBRbigiZGVidWctYnJlYWtwb2ludC11bnZlcmlmaWVkIix7Zm9udENoYXJhY3RlcjoiXFxlYWJjIn0pLFFuLmNpcmNsZVNsYXNoPW5ldyBRbigiY2lyY2xlLXNsYXNoIix7Zm9udENoYXJhY3RlcjoiXFxlYWJkIn0pLFFuLmNpcmN1aXRCb2FyZD1uZXcgUW4oImNpcmN1aXQtYm9hcmQiLHtmb250Q2hhcmFjdGVyOiJcXGVhYmUifSksUW4uY2xlYXJBbGw9bmV3IFFuKCJjbGVhci1hbGwiLHtmb250Q2hhcmFjdGVyOiJcXGVhYmYifSksUW4uY2xpcHB5PW5ldyBRbigiY2xpcHB5Iix7Zm9udENoYXJhY3RlcjoiXFxlYWMwIn0pLFFuLmNsb3NlQWxsPW5ldyBRbigiY2xvc2UtYWxsIix7Zm9udENoYXJhY3RlcjoiXFxlYWMxIn0pLFFuLmNsb3VkRG93bmxvYWQ9bmV3IFFuKCJjbG91ZC1kb3dubG9hZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFjMiJ9KSxRbi5jbG91ZFVwbG9hZD1uZXcgUW4oImNsb3VkLXVwbG9hZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFjMyJ9KSxRbi5jb2RlPW5ldyBRbigiY29kZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFjNCJ9KSxRbi5jb2xsYXBzZUFsbD1uZXcgUW4oImNvbGxhcHNlLWFsbCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFjNSJ9KSxRbi5jb2xvck1vZGU9bmV3IFFuKCJjb2xvci1tb2RlIix7Zm9udENoYXJhY3RlcjoiXFxlYWM2In0pLFFuLmNvbW1lbnREaXNjdXNzaW9uPW5ldyBRbigiY29tbWVudC1kaXNjdXNzaW9uIix7Zm9udENoYXJhY3RlcjoiXFxlYWM3In0pLFFuLmNvbXBhcmVDaGFuZ2VzPW5ldyBRbigiY29tcGFyZS1jaGFuZ2VzIix7Zm9udENoYXJhY3RlcjoiXFxlYWZkIn0pLFFuLmNyZWRpdENhcmQ9bmV3IFFuKCJjcmVkaXQtY2FyZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFjOSJ9KSxRbi5kYXNoPW5ldyBRbigiZGFzaCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFjYyJ9KSxRbi5kYXNoYm9hcmQ9bmV3IFFuKCJkYXNoYm9hcmQiLHtmb250Q2hhcmFjdGVyOiJcXGVhY2QifSksUW4uZGF0YWJhc2U9bmV3IFFuKCJkYXRhYmFzZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFjZSJ9KSxRbi5kZWJ1Z0NvbnRpbnVlPW5ldyBRbigiZGVidWctY29udGludWUiLHtmb250Q2hhcmFjdGVyOiJcXGVhY2YifSksUW4uZGVidWdEaXNjb25uZWN0PW5ldyBRbigiZGVidWctZGlzY29ubmVjdCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFkMCJ9KSxRbi5kZWJ1Z1BhdXNlPW5ldyBRbigiZGVidWctcGF1c2UiLHtmb250Q2hhcmFjdGVyOiJcXGVhZDEifSksUW4uZGVidWdSZXN0YXJ0PW5ldyBRbigiZGVidWctcmVzdGFydCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFkMiJ9KSxRbi5kZWJ1Z1N0YXJ0PW5ldyBRbigiZGVidWctc3RhcnQiLHtmb250Q2hhcmFjdGVyOiJcXGVhZDMifSksUW4uZGVidWdTdGVwSW50bz1uZXcgUW4oImRlYnVnLXN0ZXAtaW50byIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFkNCJ9KSxRbi5kZWJ1Z1N0ZXBPdXQ9bmV3IFFuKCJkZWJ1Zy1zdGVwLW91dCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFkNSJ9KSxRbi5kZWJ1Z1N0ZXBPdmVyPW5ldyBRbigiZGVidWctc3RlcC1vdmVyIix7Zm9udENoYXJhY3RlcjoiXFxlYWQ2In0pLFFuLmRlYnVnU3RvcD1uZXcgUW4oImRlYnVnLXN0b3AiLHtmb250Q2hhcmFjdGVyOiJcXGVhZDcifSksUW4uZGVidWc9bmV3IFFuKCJkZWJ1ZyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFkOCJ9KSxRbi5kZXZpY2VDYW1lcmFWaWRlbz1uZXcgUW4oImRldmljZS1jYW1lcmEtdmlkZW8iLHtmb250Q2hhcmFjdGVyOiJcXGVhZDkifSksUW4uZGV2aWNlQ2FtZXJhPW5ldyBRbigiZGV2aWNlLWNhbWVyYSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFkYSJ9KSxRbi5kZXZpY2VNb2JpbGU9bmV3IFFuKCJkZXZpY2UtbW9iaWxlIix7Zm9udENoYXJhY3RlcjoiXFxlYWRiIn0pLFFuLmRpZmZBZGRlZD1uZXcgUW4oImRpZmYtYWRkZWQiLHtmb250Q2hhcmFjdGVyOiJcXGVhZGMifSksUW4uZGlmZklnbm9yZWQ9bmV3IFFuKCJkaWZmLWlnbm9yZWQiLHtmb250Q2hhcmFjdGVyOiJcXGVhZGQifSksUW4uZGlmZk1vZGlmaWVkPW5ldyBRbigiZGlmZi1tb2RpZmllZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFkZSJ9KSxRbi5kaWZmUmVtb3ZlZD1uZXcgUW4oImRpZmYtcmVtb3ZlZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFkZiJ9KSxRbi5kaWZmUmVuYW1lZD1uZXcgUW4oImRpZmYtcmVuYW1lZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFlMCJ9KSxRbi5kaWZmPW5ldyBRbigiZGlmZiIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFlMSJ9KSxRbi5kaXNjYXJkPW5ldyBRbigiZGlzY2FyZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFlMiJ9KSxRbi5lZGl0b3JMYXlvdXQ9bmV3IFFuKCJlZGl0b3ItbGF5b3V0Iix7Zm9udENoYXJhY3RlcjoiXFxlYWUzIn0pLFFuLmVtcHR5V2luZG93PW5ldyBRbigiZW1wdHktd2luZG93Iix7Zm9udENoYXJhY3RlcjoiXFxlYWU0In0pLFFuLmV4Y2x1ZGU9bmV3IFFuKCJleGNsdWRlIix7Zm9udENoYXJhY3RlcjoiXFxlYWU1In0pLFFuLmV4dGVuc2lvbnM9bmV3IFFuKCJleHRlbnNpb25zIix7Zm9udENoYXJhY3RlcjoiXFxlYWU2In0pLFFuLmV5ZUNsb3NlZD1uZXcgUW4oImV5ZS1jbG9zZWQiLHtmb250Q2hhcmFjdGVyOiJcXGVhZTcifSksUW4uZmlsZUJpbmFyeT1uZXcgUW4oImZpbGUtYmluYXJ5Iix7Zm9udENoYXJhY3RlcjoiXFxlYWU4In0pLFFuLmZpbGVDb2RlPW5ldyBRbigiZmlsZS1jb2RlIix7Zm9udENoYXJhY3RlcjoiXFxlYWU5In0pLFFuLmZpbGVNZWRpYT1uZXcgUW4oImZpbGUtbWVkaWEiLHtmb250Q2hhcmFjdGVyOiJcXGVhZWEifSksUW4uZmlsZVBkZj1uZXcgUW4oImZpbGUtcGRmIix7Zm9udENoYXJhY3RlcjoiXFxlYWViIn0pLFFuLmZpbGVTdWJtb2R1bGU9bmV3IFFuKCJmaWxlLXN1Ym1vZHVsZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFlYyJ9KSxRbi5maWxlU3ltbGlua0RpcmVjdG9yeT1uZXcgUW4oImZpbGUtc3ltbGluay1kaXJlY3RvcnkiLHtmb250Q2hhcmFjdGVyOiJcXGVhZWQifSksUW4uZmlsZVN5bWxpbmtGaWxlPW5ldyBRbigiZmlsZS1zeW1saW5rLWZpbGUiLHtmb250Q2hhcmFjdGVyOiJcXGVhZWUifSksUW4uZmlsZVppcD1uZXcgUW4oImZpbGUtemlwIix7Zm9udENoYXJhY3RlcjoiXFxlYWVmIn0pLFFuLmZpbGVzPW5ldyBRbigiZmlsZXMiLHtmb250Q2hhcmFjdGVyOiJcXGVhZjAifSksUW4uZmlsdGVyPW5ldyBRbigiZmlsdGVyIix7Zm9udENoYXJhY3RlcjoiXFxlYWYxIn0pLFFuLmZsYW1lPW5ldyBRbigiZmxhbWUiLHtmb250Q2hhcmFjdGVyOiJcXGVhZjIifSksUW4uZm9sZERvd249bmV3IFFuKCJmb2xkLWRvd24iLHtmb250Q2hhcmFjdGVyOiJcXGVhZjMifSksUW4uZm9sZFVwPW5ldyBRbigiZm9sZC11cCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFmNCJ9KSxRbi5mb2xkPW5ldyBRbigiZm9sZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFmNSJ9KSxRbi5mb2xkZXJBY3RpdmU9bmV3IFFuKCJmb2xkZXItYWN0aXZlIix7Zm9udENoYXJhY3RlcjoiXFxlYWY2In0pLFFuLmZvbGRlck9wZW5lZD1uZXcgUW4oImZvbGRlci1vcGVuZWQiLHtmb250Q2hhcmFjdGVyOiJcXGVhZjcifSksUW4uZ2Vhcj1uZXcgUW4oImdlYXIiLHtmb250Q2hhcmFjdGVyOiJcXGVhZjgifSksUW4uZ2lmdD1uZXcgUW4oImdpZnQiLHtmb250Q2hhcmFjdGVyOiJcXGVhZjkifSksUW4uZ2lzdFNlY3JldD1uZXcgUW4oImdpc3Qtc2VjcmV0Iix7Zm9udENoYXJhY3RlcjoiXFxlYWZhIn0pLFFuLmdpc3Q9bmV3IFFuKCJnaXN0Iix7Zm9udENoYXJhY3RlcjoiXFxlYWZiIn0pLFFuLmdpdENvbW1pdD1uZXcgUW4oImdpdC1jb21taXQiLHtmb250Q2hhcmFjdGVyOiJcXGVhZmMifSksUW4uZ2l0Q29tcGFyZT1uZXcgUW4oImdpdC1jb21wYXJlIix7Zm9udENoYXJhY3RlcjoiXFxlYWZkIn0pLFFuLmdpdE1lcmdlPW5ldyBRbigiZ2l0LW1lcmdlIix7Zm9udENoYXJhY3RlcjoiXFxlYWZlIn0pLFFuLmdpdGh1YkFjdGlvbj1uZXcgUW4oImdpdGh1Yi1hY3Rpb24iLHtmb250Q2hhcmFjdGVyOiJcXGVhZmYifSksUW4uZ2l0aHViQWx0PW5ldyBRbigiZ2l0aHViLWFsdCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIwMCJ9KSxRbi5nbG9iZT1uZXcgUW4oImdsb2JlIix7Zm9udENoYXJhY3RlcjoiXFxlYjAxIn0pLFFuLmdyYWJiZXI9bmV3IFFuKCJncmFiYmVyIix7Zm9udENoYXJhY3RlcjoiXFxlYjAyIn0pLFFuLmdyYXBoPW5ldyBRbigiZ3JhcGgiLHtmb250Q2hhcmFjdGVyOiJcXGViMDMifSksUW4uZ3JpcHBlcj1uZXcgUW4oImdyaXBwZXIiLHtmb250Q2hhcmFjdGVyOiJcXGViMDQifSksUW4uaGVhcnQ9bmV3IFFuKCJoZWFydCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIwNSJ9KSxRbi5ob21lPW5ldyBRbigiaG9tZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIwNiJ9KSxRbi5ob3Jpem9udGFsUnVsZT1uZXcgUW4oImhvcml6b250YWwtcnVsZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIwNyJ9KSxRbi5odWJvdD1uZXcgUW4oImh1Ym90Iix7Zm9udENoYXJhY3RlcjoiXFxlYjA4In0pLFFuLmluYm94PW5ldyBRbigiaW5ib3giLHtmb250Q2hhcmFjdGVyOiJcXGViMDkifSksUW4uaXNzdWVDbG9zZWQ9bmV3IFFuKCJpc3N1ZS1jbG9zZWQiLHtmb250Q2hhcmFjdGVyOiJcXGViYTQifSksUW4uaXNzdWVSZW9wZW5lZD1uZXcgUW4oImlzc3VlLXJlb3BlbmVkIix7Zm9udENoYXJhY3RlcjoiXFxlYjBiIn0pLFFuLmlzc3Vlcz1uZXcgUW4oImlzc3VlcyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIwYyJ9KSxRbi5pdGFsaWM9bmV3IFFuKCJpdGFsaWMiLHtmb250Q2hhcmFjdGVyOiJcXGViMGQifSksUW4uamVyc2V5PW5ldyBRbigiamVyc2V5Iix7Zm9udENoYXJhY3RlcjoiXFxlYjBlIn0pLFFuLmpzb249bmV3IFFuKCJqc29uIix7Zm9udENoYXJhY3RlcjoiXFxlYjBmIn0pLFFuLmtlYmFiVmVydGljYWw9bmV3IFFuKCJrZWJhYi12ZXJ0aWNhbCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIxMCJ9KSxRbi5rZXk9bmV3IFFuKCJrZXkiLHtmb250Q2hhcmFjdGVyOiJcXGViMTEifSksUW4ubGF3PW5ldyBRbigibGF3Iix7Zm9udENoYXJhY3RlcjoiXFxlYjEyIn0pLFFuLmxpZ2h0YnVsYkF1dG9maXg9bmV3IFFuKCJsaWdodGJ1bGItYXV0b2ZpeCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIxMyJ9KSxRbi5saW5rRXh0ZXJuYWw9bmV3IFFuKCJsaW5rLWV4dGVybmFsIix7Zm9udENoYXJhY3RlcjoiXFxlYjE0In0pLFFuLmxpbms9bmV3IFFuKCJsaW5rIix7Zm9udENoYXJhY3RlcjoiXFxlYjE1In0pLFFuLmxpc3RPcmRlcmVkPW5ldyBRbigibGlzdC1vcmRlcmVkIix7Zm9udENoYXJhY3RlcjoiXFxlYjE2In0pLFFuLmxpc3RVbm9yZGVyZWQ9bmV3IFFuKCJsaXN0LXVub3JkZXJlZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIxNyJ9KSxRbi5saXZlU2hhcmU9bmV3IFFuKCJsaXZlLXNoYXJlIix7Zm9udENoYXJhY3RlcjoiXFxlYjE4In0pLFFuLmxvYWRpbmc9bmV3IFFuKCJsb2FkaW5nIix7Zm9udENoYXJhY3RlcjoiXFxlYjE5In0pLFFuLmxvY2F0aW9uPW5ldyBRbigibG9jYXRpb24iLHtmb250Q2hhcmFjdGVyOiJcXGViMWEifSksUW4ubWFpbFJlYWQ9bmV3IFFuKCJtYWlsLXJlYWQiLHtmb250Q2hhcmFjdGVyOiJcXGViMWIifSksUW4ubWFpbD1uZXcgUW4oIm1haWwiLHtmb250Q2hhcmFjdGVyOiJcXGViMWMifSksUW4ubWFya2Rvd249bmV3IFFuKCJtYXJrZG93biIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIxZCJ9KSxRbi5tZWdhcGhvbmU9bmV3IFFuKCJtZWdhcGhvbmUiLHtmb250Q2hhcmFjdGVyOiJcXGViMWUifSksUW4ubWVudGlvbj1uZXcgUW4oIm1lbnRpb24iLHtmb250Q2hhcmFjdGVyOiJcXGViMWYifSksUW4ubWlsZXN0b25lPW5ldyBRbigibWlsZXN0b25lIix7Zm9udENoYXJhY3RlcjoiXFxlYjIwIn0pLFFuLm1vcnRhckJvYXJkPW5ldyBRbigibW9ydGFyLWJvYXJkIix7Zm9udENoYXJhY3RlcjoiXFxlYjIxIn0pLFFuLm1vdmU9bmV3IFFuKCJtb3ZlIix7Zm9udENoYXJhY3RlcjoiXFxlYjIyIn0pLFFuLm11bHRpcGxlV2luZG93cz1uZXcgUW4oIm11bHRpcGxlLXdpbmRvd3MiLHtmb250Q2hhcmFjdGVyOiJcXGViMjMifSksUW4ubXV0ZT1uZXcgUW4oIm11dGUiLHtmb250Q2hhcmFjdGVyOiJcXGViMjQifSksUW4ubm9OZXdsaW5lPW5ldyBRbigibm8tbmV3bGluZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIyNSJ9KSxRbi5ub3RlPW5ldyBRbigibm90ZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIyNiJ9KSxRbi5vY3RvZmFjZT1uZXcgUW4oIm9jdG9mYWNlIix7Zm9udENoYXJhY3RlcjoiXFxlYjI3In0pLFFuLm9wZW5QcmV2aWV3PW5ldyBRbigib3Blbi1wcmV2aWV3Iix7Zm9udENoYXJhY3RlcjoiXFxlYjI4In0pLFFuLnBhY2thZ2VfPW5ldyBRbigicGFja2FnZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIyOSJ9KSxRbi5wYWludGNhbj1uZXcgUW4oInBhaW50Y2FuIix7Zm9udENoYXJhY3RlcjoiXFxlYjJhIn0pLFFuLnBpbj1uZXcgUW4oInBpbiIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIyYiJ9KSxRbi5wbGF5PW5ldyBRbigicGxheSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIyYyJ9KSxRbi5ydW49bmV3IFFuKCJydW4iLHtmb250Q2hhcmFjdGVyOiJcXGViMmMifSksUW4ucGx1Zz1uZXcgUW4oInBsdWciLHtmb250Q2hhcmFjdGVyOiJcXGViMmQifSksUW4ucHJlc2VydmVDYXNlPW5ldyBRbigicHJlc2VydmUtY2FzZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIyZSJ9KSxRbi5wcmV2aWV3PW5ldyBRbigicHJldmlldyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIyZiJ9KSxRbi5wcm9qZWN0PW5ldyBRbigicHJvamVjdCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIzMCJ9KSxRbi5wdWxzZT1uZXcgUW4oInB1bHNlIix7Zm9udENoYXJhY3RlcjoiXFxlYjMxIn0pLFFuLnF1ZXN0aW9uPW5ldyBRbigicXVlc3Rpb24iLHtmb250Q2hhcmFjdGVyOiJcXGViMzIifSksUW4ucXVvdGU9bmV3IFFuKCJxdW90ZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIzMyJ9KSxRbi5yYWRpb1Rvd2VyPW5ldyBRbigicmFkaW8tdG93ZXIiLHtmb250Q2hhcmFjdGVyOiJcXGViMzQifSksUW4ucmVhY3Rpb25zPW5ldyBRbigicmVhY3Rpb25zIix7Zm9udENoYXJhY3RlcjoiXFxlYjM1In0pLFFuLnJlZmVyZW5jZXM9bmV3IFFuKCJyZWZlcmVuY2VzIix7Zm9udENoYXJhY3RlcjoiXFxlYjM2In0pLFFuLnJlZnJlc2g9bmV3IFFuKCJyZWZyZXNoIix7Zm9udENoYXJhY3RlcjoiXFxlYjM3In0pLFFuLnJlZ2V4PW5ldyBRbigicmVnZXgiLHtmb250Q2hhcmFjdGVyOiJcXGViMzgifSksUW4ucmVtb3RlRXhwbG9yZXI9bmV3IFFuKCJyZW1vdGUtZXhwbG9yZXIiLHtmb250Q2hhcmFjdGVyOiJcXGViMzkifSksUW4ucmVtb3RlPW5ldyBRbigicmVtb3RlIix7Zm9udENoYXJhY3RlcjoiXFxlYjNhIn0pLFFuLnJlbW92ZT1uZXcgUW4oInJlbW92ZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIzYiJ9KSxRbi5yZXBsYWNlQWxsPW5ldyBRbigicmVwbGFjZS1hbGwiLHtmb250Q2hhcmFjdGVyOiJcXGViM2MifSksUW4ucmVwbGFjZT1uZXcgUW4oInJlcGxhY2UiLHtmb250Q2hhcmFjdGVyOiJcXGViM2QifSksUW4ucmVwb0Nsb25lPW5ldyBRbigicmVwby1jbG9uZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIzZSJ9KSxRbi5yZXBvRm9yY2VQdXNoPW5ldyBRbigicmVwby1mb3JjZS1wdXNoIix7Zm9udENoYXJhY3RlcjoiXFxlYjNmIn0pLFFuLnJlcG9QdWxsPW5ldyBRbigicmVwby1wdWxsIix7Zm9udENoYXJhY3RlcjoiXFxlYjQwIn0pLFFuLnJlcG9QdXNoPW5ldyBRbigicmVwby1wdXNoIix7Zm9udENoYXJhY3RlcjoiXFxlYjQxIn0pLFFuLnJlcG9ydD1uZXcgUW4oInJlcG9ydCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI0MiJ9KSxRbi5yZXF1ZXN0Q2hhbmdlcz1uZXcgUW4oInJlcXVlc3QtY2hhbmdlcyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI0MyJ9KSxRbi5yb2NrZXQ9bmV3IFFuKCJyb2NrZXQiLHtmb250Q2hhcmFjdGVyOiJcXGViNDQifSksUW4ucm9vdEZvbGRlck9wZW5lZD1uZXcgUW4oInJvb3QtZm9sZGVyLW9wZW5lZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI0NSJ9KSxRbi5yb290Rm9sZGVyPW5ldyBRbigicm9vdC1mb2xkZXIiLHtmb250Q2hhcmFjdGVyOiJcXGViNDYifSksUW4ucnNzPW5ldyBRbigicnNzIix7Zm9udENoYXJhY3RlcjoiXFxlYjQ3In0pLFFuLnJ1Ynk9bmV3IFFuKCJydWJ5Iix7Zm9udENoYXJhY3RlcjoiXFxlYjQ4In0pLFFuLnNhdmVBbGw9bmV3IFFuKCJzYXZlLWFsbCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI0OSJ9KSxRbi5zYXZlQXM9bmV3IFFuKCJzYXZlLWFzIix7Zm9udENoYXJhY3RlcjoiXFxlYjRhIn0pLFFuLnNhdmU9bmV3IFFuKCJzYXZlIix7Zm9udENoYXJhY3RlcjoiXFxlYjRiIn0pLFFuLnNjcmVlbkZ1bGw9bmV3IFFuKCJzY3JlZW4tZnVsbCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI0YyJ9KSxRbi5zY3JlZW5Ob3JtYWw9bmV3IFFuKCJzY3JlZW4tbm9ybWFsIix7Zm9udENoYXJhY3RlcjoiXFxlYjRkIn0pLFFuLnNlYXJjaFN0b3A9bmV3IFFuKCJzZWFyY2gtc3RvcCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI0ZSJ9KSxRbi5zZXJ2ZXI9bmV3IFFuKCJzZXJ2ZXIiLHtmb250Q2hhcmFjdGVyOiJcXGViNTAifSksUW4uc2V0dGluZ3NHZWFyPW5ldyBRbigic2V0dGluZ3MtZ2VhciIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI1MSJ9KSxRbi5zZXR0aW5ncz1uZXcgUW4oInNldHRpbmdzIix7Zm9udENoYXJhY3RlcjoiXFxlYjUyIn0pLFFuLnNoaWVsZD1uZXcgUW4oInNoaWVsZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI1MyJ9KSxRbi5zbWlsZXk9bmV3IFFuKCJzbWlsZXkiLHtmb250Q2hhcmFjdGVyOiJcXGViNTQifSksUW4uc29ydFByZWNlZGVuY2U9bmV3IFFuKCJzb3J0LXByZWNlZGVuY2UiLHtmb250Q2hhcmFjdGVyOiJcXGViNTUifSksUW4uc3BsaXRIb3Jpem9udGFsPW5ldyBRbigic3BsaXQtaG9yaXpvbnRhbCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI1NiJ9KSxRbi5zcGxpdFZlcnRpY2FsPW5ldyBRbigic3BsaXQtdmVydGljYWwiLHtmb250Q2hhcmFjdGVyOiJcXGViNTcifSksUW4uc3F1aXJyZWw9bmV3IFFuKCJzcXVpcnJlbCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI1OCJ9KSxRbi5zdGFyRnVsbD1uZXcgUW4oInN0YXItZnVsbCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI1OSJ9KSxRbi5zdGFySGFsZj1uZXcgUW4oInN0YXItaGFsZiIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI1YSJ9KSxRbi5zeW1ib2xDbGFzcz1uZXcgUW4oInN5bWJvbC1jbGFzcyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI1YiJ9KSxRbi5zeW1ib2xDb2xvcj1uZXcgUW4oInN5bWJvbC1jb2xvciIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI1YyJ9KSxRbi5zeW1ib2xDdXN0b21Db2xvcj1uZXcgUW4oInN5bWJvbC1jdXN0b21jb2xvciIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI1YyJ9KSxRbi5zeW1ib2xDb25zdGFudD1uZXcgUW4oInN5bWJvbC1jb25zdGFudCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI1ZCJ9KSxRbi5zeW1ib2xFbnVtTWVtYmVyPW5ldyBRbigic3ltYm9sLWVudW0tbWVtYmVyIix7Zm9udENoYXJhY3RlcjoiXFxlYjVlIn0pLFFuLnN5bWJvbEZpZWxkPW5ldyBRbigic3ltYm9sLWZpZWxkIix7Zm9udENoYXJhY3RlcjoiXFxlYjVmIn0pLFFuLnN5bWJvbEZpbGU9bmV3IFFuKCJzeW1ib2wtZmlsZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI2MCJ9KSxRbi5zeW1ib2xJbnRlcmZhY2U9bmV3IFFuKCJzeW1ib2wtaW50ZXJmYWNlIix7Zm9udENoYXJhY3RlcjoiXFxlYjYxIn0pLFFuLnN5bWJvbEtleXdvcmQ9bmV3IFFuKCJzeW1ib2wta2V5d29yZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI2MiJ9KSxRbi5zeW1ib2xNaXNjPW5ldyBRbigic3ltYm9sLW1pc2MiLHtmb250Q2hhcmFjdGVyOiJcXGViNjMifSksUW4uc3ltYm9sT3BlcmF0b3I9bmV3IFFuKCJzeW1ib2wtb3BlcmF0b3IiLHtmb250Q2hhcmFjdGVyOiJcXGViNjQifSksUW4uc3ltYm9sUHJvcGVydHk9bmV3IFFuKCJzeW1ib2wtcHJvcGVydHkiLHtmb250Q2hhcmFjdGVyOiJcXGViNjUifSksUW4ud3JlbmNoPW5ldyBRbigid3JlbmNoIix7Zm9udENoYXJhY3RlcjoiXFxlYjY1In0pLFFuLndyZW5jaFN1YmFjdGlvbj1uZXcgUW4oIndyZW5jaC1zdWJhY3Rpb24iLHtmb250Q2hhcmFjdGVyOiJcXGViNjUifSksUW4uc3ltYm9sU25pcHBldD1uZXcgUW4oInN5bWJvbC1zbmlwcGV0Iix7Zm9udENoYXJhY3RlcjoiXFxlYjY2In0pLFFuLnRhc2tsaXN0PW5ldyBRbigidGFza2xpc3QiLHtmb250Q2hhcmFjdGVyOiJcXGViNjcifSksUW4udGVsZXNjb3BlPW5ldyBRbigidGVsZXNjb3BlIix7Zm9udENoYXJhY3RlcjoiXFxlYjY4In0pLFFuLnRleHRTaXplPW5ldyBRbigidGV4dC1zaXplIix7Zm9udENoYXJhY3RlcjoiXFxlYjY5In0pLFFuLnRocmVlQmFycz1uZXcgUW4oInRocmVlLWJhcnMiLHtmb250Q2hhcmFjdGVyOiJcXGViNmEifSksUW4udGh1bWJzZG93bj1uZXcgUW4oInRodW1ic2Rvd24iLHtmb250Q2hhcmFjdGVyOiJcXGViNmIifSksUW4udGh1bWJzdXA9bmV3IFFuKCJ0aHVtYnN1cCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI2YyJ9KSxRbi50b29scz1uZXcgUW4oInRvb2xzIix7Zm9udENoYXJhY3RlcjoiXFxlYjZkIn0pLFFuLnRyaWFuZ2xlRG93bj1uZXcgUW4oInRyaWFuZ2xlLWRvd24iLHtmb250Q2hhcmFjdGVyOiJcXGViNmUifSksUW4udHJpYW5nbGVMZWZ0PW5ldyBRbigidHJpYW5nbGUtbGVmdCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI2ZiJ9KSxRbi50cmlhbmdsZVJpZ2h0PW5ldyBRbigidHJpYW5nbGUtcmlnaHQiLHtmb250Q2hhcmFjdGVyOiJcXGViNzAifSksUW4udHJpYW5nbGVVcD1uZXcgUW4oInRyaWFuZ2xlLXVwIix7Zm9udENoYXJhY3RlcjoiXFxlYjcxIn0pLFFuLnR3aXR0ZXI9bmV3IFFuKCJ0d2l0dGVyIix7Zm9udENoYXJhY3RlcjoiXFxlYjcyIn0pLFFuLnVuZm9sZD1uZXcgUW4oInVuZm9sZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI3MyJ9KSxRbi51bmxvY2s9bmV3IFFuKCJ1bmxvY2siLHtmb250Q2hhcmFjdGVyOiJcXGViNzQifSksUW4udW5tdXRlPW5ldyBRbigidW5tdXRlIix7Zm9udENoYXJhY3RlcjoiXFxlYjc1In0pLFFuLnVudmVyaWZpZWQ9bmV3IFFuKCJ1bnZlcmlmaWVkIix7Zm9udENoYXJhY3RlcjoiXFxlYjc2In0pLFFuLnZlcmlmaWVkPW5ldyBRbigidmVyaWZpZWQiLHtmb250Q2hhcmFjdGVyOiJcXGViNzcifSksUW4udmVyc2lvbnM9bmV3IFFuKCJ2ZXJzaW9ucyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI3OCJ9KSxRbi52bUFjdGl2ZT1uZXcgUW4oInZtLWFjdGl2ZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI3OSJ9KSxRbi52bU91dGxpbmU9bmV3IFFuKCJ2bS1vdXRsaW5lIix7Zm9udENoYXJhY3RlcjoiXFxlYjdhIn0pLFFuLnZtUnVubmluZz1uZXcgUW4oInZtLXJ1bm5pbmciLHtmb250Q2hhcmFjdGVyOiJcXGViN2IifSksUW4ud2F0Y2g9bmV3IFFuKCJ3YXRjaCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI3YyJ9KSxRbi53aGl0ZXNwYWNlPW5ldyBRbigid2hpdGVzcGFjZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI3ZCJ9KSxRbi53aG9sZVdvcmQ9bmV3IFFuKCJ3aG9sZS13b3JkIix7Zm9udENoYXJhY3RlcjoiXFxlYjdlIn0pLFFuLndpbmRvdz1uZXcgUW4oIndpbmRvdyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI3ZiJ9KSxRbi53b3JkV3JhcD1uZXcgUW4oIndvcmQtd3JhcCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI4MCJ9KSxRbi56b29tSW49bmV3IFFuKCJ6b29tLWluIix7Zm9udENoYXJhY3RlcjoiXFxlYjgxIn0pLFFuLnpvb21PdXQ9bmV3IFFuKCJ6b29tLW91dCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI4MiJ9KSxRbi5saXN0RmlsdGVyPW5ldyBRbigibGlzdC1maWx0ZXIiLHtmb250Q2hhcmFjdGVyOiJcXGViODMifSksUW4ubGlzdEZsYXQ9bmV3IFFuKCJsaXN0LWZsYXQiLHtmb250Q2hhcmFjdGVyOiJcXGViODQifSksUW4ubGlzdFNlbGVjdGlvbj1uZXcgUW4oImxpc3Qtc2VsZWN0aW9uIix7Zm9udENoYXJhY3RlcjoiXFxlYjg1In0pLFFuLnNlbGVjdGlvbj1uZXcgUW4oInNlbGVjdGlvbiIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI4NSJ9KSxRbi5saXN0VHJlZT1uZXcgUW4oImxpc3QtdHJlZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI4NiJ9KSxRbi5kZWJ1Z0JyZWFrcG9pbnRGdW5jdGlvblVudmVyaWZpZWQ9bmV3IFFuKCJkZWJ1Zy1icmVha3BvaW50LWZ1bmN0aW9uLXVudmVyaWZpZWQiLHtmb250Q2hhcmFjdGVyOiJcXGViODcifSksUW4uZGVidWdCcmVha3BvaW50RnVuY3Rpb249bmV3IFFuKCJkZWJ1Zy1icmVha3BvaW50LWZ1bmN0aW9uIix7Zm9udENoYXJhY3RlcjoiXFxlYjg4In0pLFFuLmRlYnVnQnJlYWtwb2ludEZ1bmN0aW9uRGlzYWJsZWQ9bmV3IFFuKCJkZWJ1Zy1icmVha3BvaW50LWZ1bmN0aW9uLWRpc2FibGVkIix7Zm9udENoYXJhY3RlcjoiXFxlYjg4In0pLFFuLmRlYnVnU3RhY2tmcmFtZUFjdGl2ZT1uZXcgUW4oImRlYnVnLXN0YWNrZnJhbWUtYWN0aXZlIix7Zm9udENoYXJhY3RlcjoiXFxlYjg5In0pLFFuLmRlYnVnU3RhY2tmcmFtZURvdD1uZXcgUW4oImRlYnVnLXN0YWNrZnJhbWUtZG90Iix7Zm9udENoYXJhY3RlcjoiXFxlYjhhIn0pLFFuLmRlYnVnU3RhY2tmcmFtZT1uZXcgUW4oImRlYnVnLXN0YWNrZnJhbWUiLHtmb250Q2hhcmFjdGVyOiJcXGViOGIifSksUW4uZGVidWdTdGFja2ZyYW1lRm9jdXNlZD1uZXcgUW4oImRlYnVnLXN0YWNrZnJhbWUtZm9jdXNlZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI4YiJ9KSxRbi5kZWJ1Z0JyZWFrcG9pbnRVbnN1cHBvcnRlZD1uZXcgUW4oImRlYnVnLWJyZWFrcG9pbnQtdW5zdXBwb3J0ZWQiLHtmb250Q2hhcmFjdGVyOiJcXGViOGMifSksUW4uc3ltYm9sU3RyaW5nPW5ldyBRbigic3ltYm9sLXN0cmluZyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI4ZCJ9KSxRbi5kZWJ1Z1JldmVyc2VDb250aW51ZT1uZXcgUW4oImRlYnVnLXJldmVyc2UtY29udGludWUiLHtmb250Q2hhcmFjdGVyOiJcXGViOGUifSksUW4uZGVidWdTdGVwQmFjaz1uZXcgUW4oImRlYnVnLXN0ZXAtYmFjayIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI4ZiJ9KSxRbi5kZWJ1Z1Jlc3RhcnRGcmFtZT1uZXcgUW4oImRlYnVnLXJlc3RhcnQtZnJhbWUiLHtmb250Q2hhcmFjdGVyOiJcXGViOTAifSksUW4uY2FsbEluY29taW5nPW5ldyBRbigiY2FsbC1pbmNvbWluZyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI5MiJ9KSxRbi5jYWxsT3V0Z29pbmc9bmV3IFFuKCJjYWxsLW91dGdvaW5nIix7Zm9udENoYXJhY3RlcjoiXFxlYjkzIn0pLFFuLm1lbnU9bmV3IFFuKCJtZW51Iix7Zm9udENoYXJhY3RlcjoiXFxlYjk0In0pLFFuLmV4cGFuZEFsbD1uZXcgUW4oImV4cGFuZC1hbGwiLHtmb250Q2hhcmFjdGVyOiJcXGViOTUifSksUW4uZmVlZGJhY2s9bmV3IFFuKCJmZWVkYmFjayIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI5NiJ9KSxRbi5ncm91cEJ5UmVmVHlwZT1uZXcgUW4oImdyb3VwLWJ5LXJlZi10eXBlIix7Zm9udENoYXJhY3RlcjoiXFxlYjk3In0pLFFuLnVuZ3JvdXBCeVJlZlR5cGU9bmV3IFFuKCJ1bmdyb3VwLWJ5LXJlZi10eXBlIix7Zm9udENoYXJhY3RlcjoiXFxlYjk4In0pLFFuLmFjY291bnQ9bmV3IFFuKCJhY2NvdW50Iix7Zm9udENoYXJhY3RlcjoiXFxlYjk5In0pLFFuLmJlbGxEb3Q9bmV3IFFuKCJiZWxsLWRvdCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI5YSJ9KSxRbi5kZWJ1Z0NvbnNvbGU9bmV3IFFuKCJkZWJ1Zy1jb25zb2xlIix7Zm9udENoYXJhY3RlcjoiXFxlYjliIn0pLFFuLmxpYnJhcnk9bmV3IFFuKCJsaWJyYXJ5Iix7Zm9udENoYXJhY3RlcjoiXFxlYjljIn0pLFFuLm91dHB1dD1uZXcgUW4oIm91dHB1dCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI5ZCJ9KSxRbi5ydW5BbGw9bmV3IFFuKCJydW4tYWxsIix7Zm9udENoYXJhY3RlcjoiXFxlYjllIn0pLFFuLnN5bmNJZ25vcmVkPW5ldyBRbigic3luYy1pZ25vcmVkIix7Zm9udENoYXJhY3RlcjoiXFxlYjlmIn0pLFFuLnBpbm5lZD1uZXcgUW4oInBpbm5lZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJhMCJ9KSxRbi5naXRodWJJbnZlcnRlZD1uZXcgUW4oImdpdGh1Yi1pbnZlcnRlZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJhMSJ9KSxRbi5kZWJ1Z0FsdD1uZXcgUW4oImRlYnVnLWFsdCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI5MSJ9KSxRbi5zZXJ2ZXJQcm9jZXNzPW5ldyBRbigic2VydmVyLXByb2Nlc3MiLHtmb250Q2hhcmFjdGVyOiJcXGViYTIifSksUW4uc2VydmVyRW52aXJvbm1lbnQ9bmV3IFFuKCJzZXJ2ZXItZW52aXJvbm1lbnQiLHtmb250Q2hhcmFjdGVyOiJcXGViYTMifSksUW4ucGFzcz1uZXcgUW4oInBhc3MiLHtmb250Q2hhcmFjdGVyOiJcXGViYTQifSksUW4uc3RvcENpcmNsZT1uZXcgUW4oInN0b3AtY2lyY2xlIix7Zm9udENoYXJhY3RlcjoiXFxlYmE1In0pLFFuLnBsYXlDaXJjbGU9bmV3IFFuKCJwbGF5LWNpcmNsZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJhNiJ9KSxRbi5yZWNvcmQ9bmV3IFFuKCJyZWNvcmQiLHtmb250Q2hhcmFjdGVyOiJcXGViYTcifSksUW4uZGVidWdBbHRTbWFsbD1uZXcgUW4oImRlYnVnLWFsdC1zbWFsbCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJhOCJ9KSxRbi52bUNvbm5lY3Q9bmV3IFFuKCJ2bS1jb25uZWN0Iix7Zm9udENoYXJhY3RlcjoiXFxlYmE5In0pLFFuLmNsb3VkPW5ldyBRbigiY2xvdWQiLHtmb250Q2hhcmFjdGVyOiJcXGViYWEifSksUW4ubWVyZ2U9bmV3IFFuKCJtZXJnZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJhYiJ9KSxRbi5leHBvcnRJY29uPW5ldyBRbigiZXhwb3J0Iix7Zm9udENoYXJhY3RlcjoiXFxlYmFjIn0pLFFuLmdyYXBoTGVmdD1uZXcgUW4oImdyYXBoLWxlZnQiLHtmb250Q2hhcmFjdGVyOiJcXGViYWQifSksUW4ubWFnbmV0PW5ldyBRbigibWFnbmV0Iix7Zm9udENoYXJhY3RlcjoiXFxlYmFlIn0pLFFuLm5vdGVib29rPW5ldyBRbigibm90ZWJvb2siLHtmb250Q2hhcmFjdGVyOiJcXGViYWYifSksUW4ucmVkbz1uZXcgUW4oInJlZG8iLHtmb250Q2hhcmFjdGVyOiJcXGViYjAifSksUW4uY2hlY2tBbGw9bmV3IFFuKCJjaGVjay1hbGwiLHtmb250Q2hhcmFjdGVyOiJcXGViYjEifSksUW4ucGlubmVkRGlydHk9bmV3IFFuKCJwaW5uZWQtZGlydHkiLHtmb250Q2hhcmFjdGVyOiJcXGViYjIifSksUW4ucGFzc0ZpbGxlZD1uZXcgUW4oInBhc3MtZmlsbGVkIix7Zm9udENoYXJhY3RlcjoiXFxlYmIzIn0pLFFuLmNpcmNsZUxhcmdlRmlsbGVkPW5ldyBRbigiY2lyY2xlLWxhcmdlLWZpbGxlZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJiNCJ9KSxRbi5jaXJjbGVMYXJnZU91dGxpbmU9bmV3IFFuKCJjaXJjbGUtbGFyZ2Utb3V0bGluZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJiNSJ9KSxRbi5jb21iaW5lPW5ldyBRbigiY29tYmluZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJiNiJ9KSxRbi5nYXRoZXI9bmV3IFFuKCJnYXRoZXIiLHtmb250Q2hhcmFjdGVyOiJcXGViYjYifSksUW4udGFibGU9bmV3IFFuKCJ0YWJsZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJiNyJ9KSxRbi52YXJpYWJsZUdyb3VwPW5ldyBRbigidmFyaWFibGUtZ3JvdXAiLHtmb250Q2hhcmFjdGVyOiJcXGViYjgifSksUW4udHlwZUhpZXJhcmNoeT1uZXcgUW4oInR5cGUtaGllcmFyY2h5Iix7Zm9udENoYXJhY3RlcjoiXFxlYmI5In0pLFFuLnR5cGVIaWVyYXJjaHlTdWI9bmV3IFFuKCJ0eXBlLWhpZXJhcmNoeS1zdWIiLHtmb250Q2hhcmFjdGVyOiJcXGViYmEifSksUW4udHlwZUhpZXJhcmNoeVN1cGVyPW5ldyBRbigidHlwZS1oaWVyYXJjaHktc3VwZXIiLHtmb250Q2hhcmFjdGVyOiJcXGViYmIifSksUW4uZ2l0UHVsbFJlcXVlc3RDcmVhdGU9bmV3IFFuKCJnaXQtcHVsbC1yZXF1ZXN0LWNyZWF0ZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJiYyJ9KSxRbi5ydW5BYm92ZT1uZXcgUW4oInJ1bi1hYm92ZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJiZCJ9KSxRbi5ydW5CZWxvdz1uZXcgUW4oInJ1bi1iZWxvdyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJiZSJ9KSxRbi5ub3RlYm9va1RlbXBsYXRlPW5ldyBRbigibm90ZWJvb2stdGVtcGxhdGUiLHtmb250Q2hhcmFjdGVyOiJcXGViYmYifSksUW4uZGVidWdSZXJ1bj1uZXcgUW4oImRlYnVnLXJlcnVuIix7Zm9udENoYXJhY3RlcjoiXFxlYmMwIn0pLFFuLndvcmtzcGFjZVRydXN0ZWQ9bmV3IFFuKCJ3b3Jrc3BhY2UtdHJ1c3RlZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJjMSJ9KSxRbi53b3Jrc3BhY2VVbnRydXN0ZWQ9bmV3IFFuKCJ3b3Jrc3BhY2UtdW50cnVzdGVkIix7Zm9udENoYXJhY3RlcjoiXFxlYmMyIn0pLFFuLndvcmtzcGFjZVVuc3BlY2lmaWVkPW5ldyBRbigid29ya3NwYWNlLXVuc3BlY2lmaWVkIix7Zm9udENoYXJhY3RlcjoiXFxlYmMzIn0pLFFuLnRlcm1pbmFsQ21kPW5ldyBRbigidGVybWluYWwtY21kIix7Zm9udENoYXJhY3RlcjoiXFxlYmM0In0pLFFuLnRlcm1pbmFsRGViaWFuPW5ldyBRbigidGVybWluYWwtZGViaWFuIix7Zm9udENoYXJhY3RlcjoiXFxlYmM1In0pLFFuLnRlcm1pbmFsTGludXg9bmV3IFFuKCJ0ZXJtaW5hbC1saW51eCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJjNiJ9KSxRbi50ZXJtaW5hbFBvd2Vyc2hlbGw9bmV3IFFuKCJ0ZXJtaW5hbC1wb3dlcnNoZWxsIix7Zm9udENoYXJhY3RlcjoiXFxlYmM3In0pLFFuLnRlcm1pbmFsVG11eD1uZXcgUW4oInRlcm1pbmFsLXRtdXgiLHtmb250Q2hhcmFjdGVyOiJcXGViYzgifSksUW4udGVybWluYWxVYnVudHU9bmV3IFFuKCJ0ZXJtaW5hbC11YnVudHUiLHtmb250Q2hhcmFjdGVyOiJcXGViYzkifSksUW4udGVybWluYWxCYXNoPW5ldyBRbigidGVybWluYWwtYmFzaCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJjYSJ9KSxRbi5hcnJvd1N3YXA9bmV3IFFuKCJhcnJvdy1zd2FwIix7Zm9udENoYXJhY3RlcjoiXFxlYmNiIn0pLFFuLmNvcHk9bmV3IFFuKCJjb3B5Iix7Zm9udENoYXJhY3RlcjoiXFxlYmNjIn0pLFFuLnBlcnNvbkFkZD1uZXcgUW4oInBlcnNvbi1hZGQiLHtmb250Q2hhcmFjdGVyOiJcXGViY2QifSksUW4uZmlsdGVyRmlsbGVkPW5ldyBRbigiZmlsdGVyLWZpbGxlZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJjZSJ9KSxRbi53YW5kPW5ldyBRbigid2FuZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJjZiJ9KSxRbi5kZWJ1Z0xpbmVCeUxpbmU9bmV3IFFuKCJkZWJ1Zy1saW5lLWJ5LWxpbmUiLHtmb250Q2hhcmFjdGVyOiJcXGViZDAifSksUW4uaW5zcGVjdD1uZXcgUW4oImluc3BlY3QiLHtmb250Q2hhcmFjdGVyOiJcXGViZDEifSksUW4ubGF5ZXJzPW5ldyBRbigibGF5ZXJzIix7Zm9udENoYXJhY3RlcjoiXFxlYmQyIn0pLFFuLmxheWVyc0RvdD1uZXcgUW4oImxheWVycy1kb3QiLHtmb250Q2hhcmFjdGVyOiJcXGViZDMifSksUW4ubGF5ZXJzQWN0aXZlPW5ldyBRbigibGF5ZXJzLWFjdGl2ZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJkNCJ9KSxRbi5jb21wYXNzPW5ldyBRbigiY29tcGFzcyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJkNSJ9KSxRbi5jb21wYXNzRG90PW5ldyBRbigiY29tcGFzcy1kb3QiLHtmb250Q2hhcmFjdGVyOiJcXGViZDYifSksUW4uY29tcGFzc0FjdGl2ZT1uZXcgUW4oImNvbXBhc3MtYWN0aXZlIix7Zm9udENoYXJhY3RlcjoiXFxlYmQ3In0pLFFuLmF6dXJlPW5ldyBRbigiYXp1cmUiLHtmb250Q2hhcmFjdGVyOiJcXGViZDgifSksUW4uaXNzdWVEcmFmdD1uZXcgUW4oImlzc3VlLWRyYWZ0Iix7Zm9udENoYXJhY3RlcjoiXFxlYmQ5In0pLFFuLmdpdFB1bGxSZXF1ZXN0Q2xvc2VkPW5ldyBRbigiZ2l0LXB1bGwtcmVxdWVzdC1jbG9zZWQiLHtmb250Q2hhcmFjdGVyOiJcXGViZGEifSksUW4uZ2l0UHVsbFJlcXVlc3REcmFmdD1uZXcgUW4oImdpdC1wdWxsLXJlcXVlc3QtZHJhZnQiLHtmb250Q2hhcmFjdGVyOiJcXGViZGIifSksUW4uZGVidWdBbGw9bmV3IFFuKCJkZWJ1Zy1hbGwiLHtmb250Q2hhcmFjdGVyOiJcXGViZGMifSksUW4uZGVidWdDb3ZlcmFnZT1uZXcgUW4oImRlYnVnLWNvdmVyYWdlIix7Zm9udENoYXJhY3RlcjoiXFxlYmRkIn0pLFFuLnJ1bkVycm9ycz1uZXcgUW4oInJ1bi1lcnJvcnMiLHtmb250Q2hhcmFjdGVyOiJcXGViZGUifSksUW4uZm9sZGVyTGlicmFyeT1uZXcgUW4oImZvbGRlci1saWJyYXJ5Iix7Zm9udENoYXJhY3RlcjoiXFxlYmRmIn0pLFFuLmRlYnVnQ29udGludWVTbWFsbD1uZXcgUW4oImRlYnVnLWNvbnRpbnVlLXNtYWxsIix7Zm9udENoYXJhY3RlcjoiXFxlYmUwIn0pLFFuLmJlYWtlclN0b3A9bmV3IFFuKCJiZWFrZXItc3RvcCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJlMSJ9KSxRbi5ncmFwaExpbmU9bmV3IFFuKCJncmFwaC1saW5lIix7Zm9udENoYXJhY3RlcjoiXFxlYmUyIn0pLFFuLmdyYXBoU2NhdHRlcj1uZXcgUW4oImdyYXBoLXNjYXR0ZXIiLHtmb250Q2hhcmFjdGVyOiJcXGViZTMifSksUW4ucGllQ2hhcnQ9bmV3IFFuKCJwaWUtY2hhcnQiLHtmb250Q2hhcmFjdGVyOiJcXGViZTQifSksUW4uYnJhY2tldD1uZXcgUW4oImJyYWNrZXQiLFFuLmpzb24uZGVmaW5pdGlvbiksUW4uYnJhY2tldERvdD1uZXcgUW4oImJyYWNrZXQtZG90Iix7Zm9udENoYXJhY3RlcjoiXFxlYmU1In0pLFFuLmJyYWNrZXRFcnJvcj1uZXcgUW4oImJyYWNrZXQtZXJyb3IiLHtmb250Q2hhcmFjdGVyOiJcXGViZTYifSksUW4ubG9ja1NtYWxsPW5ldyBRbigibG9jay1zbWFsbCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJlNyJ9KSxRbi5henVyZURldm9wcz1uZXcgUW4oImF6dXJlLWRldm9wcyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJlOCJ9KSxRbi52ZXJpZmllZEZpbGxlZD1uZXcgUW4oInZlcmlmaWVkLWZpbGxlZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJlOSJ9KSxRbi5uZXdMaW5lPW5ldyBRbigibmV3bGluZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJlYSJ9KSxRbi5sYXlvdXQ9bmV3IFFuKCJsYXlvdXQiLHtmb250Q2hhcmFjdGVyOiJcXGViZWIifSksUW4ubGF5b3V0QWN0aXZpdHliYXJMZWZ0PW5ldyBRbigibGF5b3V0LWFjdGl2aXR5YmFyLWxlZnQiLHtmb250Q2hhcmFjdGVyOiJcXGViZWMifSksUW4ubGF5b3V0QWN0aXZpdHliYXJSaWdodD1uZXcgUW4oImxheW91dC1hY3Rpdml0eWJhci1yaWdodCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJlZCJ9KSxRbi5sYXlvdXRQYW5lbExlZnQ9bmV3IFFuKCJsYXlvdXQtcGFuZWwtbGVmdCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJlZSJ9KSxRbi5sYXlvdXRQYW5lbENlbnRlcj1uZXcgUW4oImxheW91dC1wYW5lbC1jZW50ZXIiLHtmb250Q2hhcmFjdGVyOiJcXGViZWYifSksUW4ubGF5b3V0UGFuZWxKdXN0aWZ5PW5ldyBRbigibGF5b3V0LXBhbmVsLWp1c3RpZnkiLHtmb250Q2hhcmFjdGVyOiJcXGViZjAifSksUW4ubGF5b3V0UGFuZWxSaWdodD1uZXcgUW4oImxheW91dC1wYW5lbC1yaWdodCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJmMSJ9KSxRbi5sYXlvdXRQYW5lbD1uZXcgUW4oImxheW91dC1wYW5lbCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJmMiJ9KSxRbi5sYXlvdXRTaWRlYmFyTGVmdD1uZXcgUW4oImxheW91dC1zaWRlYmFyLWxlZnQiLHtmb250Q2hhcmFjdGVyOiJcXGViZjMifSksUW4ubGF5b3V0U2lkZWJhclJpZ2h0PW5ldyBRbigibGF5b3V0LXNpZGViYXItcmlnaHQiLHtmb250Q2hhcmFjdGVyOiJcXGViZjQifSksUW4ubGF5b3V0U3RhdHVzYmFyPW5ldyBRbigibGF5b3V0LXN0YXR1c2JhciIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJmNSJ9KSxRbi5sYXlvdXRNZW51YmFyPW5ldyBRbigibGF5b3V0LW1lbnViYXIiLHtmb250Q2hhcmFjdGVyOiJcXGViZjYifSksUW4ubGF5b3V0Q2VudGVyZWQ9bmV3IFFuKCJsYXlvdXQtY2VudGVyZWQiLHtmb250Q2hhcmFjdGVyOiJcXGViZjcifSksUW4udGFyZ2V0PW5ldyBRbigidGFyZ2V0Iix7Zm9udENoYXJhY3RlcjoiXFxlYmY4In0pLFFuLmluZGVudD1uZXcgUW4oImluZGVudCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJmOSJ9KSxRbi5yZWNvcmRTbWFsbD1uZXcgUW4oInJlY29yZC1zbWFsbCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJmYSJ9KSxRbi5lcnJvclNtYWxsPW5ldyBRbigiZXJyb3Itc21hbGwiLHtmb250Q2hhcmFjdGVyOiJcXGViZmIifSksUW4uYXJyb3dDaXJjbGVEb3duPW5ldyBRbigiYXJyb3ctY2lyY2xlLWRvd24iLHtmb250Q2hhcmFjdGVyOiJcXGViZmMifSksUW4uYXJyb3dDaXJjbGVMZWZ0PW5ldyBRbigiYXJyb3ctY2lyY2xlLWxlZnQiLHtmb250Q2hhcmFjdGVyOiJcXGViZmQifSksUW4uYXJyb3dDaXJjbGVSaWdodD1uZXcgUW4oImFycm93LWNpcmNsZS1yaWdodCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJmZSJ9KSxRbi5hcnJvd0NpcmNsZVVwPW5ldyBRbigiYXJyb3ctY2lyY2xlLXVwIix7Zm9udENoYXJhY3RlcjoiXFxlYmZmIn0pLFFuLmRpYWxvZ0Vycm9yPW5ldyBRbigiZGlhbG9nLWVycm9yIixRbi5lcnJvci5kZWZpbml0aW9uKSxRbi5kaWFsb2dXYXJuaW5nPW5ldyBRbigiZGlhbG9nLXdhcm5pbmciLFFuLndhcm5pbmcuZGVmaW5pdGlvbiksUW4uZGlhbG9nSW5mbz1uZXcgUW4oImRpYWxvZy1pbmZvIixRbi5pbmZvLmRlZmluaXRpb24pLFFuLmRpYWxvZ0Nsb3NlPW5ldyBRbigiZGlhbG9nLWNsb3NlIixRbi5jbG9zZS5kZWZpbml0aW9uKSxRbi50cmVlSXRlbUV4cGFuZGVkPW5ldyBRbigidHJlZS1pdGVtLWV4cGFuZGVkIixRbi5jaGV2cm9uRG93bi5kZWZpbml0aW9uKSxRbi50cmVlRmlsdGVyT25UeXBlT249bmV3IFFuKCJ0cmVlLWZpbHRlci1vbi10eXBlLW9uIixRbi5saXN0RmlsdGVyLmRlZmluaXRpb24pLFFuLnRyZWVGaWx0ZXJPblR5cGVPZmY9bmV3IFFuKCJ0cmVlLWZpbHRlci1vbi10eXBlLW9mZiIsUW4ubGlzdFNlbGVjdGlvbi5kZWZpbml0aW9uKSxRbi50cmVlRmlsdGVyQ2xlYXI9bmV3IFFuKCJ0cmVlLWZpbHRlci1jbGVhciIsUW4uY2xvc2UuZGVmaW5pdGlvbiksUW4udHJlZUl0ZW1Mb2FkaW5nPW5ldyBRbigidHJlZS1pdGVtLWxvYWRpbmciLFFuLmxvYWRpbmcuZGVmaW5pdGlvbiksUW4ubWVudVNlbGVjdGlvbj1uZXcgUW4oIm1lbnUtc2VsZWN0aW9uIixRbi5jaGVjay5kZWZpbml0aW9uKSxRbi5tZW51U3VibWVudT1uZXcgUW4oIm1lbnUtc3VibWVudSIsUW4uY2hldnJvblJpZ2h0LmRlZmluaXRpb24pLFFuLm1lbnVCYXJNb3JlPW5ldyBRbigibWVudWJhci1tb3JlIixRbi5tb3JlLmRlZmluaXRpb24pLFFuLnNjcm9sbGJhckJ1dHRvbkxlZnQ9bmV3IFFuKCJzY3JvbGxiYXItYnV0dG9uLWxlZnQiLFFuLnRyaWFuZ2xlTGVmdC5kZWZpbml0aW9uKSxRbi5zY3JvbGxiYXJCdXR0b25SaWdodD1uZXcgUW4oInNjcm9sbGJhci1idXR0b24tcmlnaHQiLFFuLnRyaWFuZ2xlUmlnaHQuZGVmaW5pdGlvbiksUW4uc2Nyb2xsYmFyQnV0dG9uVXA9bmV3IFFuKCJzY3JvbGxiYXItYnV0dG9uLXVwIixRbi50cmlhbmdsZVVwLmRlZmluaXRpb24pLFFuLnNjcm9sbGJhckJ1dHRvbkRvd249bmV3IFFuKCJzY3JvbGxiYXItYnV0dG9uLWRvd24iLFFuLnRyaWFuZ2xlRG93bi5kZWZpbml0aW9uKSxRbi50b29sQmFyTW9yZT1uZXcgUW4oInRvb2xiYXItbW9yZSIsUW4ubW9yZS5kZWZpbml0aW9uKSxRbi5xdWlja0lucHV0QmFjaz1uZXcgUW4oInF1aWNrLWlucHV0LWJhY2siLFFuLmFycm93TGVmdC5kZWZpbml0aW9uKSxmdW5jdGlvbihlKXtlLmljb25OYW1lU2VnbWVudD0iW0EtWmEtejAtOV0rIixlLmljb25OYW1lRXhwcmVzc2lvbj0iW0EtWmEtejAtOS1dKyIsZS5pY29uTW9kaWZpZXJFeHByZXNzaW9uPSJ+W0EtWmEtel0rIixlLmljb25OYW1lQ2hhcmFjdGVyPSJbQS1aYS16MC05fi1dIjtjb25zdCB0PW5ldyBSZWdFeHAoYF4oJHtlLmljb25OYW1lRXhwcmVzc2lvbn0pKCR7ZS5pY29uTW9kaWZpZXJFeHByZXNzaW9ufSk/JGApO2Z1bmN0aW9uIG4oZSl7aWYoZSBpbnN0YW5jZW9mIFFuKXJldHVyblsiY29kaWNvbiIsImNvZGljb24tIitlLmlkXTtjb25zdCByPXQuZXhlYyhlLmlkKTtpZighcilyZXR1cm4gbihRbi5lcnJvcik7bGV0WyxpLGFdPXI7Y29uc3Qgbz1bImNvZGljb24iLCJjb2RpY29uLSIraV07cmV0dXJuIGEmJm8ucHVzaCgiY29kaWNvbi1tb2RpZmllci0iK2Euc3Vic3RyKDEpKSxvfWUuYXNDbGFzc05hbWVBcnJheT1uLGUuYXNDbGFzc05hbWU9ZnVuY3Rpb24oZSl7cmV0dXJuIG4oZSkuam9pbigiICIpfSxlLmFzQ1NTU2VsZWN0b3I9ZnVuY3Rpb24oZSl7cmV0dXJuIi4iK24oZSkuam9pbigiLiIpfX0oenR8fCh6dD17fSkpO2NsYXNzIFpue2NvbnN0cnVjdG9yKGUsdCxuKXt0aGlzLl90b2tlbkJyYW5kPXZvaWQgMCx0aGlzLm9mZnNldD1lLHRoaXMudHlwZT10LHRoaXMubGFuZ3VhZ2U9bn10b1N0cmluZygpe3JldHVybiIoIit0aGlzLm9mZnNldCsiLCAiK3RoaXMudHlwZSsiKSJ9fWNsYXNzIGVye2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5fdG9rZW5pemF0aW9uUmVzdWx0QnJhbmQ9dm9pZCAwLHRoaXMudG9rZW5zPWUsdGhpcy5lbmRTdGF0ZT10fX1jbGFzcyB0cntjb25zdHJ1Y3RvcihlLHQpe3RoaXMuX2VuY29kZWRUb2tlbml6YXRpb25SZXN1bHRCcmFuZD12b2lkIDAsdGhpcy50b2tlbnM9ZSx0aGlzLmVuZFN0YXRlPXR9fSFmdW5jdGlvbihlKXtjb25zdCB0PW5ldyBNYXA7dC5zZXQoMCxRbi5zeW1ib2xNZXRob2QpLHQuc2V0KDEsUW4uc3ltYm9sRnVuY3Rpb24pLHQuc2V0KDIsUW4uc3ltYm9sQ29uc3RydWN0b3IpLHQuc2V0KDMsUW4uc3ltYm9sRmllbGQpLHQuc2V0KDQsUW4uc3ltYm9sVmFyaWFibGUpLHQuc2V0KDUsUW4uc3ltYm9sQ2xhc3MpLHQuc2V0KDYsUW4uc3ltYm9sU3RydWN0KSx0LnNldCg3LFFuLnN5bWJvbEludGVyZmFjZSksdC5zZXQoOCxRbi5zeW1ib2xNb2R1bGUpLHQuc2V0KDksUW4uc3ltYm9sUHJvcGVydHkpLHQuc2V0KDEwLFFuLnN5bWJvbEV2ZW50KSx0LnNldCgxMSxRbi5zeW1ib2xPcGVyYXRvciksdC5zZXQoMTIsUW4uc3ltYm9sVW5pdCksdC5zZXQoMTMsUW4uc3ltYm9sVmFsdWUpLHQuc2V0KDE1LFFuLnN5bWJvbEVudW0pLHQuc2V0KDE0LFFuLnN5bWJvbENvbnN0YW50KSx0LnNldCgxNSxRbi5zeW1ib2xFbnVtKSx0LnNldCgxNixRbi5zeW1ib2xFbnVtTWVtYmVyKSx0LnNldCgxNyxRbi5zeW1ib2xLZXl3b3JkKSx0LnNldCgyNyxRbi5zeW1ib2xTbmlwcGV0KSx0LnNldCgxOCxRbi5zeW1ib2xUZXh0KSx0LnNldCgxOSxRbi5zeW1ib2xDb2xvciksdC5zZXQoMjAsUW4uc3ltYm9sRmlsZSksdC5zZXQoMjEsUW4uc3ltYm9sUmVmZXJlbmNlKSx0LnNldCgyMixRbi5zeW1ib2xDdXN0b21Db2xvciksdC5zZXQoMjMsUW4uc3ltYm9sRm9sZGVyKSx0LnNldCgyNCxRbi5zeW1ib2xUeXBlUGFyYW1ldGVyKSx0LnNldCgyNSxRbi5hY2NvdW50KSx0LnNldCgyNixRbi5pc3N1ZXMpLGUudG9JY29uPWZ1bmN0aW9uKGUpe2xldCBuPXQuZ2V0KGUpO3JldHVybiBufHwoY29uc29sZS5pbmZvKCJObyBjb2RpY29uIGZvdW5kIGZvciBDb21wbGV0aW9uSXRlbUtpbmQgIitlKSxuPVFuLnN5bWJvbFByb3BlcnR5KSxufTtjb25zdCBuPW5ldyBNYXA7bi5zZXQoIm1ldGhvZCIsMCksbi5zZXQoImZ1bmN0aW9uIiwxKSxuLnNldCgiY29uc3RydWN0b3IiLDIpLG4uc2V0KCJmaWVsZCIsMyksbi5zZXQoInZhcmlhYmxlIiw0KSxuLnNldCgiY2xhc3MiLDUpLG4uc2V0KCJzdHJ1Y3QiLDYpLG4uc2V0KCJpbnRlcmZhY2UiLDcpLG4uc2V0KCJtb2R1bGUiLDgpLG4uc2V0KCJwcm9wZXJ0eSIsOSksbi5zZXQoImV2ZW50IiwxMCksbi5zZXQoIm9wZXJhdG9yIiwxMSksbi5zZXQoInVuaXQiLDEyKSxuLnNldCgidmFsdWUiLDEzKSxuLnNldCgiY29uc3RhbnQiLDE0KSxuLnNldCgiZW51bSIsMTUpLG4uc2V0KCJlbnVtLW1lbWJlciIsMTYpLG4uc2V0KCJlbnVtTWVtYmVyIiwxNiksbi5zZXQoImtleXdvcmQiLDE3KSxuLnNldCgic25pcHBldCIsMjcpLG4uc2V0KCJ0ZXh0IiwxOCksbi5zZXQoImNvbG9yIiwxOSksbi5zZXQoImZpbGUiLDIwKSxuLnNldCgicmVmZXJlbmNlIiwyMSksbi5zZXQoImN1c3RvbWNvbG9yIiwyMiksbi5zZXQoImZvbGRlciIsMjMpLG4uc2V0KCJ0eXBlLXBhcmFtZXRlciIsMjQpLG4uc2V0KCJ0eXBlUGFyYW1ldGVyIiwyNCksbi5zZXQoImFjY291bnQiLDI1KSxuLnNldCgiaXNzdWUiLDI2KSxlLmZyb21TdHJpbmc9ZnVuY3Rpb24oZSx0KXtsZXQgcj1uLmdldChlKTtyZXR1cm4gdm9pZCAwIT09cnx8dHx8KHI9OSkscn19KFd0fHwoV3Q9e30pKSxmdW5jdGlvbihlKXtlW2UuQXV0b21hdGljPTBdPSJBdXRvbWF0aWMiLGVbZS5FeHBsaWNpdD0xXT0iRXhwbGljaXQifShPdHx8KE90PXt9KSksZnVuY3Rpb24oZSl7ZVtlLkludm9rZT0xXT0iSW52b2tlIixlW2UuVHJpZ2dlckNoYXJhY3Rlcj0yXT0iVHJpZ2dlckNoYXJhY3RlciIsZVtlLkNvbnRlbnRDaGFuZ2U9M109IkNvbnRlbnRDaGFuZ2UifShQdHx8KFB0PXt9KSksZnVuY3Rpb24oZSl7ZVtlLlRleHQ9MF09IlRleHQiLGVbZS5SZWFkPTFdPSJSZWFkIixlW2UuV3JpdGU9Ml09IldyaXRlIn0ocXR8fChxdD17fSkpLGZ1bmN0aW9uKGUpe2NvbnN0IHQ9bmV3IE1hcDt0LnNldCgwLFFuLnN5bWJvbEZpbGUpLHQuc2V0KDEsUW4uc3ltYm9sTW9kdWxlKSx0LnNldCgyLFFuLnN5bWJvbE5hbWVzcGFjZSksdC5zZXQoMyxRbi5zeW1ib2xQYWNrYWdlKSx0LnNldCg0LFFuLnN5bWJvbENsYXNzKSx0LnNldCg1LFFuLnN5bWJvbE1ldGhvZCksdC5zZXQoNixRbi5zeW1ib2xQcm9wZXJ0eSksdC5zZXQoNyxRbi5zeW1ib2xGaWVsZCksdC5zZXQoOCxRbi5zeW1ib2xDb25zdHJ1Y3RvciksdC5zZXQoOSxRbi5zeW1ib2xFbnVtKSx0LnNldCgxMCxRbi5zeW1ib2xJbnRlcmZhY2UpLHQuc2V0KDExLFFuLnN5bWJvbEZ1bmN0aW9uKSx0LnNldCgxMixRbi5zeW1ib2xWYXJpYWJsZSksdC5zZXQoMTMsUW4uc3ltYm9sQ29uc3RhbnQpLHQuc2V0KDE0LFFuLnN5bWJvbFN0cmluZyksdC5zZXQoMTUsUW4uc3ltYm9sTnVtYmVyKSx0LnNldCgxNixRbi5zeW1ib2xCb29sZWFuKSx0LnNldCgxNyxRbi5zeW1ib2xBcnJheSksdC5zZXQoMTgsUW4uc3ltYm9sT2JqZWN0KSx0LnNldCgxOSxRbi5zeW1ib2xLZXkpLHQuc2V0KDIwLFFuLnN5bWJvbE51bGwpLHQuc2V0KDIxLFFuLnN5bWJvbEVudW1NZW1iZXIpLHQuc2V0KDIyLFFuLnN5bWJvbFN0cnVjdCksdC5zZXQoMjMsUW4uc3ltYm9sRXZlbnQpLHQuc2V0KDI0LFFuLnN5bWJvbE9wZXJhdG9yKSx0LnNldCgyNSxRbi5zeW1ib2xUeXBlUGFyYW1ldGVyKSxlLnRvSWNvbj1mdW5jdGlvbihlKXtsZXQgbj10LmdldChlKTtyZXR1cm4gbnx8KGNvbnNvbGUuaW5mbygiTm8gY29kaWNvbiBmb3VuZCBmb3IgU3ltYm9sS2luZCAiK2UpLG49UW4uc3ltYm9sUHJvcGVydHkpLG59fShGdHx8KEZ0PXt9KSksZnVuY3Rpb24oZSl7ZS5pcz1mdW5jdGlvbihlKXtyZXR1cm4hKCFlfHwib2JqZWN0IiE9dHlwZW9mIGUpJiYoInN0cmluZyI9PXR5cGVvZiBlLmlkJiYic3RyaW5nIj09dHlwZW9mIGUudGl0bGUpfX0oQnR8fChCdD17fSkpLGZ1bmN0aW9uKGUpe2VbZS5UeXBlPTFdPSJUeXBlIixlW2UuUGFyYW1ldGVyPTJdPSJQYXJhbWV0ZXIifShWdHx8KFZ0PXt9KSksbmV3IGNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy5fbWFwPW5ldyBNYXAsdGhpcy5fZmFjdG9yaWVzPW5ldyBNYXAsdGhpcy5fb25EaWRDaGFuZ2U9bmV3IFAsdGhpcy5vbkRpZENoYW5nZT10aGlzLl9vbkRpZENoYW5nZS5ldmVudCx0aGlzLl9jb2xvck1hcD1udWxsfWZpcmUoZSl7dGhpcy5fb25EaWRDaGFuZ2UuZmlyZSh7Y2hhbmdlZExhbmd1YWdlczplLGNoYW5nZWRDb2xvck1hcDohMX0pfXJlZ2lzdGVyKGUsdCl7cmV0dXJuIHRoaXMuX21hcC5zZXQoZSx0KSx0aGlzLmZpcmUoW2VdKSxkKCgoKT0+e3RoaXMuX21hcC5nZXQoZSk9PT10JiYodGhpcy5fbWFwLmRlbGV0ZShlKSx0aGlzLmZpcmUoW2VdKSl9KSl9cmVnaXN0ZXJGYWN0b3J5KGUsdCl7dmFyIG47bnVsbD09PShuPXRoaXMuX2ZhY3Rvcmllcy5nZXQoZSkpfHx2b2lkIDA9PT1ufHxuLmRpc3Bvc2UoKTtjb25zdCByPW5ldyBZbih0aGlzLGUsdCk7cmV0dXJuIHRoaXMuX2ZhY3Rvcmllcy5zZXQoZSxyKSxkKCgoKT0+e2NvbnN0IHQ9dGhpcy5fZmFjdG9yaWVzLmdldChlKTt0JiZ0PT09ciYmKHRoaXMuX2ZhY3Rvcmllcy5kZWxldGUoZSksdC5kaXNwb3NlKCkpfSkpfWdldE9yQ3JlYXRlKGUpe3JldHVybiBYbih0aGlzLHZvaWQgMCx2b2lkIDAsKGZ1bmN0aW9uKigpe2NvbnN0IHQ9dGhpcy5nZXQoZSk7aWYodClyZXR1cm4gdDtjb25zdCBuPXRoaXMuX2ZhY3Rvcmllcy5nZXQoZSk7cmV0dXJuIW58fG4uaXNSZXNvbHZlZD9udWxsOih5aWVsZCBuLnJlc29sdmUoKSx0aGlzLmdldChlKSl9KSl9Z2V0KGUpe3JldHVybiB0aGlzLl9tYXAuZ2V0KGUpfHxudWxsfWlzUmVzb2x2ZWQoZSl7aWYodGhpcy5nZXQoZSkpcmV0dXJuITA7Y29uc3QgdD10aGlzLl9mYWN0b3JpZXMuZ2V0KGUpO3JldHVybiEodCYmIXQuaXNSZXNvbHZlZCl9c2V0Q29sb3JNYXAoZSl7dGhpcy5fY29sb3JNYXA9ZSx0aGlzLl9vbkRpZENoYW5nZS5maXJlKHtjaGFuZ2VkTGFuZ3VhZ2VzOkFycmF5LmZyb20odGhpcy5fbWFwLmtleXMoKSksY2hhbmdlZENvbG9yTWFwOiEwfSl9Z2V0Q29sb3JNYXAoKXtyZXR1cm4gdGhpcy5fY29sb3JNYXB9Z2V0RGVmYXVsdEJhY2tncm91bmQoKXtyZXR1cm4gdGhpcy5fY29sb3JNYXAmJnRoaXMuX2NvbG9yTWFwLmxlbmd0aD4yP3RoaXMuX2NvbG9yTWFwWzJdOm51bGx9fSxmdW5jdGlvbihlKXtlW2UuVW5rbm93bj0wXT0iVW5rbm93biIsZVtlLkRpc2FibGVkPTFdPSJEaXNhYmxlZCIsZVtlLkVuYWJsZWQ9Ml09IkVuYWJsZWQifShLdHx8KEt0PXt9KSksZnVuY3Rpb24oZSl7ZVtlLk5vbmU9MF09Ik5vbmUiLGVbZS5EZWZhdWx0Rm9yZWdyb3VuZD0xXT0iRGVmYXVsdEZvcmVncm91bmQiLGVbZS5EZWZhdWx0QmFja2dyb3VuZD0yXT0iRGVmYXVsdEJhY2tncm91bmQifShqdHx8KGp0PXt9KSksZnVuY3Rpb24oZSl7ZS5EQVJLPSJkYXJrIixlLkxJR0hUPSJsaWdodCIsZS5ISUdIX0NPTlRSQVNUPSJoYyJ9KEd0fHwoR3Q9e30pKSxmdW5jdGlvbihlKXtlW2UuS2VlcFdoaXRlc3BhY2U9MV09IktlZXBXaGl0ZXNwYWNlIixlW2UuSW5zZXJ0QXNTbmlwcGV0PTRdPSJJbnNlcnRBc1NuaXBwZXQifSgkdHx8KCR0PXt9KSksZnVuY3Rpb24oZSl7ZVtlLk1ldGhvZD0wXT0iTWV0aG9kIixlW2UuRnVuY3Rpb249MV09IkZ1bmN0aW9uIixlW2UuQ29uc3RydWN0b3I9Ml09IkNvbnN0cnVjdG9yIixlW2UuRmllbGQ9M109IkZpZWxkIixlW2UuVmFyaWFibGU9NF09IlZhcmlhYmxlIixlW2UuQ2xhc3M9NV09IkNsYXNzIixlW2UuU3RydWN0PTZdPSJTdHJ1Y3QiLGVbZS5JbnRlcmZhY2U9N109IkludGVyZmFjZSIsZVtlLk1vZHVsZT04XT0iTW9kdWxlIixlW2UuUHJvcGVydHk9OV09IlByb3BlcnR5IixlW2UuRXZlbnQ9MTBdPSJFdmVudCIsZVtlLk9wZXJhdG9yPTExXT0iT3BlcmF0b3IiLGVbZS5Vbml0PTEyXT0iVW5pdCIsZVtlLlZhbHVlPTEzXT0iVmFsdWUiLGVbZS5Db25zdGFudD0xNF09IkNvbnN0YW50IixlW2UuRW51bT0xNV09IkVudW0iLGVbZS5FbnVtTWVtYmVyPTE2XT0iRW51bU1lbWJlciIsZVtlLktleXdvcmQ9MTddPSJLZXl3b3JkIixlW2UuVGV4dD0xOF09IlRleHQiLGVbZS5Db2xvcj0xOV09IkNvbG9yIixlW2UuRmlsZT0yMF09IkZpbGUiLGVbZS5SZWZlcmVuY2U9MjFdPSJSZWZlcmVuY2UiLGVbZS5DdXN0b21jb2xvcj0yMl09IkN1c3RvbWNvbG9yIixlW2UuRm9sZGVyPTIzXT0iRm9sZGVyIixlW2UuVHlwZVBhcmFtZXRlcj0yNF09IlR5cGVQYXJhbWV0ZXIiLGVbZS5Vc2VyPTI1XT0iVXNlciIsZVtlLklzc3VlPTI2XT0iSXNzdWUiLGVbZS5TbmlwcGV0PTI3XT0iU25pcHBldCJ9KEp0fHwoSnQ9e30pKSxmdW5jdGlvbihlKXtlW2UuRGVwcmVjYXRlZD0xXT0iRGVwcmVjYXRlZCJ9KFh0fHwoWHQ9e30pKSxmdW5jdGlvbihlKXtlW2UuSW52b2tlPTBdPSJJbnZva2UiLGVbZS5UcmlnZ2VyQ2hhcmFjdGVyPTFdPSJUcmlnZ2VyQ2hhcmFjdGVyIixlW2UuVHJpZ2dlckZvckluY29tcGxldGVDb21wbGV0aW9ucz0yXT0iVHJpZ2dlckZvckluY29tcGxldGVDb21wbGV0aW9ucyJ9KFl0fHwoWXQ9e30pKSxmdW5jdGlvbihlKXtlW2UuQVBQTElDQVRJT049MV09IkFQUExJQ0FUSU9OIixlW2UuTUFDSElORT0yXT0iTUFDSElORSIsZVtlLldJTkRPVz0zXT0iV0lORE9XIixlW2UuUkVTT1VSQ0U9NF09IlJFU09VUkNFIixlW2UuTEFOR1VBR0VfT1ZFUlJJREFCTEU9NV09IkxBTkdVQUdFX09WRVJSSURBQkxFIixlW2UuTUFDSElORV9PVkVSUklEQUJMRT02XT0iTUFDSElORV9PVkVSUklEQUJMRSJ9KFF0fHwoUXQ9e30pKSxmdW5jdGlvbihlKXtlW2UuVVNFUj0xXT0iVVNFUiIsZVtlLlVTRVJfTE9DQUw9Ml09IlVTRVJfTE9DQUwiLGVbZS5VU0VSX1JFTU9URT0zXT0iVVNFUl9SRU1PVEUiLGVbZS5XT1JLU1BBQ0U9NF09IldPUktTUEFDRSIsZVtlLldPUktTUEFDRV9GT0xERVI9NV09IldPUktTUEFDRV9GT0xERVIiLGVbZS5ERUZBVUxUPTZdPSJERUZBVUxUIixlW2UuTUVNT1JZPTddPSJNRU1PUlkifShadHx8KFp0PXt9KSksZnVuY3Rpb24oZSl7ZVtlLkVYQUNUPTBdPSJFWEFDVCIsZVtlLkFCT1ZFPTFdPSJBQk9WRSIsZVtlLkJFTE9XPTJdPSJCRUxPVyJ9KGVufHwoZW49e30pKSxmdW5jdGlvbihlKXtlW2UuRmFsc2U9MF09IkZhbHNlIixlW2UuVHJ1ZT0xXT0iVHJ1ZSIsZVtlLkRlZmluZWQ9Ml09IkRlZmluZWQiLGVbZS5Ob3Q9M109Ik5vdCIsZVtlLkVxdWFscz00XT0iRXF1YWxzIixlW2UuTm90RXF1YWxzPTVdPSJOb3RFcXVhbHMiLGVbZS5BbmQ9Nl09IkFuZCIsZVtlLlJlZ2V4PTddPSJSZWdleCIsZVtlLk5vdFJlZ2V4PThdPSJOb3RSZWdleCIsZVtlLk9yPTldPSJPciIsZVtlLkluPTEwXT0iSW4iLGVbZS5Ob3RJbj0xMV09Ik5vdEluIixlW2UuR3JlYXRlcj0xMl09IkdyZWF0ZXIiLGVbZS5HcmVhdGVyRXF1YWxzPTEzXT0iR3JlYXRlckVxdWFscyIsZVtlLlNtYWxsZXI9MTRdPSJTbWFsbGVyIixlW2UuU21hbGxlckVxdWFscz0xNV09IlNtYWxsZXJFcXVhbHMifSh0bnx8KHRuPXt9KSksZnVuY3Rpb24oZSl7ZVtlLk5vdFNldD0wXT0iTm90U2V0IixlW2UuQ29udGVudEZsdXNoPTFdPSJDb250ZW50Rmx1c2giLGVbZS5SZWNvdmVyRnJvbU1hcmtlcnM9Ml09IlJlY292ZXJGcm9tTWFya2VycyIsZVtlLkV4cGxpY2l0PTNdPSJFeHBsaWNpdCIsZVtlLlBhc3RlPTRdPSJQYXN0ZSIsZVtlLlVuZG89NV09IlVuZG8iLGVbZS5SZWRvPTZdPSJSZWRvIn0obm58fChubj17fSkpLGZ1bmN0aW9uKGUpe2VbZS5MRj0xXT0iTEYiLGVbZS5DUkxGPTJdPSJDUkxGIn0ocm58fChybj17fSkpLGZ1bmN0aW9uKGUpe2VbZS5UZXh0PTBdPSJUZXh0IixlW2UuUmVhZD0xXT0iUmVhZCIsZVtlLldyaXRlPTJdPSJXcml0ZSJ9KGFufHwoYW49e30pKSxmdW5jdGlvbihlKXtlLk11bHRpbGluZT0ibXVsdGlsaW5lVGV4dCIsZS5TaW5nbGVsaW5lPSJzaW5nbGVsaW5lVGV4dCJ9KG9ufHwob249e30pKSxmdW5jdGlvbihlKXtlW2UuTm9uZT0wXT0iTm9uZSIsZVtlLktlZXA9MV09IktlZXAiLGVbZS5CcmFja2V0cz0yXT0iQnJhY2tldHMiLGVbZS5BZHZhbmNlZD0zXT0iQWR2YW5jZWQiLGVbZS5GdWxsPTRdPSJGdWxsIn0oc258fChzbj17fSkpLGZ1bmN0aW9uKGUpe2VbZS5hY2NlcHRTdWdnZXN0aW9uT25Db21taXRDaGFyYWN0ZXI9MF09ImFjY2VwdFN1Z2dlc3Rpb25PbkNvbW1pdENoYXJhY3RlciIsZVtlLmFjY2VwdFN1Z2dlc3Rpb25PbkVudGVyPTFdPSJhY2NlcHRTdWdnZXN0aW9uT25FbnRlciIsZVtlLmFjY2Vzc2liaWxpdHlTdXBwb3J0PTJdPSJhY2Nlc3NpYmlsaXR5U3VwcG9ydCIsZVtlLmFjY2Vzc2liaWxpdHlQYWdlU2l6ZT0zXT0iYWNjZXNzaWJpbGl0eVBhZ2VTaXplIixlW2UuYXJpYUxhYmVsPTRdPSJhcmlhTGFiZWwiLGVbZS5hdXRvQ2xvc2luZ0JyYWNrZXRzPTVdPSJhdXRvQ2xvc2luZ0JyYWNrZXRzIixlW2UuYXV0b0Nsb3NpbmdEZWxldGU9Nl09ImF1dG9DbG9zaW5nRGVsZXRlIixlW2UuYXV0b0Nsb3NpbmdPdmVydHlwZT03XT0iYXV0b0Nsb3NpbmdPdmVydHlwZSIsZVtlLmF1dG9DbG9zaW5nUXVvdGVzPThdPSJhdXRvQ2xvc2luZ1F1b3RlcyIsZVtlLmF1dG9JbmRlbnQ9OV09ImF1dG9JbmRlbnQiLGVbZS5hdXRvbWF0aWNMYXlvdXQ9MTBdPSJhdXRvbWF0aWNMYXlvdXQiLGVbZS5hdXRvU3Vycm91bmQ9MTFdPSJhdXRvU3Vycm91bmQiLGVbZS5icmFja2V0UGFpckNvbG9yaXphdGlvbj0xMl09ImJyYWNrZXRQYWlyQ29sb3JpemF0aW9uIixlW2UuZ3VpZGVzPTEzXT0iZ3VpZGVzIixlW2UuY29kZUxlbnM9MTRdPSJjb2RlTGVucyIsZVtlLmNvZGVMZW5zRm9udEZhbWlseT0xNV09ImNvZGVMZW5zRm9udEZhbWlseSIsZVtlLmNvZGVMZW5zRm9udFNpemU9MTZdPSJjb2RlTGVuc0ZvbnRTaXplIixlW2UuY29sb3JEZWNvcmF0b3JzPTE3XT0iY29sb3JEZWNvcmF0b3JzIixlW2UuY29sdW1uU2VsZWN0aW9uPTE4XT0iY29sdW1uU2VsZWN0aW9uIixlW2UuY29tbWVudHM9MTldPSJjb21tZW50cyIsZVtlLmNvbnRleHRtZW51PTIwXT0iY29udGV4dG1lbnUiLGVbZS5jb3B5V2l0aFN5bnRheEhpZ2hsaWdodGluZz0yMV09ImNvcHlXaXRoU3ludGF4SGlnaGxpZ2h0aW5nIixlW2UuY3Vyc29yQmxpbmtpbmc9MjJdPSJjdXJzb3JCbGlua2luZyIsZVtlLmN1cnNvclNtb290aENhcmV0QW5pbWF0aW9uPTIzXT0iY3Vyc29yU21vb3RoQ2FyZXRBbmltYXRpb24iLGVbZS5jdXJzb3JTdHlsZT0yNF09ImN1cnNvclN0eWxlIixlW2UuY3Vyc29yU3Vycm91bmRpbmdMaW5lcz0yNV09ImN1cnNvclN1cnJvdW5kaW5nTGluZXMiLGVbZS5jdXJzb3JTdXJyb3VuZGluZ0xpbmVzU3R5bGU9MjZdPSJjdXJzb3JTdXJyb3VuZGluZ0xpbmVzU3R5bGUiLGVbZS5jdXJzb3JXaWR0aD0yN109ImN1cnNvcldpZHRoIixlW2UuZGlzYWJsZUxheWVySGludGluZz0yOF09ImRpc2FibGVMYXllckhpbnRpbmciLGVbZS5kaXNhYmxlTW9ub3NwYWNlT3B0aW1pemF0aW9ucz0yOV09ImRpc2FibGVNb25vc3BhY2VPcHRpbWl6YXRpb25zIixlW2UuZG9tUmVhZE9ubHk9MzBdPSJkb21SZWFkT25seSIsZVtlLmRyYWdBbmREcm9wPTMxXT0iZHJhZ0FuZERyb3AiLGVbZS5lbXB0eVNlbGVjdGlvbkNsaXBib2FyZD0zMl09ImVtcHR5U2VsZWN0aW9uQ2xpcGJvYXJkIixlW2UuZXh0cmFFZGl0b3JDbGFzc05hbWU9MzNdPSJleHRyYUVkaXRvckNsYXNzTmFtZSIsZVtlLmZhc3RTY3JvbGxTZW5zaXRpdml0eT0zNF09ImZhc3RTY3JvbGxTZW5zaXRpdml0eSIsZVtlLmZpbmQ9MzVdPSJmaW5kIixlW2UuZml4ZWRPdmVyZmxvd1dpZGdldHM9MzZdPSJmaXhlZE92ZXJmbG93V2lkZ2V0cyIsZVtlLmZvbGRpbmc9MzddPSJmb2xkaW5nIixlW2UuZm9sZGluZ1N0cmF0ZWd5PTM4XT0iZm9sZGluZ1N0cmF0ZWd5IixlW2UuZm9sZGluZ0hpZ2hsaWdodD0zOV09ImZvbGRpbmdIaWdobGlnaHQiLGVbZS5mb2xkaW5nSW1wb3J0c0J5RGVmYXVsdD00MF09ImZvbGRpbmdJbXBvcnRzQnlEZWZhdWx0IixlW2UuZm9sZGluZ01heGltdW1SZWdpb25zPTQxXT0iZm9sZGluZ01heGltdW1SZWdpb25zIixlW2UudW5mb2xkT25DbGlja0FmdGVyRW5kT2ZMaW5lPTQyXT0idW5mb2xkT25DbGlja0FmdGVyRW5kT2ZMaW5lIixlW2UuZm9udEZhbWlseT00M109ImZvbnRGYW1pbHkiLGVbZS5mb250SW5mbz00NF09ImZvbnRJbmZvIixlW2UuZm9udExpZ2F0dXJlcz00NV09ImZvbnRMaWdhdHVyZXMiLGVbZS5mb250U2l6ZT00Nl09ImZvbnRTaXplIixlW2UuZm9udFdlaWdodD00N109ImZvbnRXZWlnaHQiLGVbZS5mb3JtYXRPblBhc3RlPTQ4XT0iZm9ybWF0T25QYXN0ZSIsZVtlLmZvcm1hdE9uVHlwZT00OV09ImZvcm1hdE9uVHlwZSIsZVtlLmdseXBoTWFyZ2luPTUwXT0iZ2x5cGhNYXJnaW4iLGVbZS5nb3RvTG9jYXRpb249NTFdPSJnb3RvTG9jYXRpb24iLGVbZS5oaWRlQ3Vyc29ySW5PdmVydmlld1J1bGVyPTUyXT0iaGlkZUN1cnNvckluT3ZlcnZpZXdSdWxlciIsZVtlLmhvdmVyPTUzXT0iaG92ZXIiLGVbZS5pbkRpZmZFZGl0b3I9NTRdPSJpbkRpZmZFZGl0b3IiLGVbZS5pbmxpbmVTdWdnZXN0PTU1XT0iaW5saW5lU3VnZ2VzdCIsZVtlLmxldHRlclNwYWNpbmc9NTZdPSJsZXR0ZXJTcGFjaW5nIixlW2UubGlnaHRidWxiPTU3XT0ibGlnaHRidWxiIixlW2UubGluZURlY29yYXRpb25zV2lkdGg9NThdPSJsaW5lRGVjb3JhdGlvbnNXaWR0aCIsZVtlLmxpbmVIZWlnaHQ9NTldPSJsaW5lSGVpZ2h0IixlW2UubGluZU51bWJlcnM9NjBdPSJsaW5lTnVtYmVycyIsZVtlLmxpbmVOdW1iZXJzTWluQ2hhcnM9NjFdPSJsaW5lTnVtYmVyc01pbkNoYXJzIixlW2UubGlua2VkRWRpdGluZz02Ml09ImxpbmtlZEVkaXRpbmciLGVbZS5saW5rcz02M109ImxpbmtzIixlW2UubWF0Y2hCcmFja2V0cz02NF09Im1hdGNoQnJhY2tldHMiLGVbZS5taW5pbWFwPTY1XT0ibWluaW1hcCIsZVtlLm1vdXNlU3R5bGU9NjZdPSJtb3VzZVN0eWxlIixlW2UubW91c2VXaGVlbFNjcm9sbFNlbnNpdGl2aXR5PTY3XT0ibW91c2VXaGVlbFNjcm9sbFNlbnNpdGl2aXR5IixlW2UubW91c2VXaGVlbFpvb209NjhdPSJtb3VzZVdoZWVsWm9vbSIsZVtlLm11bHRpQ3Vyc29yTWVyZ2VPdmVybGFwcGluZz02OV09Im11bHRpQ3Vyc29yTWVyZ2VPdmVybGFwcGluZyIsZVtlLm11bHRpQ3Vyc29yTW9kaWZpZXI9NzBdPSJtdWx0aUN1cnNvck1vZGlmaWVyIixlW2UubXVsdGlDdXJzb3JQYXN0ZT03MV09Im11bHRpQ3Vyc29yUGFzdGUiLGVbZS5vY2N1cnJlbmNlc0hpZ2hsaWdodD03Ml09Im9jY3VycmVuY2VzSGlnaGxpZ2h0IixlW2Uub3ZlcnZpZXdSdWxlckJvcmRlcj03M109Im92ZXJ2aWV3UnVsZXJCb3JkZXIiLGVbZS5vdmVydmlld1J1bGVyTGFuZXM9NzRdPSJvdmVydmlld1J1bGVyTGFuZXMiLGVbZS5wYWRkaW5nPTc1XT0icGFkZGluZyIsZVtlLnBhcmFtZXRlckhpbnRzPTc2XT0icGFyYW1ldGVySGludHMiLGVbZS5wZWVrV2lkZ2V0RGVmYXVsdEZvY3VzPTc3XT0icGVla1dpZGdldERlZmF1bHRGb2N1cyIsZVtlLmRlZmluaXRpb25MaW5rT3BlbnNJblBlZWs9NzhdPSJkZWZpbml0aW9uTGlua09wZW5zSW5QZWVrIixlW2UucXVpY2tTdWdnZXN0aW9ucz03OV09InF1aWNrU3VnZ2VzdGlvbnMiLGVbZS5xdWlja1N1Z2dlc3Rpb25zRGVsYXk9ODBdPSJxdWlja1N1Z2dlc3Rpb25zRGVsYXkiLGVbZS5yZWFkT25seT04MV09InJlYWRPbmx5IixlW2UucmVuYW1lT25UeXBlPTgyXT0icmVuYW1lT25UeXBlIixlW2UucmVuZGVyQ29udHJvbENoYXJhY3RlcnM9ODNdPSJyZW5kZXJDb250cm9sQ2hhcmFjdGVycyIsZVtlLnJlbmRlckZpbmFsTmV3bGluZT04NF09InJlbmRlckZpbmFsTmV3bGluZSIsZVtlLnJlbmRlckxpbmVIaWdobGlnaHQ9ODVdPSJyZW5kZXJMaW5lSGlnaGxpZ2h0IixlW2UucmVuZGVyTGluZUhpZ2hsaWdodE9ubHlXaGVuRm9jdXM9ODZdPSJyZW5kZXJMaW5lSGlnaGxpZ2h0T25seVdoZW5Gb2N1cyIsZVtlLnJlbmRlclZhbGlkYXRpb25EZWNvcmF0aW9ucz04N109InJlbmRlclZhbGlkYXRpb25EZWNvcmF0aW9ucyIsZVtlLnJlbmRlcldoaXRlc3BhY2U9ODhdPSJyZW5kZXJXaGl0ZXNwYWNlIixlW2UucmV2ZWFsSG9yaXpvbnRhbFJpZ2h0UGFkZGluZz04OV09InJldmVhbEhvcml6b250YWxSaWdodFBhZGRpbmciLGVbZS5yb3VuZGVkU2VsZWN0aW9uPTkwXT0icm91bmRlZFNlbGVjdGlvbiIsZVtlLnJ1bGVycz05MV09InJ1bGVycyIsZVtlLnNjcm9sbGJhcj05Ml09InNjcm9sbGJhciIsZVtlLnNjcm9sbEJleW9uZExhc3RDb2x1bW49OTNdPSJzY3JvbGxCZXlvbmRMYXN0Q29sdW1uIixlW2Uuc2Nyb2xsQmV5b25kTGFzdExpbmU9OTRdPSJzY3JvbGxCZXlvbmRMYXN0TGluZSIsZVtlLnNjcm9sbFByZWRvbWluYW50QXhpcz05NV09InNjcm9sbFByZWRvbWluYW50QXhpcyIsZVtlLnNlbGVjdGlvbkNsaXBib2FyZD05Nl09InNlbGVjdGlvbkNsaXBib2FyZCIsZVtlLnNlbGVjdGlvbkhpZ2hsaWdodD05N109InNlbGVjdGlvbkhpZ2hsaWdodCIsZVtlLnNlbGVjdE9uTGluZU51bWJlcnM9OThdPSJzZWxlY3RPbkxpbmVOdW1iZXJzIixlW2Uuc2hvd0ZvbGRpbmdDb250cm9scz05OV09InNob3dGb2xkaW5nQ29udHJvbHMiLGVbZS5zaG93VW51c2VkPTEwMF09InNob3dVbnVzZWQiLGVbZS5zbmlwcGV0U3VnZ2VzdGlvbnM9MTAxXT0ic25pcHBldFN1Z2dlc3Rpb25zIixlW2Uuc21hcnRTZWxlY3Q9MTAyXT0ic21hcnRTZWxlY3QiLGVbZS5zbW9vdGhTY3JvbGxpbmc9MTAzXT0ic21vb3RoU2Nyb2xsaW5nIixlW2Uuc3RpY2t5VGFiU3RvcHM9MTA0XT0ic3RpY2t5VGFiU3RvcHMiLGVbZS5zdG9wUmVuZGVyaW5nTGluZUFmdGVyPTEwNV09InN0b3BSZW5kZXJpbmdMaW5lQWZ0ZXIiLGVbZS5zdWdnZXN0PTEwNl09InN1Z2dlc3QiLGVbZS5zdWdnZXN0Rm9udFNpemU9MTA3XT0ic3VnZ2VzdEZvbnRTaXplIixlW2Uuc3VnZ2VzdExpbmVIZWlnaHQ9MTA4XT0ic3VnZ2VzdExpbmVIZWlnaHQiLGVbZS5zdWdnZXN0T25UcmlnZ2VyQ2hhcmFjdGVycz0xMDldPSJzdWdnZXN0T25UcmlnZ2VyQ2hhcmFjdGVycyIsZVtlLnN1Z2dlc3RTZWxlY3Rpb249MTEwXT0ic3VnZ2VzdFNlbGVjdGlvbiIsZVtlLnRhYkNvbXBsZXRpb249MTExXT0idGFiQ29tcGxldGlvbiIsZVtlLnRhYkluZGV4PTExMl09InRhYkluZGV4IixlW2UudW5pY29kZUhpZ2hsaWdodGluZz0xMTNdPSJ1bmljb2RlSGlnaGxpZ2h0aW5nIixlW2UudW51c3VhbExpbmVUZXJtaW5hdG9ycz0xMTRdPSJ1bnVzdWFsTGluZVRlcm1pbmF0b3JzIixlW2UudXNlU2hhZG93RE9NPTExNV09InVzZVNoYWRvd0RPTSIsZVtlLnVzZVRhYlN0b3BzPTExNl09InVzZVRhYlN0b3BzIixlW2Uud29yZFNlcGFyYXRvcnM9MTE3XT0id29yZFNlcGFyYXRvcnMiLGVbZS53b3JkV3JhcD0xMThdPSJ3b3JkV3JhcCIsZVtlLndvcmRXcmFwQnJlYWtBZnRlckNoYXJhY3RlcnM9MTE5XT0id29yZFdyYXBCcmVha0FmdGVyQ2hhcmFjdGVycyIsZVtlLndvcmRXcmFwQnJlYWtCZWZvcmVDaGFyYWN0ZXJzPTEyMF09IndvcmRXcmFwQnJlYWtCZWZvcmVDaGFyYWN0ZXJzIixlW2Uud29yZFdyYXBDb2x1bW49MTIxXT0id29yZFdyYXBDb2x1bW4iLGVbZS53b3JkV3JhcE92ZXJyaWRlMT0xMjJdPSJ3b3JkV3JhcE92ZXJyaWRlMSIsZVtlLndvcmRXcmFwT3ZlcnJpZGUyPTEyM109IndvcmRXcmFwT3ZlcnJpZGUyIixlW2Uud3JhcHBpbmdJbmRlbnQ9MTI0XT0id3JhcHBpbmdJbmRlbnQiLGVbZS53cmFwcGluZ1N0cmF0ZWd5PTEyNV09IndyYXBwaW5nU3RyYXRlZ3kiLGVbZS5zaG93RGVwcmVjYXRlZD0xMjZdPSJzaG93RGVwcmVjYXRlZCIsZVtlLmlubGF5SGludHM9MTI3XT0iaW5sYXlIaW50cyIsZVtlLmVkaXRvckNsYXNzTmFtZT0xMjhdPSJlZGl0b3JDbGFzc05hbWUiLGVbZS5waXhlbFJhdGlvPTEyOV09InBpeGVsUmF0aW8iLGVbZS50YWJGb2N1c01vZGU9MTMwXT0idGFiRm9jdXNNb2RlIixlW2UubGF5b3V0SW5mbz0xMzFdPSJsYXlvdXRJbmZvIixlW2Uud3JhcHBpbmdJbmZvPTEzMl09IndyYXBwaW5nSW5mbyJ9KGxufHwobG49e30pKSxmdW5jdGlvbihlKXtlW2UuVGV4dERlZmluZWQ9MF09IlRleHREZWZpbmVkIixlW2UuTEY9MV09IkxGIixlW2UuQ1JMRj0yXT0iQ1JMRiJ9KGNufHwoY249e30pKSxmdW5jdGlvbihlKXtlW2UuTEY9MF09IkxGIixlW2UuQ1JMRj0xXT0iQ1JMRiJ9KGhufHwoaG49e30pKSxmdW5jdGlvbihlKXtlW2UuU3lzdGVtPTBdPSJTeXN0ZW0iLGVbZS5Vc2VyPTFdPSJVc2VyIn0oZG58fChkbj17fSkpLGZ1bmN0aW9uKGUpe2VbZS5Ob25lPTBdPSJOb25lIixlW2UuSW5kZW50PTFdPSJJbmRlbnQiLGVbZS5JbmRlbnRPdXRkZW50PTJdPSJJbmRlbnRPdXRkZW50IixlW2UuT3V0ZGVudD0zXT0iT3V0ZGVudCJ9KHVufHwodW49e30pKSxmdW5jdGlvbihlKXtlW2UuQm90aD0wXT0iQm90aCIsZVtlLlJpZ2h0PTFdPSJSaWdodCIsZVtlLkxlZnQ9Ml09IkxlZnQiLGVbZS5Ob25lPTNdPSJOb25lIn0ocG58fChwbj17fSkpLGZ1bmN0aW9uKGUpe2VbZS5UeXBlPTFdPSJUeXBlIixlW2UuUGFyYW1ldGVyPTJdPSJQYXJhbWV0ZXIifShtbnx8KG1uPXt9KSksZnVuY3Rpb24oZSl7ZVtlLkF1dG9tYXRpYz0wXT0iQXV0b21hdGljIixlW2UuRXhwbGljaXQ9MV09IkV4cGxpY2l0In0oZm58fChmbj17fSkpLGZ1bmN0aW9uKGUpe2VbZS5EZXBlbmRzT25LYkxheW91dD0tMV09IkRlcGVuZHNPbktiTGF5b3V0IixlW2UuVW5rbm93bj0wXT0iVW5rbm93biIsZVtlLkJhY2tzcGFjZT0xXT0iQmFja3NwYWNlIixlW2UuVGFiPTJdPSJUYWIiLGVbZS5FbnRlcj0zXT0iRW50ZXIiLGVbZS5TaGlmdD00XT0iU2hpZnQiLGVbZS5DdHJsPTVdPSJDdHJsIixlW2UuQWx0PTZdPSJBbHQiLGVbZS5QYXVzZUJyZWFrPTddPSJQYXVzZUJyZWFrIixlW2UuQ2Fwc0xvY2s9OF09IkNhcHNMb2NrIixlW2UuRXNjYXBlPTldPSJFc2NhcGUiLGVbZS5TcGFjZT0xMF09IlNwYWNlIixlW2UuUGFnZVVwPTExXT0iUGFnZVVwIixlW2UuUGFnZURvd249MTJdPSJQYWdlRG93biIsZVtlLkVuZD0xM109IkVuZCIsZVtlLkhvbWU9MTRdPSJIb21lIixlW2UuTGVmdEFycm93PTE1XT0iTGVmdEFycm93IixlW2UuVXBBcnJvdz0xNl09IlVwQXJyb3ciLGVbZS5SaWdodEFycm93PTE3XT0iUmlnaHRBcnJvdyIsZVtlLkRvd25BcnJvdz0xOF09IkRvd25BcnJvdyIsZVtlLkluc2VydD0xOV09Ikluc2VydCIsZVtlLkRlbGV0ZT0yMF09IkRlbGV0ZSIsZVtlLkRpZ2l0MD0yMV09IkRpZ2l0MCIsZVtlLkRpZ2l0MT0yMl09IkRpZ2l0MSIsZVtlLkRpZ2l0Mj0yM109IkRpZ2l0MiIsZVtlLkRpZ2l0Mz0yNF09IkRpZ2l0MyIsZVtlLkRpZ2l0ND0yNV09IkRpZ2l0NCIsZVtlLkRpZ2l0NT0yNl09IkRpZ2l0NSIsZVtlLkRpZ2l0Nj0yN109IkRpZ2l0NiIsZVtlLkRpZ2l0Nz0yOF09IkRpZ2l0NyIsZVtlLkRpZ2l0OD0yOV09IkRpZ2l0OCIsZVtlLkRpZ2l0OT0zMF09IkRpZ2l0OSIsZVtlLktleUE9MzFdPSJLZXlBIixlW2UuS2V5Qj0zMl09IktleUIiLGVbZS5LZXlDPTMzXT0iS2V5QyIsZVtlLktleUQ9MzRdPSJLZXlEIixlW2UuS2V5RT0zNV09IktleUUiLGVbZS5LZXlGPTM2XT0iS2V5RiIsZVtlLktleUc9MzddPSJLZXlHIixlW2UuS2V5SD0zOF09IktleUgiLGVbZS5LZXlJPTM5XT0iS2V5SSIsZVtlLktleUo9NDBdPSJLZXlKIixlW2UuS2V5Sz00MV09IktleUsiLGVbZS5LZXlMPTQyXT0iS2V5TCIsZVtlLktleU09NDNdPSJLZXlNIixlW2UuS2V5Tj00NF09IktleU4iLGVbZS5LZXlPPTQ1XT0iS2V5TyIsZVtlLktleVA9NDZdPSJLZXlQIixlW2UuS2V5UT00N109IktleVEiLGVbZS5LZXlSPTQ4XT0iS2V5UiIsZVtlLktleVM9NDldPSJLZXlTIixlW2UuS2V5VD01MF09IktleVQiLGVbZS5LZXlVPTUxXT0iS2V5VSIsZVtlLktleVY9NTJdPSJLZXlWIixlW2UuS2V5Vz01M109IktleVciLGVbZS5LZXlYPTU0XT0iS2V5WCIsZVtlLktleVk9NTVdPSJLZXlZIixlW2UuS2V5Wj01Nl09IktleVoiLGVbZS5NZXRhPTU3XT0iTWV0YSIsZVtlLkNvbnRleHRNZW51PTU4XT0iQ29udGV4dE1lbnUiLGVbZS5GMT01OV09IkYxIixlW2UuRjI9NjBdPSJGMiIsZVtlLkYzPTYxXT0iRjMiLGVbZS5GND02Ml09IkY0IixlW2UuRjU9NjNdPSJGNSIsZVtlLkY2PTY0XT0iRjYiLGVbZS5GNz02NV09IkY3IixlW2UuRjg9NjZdPSJGOCIsZVtlLkY5PTY3XT0iRjkiLGVbZS5GMTA9NjhdPSJGMTAiLGVbZS5GMTE9NjldPSJGMTEiLGVbZS5GMTI9NzBdPSJGMTIiLGVbZS5GMTM9NzFdPSJGMTMiLGVbZS5GMTQ9NzJdPSJGMTQiLGVbZS5GMTU9NzNdPSJGMTUiLGVbZS5GMTY9NzRdPSJGMTYiLGVbZS5GMTc9NzVdPSJGMTciLGVbZS5GMTg9NzZdPSJGMTgiLGVbZS5GMTk9NzddPSJGMTkiLGVbZS5OdW1Mb2NrPTc4XT0iTnVtTG9jayIsZVtlLlNjcm9sbExvY2s9NzldPSJTY3JvbGxMb2NrIixlW2UuU2VtaWNvbG9uPTgwXT0iU2VtaWNvbG9uIixlW2UuRXF1YWw9ODFdPSJFcXVhbCIsZVtlLkNvbW1hPTgyXT0iQ29tbWEiLGVbZS5NaW51cz04M109Ik1pbnVzIixlW2UuUGVyaW9kPTg0XT0iUGVyaW9kIixlW2UuU2xhc2g9ODVdPSJTbGFzaCIsZVtlLkJhY2txdW90ZT04Nl09IkJhY2txdW90ZSIsZVtlLkJyYWNrZXRMZWZ0PTg3XT0iQnJhY2tldExlZnQiLGVbZS5CYWNrc2xhc2g9ODhdPSJCYWNrc2xhc2giLGVbZS5CcmFja2V0UmlnaHQ9ODldPSJCcmFja2V0UmlnaHQiLGVbZS5RdW90ZT05MF09IlF1b3RlIixlW2UuT0VNXzg9OTFdPSJPRU1fOCIsZVtlLkludGxCYWNrc2xhc2g9OTJdPSJJbnRsQmFja3NsYXNoIixlW2UuTnVtcGFkMD05M109Ik51bXBhZDAiLGVbZS5OdW1wYWQxPTk0XT0iTnVtcGFkMSIsZVtlLk51bXBhZDI9OTVdPSJOdW1wYWQyIixlW2UuTnVtcGFkMz05Nl09Ik51bXBhZDMiLGVbZS5OdW1wYWQ0PTk3XT0iTnVtcGFkNCIsZVtlLk51bXBhZDU9OThdPSJOdW1wYWQ1IixlW2UuTnVtcGFkNj05OV09Ik51bXBhZDYiLGVbZS5OdW1wYWQ3PTEwMF09Ik51bXBhZDciLGVbZS5OdW1wYWQ4PTEwMV09Ik51bXBhZDgiLGVbZS5OdW1wYWQ5PTEwMl09Ik51bXBhZDkiLGVbZS5OdW1wYWRNdWx0aXBseT0xMDNdPSJOdW1wYWRNdWx0aXBseSIsZVtlLk51bXBhZEFkZD0xMDRdPSJOdW1wYWRBZGQiLGVbZS5OVU1QQURfU0VQQVJBVE9SPTEwNV09Ik5VTVBBRF9TRVBBUkFUT1IiLGVbZS5OdW1wYWRTdWJ0cmFjdD0xMDZdPSJOdW1wYWRTdWJ0cmFjdCIsZVtlLk51bXBhZERlY2ltYWw9MTA3XT0iTnVtcGFkRGVjaW1hbCIsZVtlLk51bXBhZERpdmlkZT0xMDhdPSJOdW1wYWREaXZpZGUiLGVbZS5LRVlfSU5fQ09NUE9TSVRJT049MTA5XT0iS0VZX0lOX0NPTVBPU0lUSU9OIixlW2UuQUJOVF9DMT0xMTBdPSJBQk5UX0MxIixlW2UuQUJOVF9DMj0xMTFdPSJBQk5UX0MyIixlW2UuQXVkaW9Wb2x1bWVNdXRlPTExMl09IkF1ZGlvVm9sdW1lTXV0ZSIsZVtlLkF1ZGlvVm9sdW1lVXA9MTEzXT0iQXVkaW9Wb2x1bWVVcCIsZVtlLkF1ZGlvVm9sdW1lRG93bj0xMTRdPSJBdWRpb1ZvbHVtZURvd24iLGVbZS5Ccm93c2VyU2VhcmNoPTExNV09IkJyb3dzZXJTZWFyY2giLGVbZS5Ccm93c2VySG9tZT0xMTZdPSJCcm93c2VySG9tZSIsZVtlLkJyb3dzZXJCYWNrPTExN109IkJyb3dzZXJCYWNrIixlW2UuQnJvd3NlckZvcndhcmQ9MTE4XT0iQnJvd3NlckZvcndhcmQiLGVbZS5NZWRpYVRyYWNrTmV4dD0xMTldPSJNZWRpYVRyYWNrTmV4dCIsZVtlLk1lZGlhVHJhY2tQcmV2aW91cz0xMjBdPSJNZWRpYVRyYWNrUHJldmlvdXMiLGVbZS5NZWRpYVN0b3A9MTIxXT0iTWVkaWFTdG9wIixlW2UuTWVkaWFQbGF5UGF1c2U9MTIyXT0iTWVkaWFQbGF5UGF1c2UiLGVbZS5MYXVuY2hNZWRpYVBsYXllcj0xMjNdPSJMYXVuY2hNZWRpYVBsYXllciIsZVtlLkxhdW5jaE1haWw9MTI0XT0iTGF1bmNoTWFpbCIsZVtlLkxhdW5jaEFwcDI9MTI1XT0iTGF1bmNoQXBwMiIsZVtlLkNsZWFyPTEyNl09IkNsZWFyIixlW2UuTUFYX1ZBTFVFPTEyN109Ik1BWF9WQUxVRSJ9KGdufHwoZ249e30pKSxmdW5jdGlvbihlKXtlW2UuRGVmYXVsdD0xXT0iRGVmYXVsdCIsZVtlLlVzZXI9Ml09IlVzZXIifShibnx8KGJuPXt9KSksZnVuY3Rpb24oZSl7ZVtlLkVkaXRvckNvcmU9MF09IkVkaXRvckNvcmUiLGVbZS5FZGl0b3JDb250cmliPTEwMF09IkVkaXRvckNvbnRyaWIiLGVbZS5Xb3JrYmVuY2hDb250cmliPTIwMF09IldvcmtiZW5jaENvbnRyaWIiLGVbZS5CdWlsdGluRXh0ZW5zaW9uPTMwMF09IkJ1aWx0aW5FeHRlbnNpb24iLGVbZS5FeHRlcm5hbEV4dGVuc2lvbj00MDBdPSJFeHRlcm5hbEV4dGVuc2lvbiJ9KHdufHwod249e30pKSxmdW5jdGlvbihlKXtlW2UuTnVsbD0wXT0iTnVsbCIsZVtlLlBsYWluVGV4dD0xXT0iUGxhaW5UZXh0In0oX258fChfbj17fSkpLGZ1bmN0aW9uKGUpe2VbZS5UcmFjZT0wXT0iVHJhY2UiLGVbZS5EZWJ1Zz0xXT0iRGVidWciLGVbZS5JbmZvPTJdPSJJbmZvIixlW2UuV2FybmluZz0zXT0iV2FybmluZyIsZVtlLkVycm9yPTRdPSJFcnJvciIsZVtlLkNyaXRpY2FsPTVdPSJDcml0aWNhbCIsZVtlLk9mZj02XT0iT2ZmIn0odm58fCh2bj17fSkpLGZ1bmN0aW9uKGUpe2VbZS5QYXJhZ3JhcGg9MF09IlBhcmFncmFwaCIsZVtlLkJyZWFrPTFdPSJCcmVhayJ9KHlufHwoeW49e30pKSxmdW5jdGlvbihlKXtlW2UuSGludD0xXT0iSGludCIsZVtlLkluZm89Ml09IkluZm8iLGVbZS5XYXJuaW5nPTRdPSJXYXJuaW5nIixlW2UuRXJyb3I9OF09IkVycm9yIn0oVG58fChUbj17fSkpLGZ1bmN0aW9uKGUpe2VbZS5Vbm5lY2Vzc2FyeT0xXT0iVW5uZWNlc3NhcnkiLGVbZS5EZXByZWNhdGVkPTJdPSJEZXByZWNhdGVkIn0oa258fChrbj17fSkpLGZ1bmN0aW9uKGUpe2VbZS5JbmxpbmU9MV09IklubGluZSIsZVtlLkd1dHRlcj0yXT0iR3V0dGVyIn0oU258fChTbj17fSkpLGZ1bmN0aW9uKGUpe2VbZS5VTktOT1dOPTBdPSJVTktOT1dOIixlW2UuVEVYVEFSRUE9MV09IlRFWFRBUkVBIixlW2UuR1VUVEVSX0dMWVBIX01BUkdJTj0yXT0iR1VUVEVSX0dMWVBIX01BUkdJTiIsZVtlLkdVVFRFUl9MSU5FX05VTUJFUlM9M109IkdVVFRFUl9MSU5FX05VTUJFUlMiLGVbZS5HVVRURVJfTElORV9ERUNPUkFUSU9OUz00XT0iR1VUVEVSX0xJTkVfREVDT1JBVElPTlMiLGVbZS5HVVRURVJfVklFV19aT05FPTVdPSJHVVRURVJfVklFV19aT05FIixlW2UuQ09OVEVOVF9URVhUPTZdPSJDT05URU5UX1RFWFQiLGVbZS5DT05URU5UX0VNUFRZPTddPSJDT05URU5UX0VNUFRZIixlW2UuQ09OVEVOVF9WSUVXX1pPTkU9OF09IkNPTlRFTlRfVklFV19aT05FIixlW2UuQ09OVEVOVF9XSURHRVQ9OV09IkNPTlRFTlRfV0lER0VUIixlW2UuT1ZFUlZJRVdfUlVMRVI9MTBdPSJPVkVSVklFV19SVUxFUiIsZVtlLlNDUk9MTEJBUj0xMV09IlNDUk9MTEJBUiIsZVtlLk9WRVJMQVlfV0lER0VUPTEyXT0iT1ZFUkxBWV9XSURHRVQiLGVbZS5PVVRTSURFX0VESVRPUj0xM109Ik9VVFNJREVfRURJVE9SIn0oQ258fChDbj17fSkpLGZ1bmN0aW9uKGUpe2VbZS5XaW5kb3dzPTFdPSJXaW5kb3dzIixlW2UuTWFjaW50b3NoPTJdPSJNYWNpbnRvc2giLGVbZS5MaW51eD0zXT0iTGludXgifSh4bnx8KHhuPXt9KSksZnVuY3Rpb24oZSl7ZVtlLlRPUF9SSUdIVF9DT1JORVI9MF09IlRPUF9SSUdIVF9DT1JORVIiLGVbZS5CT1RUT01fUklHSFRfQ09STkVSPTFdPSJCT1RUT01fUklHSFRfQ09STkVSIixlW2UuVE9QX0NFTlRFUj0yXT0iVE9QX0NFTlRFUiJ9KExufHwoTG49e30pKSxmdW5jdGlvbihlKXtlW2UuTGVmdD0xXT0iTGVmdCIsZVtlLkNlbnRlcj0yXT0iQ2VudGVyIixlW2UuUmlnaHQ9NF09IlJpZ2h0IixlW2UuRnVsbD03XT0iRnVsbCJ9KEVufHwoRW49e30pKSxmdW5jdGlvbihlKXtlW2UuTGVmdD0wXT0iTGVmdCIsZVtlLlJpZ2h0PTFdPSJSaWdodCIsZVtlLk5vbmU9Ml09Ik5vbmUifShBbnx8KEFuPXt9KSksZnVuY3Rpb24oZSl7ZVtlLkV4cGxvcmVyPTFdPSJFeHBsb3JlciIsZVtlLlNjbT0zXT0iU2NtIixlW2UuRXh0ZW5zaW9ucz01XT0iRXh0ZW5zaW9ucyIsZVtlLldpbmRvdz0xMF09IldpbmRvdyIsZVtlLk5vdGlmaWNhdGlvbj0xNV09Ik5vdGlmaWNhdGlvbiIsZVtlLkRpYWxvZz0yMF09IkRpYWxvZyJ9KE1ufHwoTW49e30pKSxmdW5jdGlvbihlKXtlW2UuT2ZmPTBdPSJPZmYiLGVbZS5Pbj0xXT0iT24iLGVbZS5SZWxhdGl2ZT0yXT0iUmVsYXRpdmUiLGVbZS5JbnRlcnZhbD0zXT0iSW50ZXJ2YWwiLGVbZS5DdXN0b209NF09IkN1c3RvbSJ9KFJufHwoUm49e30pKSxmdW5jdGlvbihlKXtlW2UuTm9uZT0wXT0iTm9uZSIsZVtlLlRleHQ9MV09IlRleHQiLGVbZS5CbG9ja3M9Ml09IkJsb2NrcyJ9KE5ufHwoTm49e30pKSxmdW5jdGlvbihlKXtlW2UuRGVwZW5kc09uS2JMYXlvdXQ9LTFdPSJEZXBlbmRzT25LYkxheW91dCIsZVtlLk5vbmU9MF09Ik5vbmUiLGVbZS5IeXBlcj0xXT0iSHlwZXIiLGVbZS5TdXBlcj0yXT0iU3VwZXIiLGVbZS5Gbj0zXT0iRm4iLGVbZS5GbkxvY2s9NF09IkZuTG9jayIsZVtlLlN1c3BlbmQ9NV09IlN1c3BlbmQiLGVbZS5SZXN1bWU9Nl09IlJlc3VtZSIsZVtlLlR1cmJvPTddPSJUdXJibyIsZVtlLlNsZWVwPThdPSJTbGVlcCIsZVtlLldha2VVcD05XT0iV2FrZVVwIixlW2UuS2V5QT0xMF09IktleUEiLGVbZS5LZXlCPTExXT0iS2V5QiIsZVtlLktleUM9MTJdPSJLZXlDIixlW2UuS2V5RD0xM109IktleUQiLGVbZS5LZXlFPTE0XT0iS2V5RSIsZVtlLktleUY9MTVdPSJLZXlGIixlW2UuS2V5Rz0xNl09IktleUciLGVbZS5LZXlIPTE3XT0iS2V5SCIsZVtlLktleUk9MThdPSJLZXlJIixlW2UuS2V5Sj0xOV09IktleUoiLGVbZS5LZXlLPTIwXT0iS2V5SyIsZVtlLktleUw9MjFdPSJLZXlMIixlW2UuS2V5TT0yMl09IktleU0iLGVbZS5LZXlOPTIzXT0iS2V5TiIsZVtlLktleU89MjRdPSJLZXlPIixlW2UuS2V5UD0yNV09IktleVAiLGVbZS5LZXlRPTI2XT0iS2V5USIsZVtlLktleVI9MjddPSJLZXlSIixlW2UuS2V5Uz0yOF09IktleVMiLGVbZS5LZXlUPTI5XT0iS2V5VCIsZVtlLktleVU9MzBdPSJLZXlVIixlW2UuS2V5Vj0zMV09IktleVYiLGVbZS5LZXlXPTMyXT0iS2V5VyIsZVtlLktleVg9MzNdPSJLZXlYIixlW2UuS2V5WT0zNF09IktleVkiLGVbZS5LZXlaPTM1XT0iS2V5WiIsZVtlLkRpZ2l0MT0zNl09IkRpZ2l0MSIsZVtlLkRpZ2l0Mj0zN109IkRpZ2l0MiIsZVtlLkRpZ2l0Mz0zOF09IkRpZ2l0MyIsZVtlLkRpZ2l0ND0zOV09IkRpZ2l0NCIsZVtlLkRpZ2l0NT00MF09IkRpZ2l0NSIsZVtlLkRpZ2l0Nj00MV09IkRpZ2l0NiIsZVtlLkRpZ2l0Nz00Ml09IkRpZ2l0NyIsZVtlLkRpZ2l0OD00M109IkRpZ2l0OCIsZVtlLkRpZ2l0OT00NF09IkRpZ2l0OSIsZVtlLkRpZ2l0MD00NV09IkRpZ2l0MCIsZVtlLkVudGVyPTQ2XT0iRW50ZXIiLGVbZS5Fc2NhcGU9NDddPSJFc2NhcGUiLGVbZS5CYWNrc3BhY2U9NDhdPSJCYWNrc3BhY2UiLGVbZS5UYWI9NDldPSJUYWIiLGVbZS5TcGFjZT01MF09IlNwYWNlIixlW2UuTWludXM9NTFdPSJNaW51cyIsZVtlLkVxdWFsPTUyXT0iRXF1YWwiLGVbZS5CcmFja2V0TGVmdD01M109IkJyYWNrZXRMZWZ0IixlW2UuQnJhY2tldFJpZ2h0PTU0XT0iQnJhY2tldFJpZ2h0IixlW2UuQmFja3NsYXNoPTU1XT0iQmFja3NsYXNoIixlW2UuSW50bEhhc2g9NTZdPSJJbnRsSGFzaCIsZVtlLlNlbWljb2xvbj01N109IlNlbWljb2xvbiIsZVtlLlF1b3RlPTU4XT0iUXVvdGUiLGVbZS5CYWNrcXVvdGU9NTldPSJCYWNrcXVvdGUiLGVbZS5Db21tYT02MF09IkNvbW1hIixlW2UuUGVyaW9kPTYxXT0iUGVyaW9kIixlW2UuU2xhc2g9NjJdPSJTbGFzaCIsZVtlLkNhcHNMb2NrPTYzXT0iQ2Fwc0xvY2siLGVbZS5GMT02NF09IkYxIixlW2UuRjI9NjVdPSJGMiIsZVtlLkYzPTY2XT0iRjMiLGVbZS5GND02N109IkY0IixlW2UuRjU9NjhdPSJGNSIsZVtlLkY2PTY5XT0iRjYiLGVbZS5GNz03MF09IkY3IixlW2UuRjg9NzFdPSJGOCIsZVtlLkY5PTcyXT0iRjkiLGVbZS5GMTA9NzNdPSJGMTAiLGVbZS5GMTE9NzRdPSJGMTEiLGVbZS5GMTI9NzVdPSJGMTIiLGVbZS5QcmludFNjcmVlbj03Nl09IlByaW50U2NyZWVuIixlW2UuU2Nyb2xsTG9jaz03N109IlNjcm9sbExvY2siLGVbZS5QYXVzZT03OF09IlBhdXNlIixlW2UuSW5zZXJ0PTc5XT0iSW5zZXJ0IixlW2UuSG9tZT04MF09IkhvbWUiLGVbZS5QYWdlVXA9ODFdPSJQYWdlVXAiLGVbZS5EZWxldGU9ODJdPSJEZWxldGUiLGVbZS5FbmQ9ODNdPSJFbmQiLGVbZS5QYWdlRG93bj04NF09IlBhZ2VEb3duIixlW2UuQXJyb3dSaWdodD04NV09IkFycm93UmlnaHQiLGVbZS5BcnJvd0xlZnQ9ODZdPSJBcnJvd0xlZnQiLGVbZS5BcnJvd0Rvd249ODddPSJBcnJvd0Rvd24iLGVbZS5BcnJvd1VwPTg4XT0iQXJyb3dVcCIsZVtlLk51bUxvY2s9ODldPSJOdW1Mb2NrIixlW2UuTnVtcGFkRGl2aWRlPTkwXT0iTnVtcGFkRGl2aWRlIixlW2UuTnVtcGFkTXVsdGlwbHk9OTFdPSJOdW1wYWRNdWx0aXBseSIsZVtlLk51bXBhZFN1YnRyYWN0PTkyXT0iTnVtcGFkU3VidHJhY3QiLGVbZS5OdW1wYWRBZGQ9OTNdPSJOdW1wYWRBZGQiLGVbZS5OdW1wYWRFbnRlcj05NF09Ik51bXBhZEVudGVyIixlW2UuTnVtcGFkMT05NV09Ik51bXBhZDEiLGVbZS5OdW1wYWQyPTk2XT0iTnVtcGFkMiIsZVtlLk51bXBhZDM9OTddPSJOdW1wYWQzIixlW2UuTnVtcGFkND05OF09Ik51bXBhZDQiLGVbZS5OdW1wYWQ1PTk5XT0iTnVtcGFkNSIsZVtlLk51bXBhZDY9MTAwXT0iTnVtcGFkNiIsZVtlLk51bXBhZDc9MTAxXT0iTnVtcGFkNyIsZVtlLk51bXBhZDg9MTAyXT0iTnVtcGFkOCIsZVtlLk51bXBhZDk9MTAzXT0iTnVtcGFkOSIsZVtlLk51bXBhZDA9MTA0XT0iTnVtcGFkMCIsZVtlLk51bXBhZERlY2ltYWw9MTA1XT0iTnVtcGFkRGVjaW1hbCIsZVtlLkludGxCYWNrc2xhc2g9MTA2XT0iSW50bEJhY2tzbGFzaCIsZVtlLkNvbnRleHRNZW51PTEwN109IkNvbnRleHRNZW51IixlW2UuUG93ZXI9MTA4XT0iUG93ZXIiLGVbZS5OdW1wYWRFcXVhbD0xMDldPSJOdW1wYWRFcXVhbCIsZVtlLkYxMz0xMTBdPSJGMTMiLGVbZS5GMTQ9MTExXT0iRjE0IixlW2UuRjE1PTExMl09IkYxNSIsZVtlLkYxNj0xMTNdPSJGMTYiLGVbZS5GMTc9MTE0XT0iRjE3IixlW2UuRjE4PTExNV09IkYxOCIsZVtlLkYxOT0xMTZdPSJGMTkiLGVbZS5GMjA9MTE3XT0iRjIwIixlW2UuRjIxPTExOF09IkYyMSIsZVtlLkYyMj0xMTldPSJGMjIiLGVbZS5GMjM9MTIwXT0iRjIzIixlW2UuRjI0PTEyMV09IkYyNCIsZVtlLk9wZW49MTIyXT0iT3BlbiIsZVtlLkhlbHA9MTIzXT0iSGVscCIsZVtlLlNlbGVjdD0xMjRdPSJTZWxlY3QiLGVbZS5BZ2Fpbj0xMjVdPSJBZ2FpbiIsZVtlLlVuZG89MTI2XT0iVW5kbyIsZVtlLkN1dD0xMjddPSJDdXQiLGVbZS5Db3B5PTEyOF09IkNvcHkiLGVbZS5QYXN0ZT0xMjldPSJQYXN0ZSIsZVtlLkZpbmQ9MTMwXT0iRmluZCIsZVtlLkF1ZGlvVm9sdW1lTXV0ZT0xMzFdPSJBdWRpb1ZvbHVtZU11dGUiLGVbZS5BdWRpb1ZvbHVtZVVwPTEzMl09IkF1ZGlvVm9sdW1lVXAiLGVbZS5BdWRpb1ZvbHVtZURvd249MTMzXT0iQXVkaW9Wb2x1bWVEb3duIixlW2UuTnVtcGFkQ29tbWE9MTM0XT0iTnVtcGFkQ29tbWEiLGVbZS5JbnRsUm89MTM1XT0iSW50bFJvIixlW2UuS2FuYU1vZGU9MTM2XT0iS2FuYU1vZGUiLGVbZS5JbnRsWWVuPTEzN109IkludGxZZW4iLGVbZS5Db252ZXJ0PTEzOF09IkNvbnZlcnQiLGVbZS5Ob25Db252ZXJ0PTEzOV09Ik5vbkNvbnZlcnQiLGVbZS5MYW5nMT0xNDBdPSJMYW5nMSIsZVtlLkxhbmcyPTE0MV09IkxhbmcyIixlW2UuTGFuZzM9MTQyXT0iTGFuZzMiLGVbZS5MYW5nND0xNDNdPSJMYW5nNCIsZVtlLkxhbmc1PTE0NF09Ikxhbmc1IixlW2UuQWJvcnQ9MTQ1XT0iQWJvcnQiLGVbZS5Qcm9wcz0xNDZdPSJQcm9wcyIsZVtlLk51bXBhZFBhcmVuTGVmdD0xNDddPSJOdW1wYWRQYXJlbkxlZnQiLGVbZS5OdW1wYWRQYXJlblJpZ2h0PTE0OF09Ik51bXBhZFBhcmVuUmlnaHQiLGVbZS5OdW1wYWRCYWNrc3BhY2U9MTQ5XT0iTnVtcGFkQmFja3NwYWNlIixlW2UuTnVtcGFkTWVtb3J5U3RvcmU9MTUwXT0iTnVtcGFkTWVtb3J5U3RvcmUiLGVbZS5OdW1wYWRNZW1vcnlSZWNhbGw9MTUxXT0iTnVtcGFkTWVtb3J5UmVjYWxsIixlW2UuTnVtcGFkTWVtb3J5Q2xlYXI9MTUyXT0iTnVtcGFkTWVtb3J5Q2xlYXIiLGVbZS5OdW1wYWRNZW1vcnlBZGQ9MTUzXT0iTnVtcGFkTWVtb3J5QWRkIixlW2UuTnVtcGFkTWVtb3J5U3VidHJhY3Q9MTU0XT0iTnVtcGFkTWVtb3J5U3VidHJhY3QiLGVbZS5OdW1wYWRDbGVhcj0xNTVdPSJOdW1wYWRDbGVhciIsZVtlLk51bXBhZENsZWFyRW50cnk9MTU2XT0iTnVtcGFkQ2xlYXJFbnRyeSIsZVtlLkNvbnRyb2xMZWZ0PTE1N109IkNvbnRyb2xMZWZ0IixlW2UuU2hpZnRMZWZ0PTE1OF09IlNoaWZ0TGVmdCIsZVtlLkFsdExlZnQ9MTU5XT0iQWx0TGVmdCIsZVtlLk1ldGFMZWZ0PTE2MF09Ik1ldGFMZWZ0IixlW2UuQ29udHJvbFJpZ2h0PTE2MV09IkNvbnRyb2xSaWdodCIsZVtlLlNoaWZ0UmlnaHQ9MTYyXT0iU2hpZnRSaWdodCIsZVtlLkFsdFJpZ2h0PTE2M109IkFsdFJpZ2h0IixlW2UuTWV0YVJpZ2h0PTE2NF09Ik1ldGFSaWdodCIsZVtlLkJyaWdodG5lc3NVcD0xNjVdPSJCcmlnaHRuZXNzVXAiLGVbZS5CcmlnaHRuZXNzRG93bj0xNjZdPSJCcmlnaHRuZXNzRG93biIsZVtlLk1lZGlhUGxheT0xNjddPSJNZWRpYVBsYXkiLGVbZS5NZWRpYVJlY29yZD0xNjhdPSJNZWRpYVJlY29yZCIsZVtlLk1lZGlhRmFzdEZvcndhcmQ9MTY5XT0iTWVkaWFGYXN0Rm9yd2FyZCIsZVtlLk1lZGlhUmV3aW5kPTE3MF09Ik1lZGlhUmV3aW5kIixlW2UuTWVkaWFUcmFja05leHQ9MTcxXT0iTWVkaWFUcmFja05leHQiLGVbZS5NZWRpYVRyYWNrUHJldmlvdXM9MTcyXT0iTWVkaWFUcmFja1ByZXZpb3VzIixlW2UuTWVkaWFTdG9wPTE3M109Ik1lZGlhU3RvcCIsZVtlLkVqZWN0PTE3NF09IkVqZWN0IixlW2UuTWVkaWFQbGF5UGF1c2U9MTc1XT0iTWVkaWFQbGF5UGF1c2UiLGVbZS5NZWRpYVNlbGVjdD0xNzZdPSJNZWRpYVNlbGVjdCIsZVtlLkxhdW5jaE1haWw9MTc3XT0iTGF1bmNoTWFpbCIsZVtlLkxhdW5jaEFwcDI9MTc4XT0iTGF1bmNoQXBwMiIsZVtlLkxhdW5jaEFwcDE9MTc5XT0iTGF1bmNoQXBwMSIsZVtlLlNlbGVjdFRhc2s9MTgwXT0iU2VsZWN0VGFzayIsZVtlLkxhdW5jaFNjcmVlblNhdmVyPTE4MV09IkxhdW5jaFNjcmVlblNhdmVyIixlW2UuQnJvd3NlclNlYXJjaD0xODJdPSJCcm93c2VyU2VhcmNoIixlW2UuQnJvd3NlckhvbWU9MTgzXT0iQnJvd3NlckhvbWUiLGVbZS5Ccm93c2VyQmFjaz0xODRdPSJCcm93c2VyQmFjayIsZVtlLkJyb3dzZXJGb3J3YXJkPTE4NV09IkJyb3dzZXJGb3J3YXJkIixlW2UuQnJvd3NlclN0b3A9MTg2XT0iQnJvd3NlclN0b3AiLGVbZS5Ccm93c2VyUmVmcmVzaD0xODddPSJCcm93c2VyUmVmcmVzaCIsZVtlLkJyb3dzZXJGYXZvcml0ZXM9MTg4XT0iQnJvd3NlckZhdm9yaXRlcyIsZVtlLlpvb21Ub2dnbGU9MTg5XT0iWm9vbVRvZ2dsZSIsZVtlLk1haWxSZXBseT0xOTBdPSJNYWlsUmVwbHkiLGVbZS5NYWlsRm9yd2FyZD0xOTFdPSJNYWlsRm9yd2FyZCIsZVtlLk1haWxTZW5kPTE5Ml09Ik1haWxTZW5kIixlW2UuTUFYX1ZBTFVFPTE5M109Ik1BWF9WQUxVRSJ9KElufHwoSW49e30pKSxmdW5jdGlvbihlKXtlW2UuU21vb3RoPTBdPSJTbW9vdGgiLGVbZS5JbW1lZGlhdGU9MV09IkltbWVkaWF0ZSJ9KFVufHwoVW49e30pKSxmdW5jdGlvbihlKXtlW2UuQXV0bz0xXT0iQXV0byIsZVtlLkhpZGRlbj0yXT0iSGlkZGVuIixlW2UuVmlzaWJsZT0zXT0iVmlzaWJsZSJ9KEhufHwoSG49e30pKSxmdW5jdGlvbihlKXtlW2UuTFRSPTBdPSJMVFIiLGVbZS5SVEw9MV09IlJUTCJ9KERufHwoRG49e30pKSxmdW5jdGlvbihlKXtlW2UuSW52b2tlPTFdPSJJbnZva2UiLGVbZS5UcmlnZ2VyQ2hhcmFjdGVyPTJdPSJUcmlnZ2VyQ2hhcmFjdGVyIixlW2UuQ29udGVudENoYW5nZT0zXT0iQ29udGVudENoYW5nZSJ9KHpufHwoem49e30pKSxmdW5jdGlvbihlKXtlW2UuVG9wPTBdPSJUb3AiLGVbZS5JbmxpbmU9MV09IklubGluZSIsZVtlLkJvdHRvbT0yXT0iQm90dG9tIn0oV258fChXbj17fSkpLGZ1bmN0aW9uKGUpe2VbZS5Vc2VyPTFdPSJVc2VyIixlW2UuV29ya3NwYWNlPTJdPSJXb3Jrc3BhY2UiLGVbZS5FeHRlbnNpb249M109IkV4dGVuc2lvbiJ9KE9ufHwoT249e30pKSxmdW5jdGlvbihlKXtlW2UuT3RoZXI9MF09Ik90aGVyIixlW2UuQ29tbWVudD0xXT0iQ29tbWVudCIsZVtlLlN0cmluZz0yXT0iU3RyaW5nIixlW2UuUmVnRXg9M109IlJlZ0V4In0oUG58fChQbj17fSkpLGZ1bmN0aW9uKGUpe2VbZS5GaWxlPTBdPSJGaWxlIixlW2UuTW9kdWxlPTFdPSJNb2R1bGUiLGVbZS5OYW1lc3BhY2U9Ml09Ik5hbWVzcGFjZSIsZVtlLlBhY2thZ2U9M109IlBhY2thZ2UiLGVbZS5DbGFzcz00XT0iQ2xhc3MiLGVbZS5NZXRob2Q9NV09Ik1ldGhvZCIsZVtlLlByb3BlcnR5PTZdPSJQcm9wZXJ0eSIsZVtlLkZpZWxkPTddPSJGaWVsZCIsZVtlLkNvbnN0cnVjdG9yPThdPSJDb25zdHJ1Y3RvciIsZVtlLkVudW09OV09IkVudW0iLGVbZS5JbnRlcmZhY2U9MTBdPSJJbnRlcmZhY2UiLGVbZS5GdW5jdGlvbj0xMV09IkZ1bmN0aW9uIixlW2UuVmFyaWFibGU9MTJdPSJWYXJpYWJsZSIsZVtlLkNvbnN0YW50PTEzXT0iQ29uc3RhbnQiLGVbZS5TdHJpbmc9MTRdPSJTdHJpbmciLGVbZS5OdW1iZXI9MTVdPSJOdW1iZXIiLGVbZS5Cb29sZWFuPTE2XT0iQm9vbGVhbiIsZVtlLkFycmF5PTE3XT0iQXJyYXkiLGVbZS5PYmplY3Q9MThdPSJPYmplY3QiLGVbZS5LZXk9MTldPSJLZXkiLGVbZS5OdWxsPTIwXT0iTnVsbCIsZVtlLkVudW1NZW1iZXI9MjFdPSJFbnVtTWVtYmVyIixlW2UuU3RydWN0PTIyXT0iU3RydWN0IixlW2UuRXZlbnQ9MjNdPSJFdmVudCIsZVtlLk9wZXJhdG9yPTI0XT0iT3BlcmF0b3IiLGVbZS5UeXBlUGFyYW1ldGVyPTI1XT0iVHlwZVBhcmFtZXRlciJ9KHFufHwocW49e30pKSxmdW5jdGlvbihlKXtlW2UuRGVwcmVjYXRlZD0xXT0iRGVwcmVjYXRlZCJ9KEZufHwoRm49e30pKSxmdW5jdGlvbihlKXtlW2UuSGlkZGVuPTBdPSJIaWRkZW4iLGVbZS5CbGluaz0xXT0iQmxpbmsiLGVbZS5TbW9vdGg9Ml09IlNtb290aCIsZVtlLlBoYXNlPTNdPSJQaGFzZSIsZVtlLkV4cGFuZD00XT0iRXhwYW5kIixlW2UuU29saWQ9NV09IlNvbGlkIn0oQm58fChCbj17fSkpLGZ1bmN0aW9uKGUpe2VbZS5MaW5lPTFdPSJMaW5lIixlW2UuQmxvY2s9Ml09IkJsb2NrIixlW2UuVW5kZXJsaW5lPTNdPSJVbmRlcmxpbmUiLGVbZS5MaW5lVGhpbj00XT0iTGluZVRoaW4iLGVbZS5CbG9ja091dGxpbmU9NV09IkJsb2NrT3V0bGluZSIsZVtlLlVuZGVybGluZVRoaW49Nl09IlVuZGVybGluZVRoaW4ifShWbnx8KFZuPXt9KSksZnVuY3Rpb24oZSl7ZVtlLkNlbnRlcj0wXT0iQ2VudGVyIixlW2UuQ2VudGVySWZPdXRzaWRlVmlld3BvcnQ9MV09IkNlbnRlcklmT3V0c2lkZVZpZXdwb3J0IixlW2UuTmVhclRvcD0yXT0iTmVhclRvcCIsZVtlLk5lYXJUb3BJZk91dHNpZGVWaWV3cG9ydD0zXT0iTmVhclRvcElmT3V0c2lkZVZpZXdwb3J0In0oS258fChLbj17fSkpLGZ1bmN0aW9uKGUpe2UuUFJPR1JBTU1BVElDPSJhcGkiLGUuTkFWSUdBVElPTj0iY29kZS5uYXZpZ2F0aW9uIixlLkpVTVA9ImNvZGUuanVtcCJ9KGpufHwoam49e30pKSxmdW5jdGlvbihlKXtlW2UuQWx3YXlzR3Jvd3NXaGVuVHlwaW5nQXRFZGdlcz0wXT0iQWx3YXlzR3Jvd3NXaGVuVHlwaW5nQXRFZGdlcyIsZVtlLk5ldmVyR3Jvd3NXaGVuVHlwaW5nQXRFZGdlcz0xXT0iTmV2ZXJHcm93c1doZW5UeXBpbmdBdEVkZ2VzIixlW2UuR3Jvd3NPbmx5V2hlblR5cGluZ0JlZm9yZT0yXT0iR3Jvd3NPbmx5V2hlblR5cGluZ0JlZm9yZSIsZVtlLkdyb3dzT25seVdoZW5UeXBpbmdBZnRlcj0zXT0iR3Jvd3NPbmx5V2hlblR5cGluZ0FmdGVyIn0oR258fChHbj17fSkpLGZ1bmN0aW9uKGUpe2VbZS5Ob25lPTBdPSJOb25lIixlW2UuU2FtZT0xXT0iU2FtZSIsZVtlLkluZGVudD0yXT0iSW5kZW50IixlW2UuRGVlcEluZGVudD0zXT0iRGVlcEluZGVudCJ9KCRufHwoJG49e30pKTtjbGFzcyBucntjb25zdHJ1Y3Rvcigpe3RoaXNbSm5dPSJMaW5rZWRNYXAiLHRoaXMuX21hcD1uZXcgTWFwLHRoaXMuX2hlYWQ9dm9pZCAwLHRoaXMuX3RhaWw9dm9pZCAwLHRoaXMuX3NpemU9MCx0aGlzLl9zdGF0ZT0wfWNsZWFyKCl7dGhpcy5fbWFwLmNsZWFyKCksdGhpcy5faGVhZD12b2lkIDAsdGhpcy5fdGFpbD12b2lkIDAsdGhpcy5fc2l6ZT0wLHRoaXMuX3N0YXRlKyt9aXNFbXB0eSgpe3JldHVybiF0aGlzLl9oZWFkJiYhdGhpcy5fdGFpbH1nZXQgc2l6ZSgpe3JldHVybiB0aGlzLl9zaXplfWdldCBmaXJzdCgpe3ZhciBlO3JldHVybiBudWxsPT09KGU9dGhpcy5faGVhZCl8fHZvaWQgMD09PWU/dm9pZCAwOmUudmFsdWV9Z2V0IGxhc3QoKXt2YXIgZTtyZXR1cm4gbnVsbD09PShlPXRoaXMuX3RhaWwpfHx2b2lkIDA9PT1lP3ZvaWQgMDplLnZhbHVlfWhhcyhlKXtyZXR1cm4gdGhpcy5fbWFwLmhhcyhlKX1nZXQoZSx0PTApe2NvbnN0IG49dGhpcy5fbWFwLmdldChlKTtpZihuKXJldHVybiAwIT09dCYmdGhpcy50b3VjaChuLHQpLG4udmFsdWV9c2V0KGUsdCxuPTApe2xldCByPXRoaXMuX21hcC5nZXQoZSk7aWYocilyLnZhbHVlPXQsMCE9PW4mJnRoaXMudG91Y2gocixuKTtlbHNle3N3aXRjaChyPXtrZXk6ZSx2YWx1ZTp0LG5leHQ6dm9pZCAwLHByZXZpb3VzOnZvaWQgMH0sbil7Y2FzZSAwOmNhc2UgMjpkZWZhdWx0OnRoaXMuYWRkSXRlbUxhc3Qocik7YnJlYWs7Y2FzZSAxOnRoaXMuYWRkSXRlbUZpcnN0KHIpfXRoaXMuX21hcC5zZXQoZSxyKSx0aGlzLl9zaXplKyt9cmV0dXJuIHRoaXN9ZGVsZXRlKGUpe3JldHVybiEhdGhpcy5yZW1vdmUoZSl9cmVtb3ZlKGUpe2NvbnN0IHQ9dGhpcy5fbWFwLmdldChlKTtpZih0KXJldHVybiB0aGlzLl9tYXAuZGVsZXRlKGUpLHRoaXMucmVtb3ZlSXRlbSh0KSx0aGlzLl9zaXplLS0sdC52YWx1ZX1zaGlmdCgpe2lmKCF0aGlzLl9oZWFkJiYhdGhpcy5fdGFpbClyZXR1cm47aWYoIXRoaXMuX2hlYWR8fCF0aGlzLl90YWlsKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBsaXN0Iik7Y29uc3QgZT10aGlzLl9oZWFkO3JldHVybiB0aGlzLl9tYXAuZGVsZXRlKGUua2V5KSx0aGlzLnJlbW92ZUl0ZW0oZSksdGhpcy5fc2l6ZS0tLGUudmFsdWV9Zm9yRWFjaChlLHQpe2NvbnN0IG49dGhpcy5fc3RhdGU7bGV0IHI9dGhpcy5faGVhZDtmb3IoO3I7KXtpZih0P2UuYmluZCh0KShyLnZhbHVlLHIua2V5LHRoaXMpOmUoci52YWx1ZSxyLmtleSx0aGlzKSx0aGlzLl9zdGF0ZSE9PW4pdGhyb3cgbmV3IEVycm9yKCJMaW5rZWRNYXAgZ290IG1vZGlmaWVkIGR1cmluZyBpdGVyYXRpb24uIik7cj1yLm5leHR9fWtleXMoKXtjb25zdCBlPXRoaXMsdD10aGlzLl9zdGF0ZTtsZXQgbj10aGlzLl9oZWFkO2NvbnN0IHI9e1tTeW1ib2wuaXRlcmF0b3JdOigpPT5yLG5leHQoKXtpZihlLl9zdGF0ZSE9PXQpdGhyb3cgbmV3IEVycm9yKCJMaW5rZWRNYXAgZ290IG1vZGlmaWVkIGR1cmluZyBpdGVyYXRpb24uIik7aWYobil7Y29uc3QgZT17dmFsdWU6bi5rZXksZG9uZTohMX07cmV0dXJuIG49bi5uZXh0LGV9cmV0dXJue3ZhbHVlOnZvaWQgMCxkb25lOiEwfX19O3JldHVybiByfXZhbHVlcygpe2NvbnN0IGU9dGhpcyx0PXRoaXMuX3N0YXRlO2xldCBuPXRoaXMuX2hlYWQ7Y29uc3Qgcj17W1N5bWJvbC5pdGVyYXRvcl06KCk9PnIsbmV4dCgpe2lmKGUuX3N0YXRlIT09dCl0aHJvdyBuZXcgRXJyb3IoIkxpbmtlZE1hcCBnb3QgbW9kaWZpZWQgZHVyaW5nIGl0ZXJhdGlvbi4iKTtpZihuKXtjb25zdCBlPXt2YWx1ZTpuLnZhbHVlLGRvbmU6ITF9O3JldHVybiBuPW4ubmV4dCxlfXJldHVybnt2YWx1ZTp2b2lkIDAsZG9uZTohMH19fTtyZXR1cm4gcn1lbnRyaWVzKCl7Y29uc3QgZT10aGlzLHQ9dGhpcy5fc3RhdGU7bGV0IG49dGhpcy5faGVhZDtjb25zdCByPXtbU3ltYm9sLml0ZXJhdG9yXTooKT0+cixuZXh0KCl7aWYoZS5fc3RhdGUhPT10KXRocm93IG5ldyBFcnJvcigiTGlua2VkTWFwIGdvdCBtb2RpZmllZCBkdXJpbmcgaXRlcmF0aW9uLiIpO2lmKG4pe2NvbnN0IGU9e3ZhbHVlOltuLmtleSxuLnZhbHVlXSxkb25lOiExfTtyZXR1cm4gbj1uLm5leHQsZX1yZXR1cm57dmFsdWU6dm9pZCAwLGRvbmU6ITB9fX07cmV0dXJuIHJ9WyhKbj1TeW1ib2wudG9TdHJpbmdUYWcsU3ltYm9sLml0ZXJhdG9yKV0oKXtyZXR1cm4gdGhpcy5lbnRyaWVzKCl9dHJpbU9sZChlKXtpZihlPj10aGlzLnNpemUpcmV0dXJuO2lmKDA9PT1lKXJldHVybiB2b2lkIHRoaXMuY2xlYXIoKTtsZXQgdD10aGlzLl9oZWFkLG49dGhpcy5zaXplO2Zvcig7dCYmbj5lOyl0aGlzLl9tYXAuZGVsZXRlKHQua2V5KSx0PXQubmV4dCxuLS07dGhpcy5faGVhZD10LHRoaXMuX3NpemU9bix0JiYodC5wcmV2aW91cz12b2lkIDApLHRoaXMuX3N0YXRlKyt9YWRkSXRlbUZpcnN0KGUpe2lmKHRoaXMuX2hlYWR8fHRoaXMuX3RhaWwpe2lmKCF0aGlzLl9oZWFkKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBsaXN0Iik7ZS5uZXh0PXRoaXMuX2hlYWQsdGhpcy5faGVhZC5wcmV2aW91cz1lfWVsc2UgdGhpcy5fdGFpbD1lO3RoaXMuX2hlYWQ9ZSx0aGlzLl9zdGF0ZSsrfWFkZEl0ZW1MYXN0KGUpe2lmKHRoaXMuX2hlYWR8fHRoaXMuX3RhaWwpe2lmKCF0aGlzLl90YWlsKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBsaXN0Iik7ZS5wcmV2aW91cz10aGlzLl90YWlsLHRoaXMuX3RhaWwubmV4dD1lfWVsc2UgdGhpcy5faGVhZD1lO3RoaXMuX3RhaWw9ZSx0aGlzLl9zdGF0ZSsrfXJlbW92ZUl0ZW0oZSl7aWYoZT09PXRoaXMuX2hlYWQmJmU9PT10aGlzLl90YWlsKXRoaXMuX2hlYWQ9dm9pZCAwLHRoaXMuX3RhaWw9dm9pZCAwO2Vsc2UgaWYoZT09PXRoaXMuX2hlYWQpe2lmKCFlLm5leHQpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIGxpc3QiKTtlLm5leHQucHJldmlvdXM9dm9pZCAwLHRoaXMuX2hlYWQ9ZS5uZXh0fWVsc2UgaWYoZT09PXRoaXMuX3RhaWwpe2lmKCFlLnByZXZpb3VzKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBsaXN0Iik7ZS5wcmV2aW91cy5uZXh0PXZvaWQgMCx0aGlzLl90YWlsPWUucHJldmlvdXN9ZWxzZXtjb25zdCB0PWUubmV4dCxuPWUucHJldmlvdXM7aWYoIXR8fCFuKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBsaXN0Iik7dC5wcmV2aW91cz1uLG4ubmV4dD10fWUubmV4dD12b2lkIDAsZS5wcmV2aW91cz12b2lkIDAsdGhpcy5fc3RhdGUrK310b3VjaChlLHQpe2lmKCF0aGlzLl9oZWFkfHwhdGhpcy5fdGFpbCl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgbGlzdCIpO2lmKDE9PT10fHwyPT09dClpZigxPT09dCl7aWYoZT09PXRoaXMuX2hlYWQpcmV0dXJuO2NvbnN0IHQ9ZS5uZXh0LG49ZS5wcmV2aW91cztlPT09dGhpcy5fdGFpbD8obi5uZXh0PXZvaWQgMCx0aGlzLl90YWlsPW4pOih0LnByZXZpb3VzPW4sbi5uZXh0PXQpLGUucHJldmlvdXM9dm9pZCAwLGUubmV4dD10aGlzLl9oZWFkLHRoaXMuX2hlYWQucHJldmlvdXM9ZSx0aGlzLl9oZWFkPWUsdGhpcy5fc3RhdGUrK31lbHNlIGlmKDI9PT10KXtpZihlPT09dGhpcy5fdGFpbClyZXR1cm47Y29uc3QgdD1lLm5leHQsbj1lLnByZXZpb3VzO2U9PT10aGlzLl9oZWFkPyh0LnByZXZpb3VzPXZvaWQgMCx0aGlzLl9oZWFkPXQpOih0LnByZXZpb3VzPW4sbi5uZXh0PXQpLGUubmV4dD12b2lkIDAsZS5wcmV2aW91cz10aGlzLl90YWlsLHRoaXMuX3RhaWwubmV4dD1lLHRoaXMuX3RhaWw9ZSx0aGlzLl9zdGF0ZSsrfX10b0pTT04oKXtjb25zdCBlPVtdO3JldHVybiB0aGlzLmZvckVhY2goKCh0LG4pPT57ZS5wdXNoKFtuLHRdKX0pKSxlfWZyb21KU09OKGUpe3RoaXMuY2xlYXIoKTtmb3IoY29uc3RbdCxuXW9mIGUpdGhpcy5zZXQodCxuKX19ZnVuY3Rpb24gcnIoZSx0LG4pe2lmKCFufHxuLmxlbmd0aDx0Lmxlbmd0aClyZXR1cm4gbnVsbDtsZXQgcjtyZXR1cm4gcj1lP0cobix0KTowPT09bi5pbmRleE9mKHQpLHI/dC5sZW5ndGg+MD9be3N0YXJ0OjAsZW5kOnQubGVuZ3RofV06W106bnVsbH1yci5iaW5kKHZvaWQgMCwhMSkscnIuYmluZCh2b2lkIDAsITApO2NvbnN0IGlyPW5ldyBTZXQ7IigpW117fTw+YCdcIi0vOzosLj8hIi5zcGxpdCgiIikuZm9yRWFjaCgoZT0+aXIuYWRkKGUuY2hhckNvZGVBdCgwKSkpKSxuZXcgY2xhc3MgZXh0ZW5kcyBucntjb25zdHJ1Y3RvcihlLHQ9MSl7c3VwZXIoKSx0aGlzLl9saW1pdD1lLHRoaXMuX3JhdGlvPU1hdGgubWluKE1hdGgubWF4KDAsdCksMSl9Z2V0IGxpbWl0KCl7cmV0dXJuIHRoaXMuX2xpbWl0fXNldCBsaW1pdChlKXt0aGlzLl9saW1pdD1lLHRoaXMuY2hlY2tUcmltKCl9Z2V0KGUsdD0yKXtyZXR1cm4gc3VwZXIuZ2V0KGUsdCl9cGVlayhlKXtyZXR1cm4gc3VwZXIuZ2V0KGUsMCl9c2V0KGUsdCl7cmV0dXJuIHN1cGVyLnNldChlLHQsMiksdGhpcy5jaGVja1RyaW0oKSx0aGlzfWNoZWNrVHJpbSgpe3RoaXMuc2l6ZT50aGlzLl9saW1pdCYmdGhpcy50cmltT2xkKE1hdGgucm91bmQodGhpcy5fbGltaXQqdGhpcy5fcmF0aW8pKX19KDFlNCk7ZnVuY3Rpb24gYXIoKXtjb25zdCBlPVtdLHQ9W107Zm9yKGxldCBlPTA7ZTw9MTI4O2UrKyl0W2VdPTA7Zm9yKGxldCBuPTA7bjw9MTI4O24rKyllLnB1c2godC5zbGljZSgwKSk7cmV0dXJuIGV9dmFyIG9yO2FyKCksYXIoKSxhcigpLGZ1bmN0aW9uKGUpe2UuRGVmYXVsdD1bLTEwMCwwXSxlLmlzRGVmYXVsdD1mdW5jdGlvbihlKXtyZXR1cm4hZXx8Mj09PWUubGVuZ3RoJiYtMTAwPT09ZVswXSYmMD09PWVbMV19fShvcnx8KG9yPXt9KSk7Y29uc3Qgc3I9bmV3IFJlZ0V4cChgXFwkXFwoJHt6dC5pY29uTmFtZUV4cHJlc3Npb259KD86JHt6dC5pY29uTW9kaWZpZXJFeHByZXNzaW9ufSk/XFwpYCwiZyIpO25ldyBSZWdFeHAoenQuaWNvbk5hbWVDaGFyYWN0ZXIpO2NvbnN0IGxyPW5ldyBSZWdFeHAoYChcXFxcKT8ke3NyLnNvdXJjZX1gLCJnIik7bmV3IFJlZ0V4cChgXFxcXCR7c3Iuc291cmNlfWAsImciKSxuZXcgUmVnRXhwKGAoXFxzKT8oXFxcXCk/JHtzci5zb3VyY2V9KFxccyk/YCwiZyIpO2NsYXNzIGNye2NvbnN0cnVjdG9yKGU9IiIsdD0hMSl7dmFyIG4scixpLGE7aWYodGhpcy52YWx1ZT1lLCJzdHJpbmciIT10eXBlb2YgdGhpcy52YWx1ZSl0aHJvdyhhPSJ2YWx1ZSIpP25ldyBFcnJvcihgSWxsZWdhbCBhcmd1bWVudDogJHthfWApOm5ldyBFcnJvcigiSWxsZWdhbCBhcmd1bWVudCIpOyJib29sZWFuIj09dHlwZW9mIHQ/KHRoaXMuaXNUcnVzdGVkPXQsdGhpcy5zdXBwb3J0VGhlbWVJY29ucz0hMSx0aGlzLnN1cHBvcnRIdG1sPSExKToodGhpcy5pc1RydXN0ZWQ9bnVsbCE9PShuPXQuaXNUcnVzdGVkKSYmdm9pZCAwIT09bj9uOnZvaWQgMCx0aGlzLnN1cHBvcnRUaGVtZUljb25zPW51bGwhPT0ocj10LnN1cHBvcnRUaGVtZUljb25zKSYmdm9pZCAwIT09ciYmcix0aGlzLnN1cHBvcnRIdG1sPW51bGwhPT0oaT10LnN1cHBvcnRIdG1sKSYmdm9pZCAwIT09aSYmaSl9YXBwZW5kVGV4dChlLHQ9MCl7dmFyIG47cmV0dXJuIHRoaXMudmFsdWUrPWZ1bmN0aW9uKGUpe3JldHVybiBlLnJlcGxhY2UoL1tcXGAqX3t9W1xdKCkjK1wtIV0vZywiXFwkJiIpfSh0aGlzLnN1cHBvcnRUaGVtZUljb25zPyhuPWUsbi5yZXBsYWNlKGxyLCgoZSx0KT0+dD9lOmBcXCR7ZX1gKSkpOmUpLnJlcGxhY2UoLyhbIFx0XSspL2csKChlLHQpPT4iJm5ic3A7Ii5yZXBlYXQodC5sZW5ndGgpKSkucmVwbGFjZSgvXD4vZ20sIlxcPiIpLnJlcGxhY2UoL1xuL2csMT09PXQ/IlxcXG4iOiJcblxuIiksdGhpc31hcHBlbmRNYXJrZG93bihlKXtyZXR1cm4gdGhpcy52YWx1ZSs9ZSx0aGlzfWFwcGVuZENvZGVibG9jayhlLHQpe3JldHVybiB0aGlzLnZhbHVlKz0iXG5gYGAiLHRoaXMudmFsdWUrPWUsdGhpcy52YWx1ZSs9IlxuIix0aGlzLnZhbHVlKz10LHRoaXMudmFsdWUrPSJcbmBgYFxuIix0aGlzfX12YXIgaHIsZHI7ZnVuY3Rpb24gdXIoZSx0LG4pe3RbaHIuRElfVEFSR0VUXT09PXQ/dFtoci5ESV9ERVBFTkRFTkNJRVNdLnB1c2goe2lkOmUsaW5kZXg6bn0pOih0W2hyLkRJX0RFUEVOREVOQ0lFU109W3tpZDplLGluZGV4Om59XSx0W2hyLkRJX1RBUkdFVF09dCl9ZnVuY3Rpb24gcHIoZSl7aWYoaHIuc2VydmljZUlkcy5oYXMoZSkpcmV0dXJuIGhyLnNlcnZpY2VJZHMuZ2V0KGUpO2NvbnN0IHQ9ZnVuY3Rpb24oZSxuLHIpe2lmKDMhPT1hcmd1bWVudHMubGVuZ3RoKXRocm93IG5ldyBFcnJvcigiQElTZXJ2aWNlTmFtZS1kZWNvcmF0b3IgY2FuIG9ubHkgYmUgdXNlZCB0byBkZWNvcmF0ZSBhIHBhcmFtZXRlciIpO3VyKHQsZSxyKX07cmV0dXJuIHQudG9TdHJpbmc9KCk9PmUsaHIuc2VydmljZUlkcy5zZXQoZSx0KSx0fSFmdW5jdGlvbihlKXtlLnNlcnZpY2VJZHM9bmV3IE1hcCxlLkRJX1RBUkdFVD0iJGRpJHRhcmdldCIsZS5ESV9ERVBFTkRFTkNJRVM9IiRkaSRkZXBlbmRlbmNpZXMiLGUuZ2V0U2VydmljZURlcGVuZGVuY2llcz1mdW5jdGlvbih0KXtyZXR1cm4gdFtlLkRJX0RFUEVOREVOQ0lFU118fFtdfX0oaHJ8fChocj17fSkpLHByKCJpbnN0YW50aWF0aW9uU2VydmljZSIpLHByKCJsb2dTZXJ2aWNlIikscHIoImxvZ2dlclNlcnZpY2UiKSxmdW5jdGlvbihlKXtlW2UuVHJhY2U9MF09IlRyYWNlIixlW2UuRGVidWc9MV09IkRlYnVnIixlW2UuSW5mbz0yXT0iSW5mbyIsZVtlLldhcm5pbmc9M109Ildhcm5pbmciLGVbZS5FcnJvcj00XT0iRXJyb3IiLGVbZS5Dcml0aWNhbD01XT0iQ3JpdGljYWwiLGVbZS5PZmY9Nl09Ik9mZiJ9KGRyfHwoZHI9e30pKTtjb25zdCBtcj1kci5JbmZvO2NsYXNzIGZyIGV4dGVuZHMgcHtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5sZXZlbD1tcix0aGlzLl9vbkRpZENoYW5nZUxvZ0xldmVsPXRoaXMuX3JlZ2lzdGVyKG5ldyBQKSx0aGlzLm9uRGlkQ2hhbmdlTG9nTGV2ZWw9dGhpcy5fb25EaWRDaGFuZ2VMb2dMZXZlbC5ldmVudH1zZXRMZXZlbChlKXt0aGlzLmxldmVsIT09ZSYmKHRoaXMubGV2ZWw9ZSx0aGlzLl9vbkRpZENoYW5nZUxvZ0xldmVsLmZpcmUodGhpcy5sZXZlbCkpfWdldExldmVsKCl7cmV0dXJuIHRoaXMubGV2ZWx9fWNsYXNzIGdyIGV4dGVuZHMgZnJ7Y29uc3RydWN0b3IoZT1tcil7c3VwZXIoKSx0aGlzLnNldExldmVsKGUpfXRyYWNlKGUsLi4udCl7dGhpcy5nZXRMZXZlbCgpPD1kci5UcmFjZSYmY29uc29sZS5sb2coIiVjVFJBQ0UiLCJjb2xvcjogIzg4OCIsZSwuLi50KX1kZWJ1ZyhlLC4uLnQpe3RoaXMuZ2V0TGV2ZWwoKTw9ZHIuRGVidWcmJmNvbnNvbGUubG9nKCIlY0RFQlVHIiwiYmFja2dyb3VuZDogI2VlZTsgY29sb3I6ICM4ODgiLGUsLi4udCl9aW5mbyhlLC4uLnQpe3RoaXMuZ2V0TGV2ZWwoKTw9ZHIuSW5mbyYmY29uc29sZS5sb2coIiVjIElORk8iLCJjb2xvcjogIzMzZiIsZSwuLi50KX13YXJuKGUsLi4udCl7dGhpcy5nZXRMZXZlbCgpPD1kci5XYXJuaW5nJiZjb25zb2xlLmxvZygiJWMgV0FSTiIsImNvbG9yOiAjOTkzIixlLC4uLnQpfWVycm9yKGUsLi4udCl7dGhpcy5nZXRMZXZlbCgpPD1kci5FcnJvciYmY29uc29sZS5sb2coIiVjICBFUlIiLCJjb2xvcjogI2YzMyIsZSwuLi50KX1jcml0aWNhbChlLC4uLnQpe3RoaXMuZ2V0TGV2ZWwoKTw9ZHIuQ3JpdGljYWwmJmNvbnNvbGUubG9nKCIlY0NSSVRJIiwiYmFja2dyb3VuZDogI2YzMzsgY29sb3I6IHdoaXRlIixlLC4uLnQpfWRpc3Bvc2UoKXt9Zmx1c2goKXt9fWNsYXNzIGJye3N0YXRpYyBjaG9yZChlLHQpe3JldHVybiBmdW5jdGlvbihlLHQpe3JldHVybihlfCg2NTUzNSZ0KTw8MTY+Pj4wKT4+PjB9KGUsdCl9fXZhciB3cixfcix2cjtmdW5jdGlvbiB5cihlLHQsbixyLGkpe3JldHVybiBmdW5jdGlvbihlLHQsbixyLGkpe2lmKDA9PT1yKXJldHVybiEwO2NvbnN0IGE9dC5jaGFyQ29kZUF0KHItMSk7aWYoMCE9PWUuZ2V0KGEpKXJldHVybiEwO2lmKDEzPT09YXx8MTA9PT1hKXJldHVybiEwO2lmKGk+MCl7Y29uc3Qgbj10LmNoYXJDb2RlQXQocik7aWYoMCE9PWUuZ2V0KG4pKXJldHVybiEwfXJldHVybiExfShlLHQsMCxyLGkpJiZmdW5jdGlvbihlLHQsbixyLGkpe2lmKHIraT09PW4pcmV0dXJuITA7Y29uc3QgYT10LmNoYXJDb2RlQXQocitpKTtpZigwIT09ZS5nZXQoYSkpcmV0dXJuITA7aWYoMTM9PT1hfHwxMD09PWEpcmV0dXJuITA7aWYoaT4wKXtjb25zdCBuPXQuY2hhckNvZGVBdChyK2ktMSk7aWYoMCE9PWUuZ2V0KG4pKXJldHVybiEwfXJldHVybiExfShlLHQsbixyLGkpfWJyLkN0cmxDbWQ9MjA0OCxici5TaGlmdD0xMDI0LGJyLkFsdD01MTIsYnIuV2luQ3RybD0yNTYsZnVuY3Rpb24oZSl7ZVtlLkxlZnQ9MV09IkxlZnQiLGVbZS5DZW50ZXI9Ml09IkNlbnRlciIsZVtlLlJpZ2h0PTRdPSJSaWdodCIsZVtlLkZ1bGw9N109IkZ1bGwifSh3cnx8KHdyPXt9KSksZnVuY3Rpb24oZSl7ZVtlLklubGluZT0xXT0iSW5saW5lIixlW2UuR3V0dGVyPTJdPSJHdXR0ZXIifShfcnx8KF9yPXt9KSksZnVuY3Rpb24oZSl7ZVtlLkJvdGg9MF09IkJvdGgiLGVbZS5SaWdodD0xXT0iUmlnaHQiLGVbZS5MZWZ0PTJdPSJMZWZ0IixlW2UuTm9uZT0zXT0iTm9uZSJ9KHZyfHwodnI9e30pKTtjbGFzcyBUcntjb25zdHJ1Y3RvcihlLHQpe3RoaXMuX3dvcmRTZXBhcmF0b3JzPWUsdGhpcy5fc2VhcmNoUmVnZXg9dCx0aGlzLl9wcmV2TWF0Y2hTdGFydEluZGV4PS0xLHRoaXMuX3ByZXZNYXRjaExlbmd0aD0wfXJlc2V0KGUpe3RoaXMuX3NlYXJjaFJlZ2V4Lmxhc3RJbmRleD1lLHRoaXMuX3ByZXZNYXRjaFN0YXJ0SW5kZXg9LTEsdGhpcy5fcHJldk1hdGNoTGVuZ3RoPTB9bmV4dChlKXtjb25zdCB0PWUubGVuZ3RoO2xldCBuO2Rve2lmKHRoaXMuX3ByZXZNYXRjaFN0YXJ0SW5kZXgrdGhpcy5fcHJldk1hdGNoTGVuZ3RoPT09dClyZXR1cm4gbnVsbDtpZihuPXRoaXMuX3NlYXJjaFJlZ2V4LmV4ZWMoZSksIW4pcmV0dXJuIG51bGw7Y29uc3Qgcj1uLmluZGV4LGk9blswXS5sZW5ndGg7aWYocj09PXRoaXMuX3ByZXZNYXRjaFN0YXJ0SW5kZXgmJmk9PT10aGlzLl9wcmV2TWF0Y2hMZW5ndGgpe2lmKDA9PT1pKXtKKGUsdCx0aGlzLl9zZWFyY2hSZWdleC5sYXN0SW5kZXgpPjY1NTM1P3RoaXMuX3NlYXJjaFJlZ2V4Lmxhc3RJbmRleCs9Mjp0aGlzLl9zZWFyY2hSZWdleC5sYXN0SW5kZXgrPTE7Y29udGludWV9cmV0dXJuIG51bGx9aWYodGhpcy5fcHJldk1hdGNoU3RhcnRJbmRleD1yLHRoaXMuX3ByZXZNYXRjaExlbmd0aD1pLCF0aGlzLl93b3JkU2VwYXJhdG9yc3x8eXIodGhpcy5fd29yZFNlcGFyYXRvcnMsZSx0LHIsaSkpcmV0dXJuIG59d2hpbGUobik7cmV0dXJuIG51bGx9fWNsYXNzIGtye2NvbnN0cnVjdG9yKGUpe3RoaXMub3B0aW9ucz1lLHRoaXMuYWxsb3dlZENvZGVQb2ludHM9bmV3IFNldChlLmFsbG93ZWRDb2RlUG9pbnRzKSx0aGlzLmFtYmlndW91c0NoYXJhY3RlcnM9WS5nZXRJbnN0YW5jZShuZXcgU2V0KGUuYWxsb3dlZExvY2FsZXMpKX1nZXRDYW5kaWRhdGVDb2RlUG9pbnRzKCl7aWYodGhpcy5vcHRpb25zLm5vbkJhc2ljQVNDSUkpcmV0dXJuImFsbE5vbkJhc2ljQXNjaWkiO2NvbnN0IGU9bmV3IFNldDtpZih0aGlzLm9wdGlvbnMuaW52aXNpYmxlQ2hhcmFjdGVycylmb3IoY29uc3QgdCBvZiBRLmNvZGVQb2ludHMpU3IoU3RyaW5nLmZyb21Db2RlUG9pbnQodCkpfHxlLmFkZCh0KTtpZih0aGlzLm9wdGlvbnMuYW1iaWd1b3VzQ2hhcmFjdGVycylmb3IoY29uc3QgdCBvZiB0aGlzLmFtYmlndW91c0NoYXJhY3RlcnMuZ2V0Q29uZnVzYWJsZUNvZGVQb2ludHMoKSllLmFkZCh0KTtmb3IoY29uc3QgdCBvZiB0aGlzLmFsbG93ZWRDb2RlUG9pbnRzKWUuZGVsZXRlKHQpO3JldHVybiBlfXNob3VsZEhpZ2hsaWdodE5vbkJhc2ljQVNDSUkoZSx0KXtjb25zdCBuPWUuY29kZVBvaW50QXQoMCk7aWYodGhpcy5hbGxvd2VkQ29kZVBvaW50cy5oYXMobikpcmV0dXJuIDA7aWYodGhpcy5vcHRpb25zLm5vbkJhc2ljQVNDSUkpcmV0dXJuIDE7bGV0IHI9ITEsaT0hMTtpZih0KWZvcihsZXQgZSBvZiB0KXtjb25zdCB0PWUuY29kZVBvaW50QXQoMCksbj0oYT1lLFgudGVzdChhKSk7cj1yfHxuLG58fHRoaXMuYW1iaWd1b3VzQ2hhcmFjdGVycy5pc0FtYmlndW91cyh0KXx8US5pc0ludmlzaWJsZUNoYXJhY3Rlcih0KXx8KGk9ITApfXZhciBhO3JldHVybiFyJiZpPzA6dGhpcy5vcHRpb25zLmludmlzaWJsZUNoYXJhY3RlcnMmJiFTcihlKSYmUS5pc0ludmlzaWJsZUNoYXJhY3RlcihuKT8yOnRoaXMub3B0aW9ucy5hbWJpZ3VvdXNDaGFyYWN0ZXJzJiZ0aGlzLmFtYmlndW91c0NoYXJhY3RlcnMuaXNBbWJpZ3VvdXMobik/MzowfX1mdW5jdGlvbiBTcihlKXtyZXR1cm4iICI9PT1lfHwiXG4iPT09ZXx8Ilx0Ij09PWV9dmFyIENyPWZ1bmN0aW9uKGUsdCxuLHIpe3JldHVybiBuZXcobnx8KG49UHJvbWlzZSkpKChmdW5jdGlvbihpLGEpe2Z1bmN0aW9uIG8oZSl7dHJ5e2woci5uZXh0KGUpKX1jYXRjaChlKXthKGUpfX1mdW5jdGlvbiBzKGUpe3RyeXtsKHIudGhyb3coZSkpfWNhdGNoKGUpe2EoZSl9fWZ1bmN0aW9uIGwoZSl7dmFyIHQ7ZS5kb25lP2koZS52YWx1ZSk6KHQ9ZS52YWx1ZSx0IGluc3RhbmNlb2Ygbj90Om5ldyBuKChmdW5jdGlvbihlKXtlKHQpfSkpKS50aGVuKG8scyl9bCgocj1yLmFwcGx5KGUsdHx8W10pKS5uZXh0KCkpfSkpfTtjbGFzcyB4ciBleHRlbmRzIGNsYXNze2NvbnN0cnVjdG9yKGUsdCxuLHIpe3RoaXMuX3VyaT1lLHRoaXMuX2xpbmVzPXQsdGhpcy5fZW9sPW4sdGhpcy5fdmVyc2lvbklkPXIsdGhpcy5fbGluZVN0YXJ0cz1udWxsLHRoaXMuX2NhY2hlZFRleHRWYWx1ZT1udWxsfWRpc3Bvc2UoKXt0aGlzLl9saW5lcy5sZW5ndGg9MH1nZXQgdmVyc2lvbigpe3JldHVybiB0aGlzLl92ZXJzaW9uSWR9Z2V0VGV4dCgpe3JldHVybiBudWxsPT09dGhpcy5fY2FjaGVkVGV4dFZhbHVlJiYodGhpcy5fY2FjaGVkVGV4dFZhbHVlPXRoaXMuX2xpbmVzLmpvaW4odGhpcy5fZW9sKSksdGhpcy5fY2FjaGVkVGV4dFZhbHVlfW9uRXZlbnRzKGUpe2UuZW9sJiZlLmVvbCE9PXRoaXMuX2VvbCYmKHRoaXMuX2VvbD1lLmVvbCx0aGlzLl9saW5lU3RhcnRzPW51bGwpO2NvbnN0IHQ9ZS5jaGFuZ2VzO2Zvcihjb25zdCBlIG9mIHQpdGhpcy5fYWNjZXB0RGVsZXRlUmFuZ2UoZS5yYW5nZSksdGhpcy5fYWNjZXB0SW5zZXJ0VGV4dChuZXcgUWUoZS5yYW5nZS5zdGFydExpbmVOdW1iZXIsZS5yYW5nZS5zdGFydENvbHVtbiksZS50ZXh0KTt0aGlzLl92ZXJzaW9uSWQ9ZS52ZXJzaW9uSWQsdGhpcy5fY2FjaGVkVGV4dFZhbHVlPW51bGx9X2Vuc3VyZUxpbmVTdGFydHMoKXtpZighdGhpcy5fbGluZVN0YXJ0cyl7Y29uc3QgZT10aGlzLl9lb2wubGVuZ3RoLHQ9dGhpcy5fbGluZXMubGVuZ3RoLG49bmV3IFVpbnQzMkFycmF5KHQpO2ZvcihsZXQgcj0wO3I8dDtyKyspbltyXT10aGlzLl9saW5lc1tyXS5sZW5ndGgrZTt0aGlzLl9saW5lU3RhcnRzPW5ldyBkdChuKX19X3NldExpbmVUZXh0KGUsdCl7dGhpcy5fbGluZXNbZV09dCx0aGlzLl9saW5lU3RhcnRzJiZ0aGlzLl9saW5lU3RhcnRzLnNldFZhbHVlKGUsdGhpcy5fbGluZXNbZV0ubGVuZ3RoK3RoaXMuX2VvbC5sZW5ndGgpfV9hY2NlcHREZWxldGVSYW5nZShlKXtpZihlLnN0YXJ0TGluZU51bWJlciE9PWUuZW5kTGluZU51bWJlcil0aGlzLl9zZXRMaW5lVGV4dChlLnN0YXJ0TGluZU51bWJlci0xLHRoaXMuX2xpbmVzW2Uuc3RhcnRMaW5lTnVtYmVyLTFdLnN1YnN0cmluZygwLGUuc3RhcnRDb2x1bW4tMSkrdGhpcy5fbGluZXNbZS5lbmRMaW5lTnVtYmVyLTFdLnN1YnN0cmluZyhlLmVuZENvbHVtbi0xKSksdGhpcy5fbGluZXMuc3BsaWNlKGUuc3RhcnRMaW5lTnVtYmVyLGUuZW5kTGluZU51bWJlci1lLnN0YXJ0TGluZU51bWJlciksdGhpcy5fbGluZVN0YXJ0cyYmdGhpcy5fbGluZVN0YXJ0cy5yZW1vdmVWYWx1ZXMoZS5zdGFydExpbmVOdW1iZXIsZS5lbmRMaW5lTnVtYmVyLWUuc3RhcnRMaW5lTnVtYmVyKTtlbHNle2lmKGUuc3RhcnRDb2x1bW49PT1lLmVuZENvbHVtbilyZXR1cm47dGhpcy5fc2V0TGluZVRleHQoZS5zdGFydExpbmVOdW1iZXItMSx0aGlzLl9saW5lc1tlLnN0YXJ0TGluZU51bWJlci0xXS5zdWJzdHJpbmcoMCxlLnN0YXJ0Q29sdW1uLTEpK3RoaXMuX2xpbmVzW2Uuc3RhcnRMaW5lTnVtYmVyLTFdLnN1YnN0cmluZyhlLmVuZENvbHVtbi0xKSl9fV9hY2NlcHRJbnNlcnRUZXh0KGUsdCl7aWYoMD09PXQubGVuZ3RoKXJldHVybjtjb25zdCBuPXQuc3BsaXQoL1xyXG58XHJ8XG4vKTtpZigxPT09bi5sZW5ndGgpcmV0dXJuIHZvaWQgdGhpcy5fc2V0TGluZVRleHQoZS5saW5lTnVtYmVyLTEsdGhpcy5fbGluZXNbZS5saW5lTnVtYmVyLTFdLnN1YnN0cmluZygwLGUuY29sdW1uLTEpK25bMF0rdGhpcy5fbGluZXNbZS5saW5lTnVtYmVyLTFdLnN1YnN0cmluZyhlLmNvbHVtbi0xKSk7bltuLmxlbmd0aC0xXSs9dGhpcy5fbGluZXNbZS5saW5lTnVtYmVyLTFdLnN1YnN0cmluZyhlLmNvbHVtbi0xKSx0aGlzLl9zZXRMaW5lVGV4dChlLmxpbmVOdW1iZXItMSx0aGlzLl9saW5lc1tlLmxpbmVOdW1iZXItMV0uc3Vic3RyaW5nKDAsZS5jb2x1bW4tMSkrblswXSk7Y29uc3Qgcj1uZXcgVWludDMyQXJyYXkobi5sZW5ndGgtMSk7Zm9yKGxldCB0PTE7dDxuLmxlbmd0aDt0KyspdGhpcy5fbGluZXMuc3BsaWNlKGUubGluZU51bWJlcit0LTEsMCxuW3RdKSxyW3QtMV09blt0XS5sZW5ndGgrdGhpcy5fZW9sLmxlbmd0aDt0aGlzLl9saW5lU3RhcnRzJiZ0aGlzLl9saW5lU3RhcnRzLmluc2VydFZhbHVlcyhlLmxpbmVOdW1iZXIscil9fXtnZXQgdXJpKCl7cmV0dXJuIHRoaXMuX3VyaX1nZXQgZW9sKCl7cmV0dXJuIHRoaXMuX2VvbH1nZXRWYWx1ZSgpe3JldHVybiB0aGlzLmdldFRleHQoKX1nZXRMaW5lc0NvbnRlbnQoKXtyZXR1cm4gdGhpcy5fbGluZXMuc2xpY2UoMCl9Z2V0TGluZUNvdW50KCl7cmV0dXJuIHRoaXMuX2xpbmVzLmxlbmd0aH1nZXRMaW5lQ29udGVudChlKXtyZXR1cm4gdGhpcy5fbGluZXNbZS0xXX1nZXRXb3JkQXRQb3NpdGlvbihlLHQpe2NvbnN0IG49ZnQoZS5jb2x1bW4sZnVuY3Rpb24oZSl7bGV0IHQ9cHQ7aWYoZSYmZSBpbnN0YW5jZW9mIFJlZ0V4cClpZihlLmdsb2JhbCl0PWU7ZWxzZXtsZXQgbj0iZyI7ZS5pZ25vcmVDYXNlJiYobis9ImkiKSxlLm11bHRpbGluZSYmKG4rPSJtIiksZS51bmljb2RlJiYobis9InUiKSx0PW5ldyBSZWdFeHAoZS5zb3VyY2Usbil9cmV0dXJuIHQubGFzdEluZGV4PTAsdH0odCksdGhpcy5fbGluZXNbZS5saW5lTnVtYmVyLTFdLDApO3JldHVybiBuP25ldyBaZShlLmxpbmVOdW1iZXIsbi5zdGFydENvbHVtbixlLmxpbmVOdW1iZXIsbi5lbmRDb2x1bW4pOm51bGx9d29yZHMoZSl7Y29uc3QgdD10aGlzLl9saW5lcyxuPXRoaXMuX3dvcmRlbml6ZS5iaW5kKHRoaXMpO2xldCByPTAsaT0iIixhPTAsbz1bXTtyZXR1cm57KltTeW1ib2wuaXRlcmF0b3JdKCl7Zm9yKDs7KWlmKGE8by5sZW5ndGgpe2NvbnN0IGU9aS5zdWJzdHJpbmcob1thXS5zdGFydCxvW2FdLmVuZCk7YSs9MSx5aWVsZCBlfWVsc2V7aWYoIShyPHQubGVuZ3RoKSlicmVhaztpPXRbcl0sbz1uKGksZSksYT0wLHIrPTF9fX19Z2V0TGluZVdvcmRzKGUsdCl7Y29uc3Qgbj10aGlzLl9saW5lc1tlLTFdLHI9dGhpcy5fd29yZGVuaXplKG4sdCksaT1bXTtmb3IoY29uc3QgZSBvZiByKWkucHVzaCh7d29yZDpuLnN1YnN0cmluZyhlLnN0YXJ0LGUuZW5kKSxzdGFydENvbHVtbjplLnN0YXJ0KzEsZW5kQ29sdW1uOmUuZW5kKzF9KTtyZXR1cm4gaX1fd29yZGVuaXplKGUsdCl7Y29uc3Qgbj1bXTtsZXQgcjtmb3IodC5sYXN0SW5kZXg9MDsocj10LmV4ZWMoZSkpJiYwIT09clswXS5sZW5ndGg7KW4ucHVzaCh7c3RhcnQ6ci5pbmRleCxlbmQ6ci5pbmRleCtyWzBdLmxlbmd0aH0pO3JldHVybiBufWdldFZhbHVlSW5SYW5nZShlKXtpZigoZT10aGlzLl92YWxpZGF0ZVJhbmdlKGUpKS5zdGFydExpbmVOdW1iZXI9PT1lLmVuZExpbmVOdW1iZXIpcmV0dXJuIHRoaXMuX2xpbmVzW2Uuc3RhcnRMaW5lTnVtYmVyLTFdLnN1YnN0cmluZyhlLnN0YXJ0Q29sdW1uLTEsZS5lbmRDb2x1bW4tMSk7Y29uc3QgdD10aGlzLl9lb2wsbj1lLnN0YXJ0TGluZU51bWJlci0xLHI9ZS5lbmRMaW5lTnVtYmVyLTEsaT1bXTtpLnB1c2godGhpcy5fbGluZXNbbl0uc3Vic3RyaW5nKGUuc3RhcnRDb2x1bW4tMSkpO2ZvcihsZXQgZT1uKzE7ZTxyO2UrKylpLnB1c2godGhpcy5fbGluZXNbZV0pO3JldHVybiBpLnB1c2godGhpcy5fbGluZXNbcl0uc3Vic3RyaW5nKDAsZS5lbmRDb2x1bW4tMSkpLGkuam9pbih0KX1vZmZzZXRBdChlKXtyZXR1cm4gZT10aGlzLl92YWxpZGF0ZVBvc2l0aW9uKGUpLHRoaXMuX2Vuc3VyZUxpbmVTdGFydHMoKSx0aGlzLl9saW5lU3RhcnRzLmdldFByZWZpeFN1bShlLmxpbmVOdW1iZXItMikrKGUuY29sdW1uLTEpfXBvc2l0aW9uQXQoZSl7ZT1NYXRoLmZsb29yKGUpLGU9TWF0aC5tYXgoMCxlKSx0aGlzLl9lbnN1cmVMaW5lU3RhcnRzKCk7Y29uc3QgdD10aGlzLl9saW5lU3RhcnRzLmdldEluZGV4T2YoZSksbj10aGlzLl9saW5lc1t0LmluZGV4XS5sZW5ndGg7cmV0dXJue2xpbmVOdW1iZXI6MSt0LmluZGV4LGNvbHVtbjoxK01hdGgubWluKHQucmVtYWluZGVyLG4pfX1fdmFsaWRhdGVSYW5nZShlKXtjb25zdCB0PXRoaXMuX3ZhbGlkYXRlUG9zaXRpb24oe2xpbmVOdW1iZXI6ZS5zdGFydExpbmVOdW1iZXIsY29sdW1uOmUuc3RhcnRDb2x1bW59KSxuPXRoaXMuX3ZhbGlkYXRlUG9zaXRpb24oe2xpbmVOdW1iZXI6ZS5lbmRMaW5lTnVtYmVyLGNvbHVtbjplLmVuZENvbHVtbn0pO3JldHVybiB0LmxpbmVOdW1iZXIhPT1lLnN0YXJ0TGluZU51bWJlcnx8dC5jb2x1bW4hPT1lLnN0YXJ0Q29sdW1ufHxuLmxpbmVOdW1iZXIhPT1lLmVuZExpbmVOdW1iZXJ8fG4uY29sdW1uIT09ZS5lbmRDb2x1bW4/e3N0YXJ0TGluZU51bWJlcjp0LmxpbmVOdW1iZXIsc3RhcnRDb2x1bW46dC5jb2x1bW4sZW5kTGluZU51bWJlcjpuLmxpbmVOdW1iZXIsZW5kQ29sdW1uOm4uY29sdW1ufTplfV92YWxpZGF0ZVBvc2l0aW9uKGUpe2lmKCFRZS5pc0lQb3NpdGlvbihlKSl0aHJvdyBuZXcgRXJyb3IoImJhZCBwb3NpdGlvbiIpO2xldHtsaW5lTnVtYmVyOnQsY29sdW1uOm59PWUscj0hMTtpZih0PDEpdD0xLG49MSxyPSEwO2Vsc2UgaWYodD50aGlzLl9saW5lcy5sZW5ndGgpdD10aGlzLl9saW5lcy5sZW5ndGgsbj10aGlzLl9saW5lc1t0LTFdLmxlbmd0aCsxLHI9ITA7ZWxzZXtjb25zdCBlPXRoaXMuX2xpbmVzW3QtMV0ubGVuZ3RoKzE7bjwxPyhuPTEscj0hMCk6bj5lJiYobj1lLHI9ITApfXJldHVybiByP3tsaW5lTnVtYmVyOnQsY29sdW1uOm59OmV9fWNsYXNzIExye2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5faG9zdD1lLHRoaXMuX21vZGVscz1PYmplY3QuY3JlYXRlKG51bGwpLHRoaXMuX2ZvcmVpZ25Nb2R1bGVGYWN0b3J5PXQsdGhpcy5fZm9yZWlnbk1vZHVsZT1udWxsfWRpc3Bvc2UoKXt0aGlzLl9tb2RlbHM9T2JqZWN0LmNyZWF0ZShudWxsKX1fZ2V0TW9kZWwoZSl7cmV0dXJuIHRoaXMuX21vZGVsc1tlXX1fZ2V0TW9kZWxzKCl7Y29uc3QgZT1bXTtyZXR1cm4gT2JqZWN0LmtleXModGhpcy5fbW9kZWxzKS5mb3JFYWNoKCh0PT5lLnB1c2godGhpcy5fbW9kZWxzW3RdKSkpLGV9YWNjZXB0TmV3TW9kZWwoZSl7dGhpcy5fbW9kZWxzW2UudXJsXT1uZXcgeHIocWUucGFyc2UoZS51cmwpLGUubGluZXMsZS5FT0wsZS52ZXJzaW9uSWQpfWFjY2VwdE1vZGVsQ2hhbmdlZChlLHQpe2lmKCF0aGlzLl9tb2RlbHNbZV0pcmV0dXJuO3RoaXMuX21vZGVsc1tlXS5vbkV2ZW50cyh0KX1hY2NlcHRSZW1vdmVkTW9kZWwoZSl7dGhpcy5fbW9kZWxzW2VdJiZkZWxldGUgdGhpcy5fbW9kZWxzW2VdfWNvbXB1dGVVbmljb2RlSGlnaGxpZ2h0cyhlLHQsbil7cmV0dXJuIENyKHRoaXMsdm9pZCAwLHZvaWQgMCwoZnVuY3Rpb24qKCl7Y29uc3Qgcj10aGlzLl9nZXRNb2RlbChlKTtyZXR1cm4gcj9jbGFzc3tzdGF0aWMgY29tcHV0ZVVuaWNvZGVIaWdobGlnaHRzKGUsdCxuKXtjb25zdCByPW4/bi5zdGFydExpbmVOdW1iZXI6MSxpPW4/bi5lbmRMaW5lTnVtYmVyOmUuZ2V0TGluZUNvdW50KCksYT1uZXcga3IodCksbz1hLmdldENhbmRpZGF0ZUNvZGVQb2ludHMoKTtsZXQgczt2YXIgbDtzPSJhbGxOb25CYXNpY0FzY2lpIj09PW8/bmV3IFJlZ0V4cCgiW15cXHRcXG5cXHJcXHgyMC1cXHg3RV0iLCJnIik6bmV3IFJlZ0V4cChgWyR7bD1BcnJheS5mcm9tKG8pLm1hcCgoZT0+U3RyaW5nLmZyb21Db2RlUG9pbnQoZSkpKS5qb2luKCIiKSxsLnJlcGxhY2UoL1tcXFx7XH1cKlwrXD9cfFxeXCRcLlxbXF1cKFwpXS9nLCJcXCQmIil9XWAsImciKTtjb25zdCBjPW5ldyBUcihudWxsLHMpLGg9W107bGV0IGQsdT0hMSxwPTAsbT0wLGY9MDtlOmZvcihsZXQgdD1yLG49aTt0PD1uO3QrKyl7Y29uc3Qgbj1lLmdldExpbmVDb250ZW50KHQpLHI9bi5sZW5ndGg7Yy5yZXNldCgwKTtkb3tpZihkPWMubmV4dChuKSxkKXtsZXQgZT1kLmluZGV4LGk9ZC5pbmRleCtkWzBdLmxlbmd0aDtlPjAmJiQobi5jaGFyQ29kZUF0KGUtMSkpJiZlLS0saSsxPHImJiQobi5jaGFyQ29kZUF0KGktMSkpJiZpKys7Y29uc3Qgbz1uLnN1YnN0cmluZyhlLGkpLHM9ZnQoZSsxLHB0LG4sMCksbD1hLnNob3VsZEhpZ2hsaWdodE5vbkJhc2ljQVNDSUkobyxzP3Mud29yZDpudWxsKTtpZigwIT09bCl7Mz09PWw/cCsrOjI9PT1sP20rKzoxPT09bD9mKys6RigpO2NvbnN0IG49MWUzO2lmKGgubGVuZ3RoPj1uKXt1PSEwO2JyZWFrIGV9aC5wdXNoKG5ldyBaZSh0LGUrMSx0LGkrMSkpfX19d2hpbGUoZCl9cmV0dXJue3JhbmdlczpoLGhhc01vcmU6dSxhbWJpZ3VvdXNDaGFyYWN0ZXJDb3VudDpwLGludmlzaWJsZUNoYXJhY3RlckNvdW50Om0sbm9uQmFzaWNBc2NpaUNoYXJhY3RlckNvdW50OmZ9fXN0YXRpYyBjb21wdXRlVW5pY29kZUhpZ2hsaWdodFJlYXNvbihlLHQpe2NvbnN0IG49bmV3IGtyKHQpO3N3aXRjaChuLnNob3VsZEhpZ2hsaWdodE5vbkJhc2ljQVNDSUkoZSxudWxsKSl7Y2FzZSAwOnJldHVybiBudWxsO2Nhc2UgMjpyZXR1cm57a2luZDoxfTtjYXNlIDM6e2NvbnN0IHI9ZS5jb2RlUG9pbnRBdCgwKSxpPW4uYW1iaWd1b3VzQ2hhcmFjdGVycy5nZXRQcmltYXJ5Q29uZnVzYWJsZShyKSxhPVkuZ2V0TG9jYWxlcygpLmZpbHRlcigoZT0+IVkuZ2V0SW5zdGFuY2UobmV3IFNldChbLi4udC5hbGxvd2VkTG9jYWxlcyxlXSkpLmlzQW1iaWd1b3VzKHIpKSk7cmV0dXJue2tpbmQ6MCxjb25mdXNhYmxlV2l0aDpTdHJpbmcuZnJvbUNvZGVQb2ludChpKSxub3RBbWJpZ3VvdXNJbkxvY2FsZXM6YX19Y2FzZSAxOnJldHVybntraW5kOjJ9fX19LmNvbXB1dGVVbmljb2RlSGlnaGxpZ2h0cyhyLHQsbik6e3JhbmdlczpbXSxoYXNNb3JlOiExLGFtYmlndW91c0NoYXJhY3RlckNvdW50OjAsaW52aXNpYmxlQ2hhcmFjdGVyQ291bnQ6MCxub25CYXNpY0FzY2lpQ2hhcmFjdGVyQ291bnQ6MH19KSl9Y29tcHV0ZURpZmYoZSx0LG4scil7cmV0dXJuIENyKHRoaXMsdm9pZCAwLHZvaWQgMCwoZnVuY3Rpb24qKCl7Y29uc3QgaT10aGlzLl9nZXRNb2RlbChlKSxhPXRoaXMuX2dldE1vZGVsKHQpO2lmKCFpfHwhYSlyZXR1cm4gbnVsbDtjb25zdCBvPWkuZ2V0TGluZXNDb250ZW50KCkscz1hLmdldExpbmVzQ29udGVudCgpLGw9bmV3IGF0KG8scyx7c2hvdWxkQ29tcHV0ZUNoYXJDaGFuZ2VzOiEwLHNob3VsZFBvc3RQcm9jZXNzQ2hhckNoYW5nZXM6ITAsc2hvdWxkSWdub3JlVHJpbVdoaXRlc3BhY2U6bixzaG91bGRNYWtlUHJldHR5RGlmZjohMCxtYXhDb21wdXRhdGlvblRpbWU6cn0pLmNvbXB1dGVEaWZmKCksYz0hKGwuY2hhbmdlcy5sZW5ndGg+MCkmJnRoaXMuX21vZGVsc0FyZUlkZW50aWNhbChpLGEpO3JldHVybntxdWl0RWFybHk6bC5xdWl0RWFybHksaWRlbnRpY2FsOmMsY2hhbmdlczpsLmNoYW5nZXN9fSkpfV9tb2RlbHNBcmVJZGVudGljYWwoZSx0KXtjb25zdCBuPWUuZ2V0TGluZUNvdW50KCk7aWYobiE9PXQuZ2V0TGluZUNvdW50KCkpcmV0dXJuITE7Zm9yKGxldCByPTE7cjw9bjtyKyspe2lmKGUuZ2V0TGluZUNvbnRlbnQocikhPT10LmdldExpbmVDb250ZW50KHIpKXJldHVybiExfXJldHVybiEwfWNvbXB1dGVNb3JlTWluaW1hbEVkaXRzKGUsdCl7cmV0dXJuIENyKHRoaXMsdm9pZCAwLHZvaWQgMCwoZnVuY3Rpb24qKCl7Y29uc3Qgbj10aGlzLl9nZXRNb2RlbChlKTtpZighbilyZXR1cm4gdDtjb25zdCByPVtdO2xldCBpO3Q9dC5zbGljZSgwKS5zb3J0KCgoZSx0KT0+e2lmKGUucmFuZ2UmJnQucmFuZ2UpcmV0dXJuIFplLmNvbXBhcmVSYW5nZXNVc2luZ1N0YXJ0cyhlLnJhbmdlLHQucmFuZ2UpO3JldHVybihlLnJhbmdlPzA6MSktKHQucmFuZ2U/MDoxKX0pKTtmb3IobGV0e3JhbmdlOmUsdGV4dDphLGVvbDpvfW9mIHQpe2lmKCJudW1iZXIiPT10eXBlb2YgbyYmKGk9byksWmUuaXNFbXB0eShlKSYmIWEpY29udGludWU7Y29uc3QgdD1uLmdldFZhbHVlSW5SYW5nZShlKTtpZihhPWEucmVwbGFjZSgvXHJcbnxcbnxcci9nLG4uZW9sKSx0PT09YSljb250aW51ZTtpZihNYXRoLm1heChhLmxlbmd0aCx0Lmxlbmd0aCk+THIuX2RpZmZMaW1pdCl7ci5wdXNoKHtyYW5nZTplLHRleHQ6YX0pO2NvbnRpbnVlfWNvbnN0IHM9dWUodCxhLCExKSxsPW4ub2Zmc2V0QXQoWmUubGlmdChlKS5nZXRTdGFydFBvc2l0aW9uKCkpO2Zvcihjb25zdCBlIG9mIHMpe2NvbnN0IHQ9bi5wb3NpdGlvbkF0KGwrZS5vcmlnaW5hbFN0YXJ0KSxpPW4ucG9zaXRpb25BdChsK2Uub3JpZ2luYWxTdGFydCtlLm9yaWdpbmFsTGVuZ3RoKSxvPXt0ZXh0OmEuc3Vic3RyKGUubW9kaWZpZWRTdGFydCxlLm1vZGlmaWVkTGVuZ3RoKSxyYW5nZTp7c3RhcnRMaW5lTnVtYmVyOnQubGluZU51bWJlcixzdGFydENvbHVtbjp0LmNvbHVtbixlbmRMaW5lTnVtYmVyOmkubGluZU51bWJlcixlbmRDb2x1bW46aS5jb2x1bW59fTtuLmdldFZhbHVlSW5SYW5nZShvLnJhbmdlKSE9PW8udGV4dCYmci5wdXNoKG8pfX1yZXR1cm4ibnVtYmVyIj09dHlwZW9mIGkmJnIucHVzaCh7ZW9sOmksdGV4dDoiIixyYW5nZTp7c3RhcnRMaW5lTnVtYmVyOjAsc3RhcnRDb2x1bW46MCxlbmRMaW5lTnVtYmVyOjAsZW5kQ29sdW1uOjB9fSkscn0pKX1jb21wdXRlTGlua3MoZSl7cmV0dXJuIENyKHRoaXMsdm9pZCAwLHZvaWQgMCwoZnVuY3Rpb24qKCl7Y29uc3QgdD10aGlzLl9nZXRNb2RlbChlKTtyZXR1cm4gdD9mdW5jdGlvbihlKXtyZXR1cm4gZSYmImZ1bmN0aW9uIj09dHlwZW9mIGUuZ2V0TGluZUNvdW50JiYiZnVuY3Rpb24iPT10eXBlb2YgZS5nZXRMaW5lQ29udGVudD9UdC5jb21wdXRlTGlua3MoZSk6W119KHQpOm51bGx9KSl9dGV4dHVhbFN1Z2dlc3QoZSx0LG4scil7cmV0dXJuIENyKHRoaXMsdm9pZCAwLHZvaWQgMCwoZnVuY3Rpb24qKCl7Y29uc3QgaT1uZXcgVSghMCksYT1uZXcgUmVnRXhwKG4sciksbz1uZXcgU2V0O2U6Zm9yKGxldCBuIG9mIGUpe2NvbnN0IGU9dGhpcy5fZ2V0TW9kZWwobik7aWYoZSlmb3IobGV0IG4gb2YgZS53b3JkcyhhKSlpZihuIT09dCYmaXNOYU4oTnVtYmVyKG4pKSYmKG8uYWRkKG4pLG8uc2l6ZT5Mci5fc3VnZ2VzdGlvbnNMaW1pdCkpYnJlYWsgZX1yZXR1cm57d29yZHM6QXJyYXkuZnJvbShvKSxkdXJhdGlvbjppLmVsYXBzZWQoKX19KSl9Y29tcHV0ZVdvcmRSYW5nZXMoZSx0LG4scil7cmV0dXJuIENyKHRoaXMsdm9pZCAwLHZvaWQgMCwoZnVuY3Rpb24qKCl7Y29uc3QgaT10aGlzLl9nZXRNb2RlbChlKTtpZighaSlyZXR1cm4gT2JqZWN0LmNyZWF0ZShudWxsKTtjb25zdCBhPW5ldyBSZWdFeHAobixyKSxvPU9iamVjdC5jcmVhdGUobnVsbCk7Zm9yKGxldCBlPXQuc3RhcnRMaW5lTnVtYmVyO2U8dC5lbmRMaW5lTnVtYmVyO2UrKyl7Y29uc3QgdD1pLmdldExpbmVXb3JkcyhlLGEpO2Zvcihjb25zdCBuIG9mIHQpe2lmKCFpc05hTihOdW1iZXIobi53b3JkKSkpY29udGludWU7bGV0IHQ9b1tuLndvcmRdO3R8fCh0PVtdLG9bbi53b3JkXT10KSx0LnB1c2goe3N0YXJ0TGluZU51bWJlcjplLHN0YXJ0Q29sdW1uOm4uc3RhcnRDb2x1bW4sZW5kTGluZU51bWJlcjplLGVuZENvbHVtbjpuLmVuZENvbHVtbn0pfX1yZXR1cm4gb30pKX1uYXZpZ2F0ZVZhbHVlU2V0KGUsdCxuLHIsaSl7cmV0dXJuIENyKHRoaXMsdm9pZCAwLHZvaWQgMCwoZnVuY3Rpb24qKCl7Y29uc3QgYT10aGlzLl9nZXRNb2RlbChlKTtpZighYSlyZXR1cm4gbnVsbDtjb25zdCBvPW5ldyBSZWdFeHAocixpKTt0LnN0YXJ0Q29sdW1uPT09dC5lbmRDb2x1bW4mJih0PXtzdGFydExpbmVOdW1iZXI6dC5zdGFydExpbmVOdW1iZXIsc3RhcnRDb2x1bW46dC5zdGFydENvbHVtbixlbmRMaW5lTnVtYmVyOnQuZW5kTGluZU51bWJlcixlbmRDb2x1bW46dC5lbmRDb2x1bW4rMX0pO2NvbnN0IHM9YS5nZXRWYWx1ZUluUmFuZ2UodCksbD1hLmdldFdvcmRBdFBvc2l0aW9uKHtsaW5lTnVtYmVyOnQuc3RhcnRMaW5lTnVtYmVyLGNvbHVtbjp0LnN0YXJ0Q29sdW1ufSxvKTtpZighbClyZXR1cm4gbnVsbDtjb25zdCBjPWEuZ2V0VmFsdWVJblJhbmdlKGwpO3JldHVybiBrdC5JTlNUQU5DRS5uYXZpZ2F0ZVZhbHVlU2V0KHQscyxsLGMsbil9KSl9bG9hZEZvcmVpZ25Nb2R1bGUoZSx0LG4pe2NvbnN0IHI9ZnVuY3Rpb24oZSx0KXtjb25zdCBuPWU9PmZ1bmN0aW9uKCl7Y29uc3Qgbj1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMCk7cmV0dXJuIHQoZSxuKX07bGV0IHI9e307Zm9yKGNvbnN0IHQgb2YgZSlyW3RdPW4odCk7cmV0dXJuIHJ9KG4sKChlLHQpPT50aGlzLl9ob3N0LmZocihlLHQpKSksaT17aG9zdDpyLGdldE1pcnJvck1vZGVsczooKT0+dGhpcy5fZ2V0TW9kZWxzKCl9O3JldHVybiB0aGlzLl9mb3JlaWduTW9kdWxlRmFjdG9yeT8odGhpcy5fZm9yZWlnbk1vZHVsZT10aGlzLl9mb3JlaWduTW9kdWxlRmFjdG9yeShpLHQpLFByb21pc2UucmVzb2x2ZShxKHRoaXMuX2ZvcmVpZ25Nb2R1bGUpKSk6UHJvbWlzZS5yZWplY3QobmV3IEVycm9yKCJVbmV4cGVjdGVkIHVzYWdlIikpfWZtcihlLHQpe2lmKCF0aGlzLl9mb3JlaWduTW9kdWxlfHwiZnVuY3Rpb24iIT10eXBlb2YgdGhpcy5fZm9yZWlnbk1vZHVsZVtlXSlyZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKCJNaXNzaW5nIHJlcXVlc3RIYW5kbGVyIG9yIG1ldGhvZDogIitlKSk7dHJ5e3JldHVybiBQcm9taXNlLnJlc29sdmUodGhpcy5fZm9yZWlnbk1vZHVsZVtlXS5hcHBseSh0aGlzLl9mb3JlaWduTW9kdWxlLHQpKX1jYXRjaChlKXtyZXR1cm4gUHJvbWlzZS5yZWplY3QoZSl9fX1Mci5fZGlmZkxpbWl0PTFlNSxMci5fc3VnZ2VzdGlvbnNMaW1pdD0xZTQsImZ1bmN0aW9uIj09dHlwZW9mIGltcG9ydFNjcmlwdHMmJih4Lm1vbmFjbz17ZWRpdG9yOnZvaWQgMCxsYW5ndWFnZXM6dm9pZCAwLGV4dHJhOnZvaWQgMCxDYW5jZWxsYXRpb25Ub2tlblNvdXJjZTpMdCxFbWl0dGVyOlAsS2V5Q29kZTpnbixLZXlNb2Q6YnIsUG9zaXRpb246UWUsUmFuZ2U6WmUsU2VsZWN0aW9uOkR0LFVyaTpxZSxUb2tlbjpabixNYXJrZG93blN0cmluZzpjcixNYXJrZG93blN0cmluZ1RleHROZXdsaW5lU3R5bGU6eW4sRGlzcG9zYWJsZTpwLERpc3Bvc2FibGVTdG9yZTp1LEVycm9ySGFuZGxlcjplLEFic3RyYWN0TG9nZ2VyOmZyLENvbnNvbGVMb2dnZXI6Z3IsVG9rZW5pemF0aW9uUmVzdWx0OmVyLEVuY29kZWRUb2tlbml6YXRpb25SZXN1bHQ6dHIsU2VsZWN0aW9uRGlyZWN0aW9uOkRuLE1hcmtlclNldmVyaXR5OlRuLE1hcmtlclRhZzprbixMb2dMZXZlbDp2bixlcnJvckhhbmRsZXI6dH0pO2xldCBFcj0hMTtmdW5jdGlvbiBBcihlKXtpZihFcilyZXR1cm47RXI9ITA7Y29uc3QgdD1uZXcgc2UoKGU9PntzZWxmLnBvc3RNZXNzYWdlKGUpfSksKHQ9Pm5ldyBMcih0LGUpKSk7c2VsZi5vbm1lc3NhZ2U9ZT0+e3Qub25tZXNzYWdlKGUuZGF0YSl9fWZ1bmN0aW9uIE1yKGUsdCwuLi5uKXsKLyohLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAqIENvcHlyaWdodCAoYykgTWljcm9zb2Z0IENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgICogVmVyc2lvbjogMC4zMy4wKGFjOWI2MzU5NGZhNDlkYjg0MjVlNDNhZjZmODhiZmQwNDk5ZGUzNTQpCiAgICAgKiBSZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UKICAgICAqIGh0dHBzOi8vZ2l0aHViLmNvbS9taWNyb3NvZnQvbW9uYWNvLWVkaXRvci9ibG9iL21haW4vTElDRU5TRS50eHQKICAgICAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwpyZXR1cm4gZnVuY3Rpb24oZSx0KXtsZXQgbjtyZXR1cm4gbj0wPT09dC5sZW5ndGg/ZTplLnJlcGxhY2UoL1x7KFxkKylcfS9nLCgoZSxuKT0+e2xldCByPW5bMF07cmV0dXJuIHZvaWQgMCE9PXRbcl0/dFtyXTplfSkpLG59KHQsbil9ZnVuY3Rpb24gUnIoZSl7cmV0dXJuIE1yfXZhciBOcixJcixVcixIcixEcix6cixXcixPcixQcixxcixGcixCcixWcixLcixqcixHciwkcixKcixYcixZcixRcixacixlaSx0aSxuaSxyaSxpaSxhaSxvaSxzaSxsaSxjaSxoaSxkaSx1aSxwaSxtaSxmaSxnaSxiaSx3aSxfaSx2aSx5aSxUaSxraSxTaSxDaSx4aTtzZWxmLm9ubWVzc2FnZT1lPT57RXJ8fEFyKG51bGwpfSwoSXI9TnJ8fChOcj17fSkpLk1JTl9WQUxVRT0tMjE0NzQ4MzY0OCxJci5NQVhfVkFMVUU9MjE0NzQ4MzY0NywoSHI9VXJ8fChVcj17fSkpLk1JTl9WQUxVRT0wLEhyLk1BWF9WQUxVRT0yMTQ3NDgzNjQ3LCh6cj1Ecnx8KERyPXt9KSkuY3JlYXRlPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGU9PT1OdW1iZXIuTUFYX1ZBTFVFJiYoZT1Vci5NQVhfVkFMVUUpLHQ9PT1OdW1iZXIuTUFYX1ZBTFVFJiYodD1Vci5NQVhfVkFMVUUpLHtsaW5lOmUsY2hhcmFjdGVyOnR9fSx6ci5pcz1mdW5jdGlvbihlKXt2YXIgdD1lO3JldHVybiB4YS5vYmplY3RMaXRlcmFsKHQpJiZ4YS51aW50ZWdlcih0LmxpbmUpJiZ4YS51aW50ZWdlcih0LmNoYXJhY3Rlcil9LChPcj1Xcnx8KFdyPXt9KSkuY3JlYXRlPWZ1bmN0aW9uKGUsdCxuLHIpe2lmKHhhLnVpbnRlZ2VyKGUpJiZ4YS51aW50ZWdlcih0KSYmeGEudWludGVnZXIobikmJnhhLnVpbnRlZ2VyKHIpKXJldHVybntzdGFydDpEci5jcmVhdGUoZSx0KSxlbmQ6RHIuY3JlYXRlKG4scil9O2lmKERyLmlzKGUpJiZEci5pcyh0KSlyZXR1cm57c3RhcnQ6ZSxlbmQ6dH07dGhyb3cgbmV3IEVycm9yKCJSYW5nZSNjcmVhdGUgY2FsbGVkIHdpdGggaW52YWxpZCBhcmd1bWVudHNbIitlKyIsICIrdCsiLCAiK24rIiwgIityKyJdIil9LE9yLmlzPWZ1bmN0aW9uKGUpe3ZhciB0PWU7cmV0dXJuIHhhLm9iamVjdExpdGVyYWwodCkmJkRyLmlzKHQuc3RhcnQpJiZEci5pcyh0LmVuZCl9LChxcj1Qcnx8KFByPXt9KSkuY3JlYXRlPWZ1bmN0aW9uKGUsdCl7cmV0dXJue3VyaTplLHJhbmdlOnR9fSxxci5pcz1mdW5jdGlvbihlKXt2YXIgdD1lO3JldHVybiB4YS5kZWZpbmVkKHQpJiZXci5pcyh0LnJhbmdlKSYmKHhhLnN0cmluZyh0LnVyaSl8fHhhLnVuZGVmaW5lZCh0LnVyaSkpfSwoQnI9RnJ8fChGcj17fSkpLmNyZWF0ZT1mdW5jdGlvbihlLHQsbixyKXtyZXR1cm57dGFyZ2V0VXJpOmUsdGFyZ2V0UmFuZ2U6dCx0YXJnZXRTZWxlY3Rpb25SYW5nZTpuLG9yaWdpblNlbGVjdGlvblJhbmdlOnJ9fSxCci5pcz1mdW5jdGlvbihlKXt2YXIgdD1lO3JldHVybiB4YS5kZWZpbmVkKHQpJiZXci5pcyh0LnRhcmdldFJhbmdlKSYmeGEuc3RyaW5nKHQudGFyZ2V0VXJpKSYmKFdyLmlzKHQudGFyZ2V0U2VsZWN0aW9uUmFuZ2UpfHx4YS51bmRlZmluZWQodC50YXJnZXRTZWxlY3Rpb25SYW5nZSkpJiYoV3IuaXModC5vcmlnaW5TZWxlY3Rpb25SYW5nZSl8fHhhLnVuZGVmaW5lZCh0Lm9yaWdpblNlbGVjdGlvblJhbmdlKSl9LChLcj1Wcnx8KFZyPXt9KSkuY3JlYXRlPWZ1bmN0aW9uKGUsdCxuLHIpe3JldHVybntyZWQ6ZSxncmVlbjp0LGJsdWU6bixhbHBoYTpyfX0sS3IuaXM9ZnVuY3Rpb24oZSl7dmFyIHQ9ZTtyZXR1cm4geGEubnVtYmVyUmFuZ2UodC5yZWQsMCwxKSYmeGEubnVtYmVyUmFuZ2UodC5ncmVlbiwwLDEpJiZ4YS5udW1iZXJSYW5nZSh0LmJsdWUsMCwxKSYmeGEubnVtYmVyUmFuZ2UodC5hbHBoYSwwLDEpfSwoR3I9anJ8fChqcj17fSkpLmNyZWF0ZT1mdW5jdGlvbihlLHQpe3JldHVybntyYW5nZTplLGNvbG9yOnR9fSxHci5pcz1mdW5jdGlvbihlKXt2YXIgdD1lO3JldHVybiBXci5pcyh0LnJhbmdlKSYmVnIuaXModC5jb2xvcil9LChKcj0kcnx8KCRyPXt9KSkuY3JlYXRlPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm57bGFiZWw6ZSx0ZXh0RWRpdDp0LGFkZGl0aW9uYWxUZXh0RWRpdHM6bn19LEpyLmlzPWZ1bmN0aW9uKGUpe3ZhciB0PWU7cmV0dXJuIHhhLnN0cmluZyh0LmxhYmVsKSYmKHhhLnVuZGVmaW5lZCh0LnRleHRFZGl0KXx8ZGkuaXModCkpJiYoeGEudW5kZWZpbmVkKHQuYWRkaXRpb25hbFRleHRFZGl0cyl8fHhhLnR5cGVkQXJyYXkodC5hZGRpdGlvbmFsVGV4dEVkaXRzLGRpLmlzKSl9LChZcj1Ycnx8KFhyPXt9KSkuQ29tbWVudD0iY29tbWVudCIsWXIuSW1wb3J0cz0iaW1wb3J0cyIsWXIuUmVnaW9uPSJyZWdpb24iLChacj1Rcnx8KFFyPXt9KSkuY3JlYXRlPWZ1bmN0aW9uKGUsdCxuLHIsaSl7dmFyIGE9e3N0YXJ0TGluZTplLGVuZExpbmU6dH07cmV0dXJuIHhhLmRlZmluZWQobikmJihhLnN0YXJ0Q2hhcmFjdGVyPW4pLHhhLmRlZmluZWQocikmJihhLmVuZENoYXJhY3Rlcj1yKSx4YS5kZWZpbmVkKGkpJiYoYS5raW5kPWkpLGF9LFpyLmlzPWZ1bmN0aW9uKGUpe3ZhciB0PWU7cmV0dXJuIHhhLnVpbnRlZ2VyKHQuc3RhcnRMaW5lKSYmeGEudWludGVnZXIodC5zdGFydExpbmUpJiYoeGEudW5kZWZpbmVkKHQuc3RhcnRDaGFyYWN0ZXIpfHx4YS51aW50ZWdlcih0LnN0YXJ0Q2hhcmFjdGVyKSkmJih4YS51bmRlZmluZWQodC5lbmRDaGFyYWN0ZXIpfHx4YS51aW50ZWdlcih0LmVuZENoYXJhY3RlcikpJiYoeGEudW5kZWZpbmVkKHQua2luZCl8fHhhLnN0cmluZyh0LmtpbmQpKX0sKHRpPWVpfHwoZWk9e30pKS5jcmVhdGU9ZnVuY3Rpb24oZSx0KXtyZXR1cm57bG9jYXRpb246ZSxtZXNzYWdlOnR9fSx0aS5pcz1mdW5jdGlvbihlKXt2YXIgdD1lO3JldHVybiB4YS5kZWZpbmVkKHQpJiZQci5pcyh0LmxvY2F0aW9uKSYmeGEuc3RyaW5nKHQubWVzc2FnZSl9LChyaT1uaXx8KG5pPXt9KSkuRXJyb3I9MSxyaS5XYXJuaW5nPTIscmkuSW5mb3JtYXRpb249MyxyaS5IaW50PTQsKGFpPWlpfHwoaWk9e30pKS5Vbm5lY2Vzc2FyeT0xLGFpLkRlcHJlY2F0ZWQ9Miwob2l8fChvaT17fSkpLmlzPWZ1bmN0aW9uKGUpe3ZhciB0PWU7cmV0dXJuIG51bGwhPXQmJnhhLnN0cmluZyh0LmhyZWYpfSwobGk9c2l8fChzaT17fSkpLmNyZWF0ZT1mdW5jdGlvbihlLHQsbixyLGksYSl7dmFyIG89e3JhbmdlOmUsbWVzc2FnZTp0fTtyZXR1cm4geGEuZGVmaW5lZChuKSYmKG8uc2V2ZXJpdHk9bikseGEuZGVmaW5lZChyKSYmKG8uY29kZT1yKSx4YS5kZWZpbmVkKGkpJiYoby5zb3VyY2U9aSkseGEuZGVmaW5lZChhKSYmKG8ucmVsYXRlZEluZm9ybWF0aW9uPWEpLG99LGxpLmlzPWZ1bmN0aW9uKGUpe3ZhciB0LG49ZTtyZXR1cm4geGEuZGVmaW5lZChuKSYmV3IuaXMobi5yYW5nZSkmJnhhLnN0cmluZyhuLm1lc3NhZ2UpJiYoeGEubnVtYmVyKG4uc2V2ZXJpdHkpfHx4YS51bmRlZmluZWQobi5zZXZlcml0eSkpJiYoeGEuaW50ZWdlcihuLmNvZGUpfHx4YS5zdHJpbmcobi5jb2RlKXx8eGEudW5kZWZpbmVkKG4uY29kZSkpJiYoeGEudW5kZWZpbmVkKG4uY29kZURlc2NyaXB0aW9uKXx8eGEuc3RyaW5nKG51bGw9PT0odD1uLmNvZGVEZXNjcmlwdGlvbil8fHZvaWQgMD09PXQ/dm9pZCAwOnQuaHJlZikpJiYoeGEuc3RyaW5nKG4uc291cmNlKXx8eGEudW5kZWZpbmVkKG4uc291cmNlKSkmJih4YS51bmRlZmluZWQobi5yZWxhdGVkSW5mb3JtYXRpb24pfHx4YS50eXBlZEFycmF5KG4ucmVsYXRlZEluZm9ybWF0aW9uLGVpLmlzKSl9LChoaT1jaXx8KGNpPXt9KSkuY3JlYXRlPWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuPVtdLHI9MjtyPGFyZ3VtZW50cy5sZW5ndGg7cisrKW5bci0yXT1hcmd1bWVudHNbcl07dmFyIGk9e3RpdGxlOmUsY29tbWFuZDp0fTtyZXR1cm4geGEuZGVmaW5lZChuKSYmbi5sZW5ndGg+MCYmKGkuYXJndW1lbnRzPW4pLGl9LGhpLmlzPWZ1bmN0aW9uKGUpe3ZhciB0PWU7cmV0dXJuIHhhLmRlZmluZWQodCkmJnhhLnN0cmluZyh0LnRpdGxlKSYmeGEuc3RyaW5nKHQuY29tbWFuZCl9LCh1aT1kaXx8KGRpPXt9KSkucmVwbGFjZT1mdW5jdGlvbihlLHQpe3JldHVybntyYW5nZTplLG5ld1RleHQ6dH19LHVpLmluc2VydD1mdW5jdGlvbihlLHQpe3JldHVybntyYW5nZTp7c3RhcnQ6ZSxlbmQ6ZX0sbmV3VGV4dDp0fX0sdWkuZGVsPWZ1bmN0aW9uKGUpe3JldHVybntyYW5nZTplLG5ld1RleHQ6IiJ9fSx1aS5pcz1mdW5jdGlvbihlKXt2YXIgdD1lO3JldHVybiB4YS5vYmplY3RMaXRlcmFsKHQpJiZ4YS5zdHJpbmcodC5uZXdUZXh0KSYmV3IuaXModC5yYW5nZSl9LChtaT1waXx8KHBpPXt9KSkuY3JlYXRlPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj17bGFiZWw6ZX07cmV0dXJuIHZvaWQgMCE9PXQmJihyLm5lZWRzQ29uZmlybWF0aW9uPXQpLHZvaWQgMCE9PW4mJihyLmRlc2NyaXB0aW9uPW4pLHJ9LG1pLmlzPWZ1bmN0aW9uKGUpe3ZhciB0PWU7cmV0dXJuIHZvaWQgMCE9PXQmJnhhLm9iamVjdExpdGVyYWwodCkmJnhhLnN0cmluZyh0LmxhYmVsKSYmKHhhLmJvb2xlYW4odC5uZWVkc0NvbmZpcm1hdGlvbil8fHZvaWQgMD09PXQubmVlZHNDb25maXJtYXRpb24pJiYoeGEuc3RyaW5nKHQuZGVzY3JpcHRpb24pfHx2b2lkIDA9PT10LmRlc2NyaXB0aW9uKX0sKGZpfHwoZmk9e30pKS5pcz1mdW5jdGlvbihlKXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIGV9LChiaT1naXx8KGdpPXt9KSkucmVwbGFjZT1mdW5jdGlvbihlLHQsbil7cmV0dXJue3JhbmdlOmUsbmV3VGV4dDp0LGFubm90YXRpb25JZDpufX0sYmkuaW5zZXJ0PWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm57cmFuZ2U6e3N0YXJ0OmUsZW5kOmV9LG5ld1RleHQ6dCxhbm5vdGF0aW9uSWQ6bn19LGJpLmRlbD1mdW5jdGlvbihlLHQpe3JldHVybntyYW5nZTplLG5ld1RleHQ6IiIsYW5ub3RhdGlvbklkOnR9fSxiaS5pcz1mdW5jdGlvbihlKXt2YXIgdD1lO3JldHVybiBkaS5pcyh0KSYmKHBpLmlzKHQuYW5ub3RhdGlvbklkKXx8ZmkuaXModC5hbm5vdGF0aW9uSWQpKX0sKF9pPXdpfHwod2k9e30pKS5jcmVhdGU9ZnVuY3Rpb24oZSx0KXtyZXR1cm57dGV4dERvY3VtZW50OmUsZWRpdHM6dH19LF9pLmlzPWZ1bmN0aW9uKGUpe3ZhciB0PWU7cmV0dXJuIHhhLmRlZmluZWQodCkmJlJpLmlzKHQudGV4dERvY3VtZW50KSYmQXJyYXkuaXNBcnJheSh0LmVkaXRzKX0sKHlpPXZpfHwodmk9e30pKS5jcmVhdGU9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXtraW5kOiJjcmVhdGUiLHVyaTplfTtyZXR1cm4gdm9pZCAwPT09dHx8dm9pZCAwPT09dC5vdmVyd3JpdGUmJnZvaWQgMD09PXQuaWdub3JlSWZFeGlzdHN8fChyLm9wdGlvbnM9dCksdm9pZCAwIT09biYmKHIuYW5ub3RhdGlvbklkPW4pLHJ9LHlpLmlzPWZ1bmN0aW9uKGUpe3ZhciB0PWU7cmV0dXJuIHQmJiJjcmVhdGUiPT09dC5raW5kJiZ4YS5zdHJpbmcodC51cmkpJiYodm9pZCAwPT09dC5vcHRpb25zfHwodm9pZCAwPT09dC5vcHRpb25zLm92ZXJ3cml0ZXx8eGEuYm9vbGVhbih0Lm9wdGlvbnMub3ZlcndyaXRlKSkmJih2b2lkIDA9PT10Lm9wdGlvbnMuaWdub3JlSWZFeGlzdHN8fHhhLmJvb2xlYW4odC5vcHRpb25zLmlnbm9yZUlmRXhpc3RzKSkpJiYodm9pZCAwPT09dC5hbm5vdGF0aW9uSWR8fGZpLmlzKHQuYW5ub3RhdGlvbklkKSl9LChraT1UaXx8KFRpPXt9KSkuY3JlYXRlPWZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBpPXtraW5kOiJyZW5hbWUiLG9sZFVyaTplLG5ld1VyaTp0fTtyZXR1cm4gdm9pZCAwPT09bnx8dm9pZCAwPT09bi5vdmVyd3JpdGUmJnZvaWQgMD09PW4uaWdub3JlSWZFeGlzdHN8fChpLm9wdGlvbnM9biksdm9pZCAwIT09ciYmKGkuYW5ub3RhdGlvbklkPXIpLGl9LGtpLmlzPWZ1bmN0aW9uKGUpe3ZhciB0PWU7cmV0dXJuIHQmJiJyZW5hbWUiPT09dC5raW5kJiZ4YS5zdHJpbmcodC5vbGRVcmkpJiZ4YS5zdHJpbmcodC5uZXdVcmkpJiYodm9pZCAwPT09dC5vcHRpb25zfHwodm9pZCAwPT09dC5vcHRpb25zLm92ZXJ3cml0ZXx8eGEuYm9vbGVhbih0Lm9wdGlvbnMub3ZlcndyaXRlKSkmJih2b2lkIDA9PT10Lm9wdGlvbnMuaWdub3JlSWZFeGlzdHN8fHhhLmJvb2xlYW4odC5vcHRpb25zLmlnbm9yZUlmRXhpc3RzKSkpJiYodm9pZCAwPT09dC5hbm5vdGF0aW9uSWR8fGZpLmlzKHQuYW5ub3RhdGlvbklkKSl9LChDaT1TaXx8KFNpPXt9KSkuY3JlYXRlPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj17a2luZDoiZGVsZXRlIix1cmk6ZX07cmV0dXJuIHZvaWQgMD09PXR8fHZvaWQgMD09PXQucmVjdXJzaXZlJiZ2b2lkIDA9PT10Lmlnbm9yZUlmTm90RXhpc3RzfHwoci5vcHRpb25zPXQpLHZvaWQgMCE9PW4mJihyLmFubm90YXRpb25JZD1uKSxyfSxDaS5pcz1mdW5jdGlvbihlKXt2YXIgdD1lO3JldHVybiB0JiYiZGVsZXRlIj09PXQua2luZCYmeGEuc3RyaW5nKHQudXJpKSYmKHZvaWQgMD09PXQub3B0aW9uc3x8KHZvaWQgMD09PXQub3B0aW9ucy5yZWN1cnNpdmV8fHhhLmJvb2xlYW4odC5vcHRpb25zLnJlY3Vyc2l2ZSkpJiYodm9pZCAwPT09dC5vcHRpb25zLmlnbm9yZUlmTm90RXhpc3RzfHx4YS5ib29sZWFuKHQub3B0aW9ucy5pZ25vcmVJZk5vdEV4aXN0cykpKSYmKHZvaWQgMD09PXQuYW5ub3RhdGlvbklkfHxmaS5pcyh0LmFubm90YXRpb25JZCkpfSwoeGl8fCh4aT17fSkpLmlzPWZ1bmN0aW9uKGUpe3ZhciB0PWU7cmV0dXJuIHQmJih2b2lkIDAhPT10LmNoYW5nZXN8fHZvaWQgMCE9PXQuZG9jdW1lbnRDaGFuZ2VzKSYmKHZvaWQgMD09PXQuZG9jdW1lbnRDaGFuZ2VzfHx0LmRvY3VtZW50Q2hhbmdlcy5ldmVyeSgoZnVuY3Rpb24oZSl7cmV0dXJuIHhhLnN0cmluZyhlLmtpbmQpP3ZpLmlzKGUpfHxUaS5pcyhlKXx8U2kuaXMoZSk6d2kuaXMoZSl9KSkpfTt2YXIgTGksRWksQWksTWksUmksTmksSWksVWksSGksRGksemksV2ksT2ksUGkscWksRmksQmksVmksS2ksamksR2ksJGksSmksWGksWWksUWksWmksZWEsdGEsbmEscmEsaWEsYWEsb2Esc2EsbGEsY2EsaGEsZGEsdWEscGEsbWEsZmEsZ2EsYmEsd2EsX2EsdmEseWEsVGEsa2EsU2E9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUsdCl7dGhpcy5lZGl0cz1lLHRoaXMuY2hhbmdlQW5ub3RhdGlvbnM9dH1yZXR1cm4gZS5wcm90b3R5cGUuaW5zZXJ0PWZ1bmN0aW9uKGUsdCxuKXt2YXIgcixpO2lmKHZvaWQgMD09PW4/cj1kaS5pbnNlcnQoZSx0KTpmaS5pcyhuKT8oaT1uLHI9Z2kuaW5zZXJ0KGUsdCxuKSk6KHRoaXMuYXNzZXJ0Q2hhbmdlQW5ub3RhdGlvbnModGhpcy5jaGFuZ2VBbm5vdGF0aW9ucyksaT10aGlzLmNoYW5nZUFubm90YXRpb25zLm1hbmFnZShuKSxyPWdpLmluc2VydChlLHQsaSkpLHRoaXMuZWRpdHMucHVzaChyKSx2b2lkIDAhPT1pKXJldHVybiBpfSxlLnByb3RvdHlwZS5yZXBsYWNlPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcixpO2lmKHZvaWQgMD09PW4/cj1kaS5yZXBsYWNlKGUsdCk6ZmkuaXMobik/KGk9bixyPWdpLnJlcGxhY2UoZSx0LG4pKToodGhpcy5hc3NlcnRDaGFuZ2VBbm5vdGF0aW9ucyh0aGlzLmNoYW5nZUFubm90YXRpb25zKSxpPXRoaXMuY2hhbmdlQW5ub3RhdGlvbnMubWFuYWdlKG4pLHI9Z2kucmVwbGFjZShlLHQsaSkpLHRoaXMuZWRpdHMucHVzaChyKSx2b2lkIDAhPT1pKXJldHVybiBpfSxlLnByb3RvdHlwZS5kZWxldGU9ZnVuY3Rpb24oZSx0KXt2YXIgbixyO2lmKHZvaWQgMD09PXQ/bj1kaS5kZWwoZSk6ZmkuaXModCk/KHI9dCxuPWdpLmRlbChlLHQpKToodGhpcy5hc3NlcnRDaGFuZ2VBbm5vdGF0aW9ucyh0aGlzLmNoYW5nZUFubm90YXRpb25zKSxyPXRoaXMuY2hhbmdlQW5ub3RhdGlvbnMubWFuYWdlKHQpLG49Z2kuZGVsKGUscikpLHRoaXMuZWRpdHMucHVzaChuKSx2b2lkIDAhPT1yKXJldHVybiByfSxlLnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24oZSl7dGhpcy5lZGl0cy5wdXNoKGUpfSxlLnByb3RvdHlwZS5hbGw9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lZGl0c30sZS5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLmVkaXRzLnNwbGljZSgwLHRoaXMuZWRpdHMubGVuZ3RoKX0sZS5wcm90b3R5cGUuYXNzZXJ0Q2hhbmdlQW5ub3RhdGlvbnM9ZnVuY3Rpb24oZSl7aWYodm9pZCAwPT09ZSl0aHJvdyBuZXcgRXJyb3IoIlRleHQgZWRpdCBjaGFuZ2UgaXMgbm90IGNvbmZpZ3VyZWQgdG8gbWFuYWdlIGNoYW5nZSBhbm5vdGF0aW9ucy4iKX0sZX0oKSxDYT1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSl7dGhpcy5fYW5ub3RhdGlvbnM9dm9pZCAwPT09ZT9PYmplY3QuY3JlYXRlKG51bGwpOmUsdGhpcy5fY291bnRlcj0wLHRoaXMuX3NpemU9MH1yZXR1cm4gZS5wcm90b3R5cGUuYWxsPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2Fubm90YXRpb25zfSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsInNpemUiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc2l6ZX0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxlLnByb3RvdHlwZS5tYW5hZ2U9ZnVuY3Rpb24oZSx0KXt2YXIgbjtpZihmaS5pcyhlKT9uPWU6KG49dGhpcy5uZXh0SWQoKSx0PWUpLHZvaWQgMCE9PXRoaXMuX2Fubm90YXRpb25zW25dKXRocm93IG5ldyBFcnJvcigiSWQgIituKyIgaXMgYWxyZWFkeSBpbiB1c2UuIik7aWYodm9pZCAwPT09dCl0aHJvdyBuZXcgRXJyb3IoIk5vIGFubm90YXRpb24gcHJvdmlkZWQgZm9yIGlkICIrbik7cmV0dXJuIHRoaXMuX2Fubm90YXRpb25zW25dPXQsdGhpcy5fc2l6ZSsrLG59LGUucHJvdG90eXBlLm5leHRJZD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9jb3VudGVyKyssdGhpcy5fY291bnRlci50b1N0cmluZygpfSxlfSgpOyFmdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSl7dmFyIHQ9dGhpczt0aGlzLl90ZXh0RWRpdENoYW5nZXM9T2JqZWN0LmNyZWF0ZShudWxsKSx2b2lkIDAhPT1lPyh0aGlzLl93b3Jrc3BhY2VFZGl0PWUsZS5kb2N1bWVudENoYW5nZXM/KHRoaXMuX2NoYW5nZUFubm90YXRpb25zPW5ldyBDYShlLmNoYW5nZUFubm90YXRpb25zKSxlLmNoYW5nZUFubm90YXRpb25zPXRoaXMuX2NoYW5nZUFubm90YXRpb25zLmFsbCgpLGUuZG9jdW1lbnRDaGFuZ2VzLmZvckVhY2goKGZ1bmN0aW9uKGUpe2lmKHdpLmlzKGUpKXt2YXIgbj1uZXcgU2EoZS5lZGl0cyx0Ll9jaGFuZ2VBbm5vdGF0aW9ucyk7dC5fdGV4dEVkaXRDaGFuZ2VzW2UudGV4dERvY3VtZW50LnVyaV09bn19KSkpOmUuY2hhbmdlcyYmT2JqZWN0LmtleXMoZS5jaGFuZ2VzKS5mb3JFYWNoKChmdW5jdGlvbihuKXt2YXIgcj1uZXcgU2EoZS5jaGFuZ2VzW25dKTt0Ll90ZXh0RWRpdENoYW5nZXNbbl09cn0pKSk6dGhpcy5fd29ya3NwYWNlRWRpdD17fX1PYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsImVkaXQiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pbml0RG9jdW1lbnRDaGFuZ2VzKCksdm9pZCAwIT09dGhpcy5fY2hhbmdlQW5ub3RhdGlvbnMmJigwPT09dGhpcy5fY2hhbmdlQW5ub3RhdGlvbnMuc2l6ZT90aGlzLl93b3Jrc3BhY2VFZGl0LmNoYW5nZUFubm90YXRpb25zPXZvaWQgMDp0aGlzLl93b3Jrc3BhY2VFZGl0LmNoYW5nZUFubm90YXRpb25zPXRoaXMuX2NoYW5nZUFubm90YXRpb25zLmFsbCgpKSx0aGlzLl93b3Jrc3BhY2VFZGl0fSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLGUucHJvdG90eXBlLmdldFRleHRFZGl0Q2hhbmdlPWZ1bmN0aW9uKGUpe2lmKFJpLmlzKGUpKXtpZih0aGlzLmluaXREb2N1bWVudENoYW5nZXMoKSx2b2lkIDA9PT10aGlzLl93b3Jrc3BhY2VFZGl0LmRvY3VtZW50Q2hhbmdlcyl0aHJvdyBuZXcgRXJyb3IoIldvcmtzcGFjZSBlZGl0IGlzIG5vdCBjb25maWd1cmVkIGZvciBkb2N1bWVudCBjaGFuZ2VzLiIpO3ZhciB0PXt1cmk6ZS51cmksdmVyc2lvbjplLnZlcnNpb259O2lmKCEocj10aGlzLl90ZXh0RWRpdENoYW5nZXNbdC51cmldKSl7dmFyIG49e3RleHREb2N1bWVudDp0LGVkaXRzOmk9W119O3RoaXMuX3dvcmtzcGFjZUVkaXQuZG9jdW1lbnRDaGFuZ2VzLnB1c2gobikscj1uZXcgU2EoaSx0aGlzLl9jaGFuZ2VBbm5vdGF0aW9ucyksdGhpcy5fdGV4dEVkaXRDaGFuZ2VzW3QudXJpXT1yfXJldHVybiByfWlmKHRoaXMuaW5pdENoYW5nZXMoKSx2b2lkIDA9PT10aGlzLl93b3Jrc3BhY2VFZGl0LmNoYW5nZXMpdGhyb3cgbmV3IEVycm9yKCJXb3Jrc3BhY2UgZWRpdCBpcyBub3QgY29uZmlndXJlZCBmb3Igbm9ybWFsIHRleHQgZWRpdCBjaGFuZ2VzLiIpO3ZhciByO2lmKCEocj10aGlzLl90ZXh0RWRpdENoYW5nZXNbZV0pKXt2YXIgaT1bXTt0aGlzLl93b3Jrc3BhY2VFZGl0LmNoYW5nZXNbZV09aSxyPW5ldyBTYShpKSx0aGlzLl90ZXh0RWRpdENoYW5nZXNbZV09cn1yZXR1cm4gcn0sZS5wcm90b3R5cGUuaW5pdERvY3VtZW50Q2hhbmdlcz1mdW5jdGlvbigpe3ZvaWQgMD09PXRoaXMuX3dvcmtzcGFjZUVkaXQuZG9jdW1lbnRDaGFuZ2VzJiZ2b2lkIDA9PT10aGlzLl93b3Jrc3BhY2VFZGl0LmNoYW5nZXMmJih0aGlzLl9jaGFuZ2VBbm5vdGF0aW9ucz1uZXcgQ2EsdGhpcy5fd29ya3NwYWNlRWRpdC5kb2N1bWVudENoYW5nZXM9W10sdGhpcy5fd29ya3NwYWNlRWRpdC5jaGFuZ2VBbm5vdGF0aW9ucz10aGlzLl9jaGFuZ2VBbm5vdGF0aW9ucy5hbGwoKSl9LGUucHJvdG90eXBlLmluaXRDaGFuZ2VzPWZ1bmN0aW9uKCl7dm9pZCAwPT09dGhpcy5fd29ya3NwYWNlRWRpdC5kb2N1bWVudENoYW5nZXMmJnZvaWQgMD09PXRoaXMuX3dvcmtzcGFjZUVkaXQuY2hhbmdlcyYmKHRoaXMuX3dvcmtzcGFjZUVkaXQuY2hhbmdlcz1PYmplY3QuY3JlYXRlKG51bGwpKX0sZS5wcm90b3R5cGUuY3JlYXRlRmlsZT1mdW5jdGlvbihlLHQsbil7aWYodGhpcy5pbml0RG9jdW1lbnRDaGFuZ2VzKCksdm9pZCAwPT09dGhpcy5fd29ya3NwYWNlRWRpdC5kb2N1bWVudENoYW5nZXMpdGhyb3cgbmV3IEVycm9yKCJXb3Jrc3BhY2UgZWRpdCBpcyBub3QgY29uZmlndXJlZCBmb3IgZG9jdW1lbnQgY2hhbmdlcy4iKTt2YXIgcixpLGE7aWYocGkuaXModCl8fGZpLmlzKHQpP3I9dDpuPXQsdm9pZCAwPT09cj9pPXZpLmNyZWF0ZShlLG4pOihhPWZpLmlzKHIpP3I6dGhpcy5fY2hhbmdlQW5ub3RhdGlvbnMubWFuYWdlKHIpLGk9dmkuY3JlYXRlKGUsbixhKSksdGhpcy5fd29ya3NwYWNlRWRpdC5kb2N1bWVudENoYW5nZXMucHVzaChpKSx2b2lkIDAhPT1hKXJldHVybiBhfSxlLnByb3RvdHlwZS5yZW5hbWVGaWxlPWZ1bmN0aW9uKGUsdCxuLHIpe2lmKHRoaXMuaW5pdERvY3VtZW50Q2hhbmdlcygpLHZvaWQgMD09PXRoaXMuX3dvcmtzcGFjZUVkaXQuZG9jdW1lbnRDaGFuZ2VzKXRocm93IG5ldyBFcnJvcigiV29ya3NwYWNlIGVkaXQgaXMgbm90IGNvbmZpZ3VyZWQgZm9yIGRvY3VtZW50IGNoYW5nZXMuIik7dmFyIGksYSxvO2lmKHBpLmlzKG4pfHxmaS5pcyhuKT9pPW46cj1uLHZvaWQgMD09PWk/YT1UaS5jcmVhdGUoZSx0LHIpOihvPWZpLmlzKGkpP2k6dGhpcy5fY2hhbmdlQW5ub3RhdGlvbnMubWFuYWdlKGkpLGE9VGkuY3JlYXRlKGUsdCxyLG8pKSx0aGlzLl93b3Jrc3BhY2VFZGl0LmRvY3VtZW50Q2hhbmdlcy5wdXNoKGEpLHZvaWQgMCE9PW8pcmV0dXJuIG99LGUucHJvdG90eXBlLmRlbGV0ZUZpbGU9ZnVuY3Rpb24oZSx0LG4pe2lmKHRoaXMuaW5pdERvY3VtZW50Q2hhbmdlcygpLHZvaWQgMD09PXRoaXMuX3dvcmtzcGFjZUVkaXQuZG9jdW1lbnRDaGFuZ2VzKXRocm93IG5ldyBFcnJvcigiV29ya3NwYWNlIGVkaXQgaXMgbm90IGNvbmZpZ3VyZWQgZm9yIGRvY3VtZW50IGNoYW5nZXMuIik7dmFyIHIsaSxhO2lmKHBpLmlzKHQpfHxmaS5pcyh0KT9yPXQ6bj10LHZvaWQgMD09PXI/aT1TaS5jcmVhdGUoZSxuKTooYT1maS5pcyhyKT9yOnRoaXMuX2NoYW5nZUFubm90YXRpb25zLm1hbmFnZShyKSxpPVNpLmNyZWF0ZShlLG4sYSkpLHRoaXMuX3dvcmtzcGFjZUVkaXQuZG9jdW1lbnRDaGFuZ2VzLnB1c2goaSksdm9pZCAwIT09YSlyZXR1cm4gYX19KCksKEVpPUxpfHwoTGk9e30pKS5jcmVhdGU9ZnVuY3Rpb24oZSl7cmV0dXJue3VyaTplfX0sRWkuaXM9ZnVuY3Rpb24oZSl7dmFyIHQ9ZTtyZXR1cm4geGEuZGVmaW5lZCh0KSYmeGEuc3RyaW5nKHQudXJpKX0sKE1pPUFpfHwoQWk9e30pKS5jcmVhdGU9ZnVuY3Rpb24oZSx0KXtyZXR1cm57dXJpOmUsdmVyc2lvbjp0fX0sTWkuaXM9ZnVuY3Rpb24oZSl7dmFyIHQ9ZTtyZXR1cm4geGEuZGVmaW5lZCh0KSYmeGEuc3RyaW5nKHQudXJpKSYmeGEuaW50ZWdlcih0LnZlcnNpb24pfSwoTmk9Uml8fChSaT17fSkpLmNyZWF0ZT1mdW5jdGlvbihlLHQpe3JldHVybnt1cmk6ZSx2ZXJzaW9uOnR9fSxOaS5pcz1mdW5jdGlvbihlKXt2YXIgdD1lO3JldHVybiB4YS5kZWZpbmVkKHQpJiZ4YS5zdHJpbmcodC51cmkpJiYobnVsbD09PXQudmVyc2lvbnx8eGEuaW50ZWdlcih0LnZlcnNpb24pKX0sKFVpPUlpfHwoSWk9e30pKS5jcmVhdGU9ZnVuY3Rpb24oZSx0LG4scil7cmV0dXJue3VyaTplLGxhbmd1YWdlSWQ6dCx2ZXJzaW9uOm4sdGV4dDpyfX0sVWkuaXM9ZnVuY3Rpb24oZSl7dmFyIHQ9ZTtyZXR1cm4geGEuZGVmaW5lZCh0KSYmeGEuc3RyaW5nKHQudXJpKSYmeGEuc3RyaW5nKHQubGFuZ3VhZ2VJZCkmJnhhLmludGVnZXIodC52ZXJzaW9uKSYmeGEuc3RyaW5nKHQudGV4dCl9LChEaT1IaXx8KEhpPXt9KSkuUGxhaW5UZXh0PSJwbGFpbnRleHQiLERpLk1hcmtkb3duPSJtYXJrZG93biIsZnVuY3Rpb24oZSl7ZS5pcz1mdW5jdGlvbih0KXt2YXIgbj10O3JldHVybiBuPT09ZS5QbGFpblRleHR8fG49PT1lLk1hcmtkb3dufX0oSGl8fChIaT17fSkpLCh6aXx8KHppPXt9KSkuaXM9ZnVuY3Rpb24oZSl7dmFyIHQ9ZTtyZXR1cm4geGEub2JqZWN0TGl0ZXJhbChlKSYmSGkuaXModC5raW5kKSYmeGEuc3RyaW5nKHQudmFsdWUpfSwoT2k9V2l8fChXaT17fSkpLlRleHQ9MSxPaS5NZXRob2Q9MixPaS5GdW5jdGlvbj0zLE9pLkNvbnN0cnVjdG9yPTQsT2kuRmllbGQ9NSxPaS5WYXJpYWJsZT02LE9pLkNsYXNzPTcsT2kuSW50ZXJmYWNlPTgsT2kuTW9kdWxlPTksT2kuUHJvcGVydHk9MTAsT2kuVW5pdD0xMSxPaS5WYWx1ZT0xMixPaS5FbnVtPTEzLE9pLktleXdvcmQ9MTQsT2kuU25pcHBldD0xNSxPaS5Db2xvcj0xNixPaS5GaWxlPTE3LE9pLlJlZmVyZW5jZT0xOCxPaS5Gb2xkZXI9MTksT2kuRW51bU1lbWJlcj0yMCxPaS5Db25zdGFudD0yMSxPaS5TdHJ1Y3Q9MjIsT2kuRXZlbnQ9MjMsT2kuT3BlcmF0b3I9MjQsT2kuVHlwZVBhcmFtZXRlcj0yNSwocWk9UGl8fChQaT17fSkpLlBsYWluVGV4dD0xLHFpLlNuaXBwZXQ9MiwoRml8fChGaT17fSkpLkRlcHJlY2F0ZWQ9MSwoVmk9Qml8fChCaT17fSkpLmNyZWF0ZT1mdW5jdGlvbihlLHQsbil7cmV0dXJue25ld1RleHQ6ZSxpbnNlcnQ6dCxyZXBsYWNlOm59fSxWaS5pcz1mdW5jdGlvbihlKXt2YXIgdD1lO3JldHVybiB0JiZ4YS5zdHJpbmcodC5uZXdUZXh0KSYmV3IuaXModC5pbnNlcnQpJiZXci5pcyh0LnJlcGxhY2UpfSwoamk9S2l8fChLaT17fSkpLmFzSXM9MSxqaS5hZGp1c3RJbmRlbnRhdGlvbj0yLChHaXx8KEdpPXt9KSkuY3JlYXRlPWZ1bmN0aW9uKGUpe3JldHVybntsYWJlbDplfX0sKCRpfHwoJGk9e30pKS5jcmVhdGU9ZnVuY3Rpb24oZSx0KXtyZXR1cm57aXRlbXM6ZXx8W10saXNJbmNvbXBsZXRlOiEhdH19LChYaT1KaXx8KEppPXt9KSkuZnJvbVBsYWluVGV4dD1mdW5jdGlvbihlKXtyZXR1cm4gZS5yZXBsYWNlKC9bXFxgKl97fVtcXSgpIytcLS4hXS9nLCJcXCQmIil9LFhpLmlzPWZ1bmN0aW9uKGUpe3ZhciB0PWU7cmV0dXJuIHhhLnN0cmluZyh0KXx8eGEub2JqZWN0TGl0ZXJhbCh0KSYmeGEuc3RyaW5nKHQubGFuZ3VhZ2UpJiZ4YS5zdHJpbmcodC52YWx1ZSl9LChZaXx8KFlpPXt9KSkuaXM9ZnVuY3Rpb24oZSl7dmFyIHQ9ZTtyZXR1cm4hIXQmJnhhLm9iamVjdExpdGVyYWwodCkmJih6aS5pcyh0LmNvbnRlbnRzKXx8SmkuaXModC5jb250ZW50cyl8fHhhLnR5cGVkQXJyYXkodC5jb250ZW50cyxKaS5pcykpJiYodm9pZCAwPT09ZS5yYW5nZXx8V3IuaXMoZS5yYW5nZSkpfSwoUWl8fChRaT17fSkpLmNyZWF0ZT1mdW5jdGlvbihlLHQpe3JldHVybiB0P3tsYWJlbDplLGRvY3VtZW50YXRpb246dH06e2xhYmVsOmV9fSwoWml8fChaaT17fSkpLmNyZWF0ZT1mdW5jdGlvbihlLHQpe2Zvcih2YXIgbj1bXSxyPTI7cjxhcmd1bWVudHMubGVuZ3RoO3IrKyluW3ItMl09YXJndW1lbnRzW3JdO3ZhciBpPXtsYWJlbDplfTtyZXR1cm4geGEuZGVmaW5lZCh0KSYmKGkuZG9jdW1lbnRhdGlvbj10KSx4YS5kZWZpbmVkKG4pP2kucGFyYW1ldGVycz1uOmkucGFyYW1ldGVycz1bXSxpfSwodGE9ZWF8fChlYT17fSkpLlRleHQ9MSx0YS5SZWFkPTIsdGEuV3JpdGU9MywobmF8fChuYT17fSkpLmNyZWF0ZT1mdW5jdGlvbihlLHQpe3ZhciBuPXtyYW5nZTplfTtyZXR1cm4geGEubnVtYmVyKHQpJiYobi5raW5kPXQpLG59LChpYT1yYXx8KHJhPXt9KSkuRmlsZT0xLGlhLk1vZHVsZT0yLGlhLk5hbWVzcGFjZT0zLGlhLlBhY2thZ2U9NCxpYS5DbGFzcz01LGlhLk1ldGhvZD02LGlhLlByb3BlcnR5PTcsaWEuRmllbGQ9OCxpYS5Db25zdHJ1Y3Rvcj05LGlhLkVudW09MTAsaWEuSW50ZXJmYWNlPTExLGlhLkZ1bmN0aW9uPTEyLGlhLlZhcmlhYmxlPTEzLGlhLkNvbnN0YW50PTE0LGlhLlN0cmluZz0xNSxpYS5OdW1iZXI9MTYsaWEuQm9vbGVhbj0xNyxpYS5BcnJheT0xOCxpYS5PYmplY3Q9MTksaWEuS2V5PTIwLGlhLk51bGw9MjEsaWEuRW51bU1lbWJlcj0yMixpYS5TdHJ1Y3Q9MjMsaWEuRXZlbnQ9MjQsaWEuT3BlcmF0b3I9MjUsaWEuVHlwZVBhcmFtZXRlcj0yNiwoYWF8fChhYT17fSkpLkRlcHJlY2F0ZWQ9MSwob2F8fChvYT17fSkpLmNyZWF0ZT1mdW5jdGlvbihlLHQsbixyLGkpe3ZhciBhPXtuYW1lOmUsa2luZDp0LGxvY2F0aW9uOnt1cmk6cixyYW5nZTpufX07cmV0dXJuIGkmJihhLmNvbnRhaW5lck5hbWU9aSksYX0sKGxhPXNhfHwoc2E9e30pKS5jcmVhdGU9ZnVuY3Rpb24oZSx0LG4scixpLGEpe3ZhciBvPXtuYW1lOmUsZGV0YWlsOnQsa2luZDpuLHJhbmdlOnIsc2VsZWN0aW9uUmFuZ2U6aX07cmV0dXJuIHZvaWQgMCE9PWEmJihvLmNoaWxkcmVuPWEpLG99LGxhLmlzPWZ1bmN0aW9uKGUpe3ZhciB0PWU7cmV0dXJuIHQmJnhhLnN0cmluZyh0Lm5hbWUpJiZ4YS5udW1iZXIodC5raW5kKSYmV3IuaXModC5yYW5nZSkmJldyLmlzKHQuc2VsZWN0aW9uUmFuZ2UpJiYodm9pZCAwPT09dC5kZXRhaWx8fHhhLnN0cmluZyh0LmRldGFpbCkpJiYodm9pZCAwPT09dC5kZXByZWNhdGVkfHx4YS5ib29sZWFuKHQuZGVwcmVjYXRlZCkpJiYodm9pZCAwPT09dC5jaGlsZHJlbnx8QXJyYXkuaXNBcnJheSh0LmNoaWxkcmVuKSkmJih2b2lkIDA9PT10LnRhZ3N8fEFycmF5LmlzQXJyYXkodC50YWdzKSl9LChoYT1jYXx8KGNhPXt9KSkuRW1wdHk9IiIsaGEuUXVpY2tGaXg9InF1aWNrZml4IixoYS5SZWZhY3Rvcj0icmVmYWN0b3IiLGhhLlJlZmFjdG9yRXh0cmFjdD0icmVmYWN0b3IuZXh0cmFjdCIsaGEuUmVmYWN0b3JJbmxpbmU9InJlZmFjdG9yLmlubGluZSIsaGEuUmVmYWN0b3JSZXdyaXRlPSJyZWZhY3Rvci5yZXdyaXRlIixoYS5Tb3VyY2U9InNvdXJjZSIsaGEuU291cmNlT3JnYW5pemVJbXBvcnRzPSJzb3VyY2Uub3JnYW5pemVJbXBvcnRzIixoYS5Tb3VyY2VGaXhBbGw9InNvdXJjZS5maXhBbGwiLCh1YT1kYXx8KGRhPXt9KSkuY3JlYXRlPWZ1bmN0aW9uKGUsdCl7dmFyIG49e2RpYWdub3N0aWNzOmV9O3JldHVybiBudWxsIT10JiYobi5vbmx5PXQpLG59LHVhLmlzPWZ1bmN0aW9uKGUpe3ZhciB0PWU7cmV0dXJuIHhhLmRlZmluZWQodCkmJnhhLnR5cGVkQXJyYXkodC5kaWFnbm9zdGljcyxzaS5pcykmJih2b2lkIDA9PT10Lm9ubHl8fHhhLnR5cGVkQXJyYXkodC5vbmx5LHhhLnN0cmluZykpfSwobWE9cGF8fChwYT17fSkpLmNyZWF0ZT1mdW5jdGlvbihlLHQsbil7dmFyIHI9e3RpdGxlOmV9LGk9ITA7cmV0dXJuInN0cmluZyI9PXR5cGVvZiB0PyhpPSExLHIua2luZD10KTpjaS5pcyh0KT9yLmNvbW1hbmQ9dDpyLmVkaXQ9dCxpJiZ2b2lkIDAhPT1uJiYoci5raW5kPW4pLHJ9LG1hLmlzPWZ1bmN0aW9uKGUpe3ZhciB0PWU7cmV0dXJuIHQmJnhhLnN0cmluZyh0LnRpdGxlKSYmKHZvaWQgMD09PXQuZGlhZ25vc3RpY3N8fHhhLnR5cGVkQXJyYXkodC5kaWFnbm9zdGljcyxzaS5pcykpJiYodm9pZCAwPT09dC5raW5kfHx4YS5zdHJpbmcodC5raW5kKSkmJih2b2lkIDAhPT10LmVkaXR8fHZvaWQgMCE9PXQuY29tbWFuZCkmJih2b2lkIDA9PT10LmNvbW1hbmR8fGNpLmlzKHQuY29tbWFuZCkpJiYodm9pZCAwPT09dC5pc1ByZWZlcnJlZHx8eGEuYm9vbGVhbih0LmlzUHJlZmVycmVkKSkmJih2b2lkIDA9PT10LmVkaXR8fHhpLmlzKHQuZWRpdCkpfSwoZ2E9ZmF8fChmYT17fSkpLmNyZWF0ZT1mdW5jdGlvbihlLHQpe3ZhciBuPXtyYW5nZTplfTtyZXR1cm4geGEuZGVmaW5lZCh0KSYmKG4uZGF0YT10KSxufSxnYS5pcz1mdW5jdGlvbihlKXt2YXIgdD1lO3JldHVybiB4YS5kZWZpbmVkKHQpJiZXci5pcyh0LnJhbmdlKSYmKHhhLnVuZGVmaW5lZCh0LmNvbW1hbmQpfHxjaS5pcyh0LmNvbW1hbmQpKX0sKHdhPWJhfHwoYmE9e30pKS5jcmVhdGU9ZnVuY3Rpb24oZSx0KXtyZXR1cm57dGFiU2l6ZTplLGluc2VydFNwYWNlczp0fX0sd2EuaXM9ZnVuY3Rpb24oZSl7dmFyIHQ9ZTtyZXR1cm4geGEuZGVmaW5lZCh0KSYmeGEudWludGVnZXIodC50YWJTaXplKSYmeGEuYm9vbGVhbih0Lmluc2VydFNwYWNlcyl9LCh2YT1fYXx8KF9hPXt9KSkuY3JlYXRlPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm57cmFuZ2U6ZSx0YXJnZXQ6dCxkYXRhOm59fSx2YS5pcz1mdW5jdGlvbihlKXt2YXIgdD1lO3JldHVybiB4YS5kZWZpbmVkKHQpJiZXci5pcyh0LnJhbmdlKSYmKHhhLnVuZGVmaW5lZCh0LnRhcmdldCl8fHhhLnN0cmluZyh0LnRhcmdldCkpfSwoVGE9eWF8fCh5YT17fSkpLmNyZWF0ZT1mdW5jdGlvbihlLHQpe3JldHVybntyYW5nZTplLHBhcmVudDp0fX0sVGEuaXM9ZnVuY3Rpb24oZSl7dmFyIHQ9ZTtyZXR1cm4gdm9pZCAwIT09dCYmV3IuaXModC5yYW5nZSkmJih2b2lkIDA9PT10LnBhcmVudHx8VGEuaXModC5wYXJlbnQpKX0sZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChlLG4pe2lmKGUubGVuZ3RoPD0xKXJldHVybiBlO3ZhciByPWUubGVuZ3RoLzJ8MCxpPWUuc2xpY2UoMCxyKSxhPWUuc2xpY2Uocik7dChpLG4pLHQoYSxuKTtmb3IodmFyIG89MCxzPTAsbD0wO288aS5sZW5ndGgmJnM8YS5sZW5ndGg7KXt2YXIgYz1uKGlbb10sYVtzXSk7ZVtsKytdPWM8PTA/aVtvKytdOmFbcysrXX1mb3IoO288aS5sZW5ndGg7KWVbbCsrXT1pW28rK107Zm9yKDtzPGEubGVuZ3RoOyllW2wrK109YVtzKytdO3JldHVybiBlfWUuY3JlYXRlPWZ1bmN0aW9uKGUsdCxuLHIpe3JldHVybiBuZXcgQWEoZSx0LG4scil9LGUuaXM9ZnVuY3Rpb24oZSl7dmFyIHQ9ZTtyZXR1cm4hISh4YS5kZWZpbmVkKHQpJiZ4YS5zdHJpbmcodC51cmkpJiYoeGEudW5kZWZpbmVkKHQubGFuZ3VhZ2VJZCl8fHhhLnN0cmluZyh0Lmxhbmd1YWdlSWQpKSYmeGEudWludGVnZXIodC5saW5lQ291bnQpJiZ4YS5mdW5jKHQuZ2V0VGV4dCkmJnhhLmZ1bmModC5wb3NpdGlvbkF0KSYmeGEuZnVuYyh0Lm9mZnNldEF0KSl9LGUuYXBwbHlFZGl0cz1mdW5jdGlvbihlLG4pe2Zvcih2YXIgcj1lLmdldFRleHQoKSxpPXQobiwoZnVuY3Rpb24oZSx0KXt2YXIgbj1lLnJhbmdlLnN0YXJ0LmxpbmUtdC5yYW5nZS5zdGFydC5saW5lO3JldHVybiAwPT09bj9lLnJhbmdlLnN0YXJ0LmNoYXJhY3Rlci10LnJhbmdlLnN0YXJ0LmNoYXJhY3RlcjpufSkpLGE9ci5sZW5ndGgsbz1pLmxlbmd0aC0xO28+PTA7by0tKXt2YXIgcz1pW29dLGw9ZS5vZmZzZXRBdChzLnJhbmdlLnN0YXJ0KSxjPWUub2Zmc2V0QXQocy5yYW5nZS5lbmQpO2lmKCEoYzw9YSkpdGhyb3cgbmV3IEVycm9yKCJPdmVybGFwcGluZyBlZGl0Iik7cj1yLnN1YnN0cmluZygwLGwpK3MubmV3VGV4dCtyLnN1YnN0cmluZyhjLHIubGVuZ3RoKSxhPWx9cmV0dXJuIHJ9fShrYXx8KGthPXt9KSk7dmFyIHhhLExhLEVhLEFhPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQsbixyKXt0aGlzLl91cmk9ZSx0aGlzLl9sYW5ndWFnZUlkPXQsdGhpcy5fdmVyc2lvbj1uLHRoaXMuX2NvbnRlbnQ9cix0aGlzLl9saW5lT2Zmc2V0cz12b2lkIDB9cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwidXJpIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3VyaX0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsImxhbmd1YWdlSWQiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbGFuZ3VhZ2VJZH0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsInZlcnNpb24iLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fdmVyc2lvbn0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxlLnByb3RvdHlwZS5nZXRUZXh0PWZ1bmN0aW9uKGUpe2lmKGUpe3ZhciB0PXRoaXMub2Zmc2V0QXQoZS5zdGFydCksbj10aGlzLm9mZnNldEF0KGUuZW5kKTtyZXR1cm4gdGhpcy5fY29udGVudC5zdWJzdHJpbmcodCxuKX1yZXR1cm4gdGhpcy5fY29udGVudH0sZS5wcm90b3R5cGUudXBkYXRlPWZ1bmN0aW9uKGUsdCl7dGhpcy5fY29udGVudD1lLnRleHQsdGhpcy5fdmVyc2lvbj10LHRoaXMuX2xpbmVPZmZzZXRzPXZvaWQgMH0sZS5wcm90b3R5cGUuZ2V0TGluZU9mZnNldHM9ZnVuY3Rpb24oKXtpZih2b2lkIDA9PT10aGlzLl9saW5lT2Zmc2V0cyl7Zm9yKHZhciBlPVtdLHQ9dGhpcy5fY29udGVudCxuPSEwLHI9MDtyPHQubGVuZ3RoO3IrKyl7biYmKGUucHVzaChyKSxuPSExKTt2YXIgaT10LmNoYXJBdChyKTtuPSJcciI9PT1pfHwiXG4iPT09aSwiXHIiPT09aSYmcisxPHQubGVuZ3RoJiYiXG4iPT09dC5jaGFyQXQocisxKSYmcisrfW4mJnQubGVuZ3RoPjAmJmUucHVzaCh0Lmxlbmd0aCksdGhpcy5fbGluZU9mZnNldHM9ZX1yZXR1cm4gdGhpcy5fbGluZU9mZnNldHN9LGUucHJvdG90eXBlLnBvc2l0aW9uQXQ9ZnVuY3Rpb24oZSl7ZT1NYXRoLm1heChNYXRoLm1pbihlLHRoaXMuX2NvbnRlbnQubGVuZ3RoKSwwKTt2YXIgdD10aGlzLmdldExpbmVPZmZzZXRzKCksbj0wLHI9dC5sZW5ndGg7aWYoMD09PXIpcmV0dXJuIERyLmNyZWF0ZSgwLGUpO2Zvcig7bjxyOyl7dmFyIGk9TWF0aC5mbG9vcigobityKS8yKTt0W2ldPmU/cj1pOm49aSsxfXZhciBhPW4tMTtyZXR1cm4gRHIuY3JlYXRlKGEsZS10W2FdKX0sZS5wcm90b3R5cGUub2Zmc2V0QXQ9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5nZXRMaW5lT2Zmc2V0cygpO2lmKGUubGluZT49dC5sZW5ndGgpcmV0dXJuIHRoaXMuX2NvbnRlbnQubGVuZ3RoO2lmKGUubGluZTwwKXJldHVybiAwO3ZhciBuPXRbZS5saW5lXSxyPWUubGluZSsxPHQubGVuZ3RoP3RbZS5saW5lKzFdOnRoaXMuX2NvbnRlbnQubGVuZ3RoO3JldHVybiBNYXRoLm1heChNYXRoLm1pbihuK2UuY2hhcmFjdGVyLHIpLG4pfSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsImxpbmVDb3VudCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmdldExpbmVPZmZzZXRzKCkubGVuZ3RofSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLGV9KCk7TGE9eGF8fCh4YT17fSksRWE9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZyxMYS5kZWZpbmVkPWZ1bmN0aW9uKGUpe3JldHVybiB2b2lkIDAhPT1lfSxMYS51bmRlZmluZWQ9ZnVuY3Rpb24oZSl7cmV0dXJuIHZvaWQgMD09PWV9LExhLmJvb2xlYW49ZnVuY3Rpb24oZSl7cmV0dXJuITA9PT1lfHwhMT09PWV9LExhLnN0cmluZz1mdW5jdGlvbihlKXtyZXR1cm4iW29iamVjdCBTdHJpbmddIj09PUVhLmNhbGwoZSl9LExhLm51bWJlcj1mdW5jdGlvbihlKXtyZXR1cm4iW29iamVjdCBOdW1iZXJdIj09PUVhLmNhbGwoZSl9LExhLm51bWJlclJhbmdlPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4iW29iamVjdCBOdW1iZXJdIj09PUVhLmNhbGwoZSkmJnQ8PWUmJmU8PW59LExhLmludGVnZXI9ZnVuY3Rpb24oZSl7cmV0dXJuIltvYmplY3QgTnVtYmVyXSI9PT1FYS5jYWxsKGUpJiYtMjE0NzQ4MzY0ODw9ZSYmZTw9MjE0NzQ4MzY0N30sTGEudWludGVnZXI9ZnVuY3Rpb24oZSl7cmV0dXJuIltvYmplY3QgTnVtYmVyXSI9PT1FYS5jYWxsKGUpJiYwPD1lJiZlPD0yMTQ3NDgzNjQ3fSxMYS5mdW5jPWZ1bmN0aW9uKGUpe3JldHVybiJbb2JqZWN0IEZ1bmN0aW9uXSI9PT1FYS5jYWxsKGUpfSxMYS5vYmplY3RMaXRlcmFsPWZ1bmN0aW9uKGUpe3JldHVybiBudWxsIT09ZSYmIm9iamVjdCI9PXR5cGVvZiBlfSxMYS50eXBlZEFycmF5PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIEFycmF5LmlzQXJyYXkoZSkmJmUuZXZlcnkodCl9O3ZhciBNYSxSYSxOYSxJYSxVYSxIYSxEYSx6YSxXYSxPYT1jbGFzc3tjb25zdHJ1Y3RvcihlLHQsbixyKXt0aGlzLl91cmk9ZSx0aGlzLl9sYW5ndWFnZUlkPXQsdGhpcy5fdmVyc2lvbj1uLHRoaXMuX2NvbnRlbnQ9cix0aGlzLl9saW5lT2Zmc2V0cz12b2lkIDB9Z2V0IHVyaSgpe3JldHVybiB0aGlzLl91cml9Z2V0IGxhbmd1YWdlSWQoKXtyZXR1cm4gdGhpcy5fbGFuZ3VhZ2VJZH1nZXQgdmVyc2lvbigpe3JldHVybiB0aGlzLl92ZXJzaW9ufWdldFRleHQoZSl7aWYoZSl7Y29uc3QgdD10aGlzLm9mZnNldEF0KGUuc3RhcnQpLG49dGhpcy5vZmZzZXRBdChlLmVuZCk7cmV0dXJuIHRoaXMuX2NvbnRlbnQuc3Vic3RyaW5nKHQsbil9cmV0dXJuIHRoaXMuX2NvbnRlbnR9dXBkYXRlKGUsdCl7Zm9yKGxldCB0IG9mIGUpaWYoT2EuaXNJbmNyZW1lbnRhbCh0KSl7Y29uc3QgZT1GYSh0LnJhbmdlKSxuPXRoaXMub2Zmc2V0QXQoZS5zdGFydCkscj10aGlzLm9mZnNldEF0KGUuZW5kKTt0aGlzLl9jb250ZW50PXRoaXMuX2NvbnRlbnQuc3Vic3RyaW5nKDAsbikrdC50ZXh0K3RoaXMuX2NvbnRlbnQuc3Vic3RyaW5nKHIsdGhpcy5fY29udGVudC5sZW5ndGgpO2NvbnN0IGk9TWF0aC5tYXgoZS5zdGFydC5saW5lLDApLGE9TWF0aC5tYXgoZS5lbmQubGluZSwwKTtsZXQgbz10aGlzLl9saW5lT2Zmc2V0cztjb25zdCBzPXFhKHQudGV4dCwhMSxuKTtpZihhLWk9PT1zLmxlbmd0aClmb3IobGV0IGU9MCx0PXMubGVuZ3RoO2U8dDtlKyspb1tlK2krMV09c1tlXTtlbHNlIHMubGVuZ3RoPDFlND9vLnNwbGljZShpKzEsYS1pLC4uLnMpOnRoaXMuX2xpbmVPZmZzZXRzPW89by5zbGljZSgwLGkrMSkuY29uY2F0KHMsby5zbGljZShhKzEpKTtjb25zdCBsPXQudGV4dC5sZW5ndGgtKHItbik7aWYoMCE9PWwpZm9yKGxldCBlPWkrMStzLmxlbmd0aCx0PW8ubGVuZ3RoO2U8dDtlKyspb1tlXT1vW2VdK2x9ZWxzZXtpZighT2EuaXNGdWxsKHQpKXRocm93IG5ldyBFcnJvcigiVW5rbm93biBjaGFuZ2UgZXZlbnQgcmVjZWl2ZWQiKTt0aGlzLl9jb250ZW50PXQudGV4dCx0aGlzLl9saW5lT2Zmc2V0cz12b2lkIDB9dGhpcy5fdmVyc2lvbj10fWdldExpbmVPZmZzZXRzKCl7cmV0dXJuIHZvaWQgMD09PXRoaXMuX2xpbmVPZmZzZXRzJiYodGhpcy5fbGluZU9mZnNldHM9cWEodGhpcy5fY29udGVudCwhMCkpLHRoaXMuX2xpbmVPZmZzZXRzfXBvc2l0aW9uQXQoZSl7ZT1NYXRoLm1heChNYXRoLm1pbihlLHRoaXMuX2NvbnRlbnQubGVuZ3RoKSwwKTtsZXQgdD10aGlzLmdldExpbmVPZmZzZXRzKCksbj0wLHI9dC5sZW5ndGg7aWYoMD09PXIpcmV0dXJue2xpbmU6MCxjaGFyYWN0ZXI6ZX07Zm9yKDtuPHI7KXtsZXQgaT1NYXRoLmZsb29yKChuK3IpLzIpO3RbaV0+ZT9yPWk6bj1pKzF9bGV0IGk9bi0xO3JldHVybntsaW5lOmksY2hhcmFjdGVyOmUtdFtpXX19b2Zmc2V0QXQoZSl7bGV0IHQ9dGhpcy5nZXRMaW5lT2Zmc2V0cygpO2lmKGUubGluZT49dC5sZW5ndGgpcmV0dXJuIHRoaXMuX2NvbnRlbnQubGVuZ3RoO2lmKGUubGluZTwwKXJldHVybiAwO2xldCBuPXRbZS5saW5lXSxyPWUubGluZSsxPHQubGVuZ3RoP3RbZS5saW5lKzFdOnRoaXMuX2NvbnRlbnQubGVuZ3RoO3JldHVybiBNYXRoLm1heChNYXRoLm1pbihuK2UuY2hhcmFjdGVyLHIpLG4pfWdldCBsaW5lQ291bnQoKXtyZXR1cm4gdGhpcy5nZXRMaW5lT2Zmc2V0cygpLmxlbmd0aH1zdGF0aWMgaXNJbmNyZW1lbnRhbChlKXtsZXQgdD1lO3JldHVybiBudWxsIT10JiYic3RyaW5nIj09dHlwZW9mIHQudGV4dCYmdm9pZCAwIT09dC5yYW5nZSYmKHZvaWQgMD09PXQucmFuZ2VMZW5ndGh8fCJudW1iZXIiPT10eXBlb2YgdC5yYW5nZUxlbmd0aCl9c3RhdGljIGlzRnVsbChlKXtsZXQgdD1lO3JldHVybiBudWxsIT10JiYic3RyaW5nIj09dHlwZW9mIHQudGV4dCYmdm9pZCAwPT09dC5yYW5nZSYmdm9pZCAwPT09dC5yYW5nZUxlbmd0aH19O2Z1bmN0aW9uIFBhKGUsdCl7aWYoZS5sZW5ndGg8PTEpcmV0dXJuIGU7Y29uc3Qgbj1lLmxlbmd0aC8yfDAscj1lLnNsaWNlKDAsbiksaT1lLnNsaWNlKG4pO1BhKHIsdCksUGEoaSx0KTtsZXQgYT0wLG89MCxzPTA7Zm9yKDthPHIubGVuZ3RoJiZvPGkubGVuZ3RoOyl7bGV0IG49dChyW2FdLGlbb10pO2VbcysrXT1uPD0wP3JbYSsrXTppW28rK119Zm9yKDthPHIubGVuZ3RoOyllW3MrK109clthKytdO2Zvcig7bzxpLmxlbmd0aDspZVtzKytdPWlbbysrXTtyZXR1cm4gZX1mdW5jdGlvbiBxYShlLHQsbj0wKXtjb25zdCByPXQ/W25dOltdO2ZvcihsZXQgdD0wO3Q8ZS5sZW5ndGg7dCsrKXtsZXQgaT1lLmNoYXJDb2RlQXQodCk7MTMhPT1pJiYxMCE9PWl8fCgxMz09PWkmJnQrMTxlLmxlbmd0aCYmMTA9PT1lLmNoYXJDb2RlQXQodCsxKSYmdCsrLHIucHVzaChuK3QrMSkpfXJldHVybiByfWZ1bmN0aW9uIEZhKGUpe2NvbnN0IHQ9ZS5zdGFydCxuPWUuZW5kO3JldHVybiB0LmxpbmU+bi5saW5lfHx0LmxpbmU9PT1uLmxpbmUmJnQuY2hhcmFjdGVyPm4uY2hhcmFjdGVyP3tzdGFydDpuLGVuZDp0fTplfWZ1bmN0aW9uIEJhKGUpe2NvbnN0IHQ9RmEoZS5yYW5nZSk7cmV0dXJuIHQhPT1lLnJhbmdlP3tuZXdUZXh0OmUubmV3VGV4dCxyYW5nZTp0fTplfShSYT1NYXx8KE1hPXt9KSkuY3JlYXRlPWZ1bmN0aW9uKGUsdCxuLHIpe3JldHVybiBuZXcgT2EoZSx0LG4scil9LFJhLnVwZGF0ZT1mdW5jdGlvbihlLHQsbil7aWYoZSBpbnN0YW5jZW9mIE9hKXJldHVybiBlLnVwZGF0ZSh0LG4pLGU7dGhyb3cgbmV3IEVycm9yKCJUZXh0RG9jdW1lbnQudXBkYXRlOiBkb2N1bWVudCBtdXN0IGJlIGNyZWF0ZWQgYnkgVGV4dERvY3VtZW50LmNyZWF0ZSIpfSxSYS5hcHBseUVkaXRzPWZ1bmN0aW9uKGUsdCl7bGV0IG49ZS5nZXRUZXh0KCkscj1QYSh0Lm1hcChCYSksKChlLHQpPT57bGV0IG49ZS5yYW5nZS5zdGFydC5saW5lLXQucmFuZ2Uuc3RhcnQubGluZTtyZXR1cm4gMD09PW4/ZS5yYW5nZS5zdGFydC5jaGFyYWN0ZXItdC5yYW5nZS5zdGFydC5jaGFyYWN0ZXI6bn0pKSxpPTA7Y29uc3QgYT1bXTtmb3IoY29uc3QgdCBvZiByKXtsZXQgcj1lLm9mZnNldEF0KHQucmFuZ2Uuc3RhcnQpO2lmKHI8aSl0aHJvdyBuZXcgRXJyb3IoIk92ZXJsYXBwaW5nIGVkaXQiKTtyPmkmJmEucHVzaChuLnN1YnN0cmluZyhpLHIpKSx0Lm5ld1RleHQubGVuZ3RoJiZhLnB1c2godC5uZXdUZXh0KSxpPWUub2Zmc2V0QXQodC5yYW5nZS5lbmQpfXJldHVybiBhLnB1c2gobi5zdWJzdHIoaSkpLGEuam9pbigiIil9LChJYT1OYXx8KE5hPXt9KSlbSWEuU3RhcnRDb21tZW50VGFnPTBdPSJTdGFydENvbW1lbnRUYWciLElhW0lhLkNvbW1lbnQ9MV09IkNvbW1lbnQiLElhW0lhLkVuZENvbW1lbnRUYWc9Ml09IkVuZENvbW1lbnRUYWciLElhW0lhLlN0YXJ0VGFnT3Blbj0zXT0iU3RhcnRUYWdPcGVuIixJYVtJYS5TdGFydFRhZ0Nsb3NlPTRdPSJTdGFydFRhZ0Nsb3NlIixJYVtJYS5TdGFydFRhZ1NlbGZDbG9zZT01XT0iU3RhcnRUYWdTZWxmQ2xvc2UiLElhW0lhLlN0YXJ0VGFnPTZdPSJTdGFydFRhZyIsSWFbSWEuRW5kVGFnT3Blbj03XT0iRW5kVGFnT3BlbiIsSWFbSWEuRW5kVGFnQ2xvc2U9OF09IkVuZFRhZ0Nsb3NlIixJYVtJYS5FbmRUYWc9OV09IkVuZFRhZyIsSWFbSWEuRGVsaW1pdGVyQXNzaWduPTEwXT0iRGVsaW1pdGVyQXNzaWduIixJYVtJYS5BdHRyaWJ1dGVOYW1lPTExXT0iQXR0cmlidXRlTmFtZSIsSWFbSWEuQXR0cmlidXRlVmFsdWU9MTJdPSJBdHRyaWJ1dGVWYWx1ZSIsSWFbSWEuU3RhcnREb2N0eXBlVGFnPTEzXT0iU3RhcnREb2N0eXBlVGFnIixJYVtJYS5Eb2N0eXBlPTE0XT0iRG9jdHlwZSIsSWFbSWEuRW5kRG9jdHlwZVRhZz0xNV09IkVuZERvY3R5cGVUYWciLElhW0lhLkNvbnRlbnQ9MTZdPSJDb250ZW50IixJYVtJYS5XaGl0ZXNwYWNlPTE3XT0iV2hpdGVzcGFjZSIsSWFbSWEuVW5rbm93bj0xOF09IlVua25vd24iLElhW0lhLlNjcmlwdD0xOV09IlNjcmlwdCIsSWFbSWEuU3R5bGVzPTIwXT0iU3R5bGVzIixJYVtJYS5FT1M9MjFdPSJFT1MiLChIYT1VYXx8KFVhPXt9KSlbSGEuV2l0aGluQ29udGVudD0wXT0iV2l0aGluQ29udGVudCIsSGFbSGEuQWZ0ZXJPcGVuaW5nU3RhcnRUYWc9MV09IkFmdGVyT3BlbmluZ1N0YXJ0VGFnIixIYVtIYS5BZnRlck9wZW5pbmdFbmRUYWc9Ml09IkFmdGVyT3BlbmluZ0VuZFRhZyIsSGFbSGEuV2l0aGluRG9jdHlwZT0zXT0iV2l0aGluRG9jdHlwZSIsSGFbSGEuV2l0aGluVGFnPTRdPSJXaXRoaW5UYWciLEhhW0hhLldpdGhpbkVuZFRhZz01XT0iV2l0aGluRW5kVGFnIixIYVtIYS5XaXRoaW5Db21tZW50PTZdPSJXaXRoaW5Db21tZW50IixIYVtIYS5XaXRoaW5TY3JpcHRDb250ZW50PTddPSJXaXRoaW5TY3JpcHRDb250ZW50IixIYVtIYS5XaXRoaW5TdHlsZUNvbnRlbnQ9OF09IldpdGhpblN0eWxlQ29udGVudCIsSGFbSGEuQWZ0ZXJBdHRyaWJ1dGVOYW1lPTldPSJBZnRlckF0dHJpYnV0ZU5hbWUiLEhhW0hhLkJlZm9yZUF0dHJpYnV0ZVZhbHVlPTEwXT0iQmVmb3JlQXR0cmlidXRlVmFsdWUiLChEYXx8KERhPXt9KSkuTEFURVNUPXt0ZXh0RG9jdW1lbnQ6e2NvbXBsZXRpb246e2NvbXBsZXRpb25JdGVtOntkb2N1bWVudGF0aW9uRm9ybWF0OltIaS5NYXJrZG93bixIaS5QbGFpblRleHRdfX0saG92ZXI6e2NvbnRlbnRGb3JtYXQ6W0hpLk1hcmtkb3duLEhpLlBsYWluVGV4dF19fX0sKFdhPXphfHwoemE9e30pKVtXYS5Vbmtub3duPTBdPSJVbmtub3duIixXYVtXYS5GaWxlPTFdPSJGaWxlIixXYVtXYS5EaXJlY3Rvcnk9Ml09IkRpcmVjdG9yeSIsV2FbV2EuU3ltYm9saWNMaW5rPTY0XT0iU3ltYm9saWNMaW5rIjt2YXIgVmE9UnIoKSxLYT1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSx0KXt0aGlzLnNvdXJjZT1lLHRoaXMubGVuPWUubGVuZ3RoLHRoaXMucG9zaXRpb249dH1yZXR1cm4gZS5wcm90b3R5cGUuZW9zPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubGVuPD10aGlzLnBvc2l0aW9ufSxlLnByb3RvdHlwZS5nZXRTb3VyY2U9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zb3VyY2V9LGUucHJvdG90eXBlLnBvcz1mdW5jdGlvbigpe3JldHVybiB0aGlzLnBvc2l0aW9ufSxlLnByb3RvdHlwZS5nb0JhY2tUbz1mdW5jdGlvbihlKXt0aGlzLnBvc2l0aW9uPWV9LGUucHJvdG90eXBlLmdvQmFjaz1mdW5jdGlvbihlKXt0aGlzLnBvc2l0aW9uLT1lfSxlLnByb3RvdHlwZS5hZHZhbmNlPWZ1bmN0aW9uKGUpe3RoaXMucG9zaXRpb24rPWV9LGUucHJvdG90eXBlLmdvVG9FbmQ9ZnVuY3Rpb24oKXt0aGlzLnBvc2l0aW9uPXRoaXMuc291cmNlLmxlbmd0aH0sZS5wcm90b3R5cGUubmV4dENoYXI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zb3VyY2UuY2hhckNvZGVBdCh0aGlzLnBvc2l0aW9uKyspfHwwfSxlLnByb3RvdHlwZS5wZWVrQ2hhcj1mdW5jdGlvbihlKXtyZXR1cm4gdm9pZCAwPT09ZSYmKGU9MCksdGhpcy5zb3VyY2UuY2hhckNvZGVBdCh0aGlzLnBvc2l0aW9uK2UpfHwwfSxlLnByb3RvdHlwZS5hZHZhbmNlSWZDaGFyPWZ1bmN0aW9uKGUpe3JldHVybiBlPT09dGhpcy5zb3VyY2UuY2hhckNvZGVBdCh0aGlzLnBvc2l0aW9uKSYmKHRoaXMucG9zaXRpb24rKywhMCl9LGUucHJvdG90eXBlLmFkdmFuY2VJZkNoYXJzPWZ1bmN0aW9uKGUpe3ZhciB0O2lmKHRoaXMucG9zaXRpb24rZS5sZW5ndGg+dGhpcy5zb3VyY2UubGVuZ3RoKXJldHVybiExO2Zvcih0PTA7dDxlLmxlbmd0aDt0KyspaWYodGhpcy5zb3VyY2UuY2hhckNvZGVBdCh0aGlzLnBvc2l0aW9uK3QpIT09ZVt0XSlyZXR1cm4hMTtyZXR1cm4gdGhpcy5hZHZhbmNlKHQpLCEwfSxlLnByb3RvdHlwZS5hZHZhbmNlSWZSZWdFeHA9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5zb3VyY2Uuc3Vic3RyKHRoaXMucG9zaXRpb24pLm1hdGNoKGUpO3JldHVybiB0Pyh0aGlzLnBvc2l0aW9uPXRoaXMucG9zaXRpb24rdC5pbmRleCt0WzBdLmxlbmd0aCx0WzBdKToiIn0sZS5wcm90b3R5cGUuYWR2YW5jZVVudGlsUmVnRXhwPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuc291cmNlLnN1YnN0cih0aGlzLnBvc2l0aW9uKS5tYXRjaChlKTtyZXR1cm4gdD8odGhpcy5wb3NpdGlvbj10aGlzLnBvc2l0aW9uK3QuaW5kZXgsdFswXSk6KHRoaXMuZ29Ub0VuZCgpLCIiKX0sZS5wcm90b3R5cGUuYWR2YW5jZVVudGlsQ2hhcj1mdW5jdGlvbihlKXtmb3IoO3RoaXMucG9zaXRpb248dGhpcy5zb3VyY2UubGVuZ3RoOyl7aWYodGhpcy5zb3VyY2UuY2hhckNvZGVBdCh0aGlzLnBvc2l0aW9uKT09PWUpcmV0dXJuITA7dGhpcy5hZHZhbmNlKDEpfXJldHVybiExfSxlLnByb3RvdHlwZS5hZHZhbmNlVW50aWxDaGFycz1mdW5jdGlvbihlKXtmb3IoO3RoaXMucG9zaXRpb24rZS5sZW5ndGg8PXRoaXMuc291cmNlLmxlbmd0aDspe2Zvcih2YXIgdD0wO3Q8ZS5sZW5ndGgmJnRoaXMuc291cmNlLmNoYXJDb2RlQXQodGhpcy5wb3NpdGlvbit0KT09PWVbdF07dCsrKTtpZih0PT09ZS5sZW5ndGgpcmV0dXJuITA7dGhpcy5hZHZhbmNlKDEpfXJldHVybiB0aGlzLmdvVG9FbmQoKSwhMX0sZS5wcm90b3R5cGUuc2tpcFdoaXRlc3BhY2U9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5hZHZhbmNlV2hpbGVDaGFyKChmdW5jdGlvbihlKXtyZXR1cm4gZT09PXJvfHxlPT09aW98fGU9PT1lb3x8ZT09PW5vfHxlPT09dG99KSk+MH0sZS5wcm90b3R5cGUuYWR2YW5jZVdoaWxlQ2hhcj1mdW5jdGlvbihlKXtmb3IodmFyIHQ9dGhpcy5wb3NpdGlvbjt0aGlzLnBvc2l0aW9uPHRoaXMubGVuJiZlKHRoaXMuc291cmNlLmNoYXJDb2RlQXQodGhpcy5wb3NpdGlvbikpOyl0aGlzLnBvc2l0aW9uKys7cmV0dXJuIHRoaXMucG9zaXRpb24tdH0sZX0oKSxqYT0iISIuY2hhckNvZGVBdCgwKSxHYT0iLSIuY2hhckNvZGVBdCgwKSwkYT0iPCIuY2hhckNvZGVBdCgwKSxKYT0iPiIuY2hhckNvZGVBdCgwKSxYYT0iLyIuY2hhckNvZGVBdCgwKSxZYT0iPSIuY2hhckNvZGVBdCgwKSxRYT0nIicuY2hhckNvZGVBdCgwKSxaYT0iJyIuY2hhckNvZGVBdCgwKSxlbz0iXG4iLmNoYXJDb2RlQXQoMCksdG89IlxyIi5jaGFyQ29kZUF0KDApLG5vPSJcZiIuY2hhckNvZGVBdCgwKSxybz0iICIuY2hhckNvZGVBdCgwKSxpbz0iXHQiLmNoYXJDb2RlQXQoMCksYW89eyJ0ZXh0L3gtaGFuZGxlYmFycy10ZW1wbGF0ZSI6ITAsInRleHQvaHRtbCI6ITB9O2Z1bmN0aW9uIG9vKGUsdCxuLHIpe3ZvaWQgMD09PXQmJih0PTApLHZvaWQgMD09PW4mJihuPVVhLldpdGhpbkNvbnRlbnQpLHZvaWQgMD09PXImJihyPSExKTt2YXIgaSxhLG8scyxsLGM9bmV3IEthKGUsdCksaD1uLGQ9MCx1PU5hLlVua25vd247ZnVuY3Rpb24gcCgpe3JldHVybiBjLmFkdmFuY2VJZlJlZ0V4cCgvXltfOlx3XVtfOlx3LS5cZF0qLykudG9Mb3dlckNhc2UoKX1mdW5jdGlvbiBtKGUsdCxuKXtyZXR1cm4gdT10LGQ9ZSxpPW4sdH1mdW5jdGlvbiBmKCl7dmFyIGUsdD1jLnBvcygpO2lmKGMuZW9zKCkpcmV0dXJuIG0odCxOYS5FT1MpO3N3aXRjaChoKXtjYXNlIFVhLldpdGhpbkNvbW1lbnQ6cmV0dXJuIGMuYWR2YW5jZUlmQ2hhcnMoW0dhLEdhLEphXSk/KGg9VWEuV2l0aGluQ29udGVudCxtKHQsTmEuRW5kQ29tbWVudFRhZykpOihjLmFkdmFuY2VVbnRpbENoYXJzKFtHYSxHYSxKYV0pLG0odCxOYS5Db21tZW50KSk7Y2FzZSBVYS5XaXRoaW5Eb2N0eXBlOnJldHVybiBjLmFkdmFuY2VJZkNoYXIoSmEpPyhoPVVhLldpdGhpbkNvbnRlbnQsbSh0LE5hLkVuZERvY3R5cGVUYWcpKTooYy5hZHZhbmNlVW50aWxDaGFyKEphKSxtKHQsTmEuRG9jdHlwZSkpO2Nhc2UgVWEuV2l0aGluQ29udGVudDppZihjLmFkdmFuY2VJZkNoYXIoJGEpKXtpZighYy5lb3MoKSYmYy5wZWVrQ2hhcigpPT09amEpe2lmKGMuYWR2YW5jZUlmQ2hhcnMoW2phLEdhLEdhXSkpcmV0dXJuIGg9VWEuV2l0aGluQ29tbWVudCxtKHQsTmEuU3RhcnRDb21tZW50VGFnKTtpZihjLmFkdmFuY2VJZlJlZ0V4cCgvXiFkb2N0eXBlL2kpKXJldHVybiBoPVVhLldpdGhpbkRvY3R5cGUsbSh0LE5hLlN0YXJ0RG9jdHlwZVRhZyl9cmV0dXJuIGMuYWR2YW5jZUlmQ2hhcihYYSk/KGg9VWEuQWZ0ZXJPcGVuaW5nRW5kVGFnLG0odCxOYS5FbmRUYWdPcGVuKSk6KGg9VWEuQWZ0ZXJPcGVuaW5nU3RhcnRUYWcsbSh0LE5hLlN0YXJ0VGFnT3BlbikpfXJldHVybiBjLmFkdmFuY2VVbnRpbENoYXIoJGEpLG0odCxOYS5Db250ZW50KTtjYXNlIFVhLkFmdGVyT3BlbmluZ0VuZFRhZzpyZXR1cm4gcCgpLmxlbmd0aD4wPyhoPVVhLldpdGhpbkVuZFRhZyxtKHQsTmEuRW5kVGFnKSk6Yy5za2lwV2hpdGVzcGFjZSgpP20odCxOYS5XaGl0ZXNwYWNlLFZhKCJlcnJvci51bmV4cGVjdGVkV2hpdGVzcGFjZSIsIlRhZyBuYW1lIG11c3QgZGlyZWN0bHkgZm9sbG93IHRoZSBvcGVuIGJyYWNrZXQuIikpOihoPVVhLldpdGhpbkVuZFRhZyxjLmFkdmFuY2VVbnRpbENoYXIoSmEpLHQ8Yy5wb3MoKT9tKHQsTmEuVW5rbm93bixWYSgiZXJyb3IuZW5kVGFnTmFtZUV4cGVjdGVkIiwiRW5kIHRhZyBuYW1lIGV4cGVjdGVkLiIpKTpmKCkpO2Nhc2UgVWEuV2l0aGluRW5kVGFnOmlmKGMuc2tpcFdoaXRlc3BhY2UoKSlyZXR1cm4gbSh0LE5hLldoaXRlc3BhY2UpO2lmKGMuYWR2YW5jZUlmQ2hhcihKYSkpcmV0dXJuIGg9VWEuV2l0aGluQ29udGVudCxtKHQsTmEuRW5kVGFnQ2xvc2UpO2lmKHImJmMucGVla0NoYXIoKT09PSRhKXJldHVybiBoPVVhLldpdGhpbkNvbnRlbnQsbSh0LE5hLkVuZFRhZ0Nsb3NlLFZhKCJlcnJvci5jbG9zaW5nQnJhY2tldE1pc3NpbmciLCJDbG9zaW5nIGJyYWNrZXQgbWlzc2luZy4iKSk7ZT1WYSgiZXJyb3IuY2xvc2luZ0JyYWNrZXRFeHBlY3RlZCIsIkNsb3NpbmcgYnJhY2tldCBleHBlY3RlZC4iKTticmVhaztjYXNlIFVhLkFmdGVyT3BlbmluZ1N0YXJ0VGFnOnJldHVybiBvPXAoKSxsPXZvaWQgMCxzPXZvaWQgMCxvLmxlbmd0aD4wPyhhPSExLGg9VWEuV2l0aGluVGFnLG0odCxOYS5TdGFydFRhZykpOmMuc2tpcFdoaXRlc3BhY2UoKT9tKHQsTmEuV2hpdGVzcGFjZSxWYSgiZXJyb3IudW5leHBlY3RlZFdoaXRlc3BhY2UiLCJUYWcgbmFtZSBtdXN0IGRpcmVjdGx5IGZvbGxvdyB0aGUgb3BlbiBicmFja2V0LiIpKTooaD1VYS5XaXRoaW5UYWcsYy5hZHZhbmNlVW50aWxDaGFyKEphKSx0PGMucG9zKCk/bSh0LE5hLlVua25vd24sVmEoImVycm9yLnN0YXJ0VGFnTmFtZUV4cGVjdGVkIiwiU3RhcnQgdGFnIG5hbWUgZXhwZWN0ZWQuIikpOmYoKSk7Y2FzZSBVYS5XaXRoaW5UYWc6cmV0dXJuIGMuc2tpcFdoaXRlc3BhY2UoKT8oYT0hMCxtKHQsTmEuV2hpdGVzcGFjZSkpOmEmJihzPWMuYWR2YW5jZUlmUmVnRXhwKC9eW15ccyInPjwvPVx4MDAtXHgwRlx4N0ZceDgwLVx4OUZdKi8pLnRvTG93ZXJDYXNlKCkpLmxlbmd0aD4wPyhoPVVhLkFmdGVyQXR0cmlidXRlTmFtZSxhPSExLG0odCxOYS5BdHRyaWJ1dGVOYW1lKSk6Yy5hZHZhbmNlSWZDaGFycyhbWGEsSmFdKT8oaD1VYS5XaXRoaW5Db250ZW50LG0odCxOYS5TdGFydFRhZ1NlbGZDbG9zZSkpOmMuYWR2YW5jZUlmQ2hhcihKYSk/KGg9InNjcmlwdCI9PT1vP2wmJmFvW2xdP1VhLldpdGhpbkNvbnRlbnQ6VWEuV2l0aGluU2NyaXB0Q29udGVudDoic3R5bGUiPT09bz9VYS5XaXRoaW5TdHlsZUNvbnRlbnQ6VWEuV2l0aGluQ29udGVudCxtKHQsTmEuU3RhcnRUYWdDbG9zZSkpOnImJmMucGVla0NoYXIoKT09PSRhPyhoPVVhLldpdGhpbkNvbnRlbnQsbSh0LE5hLlN0YXJ0VGFnQ2xvc2UsVmEoImVycm9yLmNsb3NpbmdCcmFja2V0TWlzc2luZyIsIkNsb3NpbmcgYnJhY2tldCBtaXNzaW5nLiIpKSk6KGMuYWR2YW5jZSgxKSxtKHQsTmEuVW5rbm93bixWYSgiZXJyb3IudW5leHBlY3RlZENoYXJhY3RlckluVGFnIiwiVW5leHBlY3RlZCBjaGFyYWN0ZXIgaW4gdGFnLiIpKSk7Y2FzZSBVYS5BZnRlckF0dHJpYnV0ZU5hbWU6cmV0dXJuIGMuc2tpcFdoaXRlc3BhY2UoKT8oYT0hMCxtKHQsTmEuV2hpdGVzcGFjZSkpOmMuYWR2YW5jZUlmQ2hhcihZYSk/KGg9VWEuQmVmb3JlQXR0cmlidXRlVmFsdWUsbSh0LE5hLkRlbGltaXRlckFzc2lnbikpOihoPVVhLldpdGhpblRhZyxmKCkpO2Nhc2UgVWEuQmVmb3JlQXR0cmlidXRlVmFsdWU6aWYoYy5za2lwV2hpdGVzcGFjZSgpKXJldHVybiBtKHQsTmEuV2hpdGVzcGFjZSk7dmFyIG49Yy5hZHZhbmNlSWZSZWdFeHAoL15bXlxzIidgPTw+XSsvKTtpZihuLmxlbmd0aD4wKXJldHVybiBjLnBlZWtDaGFyKCk9PT1KYSYmYy5wZWVrQ2hhcigtMSk9PT1YYSYmKGMuZ29CYWNrKDEpLG49bi5zdWJzdHIoMCxuLmxlbmd0aC0xKSksInR5cGUiPT09cyYmKGw9biksaD1VYS5XaXRoaW5UYWcsYT0hMSxtKHQsTmEuQXR0cmlidXRlVmFsdWUpO3ZhciBpPWMucGVla0NoYXIoKTtyZXR1cm4gaT09PVphfHxpPT09UWE/KGMuYWR2YW5jZSgxKSxjLmFkdmFuY2VVbnRpbENoYXIoaSkmJmMuYWR2YW5jZSgxKSwidHlwZSI9PT1zJiYobD1jLmdldFNvdXJjZSgpLnN1YnN0cmluZyh0KzEsYy5wb3MoKS0xKSksaD1VYS5XaXRoaW5UYWcsYT0hMSxtKHQsTmEuQXR0cmlidXRlVmFsdWUpKTooaD1VYS5XaXRoaW5UYWcsYT0hMSxmKCkpO2Nhc2UgVWEuV2l0aGluU2NyaXB0Q29udGVudDpmb3IodmFyIGQ9MTshYy5lb3MoKTspe3ZhciB1PWMuYWR2YW5jZUlmUmVnRXhwKC88IS0tfC0tPnw8XC8/c2NyaXB0XHMqXC8/Pj8vaSk7aWYoMD09PXUubGVuZ3RoKXJldHVybiBjLmdvVG9FbmQoKSxtKHQsTmEuU2NyaXB0KTtpZigiXHgzYyEtLSI9PT11KTE9PT1kJiYoZD0yKTtlbHNlIGlmKCItLVx4M2UiPT09dSlkPTE7ZWxzZSBpZigiLyIhPT11WzFdKTI9PT1kJiYoZD0zKTtlbHNle2lmKDMhPT1kKXtjLmdvQmFjayh1Lmxlbmd0aCk7YnJlYWt9ZD0yfX1yZXR1cm4gaD1VYS5XaXRoaW5Db250ZW50LHQ8Yy5wb3MoKT9tKHQsTmEuU2NyaXB0KTpmKCk7Y2FzZSBVYS5XaXRoaW5TdHlsZUNvbnRlbnQ6cmV0dXJuIGMuYWR2YW5jZVVudGlsUmVnRXhwKC88XC9zdHlsZS9pKSxoPVVhLldpdGhpbkNvbnRlbnQsdDxjLnBvcygpP20odCxOYS5TdHlsZXMpOmYoKX1yZXR1cm4gYy5hZHZhbmNlKDEpLGg9VWEuV2l0aGluQ29udGVudCxtKHQsTmEuVW5rbm93bixlKX1yZXR1cm57c2NhbjpmdW5jdGlvbigpe3ZhciBlPWMucG9zKCksdD1oLG49ZigpO3JldHVybiBuPT09TmEuRU9TfHxlIT09Yy5wb3MoKXx8ciYmKG49PT1OYS5TdGFydFRhZ0Nsb3NlfHxuPT09TmEuRW5kVGFnQ2xvc2UpP246KGNvbnNvbGUubG9nKCJTY2FubmVyLnNjYW4gaGFzIG5vdCBhZHZhbmNlZCBhdCBvZmZzZXQgIitlKyIsIHN0YXRlIGJlZm9yZTogIit0KyIgYWZ0ZXI6ICIraCksYy5hZHZhbmNlKDEpLG0oZSxOYS5Vbmtub3duKSl9LGdldFRva2VuVHlwZTpmdW5jdGlvbigpe3JldHVybiB1fSxnZXRUb2tlbk9mZnNldDpmdW5jdGlvbigpe3JldHVybiBkfSxnZXRUb2tlbkxlbmd0aDpmdW5jdGlvbigpe3JldHVybiBjLnBvcygpLWR9LGdldFRva2VuRW5kOmZ1bmN0aW9uKCl7cmV0dXJuIGMucG9zKCl9LGdldFRva2VuVGV4dDpmdW5jdGlvbigpe3JldHVybiBjLmdldFNvdXJjZSgpLnN1YnN0cmluZyhkLGMucG9zKCkpfSxnZXRTY2FubmVyU3RhdGU6ZnVuY3Rpb24oKXtyZXR1cm4gaH0sZ2V0VG9rZW5FcnJvcjpmdW5jdGlvbigpe3JldHVybiBpfX19ZnVuY3Rpb24gc28oZSx0KXt2YXIgbj0wLHI9ZS5sZW5ndGg7aWYoMD09PXIpcmV0dXJuIDA7Zm9yKDtuPHI7KXt2YXIgaT1NYXRoLmZsb29yKChuK3IpLzIpO3QoZVtpXSk/cj1pOm49aSsxfXJldHVybiBufXZhciBsbz1bImFyZWEiLCJiYXNlIiwiYnIiLCJjb2wiLCJlbWJlZCIsImhyIiwiaW1nIiwiaW5wdXQiLCJrZXlnZW4iLCJsaW5rIiwibWVudWl0ZW0iLCJtZXRhIiwicGFyYW0iLCJzb3VyY2UiLCJ0cmFjayIsIndiciJdO2Z1bmN0aW9uIGNvKGUpe3JldHVybiEhZSYmZnVuY3Rpb24oZSx0LG4pe2Zvcih2YXIgcj0wLGk9ZS5sZW5ndGgtMTtyPD1pOyl7dmFyIGE9KHIraSkvMnwwLG89bihlW2FdLHQpO2lmKG88MClyPWErMTtlbHNle2lmKCEobz4wKSlyZXR1cm4gYTtpPWEtMX19cmV0dXJuLShyKzEpfShsbyxlLnRvTG93ZXJDYXNlKCksKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUubG9jYWxlQ29tcGFyZSh0KX0pKT49MH12YXIgaG89ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUsdCxuLHIpe3RoaXMuc3RhcnQ9ZSx0aGlzLmVuZD10LHRoaXMuY2hpbGRyZW49bix0aGlzLnBhcmVudD1yLHRoaXMuY2xvc2VkPSExfXJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsImF0dHJpYnV0ZU5hbWVzIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYXR0cmlidXRlcz9PYmplY3Qua2V5cyh0aGlzLmF0dHJpYnV0ZXMpOltdfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLGUucHJvdG90eXBlLmlzU2FtZVRhZz1mdW5jdGlvbihlKXtyZXR1cm4gdm9pZCAwPT09dGhpcy50YWc/dm9pZCAwPT09ZTp2b2lkIDAhPT1lJiZ0aGlzLnRhZy5sZW5ndGg9PT1lLmxlbmd0aCYmdGhpcy50YWcudG9Mb3dlckNhc2UoKT09PWV9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwiZmlyc3RDaGlsZCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmNoaWxkcmVuWzBdfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwibGFzdENoaWxkIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY2hpbGRyZW4ubGVuZ3RoP3RoaXMuY2hpbGRyZW5bdGhpcy5jaGlsZHJlbi5sZW5ndGgtMV06dm9pZCAwfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLGUucHJvdG90eXBlLmZpbmROb2RlQmVmb3JlPWZ1bmN0aW9uKGUpe3ZhciB0PXNvKHRoaXMuY2hpbGRyZW4sKGZ1bmN0aW9uKHQpe3JldHVybiBlPD10LnN0YXJ0fSkpLTE7aWYodD49MCl7dmFyIG49dGhpcy5jaGlsZHJlblt0XTtpZihlPm4uc3RhcnQpe2lmKGU8bi5lbmQpcmV0dXJuIG4uZmluZE5vZGVCZWZvcmUoZSk7dmFyIHI9bi5sYXN0Q2hpbGQ7cmV0dXJuIHImJnIuZW5kPT09bi5lbmQ/bi5maW5kTm9kZUJlZm9yZShlKTpufX1yZXR1cm4gdGhpc30sZS5wcm90b3R5cGUuZmluZE5vZGVBdD1mdW5jdGlvbihlKXt2YXIgdD1zbyh0aGlzLmNoaWxkcmVuLChmdW5jdGlvbih0KXtyZXR1cm4gZTw9dC5zdGFydH0pKS0xO2lmKHQ+PTApe3ZhciBuPXRoaXMuY2hpbGRyZW5bdF07aWYoZT5uLnN0YXJ0JiZlPD1uLmVuZClyZXR1cm4gbi5maW5kTm9kZUF0KGUpfXJldHVybiB0aGlzfSxlfSgpO2Z1bmN0aW9uIHVvKGUpe2Zvcih2YXIgdD1vbyhlLHZvaWQgMCx2b2lkIDAsITApLG49bmV3IGhvKDAsZS5sZW5ndGgsW10sdm9pZCAwKSxyPW4saT0tMSxhPXZvaWQgMCxvPW51bGwscz10LnNjYW4oKTtzIT09TmEuRU9TOyl7c3dpdGNoKHMpe2Nhc2UgTmEuU3RhcnRUYWdPcGVuOnZhciBsPW5ldyBobyh0LmdldFRva2VuT2Zmc2V0KCksZS5sZW5ndGgsW10scik7ci5jaGlsZHJlbi5wdXNoKGwpLHI9bDticmVhaztjYXNlIE5hLlN0YXJ0VGFnOnIudGFnPXQuZ2V0VG9rZW5UZXh0KCk7YnJlYWs7Y2FzZSBOYS5TdGFydFRhZ0Nsb3NlOnIucGFyZW50JiYoci5lbmQ9dC5nZXRUb2tlbkVuZCgpLHQuZ2V0VG9rZW5MZW5ndGgoKT8oci5zdGFydFRhZ0VuZD10LmdldFRva2VuRW5kKCksci50YWcmJmNvKHIudGFnKSYmKHIuY2xvc2VkPSEwLHI9ci5wYXJlbnQpKTpyPXIucGFyZW50KTticmVhaztjYXNlIE5hLlN0YXJ0VGFnU2VsZkNsb3NlOnIucGFyZW50JiYoci5jbG9zZWQ9ITAsci5lbmQ9dC5nZXRUb2tlbkVuZCgpLHIuc3RhcnRUYWdFbmQ9dC5nZXRUb2tlbkVuZCgpLHI9ci5wYXJlbnQpO2JyZWFrO2Nhc2UgTmEuRW5kVGFnT3BlbjppPXQuZ2V0VG9rZW5PZmZzZXQoKSxhPXZvaWQgMDticmVhaztjYXNlIE5hLkVuZFRhZzphPXQuZ2V0VG9rZW5UZXh0KCkudG9Mb3dlckNhc2UoKTticmVhaztjYXNlIE5hLkVuZFRhZ0Nsb3NlOmZvcih2YXIgYz1yOyFjLmlzU2FtZVRhZyhhKSYmYy5wYXJlbnQ7KWM9Yy5wYXJlbnQ7aWYoYy5wYXJlbnQpe2Zvcig7ciE9PWM7KXIuZW5kPWksci5jbG9zZWQ9ITEscj1yLnBhcmVudDtyLmNsb3NlZD0hMCxyLmVuZFRhZ1N0YXJ0PWksci5lbmQ9dC5nZXRUb2tlbkVuZCgpLHI9ci5wYXJlbnR9YnJlYWs7Y2FzZSBOYS5BdHRyaWJ1dGVOYW1lOm89dC5nZXRUb2tlblRleHQoKSwoaD1yLmF0dHJpYnV0ZXMpfHwoci5hdHRyaWJ1dGVzPWg9e30pLGhbb109bnVsbDticmVhaztjYXNlIE5hLkF0dHJpYnV0ZVZhbHVlOnZhciBoLGQ9dC5nZXRUb2tlblRleHQoKTsoaD1yLmF0dHJpYnV0ZXMpJiZvJiYoaFtvXT1kLG89bnVsbCl9cz10LnNjYW4oKX1mb3IoO3IucGFyZW50OylyLmVuZD1lLmxlbmd0aCxyLmNsb3NlZD0hMSxyPXIucGFyZW50O3JldHVybntyb290czpuLmNoaWxkcmVuLGZpbmROb2RlQmVmb3JlOm4uZmluZE5vZGVCZWZvcmUuYmluZChuKSxmaW5kTm9kZUF0Om4uZmluZE5vZGVBdC5iaW5kKG4pfX12YXIgcG89eyJBYWN1dGU7Ijoiw4EiLEFhY3V0ZToiw4EiLCJhYWN1dGU7Ijoiw6EiLGFhY3V0ZToiw6EiLCJBYnJldmU7IjoixIIiLCJhYnJldmU7IjoixIMiLCJhYzsiOiLiiL4iLCJhY2Q7Ijoi4oi/IiwiYWNFOyI6IuKIvsyzIiwiQWNpcmM7Ijoiw4IiLEFjaXJjOiLDgiIsImFjaXJjOyI6IsOiIixhY2lyYzoiw6IiLCJhY3V0ZTsiOiLCtCIsYWN1dGU6IsK0IiwiQWN5OyI6ItCQIiwiYWN5OyI6ItCwIiwiQUVsaWc7Ijoiw4YiLEFFbGlnOiLDhiIsImFlbGlnOyI6IsOmIixhZWxpZzoiw6YiLCJhZjsiOiLigaEiLCJBZnI7Ijoi8J2UhCIsImFmcjsiOiLwnZSeIiwiQWdyYXZlOyI6IsOAIixBZ3JhdmU6IsOAIiwiYWdyYXZlOyI6IsOgIixhZ3JhdmU6IsOgIiwiYWxlZnN5bTsiOiLihLUiLCJhbGVwaDsiOiLihLUiLCJBbHBoYTsiOiLOkSIsImFscGhhOyI6Is6xIiwiQW1hY3I7IjoixIAiLCJhbWFjcjsiOiLEgSIsImFtYWxnOyI6IuKovyIsIkFNUDsiOiImIixBTVA6IiYiLCJhbXA7IjoiJiIsYW1wOiImIiwiQW5kOyI6IuKpkyIsImFuZDsiOiLiiKciLCJhbmRhbmQ7Ijoi4qmVIiwiYW5kZDsiOiLiqZwiLCJhbmRzbG9wZTsiOiLiqZgiLCJhbmR2OyI6IuKpmiIsImFuZzsiOiLiiKAiLCJhbmdlOyI6IuKmpCIsImFuZ2xlOyI6IuKIoCIsImFuZ21zZDsiOiLiiKEiLCJhbmdtc2RhYTsiOiLipqgiLCJhbmdtc2RhYjsiOiLipqkiLCJhbmdtc2RhYzsiOiLipqoiLCJhbmdtc2RhZDsiOiLipqsiLCJhbmdtc2RhZTsiOiLipqwiLCJhbmdtc2RhZjsiOiLipq0iLCJhbmdtc2RhZzsiOiLipq4iLCJhbmdtc2RhaDsiOiLipq8iLCJhbmdydDsiOiLiiJ8iLCJhbmdydHZiOyI6IuKKviIsImFuZ3J0dmJkOyI6IuKmnSIsImFuZ3NwaDsiOiLiiKIiLCJhbmdzdDsiOiLDhSIsImFuZ3phcnI7Ijoi4o28IiwiQW9nb247IjoixIQiLCJhb2dvbjsiOiLEhSIsIkFvcGY7Ijoi8J2UuCIsImFvcGY7Ijoi8J2VkiIsImFwOyI6IuKJiCIsImFwYWNpcjsiOiLiqa8iLCJhcEU7Ijoi4qmwIiwiYXBlOyI6IuKJiiIsImFwaWQ7Ijoi4omLIiwiYXBvczsiOiInIiwiQXBwbHlGdW5jdGlvbjsiOiLigaEiLCJhcHByb3g7Ijoi4omIIiwiYXBwcm94ZXE7Ijoi4omKIiwiQXJpbmc7Ijoiw4UiLEFyaW5nOiLDhSIsImFyaW5nOyI6IsOlIixhcmluZzoiw6UiLCJBc2NyOyI6IvCdkpwiLCJhc2NyOyI6IvCdkrYiLCJBc3NpZ247Ijoi4omUIiwiYXN0OyI6IioiLCJhc3ltcDsiOiLiiYgiLCJhc3ltcGVxOyI6IuKJjSIsIkF0aWxkZTsiOiLDgyIsQXRpbGRlOiLDgyIsImF0aWxkZTsiOiLDoyIsYXRpbGRlOiLDoyIsIkF1bWw7Ijoiw4QiLEF1bWw6IsOEIiwiYXVtbDsiOiLDpCIsYXVtbDoiw6QiLCJhd2NvbmludDsiOiLiiLMiLCJhd2ludDsiOiLiqJEiLCJiYWNrY29uZzsiOiLiiYwiLCJiYWNrZXBzaWxvbjsiOiLPtiIsImJhY2twcmltZTsiOiLigLUiLCJiYWNrc2ltOyI6IuKIvSIsImJhY2tzaW1lcTsiOiLii40iLCJCYWNrc2xhc2g7Ijoi4oiWIiwiQmFydjsiOiLiq6ciLCJiYXJ2ZWU7Ijoi4oq9IiwiQmFyd2VkOyI6IuKMhiIsImJhcndlZDsiOiLijIUiLCJiYXJ3ZWRnZTsiOiLijIUiLCJiYnJrOyI6IuKOtSIsImJicmt0YnJrOyI6IuKOtiIsImJjb25nOyI6IuKJjCIsIkJjeTsiOiLQkSIsImJjeTsiOiLQsSIsImJkcXVvOyI6IuKAniIsImJlY2F1czsiOiLiiLUiLCJCZWNhdXNlOyI6IuKItSIsImJlY2F1c2U7Ijoi4oi1IiwiYmVtcHR5djsiOiLiprAiLCJiZXBzaTsiOiLPtiIsImJlcm5vdTsiOiLihKwiLCJCZXJub3VsbGlzOyI6IuKErCIsIkJldGE7IjoizpIiLCJiZXRhOyI6Is6yIiwiYmV0aDsiOiLihLYiLCJiZXR3ZWVuOyI6IuKJrCIsIkJmcjsiOiLwnZSFIiwiYmZyOyI6IvCdlJ8iLCJiaWdjYXA7Ijoi4ouCIiwiYmlnY2lyYzsiOiLil68iLCJiaWdjdXA7Ijoi4ouDIiwiYmlnb2RvdDsiOiLiqIAiLCJiaWdvcGx1czsiOiLiqIEiLCJiaWdvdGltZXM7Ijoi4qiCIiwiYmlnc3FjdXA7Ijoi4qiGIiwiYmlnc3RhcjsiOiLimIUiLCJiaWd0cmlhbmdsZWRvd247Ijoi4pa9IiwiYmlndHJpYW5nbGV1cDsiOiLilrMiLCJiaWd1cGx1czsiOiLiqIQiLCJiaWd2ZWU7Ijoi4ouBIiwiYmlnd2VkZ2U7Ijoi4ouAIiwiYmthcm93OyI6IuKkjSIsImJsYWNrbG96ZW5nZTsiOiLip6siLCJibGFja3NxdWFyZTsiOiLilqoiLCJibGFja3RyaWFuZ2xlOyI6IuKWtCIsImJsYWNrdHJpYW5nbGVkb3duOyI6IuKWviIsImJsYWNrdHJpYW5nbGVsZWZ0OyI6IuKXgiIsImJsYWNrdHJpYW5nbGVyaWdodDsiOiLilrgiLCJibGFuazsiOiLikKMiLCJibGsxMjsiOiLilpIiLCJibGsxNDsiOiLilpEiLCJibGszNDsiOiLilpMiLCJibG9jazsiOiLilogiLCJibmU7IjoiPeKDpSIsImJuZXF1aXY7Ijoi4omh4oOlIiwiYk5vdDsiOiLiq60iLCJibm90OyI6IuKMkCIsIkJvcGY7Ijoi8J2UuSIsImJvcGY7Ijoi8J2VkyIsImJvdDsiOiLiiqUiLCJib3R0b207Ijoi4oqlIiwiYm93dGllOyI6IuKLiCIsImJveGJveDsiOiLip4kiLCJib3hETDsiOiLilZciLCJib3hEbDsiOiLilZYiLCJib3hkTDsiOiLilZUiLCJib3hkbDsiOiLilJAiLCJib3hEUjsiOiLilZQiLCJib3hEcjsiOiLilZMiLCJib3hkUjsiOiLilZIiLCJib3hkcjsiOiLilIwiLCJib3hIOyI6IuKVkCIsImJveGg7Ijoi4pSAIiwiYm94SEQ7Ijoi4pWmIiwiYm94SGQ7Ijoi4pWkIiwiYm94aEQ7Ijoi4pWlIiwiYm94aGQ7Ijoi4pSsIiwiYm94SFU7Ijoi4pWpIiwiYm94SHU7Ijoi4pWnIiwiYm94aFU7Ijoi4pWoIiwiYm94aHU7Ijoi4pS0IiwiYm94bWludXM7Ijoi4oqfIiwiYm94cGx1czsiOiLiip4iLCJib3h0aW1lczsiOiLiiqAiLCJib3hVTDsiOiLilZ0iLCJib3hVbDsiOiLilZwiLCJib3h1TDsiOiLilZsiLCJib3h1bDsiOiLilJgiLCJib3hVUjsiOiLilZoiLCJib3hVcjsiOiLilZkiLCJib3h1UjsiOiLilZgiLCJib3h1cjsiOiLilJQiLCJib3hWOyI6IuKVkSIsImJveHY7Ijoi4pSCIiwiYm94Vkg7Ijoi4pWsIiwiYm94Vmg7Ijoi4pWrIiwiYm94dkg7Ijoi4pWqIiwiYm94dmg7Ijoi4pS8IiwiYm94Vkw7Ijoi4pWjIiwiYm94Vmw7Ijoi4pWiIiwiYm94dkw7Ijoi4pWhIiwiYm94dmw7Ijoi4pSkIiwiYm94VlI7Ijoi4pWgIiwiYm94VnI7Ijoi4pWfIiwiYm94dlI7Ijoi4pWeIiwiYm94dnI7Ijoi4pScIiwiYnByaW1lOyI6IuKAtSIsIkJyZXZlOyI6IsuYIiwiYnJldmU7Ijoiy5giLCJicnZiYXI7IjoiwqYiLGJydmJhcjoiwqYiLCJCc2NyOyI6IuKErCIsImJzY3I7Ijoi8J2StyIsImJzZW1pOyI6IuKBjyIsImJzaW07Ijoi4oi9IiwiYnNpbWU7Ijoi4ouNIiwiYnNvbDsiOiJcXCIsImJzb2xiOyI6IuKnhSIsImJzb2xoc3ViOyI6IuKfiCIsImJ1bGw7Ijoi4oCiIiwiYnVsbGV0OyI6IuKAoiIsImJ1bXA7Ijoi4omOIiwiYnVtcEU7Ijoi4qquIiwiYnVtcGU7Ijoi4omPIiwiQnVtcGVxOyI6IuKJjiIsImJ1bXBlcTsiOiLiiY8iLCJDYWN1dGU7IjoixIYiLCJjYWN1dGU7IjoixIciLCJDYXA7Ijoi4ouSIiwiY2FwOyI6IuKIqSIsImNhcGFuZDsiOiLiqYQiLCJjYXBicmN1cDsiOiLiqYkiLCJjYXBjYXA7Ijoi4qmLIiwiY2FwY3VwOyI6IuKphyIsImNhcGRvdDsiOiLiqYAiLCJDYXBpdGFsRGlmZmVyZW50aWFsRDsiOiLihYUiLCJjYXBzOyI6IuKIqe+4gCIsImNhcmV0OyI6IuKBgSIsImNhcm9uOyI6IsuHIiwiQ2F5bGV5czsiOiLihK0iLCJjY2FwczsiOiLiqY0iLCJDY2Fyb247IjoixIwiLCJjY2Fyb247IjoixI0iLCJDY2VkaWw7Ijoiw4ciLENjZWRpbDoiw4ciLCJjY2VkaWw7Ijoiw6ciLGNjZWRpbDoiw6ciLCJDY2lyYzsiOiLEiCIsImNjaXJjOyI6IsSJIiwiQ2NvbmludDsiOiLiiLAiLCJjY3VwczsiOiLiqYwiLCJjY3Vwc3NtOyI6IuKpkCIsIkNkb3Q7IjoixIoiLCJjZG90OyI6IsSLIiwiY2VkaWw7IjoiwrgiLGNlZGlsOiLCuCIsIkNlZGlsbGE7IjoiwrgiLCJjZW1wdHl2OyI6IuKmsiIsImNlbnQ7IjoiwqIiLGNlbnQ6IsKiIiwiQ2VudGVyRG90OyI6IsK3IiwiY2VudGVyZG90OyI6IsK3IiwiQ2ZyOyI6IuKErSIsImNmcjsiOiLwnZSgIiwiQ0hjeTsiOiLQpyIsImNoY3k7Ijoi0YciLCJjaGVjazsiOiLinJMiLCJjaGVja21hcms7Ijoi4pyTIiwiQ2hpOyI6Is6nIiwiY2hpOyI6Is+HIiwiY2lyOyI6IuKXiyIsImNpcmM7Ijoiy4YiLCJjaXJjZXE7Ijoi4omXIiwiY2lyY2xlYXJyb3dsZWZ0OyI6IuKGuiIsImNpcmNsZWFycm93cmlnaHQ7Ijoi4oa7IiwiY2lyY2xlZGFzdDsiOiLiipsiLCJjaXJjbGVkY2lyYzsiOiLiipoiLCJjaXJjbGVkZGFzaDsiOiLiip0iLCJDaXJjbGVEb3Q7Ijoi4oqZIiwiY2lyY2xlZFI7Ijoiwq4iLCJjaXJjbGVkUzsiOiLik4giLCJDaXJjbGVNaW51czsiOiLiipYiLCJDaXJjbGVQbHVzOyI6IuKKlSIsIkNpcmNsZVRpbWVzOyI6IuKKlyIsImNpckU7Ijoi4qeDIiwiY2lyZTsiOiLiiZciLCJjaXJmbmludDsiOiLiqJAiLCJjaXJtaWQ7Ijoi4quvIiwiY2lyc2NpcjsiOiLip4IiLCJDbG9ja3dpc2VDb250b3VySW50ZWdyYWw7Ijoi4oiyIiwiQ2xvc2VDdXJseURvdWJsZVF1b3RlOyI6IuKAnSIsIkNsb3NlQ3VybHlRdW90ZTsiOiLigJkiLCJjbHViczsiOiLimaMiLCJjbHVic3VpdDsiOiLimaMiLCJDb2xvbjsiOiLiiLciLCJjb2xvbjsiOiI6IiwiQ29sb25lOyI6IuKptCIsImNvbG9uZTsiOiLiiZQiLCJjb2xvbmVxOyI6IuKJlCIsImNvbW1hOyI6IiwiLCJjb21tYXQ7IjoiQCIsImNvbXA7Ijoi4oiBIiwiY29tcGZuOyI6IuKImCIsImNvbXBsZW1lbnQ7Ijoi4oiBIiwiY29tcGxleGVzOyI6IuKEgiIsImNvbmc7Ijoi4omFIiwiY29uZ2RvdDsiOiLiqa0iLCJDb25ncnVlbnQ7Ijoi4omhIiwiQ29uaW50OyI6IuKIryIsImNvbmludDsiOiLiiK4iLCJDb250b3VySW50ZWdyYWw7Ijoi4oiuIiwiQ29wZjsiOiLihIIiLCJjb3BmOyI6IvCdlZQiLCJjb3Byb2Q7Ijoi4oiQIiwiQ29wcm9kdWN0OyI6IuKIkCIsIkNPUFk7IjoiwqkiLENPUFk6IsKpIiwiY29weTsiOiLCqSIsY29weToiwqkiLCJjb3B5c3I7Ijoi4oSXIiwiQ291bnRlckNsb2Nrd2lzZUNvbnRvdXJJbnRlZ3JhbDsiOiLiiLMiLCJjcmFycjsiOiLihrUiLCJDcm9zczsiOiLiqK8iLCJjcm9zczsiOiLinJciLCJDc2NyOyI6IvCdkp4iLCJjc2NyOyI6IvCdkrgiLCJjc3ViOyI6IuKrjyIsImNzdWJlOyI6IuKrkSIsImNzdXA7Ijoi4quQIiwiY3N1cGU7Ijoi4quSIiwiY3Rkb3Q7Ijoi4ouvIiwiY3VkYXJybDsiOiLipLgiLCJjdWRhcnJyOyI6IuKktSIsImN1ZXByOyI6IuKLniIsImN1ZXNjOyI6IuKLnyIsImN1bGFycjsiOiLihrYiLCJjdWxhcnJwOyI6IuKkvSIsIkN1cDsiOiLii5MiLCJjdXA7Ijoi4oiqIiwiY3VwYnJjYXA7Ijoi4qmIIiwiQ3VwQ2FwOyI6IuKJjSIsImN1cGNhcDsiOiLiqYYiLCJjdXBjdXA7Ijoi4qmKIiwiY3VwZG90OyI6IuKKjSIsImN1cG9yOyI6IuKphSIsImN1cHM7Ijoi4oiq77iAIiwiY3VyYXJyOyI6IuKGtyIsImN1cmFycm07Ijoi4qS8IiwiY3VybHllcXByZWM7Ijoi4oueIiwiY3VybHllcXN1Y2M7Ijoi4oufIiwiY3VybHl2ZWU7Ijoi4ouOIiwiY3VybHl3ZWRnZTsiOiLii48iLCJjdXJyZW47IjoiwqQiLGN1cnJlbjoiwqQiLCJjdXJ2ZWFycm93bGVmdDsiOiLihrYiLCJjdXJ2ZWFycm93cmlnaHQ7Ijoi4oa3IiwiY3V2ZWU7Ijoi4ouOIiwiY3V3ZWQ7Ijoi4ouPIiwiY3djb25pbnQ7Ijoi4oiyIiwiY3dpbnQ7Ijoi4oixIiwiY3lsY3R5OyI6IuKMrSIsIkRhZ2dlcjsiOiLigKEiLCJkYWdnZXI7Ijoi4oCgIiwiZGFsZXRoOyI6IuKEuCIsIkRhcnI7Ijoi4oahIiwiZEFycjsiOiLih5MiLCJkYXJyOyI6IuKGkyIsImRhc2g7Ijoi4oCQIiwiRGFzaHY7Ijoi4qukIiwiZGFzaHY7Ijoi4oqjIiwiZGJrYXJvdzsiOiLipI8iLCJkYmxhYzsiOiLLnSIsIkRjYXJvbjsiOiLEjiIsImRjYXJvbjsiOiLEjyIsIkRjeTsiOiLQlCIsImRjeTsiOiLQtCIsIkREOyI6IuKFhSIsImRkOyI6IuKFhiIsImRkYWdnZXI7Ijoi4oChIiwiZGRhcnI7Ijoi4oeKIiwiRERvdHJhaGQ7Ijoi4qSRIiwiZGRvdHNlcTsiOiLiqbciLCJkZWc7IjoiwrAiLGRlZzoiwrAiLCJEZWw7Ijoi4oiHIiwiRGVsdGE7IjoizpQiLCJkZWx0YTsiOiLOtCIsImRlbXB0eXY7Ijoi4qaxIiwiZGZpc2h0OyI6IuKlvyIsIkRmcjsiOiLwnZSHIiwiZGZyOyI6IvCdlKEiLCJkSGFyOyI6IuKlpSIsImRoYXJsOyI6IuKHgyIsImRoYXJyOyI6IuKHgiIsIkRpYWNyaXRpY2FsQWN1dGU7IjoiwrQiLCJEaWFjcml0aWNhbERvdDsiOiLLmSIsIkRpYWNyaXRpY2FsRG91YmxlQWN1dGU7Ijoiy50iLCJEaWFjcml0aWNhbEdyYXZlOyI6ImAiLCJEaWFjcml0aWNhbFRpbGRlOyI6IsucIiwiZGlhbTsiOiLii4QiLCJEaWFtb25kOyI6IuKLhCIsImRpYW1vbmQ7Ijoi4ouEIiwiZGlhbW9uZHN1aXQ7Ijoi4pmmIiwiZGlhbXM7Ijoi4pmmIiwiZGllOyI6IsKoIiwiRGlmZmVyZW50aWFsRDsiOiLihYYiLCJkaWdhbW1hOyI6Is+dIiwiZGlzaW47Ijoi4ouyIiwiZGl2OyI6IsO3IiwiZGl2aWRlOyI6IsO3IixkaXZpZGU6IsO3IiwiZGl2aWRlb250aW1lczsiOiLii4ciLCJkaXZvbng7Ijoi4ouHIiwiREpjeTsiOiLQgiIsImRqY3k7Ijoi0ZIiLCJkbGNvcm47Ijoi4oyeIiwiZGxjcm9wOyI6IuKMjSIsImRvbGxhcjsiOiIkIiwiRG9wZjsiOiLwnZS7IiwiZG9wZjsiOiLwnZWVIiwiRG90OyI6IsKoIiwiZG90OyI6IsuZIiwiRG90RG90OyI6IuKDnCIsImRvdGVxOyI6IuKJkCIsImRvdGVxZG90OyI6IuKJkSIsIkRvdEVxdWFsOyI6IuKJkCIsImRvdG1pbnVzOyI6IuKIuCIsImRvdHBsdXM7Ijoi4oiUIiwiZG90c3F1YXJlOyI6IuKKoSIsImRvdWJsZWJhcndlZGdlOyI6IuKMhiIsIkRvdWJsZUNvbnRvdXJJbnRlZ3JhbDsiOiLiiK8iLCJEb3VibGVEb3Q7IjoiwqgiLCJEb3VibGVEb3duQXJyb3c7Ijoi4oeTIiwiRG91YmxlTGVmdEFycm93OyI6IuKHkCIsIkRvdWJsZUxlZnRSaWdodEFycm93OyI6IuKHlCIsIkRvdWJsZUxlZnRUZWU7Ijoi4qukIiwiRG91YmxlTG9uZ0xlZnRBcnJvdzsiOiLin7giLCJEb3VibGVMb25nTGVmdFJpZ2h0QXJyb3c7Ijoi4p+6IiwiRG91YmxlTG9uZ1JpZ2h0QXJyb3c7Ijoi4p+5IiwiRG91YmxlUmlnaHRBcnJvdzsiOiLih5IiLCJEb3VibGVSaWdodFRlZTsiOiLiiqgiLCJEb3VibGVVcEFycm93OyI6IuKHkSIsIkRvdWJsZVVwRG93bkFycm93OyI6IuKHlSIsIkRvdWJsZVZlcnRpY2FsQmFyOyI6IuKIpSIsIkRvd25BcnJvdzsiOiLihpMiLCJEb3duYXJyb3c7Ijoi4oeTIiwiZG93bmFycm93OyI6IuKGkyIsIkRvd25BcnJvd0JhcjsiOiLipJMiLCJEb3duQXJyb3dVcEFycm93OyI6IuKHtSIsIkRvd25CcmV2ZTsiOiLMkSIsImRvd25kb3duYXJyb3dzOyI6IuKHiiIsImRvd25oYXJwb29ubGVmdDsiOiLih4MiLCJkb3duaGFycG9vbnJpZ2h0OyI6IuKHgiIsIkRvd25MZWZ0UmlnaHRWZWN0b3I7Ijoi4qWQIiwiRG93bkxlZnRUZWVWZWN0b3I7Ijoi4qWeIiwiRG93bkxlZnRWZWN0b3I7Ijoi4oa9IiwiRG93bkxlZnRWZWN0b3JCYXI7Ijoi4qWWIiwiRG93blJpZ2h0VGVlVmVjdG9yOyI6IuKlnyIsIkRvd25SaWdodFZlY3RvcjsiOiLih4EiLCJEb3duUmlnaHRWZWN0b3JCYXI7Ijoi4qWXIiwiRG93blRlZTsiOiLiiqQiLCJEb3duVGVlQXJyb3c7Ijoi4oanIiwiZHJia2Fyb3c7Ijoi4qSQIiwiZHJjb3JuOyI6IuKMnyIsImRyY3JvcDsiOiLijIwiLCJEc2NyOyI6IvCdkp8iLCJkc2NyOyI6IvCdkrkiLCJEU2N5OyI6ItCFIiwiZHNjeTsiOiLRlSIsImRzb2w7Ijoi4qe2IiwiRHN0cm9rOyI6IsSQIiwiZHN0cm9rOyI6IsSRIiwiZHRkb3Q7Ijoi4ouxIiwiZHRyaTsiOiLilr8iLCJkdHJpZjsiOiLilr4iLCJkdWFycjsiOiLih7UiLCJkdWhhcjsiOiLipa8iLCJkd2FuZ2xlOyI6IuKmpiIsIkRaY3k7Ijoi0I8iLCJkemN5OyI6ItGfIiwiZHppZ3JhcnI7Ijoi4p+/IiwiRWFjdXRlOyI6IsOJIixFYWN1dGU6IsOJIiwiZWFjdXRlOyI6IsOpIixlYWN1dGU6IsOpIiwiZWFzdGVyOyI6IuKpriIsIkVjYXJvbjsiOiLEmiIsImVjYXJvbjsiOiLEmyIsImVjaXI7Ijoi4omWIiwiRWNpcmM7Ijoiw4oiLEVjaXJjOiLDiiIsImVjaXJjOyI6IsOqIixlY2lyYzoiw6oiLCJlY29sb247Ijoi4omVIiwiRWN5OyI6ItCtIiwiZWN5OyI6ItGNIiwiZUREb3Q7Ijoi4qm3IiwiRWRvdDsiOiLEliIsImVEb3Q7Ijoi4omRIiwiZWRvdDsiOiLElyIsImVlOyI6IuKFhyIsImVmRG90OyI6IuKJkiIsIkVmcjsiOiLwnZSIIiwiZWZyOyI6IvCdlKIiLCJlZzsiOiLiqpoiLCJFZ3JhdmU7Ijoiw4giLEVncmF2ZToiw4giLCJlZ3JhdmU7Ijoiw6giLGVncmF2ZToiw6giLCJlZ3M7Ijoi4qqWIiwiZWdzZG90OyI6IuKqmCIsImVsOyI6IuKqmSIsIkVsZW1lbnQ7Ijoi4oiIIiwiZWxpbnRlcnM7Ijoi4o+nIiwiZWxsOyI6IuKEkyIsImVsczsiOiLiqpUiLCJlbHNkb3Q7Ijoi4qqXIiwiRW1hY3I7IjoixJIiLCJlbWFjcjsiOiLEkyIsImVtcHR5OyI6IuKIhSIsImVtcHR5c2V0OyI6IuKIhSIsIkVtcHR5U21hbGxTcXVhcmU7Ijoi4pe7IiwiZW1wdHl2OyI6IuKIhSIsIkVtcHR5VmVyeVNtYWxsU3F1YXJlOyI6IuKWqyIsImVtc3A7Ijoi4oCDIiwiZW1zcDEzOyI6IuKAhCIsImVtc3AxNDsiOiLigIUiLCJFTkc7IjoixYoiLCJlbmc7IjoixYsiLCJlbnNwOyI6IuKAgiIsIkVvZ29uOyI6IsSYIiwiZW9nb247IjoixJkiLCJFb3BmOyI6IvCdlLwiLCJlb3BmOyI6IvCdlZYiLCJlcGFyOyI6IuKLlSIsImVwYXJzbDsiOiLip6MiLCJlcGx1czsiOiLiqbEiLCJlcHNpOyI6Is61IiwiRXBzaWxvbjsiOiLOlSIsImVwc2lsb247IjoizrUiLCJlcHNpdjsiOiLPtSIsImVxY2lyYzsiOiLiiZYiLCJlcWNvbG9uOyI6IuKJlSIsImVxc2ltOyI6IuKJgiIsImVxc2xhbnRndHI7Ijoi4qqWIiwiZXFzbGFudGxlc3M7Ijoi4qqVIiwiRXF1YWw7Ijoi4qm1IiwiZXF1YWxzOyI6Ij0iLCJFcXVhbFRpbGRlOyI6IuKJgiIsImVxdWVzdDsiOiLiiZ8iLCJFcXVpbGlicml1bTsiOiLih4wiLCJlcXVpdjsiOiLiiaEiLCJlcXVpdkREOyI6IuKpuCIsImVxdnBhcnNsOyI6IuKnpSIsImVyYXJyOyI6IuKlsSIsImVyRG90OyI6IuKJkyIsIkVzY3I7Ijoi4oSwIiwiZXNjcjsiOiLihK8iLCJlc2RvdDsiOiLiiZAiLCJFc2ltOyI6IuKpsyIsImVzaW07Ijoi4omCIiwiRXRhOyI6Is6XIiwiZXRhOyI6Is63IiwiRVRIOyI6IsOQIixFVEg6IsOQIiwiZXRoOyI6IsOwIixldGg6IsOwIiwiRXVtbDsiOiLDiyIsRXVtbDoiw4siLCJldW1sOyI6IsOrIixldW1sOiLDqyIsImV1cm87Ijoi4oKsIiwiZXhjbDsiOiIhIiwiZXhpc3Q7Ijoi4oiDIiwiRXhpc3RzOyI6IuKIgyIsImV4cGVjdGF0aW9uOyI6IuKEsCIsIkV4cG9uZW50aWFsRTsiOiLihYciLCJleHBvbmVudGlhbGU7Ijoi4oWHIiwiZmFsbGluZ2RvdHNlcTsiOiLiiZIiLCJGY3k7Ijoi0KQiLCJmY3k7Ijoi0YQiLCJmZW1hbGU7Ijoi4pmAIiwiZmZpbGlnOyI6Iu+sgyIsImZmbGlnOyI6Iu+sgCIsImZmbGxpZzsiOiLvrIQiLCJGZnI7Ijoi8J2UiSIsImZmcjsiOiLwnZSjIiwiZmlsaWc7Ijoi76yBIiwiRmlsbGVkU21hbGxTcXVhcmU7Ijoi4pe8IiwiRmlsbGVkVmVyeVNtYWxsU3F1YXJlOyI6IuKWqiIsImZqbGlnOyI6ImZqIiwiZmxhdDsiOiLima0iLCJmbGxpZzsiOiLvrIIiLCJmbHRuczsiOiLilrEiLCJmbm9mOyI6IsaSIiwiRm9wZjsiOiLwnZS9IiwiZm9wZjsiOiLwnZWXIiwiRm9yQWxsOyI6IuKIgCIsImZvcmFsbDsiOiLiiIAiLCJmb3JrOyI6IuKLlCIsImZvcmt2OyI6IuKrmSIsIkZvdXJpZXJ0cmY7Ijoi4oSxIiwiZnBhcnRpbnQ7Ijoi4qiNIiwiZnJhYzEyOyI6IsK9IixmcmFjMTI6IsK9IiwiZnJhYzEzOyI6IuKFkyIsImZyYWMxNDsiOiLCvCIsZnJhYzE0OiLCvCIsImZyYWMxNTsiOiLihZUiLCJmcmFjMTY7Ijoi4oWZIiwiZnJhYzE4OyI6IuKFmyIsImZyYWMyMzsiOiLihZQiLCJmcmFjMjU7Ijoi4oWWIiwiZnJhYzM0OyI6IsK+IixmcmFjMzQ6IsK+IiwiZnJhYzM1OyI6IuKFlyIsImZyYWMzODsiOiLihZwiLCJmcmFjNDU7Ijoi4oWYIiwiZnJhYzU2OyI6IuKFmiIsImZyYWM1ODsiOiLihZ0iLCJmcmFjNzg7Ijoi4oWeIiwiZnJhc2w7Ijoi4oGEIiwiZnJvd247Ijoi4oyiIiwiRnNjcjsiOiLihLEiLCJmc2NyOyI6IvCdkrsiLCJnYWN1dGU7Ijoix7UiLCJHYW1tYTsiOiLOkyIsImdhbW1hOyI6Is6zIiwiR2FtbWFkOyI6Is+cIiwiZ2FtbWFkOyI6Is+dIiwiZ2FwOyI6IuKqhiIsIkdicmV2ZTsiOiLEniIsImdicmV2ZTsiOiLEnyIsIkdjZWRpbDsiOiLEoiIsIkdjaXJjOyI6IsScIiwiZ2NpcmM7IjoixJ0iLCJHY3k7Ijoi0JMiLCJnY3k7Ijoi0LMiLCJHZG90OyI6IsSgIiwiZ2RvdDsiOiLEoSIsImdFOyI6IuKJpyIsImdlOyI6IuKJpSIsImdFbDsiOiLiqowiLCJnZWw7Ijoi4oubIiwiZ2VxOyI6IuKJpSIsImdlcXE7Ijoi4omnIiwiZ2Vxc2xhbnQ7Ijoi4qm+IiwiZ2VzOyI6IuKpviIsImdlc2NjOyI6IuKqqSIsImdlc2RvdDsiOiLiqoAiLCJnZXNkb3RvOyI6IuKqgiIsImdlc2RvdG9sOyI6IuKqhCIsImdlc2w7Ijoi4oub77iAIiwiZ2VzbGVzOyI6IuKqlCIsIkdmcjsiOiLwnZSKIiwiZ2ZyOyI6IvCdlKQiLCJHZzsiOiLii5kiLCJnZzsiOiLiiasiLCJnZ2c7Ijoi4ouZIiwiZ2ltZWw7Ijoi4oS3IiwiR0pjeTsiOiLQgyIsImdqY3k7Ijoi0ZMiLCJnbDsiOiLiibciLCJnbGE7Ijoi4qqlIiwiZ2xFOyI6IuKqkiIsImdsajsiOiLiqqQiLCJnbmFwOyI6IuKqiiIsImduYXBwcm94OyI6IuKqiiIsImduRTsiOiLiiakiLCJnbmU7Ijoi4qqIIiwiZ25lcTsiOiLiqogiLCJnbmVxcTsiOiLiiakiLCJnbnNpbTsiOiLii6ciLCJHb3BmOyI6IvCdlL4iLCJnb3BmOyI6IvCdlZgiLCJncmF2ZTsiOiJgIiwiR3JlYXRlckVxdWFsOyI6IuKJpSIsIkdyZWF0ZXJFcXVhbExlc3M7Ijoi4oubIiwiR3JlYXRlckZ1bGxFcXVhbDsiOiLiiaciLCJHcmVhdGVyR3JlYXRlcjsiOiLiqqIiLCJHcmVhdGVyTGVzczsiOiLiibciLCJHcmVhdGVyU2xhbnRFcXVhbDsiOiLiqb4iLCJHcmVhdGVyVGlsZGU7Ijoi4omzIiwiR3NjcjsiOiLwnZKiIiwiZ3NjcjsiOiLihIoiLCJnc2ltOyI6IuKJsyIsImdzaW1lOyI6IuKqjiIsImdzaW1sOyI6IuKqkCIsIkdUOyI6Ij4iLEdUOiI+IiwiR3Q7Ijoi4omrIiwiZ3Q7IjoiPiIsZ3Q6Ij4iLCJndGNjOyI6IuKqpyIsImd0Y2lyOyI6IuKpuiIsImd0ZG90OyI6IuKLlyIsImd0bFBhcjsiOiLippUiLCJndHF1ZXN0OyI6IuKpvCIsImd0cmFwcHJveDsiOiLiqoYiLCJndHJhcnI7Ijoi4qW4IiwiZ3RyZG90OyI6IuKLlyIsImd0cmVxbGVzczsiOiLii5siLCJndHJlcXFsZXNzOyI6IuKqjCIsImd0cmxlc3M7Ijoi4om3IiwiZ3Ryc2ltOyI6IuKJsyIsImd2ZXJ0bmVxcTsiOiLiianvuIAiLCJndm5FOyI6IuKJqe+4gCIsIkhhY2VrOyI6IsuHIiwiaGFpcnNwOyI6IuKAiiIsImhhbGY7Ijoiwr0iLCJoYW1pbHQ7Ijoi4oSLIiwiSEFSRGN5OyI6ItCqIiwiaGFyZGN5OyI6ItGKIiwiaEFycjsiOiLih5QiLCJoYXJyOyI6IuKGlCIsImhhcnJjaXI7Ijoi4qWIIiwiaGFycnc7Ijoi4oatIiwiSGF0OyI6Il4iLCJoYmFyOyI6IuKEjyIsIkhjaXJjOyI6IsSkIiwiaGNpcmM7IjoixKUiLCJoZWFydHM7Ijoi4pmlIiwiaGVhcnRzdWl0OyI6IuKZpSIsImhlbGxpcDsiOiLigKYiLCJoZXJjb247Ijoi4oq5IiwiSGZyOyI6IuKEjCIsImhmcjsiOiLwnZSlIiwiSGlsYmVydFNwYWNlOyI6IuKEiyIsImhrc2Vhcm93OyI6IuKkpSIsImhrc3dhcm93OyI6IuKkpiIsImhvYXJyOyI6IuKHvyIsImhvbXRodDsiOiLiiLsiLCJob29rbGVmdGFycm93OyI6IuKGqSIsImhvb2tyaWdodGFycm93OyI6IuKGqiIsIkhvcGY7Ijoi4oSNIiwiaG9wZjsiOiLwnZWZIiwiaG9yYmFyOyI6IuKAlSIsIkhvcml6b250YWxMaW5lOyI6IuKUgCIsIkhzY3I7Ijoi4oSLIiwiaHNjcjsiOiLwnZK9IiwiaHNsYXNoOyI6IuKEjyIsIkhzdHJvazsiOiLEpiIsImhzdHJvazsiOiLEpyIsIkh1bXBEb3duSHVtcDsiOiLiiY4iLCJIdW1wRXF1YWw7Ijoi4omPIiwiaHlidWxsOyI6IuKBgyIsImh5cGhlbjsiOiLigJAiLCJJYWN1dGU7Ijoiw40iLElhY3V0ZToiw40iLCJpYWN1dGU7Ijoiw60iLGlhY3V0ZToiw60iLCJpYzsiOiLigaMiLCJJY2lyYzsiOiLDjiIsSWNpcmM6IsOOIiwiaWNpcmM7Ijoiw64iLGljaXJjOiLDriIsIkljeTsiOiLQmCIsImljeTsiOiLQuCIsIklkb3Q7IjoixLAiLCJJRWN5OyI6ItCVIiwiaWVjeTsiOiLQtSIsImlleGNsOyI6IsKhIixpZXhjbDoiwqEiLCJpZmY7Ijoi4oeUIiwiSWZyOyI6IuKEkSIsImlmcjsiOiLwnZSmIiwiSWdyYXZlOyI6IsOMIixJZ3JhdmU6IsOMIiwiaWdyYXZlOyI6IsOsIixpZ3JhdmU6IsOsIiwiaWk7Ijoi4oWIIiwiaWlpaW50OyI6IuKojCIsImlpaW50OyI6IuKIrSIsImlpbmZpbjsiOiLip5wiLCJpaW90YTsiOiLihKkiLCJJSmxpZzsiOiLEsiIsImlqbGlnOyI6IsSzIiwiSW07Ijoi4oSRIiwiSW1hY3I7IjoixKoiLCJpbWFjcjsiOiLEqyIsImltYWdlOyI6IuKEkSIsIkltYWdpbmFyeUk7Ijoi4oWIIiwiaW1hZ2xpbmU7Ijoi4oSQIiwiaW1hZ3BhcnQ7Ijoi4oSRIiwiaW1hdGg7IjoixLEiLCJpbW9mOyI6IuKKtyIsImltcGVkOyI6Isa1IiwiSW1wbGllczsiOiLih5IiLCJpbjsiOiLiiIgiLCJpbmNhcmU7Ijoi4oSFIiwiaW5maW47Ijoi4oieIiwiaW5maW50aWU7Ijoi4qedIiwiaW5vZG90OyI6IsSxIiwiSW50OyI6IuKIrCIsImludDsiOiLiiKsiLCJpbnRjYWw7Ijoi4oq6IiwiaW50ZWdlcnM7Ijoi4oSkIiwiSW50ZWdyYWw7Ijoi4oirIiwiaW50ZXJjYWw7Ijoi4oq6IiwiSW50ZXJzZWN0aW9uOyI6IuKLgiIsImludGxhcmhrOyI6IuKolyIsImludHByb2Q7Ijoi4qi8IiwiSW52aXNpYmxlQ29tbWE7Ijoi4oGjIiwiSW52aXNpYmxlVGltZXM7Ijoi4oGiIiwiSU9jeTsiOiLQgSIsImlvY3k7Ijoi0ZEiLCJJb2dvbjsiOiLEriIsImlvZ29uOyI6IsSvIiwiSW9wZjsiOiLwnZWAIiwiaW9wZjsiOiLwnZWaIiwiSW90YTsiOiLOmSIsImlvdGE7IjoizrkiLCJpcHJvZDsiOiLiqLwiLCJpcXVlc3Q7Ijoiwr8iLGlxdWVzdDoiwr8iLCJJc2NyOyI6IuKEkCIsImlzY3I7Ijoi8J2SviIsImlzaW47Ijoi4oiIIiwiaXNpbmRvdDsiOiLii7UiLCJpc2luRTsiOiLii7kiLCJpc2luczsiOiLii7QiLCJpc2luc3Y7Ijoi4ouzIiwiaXNpbnY7Ijoi4oiIIiwiaXQ7Ijoi4oGiIiwiSXRpbGRlOyI6IsSoIiwiaXRpbGRlOyI6IsSpIiwiSXVrY3k7Ijoi0IYiLCJpdWtjeTsiOiLRliIsIkl1bWw7Ijoiw48iLEl1bWw6IsOPIiwiaXVtbDsiOiLDryIsaXVtbDoiw68iLCJKY2lyYzsiOiLEtCIsImpjaXJjOyI6IsS1IiwiSmN5OyI6ItCZIiwiamN5OyI6ItC5IiwiSmZyOyI6IvCdlI0iLCJqZnI7Ijoi8J2UpyIsImptYXRoOyI6Isi3IiwiSm9wZjsiOiLwnZWBIiwiam9wZjsiOiLwnZWbIiwiSnNjcjsiOiLwnZKlIiwianNjcjsiOiLwnZK/IiwiSnNlcmN5OyI6ItCIIiwianNlcmN5OyI6ItGYIiwiSnVrY3k7Ijoi0IQiLCJqdWtjeTsiOiLRlCIsIkthcHBhOyI6Is6aIiwia2FwcGE7IjoizroiLCJrYXBwYXY7Ijoiz7AiLCJLY2VkaWw7IjoixLYiLCJrY2VkaWw7IjoixLciLCJLY3k7Ijoi0JoiLCJrY3k7Ijoi0LoiLCJLZnI7Ijoi8J2UjiIsImtmcjsiOiLwnZSoIiwia2dyZWVuOyI6IsS4IiwiS0hjeTsiOiLQpSIsImtoY3k7Ijoi0YUiLCJLSmN5OyI6ItCMIiwia2pjeTsiOiLRnCIsIktvcGY7Ijoi8J2VgiIsImtvcGY7Ijoi8J2VnCIsIktzY3I7Ijoi8J2SpiIsImtzY3I7Ijoi8J2TgCIsImxBYXJyOyI6IuKHmiIsIkxhY3V0ZTsiOiLEuSIsImxhY3V0ZTsiOiLEuiIsImxhZW1wdHl2OyI6IuKmtCIsImxhZ3JhbjsiOiLihJIiLCJMYW1iZGE7IjoizpsiLCJsYW1iZGE7IjoizrsiLCJMYW5nOyI6IuKfqiIsImxhbmc7Ijoi4p+oIiwibGFuZ2Q7Ijoi4qaRIiwibGFuZ2xlOyI6IuKfqCIsImxhcDsiOiLiqoUiLCJMYXBsYWNldHJmOyI6IuKEkiIsImxhcXVvOyI6IsKrIixsYXF1bzoiwqsiLCJMYXJyOyI6IuKGniIsImxBcnI7Ijoi4oeQIiwibGFycjsiOiLihpAiLCJsYXJyYjsiOiLih6QiLCJsYXJyYmZzOyI6IuKknyIsImxhcnJmczsiOiLipJ0iLCJsYXJyaGs7Ijoi4oapIiwibGFycmxwOyI6IuKGqyIsImxhcnJwbDsiOiLipLkiLCJsYXJyc2ltOyI6IuKlsyIsImxhcnJ0bDsiOiLihqIiLCJsYXQ7Ijoi4qqrIiwibEF0YWlsOyI6IuKkmyIsImxhdGFpbDsiOiLipJkiLCJsYXRlOyI6IuKqrSIsImxhdGVzOyI6IuKqre+4gCIsImxCYXJyOyI6IuKkjiIsImxiYXJyOyI6IuKkjCIsImxiYnJrOyI6IuKdsiIsImxicmFjZTsiOiJ7IiwibGJyYWNrOyI6IlsiLCJsYnJrZTsiOiLiposiLCJsYnJrc2xkOyI6IuKmjyIsImxicmtzbHU7Ijoi4qaNIiwiTGNhcm9uOyI6IsS9IiwibGNhcm9uOyI6IsS+IiwiTGNlZGlsOyI6IsS7IiwibGNlZGlsOyI6IsS8IiwibGNlaWw7Ijoi4oyIIiwibGN1YjsiOiJ7IiwiTGN5OyI6ItCbIiwibGN5OyI6ItC7IiwibGRjYTsiOiLipLYiLCJsZHF1bzsiOiLigJwiLCJsZHF1b3I7Ijoi4oCeIiwibGRyZGhhcjsiOiLipaciLCJsZHJ1c2hhcjsiOiLipYsiLCJsZHNoOyI6IuKGsiIsImxFOyI6IuKJpiIsImxlOyI6IuKJpCIsIkxlZnRBbmdsZUJyYWNrZXQ7Ijoi4p+oIiwiTGVmdEFycm93OyI6IuKGkCIsIkxlZnRhcnJvdzsiOiLih5AiLCJsZWZ0YXJyb3c7Ijoi4oaQIiwiTGVmdEFycm93QmFyOyI6IuKHpCIsIkxlZnRBcnJvd1JpZ2h0QXJyb3c7Ijoi4oeGIiwibGVmdGFycm93dGFpbDsiOiLihqIiLCJMZWZ0Q2VpbGluZzsiOiLijIgiLCJMZWZ0RG91YmxlQnJhY2tldDsiOiLin6YiLCJMZWZ0RG93blRlZVZlY3RvcjsiOiLipaEiLCJMZWZ0RG93blZlY3RvcjsiOiLih4MiLCJMZWZ0RG93blZlY3RvckJhcjsiOiLipZkiLCJMZWZ0Rmxvb3I7Ijoi4oyKIiwibGVmdGhhcnBvb25kb3duOyI6IuKGvSIsImxlZnRoYXJwb29udXA7Ijoi4oa8IiwibGVmdGxlZnRhcnJvd3M7Ijoi4oeHIiwiTGVmdFJpZ2h0QXJyb3c7Ijoi4oaUIiwiTGVmdHJpZ2h0YXJyb3c7Ijoi4oeUIiwibGVmdHJpZ2h0YXJyb3c7Ijoi4oaUIiwibGVmdHJpZ2h0YXJyb3dzOyI6IuKHhiIsImxlZnRyaWdodGhhcnBvb25zOyI6IuKHiyIsImxlZnRyaWdodHNxdWlnYXJyb3c7Ijoi4oatIiwiTGVmdFJpZ2h0VmVjdG9yOyI6IuKljiIsIkxlZnRUZWU7Ijoi4oqjIiwiTGVmdFRlZUFycm93OyI6IuKGpCIsIkxlZnRUZWVWZWN0b3I7Ijoi4qWaIiwibGVmdHRocmVldGltZXM7Ijoi4ouLIiwiTGVmdFRyaWFuZ2xlOyI6IuKKsiIsIkxlZnRUcmlhbmdsZUJhcjsiOiLip48iLCJMZWZ0VHJpYW5nbGVFcXVhbDsiOiLiirQiLCJMZWZ0VXBEb3duVmVjdG9yOyI6IuKlkSIsIkxlZnRVcFRlZVZlY3RvcjsiOiLipaAiLCJMZWZ0VXBWZWN0b3I7Ijoi4oa/IiwiTGVmdFVwVmVjdG9yQmFyOyI6IuKlmCIsIkxlZnRWZWN0b3I7Ijoi4oa8IiwiTGVmdFZlY3RvckJhcjsiOiLipZIiLCJsRWc7Ijoi4qqLIiwibGVnOyI6IuKLmiIsImxlcTsiOiLiiaQiLCJsZXFxOyI6IuKJpiIsImxlcXNsYW50OyI6IuKpvSIsImxlczsiOiLiqb0iLCJsZXNjYzsiOiLiqqgiLCJsZXNkb3Q7Ijoi4qm/IiwibGVzZG90bzsiOiLiqoEiLCJsZXNkb3RvcjsiOiLiqoMiLCJsZXNnOyI6IuKLmu+4gCIsImxlc2dlczsiOiLiqpMiLCJsZXNzYXBwcm94OyI6IuKqhSIsImxlc3Nkb3Q7Ijoi4ouWIiwibGVzc2VxZ3RyOyI6IuKLmiIsImxlc3NlcXFndHI7Ijoi4qqLIiwiTGVzc0VxdWFsR3JlYXRlcjsiOiLii5oiLCJMZXNzRnVsbEVxdWFsOyI6IuKJpiIsIkxlc3NHcmVhdGVyOyI6IuKJtiIsImxlc3NndHI7Ijoi4om2IiwiTGVzc0xlc3M7Ijoi4qqhIiwibGVzc3NpbTsiOiLiibIiLCJMZXNzU2xhbnRFcXVhbDsiOiLiqb0iLCJMZXNzVGlsZGU7Ijoi4omyIiwibGZpc2h0OyI6IuKlvCIsImxmbG9vcjsiOiLijIoiLCJMZnI7Ijoi8J2UjyIsImxmcjsiOiLwnZSpIiwibGc7Ijoi4om2IiwibGdFOyI6IuKqkSIsImxIYXI7Ijoi4qWiIiwibGhhcmQ7Ijoi4oa9IiwibGhhcnU7Ijoi4oa8IiwibGhhcnVsOyI6IuKlqiIsImxoYmxrOyI6IuKWhCIsIkxKY3k7Ijoi0IkiLCJsamN5OyI6ItGZIiwiTGw7Ijoi4ouYIiwibGw7Ijoi4omqIiwibGxhcnI7Ijoi4oeHIiwibGxjb3JuZXI7Ijoi4oyeIiwiTGxlZnRhcnJvdzsiOiLih5oiLCJsbGhhcmQ7Ijoi4qWrIiwibGx0cmk7Ijoi4pe6IiwiTG1pZG90OyI6IsS/IiwibG1pZG90OyI6IsWAIiwibG1vdXN0OyI6IuKOsCIsImxtb3VzdGFjaGU7Ijoi4o6wIiwibG5hcDsiOiLiqokiLCJsbmFwcHJveDsiOiLiqokiLCJsbkU7Ijoi4omoIiwibG5lOyI6IuKqhyIsImxuZXE7Ijoi4qqHIiwibG5lcXE7Ijoi4omoIiwibG5zaW07Ijoi4oumIiwibG9hbmc7Ijoi4p+sIiwibG9hcnI7Ijoi4oe9IiwibG9icms7Ijoi4p+mIiwiTG9uZ0xlZnRBcnJvdzsiOiLin7UiLCJMb25nbGVmdGFycm93OyI6IuKfuCIsImxvbmdsZWZ0YXJyb3c7Ijoi4p+1IiwiTG9uZ0xlZnRSaWdodEFycm93OyI6IuKftyIsIkxvbmdsZWZ0cmlnaHRhcnJvdzsiOiLin7oiLCJsb25nbGVmdHJpZ2h0YXJyb3c7Ijoi4p+3IiwibG9uZ21hcHN0bzsiOiLin7wiLCJMb25nUmlnaHRBcnJvdzsiOiLin7YiLCJMb25ncmlnaHRhcnJvdzsiOiLin7kiLCJsb25ncmlnaHRhcnJvdzsiOiLin7YiLCJsb29wYXJyb3dsZWZ0OyI6IuKGqyIsImxvb3BhcnJvd3JpZ2h0OyI6IuKGrCIsImxvcGFyOyI6IuKmhSIsIkxvcGY7Ijoi8J2VgyIsImxvcGY7Ijoi8J2VnSIsImxvcGx1czsiOiLiqK0iLCJsb3RpbWVzOyI6IuKotCIsImxvd2FzdDsiOiLiiJciLCJsb3diYXI7IjoiXyIsIkxvd2VyTGVmdEFycm93OyI6IuKGmSIsIkxvd2VyUmlnaHRBcnJvdzsiOiLihpgiLCJsb3o7Ijoi4peKIiwibG96ZW5nZTsiOiLil4oiLCJsb3pmOyI6IuKnqyIsImxwYXI7IjoiKCIsImxwYXJsdDsiOiLippMiLCJscmFycjsiOiLih4YiLCJscmNvcm5lcjsiOiLijJ8iLCJscmhhcjsiOiLih4siLCJscmhhcmQ7Ijoi4qWtIiwibHJtOyI6IuKAjiIsImxydHJpOyI6IuKKvyIsImxzYXF1bzsiOiLigLkiLCJMc2NyOyI6IuKEkiIsImxzY3I7Ijoi8J2TgSIsIkxzaDsiOiLihrAiLCJsc2g7Ijoi4oawIiwibHNpbTsiOiLiibIiLCJsc2ltZTsiOiLiqo0iLCJsc2ltZzsiOiLiqo8iLCJsc3FiOyI6IlsiLCJsc3F1bzsiOiLigJgiLCJsc3F1b3I7Ijoi4oCaIiwiTHN0cm9rOyI6IsWBIiwibHN0cm9rOyI6IsWCIiwiTFQ7IjoiPCIsTFQ6IjwiLCJMdDsiOiLiiaoiLCJsdDsiOiI8IixsdDoiPCIsImx0Y2M7Ijoi4qqmIiwibHRjaXI7Ijoi4qm5IiwibHRkb3Q7Ijoi4ouWIiwibHRocmVlOyI6IuKLiyIsImx0aW1lczsiOiLii4kiLCJsdGxhcnI7Ijoi4qW2IiwibHRxdWVzdDsiOiLiqbsiLCJsdHJpOyI6IuKXgyIsImx0cmllOyI6IuKKtCIsImx0cmlmOyI6IuKXgiIsImx0clBhcjsiOiLippYiLCJsdXJkc2hhcjsiOiLipYoiLCJsdXJ1aGFyOyI6IuKlpiIsImx2ZXJ0bmVxcTsiOiLiiajvuIAiLCJsdm5FOyI6IuKJqO+4gCIsIm1hY3I7Ijoiwq8iLG1hY3I6IsKvIiwibWFsZTsiOiLimYIiLCJtYWx0OyI6IuKcoCIsIm1hbHRlc2U7Ijoi4pygIiwiTWFwOyI6IuKkhSIsIm1hcDsiOiLihqYiLCJtYXBzdG87Ijoi4oamIiwibWFwc3RvZG93bjsiOiLihqciLCJtYXBzdG9sZWZ0OyI6IuKGpCIsIm1hcHN0b3VwOyI6IuKGpSIsIm1hcmtlcjsiOiLilq4iLCJtY29tbWE7Ijoi4qipIiwiTWN5OyI6ItCcIiwibWN5OyI6ItC8IiwibWRhc2g7Ijoi4oCUIiwibUREb3Q7Ijoi4oi6IiwibWVhc3VyZWRhbmdsZTsiOiLiiKEiLCJNZWRpdW1TcGFjZTsiOiLigZ8iLCJNZWxsaW50cmY7Ijoi4oSzIiwiTWZyOyI6IvCdlJAiLCJtZnI7Ijoi8J2UqiIsIm1obzsiOiLihKciLCJtaWNybzsiOiLCtSIsbWljcm86IsK1IiwibWlkOyI6IuKIoyIsIm1pZGFzdDsiOiIqIiwibWlkY2lyOyI6IuKrsCIsIm1pZGRvdDsiOiLCtyIsbWlkZG90OiLCtyIsIm1pbnVzOyI6IuKIkiIsIm1pbnVzYjsiOiLiip8iLCJtaW51c2Q7Ijoi4oi4IiwibWludXNkdTsiOiLiqKoiLCJNaW51c1BsdXM7Ijoi4oiTIiwibWxjcDsiOiLiq5siLCJtbGRyOyI6IuKApiIsIm1ucGx1czsiOiLiiJMiLCJtb2RlbHM7Ijoi4oqnIiwiTW9wZjsiOiLwnZWEIiwibW9wZjsiOiLwnZWeIiwibXA7Ijoi4oiTIiwiTXNjcjsiOiLihLMiLCJtc2NyOyI6IvCdk4IiLCJtc3Rwb3M7Ijoi4oi+IiwiTXU7IjoizpwiLCJtdTsiOiLOvCIsIm11bHRpbWFwOyI6IuKKuCIsIm11bWFwOyI6IuKKuCIsIm5hYmxhOyI6IuKIhyIsIk5hY3V0ZTsiOiLFgyIsIm5hY3V0ZTsiOiLFhCIsIm5hbmc7Ijoi4oig4oOSIiwibmFwOyI6IuKJiSIsIm5hcEU7Ijoi4qmwzLgiLCJuYXBpZDsiOiLiiYvMuCIsIm5hcG9zOyI6IsWJIiwibmFwcHJveDsiOiLiiYkiLCJuYXR1cjsiOiLima4iLCJuYXR1cmFsOyI6IuKZriIsIm5hdHVyYWxzOyI6IuKElSIsIm5ic3A7IjoiwqAiLG5ic3A6IsKgIiwibmJ1bXA7Ijoi4omOzLgiLCJuYnVtcGU7Ijoi4omPzLgiLCJuY2FwOyI6IuKpgyIsIk5jYXJvbjsiOiLFhyIsIm5jYXJvbjsiOiLFiCIsIk5jZWRpbDsiOiLFhSIsIm5jZWRpbDsiOiLFhiIsIm5jb25nOyI6IuKJhyIsIm5jb25nZG90OyI6IuKprcy4IiwibmN1cDsiOiLiqYIiLCJOY3k7Ijoi0J0iLCJuY3k7Ijoi0L0iLCJuZGFzaDsiOiLigJMiLCJuZTsiOiLiiaAiLCJuZWFyaGs7Ijoi4qSkIiwibmVBcnI7Ijoi4oeXIiwibmVhcnI7Ijoi4oaXIiwibmVhcnJvdzsiOiLihpciLCJuZWRvdDsiOiLiiZDMuCIsIk5lZ2F0aXZlTWVkaXVtU3BhY2U7Ijoi4oCLIiwiTmVnYXRpdmVUaGlja1NwYWNlOyI6IuKAiyIsIk5lZ2F0aXZlVGhpblNwYWNlOyI6IuKAiyIsIk5lZ2F0aXZlVmVyeVRoaW5TcGFjZTsiOiLigIsiLCJuZXF1aXY7Ijoi4omiIiwibmVzZWFyOyI6IuKkqCIsIm5lc2ltOyI6IuKJgsy4IiwiTmVzdGVkR3JlYXRlckdyZWF0ZXI7Ijoi4omrIiwiTmVzdGVkTGVzc0xlc3M7Ijoi4omqIiwiTmV3TGluZTsiOiJcbiIsIm5leGlzdDsiOiLiiIQiLCJuZXhpc3RzOyI6IuKIhCIsIk5mcjsiOiLwnZSRIiwibmZyOyI6IvCdlKsiLCJuZ0U7Ijoi4omnzLgiLCJuZ2U7Ijoi4omxIiwibmdlcTsiOiLiibEiLCJuZ2VxcTsiOiLiiafMuCIsIm5nZXFzbGFudDsiOiLiqb7MuCIsIm5nZXM7Ijoi4qm+zLgiLCJuR2c7Ijoi4ouZzLgiLCJuZ3NpbTsiOiLiibUiLCJuR3Q7Ijoi4omr4oOSIiwibmd0OyI6IuKJryIsIm5ndHI7Ijoi4omvIiwibkd0djsiOiLiiavMuCIsIm5oQXJyOyI6IuKHjiIsIm5oYXJyOyI6IuKGriIsIm5ocGFyOyI6IuKrsiIsIm5pOyI6IuKIiyIsIm5pczsiOiLii7wiLCJuaXNkOyI6IuKLuiIsIm5pdjsiOiLiiIsiLCJOSmN5OyI6ItCKIiwibmpjeTsiOiLRmiIsIm5sQXJyOyI6IuKHjSIsIm5sYXJyOyI6IuKGmiIsIm5sZHI7Ijoi4oClIiwibmxFOyI6IuKJpsy4IiwibmxlOyI6IuKJsCIsIm5MZWZ0YXJyb3c7Ijoi4oeNIiwibmxlZnRhcnJvdzsiOiLihpoiLCJuTGVmdHJpZ2h0YXJyb3c7Ijoi4oeOIiwibmxlZnRyaWdodGFycm93OyI6IuKGriIsIm5sZXE7Ijoi4omwIiwibmxlcXE7Ijoi4ommzLgiLCJubGVxc2xhbnQ7Ijoi4qm9zLgiLCJubGVzOyI6IuKpvcy4Iiwibmxlc3M7Ijoi4omuIiwibkxsOyI6IuKLmMy4IiwibmxzaW07Ijoi4om0Iiwibkx0OyI6IuKJquKDkiIsIm5sdDsiOiLiia4iLCJubHRyaTsiOiLii6oiLCJubHRyaWU7Ijoi4ousIiwibkx0djsiOiLiiarMuCIsIm5taWQ7Ijoi4oikIiwiTm9CcmVhazsiOiLigaAiLCJOb25CcmVha2luZ1NwYWNlOyI6IsKgIiwiTm9wZjsiOiLihJUiLCJub3BmOyI6IvCdlZ8iLCJOb3Q7Ijoi4qusIiwibm90OyI6IsKsIixub3Q6IsKsIiwiTm90Q29uZ3J1ZW50OyI6IuKJoiIsIk5vdEN1cENhcDsiOiLiia0iLCJOb3REb3VibGVWZXJ0aWNhbEJhcjsiOiLiiKYiLCJOb3RFbGVtZW50OyI6IuKIiSIsIk5vdEVxdWFsOyI6IuKJoCIsIk5vdEVxdWFsVGlsZGU7Ijoi4omCzLgiLCJOb3RFeGlzdHM7Ijoi4oiEIiwiTm90R3JlYXRlcjsiOiLiia8iLCJOb3RHcmVhdGVyRXF1YWw7Ijoi4omxIiwiTm90R3JlYXRlckZ1bGxFcXVhbDsiOiLiiafMuCIsIk5vdEdyZWF0ZXJHcmVhdGVyOyI6IuKJq8y4IiwiTm90R3JlYXRlckxlc3M7Ijoi4om5IiwiTm90R3JlYXRlclNsYW50RXF1YWw7Ijoi4qm+zLgiLCJOb3RHcmVhdGVyVGlsZGU7Ijoi4om1IiwiTm90SHVtcERvd25IdW1wOyI6IuKJjsy4IiwiTm90SHVtcEVxdWFsOyI6IuKJj8y4Iiwibm90aW47Ijoi4oiJIiwibm90aW5kb3Q7Ijoi4ou1zLgiLCJub3RpbkU7Ijoi4ou5zLgiLCJub3RpbnZhOyI6IuKIiSIsIm5vdGludmI7Ijoi4ou3Iiwibm90aW52YzsiOiLii7YiLCJOb3RMZWZ0VHJpYW5nbGU7Ijoi4ouqIiwiTm90TGVmdFRyaWFuZ2xlQmFyOyI6IuKnj8y4IiwiTm90TGVmdFRyaWFuZ2xlRXF1YWw7Ijoi4ousIiwiTm90TGVzczsiOiLiia4iLCJOb3RMZXNzRXF1YWw7Ijoi4omwIiwiTm90TGVzc0dyZWF0ZXI7Ijoi4om4IiwiTm90TGVzc0xlc3M7Ijoi4omqzLgiLCJOb3RMZXNzU2xhbnRFcXVhbDsiOiLiqb3MuCIsIk5vdExlc3NUaWxkZTsiOiLiibQiLCJOb3ROZXN0ZWRHcmVhdGVyR3JlYXRlcjsiOiLiqqLMuCIsIk5vdE5lc3RlZExlc3NMZXNzOyI6IuKqocy4Iiwibm90bmk7Ijoi4oiMIiwibm90bml2YTsiOiLiiIwiLCJub3RuaXZiOyI6IuKLviIsIm5vdG5pdmM7Ijoi4ou9IiwiTm90UHJlY2VkZXM7Ijoi4oqAIiwiTm90UHJlY2VkZXNFcXVhbDsiOiLiqq/MuCIsIk5vdFByZWNlZGVzU2xhbnRFcXVhbDsiOiLii6AiLCJOb3RSZXZlcnNlRWxlbWVudDsiOiLiiIwiLCJOb3RSaWdodFRyaWFuZ2xlOyI6IuKLqyIsIk5vdFJpZ2h0VHJpYW5nbGVCYXI7Ijoi4qeQzLgiLCJOb3RSaWdodFRyaWFuZ2xlRXF1YWw7Ijoi4outIiwiTm90U3F1YXJlU3Vic2V0OyI6IuKKj8y4IiwiTm90U3F1YXJlU3Vic2V0RXF1YWw7Ijoi4ouiIiwiTm90U3F1YXJlU3VwZXJzZXQ7Ijoi4oqQzLgiLCJOb3RTcXVhcmVTdXBlcnNldEVxdWFsOyI6IuKLoyIsIk5vdFN1YnNldDsiOiLiioLig5IiLCJOb3RTdWJzZXRFcXVhbDsiOiLiiogiLCJOb3RTdWNjZWVkczsiOiLiioEiLCJOb3RTdWNjZWVkc0VxdWFsOyI6IuKqsMy4IiwiTm90U3VjY2VlZHNTbGFudEVxdWFsOyI6IuKLoSIsIk5vdFN1Y2NlZWRzVGlsZGU7Ijoi4om/zLgiLCJOb3RTdXBlcnNldDsiOiLiioPig5IiLCJOb3RTdXBlcnNldEVxdWFsOyI6IuKKiSIsIk5vdFRpbGRlOyI6IuKJgSIsIk5vdFRpbGRlRXF1YWw7Ijoi4omEIiwiTm90VGlsZGVGdWxsRXF1YWw7Ijoi4omHIiwiTm90VGlsZGVUaWxkZTsiOiLiiYkiLCJOb3RWZXJ0aWNhbEJhcjsiOiLiiKQiLCJucGFyOyI6IuKIpiIsIm5wYXJhbGxlbDsiOiLiiKYiLCJucGFyc2w7Ijoi4qu94oOlIiwibnBhcnQ7Ijoi4oiCzLgiLCJucG9saW50OyI6IuKolCIsIm5wcjsiOiLiioAiLCJucHJjdWU7Ijoi4ougIiwibnByZTsiOiLiqq/MuCIsIm5wcmVjOyI6IuKKgCIsIm5wcmVjZXE7Ijoi4qqvzLgiLCJuckFycjsiOiLih48iLCJucmFycjsiOiLihpsiLCJucmFycmM7Ijoi4qSzzLgiLCJucmFycnc7Ijoi4oadzLgiLCJuUmlnaHRhcnJvdzsiOiLih48iLCJucmlnaHRhcnJvdzsiOiLihpsiLCJucnRyaTsiOiLii6siLCJucnRyaWU7Ijoi4outIiwibnNjOyI6IuKKgSIsIm5zY2N1ZTsiOiLii6EiLCJuc2NlOyI6IuKqsMy4IiwiTnNjcjsiOiLwnZKpIiwibnNjcjsiOiLwnZODIiwibnNob3J0bWlkOyI6IuKIpCIsIm5zaG9ydHBhcmFsbGVsOyI6IuKIpiIsIm5zaW07Ijoi4omBIiwibnNpbWU7Ijoi4omEIiwibnNpbWVxOyI6IuKJhCIsIm5zbWlkOyI6IuKIpCIsIm5zcGFyOyI6IuKIpiIsIm5zcXN1YmU7Ijoi4ouiIiwibnNxc3VwZTsiOiLii6MiLCJuc3ViOyI6IuKKhCIsIm5zdWJFOyI6IuKrhcy4IiwibnN1YmU7Ijoi4oqIIiwibnN1YnNldDsiOiLiioLig5IiLCJuc3Vic2V0ZXE7Ijoi4oqIIiwibnN1YnNldGVxcTsiOiLiq4XMuCIsIm5zdWNjOyI6IuKKgSIsIm5zdWNjZXE7Ijoi4qqwzLgiLCJuc3VwOyI6IuKKhSIsIm5zdXBFOyI6IuKrhsy4IiwibnN1cGU7Ijoi4oqJIiwibnN1cHNldDsiOiLiioPig5IiLCJuc3Vwc2V0ZXE7Ijoi4oqJIiwibnN1cHNldGVxcTsiOiLiq4bMuCIsIm50Z2w7Ijoi4om5IiwiTnRpbGRlOyI6IsORIixOdGlsZGU6IsORIiwibnRpbGRlOyI6IsOxIixudGlsZGU6IsOxIiwibnRsZzsiOiLiibgiLCJudHJpYW5nbGVsZWZ0OyI6IuKLqiIsIm50cmlhbmdsZWxlZnRlcTsiOiLii6wiLCJudHJpYW5nbGVyaWdodDsiOiLii6siLCJudHJpYW5nbGVyaWdodGVxOyI6IuKLrSIsIk51OyI6Is6dIiwibnU7Ijoizr0iLCJudW07IjoiIyIsIm51bWVybzsiOiLihJYiLCJudW1zcDsiOiLigIciLCJudmFwOyI6IuKJjeKDkiIsIm5WRGFzaDsiOiLiiq8iLCJuVmRhc2g7Ijoi4oquIiwibnZEYXNoOyI6IuKKrSIsIm52ZGFzaDsiOiLiiqwiLCJudmdlOyI6IuKJpeKDkiIsIm52Z3Q7IjoiPuKDkiIsIm52SGFycjsiOiLipIQiLCJudmluZmluOyI6IuKnniIsIm52bEFycjsiOiLipIIiLCJudmxlOyI6IuKJpOKDkiIsIm52bHQ7IjoiPOKDkiIsIm52bHRyaWU7Ijoi4oq04oOSIiwibnZyQXJyOyI6IuKkgyIsIm52cnRyaWU7Ijoi4oq14oOSIiwibnZzaW07Ijoi4oi84oOSIiwibndhcmhrOyI6IuKkoyIsIm53QXJyOyI6IuKHliIsIm53YXJyOyI6IuKGliIsIm53YXJyb3c7Ijoi4oaWIiwibnduZWFyOyI6IuKkpyIsIk9hY3V0ZTsiOiLDkyIsT2FjdXRlOiLDkyIsIm9hY3V0ZTsiOiLDsyIsb2FjdXRlOiLDsyIsIm9hc3Q7Ijoi4oqbIiwib2NpcjsiOiLiipoiLCJPY2lyYzsiOiLDlCIsT2NpcmM6IsOUIiwib2NpcmM7Ijoiw7QiLG9jaXJjOiLDtCIsIk9jeTsiOiLQniIsIm9jeTsiOiLQviIsIm9kYXNoOyI6IuKKnSIsIk9kYmxhYzsiOiLFkCIsIm9kYmxhYzsiOiLFkSIsIm9kaXY7Ijoi4qi4Iiwib2RvdDsiOiLiipkiLCJvZHNvbGQ7Ijoi4qa8IiwiT0VsaWc7IjoixZIiLCJvZWxpZzsiOiLFkyIsIm9mY2lyOyI6IuKmvyIsIk9mcjsiOiLwnZSSIiwib2ZyOyI6IvCdlKwiLCJvZ29uOyI6IsubIiwiT2dyYXZlOyI6IsOSIixPZ3JhdmU6IsOSIiwib2dyYXZlOyI6IsOyIixvZ3JhdmU6IsOyIiwib2d0OyI6IuKngSIsIm9oYmFyOyI6IuKmtSIsIm9obTsiOiLOqSIsIm9pbnQ7Ijoi4oiuIiwib2xhcnI7Ijoi4oa6Iiwib2xjaXI7Ijoi4qa+Iiwib2xjcm9zczsiOiLiprsiLCJvbGluZTsiOiLigL4iLCJvbHQ7Ijoi4qeAIiwiT21hY3I7IjoixYwiLCJvbWFjcjsiOiLFjSIsIk9tZWdhOyI6Is6pIiwib21lZ2E7Ijoiz4kiLCJPbWljcm9uOyI6Is6fIiwib21pY3JvbjsiOiLOvyIsIm9taWQ7Ijoi4qa2Iiwib21pbnVzOyI6IuKKliIsIk9vcGY7Ijoi8J2VhiIsIm9vcGY7Ijoi8J2VoCIsIm9wYXI7Ijoi4qa3IiwiT3BlbkN1cmx5RG91YmxlUXVvdGU7Ijoi4oCcIiwiT3BlbkN1cmx5UXVvdGU7Ijoi4oCYIiwib3BlcnA7Ijoi4qa5Iiwib3BsdXM7Ijoi4oqVIiwiT3I7Ijoi4qmUIiwib3I7Ijoi4oioIiwib3JhcnI7Ijoi4oa7Iiwib3JkOyI6IuKpnSIsIm9yZGVyOyI6IuKEtCIsIm9yZGVyb2Y7Ijoi4oS0Iiwib3JkZjsiOiLCqiIsb3JkZjoiwqoiLCJvcmRtOyI6IsK6IixvcmRtOiLCuiIsIm9yaWdvZjsiOiLiirYiLCJvcm9yOyI6IuKpliIsIm9yc2xvcGU7Ijoi4qmXIiwib3J2OyI6IuKpmyIsIm9TOyI6IuKTiCIsIk9zY3I7Ijoi8J2SqiIsIm9zY3I7Ijoi4oS0IiwiT3NsYXNoOyI6IsOYIixPc2xhc2g6IsOYIiwib3NsYXNoOyI6IsO4Iixvc2xhc2g6IsO4Iiwib3NvbDsiOiLiipgiLCJPdGlsZGU7Ijoiw5UiLE90aWxkZToiw5UiLCJvdGlsZGU7Ijoiw7UiLG90aWxkZToiw7UiLCJPdGltZXM7Ijoi4qi3Iiwib3RpbWVzOyI6IuKKlyIsIm90aW1lc2FzOyI6IuKotiIsIk91bWw7Ijoiw5YiLE91bWw6IsOWIiwib3VtbDsiOiLDtiIsb3VtbDoiw7YiLCJvdmJhcjsiOiLijL0iLCJPdmVyQmFyOyI6IuKAviIsIk92ZXJCcmFjZTsiOiLij54iLCJPdmVyQnJhY2tldDsiOiLijrQiLCJPdmVyUGFyZW50aGVzaXM7Ijoi4o+cIiwicGFyOyI6IuKIpSIsInBhcmE7IjoiwrYiLHBhcmE6IsK2IiwicGFyYWxsZWw7Ijoi4oilIiwicGFyc2ltOyI6IuKrsyIsInBhcnNsOyI6IuKrvSIsInBhcnQ7Ijoi4oiCIiwiUGFydGlhbEQ7Ijoi4oiCIiwiUGN5OyI6ItCfIiwicGN5OyI6ItC/IiwicGVyY250OyI6IiUiLCJwZXJpb2Q7IjoiLiIsInBlcm1pbDsiOiLigLAiLCJwZXJwOyI6IuKKpSIsInBlcnRlbms7Ijoi4oCxIiwiUGZyOyI6IvCdlJMiLCJwZnI7Ijoi8J2UrSIsIlBoaTsiOiLOpiIsInBoaTsiOiLPhiIsInBoaXY7Ijoiz5UiLCJwaG1tYXQ7Ijoi4oSzIiwicGhvbmU7Ijoi4piOIiwiUGk7IjoizqAiLCJwaTsiOiLPgCIsInBpdGNoZm9yazsiOiLii5QiLCJwaXY7Ijoiz5YiLCJwbGFuY2s7Ijoi4oSPIiwicGxhbmNraDsiOiLihI4iLCJwbGFua3Y7Ijoi4oSPIiwicGx1czsiOiIrIiwicGx1c2FjaXI7Ijoi4qijIiwicGx1c2I7Ijoi4oqeIiwicGx1c2NpcjsiOiLiqKIiLCJwbHVzZG87Ijoi4oiUIiwicGx1c2R1OyI6IuKopSIsInBsdXNlOyI6IuKpsiIsIlBsdXNNaW51czsiOiLCsSIsInBsdXNtbjsiOiLCsSIscGx1c21uOiLCsSIsInBsdXNzaW07Ijoi4qimIiwicGx1c3R3bzsiOiLiqKciLCJwbTsiOiLCsSIsIlBvaW5jYXJlcGxhbmU7Ijoi4oSMIiwicG9pbnRpbnQ7Ijoi4qiVIiwiUG9wZjsiOiLihJkiLCJwb3BmOyI6IvCdlaEiLCJwb3VuZDsiOiLCoyIscG91bmQ6IsKjIiwiUHI7Ijoi4qq7IiwicHI7Ijoi4om6IiwicHJhcDsiOiLiqrciLCJwcmN1ZTsiOiLiibwiLCJwckU7Ijoi4qqzIiwicHJlOyI6IuKqryIsInByZWM7Ijoi4om6IiwicHJlY2FwcHJveDsiOiLiqrciLCJwcmVjY3VybHllcTsiOiLiibwiLCJQcmVjZWRlczsiOiLiiboiLCJQcmVjZWRlc0VxdWFsOyI6IuKqryIsIlByZWNlZGVzU2xhbnRFcXVhbDsiOiLiibwiLCJQcmVjZWRlc1RpbGRlOyI6IuKJviIsInByZWNlcTsiOiLiqq8iLCJwcmVjbmFwcHJveDsiOiLiqrkiLCJwcmVjbmVxcTsiOiLiqrUiLCJwcmVjbnNpbTsiOiLii6giLCJwcmVjc2ltOyI6IuKJviIsIlByaW1lOyI6IuKAsyIsInByaW1lOyI6IuKAsiIsInByaW1lczsiOiLihJkiLCJwcm5hcDsiOiLiqrkiLCJwcm5FOyI6IuKqtSIsInBybnNpbTsiOiLii6giLCJwcm9kOyI6IuKIjyIsIlByb2R1Y3Q7Ijoi4oiPIiwicHJvZmFsYXI7Ijoi4oyuIiwicHJvZmxpbmU7Ijoi4oySIiwicHJvZnN1cmY7Ijoi4oyTIiwicHJvcDsiOiLiiJ0iLCJQcm9wb3J0aW9uOyI6IuKItyIsIlByb3BvcnRpb25hbDsiOiLiiJ0iLCJwcm9wdG87Ijoi4oidIiwicHJzaW07Ijoi4om+IiwicHJ1cmVsOyI6IuKKsCIsIlBzY3I7Ijoi8J2SqyIsInBzY3I7Ijoi8J2ThSIsIlBzaTsiOiLOqCIsInBzaTsiOiLPiCIsInB1bmNzcDsiOiLigIgiLCJRZnI7Ijoi8J2UlCIsInFmcjsiOiLwnZSuIiwicWludDsiOiLiqIwiLCJRb3BmOyI6IuKEmiIsInFvcGY7Ijoi8J2VoiIsInFwcmltZTsiOiLigZciLCJRc2NyOyI6IvCdkqwiLCJxc2NyOyI6IvCdk4YiLCJxdWF0ZXJuaW9uczsiOiLihI0iLCJxdWF0aW50OyI6IuKoliIsInF1ZXN0OyI6Ij8iLCJxdWVzdGVxOyI6IuKJnyIsIlFVT1Q7IjonIicsUVVPVDonIicsInF1b3Q7IjonIicscXVvdDonIicsInJBYXJyOyI6IuKHmyIsInJhY2U7Ijoi4oi9zLEiLCJSYWN1dGU7IjoixZQiLCJyYWN1dGU7IjoixZUiLCJyYWRpYzsiOiLiiJoiLCJyYWVtcHR5djsiOiLiprMiLCJSYW5nOyI6IuKfqyIsInJhbmc7Ijoi4p+pIiwicmFuZ2Q7Ijoi4qaSIiwicmFuZ2U7Ijoi4qalIiwicmFuZ2xlOyI6IuKfqSIsInJhcXVvOyI6IsK7IixyYXF1bzoiwrsiLCJSYXJyOyI6IuKGoCIsInJBcnI7Ijoi4oeSIiwicmFycjsiOiLihpIiLCJyYXJyYXA7Ijoi4qW1IiwicmFycmI7Ijoi4oelIiwicmFycmJmczsiOiLipKAiLCJyYXJyYzsiOiLipLMiLCJyYXJyZnM7Ijoi4qSeIiwicmFycmhrOyI6IuKGqiIsInJhcnJscDsiOiLihqwiLCJyYXJycGw7Ijoi4qWFIiwicmFycnNpbTsiOiLipbQiLCJSYXJydGw7Ijoi4qSWIiwicmFycnRsOyI6IuKGoyIsInJhcnJ3OyI6IuKGnSIsInJBdGFpbDsiOiLipJwiLCJyYXRhaWw7Ijoi4qSaIiwicmF0aW87Ijoi4oi2IiwicmF0aW9uYWxzOyI6IuKEmiIsIlJCYXJyOyI6IuKkkCIsInJCYXJyOyI6IuKkjyIsInJiYXJyOyI6IuKkjSIsInJiYnJrOyI6IuKdsyIsInJicmFjZTsiOiJ9IiwicmJyYWNrOyI6Il0iLCJyYnJrZTsiOiLipowiLCJyYnJrc2xkOyI6IuKmjiIsInJicmtzbHU7Ijoi4qaQIiwiUmNhcm9uOyI6IsWYIiwicmNhcm9uOyI6IsWZIiwiUmNlZGlsOyI6IsWWIiwicmNlZGlsOyI6IsWXIiwicmNlaWw7Ijoi4oyJIiwicmN1YjsiOiJ9IiwiUmN5OyI6ItCgIiwicmN5OyI6ItGAIiwicmRjYTsiOiLipLciLCJyZGxkaGFyOyI6IuKlqSIsInJkcXVvOyI6IuKAnSIsInJkcXVvcjsiOiLigJ0iLCJyZHNoOyI6IuKGsyIsIlJlOyI6IuKEnCIsInJlYWw7Ijoi4oScIiwicmVhbGluZTsiOiLihJsiLCJyZWFscGFydDsiOiLihJwiLCJyZWFsczsiOiLihJ0iLCJyZWN0OyI6IuKWrSIsIlJFRzsiOiLCriIsUkVHOiLCriIsInJlZzsiOiLCriIscmVnOiLCriIsIlJldmVyc2VFbGVtZW50OyI6IuKIiyIsIlJldmVyc2VFcXVpbGlicml1bTsiOiLih4siLCJSZXZlcnNlVXBFcXVpbGlicml1bTsiOiLipa8iLCJyZmlzaHQ7Ijoi4qW9IiwicmZsb29yOyI6IuKMiyIsIlJmcjsiOiLihJwiLCJyZnI7Ijoi8J2UryIsInJIYXI7Ijoi4qWkIiwicmhhcmQ7Ijoi4oeBIiwicmhhcnU7Ijoi4oeAIiwicmhhcnVsOyI6IuKlrCIsIlJobzsiOiLOoSIsInJobzsiOiLPgSIsInJob3Y7Ijoiz7EiLCJSaWdodEFuZ2xlQnJhY2tldDsiOiLin6kiLCJSaWdodEFycm93OyI6IuKGkiIsIlJpZ2h0YXJyb3c7Ijoi4oeSIiwicmlnaHRhcnJvdzsiOiLihpIiLCJSaWdodEFycm93QmFyOyI6IuKHpSIsIlJpZ2h0QXJyb3dMZWZ0QXJyb3c7Ijoi4oeEIiwicmlnaHRhcnJvd3RhaWw7Ijoi4oajIiwiUmlnaHRDZWlsaW5nOyI6IuKMiSIsIlJpZ2h0RG91YmxlQnJhY2tldDsiOiLin6ciLCJSaWdodERvd25UZWVWZWN0b3I7Ijoi4qWdIiwiUmlnaHREb3duVmVjdG9yOyI6IuKHgiIsIlJpZ2h0RG93blZlY3RvckJhcjsiOiLipZUiLCJSaWdodEZsb29yOyI6IuKMiyIsInJpZ2h0aGFycG9vbmRvd247Ijoi4oeBIiwicmlnaHRoYXJwb29udXA7Ijoi4oeAIiwicmlnaHRsZWZ0YXJyb3dzOyI6IuKHhCIsInJpZ2h0bGVmdGhhcnBvb25zOyI6IuKHjCIsInJpZ2h0cmlnaHRhcnJvd3M7Ijoi4oeJIiwicmlnaHRzcXVpZ2Fycm93OyI6IuKGnSIsIlJpZ2h0VGVlOyI6IuKKoiIsIlJpZ2h0VGVlQXJyb3c7Ijoi4oamIiwiUmlnaHRUZWVWZWN0b3I7Ijoi4qWbIiwicmlnaHR0aHJlZXRpbWVzOyI6IuKLjCIsIlJpZ2h0VHJpYW5nbGU7Ijoi4oqzIiwiUmlnaHRUcmlhbmdsZUJhcjsiOiLip5AiLCJSaWdodFRyaWFuZ2xlRXF1YWw7Ijoi4oq1IiwiUmlnaHRVcERvd25WZWN0b3I7Ijoi4qWPIiwiUmlnaHRVcFRlZVZlY3RvcjsiOiLipZwiLCJSaWdodFVwVmVjdG9yOyI6IuKGviIsIlJpZ2h0VXBWZWN0b3JCYXI7Ijoi4qWUIiwiUmlnaHRWZWN0b3I7Ijoi4oeAIiwiUmlnaHRWZWN0b3JCYXI7Ijoi4qWTIiwicmluZzsiOiLLmiIsInJpc2luZ2RvdHNlcTsiOiLiiZMiLCJybGFycjsiOiLih4QiLCJybGhhcjsiOiLih4wiLCJybG07Ijoi4oCPIiwicm1vdXN0OyI6IuKOsSIsInJtb3VzdGFjaGU7Ijoi4o6xIiwicm5taWQ7Ijoi4quuIiwicm9hbmc7Ijoi4p+tIiwicm9hcnI7Ijoi4oe+Iiwicm9icms7Ijoi4p+nIiwicm9wYXI7Ijoi4qaGIiwiUm9wZjsiOiLihJ0iLCJyb3BmOyI6IvCdlaMiLCJyb3BsdXM7Ijoi4qiuIiwicm90aW1lczsiOiLiqLUiLCJSb3VuZEltcGxpZXM7Ijoi4qWwIiwicnBhcjsiOiIpIiwicnBhcmd0OyI6IuKmlCIsInJwcG9saW50OyI6IuKokiIsInJyYXJyOyI6IuKHiSIsIlJyaWdodGFycm93OyI6IuKHmyIsInJzYXF1bzsiOiLigLoiLCJSc2NyOyI6IuKEmyIsInJzY3I7Ijoi8J2ThyIsIlJzaDsiOiLihrEiLCJyc2g7Ijoi4oaxIiwicnNxYjsiOiJdIiwicnNxdW87Ijoi4oCZIiwicnNxdW9yOyI6IuKAmSIsInJ0aHJlZTsiOiLii4wiLCJydGltZXM7Ijoi4ouKIiwicnRyaTsiOiLilrkiLCJydHJpZTsiOiLiirUiLCJydHJpZjsiOiLilrgiLCJydHJpbHRyaTsiOiLip44iLCJSdWxlRGVsYXllZDsiOiLip7QiLCJydWx1aGFyOyI6IuKlqCIsInJ4OyI6IuKEniIsIlNhY3V0ZTsiOiLFmiIsInNhY3V0ZTsiOiLFmyIsInNicXVvOyI6IuKAmiIsIlNjOyI6IuKqvCIsInNjOyI6IuKJuyIsInNjYXA7Ijoi4qq4IiwiU2Nhcm9uOyI6IsWgIiwic2Nhcm9uOyI6IsWhIiwic2NjdWU7Ijoi4om9Iiwic2NFOyI6IuKqtCIsInNjZTsiOiLiqrAiLCJTY2VkaWw7IjoixZ4iLCJzY2VkaWw7IjoixZ8iLCJTY2lyYzsiOiLFnCIsInNjaXJjOyI6IsWdIiwic2NuYXA7Ijoi4qq6Iiwic2NuRTsiOiLiqrYiLCJzY25zaW07Ijoi4oupIiwic2Nwb2xpbnQ7Ijoi4qiTIiwic2NzaW07Ijoi4om/IiwiU2N5OyI6ItChIiwic2N5OyI6ItGBIiwic2RvdDsiOiLii4UiLCJzZG90YjsiOiLiiqEiLCJzZG90ZTsiOiLiqaYiLCJzZWFyaGs7Ijoi4qSlIiwic2VBcnI7Ijoi4oeYIiwic2VhcnI7Ijoi4oaYIiwic2VhcnJvdzsiOiLihpgiLCJzZWN0OyI6IsKnIixzZWN0OiLCpyIsInNlbWk7IjoiOyIsInNlc3dhcjsiOiLipKkiLCJzZXRtaW51czsiOiLiiJYiLCJzZXRtbjsiOiLiiJYiLCJzZXh0OyI6IuKctiIsIlNmcjsiOiLwnZSWIiwic2ZyOyI6IvCdlLAiLCJzZnJvd247Ijoi4oyiIiwic2hhcnA7Ijoi4pmvIiwiU0hDSGN5OyI6ItCpIiwic2hjaGN5OyI6ItGJIiwiU0hjeTsiOiLQqCIsInNoY3k7Ijoi0YgiLCJTaG9ydERvd25BcnJvdzsiOiLihpMiLCJTaG9ydExlZnRBcnJvdzsiOiLihpAiLCJzaG9ydG1pZDsiOiLiiKMiLCJzaG9ydHBhcmFsbGVsOyI6IuKIpSIsIlNob3J0UmlnaHRBcnJvdzsiOiLihpIiLCJTaG9ydFVwQXJyb3c7Ijoi4oaRIiwic2h5OyI6IsKtIixzaHk6IsKtIiwiU2lnbWE7IjoizqMiLCJzaWdtYTsiOiLPgyIsInNpZ21hZjsiOiLPgiIsInNpZ21hdjsiOiLPgiIsInNpbTsiOiLiiLwiLCJzaW1kb3Q7Ijoi4qmqIiwic2ltZTsiOiLiiYMiLCJzaW1lcTsiOiLiiYMiLCJzaW1nOyI6IuKqniIsInNpbWdFOyI6IuKqoCIsInNpbWw7Ijoi4qqdIiwic2ltbEU7Ijoi4qqfIiwic2ltbmU7Ijoi4omGIiwic2ltcGx1czsiOiLiqKQiLCJzaW1yYXJyOyI6IuKlsiIsInNsYXJyOyI6IuKGkCIsIlNtYWxsQ2lyY2xlOyI6IuKImCIsInNtYWxsc2V0bWludXM7Ijoi4oiWIiwic21hc2hwOyI6IuKosyIsInNtZXBhcnNsOyI6IuKnpCIsInNtaWQ7Ijoi4oijIiwic21pbGU7Ijoi4oyjIiwic210OyI6IuKqqiIsInNtdGU7Ijoi4qqsIiwic210ZXM7Ijoi4qqs77iAIiwiU09GVGN5OyI6ItCsIiwic29mdGN5OyI6ItGMIiwic29sOyI6Ii8iLCJzb2xiOyI6IuKnhCIsInNvbGJhcjsiOiLijL8iLCJTb3BmOyI6IvCdlYoiLCJzb3BmOyI6IvCdlaQiLCJzcGFkZXM7Ijoi4pmgIiwic3BhZGVzdWl0OyI6IuKZoCIsInNwYXI7Ijoi4oilIiwic3FjYXA7Ijoi4oqTIiwic3FjYXBzOyI6IuKKk++4gCIsInNxY3VwOyI6IuKKlCIsInNxY3VwczsiOiLiipTvuIAiLCJTcXJ0OyI6IuKImiIsInNxc3ViOyI6IuKKjyIsInNxc3ViZTsiOiLiipEiLCJzcXN1YnNldDsiOiLiio8iLCJzcXN1YnNldGVxOyI6IuKKkSIsInNxc3VwOyI6IuKKkCIsInNxc3VwZTsiOiLiipIiLCJzcXN1cHNldDsiOiLiipAiLCJzcXN1cHNldGVxOyI6IuKKkiIsInNxdTsiOiLilqEiLCJTcXVhcmU7Ijoi4pahIiwic3F1YXJlOyI6IuKWoSIsIlNxdWFyZUludGVyc2VjdGlvbjsiOiLiipMiLCJTcXVhcmVTdWJzZXQ7Ijoi4oqPIiwiU3F1YXJlU3Vic2V0RXF1YWw7Ijoi4oqRIiwiU3F1YXJlU3VwZXJzZXQ7Ijoi4oqQIiwiU3F1YXJlU3VwZXJzZXRFcXVhbDsiOiLiipIiLCJTcXVhcmVVbmlvbjsiOiLiipQiLCJzcXVhcmY7Ijoi4paqIiwic3F1ZjsiOiLilqoiLCJzcmFycjsiOiLihpIiLCJTc2NyOyI6IvCdkq4iLCJzc2NyOyI6IvCdk4giLCJzc2V0bW47Ijoi4oiWIiwic3NtaWxlOyI6IuKMoyIsInNzdGFyZjsiOiLii4YiLCJTdGFyOyI6IuKLhiIsInN0YXI7Ijoi4piGIiwic3RhcmY7Ijoi4piFIiwic3RyYWlnaHRlcHNpbG9uOyI6Is+1Iiwic3RyYWlnaHRwaGk7Ijoiz5UiLCJzdHJuczsiOiLCryIsIlN1YjsiOiLii5AiLCJzdWI7Ijoi4oqCIiwic3ViZG90OyI6IuKqvSIsInN1YkU7Ijoi4quFIiwic3ViZTsiOiLiioYiLCJzdWJlZG90OyI6IuKrgyIsInN1Ym11bHQ7Ijoi4quBIiwic3VibkU7Ijoi4quLIiwic3VibmU7Ijoi4oqKIiwic3VicGx1czsiOiLiqr8iLCJzdWJyYXJyOyI6IuKluSIsIlN1YnNldDsiOiLii5AiLCJzdWJzZXQ7Ijoi4oqCIiwic3Vic2V0ZXE7Ijoi4oqGIiwic3Vic2V0ZXFxOyI6IuKrhSIsIlN1YnNldEVxdWFsOyI6IuKKhiIsInN1YnNldG5lcTsiOiLiiooiLCJzdWJzZXRuZXFxOyI6IuKriyIsInN1YnNpbTsiOiLiq4ciLCJzdWJzdWI7Ijoi4quVIiwic3Vic3VwOyI6IuKrkyIsInN1Y2M7Ijoi4om7Iiwic3VjY2FwcHJveDsiOiLiqrgiLCJzdWNjY3VybHllcTsiOiLiib0iLCJTdWNjZWVkczsiOiLiibsiLCJTdWNjZWVkc0VxdWFsOyI6IuKqsCIsIlN1Y2NlZWRzU2xhbnRFcXVhbDsiOiLiib0iLCJTdWNjZWVkc1RpbGRlOyI6IuKJvyIsInN1Y2NlcTsiOiLiqrAiLCJzdWNjbmFwcHJveDsiOiLiqroiLCJzdWNjbmVxcTsiOiLiqrYiLCJzdWNjbnNpbTsiOiLii6kiLCJzdWNjc2ltOyI6IuKJvyIsIlN1Y2hUaGF0OyI6IuKIiyIsIlN1bTsiOiLiiJEiLCJzdW07Ijoi4oiRIiwic3VuZzsiOiLimaoiLCJTdXA7Ijoi4ouRIiwic3VwOyI6IuKKgyIsInN1cDE7IjoiwrkiLHN1cDE6IsK5Iiwic3VwMjsiOiLCsiIsc3VwMjoiwrIiLCJzdXAzOyI6IsKzIixzdXAzOiLCsyIsInN1cGRvdDsiOiLiqr4iLCJzdXBkc3ViOyI6IuKrmCIsInN1cEU7Ijoi4quGIiwic3VwZTsiOiLiiociLCJzdXBlZG90OyI6IuKrhCIsIlN1cGVyc2V0OyI6IuKKgyIsIlN1cGVyc2V0RXF1YWw7Ijoi4oqHIiwic3VwaHNvbDsiOiLin4kiLCJzdXBoc3ViOyI6IuKrlyIsInN1cGxhcnI7Ijoi4qW7Iiwic3VwbXVsdDsiOiLiq4IiLCJzdXBuRTsiOiLiq4wiLCJzdXBuZTsiOiLiiosiLCJzdXBwbHVzOyI6IuKrgCIsIlN1cHNldDsiOiLii5EiLCJzdXBzZXQ7Ijoi4oqDIiwic3Vwc2V0ZXE7Ijoi4oqHIiwic3Vwc2V0ZXFxOyI6IuKrhiIsInN1cHNldG5lcTsiOiLiiosiLCJzdXBzZXRuZXFxOyI6IuKrjCIsInN1cHNpbTsiOiLiq4giLCJzdXBzdWI7Ijoi4quUIiwic3Vwc3VwOyI6IuKrliIsInN3YXJoazsiOiLipKYiLCJzd0FycjsiOiLih5kiLCJzd2FycjsiOiLihpkiLCJzd2Fycm93OyI6IuKGmSIsInN3bndhcjsiOiLipKoiLCJzemxpZzsiOiLDnyIsc3psaWc6IsOfIiwiVGFiOyI6Ilx0IiwidGFyZ2V0OyI6IuKMliIsIlRhdTsiOiLOpCIsInRhdTsiOiLPhCIsInRicms7Ijoi4o60IiwiVGNhcm9uOyI6IsWkIiwidGNhcm9uOyI6IsWlIiwiVGNlZGlsOyI6IsWiIiwidGNlZGlsOyI6IsWjIiwiVGN5OyI6ItCiIiwidGN5OyI6ItGCIiwidGRvdDsiOiLig5siLCJ0ZWxyZWM7Ijoi4oyVIiwiVGZyOyI6IvCdlJciLCJ0ZnI7Ijoi8J2UsSIsInRoZXJlNDsiOiLiiLQiLCJUaGVyZWZvcmU7Ijoi4oi0IiwidGhlcmVmb3JlOyI6IuKItCIsIlRoZXRhOyI6Is6YIiwidGhldGE7IjoizrgiLCJ0aGV0YXN5bTsiOiLPkSIsInRoZXRhdjsiOiLPkSIsInRoaWNrYXBwcm94OyI6IuKJiCIsInRoaWNrc2ltOyI6IuKIvCIsIlRoaWNrU3BhY2U7Ijoi4oGf4oCKIiwidGhpbnNwOyI6IuKAiSIsIlRoaW5TcGFjZTsiOiLigIkiLCJ0aGthcDsiOiLiiYgiLCJ0aGtzaW07Ijoi4oi8IiwiVEhPUk47Ijoiw54iLFRIT1JOOiLDniIsInRob3JuOyI6IsO+Iix0aG9ybjoiw74iLCJUaWxkZTsiOiLiiLwiLCJ0aWxkZTsiOiLLnCIsIlRpbGRlRXF1YWw7Ijoi4omDIiwiVGlsZGVGdWxsRXF1YWw7Ijoi4omFIiwiVGlsZGVUaWxkZTsiOiLiiYgiLCJ0aW1lczsiOiLDlyIsdGltZXM6IsOXIiwidGltZXNiOyI6IuKKoCIsInRpbWVzYmFyOyI6IuKosSIsInRpbWVzZDsiOiLiqLAiLCJ0aW50OyI6IuKIrSIsInRvZWE7Ijoi4qSoIiwidG9wOyI6IuKKpCIsInRvcGJvdDsiOiLijLYiLCJ0b3BjaXI7Ijoi4quxIiwiVG9wZjsiOiLwnZWLIiwidG9wZjsiOiLwnZWlIiwidG9wZm9yazsiOiLiq5oiLCJ0b3NhOyI6IuKkqSIsInRwcmltZTsiOiLigLQiLCJUUkFERTsiOiLihKIiLCJ0cmFkZTsiOiLihKIiLCJ0cmlhbmdsZTsiOiLilrUiLCJ0cmlhbmdsZWRvd247Ijoi4pa/IiwidHJpYW5nbGVsZWZ0OyI6IuKXgyIsInRyaWFuZ2xlbGVmdGVxOyI6IuKKtCIsInRyaWFuZ2xlcTsiOiLiiZwiLCJ0cmlhbmdsZXJpZ2h0OyI6IuKWuSIsInRyaWFuZ2xlcmlnaHRlcTsiOiLiirUiLCJ0cmlkb3Q7Ijoi4pesIiwidHJpZTsiOiLiiZwiLCJ0cmltaW51czsiOiLiqLoiLCJUcmlwbGVEb3Q7Ijoi4oObIiwidHJpcGx1czsiOiLiqLkiLCJ0cmlzYjsiOiLip40iLCJ0cml0aW1lOyI6IuKouyIsInRycGV6aXVtOyI6IuKPoiIsIlRzY3I7Ijoi8J2SryIsInRzY3I7Ijoi8J2TiSIsIlRTY3k7Ijoi0KYiLCJ0c2N5OyI6ItGGIiwiVFNIY3k7Ijoi0IsiLCJ0c2hjeTsiOiLRmyIsIlRzdHJvazsiOiLFpiIsInRzdHJvazsiOiLFpyIsInR3aXh0OyI6IuKJrCIsInR3b2hlYWRsZWZ0YXJyb3c7Ijoi4oaeIiwidHdvaGVhZHJpZ2h0YXJyb3c7Ijoi4oagIiwiVWFjdXRlOyI6IsOaIixVYWN1dGU6IsOaIiwidWFjdXRlOyI6IsO6Iix1YWN1dGU6IsO6IiwiVWFycjsiOiLihp8iLCJ1QXJyOyI6IuKHkSIsInVhcnI7Ijoi4oaRIiwiVWFycm9jaXI7Ijoi4qWJIiwiVWJyY3k7Ijoi0I4iLCJ1YnJjeTsiOiLRniIsIlVicmV2ZTsiOiLFrCIsInVicmV2ZTsiOiLFrSIsIlVjaXJjOyI6IsObIixVY2lyYzoiw5siLCJ1Y2lyYzsiOiLDuyIsdWNpcmM6IsO7IiwiVWN5OyI6ItCjIiwidWN5OyI6ItGDIiwidWRhcnI7Ijoi4oeFIiwiVWRibGFjOyI6IsWwIiwidWRibGFjOyI6IsWxIiwidWRoYXI7Ijoi4qWuIiwidWZpc2h0OyI6IuKlviIsIlVmcjsiOiLwnZSYIiwidWZyOyI6IvCdlLIiLCJVZ3JhdmU7Ijoiw5kiLFVncmF2ZToiw5kiLCJ1Z3JhdmU7Ijoiw7kiLHVncmF2ZToiw7kiLCJ1SGFyOyI6IuKloyIsInVoYXJsOyI6IuKGvyIsInVoYXJyOyI6IuKGviIsInVoYmxrOyI6IuKWgCIsInVsY29ybjsiOiLijJwiLCJ1bGNvcm5lcjsiOiLijJwiLCJ1bGNyb3A7Ijoi4oyPIiwidWx0cmk7Ijoi4pe4IiwiVW1hY3I7IjoixaoiLCJ1bWFjcjsiOiLFqyIsInVtbDsiOiLCqCIsdW1sOiLCqCIsIlVuZGVyQmFyOyI6Il8iLCJVbmRlckJyYWNlOyI6IuKPnyIsIlVuZGVyQnJhY2tldDsiOiLijrUiLCJVbmRlclBhcmVudGhlc2lzOyI6IuKPnSIsIlVuaW9uOyI6IuKLgyIsIlVuaW9uUGx1czsiOiLiio4iLCJVb2dvbjsiOiLFsiIsInVvZ29uOyI6IsWzIiwiVW9wZjsiOiLwnZWMIiwidW9wZjsiOiLwnZWmIiwiVXBBcnJvdzsiOiLihpEiLCJVcGFycm93OyI6IuKHkSIsInVwYXJyb3c7Ijoi4oaRIiwiVXBBcnJvd0JhcjsiOiLipJIiLCJVcEFycm93RG93bkFycm93OyI6IuKHhSIsIlVwRG93bkFycm93OyI6IuKGlSIsIlVwZG93bmFycm93OyI6IuKHlSIsInVwZG93bmFycm93OyI6IuKGlSIsIlVwRXF1aWxpYnJpdW07Ijoi4qWuIiwidXBoYXJwb29ubGVmdDsiOiLihr8iLCJ1cGhhcnBvb25yaWdodDsiOiLihr4iLCJ1cGx1czsiOiLiio4iLCJVcHBlckxlZnRBcnJvdzsiOiLihpYiLCJVcHBlclJpZ2h0QXJyb3c7Ijoi4oaXIiwiVXBzaTsiOiLPkiIsInVwc2k7Ijoiz4UiLCJ1cHNpaDsiOiLPkiIsIlVwc2lsb247IjoizqUiLCJ1cHNpbG9uOyI6Is+FIiwiVXBUZWU7Ijoi4oqlIiwiVXBUZWVBcnJvdzsiOiLihqUiLCJ1cHVwYXJyb3dzOyI6IuKHiCIsInVyY29ybjsiOiLijJ0iLCJ1cmNvcm5lcjsiOiLijJ0iLCJ1cmNyb3A7Ijoi4oyOIiwiVXJpbmc7Ijoixa4iLCJ1cmluZzsiOiLFryIsInVydHJpOyI6IuKXuSIsIlVzY3I7Ijoi8J2SsCIsInVzY3I7Ijoi8J2TiiIsInV0ZG90OyI6IuKLsCIsIlV0aWxkZTsiOiLFqCIsInV0aWxkZTsiOiLFqSIsInV0cmk7Ijoi4pa1IiwidXRyaWY7Ijoi4pa0IiwidXVhcnI7Ijoi4oeIIiwiVXVtbDsiOiLDnCIsVXVtbDoiw5wiLCJ1dW1sOyI6IsO8Iix1dW1sOiLDvCIsInV3YW5nbGU7Ijoi4qanIiwidmFuZ3J0OyI6IuKmnCIsInZhcmVwc2lsb247Ijoiz7UiLCJ2YXJrYXBwYTsiOiLPsCIsInZhcm5vdGhpbmc7Ijoi4oiFIiwidmFycGhpOyI6Is+VIiwidmFycGk7Ijoiz5YiLCJ2YXJwcm9wdG87Ijoi4oidIiwidkFycjsiOiLih5UiLCJ2YXJyOyI6IuKGlSIsInZhcnJobzsiOiLPsSIsInZhcnNpZ21hOyI6Is+CIiwidmFyc3Vic2V0bmVxOyI6IuKKiu+4gCIsInZhcnN1YnNldG5lcXE7Ijoi4quL77iAIiwidmFyc3Vwc2V0bmVxOyI6IuKKi++4gCIsInZhcnN1cHNldG5lcXE7Ijoi4quM77iAIiwidmFydGhldGE7Ijoiz5EiLCJ2YXJ0cmlhbmdsZWxlZnQ7Ijoi4oqyIiwidmFydHJpYW5nbGVyaWdodDsiOiLiirMiLCJWYmFyOyI6IuKrqyIsInZCYXI7Ijoi4quoIiwidkJhcnY7Ijoi4qupIiwiVmN5OyI6ItCSIiwidmN5OyI6ItCyIiwiVkRhc2g7Ijoi4oqrIiwiVmRhc2g7Ijoi4oqpIiwidkRhc2g7Ijoi4oqoIiwidmRhc2g7Ijoi4oqiIiwiVmRhc2hsOyI6IuKrpiIsIlZlZTsiOiLii4EiLCJ2ZWU7Ijoi4oioIiwidmVlYmFyOyI6IuKKuyIsInZlZWVxOyI6IuKJmiIsInZlbGxpcDsiOiLii64iLCJWZXJiYXI7Ijoi4oCWIiwidmVyYmFyOyI6InwiLCJWZXJ0OyI6IuKAliIsInZlcnQ7IjoifCIsIlZlcnRpY2FsQmFyOyI6IuKIoyIsIlZlcnRpY2FsTGluZTsiOiJ8IiwiVmVydGljYWxTZXBhcmF0b3I7Ijoi4p2YIiwiVmVydGljYWxUaWxkZTsiOiLiiYAiLCJWZXJ5VGhpblNwYWNlOyI6IuKAiiIsIlZmcjsiOiLwnZSZIiwidmZyOyI6IvCdlLMiLCJ2bHRyaTsiOiLiirIiLCJ2bnN1YjsiOiLiioLig5IiLCJ2bnN1cDsiOiLiioPig5IiLCJWb3BmOyI6IvCdlY0iLCJ2b3BmOyI6IvCdlaciLCJ2cHJvcDsiOiLiiJ0iLCJ2cnRyaTsiOiLiirMiLCJWc2NyOyI6IvCdkrEiLCJ2c2NyOyI6IvCdk4siLCJ2c3VibkU7Ijoi4quL77iAIiwidnN1Ym5lOyI6IuKKiu+4gCIsInZzdXBuRTsiOiLiq4zvuIAiLCJ2c3VwbmU7Ijoi4oqL77iAIiwiVnZkYXNoOyI6IuKKqiIsInZ6aWd6YWc7Ijoi4qaaIiwiV2NpcmM7IjoixbQiLCJ3Y2lyYzsiOiLFtSIsIndlZGJhcjsiOiLiqZ8iLCJXZWRnZTsiOiLii4AiLCJ3ZWRnZTsiOiLiiKciLCJ3ZWRnZXE7Ijoi4omZIiwid2VpZXJwOyI6IuKEmCIsIldmcjsiOiLwnZSaIiwid2ZyOyI6IvCdlLQiLCJXb3BmOyI6IvCdlY4iLCJ3b3BmOyI6IvCdlagiLCJ3cDsiOiLihJgiLCJ3cjsiOiLiiYAiLCJ3cmVhdGg7Ijoi4omAIiwiV3NjcjsiOiLwnZKyIiwid3NjcjsiOiLwnZOMIiwieGNhcDsiOiLii4IiLCJ4Y2lyYzsiOiLil68iLCJ4Y3VwOyI6IuKLgyIsInhkdHJpOyI6IuKWvSIsIlhmcjsiOiLwnZSbIiwieGZyOyI6IvCdlLUiLCJ4aEFycjsiOiLin7oiLCJ4aGFycjsiOiLin7ciLCJYaTsiOiLOniIsInhpOyI6Is6+IiwieGxBcnI7Ijoi4p+4IiwieGxhcnI7Ijoi4p+1IiwieG1hcDsiOiLin7wiLCJ4bmlzOyI6IuKLuyIsInhvZG90OyI6IuKogCIsIlhvcGY7Ijoi8J2VjyIsInhvcGY7Ijoi8J2VqSIsInhvcGx1czsiOiLiqIEiLCJ4b3RpbWU7Ijoi4qiCIiwieHJBcnI7Ijoi4p+5IiwieHJhcnI7Ijoi4p+2IiwiWHNjcjsiOiLwnZKzIiwieHNjcjsiOiLwnZONIiwieHNxY3VwOyI6IuKohiIsInh1cGx1czsiOiLiqIQiLCJ4dXRyaTsiOiLilrMiLCJ4dmVlOyI6IuKLgSIsInh3ZWRnZTsiOiLii4AiLCJZYWN1dGU7Ijoiw50iLFlhY3V0ZToiw50iLCJ5YWN1dGU7Ijoiw70iLHlhY3V0ZToiw70iLCJZQWN5OyI6ItCvIiwieWFjeTsiOiLRjyIsIlljaXJjOyI6IsW2IiwieWNpcmM7IjoixbciLCJZY3k7Ijoi0KsiLCJ5Y3k7Ijoi0YsiLCJ5ZW47IjoiwqUiLHllbjoiwqUiLCJZZnI7Ijoi8J2UnCIsInlmcjsiOiLwnZS2IiwiWUljeTsiOiLQhyIsInlpY3k7Ijoi0ZciLCJZb3BmOyI6IvCdlZAiLCJ5b3BmOyI6IvCdlaoiLCJZc2NyOyI6IvCdkrQiLCJ5c2NyOyI6IvCdk44iLCJZVWN5OyI6ItCuIiwieXVjeTsiOiLRjiIsIll1bWw7IjoixbgiLCJ5dW1sOyI6IsO/Iix5dW1sOiLDvyIsIlphY3V0ZTsiOiLFuSIsInphY3V0ZTsiOiLFuiIsIlpjYXJvbjsiOiLFvSIsInpjYXJvbjsiOiLFviIsIlpjeTsiOiLQlyIsInpjeTsiOiLQtyIsIlpkb3Q7IjoixbsiLCJ6ZG90OyI6IsW8IiwiemVldHJmOyI6IuKEqCIsIlplcm9XaWR0aFNwYWNlOyI6IuKAiyIsIlpldGE7IjoizpYiLCJ6ZXRhOyI6Is62IiwiWmZyOyI6IuKEqCIsInpmcjsiOiLwnZS3IiwiWkhjeTsiOiLQliIsInpoY3k7Ijoi0LYiLCJ6aWdyYXJyOyI6IuKHnSIsIlpvcGY7Ijoi4oSkIiwiem9wZjsiOiLwnZWrIiwiWnNjcjsiOiLwnZK1IiwienNjcjsiOiLwnZOPIiwiendqOyI6IuKAjSIsInp3bmo7Ijoi4oCMIn07ZnVuY3Rpb24gbW8oZSx0KXtpZihlLmxlbmd0aDx0Lmxlbmd0aClyZXR1cm4hMTtmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKylpZihlW25dIT09dFtuXSlyZXR1cm4hMTtyZXR1cm4hMH1mdW5jdGlvbiBmbyhlLHQpe2Zvcih2YXIgbj0iIjt0PjA7KTE9PSgxJnQpJiYobis9ZSksZSs9ZSx0Pj4+PTE7cmV0dXJuIG59dmFyIGdvPSJhIi5jaGFyQ29kZUF0KDApLGJvPSJ6Ii5jaGFyQ29kZUF0KDApLHdvPSJBIi5jaGFyQ29kZUF0KDApLF9vPSJaIi5jaGFyQ29kZUF0KDApLHZvPSIwIi5jaGFyQ29kZUF0KDApLHlvPSI5Ii5jaGFyQ29kZUF0KDApO2Z1bmN0aW9uIFRvKGUsdCl7dmFyIG49ZS5jaGFyQ29kZUF0KHQpO3JldHVybiBnbzw9biYmbjw9Ym98fHdvPD1uJiZuPD1fb3x8dm88PW4mJm48PXlvfWZ1bmN0aW9uIGtvKGUpe3JldHVybiB2b2lkIDAhPT1lfXZhciBTbz1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSx0KXt2YXIgbj10aGlzO3RoaXMuaWQ9ZSx0aGlzLl90YWdzPVtdLHRoaXMuX3RhZ01hcD17fSx0aGlzLl92YWx1ZVNldE1hcD17fSx0aGlzLl90YWdzPXQudGFnc3x8W10sdGhpcy5fZ2xvYmFsQXR0cmlidXRlcz10Lmdsb2JhbEF0dHJpYnV0ZXN8fFtdLHRoaXMuX3RhZ3MuZm9yRWFjaCgoZnVuY3Rpb24oZSl7bi5fdGFnTWFwW2UubmFtZS50b0xvd2VyQ2FzZSgpXT1lfSkpLHQudmFsdWVTZXRzJiZ0LnZhbHVlU2V0cy5mb3JFYWNoKChmdW5jdGlvbihlKXtuLl92YWx1ZVNldE1hcFtlLm5hbWVdPWUudmFsdWVzfSkpfXJldHVybiBlLnByb3RvdHlwZS5pc0FwcGxpY2FibGU9ZnVuY3Rpb24oKXtyZXR1cm4hMH0sZS5wcm90b3R5cGUuZ2V0SWQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pZH0sZS5wcm90b3R5cGUucHJvdmlkZVRhZ3M9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fdGFnc30sZS5wcm90b3R5cGUucHJvdmlkZUF0dHJpYnV0ZXM9ZnVuY3Rpb24oZSl7dmFyIHQ9W10sbj1mdW5jdGlvbihlKXt0LnB1c2goZSl9LHI9dGhpcy5fdGFnTWFwW2UudG9Mb3dlckNhc2UoKV07cmV0dXJuIHImJnIuYXR0cmlidXRlcy5mb3JFYWNoKG4pLHRoaXMuX2dsb2JhbEF0dHJpYnV0ZXMuZm9yRWFjaChuKSx0fSxlLnByb3RvdHlwZS5wcm92aWRlVmFsdWVzPWZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcyxyPVtdO3Q9dC50b0xvd2VyQ2FzZSgpO3ZhciBpPWZ1bmN0aW9uKGUpe2UuZm9yRWFjaCgoZnVuY3Rpb24oZSl7ZS5uYW1lLnRvTG93ZXJDYXNlKCk9PT10JiYoZS52YWx1ZXMmJmUudmFsdWVzLmZvckVhY2goKGZ1bmN0aW9uKGUpe3IucHVzaChlKX0pKSxlLnZhbHVlU2V0JiZuLl92YWx1ZVNldE1hcFtlLnZhbHVlU2V0XSYmbi5fdmFsdWVTZXRNYXBbZS52YWx1ZVNldF0uZm9yRWFjaCgoZnVuY3Rpb24oZSl7ci5wdXNoKGUpfSkpKX0pKX0sYT10aGlzLl90YWdNYXBbZS50b0xvd2VyQ2FzZSgpXTtyZXR1cm4gYSYmaShhLmF0dHJpYnV0ZXMpLGkodGhpcy5fZ2xvYmFsQXR0cmlidXRlcykscn0sZX0oKTtmdW5jdGlvbiBDbyhlLHQsbil7dm9pZCAwPT09dCYmKHQ9e30pO3ZhciByPXtraW5kOm4/Im1hcmtkb3duIjoicGxhaW50ZXh0Iix2YWx1ZToiIn07aWYoZS5kZXNjcmlwdGlvbiYmITEhPT10LmRvY3VtZW50YXRpb24pe3ZhciBpPWZ1bmN0aW9uKGUpe2lmKGUpcmV0dXJuInN0cmluZyI9PXR5cGVvZiBlP3traW5kOiJtYXJrZG93biIsdmFsdWU6ZX06e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTplLnZhbHVlfX0oZS5kZXNjcmlwdGlvbik7aSYmKHIudmFsdWUrPWkudmFsdWUpfWlmKGUucmVmZXJlbmNlcyYmZS5yZWZlcmVuY2VzLmxlbmd0aD4wJiYhMSE9PXQucmVmZXJlbmNlcyYmKHIudmFsdWUubGVuZ3RoJiYoci52YWx1ZSs9IlxuXG4iKSxyLnZhbHVlKz1uP2UucmVmZXJlbmNlcy5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiJbIitlLm5hbWUrIl0oIitlLnVybCsiKSJ9KSkuam9pbigiIHwgIik6ZS5yZWZlcmVuY2VzLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIGUubmFtZSsiOiAiK2UudXJsfSkpLmpvaW4oIlxuIikpLCIiIT09ci52YWx1ZSlyZXR1cm4gcn12YXIgeG89ZnVuY3Rpb24oZSx0LG4scil7cmV0dXJuIG5ldyhufHwobj1Qcm9taXNlKSkoKGZ1bmN0aW9uKGksYSl7ZnVuY3Rpb24gbyhlKXt0cnl7bChyLm5leHQoZSkpfWNhdGNoKGUpe2EoZSl9fWZ1bmN0aW9uIHMoZSl7dHJ5e2woci50aHJvdyhlKSl9Y2F0Y2goZSl7YShlKX19ZnVuY3Rpb24gbChlKXt2YXIgdDtlLmRvbmU/aShlLnZhbHVlKToodD1lLnZhbHVlLHQgaW5zdGFuY2VvZiBuP3Q6bmV3IG4oKGZ1bmN0aW9uKGUpe2UodCl9KSkpLnRoZW4obyxzKX1sKChyPXIuYXBwbHkoZSx0fHxbXSkpLm5leHQoKSl9KSl9LExvPWZ1bmN0aW9uKGUsdCl7dmFyIG4scixpLGEsbz17bGFiZWw6MCxzZW50OmZ1bmN0aW9uKCl7aWYoMSZpWzBdKXRocm93IGlbMV07cmV0dXJuIGlbMV19LHRyeXM6W10sb3BzOltdfTtyZXR1cm4gYT17bmV4dDpzKDApLHRocm93OnMoMSkscmV0dXJuOnMoMil9LCJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJihhW1N5bWJvbC5pdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pLGE7ZnVuY3Rpb24gcyhhKXtyZXR1cm4gZnVuY3Rpb24ocyl7cmV0dXJuIGZ1bmN0aW9uKGEpe2lmKG4pdGhyb3cgbmV3IFR5cGVFcnJvcigiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLiIpO2Zvcig7bzspdHJ5e2lmKG49MSxyJiYoaT0yJmFbMF0/ci5yZXR1cm46YVswXT9yLnRocm93fHwoKGk9ci5yZXR1cm4pJiZpLmNhbGwociksMCk6ci5uZXh0KSYmIShpPWkuY2FsbChyLGFbMV0pKS5kb25lKXJldHVybiBpO3N3aXRjaChyPTAsaSYmKGE9WzImYVswXSxpLnZhbHVlXSksYVswXSl7Y2FzZSAwOmNhc2UgMTppPWE7YnJlYWs7Y2FzZSA0OnJldHVybiBvLmxhYmVsKysse3ZhbHVlOmFbMV0sZG9uZTohMX07Y2FzZSA1Om8ubGFiZWwrKyxyPWFbMV0sYT1bMF07Y29udGludWU7Y2FzZSA3OmE9by5vcHMucG9wKCksby50cnlzLnBvcCgpO2NvbnRpbnVlO2RlZmF1bHQ6aWYoIShpPW8udHJ5cywoaT1pLmxlbmd0aD4wJiZpW2kubGVuZ3RoLTFdKXx8NiE9PWFbMF0mJjIhPT1hWzBdKSl7bz0wO2NvbnRpbnVlfWlmKDM9PT1hWzBdJiYoIWl8fGFbMV0+aVswXSYmYVsxXTxpWzNdKSl7by5sYWJlbD1hWzFdO2JyZWFrfWlmKDY9PT1hWzBdJiZvLmxhYmVsPGlbMV0pe28ubGFiZWw9aVsxXSxpPWE7YnJlYWt9aWYoaSYmby5sYWJlbDxpWzJdKXtvLmxhYmVsPWlbMl0sby5vcHMucHVzaChhKTticmVha31pWzJdJiZvLm9wcy5wb3AoKSxvLnRyeXMucG9wKCk7Y29udGludWV9YT10LmNhbGwoZSxvKX1jYXRjaChlKXthPVs2LGVdLHI9MH1maW5hbGx5e249aT0wfWlmKDUmYVswXSl0aHJvdyBhWzFdO3JldHVybnt2YWx1ZTphWzBdP2FbMV06dm9pZCAwLGRvbmU6ITB9fShbYSxzXSl9fX0sRW89ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUpe3RoaXMucmVhZERpcmVjdG9yeT1lLHRoaXMuYXRyaWJ1dGVDb21wbGV0aW9ucz1bXX1yZXR1cm4gZS5wcm90b3R5cGUub25IdG1sQXR0cmlidXRlVmFsdWU9ZnVuY3Rpb24oZSl7KGZ1bmN0aW9uKGUsdCl7aWYoInNyYyI9PT10fHwiaHJlZiI9PT10KXJldHVybiEwO3ZhciBuPU5vW2VdO2lmKG4pcmV0dXJuInN0cmluZyI9PXR5cGVvZiBuP249PT10Oi0xIT09bi5pbmRleE9mKHQpO3JldHVybiExfSkoZS50YWcsZS5hdHRyaWJ1dGUpJiZ0aGlzLmF0cmlidXRlQ29tcGxldGlvbnMucHVzaChlKX0sZS5wcm90b3R5cGUuY29tcHV0ZUNvbXBsZXRpb25zPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHhvKHRoaXMsdm9pZCAwLHZvaWQgMCwoZnVuY3Rpb24oKXt2YXIgbixyLGksYSxvLHMsbCxjLGgsZDtyZXR1cm4gTG8odGhpcywoZnVuY3Rpb24odSl7c3dpdGNoKHUubGFiZWwpe2Nhc2UgMDpuPXtpdGVtczpbXSxpc0luY29tcGxldGU6ITF9LHI9MCxpPXRoaXMuYXRyaWJ1dGVDb21wbGV0aW9ucyx1LmxhYmVsPTE7Y2FzZSAxOnJldHVybiByPGkubGVuZ3RoPyhhPWlbcl0sZnVuY3Rpb24oZSl7aWYobW8oZSwiaHR0cCIpfHxtbyhlLCJodHRwcyIpfHxtbyhlLCIvLyIpKXJldHVybiExO3JldHVybiEwfShvPWZ1bmN0aW9uKGUpe3JldHVybiBtbyhlLCInIil8fG1vKGUsJyInKT9lLnNsaWNlKDEsLTEpOmV9KGUuZ2V0VGV4dChhLnJhbmdlKSkpPyIuIiE9PW8mJiIuLiIhPT1vP1szLDJdOihuLmlzSW5jb21wbGV0ZT0hMCxbMyw0XSk6WzMsNF0pOlszLDVdO2Nhc2UgMjpyZXR1cm4gcz1mdW5jdGlvbihlLHQsbil7dmFyIHIsaT1lLmxhc3RJbmRleE9mKCIvIik7aWYoLTE9PT1pKXI9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPVJvKGUuc3RhcnQsdCksaT1SbyhlLmVuZCxuKTtyZXR1cm4gV3IuY3JlYXRlKHIsaSl9KG4sMSwtMSk7ZWxzZXt2YXIgYT10LnNsaWNlKGkrMSksbz1SbyhuLmVuZCwtMS1hLmxlbmd0aCkscz1hLmluZGV4T2YoIiAiKSxsPXZvaWQgMDtsPS0xIT09cz9SbyhvLHMpOlJvKG4uZW5kLC0xKSxyPVdyLmNyZWF0ZShvLGwpfXJldHVybiByfShhLnZhbHVlLG8sYS5yYW5nZSksWzQsdGhpcy5wcm92aWRlUGF0aFN1Z2dlc3Rpb25zKGEudmFsdWUscyxlLHQpXTtjYXNlIDM6Zm9yKGw9dS5zZW50KCksYz0wLGg9bDtjPGgubGVuZ3RoO2MrKylkPWhbY10sbi5pdGVtcy5wdXNoKGQpO3UubGFiZWw9NDtjYXNlIDQ6cmV0dXJuIHIrKyxbMywxXTtjYXNlIDU6cmV0dXJuWzIsbl19fSkpfSkpfSxlLnByb3RvdHlwZS5wcm92aWRlUGF0aFN1Z2dlc3Rpb25zPWZ1bmN0aW9uKGUsdCxuLHIpe3JldHVybiB4byh0aGlzLHZvaWQgMCx2b2lkIDAsKGZ1bmN0aW9uKCl7dmFyIGksYSxvLHMsbCxjLGgsZCx1O3JldHVybiBMbyh0aGlzLChmdW5jdGlvbihwKXtzd2l0Y2gocC5sYWJlbCl7Y2FzZSAwOmlmKGk9ZS5zdWJzdHJpbmcoMCxlLmxhc3RJbmRleE9mKCIvIikrMSksIShhPXIucmVzb2x2ZVJlZmVyZW5jZShpfHwiLiIsbi51cmkpKSlyZXR1cm5bMyw0XTtwLmxhYmVsPTE7Y2FzZSAxOnJldHVybiBwLnRyeXMucHVzaChbMSwzLCw0XSksbz1bXSxbNCx0aGlzLnJlYWREaXJlY3RvcnkoYSldO2Nhc2UgMjpmb3Iocz1wLnNlbnQoKSxsPTAsYz1zO2w8Yy5sZW5ndGg7bCsrKWg9Y1tsXSxkPWhbMF0sdT1oWzFdLGQuY2hhckNvZGVBdCgwKSE9PUFvJiZvLnB1c2goTW8oZCx1PT09emEuRGlyZWN0b3J5LHQpKTtyZXR1cm5bMixvXTtjYXNlIDM6cmV0dXJuIHAuc2VudCgpLFszLDRdO2Nhc2UgNDpyZXR1cm5bMixbXV19fSkpfSkpfSxlfSgpLEFvPSIuIi5jaGFyQ29kZUF0KDApO2Z1bmN0aW9uIE1vKGUsdCxuKXtyZXR1cm4gdD97bGFiZWw6ZSs9Ii8iLGtpbmQ6V2kuRm9sZGVyLHRleHRFZGl0OmRpLnJlcGxhY2UobixlKSxjb21tYW5kOnt0aXRsZToiU3VnZ2VzdCIsY29tbWFuZDoiZWRpdG9yLmFjdGlvbi50cmlnZ2VyU3VnZ2VzdCJ9fTp7bGFiZWw6ZSxraW5kOldpLkZpbGUsdGV4dEVkaXQ6ZGkucmVwbGFjZShuLGUpfX1mdW5jdGlvbiBSbyhlLHQpe3JldHVybiBEci5jcmVhdGUoZS5saW5lLGUuY2hhcmFjdGVyK3QpfXZhciBObz17YToiaHJlZiIsYXJlYToiaHJlZiIsYm9keToiYmFja2dyb3VuZCIsZGVsOiJjaXRlIixmb3JtOiJhY3Rpb24iLGZyYW1lOlsic3JjIiwibG9uZ2Rlc2MiXSxpbWc6WyJzcmMiLCJsb25nZGVzYyJdLGluczoiY2l0ZSIsbGluazoiaHJlZiIsb2JqZWN0OiJkYXRhIixxOiJjaXRlIixzY3JpcHQ6InNyYyIsYXVkaW86InNyYyIsYnV0dG9uOiJmb3JtYWN0aW9uIixjb21tYW5kOiJpY29uIixlbWJlZDoic3JjIixodG1sOiJtYW5pZmVzdCIsaW5wdXQ6WyJzcmMiLCJmb3JtYWN0aW9uIl0sc291cmNlOiJzcmMiLHRyYWNrOiJzcmMiLHZpZGVvOlsic3JjIiwicG9zdGVyIl19LElvPWZ1bmN0aW9uKGUsdCxuLHIpe3JldHVybiBuZXcobnx8KG49UHJvbWlzZSkpKChmdW5jdGlvbihpLGEpe2Z1bmN0aW9uIG8oZSl7dHJ5e2woci5uZXh0KGUpKX1jYXRjaChlKXthKGUpfX1mdW5jdGlvbiBzKGUpe3RyeXtsKHIudGhyb3coZSkpfWNhdGNoKGUpe2EoZSl9fWZ1bmN0aW9uIGwoZSl7dmFyIHQ7ZS5kb25lP2koZS52YWx1ZSk6KHQ9ZS52YWx1ZSx0IGluc3RhbmNlb2Ygbj90Om5ldyBuKChmdW5jdGlvbihlKXtlKHQpfSkpKS50aGVuKG8scyl9bCgocj1yLmFwcGx5KGUsdHx8W10pKS5uZXh0KCkpfSkpfSxVbz1mdW5jdGlvbihlLHQpe3ZhciBuLHIsaSxhLG89e2xhYmVsOjAsc2VudDpmdW5jdGlvbigpe2lmKDEmaVswXSl0aHJvdyBpWzFdO3JldHVybiBpWzFdfSx0cnlzOltdLG9wczpbXX07cmV0dXJuIGE9e25leHQ6cygwKSx0aHJvdzpzKDEpLHJldHVybjpzKDIpfSwiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYoYVtTeW1ib2wuaXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSxhO2Z1bmN0aW9uIHMoYSl7cmV0dXJuIGZ1bmN0aW9uKHMpe3JldHVybiBmdW5jdGlvbihhKXtpZihuKXRocm93IG5ldyBUeXBlRXJyb3IoIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy4iKTtmb3IoO287KXRyeXtpZihuPTEsciYmKGk9MiZhWzBdP3IucmV0dXJuOmFbMF0/ci50aHJvd3x8KChpPXIucmV0dXJuKSYmaS5jYWxsKHIpLDApOnIubmV4dCkmJiEoaT1pLmNhbGwocixhWzFdKSkuZG9uZSlyZXR1cm4gaTtzd2l0Y2gocj0wLGkmJihhPVsyJmFbMF0saS52YWx1ZV0pLGFbMF0pe2Nhc2UgMDpjYXNlIDE6aT1hO2JyZWFrO2Nhc2UgNDpyZXR1cm4gby5sYWJlbCsrLHt2YWx1ZTphWzFdLGRvbmU6ITF9O2Nhc2UgNTpvLmxhYmVsKysscj1hWzFdLGE9WzBdO2NvbnRpbnVlO2Nhc2UgNzphPW8ub3BzLnBvcCgpLG8udHJ5cy5wb3AoKTtjb250aW51ZTtkZWZhdWx0OmlmKCEoaT1vLnRyeXMsKGk9aS5sZW5ndGg+MCYmaVtpLmxlbmd0aC0xXSl8fDYhPT1hWzBdJiYyIT09YVswXSkpe289MDtjb250aW51ZX1pZigzPT09YVswXSYmKCFpfHxhWzFdPmlbMF0mJmFbMV08aVszXSkpe28ubGFiZWw9YVsxXTticmVha31pZig2PT09YVswXSYmby5sYWJlbDxpWzFdKXtvLmxhYmVsPWlbMV0saT1hO2JyZWFrfWlmKGkmJm8ubGFiZWw8aVsyXSl7by5sYWJlbD1pWzJdLG8ub3BzLnB1c2goYSk7YnJlYWt9aVsyXSYmby5vcHMucG9wKCksby50cnlzLnBvcCgpO2NvbnRpbnVlfWE9dC5jYWxsKGUsbyl9Y2F0Y2goZSl7YT1bNixlXSxyPTB9ZmluYWxseXtuPWk9MH1pZig1JmFbMF0pdGhyb3cgYVsxXTtyZXR1cm57dmFsdWU6YVswXT9hWzFdOnZvaWQgMCxkb25lOiEwfX0oW2Esc10pfX19LEhvPVJyKCksRG89ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUsdCl7dGhpcy5sc09wdGlvbnM9ZSx0aGlzLmRhdGFNYW5hZ2VyPXQsdGhpcy5jb21wbGV0aW9uUGFydGljaXBhbnRzPVtdfXJldHVybiBlLnByb3RvdHlwZS5zZXRDb21wbGV0aW9uUGFydGljaXBhbnRzPWZ1bmN0aW9uKGUpe3RoaXMuY29tcGxldGlvblBhcnRpY2lwYW50cz1lfHxbXX0sZS5wcm90b3R5cGUuZG9Db21wbGV0ZTI9ZnVuY3Rpb24oZSx0LG4scixpKXtyZXR1cm4gSW8odGhpcyx2b2lkIDAsdm9pZCAwLChmdW5jdGlvbigpe3ZhciBhLG8scyxsO3JldHVybiBVbyh0aGlzLChmdW5jdGlvbihjKXtzd2l0Y2goYy5sYWJlbCl7Y2FzZSAwOmlmKCF0aGlzLmxzT3B0aW9ucy5maWxlU3lzdGVtUHJvdmlkZXJ8fCF0aGlzLmxzT3B0aW9ucy5maWxlU3lzdGVtUHJvdmlkZXIucmVhZERpcmVjdG9yeSlyZXR1cm5bMix0aGlzLmRvQ29tcGxldGUoZSx0LG4saSldO2E9bmV3IEVvKHRoaXMubHNPcHRpb25zLmZpbGVTeXN0ZW1Qcm92aWRlci5yZWFkRGlyZWN0b3J5KSxvPXRoaXMuY29tcGxldGlvblBhcnRpY2lwYW50cyx0aGlzLmNvbXBsZXRpb25QYXJ0aWNpcGFudHM9W2FdLmNvbmNhdChvKSxzPXRoaXMuZG9Db21wbGV0ZShlLHQsbixpKSxjLmxhYmVsPTE7Y2FzZSAxOnJldHVybiBjLnRyeXMucHVzaChbMSwsMyw0XSksWzQsYS5jb21wdXRlQ29tcGxldGlvbnMoZSxyKV07Y2FzZSAyOnJldHVybiBsPWMuc2VudCgpLFsyLHtpc0luY29tcGxldGU6cy5pc0luY29tcGxldGV8fGwuaXNJbmNvbXBsZXRlLGl0ZW1zOmwuaXRlbXMuY29uY2F0KHMuaXRlbXMpfV07Y2FzZSAzOnJldHVybiB0aGlzLmNvbXBsZXRpb25QYXJ0aWNpcGFudHM9byxbN107Y2FzZSA0OnJldHVyblsyXX19KSl9KSl9LGUucHJvdG90eXBlLmRvQ29tcGxldGU9ZnVuY3Rpb24oZSx0LG4scil7dmFyIGk9dGhpcy5fZG9Db21wbGV0ZShlLHQsbixyKTtyZXR1cm4gdGhpcy5jb252ZXJ0Q29tcGxldGlvbkxpc3QoaSl9LGUucHJvdG90eXBlLl9kb0NvbXBsZXRlPWZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBpPXtpc0luY29tcGxldGU6ITEsaXRlbXM6W119LGE9dGhpcy5jb21wbGV0aW9uUGFydGljaXBhbnRzLG89dGhpcy5kYXRhTWFuYWdlci5nZXREYXRhUHJvdmlkZXJzKCkuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gdC5pc0FwcGxpY2FibGUoZS5sYW5ndWFnZUlkKSYmKCFyfHwhMSE9PXJbdC5nZXRJZCgpXSl9KSkscz10aGlzLmRvZXNTdXBwb3J0TWFya2Rvd24oKSxsPWUuZ2V0VGV4dCgpLGM9ZS5vZmZzZXRBdCh0KSxoPW4uZmluZE5vZGVCZWZvcmUoYyk7aWYoIWgpcmV0dXJuIGk7dmFyIGQsdT1vbyhsLGguc3RhcnQpLHA9IiI7ZnVuY3Rpb24gbSh0LG4pe3JldHVybiB2b2lkIDA9PT1uJiYobj1jKSx0PmMmJih0PWMpLHtzdGFydDplLnBvc2l0aW9uQXQodCksZW5kOmUucG9zaXRpb25BdChuKX19ZnVuY3Rpb24gZihlLHQpe3ZhciBuPW0oZSx0KTtyZXR1cm4gby5mb3JFYWNoKChmdW5jdGlvbihlKXtlLnByb3ZpZGVUYWdzKCkuZm9yRWFjaCgoZnVuY3Rpb24oZSl7aS5pdGVtcy5wdXNoKHtsYWJlbDplLm5hbWUsa2luZDpXaS5Qcm9wZXJ0eSxkb2N1bWVudGF0aW9uOkNvKGUsdm9pZCAwLHMpLHRleHRFZGl0OmRpLnJlcGxhY2UobixlLm5hbWUpLGluc2VydFRleHRGb3JtYXQ6UGkuUGxhaW5UZXh0fSl9KSl9KSksaX1mdW5jdGlvbiBnKGUpe2Zvcih2YXIgdD1lO3Q+MDspe3ZhciBuPWwuY2hhckF0KHQtMSk7aWYoIlxuXHIiLmluZGV4T2Yobik+PTApcmV0dXJuIGwuc3Vic3RyaW5nKHQsZSk7aWYoIXpvKG4pKXJldHVybiBudWxsO3QtLX1yZXR1cm4gbC5zdWJzdHJpbmcoMCxlKX1mdW5jdGlvbiBiKGUsdCxuKXt2b2lkIDA9PT1uJiYobj1jKTt2YXIgcj1tKGUsbiksYT1XbyhsLG4sVWEuV2l0aGluRW5kVGFnLE5hLkVuZFRhZ0Nsb3NlKT8iIjoiPiIsZD1oO2Zvcih0JiYoZD1kLnBhcmVudCk7ZDspe3ZhciB1PWQudGFnO2lmKHUmJighZC5jbG9zZWR8fGQuZW5kVGFnU3RhcnQmJmQuZW5kVGFnU3RhcnQ+Yykpe3ZhciBwPXtsYWJlbDoiLyIrdSxraW5kOldpLlByb3BlcnR5LGZpbHRlclRleHQ6Ii8iK3UsdGV4dEVkaXQ6ZGkucmVwbGFjZShyLCIvIit1K2EpLGluc2VydFRleHRGb3JtYXQ6UGkuUGxhaW5UZXh0fSxmPWcoZC5zdGFydCksYj1nKGUtMSk7aWYobnVsbCE9PWYmJm51bGwhPT1iJiZmIT09Yil7dmFyIHc9ZisiPC8iK3UrYTtwLnRleHRFZGl0PWRpLnJlcGxhY2UobShlLTEtYi5sZW5ndGgpLHcpLHAuZmlsdGVyVGV4dD1iKyI8LyIrdX1yZXR1cm4gaS5pdGVtcy5wdXNoKHApLGl9ZD1kLnBhcmVudH1yZXR1cm4gdHx8by5mb3JFYWNoKChmdW5jdGlvbihlKXtlLnByb3ZpZGVUYWdzKCkuZm9yRWFjaCgoZnVuY3Rpb24oZSl7aS5pdGVtcy5wdXNoKHtsYWJlbDoiLyIrZS5uYW1lLGtpbmQ6V2kuUHJvcGVydHksZG9jdW1lbnRhdGlvbjpDbyhlLHZvaWQgMCxzKSxmaWx0ZXJUZXh0OiIvIitlLm5hbWUrYSx0ZXh0RWRpdDpkaS5yZXBsYWNlKHIsIi8iK2UubmFtZSthKSxpbnNlcnRUZXh0Rm9ybWF0OlBpLlBsYWluVGV4dH0pfSkpfSkpLGl9ZnVuY3Rpb24gdyh0LG4pe2lmKHImJnIuaGlkZUF1dG9Db21wbGV0ZVByb3Bvc2FscylyZXR1cm4gaTtpZighY28obikpe3ZhciBhPWUucG9zaXRpb25BdCh0KTtpLml0ZW1zLnB1c2goe2xhYmVsOiI8LyIrbisiPiIsa2luZDpXaS5Qcm9wZXJ0eSxmaWx0ZXJUZXh0OiI8LyIrbisiPiIsdGV4dEVkaXQ6ZGkuaW5zZXJ0KGEsIiQwPC8iK24rIj4iKSxpbnNlcnRUZXh0Rm9ybWF0OlBpLlNuaXBwZXR9KX1yZXR1cm4gaX1mdW5jdGlvbiBfKGUsdCl7cmV0dXJuIGYoZSx0KSxiKGUsITAsdCksaX1mdW5jdGlvbiB2KGUsdCl7dmFyIGE7dm9pZCAwPT09dCYmKHQ9Yyk7Zm9yKHZhciBkPWM7ZDx0JiYiPCIhPT1sW2RdOylkKys7dmFyIHU9bC5zdWJzdHJpbmcoZSx0KSxmPW0oZSxkKSxnPSIiO2lmKCFXbyhsLHQsVWEuQWZ0ZXJBdHRyaWJ1dGVOYW1lLE5hLkRlbGltaXRlckFzc2lnbikpe3ZhciBiPW51bGwhPT0oYT1udWxsPT1yP3ZvaWQgMDpyLmF0dHJpYnV0ZURlZmF1bHRWYWx1ZSkmJnZvaWQgMCE9PWE/YToiZG91YmxlcXVvdGVzIjtnPSJlbXB0eSI9PT1iPyI9JDEiOiJzaW5nbGVxdW90ZXMiPT09Yj8iPSckMSciOic9IiQxIid9dmFyIHcsXz0odz1PYmplY3QuY3JlYXRlKG51bGwpLGguYXR0cmlidXRlTmFtZXMuZm9yRWFjaCgoZnVuY3Rpb24oZSl7d1tlXT0hMH0pKSx3KTtyZXR1cm4gX1t1XT0hMSxvLmZvckVhY2goKGZ1bmN0aW9uKGUpe2UucHJvdmlkZUF0dHJpYnV0ZXMocCkuZm9yRWFjaCgoZnVuY3Rpb24oZSl7aWYoIV9bZS5uYW1lXSl7X1tlLm5hbWVdPSEwO3ZhciB0LG49ZS5uYW1lOyJ2IiE9PWUudmFsdWVTZXQmJmcubGVuZ3RoJiYobis9ZywoZS52YWx1ZVNldHx8InN0eWxlIj09PWUubmFtZSkmJih0PXt0aXRsZToiU3VnZ2VzdCIsY29tbWFuZDoiZWRpdG9yLmFjdGlvbi50cmlnZ2VyU3VnZ2VzdCJ9KSksaS5pdGVtcy5wdXNoKHtsYWJlbDplLm5hbWUsa2luZDoiaGFuZGxlciI9PT1lLnZhbHVlU2V0P1dpLkZ1bmN0aW9uOldpLlZhbHVlLGRvY3VtZW50YXRpb246Q28oZSx2b2lkIDAscyksdGV4dEVkaXQ6ZGkucmVwbGFjZShmLG4pLGluc2VydFRleHRGb3JtYXQ6UGkuU25pcHBldCxjb21tYW5kOnR9KX19KSl9KSksZnVuY3Rpb24oZSx0KXt2YXIgcj0iZGF0YS0iLGE9e307ZnVuY3Rpb24gbyhlKXtlLmF0dHJpYnV0ZU5hbWVzLmZvckVhY2goKGZ1bmN0aW9uKGUpeyFtbyhlLHIpfHxhW2VdfHx0W2VdfHwoYVtlXT1lKyc9IiQxIicpfSkpLGUuY2hpbGRyZW4uZm9yRWFjaCgoZnVuY3Rpb24oZSl7cmV0dXJuIG8oZSl9KSl9YVtyXT1yKyckMT0iJDIiJyxuJiZuLnJvb3RzLmZvckVhY2goKGZ1bmN0aW9uKGUpe3JldHVybiBvKGUpfSkpO09iamVjdC5rZXlzKGEpLmZvckVhY2goKGZ1bmN0aW9uKHQpe3JldHVybiBpLml0ZW1zLnB1c2goe2xhYmVsOnQsa2luZDpXaS5WYWx1ZSx0ZXh0RWRpdDpkaS5yZXBsYWNlKGUsYVt0XSksaW5zZXJ0VGV4dEZvcm1hdDpQaS5TbmlwcGV0fSl9KSl9KGYsXyksaX1mdW5jdGlvbiB5KG4scil7dmFyIGgsdSxmLGc7aWYodm9pZCAwPT09ciYmKHI9YyksYz5uJiZjPD1yJiYoZz1sW25dLC9eWyInXSokLy50ZXN0KGcpKSl7dmFyIGI9bisxLHc9cjtyPm4mJmxbci0xXT09PWxbbl0mJnctLTt2YXIgXz1mdW5jdGlvbihlLHQsbil7Zm9yKDt0Pm4mJiF6byhlW3QtMV0pOyl0LS07cmV0dXJuIHR9KGwsYyxiKSx2PWZ1bmN0aW9uKGUsdCxuKXtmb3IoO3Q8biYmIXpvKGVbdF0pOyl0Kys7cmV0dXJuIHR9KGwsYyx3KTtoPW0oXyx2KSxmPWM+PWImJmM8PXc/bC5zdWJzdHJpbmcoYixjKToiIix1PSExfWVsc2UgaD1tKG4sciksZj1sLnN1YnN0cmluZyhuLGMpLHU9ITA7aWYoYS5sZW5ndGg+MClmb3IodmFyIHk9cC50b0xvd2VyQ2FzZSgpLFQ9ZC50b0xvd2VyQ2FzZSgpLGs9bShuLHIpLEM9MCx4PWE7Qzx4Lmxlbmd0aDtDKyspe3ZhciBMPXhbQ107TC5vbkh0bWxBdHRyaWJ1dGVWYWx1ZSYmTC5vbkh0bWxBdHRyaWJ1dGVWYWx1ZSh7ZG9jdW1lbnQ6ZSxwb3NpdGlvbjp0LHRhZzp5LGF0dHJpYnV0ZTpULHZhbHVlOmYscmFuZ2U6a30pfXJldHVybiBvLmZvckVhY2goKGZ1bmN0aW9uKGUpe2UucHJvdmlkZVZhbHVlcyhwLGQpLmZvckVhY2goKGZ1bmN0aW9uKGUpe3ZhciB0PXU/JyInK2UubmFtZSsnIic6ZS5uYW1lO2kuaXRlbXMucHVzaCh7bGFiZWw6ZS5uYW1lLGZpbHRlclRleHQ6dCxraW5kOldpLlVuaXQsZG9jdW1lbnRhdGlvbjpDbyhlLHZvaWQgMCxzKSx0ZXh0RWRpdDpkaS5yZXBsYWNlKGgsdCksaW5zZXJ0VGV4dEZvcm1hdDpQaS5QbGFpblRleHR9KX0pKX0pKSxTKCksaX1mdW5jdGlvbiBUKGUpe3JldHVybiBjPT09dS5nZXRUb2tlbkVuZCgpJiYoeD11LnNjYW4oKSk9PT1lJiZ1LmdldFRva2VuT2Zmc2V0KCk9PT1jP3UuZ2V0VG9rZW5FbmQoKTpjfWZ1bmN0aW9uIGsoKXtmb3IodmFyIG49MCxyPWE7bjxyLmxlbmd0aDtuKyspe3ZhciBpPXJbbl07aS5vbkh0bWxDb250ZW50JiZpLm9uSHRtbENvbnRlbnQoe2RvY3VtZW50OmUscG9zaXRpb246dH0pfXJldHVybiBTKCl9ZnVuY3Rpb24gUygpe2Zvcih2YXIgZSxuLHIsYT1jLTEsbz10LmNoYXJhY3RlcjthPj0wJiZUbyhsLGEpOylhLS0sby0tO2lmKGE+PTAmJiImIj09PWxbYV0pe3ZhciBzPVdyLmNyZWF0ZShEci5jcmVhdGUodC5saW5lLG8tMSksdCk7Zm9yKHZhciBoIGluIHBvKWlmKG49IjsiLHI9dm9pZCAwLChyPShlPWgpLmxlbmd0aC1uLmxlbmd0aCk+MD9lLmxhc3RJbmRleE9mKG4pPT09cjowPT09ciYmZT09PW4pe3ZhciBkPSImIitoO2kuaXRlbXMucHVzaCh7bGFiZWw6ZCxraW5kOldpLktleXdvcmQsZG9jdW1lbnRhdGlvbjpIbygiZW50aXR5LnByb3Bvc2UiLCJDaGFyYWN0ZXIgZW50aXR5IHJlcHJlc2VudGluZyAnIitwb1toXSsiJyIpLHRleHRFZGl0OmRpLnJlcGxhY2UocyxkKSxpbnNlcnRUZXh0Rm9ybWF0OlBpLlBsYWluVGV4dH0pfX1yZXR1cm4gaX1mb3IodmFyIEMseD11LnNjYW4oKTt4IT09TmEuRU9TJiZ1LmdldFRva2VuT2Zmc2V0KCk8PWM7KXtzd2l0Y2goeCl7Y2FzZSBOYS5TdGFydFRhZ09wZW46aWYodS5nZXRUb2tlbkVuZCgpPT09Yyl7dmFyIEw9VChOYS5TdGFydFRhZyk7cmV0dXJuIDA9PT10LmxpbmUmJihDPXZvaWQgMCxDPW0oYyxMKSxpLml0ZW1zLnB1c2goe2xhYmVsOiIhRE9DVFlQRSIsa2luZDpXaS5Qcm9wZXJ0eSxkb2N1bWVudGF0aW9uOiJBIHByZWFtYmxlIGZvciBhbiBIVE1MIGRvY3VtZW50LiIsdGV4dEVkaXQ6ZGkucmVwbGFjZShDLCIhRE9DVFlQRSBodG1sPiIpLGluc2VydFRleHRGb3JtYXQ6UGkuUGxhaW5UZXh0fSkpLF8oYyxMKX1icmVhaztjYXNlIE5hLlN0YXJ0VGFnOmlmKHUuZ2V0VG9rZW5PZmZzZXQoKTw9YyYmYzw9dS5nZXRUb2tlbkVuZCgpKXJldHVybiBmKHUuZ2V0VG9rZW5PZmZzZXQoKSx1LmdldFRva2VuRW5kKCkpO3A9dS5nZXRUb2tlblRleHQoKTticmVhaztjYXNlIE5hLkF0dHJpYnV0ZU5hbWU6aWYodS5nZXRUb2tlbk9mZnNldCgpPD1jJiZjPD11LmdldFRva2VuRW5kKCkpcmV0dXJuIHYodS5nZXRUb2tlbk9mZnNldCgpLHUuZ2V0VG9rZW5FbmQoKSk7ZD11LmdldFRva2VuVGV4dCgpO2JyZWFrO2Nhc2UgTmEuRGVsaW1pdGVyQXNzaWduOmlmKHUuZ2V0VG9rZW5FbmQoKT09PWMpe0w9VChOYS5BdHRyaWJ1dGVWYWx1ZSk7cmV0dXJuIHkoYyxMKX1icmVhaztjYXNlIE5hLkF0dHJpYnV0ZVZhbHVlOmlmKHUuZ2V0VG9rZW5PZmZzZXQoKTw9YyYmYzw9dS5nZXRUb2tlbkVuZCgpKXJldHVybiB5KHUuZ2V0VG9rZW5PZmZzZXQoKSx1LmdldFRva2VuRW5kKCkpO2JyZWFrO2Nhc2UgTmEuV2hpdGVzcGFjZTppZihjPD11LmdldFRva2VuRW5kKCkpc3dpdGNoKHUuZ2V0U2Nhbm5lclN0YXRlKCkpe2Nhc2UgVWEuQWZ0ZXJPcGVuaW5nU3RhcnRUYWc6cmV0dXJuIF8odS5nZXRUb2tlbk9mZnNldCgpLFQoTmEuU3RhcnRUYWcpKTtjYXNlIFVhLldpdGhpblRhZzpjYXNlIFVhLkFmdGVyQXR0cmlidXRlTmFtZTpyZXR1cm4gdih1LmdldFRva2VuRW5kKCkpO2Nhc2UgVWEuQmVmb3JlQXR0cmlidXRlVmFsdWU6cmV0dXJuIHkodS5nZXRUb2tlbkVuZCgpKTtjYXNlIFVhLkFmdGVyT3BlbmluZ0VuZFRhZzpyZXR1cm4gYih1LmdldFRva2VuT2Zmc2V0KCktMSwhMSk7Y2FzZSBVYS5XaXRoaW5Db250ZW50OnJldHVybiBrKCl9YnJlYWs7Y2FzZSBOYS5FbmRUYWdPcGVuOmlmKGM8PXUuZ2V0VG9rZW5FbmQoKSlyZXR1cm4gYih1LmdldFRva2VuT2Zmc2V0KCkrMSwhMSxUKE5hLkVuZFRhZykpO2JyZWFrO2Nhc2UgTmEuRW5kVGFnOmlmKGM8PXUuZ2V0VG9rZW5FbmQoKSlmb3IodmFyIEU9dS5nZXRUb2tlbk9mZnNldCgpLTE7RT49MDspe3ZhciBBPWwuY2hhckF0KEUpO2lmKCIvIj09PUEpcmV0dXJuIGIoRSwhMSx1LmdldFRva2VuRW5kKCkpO2lmKCF6byhBKSlicmVhaztFLS19YnJlYWs7Y2FzZSBOYS5TdGFydFRhZ0Nsb3NlOmlmKGM8PXUuZ2V0VG9rZW5FbmQoKSYmcClyZXR1cm4gdyh1LmdldFRva2VuRW5kKCkscCk7YnJlYWs7Y2FzZSBOYS5Db250ZW50OmlmKGM8PXUuZ2V0VG9rZW5FbmQoKSlyZXR1cm4gaygpO2JyZWFrO2RlZmF1bHQ6aWYoYzw9dS5nZXRUb2tlbkVuZCgpKXJldHVybiBpfXg9dS5zY2FuKCl9cmV0dXJuIGl9LGUucHJvdG90eXBlLmRvUXVvdGVDb21wbGV0ZT1mdW5jdGlvbihlLHQsbixyKXt2YXIgaSxhPWUub2Zmc2V0QXQodCk7aWYoYTw9MClyZXR1cm4gbnVsbDt2YXIgbz1udWxsIT09KGk9bnVsbD09cj92b2lkIDA6ci5hdHRyaWJ1dGVEZWZhdWx0VmFsdWUpJiZ2b2lkIDAhPT1pP2k6ImRvdWJsZXF1b3RlcyI7aWYoImVtcHR5Ij09PW8pcmV0dXJuIG51bGw7aWYoIj0iIT09ZS5nZXRUZXh0KCkuY2hhckF0KGEtMSkpcmV0dXJuIG51bGw7dmFyIHM9ImRvdWJsZXF1b3RlcyI9PT1vPyciJDEiJzoiJyQxJyIsbD1uLmZpbmROb2RlQmVmb3JlKGEpO2lmKGwmJmwuYXR0cmlidXRlcyYmbC5zdGFydDxhJiYoIWwuZW5kVGFnU3RhcnR8fGwuZW5kVGFnU3RhcnQ+YSkpZm9yKHZhciBjPW9vKGUuZ2V0VGV4dCgpLGwuc3RhcnQpLGg9Yy5zY2FuKCk7aCE9PU5hLkVPUyYmYy5nZXRUb2tlbkVuZCgpPD1hOyl7aWYoaD09PU5hLkF0dHJpYnV0ZU5hbWUmJmMuZ2V0VG9rZW5FbmQoKT09PWEtMSlyZXR1cm4oaD1jLnNjYW4oKSkhPT1OYS5EZWxpbWl0ZXJBc3NpZ258fChoPWMuc2NhbigpKT09PU5hLlVua25vd258fGg9PT1OYS5BdHRyaWJ1dGVWYWx1ZT9udWxsOnM7aD1jLnNjYW4oKX1yZXR1cm4gbnVsbH0sZS5wcm90b3R5cGUuZG9UYWdDb21wbGV0ZT1mdW5jdGlvbihlLHQsbil7dmFyIHI9ZS5vZmZzZXRBdCh0KTtpZihyPD0wKXJldHVybiBudWxsO3ZhciBpPWUuZ2V0VGV4dCgpLmNoYXJBdChyLTEpO2lmKCI+Ij09PWkpe2lmKChvPW4uZmluZE5vZGVCZWZvcmUocikpJiZvLnRhZyYmIWNvKG8udGFnKSYmby5zdGFydDxyJiYoIW8uZW5kVGFnU3RhcnR8fG8uZW5kVGFnU3RhcnQ+cikpZm9yKHZhciBhPShzPW9vKGUuZ2V0VGV4dCgpLG8uc3RhcnQpKS5zY2FuKCk7YSE9PU5hLkVPUyYmcy5nZXRUb2tlbkVuZCgpPD1yOyl7aWYoYT09PU5hLlN0YXJ0VGFnQ2xvc2UmJnMuZ2V0VG9rZW5FbmQoKT09PXIpcmV0dXJuIiQwPC8iK28udGFnKyI+IjthPXMuc2NhbigpfX1lbHNlIGlmKCIvIj09PWkpe2Zvcih2YXIgbz1uLmZpbmROb2RlQmVmb3JlKHIpO28mJm8uY2xvc2VkJiYhKG8uZW5kVGFnU3RhcnQmJm8uZW5kVGFnU3RhcnQ+cik7KW89by5wYXJlbnQ7aWYobyYmby50YWcpe3ZhciBzO2ZvcihhPShzPW9vKGUuZ2V0VGV4dCgpLG8uc3RhcnQpKS5zY2FuKCk7YSE9PU5hLkVPUyYmcy5nZXRUb2tlbkVuZCgpPD1yOyl7aWYoYT09PU5hLkVuZFRhZ09wZW4mJnMuZ2V0VG9rZW5FbmQoKT09PXIpcmV0dXJuIG8udGFnKyI+IjthPXMuc2NhbigpfX19cmV0dXJuIG51bGx9LGUucHJvdG90eXBlLmNvbnZlcnRDb21wbGV0aW9uTGlzdD1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5kb2VzU3VwcG9ydE1hcmtkb3duKCl8fGUuaXRlbXMuZm9yRWFjaCgoZnVuY3Rpb24oZSl7ZS5kb2N1bWVudGF0aW9uJiYic3RyaW5nIiE9dHlwZW9mIGUuZG9jdW1lbnRhdGlvbiYmKGUuZG9jdW1lbnRhdGlvbj17a2luZDoicGxhaW50ZXh0Iix2YWx1ZTplLmRvY3VtZW50YXRpb24udmFsdWV9KX0pKSxlfSxlLnByb3RvdHlwZS5kb2VzU3VwcG9ydE1hcmtkb3duPWZ1bmN0aW9uKCl7dmFyIGUsdCxuO2lmKCFrbyh0aGlzLnN1cHBvcnRzTWFya2Rvd24pKXtpZigha28odGhpcy5sc09wdGlvbnMuY2xpZW50Q2FwYWJpbGl0aWVzKSlyZXR1cm4gdGhpcy5zdXBwb3J0c01hcmtkb3duPSEwLHRoaXMuc3VwcG9ydHNNYXJrZG93bjt2YXIgcj1udWxsPT09KG49bnVsbD09PSh0PW51bGw9PT0oZT10aGlzLmxzT3B0aW9ucy5jbGllbnRDYXBhYmlsaXRpZXMudGV4dERvY3VtZW50KXx8dm9pZCAwPT09ZT92b2lkIDA6ZS5jb21wbGV0aW9uKXx8dm9pZCAwPT09dD92b2lkIDA6dC5jb21wbGV0aW9uSXRlbSl8fHZvaWQgMD09PW4/dm9pZCAwOm4uZG9jdW1lbnRhdGlvbkZvcm1hdDt0aGlzLnN1cHBvcnRzTWFya2Rvd249QXJyYXkuaXNBcnJheShyKSYmLTEhPT1yLmluZGV4T2YoSGkuTWFya2Rvd24pfXJldHVybiB0aGlzLnN1cHBvcnRzTWFya2Rvd259LGV9KCk7ZnVuY3Rpb24gem8oZSl7cmV0dXJuL15ccyokLy50ZXN0KGUpfWZ1bmN0aW9uIFdvKGUsdCxuLHIpe2Zvcih2YXIgaT1vbyhlLHQsbiksYT1pLnNjYW4oKTthPT09TmEuV2hpdGVzcGFjZTspYT1pLnNjYW4oKTtyZXR1cm4gYT09PXJ9dmFyIE9vLFBvLHFvLEZvPVJyKCksQm89ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUsdCl7dGhpcy5sc09wdGlvbnM9ZSx0aGlzLmRhdGFNYW5hZ2VyPXR9cmV0dXJuIGUucHJvdG90eXBlLmRvSG92ZXI9ZnVuY3Rpb24oZSx0LG4scil7dmFyIGk9dGhpcy5jb252ZXJ0Q29udGVudHMuYmluZCh0aGlzKSxhPXRoaXMuZG9lc1N1cHBvcnRNYXJrZG93bigpLG89ZS5vZmZzZXRBdCh0KSxzPW4uZmluZE5vZGVBdChvKSxsPWUuZ2V0VGV4dCgpO2lmKCFzfHwhcy50YWcpcmV0dXJuIG51bGw7dmFyIGM9dGhpcy5kYXRhTWFuYWdlci5nZXREYXRhUHJvdmlkZXJzKCkuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gdC5pc0FwcGxpY2FibGUoZS5sYW5ndWFnZUlkKX0pKTtmdW5jdGlvbiBoKGUsdCxuKXtmb3IodmFyIG89ZnVuY3Rpb24obil7dmFyIG89bnVsbDtpZihuLnByb3ZpZGVUYWdzKCkuZm9yRWFjaCgoZnVuY3Rpb24obil7aWYobi5uYW1lLnRvTG93ZXJDYXNlKCk9PT1lLnRvTG93ZXJDYXNlKCkpe3ZhciBpPUNvKG4scixhKTtpfHwoaT17a2luZDphPyJtYXJrZG93biI6InBsYWludGV4dCIsdmFsdWU6IiJ9KSxvPXtjb250ZW50czppLHJhbmdlOnR9fX0pKSxvKXJldHVybiBvLmNvbnRlbnRzPWkoby5jb250ZW50cykse3ZhbHVlOm99fSxzPTAsbD1jO3M8bC5sZW5ndGg7cysrKXt2YXIgaD1vKGxbc10pO2lmKCJvYmplY3QiPT10eXBlb2YgaClyZXR1cm4gaC52YWx1ZX1yZXR1cm4gbnVsbH1mdW5jdGlvbiBkKHQsbil7Zm9yKHZhciByPW9vKGUuZ2V0VGV4dCgpLG4pLGk9ci5zY2FuKCk7aSE9PU5hLkVPUyYmKHIuZ2V0VG9rZW5FbmQoKTxvfHxyLmdldFRva2VuRW5kKCk9PT1vJiZpIT09dCk7KWk9ci5zY2FuKCk7cmV0dXJuIGk9PT10JiZvPD1yLmdldFRva2VuRW5kKCk/e3N0YXJ0OmUucG9zaXRpb25BdChyLmdldFRva2VuT2Zmc2V0KCkpLGVuZDplLnBvc2l0aW9uQXQoci5nZXRUb2tlbkVuZCgpKX06bnVsbH1pZihzLmVuZFRhZ1N0YXJ0JiZvPj1zLmVuZFRhZ1N0YXJ0KXt2YXIgdT1kKE5hLkVuZFRhZyxzLmVuZFRhZ1N0YXJ0KTtyZXR1cm4gdT9oKHMudGFnLHUpOm51bGx9dmFyIHA9ZChOYS5TdGFydFRhZyxzLnN0YXJ0KTtpZihwKXJldHVybiBoKHMudGFnLHApO3ZhciBtPWQoTmEuQXR0cmlidXRlTmFtZSxzLnN0YXJ0KTtpZihtKXJldHVybiBmdW5jdGlvbihlLHQsbil7Zm9yKHZhciBvPWZ1bmN0aW9uKG8pe3ZhciBzPW51bGw7aWYoby5wcm92aWRlQXR0cmlidXRlcyhlKS5mb3JFYWNoKChmdW5jdGlvbihlKXtpZih0PT09ZS5uYW1lJiZlLmRlc2NyaXB0aW9uKXt2YXIgaT1DbyhlLHIsYSk7cz1pP3tjb250ZW50czppLHJhbmdlOm59Om51bGx9fSkpLHMpcmV0dXJuIHMuY29udGVudHM9aShzLmNvbnRlbnRzKSx7dmFsdWU6c319LHM9MCxsPWM7czxsLmxlbmd0aDtzKyspe3ZhciBoPW8obFtzXSk7aWYoIm9iamVjdCI9PXR5cGVvZiBoKXJldHVybiBoLnZhbHVlfXJldHVybiBudWxsfShiPXMudGFnLGUuZ2V0VGV4dChtKSxtKTt2YXIgZj1mdW5jdGlvbigpe2Zvcih2YXIgZT1vLTEsbj10LmNoYXJhY3RlcjtlPj0wJiZUbyhsLGUpOyllLS0sbi0tO2Zvcih2YXIgcj1lKzEsaT1uO1RvKGwscik7KXIrKyxpKys7aWYoZT49MCYmIiYiPT09bFtlXSl7cmV0dXJuIjsiPT09bFtyXT9Xci5jcmVhdGUoRHIuY3JlYXRlKHQubGluZSxuKSxEci5jcmVhdGUodC5saW5lLGkrMSkpOldyLmNyZWF0ZShEci5jcmVhdGUodC5saW5lLG4pLERyLmNyZWF0ZSh0LmxpbmUsaSkpfXJldHVybiBudWxsfSgpO2lmKGYpcmV0dXJuIGZ1bmN0aW9uKGUsdCl7dmFyIG49ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PW8tMSxuPSImIjt0Pj0wJiZUbyhlLHQpOyl0LS07Zm9yKHQrPTE7VG8oZSx0KTspbis9ZVt0XSx0Kz0xO3JldHVybiBuKyI7In0oZSk7Zm9yKHZhciByIGluIHBvKXt2YXIgYT1udWxsO2lmKG49PT0iJiIrcil7dmFyIHM9cG9bcl0uY2hhckNvZGVBdCgwKS50b1N0cmluZygxNikudG9VcHBlckNhc2UoKSxsPSJVKyI7aWYocy5sZW5ndGg8NClmb3IodmFyIGM9NC1zLmxlbmd0aCxoPTA7aDxjOylsKz0iMCIsaCs9MTtsKz1zO3ZhciBkPUZvKCJlbnRpdHkucHJvcG9zZSIsIkNoYXJhY3RlciBlbnRpdHkgcmVwcmVzZW50aW5nICciK3BvW3JdKyInLCB1bmljb2RlIGVxdWl2YWxlbnQgJyIrbCsiJyIpO2E9ZD97Y29udGVudHM6ZCxyYW5nZTp0fTpudWxsfWlmKGEpcmV0dXJuIGEuY29udGVudHM9aShhLmNvbnRlbnRzKSxhfXJldHVybiBudWxsfShsLGYpO3ZhciBnPWQoTmEuQXR0cmlidXRlVmFsdWUscy5zdGFydCk7aWYoZyl7dmFyIGI9cy50YWcsdz1mdW5jdGlvbihlKXtpZihlLmxlbmd0aDw9MSlyZXR1cm4gZS5yZXBsYWNlKC9bJyJdLywiIik7IiciIT09ZVswXSYmJyInIT09ZVswXXx8KGU9ZS5zbGljZSgxKSk7IiciIT09ZVtlLmxlbmd0aC0xXSYmJyInIT09ZVtlLmxlbmd0aC0xXXx8KGU9ZS5zbGljZSgwLC0xKSk7cmV0dXJuIGV9KGUuZ2V0VGV4dChnKSksXz1mdW5jdGlvbih0LG4pe2Zvcih2YXIgcj1vbyhlLmdldFRleHQoKSx0KSxpPXIuc2NhbigpLGE9dm9pZCAwO2khPT1OYS5FT1MmJnIuZ2V0VG9rZW5FbmQoKTw9bjspKGk9ci5zY2FuKCkpPT09TmEuQXR0cmlidXRlTmFtZSYmKGE9ci5nZXRUb2tlblRleHQoKSk7cmV0dXJuIGF9KHMuc3RhcnQsZS5vZmZzZXRBdChnLnN0YXJ0KSk7aWYoXylyZXR1cm4gZnVuY3Rpb24oZSx0LG4sbyl7Zm9yKHZhciBzPWZ1bmN0aW9uKHMpe3ZhciBsPW51bGw7aWYocy5wcm92aWRlVmFsdWVzKGUsdCkuZm9yRWFjaCgoZnVuY3Rpb24oZSl7aWYobj09PWUubmFtZSYmZS5kZXNjcmlwdGlvbil7dmFyIHQ9Q28oZSxyLGEpO2w9dD97Y29udGVudHM6dCxyYW5nZTpvfTpudWxsfX0pKSxsKXJldHVybiBsLmNvbnRlbnRzPWkobC5jb250ZW50cykse3ZhbHVlOmx9fSxsPTAsaD1jO2w8aC5sZW5ndGg7bCsrKXt2YXIgZD1zKGhbbF0pO2lmKCJvYmplY3QiPT10eXBlb2YgZClyZXR1cm4gZC52YWx1ZX1yZXR1cm4gbnVsbH0oYixfLHcsZyl9cmV0dXJuIG51bGx9LGUucHJvdG90eXBlLmNvbnZlcnRDb250ZW50cz1mdW5jdGlvbihlKXtpZighdGhpcy5kb2VzU3VwcG9ydE1hcmtkb3duKCkpe2lmKCJzdHJpbmciPT10eXBlb2YgZSlyZXR1cm4gZTtpZigia2luZCJpbiBlKXJldHVybntraW5kOiJwbGFpbnRleHQiLHZhbHVlOmUudmFsdWV9O2lmKCFBcnJheS5pc0FycmF5KGUpKXJldHVybiBlLnZhbHVlO2UubWFwKChmdW5jdGlvbihlKXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIGU/ZTplLnZhbHVlfSkpfXJldHVybiBlfSxlLnByb3RvdHlwZS5kb2VzU3VwcG9ydE1hcmtkb3duPWZ1bmN0aW9uKCl7dmFyIGUsdCxuO2lmKCFrbyh0aGlzLnN1cHBvcnRzTWFya2Rvd24pKXtpZigha28odGhpcy5sc09wdGlvbnMuY2xpZW50Q2FwYWJpbGl0aWVzKSlyZXR1cm4gdGhpcy5zdXBwb3J0c01hcmtkb3duPSEwLHRoaXMuc3VwcG9ydHNNYXJrZG93bjt2YXIgcj1udWxsPT09KG49bnVsbD09PSh0PW51bGw9PT0oZT10aGlzLmxzT3B0aW9ucy5jbGllbnRDYXBhYmlsaXRpZXMpfHx2b2lkIDA9PT1lP3ZvaWQgMDplLnRleHREb2N1bWVudCl8fHZvaWQgMD09PXQ/dm9pZCAwOnQuaG92ZXIpfHx2b2lkIDA9PT1uP3ZvaWQgMDpuLmNvbnRlbnRGb3JtYXQ7dGhpcy5zdXBwb3J0c01hcmtkb3duPUFycmF5LmlzQXJyYXkocikmJi0xIT09ci5pbmRleE9mKEhpLk1hcmtkb3duKX1yZXR1cm4gdGhpcy5zdXBwb3J0c01hcmtkb3dufSxlfSgpO2Z1bmN0aW9uIFZvKGUsdCl7cmV0dXJuIGV9T289WywsZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChlKXt0aGlzLl9fcGFyZW50PWUsdGhpcy5fX2NoYXJhY3Rlcl9jb3VudD0wLHRoaXMuX19pbmRlbnRfY291bnQ9LTEsdGhpcy5fX2FsaWdubWVudF9jb3VudD0wLHRoaXMuX193cmFwX3BvaW50X2luZGV4PTAsdGhpcy5fX3dyYXBfcG9pbnRfY2hhcmFjdGVyX2NvdW50PTAsdGhpcy5fX3dyYXBfcG9pbnRfaW5kZW50X2NvdW50PS0xLHRoaXMuX193cmFwX3BvaW50X2FsaWdubWVudF9jb3VudD0wLHRoaXMuX19pdGVtcz1bXX1mdW5jdGlvbiBuKGUsdCl7dGhpcy5fX2NhY2hlPVsiIl0sdGhpcy5fX2luZGVudF9zaXplPWUuaW5kZW50X3NpemUsdGhpcy5fX2luZGVudF9zdHJpbmc9ZS5pbmRlbnRfY2hhcixlLmluZGVudF93aXRoX3RhYnN8fCh0aGlzLl9faW5kZW50X3N0cmluZz1uZXcgQXJyYXkoZS5pbmRlbnRfc2l6ZSsxKS5qb2luKGUuaW5kZW50X2NoYXIpKSx0PXR8fCIiLGUuaW5kZW50X2xldmVsPjAmJih0PW5ldyBBcnJheShlLmluZGVudF9sZXZlbCsxKS5qb2luKHRoaXMuX19pbmRlbnRfc3RyaW5nKSksdGhpcy5fX2Jhc2Vfc3RyaW5nPXQsdGhpcy5fX2Jhc2Vfc3RyaW5nX2xlbmd0aD10Lmxlbmd0aH1mdW5jdGlvbiByKGUscil7dGhpcy5fX2luZGVudF9jYWNoZT1uZXcgbihlLHIpLHRoaXMucmF3PSExLHRoaXMuX2VuZF93aXRoX25ld2xpbmU9ZS5lbmRfd2l0aF9uZXdsaW5lLHRoaXMuaW5kZW50X3NpemU9ZS5pbmRlbnRfc2l6ZSx0aGlzLndyYXBfbGluZV9sZW5ndGg9ZS53cmFwX2xpbmVfbGVuZ3RoLHRoaXMuaW5kZW50X2VtcHR5X2xpbmVzPWUuaW5kZW50X2VtcHR5X2xpbmVzLHRoaXMuX19saW5lcz1bXSx0aGlzLnByZXZpb3VzX2xpbmU9bnVsbCx0aGlzLmN1cnJlbnRfbGluZT1udWxsLHRoaXMubmV4dF9saW5lPW5ldyB0KHRoaXMpLHRoaXMuc3BhY2VfYmVmb3JlX3Rva2VuPSExLHRoaXMubm9uX2JyZWFraW5nX3NwYWNlPSExLHRoaXMucHJldmlvdXNfdG9rZW5fd3JhcHBlZD0hMSx0aGlzLl9fYWRkX291dHB1dGxpbmUoKX10LnByb3RvdHlwZS5jbG9uZV9lbXB0eT1mdW5jdGlvbigpe3ZhciBlPW5ldyB0KHRoaXMuX19wYXJlbnQpO3JldHVybiBlLnNldF9pbmRlbnQodGhpcy5fX2luZGVudF9jb3VudCx0aGlzLl9fYWxpZ25tZW50X2NvdW50KSxlfSx0LnByb3RvdHlwZS5pdGVtPWZ1bmN0aW9uKGUpe3JldHVybiBlPDA/dGhpcy5fX2l0ZW1zW3RoaXMuX19pdGVtcy5sZW5ndGgrZV06dGhpcy5fX2l0ZW1zW2VdfSx0LnByb3RvdHlwZS5oYXNfbWF0Y2g9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PXRoaXMuX19pdGVtcy5sZW5ndGgtMTt0Pj0wO3QtLSlpZih0aGlzLl9faXRlbXNbdF0ubWF0Y2goZSkpcmV0dXJuITA7cmV0dXJuITF9LHQucHJvdG90eXBlLnNldF9pbmRlbnQ9ZnVuY3Rpb24oZSx0KXt0aGlzLmlzX2VtcHR5KCkmJih0aGlzLl9faW5kZW50X2NvdW50PWV8fDAsdGhpcy5fX2FsaWdubWVudF9jb3VudD10fHwwLHRoaXMuX19jaGFyYWN0ZXJfY291bnQ9dGhpcy5fX3BhcmVudC5nZXRfaW5kZW50X3NpemUodGhpcy5fX2luZGVudF9jb3VudCx0aGlzLl9fYWxpZ25tZW50X2NvdW50KSl9LHQucHJvdG90eXBlLl9zZXRfd3JhcF9wb2ludD1mdW5jdGlvbigpe3RoaXMuX19wYXJlbnQud3JhcF9saW5lX2xlbmd0aCYmKHRoaXMuX193cmFwX3BvaW50X2luZGV4PXRoaXMuX19pdGVtcy5sZW5ndGgsdGhpcy5fX3dyYXBfcG9pbnRfY2hhcmFjdGVyX2NvdW50PXRoaXMuX19jaGFyYWN0ZXJfY291bnQsdGhpcy5fX3dyYXBfcG9pbnRfaW5kZW50X2NvdW50PXRoaXMuX19wYXJlbnQubmV4dF9saW5lLl9faW5kZW50X2NvdW50LHRoaXMuX193cmFwX3BvaW50X2FsaWdubWVudF9jb3VudD10aGlzLl9fcGFyZW50Lm5leHRfbGluZS5fX2FsaWdubWVudF9jb3VudCl9LHQucHJvdG90eXBlLl9zaG91bGRfd3JhcD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9fd3JhcF9wb2ludF9pbmRleCYmdGhpcy5fX2NoYXJhY3Rlcl9jb3VudD50aGlzLl9fcGFyZW50LndyYXBfbGluZV9sZW5ndGgmJnRoaXMuX193cmFwX3BvaW50X2NoYXJhY3Rlcl9jb3VudD50aGlzLl9fcGFyZW50Lm5leHRfbGluZS5fX2NoYXJhY3Rlcl9jb3VudH0sdC5wcm90b3R5cGUuX2FsbG93X3dyYXA9ZnVuY3Rpb24oKXtpZih0aGlzLl9zaG91bGRfd3JhcCgpKXt0aGlzLl9fcGFyZW50LmFkZF9uZXdfbGluZSgpO3ZhciBlPXRoaXMuX19wYXJlbnQuY3VycmVudF9saW5lO3JldHVybiBlLnNldF9pbmRlbnQodGhpcy5fX3dyYXBfcG9pbnRfaW5kZW50X2NvdW50LHRoaXMuX193cmFwX3BvaW50X2FsaWdubWVudF9jb3VudCksZS5fX2l0ZW1zPXRoaXMuX19pdGVtcy5zbGljZSh0aGlzLl9fd3JhcF9wb2ludF9pbmRleCksdGhpcy5fX2l0ZW1zPXRoaXMuX19pdGVtcy5zbGljZSgwLHRoaXMuX193cmFwX3BvaW50X2luZGV4KSxlLl9fY2hhcmFjdGVyX2NvdW50Kz10aGlzLl9fY2hhcmFjdGVyX2NvdW50LXRoaXMuX193cmFwX3BvaW50X2NoYXJhY3Rlcl9jb3VudCx0aGlzLl9fY2hhcmFjdGVyX2NvdW50PXRoaXMuX193cmFwX3BvaW50X2NoYXJhY3Rlcl9jb3VudCwiICI9PT1lLl9faXRlbXNbMF0mJihlLl9faXRlbXMuc3BsaWNlKDAsMSksZS5fX2NoYXJhY3Rlcl9jb3VudC09MSksITB9cmV0dXJuITF9LHQucHJvdG90eXBlLmlzX2VtcHR5PWZ1bmN0aW9uKCl7cmV0dXJuIDA9PT10aGlzLl9faXRlbXMubGVuZ3RofSx0LnByb3RvdHlwZS5sYXN0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaXNfZW1wdHkoKT9udWxsOnRoaXMuX19pdGVtc1t0aGlzLl9faXRlbXMubGVuZ3RoLTFdfSx0LnByb3RvdHlwZS5wdXNoPWZ1bmN0aW9uKGUpe3RoaXMuX19pdGVtcy5wdXNoKGUpO3ZhciB0PWUubGFzdEluZGV4T2YoIlxuIik7LTEhPT10P3RoaXMuX19jaGFyYWN0ZXJfY291bnQ9ZS5sZW5ndGgtdDp0aGlzLl9fY2hhcmFjdGVyX2NvdW50Kz1lLmxlbmd0aH0sdC5wcm90b3R5cGUucG9wPWZ1bmN0aW9uKCl7dmFyIGU9bnVsbDtyZXR1cm4gdGhpcy5pc19lbXB0eSgpfHwoZT10aGlzLl9faXRlbXMucG9wKCksdGhpcy5fX2NoYXJhY3Rlcl9jb3VudC09ZS5sZW5ndGgpLGV9LHQucHJvdG90eXBlLl9yZW1vdmVfaW5kZW50PWZ1bmN0aW9uKCl7dGhpcy5fX2luZGVudF9jb3VudD4wJiYodGhpcy5fX2luZGVudF9jb3VudC09MSx0aGlzLl9fY2hhcmFjdGVyX2NvdW50LT10aGlzLl9fcGFyZW50LmluZGVudF9zaXplKX0sdC5wcm90b3R5cGUuX3JlbW92ZV93cmFwX2luZGVudD1mdW5jdGlvbigpe3RoaXMuX193cmFwX3BvaW50X2luZGVudF9jb3VudD4wJiYodGhpcy5fX3dyYXBfcG9pbnRfaW5kZW50X2NvdW50LT0xKX0sdC5wcm90b3R5cGUudHJpbT1mdW5jdGlvbigpe2Zvcig7IiAiPT09dGhpcy5sYXN0KCk7KXRoaXMuX19pdGVtcy5wb3AoKSx0aGlzLl9fY2hhcmFjdGVyX2NvdW50LT0xfSx0LnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3ZhciBlPSIiO3JldHVybiB0aGlzLmlzX2VtcHR5KCk/dGhpcy5fX3BhcmVudC5pbmRlbnRfZW1wdHlfbGluZXMmJihlPXRoaXMuX19wYXJlbnQuZ2V0X2luZGVudF9zdHJpbmcodGhpcy5fX2luZGVudF9jb3VudCkpOihlPXRoaXMuX19wYXJlbnQuZ2V0X2luZGVudF9zdHJpbmcodGhpcy5fX2luZGVudF9jb3VudCx0aGlzLl9fYWxpZ25tZW50X2NvdW50KSxlKz10aGlzLl9faXRlbXMuam9pbigiIikpLGV9LG4ucHJvdG90eXBlLmdldF9pbmRlbnRfc2l6ZT1mdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMuX19iYXNlX3N0cmluZ19sZW5ndGg7cmV0dXJuIHQ9dHx8MCxlPDAmJihuPTApLG4rPWUqdGhpcy5fX2luZGVudF9zaXplLG4rPXR9LG4ucHJvdG90eXBlLmdldF9pbmRlbnRfc3RyaW5nPWZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy5fX2Jhc2Vfc3RyaW5nO3JldHVybiB0PXR8fDAsZTwwJiYoZT0wLG49IiIpLHQrPWUqdGhpcy5fX2luZGVudF9zaXplLHRoaXMuX19lbnN1cmVfY2FjaGUodCksbis9dGhpcy5fX2NhY2hlW3RdfSxuLnByb3RvdHlwZS5fX2Vuc3VyZV9jYWNoZT1mdW5jdGlvbihlKXtmb3IoO2U+PXRoaXMuX19jYWNoZS5sZW5ndGg7KXRoaXMuX19hZGRfY29sdW1uKCl9LG4ucHJvdG90eXBlLl9fYWRkX2NvbHVtbj1mdW5jdGlvbigpe3ZhciBlPXRoaXMuX19jYWNoZS5sZW5ndGgsdD0wLG49IiI7dGhpcy5fX2luZGVudF9zaXplJiZlPj10aGlzLl9faW5kZW50X3NpemUmJihlLT0odD1NYXRoLmZsb29yKGUvdGhpcy5fX2luZGVudF9zaXplKSkqdGhpcy5fX2luZGVudF9zaXplLG49bmV3IEFycmF5KHQrMSkuam9pbih0aGlzLl9faW5kZW50X3N0cmluZykpLGUmJihuKz1uZXcgQXJyYXkoZSsxKS5qb2luKCIgIikpLHRoaXMuX19jYWNoZS5wdXNoKG4pfSxyLnByb3RvdHlwZS5fX2FkZF9vdXRwdXRsaW5lPWZ1bmN0aW9uKCl7dGhpcy5wcmV2aW91c19saW5lPXRoaXMuY3VycmVudF9saW5lLHRoaXMuY3VycmVudF9saW5lPXRoaXMubmV4dF9saW5lLmNsb25lX2VtcHR5KCksdGhpcy5fX2xpbmVzLnB1c2godGhpcy5jdXJyZW50X2xpbmUpfSxyLnByb3RvdHlwZS5nZXRfbGluZV9udW1iZXI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fX2xpbmVzLmxlbmd0aH0sci5wcm90b3R5cGUuZ2V0X2luZGVudF9zdHJpbmc9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5fX2luZGVudF9jYWNoZS5nZXRfaW5kZW50X3N0cmluZyhlLHQpfSxyLnByb3RvdHlwZS5nZXRfaW5kZW50X3NpemU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5fX2luZGVudF9jYWNoZS5nZXRfaW5kZW50X3NpemUoZSx0KX0sci5wcm90b3R5cGUuaXNfZW1wdHk9ZnVuY3Rpb24oKXtyZXR1cm4hdGhpcy5wcmV2aW91c19saW5lJiZ0aGlzLmN1cnJlbnRfbGluZS5pc19lbXB0eSgpfSxyLnByb3RvdHlwZS5hZGRfbmV3X2xpbmU9ZnVuY3Rpb24oZSl7cmV0dXJuISh0aGlzLmlzX2VtcHR5KCl8fCFlJiZ0aGlzLmp1c3RfYWRkZWRfbmV3bGluZSgpfHwodGhpcy5yYXd8fHRoaXMuX19hZGRfb3V0cHV0bGluZSgpLDApKX0sci5wcm90b3R5cGUuZ2V0X2NvZGU9ZnVuY3Rpb24oZSl7dGhpcy50cmltKCEwKTt2YXIgdD10aGlzLmN1cnJlbnRfbGluZS5wb3AoKTt0JiYoIlxuIj09PXRbdC5sZW5ndGgtMV0mJih0PXQucmVwbGFjZSgvXG4rJC9nLCIiKSksdGhpcy5jdXJyZW50X2xpbmUucHVzaCh0KSksdGhpcy5fZW5kX3dpdGhfbmV3bGluZSYmdGhpcy5fX2FkZF9vdXRwdXRsaW5lKCk7dmFyIG49dGhpcy5fX2xpbmVzLmpvaW4oIlxuIik7cmV0dXJuIlxuIiE9PWUmJihuPW4ucmVwbGFjZSgvW1xuXS9nLGUpKSxufSxyLnByb3RvdHlwZS5zZXRfd3JhcF9wb2ludD1mdW5jdGlvbigpe3RoaXMuY3VycmVudF9saW5lLl9zZXRfd3JhcF9wb2ludCgpfSxyLnByb3RvdHlwZS5zZXRfaW5kZW50PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGU9ZXx8MCx0PXR8fDAsdGhpcy5uZXh0X2xpbmUuc2V0X2luZGVudChlLHQpLHRoaXMuX19saW5lcy5sZW5ndGg+MT8odGhpcy5jdXJyZW50X2xpbmUuc2V0X2luZGVudChlLHQpLCEwKToodGhpcy5jdXJyZW50X2xpbmUuc2V0X2luZGVudCgpLCExKX0sci5wcm90b3R5cGUuYWRkX3Jhd190b2tlbj1mdW5jdGlvbihlKXtmb3IodmFyIHQ9MDt0PGUubmV3bGluZXM7dCsrKXRoaXMuX19hZGRfb3V0cHV0bGluZSgpO3RoaXMuY3VycmVudF9saW5lLnNldF9pbmRlbnQoLTEpLHRoaXMuY3VycmVudF9saW5lLnB1c2goZS53aGl0ZXNwYWNlX2JlZm9yZSksdGhpcy5jdXJyZW50X2xpbmUucHVzaChlLnRleHQpLHRoaXMuc3BhY2VfYmVmb3JlX3Rva2VuPSExLHRoaXMubm9uX2JyZWFraW5nX3NwYWNlPSExLHRoaXMucHJldmlvdXNfdG9rZW5fd3JhcHBlZD0hMX0sci5wcm90b3R5cGUuYWRkX3Rva2VuPWZ1bmN0aW9uKGUpe3RoaXMuX19hZGRfc3BhY2VfYmVmb3JlX3Rva2VuKCksdGhpcy5jdXJyZW50X2xpbmUucHVzaChlKSx0aGlzLnNwYWNlX2JlZm9yZV90b2tlbj0hMSx0aGlzLm5vbl9icmVha2luZ19zcGFjZT0hMSx0aGlzLnByZXZpb3VzX3Rva2VuX3dyYXBwZWQ9dGhpcy5jdXJyZW50X2xpbmUuX2FsbG93X3dyYXAoKX0sci5wcm90b3R5cGUuX19hZGRfc3BhY2VfYmVmb3JlX3Rva2VuPWZ1bmN0aW9uKCl7dGhpcy5zcGFjZV9iZWZvcmVfdG9rZW4mJiF0aGlzLmp1c3RfYWRkZWRfbmV3bGluZSgpJiYodGhpcy5ub25fYnJlYWtpbmdfc3BhY2V8fHRoaXMuc2V0X3dyYXBfcG9pbnQoKSx0aGlzLmN1cnJlbnRfbGluZS5wdXNoKCIgIikpfSxyLnByb3RvdHlwZS5yZW1vdmVfaW5kZW50PWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD10aGlzLl9fbGluZXMubGVuZ3RoO2U8dDspdGhpcy5fX2xpbmVzW2VdLl9yZW1vdmVfaW5kZW50KCksZSsrO3RoaXMuY3VycmVudF9saW5lLl9yZW1vdmVfd3JhcF9pbmRlbnQoKX0sci5wcm90b3R5cGUudHJpbT1mdW5jdGlvbihlKXtmb3IoZT12b2lkIDAhPT1lJiZlLHRoaXMuY3VycmVudF9saW5lLnRyaW0oKTtlJiZ0aGlzLl9fbGluZXMubGVuZ3RoPjEmJnRoaXMuY3VycmVudF9saW5lLmlzX2VtcHR5KCk7KXRoaXMuX19saW5lcy5wb3AoKSx0aGlzLmN1cnJlbnRfbGluZT10aGlzLl9fbGluZXNbdGhpcy5fX2xpbmVzLmxlbmd0aC0xXSx0aGlzLmN1cnJlbnRfbGluZS50cmltKCk7dGhpcy5wcmV2aW91c19saW5lPXRoaXMuX19saW5lcy5sZW5ndGg+MT90aGlzLl9fbGluZXNbdGhpcy5fX2xpbmVzLmxlbmd0aC0yXTpudWxsfSxyLnByb3RvdHlwZS5qdXN0X2FkZGVkX25ld2xpbmU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jdXJyZW50X2xpbmUuaXNfZW1wdHkoKX0sci5wcm90b3R5cGUuanVzdF9hZGRlZF9ibGFua2xpbmU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pc19lbXB0eSgpfHx0aGlzLmN1cnJlbnRfbGluZS5pc19lbXB0eSgpJiZ0aGlzLnByZXZpb3VzX2xpbmUuaXNfZW1wdHkoKX0sci5wcm90b3R5cGUuZW5zdXJlX2VtcHR5X2xpbmVfYWJvdmU9ZnVuY3Rpb24oZSxuKXtmb3IodmFyIHI9dGhpcy5fX2xpbmVzLmxlbmd0aC0yO3I+PTA7KXt2YXIgaT10aGlzLl9fbGluZXNbcl07aWYoaS5pc19lbXB0eSgpKWJyZWFrO2lmKDAhPT1pLml0ZW0oMCkuaW5kZXhPZihlKSYmaS5pdGVtKC0xKSE9PW4pe3RoaXMuX19saW5lcy5zcGxpY2UocisxLDAsbmV3IHQodGhpcykpLHRoaXMucHJldmlvdXNfbGluZT10aGlzLl9fbGluZXNbdGhpcy5fX2xpbmVzLmxlbmd0aC0yXTticmVha31yLS19fSxlLmV4cG9ydHMuT3V0cHV0PXJ9LCwsLGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoZSx0KXt0aGlzLnJhd19vcHRpb25zPW4oZSx0KSx0aGlzLmRpc2FibGVkPXRoaXMuX2dldF9ib29sZWFuKCJkaXNhYmxlZCIpLHRoaXMuZW9sPXRoaXMuX2dldF9jaGFyYWN0ZXJzKCJlb2wiLCJhdXRvIiksdGhpcy5lbmRfd2l0aF9uZXdsaW5lPXRoaXMuX2dldF9ib29sZWFuKCJlbmRfd2l0aF9uZXdsaW5lIiksdGhpcy5pbmRlbnRfc2l6ZT10aGlzLl9nZXRfbnVtYmVyKCJpbmRlbnRfc2l6ZSIsNCksdGhpcy5pbmRlbnRfY2hhcj10aGlzLl9nZXRfY2hhcmFjdGVycygiaW5kZW50X2NoYXIiLCIgIiksdGhpcy5pbmRlbnRfbGV2ZWw9dGhpcy5fZ2V0X251bWJlcigiaW5kZW50X2xldmVsIiksdGhpcy5wcmVzZXJ2ZV9uZXdsaW5lcz10aGlzLl9nZXRfYm9vbGVhbigicHJlc2VydmVfbmV3bGluZXMiLCEwKSx0aGlzLm1heF9wcmVzZXJ2ZV9uZXdsaW5lcz10aGlzLl9nZXRfbnVtYmVyKCJtYXhfcHJlc2VydmVfbmV3bGluZXMiLDMyNzg2KSx0aGlzLnByZXNlcnZlX25ld2xpbmVzfHwodGhpcy5tYXhfcHJlc2VydmVfbmV3bGluZXM9MCksdGhpcy5pbmRlbnRfd2l0aF90YWJzPXRoaXMuX2dldF9ib29sZWFuKCJpbmRlbnRfd2l0aF90YWJzIiwiXHQiPT09dGhpcy5pbmRlbnRfY2hhciksdGhpcy5pbmRlbnRfd2l0aF90YWJzJiYodGhpcy5pbmRlbnRfY2hhcj0iXHQiLDE9PT10aGlzLmluZGVudF9zaXplJiYodGhpcy5pbmRlbnRfc2l6ZT00KSksdGhpcy53cmFwX2xpbmVfbGVuZ3RoPXRoaXMuX2dldF9udW1iZXIoIndyYXBfbGluZV9sZW5ndGgiLHRoaXMuX2dldF9udW1iZXIoIm1heF9jaGFyIikpLHRoaXMuaW5kZW50X2VtcHR5X2xpbmVzPXRoaXMuX2dldF9ib29sZWFuKCJpbmRlbnRfZW1wdHlfbGluZXMiKSx0aGlzLnRlbXBsYXRpbmc9dGhpcy5fZ2V0X3NlbGVjdGlvbl9saXN0KCJ0ZW1wbGF0aW5nIixbImF1dG8iLCJub25lIiwiZGphbmdvIiwiZXJiIiwiaGFuZGxlYmFycyIsInBocCIsInNtYXJ0eSJdLFsiYXV0byJdKX1mdW5jdGlvbiBuKGUsdCl7dmFyIG4saT17fTtmb3IobiBpbiBlPXIoZSkpbiE9PXQmJihpW25dPWVbbl0pO2lmKHQmJmVbdF0pZm9yKG4gaW4gZVt0XSlpW25dPWVbdF1bbl07cmV0dXJuIGl9ZnVuY3Rpb24gcihlKXt2YXIgdCxuPXt9O2Zvcih0IGluIGUpblt0LnJlcGxhY2UoLy0vZywiXyIpXT1lW3RdO3JldHVybiBufXQucHJvdG90eXBlLl9nZXRfYXJyYXk9ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLnJhd19vcHRpb25zW2VdLHI9dHx8W107cmV0dXJuIm9iamVjdCI9PXR5cGVvZiBuP251bGwhPT1uJiYiZnVuY3Rpb24iPT10eXBlb2Ygbi5jb25jYXQmJihyPW4uY29uY2F0KCkpOiJzdHJpbmciPT10eXBlb2YgbiYmKHI9bi5zcGxpdCgvW15hLXpBLVowLTlfXC9cLV0rLykpLHJ9LHQucHJvdG90eXBlLl9nZXRfYm9vbGVhbj1mdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMucmF3X29wdGlvbnNbZV07cmV0dXJuIHZvaWQgMD09PW4/ISF0OiEhbn0sdC5wcm90b3R5cGUuX2dldF9jaGFyYWN0ZXJzPWZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy5yYXdfb3B0aW9uc1tlXSxyPXR8fCIiO3JldHVybiJzdHJpbmciPT10eXBlb2YgbiYmKHI9bi5yZXBsYWNlKC9cXHIvLCJcciIpLnJlcGxhY2UoL1xcbi8sIlxuIikucmVwbGFjZSgvXFx0LywiXHQiKSkscn0sdC5wcm90b3R5cGUuX2dldF9udW1iZXI9ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLnJhd19vcHRpb25zW2VdO3Q9cGFyc2VJbnQodCwxMCksaXNOYU4odCkmJih0PTApO3ZhciByPXBhcnNlSW50KG4sMTApO3JldHVybiBpc05hTihyKSYmKHI9dCkscn0sdC5wcm90b3R5cGUuX2dldF9zZWxlY3Rpb249ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMuX2dldF9zZWxlY3Rpb25fbGlzdChlLHQsbik7aWYoMSE9PXIubGVuZ3RoKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBPcHRpb24gVmFsdWU6IFRoZSBvcHRpb24gJyIrZSsiJyBjYW4gb25seSBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6XG4iK3QrIlxuWW91IHBhc3NlZCBpbjogJyIrdGhpcy5yYXdfb3B0aW9uc1tlXSsiJyIpO3JldHVybiByWzBdfSx0LnByb3RvdHlwZS5fZ2V0X3NlbGVjdGlvbl9saXN0PWZ1bmN0aW9uKGUsdCxuKXtpZighdHx8MD09PXQubGVuZ3RoKXRocm93IG5ldyBFcnJvcigiU2VsZWN0aW9uIGxpc3QgY2Fubm90IGJlIGVtcHR5LiIpO2lmKG49bnx8W3RbMF1dLCF0aGlzLl9pc192YWxpZF9zZWxlY3Rpb24obix0KSl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgRGVmYXVsdCBWYWx1ZSEiKTt2YXIgcj10aGlzLl9nZXRfYXJyYXkoZSxuKTtpZighdGhpcy5faXNfdmFsaWRfc2VsZWN0aW9uKHIsdCkpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIE9wdGlvbiBWYWx1ZTogVGhlIG9wdGlvbiAnIitlKyInIGNhbiBjb250YWluIG9ubHkgdGhlIGZvbGxvd2luZyB2YWx1ZXM6XG4iK3QrIlxuWW91IHBhc3NlZCBpbjogJyIrdGhpcy5yYXdfb3B0aW9uc1tlXSsiJyIpO3JldHVybiByfSx0LnByb3RvdHlwZS5faXNfdmFsaWRfc2VsZWN0aW9uPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUubGVuZ3RoJiZ0Lmxlbmd0aCYmIWUuc29tZSgoZnVuY3Rpb24oZSl7cmV0dXJuLTE9PT10LmluZGV4T2YoZSl9KSl9LGUuZXhwb3J0cy5PcHRpb25zPXQsZS5leHBvcnRzLm5vcm1hbGl6ZU9wdHM9cixlLmV4cG9ydHMubWVyZ2VPcHRzPW59LCxmdW5jdGlvbihlKXt2YXIgdD1SZWdFeHAucHJvdG90eXBlLmhhc093blByb3BlcnR5KCJzdGlja3kiKTtmdW5jdGlvbiBuKGUpe3RoaXMuX19pbnB1dD1lfHwiIix0aGlzLl9faW5wdXRfbGVuZ3RoPXRoaXMuX19pbnB1dC5sZW5ndGgsdGhpcy5fX3Bvc2l0aW9uPTB9bi5wcm90b3R5cGUucmVzdGFydD1mdW5jdGlvbigpe3RoaXMuX19wb3NpdGlvbj0wfSxuLnByb3RvdHlwZS5iYWNrPWZ1bmN0aW9uKCl7dGhpcy5fX3Bvc2l0aW9uPjAmJih0aGlzLl9fcG9zaXRpb24tPTEpfSxuLnByb3RvdHlwZS5oYXNOZXh0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX19wb3NpdGlvbjx0aGlzLl9faW5wdXRfbGVuZ3RofSxuLnByb3RvdHlwZS5uZXh0PWZ1bmN0aW9uKCl7dmFyIGU9bnVsbDtyZXR1cm4gdGhpcy5oYXNOZXh0KCkmJihlPXRoaXMuX19pbnB1dC5jaGFyQXQodGhpcy5fX3Bvc2l0aW9uKSx0aGlzLl9fcG9zaXRpb24rPTEpLGV9LG4ucHJvdG90eXBlLnBlZWs9ZnVuY3Rpb24oZSl7dmFyIHQ9bnVsbDtyZXR1cm4gZT1lfHwwLChlKz10aGlzLl9fcG9zaXRpb24pPj0wJiZlPHRoaXMuX19pbnB1dF9sZW5ndGgmJih0PXRoaXMuX19pbnB1dC5jaGFyQXQoZSkpLHR9LG4ucHJvdG90eXBlLl9fbWF0Y2g9ZnVuY3Rpb24oZSxuKXtlLmxhc3RJbmRleD1uO3ZhciByPWUuZXhlYyh0aGlzLl9faW5wdXQpO3JldHVybiFyfHx0JiZlLnN0aWNreXx8ci5pbmRleCE9PW4mJihyPW51bGwpLHJ9LG4ucHJvdG90eXBlLnRlc3Q9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdD10fHwwLCh0Kz10aGlzLl9fcG9zaXRpb24pPj0wJiZ0PHRoaXMuX19pbnB1dF9sZW5ndGgmJiEhdGhpcy5fX21hdGNoKGUsdCl9LG4ucHJvdG90eXBlLnRlc3RDaGFyPWZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy5wZWVrKHQpO3JldHVybiBlLmxhc3RJbmRleD0wLG51bGwhPT1uJiZlLnRlc3Qobil9LG4ucHJvdG90eXBlLm1hdGNoPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuX19tYXRjaChlLHRoaXMuX19wb3NpdGlvbik7cmV0dXJuIHQ/dGhpcy5fX3Bvc2l0aW9uKz10WzBdLmxlbmd0aDp0PW51bGwsdH0sbi5wcm90b3R5cGUucmVhZD1mdW5jdGlvbihlLHQsbil7dmFyIHIsaT0iIjtyZXR1cm4gZSYmKHI9dGhpcy5tYXRjaChlKSkmJihpKz1yWzBdKSwhdHx8IXImJmV8fChpKz10aGlzLnJlYWRVbnRpbCh0LG4pKSxpfSxuLnByb3RvdHlwZS5yZWFkVW50aWw9ZnVuY3Rpb24oZSx0KXt2YXIgbixyPXRoaXMuX19wb3NpdGlvbjtlLmxhc3RJbmRleD10aGlzLl9fcG9zaXRpb247dmFyIGk9ZS5leGVjKHRoaXMuX19pbnB1dCk7cmV0dXJuIGk/KHI9aS5pbmRleCx0JiYocis9aVswXS5sZW5ndGgpKTpyPXRoaXMuX19pbnB1dF9sZW5ndGgsbj10aGlzLl9faW5wdXQuc3Vic3RyaW5nKHRoaXMuX19wb3NpdGlvbixyKSx0aGlzLl9fcG9zaXRpb249cixufSxuLnByb3RvdHlwZS5yZWFkVW50aWxBZnRlcj1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5yZWFkVW50aWwoZSwhMCl9LG4ucHJvdG90eXBlLmdldF9yZWdleHA9ZnVuY3Rpb24oZSxuKXt2YXIgcj1udWxsLGk9ImciO3JldHVybiBuJiZ0JiYoaT0ieSIpLCJzdHJpbmciPT10eXBlb2YgZSYmIiIhPT1lP3I9bmV3IFJlZ0V4cChlLGkpOmUmJihyPW5ldyBSZWdFeHAoZS5zb3VyY2UsaSkpLHJ9LG4ucHJvdG90eXBlLmdldF9saXRlcmFsX3JlZ2V4cD1mdW5jdGlvbihlKXtyZXR1cm4gUmVnRXhwKGUucmVwbGFjZSgvWy1cL1xcXiQqKz8uKCl8W1xde31dL2csIlxcJCYiKSl9LG4ucHJvdG90eXBlLnBlZWtVbnRpbEFmdGVyPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuX19wb3NpdGlvbixuPXRoaXMucmVhZFVudGlsQWZ0ZXIoZSk7cmV0dXJuIHRoaXMuX19wb3NpdGlvbj10LG59LG4ucHJvdG90eXBlLmxvb2tCYWNrPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuX19wb3NpdGlvbi0xO3JldHVybiB0Pj1lLmxlbmd0aCYmdGhpcy5fX2lucHV0LnN1YnN0cmluZyh0LWUubGVuZ3RoLHQpLnRvTG93ZXJDYXNlKCk9PT1lfSxlLmV4cG9ydHMuSW5wdXRTY2FubmVyPW59LCwsLCxmdW5jdGlvbihlKXtmdW5jdGlvbiB0KGUsdCl7ZT0ic3RyaW5nIj09dHlwZW9mIGU/ZTplLnNvdXJjZSx0PSJzdHJpbmciPT10eXBlb2YgdD90OnQuc291cmNlLHRoaXMuX19kaXJlY3RpdmVzX2Jsb2NrX3BhdHRlcm49bmV3IFJlZ0V4cChlKy8gYmVhdXRpZnkoIFx3K1s6XVx3KykrIC8uc291cmNlK3QsImciKSx0aGlzLl9fZGlyZWN0aXZlX3BhdHRlcm49LyAoXHcrKVs6XShcdyspL2csdGhpcy5fX2RpcmVjdGl2ZXNfZW5kX2lnbm9yZV9wYXR0ZXJuPW5ldyBSZWdFeHAoZSsvXHNiZWF1dGlmeVxzaWdub3JlOmVuZFxzLy5zb3VyY2UrdCwiZyIpfXQucHJvdG90eXBlLmdldF9kaXJlY3RpdmVzPWZ1bmN0aW9uKGUpe2lmKCFlLm1hdGNoKHRoaXMuX19kaXJlY3RpdmVzX2Jsb2NrX3BhdHRlcm4pKXJldHVybiBudWxsO3ZhciB0PXt9O3RoaXMuX19kaXJlY3RpdmVfcGF0dGVybi5sYXN0SW5kZXg9MDtmb3IodmFyIG49dGhpcy5fX2RpcmVjdGl2ZV9wYXR0ZXJuLmV4ZWMoZSk7bjspdFtuWzFdXT1uWzJdLG49dGhpcy5fX2RpcmVjdGl2ZV9wYXR0ZXJuLmV4ZWMoZSk7cmV0dXJuIHR9LHQucHJvdG90eXBlLnJlYWRJZ25vcmVkPWZ1bmN0aW9uKGUpe3JldHVybiBlLnJlYWRVbnRpbEFmdGVyKHRoaXMuX19kaXJlY3RpdmVzX2VuZF9pZ25vcmVfcGF0dGVybil9LGUuZXhwb3J0cy5EaXJlY3RpdmVzPXR9LCxmdW5jdGlvbihlLHQsbil7dmFyIHI9bigxNikuQmVhdXRpZmllcixpPW4oMTcpLk9wdGlvbnM7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIG5ldyByKGUsdCkuYmVhdXRpZnkoKX0sZS5leHBvcnRzLmRlZmF1bHRPcHRpb25zPWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBpfX0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPW4oMTcpLk9wdGlvbnMsaT1uKDIpLk91dHB1dCxhPW4oOCkuSW5wdXRTY2FubmVyLG89bmV3KDAsbigxMykuRGlyZWN0aXZlcykoL1wvXCovLC9cKlwvLykscz0vXHJcbnxbXHJcbl0vLGw9L1xyXG58W1xyXG5dL2csYz0vXHMvLGg9Lyg/OlxzfFxuKSsvZyxkPS9cL1wqKD86W1xzXFNdKj8pKCg/OlwqXC8pfCQpL2csdT0vXC9cLyg/OlteXG5cclx1MjAyOFx1MjAyOV0qKS9nO2Z1bmN0aW9uIHAoZSx0KXt0aGlzLl9zb3VyY2VfdGV4dD1lfHwiIix0aGlzLl9vcHRpb25zPW5ldyByKHQpLHRoaXMuX2NoPW51bGwsdGhpcy5faW5wdXQ9bnVsbCx0aGlzLk5FU1RFRF9BVF9SVUxFPXsiQHBhZ2UiOiEwLCJAZm9udC1mYWNlIjohMCwiQGtleWZyYW1lcyI6ITAsIkBtZWRpYSI6ITAsIkBzdXBwb3J0cyI6ITAsIkBkb2N1bWVudCI6ITB9LHRoaXMuQ09ORElUSU9OQUxfR1JPVVBfUlVMRT17IkBtZWRpYSI6ITAsIkBzdXBwb3J0cyI6ITAsIkBkb2N1bWVudCI6ITB9fXAucHJvdG90eXBlLmVhdFN0cmluZz1mdW5jdGlvbihlKXt2YXIgdD0iIjtmb3IodGhpcy5fY2g9dGhpcy5faW5wdXQubmV4dCgpO3RoaXMuX2NoOyl7aWYodCs9dGhpcy5fY2gsIlxcIj09PXRoaXMuX2NoKXQrPXRoaXMuX2lucHV0Lm5leHQoKTtlbHNlIGlmKC0xIT09ZS5pbmRleE9mKHRoaXMuX2NoKXx8IlxuIj09PXRoaXMuX2NoKWJyZWFrO3RoaXMuX2NoPXRoaXMuX2lucHV0Lm5leHQoKX1yZXR1cm4gdH0scC5wcm90b3R5cGUuZWF0V2hpdGVzcGFjZT1mdW5jdGlvbihlKXtmb3IodmFyIHQ9Yy50ZXN0KHRoaXMuX2lucHV0LnBlZWsoKSksbj0wO2MudGVzdCh0aGlzLl9pbnB1dC5wZWVrKCkpOyl0aGlzLl9jaD10aGlzLl9pbnB1dC5uZXh0KCksZSYmIlxuIj09PXRoaXMuX2NoJiYoMD09PW58fG48dGhpcy5fb3B0aW9ucy5tYXhfcHJlc2VydmVfbmV3bGluZXMpJiYobisrLHRoaXMuX291dHB1dC5hZGRfbmV3X2xpbmUoITApKTtyZXR1cm4gdH0scC5wcm90b3R5cGUuZm91bmROZXN0ZWRQc2V1ZG9DbGFzcz1mdW5jdGlvbigpe2Zvcih2YXIgZT0wLHQ9MSxuPXRoaXMuX2lucHV0LnBlZWsodCk7bjspe2lmKCJ7Ij09PW4pcmV0dXJuITA7aWYoIigiPT09billKz0xO2Vsc2UgaWYoIikiPT09bil7aWYoMD09PWUpcmV0dXJuITE7ZS09MX1lbHNlIGlmKCI7Ij09PW58fCJ9Ij09PW4pcmV0dXJuITE7dCsrLG49dGhpcy5faW5wdXQucGVlayh0KX1yZXR1cm4hMX0scC5wcm90b3R5cGUucHJpbnRfc3RyaW5nPWZ1bmN0aW9uKGUpe3RoaXMuX291dHB1dC5zZXRfaW5kZW50KHRoaXMuX2luZGVudExldmVsKSx0aGlzLl9vdXRwdXQubm9uX2JyZWFraW5nX3NwYWNlPSEwLHRoaXMuX291dHB1dC5hZGRfdG9rZW4oZSl9LHAucHJvdG90eXBlLnByZXNlcnZlU2luZ2xlU3BhY2U9ZnVuY3Rpb24oZSl7ZSYmKHRoaXMuX291dHB1dC5zcGFjZV9iZWZvcmVfdG9rZW49ITApfSxwLnByb3RvdHlwZS5pbmRlbnQ9ZnVuY3Rpb24oKXt0aGlzLl9pbmRlbnRMZXZlbCsrfSxwLnByb3RvdHlwZS5vdXRkZW50PWZ1bmN0aW9uKCl7dGhpcy5faW5kZW50TGV2ZWw+MCYmdGhpcy5faW5kZW50TGV2ZWwtLX0scC5wcm90b3R5cGUuYmVhdXRpZnk9ZnVuY3Rpb24oKXtpZih0aGlzLl9vcHRpb25zLmRpc2FibGVkKXJldHVybiB0aGlzLl9zb3VyY2VfdGV4dDt2YXIgZT10aGlzLl9zb3VyY2VfdGV4dCx0PXRoaXMuX29wdGlvbnMuZW9sOyJhdXRvIj09PXQmJih0PSJcbiIsZSYmcy50ZXN0KGV8fCIiKSYmKHQ9ZS5tYXRjaChzKVswXSkpO3ZhciBuPShlPWUucmVwbGFjZShsLCJcbiIpKS5tYXRjaCgvXltcdCBdKi8pWzBdO3RoaXMuX291dHB1dD1uZXcgaSh0aGlzLl9vcHRpb25zLG4pLHRoaXMuX2lucHV0PW5ldyBhKGUpLHRoaXMuX2luZGVudExldmVsPTAsdGhpcy5fbmVzdGVkTGV2ZWw9MCx0aGlzLl9jaD1udWxsO2Zvcih2YXIgcixwLG09MCxmPSExLGc9ITEsYj0hMSx3PSExLF89ITEsdj10aGlzLl9jaDtyPSIiIT09dGhpcy5faW5wdXQucmVhZChoKSxwPXYsdGhpcy5fY2g9dGhpcy5faW5wdXQubmV4dCgpLCJcXCI9PT10aGlzLl9jaCYmdGhpcy5faW5wdXQuaGFzTmV4dCgpJiYodGhpcy5fY2grPXRoaXMuX2lucHV0Lm5leHQoKSksdj10aGlzLl9jaCx0aGlzLl9jaDspaWYoIi8iPT09dGhpcy5fY2gmJiIqIj09PXRoaXMuX2lucHV0LnBlZWsoKSl7dGhpcy5fb3V0cHV0LmFkZF9uZXdfbGluZSgpLHRoaXMuX2lucHV0LmJhY2soKTt2YXIgeT10aGlzLl9pbnB1dC5yZWFkKGQpLFQ9by5nZXRfZGlyZWN0aXZlcyh5KTtUJiYic3RhcnQiPT09VC5pZ25vcmUmJih5Kz1vLnJlYWRJZ25vcmVkKHRoaXMuX2lucHV0KSksdGhpcy5wcmludF9zdHJpbmcoeSksdGhpcy5lYXRXaGl0ZXNwYWNlKCEwKSx0aGlzLl9vdXRwdXQuYWRkX25ld19saW5lKCl9ZWxzZSBpZigiLyI9PT10aGlzLl9jaCYmIi8iPT09dGhpcy5faW5wdXQucGVlaygpKXRoaXMuX291dHB1dC5zcGFjZV9iZWZvcmVfdG9rZW49ITAsdGhpcy5faW5wdXQuYmFjaygpLHRoaXMucHJpbnRfc3RyaW5nKHRoaXMuX2lucHV0LnJlYWQodSkpLHRoaXMuZWF0V2hpdGVzcGFjZSghMCk7ZWxzZSBpZigiQCI9PT10aGlzLl9jaClpZih0aGlzLnByZXNlcnZlU2luZ2xlU3BhY2UociksInsiPT09dGhpcy5faW5wdXQucGVlaygpKXRoaXMucHJpbnRfc3RyaW5nKHRoaXMuX2NoK3RoaXMuZWF0U3RyaW5nKCJ9IikpO2Vsc2V7dGhpcy5wcmludF9zdHJpbmcodGhpcy5fY2gpO3ZhciBrPXRoaXMuX2lucHV0LnBlZWtVbnRpbEFmdGVyKC9bOiAsO3t9KClbXF1cLz0nIl0vZyk7ay5tYXRjaCgvWyA6XSQvKSYmKGs9dGhpcy5lYXRTdHJpbmcoIjogIikucmVwbGFjZSgvXHMkLywiIiksdGhpcy5wcmludF9zdHJpbmcoayksdGhpcy5fb3V0cHV0LnNwYWNlX2JlZm9yZV90b2tlbj0hMCksImV4dGVuZCI9PT0oaz1rLnJlcGxhY2UoL1xzJC8sIiIpKT93PSEwOiJpbXBvcnQiPT09ayYmKF89ITApLGsgaW4gdGhpcy5ORVNURURfQVRfUlVMRT8odGhpcy5fbmVzdGVkTGV2ZWwrPTEsayBpbiB0aGlzLkNPTkRJVElPTkFMX0dST1VQX1JVTEUmJihiPSEwKSk6Znx8MCE9PW18fC0xPT09ay5pbmRleE9mKCI6Iil8fChnPSEwLHRoaXMuaW5kZW50KCkpfWVsc2UiIyI9PT10aGlzLl9jaCYmInsiPT09dGhpcy5faW5wdXQucGVlaygpPyh0aGlzLnByZXNlcnZlU2luZ2xlU3BhY2UociksdGhpcy5wcmludF9zdHJpbmcodGhpcy5fY2grdGhpcy5lYXRTdHJpbmcoIn0iKSkpOiJ7Ij09PXRoaXMuX2NoPyhnJiYoZz0hMSx0aGlzLm91dGRlbnQoKSksYj8oYj0hMSxmPXRoaXMuX2luZGVudExldmVsPj10aGlzLl9uZXN0ZWRMZXZlbCk6Zj10aGlzLl9pbmRlbnRMZXZlbD49dGhpcy5fbmVzdGVkTGV2ZWwtMSx0aGlzLl9vcHRpb25zLm5ld2xpbmVfYmV0d2Vlbl9ydWxlcyYmZiYmdGhpcy5fb3V0cHV0LnByZXZpb3VzX2xpbmUmJiJ7IiE9PXRoaXMuX291dHB1dC5wcmV2aW91c19saW5lLml0ZW0oLTEpJiZ0aGlzLl9vdXRwdXQuZW5zdXJlX2VtcHR5X2xpbmVfYWJvdmUoIi8iLCIsIiksdGhpcy5fb3V0cHV0LnNwYWNlX2JlZm9yZV90b2tlbj0hMCwiZXhwYW5kIj09PXRoaXMuX29wdGlvbnMuYnJhY2Vfc3R5bGU/KHRoaXMuX291dHB1dC5hZGRfbmV3X2xpbmUoKSx0aGlzLnByaW50X3N0cmluZyh0aGlzLl9jaCksdGhpcy5pbmRlbnQoKSx0aGlzLl9vdXRwdXQuc2V0X2luZGVudCh0aGlzLl9pbmRlbnRMZXZlbCkpOih0aGlzLmluZGVudCgpLHRoaXMucHJpbnRfc3RyaW5nKHRoaXMuX2NoKSksdGhpcy5lYXRXaGl0ZXNwYWNlKCEwKSx0aGlzLl9vdXRwdXQuYWRkX25ld19saW5lKCkpOiJ9Ij09PXRoaXMuX2NoPyh0aGlzLm91dGRlbnQoKSx0aGlzLl9vdXRwdXQuYWRkX25ld19saW5lKCksInsiPT09cCYmdGhpcy5fb3V0cHV0LnRyaW0oITApLF89ITEsdz0hMSxnJiYodGhpcy5vdXRkZW50KCksZz0hMSksdGhpcy5wcmludF9zdHJpbmcodGhpcy5fY2gpLGY9ITEsdGhpcy5fbmVzdGVkTGV2ZWwmJnRoaXMuX25lc3RlZExldmVsLS0sdGhpcy5lYXRXaGl0ZXNwYWNlKCEwKSx0aGlzLl9vdXRwdXQuYWRkX25ld19saW5lKCksdGhpcy5fb3B0aW9ucy5uZXdsaW5lX2JldHdlZW5fcnVsZXMmJiF0aGlzLl9vdXRwdXQuanVzdF9hZGRlZF9ibGFua2xpbmUoKSYmIn0iIT09dGhpcy5faW5wdXQucGVlaygpJiZ0aGlzLl9vdXRwdXQuYWRkX25ld19saW5lKCEwKSk6IjoiPT09dGhpcy5fY2g/IWYmJiFifHx0aGlzLl9pbnB1dC5sb29rQmFjaygiJiIpfHx0aGlzLmZvdW5kTmVzdGVkUHNldWRvQ2xhc3MoKXx8dGhpcy5faW5wdXQubG9va0JhY2soIigiKXx8d3x8MCE9PW0/KHRoaXMuX2lucHV0Lmxvb2tCYWNrKCIgIikmJih0aGlzLl9vdXRwdXQuc3BhY2VfYmVmb3JlX3Rva2VuPSEwKSwiOiI9PT10aGlzLl9pbnB1dC5wZWVrKCk/KHRoaXMuX2NoPXRoaXMuX2lucHV0Lm5leHQoKSx0aGlzLnByaW50X3N0cmluZygiOjoiKSk6dGhpcy5wcmludF9zdHJpbmcoIjoiKSk6KHRoaXMucHJpbnRfc3RyaW5nKCI6IiksZ3x8KGc9ITAsdGhpcy5fb3V0cHV0LnNwYWNlX2JlZm9yZV90b2tlbj0hMCx0aGlzLmVhdFdoaXRlc3BhY2UoITApLHRoaXMuaW5kZW50KCkpKTonIic9PT10aGlzLl9jaHx8IiciPT09dGhpcy5fY2g/KHRoaXMucHJlc2VydmVTaW5nbGVTcGFjZShyKSx0aGlzLnByaW50X3N0cmluZyh0aGlzLl9jaCt0aGlzLmVhdFN0cmluZyh0aGlzLl9jaCkpLHRoaXMuZWF0V2hpdGVzcGFjZSghMCkpOiI7Ij09PXRoaXMuX2NoPzA9PT1tPyhnJiYodGhpcy5vdXRkZW50KCksZz0hMSksdz0hMSxfPSExLHRoaXMucHJpbnRfc3RyaW5nKHRoaXMuX2NoKSx0aGlzLmVhdFdoaXRlc3BhY2UoITApLCIvIiE9PXRoaXMuX2lucHV0LnBlZWsoKSYmdGhpcy5fb3V0cHV0LmFkZF9uZXdfbGluZSgpKToodGhpcy5wcmludF9zdHJpbmcodGhpcy5fY2gpLHRoaXMuZWF0V2hpdGVzcGFjZSghMCksdGhpcy5fb3V0cHV0LnNwYWNlX2JlZm9yZV90b2tlbj0hMCk6IigiPT09dGhpcy5fY2g/dGhpcy5faW5wdXQubG9va0JhY2soInVybCIpPyh0aGlzLnByaW50X3N0cmluZyh0aGlzLl9jaCksdGhpcy5lYXRXaGl0ZXNwYWNlKCksbSsrLHRoaXMuaW5kZW50KCksdGhpcy5fY2g9dGhpcy5faW5wdXQubmV4dCgpLCIpIj09PXRoaXMuX2NofHwnIic9PT10aGlzLl9jaHx8IiciPT09dGhpcy5fY2g/dGhpcy5faW5wdXQuYmFjaygpOnRoaXMuX2NoJiYodGhpcy5wcmludF9zdHJpbmcodGhpcy5fY2grdGhpcy5lYXRTdHJpbmcoIikiKSksbSYmKG0tLSx0aGlzLm91dGRlbnQoKSkpKToodGhpcy5wcmVzZXJ2ZVNpbmdsZVNwYWNlKHIpLHRoaXMucHJpbnRfc3RyaW5nKHRoaXMuX2NoKSx0aGlzLmVhdFdoaXRlc3BhY2UoKSxtKyssdGhpcy5pbmRlbnQoKSk6IikiPT09dGhpcy5fY2g/KG0mJihtLS0sdGhpcy5vdXRkZW50KCkpLHRoaXMucHJpbnRfc3RyaW5nKHRoaXMuX2NoKSk6IiwiPT09dGhpcy5fY2g/KHRoaXMucHJpbnRfc3RyaW5nKHRoaXMuX2NoKSx0aGlzLmVhdFdoaXRlc3BhY2UoITApLCF0aGlzLl9vcHRpb25zLnNlbGVjdG9yX3NlcGFyYXRvcl9uZXdsaW5lfHxnfHwwIT09bXx8X3x8dz90aGlzLl9vdXRwdXQuc3BhY2VfYmVmb3JlX3Rva2VuPSEwOnRoaXMuX291dHB1dC5hZGRfbmV3X2xpbmUoKSk6Ij4iIT09dGhpcy5fY2gmJiIrIiE9PXRoaXMuX2NoJiYifiIhPT10aGlzLl9jaHx8Z3x8MCE9PW0/Il0iPT09dGhpcy5fY2g/dGhpcy5wcmludF9zdHJpbmcodGhpcy5fY2gpOiJbIj09PXRoaXMuX2NoPyh0aGlzLnByZXNlcnZlU2luZ2xlU3BhY2UociksdGhpcy5wcmludF9zdHJpbmcodGhpcy5fY2gpKToiPSI9PT10aGlzLl9jaD8odGhpcy5lYXRXaGl0ZXNwYWNlKCksdGhpcy5wcmludF9zdHJpbmcoIj0iKSxjLnRlc3QodGhpcy5fY2gpJiYodGhpcy5fY2g9IiIpKToiISIhPT10aGlzLl9jaHx8dGhpcy5faW5wdXQubG9va0JhY2soIlxcIik/KHRoaXMucHJlc2VydmVTaW5nbGVTcGFjZShyKSx0aGlzLnByaW50X3N0cmluZyh0aGlzLl9jaCkpOih0aGlzLnByaW50X3N0cmluZygiICIpLHRoaXMucHJpbnRfc3RyaW5nKHRoaXMuX2NoKSk6dGhpcy5fb3B0aW9ucy5zcGFjZV9hcm91bmRfY29tYmluYXRvcj8odGhpcy5fb3V0cHV0LnNwYWNlX2JlZm9yZV90b2tlbj0hMCx0aGlzLnByaW50X3N0cmluZyh0aGlzLl9jaCksdGhpcy5fb3V0cHV0LnNwYWNlX2JlZm9yZV90b2tlbj0hMCk6KHRoaXMucHJpbnRfc3RyaW5nKHRoaXMuX2NoKSx0aGlzLmVhdFdoaXRlc3BhY2UoKSx0aGlzLl9jaCYmYy50ZXN0KHRoaXMuX2NoKSYmKHRoaXMuX2NoPSIiKSk7cmV0dXJuIHRoaXMuX291dHB1dC5nZXRfY29kZSh0KX0sZS5leHBvcnRzLkJlYXV0aWZpZXI9cH0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPW4oNikuT3B0aW9ucztmdW5jdGlvbiBpKGUpe3IuY2FsbCh0aGlzLGUsImNzcyIpLHRoaXMuc2VsZWN0b3Jfc2VwYXJhdG9yX25ld2xpbmU9dGhpcy5fZ2V0X2Jvb2xlYW4oInNlbGVjdG9yX3NlcGFyYXRvcl9uZXdsaW5lIiwhMCksdGhpcy5uZXdsaW5lX2JldHdlZW5fcnVsZXM9dGhpcy5fZ2V0X2Jvb2xlYW4oIm5ld2xpbmVfYmV0d2Vlbl9ydWxlcyIsITApO3ZhciB0PXRoaXMuX2dldF9ib29sZWFuKCJzcGFjZV9hcm91bmRfc2VsZWN0b3Jfc2VwYXJhdG9yIik7dGhpcy5zcGFjZV9hcm91bmRfY29tYmluYXRvcj10aGlzLl9nZXRfYm9vbGVhbigic3BhY2VfYXJvdW5kX2NvbWJpbmF0b3IiKXx8dDt2YXIgbj10aGlzLl9nZXRfc2VsZWN0aW9uX2xpc3QoImJyYWNlX3N0eWxlIixbImNvbGxhcHNlIiwiZXhwYW5kIiwiZW5kLWV4cGFuZCIsIm5vbmUiLCJwcmVzZXJ2ZS1pbmxpbmUiXSk7dGhpcy5icmFjZV9zdHlsZT0iY29sbGFwc2UiO2Zvcih2YXIgaT0wO2k8bi5sZW5ndGg7aSsrKSJleHBhbmQiIT09bltpXT90aGlzLmJyYWNlX3N0eWxlPSJjb2xsYXBzZSI6dGhpcy5icmFjZV9zdHlsZT1uW2ldfWkucHJvdG90eXBlPW5ldyByLGUuZXhwb3J0cy5PcHRpb25zPWl9XSxQbz17fSxxbz1mdW5jdGlvbiBlKHQpe3ZhciBuPVBvW3RdO2lmKHZvaWQgMCE9PW4pcmV0dXJuIG4uZXhwb3J0czt2YXIgcj1Qb1t0XT17ZXhwb3J0czp7fX07cmV0dXJuIE9vW3RdKHIsci5leHBvcnRzLGUpLHIuZXhwb3J0c30oMTUpO3ZhciBLbyxqbyxHbz1xbztmdW5jdGlvbiAkbyhlLHQsbil7dmFyIHI9ZS5nZXRUZXh0KCksaT0hMCxhPTAsbz1uLnRhYlNpemV8fDQ7aWYodCl7Zm9yKHZhciBzPWUub2Zmc2V0QXQodC5zdGFydCksbD1zO2w+MCYmWm8ocixsLTEpOylsLS07MD09PWx8fFFvKHIsbC0xKT9zPWw6bDxzJiYocz1sKzEpO2Zvcih2YXIgYz1lLm9mZnNldEF0KHQuZW5kKSxoPWM7aDxyLmxlbmd0aCYmWm8ocixoKTspaCsrOyhoPT09ci5sZW5ndGh8fFFvKHIsaCkpJiYoYz1oKSx0PVdyLmNyZWF0ZShlLnBvc2l0aW9uQXQocyksZS5wb3NpdGlvbkF0KGMpKTt2YXIgZD1yLnN1YnN0cmluZygwLHMpO2lmKG5ldyBSZWdFeHAoLy4qWzxdW14+XSokLykudGVzdChkKSlyZXR1cm5be3JhbmdlOnQsbmV3VGV4dDpyPXIuc3Vic3RyaW5nKHMsYyl9XTtpZihpPWM9PT1yLmxlbmd0aCxyPXIuc3Vic3RyaW5nKHMsYyksMCE9PXMpe3ZhciB1PWUub2Zmc2V0QXQoRHIuY3JlYXRlKHQuc3RhcnQubGluZSwwKSk7YT1mdW5jdGlvbihlLHQsbil7dmFyIHI9dCxpPTAsYT1uLnRhYlNpemV8fDQ7Zm9yKDtyPGUubGVuZ3RoOyl7dmFyIG89ZS5jaGFyQXQocik7aWYoIiAiPT09bylpKys7ZWxzZXtpZigiXHQiIT09bylicmVhaztpKz1hfXIrK31yZXR1cm4gTWF0aC5mbG9vcihpL2EpfShlLmdldFRleHQoKSx1LG4pfX1lbHNlIHQ9V3IuY3JlYXRlKERyLmNyZWF0ZSgwLDApLGUucG9zaXRpb25BdChyLmxlbmd0aCkpO3ZhciBwPXtpbmRlbnRfc2l6ZTpvLGluZGVudF9jaGFyOm4uaW5zZXJ0U3BhY2VzPyIgIjoiXHQiLGluZGVudF9lbXB0eV9saW5lczpKbyhuLCJpbmRlbnRFbXB0eUxpbmVzIiwhMSksd3JhcF9saW5lX2xlbmd0aDpKbyhuLCJ3cmFwTGluZUxlbmd0aCIsMTIwKSx1bmZvcm1hdHRlZDpYbyhuLCJ1bmZvcm1hdHRlZCIsdm9pZCAwKSxjb250ZW50X3VuZm9ybWF0dGVkOlhvKG4sImNvbnRlbnRVbmZvcm1hdHRlZCIsdm9pZCAwKSxpbmRlbnRfaW5uZXJfaHRtbDpKbyhuLCJpbmRlbnRJbm5lckh0bWwiLCExKSxwcmVzZXJ2ZV9uZXdsaW5lczpKbyhuLCJwcmVzZXJ2ZU5ld0xpbmVzIiwhMCksbWF4X3ByZXNlcnZlX25ld2xpbmVzOkpvKG4sIm1heFByZXNlcnZlTmV3TGluZXMiLDMyNzg2KSxpbmRlbnRfaGFuZGxlYmFyczpKbyhuLCJpbmRlbnRIYW5kbGViYXJzIiwhMSksZW5kX3dpdGhfbmV3bGluZTppJiZKbyhuLCJlbmRXaXRoTmV3bGluZSIsITEpLGV4dHJhX2xpbmVyczpYbyhuLCJleHRyYUxpbmVycyIsdm9pZCAwKSx3cmFwX2F0dHJpYnV0ZXM6Sm8obiwid3JhcEF0dHJpYnV0ZXMiLCJhdXRvIiksd3JhcF9hdHRyaWJ1dGVzX2luZGVudF9zaXplOkpvKG4sIndyYXBBdHRyaWJ1dGVzSW5kZW50U2l6ZSIsdm9pZCAwKSxlb2w6IlxuIixpbmRlbnRfc2NyaXB0czpKbyhuLCJpbmRlbnRTY3JpcHRzIiwibm9ybWFsIiksdGVtcGxhdGluZzpZbyhuLCJhbGwiKSx1bmZvcm1hdHRlZF9jb250ZW50X2RlbGltaXRlcjpKbyhuLCJ1bmZvcm1hdHRlZENvbnRlbnREZWxpbWl0ZXIiLCIiKX0sbT1mdW5jdGlvbihlLHQpe3JldHVybiBLbyhlLHQsVm8sR28pfShyLnJlcGxhY2UoL15ccysvLCIiKSxwKTtpZihhPjApe3ZhciBmPW4uaW5zZXJ0U3BhY2VzP2ZvKCIgIixvKmEpOmZvKCJcdCIsYSk7bT1tLnNwbGl0KCJcbiIpLmpvaW4oIlxuIitmKSwwPT09dC5zdGFydC5jaGFyYWN0ZXImJihtPWYrbSl9cmV0dXJuW3tyYW5nZTp0LG5ld1RleHQ6bX1dfWZ1bmN0aW9uIEpvKGUsdCxuKXtpZihlJiZlLmhhc093blByb3BlcnR5KHQpKXt2YXIgcj1lW3RdO2lmKG51bGwhPT1yKXJldHVybiByfXJldHVybiBufWZ1bmN0aW9uIFhvKGUsdCxuKXt2YXIgcj1KbyhlLHQsbnVsbCk7cmV0dXJuInN0cmluZyI9PXR5cGVvZiByP3IubGVuZ3RoPjA/ci5zcGxpdCgiLCIpLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIGUudHJpbSgpLnRvTG93ZXJDYXNlKCl9KSk6W106bn1mdW5jdGlvbiBZbyhlLHQpe3JldHVybiEwPT09Sm8oZSwidGVtcGxhdGluZyIsdCk/WyJhdXRvIl06WyJub25lIl19ZnVuY3Rpb24gUW8oZSx0KXtyZXR1cm4tMSE9PSJcclxuIi5pbmRleE9mKGUuY2hhckF0KHQpKX1mdW5jdGlvbiBabyhlLHQpe3JldHVybi0xIT09IiBcdCIuaW5kZXhPZihlLmNoYXJBdCh0KSl9IWZ1bmN0aW9uKCl7dmFyIGU9WywsZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChlKXt0aGlzLl9fcGFyZW50PWUsdGhpcy5fX2NoYXJhY3Rlcl9jb3VudD0wLHRoaXMuX19pbmRlbnRfY291bnQ9LTEsdGhpcy5fX2FsaWdubWVudF9jb3VudD0wLHRoaXMuX193cmFwX3BvaW50X2luZGV4PTAsdGhpcy5fX3dyYXBfcG9pbnRfY2hhcmFjdGVyX2NvdW50PTAsdGhpcy5fX3dyYXBfcG9pbnRfaW5kZW50X2NvdW50PS0xLHRoaXMuX193cmFwX3BvaW50X2FsaWdubWVudF9jb3VudD0wLHRoaXMuX19pdGVtcz1bXX1mdW5jdGlvbiBuKGUsdCl7dGhpcy5fX2NhY2hlPVsiIl0sdGhpcy5fX2luZGVudF9zaXplPWUuaW5kZW50X3NpemUsdGhpcy5fX2luZGVudF9zdHJpbmc9ZS5pbmRlbnRfY2hhcixlLmluZGVudF93aXRoX3RhYnN8fCh0aGlzLl9faW5kZW50X3N0cmluZz1uZXcgQXJyYXkoZS5pbmRlbnRfc2l6ZSsxKS5qb2luKGUuaW5kZW50X2NoYXIpKSx0PXR8fCIiLGUuaW5kZW50X2xldmVsPjAmJih0PW5ldyBBcnJheShlLmluZGVudF9sZXZlbCsxKS5qb2luKHRoaXMuX19pbmRlbnRfc3RyaW5nKSksdGhpcy5fX2Jhc2Vfc3RyaW5nPXQsdGhpcy5fX2Jhc2Vfc3RyaW5nX2xlbmd0aD10Lmxlbmd0aH1mdW5jdGlvbiByKGUscil7dGhpcy5fX2luZGVudF9jYWNoZT1uZXcgbihlLHIpLHRoaXMucmF3PSExLHRoaXMuX2VuZF93aXRoX25ld2xpbmU9ZS5lbmRfd2l0aF9uZXdsaW5lLHRoaXMuaW5kZW50X3NpemU9ZS5pbmRlbnRfc2l6ZSx0aGlzLndyYXBfbGluZV9sZW5ndGg9ZS53cmFwX2xpbmVfbGVuZ3RoLHRoaXMuaW5kZW50X2VtcHR5X2xpbmVzPWUuaW5kZW50X2VtcHR5X2xpbmVzLHRoaXMuX19saW5lcz1bXSx0aGlzLnByZXZpb3VzX2xpbmU9bnVsbCx0aGlzLmN1cnJlbnRfbGluZT1udWxsLHRoaXMubmV4dF9saW5lPW5ldyB0KHRoaXMpLHRoaXMuc3BhY2VfYmVmb3JlX3Rva2VuPSExLHRoaXMubm9uX2JyZWFraW5nX3NwYWNlPSExLHRoaXMucHJldmlvdXNfdG9rZW5fd3JhcHBlZD0hMSx0aGlzLl9fYWRkX291dHB1dGxpbmUoKX10LnByb3RvdHlwZS5jbG9uZV9lbXB0eT1mdW5jdGlvbigpe3ZhciBlPW5ldyB0KHRoaXMuX19wYXJlbnQpO3JldHVybiBlLnNldF9pbmRlbnQodGhpcy5fX2luZGVudF9jb3VudCx0aGlzLl9fYWxpZ25tZW50X2NvdW50KSxlfSx0LnByb3RvdHlwZS5pdGVtPWZ1bmN0aW9uKGUpe3JldHVybiBlPDA/dGhpcy5fX2l0ZW1zW3RoaXMuX19pdGVtcy5sZW5ndGgrZV06dGhpcy5fX2l0ZW1zW2VdfSx0LnByb3RvdHlwZS5oYXNfbWF0Y2g9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PXRoaXMuX19pdGVtcy5sZW5ndGgtMTt0Pj0wO3QtLSlpZih0aGlzLl9faXRlbXNbdF0ubWF0Y2goZSkpcmV0dXJuITA7cmV0dXJuITF9LHQucHJvdG90eXBlLnNldF9pbmRlbnQ9ZnVuY3Rpb24oZSx0KXt0aGlzLmlzX2VtcHR5KCkmJih0aGlzLl9faW5kZW50X2NvdW50PWV8fDAsdGhpcy5fX2FsaWdubWVudF9jb3VudD10fHwwLHRoaXMuX19jaGFyYWN0ZXJfY291bnQ9dGhpcy5fX3BhcmVudC5nZXRfaW5kZW50X3NpemUodGhpcy5fX2luZGVudF9jb3VudCx0aGlzLl9fYWxpZ25tZW50X2NvdW50KSl9LHQucHJvdG90eXBlLl9zZXRfd3JhcF9wb2ludD1mdW5jdGlvbigpe3RoaXMuX19wYXJlbnQud3JhcF9saW5lX2xlbmd0aCYmKHRoaXMuX193cmFwX3BvaW50X2luZGV4PXRoaXMuX19pdGVtcy5sZW5ndGgsdGhpcy5fX3dyYXBfcG9pbnRfY2hhcmFjdGVyX2NvdW50PXRoaXMuX19jaGFyYWN0ZXJfY291bnQsdGhpcy5fX3dyYXBfcG9pbnRfaW5kZW50X2NvdW50PXRoaXMuX19wYXJlbnQubmV4dF9saW5lLl9faW5kZW50X2NvdW50LHRoaXMuX193cmFwX3BvaW50X2FsaWdubWVudF9jb3VudD10aGlzLl9fcGFyZW50Lm5leHRfbGluZS5fX2FsaWdubWVudF9jb3VudCl9LHQucHJvdG90eXBlLl9zaG91bGRfd3JhcD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9fd3JhcF9wb2ludF9pbmRleCYmdGhpcy5fX2NoYXJhY3Rlcl9jb3VudD50aGlzLl9fcGFyZW50LndyYXBfbGluZV9sZW5ndGgmJnRoaXMuX193cmFwX3BvaW50X2NoYXJhY3Rlcl9jb3VudD50aGlzLl9fcGFyZW50Lm5leHRfbGluZS5fX2NoYXJhY3Rlcl9jb3VudH0sdC5wcm90b3R5cGUuX2FsbG93X3dyYXA9ZnVuY3Rpb24oKXtpZih0aGlzLl9zaG91bGRfd3JhcCgpKXt0aGlzLl9fcGFyZW50LmFkZF9uZXdfbGluZSgpO3ZhciBlPXRoaXMuX19wYXJlbnQuY3VycmVudF9saW5lO3JldHVybiBlLnNldF9pbmRlbnQodGhpcy5fX3dyYXBfcG9pbnRfaW5kZW50X2NvdW50LHRoaXMuX193cmFwX3BvaW50X2FsaWdubWVudF9jb3VudCksZS5fX2l0ZW1zPXRoaXMuX19pdGVtcy5zbGljZSh0aGlzLl9fd3JhcF9wb2ludF9pbmRleCksdGhpcy5fX2l0ZW1zPXRoaXMuX19pdGVtcy5zbGljZSgwLHRoaXMuX193cmFwX3BvaW50X2luZGV4KSxlLl9fY2hhcmFjdGVyX2NvdW50Kz10aGlzLl9fY2hhcmFjdGVyX2NvdW50LXRoaXMuX193cmFwX3BvaW50X2NoYXJhY3Rlcl9jb3VudCx0aGlzLl9fY2hhcmFjdGVyX2NvdW50PXRoaXMuX193cmFwX3BvaW50X2NoYXJhY3Rlcl9jb3VudCwiICI9PT1lLl9faXRlbXNbMF0mJihlLl9faXRlbXMuc3BsaWNlKDAsMSksZS5fX2NoYXJhY3Rlcl9jb3VudC09MSksITB9cmV0dXJuITF9LHQucHJvdG90eXBlLmlzX2VtcHR5PWZ1bmN0aW9uKCl7cmV0dXJuIDA9PT10aGlzLl9faXRlbXMubGVuZ3RofSx0LnByb3RvdHlwZS5sYXN0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaXNfZW1wdHkoKT9udWxsOnRoaXMuX19pdGVtc1t0aGlzLl9faXRlbXMubGVuZ3RoLTFdfSx0LnByb3RvdHlwZS5wdXNoPWZ1bmN0aW9uKGUpe3RoaXMuX19pdGVtcy5wdXNoKGUpO3ZhciB0PWUubGFzdEluZGV4T2YoIlxuIik7LTEhPT10P3RoaXMuX19jaGFyYWN0ZXJfY291bnQ9ZS5sZW5ndGgtdDp0aGlzLl9fY2hhcmFjdGVyX2NvdW50Kz1lLmxlbmd0aH0sdC5wcm90b3R5cGUucG9wPWZ1bmN0aW9uKCl7dmFyIGU9bnVsbDtyZXR1cm4gdGhpcy5pc19lbXB0eSgpfHwoZT10aGlzLl9faXRlbXMucG9wKCksdGhpcy5fX2NoYXJhY3Rlcl9jb3VudC09ZS5sZW5ndGgpLGV9LHQucHJvdG90eXBlLl9yZW1vdmVfaW5kZW50PWZ1bmN0aW9uKCl7dGhpcy5fX2luZGVudF9jb3VudD4wJiYodGhpcy5fX2luZGVudF9jb3VudC09MSx0aGlzLl9fY2hhcmFjdGVyX2NvdW50LT10aGlzLl9fcGFyZW50LmluZGVudF9zaXplKX0sdC5wcm90b3R5cGUuX3JlbW92ZV93cmFwX2luZGVudD1mdW5jdGlvbigpe3RoaXMuX193cmFwX3BvaW50X2luZGVudF9jb3VudD4wJiYodGhpcy5fX3dyYXBfcG9pbnRfaW5kZW50X2NvdW50LT0xKX0sdC5wcm90b3R5cGUudHJpbT1mdW5jdGlvbigpe2Zvcig7IiAiPT09dGhpcy5sYXN0KCk7KXRoaXMuX19pdGVtcy5wb3AoKSx0aGlzLl9fY2hhcmFjdGVyX2NvdW50LT0xfSx0LnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3ZhciBlPSIiO3JldHVybiB0aGlzLmlzX2VtcHR5KCk/dGhpcy5fX3BhcmVudC5pbmRlbnRfZW1wdHlfbGluZXMmJihlPXRoaXMuX19wYXJlbnQuZ2V0X2luZGVudF9zdHJpbmcodGhpcy5fX2luZGVudF9jb3VudCkpOihlPXRoaXMuX19wYXJlbnQuZ2V0X2luZGVudF9zdHJpbmcodGhpcy5fX2luZGVudF9jb3VudCx0aGlzLl9fYWxpZ25tZW50X2NvdW50KSxlKz10aGlzLl9faXRlbXMuam9pbigiIikpLGV9LG4ucHJvdG90eXBlLmdldF9pbmRlbnRfc2l6ZT1mdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMuX19iYXNlX3N0cmluZ19sZW5ndGg7cmV0dXJuIHQ9dHx8MCxlPDAmJihuPTApLG4rPWUqdGhpcy5fX2luZGVudF9zaXplLG4rPXR9LG4ucHJvdG90eXBlLmdldF9pbmRlbnRfc3RyaW5nPWZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy5fX2Jhc2Vfc3RyaW5nO3JldHVybiB0PXR8fDAsZTwwJiYoZT0wLG49IiIpLHQrPWUqdGhpcy5fX2luZGVudF9zaXplLHRoaXMuX19lbnN1cmVfY2FjaGUodCksbis9dGhpcy5fX2NhY2hlW3RdfSxuLnByb3RvdHlwZS5fX2Vuc3VyZV9jYWNoZT1mdW5jdGlvbihlKXtmb3IoO2U+PXRoaXMuX19jYWNoZS5sZW5ndGg7KXRoaXMuX19hZGRfY29sdW1uKCl9LG4ucHJvdG90eXBlLl9fYWRkX2NvbHVtbj1mdW5jdGlvbigpe3ZhciBlPXRoaXMuX19jYWNoZS5sZW5ndGgsdD0wLG49IiI7dGhpcy5fX2luZGVudF9zaXplJiZlPj10aGlzLl9faW5kZW50X3NpemUmJihlLT0odD1NYXRoLmZsb29yKGUvdGhpcy5fX2luZGVudF9zaXplKSkqdGhpcy5fX2luZGVudF9zaXplLG49bmV3IEFycmF5KHQrMSkuam9pbih0aGlzLl9faW5kZW50X3N0cmluZykpLGUmJihuKz1uZXcgQXJyYXkoZSsxKS5qb2luKCIgIikpLHRoaXMuX19jYWNoZS5wdXNoKG4pfSxyLnByb3RvdHlwZS5fX2FkZF9vdXRwdXRsaW5lPWZ1bmN0aW9uKCl7dGhpcy5wcmV2aW91c19saW5lPXRoaXMuY3VycmVudF9saW5lLHRoaXMuY3VycmVudF9saW5lPXRoaXMubmV4dF9saW5lLmNsb25lX2VtcHR5KCksdGhpcy5fX2xpbmVzLnB1c2godGhpcy5jdXJyZW50X2xpbmUpfSxyLnByb3RvdHlwZS5nZXRfbGluZV9udW1iZXI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fX2xpbmVzLmxlbmd0aH0sci5wcm90b3R5cGUuZ2V0X2luZGVudF9zdHJpbmc9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5fX2luZGVudF9jYWNoZS5nZXRfaW5kZW50X3N0cmluZyhlLHQpfSxyLnByb3RvdHlwZS5nZXRfaW5kZW50X3NpemU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5fX2luZGVudF9jYWNoZS5nZXRfaW5kZW50X3NpemUoZSx0KX0sci5wcm90b3R5cGUuaXNfZW1wdHk9ZnVuY3Rpb24oKXtyZXR1cm4hdGhpcy5wcmV2aW91c19saW5lJiZ0aGlzLmN1cnJlbnRfbGluZS5pc19lbXB0eSgpfSxyLnByb3RvdHlwZS5hZGRfbmV3X2xpbmU9ZnVuY3Rpb24oZSl7cmV0dXJuISh0aGlzLmlzX2VtcHR5KCl8fCFlJiZ0aGlzLmp1c3RfYWRkZWRfbmV3bGluZSgpKSYmKHRoaXMucmF3fHx0aGlzLl9fYWRkX291dHB1dGxpbmUoKSwhMCl9LHIucHJvdG90eXBlLmdldF9jb2RlPWZ1bmN0aW9uKGUpe3RoaXMudHJpbSghMCk7dmFyIHQ9dGhpcy5jdXJyZW50X2xpbmUucG9wKCk7dCYmKCJcbiI9PT10W3QubGVuZ3RoLTFdJiYodD10LnJlcGxhY2UoL1xuKyQvZywiIikpLHRoaXMuY3VycmVudF9saW5lLnB1c2godCkpLHRoaXMuX2VuZF93aXRoX25ld2xpbmUmJnRoaXMuX19hZGRfb3V0cHV0bGluZSgpO3ZhciBuPXRoaXMuX19saW5lcy5qb2luKCJcbiIpO3JldHVybiJcbiIhPT1lJiYobj1uLnJlcGxhY2UoL1tcbl0vZyxlKSksbn0sci5wcm90b3R5cGUuc2V0X3dyYXBfcG9pbnQ9ZnVuY3Rpb24oKXt0aGlzLmN1cnJlbnRfbGluZS5fc2V0X3dyYXBfcG9pbnQoKX0sci5wcm90b3R5cGUuc2V0X2luZGVudD1mdW5jdGlvbihlLHQpe3JldHVybiBlPWV8fDAsdD10fHwwLHRoaXMubmV4dF9saW5lLnNldF9pbmRlbnQoZSx0KSx0aGlzLl9fbGluZXMubGVuZ3RoPjE/KHRoaXMuY3VycmVudF9saW5lLnNldF9pbmRlbnQoZSx0KSwhMCk6KHRoaXMuY3VycmVudF9saW5lLnNldF9pbmRlbnQoKSwhMSl9LHIucHJvdG90eXBlLmFkZF9yYXdfdG9rZW49ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTA7dDxlLm5ld2xpbmVzO3QrKyl0aGlzLl9fYWRkX291dHB1dGxpbmUoKTt0aGlzLmN1cnJlbnRfbGluZS5zZXRfaW5kZW50KC0xKSx0aGlzLmN1cnJlbnRfbGluZS5wdXNoKGUud2hpdGVzcGFjZV9iZWZvcmUpLHRoaXMuY3VycmVudF9saW5lLnB1c2goZS50ZXh0KSx0aGlzLnNwYWNlX2JlZm9yZV90b2tlbj0hMSx0aGlzLm5vbl9icmVha2luZ19zcGFjZT0hMSx0aGlzLnByZXZpb3VzX3Rva2VuX3dyYXBwZWQ9ITF9LHIucHJvdG90eXBlLmFkZF90b2tlbj1mdW5jdGlvbihlKXt0aGlzLl9fYWRkX3NwYWNlX2JlZm9yZV90b2tlbigpLHRoaXMuY3VycmVudF9saW5lLnB1c2goZSksdGhpcy5zcGFjZV9iZWZvcmVfdG9rZW49ITEsdGhpcy5ub25fYnJlYWtpbmdfc3BhY2U9ITEsdGhpcy5wcmV2aW91c190b2tlbl93cmFwcGVkPXRoaXMuY3VycmVudF9saW5lLl9hbGxvd193cmFwKCl9LHIucHJvdG90eXBlLl9fYWRkX3NwYWNlX2JlZm9yZV90b2tlbj1mdW5jdGlvbigpe3RoaXMuc3BhY2VfYmVmb3JlX3Rva2VuJiYhdGhpcy5qdXN0X2FkZGVkX25ld2xpbmUoKSYmKHRoaXMubm9uX2JyZWFraW5nX3NwYWNlfHx0aGlzLnNldF93cmFwX3BvaW50KCksdGhpcy5jdXJyZW50X2xpbmUucHVzaCgiICIpKX0sci5wcm90b3R5cGUucmVtb3ZlX2luZGVudD1mdW5jdGlvbihlKXtmb3IodmFyIHQ9dGhpcy5fX2xpbmVzLmxlbmd0aDtlPHQ7KXRoaXMuX19saW5lc1tlXS5fcmVtb3ZlX2luZGVudCgpLGUrKzt0aGlzLmN1cnJlbnRfbGluZS5fcmVtb3ZlX3dyYXBfaW5kZW50KCl9LHIucHJvdG90eXBlLnRyaW09ZnVuY3Rpb24oZSl7Zm9yKGU9dm9pZCAwIT09ZSYmZSx0aGlzLmN1cnJlbnRfbGluZS50cmltKCk7ZSYmdGhpcy5fX2xpbmVzLmxlbmd0aD4xJiZ0aGlzLmN1cnJlbnRfbGluZS5pc19lbXB0eSgpOyl0aGlzLl9fbGluZXMucG9wKCksdGhpcy5jdXJyZW50X2xpbmU9dGhpcy5fX2xpbmVzW3RoaXMuX19saW5lcy5sZW5ndGgtMV0sdGhpcy5jdXJyZW50X2xpbmUudHJpbSgpO3RoaXMucHJldmlvdXNfbGluZT10aGlzLl9fbGluZXMubGVuZ3RoPjE/dGhpcy5fX2xpbmVzW3RoaXMuX19saW5lcy5sZW5ndGgtMl06bnVsbH0sci5wcm90b3R5cGUuanVzdF9hZGRlZF9uZXdsaW5lPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY3VycmVudF9saW5lLmlzX2VtcHR5KCl9LHIucHJvdG90eXBlLmp1c3RfYWRkZWRfYmxhbmtsaW5lPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaXNfZW1wdHkoKXx8dGhpcy5jdXJyZW50X2xpbmUuaXNfZW1wdHkoKSYmdGhpcy5wcmV2aW91c19saW5lLmlzX2VtcHR5KCl9LHIucHJvdG90eXBlLmVuc3VyZV9lbXB0eV9saW5lX2Fib3ZlPWZ1bmN0aW9uKGUsbil7Zm9yKHZhciByPXRoaXMuX19saW5lcy5sZW5ndGgtMjtyPj0wOyl7dmFyIGk9dGhpcy5fX2xpbmVzW3JdO2lmKGkuaXNfZW1wdHkoKSlicmVhaztpZigwIT09aS5pdGVtKDApLmluZGV4T2YoZSkmJmkuaXRlbSgtMSkhPT1uKXt0aGlzLl9fbGluZXMuc3BsaWNlKHIrMSwwLG5ldyB0KHRoaXMpKSx0aGlzLnByZXZpb3VzX2xpbmU9dGhpcy5fX2xpbmVzW3RoaXMuX19saW5lcy5sZW5ndGgtMl07YnJlYWt9ci0tfX0sZS5leHBvcnRzLk91dHB1dD1yfSxmdW5jdGlvbihlKXtlLmV4cG9ydHMuVG9rZW49ZnVuY3Rpb24oZSx0LG4scil7dGhpcy50eXBlPWUsdGhpcy50ZXh0PXQsdGhpcy5jb21tZW50c19iZWZvcmU9bnVsbCx0aGlzLm5ld2xpbmVzPW58fDAsdGhpcy53aGl0ZXNwYWNlX2JlZm9yZT1yfHwiIix0aGlzLnBhcmVudD1udWxsLHRoaXMubmV4dD1udWxsLHRoaXMucHJldmlvdXM9bnVsbCx0aGlzLm9wZW5lZD1udWxsLHRoaXMuY2xvc2VkPW51bGwsdGhpcy5kaXJlY3RpdmVzPW51bGx9fSwsLGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoZSx0KXt0aGlzLnJhd19vcHRpb25zPW4oZSx0KSx0aGlzLmRpc2FibGVkPXRoaXMuX2dldF9ib29sZWFuKCJkaXNhYmxlZCIpLHRoaXMuZW9sPXRoaXMuX2dldF9jaGFyYWN0ZXJzKCJlb2wiLCJhdXRvIiksdGhpcy5lbmRfd2l0aF9uZXdsaW5lPXRoaXMuX2dldF9ib29sZWFuKCJlbmRfd2l0aF9uZXdsaW5lIiksdGhpcy5pbmRlbnRfc2l6ZT10aGlzLl9nZXRfbnVtYmVyKCJpbmRlbnRfc2l6ZSIsNCksdGhpcy5pbmRlbnRfY2hhcj10aGlzLl9nZXRfY2hhcmFjdGVycygiaW5kZW50X2NoYXIiLCIgIiksdGhpcy5pbmRlbnRfbGV2ZWw9dGhpcy5fZ2V0X251bWJlcigiaW5kZW50X2xldmVsIiksdGhpcy5wcmVzZXJ2ZV9uZXdsaW5lcz10aGlzLl9nZXRfYm9vbGVhbigicHJlc2VydmVfbmV3bGluZXMiLCEwKSx0aGlzLm1heF9wcmVzZXJ2ZV9uZXdsaW5lcz10aGlzLl9nZXRfbnVtYmVyKCJtYXhfcHJlc2VydmVfbmV3bGluZXMiLDMyNzg2KSx0aGlzLnByZXNlcnZlX25ld2xpbmVzfHwodGhpcy5tYXhfcHJlc2VydmVfbmV3bGluZXM9MCksdGhpcy5pbmRlbnRfd2l0aF90YWJzPXRoaXMuX2dldF9ib29sZWFuKCJpbmRlbnRfd2l0aF90YWJzIiwiXHQiPT09dGhpcy5pbmRlbnRfY2hhciksdGhpcy5pbmRlbnRfd2l0aF90YWJzJiYodGhpcy5pbmRlbnRfY2hhcj0iXHQiLDE9PT10aGlzLmluZGVudF9zaXplJiYodGhpcy5pbmRlbnRfc2l6ZT00KSksdGhpcy53cmFwX2xpbmVfbGVuZ3RoPXRoaXMuX2dldF9udW1iZXIoIndyYXBfbGluZV9sZW5ndGgiLHRoaXMuX2dldF9udW1iZXIoIm1heF9jaGFyIikpLHRoaXMuaW5kZW50X2VtcHR5X2xpbmVzPXRoaXMuX2dldF9ib29sZWFuKCJpbmRlbnRfZW1wdHlfbGluZXMiKSx0aGlzLnRlbXBsYXRpbmc9dGhpcy5fZ2V0X3NlbGVjdGlvbl9saXN0KCJ0ZW1wbGF0aW5nIixbImF1dG8iLCJub25lIiwiZGphbmdvIiwiZXJiIiwiaGFuZGxlYmFycyIsInBocCIsInNtYXJ0eSJdLFsiYXV0byJdKX1mdW5jdGlvbiBuKGUsdCl7dmFyIG4saT17fTtmb3IobiBpbiBlPXIoZSkpbiE9PXQmJihpW25dPWVbbl0pO2lmKHQmJmVbdF0pZm9yKG4gaW4gZVt0XSlpW25dPWVbdF1bbl07cmV0dXJuIGl9ZnVuY3Rpb24gcihlKXt2YXIgdCxuPXt9O2Zvcih0IGluIGUpe25bdC5yZXBsYWNlKC8tL2csIl8iKV09ZVt0XX1yZXR1cm4gbn10LnByb3RvdHlwZS5fZ2V0X2FycmF5PWZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy5yYXdfb3B0aW9uc1tlXSxyPXR8fFtdO3JldHVybiJvYmplY3QiPT10eXBlb2Ygbj9udWxsIT09biYmImZ1bmN0aW9uIj09dHlwZW9mIG4uY29uY2F0JiYocj1uLmNvbmNhdCgpKToic3RyaW5nIj09dHlwZW9mIG4mJihyPW4uc3BsaXQoL1teYS16QS1aMC05X1wvXC1dKy8pKSxyfSx0LnByb3RvdHlwZS5fZ2V0X2Jvb2xlYW49ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLnJhd19vcHRpb25zW2VdO3JldHVybiB2b2lkIDA9PT1uPyEhdDohIW59LHQucHJvdG90eXBlLl9nZXRfY2hhcmFjdGVycz1mdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMucmF3X29wdGlvbnNbZV0scj10fHwiIjtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIG4mJihyPW4ucmVwbGFjZSgvXFxyLywiXHIiKS5yZXBsYWNlKC9cXG4vLCJcbiIpLnJlcGxhY2UoL1xcdC8sIlx0IikpLHJ9LHQucHJvdG90eXBlLl9nZXRfbnVtYmVyPWZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy5yYXdfb3B0aW9uc1tlXTt0PXBhcnNlSW50KHQsMTApLGlzTmFOKHQpJiYodD0wKTt2YXIgcj1wYXJzZUludChuLDEwKTtyZXR1cm4gaXNOYU4ocikmJihyPXQpLHJ9LHQucHJvdG90eXBlLl9nZXRfc2VsZWN0aW9uPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzLl9nZXRfc2VsZWN0aW9uX2xpc3QoZSx0LG4pO2lmKDEhPT1yLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgT3B0aW9uIFZhbHVlOiBUaGUgb3B0aW9uICciK2UrIicgY2FuIG9ubHkgYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOlxuIit0KyJcbllvdSBwYXNzZWQgaW46ICciK3RoaXMucmF3X29wdGlvbnNbZV0rIiciKTtyZXR1cm4gclswXX0sdC5wcm90b3R5cGUuX2dldF9zZWxlY3Rpb25fbGlzdD1mdW5jdGlvbihlLHQsbil7aWYoIXR8fDA9PT10Lmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoIlNlbGVjdGlvbiBsaXN0IGNhbm5vdCBiZSBlbXB0eS4iKTtpZihuPW58fFt0WzBdXSwhdGhpcy5faXNfdmFsaWRfc2VsZWN0aW9uKG4sdCkpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIERlZmF1bHQgVmFsdWUhIik7dmFyIHI9dGhpcy5fZ2V0X2FycmF5KGUsbik7aWYoIXRoaXMuX2lzX3ZhbGlkX3NlbGVjdGlvbihyLHQpKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBPcHRpb24gVmFsdWU6IFRoZSBvcHRpb24gJyIrZSsiJyBjYW4gY29udGFpbiBvbmx5IHRoZSBmb2xsb3dpbmcgdmFsdWVzOlxuIit0KyJcbllvdSBwYXNzZWQgaW46ICciK3RoaXMucmF3X29wdGlvbnNbZV0rIiciKTtyZXR1cm4gcn0sdC5wcm90b3R5cGUuX2lzX3ZhbGlkX3NlbGVjdGlvbj1mdW5jdGlvbihlLHQpe3JldHVybiBlLmxlbmd0aCYmdC5sZW5ndGgmJiFlLnNvbWUoKGZ1bmN0aW9uKGUpe3JldHVybi0xPT09dC5pbmRleE9mKGUpfSkpfSxlLmV4cG9ydHMuT3B0aW9ucz10LGUuZXhwb3J0cy5ub3JtYWxpemVPcHRzPXIsZS5leHBvcnRzLm1lcmdlT3B0cz1ufSwsZnVuY3Rpb24oZSl7dmFyIHQ9UmVnRXhwLnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSgic3RpY2t5Iik7ZnVuY3Rpb24gbihlKXt0aGlzLl9faW5wdXQ9ZXx8IiIsdGhpcy5fX2lucHV0X2xlbmd0aD10aGlzLl9faW5wdXQubGVuZ3RoLHRoaXMuX19wb3NpdGlvbj0wfW4ucHJvdG90eXBlLnJlc3RhcnQ9ZnVuY3Rpb24oKXt0aGlzLl9fcG9zaXRpb249MH0sbi5wcm90b3R5cGUuYmFjaz1mdW5jdGlvbigpe3RoaXMuX19wb3NpdGlvbj4wJiYodGhpcy5fX3Bvc2l0aW9uLT0xKX0sbi5wcm90b3R5cGUuaGFzTmV4dD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9fcG9zaXRpb248dGhpcy5fX2lucHV0X2xlbmd0aH0sbi5wcm90b3R5cGUubmV4dD1mdW5jdGlvbigpe3ZhciBlPW51bGw7cmV0dXJuIHRoaXMuaGFzTmV4dCgpJiYoZT10aGlzLl9faW5wdXQuY2hhckF0KHRoaXMuX19wb3NpdGlvbiksdGhpcy5fX3Bvc2l0aW9uKz0xKSxlfSxuLnByb3RvdHlwZS5wZWVrPWZ1bmN0aW9uKGUpe3ZhciB0PW51bGw7cmV0dXJuIGU9ZXx8MCwoZSs9dGhpcy5fX3Bvc2l0aW9uKT49MCYmZTx0aGlzLl9faW5wdXRfbGVuZ3RoJiYodD10aGlzLl9faW5wdXQuY2hhckF0KGUpKSx0fSxuLnByb3RvdHlwZS5fX21hdGNoPWZ1bmN0aW9uKGUsbil7ZS5sYXN0SW5kZXg9bjt2YXIgcj1lLmV4ZWModGhpcy5fX2lucHV0KTtyZXR1cm4hcnx8dCYmZS5zdGlja3l8fHIuaW5kZXghPT1uJiYocj1udWxsKSxyfSxuLnByb3RvdHlwZS50ZXN0PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQ9dHx8MCwodCs9dGhpcy5fX3Bvc2l0aW9uKT49MCYmdDx0aGlzLl9faW5wdXRfbGVuZ3RoJiYhIXRoaXMuX19tYXRjaChlLHQpfSxuLnByb3RvdHlwZS50ZXN0Q2hhcj1mdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMucGVlayh0KTtyZXR1cm4gZS5sYXN0SW5kZXg9MCxudWxsIT09biYmZS50ZXN0KG4pfSxuLnByb3RvdHlwZS5tYXRjaD1mdW5jdGlvbihlKXt2YXIgdD10aGlzLl9fbWF0Y2goZSx0aGlzLl9fcG9zaXRpb24pO3JldHVybiB0P3RoaXMuX19wb3NpdGlvbis9dFswXS5sZW5ndGg6dD1udWxsLHR9LG4ucHJvdG90eXBlLnJlYWQ9ZnVuY3Rpb24oZSx0LG4pe3ZhciByLGk9IiI7cmV0dXJuIGUmJihyPXRoaXMubWF0Y2goZSkpJiYoaSs9clswXSksIXR8fCFyJiZlfHwoaSs9dGhpcy5yZWFkVW50aWwodCxuKSksaX0sbi5wcm90b3R5cGUucmVhZFVudGlsPWZ1bmN0aW9uKGUsdCl7dmFyIG4scj10aGlzLl9fcG9zaXRpb247ZS5sYXN0SW5kZXg9dGhpcy5fX3Bvc2l0aW9uO3ZhciBpPWUuZXhlYyh0aGlzLl9faW5wdXQpO3JldHVybiBpPyhyPWkuaW5kZXgsdCYmKHIrPWlbMF0ubGVuZ3RoKSk6cj10aGlzLl9faW5wdXRfbGVuZ3RoLG49dGhpcy5fX2lucHV0LnN1YnN0cmluZyh0aGlzLl9fcG9zaXRpb24sciksdGhpcy5fX3Bvc2l0aW9uPXIsbn0sbi5wcm90b3R5cGUucmVhZFVudGlsQWZ0ZXI9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMucmVhZFVudGlsKGUsITApfSxuLnByb3RvdHlwZS5nZXRfcmVnZXhwPWZ1bmN0aW9uKGUsbil7dmFyIHI9bnVsbCxpPSJnIjtyZXR1cm4gbiYmdCYmKGk9InkiKSwic3RyaW5nIj09dHlwZW9mIGUmJiIiIT09ZT9yPW5ldyBSZWdFeHAoZSxpKTplJiYocj1uZXcgUmVnRXhwKGUuc291cmNlLGkpKSxyfSxuLnByb3RvdHlwZS5nZXRfbGl0ZXJhbF9yZWdleHA9ZnVuY3Rpb24oZSl7cmV0dXJuIFJlZ0V4cChlLnJlcGxhY2UoL1stXC9cXF4kKis/LigpfFtcXXt9XS9nLCJcXCQmIikpfSxuLnByb3RvdHlwZS5wZWVrVW50aWxBZnRlcj1mdW5jdGlvbihlKXt2YXIgdD10aGlzLl9fcG9zaXRpb24sbj10aGlzLnJlYWRVbnRpbEFmdGVyKGUpO3JldHVybiB0aGlzLl9fcG9zaXRpb249dCxufSxuLnByb3RvdHlwZS5sb29rQmFjaz1mdW5jdGlvbihlKXt2YXIgdD10aGlzLl9fcG9zaXRpb24tMTtyZXR1cm4gdD49ZS5sZW5ndGgmJnRoaXMuX19pbnB1dC5zdWJzdHJpbmcodC1lLmxlbmd0aCx0KS50b0xvd2VyQ2FzZSgpPT09ZX0sZS5leHBvcnRzLklucHV0U2Nhbm5lcj1ufSxmdW5jdGlvbihlLHQsbil7dmFyIHI9big4KS5JbnB1dFNjYW5uZXIsaT1uKDMpLlRva2VuLGE9bigxMCkuVG9rZW5TdHJlYW0sbz1uKDExKS5XaGl0ZXNwYWNlUGF0dGVybixzPXtTVEFSVDoiVEtfU1RBUlQiLFJBVzoiVEtfUkFXIixFT0Y6IlRLX0VPRiJ9LGw9ZnVuY3Rpb24oZSx0KXt0aGlzLl9pbnB1dD1uZXcgcihlKSx0aGlzLl9vcHRpb25zPXR8fHt9LHRoaXMuX190b2tlbnM9bnVsbCx0aGlzLl9wYXR0ZXJucz17fSx0aGlzLl9wYXR0ZXJucy53aGl0ZXNwYWNlPW5ldyBvKHRoaXMuX2lucHV0KX07bC5wcm90b3R5cGUudG9rZW5pemU9ZnVuY3Rpb24oKXt2YXIgZTt0aGlzLl9pbnB1dC5yZXN0YXJ0KCksdGhpcy5fX3Rva2Vucz1uZXcgYSx0aGlzLl9yZXNldCgpO2Zvcih2YXIgdD1uZXcgaShzLlNUQVJULCIiKSxuPW51bGwscj1bXSxvPW5ldyBhO3QudHlwZSE9PXMuRU9GOyl7Zm9yKGU9dGhpcy5fZ2V0X25leHRfdG9rZW4odCxuKTt0aGlzLl9pc19jb21tZW50KGUpOylvLmFkZChlKSxlPXRoaXMuX2dldF9uZXh0X3Rva2VuKHQsbik7by5pc0VtcHR5KCl8fChlLmNvbW1lbnRzX2JlZm9yZT1vLG89bmV3IGEpLGUucGFyZW50PW4sdGhpcy5faXNfb3BlbmluZyhlKT8oci5wdXNoKG4pLG49ZSk6biYmdGhpcy5faXNfY2xvc2luZyhlLG4pJiYoZS5vcGVuZWQ9bixuLmNsb3NlZD1lLG49ci5wb3AoKSxlLnBhcmVudD1uKSxlLnByZXZpb3VzPXQsdC5uZXh0PWUsdGhpcy5fX3Rva2Vucy5hZGQoZSksdD1lfXJldHVybiB0aGlzLl9fdG9rZW5zfSxsLnByb3RvdHlwZS5faXNfZmlyc3RfdG9rZW49ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fX3Rva2Vucy5pc0VtcHR5KCl9LGwucHJvdG90eXBlLl9yZXNldD1mdW5jdGlvbigpe30sbC5wcm90b3R5cGUuX2dldF9uZXh0X3Rva2VuPWZ1bmN0aW9uKGUsdCl7dGhpcy5fcmVhZFdoaXRlc3BhY2UoKTt2YXIgbj10aGlzLl9pbnB1dC5yZWFkKC8uKy9nKTtyZXR1cm4gbj90aGlzLl9jcmVhdGVfdG9rZW4ocy5SQVcsbik6dGhpcy5fY3JlYXRlX3Rva2VuKHMuRU9GLCIiKX0sbC5wcm90b3R5cGUuX2lzX2NvbW1lbnQ9ZnVuY3Rpb24oZSl7cmV0dXJuITF9LGwucHJvdG90eXBlLl9pc19vcGVuaW5nPWZ1bmN0aW9uKGUpe3JldHVybiExfSxsLnByb3RvdHlwZS5faXNfY2xvc2luZz1mdW5jdGlvbihlLHQpe3JldHVybiExfSxsLnByb3RvdHlwZS5fY3JlYXRlX3Rva2VuPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIG5ldyBpKGUsdCx0aGlzLl9wYXR0ZXJucy53aGl0ZXNwYWNlLm5ld2xpbmVfY291bnQsdGhpcy5fcGF0dGVybnMud2hpdGVzcGFjZS53aGl0ZXNwYWNlX2JlZm9yZV90b2tlbil9LGwucHJvdG90eXBlLl9yZWFkV2hpdGVzcGFjZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9wYXR0ZXJucy53aGl0ZXNwYWNlLnJlYWQoKX0sZS5leHBvcnRzLlRva2VuaXplcj1sLGUuZXhwb3J0cy5UT0tFTj1zfSxmdW5jdGlvbihlKXtmdW5jdGlvbiB0KGUpe3RoaXMuX190b2tlbnM9W10sdGhpcy5fX3Rva2Vuc19sZW5ndGg9dGhpcy5fX3Rva2Vucy5sZW5ndGgsdGhpcy5fX3Bvc2l0aW9uPTAsdGhpcy5fX3BhcmVudF90b2tlbj1lfXQucHJvdG90eXBlLnJlc3RhcnQ9ZnVuY3Rpb24oKXt0aGlzLl9fcG9zaXRpb249MH0sdC5wcm90b3R5cGUuaXNFbXB0eT1mdW5jdGlvbigpe3JldHVybiAwPT09dGhpcy5fX3Rva2Vuc19sZW5ndGh9LHQucHJvdG90eXBlLmhhc05leHQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fX3Bvc2l0aW9uPHRoaXMuX190b2tlbnNfbGVuZ3RofSx0LnByb3RvdHlwZS5uZXh0PWZ1bmN0aW9uKCl7dmFyIGU9bnVsbDtyZXR1cm4gdGhpcy5oYXNOZXh0KCkmJihlPXRoaXMuX190b2tlbnNbdGhpcy5fX3Bvc2l0aW9uXSx0aGlzLl9fcG9zaXRpb24rPTEpLGV9LHQucHJvdG90eXBlLnBlZWs9ZnVuY3Rpb24oZSl7dmFyIHQ9bnVsbDtyZXR1cm4gZT1lfHwwLChlKz10aGlzLl9fcG9zaXRpb24pPj0wJiZlPHRoaXMuX190b2tlbnNfbGVuZ3RoJiYodD10aGlzLl9fdG9rZW5zW2VdKSx0fSx0LnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24oZSl7dGhpcy5fX3BhcmVudF90b2tlbiYmKGUucGFyZW50PXRoaXMuX19wYXJlbnRfdG9rZW4pLHRoaXMuX190b2tlbnMucHVzaChlKSx0aGlzLl9fdG9rZW5zX2xlbmd0aCs9MX0sZS5leHBvcnRzLlRva2VuU3RyZWFtPXR9LGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1uKDEyKS5QYXR0ZXJuO2Z1bmN0aW9uIGkoZSx0KXtyLmNhbGwodGhpcyxlLHQpLHQ/dGhpcy5fbGluZV9yZWdleHA9dGhpcy5faW5wdXQuZ2V0X3JlZ2V4cCh0Ll9saW5lX3JlZ2V4cCk6dGhpcy5fX3NldF93aGl0ZXNwYWNlX3BhdHRlcm5zKCIiLCIiKSx0aGlzLm5ld2xpbmVfY291bnQ9MCx0aGlzLndoaXRlc3BhY2VfYmVmb3JlX3Rva2VuPSIifWkucHJvdG90eXBlPW5ldyByLGkucHJvdG90eXBlLl9fc2V0X3doaXRlc3BhY2VfcGF0dGVybnM9ZnVuY3Rpb24oZSx0KXtlKz0iXFx0ICIsdCs9IlxcblxcciIsdGhpcy5fbWF0Y2hfcGF0dGVybj10aGlzLl9pbnB1dC5nZXRfcmVnZXhwKCJbIitlK3QrIl0rIiwhMCksdGhpcy5fbmV3bGluZV9yZWdleHA9dGhpcy5faW5wdXQuZ2V0X3JlZ2V4cCgiXFxyXFxufFsiK3QrIl0iKX0saS5wcm90b3R5cGUucmVhZD1mdW5jdGlvbigpe3RoaXMubmV3bGluZV9jb3VudD0wLHRoaXMud2hpdGVzcGFjZV9iZWZvcmVfdG9rZW49IiI7dmFyIGU9dGhpcy5faW5wdXQucmVhZCh0aGlzLl9tYXRjaF9wYXR0ZXJuKTtpZigiICI9PT1lKXRoaXMud2hpdGVzcGFjZV9iZWZvcmVfdG9rZW49IiAiO2Vsc2UgaWYoZSl7dmFyIHQ9dGhpcy5fX3NwbGl0KHRoaXMuX25ld2xpbmVfcmVnZXhwLGUpO3RoaXMubmV3bGluZV9jb3VudD10Lmxlbmd0aC0xLHRoaXMud2hpdGVzcGFjZV9iZWZvcmVfdG9rZW49dFt0aGlzLm5ld2xpbmVfY291bnRdfXJldHVybiBlfSxpLnByb3RvdHlwZS5tYXRjaGluZz1mdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMuX2NyZWF0ZSgpO3JldHVybiBuLl9fc2V0X3doaXRlc3BhY2VfcGF0dGVybnMoZSx0KSxuLl91cGRhdGUoKSxufSxpLnByb3RvdHlwZS5fY3JlYXRlPWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBpKHRoaXMuX2lucHV0LHRoaXMpfSxpLnByb3RvdHlwZS5fX3NwbGl0PWZ1bmN0aW9uKGUsdCl7ZS5sYXN0SW5kZXg9MDtmb3IodmFyIG49MCxyPVtdLGk9ZS5leGVjKHQpO2k7KXIucHVzaCh0LnN1YnN0cmluZyhuLGkuaW5kZXgpKSxuPWkuaW5kZXgraVswXS5sZW5ndGgsaT1lLmV4ZWModCk7cmV0dXJuIG48dC5sZW5ndGg/ci5wdXNoKHQuc3Vic3RyaW5nKG4sdC5sZW5ndGgpKTpyLnB1c2goIiIpLHJ9LGUuZXhwb3J0cy5XaGl0ZXNwYWNlUGF0dGVybj1pfSxmdW5jdGlvbihlKXtmdW5jdGlvbiB0KGUsdCl7dGhpcy5faW5wdXQ9ZSx0aGlzLl9zdGFydGluZ19wYXR0ZXJuPW51bGwsdGhpcy5fbWF0Y2hfcGF0dGVybj1udWxsLHRoaXMuX3VudGlsX3BhdHRlcm49bnVsbCx0aGlzLl91bnRpbF9hZnRlcj0hMSx0JiYodGhpcy5fc3RhcnRpbmdfcGF0dGVybj10aGlzLl9pbnB1dC5nZXRfcmVnZXhwKHQuX3N0YXJ0aW5nX3BhdHRlcm4sITApLHRoaXMuX21hdGNoX3BhdHRlcm49dGhpcy5faW5wdXQuZ2V0X3JlZ2V4cCh0Ll9tYXRjaF9wYXR0ZXJuLCEwKSx0aGlzLl91bnRpbF9wYXR0ZXJuPXRoaXMuX2lucHV0LmdldF9yZWdleHAodC5fdW50aWxfcGF0dGVybiksdGhpcy5fdW50aWxfYWZ0ZXI9dC5fdW50aWxfYWZ0ZXIpfXQucHJvdG90eXBlLnJlYWQ9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLl9pbnB1dC5yZWFkKHRoaXMuX3N0YXJ0aW5nX3BhdHRlcm4pO3JldHVybiB0aGlzLl9zdGFydGluZ19wYXR0ZXJuJiYhZXx8KGUrPXRoaXMuX2lucHV0LnJlYWQodGhpcy5fbWF0Y2hfcGF0dGVybix0aGlzLl91bnRpbF9wYXR0ZXJuLHRoaXMuX3VudGlsX2FmdGVyKSksZX0sdC5wcm90b3R5cGUucmVhZF9tYXRjaD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9pbnB1dC5tYXRjaCh0aGlzLl9tYXRjaF9wYXR0ZXJuKX0sdC5wcm90b3R5cGUudW50aWxfYWZ0ZXI9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5fY3JlYXRlKCk7cmV0dXJuIHQuX3VudGlsX2FmdGVyPSEwLHQuX3VudGlsX3BhdHRlcm49dGhpcy5faW5wdXQuZ2V0X3JlZ2V4cChlKSx0Ll91cGRhdGUoKSx0fSx0LnByb3RvdHlwZS51bnRpbD1mdW5jdGlvbihlKXt2YXIgdD10aGlzLl9jcmVhdGUoKTtyZXR1cm4gdC5fdW50aWxfYWZ0ZXI9ITEsdC5fdW50aWxfcGF0dGVybj10aGlzLl9pbnB1dC5nZXRfcmVnZXhwKGUpLHQuX3VwZGF0ZSgpLHR9LHQucHJvdG90eXBlLnN0YXJ0aW5nX3dpdGg9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5fY3JlYXRlKCk7cmV0dXJuIHQuX3N0YXJ0aW5nX3BhdHRlcm49dGhpcy5faW5wdXQuZ2V0X3JlZ2V4cChlLCEwKSx0Ll91cGRhdGUoKSx0fSx0LnByb3RvdHlwZS5tYXRjaGluZz1mdW5jdGlvbihlKXt2YXIgdD10aGlzLl9jcmVhdGUoKTtyZXR1cm4gdC5fbWF0Y2hfcGF0dGVybj10aGlzLl9pbnB1dC5nZXRfcmVnZXhwKGUsITApLHQuX3VwZGF0ZSgpLHR9LHQucHJvdG90eXBlLl9jcmVhdGU9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IHQodGhpcy5faW5wdXQsdGhpcyl9LHQucHJvdG90eXBlLl91cGRhdGU9ZnVuY3Rpb24oKXt9LGUuZXhwb3J0cy5QYXR0ZXJuPXR9LGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoZSx0KXtlPSJzdHJpbmciPT10eXBlb2YgZT9lOmUuc291cmNlLHQ9InN0cmluZyI9PXR5cGVvZiB0P3Q6dC5zb3VyY2UsdGhpcy5fX2RpcmVjdGl2ZXNfYmxvY2tfcGF0dGVybj1uZXcgUmVnRXhwKGUrLyBiZWF1dGlmeSggXHcrWzpdXHcrKSsgLy5zb3VyY2UrdCwiZyIpLHRoaXMuX19kaXJlY3RpdmVfcGF0dGVybj0vIChcdyspWzpdKFx3KykvZyx0aGlzLl9fZGlyZWN0aXZlc19lbmRfaWdub3JlX3BhdHRlcm49bmV3IFJlZ0V4cChlKy9cc2JlYXV0aWZ5XHNpZ25vcmU6ZW5kXHMvLnNvdXJjZSt0LCJnIil9dC5wcm90b3R5cGUuZ2V0X2RpcmVjdGl2ZXM9ZnVuY3Rpb24oZSl7aWYoIWUubWF0Y2godGhpcy5fX2RpcmVjdGl2ZXNfYmxvY2tfcGF0dGVybikpcmV0dXJuIG51bGw7dmFyIHQ9e307dGhpcy5fX2RpcmVjdGl2ZV9wYXR0ZXJuLmxhc3RJbmRleD0wO2Zvcih2YXIgbj10aGlzLl9fZGlyZWN0aXZlX3BhdHRlcm4uZXhlYyhlKTtuOyl0W25bMV1dPW5bMl0sbj10aGlzLl9fZGlyZWN0aXZlX3BhdHRlcm4uZXhlYyhlKTtyZXR1cm4gdH0sdC5wcm90b3R5cGUucmVhZElnbm9yZWQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGUucmVhZFVudGlsQWZ0ZXIodGhpcy5fX2RpcmVjdGl2ZXNfZW5kX2lnbm9yZV9wYXR0ZXJuKX0sZS5leHBvcnRzLkRpcmVjdGl2ZXM9dH0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPW4oMTIpLlBhdHRlcm4saT17ZGphbmdvOiExLGVyYjohMSxoYW5kbGViYXJzOiExLHBocDohMSxzbWFydHk6ITF9O2Z1bmN0aW9uIGEoZSx0KXtyLmNhbGwodGhpcyxlLHQpLHRoaXMuX190ZW1wbGF0ZV9wYXR0ZXJuPW51bGwsdGhpcy5fZGlzYWJsZWQ9T2JqZWN0LmFzc2lnbih7fSxpKSx0aGlzLl9leGNsdWRlZD1PYmplY3QuYXNzaWduKHt9LGkpLHQmJih0aGlzLl9fdGVtcGxhdGVfcGF0dGVybj10aGlzLl9pbnB1dC5nZXRfcmVnZXhwKHQuX190ZW1wbGF0ZV9wYXR0ZXJuKSx0aGlzLl9leGNsdWRlZD1PYmplY3QuYXNzaWduKHRoaXMuX2V4Y2x1ZGVkLHQuX2V4Y2x1ZGVkKSx0aGlzLl9kaXNhYmxlZD1PYmplY3QuYXNzaWduKHRoaXMuX2Rpc2FibGVkLHQuX2Rpc2FibGVkKSk7dmFyIG49bmV3IHIoZSk7dGhpcy5fX3BhdHRlcm5zPXtoYW5kbGViYXJzX2NvbW1lbnQ6bi5zdGFydGluZ193aXRoKC97eyEtLS8pLnVudGlsX2FmdGVyKC8tLX19LyksaGFuZGxlYmFyc191bmVzY2FwZWQ6bi5zdGFydGluZ193aXRoKC97e3svKS51bnRpbF9hZnRlcigvfX19LyksaGFuZGxlYmFyczpuLnN0YXJ0aW5nX3dpdGgoL3t7LykudW50aWxfYWZ0ZXIoL319LykscGhwOm4uc3RhcnRpbmdfd2l0aCgvPFw/KD86Wz0gXXxwaHApLykudW50aWxfYWZ0ZXIoL1w/Pi8pLGVyYjpuLnN0YXJ0aW5nX3dpdGgoLzwlW14lXS8pLnVudGlsX2FmdGVyKC9bXiVdJT4vKSxkamFuZ286bi5zdGFydGluZ193aXRoKC97JS8pLnVudGlsX2FmdGVyKC8lfS8pLGRqYW5nb192YWx1ZTpuLnN0YXJ0aW5nX3dpdGgoL3t7LykudW50aWxfYWZ0ZXIoL319LyksZGphbmdvX2NvbW1lbnQ6bi5zdGFydGluZ193aXRoKC97Iy8pLnVudGlsX2FmdGVyKC8jfS8pLHNtYXJ0eTpuLnN0YXJ0aW5nX3dpdGgoL3soPz1bXn17XHNcbl0pLykudW50aWxfYWZ0ZXIoL1teXHNcbl19Lyksc21hcnR5X2NvbW1lbnQ6bi5zdGFydGluZ193aXRoKC97XCovKS51bnRpbF9hZnRlcigvXCp9Lyksc21hcnR5X2xpdGVyYWw6bi5zdGFydGluZ193aXRoKC97bGl0ZXJhbH0vKS51bnRpbF9hZnRlcigve1wvbGl0ZXJhbH0vKX19YS5wcm90b3R5cGU9bmV3IHIsYS5wcm90b3R5cGUuX2NyZWF0ZT1mdW5jdGlvbigpe3JldHVybiBuZXcgYSh0aGlzLl9pbnB1dCx0aGlzKX0sYS5wcm90b3R5cGUuX3VwZGF0ZT1mdW5jdGlvbigpe3RoaXMuX19zZXRfdGVtcGxhdGVkX3BhdHRlcm4oKX0sYS5wcm90b3R5cGUuZGlzYWJsZT1mdW5jdGlvbihlKXt2YXIgdD10aGlzLl9jcmVhdGUoKTtyZXR1cm4gdC5fZGlzYWJsZWRbZV09ITAsdC5fdXBkYXRlKCksdH0sYS5wcm90b3R5cGUucmVhZF9vcHRpb25zPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuX2NyZWF0ZSgpO2Zvcih2YXIgbiBpbiBpKXQuX2Rpc2FibGVkW25dPS0xPT09ZS50ZW1wbGF0aW5nLmluZGV4T2Yobik7cmV0dXJuIHQuX3VwZGF0ZSgpLHR9LGEucHJvdG90eXBlLmV4Y2x1ZGU9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5fY3JlYXRlKCk7cmV0dXJuIHQuX2V4Y2x1ZGVkW2VdPSEwLHQuX3VwZGF0ZSgpLHR9LGEucHJvdG90eXBlLnJlYWQ9ZnVuY3Rpb24oKXt2YXIgZT0iIjtlPXRoaXMuX21hdGNoX3BhdHRlcm4/dGhpcy5faW5wdXQucmVhZCh0aGlzLl9zdGFydGluZ19wYXR0ZXJuKTp0aGlzLl9pbnB1dC5yZWFkKHRoaXMuX3N0YXJ0aW5nX3BhdHRlcm4sdGhpcy5fX3RlbXBsYXRlX3BhdHRlcm4pO2Zvcih2YXIgdD10aGlzLl9yZWFkX3RlbXBsYXRlKCk7dDspdGhpcy5fbWF0Y2hfcGF0dGVybj90Kz10aGlzLl9pbnB1dC5yZWFkKHRoaXMuX21hdGNoX3BhdHRlcm4pOnQrPXRoaXMuX2lucHV0LnJlYWRVbnRpbCh0aGlzLl9fdGVtcGxhdGVfcGF0dGVybiksZSs9dCx0PXRoaXMuX3JlYWRfdGVtcGxhdGUoKTtyZXR1cm4gdGhpcy5fdW50aWxfYWZ0ZXImJihlKz10aGlzLl9pbnB1dC5yZWFkVW50aWxBZnRlcih0aGlzLl91bnRpbF9wYXR0ZXJuKSksZX0sYS5wcm90b3R5cGUuX19zZXRfdGVtcGxhdGVkX3BhdHRlcm49ZnVuY3Rpb24oKXt2YXIgZT1bXTt0aGlzLl9kaXNhYmxlZC5waHB8fGUucHVzaCh0aGlzLl9fcGF0dGVybnMucGhwLl9zdGFydGluZ19wYXR0ZXJuLnNvdXJjZSksdGhpcy5fZGlzYWJsZWQuaGFuZGxlYmFyc3x8ZS5wdXNoKHRoaXMuX19wYXR0ZXJucy5oYW5kbGViYXJzLl9zdGFydGluZ19wYXR0ZXJuLnNvdXJjZSksdGhpcy5fZGlzYWJsZWQuZXJifHxlLnB1c2godGhpcy5fX3BhdHRlcm5zLmVyYi5fc3RhcnRpbmdfcGF0dGVybi5zb3VyY2UpLHRoaXMuX2Rpc2FibGVkLmRqYW5nb3x8KGUucHVzaCh0aGlzLl9fcGF0dGVybnMuZGphbmdvLl9zdGFydGluZ19wYXR0ZXJuLnNvdXJjZSksZS5wdXNoKHRoaXMuX19wYXR0ZXJucy5kamFuZ29fdmFsdWUuX3N0YXJ0aW5nX3BhdHRlcm4uc291cmNlKSxlLnB1c2godGhpcy5fX3BhdHRlcm5zLmRqYW5nb19jb21tZW50Ll9zdGFydGluZ19wYXR0ZXJuLnNvdXJjZSkpLHRoaXMuX2Rpc2FibGVkLnNtYXJ0eXx8ZS5wdXNoKHRoaXMuX19wYXR0ZXJucy5zbWFydHkuX3N0YXJ0aW5nX3BhdHRlcm4uc291cmNlKSx0aGlzLl91bnRpbF9wYXR0ZXJuJiZlLnB1c2godGhpcy5fdW50aWxfcGF0dGVybi5zb3VyY2UpLHRoaXMuX190ZW1wbGF0ZV9wYXR0ZXJuPXRoaXMuX2lucHV0LmdldF9yZWdleHAoIig/OiIrZS5qb2luKCJ8IikrIikiKX0sYS5wcm90b3R5cGUuX3JlYWRfdGVtcGxhdGU9ZnVuY3Rpb24oKXt2YXIgZT0iIix0PXRoaXMuX2lucHV0LnBlZWsoKTtpZigiPCI9PT10KXt2YXIgbj10aGlzLl9pbnB1dC5wZWVrKDEpO3RoaXMuX2Rpc2FibGVkLnBocHx8dGhpcy5fZXhjbHVkZWQucGhwfHwiPyIhPT1ufHwoZT1lfHx0aGlzLl9fcGF0dGVybnMucGhwLnJlYWQoKSksdGhpcy5fZGlzYWJsZWQuZXJifHx0aGlzLl9leGNsdWRlZC5lcmJ8fCIlIiE9PW58fChlPWV8fHRoaXMuX19wYXR0ZXJucy5lcmIucmVhZCgpKX1lbHNlInsiPT09dCYmKHRoaXMuX2Rpc2FibGVkLmhhbmRsZWJhcnN8fHRoaXMuX2V4Y2x1ZGVkLmhhbmRsZWJhcnN8fChlPShlPShlPWV8fHRoaXMuX19wYXR0ZXJucy5oYW5kbGViYXJzX2NvbW1lbnQucmVhZCgpKXx8dGhpcy5fX3BhdHRlcm5zLmhhbmRsZWJhcnNfdW5lc2NhcGVkLnJlYWQoKSl8fHRoaXMuX19wYXR0ZXJucy5oYW5kbGViYXJzLnJlYWQoKSksdGhpcy5fZGlzYWJsZWQuZGphbmdvfHwodGhpcy5fZXhjbHVkZWQuZGphbmdvfHx0aGlzLl9leGNsdWRlZC5oYW5kbGViYXJzfHwoZT1lfHx0aGlzLl9fcGF0dGVybnMuZGphbmdvX3ZhbHVlLnJlYWQoKSksdGhpcy5fZXhjbHVkZWQuZGphbmdvfHwoZT0oZT1lfHx0aGlzLl9fcGF0dGVybnMuZGphbmdvX2NvbW1lbnQucmVhZCgpKXx8dGhpcy5fX3BhdHRlcm5zLmRqYW5nby5yZWFkKCkpKSx0aGlzLl9kaXNhYmxlZC5zbWFydHl8fHRoaXMuX2Rpc2FibGVkLmRqYW5nbyYmdGhpcy5fZGlzYWJsZWQuaGFuZGxlYmFycyYmKGU9KGU9KGU9ZXx8dGhpcy5fX3BhdHRlcm5zLnNtYXJ0eV9jb21tZW50LnJlYWQoKSl8fHRoaXMuX19wYXR0ZXJucy5zbWFydHlfbGl0ZXJhbC5yZWFkKCkpfHx0aGlzLl9fcGF0dGVybnMuc21hcnR5LnJlYWQoKSkpO3JldHVybiBlfSxlLmV4cG9ydHMuVGVtcGxhdGFibGVQYXR0ZXJuPWF9LCwsLGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1uKDE5KS5CZWF1dGlmaWVyLGk9bigyMCkuT3B0aW9ucztlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LG4saSl7cmV0dXJuIG5ldyByKGUsdCxuLGkpLmJlYXV0aWZ5KCl9LGUuZXhwb3J0cy5kZWZhdWx0T3B0aW9ucz1mdW5jdGlvbigpe3JldHVybiBuZXcgaX19LGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1uKDIwKS5PcHRpb25zLGk9bigyKS5PdXRwdXQsYT1uKDIxKS5Ub2tlbml6ZXIsbz1uKDIxKS5UT0tFTixzPS9cclxufFtcclxuXS8sbD0vXHJcbnxbXHJcbl0vZyxjPWZ1bmN0aW9uKGUsdCl7dGhpcy5pbmRlbnRfbGV2ZWw9MCx0aGlzLmFsaWdubWVudF9zaXplPTAsdGhpcy5tYXhfcHJlc2VydmVfbmV3bGluZXM9ZS5tYXhfcHJlc2VydmVfbmV3bGluZXMsdGhpcy5wcmVzZXJ2ZV9uZXdsaW5lcz1lLnByZXNlcnZlX25ld2xpbmVzLHRoaXMuX291dHB1dD1uZXcgaShlLHQpfTtjLnByb3RvdHlwZS5jdXJyZW50X2xpbmVfaGFzX21hdGNoPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLl9vdXRwdXQuY3VycmVudF9saW5lLmhhc19tYXRjaChlKX0sYy5wcm90b3R5cGUuc2V0X3NwYWNlX2JlZm9yZV90b2tlbj1mdW5jdGlvbihlLHQpe3RoaXMuX291dHB1dC5zcGFjZV9iZWZvcmVfdG9rZW49ZSx0aGlzLl9vdXRwdXQubm9uX2JyZWFraW5nX3NwYWNlPXR9LGMucHJvdG90eXBlLnNldF93cmFwX3BvaW50PWZ1bmN0aW9uKCl7dGhpcy5fb3V0cHV0LnNldF9pbmRlbnQodGhpcy5pbmRlbnRfbGV2ZWwsdGhpcy5hbGlnbm1lbnRfc2l6ZSksdGhpcy5fb3V0cHV0LnNldF93cmFwX3BvaW50KCl9LGMucHJvdG90eXBlLmFkZF9yYXdfdG9rZW49ZnVuY3Rpb24oZSl7dGhpcy5fb3V0cHV0LmFkZF9yYXdfdG9rZW4oZSl9LGMucHJvdG90eXBlLnByaW50X3ByZXNlcnZlZF9uZXdsaW5lcz1mdW5jdGlvbihlKXt2YXIgdD0wO2UudHlwZSE9PW8uVEVYVCYmZS5wcmV2aW91cy50eXBlIT09by5URVhUJiYodD1lLm5ld2xpbmVzPzE6MCksdGhpcy5wcmVzZXJ2ZV9uZXdsaW5lcyYmKHQ9ZS5uZXdsaW5lczx0aGlzLm1heF9wcmVzZXJ2ZV9uZXdsaW5lcysxP2UubmV3bGluZXM6dGhpcy5tYXhfcHJlc2VydmVfbmV3bGluZXMrMSk7Zm9yKHZhciBuPTA7bjx0O24rKyl0aGlzLnByaW50X25ld2xpbmUobj4wKTtyZXR1cm4gMCE9PXR9LGMucHJvdG90eXBlLnRyYXZlcnNlX3doaXRlc3BhY2U9ZnVuY3Rpb24oZSl7cmV0dXJuISghZS53aGl0ZXNwYWNlX2JlZm9yZSYmIWUubmV3bGluZXMpJiYodGhpcy5wcmludF9wcmVzZXJ2ZWRfbmV3bGluZXMoZSl8fCh0aGlzLl9vdXRwdXQuc3BhY2VfYmVmb3JlX3Rva2VuPSEwKSwhMCl9LGMucHJvdG90eXBlLnByZXZpb3VzX3Rva2VuX3dyYXBwZWQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fb3V0cHV0LnByZXZpb3VzX3Rva2VuX3dyYXBwZWR9LGMucHJvdG90eXBlLnByaW50X25ld2xpbmU9ZnVuY3Rpb24oZSl7dGhpcy5fb3V0cHV0LmFkZF9uZXdfbGluZShlKX0sYy5wcm90b3R5cGUucHJpbnRfdG9rZW49ZnVuY3Rpb24oZSl7ZS50ZXh0JiYodGhpcy5fb3V0cHV0LnNldF9pbmRlbnQodGhpcy5pbmRlbnRfbGV2ZWwsdGhpcy5hbGlnbm1lbnRfc2l6ZSksdGhpcy5fb3V0cHV0LmFkZF90b2tlbihlLnRleHQpKX0sYy5wcm90b3R5cGUuaW5kZW50PWZ1bmN0aW9uKCl7dGhpcy5pbmRlbnRfbGV2ZWwrK30sYy5wcm90b3R5cGUuZ2V0X2Z1bGxfaW5kZW50PWZ1bmN0aW9uKGUpe3JldHVybihlPXRoaXMuaW5kZW50X2xldmVsKyhlfHwwKSk8MT8iIjp0aGlzLl9vdXRwdXQuZ2V0X2luZGVudF9zdHJpbmcoZSl9O3ZhciBoPWZ1bmN0aW9uKGUsdCl7dmFyIG49bnVsbCxyPW51bGw7cmV0dXJuIHQuY2xvc2VkPygic2NyaXB0Ij09PWU/bj0idGV4dC9qYXZhc2NyaXB0Ijoic3R5bGUiPT09ZSYmKG49InRleHQvY3NzIiksbj1mdW5jdGlvbihlKXtmb3IodmFyIHQ9bnVsbCxuPWUubmV4dDtuLnR5cGUhPT1vLkVPRiYmZS5jbG9zZWQhPT1uOyl7aWYobi50eXBlPT09by5BVFRSSUJVVEUmJiJ0eXBlIj09PW4udGV4dCl7bi5uZXh0JiZuLm5leHQudHlwZT09PW8uRVFVQUxTJiZuLm5leHQubmV4dCYmbi5uZXh0Lm5leHQudHlwZT09PW8uVkFMVUUmJih0PW4ubmV4dC5uZXh0LnRleHQpO2JyZWFrfW49bi5uZXh0fXJldHVybiB0fSh0KXx8bixuLnNlYXJjaCgidGV4dC9jc3MiKT4tMT9yPSJjc3MiOm4uc2VhcmNoKC9tb2R1bGV8KCh0ZXh0fGFwcGxpY2F0aW9ufGRvam8pXC8oeC0pPyhqYXZhc2NyaXB0fGVjbWFzY3JpcHR8anNjcmlwdHxsaXZlc2NyaXB0fChsZFwrKT9qc29ufG1ldGhvZHxhc3BlY3QpKS8pPi0xP3I9ImphdmFzY3JpcHQiOm4uc2VhcmNoKC8odGV4dHxhcHBsaWNhdGlvbnxkb2pvKVwvKHgtKT8oaHRtbCkvKT4tMT9yPSJodG1sIjpuLnNlYXJjaCgvdGVzdFwvbnVsbC8pPi0xJiYocj0ibnVsbCIpLHIpOm51bGx9O2Z1bmN0aW9uIGQoZSx0KXtyZXR1cm4tMSE9PXQuaW5kZXhPZihlKX1mdW5jdGlvbiB1KGUsdCxuKXt0aGlzLnBhcmVudD1lfHxudWxsLHRoaXMudGFnPXQ/dC50YWdfbmFtZToiIix0aGlzLmluZGVudF9sZXZlbD1ufHwwLHRoaXMucGFyc2VyX3Rva2VuPXR8fG51bGx9ZnVuY3Rpb24gcChlKXt0aGlzLl9wcmludGVyPWUsdGhpcy5fY3VycmVudF9mcmFtZT1udWxsfWZ1bmN0aW9uIG0oZSx0LG4saSl7dGhpcy5fc291cmNlX3RleHQ9ZXx8IiIsdD10fHx7fSx0aGlzLl9qc19iZWF1dGlmeT1uLHRoaXMuX2Nzc19iZWF1dGlmeT1pLHRoaXMuX3RhZ19zdGFjaz1udWxsO3ZhciBhPW5ldyByKHQsImh0bWwiKTt0aGlzLl9vcHRpb25zPWEsdGhpcy5faXNfd3JhcF9hdHRyaWJ1dGVzX2ZvcmNlPSJmb3JjZSI9PT10aGlzLl9vcHRpb25zLndyYXBfYXR0cmlidXRlcy5zdWJzdHIoMCwiZm9yY2UiLmxlbmd0aCksdGhpcy5faXNfd3JhcF9hdHRyaWJ1dGVzX2ZvcmNlX2V4cGFuZF9tdWx0aWxpbmU9ImZvcmNlLWV4cGFuZC1tdWx0aWxpbmUiPT09dGhpcy5fb3B0aW9ucy53cmFwX2F0dHJpYnV0ZXMsdGhpcy5faXNfd3JhcF9hdHRyaWJ1dGVzX2ZvcmNlX2FsaWduZWQ9ImZvcmNlLWFsaWduZWQiPT09dGhpcy5fb3B0aW9ucy53cmFwX2F0dHJpYnV0ZXMsdGhpcy5faXNfd3JhcF9hdHRyaWJ1dGVzX2FsaWduZWRfbXVsdGlwbGU9ImFsaWduZWQtbXVsdGlwbGUiPT09dGhpcy5fb3B0aW9ucy53cmFwX2F0dHJpYnV0ZXMsdGhpcy5faXNfd3JhcF9hdHRyaWJ1dGVzX3ByZXNlcnZlPSJwcmVzZXJ2ZSI9PT10aGlzLl9vcHRpb25zLndyYXBfYXR0cmlidXRlcy5zdWJzdHIoMCwicHJlc2VydmUiLmxlbmd0aCksdGhpcy5faXNfd3JhcF9hdHRyaWJ1dGVzX3ByZXNlcnZlX2FsaWduZWQ9InByZXNlcnZlLWFsaWduZWQiPT09dGhpcy5fb3B0aW9ucy53cmFwX2F0dHJpYnV0ZXN9cC5wcm90b3R5cGUuZ2V0X3BhcnNlcl90b2tlbj1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9jdXJyZW50X2ZyYW1lP3RoaXMuX2N1cnJlbnRfZnJhbWUucGFyc2VyX3Rva2VuOm51bGx9LHAucHJvdG90eXBlLnJlY29yZF90YWc9ZnVuY3Rpb24oZSl7dmFyIHQ9bmV3IHUodGhpcy5fY3VycmVudF9mcmFtZSxlLHRoaXMuX3ByaW50ZXIuaW5kZW50X2xldmVsKTt0aGlzLl9jdXJyZW50X2ZyYW1lPXR9LHAucHJvdG90eXBlLl90cnlfcG9wX2ZyYW1lPWZ1bmN0aW9uKGUpe3ZhciB0PW51bGw7cmV0dXJuIGUmJih0PWUucGFyc2VyX3Rva2VuLHRoaXMuX3ByaW50ZXIuaW5kZW50X2xldmVsPWUuaW5kZW50X2xldmVsLHRoaXMuX2N1cnJlbnRfZnJhbWU9ZS5wYXJlbnQpLHR9LHAucHJvdG90eXBlLl9nZXRfZnJhbWU9ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG49dGhpcy5fY3VycmVudF9mcmFtZTtuJiYtMT09PWUuaW5kZXhPZihuLnRhZyk7KXtpZih0JiYtMSE9PXQuaW5kZXhPZihuLnRhZykpe249bnVsbDticmVha31uPW4ucGFyZW50fXJldHVybiBufSxwLnByb3RvdHlwZS50cnlfcG9wPWZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy5fZ2V0X2ZyYW1lKFtlXSx0KTtyZXR1cm4gdGhpcy5fdHJ5X3BvcF9mcmFtZShuKX0scC5wcm90b3R5cGUuaW5kZW50X3RvX3RhZz1mdW5jdGlvbihlKXt2YXIgdD10aGlzLl9nZXRfZnJhbWUoZSk7dCYmKHRoaXMuX3ByaW50ZXIuaW5kZW50X2xldmVsPXQuaW5kZW50X2xldmVsKX0sbS5wcm90b3R5cGUuYmVhdXRpZnk9ZnVuY3Rpb24oKXtpZih0aGlzLl9vcHRpb25zLmRpc2FibGVkKXJldHVybiB0aGlzLl9zb3VyY2VfdGV4dDt2YXIgZT10aGlzLl9zb3VyY2VfdGV4dCx0PXRoaXMuX29wdGlvbnMuZW9sOyJhdXRvIj09PXRoaXMuX29wdGlvbnMuZW9sJiYodD0iXG4iLGUmJnMudGVzdChlKSYmKHQ9ZS5tYXRjaChzKVswXSkpO3ZhciBuPShlPWUucmVwbGFjZShsLCJcbiIpKS5tYXRjaCgvXltcdCBdKi8pWzBdLHI9e3RleHQ6IiIsdHlwZToiIn0saT1uZXcgZixoPW5ldyBjKHRoaXMuX29wdGlvbnMsbiksZD1uZXcgYShlLHRoaXMuX29wdGlvbnMpLnRva2VuaXplKCk7dGhpcy5fdGFnX3N0YWNrPW5ldyBwKGgpO2Zvcih2YXIgdT1udWxsLG09ZC5uZXh0KCk7bS50eXBlIT09by5FT0Y7KW0udHlwZT09PW8uVEFHX09QRU58fG0udHlwZT09PW8uQ09NTUVOVD9pPXU9dGhpcy5faGFuZGxlX3RhZ19vcGVuKGgsbSxpLHIpOm0udHlwZT09PW8uQVRUUklCVVRFfHxtLnR5cGU9PT1vLkVRVUFMU3x8bS50eXBlPT09by5WQUxVRXx8bS50eXBlPT09by5URVhUJiYhaS50YWdfY29tcGxldGU/dT10aGlzLl9oYW5kbGVfaW5zaWRlX3RhZyhoLG0saSxkKTptLnR5cGU9PT1vLlRBR19DTE9TRT91PXRoaXMuX2hhbmRsZV90YWdfY2xvc2UoaCxtLGkpOm0udHlwZT09PW8uVEVYVD91PXRoaXMuX2hhbmRsZV90ZXh0KGgsbSxpKTpoLmFkZF9yYXdfdG9rZW4obSkscj11LG09ZC5uZXh0KCk7cmV0dXJuIGguX291dHB1dC5nZXRfY29kZSh0KX0sbS5wcm90b3R5cGUuX2hhbmRsZV90YWdfY2xvc2U9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXt0ZXh0OnQudGV4dCx0eXBlOnQudHlwZX07cmV0dXJuIGUuYWxpZ25tZW50X3NpemU9MCxuLnRhZ19jb21wbGV0ZT0hMCxlLnNldF9zcGFjZV9iZWZvcmVfdG9rZW4odC5uZXdsaW5lc3x8IiIhPT10LndoaXRlc3BhY2VfYmVmb3JlLCEwKSxuLmlzX3VuZm9ybWF0dGVkP2UuYWRkX3Jhd190b2tlbih0KTooIjwiPT09bi50YWdfc3RhcnRfY2hhciYmKGUuc2V0X3NwYWNlX2JlZm9yZV90b2tlbigiLyI9PT10LnRleHRbMF0sITApLHRoaXMuX2lzX3dyYXBfYXR0cmlidXRlc19mb3JjZV9leHBhbmRfbXVsdGlsaW5lJiZuLmhhc193cmFwcGVkX2F0dHJzJiZlLnByaW50X25ld2xpbmUoITEpKSxlLnByaW50X3Rva2VuKHQpKSwhbi5pbmRlbnRfY29udGVudHx8bi5pc191bmZvcm1hdHRlZHx8bi5pc19jb250ZW50X3VuZm9ybWF0dGVkfHwoZS5pbmRlbnQoKSxuLmluZGVudF9jb250ZW50PSExKSxuLmlzX2lubGluZV9lbGVtZW50fHxuLmlzX3VuZm9ybWF0dGVkfHxuLmlzX2NvbnRlbnRfdW5mb3JtYXR0ZWR8fGUuc2V0X3dyYXBfcG9pbnQoKSxyfSxtLnByb3RvdHlwZS5faGFuZGxlX2luc2lkZV90YWc9ZnVuY3Rpb24oZSx0LG4scil7dmFyIGk9bi5oYXNfd3JhcHBlZF9hdHRycyxhPXt0ZXh0OnQudGV4dCx0eXBlOnQudHlwZX07aWYoZS5zZXRfc3BhY2VfYmVmb3JlX3Rva2VuKHQubmV3bGluZXN8fCIiIT09dC53aGl0ZXNwYWNlX2JlZm9yZSwhMCksbi5pc191bmZvcm1hdHRlZCllLmFkZF9yYXdfdG9rZW4odCk7ZWxzZSBpZigieyI9PT1uLnRhZ19zdGFydF9jaGFyJiZ0LnR5cGU9PT1vLlRFWFQpZS5wcmludF9wcmVzZXJ2ZWRfbmV3bGluZXModCk/KHQubmV3bGluZXM9MCxlLmFkZF9yYXdfdG9rZW4odCkpOmUucHJpbnRfdG9rZW4odCk7ZWxzZXtpZih0LnR5cGU9PT1vLkFUVFJJQlVURT8oZS5zZXRfc3BhY2VfYmVmb3JlX3Rva2VuKCEwKSxuLmF0dHJfY291bnQrPTEpOih0LnR5cGU9PT1vLkVRVUFMU3x8dC50eXBlPT09by5WQUxVRSYmdC5wcmV2aW91cy50eXBlPT09by5FUVVBTFMpJiZlLnNldF9zcGFjZV9iZWZvcmVfdG9rZW4oITEpLHQudHlwZT09PW8uQVRUUklCVVRFJiYiPCI9PT1uLnRhZ19zdGFydF9jaGFyJiYoKHRoaXMuX2lzX3dyYXBfYXR0cmlidXRlc19wcmVzZXJ2ZXx8dGhpcy5faXNfd3JhcF9hdHRyaWJ1dGVzX3ByZXNlcnZlX2FsaWduZWQpJiYoZS50cmF2ZXJzZV93aGl0ZXNwYWNlKHQpLGk9aXx8MCE9PXQubmV3bGluZXMpLHRoaXMuX2lzX3dyYXBfYXR0cmlidXRlc19mb3JjZSkpe3ZhciBzPW4uYXR0cl9jb3VudD4xO2lmKHRoaXMuX2lzX3dyYXBfYXR0cmlidXRlc19mb3JjZV9leHBhbmRfbXVsdGlsaW5lJiYxPT09bi5hdHRyX2NvdW50KXt2YXIgbCxjPSEwLGg9MDtkb3tpZigobD1yLnBlZWsoaCkpLnR5cGU9PT1vLkFUVFJJQlVURSl7Yz0hMTticmVha31oKz0xfXdoaWxlKGg8NCYmbC50eXBlIT09by5FT0YmJmwudHlwZSE9PW8uVEFHX0NMT1NFKTtzPSFjfXMmJihlLnByaW50X25ld2xpbmUoITEpLGk9ITApfWUucHJpbnRfdG9rZW4odCksaT1pfHxlLnByZXZpb3VzX3Rva2VuX3dyYXBwZWQoKSxuLmhhc193cmFwcGVkX2F0dHJzPWl9cmV0dXJuIGF9LG0ucHJvdG90eXBlLl9oYW5kbGVfdGV4dD1mdW5jdGlvbihlLHQsbil7dmFyIHI9e3RleHQ6dC50ZXh0LHR5cGU6IlRLX0NPTlRFTlQifTtyZXR1cm4gbi5jdXN0b21fYmVhdXRpZmllcl9uYW1lP3RoaXMuX3ByaW50X2N1c3RvbV9iZWF0aWZpZXJfdGV4dChlLHQsbik6bi5pc191bmZvcm1hdHRlZHx8bi5pc19jb250ZW50X3VuZm9ybWF0dGVkP2UuYWRkX3Jhd190b2tlbih0KTooZS50cmF2ZXJzZV93aGl0ZXNwYWNlKHQpLGUucHJpbnRfdG9rZW4odCkpLHJ9LG0ucHJvdG90eXBlLl9wcmludF9jdXN0b21fYmVhdGlmaWVyX3RleHQ9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXM7aWYoIiIhPT10LnRleHQpe3ZhciBpLGE9dC50ZXh0LG89MSxzPSIiLGw9IiI7ImphdmFzY3JpcHQiPT09bi5jdXN0b21fYmVhdXRpZmllcl9uYW1lJiYiZnVuY3Rpb24iPT10eXBlb2YgdGhpcy5fanNfYmVhdXRpZnk/aT10aGlzLl9qc19iZWF1dGlmeToiY3NzIj09PW4uY3VzdG9tX2JlYXV0aWZpZXJfbmFtZSYmImZ1bmN0aW9uIj09dHlwZW9mIHRoaXMuX2Nzc19iZWF1dGlmeT9pPXRoaXMuX2Nzc19iZWF1dGlmeToiaHRtbCI9PT1uLmN1c3RvbV9iZWF1dGlmaWVyX25hbWUmJihpPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIG5ldyBtKGUsdCxyLl9qc19iZWF1dGlmeSxyLl9jc3NfYmVhdXRpZnkpLmJlYXV0aWZ5KCl9KSwia2VlcCI9PT10aGlzLl9vcHRpb25zLmluZGVudF9zY3JpcHRzP289MDoic2VwYXJhdGUiPT09dGhpcy5fb3B0aW9ucy5pbmRlbnRfc2NyaXB0cyYmKG89LWUuaW5kZW50X2xldmVsKTt2YXIgYz1lLmdldF9mdWxsX2luZGVudChvKTtpZihhPWEucmVwbGFjZSgvXG5bIFx0XSokLywiIiksImh0bWwiIT09bi5jdXN0b21fYmVhdXRpZmllcl9uYW1lJiYiPCI9PT1hWzBdJiZhLm1hdGNoKC9eKDwhLS18PCFcW0NEQVRBXFspLykpe3ZhciBoPS9eKDwhLS1bXlxuXSp8PCFcW0NEQVRBXFspKFxuPykoWyBcdFxuXSopKFtcc1xTXSopKC0tPnxdXT4pJC8uZXhlYyhhKTtpZighaClyZXR1cm4gdm9pZCBlLmFkZF9yYXdfdG9rZW4odCk7cz1jK2hbMV0rIlxuIixhPWhbNF0saFs1XSYmKGw9YytoWzVdKSxhPWEucmVwbGFjZSgvXG5bIFx0XSokLywiIiksKGhbMl18fC0xIT09aFszXS5pbmRleE9mKCJcbiIpKSYmKGg9aFszXS5tYXRjaCgvWyBcdF0rJC8pKSYmKHQud2hpdGVzcGFjZV9iZWZvcmU9aFswXSl9aWYoYSlpZihpKXt2YXIgZD1mdW5jdGlvbigpe3RoaXMuZW9sPSJcbiJ9O2QucHJvdG90eXBlPXRoaXMuX29wdGlvbnMucmF3X29wdGlvbnMsYT1pKGMrYSxuZXcgZCl9ZWxzZXt2YXIgdT10LndoaXRlc3BhY2VfYmVmb3JlO3UmJihhPWEucmVwbGFjZShuZXcgUmVnRXhwKCJcbigiK3UrIik/IiwiZyIpLCJcbiIpKSxhPWMrYS5yZXBsYWNlKC9cbi9nLCJcbiIrYyl9cyYmKGE9YT9zK2ErIlxuIitsOnMrbCksZS5wcmludF9uZXdsaW5lKCExKSxhJiYodC50ZXh0PWEsdC53aGl0ZXNwYWNlX2JlZm9yZT0iIix0Lm5ld2xpbmVzPTAsZS5hZGRfcmF3X3Rva2VuKHQpLGUucHJpbnRfbmV3bGluZSghMCkpfX0sbS5wcm90b3R5cGUuX2hhbmRsZV90YWdfb3Blbj1mdW5jdGlvbihlLHQsbixyKXt2YXIgaT10aGlzLl9nZXRfdGFnX29wZW5fdG9rZW4odCk7cmV0dXJuIW4uaXNfdW5mb3JtYXR0ZWQmJiFuLmlzX2NvbnRlbnRfdW5mb3JtYXR0ZWR8fG4uaXNfZW1wdHlfZWxlbWVudHx8dC50eXBlIT09by5UQUdfT1BFTnx8MCE9PXQudGV4dC5pbmRleE9mKCI8LyIpPyhlLnRyYXZlcnNlX3doaXRlc3BhY2UodCksdGhpcy5fc2V0X3RhZ19wb3NpdGlvbihlLHQsaSxuLHIpLGkuaXNfaW5saW5lX2VsZW1lbnR8fGUuc2V0X3dyYXBfcG9pbnQoKSxlLnByaW50X3Rva2VuKHQpKTooZS5hZGRfcmF3X3Rva2VuKHQpLGkuc3RhcnRfdGFnX3Rva2VuPXRoaXMuX3RhZ19zdGFjay50cnlfcG9wKGkudGFnX25hbWUpKSwodGhpcy5faXNfd3JhcF9hdHRyaWJ1dGVzX2ZvcmNlX2FsaWduZWR8fHRoaXMuX2lzX3dyYXBfYXR0cmlidXRlc19hbGlnbmVkX211bHRpcGxlfHx0aGlzLl9pc193cmFwX2F0dHJpYnV0ZXNfcHJlc2VydmVfYWxpZ25lZCkmJihpLmFsaWdubWVudF9zaXplPXQudGV4dC5sZW5ndGgrMSksaS50YWdfY29tcGxldGV8fGkuaXNfdW5mb3JtYXR0ZWR8fChlLmFsaWdubWVudF9zaXplPWkuYWxpZ25tZW50X3NpemUpLGl9O3ZhciBmPWZ1bmN0aW9uKGUsdCl7dmFyIG47KHRoaXMucGFyZW50PWV8fG51bGwsdGhpcy50ZXh0PSIiLHRoaXMudHlwZT0iVEtfVEFHX09QRU4iLHRoaXMudGFnX25hbWU9IiIsdGhpcy5pc19pbmxpbmVfZWxlbWVudD0hMSx0aGlzLmlzX3VuZm9ybWF0dGVkPSExLHRoaXMuaXNfY29udGVudF91bmZvcm1hdHRlZD0hMSx0aGlzLmlzX2VtcHR5X2VsZW1lbnQ9ITEsdGhpcy5pc19zdGFydF90YWc9ITEsdGhpcy5pc19lbmRfdGFnPSExLHRoaXMuaW5kZW50X2NvbnRlbnQ9ITEsdGhpcy5tdWx0aWxpbmVfY29udGVudD0hMSx0aGlzLmN1c3RvbV9iZWF1dGlmaWVyX25hbWU9bnVsbCx0aGlzLnN0YXJ0X3RhZ190b2tlbj1udWxsLHRoaXMuYXR0cl9jb3VudD0wLHRoaXMuaGFzX3dyYXBwZWRfYXR0cnM9ITEsdGhpcy5hbGlnbm1lbnRfc2l6ZT0wLHRoaXMudGFnX2NvbXBsZXRlPSExLHRoaXMudGFnX3N0YXJ0X2NoYXI9IiIsdGhpcy50YWdfY2hlY2s9IiIsdCk/KHRoaXMudGFnX3N0YXJ0X2NoYXI9dC50ZXh0WzBdLHRoaXMudGV4dD10LnRleHQsIjwiPT09dGhpcy50YWdfc3RhcnRfY2hhcj8obj10LnRleHQubWF0Y2goL148KFteXHM+XSopLyksdGhpcy50YWdfY2hlY2s9bj9uWzFdOiIiKToobj10LnRleHQubWF0Y2goL157eyg/OltcXl18I1wqPyk/KFteXHN9XSspLyksdGhpcy50YWdfY2hlY2s9bj9uWzFdOiIiLCJ7eyM+Ij09PXQudGV4dCYmIj4iPT09dGhpcy50YWdfY2hlY2smJm51bGwhPT10Lm5leHQmJih0aGlzLnRhZ19jaGVjaz10Lm5leHQudGV4dCkpLHRoaXMudGFnX2NoZWNrPXRoaXMudGFnX2NoZWNrLnRvTG93ZXJDYXNlKCksdC50eXBlPT09by5DT01NRU5UJiYodGhpcy50YWdfY29tcGxldGU9ITApLHRoaXMuaXNfc3RhcnRfdGFnPSIvIiE9PXRoaXMudGFnX2NoZWNrLmNoYXJBdCgwKSx0aGlzLnRhZ19uYW1lPXRoaXMuaXNfc3RhcnRfdGFnP3RoaXMudGFnX2NoZWNrOnRoaXMudGFnX2NoZWNrLnN1YnN0cigxKSx0aGlzLmlzX2VuZF90YWc9IXRoaXMuaXNfc3RhcnRfdGFnfHx0LmNsb3NlZCYmIi8+Ij09PXQuY2xvc2VkLnRleHQsdGhpcy5pc19lbmRfdGFnPXRoaXMuaXNfZW5kX3RhZ3x8InsiPT09dGhpcy50YWdfc3RhcnRfY2hhciYmKHRoaXMudGV4dC5sZW5ndGg8M3x8L1teI1xeXS8udGVzdCh0aGlzLnRleHQuY2hhckF0KDIpKSkpOnRoaXMudGFnX2NvbXBsZXRlPSEwfTttLnByb3RvdHlwZS5fZ2V0X3RhZ19vcGVuX3Rva2VuPWZ1bmN0aW9uKGUpe3ZhciB0PW5ldyBmKHRoaXMuX3RhZ19zdGFjay5nZXRfcGFyc2VyX3Rva2VuKCksZSk7cmV0dXJuIHQuYWxpZ25tZW50X3NpemU9dGhpcy5fb3B0aW9ucy53cmFwX2F0dHJpYnV0ZXNfaW5kZW50X3NpemUsdC5pc19lbmRfdGFnPXQuaXNfZW5kX3RhZ3x8ZCh0LnRhZ19jaGVjayx0aGlzLl9vcHRpb25zLnZvaWRfZWxlbWVudHMpLHQuaXNfZW1wdHlfZWxlbWVudD10LnRhZ19jb21wbGV0ZXx8dC5pc19zdGFydF90YWcmJnQuaXNfZW5kX3RhZyx0LmlzX3VuZm9ybWF0dGVkPSF0LnRhZ19jb21wbGV0ZSYmZCh0LnRhZ19jaGVjayx0aGlzLl9vcHRpb25zLnVuZm9ybWF0dGVkKSx0LmlzX2NvbnRlbnRfdW5mb3JtYXR0ZWQ9IXQuaXNfZW1wdHlfZWxlbWVudCYmZCh0LnRhZ19jaGVjayx0aGlzLl9vcHRpb25zLmNvbnRlbnRfdW5mb3JtYXR0ZWQpLHQuaXNfaW5saW5lX2VsZW1lbnQ9ZCh0LnRhZ19uYW1lLHRoaXMuX29wdGlvbnMuaW5saW5lKXx8InsiPT09dC50YWdfc3RhcnRfY2hhcix0fSxtLnByb3RvdHlwZS5fc2V0X3RhZ19wb3NpdGlvbj1mdW5jdGlvbihlLHQsbixyLGkpe2lmKG4uaXNfZW1wdHlfZWxlbWVudHx8KG4uaXNfZW5kX3RhZz9uLnN0YXJ0X3RhZ190b2tlbj10aGlzLl90YWdfc3RhY2sudHJ5X3BvcChuLnRhZ19uYW1lKToodGhpcy5fZG9fb3B0aW9uYWxfZW5kX2VsZW1lbnQobikmJihuLmlzX2lubGluZV9lbGVtZW50fHxlLnByaW50X25ld2xpbmUoITEpKSx0aGlzLl90YWdfc3RhY2sucmVjb3JkX3RhZyhuKSwic2NyaXB0IiE9PW4udGFnX25hbWUmJiJzdHlsZSIhPT1uLnRhZ19uYW1lfHxuLmlzX3VuZm9ybWF0dGVkfHxuLmlzX2NvbnRlbnRfdW5mb3JtYXR0ZWR8fChuLmN1c3RvbV9iZWF1dGlmaWVyX25hbWU9aChuLnRhZ19jaGVjayx0KSkpKSxkKG4udGFnX2NoZWNrLHRoaXMuX29wdGlvbnMuZXh0cmFfbGluZXJzKSYmKGUucHJpbnRfbmV3bGluZSghMSksZS5fb3V0cHV0Lmp1c3RfYWRkZWRfYmxhbmtsaW5lKCl8fGUucHJpbnRfbmV3bGluZSghMCkpLG4uaXNfZW1wdHlfZWxlbWVudCl7aWYoInsiPT09bi50YWdfc3RhcnRfY2hhciYmImVsc2UiPT09bi50YWdfY2hlY2spdGhpcy5fdGFnX3N0YWNrLmluZGVudF90b190YWcoWyJpZiIsInVubGVzcyIsImVhY2giXSksbi5pbmRlbnRfY29udGVudD0hMCxlLmN1cnJlbnRfbGluZV9oYXNfbWF0Y2goL3t7I2lmLyl8fGUucHJpbnRfbmV3bGluZSghMSk7IiEtLSI9PT1uLnRhZ19uYW1lJiZpLnR5cGU9PT1vLlRBR19DTE9TRSYmci5pc19lbmRfdGFnJiYtMT09PW4udGV4dC5pbmRleE9mKCJcbiIpfHwobi5pc19pbmxpbmVfZWxlbWVudHx8bi5pc191bmZvcm1hdHRlZHx8ZS5wcmludF9uZXdsaW5lKCExKSx0aGlzLl9jYWxjbHVhdGVfcGFyZW50X211bHRpbGluZShlLG4pKX1lbHNlIGlmKG4uaXNfZW5kX3RhZyl7dmFyIGE9ITE7YT0oYT1uLnN0YXJ0X3RhZ190b2tlbiYmbi5zdGFydF90YWdfdG9rZW4ubXVsdGlsaW5lX2NvbnRlbnQpfHwhbi5pc19pbmxpbmVfZWxlbWVudCYmIShyLmlzX2lubGluZV9lbGVtZW50fHxyLmlzX3VuZm9ybWF0dGVkKSYmIShpLnR5cGU9PT1vLlRBR19DTE9TRSYmbi5zdGFydF90YWdfdG9rZW49PT1yKSYmIlRLX0NPTlRFTlQiIT09aS50eXBlLChuLmlzX2NvbnRlbnRfdW5mb3JtYXR0ZWR8fG4uaXNfdW5mb3JtYXR0ZWQpJiYoYT0hMSksYSYmZS5wcmludF9uZXdsaW5lKCExKX1lbHNlIG4uaW5kZW50X2NvbnRlbnQ9IW4uY3VzdG9tX2JlYXV0aWZpZXJfbmFtZSwiPCI9PT1uLnRhZ19zdGFydF9jaGFyJiYoImh0bWwiPT09bi50YWdfbmFtZT9uLmluZGVudF9jb250ZW50PXRoaXMuX29wdGlvbnMuaW5kZW50X2lubmVyX2h0bWw6ImhlYWQiPT09bi50YWdfbmFtZT9uLmluZGVudF9jb250ZW50PXRoaXMuX29wdGlvbnMuaW5kZW50X2hlYWRfaW5uZXJfaHRtbDoiYm9keSI9PT1uLnRhZ19uYW1lJiYobi5pbmRlbnRfY29udGVudD10aGlzLl9vcHRpb25zLmluZGVudF9ib2R5X2lubmVyX2h0bWwpKSxuLmlzX2lubGluZV9lbGVtZW50fHxuLmlzX3VuZm9ybWF0dGVkfHwiVEtfQ09OVEVOVCI9PT1pLnR5cGUmJiFuLmlzX2NvbnRlbnRfdW5mb3JtYXR0ZWR8fGUucHJpbnRfbmV3bGluZSghMSksdGhpcy5fY2FsY2x1YXRlX3BhcmVudF9tdWx0aWxpbmUoZSxuKX0sbS5wcm90b3R5cGUuX2NhbGNsdWF0ZV9wYXJlbnRfbXVsdGlsaW5lPWZ1bmN0aW9uKGUsdCl7IXQucGFyZW50fHwhZS5fb3V0cHV0Lmp1c3RfYWRkZWRfbmV3bGluZSgpfHwodC5pc19pbmxpbmVfZWxlbWVudHx8dC5pc191bmZvcm1hdHRlZCkmJnQucGFyZW50LmlzX2lubGluZV9lbGVtZW50fHwodC5wYXJlbnQubXVsdGlsaW5lX2NvbnRlbnQ9ITApfTt2YXIgZz1bImFkZHJlc3MiLCJhcnRpY2xlIiwiYXNpZGUiLCJibG9ja3F1b3RlIiwiZGV0YWlscyIsImRpdiIsImRsIiwiZmllbGRzZXQiLCJmaWdjYXB0aW9uIiwiZmlndXJlIiwiZm9vdGVyIiwiZm9ybSIsImgxIiwiaDIiLCJoMyIsImg0IiwiaDUiLCJoNiIsImhlYWRlciIsImhyIiwibWFpbiIsIm5hdiIsIm9sIiwicCIsInByZSIsInNlY3Rpb24iLCJ0YWJsZSIsInVsIl0sYj1bImEiLCJhdWRpbyIsImRlbCIsImlucyIsIm1hcCIsIm5vc2NyaXB0IiwidmlkZW8iXTttLnByb3RvdHlwZS5fZG9fb3B0aW9uYWxfZW5kX2VsZW1lbnQ9ZnVuY3Rpb24oZSl7dmFyIHQ9bnVsbDtpZighZS5pc19lbXB0eV9lbGVtZW50JiZlLmlzX3N0YXJ0X3RhZyYmZS5wYXJlbnQpe2lmKCJib2R5Ij09PWUudGFnX25hbWUpdD10fHx0aGlzLl90YWdfc3RhY2sudHJ5X3BvcCgiaGVhZCIpO2Vsc2UgaWYoImxpIj09PWUudGFnX25hbWUpdD10fHx0aGlzLl90YWdfc3RhY2sudHJ5X3BvcCgibGkiLFsib2wiLCJ1bCJdKTtlbHNlIGlmKCJkZCI9PT1lLnRhZ19uYW1lfHwiZHQiPT09ZS50YWdfbmFtZSl0PSh0PXR8fHRoaXMuX3RhZ19zdGFjay50cnlfcG9wKCJkdCIsWyJkbCJdKSl8fHRoaXMuX3RhZ19zdGFjay50cnlfcG9wKCJkZCIsWyJkbCJdKTtlbHNlIGlmKCJwIj09PWUucGFyZW50LnRhZ19uYW1lJiYtMSE9PWcuaW5kZXhPZihlLnRhZ19uYW1lKSl7dmFyIG49ZS5wYXJlbnQucGFyZW50O24mJi0xIT09Yi5pbmRleE9mKG4udGFnX25hbWUpfHwodD10fHx0aGlzLl90YWdfc3RhY2sudHJ5X3BvcCgicCIpKX1lbHNlInJwIj09PWUudGFnX25hbWV8fCJydCI9PT1lLnRhZ19uYW1lP3Q9KHQ9dHx8dGhpcy5fdGFnX3N0YWNrLnRyeV9wb3AoInJ0IixbInJ1YnkiLCJydGMiXSkpfHx0aGlzLl90YWdfc3RhY2sudHJ5X3BvcCgicnAiLFsicnVieSIsInJ0YyJdKToib3B0Z3JvdXAiPT09ZS50YWdfbmFtZT90PXR8fHRoaXMuX3RhZ19zdGFjay50cnlfcG9wKCJvcHRncm91cCIsWyJzZWxlY3QiXSk6Im9wdGlvbiI9PT1lLnRhZ19uYW1lP3Q9dHx8dGhpcy5fdGFnX3N0YWNrLnRyeV9wb3AoIm9wdGlvbiIsWyJzZWxlY3QiLCJkYXRhbGlzdCIsIm9wdGdyb3VwIl0pOiJjb2xncm91cCI9PT1lLnRhZ19uYW1lP3Q9dHx8dGhpcy5fdGFnX3N0YWNrLnRyeV9wb3AoImNhcHRpb24iLFsidGFibGUiXSk6InRoZWFkIj09PWUudGFnX25hbWU/dD0odD10fHx0aGlzLl90YWdfc3RhY2sudHJ5X3BvcCgiY2FwdGlvbiIsWyJ0YWJsZSJdKSl8fHRoaXMuX3RhZ19zdGFjay50cnlfcG9wKCJjb2xncm91cCIsWyJ0YWJsZSJdKToidGJvZHkiPT09ZS50YWdfbmFtZXx8InRmb290Ij09PWUudGFnX25hbWU/dD0odD0odD0odD10fHx0aGlzLl90YWdfc3RhY2sudHJ5X3BvcCgiY2FwdGlvbiIsWyJ0YWJsZSJdKSl8fHRoaXMuX3RhZ19zdGFjay50cnlfcG9wKCJjb2xncm91cCIsWyJ0YWJsZSJdKSl8fHRoaXMuX3RhZ19zdGFjay50cnlfcG9wKCJ0aGVhZCIsWyJ0YWJsZSJdKSl8fHRoaXMuX3RhZ19zdGFjay50cnlfcG9wKCJ0Ym9keSIsWyJ0YWJsZSJdKToidHIiPT09ZS50YWdfbmFtZT90PSh0PSh0PXR8fHRoaXMuX3RhZ19zdGFjay50cnlfcG9wKCJjYXB0aW9uIixbInRhYmxlIl0pKXx8dGhpcy5fdGFnX3N0YWNrLnRyeV9wb3AoImNvbGdyb3VwIixbInRhYmxlIl0pKXx8dGhpcy5fdGFnX3N0YWNrLnRyeV9wb3AoInRyIixbInRhYmxlIiwidGhlYWQiLCJ0Ym9keSIsInRmb290Il0pOiJ0aCIhPT1lLnRhZ19uYW1lJiYidGQiIT09ZS50YWdfbmFtZXx8KHQ9KHQ9dHx8dGhpcy5fdGFnX3N0YWNrLnRyeV9wb3AoInRkIixbInRhYmxlIiwidGhlYWQiLCJ0Ym9keSIsInRmb290IiwidHIiXSkpfHx0aGlzLl90YWdfc3RhY2sudHJ5X3BvcCgidGgiLFsidGFibGUiLCJ0aGVhZCIsInRib2R5IiwidGZvb3QiLCJ0ciJdKSk7cmV0dXJuIGUucGFyZW50PXRoaXMuX3RhZ19zdGFjay5nZXRfcGFyc2VyX3Rva2VuKCksdH19LGUuZXhwb3J0cy5CZWF1dGlmaWVyPW19LGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1uKDYpLk9wdGlvbnM7ZnVuY3Rpb24gaShlKXtyLmNhbGwodGhpcyxlLCJodG1sIiksMT09PXRoaXMudGVtcGxhdGluZy5sZW5ndGgmJiJhdXRvIj09PXRoaXMudGVtcGxhdGluZ1swXSYmKHRoaXMudGVtcGxhdGluZz1bImRqYW5nbyIsImVyYiIsImhhbmRsZWJhcnMiLCJwaHAiXSksdGhpcy5pbmRlbnRfaW5uZXJfaHRtbD10aGlzLl9nZXRfYm9vbGVhbigiaW5kZW50X2lubmVyX2h0bWwiKSx0aGlzLmluZGVudF9ib2R5X2lubmVyX2h0bWw9dGhpcy5fZ2V0X2Jvb2xlYW4oImluZGVudF9ib2R5X2lubmVyX2h0bWwiLCEwKSx0aGlzLmluZGVudF9oZWFkX2lubmVyX2h0bWw9dGhpcy5fZ2V0X2Jvb2xlYW4oImluZGVudF9oZWFkX2lubmVyX2h0bWwiLCEwKSx0aGlzLmluZGVudF9oYW5kbGViYXJzPXRoaXMuX2dldF9ib29sZWFuKCJpbmRlbnRfaGFuZGxlYmFycyIsITApLHRoaXMud3JhcF9hdHRyaWJ1dGVzPXRoaXMuX2dldF9zZWxlY3Rpb24oIndyYXBfYXR0cmlidXRlcyIsWyJhdXRvIiwiZm9yY2UiLCJmb3JjZS1hbGlnbmVkIiwiZm9yY2UtZXhwYW5kLW11bHRpbGluZSIsImFsaWduZWQtbXVsdGlwbGUiLCJwcmVzZXJ2ZSIsInByZXNlcnZlLWFsaWduZWQiXSksdGhpcy53cmFwX2F0dHJpYnV0ZXNfaW5kZW50X3NpemU9dGhpcy5fZ2V0X251bWJlcigid3JhcF9hdHRyaWJ1dGVzX2luZGVudF9zaXplIix0aGlzLmluZGVudF9zaXplKSx0aGlzLmV4dHJhX2xpbmVycz10aGlzLl9nZXRfYXJyYXkoImV4dHJhX2xpbmVycyIsWyJoZWFkIiwiYm9keSIsIi9odG1sIl0pLHRoaXMuaW5saW5lPXRoaXMuX2dldF9hcnJheSgiaW5saW5lIixbImEiLCJhYmJyIiwiYXJlYSIsImF1ZGlvIiwiYiIsImJkaSIsImJkbyIsImJyIiwiYnV0dG9uIiwiY2FudmFzIiwiY2l0ZSIsImNvZGUiLCJkYXRhIiwiZGF0YWxpc3QiLCJkZWwiLCJkZm4iLCJlbSIsImVtYmVkIiwiaSIsImlmcmFtZSIsImltZyIsImlucHV0IiwiaW5zIiwia2JkIiwia2V5Z2VuIiwibGFiZWwiLCJtYXAiLCJtYXJrIiwibWF0aCIsIm1ldGVyIiwibm9zY3JpcHQiLCJvYmplY3QiLCJvdXRwdXQiLCJwcm9ncmVzcyIsInEiLCJydWJ5IiwicyIsInNhbXAiLCJzZWxlY3QiLCJzbWFsbCIsInNwYW4iLCJzdHJvbmciLCJzdWIiLCJzdXAiLCJzdmciLCJ0ZW1wbGF0ZSIsInRleHRhcmVhIiwidGltZSIsInUiLCJ2YXIiLCJ2aWRlbyIsIndiciIsInRleHQiLCJhY3JvbnltIiwiYmlnIiwic3RyaWtlIiwidHQiXSksdGhpcy52b2lkX2VsZW1lbnRzPXRoaXMuX2dldF9hcnJheSgidm9pZF9lbGVtZW50cyIsWyJhcmVhIiwiYmFzZSIsImJyIiwiY29sIiwiZW1iZWQiLCJociIsImltZyIsImlucHV0Iiwia2V5Z2VuIiwibGluayIsIm1lbnVpdGVtIiwibWV0YSIsInBhcmFtIiwic291cmNlIiwidHJhY2siLCJ3YnIiLCIhZG9jdHlwZSIsIj94bWwiLCJiYXNlZm9udCIsImlzaW5kZXgiXSksdGhpcy51bmZvcm1hdHRlZD10aGlzLl9nZXRfYXJyYXkoInVuZm9ybWF0dGVkIixbXSksdGhpcy5jb250ZW50X3VuZm9ybWF0dGVkPXRoaXMuX2dldF9hcnJheSgiY29udGVudF91bmZvcm1hdHRlZCIsWyJwcmUiLCJ0ZXh0YXJlYSJdKSx0aGlzLnVuZm9ybWF0dGVkX2NvbnRlbnRfZGVsaW1pdGVyPXRoaXMuX2dldF9jaGFyYWN0ZXJzKCJ1bmZvcm1hdHRlZF9jb250ZW50X2RlbGltaXRlciIpLHRoaXMuaW5kZW50X3NjcmlwdHM9dGhpcy5fZ2V0X3NlbGVjdGlvbigiaW5kZW50X3NjcmlwdHMiLFsibm9ybWFsIiwia2VlcCIsInNlcGFyYXRlIl0pfWkucHJvdG90eXBlPW5ldyByLGUuZXhwb3J0cy5PcHRpb25zPWl9LGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1uKDkpLlRva2VuaXplcixpPW4oOSkuVE9LRU4sYT1uKDEzKS5EaXJlY3RpdmVzLG89bigxNCkuVGVtcGxhdGFibGVQYXR0ZXJuLHM9bigxMikuUGF0dGVybixsPXtUQUdfT1BFTjoiVEtfVEFHX09QRU4iLFRBR19DTE9TRToiVEtfVEFHX0NMT1NFIixBVFRSSUJVVEU6IlRLX0FUVFJJQlVURSIsRVFVQUxTOiJUS19FUVVBTFMiLFZBTFVFOiJUS19WQUxVRSIsQ09NTUVOVDoiVEtfQ09NTUVOVCIsVEVYVDoiVEtfVEVYVCIsVU5LTk9XTjoiVEtfVU5LTk9XTiIsU1RBUlQ6aS5TVEFSVCxSQVc6aS5SQVcsRU9GOmkuRU9GfSxjPW5ldyBhKC88XCEtLS8sLy0tPi8pLGg9ZnVuY3Rpb24oZSx0KXtyLmNhbGwodGhpcyxlLHQpLHRoaXMuX2N1cnJlbnRfdGFnX25hbWU9IiI7dmFyIG49bmV3IG8odGhpcy5faW5wdXQpLnJlYWRfb3B0aW9ucyh0aGlzLl9vcHRpb25zKSxpPW5ldyBzKHRoaXMuX2lucHV0KTtpZih0aGlzLl9fcGF0dGVybnM9e3dvcmQ6bi51bnRpbCgvW1xuXHJcdCA8XS8pLHNpbmdsZV9xdW90ZTpuLnVudGlsX2FmdGVyKC8nLyksZG91YmxlX3F1b3RlOm4udW50aWxfYWZ0ZXIoLyIvKSxhdHRyaWJ1dGU6bi51bnRpbCgvW1xuXHJcdCA9Pl18XC8+LyksZWxlbWVudF9uYW1lOm4udW50aWwoL1tcblxyXHQgPlwvXS8pLGhhbmRsZWJhcnNfY29tbWVudDppLnN0YXJ0aW5nX3dpdGgoL3t7IS0tLykudW50aWxfYWZ0ZXIoLy0tfX0vKSxoYW5kbGViYXJzOmkuc3RhcnRpbmdfd2l0aCgve3svKS51bnRpbF9hZnRlcigvfX0vKSxoYW5kbGViYXJzX29wZW46aS51bnRpbCgvW1xuXHJcdCB9XS8pLGhhbmRsZWJhcnNfcmF3X2Nsb3NlOmkudW50aWwoL319LyksY29tbWVudDppLnN0YXJ0aW5nX3dpdGgoLzwhLS0vKS51bnRpbF9hZnRlcigvLS0+LyksY2RhdGE6aS5zdGFydGluZ193aXRoKC88IVxbQ0RBVEFcWy8pLnVudGlsX2FmdGVyKC9dXT4vKSxjb25kaXRpb25hbF9jb21tZW50Omkuc3RhcnRpbmdfd2l0aCgvPCFcWy8pLnVudGlsX2FmdGVyKC9dPi8pLHByb2Nlc3Npbmc6aS5zdGFydGluZ193aXRoKC88XD8vKS51bnRpbF9hZnRlcigvXD8+Lyl9LHRoaXMuX29wdGlvbnMuaW5kZW50X2hhbmRsZWJhcnMmJih0aGlzLl9fcGF0dGVybnMud29yZD10aGlzLl9fcGF0dGVybnMud29yZC5leGNsdWRlKCJoYW5kbGViYXJzIikpLHRoaXMuX3VuZm9ybWF0dGVkX2NvbnRlbnRfZGVsaW1pdGVyPW51bGwsdGhpcy5fb3B0aW9ucy51bmZvcm1hdHRlZF9jb250ZW50X2RlbGltaXRlcil7dmFyIGE9dGhpcy5faW5wdXQuZ2V0X2xpdGVyYWxfcmVnZXhwKHRoaXMuX29wdGlvbnMudW5mb3JtYXR0ZWRfY29udGVudF9kZWxpbWl0ZXIpO3RoaXMuX19wYXR0ZXJucy51bmZvcm1hdHRlZF9jb250ZW50X2RlbGltaXRlcj1pLm1hdGNoaW5nKGEpLnVudGlsX2FmdGVyKGEpfX07KGgucHJvdG90eXBlPW5ldyByKS5faXNfY29tbWVudD1mdW5jdGlvbihlKXtyZXR1cm4hMX0saC5wcm90b3R5cGUuX2lzX29wZW5pbmc9ZnVuY3Rpb24oZSl7cmV0dXJuIGUudHlwZT09PWwuVEFHX09QRU59LGgucHJvdG90eXBlLl9pc19jbG9zaW5nPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUudHlwZT09PWwuVEFHX0NMT1NFJiZ0JiYoKCI+Ij09PWUudGV4dHx8Ii8+Ij09PWUudGV4dCkmJiI8Ij09PXQudGV4dFswXXx8In19Ij09PWUudGV4dCYmInsiPT09dC50ZXh0WzBdJiYieyI9PT10LnRleHRbMV0pfSxoLnByb3RvdHlwZS5fcmVzZXQ9ZnVuY3Rpb24oKXt0aGlzLl9jdXJyZW50X3RhZ19uYW1lPSIifSxoLnByb3RvdHlwZS5fZ2V0X25leHRfdG9rZW49ZnVuY3Rpb24oZSx0KXt2YXIgbj1udWxsO3RoaXMuX3JlYWRXaGl0ZXNwYWNlKCk7dmFyIHI9dGhpcy5faW5wdXQucGVlaygpO3JldHVybiBudWxsPT09cj90aGlzLl9jcmVhdGVfdG9rZW4obC5FT0YsIiIpOm49KG49KG49KG49KG49KG49KG49KG49KG49bnx8dGhpcy5fcmVhZF9vcGVuX2hhbmRsZWJhcnMocix0KSl8fHRoaXMuX3JlYWRfYXR0cmlidXRlKHIsZSx0KSl8fHRoaXMuX3JlYWRfY2xvc2Uocix0KSl8fHRoaXMuX3JlYWRfcmF3X2NvbnRlbnQocixlLHQpKXx8dGhpcy5fcmVhZF9jb250ZW50X3dvcmQocikpfHx0aGlzLl9yZWFkX2NvbW1lbnRfb3JfY2RhdGEocikpfHx0aGlzLl9yZWFkX3Byb2Nlc3NpbmcocikpfHx0aGlzLl9yZWFkX29wZW4ocix0KSl8fHRoaXMuX2NyZWF0ZV90b2tlbihsLlVOS05PV04sdGhpcy5faW5wdXQubmV4dCgpKX0saC5wcm90b3R5cGUuX3JlYWRfY29tbWVudF9vcl9jZGF0YT1mdW5jdGlvbihlKXt2YXIgdD1udWxsLG49bnVsbCxyPW51bGw7IjwiPT09ZSYmKCIhIj09PXRoaXMuX2lucHV0LnBlZWsoMSkmJigobj10aGlzLl9fcGF0dGVybnMuY29tbWVudC5yZWFkKCkpPyhyPWMuZ2V0X2RpcmVjdGl2ZXMobikpJiYic3RhcnQiPT09ci5pZ25vcmUmJihuKz1jLnJlYWRJZ25vcmVkKHRoaXMuX2lucHV0KSk6bj10aGlzLl9fcGF0dGVybnMuY2RhdGEucmVhZCgpKSxuJiYoKHQ9dGhpcy5fY3JlYXRlX3Rva2VuKGwuQ09NTUVOVCxuKSkuZGlyZWN0aXZlcz1yKSk7cmV0dXJuIHR9LGgucHJvdG90eXBlLl9yZWFkX3Byb2Nlc3Npbmc9ZnVuY3Rpb24oZSl7dmFyIHQ9bnVsbCxuPW51bGw7aWYoIjwiPT09ZSl7dmFyIHI9dGhpcy5faW5wdXQucGVlaygxKTsiISIhPT1yJiYiPyIhPT1yfHwobj0obj10aGlzLl9fcGF0dGVybnMuY29uZGl0aW9uYWxfY29tbWVudC5yZWFkKCkpfHx0aGlzLl9fcGF0dGVybnMucHJvY2Vzc2luZy5yZWFkKCkpLG4mJigodD10aGlzLl9jcmVhdGVfdG9rZW4obC5DT01NRU5ULG4pKS5kaXJlY3RpdmVzPW51bGwpfXJldHVybiB0fSxoLnByb3RvdHlwZS5fcmVhZF9vcGVuPWZ1bmN0aW9uKGUsdCl7dmFyIG49bnVsbCxyPW51bGw7cmV0dXJuIHR8fCI8Ij09PWUmJihuPXRoaXMuX2lucHV0Lm5leHQoKSwiLyI9PT10aGlzLl9pbnB1dC5wZWVrKCkmJihuKz10aGlzLl9pbnB1dC5uZXh0KCkpLG4rPXRoaXMuX19wYXR0ZXJucy5lbGVtZW50X25hbWUucmVhZCgpLHI9dGhpcy5fY3JlYXRlX3Rva2VuKGwuVEFHX09QRU4sbikpLHJ9LGgucHJvdG90eXBlLl9yZWFkX29wZW5faGFuZGxlYmFycz1mdW5jdGlvbihlLHQpe3ZhciBuPW51bGwscj1udWxsO3JldHVybiB0fHx0aGlzLl9vcHRpb25zLmluZGVudF9oYW5kbGViYXJzJiYieyI9PT1lJiYieyI9PT10aGlzLl9pbnB1dC5wZWVrKDEpJiYoIiEiPT09dGhpcy5faW5wdXQucGVlaygyKT8obj0obj10aGlzLl9fcGF0dGVybnMuaGFuZGxlYmFyc19jb21tZW50LnJlYWQoKSl8fHRoaXMuX19wYXR0ZXJucy5oYW5kbGViYXJzLnJlYWQoKSxyPXRoaXMuX2NyZWF0ZV90b2tlbihsLkNPTU1FTlQsbikpOihuPXRoaXMuX19wYXR0ZXJucy5oYW5kbGViYXJzX29wZW4ucmVhZCgpLHI9dGhpcy5fY3JlYXRlX3Rva2VuKGwuVEFHX09QRU4sbikpKSxyfSxoLnByb3RvdHlwZS5fcmVhZF9jbG9zZT1mdW5jdGlvbihlLHQpe3ZhciBuPW51bGwscj1udWxsO3JldHVybiB0JiYoIjwiPT09dC50ZXh0WzBdJiYoIj4iPT09ZXx8Ii8iPT09ZSYmIj4iPT09dGhpcy5faW5wdXQucGVlaygxKSk/KG49dGhpcy5faW5wdXQubmV4dCgpLCIvIj09PWUmJihuKz10aGlzLl9pbnB1dC5uZXh0KCkpLHI9dGhpcy5fY3JlYXRlX3Rva2VuKGwuVEFHX0NMT1NFLG4pKToieyI9PT10LnRleHRbMF0mJiJ9Ij09PWUmJiJ9Ij09PXRoaXMuX2lucHV0LnBlZWsoMSkmJih0aGlzLl9pbnB1dC5uZXh0KCksdGhpcy5faW5wdXQubmV4dCgpLHI9dGhpcy5fY3JlYXRlX3Rva2VuKGwuVEFHX0NMT1NFLCJ9fSIpKSkscn0saC5wcm90b3R5cGUuX3JlYWRfYXR0cmlidXRlPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1udWxsLGk9IiI7aWYobiYmIjwiPT09bi50ZXh0WzBdKWlmKCI9Ij09PWUpcj10aGlzLl9jcmVhdGVfdG9rZW4obC5FUVVBTFMsdGhpcy5faW5wdXQubmV4dCgpKTtlbHNlIGlmKCciJz09PWV8fCInIj09PWUpe3ZhciBhPXRoaXMuX2lucHV0Lm5leHQoKTthKz0nIic9PT1lP3RoaXMuX19wYXR0ZXJucy5kb3VibGVfcXVvdGUucmVhZCgpOnRoaXMuX19wYXR0ZXJucy5zaW5nbGVfcXVvdGUucmVhZCgpLHI9dGhpcy5fY3JlYXRlX3Rva2VuKGwuVkFMVUUsYSl9ZWxzZShpPXRoaXMuX19wYXR0ZXJucy5hdHRyaWJ1dGUucmVhZCgpKSYmKHI9dC50eXBlPT09bC5FUVVBTFM/dGhpcy5fY3JlYXRlX3Rva2VuKGwuVkFMVUUsaSk6dGhpcy5fY3JlYXRlX3Rva2VuKGwuQVRUUklCVVRFLGkpKTtyZXR1cm4gcn0saC5wcm90b3R5cGUuX2lzX2NvbnRlbnRfdW5mb3JtYXR0ZWQ9ZnVuY3Rpb24oZSl7cmV0dXJuLTE9PT10aGlzLl9vcHRpb25zLnZvaWRfZWxlbWVudHMuaW5kZXhPZihlKSYmKC0xIT09dGhpcy5fb3B0aW9ucy5jb250ZW50X3VuZm9ybWF0dGVkLmluZGV4T2YoZSl8fC0xIT09dGhpcy5fb3B0aW9ucy51bmZvcm1hdHRlZC5pbmRleE9mKGUpKX0saC5wcm90b3R5cGUuX3JlYWRfcmF3X2NvbnRlbnQ9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPSIiO2lmKG4mJiJ7Ij09PW4udGV4dFswXSlyPXRoaXMuX19wYXR0ZXJucy5oYW5kbGViYXJzX3Jhd19jbG9zZS5yZWFkKCk7ZWxzZSBpZih0LnR5cGU9PT1sLlRBR19DTE9TRSYmIjwiPT09dC5vcGVuZWQudGV4dFswXSYmIi8iIT09dC50ZXh0WzBdKXt2YXIgaT10Lm9wZW5lZC50ZXh0LnN1YnN0cigxKS50b0xvd2VyQ2FzZSgpO2lmKCJzY3JpcHQiPT09aXx8InN0eWxlIj09PWkpe3ZhciBhPXRoaXMuX3JlYWRfY29tbWVudF9vcl9jZGF0YShlKTtpZihhKXJldHVybiBhLnR5cGU9bC5URVhULGE7cj10aGlzLl9pbnB1dC5yZWFkVW50aWwobmV3IFJlZ0V4cCgiPC8iK2krIltcXG5cXHJcXHQgXSo/PiIsImlnIikpfWVsc2UgdGhpcy5faXNfY29udGVudF91bmZvcm1hdHRlZChpKSYmKHI9dGhpcy5faW5wdXQucmVhZFVudGlsKG5ldyBSZWdFeHAoIjwvIitpKyJbXFxuXFxyXFx0IF0qPz4iLCJpZyIpKSl9cmV0dXJuIHI/dGhpcy5fY3JlYXRlX3Rva2VuKGwuVEVYVCxyKTpudWxsfSxoLnByb3RvdHlwZS5fcmVhZF9jb250ZW50X3dvcmQ9ZnVuY3Rpb24oZSl7dmFyIHQ9IiI7aWYodGhpcy5fb3B0aW9ucy51bmZvcm1hdHRlZF9jb250ZW50X2RlbGltaXRlciYmZT09PXRoaXMuX29wdGlvbnMudW5mb3JtYXR0ZWRfY29udGVudF9kZWxpbWl0ZXJbMF0mJih0PXRoaXMuX19wYXR0ZXJucy51bmZvcm1hdHRlZF9jb250ZW50X2RlbGltaXRlci5yZWFkKCkpLHR8fCh0PXRoaXMuX19wYXR0ZXJucy53b3JkLnJlYWQoKSksdClyZXR1cm4gdGhpcy5fY3JlYXRlX3Rva2VuKGwuVEVYVCx0KX0sZS5leHBvcnRzLlRva2VuaXplcj1oLGUuZXhwb3J0cy5UT0tFTj1sfV0sdD17fTt2YXIgbj1mdW5jdGlvbiBuKHIpe3ZhciBpPXRbcl07aWYodm9pZCAwIT09aSlyZXR1cm4gaS5leHBvcnRzO3ZhciBhPXRbcl09e2V4cG9ydHM6e319O3JldHVybiBlW3JdKGEsYS5leHBvcnRzLG4pLGEuZXhwb3J0c30oMTgpO0tvPW59KCksam89KCgpPT57dmFyIGU9ezQ3MDplPT57ZnVuY3Rpb24gdChlKXtpZigic3RyaW5nIiE9dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcigiUGF0aCBtdXN0IGJlIGEgc3RyaW5nLiBSZWNlaXZlZCAiK0pTT04uc3RyaW5naWZ5KGUpKX1mdW5jdGlvbiBuKGUsdCl7Zm9yKHZhciBuLHI9IiIsaT0wLGE9LTEsbz0wLHM9MDtzPD1lLmxlbmd0aDsrK3Mpe2lmKHM8ZS5sZW5ndGgpbj1lLmNoYXJDb2RlQXQocyk7ZWxzZXtpZig0Nz09PW4pYnJlYWs7bj00N31pZig0Nz09PW4pe2lmKGE9PT1zLTF8fDE9PT1vKTtlbHNlIGlmKGEhPT1zLTEmJjI9PT1vKXtpZihyLmxlbmd0aDwyfHwyIT09aXx8NDYhPT1yLmNoYXJDb2RlQXQoci5sZW5ndGgtMSl8fDQ2IT09ci5jaGFyQ29kZUF0KHIubGVuZ3RoLTIpKWlmKHIubGVuZ3RoPjIpe3ZhciBsPXIubGFzdEluZGV4T2YoIi8iKTtpZihsIT09ci5sZW5ndGgtMSl7LTE9PT1sPyhyPSIiLGk9MCk6aT0ocj1yLnNsaWNlKDAsbCkpLmxlbmd0aC0xLXIubGFzdEluZGV4T2YoIi8iKSxhPXMsbz0wO2NvbnRpbnVlfX1lbHNlIGlmKDI9PT1yLmxlbmd0aHx8MT09PXIubGVuZ3RoKXtyPSIiLGk9MCxhPXMsbz0wO2NvbnRpbnVlfXQmJihyLmxlbmd0aD4wP3IrPSIvLi4iOnI9Ii4uIixpPTIpfWVsc2Ugci5sZW5ndGg+MD9yKz0iLyIrZS5zbGljZShhKzEscyk6cj1lLnNsaWNlKGErMSxzKSxpPXMtYS0xO2E9cyxvPTB9ZWxzZSA0Nj09PW4mJi0xIT09bz8rK286bz0tMX1yZXR1cm4gcn12YXIgcj17cmVzb2x2ZTpmdW5jdGlvbigpe2Zvcih2YXIgZSxyPSIiLGk9ITEsYT1hcmd1bWVudHMubGVuZ3RoLTE7YT49LTEmJiFpO2EtLSl7dmFyIG87YT49MD9vPWFyZ3VtZW50c1thXToodm9pZCAwPT09ZSYmKGU9cHJvY2Vzcy5jd2QoKSksbz1lKSx0KG8pLDAhPT1vLmxlbmd0aCYmKHI9bysiLyIrcixpPTQ3PT09by5jaGFyQ29kZUF0KDApKX1yZXR1cm4gcj1uKHIsIWkpLGk/ci5sZW5ndGg+MD8iLyIrcjoiLyI6ci5sZW5ndGg+MD9yOiIuIn0sbm9ybWFsaXplOmZ1bmN0aW9uKGUpe2lmKHQoZSksMD09PWUubGVuZ3RoKXJldHVybiIuIjt2YXIgcj00Nz09PWUuY2hhckNvZGVBdCgwKSxpPTQ3PT09ZS5jaGFyQ29kZUF0KGUubGVuZ3RoLTEpO3JldHVybiAwIT09KGU9bihlLCFyKSkubGVuZ3RofHxyfHwoZT0iLiIpLGUubGVuZ3RoPjAmJmkmJihlKz0iLyIpLHI/Ii8iK2U6ZX0saXNBYnNvbHV0ZTpmdW5jdGlvbihlKXtyZXR1cm4gdChlKSxlLmxlbmd0aD4wJiY0Nz09PWUuY2hhckNvZGVBdCgwKX0sam9pbjpmdW5jdGlvbigpe2lmKDA9PT1hcmd1bWVudHMubGVuZ3RoKXJldHVybiIuIjtmb3IodmFyIGUsbj0wO248YXJndW1lbnRzLmxlbmd0aDsrK24pe3ZhciBpPWFyZ3VtZW50c1tuXTt0KGkpLGkubGVuZ3RoPjAmJih2b2lkIDA9PT1lP2U9aTplKz0iLyIraSl9cmV0dXJuIHZvaWQgMD09PWU/Ii4iOnIubm9ybWFsaXplKGUpfSxyZWxhdGl2ZTpmdW5jdGlvbihlLG4pe2lmKHQoZSksdChuKSxlPT09bilyZXR1cm4iIjtpZigoZT1yLnJlc29sdmUoZSkpPT09KG49ci5yZXNvbHZlKG4pKSlyZXR1cm4iIjtmb3IodmFyIGk9MTtpPGUubGVuZ3RoJiY0Nz09PWUuY2hhckNvZGVBdChpKTsrK2kpO2Zvcih2YXIgYT1lLmxlbmd0aCxvPWEtaSxzPTE7czxuLmxlbmd0aCYmNDc9PT1uLmNoYXJDb2RlQXQocyk7KytzKTtmb3IodmFyIGw9bi5sZW5ndGgtcyxjPW88bD9vOmwsaD0tMSxkPTA7ZDw9YzsrK2Qpe2lmKGQ9PT1jKXtpZihsPmMpe2lmKDQ3PT09bi5jaGFyQ29kZUF0KHMrZCkpcmV0dXJuIG4uc2xpY2UocytkKzEpO2lmKDA9PT1kKXJldHVybiBuLnNsaWNlKHMrZCl9ZWxzZSBvPmMmJig0Nz09PWUuY2hhckNvZGVBdChpK2QpP2g9ZDowPT09ZCYmKGg9MCkpO2JyZWFrfXZhciB1PWUuY2hhckNvZGVBdChpK2QpO2lmKHUhPT1uLmNoYXJDb2RlQXQocytkKSlicmVhazs0Nz09PXUmJihoPWQpfXZhciBwPSIiO2ZvcihkPWkraCsxO2Q8PWE7KytkKWQhPT1hJiY0NyE9PWUuY2hhckNvZGVBdChkKXx8KDA9PT1wLmxlbmd0aD9wKz0iLi4iOnArPSIvLi4iKTtyZXR1cm4gcC5sZW5ndGg+MD9wK24uc2xpY2UocytoKToocys9aCw0Nz09PW4uY2hhckNvZGVBdChzKSYmKytzLG4uc2xpY2UocykpfSxfbWFrZUxvbmc6ZnVuY3Rpb24oZSl7cmV0dXJuIGV9LGRpcm5hbWU6ZnVuY3Rpb24oZSl7aWYodChlKSwwPT09ZS5sZW5ndGgpcmV0dXJuIi4iO2Zvcih2YXIgbj1lLmNoYXJDb2RlQXQoMCkscj00Nz09PW4saT0tMSxhPSEwLG89ZS5sZW5ndGgtMTtvPj0xOy0tbylpZig0Nz09PShuPWUuY2hhckNvZGVBdChvKSkpe2lmKCFhKXtpPW87YnJlYWt9fWVsc2UgYT0hMTtyZXR1cm4tMT09PWk/cj8iLyI6Ii4iOnImJjE9PT1pPyIvLyI6ZS5zbGljZSgwLGkpfSxiYXNlbmFtZTpmdW5jdGlvbihlLG4pe2lmKHZvaWQgMCE9PW4mJiJzdHJpbmciIT10eXBlb2Ygbil0aHJvdyBuZXcgVHlwZUVycm9yKCciZXh0IiBhcmd1bWVudCBtdXN0IGJlIGEgc3RyaW5nJyk7dChlKTt2YXIgcixpPTAsYT0tMSxvPSEwO2lmKHZvaWQgMCE9PW4mJm4ubGVuZ3RoPjAmJm4ubGVuZ3RoPD1lLmxlbmd0aCl7aWYobi5sZW5ndGg9PT1lLmxlbmd0aCYmbj09PWUpcmV0dXJuIiI7dmFyIHM9bi5sZW5ndGgtMSxsPS0xO2ZvcihyPWUubGVuZ3RoLTE7cj49MDstLXIpe3ZhciBjPWUuY2hhckNvZGVBdChyKTtpZig0Nz09PWMpe2lmKCFvKXtpPXIrMTticmVha319ZWxzZS0xPT09bCYmKG89ITEsbD1yKzEpLHM+PTAmJihjPT09bi5jaGFyQ29kZUF0KHMpPy0xPT0tLXMmJihhPXIpOihzPS0xLGE9bCkpfXJldHVybiBpPT09YT9hPWw6LTE9PT1hJiYoYT1lLmxlbmd0aCksZS5zbGljZShpLGEpfWZvcihyPWUubGVuZ3RoLTE7cj49MDstLXIpaWYoNDc9PT1lLmNoYXJDb2RlQXQocikpe2lmKCFvKXtpPXIrMTticmVha319ZWxzZS0xPT09YSYmKG89ITEsYT1yKzEpO3JldHVybi0xPT09YT8iIjplLnNsaWNlKGksYSl9LGV4dG5hbWU6ZnVuY3Rpb24oZSl7dChlKTtmb3IodmFyIG49LTEscj0wLGk9LTEsYT0hMCxvPTAscz1lLmxlbmd0aC0xO3M+PTA7LS1zKXt2YXIgbD1lLmNoYXJDb2RlQXQocyk7aWYoNDchPT1sKS0xPT09aSYmKGE9ITEsaT1zKzEpLDQ2PT09bD8tMT09PW4/bj1zOjEhPT1vJiYobz0xKTotMSE9PW4mJihvPS0xKTtlbHNlIGlmKCFhKXtyPXMrMTticmVha319cmV0dXJuLTE9PT1ufHwtMT09PWl8fDA9PT1vfHwxPT09byYmbj09PWktMSYmbj09PXIrMT8iIjplLnNsaWNlKG4saSl9LGZvcm1hdDpmdW5jdGlvbihlKXtpZihudWxsPT09ZXx8Im9iamVjdCIhPXR5cGVvZiBlKXRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSAicGF0aE9iamVjdCIgYXJndW1lbnQgbXVzdCBiZSBvZiB0eXBlIE9iamVjdC4gUmVjZWl2ZWQgdHlwZSAnK3R5cGVvZiBlKTtyZXR1cm4gbj0odD1lKS5kaXJ8fHQucm9vdCxyPXQuYmFzZXx8KHQubmFtZXx8IiIpKyh0LmV4dHx8IiIpLG4/bj09PXQucm9vdD9uK3I6bisiLyIrcjpyO3ZhciB0LG4scn0scGFyc2U6ZnVuY3Rpb24oZSl7dChlKTt2YXIgbj17cm9vdDoiIixkaXI6IiIsYmFzZToiIixleHQ6IiIsbmFtZToiIn07aWYoMD09PWUubGVuZ3RoKXJldHVybiBuO3ZhciByLGk9ZS5jaGFyQ29kZUF0KDApLGE9NDc9PT1pO2E/KG4ucm9vdD0iLyIscj0xKTpyPTA7Zm9yKHZhciBvPS0xLHM9MCxsPS0xLGM9ITAsaD1lLmxlbmd0aC0xLGQ9MDtoPj1yOy0taClpZig0NyE9PShpPWUuY2hhckNvZGVBdChoKSkpLTE9PT1sJiYoYz0hMSxsPWgrMSksNDY9PT1pPy0xPT09bz9vPWg6MSE9PWQmJihkPTEpOi0xIT09byYmKGQ9LTEpO2Vsc2UgaWYoIWMpe3M9aCsxO2JyZWFrfXJldHVybi0xPT09b3x8LTE9PT1sfHwwPT09ZHx8MT09PWQmJm89PT1sLTEmJm89PT1zKzE/LTEhPT1sJiYobi5iYXNlPW4ubmFtZT0wPT09cyYmYT9lLnNsaWNlKDEsbCk6ZS5zbGljZShzLGwpKTooMD09PXMmJmE/KG4ubmFtZT1lLnNsaWNlKDEsbyksbi5iYXNlPWUuc2xpY2UoMSxsKSk6KG4ubmFtZT1lLnNsaWNlKHMsbyksbi5iYXNlPWUuc2xpY2UocyxsKSksbi5leHQ9ZS5zbGljZShvLGwpKSxzPjA/bi5kaXI9ZS5zbGljZSgwLHMtMSk6YSYmKG4uZGlyPSIvIiksbn0sc2VwOiIvIixkZWxpbWl0ZXI6IjoiLHdpbjMyOm51bGwscG9zaXg6bnVsbH07ci5wb3NpeD1yLGUuZXhwb3J0cz1yfSw0NDc6KGUsdCxuKT0+e3ZhciByO2lmKG4ucih0KSxuLmQodCx7VVJJOigpPT5mLFV0aWxzOigpPT54fSksIm9iamVjdCI9PXR5cGVvZiBwcm9jZXNzKXI9IndpbjMyIj09PXByb2Nlc3MucGxhdGZvcm07ZWxzZSBpZigib2JqZWN0Ij09dHlwZW9mIG5hdmlnYXRvcil7dmFyIGk9bmF2aWdhdG9yLnVzZXJBZ2VudDtyPWkuaW5kZXhPZigiV2luZG93cyIpPj0wfXZhciBhLG8scz0oYT1mdW5jdGlvbihlLHQpe3JldHVybihhPU9iamVjdC5zZXRQcm90b3R5cGVPZnx8e19fcHJvdG9fXzpbXX1pbnN0YW5jZW9mIEFycmF5JiZmdW5jdGlvbihlLHQpe2UuX19wcm90b19fPXR9fHxmdW5jdGlvbihlLHQpe2Zvcih2YXIgbiBpbiB0KU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LG4pJiYoZVtuXT10W25dKX0pKGUsdCl9LGZ1bmN0aW9uKGUsdCl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQmJm51bGwhPT10KXRocm93IG5ldyBUeXBlRXJyb3IoIkNsYXNzIGV4dGVuZHMgdmFsdWUgIitTdHJpbmcodCkrIiBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBudWxsIik7ZnVuY3Rpb24gbigpe3RoaXMuY29uc3RydWN0b3I9ZX1hKGUsdCksZS5wcm90b3R5cGU9bnVsbD09PXQ/T2JqZWN0LmNyZWF0ZSh0KToobi5wcm90b3R5cGU9dC5wcm90b3R5cGUsbmV3IG4pfSksbD0vXlx3W1x3XGQrLi1dKiQvLGM9L15cLy8saD0vXlwvXC8vO2Z1bmN0aW9uIGQoZSx0KXtpZighZS5zY2hlbWUmJnQpdGhyb3cgbmV3IEVycm9yKCdbVXJpRXJyb3JdOiBTY2hlbWUgaXMgbWlzc2luZzoge3NjaGVtZTogIiIsIGF1dGhvcml0eTogIicuY29uY2F0KGUuYXV0aG9yaXR5LCciLCBwYXRoOiAiJykuY29uY2F0KGUucGF0aCwnIiwgcXVlcnk6ICInKS5jb25jYXQoZS5xdWVyeSwnIiwgZnJhZ21lbnQ6ICInKS5jb25jYXQoZS5mcmFnbWVudCwnIn0nKSk7aWYoZS5zY2hlbWUmJiFsLnRlc3QoZS5zY2hlbWUpKXRocm93IG5ldyBFcnJvcigiW1VyaUVycm9yXTogU2NoZW1lIGNvbnRhaW5zIGlsbGVnYWwgY2hhcmFjdGVycy4iKTtpZihlLnBhdGgpaWYoZS5hdXRob3JpdHkpe2lmKCFjLnRlc3QoZS5wYXRoKSl0aHJvdyBuZXcgRXJyb3IoJ1tVcmlFcnJvcl06IElmIGEgVVJJIGNvbnRhaW5zIGFuIGF1dGhvcml0eSBjb21wb25lbnQsIHRoZW4gdGhlIHBhdGggY29tcG9uZW50IG11c3QgZWl0aGVyIGJlIGVtcHR5IG9yIGJlZ2luIHdpdGggYSBzbGFzaCAoIi8iKSBjaGFyYWN0ZXInKX1lbHNlIGlmKGgudGVzdChlLnBhdGgpKXRocm93IG5ldyBFcnJvcignW1VyaUVycm9yXTogSWYgYSBVUkkgZG9lcyBub3QgY29udGFpbiBhbiBhdXRob3JpdHkgY29tcG9uZW50LCB0aGVuIHRoZSBwYXRoIGNhbm5vdCBiZWdpbiB3aXRoIHR3byBzbGFzaCBjaGFyYWN0ZXJzICgiLy8iKScpfXZhciB1PSIiLHA9Ii8iLG09L14oKFteOi8/I10rPyk6KT8oXC9cLyhbXi8/I10qKSk/KFtePyNdKikoXD8oW14jXSopKT8oIyguKikpPy8sZj1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSx0LG4scixpLGEpe3ZhciBvLHM7dm9pZCAwPT09YSYmKGE9ITEpLCJvYmplY3QiPT10eXBlb2YgZT8odGhpcy5zY2hlbWU9ZS5zY2hlbWV8fHUsdGhpcy5hdXRob3JpdHk9ZS5hdXRob3JpdHl8fHUsdGhpcy5wYXRoPWUucGF0aHx8dSx0aGlzLnF1ZXJ5PWUucXVlcnl8fHUsdGhpcy5mcmFnbWVudD1lLmZyYWdtZW50fHx1KToodGhpcy5zY2hlbWU9KHM9YSwobz1lKXx8cz9vOiJmaWxlIiksdGhpcy5hdXRob3JpdHk9dHx8dSx0aGlzLnBhdGg9ZnVuY3Rpb24oZSx0KXtzd2l0Y2goZSl7Y2FzZSJodHRwcyI6Y2FzZSJodHRwIjpjYXNlImZpbGUiOnQ/dFswXSE9PXAmJih0PXArdCk6dD1wfXJldHVybiB0fSh0aGlzLnNjaGVtZSxufHx1KSx0aGlzLnF1ZXJ5PXJ8fHUsdGhpcy5mcmFnbWVudD1pfHx1LGQodGhpcyxhKSl9cmV0dXJuIGUuaXNVcmk9ZnVuY3Rpb24odCl7cmV0dXJuIHQgaW5zdGFuY2VvZiBlfHwhIXQmJiJzdHJpbmciPT10eXBlb2YgdC5hdXRob3JpdHkmJiJzdHJpbmciPT10eXBlb2YgdC5mcmFnbWVudCYmInN0cmluZyI9PXR5cGVvZiB0LnBhdGgmJiJzdHJpbmciPT10eXBlb2YgdC5xdWVyeSYmInN0cmluZyI9PXR5cGVvZiB0LnNjaGVtZSYmInN0cmluZyI9PXR5cGVvZiB0LmZzUGF0aCYmImZ1bmN0aW9uIj09dHlwZW9mIHQud2l0aCYmImZ1bmN0aW9uIj09dHlwZW9mIHQudG9TdHJpbmd9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwiZnNQYXRoIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHkodGhpcywhMSl9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksZS5wcm90b3R5cGUud2l0aD1mdW5jdGlvbihlKXtpZighZSlyZXR1cm4gdGhpczt2YXIgdD1lLnNjaGVtZSxuPWUuYXV0aG9yaXR5LHI9ZS5wYXRoLGk9ZS5xdWVyeSxhPWUuZnJhZ21lbnQ7cmV0dXJuIHZvaWQgMD09PXQ/dD10aGlzLnNjaGVtZTpudWxsPT09dCYmKHQ9dSksdm9pZCAwPT09bj9uPXRoaXMuYXV0aG9yaXR5Om51bGw9PT1uJiYobj11KSx2b2lkIDA9PT1yP3I9dGhpcy5wYXRoOm51bGw9PT1yJiYocj11KSx2b2lkIDA9PT1pP2k9dGhpcy5xdWVyeTpudWxsPT09aSYmKGk9dSksdm9pZCAwPT09YT9hPXRoaXMuZnJhZ21lbnQ6bnVsbD09PWEmJihhPXUpLHQ9PT10aGlzLnNjaGVtZSYmbj09PXRoaXMuYXV0aG9yaXR5JiZyPT09dGhpcy5wYXRoJiZpPT09dGhpcy5xdWVyeSYmYT09PXRoaXMuZnJhZ21lbnQ/dGhpczpuZXcgYih0LG4scixpLGEpfSxlLnBhcnNlPWZ1bmN0aW9uKGUsdCl7dm9pZCAwPT09dCYmKHQ9ITEpO3ZhciBuPW0uZXhlYyhlKTtyZXR1cm4gbj9uZXcgYihuWzJdfHx1LEMobls0XXx8dSksQyhuWzVdfHx1KSxDKG5bN118fHUpLEMobls5XXx8dSksdCk6bmV3IGIodSx1LHUsdSx1KX0sZS5maWxlPWZ1bmN0aW9uKGUpe3ZhciB0PXU7aWYociYmKGU9ZS5yZXBsYWNlKC9cXC9nLHApKSxlWzBdPT09cCYmZVsxXT09PXApe3ZhciBuPWUuaW5kZXhPZihwLDIpOy0xPT09bj8odD1lLnN1YnN0cmluZygyKSxlPXApOih0PWUuc3Vic3RyaW5nKDIsbiksZT1lLnN1YnN0cmluZyhuKXx8cCl9cmV0dXJuIG5ldyBiKCJmaWxlIix0LGUsdSx1KX0sZS5mcm9tPWZ1bmN0aW9uKGUpe3ZhciB0PW5ldyBiKGUuc2NoZW1lLGUuYXV0aG9yaXR5LGUucGF0aCxlLnF1ZXJ5LGUuZnJhZ21lbnQpO3JldHVybiBkKHQsITApLHR9LGUucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKGUpe3JldHVybiB2b2lkIDA9PT1lJiYoZT0hMSksVCh0aGlzLGUpfSxlLnByb3RvdHlwZS50b0pTT049ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30sZS5yZXZpdmU9ZnVuY3Rpb24odCl7aWYodCl7aWYodCBpbnN0YW5jZW9mIGUpcmV0dXJuIHQ7dmFyIG49bmV3IGIodCk7cmV0dXJuIG4uX2Zvcm1hdHRlZD10LmV4dGVybmFsLG4uX2ZzUGF0aD10Ll9zZXA9PT1nP3QuZnNQYXRoOm51bGwsbn1yZXR1cm4gdH0sZX0oKSxnPXI/MTp2b2lkIDAsYj1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KCl7dmFyIHQ9bnVsbCE9PWUmJmUuYXBwbHkodGhpcyxhcmd1bWVudHMpfHx0aGlzO3JldHVybiB0Ll9mb3JtYXR0ZWQ9bnVsbCx0Ll9mc1BhdGg9bnVsbCx0fXJldHVybiBzKHQsZSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJmc1BhdGgiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZnNQYXRofHwodGhpcy5fZnNQYXRoPXkodGhpcywhMSkpLHRoaXMuX2ZzUGF0aH0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSx0LnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbihlKXtyZXR1cm4gdm9pZCAwPT09ZSYmKGU9ITEpLGU/VCh0aGlzLCEwKToodGhpcy5fZm9ybWF0dGVkfHwodGhpcy5fZm9ybWF0dGVkPVQodGhpcywhMSkpLHRoaXMuX2Zvcm1hdHRlZCl9LHQucHJvdG90eXBlLnRvSlNPTj1mdW5jdGlvbigpe3ZhciBlPXskbWlkOjF9O3JldHVybiB0aGlzLl9mc1BhdGgmJihlLmZzUGF0aD10aGlzLl9mc1BhdGgsZS5fc2VwPWcpLHRoaXMuX2Zvcm1hdHRlZCYmKGUuZXh0ZXJuYWw9dGhpcy5fZm9ybWF0dGVkKSx0aGlzLnBhdGgmJihlLnBhdGg9dGhpcy5wYXRoKSx0aGlzLnNjaGVtZSYmKGUuc2NoZW1lPXRoaXMuc2NoZW1lKSx0aGlzLmF1dGhvcml0eSYmKGUuYXV0aG9yaXR5PXRoaXMuYXV0aG9yaXR5KSx0aGlzLnF1ZXJ5JiYoZS5xdWVyeT10aGlzLnF1ZXJ5KSx0aGlzLmZyYWdtZW50JiYoZS5mcmFnbWVudD10aGlzLmZyYWdtZW50KSxlfSx0fShmKSx3PSgobz17fSlbNThdPSIlM0EiLG9bNDddPSIlMkYiLG9bNjNdPSIlM0YiLG9bMzVdPSIlMjMiLG9bOTFdPSIlNUIiLG9bOTNdPSIlNUQiLG9bNjRdPSIlNDAiLG9bMzNdPSIlMjEiLG9bMzZdPSIlMjQiLG9bMzhdPSIlMjYiLG9bMzldPSIlMjciLG9bNDBdPSIlMjgiLG9bNDFdPSIlMjkiLG9bNDJdPSIlMkEiLG9bNDNdPSIlMkIiLG9bNDRdPSIlMkMiLG9bNTldPSIlM0IiLG9bNjFdPSIlM0QiLG9bMzJdPSIlMjAiLG8pO2Z1bmN0aW9uIF8oZSx0KXtmb3IodmFyIG49dm9pZCAwLHI9LTEsaT0wO2k8ZS5sZW5ndGg7aSsrKXt2YXIgYT1lLmNoYXJDb2RlQXQoaSk7aWYoYT49OTcmJmE8PTEyMnx8YT49NjUmJmE8PTkwfHxhPj00OCYmYTw9NTd8fDQ1PT09YXx8NDY9PT1hfHw5NT09PWF8fDEyNj09PWF8fHQmJjQ3PT09YSktMSE9PXImJihuKz1lbmNvZGVVUklDb21wb25lbnQoZS5zdWJzdHJpbmcocixpKSkscj0tMSksdm9pZCAwIT09biYmKG4rPWUuY2hhckF0KGkpKTtlbHNle3ZvaWQgMD09PW4mJihuPWUuc3Vic3RyKDAsaSkpO3ZhciBvPXdbYV07dm9pZCAwIT09bz8oLTEhPT1yJiYobis9ZW5jb2RlVVJJQ29tcG9uZW50KGUuc3Vic3RyaW5nKHIsaSkpLHI9LTEpLG4rPW8pOi0xPT09ciYmKHI9aSl9fXJldHVybi0xIT09ciYmKG4rPWVuY29kZVVSSUNvbXBvbmVudChlLnN1YnN0cmluZyhyKSkpLHZvaWQgMCE9PW4/bjplfWZ1bmN0aW9uIHYoZSl7Zm9yKHZhciB0PXZvaWQgMCxuPTA7bjxlLmxlbmd0aDtuKyspe3ZhciByPWUuY2hhckNvZGVBdChuKTszNT09PXJ8fDYzPT09cj8odm9pZCAwPT09dCYmKHQ9ZS5zdWJzdHIoMCxuKSksdCs9d1tyXSk6dm9pZCAwIT09dCYmKHQrPWVbbl0pfXJldHVybiB2b2lkIDAhPT10P3Q6ZX1mdW5jdGlvbiB5KGUsdCl7dmFyIG47cmV0dXJuIG49ZS5hdXRob3JpdHkmJmUucGF0aC5sZW5ndGg+MSYmImZpbGUiPT09ZS5zY2hlbWU/Ii8vIi5jb25jYXQoZS5hdXRob3JpdHkpLmNvbmNhdChlLnBhdGgpOjQ3PT09ZS5wYXRoLmNoYXJDb2RlQXQoMCkmJihlLnBhdGguY2hhckNvZGVBdCgxKT49NjUmJmUucGF0aC5jaGFyQ29kZUF0KDEpPD05MHx8ZS5wYXRoLmNoYXJDb2RlQXQoMSk+PTk3JiZlLnBhdGguY2hhckNvZGVBdCgxKTw9MTIyKSYmNTg9PT1lLnBhdGguY2hhckNvZGVBdCgyKT90P2UucGF0aC5zdWJzdHIoMSk6ZS5wYXRoWzFdLnRvTG93ZXJDYXNlKCkrZS5wYXRoLnN1YnN0cigyKTplLnBhdGgsciYmKG49bi5yZXBsYWNlKC9cLy9nLCJcXCIpKSxufWZ1bmN0aW9uIFQoZSx0KXt2YXIgbj10P3Y6XyxyPSIiLGk9ZS5zY2hlbWUsYT1lLmF1dGhvcml0eSxvPWUucGF0aCxzPWUucXVlcnksbD1lLmZyYWdtZW50O2lmKGkmJihyKz1pLHIrPSI6IiksKGF8fCJmaWxlIj09PWkpJiYocis9cCxyKz1wKSxhKXt2YXIgYz1hLmluZGV4T2YoIkAiKTtpZigtMSE9PWMpe3ZhciBoPWEuc3Vic3RyKDAsYyk7YT1hLnN1YnN0cihjKzEpLC0xPT09KGM9aC5pbmRleE9mKCI6IikpP3IrPW4oaCwhMSk6KHIrPW4oaC5zdWJzdHIoMCxjKSwhMSkscis9IjoiLHIrPW4oaC5zdWJzdHIoYysxKSwhMSkpLHIrPSJAIn0tMT09PShjPShhPWEudG9Mb3dlckNhc2UoKSkuaW5kZXhPZigiOiIpKT9yKz1uKGEsITEpOihyKz1uKGEuc3Vic3RyKDAsYyksITEpLHIrPWEuc3Vic3RyKGMpKX1pZihvKXtpZihvLmxlbmd0aD49MyYmNDc9PT1vLmNoYXJDb2RlQXQoMCkmJjU4PT09by5jaGFyQ29kZUF0KDIpKShkPW8uY2hhckNvZGVBdCgxKSk+PTY1JiZkPD05MCYmKG89Ii8iLmNvbmNhdChTdHJpbmcuZnJvbUNoYXJDb2RlKGQrMzIpLCI6IikuY29uY2F0KG8uc3Vic3RyKDMpKSk7ZWxzZSBpZihvLmxlbmd0aD49MiYmNTg9PT1vLmNoYXJDb2RlQXQoMSkpe3ZhciBkOyhkPW8uY2hhckNvZGVBdCgwKSk+PTY1JiZkPD05MCYmKG89IiIuY29uY2F0KFN0cmluZy5mcm9tQ2hhckNvZGUoZCszMiksIjoiKS5jb25jYXQoby5zdWJzdHIoMikpKX1yKz1uKG8sITApfXJldHVybiBzJiYocis9Ij8iLHIrPW4ocywhMSkpLGwmJihyKz0iIyIscis9dD9sOl8obCwhMSkpLHJ9ZnVuY3Rpb24gayhlKXt0cnl7cmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudChlKX1jYXRjaCh0KXtyZXR1cm4gZS5sZW5ndGg+Mz9lLnN1YnN0cigwLDMpK2soZS5zdWJzdHIoMykpOmV9fXZhciBTPS8oJVswLTlBLVphLXpdWzAtOUEtWmEtel0pKy9nO2Z1bmN0aW9uIEMoZSl7cmV0dXJuIGUubWF0Y2goUyk/ZS5yZXBsYWNlKFMsKGZ1bmN0aW9uKGUpe3JldHVybiBrKGUpfSkpOmV9dmFyIHgsTCxFPW4oNDcwKSxBPWZ1bmN0aW9uKGUsdCxuKXtpZihufHwyPT09YXJndW1lbnRzLmxlbmd0aClmb3IodmFyIHIsaT0wLGE9dC5sZW5ndGg7aTxhO2krKykhciYmaSBpbiB0fHwocnx8KHI9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwodCwwLGkpKSxyW2ldPXRbaV0pO3JldHVybiBlLmNvbmNhdChyfHxBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCh0KSl9LE09RS5wb3NpeHx8RTsoTD14fHwoeD17fSkpLmpvaW5QYXRoPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD1bXSxuPTE7bjxhcmd1bWVudHMubGVuZ3RoO24rKyl0W24tMV09YXJndW1lbnRzW25dO3JldHVybiBlLndpdGgoe3BhdGg6TS5qb2luLmFwcGx5KE0sQShbZS5wYXRoXSx0LCExKSl9KX0sTC5yZXNvbHZlUGF0aD1mdW5jdGlvbihlKXtmb3IodmFyIHQ9W10sbj0xO248YXJndW1lbnRzLmxlbmd0aDtuKyspdFtuLTFdPWFyZ3VtZW50c1tuXTt2YXIgcj1lLnBhdGh8fCIvIjtyZXR1cm4gZS53aXRoKHtwYXRoOk0ucmVzb2x2ZS5hcHBseShNLEEoW3JdLHQsITEpKX0pfSxMLmRpcm5hbWU9ZnVuY3Rpb24oZSl7dmFyIHQ9TS5kaXJuYW1lKGUucGF0aCk7cmV0dXJuIDE9PT10Lmxlbmd0aCYmNDY9PT10LmNoYXJDb2RlQXQoMCk/ZTplLndpdGgoe3BhdGg6dH0pfSxMLmJhc2VuYW1lPWZ1bmN0aW9uKGUpe3JldHVybiBNLmJhc2VuYW1lKGUucGF0aCl9LEwuZXh0bmFtZT1mdW5jdGlvbihlKXtyZXR1cm4gTS5leHRuYW1lKGUucGF0aCl9fX0sdD17fTtmdW5jdGlvbiBuKHIpe2lmKHRbcl0pcmV0dXJuIHRbcl0uZXhwb3J0czt2YXIgaT10W3JdPXtleHBvcnRzOnt9fTtyZXR1cm4gZVtyXShpLGkuZXhwb3J0cyxuKSxpLmV4cG9ydHN9cmV0dXJuIG4uZD0oZSx0KT0+e2Zvcih2YXIgciBpbiB0KW4ubyh0LHIpJiYhbi5vKGUscikmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIse2VudW1lcmFibGU6ITAsZ2V0OnRbcl19KX0sbi5vPShlLHQpPT5PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSx0KSxuLnI9ZT0+eyJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZTeW1ib2wudG9TdHJpbmdUYWcmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLFN5bWJvbC50b1N0cmluZ1RhZyx7dmFsdWU6Ik1vZHVsZSJ9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSl9LG4oNDQ3KX0pKCk7dmFye1VSSTplcyxVdGlsczp0c309am87ZnVuY3Rpb24gbnMoZSl7dmFyIHQ9ZVswXTtyZXR1cm4gdCE9PWVbZS5sZW5ndGgtMV18fCInIiE9PXQmJiciJyE9PXR8fChlPWUuc3Vic3RyKDEsZS5sZW5ndGgtMikpLGV9ZnVuY3Rpb24gcnMoZSx0LG4scixpLGEpe3ZhciBvPW5zKG4pO2lmKHM9byxsPWUubGFuZ3VhZ2VJZCxzLmxlbmd0aCYmKCJoYW5kbGViYXJzIiE9PWx8fCEve3t8fX0vLnRlc3QocykpJiYvXGIod1tcd1xkKy4tXSo6XC9cLyk/W15ccygpPD5dKyg/OlwoW1x3XGRdK1wpfChbXls6cHVuY3Q6XVxzXXxcLz8pKS8udGVzdChzKSl7dmFyIHMsbDtvLmxlbmd0aDxuLmxlbmd0aCYmKHIrKyxpLS0pO3ZhciBjPWZ1bmN0aW9uKGUsdCxuLHIpe2lmKCEvXlxzKmphdmFzY3JpcHRcOi9pLnRlc3QodCkmJiEvW1xuXHJdLy50ZXN0KHQpKXJldHVybiB0PXQucmVwbGFjZSgvXlxzKi9nLCIiKSwvXmh0dHBzPzpcL1wvL2kudGVzdCh0KXx8L15maWxlOlwvXC8vaS50ZXN0KHQpP3Q6L15cIy9pLnRlc3QodCk/ZSt0Oi9eXC9cLy9pLnRlc3QodCk/KG1vKGUsImh0dHBzOi8vIik/Imh0dHBzIjoiaHR0cCIpKyI6Iit0LnJlcGxhY2UoL15ccyovZywiIik6bj9uLnJlc29sdmVSZWZlcmVuY2UodCxyfHxlKTp0fShlLnVyaSxvLHQsYSk7aWYoYyYmZnVuY3Rpb24oZSl7dHJ5e3JldHVybiBlcy5wYXJzZShlKSwhMH1jYXRjaChlKXtyZXR1cm4hMX19KGMpKXJldHVybntyYW5nZTpXci5jcmVhdGUoZS5wb3NpdGlvbkF0KHIpLGUucG9zaXRpb25BdChpKSksdGFyZ2V0OmN9fX1mdW5jdGlvbiBpcyhlLHQpe2Zvcih2YXIgbj1bXSxyPW9vKGUuZ2V0VGV4dCgpLDApLGk9ci5zY2FuKCksYT12b2lkIDAsbz0hMSxzPXZvaWQgMCxsPXt9O2khPT1OYS5FT1M7KXtzd2l0Y2goaSl7Y2FzZSBOYS5TdGFydFRhZzppZighcylvPSJiYXNlIj09PXIuZ2V0VG9rZW5UZXh0KCkudG9Mb3dlckNhc2UoKTticmVhaztjYXNlIE5hLkF0dHJpYnV0ZU5hbWU6YT1yLmdldFRva2VuVGV4dCgpLnRvTG93ZXJDYXNlKCk7YnJlYWs7Y2FzZSBOYS5BdHRyaWJ1dGVWYWx1ZTppZigic3JjIj09PWF8fCJocmVmIj09PWEpe3ZhciBjPXIuZ2V0VG9rZW5UZXh0KCk7aWYoIW8pKHU9cnMoZSx0LGMsci5nZXRUb2tlbk9mZnNldCgpLHIuZ2V0VG9rZW5FbmQoKSxzKSkmJm4ucHVzaCh1KTtvJiZ2b2lkIDA9PT1zJiYocz1ucyhjKSkmJnQmJihzPXQucmVzb2x2ZVJlZmVyZW5jZShzLGUudXJpKSksbz0hMSxhPXZvaWQgMH1lbHNlIGlmKCJpZCI9PT1hKXtsW25zKHIuZ2V0VG9rZW5UZXh0KCkpXT1yLmdldFRva2VuT2Zmc2V0KCl9fWk9ci5zY2FuKCl9Zm9yKHZhciBoPTAsZD1uO2g8ZC5sZW5ndGg7aCsrKXt2YXIgdT1kW2hdLHA9ZS51cmkrIiMiO2lmKHUudGFyZ2V0JiZtbyh1LnRhcmdldCxwKSl7dmFyIG09bFt1LnRhcmdldC5zdWJzdHIocC5sZW5ndGgpXTtpZih2b2lkIDAhPT1tKXt2YXIgZj1lLnBvc2l0aW9uQXQobSk7dS50YXJnZXQ9IiIrcCsoZi5saW5lKzEpKyIsIisoZi5jaGFyYWN0ZXIrMSl9fX1yZXR1cm4gbn1mdW5jdGlvbiBhcyhlLHQsbil7dmFyIHI9ZS5vZmZzZXRBdCh0KSxpPW4uZmluZE5vZGVBdChyKTtpZighaS50YWcpcmV0dXJuW107dmFyIGE9W10sbz1scyhOYS5TdGFydFRhZyxlLGkuc3RhcnQpLHM9Im51bWJlciI9PXR5cGVvZiBpLmVuZFRhZ1N0YXJ0JiZscyhOYS5FbmRUYWcsZSxpLmVuZFRhZ1N0YXJ0KTtyZXR1cm4obyYmc3Mobyx0KXx8cyYmc3Mocyx0KSkmJihvJiZhLnB1c2goe2tpbmQ6ZWEuUmVhZCxyYW5nZTpvfSkscyYmYS5wdXNoKHtraW5kOmVhLlJlYWQscmFuZ2U6c30pKSxhfWZ1bmN0aW9uIG9zKGUsdCl7cmV0dXJuIGUubGluZTx0LmxpbmV8fGUubGluZT09PXQubGluZSYmZS5jaGFyYWN0ZXI8PXQuY2hhcmFjdGVyfWZ1bmN0aW9uIHNzKGUsdCl7cmV0dXJuIG9zKGUuc3RhcnQsdCkmJm9zKHQsZS5lbmQpfWZ1bmN0aW9uIGxzKGUsdCxuKXtmb3IodmFyIHI9b28odC5nZXRUZXh0KCksbiksaT1yLnNjYW4oKTtpIT09TmEuRU9TJiZpIT09ZTspaT1yLnNjYW4oKTtyZXR1cm4gaSE9PU5hLkVPUz97c3RhcnQ6dC5wb3NpdGlvbkF0KHIuZ2V0VG9rZW5PZmZzZXQoKSksZW5kOnQucG9zaXRpb25BdChyLmdldFRva2VuRW5kKCkpfTpudWxsfWZ1bmN0aW9uIGNzKGUsdCl7dmFyIG49W107cmV0dXJuIHQucm9vdHMuZm9yRWFjaCgoZnVuY3Rpb24odCl7aHMoZSx0LCIiLG4pfSkpLG59ZnVuY3Rpb24gaHMoZSx0LG4scil7dmFyIGk9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS50YWc7aWYoZS5hdHRyaWJ1dGVzKXt2YXIgbj1lLmF0dHJpYnV0ZXMuaWQscj1lLmF0dHJpYnV0ZXMuY2xhc3M7biYmKHQrPSIjIituLnJlcGxhY2UoL1tcIlwnXS9nLCIiKSksciYmKHQrPXIucmVwbGFjZSgvW1wiXCddL2csIiIpLnNwbGl0KC9ccysvKS5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiIuIitlfSkpLmpvaW4oIiIpKX1yZXR1cm4gdHx8Ij8ifSh0KSxhPVByLmNyZWF0ZShlLnVyaSxXci5jcmVhdGUoZS5wb3NpdGlvbkF0KHQuc3RhcnQpLGUucG9zaXRpb25BdCh0LmVuZCkpKSxvPXtuYW1lOmksbG9jYXRpb246YSxjb250YWluZXJOYW1lOm4sa2luZDpyYS5GaWVsZH07ci5wdXNoKG8pLHQuY2hpbGRyZW4uZm9yRWFjaCgoZnVuY3Rpb24odCl7aHMoZSx0LGkscil9KSl9ZnVuY3Rpb24gZHMoZSx0LG4scil7dmFyIGksYT1lLm9mZnNldEF0KHQpLG89ci5maW5kTm9kZUF0KGEpO2lmKCFvLnRhZylyZXR1cm4gbnVsbDtpZighZnVuY3Rpb24oZSx0LG4pe2lmKGUuZW5kVGFnU3RhcnQmJmUuZW5kVGFnU3RhcnQrIjwvIi5sZW5ndGg8PXQmJnQ8PWUuZW5kVGFnU3RhcnQrIjwvIi5sZW5ndGgrbi5sZW5ndGgpcmV0dXJuITA7cmV0dXJuIGUuc3RhcnQrIjwiLmxlbmd0aDw9dCYmdDw9ZS5zdGFydCsiPCIubGVuZ3RoK24ubGVuZ3RofShvLGEsby50YWcpKXJldHVybiBudWxsO3ZhciBzPVtdLGw9e3N0YXJ0OmUucG9zaXRpb25BdChvLnN0YXJ0KyI8Ii5sZW5ndGgpLGVuZDplLnBvc2l0aW9uQXQoby5zdGFydCsiPCIubGVuZ3RoK28udGFnLmxlbmd0aCl9O2lmKHMucHVzaCh7cmFuZ2U6bCxuZXdUZXh0Om59KSxvLmVuZFRhZ1N0YXJ0KXt2YXIgYz17c3RhcnQ6ZS5wb3NpdGlvbkF0KG8uZW5kVGFnU3RhcnQrIjwvIi5sZW5ndGgpLGVuZDplLnBvc2l0aW9uQXQoby5lbmRUYWdTdGFydCsiPC8iLmxlbmd0aCtvLnRhZy5sZW5ndGgpfTtzLnB1c2goe3JhbmdlOmMsbmV3VGV4dDpufSl9cmV0dXJue2NoYW5nZXM6KChpPXt9KVtlLnVyaS50b1N0cmluZygpXT1zLGkpfX1mdW5jdGlvbiB1cyhlLHQsbil7dmFyIHI9ZS5vZmZzZXRBdCh0KSxpPW4uZmluZE5vZGVBdChyKTtpZighaS50YWcpcmV0dXJuIG51bGw7aWYoIWkuZW5kVGFnU3RhcnQpcmV0dXJuIG51bGw7aWYoaS5zdGFydCsiPCIubGVuZ3RoPD1yJiZyPD1pLnN0YXJ0KyI8Ii5sZW5ndGgraS50YWcubGVuZ3RoKXt2YXIgYT1yLSI8Ii5sZW5ndGgtaS5zdGFydCtpLmVuZFRhZ1N0YXJ0KyI8LyIubGVuZ3RoO3JldHVybiBlLnBvc2l0aW9uQXQoYSl9aWYoaS5lbmRUYWdTdGFydCsiPC8iLmxlbmd0aDw9ciYmcjw9aS5lbmRUYWdTdGFydCsiPC8iLmxlbmd0aCtpLnRhZy5sZW5ndGgpe2E9ci0iPC8iLmxlbmd0aC1pLmVuZFRhZ1N0YXJ0K2kuc3RhcnQrIjwiLmxlbmd0aDtyZXR1cm4gZS5wb3NpdGlvbkF0KGEpfXJldHVybiBudWxsfWZ1bmN0aW9uIHBzKGUsdCxuKXt2YXIgcj1lLm9mZnNldEF0KHQpLGk9bi5maW5kTm9kZUF0KHIpLGE9aS50YWc/aS50YWcubGVuZ3RoOjA7cmV0dXJuIGkuZW5kVGFnU3RhcnQmJihpLnN0YXJ0KyI8Ii5sZW5ndGg8PXImJnI8PWkuc3RhcnQrIjwiLmxlbmd0aCthfHxpLmVuZFRhZ1N0YXJ0KyI8LyIubGVuZ3RoPD1yJiZyPD1pLmVuZFRhZ1N0YXJ0KyI8LyIubGVuZ3RoK2EpP1tXci5jcmVhdGUoZS5wb3NpdGlvbkF0KGkuc3RhcnQrIjwiLmxlbmd0aCksZS5wb3NpdGlvbkF0KGkuc3RhcnQrIjwiLmxlbmd0aCthKSksV3IuY3JlYXRlKGUucG9zaXRpb25BdChpLmVuZFRhZ1N0YXJ0KyI8LyIubGVuZ3RoKSxlLnBvc2l0aW9uQXQoaS5lbmRUYWdTdGFydCsiPC8iLmxlbmd0aCthKSldOm51bGx9ZnVuY3Rpb24gbXMoZSx0KXt2YXIgbj1vbyhlLmdldFRleHQoKSkscj1uLnNjYW4oKSxpPVtdLGE9W10sbz1udWxsLHM9LTE7ZnVuY3Rpb24gbChlKXtpLnB1c2goZSkscz1lLnN0YXJ0TGluZX1mb3IoO3IhPT1OYS5FT1M7KXtzd2l0Y2gocil7Y2FzZSBOYS5TdGFydFRhZzp2YXIgYz1uLmdldFRva2VuVGV4dCgpLGg9ZS5wb3NpdGlvbkF0KG4uZ2V0VG9rZW5PZmZzZXQoKSkubGluZTthLnB1c2goe3N0YXJ0TGluZTpoLHRhZ05hbWU6Y30pLG89YzticmVhaztjYXNlIE5hLkVuZFRhZzpvPW4uZ2V0VG9rZW5UZXh0KCk7YnJlYWs7Y2FzZSBOYS5TdGFydFRhZ0Nsb3NlOmlmKCFvfHwhY28obykpYnJlYWs7Y2FzZSBOYS5FbmRUYWdDbG9zZTpjYXNlIE5hLlN0YXJ0VGFnU2VsZkNsb3NlOmZvcih2YXIgZD1hLmxlbmd0aC0xO2Q+PTAmJmFbZF0udGFnTmFtZSE9PW87KWQtLTtpZihkPj0wKXt2YXIgdT1hW2RdO2EubGVuZ3RoPWQsKG09ZS5wb3NpdGlvbkF0KG4uZ2V0VG9rZW5PZmZzZXQoKSkubGluZS0xKT4oaD11LnN0YXJ0TGluZSkmJnMhPT1oJiZsKHtzdGFydExpbmU6aCxlbmRMaW5lOm19KX1icmVhaztjYXNlIE5hLkNvbW1lbnQ6aD1lLnBvc2l0aW9uQXQobi5nZXRUb2tlbk9mZnNldCgpKS5saW5lO3ZhciBwPW4uZ2V0VG9rZW5UZXh0KCkubWF0Y2goL15ccyojKHJlZ2lvblxiKXwoZW5kcmVnaW9uXGIpLyk7aWYocClpZihwWzFdKWEucHVzaCh7c3RhcnRMaW5lOmgsdGFnTmFtZToiIn0pO2Vsc2V7Zm9yKGQ9YS5sZW5ndGgtMTtkPj0wJiZhW2RdLnRhZ05hbWUubGVuZ3RoOylkLS07aWYoZD49MCl7dmFyIG07dT1hW2RdO2EubGVuZ3RoPWQsKG09aCk+KGg9dS5zdGFydExpbmUpJiZzIT09aCYmbCh7c3RhcnRMaW5lOmgsZW5kTGluZTptLGtpbmQ6WHIuUmVnaW9ufSl9fWVsc2UgaDwobT1lLnBvc2l0aW9uQXQobi5nZXRUb2tlbk9mZnNldCgpK24uZ2V0VG9rZW5MZW5ndGgoKSkubGluZSkmJmwoe3N0YXJ0TGluZTpoLGVuZExpbmU6bSxraW5kOlhyLkNvbW1lbnR9KX1yPW4uc2NhbigpfXZhciBmPXQmJnQucmFuZ2VMaW1pdHx8TnVtYmVyLk1BWF9WQUxVRTtyZXR1cm4gaS5sZW5ndGg+Zj9mdW5jdGlvbihlLHQpe2U9ZS5zb3J0KChmdW5jdGlvbihlLHQpe3ZhciBuPWUuc3RhcnRMaW5lLXQuc3RhcnRMaW5lO3JldHVybiAwPT09biYmKG49ZS5lbmRMaW5lLXQuZW5kTGluZSksbn0pKTtmb3IodmFyIG49dm9pZCAwLHI9W10saT1bXSxhPVtdLG89ZnVuY3Rpb24oZSx0KXtpW2VdPXQsdDwzMCYmKGFbdF09KGFbdF18fDApKzEpfSxzPTA7czxlLmxlbmd0aDtzKyspe3ZhciBsPWVbc107aWYobil7aWYobC5zdGFydExpbmU+bi5zdGFydExpbmUpaWYobC5lbmRMaW5lPD1uLmVuZExpbmUpci5wdXNoKG4pLG49bCxvKHMsci5sZW5ndGgpO2Vsc2UgaWYobC5zdGFydExpbmU+bi5lbmRMaW5lKXtkb3tuPXIucG9wKCl9d2hpbGUobiYmbC5zdGFydExpbmU+bi5lbmRMaW5lKTtuJiZyLnB1c2gobiksbj1sLG8ocyxyLmxlbmd0aCl9fWVsc2Ugbj1sLG8ocywwKX12YXIgYz0wLGg9MDtmb3Iocz0wO3M8YS5sZW5ndGg7cysrKXt2YXIgZD1hW3NdO2lmKGQpe2lmKGQrYz50KXtoPXM7YnJlYWt9Yys9ZH19dmFyIHU9W107Zm9yKHM9MDtzPGUubGVuZ3RoO3MrKyl7dmFyIHA9aVtzXTsibnVtYmVyIj09dHlwZW9mIHAmJihwPGh8fHA9PT1oJiZjKys8dCkmJnUucHVzaChlW3NdKX1yZXR1cm4gdX0oaSxmKTppfWZ1bmN0aW9uIGZzKGUsdCl7cmV0dXJuIHQubWFwKChmdW5jdGlvbih0KXtmb3IodmFyIG49ZnVuY3Rpb24oZSx0KXt2YXIgbj11byhlLmdldFRleHQoKSkscj1lLm9mZnNldEF0KHQpLGk9bi5maW5kTm9kZUF0KHIpLGE9ZnVuY3Rpb24oZSl7dmFyIHQ9ZSxuPWZ1bmN0aW9uKGUpe3JldHVybiBlLnN0YXJ0VGFnRW5kJiZlLmVuZFRhZ1N0YXJ0JiZlLnN0YXJ0VGFnRW5kPGUuZW5kVGFnU3RhcnQ/W1tlLnN0YXJ0VGFnRW5kLGUuZW5kVGFnU3RhcnRdLFtlLnN0YXJ0LGUuZW5kXV06W1tlLnN0YXJ0LGUuZW5kXV19LHI9W107Zm9yKDt0LnBhcmVudDspbih0PXQucGFyZW50KS5mb3JFYWNoKChmdW5jdGlvbihlKXtyZXR1cm4gci5wdXNoKGUpfSkpO3JldHVybiByfShpKTtpZihpLnN0YXJ0VGFnRW5kJiYhaS5lbmRUYWdTdGFydCl7aWYoaS5zdGFydFRhZ0VuZCE9PWkuZW5kKXJldHVybltbaS5zdGFydCxpLmVuZF1dO3ZhciBvPVdyLmNyZWF0ZShlLnBvc2l0aW9uQXQoaS5zdGFydFRhZ0VuZC0yKSxlLnBvc2l0aW9uQXQoaS5zdGFydFRhZ0VuZCkpO3JldHVybiIvPiI9PT1lLmdldFRleHQobyk/YS51bnNoaWZ0KFtpLnN0YXJ0KzEsaS5zdGFydFRhZ0VuZC0yXSk6YS51bnNoaWZ0KFtpLnN0YXJ0KzEsaS5zdGFydFRhZ0VuZC0xXSksYT1ncyhlLGkscikuY29uY2F0KGEpfWlmKCFpLnN0YXJ0VGFnRW5kfHwhaS5lbmRUYWdTdGFydClyZXR1cm4gYTtyZXR1cm4gYS51bnNoaWZ0KFtpLnN0YXJ0LGkuZW5kXSksaS5zdGFydDxyJiZyPGkuc3RhcnRUYWdFbmQ/KGEudW5zaGlmdChbaS5zdGFydCsxLGkuc3RhcnRUYWdFbmQtMV0pLGE9Z3MoZSxpLHIpLmNvbmNhdChhKSk6aS5zdGFydFRhZ0VuZDw9ciYmcjw9aS5lbmRUYWdTdGFydD8oYS51bnNoaWZ0KFtpLnN0YXJ0VGFnRW5kLGkuZW5kVGFnU3RhcnRdKSxhKToocj49aS5lbmRUYWdTdGFydCsyJiZhLnVuc2hpZnQoW2kuZW5kVGFnU3RhcnQrMixpLmVuZC0xXSksYSl9KGUsdCkscj12b2lkIDAsaT12b2lkIDAsYT1uLmxlbmd0aC0xO2E+PTA7YS0tKXt2YXIgbz1uW2FdO3ImJm9bMF09PT1yWzBdJiZvWzFdPT09clsxXXx8KGk9eWEuY3JlYXRlKFdyLmNyZWF0ZShlLnBvc2l0aW9uQXQoblthXVswXSksZS5wb3NpdGlvbkF0KG5bYV1bMV0pKSxpKSkscj1vfXJldHVybiBpfHwoaT15YS5jcmVhdGUoV3IuY3JlYXRlKHQsdCkpKSxpfSkpfWZ1bmN0aW9uIGdzKGUsdCxuKXtmb3IodmFyIHI9V3IuY3JlYXRlKGUucG9zaXRpb25BdCh0LnN0YXJ0KSxlLnBvc2l0aW9uQXQodC5lbmQpKSxpPWUuZ2V0VGV4dChyKSxhPW4tdC5zdGFydCxvPW9vKGkpLHM9by5zY2FuKCksbD10LnN0YXJ0LGM9W10saD0hMSxkPS0xO3MhPT1OYS5FT1M7KXtzd2l0Y2gocyl7Y2FzZSBOYS5BdHRyaWJ1dGVOYW1lOmlmKGE8by5nZXRUb2tlbk9mZnNldCgpKXtoPSExO2JyZWFrfWE8PW8uZ2V0VG9rZW5FbmQoKSYmYy51bnNoaWZ0KFtvLmdldFRva2VuT2Zmc2V0KCksby5nZXRUb2tlbkVuZCgpXSksaD0hMCxkPW8uZ2V0VG9rZW5PZmZzZXQoKTticmVhaztjYXNlIE5hLkF0dHJpYnV0ZVZhbHVlOmlmKCFoKWJyZWFrO3ZhciB1PW8uZ2V0VG9rZW5UZXh0KCk7aWYoYTxvLmdldFRva2VuT2Zmc2V0KCkpe2MucHVzaChbZCxvLmdldFRva2VuRW5kKCldKTticmVha31hPj1vLmdldFRva2VuT2Zmc2V0KCkmJmE8PW8uZ2V0VG9rZW5FbmQoKSYmKGMudW5zaGlmdChbby5nZXRUb2tlbk9mZnNldCgpLG8uZ2V0VG9rZW5FbmQoKV0pLCgnIic9PT11WzBdJiYnIic9PT11W3UubGVuZ3RoLTFdfHwiJyI9PT11WzBdJiYiJyI9PT11W3UubGVuZ3RoLTFdKSYmYT49by5nZXRUb2tlbk9mZnNldCgpKzEmJmE8PW8uZ2V0VG9rZW5FbmQoKS0xJiZjLnVuc2hpZnQoW28uZ2V0VG9rZW5PZmZzZXQoKSsxLG8uZ2V0VG9rZW5FbmQoKS0xXSksYy5wdXNoKFtkLG8uZ2V0VG9rZW5FbmQoKV0pKX1zPW8uc2NhbigpfXJldHVybiBjLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuW2VbMF0rbCxlWzFdK2xdfSkpfXZhciBicz17dmVyc2lvbjoxLjEsdGFnczpbe25hbWU6Imh0bWwiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBodG1sIGVsZW1lbnQgcmVwcmVzZW50cyB0aGUgcm9vdCBvZiBhbiBIVE1MIGRvY3VtZW50LiJ9LGF0dHJpYnV0ZXM6W3tuYW1lOiJtYW5pZmVzdCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiU3BlY2lmaWVzIHRoZSBVUkkgb2YgYSByZXNvdXJjZSBtYW5pZmVzdCBpbmRpY2F0aW5nIHJlc291cmNlcyB0aGF0IHNob3VsZCBiZSBjYWNoZWQgbG9jYWxseS4gU2VlIFtVc2luZyB0aGUgYXBwbGljYXRpb24gY2FjaGVdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvVXNpbmdfdGhlX2FwcGxpY2F0aW9uX2NhY2hlKSBmb3IgZGV0YWlscy4ifX0se25hbWU6InZlcnNpb24iLGRlc2NyaXB0aW9uOidTcGVjaWZpZXMgdGhlIHZlcnNpb24gb2YgdGhlIEhUTUwgW0RvY3VtZW50IFR5cGUgRGVmaW5pdGlvbl0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9HbG9zc2FyeS9EVEQgIkRvY3VtZW50IFR5cGUgRGVmaW5pdGlvbjogSW4gSFRNTCwgdGhlIGRvY3R5cGUgaXMgdGhlIHJlcXVpcmVkICI8IURPQ1RZUEUgaHRtbD4iIHByZWFtYmxlIGZvdW5kIGF0IHRoZSB0b3Agb2YgYWxsIGRvY3VtZW50cy4gSXRzIHNvbGUgcHVycG9zZSBpcyB0byBwcmV2ZW50IGEgYnJvd3NlciBmcm9tIHN3aXRjaGluZyBpbnRvIHNvLWNhbGxlZCDigJxxdWlya3MgbW9kZeKAnSB3aGVuIHJlbmRlcmluZyBhIGRvY3VtZW50OyB0aGF0IGlzLCB0aGUgIjwhRE9DVFlQRSBodG1sPiIgZG9jdHlwZSBlbnN1cmVzIHRoYXQgdGhlIGJyb3dzZXIgbWFrZXMgYSBiZXN0LWVmZm9ydCBhdHRlbXB0IGF0IGZvbGxvd2luZyB0aGUgcmVsZXZhbnQgc3BlY2lmaWNhdGlvbnMsIHJhdGhlciB0aGFuIHVzaW5nIGEgZGlmZmVyZW50IHJlbmRlcmluZyBtb2RlIHRoYXQgaXMgaW5jb21wYXRpYmxlIHdpdGggc29tZSBzcGVjaWZpY2F0aW9ucy4iKSB0aGF0IGdvdmVybnMgdGhlIGN1cnJlbnQgZG9jdW1lbnQuIFRoaXMgYXR0cmlidXRlIGlzIG5vdCBuZWVkZWQsIGJlY2F1c2UgaXQgaXMgcmVkdW5kYW50IHdpdGggdGhlIHZlcnNpb24gaW5mb3JtYXRpb24gaW4gdGhlIGRvY3VtZW50IHR5cGUgZGVjbGFyYXRpb24uJ30se25hbWU6InhtbG5zIixkZXNjcmlwdGlvbjonU3BlY2lmaWVzIHRoZSBYTUwgTmFtZXNwYWNlIG9mIHRoZSBkb2N1bWVudC4gRGVmYXVsdCB2YWx1ZSBpcyBgImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiYC4gVGhpcyBpcyByZXF1aXJlZCBpbiBkb2N1bWVudHMgcGFyc2VkIHdpdGggWE1MIHBhcnNlcnMsIGFuZCBvcHRpb25hbCBpbiB0ZXh0L2h0bWwgZG9jdW1lbnRzLid9XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvaHRtbCJ9XX0se25hbWU6ImhlYWQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBoZWFkIGVsZW1lbnQgcmVwcmVzZW50cyBhIGNvbGxlY3Rpb24gb2YgbWV0YWRhdGEgZm9yIHRoZSBEb2N1bWVudC4ifSxhdHRyaWJ1dGVzOlt7bmFtZToicHJvZmlsZSIsZGVzY3JpcHRpb246IlRoZSBVUklzIG9mIG9uZSBvciBtb3JlIG1ldGFkYXRhIHByb2ZpbGVzLCBzZXBhcmF0ZWQgYnkgd2hpdGUgc3BhY2UuIn1dLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9oZWFkIn1dfSx7bmFtZToidGl0bGUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSB0aXRsZSBlbGVtZW50IHJlcHJlc2VudHMgdGhlIGRvY3VtZW50J3MgdGl0bGUgb3IgbmFtZS4gQXV0aG9ycyBzaG91bGQgdXNlIHRpdGxlcyB0aGF0IGlkZW50aWZ5IHRoZWlyIGRvY3VtZW50cyBldmVuIHdoZW4gdGhleSBhcmUgdXNlZCBvdXQgb2YgY29udGV4dCwgZm9yIGV4YW1wbGUgaW4gYSB1c2VyJ3MgaGlzdG9yeSBvciBib29rbWFya3MsIG9yIGluIHNlYXJjaCByZXN1bHRzLiBUaGUgZG9jdW1lbnQncyB0aXRsZSBpcyBvZnRlbiBkaWZmZXJlbnQgZnJvbSBpdHMgZmlyc3QgaGVhZGluZywgc2luY2UgdGhlIGZpcnN0IGhlYWRpbmcgZG9lcyBub3QgaGF2ZSB0byBzdGFuZCBhbG9uZSB3aGVuIHRha2VuIG91dCBvZiBjb250ZXh0LiJ9LGF0dHJpYnV0ZXM6W10scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3RpdGxlIn1dfSx7bmFtZToiYmFzZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGJhc2UgZWxlbWVudCBhbGxvd3MgYXV0aG9ycyB0byBzcGVjaWZ5IHRoZSBkb2N1bWVudCBiYXNlIFVSTCBmb3IgdGhlIHB1cnBvc2VzIG9mIHJlc29sdmluZyByZWxhdGl2ZSBVUkxzLCBhbmQgdGhlIG5hbWUgb2YgdGhlIGRlZmF1bHQgYnJvd3NpbmcgY29udGV4dCBmb3IgdGhlIHB1cnBvc2VzIG9mIGZvbGxvd2luZyBoeXBlcmxpbmtzLiBUaGUgZWxlbWVudCBkb2VzIG5vdCByZXByZXNlbnQgYW55IGNvbnRlbnQgYmV5b25kIHRoaXMgaW5mb3JtYXRpb24uIn0sYXR0cmlidXRlczpbe25hbWU6ImhyZWYiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBiYXNlIFVSTCB0byBiZSB1c2VkIHRocm91Z2hvdXQgdGhlIGRvY3VtZW50IGZvciByZWxhdGl2ZSBVUkwgYWRkcmVzc2VzLiBJZiB0aGlzIGF0dHJpYnV0ZSBpcyBzcGVjaWZpZWQsIHRoaXMgZWxlbWVudCBtdXN0IGNvbWUgYmVmb3JlIGFueSBvdGhlciBlbGVtZW50cyB3aXRoIGF0dHJpYnV0ZXMgd2hvc2UgdmFsdWVzIGFyZSBVUkxzLiBBYnNvbHV0ZSBhbmQgcmVsYXRpdmUgVVJMcyBhcmUgYWxsb3dlZC4ifX0se25hbWU6InRhcmdldCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiQSBuYW1lIG9yIGtleXdvcmQgaW5kaWNhdGluZyB0aGUgZGVmYXVsdCBsb2NhdGlvbiB0byBkaXNwbGF5IHRoZSByZXN1bHQgd2hlbiBoeXBlcmxpbmtzIG9yIGZvcm1zIGNhdXNlIG5hdmlnYXRpb24sIGZvciBlbGVtZW50cyB0aGF0IGRvIG5vdCBoYXZlIGFuIGV4cGxpY2l0IHRhcmdldCByZWZlcmVuY2UuIEl0IGlzIGEgbmFtZSBvZiwgb3Iga2V5d29yZCBmb3IsIGEgX2Jyb3dzaW5nIGNvbnRleHRfIChmb3IgZXhhbXBsZTogdGFiLCB3aW5kb3csIG9yIGlubGluZSBmcmFtZSkuIFRoZSBmb2xsb3dpbmcga2V5d29yZHMgaGF2ZSBzcGVjaWFsIG1lYW5pbmdzOlxuXG4qICAgYF9zZWxmYDogTG9hZCB0aGUgcmVzdWx0IGludG8gdGhlIHNhbWUgYnJvd3NpbmcgY29udGV4dCBhcyB0aGUgY3VycmVudCBvbmUuIFRoaXMgdmFsdWUgaXMgdGhlIGRlZmF1bHQgaWYgdGhlIGF0dHJpYnV0ZSBpcyBub3Qgc3BlY2lmaWVkLlxuKiAgIGBfYmxhbmtgOiBMb2FkIHRoZSByZXN1bHQgaW50byBhIG5ldyB1bm5hbWVkIGJyb3dzaW5nIGNvbnRleHQuXG4qICAgYF9wYXJlbnRgOiBMb2FkIHRoZSByZXN1bHQgaW50byB0aGUgcGFyZW50IGJyb3dzaW5nIGNvbnRleHQgb2YgdGhlIGN1cnJlbnQgb25lLiBJZiB0aGVyZSBpcyBubyBwYXJlbnQsIHRoaXMgb3B0aW9uIGJlaGF2ZXMgdGhlIHNhbWUgd2F5IGFzIGBfc2VsZmAuXG4qICAgYF90b3BgOiBMb2FkIHRoZSByZXN1bHQgaW50byB0aGUgdG9wLWxldmVsIGJyb3dzaW5nIGNvbnRleHQgKHRoYXQgaXMsIHRoZSBicm93c2luZyBjb250ZXh0IHRoYXQgaXMgYW4gYW5jZXN0b3Igb2YgdGhlIGN1cnJlbnQgb25lLCBhbmQgaGFzIG5vIHBhcmVudCkuIElmIHRoZXJlIGlzIG5vIHBhcmVudCwgdGhpcyBvcHRpb24gYmVoYXZlcyB0aGUgc2FtZSB3YXkgYXMgYF9zZWxmYC5cblxuSWYgdGhpcyBhdHRyaWJ1dGUgaXMgc3BlY2lmaWVkLCB0aGlzIGVsZW1lbnQgbXVzdCBjb21lIGJlZm9yZSBhbnkgb3RoZXIgZWxlbWVudHMgd2l0aCBhdHRyaWJ1dGVzIHdob3NlIHZhbHVlcyBhcmUgVVJMcy4ifX1dLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9iYXNlIn1dfSx7bmFtZToibGluayIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGxpbmsgZWxlbWVudCBhbGxvd3MgYXV0aG9ycyB0byBsaW5rIHRoZWlyIGRvY3VtZW50IHRvIG90aGVyIHJlc291cmNlcy4ifSxhdHRyaWJ1dGVzOlt7bmFtZToiaHJlZiIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTonVGhpcyBhdHRyaWJ1dGUgc3BlY2lmaWVzIHRoZSBbVVJMXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0dsb3NzYXJ5L1VSTCAiVVJMOiBVbmlmb3JtIFJlc291cmNlIExvY2F0b3IgKFVSTCkgaXMgYSB0ZXh0IHN0cmluZyBzcGVjaWZ5aW5nIHdoZXJlIGEgcmVzb3VyY2UgY2FuIGJlIGZvdW5kIG9uIHRoZSBJbnRlcm5ldC4iKSBvZiB0aGUgbGlua2VkIHJlc291cmNlLiBBIFVSTCBjYW4gYmUgYWJzb2x1dGUgb3IgcmVsYXRpdmUuJ319LHtuYW1lOiJjcm9zc29yaWdpbiIsdmFsdWVTZXQ6InhvIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOidUaGlzIGVudW1lcmF0ZWQgYXR0cmlidXRlIGluZGljYXRlcyB3aGV0aGVyIFtDT1JTXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0dsb3NzYXJ5L0NPUlMgIkNPUlM6IENPUlMgKENyb3NzLU9yaWdpbiBSZXNvdXJjZSBTaGFyaW5nKSBpcyBhIHN5c3RlbSwgY29uc2lzdGluZyBvZiB0cmFuc21pdHRpbmcgSFRUUCBoZWFkZXJzLCB0aGF0IGRldGVybWluZXMgd2hldGhlciBicm93c2VycyBibG9jayBmcm9udGVuZCBKYXZhU2NyaXB0IGNvZGUgZnJvbSBhY2Nlc3NpbmcgcmVzcG9uc2VzIGZvciBjcm9zcy1vcmlnaW4gcmVxdWVzdHMuIikgbXVzdCBiZSB1c2VkIHdoZW4gZmV0Y2hpbmcgdGhlIHJlc291cmNlLiBbQ09SUy1lbmFibGVkIGltYWdlc10oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9DT1JTX0VuYWJsZWRfSW1hZ2UpIGNhbiBiZSByZXVzZWQgaW4gdGhlIFtgPGNhbnZhcz5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvY2FudmFzICJVc2UgdGhlIEhUTUwgPGNhbnZhcz4gZWxlbWVudCB3aXRoIGVpdGhlciB0aGUgY2FudmFzIHNjcmlwdGluZyBBUEkgb3IgdGhlIFdlYkdMIEFQSSB0byBkcmF3IGdyYXBoaWNzIGFuZCBhbmltYXRpb25zLiIpIGVsZW1lbnQgd2l0aG91dCBiZWluZyBfdGFpbnRlZF8uIFRoZSBhbGxvd2VkIHZhbHVlcyBhcmU6XG5cbmBhbm9ueW1vdXNgXG5cbkEgY3Jvc3Mtb3JpZ2luIHJlcXVlc3QgKGkuZS4gd2l0aCBhbiBbYE9yaWdpbmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUVFAvSGVhZGVycy9PcmlnaW4gIlRoZSBPcmlnaW4gcmVxdWVzdCBoZWFkZXIgaW5kaWNhdGVzIHdoZXJlIGEgZmV0Y2ggb3JpZ2luYXRlcyBmcm9tLiBJdCBkb2VzblwndCBpbmNsdWRlIGFueSBwYXRoIGluZm9ybWF0aW9uLCBidXQgb25seSB0aGUgc2VydmVyIG5hbWUuIEl0IGlzIHNlbnQgd2l0aCBDT1JTIHJlcXVlc3RzLCBhcyB3ZWxsIGFzIHdpdGggUE9TVCByZXF1ZXN0cy4gSXQgaXMgc2ltaWxhciB0byB0aGUgUmVmZXJlciBoZWFkZXIsIGJ1dCwgdW5saWtlIHRoaXMgaGVhZGVyLCBpdCBkb2VzblwndCBkaXNjbG9zZSB0aGUgd2hvbGUgcGF0aC4iKSBIVFRQIGhlYWRlcikgaXMgcGVyZm9ybWVkLCBidXQgbm8gY3JlZGVudGlhbCBpcyBzZW50IChpLmUuIG5vIGNvb2tpZSwgWC41MDkgY2VydGlmaWNhdGUsIG9yIEhUVFAgQmFzaWMgYXV0aGVudGljYXRpb24pLiBJZiB0aGUgc2VydmVyIGRvZXMgbm90IGdpdmUgY3JlZGVudGlhbHMgdG8gdGhlIG9yaWdpbiBzaXRlIChieSBub3Qgc2V0dGluZyB0aGUgW2BBY2Nlc3MtQ29udHJvbC1BbGxvdy1PcmlnaW5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVFRQL0hlYWRlcnMvQWNjZXNzLUNvbnRyb2wtQWxsb3ctT3JpZ2luICJUaGUgQWNjZXNzLUNvbnRyb2wtQWxsb3ctT3JpZ2luIHJlc3BvbnNlIGhlYWRlciBpbmRpY2F0ZXMgd2hldGhlciB0aGUgcmVzcG9uc2UgY2FuIGJlIHNoYXJlZCB3aXRoIHJlcXVlc3RpbmcgY29kZSBmcm9tIHRoZSBnaXZlbiBvcmlnaW4uIikgSFRUUCBoZWFkZXIpIHRoZSBpbWFnZSB3aWxsIGJlIHRhaW50ZWQgYW5kIGl0cyB1c2FnZSByZXN0cmljdGVkLlxuXG5gdXNlLWNyZWRlbnRpYWxzYFxuXG5BIGNyb3NzLW9yaWdpbiByZXF1ZXN0IChpLmUuIHdpdGggYW4gYE9yaWdpbmAgSFRUUCBoZWFkZXIpIGlzIHBlcmZvcm1lZCBhbG9uZyB3aXRoIGEgY3JlZGVudGlhbCBzZW50IChpLmUuIGEgY29va2llLCBjZXJ0aWZpY2F0ZSwgYW5kL29yIEhUVFAgQmFzaWMgYXV0aGVudGljYXRpb24gaXMgcGVyZm9ybWVkKS4gSWYgdGhlIHNlcnZlciBkb2VzIG5vdCBnaXZlIGNyZWRlbnRpYWxzIHRvIHRoZSBvcmlnaW4gc2l0ZSAodGhyb3VnaCBbYEFjY2Vzcy1Db250cm9sLUFsbG93LUNyZWRlbnRpYWxzYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRUUC9IZWFkZXJzL0FjY2Vzcy1Db250cm9sLUFsbG93LUNyZWRlbnRpYWxzICJUaGUgQWNjZXNzLUNvbnRyb2wtQWxsb3ctQ3JlZGVudGlhbHMgcmVzcG9uc2UgaGVhZGVyIHRlbGxzIGJyb3dzZXJzIHdoZXRoZXIgdG8gZXhwb3NlIHRoZSByZXNwb25zZSB0byBmcm9udGVuZCBKYXZhU2NyaXB0IGNvZGUgd2hlbiB0aGUgcmVxdWVzdFwncyBjcmVkZW50aWFscyBtb2RlIChSZXF1ZXN0LmNyZWRlbnRpYWxzKSBpcyAiaW5jbHVkZSIuIikgSFRUUCBoZWFkZXIpLCB0aGUgcmVzb3VyY2Ugd2lsbCBiZSBfdGFpbnRlZF8gYW5kIGl0cyB1c2FnZSByZXN0cmljdGVkLlxuXG5JZiB0aGUgYXR0cmlidXRlIGlzIG5vdCBwcmVzZW50LCB0aGUgcmVzb3VyY2UgaXMgZmV0Y2hlZCB3aXRob3V0IGEgW0NPUlNdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvR2xvc3NhcnkvQ09SUyAiQ09SUzogQ09SUyAoQ3Jvc3MtT3JpZ2luIFJlc291cmNlIFNoYXJpbmcpIGlzIGEgc3lzdGVtLCBjb25zaXN0aW5nIG9mIHRyYW5zbWl0dGluZyBIVFRQIGhlYWRlcnMsIHRoYXQgZGV0ZXJtaW5lcyB3aGV0aGVyIGJyb3dzZXJzIGJsb2NrIGZyb250ZW5kIEphdmFTY3JpcHQgY29kZSBmcm9tIGFjY2Vzc2luZyByZXNwb25zZXMgZm9yIGNyb3NzLW9yaWdpbiByZXF1ZXN0cy4iKSByZXF1ZXN0IChpLmUuIHdpdGhvdXQgc2VuZGluZyB0aGUgYE9yaWdpbmAgSFRUUCBoZWFkZXIpLCBwcmV2ZW50aW5nIGl0cyBub24tdGFpbnRlZCB1c2FnZS4gSWYgaW52YWxpZCwgaXQgaXMgaGFuZGxlZCBhcyBpZiB0aGUgZW51bWVyYXRlZCBrZXl3b3JkICoqYW5vbnltb3VzKiogd2FzIHVzZWQuIFNlZSBbQ09SUyBzZXR0aW5ncyBhdHRyaWJ1dGVzXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0NPUlNfc2V0dGluZ3NfYXR0cmlidXRlcykgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24uJ319LHtuYW1lOiJyZWwiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoaXMgYXR0cmlidXRlIG5hbWVzIGEgcmVsYXRpb25zaGlwIG9mIHRoZSBsaW5rZWQgZG9jdW1lbnQgdG8gdGhlIGN1cnJlbnQgZG9jdW1lbnQuIFRoZSBhdHRyaWJ1dGUgbXVzdCBiZSBhIHNwYWNlLXNlcGFyYXRlZCBsaXN0IG9mIHRoZSBbbGluayB0eXBlcyB2YWx1ZXNdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvTGlua190eXBlcykuIn19LHtuYW1lOiJtZWRpYSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhpcyBhdHRyaWJ1dGUgc3BlY2lmaWVzIHRoZSBtZWRpYSB0aGF0IHRoZSBsaW5rZWQgcmVzb3VyY2UgYXBwbGllcyB0by4gSXRzIHZhbHVlIG11c3QgYmUgYSBtZWRpYSB0eXBlIC8gW21lZGlhIHF1ZXJ5XShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvTWVkaWFfcXVlcmllcykuIFRoaXMgYXR0cmlidXRlIGlzIG1haW5seSB1c2VmdWwgd2hlbiBsaW5raW5nIHRvIGV4dGVybmFsIHN0eWxlc2hlZXRzIOKAlCBpdCBhbGxvd3MgdGhlIHVzZXIgYWdlbnQgdG8gcGljayB0aGUgYmVzdCBhZGFwdGVkIG9uZSBmb3IgdGhlIGRldmljZSBpdCBydW5zIG9uLlxuXG4qKk5vdGVzOioqXG5cbiogICBJbiBIVE1MIDQsIHRoaXMgY2FuIG9ubHkgYmUgYSBzaW1wbGUgd2hpdGUtc3BhY2Utc2VwYXJhdGVkIGxpc3Qgb2YgbWVkaWEgZGVzY3JpcHRpb24gbGl0ZXJhbHMsIGkuZS4sIFttZWRpYSB0eXBlcyBhbmQgZ3JvdXBzXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvQG1lZGlhKSwgd2hlcmUgZGVmaW5lZCBhbmQgYWxsb3dlZCBhcyB2YWx1ZXMgZm9yIHRoaXMgYXR0cmlidXRlLCBzdWNoIGFzIGBwcmludGAsIGBzY3JlZW5gLCBgYXVyYWxgLCBgYnJhaWxsZWAuIEhUTUw1IGV4dGVuZGVkIHRoaXMgdG8gYW55IGtpbmQgb2YgW21lZGlhIHF1ZXJpZXNdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9NZWRpYV9xdWVyaWVzKSwgd2hpY2ggYXJlIGEgc3VwZXJzZXQgb2YgdGhlIGFsbG93ZWQgdmFsdWVzIG9mIEhUTUwgNC5cbiogICBCcm93c2VycyBub3Qgc3VwcG9ydGluZyBbQ1NTMyBNZWRpYSBRdWVyaWVzXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvTWVkaWFfcXVlcmllcykgd29uJ3QgbmVjZXNzYXJpbHkgcmVjb2duaXplIHRoZSBhZGVxdWF0ZSBsaW5rOyBkbyBub3QgZm9yZ2V0IHRvIHNldCBmYWxsYmFjayBsaW5rcywgdGhlIHJlc3RyaWN0ZWQgc2V0IG9mIG1lZGlhIHF1ZXJpZXMgZGVmaW5lZCBpbiBIVE1MIDQuIn19LHtuYW1lOiJocmVmbGFuZyIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhpcyBhdHRyaWJ1dGUgaW5kaWNhdGVzIHRoZSBsYW5ndWFnZSBvZiB0aGUgbGlua2VkIHJlc291cmNlLiBJdCBpcyBwdXJlbHkgYWR2aXNvcnkuIEFsbG93ZWQgdmFsdWVzIGFyZSBkZXRlcm1pbmVkIGJ5IFtCQ1A0N10oaHR0cHM6Ly93d3cuaWV0Zi5vcmcvcmZjL2JjcC9iY3A0Ny50eHQpLiBVc2UgdGhpcyBhdHRyaWJ1dGUgb25seSBpZiB0aGUgW2BocmVmYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2EjYXR0ci1ocmVmKSBhdHRyaWJ1dGUgaXMgcHJlc2VudC4ifX0se25hbWU6InR5cGUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6J1RoaXMgYXR0cmlidXRlIGlzIHVzZWQgdG8gZGVmaW5lIHRoZSB0eXBlIG9mIHRoZSBjb250ZW50IGxpbmtlZCB0by4gVGhlIHZhbHVlIG9mIHRoZSBhdHRyaWJ1dGUgc2hvdWxkIGJlIGEgTUlNRSB0eXBlIHN1Y2ggYXMgKip0ZXh0L2h0bWwqKiwgKip0ZXh0L2NzcyoqLCBhbmQgc28gb24uIFRoZSBjb21tb24gdXNlIG9mIHRoaXMgYXR0cmlidXRlIGlzIHRvIGRlZmluZSB0aGUgdHlwZSBvZiBzdHlsZXNoZWV0IGJlaW5nIHJlZmVyZW5jZWQgKHN1Y2ggYXMgKip0ZXh0L2NzcyoqKSwgYnV0IGdpdmVuIHRoYXQgQ1NTIGlzIHRoZSBvbmx5IHN0eWxlc2hlZXQgbGFuZ3VhZ2UgdXNlZCBvbiB0aGUgd2ViLCBub3Qgb25seSBpcyBpdCBwb3NzaWJsZSB0byBvbWl0IHRoZSBgdHlwZWAgYXR0cmlidXRlLCBidXQgaXMgYWN0dWFsbHkgbm93IHJlY29tbWVuZGVkIHByYWN0aWNlLiBJdCBpcyBhbHNvIHVzZWQgb24gYHJlbD0icHJlbG9hZCJgIGxpbmsgdHlwZXMsIHRvIG1ha2Ugc3VyZSB0aGUgYnJvd3NlciBvbmx5IGRvd25sb2FkcyBmaWxlIHR5cGVzIHRoYXQgaXQgc3VwcG9ydHMuJ319LHtuYW1lOiJzaXplcyIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhpcyBhdHRyaWJ1dGUgZGVmaW5lcyB0aGUgc2l6ZXMgb2YgdGhlIGljb25zIGZvciB2aXN1YWwgbWVkaWEgY29udGFpbmVkIGluIHRoZSByZXNvdXJjZS4gSXQgbXVzdCBiZSBwcmVzZW50IG9ubHkgaWYgdGhlIFtgcmVsYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2xpbmsjYXR0ci1yZWwpIGNvbnRhaW5zIGEgdmFsdWUgb2YgYGljb25gIG9yIGEgbm9uLXN0YW5kYXJkIHR5cGUgc3VjaCBhcyBBcHBsZSdzIGBhcHBsZS10b3VjaC1pY29uYC4gSXQgbWF5IGhhdmUgdGhlIGZvbGxvd2luZyB2YWx1ZXM6XG5cbiogICBgYW55YCwgbWVhbmluZyB0aGF0IHRoZSBpY29uIGNhbiBiZSBzY2FsZWQgdG8gYW55IHNpemUgYXMgaXQgaXMgaW4gYSB2ZWN0b3IgZm9ybWF0LCBsaWtlIGBpbWFnZS9zdmcreG1sYC5cbiogICBhIHdoaXRlLXNwYWNlIHNlcGFyYXRlZCBsaXN0IG9mIHNpemVzLCBlYWNoIGluIHRoZSBmb3JtYXQgYF88d2lkdGggaW4gcGl4ZWxzPl94XzxoZWlnaHQgaW4gcGl4ZWxzPl9gIG9yIGBfPHdpZHRoIGluIHBpeGVscz5fWF88aGVpZ2h0IGluIHBpeGVscz5fYC4gRWFjaCBvZiB0aGVzZSBzaXplcyBtdXN0IGJlIGNvbnRhaW5lZCBpbiB0aGUgcmVzb3VyY2UuXG5cbioqTm90ZToqKiBNb3N0IGljb24gZm9ybWF0cyBhcmUgb25seSBhYmxlIHRvIHN0b3JlIG9uZSBzaW5nbGUgaWNvbjsgdGhlcmVmb3JlIG1vc3Qgb2YgdGhlIHRpbWUgdGhlIFtgc2l6ZXNgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0dsb2JhbF9hdHRyaWJ1dGVzI2F0dHItc2l6ZXMpIGNvbnRhaW5zIG9ubHkgb25lIGVudHJ5LiBNUydzIElDTyBmb3JtYXQgZG9lcywgYXMgd2VsbCBhcyBBcHBsZSdzIElDTlMuIElDTyBpcyBtb3JlIHViaXF1aXRvdXM7IHlvdSBzaG91bGQgZGVmaW5pdGVseSB1c2UgaXQuIn19LHtuYW1lOiJhcyIsZGVzY3JpcHRpb246J1RoaXMgYXR0cmlidXRlIGlzIG9ubHkgdXNlZCB3aGVuIGByZWw9InByZWxvYWQiYCBvciBgcmVsPSJwcmVmZXRjaCJgIGhhcyBiZWVuIHNldCBvbiB0aGUgYDxsaW5rPmAgZWxlbWVudC4gSXQgc3BlY2lmaWVzIHRoZSB0eXBlIG9mIGNvbnRlbnQgYmVpbmcgbG9hZGVkIGJ5IHRoZSBgPGxpbms+YCwgd2hpY2ggaXMgbmVjZXNzYXJ5IGZvciBjb250ZW50IHByaW9yaXRpemF0aW9uLCByZXF1ZXN0IG1hdGNoaW5nLCBhcHBsaWNhdGlvbiBvZiBjb3JyZWN0IFtjb250ZW50IHNlY3VyaXR5IHBvbGljeV0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRUUC9DU1ApLCBhbmQgc2V0dGluZyBvZiBjb3JyZWN0IFtgQWNjZXB0YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRUUC9IZWFkZXJzL0FjY2VwdCAiVGhlIEFjY2VwdCByZXF1ZXN0IEhUVFAgaGVhZGVyIGFkdmVydGlzZXMgd2hpY2ggY29udGVudCB0eXBlcywgZXhwcmVzc2VkIGFzIE1JTUUgdHlwZXMsIHRoZSBjbGllbnQgaXMgYWJsZSB0byB1bmRlcnN0YW5kLiBVc2luZyBjb250ZW50IG5lZ290aWF0aW9uLCB0aGUgc2VydmVyIHRoZW4gc2VsZWN0cyBvbmUgb2YgdGhlIHByb3Bvc2FscywgdXNlcyBpdCBhbmQgaW5mb3JtcyB0aGUgY2xpZW50IG9mIGl0cyBjaG9pY2Ugd2l0aCB0aGUgQ29udGVudC1UeXBlIHJlc3BvbnNlIGhlYWRlci4gQnJvd3NlcnMgc2V0IGFkZXF1YXRlIHZhbHVlcyBmb3IgdGhpcyBoZWFkZXIgZGVwZW5kaW5nIG9uwqB0aGUgY29udGV4dCB3aGVyZSB0aGUgcmVxdWVzdCBpcyBkb25lOiB3aGVuIGZldGNoaW5nIGEgQ1NTIHN0eWxlc2hlZXQgYSBkaWZmZXJlbnQgdmFsdWUgaXMgc2V0IGZvciB0aGUgcmVxdWVzdCB0aGFuIHdoZW4gZmV0Y2hpbmcgYW4gaW1hZ2UswqB2aWRlbyBvciBhIHNjcmlwdC4iKSByZXF1ZXN0IGhlYWRlci4nfSx7bmFtZToiaW1wb3J0YW5jZSIsZGVzY3JpcHRpb246IkluZGljYXRlcyB0aGUgcmVsYXRpdmUgaW1wb3J0YW5jZSBvZiB0aGUgcmVzb3VyY2UuIFByaW9yaXR5IGhpbnRzIGFyZSBkZWxlZ2F0ZWQgdXNpbmcgdGhlIHZhbHVlczoifSx7bmFtZToiaW1wb3J0YW5jZSIsZGVzY3JpcHRpb246JyoqYGF1dG9gKio6IEluZGljYXRlc8KgKipub8KgcHJlZmVyZW5jZSoqLiBUaGUgYnJvd3NlciBtYXkgdXNlIGl0cyBvd24gaGV1cmlzdGljcyB0byBkZWNpZGUgdGhlIHByaW9yaXR5IG9mIHRoZSByZXNvdXJjZS5cblxuKipgaGlnaGAqKjogSW5kaWNhdGVzIHRvIHRoZcKgYnJvd3NlcsKgdGhhdCB0aGUgcmVzb3VyY2UgaXMgb2bCoCoqaGlnaCoqIHByaW9yaXR5LlxuXG4qKmBsb3dgKio6wqBJbmRpY2F0ZXMgdG8gdGhlwqBicm93c2VywqB0aGF0IHRoZSByZXNvdXJjZSBpcyBvZsKgKipsb3cqKiBwcmlvcml0eS5cblxuKipOb3RlOioqIFRoZSBgaW1wb3J0YW5jZWAgYXR0cmlidXRlIG1heSBvbmx5IGJlIHVzZWQgZm9yIHRoZSBgPGxpbms+YCBlbGVtZW50IGlmIGByZWw9InByZWxvYWQiYCBvciBgcmVsPSJwcmVmZXRjaCJgIGlzIHByZXNlbnQuJ30se25hbWU6ImludGVncml0eSIsZGVzY3JpcHRpb246IkNvbnRhaW5zIGlubGluZSBtZXRhZGF0YSDigJQgYSBiYXNlNjQtZW5jb2RlZCBjcnlwdG9ncmFwaGljIGhhc2ggb2YgdGhlIHJlc291cmNlIChmaWxlKSB5b3XigJlyZSB0ZWxsaW5nIHRoZSBicm93c2VyIHRvIGZldGNoLiBUaGUgYnJvd3NlciBjYW4gdXNlIHRoaXMgdG8gdmVyaWZ5IHRoYXQgdGhlIGZldGNoZWQgcmVzb3VyY2UgaGFzIGJlZW4gZGVsaXZlcmVkIGZyZWUgb2YgdW5leHBlY3RlZCBtYW5pcHVsYXRpb24uIFNlZSBbU3VicmVzb3VyY2UgSW50ZWdyaXR5XShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9TZWN1cml0eS9TdWJyZXNvdXJjZV9JbnRlZ3JpdHkpLiJ9LHtuYW1lOiJyZWZlcnJlcnBvbGljeSIsZGVzY3JpcHRpb246J0Egc3RyaW5nIGluZGljYXRpbmcgd2hpY2ggcmVmZXJyZXIgdG8gdXNlIHdoZW4gZmV0Y2hpbmcgdGhlIHJlc291cmNlOlxuXG4qICAgYG5vLXJlZmVycmVyYCBtZWFucyB0aGF0IHRoZSBbYFJlZmVyZXJgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVFRQL0hlYWRlcnMvUmVmZXJlciAiVGhlIFJlZmVyZXIgcmVxdWVzdCBoZWFkZXIgY29udGFpbnMgdGhlIGFkZHJlc3Mgb2YgdGhlIHByZXZpb3VzIHdlYiBwYWdlIGZyb20gd2hpY2ggYSBsaW5rIHRvIHRoZSBjdXJyZW50bHkgcmVxdWVzdGVkIHBhZ2Ugd2FzIGZvbGxvd2VkLiBUaGUgUmVmZXJlciBoZWFkZXIgYWxsb3dzIHNlcnZlcnMgdG8gaWRlbnRpZnkgd2hlcmUgcGVvcGxlIGFyZSB2aXNpdGluZyB0aGVtIGZyb20gYW5kIG1heSB1c2UgdGhhdCBkYXRhIGZvciBhbmFseXRpY3MsIGxvZ2dpbmcsIG9yIG9wdGltaXplZCBjYWNoaW5nLCBmb3IgZXhhbXBsZS4iKSBoZWFkZXIgd2lsbCBub3QgYmUgc2VudC5cbiogICBgbm8tcmVmZXJyZXItd2hlbi1kb3duZ3JhZGVgIG1lYW5zIHRoYXQgbm8gW2BSZWZlcmVyYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRUUC9IZWFkZXJzL1JlZmVyZXIgIlRoZSBSZWZlcmVyIHJlcXVlc3QgaGVhZGVyIGNvbnRhaW5zIHRoZSBhZGRyZXNzIG9mIHRoZSBwcmV2aW91cyB3ZWIgcGFnZSBmcm9tIHdoaWNoIGEgbGluayB0byB0aGUgY3VycmVudGx5IHJlcXVlc3RlZCBwYWdlIHdhcyBmb2xsb3dlZC4gVGhlIFJlZmVyZXIgaGVhZGVyIGFsbG93cyBzZXJ2ZXJzIHRvIGlkZW50aWZ5IHdoZXJlIHBlb3BsZSBhcmUgdmlzaXRpbmcgdGhlbSBmcm9tIGFuZCBtYXkgdXNlIHRoYXQgZGF0YSBmb3IgYW5hbHl0aWNzLCBsb2dnaW5nLCBvciBvcHRpbWl6ZWQgY2FjaGluZywgZm9yIGV4YW1wbGUuIikgaGVhZGVyIHdpbGwgYmUgc2VudCB3aGVuIG5hdmlnYXRpbmcgdG8gYW4gb3JpZ2luIHdpdGhvdXQgVExTIChIVFRQUykuIFRoaXMgaXMgYSB1c2VyIGFnZW504oCZcyBkZWZhdWx0IGJlaGF2aW9yLCBpZiBubyBwb2xpY3kgaXMgb3RoZXJ3aXNlIHNwZWNpZmllZC5cbiogICBgb3JpZ2luYCBtZWFucyB0aGF0IHRoZSByZWZlcnJlciB3aWxsIGJlIHRoZSBvcmlnaW4gb2YgdGhlIHBhZ2UsIHdoaWNoIGlzIHJvdWdobHkgdGhlIHNjaGVtZSwgdGhlIGhvc3QsIGFuZCB0aGUgcG9ydC5cbiogICBgb3JpZ2luLXdoZW4tY3Jvc3Mtb3JpZ2luYCBtZWFucyB0aGF0IG5hdmlnYXRpbmcgdG8gb3RoZXIgb3JpZ2lucyB3aWxsIGJlIGxpbWl0ZWQgdG8gdGhlIHNjaGVtZSwgdGhlIGhvc3QsIGFuZCB0aGUgcG9ydCwgd2hpbGUgbmF2aWdhdGluZyBvbiB0aGUgc2FtZSBvcmlnaW4gd2lsbCBpbmNsdWRlIHRoZSByZWZlcnJlclwncyBwYXRoLlxuKiAgIGB1bnNhZmUtdXJsYCBtZWFucyB0aGF0IHRoZSByZWZlcnJlciB3aWxsIGluY2x1ZGUgdGhlIG9yaWdpbiBhbmQgdGhlIHBhdGggKGJ1dCBub3QgdGhlIGZyYWdtZW50LCBwYXNzd29yZCwgb3IgdXNlcm5hbWUpLiBUaGlzIGNhc2UgaXMgdW5zYWZlIGJlY2F1c2UgaXQgY2FuIGxlYWsgb3JpZ2lucyBhbmQgcGF0aHMgZnJvbSBUTFMtcHJvdGVjdGVkIHJlc291cmNlcyB0byBpbnNlY3VyZSBvcmlnaW5zLid9LHtuYW1lOiJ0aXRsZSIsZGVzY3JpcHRpb246J1RoZSBgdGl0bGVgIGF0dHJpYnV0ZSBoYXMgc3BlY2lhbCBzZW1hbnRpY3Mgb24gdGhlIGA8bGluaz5gIGVsZW1lbnQuIFdoZW4gdXNlZCBvbiBhIGA8bGluayByZWw9InN0eWxlc2hlZXQiPmAgaXQgZGVmaW5lcyBhIFtwcmVmZXJyZWQgb3IgYW4gYWx0ZXJuYXRlIHN0eWxlc2hlZXRdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9BbHRlcm5hdGl2ZV9zdHlsZV9zaGVldHMpLiBJbmNvcnJlY3RseSB1c2luZyBpdCBtYXkgW2NhdXNlIHRoZSBzdHlsZXNoZWV0IHRvIGJlIGlnbm9yZWRdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvQ29ycmVjdGx5X1VzaW5nX1RpdGxlc19XaXRoX0V4dGVybmFsX1N0eWxlc2hlZXRzKS4nfV0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2xpbmsifV19LHtuYW1lOiJtZXRhIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgbWV0YSBlbGVtZW50IHJlcHJlc2VudHMgdmFyaW91cyBraW5kcyBvZiBtZXRhZGF0YSB0aGF0IGNhbm5vdCBiZSBleHByZXNzZWQgdXNpbmcgdGhlIHRpdGxlLCBiYXNlLCBsaW5rLCBzdHlsZSwgYW5kIHNjcmlwdCBlbGVtZW50cy4ifSxhdHRyaWJ1dGVzOlt7bmFtZToibmFtZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTonVGhpcyBhdHRyaWJ1dGUgZGVmaW5lcyB0aGUgbmFtZSBvZiBhIHBpZWNlIG9mIGRvY3VtZW50LWxldmVsIG1ldGFkYXRhLiBJdCBzaG91bGQgbm90IGJlIHNldCBpZiBvbmUgb2YgdGhlIGF0dHJpYnV0ZXMgW2BpdGVtcHJvcGBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvR2xvYmFsX2F0dHJpYnV0ZXMjYXR0ci1pdGVtcHJvcCksIFtgaHR0cC1lcXVpdmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9tZXRhI2F0dHItaHR0cC1lcXVpdikgb3IgW2BjaGFyc2V0YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L21ldGEjYXR0ci1jaGFyc2V0KSBpcyBhbHNvIHNldC5cblxuVGhpcyBtZXRhZGF0YSBuYW1lIGlzIGFzc29jaWF0ZWQgd2l0aCB0aGUgdmFsdWUgY29udGFpbmVkIGJ5IHRoZSBbYGNvbnRlbnRgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvbWV0YSNhdHRyLWNvbnRlbnQpIGF0dHJpYnV0ZS4gVGhlIHBvc3NpYmxlIHZhbHVlcyBmb3IgdGhlIG5hbWUgYXR0cmlidXRlIGFyZTpcblxuKiAgIGBhcHBsaWNhdGlvbi1uYW1lYCB3aGljaCBkZWZpbmVzIHRoZSBuYW1lIG9mIHRoZSBhcHBsaWNhdGlvbiBydW5uaW5nIGluIHRoZSB3ZWIgcGFnZS5cbiAgICBcbiAgICAqKk5vdGU6KipcbiAgICBcbiAgICAqICAgQnJvd3NlcnMgbWF5IHVzZSB0aGlzIHRvIGlkZW50aWZ5IHRoZSBhcHBsaWNhdGlvbi4gSXQgaXMgZGlmZmVyZW50IGZyb20gdGhlIFtgPHRpdGxlPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC90aXRsZSAiVGhlIEhUTUwgVGl0bGUgZWxlbWVudCAoPHRpdGxlPikgZGVmaW5lcyB0aGUgZG9jdW1lbnRcJ3MgdGl0bGUgdGhhdCBpcyBzaG93biBpbiBhIGJyb3dzZXJcJ3MgdGl0bGUgYmFyIG9yIGEgcGFnZVwncyB0YWIuIikgZWxlbWVudCwgd2hpY2ggdXN1YWxseSBjb250YWluIHRoZSBhcHBsaWNhdGlvbiBuYW1lLCBidXQgbWF5IGFsc28gY29udGFpbiBpbmZvcm1hdGlvbiBsaWtlIHRoZSBkb2N1bWVudCBuYW1lIG9yIGEgc3RhdHVzLlxuICAgICogICBTaW1wbGUgd2ViIHBhZ2VzIHNob3VsZG5cJ3QgZGVmaW5lIGFuIGFwcGxpY2F0aW9uLW5hbWUuXG4gICAgXG4qICAgYGF1dGhvcmAgd2hpY2ggZGVmaW5lcyB0aGUgbmFtZSBvZiB0aGUgZG9jdW1lbnRcJ3MgYXV0aG9yLlxuKiAgIGBkZXNjcmlwdGlvbmAgd2hpY2ggY29udGFpbnMgYSBzaG9ydCBhbmQgYWNjdXJhdGUgc3VtbWFyeSBvZiB0aGUgY29udGVudCBvZiB0aGUgcGFnZS4gU2V2ZXJhbCBicm93c2VycywgbGlrZSBGaXJlZm94IGFuZCBPcGVyYSwgdXNlIHRoaXMgYXMgdGhlIGRlZmF1bHQgZGVzY3JpcHRpb24gb2YgYm9va21hcmtlZCBwYWdlcy5cbiogICBgZ2VuZXJhdG9yYCB3aGljaCBjb250YWlucyB0aGUgaWRlbnRpZmllciBvZiB0aGUgc29mdHdhcmUgdGhhdCBnZW5lcmF0ZWQgdGhlIHBhZ2UuXG4qICAgYGtleXdvcmRzYCB3aGljaCBjb250YWlucyB3b3JkcyByZWxldmFudCB0byB0aGUgcGFnZVwncyBjb250ZW50IHNlcGFyYXRlZCBieSBjb21tYXMuXG4qICAgYHJlZmVycmVyYCB3aGljaCBjb250cm9scyB0aGUgW2BSZWZlcmVyYCBIVFRQIGhlYWRlcl0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRUUC9IZWFkZXJzL1JlZmVyZXIpIGF0dGFjaGVkIHRvIHJlcXVlc3RzIHNlbnQgZnJvbSB0aGUgZG9jdW1lbnQ6XG4gICAgXG4gICAgVmFsdWVzIGZvciB0aGUgYGNvbnRlbnRgIGF0dHJpYnV0ZSBvZiBgPG1ldGEgbmFtZT0icmVmZXJyZXIiPmBcbiAgICBcbiAgICBgbm8tcmVmZXJyZXJgXG4gICAgXG4gICAgRG8gbm90IHNlbmQgYSBIVFRQIGBSZWZlcnJlcmAgaGVhZGVyLlxuICAgIFxuICAgIGBvcmlnaW5gXG4gICAgXG4gICAgU2VuZCB0aGUgW29yaWdpbl0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9HbG9zc2FyeS9PcmlnaW4pIG9mIHRoZSBkb2N1bWVudC5cbiAgICBcbiAgICBgbm8tcmVmZXJyZXItd2hlbi1kb3duZ3JhZGVgXG4gICAgXG4gICAgU2VuZCB0aGUgW29yaWdpbl0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9HbG9zc2FyeS9PcmlnaW4pIGFzIGEgcmVmZXJyZXIgdG8gVVJMcyBhcyBzZWN1cmUgYXMgdGhlIGN1cnJlbnQgcGFnZSwgKGh0dHBz4oaSaHR0cHMpLCBidXQgZG9lcyBub3Qgc2VuZCBhIHJlZmVycmVyIHRvIGxlc3Mgc2VjdXJlIFVSTHMgKGh0dHBz4oaSaHR0cCkuIFRoaXMgaXMgdGhlIGRlZmF1bHQgYmVoYXZpb3VyLlxuICAgIFxuICAgIGBvcmlnaW4td2hlbi1jcm9zcy1vcmlnaW5gXG4gICAgXG4gICAgU2VuZCB0aGUgZnVsbCBVUkwgKHN0cmlwcGVkIG9mIHBhcmFtZXRlcnMpIGZvciBzYW1lLW9yaWdpbiByZXF1ZXN0cywgYnV0IG9ubHkgc2VuZCB0aGUgW29yaWdpbl0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9HbG9zc2FyeS9PcmlnaW4pIGZvciBvdGhlciBjYXNlcy5cbiAgICBcbiAgICBgc2FtZS1vcmlnaW5gXG4gICAgXG4gICAgQSByZWZlcnJlciB3aWxsIGJlIHNlbnQgZm9yIFtzYW1lLXNpdGUgb3JpZ2luc10oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvU2VjdXJpdHkvU2FtZS1vcmlnaW5fcG9saWN5KSwgYnV0IGNyb3NzLW9yaWdpbiByZXF1ZXN0cyB3aWxsIGNvbnRhaW4gbm8gcmVmZXJyZXIgaW5mb3JtYXRpb24uXG4gICAgXG4gICAgYHN0cmljdC1vcmlnaW5gXG4gICAgXG4gICAgT25seSBzZW5kIHRoZSBvcmlnaW4gb2YgdGhlIGRvY3VtZW50IGFzIHRoZSByZWZlcnJlciB0byBhLXByaW9yaSBhcy1tdWNoLXNlY3VyZSBkZXN0aW5hdGlvbiAoSFRUUFMtPkhUVFBTKSwgYnV0IGRvblwndCBzZW5kIGl0IHRvIGEgbGVzcyBzZWN1cmUgZGVzdGluYXRpb24gKEhUVFBTLT5IVFRQKS5cbiAgICBcbiAgICBgc3RyaWN0LW9yaWdpbi13aGVuLWNyb3NzLW9yaWdpbmBcbiAgICBcbiAgICBTZW5kIGEgZnVsbCBVUkwgd2hlbiBwZXJmb3JtaW5nIGEgc2FtZS1vcmlnaW4gcmVxdWVzdCwgb25seSBzZW5kIHRoZSBvcmlnaW4gb2YgdGhlIGRvY3VtZW50IHRvIGEtcHJpb3JpIGFzLW11Y2gtc2VjdXJlIGRlc3RpbmF0aW9uIChIVFRQUy0+SFRUUFMpLCBhbmQgc2VuZCBubyBoZWFkZXIgdG8gYSBsZXNzIHNlY3VyZSBkZXN0aW5hdGlvbiAoSFRUUFMtPkhUVFApLlxuICAgIFxuICAgIGB1bnNhZmUtVVJMYFxuICAgIFxuICAgIFNlbmQgdGhlIGZ1bGwgVVJMIChzdHJpcHBlZCBvZiBwYXJhbWV0ZXJzKSBmb3Igc2FtZS1vcmlnaW4gb3IgY3Jvc3Mtb3JpZ2luIHJlcXVlc3RzLlxuICAgIFxuICAgICoqTm90ZXM6KipcbiAgICBcbiAgICAqICAgU29tZSBicm93c2VycyBzdXBwb3J0IHRoZSBkZXByZWNhdGVkIHZhbHVlcyBvZiBgYWx3YXlzYCwgYGRlZmF1bHRgLCBhbmQgYG5ldmVyYCBmb3IgcmVmZXJyZXIuXG4gICAgKiAgIER5bmFtaWNhbGx5IGluc2VydGluZyBgPG1ldGEgbmFtZT0icmVmZXJyZXIiPmAgKHdpdGggW2Bkb2N1bWVudC53cml0ZWBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9Eb2N1bWVudC93cml0ZSkgb3IgW2BhcHBlbmRDaGlsZGBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9Ob2RlL2FwcGVuZENoaWxkKSkgbWFrZXMgdGhlIHJlZmVycmVyIGJlaGF2aW91ciB1bnByZWRpY3RhYmxlLlxuICAgICogICBXaGVuIHNldmVyYWwgY29uZmxpY3RpbmcgcG9saWNpZXMgYXJlIGRlZmluZWQsIHRoZSBuby1yZWZlcnJlciBwb2xpY3kgaXMgYXBwbGllZC5cbiAgICBcblxuVGhpcyBhdHRyaWJ1dGUgbWF5IGFsc28gaGF2ZSBhIHZhbHVlIHRha2VuIGZyb20gdGhlIGV4dGVuZGVkIGxpc3QgZGVmaW5lZCBvbiBbV0hBVFdHIFdpa2kgTWV0YUV4dGVuc2lvbnMgcGFnZV0oaHR0cHM6Ly93aWtpLndoYXR3Zy5vcmcvd2lraS9NZXRhRXh0ZW5zaW9ucykuIEFsdGhvdWdoIG5vbmUgaGF2ZSBiZWVuIGZvcm1hbGx5IGFjY2VwdGVkIHlldCwgYSBmZXcgY29tbW9ubHkgdXNlZCBuYW1lcyBhcmU6XG5cbiogICBgY3JlYXRvcmAgd2hpY2ggZGVmaW5lcyB0aGUgbmFtZSBvZiB0aGUgY3JlYXRvciBvZiB0aGUgZG9jdW1lbnQsIHN1Y2ggYXMgYW4gb3JnYW5pemF0aW9uIG9yIGluc3RpdHV0aW9uLiBJZiB0aGVyZSBhcmUgbW9yZSB0aGFuIG9uZSwgc2V2ZXJhbCBbYDxtZXRhPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9tZXRhICJUaGUgSFRNTCA8bWV0YT4gZWxlbWVudCByZXByZXNlbnRzIG1ldGFkYXRhIHRoYXQgY2Fubm90IGJlIHJlcHJlc2VudGVkIGJ5IG90aGVyIEhUTUwgbWV0YS1yZWxhdGVkIGVsZW1lbnRzLCBsaWtlIDxiYXNlPiwgPGxpbms+LCA8c2NyaXB0PiwgPHN0eWxlPiBvciA8dGl0bGU+LiIpIGVsZW1lbnRzIHNob3VsZCBiZSB1c2VkLlxuKiAgIGBnb29nbGVib3RgLCBhIHN5bm9ueW0gb2YgYHJvYm90c2AsIGlzIG9ubHkgZm9sbG93ZWQgYnkgR29vZ2xlYm90ICh0aGUgaW5kZXhpbmcgY3Jhd2xlciBmb3IgR29vZ2xlKS5cbiogICBgcHVibGlzaGVyYCB3aGljaCBkZWZpbmVzIHRoZSBuYW1lIG9mIHRoZSBkb2N1bWVudFwncyBwdWJsaXNoZXIuXG4qICAgYHJvYm90c2Agd2hpY2ggZGVmaW5lcyB0aGUgYmVoYXZpb3VyIHRoYXQgY29vcGVyYXRpdmUgY3Jhd2xlcnMsIG9yICJyb2JvdHMiLCBzaG91bGQgdXNlIHdpdGggdGhlIHBhZ2UuIEl0IGlzIGEgY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2YgdGhlIHZhbHVlcyBiZWxvdzpcbiAgICBcbiAgICBWYWx1ZXMgZm9yIHRoZSBjb250ZW50IG9mIGA8bWV0YSBuYW1lPSJyb2JvdHMiPmBcbiAgICBcbiAgICBWYWx1ZVxuICAgIFxuICAgIERlc2NyaXB0aW9uXG4gICAgXG4gICAgVXNlZCBieVxuICAgIFxuICAgIGBpbmRleGBcbiAgICBcbiAgICBBbGxvd3MgdGhlIHJvYm90IHRvIGluZGV4IHRoZSBwYWdlIChkZWZhdWx0KS5cbiAgICBcbiAgICBBbGxcbiAgICBcbiAgICBgbm9pbmRleGBcbiAgICBcbiAgICBSZXF1ZXN0cyB0aGUgcm9ib3QgdG8gbm90IGluZGV4IHRoZSBwYWdlLlxuICAgIFxuICAgIEFsbFxuICAgIFxuICAgIGBmb2xsb3dgXG4gICAgXG4gICAgQWxsb3dzIHRoZSByb2JvdCB0byBmb2xsb3cgdGhlIGxpbmtzIG9uIHRoZSBwYWdlIChkZWZhdWx0KS5cbiAgICBcbiAgICBBbGxcbiAgICBcbiAgICBgbm9mb2xsb3dgXG4gICAgXG4gICAgUmVxdWVzdHMgdGhlIHJvYm90IHRvIG5vdCBmb2xsb3cgdGhlIGxpbmtzIG9uIHRoZSBwYWdlLlxuICAgIFxuICAgIEFsbFxuICAgIFxuICAgIGBub25lYFxuICAgIFxuICAgIEVxdWl2YWxlbnQgdG8gYG5vaW5kZXgsIG5vZm9sbG93YFxuICAgIFxuICAgIFtHb29nbGVdKGh0dHBzOi8vc3VwcG9ydC5nb29nbGUuY29tL3dlYm1hc3RlcnMvYW5zd2VyLzc5ODEyKVxuICAgIFxuICAgIGBub29kcGBcbiAgICBcbiAgICBQcmV2ZW50cyB1c2luZyB0aGUgW09wZW4gRGlyZWN0b3J5IFByb2plY3RdKGh0dHBzOi8vd3d3LmRtb3oub3JnLykgZGVzY3JpcHRpb24sIGlmIGFueSwgYXMgdGhlIHBhZ2UgZGVzY3JpcHRpb24gaW4gc2VhcmNoIGVuZ2luZSByZXN1bHRzLlxuICAgIFxuICAgIFtHb29nbGVdKGh0dHBzOi8vc3VwcG9ydC5nb29nbGUuY29tL3dlYm1hc3RlcnMvYW5zd2VyLzM1NjI0I25vZG1veiksIFtZYWhvb10oaHR0cHM6Ly9oZWxwLnlhaG9vLmNvbS9rYi9zZWFyY2gtZm9yLWRlc2t0b3AvbWV0YS10YWdzLXJvYm90c3R4dC15YWhvby1zZWFyY2gtc2xuMjIxMy5odG1sI2NvbnQ1KSwgW0JpbmddKGh0dHBzOi8vd3d3LmJpbmcuY29tL3dlYm1hc3Rlci9oZWxwL3doaWNoLXJvYm90cy1tZXRhdGFncy1kb2VzLWJpbmctc3VwcG9ydC01MTk4ZDI0MClcbiAgICBcbiAgICBgbm9hcmNoaXZlYFxuICAgIFxuICAgIFJlcXVlc3RzIHRoZSBzZWFyY2ggZW5naW5lIG5vdCB0byBjYWNoZSB0aGUgcGFnZSBjb250ZW50LlxuICAgIFxuICAgIFtHb29nbGVdKGh0dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL3dlYm1hc3RlcnMvY29udHJvbC1jcmF3bC1pbmRleC9kb2NzL3JvYm90c19tZXRhX3RhZyN2YWxpZC1pbmRleGluZy0tc2VydmluZy1kaXJlY3RpdmVzKSwgW1lhaG9vXShodHRwczovL2hlbHAueWFob28uY29tL2tiL3NlYXJjaC1mb3ItZGVza3RvcC9TTE4yMjEzLmh0bWwpLCBbQmluZ10oaHR0cHM6Ly93d3cuYmluZy5jb20vd2VibWFzdGVyL2hlbHAvd2hpY2gtcm9ib3RzLW1ldGF0YWdzLWRvZXMtYmluZy1zdXBwb3J0LTUxOThkMjQwKVxuICAgIFxuICAgIGBub3NuaXBwZXRgXG4gICAgXG4gICAgUHJldmVudHMgZGlzcGxheWluZyBhbnkgZGVzY3JpcHRpb24gb2YgdGhlIHBhZ2UgaW4gc2VhcmNoIGVuZ2luZSByZXN1bHRzLlxuICAgIFxuICAgIFtHb29nbGVdKGh0dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL3dlYm1hc3RlcnMvY29udHJvbC1jcmF3bC1pbmRleC9kb2NzL3JvYm90c19tZXRhX3RhZyN2YWxpZC1pbmRleGluZy0tc2VydmluZy1kaXJlY3RpdmVzKSwgW0JpbmddKGh0dHBzOi8vd3d3LmJpbmcuY29tL3dlYm1hc3Rlci9oZWxwL3doaWNoLXJvYm90cy1tZXRhdGFncy1kb2VzLWJpbmctc3VwcG9ydC01MTk4ZDI0MClcbiAgICBcbiAgICBgbm9pbWFnZWluZGV4YFxuICAgIFxuICAgIFJlcXVlc3RzIHRoaXMgcGFnZSBub3QgdG8gYXBwZWFyIGFzIHRoZSByZWZlcnJpbmcgcGFnZSBvZiBhbiBpbmRleGVkIGltYWdlLlxuICAgIFxuICAgIFtHb29nbGVdKGh0dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL3dlYm1hc3RlcnMvY29udHJvbC1jcmF3bC1pbmRleC9kb2NzL3JvYm90c19tZXRhX3RhZyN2YWxpZC1pbmRleGluZy0tc2VydmluZy1kaXJlY3RpdmVzKVxuICAgIFxuICAgIGBub2NhY2hlYFxuICAgIFxuICAgIFN5bm9ueW0gb2YgYG5vYXJjaGl2ZWAuXG4gICAgXG4gICAgW0JpbmddKGh0dHBzOi8vd3d3LmJpbmcuY29tL3dlYm1hc3Rlci9oZWxwL3doaWNoLXJvYm90cy1tZXRhdGFncy1kb2VzLWJpbmctc3VwcG9ydC01MTk4ZDI0MClcbiAgICBcbiAgICAqKk5vdGVzOioqXG4gICAgXG4gICAgKiAgIE9ubHkgY29vcGVyYXRpdmUgcm9ib3RzIGZvbGxvdyB0aGVzZSBydWxlcy4gRG8gbm90IGV4cGVjdCB0byBwcmV2ZW50IGUtbWFpbCBoYXJ2ZXN0ZXJzIHdpdGggdGhlbS5cbiAgICAqICAgVGhlIHJvYm90IHN0aWxsIG5lZWRzIHRvIGFjY2VzcyB0aGUgcGFnZSBpbiBvcmRlciB0byByZWFkIHRoZXNlIHJ1bGVzLiBUbyBwcmV2ZW50IGJhbmR3aWR0aCBjb25zdW1wdGlvbiwgdXNlIGEgX1tyb2JvdHMudHh0XShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0dsb3NzYXJ5L3JvYm90cy50eHQgInJvYm90cy50eHQ6IFJvYm90cy50eHQgaXMgYSBmaWxlIHdoaWNoIGlzIHVzdWFsbHkgcGxhY2VkIGluIHRoZSByb290IG9mIGFueSB3ZWJzaXRlLiBJdCBkZWNpZGVzIHdoZXRoZXLCoGNyYXdsZXJzIGFyZSBwZXJtaXR0ZWQgb3IgZm9yYmlkZGVuIGFjY2VzcyB0byB0aGUgd2ViIHNpdGUuIilfIGZpbGUuXG4gICAgKiAgIElmIHlvdSB3YW50IHRvIHJlbW92ZSBhIHBhZ2UsIGBub2luZGV4YCB3aWxsIHdvcmssIGJ1dCBvbmx5IGFmdGVyIHRoZSByb2JvdCB2aXNpdHMgdGhlIHBhZ2UgYWdhaW4uIEVuc3VyZSB0aGF0IHRoZSBgcm9ib3RzLnR4dGAgZmlsZSBpcyBub3QgcHJldmVudGluZyByZXZpc2l0cy5cbiAgICAqICAgU29tZSB2YWx1ZXMgYXJlIG11dHVhbGx5IGV4Y2x1c2l2ZSwgbGlrZSBgaW5kZXhgIGFuZCBgbm9pbmRleGAsIG9yIGBmb2xsb3dgIGFuZCBgbm9mb2xsb3dgLiBJbiB0aGVzZSBjYXNlcyB0aGUgcm9ib3RcJ3MgYmVoYXZpb3VyIGlzIHVuZGVmaW5lZCBhbmQgbWF5IHZhcnkgYmV0d2VlbiB0aGVtLlxuICAgICogICBTb21lIGNyYXdsZXIgcm9ib3RzLCBsaWtlIEdvb2dsZSwgWWFob28gYW5kIEJpbmcsIHN1cHBvcnQgdGhlIHNhbWUgdmFsdWVzIGZvciB0aGUgSFRUUCBoZWFkZXIgYFgtUm9ib3RzLVRhZ2A7IHRoaXMgYWxsb3dzIG5vbi1IVE1MIGRvY3VtZW50cyBsaWtlIGltYWdlcyB0byB1c2UgdGhlc2UgcnVsZXMuXG4gICAgXG4qICAgYHNsdXJwYCwgaXMgYSBzeW5vbnltIG9mIGByb2JvdHNgLCBidXQgb25seSBmb3IgU2x1cnAgLSB0aGUgY3Jhd2xlciBmb3IgWWFob28gU2VhcmNoLlxuKiAgIGB2aWV3cG9ydGAsIHdoaWNoIGdpdmVzIGhpbnRzIGFib3V0IHRoZSBzaXplIG9mIHRoZSBpbml0aWFsIHNpemUgb2YgdGhlIFt2aWV3cG9ydF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9HbG9zc2FyeS92aWV3cG9ydCAidmlld3BvcnQ6IEEgdmlld3BvcnQgcmVwcmVzZW50cyBhIHBvbHlnb25hbCAobm9ybWFsbHkgcmVjdGFuZ3VsYXIpIGFyZWEgaW4gY29tcHV0ZXIgZ3JhcGhpY3MgdGhhdCBpcyBjdXJyZW50bHkgYmVpbmcgdmlld2VkLiBJbiB3ZWIgYnJvd3NlciB0ZXJtcywgaXQgcmVmZXJzIHRvIHRoZSBwYXJ0IG9mIHRoZSBkb2N1bWVudCB5b3VcJ3JlIHZpZXdpbmcgd2hpY2ggaXMgY3VycmVudGx5IHZpc2libGUgaW4gaXRzIHdpbmRvdyAob3IgdGhlIHNjcmVlbiwgaWYgdGhlIGRvY3VtZW50IGlzIGJlaW5nIHZpZXdlZCBpbiBmdWxsIHNjcmVlbiBtb2RlKS4gQ29udGVudCBvdXRzaWRlIHRoZSB2aWV3cG9ydCBpcyBub3QgdmlzaWJsZSBvbnNjcmVlbiB1bnRpbCBzY3JvbGxlZCBpbnRvIHZpZXcuIikuIFVzZWQgYnkgbW9iaWxlIGRldmljZXMgb25seS5cbiAgICBcbiAgICBWYWx1ZXMgZm9yIHRoZSBjb250ZW50IG9mIGA8bWV0YSBuYW1lPSJ2aWV3cG9ydCI+YFxuICAgIFxuICAgIFZhbHVlXG4gICAgXG4gICAgUG9zc2libGUgc3VidmFsdWVzXG4gICAgXG4gICAgRGVzY3JpcHRpb25cbiAgICBcbiAgICBgd2lkdGhgXG4gICAgXG4gICAgQSBwb3NpdGl2ZSBpbnRlZ2VyIG51bWJlciwgb3IgdGhlIHRleHQgYGRldmljZS13aWR0aGBcbiAgICBcbiAgICBEZWZpbmVzIHRoZSBwaXhlbCB3aWR0aCBvZiB0aGUgdmlld3BvcnQgdGhhdCB5b3Ugd2FudCB0aGUgd2ViIHNpdGUgdG8gYmUgcmVuZGVyZWQgYXQuXG4gICAgXG4gICAgYGhlaWdodGBcbiAgICBcbiAgICBBIHBvc2l0aXZlIGludGVnZXIsIG9yIHRoZSB0ZXh0IGBkZXZpY2UtaGVpZ2h0YFxuICAgIFxuICAgIERlZmluZXMgdGhlIGhlaWdodCBvZiB0aGUgdmlld3BvcnQuIE5vdCB1c2VkIGJ5IGFueSBicm93c2VyLlxuICAgIFxuICAgIGBpbml0aWFsLXNjYWxlYFxuICAgIFxuICAgIEEgcG9zaXRpdmUgbnVtYmVyIGJldHdlZW4gYDAuMGAgYW5kIGAxMC4wYFxuICAgIFxuICAgIERlZmluZXMgdGhlIHJhdGlvIGJldHdlZW4gdGhlIGRldmljZSB3aWR0aCAoYGRldmljZS13aWR0aGAgaW4gcG9ydHJhaXQgbW9kZSBvciBgZGV2aWNlLWhlaWdodGAgaW4gbGFuZHNjYXBlIG1vZGUpIGFuZCB0aGUgdmlld3BvcnQgc2l6ZS5cbiAgICBcbiAgICBgbWF4aW11bS1zY2FsZWBcbiAgICBcbiAgICBBIHBvc2l0aXZlIG51bWJlciBiZXR3ZWVuIGAwLjBgIGFuZCBgMTAuMGBcbiAgICBcbiAgICBEZWZpbmVzIHRoZSBtYXhpbXVtIGFtb3VudCB0byB6b29tIGluLiBJdCBtdXN0IGJlIGdyZWF0ZXIgb3IgZXF1YWwgdG8gdGhlIGBtaW5pbXVtLXNjYWxlYCBvciB0aGUgYmVoYXZpb3VyIGlzIHVuZGVmaW5lZC4gQnJvd3NlciBzZXR0aW5ncyBjYW4gaWdub3JlIHRoaXMgcnVsZSBhbmQgaU9TMTArIGlnbm9yZXMgaXQgYnkgZGVmYXVsdC5cbiAgICBcbiAgICBgbWluaW11bS1zY2FsZWBcbiAgICBcbiAgICBBIHBvc2l0aXZlIG51bWJlciBiZXR3ZWVuIGAwLjBgIGFuZCBgMTAuMGBcbiAgICBcbiAgICBEZWZpbmVzIHRoZSBtaW5pbXVtIHpvb20gbGV2ZWwuIEl0IG11c3QgYmUgc21hbGxlciBvciBlcXVhbCB0byB0aGUgYG1heGltdW0tc2NhbGVgIG9yIHRoZSBiZWhhdmlvdXIgaXMgdW5kZWZpbmVkLiBCcm93c2VyIHNldHRpbmdzIGNhbiBpZ25vcmUgdGhpcyBydWxlIGFuZCBpT1MxMCsgaWdub3JlcyBpdCBieSBkZWZhdWx0LlxuICAgIFxuICAgIGB1c2VyLXNjYWxhYmxlYFxuICAgIFxuICAgIGB5ZXNgIG9yIGBub2BcbiAgICBcbiAgICBJZiBzZXQgdG8gYG5vYCwgdGhlIHVzZXIgaXMgbm90IGFibGUgdG8gem9vbSBpbiB0aGUgd2VicGFnZS4gVGhlIGRlZmF1bHQgaXMgYHllc2AuIEJyb3dzZXIgc2V0dGluZ3MgY2FuIGlnbm9yZSB0aGlzIHJ1bGUsIGFuZCBpT1MxMCsgaWdub3JlcyBpdCBieSBkZWZhdWx0LlxuICAgIFxuICAgIFNwZWNpZmljYXRpb25cbiAgICBcbiAgICBTdGF0dXNcbiAgICBcbiAgICBDb21tZW50XG4gICAgXG4gICAgW0NTUyBEZXZpY2UgQWRhcHRhdGlvbiAgXG4gICAgVGhlIGRlZmluaXRpb24gb2YgXCc8bWV0YSBuYW1lPSJ2aWV3cG9ydCI+XCcgaW4gdGhhdCBzcGVjaWZpY2F0aW9uLl0oaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzcy1kZXZpY2UtYWRhcHQvI3ZpZXdwb3J0LW1ldGEpXG4gICAgXG4gICAgV29ya2luZyBEcmFmdFxuICAgIFxuICAgIE5vbi1ub3JtYXRpdmVseSBkZXNjcmliZXMgdGhlIFZpZXdwb3J0IE1FVEEgZWxlbWVudFxuICAgIFxuICAgIFNlZSBhbHNvOiBbYEB2aWV3cG9ydGBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9Admlld3BvcnQgIlRoZSBAdmlld3BvcnQgQ1NTIGF0LXJ1bGUgbGV0cyB5b3UgY29uZmlndXJlIHRoZSB2aWV3cG9ydCB0aHJvdWdoIHdoaWNoIHRoZSBkb2N1bWVudCBpcyB2aWV3ZWQuIEl0XCdzIHByaW1hcmlseSB1c2VkIGZvciBtb2JpbGUgZGV2aWNlcywgYnV0IGlzIGFsc28gdXNlZCBieSBkZXNrdG9wIGJyb3dzZXJzIHRoYXQgc3VwcG9ydCBmZWF0dXJlcyBsaWtlICJzbmFwIHRvIGVkZ2UiIChzdWNoIGFzIE1pY3Jvc29mdCBFZGdlKS4iKVxuICAgIFxuICAgICoqTm90ZXM6KipcbiAgICBcbiAgICAqICAgVGhvdWdoIHVuc3RhbmRhcmRpemVkLCB0aGlzIGRlY2xhcmF0aW9uIGlzIHJlc3BlY3RlZCBieSBtb3N0IG1vYmlsZSBicm93c2VycyBkdWUgdG8gZGUtZmFjdG8gZG9taW5hbmNlLlxuICAgICogICBUaGUgZGVmYXVsdCB2YWx1ZXMgbWF5IHZhcnkgYmV0d2VlbiBkZXZpY2VzIGFuZCBicm93c2Vycy5cbiAgICAqICAgVG8gbGVhcm4gYWJvdXQgdGhpcyBkZWNsYXJhdGlvbiBpbiBGaXJlZm94IGZvciBNb2JpbGUsIHNlZSBbdGhpcyBhcnRpY2xlXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL01vYmlsZS9WaWV3cG9ydF9tZXRhX3RhZyAiTW9iaWxlL1ZpZXdwb3J0IG1ldGEgdGFnIikuJ319LHtuYW1lOiJodHRwLWVxdWl2IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOidEZWZpbmVzIGEgcHJhZ21hIGRpcmVjdGl2ZS4gVGhlIGF0dHJpYnV0ZSBpcyBuYW1lZCBgKipodHRwLWVxdWl2KiooYWxlbnQpYCBiZWNhdXNlIGFsbCB0aGUgYWxsb3dlZCB2YWx1ZXMgYXJlIG5hbWVzIG9mIHBhcnRpY3VsYXIgSFRUUCBoZWFkZXJzOlxuXG4qICAgYCJjb250ZW50LWxhbmd1YWdlImAgIFxuICAgIERlZmluZXMgdGhlIGRlZmF1bHQgbGFuZ3VhZ2Ugb2YgdGhlIHBhZ2UuIEl0IGNhbiBiZSBvdmVycmlkZGVuIGJ5IHRoZSBbbGFuZ10oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9HbG9iYWxfYXR0cmlidXRlcy9sYW5nKSBhdHRyaWJ1dGUgb24gYW55IGVsZW1lbnQuXG4gICAgXG4gICAgKipXYXJuaW5nOioqIERvIG5vdCB1c2UgdGhpcyB2YWx1ZSwgYXMgaXQgaXMgb2Jzb2xldGUuIFByZWZlciB0aGUgYGxhbmdgIGF0dHJpYnV0ZSBvbiB0aGUgW2A8aHRtbD5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvaHRtbCAiVGhlIEhUTUwgPGh0bWw+IGVsZW1lbnQgcmVwcmVzZW50cyB0aGUgcm9vdCAodG9wLWxldmVsIGVsZW1lbnQpIG9mIGFuIEhUTUwgZG9jdW1lbnQsIHNvIGl0IGlzIGFsc28gcmVmZXJyZWQgdG8gYXMgdGhlIHJvb3QgZWxlbWVudC4gQWxsIG90aGVyIGVsZW1lbnRzIG11c3QgYmUgZGVzY2VuZGFudHMgb2YgdGhpcyBlbGVtZW50LiIpIGVsZW1lbnQuXG4gICAgXG4qICAgYCJjb250ZW50LXNlY3VyaXR5LXBvbGljeSJgICBcbiAgICBBbGxvd3MgcGFnZSBhdXRob3JzIHRvIGRlZmluZSBhIFtjb250ZW50IHBvbGljeV0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvU2VjdXJpdHkvQ1NQL0NTUF9wb2xpY3lfZGlyZWN0aXZlcykgZm9yIHRoZSBjdXJyZW50IHBhZ2UuIENvbnRlbnQgcG9saWNpZXMgbW9zdGx5IHNwZWNpZnkgYWxsb3dlZCBzZXJ2ZXIgb3JpZ2lucyBhbmQgc2NyaXB0IGVuZHBvaW50cyB3aGljaCBoZWxwIGd1YXJkIGFnYWluc3QgY3Jvc3Mtc2l0ZSBzY3JpcHRpbmcgYXR0YWNrcy5cbiogICBgImNvbnRlbnQtdHlwZSJgICBcbiAgICBEZWZpbmVzIHRoZSBbTUlNRSB0eXBlXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0dsb3NzYXJ5L01JTUVfdHlwZSkgb2YgdGhlIGRvY3VtZW50LCBmb2xsb3dlZCBieSBpdHMgY2hhcmFjdGVyIGVuY29kaW5nLiBJdCBmb2xsb3dzIHRoZSBzYW1lIHN5bnRheCBhcyB0aGUgSFRUUCBgY29udGVudC10eXBlYCBlbnRpdHktaGVhZGVyIGZpZWxkLCBidXQgYXMgaXQgaXMgaW5zaWRlIGEgSFRNTCBwYWdlLCBtb3N0IHZhbHVlcyBvdGhlciB0aGFuIGB0ZXh0L2h0bWxgIGFyZSBpbXBvc3NpYmxlLiBUaGVyZWZvcmUgdGhlIHZhbGlkIHN5bnRheCBmb3IgaXRzIGBjb250ZW50YCBpcyB0aGUgc3RyaW5nIFwnYHRleHQvaHRtbGBcJyBmb2xsb3dlZCBieSBhIGNoYXJhY3RlciBzZXQgd2l0aCB0aGUgZm9sbG93aW5nIHN5bnRheDogXCdgOyBjaGFyc2V0PV9JQU5BY2hhcnNldF9gXCcsIHdoZXJlIGBJQU5BY2hhcnNldGAgaXMgdGhlIF9wcmVmZXJyZWQgTUlNRSBuYW1lXyBmb3IgYSBjaGFyYWN0ZXIgc2V0IGFzIFtkZWZpbmVkIGJ5IHRoZSBJQU5BLl0oaHR0cHM6Ly93d3cuaWFuYS5vcmcvYXNzaWdubWVudHMvY2hhcmFjdGVyLXNldHMpXG4gICAgXG4gICAgKipXYXJuaW5nOioqIERvIG5vdCB1c2UgdGhpcyB2YWx1ZSwgYXMgaXQgaXMgb2Jzb2xldGUuIFVzZSB0aGUgW2BjaGFyc2V0YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L21ldGEjYXR0ci1jaGFyc2V0KSBhdHRyaWJ1dGUgb24gdGhlIFtgPG1ldGE+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L21ldGEgIlRoZSBIVE1MIDxtZXRhPiBlbGVtZW50IHJlcHJlc2VudHMgbWV0YWRhdGEgdGhhdCBjYW5ub3QgYmUgcmVwcmVzZW50ZWQgYnkgb3RoZXIgSFRNTCBtZXRhLXJlbGF0ZWQgZWxlbWVudHMsIGxpa2UgPGJhc2U+LCA8bGluaz4sIDxzY3JpcHQ+LCA8c3R5bGU+IG9yIDx0aXRsZT4uIikgZWxlbWVudC5cbiAgICBcbiAgICAqKk5vdGU6KiogQXMgW2A8bWV0YT5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvbWV0YSAiVGhlIEhUTUwgPG1ldGE+IGVsZW1lbnQgcmVwcmVzZW50cyBtZXRhZGF0YSB0aGF0IGNhbm5vdCBiZSByZXByZXNlbnRlZCBieSBvdGhlciBIVE1MIG1ldGEtcmVsYXRlZCBlbGVtZW50cywgbGlrZSA8YmFzZT4sIDxsaW5rPiwgPHNjcmlwdD4sIDxzdHlsZT4gb3IgPHRpdGxlPi4iKSBjYW5cJ3QgY2hhbmdlIGRvY3VtZW50c1wnIHR5cGVzIGluIFhIVE1MIG9yIEhUTUw1XCdzIFhIVE1MIHNlcmlhbGl6YXRpb24sIG5ldmVyIHNldCB0aGUgTUlNRSB0eXBlIHRvIGFuIFhIVE1MIE1JTUUgdHlwZSB3aXRoIGA8bWV0YT5gLlxuICAgIFxuKiAgIGAicmVmcmVzaCJgICBcbiAgICBUaGlzIGluc3RydWN0aW9uIHNwZWNpZmllczpcbiAgICAqICAgVGhlIG51bWJlciBvZiBzZWNvbmRzIHVudGlsIHRoZSBwYWdlIHNob3VsZCBiZSByZWxvYWRlZCAtIG9ubHkgaWYgdGhlIFtgY29udGVudGBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9tZXRhI2F0dHItY29udGVudCkgYXR0cmlidXRlIGNvbnRhaW5zIGEgcG9zaXRpdmUgaW50ZWdlci5cbiAgICAqICAgVGhlIG51bWJlciBvZiBzZWNvbmRzIHVudGlsIHRoZSBwYWdlIHNob3VsZCByZWRpcmVjdCB0byBhbm90aGVyIC0gb25seSBpZiB0aGUgW2Bjb250ZW50YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L21ldGEjYXR0ci1jb250ZW50KSBhdHRyaWJ1dGUgY29udGFpbnMgYSBwb3NpdGl2ZSBpbnRlZ2VyIGZvbGxvd2VkIGJ5IHRoZSBzdHJpbmcgXCdgO3VybD1gXCcsIGFuZCBhIHZhbGlkIFVSTC5cbiogICBgInNldC1jb29raWUiYCAgXG4gICAgRGVmaW5lcyBhIFtjb29raWVdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvY29va2llKSBmb3IgdGhlIHBhZ2UuIEl0cyBjb250ZW50IG11c3QgZm9sbG93IHRoZSBzeW50YXggZGVmaW5lZCBpbiB0aGUgW0lFVEYgSFRUUCBDb29raWUgU3BlY2lmaWNhdGlvbl0oaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL2RyYWZ0LWlldGYtaHR0cHN0YXRlLWNvb2tpZS0xNCkuXG4gICAgXG4gICAgKipXYXJuaW5nOioqIERvIG5vdCB1c2UgdGhpcyBpbnN0cnVjdGlvbiwgYXMgaXQgaXMgb2Jzb2xldGUuIFVzZSB0aGUgSFRUUCBoZWFkZXIgW2BTZXQtQ29va2llYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRUUC9IZWFkZXJzL1NldC1Db29raWUpIGluc3RlYWQuJ319LHtuYW1lOiJjb250ZW50IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGlzIGF0dHJpYnV0ZSBjb250YWlucyB0aGUgdmFsdWUgZm9yIHRoZSBbYGh0dHAtZXF1aXZgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvbWV0YSNhdHRyLWh0dHAtZXF1aXYpIG9yIFtgbmFtZWBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9tZXRhI2F0dHItbmFtZSkgYXR0cmlidXRlLCBkZXBlbmRpbmcgb24gd2hpY2ggaXMgdXNlZC4ifX0se25hbWU6ImNoYXJzZXQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6J1RoaXMgYXR0cmlidXRlIGRlY2xhcmVzIHRoZSBwYWdlXCdzIGNoYXJhY3RlciBlbmNvZGluZy4gSXQgbXVzdCBjb250YWluIGEgW3N0YW5kYXJkIElBTkEgTUlNRSBuYW1lIGZvciBjaGFyYWN0ZXIgZW5jb2RpbmdzXShodHRwczovL3d3dy5pYW5hLm9yZy9hc3NpZ25tZW50cy9jaGFyYWN0ZXItc2V0cykuIEFsdGhvdWdoIHRoZSBzdGFuZGFyZCBkb2VzblwndCByZXF1ZXN0IGEgc3BlY2lmaWMgZW5jb2RpbmcsIGl0IHN1Z2dlc3RzOlxuXG4qICAgQXV0aG9ycyBhcmUgZW5jb3VyYWdlZCB0byB1c2UgW2BVVEYtOGBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvR2xvc3NhcnkvVVRGLTgpLlxuKiAgIEF1dGhvcnMgc2hvdWxkIG5vdCB1c2UgQVNDSUktaW5jb21wYXRpYmxlIGVuY29kaW5ncyB0byBhdm9pZCBzZWN1cml0eSByaXNrOiBicm93c2VycyBub3Qgc3VwcG9ydGluZyB0aGVtIG1heSBpbnRlcnByZXQgaGFybWZ1bCBjb250ZW50IGFzIEhUTUwuIFRoaXMgaGFwcGVucyB3aXRoIHRoZSBgSklTX0M2MjI2LTE5ODNgLCBgSklTX1gwMjEyLTE5OTBgLCBgSFotR0ItMjMxMmAsIGBKT0hBQmAsIHRoZSBJU08tMjAyMiBmYW1pbHkgYW5kIHRoZSBFQkNESUMgZmFtaWx5LlxuXG4qKk5vdGU6KiogQVNDSUktaW5jb21wYXRpYmxlIGVuY29kaW5ncyBhcmUgdGhvc2UgdGhhdCBkb25cJ3QgbWFwIHRoZSA4LWJpdCBjb2RlIHBvaW50cyBgMHgyMGAgdG8gYDB4N0VgIHRvIHRoZSBgMHgwMDIwYCB0byBgMHgwMDdFYCBVbmljb2RlIGNvZGUgcG9pbnRzKVxuXG4qICAgQXV0aG9ycyAqKm11c3Qgbm90KiogdXNlIGBDRVNVLThgLCBgVVRGLTdgLCBgQk9DVS0xYCBhbmQvb3IgYFNDU1VgIGFzIFtjcm9zcy1zaXRlIHNjcmlwdGluZ10oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9HbG9zc2FyeS9Dcm9zcy1zaXRlX3NjcmlwdGluZykgYXR0YWNrcyB3aXRoIHRoZXNlIGVuY29kaW5ncyBoYXZlIGJlZW4gZGVtb25zdHJhdGVkLlxuKiAgIEF1dGhvcnMgc2hvdWxkIG5vdCB1c2UgYFVURi0zMmAgYmVjYXVzZSBub3QgYWxsIEhUTUw1IGVuY29kaW5nIGFsZ29yaXRobXMgY2FuIGRpc3Rpbmd1aXNoIGl0IGZyb20gYFVURi0xNmAuXG5cbioqTm90ZXM6KipcblxuKiAgIFRoZSBkZWNsYXJlZCBjaGFyYWN0ZXIgZW5jb2RpbmcgbXVzdCBtYXRjaCB0aGUgb25lIHRoZSBwYWdlIHdhcyBzYXZlZCB3aXRoIHRvIGF2b2lkIGdhcmJsZWQgY2hhcmFjdGVycyBhbmQgc2VjdXJpdHkgaG9sZXMuXG4qICAgVGhlIFtgPG1ldGE+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L21ldGEgIlRoZSBIVE1MIDxtZXRhPiBlbGVtZW50IHJlcHJlc2VudHMgbWV0YWRhdGEgdGhhdCBjYW5ub3QgYmUgcmVwcmVzZW50ZWQgYnkgb3RoZXIgSFRNTCBtZXRhLXJlbGF0ZWQgZWxlbWVudHMsIGxpa2UgPGJhc2U+LCA8bGluaz4sIDxzY3JpcHQ+LCA8c3R5bGU+IG9yIDx0aXRsZT4uIikgZWxlbWVudCBkZWNsYXJpbmcgdGhlIGVuY29kaW5nIG11c3QgYmUgaW5zaWRlIHRoZSBbYDxoZWFkPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9oZWFkICJUaGUgSFRNTCA8aGVhZD4gZWxlbWVudCBwcm92aWRlcyBnZW5lcmFsIGluZm9ybWF0aW9uIChtZXRhZGF0YSkgYWJvdXQgdGhlIGRvY3VtZW50LCBpbmNsdWRpbmcgaXRzIHRpdGxlIGFuZCBsaW5rcyB0byBpdHPCoHNjcmlwdHMgYW5kIHN0eWxlIHNoZWV0cy4iKSBlbGVtZW50IGFuZCAqKndpdGhpbiB0aGUgZmlyc3QgMTAyNCBieXRlcyoqIG9mIHRoZSBIVE1MIGFzIHNvbWUgYnJvd3NlcnMgb25seSBsb29rIGF0IHRob3NlIGJ5dGVzIGJlZm9yZSBjaG9vc2luZyBhbiBlbmNvZGluZy5cbiogICBUaGlzIFtgPG1ldGE+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L21ldGEgIlRoZSBIVE1MIDxtZXRhPiBlbGVtZW50IHJlcHJlc2VudHMgbWV0YWRhdGEgdGhhdCBjYW5ub3QgYmUgcmVwcmVzZW50ZWQgYnkgb3RoZXIgSFRNTCBtZXRhLXJlbGF0ZWQgZWxlbWVudHMsIGxpa2UgPGJhc2U+LCA8bGluaz4sIDxzY3JpcHQ+LCA8c3R5bGU+IG9yIDx0aXRsZT4uIikgZWxlbWVudCBpcyBvbmx5IG9uZSBwYXJ0IG9mIHRoZSBbYWxnb3JpdGhtIHRvIGRldGVybWluZSBhIHBhZ2VcJ3MgY2hhcmFjdGVyIHNldF0oaHR0cHM6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50LXdvcmsvbXVsdGlwYWdlL3BhcnNpbmcuaHRtbCNlbmNvZGluZy1zbmlmZmluZy1hbGdvcml0aG0gIkFsZ29yaXRobSBjaGFyc2V0IHBhZ2UiKS4gVGhlIFtgQ29udGVudC1UeXBlYCBoZWFkZXJdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUVFAvSGVhZGVycy9Db250ZW50LVR5cGUpIGFuZCBhbnkgW0J5dGUtT3JkZXIgTWFya3NdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvR2xvc3NhcnkvQnl0ZS1PcmRlcl9NYXJrICJUaGUgZGVmaW5pdGlvbiBvZiB0aGF0IHRlcm0gKEJ5dGUtT3JkZXIgTWFya3MpIGhhcyBub3QgYmVlbiB3cml0dGVuIHlldDsgcGxlYXNlIGNvbnNpZGVyIGNvbnRyaWJ1dGluZyBpdCEiKSBvdmVycmlkZSB0aGlzIGVsZW1lbnQuXG4qICAgSXQgaXMgc3Ryb25nbHkgcmVjb21tZW5kZWQgdG8gZGVmaW5lIHRoZSBjaGFyYWN0ZXIgZW5jb2RpbmcuIElmIGEgcGFnZVwncyBlbmNvZGluZyBpcyB1bmRlZmluZWQsIGNyb3NzLXNjcmlwdGluZyB0ZWNobmlxdWVzIGFyZSBwb3NzaWJsZSwgc3VjaCBhcyB0aGUgW2BVVEYtN2AgZmFsbGJhY2sgY3Jvc3Mtc2NyaXB0aW5nIHRlY2huaXF1ZV0oaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9kb2N0eXBlLW1pcnJvci93aWtpL0FydGljbGVVdGY3KS5cbiogICBUaGUgW2A8bWV0YT5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvbWV0YSAiVGhlIEhUTUwgPG1ldGE+IGVsZW1lbnQgcmVwcmVzZW50cyBtZXRhZGF0YSB0aGF0IGNhbm5vdCBiZSByZXByZXNlbnRlZCBieSBvdGhlciBIVE1MIG1ldGEtcmVsYXRlZCBlbGVtZW50cywgbGlrZSA8YmFzZT4sIDxsaW5rPiwgPHNjcmlwdD4sIDxzdHlsZT4gb3IgPHRpdGxlPi4iKSBlbGVtZW50IHdpdGggYSBgY2hhcnNldGAgYXR0cmlidXRlIGlzIGEgc3lub255bSBmb3IgdGhlIHByZS1IVE1MNSBgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9X0lBTkFjaGFyc2V0XyI+YCwgd2hlcmUgX2BJQU5BY2hhcnNldGBfIGNvbnRhaW5zIHRoZSB2YWx1ZSBvZiB0aGUgZXF1aXZhbGVudCBbYGNoYXJzZXRgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvbWV0YSNhdHRyLWNoYXJzZXQpIGF0dHJpYnV0ZS4gVGhpcyBzeW50YXggaXMgc3RpbGwgYWxsb3dlZCwgYWx0aG91Z2ggbm8gbG9uZ2VyIHJlY29tbWVuZGVkLid9fSx7bmFtZToic2NoZW1lIixkZXNjcmlwdGlvbjoiVGhpcyBhdHRyaWJ1dGUgZGVmaW5lcyB0aGUgc2NoZW1lIGluIHdoaWNoIG1ldGFkYXRhIGlzIGRlc2NyaWJlZC4gQSBzY2hlbWUgaXMgYSBjb250ZXh0IGxlYWRpbmcgdG8gdGhlIGNvcnJlY3QgaW50ZXJwcmV0YXRpb25zIG9mIHRoZSBbYGNvbnRlbnRgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvbWV0YSNhdHRyLWNvbnRlbnQpIHZhbHVlLCBsaWtlIGEgZm9ybWF0LlxuXG4qKldhcm5pbmc6KiogRG8gbm90IHVzZSB0aGlzIHZhbHVlLCBhcyBpdCBpcyBvYnNvbGV0ZS4gVGhlcmUgaXMgbm8gcmVwbGFjZW1lbnQgYXMgdGhlcmUgd2FzIG5vIHJlYWwgdXNhZ2UgZm9yIGl0LiJ9XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvbWV0YSJ9XX0se25hbWU6InN0eWxlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgc3R5bGUgZWxlbWVudCBhbGxvd3MgYXV0aG9ycyB0byBlbWJlZCBzdHlsZSBpbmZvcm1hdGlvbiBpbiB0aGVpciBkb2N1bWVudHMuIFRoZSBzdHlsZSBlbGVtZW50IGlzIG9uZSBvZiBzZXZlcmFsIGlucHV0cyB0byB0aGUgc3R5bGluZyBwcm9jZXNzaW5nIG1vZGVsLiBUaGUgZWxlbWVudCBkb2VzIG5vdCByZXByZXNlbnQgY29udGVudCBmb3IgdGhlIHVzZXIuIn0sYXR0cmlidXRlczpbe25hbWU6Im1lZGlhIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGlzIGF0dHJpYnV0ZSBkZWZpbmVzIHdoaWNoIG1lZGlhIHRoZSBzdHlsZSBzaG91bGQgYmUgYXBwbGllZCB0by4gSXRzIHZhbHVlIGlzIGEgW21lZGlhIHF1ZXJ5XShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9HdWlkZS9DU1MvTWVkaWFfcXVlcmllcyksIHdoaWNoIGRlZmF1bHRzIHRvIGBhbGxgIGlmIHRoZSBhdHRyaWJ1dGUgaXMgbWlzc2luZy4ifX0se25hbWU6Im5vbmNlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJBIGNyeXB0b2dyYXBoaWMgbm9uY2UgKG51bWJlciB1c2VkIG9uY2UpIHVzZWQgdG8gd2hpdGVsaXN0IGlubGluZSBzdHlsZXMgaW4gYSBbc3R5bGUtc3JjIENvbnRlbnQtU2VjdXJpdHktUG9saWN5XShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVFRQL0hlYWRlcnMvQ29udGVudC1TZWN1cml0eS1Qb2xpY3kvc3R5bGUtc3JjKS4gVGhlIHNlcnZlciBtdXN0IGdlbmVyYXRlIGEgdW5pcXVlIG5vbmNlIHZhbHVlIGVhY2ggdGltZSBpdCB0cmFuc21pdHMgYSBwb2xpY3kuIEl0IGlzIGNyaXRpY2FsIHRvIHByb3ZpZGUgYSBub25jZSB0aGF0IGNhbm5vdCBiZSBndWVzc2VkIGFzIGJ5cGFzc2luZyBhIHJlc291cmNl4oCZcyBwb2xpY3kgaXMgb3RoZXJ3aXNlIHRyaXZpYWwuIn19LHtuYW1lOiJ0eXBlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGlzIGF0dHJpYnV0ZSBkZWZpbmVzIHRoZSBzdHlsaW5nIGxhbmd1YWdlIGFzIGEgTUlNRSB0eXBlIChjaGFyc2V0IHNob3VsZCBub3QgYmUgc3BlY2lmaWVkKS4gVGhpcyBhdHRyaWJ1dGUgaXMgb3B0aW9uYWwgYW5kIGRlZmF1bHRzIHRvIGB0ZXh0L2Nzc2AgaWYgaXQgaXMgbm90IHNwZWNpZmllZCDigJQgdGhlcmUgaXMgdmVyeSBsaXR0bGUgcmVhc29uIHRvIGluY2x1ZGUgdGhpcyBpbiBtb2Rlcm4gd2ViIGRvY3VtZW50cy4ifX0se25hbWU6InNjb3BlZCIsdmFsdWVTZXQ6InYifSx7bmFtZToidGl0bGUiLGRlc2NyaXB0aW9uOiJUaGlzIGF0dHJpYnV0ZSBzcGVjaWZpZXMgW2FsdGVybmF0aXZlIHN0eWxlIHNoZWV0XShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvQWx0ZXJuYXRpdmVfc3R5bGVfc2hlZXRzKSBzZXRzLiJ9XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvc3R5bGUifV19LHtuYW1lOiJib2R5IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgYm9keSBlbGVtZW50IHJlcHJlc2VudHMgdGhlIGNvbnRlbnQgb2YgdGhlIGRvY3VtZW50LiJ9LGF0dHJpYnV0ZXM6W3tuYW1lOiJvbmFmdGVycHJpbnQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkZ1bmN0aW9uIHRvIGNhbGwgYWZ0ZXIgdGhlIHVzZXIgaGFzIHByaW50ZWQgdGhlIGRvY3VtZW50LiJ9fSx7bmFtZToib25iZWZvcmVwcmludCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiRnVuY3Rpb24gdG8gY2FsbCB3aGVuIHRoZSB1c2VyIHJlcXVlc3RzIHByaW50aW5nIG9mIHRoZSBkb2N1bWVudC4ifX0se25hbWU6Im9uYmVmb3JldW5sb2FkIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJGdW5jdGlvbiB0byBjYWxsIHdoZW4gdGhlIGRvY3VtZW50IGlzIGFib3V0IHRvIGJlIHVubG9hZGVkLiJ9fSx7bmFtZToib25oYXNoY2hhbmdlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJGdW5jdGlvbiB0byBjYWxsIHdoZW4gdGhlIGZyYWdtZW50IGlkZW50aWZpZXIgcGFydCAoc3RhcnRpbmcgd2l0aCB0aGUgaGFzaCAoYCcjJ2ApIGNoYXJhY3Rlcikgb2YgdGhlIGRvY3VtZW50J3MgY3VycmVudCBhZGRyZXNzIGhhcyBjaGFuZ2VkLiJ9fSx7bmFtZToib25sYW5ndWFnZWNoYW5nZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiRnVuY3Rpb24gdG8gY2FsbCB3aGVuIHRoZSBwcmVmZXJyZWQgbGFuZ3VhZ2VzIGNoYW5nZWQuIn19LHtuYW1lOiJvbm1lc3NhZ2UiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkZ1bmN0aW9uIHRvIGNhbGwgd2hlbiB0aGUgZG9jdW1lbnQgaGFzIHJlY2VpdmVkIGEgbWVzc2FnZS4ifX0se25hbWU6Im9ub2ZmbGluZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiRnVuY3Rpb24gdG8gY2FsbCB3aGVuIG5ldHdvcmsgY29tbXVuaWNhdGlvbiBoYXMgZmFpbGVkLiJ9fSx7bmFtZToib25vbmxpbmUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkZ1bmN0aW9uIHRvIGNhbGwgd2hlbiBuZXR3b3JrIGNvbW11bmljYXRpb24gaGFzIGJlZW4gcmVzdG9yZWQuIn19LHtuYW1lOiJvbnBhZ2VoaWRlIn0se25hbWU6Im9ucGFnZXNob3cifSx7bmFtZToib25wb3BzdGF0ZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiRnVuY3Rpb24gdG8gY2FsbCB3aGVuIHRoZSB1c2VyIGhhcyBuYXZpZ2F0ZWQgc2Vzc2lvbiBoaXN0b3J5LiJ9fSx7bmFtZToib25zdG9yYWdlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJGdW5jdGlvbiB0byBjYWxsIHdoZW4gdGhlIHN0b3JhZ2UgYXJlYSBoYXMgY2hhbmdlZC4ifX0se25hbWU6Im9udW5sb2FkIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJGdW5jdGlvbiB0byBjYWxsIHdoZW4gdGhlIGRvY3VtZW50IGlzIGdvaW5nIGF3YXkuIn19LHtuYW1lOiJhbGluayIsZGVzY3JpcHRpb246J0NvbG9yIG9mIHRleHQgZm9yIGh5cGVybGlua3Mgd2hlbiBzZWxlY3RlZC4gX1RoaXMgbWV0aG9kIGlzIG5vbi1jb25mb3JtaW5nLCB1c2UgQ1NTIFtgY29sb3JgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvY29sb3IgIlRoZSBjb2xvciBDU1MgcHJvcGVydHkgc2V0cyB0aGUgZm9yZWdyb3VuZCBjb2xvciB2YWx1ZSBvZiBhbiBlbGVtZW50XCdzIHRleHQgYW5kIHRleHQgZGVjb3JhdGlvbnMsIGFuZCBzZXRzIHRoZSBjdXJyZW50Y29sb3IgdmFsdWUuIikgcHJvcGVydHkgaW4gY29uanVuY3Rpb24gd2l0aCB0aGUgW2A6YWN0aXZlYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTLzphY3RpdmUgIlRoZSA6YWN0aXZlIENTUyBwc2V1ZG8tY2xhc3MgcmVwcmVzZW50cyBhbiBlbGVtZW50IChzdWNoIGFzIGEgYnV0dG9uKSB0aGF0IGlzIGJlaW5nIGFjdGl2YXRlZCBieSB0aGUgdXNlci4iKSBwc2V1ZG8tY2xhc3MgaW5zdGVhZC5fJ30se25hbWU6ImJhY2tncm91bmQiLGRlc2NyaXB0aW9uOidVUkkgb2YgYSBpbWFnZSB0byB1c2UgYXMgYSBiYWNrZ3JvdW5kLiBfVGhpcyBtZXRob2QgaXMgbm9uLWNvbmZvcm1pbmcsIHVzZSBDU1MgW2BiYWNrZ3JvdW5kYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL2JhY2tncm91bmQgIlRoZSBiYWNrZ3JvdW5kIHNob3J0aGFuZCBDU1MgcHJvcGVydHkgc2V0cyBhbGwgYmFja2dyb3VuZCBzdHlsZSBwcm9wZXJ0aWVzIGF0IG9uY2UsIHN1Y2ggYXMgY29sb3IsIGltYWdlLCBvcmlnaW4gYW5kIHNpemUsIG9yIHJlcGVhdCBtZXRob2QuIikgcHJvcGVydHkgb24gdGhlIGVsZW1lbnQgaW5zdGVhZC5fJ30se25hbWU6ImJnY29sb3IiLGRlc2NyaXB0aW9uOidCYWNrZ3JvdW5kIGNvbG9yIGZvciB0aGUgZG9jdW1lbnQuIF9UaGlzIG1ldGhvZCBpcyBub24tY29uZm9ybWluZywgdXNlIENTUyBbYGJhY2tncm91bmQtY29sb3JgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvYmFja2dyb3VuZC1jb2xvciAiVGhlIGJhY2tncm91bmQtY29sb3IgQ1NTIHByb3BlcnR5IHNldHMgdGhlIGJhY2tncm91bmQgY29sb3Igb2YgYW4gZWxlbWVudC4iKSBwcm9wZXJ0eSBvbiB0aGUgZWxlbWVudCBpbnN0ZWFkLl8nfSx7bmFtZToiYm90dG9tbWFyZ2luIixkZXNjcmlwdGlvbjonVGhlIG1hcmdpbiBvZiB0aGUgYm90dG9tIG9mIHRoZSBib2R5LiBfVGhpcyBtZXRob2QgaXMgbm9uLWNvbmZvcm1pbmcsIHVzZSBDU1MgW2BtYXJnaW4tYm90dG9tYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL21hcmdpbi1ib3R0b20gIlRoZSBtYXJnaW4tYm90dG9tIENTUyBwcm9wZXJ0eSBzZXRzIHRoZSBtYXJnaW4gYXJlYSBvbiB0aGUgYm90dG9tIG9mIGFuIGVsZW1lbnQuIEEgcG9zaXRpdmUgdmFsdWUgcGxhY2VzIGl0IGZhcnRoZXIgZnJvbSBpdHMgbmVpZ2hib3JzLCB3aGlsZSBhIG5lZ2F0aXZlIHZhbHVlIHBsYWNlcyBpdCBjbG9zZXIuIikgcHJvcGVydHkgb24gdGhlIGVsZW1lbnQgaW5zdGVhZC5fJ30se25hbWU6ImxlZnRtYXJnaW4iLGRlc2NyaXB0aW9uOidUaGUgbWFyZ2luIG9mIHRoZSBsZWZ0IG9mIHRoZSBib2R5LiBfVGhpcyBtZXRob2QgaXMgbm9uLWNvbmZvcm1pbmcsIHVzZSBDU1MgW2BtYXJnaW4tbGVmdGBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9tYXJnaW4tbGVmdCAiVGhlIG1hcmdpbi1sZWZ0IENTUyBwcm9wZXJ0eSBzZXRzIHRoZSBtYXJnaW4gYXJlYSBvbiB0aGUgbGVmdCBzaWRlIG9mIGFuIGVsZW1lbnQuIEEgcG9zaXRpdmUgdmFsdWUgcGxhY2VzIGl0IGZhcnRoZXIgZnJvbSBpdHMgbmVpZ2hib3JzLCB3aGlsZSBhIG5lZ2F0aXZlIHZhbHVlIHBsYWNlcyBpdCBjbG9zZXIuIikgcHJvcGVydHkgb24gdGhlIGVsZW1lbnQgaW5zdGVhZC5fJ30se25hbWU6ImxpbmsiLGRlc2NyaXB0aW9uOidDb2xvciBvZiB0ZXh0IGZvciB1bnZpc2l0ZWQgaHlwZXJ0ZXh0IGxpbmtzLiBfVGhpcyBtZXRob2QgaXMgbm9uLWNvbmZvcm1pbmcsIHVzZSBDU1MgW2Bjb2xvcmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9jb2xvciAiVGhlIGNvbG9yIENTUyBwcm9wZXJ0eSBzZXRzIHRoZSBmb3JlZ3JvdW5kIGNvbG9yIHZhbHVlIG9mIGFuIGVsZW1lbnRcJ3MgdGV4dCBhbmQgdGV4dCBkZWNvcmF0aW9ucywgYW5kIHNldHMgdGhlIGN1cnJlbnRjb2xvciB2YWx1ZS4iKSBwcm9wZXJ0eSBpbiBjb25qdW5jdGlvbiB3aXRoIHRoZSBbYDpsaW5rYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTLzpsaW5rICJUaGUgOmxpbmsgQ1NTIHBzZXVkby1jbGFzcyByZXByZXNlbnRzIGFuIGVsZW1lbnQgdGhhdCBoYXMgbm90IHlldCBiZWVuIHZpc2l0ZWQuIEl0IG1hdGNoZXMgZXZlcnkgdW52aXNpdGVkIDxhPiwgPGFyZWE+LCBvciA8bGluaz4gZWxlbWVudCB0aGF0IGhhcyBhbiBocmVmIGF0dHJpYnV0ZS4iKSBwc2V1ZG8tY2xhc3MgaW5zdGVhZC5fJ30se25hbWU6Im9uYmx1ciIsZGVzY3JpcHRpb246IkZ1bmN0aW9uIHRvIGNhbGwgd2hlbiB0aGUgZG9jdW1lbnQgbG9zZXMgZm9jdXMuIn0se25hbWU6Im9uZXJyb3IiLGRlc2NyaXB0aW9uOiJGdW5jdGlvbiB0byBjYWxsIHdoZW4gdGhlIGRvY3VtZW50IGZhaWxzIHRvIGxvYWQgcHJvcGVybHkuIn0se25hbWU6Im9uZm9jdXMiLGRlc2NyaXB0aW9uOiJGdW5jdGlvbiB0byBjYWxsIHdoZW4gdGhlIGRvY3VtZW50IHJlY2VpdmVzIGZvY3VzLiJ9LHtuYW1lOiJvbmxvYWQiLGRlc2NyaXB0aW9uOiJGdW5jdGlvbiB0byBjYWxsIHdoZW4gdGhlIGRvY3VtZW50IGhhcyBmaW5pc2hlZCBsb2FkaW5nLiJ9LHtuYW1lOiJvbnJlZG8iLGRlc2NyaXB0aW9uOiJGdW5jdGlvbiB0byBjYWxsIHdoZW4gdGhlIHVzZXIgaGFzIG1vdmVkIGZvcndhcmQgaW4gdW5kbyB0cmFuc2FjdGlvbiBoaXN0b3J5LiJ9LHtuYW1lOiJvbnJlc2l6ZSIsZGVzY3JpcHRpb246IkZ1bmN0aW9uIHRvIGNhbGwgd2hlbiB0aGUgZG9jdW1lbnQgaGFzIGJlZW4gcmVzaXplZC4ifSx7bmFtZToib251bmRvIixkZXNjcmlwdGlvbjoiRnVuY3Rpb24gdG8gY2FsbCB3aGVuIHRoZSB1c2VyIGhhcyBtb3ZlZCBiYWNrd2FyZCBpbiB1bmRvIHRyYW5zYWN0aW9uIGhpc3RvcnkuIn0se25hbWU6InJpZ2h0bWFyZ2luIixkZXNjcmlwdGlvbjonVGhlIG1hcmdpbiBvZiB0aGUgcmlnaHQgb2YgdGhlIGJvZHkuIF9UaGlzIG1ldGhvZCBpcyBub24tY29uZm9ybWluZywgdXNlIENTUyBbYG1hcmdpbi1yaWdodGBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9tYXJnaW4tcmlnaHQgIlRoZSBtYXJnaW4tcmlnaHQgQ1NTIHByb3BlcnR5IHNldHMgdGhlIG1hcmdpbiBhcmVhIG9uIHRoZSByaWdodCBzaWRlIG9mIGFuIGVsZW1lbnQuIEEgcG9zaXRpdmUgdmFsdWUgcGxhY2VzIGl0IGZhcnRoZXIgZnJvbSBpdHMgbmVpZ2hib3JzLCB3aGlsZSBhIG5lZ2F0aXZlIHZhbHVlIHBsYWNlcyBpdCBjbG9zZXIuIikgcHJvcGVydHkgb24gdGhlIGVsZW1lbnQgaW5zdGVhZC5fJ30se25hbWU6InRleHQiLGRlc2NyaXB0aW9uOidGb3JlZ3JvdW5kIGNvbG9yIG9mIHRleHQuIF9UaGlzIG1ldGhvZCBpcyBub24tY29uZm9ybWluZywgdXNlIENTUyBbYGNvbG9yYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL2NvbG9yICJUaGUgY29sb3IgQ1NTIHByb3BlcnR5IHNldHMgdGhlIGZvcmVncm91bmQgY29sb3IgdmFsdWUgb2YgYW4gZWxlbWVudFwncyB0ZXh0IGFuZCB0ZXh0IGRlY29yYXRpb25zLCBhbmQgc2V0cyB0aGUgY3VycmVudGNvbG9yIHZhbHVlLiIpIHByb3BlcnR5IG9uIHRoZSBlbGVtZW50IGluc3RlYWQuXyd9LHtuYW1lOiJ0b3BtYXJnaW4iLGRlc2NyaXB0aW9uOidUaGUgbWFyZ2luIG9mIHRoZSB0b3Agb2YgdGhlIGJvZHkuIF9UaGlzIG1ldGhvZCBpcyBub24tY29uZm9ybWluZywgdXNlIENTUyBbYG1hcmdpbi10b3BgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvbWFyZ2luLXRvcCAiVGhlIG1hcmdpbi10b3AgQ1NTIHByb3BlcnR5IHNldHMgdGhlIG1hcmdpbiBhcmVhIG9uIHRoZSB0b3Agb2YgYW4gZWxlbWVudC4gQSBwb3NpdGl2ZSB2YWx1ZSBwbGFjZXMgaXQgZmFydGhlciBmcm9tIGl0cyBuZWlnaGJvcnMsIHdoaWxlIGEgbmVnYXRpdmUgdmFsdWUgcGxhY2VzIGl0IGNsb3Nlci4iKSBwcm9wZXJ0eSBvbiB0aGUgZWxlbWVudCBpbnN0ZWFkLl8nfSx7bmFtZToidmxpbmsiLGRlc2NyaXB0aW9uOidDb2xvciBvZiB0ZXh0IGZvciB2aXNpdGVkIGh5cGVydGV4dCBsaW5rcy4gX1RoaXMgbWV0aG9kIGlzIG5vbi1jb25mb3JtaW5nLCB1c2UgQ1NTIFtgY29sb3JgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvY29sb3IgIlRoZSBjb2xvciBDU1MgcHJvcGVydHkgc2V0cyB0aGUgZm9yZWdyb3VuZCBjb2xvciB2YWx1ZSBvZiBhbiBlbGVtZW50XCdzIHRleHQgYW5kIHRleHQgZGVjb3JhdGlvbnMsIGFuZCBzZXRzIHRoZSBjdXJyZW50Y29sb3IgdmFsdWUuIikgcHJvcGVydHkgaW4gY29uanVuY3Rpb24gd2l0aCB0aGUgW2A6dmlzaXRlZGBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy86dmlzaXRlZCAiVGhlIDp2aXNpdGVkIENTUyBwc2V1ZG8tY2xhc3MgcmVwcmVzZW50cyBsaW5rcyB0aGF0IHRoZSB1c2VyIGhhcyBhbHJlYWR5IHZpc2l0ZWQuIEZvciBwcml2YWN5IHJlYXNvbnMsIHRoZSBzdHlsZXMgdGhhdCBjYW4gYmUgbW9kaWZpZWQgdXNpbmcgdGhpcyBzZWxlY3RvciBhcmUgdmVyeSBsaW1pdGVkLiIpIHBzZXVkby1jbGFzcyBpbnN0ZWFkLl8nfV0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2JvZHkifV19LHtuYW1lOiJhcnRpY2xlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgYXJ0aWNsZSBlbGVtZW50IHJlcHJlc2VudHMgYSBjb21wbGV0ZSwgb3Igc2VsZi1jb250YWluZWQsIGNvbXBvc2l0aW9uIGluIGEgZG9jdW1lbnQsIHBhZ2UsIGFwcGxpY2F0aW9uLCBvciBzaXRlIGFuZCB0aGF0IGlzLCBpbiBwcmluY2lwbGUsIGluZGVwZW5kZW50bHkgZGlzdHJpYnV0YWJsZSBvciByZXVzYWJsZSwgZS5nLiBpbiBzeW5kaWNhdGlvbi4gVGhpcyBjb3VsZCBiZSBhIGZvcnVtIHBvc3QsIGEgbWFnYXppbmUgb3IgbmV3c3BhcGVyIGFydGljbGUsIGEgYmxvZyBlbnRyeSwgYSB1c2VyLXN1Ym1pdHRlZCBjb21tZW50LCBhbiBpbnRlcmFjdGl2ZSB3aWRnZXQgb3IgZ2FkZ2V0LCBvciBhbnkgb3RoZXIgaW5kZXBlbmRlbnQgaXRlbSBvZiBjb250ZW50LiBFYWNoIGFydGljbGUgc2hvdWxkIGJlIGlkZW50aWZpZWQsIHR5cGljYWxseSBieSBpbmNsdWRpbmcgYSBoZWFkaW5nIChoMeKAk2g2IGVsZW1lbnQpIGFzIGEgY2hpbGQgb2YgdGhlIGFydGljbGUgZWxlbWVudC4ifSxhdHRyaWJ1dGVzOltdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9hcnRpY2xlIn1dfSx7bmFtZToic2VjdGlvbiIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHNlY3Rpb24gZWxlbWVudCByZXByZXNlbnRzIGEgZ2VuZXJpYyBzZWN0aW9uIG9mIGEgZG9jdW1lbnQgb3IgYXBwbGljYXRpb24uIEEgc2VjdGlvbiwgaW4gdGhpcyBjb250ZXh0LCBpcyBhIHRoZW1hdGljIGdyb3VwaW5nIG9mIGNvbnRlbnQuIEVhY2ggc2VjdGlvbiBzaG91bGQgYmUgaWRlbnRpZmllZCwgdHlwaWNhbGx5IGJ5IGluY2x1ZGluZyBhIGhlYWRpbmcgKCBoMS0gaDYgZWxlbWVudCkgYXMgYSBjaGlsZCBvZiB0aGUgc2VjdGlvbiBlbGVtZW50LiJ9LGF0dHJpYnV0ZXM6W10scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3NlY3Rpb24ifV19LHtuYW1lOiJuYXYiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBuYXYgZWxlbWVudCByZXByZXNlbnRzIGEgc2VjdGlvbiBvZiBhIHBhZ2UgdGhhdCBsaW5rcyB0byBvdGhlciBwYWdlcyBvciB0byBwYXJ0cyB3aXRoaW4gdGhlIHBhZ2U6IGEgc2VjdGlvbiB3aXRoIG5hdmlnYXRpb24gbGlua3MuIn0sYXR0cmlidXRlczpbXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvbmF2In1dfSx7bmFtZToiYXNpZGUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBhc2lkZSBlbGVtZW50IHJlcHJlc2VudHMgYSBzZWN0aW9uIG9mIGEgcGFnZSB0aGF0IGNvbnNpc3RzIG9mIGNvbnRlbnQgdGhhdCBpcyB0YW5nZW50aWFsbHkgcmVsYXRlZCB0byB0aGUgY29udGVudCBhcm91bmQgdGhlIGFzaWRlIGVsZW1lbnQsIGFuZCB3aGljaCBjb3VsZCBiZSBjb25zaWRlcmVkIHNlcGFyYXRlIGZyb20gdGhhdCBjb250ZW50LiBTdWNoIHNlY3Rpb25zIGFyZSBvZnRlbiByZXByZXNlbnRlZCBhcyBzaWRlYmFycyBpbiBwcmludGVkIHR5cG9ncmFwaHkuIn0sYXR0cmlidXRlczpbXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvYXNpZGUifV19LHtuYW1lOiJoMSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGgxIGVsZW1lbnQgcmVwcmVzZW50cyBhIHNlY3Rpb24gaGVhZGluZy4ifSxhdHRyaWJ1dGVzOltdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9IZWFkaW5nX0VsZW1lbnRzIn1dfSx7bmFtZToiaDIiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBoMiBlbGVtZW50IHJlcHJlc2VudHMgYSBzZWN0aW9uIGhlYWRpbmcuIn0sYXR0cmlidXRlczpbXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvSGVhZGluZ19FbGVtZW50cyJ9XX0se25hbWU6ImgzIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgaDMgZWxlbWVudCByZXByZXNlbnRzIGEgc2VjdGlvbiBoZWFkaW5nLiJ9LGF0dHJpYnV0ZXM6W10scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L0hlYWRpbmdfRWxlbWVudHMifV19LHtuYW1lOiJoNCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGg0IGVsZW1lbnQgcmVwcmVzZW50cyBhIHNlY3Rpb24gaGVhZGluZy4ifSxhdHRyaWJ1dGVzOltdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9IZWFkaW5nX0VsZW1lbnRzIn1dfSx7bmFtZToiaDUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBoNSBlbGVtZW50IHJlcHJlc2VudHMgYSBzZWN0aW9uIGhlYWRpbmcuIn0sYXR0cmlidXRlczpbXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvSGVhZGluZ19FbGVtZW50cyJ9XX0se25hbWU6Img2IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgaDYgZWxlbWVudCByZXByZXNlbnRzIGEgc2VjdGlvbiBoZWFkaW5nLiJ9LGF0dHJpYnV0ZXM6W10scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L0hlYWRpbmdfRWxlbWVudHMifV19LHtuYW1lOiJoZWFkZXIiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBoZWFkZXIgZWxlbWVudCByZXByZXNlbnRzIGludHJvZHVjdG9yeSBjb250ZW50IGZvciBpdHMgbmVhcmVzdCBhbmNlc3RvciBzZWN0aW9uaW5nIGNvbnRlbnQgb3Igc2VjdGlvbmluZyByb290IGVsZW1lbnQuIEEgaGVhZGVyIHR5cGljYWxseSBjb250YWlucyBhIGdyb3VwIG9mIGludHJvZHVjdG9yeSBvciBuYXZpZ2F0aW9uYWwgYWlkcy4gV2hlbiB0aGUgbmVhcmVzdCBhbmNlc3RvciBzZWN0aW9uaW5nIGNvbnRlbnQgb3Igc2VjdGlvbmluZyByb290IGVsZW1lbnQgaXMgdGhlIGJvZHkgZWxlbWVudCwgdGhlbiBpdCBhcHBsaWVzIHRvIHRoZSB3aG9sZSBwYWdlLiJ9LGF0dHJpYnV0ZXM6W10scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2hlYWRlciJ9XX0se25hbWU6ImZvb3RlciIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGZvb3RlciBlbGVtZW50IHJlcHJlc2VudHMgYSBmb290ZXIgZm9yIGl0cyBuZWFyZXN0IGFuY2VzdG9yIHNlY3Rpb25pbmcgY29udGVudCBvciBzZWN0aW9uaW5nIHJvb3QgZWxlbWVudC4gQSBmb290ZXIgdHlwaWNhbGx5IGNvbnRhaW5zIGluZm9ybWF0aW9uIGFib3V0IGl0cyBzZWN0aW9uIHN1Y2ggYXMgd2hvIHdyb3RlIGl0LCBsaW5rcyB0byByZWxhdGVkIGRvY3VtZW50cywgY29weXJpZ2h0IGRhdGEsIGFuZCB0aGUgbGlrZS4ifSxhdHRyaWJ1dGVzOltdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9mb290ZXIifV19LHtuYW1lOiJhZGRyZXNzIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgYWRkcmVzcyBlbGVtZW50IHJlcHJlc2VudHMgdGhlIGNvbnRhY3QgaW5mb3JtYXRpb24gZm9yIGl0cyBuZWFyZXN0IGFydGljbGUgb3IgYm9keSBlbGVtZW50IGFuY2VzdG9yLiBJZiB0aGF0IGlzIHRoZSBib2R5IGVsZW1lbnQsIHRoZW4gdGhlIGNvbnRhY3QgaW5mb3JtYXRpb24gYXBwbGllcyB0byB0aGUgZG9jdW1lbnQgYXMgYSB3aG9sZS4ifSxhdHRyaWJ1dGVzOltdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9hZGRyZXNzIn1dfSx7bmFtZToicCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHAgZWxlbWVudCByZXByZXNlbnRzIGEgcGFyYWdyYXBoLiJ9LGF0dHJpYnV0ZXM6W10scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3AifV19LHtuYW1lOiJociIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGhyIGVsZW1lbnQgcmVwcmVzZW50cyBhIHBhcmFncmFwaC1sZXZlbCB0aGVtYXRpYyBicmVhaywgZS5nLiBhIHNjZW5lIGNoYW5nZSBpbiBhIHN0b3J5LCBvciBhIHRyYW5zaXRpb24gdG8gYW5vdGhlciB0b3BpYyB3aXRoaW4gYSBzZWN0aW9uIG9mIGEgcmVmZXJlbmNlIGJvb2suIn0sYXR0cmlidXRlczpbe25hbWU6ImFsaWduIixkZXNjcmlwdGlvbjoiU2V0cyB0aGUgYWxpZ25tZW50IG9mIHRoZSBydWxlIG9uIHRoZSBwYWdlLiBJZiBubyB2YWx1ZSBpcyBzcGVjaWZpZWQsIHRoZSBkZWZhdWx0IHZhbHVlIGlzIGBsZWZ0YC4ifSx7bmFtZToiY29sb3IiLGRlc2NyaXB0aW9uOiJTZXRzIHRoZSBjb2xvciBvZiB0aGUgcnVsZSB0aHJvdWdoIGNvbG9yIG5hbWUgb3IgaGV4YWRlY2ltYWwgdmFsdWUuIn0se25hbWU6Im5vc2hhZGUiLGRlc2NyaXB0aW9uOiJTZXRzIHRoZSBydWxlIHRvIGhhdmUgbm8gc2hhZGluZy4ifSx7bmFtZToic2l6ZSIsZGVzY3JpcHRpb246IlNldHMgdGhlIGhlaWdodCwgaW4gcGl4ZWxzLCBvZiB0aGUgcnVsZS4ifSx7bmFtZToid2lkdGgiLGRlc2NyaXB0aW9uOiJTZXRzIHRoZSBsZW5ndGggb2YgdGhlIHJ1bGUgb24gdGhlIHBhZ2UgdGhyb3VnaCBhIHBpeGVsIG9yIHBlcmNlbnRhZ2UgdmFsdWUuIn1dLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9ociJ9XX0se25hbWU6InByZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHByZSBlbGVtZW50IHJlcHJlc2VudHMgYSBibG9jayBvZiBwcmVmb3JtYXR0ZWQgdGV4dCwgaW4gd2hpY2ggc3RydWN0dXJlIGlzIHJlcHJlc2VudGVkIGJ5IHR5cG9ncmFwaGljIGNvbnZlbnRpb25zIHJhdGhlciB0aGFuIGJ5IGVsZW1lbnRzLiJ9LGF0dHJpYnV0ZXM6W3tuYW1lOiJjb2xzIixkZXNjcmlwdGlvbjonQ29udGFpbnMgdGhlIF9wcmVmZXJyZWRfIGNvdW50IG9mIGNoYXJhY3RlcnMgdGhhdCBhIGxpbmUgc2hvdWxkIGhhdmUuIEl0IHdhcyBhIG5vbi1zdGFuZGFyZCBzeW5vbnltIG9mIFtgd2lkdGhgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvcHJlI2F0dHItd2lkdGgpLiBUbyBhY2hpZXZlIHN1Y2ggYW4gZWZmZWN0LCB1c2UgQ1NTIFtgd2lkdGhgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1Mvd2lkdGggIlRoZSB3aWR0aCBDU1MgcHJvcGVydHkgc2V0cyBhbiBlbGVtZW50XCdzIHdpZHRoLiBCeSBkZWZhdWx0IGl0IHNldHMgdGhlIHdpZHRoIG9mIHRoZSBjb250ZW50IGFyZWEsIGJ1dCBpZiBib3gtc2l6aW5nIGlzIHNldCB0byBib3JkZXItYm94LCBpdCBzZXRzIHRoZSB3aWR0aCBvZiB0aGUgYm9yZGVyIGFyZWEuIikgaW5zdGVhZC4nfSx7bmFtZToid2lkdGgiLGRlc2NyaXB0aW9uOidDb250YWlucyB0aGUgX3ByZWZlcnJlZF8gY291bnQgb2YgY2hhcmFjdGVycyB0aGF0IGEgbGluZSBzaG91bGQgaGF2ZS4gVGhvdWdoIHRlY2huaWNhbGx5IHN0aWxsIGltcGxlbWVudGVkLCB0aGlzIGF0dHJpYnV0ZSBoYXMgbm8gdmlzdWFsIGVmZmVjdDsgdG8gYWNoaWV2ZSBzdWNoIGFuIGVmZmVjdCwgdXNlIENTUyBbYHdpZHRoYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL3dpZHRoICJUaGUgd2lkdGggQ1NTIHByb3BlcnR5IHNldHMgYW4gZWxlbWVudFwncyB3aWR0aC4gQnkgZGVmYXVsdCBpdCBzZXRzIHRoZSB3aWR0aCBvZiB0aGUgY29udGVudCBhcmVhLCBidXQgaWYgYm94LXNpemluZyBpcyBzZXQgdG8gYm9yZGVyLWJveCwgaXQgc2V0cyB0aGUgd2lkdGggb2YgdGhlIGJvcmRlciBhcmVhLiIpIGluc3RlYWQuJ30se25hbWU6IndyYXAiLGRlc2NyaXB0aW9uOidJcyBhIF9oaW50XyBpbmRpY2F0aW5nIGhvdyB0aGUgb3ZlcmZsb3cgbXVzdCBoYXBwZW4uIEluIG1vZGVybiBicm93c2VyIHRoaXMgaGludCBpcyBpZ25vcmVkIGFuZCBubyB2aXN1YWwgZWZmZWN0IHJlc3VsdHMgaW4gaXRzIHByZXNlbnQ7IHRvIGFjaGlldmUgc3VjaCBhbiBlZmZlY3QsIHVzZSBDU1MgW2B3aGl0ZS1zcGFjZWBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy93aGl0ZS1zcGFjZSAiVGhlIHdoaXRlLXNwYWNlIENTUyBwcm9wZXJ0eSBzZXRzIGhvdyB3aGl0ZSBzcGFjZSBpbnNpZGUgYW4gZWxlbWVudCBpcyBoYW5kbGVkLiIpIGluc3RlYWQuJ31dLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9wcmUifV19LHtuYW1lOiJibG9ja3F1b3RlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgYmxvY2txdW90ZSBlbGVtZW50IHJlcHJlc2VudHMgY29udGVudCB0aGF0IGlzIHF1b3RlZCBmcm9tIGFub3RoZXIgc291cmNlLCBvcHRpb25hbGx5IHdpdGggYSBjaXRhdGlvbiB3aGljaCBtdXN0IGJlIHdpdGhpbiBhIGZvb3RlciBvciBjaXRlIGVsZW1lbnQsIGFuZCBvcHRpb25hbGx5IHdpdGggaW4tbGluZSBjaGFuZ2VzIHN1Y2ggYXMgYW5ub3RhdGlvbnMgYW5kIGFiYnJldmlhdGlvbnMuIn0sYXR0cmlidXRlczpbe25hbWU6ImNpdGUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkEgVVJMIHRoYXQgZGVzaWduYXRlcyBhIHNvdXJjZSBkb2N1bWVudCBvciBtZXNzYWdlIGZvciB0aGUgaW5mb3JtYXRpb24gcXVvdGVkLiBUaGlzIGF0dHJpYnV0ZSBpcyBpbnRlbmRlZCB0byBwb2ludCB0byBpbmZvcm1hdGlvbiBleHBsYWluaW5nIHRoZSBjb250ZXh0IG9yIHRoZSByZWZlcmVuY2UgZm9yIHRoZSBxdW90ZS4ifX1dLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9ibG9ja3F1b3RlIn1dfSx7bmFtZToib2wiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBvbCBlbGVtZW50IHJlcHJlc2VudHMgYSBsaXN0IG9mIGl0ZW1zLCB3aGVyZSB0aGUgaXRlbXMgaGF2ZSBiZWVuIGludGVudGlvbmFsbHkgb3JkZXJlZCwgc3VjaCB0aGF0IGNoYW5naW5nIHRoZSBvcmRlciB3b3VsZCBjaGFuZ2UgdGhlIG1lYW5pbmcgb2YgdGhlIGRvY3VtZW50LiJ9LGF0dHJpYnV0ZXM6W3tuYW1lOiJyZXZlcnNlZCIsdmFsdWVTZXQ6InYiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoaXMgQm9vbGVhbiBhdHRyaWJ1dGUgc3BlY2lmaWVzIHRoYXQgdGhlIGl0ZW1zIG9mIHRoZSBsaXN0IGFyZSBzcGVjaWZpZWQgaW4gcmV2ZXJzZWQgb3JkZXIuIn19LHtuYW1lOiJzdGFydCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTonVGhpcyBpbnRlZ2VyIGF0dHJpYnV0ZSBzcGVjaWZpZXMgdGhlIHN0YXJ0IHZhbHVlIGZvciBudW1iZXJpbmcgdGhlIGluZGl2aWR1YWwgbGlzdCBpdGVtcy4gQWx0aG91Z2ggdGhlIG9yZGVyaW5nIHR5cGUgb2YgbGlzdCBlbGVtZW50cyBtaWdodCBiZSBSb21hbiBudW1lcmFscywgc3VjaCBhcyBYWFhJLCBvciBsZXR0ZXJzLCB0aGUgdmFsdWUgb2Ygc3RhcnQgaXMgYWx3YXlzIHJlcHJlc2VudGVkIGFzIGEgbnVtYmVyLiBUbyBzdGFydCBudW1iZXJpbmcgZWxlbWVudHMgZnJvbSB0aGUgbGV0dGVyICJDIiwgdXNlIGA8b2wgc3RhcnQ9IjMiPmAuXG5cbioqTm90ZSoqOiBUaGlzIGF0dHJpYnV0ZSB3YXMgZGVwcmVjYXRlZCBpbiBIVE1MNCwgYnV0IHJlaW50cm9kdWNlZCBpbiBIVE1MNS4nfX0se25hbWU6InR5cGUiLHZhbHVlU2V0OiJsdCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiSW5kaWNhdGVzIHRoZSBudW1iZXJpbmcgdHlwZTpcblxuKiAgIGAnYSdgIGluZGljYXRlcyBsb3dlcmNhc2UgbGV0dGVycyxcbiogICBgJ0EnYCBpbmRpY2F0ZXMgdXBwZXJjYXNlIGxldHRlcnMsXG4qICAgYCdpJ2AgaW5kaWNhdGVzIGxvd2VyY2FzZSBSb21hbiBudW1lcmFscyxcbiogICBgJ0knYCBpbmRpY2F0ZXMgdXBwZXJjYXNlIFJvbWFuIG51bWVyYWxzLFxuKiAgIGFuZCBgJzEnYCBpbmRpY2F0ZXMgbnVtYmVycyAoZGVmYXVsdCkuXG5cblRoZSB0eXBlIHNldCBpcyB1c2VkIGZvciB0aGUgZW50aXJlIGxpc3QgdW5sZXNzIGEgZGlmZmVyZW50IFtgdHlwZWBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9saSNhdHRyLXR5cGUpIGF0dHJpYnV0ZSBpcyB1c2VkIHdpdGhpbiBhbiBlbmNsb3NlZCBbYDxsaT5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvbGkgXCJUaGUgSFRNTCA8bGk+IGVsZW1lbnQgaXMgdXNlZCB0byByZXByZXNlbnQgYW4gaXRlbSBpbiBhIGxpc3QuIEl0IG11c3QgYmUgY29udGFpbmVkIGluIGEgcGFyZW50IGVsZW1lbnQ6IGFuIG9yZGVyZWQgbGlzdCAoPG9sPiksIGFuIHVub3JkZXJlZCBsaXN0ICg8dWw+KSwgb3IgYSBtZW51ICg8bWVudT4pLiBJbiBtZW51cyBhbmQgdW5vcmRlcmVkIGxpc3RzLCBsaXN0IGl0ZW1zIGFyZSB1c3VhbGx5IGRpc3BsYXllZCB1c2luZyBidWxsZXQgcG9pbnRzLiBJbiBvcmRlcmVkIGxpc3RzLCB0aGV5IGFyZSB1c3VhbGx5IGRpc3BsYXllZCB3aXRoIGFuIGFzY2VuZGluZyBjb3VudGVyIG9uIHRoZSBsZWZ0LCBzdWNoIGFzIGEgbnVtYmVyIG9yIGxldHRlci5cIikgZWxlbWVudC5cblxuKipOb3RlOioqIFRoaXMgYXR0cmlidXRlIHdhcyBkZXByZWNhdGVkIGluIEhUTUw0LCBidXQgcmVpbnRyb2R1Y2VkIGluIEhUTUw1LlxuXG5Vbmxlc3MgdGhlIHZhbHVlIG9mIHRoZSBsaXN0IG51bWJlciBtYXR0ZXJzIChlLmcuIGluIGxlZ2FsIG9yIHRlY2huaWNhbCBkb2N1bWVudHMgd2hlcmUgaXRlbXMgYXJlIHRvIGJlIHJlZmVyZW5jZWQgYnkgdGhlaXIgbnVtYmVyL2xldHRlciksIHRoZSBDU1MgW2BsaXN0LXN0eWxlLXR5cGVgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvbGlzdC1zdHlsZS10eXBlIFwiVGhlIGxpc3Qtc3R5bGUtdHlwZSBDU1MgcHJvcGVydHkgc2V0cyB0aGUgbWFya2VyIChzdWNoIGFzIGEgZGlzYywgY2hhcmFjdGVyLCBvciBjdXN0b20gY291bnRlciBzdHlsZSkgb2YgYSBsaXN0IGl0ZW0gZWxlbWVudC5cIikgcHJvcGVydHkgc2hvdWxkIGJlIHVzZWQgaW5zdGVhZC4ifX0se25hbWU6ImNvbXBhY3QiLGRlc2NyaXB0aW9uOidUaGlzIEJvb2xlYW4gYXR0cmlidXRlIGhpbnRzIHRoYXQgdGhlIGxpc3Qgc2hvdWxkIGJlIHJlbmRlcmVkIGluIGEgY29tcGFjdCBzdHlsZS4gVGhlIGludGVycHJldGF0aW9uIG9mIHRoaXMgYXR0cmlidXRlIGRlcGVuZHMgb24gdGhlIHVzZXIgYWdlbnQgYW5kIGl0IGRvZXNuXCd0IHdvcmsgaW4gYWxsIGJyb3dzZXJzLlxuXG4qKldhcm5pbmc6KiogRG8gbm90IHVzZSB0aGlzIGF0dHJpYnV0ZSwgYXMgaXQgaGFzIGJlZW4gZGVwcmVjYXRlZDogdGhlIFtgPG9sPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9vbCAiVGhlIEhUTUwgPG9sPiBlbGVtZW50IHJlcHJlc2VudHMgYW4gb3JkZXJlZCBsaXN0IG9mIGl0ZW1zLCB0eXBpY2FsbHkgcmVuZGVyZWQgYXMgYSBudW1iZXJlZCBsaXN0LiIpIGVsZW1lbnQgc2hvdWxkIGJlIHN0eWxlZCB1c2luZyBbQ1NTXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0NTUykuIFRvIGdpdmUgYW4gZWZmZWN0IHNpbWlsYXIgdG8gdGhlIGBjb21wYWN0YCBhdHRyaWJ1dGUsIHRoZSBbQ1NTXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0NTUykgcHJvcGVydHkgW2BsaW5lLWhlaWdodGBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9saW5lLWhlaWdodCAiVGhlIGxpbmUtaGVpZ2h0IENTUyBwcm9wZXJ0eSBzZXRzIHRoZSBhbW91bnQgb2Ygc3BhY2UgdXNlZCBmb3IgbGluZXMsIHN1Y2ggYXMgaW4gdGV4dC4gT24gYmxvY2stbGV2ZWwgZWxlbWVudHMsIGl0IHNwZWNpZmllcyB0aGUgbWluaW11bSBoZWlnaHQgb2YgbGluZSBib3hlcyB3aXRoaW4gdGhlIGVsZW1lbnQuIE9uIG5vbi1yZXBsYWNlZCBpbmxpbmUgZWxlbWVudHMsIGl0IHNwZWNpZmllcyB0aGUgaGVpZ2h0IHRoYXQgaXMgdXNlZCB0byBjYWxjdWxhdGUgbGluZSBib3ggaGVpZ2h0LiIpIGNhbiBiZSB1c2VkIHdpdGggYSB2YWx1ZSBvZiBgODAlYC4nfV0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L29sIn1dfSx7bmFtZToidWwiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSB1bCBlbGVtZW50IHJlcHJlc2VudHMgYSBsaXN0IG9mIGl0ZW1zLCB3aGVyZSB0aGUgb3JkZXIgb2YgdGhlIGl0ZW1zIGlzIG5vdCBpbXBvcnRhbnQg4oCUIHRoYXQgaXMsIHdoZXJlIGNoYW5naW5nIHRoZSBvcmRlciB3b3VsZCBub3QgbWF0ZXJpYWxseSBjaGFuZ2UgdGhlIG1lYW5pbmcgb2YgdGhlIGRvY3VtZW50LiJ9LGF0dHJpYnV0ZXM6W3tuYW1lOiJjb21wYWN0IixkZXNjcmlwdGlvbjonVGhpcyBCb29sZWFuIGF0dHJpYnV0ZSBoaW50cyB0aGF0IHRoZSBsaXN0IHNob3VsZCBiZSByZW5kZXJlZCBpbiBhIGNvbXBhY3Qgc3R5bGUuIFRoZSBpbnRlcnByZXRhdGlvbiBvZiB0aGlzIGF0dHJpYnV0ZSBkZXBlbmRzIG9uIHRoZSB1c2VyIGFnZW50IGFuZCBpdCBkb2VzblwndCB3b3JrIGluIGFsbCBicm93c2Vycy5cblxuKipVc2FnZSBub3RlOsKgKipEbyBub3QgdXNlIHRoaXMgYXR0cmlidXRlLCBhcyBpdCBoYXMgYmVlbiBkZXByZWNhdGVkOiB0aGUgW2A8dWw+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3VsICJUaGUgSFRNTCA8dWw+IGVsZW1lbnQgcmVwcmVzZW50cyBhbiB1bm9yZGVyZWQgbGlzdCBvZiBpdGVtcywgdHlwaWNhbGx5IHJlbmRlcmVkIGFzIGEgYnVsbGV0ZWQgbGlzdC4iKSBlbGVtZW50IHNob3VsZCBiZSBzdHlsZWQgdXNpbmcgW0NTU10oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9DU1MpLiBUbyBnaXZlIGEgc2ltaWxhciBlZmZlY3QgYXMgdGhlIGBjb21wYWN0YCBhdHRyaWJ1dGUsIHRoZSBbQ1NTXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0NTUykgcHJvcGVydHkgW2xpbmUtaGVpZ2h0XShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0NTUy9saW5lLWhlaWdodCkgY2FuIGJlIHVzZWQgd2l0aCBhIHZhbHVlIG9mIGA4MCVgLid9XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvdWwifV19LHtuYW1lOiJsaSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGxpIGVsZW1lbnQgcmVwcmVzZW50cyBhIGxpc3QgaXRlbS4gSWYgaXRzIHBhcmVudCBlbGVtZW50IGlzIGFuIG9sLCB1bCwgb3IgbWVudSBlbGVtZW50LCB0aGVuIHRoZSBlbGVtZW50IGlzIGFuIGl0ZW0gb2YgdGhlIHBhcmVudCBlbGVtZW50J3MgbGlzdCwgYXMgZGVmaW5lZCBmb3IgdGhvc2UgZWxlbWVudHMuIE90aGVyd2lzZSwgdGhlIGxpc3QgaXRlbSBoYXMgbm8gZGVmaW5lZCBsaXN0LXJlbGF0ZWQgcmVsYXRpb25zaGlwIHRvIGFueSBvdGhlciBsaSBlbGVtZW50LiJ9LGF0dHJpYnV0ZXM6W3tuYW1lOiJ2YWx1ZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTonVGhpcyBpbnRlZ2VyIGF0dHJpYnV0ZSBpbmRpY2F0ZXMgdGhlIGN1cnJlbnQgb3JkaW5hbCB2YWx1ZSBvZiB0aGUgbGlzdCBpdGVtIGFzIGRlZmluZWQgYnkgdGhlIFtgPG9sPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9vbCAiVGhlIEhUTUwgPG9sPiBlbGVtZW50IHJlcHJlc2VudHMgYW4gb3JkZXJlZCBsaXN0IG9mIGl0ZW1zLCB0eXBpY2FsbHkgcmVuZGVyZWQgYXMgYSBudW1iZXJlZCBsaXN0LiIpIGVsZW1lbnQuIFRoZSBvbmx5IGFsbG93ZWQgdmFsdWUgZm9yIHRoaXMgYXR0cmlidXRlIGlzIGEgbnVtYmVyLCBldmVuIGlmIHRoZSBsaXN0IGlzIGRpc3BsYXllZCB3aXRoIFJvbWFuIG51bWVyYWxzIG9yIGxldHRlcnMuIExpc3QgaXRlbXMgdGhhdCBmb2xsb3cgdGhpcyBvbmUgY29udGludWUgbnVtYmVyaW5nIGZyb20gdGhlIHZhbHVlIHNldC4gVGhlICoqdmFsdWUqKiBhdHRyaWJ1dGUgaGFzIG5vIG1lYW5pbmcgZm9yIHVub3JkZXJlZCBsaXN0cyAoW2A8dWw+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3VsICJUaGUgSFRNTCA8dWw+IGVsZW1lbnQgcmVwcmVzZW50cyBhbiB1bm9yZGVyZWQgbGlzdCBvZiBpdGVtcywgdHlwaWNhbGx5IHJlbmRlcmVkIGFzIGEgYnVsbGV0ZWQgbGlzdC4iKSkgb3IgZm9yIG1lbnVzIChbYDxtZW51PmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9tZW51ICJUaGUgSFRNTCA8bWVudT4gZWxlbWVudCByZXByZXNlbnRzIGEgZ3JvdXAgb2YgY29tbWFuZHMgdGhhdCBhIHVzZXIgY2FuIHBlcmZvcm0gb3IgYWN0aXZhdGUuIFRoaXMgaW5jbHVkZXMgYm90aCBsaXN0IG1lbnVzLCB3aGljaCBtaWdodCBhcHBlYXIgYWNyb3NzIHRoZSB0b3Agb2YgYSBzY3JlZW4sIGFzIHdlbGwgYXMgY29udGV4dCBtZW51cywgc3VjaCBhcyB0aG9zZSB0aGF0IG1pZ2h0IGFwcGVhciB1bmRlcm5lYXRoIGEgYnV0dG9uIGFmdGVyIGl0IGhhcyBiZWVuIGNsaWNrZWQuIikpLlxuXG4qKk5vdGUqKjogVGhpcyBhdHRyaWJ1dGUgd2FzIGRlcHJlY2F0ZWQgaW4gSFRNTDQsIGJ1dCByZWludHJvZHVjZWQgaW4gSFRNTDUuXG5cbioqTm90ZToqKiBQcmlvciB0byBHZWNrb8KgOS4wLCBuZWdhdGl2ZSB2YWx1ZXMgd2VyZSBpbmNvcnJlY3RseSBjb252ZXJ0ZWQgdG8gMC4gU3RhcnRpbmcgaW4gR2Vja2/CoDkuMCBhbGwgaW50ZWdlciB2YWx1ZXMgYXJlIGNvcnJlY3RseSBwYXJzZWQuJ319LHtuYW1lOiJ0eXBlIixkZXNjcmlwdGlvbjonVGhpcyBjaGFyYWN0ZXIgYXR0cmlidXRlIGluZGljYXRlcyB0aGUgbnVtYmVyaW5nIHR5cGU6XG5cbiogICBgYWA6IGxvd2VyY2FzZSBsZXR0ZXJzXG4qICAgYEFgOiB1cHBlcmNhc2UgbGV0dGVyc1xuKiAgIGBpYDogbG93ZXJjYXNlIFJvbWFuIG51bWVyYWxzXG4qICAgYElgOiB1cHBlcmNhc2UgUm9tYW4gbnVtZXJhbHNcbiogICBgMWA6IG51bWJlcnNcblxuVGhpcyB0eXBlIG92ZXJyaWRlcyB0aGUgb25lIHVzZWQgYnkgaXRzIHBhcmVudCBbYDxvbD5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvb2wgIlRoZSBIVE1MIDxvbD4gZWxlbWVudCByZXByZXNlbnRzIGFuIG9yZGVyZWQgbGlzdCBvZiBpdGVtcywgdHlwaWNhbGx5IHJlbmRlcmVkIGFzIGEgbnVtYmVyZWQgbGlzdC4iKSBlbGVtZW50LCBpZiBhbnkuXG5cbioqVXNhZ2Ugbm90ZToqKiBUaGlzIGF0dHJpYnV0ZSBoYXMgYmVlbiBkZXByZWNhdGVkOiB1c2UgdGhlIENTUyBbYGxpc3Qtc3R5bGUtdHlwZWBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9saXN0LXN0eWxlLXR5cGUgIlRoZSBsaXN0LXN0eWxlLXR5cGUgQ1NTIHByb3BlcnR5IHNldHMgdGhlIG1hcmtlciAoc3VjaCBhcyBhIGRpc2MsIGNoYXJhY3Rlciwgb3IgY3VzdG9tIGNvdW50ZXIgc3R5bGUpIG9mIGEgbGlzdCBpdGVtIGVsZW1lbnQuIikgcHJvcGVydHkgaW5zdGVhZC4nfV0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2xpIn1dfSx7bmFtZToiZGwiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBkbCBlbGVtZW50IHJlcHJlc2VudHMgYW4gYXNzb2NpYXRpb24gbGlzdCBjb25zaXN0aW5nIG9mIHplcm8gb3IgbW9yZSBuYW1lLXZhbHVlIGdyb3VwcyAoYSBkZXNjcmlwdGlvbiBsaXN0KS4gQSBuYW1lLXZhbHVlIGdyb3VwIGNvbnNpc3RzIG9mIG9uZSBvciBtb3JlIG5hbWVzIChkdCBlbGVtZW50cykgZm9sbG93ZWQgYnkgb25lIG9yIG1vcmUgdmFsdWVzIChkZCBlbGVtZW50cyksIGlnbm9yaW5nIGFueSBub2RlcyBvdGhlciB0aGFuIGR0IGFuZCBkZCBlbGVtZW50cy4gV2l0aGluIGEgc2luZ2xlIGRsIGVsZW1lbnQsIHRoZXJlIHNob3VsZCBub3QgYmUgbW9yZSB0aGFuIG9uZSBkdCBlbGVtZW50IGZvciBlYWNoIG5hbWUuIn0sYXR0cmlidXRlczpbXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvZGwifV19LHtuYW1lOiJkdCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGR0IGVsZW1lbnQgcmVwcmVzZW50cyB0aGUgdGVybSwgb3IgbmFtZSwgcGFydCBvZiBhIHRlcm0tZGVzY3JpcHRpb24gZ3JvdXAgaW4gYSBkZXNjcmlwdGlvbiBsaXN0IChkbCBlbGVtZW50KS4ifSxhdHRyaWJ1dGVzOltdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9kdCJ9XX0se25hbWU6ImRkIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgZGQgZWxlbWVudCByZXByZXNlbnRzIHRoZSBkZXNjcmlwdGlvbiwgZGVmaW5pdGlvbiwgb3IgdmFsdWUsIHBhcnQgb2YgYSB0ZXJtLWRlc2NyaXB0aW9uIGdyb3VwIGluIGEgZGVzY3JpcHRpb24gbGlzdCAoZGwgZWxlbWVudCkuIn0sYXR0cmlidXRlczpbe25hbWU6Im5vd3JhcCIsZGVzY3JpcHRpb246IklmIHRoZSB2YWx1ZSBvZiB0aGlzIGF0dHJpYnV0ZSBpcyBzZXQgdG8gYHllc2AsIHRoZSBkZWZpbml0aW9uIHRleHQgd2lsbCBub3Qgd3JhcC4gVGhlIGRlZmF1bHQgdmFsdWUgaXMgYG5vYC4ifV0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2RkIn1dfSx7bmFtZToiZmlndXJlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgZmlndXJlIGVsZW1lbnQgcmVwcmVzZW50cyBzb21lIGZsb3cgY29udGVudCwgb3B0aW9uYWxseSB3aXRoIGEgY2FwdGlvbiwgdGhhdCBpcyBzZWxmLWNvbnRhaW5lZCAobGlrZSBhIGNvbXBsZXRlIHNlbnRlbmNlKSBhbmQgaXMgdHlwaWNhbGx5IHJlZmVyZW5jZWQgYXMgYSBzaW5nbGUgdW5pdCBmcm9tIHRoZSBtYWluIGZsb3cgb2YgdGhlIGRvY3VtZW50LiJ9LGF0dHJpYnV0ZXM6W10scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2ZpZ3VyZSJ9XX0se25hbWU6ImZpZ2NhcHRpb24iLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBmaWdjYXB0aW9uIGVsZW1lbnQgcmVwcmVzZW50cyBhIGNhcHRpb24gb3IgbGVnZW5kIGZvciB0aGUgcmVzdCBvZiB0aGUgY29udGVudHMgb2YgdGhlIGZpZ2NhcHRpb24gZWxlbWVudCdzIHBhcmVudCBmaWd1cmUgZWxlbWVudCwgaWYgYW55LiJ9LGF0dHJpYnV0ZXM6W10scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2ZpZ2NhcHRpb24ifV19LHtuYW1lOiJtYWluIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgbWFpbiBlbGVtZW50IHJlcHJlc2VudHMgdGhlIG1haW4gY29udGVudCBvZiB0aGUgYm9keSBvZiBhIGRvY3VtZW50IG9yIGFwcGxpY2F0aW9uLiBUaGUgbWFpbiBjb250ZW50IGFyZWEgY29uc2lzdHMgb2YgY29udGVudCB0aGF0IGlzIGRpcmVjdGx5IHJlbGF0ZWQgdG8gb3IgZXhwYW5kcyB1cG9uIHRoZSBjZW50cmFsIHRvcGljIG9mIGEgZG9jdW1lbnQgb3IgY2VudHJhbCBmdW5jdGlvbmFsaXR5IG9mIGFuIGFwcGxpY2F0aW9uLiJ9LGF0dHJpYnV0ZXM6W10scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L21haW4ifV19LHtuYW1lOiJkaXYiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBkaXYgZWxlbWVudCBoYXMgbm8gc3BlY2lhbCBtZWFuaW5nIGF0IGFsbC4gSXQgcmVwcmVzZW50cyBpdHMgY2hpbGRyZW4uIEl0IGNhbiBiZSB1c2VkIHdpdGggdGhlIGNsYXNzLCBsYW5nLCBhbmQgdGl0bGUgYXR0cmlidXRlcyB0byBtYXJrIHVwIHNlbWFudGljcyBjb21tb24gdG8gYSBncm91cCBvZiBjb25zZWN1dGl2ZSBlbGVtZW50cy4ifSxhdHRyaWJ1dGVzOltdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9kaXYifV19LHtuYW1lOiJhIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJJZiB0aGUgYSBlbGVtZW50IGhhcyBhbiBocmVmIGF0dHJpYnV0ZSwgdGhlbiBpdCByZXByZXNlbnRzIGEgaHlwZXJsaW5rIChhIGh5cGVydGV4dCBhbmNob3IpIGxhYmVsZWQgYnkgaXRzIGNvbnRlbnRzLiJ9LGF0dHJpYnV0ZXM6W3tuYW1lOiJocmVmIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJDb250YWlucyBhIFVSTCBvciBhIFVSTCBmcmFnbWVudCB0aGF0IHRoZSBoeXBlcmxpbmsgcG9pbnRzIHRvLiJ9fSx7bmFtZToidGFyZ2V0IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOidTcGVjaWZpZXMgd2hlcmUgdG8gZGlzcGxheSB0aGUgbGlua2VkIFVSTC4gSXQgaXMgYSBuYW1lIG9mLCBvciBrZXl3b3JkIGZvciwgYSBfYnJvd3NpbmcgY29udGV4dF86IGEgdGFiLCB3aW5kb3csIG9yIGA8aWZyYW1lPmAuIFRoZSBmb2xsb3dpbmcga2V5d29yZHMgaGF2ZSBzcGVjaWFsIG1lYW5pbmdzOlxuXG4qICAgYF9zZWxmYDogTG9hZCB0aGUgVVJMIGludG8gdGhlIHNhbWUgYnJvd3NpbmcgY29udGV4dCBhcyB0aGUgY3VycmVudCBvbmUuIFRoaXMgaXMgdGhlIGRlZmF1bHQgYmVoYXZpb3IuXG4qICAgYF9ibGFua2A6IExvYWQgdGhlIFVSTCBpbnRvIGEgbmV3IGJyb3dzaW5nIGNvbnRleHQuIFRoaXMgaXMgdXN1YWxseSBhIHRhYiwgYnV0IHVzZXJzIGNhbiBjb25maWd1cmUgYnJvd3NlcnMgdG8gdXNlIG5ldyB3aW5kb3dzIGluc3RlYWQuXG4qICAgYF9wYXJlbnRgOiBMb2FkIHRoZSBVUkwgaW50byB0aGUgcGFyZW50IGJyb3dzaW5nIGNvbnRleHQgb2YgdGhlIGN1cnJlbnQgb25lLiBJZiB0aGVyZSBpcyBubyBwYXJlbnQsIHRoaXMgYmVoYXZlcyB0aGUgc2FtZSB3YXkgYXMgYF9zZWxmYC5cbiogICBgX3RvcGA6IExvYWQgdGhlIFVSTCBpbnRvIHRoZSB0b3AtbGV2ZWwgYnJvd3NpbmcgY29udGV4dCAodGhhdCBpcywgdGhlICJoaWdoZXN0IiBicm93c2luZyBjb250ZXh0IHRoYXQgaXMgYW4gYW5jZXN0b3Igb2YgdGhlIGN1cnJlbnQgb25lLCBhbmQgaGFzIG5vIHBhcmVudCkuIElmIHRoZXJlIGlzIG5vIHBhcmVudCwgdGhpcyBiZWhhdmVzIHRoZSBzYW1lIHdheSBhcyBgX3NlbGZgLlxuXG4qKk5vdGU6KiogV2hlbiB1c2luZyBgdGFyZ2V0YCwgY29uc2lkZXIgYWRkaW5nIGByZWw9Im5vcmVmZXJyZXIiYCB0byBhdm9pZCBleHBsb2l0YXRpb24gb2YgdGhlIGB3aW5kb3cub3BlbmVyYCBBUEkuXG5cbioqTm90ZToqKiBMaW5raW5nIHRvIGFub3RoZXIgcGFnZSB1c2luZyBgdGFyZ2V0PSJfYmxhbmsiYCB3aWxsIHJ1biB0aGUgbmV3IHBhZ2Ugb24gdGhlIHNhbWUgcHJvY2VzcyBhcyB5b3VyIHBhZ2UuIElmIHRoZSBuZXcgcGFnZSBpcyBleGVjdXRpbmcgZXhwZW5zaXZlIEpTLCB5b3VyIHBhZ2VcJ3MgcGVyZm9ybWFuY2UgbWF5IHN1ZmZlci4gVG8gYXZvaWQgdGhpcyB1c2UgYHJlbD0ibm9vcGVuZXIiYC4nfX0se25hbWU6ImRvd25sb2FkIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGlzIGF0dHJpYnV0ZSBpbnN0cnVjdHMgYnJvd3NlcnMgdG8gZG93bmxvYWQgYSBVUkwgaW5zdGVhZCBvZiBuYXZpZ2F0aW5nIHRvIGl0LCBzbyB0aGUgdXNlciB3aWxsIGJlIHByb21wdGVkIHRvIHNhdmUgaXQgYXMgYSBsb2NhbCBmaWxlLiBJZiB0aGUgYXR0cmlidXRlIGhhcyBhIHZhbHVlLCBpdCBpcyB1c2VkIGFzIHRoZSBwcmUtZmlsbGVkIGZpbGUgbmFtZSBpbiB0aGUgU2F2ZSBwcm9tcHQgKHRoZSB1c2VyIGNhbiBzdGlsbCBjaGFuZ2UgdGhlIGZpbGUgbmFtZSBpZiB0aGV5IHdhbnQpLiBUaGVyZSBhcmUgbm8gcmVzdHJpY3Rpb25zIG9uIGFsbG93ZWQgdmFsdWVzLCB0aG91Z2ggYC9gIGFuZCBgXFxgIGFyZSBjb252ZXJ0ZWQgdG8gdW5kZXJzY29yZXMuIE1vc3QgZmlsZSBzeXN0ZW1zIGxpbWl0IHNvbWUgcHVuY3R1YXRpb24gaW4gZmlsZSBuYW1lcywgYW5kIGJyb3dzZXJzIHdpbGwgYWRqdXN0IHRoZSBzdWdnZXN0ZWQgbmFtZSBhY2NvcmRpbmdseS5cblxuKipOb3RlczoqKlxuXG4qICAgVGhpcyBhdHRyaWJ1dGUgb25seSB3b3JrcyBmb3IgW3NhbWUtb3JpZ2luIFVSTHNdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL1NlY3VyaXR5L1NhbWUtb3JpZ2luX3BvbGljeSkuXG4qICAgQWx0aG91Z2ggSFRUUChzKSBVUkxzIG5lZWQgdG8gYmUgaW4gdGhlIHNhbWUtb3JpZ2luLCBbYGJsb2I6YCBVUkxzXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvVVJMLmNyZWF0ZU9iamVjdFVSTCkgYW5kIFtgZGF0YTpgIFVSTHNdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUVFAvQmFzaWNzX29mX0hUVFAvRGF0YV9VUklzKSBhcmUgYWxsb3dlZCBzbyB0aGF0IGNvbnRlbnQgZ2VuZXJhdGVkIGJ5IEphdmFTY3JpcHQsIHN1Y2ggYXMgcGljdHVyZXMgY3JlYXRlZCBpbiBhbiBpbWFnZS1lZGl0b3IgV2ViIGFwcCwgY2FuIGJlIGRvd25sb2FkZWQuXG4qICAgSWYgdGhlIEhUVFAgaGVhZGVyIFtgQ29udGVudC1EaXNwb3NpdGlvbjpgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVFRQL0hlYWRlcnMvQ29udGVudC1EaXNwb3NpdGlvbikgZ2l2ZXMgYSBkaWZmZXJlbnQgZmlsZW5hbWUgdGhhbiB0aGlzIGF0dHJpYnV0ZSwgdGhlIEhUVFAgaGVhZGVyIHRha2VzIHByaW9yaXR5IG92ZXIgdGhpcyBhdHRyaWJ1dGUuXG4qICAgSWYgYENvbnRlbnQtRGlzcG9zaXRpb246YCBpcyBzZXQgdG8gYGlubGluZWAsIEZpcmVmb3ggcHJpb3JpdGl6ZXMgYENvbnRlbnQtRGlzcG9zaXRpb25gLCBsaWtlIHRoZSBmaWxlbmFtZSBjYXNlLCB3aGlsZSBDaHJvbWUgcHJpb3JpdGl6ZXMgdGhlIGBkb3dubG9hZGAgYXR0cmlidXRlLiJ9fSx7bmFtZToicGluZyIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTonQ29udGFpbnMgYSBzcGFjZS1zZXBhcmF0ZWQgbGlzdCBvZiBVUkxzIHRvIHdoaWNoLCB3aGVuIHRoZSBoeXBlcmxpbmsgaXMgZm9sbG93ZWQsIFtgUE9TVGBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUVFAvTWV0aG9kcy9QT1NUICJUaGUgSFRUUCBQT1NUIG1ldGhvZCBzZW5kcyBkYXRhIHRvIHRoZSBzZXJ2ZXIuIFRoZSB0eXBlIG9mIHRoZSBib2R5IG9mIHRoZSByZXF1ZXN0IGlzIGluZGljYXRlZCBieSB0aGUgQ29udGVudC1UeXBlIGhlYWRlci4iKSByZXF1ZXN0cyB3aXRoIHRoZSBib2R5IGBQSU5HYCB3aWxsIGJlIHNlbnQgYnkgdGhlIGJyb3dzZXIgKGluIHRoZSBiYWNrZ3JvdW5kKS4gVHlwaWNhbGx5IHVzZWQgZm9yIHRyYWNraW5nLid9fSx7bmFtZToicmVsIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJTcGVjaWZpZXMgdGhlIHJlbGF0aW9uc2hpcCBvZiB0aGUgdGFyZ2V0IG9iamVjdCB0byB0aGUgbGluayBvYmplY3QuIFRoZSB2YWx1ZSBpcyBhIHNwYWNlLXNlcGFyYXRlZCBsaXN0IG9mIFtsaW5rIHR5cGVzXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0xpbmtfdHlwZXMpLiJ9fSx7bmFtZToiaHJlZmxhbmciLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6J1RoaXMgYXR0cmlidXRlIGluZGljYXRlcyB0aGUgaHVtYW4gbGFuZ3VhZ2Ugb2YgdGhlIGxpbmtlZCByZXNvdXJjZS4gSXQgaXMgcHVyZWx5IGFkdmlzb3J5LCB3aXRoIG5vIGJ1aWx0LWluIGZ1bmN0aW9uYWxpdHkuIEFsbG93ZWQgdmFsdWVzIGFyZSBkZXRlcm1pbmVkIGJ5IFtCQ1A0N10oaHR0cHM6Ly93d3cuaWV0Zi5vcmcvcmZjL2JjcC9iY3A0Ny50eHQgIlRhZ3MgZm9yIElkZW50aWZ5aW5nIExhbmd1YWdlcyIpLid9fSx7bmFtZToidHlwZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTonU3BlY2lmaWVzIHRoZSBtZWRpYSB0eXBlIGluIHRoZSBmb3JtIG9mIGEgW01JTUUgdHlwZV0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9HbG9zc2FyeS9NSU1FX3R5cGUgIk1JTUUgdHlwZTogQcKgTUlNRSB0eXBlwqAobm93IHByb3Blcmx5IGNhbGxlZCAibWVkaWEgdHlwZSIsIGJ1dMKgYWxzbyBzb21ldGltZXMgImNvbnRlbnQgdHlwZSIpIGlzIGEgc3RyaW5nIHNlbnQgYWxvbmfCoHdpdGggYSBmaWxlIGluZGljYXRpbmcgdGhlIHR5cGUgb2YgdGhlIGZpbGUgKGRlc2NyaWJpbmcgdGhlIGNvbnRlbnQgZm9ybWF0LCBmb3IgZXhhbXBsZSwgYSBzb3VuZCBmaWxlIG1pZ2h0IGJlIGxhYmVsZWTCoGF1ZGlvL29nZywgb3IgYW4gaW1hZ2UgZmlsZcKgaW1hZ2UvcG5nKS4iKSBmb3IgdGhlIGxpbmtlZCBVUkwuIEl0IGlzIHB1cmVseSBhZHZpc29yeSwgd2l0aCBubyBidWlsdC1pbiBmdW5jdGlvbmFsaXR5Lid9fSx7bmFtZToicmVmZXJyZXJwb2xpY3kiLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgd2hpY2ggW3JlZmVycmVyXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVFRQL0hlYWRlcnMvUmVmZXJlcikgdG8gc2VuZCB3aGVuIGZldGNoaW5nIHRoZSBVUkw6XG5cbiogICBgJ25vLXJlZmVycmVyJ2AgbWVhbnMgdGhlIGBSZWZlcmVyOmAgaGVhZGVyIHdpbGwgbm90IGJlIHNlbnQuXG4qICAgYCduby1yZWZlcnJlci13aGVuLWRvd25ncmFkZSdgIG1lYW5zIG5vIGBSZWZlcmVyOmAgaGVhZGVyIHdpbGwgYmUgc2VudCB3aGVuIG5hdmlnYXRpbmcgdG8gYW4gb3JpZ2luIHdpdGhvdXQgSFRUUFMuIFRoaXMgaXMgdGhlIGRlZmF1bHQgYmVoYXZpb3IuXG4qICAgYCdvcmlnaW4nYCBtZWFucyB0aGUgcmVmZXJyZXIgd2lsbCBiZSB0aGUgW29yaWdpbl0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9HbG9zc2FyeS9PcmlnaW4pIG9mIHRoZSBwYWdlLCBub3QgaW5jbHVkaW5nIGluZm9ybWF0aW9uIGFmdGVyIHRoZSBkb21haW4uXG4qICAgYCdvcmlnaW4td2hlbi1jcm9zcy1vcmlnaW4nYCBtZWFuaW5nIHRoYXQgbmF2aWdhdGlvbnMgdG8gb3RoZXIgb3JpZ2lucyB3aWxsIGJlIGxpbWl0ZWQgdG8gdGhlIHNjaGVtZSwgdGhlIGhvc3QgYW5kIHRoZSBwb3J0LCB3aGlsZSBuYXZpZ2F0aW9ucyBvbiB0aGUgc2FtZSBvcmlnaW4gd2lsbCBpbmNsdWRlIHRoZSByZWZlcnJlcidzIHBhdGguXG4qICAgYCdzdHJpY3Qtb3JpZ2luLXdoZW4tY3Jvc3Mtb3JpZ2luJ2BcbiogICBgJ3Vuc2FmZS11cmwnYCBtZWFucyB0aGUgcmVmZXJyZXIgd2lsbCBpbmNsdWRlIHRoZSBvcmlnaW4gYW5kIHBhdGgsIGJ1dCBub3QgdGhlIGZyYWdtZW50LCBwYXNzd29yZCwgb3IgdXNlcm5hbWUuIFRoaXMgaXMgdW5zYWZlIGJlY2F1c2UgaXQgY2FuIGxlYWsgZGF0YSBmcm9tIHNlY3VyZSBVUkxzIHRvIGluc2VjdXJlIG9uZXMuIn1dLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9hIn1dfSx7bmFtZToiZW0iLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBlbSBlbGVtZW50IHJlcHJlc2VudHMgc3RyZXNzIGVtcGhhc2lzIG9mIGl0cyBjb250ZW50cy4ifSxhdHRyaWJ1dGVzOltdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9lbSJ9XX0se25hbWU6InN0cm9uZyIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHN0cm9uZyBlbGVtZW50IHJlcHJlc2VudHMgc3Ryb25nIGltcG9ydGFuY2UsIHNlcmlvdXNuZXNzLCBvciB1cmdlbmN5IGZvciBpdHMgY29udGVudHMuIn0sYXR0cmlidXRlczpbXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvc3Ryb25nIn1dfSx7bmFtZToic21hbGwiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBzbWFsbCBlbGVtZW50IHJlcHJlc2VudHMgc2lkZSBjb21tZW50cyBzdWNoIGFzIHNtYWxsIHByaW50LiJ9LGF0dHJpYnV0ZXM6W10scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3NtYWxsIn1dfSx7bmFtZToicyIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHMgZWxlbWVudCByZXByZXNlbnRzIGNvbnRlbnRzIHRoYXQgYXJlIG5vIGxvbmdlciBhY2N1cmF0ZSBvciBubyBsb25nZXIgcmVsZXZhbnQuIn0sYXR0cmlidXRlczpbXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvcyJ9XX0se25hbWU6ImNpdGUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBjaXRlIGVsZW1lbnQgcmVwcmVzZW50cyBhIHJlZmVyZW5jZSB0byBhIGNyZWF0aXZlIHdvcmsuIEl0IG11c3QgaW5jbHVkZSB0aGUgdGl0bGUgb2YgdGhlIHdvcmsgb3IgdGhlIG5hbWUgb2YgdGhlIGF1dGhvcihwZXJzb24sIHBlb3BsZSBvciBvcmdhbml6YXRpb24pIG9yIGFuIFVSTCByZWZlcmVuY2UsIG9yIGEgcmVmZXJlbmNlIGluIGFiYnJldmlhdGVkIGZvcm0gYXMgcGVyIHRoZSBjb252ZW50aW9ucyB1c2VkIGZvciB0aGUgYWRkaXRpb24gb2YgY2l0YXRpb24gbWV0YWRhdGEuIn0sYXR0cmlidXRlczpbXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvY2l0ZSJ9XX0se25hbWU6InEiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBxIGVsZW1lbnQgcmVwcmVzZW50cyBzb21lIHBocmFzaW5nIGNvbnRlbnQgcXVvdGVkIGZyb20gYW5vdGhlciBzb3VyY2UuIn0sYXR0cmlidXRlczpbe25hbWU6ImNpdGUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSB2YWx1ZSBvZiB0aGlzIGF0dHJpYnV0ZSBpcyBhIFVSTCB0aGF0IGRlc2lnbmF0ZXMgYSBzb3VyY2UgZG9jdW1lbnQgb3IgbWVzc2FnZSBmb3IgdGhlIGluZm9ybWF0aW9uIHF1b3RlZC4gVGhpcyBhdHRyaWJ1dGUgaXMgaW50ZW5kZWQgdG8gcG9pbnQgdG8gaW5mb3JtYXRpb24gZXhwbGFpbmluZyB0aGUgY29udGV4dCBvciB0aGUgcmVmZXJlbmNlIGZvciB0aGUgcXVvdGUuIn19XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvcSJ9XX0se25hbWU6ImRmbiIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGRmbiBlbGVtZW50IHJlcHJlc2VudHMgdGhlIGRlZmluaW5nIGluc3RhbmNlIG9mIGEgdGVybS4gVGhlIHBhcmFncmFwaCwgZGVzY3JpcHRpb24gbGlzdCBncm91cCwgb3Igc2VjdGlvbiB0aGF0IGlzIHRoZSBuZWFyZXN0IGFuY2VzdG9yIG9mIHRoZSBkZm4gZWxlbWVudCBtdXN0IGFsc28gY29udGFpbiB0aGUgZGVmaW5pdGlvbihzKSBmb3IgdGhlIHRlcm0gZ2l2ZW4gYnkgdGhlIGRmbiBlbGVtZW50LiJ9LGF0dHJpYnV0ZXM6W10scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2RmbiJ9XX0se25hbWU6ImFiYnIiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBhYmJyIGVsZW1lbnQgcmVwcmVzZW50cyBhbiBhYmJyZXZpYXRpb24gb3IgYWNyb255bSwgb3B0aW9uYWxseSB3aXRoIGl0cyBleHBhbnNpb24uIFRoZSB0aXRsZSBhdHRyaWJ1dGUgbWF5IGJlIHVzZWQgdG8gcHJvdmlkZSBhbiBleHBhbnNpb24gb2YgdGhlIGFiYnJldmlhdGlvbi4gVGhlIGF0dHJpYnV0ZSwgaWYgc3BlY2lmaWVkLCBtdXN0IGNvbnRhaW4gYW4gZXhwYW5zaW9uIG9mIHRoZSBhYmJyZXZpYXRpb24sIGFuZCBub3RoaW5nIGVsc2UuIn0sYXR0cmlidXRlczpbXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvYWJiciJ9XX0se25hbWU6InJ1YnkiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBydWJ5IGVsZW1lbnQgYWxsb3dzIG9uZSBvciBtb3JlIHNwYW5zIG9mIHBocmFzaW5nIGNvbnRlbnQgdG8gYmUgbWFya2VkIHdpdGggcnVieSBhbm5vdGF0aW9ucy4gUnVieSBhbm5vdGF0aW9ucyBhcmUgc2hvcnQgcnVucyBvZiB0ZXh0IHByZXNlbnRlZCBhbG9uZ3NpZGUgYmFzZSB0ZXh0LCBwcmltYXJpbHkgdXNlZCBpbiBFYXN0IEFzaWFuIHR5cG9ncmFwaHkgYXMgYSBndWlkZSBmb3IgcHJvbnVuY2lhdGlvbiBvciB0byBpbmNsdWRlIG90aGVyIGFubm90YXRpb25zLiBJbiBKYXBhbmVzZSwgdGhpcyBmb3JtIG9mIHR5cG9ncmFwaHkgaXMgYWxzbyBrbm93biBhcyBmdXJpZ2FuYS4gUnVieSB0ZXh0IGNhbiBhcHBlYXIgb24gZWl0aGVyIHNpZGUsIGFuZCBzb21ldGltZXMgYm90aCBzaWRlcywgb2YgdGhlIGJhc2UgdGV4dCwgYW5kIGl0IGlzIHBvc3NpYmxlIHRvIGNvbnRyb2wgaXRzIHBvc2l0aW9uIHVzaW5nIENTUy4gQSBtb3JlIGNvbXBsZXRlIGludHJvZHVjdGlvbiB0byBydWJ5IGNhbiBiZSBmb3VuZCBpbiB0aGUgVXNlIENhc2VzICYgRXhwbG9yYXRvcnkgQXBwcm9hY2hlcyBmb3IgUnVieSBNYXJrdXAgZG9jdW1lbnQgYXMgd2VsbCBhcyBpbiBDU1MgUnVieSBNb2R1bGUgTGV2ZWwgMS4gW1JVQlktVUNdIFtDU1NSVUJZXSJ9LGF0dHJpYnV0ZXM6W10scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3J1YnkifV19LHtuYW1lOiJyYiIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHJiIGVsZW1lbnQgbWFya3MgdGhlIGJhc2UgdGV4dCBjb21wb25lbnQgb2YgYSBydWJ5IGFubm90YXRpb24uIFdoZW4gaXQgaXMgdGhlIGNoaWxkIG9mIGEgcnVieSBlbGVtZW50LCBpdCBkb2Vzbid0IHJlcHJlc2VudCBhbnl0aGluZyBpdHNlbGYsIGJ1dCBpdHMgcGFyZW50IHJ1YnkgZWxlbWVudCB1c2VzIGl0IGFzIHBhcnQgb2YgZGV0ZXJtaW5pbmcgd2hhdCBpdCByZXByZXNlbnRzLiJ9LGF0dHJpYnV0ZXM6W10scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3JiIn1dfSx7bmFtZToicnQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBydCBlbGVtZW50IG1hcmtzIHRoZSBydWJ5IHRleHQgY29tcG9uZW50IG9mIGEgcnVieSBhbm5vdGF0aW9uLiBXaGVuIGl0IGlzIHRoZSBjaGlsZCBvZiBhIHJ1YnkgZWxlbWVudCBvciBvZiBhbiBydGMgZWxlbWVudCB0aGF0IGlzIGl0c2VsZiB0aGUgY2hpbGQgb2YgYSBydWJ5IGVsZW1lbnQsIGl0IGRvZXNuJ3QgcmVwcmVzZW50IGFueXRoaW5nIGl0c2VsZiwgYnV0IGl0cyBhbmNlc3RvciBydWJ5IGVsZW1lbnQgdXNlcyBpdCBhcyBwYXJ0IG9mIGRldGVybWluaW5nIHdoYXQgaXQgcmVwcmVzZW50cy4ifSxhdHRyaWJ1dGVzOltdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9ydCJ9XX0se25hbWU6InJwIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgcnAgZWxlbWVudCBpcyB1c2VkIHRvIHByb3ZpZGUgZmFsbGJhY2sgdGV4dCB0byBiZSBzaG93biBieSB1c2VyIGFnZW50cyB0aGF0IGRvbid0IHN1cHBvcnQgcnVieSBhbm5vdGF0aW9ucy4gT25lIHdpZGVzcHJlYWQgY29udmVudGlvbiBpcyB0byBwcm92aWRlIHBhcmVudGhlc2VzIGFyb3VuZCB0aGUgcnVieSB0ZXh0IGNvbXBvbmVudCBvZiBhIHJ1YnkgYW5ub3RhdGlvbi4ifSxhdHRyaWJ1dGVzOltdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9ycCJ9XX0se25hbWU6InRpbWUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSB0aW1lIGVsZW1lbnQgcmVwcmVzZW50cyBpdHMgY29udGVudHMsIGFsb25nIHdpdGggYSBtYWNoaW5lLXJlYWRhYmxlIGZvcm0gb2YgdGhvc2UgY29udGVudHMgaW4gdGhlIGRhdGV0aW1lIGF0dHJpYnV0ZS4gVGhlIGtpbmQgb2YgY29udGVudCBpcyBsaW1pdGVkIHRvIHZhcmlvdXMga2luZHMgb2YgZGF0ZXMsIHRpbWVzLCB0aW1lLXpvbmUgb2Zmc2V0cywgYW5kIGR1cmF0aW9ucywgYXMgZGVzY3JpYmVkIGJlbG93LiJ9LGF0dHJpYnV0ZXM6W3tuYW1lOiJkYXRldGltZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhpcyBhdHRyaWJ1dGUgaW5kaWNhdGVzIHRoZSB0aW1lIGFuZC9vciBkYXRlIG9mIHRoZSBlbGVtZW50IGFuZCBtdXN0IGJlIGluIG9uZSBvZiB0aGUgZm9ybWF0cyBkZXNjcmliZWQgYmVsb3cuIn19XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvdGltZSJ9XX0se25hbWU6ImNvZGUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBjb2RlIGVsZW1lbnQgcmVwcmVzZW50cyBhIGZyYWdtZW50IG9mIGNvbXB1dGVyIGNvZGUuIFRoaXMgY291bGQgYmUgYW4gWE1MIGVsZW1lbnQgbmFtZSwgYSBmaWxlIG5hbWUsIGEgY29tcHV0ZXIgcHJvZ3JhbSwgb3IgYW55IG90aGVyIHN0cmluZyB0aGF0IGEgY29tcHV0ZXIgd291bGQgcmVjb2duaXplLiJ9LGF0dHJpYnV0ZXM6W10scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2NvZGUifV19LHtuYW1lOiJ2YXIiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSB2YXIgZWxlbWVudCByZXByZXNlbnRzIGEgdmFyaWFibGUuIFRoaXMgY291bGQgYmUgYW4gYWN0dWFsIHZhcmlhYmxlIGluIGEgbWF0aGVtYXRpY2FsIGV4cHJlc3Npb24gb3IgcHJvZ3JhbW1pbmcgY29udGV4dCwgYW4gaWRlbnRpZmllciByZXByZXNlbnRpbmcgYSBjb25zdGFudCwgYSBzeW1ib2wgaWRlbnRpZnlpbmcgYSBwaHlzaWNhbCBxdWFudGl0eSwgYSBmdW5jdGlvbiBwYXJhbWV0ZXIsIG9yIGp1c3QgYmUgYSB0ZXJtIHVzZWQgYXMgYSBwbGFjZWhvbGRlciBpbiBwcm9zZS4ifSxhdHRyaWJ1dGVzOltdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC92YXIifV19LHtuYW1lOiJzYW1wIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgc2FtcCBlbGVtZW50IHJlcHJlc2VudHMgc2FtcGxlIG9yIHF1b3RlZCBvdXRwdXQgZnJvbSBhbm90aGVyIHByb2dyYW0gb3IgY29tcHV0aW5nIHN5c3RlbS4ifSxhdHRyaWJ1dGVzOltdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9zYW1wIn1dfSx7bmFtZToia2JkIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUga2JkIGVsZW1lbnQgcmVwcmVzZW50cyB1c2VyIGlucHV0ICh0eXBpY2FsbHkga2V5Ym9hcmQgaW5wdXQsIGFsdGhvdWdoIGl0IG1heSBhbHNvIGJlIHVzZWQgdG8gcmVwcmVzZW50IG90aGVyIGlucHV0LCBzdWNoIGFzIHZvaWNlIGNvbW1hbmRzKS4ifSxhdHRyaWJ1dGVzOltdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9rYmQifV19LHtuYW1lOiJzdWIiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBzdWIgZWxlbWVudCByZXByZXNlbnRzIGEgc3Vic2NyaXB0LiJ9LGF0dHJpYnV0ZXM6W10scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3N1YiJ9XX0se25hbWU6InN1cCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHN1cCBlbGVtZW50IHJlcHJlc2VudHMgYSBzdXBlcnNjcmlwdC4ifSxhdHRyaWJ1dGVzOltdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9zdXAifV19LHtuYW1lOiJpIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgaSBlbGVtZW50IHJlcHJlc2VudHMgYSBzcGFuIG9mIHRleHQgaW4gYW4gYWx0ZXJuYXRlIHZvaWNlIG9yIG1vb2QsIG9yIG90aGVyd2lzZSBvZmZzZXQgZnJvbSB0aGUgbm9ybWFsIHByb3NlIGluIGEgbWFubmVyIGluZGljYXRpbmcgYSBkaWZmZXJlbnQgcXVhbGl0eSBvZiB0ZXh0LCBzdWNoIGFzIGEgdGF4b25vbWljIGRlc2lnbmF0aW9uLCBhIHRlY2huaWNhbCB0ZXJtLCBhbiBpZGlvbWF0aWMgcGhyYXNlIGZyb20gYW5vdGhlciBsYW5ndWFnZSwgdHJhbnNsaXRlcmF0aW9uLCBhIHRob3VnaHQsIG9yIGEgc2hpcCBuYW1lIGluIFdlc3Rlcm4gdGV4dHMuIn0sYXR0cmlidXRlczpbXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvaSJ9XX0se25hbWU6ImIiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBiIGVsZW1lbnQgcmVwcmVzZW50cyBhIHNwYW4gb2YgdGV4dCB0byB3aGljaCBhdHRlbnRpb24gaXMgYmVpbmcgZHJhd24gZm9yIHV0aWxpdGFyaWFuIHB1cnBvc2VzIHdpdGhvdXQgY29udmV5aW5nIGFueSBleHRyYSBpbXBvcnRhbmNlIGFuZCB3aXRoIG5vIGltcGxpY2F0aW9uIG9mIGFuIGFsdGVybmF0ZSB2b2ljZSBvciBtb29kLCBzdWNoIGFzIGtleSB3b3JkcyBpbiBhIGRvY3VtZW50IGFic3RyYWN0LCBwcm9kdWN0IG5hbWVzIGluIGEgcmV2aWV3LCBhY3Rpb25hYmxlIHdvcmRzIGluIGludGVyYWN0aXZlIHRleHQtZHJpdmVuIHNvZnR3YXJlLCBvciBhbiBhcnRpY2xlIGxlZGUuIn0sYXR0cmlidXRlczpbXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvYiJ9XX0se25hbWU6InUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSB1IGVsZW1lbnQgcmVwcmVzZW50cyBhIHNwYW4gb2YgdGV4dCB3aXRoIGFuIHVuYXJ0aWN1bGF0ZWQsIHRob3VnaCBleHBsaWNpdGx5IHJlbmRlcmVkLCBub24tdGV4dHVhbCBhbm5vdGF0aW9uLCBzdWNoIGFzIGxhYmVsaW5nIHRoZSB0ZXh0IGFzIGJlaW5nIGEgcHJvcGVyIG5hbWUgaW4gQ2hpbmVzZSB0ZXh0IChhIENoaW5lc2UgcHJvcGVyIG5hbWUgbWFyayksIG9yIGxhYmVsaW5nIHRoZSB0ZXh0IGFzIGJlaW5nIG1pc3NwZWx0LiJ9LGF0dHJpYnV0ZXM6W10scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3UifV19LHtuYW1lOiJtYXJrIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgbWFyayBlbGVtZW50IHJlcHJlc2VudHMgYSBydW4gb2YgdGV4dCBpbiBvbmUgZG9jdW1lbnQgbWFya2VkIG9yIGhpZ2hsaWdodGVkIGZvciByZWZlcmVuY2UgcHVycG9zZXMsIGR1ZSB0byBpdHMgcmVsZXZhbmNlIGluIGFub3RoZXIgY29udGV4dC4gV2hlbiB1c2VkIGluIGEgcXVvdGF0aW9uIG9yIG90aGVyIGJsb2NrIG9mIHRleHQgcmVmZXJyZWQgdG8gZnJvbSB0aGUgcHJvc2UsIGl0IGluZGljYXRlcyBhIGhpZ2hsaWdodCB0aGF0IHdhcyBub3Qgb3JpZ2luYWxseSBwcmVzZW50IGJ1dCB3aGljaCBoYXMgYmVlbiBhZGRlZCB0byBicmluZyB0aGUgcmVhZGVyJ3MgYXR0ZW50aW9uIHRvIGEgcGFydCBvZiB0aGUgdGV4dCB0aGF0IG1pZ2h0IG5vdCBoYXZlIGJlZW4gY29uc2lkZXJlZCBpbXBvcnRhbnQgYnkgdGhlIG9yaWdpbmFsIGF1dGhvciB3aGVuIHRoZSBibG9jayB3YXMgb3JpZ2luYWxseSB3cml0dGVuLCBidXQgd2hpY2ggaXMgbm93IHVuZGVyIHByZXZpb3VzbHkgdW5leHBlY3RlZCBzY3J1dGlueS4gV2hlbiB1c2VkIGluIHRoZSBtYWluIHByb3NlIG9mIGEgZG9jdW1lbnQsIGl0IGluZGljYXRlcyBhIHBhcnQgb2YgdGhlIGRvY3VtZW50IHRoYXQgaGFzIGJlZW4gaGlnaGxpZ2h0ZWQgZHVlIHRvIGl0cyBsaWtlbHkgcmVsZXZhbmNlIHRvIHRoZSB1c2VyJ3MgY3VycmVudCBhY3Rpdml0eS4ifSxhdHRyaWJ1dGVzOltdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9tYXJrIn1dfSx7bmFtZToiYmRpIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgYmRpIGVsZW1lbnQgcmVwcmVzZW50cyBhIHNwYW4gb2YgdGV4dCB0aGF0IGlzIHRvIGJlIGlzb2xhdGVkIGZyb20gaXRzIHN1cnJvdW5kaW5ncyBmb3IgdGhlIHB1cnBvc2VzIG9mIGJpZGlyZWN0aW9uYWwgdGV4dCBmb3JtYXR0aW5nLiBbQklESV0ifSxhdHRyaWJ1dGVzOltdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9iZGkifV19LHtuYW1lOiJiZG8iLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBiZG8gZWxlbWVudCByZXByZXNlbnRzIGV4cGxpY2l0IHRleHQgZGlyZWN0aW9uYWxpdHkgZm9ybWF0dGluZyBjb250cm9sIGZvciBpdHMgY2hpbGRyZW4uIEl0IGFsbG93cyBhdXRob3JzIHRvIG92ZXJyaWRlIHRoZSBVbmljb2RlIGJpZGlyZWN0aW9uYWwgYWxnb3JpdGhtIGJ5IGV4cGxpY2l0bHkgc3BlY2lmeWluZyBhIGRpcmVjdGlvbiBvdmVycmlkZS4gW0JJREldIn0sYXR0cmlidXRlczpbe25hbWU6ImRpciIsZGVzY3JpcHRpb246IlRoZSBkaXJlY3Rpb24gaW4gd2hpY2ggdGV4dCBzaG91bGQgYmUgcmVuZGVyZWQgaW4gdGhpcyBlbGVtZW50J3MgY29udGVudHMuIFBvc3NpYmxlIHZhbHVlcyBhcmU6XG5cbiogICBgbHRyYDogSW5kaWNhdGVzIHRoYXQgdGhlIHRleHQgc2hvdWxkIGdvIGluIGEgbGVmdC10by1yaWdodCBkaXJlY3Rpb24uXG4qICAgYHJ0bGA6IEluZGljYXRlcyB0aGF0IHRoZSB0ZXh0IHNob3VsZCBnbyBpbiBhIHJpZ2h0LXRvLWxlZnQgZGlyZWN0aW9uLiJ9XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvYmRvIn1dfSx7bmFtZToic3BhbiIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHNwYW4gZWxlbWVudCBkb2Vzbid0IG1lYW4gYW55dGhpbmcgb24gaXRzIG93biwgYnV0IGNhbiBiZSB1c2VmdWwgd2hlbiB1c2VkIHRvZ2V0aGVyIHdpdGggdGhlIGdsb2JhbCBhdHRyaWJ1dGVzLCBlLmcuIGNsYXNzLCBsYW5nLCBvciBkaXIuIEl0IHJlcHJlc2VudHMgaXRzIGNoaWxkcmVuLiJ9LGF0dHJpYnV0ZXM6W10scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3NwYW4ifV19LHtuYW1lOiJiciIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGJyIGVsZW1lbnQgcmVwcmVzZW50cyBhIGxpbmUgYnJlYWsuIn0sYXR0cmlidXRlczpbe25hbWU6ImNsZWFyIixkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIHdoZXJlIHRvIGJlZ2luIHRoZSBuZXh0IGxpbmUgYWZ0ZXIgdGhlIGJyZWFrLiJ9XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvYnIifV19LHtuYW1lOiJ3YnIiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSB3YnIgZWxlbWVudCByZXByZXNlbnRzIGEgbGluZSBicmVhayBvcHBvcnR1bml0eS4ifSxhdHRyaWJ1dGVzOltdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC93YnIifV19LHtuYW1lOiJpbnMiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBpbnMgZWxlbWVudCByZXByZXNlbnRzIGFuIGFkZGl0aW9uIHRvIHRoZSBkb2N1bWVudC4ifSxhdHRyaWJ1dGVzOlt7bmFtZToiY2l0ZSIsZGVzY3JpcHRpb246IlRoaXMgYXR0cmlidXRlIGRlZmluZXMgdGhlIFVSSSBvZiBhIHJlc291cmNlIHRoYXQgZXhwbGFpbnMgdGhlIGNoYW5nZSwgc3VjaCBhcyBhIGxpbmsgdG8gbWVldGluZyBtaW51dGVzIG9yIGEgdGlja2V0IGluIGEgdHJvdWJsZXNob290aW5nIHN5c3RlbS4ifSx7bmFtZToiZGF0ZXRpbWUiLGRlc2NyaXB0aW9uOidUaGlzIGF0dHJpYnV0ZSBpbmRpY2F0ZXMgdGhlIHRpbWUgYW5kIGRhdGUgb2YgdGhlIGNoYW5nZSBhbmQgbXVzdCBiZSBhIHZhbGlkIGRhdGUgd2l0aCBhbiBvcHRpb25hbCB0aW1lIHN0cmluZy4gSWYgdGhlIHZhbHVlIGNhbm5vdCBiZSBwYXJzZWQgYXMgYSBkYXRlIHdpdGggYW4gb3B0aW9uYWwgdGltZSBzdHJpbmcsIHRoZSBlbGVtZW50IGRvZXMgbm90IGhhdmUgYW4gYXNzb2NpYXRlZCB0aW1lIHN0YW1wLiBGb3IgdGhlIGZvcm1hdCBvZiB0aGUgc3RyaW5nIHdpdGhvdXQgYSB0aW1lLCBzZWUgW0Zvcm1hdCBvZiBhIHZhbGlkIGRhdGUgc3RyaW5nXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0RhdGVfYW5kX3RpbWVfZm9ybWF0cyNGb3JtYXRfb2ZfYV92YWxpZF9kYXRlX3N0cmluZyAiQ2VydGFpbiBIVE1MIGVsZW1lbnRzIHVzZSBkYXRlIGFuZC9vciB0aW1lIHZhbHVlcy4gVGhlIGZvcm1hdHMgb2YgdGhlIHN0cmluZ3MgdGhhdCBzcGVjaWZ5IHRoZXNlIGFyZSBkZXNjcmliZWQgaW4gdGhpcyBhcnRpY2xlLiIpIGluIFtEYXRlIGFuZCB0aW1lIGZvcm1hdHMgdXNlZCBpbiBIVE1MXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0RhdGVfYW5kX3RpbWVfZm9ybWF0cyAiQ2VydGFpbiBIVE1MIGVsZW1lbnRzIHVzZSBkYXRlIGFuZC9vciB0aW1lIHZhbHVlcy4gVGhlIGZvcm1hdHMgb2YgdGhlIHN0cmluZ3MgdGhhdCBzcGVjaWZ5IHRoZXNlIGFyZSBkZXNjcmliZWQgaW4gdGhpcyBhcnRpY2xlLiIpLiBUaGUgZm9ybWF0IG9mIHRoZSBzdHJpbmcgaWYgaXQgaW5jbHVkZXMgYm90aCBkYXRlIGFuZCB0aW1lIGlzIGNvdmVyZWQgaW4gW0Zvcm1hdCBvZiBhIHZhbGlkIGxvY2FsIGRhdGUgYW5kIHRpbWUgc3RyaW5nXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0RhdGVfYW5kX3RpbWVfZm9ybWF0cyNGb3JtYXRfb2ZfYV92YWxpZF9sb2NhbF9kYXRlX2FuZF90aW1lX3N0cmluZyAiQ2VydGFpbiBIVE1MIGVsZW1lbnRzIHVzZSBkYXRlIGFuZC9vciB0aW1lIHZhbHVlcy4gVGhlIGZvcm1hdHMgb2YgdGhlIHN0cmluZ3MgdGhhdCBzcGVjaWZ5IHRoZXNlIGFyZSBkZXNjcmliZWQgaW4gdGhpcyBhcnRpY2xlLiIpIGluIFtEYXRlIGFuZCB0aW1lIGZvcm1hdHMgdXNlZCBpbiBIVE1MXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0RhdGVfYW5kX3RpbWVfZm9ybWF0cyAiQ2VydGFpbiBIVE1MIGVsZW1lbnRzIHVzZSBkYXRlIGFuZC9vciB0aW1lIHZhbHVlcy4gVGhlIGZvcm1hdHMgb2YgdGhlIHN0cmluZ3MgdGhhdCBzcGVjaWZ5IHRoZXNlIGFyZSBkZXNjcmliZWQgaW4gdGhpcyBhcnRpY2xlLiIpLid9XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvaW5zIn1dfSx7bmFtZToiZGVsIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgZGVsIGVsZW1lbnQgcmVwcmVzZW50cyBhIHJlbW92YWwgZnJvbSB0aGUgZG9jdW1lbnQuIn0sYXR0cmlidXRlczpbe25hbWU6ImNpdGUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkEgVVJJIGZvciBhIHJlc291cmNlIHRoYXQgZXhwbGFpbnMgdGhlIGNoYW5nZSAoZm9yIGV4YW1wbGUsIG1lZXRpbmcgbWludXRlcykuIn19LHtuYW1lOiJkYXRldGltZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTonVGhpcyBhdHRyaWJ1dGUgaW5kaWNhdGVzIHRoZSB0aW1lIGFuZCBkYXRlIG9mIHRoZSBjaGFuZ2UgYW5kIG11c3QgYmUgYSB2YWxpZCBkYXRlIHN0cmluZyB3aXRoIGFuIG9wdGlvbmFsIHRpbWUuIElmIHRoZSB2YWx1ZSBjYW5ub3QgYmUgcGFyc2VkIGFzIGEgZGF0ZSB3aXRoIGFuIG9wdGlvbmFsIHRpbWUgc3RyaW5nLCB0aGUgZWxlbWVudCBkb2VzIG5vdCBoYXZlIGFuIGFzc29jaWF0ZWQgdGltZSBzdGFtcC4gRm9yIHRoZSBmb3JtYXQgb2YgdGhlIHN0cmluZyB3aXRob3V0IGEgdGltZSwgc2VlIFtGb3JtYXQgb2YgYSB2YWxpZCBkYXRlIHN0cmluZ10oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9EYXRlX2FuZF90aW1lX2Zvcm1hdHMjRm9ybWF0X29mX2FfdmFsaWRfZGF0ZV9zdHJpbmcgIkNlcnRhaW4gSFRNTCBlbGVtZW50cyB1c2UgZGF0ZSBhbmQvb3IgdGltZSB2YWx1ZXMuIFRoZSBmb3JtYXRzIG9mIHRoZSBzdHJpbmdzIHRoYXQgc3BlY2lmeSB0aGVzZSBhcmUgZGVzY3JpYmVkIGluIHRoaXMgYXJ0aWNsZS4iKSBpbiBbRGF0ZSBhbmQgdGltZSBmb3JtYXRzIHVzZWQgaW4gSFRNTF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9EYXRlX2FuZF90aW1lX2Zvcm1hdHMgIkNlcnRhaW4gSFRNTCBlbGVtZW50cyB1c2UgZGF0ZSBhbmQvb3IgdGltZSB2YWx1ZXMuIFRoZSBmb3JtYXRzIG9mIHRoZSBzdHJpbmdzIHRoYXQgc3BlY2lmeSB0aGVzZSBhcmUgZGVzY3JpYmVkIGluIHRoaXMgYXJ0aWNsZS4iKS4gVGhlIGZvcm1hdCBvZiB0aGUgc3RyaW5nIGlmIGl0IGluY2x1ZGVzIGJvdGggZGF0ZSBhbmQgdGltZSBpcyBjb3ZlcmVkIGluIFtGb3JtYXQgb2YgYSB2YWxpZCBsb2NhbCBkYXRlIGFuZCB0aW1lIHN0cmluZ10oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9EYXRlX2FuZF90aW1lX2Zvcm1hdHMjRm9ybWF0X29mX2FfdmFsaWRfbG9jYWxfZGF0ZV9hbmRfdGltZV9zdHJpbmcgIkNlcnRhaW4gSFRNTCBlbGVtZW50cyB1c2UgZGF0ZSBhbmQvb3IgdGltZSB2YWx1ZXMuIFRoZSBmb3JtYXRzIG9mIHRoZSBzdHJpbmdzIHRoYXQgc3BlY2lmeSB0aGVzZSBhcmUgZGVzY3JpYmVkIGluIHRoaXMgYXJ0aWNsZS4iKSBpbiBbRGF0ZSBhbmQgdGltZSBmb3JtYXRzIHVzZWQgaW4gSFRNTF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9EYXRlX2FuZF90aW1lX2Zvcm1hdHMgIkNlcnRhaW4gSFRNTCBlbGVtZW50cyB1c2UgZGF0ZSBhbmQvb3IgdGltZSB2YWx1ZXMuIFRoZSBmb3JtYXRzIG9mIHRoZSBzdHJpbmdzIHRoYXQgc3BlY2lmeSB0aGVzZSBhcmUgZGVzY3JpYmVkIGluIHRoaXMgYXJ0aWNsZS4iKS4nfX1dLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9kZWwifV19LHtuYW1lOiJwaWN0dXJlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgcGljdHVyZSBlbGVtZW50IGlzIGEgY29udGFpbmVyIHdoaWNoIHByb3ZpZGVzIG11bHRpcGxlIHNvdXJjZXMgdG8gaXRzIGNvbnRhaW5lZCBpbWcgZWxlbWVudCB0byBhbGxvdyBhdXRob3JzIHRvIGRlY2xhcmF0aXZlbHkgY29udHJvbCBvciBnaXZlIGhpbnRzIHRvIHRoZSB1c2VyIGFnZW50IGFib3V0IHdoaWNoIGltYWdlIHJlc291cmNlIHRvIHVzZSwgYmFzZWQgb24gdGhlIHNjcmVlbiBwaXhlbCBkZW5zaXR5LCB2aWV3cG9ydCBzaXplLCBpbWFnZSBmb3JtYXQsIGFuZCBvdGhlciBmYWN0b3JzLiBJdCByZXByZXNlbnRzIGl0cyBjaGlsZHJlbi4ifSxhdHRyaWJ1dGVzOltdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9waWN0dXJlIn1dfSx7bmFtZToiaW1nIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJBbiBpbWcgZWxlbWVudCByZXByZXNlbnRzIGFuIGltYWdlLiJ9LGF0dHJpYnV0ZXM6W3tuYW1lOiJhbHQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6J1RoaXMgYXR0cmlidXRlIGRlZmluZXMgYW4gYWx0ZXJuYXRpdmUgdGV4dCBkZXNjcmlwdGlvbiBvZiB0aGUgaW1hZ2UuXG5cbioqTm90ZToqKiBCcm93c2VycyBkbyBub3QgYWx3YXlzIGRpc3BsYXkgdGhlIGltYWdlIHJlZmVyZW5jZWQgYnkgdGhlIGVsZW1lbnQuIFRoaXMgaXMgdGhlIGNhc2UgZm9yIG5vbi1ncmFwaGljYWwgYnJvd3NlcnMgKGluY2x1ZGluZyB0aG9zZSB1c2VkIGJ5IHBlb3BsZSB3aXRoIHZpc3VhbCBpbXBhaXJtZW50cyksIGlmIHRoZSB1c2VyIGNob29zZXMgbm90IHRvIGRpc3BsYXkgaW1hZ2VzLCBvciBpZiB0aGUgYnJvd3NlciBjYW5ub3QgZGlzcGxheSB0aGUgaW1hZ2UgYmVjYXVzZSBpdCBpcyBpbnZhbGlkIG9yIGFuIFt1bnN1cHBvcnRlZCB0eXBlXSgjU3VwcG9ydGVkX2ltYWdlX2Zvcm1hdHMpLiBJbiB0aGVzZSBjYXNlcywgdGhlIGJyb3dzZXIgbWF5IHJlcGxhY2UgdGhlIGltYWdlIHdpdGggdGhlIHRleHQgZGVmaW5lZCBpbiB0aGlzIGVsZW1lbnRcJ3MgYGFsdGAgYXR0cmlidXRlLiBZb3Ugc2hvdWxkLCBmb3IgdGhlc2UgcmVhc29ucyBhbmQgb3RoZXJzLCBwcm92aWRlIGEgdXNlZnVsIHZhbHVlIGZvciBgYWx0YCB3aGVuZXZlciBwb3NzaWJsZS5cblxuKipOb3RlOioqIE9taXR0aW5nIHRoaXMgYXR0cmlidXRlIGFsdG9nZXRoZXIgaW5kaWNhdGVzIHRoYXQgdGhlIGltYWdlIGlzIGEga2V5IHBhcnQgb2YgdGhlIGNvbnRlbnQsIGFuZCBubyB0ZXh0dWFsIGVxdWl2YWxlbnQgaXMgYXZhaWxhYmxlLiBTZXR0aW5nIHRoaXMgYXR0cmlidXRlIHRvIGFuIGVtcHR5IHN0cmluZyAoYGFsdD0iImApIGluZGljYXRlcyB0aGF0IHRoaXMgaW1hZ2UgaXMgX25vdF8gYSBrZXkgcGFydCBvZiB0aGUgY29udGVudCAoZGVjb3JhdGl2ZSksIGFuZCB0aGF0IG5vbi12aXN1YWwgYnJvd3NlcnMgbWF5IG9taXQgaXQgZnJvbSByZW5kZXJpbmcuJ319LHtuYW1lOiJzcmMiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBpbWFnZSBVUkwuIFRoaXMgYXR0cmlidXRlIGlzIG1hbmRhdG9yeSBmb3IgdGhlIGA8aW1nPmAgZWxlbWVudC4gT24gYnJvd3NlcnMgc3VwcG9ydGluZyBgc3Jjc2V0YCwgYHNyY2AgaXMgdHJlYXRlZCBsaWtlIGEgY2FuZGlkYXRlIGltYWdlIHdpdGggYSBwaXhlbCBkZW5zaXR5IGRlc2NyaXB0b3IgYDF4YCB1bmxlc3MgYW4gaW1hZ2Ugd2l0aCB0aGlzIHBpeGVsIGRlbnNpdHkgZGVzY3JpcHRvciBpcyBhbHJlYWR5IGRlZmluZWQgaW4gYHNyY3NldCxgIG9yIHVubGVzcyBgc3Jjc2V0YCBjb250YWlucyAnYHdgJyBkZXNjcmlwdG9ycy4ifX0se25hbWU6InNyY3NldCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiQSBsaXN0IG9mIG9uZSBvciBtb3JlIHN0cmluZ3Mgc2VwYXJhdGVkIGJ5IGNvbW1hcyBpbmRpY2F0aW5nIGEgc2V0IG9mIHBvc3NpYmxlIGltYWdlIHNvdXJjZXMgZm9yIHRoZSB1c2VyIGFnZW50IHRvIHVzZS4gRWFjaCBzdHJpbmcgaXMgY29tcG9zZWQgb2Y6XG5cbjEuICBhIFVSTCB0byBhbiBpbWFnZSxcbjIuICBvcHRpb25hbGx5LCB3aGl0ZXNwYWNlIGZvbGxvd2VkIGJ5IG9uZSBvZjpcbiAgICAqICAgQSB3aWR0aCBkZXNjcmlwdG9yLCBvciBhIHBvc2l0aXZlIGludGVnZXIgZGlyZWN0bHkgZm9sbG93ZWQgYnkgJ2B3YCcuIFRoZSB3aWR0aCBkZXNjcmlwdG9yIGlzIGRpdmlkZWQgYnkgdGhlIHNvdXJjZSBzaXplIGdpdmVuIGluIHRoZSBgc2l6ZXNgIGF0dHJpYnV0ZSB0byBjYWxjdWxhdGUgdGhlIGVmZmVjdGl2ZSBwaXhlbCBkZW5zaXR5LlxuICAgICogICBBIHBpeGVsIGRlbnNpdHkgZGVzY3JpcHRvciwgd2hpY2ggaXMgYSBwb3NpdGl2ZSBmbG9hdGluZyBwb2ludCBudW1iZXIgZGlyZWN0bHkgZm9sbG93ZWQgYnkgJ2B4YCcuXG5cbklmIG5vIGRlc2NyaXB0b3IgaXMgc3BlY2lmaWVkLCB0aGUgc291cmNlIGlzIGFzc2lnbmVkIHRoZSBkZWZhdWx0IGRlc2NyaXB0b3I6IGAxeGAuXG5cbkl0IGlzIGluY29ycmVjdCB0byBtaXggd2lkdGggZGVzY3JpcHRvcnMgYW5kIHBpeGVsIGRlbnNpdHkgZGVzY3JpcHRvcnMgaW4gdGhlIHNhbWUgYHNyY3NldGAgYXR0cmlidXRlLiBEdXBsaWNhdGUgZGVzY3JpcHRvcnMgKGZvciBpbnN0YW5jZSwgdHdvIHNvdXJjZXMgaW4gdGhlIHNhbWUgYHNyY3NldGAgd2hpY2ggYXJlIGJvdGggZGVzY3JpYmVkIHdpdGggJ2AyeGAnKSBhcmUgYWxzbyBpbnZhbGlkLlxuXG5UaGUgdXNlciBhZ2VudCBzZWxlY3RzIGFueSBvbmUgb2YgdGhlIGF2YWlsYWJsZSBzb3VyY2VzIGF0IGl0cyBkaXNjcmV0aW9uLiBUaGlzIHByb3ZpZGVzIHRoZW0gd2l0aCBzaWduaWZpY2FudCBsZWV3YXkgdG8gdGFpbG9yIHRoZWlyIHNlbGVjdGlvbiBiYXNlZCBvbiB0aGluZ3MgbGlrZSB1c2VyIHByZWZlcmVuY2VzIG9yIGJhbmR3aWR0aCBjb25kaXRpb25zLiBTZWUgb3VyIFtSZXNwb25zaXZlIGltYWdlc10oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9MZWFybi9IVE1ML011bHRpbWVkaWFfYW5kX2VtYmVkZGluZy9SZXNwb25zaXZlX2ltYWdlcykgdHV0b3JpYWwgZm9yIGFuIGV4YW1wbGUuIn19LHtuYW1lOiJjcm9zc29yaWdpbiIsdmFsdWVTZXQ6InhvIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOidUaGlzIGVudW1lcmF0ZWQgYXR0cmlidXRlIGluZGljYXRlcyBpZiB0aGUgZmV0Y2hpbmcgb2YgdGhlIHJlbGF0ZWQgaW1hZ2UgbXVzdCBiZSBkb25lIHVzaW5nIENPUlMgb3Igbm90LiBbQ09SUy1lbmFibGVkIGltYWdlc10oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9DT1JTX0VuYWJsZWRfSW1hZ2UpIGNhbiBiZSByZXVzZWQgaW4gdGhlIFtgPGNhbnZhcz5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvY2FudmFzICJVc2UgdGhlIEhUTUwgPGNhbnZhcz4gZWxlbWVudCB3aXRoIGVpdGhlciB0aGUgY2FudmFzIHNjcmlwdGluZyBBUEkgb3IgdGhlIFdlYkdMIEFQSSB0byBkcmF3IGdyYXBoaWNzIGFuZCBhbmltYXRpb25zLiIpIGVsZW1lbnQgd2l0aG91dCBiZWluZyAiW3RhaW50ZWRdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvQ09SU19lbmFibGVkX2ltYWdlI1doYXRfaXNfYV90YWludGVkX2NhbnZhcykuIiBUaGUgYWxsb3dlZCB2YWx1ZXMgYXJlOid9fSx7bmFtZToidXNlbWFwIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOidUaGUgcGFydGlhbCBVUkwgKHN0YXJ0aW5nIHdpdGggXCcjXCcpIG9mIGFuIFtpbWFnZSBtYXBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvSFRNTC9FbGVtZW50L21hcCkgYXNzb2NpYXRlZCB3aXRoIHRoZSBlbGVtZW50LlxuXG4qKk5vdGU6KiogWW91IGNhbm5vdCB1c2UgdGhpcyBhdHRyaWJ1dGUgaWYgdGhlIGA8aW1nPmAgZWxlbWVudCBpcyBhIGRlc2NlbmRhbnQgb2YgYW4gW2A8YT5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvYSAiVGhlIEhUTUwgPGE+IGVsZW1lbnQgKG9yIGFuY2hvciBlbGVtZW50KSBjcmVhdGVzIGEgaHlwZXJsaW5rIHRvIG90aGVyIHdlYiBwYWdlcywgZmlsZXMsIGxvY2F0aW9ucyB3aXRoaW4gdGhlIHNhbWUgcGFnZSwgZW1haWwgYWRkcmVzc2VzLCBvciBhbnkgb3RoZXIgVVJMLiIpIG9yIFtgPGJ1dHRvbj5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvYnV0dG9uICJUaGUgSFRNTCA8YnV0dG9uPiBlbGVtZW50IHJlcHJlc2VudHMgYSBjbGlja2FibGUgYnV0dG9uLCB3aGljaCBjYW4gYmUgdXNlZCBpbiBmb3JtcyBvciBhbnl3aGVyZSBpbiBhIGRvY3VtZW50IHRoYXQgbmVlZHMgc2ltcGxlLCBzdGFuZGFyZCBidXR0b24gZnVuY3Rpb25hbGl0eS4iKSBlbGVtZW50Lid9fSx7bmFtZToiaXNtYXAiLHZhbHVlU2V0OiJ2IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOidUaGlzIEJvb2xlYW4gYXR0cmlidXRlIGluZGljYXRlcyB0aGF0IHRoZSBpbWFnZSBpcyBwYXJ0IG9mIGEgc2VydmVyLXNpZGUgbWFwLiBJZiBzbywgdGhlIHByZWNpc2UgY29vcmRpbmF0ZXMgb2YgYSBjbGljayBhcmUgc2VudCB0byB0aGUgc2VydmVyLlxuXG4qKk5vdGU6KiogVGhpcyBhdHRyaWJ1dGUgaXMgYWxsb3dlZCBvbmx5IGlmIHRoZSBgPGltZz5gIGVsZW1lbnQgaXMgYSBkZXNjZW5kYW50IG9mIGFuIFtgPGE+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2EgIlRoZSBIVE1MIDxhPiBlbGVtZW50IChvciBhbmNob3IgZWxlbWVudCkgY3JlYXRlcyBhIGh5cGVybGluayB0byBvdGhlciB3ZWIgcGFnZXMsIGZpbGVzLCBsb2NhdGlvbnMgd2l0aGluIHRoZSBzYW1lIHBhZ2UsIGVtYWlsIGFkZHJlc3Nlcywgb3IgYW55IG90aGVyIFVSTC4iKSBlbGVtZW50IHdpdGggYSB2YWxpZCBbYGhyZWZgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvYSNhdHRyLWhyZWYpIGF0dHJpYnV0ZS4nfX0se25hbWU6IndpZHRoIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgaW50cmluc2ljIHdpZHRoIG9mIHRoZSBpbWFnZSBpbiBwaXhlbHMuIn19LHtuYW1lOiJoZWlnaHQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBpbnRyaW5zaWMgaGVpZ2h0IG9mIHRoZSBpbWFnZSBpbiBwaXhlbHMuIn19LHtuYW1lOiJkZWNvZGluZyIsZGVzY3JpcHRpb246IlByb3ZpZGVzIGFuIGltYWdlIGRlY29kaW5nIGhpbnQgdG8gdGhlIGJyb3dzZXIuIFRoZSBhbGxvd2VkIHZhbHVlcyBhcmU6In0se25hbWU6ImRlY29kaW5nIixkZXNjcmlwdGlvbjoiYHN5bmNgXG5cbkRlY29kZSB0aGUgaW1hZ2Ugc3luY2hyb25vdXNseSBmb3IgYXRvbWljIHByZXNlbnRhdGlvbiB3aXRoIG90aGVyIGNvbnRlbnQuXG5cbmBhc3luY2BcblxuRGVjb2RlIHRoZSBpbWFnZSBhc3luY2hyb25vdXNseSB0byByZWR1Y2UgZGVsYXkgaW4gcHJlc2VudGluZyBvdGhlciBjb250ZW50LlxuXG5gYXV0b2BcblxuRGVmYXVsdCBtb2RlLCB3aGljaCBpbmRpY2F0ZXMgbm8gcHJlZmVyZW5jZSBmb3IgdGhlIGRlY29kaW5nIG1vZGUuIFRoZSBicm93c2VyIGRlY2lkZXMgd2hhdCBpcyBiZXN0IGZvciB0aGUgdXNlci4ifSx7bmFtZToiaW1wb3J0YW5jZSIsZGVzY3JpcHRpb246IkluZGljYXRlcyB0aGUgcmVsYXRpdmUgaW1wb3J0YW5jZSBvZiB0aGUgcmVzb3VyY2UuIFByaW9yaXR5IGhpbnRzIGFyZSBkZWxlZ2F0ZWQgdXNpbmcgdGhlIHZhbHVlczoifSx7bmFtZToiaW1wb3J0YW5jZSIsZGVzY3JpcHRpb246ImBhdXRvYDogSW5kaWNhdGVzwqAqKm5vwqBwcmVmZXJlbmNlKiouIFRoZSBicm93c2VyIG1heSB1c2UgaXRzIG93biBoZXVyaXN0aWNzIHRvIGRlY2lkZSB0aGUgcHJpb3JpdHkgb2YgdGhlIGltYWdlLlxuXG5gaGlnaGA6IEluZGljYXRlcyB0byB0aGXCoGJyb3dzZXLCoHRoYXQgdGhlIGltYWdlIGlzIG9mwqAqKmhpZ2gqKiBwcmlvcml0eS5cblxuYGxvd2A6wqBJbmRpY2F0ZXMgdG8gdGhlwqBicm93c2VywqB0aGF0IHRoZSBpbWFnZSBpcyBvZsKgKipsb3cqKiBwcmlvcml0eS4ifSx7bmFtZToiaW50cmluc2ljc2l6ZSIsZGVzY3JpcHRpb246IlRoaXMgYXR0cmlidXRlIHRlbGxzIHRoZSBicm93c2VyIHRvIGlnbm9yZSB0aGUgYWN0dWFsIGludHJpbnNpYyBzaXplIG9mIHRoZSBpbWFnZSBhbmQgcHJldGVuZCBpdOKAmXMgdGhlIHNpemUgc3BlY2lmaWVkIGluIHRoZSBhdHRyaWJ1dGUuIFNwZWNpZmljYWxseSwgdGhlIGltYWdlIHdvdWxkIHJhc3RlciBhdCB0aGVzZSBkaW1lbnNpb25zIGFuZCBgbmF0dXJhbFdpZHRoYC9gbmF0dXJhbEhlaWdodGAgb24gaW1hZ2VzIHdvdWxkIHJldHVybiB0aGUgdmFsdWVzIHNwZWNpZmllZCBpbiB0aGlzIGF0dHJpYnV0ZS4gW0V4cGxhaW5lcl0oaHR0cHM6Ly9naXRodWIuY29tL29qYW52YWZhaS9pbnRyaW5zaWNzaXplLWF0dHJpYnV0ZSksIFtleGFtcGxlc10oaHR0cHM6Ly9nb29nbGVjaHJvbWUuZ2l0aHViLmlvL3NhbXBsZXMvaW50cmluc2ljLXNpemUvaW5kZXguaHRtbCkifSx7bmFtZToicmVmZXJyZXJwb2xpY3kiLGRlc2NyaXB0aW9uOiJBIHN0cmluZyBpbmRpY2F0aW5nIHdoaWNoIHJlZmVycmVyIHRvIHVzZSB3aGVuIGZldGNoaW5nIHRoZSByZXNvdXJjZTpcblxuKiAgIGBuby1yZWZlcnJlcjpgIFRoZSBbYFJlZmVyZXJgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVFRQL0hlYWRlcnMvUmVmZXJlciBcIlRoZSBSZWZlcmVyIHJlcXVlc3QgaGVhZGVyIGNvbnRhaW5zIHRoZSBhZGRyZXNzIG9mIHRoZSBwcmV2aW91cyB3ZWIgcGFnZSBmcm9tIHdoaWNoIGEgbGluayB0byB0aGUgY3VycmVudGx5IHJlcXVlc3RlZCBwYWdlIHdhcyBmb2xsb3dlZC4gVGhlIFJlZmVyZXIgaGVhZGVyIGFsbG93cyBzZXJ2ZXJzIHRvIGlkZW50aWZ5IHdoZXJlIHBlb3BsZSBhcmUgdmlzaXRpbmcgdGhlbSBmcm9tIGFuZCBtYXkgdXNlIHRoYXQgZGF0YSBmb3IgYW5hbHl0aWNzLCBsb2dnaW5nLCBvciBvcHRpbWl6ZWQgY2FjaGluZywgZm9yIGV4YW1wbGUuXCIpIGhlYWRlciB3aWxsIG5vdCBiZSBzZW50LlxuKiAgIGBuby1yZWZlcnJlci13aGVuLWRvd25ncmFkZTpgIE5vIGBSZWZlcmVyYCBoZWFkZXIgd2lsbCBiZSBzZW50IHdoZW4gbmF2aWdhdGluZyB0byBhbiBvcmlnaW4gd2l0aG91dCBUTFMgKEhUVFBTKS4gVGhpcyBpcyBhIHVzZXIgYWdlbnTigJlzIGRlZmF1bHQgYmVoYXZpb3IgaWYgbm8gcG9saWN5IGlzIG90aGVyd2lzZSBzcGVjaWZpZWQuXG4qICAgYG9yaWdpbjpgIFRoZSBgUmVmZXJlcmAgaGVhZGVyIHdpbGwgaW5jbHVkZSB0aGUgcGFnZSBvZiBvcmlnaW4ncyBzY2hlbWUsIHRoZSBob3N0LCBhbmQgdGhlIHBvcnQuXG4qICAgYG9yaWdpbi13aGVuLWNyb3NzLW9yaWdpbjpgIE5hdmlnYXRpbmcgdG8gb3RoZXIgb3JpZ2lucyB3aWxsIGxpbWl0IHRoZSBpbmNsdWRlZCByZWZlcnJhbCBkYXRhIHRvIHRoZSBzY2hlbWUsIHRoZSBob3N0IGFuZCB0aGUgcG9ydCwgd2hpbGUgbmF2aWdhdGluZyBmcm9tIHRoZSBzYW1lIG9yaWdpbiB3aWxsIGluY2x1ZGUgdGhlIHJlZmVycmVyJ3MgZnVsbCBwYXRoLlxuKiAgIGB1bnNhZmUtdXJsOmAgVGhlIGBSZWZlcmVyYCBoZWFkZXIgd2lsbCBpbmNsdWRlIHRoZSBvcmlnaW4gYW5kIHRoZSBwYXRoLCBidXQgbm90IHRoZSBmcmFnbWVudCwgcGFzc3dvcmQsIG9yIHVzZXJuYW1lLiBUaGlzIGNhc2UgaXMgdW5zYWZlIGJlY2F1c2UgaXQgY2FuIGxlYWsgb3JpZ2lucyBhbmQgcGF0aHMgZnJvbSBUTFMtcHJvdGVjdGVkIHJlc291cmNlcyB0byBpbnNlY3VyZSBvcmlnaW5zLiJ9LHtuYW1lOiJzaXplcyIsZGVzY3JpcHRpb246IkEgbGlzdCBvZiBvbmUgb3IgbW9yZSBzdHJpbmdzIHNlcGFyYXRlZCBieSBjb21tYXMgaW5kaWNhdGluZyBhIHNldCBvZiBzb3VyY2Ugc2l6ZXMuIEVhY2ggc291cmNlIHNpemUgY29uc2lzdHMgb2Y6XG5cbjEuICBhIG1lZGlhIGNvbmRpdGlvbi4gVGhpcyBtdXN0IGJlIG9taXR0ZWQgZm9yIHRoZSBsYXN0IGl0ZW0uXG4yLiAgYSBzb3VyY2Ugc2l6ZSB2YWx1ZS5cblxuU291cmNlIHNpemUgdmFsdWVzIHNwZWNpZnkgdGhlIGludGVuZGVkIGRpc3BsYXkgc2l6ZSBvZiB0aGUgaW1hZ2UuIFVzZXIgYWdlbnRzIHVzZSB0aGUgY3VycmVudCBzb3VyY2Ugc2l6ZSB0byBzZWxlY3Qgb25lIG9mIHRoZSBzb3VyY2VzIHN1cHBsaWVkIGJ5IHRoZSBgc3Jjc2V0YCBhdHRyaWJ1dGUsIHdoZW4gdGhvc2Ugc291cmNlcyBhcmUgZGVzY3JpYmVkIHVzaW5nIHdpZHRoICgnYHdgJykgZGVzY3JpcHRvcnMuIFRoZSBzZWxlY3RlZCBzb3VyY2Ugc2l6ZSBhZmZlY3RzIHRoZSBpbnRyaW5zaWMgc2l6ZSBvZiB0aGUgaW1hZ2UgKHRoZSBpbWFnZeKAmXMgZGlzcGxheSBzaXplIGlmIG5vIENTUyBzdHlsaW5nIGlzIGFwcGxpZWQpLiBJZiB0aGUgYHNyY3NldGAgYXR0cmlidXRlIGlzIGFic2VudCwgb3IgY29udGFpbnMgbm8gdmFsdWVzIHdpdGggYSB3aWR0aCAoYHdgKSBkZXNjcmlwdG9yLCB0aGVuIHRoZSBgc2l6ZXNgIGF0dHJpYnV0ZSBoYXMgbm8gZWZmZWN0LiJ9XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvaW1nIn1dfSx7bmFtZToiaWZyYW1lIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgaWZyYW1lIGVsZW1lbnQgcmVwcmVzZW50cyBhIG5lc3RlZCBicm93c2luZyBjb250ZXh0LiJ9LGF0dHJpYnV0ZXM6W3tuYW1lOiJzcmMiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6J1RoZSBVUkwgb2YgdGhlIHBhZ2UgdG8gZW1iZWQuIFVzZSBhIHZhbHVlIG9mIGBhYm91dDpibGFua2AgdG8gZW1iZWQgYW4gZW1wdHkgcGFnZSB0aGF0IGNvbmZvcm1zIHRvIHRoZSBbc2FtZS1vcmlnaW4gcG9saWN5XShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9TZWN1cml0eS9TYW1lLW9yaWdpbl9wb2xpY3kjSW5oZXJpdGVkX29yaWdpbnMpLiBBbHNvIG5vdGUgdGhhdCBwcm9ncmFtYXRpY2FsbHkgcmVtb3ZpbmcgYW4gYDxpZnJhbWU+YFwncyBzcmMgYXR0cmlidXRlIChlLmcuIHZpYSBbYEVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKClgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvRWxlbWVudC9yZW1vdmVBdHRyaWJ1dGUgIlRoZSBFbGVtZW50IG1ldGhvZCByZW1vdmVBdHRyaWJ1dGUoKSByZW1vdmVzIHRoZSBhdHRyaWJ1dGUgd2l0aCB0aGUgc3BlY2lmaWVkIG5hbWUgZnJvbSB0aGUgZWxlbWVudC4iKSkgY2F1c2VzIGBhYm91dDpibGFua2AgdG8gYmUgbG9hZGVkIGluIHRoZSBmcmFtZSBpbiBGaXJlZm94IChmcm9tIHZlcnNpb24gNjUpLCBDaHJvbWl1bS1iYXNlZCBicm93c2VycywgYW5kIFNhZmFyaS9pT1MuJ319LHtuYW1lOiJzcmNkb2MiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IklubGluZSBIVE1MIHRvIGVtYmVkLCBvdmVycmlkaW5nIHRoZSBgc3JjYCBhdHRyaWJ1dGUuIElmIGEgYnJvd3NlciBkb2VzIG5vdCBzdXBwb3J0IHRoZSBgc3JjZG9jYCBhdHRyaWJ1dGUsIGl0IHdpbGwgZmFsbCBiYWNrIHRvIHRoZSBVUkwgaW4gdGhlIGBzcmNgIGF0dHJpYnV0ZS4ifX0se25hbWU6Im5hbWUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6J0EgdGFyZ2V0YWJsZSBuYW1lIGZvciB0aGUgZW1iZWRkZWQgYnJvd3NpbmcgY29udGV4dC4gVGhpcyBjYW4gYmUgdXNlZCBpbiB0aGUgYHRhcmdldGAgYXR0cmlidXRlIG9mIHRoZSBbYDxhPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9hICJUaGUgSFRNTCA8YT4gZWxlbWVudCAob3IgYW5jaG9yIGVsZW1lbnQpIGNyZWF0ZXMgYSBoeXBlcmxpbmsgdG8gb3RoZXIgd2ViIHBhZ2VzLCBmaWxlcywgbG9jYXRpb25zIHdpdGhpbiB0aGUgc2FtZSBwYWdlLCBlbWFpbCBhZGRyZXNzZXMsIG9yIGFueSBvdGhlciBVUkwuIiksIFtgPGZvcm0+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2Zvcm0gIlRoZSBIVE1MIDxmb3JtPiBlbGVtZW50IHJlcHJlc2VudHMgYSBkb2N1bWVudCBzZWN0aW9uIHRoYXQgY29udGFpbnMgaW50ZXJhY3RpdmUgY29udHJvbHMgZm9yIHN1Ym1pdHRpbmcgaW5mb3JtYXRpb24gdG8gYSB3ZWIgc2VydmVyLiIpLCBvciBbYDxiYXNlPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9iYXNlICJUaGUgSFRNTCA8YmFzZT4gZWxlbWVudCBzcGVjaWZpZXMgdGhlIGJhc2UgVVJMIHRvIHVzZSBmb3IgYWxsIHJlbGF0aXZlIFVSTHMgY29udGFpbmVkIHdpdGhpbiBhIGRvY3VtZW50LiBUaGVyZSBjYW4gYmUgb25seSBvbmUgPGJhc2U+IGVsZW1lbnQgaW4gYSBkb2N1bWVudC4iKSBlbGVtZW50czsgdGhlIGBmb3JtdGFyZ2V0YCBhdHRyaWJ1dGUgb2YgdGhlIFtgPGlucHV0PmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9pbnB1dCAiVGhlIEhUTUwgPGlucHV0PiBlbGVtZW50IGlzIHVzZWQgdG8gY3JlYXRlIGludGVyYWN0aXZlIGNvbnRyb2xzIGZvciB3ZWItYmFzZWQgZm9ybXMgaW4gb3JkZXIgdG8gYWNjZXB0IGRhdGEgZnJvbSB0aGUgdXNlcjsgYSB3aWRlIHZhcmlldHkgb2YgdHlwZXMgb2YgaW5wdXQgZGF0YSBhbmQgY29udHJvbCB3aWRnZXRzIGFyZSBhdmFpbGFibGUsIGRlcGVuZGluZyBvbiB0aGUgZGV2aWNlIGFuZCB1c2VyIGFnZW50LiIpIG9yIFtgPGJ1dHRvbj5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvYnV0dG9uICJUaGUgSFRNTCA8YnV0dG9uPiBlbGVtZW50IHJlcHJlc2VudHMgYSBjbGlja2FibGUgYnV0dG9uLCB3aGljaCBjYW4gYmUgdXNlZCBpbiBmb3JtcyBvciBhbnl3aGVyZSBpbiBhIGRvY3VtZW50IHRoYXQgbmVlZHMgc2ltcGxlLCBzdGFuZGFyZCBidXR0b24gZnVuY3Rpb25hbGl0eS4iKSBlbGVtZW50czsgb3IgdGhlIGB3aW5kb3dOYW1lYCBwYXJhbWV0ZXIgaW4gdGhlIFtgd2luZG93Lm9wZW4oKWBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9XaW5kb3cvb3BlbiAiVGhlwqBXaW5kb3cgaW50ZXJmYWNlXCdzIG9wZW4oKSBtZXRob2QgbG9hZHMgdGhlIHNwZWNpZmllZCByZXNvdXJjZSBpbnRvIHRoZSBicm93c2luZyBjb250ZXh0ICh3aW5kb3csIDxpZnJhbWU+IG9yIHRhYikgd2l0aCB0aGUgc3BlY2lmaWVkIG5hbWUuIElmIHRoZSBuYW1lIGRvZXNuXCd0IGV4aXN0LCB0aGVuIGEgbmV3IHdpbmRvdyBpcyBvcGVuZWQgYW5kIHRoZSBzcGVjaWZpZWQgcmVzb3VyY2UgaXMgbG9hZGVkIGludG8gaXRzIGJyb3dzaW5nIGNvbnRleHQuIikgbWV0aG9kLid9fSx7bmFtZToic2FuZGJveCIsdmFsdWVTZXQ6InNiIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOidBcHBsaWVzIGV4dHJhIHJlc3RyaWN0aW9ucyB0byB0aGUgY29udGVudCBpbiB0aGUgZnJhbWUuIFRoZSB2YWx1ZSBvZiB0aGUgYXR0cmlidXRlIGNhbiBlaXRoZXIgYmUgZW1wdHkgdG8gYXBwbHkgYWxsIHJlc3RyaWN0aW9ucywgb3Igc3BhY2Utc2VwYXJhdGVkIHRva2VucyB0byBsaWZ0IHBhcnRpY3VsYXIgcmVzdHJpY3Rpb25zOlxuXG4qICAgYGFsbG93LWZvcm1zYDogQWxsb3dzIHRoZSByZXNvdXJjZSB0byBzdWJtaXQgZm9ybXMuIElmIHRoaXMga2V5d29yZCBpcyBub3QgdXNlZCwgZm9ybSBzdWJtaXNzaW9uIGlzIGJsb2NrZWQuXG4qICAgYGFsbG93LW1vZGFsc2A6IExldHMgdGhlIHJlc291cmNlIFtvcGVuIG1vZGFsIHdpbmRvd3NdKGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL29yaWdpbi5odG1sI3NhbmRib3hlZC1tb2RhbHMtZmxhZykuXG4qICAgYGFsbG93LW9yaWVudGF0aW9uLWxvY2tgOiBMZXRzIHRoZSByZXNvdXJjZSBbbG9jayB0aGUgc2NyZWVuIG9yaWVudGF0aW9uXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvU2NyZWVuL2xvY2tPcmllbnRhdGlvbikuXG4qICAgYGFsbG93LXBvaW50ZXItbG9ja2A6IExldHMgdGhlIHJlc291cmNlIHVzZSB0aGUgW1BvaW50ZXIgTG9jayBBUEldKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViQVBJL1BvaW50ZXJfTG9jaykuXG4qICAgYGFsbG93LXBvcHVwc2A6IEFsbG93cyBwb3B1cHMgKHN1Y2ggYXMgYHdpbmRvdy5vcGVuKClgLCBgdGFyZ2V0PSJfYmxhbmsiYCwgb3IgYHNob3dNb2RhbERpYWxvZygpYCkuIElmIHRoaXMga2V5d29yZCBpcyBub3QgdXNlZCwgdGhlIHBvcHVwIHdpbGwgc2lsZW50bHkgZmFpbCB0byBvcGVuLlxuKiAgIGBhbGxvdy1wb3B1cHMtdG8tZXNjYXBlLXNhbmRib3hgOiBMZXRzIHRoZSBzYW5kYm94ZWQgZG9jdW1lbnQgb3BlbiBuZXcgd2luZG93cyB3aXRob3V0IHRob3NlIHdpbmRvd3MgaW5oZXJpdGluZyB0aGUgc2FuZGJveGluZy4gRm9yIGV4YW1wbGUsIHRoaXMgY2FuIHNhZmVseSBzYW5kYm94IGFuIGFkdmVydGlzZW1lbnQgd2l0aG91dCBmb3JjaW5nIHRoZSBzYW1lIHJlc3RyaWN0aW9ucyB1cG9uIHRoZSBwYWdlIHRoZSBhZCBsaW5rcyB0by5cbiogICBgYWxsb3ctcHJlc2VudGF0aW9uYDogTGV0cyB0aGUgcmVzb3VyY2Ugc3RhcnQgYSBbcHJlc2VudGF0aW9uIHNlc3Npb25dKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9QcmVzZW50YXRpb25SZXF1ZXN0KS5cbiogICBgYWxsb3ctc2FtZS1vcmlnaW5gOiBJZiB0aGlzIHRva2VuIGlzIG5vdCB1c2VkLCB0aGUgcmVzb3VyY2UgaXMgdHJlYXRlZCBhcyBiZWluZyBmcm9tIGEgc3BlY2lhbCBvcmlnaW4gdGhhdCBhbHdheXMgZmFpbHMgdGhlIFtzYW1lLW9yaWdpbiBwb2xpY3ldKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvR2xvc3Nhcnkvc2FtZS1vcmlnaW5fcG9saWN5ICJzYW1lLW9yaWdpbiBwb2xpY3k6IFRoZSBzYW1lLW9yaWdpbiBwb2xpY3kgaXMgYSBjcml0aWNhbCBzZWN1cml0eSBtZWNoYW5pc20gdGhhdCByZXN0cmljdHMgaG93IGEgZG9jdW1lbnQgb3Igc2NyaXB0IGxvYWRlZCBmcm9tIG9uZSBvcmlnaW4gY2FuIGludGVyYWN0IHdpdGggYSByZXNvdXJjZSBmcm9tIGFub3RoZXIgb3JpZ2luLiIpLlxuKiAgIGBhbGxvdy1zY3JpcHRzYDogTGV0cyB0aGUgcmVzb3VyY2UgcnVuIHNjcmlwdHMgKGJ1dCBub3QgY3JlYXRlIHBvcHVwIHdpbmRvd3MpLlxuKiAgIGBhbGxvdy1zdG9yYWdlLWFjY2Vzcy1ieS11c2VyLWFjdGl2YXRpb25gIDogTGV0cyB0aGUgcmVzb3VyY2UgcmVxdWVzdCBhY2Nlc3MgdG8gdGhlIHBhcmVudFwncyBzdG9yYWdlIGNhcGFiaWxpdGllcyB3aXRoIHRoZSBbU3RvcmFnZSBBY2Nlc3MgQVBJXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvU3RvcmFnZV9BY2Nlc3NfQVBJKS5cbiogICBgYWxsb3ctdG9wLW5hdmlnYXRpb25gOiBMZXRzIHRoZSByZXNvdXJjZSBuYXZpZ2F0ZSB0aGUgdG9wLWxldmVsIGJyb3dzaW5nIGNvbnRleHQgKHRoZSBvbmUgbmFtZWQgYF90b3BgKS5cbiogICBgYWxsb3ctdG9wLW5hdmlnYXRpb24tYnktdXNlci1hY3RpdmF0aW9uYDogTGV0cyB0aGUgcmVzb3VyY2UgbmF2aWdhdGUgdGhlIHRvcC1sZXZlbCBicm93c2luZyBjb250ZXh0LCBidXQgb25seSBpZiBpbml0aWF0ZWQgYnkgYSB1c2VyIGdlc3R1cmUuXG5cbioqTm90ZXMgYWJvdXQgc2FuZGJveGluZzoqKlxuXG4qICAgV2hlbiB0aGUgZW1iZWRkZWQgZG9jdW1lbnQgaGFzIHRoZSBzYW1lIG9yaWdpbiBhcyB0aGUgZW1iZWRkaW5nIHBhZ2UsIGl0IGlzICoqc3Ryb25nbHkgZGlzY291cmFnZWQqKiB0byB1c2UgYm90aCBgYWxsb3ctc2NyaXB0c2AgYW5kIGBhbGxvdy1zYW1lLW9yaWdpbmAsIGFzIHRoYXQgbGV0cyB0aGUgZW1iZWRkZWQgZG9jdW1lbnQgcmVtb3ZlIHRoZSBgc2FuZGJveGAgYXR0cmlidXRlIOKAlCBtYWtpbmcgaXQgbm8gbW9yZSBzZWN1cmUgdGhhbiBub3QgdXNpbmcgdGhlIGBzYW5kYm94YCBhdHRyaWJ1dGUgYXQgYWxsLlxuKiAgIFNhbmRib3hpbmcgaXMgdXNlbGVzcyBpZiB0aGUgYXR0YWNrZXIgY2FuIGRpc3BsYXkgY29udGVudCBvdXRzaWRlIGEgc2FuZGJveGVkIGBpZnJhbWVgIOKAlCBzdWNoIGFzIGlmIHRoZSB2aWV3ZXIgb3BlbnMgdGhlIGZyYW1lIGluIGEgbmV3IHRhYi4gU3VjaCBjb250ZW50IHNob3VsZCBiZSBhbHNvIHNlcnZlZCBmcm9tIGEgX3NlcGFyYXRlIG9yaWdpbl8gdG8gbGltaXQgcG90ZW50aWFsIGRhbWFnZS5cbiogICBUaGUgYHNhbmRib3hgIGF0dHJpYnV0ZSBpcyB1bnN1cHBvcnRlZCBpbiBJbnRlcm5ldCBFeHBsb3JlciA5IGFuZCBlYXJsaWVyLid9fSx7bmFtZToic2VhbWxlc3MiLHZhbHVlU2V0OiJ2In0se25hbWU6ImFsbG93ZnVsbHNjcmVlbiIsdmFsdWVTZXQ6InYiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6J1NldCB0byBgdHJ1ZWAgaWYgdGhlIGA8aWZyYW1lPmAgY2FuIGFjdGl2YXRlIGZ1bGxzY3JlZW4gbW9kZSBieSBjYWxsaW5nIHRoZSBbYHJlcXVlc3RGdWxsc2NyZWVuKClgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvRWxlbWVudC9yZXF1ZXN0RnVsbHNjcmVlbiAiVGhlIEVsZW1lbnQucmVxdWVzdEZ1bGxzY3JlZW4oKSBtZXRob2QgaXNzdWVzIGFuIGFzeW5jaHJvbm91cyByZXF1ZXN0IHRvIG1ha2UgdGhlIGVsZW1lbnQgYmUgZGlzcGxheWVkIGluIGZ1bGwtc2NyZWVuIG1vZGUuIikgbWV0aG9kLid9fSx7bmFtZToid2lkdGgiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSB3aWR0aCBvZiB0aGUgZnJhbWUgaW4gQ1NTIHBpeGVscy4gRGVmYXVsdCBpcyBgMzAwYC4ifX0se25hbWU6ImhlaWdodCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGhlaWdodCBvZiB0aGUgZnJhbWUgaW4gQ1NTIHBpeGVscy4gRGVmYXVsdCBpcyBgMTUwYC4ifX0se25hbWU6ImFsbG93IixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgW2ZlYXR1cmUgcG9saWN5XShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVFRQL0ZlYXR1cmVfUG9saWN5KSBmb3IgdGhlIGA8aWZyYW1lPmAuIn0se25hbWU6ImFsbG93cGF5bWVudHJlcXVlc3QiLGRlc2NyaXB0aW9uOiJTZXQgdG8gYHRydWVgIGlmIGEgY3Jvc3Mtb3JpZ2luIGA8aWZyYW1lPmAgc2hvdWxkIGJlIGFsbG93ZWQgdG8gaW52b2tlIHRoZSBbUGF5bWVudCBSZXF1ZXN0IEFQSV0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL1BheW1lbnRfUmVxdWVzdF9BUEkpLiJ9LHtuYW1lOiJhbGxvd3BheW1lbnRyZXF1ZXN0IixkZXNjcmlwdGlvbjonVGhpcyBhdHRyaWJ1dGUgaXMgY29uc2lkZXJlZCBhIGxlZ2FjeSBhdHRyaWJ1dGUgYW5kIHJlZGVmaW5lZCBhcyBgYWxsb3c9InBheW1lbnQiYC4nfSx7bmFtZToiY3NwIixkZXNjcmlwdGlvbjonQSBbQ29udGVudCBTZWN1cml0eSBQb2xpY3ldKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUVFAvQ1NQKSBlbmZvcmNlZCBmb3IgdGhlIGVtYmVkZGVkIHJlc291cmNlLiBTZWUgW2BIVE1MSUZyYW1lRWxlbWVudC5jc3BgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvSFRNTElGcmFtZUVsZW1lbnQvY3NwICJUaGUgY3NwIHByb3BlcnR5IG9mIHRoZSBIVE1MSUZyYW1lRWxlbWVudCBpbnRlcmZhY2Ugc3BlY2lmaWVzIHRoZSBDb250ZW50IFNlY3VyaXR5IFBvbGljeSB0aGF0IGFuIGVtYmVkZGVkIGRvY3VtZW50IG11c3QgYWdyZWUgdG8gZW5mb3JjZSB1cG9uIGl0c2VsZi4iKSBmb3IgZGV0YWlscy4nfSx7bmFtZToiaW1wb3J0YW5jZSIsZGVzY3JpcHRpb246IlRoZSBkb3dubG9hZCBwcmlvcml0eSBvZiB0aGUgcmVzb3VyY2UgaW4gdGhlIGA8aWZyYW1lPmAncyBgc3JjYCBhdHRyaWJ1dGUuIEFsbG93ZWQgdmFsdWVzOlxuXG5gYXV0b2AgKGRlZmF1bHQpXG5cbk5vIHByZWZlcmVuY2UuIFRoZSBicm93c2VyIHVzZXMgaXRzIG93biBoZXVyaXN0aWNzIHRvIGRlY2lkZSB0aGUgcHJpb3JpdHkgb2YgdGhlIHJlc291cmNlLlxuXG5gaGlnaGBcblxuVGhlIHJlc291cmNlIHNob3VsZCBiZSBkb3dubG9hZGVkIGJlZm9yZSBvdGhlciBsb3dlci1wcmlvcml0eSBwYWdlIHJlc291cmNlcy5cblxuYGxvd2BcblxuVGhlIHJlc291cmNlIHNob3VsZCBiZSBkb3dubG9hZGVkIGFmdGVyIG90aGVyIGhpZ2hlci1wcmlvcml0eSBwYWdlIHJlc291cmNlcy4ifSx7bmFtZToicmVmZXJyZXJwb2xpY3kiLGRlc2NyaXB0aW9uOidJbmRpY2F0ZXMgd2hpY2ggW3JlZmVycmVyXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvRG9jdW1lbnQvcmVmZXJyZXIpIHRvIHNlbmQgd2hlbiBmZXRjaGluZyB0aGUgZnJhbWVcJ3MgcmVzb3VyY2U6XG5cbiogICBgbm8tcmVmZXJyZXJgOiBUaGUgW2BSZWZlcmVyYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRUUC9IZWFkZXJzL1JlZmVyZXIgIlRoZSBSZWZlcmVyIHJlcXVlc3QgaGVhZGVyIGNvbnRhaW5zIHRoZSBhZGRyZXNzIG9mIHRoZSBwcmV2aW91cyB3ZWIgcGFnZSBmcm9tIHdoaWNoIGEgbGluayB0byB0aGUgY3VycmVudGx5IHJlcXVlc3RlZCBwYWdlIHdhcyBmb2xsb3dlZC4gVGhlIFJlZmVyZXIgaGVhZGVyIGFsbG93cyBzZXJ2ZXJzIHRvIGlkZW50aWZ5IHdoZXJlIHBlb3BsZSBhcmUgdmlzaXRpbmcgdGhlbSBmcm9tIGFuZCBtYXkgdXNlIHRoYXQgZGF0YSBmb3IgYW5hbHl0aWNzLCBsb2dnaW5nLCBvciBvcHRpbWl6ZWQgY2FjaGluZywgZm9yIGV4YW1wbGUuIikgaGVhZGVyIHdpbGwgbm90IGJlIHNlbnQuXG4qICAgYG5vLXJlZmVycmVyLXdoZW4tZG93bmdyYWRlYCAoZGVmYXVsdCk6IFRoZSBbYFJlZmVyZXJgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVFRQL0hlYWRlcnMvUmVmZXJlciAiVGhlIFJlZmVyZXIgcmVxdWVzdCBoZWFkZXIgY29udGFpbnMgdGhlIGFkZHJlc3Mgb2YgdGhlIHByZXZpb3VzIHdlYiBwYWdlIGZyb20gd2hpY2ggYSBsaW5rIHRvIHRoZSBjdXJyZW50bHkgcmVxdWVzdGVkIHBhZ2Ugd2FzIGZvbGxvd2VkLiBUaGUgUmVmZXJlciBoZWFkZXIgYWxsb3dzIHNlcnZlcnMgdG8gaWRlbnRpZnkgd2hlcmUgcGVvcGxlIGFyZSB2aXNpdGluZyB0aGVtIGZyb20gYW5kIG1heSB1c2UgdGhhdCBkYXRhIGZvciBhbmFseXRpY3MsIGxvZ2dpbmcsIG9yIG9wdGltaXplZCBjYWNoaW5nLCBmb3IgZXhhbXBsZS4iKSBoZWFkZXIgd2lsbCBub3QgYmUgc2VudCB0byBbb3JpZ2luXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0dsb3NzYXJ5L29yaWdpbiAib3JpZ2luOiBXZWIgY29udGVudFwncyBvcmlnaW4gaXMgZGVmaW5lZCBieSB0aGUgc2NoZW1lIChwcm90b2NvbCksIGhvc3QgKGRvbWFpbiksIGFuZCBwb3J0IG9mIHRoZSBVUkwgdXNlZCB0byBhY2Nlc3MgaXQuIFR3byBvYmplY3RzIGhhdmUgdGhlIHNhbWUgb3JpZ2luIG9ubHkgd2hlbiB0aGUgc2NoZW1lLCBob3N0LCBhbmQgcG9ydCBhbGwgbWF0Y2guIilzIHdpdGhvdXQgW1RMU10oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9HbG9zc2FyeS9UTFMgIlRMUzogVHJhbnNwb3J0IExheWVyIFNlY3VyaXR5IChUTFMpLCBwcmV2aW91c2x5IGtub3duIGFzIFNlY3VyZSBTb2NrZXRzIExheWVyIChTU0wpLCBpcyBhIHByb3RvY29sIHVzZWQgYnkgYXBwbGljYXRpb25zIHRvIGNvbW11bmljYXRlIHNlY3VyZWx5IGFjcm9zcyBhIG5ldHdvcmssIHByZXZlbnRpbmcgdGFtcGVyaW5nIHdpdGggYW5kIGVhdmVzZHJvcHBpbmcgb24gZW1haWwsIHdlYiBicm93c2luZywgbWVzc2FnaW5nLCBhbmQgb3RoZXIgcHJvdG9jb2xzLiIpIChbSFRUUFNdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvR2xvc3NhcnkvSFRUUFMgIkhUVFBTOiBIVFRQUyAoSFRUUCBTZWN1cmUpIGlzIGFuIGVuY3J5cHRlZCB2ZXJzaW9uIG9mIHRoZSBIVFRQIHByb3RvY29sLiBJdCB1c3VhbGx5IHVzZXMgU1NMIG9yIFRMUyB0byBlbmNyeXB0IGFsbCBjb21tdW5pY2F0aW9uIGJldHdlZW4gYSBjbGllbnQgYW5kIGEgc2VydmVyLiBUaGlzIHNlY3VyZSBjb25uZWN0aW9uIGFsbG93cyBjbGllbnRzIHRvIHNhZmVseSBleGNoYW5nZSBzZW5zaXRpdmUgZGF0YSB3aXRoIGEgc2VydmVyLCBmb3IgZXhhbXBsZSBmb3IgYmFua2luZyBhY3Rpdml0aWVzIG9yIG9ubGluZSBzaG9wcGluZy4iKSkuXG4qICAgYG9yaWdpbmA6IFRoZSBzZW50IHJlZmVycmVyIHdpbGwgYmUgbGltaXRlZCB0byB0aGUgb3JpZ2luIG9mIHRoZSByZWZlcnJpbmcgcGFnZTogaXRzIFtzY2hlbWVdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvQXJjaGl2ZS9Nb3ppbGxhL1VSSVNjaGVtZSksIFtob3N0XShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0dsb3NzYXJ5L2hvc3QgImhvc3Q6IEEgaG9zdCBpcyBhIGRldmljZSBjb25uZWN0ZWQgdG8gdGhlIEludGVybmV0IChvciBhIGxvY2FsIG5ldHdvcmspLiBTb21lIGhvc3RzIGNhbGxlZCBzZXJ2ZXJzIG9mZmVyIGFkZGl0aW9uYWwgc2VydmljZXMgbGlrZSBzZXJ2aW5nIHdlYnBhZ2VzIG9yIHN0b3JpbmcgZmlsZXMgYW5kIGVtYWlscy4iKSwgYW5kIFtwb3J0XShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0dsb3NzYXJ5L3BvcnQgInBvcnQ6IEZvciBhIGNvbXB1dGVyIGNvbm5lY3RlZCB0byBhIG5ldHdvcmsgd2l0aCBhbiBJUCBhZGRyZXNzLCBhIHBvcnQgaXMgYSBjb21tdW5pY2F0aW9uIGVuZHBvaW50LiBQb3J0cyBhcmUgZGVzaWduYXRlZCBieSBudW1iZXJzLCBhbmQgYmVsb3cgMTAyNCBlYWNoIHBvcnQgaXMgYXNzb2NpYXRlZCBieSBkZWZhdWx0IHdpdGggYSBzcGVjaWZpYyBwcm90b2NvbC4iKS5cbiogICBgb3JpZ2luLXdoZW4tY3Jvc3Mtb3JpZ2luYDogVGhlIHJlZmVycmVyIHNlbnQgdG8gb3RoZXIgb3JpZ2lucyB3aWxsIGJlIGxpbWl0ZWQgdG8gdGhlIHNjaGVtZSwgdGhlIGhvc3QsIGFuZCB0aGUgcG9ydC4gTmF2aWdhdGlvbnMgb24gdGhlIHNhbWUgb3JpZ2luIHdpbGwgc3RpbGwgaW5jbHVkZSB0aGUgcGF0aC5cbiogICBgc2FtZS1vcmlnaW5gOiBBIHJlZmVycmVyIHdpbGwgYmUgc2VudCBmb3IgW3NhbWUgb3JpZ2luXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0dsb3NzYXJ5L1NhbWUtb3JpZ2luX3BvbGljeSAic2FtZSBvcmlnaW46IFRoZSBzYW1lLW9yaWdpbiBwb2xpY3kgaXMgYSBjcml0aWNhbCBzZWN1cml0eSBtZWNoYW5pc20gdGhhdCByZXN0cmljdHMgaG93IGEgZG9jdW1lbnQgb3Igc2NyaXB0IGxvYWRlZCBmcm9tIG9uZSBvcmlnaW4gY2FuIGludGVyYWN0IHdpdGggYSByZXNvdXJjZSBmcm9tIGFub3RoZXIgb3JpZ2luLiIpLCBidXQgY3Jvc3Mtb3JpZ2luIHJlcXVlc3RzIHdpbGwgY29udGFpbiBubyByZWZlcnJlciBpbmZvcm1hdGlvbi5cbiogICBgc3RyaWN0LW9yaWdpbmA6IE9ubHkgc2VuZCB0aGUgb3JpZ2luIG9mIHRoZSBkb2N1bWVudCBhcyB0aGUgcmVmZXJyZXIgd2hlbiB0aGUgcHJvdG9jb2wgc2VjdXJpdHkgbGV2ZWwgc3RheXMgdGhlIHNhbWUgKEhUVFBT4oaSSFRUUFMpLCBidXQgZG9uXCd0IHNlbmQgaXQgdG8gYSBsZXNzIHNlY3VyZSBkZXN0aW5hdGlvbiAoSFRUUFPihpJIVFRQKS5cbiogICBgc3RyaWN0LW9yaWdpbi13aGVuLWNyb3NzLW9yaWdpbmA6IFNlbmQgYSBmdWxsIFVSTCB3aGVuIHBlcmZvcm1pbmcgYSBzYW1lLW9yaWdpbiByZXF1ZXN0LCBvbmx5IHNlbmQgdGhlIG9yaWdpbiB3aGVuIHRoZSBwcm90b2NvbCBzZWN1cml0eSBsZXZlbCBzdGF5cyB0aGUgc2FtZSAoSFRUUFPihpJIVFRQUyksIGFuZCBzZW5kIG5vIGhlYWRlciB0byBhIGxlc3Mgc2VjdXJlIGRlc3RpbmF0aW9uIChIVFRQU+KGkkhUVFApLlxuKiAgIGB1bnNhZmUtdXJsYDogVGhlIHJlZmVycmVyIHdpbGwgaW5jbHVkZSB0aGUgb3JpZ2luIF9hbmRfIHRoZSBwYXRoIChidXQgbm90IHRoZSBbZnJhZ21lbnRdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9IVE1MSHlwZXJsaW5rRWxlbWVudFV0aWxzL2hhc2gpLCBbcGFzc3dvcmRdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9IVE1MSHlwZXJsaW5rRWxlbWVudFV0aWxzL3Bhc3N3b3JkKSwgb3IgW3VzZXJuYW1lXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvSFRNTEh5cGVybGlua0VsZW1lbnRVdGlscy91c2VybmFtZSkpLiAqKlRoaXMgdmFsdWUgaXMgdW5zYWZlKiosIGJlY2F1c2UgaXQgbGVha3Mgb3JpZ2lucyBhbmQgcGF0aHMgZnJvbSBUTFMtcHJvdGVjdGVkIHJlc291cmNlcyB0byBpbnNlY3VyZSBvcmlnaW5zLid9XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvaWZyYW1lIn1dfSx7bmFtZToiZW1iZWQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBlbWJlZCBlbGVtZW50IHByb3ZpZGVzIGFuIGludGVncmF0aW9uIHBvaW50IGZvciBhbiBleHRlcm5hbCAodHlwaWNhbGx5IG5vbi1IVE1MKSBhcHBsaWNhdGlvbiBvciBpbnRlcmFjdGl2ZSBjb250ZW50LiJ9LGF0dHJpYnV0ZXM6W3tuYW1lOiJzcmMiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBVUkzCoG9mIHRoZSByZXNvdXJjZSBiZWluZyBlbWJlZGRlZC4ifX0se25hbWU6InR5cGUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBNSU1FwqB0eXBlIHRvIHVzZSB0byBzZWxlY3QgdGhlIHBsdWctaW4gdG8gaW5zdGFudGlhdGUuIn19LHtuYW1lOiJ3aWR0aCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGRpc3BsYXllZCB3aWR0aCBvZiB0aGUgcmVzb3VyY2UsIGluIFtDU1MgcGl4ZWxzXShodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLXZhbHVlcy8jcHgpLiBUaGlzIG11c3QgYmUgYW4gYWJzb2x1dGUgdmFsdWU7IHBlcmNlbnRhZ2VzIGFyZSBfbm90XyBhbGxvd2VkLiJ9fSx7bmFtZToiaGVpZ2h0IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgZGlzcGxheWVkIGhlaWdodCBvZiB0aGUgcmVzb3VyY2UsIGluIFtDU1MgcGl4ZWxzXShodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLXZhbHVlcy8jcHgpLiBUaGlzIG11c3QgYmUgYW4gYWJzb2x1dGUgdmFsdWU7IHBlcmNlbnRhZ2VzIGFyZSBfbm90XyBhbGxvd2VkLiJ9fV0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2VtYmVkIn1dfSx7bmFtZToib2JqZWN0IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgb2JqZWN0IGVsZW1lbnQgY2FuIHJlcHJlc2VudCBhbiBleHRlcm5hbCByZXNvdXJjZSwgd2hpY2gsIGRlcGVuZGluZyBvbiB0aGUgdHlwZSBvZiB0aGUgcmVzb3VyY2UsIHdpbGwgZWl0aGVyIGJlIHRyZWF0ZWQgYXMgYW4gaW1hZ2UsIGFzIGEgbmVzdGVkIGJyb3dzaW5nIGNvbnRleHQsIG9yIGFzIGFuIGV4dGVybmFsIHJlc291cmNlIHRvIGJlIHByb2Nlc3NlZCBieSBhIHBsdWdpbi4ifSxhdHRyaWJ1dGVzOlt7bmFtZToiZGF0YSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGFkZHJlc3Mgb2YgdGhlIHJlc291cmNlIGFzIGEgdmFsaWQgVVJMLiBBdCBsZWFzdCBvbmUgb2YgKipkYXRhKiogYW5kICoqdHlwZSoqIG11c3QgYmUgZGVmaW5lZC4ifX0se25hbWU6InR5cGUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBbY29udGVudCB0eXBlXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0dsb3NzYXJ5L0NvbnRlbnRfdHlwZSkgb2YgdGhlIHJlc291cmNlIHNwZWNpZmllZCBieSAqKmRhdGEqKi4gQXQgbGVhc3Qgb25lIG9mICoqZGF0YSoqIGFuZCAqKnR5cGUqKiBtdXN0IGJlIGRlZmluZWQuIn19LHtuYW1lOiJ0eXBlbXVzdG1hdGNoIix2YWx1ZVNldDoidiIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhpcyBCb29sZWFuIGF0dHJpYnV0ZSBpbmRpY2F0ZXMgaWYgdGhlICoqdHlwZSoqIGF0dHJpYnV0ZSBhbmQgdGhlIGFjdHVhbCBbY29udGVudCB0eXBlXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0dsb3NzYXJ5L0NvbnRlbnRfdHlwZSkgb2YgdGhlIHJlc291cmNlIG11c3QgbWF0Y2ggdG8gYmUgdXNlZC4ifX0se25hbWU6Im5hbWUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBuYW1lIG9mIHZhbGlkIGJyb3dzaW5nIGNvbnRleHQgKEhUTUw1KSwgb3IgdGhlIG5hbWUgb2YgdGhlIGNvbnRyb2wgKEhUTUwgNCkuIn19LHtuYW1lOiJ1c2VtYXAiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkEgaGFzaC1uYW1lIHJlZmVyZW5jZSB0byBhIFtgPG1hcD5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvbWFwIFwiVGhlIEhUTUwgPG1hcD4gZWxlbWVudCBpcyB1c2VkIHdpdGggPGFyZWE+IGVsZW1lbnRzIHRvIGRlZmluZSBhbiBpbWFnZSBtYXAgKGEgY2xpY2thYmxlIGxpbmsgYXJlYSkuXCIpIGVsZW1lbnQ7IHRoYXQgaXMgYSAnIycgZm9sbG93ZWQgYnkgdGhlIHZhbHVlIG9mIGEgW2BuYW1lYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L21hcCNhdHRyLW5hbWUpIG9mIGEgbWFwIGVsZW1lbnQuIn19LHtuYW1lOiJmb3JtIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOidUaGUgZm9ybSBlbGVtZW50LCBpZiBhbnksIHRoYXQgdGhlIG9iamVjdCBlbGVtZW50IGlzIGFzc29jaWF0ZWQgd2l0aCAoaXRzIF9mb3JtIG93bmVyXykuIFRoZSB2YWx1ZSBvZiB0aGUgYXR0cmlidXRlIG11c3QgYmUgYW4gSUQgb2YgYSBbYDxmb3JtPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9mb3JtICJUaGUgSFRNTCA8Zm9ybT4gZWxlbWVudCByZXByZXNlbnRzIGEgZG9jdW1lbnQgc2VjdGlvbiB0aGF0IGNvbnRhaW5zIGludGVyYWN0aXZlIGNvbnRyb2xzIGZvciBzdWJtaXR0aW5nIGluZm9ybWF0aW9uIHRvIGEgd2ViIHNlcnZlci4iKSBlbGVtZW50IGluIHRoZSBzYW1lIGRvY3VtZW50Lid9fSx7bmFtZToid2lkdGgiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSB3aWR0aCBvZiB0aGUgZGlzcGxheSByZXNvdXJjZSwgaW4gW0NTUyBwaXhlbHNdKGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3MtdmFsdWVzLyNweCkuIC0tIChBYnNvbHV0ZSB2YWx1ZXMgb25seS4gW05PIHBlcmNlbnRhZ2VzXShodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9lbWJlZGRlZC1jb250ZW50Lmh0bWwjZGltZW5zaW9uLWF0dHJpYnV0ZXMpKSJ9fSx7bmFtZToiaGVpZ2h0IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgaGVpZ2h0IG9mIHRoZSBkaXNwbGF5ZWQgcmVzb3VyY2UsIGluIFtDU1MgcGl4ZWxzXShodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLXZhbHVlcy8jcHgpLiAtLSAoQWJzb2x1dGUgdmFsdWVzIG9ubHkuIFtOTyBwZXJjZW50YWdlc10oaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvZW1iZWRkZWQtY29udGVudC5odG1sI2RpbWVuc2lvbi1hdHRyaWJ1dGVzKSkifX0se25hbWU6ImFyY2hpdmUiLGRlc2NyaXB0aW9uOiJBIHNwYWNlLXNlcGFyYXRlZCBsaXN0IG9mIFVSSXMgZm9yIGFyY2hpdmVzIG9mIHJlc291cmNlcyBmb3IgdGhlIG9iamVjdC4ifSx7bmFtZToiYm9yZGVyIixkZXNjcmlwdGlvbjoiVGhlIHdpZHRoIG9mIGEgYm9yZGVyIGFyb3VuZCB0aGUgY29udHJvbCwgaW4gcGl4ZWxzLiJ9LHtuYW1lOiJjbGFzc2lkIixkZXNjcmlwdGlvbjoiVGhlIFVSSSBvZiB0aGUgb2JqZWN0J3MgaW1wbGVtZW50YXRpb24uIEl0IGNhbiBiZSB1c2VkIHRvZ2V0aGVyIHdpdGgsIG9yIGluIHBsYWNlIG9mLCB0aGUgKipkYXRhKiogYXR0cmlidXRlLiJ9LHtuYW1lOiJjb2RlYmFzZSIsZGVzY3JpcHRpb246IlRoZSBiYXNlIHBhdGggdXNlZCB0byByZXNvbHZlIHJlbGF0aXZlIFVSSXMgc3BlY2lmaWVkIGJ5ICoqY2xhc3NpZCoqLCAqKmRhdGEqKiwgb3IgKiphcmNoaXZlKiouIElmIG5vdCBzcGVjaWZpZWQsIHRoZSBkZWZhdWx0IGlzIHRoZSBiYXNlIFVSSSBvZiB0aGUgY3VycmVudCBkb2N1bWVudC4ifSx7bmFtZToiY29kZXR5cGUiLGRlc2NyaXB0aW9uOiJUaGUgY29udGVudCB0eXBlIG9mIHRoZSBkYXRhIHNwZWNpZmllZCBieSAqKmNsYXNzaWQqKi4ifSx7bmFtZToiZGVjbGFyZSIsZGVzY3JpcHRpb246IlRoZSBwcmVzZW5jZSBvZiB0aGlzIEJvb2xlYW4gYXR0cmlidXRlIG1ha2VzIHRoaXMgZWxlbWVudCBhIGRlY2xhcmF0aW9uIG9ubHkuIFRoZSBvYmplY3QgbXVzdCBiZSBpbnN0YW50aWF0ZWQgYnkgYSBzdWJzZXF1ZW50IGA8b2JqZWN0PmAgZWxlbWVudC4gSW4gSFRNTDUsIHJlcGVhdCB0aGUgPG9iamVjdD4gZWxlbWVudCBjb21wbGV0ZWx5IGVhY2ggdGhhdCB0aGF0IHRoZSByZXNvdXJjZSBpcyByZXVzZWQuIn0se25hbWU6InN0YW5kYnkiLGRlc2NyaXB0aW9uOiJBIG1lc3NhZ2UgdGhhdCB0aGUgYnJvd3NlciBjYW4gc2hvdyB3aGlsZSBsb2FkaW5nIHRoZSBvYmplY3QncyBpbXBsZW1lbnRhdGlvbiBhbmQgZGF0YS4ifSx7bmFtZToidGFiaW5kZXgiLGRlc2NyaXB0aW9uOiJUaGUgcG9zaXRpb24gb2YgdGhlIGVsZW1lbnQgaW4gdGhlIHRhYmJpbmcgbmF2aWdhdGlvbiBvcmRlciBmb3IgdGhlIGN1cnJlbnQgZG9jdW1lbnQuIn1dLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9vYmplY3QifV19LHtuYW1lOiJwYXJhbSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHBhcmFtIGVsZW1lbnQgZGVmaW5lcyBwYXJhbWV0ZXJzIGZvciBwbHVnaW5zIGludm9rZWQgYnkgb2JqZWN0IGVsZW1lbnRzLiBJdCBkb2VzIG5vdCByZXByZXNlbnQgYW55dGhpbmcgb24gaXRzIG93bi4ifSxhdHRyaWJ1dGVzOlt7bmFtZToibmFtZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiTmFtZSBvZiB0aGUgcGFyYW1ldGVyLiJ9fSx7bmFtZToidmFsdWUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlNwZWNpZmllcyB0aGUgdmFsdWUgb2YgdGhlIHBhcmFtZXRlci4ifX0se25hbWU6InR5cGUiLGRlc2NyaXB0aW9uOidPbmx5IHVzZWQgaWYgdGhlIGB2YWx1ZXR5cGVgIGlzIHNldCB0byAicmVmIi4gU3BlY2lmaWVzIHRoZSBNSU1FIHR5cGUgb2YgdmFsdWVzIGZvdW5kIGF0IHRoZSBVUkkgc3BlY2lmaWVkIGJ5IHZhbHVlLid9LHtuYW1lOiJ2YWx1ZXR5cGUiLGRlc2NyaXB0aW9uOidTcGVjaWZpZXMgdGhlIHR5cGUgb2YgdGhlIGB2YWx1ZWAgYXR0cmlidXRlLiBQb3NzaWJsZSB2YWx1ZXMgYXJlOlxuXG4qICAgZGF0YTogRGVmYXVsdCB2YWx1ZS4gVGhlIHZhbHVlIGlzIHBhc3NlZCB0byB0aGUgb2JqZWN0XCdzIGltcGxlbWVudGF0aW9uIGFzIGEgc3RyaW5nLlxuKiAgIHJlZjogVGhlIHZhbHVlIGlzIGEgVVJJIHRvIGEgcmVzb3VyY2Ugd2hlcmUgcnVuLXRpbWUgdmFsdWVzIGFyZSBzdG9yZWQuXG4qICAgb2JqZWN0OiBBbiBJRCBvZiBhbm90aGVyIFtgPG9iamVjdD5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvb2JqZWN0ICJUaGUgSFRNTCA8b2JqZWN0PiBlbGVtZW50IHJlcHJlc2VudHMgYW4gZXh0ZXJuYWwgcmVzb3VyY2UsIHdoaWNoIGNhbiBiZSB0cmVhdGVkIGFzIGFuIGltYWdlLCBhIG5lc3RlZCBicm93c2luZyBjb250ZXh0LCBvciBhIHJlc291cmNlIHRvIGJlIGhhbmRsZWQgYnkgYSBwbHVnaW4uIikgaW4gdGhlIHNhbWUgZG9jdW1lbnQuJ31dLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9wYXJhbSJ9XX0se25hbWU6InZpZGVvIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJBIHZpZGVvIGVsZW1lbnQgaXMgdXNlZCBmb3IgcGxheWluZyB2aWRlb3Mgb3IgbW92aWVzLCBhbmQgYXVkaW8gZmlsZXMgd2l0aCBjYXB0aW9ucy4ifSxhdHRyaWJ1dGVzOlt7bmFtZToic3JjIn0se25hbWU6ImNyb3Nzb3JpZ2luIix2YWx1ZVNldDoieG8ifSx7bmFtZToicG9zdGVyIn0se25hbWU6InByZWxvYWQiLHZhbHVlU2V0OiJwbCJ9LHtuYW1lOiJhdXRvcGxheSIsdmFsdWVTZXQ6InYiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkEgQm9vbGVhbiBhdHRyaWJ1dGU7IGlmIHNwZWNpZmllZCwgdGhlIHZpZGVvIGF1dG9tYXRpY2FsbHkgYmVnaW5zIHRvIHBsYXkgYmFjayBhcyBzb29uIGFzIGl0IGNhbiBkbyBzbyB3aXRob3V0IHN0b3BwaW5nIHRvIGZpbmlzaCBsb2FkaW5nIHRoZSBkYXRhLiJ9fSx7bmFtZToibWVkaWFncm91cCJ9LHtuYW1lOiJsb29wIix2YWx1ZVNldDoidiJ9LHtuYW1lOiJtdXRlZCIsdmFsdWVTZXQ6InYifSx7bmFtZToiY29udHJvbHMiLHZhbHVlU2V0OiJ2In0se25hbWU6IndpZHRoIn0se25hbWU6ImhlaWdodCJ9XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvdmlkZW8ifV19LHtuYW1lOiJhdWRpbyIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiQW4gYXVkaW8gZWxlbWVudCByZXByZXNlbnRzIGEgc291bmQgb3IgYXVkaW8gc3RyZWFtLiJ9LGF0dHJpYnV0ZXM6W3tuYW1lOiJzcmMiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6J1RoZSBVUkwgb2YgdGhlIGF1ZGlvIHRvIGVtYmVkLiBUaGlzIGlzIHN1YmplY3QgdG8gW0hUVFAgYWNjZXNzIGNvbnRyb2xzXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0hUVFBfYWNjZXNzX2NvbnRyb2wpLiBUaGlzIGlzIG9wdGlvbmFsOyB5b3UgbWF5IGluc3RlYWQgdXNlIHRoZSBbYDxzb3VyY2U+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3NvdXJjZSAiVGhlIEhUTUwgPHNvdXJjZT4gZWxlbWVudCBzcGVjaWZpZXMgbXVsdGlwbGUgbWVkaWEgcmVzb3VyY2VzIGZvciB0aGUgPHBpY3R1cmU+LCB0aGUgPGF1ZGlvPiBlbGVtZW50LCBvciB0aGUgPHZpZGVvPiBlbGVtZW50LiIpIGVsZW1lbnQgd2l0aGluIHRoZSBhdWRpbyBibG9jayB0byBzcGVjaWZ5IHRoZSBhdWRpbyB0byBlbWJlZC4nfX0se25hbWU6ImNyb3Nzb3JpZ2luIix2YWx1ZVNldDoieG8iLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6J1RoaXMgZW51bWVyYXRlZCBhdHRyaWJ1dGUgaW5kaWNhdGVzIHdoZXRoZXIgdG8gdXNlIENPUlMgdG8gZmV0Y2ggdGhlIHJlbGF0ZWQgaW1hZ2UuIFtDT1JTLWVuYWJsZWQgcmVzb3VyY2VzXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0NPUlNfRW5hYmxlZF9JbWFnZSkgY2FuIGJlIHJldXNlZCBpbiB0aGUgW2A8Y2FudmFzPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9jYW52YXMgIlVzZSB0aGUgSFRNTCA8Y2FudmFzPiBlbGVtZW50IHdpdGggZWl0aGVyIHRoZSBjYW52YXMgc2NyaXB0aW5nIEFQSSBvciB0aGUgV2ViR0wgQVBJIHRvIGRyYXcgZ3JhcGhpY3MgYW5kIGFuaW1hdGlvbnMuIikgZWxlbWVudCB3aXRob3V0IGJlaW5nIF90YWludGVkXy4gVGhlIGFsbG93ZWQgdmFsdWVzIGFyZTpcblxuYW5vbnltb3VzXG5cblNlbmRzIGEgY3Jvc3Mtb3JpZ2luIHJlcXVlc3Qgd2l0aG91dCBhIGNyZWRlbnRpYWwuIEluIG90aGVyIHdvcmRzLCBpdCBzZW5kcyB0aGUgYE9yaWdpbjpgIEhUVFAgaGVhZGVyIHdpdGhvdXQgYSBjb29raWUsIFguNTA5IGNlcnRpZmljYXRlLCBvciBwZXJmb3JtaW5nIEhUVFAgQmFzaWMgYXV0aGVudGljYXRpb24uIElmIHRoZSBzZXJ2ZXIgZG9lcyBub3QgZ2l2ZSBjcmVkZW50aWFscyB0byB0aGUgb3JpZ2luIHNpdGUgKGJ5IG5vdCBzZXR0aW5nIHRoZSBgQWNjZXNzLUNvbnRyb2wtQWxsb3ctT3JpZ2luOmAgSFRUUCBoZWFkZXIpLCB0aGUgaW1hZ2Ugd2lsbCBiZSBfdGFpbnRlZF8sIGFuZCBpdHMgdXNhZ2UgcmVzdHJpY3RlZC5cblxudXNlLWNyZWRlbnRpYWxzXG5cblNlbmRzIGEgY3Jvc3Mtb3JpZ2luIHJlcXVlc3Qgd2l0aCBhIGNyZWRlbnRpYWwuIEluIG90aGVyIHdvcmRzLCBpdCBzZW5kcyB0aGUgYE9yaWdpbjpgIEhUVFAgaGVhZGVyIHdpdGggYSBjb29raWUsIGEgY2VydGlmaWNhdGUsIG9yIHBlcmZvcm1pbmcgSFRUUCBCYXNpYyBhdXRoZW50aWNhdGlvbi4gSWYgdGhlIHNlcnZlciBkb2VzIG5vdCBnaXZlIGNyZWRlbnRpYWxzIHRvIHRoZSBvcmlnaW4gc2l0ZSAodGhyb3VnaCBgQWNjZXNzLUNvbnRyb2wtQWxsb3ctQ3JlZGVudGlhbHM6YCBIVFRQIGhlYWRlciksIHRoZSBpbWFnZSB3aWxsIGJlIF90YWludGVkXyBhbmQgaXRzIHVzYWdlIHJlc3RyaWN0ZWQuXG5cbldoZW4gbm90IHByZXNlbnQsIHRoZSByZXNvdXJjZSBpcyBmZXRjaGVkIHdpdGhvdXQgYSBDT1JTIHJlcXVlc3QgKGkuZS4gd2l0aG91dCBzZW5kaW5nIHRoZSBgT3JpZ2luOmAgSFRUUCBoZWFkZXIpLCBwcmV2ZW50aW5nIGl0cyBub24tdGFpbnRlZCB1c2VkIGluIFtgPGNhbnZhcz5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvY2FudmFzICJVc2UgdGhlIEhUTUwgPGNhbnZhcz4gZWxlbWVudCB3aXRoIGVpdGhlciB0aGUgY2FudmFzIHNjcmlwdGluZyBBUEkgb3IgdGhlIFdlYkdMIEFQSSB0byBkcmF3IGdyYXBoaWNzIGFuZCBhbmltYXRpb25zLiIpIGVsZW1lbnRzLiBJZiBpbnZhbGlkLCBpdCBpcyBoYW5kbGVkIGFzIGlmIHRoZSBlbnVtZXJhdGVkIGtleXdvcmQgKiphbm9ueW1vdXMqKiB3YXMgdXNlZC4gU2VlIFtDT1JTIHNldHRpbmdzIGF0dHJpYnV0ZXNdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvSFRNTC9DT1JTX3NldHRpbmdzX2F0dHJpYnV0ZXMpIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uLid9fSx7bmFtZToicHJlbG9hZCIsdmFsdWVTZXQ6InBsIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGlzIGVudW1lcmF0ZWQgYXR0cmlidXRlIGlzIGludGVuZGVkIHRvIHByb3ZpZGUgYSBoaW50IHRvIHRoZSBicm93c2VyIGFib3V0IHdoYXQgdGhlIGF1dGhvciB0aGlua3Mgd2lsbCBsZWFkIHRvIHRoZSBiZXN0IHVzZXIgZXhwZXJpZW5jZS4gSXQgbWF5IGhhdmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOlxuXG4qICAgYG5vbmVgOiBJbmRpY2F0ZXMgdGhhdCB0aGUgYXVkaW8gc2hvdWxkIG5vdCBiZSBwcmVsb2FkZWQuXG4qICAgYG1ldGFkYXRhYDogSW5kaWNhdGVzIHRoYXQgb25seSBhdWRpbyBtZXRhZGF0YSAoZS5nLiBsZW5ndGgpIGlzIGZldGNoZWQuXG4qICAgYGF1dG9gOiBJbmRpY2F0ZXMgdGhhdCB0aGUgd2hvbGUgYXVkaW8gZmlsZSBjYW4gYmUgZG93bmxvYWRlZCwgZXZlbiBpZiB0aGUgdXNlciBpcyBub3QgZXhwZWN0ZWQgdG8gdXNlIGl0LlxuKiAgIF9lbXB0eSBzdHJpbmdfOiBBIHN5bm9ueW0gb2YgdGhlIGBhdXRvYCB2YWx1ZS5cblxuSWYgbm90IHNldCwgYHByZWxvYWRgJ3MgZGVmYXVsdCB2YWx1ZSBpcyBicm93c2VyLWRlZmluZWQgKGkuZS4gZWFjaCBicm93c2VyIG1heSBoYXZlIGl0cyBvd24gZGVmYXVsdCB2YWx1ZSkuIFRoZSBzcGVjIGFkdmlzZXMgaXQgdG8gYmUgc2V0IHRvIGBtZXRhZGF0YWAuXG5cbioqVXNhZ2Ugbm90ZXM6KipcblxuKiAgIFRoZSBgYXV0b3BsYXlgIGF0dHJpYnV0ZSBoYXMgcHJlY2VkZW5jZSBvdmVywqBgcHJlbG9hZGAuIElmIGBhdXRvcGxheWAgaXMgc3BlY2lmaWVkLCB0aGUgYnJvd3NlciB3b3VsZCBvYnZpb3VzbHkgbmVlZCB0byBzdGFydCBkb3dubG9hZGluZyB0aGUgYXVkaW8gZm9yIHBsYXliYWNrLlxuKiAgIFRoZSBicm93c2VyIGlzIG5vdCBmb3JjZWQgYnkgdGhlIHNwZWNpZmljYXRpb24gdG8gZm9sbG93IHRoZSB2YWx1ZSBvZiB0aGlzIGF0dHJpYnV0ZTsgaXQgaXMgYSBtZXJlIGhpbnQuIn19LHtuYW1lOiJhdXRvcGxheSIsdmFsdWVTZXQ6InYiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkEgQm9vbGVhbiBhdHRyaWJ1dGU6wqBpZiBzcGVjaWZpZWQsIHRoZSBhdWRpbyB3aWxsIGF1dG9tYXRpY2FsbHkgYmVnaW4gcGxheWJhY2sgYXMgc29vbiBhcyBpdCBjYW4gZG8gc28sIHdpdGhvdXQgd2FpdGluZyBmb3IgdGhlIGVudGlyZSBhdWRpbyBmaWxlIHRvIGZpbmlzaCBkb3dubG9hZGluZy5cblxuKipOb3RlKio6IFNpdGVzIHRoYXQgYXV0b21hdGljYWxseSBwbGF5IGF1ZGlvIChvciB2aWRlb3Mgd2l0aCBhbiBhdWRpbyB0cmFjaykgY2FuIGJlIGFuIHVucGxlYXNhbnQgZXhwZXJpZW5jZSBmb3IgdXNlcnMsIHNvIHNob3VsZCBiZSBhdm9pZGVkIHdoZW4gcG9zc2libGUuIElmIHlvdSBtdXN0IG9mZmVyIGF1dG9wbGF5IGZ1bmN0aW9uYWxpdHksIHlvdSBzaG91bGQgbWFrZSBpdCBvcHQtaW4gKHJlcXVpcmluZyBhIHVzZXIgdG8gc3BlY2lmaWNhbGx5IGVuYWJsZSBpdCkuIEhvd2V2ZXIsIHRoaXMgY2FuIGJlIHVzZWZ1bCB3aGVuIGNyZWF0aW5nIG1lZGlhIGVsZW1lbnRzIHdob3NlIHNvdXJjZSB3aWxsIGJlIHNldCBhdCBhIGxhdGVyIHRpbWUsIHVuZGVyIHVzZXIgY29udHJvbC4ifX0se25hbWU6Im1lZGlhZ3JvdXAifSx7bmFtZToibG9vcCIsdmFsdWVTZXQ6InYiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkEgQm9vbGVhbiBhdHRyaWJ1dGU6wqBpZiBzcGVjaWZpZWQsIHRoZSBhdWRpbyBwbGF5ZXIgd2lsbMKgYXV0b21hdGljYWxseSBzZWVrIGJhY2sgdG8gdGhlIHN0YXJ0wqB1cG9uIHJlYWNoaW5nIHRoZSBlbmQgb2YgdGhlIGF1ZGlvLiJ9fSx7bmFtZToibXV0ZWQiLHZhbHVlU2V0OiJ2IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJBIEJvb2xlYW4gYXR0cmlidXRlIHRoYXQgaW5kaWNhdGVzIHdoZXRoZXIgdGhlIGF1ZGlvIHdpbGwgYmUgaW5pdGlhbGx5IHNpbGVuY2VkLiBJdHMgZGVmYXVsdCB2YWx1ZSBpcyBgZmFsc2VgLiJ9fSx7bmFtZToiY29udHJvbHMiLHZhbHVlU2V0OiJ2IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJJZiB0aGlzIGF0dHJpYnV0ZSBpcyBwcmVzZW50LCB0aGUgYnJvd3NlciB3aWxsIG9mZmVyIGNvbnRyb2xzIHRvIGFsbG93IHRoZSB1c2VyIHRvIGNvbnRyb2wgYXVkaW8gcGxheWJhY2ssIGluY2x1ZGluZyB2b2x1bWUsIHNlZWtpbmcsIGFuZCBwYXVzZS9yZXN1bWUgcGxheWJhY2suIn19XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvYXVkaW8ifV19LHtuYW1lOiJzb3VyY2UiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBzb3VyY2UgZWxlbWVudCBhbGxvd3MgYXV0aG9ycyB0byBzcGVjaWZ5IG11bHRpcGxlIGFsdGVybmF0aXZlIG1lZGlhIHJlc291cmNlcyBmb3IgbWVkaWEgZWxlbWVudHMuIEl0IGRvZXMgbm90IHJlcHJlc2VudCBhbnl0aGluZyBvbiBpdHMgb3duLiJ9LGF0dHJpYnV0ZXM6W3tuYW1lOiJzcmMiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6J1JlcXVpcmVkIGZvciBbYDxhdWRpbz5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvYXVkaW8gIlRoZSBIVE1MIDxhdWRpbz4gZWxlbWVudCBpcyB1c2VkIHRvIGVtYmVkIHNvdW5kIGNvbnRlbnQgaW4gZG9jdW1lbnRzLiBJdCBtYXkgY29udGFpbiBvbmUgb3IgbW9yZSBhdWRpbyBzb3VyY2VzLCByZXByZXNlbnRlZCB1c2luZyB0aGUgc3JjIGF0dHJpYnV0ZSBvciB0aGUgPHNvdXJjZT4gZWxlbWVudDrCoHRoZSBicm93c2VyIHdpbGwgY2hvb3NlIHRoZSBtb3N0IHN1aXRhYmxlIG9uZS4gSXQgY2FuIGFsc28gYmUgdGhlIGRlc3RpbmF0aW9uIGZvciBzdHJlYW1lZCBtZWRpYSwgdXNpbmcgYSBNZWRpYVN0cmVhbS4iKSBhbmQgW2A8dmlkZW8+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3ZpZGVvICJUaGUgSFRNTCBWaWRlbyBlbGVtZW50ICg8dmlkZW8+KSBlbWJlZHMgYSBtZWRpYSBwbGF5ZXIgd2hpY2ggc3VwcG9ydHMgdmlkZW8gcGxheWJhY2sgaW50byB0aGUgZG9jdW1lbnQuIiksIGFkZHJlc3Mgb2YgdGhlIG1lZGlhIHJlc291cmNlLiBUaGUgdmFsdWUgb2YgdGhpcyBhdHRyaWJ1dGUgaXMgaWdub3JlZCB3aGVuIHRoZSBgPHNvdXJjZT5gIGVsZW1lbnQgaXMgcGxhY2VkIGluc2lkZSBhIFtgPHBpY3R1cmU+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3BpY3R1cmUgIlRoZSBIVE1MIDxwaWN0dXJlPiBlbGVtZW50IGNvbnRhaW5zIHplcm8gb3IgbW9yZSA8c291cmNlPiBlbGVtZW50cyBhbmQgb25lIDxpbWc+IGVsZW1lbnQgdG8gcHJvdmlkZSB2ZXJzaW9ucyBvZiBhbiBpbWFnZSBmb3IgZGlmZmVyZW50IGRpc3BsYXkvZGV2aWNlIHNjZW5hcmlvcy4iKSBlbGVtZW50Lid9fSx7bmFtZToidHlwZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIE1JTUUtdHlwZSBvZiB0aGUgcmVzb3VyY2UsIG9wdGlvbmFsbHkgd2l0aCBhIGBjb2RlY3NgIHBhcmFtZXRlci4gU2VlIFtSRkMgNDI4MV0oaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzQyODEpIGZvciBpbmZvcm1hdGlvbiBhYm91dCBob3cgdG8gc3BlY2lmeSBjb2RlY3MuIn19LHtuYW1lOiJzaXplcyIsZGVzY3JpcHRpb246J0lzIGEgbGlzdCBvZiBzb3VyY2Ugc2l6ZXMgdGhhdCBkZXNjcmliZXMgdGhlIGZpbmFsIHJlbmRlcmVkIHdpZHRoIG9mIHRoZSBpbWFnZSByZXByZXNlbnRlZCBieSB0aGUgc291cmNlLiBFYWNoIHNvdXJjZSBzaXplIGNvbnNpc3RzIG9mIGEgY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2YgbWVkaWEgY29uZGl0aW9uLWxlbmd0aCBwYWlycy4gVGhpcyBpbmZvcm1hdGlvbiBpcyB1c2VkIGJ5IHRoZSBicm93c2VyIHRvIGRldGVybWluZSwgYmVmb3JlIGxheWluZyB0aGUgcGFnZSBvdXQsIHdoaWNoIGltYWdlIGRlZmluZWQgaW4gW2BzcmNzZXRgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvc291cmNlI2F0dHItc3Jjc2V0KSB0byB1c2UuICBcblRoZSBgc2l6ZXNgIGF0dHJpYnV0ZSBoYXMgYW4gZWZmZWN0IG9ubHkgd2hlbiB0aGUgW2A8c291cmNlPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9zb3VyY2UgIlRoZSBIVE1MIDxzb3VyY2U+IGVsZW1lbnQgc3BlY2lmaWVzIG11bHRpcGxlIG1lZGlhIHJlc291cmNlcyBmb3IgdGhlIDxwaWN0dXJlPiwgdGhlIDxhdWRpbz4gZWxlbWVudCwgb3IgdGhlIDx2aWRlbz4gZWxlbWVudC4iKSBlbGVtZW50IGlzIHRoZSBkaXJlY3QgY2hpbGQgb2YgYSBbYDxwaWN0dXJlPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9waWN0dXJlICJUaGUgSFRNTCA8cGljdHVyZT4gZWxlbWVudCBjb250YWlucyB6ZXJvIG9yIG1vcmUgPHNvdXJjZT4gZWxlbWVudHMgYW5kIG9uZSA8aW1nPiBlbGVtZW50IHRvIHByb3ZpZGUgdmVyc2lvbnMgb2YgYW4gaW1hZ2UgZm9yIGRpZmZlcmVudCBkaXNwbGF5L2RldmljZSBzY2VuYXJpb3MuIikgZWxlbWVudC4nfSx7bmFtZToic3Jjc2V0IixkZXNjcmlwdGlvbjoiQSBsaXN0IG9mIG9uZSBvciBtb3JlIHN0cmluZ3Mgc2VwYXJhdGVkIGJ5IGNvbW1hcyBpbmRpY2F0aW5nIGEgc2V0IG9mIHBvc3NpYmxlIGltYWdlcyByZXByZXNlbnRlZCBieSB0aGUgc291cmNlIGZvciB0aGUgYnJvd3NlciB0byB1c2UuIEVhY2ggc3RyaW5nIGlzIGNvbXBvc2VkIG9mOlxuXG4xLiAgb25lIFVSTCB0byBhbiBpbWFnZSxcbjIuICBhIHdpZHRoIGRlc2NyaXB0b3IsIHRoYXQgaXMgYSBwb3NpdGl2ZSBpbnRlZ2VyIGRpcmVjdGx5IGZvbGxvd2VkIGJ5IGAndydgLiBUaGUgZGVmYXVsdCB2YWx1ZSwgaWYgbWlzc2luZywgaXMgdGhlIGluZmluaXR5LlxuMy4gIGEgcGl4ZWwgZGVuc2l0eSBkZXNjcmlwdG9yLCB0aGF0IGlzIGEgcG9zaXRpdmUgZmxvYXRpbmcgbnVtYmVyIGRpcmVjdGx5IGZvbGxvd2VkIGJ5IGAneCdgLiBUaGUgZGVmYXVsdCB2YWx1ZSwgaWYgbWlzc2luZywgaXMgYDF4YC5cblxuRWFjaCBzdHJpbmcgaW4gdGhlIGxpc3QgbXVzdCBoYXZlIGF0IGxlYXN0IGEgd2lkdGggZGVzY3JpcHRvciBvciBhIHBpeGVsIGRlbnNpdHkgZGVzY3JpcHRvciB0byBiZSB2YWxpZC4gQW1vbmcgdGhlIGxpc3QsIHRoZXJlIG11c3QgYmUgb25seSBvbmUgc3RyaW5nIGNvbnRhaW5pbmcgdGhlIHNhbWUgdHVwbGUgb2Ygd2lkdGggZGVzY3JpcHRvciBhbmQgcGl4ZWwgZGVuc2l0eSBkZXNjcmlwdG9yLiAgXG5UaGUgYnJvd3NlciBjaG9vc2VzIHRoZSBtb3N0IGFkZXF1YXRlIGltYWdlIHRvIGRpc3BsYXkgYXQgYSBnaXZlbiBwb2ludCBvZiB0aW1lLiAgXG5UaGUgYHNyY3NldGAgYXR0cmlidXRlIGhhcyBhbiBlZmZlY3Qgb25seSB3aGVuIHRoZSBbYDxzb3VyY2U+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3NvdXJjZSBcIlRoZSBIVE1MIDxzb3VyY2U+IGVsZW1lbnQgc3BlY2lmaWVzIG11bHRpcGxlIG1lZGlhIHJlc291cmNlcyBmb3IgdGhlIDxwaWN0dXJlPiwgdGhlIDxhdWRpbz4gZWxlbWVudCwgb3IgdGhlIDx2aWRlbz4gZWxlbWVudC5cIikgZWxlbWVudCBpcyB0aGUgZGlyZWN0IGNoaWxkIG9mIGEgW2A8cGljdHVyZT5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvcGljdHVyZSBcIlRoZSBIVE1MIDxwaWN0dXJlPiBlbGVtZW50IGNvbnRhaW5zIHplcm8gb3IgbW9yZSA8c291cmNlPiBlbGVtZW50cyBhbmQgb25lIDxpbWc+IGVsZW1lbnQgdG8gcHJvdmlkZSB2ZXJzaW9ucyBvZiBhbiBpbWFnZSBmb3IgZGlmZmVyZW50IGRpc3BsYXkvZGV2aWNlIHNjZW5hcmlvcy5cIikgZWxlbWVudC4ifSx7bmFtZToibWVkaWEiLGRlc2NyaXB0aW9uOidbTWVkaWEgcXVlcnldKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvQ1NTL01lZGlhX3F1ZXJpZXMpIG9mIHRoZSByZXNvdXJjZVwncyBpbnRlbmRlZCBtZWRpYTsgdGhpcyBzaG91bGQgYmUgdXNlZCBvbmx5IGluIGEgW2A8cGljdHVyZT5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvcGljdHVyZSAiVGhlIEhUTUwgPHBpY3R1cmU+IGVsZW1lbnQgY29udGFpbnMgemVybyBvciBtb3JlIDxzb3VyY2U+IGVsZW1lbnRzIGFuZCBvbmUgPGltZz4gZWxlbWVudCB0byBwcm92aWRlIHZlcnNpb25zIG9mIGFuIGltYWdlIGZvciBkaWZmZXJlbnQgZGlzcGxheS9kZXZpY2Ugc2NlbmFyaW9zLiIpIGVsZW1lbnQuJ31dLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9zb3VyY2UifV19LHtuYW1lOiJ0cmFjayIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHRyYWNrIGVsZW1lbnQgYWxsb3dzIGF1dGhvcnMgdG8gc3BlY2lmeSBleHBsaWNpdCBleHRlcm5hbCB0aW1lZCB0ZXh0IHRyYWNrcyBmb3IgbWVkaWEgZWxlbWVudHMuIEl0IGRvZXMgbm90IHJlcHJlc2VudCBhbnl0aGluZyBvbiBpdHMgb3duLiJ9LGF0dHJpYnV0ZXM6W3tuYW1lOiJkZWZhdWx0Iix2YWx1ZVNldDoidiIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhpcyBhdHRyaWJ1dGUgaW5kaWNhdGVzIHRoYXQgdGhlIHRyYWNrIHNob3VsZCBiZSBlbmFibGVkIHVubGVzcyB0aGUgdXNlcidzIHByZWZlcmVuY2VzIGluZGljYXRlIHRoYXQgYW5vdGhlciB0cmFjayBpcyBtb3JlIGFwcHJvcHJpYXRlLiBUaGlzIG1heSBvbmx5IGJlIHVzZWQgb24gb25lIGB0cmFja2AgZWxlbWVudCBwZXIgbWVkaWEgZWxlbWVudC4ifX0se25hbWU6ImtpbmQiLHZhbHVlU2V0OiJ0ayIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiSG93IHRoZSB0ZXh0IHRyYWNrIGlzIG1lYW50IHRvIGJlIHVzZWQuIElmIG9taXR0ZWQgdGhlIGRlZmF1bHQga2luZCBpcyBgc3VidGl0bGVzYC4gSWYgdGhlIGF0dHJpYnV0ZSBpcyBub3QgcHJlc2VudCwgaXQgd2lsbCB1c2UgdGhlIGBzdWJ0aXRsZXNgLiBJZiB0aGUgYXR0cmlidXRlIGNvbnRhaW5zIGFuIGludmFsaWQgdmFsdWUsIGl0IHdpbGwgdXNlIGBtZXRhZGF0YWAuIChWZXJzaW9ucyBvZiBDaHJvbWUgZWFybGllciB0aGFuIDUyIHRyZWF0ZWQgYW4gaW52YWxpZCB2YWx1ZSBhcyBgc3VidGl0bGVzYC4pwqBUaGUgZm9sbG93aW5nIGtleXdvcmRzIGFyZSBhbGxvd2VkOlxuXG4qICAgYHN1YnRpdGxlc2BcbiAgICAqICAgU3VidGl0bGVzIHByb3ZpZGUgdHJhbnNsYXRpb24gb2YgY29udGVudCB0aGF0IGNhbm5vdCBiZSB1bmRlcnN0b29kIGJ5IHRoZSB2aWV3ZXIuIEZvciBleGFtcGxlIGRpYWxvZ3VlIG9yIHRleHQgdGhhdCBpcyBub3QgRW5nbGlzaCBpbiBhbiBFbmdsaXNoIGxhbmd1YWdlIGZpbG0uXG4gICAgKiAgIFN1YnRpdGxlcyBtYXkgY29udGFpbiBhZGRpdGlvbmFsIGNvbnRlbnQsIHVzdWFsbHkgZXh0cmEgYmFja2dyb3VuZCBpbmZvcm1hdGlvbi4gRm9yIGV4YW1wbGUgdGhlIHRleHQgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgU3RhciBXYXJzIGZpbG1zLCBvciB0aGUgZGF0ZSwgdGltZSwgYW5kIGxvY2F0aW9uIG9mIGEgc2NlbmUuXG4qICAgYGNhcHRpb25zYFxuICAgICogICBDbG9zZWQgY2FwdGlvbnMgcHJvdmlkZSBhIHRyYW5zY3JpcHRpb24gYW5kIHBvc3NpYmx5IGEgdHJhbnNsYXRpb24gb2YgYXVkaW8uXG4gICAgKiAgIEl0IG1heSBpbmNsdWRlIGltcG9ydGFudCBub24tdmVyYmFsIGluZm9ybWF0aW9uIHN1Y2ggYXMgbXVzaWMgY3VlcyBvciBzb3VuZCBlZmZlY3RzLiBJdCBtYXkgaW5kaWNhdGUgdGhlIGN1ZSdzIHNvdXJjZSAoZS5nLiBtdXNpYywgdGV4dCwgY2hhcmFjdGVyKS5cbiAgICAqICAgU3VpdGFibGUgZm9yIHVzZXJzIHdobyBhcmUgZGVhZiBvciB3aGVuIHRoZSBzb3VuZCBpcyBtdXRlZC5cbiogICBgZGVzY3JpcHRpb25zYFxuICAgICogICBUZXh0dWFsIGRlc2NyaXB0aW9uIG9mIHRoZSB2aWRlbyBjb250ZW50LlxuICAgICogICBTdWl0YWJsZSBmb3IgdXNlcnMgd2hvIGFyZSBibGluZCBvciB3aGVyZSB0aGUgdmlkZW8gY2Fubm90IGJlIHNlZW4uXG4qICAgYGNoYXB0ZXJzYFxuICAgICogICBDaGFwdGVyIHRpdGxlcyBhcmUgaW50ZW5kZWQgdG8gYmUgdXNlZCB3aGVuIHRoZSB1c2VyIGlzIG5hdmlnYXRpbmcgdGhlIG1lZGlhIHJlc291cmNlLlxuKiAgIGBtZXRhZGF0YWBcbiAgICAqICAgVHJhY2tzIHVzZWQgYnkgc2NyaXB0cy4gTm90IHZpc2libGUgdG8gdGhlIHVzZXIuIn19LHtuYW1lOiJsYWJlbCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiQSB1c2VyLXJlYWRhYmxlIHRpdGxlIG9mIHRoZSB0ZXh0IHRyYWNrIHdoaWNoIGlzIHVzZWQgYnkgdGhlIGJyb3dzZXIgd2hlbiBsaXN0aW5nIGF2YWlsYWJsZSB0ZXh0IHRyYWNrcy4ifX0se25hbWU6InNyYyIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTonQWRkcmVzcyBvZiB0aGUgdHJhY2sgKGAudnR0YCBmaWxlKS4gTXVzdCBiZSBhIHZhbGlkIFVSTC4gVGhpcyBhdHRyaWJ1dGUgbXVzdCBiZSBzcGVjaWZpZWQgYW5kIGl0cyBVUkwgdmFsdWUgbXVzdCBoYXZlIHRoZSBzYW1lIG9yaWdpbiBhcyB0aGUgZG9jdW1lbnQg4oCUIHVubGVzcyB0aGUgW2A8YXVkaW8+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2F1ZGlvICJUaGUgSFRNTCA8YXVkaW8+IGVsZW1lbnQgaXMgdXNlZCB0byBlbWJlZCBzb3VuZCBjb250ZW50IGluIGRvY3VtZW50cy4gSXQgbWF5IGNvbnRhaW4gb25lIG9yIG1vcmUgYXVkaW8gc291cmNlcywgcmVwcmVzZW50ZWQgdXNpbmcgdGhlIHNyYyBhdHRyaWJ1dGUgb3IgdGhlIDxzb3VyY2U+IGVsZW1lbnQ6wqB0aGUgYnJvd3NlciB3aWxsIGNob29zZSB0aGUgbW9zdCBzdWl0YWJsZSBvbmUuIEl0IGNhbiBhbHNvIGJlIHRoZSBkZXN0aW5hdGlvbiBmb3Igc3RyZWFtZWQgbWVkaWEsIHVzaW5nIGEgTWVkaWFTdHJlYW0uIikgb3IgW2A8dmlkZW8+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3ZpZGVvICJUaGUgSFRNTCBWaWRlbyBlbGVtZW50ICg8dmlkZW8+KSBlbWJlZHMgYSBtZWRpYSBwbGF5ZXIgd2hpY2ggc3VwcG9ydHMgdmlkZW8gcGxheWJhY2sgaW50byB0aGUgZG9jdW1lbnQuIikgcGFyZW50IGVsZW1lbnQgb2YgdGhlIGB0cmFja2AgZWxlbWVudCBoYXMgYSBbYGNyb3Nzb3JpZ2luYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9DT1JTX3NldHRpbmdzX2F0dHJpYnV0ZXMpIGF0dHJpYnV0ZS4nfX0se25hbWU6InNyY2xhbmciLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6Ikxhbmd1YWdlIG9mIHRoZSB0cmFjayB0ZXh0IGRhdGEuIEl0IG11c3QgYmUgYSB2YWxpZCBbQkNQIDQ3XShodHRwczovL3IxMmEuZ2l0aHViLmlvL2FwcC1zdWJ0YWdzLykgbGFuZ3VhZ2UgdGFnLiBJZiB0aGUgYGtpbmRgIGF0dHJpYnV0ZSBpcyBzZXQgdG/CoGBzdWJ0aXRsZXMsYCB0aGVuIGBzcmNsYW5nYCBtdXN0IGJlIGRlZmluZWQuIn19XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvdHJhY2sifV19LHtuYW1lOiJtYXAiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBtYXAgZWxlbWVudCwgaW4gY29uanVuY3Rpb24gd2l0aCBhbiBpbWcgZWxlbWVudCBhbmQgYW55IGFyZWEgZWxlbWVudCBkZXNjZW5kYW50cywgZGVmaW5lcyBhbiBpbWFnZSBtYXAuIFRoZSBlbGVtZW50IHJlcHJlc2VudHMgaXRzIGNoaWxkcmVuLiJ9LGF0dHJpYnV0ZXM6W3tuYW1lOiJuYW1lIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgbmFtZSBhdHRyaWJ1dGUgZ2l2ZXMgdGhlIG1hcCBhIG5hbWUgc28gdGhhdCBpdCBjYW4gYmUgcmVmZXJlbmNlZC4gVGhlIGF0dHJpYnV0ZSBtdXN0IGJlIHByZXNlbnQgYW5kIG11c3QgaGF2ZSBhIG5vbi1lbXB0eSB2YWx1ZSB3aXRoIG5vIHNwYWNlIGNoYXJhY3RlcnMuIFRoZSB2YWx1ZSBvZiB0aGUgbmFtZSBhdHRyaWJ1dGUgbXVzdCBub3QgYmUgYSBjb21wYXRpYmlsaXR5LWNhc2VsZXNzIG1hdGNoIGZvciB0aGUgdmFsdWUgb2YgdGhlIG5hbWUgYXR0cmlidXRlIG9mIGFub3RoZXIgbWFwIGVsZW1lbnQgaW4gdGhlIHNhbWUgZG9jdW1lbnQuIElmIHRoZSBpZCBhdHRyaWJ1dGUgaXMgYWxzbyBzcGVjaWZpZWQsIGJvdGggYXR0cmlidXRlcyBtdXN0IGhhdmUgdGhlIHNhbWUgdmFsdWUuIn19XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvbWFwIn1dfSx7bmFtZToiYXJlYSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGFyZWEgZWxlbWVudCByZXByZXNlbnRzIGVpdGhlciBhIGh5cGVybGluayB3aXRoIHNvbWUgdGV4dCBhbmQgYSBjb3JyZXNwb25kaW5nIGFyZWEgb24gYW4gaW1hZ2UgbWFwLCBvciBhIGRlYWQgYXJlYSBvbiBhbiBpbWFnZSBtYXAuIn0sYXR0cmlidXRlczpbe25hbWU6ImFsdCJ9LHtuYW1lOiJjb29yZHMifSx7bmFtZToic2hhcGUiLHZhbHVlU2V0OiJzaCJ9LHtuYW1lOiJocmVmIn0se25hbWU6InRhcmdldCJ9LHtuYW1lOiJkb3dubG9hZCJ9LHtuYW1lOiJwaW5nIn0se25hbWU6InJlbCJ9LHtuYW1lOiJocmVmbGFuZyJ9LHtuYW1lOiJ0eXBlIn0se25hbWU6ImFjY2Vzc2tleSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIGtleWJvYXJkIG5hdmlnYXRpb24gYWNjZWxlcmF0b3IgZm9yIHRoZSBlbGVtZW50LiBQcmVzc2luZyBBTFQgb3IgYSBzaW1pbGFyIGtleSBpbiBhc3NvY2lhdGlvbiB3aXRoIHRoZSBzcGVjaWZpZWQgY2hhcmFjdGVyIHNlbGVjdHMgdGhlIGZvcm0gY29udHJvbCBjb3JyZWxhdGVkIHdpdGggdGhhdCBrZXkgc2VxdWVuY2UuIFBhZ2UgZGVzaWduZXJzIGFyZSBmb3Jld2FybmVkIHRvIGF2b2lkIGtleSBzZXF1ZW5jZXMgYWxyZWFkeSBib3VuZCB0byBicm93c2Vycy4gVGhpcyBhdHRyaWJ1dGUgaXMgZ2xvYmFsIHNpbmNlIEhUTUw1LiJ9XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvYXJlYSJ9XX0se25hbWU6InRhYmxlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgdGFibGUgZWxlbWVudCByZXByZXNlbnRzIGRhdGEgd2l0aCBtb3JlIHRoYW4gb25lIGRpbWVuc2lvbiwgaW4gdGhlIGZvcm0gb2YgYSB0YWJsZS4ifSxhdHRyaWJ1dGVzOlt7bmFtZToiYm9yZGVyIn0se25hbWU6ImFsaWduIixkZXNjcmlwdGlvbjonVGhpcyBlbnVtZXJhdGVkIGF0dHJpYnV0ZSBpbmRpY2F0ZXMgaG93IHRoZSB0YWJsZSBtdXN0IGJlIGFsaWduZWQgaW5zaWRlIHRoZSBjb250YWluaW5nIGRvY3VtZW50LiBJdCBtYXkgaGF2ZSB0aGUgZm9sbG93aW5nIHZhbHVlczpcblxuKiAgIGxlZnQ6IHRoZSB0YWJsZSBpcyBkaXNwbGF5ZWQgb24gdGhlIGxlZnQgc2lkZSBvZiB0aGUgZG9jdW1lbnQ7XG4qICAgY2VudGVyOiB0aGUgdGFibGUgaXMgZGlzcGxheWVkIGluIHRoZSBjZW50ZXIgb2YgdGhlIGRvY3VtZW50O1xuKiAgIHJpZ2h0OiB0aGUgdGFibGUgaXMgZGlzcGxheWVkIG9uIHRoZSByaWdodCBzaWRlIG9mIHRoZSBkb2N1bWVudC5cblxuKipVc2FnZSBOb3RlKipcblxuKiAgICoqRG8gbm90IHVzZSB0aGlzIGF0dHJpYnV0ZSoqLCBhcyBpdCBoYXMgYmVlbiBkZXByZWNhdGVkLiBUaGUgW2A8dGFibGU+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3RhYmxlICJUaGUgSFRNTCA8dGFibGU+IGVsZW1lbnQgcmVwcmVzZW50cyB0YWJ1bGFyIGRhdGEg4oCUIHRoYXQgaXMsIGluZm9ybWF0aW9uIHByZXNlbnRlZCBpbiBhIHR3by1kaW1lbnNpb25hbCB0YWJsZSBjb21wcmlzZWQgb2Ygcm93cyBhbmQgY29sdW1ucyBvZiBjZWxscyBjb250YWluaW5nIGRhdGEuIikgZWxlbWVudCBzaG91bGQgYmUgc3R5bGVkIHVzaW5nIFtDU1NdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvQ1NTKS4gU2V0IFtgbWFyZ2luLWxlZnRgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvbWFyZ2luLWxlZnQgIlRoZSBtYXJnaW4tbGVmdCBDU1MgcHJvcGVydHkgc2V0cyB0aGUgbWFyZ2luIGFyZWEgb24gdGhlIGxlZnQgc2lkZSBvZiBhbiBlbGVtZW50LiBBIHBvc2l0aXZlIHZhbHVlIHBsYWNlcyBpdCBmYXJ0aGVyIGZyb20gaXRzIG5laWdoYm9ycywgd2hpbGUgYSBuZWdhdGl2ZSB2YWx1ZSBwbGFjZXMgaXQgY2xvc2VyLiIpIGFuZCBbYG1hcmdpbi1yaWdodGBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9tYXJnaW4tcmlnaHQgIlRoZSBtYXJnaW4tcmlnaHQgQ1NTIHByb3BlcnR5IHNldHMgdGhlIG1hcmdpbiBhcmVhIG9uIHRoZSByaWdodCBzaWRlIG9mIGFuIGVsZW1lbnQuIEEgcG9zaXRpdmUgdmFsdWUgcGxhY2VzIGl0IGZhcnRoZXIgZnJvbSBpdHMgbmVpZ2hib3JzLCB3aGlsZSBhIG5lZ2F0aXZlIHZhbHVlIHBsYWNlcyBpdCBjbG9zZXIuIikgdG8gYGF1dG9gIG9yIFtgbWFyZ2luYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL21hcmdpbiAiVGhlIG1hcmdpbiBDU1MgcHJvcGVydHkgc2V0cyB0aGUgbWFyZ2luIGFyZWEgb24gYWxsIGZvdXIgc2lkZXMgb2YgYW4gZWxlbWVudC4gSXQgaXMgYSBzaG9ydGhhbmQgZm9yIG1hcmdpbi10b3AsIG1hcmdpbi1yaWdodCwgbWFyZ2luLWJvdHRvbSwgYW5kIG1hcmdpbi1sZWZ0LiIpIHRvIGAwIGF1dG9gIHRvIGFjaGlldmUgYW4gZWZmZWN0IHRoYXQgaXMgc2ltaWxhciB0byB0aGUgYWxpZ24gYXR0cmlidXRlLlxuKiAgIFByaW9yIHRvIEZpcmVmb3ggNCwgRmlyZWZveCBhbHNvIHN1cHBvcnRlZCB0aGUgYG1pZGRsZWAsIGBhYnNtaWRkbGVgLCBhbmQgYGFic2NlbnRlcmAgdmFsdWVzIGFzIHN5bm9ueW1zIG9mIGBjZW50ZXJgLCBpbiBxdWlya3MgbW9kZSBvbmx5Lid9XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvdGFibGUifV19LHtuYW1lOiJjYXB0aW9uIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgY2FwdGlvbiBlbGVtZW50IHJlcHJlc2VudHMgdGhlIHRpdGxlIG9mIHRoZSB0YWJsZSB0aGF0IGlzIGl0cyBwYXJlbnQsIGlmIGl0IGhhcyBhIHBhcmVudCBhbmQgdGhhdCBpcyBhIHRhYmxlIGVsZW1lbnQuIn0sYXR0cmlidXRlczpbe25hbWU6ImFsaWduIixkZXNjcmlwdGlvbjonVGhpcyBlbnVtZXJhdGVkIGF0dHJpYnV0ZSBpbmRpY2F0ZXMgaG93IHRoZSBjYXB0aW9uIG11c3QgYmUgYWxpZ25lZCB3aXRoIHJlc3BlY3QgdG8gdGhlIHRhYmxlLiBJdCBtYXkgaGF2ZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6XG5cbmBsZWZ0YFxuXG5UaGUgY2FwdGlvbiBpcyBkaXNwbGF5ZWQgdG8gdGhlIGxlZnQgb2YgdGhlIHRhYmxlLlxuXG5gdG9wYFxuXG5UaGUgY2FwdGlvbiBpcyBkaXNwbGF5ZWQgYWJvdmUgdGhlIHRhYmxlLlxuXG5gcmlnaHRgXG5cblRoZSBjYXB0aW9uIGlzIGRpc3BsYXllZCB0byB0aGUgcmlnaHQgb2YgdGhlIHRhYmxlLlxuXG5gYm90dG9tYFxuXG5UaGUgY2FwdGlvbiBpcyBkaXNwbGF5ZWQgYmVsb3cgdGhlIHRhYmxlLlxuXG4qKlVzYWdlIG5vdGU6KiogRG8gbm90IHVzZSB0aGlzIGF0dHJpYnV0ZSwgYXMgaXQgaGFzIGJlZW4gZGVwcmVjYXRlZC4gVGhlIFtgPGNhcHRpb24+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2NhcHRpb24gIlRoZSBIVE1MIFRhYmxlIENhcHRpb24gZWxlbWVudCAoPGNhcHRpb24+KSBzcGVjaWZpZXMgdGhlIGNhcHRpb24gKG9yIHRpdGxlKSBvZiBhIHRhYmxlLCBhbmQgaWYgdXNlZCBpcyBhbHdheXMgdGhlIGZpcnN0IGNoaWxkIG9mIGEgPHRhYmxlPi4iKSBlbGVtZW50IHNob3VsZCBiZSBzdHlsZWQgdXNpbmcgdGhlIFtDU1NdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvQ1NTKSBwcm9wZXJ0aWVzIFtgY2FwdGlvbi1zaWRlYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL2NhcHRpb24tc2lkZSAiVGhlIGNhcHRpb24tc2lkZSBDU1MgcHJvcGVydHkgcHV0cyB0aGUgY29udGVudCBvZiBhIHRhYmxlXCdzIDxjYXB0aW9uPiBvbiB0aGUgc3BlY2lmaWVkIHNpZGUuIFRoZSB2YWx1ZXMgYXJlIHJlbGF0aXZlIHRvIHRoZSB3cml0aW5nLW1vZGUgb2YgdGhlIHRhYmxlLiIpIGFuZCBbYHRleHQtYWxpZ25gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvdGV4dC1hbGlnbiAiVGhlIHRleHQtYWxpZ24gQ1NTIHByb3BlcnR5IHNldHMgdGhlIGhvcml6b250YWwgYWxpZ25tZW50IG9mIGFuIGlubGluZSBvciB0YWJsZS1jZWxsIGJveC4gVGhpcyBtZWFucyBpdCB3b3JrcyBsaWtlIHZlcnRpY2FsLWFsaWduIGJ1dCBpbiB0aGUgaG9yaXpvbnRhbCBkaXJlY3Rpb24uIikuJ31dLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9jYXB0aW9uIn1dfSx7bmFtZToiY29sZ3JvdXAiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBjb2xncm91cCBlbGVtZW50IHJlcHJlc2VudHMgYSBncm91cCBvZiBvbmUgb3IgbW9yZSBjb2x1bW5zIGluIHRoZSB0YWJsZSB0aGF0IGlzIGl0cyBwYXJlbnQsIGlmIGl0IGhhcyBhIHBhcmVudCBhbmQgdGhhdCBpcyBhIHRhYmxlIGVsZW1lbnQuIn0sYXR0cmlidXRlczpbe25hbWU6InNwYW4ifSx7bmFtZToiYWxpZ24iLGRlc2NyaXB0aW9uOidUaGlzIGVudW1lcmF0ZWQgYXR0cmlidXRlIHNwZWNpZmllcyBob3cgaG9yaXpvbnRhbCBhbGlnbm1lbnQgb2YgZWFjaCBjb2x1bW4gY2VsbCBjb250ZW50IHdpbGwgYmUgaGFuZGxlZC4gUG9zc2libGUgdmFsdWVzIGFyZTpcblxuKiAgIGBsZWZ0YCwgYWxpZ25pbmcgdGhlIGNvbnRlbnQgdG8gdGhlIGxlZnQgb2YgdGhlIGNlbGxcbiogICBgY2VudGVyYCwgY2VudGVyaW5nIHRoZSBjb250ZW50IGluIHRoZSBjZWxsXG4qICAgYHJpZ2h0YCwgYWxpZ25pbmcgdGhlIGNvbnRlbnQgdG8gdGhlIHJpZ2h0IG9mIHRoZSBjZWxsXG4qICAgYGp1c3RpZnlgLCBpbnNlcnRpbmcgc3BhY2VzIGludG8gdGhlIHRleHR1YWwgY29udGVudCBzbyB0aGF0IHRoZSBjb250ZW50IGlzIGp1c3RpZmllZCBpbiB0aGUgY2VsbFxuKiAgIGBjaGFyYCwgYWxpZ25pbmcgdGhlIHRleHR1YWwgY29udGVudCBvbiBhIHNwZWNpYWwgY2hhcmFjdGVyIHdpdGggYSBtaW5pbWFsIG9mZnNldCwgZGVmaW5lZCBieSB0aGUgW2BjaGFyYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2NvbCNhdHRyLWNoYXIpIGFuZCBbYGNoYXJvZmZgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvY29sI2F0dHItY2hhcm9mZikgYXR0cmlidXRlcyBVbmltcGxlbWVudGVkIChzZWUgW2J1Z8KgMjIxMl0oaHR0cHM6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxMiAiY2hhcmFjdGVyIGFsaWdubWVudCBub3QgaW1wbGVtZW50ZWQgKGFsaWduPWNoYXIsIGNoYXJvZmY9LCB0ZXh0LWFsaWduOjxzdHJpbmc+KSIpKS5cblxuSWYgdGhpcyBhdHRyaWJ1dGUgaXMgbm90IHNldCwgdGhlIGBsZWZ0YCB2YWx1ZSBpcyBhc3N1bWVkLiBUaGUgZGVzY2VuZGFudCBbYDxjb2w+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2NvbCAiVGhlIEhUTUwgPGNvbD4gZWxlbWVudCBkZWZpbmVzIGEgY29sdW1uIHdpdGhpbiBhIHRhYmxlIGFuZCBpcyB1c2VkIGZvciBkZWZpbmluZyBjb21tb24gc2VtYW50aWNzIG9uIGFsbCBjb21tb24gY2VsbHMuIEl0IGlzIGdlbmVyYWxseSBmb3VuZCB3aXRoaW4gYSA8Y29sZ3JvdXA+IGVsZW1lbnQuIikgZWxlbWVudHMgbWF5IG92ZXJyaWRlIHRoaXMgdmFsdWUgdXNpbmcgdGhlaXIgb3duIFtgYWxpZ25gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvY29sI2F0dHItYWxpZ24pIGF0dHJpYnV0ZS5cblxuKipOb3RlOioqIERvIG5vdCB1c2UgdGhpcyBhdHRyaWJ1dGUgYXMgaXQgaXMgb2Jzb2xldGUgKG5vdCBzdXBwb3J0ZWQpIGluIHRoZSBsYXRlc3Qgc3RhbmRhcmQuXG5cbiogICBUbyBhY2hpZXZlIHRoZSBzYW1lIGVmZmVjdCBhcyB0aGUgYGxlZnRgLCBgY2VudGVyYCwgYHJpZ2h0YCBvciBganVzdGlmeWAgdmFsdWVzOlxuICAgICogICBEbyBub3QgdHJ5IHRvIHNldCB0aGUgW2B0ZXh0LWFsaWduYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL3RleHQtYWxpZ24gIlRoZSB0ZXh0LWFsaWduIENTUyBwcm9wZXJ0eSBzZXRzIHRoZSBob3Jpem9udGFsIGFsaWdubWVudCBvZiBhbiBpbmxpbmUgb3IgdGFibGUtY2VsbCBib3guIFRoaXMgbWVhbnMgaXQgd29ya3MgbGlrZSB2ZXJ0aWNhbC1hbGlnbiBidXQgaW4gdGhlIGhvcml6b250YWwgZGlyZWN0aW9uLiIpIHByb3BlcnR5IG9uIGEgc2VsZWN0b3IgZ2l2aW5nIGEgW2A8Y29sZ3JvdXA+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2NvbGdyb3VwICJUaGUgSFRNTCA8Y29sZ3JvdXA+IGVsZW1lbnQgZGVmaW5lcyBhIGdyb3VwIG9mIGNvbHVtbnMgd2l0aGluIGEgdGFibGUuIikgZWxlbWVudC4gQmVjYXVzZSBbYDx0ZD5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvdGQgIlRoZSBIVE1MIDx0ZD4gZWxlbWVudCBkZWZpbmVzIGEgY2VsbCBvZiBhIHRhYmxlIHRoYXQgY29udGFpbnMgZGF0YS4gSXQgcGFydGljaXBhdGVzIGluIHRoZSB0YWJsZSBtb2RlbC4iKSBlbGVtZW50cyBhcmUgbm90IGRlc2NlbmRhbnQgb2YgdGhlIFtgPGNvbGdyb3VwPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9jb2xncm91cCAiVGhlIEhUTUwgPGNvbGdyb3VwPiBlbGVtZW50IGRlZmluZXMgYSBncm91cCBvZiBjb2x1bW5zIHdpdGhpbiBhIHRhYmxlLiIpIGVsZW1lbnQsIHRoZXkgd29uXCd0IGluaGVyaXQgaXQuXG4gICAgKiAgIElmIHRoZSB0YWJsZSBkb2VzblwndCB1c2UgYSBbYGNvbHNwYW5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvdGQjYXR0ci1jb2xzcGFuKSBhdHRyaWJ1dGUsIHVzZSBvbmUgYHRkOm50aC1jaGlsZChhbitiKWAgQ1NTIHNlbGVjdG9yIHBlciBjb2x1bW4sIHdoZXJlIGEgaXMgdGhlIHRvdGFsIG51bWJlciBvZiB0aGUgY29sdW1ucyBpbiB0aGUgdGFibGUgYW5kIGIgaXMgdGhlIG9yZGluYWwgcG9zaXRpb24gb2YgdGhpcyBjb2x1bW4gaW4gdGhlIHRhYmxlLiBPbmx5IGFmdGVyIHRoaXMgc2VsZWN0b3IgdGhlIFtgdGV4dC1hbGlnbmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy90ZXh0LWFsaWduICJUaGUgdGV4dC1hbGlnbiBDU1MgcHJvcGVydHkgc2V0cyB0aGUgaG9yaXpvbnRhbCBhbGlnbm1lbnQgb2YgYW4gaW5saW5lIG9yIHRhYmxlLWNlbGwgYm94LiBUaGlzIG1lYW5zIGl0IHdvcmtzIGxpa2UgdmVydGljYWwtYWxpZ24gYnV0IGluIHRoZSBob3Jpem9udGFsIGRpcmVjdGlvbi4iKSBwcm9wZXJ0eSBjYW4gYmUgdXNlZC5cbiAgICAqICAgSWYgdGhlIHRhYmxlIGRvZXMgdXNlIGEgW2Bjb2xzcGFuYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3RkI2F0dHItY29sc3BhbikgYXR0cmlidXRlLCB0aGUgZWZmZWN0IGNhbiBiZSBhY2hpZXZlZCBieSBjb21iaW5pbmcgYWRlcXVhdGUgQ1NTIGF0dHJpYnV0ZSBzZWxlY3RvcnMgbGlrZSBgW2NvbHNwYW49bl1gLCB0aG91Z2ggdGhpcyBpcyBub3QgdHJpdmlhbC5cbiogICBUbyBhY2hpZXZlIHRoZSBzYW1lIGVmZmVjdCBhcyB0aGUgYGNoYXJgIHZhbHVlLCBpbiBDU1MzLCB5b3UgY2FuIHVzZSB0aGUgdmFsdWUgb2YgdGhlIFtgY2hhcmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9jb2xncm91cCNhdHRyLWNoYXIpIGFzIHRoZSB2YWx1ZSBvZiB0aGUgW2B0ZXh0LWFsaWduYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL3RleHQtYWxpZ24gIlRoZSB0ZXh0LWFsaWduIENTUyBwcm9wZXJ0eSBzZXRzIHRoZSBob3Jpem9udGFsIGFsaWdubWVudCBvZiBhbiBpbmxpbmUgb3IgdGFibGUtY2VsbCBib3guIFRoaXMgbWVhbnMgaXQgd29ya3MgbGlrZSB2ZXJ0aWNhbC1hbGlnbiBidXQgaW4gdGhlIGhvcml6b250YWwgZGlyZWN0aW9uLiIpIHByb3BlcnR5IFVuaW1wbGVtZW50ZWQuJ31dLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9jb2xncm91cCJ9XX0se25hbWU6ImNvbCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiSWYgYSBjb2wgZWxlbWVudCBoYXMgYSBwYXJlbnQgYW5kIHRoYXQgaXMgYSBjb2xncm91cCBlbGVtZW50IHRoYXQgaXRzZWxmIGhhcyBhIHBhcmVudCB0aGF0IGlzIGEgdGFibGUgZWxlbWVudCwgdGhlbiB0aGUgY29sIGVsZW1lbnQgcmVwcmVzZW50cyBvbmUgb3IgbW9yZSBjb2x1bW5zIGluIHRoZSBjb2x1bW4gZ3JvdXAgcmVwcmVzZW50ZWQgYnkgdGhhdCBjb2xncm91cC4ifSxhdHRyaWJ1dGVzOlt7bmFtZToic3BhbiJ9LHtuYW1lOiJhbGlnbiIsZGVzY3JpcHRpb246J1RoaXMgZW51bWVyYXRlZCBhdHRyaWJ1dGUgc3BlY2lmaWVzIGhvdyBob3Jpem9udGFsIGFsaWdubWVudCBvZiBlYWNoIGNvbHVtbiBjZWxsIGNvbnRlbnQgd2lsbCBiZSBoYW5kbGVkLiBQb3NzaWJsZSB2YWx1ZXMgYXJlOlxuXG4qICAgYGxlZnRgLCBhbGlnbmluZyB0aGUgY29udGVudCB0byB0aGUgbGVmdCBvZiB0aGUgY2VsbFxuKiAgIGBjZW50ZXJgLCBjZW50ZXJpbmcgdGhlIGNvbnRlbnQgaW4gdGhlIGNlbGxcbiogICBgcmlnaHRgLCBhbGlnbmluZyB0aGUgY29udGVudCB0byB0aGUgcmlnaHQgb2YgdGhlIGNlbGxcbiogICBganVzdGlmeWAsIGluc2VydGluZyBzcGFjZXMgaW50byB0aGUgdGV4dHVhbCBjb250ZW50IHNvIHRoYXQgdGhlIGNvbnRlbnQgaXMganVzdGlmaWVkIGluIHRoZSBjZWxsXG4qICAgYGNoYXJgLCBhbGlnbmluZyB0aGUgdGV4dHVhbCBjb250ZW50IG9uIGEgc3BlY2lhbCBjaGFyYWN0ZXIgd2l0aCBhIG1pbmltYWwgb2Zmc2V0LCBkZWZpbmVkIGJ5IHRoZSBbYGNoYXJgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvY29sI2F0dHItY2hhcikgYW5kIFtgY2hhcm9mZmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9jb2wjYXR0ci1jaGFyb2ZmKSBhdHRyaWJ1dGVzIFVuaW1wbGVtZW50ZWQgKHNlZSBbYnVnwqAyMjEyXShodHRwczovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjEyICJjaGFyYWN0ZXIgYWxpZ25tZW50IG5vdCBpbXBsZW1lbnRlZCAoYWxpZ249Y2hhciwgY2hhcm9mZj0sIHRleHQtYWxpZ246PHN0cmluZz4pIikpLlxuXG5JZiB0aGlzIGF0dHJpYnV0ZSBpcyBub3Qgc2V0LCBpdHMgdmFsdWUgaXMgaW5oZXJpdGVkIGZyb20gdGhlIFtgYWxpZ25gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvY29sZ3JvdXAjYXR0ci1hbGlnbikgb2YgdGhlIFtgPGNvbGdyb3VwPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9jb2xncm91cCAiVGhlIEhUTUwgPGNvbGdyb3VwPiBlbGVtZW50IGRlZmluZXMgYSBncm91cCBvZiBjb2x1bW5zIHdpdGhpbiBhIHRhYmxlLiIpIGVsZW1lbnQgdGhpcyBgPGNvbD5gIGVsZW1lbnQgYmVsb25ncyB0b28uIElmIHRoZXJlIGFyZSBub25lLCB0aGUgYGxlZnRgIHZhbHVlIGlzIGFzc3VtZWQuXG5cbioqTm90ZToqKiBEbyBub3QgdXNlIHRoaXMgYXR0cmlidXRlIGFzIGl0IGlzIG9ic29sZXRlIChub3Qgc3VwcG9ydGVkKSBpbiB0aGUgbGF0ZXN0IHN0YW5kYXJkLlxuXG4qICAgVG8gYWNoaWV2ZSB0aGUgc2FtZSBlZmZlY3QgYXMgdGhlIGBsZWZ0YCwgYGNlbnRlcmAsIGByaWdodGAgb3IgYGp1c3RpZnlgIHZhbHVlczpcbiAgICAqICAgRG8gbm90IHRyeSB0byBzZXQgdGhlIFtgdGV4dC1hbGlnbmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy90ZXh0LWFsaWduICJUaGUgdGV4dC1hbGlnbiBDU1MgcHJvcGVydHkgc2V0cyB0aGUgaG9yaXpvbnRhbCBhbGlnbm1lbnQgb2YgYW4gaW5saW5lIG9yIHRhYmxlLWNlbGwgYm94LiBUaGlzIG1lYW5zIGl0IHdvcmtzIGxpa2UgdmVydGljYWwtYWxpZ24gYnV0IGluIHRoZSBob3Jpem9udGFsIGRpcmVjdGlvbi4iKSBwcm9wZXJ0eSBvbiBhIHNlbGVjdG9yIGdpdmluZyBhIFtgPGNvbD5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvY29sICJUaGUgSFRNTCA8Y29sPiBlbGVtZW50IGRlZmluZXMgYSBjb2x1bW4gd2l0aGluIGEgdGFibGUgYW5kIGlzIHVzZWQgZm9yIGRlZmluaW5nIGNvbW1vbiBzZW1hbnRpY3Mgb24gYWxsIGNvbW1vbiBjZWxscy4gSXQgaXMgZ2VuZXJhbGx5IGZvdW5kIHdpdGhpbiBhIDxjb2xncm91cD4gZWxlbWVudC4iKSBlbGVtZW50LiBCZWNhdXNlIFtgPHRkPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC90ZCAiVGhlIEhUTUwgPHRkPiBlbGVtZW50IGRlZmluZXMgYSBjZWxsIG9mIGEgdGFibGUgdGhhdCBjb250YWlucyBkYXRhLiBJdCBwYXJ0aWNpcGF0ZXMgaW4gdGhlIHRhYmxlIG1vZGVsLiIpIGVsZW1lbnRzIGFyZSBub3QgZGVzY2VuZGFudCBvZiB0aGUgW2A8Y29sPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9jb2wgIlRoZSBIVE1MIDxjb2w+IGVsZW1lbnQgZGVmaW5lcyBhIGNvbHVtbiB3aXRoaW4gYSB0YWJsZSBhbmQgaXMgdXNlZCBmb3IgZGVmaW5pbmcgY29tbW9uIHNlbWFudGljcyBvbiBhbGwgY29tbW9uIGNlbGxzLiBJdCBpcyBnZW5lcmFsbHkgZm91bmQgd2l0aGluIGEgPGNvbGdyb3VwPiBlbGVtZW50LiIpIGVsZW1lbnQsIHRoZXkgd29uXCd0IGluaGVyaXQgaXQuXG4gICAgKiAgIElmIHRoZSB0YWJsZSBkb2VzblwndCB1c2UgYSBbYGNvbHNwYW5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvdGQjYXR0ci1jb2xzcGFuKSBhdHRyaWJ1dGUsIHVzZSB0aGUgYHRkOm50aC1jaGlsZChhbitiKWAgQ1NTIHNlbGVjdG9yLiBTZXQgYGFgIHRvIHplcm8gYW5kIGBiYCB0byB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbiBpbiB0aGUgdGFibGUsIGUuZy4gYHRkOm50aC1jaGlsZCgyKSB7IHRleHQtYWxpZ246IHJpZ2h0OyB9YCB0byByaWdodC1hbGlnbiB0aGUgc2Vjb25kIGNvbHVtbi5cbiAgICAqICAgSWYgdGhlIHRhYmxlIGRvZXMgdXNlIGEgW2Bjb2xzcGFuYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3RkI2F0dHItY29sc3BhbikgYXR0cmlidXRlLCB0aGUgZWZmZWN0IGNhbiBiZSBhY2hpZXZlZCBieSBjb21iaW5pbmcgYWRlcXVhdGUgQ1NTIGF0dHJpYnV0ZSBzZWxlY3RvcnMgbGlrZSBgW2NvbHNwYW49bl1gLCB0aG91Z2ggdGhpcyBpcyBub3QgdHJpdmlhbC5cbiogICBUbyBhY2hpZXZlIHRoZSBzYW1lIGVmZmVjdCBhcyB0aGUgYGNoYXJgIHZhbHVlLCBpbiBDU1MzLCB5b3UgY2FuIHVzZSB0aGUgdmFsdWUgb2YgdGhlIFtgY2hhcmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9jb2wjYXR0ci1jaGFyKSBhcyB0aGUgdmFsdWUgb2YgdGhlIFtgdGV4dC1hbGlnbmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy90ZXh0LWFsaWduICJUaGUgdGV4dC1hbGlnbiBDU1MgcHJvcGVydHkgc2V0cyB0aGUgaG9yaXpvbnRhbCBhbGlnbm1lbnQgb2YgYW4gaW5saW5lIG9yIHRhYmxlLWNlbGwgYm94LiBUaGlzIG1lYW5zIGl0IHdvcmtzIGxpa2UgdmVydGljYWwtYWxpZ24gYnV0IGluIHRoZSBob3Jpem9udGFsIGRpcmVjdGlvbi4iKSBwcm9wZXJ0eSBVbmltcGxlbWVudGVkLid9XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvY29sIn1dfSx7bmFtZToidGJvZHkiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSB0Ym9keSBlbGVtZW50IHJlcHJlc2VudHMgYSBibG9jayBvZiByb3dzIHRoYXQgY29uc2lzdCBvZiBhIGJvZHkgb2YgZGF0YSBmb3IgdGhlIHBhcmVudCB0YWJsZSBlbGVtZW50LCBpZiB0aGUgdGJvZHkgZWxlbWVudCBoYXMgYSBwYXJlbnQgYW5kIGl0IGlzIGEgdGFibGUuIn0sYXR0cmlidXRlczpbe25hbWU6ImFsaWduIixkZXNjcmlwdGlvbjonVGhpcyBlbnVtZXJhdGVkIGF0dHJpYnV0ZSBzcGVjaWZpZXMgaG93IGhvcml6b250YWwgYWxpZ25tZW50IG9mIGVhY2ggY2VsbCBjb250ZW50IHdpbGwgYmUgaGFuZGxlZC4gUG9zc2libGUgdmFsdWVzIGFyZTpcblxuKiAgIGBsZWZ0YCwgYWxpZ25pbmcgdGhlIGNvbnRlbnQgdG8gdGhlIGxlZnQgb2YgdGhlIGNlbGxcbiogICBgY2VudGVyYCwgY2VudGVyaW5nIHRoZSBjb250ZW50IGluIHRoZSBjZWxsXG4qICAgYHJpZ2h0YCwgYWxpZ25pbmcgdGhlIGNvbnRlbnQgdG8gdGhlIHJpZ2h0IG9mIHRoZSBjZWxsXG4qICAgYGp1c3RpZnlgLCBpbnNlcnRpbmcgc3BhY2VzIGludG8gdGhlIHRleHR1YWwgY29udGVudCBzbyB0aGF0IHRoZSBjb250ZW50IGlzIGp1c3RpZmllZCBpbiB0aGUgY2VsbFxuKiAgIGBjaGFyYCwgYWxpZ25pbmcgdGhlIHRleHR1YWwgY29udGVudCBvbiBhIHNwZWNpYWwgY2hhcmFjdGVyIHdpdGggYSBtaW5pbWFsIG9mZnNldCwgZGVmaW5lZCBieSB0aGUgW2BjaGFyYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3Rib2R5I2F0dHItY2hhcikgYW5kIFtgY2hhcm9mZmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC90Ym9keSNhdHRyLWNoYXJvZmYpIGF0dHJpYnV0ZXMuXG5cbklmIHRoaXMgYXR0cmlidXRlIGlzIG5vdCBzZXQsIHRoZSBgbGVmdGAgdmFsdWUgaXMgYXNzdW1lZC5cblxuKipOb3RlOioqIERvIG5vdCB1c2UgdGhpcyBhdHRyaWJ1dGUgYXMgaXQgaXMgb2Jzb2xldGUgKG5vdCBzdXBwb3J0ZWQpIGluIHRoZSBsYXRlc3Qgc3RhbmRhcmQuXG5cbiogICBUbyBhY2hpZXZlIHRoZSBzYW1lIGVmZmVjdCBhcyB0aGUgYGxlZnRgLCBgY2VudGVyYCwgYHJpZ2h0YCBvciBganVzdGlmeWAgdmFsdWVzLCB1c2UgdGhlIENTUyBbYHRleHQtYWxpZ25gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvdGV4dC1hbGlnbiAiVGhlIHRleHQtYWxpZ24gQ1NTIHByb3BlcnR5IHNldHMgdGhlIGhvcml6b250YWwgYWxpZ25tZW50IG9mIGFuIGlubGluZSBvciB0YWJsZS1jZWxsIGJveC4gVGhpcyBtZWFucyBpdCB3b3JrcyBsaWtlIHZlcnRpY2FsLWFsaWduIGJ1dCBpbiB0aGUgaG9yaXpvbnRhbCBkaXJlY3Rpb24uIikgcHJvcGVydHkgb24gaXQuXG4qICAgVG8gYWNoaWV2ZSB0aGUgc2FtZSBlZmZlY3QgYXMgdGhlIGBjaGFyYCB2YWx1ZSwgaW4gQ1NTMywgeW91IGNhbiB1c2UgdGhlIHZhbHVlIG9mIHRoZSBbYGNoYXJgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvdGJvZHkjYXR0ci1jaGFyKSBhcyB0aGUgdmFsdWUgb2YgdGhlIFtgdGV4dC1hbGlnbmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy90ZXh0LWFsaWduICJUaGUgdGV4dC1hbGlnbiBDU1MgcHJvcGVydHkgc2V0cyB0aGUgaG9yaXpvbnRhbCBhbGlnbm1lbnQgb2YgYW4gaW5saW5lIG9yIHRhYmxlLWNlbGwgYm94LiBUaGlzIG1lYW5zIGl0IHdvcmtzIGxpa2UgdmVydGljYWwtYWxpZ24gYnV0IGluIHRoZSBob3Jpem9udGFsIGRpcmVjdGlvbi4iKSBwcm9wZXJ0eSBVbmltcGxlbWVudGVkLid9XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvdGJvZHkifV19LHtuYW1lOiJ0aGVhZCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHRoZWFkIGVsZW1lbnQgcmVwcmVzZW50cyB0aGUgYmxvY2sgb2Ygcm93cyB0aGF0IGNvbnNpc3Qgb2YgdGhlIGNvbHVtbiBsYWJlbHMgKGhlYWRlcnMpIGZvciB0aGUgcGFyZW50IHRhYmxlIGVsZW1lbnQsIGlmIHRoZSB0aGVhZCBlbGVtZW50IGhhcyBhIHBhcmVudCBhbmQgaXQgaXMgYSB0YWJsZS4ifSxhdHRyaWJ1dGVzOlt7bmFtZToiYWxpZ24iLGRlc2NyaXB0aW9uOidUaGlzIGVudW1lcmF0ZWQgYXR0cmlidXRlIHNwZWNpZmllcyBob3cgaG9yaXpvbnRhbCBhbGlnbm1lbnQgb2YgZWFjaCBjZWxsIGNvbnRlbnQgd2lsbCBiZSBoYW5kbGVkLiBQb3NzaWJsZSB2YWx1ZXMgYXJlOlxuXG4qICAgYGxlZnRgLCBhbGlnbmluZyB0aGUgY29udGVudCB0byB0aGUgbGVmdCBvZiB0aGUgY2VsbFxuKiAgIGBjZW50ZXJgLCBjZW50ZXJpbmcgdGhlIGNvbnRlbnQgaW4gdGhlIGNlbGxcbiogICBgcmlnaHRgLCBhbGlnbmluZyB0aGUgY29udGVudCB0byB0aGUgcmlnaHQgb2YgdGhlIGNlbGxcbiogICBganVzdGlmeWAsIGluc2VydGluZyBzcGFjZXMgaW50byB0aGUgdGV4dHVhbCBjb250ZW50IHNvIHRoYXQgdGhlIGNvbnRlbnQgaXMganVzdGlmaWVkIGluIHRoZSBjZWxsXG4qICAgYGNoYXJgLCBhbGlnbmluZyB0aGUgdGV4dHVhbCBjb250ZW50IG9uIGEgc3BlY2lhbCBjaGFyYWN0ZXIgd2l0aCBhIG1pbmltYWwgb2Zmc2V0LCBkZWZpbmVkIGJ5IHRoZSBbYGNoYXJgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvdGhlYWQjYXR0ci1jaGFyKSBhbmQgW2BjaGFyb2ZmYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3RoZWFkI2F0dHItY2hhcm9mZikgYXR0cmlidXRlcyBVbmltcGxlbWVudGVkIChzZWUgW2J1Z8KgMjIxMl0oaHR0cHM6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxMiAiY2hhcmFjdGVyIGFsaWdubWVudCBub3QgaW1wbGVtZW50ZWQgKGFsaWduPWNoYXIsIGNoYXJvZmY9LCB0ZXh0LWFsaWduOjxzdHJpbmc+KSIpKS5cblxuSWYgdGhpcyBhdHRyaWJ1dGUgaXMgbm90IHNldCwgdGhlIGBsZWZ0YCB2YWx1ZSBpcyBhc3N1bWVkLlxuXG4qKk5vdGU6KiogRG8gbm90IHVzZSB0aGlzIGF0dHJpYnV0ZSBhcyBpdCBpcyBvYnNvbGV0ZSAobm90IHN1cHBvcnRlZCkgaW4gdGhlIGxhdGVzdCBzdGFuZGFyZC5cblxuKiAgIFRvIGFjaGlldmUgdGhlIHNhbWUgZWZmZWN0IGFzIHRoZSBgbGVmdGAsIGBjZW50ZXJgLCBgcmlnaHRgIG9yIGBqdXN0aWZ5YCB2YWx1ZXMsIHVzZSB0aGUgQ1NTIFtgdGV4dC1hbGlnbmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy90ZXh0LWFsaWduICJUaGUgdGV4dC1hbGlnbiBDU1MgcHJvcGVydHkgc2V0cyB0aGUgaG9yaXpvbnRhbCBhbGlnbm1lbnQgb2YgYW4gaW5saW5lIG9yIHRhYmxlLWNlbGwgYm94LiBUaGlzIG1lYW5zIGl0IHdvcmtzIGxpa2UgdmVydGljYWwtYWxpZ24gYnV0IGluIHRoZSBob3Jpem9udGFsIGRpcmVjdGlvbi4iKSBwcm9wZXJ0eSBvbiBpdC5cbiogICBUbyBhY2hpZXZlIHRoZSBzYW1lIGVmZmVjdCBhcyB0aGUgYGNoYXJgIHZhbHVlLCBpbiBDU1MzLCB5b3UgY2FuIHVzZSB0aGUgdmFsdWUgb2YgdGhlIFtgY2hhcmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC90aGVhZCNhdHRyLWNoYXIpIGFzIHRoZSB2YWx1ZSBvZiB0aGUgW2B0ZXh0LWFsaWduYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL3RleHQtYWxpZ24gIlRoZSB0ZXh0LWFsaWduIENTUyBwcm9wZXJ0eSBzZXRzIHRoZSBob3Jpem9udGFsIGFsaWdubWVudCBvZiBhbiBpbmxpbmUgb3IgdGFibGUtY2VsbCBib3guIFRoaXMgbWVhbnMgaXQgd29ya3MgbGlrZSB2ZXJ0aWNhbC1hbGlnbiBidXQgaW4gdGhlIGhvcml6b250YWwgZGlyZWN0aW9uLiIpIHByb3BlcnR5IFVuaW1wbGVtZW50ZWQuJ31dLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC90aGVhZCJ9XX0se25hbWU6InRmb290IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgdGZvb3QgZWxlbWVudCByZXByZXNlbnRzIHRoZSBibG9jayBvZiByb3dzIHRoYXQgY29uc2lzdCBvZiB0aGUgY29sdW1uIHN1bW1hcmllcyAoZm9vdGVycykgZm9yIHRoZSBwYXJlbnQgdGFibGUgZWxlbWVudCwgaWYgdGhlIHRmb290IGVsZW1lbnQgaGFzIGEgcGFyZW50IGFuZCBpdCBpcyBhIHRhYmxlLiJ9LGF0dHJpYnV0ZXM6W3tuYW1lOiJhbGlnbiIsZGVzY3JpcHRpb246J1RoaXMgZW51bWVyYXRlZCBhdHRyaWJ1dGUgc3BlY2lmaWVzIGhvdyBob3Jpem9udGFsIGFsaWdubWVudCBvZiBlYWNoIGNlbGwgY29udGVudCB3aWxsIGJlIGhhbmRsZWQuIFBvc3NpYmxlIHZhbHVlcyBhcmU6XG5cbiogICBgbGVmdGAsIGFsaWduaW5nIHRoZSBjb250ZW50IHRvIHRoZSBsZWZ0IG9mIHRoZSBjZWxsXG4qICAgYGNlbnRlcmAsIGNlbnRlcmluZyB0aGUgY29udGVudCBpbiB0aGUgY2VsbFxuKiAgIGByaWdodGAsIGFsaWduaW5nIHRoZSBjb250ZW50IHRvIHRoZSByaWdodCBvZiB0aGUgY2VsbFxuKiAgIGBqdXN0aWZ5YCwgaW5zZXJ0aW5nIHNwYWNlcyBpbnRvIHRoZSB0ZXh0dWFsIGNvbnRlbnQgc28gdGhhdCB0aGUgY29udGVudCBpcyBqdXN0aWZpZWQgaW4gdGhlIGNlbGxcbiogICBgY2hhcmAsIGFsaWduaW5nIHRoZSB0ZXh0dWFsIGNvbnRlbnQgb24gYSBzcGVjaWFsIGNoYXJhY3RlciB3aXRoIGEgbWluaW1hbCBvZmZzZXQsIGRlZmluZWQgYnkgdGhlIFtgY2hhcmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC90Ym9keSNhdHRyLWNoYXIpIGFuZCBbYGNoYXJvZmZgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvdGJvZHkjYXR0ci1jaGFyb2ZmKSBhdHRyaWJ1dGVzIFVuaW1wbGVtZW50ZWQgKHNlZSBbYnVnwqAyMjEyXShodHRwczovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjEyICJjaGFyYWN0ZXIgYWxpZ25tZW50IG5vdCBpbXBsZW1lbnRlZCAoYWxpZ249Y2hhciwgY2hhcm9mZj0sIHRleHQtYWxpZ246PHN0cmluZz4pIikpLlxuXG5JZiB0aGlzIGF0dHJpYnV0ZSBpcyBub3Qgc2V0LCB0aGUgYGxlZnRgIHZhbHVlIGlzIGFzc3VtZWQuXG5cbioqTm90ZToqKiBEbyBub3QgdXNlIHRoaXMgYXR0cmlidXRlIGFzIGl0IGlzIG9ic29sZXRlIChub3Qgc3VwcG9ydGVkKSBpbiB0aGUgbGF0ZXN0IHN0YW5kYXJkLlxuXG4qICAgVG8gYWNoaWV2ZSB0aGUgc2FtZSBlZmZlY3QgYXMgdGhlIGBsZWZ0YCwgYGNlbnRlcmAsIGByaWdodGAgb3IgYGp1c3RpZnlgIHZhbHVlcywgdXNlIHRoZSBDU1MgW2B0ZXh0LWFsaWduYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL3RleHQtYWxpZ24gIlRoZSB0ZXh0LWFsaWduIENTUyBwcm9wZXJ0eSBzZXRzIHRoZSBob3Jpem9udGFsIGFsaWdubWVudCBvZiBhbiBpbmxpbmUgb3IgdGFibGUtY2VsbCBib3guIFRoaXMgbWVhbnMgaXQgd29ya3MgbGlrZSB2ZXJ0aWNhbC1hbGlnbiBidXQgaW4gdGhlIGhvcml6b250YWwgZGlyZWN0aW9uLiIpIHByb3BlcnR5IG9uIGl0LlxuKiAgIFRvIGFjaGlldmUgdGhlIHNhbWUgZWZmZWN0IGFzIHRoZSBgY2hhcmAgdmFsdWUsIGluIENTUzMsIHlvdSBjYW4gdXNlIHRoZSB2YWx1ZSBvZiB0aGUgW2BjaGFyYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3Rmb290I2F0dHItY2hhcikgYXMgdGhlIHZhbHVlIG9mIHRoZSBbYHRleHQtYWxpZ25gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvdGV4dC1hbGlnbiAiVGhlIHRleHQtYWxpZ24gQ1NTIHByb3BlcnR5IHNldHMgdGhlIGhvcml6b250YWwgYWxpZ25tZW50IG9mIGFuIGlubGluZSBvciB0YWJsZS1jZWxsIGJveC4gVGhpcyBtZWFucyBpdCB3b3JrcyBsaWtlIHZlcnRpY2FsLWFsaWduIGJ1dCBpbiB0aGUgaG9yaXpvbnRhbCBkaXJlY3Rpb24uIikgcHJvcGVydHkgVW5pbXBsZW1lbnRlZC4nfV0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3Rmb290In1dfSx7bmFtZToidHIiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSB0ciBlbGVtZW50IHJlcHJlc2VudHMgYSByb3cgb2YgY2VsbHMgaW4gYSB0YWJsZS4ifSxhdHRyaWJ1dGVzOlt7bmFtZToiYWxpZ24iLGRlc2NyaXB0aW9uOidBIFtgRE9NU3RyaW5nYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL0RPTVN0cmluZyAiRE9NU3RyaW5nIGlzIGEgVVRGLTE2IFN0cmluZy4gQXMgSmF2YVNjcmlwdCBhbHJlYWR5IHVzZXMgc3VjaCBzdHJpbmdzLCBET01TdHJpbmcgaXMgbWFwcGVkIGRpcmVjdGx5IHRvIGEgU3RyaW5nLiIpIHdoaWNoIHNwZWNpZmllcyBob3cgdGhlIGNlbGxcJ3MgY29udGV4dCBzaG91bGQgYmUgYWxpZ25lZCBob3Jpem9udGFsbHkgd2l0aGluIHRoZSBjZWxscyBpbiB0aGUgcm93OyB0aGlzIGlzIHNob3J0aGFuZCBmb3IgdXNpbmcgYGFsaWduYCBvbiBldmVyeSBjZWxsIGluIHRoZSByb3cgaW5kaXZpZHVhbGx5LiBQb3NzaWJsZSB2YWx1ZXMgYXJlOlxuXG5gbGVmdGBcblxuQWxpZ24gdGhlIGNvbnRlbnQgb2YgZWFjaCBjZWxsIGF0IGl0cyBsZWZ0IGVkZ2UuXG5cbmBjZW50ZXJgXG5cbkNlbnRlciB0aGUgY29udGVudHMgb2YgZWFjaCBjZWxsIGJldHdlZW4gdGhlaXIgbGVmdCBhbmQgcmlnaHQgZWRnZXMuXG5cbmByaWdodGBcblxuQWxpZ24gdGhlIGNvbnRlbnQgb2YgZWFjaCBjZWxsIGF0IGl0cyByaWdodCBlZGdlLlxuXG5ganVzdGlmeWBcblxuV2lkZW4gd2hpdGVzcGFjZXMgd2l0aGluIHRoZSB0ZXh0IG9mIGVhY2ggY2VsbCBzbyB0aGF0IHRoZSB0ZXh0IGZpbGxzIHRoZSBmdWxsIHdpZHRoIG9mIGVhY2ggY2VsbCAoZnVsbCBqdXN0aWZpY2F0aW9uKS5cblxuYGNoYXJgXG5cbkFsaWduIGVhY2ggY2VsbCBpbiB0aGUgcm93IG9uIGEgc3BlY2lmaWMgY2hhcmFjdGVyIChzdWNoIHRoYXQgZWFjaCByb3cgaW4gdGhlIGNvbHVtbiB0aGF0IGlzIGNvbmZpZ3VyZWQgdGhpcyB3YXkgd2lsbCBob3Jpem9udGFsbHkgYWxpZ24gaXRzIGNlbGxzIG9uIHRoYXQgY2hhcmFjdGVyKS4gVGhpcyB1c2VzIHRoZSBbYGNoYXJgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvdHIjYXR0ci1jaGFyKSBhbmQgW2BjaGFyb2ZmYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3RyI2F0dHItY2hhcm9mZikgdG8gZXN0YWJsaXNoIHRoZSBhbGlnbm1lbnQgY2hhcmFjdGVyICh0eXBpY2FsbHkgIi4iIG9yICIsIiB3aGVuIGFsaWduaW5nIG51bWVyaWNhbCBkYXRhKSBhbmQgdGhlIG51bWJlciBvZiBjaGFyYWN0ZXJzIHRoYXQgc2hvdWxkIGZvbGxvdyB0aGUgYWxpZ25tZW50IGNoYXJhY3Rlci4gVGhpcyBhbGlnbm1lbnQgdHlwZSB3YXMgbmV2ZXIgd2lkZWx5IHN1cHBvcnRlZC5cblxuSWYgbm8gdmFsdWUgaXMgZXhwcmVzc2x5IHNldCBmb3IgYGFsaWduYCwgdGhlIHBhcmVudCBub2RlXCdzIHZhbHVlIGlzIGluaGVyaXRlZC5cblxuSW5zdGVhZCBvZiB1c2luZyB0aGUgb2Jzb2xldGUgYGFsaWduYCBhdHRyaWJ1dGUsIHlvdSBzaG91bGQgaW5zdGVhZCB1c2UgdGhlIENTUyBbYHRleHQtYWxpZ25gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvdGV4dC1hbGlnbiAiVGhlIHRleHQtYWxpZ24gQ1NTIHByb3BlcnR5IHNldHMgdGhlIGhvcml6b250YWwgYWxpZ25tZW50IG9mIGFuIGlubGluZSBvciB0YWJsZS1jZWxsIGJveC4gVGhpcyBtZWFucyBpdCB3b3JrcyBsaWtlIHZlcnRpY2FsLWFsaWduIGJ1dCBpbiB0aGUgaG9yaXpvbnRhbCBkaXJlY3Rpb24uIikgcHJvcGVydHkgdG8gZXN0YWJsaXNoIGBsZWZ0YCwgYGNlbnRlcmAsIGByaWdodGAsIG9yIGBqdXN0aWZ5YCBhbGlnbm1lbnQgZm9yIHRoZSByb3dcJ3MgY2VsbHMuIFRvIGFwcGx5IGNoYXJhY3Rlci1iYXNlZCBhbGlnbm1lbnQsIHNldCB0aGUgQ1NTIFtgdGV4dC1hbGlnbmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy90ZXh0LWFsaWduICJUaGUgdGV4dC1hbGlnbiBDU1MgcHJvcGVydHkgc2V0cyB0aGUgaG9yaXpvbnRhbCBhbGlnbm1lbnQgb2YgYW4gaW5saW5lIG9yIHRhYmxlLWNlbGwgYm94LiBUaGlzIG1lYW5zIGl0IHdvcmtzIGxpa2UgdmVydGljYWwtYWxpZ24gYnV0IGluIHRoZSBob3Jpem9udGFsIGRpcmVjdGlvbi4iKSBwcm9wZXJ0eSB0byB0aGUgYWxpZ25tZW50IGNoYXJhY3RlciAoc3VjaCBhcyBgIi4iYCBvciBgIiwiYCkuJ31dLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC90ciJ9XX0se25hbWU6InRkIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgdGQgZWxlbWVudCByZXByZXNlbnRzIGEgZGF0YSBjZWxsIGluIGEgdGFibGUuIn0sYXR0cmlidXRlczpbe25hbWU6ImNvbHNwYW4ifSx7bmFtZToicm93c3BhbiJ9LHtuYW1lOiJoZWFkZXJzIn0se25hbWU6ImFiYnIiLGRlc2NyaXB0aW9uOiJUaGlzIGF0dHJpYnV0ZSBjb250YWlucyBhIHNob3J0IGFiYnJldmlhdGVkIGRlc2NyaXB0aW9uIG9mIHRoZSBjZWxsJ3MgY29udGVudC4gU29tZSB1c2VyLWFnZW50cywgc3VjaCBhcyBzcGVlY2ggcmVhZGVycywgbWF5IHByZXNlbnQgdGhpcyBkZXNjcmlwdGlvbiBiZWZvcmUgdGhlIGNvbnRlbnQgaXRzZWxmLlxuXG4qKk5vdGU6KiogRG8gbm90IHVzZSB0aGlzIGF0dHJpYnV0ZSBhcyBpdCBpcyBvYnNvbGV0ZSBpbiB0aGUgbGF0ZXN0IHN0YW5kYXJkLiBBbHRlcm5hdGl2ZWx5LCB5b3UgY2FuIHB1dCB0aGUgYWJicmV2aWF0ZWQgZGVzY3JpcHRpb24gaW5zaWRlIHRoZSBjZWxsIGFuZCBwbGFjZSB0aGUgbG9uZyBjb250ZW50IGluIHRoZSAqKnRpdGxlKiogYXR0cmlidXRlLiJ9LHtuYW1lOiJhbGlnbiIsZGVzY3JpcHRpb246J1RoaXMgZW51bWVyYXRlZCBhdHRyaWJ1dGUgc3BlY2lmaWVzIGhvdyB0aGUgY2VsbCBjb250ZW50XCdzIGhvcml6b250YWwgYWxpZ25tZW50IHdpbGwgYmUgaGFuZGxlZC4gUG9zc2libGUgdmFsdWVzIGFyZTpcblxuKiAgIGBsZWZ0YDogVGhlIGNvbnRlbnQgaXMgYWxpZ25lZCB0byB0aGUgbGVmdCBvZiB0aGUgY2VsbC5cbiogICBgY2VudGVyYDogVGhlIGNvbnRlbnQgaXMgY2VudGVyZWQgaW4gdGhlIGNlbGwuXG4qICAgYHJpZ2h0YDogVGhlIGNvbnRlbnQgaXMgYWxpZ25lZCB0byB0aGUgcmlnaHQgb2YgdGhlIGNlbGwuXG4qICAgYGp1c3RpZnlgICh3aXRoIHRleHQgb25seSk6IFRoZSBjb250ZW50IGlzIHN0cmV0Y2hlZCBvdXQgaW5zaWRlIHRoZSBjZWxsIHNvIHRoYXQgaXQgY292ZXJzIGl0cyBlbnRpcmUgd2lkdGguXG4qICAgYGNoYXJgICh3aXRoIHRleHQgb25seSk6IFRoZSBjb250ZW50IGlzIGFsaWduZWQgdG8gYSBjaGFyYWN0ZXIgaW5zaWRlIHRoZSBgPHRoPmAgZWxlbWVudCB3aXRoIG1pbmltYWwgb2Zmc2V0LiBUaGlzIGNoYXJhY3RlciBpcyBkZWZpbmVkIGJ5IHRoZSBbYGNoYXJgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvdGQjYXR0ci1jaGFyKSBhbmQgW2BjaGFyb2ZmYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3RkI2F0dHItY2hhcm9mZikgYXR0cmlidXRlcyBVbmltcGxlbWVudGVkIChzZWUgW2J1Z8KgMjIxMl0oaHR0cHM6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxMiAiY2hhcmFjdGVyIGFsaWdubWVudCBub3QgaW1wbGVtZW50ZWQgKGFsaWduPWNoYXIsIGNoYXJvZmY9LCB0ZXh0LWFsaWduOjxzdHJpbmc+KSIpKS5cblxuVGhlIGRlZmF1bHQgdmFsdWUgd2hlbiB0aGlzIGF0dHJpYnV0ZSBpcyBub3Qgc3BlY2lmaWVkIGlzIGBsZWZ0YC5cblxuKipOb3RlOioqIERvIG5vdCB1c2UgdGhpcyBhdHRyaWJ1dGUgYXMgaXQgaXMgb2Jzb2xldGUgaW4gdGhlIGxhdGVzdCBzdGFuZGFyZC5cblxuKiAgIFRvIGFjaGlldmUgdGhlIHNhbWUgZWZmZWN0IGFzIHRoZSBgbGVmdGAsIGBjZW50ZXJgLCBgcmlnaHRgIG9yIGBqdXN0aWZ5YCB2YWx1ZXMsIGFwcGx5IHRoZSBDU1MgW2B0ZXh0LWFsaWduYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL3RleHQtYWxpZ24gIlRoZSB0ZXh0LWFsaWduIENTUyBwcm9wZXJ0eSBzZXRzIHRoZSBob3Jpem9udGFsIGFsaWdubWVudCBvZiBhbiBpbmxpbmUgb3IgdGFibGUtY2VsbCBib3guIFRoaXMgbWVhbnMgaXQgd29ya3MgbGlrZSB2ZXJ0aWNhbC1hbGlnbiBidXQgaW4gdGhlIGhvcml6b250YWwgZGlyZWN0aW9uLiIpIHByb3BlcnR5IHRvIHRoZSBlbGVtZW50LlxuKiAgIFRvIGFjaGlldmUgdGhlIHNhbWUgZWZmZWN0IGFzIHRoZSBgY2hhcmAgdmFsdWUsIGdpdmUgdGhlIFtgdGV4dC1hbGlnbmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy90ZXh0LWFsaWduICJUaGUgdGV4dC1hbGlnbiBDU1MgcHJvcGVydHkgc2V0cyB0aGUgaG9yaXpvbnRhbCBhbGlnbm1lbnQgb2YgYW4gaW5saW5lIG9yIHRhYmxlLWNlbGwgYm94LiBUaGlzIG1lYW5zIGl0IHdvcmtzIGxpa2UgdmVydGljYWwtYWxpZ24gYnV0IGluIHRoZSBob3Jpem9udGFsIGRpcmVjdGlvbi4iKSBwcm9wZXJ0eSB0aGUgc2FtZSB2YWx1ZSB5b3Ugd291bGQgdXNlIGZvciB0aGUgW2BjaGFyYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3RkI2F0dHItY2hhcikuIFVuaW1wbGVtZW50ZWQgaW4gQ1NTMy4nfSx7bmFtZToiYXhpcyIsZGVzY3JpcHRpb246IlRoaXMgYXR0cmlidXRlIGNvbnRhaW5zIGEgbGlzdCBvZiBzcGFjZS1zZXBhcmF0ZWQgc3RyaW5ncy4gRWFjaCBzdHJpbmcgaXMgdGhlIGBpZGAgb2YgYSBncm91cCBvZiBjZWxscyB0aGF0IHRoaXMgaGVhZGVyIGFwcGxpZXMgdG8uXG5cbioqTm90ZToqKiBEbyBub3QgdXNlIHRoaXMgYXR0cmlidXRlIGFzIGl0IGlzIG9ic29sZXRlIGluIHRoZSBsYXRlc3Qgc3RhbmRhcmQuIn0se25hbWU6ImJnY29sb3IiLGRlc2NyaXB0aW9uOidUaGlzIGF0dHJpYnV0ZSBkZWZpbmVzIHRoZSBiYWNrZ3JvdW5kIGNvbG9yIG9mIGVhY2ggY2VsbCBpbiBhIGNvbHVtbi4gSXQgY29uc2lzdHMgb2YgYSA2LWRpZ2l0IGhleGFkZWNpbWFsIGNvZGUgYXMgZGVmaW5lZCBpbiBbc1JHQl0oaHR0cHM6Ly93d3cudzMub3JnL0dyYXBoaWNzL0NvbG9yL3NSR0IpIGFuZCBpcyBwcmVmaXhlZCBieSBcJyNcJy4gVGhpcyBhdHRyaWJ1dGUgbWF5IGJlIHVzZWQgd2l0aCBvbmUgb2Ygc2l4dGVlbiBwcmVkZWZpbmVkIGNvbG9yIHN0cmluZ3M6XG5cbsKgXG5cbmBibGFja2AgPSAiIzAwMDAwMCJcblxuwqBcblxuYGdyZWVuYCA9ICIjMDA4MDAwIlxuXG7CoFxuXG5gc2lsdmVyYCA9ICIjQzBDMEMwIlxuXG7CoFxuXG5gbGltZWAgPSAiIzAwRkYwMCJcblxuwqBcblxuYGdyYXlgID0gIiM4MDgwODAiXG5cbsKgXG5cbmBvbGl2ZWAgPSAiIzgwODAwMCJcblxuwqBcblxuYHdoaXRlYCA9ICIjRkZGRkZGIlxuXG7CoFxuXG5geWVsbG93YCA9ICIjRkZGRjAwIlxuXG7CoFxuXG5gbWFyb29uYCA9ICIjODAwMDAwIlxuXG7CoFxuXG5gbmF2eWAgPSAiIzAwMDA4MCJcblxuwqBcblxuYHJlZGAgPSAiI0ZGMDAwMCJcblxuwqBcblxuYGJsdWVgID0gIiMwMDAwRkYiXG5cbsKgXG5cbmBwdXJwbGVgID0gIiM4MDAwODAiXG5cbsKgXG5cbmB0ZWFsYCA9ICIjMDA4MDgwIlxuXG7CoFxuXG5gZnVjaHNpYWAgPSAiI0ZGMDBGRiJcblxuwqBcblxuYGFxdWFgID0gIiMwMEZGRkYiXG5cbioqTm90ZToqKiBEbyBub3QgdXNlIHRoaXMgYXR0cmlidXRlLCBhcyBpdCBpcyBub24tc3RhbmRhcmQgYW5kIG9ubHkgaW1wbGVtZW50ZWQgaW4gc29tZSB2ZXJzaW9ucyBvZiBNaWNyb3NvZnQgSW50ZXJuZXQgRXhwbG9yZXI6IFRoZSBbYDx0ZD5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvdGQgIlRoZSBIVE1MIDx0ZD4gZWxlbWVudCBkZWZpbmVzIGEgY2VsbCBvZiBhIHRhYmxlIHRoYXQgY29udGFpbnMgZGF0YS4gSXQgcGFydGljaXBhdGVzIGluIHRoZSB0YWJsZSBtb2RlbC4iKSBlbGVtZW50IHNob3VsZCBiZSBzdHlsZWQgdXNpbmcgW0NTU10oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9DU1MpLiBUbyBjcmVhdGUgYSBzaW1pbGFyIGVmZmVjdCB1c2UgdGhlIFtgYmFja2dyb3VuZC1jb2xvcmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9iYWNrZ3JvdW5kLWNvbG9yICJUaGUgYmFja2dyb3VuZC1jb2xvciBDU1MgcHJvcGVydHkgc2V0cyB0aGUgYmFja2dyb3VuZCBjb2xvciBvZiBhbiBlbGVtZW50LiIpIHByb3BlcnR5IGluIFtDU1NdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvQ1NTKSBpbnN0ZWFkLid9XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvdGQifV19LHtuYW1lOiJ0aCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHRoIGVsZW1lbnQgcmVwcmVzZW50cyBhIGhlYWRlciBjZWxsIGluIGEgdGFibGUuIn0sYXR0cmlidXRlczpbe25hbWU6ImNvbHNwYW4ifSx7bmFtZToicm93c3BhbiJ9LHtuYW1lOiJoZWFkZXJzIn0se25hbWU6InNjb3BlIix2YWx1ZVNldDoicyJ9LHtuYW1lOiJzb3J0ZWQifSx7bmFtZToiYWJiciIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhpcyBhdHRyaWJ1dGUgY29udGFpbnMgYSBzaG9ydCBhYmJyZXZpYXRlZCBkZXNjcmlwdGlvbiBvZiB0aGUgY2VsbCdzIGNvbnRlbnQuIFNvbWUgdXNlci1hZ2VudHMsIHN1Y2ggYXMgc3BlZWNoIHJlYWRlcnMsIG1heSBwcmVzZW50IHRoaXMgZGVzY3JpcHRpb24gYmVmb3JlIHRoZSBjb250ZW50IGl0c2VsZi4ifX0se25hbWU6ImFsaWduIixkZXNjcmlwdGlvbjonVGhpcyBlbnVtZXJhdGVkIGF0dHJpYnV0ZSBzcGVjaWZpZXMgaG93IHRoZSBjZWxsIGNvbnRlbnRcJ3MgaG9yaXpvbnRhbCBhbGlnbm1lbnQgd2lsbCBiZSBoYW5kbGVkLiBQb3NzaWJsZSB2YWx1ZXMgYXJlOlxuXG4qICAgYGxlZnRgOiBUaGUgY29udGVudCBpcyBhbGlnbmVkIHRvIHRoZSBsZWZ0IG9mIHRoZSBjZWxsLlxuKiAgIGBjZW50ZXJgOiBUaGUgY29udGVudCBpcyBjZW50ZXJlZCBpbiB0aGUgY2VsbC5cbiogICBgcmlnaHRgOiBUaGUgY29udGVudCBpcyBhbGlnbmVkIHRvIHRoZSByaWdodCBvZiB0aGUgY2VsbC5cbiogICBganVzdGlmeWAgKHdpdGggdGV4dCBvbmx5KTogVGhlIGNvbnRlbnQgaXMgc3RyZXRjaGVkIG91dCBpbnNpZGUgdGhlIGNlbGwgc28gdGhhdCBpdCBjb3ZlcnMgaXRzIGVudGlyZSB3aWR0aC5cbiogICBgY2hhcmAgKHdpdGggdGV4dCBvbmx5KTogVGhlIGNvbnRlbnQgaXMgYWxpZ25lZCB0byBhIGNoYXJhY3RlciBpbnNpZGUgdGhlIGA8dGg+YCBlbGVtZW50IHdpdGggbWluaW1hbCBvZmZzZXQuIFRoaXMgY2hhcmFjdGVyIGlzIGRlZmluZWQgYnkgdGhlIFtgY2hhcmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC90aCNhdHRyLWNoYXIpIGFuZCBbYGNoYXJvZmZgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvdGgjYXR0ci1jaGFyb2ZmKSBhdHRyaWJ1dGVzLlxuXG5UaGUgZGVmYXVsdCB2YWx1ZSB3aGVuIHRoaXMgYXR0cmlidXRlIGlzIG5vdCBzcGVjaWZpZWQgaXMgYGxlZnRgLlxuXG4qKk5vdGU6KiogRG8gbm90IHVzZSB0aGlzIGF0dHJpYnV0ZSBhcyBpdCBpcyBvYnNvbGV0ZSBpbiB0aGUgbGF0ZXN0IHN0YW5kYXJkLlxuXG4qICAgVG8gYWNoaWV2ZSB0aGUgc2FtZSBlZmZlY3QgYXMgdGhlIGBsZWZ0YCwgYGNlbnRlcmAsIGByaWdodGAgb3IgYGp1c3RpZnlgIHZhbHVlcywgYXBwbHkgdGhlIENTUyBbYHRleHQtYWxpZ25gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvdGV4dC1hbGlnbiAiVGhlIHRleHQtYWxpZ24gQ1NTIHByb3BlcnR5IHNldHMgdGhlIGhvcml6b250YWwgYWxpZ25tZW50IG9mIGFuIGlubGluZSBvciB0YWJsZS1jZWxsIGJveC4gVGhpcyBtZWFucyBpdCB3b3JrcyBsaWtlIHZlcnRpY2FsLWFsaWduIGJ1dCBpbiB0aGUgaG9yaXpvbnRhbCBkaXJlY3Rpb24uIikgcHJvcGVydHkgdG8gdGhlIGVsZW1lbnQuXG4qICAgVG8gYWNoaWV2ZSB0aGUgc2FtZSBlZmZlY3QgYXMgdGhlIGBjaGFyYCB2YWx1ZSwgZ2l2ZSB0aGUgW2B0ZXh0LWFsaWduYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL3RleHQtYWxpZ24gIlRoZSB0ZXh0LWFsaWduIENTUyBwcm9wZXJ0eSBzZXRzIHRoZSBob3Jpem9udGFsIGFsaWdubWVudCBvZiBhbiBpbmxpbmUgb3IgdGFibGUtY2VsbCBib3guIFRoaXMgbWVhbnMgaXQgd29ya3MgbGlrZSB2ZXJ0aWNhbC1hbGlnbiBidXQgaW4gdGhlIGhvcml6b250YWwgZGlyZWN0aW9uLiIpIHByb3BlcnR5IHRoZSBzYW1lIHZhbHVlIHlvdSB3b3VsZCB1c2UgZm9yIHRoZSBbYGNoYXJgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvdGgjYXR0ci1jaGFyKS4gVW5pbXBsZW1lbnRlZCBpbiBDU1MzLid9LHtuYW1lOiJheGlzIixkZXNjcmlwdGlvbjoiVGhpcyBhdHRyaWJ1dGUgY29udGFpbnMgYSBsaXN0IG9mIHNwYWNlLXNlcGFyYXRlZCBzdHJpbmdzLiBFYWNoIHN0cmluZyBpcyB0aGUgYGlkYCBvZiBhIGdyb3VwIG9mIGNlbGxzIHRoYXQgdGhpcyBoZWFkZXIgYXBwbGllcyB0by5cblxuKipOb3RlOioqIERvIG5vdCB1c2UgdGhpcyBhdHRyaWJ1dGUgYXMgaXQgaXMgb2Jzb2xldGUgaW4gdGhlIGxhdGVzdCBzdGFuZGFyZDogdXNlIHRoZSBbYHNjb3BlYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3RoI2F0dHItc2NvcGUpIGF0dHJpYnV0ZSBpbnN0ZWFkLiJ9LHtuYW1lOiJiZ2NvbG9yIixkZXNjcmlwdGlvbjonVGhpcyBhdHRyaWJ1dGUgZGVmaW5lcyB0aGUgYmFja2dyb3VuZCBjb2xvciBvZiBlYWNoIGNlbGwgaW4gYSBjb2x1bW4uIEl0IGNvbnNpc3RzIG9mIGEgNi1kaWdpdCBoZXhhZGVjaW1hbCBjb2RlIGFzIGRlZmluZWQgaW4gW3NSR0JdKGh0dHBzOi8vd3d3LnczLm9yZy9HcmFwaGljcy9Db2xvci9zUkdCKSBhbmQgaXMgcHJlZml4ZWQgYnkgXCcjXCcuIFRoaXMgYXR0cmlidXRlIG1heSBiZSB1c2VkIHdpdGggb25lIG9mIHNpeHRlZW4gcHJlZGVmaW5lZCBjb2xvciBzdHJpbmdzOlxuXG7CoFxuXG5gYmxhY2tgID0gIiMwMDAwMDAiXG5cbsKgXG5cbmBncmVlbmAgPSAiIzAwODAwMCJcblxuwqBcblxuYHNpbHZlcmAgPSAiI0MwQzBDMCJcblxuwqBcblxuYGxpbWVgID0gIiMwMEZGMDAiXG5cbsKgXG5cbmBncmF5YCA9ICIjODA4MDgwIlxuXG7CoFxuXG5gb2xpdmVgID0gIiM4MDgwMDAiXG5cbsKgXG5cbmB3aGl0ZWAgPSAiI0ZGRkZGRiJcblxuwqBcblxuYHllbGxvd2AgPSAiI0ZGRkYwMCJcblxuwqBcblxuYG1hcm9vbmAgPSAiIzgwMDAwMCJcblxuwqBcblxuYG5hdnlgID0gIiMwMDAwODAiXG5cbsKgXG5cbmByZWRgID0gIiNGRjAwMDAiXG5cbsKgXG5cbmBibHVlYCA9ICIjMDAwMEZGIlxuXG7CoFxuXG5gcHVycGxlYCA9ICIjODAwMDgwIlxuXG7CoFxuXG5gdGVhbGAgPSAiIzAwODA4MCJcblxuwqBcblxuYGZ1Y2hzaWFgID0gIiNGRjAwRkYiXG5cbsKgXG5cbmBhcXVhYCA9ICIjMDBGRkZGIlxuXG4qKk5vdGU6KiogRG8gbm90IHVzZSB0aGlzIGF0dHJpYnV0ZSwgYXMgaXQgaXMgbm9uLXN0YW5kYXJkIGFuZCBvbmx5IGltcGxlbWVudGVkIGluIHNvbWUgdmVyc2lvbnMgb2YgTWljcm9zb2Z0IEludGVybmV0IEV4cGxvcmVyOiBUaGUgW2A8dGg+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3RoICJUaGUgSFRNTCA8dGg+IGVsZW1lbnQgZGVmaW5lcyBhIGNlbGwgYXMgaGVhZGVyIG9mIGEgZ3JvdXAgb2YgdGFibGUgY2VsbHMuIFRoZSBleGFjdCBuYXR1cmUgb2YgdGhpcyBncm91cCBpcyBkZWZpbmVkIGJ5IHRoZSBzY29wZSBhbmQgaGVhZGVycyBhdHRyaWJ1dGVzLiIpIGVsZW1lbnQgc2hvdWxkIGJlIHN0eWxlZCB1c2luZyBbQ1NTXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MpLiBUbyBjcmVhdGUgYSBzaW1pbGFyIGVmZmVjdCB1c2UgdGhlIFtgYmFja2dyb3VuZC1jb2xvcmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9iYWNrZ3JvdW5kLWNvbG9yICJUaGUgYmFja2dyb3VuZC1jb2xvciBDU1MgcHJvcGVydHkgc2V0cyB0aGUgYmFja2dyb3VuZCBjb2xvciBvZiBhbiBlbGVtZW50LiIpIHByb3BlcnR5IGluIFtDU1NdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUykgaW5zdGVhZC4nfV0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3RoIn1dfSx7bmFtZToiZm9ybSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGZvcm0gZWxlbWVudCByZXByZXNlbnRzIGEgY29sbGVjdGlvbiBvZiBmb3JtLWFzc29jaWF0ZWQgZWxlbWVudHMsIHNvbWUgb2Ygd2hpY2ggY2FuIHJlcHJlc2VudCBlZGl0YWJsZSB2YWx1ZXMgdGhhdCBjYW4gYmUgc3VibWl0dGVkIHRvIGEgc2VydmVyIGZvciBwcm9jZXNzaW5nLiJ9LGF0dHJpYnV0ZXM6W3tuYW1lOiJhY2NlcHQtY2hhcnNldCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTonQSBzcGFjZS0gb3IgY29tbWEtZGVsaW1pdGVkIGxpc3Qgb2YgY2hhcmFjdGVyIGVuY29kaW5ncyB0aGF0IHRoZSBzZXJ2ZXIgYWNjZXB0cy4gVGhlIGJyb3dzZXIgdXNlcyB0aGVtIGluIHRoZSBvcmRlciBpbiB3aGljaCB0aGV5IGFyZSBsaXN0ZWQuIFRoZSBkZWZhdWx0IHZhbHVlLCB0aGUgcmVzZXJ2ZWQgc3RyaW5nIGAiVU5LTk9XTiJgLCBpbmRpY2F0ZXMgdGhlIHNhbWUgZW5jb2RpbmcgYXMgdGhhdCBvZiB0aGUgZG9jdW1lbnQgY29udGFpbmluZyB0aGUgZm9ybSBlbGVtZW50LiAgXG5JbiBwcmV2aW91cyB2ZXJzaW9ucyBvZiBIVE1MLCB0aGUgZGlmZmVyZW50IGNoYXJhY3RlciBlbmNvZGluZ3MgY291bGQgYmUgZGVsaW1pdGVkIGJ5IHNwYWNlcyBvciBjb21tYXMuIEluIEhUTUw1LCBvbmx5IHNwYWNlcyBhcmUgYWxsb3dlZCBhcyBkZWxpbWl0ZXJzLid9fSx7bmFtZToiYWN0aW9uIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOidUaGUgVVJJIG9mIGEgcHJvZ3JhbSB0aGF0IHByb2Nlc3NlcyB0aGUgZm9ybSBpbmZvcm1hdGlvbi4gVGhpcyB2YWx1ZSBjYW4gYmUgb3ZlcnJpZGRlbiBieSBhIFtgZm9ybWFjdGlvbmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9idXR0b24jYXR0ci1mb3JtYWN0aW9uKSBhdHRyaWJ1dGUgb24gYSBbYDxidXR0b24+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2J1dHRvbiAiVGhlIEhUTUwgPGJ1dHRvbj4gZWxlbWVudCByZXByZXNlbnRzIGEgY2xpY2thYmxlIGJ1dHRvbiwgd2hpY2ggY2FuIGJlIHVzZWQgaW4gZm9ybXMgb3IgYW55d2hlcmUgaW4gYSBkb2N1bWVudCB0aGF0IG5lZWRzIHNpbXBsZSwgc3RhbmRhcmQgYnV0dG9uIGZ1bmN0aW9uYWxpdHkuIikgb3IgW2A8aW5wdXQ+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2lucHV0ICJUaGUgSFRNTCA8aW5wdXQ+IGVsZW1lbnQgaXMgdXNlZCB0byBjcmVhdGUgaW50ZXJhY3RpdmUgY29udHJvbHMgZm9yIHdlYi1iYXNlZCBmb3JtcyBpbiBvcmRlciB0byBhY2NlcHQgZGF0YSBmcm9tIHRoZSB1c2VyOyBhIHdpZGUgdmFyaWV0eSBvZiB0eXBlcyBvZiBpbnB1dCBkYXRhIGFuZCBjb250cm9sIHdpZGdldHMgYXJlIGF2YWlsYWJsZSwgZGVwZW5kaW5nIG9uIHRoZSBkZXZpY2UgYW5kIHVzZXIgYWdlbnQuIikgZWxlbWVudC4nfX0se25hbWU6ImF1dG9jb21wbGV0ZSIsdmFsdWVTZXQ6Im8iLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkluZGljYXRlcyB3aGV0aGVyIGlucHV0IGVsZW1lbnRzIGNhbiBieSBkZWZhdWx0IGhhdmUgdGhlaXIgdmFsdWVzIGF1dG9tYXRpY2FsbHkgY29tcGxldGVkIGJ5IHRoZSBicm93c2VyLiBUaGlzIHNldHRpbmcgY2FuIGJlIG92ZXJyaWRkZW4gYnkgYW4gYGF1dG9jb21wbGV0ZWAgYXR0cmlidXRlIG9uIGFuIGVsZW1lbnQgYmVsb25naW5nIHRvIHRoZSBmb3JtLiBQb3NzaWJsZSB2YWx1ZXMgYXJlOlxuXG4qICAgYG9mZmA6IFRoZSB1c2VyIG11c3QgZXhwbGljaXRseSBlbnRlciBhIHZhbHVlIGludG8gZWFjaCBmaWVsZCBmb3IgZXZlcnkgdXNlLCBvciB0aGUgZG9jdW1lbnQgcHJvdmlkZXMgaXRzIG93biBhdXRvLWNvbXBsZXRpb24gbWV0aG9kOyB0aGUgYnJvd3NlciBkb2VzIG5vdCBhdXRvbWF0aWNhbGx5IGNvbXBsZXRlIGVudHJpZXMuXG4qICAgYG9uYDogVGhlIGJyb3dzZXIgY2FuIGF1dG9tYXRpY2FsbHkgY29tcGxldGUgdmFsdWVzIGJhc2VkIG9uIHZhbHVlcyB0aGF0IHRoZSB1c2VyIGhhcyBwcmV2aW91c2x5IGVudGVyZWQgaW4gdGhlIGZvcm0uXG5cbkZvciBtb3N0IG1vZGVybiBicm93c2VycyAoaW5jbHVkaW5nIEZpcmVmb3ggMzgrLCBHb29nbGUgQ2hyb21lIDM0KywgSUUgMTErKSBzZXR0aW5nIHRoZSBhdXRvY29tcGxldGUgYXR0cmlidXRlIHdpbGwgbm90IHByZXZlbnQgYSBicm93c2VyJ3MgcGFzc3dvcmQgbWFuYWdlciBmcm9tIGFza2luZyB0aGUgdXNlciBpZiB0aGV5IHdhbnQgdG8gc3RvcmUgbG9naW4gZmllbGRzICh1c2VybmFtZSBhbmQgcGFzc3dvcmQpLCBpZiB0aGUgdXNlciBwZXJtaXRzIHRoZSBzdG9yYWdlIHRoZSBicm93c2VyIHdpbGwgYXV0b2ZpbGwgdGhlIGxvZ2luIHRoZSBuZXh0IHRpbWUgdGhlIHVzZXIgdmlzaXRzIHRoZSBwYWdlLiBTZWUgW1RoZSBhdXRvY29tcGxldGUgYXR0cmlidXRlIGFuZCBsb2dpbiBmaWVsZHNdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL1NlY3VyaXR5L1NlY3VyaW5nX3lvdXJfc2l0ZS9UdXJuaW5nX29mZl9mb3JtX2F1dG9jb21wbGV0aW9uI1RoZV9hdXRvY29tcGxldGVfYXR0cmlidXRlX2FuZF9sb2dpbl9maWVsZHMpLiJ9fSx7bmFtZToiZW5jdHlwZSIsdmFsdWVTZXQ6ImV0IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOidXaGVuIHRoZSB2YWx1ZSBvZiB0aGUgYG1ldGhvZGAgYXR0cmlidXRlIGlzIGBwb3N0YCwgZW5jdHlwZSBpcyB0aGUgW01JTUUgdHlwZV0oaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTWltZV90eXBlKSBvZiBjb250ZW50IHRoYXQgaXMgdXNlZCB0byBzdWJtaXQgdGhlIGZvcm0gdG8gdGhlIHNlcnZlci4gUG9zc2libGUgdmFsdWVzIGFyZTpcblxuKiAgIGBhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWRgOiBUaGUgZGVmYXVsdCB2YWx1ZSBpZiB0aGUgYXR0cmlidXRlIGlzIG5vdCBzcGVjaWZpZWQuXG4qICAgYG11bHRpcGFydC9mb3JtLWRhdGFgOiBUaGUgdmFsdWUgdXNlZCBmb3IgYW4gW2A8aW5wdXQ+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2lucHV0ICJUaGUgSFRNTCA8aW5wdXQ+IGVsZW1lbnQgaXMgdXNlZCB0byBjcmVhdGUgaW50ZXJhY3RpdmUgY29udHJvbHMgZm9yIHdlYi1iYXNlZCBmb3JtcyBpbiBvcmRlciB0byBhY2NlcHQgZGF0YSBmcm9tIHRoZSB1c2VyOyBhIHdpZGUgdmFyaWV0eSBvZiB0eXBlcyBvZiBpbnB1dCBkYXRhIGFuZCBjb250cm9sIHdpZGdldHMgYXJlIGF2YWlsYWJsZSwgZGVwZW5kaW5nIG9uIHRoZSBkZXZpY2UgYW5kIHVzZXIgYWdlbnQuIikgZWxlbWVudCB3aXRoIHRoZSBgdHlwZWAgYXR0cmlidXRlIHNldCB0byAiZmlsZSIuXG4qICAgYHRleHQvcGxhaW5gOiAoSFRNTDUpXG5cblRoaXMgdmFsdWUgY2FuIGJlIG92ZXJyaWRkZW4gYnkgYSBbYGZvcm1lbmN0eXBlYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2J1dHRvbiNhdHRyLWZvcm1lbmN0eXBlKSBhdHRyaWJ1dGUgb24gYSBbYDxidXR0b24+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2J1dHRvbiAiVGhlIEhUTUwgPGJ1dHRvbj4gZWxlbWVudCByZXByZXNlbnRzIGEgY2xpY2thYmxlIGJ1dHRvbiwgd2hpY2ggY2FuIGJlIHVzZWQgaW4gZm9ybXMgb3IgYW55d2hlcmUgaW4gYSBkb2N1bWVudCB0aGF0IG5lZWRzIHNpbXBsZSwgc3RhbmRhcmQgYnV0dG9uIGZ1bmN0aW9uYWxpdHkuIikgb3IgW2A8aW5wdXQ+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2lucHV0ICJUaGUgSFRNTCA8aW5wdXQ+IGVsZW1lbnQgaXMgdXNlZCB0byBjcmVhdGUgaW50ZXJhY3RpdmUgY29udHJvbHMgZm9yIHdlYi1iYXNlZCBmb3JtcyBpbiBvcmRlciB0byBhY2NlcHQgZGF0YSBmcm9tIHRoZSB1c2VyOyBhIHdpZGUgdmFyaWV0eSBvZiB0eXBlcyBvZiBpbnB1dCBkYXRhIGFuZCBjb250cm9sIHdpZGdldHMgYXJlIGF2YWlsYWJsZSwgZGVwZW5kaW5nIG9uIHRoZSBkZXZpY2UgYW5kIHVzZXIgYWdlbnQuIikgZWxlbWVudC4nfX0se25hbWU6Im1ldGhvZCIsdmFsdWVTZXQ6Im0iLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6J1RoZSBbSFRUUF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRUUCkgbWV0aG9kIHRoYXQgdGhlIGJyb3dzZXIgdXNlcyB0byBzdWJtaXQgdGhlIGZvcm0uIFBvc3NpYmxlIHZhbHVlcyBhcmU6XG5cbiogICBgcG9zdGA6IENvcnJlc3BvbmRzIHRvIHRoZSBIVFRQIFtQT1NUIG1ldGhvZF0oaHR0cHM6Ly93d3cudzMub3JnL1Byb3RvY29scy9yZmMyNjE2L3JmYzI2MTYtc2VjOS5odG1sI3NlYzkuNSkgOyBmb3JtIGRhdGEgYXJlIGluY2x1ZGVkIGluIHRoZSBib2R5IG9mIHRoZSBmb3JtIGFuZCBzZW50IHRvIHRoZSBzZXJ2ZXIuXG4qICAgYGdldGA6IENvcnJlc3BvbmRzIHRvIHRoZSBIVFRQIFtHRVQgbWV0aG9kXShodHRwczovL3d3dy53My5vcmcvUHJvdG9jb2xzL3JmYzI2MTYvcmZjMjYxNi1zZWM5Lmh0bWwjc2VjOS4zKTsgZm9ybSBkYXRhIGFyZSBhcHBlbmRlZCB0byB0aGUgYGFjdGlvbmAgYXR0cmlidXRlIFVSSSB3aXRoIGEgXCc/XCcgYXMgc2VwYXJhdG9yLCBhbmQgdGhlIHJlc3VsdGluZyBVUkkgaXMgc2VudCB0byB0aGUgc2VydmVyLiBVc2UgdGhpcyBtZXRob2Qgd2hlbiB0aGUgZm9ybSBoYXMgbm8gc2lkZS1lZmZlY3RzIGFuZCBjb250YWlucyBvbmx5IEFTQ0lJIGNoYXJhY3RlcnMuXG4qICAgYGRpYWxvZ2A6IFVzZSB3aGVuIHRoZSBmb3JtIGlzIGluc2lkZSBhwqBbYDxkaWFsb2c+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2RpYWxvZyAiVGhlIEhUTUwgPGRpYWxvZz4gZWxlbWVudCByZXByZXNlbnRzIGEgZGlhbG9nIGJveCBvciBvdGhlciBpbnRlcmFjdGl2ZSBjb21wb25lbnQsIHN1Y2ggYXMgYW4gaW5zcGVjdG9yIG9yIHdpbmRvdy4iKSBlbGVtZW50IHRvIGNsb3NlIHRoZSBkaWFsb2cgd2hlbiBzdWJtaXR0ZWQuXG5cblRoaXMgdmFsdWUgY2FuIGJlIG92ZXJyaWRkZW4gYnkgYSBbYGZvcm1tZXRob2RgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvYnV0dG9uI2F0dHItZm9ybW1ldGhvZCkgYXR0cmlidXRlIG9uIGEgW2A8YnV0dG9uPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9idXR0b24gIlRoZSBIVE1MIDxidXR0b24+IGVsZW1lbnQgcmVwcmVzZW50cyBhIGNsaWNrYWJsZSBidXR0b24sIHdoaWNoIGNhbiBiZSB1c2VkIGluIGZvcm1zIG9yIGFueXdoZXJlIGluIGEgZG9jdW1lbnQgdGhhdCBuZWVkcyBzaW1wbGUsIHN0YW5kYXJkIGJ1dHRvbiBmdW5jdGlvbmFsaXR5LiIpIG9yIFtgPGlucHV0PmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9pbnB1dCAiVGhlIEhUTUwgPGlucHV0PiBlbGVtZW50IGlzIHVzZWQgdG8gY3JlYXRlIGludGVyYWN0aXZlIGNvbnRyb2xzIGZvciB3ZWItYmFzZWQgZm9ybXMgaW4gb3JkZXIgdG8gYWNjZXB0IGRhdGEgZnJvbSB0aGUgdXNlcjsgYSB3aWRlIHZhcmlldHkgb2YgdHlwZXMgb2YgaW5wdXQgZGF0YSBhbmQgY29udHJvbCB3aWRnZXRzIGFyZSBhdmFpbGFibGUsIGRlcGVuZGluZyBvbiB0aGUgZGV2aWNlIGFuZCB1c2VyIGFnZW50LiIpIGVsZW1lbnQuJ319LHtuYW1lOiJuYW1lIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgbmFtZSBvZiB0aGUgZm9ybS4gSW4gSFRNTCA0LCBpdHMgdXNlIGlzIGRlcHJlY2F0ZWQgKGBpZGAgc2hvdWxkIGJlIHVzZWQgaW5zdGVhZCkuIEl0IG11c3QgYmUgdW5pcXVlIGFtb25nIHRoZSBmb3JtcyBpbiBhIGRvY3VtZW50IGFuZCBub3QganVzdCBhbiBlbXB0eSBzdHJpbmcgaW4gSFRNTCA1LiJ9fSx7bmFtZToibm92YWxpZGF0ZSIsdmFsdWVTZXQ6InYiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6J1RoaXMgQm9vbGVhbiBhdHRyaWJ1dGUgaW5kaWNhdGVzIHRoYXQgdGhlIGZvcm0gaXMgbm90IHRvIGJlIHZhbGlkYXRlZCB3aGVuIHN1Ym1pdHRlZC4gSWYgdGhpcyBhdHRyaWJ1dGUgaXMgbm90IHNwZWNpZmllZCAoYW5kIHRoZXJlZm9yZSB0aGUgZm9ybSBpcyB2YWxpZGF0ZWQpLCB0aGlzIGRlZmF1bHQgc2V0dGluZyBjYW4gYmUgb3ZlcnJpZGRlbiBieSBhIFtgZm9ybW5vdmFsaWRhdGVgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvYnV0dG9uI2F0dHItZm9ybW5vdmFsaWRhdGUpIGF0dHJpYnV0ZSBvbiBhIFtgPGJ1dHRvbj5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvYnV0dG9uICJUaGUgSFRNTCA8YnV0dG9uPiBlbGVtZW50IHJlcHJlc2VudHMgYSBjbGlja2FibGUgYnV0dG9uLCB3aGljaCBjYW4gYmUgdXNlZCBpbiBmb3JtcyBvciBhbnl3aGVyZSBpbiBhIGRvY3VtZW50IHRoYXQgbmVlZHMgc2ltcGxlLCBzdGFuZGFyZCBidXR0b24gZnVuY3Rpb25hbGl0eS4iKSBvciBbYDxpbnB1dD5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvaW5wdXQgIlRoZSBIVE1MIDxpbnB1dD4gZWxlbWVudCBpcyB1c2VkIHRvIGNyZWF0ZSBpbnRlcmFjdGl2ZSBjb250cm9scyBmb3Igd2ViLWJhc2VkIGZvcm1zIGluIG9yZGVyIHRvIGFjY2VwdCBkYXRhIGZyb20gdGhlIHVzZXI7IGEgd2lkZSB2YXJpZXR5IG9mIHR5cGVzIG9mIGlucHV0IGRhdGEgYW5kIGNvbnRyb2wgd2lkZ2V0cyBhcmUgYXZhaWxhYmxlLCBkZXBlbmRpbmcgb24gdGhlIGRldmljZSBhbmQgdXNlciBhZ2VudC4iKSBlbGVtZW50IGJlbG9uZ2luZyB0byB0aGUgZm9ybS4nfX0se25hbWU6InRhcmdldCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTonQSBuYW1lIG9yIGtleXdvcmQgaW5kaWNhdGluZyB3aGVyZSB0byBkaXNwbGF5IHRoZSByZXNwb25zZSB0aGF0IGlzIHJlY2VpdmVkIGFmdGVyIHN1Ym1pdHRpbmcgdGhlIGZvcm0uIEluIEhUTUwgNCwgdGhpcyBpcyB0aGUgbmFtZS9rZXl3b3JkIGZvciBhIGZyYW1lLiBJbiBIVE1MNSwgaXQgaXMgYSBuYW1lL2tleXdvcmQgZm9yIGEgX2Jyb3dzaW5nIGNvbnRleHRfIChmb3IgZXhhbXBsZSwgdGFiLCB3aW5kb3csIG9yIGlubGluZSBmcmFtZSkuIFRoZSBmb2xsb3dpbmcga2V5d29yZHMgaGF2ZSBzcGVjaWFsIG1lYW5pbmdzOlxuXG4qICAgYF9zZWxmYDogTG9hZCB0aGUgcmVzcG9uc2UgaW50byB0aGUgc2FtZSBIVE1MIDQgZnJhbWUgKG9yIEhUTUw1IGJyb3dzaW5nIGNvbnRleHQpIGFzIHRoZSBjdXJyZW50IG9uZS4gVGhpcyB2YWx1ZSBpcyB0aGUgZGVmYXVsdCBpZiB0aGUgYXR0cmlidXRlIGlzIG5vdCBzcGVjaWZpZWQuXG4qICAgYF9ibGFua2A6IExvYWQgdGhlIHJlc3BvbnNlIGludG8gYSBuZXcgdW5uYW1lZCBIVE1MIDQgd2luZG93IG9yIEhUTUw1IGJyb3dzaW5nIGNvbnRleHQuXG4qICAgYF9wYXJlbnRgOiBMb2FkIHRoZSByZXNwb25zZSBpbnRvIHRoZSBIVE1MIDQgZnJhbWVzZXQgcGFyZW50IG9mIHRoZSBjdXJyZW50IGZyYW1lLCBvciBIVE1MNSBwYXJlbnQgYnJvd3NpbmcgY29udGV4dCBvZiB0aGUgY3VycmVudCBvbmUuIElmIHRoZXJlIGlzIG5vIHBhcmVudCwgdGhpcyBvcHRpb24gYmVoYXZlcyB0aGUgc2FtZSB3YXkgYXMgYF9zZWxmYC5cbiogICBgX3RvcGA6IEhUTUwgNDogTG9hZCB0aGUgcmVzcG9uc2UgaW50byB0aGUgZnVsbCBvcmlnaW5hbCB3aW5kb3csIGFuZCBjYW5jZWwgYWxsIG90aGVyIGZyYW1lcy4gSFRNTDU6IExvYWQgdGhlIHJlc3BvbnNlIGludG8gdGhlIHRvcC1sZXZlbCBicm93c2luZyBjb250ZXh0IChpLmUuLCB0aGUgYnJvd3NpbmcgY29udGV4dCB0aGF0IGlzIGFuIGFuY2VzdG9yIG9mIHRoZSBjdXJyZW50IG9uZSwgYW5kIGhhcyBubyBwYXJlbnQpLiBJZiB0aGVyZSBpcyBubyBwYXJlbnQsIHRoaXMgb3B0aW9uIGJlaGF2ZXMgdGhlIHNhbWUgd2F5IGFzIGBfc2VsZmAuXG4qICAgX2lmcmFtZW5hbWVfOiBUaGUgcmVzcG9uc2UgaXMgZGlzcGxheWVkIGluIGEgbmFtZWQgW2A8aWZyYW1lPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9pZnJhbWUgIlRoZSBIVE1MIElubGluZSBGcmFtZSBlbGVtZW50ICg8aWZyYW1lPikgcmVwcmVzZW50cyBhIG5lc3RlZCBicm93c2luZyBjb250ZXh0LCBlbWJlZGRpbmcgYW5vdGhlciBIVE1MIHBhZ2UgaW50byB0aGUgY3VycmVudCBvbmUuIikuXG5cbkhUTUw1OiBUaGlzIHZhbHVlIGNhbiBiZSBvdmVycmlkZGVuIGJ5IGEgW2Bmb3JtdGFyZ2V0YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2J1dHRvbiNhdHRyLWZvcm10YXJnZXQpIGF0dHJpYnV0ZSBvbiBhIFtgPGJ1dHRvbj5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvYnV0dG9uICJUaGUgSFRNTCA8YnV0dG9uPiBlbGVtZW50IHJlcHJlc2VudHMgYSBjbGlja2FibGUgYnV0dG9uLCB3aGljaCBjYW4gYmUgdXNlZCBpbiBmb3JtcyBvciBhbnl3aGVyZSBpbiBhIGRvY3VtZW50IHRoYXQgbmVlZHMgc2ltcGxlLCBzdGFuZGFyZCBidXR0b24gZnVuY3Rpb25hbGl0eS4iKSBvciBbYDxpbnB1dD5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvaW5wdXQgIlRoZSBIVE1MIDxpbnB1dD4gZWxlbWVudCBpcyB1c2VkIHRvIGNyZWF0ZSBpbnRlcmFjdGl2ZSBjb250cm9scyBmb3Igd2ViLWJhc2VkIGZvcm1zIGluIG9yZGVyIHRvIGFjY2VwdCBkYXRhIGZyb20gdGhlIHVzZXI7IGEgd2lkZSB2YXJpZXR5IG9mIHR5cGVzIG9mIGlucHV0IGRhdGEgYW5kIGNvbnRyb2wgd2lkZ2V0cyBhcmUgYXZhaWxhYmxlLCBkZXBlbmRpbmcgb24gdGhlIGRldmljZSBhbmQgdXNlciBhZ2VudC4iKSBlbGVtZW50Lid9fSx7bmFtZToiYWNjZXB0IixkZXNjcmlwdGlvbjonQSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiBjb250ZW50IHR5cGVzIHRoYXQgdGhlIHNlcnZlciBhY2NlcHRzLlxuXG4qKlVzYWdlIG5vdGU6KiogVGhpcyBhdHRyaWJ1dGUgaGFzIGJlZW4gcmVtb3ZlZCBpbiBIVE1MNSBhbmQgc2hvdWxkIG5vIGxvbmdlciBiZSB1c2VkLiBJbnN0ZWFkLCB1c2UgdGhlIFtgYWNjZXB0YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2lucHV0I2F0dHItYWNjZXB0KSBhdHRyaWJ1dGUgb2YgdGhlIHNwZWNpZmljIFtgPGlucHV0PmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9pbnB1dCAiVGhlIEhUTUwgPGlucHV0PiBlbGVtZW50IGlzIHVzZWQgdG8gY3JlYXRlIGludGVyYWN0aXZlIGNvbnRyb2xzIGZvciB3ZWItYmFzZWQgZm9ybXMgaW4gb3JkZXIgdG8gYWNjZXB0IGRhdGEgZnJvbSB0aGUgdXNlcjsgYSB3aWRlIHZhcmlldHkgb2YgdHlwZXMgb2YgaW5wdXQgZGF0YSBhbmQgY29udHJvbCB3aWRnZXRzIGFyZSBhdmFpbGFibGUsIGRlcGVuZGluZyBvbiB0aGUgZGV2aWNlIGFuZCB1c2VyIGFnZW50LiIpIGVsZW1lbnQuJ30se25hbWU6ImF1dG9jYXBpdGFsaXplIixkZXNjcmlwdGlvbjoiVGhpcyBpcyBhIG5vbnN0YW5kYXJkIGF0dHJpYnV0ZSB1c2VkIGJ5IGlPUyBTYWZhcmkgTW9iaWxlIHdoaWNoIGNvbnRyb2xzIHdoZXRoZXIgYW5kIGhvdyB0aGUgdGV4dCB2YWx1ZSBmb3IgdGV4dHVhbCBmb3JtIGNvbnRyb2wgZGVzY2VuZGFudHMgc2hvdWxkIGJlIGF1dG9tYXRpY2FsbHkgY2FwaXRhbGl6ZWQgYXMgaXQgaXMgZW50ZXJlZC9lZGl0ZWQgYnkgdGhlIHVzZXIuIElmIHRoZSBgYXV0b2NhcGl0YWxpemVgIGF0dHJpYnV0ZSBpcyBzcGVjaWZpZWQgb24gYW4gaW5kaXZpZHVhbCBmb3JtIGNvbnRyb2wgZGVzY2VuZGFudCwgaXQgdHJ1bXBzIHRoZSBmb3JtLXdpZGUgYGF1dG9jYXBpdGFsaXplYCBzZXR0aW5nLiBUaGUgbm9uLWRlcHJlY2F0ZWQgdmFsdWVzIGFyZSBhdmFpbGFibGUgaW4gaU9TIDUgYW5kIGxhdGVyLiBUaGUgZGVmYXVsdCB2YWx1ZSBpcyBgc2VudGVuY2VzYC4gUG9zc2libGUgdmFsdWVzIGFyZTpcblxuKiAgIGBub25lYDogQ29tcGxldGVseSBkaXNhYmxlcyBhdXRvbWF0aWMgY2FwaXRhbGl6YXRpb25cbiogICBgc2VudGVuY2VzYDogQXV0b21hdGljYWxseSBjYXBpdGFsaXplIHRoZSBmaXJzdCBsZXR0ZXIgb2Ygc2VudGVuY2VzLlxuKiAgIGB3b3Jkc2A6IEF1dG9tYXRpY2FsbHkgY2FwaXRhbGl6ZSB0aGUgZmlyc3QgbGV0dGVyIG9mIHdvcmRzLlxuKiAgIGBjaGFyYWN0ZXJzYDogQXV0b21hdGljYWxseSBjYXBpdGFsaXplIGFsbCBjaGFyYWN0ZXJzLlxuKiAgIGBvbmA6IERlcHJlY2F0ZWQgc2luY2UgaU9TIDUuXG4qICAgYG9mZmA6IERlcHJlY2F0ZWQgc2luY2UgaU9TIDUuIn1dLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9mb3JtIn1dfSx7bmFtZToibGFiZWwiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBsYWJlbCBlbGVtZW50IHJlcHJlc2VudHMgYSBjYXB0aW9uIGluIGEgdXNlciBpbnRlcmZhY2UuIFRoZSBjYXB0aW9uIGNhbiBiZSBhc3NvY2lhdGVkIHdpdGggYSBzcGVjaWZpYyBmb3JtIGNvbnRyb2wsIGtub3duIGFzIHRoZSBsYWJlbCBlbGVtZW50J3MgbGFiZWxlZCBjb250cm9sLCBlaXRoZXIgdXNpbmcgdGhlIGZvciBhdHRyaWJ1dGUsIG9yIGJ5IHB1dHRpbmcgdGhlIGZvcm0gY29udHJvbCBpbnNpZGUgdGhlIGxhYmVsIGVsZW1lbnQgaXRzZWxmLiJ9LGF0dHJpYnV0ZXM6W3tuYW1lOiJmb3JtIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOidUaGUgW2A8Zm9ybT5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvZm9ybSAiVGhlIEhUTUwgPGZvcm0+IGVsZW1lbnQgcmVwcmVzZW50cyBhIGRvY3VtZW50IHNlY3Rpb24gdGhhdCBjb250YWlucyBpbnRlcmFjdGl2ZSBjb250cm9scyBmb3Igc3VibWl0dGluZyBpbmZvcm1hdGlvbiB0byBhIHdlYiBzZXJ2ZXIuIikgZWxlbWVudCB3aXRoIHdoaWNoIHRoZSBsYWJlbCBpcyBhc3NvY2lhdGVkIChpdHMgX2Zvcm0gb3duZXJfKS4gSWYgc3BlY2lmaWVkLCB0aGUgdmFsdWUgb2YgdGhlIGF0dHJpYnV0ZSBpcyB0aGUgYGlkYCBvZiBhIFtgPGZvcm0+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2Zvcm0gIlRoZSBIVE1MIDxmb3JtPiBlbGVtZW50IHJlcHJlc2VudHMgYSBkb2N1bWVudCBzZWN0aW9uIHRoYXQgY29udGFpbnMgaW50ZXJhY3RpdmUgY29udHJvbHMgZm9yIHN1Ym1pdHRpbmcgaW5mb3JtYXRpb24gdG8gYSB3ZWIgc2VydmVyLiIpIGVsZW1lbnQgaW4gdGhlIHNhbWUgZG9jdW1lbnQuIFRoaXMgbGV0cyB5b3UgcGxhY2UgbGFiZWwgZWxlbWVudHMgYW55d2hlcmUgd2l0aGluIGEgZG9jdW1lbnQsIG5vdCBqdXN0IGFzIGRlc2NlbmRhbnRzIG9mIHRoZWlyIGZvcm0gZWxlbWVudHMuJ319LHtuYW1lOiJmb3IiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBbYGlkYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9HbG9iYWxfYXR0cmlidXRlcyNhdHRyLWlkKSBvZiBhIFtsYWJlbGFibGVdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0d1aWRlL0hUTUwvQ29udGVudF9jYXRlZ29yaWVzI0Zvcm1fbGFiZWxhYmxlKSBmb3JtLXJlbGF0ZWQgZWxlbWVudCBpbiB0aGUgc2FtZSBkb2N1bWVudCBhcyB0aGUgYDxsYWJlbD5gIGVsZW1lbnQuIFRoZSBmaXJzdCBlbGVtZW50IGluIHRoZSBkb2N1bWVudCB3aXRoIGFuIGBpZGAgbWF0Y2hpbmcgdGhlIHZhbHVlIG9mIHRoZSBgZm9yYCBhdHRyaWJ1dGUgaXMgdGhlIF9sYWJlbGVkIGNvbnRyb2xfIGZvciB0aGlzIGxhYmVsIGVsZW1lbnQsIGlmIGl0IGlzIGEgbGFiZWxhYmxlIGVsZW1lbnQuIElmIGl0IGlzwqBub3QgbGFiZWxhYmxlIHRoZW4gdGhlIGBmb3JgIGF0dHJpYnV0ZSBoYXMgbm8gZWZmZWN0LiBJZiB0aGVyZSBhcmUgb3RoZXIgZWxlbWVudHMgd2hpY2ggYWxzbyBtYXRjaCB0aGUgYGlkYCB2YWx1ZSwgbGF0ZXIgaW4gdGhlIGRvY3VtZW50LCB0aGV5IGFyZSBub3QgY29uc2lkZXJlZC5cblxuKipOb3RlKio6IEEgYDxsYWJlbD5gIGVsZW1lbnQgY2FuIGhhdmUgYm90aCBhIGBmb3JgIGF0dHJpYnV0ZSBhbmQgYSBjb250YWluZWQgY29udHJvbCBlbGVtZW50LCBhcyBsb25nIGFzIHRoZSBgZm9yYCBhdHRyaWJ1dGUgcG9pbnRzIHRvIHRoZSBjb250YWluZWQgY29udHJvbCBlbGVtZW50LiJ9fV0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2xhYmVsIn1dfSx7bmFtZToiaW5wdXQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBpbnB1dCBlbGVtZW50IHJlcHJlc2VudHMgYSB0eXBlZCBkYXRhIGZpZWxkLCB1c3VhbGx5IHdpdGggYSBmb3JtIGNvbnRyb2wgdG8gYWxsb3cgdGhlIHVzZXIgdG8gZWRpdCB0aGUgZGF0YS4ifSxhdHRyaWJ1dGVzOlt7bmFtZToiYWNjZXB0In0se25hbWU6ImFsdCJ9LHtuYW1lOiJhdXRvY29tcGxldGUiLHZhbHVlU2V0OiJpbnB1dGF1dG9jb21wbGV0ZSJ9LHtuYW1lOiJhdXRvZm9jdXMiLHZhbHVlU2V0OiJ2In0se25hbWU6ImNoZWNrZWQiLHZhbHVlU2V0OiJ2In0se25hbWU6ImRpcm5hbWUifSx7bmFtZToiZGlzYWJsZWQiLHZhbHVlU2V0OiJ2In0se25hbWU6ImZvcm0ifSx7bmFtZToiZm9ybWFjdGlvbiJ9LHtuYW1lOiJmb3JtZW5jdHlwZSIsdmFsdWVTZXQ6ImV0In0se25hbWU6ImZvcm1tZXRob2QiLHZhbHVlU2V0OiJmbSJ9LHtuYW1lOiJmb3Jtbm92YWxpZGF0ZSIsdmFsdWVTZXQ6InYifSx7bmFtZToiZm9ybXRhcmdldCJ9LHtuYW1lOiJoZWlnaHQifSx7bmFtZToiaW5wdXRtb2RlIix2YWx1ZVNldDoiaW0ifSx7bmFtZToibGlzdCJ9LHtuYW1lOiJtYXgifSx7bmFtZToibWF4bGVuZ3RoIn0se25hbWU6Im1pbiJ9LHtuYW1lOiJtaW5sZW5ndGgifSx7bmFtZToibXVsdGlwbGUiLHZhbHVlU2V0OiJ2In0se25hbWU6Im5hbWUifSx7bmFtZToicGF0dGVybiJ9LHtuYW1lOiJwbGFjZWhvbGRlciJ9LHtuYW1lOiJyZWFkb25seSIsdmFsdWVTZXQ6InYifSx7bmFtZToicmVxdWlyZWQiLHZhbHVlU2V0OiJ2In0se25hbWU6InNpemUifSx7bmFtZToic3JjIn0se25hbWU6InN0ZXAifSx7bmFtZToidHlwZSIsdmFsdWVTZXQ6InQifSx7bmFtZToidmFsdWUifSx7bmFtZToid2lkdGgifV0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2lucHV0In1dfSx7bmFtZToiYnV0dG9uIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgYnV0dG9uIGVsZW1lbnQgcmVwcmVzZW50cyBhIGJ1dHRvbiBsYWJlbGVkIGJ5IGl0cyBjb250ZW50cy4ifSxhdHRyaWJ1dGVzOlt7bmFtZToiYXV0b2ZvY3VzIix2YWx1ZVNldDoidiIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhpcyBCb29sZWFuIGF0dHJpYnV0ZSBsZXRzIHlvdSBzcGVjaWZ5IHRoYXQgdGhlIGJ1dHRvbiBzaG91bGQgaGF2ZSBpbnB1dCBmb2N1cyB3aGVuIHRoZSBwYWdlIGxvYWRzLCB1bmxlc3MgdGhlIHVzZXIgb3ZlcnJpZGVzIGl0LCBmb3IgZXhhbXBsZSBieSB0eXBpbmcgaW4gYSBkaWZmZXJlbnQgY29udHJvbC4gT25seSBvbmUgZm9ybS1hc3NvY2lhdGVkIGVsZW1lbnQgaW4gYSBkb2N1bWVudCBjYW4gaGF2ZSB0aGlzIGF0dHJpYnV0ZSBzcGVjaWZpZWQuIn19LHtuYW1lOiJkaXNhYmxlZCIsdmFsdWVTZXQ6InYiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6J1RoaXMgQm9vbGVhbiBhdHRyaWJ1dGUgaW5kaWNhdGVzIHRoYXQgdGhlIHVzZXIgY2Fubm90IGludGVyYWN0IHdpdGggdGhlIGJ1dHRvbi4gSWYgdGhpcyBhdHRyaWJ1dGUgaXMgbm90IHNwZWNpZmllZCwgdGhlIGJ1dHRvbiBpbmhlcml0cyBpdHMgc2V0dGluZyBmcm9tIHRoZSBjb250YWluaW5nIGVsZW1lbnQsIGZvciBleGFtcGxlIFtgPGZpZWxkc2V0PmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9maWVsZHNldCAiVGhlIEhUTUwgPGZpZWxkc2V0PiBlbGVtZW50IGlzIHVzZWQgdG8gZ3JvdXAgc2V2ZXJhbCBjb250cm9scyBhcyB3ZWxsIGFzIGxhYmVscyAoPGxhYmVsPikgd2l0aGluIGEgd2ViIGZvcm0uIik7IGlmIHRoZXJlIGlzIG5vIGNvbnRhaW5pbmcgZWxlbWVudCB3aXRoIHRoZSAqKmRpc2FibGVkKiogYXR0cmlidXRlIHNldCwgdGhlbiB0aGUgYnV0dG9uIGlzIGVuYWJsZWQuXG5cbkZpcmVmb3ggd2lsbCwgdW5saWtlIG90aGVyIGJyb3dzZXJzLCBieSBkZWZhdWx0LCBbcGVyc2lzdCB0aGUgZHluYW1pYyBkaXNhYmxlZCBzdGF0ZV0oaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvNTk4NTgzOS9idWctd2l0aC1maXJlZm94LWRpc2FibGVkLWF0dHJpYnV0ZS1vZi1pbnB1dC1ub3QtcmVzZXR0aW5nLXdoZW4tcmVmcmVzaGluZykgb2YgYSBbYDxidXR0b24+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2J1dHRvbiAiVGhlIEhUTUwgPGJ1dHRvbj4gZWxlbWVudCByZXByZXNlbnRzIGEgY2xpY2thYmxlIGJ1dHRvbiwgd2hpY2ggY2FuIGJlIHVzZWQgaW4gZm9ybXMgb3IgYW55d2hlcmUgaW4gYSBkb2N1bWVudCB0aGF0IG5lZWRzIHNpbXBsZSwgc3RhbmRhcmQgYnV0dG9uIGZ1bmN0aW9uYWxpdHkuIikgYWNyb3NzIHBhZ2UgbG9hZHMuIFVzZSB0aGUgW2BhdXRvY29tcGxldGVgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvYnV0dG9uI2F0dHItYXV0b2NvbXBsZXRlKSBhdHRyaWJ1dGUgdG8gY29udHJvbCB0aGlzIGZlYXR1cmUuJ319LHtuYW1lOiJmb3JtIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOidUaGUgZm9ybSBlbGVtZW50IHRoYXQgdGhlIGJ1dHRvbiBpcyBhc3NvY2lhdGVkIHdpdGggKGl0cyBfZm9ybSBvd25lcl8pLiBUaGUgdmFsdWUgb2YgdGhlIGF0dHJpYnV0ZSBtdXN0IGJlIHRoZSAqKmlkKiogYXR0cmlidXRlIG9mIGEgW2A8Zm9ybT5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvZm9ybSAiVGhlIEhUTUwgPGZvcm0+IGVsZW1lbnQgcmVwcmVzZW50cyBhIGRvY3VtZW50IHNlY3Rpb24gdGhhdCBjb250YWlucyBpbnRlcmFjdGl2ZSBjb250cm9scyBmb3Igc3VibWl0dGluZyBpbmZvcm1hdGlvbiB0byBhIHdlYiBzZXJ2ZXIuIikgZWxlbWVudCBpbiB0aGUgc2FtZSBkb2N1bWVudC4gSWYgdGhpcyBhdHRyaWJ1dGUgaXMgbm90IHNwZWNpZmllZCwgdGhlIGA8YnV0dG9uPmAgZWxlbWVudCB3aWxsIGJlIGFzc29jaWF0ZWQgdG8gYW4gYW5jZXN0b3IgW2A8Zm9ybT5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvZm9ybSAiVGhlIEhUTUwgPGZvcm0+IGVsZW1lbnQgcmVwcmVzZW50cyBhIGRvY3VtZW50IHNlY3Rpb24gdGhhdCBjb250YWlucyBpbnRlcmFjdGl2ZSBjb250cm9scyBmb3Igc3VibWl0dGluZyBpbmZvcm1hdGlvbiB0byBhIHdlYiBzZXJ2ZXIuIikgZWxlbWVudCwgaWYgb25lIGV4aXN0cy4gVGhpcyBhdHRyaWJ1dGUgZW5hYmxlcyB5b3UgdG8gYXNzb2NpYXRlIGA8YnV0dG9uPmAgZWxlbWVudHMgdG8gW2A8Zm9ybT5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvZm9ybSAiVGhlIEhUTUwgPGZvcm0+IGVsZW1lbnQgcmVwcmVzZW50cyBhIGRvY3VtZW50IHNlY3Rpb24gdGhhdCBjb250YWlucyBpbnRlcmFjdGl2ZSBjb250cm9scyBmb3Igc3VibWl0dGluZyBpbmZvcm1hdGlvbiB0byBhIHdlYiBzZXJ2ZXIuIikgZWxlbWVudHMgYW55d2hlcmUgd2l0aGluIGEgZG9jdW1lbnQsIG5vdCBqdXN0IGFzIGRlc2NlbmRhbnRzIG9mIFtgPGZvcm0+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2Zvcm0gIlRoZSBIVE1MIDxmb3JtPiBlbGVtZW50IHJlcHJlc2VudHMgYSBkb2N1bWVudCBzZWN0aW9uIHRoYXQgY29udGFpbnMgaW50ZXJhY3RpdmUgY29udHJvbHMgZm9yIHN1Ym1pdHRpbmcgaW5mb3JtYXRpb24gdG8gYSB3ZWIgc2VydmVyLiIpIGVsZW1lbnRzLid9fSx7bmFtZToiZm9ybWFjdGlvbiIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIFVSSSBvZiBhIHByb2dyYW0gdGhhdCBwcm9jZXNzZXMgdGhlIGluZm9ybWF0aW9uIHN1Ym1pdHRlZCBieSB0aGUgYnV0dG9uLiBJZiBzcGVjaWZpZWQsIGl0IG92ZXJyaWRlcyB0aGUgW2BhY3Rpb25gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvZm9ybSNhdHRyLWFjdGlvbikgYXR0cmlidXRlIG9mIHRoZSBidXR0b24ncyBmb3JtIG93bmVyLiJ9fSx7bmFtZToiZm9ybWVuY3R5cGUiLHZhbHVlU2V0OiJldCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTonSWYgdGhlIGJ1dHRvbiBpcyBhIHN1Ym1pdCBidXR0b24sIHRoaXMgYXR0cmlidXRlIHNwZWNpZmllcyB0aGUgdHlwZSBvZiBjb250ZW50IHRoYXQgaXMgdXNlZCB0byBzdWJtaXQgdGhlIGZvcm0gdG8gdGhlIHNlcnZlci4gUG9zc2libGUgdmFsdWVzIGFyZTpcblxuKiAgIGBhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWRgOiBUaGUgZGVmYXVsdCB2YWx1ZSBpZiB0aGUgYXR0cmlidXRlIGlzIG5vdCBzcGVjaWZpZWQuXG4qICAgYG11bHRpcGFydC9mb3JtLWRhdGFgOiBVc2UgdGhpcyB2YWx1ZSBpZiB5b3UgYXJlIHVzaW5nIGFuIFtgPGlucHV0PmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9pbnB1dCAiVGhlIEhUTUwgPGlucHV0PiBlbGVtZW50IGlzIHVzZWQgdG8gY3JlYXRlIGludGVyYWN0aXZlIGNvbnRyb2xzIGZvciB3ZWItYmFzZWQgZm9ybXMgaW4gb3JkZXIgdG8gYWNjZXB0IGRhdGEgZnJvbSB0aGUgdXNlcjsgYSB3aWRlIHZhcmlldHkgb2YgdHlwZXMgb2YgaW5wdXQgZGF0YSBhbmQgY29udHJvbCB3aWRnZXRzIGFyZSBhdmFpbGFibGUsIGRlcGVuZGluZyBvbiB0aGUgZGV2aWNlIGFuZCB1c2VyIGFnZW50LiIpIGVsZW1lbnQgd2l0aCB0aGUgW2B0eXBlYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2lucHV0I2F0dHItdHlwZSkgYXR0cmlidXRlIHNldCB0byBgZmlsZWAuXG4qICAgYHRleHQvcGxhaW5gXG5cbklmIHRoaXMgYXR0cmlidXRlIGlzIHNwZWNpZmllZCwgaXQgb3ZlcnJpZGVzIHRoZSBbYGVuY3R5cGVgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvZm9ybSNhdHRyLWVuY3R5cGUpIGF0dHJpYnV0ZSBvZiB0aGUgYnV0dG9uXCdzIGZvcm0gb3duZXIuJ319LHtuYW1lOiJmb3JtbWV0aG9kIix2YWx1ZVNldDoiZm0iLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IklmIHRoZSBidXR0b24gaXMgYSBzdWJtaXQgYnV0dG9uLCB0aGlzIGF0dHJpYnV0ZSBzcGVjaWZpZXMgdGhlIEhUVFAgbWV0aG9kIHRoYXQgdGhlIGJyb3dzZXIgdXNlcyB0byBzdWJtaXQgdGhlIGZvcm0uIFBvc3NpYmxlIHZhbHVlcyBhcmU6XG5cbiogICBgcG9zdGA6IFRoZSBkYXRhIGZyb20gdGhlIGZvcm0gYXJlIGluY2x1ZGVkIGluIHRoZSBib2R5IG9mIHRoZSBmb3JtIGFuZCBzZW50IHRvIHRoZSBzZXJ2ZXIuXG4qICAgYGdldGA6IFRoZSBkYXRhIGZyb20gdGhlIGZvcm0gYXJlIGFwcGVuZGVkIHRvIHRoZSAqKmZvcm0qKiBhdHRyaWJ1dGUgVVJJLCB3aXRoIGEgJz8nIGFzIGEgc2VwYXJhdG9yLCBhbmQgdGhlIHJlc3VsdGluZyBVUkkgaXMgc2VudCB0byB0aGUgc2VydmVyLiBVc2UgdGhpcyBtZXRob2Qgd2hlbiB0aGUgZm9ybSBoYXMgbm8gc2lkZS1lZmZlY3RzIGFuZCBjb250YWlucyBvbmx5IEFTQ0lJIGNoYXJhY3RlcnMuXG5cbklmIHNwZWNpZmllZCwgdGhpcyBhdHRyaWJ1dGUgb3ZlcnJpZGVzIHRoZSBbYG1ldGhvZGBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9mb3JtI2F0dHItbWV0aG9kKSBhdHRyaWJ1dGUgb2YgdGhlIGJ1dHRvbidzIGZvcm0gb3duZXIuIn19LHtuYW1lOiJmb3Jtbm92YWxpZGF0ZSIsdmFsdWVTZXQ6InYiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IklmIHRoZSBidXR0b24gaXMgYSBzdWJtaXQgYnV0dG9uLCB0aGlzIEJvb2xlYW4gYXR0cmlidXRlIHNwZWNpZmllcyB0aGF0IHRoZSBmb3JtIGlzIG5vdCB0byBiZSB2YWxpZGF0ZWQgd2hlbiBpdCBpcyBzdWJtaXR0ZWQuIElmIHRoaXMgYXR0cmlidXRlIGlzIHNwZWNpZmllZCwgaXQgb3ZlcnJpZGVzIHRoZSBbYG5vdmFsaWRhdGVgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvZm9ybSNhdHRyLW5vdmFsaWRhdGUpIGF0dHJpYnV0ZSBvZiB0aGUgYnV0dG9uJ3MgZm9ybSBvd25lci4ifX0se25hbWU6ImZvcm10YXJnZXQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IklmIHRoZSBidXR0b24gaXMgYSBzdWJtaXQgYnV0dG9uLCB0aGlzIGF0dHJpYnV0ZSBpcyBhIG5hbWUgb3Iga2V5d29yZCBpbmRpY2F0aW5nIHdoZXJlIHRvIGRpc3BsYXkgdGhlIHJlc3BvbnNlIHRoYXQgaXMgcmVjZWl2ZWQgYWZ0ZXIgc3VibWl0dGluZyB0aGUgZm9ybS4gVGhpcyBpcyBhIG5hbWUgb2YsIG9yIGtleXdvcmQgZm9yLCBhIF9icm93c2luZyBjb250ZXh0XyAoZm9yIGV4YW1wbGUsIHRhYiwgd2luZG93LCBvciBpbmxpbmUgZnJhbWUpLiBJZiB0aGlzIGF0dHJpYnV0ZSBpcyBzcGVjaWZpZWQsIGl0IG92ZXJyaWRlcyB0aGUgW2B0YXJnZXRgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvZm9ybSNhdHRyLXRhcmdldCkgYXR0cmlidXRlIG9mIHRoZSBidXR0b24ncyBmb3JtIG93bmVyLiBUaGUgZm9sbG93aW5nIGtleXdvcmRzIGhhdmUgc3BlY2lhbCBtZWFuaW5nczpcblxuKiAgIGBfc2VsZmA6IExvYWQgdGhlIHJlc3BvbnNlIGludG8gdGhlIHNhbWUgYnJvd3NpbmcgY29udGV4dCBhcyB0aGUgY3VycmVudCBvbmUuIFRoaXMgdmFsdWUgaXMgdGhlIGRlZmF1bHQgaWYgdGhlIGF0dHJpYnV0ZSBpcyBub3Qgc3BlY2lmaWVkLlxuKiAgIGBfYmxhbmtgOiBMb2FkIHRoZSByZXNwb25zZSBpbnRvIGEgbmV3IHVubmFtZWQgYnJvd3NpbmcgY29udGV4dC5cbiogICBgX3BhcmVudGA6IExvYWQgdGhlIHJlc3BvbnNlIGludG8gdGhlIHBhcmVudCBicm93c2luZyBjb250ZXh0IG9mIHRoZSBjdXJyZW50IG9uZS4gSWYgdGhlcmUgaXMgbm8gcGFyZW50LCB0aGlzIG9wdGlvbiBiZWhhdmVzIHRoZSBzYW1lIHdheSBhcyBgX3NlbGZgLlxuKiAgIGBfdG9wYDogTG9hZCB0aGUgcmVzcG9uc2UgaW50byB0aGUgdG9wLWxldmVsIGJyb3dzaW5nIGNvbnRleHQgKHRoYXQgaXMsIHRoZSBicm93c2luZyBjb250ZXh0IHRoYXQgaXMgYW4gYW5jZXN0b3Igb2YgdGhlIGN1cnJlbnQgb25lLCBhbmQgaGFzIG5vIHBhcmVudCkuIElmIHRoZXJlIGlzIG5vIHBhcmVudCwgdGhpcyBvcHRpb24gYmVoYXZlcyB0aGUgc2FtZSB3YXkgYXMgYF9zZWxmYC4ifX0se25hbWU6Im5hbWUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBuYW1lIG9mIHRoZSBidXR0b24sIHdoaWNoIGlzIHN1Ym1pdHRlZCB3aXRoIHRoZSBmb3JtIGRhdGEuIn19LHtuYW1lOiJ0eXBlIix2YWx1ZVNldDoiYnQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSB0eXBlIG9mIHRoZSBidXR0b24uIFBvc3NpYmxlIHZhbHVlcyBhcmU6XG5cbiogICBgc3VibWl0YDogVGhlIGJ1dHRvbiBzdWJtaXRzIHRoZSBmb3JtIGRhdGEgdG8gdGhlIHNlcnZlci4gVGhpcyBpcyB0aGUgZGVmYXVsdCBpZiB0aGUgYXR0cmlidXRlIGlzIG5vdCBzcGVjaWZpZWQsIG9yIGlmIHRoZSBhdHRyaWJ1dGUgaXMgZHluYW1pY2FsbHkgY2hhbmdlZCB0byBhbiBlbXB0eSBvciBpbnZhbGlkIHZhbHVlLlxuKiAgIGByZXNldGA6IFRoZSBidXR0b24gcmVzZXRzIGFsbCB0aGUgY29udHJvbHMgdG8gdGhlaXIgaW5pdGlhbCB2YWx1ZXMuXG4qICAgYGJ1dHRvbmA6IFRoZSBidXR0b24gaGFzIG5vIGRlZmF1bHQgYmVoYXZpb3IuIEl0IGNhbiBoYXZlIGNsaWVudC1zaWRlIHNjcmlwdHMgYXNzb2NpYXRlZCB3aXRoIHRoZSBlbGVtZW50J3MgZXZlbnRzLCB3aGljaCBhcmUgdHJpZ2dlcmVkIHdoZW4gdGhlIGV2ZW50cyBvY2N1ci4ifX0se25hbWU6InZhbHVlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgaW5pdGlhbCB2YWx1ZSBvZiB0aGUgYnV0dG9uLiBJdCBkZWZpbmVzIHRoZSB2YWx1ZSBhc3NvY2lhdGVkIHdpdGggdGhlIGJ1dHRvbiB3aGljaCBpcyBzdWJtaXR0ZWQgd2l0aCB0aGUgZm9ybSBkYXRhLiBUaGlzIHZhbHVlIGlzIHBhc3NlZCB0byB0aGUgc2VydmVyIGluIHBhcmFtcyB3aGVuIHRoZSBmb3JtIGlzIHN1Ym1pdHRlZC4ifX0se25hbWU6ImF1dG9jb21wbGV0ZSIsZGVzY3JpcHRpb246J1RoZSB1c2Ugb2YgdGhpcyBhdHRyaWJ1dGUgb24gYSBbYDxidXR0b24+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2J1dHRvbiAiVGhlIEhUTUwgPGJ1dHRvbj4gZWxlbWVudCByZXByZXNlbnRzIGEgY2xpY2thYmxlIGJ1dHRvbiwgd2hpY2ggY2FuIGJlIHVzZWQgaW4gZm9ybXMgb3IgYW55d2hlcmUgaW4gYSBkb2N1bWVudCB0aGF0IG5lZWRzIHNpbXBsZSwgc3RhbmRhcmQgYnV0dG9uIGZ1bmN0aW9uYWxpdHkuIikgaXMgbm9uc3RhbmRhcmQgYW5kIEZpcmVmb3gtc3BlY2lmaWMuIEJ5IGRlZmF1bHQsIHVubGlrZSBvdGhlciBicm93c2VycywgW0ZpcmVmb3ggcGVyc2lzdHMgdGhlIGR5bmFtaWMgZGlzYWJsZWQgc3RhdGVdKGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzU5ODU4MzkvYnVnLXdpdGgtZmlyZWZveC1kaXNhYmxlZC1hdHRyaWJ1dGUtb2YtaW5wdXQtbm90LXJlc2V0dGluZy13aGVuLXJlZnJlc2hpbmcpIG9mIGEgW2A8YnV0dG9uPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9idXR0b24gIlRoZSBIVE1MIDxidXR0b24+IGVsZW1lbnQgcmVwcmVzZW50cyBhIGNsaWNrYWJsZSBidXR0b24sIHdoaWNoIGNhbiBiZSB1c2VkIGluIGZvcm1zIG9yIGFueXdoZXJlIGluIGEgZG9jdW1lbnQgdGhhdCBuZWVkcyBzaW1wbGUsIHN0YW5kYXJkIGJ1dHRvbiBmdW5jdGlvbmFsaXR5LiIpIGFjcm9zcyBwYWdlIGxvYWRzLiBTZXR0aW5nIHRoZSB2YWx1ZSBvZiB0aGlzIGF0dHJpYnV0ZSB0byBgb2ZmYCAoaS5lLiBgYXV0b2NvbXBsZXRlPSJvZmYiYCkgZGlzYWJsZXMgdGhpcyBmZWF0dXJlLiBTZWUgW2J1Z8KgNjU0MDcyXShodHRwczovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD02NTQwNzIgImlmIGRpc2FibGVkIHN0YXRlIGlzIGNoYW5nZWQgd2l0aCBqYXZhc2NyaXB0LCB0aGUgbm9ybWFsIHN0YXRlIGRvZXNuXCd0IHJldHVybiBhZnRlciByZWZyZXNoaW5nIHRoZSBwYWdlIikuJ31dLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9idXR0b24ifV19LHtuYW1lOiJzZWxlY3QiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBzZWxlY3QgZWxlbWVudCByZXByZXNlbnRzIGEgY29udHJvbCBmb3Igc2VsZWN0aW5nIGFtb25nc3QgYSBzZXQgb2Ygb3B0aW9ucy4ifSxhdHRyaWJ1dGVzOlt7bmFtZToiYXV0b2NvbXBsZXRlIix2YWx1ZVNldDoiaW5wdXRhdXRvY29tcGxldGUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6J0EgW2BET01TdHJpbmdgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvRE9NU3RyaW5nICJET01TdHJpbmcgaXMgYSBVVEYtMTYgU3RyaW5nLiBBcyBKYXZhU2NyaXB0IGFscmVhZHkgdXNlcyBzdWNoIHN0cmluZ3MsIERPTVN0cmluZyBpcyBtYXBwZWQgZGlyZWN0bHkgdG8gYSBTdHJpbmcuIikgcHJvdmlkaW5nIGEgaGludCBmb3IgYSBbdXNlciBhZ2VudFwnc10oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9HbG9zc2FyeS91c2VyX2FnZW50ICJ1c2VyIGFnZW50XCdzOiBBIHVzZXIgYWdlbnQgaXMgYSBjb21wdXRlciBwcm9ncmFtIHJlcHJlc2VudGluZyBhIHBlcnNvbiwgZm9yIGV4YW1wbGUsIGEgYnJvd3NlciBpbiBhIFdlYiBjb250ZXh0LiIpIGF1dG9jb21wbGV0ZSBmZWF0dXJlLiBTZWUgW1RoZSBIVE1MIGF1dG9jb21wbGV0ZSBhdHRyaWJ1dGVdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvQXR0cmlidXRlcy9hdXRvY29tcGxldGUpIGZvciBhIGNvbXBsZXRlIGxpc3Qgb2YgdmFsdWVzIGFuZCBkZXRhaWxzIG9uIGhvdyB0byB1c2UgYXV0b2NvbXBsZXRlLid9fSx7bmFtZToiYXV0b2ZvY3VzIix2YWx1ZVNldDoidiIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhpcyBCb29sZWFuIGF0dHJpYnV0ZSBsZXRzIHlvdSBzcGVjaWZ5IHRoYXQgYSBmb3JtIGNvbnRyb2wgc2hvdWxkIGhhdmUgaW5wdXQgZm9jdXMgd2hlbiB0aGUgcGFnZSBsb2Fkcy4gT25seSBvbmUgZm9ybSBlbGVtZW50IGluIGEgZG9jdW1lbnQgY2FuIGhhdmUgdGhlIGBhdXRvZm9jdXNgIGF0dHJpYnV0ZS4ifX0se25hbWU6ImRpc2FibGVkIix2YWx1ZVNldDoidiIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhpcyBCb29sZWFuIGF0dHJpYnV0ZSBpbmRpY2F0ZXMgdGhhdCB0aGUgdXNlciBjYW5ub3QgaW50ZXJhY3Qgd2l0aCB0aGUgY29udHJvbC4gSWYgdGhpcyBhdHRyaWJ1dGUgaXMgbm90IHNwZWNpZmllZCwgdGhlIGNvbnRyb2wgaW5oZXJpdHMgaXRzIHNldHRpbmcgZnJvbSB0aGUgY29udGFpbmluZyBlbGVtZW50LCBmb3IgZXhhbXBsZSBgZmllbGRzZXRgOyBpZiB0aGVyZSBpcyBubyBjb250YWluaW5nIGVsZW1lbnQgd2l0aCB0aGUgYGRpc2FibGVkYCBhdHRyaWJ1dGUgc2V0LCB0aGVuIHRoZSBjb250cm9sIGlzIGVuYWJsZWQuIn19LHtuYW1lOiJmb3JtIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOidUaGlzIGF0dHJpYnV0ZSBsZXRzIHlvdSBzcGVjaWZ5IHRoZSBmb3JtIGVsZW1lbnQgdG/CoHdoaWNowqB0aGUgc2VsZWN0IGVsZW1lbnQgaXMgYXNzb2NpYXRlZMKgKHRoYXQgaXMsIGl0cyAiZm9ybSBvd25lciIpLiBJZiB0aGlzIGF0dHJpYnV0ZSBpcyBzcGVjaWZpZWQsIGl0cyB2YWx1ZSBtdXN0IGJlIHRoZSBzYW1lIGFzIHRoZSBgaWRgIG9mIGEgZm9ybSBlbGVtZW50IGluIHRoZSBzYW1lIGRvY3VtZW50LiBUaGlzIGVuYWJsZXMgeW91IHRvIHBsYWNlIHNlbGVjdCBlbGVtZW50cyBhbnl3aGVyZSB3aXRoaW4gYSBkb2N1bWVudCwgbm90IGp1c3QgYXMgZGVzY2VuZGFudHMgb2YgdGhlaXIgZm9ybSBlbGVtZW50cy4nfX0se25hbWU6Im11bHRpcGxlIix2YWx1ZVNldDoidiIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhpcyBCb29sZWFuIGF0dHJpYnV0ZSBpbmRpY2F0ZXMgdGhhdCBtdWx0aXBsZSBvcHRpb25zIGNhbiBiZSBzZWxlY3RlZCBpbiB0aGUgbGlzdC4gSWYgaXQgaXMgbm90IHNwZWNpZmllZCwgdGhlbiBvbmx5IG9uZSBvcHRpb24gY2FuIGJlIHNlbGVjdGVkIGF0IGEgdGltZS4gV2hlbiBgbXVsdGlwbGVgIGlzIHNwZWNpZmllZCwgbW9zdCBicm93c2VycyB3aWxsIHNob3cgYSBzY3JvbGxpbmcgbGlzdCBib3ggaW5zdGVhZCBvZiBhIHNpbmdsZSBsaW5lIGRyb3Bkb3duLiJ9fSx7bmFtZToibmFtZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhpcyBhdHRyaWJ1dGUgaXMgdXNlZCB0byBzcGVjaWZ5IHRoZSBuYW1lIG9mIHRoZSBjb250cm9sLiJ9fSx7bmFtZToicmVxdWlyZWQiLHZhbHVlU2V0OiJ2IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJBIEJvb2xlYW4gYXR0cmlidXRlIGluZGljYXRpbmcgdGhhdCBhbiBvcHRpb24gd2l0aCBhIG5vbi1lbXB0eSBzdHJpbmcgdmFsdWUgbXVzdCBiZSBzZWxlY3RlZC4ifX0se25hbWU6InNpemUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IklmIHRoZSBjb250cm9sIGlzIHByZXNlbnRlZCBhcyBhIHNjcm9sbGluZyBsaXN0IGJveCAoZS5nLiB3aGVuIGBtdWx0aXBsZWAgaXMgc3BlY2lmaWVkKSwgdGhpcyBhdHRyaWJ1dGUgcmVwcmVzZW50cyB0aGUgbnVtYmVyIG9mIHJvd3MgaW4gdGhlIGxpc3QgdGhhdCBzaG91bGQgYmUgdmlzaWJsZSBhdCBvbmUgdGltZS4gQnJvd3NlcnMgYXJlIG5vdCByZXF1aXJlZCB0byBwcmVzZW50IGEgc2VsZWN0IGVsZW1lbnQgYXMgYSBzY3JvbGxlZCBsaXN0IGJveC4gVGhlIGRlZmF1bHQgdmFsdWUgaXMgMC5cblxuKipOb3RlOioqIEFjY29yZGluZyB0byB0aGUgSFRNTDUgc3BlY2lmaWNhdGlvbiwgdGhlIGRlZmF1bHQgdmFsdWUgZm9yIHNpemUgc2hvdWxkIGJlIDE7IGhvd2V2ZXIsIGluIHByYWN0aWNlLCB0aGlzIGhhcyBiZWVuIGZvdW5kIHRvIGJyZWFrIHNvbWUgd2ViIHNpdGVzLCBhbmQgbm8gb3RoZXIgYnJvd3NlciBjdXJyZW50bHkgZG9lcyB0aGF0LCBzbyBNb3ppbGxhIGhhcyBvcHRlZCB0byBjb250aW51ZSB0byByZXR1cm4gMCBmb3IgdGhlIHRpbWUgYmVpbmcgd2l0aCBGaXJlZm94LiJ9fV0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3NlbGVjdCJ9XX0se25hbWU6ImRhdGFsaXN0IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgZGF0YWxpc3QgZWxlbWVudCByZXByZXNlbnRzIGEgc2V0IG9mIG9wdGlvbiBlbGVtZW50cyB0aGF0IHJlcHJlc2VudCBwcmVkZWZpbmVkIG9wdGlvbnMgZm9yIG90aGVyIGNvbnRyb2xzLiBJbiB0aGUgcmVuZGVyaW5nLCB0aGUgZGF0YWxpc3QgZWxlbWVudCByZXByZXNlbnRzIG5vdGhpbmcgYW5kIGl0LCBhbG9uZyB3aXRoIGl0cyBjaGlsZHJlbiwgc2hvdWxkIGJlIGhpZGRlbi4ifSxhdHRyaWJ1dGVzOltdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9kYXRhbGlzdCJ9XX0se25hbWU6Im9wdGdyb3VwIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgb3B0Z3JvdXAgZWxlbWVudCByZXByZXNlbnRzIGEgZ3JvdXAgb2Ygb3B0aW9uIGVsZW1lbnRzIHdpdGggYSBjb21tb24gbGFiZWwuIn0sYXR0cmlidXRlczpbe25hbWU6ImRpc2FibGVkIix2YWx1ZVNldDoidiIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiSWYgdGhpcyBCb29sZWFuIGF0dHJpYnV0ZSBpcyBzZXQsIG5vbmUgb2YgdGhlIGl0ZW1zIGluIHRoaXMgb3B0aW9uIGdyb3VwIGlzIHNlbGVjdGFibGUuIE9mdGVuIGJyb3dzZXJzIGdyZXkgb3V0IHN1Y2ggY29udHJvbCBhbmQgaXQgd29uJ3QgcmVjZWl2ZSBhbnkgYnJvd3NpbmcgZXZlbnRzLCBsaWtlIG1vdXNlIGNsaWNrcyBvciBmb2N1cy1yZWxhdGVkIG9uZXMuIn19LHtuYW1lOiJsYWJlbCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIG5hbWUgb2YgdGhlIGdyb3VwIG9mIG9wdGlvbnMsIHdoaWNoIHRoZSBicm93c2VyIGNhbiB1c2Ugd2hlbiBsYWJlbGluZyB0aGUgb3B0aW9ucyBpbiB0aGUgdXNlciBpbnRlcmZhY2UuIFRoaXMgYXR0cmlidXRlIGlzIG1hbmRhdG9yeSBpZiB0aGlzIGVsZW1lbnQgaXMgdXNlZC4ifX1dLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9vcHRncm91cCJ9XX0se25hbWU6Im9wdGlvbiIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIG9wdGlvbiBlbGVtZW50IHJlcHJlc2VudHMgYW4gb3B0aW9uIGluIGEgc2VsZWN0IGVsZW1lbnQgb3IgYXMgcGFydCBvZiBhIGxpc3Qgb2Ygc3VnZ2VzdGlvbnMgaW4gYSBkYXRhbGlzdCBlbGVtZW50LiJ9LGF0dHJpYnV0ZXM6W3tuYW1lOiJkaXNhYmxlZCIsdmFsdWVTZXQ6InYiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6J0lmIHRoaXMgQm9vbGVhbiBhdHRyaWJ1dGUgaXMgc2V0LCB0aGlzIG9wdGlvbiBpcyBub3QgY2hlY2thYmxlLiBPZnRlbiBicm93c2VycyBncmV5IG91dCBzdWNoIGNvbnRyb2wgYW5kIGl0IHdvblwndCByZWNlaXZlIGFueSBicm93c2luZyBldmVudCwgbGlrZSBtb3VzZSBjbGlja3Mgb3IgZm9jdXMtcmVsYXRlZCBvbmVzLiBJZiB0aGlzIGF0dHJpYnV0ZSBpcyBub3Qgc2V0LCB0aGUgZWxlbWVudCBjYW4gc3RpbGwgYmUgZGlzYWJsZWQgaWYgb25lIG9mIGl0cyBhbmNlc3RvcnMgaXMgYSBkaXNhYmxlZCBbYDxvcHRncm91cD5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvb3B0Z3JvdXAgIlRoZSBIVE1MIDxvcHRncm91cD4gZWxlbWVudCBjcmVhdGVzIGEgZ3JvdXBpbmcgb2Ygb3B0aW9ucyB3aXRoaW4gYSA8c2VsZWN0PiBlbGVtZW50LiIpIGVsZW1lbnQuJ319LHtuYW1lOiJsYWJlbCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhpcyBhdHRyaWJ1dGUgaXMgdGV4dCBmb3IgdGhlIGxhYmVsIGluZGljYXRpbmcgdGhlIG1lYW5pbmcgb2YgdGhlIG9wdGlvbi4gSWYgdGhlIGBsYWJlbGAgYXR0cmlidXRlIGlzbid0IGRlZmluZWQsIGl0cyB2YWx1ZSBpcyB0aGF0IG9mIHRoZSBlbGVtZW50IHRleHQgY29udGVudC4ifX0se25hbWU6InNlbGVjdGVkIix2YWx1ZVNldDoidiIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTonSWYgcHJlc2VudCwgdGhpcyBCb29sZWFuIGF0dHJpYnV0ZSBpbmRpY2F0ZXMgdGhhdCB0aGUgb3B0aW9uIGlzIGluaXRpYWxseSBzZWxlY3RlZC4gSWYgdGhlIGA8b3B0aW9uPmAgZWxlbWVudCBpcyB0aGUgZGVzY2VuZGFudCBvZiBhIFtgPHNlbGVjdD5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvc2VsZWN0ICJUaGUgSFRNTCA8c2VsZWN0PiBlbGVtZW50IHJlcHJlc2VudHMgYSBjb250cm9sIHRoYXQgcHJvdmlkZXMgYSBtZW51IG9mIG9wdGlvbnMiKSBlbGVtZW50IHdob3NlIFtgbXVsdGlwbGVgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvc2VsZWN0I2F0dHItbXVsdGlwbGUpIGF0dHJpYnV0ZSBpcyBub3Qgc2V0LCBvbmx5IG9uZSBzaW5nbGUgYDxvcHRpb24+YCBvZiB0aGlzIFtgPHNlbGVjdD5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvc2VsZWN0ICJUaGUgSFRNTCA8c2VsZWN0PiBlbGVtZW50IHJlcHJlc2VudHMgYSBjb250cm9sIHRoYXQgcHJvdmlkZXMgYSBtZW51IG9mIG9wdGlvbnMiKSBlbGVtZW50IG1heSBoYXZlIHRoZSBgc2VsZWN0ZWRgIGF0dHJpYnV0ZS4nfX0se25hbWU6InZhbHVlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgY29udGVudCBvZiB0aGlzIGF0dHJpYnV0ZSByZXByZXNlbnRzIHRoZSB2YWx1ZSB0byBiZSBzdWJtaXR0ZWQgd2l0aCB0aGUgZm9ybSwgc2hvdWxkIHRoaXMgb3B0aW9uIGJlIHNlbGVjdGVkLsKgSWYgdGhpcyBhdHRyaWJ1dGUgaXMgb21pdHRlZCwgdGhlIHZhbHVlIGlzIHRha2VuIGZyb20gdGhlIHRleHQgY29udGVudCBvZiB0aGUgb3B0aW9uIGVsZW1lbnQuIn19XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvb3B0aW9uIn1dfSx7bmFtZToidGV4dGFyZWEiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSB0ZXh0YXJlYSBlbGVtZW50IHJlcHJlc2VudHMgYSBtdWx0aWxpbmUgcGxhaW4gdGV4dCBlZGl0IGNvbnRyb2wgZm9yIHRoZSBlbGVtZW50J3MgcmF3IHZhbHVlLiBUaGUgY29udGVudHMgb2YgdGhlIGNvbnRyb2wgcmVwcmVzZW50IHRoZSBjb250cm9sJ3MgZGVmYXVsdCB2YWx1ZS4ifSxhdHRyaWJ1dGVzOlt7bmFtZToiYXV0b2NvbXBsZXRlIix2YWx1ZVNldDoiaW5wdXRhdXRvY29tcGxldGUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6J1RoaXMgYXR0cmlidXRlIGluZGljYXRlcyB3aGV0aGVyIHRoZSB2YWx1ZSBvZiB0aGUgY29udHJvbCBjYW4gYmUgYXV0b21hdGljYWxseSBjb21wbGV0ZWQgYnkgdGhlIGJyb3dzZXIuIFBvc3NpYmxlIHZhbHVlcyBhcmU6XG5cbiogICBgb2ZmYDogVGhlIHVzZXIgbXVzdCBleHBsaWNpdGx5IGVudGVyIGEgdmFsdWUgaW50byB0aGlzIGZpZWxkIGZvciBldmVyeSB1c2UsIG9yIHRoZSBkb2N1bWVudCBwcm92aWRlcyBpdHMgb3duIGF1dG8tY29tcGxldGlvbiBtZXRob2Q7IHRoZSBicm93c2VyIGRvZXMgbm90IGF1dG9tYXRpY2FsbHkgY29tcGxldGUgdGhlIGVudHJ5LlxuKiAgIGBvbmA6IFRoZSBicm93c2VyIGNhbiBhdXRvbWF0aWNhbGx5IGNvbXBsZXRlIHRoZSB2YWx1ZSBiYXNlZCBvbiB2YWx1ZXMgdGhhdCB0aGUgdXNlciBoYXMgZW50ZXJlZCBkdXJpbmcgcHJldmlvdXMgdXNlcy5cblxuSWYgdGhlIGBhdXRvY29tcGxldGVgIGF0dHJpYnV0ZSBpcyBub3Qgc3BlY2lmaWVkIG9uIGEgYDx0ZXh0YXJlYT5gIGVsZW1lbnQsIHRoZW4gdGhlIGJyb3dzZXIgdXNlcyB0aGUgYGF1dG9jb21wbGV0ZWAgYXR0cmlidXRlIHZhbHVlIG9mIHRoZSBgPHRleHRhcmVhPmAgZWxlbWVudFwncyBmb3JtIG93bmVyLiBUaGUgZm9ybSBvd25lciBpcyBlaXRoZXIgdGhlIFtgPGZvcm0+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2Zvcm0gIlRoZSBIVE1MIDxmb3JtPiBlbGVtZW50IHJlcHJlc2VudHMgYSBkb2N1bWVudCBzZWN0aW9uIHRoYXQgY29udGFpbnMgaW50ZXJhY3RpdmUgY29udHJvbHMgZm9yIHN1Ym1pdHRpbmcgaW5mb3JtYXRpb24gdG8gYSB3ZWIgc2VydmVyLiIpIGVsZW1lbnQgdGhhdCB0aGlzIGA8dGV4dGFyZWE+YCBlbGVtZW50IGlzIGEgZGVzY2VuZGFudCBvZiBvciB0aGUgZm9ybSBlbGVtZW50IHdob3NlIGBpZGAgaXMgc3BlY2lmaWVkIGJ5IHRoZSBgZm9ybWAgYXR0cmlidXRlIG9mIHRoZSBpbnB1dCBlbGVtZW50LiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIHRoZSBbYGF1dG9jb21wbGV0ZWBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9mb3JtI2F0dHItYXV0b2NvbXBsZXRlKSBhdHRyaWJ1dGUgaW4gW2A8Zm9ybT5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvZm9ybSAiVGhlIEhUTUwgPGZvcm0+IGVsZW1lbnQgcmVwcmVzZW50cyBhIGRvY3VtZW50IHNlY3Rpb24gdGhhdCBjb250YWlucyBpbnRlcmFjdGl2ZSBjb250cm9scyBmb3Igc3VibWl0dGluZyBpbmZvcm1hdGlvbiB0byBhIHdlYiBzZXJ2ZXIuIikuJ319LHtuYW1lOiJhdXRvZm9jdXMiLHZhbHVlU2V0OiJ2IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGlzIEJvb2xlYW4gYXR0cmlidXRlIGxldHMgeW91IHNwZWNpZnkgdGhhdCBhIGZvcm0gY29udHJvbCBzaG91bGQgaGF2ZSBpbnB1dCBmb2N1cyB3aGVuIHRoZSBwYWdlIGxvYWRzLiBPbmx5IG9uZSBmb3JtLWFzc29jaWF0ZWQgZWxlbWVudCBpbiBhIGRvY3VtZW50IGNhbiBoYXZlIHRoaXMgYXR0cmlidXRlIHNwZWNpZmllZC4ifX0se25hbWU6ImNvbHMiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSB2aXNpYmxlIHdpZHRoIG9mIHRoZSB0ZXh0IGNvbnRyb2wsIGluIGF2ZXJhZ2UgY2hhcmFjdGVyIHdpZHRocy4gSWYgaXQgaXMgc3BlY2lmaWVkLCBpdCBtdXN0IGJlIGEgcG9zaXRpdmUgaW50ZWdlci4gSWYgaXQgaXMgbm90IHNwZWNpZmllZCwgdGhlIGRlZmF1bHQgdmFsdWUgaXMgYDIwYC4ifX0se25hbWU6ImRpcm5hbWUifSx7bmFtZToiZGlzYWJsZWQiLHZhbHVlU2V0OiJ2IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOidUaGlzIEJvb2xlYW4gYXR0cmlidXRlIGluZGljYXRlcyB0aGF0IHRoZSB1c2VyIGNhbm5vdCBpbnRlcmFjdCB3aXRoIHRoZSBjb250cm9sLiBJZiB0aGlzIGF0dHJpYnV0ZSBpcyBub3Qgc3BlY2lmaWVkLCB0aGUgY29udHJvbCBpbmhlcml0cyBpdHMgc2V0dGluZyBmcm9tIHRoZSBjb250YWluaW5nIGVsZW1lbnQsIGZvciBleGFtcGxlIFtgPGZpZWxkc2V0PmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9maWVsZHNldCAiVGhlIEhUTUwgPGZpZWxkc2V0PiBlbGVtZW50IGlzIHVzZWQgdG8gZ3JvdXAgc2V2ZXJhbCBjb250cm9scyBhcyB3ZWxsIGFzIGxhYmVscyAoPGxhYmVsPikgd2l0aGluIGEgd2ViIGZvcm0uIik7IGlmIHRoZXJlIGlzIG5vIGNvbnRhaW5pbmcgZWxlbWVudCB3aGVuIHRoZSBgZGlzYWJsZWRgIGF0dHJpYnV0ZSBpcyBzZXQsIHRoZSBjb250cm9sIGlzIGVuYWJsZWQuJ319LHtuYW1lOiJmb3JtIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOidUaGUgZm9ybSBlbGVtZW50IHRoYXQgdGhlIGA8dGV4dGFyZWE+YCBlbGVtZW50IGlzIGFzc29jaWF0ZWQgd2l0aCAoaXRzICJmb3JtIG93bmVyIikuIFRoZSB2YWx1ZSBvZiB0aGUgYXR0cmlidXRlIG11c3QgYmUgdGhlIGBpZGAgb2YgYSBmb3JtIGVsZW1lbnQgaW4gdGhlIHNhbWUgZG9jdW1lbnQuIElmIHRoaXMgYXR0cmlidXRlIGlzIG5vdCBzcGVjaWZpZWQsIHRoZSBgPHRleHRhcmVhPmAgZWxlbWVudCBtdXN0IGJlIGEgZGVzY2VuZGFudCBvZiBhIGZvcm0gZWxlbWVudC4gVGhpcyBhdHRyaWJ1dGUgZW5hYmxlcyB5b3UgdG8gcGxhY2UgYDx0ZXh0YXJlYT5gIGVsZW1lbnRzIGFueXdoZXJlIHdpdGhpbiBhIGRvY3VtZW50LCBub3QganVzdCBhcyBkZXNjZW5kYW50cyBvZiBmb3JtIGVsZW1lbnRzLid9fSx7bmFtZToiaW5wdXRtb2RlIix2YWx1ZVNldDoiaW0ifSx7bmFtZToibWF4bGVuZ3RoIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgbWF4aW11bSBudW1iZXIgb2YgY2hhcmFjdGVycyAodW5pY29kZSBjb2RlIHBvaW50cykgdGhhdCB0aGUgdXNlciBjYW4gZW50ZXIuIElmIHRoaXMgdmFsdWUgaXNuJ3Qgc3BlY2lmaWVkLCB0aGUgdXNlciBjYW4gZW50ZXIgYW4gdW5saW1pdGVkIG51bWJlciBvZiBjaGFyYWN0ZXJzLiJ9fSx7bmFtZToibWlubGVuZ3RoIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgbWluaW11bSBudW1iZXIgb2YgY2hhcmFjdGVycyAodW5pY29kZSBjb2RlIHBvaW50cykgcmVxdWlyZWQgdGhhdCB0aGUgdXNlciBzaG91bGQgZW50ZXIuIn19LHtuYW1lOiJuYW1lIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgbmFtZSBvZiB0aGUgY29udHJvbC4ifX0se25hbWU6InBsYWNlaG9sZGVyIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOidBIGhpbnQgdG8gdGhlIHVzZXIgb2Ygd2hhdCBjYW4gYmUgZW50ZXJlZCBpbiB0aGUgY29udHJvbC4gQ2FycmlhZ2UgcmV0dXJucyBvciBsaW5lLWZlZWRzIHdpdGhpbiB0aGUgcGxhY2Vob2xkZXIgdGV4dCBtdXN0IGJlIHRyZWF0ZWQgYXMgbGluZSBicmVha3Mgd2hlbiByZW5kZXJpbmcgdGhlIGhpbnQuXG5cbioqTm90ZToqKiBQbGFjZWhvbGRlcnMgc2hvdWxkIG9ubHkgYmUgdXNlZCB0byBzaG93IGFuIGV4YW1wbGUgb2YgdGhlIHR5cGUgb2YgZGF0YSB0aGF0IHNob3VsZCBiZSBlbnRlcmVkIGludG8gYSBmb3JtOyB0aGV5IGFyZSBfbm90XyBhIHN1YnN0aXR1dGUgZm9yIGEgcHJvcGVyIFtgPGxhYmVsPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9sYWJlbCAiVGhlIEhUTUwgPGxhYmVsPiBlbGVtZW50IHJlcHJlc2VudHMgYSBjYXB0aW9uIGZvciBhbiBpdGVtIGluIGEgdXNlciBpbnRlcmZhY2UuIikgZWxlbWVudCB0aWVkIHRvIHRoZSBpbnB1dC4gU2VlIFtMYWJlbHMgYW5kIHBsYWNlaG9sZGVyc10oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2lucHV0I0xhYmVsc19hbmRfcGxhY2Vob2xkZXJzICJUaGUgSFRNTCA8aW5wdXQ+IGVsZW1lbnQgaXMgdXNlZCB0byBjcmVhdGUgaW50ZXJhY3RpdmUgY29udHJvbHMgZm9yIHdlYi1iYXNlZCBmb3JtcyBpbiBvcmRlciB0byBhY2NlcHQgZGF0YSBmcm9tIHRoZSB1c2VyOyBhIHdpZGUgdmFyaWV0eSBvZiB0eXBlcyBvZiBpbnB1dCBkYXRhIGFuZCBjb250cm9sIHdpZGdldHMgYXJlIGF2YWlsYWJsZSwgZGVwZW5kaW5nIG9uIHRoZSBkZXZpY2UgYW5kIHVzZXIgYWdlbnQuIikgaW4gWzxpbnB1dD46IFRoZSBJbnB1dCAoRm9ybSBJbnB1dCkgZWxlbWVudF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2lucHV0ICJUaGUgSFRNTCA8aW5wdXQ+IGVsZW1lbnQgaXMgdXNlZCB0byBjcmVhdGUgaW50ZXJhY3RpdmUgY29udHJvbHMgZm9yIHdlYi1iYXNlZCBmb3JtcyBpbiBvcmRlciB0byBhY2NlcHQgZGF0YSBmcm9tIHRoZSB1c2VyOyBhIHdpZGUgdmFyaWV0eSBvZiB0eXBlcyBvZiBpbnB1dCBkYXRhIGFuZCBjb250cm9sIHdpZGdldHMgYXJlIGF2YWlsYWJsZSwgZGVwZW5kaW5nIG9uIHRoZSBkZXZpY2UgYW5kIHVzZXIgYWdlbnQuIikgZm9yIGEgZnVsbCBleHBsYW5hdGlvbi4nfX0se25hbWU6InJlYWRvbmx5Iix2YWx1ZVNldDoidiIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhpcyBCb29sZWFuIGF0dHJpYnV0ZSBpbmRpY2F0ZXMgdGhhdCB0aGUgdXNlciBjYW5ub3QgbW9kaWZ5IHRoZSB2YWx1ZSBvZiB0aGUgY29udHJvbC4gVW5saWtlIHRoZSBgZGlzYWJsZWRgIGF0dHJpYnV0ZSwgdGhlIGByZWFkb25seWAgYXR0cmlidXRlIGRvZXMgbm90IHByZXZlbnQgdGhlIHVzZXIgZnJvbSBjbGlja2luZyBvciBzZWxlY3RpbmcgaW4gdGhlIGNvbnRyb2wuIFRoZSB2YWx1ZSBvZiBhIHJlYWQtb25seSBjb250cm9sIGlzIHN0aWxsIHN1Ym1pdHRlZCB3aXRoIHRoZSBmb3JtLiJ9fSx7bmFtZToicmVxdWlyZWQiLHZhbHVlU2V0OiJ2IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGlzIGF0dHJpYnV0ZSBzcGVjaWZpZXMgdGhhdCB0aGUgdXNlciBtdXN0IGZpbGwgaW4gYSB2YWx1ZSBiZWZvcmUgc3VibWl0dGluZyBhIGZvcm0uIn19LHtuYW1lOiJyb3dzIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgbnVtYmVyIG9mIHZpc2libGUgdGV4dCBsaW5lcyBmb3IgdGhlIGNvbnRyb2wuIn19LHtuYW1lOiJ3cmFwIix2YWx1ZVNldDoidyIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiSW5kaWNhdGVzIGhvdyB0aGUgY29udHJvbCB3cmFwcyB0ZXh0LiBQb3NzaWJsZSB2YWx1ZXMgYXJlOlxuXG4qICAgYGhhcmRgOiBUaGUgYnJvd3NlciBhdXRvbWF0aWNhbGx5IGluc2VydHMgbGluZSBicmVha3MgKENSK0xGKSBzbyB0aGF0IGVhY2ggbGluZSBoYXMgbm8gbW9yZSB0aGFuIHRoZSB3aWR0aCBvZiB0aGUgY29udHJvbDsgdGhlIGBjb2xzYCBhdHRyaWJ1dGUgbXVzdCBhbHNvIGJlIHNwZWNpZmllZCBmb3IgdGhpcyB0byB0YWtlIGVmZmVjdC5cbiogICBgc29mdGA6IFRoZSBicm93c2VyIGVuc3VyZXMgdGhhdCBhbGwgbGluZSBicmVha3MgaW4gdGhlIHZhbHVlIGNvbnNpc3Qgb2YgYSBDUitMRiBwYWlyLCBidXQgZG9lcyBub3QgaW5zZXJ0IGFueSBhZGRpdGlvbmFsIGxpbmUgYnJlYWtzLlxuKiAgIGBvZmZgIDogTGlrZSBgc29mdGAgYnV0IGNoYW5nZXMgYXBwZWFyYW5jZSB0byBgd2hpdGUtc3BhY2U6IHByZWAgc28gbGluZSBzZWdtZW50cyBleGNlZWRpbmcgYGNvbHNgIGFyZSBub3Qgd3JhcHBlZCBhbmQgdGhlIGA8dGV4dGFyZWE+YCBiZWNvbWVzIGhvcml6b250YWxseSBzY3JvbGxhYmxlLlxuXG5JZiB0aGlzIGF0dHJpYnV0ZSBpcyBub3Qgc3BlY2lmaWVkLCBgc29mdGAgaXMgaXRzIGRlZmF1bHQgdmFsdWUuIn19LHtuYW1lOiJhdXRvY2FwaXRhbGl6ZSIsZGVzY3JpcHRpb246IlRoaXMgaXMgYSBub24tc3RhbmRhcmQgYXR0cmlidXRlIHN1cHBvcnRlZCBieSBXZWJLaXQgb24gaU9TICh0aGVyZWZvcmUgbmVhcmx5IGFsbCBicm93c2VycyBydW5uaW5nIG9uIGlPUywgaW5jbHVkaW5nIFNhZmFyaSwgRmlyZWZveCwgYW5kIENocm9tZSksIHdoaWNoIGNvbnRyb2xzIHdoZXRoZXIgYW5kIGhvdyB0aGUgdGV4dCB2YWx1ZSBzaG91bGQgYmUgYXV0b21hdGljYWxseSBjYXBpdGFsaXplZCBhcyBpdCBpcyBlbnRlcmVkL2VkaXRlZCBieSB0aGUgdXNlci4gVGhlIG5vbi1kZXByZWNhdGVkIHZhbHVlcyBhcmUgYXZhaWxhYmxlIGluIGlPUyA1IGFuZCBsYXRlci4gUG9zc2libGUgdmFsdWVzIGFyZTpcblxuKiAgIGBub25lYDogQ29tcGxldGVseSBkaXNhYmxlcyBhdXRvbWF0aWMgY2FwaXRhbGl6YXRpb24uXG4qICAgYHNlbnRlbmNlc2A6IEF1dG9tYXRpY2FsbHkgY2FwaXRhbGl6ZSB0aGUgZmlyc3QgbGV0dGVyIG9mIHNlbnRlbmNlcy5cbiogICBgd29yZHNgOiBBdXRvbWF0aWNhbGx5IGNhcGl0YWxpemUgdGhlIGZpcnN0IGxldHRlciBvZiB3b3Jkcy5cbiogICBgY2hhcmFjdGVyc2A6IEF1dG9tYXRpY2FsbHkgY2FwaXRhbGl6ZSBhbGwgY2hhcmFjdGVycy5cbiogICBgb25gOiBEZXByZWNhdGVkIHNpbmNlIGlPUyA1LlxuKiAgIGBvZmZgOiBEZXByZWNhdGVkIHNpbmNlIGlPUyA1LiJ9LHtuYW1lOiJzcGVsbGNoZWNrIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIHdoZXRoZXIgdGhlIGA8dGV4dGFyZWE+YCBpcyBzdWJqZWN0IHRvIHNwZWxsIGNoZWNraW5nIGJ5IHRoZSB1bmRlcmx5aW5nIGJyb3dzZXIvT1MuIHRoZSB2YWx1ZSBjYW4gYmU6XG5cbiogICBgdHJ1ZWA6IEluZGljYXRlcyB0aGF0IHRoZSBlbGVtZW50IG5lZWRzIHRvIGhhdmUgaXRzIHNwZWxsaW5nIGFuZCBncmFtbWFyIGNoZWNrZWQuXG4qICAgYGRlZmF1bHRgIDogSW5kaWNhdGVzIHRoYXQgdGhlIGVsZW1lbnQgaXMgdG8gYWN0IGFjY29yZGluZyB0byBhIGRlZmF1bHQgYmVoYXZpb3IsIHBvc3NpYmx5IGJhc2VkIG9uIHRoZSBwYXJlbnQgZWxlbWVudCdzIG93biBgc3BlbGxjaGVja2AgdmFsdWUuXG4qICAgYGZhbHNlYCA6IEluZGljYXRlcyB0aGF0IHRoZSBlbGVtZW50IHNob3VsZCBub3QgYmUgc3BlbGwgY2hlY2tlZC4ifV0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3RleHRhcmVhIn1dfSx7bmFtZToib3V0cHV0IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgb3V0cHV0IGVsZW1lbnQgcmVwcmVzZW50cyB0aGUgcmVzdWx0IG9mIGEgY2FsY3VsYXRpb24gcGVyZm9ybWVkIGJ5IHRoZSBhcHBsaWNhdGlvbiwgb3IgdGhlIHJlc3VsdCBvZiBhIHVzZXIgYWN0aW9uLiJ9LGF0dHJpYnV0ZXM6W3tuYW1lOiJmb3IiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkEgc3BhY2Utc2VwYXJhdGVkIGxpc3Qgb2Ygb3RoZXIgZWxlbWVudHPigJkgW2BpZGBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvR2xvYmFsX2F0dHJpYnV0ZXMvaWQpcywgaW5kaWNhdGluZyB0aGF0IHRob3NlIGVsZW1lbnRzIGNvbnRyaWJ1dGVkIGlucHV0IHZhbHVlcyB0byAob3Igb3RoZXJ3aXNlIGFmZmVjdGVkKSB0aGUgY2FsY3VsYXRpb24uIn19LHtuYW1lOiJmb3JtIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOidUaGUgW2Zvcm0gZWxlbWVudF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2Zvcm0pIHRoYXQgdGhpcyBlbGVtZW50IGlzIGFzc29jaWF0ZWQgd2l0aCAoaXRzICJmb3JtIG93bmVyIikuIFRoZSB2YWx1ZSBvZiB0aGUgYXR0cmlidXRlIG11c3QgYmUgYW4gYGlkYCBvZiBhIGZvcm0gZWxlbWVudCBpbiB0aGUgc2FtZSBkb2N1bWVudC4gSWYgdGhpcyBhdHRyaWJ1dGUgaXMgbm90IHNwZWNpZmllZCwgdGhlIG91dHB1dCBlbGVtZW50IG11c3QgYmUgYSBkZXNjZW5kYW50IG9mIGEgZm9ybSBlbGVtZW50LiBUaGlzIGF0dHJpYnV0ZSBlbmFibGVzIHlvdSB0byBwbGFjZSBvdXRwdXQgZWxlbWVudHMgYW55d2hlcmUgd2l0aGluIGEgZG9jdW1lbnQsIG5vdCBqdXN0IGFzIGRlc2NlbmRhbnRzIG9mIHRoZWlyIGZvcm0gZWxlbWVudHMuJ319LHtuYW1lOiJuYW1lIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOidUaGUgbmFtZSBvZiB0aGUgZWxlbWVudCwgZXhwb3NlZCBpbiB0aGUgW2BIVE1MRm9ybUVsZW1lbnRgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvSFRNTEZvcm1FbGVtZW50ICJUaGUgSFRNTEZvcm1FbGVtZW50IGludGVyZmFjZSByZXByZXNlbnRzIGEgPGZvcm0+IGVsZW1lbnQgaW4gdGhlIERPTTsgaXQgYWxsb3dzIGFjY2VzcyB0byBhbmQgaW4gc29tZSBjYXNlcyBtb2RpZmljYXRpb24gb2YgYXNwZWN0cyBvZiB0aGUgZm9ybSwgYXMgd2VsbCBhcyBhY2Nlc3MgdG8gaXRzIGNvbXBvbmVudCBlbGVtZW50cy4iKSBBUEkuJ319XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvb3V0cHV0In1dfSx7bmFtZToicHJvZ3Jlc3MiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBwcm9ncmVzcyBlbGVtZW50IHJlcHJlc2VudHMgdGhlIGNvbXBsZXRpb24gcHJvZ3Jlc3Mgb2YgYSB0YXNrLiBUaGUgcHJvZ3Jlc3MgaXMgZWl0aGVyIGluZGV0ZXJtaW5hdGUsIGluZGljYXRpbmcgdGhhdCBwcm9ncmVzcyBpcyBiZWluZyBtYWRlIGJ1dCB0aGF0IGl0IGlzIG5vdCBjbGVhciBob3cgbXVjaCBtb3JlIHdvcmsgcmVtYWlucyB0byBiZSBkb25lIGJlZm9yZSB0aGUgdGFzayBpcyBjb21wbGV0ZSAoZS5nLiBiZWNhdXNlIHRoZSB0YXNrIGlzIHdhaXRpbmcgZm9yIGEgcmVtb3RlIGhvc3QgdG8gcmVzcG9uZCksIG9yIHRoZSBwcm9ncmVzcyBpcyBhIG51bWJlciBpbiB0aGUgcmFuZ2UgemVybyB0byBhIG1heGltdW0sIGdpdmluZyB0aGUgZnJhY3Rpb24gb2Ygd29yayB0aGF0IGhhcyBzbyBmYXIgYmVlbiBjb21wbGV0ZWQuIn0sYXR0cmlidXRlczpbe25hbWU6InZhbHVlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGlzIGF0dHJpYnV0ZSBzcGVjaWZpZXMgaG93IG11Y2ggb2YgdGhlIHRhc2sgdGhhdCBoYXMgYmVlbiBjb21wbGV0ZWQuIEl0IG11c3QgYmUgYSB2YWxpZCBmbG9hdGluZyBwb2ludCBudW1iZXIgYmV0d2VlbiAwIGFuZCBgbWF4YCwgb3IgYmV0d2VlbiAwIGFuZCAxIGlmIGBtYXhgIGlzIG9taXR0ZWQuIElmIHRoZXJlIGlzIG5vIGB2YWx1ZWAgYXR0cmlidXRlLCB0aGUgcHJvZ3Jlc3MgYmFyIGlzIGluZGV0ZXJtaW5hdGU7IHRoaXMgaW5kaWNhdGVzIHRoYXQgYW4gYWN0aXZpdHkgaXMgb25nb2luZyB3aXRoIG5vIGluZGljYXRpb24gb2YgaG93IGxvbmcgaXQgaXMgZXhwZWN0ZWQgdG8gdGFrZS4ifX0se25hbWU6Im1heCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhpcyBhdHRyaWJ1dGUgZGVzY3JpYmVzIGhvdyBtdWNoIHdvcmsgdGhlIHRhc2sgaW5kaWNhdGVkIGJ5IHRoZSBgcHJvZ3Jlc3NgIGVsZW1lbnQgcmVxdWlyZXMuIFRoZSBgbWF4YCBhdHRyaWJ1dGUsIGlmIHByZXNlbnQsIG11c3QgaGF2ZSBhIHZhbHVlIGdyZWF0ZXIgdGhhbiB6ZXJvIGFuZCBiZSBhIHZhbGlkIGZsb2F0aW5nIHBvaW50IG51bWJlci4gVGhlIGRlZmF1bHQgdmFsdWUgaXMgMS4ifX1dLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9wcm9ncmVzcyJ9XX0se25hbWU6Im1ldGVyIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgbWV0ZXIgZWxlbWVudCByZXByZXNlbnRzIGEgc2NhbGFyIG1lYXN1cmVtZW50IHdpdGhpbiBhIGtub3duIHJhbmdlLCBvciBhIGZyYWN0aW9uYWwgdmFsdWU7IGZvciBleGFtcGxlIGRpc2sgdXNhZ2UsIHRoZSByZWxldmFuY2Ugb2YgYSBxdWVyeSByZXN1bHQsIG9yIHRoZSBmcmFjdGlvbiBvZiBhIHZvdGluZyBwb3B1bGF0aW9uIHRvIGhhdmUgc2VsZWN0ZWQgYSBwYXJ0aWN1bGFyIGNhbmRpZGF0ZS4ifSxhdHRyaWJ1dGVzOlt7bmFtZToidmFsdWUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBjdXJyZW50IG51bWVyaWMgdmFsdWUuIFRoaXMgbXVzdCBiZSBiZXR3ZWVuIHRoZSBtaW5pbXVtIGFuZCBtYXhpbXVtIHZhbHVlcyAoYG1pbmAgYXR0cmlidXRlIGFuZCBgbWF4YCBhdHRyaWJ1dGUpIGlmIHRoZXkgYXJlIHNwZWNpZmllZC4gSWYgdW5zcGVjaWZpZWQgb3IgbWFsZm9ybWVkLCB0aGUgdmFsdWUgaXMgMC4gSWYgc3BlY2lmaWVkLCBidXQgbm90IHdpdGhpbiB0aGUgcmFuZ2UgZ2l2ZW4gYnkgdGhlIGBtaW5gIGF0dHJpYnV0ZSBhbmQgYG1heGAgYXR0cmlidXRlLCB0aGUgdmFsdWUgaXMgZXF1YWwgdG8gdGhlIG5lYXJlc3QgZW5kIG9mIHRoZSByYW5nZS5cblxuKipVc2FnZSBub3RlOioqIFVubGVzcyB0aGUgYHZhbHVlYCBhdHRyaWJ1dGUgaXMgYmV0d2VlbiBgMGAgYW5kIGAxYCAoaW5jbHVzaXZlKSwgdGhlIGBtaW5gIGFuZCBgbWF4YCBhdHRyaWJ1dGVzIHNob3VsZCBkZWZpbmUgdGhlIHJhbmdlIHNvIHRoYXQgdGhlIGB2YWx1ZWAgYXR0cmlidXRlJ3MgdmFsdWUgaXMgd2l0aGluIGl0LiJ9fSx7bmFtZToibWluIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgbG93ZXIgbnVtZXJpYyBib3VuZCBvZiB0aGUgbWVhc3VyZWQgcmFuZ2UuIFRoaXMgbXVzdCBiZSBsZXNzIHRoYW4gdGhlIG1heGltdW0gdmFsdWUgKGBtYXhgIGF0dHJpYnV0ZSksIGlmIHNwZWNpZmllZC4gSWYgdW5zcGVjaWZpZWQsIHRoZSBtaW5pbXVtIHZhbHVlIGlzIDAuIn19LHtuYW1lOiJtYXgiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSB1cHBlciBudW1lcmljIGJvdW5kIG9mIHRoZSBtZWFzdXJlZCByYW5nZS4gVGhpcyBtdXN0IGJlIGdyZWF0ZXIgdGhhbiB0aGUgbWluaW11bSB2YWx1ZSAoYG1pbmAgYXR0cmlidXRlKSwgaWYgc3BlY2lmaWVkLiBJZiB1bnNwZWNpZmllZCwgdGhlIG1heGltdW0gdmFsdWUgaXMgMS4ifX0se25hbWU6ImxvdyIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHVwcGVyIG51bWVyaWMgYm91bmQgb2YgdGhlIGxvdyBlbmQgb2YgdGhlIG1lYXN1cmVkIHJhbmdlLiBUaGlzIG11c3QgYmUgZ3JlYXRlciB0aGFuIHRoZSBtaW5pbXVtIHZhbHVlIChgbWluYCBhdHRyaWJ1dGUpLCBhbmQgaXQgYWxzbyBtdXN0IGJlIGxlc3MgdGhhbiB0aGUgaGlnaCB2YWx1ZSBhbmQgbWF4aW11bSB2YWx1ZSAoYGhpZ2hgIGF0dHJpYnV0ZSBhbmQgYG1heGAgYXR0cmlidXRlLCByZXNwZWN0aXZlbHkpLCBpZiBhbnkgYXJlIHNwZWNpZmllZC4gSWYgdW5zcGVjaWZpZWQsIG9yIGlmIGxlc3MgdGhhbiB0aGUgbWluaW11bSB2YWx1ZSwgdGhlIGBsb3dgIHZhbHVlIGlzIGVxdWFsIHRvIHRoZSBtaW5pbXVtIHZhbHVlLiJ9fSx7bmFtZToiaGlnaCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGxvd2VyIG51bWVyaWMgYm91bmQgb2YgdGhlIGhpZ2ggZW5kIG9mIHRoZSBtZWFzdXJlZCByYW5nZS4gVGhpcyBtdXN0IGJlIGxlc3MgdGhhbiB0aGUgbWF4aW11bSB2YWx1ZSAoYG1heGAgYXR0cmlidXRlKSwgYW5kIGl0IGFsc28gbXVzdCBiZSBncmVhdGVyIHRoYW4gdGhlIGxvdyB2YWx1ZSBhbmQgbWluaW11bSB2YWx1ZSAoYGxvd2AgYXR0cmlidXRlIGFuZCAqKm1pbioqIGF0dHJpYnV0ZSwgcmVzcGVjdGl2ZWx5KSwgaWYgYW55IGFyZSBzcGVjaWZpZWQuIElmIHVuc3BlY2lmaWVkLCBvciBpZiBncmVhdGVyIHRoYW4gdGhlIG1heGltdW0gdmFsdWUsIHRoZSBgaGlnaGAgdmFsdWUgaXMgZXF1YWwgdG8gdGhlIG1heGltdW0gdmFsdWUuIn19LHtuYW1lOiJvcHRpbXVtIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGlzIGF0dHJpYnV0ZSBpbmRpY2F0ZXMgdGhlIG9wdGltYWwgbnVtZXJpYyB2YWx1ZS4gSXQgbXVzdCBiZSB3aXRoaW4gdGhlIHJhbmdlIChhcyBkZWZpbmVkIGJ5IHRoZSBgbWluYCBhdHRyaWJ1dGUgYW5kIGBtYXhgIGF0dHJpYnV0ZSkuIFdoZW4gdXNlZCB3aXRoIHRoZSBgbG93YCBhdHRyaWJ1dGUgYW5kIGBoaWdoYCBhdHRyaWJ1dGUsIGl0IGdpdmVzIGFuIGluZGljYXRpb24gd2hlcmUgYWxvbmcgdGhlIHJhbmdlIGlzIGNvbnNpZGVyZWQgcHJlZmVyYWJsZS4gRm9yIGV4YW1wbGUsIGlmIGl0IGlzIGJldHdlZW4gdGhlIGBtaW5gIGF0dHJpYnV0ZSBhbmQgdGhlIGBsb3dgIGF0dHJpYnV0ZSwgdGhlbiB0aGUgbG93ZXIgcmFuZ2UgaXMgY29uc2lkZXJlZCBwcmVmZXJyZWQuIn19LHtuYW1lOiJmb3JtIixkZXNjcmlwdGlvbjoiVGhpcyBhdHRyaWJ1dGUgYXNzb2NpYXRlcyB0aGUgZWxlbWVudCB3aXRoIGEgYGZvcm1gIGVsZW1lbnQgdGhhdCBoYXMgb3duZXJzaGlwIG9mIHRoZSBgbWV0ZXJgIGVsZW1lbnQuIEZvciBleGFtcGxlLCBhIGBtZXRlcmAgbWlnaHQgYmUgZGlzcGxheWluZyBhIHJhbmdlIGNvcnJlc3BvbmRpbmcgdG8gYW4gYGlucHV0YCBlbGVtZW50IG9mIGB0eXBlYCBfbnVtYmVyXy4gVGhpcyBhdHRyaWJ1dGUgaXMgb25seSB1c2VkIGlmIHRoZSBgbWV0ZXJgIGVsZW1lbnQgaXMgYmVpbmcgdXNlZCBhcyBhIGZvcm0tYXNzb2NpYXRlZCBlbGVtZW50OyBldmVuIHRoZW4sIGl0IG1heSBiZSBvbWl0dGVkIGlmIHRoZSBlbGVtZW50IGFwcGVhcnMgYXMgYSBkZXNjZW5kYW50IG9mIGEgYGZvcm1gIGVsZW1lbnQuIn1dLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9tZXRlciJ9XX0se25hbWU6ImZpZWxkc2V0IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgZmllbGRzZXQgZWxlbWVudCByZXByZXNlbnRzIGEgc2V0IG9mIGZvcm0gY29udHJvbHMgb3B0aW9uYWxseSBncm91cGVkIHVuZGVyIGEgY29tbW9uIG5hbWUuIn0sYXR0cmlidXRlczpbe25hbWU6ImRpc2FibGVkIix2YWx1ZVNldDoidiIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiSWYgdGhpcyBCb29sZWFuIGF0dHJpYnV0ZSBpcyBzZXQsIGFsbCBmb3JtIGNvbnRyb2xzIHRoYXQgYXJlIGRlc2NlbmRhbnRzIG9mIHRoZSBgPGZpZWxkc2V0PmAsIGFyZSBkaXNhYmxlZCwgbWVhbmluZyB0aGV5IGFyZSBub3QgZWRpdGFibGUgYW5kIHdvbid0IGJlIHN1Ym1pdHRlZCBhbG9uZyB3aXRoIHRoZSBgPGZvcm0+YC4gVGhleSB3b24ndCByZWNlaXZlIGFueSBicm93c2luZyBldmVudHMsIGxpa2UgbW91c2UgY2xpY2tzIG9yIGZvY3VzLXJlbGF0ZWQgZXZlbnRzLiBCeSBkZWZhdWx0IGJyb3dzZXJzIGRpc3BsYXkgc3VjaCBjb250cm9scyBncmF5ZWQgb3V0LiBOb3RlIHRoYXQgZm9ybSBlbGVtZW50cyBpbnNpZGUgdGhlIFtgPGxlZ2VuZD5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvbGVnZW5kIFwiVGhlIEhUTUwgPGxlZ2VuZD4gZWxlbWVudCByZXByZXNlbnRzIGEgY2FwdGlvbiBmb3IgdGhlIGNvbnRlbnQgb2YgaXRzIHBhcmVudCA8ZmllbGRzZXQ+LlwiKSBlbGVtZW50IHdvbid0IGJlIGRpc2FibGVkLiJ9fSx7bmFtZToiZm9ybSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTonVGhpcyBhdHRyaWJ1dGUgdGFrZXMgdGhlIHZhbHVlIG9mIHRoZSBgaWRgIGF0dHJpYnV0ZSBvZiBhIFtgPGZvcm0+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2Zvcm0gIlRoZSBIVE1MIDxmb3JtPiBlbGVtZW50IHJlcHJlc2VudHMgYSBkb2N1bWVudCBzZWN0aW9uIHRoYXQgY29udGFpbnMgaW50ZXJhY3RpdmUgY29udHJvbHMgZm9yIHN1Ym1pdHRpbmcgaW5mb3JtYXRpb24gdG8gYSB3ZWIgc2VydmVyLiIpIGVsZW1lbnQgeW91IHdhbnQgdGhlIGA8ZmllbGRzZXQ+YCB0byBiZSBwYXJ0IG9mLCBldmVuIGlmIGl0IGlzIG5vdCBpbnNpZGUgdGhlIGZvcm0uJ319LHtuYW1lOiJuYW1lIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOidUaGUgbmFtZSBhc3NvY2lhdGVkIHdpdGggdGhlIGdyb3VwLlxuXG4qKk5vdGUqKjogVGhlIGNhcHRpb24gZm9yIHRoZSBmaWVsZHNldCBpcyBnaXZlbiBieSB0aGUgZmlyc3QgW2A8bGVnZW5kPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9sZWdlbmQgIlRoZSBIVE1MIDxsZWdlbmQ+IGVsZW1lbnQgcmVwcmVzZW50cyBhIGNhcHRpb24gZm9yIHRoZSBjb250ZW50IG9mIGl0cyBwYXJlbnQgPGZpZWxkc2V0Pi4iKSBlbGVtZW50IG5lc3RlZCBpbnNpZGUgaXQuJ319XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvZmllbGRzZXQifV19LHtuYW1lOiJsZWdlbmQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBsZWdlbmQgZWxlbWVudCByZXByZXNlbnRzIGEgY2FwdGlvbiBmb3IgdGhlIHJlc3Qgb2YgdGhlIGNvbnRlbnRzIG9mIHRoZSBsZWdlbmQgZWxlbWVudCdzIHBhcmVudCBmaWVsZHNldCBlbGVtZW50LCBpZiBhbnkuIn0sYXR0cmlidXRlczpbXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvbGVnZW5kIn1dfSx7bmFtZToiZGV0YWlscyIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGRldGFpbHMgZWxlbWVudCByZXByZXNlbnRzIGEgZGlzY2xvc3VyZSB3aWRnZXQgZnJvbSB3aGljaCB0aGUgdXNlciBjYW4gb2J0YWluIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gb3IgY29udHJvbHMuIn0sYXR0cmlidXRlczpbe25hbWU6Im9wZW4iLHZhbHVlU2V0OiJ2IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGlzIEJvb2xlYW4gYXR0cmlidXRlIGluZGljYXRlcyB3aGV0aGVyIG9yIG5vdCB0aGUgZGV0YWlscyDigJQgdGhhdCBpcywgdGhlIGNvbnRlbnRzIG9mIHRoZSBgPGRldGFpbHM+YCBlbGVtZW50IOKAlCBhcmUgY3VycmVudGx5IHZpc2libGUuIFRoZSBkZWZhdWx0LCBgZmFsc2VgLCBtZWFucyB0aGUgZGV0YWlscyBhcmUgbm90IHZpc2libGUuIn19XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvZGV0YWlscyJ9XX0se25hbWU6InN1bW1hcnkiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBzdW1tYXJ5IGVsZW1lbnQgcmVwcmVzZW50cyBhIHN1bW1hcnksIGNhcHRpb24sIG9yIGxlZ2VuZCBmb3IgdGhlIHJlc3Qgb2YgdGhlIGNvbnRlbnRzIG9mIHRoZSBzdW1tYXJ5IGVsZW1lbnQncyBwYXJlbnQgZGV0YWlscyBlbGVtZW50LCBpZiBhbnkuIn0sYXR0cmlidXRlczpbXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvc3VtbWFyeSJ9XX0se25hbWU6ImRpYWxvZyIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGRpYWxvZyBlbGVtZW50IHJlcHJlc2VudHMgYSBwYXJ0IG9mIGFuIGFwcGxpY2F0aW9uIHRoYXQgYSB1c2VyIGludGVyYWN0cyB3aXRoIHRvIHBlcmZvcm0gYSB0YXNrLCBmb3IgZXhhbXBsZSBhIGRpYWxvZyBib3gsIGluc3BlY3Rvciwgb3Igd2luZG93LiJ9LGF0dHJpYnV0ZXM6W3tuYW1lOiJvcGVuIixkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIHRoYXQgdGhlIGRpYWxvZyBpcyBhY3RpdmUgYW5kIGF2YWlsYWJsZSBmb3IgaW50ZXJhY3Rpb24uIFdoZW4gdGhlIGBvcGVuYCBhdHRyaWJ1dGUgaXMgbm90IHNldCwgdGhlIGRpYWxvZyBzaG91bGRuJ3QgYmUgc2hvd24gdG8gdGhlIHVzZXIuIn1dLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9kaWFsb2cifV19LHtuYW1lOiJzY3JpcHQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBzY3JpcHQgZWxlbWVudCBhbGxvd3MgYXV0aG9ycyB0byBpbmNsdWRlIGR5bmFtaWMgc2NyaXB0IGFuZCBkYXRhIGJsb2NrcyBpbiB0aGVpciBkb2N1bWVudHMuIFRoZSBlbGVtZW50IGRvZXMgbm90IHJlcHJlc2VudCBjb250ZW50IGZvciB0aGUgdXNlci4ifSxhdHRyaWJ1dGVzOlt7bmFtZToic3JjIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGlzIGF0dHJpYnV0ZSBzcGVjaWZpZXMgdGhlIFVSSSBvZiBhbiBleHRlcm5hbCBzY3JpcHQ7IHRoaXMgY2FuIGJlIHVzZWQgYXMgYW4gYWx0ZXJuYXRpdmUgdG8gZW1iZWRkaW5nIGEgc2NyaXB0IGRpcmVjdGx5IHdpdGhpbiBhIGRvY3VtZW50LlxuXG5JZiBhIGBzY3JpcHRgIGVsZW1lbnQgaGFzIGEgYHNyY2AgYXR0cmlidXRlIHNwZWNpZmllZCwgaXQgc2hvdWxkIG5vdCBoYXZlIGEgc2NyaXB0IGVtYmVkZGVkIGluc2lkZSBpdHMgdGFncy4ifX0se25hbWU6InR5cGUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6J1RoaXMgYXR0cmlidXRlIGluZGljYXRlcyB0aGUgdHlwZSBvZiBzY3JpcHQgcmVwcmVzZW50ZWQuIFRoZSB2YWx1ZSBvZiB0aGlzIGF0dHJpYnV0ZSB3aWxsIGJlIGluIG9uZSBvZiB0aGUgZm9sbG93aW5nIGNhdGVnb3JpZXM6XG5cbiogICAqKk9taXR0ZWQgb3IgYSBKYXZhU2NyaXB0IE1JTUUgdHlwZToqKiBGb3IgSFRNTDUtY29tcGxpYW50IGJyb3dzZXJzIHRoaXMgaW5kaWNhdGVzIHRoZSBzY3JpcHQgaXMgSmF2YVNjcmlwdC4gSFRNTDUgc3BlY2lmaWNhdGlvbiB1cmdlcyBhdXRob3JzIHRvIG9taXQgdGhlIGF0dHJpYnV0ZSByYXRoZXIgdGhhbiBwcm92aWRlIGEgcmVkdW5kYW50IE1JTUUgdHlwZS4gSW4gZWFybGllciBicm93c2VycywgdGhpcyBpZGVudGlmaWVkIHRoZSBzY3JpcHRpbmcgbGFuZ3VhZ2Ugb2YgdGhlIGVtYmVkZGVkIG9yIGltcG9ydGVkICh2aWEgdGhlIGBzcmNgIGF0dHJpYnV0ZSkgY29kZS4gSmF2YVNjcmlwdCBNSU1FIHR5cGVzIGFyZSBbbGlzdGVkIGluIHRoZSBzcGVjaWZpY2F0aW9uXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVFRQL0Jhc2ljc19vZl9IVFRQL01JTUVfdHlwZXMjSmF2YVNjcmlwdF90eXBlcykuXG4qICAgKipgbW9kdWxlYDoqKiBGb3IgSFRNTDUtY29tcGxpYW50IGJyb3dzZXJzIHRoZSBjb2RlIGlzIHRyZWF0ZWQgYXMgYSBKYXZhU2NyaXB0IG1vZHVsZS4gVGhlIHByb2Nlc3Npbmcgb2YgdGhlIHNjcmlwdCBjb250ZW50cyBpcyBub3QgYWZmZWN0ZWQgYnkgdGhlIGBjaGFyc2V0YCBhbmQgYGRlZmVyYCBhdHRyaWJ1dGVzLiBGb3IgaW5mb3JtYXRpb24gb24gdXNpbmcgYG1vZHVsZWAsIHNlZSBbRVM2IGluIERlcHRoOiBNb2R1bGVzXShodHRwczovL2hhY2tzLm1vemlsbGEub3JnLzIwMTUvMDgvZXM2LWluLWRlcHRoLW1vZHVsZXMvKS4gQ29kZSBtYXkgYmVoYXZlIGRpZmZlcmVudGx5IHdoZW4gdGhlIGBtb2R1bGVgIGtleXdvcmQgaXMgdXNlZC5cbiogICAqKkFueSBvdGhlciB2YWx1ZToqKiBUaGUgZW1iZWRkZWQgY29udGVudCBpcyB0cmVhdGVkIGFzIGEgZGF0YSBibG9jayB3aGljaCB3b25cJ3QgYmUgcHJvY2Vzc2VkIGJ5IHRoZSBicm93c2VyLiBEZXZlbG9wZXJzIG11c3QgdXNlIGEgdmFsaWQgTUlNRSB0eXBlIHRoYXQgaXMgbm90IGEgSmF2YVNjcmlwdCBNSU1FIHR5cGUgdG8gZGVub3RlIGRhdGEgYmxvY2tzLiBUaGUgYHNyY2AgYXR0cmlidXRlIHdpbGwgYmUgaWdub3JlZC5cblxuKipOb3RlOioqIGluIEZpcmVmb3ggeW91IGNvdWxkIHNwZWNpZnkgdGhlIHZlcnNpb24gb2YgSmF2YVNjcmlwdCBjb250YWluZWQgaW4gYSBgPHNjcmlwdD5gIGVsZW1lbnQgYnkgaW5jbHVkaW5nIGEgbm9uLXN0YW5kYXJkIGB2ZXJzaW9uYCBwYXJhbWV0ZXIgaW5zaWRlIHRoZSBgdHlwZWAgYXR0cmlidXRlIOKAlCBmb3IgZXhhbXBsZSBgdHlwZT0idGV4dC9qYXZhc2NyaXB0O3ZlcnNpb249MS44ImAuIFRoaXMgaGFzIGJlZW4gcmVtb3ZlZCBpbiBGaXJlZm94IDU5IChzZWUgW2J1Z8KgMTQyODc0NV0oaHR0cHM6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQyODc0NSAiRklYRUQ6IFJlbW92ZSBzdXBwb3J0IGZvciB2ZXJzaW9uIHBhcmFtZXRlciBmcm9tIHNjcmlwdCBsb2FkZXIiKSkuJ319LHtuYW1lOiJjaGFyc2V0In0se25hbWU6ImFzeW5jIix2YWx1ZVNldDoidiIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTonVGhpcyBpcyBhIEJvb2xlYW4gYXR0cmlidXRlIGluZGljYXRpbmcgdGhhdCB0aGUgYnJvd3NlciBzaG91bGQsIGlmIHBvc3NpYmxlLCBsb2FkIHRoZSBzY3JpcHQgYXN5bmNocm9ub3VzbHkuXG5cblRoaXMgYXR0cmlidXRlIG11c3Qgbm90IGJlIHVzZWQgaWYgdGhlIGBzcmNgIGF0dHJpYnV0ZSBpcyBhYnNlbnQgKGkuZS4gZm9yIGlubGluZSBzY3JpcHRzKS4gSWYgaXQgaXMgaW5jbHVkZWQgaW4gdGhpcyBjYXNlIGl0IHdpbGwgaGF2ZSBubyBlZmZlY3QuXG5cbkJyb3dzZXJzIHVzdWFsbHkgYXNzdW1lIHRoZSB3b3JzdCBjYXNlIHNjZW5hcmlvIGFuZCBsb2FkIHNjcmlwdHMgc3luY2hyb25vdXNseSwgKGkuZS4gYGFzeW5jPSJmYWxzZSJgKSBkdXJpbmcgSFRNTCBwYXJzaW5nLlxuXG5EeW5hbWljYWxseSBpbnNlcnRlZCBzY3JpcHRzICh1c2luZyBbYGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoKWBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9Eb2N1bWVudC9jcmVhdGVFbGVtZW50ICJJbiBhbiBIVE1MIGRvY3VtZW50LCB0aGUgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgpIG1ldGhvZCBjcmVhdGVzIHRoZSBIVE1MIGVsZW1lbnQgc3BlY2lmaWVkIGJ5IHRhZ05hbWUsIG9yIGFuIEhUTUxVbmtub3duRWxlbWVudCBpZiB0YWdOYW1lIGlzblwndCByZWNvZ25pemVkLiIpKSBsb2FkIGFzeW5jaHJvbm91c2x5IGJ5IGRlZmF1bHQsIHNvIHRvIHR1cm4gb24gc3luY2hyb25vdXMgbG9hZGluZyAoaS5lLiBzY3JpcHRzIGxvYWQgaW4gdGhlIG9yZGVyIHRoZXkgd2VyZSBpbnNlcnRlZCkgc2V0IGBhc3luYz0iZmFsc2UiYC5cblxuU2VlIFtCcm93c2VyIGNvbXBhdGliaWxpdHldKCNCcm93c2VyX2NvbXBhdGliaWxpdHkpIGZvciBub3RlcyBvbiBicm93c2VyIHN1cHBvcnQuIFNlZSBhbHNvIFtBc3luYyBzY3JpcHRzIGZvciBhc20uanNdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvR2FtZXMvVGVjaG5pcXVlcy9Bc3luY19zY3JpcHRzKS4nfX0se25hbWU6ImRlZmVyIix2YWx1ZVNldDoidiIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTonVGhpcyBCb29sZWFuIGF0dHJpYnV0ZSBpcyBzZXQgdG8gaW5kaWNhdGUgdG8gYSBicm93c2VyIHRoYXQgdGhlIHNjcmlwdCBpcyBtZWFudCB0byBiZSBleGVjdXRlZCBhZnRlciB0aGUgZG9jdW1lbnQgaGFzIGJlZW4gcGFyc2VkLCBidXQgYmVmb3JlIGZpcmluZyBbYERPTUNvbnRlbnRMb2FkZWRgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9FdmVudHMvRE9NQ29udGVudExvYWRlZCAiL2VuLVVTL2RvY3MvV2ViL0V2ZW50cy9ET01Db250ZW50TG9hZGVkIikuXG5cblNjcmlwdHMgd2l0aCB0aGUgYGRlZmVyYCBhdHRyaWJ1dGUgd2lsbCBwcmV2ZW50IHRoZSBgRE9NQ29udGVudExvYWRlZGAgZXZlbnQgZnJvbSBmaXJpbmcgdW50aWwgdGhlIHNjcmlwdCBoYXMgbG9hZGVkIGFuZCBmaW5pc2hlZCBldmFsdWF0aW5nLlxuXG5UaGlzIGF0dHJpYnV0ZSBtdXN0IG5vdCBiZSB1c2VkIGlmIHRoZSBgc3JjYCBhdHRyaWJ1dGUgaXMgYWJzZW50IChpLmUuIGZvciBpbmxpbmUgc2NyaXB0cyksIGluIHRoaXMgY2FzZSBpdCB3b3VsZCBoYXZlIG5vIGVmZmVjdC5cblxuVG8gYWNoaWV2ZSBhIHNpbWlsYXIgZWZmZWN0IGZvciBkeW5hbWljYWxseSBpbnNlcnRlZCBzY3JpcHRzIHVzZSBgYXN5bmM9ImZhbHNlImAgaW5zdGVhZC4gU2NyaXB0cyB3aXRoIHRoZSBgZGVmZXJgIGF0dHJpYnV0ZSB3aWxsIGV4ZWN1dGUgaW4gdGhlIG9yZGVyIGluIHdoaWNoIHRoZXkgYXBwZWFyIGluIHRoZSBkb2N1bWVudC4nfX0se25hbWU6ImNyb3Nzb3JpZ2luIix2YWx1ZVNldDoieG8iLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6J05vcm1hbCBgc2NyaXB0YCBlbGVtZW50cyBwYXNzIG1pbmltYWwgaW5mb3JtYXRpb24gdG8gdGhlIFtgd2luZG93Lm9uZXJyb3JgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvR2xvYmFsRXZlbnRIYW5kbGVycy9vbmVycm9yICJUaGUgb25lcnJvciBwcm9wZXJ0eSBvZiB0aGUgR2xvYmFsRXZlbnRIYW5kbGVycyBtaXhpbiBpcyBhbiBFdmVudEhhbmRsZXIgdGhhdCBwcm9jZXNzZXMgZXJyb3IgZXZlbnRzLiIpIGZvciBzY3JpcHRzIHdoaWNoIGRvIG5vdCBwYXNzIHRoZSBzdGFuZGFyZCBbQ09SU10oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9HbG9zc2FyeS9DT1JTICJDT1JTOiBDT1JTIChDcm9zcy1PcmlnaW4gUmVzb3VyY2UgU2hhcmluZykgaXMgYSBzeXN0ZW0sIGNvbnNpc3Rpbmcgb2YgdHJhbnNtaXR0aW5nIEhUVFAgaGVhZGVycywgdGhhdCBkZXRlcm1pbmVzIHdoZXRoZXIgYnJvd3NlcnMgYmxvY2sgZnJvbnRlbmQgSmF2YVNjcmlwdCBjb2RlIGZyb20gYWNjZXNzaW5nIHJlc3BvbnNlcyBmb3IgY3Jvc3Mtb3JpZ2luIHJlcXVlc3RzLiIpIGNoZWNrcy4gVG8gYWxsb3cgZXJyb3IgbG9nZ2luZyBmb3Igc2l0ZXMgd2hpY2ggdXNlIGEgc2VwYXJhdGUgZG9tYWluIGZvciBzdGF0aWMgbWVkaWEsIHVzZSB0aGlzIGF0dHJpYnV0ZS4gU2VlIFtDT1JTIHNldHRpbmdzIGF0dHJpYnV0ZXNdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvQ09SU19zZXR0aW5nc19hdHRyaWJ1dGVzKSBmb3IgYSBtb3JlIGRlc2NyaXB0aXZlIGV4cGxhbmF0aW9uIG9mIGl0cyB2YWxpZCBhcmd1bWVudHMuJ319LHtuYW1lOiJub25jZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiQSBjcnlwdG9ncmFwaGljIG5vbmNlIChudW1iZXIgdXNlZCBvbmNlKSB0byB3aGl0ZWxpc3QgaW5saW5lIHNjcmlwdHMgaW4gYSBbc2NyaXB0LXNyYyBDb250ZW50LVNlY3VyaXR5LVBvbGljeV0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRUUC9IZWFkZXJzL0NvbnRlbnQtU2VjdXJpdHktUG9saWN5L3NjcmlwdC1zcmMpLiBUaGUgc2VydmVyIG11c3QgZ2VuZXJhdGUgYSB1bmlxdWUgbm9uY2UgdmFsdWUgZWFjaCB0aW1lIGl0IHRyYW5zbWl0cyBhIHBvbGljeS4gSXQgaXMgY3JpdGljYWwgdG8gcHJvdmlkZSBhIG5vbmNlIHRoYXQgY2Fubm90IGJlIGd1ZXNzZWQgYXMgYnlwYXNzaW5nIGEgcmVzb3VyY2UncyBwb2xpY3kgaXMgb3RoZXJ3aXNlIHRyaXZpYWwuIn19LHtuYW1lOiJpbnRlZ3JpdHkiLGRlc2NyaXB0aW9uOiJUaGlzIGF0dHJpYnV0ZSBjb250YWlucyBpbmxpbmUgbWV0YWRhdGEgdGhhdCBhIHVzZXIgYWdlbnQgY2FuIHVzZSB0byB2ZXJpZnkgdGhhdCBhIGZldGNoZWQgcmVzb3VyY2UgaGFzIGJlZW4gZGVsaXZlcmVkIGZyZWUgb2YgdW5leHBlY3RlZCBtYW5pcHVsYXRpb24uIFNlZSBbU3VicmVzb3VyY2UgSW50ZWdyaXR5XShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9TZWN1cml0eS9TdWJyZXNvdXJjZV9JbnRlZ3JpdHkpLiJ9LHtuYW1lOiJub21vZHVsZSIsZGVzY3JpcHRpb246IlRoaXMgQm9vbGVhbiBhdHRyaWJ1dGUgaXMgc2V0IHRvIGluZGljYXRlIHRoYXQgdGhlIHNjcmlwdCBzaG91bGQgbm90IGJlIGV4ZWN1dGVkIGluIGJyb3dzZXJzIHRoYXQgc3VwcG9ydCBbRVMyMDE1IG1vZHVsZXNdKGh0dHBzOi8vaGFja3MubW96aWxsYS5vcmcvMjAxNS8wOC9lczYtaW4tZGVwdGgtbW9kdWxlcy8pIOKAlCBpbiBlZmZlY3QsIHRoaXMgY2FuIGJlIHVzZWQgdG8gc2VydmUgZmFsbGJhY2sgc2NyaXB0cyB0byBvbGRlciBicm93c2VycyB0aGF0IGRvIG5vdCBzdXBwb3J0IG1vZHVsYXIgSmF2YVNjcmlwdCBjb2RlLiJ9LHtuYW1lOiJyZWZlcnJlcnBvbGljeSIsZGVzY3JpcHRpb246J0luZGljYXRlcyB3aGljaCBbcmVmZXJyZXJdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9Eb2N1bWVudC9yZWZlcnJlcikgdG8gc2VuZCB3aGVuIGZldGNoaW5nIHRoZSBzY3JpcHQsIG9yIHJlc291cmNlcyBmZXRjaGVkIGJ5IHRoZSBzY3JpcHQ6XG5cbiogICBgbm8tcmVmZXJyZXJgOiBUaGUgW2BSZWZlcmVyYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRUUC9IZWFkZXJzL1JlZmVyZXIgIlRoZSBSZWZlcmVyIHJlcXVlc3QgaGVhZGVyIGNvbnRhaW5zIHRoZSBhZGRyZXNzIG9mIHRoZSBwcmV2aW91cyB3ZWIgcGFnZSBmcm9tIHdoaWNoIGEgbGluayB0byB0aGUgY3VycmVudGx5IHJlcXVlc3RlZCBwYWdlIHdhcyBmb2xsb3dlZC4gVGhlIFJlZmVyZXIgaGVhZGVyIGFsbG93cyBzZXJ2ZXJzIHRvIGlkZW50aWZ5IHdoZXJlIHBlb3BsZSBhcmUgdmlzaXRpbmcgdGhlbSBmcm9tIGFuZCBtYXkgdXNlIHRoYXQgZGF0YSBmb3IgYW5hbHl0aWNzLCBsb2dnaW5nLCBvciBvcHRpbWl6ZWQgY2FjaGluZywgZm9yIGV4YW1wbGUuIikgaGVhZGVyIHdpbGwgbm90IGJlIHNlbnQuXG4qICAgYG5vLXJlZmVycmVyLXdoZW4tZG93bmdyYWRlYCAoZGVmYXVsdCk6IFRoZSBbYFJlZmVyZXJgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVFRQL0hlYWRlcnMvUmVmZXJlciAiVGhlIFJlZmVyZXIgcmVxdWVzdCBoZWFkZXIgY29udGFpbnMgdGhlIGFkZHJlc3Mgb2YgdGhlIHByZXZpb3VzIHdlYiBwYWdlIGZyb20gd2hpY2ggYSBsaW5rIHRvIHRoZSBjdXJyZW50bHkgcmVxdWVzdGVkIHBhZ2Ugd2FzIGZvbGxvd2VkLiBUaGUgUmVmZXJlciBoZWFkZXIgYWxsb3dzIHNlcnZlcnMgdG8gaWRlbnRpZnkgd2hlcmUgcGVvcGxlIGFyZSB2aXNpdGluZyB0aGVtIGZyb20gYW5kIG1heSB1c2UgdGhhdCBkYXRhIGZvciBhbmFseXRpY3MsIGxvZ2dpbmcsIG9yIG9wdGltaXplZCBjYWNoaW5nLCBmb3IgZXhhbXBsZS4iKSBoZWFkZXIgd2lsbCBub3QgYmUgc2VudCB0byBbb3JpZ2luXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0dsb3NzYXJ5L29yaWdpbiAib3JpZ2luOiBXZWIgY29udGVudFwncyBvcmlnaW4gaXMgZGVmaW5lZCBieSB0aGUgc2NoZW1lIChwcm90b2NvbCksIGhvc3QgKGRvbWFpbiksIGFuZCBwb3J0IG9mIHRoZSBVUkwgdXNlZCB0byBhY2Nlc3MgaXQuIFR3byBvYmplY3RzIGhhdmUgdGhlIHNhbWUgb3JpZ2luIG9ubHkgd2hlbiB0aGUgc2NoZW1lLCBob3N0LCBhbmQgcG9ydCBhbGwgbWF0Y2guIilzIHdpdGhvdXQgW1RMU10oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9HbG9zc2FyeS9UTFMgIlRMUzogVHJhbnNwb3J0IExheWVyIFNlY3VyaXR5IChUTFMpLCBwcmV2aW91c2x5IGtub3duIGFzIFNlY3VyZSBTb2NrZXRzIExheWVyIChTU0wpLCBpcyBhIHByb3RvY29sIHVzZWQgYnkgYXBwbGljYXRpb25zIHRvIGNvbW11bmljYXRlIHNlY3VyZWx5IGFjcm9zcyBhIG5ldHdvcmssIHByZXZlbnRpbmcgdGFtcGVyaW5nIHdpdGggYW5kIGVhdmVzZHJvcHBpbmcgb24gZW1haWwsIHdlYiBicm93c2luZywgbWVzc2FnaW5nLCBhbmQgb3RoZXIgcHJvdG9jb2xzLiIpIChbSFRUUFNdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvR2xvc3NhcnkvSFRUUFMgIkhUVFBTOiBIVFRQUyAoSFRUUCBTZWN1cmUpIGlzIGFuIGVuY3J5cHRlZCB2ZXJzaW9uIG9mIHRoZSBIVFRQIHByb3RvY29sLiBJdCB1c3VhbGx5IHVzZXMgU1NMIG9yIFRMUyB0byBlbmNyeXB0IGFsbCBjb21tdW5pY2F0aW9uIGJldHdlZW4gYSBjbGllbnQgYW5kIGEgc2VydmVyLiBUaGlzIHNlY3VyZSBjb25uZWN0aW9uIGFsbG93cyBjbGllbnRzIHRvIHNhZmVseSBleGNoYW5nZSBzZW5zaXRpdmUgZGF0YSB3aXRoIGEgc2VydmVyLCBmb3IgZXhhbXBsZSBmb3IgYmFua2luZyBhY3Rpdml0aWVzIG9yIG9ubGluZSBzaG9wcGluZy4iKSkuXG4qICAgYG9yaWdpbmA6IFRoZSBzZW50IHJlZmVycmVyIHdpbGwgYmUgbGltaXRlZCB0byB0aGUgb3JpZ2luIG9mIHRoZSByZWZlcnJpbmcgcGFnZTogaXRzIFtzY2hlbWVdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvQXJjaGl2ZS9Nb3ppbGxhL1VSSVNjaGVtZSksIFtob3N0XShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0dsb3NzYXJ5L2hvc3QgImhvc3Q6IEEgaG9zdCBpcyBhIGRldmljZSBjb25uZWN0ZWQgdG8gdGhlIEludGVybmV0IChvciBhIGxvY2FsIG5ldHdvcmspLiBTb21lIGhvc3RzIGNhbGxlZCBzZXJ2ZXJzIG9mZmVyIGFkZGl0aW9uYWwgc2VydmljZXMgbGlrZSBzZXJ2aW5nIHdlYnBhZ2VzIG9yIHN0b3JpbmcgZmlsZXMgYW5kIGVtYWlscy4iKSwgYW5kIFtwb3J0XShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0dsb3NzYXJ5L3BvcnQgInBvcnQ6IEZvciBhIGNvbXB1dGVyIGNvbm5lY3RlZCB0byBhIG5ldHdvcmsgd2l0aCBhbiBJUCBhZGRyZXNzLCBhIHBvcnQgaXMgYSBjb21tdW5pY2F0aW9uIGVuZHBvaW50LiBQb3J0cyBhcmUgZGVzaWduYXRlZCBieSBudW1iZXJzLCBhbmQgYmVsb3cgMTAyNCBlYWNoIHBvcnQgaXMgYXNzb2NpYXRlZCBieSBkZWZhdWx0IHdpdGggYSBzcGVjaWZpYyBwcm90b2NvbC4iKS5cbiogICBgb3JpZ2luLXdoZW4tY3Jvc3Mtb3JpZ2luYDogVGhlIHJlZmVycmVyIHNlbnQgdG8gb3RoZXIgb3JpZ2lucyB3aWxsIGJlIGxpbWl0ZWQgdG8gdGhlIHNjaGVtZSwgdGhlIGhvc3QsIGFuZCB0aGUgcG9ydC4gTmF2aWdhdGlvbnMgb24gdGhlIHNhbWUgb3JpZ2luIHdpbGwgc3RpbGwgaW5jbHVkZSB0aGUgcGF0aC5cbiogICBgc2FtZS1vcmlnaW5gOiBBIHJlZmVycmVyIHdpbGwgYmUgc2VudCBmb3IgW3NhbWUgb3JpZ2luXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0dsb3NzYXJ5L1NhbWUtb3JpZ2luX3BvbGljeSAic2FtZSBvcmlnaW46IFRoZSBzYW1lLW9yaWdpbiBwb2xpY3kgaXMgYSBjcml0aWNhbCBzZWN1cml0eSBtZWNoYW5pc20gdGhhdCByZXN0cmljdHMgaG93IGEgZG9jdW1lbnQgb3Igc2NyaXB0IGxvYWRlZCBmcm9tIG9uZSBvcmlnaW4gY2FuIGludGVyYWN0IHdpdGggYSByZXNvdXJjZSBmcm9tIGFub3RoZXIgb3JpZ2luLiIpLCBidXQgY3Jvc3Mtb3JpZ2luIHJlcXVlc3RzIHdpbGwgY29udGFpbiBubyByZWZlcnJlciBpbmZvcm1hdGlvbi5cbiogICBgc3RyaWN0LW9yaWdpbmA6IE9ubHkgc2VuZCB0aGUgb3JpZ2luIG9mIHRoZSBkb2N1bWVudCBhcyB0aGUgcmVmZXJyZXIgd2hlbiB0aGUgcHJvdG9jb2wgc2VjdXJpdHkgbGV2ZWwgc3RheXMgdGhlIHNhbWUgKGUuZy4gSFRUUFPihpJIVFRQUyksIGJ1dCBkb25cJ3Qgc2VuZCBpdCB0byBhIGxlc3Mgc2VjdXJlIGRlc3RpbmF0aW9uIChlLmcuIEhUVFBT4oaSSFRUUCkuXG4qICAgYHN0cmljdC1vcmlnaW4td2hlbi1jcm9zcy1vcmlnaW5gOiBTZW5kIGEgZnVsbCBVUkwgd2hlbiBwZXJmb3JtaW5nIGEgc2FtZS1vcmlnaW4gcmVxdWVzdCwgYnV0IG9ubHkgc2VuZCB0aGUgb3JpZ2luIHdoZW4gdGhlIHByb3RvY29sIHNlY3VyaXR5IGxldmVsIHN0YXlzIHRoZSBzYW1lIChlLmcuSFRUUFPihpJIVFRQUyksIGFuZCBzZW5kIG5vIGhlYWRlciB0byBhIGxlc3Mgc2VjdXJlIGRlc3RpbmF0aW9uIChlLmcuIEhUVFBT4oaSSFRUUCkuXG4qICAgYHVuc2FmZS11cmxgOiBUaGUgcmVmZXJyZXIgd2lsbCBpbmNsdWRlIHRoZSBvcmlnaW4gX2FuZF8gdGhlIHBhdGggKGJ1dCBub3QgdGhlIFtmcmFnbWVudF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL0hUTUxIeXBlcmxpbmtFbGVtZW50VXRpbHMvaGFzaCksIFtwYXNzd29yZF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL0hUTUxIeXBlcmxpbmtFbGVtZW50VXRpbHMvcGFzc3dvcmQpLCBvciBbdXNlcm5hbWVdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9IVE1MSHlwZXJsaW5rRWxlbWVudFV0aWxzL3VzZXJuYW1lKSkuICoqVGhpcyB2YWx1ZSBpcyB1bnNhZmUqKiwgYmVjYXVzZSBpdCBsZWFrcyBvcmlnaW5zIGFuZCBwYXRocyBmcm9tIFRMUy1wcm90ZWN0ZWQgcmVzb3VyY2VzIHRvIGluc2VjdXJlIG9yaWdpbnMuXG5cbioqTm90ZSoqOiBBbiBlbXB0eSBzdHJpbmcgdmFsdWUgKGAiImApIGlzIGJvdGggdGhlIGRlZmF1bHQgdmFsdWUsIGFuZCBhIGZhbGxiYWNrIHZhbHVlIGlmIGByZWZlcnJlcnBvbGljeWAgaXMgbm90IHN1cHBvcnRlZC4gSWYgYHJlZmVycmVycG9saWN5YCBpcyBub3QgZXhwbGljaXRseSBzcGVjaWZpZWQgb24gdGhlIGA8c2NyaXB0PmAgZWxlbWVudCwgaXQgd2lsbCBhZG9wdCBhIGhpZ2hlci1sZXZlbCByZWZlcnJlciBwb2xpY3ksIGkuZS4gb25lIHNldCBvbiB0aGUgd2hvbGUgZG9jdW1lbnQgb3IgZG9tYWluLiBJZiBhIGhpZ2hlci1sZXZlbCBwb2xpY3kgaXMgbm90IGF2YWlsYWJsZSzCoHRoZSBlbXB0eSBzdHJpbmcgaXMgdHJlYXRlZCBhcyBiZWluZyBlcXVpdmFsZW50IHRvIGBuby1yZWZlcnJlci13aGVuLWRvd25ncmFkZWAuJ30se25hbWU6InRleHQiLGRlc2NyaXB0aW9uOiJMaWtlIHRoZSBgdGV4dENvbnRlbnRgIGF0dHJpYnV0ZSwgdGhpcyBhdHRyaWJ1dGUgc2V0cyB0aGUgdGV4dCBjb250ZW50IG9mIHRoZSBlbGVtZW50LiBVbmxpa2UgdGhlIGB0ZXh0Q29udGVudGAgYXR0cmlidXRlLCBob3dldmVyLCB0aGlzIGF0dHJpYnV0ZSBpcyBldmFsdWF0ZWQgYXMgZXhlY3V0YWJsZSBjb2RlIGFmdGVyIHRoZSBub2RlIGlzIGluc2VydGVkIGludG8gdGhlIERPTS4ifV0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3NjcmlwdCJ9XX0se25hbWU6Im5vc2NyaXB0IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgbm9zY3JpcHQgZWxlbWVudCByZXByZXNlbnRzIG5vdGhpbmcgaWYgc2NyaXB0aW5nIGlzIGVuYWJsZWQsIGFuZCByZXByZXNlbnRzIGl0cyBjaGlsZHJlbiBpZiBzY3JpcHRpbmcgaXMgZGlzYWJsZWQuIEl0IGlzIHVzZWQgdG8gcHJlc2VudCBkaWZmZXJlbnQgbWFya3VwIHRvIHVzZXIgYWdlbnRzIHRoYXQgc3VwcG9ydCBzY3JpcHRpbmcgYW5kIHRob3NlIHRoYXQgZG9uJ3Qgc3VwcG9ydCBzY3JpcHRpbmcsIGJ5IGFmZmVjdGluZyBob3cgdGhlIGRvY3VtZW50IGlzIHBhcnNlZC4ifSxhdHRyaWJ1dGVzOltdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9ub3NjcmlwdCJ9XX0se25hbWU6InRlbXBsYXRlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgdGVtcGxhdGUgZWxlbWVudCBpcyB1c2VkIHRvIGRlY2xhcmUgZnJhZ21lbnRzIG9mIEhUTUwgdGhhdCBjYW4gYmUgY2xvbmVkIGFuZCBpbnNlcnRlZCBpbiB0aGUgZG9jdW1lbnQgYnkgc2NyaXB0LiJ9LGF0dHJpYnV0ZXM6W10scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3RlbXBsYXRlIn1dfSx7bmFtZToiY2FudmFzIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgY2FudmFzIGVsZW1lbnQgcHJvdmlkZXMgc2NyaXB0cyB3aXRoIGEgcmVzb2x1dGlvbi1kZXBlbmRlbnQgYml0bWFwIGNhbnZhcywgd2hpY2ggY2FuIGJlIHVzZWQgZm9yIHJlbmRlcmluZyBncmFwaHMsIGdhbWUgZ3JhcGhpY3MsIGFydCwgb3Igb3RoZXIgdmlzdWFsIGltYWdlcyBvbiB0aGUgZmx5LiJ9LGF0dHJpYnV0ZXM6W3tuYW1lOiJ3aWR0aCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHdpZHRoIG9mIHRoZSBjb29yZGluYXRlIHNwYWNlIGluIENTUyBwaXhlbHMuIERlZmF1bHRzIHRvIDMwMC4ifX0se25hbWU6ImhlaWdodCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGhlaWdodCBvZiB0aGUgY29vcmRpbmF0ZSBzcGFjZSBpbiBDU1MgcGl4ZWxzLiBEZWZhdWx0cyB0byAxNTAuIn19LHtuYW1lOiJtb3otb3BhcXVlIixkZXNjcmlwdGlvbjoiTGV0cyB0aGUgY2FudmFzIGtub3cgd2hldGhlciBvciBub3QgdHJhbnNsdWNlbmN5IHdpbGwgYmUgYSBmYWN0b3IuIElmIHRoZSBjYW52YXMga25vd3MgdGhlcmUncyBubyB0cmFuc2x1Y2VuY3ksIHBhaW50aW5nIHBlcmZvcm1hbmNlIGNhbiBiZSBvcHRpbWl6ZWQuIFRoaXMgaXMgb25seSBzdXBwb3J0ZWQgYnkgTW96aWxsYS1iYXNlZCBicm93c2VyczsgdXNlIHRoZSBzdGFuZGFyZGl6ZWQgW2BjYW52YXMuZ2V0Q29udGV4dCgnMmQnLCB7IGFscGhhOiBmYWxzZSB9KWBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9IVE1MQ2FudmFzRWxlbWVudC9nZXRDb250ZXh0IFwiVGhlIEhUTUxDYW52YXNFbGVtZW50LmdldENvbnRleHQoKSBtZXRob2QgcmV0dXJucyBhIGRyYXdpbmcgY29udGV4dCBvbiB0aGUgY2FudmFzLCBvciBudWxsIGlmIHRoZSBjb250ZXh0IGlkZW50aWZpZXIgaXMgbm90IHN1cHBvcnRlZC5cIikgaW5zdGVhZC4ifV0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2NhbnZhcyJ9XX1dLGdsb2JhbEF0dHJpYnV0ZXM6W3tuYW1lOiJhY2Nlc3NrZXkiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlByb3ZpZGVzIGEgaGludCBmb3IgZ2VuZXJhdGluZyBhIGtleWJvYXJkIHNob3J0Y3V0IGZvciB0aGUgY3VycmVudCBlbGVtZW50LiBUaGlzIGF0dHJpYnV0ZSBjb25zaXN0cyBvZiBhIHNwYWNlLXNlcGFyYXRlZCBsaXN0IG9mIGNoYXJhY3RlcnMuIFRoZSBicm93c2VyIHNob3VsZCB1c2UgdGhlIGZpcnN0IG9uZSB0aGF0IGV4aXN0cyBvbiB0aGUgY29tcHV0ZXIga2V5Ym9hcmQgbGF5b3V0LiJ9LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvR2xvYmFsX2F0dHJpYnV0ZXMvYWNjZXNza2V5In1dfSx7bmFtZToiYXV0b2NhcGl0YWxpemUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkNvbnRyb2xzIHdoZXRoZXIgYW5kIGhvdyB0ZXh0IGlucHV0IGlzIGF1dG9tYXRpY2FsbHkgY2FwaXRhbGl6ZWQgYXMgaXQgaXMgZW50ZXJlZC9lZGl0ZWQgYnkgdGhlIHVzZXIuIEl0IGNhbiBoYXZlIHRoZSBmb2xsb3dpbmcgdmFsdWVzOlxuXG4qICAgYG9mZmAgb3IgYG5vbmVgLCBubyBhdXRvY2FwaXRhbGl6YXRpb24gaXMgYXBwbGllZCAoYWxsIGxldHRlcnMgZGVmYXVsdCB0byBsb3dlcmNhc2UpXG4qICAgYG9uYCBvciBgc2VudGVuY2VzYCwgdGhlIGZpcnN0IGxldHRlciBvZiBlYWNoIHNlbnRlbmNlIGRlZmF1bHRzIHRvIGEgY2FwaXRhbCBsZXR0ZXI7IGFsbCBvdGhlciBsZXR0ZXJzIGRlZmF1bHQgdG8gbG93ZXJjYXNlXG4qICAgYHdvcmRzYCwgdGhlIGZpcnN0IGxldHRlciBvZiBlYWNoIHdvcmQgZGVmYXVsdHMgdG8gYSBjYXBpdGFsIGxldHRlcjsgYWxsIG90aGVyIGxldHRlcnMgZGVmYXVsdCB0byBsb3dlcmNhc2VcbiogICBgY2hhcmFjdGVyc2AsIGFsbCBsZXR0ZXJzIHNob3VsZCBkZWZhdWx0IHRvIHVwcGVyY2FzZSJ9LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvR2xvYmFsX2F0dHJpYnV0ZXMvYXV0b2NhcGl0YWxpemUifV19LHtuYW1lOiJjbGFzcyIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTonQSBzcGFjZS1zZXBhcmF0ZWQgbGlzdCBvZiB0aGUgY2xhc3NlcyBvZiB0aGUgZWxlbWVudC4gQ2xhc3NlcyBhbGxvd3MgQ1NTIGFuZCBKYXZhU2NyaXB0IHRvIHNlbGVjdCBhbmQgYWNjZXNzIHNwZWNpZmljIGVsZW1lbnRzIHZpYSB0aGUgW2NsYXNzIHNlbGVjdG9yc10oL2VuLVVTL2RvY3MvV2ViL0NTUy9DbGFzc19zZWxlY3RvcnMpIG9yIGZ1bmN0aW9ucyBsaWtlIHRoZSBtZXRob2QgW2BEb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKClgXSgvZW4tVVMvZG9jcy9XZWIvQVBJL0RvY3VtZW50L2dldEVsZW1lbnRzQnlDbGFzc05hbWUgInJldHVybnMgYW4gYXJyYXktbGlrZSBvYmplY3Qgb2YgYWxsIGNoaWxkIGVsZW1lbnRzIHdoaWNoIGhhdmUgYWxsIG9mIHRoZSBnaXZlbiBjbGFzcyBuYW1lcy4iKS4nfSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0dsb2JhbF9hdHRyaWJ1dGVzL2NsYXNzIn1dfSx7bmFtZToiY29udGVudGVkaXRhYmxlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJBbiBlbnVtZXJhdGVkIGF0dHJpYnV0ZSBpbmRpY2F0aW5nIGlmIHRoZSBlbGVtZW50IHNob3VsZCBiZSBlZGl0YWJsZSBieSB0aGUgdXNlci4gSWYgc28sIHRoZSBicm93c2VyIG1vZGlmaWVzIGl0cyB3aWRnZXQgdG8gYWxsb3cgZWRpdGluZy4gVGhlIGF0dHJpYnV0ZSBtdXN0IHRha2Ugb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOlxuXG4qICAgYHRydWVgIG9yIHRoZSBfZW1wdHkgc3RyaW5nXywgd2hpY2ggaW5kaWNhdGVzIHRoYXQgdGhlIGVsZW1lbnQgbXVzdCBiZSBlZGl0YWJsZTtcbiogICBgZmFsc2VgLCB3aGljaCBpbmRpY2F0ZXMgdGhhdCB0aGUgZWxlbWVudCBtdXN0IG5vdCBiZSBlZGl0YWJsZS4ifSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0dsb2JhbF9hdHRyaWJ1dGVzL2NvbnRlbnRlZGl0YWJsZSJ9XX0se25hbWU6ImNvbnRleHRtZW51IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOidUaGUgYFsqKmlkKipdKCNhdHRyLWlkKWAgb2YgYSBbYDxtZW51PmBdKC9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvbWVudSAiVGhlIEhUTUwgPG1lbnU+IGVsZW1lbnQgcmVwcmVzZW50cyBhIGdyb3VwIG9mIGNvbW1hbmRzIHRoYXQgYSB1c2VyIGNhbiBwZXJmb3JtIG9yIGFjdGl2YXRlLiBUaGlzIGluY2x1ZGVzIGJvdGggbGlzdCBtZW51cywgd2hpY2ggbWlnaHQgYXBwZWFyIGFjcm9zcyB0aGUgdG9wIG9mIGEgc2NyZWVuLCBhcyB3ZWxsIGFzIGNvbnRleHQgbWVudXMsIHN1Y2ggYXMgdGhvc2UgdGhhdCBtaWdodCBhcHBlYXIgdW5kZXJuZWF0aCBhIGJ1dHRvbiBhZnRlciBpdCBoYXMgYmVlbiBjbGlja2VkLiIpIHRvIHVzZSBhcyB0aGUgY29udGV4dHVhbCBtZW51IGZvciB0aGlzIGVsZW1lbnQuJ30scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9HbG9iYWxfYXR0cmlidXRlcy9jb250ZXh0bWVudSJ9XX0se25hbWU6ImRpciIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiQW4gZW51bWVyYXRlZCBhdHRyaWJ1dGUgaW5kaWNhdGluZyB0aGUgZGlyZWN0aW9uYWxpdHkgb2YgdGhlIGVsZW1lbnQncyB0ZXh0LiBJdCBjYW4gaGF2ZSB0aGUgZm9sbG93aW5nIHZhbHVlczpcblxuKiAgIGBsdHJgLCB3aGljaCBtZWFucyBfbGVmdCB0byByaWdodF8gYW5kIGlzIHRvIGJlIHVzZWQgZm9yIGxhbmd1YWdlcyB0aGF0IGFyZSB3cml0dGVuIGZyb20gdGhlIGxlZnQgdG8gdGhlIHJpZ2h0IChsaWtlIEVuZ2xpc2gpO1xuKiAgIGBydGxgLCB3aGljaCBtZWFucyBfcmlnaHQgdG8gbGVmdF8gYW5kIGlzIHRvIGJlIHVzZWQgZm9yIGxhbmd1YWdlcyB0aGF0IGFyZSB3cml0dGVuIGZyb20gdGhlIHJpZ2h0IHRvIHRoZSBsZWZ0IChsaWtlIEFyYWJpYyk7XG4qICAgYGF1dG9gLCB3aGljaCBsZXRzIHRoZSB1c2VyIGFnZW50IGRlY2lkZS4gSXQgdXNlcyBhIGJhc2ljIGFsZ29yaXRobSBhcyBpdCBwYXJzZXMgdGhlIGNoYXJhY3RlcnMgaW5zaWRlIHRoZSBlbGVtZW50IHVudGlsIGl0IGZpbmRzIGEgY2hhcmFjdGVyIHdpdGggYSBzdHJvbmcgZGlyZWN0aW9uYWxpdHksIHRoZW4gaXQgYXBwbGllcyB0aGF0IGRpcmVjdGlvbmFsaXR5IHRvIHRoZSB3aG9sZSBlbGVtZW50LiJ9LHZhbHVlU2V0OiJkIixyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0dsb2JhbF9hdHRyaWJ1dGVzL2RpciJ9XX0se25hbWU6ImRyYWdnYWJsZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiQW4gZW51bWVyYXRlZCBhdHRyaWJ1dGUgaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBlbGVtZW50IGNhbiBiZSBkcmFnZ2VkLCB1c2luZyB0aGUgW0RyYWcgYW5kIERyb3AgQVBJXSgvZW4tdXMvZG9jcy9EcmFnRHJvcC9EcmFnX2FuZF9Ecm9wKS4gSXQgY2FuIGhhdmUgdGhlIGZvbGxvd2luZyB2YWx1ZXM6XG5cbiogICBgdHJ1ZWAsIHdoaWNoIGluZGljYXRlcyB0aGF0IHRoZSBlbGVtZW50IG1heSBiZSBkcmFnZ2VkXG4qICAgYGZhbHNlYCwgd2hpY2ggaW5kaWNhdGVzIHRoYXQgdGhlIGVsZW1lbnQgbWF5IG5vdCBiZSBkcmFnZ2VkLiJ9LHZhbHVlU2V0OiJiIixyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0dsb2JhbF9hdHRyaWJ1dGVzL2RyYWdnYWJsZSJ9XX0se25hbWU6ImRyb3B6b25lIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJBbiBlbnVtZXJhdGVkIGF0dHJpYnV0ZSBpbmRpY2F0aW5nIHdoYXQgdHlwZXMgb2YgY29udGVudCBjYW4gYmUgZHJvcHBlZCBvbiBhbiBlbGVtZW50LCB1c2luZyB0aGUgW0RyYWcgYW5kIERyb3AgQVBJXSgvZW4tVVMvZG9jcy9EcmFnRHJvcC9EcmFnX2FuZF9Ecm9wKS4gSXQgY2FuIGhhdmUgdGhlIGZvbGxvd2luZyB2YWx1ZXM6XG5cbiogICBgY29weWAsIHdoaWNoIGluZGljYXRlcyB0aGF0IGRyb3BwaW5nIHdpbGwgY3JlYXRlIGEgY29weSBvZiB0aGUgZWxlbWVudCB0aGF0IHdhcyBkcmFnZ2VkXG4qICAgYG1vdmVgLCB3aGljaCBpbmRpY2F0ZXMgdGhhdCB0aGUgZWxlbWVudCB0aGF0IHdhcyBkcmFnZ2VkIHdpbGwgYmUgbW92ZWQgdG8gdGhpcyBuZXcgbG9jYXRpb24uXG4qICAgYGxpbmtgLCB3aWxsIGNyZWF0ZSBhIGxpbmsgdG8gdGhlIGRyYWdnZWQgZGF0YS4ifX0se25hbWU6ImV4cG9ydHBhcnRzIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJVc2VkIHRvIHRyYW5zaXRpdmVseSBleHBvcnQgc2hhZG93IHBhcnRzIGZyb20gYSBuZXN0ZWQgc2hhZG93IHRyZWUgaW50byBhIGNvbnRhaW5pbmcgbGlnaHQgdHJlZS4ifSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0dsb2JhbF9hdHRyaWJ1dGVzL2V4cG9ydHBhcnRzIn1dfSx7bmFtZToiaGlkZGVuIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJBIEJvb2xlYW4gYXR0cmlidXRlIGluZGljYXRlcyB0aGF0IHRoZSBlbGVtZW50IGlzIG5vdCB5ZXQsIG9yIGlzIG5vIGxvbmdlciwgX3JlbGV2YW50Xy4gRm9yIGV4YW1wbGUsIGl0IGNhbiBiZSB1c2VkIHRvIGhpZGUgZWxlbWVudHMgb2YgdGhlIHBhZ2UgdGhhdCBjYW4ndCBiZSB1c2VkIHVudGlsIHRoZSBsb2dpbiBwcm9jZXNzIGhhcyBiZWVuIGNvbXBsZXRlZC4gVGhlIGJyb3dzZXIgd29uJ3QgcmVuZGVyIHN1Y2ggZWxlbWVudHMuIFRoaXMgYXR0cmlidXRlIG11c3Qgbm90IGJlIHVzZWQgdG8gaGlkZSBjb250ZW50IHRoYXQgY291bGQgbGVnaXRpbWF0ZWx5IGJlIHNob3duLiJ9LHZhbHVlU2V0OiJ2IixyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0dsb2JhbF9hdHRyaWJ1dGVzL2hpZGRlbiJ9XX0se25hbWU6ImlkIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJEZWZpbmVzIGEgdW5pcXVlIGlkZW50aWZpZXIgKElEKSB3aGljaCBtdXN0IGJlIHVuaXF1ZSBpbiB0aGUgd2hvbGUgZG9jdW1lbnQuIEl0cyBwdXJwb3NlIGlzIHRvIGlkZW50aWZ5IHRoZSBlbGVtZW50IHdoZW4gbGlua2luZyAodXNpbmcgYSBmcmFnbWVudCBpZGVudGlmaWVyKSwgc2NyaXB0aW5nLCBvciBzdHlsaW5nICh3aXRoIENTUykuIn0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9HbG9iYWxfYXR0cmlidXRlcy9pZCJ9XX0se25hbWU6ImlucHV0bW9kZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTonUHJvdmlkZXMgYSBoaW50IHRvIGJyb3dzZXJzIGFzIHRvIHRoZSB0eXBlIG9mIHZpcnR1YWwga2V5Ym9hcmQgY29uZmlndXJhdGlvbiB0byB1c2Ugd2hlbiBlZGl0aW5nIHRoaXMgZWxlbWVudCBvciBpdHMgY29udGVudHMuIFVzZWQgcHJpbWFyaWx5IG9uIFtgPGlucHV0PmBdKC9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvaW5wdXQgIlRoZSBIVE1MIDxpbnB1dD4gZWxlbWVudCBpcyB1c2VkIHRvIGNyZWF0ZSBpbnRlcmFjdGl2ZSBjb250cm9scyBmb3Igd2ViLWJhc2VkIGZvcm1zIGluIG9yZGVyIHRvIGFjY2VwdCBkYXRhIGZyb20gdGhlIHVzZXI7IGEgd2lkZSB2YXJpZXR5IG9mIHR5cGVzIG9mIGlucHV0IGRhdGEgYW5kIGNvbnRyb2wgd2lkZ2V0cyBhcmUgYXZhaWxhYmxlLCBkZXBlbmRpbmcgb24gdGhlIGRldmljZSBhbmQgdXNlciBhZ2VudC4iKSBlbGVtZW50cywgYnV0IGlzIHVzYWJsZSBvbiBhbnkgZWxlbWVudCB3aGlsZSBpbiBgW2NvbnRlbnRlZGl0YWJsZV0oL2VuLVVTL2RvY3MvV2ViL0hUTUwvR2xvYmFsX2F0dHJpYnV0ZXMjYXR0ci1jb250ZW50ZWRpdGFibGUpYCBtb2RlLid9LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvR2xvYmFsX2F0dHJpYnV0ZXMvaW5wdXRtb2RlIn1dfSx7bmFtZToiaXMiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkFsbG93cyB5b3UgdG8gc3BlY2lmeSB0aGF0IGEgc3RhbmRhcmQgSFRNTCBlbGVtZW50IHNob3VsZCBiZWhhdmUgbGlrZSBhIHJlZ2lzdGVyZWQgY3VzdG9tIGJ1aWx0LWluIGVsZW1lbnQgKHNlZSBbVXNpbmcgY3VzdG9tIGVsZW1lbnRzXSgvZW4tVVMvZG9jcy9XZWIvV2ViX0NvbXBvbmVudHMvVXNpbmdfY3VzdG9tX2VsZW1lbnRzKSBmb3IgbW9yZSBkZXRhaWxzKS4ifSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0dsb2JhbF9hdHRyaWJ1dGVzL2lzIn1dfSx7bmFtZToiaXRlbWlkIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgdW5pcXVlLCBnbG9iYWwgaWRlbnRpZmllciBvZiBhbiBpdGVtLiJ9LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvR2xvYmFsX2F0dHJpYnV0ZXMvaXRlbWlkIn1dfSx7bmFtZToiaXRlbXByb3AiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlVzZWQgdG8gYWRkIHByb3BlcnRpZXMgdG8gYW4gaXRlbS4gRXZlcnkgSFRNTCBlbGVtZW50IG1heSBoYXZlIGFuIGBpdGVtcHJvcGAgYXR0cmlidXRlIHNwZWNpZmllZCwgd2hlcmUgYW4gYGl0ZW1wcm9wYCBjb25zaXN0cyBvZiBhIG5hbWUgYW5kIHZhbHVlIHBhaXIuIn0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9HbG9iYWxfYXR0cmlidXRlcy9pdGVtcHJvcCJ9XX0se25hbWU6Iml0ZW1yZWYiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlByb3BlcnRpZXMgdGhhdCBhcmUgbm90IGRlc2NlbmRhbnRzIG9mIGFuIGVsZW1lbnQgd2l0aCB0aGUgYGl0ZW1zY29wZWAgYXR0cmlidXRlIGNhbiBiZSBhc3NvY2lhdGVkIHdpdGggdGhlIGl0ZW0gdXNpbmcgYW4gYGl0ZW1yZWZgLiBJdCBwcm92aWRlcyBhIGxpc3Qgb2YgZWxlbWVudCBpZHMgKG5vdCBgaXRlbWlkYHMpIHdpdGggYWRkaXRpb25hbCBwcm9wZXJ0aWVzIGVsc2V3aGVyZSBpbiB0aGUgZG9jdW1lbnQuIn0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9HbG9iYWxfYXR0cmlidXRlcy9pdGVtcmVmIn1dfSx7bmFtZToiaXRlbXNjb3BlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJgaXRlbXNjb3BlYCAodXN1YWxseSkgd29ya3MgYWxvbmcgd2l0aCBgW2l0ZW10eXBlXSgvZW4tVVMvZG9jcy9XZWIvSFRNTC9HbG9iYWxfYXR0cmlidXRlcyNhdHRyLWl0ZW10eXBlKWAgdG8gc3BlY2lmeSB0aGF0IHRoZSBIVE1MIGNvbnRhaW5lZCBpbiBhIGJsb2NrIGlzIGFib3V0IGEgcGFydGljdWxhciBpdGVtLiBgaXRlbXNjb3BlYCBjcmVhdGVzIHRoZSBJdGVtIGFuZCBkZWZpbmVzIHRoZSBzY29wZSBvZiB0aGUgYGl0ZW10eXBlYCBhc3NvY2lhdGVkIHdpdGggaXQuIGBpdGVtdHlwZWAgaXMgYSB2YWxpZCBVUkwgb2YgYSB2b2NhYnVsYXJ5IChzdWNoIGFzIFtzY2hlbWEub3JnXShodHRwczovL3NjaGVtYS5vcmcvKSkgdGhhdCBkZXNjcmliZXMgdGhlIGl0ZW0gYW5kIGl0cyBwcm9wZXJ0aWVzIGNvbnRleHQuIn0sdmFsdWVTZXQ6InYiLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvR2xvYmFsX2F0dHJpYnV0ZXMvaXRlbXNjb3BlIn1dfSx7bmFtZToiaXRlbXR5cGUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlNwZWNpZmllcyB0aGUgVVJMIG9mIHRoZSB2b2NhYnVsYXJ5IHRoYXQgd2lsbCBiZSB1c2VkIHRvIGRlZmluZSBgaXRlbXByb3BgcyAoaXRlbSBwcm9wZXJ0aWVzKSBpbiB0aGUgZGF0YSBzdHJ1Y3R1cmUuIGBbaXRlbXNjb3BlXSgvZW4tVVMvZG9jcy9XZWIvSFRNTC9HbG9iYWxfYXR0cmlidXRlcyNhdHRyLWl0ZW1zY29wZSlgIGlzIHVzZWQgdG8gc2V0IHRoZSBzY29wZSBvZiB3aGVyZSBpbiB0aGUgZGF0YSBzdHJ1Y3R1cmUgdGhlIHZvY2FidWxhcnkgc2V0IGJ5IGBpdGVtdHlwZWAgd2lsbCBiZSBhY3RpdmUuIn0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9HbG9iYWxfYXR0cmlidXRlcy9pdGVtdHlwZSJ9XX0se25hbWU6ImxhbmciLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkhlbHBzIGRlZmluZSB0aGUgbGFuZ3VhZ2Ugb2YgYW4gZWxlbWVudDogdGhlIGxhbmd1YWdlIHRoYXQgbm9uLWVkaXRhYmxlIGVsZW1lbnRzIGFyZSBpbiwgb3IgdGhlIGxhbmd1YWdlIHRoYXQgZWRpdGFibGUgZWxlbWVudHMgc2hvdWxkIGJlIHdyaXR0ZW4gaW4gYnkgdGhlIHVzZXIuIFRoZSBhdHRyaWJ1dGUgY29udGFpbnMgb25lIOKAnGxhbmd1YWdlIHRhZ+KAnSAobWFkZSBvZiBoeXBoZW4tc2VwYXJhdGVkIOKAnGxhbmd1YWdlIHN1YnRhZ3PigJ0pIGluIHRoZSBmb3JtYXQgZGVmaW5lZCBpbiBbX1RhZ3MgZm9yIElkZW50aWZ5aW5nIExhbmd1YWdlcyAoQkNQNDcpX10oaHR0cHM6Ly93d3cuaWV0Zi5vcmcvcmZjL2JjcC9iY3A0Ny50eHQpLiBbKip4bWw6bGFuZyoqXSgjYXR0ci14bWw6bGFuZykgaGFzIHByaW9yaXR5IG92ZXIgaXQuIn0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9HbG9iYWxfYXR0cmlidXRlcy9sYW5nIn1dfSx7bmFtZToicGFydCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTonQSBzcGFjZS1zZXBhcmF0ZWQgbGlzdCBvZiB0aGUgcGFydCBuYW1lcyBvZiB0aGUgZWxlbWVudC4gUGFydCBuYW1lcyBhbGxvd3MgQ1NTIHRvIHNlbGVjdCBhbmQgc3R5bGUgc3BlY2lmaWMgZWxlbWVudHMgaW4gYSBzaGFkb3cgdHJlZSB2aWEgdGhlIFtgOjpwYXJ0YF0oL2VuLVVTL2RvY3MvV2ViL0NTUy86OnBhcnQgIlRoZSA6OnBhcnQgQ1NTIHBzZXVkby1lbGVtZW50IHJlcHJlc2VudHMgYW55IGVsZW1lbnQgd2l0aGluIGEgc2hhZG93IHRyZWUgdGhhdCBoYXMgYSBtYXRjaGluZyBwYXJ0IGF0dHJpYnV0ZS4iKSBwc2V1ZG8tZWxlbWVudC4nfSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0dsb2JhbF9hdHRyaWJ1dGVzL3BhcnQifV19LHtuYW1lOiJyb2xlIix2YWx1ZVNldDoicm9sZXMifSx7bmFtZToic2xvdCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiQXNzaWducyBhIHNsb3QgaW4gYSBbc2hhZG93IERPTV0oL2VuLVVTL2RvY3MvV2ViL1dlYl9Db21wb25lbnRzL1NoYWRvd19ET00pIHNoYWRvdyB0cmVlIHRvIGFuIGVsZW1lbnQ6IEFuIGVsZW1lbnQgd2l0aCBhIGBzbG90YCBhdHRyaWJ1dGUgaXMgYXNzaWduZWQgdG8gdGhlIHNsb3QgY3JlYXRlZCBieSB0aGUgW2A8c2xvdD5gXSgvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3Nsb3QgXCJUaGUgSFRNTCA8c2xvdD4gZWxlbWVudOKAlHBhcnQgb2YgdGhlIFdlYiBDb21wb25lbnRzIHRlY2hub2xvZ3kgc3VpdGXigJRpcyBhIHBsYWNlaG9sZGVyIGluc2lkZSBhIHdlYiBjb21wb25lbnQgdGhhdCB5b3UgY2FuIGZpbGwgd2l0aCB5b3VyIG93biBtYXJrdXAsIHdoaWNoIGxldHMgeW91IGNyZWF0ZSBzZXBhcmF0ZSBET00gdHJlZXMgYW5kIHByZXNlbnQgdGhlbSB0b2dldGhlci5cIikgZWxlbWVudCB3aG9zZSBgW25hbWVdKC9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvc2xvdCNhdHRyLW5hbWUpYCBhdHRyaWJ1dGUncyB2YWx1ZSBtYXRjaGVzIHRoYXQgYHNsb3RgIGF0dHJpYnV0ZSdzIHZhbHVlLiJ9LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvR2xvYmFsX2F0dHJpYnV0ZXMvc2xvdCJ9XX0se25hbWU6InNwZWxsY2hlY2siLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkFuIGVudW1lcmF0ZWQgYXR0cmlidXRlIGRlZmluZXMgd2hldGhlciB0aGUgZWxlbWVudCBtYXkgYmUgY2hlY2tlZCBmb3Igc3BlbGxpbmcgZXJyb3JzLiBJdCBtYXkgaGF2ZSB0aGUgZm9sbG93aW5nIHZhbHVlczpcblxuKiAgIGB0cnVlYCwgd2hpY2ggaW5kaWNhdGVzIHRoYXQgdGhlIGVsZW1lbnQgc2hvdWxkIGJlLCBpZiBwb3NzaWJsZSwgY2hlY2tlZCBmb3Igc3BlbGxpbmcgZXJyb3JzO1xuKiAgIGBmYWxzZWAsIHdoaWNoIGluZGljYXRlcyB0aGF0IHRoZSBlbGVtZW50IHNob3VsZCBub3QgYmUgY2hlY2tlZCBmb3Igc3BlbGxpbmcgZXJyb3JzLiJ9LHZhbHVlU2V0OiJiIixyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0dsb2JhbF9hdHRyaWJ1dGVzL3NwZWxsY2hlY2sifV19LHtuYW1lOiJzdHlsZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTonQ29udGFpbnMgW0NTU10oL2VuLVVTL2RvY3MvV2ViL0NTUykgc3R5bGluZyBkZWNsYXJhdGlvbnMgdG8gYmUgYXBwbGllZCB0byB0aGUgZWxlbWVudC4gTm90ZSB0aGF0IGl0IGlzIHJlY29tbWVuZGVkIGZvciBzdHlsZXMgdG8gYmUgZGVmaW5lZCBpbiBhIHNlcGFyYXRlIGZpbGUgb3IgZmlsZXMuIFRoaXMgYXR0cmlidXRlIGFuZCB0aGUgW2A8c3R5bGU+YF0oL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9zdHlsZSAiVGhlIEhUTUwgPHN0eWxlPiBlbGVtZW50IGNvbnRhaW5zIHN0eWxlIGluZm9ybWF0aW9uIGZvciBhIGRvY3VtZW50LCBvciBwYXJ0IG9mIGEgZG9jdW1lbnQuIikgZWxlbWVudCBoYXZlIG1haW5seSB0aGUgcHVycG9zZSBvZiBhbGxvd2luZyBmb3IgcXVpY2sgc3R5bGluZywgZm9yIGV4YW1wbGUgZm9yIHRlc3RpbmcgcHVycG9zZXMuJ30scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9HbG9iYWxfYXR0cmlidXRlcy9zdHlsZSJ9XX0se25hbWU6InRhYmluZGV4IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJBbiBpbnRlZ2VyIGF0dHJpYnV0ZSBpbmRpY2F0aW5nIGlmIHRoZSBlbGVtZW50IGNhbiB0YWtlIGlucHV0IGZvY3VzIChpcyBfZm9jdXNhYmxlXyksIGlmIGl0IHNob3VsZCBwYXJ0aWNpcGF0ZSB0byBzZXF1ZW50aWFsIGtleWJvYXJkIG5hdmlnYXRpb24sIGFuZCBpZiBzbywgYXQgd2hhdCBwb3NpdGlvbi4gSXQgY2FuIHRha2Ugc2V2ZXJhbCB2YWx1ZXM6XG5cbiogICBhIF9uZWdhdGl2ZSB2YWx1ZV8gbWVhbnMgdGhhdCB0aGUgZWxlbWVudCBzaG91bGQgYmUgZm9jdXNhYmxlLCBidXQgc2hvdWxkIG5vdCBiZSByZWFjaGFibGUgdmlhIHNlcXVlbnRpYWwga2V5Ym9hcmQgbmF2aWdhdGlvbjtcbiogICBgMGAgbWVhbnMgdGhhdCB0aGUgZWxlbWVudCBzaG91bGQgYmUgZm9jdXNhYmxlIGFuZCByZWFjaGFibGUgdmlhIHNlcXVlbnRpYWwga2V5Ym9hcmQgbmF2aWdhdGlvbiwgYnV0IGl0cyByZWxhdGl2ZSBvcmRlciBpcyBkZWZpbmVkIGJ5IHRoZSBwbGF0Zm9ybSBjb252ZW50aW9uO1xuKiAgIGEgX3Bvc2l0aXZlIHZhbHVlXyBtZWFucyB0aGF0IHRoZSBlbGVtZW50IHNob3VsZCBiZSBmb2N1c2FibGUgYW5kIHJlYWNoYWJsZSB2aWEgc2VxdWVudGlhbCBrZXlib2FyZCBuYXZpZ2F0aW9uOyB0aGUgb3JkZXIgaW4gd2hpY2ggdGhlIGVsZW1lbnRzIGFyZSBmb2N1c2VkIGlzIHRoZSBpbmNyZWFzaW5nIHZhbHVlIG9mIHRoZSBbKip0YWJpbmRleCoqXSgjYXR0ci10YWJpbmRleCkuIElmIHNldmVyYWwgZWxlbWVudHMgc2hhcmUgdGhlIHNhbWUgdGFiaW5kZXgsIHRoZWlyIHJlbGF0aXZlIG9yZGVyIGZvbGxvd3MgdGhlaXIgcmVsYXRpdmUgcG9zaXRpb25zIGluIHRoZSBkb2N1bWVudC4ifSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0dsb2JhbF9hdHRyaWJ1dGVzL3RhYmluZGV4In1dfSx7bmFtZToidGl0bGUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkNvbnRhaW5zIGEgdGV4dCByZXByZXNlbnRpbmcgYWR2aXNvcnkgaW5mb3JtYXRpb24gcmVsYXRlZCB0byB0aGUgZWxlbWVudCBpdCBiZWxvbmdzIHRvLiBTdWNoIGluZm9ybWF0aW9uIGNhbiB0eXBpY2FsbHksIGJ1dCBub3QgbmVjZXNzYXJpbHksIGJlIHByZXNlbnRlZCB0byB0aGUgdXNlciBhcyBhIHRvb2x0aXAuIn0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9HbG9iYWxfYXR0cmlidXRlcy90aXRsZSJ9XX0se25hbWU6InRyYW5zbGF0ZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiQW4gZW51bWVyYXRlZCBhdHRyaWJ1dGUgdGhhdCBpcyB1c2VkIHRvIHNwZWNpZnkgd2hldGhlciBhbiBlbGVtZW50J3MgYXR0cmlidXRlIHZhbHVlcyBhbmQgdGhlIHZhbHVlcyBvZiBpdHMgW2BUZXh0YF0oL2VuLVVTL2RvY3MvV2ViL0FQSS9UZXh0IFwiVGhlIFRleHQgaW50ZXJmYWNlIHJlcHJlc2VudHMgdGhlIHRleHR1YWwgY29udGVudCBvZiBFbGVtZW50IG9yIEF0dHIuIElmIGFuIGVsZW1lbnQgaGFzIG5vIG1hcmt1cCB3aXRoaW4gaXRzIGNvbnRlbnQsIGl0IGhhcyBhIHNpbmdsZSBjaGlsZCBpbXBsZW1lbnRpbmcgVGV4dCB0aGF0IGNvbnRhaW5zIHRoZSBlbGVtZW50J3MgdGV4dC4gSG93ZXZlciwgaWYgdGhlIGVsZW1lbnQgY29udGFpbnMgbWFya3VwLCBpdCBpcyBwYXJzZWQgaW50byBpbmZvcm1hdGlvbiBpdGVtcyBhbmQgVGV4dCBub2RlcyB0aGF0IGZvcm0gaXRzIGNoaWxkcmVuLlwiKSBub2RlIGNoaWxkcmVuIGFyZSB0byBiZSB0cmFuc2xhdGVkIHdoZW4gdGhlIHBhZ2UgaXMgbG9jYWxpemVkLCBvciB3aGV0aGVyIHRvIGxlYXZlIHRoZW0gdW5jaGFuZ2VkLiBJdCBjYW4gaGF2ZSB0aGUgZm9sbG93aW5nIHZhbHVlczpcblxuKiAgIGVtcHR5IHN0cmluZyBhbmQgYHllc2AsIHdoaWNoIGluZGljYXRlcyB0aGF0IHRoZSBlbGVtZW50IHdpbGwgYmUgdHJhbnNsYXRlZC5cbiogICBgbm9gLCB3aGljaCBpbmRpY2F0ZXMgdGhhdCB0aGUgZWxlbWVudCB3aWxsIG5vdCBiZSB0cmFuc2xhdGVkLiJ9LHZhbHVlU2V0OiJ5IixyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0dsb2JhbF9hdHRyaWJ1dGVzL3RyYW5zbGF0ZSJ9XX0se25hbWU6Im9uYWJvcnQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBsb2FkaW5nIG9mIGEgcmVzb3VyY2UgaGFzIGJlZW4gYWJvcnRlZC4ifX0se25hbWU6Im9uYmx1ciIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiQW4gZWxlbWVudCBoYXMgbG9zdCBmb2N1cyAoZG9lcyBub3QgYnViYmxlKS4ifX0se25hbWU6Im9uY2FucGxheSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHVzZXIgYWdlbnQgY2FuIHBsYXkgdGhlIG1lZGlhLCBidXQgZXN0aW1hdGVzIHRoYXQgbm90IGVub3VnaCBkYXRhIGhhcyBiZWVuIGxvYWRlZCB0byBwbGF5IHRoZSBtZWRpYSB1cCB0byBpdHMgZW5kIHdpdGhvdXQgaGF2aW5nIHRvIHN0b3AgZm9yIGZ1cnRoZXIgYnVmZmVyaW5nIG9mIGNvbnRlbnQuIn19LHtuYW1lOiJvbmNhbnBsYXl0aHJvdWdoIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgdXNlciBhZ2VudCBjYW4gcGxheSB0aGUgbWVkaWEgdXAgdG8gaXRzIGVuZCB3aXRob3V0IGhhdmluZyB0byBzdG9wIGZvciBmdXJ0aGVyIGJ1ZmZlcmluZyBvZiBjb250ZW50LiJ9fSx7bmFtZToib25jaGFuZ2UiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBjaGFuZ2UgZXZlbnQgaXMgZmlyZWQgZm9yIDxpbnB1dD4sIDxzZWxlY3Q+LCBhbmQgPHRleHRhcmVhPiBlbGVtZW50cyB3aGVuIGEgY2hhbmdlIHRvIHRoZSBlbGVtZW50J3MgdmFsdWUgaXMgY29tbWl0dGVkIGJ5IHRoZSB1c2VyLiJ9fSx7bmFtZToib25jbGljayIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiQSBwb2ludGluZyBkZXZpY2UgYnV0dG9uIGhhcyBiZWVuIHByZXNzZWQgYW5kIHJlbGVhc2VkIG9uIGFuIGVsZW1lbnQuIn19LHtuYW1lOiJvbmNvbnRleHRtZW51IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgcmlnaHQgYnV0dG9uIG9mIHRoZSBtb3VzZSBpcyBjbGlja2VkIChiZWZvcmUgdGhlIGNvbnRleHQgbWVudSBpcyBkaXNwbGF5ZWQpLiJ9fSx7bmFtZToib25kYmxjbGljayIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiQSBwb2ludGluZyBkZXZpY2UgYnV0dG9uIGlzIGNsaWNrZWQgdHdpY2Ugb24gYW4gZWxlbWVudC4ifX0se25hbWU6Im9uZHJhZyIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiQW4gZWxlbWVudCBvciB0ZXh0IHNlbGVjdGlvbiBpcyBiZWluZyBkcmFnZ2VkIChldmVyeSAzNTBtcykuIn19LHtuYW1lOiJvbmRyYWdlbmQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkEgZHJhZyBvcGVyYXRpb24gaXMgYmVpbmcgZW5kZWQgKGJ5IHJlbGVhc2luZyBhIG1vdXNlIGJ1dHRvbiBvciBoaXR0aW5nIHRoZSBlc2NhcGUga2V5KS4ifX0se25hbWU6Im9uZHJhZ2VudGVyIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJBIGRyYWdnZWQgZWxlbWVudCBvciB0ZXh0IHNlbGVjdGlvbiBlbnRlcnMgYSB2YWxpZCBkcm9wIHRhcmdldC4ifX0se25hbWU6Im9uZHJhZ2xlYXZlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJBIGRyYWdnZWQgZWxlbWVudCBvciB0ZXh0IHNlbGVjdGlvbiBsZWF2ZXMgYSB2YWxpZCBkcm9wIHRhcmdldC4ifX0se25hbWU6Im9uZHJhZ292ZXIiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkFuIGVsZW1lbnQgb3IgdGV4dCBzZWxlY3Rpb24gaXMgYmVpbmcgZHJhZ2dlZCBvdmVyIGEgdmFsaWQgZHJvcCB0YXJnZXQgKGV2ZXJ5IDM1MG1zKS4ifX0se25hbWU6Im9uZHJhZ3N0YXJ0IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgdXNlciBzdGFydHMgZHJhZ2dpbmcgYW4gZWxlbWVudCBvciB0ZXh0IHNlbGVjdGlvbi4ifX0se25hbWU6Im9uZHJvcCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiQW4gZWxlbWVudCBpcyBkcm9wcGVkIG9uIGEgdmFsaWQgZHJvcCB0YXJnZXQuIn19LHtuYW1lOiJvbmR1cmF0aW9uY2hhbmdlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgZHVyYXRpb24gYXR0cmlidXRlIGhhcyBiZWVuIHVwZGF0ZWQuIn19LHtuYW1lOiJvbmVtcHRpZWQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBtZWRpYSBoYXMgYmVjb21lIGVtcHR5OyBmb3IgZXhhbXBsZSwgdGhpcyBldmVudCBpcyBzZW50IGlmIHRoZSBtZWRpYSBoYXMgYWxyZWFkeSBiZWVuIGxvYWRlZCAob3IgcGFydGlhbGx5IGxvYWRlZCksIGFuZCB0aGUgbG9hZCgpIG1ldGhvZCBpcyBjYWxsZWQgdG8gcmVsb2FkIGl0LiJ9fSx7bmFtZToib25lbmRlZCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiUGxheWJhY2sgaGFzIHN0b3BwZWQgYmVjYXVzZSB0aGUgZW5kIG9mIHRoZSBtZWRpYSB3YXMgcmVhY2hlZC4ifX0se25hbWU6Im9uZXJyb3IiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkEgcmVzb3VyY2UgZmFpbGVkIHRvIGxvYWQuIn19LHtuYW1lOiJvbmZvY3VzIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJBbiBlbGVtZW50IGhhcyByZWNlaXZlZCBmb2N1cyAoZG9lcyBub3QgYnViYmxlKS4ifX0se25hbWU6Im9uZm9ybWNoYW5nZSJ9LHtuYW1lOiJvbmZvcm1pbnB1dCJ9LHtuYW1lOiJvbmlucHV0IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgdmFsdWUgb2YgYW4gZWxlbWVudCBjaGFuZ2VzIG9yIHRoZSBjb250ZW50IG9mIGFuIGVsZW1lbnQgd2l0aCB0aGUgYXR0cmlidXRlIGNvbnRlbnRlZGl0YWJsZSBpcyBtb2RpZmllZC4ifX0se25hbWU6Im9uaW52YWxpZCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiQSBzdWJtaXR0YWJsZSBlbGVtZW50IGhhcyBiZWVuIGNoZWNrZWQgYW5kIGRvZXNuJ3Qgc2F0aXNmeSBpdHMgY29uc3RyYWludHMuIn19LHtuYW1lOiJvbmtleWRvd24iLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkEga2V5IGlzIHByZXNzZWQgZG93bi4ifX0se25hbWU6Im9ua2V5cHJlc3MiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkEga2V5IGlzIHByZXNzZWQgZG93biBhbmQgdGhhdCBrZXkgbm9ybWFsbHkgcHJvZHVjZXMgYSBjaGFyYWN0ZXIgdmFsdWUgKHVzZSBpbnB1dCBpbnN0ZWFkKS4ifX0se25hbWU6Im9ua2V5dXAiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkEga2V5IGlzIHJlbGVhc2VkLiJ9fSx7bmFtZToib25sb2FkIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJBIHJlc291cmNlIGFuZCBpdHMgZGVwZW5kZW50IHJlc291cmNlcyBoYXZlIGZpbmlzaGVkIGxvYWRpbmcuIn19LHtuYW1lOiJvbmxvYWRlZGRhdGEiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBmaXJzdCBmcmFtZSBvZiB0aGUgbWVkaWEgaGFzIGZpbmlzaGVkIGxvYWRpbmcuIn19LHtuYW1lOiJvbmxvYWRlZG1ldGFkYXRhIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgbWV0YWRhdGEgaGFzIGJlZW4gbG9hZGVkLiJ9fSx7bmFtZToib25sb2Fkc3RhcnQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlByb2dyZXNzIGhhcyBiZWd1bi4ifX0se25hbWU6Im9ubW91c2Vkb3duIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJBIHBvaW50aW5nIGRldmljZSBidXR0b24gKHVzdWFsbHkgYSBtb3VzZSkgaXMgcHJlc3NlZCBvbiBhbiBlbGVtZW50LiJ9fSx7bmFtZToib25tb3VzZW1vdmUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkEgcG9pbnRpbmcgZGV2aWNlIGlzIG1vdmVkIG92ZXIgYW4gZWxlbWVudC4ifX0se25hbWU6Im9ubW91c2VvdXQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkEgcG9pbnRpbmcgZGV2aWNlIGlzIG1vdmVkIG9mZiB0aGUgZWxlbWVudCB0aGF0IGhhcyB0aGUgbGlzdGVuZXIgYXR0YWNoZWQgb3Igb2ZmIG9uZSBvZiBpdHMgY2hpbGRyZW4uIn19LHtuYW1lOiJvbm1vdXNlb3ZlciIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiQSBwb2ludGluZyBkZXZpY2UgaXMgbW92ZWQgb250byB0aGUgZWxlbWVudCB0aGF0IGhhcyB0aGUgbGlzdGVuZXIgYXR0YWNoZWQgb3Igb250byBvbmUgb2YgaXRzIGNoaWxkcmVuLiJ9fSx7bmFtZToib25tb3VzZXVwIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJBIHBvaW50aW5nIGRldmljZSBidXR0b24gaXMgcmVsZWFzZWQgb3ZlciBhbiBlbGVtZW50LiJ9fSx7bmFtZToib25tb3VzZXdoZWVsIn0se25hbWU6Im9ubW91c2VlbnRlciIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiQSBwb2ludGluZyBkZXZpY2UgaXMgbW92ZWQgb250byB0aGUgZWxlbWVudCB0aGF0IGhhcyB0aGUgbGlzdGVuZXIgYXR0YWNoZWQuIn19LHtuYW1lOiJvbm1vdXNlbGVhdmUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkEgcG9pbnRpbmcgZGV2aWNlIGlzIG1vdmVkIG9mZiB0aGUgZWxlbWVudCB0aGF0IGhhcyB0aGUgbGlzdGVuZXIgYXR0YWNoZWQuIn19LHtuYW1lOiJvbnBhdXNlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJQbGF5YmFjayBoYXMgYmVlbiBwYXVzZWQuIn19LHtuYW1lOiJvbnBsYXkiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlBsYXliYWNrIGhhcyBiZWd1bi4ifX0se25hbWU6Im9ucGxheWluZyIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiUGxheWJhY2sgaXMgcmVhZHkgdG8gc3RhcnQgYWZ0ZXIgaGF2aW5nIGJlZW4gcGF1c2VkIG9yIGRlbGF5ZWQgZHVlIHRvIGxhY2sgb2YgZGF0YS4ifX0se25hbWU6Im9ucHJvZ3Jlc3MiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkluIHByb2dyZXNzLiJ9fSx7bmFtZToib25yYXRlY2hhbmdlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgcGxheWJhY2sgcmF0ZSBoYXMgY2hhbmdlZC4ifX0se25hbWU6Im9ucmVzZXQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkEgZm9ybSBpcyByZXNldC4ifX0se25hbWU6Im9ucmVzaXplIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgZG9jdW1lbnQgdmlldyBoYXMgYmVlbiByZXNpemVkLiJ9fSx7bmFtZToib25yZWFkeXN0YXRlY2hhbmdlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgcmVhZHlTdGF0ZSBhdHRyaWJ1dGUgb2YgYSBkb2N1bWVudCBoYXMgY2hhbmdlZC4ifX0se25hbWU6Im9uc2Nyb2xsIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgZG9jdW1lbnQgdmlldyBvciBhbiBlbGVtZW50IGhhcyBiZWVuIHNjcm9sbGVkLiJ9fSx7bmFtZToib25zZWVrZWQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkEgc2VlayBvcGVyYXRpb24gY29tcGxldGVkLiJ9fSx7bmFtZToib25zZWVraW5nIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJBIHNlZWsgb3BlcmF0aW9uIGJlZ2FuLiJ9fSx7bmFtZToib25zZWxlY3QiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlNvbWUgdGV4dCBpcyBiZWluZyBzZWxlY3RlZC4ifX0se25hbWU6Im9uc2hvdyIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiQSBjb250ZXh0bWVudSBldmVudCB3YXMgZmlyZWQgb24vYnViYmxlZCB0byBhbiBlbGVtZW50IHRoYXQgaGFzIGEgY29udGV4dG1lbnUgYXR0cmlidXRlIn19LHtuYW1lOiJvbnN0YWxsZWQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSB1c2VyIGFnZW50IGlzIHRyeWluZyB0byBmZXRjaCBtZWRpYSBkYXRhLCBidXQgZGF0YSBpcyB1bmV4cGVjdGVkbHkgbm90IGZvcnRoY29taW5nLiJ9fSx7bmFtZToib25zdWJtaXQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkEgZm9ybSBpcyBzdWJtaXR0ZWQuIn19LHtuYW1lOiJvbnN1c3BlbmQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6Ik1lZGlhIGRhdGEgbG9hZGluZyBoYXMgYmVlbiBzdXNwZW5kZWQuIn19LHtuYW1lOiJvbnRpbWV1cGRhdGUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSB0aW1lIGluZGljYXRlZCBieSB0aGUgY3VycmVudFRpbWUgYXR0cmlidXRlIGhhcyBiZWVuIHVwZGF0ZWQuIn19LHtuYW1lOiJvbnZvbHVtZWNoYW5nZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHZvbHVtZSBoYXMgY2hhbmdlZC4ifX0se25hbWU6Im9ud2FpdGluZyIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiUGxheWJhY2sgaGFzIHN0b3BwZWQgYmVjYXVzZSBvZiBhIHRlbXBvcmFyeSBsYWNrIG9mIGRhdGEuIn19LHtuYW1lOiJvbnBvaW50ZXJjYW5jZWwiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBwb2ludGVyIGlzIHVubGlrZWx5IHRvIHByb2R1Y2UgYW55IG1vcmUgZXZlbnRzLiJ9fSx7bmFtZToib25wb2ludGVyZG93biIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHBvaW50ZXIgZW50ZXJzIHRoZSBhY3RpdmUgYnV0dG9ucyBzdGF0ZS4ifX0se25hbWU6Im9ucG9pbnRlcmVudGVyIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJQb2ludGluZyBkZXZpY2UgaXMgbW92ZWQgaW5zaWRlIHRoZSBoaXQtdGVzdGluZyBib3VuZGFyeS4ifX0se25hbWU6Im9ucG9pbnRlcmxlYXZlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJQb2ludGluZyBkZXZpY2UgaXMgbW92ZWQgb3V0IG9mIHRoZSBoaXQtdGVzdGluZyBib3VuZGFyeS4ifX0se25hbWU6Im9ucG9pbnRlcmxvY2tjaGFuZ2UiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBwb2ludGVyIHdhcyBsb2NrZWQgb3IgcmVsZWFzZWQuIn19LHtuYW1lOiJvbnBvaW50ZXJsb2NrZXJyb3IiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6Ikl0IHdhcyBpbXBvc3NpYmxlIHRvIGxvY2sgdGhlIHBvaW50ZXIgZm9yIHRlY2huaWNhbCByZWFzb25zIG9yIGJlY2F1c2UgdGhlIHBlcm1pc3Npb24gd2FzIGRlbmllZC4ifX0se25hbWU6Im9ucG9pbnRlcm1vdmUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBwb2ludGVyIGNoYW5nZWQgY29vcmRpbmF0ZXMuIn19LHtuYW1lOiJvbnBvaW50ZXJvdXQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBwb2ludGluZyBkZXZpY2UgbW92ZWQgb3V0IG9mIGhpdC10ZXN0aW5nIGJvdW5kYXJ5IG9yIGxlYXZlcyBkZXRlY3RhYmxlIGhvdmVyIHJhbmdlLiJ9fSx7bmFtZToib25wb2ludGVyb3ZlciIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHBvaW50aW5nIGRldmljZSBpcyBtb3ZlZCBpbnRvIHRoZSBoaXQtdGVzdGluZyBib3VuZGFyeS4ifX0se25hbWU6Im9ucG9pbnRlcnVwIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgcG9pbnRlciBsZWF2ZXMgdGhlIGFjdGl2ZSBidXR0b25zIHN0YXRlLiJ9fSx7bmFtZToiYXJpYS1hY3RpdmVkZXNjZW5kYW50IixyZWZlcmVuY2VzOlt7bmFtZToiV0FJLUFSSUEgUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtYWN0aXZlZGVzY2VuZGFudCJ9XSxkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJJZGVudGlmaWVzIHRoZSBjdXJyZW50bHkgYWN0aXZlIGVsZW1lbnQgd2hlbiBET00gZm9jdXMgaXMgb24gYSBbYGNvbXBvc2l0ZWBdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2NvbXBvc2l0ZSkgd2lkZ2V0LCBbYHRleHRib3hgXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyN0ZXh0Ym94KSwgW2Bncm91cGBdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2dyb3VwKSwgb3IgW2BhcHBsaWNhdGlvbmBdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FwcGxpY2F0aW9uKS4ifX0se25hbWU6ImFyaWEtYXRvbWljIix2YWx1ZVNldDoiYiIscmVmZXJlbmNlczpbe25hbWU6IldBSS1BUklBIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLWF0b21pYyJ9XSxkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJJbmRpY2F0ZXMgd2hldGhlciBbYXNzaXN0aXZlIHRlY2hub2xvZ2llc10oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jZGZuLWFzc2lzdGl2ZS10ZWNobm9sb2d5KSB3aWxsIHByZXNlbnQgYWxsLCBvciBvbmx5IHBhcnRzIG9mLCB0aGUgY2hhbmdlZCByZWdpb24gYmFzZWQgb24gdGhlIGNoYW5nZSBub3RpZmljYXRpb25zIGRlZmluZWQgYnkgdGhlIFtgYXJpYS1yZWxldmFudGBdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtcmVsZXZhbnQpIGF0dHJpYnV0ZS4ifX0se25hbWU6ImFyaWEtYXV0b2NvbXBsZXRlIix2YWx1ZVNldDoiYXV0b2NvbXBsZXRlIixyZWZlcmVuY2VzOlt7bmFtZToiV0FJLUFSSUEgUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtYXV0b2NvbXBsZXRlIn1dLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkluZGljYXRlcyB3aGV0aGVyIGlucHV0dGluZyB0ZXh0IGNvdWxkIHRyaWdnZXIgZGlzcGxheSBvZiBvbmUgb3IgbW9yZSBwcmVkaWN0aW9ucyBvZiB0aGUgdXNlcidzIGludGVuZGVkIHZhbHVlIGZvciBhbiBpbnB1dCBhbmQgc3BlY2lmaWVzIGhvdyBwcmVkaWN0aW9ucyB3b3VsZCBiZSBwcmVzZW50ZWQgaWYgdGhleSBhcmUgbWFkZS4ifX0se25hbWU6ImFyaWEtYnVzeSIsdmFsdWVTZXQ6ImIiLHJlZmVyZW5jZXM6W3tuYW1lOiJXQUktQVJJQSBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1idXN5In1dLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkluZGljYXRlcyBhbiBlbGVtZW50IGlzIGJlaW5nIG1vZGlmaWVkIGFuZCB0aGF0IGFzc2lzdGl2ZSB0ZWNobm9sb2dpZXMgX01BWV8gd2FudCB0byB3YWl0IHVudGlsIHRoZSBtb2RpZmljYXRpb25zIGFyZSBjb21wbGV0ZSBiZWZvcmUgZXhwb3NpbmcgdGhlbSB0byB0aGUgdXNlci4ifX0se25hbWU6ImFyaWEtY2hlY2tlZCIsdmFsdWVTZXQ6InRyaXN0YXRlIixyZWZlcmVuY2VzOlt7bmFtZToiV0FJLUFSSUEgUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtY2hlY2tlZCJ9XSxkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOidJbmRpY2F0ZXMgdGhlIGN1cnJlbnQgImNoZWNrZWQiIFtzdGF0ZV0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jZGZuLXN0YXRlKSBvZiBjaGVja2JveGVzLCByYWRpbyBidXR0b25zLCBhbmQgb3RoZXIgW3dpZGdldHNdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2Rmbi13aWRnZXQpLiBTZWUgcmVsYXRlZCBbYGFyaWEtcHJlc3NlZGBdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtcHJlc3NlZCkgYW5kIFtgYXJpYS1zZWxlY3RlZGBdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtc2VsZWN0ZWQpLid9fSx7bmFtZToiYXJpYS1jb2xjb3VudCIscmVmZXJlbmNlczpbe25hbWU6IldBSS1BUklBIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLWNvbGNvdW50In1dLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkRlZmluZXMgdGhlIHRvdGFsIG51bWJlciBvZiBjb2x1bW5zIGluIGEgW2B0YWJsZWBdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI3RhYmxlKSwgW2BncmlkYF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jZ3JpZCksIG9yIFtgdHJlZWdyaWRgXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyN0cmVlZ3JpZCkuIFNlZSByZWxhdGVkIFtgYXJpYS1jb2xpbmRleGBdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtY29saW5kZXgpLiJ9fSx7bmFtZToiYXJpYS1jb2xpbmRleCIscmVmZXJlbmNlczpbe25hbWU6IldBSS1BUklBIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLWNvbGluZGV4In1dLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkRlZmluZXMgYW4gW2VsZW1lbnQnc10oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jZGZuLWVsZW1lbnQpIGNvbHVtbiBpbmRleCBvciBwb3NpdGlvbiB3aXRoIHJlc3BlY3QgdG8gdGhlIHRvdGFsIG51bWJlciBvZiBjb2x1bW5zIHdpdGhpbiBhIFtgdGFibGVgXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyN0YWJsZSksIFtgZ3JpZGBdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2dyaWQpLCBvciBbYHRyZWVncmlkYF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jdHJlZWdyaWQpLiBTZWUgcmVsYXRlZCBbYGFyaWEtY29sY291bnRgXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLWNvbGNvdW50KSBhbmQgW2BhcmlhLWNvbHNwYW5gXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLWNvbHNwYW4pLiJ9fSx7bmFtZToiYXJpYS1jb2xzcGFuIixyZWZlcmVuY2VzOlt7bmFtZToiV0FJLUFSSUEgUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtY29sc3BhbiJ9XSxkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJEZWZpbmVzIHRoZSBudW1iZXIgb2YgY29sdW1ucyBzcGFubmVkIGJ5IGEgY2VsbCBvciBncmlkY2VsbCB3aXRoaW4gYSBbYHRhYmxlYF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jdGFibGUpLCBbYGdyaWRgXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNncmlkKSwgb3IgW2B0cmVlZ3JpZGBdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI3RyZWVncmlkKS4gU2VlIHJlbGF0ZWQgW2BhcmlhLWNvbGluZGV4YF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1jb2xpbmRleCkgYW5kIFtgYXJpYS1yb3dzcGFuYF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1yb3dzcGFuKS4ifX0se25hbWU6ImFyaWEtY29udHJvbHMiLHJlZmVyZW5jZXM6W3tuYW1lOiJXQUktQVJJQSBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1jb250cm9scyJ9XSxkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJJZGVudGlmaWVzIHRoZSBbZWxlbWVudF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jZGZuLWVsZW1lbnQpIChvciBlbGVtZW50cykgd2hvc2UgY29udGVudHMgb3IgcHJlc2VuY2UgYXJlIGNvbnRyb2xsZWQgYnkgdGhlIGN1cnJlbnQgZWxlbWVudC4gU2VlIHJlbGF0ZWQgW2BhcmlhLW93bnNgXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLW93bnMpLiJ9fSx7bmFtZToiYXJpYS1jdXJyZW50Iix2YWx1ZVNldDoiY3VycmVudCIscmVmZXJlbmNlczpbe25hbWU6IldBSS1BUklBIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLWN1cnJlbnQifV0sZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiSW5kaWNhdGVzIHRoZSBbZWxlbWVudF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jZGZuLWVsZW1lbnQpIHRoYXQgcmVwcmVzZW50cyB0aGUgY3VycmVudCBpdGVtIHdpdGhpbiBhIGNvbnRhaW5lciBvciBzZXQgb2YgcmVsYXRlZCBlbGVtZW50cy4ifX0se25hbWU6ImFyaWEtZGVzY3JpYmVkYXQiLHJlZmVyZW5jZXM6W3tuYW1lOiJXQUktQVJJQSBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1kZXNjcmliZWRhdCJ9XX0se25hbWU6ImFyaWEtZGVzY3JpYmVkYnkiLHJlZmVyZW5jZXM6W3tuYW1lOiJXQUktQVJJQSBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1kZXNjcmliZWRieSJ9XSxkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJJZGVudGlmaWVzIHRoZSBbZWxlbWVudF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jZGZuLWVsZW1lbnQpIChvciBlbGVtZW50cykgdGhhdCBkZXNjcmliZXMgdGhlIFtvYmplY3RdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2Rmbi1vYmplY3QpLiBTZWUgcmVsYXRlZCBbYGFyaWEtbGFiZWxsZWRieWBdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtbGFiZWxsZWRieSkuIn19LHtuYW1lOiJhcmlhLWRpc2FibGVkIix2YWx1ZVNldDoiYiIscmVmZXJlbmNlczpbe25hbWU6IldBSS1BUklBIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLWRpc2FibGVkIn1dLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkluZGljYXRlcyB0aGF0IHRoZSBbZWxlbWVudF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jZGZuLWVsZW1lbnQpIGlzIFtwZXJjZWl2YWJsZV0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jZGZuLXBlcmNlaXZhYmxlKSBidXQgZGlzYWJsZWQsIHNvIGl0IGlzIG5vdCBlZGl0YWJsZSBvciBvdGhlcndpc2UgW29wZXJhYmxlXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNkZm4tb3BlcmFibGUpLiBTZWUgcmVsYXRlZCBbYGFyaWEtaGlkZGVuYF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1oaWRkZW4pIGFuZCBbYGFyaWEtcmVhZG9ubHlgXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLXJlYWRvbmx5KS4ifX0se25hbWU6ImFyaWEtZHJvcGVmZmVjdCIsdmFsdWVTZXQ6ImRyb3BlZmZlY3QiLHJlZmVyZW5jZXM6W3tuYW1lOiJXQUktQVJJQSBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1kcm9wZWZmZWN0In1dLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlxcW0RlcHJlY2F0ZWQgaW4gQVJJQSAxLjFcXF0gSW5kaWNhdGVzIHdoYXQgZnVuY3Rpb25zIGNhbiBiZSBwZXJmb3JtZWQgd2hlbiBhIGRyYWdnZWQgb2JqZWN0IGlzIHJlbGVhc2VkIG9uIHRoZSBkcm9wIHRhcmdldC4ifX0se25hbWU6ImFyaWEtZXJyb3JtZXNzYWdlIixyZWZlcmVuY2VzOlt7bmFtZToiV0FJLUFSSUEgUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtZXJyb3JtZXNzYWdlIn1dLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IklkZW50aWZpZXMgdGhlIFtlbGVtZW50XShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNkZm4tZWxlbWVudCkgdGhhdCBwcm92aWRlcyBhbiBlcnJvciBtZXNzYWdlIGZvciB0aGUgW29iamVjdF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jZGZuLW9iamVjdCkuIFNlZSByZWxhdGVkIFtgYXJpYS1pbnZhbGlkYF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1pbnZhbGlkKSBhbmQgW2BhcmlhLWRlc2NyaWJlZGJ5YF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1kZXNjcmliZWRieSkuIn19LHtuYW1lOiJhcmlhLWV4cGFuZGVkIix2YWx1ZVNldDoidSIscmVmZXJlbmNlczpbe25hbWU6IldBSS1BUklBIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLWV4cGFuZGVkIn1dLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkluZGljYXRlcyB3aGV0aGVyIHRoZSBlbGVtZW50LCBvciBhbm90aGVyIGdyb3VwaW5nIGVsZW1lbnQgaXQgY29udHJvbHMsIGlzIGN1cnJlbnRseSBleHBhbmRlZCBvciBjb2xsYXBzZWQuIn19LHtuYW1lOiJhcmlhLWZsb3d0byIscmVmZXJlbmNlczpbe25hbWU6IldBSS1BUklBIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLWZsb3d0byJ9XSxkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJJZGVudGlmaWVzIHRoZSBuZXh0IFtlbGVtZW50XShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNkZm4tZWxlbWVudCkgKG9yIGVsZW1lbnRzKSBpbiBhbiBhbHRlcm5hdGUgcmVhZGluZyBvcmRlciBvZiBjb250ZW50IHdoaWNoLCBhdCB0aGUgdXNlcidzIGRpc2NyZXRpb24sIGFsbG93cyBhc3Npc3RpdmUgdGVjaG5vbG9neSB0byBvdmVycmlkZSB0aGUgZ2VuZXJhbCBkZWZhdWx0IG9mIHJlYWRpbmcgaW4gZG9jdW1lbnQgc291cmNlIG9yZGVyLiJ9fSx7bmFtZToiYXJpYS1ncmFiYmVkIix2YWx1ZVNldDoidSIscmVmZXJlbmNlczpbe25hbWU6IldBSS1BUklBIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLWdyYWJiZWQifV0sZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTonXFxbRGVwcmVjYXRlZCBpbiBBUklBIDEuMVxcXSBJbmRpY2F0ZXMgYW4gZWxlbWVudFwncyAiZ3JhYmJlZCIgW3N0YXRlXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNkZm4tc3RhdGUpIGluIGEgZHJhZy1hbmQtZHJvcCBvcGVyYXRpb24uJ319LHtuYW1lOiJhcmlhLWhhc3BvcHVwIix2YWx1ZVNldDoiaGFzcG9wdXAiLHJlZmVyZW5jZXM6W3tuYW1lOiJXQUktQVJJQSBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1oYXNwb3B1cCJ9XSxkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJJbmRpY2F0ZXMgdGhlIGF2YWlsYWJpbGl0eSBhbmQgdHlwZSBvZiBpbnRlcmFjdGl2ZSBwb3B1cCBlbGVtZW50LCBzdWNoIGFzIG1lbnUgb3IgZGlhbG9nLCB0aGF0IGNhbiBiZSB0cmlnZ2VyZWQgYnkgYW4gW2VsZW1lbnRdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2Rmbi1lbGVtZW50KS4ifX0se25hbWU6ImFyaWEtaGlkZGVuIix2YWx1ZVNldDoiYiIscmVmZXJlbmNlczpbe25hbWU6IldBSS1BUklBIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLWhpZGRlbiJ9XSxkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJJbmRpY2F0ZXMgd2hldGhlciB0aGUgW2VsZW1lbnRdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2Rmbi1lbGVtZW50KSBpcyBleHBvc2VkIHRvIGFuIGFjY2Vzc2liaWxpdHkgQVBJLiBTZWUgcmVsYXRlZCBbYGFyaWEtZGlzYWJsZWRgXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLWRpc2FibGVkKS4ifX0se25hbWU6ImFyaWEtaW52YWxpZCIsdmFsdWVTZXQ6ImludmFsaWQiLHJlZmVyZW5jZXM6W3tuYW1lOiJXQUktQVJJQSBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1pbnZhbGlkIn1dLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkluZGljYXRlcyB0aGUgZW50ZXJlZCB2YWx1ZSBkb2VzIG5vdCBjb25mb3JtIHRvIHRoZSBmb3JtYXQgZXhwZWN0ZWQgYnkgdGhlIGFwcGxpY2F0aW9uLiBTZWUgcmVsYXRlZCBbYGFyaWEtZXJyb3JtZXNzYWdlYF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1lcnJvcm1lc3NhZ2UpLiJ9fSx7bmFtZToiYXJpYS1rYmRzaG9ydGN1dHMiLHJlZmVyZW5jZXM6W3tuYW1lOiJXQUktQVJJQSBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1rYmRzaG9ydGN1dHMifV19LHtuYW1lOiJhcmlhLWxhYmVsIixyZWZlcmVuY2VzOlt7bmFtZToiV0FJLUFSSUEgUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtbGFiZWwifV0sZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiRGVmaW5lcyBhIHN0cmluZyB2YWx1ZSB0aGF0IGxhYmVscyB0aGUgY3VycmVudCBlbGVtZW50LiBTZWUgcmVsYXRlZCBbYGFyaWEtbGFiZWxsZWRieWBdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtbGFiZWxsZWRieSkuIn19LHtuYW1lOiJhcmlhLWxhYmVsbGVkYnkiLHJlZmVyZW5jZXM6W3tuYW1lOiJXQUktQVJJQSBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1sYWJlbGxlZGJ5In1dLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IklkZW50aWZpZXMgdGhlIFtlbGVtZW50XShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNkZm4tZWxlbWVudCkgKG9yIGVsZW1lbnRzKSB0aGF0IGxhYmVscyB0aGUgY3VycmVudCBlbGVtZW50LiBTZWUgcmVsYXRlZCBbYGFyaWEtZGVzY3JpYmVkYnlgXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLWRlc2NyaWJlZGJ5KS4ifX0se25hbWU6ImFyaWEtbGV2ZWwiLHJlZmVyZW5jZXM6W3tuYW1lOiJXQUktQVJJQSBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1sZXZlbCJ9XSxkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJEZWZpbmVzIHRoZSBoaWVyYXJjaGljYWwgbGV2ZWwgb2YgYW4gW2VsZW1lbnRdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2Rmbi1lbGVtZW50KSB3aXRoaW4gYSBzdHJ1Y3R1cmUuIn19LHtuYW1lOiJhcmlhLWxpdmUiLHZhbHVlU2V0OiJsaXZlIixyZWZlcmVuY2VzOlt7bmFtZToiV0FJLUFSSUEgUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtbGl2ZSJ9XSxkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJJbmRpY2F0ZXMgdGhhdCBhbiBbZWxlbWVudF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jZGZuLWVsZW1lbnQpIHdpbGwgYmUgdXBkYXRlZCwgYW5kIGRlc2NyaWJlcyB0aGUgdHlwZXMgb2YgdXBkYXRlcyB0aGUgW3VzZXIgYWdlbnRzXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNkZm4tdXNlci1hZ2VudCksIFthc3Npc3RpdmUgdGVjaG5vbG9naWVzXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNkZm4tYXNzaXN0aXZlLXRlY2hub2xvZ3kpLCBhbmQgdXNlciBjYW4gZXhwZWN0IGZyb20gdGhlIFtsaXZlIHJlZ2lvbl0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jZGZuLWxpdmUtcmVnaW9uKS4ifX0se25hbWU6ImFyaWEtbW9kYWwiLHZhbHVlU2V0OiJiIixyZWZlcmVuY2VzOlt7bmFtZToiV0FJLUFSSUEgUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtbW9kYWwifV0sZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiSW5kaWNhdGVzIHdoZXRoZXIgYW4gW2VsZW1lbnRdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2Rmbi1lbGVtZW50KSBpcyBtb2RhbCB3aGVuIGRpc3BsYXllZC4ifX0se25hbWU6ImFyaWEtbXVsdGlsaW5lIix2YWx1ZVNldDoiYiIscmVmZXJlbmNlczpbe25hbWU6IldBSS1BUklBIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLW11bHRpbGluZSJ9XSxkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJJbmRpY2F0ZXMgd2hldGhlciBhIHRleHQgYm94IGFjY2VwdHMgbXVsdGlwbGUgbGluZXMgb2YgaW5wdXQgb3Igb25seSBhIHNpbmdsZSBsaW5lLiJ9fSx7bmFtZToiYXJpYS1tdWx0aXNlbGVjdGFibGUiLHZhbHVlU2V0OiJiIixyZWZlcmVuY2VzOlt7bmFtZToiV0FJLUFSSUEgUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtbXVsdGlzZWxlY3RhYmxlIn1dLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkluZGljYXRlcyB0aGF0IHRoZSB1c2VyIG1heSBzZWxlY3QgbW9yZSB0aGFuIG9uZSBpdGVtIGZyb20gdGhlIGN1cnJlbnQgc2VsZWN0YWJsZSBkZXNjZW5kYW50cy4ifX0se25hbWU6ImFyaWEtb3JpZW50YXRpb24iLHZhbHVlU2V0OiJvcmllbnRhdGlvbiIscmVmZXJlbmNlczpbe25hbWU6IldBSS1BUklBIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLW9yaWVudGF0aW9uIn1dLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkluZGljYXRlcyB3aGV0aGVyIHRoZSBlbGVtZW50J3Mgb3JpZW50YXRpb24gaXMgaG9yaXpvbnRhbCwgdmVydGljYWwsIG9yIHVua25vd24vYW1iaWd1b3VzLiJ9fSx7bmFtZToiYXJpYS1vd25zIixyZWZlcmVuY2VzOlt7bmFtZToiV0FJLUFSSUEgUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtb3ducyJ9XSxkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJJZGVudGlmaWVzIGFuIFtlbGVtZW50XShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNkZm4tZWxlbWVudCkgKG9yIGVsZW1lbnRzKSBpbiBvcmRlciB0byBkZWZpbmUgYSB2aXN1YWwsIGZ1bmN0aW9uYWwsIG9yIGNvbnRleHR1YWwgcGFyZW50L2NoaWxkIFtyZWxhdGlvbnNoaXBdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2Rmbi1yZWxhdGlvbnNoaXApIGJldHdlZW4gRE9NIGVsZW1lbnRzIHdoZXJlIHRoZSBET00gaGllcmFyY2h5IGNhbm5vdCBiZSB1c2VkIHRvIHJlcHJlc2VudCB0aGUgcmVsYXRpb25zaGlwLiBTZWUgcmVsYXRlZCBbYGFyaWEtY29udHJvbHNgXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLWNvbnRyb2xzKS4ifX0se25hbWU6ImFyaWEtcGxhY2Vob2xkZXIiLHJlZmVyZW5jZXM6W3tuYW1lOiJXQUktQVJJQSBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1wbGFjZWhvbGRlciJ9XSxkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJEZWZpbmVzIGEgc2hvcnQgaGludCAoYSB3b3JkIG9yIHNob3J0IHBocmFzZSkgaW50ZW5kZWQgdG8gYWlkIHRoZSB1c2VyIHdpdGggZGF0YSBlbnRyeSB3aGVuIHRoZSBjb250cm9sIGhhcyBubyB2YWx1ZS4gQSBoaW50IGNvdWxkIGJlIGEgc2FtcGxlIHZhbHVlIG9yIGEgYnJpZWYgZGVzY3JpcHRpb24gb2YgdGhlIGV4cGVjdGVkIGZvcm1hdC4ifX0se25hbWU6ImFyaWEtcG9zaW5zZXQiLHJlZmVyZW5jZXM6W3tuYW1lOiJXQUktQVJJQSBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1wb3NpbnNldCJ9XSxkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJEZWZpbmVzIGFuIFtlbGVtZW50XShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNkZm4tZWxlbWVudCkncyBudW1iZXIgb3IgcG9zaXRpb24gaW4gdGhlIGN1cnJlbnQgc2V0IG9mIGxpc3RpdGVtcyBvciB0cmVlaXRlbXMuIE5vdCByZXF1aXJlZCBpZiBhbGwgZWxlbWVudHMgaW4gdGhlIHNldCBhcmUgcHJlc2VudCBpbiB0aGUgRE9NLiBTZWUgcmVsYXRlZCBbYGFyaWEtc2V0c2l6ZWBdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtc2V0c2l6ZSkuIn19LHtuYW1lOiJhcmlhLXByZXNzZWQiLHZhbHVlU2V0OiJ0cmlzdGF0ZSIscmVmZXJlbmNlczpbe25hbWU6IldBSS1BUklBIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLXByZXNzZWQifV0sZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTonSW5kaWNhdGVzIHRoZSBjdXJyZW50ICJwcmVzc2VkIiBbc3RhdGVdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2Rmbi1zdGF0ZSkgb2YgdG9nZ2xlIGJ1dHRvbnMuIFNlZSByZWxhdGVkIFtgYXJpYS1jaGVja2VkYF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1jaGVja2VkKSBhbmQgW2BhcmlhLXNlbGVjdGVkYF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1zZWxlY3RlZCkuJ319LHtuYW1lOiJhcmlhLXJlYWRvbmx5Iix2YWx1ZVNldDoiYiIscmVmZXJlbmNlczpbe25hbWU6IldBSS1BUklBIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLXJlYWRvbmx5In1dLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkluZGljYXRlcyB0aGF0IHRoZSBbZWxlbWVudF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jZGZuLWVsZW1lbnQpIGlzIG5vdCBlZGl0YWJsZSwgYnV0IGlzIG90aGVyd2lzZSBbb3BlcmFibGVdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2Rmbi1vcGVyYWJsZSkuIFNlZSByZWxhdGVkIFtgYXJpYS1kaXNhYmxlZGBdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtZGlzYWJsZWQpLiJ9fSx7bmFtZToiYXJpYS1yZWxldmFudCIsdmFsdWVTZXQ6InJlbGV2YW50IixyZWZlcmVuY2VzOlt7bmFtZToiV0FJLUFSSUEgUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtcmVsZXZhbnQifV0sZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiSW5kaWNhdGVzIHdoYXQgbm90aWZpY2F0aW9ucyB0aGUgdXNlciBhZ2VudCB3aWxsIHRyaWdnZXIgd2hlbiB0aGUgYWNjZXNzaWJpbGl0eSB0cmVlIHdpdGhpbiBhIGxpdmUgcmVnaW9uIGlzIG1vZGlmaWVkLiBTZWUgcmVsYXRlZCBbYGFyaWEtYXRvbWljYF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1hdG9taWMpLiJ9fSx7bmFtZToiYXJpYS1yZXF1aXJlZCIsdmFsdWVTZXQ6ImIiLHJlZmVyZW5jZXM6W3tuYW1lOiJXQUktQVJJQSBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1yZXF1aXJlZCJ9XSxkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJJbmRpY2F0ZXMgdGhhdCB1c2VyIGlucHV0IGlzIHJlcXVpcmVkIG9uIHRoZSBbZWxlbWVudF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jZGZuLWVsZW1lbnQpIGJlZm9yZSBhIGZvcm0gbWF5IGJlIHN1Ym1pdHRlZC4ifX0se25hbWU6ImFyaWEtcm9sZWRlc2NyaXB0aW9uIixyZWZlcmVuY2VzOlt7bmFtZToiV0FJLUFSSUEgUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtcm9sZWRlc2NyaXB0aW9uIn1dLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkRlZmluZXMgYSBodW1hbi1yZWFkYWJsZSwgYXV0aG9yLWxvY2FsaXplZCBkZXNjcmlwdGlvbiBmb3IgdGhlIFtyb2xlXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNkZm4tcm9sZSkgb2YgYW4gW2VsZW1lbnRdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2Rmbi1lbGVtZW50KS4ifX0se25hbWU6ImFyaWEtcm93Y291bnQiLHJlZmVyZW5jZXM6W3tuYW1lOiJXQUktQVJJQSBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1yb3djb3VudCJ9XSxkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJEZWZpbmVzIHRoZSB0b3RhbCBudW1iZXIgb2Ygcm93cyBpbiBhIFtgdGFibGVgXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyN0YWJsZSksIFtgZ3JpZGBdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2dyaWQpLCBvciBbYHRyZWVncmlkYF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jdHJlZWdyaWQpLiBTZWUgcmVsYXRlZCBbYGFyaWEtcm93aW5kZXhgXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLXJvd2luZGV4KS4ifX0se25hbWU6ImFyaWEtcm93aW5kZXgiLHJlZmVyZW5jZXM6W3tuYW1lOiJXQUktQVJJQSBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1yb3dpbmRleCJ9XSxkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJEZWZpbmVzIGFuIFtlbGVtZW50J3NdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2Rmbi1lbGVtZW50KSByb3cgaW5kZXggb3IgcG9zaXRpb24gd2l0aCByZXNwZWN0IHRvIHRoZSB0b3RhbCBudW1iZXIgb2Ygcm93cyB3aXRoaW4gYSBbYHRhYmxlYF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jdGFibGUpLCBbYGdyaWRgXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNncmlkKSwgb3IgW2B0cmVlZ3JpZGBdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI3RyZWVncmlkKS4gU2VlIHJlbGF0ZWQgW2BhcmlhLXJvd2NvdW50YF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1yb3djb3VudCkgYW5kIFtgYXJpYS1yb3dzcGFuYF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1yb3dzcGFuKS4ifX0se25hbWU6ImFyaWEtcm93c3BhbiIscmVmZXJlbmNlczpbe25hbWU6IldBSS1BUklBIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLXJvd3NwYW4ifV0sZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiRGVmaW5lcyB0aGUgbnVtYmVyIG9mIHJvd3Mgc3Bhbm5lZCBieSBhIGNlbGwgb3IgZ3JpZGNlbGwgd2l0aGluIGEgW2B0YWJsZWBdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI3RhYmxlKSwgW2BncmlkYF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jZ3JpZCksIG9yIFtgdHJlZWdyaWRgXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyN0cmVlZ3JpZCkuIFNlZSByZWxhdGVkIFtgYXJpYS1yb3dpbmRleGBdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtcm93aW5kZXgpIGFuZCBbYGFyaWEtY29sc3BhbmBdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtY29sc3BhbikuIn19LHtuYW1lOiJhcmlhLXNlbGVjdGVkIix2YWx1ZVNldDoidSIscmVmZXJlbmNlczpbe25hbWU6IldBSS1BUklBIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLXNlbGVjdGVkIn1dLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6J0luZGljYXRlcyB0aGUgY3VycmVudCAic2VsZWN0ZWQiIFtzdGF0ZV0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jZGZuLXN0YXRlKSBvZiB2YXJpb3VzIFt3aWRnZXRzXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNkZm4td2lkZ2V0KS4gU2VlIHJlbGF0ZWQgW2BhcmlhLWNoZWNrZWRgXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLWNoZWNrZWQpIGFuZCBbYGFyaWEtcHJlc3NlZGBdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtcHJlc3NlZCkuJ319LHtuYW1lOiJhcmlhLXNldHNpemUiLHJlZmVyZW5jZXM6W3tuYW1lOiJXQUktQVJJQSBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1zZXRzaXplIn1dLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkRlZmluZXMgdGhlIG51bWJlciBvZiBpdGVtcyBpbiB0aGUgY3VycmVudCBzZXQgb2YgbGlzdGl0ZW1zIG9yIHRyZWVpdGVtcy4gTm90IHJlcXVpcmVkIGlmIGFsbCBlbGVtZW50cyBpbiB0aGUgc2V0IGFyZSBwcmVzZW50IGluIHRoZSBET00uIFNlZSByZWxhdGVkIFtgYXJpYS1wb3NpbnNldGBdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtcG9zaW5zZXQpLiJ9fSx7bmFtZToiYXJpYS1zb3J0Iix2YWx1ZVNldDoic29ydCIscmVmZXJlbmNlczpbe25hbWU6IldBSS1BUklBIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLXNvcnQifV0sZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiSW5kaWNhdGVzIGlmIGl0ZW1zIGluIGEgdGFibGUgb3IgZ3JpZCBhcmUgc29ydGVkIGluIGFzY2VuZGluZyBvciBkZXNjZW5kaW5nIG9yZGVyLiJ9fSx7bmFtZToiYXJpYS12YWx1ZW1heCIscmVmZXJlbmNlczpbe25hbWU6IldBSS1BUklBIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLXZhbHVlbWF4In1dLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkRlZmluZXMgdGhlIG1heGltdW0gYWxsb3dlZCB2YWx1ZSBmb3IgYSByYW5nZSBbd2lkZ2V0XShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNkZm4td2lkZ2V0KS4ifX0se25hbWU6ImFyaWEtdmFsdWVtaW4iLHJlZmVyZW5jZXM6W3tuYW1lOiJXQUktQVJJQSBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS12YWx1ZW1pbiJ9XSxkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJEZWZpbmVzIHRoZSBtaW5pbXVtIGFsbG93ZWQgdmFsdWUgZm9yIGEgcmFuZ2UgW3dpZGdldF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jZGZuLXdpZGdldCkuIn19LHtuYW1lOiJhcmlhLXZhbHVlbm93IixyZWZlcmVuY2VzOlt7bmFtZToiV0FJLUFSSUEgUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtdmFsdWVub3cifV0sZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiRGVmaW5lcyB0aGUgY3VycmVudCB2YWx1ZSBmb3IgYSByYW5nZSBbd2lkZ2V0XShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNkZm4td2lkZ2V0KS4gU2VlIHJlbGF0ZWQgW2BhcmlhLXZhbHVldGV4dGBdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtdmFsdWV0ZXh0KS4ifX0se25hbWU6ImFyaWEtdmFsdWV0ZXh0IixyZWZlcmVuY2VzOlt7bmFtZToiV0FJLUFSSUEgUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtdmFsdWV0ZXh0In1dLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkRlZmluZXMgdGhlIGh1bWFuIHJlYWRhYmxlIHRleHQgYWx0ZXJuYXRpdmUgb2YgW2BhcmlhLXZhbHVlbm93YF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS12YWx1ZW5vdykgZm9yIGEgcmFuZ2UgW3dpZGdldF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jZGZuLXdpZGdldCkuIn19LHtuYW1lOiJhcmlhLWRldGFpbHMiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IklkZW50aWZpZXMgdGhlIFtlbGVtZW50XShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNkZm4tZWxlbWVudCkgdGhhdCBwcm92aWRlcyBhIGRldGFpbGVkLCBleHRlbmRlZCBkZXNjcmlwdGlvbiBmb3IgdGhlIFtvYmplY3RdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2Rmbi1vYmplY3QpLiBTZWUgcmVsYXRlZCBbYGFyaWEtZGVzY3JpYmVkYnlgXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLWRlc2NyaWJlZGJ5KS4ifX0se25hbWU6ImFyaWEta2V5c2hvcnRjdXRzIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJJbmRpY2F0ZXMga2V5Ym9hcmQgc2hvcnRjdXRzIHRoYXQgYW4gYXV0aG9yIGhhcyBpbXBsZW1lbnRlZCB0byBhY3RpdmF0ZSBvciBnaXZlIGZvY3VzIHRvIGFuIGVsZW1lbnQuIn19XSx2YWx1ZVNldHM6W3tuYW1lOiJiIix2YWx1ZXM6W3tuYW1lOiJ0cnVlIn0se25hbWU6ImZhbHNlIn1dfSx7bmFtZToidSIsdmFsdWVzOlt7bmFtZToidHJ1ZSJ9LHtuYW1lOiJmYWxzZSJ9LHtuYW1lOiJ1bmRlZmluZWQifV19LHtuYW1lOiJvIix2YWx1ZXM6W3tuYW1lOiJvbiJ9LHtuYW1lOiJvZmYifV19LHtuYW1lOiJ5Iix2YWx1ZXM6W3tuYW1lOiJ5ZXMifSx7bmFtZToibm8ifV19LHtuYW1lOiJ3Iix2YWx1ZXM6W3tuYW1lOiJzb2Z0In0se25hbWU6ImhhcmQifV19LHtuYW1lOiJkIix2YWx1ZXM6W3tuYW1lOiJsdHIifSx7bmFtZToicnRsIn0se25hbWU6ImF1dG8ifV19LHtuYW1lOiJtIix2YWx1ZXM6W3tuYW1lOiJnZXQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkNvcnJlc3BvbmRzIHRvIHRoZSBIVFRQIFtHRVQgbWV0aG9kXShodHRwczovL3d3dy53My5vcmcvUHJvdG9jb2xzL3JmYzI2MTYvcmZjMjYxNi1zZWM5Lmh0bWwjc2VjOS4zKTsgZm9ybSBkYXRhIGFyZSBhcHBlbmRlZCB0byB0aGUgYGFjdGlvbmAgYXR0cmlidXRlIFVSSSB3aXRoIGEgJz8nIGFzIHNlcGFyYXRvciwgYW5kIHRoZSByZXN1bHRpbmcgVVJJIGlzIHNlbnQgdG8gdGhlIHNlcnZlci4gVXNlIHRoaXMgbWV0aG9kIHdoZW4gdGhlIGZvcm0gaGFzIG5vIHNpZGUtZWZmZWN0cyBhbmQgY29udGFpbnMgb25seSBBU0NJSSBjaGFyYWN0ZXJzLiJ9fSx7bmFtZToicG9zdCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiQ29ycmVzcG9uZHMgdG8gdGhlIEhUVFAgW1BPU1QgbWV0aG9kXShodHRwczovL3d3dy53My5vcmcvUHJvdG9jb2xzL3JmYzI2MTYvcmZjMjYxNi1zZWM5Lmh0bWwjc2VjOS41KTsgZm9ybSBkYXRhIGFyZSBpbmNsdWRlZCBpbiB0aGUgYm9keSBvZiB0aGUgZm9ybSBhbmQgc2VudCB0byB0aGUgc2VydmVyLiJ9fSx7bmFtZToiZGlhbG9nIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJVc2Ugd2hlbiB0aGUgZm9ybSBpcyBpbnNpZGUgYSBbYDxkaWFsb2c+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2RpYWxvZykgZWxlbWVudCB0byBjbG9zZSB0aGUgZGlhbG9nIHdoZW4gc3VibWl0dGVkLiJ9fV19LHtuYW1lOiJmbSIsdmFsdWVzOlt7bmFtZToiZ2V0In0se25hbWU6InBvc3QifV19LHtuYW1lOiJzIix2YWx1ZXM6W3tuYW1lOiJyb3cifSx7bmFtZToiY29sIn0se25hbWU6InJvd2dyb3VwIn0se25hbWU6ImNvbGdyb3VwIn1dfSx7bmFtZToidCIsdmFsdWVzOlt7bmFtZToiaGlkZGVuIn0se25hbWU6InRleHQifSx7bmFtZToic2VhcmNoIn0se25hbWU6InRlbCJ9LHtuYW1lOiJ1cmwifSx7bmFtZToiZW1haWwifSx7bmFtZToicGFzc3dvcmQifSx7bmFtZToiZGF0ZXRpbWUifSx7bmFtZToiZGF0ZSJ9LHtuYW1lOiJtb250aCJ9LHtuYW1lOiJ3ZWVrIn0se25hbWU6InRpbWUifSx7bmFtZToiZGF0ZXRpbWUtbG9jYWwifSx7bmFtZToibnVtYmVyIn0se25hbWU6InJhbmdlIn0se25hbWU6ImNvbG9yIn0se25hbWU6ImNoZWNrYm94In0se25hbWU6InJhZGlvIn0se25hbWU6ImZpbGUifSx7bmFtZToic3VibWl0In0se25hbWU6ImltYWdlIn0se25hbWU6InJlc2V0In0se25hbWU6ImJ1dHRvbiJ9XX0se25hbWU6ImltIix2YWx1ZXM6W3tuYW1lOiJ2ZXJiYXRpbSJ9LHtuYW1lOiJsYXRpbiJ9LHtuYW1lOiJsYXRpbi1uYW1lIn0se25hbWU6ImxhdGluLXByb3NlIn0se25hbWU6ImZ1bGwtd2lkdGgtbGF0aW4ifSx7bmFtZToia2FuYSJ9LHtuYW1lOiJrYW5hLW5hbWUifSx7bmFtZToia2F0YWthbmEifSx7bmFtZToibnVtZXJpYyJ9LHtuYW1lOiJ0ZWwifSx7bmFtZToiZW1haWwifSx7bmFtZToidXJsIn1dfSx7bmFtZToiYnQiLHZhbHVlczpbe25hbWU6ImJ1dHRvbiJ9LHtuYW1lOiJzdWJtaXQifSx7bmFtZToicmVzZXQifSx7bmFtZToibWVudSJ9XX0se25hbWU6Imx0Iix2YWx1ZXM6W3tuYW1lOiIxIn0se25hbWU6ImEifSx7bmFtZToiQSJ9LHtuYW1lOiJpIn0se25hbWU6IkkifV19LHtuYW1lOiJtdCIsdmFsdWVzOlt7bmFtZToiY29udGV4dCJ9LHtuYW1lOiJ0b29sYmFyIn1dfSx7bmFtZToibWl0Iix2YWx1ZXM6W3tuYW1lOiJjb21tYW5kIn0se25hbWU6ImNoZWNrYm94In0se25hbWU6InJhZGlvIn1dfSx7bmFtZToiZXQiLHZhbHVlczpbe25hbWU6ImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCJ9LHtuYW1lOiJtdWx0aXBhcnQvZm9ybS1kYXRhIn0se25hbWU6InRleHQvcGxhaW4ifV19LHtuYW1lOiJ0ayIsdmFsdWVzOlt7bmFtZToic3VidGl0bGVzIn0se25hbWU6ImNhcHRpb25zIn0se25hbWU6ImRlc2NyaXB0aW9ucyJ9LHtuYW1lOiJjaGFwdGVycyJ9LHtuYW1lOiJtZXRhZGF0YSJ9XX0se25hbWU6InBsIix2YWx1ZXM6W3tuYW1lOiJub25lIn0se25hbWU6Im1ldGFkYXRhIn0se25hbWU6ImF1dG8ifV19LHtuYW1lOiJzaCIsdmFsdWVzOlt7bmFtZToiY2lyY2xlIn0se25hbWU6ImRlZmF1bHQifSx7bmFtZToicG9seSJ9LHtuYW1lOiJyZWN0In1dfSx7bmFtZToieG8iLHZhbHVlczpbe25hbWU6ImFub255bW91cyJ9LHtuYW1lOiJ1c2UtY3JlZGVudGlhbHMifV19LHtuYW1lOiJzYiIsdmFsdWVzOlt7bmFtZToiYWxsb3ctZm9ybXMifSx7bmFtZToiYWxsb3ctbW9kYWxzIn0se25hbWU6ImFsbG93LXBvaW50ZXItbG9jayJ9LHtuYW1lOiJhbGxvdy1wb3B1cHMifSx7bmFtZToiYWxsb3ctcG9wdXBzLXRvLWVzY2FwZS1zYW5kYm94In0se25hbWU6ImFsbG93LXNhbWUtb3JpZ2luIn0se25hbWU6ImFsbG93LXNjcmlwdHMifSx7bmFtZToiYWxsb3ctdG9wLW5hdmlnYXRpb24ifV19LHtuYW1lOiJ0cmlzdGF0ZSIsdmFsdWVzOlt7bmFtZToidHJ1ZSJ9LHtuYW1lOiJmYWxzZSJ9LHtuYW1lOiJtaXhlZCJ9LHtuYW1lOiJ1bmRlZmluZWQifV19LHtuYW1lOiJpbnB1dGF1dG9jb21wbGV0ZSIsdmFsdWVzOlt7bmFtZToiYWRkaXRpb25hbC1uYW1lIn0se25hbWU6ImFkZHJlc3MtbGV2ZWwxIn0se25hbWU6ImFkZHJlc3MtbGV2ZWwyIn0se25hbWU6ImFkZHJlc3MtbGV2ZWwzIn0se25hbWU6ImFkZHJlc3MtbGV2ZWw0In0se25hbWU6ImFkZHJlc3MtbGluZTEifSx7bmFtZToiYWRkcmVzcy1saW5lMiJ9LHtuYW1lOiJhZGRyZXNzLWxpbmUzIn0se25hbWU6ImJkYXkifSx7bmFtZToiYmRheS15ZWFyIn0se25hbWU6ImJkYXktZGF5In0se25hbWU6ImJkYXktbW9udGgifSx7bmFtZToiYmlsbGluZyJ9LHtuYW1lOiJjYy1hZGRpdGlvbmFsLW5hbWUifSx7bmFtZToiY2MtY3NjIn0se25hbWU6ImNjLWV4cCJ9LHtuYW1lOiJjYy1leHAtbW9udGgifSx7bmFtZToiY2MtZXhwLXllYXIifSx7bmFtZToiY2MtZmFtaWx5LW5hbWUifSx7bmFtZToiY2MtZ2l2ZW4tbmFtZSJ9LHtuYW1lOiJjYy1uYW1lIn0se25hbWU6ImNjLW51bWJlciJ9LHtuYW1lOiJjYy10eXBlIn0se25hbWU6ImNvdW50cnkifSx7bmFtZToiY291bnRyeS1uYW1lIn0se25hbWU6ImN1cnJlbnQtcGFzc3dvcmQifSx7bmFtZToiZW1haWwifSx7bmFtZToiZmFtaWx5LW5hbWUifSx7bmFtZToiZmF4In0se25hbWU6ImdpdmVuLW5hbWUifSx7bmFtZToiaG9tZSJ9LHtuYW1lOiJob25vcmlmaWMtcHJlZml4In0se25hbWU6Imhvbm9yaWZpYy1zdWZmaXgifSx7bmFtZToiaW1wcCJ9LHtuYW1lOiJsYW5ndWFnZSJ9LHtuYW1lOiJtb2JpbGUifSx7bmFtZToibmFtZSJ9LHtuYW1lOiJuZXctcGFzc3dvcmQifSx7bmFtZToibmlja25hbWUifSx7bmFtZToib3JnYW5pemF0aW9uIn0se25hbWU6Im9yZ2FuaXphdGlvbi10aXRsZSJ9LHtuYW1lOiJwYWdlciJ9LHtuYW1lOiJwaG90byJ9LHtuYW1lOiJwb3N0YWwtY29kZSJ9LHtuYW1lOiJzZXgifSx7bmFtZToic2hpcHBpbmcifSx7bmFtZToic3RyZWV0LWFkZHJlc3MifSx7bmFtZToidGVsLWFyZWEtY29kZSJ9LHtuYW1lOiJ0ZWwifSx7bmFtZToidGVsLWNvdW50cnktY29kZSJ9LHtuYW1lOiJ0ZWwtZXh0ZW5zaW9uIn0se25hbWU6InRlbC1sb2NhbCJ9LHtuYW1lOiJ0ZWwtbG9jYWwtcHJlZml4In0se25hbWU6InRlbC1sb2NhbC1zdWZmaXgifSx7bmFtZToidGVsLW5hdGlvbmFsIn0se25hbWU6InRyYW5zYWN0aW9uLWFtb3VudCJ9LHtuYW1lOiJ0cmFuc2FjdGlvbi1jdXJyZW5jeSJ9LHtuYW1lOiJ1cmwifSx7bmFtZToidXNlcm5hbWUifSx7bmFtZToid29yayJ9XX0se25hbWU6ImF1dG9jb21wbGV0ZSIsdmFsdWVzOlt7bmFtZToiaW5saW5lIn0se25hbWU6Imxpc3QifSx7bmFtZToiYm90aCJ9LHtuYW1lOiJub25lIn1dfSx7bmFtZToiY3VycmVudCIsdmFsdWVzOlt7bmFtZToicGFnZSJ9LHtuYW1lOiJzdGVwIn0se25hbWU6ImxvY2F0aW9uIn0se25hbWU6ImRhdGUifSx7bmFtZToidGltZSJ9LHtuYW1lOiJ0cnVlIn0se25hbWU6ImZhbHNlIn1dfSx7bmFtZToiZHJvcGVmZmVjdCIsdmFsdWVzOlt7bmFtZToiY29weSJ9LHtuYW1lOiJtb3ZlIn0se25hbWU6ImxpbmsifSx7bmFtZToiZXhlY3V0ZSJ9LHtuYW1lOiJwb3B1cCJ9LHtuYW1lOiJub25lIn1dfSx7bmFtZToiaW52YWxpZCIsdmFsdWVzOlt7bmFtZToiZ3JhbW1hciJ9LHtuYW1lOiJmYWxzZSJ9LHtuYW1lOiJzcGVsbGluZyJ9LHtuYW1lOiJ0cnVlIn1dfSx7bmFtZToibGl2ZSIsdmFsdWVzOlt7bmFtZToib2ZmIn0se25hbWU6InBvbGl0ZSJ9LHtuYW1lOiJhc3NlcnRpdmUifV19LHtuYW1lOiJvcmllbnRhdGlvbiIsdmFsdWVzOlt7bmFtZToidmVydGljYWwifSx7bmFtZToiaG9yaXpvbnRhbCJ9LHtuYW1lOiJ1bmRlZmluZWQifV19LHtuYW1lOiJyZWxldmFudCIsdmFsdWVzOlt7bmFtZToiYWRkaXRpb25zIn0se25hbWU6InJlbW92YWxzIn0se25hbWU6InRleHQifSx7bmFtZToiYWxsIn0se25hbWU6ImFkZGl0aW9ucyB0ZXh0In1dfSx7bmFtZToic29ydCIsdmFsdWVzOlt7bmFtZToiYXNjZW5kaW5nIn0se25hbWU6ImRlc2NlbmRpbmcifSx7bmFtZToibm9uZSJ9LHtuYW1lOiJvdGhlciJ9XX0se25hbWU6InJvbGVzIix2YWx1ZXM6W3tuYW1lOiJhbGVydCJ9LHtuYW1lOiJhbGVydGRpYWxvZyJ9LHtuYW1lOiJidXR0b24ifSx7bmFtZToiY2hlY2tib3gifSx7bmFtZToiZGlhbG9nIn0se25hbWU6ImdyaWRjZWxsIn0se25hbWU6ImxpbmsifSx7bmFtZToibG9nIn0se25hbWU6Im1hcnF1ZWUifSx7bmFtZToibWVudWl0ZW0ifSx7bmFtZToibWVudWl0ZW1jaGVja2JveCJ9LHtuYW1lOiJtZW51aXRlbXJhZGlvIn0se25hbWU6Im9wdGlvbiJ9LHtuYW1lOiJwcm9ncmVzc2JhciJ9LHtuYW1lOiJyYWRpbyJ9LHtuYW1lOiJzY3JvbGxiYXIifSx7bmFtZToic2VhcmNoYm94In0se25hbWU6InNsaWRlciJ9LHtuYW1lOiJzcGluYnV0dG9uIn0se25hbWU6InN0YXR1cyJ9LHtuYW1lOiJzd2l0Y2gifSx7bmFtZToidGFiIn0se25hbWU6InRhYnBhbmVsIn0se25hbWU6InRleHRib3gifSx7bmFtZToidGltZXIifSx7bmFtZToidG9vbHRpcCJ9LHtuYW1lOiJ0cmVlaXRlbSJ9LHtuYW1lOiJjb21ib2JveCJ9LHtuYW1lOiJncmlkIn0se25hbWU6Imxpc3Rib3gifSx7bmFtZToibWVudSJ9LHtuYW1lOiJtZW51YmFyIn0se25hbWU6InJhZGlvZ3JvdXAifSx7bmFtZToidGFibGlzdCJ9LHtuYW1lOiJ0cmVlIn0se25hbWU6InRyZWVncmlkIn0se25hbWU6ImFwcGxpY2F0aW9uIn0se25hbWU6ImFydGljbGUifSx7bmFtZToiY2VsbCJ9LHtuYW1lOiJjb2x1bW5oZWFkZXIifSx7bmFtZToiZGVmaW5pdGlvbiJ9LHtuYW1lOiJkaXJlY3RvcnkifSx7bmFtZToiZG9jdW1lbnQifSx7bmFtZToiZmVlZCJ9LHtuYW1lOiJmaWd1cmUifSx7bmFtZToiZ3JvdXAifSx7bmFtZToiaGVhZGluZyJ9LHtuYW1lOiJpbWcifSx7bmFtZToibGlzdCJ9LHtuYW1lOiJsaXN0aXRlbSJ9LHtuYW1lOiJtYXRoIn0se25hbWU6Im5vbmUifSx7bmFtZToibm90ZSJ9LHtuYW1lOiJwcmVzZW50YXRpb24ifSx7bmFtZToicmVnaW9uIn0se25hbWU6InJvdyJ9LHtuYW1lOiJyb3dncm91cCJ9LHtuYW1lOiJyb3doZWFkZXIifSx7bmFtZToic2VwYXJhdG9yIn0se25hbWU6InRhYmxlIn0se25hbWU6InRlcm0ifSx7bmFtZToidGV4dCJ9LHtuYW1lOiJ0b29sYmFyIn0se25hbWU6ImJhbm5lciJ9LHtuYW1lOiJjb21wbGVtZW50YXJ5In0se25hbWU6ImNvbnRlbnRpbmZvIn0se25hbWU6ImZvcm0ifSx7bmFtZToibWFpbiJ9LHtuYW1lOiJuYXZpZ2F0aW9uIn0se25hbWU6InJlZ2lvbiJ9LHtuYW1lOiJzZWFyY2gifSx7bmFtZToiZG9jLWFic3RyYWN0In0se25hbWU6ImRvYy1hY2tub3dsZWRnbWVudHMifSx7bmFtZToiZG9jLWFmdGVyd29yZCJ9LHtuYW1lOiJkb2MtYXBwZW5kaXgifSx7bmFtZToiZG9jLWJhY2tsaW5rIn0se25hbWU6ImRvYy1iaWJsaW9lbnRyeSJ9LHtuYW1lOiJkb2MtYmlibGlvZ3JhcGh5In0se25hbWU6ImRvYy1iaWJsaW9yZWYifSx7bmFtZToiZG9jLWNoYXB0ZXIifSx7bmFtZToiZG9jLWNvbG9waG9uIn0se25hbWU6ImRvYy1jb25jbHVzaW9uIn0se25hbWU6ImRvYy1jb3ZlciJ9LHtuYW1lOiJkb2MtY3JlZGl0In0se25hbWU6ImRvYy1jcmVkaXRzIn0se25hbWU6ImRvYy1kZWRpY2F0aW9uIn0se25hbWU6ImRvYy1lbmRub3RlIn0se25hbWU6ImRvYy1lbmRub3RlcyJ9LHtuYW1lOiJkb2MtZXBpZ3JhcGgifSx7bmFtZToiZG9jLWVwaWxvZ3VlIn0se25hbWU6ImRvYy1lcnJhdGEifSx7bmFtZToiZG9jLWV4YW1wbGUifSx7bmFtZToiZG9jLWZvb3Rub3RlIn0se25hbWU6ImRvYy1mb3Jld29yZCJ9LHtuYW1lOiJkb2MtZ2xvc3NhcnkifSx7bmFtZToiZG9jLWdsb3NzcmVmIn0se25hbWU6ImRvYy1pbmRleCJ9LHtuYW1lOiJkb2MtaW50cm9kdWN0aW9uIn0se25hbWU6ImRvYy1ub3RlcmVmIn0se25hbWU6ImRvYy1ub3RpY2UifSx7bmFtZToiZG9jLXBhZ2VicmVhayJ9LHtuYW1lOiJkb2MtcGFnZWxpc3QifSx7bmFtZToiZG9jLXBhcnQifSx7bmFtZToiZG9jLXByZWZhY2UifSx7bmFtZToiZG9jLXByb2xvZ3VlIn0se25hbWU6ImRvYy1wdWxscXVvdGUifSx7bmFtZToiZG9jLXFuYSJ9LHtuYW1lOiJkb2Mtc3VidGl0bGUifSx7bmFtZToiZG9jLXRpcCJ9LHtuYW1lOiJkb2MtdG9jIn1dfSx7bmFtZToibWV0YW5hbWVzIix2YWx1ZXM6W3tuYW1lOiJhcHBsaWNhdGlvbi1uYW1lIn0se25hbWU6ImF1dGhvciJ9LHtuYW1lOiJkZXNjcmlwdGlvbiJ9LHtuYW1lOiJmb3JtYXQtZGV0ZWN0aW9uIn0se25hbWU6ImdlbmVyYXRvciJ9LHtuYW1lOiJrZXl3b3JkcyJ9LHtuYW1lOiJwdWJsaXNoZXIifSx7bmFtZToicmVmZXJyZXIifSx7bmFtZToicm9ib3RzIn0se25hbWU6InRoZW1lLWNvbG9yIn0se25hbWU6InZpZXdwb3J0In1dfSx7bmFtZToiaGFzcG9wdXAiLHZhbHVlczpbe25hbWU6ImZhbHNlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiIoZGVmYXVsdCkgSW5kaWNhdGVzIHRoZSBlbGVtZW50IGRvZXMgbm90IGhhdmUgYSBwb3B1cC4ifX0se25hbWU6InRydWUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkluZGljYXRlcyB0aGUgcG9wdXAgaXMgYSBtZW51LiJ9fSx7bmFtZToibWVudSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiSW5kaWNhdGVzIHRoZSBwb3B1cCBpcyBhIG1lbnUuIn19LHtuYW1lOiJsaXN0Ym94IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJJbmRpY2F0ZXMgdGhlIHBvcHVwIGlzIGEgbGlzdGJveC4ifX0se25hbWU6InRyZWUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkluZGljYXRlcyB0aGUgcG9wdXAgaXMgYSB0cmVlLiJ9fSx7bmFtZToiZ3JpZCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiSW5kaWNhdGVzIHRoZSBwb3B1cCBpcyBhIGdyaWQuIn19LHtuYW1lOiJkaWFsb2ciLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkluZGljYXRlcyB0aGUgcG9wdXAgaXMgYSBkaWFsb2cuIn19XX1dfSx3cz1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSl7dGhpcy5kYXRhUHJvdmlkZXJzPVtdLHRoaXMuc2V0RGF0YVByb3ZpZGVycyghMSE9PWUudXNlRGVmYXVsdERhdGFQcm92aWRlcixlLmN1c3RvbURhdGFQcm92aWRlcnN8fFtdKX1yZXR1cm4gZS5wcm90b3R5cGUuc2V0RGF0YVByb3ZpZGVycz1mdW5jdGlvbihlLHQpe3ZhciBuO3RoaXMuZGF0YVByb3ZpZGVycz1bXSxlJiZ0aGlzLmRhdGFQcm92aWRlcnMucHVzaChuZXcgU28oImh0bWw1IixicykpLChuPXRoaXMuZGF0YVByb3ZpZGVycykucHVzaC5hcHBseShuLHQpfSxlLnByb3RvdHlwZS5nZXREYXRhUHJvdmlkZXJzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZGF0YVByb3ZpZGVyc30sZX0oKSxfcz17fTtmdW5jdGlvbiB2cyhlLHQpe3JldHVybiBuZXcgU28oZSx0KX1zZWxmLm9ubWVzc2FnZT0oKT0+e0FyKCgoZSx0KT0+bmV3IGNsYXNze19jdHg7X2xhbmd1YWdlU2VydmljZTtfbGFuZ3VhZ2VTZXR0aW5ncztfbGFuZ3VhZ2VJZDtjb25zdHJ1Y3RvcihlLHQpe3RoaXMuX2N0eD1lLHRoaXMuX2xhbmd1YWdlU2V0dGluZ3M9dC5sYW5ndWFnZVNldHRpbmdzLHRoaXMuX2xhbmd1YWdlSWQ9dC5sYW5ndWFnZUlkO2NvbnN0IG49dGhpcy5fbGFuZ3VhZ2VTZXR0aW5ncy5kYXRhLHI9bj8udXNlRGVmYXVsdERhdGFQcm92aWRlcixpPVtdO2lmKG4/LmRhdGFQcm92aWRlcnMpZm9yKGNvbnN0IGUgaW4gbi5kYXRhUHJvdmlkZXJzKWkucHVzaCh2cyhlLG4uZGF0YVByb3ZpZGVyc1tlXSkpO3RoaXMuX2xhbmd1YWdlU2VydmljZT1mdW5jdGlvbihlKXt2b2lkIDA9PT1lJiYoZT1fcyk7dmFyIHQ9bmV3IHdzKGUpLG49bmV3IEJvKGUsdCkscj1uZXcgRG8oZSx0KTtyZXR1cm57c2V0RGF0YVByb3ZpZGVyczp0LnNldERhdGFQcm92aWRlcnMuYmluZCh0KSxjcmVhdGVTY2FubmVyOm9vLHBhcnNlSFRNTERvY3VtZW50OmZ1bmN0aW9uKGUpe3JldHVybiB1byhlLmdldFRleHQoKSl9LGRvQ29tcGxldGU6ci5kb0NvbXBsZXRlLmJpbmQociksZG9Db21wbGV0ZTI6ci5kb0NvbXBsZXRlMi5iaW5kKHIpLHNldENvbXBsZXRpb25QYXJ0aWNpcGFudHM6ci5zZXRDb21wbGV0aW9uUGFydGljaXBhbnRzLmJpbmQociksZG9Ib3ZlcjpuLmRvSG92ZXIuYmluZChuKSxmb3JtYXQ6JG8sZmluZERvY3VtZW50SGlnaGxpZ2h0czphcyxmaW5kRG9jdW1lbnRMaW5rczppcyxmaW5kRG9jdW1lbnRTeW1ib2xzOmNzLGdldEZvbGRpbmdSYW5nZXM6bXMsZ2V0U2VsZWN0aW9uUmFuZ2VzOmZzLGRvUXVvdGVDb21wbGV0ZTpyLmRvUXVvdGVDb21wbGV0ZS5iaW5kKHIpLGRvVGFnQ29tcGxldGU6ci5kb1RhZ0NvbXBsZXRlLmJpbmQociksZG9SZW5hbWU6ZHMsZmluZE1hdGNoaW5nVGFnUG9zaXRpb246dXMsZmluZE9uVHlwZVJlbmFtZVJhbmdlczpwcyxmaW5kTGlua2VkRWRpdGluZ1Jhbmdlczpwc319KHt1c2VEZWZhdWx0RGF0YVByb3ZpZGVyOnIsY3VzdG9tRGF0YVByb3ZpZGVyczppfSl9YXN5bmMgZG9Db21wbGV0ZShlLHQpe2xldCBuPXRoaXMuX2dldFRleHREb2N1bWVudChlKTtpZighbilyZXR1cm4gbnVsbDtsZXQgcj10aGlzLl9sYW5ndWFnZVNlcnZpY2UucGFyc2VIVE1MRG9jdW1lbnQobik7cmV0dXJuIFByb21pc2UucmVzb2x2ZSh0aGlzLl9sYW5ndWFnZVNlcnZpY2UuZG9Db21wbGV0ZShuLHQscix0aGlzLl9sYW5ndWFnZVNldHRpbmdzJiZ0aGlzLl9sYW5ndWFnZVNldHRpbmdzLnN1Z2dlc3QpKX1hc3luYyBmb3JtYXQoZSx0LG4pe2xldCByPXRoaXMuX2dldFRleHREb2N1bWVudChlKTtpZighcilyZXR1cm5bXTtsZXQgaT17Li4udGhpcy5fbGFuZ3VhZ2VTZXR0aW5ncy5mb3JtYXQsLi4ubn0sYT10aGlzLl9sYW5ndWFnZVNlcnZpY2UuZm9ybWF0KHIsdCxpKTtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGEpfWFzeW5jIGRvSG92ZXIoZSx0KXtsZXQgbj10aGlzLl9nZXRUZXh0RG9jdW1lbnQoZSk7aWYoIW4pcmV0dXJuIG51bGw7bGV0IHI9dGhpcy5fbGFuZ3VhZ2VTZXJ2aWNlLnBhcnNlSFRNTERvY3VtZW50KG4pLGk9dGhpcy5fbGFuZ3VhZ2VTZXJ2aWNlLmRvSG92ZXIobix0LHIpO3JldHVybiBQcm9taXNlLnJlc29sdmUoaSl9YXN5bmMgZmluZERvY3VtZW50SGlnaGxpZ2h0cyhlLHQpe2xldCBuPXRoaXMuX2dldFRleHREb2N1bWVudChlKTtpZighbilyZXR1cm5bXTtsZXQgcj10aGlzLl9sYW5ndWFnZVNlcnZpY2UucGFyc2VIVE1MRG9jdW1lbnQobiksaT10aGlzLl9sYW5ndWFnZVNlcnZpY2UuZmluZERvY3VtZW50SGlnaGxpZ2h0cyhuLHQscik7cmV0dXJuIFByb21pc2UucmVzb2x2ZShpKX1hc3luYyBmaW5kRG9jdW1lbnRMaW5rcyhlKXtsZXQgdD10aGlzLl9nZXRUZXh0RG9jdW1lbnQoZSk7aWYoIXQpcmV0dXJuW107bGV0IG49dGhpcy5fbGFuZ3VhZ2VTZXJ2aWNlLmZpbmREb2N1bWVudExpbmtzKHQsbnVsbCk7cmV0dXJuIFByb21pc2UucmVzb2x2ZShuKX1hc3luYyBmaW5kRG9jdW1lbnRTeW1ib2xzKGUpe2xldCB0PXRoaXMuX2dldFRleHREb2N1bWVudChlKTtpZighdClyZXR1cm5bXTtsZXQgbj10aGlzLl9sYW5ndWFnZVNlcnZpY2UucGFyc2VIVE1MRG9jdW1lbnQodCkscj10aGlzLl9sYW5ndWFnZVNlcnZpY2UuZmluZERvY3VtZW50U3ltYm9scyh0LG4pO3JldHVybiBQcm9taXNlLnJlc29sdmUocil9YXN5bmMgZ2V0Rm9sZGluZ1JhbmdlcyhlLHQpe2xldCBuPXRoaXMuX2dldFRleHREb2N1bWVudChlKTtpZighbilyZXR1cm5bXTtsZXQgcj10aGlzLl9sYW5ndWFnZVNlcnZpY2UuZ2V0Rm9sZGluZ1JhbmdlcyhuLHQpO3JldHVybiBQcm9taXNlLnJlc29sdmUocil9YXN5bmMgZ2V0U2VsZWN0aW9uUmFuZ2VzKGUsdCl7bGV0IG49dGhpcy5fZ2V0VGV4dERvY3VtZW50KGUpO2lmKCFuKXJldHVybltdO2xldCByPXRoaXMuX2xhbmd1YWdlU2VydmljZS5nZXRTZWxlY3Rpb25SYW5nZXMobix0KTtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHIpfWFzeW5jIGRvUmVuYW1lKGUsdCxuKXtsZXQgcj10aGlzLl9nZXRUZXh0RG9jdW1lbnQoZSk7aWYoIXIpcmV0dXJuIG51bGw7bGV0IGk9dGhpcy5fbGFuZ3VhZ2VTZXJ2aWNlLnBhcnNlSFRNTERvY3VtZW50KHIpLGE9dGhpcy5fbGFuZ3VhZ2VTZXJ2aWNlLmRvUmVuYW1lKHIsdCxuLGkpO3JldHVybiBQcm9taXNlLnJlc29sdmUoYSl9X2dldFRleHREb2N1bWVudChlKXtsZXQgdD10aGlzLl9jdHguZ2V0TWlycm9yTW9kZWxzKCk7Zm9yKGxldCBuIG9mIHQpaWYobi51cmkudG9TdHJpbmcoKT09PWUpcmV0dXJuIE1hLmNyZWF0ZShlLHRoaXMuX2xhbmd1YWdlSWQsbi52ZXJzaW9uLG4uZ2V0VmFsdWUoKSk7cmV0dXJuIG51bGx9fShlLHQpKSl9fSgpOwoK', null, false);
|
|
3
|
+
var WorkerFactory = createBase64WorkerFactory('Lyogcm9sbHVwLXBsdWdpbi13ZWItd29ya2VyLWxvYWRlciAqLwohZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7Y29uc3QgZT1uZXcgY2xhc3N7Y29uc3RydWN0b3IoKXt0aGlzLmxpc3RlbmVycz1bXSx0aGlzLnVuZXhwZWN0ZWRFcnJvckhhbmRsZXI9ZnVuY3Rpb24oZSl7c2V0VGltZW91dCgoKCk9PntpZihlLnN0YWNrKXtpZihhLmlzRXJyb3JOb1RlbGVtZXRyeShlKSl0aHJvdyBuZXcgYShlLm1lc3NhZ2UrIlxuXG4iK2Uuc3RhY2spO3Rocm93IG5ldyBFcnJvcihlLm1lc3NhZ2UrIlxuXG4iK2Uuc3RhY2spfXRocm93IGV9KSwwKX19ZW1pdChlKXt0aGlzLmxpc3RlbmVycy5mb3JFYWNoKCh0PT57dChlKX0pKX1vblVuZXhwZWN0ZWRFcnJvcihlKXt0aGlzLnVuZXhwZWN0ZWRFcnJvckhhbmRsZXIoZSksdGhpcy5lbWl0KGUpfW9uVW5leHBlY3RlZEV4dGVybmFsRXJyb3IoZSl7dGhpcy51bmV4cGVjdGVkRXJyb3JIYW5kbGVyKGUpfX07ZnVuY3Rpb24gdCh0KXsoZnVuY3Rpb24oZSl7aWYoZSBpbnN0YW5jZW9mIGkpcmV0dXJuITA7cmV0dXJuIGUgaW5zdGFuY2VvZiBFcnJvciYmZS5uYW1lPT09ciYmZS5tZXNzYWdlPT09cn0pKHQpfHxlLm9uVW5leHBlY3RlZEVycm9yKHQpfWZ1bmN0aW9uIG4oZSl7aWYoZSBpbnN0YW5jZW9mIEVycm9yKXtjb25zdHtuYW1lOnQsbWVzc2FnZTpufT1lO3JldHVybnskaXNFcnJvcjohMCxuYW1lOnQsbWVzc2FnZTpuLHN0YWNrOmUuc3RhY2t0cmFjZXx8ZS5zdGFjayxub1RlbGVtZXRyeTphLmlzRXJyb3JOb1RlbGVtZXRyeShlKX19cmV0dXJuIGV9Y29uc3Qgcj0iQ2FuY2VsZWQiO2NsYXNzIGkgZXh0ZW5kcyBFcnJvcntjb25zdHJ1Y3Rvcigpe3N1cGVyKHIpLHRoaXMubmFtZT10aGlzLm1lc3NhZ2V9fWNsYXNzIGEgZXh0ZW5kcyBFcnJvcntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKSx0aGlzLm5hbWU9IkVycm9yTm9UZWxlbWV0cnkifXN0YXRpYyBmcm9tRXJyb3IoZSl7aWYoZSBpbnN0YW5jZW9mIGEpcmV0dXJuIGU7Y29uc3QgdD1uZXcgYTtyZXR1cm4gdC5tZXNzYWdlPWUubWVzc2FnZSx0LnN0YWNrPWUuc3RhY2ssdH1zdGF0aWMgaXNFcnJvck5vVGVsZW1ldHJ5KGUpe3JldHVybiJFcnJvck5vVGVsZW1ldHJ5Ij09PWUubmFtZX19ZnVuY3Rpb24gbyhlKXtjb25zdCB0PXRoaXM7bGV0IG4scj0hMTtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gcnx8KHI9ITAsbj1lLmFwcGx5KHQsYXJndW1lbnRzKSksbn19dmFyIHM7IWZ1bmN0aW9uKGUpe2UuaXM9ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJiJvYmplY3QiPT10eXBlb2YgZSYmImZ1bmN0aW9uIj09dHlwZW9mIGVbU3ltYm9sLml0ZXJhdG9yXX07Y29uc3QgdD1PYmplY3QuZnJlZXplKFtdKTtmdW5jdGlvbiBuKHQsbj1OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFkpe2NvbnN0IHI9W107aWYoMD09PW4pcmV0dXJuW3IsdF07Y29uc3QgaT10W1N5bWJvbC5pdGVyYXRvcl0oKTtmb3IobGV0IHQ9MDt0PG47dCsrKXtjb25zdCB0PWkubmV4dCgpO2lmKHQuZG9uZSlyZXR1cm5bcixlLmVtcHR5KCldO3IucHVzaCh0LnZhbHVlKX1yZXR1cm5bcix7W1N5bWJvbC5pdGVyYXRvcl06KCk9Pml9XX1lLmVtcHR5PWZ1bmN0aW9uKCl7cmV0dXJuIHR9LGUuc2luZ2xlPWZ1bmN0aW9uKihlKXt5aWVsZCBlfSxlLmZyb209ZnVuY3Rpb24oZSl7cmV0dXJuIGV8fHR9LGUuaXNFbXB0eT1mdW5jdGlvbihlKXtyZXR1cm4hZXx8ITA9PT1lW1N5bWJvbC5pdGVyYXRvcl0oKS5uZXh0KCkuZG9uZX0sZS5maXJzdD1mdW5jdGlvbihlKXtyZXR1cm4gZVtTeW1ib2wuaXRlcmF0b3JdKCkubmV4dCgpLnZhbHVlfSxlLnNvbWU9ZnVuY3Rpb24oZSx0KXtmb3IoY29uc3QgbiBvZiBlKWlmKHQobikpcmV0dXJuITA7cmV0dXJuITF9LGUuZmluZD1mdW5jdGlvbihlLHQpe2Zvcihjb25zdCBuIG9mIGUpaWYodChuKSlyZXR1cm4gbn0sZS5maWx0ZXI9ZnVuY3Rpb24qKGUsdCl7Zm9yKGNvbnN0IG4gb2YgZSl0KG4pJiYoeWllbGQgbil9LGUubWFwPWZ1bmN0aW9uKihlLHQpe2xldCBuPTA7Zm9yKGNvbnN0IHIgb2YgZSl5aWVsZCB0KHIsbisrKX0sZS5jb25jYXQ9ZnVuY3Rpb24qKC4uLmUpe2Zvcihjb25zdCB0IG9mIGUpZm9yKGNvbnN0IGUgb2YgdCl5aWVsZCBlfSxlLmNvbmNhdE5lc3RlZD1mdW5jdGlvbiooZSl7Zm9yKGNvbnN0IHQgb2YgZSlmb3IoY29uc3QgZSBvZiB0KXlpZWxkIGV9LGUucmVkdWNlPWZ1bmN0aW9uKGUsdCxuKXtsZXQgcj1uO2Zvcihjb25zdCBuIG9mIGUpcj10KHIsbik7cmV0dXJuIHJ9LGUuZm9yRWFjaD1mdW5jdGlvbihlLHQpe2xldCBuPTA7Zm9yKGNvbnN0IHIgb2YgZSl0KHIsbisrKX0sZS5zbGljZT1mdW5jdGlvbiooZSx0LG49ZS5sZW5ndGgpe2Zvcih0PDAmJih0Kz1lLmxlbmd0aCksbjwwP24rPWUubGVuZ3RoOm4+ZS5sZW5ndGgmJihuPWUubGVuZ3RoKTt0PG47dCsrKXlpZWxkIGVbdF19LGUuY29uc3VtZT1uLGUuY29sbGVjdD1mdW5jdGlvbihlKXtyZXR1cm4gbihlKVswXX0sZS5lcXVhbHM9ZnVuY3Rpb24oZSx0LG49KChlLHQpPT5lPT09dCkpe2NvbnN0IHI9ZVtTeW1ib2wuaXRlcmF0b3JdKCksaT10W1N5bWJvbC5pdGVyYXRvcl0oKTtmb3IoOzspe2NvbnN0IGU9ci5uZXh0KCksdD1pLm5leHQoKTtpZihlLmRvbmUhPT10LmRvbmUpcmV0dXJuITE7aWYoZS5kb25lKXJldHVybiEwO2lmKCFuKGUudmFsdWUsdC52YWx1ZSkpcmV0dXJuITF9fX0oc3x8KHM9e30pKTtjbGFzcyBsIGV4dGVuZHMgRXJyb3J7Y29uc3RydWN0b3IoZSl7c3VwZXIoYEVuY291bnRlcmVkIGVycm9ycyB3aGlsZSBkaXNwb3Npbmcgb2Ygc3RvcmUuIEVycm9yczogWyR7ZS5qb2luKCIsICIpfV1gKSx0aGlzLmVycm9ycz1lfX1mdW5jdGlvbiBjKGUpe2lmKHMuaXMoZSkpe2NvbnN0IHQ9W107Zm9yKGNvbnN0IG4gb2YgZSlpZihuKXRyeXtuLmRpc3Bvc2UoKX1jYXRjaChlKXt0LnB1c2goZSl9aWYoMT09PXQubGVuZ3RoKXRocm93IHRbMF07aWYodC5sZW5ndGg+MSl0aHJvdyBuZXcgbCh0KTtyZXR1cm4gQXJyYXkuaXNBcnJheShlKT9bXTplfWlmKGUpcmV0dXJuIGUuZGlzcG9zZSgpLGV9ZnVuY3Rpb24gaChlKXtyZXR1cm57ZGlzcG9zZTpvKCgoKT0+e2UoKX0pKX19Y2xhc3MgZHtjb25zdHJ1Y3Rvcigpe3RoaXMuX3RvRGlzcG9zZT1uZXcgU2V0LHRoaXMuX2lzRGlzcG9zZWQ9ITF9ZGlzcG9zZSgpe3RoaXMuX2lzRGlzcG9zZWR8fCh0aGlzLl9pc0Rpc3Bvc2VkPSEwLHRoaXMuY2xlYXIoKSl9Z2V0IGlzRGlzcG9zZWQoKXtyZXR1cm4gdGhpcy5faXNEaXNwb3NlZH1jbGVhcigpe3RyeXtjKHRoaXMuX3RvRGlzcG9zZS52YWx1ZXMoKSl9ZmluYWxseXt0aGlzLl90b0Rpc3Bvc2UuY2xlYXIoKX19YWRkKGUpe2lmKCFlKXJldHVybiBlO2lmKGU9PT10aGlzKXRocm93IG5ldyBFcnJvcigiQ2Fubm90IHJlZ2lzdGVyIGEgZGlzcG9zYWJsZSBvbiBpdHNlbGYhIik7cmV0dXJuIHRoaXMuX2lzRGlzcG9zZWQ/ZC5ESVNBQkxFX0RJU1BPU0VEX1dBUk5JTkd8fGNvbnNvbGUud2FybihuZXcgRXJyb3IoIlRyeWluZyB0byBhZGQgYSBkaXNwb3NhYmxlIHRvIGEgRGlzcG9zYWJsZVN0b3JlIHRoYXQgaGFzIGFscmVhZHkgYmVlbiBkaXNwb3NlZCBvZi4gVGhlIGFkZGVkIG9iamVjdCB3aWxsIGJlIGxlYWtlZCEiKS5zdGFjayk6dGhpcy5fdG9EaXNwb3NlLmFkZChlKSxlfX1kLkRJU0FCTEVfRElTUE9TRURfV0FSTklORz0hMTtjbGFzcyB1e2NvbnN0cnVjdG9yKCl7dGhpcy5fc3RvcmU9bmV3IGQsdGhpcy5fc3RvcmV9ZGlzcG9zZSgpe3RoaXMuX3N0b3JlLmRpc3Bvc2UoKX1fcmVnaXN0ZXIoZSl7aWYoZT09PXRoaXMpdGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgcmVnaXN0ZXIgYSBkaXNwb3NhYmxlIG9uIGl0c2VsZiEiKTtyZXR1cm4gdGhpcy5fc3RvcmUuYWRkKGUpfX11Lk5vbmU9T2JqZWN0LmZyZWV6ZSh7ZGlzcG9zZSgpe319KTtjbGFzcyBwe2NvbnN0cnVjdG9yKCl7dGhpcy5kaXNwb3NlPSgpPT57fSx0aGlzLnVuc2V0PSgpPT57fSx0aGlzLmlzc2V0PSgpPT4hMX1zZXQoZSl7bGV0IHQ9ZTtyZXR1cm4gdGhpcy51bnNldD0oKT0+dD12b2lkIDAsdGhpcy5pc3NldD0oKT0+dm9pZCAwIT09dCx0aGlzLmRpc3Bvc2U9KCk9Pnt0JiYodCgpLHQ9dm9pZCAwKX0sdGhpc319Y2xhc3MgbXtjb25zdHJ1Y3RvcihlKXt0aGlzLmVsZW1lbnQ9ZSx0aGlzLm5leHQ9bS5VbmRlZmluZWQsdGhpcy5wcmV2PW0uVW5kZWZpbmVkfX1tLlVuZGVmaW5lZD1uZXcgbSh2b2lkIDApO2NsYXNzIGZ7Y29uc3RydWN0b3IoKXt0aGlzLl9maXJzdD1tLlVuZGVmaW5lZCx0aGlzLl9sYXN0PW0uVW5kZWZpbmVkLHRoaXMuX3NpemU9MH1nZXQgc2l6ZSgpe3JldHVybiB0aGlzLl9zaXplfWlzRW1wdHkoKXtyZXR1cm4gdGhpcy5fZmlyc3Q9PT1tLlVuZGVmaW5lZH1jbGVhcigpe2xldCBlPXRoaXMuX2ZpcnN0O2Zvcig7ZSE9PW0uVW5kZWZpbmVkOyl7Y29uc3QgdD1lLm5leHQ7ZS5wcmV2PW0uVW5kZWZpbmVkLGUubmV4dD1tLlVuZGVmaW5lZCxlPXR9dGhpcy5fZmlyc3Q9bS5VbmRlZmluZWQsdGhpcy5fbGFzdD1tLlVuZGVmaW5lZCx0aGlzLl9zaXplPTB9dW5zaGlmdChlKXtyZXR1cm4gdGhpcy5faW5zZXJ0KGUsITEpfXB1c2goZSl7cmV0dXJuIHRoaXMuX2luc2VydChlLCEwKX1faW5zZXJ0KGUsdCl7Y29uc3Qgbj1uZXcgbShlKTtpZih0aGlzLl9maXJzdD09PW0uVW5kZWZpbmVkKXRoaXMuX2ZpcnN0PW4sdGhpcy5fbGFzdD1uO2Vsc2UgaWYodCl7Y29uc3QgZT10aGlzLl9sYXN0O3RoaXMuX2xhc3Q9bixuLnByZXY9ZSxlLm5leHQ9bn1lbHNle2NvbnN0IGU9dGhpcy5fZmlyc3Q7dGhpcy5fZmlyc3Q9bixuLm5leHQ9ZSxlLnByZXY9bn10aGlzLl9zaXplKz0xO2xldCByPSExO3JldHVybigpPT57cnx8KHI9ITAsdGhpcy5fcmVtb3ZlKG4pKX19c2hpZnQoKXtpZih0aGlzLl9maXJzdCE9PW0uVW5kZWZpbmVkKXtjb25zdCBlPXRoaXMuX2ZpcnN0LmVsZW1lbnQ7cmV0dXJuIHRoaXMuX3JlbW92ZSh0aGlzLl9maXJzdCksZX19cG9wKCl7aWYodGhpcy5fbGFzdCE9PW0uVW5kZWZpbmVkKXtjb25zdCBlPXRoaXMuX2xhc3QuZWxlbWVudDtyZXR1cm4gdGhpcy5fcmVtb3ZlKHRoaXMuX2xhc3QpLGV9fV9yZW1vdmUoZSl7aWYoZS5wcmV2IT09bS5VbmRlZmluZWQmJmUubmV4dCE9PW0uVW5kZWZpbmVkKXtjb25zdCB0PWUucHJldjt0Lm5leHQ9ZS5uZXh0LGUubmV4dC5wcmV2PXR9ZWxzZSBlLnByZXY9PT1tLlVuZGVmaW5lZCYmZS5uZXh0PT09bS5VbmRlZmluZWQ/KHRoaXMuX2ZpcnN0PW0uVW5kZWZpbmVkLHRoaXMuX2xhc3Q9bS5VbmRlZmluZWQpOmUubmV4dD09PW0uVW5kZWZpbmVkPyh0aGlzLl9sYXN0PXRoaXMuX2xhc3QucHJldix0aGlzLl9sYXN0Lm5leHQ9bS5VbmRlZmluZWQpOmUucHJldj09PW0uVW5kZWZpbmVkJiYodGhpcy5fZmlyc3Q9dGhpcy5fZmlyc3QubmV4dCx0aGlzLl9maXJzdC5wcmV2PW0uVW5kZWZpbmVkKTt0aGlzLl9zaXplLT0xfSpbU3ltYm9sLml0ZXJhdG9yXSgpe2xldCBlPXRoaXMuX2ZpcnN0O2Zvcig7ZSE9PW0uVW5kZWZpbmVkOyl5aWVsZCBlLmVsZW1lbnQsZT1lLm5leHR9fWxldCBnPSJ1bmRlZmluZWQiIT10eXBlb2YgZG9jdW1lbnQmJmRvY3VtZW50LmxvY2F0aW9uJiZkb2N1bWVudC5sb2NhdGlvbi5oYXNoLmluZGV4T2YoInBzZXVkbz10cnVlIik+PTA7dmFyIGI7Y29uc3Qgdz0iZW4iO2xldCBfLHYseSxUPSExLGs9ITEsUz0hMSxDPSExLHg9dztjb25zdCBMPSJvYmplY3QiPT10eXBlb2Ygc2VsZj9zZWxmOiJvYmplY3QiPT10eXBlb2YgZ2xvYmFsP2dsb2JhbDp7fTtsZXQgRTt2b2lkIDAhPT1MLnZzY29kZSYmdm9pZCAwIT09TC52c2NvZGUucHJvY2Vzcz9FPUwudnNjb2RlLnByb2Nlc3M6InVuZGVmaW5lZCIhPXR5cGVvZiBwcm9jZXNzJiYoRT1wcm9jZXNzKTtjb25zdCBBPSJzdHJpbmciPT10eXBlb2YobnVsbD09PShiPW51bGw9PUU/dm9pZCAwOkUudmVyc2lvbnMpfHx2b2lkIDA9PT1iP3ZvaWQgMDpiLmVsZWN0cm9uKSYmInJlbmRlcmVyIj09PShudWxsPT1FP3ZvaWQgMDpFLnR5cGUpO2lmKCJvYmplY3QiIT10eXBlb2YgbmF2aWdhdG9yfHxBKWlmKCJvYmplY3QiPT10eXBlb2YgRSl7VD0id2luMzIiPT09RS5wbGF0Zm9ybSxrPSJkYXJ3aW4iPT09RS5wbGF0Zm9ybSxTPSJsaW51eCI9PT1FLnBsYXRmb3JtLFMmJkUuZW52LlNOQVAmJkUuZW52LlNOQVBfUkVWSVNJT04sRS5lbnYuQ0l8fEUuZW52LkJVSUxEX0FSVElGQUNUU1RBR0lOR0RJUkVDVE9SWSxfPXcseD13O2NvbnN0IGU9RS5lbnYuVlNDT0RFX05MU19DT05GSUc7aWYoZSl0cnl7Y29uc3QgdD1KU09OLnBhcnNlKGUpLG49dC5hdmFpbGFibGVMYW5ndWFnZXNbIioiXTtfPXQubG9jYWxlLHg9bnx8dyx2PXQuX3RyYW5zbGF0aW9uc0NvbmZpZ0ZpbGV9Y2F0Y2goZSl7fX1lbHNlIGNvbnNvbGUuZXJyb3IoIlVuYWJsZSB0byByZXNvbHZlIHBsYXRmb3JtLiIpO2Vsc2UgeT1uYXZpZ2F0b3IudXNlckFnZW50LFQ9eS5pbmRleE9mKCJXaW5kb3dzIik+PTAsaz15LmluZGV4T2YoIk1hY2ludG9zaCIpPj0wLCh5LmluZGV4T2YoIk1hY2ludG9zaCIpPj0wfHx5LmluZGV4T2YoImlQYWQiKT49MHx8eS5pbmRleE9mKCJpUGhvbmUiKT49MCkmJm5hdmlnYXRvci5tYXhUb3VjaFBvaW50cyYmbmF2aWdhdG9yLm1heFRvdWNoUG9pbnRzLFM9eS5pbmRleE9mKCJMaW51eCIpPj0wLEM9ITAsZnVuY3Rpb24oZSx0LC4uLm4peyFmdW5jdGlvbihlLHQpe2xldCBuO249MD09PXQubGVuZ3RoP2U6ZS5yZXBsYWNlKC9ceyhcZCspXH0vZywoKGUsbik9Pntjb25zdCByPW5bMF0saT10W3JdO2xldCBhPWU7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBpP2E9aToibnVtYmVyIiE9dHlwZW9mIGkmJiJib29sZWFuIiE9dHlwZW9mIGkmJm51bGwhPWl8fChhPVN0cmluZyhpKSksYX0pKSxnJiYobj0i77y7IituLnJlcGxhY2UoL1thb3VlaV0vZywiJCYkJiIpKyLvvL0iKX0odCxuKX0oMCwiXyIpLF89dyx4PV87Y29uc3QgTT1ULFI9aztDJiZMLmltcG9ydFNjcmlwdHM7Y29uc3QgST15LE49ImZ1bmN0aW9uIj09dHlwZW9mIEwucG9zdE1lc3NhZ2UmJiFMLmltcG9ydFNjcmlwdHM7KCgpPT57aWYoTil7Y29uc3QgZT1bXTtMLmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCh0PT57aWYodC5kYXRhJiZ0LmRhdGEudnNjb2RlU2NoZWR1bGVBc3luY1dvcmspZm9yKGxldCBuPTAscj1lLmxlbmd0aDtuPHI7bisrKXtjb25zdCByPWVbbl07aWYoci5pZD09PXQuZGF0YS52c2NvZGVTY2hlZHVsZUFzeW5jV29yaylyZXR1cm4gZS5zcGxpY2UobiwxKSx2b2lkIHIuY2FsbGJhY2soKX19KSk7bGV0IHQ9MDtyZXR1cm4gbj0+e2NvbnN0IHI9Kyt0O2UucHVzaCh7aWQ6cixjYWxsYmFjazpufSksTC5wb3N0TWVzc2FnZSh7dnNjb2RlU2NoZWR1bGVBc3luY1dvcms6cn0sIioiKX19fSkoKTtjb25zdCBVPSEhKEkmJkkuaW5kZXhPZigiQ2hyb21lIik+PTApO0kmJkkuaW5kZXhPZigiRmlyZWZveCIpLCFVJiZJJiZJLmluZGV4T2YoIlNhZmFyaSIpLEkmJkkuaW5kZXhPZigiRWRnLyIpLEkmJkkuaW5kZXhPZigiQW5kcm9pZCIpO2NvbnN0IEg9TC5wZXJmb3JtYW5jZSYmImZ1bmN0aW9uIj09dHlwZW9mIEwucGVyZm9ybWFuY2Uubm93O2NsYXNzIHp7Y29uc3RydWN0b3IoZSl7dGhpcy5faGlnaFJlc29sdXRpb249SCYmZSx0aGlzLl9zdGFydFRpbWU9dGhpcy5fbm93KCksdGhpcy5fc3RvcFRpbWU9LTF9c3RhdGljIGNyZWF0ZShlPSEwKXtyZXR1cm4gbmV3IHooZSl9c3RvcCgpe3RoaXMuX3N0b3BUaW1lPXRoaXMuX25vdygpfWVsYXBzZWQoKXtyZXR1cm4tMSE9PXRoaXMuX3N0b3BUaW1lP3RoaXMuX3N0b3BUaW1lLXRoaXMuX3N0YXJ0VGltZTp0aGlzLl9ub3coKS10aGlzLl9zdGFydFRpbWV9X25vdygpe3JldHVybiB0aGlzLl9oaWdoUmVzb2x1dGlvbj9MLnBlcmZvcm1hbmNlLm5vdygpOkRhdGUubm93KCl9fXZhciBELFc7IWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoZSl7cmV0dXJuKHQsbj1udWxsLHIpPT57bGV0IGksYT0hMTtyZXR1cm4gaT1lKChlPT57aWYoIWEpcmV0dXJuIGk/aS5kaXNwb3NlKCk6YT0hMCx0LmNhbGwobixlKX0pLG51bGwsciksYSYmaS5kaXNwb3NlKCksaX19ZnVuY3Rpb24gbihlLHQsbil7cmV0dXJuIG8oKChuLHI9bnVsbCxpKT0+ZSgoZT0+bi5jYWxsKHIsdChlKSkpLG51bGwsaSkpLG4pfWZ1bmN0aW9uIHIoZSx0LG4pe3JldHVybiBvKCgobixyPW51bGwsaSk9PmUoKGU9Pnt0KGUpLG4uY2FsbChyLGUpfSksbnVsbCxpKSksbil9ZnVuY3Rpb24gaShlLHQsbil7cmV0dXJuIG8oKChuLHI9bnVsbCxpKT0+ZSgoZT0+dChlKSYmbi5jYWxsKHIsZSkpLG51bGwsaSkpLG4pfWZ1bmN0aW9uIGEoZSx0LHIsaSl7bGV0IGE9cjtyZXR1cm4gbihlLChlPT4oYT10KGEsZSksYSkpLGkpfWZ1bmN0aW9uIG8oZSx0KXtsZXQgbjtjb25zdCByPW5ldyBGKHtvbkZpcnN0TGlzdGVuZXJBZGQoKXtuPWUoci5maXJlLHIpfSxvbkxhc3RMaXN0ZW5lclJlbW92ZSgpe251bGw9PW58fG4uZGlzcG9zZSgpfX0pO3JldHVybiBudWxsPT10fHx0LmFkZChyKSxyLmV2ZW50fWZ1bmN0aW9uIHMoZSx0LG49MTAwLHI9ITEsaSxhKXtsZXQgbyxzLGwsYz0wO2NvbnN0IGg9bmV3IEYoe2xlYWtXYXJuaW5nVGhyZXNob2xkOmksb25GaXJzdExpc3RlbmVyQWRkKCl7bz1lKChlPT57YysrLHM9dChzLGUpLHImJiFsJiYoaC5maXJlKHMpLHM9dm9pZCAwKSxjbGVhclRpbWVvdXQobCksbD1zZXRUaW1lb3V0KCgoKT0+e2NvbnN0IGU9cztzPXZvaWQgMCxsPXZvaWQgMCwoIXJ8fGM+MSkmJmguZmlyZShlKSxjPTB9KSxuKX0pKX0sb25MYXN0TGlzdGVuZXJSZW1vdmUoKXtvLmRpc3Bvc2UoKX19KTtyZXR1cm4gbnVsbD09YXx8YS5hZGQoaCksaC5ldmVudH1mdW5jdGlvbiBsKGUsdD0oKGUsdCk9PmU9PT10KSxuKXtsZXQgcixhPSEwO3JldHVybiBpKGUsKGU9Pntjb25zdCBuPWF8fCF0KGUscik7cmV0dXJuIGE9ITEscj1lLG59KSxuKX1lLk5vbmU9KCk9PnUuTm9uZSxlLm9uY2U9dCxlLm1hcD1uLGUuZm9yRWFjaD1yLGUuZmlsdGVyPWksZS5zaWduYWw9ZnVuY3Rpb24oZSl7cmV0dXJuIGV9LGUuYW55PWZ1bmN0aW9uKC4uLmUpe3JldHVybih0LG49bnVsbCxyKT0+ZnVuY3Rpb24oLi4uZSl7cmV0dXJuIGgoKCgpPT5jKGUpKSl9KC4uLmUubWFwKChlPT5lKChlPT50LmNhbGwobixlKSksbnVsbCxyKSkpKX0sZS5yZWR1Y2U9YSxlLmRlYm91bmNlPXMsZS5sYXRjaD1sLGUuc3BsaXQ9ZnVuY3Rpb24odCxuLHIpe3JldHVybltlLmZpbHRlcih0LG4sciksZS5maWx0ZXIodCwoZT0+IW4oZSkpLHIpXX0sZS5idWZmZXI9ZnVuY3Rpb24oZSx0PSExLG49W10pe2xldCByPW4uc2xpY2UoKSxpPWUoKGU9PntyP3IucHVzaChlKTpvLmZpcmUoZSl9KSk7Y29uc3QgYT0oKT0+e251bGw9PXJ8fHIuZm9yRWFjaCgoZT0+by5maXJlKGUpKSkscj1udWxsfSxvPW5ldyBGKHtvbkZpcnN0TGlzdGVuZXJBZGQoKXtpfHwoaT1lKChlPT5vLmZpcmUoZSkpKSl9LG9uRmlyc3RMaXN0ZW5lckRpZEFkZCgpe3ImJih0P3NldFRpbWVvdXQoYSk6YSgpKX0sb25MYXN0TGlzdGVuZXJSZW1vdmUoKXtpJiZpLmRpc3Bvc2UoKSxpPW51bGx9fSk7cmV0dXJuIG8uZXZlbnR9O2NsYXNzIHB7Y29uc3RydWN0b3IoZSl7dGhpcy5ldmVudD1lLHRoaXMuZGlzcG9zYWJsZXM9bmV3IGR9bWFwKGUpe3JldHVybiBuZXcgcChuKHRoaXMuZXZlbnQsZSx0aGlzLmRpc3Bvc2FibGVzKSl9Zm9yRWFjaChlKXtyZXR1cm4gbmV3IHAocih0aGlzLmV2ZW50LGUsdGhpcy5kaXNwb3NhYmxlcykpfWZpbHRlcihlKXtyZXR1cm4gbmV3IHAoaSh0aGlzLmV2ZW50LGUsdGhpcy5kaXNwb3NhYmxlcykpfXJlZHVjZShlLHQpe3JldHVybiBuZXcgcChhKHRoaXMuZXZlbnQsZSx0LHRoaXMuZGlzcG9zYWJsZXMpKX1sYXRjaCgpe3JldHVybiBuZXcgcChsKHRoaXMuZXZlbnQsdm9pZCAwLHRoaXMuZGlzcG9zYWJsZXMpKX1kZWJvdW5jZShlLHQ9MTAwLG49ITEscil7cmV0dXJuIG5ldyBwKHModGhpcy5ldmVudCxlLHQsbixyLHRoaXMuZGlzcG9zYWJsZXMpKX1vbihlLHQsbil7cmV0dXJuIHRoaXMuZXZlbnQoZSx0LG4pfW9uY2UoZSxuLHIpe3JldHVybiB0KHRoaXMuZXZlbnQpKGUsbixyKX1kaXNwb3NlKCl7dGhpcy5kaXNwb3NhYmxlcy5kaXNwb3NlKCl9fWUuY2hhaW49ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBwKGUpfSxlLmZyb21Ob2RlRXZlbnRFbWl0dGVyPWZ1bmN0aW9uKGUsdCxuPShlPT5lKSl7Y29uc3Qgcj0oLi4uZSk9PmkuZmlyZShuKC4uLmUpKSxpPW5ldyBGKHtvbkZpcnN0TGlzdGVuZXJBZGQ6KCk9PmUub24odCxyKSxvbkxhc3RMaXN0ZW5lclJlbW92ZTooKT0+ZS5yZW1vdmVMaXN0ZW5lcih0LHIpfSk7cmV0dXJuIGkuZXZlbnR9LGUuZnJvbURPTUV2ZW50RW1pdHRlcj1mdW5jdGlvbihlLHQsbj0oZT0+ZSkpe2NvbnN0IHI9KC4uLmUpPT5pLmZpcmUobiguLi5lKSksaT1uZXcgRih7b25GaXJzdExpc3RlbmVyQWRkOigpPT5lLmFkZEV2ZW50TGlzdGVuZXIodCxyKSxvbkxhc3RMaXN0ZW5lclJlbW92ZTooKT0+ZS5yZW1vdmVFdmVudExpc3RlbmVyKHQscil9KTtyZXR1cm4gaS5ldmVudH0sZS50b1Byb21pc2U9ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBQcm9taXNlKChuPT50KGUpKG4pKSl9LGUucnVuQW5kU3Vic2NyaWJlPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQodm9pZCAwKSxlKChlPT50KGUpKSl9LGUucnVuQW5kU3Vic2NyaWJlV2l0aFN0b3JlPWZ1bmN0aW9uKGUsdCl7bGV0IG49bnVsbDtmdW5jdGlvbiByKGUpe251bGw9PW58fG4uZGlzcG9zZSgpLG49bmV3IGQsdChlLG4pfXIodm9pZCAwKTtjb25zdCBpPWUoKGU9PnIoZSkpKTtyZXR1cm4gaCgoKCk9PntpLmRpc3Bvc2UoKSxudWxsPT1ufHxuLmRpc3Bvc2UoKX0pKX07Y2xhc3MgbXtjb25zdHJ1Y3RvcihlLHQpe3RoaXMub2JzPWUsdGhpcy5fY291bnRlcj0wLHRoaXMuX2hhc0NoYW5nZWQ9ITE7Y29uc3Qgbj17b25GaXJzdExpc3RlbmVyQWRkOigpPT57ZS5hZGRPYnNlcnZlcih0aGlzKX0sb25MYXN0TGlzdGVuZXJSZW1vdmU6KCk9PntlLnJlbW92ZU9ic2VydmVyKHRoaXMpfX07dGhpcy5lbWl0dGVyPW5ldyBGKG4pLHQmJnQuYWRkKHRoaXMuZW1pdHRlcil9YmVnaW5VcGRhdGUoZSl7dGhpcy5fY291bnRlcisrfWhhbmRsZUNoYW5nZShlLHQpe3RoaXMuX2hhc0NoYW5nZWQ9ITB9ZW5kVXBkYXRlKGUpezA9PS0tdGhpcy5fY291bnRlciYmdGhpcy5faGFzQ2hhbmdlZCYmKHRoaXMuX2hhc0NoYW5nZWQ9ITEsdGhpcy5lbWl0dGVyLmZpcmUodGhpcy5vYnMuZ2V0KCkpKX19ZS5mcm9tT2JzZXJ2YWJsZT1mdW5jdGlvbihlLHQpe3JldHVybiBuZXcgbShlLHQpLmVtaXR0ZXIuZXZlbnR9fShEfHwoRD17fSkpO2NsYXNzIE97Y29uc3RydWN0b3IoZSl7dGhpcy5fbGlzdGVuZXJDb3VudD0wLHRoaXMuX2ludm9jYXRpb25Db3VudD0wLHRoaXMuX2VsYXBzZWRPdmVyYWxsPTAsdGhpcy5fbmFtZT1gJHtlfV8ke08uX2lkUG9vbCsrfWB9c3RhcnQoZSl7dGhpcy5fc3RvcFdhdGNoPW5ldyB6KCEwKSx0aGlzLl9saXN0ZW5lckNvdW50PWV9c3RvcCgpe2lmKHRoaXMuX3N0b3BXYXRjaCl7Y29uc3QgZT10aGlzLl9zdG9wV2F0Y2guZWxhcHNlZCgpO3RoaXMuX2VsYXBzZWRPdmVyYWxsKz1lLHRoaXMuX2ludm9jYXRpb25Db3VudCs9MSxjb25zb2xlLmluZm8oYGRpZCBGSVJFICR7dGhpcy5fbmFtZX06IGVsYXBzZWRfbXM6ICR7ZS50b0ZpeGVkKDUpfSwgbGlzdGVuZXI6ICR7dGhpcy5fbGlzdGVuZXJDb3VudH0gKGVsYXBzZWRfb3ZlcmFsbDogJHt0aGlzLl9lbGFwc2VkT3ZlcmFsbC50b0ZpeGVkKDIpfSwgaW52b2NhdGlvbnM6ICR7dGhpcy5faW52b2NhdGlvbkNvdW50fSlgKSx0aGlzLl9zdG9wV2F0Y2g9dm9pZCAwfX19Ty5faWRQb29sPTA7Y2xhc3MgUHtjb25zdHJ1Y3RvcihlKXt0aGlzLnZhbHVlPWV9c3RhdGljIGNyZWF0ZSgpe3ZhciBlO3JldHVybiBuZXcgUChudWxsIT09KGU9KG5ldyBFcnJvcikuc3RhY2spJiZ2b2lkIDAhPT1lP2U6IiIpfXByaW50KCl7Y29uc29sZS53YXJuKHRoaXMudmFsdWUuc3BsaXQoIlxuIikuc2xpY2UoMikuam9pbigiXG4iKSl9fWNsYXNzIHF7Y29uc3RydWN0b3IoZSx0LG4pe3RoaXMuY2FsbGJhY2s9ZSx0aGlzLmNhbGxiYWNrVGhpcz10LHRoaXMuc3RhY2s9bix0aGlzLnN1YnNjcmlwdGlvbj1uZXcgcH1pbnZva2UoZSl7dGhpcy5jYWxsYmFjay5jYWxsKHRoaXMuY2FsbGJhY2tUaGlzLGUpfX1jbGFzcyBGe2NvbnN0cnVjdG9yKGUpe3ZhciB0LG47dGhpcy5fZGlzcG9zZWQ9ITEsdGhpcy5fb3B0aW9ucz1lLHRoaXMuX2xlYWthZ2VNb249dm9pZCAwLHRoaXMuX3BlcmZNb249KG51bGw9PT0odD10aGlzLl9vcHRpb25zKXx8dm9pZCAwPT09dD92b2lkIDA6dC5fcHJvZk5hbWUpP25ldyBPKHRoaXMuX29wdGlvbnMuX3Byb2ZOYW1lKTp2b2lkIDAsdGhpcy5fZGVsaXZlcnlRdWV1ZT1udWxsPT09KG49dGhpcy5fb3B0aW9ucyl8fHZvaWQgMD09PW4/dm9pZCAwOm4uZGVsaXZlcnlRdWV1ZX1kaXNwb3NlKCl7dmFyIGUsdCxuLHI7dGhpcy5fZGlzcG9zZWR8fCh0aGlzLl9kaXNwb3NlZD0hMCx0aGlzLl9saXN0ZW5lcnMmJnRoaXMuX2xpc3RlbmVycy5jbGVhcigpLG51bGw9PT0oZT10aGlzLl9kZWxpdmVyeVF1ZXVlKXx8dm9pZCAwPT09ZXx8ZS5jbGVhcih0aGlzKSxudWxsPT09KG49bnVsbD09PSh0PXRoaXMuX29wdGlvbnMpfHx2b2lkIDA9PT10P3ZvaWQgMDp0Lm9uTGFzdExpc3RlbmVyUmVtb3ZlKXx8dm9pZCAwPT09bnx8bi5jYWxsKHQpLG51bGw9PT0ocj10aGlzLl9sZWFrYWdlTW9uKXx8dm9pZCAwPT09cnx8ci5kaXNwb3NlKCkpfWdldCBldmVudCgpe3JldHVybiB0aGlzLl9ldmVudHx8KHRoaXMuX2V2ZW50PShlLHQsbik9Pnt2YXIgcixpLGE7dGhpcy5fbGlzdGVuZXJzfHwodGhpcy5fbGlzdGVuZXJzPW5ldyBmKTtjb25zdCBvPXRoaXMuX2xpc3RlbmVycy5pc0VtcHR5KCk7bGV0IHMsbDtvJiYobnVsbD09PShyPXRoaXMuX29wdGlvbnMpfHx2b2lkIDA9PT1yP3ZvaWQgMDpyLm9uRmlyc3RMaXN0ZW5lckFkZCkmJnRoaXMuX29wdGlvbnMub25GaXJzdExpc3RlbmVyQWRkKHRoaXMpLHRoaXMuX2xlYWthZ2VNb24mJnRoaXMuX2xpc3RlbmVycy5zaXplPj0zMCYmKGw9UC5jcmVhdGUoKSxzPXRoaXMuX2xlYWthZ2VNb24uY2hlY2sobCx0aGlzLl9saXN0ZW5lcnMuc2l6ZSsxKSk7Y29uc3QgYz1uZXcgcShlLHQsbCksaD10aGlzLl9saXN0ZW5lcnMucHVzaChjKTtvJiYobnVsbD09PShpPXRoaXMuX29wdGlvbnMpfHx2b2lkIDA9PT1pP3ZvaWQgMDppLm9uRmlyc3RMaXN0ZW5lckRpZEFkZCkmJnRoaXMuX29wdGlvbnMub25GaXJzdExpc3RlbmVyRGlkQWRkKHRoaXMpLChudWxsPT09KGE9dGhpcy5fb3B0aW9ucyl8fHZvaWQgMD09PWE/dm9pZCAwOmEub25MaXN0ZW5lckRpZEFkZCkmJnRoaXMuX29wdGlvbnMub25MaXN0ZW5lckRpZEFkZCh0aGlzLGUsdCk7Y29uc3QgdT1jLnN1YnNjcmlwdGlvbi5zZXQoKCgpPT57aWYobnVsbD09c3x8cygpLCF0aGlzLl9kaXNwb3NlZCYmKGgoKSx0aGlzLl9vcHRpb25zJiZ0aGlzLl9vcHRpb25zLm9uTGFzdExpc3RlbmVyUmVtb3ZlKSl7dGhpcy5fbGlzdGVuZXJzJiYhdGhpcy5fbGlzdGVuZXJzLmlzRW1wdHkoKXx8dGhpcy5fb3B0aW9ucy5vbkxhc3RMaXN0ZW5lclJlbW92ZSh0aGlzKX19KSk7cmV0dXJuIG4gaW5zdGFuY2VvZiBkP24uYWRkKHUpOkFycmF5LmlzQXJyYXkobikmJm4ucHVzaCh1KSx1fSksdGhpcy5fZXZlbnR9ZmlyZShlKXt2YXIgdCxuO2lmKHRoaXMuX2xpc3RlbmVycyl7dGhpcy5fZGVsaXZlcnlRdWV1ZXx8KHRoaXMuX2RlbGl2ZXJ5UXVldWU9bmV3IFYpO2Zvcihjb25zdCB0IG9mIHRoaXMuX2xpc3RlbmVycyl0aGlzLl9kZWxpdmVyeVF1ZXVlLnB1c2godGhpcyx0LGUpO251bGw9PT0odD10aGlzLl9wZXJmTW9uKXx8dm9pZCAwPT09dHx8dC5zdGFydCh0aGlzLl9kZWxpdmVyeVF1ZXVlLnNpemUpLHRoaXMuX2RlbGl2ZXJ5UXVldWUuZGVsaXZlcigpLG51bGw9PT0obj10aGlzLl9wZXJmTW9uKXx8dm9pZCAwPT09bnx8bi5zdG9wKCl9fX1jbGFzcyBWIGV4dGVuZHMgY2xhc3N7Y29uc3RydWN0b3IoKXt0aGlzLl9xdWV1ZT1uZXcgZn1nZXQgc2l6ZSgpe3JldHVybiB0aGlzLl9xdWV1ZS5zaXplfXB1c2goZSx0LG4pe3RoaXMuX3F1ZXVlLnB1c2gobmV3IEIoZSx0LG4pKX1jbGVhcihlKXtjb25zdCB0PW5ldyBmO2Zvcihjb25zdCBuIG9mIHRoaXMuX3F1ZXVlKW4uZW1pdHRlciE9PWUmJnQucHVzaChuKTt0aGlzLl9xdWV1ZT10fWRlbGl2ZXIoKXtmb3IoO3RoaXMuX3F1ZXVlLnNpemU+MDspe2NvbnN0IGU9dGhpcy5fcXVldWUuc2hpZnQoKTt0cnl7ZS5saXN0ZW5lci5pbnZva2UoZS5ldmVudCl9Y2F0Y2goZSl7dChlKX19fX17Y2xlYXIoZSl7dGhpcy5fcXVldWUuY2xlYXIoKX19Y2xhc3MgQntjb25zdHJ1Y3RvcihlLHQsbil7dGhpcy5lbWl0dGVyPWUsdGhpcy5saXN0ZW5lcj10LHRoaXMuZXZlbnQ9bn19ZnVuY3Rpb24gSyhlKXtjb25zdCB0PVtdO2Zvcihjb25zdCBuIG9mIGZ1bmN0aW9uKGUpe2xldCB0PVtdLG49T2JqZWN0LmdldFByb3RvdHlwZU9mKGUpO2Zvcig7T2JqZWN0LnByb3RvdHlwZSE9PW47KXQ9dC5jb25jYXQoT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMobikpLG49T2JqZWN0LmdldFByb3RvdHlwZU9mKG4pO3JldHVybiB0fShlKSkiZnVuY3Rpb24iPT10eXBlb2YgZVtuXSYmdC5wdXNoKG4pO3JldHVybiB0fWZ1bmN0aW9uIGooZSx0PSJVbnJlYWNoYWJsZSIpe3Rocm93IG5ldyBFcnJvcih0KX1jbGFzcyBHe2NvbnN0cnVjdG9yKGUpe3RoaXMuZXhlY3V0b3I9ZSx0aGlzLl9kaWRSdW49ITF9aGFzVmFsdWUoKXtyZXR1cm4gdGhpcy5fZGlkUnVufWdldFZhbHVlKCl7aWYoIXRoaXMuX2RpZFJ1bil0cnl7dGhpcy5fdmFsdWU9dGhpcy5leGVjdXRvcigpfWNhdGNoKGUpe3RoaXMuX2Vycm9yPWV9ZmluYWxseXt0aGlzLl9kaWRSdW49ITB9aWYodGhpcy5fZXJyb3IpdGhyb3cgdGhpcy5fZXJyb3I7cmV0dXJuIHRoaXMuX3ZhbHVlfWdldCByYXdWYWx1ZSgpe3JldHVybiB0aGlzLl92YWx1ZX19ZnVuY3Rpb24gJChlKXtyZXR1cm4gZT49NjUmJmU8PTkwfWZ1bmN0aW9uIEooZSl7cmV0dXJuIDU1Mjk2PD1lJiZlPD01NjMxOX1mdW5jdGlvbiBYKGUsdCxuKXtjb25zdCByPWUuY2hhckNvZGVBdChuKTtpZihKKHIpJiZuKzE8dCl7Y29uc3QgdD1lLmNoYXJDb2RlQXQobisxKTtpZihmdW5jdGlvbihlKXtyZXR1cm4gNTYzMjA8PWUmJmU8PTU3MzQzfSh0KSlyZXR1cm4gdC01NjMyMCsoci01NTI5Njw8MTApKzY1NTM2fXJldHVybiByfWNvbnN0IFk9L15bXHRcblxyXHgyMC1ceDdFXSokLztjbGFzcyBRe2NvbnN0cnVjdG9yKGUpe3RoaXMuY29uZnVzYWJsZURpY3Rpb25hcnk9ZX1zdGF0aWMgZ2V0SW5zdGFuY2UoZSl7cmV0dXJuIFEuY2FjaGUuZ2V0KEFycmF5LmZyb20oZSkpfXN0YXRpYyBnZXRMb2NhbGVzKCl7cmV0dXJuIFEuX2xvY2FsZXMuZ2V0VmFsdWUoKX1pc0FtYmlndW91cyhlKXtyZXR1cm4gdGhpcy5jb25mdXNhYmxlRGljdGlvbmFyeS5oYXMoZSl9Z2V0UHJpbWFyeUNvbmZ1c2FibGUoZSl7cmV0dXJuIHRoaXMuY29uZnVzYWJsZURpY3Rpb25hcnkuZ2V0KGUpfWdldENvbmZ1c2FibGVDb2RlUG9pbnRzKCl7cmV0dXJuIG5ldyBTZXQodGhpcy5jb25mdXNhYmxlRGljdGlvbmFyeS5rZXlzKCkpfX1XPVEsUS5hbWJpZ3VvdXNDaGFyYWN0ZXJEYXRhPW5ldyBHKCgoKT0+SlNPTi5wYXJzZSgneyJfY29tbW9uIjpbODIzMiwzMiw4MjMzLDMyLDU3NjAsMzIsODE5MiwzMiw4MTkzLDMyLDgxOTQsMzIsODE5NSwzMiw4MTk2LDMyLDgxOTcsMzIsODE5OCwzMiw4MjAwLDMyLDgyMDEsMzIsODIwMiwzMiw4Mjg3LDMyLDgxOTksMzIsODIzOSwzMiwyMDQyLDk1LDY1MTAxLDk1LDY1MTAyLDk1LDY1MTAzLDk1LDgyMDgsNDUsODIwOSw0NSw4MjEwLDQ1LDY1MTEyLDQ1LDE3NDgsNDUsODI1OSw0NSw3MjcsNDUsODcyMiw0NSwxMDEzNCw0NSwxMTQ1MCw0NSwxNTQ5LDQ0LDE2NDMsNDQsODIxOCw0NCwxODQsNDQsNDIyMzMsNDQsODk0LDU5LDIzMDcsNTgsMjY5MSw1OCwxNDE3LDU4LDE3OTUsNTgsMTc5Niw1OCw1ODY4LDU4LDY1MDcyLDU4LDYxNDcsNTgsNjE1Myw1OCw4MjgyLDU4LDE0NzUsNTgsNzYwLDU4LDQyODg5LDU4LDg3NTgsNTgsNzIwLDU4LDQyMjM3LDU4LDQ1MSwzMywxMTYwMSwzMyw2NjAsNjMsNTc3LDYzLDI0MjksNjMsNTAzOCw2Myw0MjczMSw2MywxMTkxNDksNDYsODIyOCw0NiwxNzkzLDQ2LDE3OTQsNDYsNDI1MTAsNDYsNjgxNzYsNDYsMTYzMiw0NiwxNzc2LDQ2LDQyMjMyLDQ2LDEzNzMsOTYsNjUyODcsOTYsODIxOSw5Niw4MjQyLDk2LDEzNzAsOTYsMTUyMyw5Niw4MTc1LDk2LDY1MzQ0LDk2LDkwMCw5Niw4MTg5LDk2LDgxMjUsOTYsODEyNyw5Niw4MTkwLDk2LDY5Nyw5Niw4ODQsOTYsNzEyLDk2LDcxNCw5Niw3MTUsOTYsNzU2LDk2LDY5OSw5Niw3MDEsOTYsNzAwLDk2LDcwMiw5Niw0Mjg5Miw5NiwxNDk3LDk2LDIwMzYsOTYsMjAzNyw5Niw1MTk0LDk2LDU4MzYsOTYsOTQwMzMsOTYsOTQwMzQsOTYsNjUzMzksOTEsMTAwODgsNDAsMTAwOTgsNDAsMTIzMDgsNDAsNjQ4MzAsNDAsNjUzNDEsOTMsMTAwODksNDEsMTAwOTksNDEsMTIzMDksNDEsNjQ4MzEsNDEsMTAxMDAsMTIzLDExOTA2MCwxMjMsMTAxMDEsMTI1LDY1MzQyLDk0LDgyNzAsNDIsMTY0NSw0Miw4NzI3LDQyLDY2MzM1LDQyLDU5NDEsNDcsODI1Nyw0Nyw4NzI1LDQ3LDgyNjAsNDcsOTU4NSw0NywxMDE4Nyw0NywxMDc0NCw0NywxMTkzNTQsNDcsMTI3NTUsNDcsMTIzMzksNDcsMTE0NjIsNDcsMjAwMzEsNDcsMTIwMzUsNDcsNjUzNDAsOTIsNjUxMjgsOTIsODcyNiw5MiwxMDE4OSw5MiwxMDc0MSw5MiwxMDc0NSw5MiwxMTkzMTEsOTIsMTE5MzU1LDkyLDEyNzU2LDkyLDIwMDIyLDkyLDEyMDM0LDkyLDQyODcyLDM4LDcwOCw5NCw3MTAsOTQsNTg2OSw0MywxMDEzMyw0Myw2NjIwMyw0Myw4MjQ5LDYwLDEwMDk0LDYwLDcwNiw2MCwxMTkzNTAsNjAsNTE3Niw2MCw1ODEwLDYwLDUxMjAsNjEsMTE4NDAsNjEsMTI0NDgsNjEsNDIyMzksNjEsODI1MCw2MiwxMDA5NSw2Miw3MDcsNjIsMTE5MzUxLDYyLDUxNzEsNjIsOTQwMTUsNjIsODI3NSwxMjYsNzMyLDEyNiw4MTI4LDEyNiw4NzY0LDEyNiw2NTM3MiwxMjQsNjUyOTMsNDUsMTIwNzg0LDUwLDEyMDc5NCw1MCwxMjA4MDQsNTAsMTIwODE0LDUwLDEyMDgyNCw1MCwxMzAwMzQsNTAsNDI4NDIsNTAsNDIzLDUwLDEwMDAsNTAsNDI1NjQsNTAsNTMxMSw1MCw0MjczNSw1MCwxMTkzMDIsNTEsMTIwNzg1LDUxLDEyMDc5NSw1MSwxMjA4MDUsNTEsMTIwODE1LDUxLDEyMDgyNSw1MSwxMzAwMzUsNTEsNDI5MjMsNTEsNTQwLDUxLDQzOSw1MSw0Mjg1OCw1MSwxMTQ2OCw1MSwxMjQ4LDUxLDk0MDExLDUxLDcxODgyLDUxLDEyMDc4Niw1MiwxMjA3OTYsNTIsMTIwODA2LDUyLDEyMDgxNiw1MiwxMjA4MjYsNTIsMTMwMDM2LDUyLDUwNzAsNTIsNzE4NTUsNTIsMTIwNzg3LDUzLDEyMDc5Nyw1MywxMjA4MDcsNTMsMTIwODE3LDUzLDEyMDgyNyw1MywxMzAwMzcsNTMsNDQ0LDUzLDcxODY3LDUzLDEyMDc4OCw1NCwxMjA3OTgsNTQsMTIwODA4LDU0LDEyMDgxOCw1NCwxMjA4MjgsNTQsMTMwMDM4LDU0LDExNDc0LDU0LDUxMDIsNTQsNzE4OTMsNTQsMTE5MzE0LDU1LDEyMDc4OSw1NSwxMjA3OTksNTUsMTIwODA5LDU1LDEyMDgxOSw1NSwxMjA4MjksNTUsMTMwMDM5LDU1LDY2NzcwLDU1LDcxODc4LDU1LDI4MTksNTYsMjUzOCw1NiwyNjY2LDU2LDEyNTEzMSw1NiwxMjA3OTAsNTYsMTIwODAwLDU2LDEyMDgxMCw1NiwxMjA4MjAsNTYsMTIwODMwLDU2LDEzMDA0MCw1Niw1NDcsNTYsNTQ2LDU2LDY2MzMwLDU2LDI2NjMsNTcsMjkyMCw1NywyNTQxLDU3LDM0MzcsNTcsMTIwNzkxLDU3LDEyMDgwMSw1NywxMjA4MTEsNTcsMTIwODIxLDU3LDEyMDgzMSw1NywxMzAwNDEsNTcsNDI4NjIsNTcsMTE0NjYsNTcsNzE4ODQsNTcsNzE4NTIsNTcsNzE4OTQsNTcsOTA4Miw5Nyw2NTM0NSw5NywxMTk4MzQsOTcsMTE5ODg2LDk3LDExOTkzOCw5NywxMTk5OTAsOTcsMTIwMDQyLDk3LDEyMDA5NCw5NywxMjAxNDYsOTcsMTIwMTk4LDk3LDEyMDI1MCw5NywxMjAzMDIsOTcsMTIwMzU0LDk3LDEyMDQwNiw5NywxMjA0NTgsOTcsNTkzLDk3LDk0NSw5NywxMjA1MTQsOTcsMTIwNTcyLDk3LDEyMDYzMCw5NywxMjA2ODgsOTcsMTIwNzQ2LDk3LDY1MzEzLDY1LDExOTgwOCw2NSwxMTk4NjAsNjUsMTE5OTEyLDY1LDExOTk2NCw2NSwxMjAwMTYsNjUsMTIwMDY4LDY1LDEyMDEyMCw2NSwxMjAxNzIsNjUsMTIwMjI0LDY1LDEyMDI3Niw2NSwxMjAzMjgsNjUsMTIwMzgwLDY1LDEyMDQzMiw2NSw5MTMsNjUsMTIwNDg4LDY1LDEyMDU0Niw2NSwxMjA2MDQsNjUsMTIwNjYyLDY1LDEyMDcyMCw2NSw1MDM0LDY1LDU1NzMsNjUsNDIyMjIsNjUsOTQwMTYsNjUsNjYyMDgsNjUsMTE5ODM1LDk4LDExOTg4Nyw5OCwxMTk5MzksOTgsMTE5OTkxLDk4LDEyMDA0Myw5OCwxMjAwOTUsOTgsMTIwMTQ3LDk4LDEyMDE5OSw5OCwxMjAyNTEsOTgsMTIwMzAzLDk4LDEyMDM1NSw5OCwxMjA0MDcsOTgsMTIwNDU5LDk4LDM4OCw5OCw1MDcxLDk4LDUyMzQsOTgsNTU1MSw5OCw2NTMxNCw2Niw4NDkyLDY2LDExOTgwOSw2NiwxMTk4NjEsNjYsMTE5OTEzLDY2LDEyMDAxNyw2NiwxMjAwNjksNjYsMTIwMTIxLDY2LDEyMDE3Myw2NiwxMjAyMjUsNjYsMTIwMjc3LDY2LDEyMDMyOSw2NiwxMjAzODEsNjYsMTIwNDMzLDY2LDQyOTMyLDY2LDkxNCw2NiwxMjA0ODksNjYsMTIwNTQ3LDY2LDEyMDYwNSw2NiwxMjA2NjMsNjYsMTIwNzIxLDY2LDUxMDgsNjYsNTYyMyw2Niw0MjE5Miw2Niw2NjE3OCw2Niw2NjIwOSw2Niw2NjMwNSw2Niw2NTM0Nyw5OSw4NTczLDk5LDExOTgzNiw5OSwxMTk4ODgsOTksMTE5OTQwLDk5LDExOTk5Miw5OSwxMjAwNDQsOTksMTIwMDk2LDk5LDEyMDE0OCw5OSwxMjAyMDAsOTksMTIwMjUyLDk5LDEyMDMwNCw5OSwxMjAzNTYsOTksMTIwNDA4LDk5LDEyMDQ2MCw5OSw3NDI4LDk5LDEwMTAsOTksMTE0MjksOTksNDM5NTEsOTksNjY2MjEsOTksMTI4ODQ0LDY3LDcxOTIyLDY3LDcxOTEzLDY3LDY1MzE1LDY3LDg1NTcsNjcsODQ1MCw2Nyw4NDkzLDY3LDExOTgxMCw2NywxMTk4NjIsNjcsMTE5OTE0LDY3LDExOTk2Niw2NywxMjAwMTgsNjcsMTIwMTc0LDY3LDEyMDIyNiw2NywxMjAyNzgsNjcsMTIwMzMwLDY3LDEyMDM4Miw2NywxMjA0MzQsNjcsMTAxNyw2NywxMTQyOCw2Nyw1MDg3LDY3LDQyMjAyLDY3LDY2MjEwLDY3LDY2MzA2LDY3LDY2NTgxLDY3LDY2ODQ0LDY3LDg1NzQsMTAwLDg1MTgsMTAwLDExOTgzNywxMDAsMTE5ODg5LDEwMCwxMTk5NDEsMTAwLDExOTk5MywxMDAsMTIwMDQ1LDEwMCwxMjAwOTcsMTAwLDEyMDE0OSwxMDAsMTIwMjAxLDEwMCwxMjAyNTMsMTAwLDEyMDMwNSwxMDAsMTIwMzU3LDEwMCwxMjA0MDksMTAwLDEyMDQ2MSwxMDAsMTI4MSwxMDAsNTA5NSwxMDAsNTIzMSwxMDAsNDIxOTQsMTAwLDg1NTgsNjgsODUxNyw2OCwxMTk4MTEsNjgsMTE5ODYzLDY4LDExOTkxNSw2OCwxMTk5NjcsNjgsMTIwMDE5LDY4LDEyMDA3MSw2OCwxMjAxMjMsNjgsMTIwMTc1LDY4LDEyMDIyNyw2OCwxMjAyNzksNjgsMTIwMzMxLDY4LDEyMDM4Myw2OCwxMjA0MzUsNjgsNTAyNCw2OCw1NTk4LDY4LDU2MTAsNjgsNDIxOTUsNjgsODQ5NCwxMDEsNjUzNDksMTAxLDg0OTUsMTAxLDg1MTksMTAxLDExOTgzOCwxMDEsMTE5ODkwLDEwMSwxMTk5NDIsMTAxLDEyMDA0NiwxMDEsMTIwMDk4LDEwMSwxMjAxNTAsMTAxLDEyMDIwMiwxMDEsMTIwMjU0LDEwMSwxMjAzMDYsMTAxLDEyMDM1OCwxMDEsMTIwNDEwLDEwMSwxMjA0NjIsMTAxLDQzODI2LDEwMSwxMjEzLDEwMSw4OTU5LDY5LDY1MzE3LDY5LDg0OTYsNjksMTE5ODEyLDY5LDExOTg2NCw2OSwxMTk5MTYsNjksMTIwMDIwLDY5LDEyMDA3Miw2OSwxMjAxMjQsNjksMTIwMTc2LDY5LDEyMDIyOCw2OSwxMjAyODAsNjksMTIwMzMyLDY5LDEyMDM4NCw2OSwxMjA0MzYsNjksOTE3LDY5LDEyMDQ5Miw2OSwxMjA1NTAsNjksMTIwNjA4LDY5LDEyMDY2Niw2OSwxMjA3MjQsNjksMTE1NzcsNjksNTAzNiw2OSw0MjIyNCw2OSw3MTg0Niw2OSw3MTg1NCw2OSw2NjE4Miw2OSwxMTk4MzksMTAyLDExOTg5MSwxMDIsMTE5OTQzLDEwMiwxMTk5OTUsMTAyLDEyMDA0NywxMDIsMTIwMDk5LDEwMiwxMjAxNTEsMTAyLDEyMDIwMywxMDIsMTIwMjU1LDEwMiwxMjAzMDcsMTAyLDEyMDM1OSwxMDIsMTIwNDExLDEwMiwxMjA0NjMsMTAyLDQzODI5LDEwMiw0MjkwNSwxMDIsMzgzLDEwMiw3ODM3LDEwMiwxNDEyLDEwMiwxMTkzMTUsNzAsODQ5Nyw3MCwxMTk4MTMsNzAsMTE5ODY1LDcwLDExOTkxNyw3MCwxMjAwMjEsNzAsMTIwMDczLDcwLDEyMDEyNSw3MCwxMjAxNzcsNzAsMTIwMjI5LDcwLDEyMDI4MSw3MCwxMjAzMzMsNzAsMTIwMzg1LDcwLDEyMDQzNyw3MCw0MjkwNCw3MCw5ODgsNzAsMTIwNzc4LDcwLDU1NTYsNzAsNDIyMDUsNzAsNzE4NzQsNzAsNzE4NDIsNzAsNjYxODMsNzAsNjYyMTMsNzAsNjY4NTMsNzAsNjUzNTEsMTAzLDg0NTgsMTAzLDExOTg0MCwxMDMsMTE5ODkyLDEwMywxMTk5NDQsMTAzLDEyMDA0OCwxMDMsMTIwMTAwLDEwMywxMjAxNTIsMTAzLDEyMDIwNCwxMDMsMTIwMjU2LDEwMywxMjAzMDgsMTAzLDEyMDM2MCwxMDMsMTIwNDEyLDEwMywxMjA0NjQsMTAzLDYwOSwxMDMsNzU1NSwxMDMsMzk3LDEwMywxNDA5LDEwMywxMTk4MTQsNzEsMTE5ODY2LDcxLDExOTkxOCw3MSwxMTk5NzAsNzEsMTIwMDIyLDcxLDEyMDA3NCw3MSwxMjAxMjYsNzEsMTIwMTc4LDcxLDEyMDIzMCw3MSwxMjAyODIsNzEsMTIwMzM0LDcxLDEyMDM4Niw3MSwxMjA0MzgsNzEsMTI5Miw3MSw1MDU2LDcxLDUxMDcsNzEsNDIxOTgsNzEsNjUzNTIsMTA0LDg0NjIsMTA0LDExOTg0MSwxMDQsMTE5OTQ1LDEwNCwxMTk5OTcsMTA0LDEyMDA0OSwxMDQsMTIwMTAxLDEwNCwxMjAxNTMsMTA0LDEyMDIwNSwxMDQsMTIwMjU3LDEwNCwxMjAzMDksMTA0LDEyMDM2MSwxMDQsMTIwNDEzLDEwNCwxMjA0NjUsMTA0LDEyMTEsMTA0LDEzOTIsMTA0LDUwNTgsMTA0LDY1MzIwLDcyLDg0NTksNzIsODQ2MCw3Miw4NDYxLDcyLDExOTgxNSw3MiwxMTk4NjcsNzIsMTE5OTE5LDcyLDEyMDAyMyw3MiwxMjAxNzksNzIsMTIwMjMxLDcyLDEyMDI4Myw3MiwxMjAzMzUsNzIsMTIwMzg3LDcyLDEyMDQzOSw3Miw5MTksNzIsMTIwNDk0LDcyLDEyMDU1Miw3MiwxMjA2MTAsNzIsMTIwNjY4LDcyLDEyMDcyNiw3MiwxMTQwNiw3Miw1MDUxLDcyLDU1MDAsNzIsNDIyMTUsNzIsNjYyNTUsNzIsNzMxLDEwNSw5MDc1LDEwNSw2NTM1MywxMDUsODU2MCwxMDUsODUwNSwxMDUsODUyMCwxMDUsMTE5ODQyLDEwNSwxMTk4OTQsMTA1LDExOTk0NiwxMDUsMTE5OTk4LDEwNSwxMjAwNTAsMTA1LDEyMDEwMiwxMDUsMTIwMTU0LDEwNSwxMjAyMDYsMTA1LDEyMDI1OCwxMDUsMTIwMzEwLDEwNSwxMjAzNjIsMTA1LDEyMDQxNCwxMDUsMTIwNDY2LDEwNSwxMjA0ODQsMTA1LDYxOCwxMDUsNjE3LDEwNSw5NTMsMTA1LDgxMjYsMTA1LDg5MCwxMDUsMTIwNTIyLDEwNSwxMjA1ODAsMTA1LDEyMDYzOCwxMDUsMTIwNjk2LDEwNSwxMjA3NTQsMTA1LDExMTAsMTA1LDQyNTY3LDEwNSwxMjMxLDEwNSw0Mzg5MywxMDUsNTAyOSwxMDUsNzE4NzUsMTA1LDY1MzU0LDEwNiw4NTIxLDEwNiwxMTk4NDMsMTA2LDExOTg5NSwxMDYsMTE5OTQ3LDEwNiwxMTk5OTksMTA2LDEyMDA1MSwxMDYsMTIwMTAzLDEwNiwxMjAxNTUsMTA2LDEyMDIwNywxMDYsMTIwMjU5LDEwNiwxMjAzMTEsMTA2LDEyMDM2MywxMDYsMTIwNDE1LDEwNiwxMjA0NjcsMTA2LDEwMTEsMTA2LDExMTIsMTA2LDY1MzIyLDc0LDExOTgxNyw3NCwxMTk4NjksNzQsMTE5OTIxLDc0LDExOTk3Myw3NCwxMjAwMjUsNzQsMTIwMDc3LDc0LDEyMDEyOSw3NCwxMjAxODEsNzQsMTIwMjMzLDc0LDEyMDI4NSw3NCwxMjAzMzcsNzQsMTIwMzg5LDc0LDEyMDQ0MSw3NCw0MjkzMCw3NCw4OTUsNzQsMTAzMiw3NCw1MDM1LDc0LDUyNjEsNzQsNDIyMDEsNzQsMTE5ODQ0LDEwNywxMTk4OTYsMTA3LDExOTk0OCwxMDcsMTIwMDAwLDEwNywxMjAwNTIsMTA3LDEyMDEwNCwxMDcsMTIwMTU2LDEwNywxMjAyMDgsMTA3LDEyMDI2MCwxMDcsMTIwMzEyLDEwNywxMjAzNjQsMTA3LDEyMDQxNiwxMDcsMTIwNDY4LDEwNyw4NDkwLDc1LDY1MzIzLDc1LDExOTgxOCw3NSwxMTk4NzAsNzUsMTE5OTIyLDc1LDExOTk3NCw3NSwxMjAwMjYsNzUsMTIwMDc4LDc1LDEyMDEzMCw3NSwxMjAxODIsNzUsMTIwMjM0LDc1LDEyMDI4Niw3NSwxMjAzMzgsNzUsMTIwMzkwLDc1LDEyMDQ0Miw3NSw5MjIsNzUsMTIwNDk3LDc1LDEyMDU1NSw3NSwxMjA2MTMsNzUsMTIwNjcxLDc1LDEyMDcyOSw3NSwxMTQxMiw3NSw1MDk0LDc1LDU4NDUsNzUsNDIxOTksNzUsNjY4NDAsNzUsMTQ3MiwxMDgsODczOSw3Myw5MjEzLDczLDY1NTEyLDczLDE2MzMsMTA4LDE3NzcsNzMsNjYzMzYsMTA4LDEyNTEyNywxMDgsMTIwNzgzLDczLDEyMDc5Myw3MywxMjA4MDMsNzMsMTIwODEzLDczLDEyMDgyMyw3MywxMzAwMzMsNzMsNjUzMjEsNzMsODU0NCw3Myw4NDY0LDczLDg0NjUsNzMsMTE5ODE2LDczLDExOTg2OCw3MywxMTk5MjAsNzMsMTIwMDI0LDczLDEyMDEyOCw3MywxMjAxODAsNzMsMTIwMjMyLDczLDEyMDI4NCw3MywxMjAzMzYsNzMsMTIwMzg4LDczLDEyMDQ0MCw3Myw2NTM1NiwxMDgsODU3Miw3Myw4NDY3LDEwOCwxMTk4NDUsMTA4LDExOTg5NywxMDgsMTE5OTQ5LDEwOCwxMjAwMDEsMTA4LDEyMDA1MywxMDgsMTIwMTA1LDczLDEyMDE1Nyw3MywxMjAyMDksNzMsMTIwMjYxLDczLDEyMDMxMyw3MywxMjAzNjUsNzMsMTIwNDE3LDczLDEyMDQ2OSw3Myw0NDgsNzMsMTIwNDk2LDczLDEyMDU1NCw3MywxMjA2MTIsNzMsMTIwNjcwLDczLDEyMDcyOCw3MywxMTQxMCw3MywxMDMwLDczLDEyMTYsNzMsMTQ5MywxMDgsMTUwMywxMDgsMTU3NSwxMDgsMTI2NDY0LDEwOCwxMjY1OTIsMTA4LDY1MTY2LDEwOCw2NTE2NSwxMDgsMTk5NCwxMDgsMTE1OTksNzMsNTgyNSw3Myw0MjIyNiw3Myw5Mzk5Miw3Myw2NjE4NiwxMjQsNjYzMTMsMTI0LDExOTMzOCw3Niw4NTU2LDc2LDg0NjYsNzYsMTE5ODE5LDc2LDExOTg3MSw3NiwxMTk5MjMsNzYsMTIwMDI3LDc2LDEyMDA3OSw3NiwxMjAxMzEsNzYsMTIwMTgzLDc2LDEyMDIzNSw3NiwxMjAyODcsNzYsMTIwMzM5LDc2LDEyMDM5MSw3NiwxMjA0NDMsNzYsMTE0NzIsNzYsNTA4Niw3Niw1MjkwLDc2LDQyMjA5LDc2LDkzOTc0LDc2LDcxODQzLDc2LDcxODU4LDc2LDY2NTg3LDc2LDY2ODU0LDc2LDY1MzI1LDc3LDg1NTksNzcsODQ5OSw3NywxMTk4MjAsNzcsMTE5ODcyLDc3LDExOTkyNCw3NywxMjAwMjgsNzcsMTIwMDgwLDc3LDEyMDEzMiw3NywxMjAxODQsNzcsMTIwMjM2LDc3LDEyMDI4OCw3NywxMjAzNDAsNzcsMTIwMzkyLDc3LDEyMDQ0NCw3Nyw5MjQsNzcsMTIwNDk5LDc3LDEyMDU1Nyw3NywxMjA2MTUsNzcsMTIwNjczLDc3LDEyMDczMSw3NywxMDE4LDc3LDExNDE2LDc3LDUwNDcsNzcsNTYxNiw3Nyw1ODQ2LDc3LDQyMjA3LDc3LDY2MjI0LDc3LDY2MzIxLDc3LDExOTg0NywxMTAsMTE5ODk5LDExMCwxMTk5NTEsMTEwLDEyMDAwMywxMTAsMTIwMDU1LDExMCwxMjAxMDcsMTEwLDEyMDE1OSwxMTAsMTIwMjExLDExMCwxMjAyNjMsMTEwLDEyMDMxNSwxMTAsMTIwMzY3LDExMCwxMjA0MTksMTEwLDEyMDQ3MSwxMTAsMTQwMCwxMTAsMTQwNCwxMTAsNjUzMjYsNzgsODQ2OSw3OCwxMTk4MjEsNzgsMTE5ODczLDc4LDExOTkyNSw3OCwxMTk5NzcsNzgsMTIwMDI5LDc4LDEyMDA4MSw3OCwxMjAxODUsNzgsMTIwMjM3LDc4LDEyMDI4OSw3OCwxMjAzNDEsNzgsMTIwMzkzLDc4LDEyMDQ0NSw3OCw5MjUsNzgsMTIwNTAwLDc4LDEyMDU1OCw3OCwxMjA2MTYsNzgsMTIwNjc0LDc4LDEyMDczMiw3OCwxMTQxOCw3OCw0MjIwOCw3OCw2NjgzNSw3OCwzMDc0LDExMSwzMjAyLDExMSwzMzMwLDExMSwzNDU4LDExMSwyNDA2LDExMSwyNjYyLDExMSwyNzkwLDExMSwzMDQ2LDExMSwzMTc0LDExMSwzMzAyLDExMSwzNDMwLDExMSwzNjY0LDExMSwzNzkyLDExMSw0MTYwLDExMSwxNjM3LDExMSwxNzgxLDExMSw2NTM1OSwxMTEsODUwMCwxMTEsMTE5ODQ4LDExMSwxMTk5MDAsMTExLDExOTk1MiwxMTEsMTIwMDU2LDExMSwxMjAxMDgsMTExLDEyMDE2MCwxMTEsMTIwMjEyLDExMSwxMjAyNjQsMTExLDEyMDMxNiwxMTEsMTIwMzY4LDExMSwxMjA0MjAsMTExLDEyMDQ3MiwxMTEsNzQzOSwxMTEsNzQ0MSwxMTEsNDM4MzcsMTExLDk1OSwxMTEsMTIwNTI4LDExMSwxMjA1ODYsMTExLDEyMDY0NCwxMTEsMTIwNzAyLDExMSwxMjA3NjAsMTExLDk2MywxMTEsMTIwNTMyLDExMSwxMjA1OTAsMTExLDEyMDY0OCwxMTEsMTIwNzA2LDExMSwxMjA3NjQsMTExLDExNDIzLDExMSw0MzUxLDExMSwxNDEzLDExMSwxNTA1LDExMSwxNjA3LDExMSwxMjY1MDAsMTExLDEyNjU2NCwxMTEsMTI2NTk2LDExMSw2NTI1OSwxMTEsNjUyNjAsMTExLDY1MjU4LDExMSw2NTI1NywxMTEsMTcyNiwxMTEsNjQ0MjgsMTExLDY0NDI5LDExMSw2NDQyNywxMTEsNjQ0MjYsMTExLDE3MjksMTExLDY0NDI0LDExMSw2NDQyNSwxMTEsNjQ0MjMsMTExLDY0NDIyLDExMSwxNzQ5LDExMSwzMzYwLDExMSw0MTI1LDExMSw2Njc5NCwxMTEsNzE4ODAsMTExLDcxODk1LDExMSw2NjYwNCwxMTEsMTk4NCw3OSwyNTM0LDc5LDI5MTgsNzksMTIyOTUsNzksNzA4NjQsNzksNzE5MDQsNzksMTIwNzgyLDc5LDEyMDc5Miw3OSwxMjA4MDIsNzksMTIwODEyLDc5LDEyMDgyMiw3OSwxMzAwMzIsNzksNjUzMjcsNzksMTE5ODIyLDc5LDExOTg3NCw3OSwxMTk5MjYsNzksMTE5OTc4LDc5LDEyMDAzMCw3OSwxMjAwODIsNzksMTIwMTM0LDc5LDEyMDE4Niw3OSwxMjAyMzgsNzksMTIwMjkwLDc5LDEyMDM0Miw3OSwxMjAzOTQsNzksMTIwNDQ2LDc5LDkyNyw3OSwxMjA1MDIsNzksMTIwNTYwLDc5LDEyMDYxOCw3OSwxMjA2NzYsNzksMTIwNzM0LDc5LDExNDIyLDc5LDEzNjUsNzksMTE2MDQsNzksNDgxNiw3OSwyODQ4LDc5LDY2NzU0LDc5LDQyMjI3LDc5LDcxODYxLDc5LDY2MTk0LDc5LDY2MjE5LDc5LDY2NTY0LDc5LDY2ODM4LDc5LDkwNzYsMTEyLDY1MzYwLDExMiwxMTk4NDksMTEyLDExOTkwMSwxMTIsMTE5OTUzLDExMiwxMjAwMDUsMTEyLDEyMDA1NywxMTIsMTIwMTA5LDExMiwxMjAxNjEsMTEyLDEyMDIxMywxMTIsMTIwMjY1LDExMiwxMjAzMTcsMTEyLDEyMDM2OSwxMTIsMTIwNDIxLDExMiwxMjA0NzMsMTEyLDk2MSwxMTIsMTIwNTMwLDExMiwxMjA1NDQsMTEyLDEyMDU4OCwxMTIsMTIwNjAyLDExMiwxMjA2NDYsMTEyLDEyMDY2MCwxMTIsMTIwNzA0LDExMiwxMjA3MTgsMTEyLDEyMDc2MiwxMTIsMTIwNzc2LDExMiwxMTQyNywxMTIsNjUzMjgsODAsODQ3Myw4MCwxMTk4MjMsODAsMTE5ODc1LDgwLDExOTkyNyw4MCwxMTk5NzksODAsMTIwMDMxLDgwLDEyMDA4Myw4MCwxMjAxODcsODAsMTIwMjM5LDgwLDEyMDI5MSw4MCwxMjAzNDMsODAsMTIwMzk1LDgwLDEyMDQ0Nyw4MCw5MjksODAsMTIwNTA0LDgwLDEyMDU2Miw4MCwxMjA2MjAsODAsMTIwNjc4LDgwLDEyMDczNiw4MCwxMTQyNiw4MCw1MDkwLDgwLDUyMjksODAsNDIxOTMsODAsNjYxOTcsODAsMTE5ODUwLDExMywxMTk5MDIsMTEzLDExOTk1NCwxMTMsMTIwMDA2LDExMywxMjAwNTgsMTEzLDEyMDExMCwxMTMsMTIwMTYyLDExMywxMjAyMTQsMTEzLDEyMDI2NiwxMTMsMTIwMzE4LDExMywxMjAzNzAsMTEzLDEyMDQyMiwxMTMsMTIwNDc0LDExMywxMzA3LDExMywxMzc5LDExMywxMzgyLDExMyw4NDc0LDgxLDExOTgyNCw4MSwxMTk4NzYsODEsMTE5OTI4LDgxLDExOTk4MCw4MSwxMjAwMzIsODEsMTIwMDg0LDgxLDEyMDE4OCw4MSwxMjAyNDAsODEsMTIwMjkyLDgxLDEyMDM0NCw4MSwxMjAzOTYsODEsMTIwNDQ4LDgxLDExNjA1LDgxLDExOTg1MSwxMTQsMTE5OTAzLDExNCwxMTk5NTUsMTE0LDEyMDAwNywxMTQsMTIwMDU5LDExNCwxMjAxMTEsMTE0LDEyMDE2MywxMTQsMTIwMjE1LDExNCwxMjAyNjcsMTE0LDEyMDMxOSwxMTQsMTIwMzcxLDExNCwxMjA0MjMsMTE0LDEyMDQ3NSwxMTQsNDM4NDcsMTE0LDQzODQ4LDExNCw3NDYyLDExNCwxMTM5NywxMTQsNDM5MDUsMTE0LDExOTMxOCw4Miw4NDc1LDgyLDg0NzYsODIsODQ3Nyw4MiwxMTk4MjUsODIsMTE5ODc3LDgyLDExOTkyOSw4MiwxMjAwMzMsODIsMTIwMTg5LDgyLDEyMDI0MSw4MiwxMjAyOTMsODIsMTIwMzQ1LDgyLDEyMDM5Nyw4MiwxMjA0NDksODIsNDIyLDgyLDUwMjUsODIsNTA3NCw4Miw2Njc0MCw4Miw1NTExLDgyLDQyMjExLDgyLDk0MDA1LDgyLDY1MzYzLDExNSwxMTk4NTIsMTE1LDExOTkwNCwxMTUsMTE5OTU2LDExNSwxMjAwMDgsMTE1LDEyMDA2MCwxMTUsMTIwMTEyLDExNSwxMjAxNjQsMTE1LDEyMDIxNiwxMTUsMTIwMjY4LDExNSwxMjAzMjAsMTE1LDEyMDM3MiwxMTUsMTIwNDI0LDExNSwxMjA0NzYsMTE1LDQyODAxLDExNSw0NDUsMTE1LDExMDksMTE1LDQzOTQ2LDExNSw3MTg3MywxMTUsNjY2MzIsMTE1LDY1MzMxLDgzLDExOTgyNiw4MywxMTk4NzgsODMsMTE5OTMwLDgzLDExOTk4Miw4MywxMjAwMzQsODMsMTIwMDg2LDgzLDEyMDEzOCw4MywxMjAxOTAsODMsMTIwMjQyLDgzLDEyMDI5NCw4MywxMjAzNDYsODMsMTIwMzk4LDgzLDEyMDQ1MCw4MywxMDI5LDgzLDEzNTksODMsNTA3Nyw4Myw1MDgyLDgzLDQyMjEwLDgzLDk0MDEwLDgzLDY2MTk4LDgzLDY2NTkyLDgzLDExOTg1MywxMTYsMTE5OTA1LDExNiwxMTk5NTcsMTE2LDEyMDAwOSwxMTYsMTIwMDYxLDExNiwxMjAxMTMsMTE2LDEyMDE2NSwxMTYsMTIwMjE3LDExNiwxMjAyNjksMTE2LDEyMDMyMSwxMTYsMTIwMzczLDExNiwxMjA0MjUsMTE2LDEyMDQ3NywxMTYsODg2OCw4NCwxMDIwMSw4NCwxMjg4NzIsODQsNjUzMzIsODQsMTE5ODI3LDg0LDExOTg3OSw4NCwxMTk5MzEsODQsMTE5OTgzLDg0LDEyMDAzNSw4NCwxMjAwODcsODQsMTIwMTM5LDg0LDEyMDE5MSw4NCwxMjAyNDMsODQsMTIwMjk1LDg0LDEyMDM0Nyw4NCwxMjAzOTksODQsMTIwNDUxLDg0LDkzMiw4NCwxMjA1MDcsODQsMTIwNTY1LDg0LDEyMDYyMyw4NCwxMjA2ODEsODQsMTIwNzM5LDg0LDExNDMwLDg0LDUwMjYsODQsNDIxOTYsODQsOTM5NjIsODQsNzE4NjgsODQsNjYxOTksODQsNjYyMjUsODQsNjYzMjUsODQsMTE5ODU0LDExNywxMTk5MDYsMTE3LDExOTk1OCwxMTcsMTIwMDEwLDExNywxMjAwNjIsMTE3LDEyMDExNCwxMTcsMTIwMTY2LDExNywxMjAyMTgsMTE3LDEyMDI3MCwxMTcsMTIwMzIyLDExNywxMjAzNzQsMTE3LDEyMDQyNiwxMTcsMTIwNDc4LDExNyw0MjkxMSwxMTcsNzQ1MiwxMTcsNDM4NTQsMTE3LDQzODU4LDExNyw2NTEsMTE3LDk2NSwxMTcsMTIwNTM0LDExNywxMjA1OTIsMTE3LDEyMDY1MCwxMTcsMTIwNzA4LDExNywxMjA3NjYsMTE3LDE0MDUsMTE3LDY2ODA2LDExNyw3MTg5NiwxMTcsODc0Niw4NSw4ODk5LDg1LDExOTgyOCw4NSwxMTk4ODAsODUsMTE5OTMyLDg1LDExOTk4NCw4NSwxMjAwMzYsODUsMTIwMDg4LDg1LDEyMDE0MCw4NSwxMjAxOTIsODUsMTIwMjQ0LDg1LDEyMDI5Niw4NSwxMjAzNDgsODUsMTIwNDAwLDg1LDEyMDQ1Miw4NSwxMzU3LDg1LDQ2MDgsODUsNjY3NjYsODUsNTE5Niw4NSw0MjIyOCw4NSw5NDAxOCw4NSw3MTg2NCw4NSw4NzQ0LDExOCw4ODk3LDExOCw2NTM2NiwxMTgsODU2NCwxMTgsMTE5ODU1LDExOCwxMTk5MDcsMTE4LDExOTk1OSwxMTgsMTIwMDExLDExOCwxMjAwNjMsMTE4LDEyMDExNSwxMTgsMTIwMTY3LDExOCwxMjAyMTksMTE4LDEyMDI3MSwxMTgsMTIwMzIzLDExOCwxMjAzNzUsMTE4LDEyMDQyNywxMTgsMTIwNDc5LDExOCw3NDU2LDExOCw5NTcsMTE4LDEyMDUyNiwxMTgsMTIwNTg0LDExOCwxMjA2NDIsMTE4LDEyMDcwMCwxMTgsMTIwNzU4LDExOCwxMTQxLDExOCwxNDk2LDExOCw3MTQzMCwxMTgsNDM5NDUsMTE4LDcxODcyLDExOCwxMTkzMDksODYsMTYzOSw4NiwxNzgzLDg2LDg1NDgsODYsMTE5ODI5LDg2LDExOTg4MSw4NiwxMTk5MzMsODYsMTE5OTg1LDg2LDEyMDAzNyw4NiwxMjAwODksODYsMTIwMTQxLDg2LDEyMDE5Myw4NiwxMjAyNDUsODYsMTIwMjk3LDg2LDEyMDM0OSw4NiwxMjA0MDEsODYsMTIwNDUzLDg2LDExNDAsODYsMTE1NzYsODYsNTA4MSw4Niw1MTY3LDg2LDQyNzE5LDg2LDQyMjE0LDg2LDkzOTYwLDg2LDcxODQwLDg2LDY2ODQ1LDg2LDYyMywxMTksMTE5ODU2LDExOSwxMTk5MDgsMTE5LDExOTk2MCwxMTksMTIwMDEyLDExOSwxMjAwNjQsMTE5LDEyMDExNiwxMTksMTIwMTY4LDExOSwxMjAyMjAsMTE5LDEyMDI3MiwxMTksMTIwMzI0LDExOSwxMjAzNzYsMTE5LDEyMDQyOCwxMTksMTIwNDgwLDExOSw3NDU3LDExOSwxMTIxLDExOSwxMzA5LDExOSwxMzc3LDExOSw3MTQzNCwxMTksNzE0MzgsMTE5LDcxNDM5LDExOSw0MzkwNywxMTksNzE5MTksODcsNzE5MTAsODcsMTE5ODMwLDg3LDExOTg4Miw4NywxMTk5MzQsODcsMTE5OTg2LDg3LDEyMDAzOCw4NywxMjAwOTAsODcsMTIwMTQyLDg3LDEyMDE5NCw4NywxMjAyNDYsODcsMTIwMjk4LDg3LDEyMDM1MCw4NywxMjA0MDIsODcsMTIwNDU0LDg3LDEzMDgsODcsNTA0Myw4Nyw1MDc2LDg3LDQyMjE4LDg3LDU3NDIsMTIwLDEwNTM5LDEyMCwxMDU0MCwxMjAsMTA3OTksMTIwLDY1MzY4LDEyMCw4NTY5LDEyMCwxMTk4NTcsMTIwLDExOTkwOSwxMjAsMTE5OTYxLDEyMCwxMjAwMTMsMTIwLDEyMDA2NSwxMjAsMTIwMTE3LDEyMCwxMjAxNjksMTIwLDEyMDIyMSwxMjAsMTIwMjczLDEyMCwxMjAzMjUsMTIwLDEyMDM3NywxMjAsMTIwNDI5LDEyMCwxMjA0ODEsMTIwLDU0NDEsMTIwLDU1MDEsMTIwLDU3NDEsODgsOTU4Nyw4OCw2NjMzOCw4OCw3MTkxNiw4OCw2NTMzNiw4OCw4NTUzLDg4LDExOTgzMSw4OCwxMTk4ODMsODgsMTE5OTM1LDg4LDExOTk4Nyw4OCwxMjAwMzksODgsMTIwMDkxLDg4LDEyMDE0Myw4OCwxMjAxOTUsODgsMTIwMjQ3LDg4LDEyMDI5OSw4OCwxMjAzNTEsODgsMTIwNDAzLDg4LDEyMDQ1NSw4OCw0MjkzMSw4OCw5MzUsODgsMTIwNTEwLDg4LDEyMDU2OCw4OCwxMjA2MjYsODgsMTIwNjg0LDg4LDEyMDc0Miw4OCwxMTQzNiw4OCwxMTYxMyw4OCw1ODE1LDg4LDQyMjE5LDg4LDY2MTkyLDg4LDY2MjI4LDg4LDY2MzI3LDg4LDY2ODU1LDg4LDYxMSwxMjEsNzU2NCwxMjEsNjUzNjksMTIxLDExOTg1OCwxMjEsMTE5OTEwLDEyMSwxMTk5NjIsMTIxLDEyMDAxNCwxMjEsMTIwMDY2LDEyMSwxMjAxMTgsMTIxLDEyMDE3MCwxMjEsMTIwMjIyLDEyMSwxMjAyNzQsMTIxLDEyMDMyNiwxMjEsMTIwMzc4LDEyMSwxMjA0MzAsMTIxLDEyMDQ4MiwxMjEsNjU1LDEyMSw3OTM1LDEyMSw0Mzg2NiwxMjEsOTQ3LDEyMSw4NTA5LDEyMSwxMjA1MTYsMTIxLDEyMDU3NCwxMjEsMTIwNjMyLDEyMSwxMjA2OTAsMTIxLDEyMDc0OCwxMjEsMTE5OSwxMjEsNDMyNywxMjEsNzE5MDAsMTIxLDY1MzM3LDg5LDExOTgzMiw4OSwxMTk4ODQsODksMTE5OTM2LDg5LDExOTk4OCw4OSwxMjAwNDAsODksMTIwMDkyLDg5LDEyMDE0NCw4OSwxMjAxOTYsODksMTIwMjQ4LDg5LDEyMDMwMCw4OSwxMjAzNTIsODksMTIwNDA0LDg5LDEyMDQ1Niw4OSw5MzMsODksOTc4LDg5LDEyMDUwOCw4OSwxMjA1NjYsODksMTIwNjI0LDg5LDEyMDY4Miw4OSwxMjA3NDAsODksMTE0MzIsODksMTE5OCw4OSw1MDMzLDg5LDUwNTMsODksNDIyMjAsODksOTQwMTksODksNzE4NDQsODksNjYyMjYsODksMTE5ODU5LDEyMiwxMTk5MTEsMTIyLDExOTk2MywxMjIsMTIwMDE1LDEyMiwxMjAwNjcsMTIyLDEyMDExOSwxMjIsMTIwMTcxLDEyMiwxMjAyMjMsMTIyLDEyMDI3NSwxMjIsMTIwMzI3LDEyMiwxMjAzNzksMTIyLDEyMDQzMSwxMjIsMTIwNDgzLDEyMiw3NDU4LDEyMiw0MzkyMywxMjIsNzE4NzYsMTIyLDY2MjkzLDkwLDcxOTA5LDkwLDY1MzM4LDkwLDg0ODQsOTAsODQ4OCw5MCwxMTk4MzMsOTAsMTE5ODg1LDkwLDExOTkzNyw5MCwxMTk5ODksOTAsMTIwMDQxLDkwLDEyMDE5Nyw5MCwxMjAyNDksOTAsMTIwMzAxLDkwLDEyMDM1Myw5MCwxMjA0MDUsOTAsMTIwNDU3LDkwLDkxOCw5MCwxMjA0OTMsOTAsMTIwNTUxLDkwLDEyMDYwOSw5MCwxMjA2NjcsOTAsMTIwNzI1LDkwLDUwNTksOTAsNDIyMDQsOTAsNzE4NDksOTAsNjUyODIsMzQsNjUyODQsMzYsNjUyODUsMzcsNjUyODYsMzgsNjUyOTAsNDIsNjUyOTEsNDMsNjUyOTQsNDYsNjUyOTUsNDcsNjUyOTYsNDgsNjUyOTcsNDksNjUyOTgsNTAsNjUyOTksNTEsNjUzMDAsNTIsNjUzMDEsNTMsNjUzMDIsNTQsNjUzMDMsNTUsNjUzMDQsNTYsNjUzMDUsNTcsNjUzMDgsNjAsNjUzMDksNjEsNjUzMTAsNjIsNjUzMTIsNjQsNjUzMTYsNjgsNjUzMTgsNzAsNjUzMTksNzEsNjUzMjQsNzYsNjUzMjksODEsNjUzMzAsODIsNjUzMzMsODUsNjUzMzQsODYsNjUzMzUsODcsNjUzNDMsOTUsNjUzNDYsOTgsNjUzNDgsMTAwLDY1MzUwLDEwMiw2NTM1NSwxMDcsNjUzNTcsMTA5LDY1MzU4LDExMCw2NTM2MSwxMTMsNjUzNjIsMTE0LDY1MzY0LDExNiw2NTM2NSwxMTcsNjUzNjcsMTE5LDY1MzcwLDEyMiw2NTM3MSwxMjMsNjUzNzMsMTI1XSwiX2RlZmF1bHQiOlsxNjAsMzIsODIxMSw0NSw2NTM3NCwxMjYsNjUzMDYsNTgsNjUyODEsMzMsODIxNiw5Niw4MjE3LDk2LDgyNDUsOTYsMTgwLDk2LDEyNDk0LDQ3LDEwNDcsNTEsMTA3Myw1NCwxMDcyLDk3LDEwNDAsNjUsMTA2OCw5OCwxMDQyLDY2LDEwODksOTksMTA1Nyw2NywxMDc3LDEwMSwxMDQ1LDY5LDEwNTMsNzIsMzA1LDEwNSwxMDUwLDc1LDkyMSw3MywxMDUyLDc3LDEwODYsMTExLDEwNTQsNzksMTAwOSwxMTIsMTA4OCwxMTIsMTA1Niw4MCwxMDc1LDExNCwxMDU4LDg0LDIxNSwxMjAsMTA5MywxMjAsMTA2MSw4OCwxMDkxLDEyMSwxMDU5LDg5LDY1MjgzLDM1LDY1Mjg4LDQwLDY1Mjg5LDQxLDY1MjkyLDQ0LDY1MzA3LDU5LDY1MzExLDYzXSwiY3MiOls2NTM3NCwxMjYsNjUzMDYsNTgsNjUyODEsMzMsODIxNiw5Niw4MjE3LDk2LDgyNDUsOTYsMTgwLDk2LDEyNDk0LDQ3LDEwNDcsNTEsMTA3Myw1NCwxMDcyLDk3LDEwNDAsNjUsMTA2OCw5OCwxMDQyLDY2LDEwODksOTksMTA1Nyw2NywxMDc3LDEwMSwxMDQ1LDY5LDEwNTMsNzIsMzA1LDEwNSwxMDUwLDc1LDkyMSw3MywxMDUyLDc3LDEwODYsMTExLDEwNTQsNzksMTAwOSwxMTIsMTA4OCwxMTIsMTA1Niw4MCwxMDc1LDExNCwxMDU4LDg0LDEwOTMsMTIwLDEwNjEsODgsMTA5MSwxMjEsMTA1OSw4OSw2NTI4MywzNSw2NTI4OCw0MCw2NTI4OSw0MSw2NTI5Miw0NCw2NTMwNyw1OSw2NTMxMSw2M10sImRlIjpbNjUzNzQsMTI2LDY1MzA2LDU4LDY1MjgxLDMzLDgyMTYsOTYsODIxNyw5Niw4MjQ1LDk2LDE4MCw5NiwxMjQ5NCw0NywxMDQ3LDUxLDEwNzMsNTQsMTA3Miw5NywxMDQwLDY1LDEwNjgsOTgsMTA0Miw2NiwxMDg5LDk5LDEwNTcsNjcsMTA3NywxMDEsMTA0NSw2OSwxMDUzLDcyLDMwNSwxMDUsMTA1MCw3NSw5MjEsNzMsMTA1Miw3NywxMDg2LDExMSwxMDU0LDc5LDEwMDksMTEyLDEwODgsMTEyLDEwNTYsODAsMTA3NSwxMTQsMTA1OCw4NCwxMDkzLDEyMCwxMDYxLDg4LDEwOTEsMTIxLDEwNTksODksNjUyODMsMzUsNjUyODgsNDAsNjUyODksNDEsNjUyOTIsNDQsNjUzMDcsNTksNjUzMTEsNjNdLCJlcyI6WzgyMTEsNDUsNjUzNzQsMTI2LDY1MzA2LDU4LDY1MjgxLDMzLDgyNDUsOTYsMTgwLDk2LDEyNDk0LDQ3LDEwNDcsNTEsMTA3Myw1NCwxMDcyLDk3LDEwNDAsNjUsMTA2OCw5OCwxMDQyLDY2LDEwODksOTksMTA1Nyw2NywxMDc3LDEwMSwxMDQ1LDY5LDEwNTMsNzIsMzA1LDEwNSwxMDUwLDc1LDEwNTIsNzcsMTA4NiwxMTEsMTA1NCw3OSwxMDA5LDExMiwxMDg4LDExMiwxMDU2LDgwLDEwNzUsMTE0LDEwNTgsODQsMjE1LDEyMCwxMDkzLDEyMCwxMDYxLDg4LDEwOTEsMTIxLDEwNTksODksNjUyODMsMzUsNjUyODgsNDAsNjUyODksNDEsNjUyOTIsNDQsNjUzMDcsNTksNjUzMTEsNjNdLCJmciI6WzY1Mzc0LDEyNiw2NTMwNiw1OCw2NTI4MSwzMyw4MjE2LDk2LDgyNDUsOTYsMTI0OTQsNDcsMTA0Nyw1MSwxMDczLDU0LDEwNzIsOTcsMTA0MCw2NSwxMDY4LDk4LDEwNDIsNjYsMTA4OSw5OSwxMDU3LDY3LDEwNzcsMTAxLDEwNDUsNjksMTA1Myw3MiwzMDUsMTA1LDEwNTAsNzUsOTIxLDczLDEwNTIsNzcsMTA4NiwxMTEsMTA1NCw3OSwxMDA5LDExMiwxMDg4LDExMiwxMDU2LDgwLDEwNzUsMTE0LDEwNTgsODQsMjE1LDEyMCwxMDkzLDEyMCwxMDYxLDg4LDEwOTEsMTIxLDEwNTksODksNjUyODMsMzUsNjUyODgsNDAsNjUyODksNDEsNjUyOTIsNDQsNjUzMDcsNTksNjUzMTEsNjNdLCJpdCI6WzE2MCwzMiw4MjExLDQ1LDY1Mzc0LDEyNiw2NTMwNiw1OCw2NTI4MSwzMyw4MjE2LDk2LDgyNDUsOTYsMTgwLDk2LDEyNDk0LDQ3LDEwNDcsNTEsMTA3Myw1NCwxMDcyLDk3LDEwNDAsNjUsMTA2OCw5OCwxMDQyLDY2LDEwODksOTksMTA1Nyw2NywxMDc3LDEwMSwxMDQ1LDY5LDEwNTMsNzIsMzA1LDEwNSwxMDUwLDc1LDkyMSw3MywxMDUyLDc3LDEwODYsMTExLDEwNTQsNzksMTAwOSwxMTIsMTA4OCwxMTIsMTA1Niw4MCwxMDc1LDExNCwxMDU4LDg0LDIxNSwxMjAsMTA5MywxMjAsMTA2MSw4OCwxMDkxLDEyMSwxMDU5LDg5LDY1MjgzLDM1LDY1Mjg4LDQwLDY1Mjg5LDQxLDY1MjkyLDQ0LDY1MzA3LDU5LDY1MzExLDYzXSwiamEiOls4MjExLDQ1LDY1MzA2LDU4LDY1MjgxLDMzLDgyMTYsOTYsODIxNyw5Niw4MjQ1LDk2LDE4MCw5NiwxMDQ3LDUxLDEwNzMsNTQsMTA3Miw5NywxMDQwLDY1LDEwNjgsOTgsMTA0Miw2NiwxMDg5LDk5LDEwNTcsNjcsMTA3NywxMDEsMTA0NSw2OSwxMDUzLDcyLDMwNSwxMDUsMTA1MCw3NSw5MjEsNzMsMTA1Miw3NywxMDg2LDExMSwxMDU0LDc5LDEwMDksMTEyLDEwODgsMTEyLDEwNTYsODAsMTA3NSwxMTQsMTA1OCw4NCwyMTUsMTIwLDEwOTMsMTIwLDEwNjEsODgsMTA5MSwxMjEsMTA1OSw4OSw2NTI4MywzNSw2NTI5Miw0NCw2NTMwNyw1OV0sImtvIjpbODIxMSw0NSw2NTM3NCwxMjYsNjUzMDYsNTgsNjUyODEsMzMsODI0NSw5NiwxODAsOTYsMTI0OTQsNDcsMTA0Nyw1MSwxMDczLDU0LDEwNzIsOTcsMTA0MCw2NSwxMDY4LDk4LDEwNDIsNjYsMTA4OSw5OSwxMDU3LDY3LDEwNzcsMTAxLDEwNDUsNjksMTA1Myw3MiwzMDUsMTA1LDEwNTAsNzUsOTIxLDczLDEwNTIsNzcsMTA4NiwxMTEsMTA1NCw3OSwxMDA5LDExMiwxMDg4LDExMiwxMDU2LDgwLDEwNzUsMTE0LDEwNTgsODQsMjE1LDEyMCwxMDkzLDEyMCwxMDYxLDg4LDEwOTEsMTIxLDEwNTksODksNjUyODMsMzUsNjUyODgsNDAsNjUyODksNDEsNjUyOTIsNDQsNjUzMDcsNTksNjUzMTEsNjNdLCJwbCI6WzY1Mzc0LDEyNiw2NTMwNiw1OCw2NTI4MSwzMyw4MjE2LDk2LDgyMTcsOTYsODI0NSw5NiwxODAsOTYsMTI0OTQsNDcsMTA0Nyw1MSwxMDczLDU0LDEwNzIsOTcsMTA0MCw2NSwxMDY4LDk4LDEwNDIsNjYsMTA4OSw5OSwxMDU3LDY3LDEwNzcsMTAxLDEwNDUsNjksMTA1Myw3MiwzMDUsMTA1LDEwNTAsNzUsOTIxLDczLDEwNTIsNzcsMTA4NiwxMTEsMTA1NCw3OSwxMDA5LDExMiwxMDg4LDExMiwxMDU2LDgwLDEwNzUsMTE0LDEwNTgsODQsMjE1LDEyMCwxMDkzLDEyMCwxMDYxLDg4LDEwOTEsMTIxLDEwNTksODksNjUyODMsMzUsNjUyODgsNDAsNjUyODksNDEsNjUyOTIsNDQsNjUzMDcsNTksNjUzMTEsNjNdLCJwdC1CUiI6WzY1Mzc0LDEyNiw2NTMwNiw1OCw2NTI4MSwzMyw4MjE2LDk2LDgyMTcsOTYsODI0NSw5NiwxODAsOTYsMTI0OTQsNDcsMTA0Nyw1MSwxMDczLDU0LDEwNzIsOTcsMTA0MCw2NSwxMDY4LDk4LDEwNDIsNjYsMTA4OSw5OSwxMDU3LDY3LDEwNzcsMTAxLDEwNDUsNjksMTA1Myw3MiwzMDUsMTA1LDEwNTAsNzUsOTIxLDczLDEwNTIsNzcsMTA4NiwxMTEsMTA1NCw3OSwxMDA5LDExMiwxMDg4LDExMiwxMDU2LDgwLDEwNzUsMTE0LDEwNTgsODQsMjE1LDEyMCwxMDkzLDEyMCwxMDYxLDg4LDEwOTEsMTIxLDEwNTksODksNjUyODMsMzUsNjUyODgsNDAsNjUyODksNDEsNjUyOTIsNDQsNjUzMDcsNTksNjUzMTEsNjNdLCJxcHMtcGxvYyI6WzE2MCwzMiw4MjExLDQ1LDY1Mzc0LDEyNiw2NTMwNiw1OCw2NTI4MSwzMyw4MjE2LDk2LDgyMTcsOTYsODI0NSw5NiwxODAsOTYsMTI0OTQsNDcsMTA0Nyw1MSwxMDczLDU0LDEwNzIsOTcsMTA0MCw2NSwxMDY4LDk4LDEwNDIsNjYsMTA4OSw5OSwxMDU3LDY3LDEwNzcsMTAxLDEwNDUsNjksMTA1Myw3MiwzMDUsMTA1LDEwNTAsNzUsOTIxLDczLDEwNTIsNzcsMTA4NiwxMTEsMTA1NCw3OSwxMDg4LDExMiwxMDU2LDgwLDEwNzUsMTE0LDEwNTgsODQsMjE1LDEyMCwxMDkzLDEyMCwxMDYxLDg4LDEwOTEsMTIxLDEwNTksODksNjUyODMsMzUsNjUyODgsNDAsNjUyODksNDEsNjUyOTIsNDQsNjUzMDcsNTksNjUzMTEsNjNdLCJydSI6WzY1Mzc0LDEyNiw2NTMwNiw1OCw2NTI4MSwzMyw4MjE2LDk2LDgyMTcsOTYsODI0NSw5NiwxODAsOTYsMTI0OTQsNDcsMzA1LDEwNSw5MjEsNzMsMTAwOSwxMTIsMjE1LDEyMCw2NTI4MywzNSw2NTI4OCw0MCw2NTI4OSw0MSw2NTI5Miw0NCw2NTMwNyw1OSw2NTMxMSw2M10sInRyIjpbMTYwLDMyLDgyMTEsNDUsNjUzNzQsMTI2LDY1MzA2LDU4LDY1MjgxLDMzLDgyNDUsOTYsMTgwLDk2LDEyNDk0LDQ3LDEwNDcsNTEsMTA3Myw1NCwxMDcyLDk3LDEwNDAsNjUsMTA2OCw5OCwxMDQyLDY2LDEwODksOTksMTA1Nyw2NywxMDc3LDEwMSwxMDQ1LDY5LDEwNTMsNzIsMTA1MCw3NSw5MjEsNzMsMTA1Miw3NywxMDg2LDExMSwxMDU0LDc5LDEwMDksMTEyLDEwODgsMTEyLDEwNTYsODAsMTA3NSwxMTQsMTA1OCw4NCwyMTUsMTIwLDEwOTMsMTIwLDEwNjEsODgsMTA5MSwxMjEsMTA1OSw4OSw2NTI4MywzNSw2NTI4OCw0MCw2NTI4OSw0MSw2NTI5Miw0NCw2NTMwNyw1OSw2NTMxMSw2M10sInpoLWhhbnMiOls2NTM3NCwxMjYsNjUzMDYsNTgsNjUyODEsMzMsODI0NSw5NiwxODAsOTYsMTI0OTQsNDcsMTA0Nyw1MSwxMDczLDU0LDEwNzIsOTcsMTA0MCw2NSwxMDY4LDk4LDEwNDIsNjYsMTA4OSw5OSwxMDU3LDY3LDEwNzcsMTAxLDEwNDUsNjksMTA1Myw3MiwzMDUsMTA1LDEwNTAsNzUsOTIxLDczLDEwNTIsNzcsMTA4NiwxMTEsMTA1NCw3OSwxMDA5LDExMiwxMDg4LDExMiwxMDU2LDgwLDEwNzUsMTE0LDEwNTgsODQsMjE1LDEyMCwxMDkzLDEyMCwxMDYxLDg4LDEwOTEsMTIxLDEwNTksODksNjUyODgsNDAsNjUyODksNDFdLCJ6aC1oYW50IjpbODIxMSw0NSw2NTM3NCwxMjYsMTgwLDk2LDEyNDk0LDQ3LDEwNDcsNTEsMTA3Myw1NCwxMDcyLDk3LDEwNDAsNjUsMTA2OCw5OCwxMDQyLDY2LDEwODksOTksMTA1Nyw2NywxMDc3LDEwMSwxMDQ1LDY5LDEwNTMsNzIsMzA1LDEwNSwxMDUwLDc1LDkyMSw3MywxMDUyLDc3LDEwODYsMTExLDEwNTQsNzksMTAwOSwxMTIsMTA4OCwxMTIsMTA1Niw4MCwxMDc1LDExNCwxMDU4LDg0LDIxNSwxMjAsMTA5MywxMjAsMTA2MSw4OCwxMDkxLDEyMSwxMDU5LDg5LDY1MjgzLDM1LDY1MzA3LDU5XX0nKSkpLFEuY2FjaGU9bmV3IGNsYXNze2NvbnN0cnVjdG9yKGUpe3RoaXMuZm49ZSx0aGlzLmxhc3RDYWNoZT12b2lkIDAsdGhpcy5sYXN0QXJnS2V5PXZvaWQgMH1nZXQoZSl7Y29uc3QgdD1KU09OLnN0cmluZ2lmeShlKTtyZXR1cm4gdGhpcy5sYXN0QXJnS2V5IT09dCYmKHRoaXMubGFzdEFyZ0tleT10LHRoaXMubGFzdENhY2hlPXRoaXMuZm4oZSkpLHRoaXMubGFzdENhY2hlfX0oKGU9PntmdW5jdGlvbiB0KGUpe2NvbnN0IHQ9bmV3IE1hcDtmb3IobGV0IG49MDtuPGUubGVuZ3RoO24rPTIpdC5zZXQoZVtuXSxlW24rMV0pO3JldHVybiB0fWZ1bmN0aW9uIG4oZSx0KXtpZighZSlyZXR1cm4gdDtjb25zdCBuPW5ldyBNYXA7Zm9yKGNvbnN0W3IsaV1vZiBlKXQuaGFzKHIpJiZuLnNldChyLGkpO3JldHVybiBufWNvbnN0IHI9Vy5hbWJpZ3VvdXNDaGFyYWN0ZXJEYXRhLmdldFZhbHVlKCk7bGV0IGksYT1lLmZpbHRlcigoZT0+IWUuc3RhcnRzV2l0aCgiXyIpJiZlIGluIHIpKTswPT09YS5sZW5ndGgmJihhPVsiX2RlZmF1bHQiXSk7Zm9yKGNvbnN0IGUgb2YgYSl7aT1uKGksdChyW2VdKSl9Y29uc3Qgbz1mdW5jdGlvbihlLHQpe2NvbnN0IG49bmV3IE1hcChlKTtmb3IoY29uc3RbZSxyXW9mIHQpbi5zZXQoZSxyKTtyZXR1cm4gbn0odChyLl9jb21tb24pLGkpO3JldHVybiBuZXcgUShvKX0pKSxRLl9sb2NhbGVzPW5ldyBHKCgoKT0+T2JqZWN0LmtleXMoUS5hbWJpZ3VvdXNDaGFyYWN0ZXJEYXRhLmdldFZhbHVlKCkpLmZpbHRlcigoZT0+IWUuc3RhcnRzV2l0aCgiXyIpKSkpKTtjbGFzcyBae3N0YXRpYyBnZXRSYXdEYXRhKCl7cmV0dXJuIEpTT04ucGFyc2UoIls5LDEwLDExLDEyLDEzLDMyLDEyNywxNjAsMTczLDg0NywxNTY0LDQ0NDcsNDQ0OCw2MDY4LDYwNjksNjE1NSw2MTU2LDYxNTcsNjE1OCw3MzU1LDczNTYsODE5Miw4MTkzLDgxOTQsODE5NSw4MTk2LDgxOTcsODE5OCw4MTk5LDgyMDAsODIwMSw4MjAyLDgyMDMsODIwNCw4MjA1LDgyMDYsODIwNyw4MjM0LDgyMzUsODIzNiw4MjM3LDgyMzgsODIzOSw4Mjg3LDgyODgsODI4OSw4MjkwLDgyOTEsODI5Miw4MjkzLDgyOTQsODI5NSw4Mjk2LDgyOTcsODI5OCw4Mjk5LDgzMDAsODMwMSw4MzAyLDgzMDMsMTAyNDAsMTIyODgsMTI2NDQsNjUwMjQsNjUwMjUsNjUwMjYsNjUwMjcsNjUwMjgsNjUwMjksNjUwMzAsNjUwMzEsNjUwMzIsNjUwMzMsNjUwMzQsNjUwMzUsNjUwMzYsNjUwMzcsNjUwMzgsNjUwMzksNjUyNzksNjU0NDAsNjU1MjAsNjU1MjEsNjU1MjIsNjU1MjMsNjU1MjQsNjU1MjUsNjU1MjYsNjU1MjcsNjU1MjgsNjU1MzIsNzg4NDQsMTE5MTU1LDExOTE1NiwxMTkxNTcsMTE5MTU4LDExOTE1OSwxMTkxNjAsMTE5MTYxLDExOTE2Miw5MTc1MDQsOTE3NTA1LDkxNzUwNiw5MTc1MDcsOTE3NTA4LDkxNzUwOSw5MTc1MTAsOTE3NTExLDkxNzUxMiw5MTc1MTMsOTE3NTE0LDkxNzUxNSw5MTc1MTYsOTE3NTE3LDkxNzUxOCw5MTc1MTksOTE3NTIwLDkxNzUyMSw5MTc1MjIsOTE3NTIzLDkxNzUyNCw5MTc1MjUsOTE3NTI2LDkxNzUyNyw5MTc1MjgsOTE3NTI5LDkxNzUzMCw5MTc1MzEsOTE3NTMyLDkxNzUzMyw5MTc1MzQsOTE3NTM1LDkxNzUzNiw5MTc1MzcsOTE3NTM4LDkxNzUzOSw5MTc1NDAsOTE3NTQxLDkxNzU0Miw5MTc1NDMsOTE3NTQ0LDkxNzU0NSw5MTc1NDYsOTE3NTQ3LDkxNzU0OCw5MTc1NDksOTE3NTUwLDkxNzU1MSw5MTc1NTIsOTE3NTUzLDkxNzU1NCw5MTc1NTUsOTE3NTU2LDkxNzU1Nyw5MTc1NTgsOTE3NTU5LDkxNzU2MCw5MTc1NjEsOTE3NTYyLDkxNzU2Myw5MTc1NjQsOTE3NTY1LDkxNzU2Niw5MTc1NjcsOTE3NTY4LDkxNzU2OSw5MTc1NzAsOTE3NTcxLDkxNzU3Miw5MTc1NzMsOTE3NTc0LDkxNzU3NSw5MTc1NzYsOTE3NTc3LDkxNzU3OCw5MTc1NzksOTE3NTgwLDkxNzU4MSw5MTc1ODIsOTE3NTgzLDkxNzU4NCw5MTc1ODUsOTE3NTg2LDkxNzU4Nyw5MTc1ODgsOTE3NTg5LDkxNzU5MCw5MTc1OTEsOTE3NTkyLDkxNzU5Myw5MTc1OTQsOTE3NTk1LDkxNzU5Niw5MTc1OTcsOTE3NTk4LDkxNzU5OSw5MTc2MDAsOTE3NjAxLDkxNzYwMiw5MTc2MDMsOTE3NjA0LDkxNzYwNSw5MTc2MDYsOTE3NjA3LDkxNzYwOCw5MTc2MDksOTE3NjEwLDkxNzYxMSw5MTc2MTIsOTE3NjEzLDkxNzYxNCw5MTc2MTUsOTE3NjE2LDkxNzYxNyw5MTc2MTgsOTE3NjE5LDkxNzYyMCw5MTc2MjEsOTE3NjIyLDkxNzYyMyw5MTc2MjQsOTE3NjI1LDkxNzYyNiw5MTc2MjcsOTE3NjI4LDkxNzYyOSw5MTc2MzAsOTE3NjMxLDkxNzc2MCw5MTc3NjEsOTE3NzYyLDkxNzc2Myw5MTc3NjQsOTE3NzY1LDkxNzc2Niw5MTc3NjcsOTE3NzY4LDkxNzc2OSw5MTc3NzAsOTE3NzcxLDkxNzc3Miw5MTc3NzMsOTE3Nzc0LDkxNzc3NSw5MTc3NzYsOTE3Nzc3LDkxNzc3OCw5MTc3NzksOTE3NzgwLDkxNzc4MSw5MTc3ODIsOTE3NzgzLDkxNzc4NCw5MTc3ODUsOTE3Nzg2LDkxNzc4Nyw5MTc3ODgsOTE3Nzg5LDkxNzc5MCw5MTc3OTEsOTE3NzkyLDkxNzc5Myw5MTc3OTQsOTE3Nzk1LDkxNzc5Niw5MTc3OTcsOTE3Nzk4LDkxNzc5OSw5MTc4MDAsOTE3ODAxLDkxNzgwMiw5MTc4MDMsOTE3ODA0LDkxNzgwNSw5MTc4MDYsOTE3ODA3LDkxNzgwOCw5MTc4MDksOTE3ODEwLDkxNzgxMSw5MTc4MTIsOTE3ODEzLDkxNzgxNCw5MTc4MTUsOTE3ODE2LDkxNzgxNyw5MTc4MTgsOTE3ODE5LDkxNzgyMCw5MTc4MjEsOTE3ODIyLDkxNzgyMyw5MTc4MjQsOTE3ODI1LDkxNzgyNiw5MTc4MjcsOTE3ODI4LDkxNzgyOSw5MTc4MzAsOTE3ODMxLDkxNzgzMiw5MTc4MzMsOTE3ODM0LDkxNzgzNSw5MTc4MzYsOTE3ODM3LDkxNzgzOCw5MTc4MzksOTE3ODQwLDkxNzg0MSw5MTc4NDIsOTE3ODQzLDkxNzg0NCw5MTc4NDUsOTE3ODQ2LDkxNzg0Nyw5MTc4NDgsOTE3ODQ5LDkxNzg1MCw5MTc4NTEsOTE3ODUyLDkxNzg1Myw5MTc4NTQsOTE3ODU1LDkxNzg1Niw5MTc4NTcsOTE3ODU4LDkxNzg1OSw5MTc4NjAsOTE3ODYxLDkxNzg2Miw5MTc4NjMsOTE3ODY0LDkxNzg2NSw5MTc4NjYsOTE3ODY3LDkxNzg2OCw5MTc4NjksOTE3ODcwLDkxNzg3MSw5MTc4NzIsOTE3ODczLDkxNzg3NCw5MTc4NzUsOTE3ODc2LDkxNzg3Nyw5MTc4NzgsOTE3ODc5LDkxNzg4MCw5MTc4ODEsOTE3ODgyLDkxNzg4Myw5MTc4ODQsOTE3ODg1LDkxNzg4Niw5MTc4ODcsOTE3ODg4LDkxNzg4OSw5MTc4OTAsOTE3ODkxLDkxNzg5Miw5MTc4OTMsOTE3ODk0LDkxNzg5NSw5MTc4OTYsOTE3ODk3LDkxNzg5OCw5MTc4OTksOTE3OTAwLDkxNzkwMSw5MTc5MDIsOTE3OTAzLDkxNzkwNCw5MTc5MDUsOTE3OTA2LDkxNzkwNyw5MTc5MDgsOTE3OTA5LDkxNzkxMCw5MTc5MTEsOTE3OTEyLDkxNzkxMyw5MTc5MTQsOTE3OTE1LDkxNzkxNiw5MTc5MTcsOTE3OTE4LDkxNzkxOSw5MTc5MjAsOTE3OTIxLDkxNzkyMiw5MTc5MjMsOTE3OTI0LDkxNzkyNSw5MTc5MjYsOTE3OTI3LDkxNzkyOCw5MTc5MjksOTE3OTMwLDkxNzkzMSw5MTc5MzIsOTE3OTMzLDkxNzkzNCw5MTc5MzUsOTE3OTM2LDkxNzkzNyw5MTc5MzgsOTE3OTM5LDkxNzk0MCw5MTc5NDEsOTE3OTQyLDkxNzk0Myw5MTc5NDQsOTE3OTQ1LDkxNzk0Niw5MTc5NDcsOTE3OTQ4LDkxNzk0OSw5MTc5NTAsOTE3OTUxLDkxNzk1Miw5MTc5NTMsOTE3OTU0LDkxNzk1NSw5MTc5NTYsOTE3OTU3LDkxNzk1OCw5MTc5NTksOTE3OTYwLDkxNzk2MSw5MTc5NjIsOTE3OTYzLDkxNzk2NCw5MTc5NjUsOTE3OTY2LDkxNzk2Nyw5MTc5NjgsOTE3OTY5LDkxNzk3MCw5MTc5NzEsOTE3OTcyLDkxNzk3Myw5MTc5NzQsOTE3OTc1LDkxNzk3Niw5MTc5NzcsOTE3OTc4LDkxNzk3OSw5MTc5ODAsOTE3OTgxLDkxNzk4Miw5MTc5ODMsOTE3OTg0LDkxNzk4NSw5MTc5ODYsOTE3OTg3LDkxNzk4OCw5MTc5ODksOTE3OTkwLDkxNzk5MSw5MTc5OTIsOTE3OTkzLDkxNzk5NCw5MTc5OTUsOTE3OTk2LDkxNzk5Nyw5MTc5OTgsOTE3OTk5XSIpfXN0YXRpYyBnZXREYXRhKCl7cmV0dXJuIHRoaXMuX2RhdGF8fCh0aGlzLl9kYXRhPW5ldyBTZXQoWi5nZXRSYXdEYXRhKCkpKSx0aGlzLl9kYXRhfXN0YXRpYyBpc0ludmlzaWJsZUNoYXJhY3RlcihlKXtyZXR1cm4gWi5nZXREYXRhKCkuaGFzKGUpfXN0YXRpYyBnZXQgY29kZVBvaW50cygpe3JldHVybiBaLmdldERhdGEoKX19Wi5fZGF0YT12b2lkIDA7Y2xhc3MgZWV7Y29uc3RydWN0b3IoZSx0LG4scil7dGhpcy52c1dvcmtlcj1lLHRoaXMucmVxPXQsdGhpcy5tZXRob2Q9bix0aGlzLmFyZ3M9cix0aGlzLnR5cGU9MH19Y2xhc3MgdGV7Y29uc3RydWN0b3IoZSx0LG4scil7dGhpcy52c1dvcmtlcj1lLHRoaXMuc2VxPXQsdGhpcy5yZXM9bix0aGlzLmVycj1yLHRoaXMudHlwZT0xfX1jbGFzcyBuZXtjb25zdHJ1Y3RvcihlLHQsbixyKXt0aGlzLnZzV29ya2VyPWUsdGhpcy5yZXE9dCx0aGlzLmV2ZW50TmFtZT1uLHRoaXMuYXJnPXIsdGhpcy50eXBlPTJ9fWNsYXNzIHJle2NvbnN0cnVjdG9yKGUsdCxuKXt0aGlzLnZzV29ya2VyPWUsdGhpcy5yZXE9dCx0aGlzLmV2ZW50PW4sdGhpcy50eXBlPTN9fWNsYXNzIGlle2NvbnN0cnVjdG9yKGUsdCl7dGhpcy52c1dvcmtlcj1lLHRoaXMucmVxPXQsdGhpcy50eXBlPTR9fWNsYXNzIGFle2NvbnN0cnVjdG9yKGUpe3RoaXMuX3dvcmtlcklkPS0xLHRoaXMuX2hhbmRsZXI9ZSx0aGlzLl9sYXN0U2VudFJlcT0wLHRoaXMuX3BlbmRpbmdSZXBsaWVzPU9iamVjdC5jcmVhdGUobnVsbCksdGhpcy5fcGVuZGluZ0VtaXR0ZXJzPW5ldyBNYXAsdGhpcy5fcGVuZGluZ0V2ZW50cz1uZXcgTWFwfXNldFdvcmtlcklkKGUpe3RoaXMuX3dvcmtlcklkPWV9c2VuZE1lc3NhZ2UoZSx0KXtjb25zdCBuPVN0cmluZygrK3RoaXMuX2xhc3RTZW50UmVxKTtyZXR1cm4gbmV3IFByb21pc2UoKChyLGkpPT57dGhpcy5fcGVuZGluZ1JlcGxpZXNbbl09e3Jlc29sdmU6cixyZWplY3Q6aX0sdGhpcy5fc2VuZChuZXcgZWUodGhpcy5fd29ya2VySWQsbixlLHQpKX0pKX1saXN0ZW4oZSx0KXtsZXQgbj1udWxsO2NvbnN0IHI9bmV3IEYoe29uRmlyc3RMaXN0ZW5lckFkZDooKT0+e249U3RyaW5nKCsrdGhpcy5fbGFzdFNlbnRSZXEpLHRoaXMuX3BlbmRpbmdFbWl0dGVycy5zZXQobixyKSx0aGlzLl9zZW5kKG5ldyBuZSh0aGlzLl93b3JrZXJJZCxuLGUsdCkpfSxvbkxhc3RMaXN0ZW5lclJlbW92ZTooKT0+e3RoaXMuX3BlbmRpbmdFbWl0dGVycy5kZWxldGUobiksdGhpcy5fc2VuZChuZXcgaWUodGhpcy5fd29ya2VySWQsbikpLG49bnVsbH19KTtyZXR1cm4gci5ldmVudH1oYW5kbGVNZXNzYWdlKGUpe2UmJmUudnNXb3JrZXImJigtMSE9PXRoaXMuX3dvcmtlcklkJiZlLnZzV29ya2VyIT09dGhpcy5fd29ya2VySWR8fHRoaXMuX2hhbmRsZU1lc3NhZ2UoZSkpfV9oYW5kbGVNZXNzYWdlKGUpe3N3aXRjaChlLnR5cGUpe2Nhc2UgMTpyZXR1cm4gdGhpcy5faGFuZGxlUmVwbHlNZXNzYWdlKGUpO2Nhc2UgMDpyZXR1cm4gdGhpcy5faGFuZGxlUmVxdWVzdE1lc3NhZ2UoZSk7Y2FzZSAyOnJldHVybiB0aGlzLl9oYW5kbGVTdWJzY3JpYmVFdmVudE1lc3NhZ2UoZSk7Y2FzZSAzOnJldHVybiB0aGlzLl9oYW5kbGVFdmVudE1lc3NhZ2UoZSk7Y2FzZSA0OnJldHVybiB0aGlzLl9oYW5kbGVVbnN1YnNjcmliZUV2ZW50TWVzc2FnZShlKX19X2hhbmRsZVJlcGx5TWVzc2FnZShlKXtpZighdGhpcy5fcGVuZGluZ1JlcGxpZXNbZS5zZXFdKXJldHVybiB2b2lkIGNvbnNvbGUud2FybigiR290IHJlcGx5IHRvIHVua25vd24gc2VxIik7Y29uc3QgdD10aGlzLl9wZW5kaW5nUmVwbGllc1tlLnNlcV07aWYoZGVsZXRlIHRoaXMuX3BlbmRpbmdSZXBsaWVzW2Uuc2VxXSxlLmVycil7bGV0IG49ZS5lcnI7cmV0dXJuIGUuZXJyLiRpc0Vycm9yJiYobj1uZXcgRXJyb3Isbi5uYW1lPWUuZXJyLm5hbWUsbi5tZXNzYWdlPWUuZXJyLm1lc3NhZ2Usbi5zdGFjaz1lLmVyci5zdGFjayksdm9pZCB0LnJlamVjdChuKX10LnJlc29sdmUoZS5yZXMpfV9oYW5kbGVSZXF1ZXN0TWVzc2FnZShlKXtjb25zdCB0PWUucmVxO3RoaXMuX2hhbmRsZXIuaGFuZGxlTWVzc2FnZShlLm1ldGhvZCxlLmFyZ3MpLnRoZW4oKGU9Pnt0aGlzLl9zZW5kKG5ldyB0ZSh0aGlzLl93b3JrZXJJZCx0LGUsdm9pZCAwKSl9KSwoZT0+e2UuZGV0YWlsIGluc3RhbmNlb2YgRXJyb3ImJihlLmRldGFpbD1uKGUuZGV0YWlsKSksdGhpcy5fc2VuZChuZXcgdGUodGhpcy5fd29ya2VySWQsdCx2b2lkIDAsbihlKSkpfSkpfV9oYW5kbGVTdWJzY3JpYmVFdmVudE1lc3NhZ2UoZSl7Y29uc3QgdD1lLnJlcSxuPXRoaXMuX2hhbmRsZXIuaGFuZGxlRXZlbnQoZS5ldmVudE5hbWUsZS5hcmcpKChlPT57dGhpcy5fc2VuZChuZXcgcmUodGhpcy5fd29ya2VySWQsdCxlKSl9KSk7dGhpcy5fcGVuZGluZ0V2ZW50cy5zZXQodCxuKX1faGFuZGxlRXZlbnRNZXNzYWdlKGUpe3RoaXMuX3BlbmRpbmdFbWl0dGVycy5oYXMoZS5yZXEpP3RoaXMuX3BlbmRpbmdFbWl0dGVycy5nZXQoZS5yZXEpLmZpcmUoZS5ldmVudCk6Y29uc29sZS53YXJuKCJHb3QgZXZlbnQgZm9yIHVua25vd24gcmVxIil9X2hhbmRsZVVuc3Vic2NyaWJlRXZlbnRNZXNzYWdlKGUpe3RoaXMuX3BlbmRpbmdFdmVudHMuaGFzKGUucmVxKT8odGhpcy5fcGVuZGluZ0V2ZW50cy5nZXQoZS5yZXEpLmRpc3Bvc2UoKSx0aGlzLl9wZW5kaW5nRXZlbnRzLmRlbGV0ZShlLnJlcSkpOmNvbnNvbGUud2FybigiR290IHVuc3Vic2NyaWJlIGZvciB1bmtub3duIHJlcSIpfV9zZW5kKGUpe2NvbnN0IHQ9W107aWYoMD09PWUudHlwZSlmb3IobGV0IG49MDtuPGUuYXJncy5sZW5ndGg7bisrKWUuYXJnc1tuXWluc3RhbmNlb2YgQXJyYXlCdWZmZXImJnQucHVzaChlLmFyZ3Nbbl0pO2Vsc2UgMT09PWUudHlwZSYmZS5yZXMgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlciYmdC5wdXNoKGUucmVzKTt0aGlzLl9oYW5kbGVyLnNlbmRNZXNzYWdlKGUsdCl9fWZ1bmN0aW9uIG9lKGUpe3JldHVybiJvIj09PWVbMF0mJiJuIj09PWVbMV0mJiQoZS5jaGFyQ29kZUF0KDIpKX1mdW5jdGlvbiBzZShlKXtyZXR1cm4vXm9uRHluYW1pYy8udGVzdChlKSYmJChlLmNoYXJDb2RlQXQoOSkpfWNsYXNzIGxle2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5fcmVxdWVzdEhhbmRsZXJGYWN0b3J5PXQsdGhpcy5fcmVxdWVzdEhhbmRsZXI9bnVsbCx0aGlzLl9wcm90b2NvbD1uZXcgYWUoe3NlbmRNZXNzYWdlOih0LG4pPT57ZSh0LG4pfSxoYW5kbGVNZXNzYWdlOihlLHQpPT50aGlzLl9oYW5kbGVNZXNzYWdlKGUsdCksaGFuZGxlRXZlbnQ6KGUsdCk9PnRoaXMuX2hhbmRsZUV2ZW50KGUsdCl9KX1vbm1lc3NhZ2UoZSl7dGhpcy5fcHJvdG9jb2wuaGFuZGxlTWVzc2FnZShlKX1faGFuZGxlTWVzc2FnZShlLHQpe2lmKCIkaW5pdGlhbGl6ZSI9PT1lKXJldHVybiB0aGlzLmluaXRpYWxpemUodFswXSx0WzFdLHRbMl0sdFszXSk7aWYoIXRoaXMuX3JlcXVlc3RIYW5kbGVyfHwiZnVuY3Rpb24iIT10eXBlb2YgdGhpcy5fcmVxdWVzdEhhbmRsZXJbZV0pcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBFcnJvcigiTWlzc2luZyByZXF1ZXN0SGFuZGxlciBvciBtZXRob2Q6ICIrZSkpO3RyeXtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRoaXMuX3JlcXVlc3RIYW5kbGVyW2VdLmFwcGx5KHRoaXMuX3JlcXVlc3RIYW5kbGVyLHQpKX1jYXRjaChlKXtyZXR1cm4gUHJvbWlzZS5yZWplY3QoZSl9fV9oYW5kbGVFdmVudChlLHQpe2lmKCF0aGlzLl9yZXF1ZXN0SGFuZGxlcil0aHJvdyBuZXcgRXJyb3IoIk1pc3NpbmcgcmVxdWVzdEhhbmRsZXIiKTtpZihzZShlKSl7Y29uc3Qgbj10aGlzLl9yZXF1ZXN0SGFuZGxlcltlXS5jYWxsKHRoaXMuX3JlcXVlc3RIYW5kbGVyLHQpO2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBuKXRocm93IG5ldyBFcnJvcihgTWlzc2luZyBkeW5hbWljIGV2ZW50ICR7ZX0gb24gcmVxdWVzdCBoYW5kbGVyLmApO3JldHVybiBufWlmKG9lKGUpKXtjb25zdCB0PXRoaXMuX3JlcXVlc3RIYW5kbGVyW2VdO2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0KXRocm93IG5ldyBFcnJvcihgTWlzc2luZyBldmVudCAke2V9IG9uIHJlcXVlc3QgaGFuZGxlci5gKTtyZXR1cm4gdH10aHJvdyBuZXcgRXJyb3IoYE1hbGZvcm1lZCBldmVudCBuYW1lICR7ZX1gKX1pbml0aWFsaXplKGUsdCxuLHIpe3RoaXMuX3Byb3RvY29sLnNldFdvcmtlcklkKGUpO2NvbnN0IGk9ZnVuY3Rpb24oZSx0LG4pe2NvbnN0IHI9ZT0+ZnVuY3Rpb24oKXtjb25zdCBuPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywwKTtyZXR1cm4gdChlLG4pfSxpPWU9PmZ1bmN0aW9uKHQpe3JldHVybiBuKGUsdCl9LGE9e307Zm9yKGNvbnN0IHQgb2YgZSlzZSh0KT9hW3RdPWkodCk6b2UodCk/YVt0XT1uKHQsdm9pZCAwKTphW3RdPXIodCk7cmV0dXJuIGF9KHIsKChlLHQpPT50aGlzLl9wcm90b2NvbC5zZW5kTWVzc2FnZShlLHQpKSwoKGUsdCk9PnRoaXMuX3Byb3RvY29sLmxpc3RlbihlLHQpKSk7cmV0dXJuIHRoaXMuX3JlcXVlc3RIYW5kbGVyRmFjdG9yeT8odGhpcy5fcmVxdWVzdEhhbmRsZXI9dGhpcy5fcmVxdWVzdEhhbmRsZXJGYWN0b3J5KGkpLFByb21pc2UucmVzb2x2ZShLKHRoaXMuX3JlcXVlc3RIYW5kbGVyKSkpOih0JiYodm9pZCAwIT09dC5iYXNlVXJsJiZkZWxldGUgdC5iYXNlVXJsLHZvaWQgMCE9PXQucGF0aHMmJnZvaWQgMCE9PXQucGF0aHMudnMmJmRlbGV0ZSB0LnBhdGhzLnZzLHZvaWQgMCE9PXR5cGVvZiB0LnRydXN0ZWRUeXBlc1BvbGljeSYmZGVsZXRlIHQudHJ1c3RlZFR5cGVzUG9saWN5LHQuY2F0Y2hFcnJvcj0hMCxMLnJlcXVpcmUuY29uZmlnKHQpKSxuZXcgUHJvbWlzZSgoKGUsdCk9PnsoMCxMLnJlcXVpcmUpKFtuXSwobj0+e3RoaXMuX3JlcXVlc3RIYW5kbGVyPW4uY3JlYXRlKGkpLHRoaXMuX3JlcXVlc3RIYW5kbGVyP2UoSyh0aGlzLl9yZXF1ZXN0SGFuZGxlcikpOnQobmV3IEVycm9yKCJObyBSZXF1ZXN0SGFuZGxlciEiKSl9KSx0KX0pKSl9fWNsYXNzIGNle2NvbnN0cnVjdG9yKGUsdCxuLHIpe3RoaXMub3JpZ2luYWxTdGFydD1lLHRoaXMub3JpZ2luYWxMZW5ndGg9dCx0aGlzLm1vZGlmaWVkU3RhcnQ9bix0aGlzLm1vZGlmaWVkTGVuZ3RoPXJ9Z2V0T3JpZ2luYWxFbmQoKXtyZXR1cm4gdGhpcy5vcmlnaW5hbFN0YXJ0K3RoaXMub3JpZ2luYWxMZW5ndGh9Z2V0TW9kaWZpZWRFbmQoKXtyZXR1cm4gdGhpcy5tb2RpZmllZFN0YXJ0K3RoaXMubW9kaWZpZWRMZW5ndGh9fWZ1bmN0aW9uIGhlKGUsdCl7cmV0dXJuKHQ8PDUpLXQrZXwwfWZ1bmN0aW9uIGRlKGUsdCl7dD1oZSgxNDk0MTcsdCk7Zm9yKGxldCBuPTAscj1lLmxlbmd0aDtuPHI7bisrKXQ9aGUoZS5jaGFyQ29kZUF0KG4pLHQpO3JldHVybiB0fWNsYXNzIHVle2NvbnN0cnVjdG9yKGUpe3RoaXMuc291cmNlPWV9Z2V0RWxlbWVudHMoKXtjb25zdCBlPXRoaXMuc291cmNlLHQ9bmV3IEludDMyQXJyYXkoZS5sZW5ndGgpO2ZvcihsZXQgbj0wLHI9ZS5sZW5ndGg7bjxyO24rKyl0W25dPWUuY2hhckNvZGVBdChuKTtyZXR1cm4gdH19ZnVuY3Rpb24gcGUoZSx0LG4pe3JldHVybiBuZXcgYmUobmV3IHVlKGUpLG5ldyB1ZSh0KSkuQ29tcHV0ZURpZmYobikuY2hhbmdlc31jbGFzcyBtZXtzdGF0aWMgQXNzZXJ0KGUsdCl7aWYoIWUpdGhyb3cgbmV3IEVycm9yKHQpfX1jbGFzcyBmZXtzdGF0aWMgQ29weShlLHQsbixyLGkpe2ZvcihsZXQgYT0wO2E8aTthKyspbltyK2FdPWVbdCthXX1zdGF0aWMgQ29weTIoZSx0LG4scixpKXtmb3IobGV0IGE9MDthPGk7YSsrKW5bcithXT1lW3QrYV19fWNsYXNzIGdle2NvbnN0cnVjdG9yKCl7dGhpcy5tX2NoYW5nZXM9W10sdGhpcy5tX29yaWdpbmFsU3RhcnQ9MTA3Mzc0MTgyNCx0aGlzLm1fbW9kaWZpZWRTdGFydD0xMDczNzQxODI0LHRoaXMubV9vcmlnaW5hbENvdW50PTAsdGhpcy5tX21vZGlmaWVkQ291bnQ9MH1NYXJrTmV4dENoYW5nZSgpeyh0aGlzLm1fb3JpZ2luYWxDb3VudD4wfHx0aGlzLm1fbW9kaWZpZWRDb3VudD4wKSYmdGhpcy5tX2NoYW5nZXMucHVzaChuZXcgY2UodGhpcy5tX29yaWdpbmFsU3RhcnQsdGhpcy5tX29yaWdpbmFsQ291bnQsdGhpcy5tX21vZGlmaWVkU3RhcnQsdGhpcy5tX21vZGlmaWVkQ291bnQpKSx0aGlzLm1fb3JpZ2luYWxDb3VudD0wLHRoaXMubV9tb2RpZmllZENvdW50PTAsdGhpcy5tX29yaWdpbmFsU3RhcnQ9MTA3Mzc0MTgyNCx0aGlzLm1fbW9kaWZpZWRTdGFydD0xMDczNzQxODI0fUFkZE9yaWdpbmFsRWxlbWVudChlLHQpe3RoaXMubV9vcmlnaW5hbFN0YXJ0PU1hdGgubWluKHRoaXMubV9vcmlnaW5hbFN0YXJ0LGUpLHRoaXMubV9tb2RpZmllZFN0YXJ0PU1hdGgubWluKHRoaXMubV9tb2RpZmllZFN0YXJ0LHQpLHRoaXMubV9vcmlnaW5hbENvdW50Kyt9QWRkTW9kaWZpZWRFbGVtZW50KGUsdCl7dGhpcy5tX29yaWdpbmFsU3RhcnQ9TWF0aC5taW4odGhpcy5tX29yaWdpbmFsU3RhcnQsZSksdGhpcy5tX21vZGlmaWVkU3RhcnQ9TWF0aC5taW4odGhpcy5tX21vZGlmaWVkU3RhcnQsdCksdGhpcy5tX21vZGlmaWVkQ291bnQrK31nZXRDaGFuZ2VzKCl7cmV0dXJuKHRoaXMubV9vcmlnaW5hbENvdW50PjB8fHRoaXMubV9tb2RpZmllZENvdW50PjApJiZ0aGlzLk1hcmtOZXh0Q2hhbmdlKCksdGhpcy5tX2NoYW5nZXN9Z2V0UmV2ZXJzZUNoYW5nZXMoKXtyZXR1cm4odGhpcy5tX29yaWdpbmFsQ291bnQ+MHx8dGhpcy5tX21vZGlmaWVkQ291bnQ+MCkmJnRoaXMuTWFya05leHRDaGFuZ2UoKSx0aGlzLm1fY2hhbmdlcy5yZXZlcnNlKCksdGhpcy5tX2NoYW5nZXN9fWNsYXNzIGJle2NvbnN0cnVjdG9yKGUsdCxuPW51bGwpe3RoaXMuQ29udGludWVQcm9jZXNzaW5nUHJlZGljYXRlPW4sdGhpcy5fb3JpZ2luYWxTZXF1ZW5jZT1lLHRoaXMuX21vZGlmaWVkU2VxdWVuY2U9dDtjb25zdFtyLGksYV09YmUuX2dldEVsZW1lbnRzKGUpLFtvLHMsbF09YmUuX2dldEVsZW1lbnRzKHQpO3RoaXMuX2hhc1N0cmluZ3M9YSYmbCx0aGlzLl9vcmlnaW5hbFN0cmluZ0VsZW1lbnRzPXIsdGhpcy5fb3JpZ2luYWxFbGVtZW50c09ySGFzaD1pLHRoaXMuX21vZGlmaWVkU3RyaW5nRWxlbWVudHM9byx0aGlzLl9tb2RpZmllZEVsZW1lbnRzT3JIYXNoPXMsdGhpcy5tX2ZvcndhcmRIaXN0b3J5PVtdLHRoaXMubV9yZXZlcnNlSGlzdG9yeT1bXX1zdGF0aWMgX2lzU3RyaW5nQXJyYXkoZSl7cmV0dXJuIGUubGVuZ3RoPjAmJiJzdHJpbmciPT10eXBlb2YgZVswXX1zdGF0aWMgX2dldEVsZW1lbnRzKGUpe2NvbnN0IHQ9ZS5nZXRFbGVtZW50cygpO2lmKGJlLl9pc1N0cmluZ0FycmF5KHQpKXtjb25zdCBlPW5ldyBJbnQzMkFycmF5KHQubGVuZ3RoKTtmb3IobGV0IG49MCxyPXQubGVuZ3RoO248cjtuKyspZVtuXT1kZSh0W25dLDApO3JldHVyblt0LGUsITBdfXJldHVybiB0IGluc3RhbmNlb2YgSW50MzJBcnJheT9bW10sdCwhMV06W1tdLG5ldyBJbnQzMkFycmF5KHQpLCExXX1FbGVtZW50c0FyZUVxdWFsKGUsdCl7cmV0dXJuIHRoaXMuX29yaWdpbmFsRWxlbWVudHNPckhhc2hbZV09PT10aGlzLl9tb2RpZmllZEVsZW1lbnRzT3JIYXNoW3RdJiYoIXRoaXMuX2hhc1N0cmluZ3N8fHRoaXMuX29yaWdpbmFsU3RyaW5nRWxlbWVudHNbZV09PT10aGlzLl9tb2RpZmllZFN0cmluZ0VsZW1lbnRzW3RdKX1FbGVtZW50c0FyZVN0cmljdEVxdWFsKGUsdCl7aWYoIXRoaXMuRWxlbWVudHNBcmVFcXVhbChlLHQpKXJldHVybiExO3JldHVybiBiZS5fZ2V0U3RyaWN0RWxlbWVudCh0aGlzLl9vcmlnaW5hbFNlcXVlbmNlLGUpPT09YmUuX2dldFN0cmljdEVsZW1lbnQodGhpcy5fbW9kaWZpZWRTZXF1ZW5jZSx0KX1zdGF0aWMgX2dldFN0cmljdEVsZW1lbnQoZSx0KXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgZS5nZXRTdHJpY3RFbGVtZW50P2UuZ2V0U3RyaWN0RWxlbWVudCh0KTpudWxsfU9yaWdpbmFsRWxlbWVudHNBcmVFcXVhbChlLHQpe3JldHVybiB0aGlzLl9vcmlnaW5hbEVsZW1lbnRzT3JIYXNoW2VdPT09dGhpcy5fb3JpZ2luYWxFbGVtZW50c09ySGFzaFt0XSYmKCF0aGlzLl9oYXNTdHJpbmdzfHx0aGlzLl9vcmlnaW5hbFN0cmluZ0VsZW1lbnRzW2VdPT09dGhpcy5fb3JpZ2luYWxTdHJpbmdFbGVtZW50c1t0XSl9TW9kaWZpZWRFbGVtZW50c0FyZUVxdWFsKGUsdCl7cmV0dXJuIHRoaXMuX21vZGlmaWVkRWxlbWVudHNPckhhc2hbZV09PT10aGlzLl9tb2RpZmllZEVsZW1lbnRzT3JIYXNoW3RdJiYoIXRoaXMuX2hhc1N0cmluZ3N8fHRoaXMuX21vZGlmaWVkU3RyaW5nRWxlbWVudHNbZV09PT10aGlzLl9tb2RpZmllZFN0cmluZ0VsZW1lbnRzW3RdKX1Db21wdXRlRGlmZihlKXtyZXR1cm4gdGhpcy5fQ29tcHV0ZURpZmYoMCx0aGlzLl9vcmlnaW5hbEVsZW1lbnRzT3JIYXNoLmxlbmd0aC0xLDAsdGhpcy5fbW9kaWZpZWRFbGVtZW50c09ySGFzaC5sZW5ndGgtMSxlKX1fQ29tcHV0ZURpZmYoZSx0LG4scixpKXtjb25zdCBhPVshMV07bGV0IG89dGhpcy5Db21wdXRlRGlmZlJlY3Vyc2l2ZShlLHQsbixyLGEpO3JldHVybiBpJiYobz10aGlzLlByZXR0aWZ5Q2hhbmdlcyhvKSkse3F1aXRFYXJseTphWzBdLGNoYW5nZXM6b319Q29tcHV0ZURpZmZSZWN1cnNpdmUoZSx0LG4scixpKXtmb3IoaVswXT0hMTtlPD10JiZuPD1yJiZ0aGlzLkVsZW1lbnRzQXJlRXF1YWwoZSxuKTspZSsrLG4rKztmb3IoO3Q+PWUmJnI+PW4mJnRoaXMuRWxlbWVudHNBcmVFcXVhbCh0LHIpOyl0LS0sci0tO2lmKGU+dHx8bj5yKXtsZXQgaTtyZXR1cm4gbjw9cj8obWUuQXNzZXJ0KGU9PT10KzEsIm9yaWdpbmFsU3RhcnQgc2hvdWxkIG9ubHkgYmUgb25lIG1vcmUgdGhhbiBvcmlnaW5hbEVuZCIpLGk9W25ldyBjZShlLDAsbixyLW4rMSldKTplPD10PyhtZS5Bc3NlcnQobj09PXIrMSwibW9kaWZpZWRTdGFydCBzaG91bGQgb25seSBiZSBvbmUgbW9yZSB0aGFuIG1vZGlmaWVkRW5kIiksaT1bbmV3IGNlKGUsdC1lKzEsbiwwKV0pOihtZS5Bc3NlcnQoZT09PXQrMSwib3JpZ2luYWxTdGFydCBzaG91bGQgb25seSBiZSBvbmUgbW9yZSB0aGFuIG9yaWdpbmFsRW5kIiksbWUuQXNzZXJ0KG49PT1yKzEsIm1vZGlmaWVkU3RhcnQgc2hvdWxkIG9ubHkgYmUgb25lIG1vcmUgdGhhbiBtb2RpZmllZEVuZCIpLGk9W10pLGl9Y29uc3QgYT1bMF0sbz1bMF0scz10aGlzLkNvbXB1dGVSZWN1cnNpb25Qb2ludChlLHQsbixyLGEsbyxpKSxsPWFbMF0sYz1vWzBdO2lmKG51bGwhPT1zKXJldHVybiBzO2lmKCFpWzBdKXtjb25zdCBhPXRoaXMuQ29tcHV0ZURpZmZSZWN1cnNpdmUoZSxsLG4sYyxpKTtsZXQgbz1bXTtyZXR1cm4gbz1pWzBdP1tuZXcgY2UobCsxLHQtKGwrMSkrMSxjKzEsci0oYysxKSsxKV06dGhpcy5Db21wdXRlRGlmZlJlY3Vyc2l2ZShsKzEsdCxjKzEscixpKSx0aGlzLkNvbmNhdGVuYXRlQ2hhbmdlcyhhLG8pfXJldHVybltuZXcgY2UoZSx0LWUrMSxuLHItbisxKV19V0FMS1RSQUNFKGUsdCxuLHIsaSxhLG8scyxsLGMsaCxkLHUscCxtLGYsZyxiKXtsZXQgdz1udWxsLF89bnVsbCx2PW5ldyBnZSx5PXQsVD1uLGs9dVswXS1mWzBdLXIsUz0tMTA3Mzc0MTgyNCxDPXRoaXMubV9mb3J3YXJkSGlzdG9yeS5sZW5ndGgtMTtkb3tjb25zdCB0PWsrZTt0PT09eXx8dDxUJiZsW3QtMV08bFt0KzFdPyhwPShoPWxbdCsxXSktay1yLGg8UyYmdi5NYXJrTmV4dENoYW5nZSgpLFM9aCx2LkFkZE1vZGlmaWVkRWxlbWVudChoKzEscCksaz10KzEtZSk6KHA9KGg9bFt0LTFdKzEpLWstcixoPFMmJnYuTWFya05leHRDaGFuZ2UoKSxTPWgtMSx2LkFkZE9yaWdpbmFsRWxlbWVudChoLHArMSksaz10LTEtZSksQz49MCYmKGU9KGw9dGhpcy5tX2ZvcndhcmRIaXN0b3J5W0NdKVswXSx5PTEsVD1sLmxlbmd0aC0xKX13aGlsZSgtLUM+PS0xKTtpZih3PXYuZ2V0UmV2ZXJzZUNoYW5nZXMoKSxiWzBdKXtsZXQgZT11WzBdKzEsdD1mWzBdKzE7aWYobnVsbCE9PXcmJncubGVuZ3RoPjApe2NvbnN0IG49d1t3Lmxlbmd0aC0xXTtlPU1hdGgubWF4KGUsbi5nZXRPcmlnaW5hbEVuZCgpKSx0PU1hdGgubWF4KHQsbi5nZXRNb2RpZmllZEVuZCgpKX1fPVtuZXcgY2UoZSxkLWUrMSx0LG0tdCsxKV19ZWxzZXt2PW5ldyBnZSx5PWEsVD1vLGs9dVswXS1mWzBdLXMsUz0xMDczNzQxODI0LEM9Zz90aGlzLm1fcmV2ZXJzZUhpc3RvcnkubGVuZ3RoLTE6dGhpcy5tX3JldmVyc2VIaXN0b3J5Lmxlbmd0aC0yO2Rve2NvbnN0IGU9aytpO2U9PT15fHxlPFQmJmNbZS0xXT49Y1tlKzFdPyhwPShoPWNbZSsxXS0xKS1rLXMsaD5TJiZ2Lk1hcmtOZXh0Q2hhbmdlKCksUz1oKzEsdi5BZGRPcmlnaW5hbEVsZW1lbnQoaCsxLHArMSksaz1lKzEtaSk6KHA9KGg9Y1tlLTFdKS1rLXMsaD5TJiZ2Lk1hcmtOZXh0Q2hhbmdlKCksUz1oLHYuQWRkTW9kaWZpZWRFbGVtZW50KGgrMSxwKzEpLGs9ZS0xLWkpLEM+PTAmJihpPShjPXRoaXMubV9yZXZlcnNlSGlzdG9yeVtDXSlbMF0seT0xLFQ9Yy5sZW5ndGgtMSl9d2hpbGUoLS1DPj0tMSk7Xz12LmdldENoYW5nZXMoKX1yZXR1cm4gdGhpcy5Db25jYXRlbmF0ZUNoYW5nZXModyxfKX1Db21wdXRlUmVjdXJzaW9uUG9pbnQoZSx0LG4scixpLGEsbyl7bGV0IHM9MCxsPTAsYz0wLGg9MCxkPTAsdT0wO2UtLSxuLS0saVswXT0wLGFbMF09MCx0aGlzLm1fZm9yd2FyZEhpc3Rvcnk9W10sdGhpcy5tX3JldmVyc2VIaXN0b3J5PVtdO2NvbnN0IHA9dC1lKyhyLW4pLG09cCsxLGY9bmV3IEludDMyQXJyYXkobSksZz1uZXcgSW50MzJBcnJheShtKSxiPXItbix3PXQtZSxfPWUtbix2PXQtcix5PSh3LWIpJTI9PTA7ZltiXT1lLGdbd109dCxvWzBdPSExO2ZvcihsZXQgVD0xO1Q8PXAvMisxO1QrKyl7bGV0IHA9MCxrPTA7Yz10aGlzLkNsaXBEaWFnb25hbEJvdW5kKGItVCxULGIsbSksaD10aGlzLkNsaXBEaWFnb25hbEJvdW5kKGIrVCxULGIsbSk7Zm9yKGxldCBlPWM7ZTw9aDtlKz0yKXtzPWU9PT1jfHxlPGgmJmZbZS0xXTxmW2UrMV0/ZltlKzFdOmZbZS0xXSsxLGw9cy0oZS1iKS1fO2NvbnN0IG49cztmb3IoO3M8dCYmbDxyJiZ0aGlzLkVsZW1lbnRzQXJlRXF1YWwocysxLGwrMSk7KXMrKyxsKys7aWYoZltlXT1zLHMrbD5wK2smJihwPXMsaz1sKSwheSYmTWF0aC5hYnMoZS13KTw9VC0xJiZzPj1nW2VdKXJldHVybiBpWzBdPXMsYVswXT1sLG48PWdbZV0mJlQ8PTE0NDg/dGhpcy5XQUxLVFJBQ0UoYixjLGgsXyx3LGQsdSx2LGYsZyxzLHQsaSxsLHIsYSx5LG8pOm51bGx9Y29uc3QgUz0ocC1lKyhrLW4pLVQpLzI7aWYobnVsbCE9PXRoaXMuQ29udGludWVQcm9jZXNzaW5nUHJlZGljYXRlJiYhdGhpcy5Db250aW51ZVByb2Nlc3NpbmdQcmVkaWNhdGUocCxTKSlyZXR1cm4gb1swXT0hMCxpWzBdPXAsYVswXT1rLFM+MCYmVDw9MTQ0OD90aGlzLldBTEtUUkFDRShiLGMsaCxfLHcsZCx1LHYsZixnLHMsdCxpLGwscixhLHksbyk6KGUrKyxuKyssW25ldyBjZShlLHQtZSsxLG4sci1uKzEpXSk7ZD10aGlzLkNsaXBEaWFnb25hbEJvdW5kKHctVCxULHcsbSksdT10aGlzLkNsaXBEaWFnb25hbEJvdW5kKHcrVCxULHcsbSk7Zm9yKGxldCBwPWQ7cDw9dTtwKz0yKXtzPXA9PT1kfHxwPHUmJmdbcC0xXT49Z1twKzFdP2dbcCsxXS0xOmdbcC0xXSxsPXMtKHAtdyktdjtjb25zdCBtPXM7Zm9yKDtzPmUmJmw+biYmdGhpcy5FbGVtZW50c0FyZUVxdWFsKHMsbCk7KXMtLSxsLS07aWYoZ1twXT1zLHkmJk1hdGguYWJzKHAtYik8PVQmJnM8PWZbcF0pcmV0dXJuIGlbMF09cyxhWzBdPWwsbT49ZltwXSYmVDw9MTQ0OD90aGlzLldBTEtUUkFDRShiLGMsaCxfLHcsZCx1LHYsZixnLHMsdCxpLGwscixhLHksbyk6bnVsbH1pZihUPD0xNDQ3KXtsZXQgZT1uZXcgSW50MzJBcnJheShoLWMrMik7ZVswXT1iLWMrMSxmZS5Db3B5MihmLGMsZSwxLGgtYysxKSx0aGlzLm1fZm9yd2FyZEhpc3RvcnkucHVzaChlKSxlPW5ldyBJbnQzMkFycmF5KHUtZCsyKSxlWzBdPXctZCsxLGZlLkNvcHkyKGcsZCxlLDEsdS1kKzEpLHRoaXMubV9yZXZlcnNlSGlzdG9yeS5wdXNoKGUpfX1yZXR1cm4gdGhpcy5XQUxLVFJBQ0UoYixjLGgsXyx3LGQsdSx2LGYsZyxzLHQsaSxsLHIsYSx5LG8pfVByZXR0aWZ5Q2hhbmdlcyhlKXtmb3IobGV0IHQ9MDt0PGUubGVuZ3RoO3QrKyl7Y29uc3Qgbj1lW3RdLHI9dDxlLmxlbmd0aC0xP2VbdCsxXS5vcmlnaW5hbFN0YXJ0OnRoaXMuX29yaWdpbmFsRWxlbWVudHNPckhhc2gubGVuZ3RoLGk9dDxlLmxlbmd0aC0xP2VbdCsxXS5tb2RpZmllZFN0YXJ0OnRoaXMuX21vZGlmaWVkRWxlbWVudHNPckhhc2gubGVuZ3RoLGE9bi5vcmlnaW5hbExlbmd0aD4wLG89bi5tb2RpZmllZExlbmd0aD4wO2Zvcig7bi5vcmlnaW5hbFN0YXJ0K24ub3JpZ2luYWxMZW5ndGg8ciYmbi5tb2RpZmllZFN0YXJ0K24ubW9kaWZpZWRMZW5ndGg8aSYmKCFhfHx0aGlzLk9yaWdpbmFsRWxlbWVudHNBcmVFcXVhbChuLm9yaWdpbmFsU3RhcnQsbi5vcmlnaW5hbFN0YXJ0K24ub3JpZ2luYWxMZW5ndGgpKSYmKCFvfHx0aGlzLk1vZGlmaWVkRWxlbWVudHNBcmVFcXVhbChuLm1vZGlmaWVkU3RhcnQsbi5tb2RpZmllZFN0YXJ0K24ubW9kaWZpZWRMZW5ndGgpKTspe2NvbnN0IGU9dGhpcy5FbGVtZW50c0FyZVN0cmljdEVxdWFsKG4ub3JpZ2luYWxTdGFydCxuLm1vZGlmaWVkU3RhcnQpO2lmKHRoaXMuRWxlbWVudHNBcmVTdHJpY3RFcXVhbChuLm9yaWdpbmFsU3RhcnQrbi5vcmlnaW5hbExlbmd0aCxuLm1vZGlmaWVkU3RhcnQrbi5tb2RpZmllZExlbmd0aCkmJiFlKWJyZWFrO24ub3JpZ2luYWxTdGFydCsrLG4ubW9kaWZpZWRTdGFydCsrfWNvbnN0IHM9W251bGxdO3Q8ZS5sZW5ndGgtMSYmdGhpcy5DaGFuZ2VzT3ZlcmxhcChlW3RdLGVbdCsxXSxzKSYmKGVbdF09c1swXSxlLnNwbGljZSh0KzEsMSksdC0tKX1mb3IobGV0IHQ9ZS5sZW5ndGgtMTt0Pj0wO3QtLSl7Y29uc3Qgbj1lW3RdO2xldCByPTAsaT0wO2lmKHQ+MCl7Y29uc3Qgbj1lW3QtMV07cj1uLm9yaWdpbmFsU3RhcnQrbi5vcmlnaW5hbExlbmd0aCxpPW4ubW9kaWZpZWRTdGFydCtuLm1vZGlmaWVkTGVuZ3RofWNvbnN0IGE9bi5vcmlnaW5hbExlbmd0aD4wLG89bi5tb2RpZmllZExlbmd0aD4wO2xldCBzPTAsbD10aGlzLl9ib3VuZGFyeVNjb3JlKG4ub3JpZ2luYWxTdGFydCxuLm9yaWdpbmFsTGVuZ3RoLG4ubW9kaWZpZWRTdGFydCxuLm1vZGlmaWVkTGVuZ3RoKTtmb3IobGV0IGU9MTs7ZSsrKXtjb25zdCB0PW4ub3JpZ2luYWxTdGFydC1lLGM9bi5tb2RpZmllZFN0YXJ0LWU7aWYodDxyfHxjPGkpYnJlYWs7aWYoYSYmIXRoaXMuT3JpZ2luYWxFbGVtZW50c0FyZUVxdWFsKHQsdCtuLm9yaWdpbmFsTGVuZ3RoKSlicmVhaztpZihvJiYhdGhpcy5Nb2RpZmllZEVsZW1lbnRzQXJlRXF1YWwoYyxjK24ubW9kaWZpZWRMZW5ndGgpKWJyZWFrO2NvbnN0IGg9KHQ9PT1yJiZjPT09aT81OjApK3RoaXMuX2JvdW5kYXJ5U2NvcmUodCxuLm9yaWdpbmFsTGVuZ3RoLGMsbi5tb2RpZmllZExlbmd0aCk7aD5sJiYobD1oLHM9ZSl9bi5vcmlnaW5hbFN0YXJ0LT1zLG4ubW9kaWZpZWRTdGFydC09cztjb25zdCBjPVtudWxsXTt0PjAmJnRoaXMuQ2hhbmdlc092ZXJsYXAoZVt0LTFdLGVbdF0sYykmJihlW3QtMV09Y1swXSxlLnNwbGljZSh0LDEpLHQrKyl9aWYodGhpcy5faGFzU3RyaW5ncylmb3IobGV0IHQ9MSxuPWUubGVuZ3RoO3Q8bjt0Kyspe2NvbnN0IG49ZVt0LTFdLHI9ZVt0XSxpPXIub3JpZ2luYWxTdGFydC1uLm9yaWdpbmFsU3RhcnQtbi5vcmlnaW5hbExlbmd0aCxhPW4ub3JpZ2luYWxTdGFydCxvPXIub3JpZ2luYWxTdGFydCtyLm9yaWdpbmFsTGVuZ3RoLHM9by1hLGw9bi5tb2RpZmllZFN0YXJ0LGM9ci5tb2RpZmllZFN0YXJ0K3IubW9kaWZpZWRMZW5ndGgsaD1jLWw7aWYoaTw1JiZzPDIwJiZoPDIwKXtjb25zdCBlPXRoaXMuX2ZpbmRCZXR0ZXJDb250aWd1b3VzU2VxdWVuY2UoYSxzLGwsaCxpKTtpZihlKXtjb25zdFt0LGFdPWU7dD09PW4ub3JpZ2luYWxTdGFydCtuLm9yaWdpbmFsTGVuZ3RoJiZhPT09bi5tb2RpZmllZFN0YXJ0K24ubW9kaWZpZWRMZW5ndGh8fChuLm9yaWdpbmFsTGVuZ3RoPXQtbi5vcmlnaW5hbFN0YXJ0LG4ubW9kaWZpZWRMZW5ndGg9YS1uLm1vZGlmaWVkU3RhcnQsci5vcmlnaW5hbFN0YXJ0PXQraSxyLm1vZGlmaWVkU3RhcnQ9YStpLHIub3JpZ2luYWxMZW5ndGg9by1yLm9yaWdpbmFsU3RhcnQsci5tb2RpZmllZExlbmd0aD1jLXIubW9kaWZpZWRTdGFydCl9fX1yZXR1cm4gZX1fZmluZEJldHRlckNvbnRpZ3VvdXNTZXF1ZW5jZShlLHQsbixyLGkpe2lmKHQ8aXx8cjxpKXJldHVybiBudWxsO2NvbnN0IGE9ZSt0LWkrMSxvPW4rci1pKzE7bGV0IHM9MCxsPTAsYz0wO2ZvcihsZXQgdD1lO3Q8YTt0KyspZm9yKGxldCBlPW47ZTxvO2UrKyl7Y29uc3Qgbj10aGlzLl9jb250aWd1b3VzU2VxdWVuY2VTY29yZSh0LGUsaSk7bj4wJiZuPnMmJihzPW4sbD10LGM9ZSl9cmV0dXJuIHM+MD9bbCxjXTpudWxsfV9jb250aWd1b3VzU2VxdWVuY2VTY29yZShlLHQsbil7bGV0IHI9MDtmb3IobGV0IGk9MDtpPG47aSsrKXtpZighdGhpcy5FbGVtZW50c0FyZUVxdWFsKGUraSx0K2kpKXJldHVybiAwO3IrPXRoaXMuX29yaWdpbmFsU3RyaW5nRWxlbWVudHNbZStpXS5sZW5ndGh9cmV0dXJuIHJ9X09yaWdpbmFsSXNCb3VuZGFyeShlKXtyZXR1cm4gZTw9MHx8ZT49dGhpcy5fb3JpZ2luYWxFbGVtZW50c09ySGFzaC5sZW5ndGgtMXx8dGhpcy5faGFzU3RyaW5ncyYmL15ccyokLy50ZXN0KHRoaXMuX29yaWdpbmFsU3RyaW5nRWxlbWVudHNbZV0pfV9PcmlnaW5hbFJlZ2lvbklzQm91bmRhcnkoZSx0KXtpZih0aGlzLl9PcmlnaW5hbElzQm91bmRhcnkoZSl8fHRoaXMuX09yaWdpbmFsSXNCb3VuZGFyeShlLTEpKXJldHVybiEwO2lmKHQ+MCl7Y29uc3Qgbj1lK3Q7aWYodGhpcy5fT3JpZ2luYWxJc0JvdW5kYXJ5KG4tMSl8fHRoaXMuX09yaWdpbmFsSXNCb3VuZGFyeShuKSlyZXR1cm4hMH1yZXR1cm4hMX1fTW9kaWZpZWRJc0JvdW5kYXJ5KGUpe3JldHVybiBlPD0wfHxlPj10aGlzLl9tb2RpZmllZEVsZW1lbnRzT3JIYXNoLmxlbmd0aC0xfHx0aGlzLl9oYXNTdHJpbmdzJiYvXlxzKiQvLnRlc3QodGhpcy5fbW9kaWZpZWRTdHJpbmdFbGVtZW50c1tlXSl9X01vZGlmaWVkUmVnaW9uSXNCb3VuZGFyeShlLHQpe2lmKHRoaXMuX01vZGlmaWVkSXNCb3VuZGFyeShlKXx8dGhpcy5fTW9kaWZpZWRJc0JvdW5kYXJ5KGUtMSkpcmV0dXJuITA7aWYodD4wKXtjb25zdCBuPWUrdDtpZih0aGlzLl9Nb2RpZmllZElzQm91bmRhcnkobi0xKXx8dGhpcy5fTW9kaWZpZWRJc0JvdW5kYXJ5KG4pKXJldHVybiEwfXJldHVybiExfV9ib3VuZGFyeVNjb3JlKGUsdCxuLHIpe3JldHVybih0aGlzLl9PcmlnaW5hbFJlZ2lvbklzQm91bmRhcnkoZSx0KT8xOjApKyh0aGlzLl9Nb2RpZmllZFJlZ2lvbklzQm91bmRhcnkobixyKT8xOjApfUNvbmNhdGVuYXRlQ2hhbmdlcyhlLHQpe2NvbnN0IG49W107aWYoMD09PWUubGVuZ3RofHwwPT09dC5sZW5ndGgpcmV0dXJuIHQubGVuZ3RoPjA/dDplO2lmKHRoaXMuQ2hhbmdlc092ZXJsYXAoZVtlLmxlbmd0aC0xXSx0WzBdLG4pKXtjb25zdCByPW5ldyBBcnJheShlLmxlbmd0aCt0Lmxlbmd0aC0xKTtyZXR1cm4gZmUuQ29weShlLDAsciwwLGUubGVuZ3RoLTEpLHJbZS5sZW5ndGgtMV09blswXSxmZS5Db3B5KHQsMSxyLGUubGVuZ3RoLHQubGVuZ3RoLTEpLHJ9e2NvbnN0IG49bmV3IEFycmF5KGUubGVuZ3RoK3QubGVuZ3RoKTtyZXR1cm4gZmUuQ29weShlLDAsbiwwLGUubGVuZ3RoKSxmZS5Db3B5KHQsMCxuLGUubGVuZ3RoLHQubGVuZ3RoKSxufX1DaGFuZ2VzT3ZlcmxhcChlLHQsbil7aWYobWUuQXNzZXJ0KGUub3JpZ2luYWxTdGFydDw9dC5vcmlnaW5hbFN0YXJ0LCJMZWZ0IGNoYW5nZSBpcyBub3QgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHJpZ2h0IGNoYW5nZSIpLG1lLkFzc2VydChlLm1vZGlmaWVkU3RhcnQ8PXQubW9kaWZpZWRTdGFydCwiTGVmdCBjaGFuZ2UgaXMgbm90IGxlc3MgdGhhbiBvciBlcXVhbCB0byByaWdodCBjaGFuZ2UiKSxlLm9yaWdpbmFsU3RhcnQrZS5vcmlnaW5hbExlbmd0aD49dC5vcmlnaW5hbFN0YXJ0fHxlLm1vZGlmaWVkU3RhcnQrZS5tb2RpZmllZExlbmd0aD49dC5tb2RpZmllZFN0YXJ0KXtjb25zdCByPWUub3JpZ2luYWxTdGFydDtsZXQgaT1lLm9yaWdpbmFsTGVuZ3RoO2NvbnN0IGE9ZS5tb2RpZmllZFN0YXJ0O2xldCBvPWUubW9kaWZpZWRMZW5ndGg7cmV0dXJuIGUub3JpZ2luYWxTdGFydCtlLm9yaWdpbmFsTGVuZ3RoPj10Lm9yaWdpbmFsU3RhcnQmJihpPXQub3JpZ2luYWxTdGFydCt0Lm9yaWdpbmFsTGVuZ3RoLWUub3JpZ2luYWxTdGFydCksZS5tb2RpZmllZFN0YXJ0K2UubW9kaWZpZWRMZW5ndGg+PXQubW9kaWZpZWRTdGFydCYmKG89dC5tb2RpZmllZFN0YXJ0K3QubW9kaWZpZWRMZW5ndGgtZS5tb2RpZmllZFN0YXJ0KSxuWzBdPW5ldyBjZShyLGksYSxvKSwhMH1yZXR1cm4gblswXT1udWxsLCExfUNsaXBEaWFnb25hbEJvdW5kKGUsdCxuLHIpe2lmKGU+PTAmJmU8cilyZXR1cm4gZTtjb25zdCBpPXQlMj09MDtpZihlPDApe3JldHVybiBpPT09KG4lMj09MCk/MDoxfXJldHVybiBpPT09KChyLW4tMSklMj09MCk/ci0xOnItMn19bGV0IHdlO2lmKHZvaWQgMCE9PUwudnNjb2RlJiZ2b2lkIDAhPT1MLnZzY29kZS5wcm9jZXNzKXtjb25zdCBlPUwudnNjb2RlLnByb2Nlc3M7d2U9e2dldCBwbGF0Zm9ybSgpe3JldHVybiBlLnBsYXRmb3JtfSxnZXQgYXJjaCgpe3JldHVybiBlLmFyY2h9LGdldCBlbnYoKXtyZXR1cm4gZS5lbnZ9LGN3ZDooKT0+ZS5jd2QoKX19ZWxzZSB3ZT0idW5kZWZpbmVkIiE9dHlwZW9mIHByb2Nlc3M/e2dldCBwbGF0Zm9ybSgpe3JldHVybiBwcm9jZXNzLnBsYXRmb3JtfSxnZXQgYXJjaCgpe3JldHVybiBwcm9jZXNzLmFyY2h9LGdldCBlbnYoKXtyZXR1cm4gcHJvY2Vzcy5lbnZ9LGN3ZDooKT0+cHJvY2Vzcy5lbnYuVlNDT0RFX0NXRHx8cHJvY2Vzcy5jd2QoKX06e2dldCBwbGF0Zm9ybSgpe3JldHVybiBNPyJ3aW4zMiI6Uj8iZGFyd2luIjoibGludXgifSxnZXQgYXJjaCgpe30sZ2V0IGVudigpe3JldHVybnt9fSxjd2Q6KCk9PiIvIn07Y29uc3QgX2U9d2UuY3dkLHZlPXdlLmVudix5ZT13ZS5wbGF0Zm9ybSxUZT00NixrZT00NyxTZT05MixDZT01ODtjbGFzcyB4ZSBleHRlbmRzIEVycm9ye2NvbnN0cnVjdG9yKGUsdCxuKXtsZXQgcjsic3RyaW5nIj09dHlwZW9mIHQmJjA9PT10LmluZGV4T2YoIm5vdCAiKT8ocj0ibXVzdCBub3QgYmUiLHQ9dC5yZXBsYWNlKC9ebm90IC8sIiIpKTpyPSJtdXN0IGJlIjtjb25zdCBpPS0xIT09ZS5pbmRleE9mKCIuIik/InByb3BlcnR5IjoiYXJndW1lbnQiO2xldCBhPWBUaGUgIiR7ZX0iICR7aX0gJHtyfSBvZiB0eXBlICR7dH1gO2ErPSIuIFJlY2VpdmVkIHR5cGUgIit0eXBlb2YgbixzdXBlcihhKSx0aGlzLmNvZGU9IkVSUl9JTlZBTElEX0FSR19UWVBFIn19ZnVuY3Rpb24gTGUoZSx0KXtpZigic3RyaW5nIiE9dHlwZW9mIGUpdGhyb3cgbmV3IHhlKHQsInN0cmluZyIsZSl9ZnVuY3Rpb24gRWUoZSl7cmV0dXJuIGU9PT1rZXx8ZT09PVNlfWZ1bmN0aW9uIEFlKGUpe3JldHVybiBlPT09a2V9ZnVuY3Rpb24gTWUoZSl7cmV0dXJuIGU+PTY1JiZlPD05MHx8ZT49OTcmJmU8PTEyMn1mdW5jdGlvbiBSZShlLHQsbixyKXtsZXQgaT0iIixhPTAsbz0tMSxzPTAsbD0wO2ZvcihsZXQgYz0wO2M8PWUubGVuZ3RoOysrYyl7aWYoYzxlLmxlbmd0aClsPWUuY2hhckNvZGVBdChjKTtlbHNle2lmKHIobCkpYnJlYWs7bD1rZX1pZihyKGwpKXtpZihvPT09Yy0xfHwxPT09cyk7ZWxzZSBpZigyPT09cyl7aWYoaS5sZW5ndGg8Mnx8MiE9PWF8fGkuY2hhckNvZGVBdChpLmxlbmd0aC0xKSE9PVRlfHxpLmNoYXJDb2RlQXQoaS5sZW5ndGgtMikhPT1UZSl7aWYoaS5sZW5ndGg+Mil7Y29uc3QgZT1pLmxhc3RJbmRleE9mKG4pOy0xPT09ZT8oaT0iIixhPTApOihpPWkuc2xpY2UoMCxlKSxhPWkubGVuZ3RoLTEtaS5sYXN0SW5kZXhPZihuKSksbz1jLHM9MDtjb250aW51ZX1pZigwIT09aS5sZW5ndGgpe2k9IiIsYT0wLG89YyxzPTA7Y29udGludWV9fXQmJihpKz1pLmxlbmd0aD4wP2Ake259Li5gOiIuLiIsYT0yKX1lbHNlIGkubGVuZ3RoPjA/aSs9YCR7bn0ke2Uuc2xpY2UobysxLGMpfWA6aT1lLnNsaWNlKG8rMSxjKSxhPWMtby0xO289YyxzPTB9ZWxzZSBsPT09VGUmJi0xIT09cz8rK3M6cz0tMX1yZXR1cm4gaX1mdW5jdGlvbiBJZShlLHQpe2lmKG51bGw9PT10fHwib2JqZWN0IiE9dHlwZW9mIHQpdGhyb3cgbmV3IHhlKCJwYXRoT2JqZWN0IiwiT2JqZWN0Iix0KTtjb25zdCBuPXQuZGlyfHx0LnJvb3Qscj10LmJhc2V8fGAke3QubmFtZXx8IiJ9JHt0LmV4dHx8IiJ9YDtyZXR1cm4gbj9uPT09dC5yb290P2Ake259JHtyfWA6YCR7bn0ke2V9JHtyfWA6cn1jb25zdCBOZT17cmVzb2x2ZSguLi5lKXtsZXQgdD0iIixuPSIiLHI9ITE7Zm9yKGxldCBpPWUubGVuZ3RoLTE7aT49LTE7aS0tKXtsZXQgYTtpZihpPj0wKXtpZihhPWVbaV0sTGUoYSwicGF0aCIpLDA9PT1hLmxlbmd0aCljb250aW51ZX1lbHNlIDA9PT10Lmxlbmd0aD9hPV9lKCk6KGE9dmVbYD0ke3R9YF18fF9lKCksKHZvaWQgMD09PWF8fGEuc2xpY2UoMCwyKS50b0xvd2VyQ2FzZSgpIT09dC50b0xvd2VyQ2FzZSgpJiZhLmNoYXJDb2RlQXQoMik9PT1TZSkmJihhPWAke3R9XFxgKSk7Y29uc3Qgbz1hLmxlbmd0aDtsZXQgcz0wLGw9IiIsYz0hMTtjb25zdCBoPWEuY2hhckNvZGVBdCgwKTtpZigxPT09bylFZShoKSYmKHM9MSxjPSEwKTtlbHNlIGlmKEVlKGgpKWlmKGM9ITAsRWUoYS5jaGFyQ29kZUF0KDEpKSl7bGV0IGU9Mix0PWU7Zm9yKDtlPG8mJiFFZShhLmNoYXJDb2RlQXQoZSkpOyllKys7aWYoZTxvJiZlIT09dCl7Y29uc3Qgbj1hLnNsaWNlKHQsZSk7Zm9yKHQ9ZTtlPG8mJkVlKGEuY2hhckNvZGVBdChlKSk7KWUrKztpZihlPG8mJmUhPT10KXtmb3IodD1lO2U8byYmIUVlKGEuY2hhckNvZGVBdChlKSk7KWUrKztlIT09byYmZT09PXR8fChsPWBcXFxcJHtufVxcJHthLnNsaWNlKHQsZSl9YCxzPWUpfX19ZWxzZSBzPTE7ZWxzZSBNZShoKSYmYS5jaGFyQ29kZUF0KDEpPT09Q2UmJihsPWEuc2xpY2UoMCwyKSxzPTIsbz4yJiZFZShhLmNoYXJDb2RlQXQoMikpJiYoYz0hMCxzPTMpKTtpZihsLmxlbmd0aD4wKWlmKHQubGVuZ3RoPjApe2lmKGwudG9Mb3dlckNhc2UoKSE9PXQudG9Mb3dlckNhc2UoKSljb250aW51ZX1lbHNlIHQ9bDtpZihyKXtpZih0Lmxlbmd0aD4wKWJyZWFrfWVsc2UgaWYobj1gJHthLnNsaWNlKHMpfVxcJHtufWAscj1jLGMmJnQubGVuZ3RoPjApYnJlYWt9cmV0dXJuIG49UmUobiwhciwiXFwiLEVlKSxyP2Ake3R9XFwke259YDpgJHt0fSR7bn1gfHwiLiJ9LG5vcm1hbGl6ZShlKXtMZShlLCJwYXRoIik7Y29uc3QgdD1lLmxlbmd0aDtpZigwPT09dClyZXR1cm4iLiI7bGV0IG4scj0wLGk9ITE7Y29uc3QgYT1lLmNoYXJDb2RlQXQoMCk7aWYoMT09PXQpcmV0dXJuIEFlKGEpPyJcXCI6ZTtpZihFZShhKSlpZihpPSEwLEVlKGUuY2hhckNvZGVBdCgxKSkpe2xldCBpPTIsYT1pO2Zvcig7aTx0JiYhRWUoZS5jaGFyQ29kZUF0KGkpKTspaSsrO2lmKGk8dCYmaSE9PWEpe2NvbnN0IG89ZS5zbGljZShhLGkpO2ZvcihhPWk7aTx0JiZFZShlLmNoYXJDb2RlQXQoaSkpOylpKys7aWYoaTx0JiZpIT09YSl7Zm9yKGE9aTtpPHQmJiFFZShlLmNoYXJDb2RlQXQoaSkpOylpKys7aWYoaT09PXQpcmV0dXJuYFxcXFwke299XFwke2Uuc2xpY2UoYSl9XFxgO2khPT1hJiYobj1gXFxcXCR7b31cXCR7ZS5zbGljZShhLGkpfWAscj1pKX19fWVsc2Ugcj0xO2Vsc2UgTWUoYSkmJmUuY2hhckNvZGVBdCgxKT09PUNlJiYobj1lLnNsaWNlKDAsMikscj0yLHQ+MiYmRWUoZS5jaGFyQ29kZUF0KDIpKSYmKGk9ITAscj0zKSk7bGV0IG89cjx0P1JlKGUuc2xpY2UociksIWksIlxcIixFZSk6IiI7cmV0dXJuIDAhPT1vLmxlbmd0aHx8aXx8KG89Ii4iKSxvLmxlbmd0aD4wJiZFZShlLmNoYXJDb2RlQXQodC0xKSkmJihvKz0iXFwiKSx2b2lkIDA9PT1uP2k/YFxcJHtvfWA6bzppP2Ake259XFwke299YDpgJHtufSR7b31gfSxpc0Fic29sdXRlKGUpe0xlKGUsInBhdGgiKTtjb25zdCB0PWUubGVuZ3RoO2lmKDA9PT10KXJldHVybiExO2NvbnN0IG49ZS5jaGFyQ29kZUF0KDApO3JldHVybiBFZShuKXx8dD4yJiZNZShuKSYmZS5jaGFyQ29kZUF0KDEpPT09Q2UmJkVlKGUuY2hhckNvZGVBdCgyKSl9LGpvaW4oLi4uZSl7aWYoMD09PWUubGVuZ3RoKXJldHVybiIuIjtsZXQgdCxuO2ZvcihsZXQgcj0wO3I8ZS5sZW5ndGg7KytyKXtjb25zdCBpPWVbcl07TGUoaSwicGF0aCIpLGkubGVuZ3RoPjAmJih2b2lkIDA9PT10P3Q9bj1pOnQrPWBcXCR7aX1gKX1pZih2b2lkIDA9PT10KXJldHVybiIuIjtsZXQgcj0hMCxpPTA7aWYoInN0cmluZyI9PXR5cGVvZiBuJiZFZShuLmNoYXJDb2RlQXQoMCkpKXsrK2k7Y29uc3QgZT1uLmxlbmd0aDtlPjEmJkVlKG4uY2hhckNvZGVBdCgxKSkmJigrK2ksZT4yJiYoRWUobi5jaGFyQ29kZUF0KDIpKT8rK2k6cj0hMSkpfWlmKHIpe2Zvcig7aTx0Lmxlbmd0aCYmRWUodC5jaGFyQ29kZUF0KGkpKTspaSsrO2k+PTImJih0PWBcXCR7dC5zbGljZShpKX1gKX1yZXR1cm4gTmUubm9ybWFsaXplKHQpfSxyZWxhdGl2ZShlLHQpe2lmKExlKGUsImZyb20iKSxMZSh0LCJ0byIpLGU9PT10KXJldHVybiIiO2NvbnN0IG49TmUucmVzb2x2ZShlKSxyPU5lLnJlc29sdmUodCk7aWYobj09PXIpcmV0dXJuIiI7aWYoKGU9bi50b0xvd2VyQ2FzZSgpKT09PSh0PXIudG9Mb3dlckNhc2UoKSkpcmV0dXJuIiI7bGV0IGk9MDtmb3IoO2k8ZS5sZW5ndGgmJmUuY2hhckNvZGVBdChpKT09PVNlOylpKys7bGV0IGE9ZS5sZW5ndGg7Zm9yKDthLTE+aSYmZS5jaGFyQ29kZUF0KGEtMSk9PT1TZTspYS0tO2NvbnN0IG89YS1pO2xldCBzPTA7Zm9yKDtzPHQubGVuZ3RoJiZ0LmNoYXJDb2RlQXQocyk9PT1TZTspcysrO2xldCBsPXQubGVuZ3RoO2Zvcig7bC0xPnMmJnQuY2hhckNvZGVBdChsLTEpPT09U2U7KWwtLTtjb25zdCBjPWwtcyxoPW88Yz9vOmM7bGV0IGQ9LTEsdT0wO2Zvcig7dTxoO3UrKyl7Y29uc3Qgbj1lLmNoYXJDb2RlQXQoaSt1KTtpZihuIT09dC5jaGFyQ29kZUF0KHMrdSkpYnJlYWs7bj09PVNlJiYoZD11KX1pZih1IT09aCl7aWYoLTE9PT1kKXJldHVybiByfWVsc2V7aWYoYz5oKXtpZih0LmNoYXJDb2RlQXQocyt1KT09PVNlKXJldHVybiByLnNsaWNlKHMrdSsxKTtpZigyPT09dSlyZXR1cm4gci5zbGljZShzK3UpfW8+aCYmKGUuY2hhckNvZGVBdChpK3UpPT09U2U/ZD11OjI9PT11JiYoZD0zKSksLTE9PT1kJiYoZD0wKX1sZXQgcD0iIjtmb3IodT1pK2QrMTt1PD1hOysrdSl1IT09YSYmZS5jaGFyQ29kZUF0KHUpIT09U2V8fChwKz0wPT09cC5sZW5ndGg/Ii4uIjoiXFwuLiIpO3JldHVybiBzKz1kLHAubGVuZ3RoPjA/YCR7cH0ke3Iuc2xpY2UocyxsKX1gOihyLmNoYXJDb2RlQXQocyk9PT1TZSYmKytzLHIuc2xpY2UocyxsKSl9LHRvTmFtZXNwYWNlZFBhdGgoZSl7aWYoInN0cmluZyIhPXR5cGVvZiBlKXJldHVybiBlO2lmKDA9PT1lLmxlbmd0aClyZXR1cm4iIjtjb25zdCB0PU5lLnJlc29sdmUoZSk7aWYodC5sZW5ndGg8PTIpcmV0dXJuIGU7aWYodC5jaGFyQ29kZUF0KDApPT09U2Upe2lmKHQuY2hhckNvZGVBdCgxKT09PVNlKXtjb25zdCBlPXQuY2hhckNvZGVBdCgyKTtpZig2MyE9PWUmJmUhPT1UZSlyZXR1cm5gXFxcXD9cXFVOQ1xcJHt0LnNsaWNlKDIpfWB9fWVsc2UgaWYoTWUodC5jaGFyQ29kZUF0KDApKSYmdC5jaGFyQ29kZUF0KDEpPT09Q2UmJnQuY2hhckNvZGVBdCgyKT09PVNlKXJldHVybmBcXFxcP1xcJHt0fWA7cmV0dXJuIGV9LGRpcm5hbWUoZSl7TGUoZSwicGF0aCIpO2NvbnN0IHQ9ZS5sZW5ndGg7aWYoMD09PXQpcmV0dXJuIi4iO2xldCBuPS0xLHI9MDtjb25zdCBpPWUuY2hhckNvZGVBdCgwKTtpZigxPT09dClyZXR1cm4gRWUoaSk/ZToiLiI7aWYoRWUoaSkpe2lmKG49cj0xLEVlKGUuY2hhckNvZGVBdCgxKSkpe2xldCBpPTIsYT1pO2Zvcig7aTx0JiYhRWUoZS5jaGFyQ29kZUF0KGkpKTspaSsrO2lmKGk8dCYmaSE9PWEpe2ZvcihhPWk7aTx0JiZFZShlLmNoYXJDb2RlQXQoaSkpOylpKys7aWYoaTx0JiZpIT09YSl7Zm9yKGE9aTtpPHQmJiFFZShlLmNoYXJDb2RlQXQoaSkpOylpKys7aWYoaT09PXQpcmV0dXJuIGU7aSE9PWEmJihuPXI9aSsxKX19fX1lbHNlIE1lKGkpJiZlLmNoYXJDb2RlQXQoMSk9PT1DZSYmKG49dD4yJiZFZShlLmNoYXJDb2RlQXQoMikpPzM6MixyPW4pO2xldCBhPS0xLG89ITA7Zm9yKGxldCBuPXQtMTtuPj1yOy0tbilpZihFZShlLmNoYXJDb2RlQXQobikpKXtpZighbyl7YT1uO2JyZWFrfX1lbHNlIG89ITE7aWYoLTE9PT1hKXtpZigtMT09PW4pcmV0dXJuIi4iO2E9bn1yZXR1cm4gZS5zbGljZSgwLGEpfSxiYXNlbmFtZShlLHQpe3ZvaWQgMCE9PXQmJkxlKHQsImV4dCIpLExlKGUsInBhdGgiKTtsZXQgbixyPTAsaT0tMSxhPSEwO2lmKGUubGVuZ3RoPj0yJiZNZShlLmNoYXJDb2RlQXQoMCkpJiZlLmNoYXJDb2RlQXQoMSk9PT1DZSYmKHI9Miksdm9pZCAwIT09dCYmdC5sZW5ndGg+MCYmdC5sZW5ndGg8PWUubGVuZ3RoKXtpZih0PT09ZSlyZXR1cm4iIjtsZXQgbz10Lmxlbmd0aC0xLHM9LTE7Zm9yKG49ZS5sZW5ndGgtMTtuPj1yOy0tbil7Y29uc3QgbD1lLmNoYXJDb2RlQXQobik7aWYoRWUobCkpe2lmKCFhKXtyPW4rMTticmVha319ZWxzZS0xPT09cyYmKGE9ITEscz1uKzEpLG8+PTAmJihsPT09dC5jaGFyQ29kZUF0KG8pPy0xPT0tLW8mJihpPW4pOihvPS0xLGk9cykpfXJldHVybiByPT09aT9pPXM6LTE9PT1pJiYoaT1lLmxlbmd0aCksZS5zbGljZShyLGkpfWZvcihuPWUubGVuZ3RoLTE7bj49cjstLW4paWYoRWUoZS5jaGFyQ29kZUF0KG4pKSl7aWYoIWEpe3I9bisxO2JyZWFrfX1lbHNlLTE9PT1pJiYoYT0hMSxpPW4rMSk7cmV0dXJuLTE9PT1pPyIiOmUuc2xpY2UocixpKX0sZXh0bmFtZShlKXtMZShlLCJwYXRoIik7bGV0IHQ9MCxuPS0xLHI9MCxpPS0xLGE9ITAsbz0wO2UubGVuZ3RoPj0yJiZlLmNoYXJDb2RlQXQoMSk9PT1DZSYmTWUoZS5jaGFyQ29kZUF0KDApKSYmKHQ9cj0yKTtmb3IobGV0IHM9ZS5sZW5ndGgtMTtzPj10Oy0tcyl7Y29uc3QgdD1lLmNoYXJDb2RlQXQocyk7aWYoRWUodCkpe2lmKCFhKXtyPXMrMTticmVha319ZWxzZS0xPT09aSYmKGE9ITEsaT1zKzEpLHQ9PT1UZT8tMT09PW4/bj1zOjEhPT1vJiYobz0xKTotMSE9PW4mJihvPS0xKX1yZXR1cm4tMT09PW58fC0xPT09aXx8MD09PW98fDE9PT1vJiZuPT09aS0xJiZuPT09cisxPyIiOmUuc2xpY2UobixpKX0sZm9ybWF0OkllLmJpbmQobnVsbCwiXFwiKSxwYXJzZShlKXtMZShlLCJwYXRoIik7Y29uc3QgdD17cm9vdDoiIixkaXI6IiIsYmFzZToiIixleHQ6IiIsbmFtZToiIn07aWYoMD09PWUubGVuZ3RoKXJldHVybiB0O2NvbnN0IG49ZS5sZW5ndGg7bGV0IHI9MCxpPWUuY2hhckNvZGVBdCgwKTtpZigxPT09bilyZXR1cm4gRWUoaSk/KHQucm9vdD10LmRpcj1lLHQpOih0LmJhc2U9dC5uYW1lPWUsdCk7aWYoRWUoaSkpe2lmKHI9MSxFZShlLmNoYXJDb2RlQXQoMSkpKXtsZXQgdD0yLGk9dDtmb3IoO3Q8biYmIUVlKGUuY2hhckNvZGVBdCh0KSk7KXQrKztpZih0PG4mJnQhPT1pKXtmb3IoaT10O3Q8biYmRWUoZS5jaGFyQ29kZUF0KHQpKTspdCsrO2lmKHQ8biYmdCE9PWkpe2ZvcihpPXQ7dDxuJiYhRWUoZS5jaGFyQ29kZUF0KHQpKTspdCsrO3Q9PT1uP3I9dDp0IT09aSYmKHI9dCsxKX19fX1lbHNlIGlmKE1lKGkpJiZlLmNoYXJDb2RlQXQoMSk9PT1DZSl7aWYobjw9MilyZXR1cm4gdC5yb290PXQuZGlyPWUsdDtpZihyPTIsRWUoZS5jaGFyQ29kZUF0KDIpKSl7aWYoMz09PW4pcmV0dXJuIHQucm9vdD10LmRpcj1lLHQ7cj0zfX1yPjAmJih0LnJvb3Q9ZS5zbGljZSgwLHIpKTtsZXQgYT0tMSxvPXIscz0tMSxsPSEwLGM9ZS5sZW5ndGgtMSxoPTA7Zm9yKDtjPj1yOy0tYylpZihpPWUuY2hhckNvZGVBdChjKSxFZShpKSl7aWYoIWwpe289YysxO2JyZWFrfX1lbHNlLTE9PT1zJiYobD0hMSxzPWMrMSksaT09PVRlPy0xPT09YT9hPWM6MSE9PWgmJihoPTEpOi0xIT09YSYmKGg9LTEpO3JldHVybi0xIT09cyYmKC0xPT09YXx8MD09PWh8fDE9PT1oJiZhPT09cy0xJiZhPT09bysxP3QuYmFzZT10Lm5hbWU9ZS5zbGljZShvLHMpOih0Lm5hbWU9ZS5zbGljZShvLGEpLHQuYmFzZT1lLnNsaWNlKG8scyksdC5leHQ9ZS5zbGljZShhLHMpKSksdC5kaXI9bz4wJiZvIT09cj9lLnNsaWNlKDAsby0xKTp0LnJvb3QsdH0sc2VwOiJcXCIsZGVsaW1pdGVyOiI7Iix3aW4zMjpudWxsLHBvc2l4Om51bGx9LFVlPXtyZXNvbHZlKC4uLmUpe2xldCB0PSIiLG49ITE7Zm9yKGxldCByPWUubGVuZ3RoLTE7cj49LTEmJiFuO3ItLSl7Y29uc3QgaT1yPj0wP2Vbcl06X2UoKTtMZShpLCJwYXRoIiksMCE9PWkubGVuZ3RoJiYodD1gJHtpfS8ke3R9YCxuPWkuY2hhckNvZGVBdCgwKT09PWtlKX1yZXR1cm4gdD1SZSh0LCFuLCIvIixBZSksbj9gLyR7dH1gOnQubGVuZ3RoPjA/dDoiLiJ9LG5vcm1hbGl6ZShlKXtpZihMZShlLCJwYXRoIiksMD09PWUubGVuZ3RoKXJldHVybiIuIjtjb25zdCB0PWUuY2hhckNvZGVBdCgwKT09PWtlLG49ZS5jaGFyQ29kZUF0KGUubGVuZ3RoLTEpPT09a2U7cmV0dXJuIDA9PT0oZT1SZShlLCF0LCIvIixBZSkpLmxlbmd0aD90PyIvIjpuPyIuLyI6Ii4iOihuJiYoZSs9Ii8iKSx0P2AvJHtlfWA6ZSl9LGlzQWJzb2x1dGU6ZT0+KExlKGUsInBhdGgiKSxlLmxlbmd0aD4wJiZlLmNoYXJDb2RlQXQoMCk9PT1rZSksam9pbiguLi5lKXtpZigwPT09ZS5sZW5ndGgpcmV0dXJuIi4iO2xldCB0O2ZvcihsZXQgbj0wO248ZS5sZW5ndGg7KytuKXtjb25zdCByPWVbbl07TGUociwicGF0aCIpLHIubGVuZ3RoPjAmJih2b2lkIDA9PT10P3Q9cjp0Kz1gLyR7cn1gKX1yZXR1cm4gdm9pZCAwPT09dD8iLiI6VWUubm9ybWFsaXplKHQpfSxyZWxhdGl2ZShlLHQpe2lmKExlKGUsImZyb20iKSxMZSh0LCJ0byIpLGU9PT10KXJldHVybiIiO2lmKChlPVVlLnJlc29sdmUoZSkpPT09KHQ9VWUucmVzb2x2ZSh0KSkpcmV0dXJuIiI7Y29uc3Qgbj1lLmxlbmd0aCxyPW4tMSxpPXQubGVuZ3RoLTEsYT1yPGk/cjppO2xldCBvPS0xLHM9MDtmb3IoO3M8YTtzKyspe2NvbnN0IG49ZS5jaGFyQ29kZUF0KDErcyk7aWYobiE9PXQuY2hhckNvZGVBdCgxK3MpKWJyZWFrO249PT1rZSYmKG89cyl9aWYocz09PWEpaWYoaT5hKXtpZih0LmNoYXJDb2RlQXQoMStzKT09PWtlKXJldHVybiB0LnNsaWNlKDErcysxKTtpZigwPT09cylyZXR1cm4gdC5zbGljZSgxK3MpfWVsc2Ugcj5hJiYoZS5jaGFyQ29kZUF0KDErcyk9PT1rZT9vPXM6MD09PXMmJihvPTApKTtsZXQgbD0iIjtmb3Iocz0xK28rMTtzPD1uOysrcylzIT09biYmZS5jaGFyQ29kZUF0KHMpIT09a2V8fChsKz0wPT09bC5sZW5ndGg/Ii4uIjoiLy4uIik7cmV0dXJuYCR7bH0ke3Quc2xpY2UoMStvKX1gfSx0b05hbWVzcGFjZWRQYXRoOmU9PmUsZGlybmFtZShlKXtpZihMZShlLCJwYXRoIiksMD09PWUubGVuZ3RoKXJldHVybiIuIjtjb25zdCB0PWUuY2hhckNvZGVBdCgwKT09PWtlO2xldCBuPS0xLHI9ITA7Zm9yKGxldCB0PWUubGVuZ3RoLTE7dD49MTstLXQpaWYoZS5jaGFyQ29kZUF0KHQpPT09a2Upe2lmKCFyKXtuPXQ7YnJlYWt9fWVsc2Ugcj0hMTtyZXR1cm4tMT09PW4/dD8iLyI6Ii4iOnQmJjE9PT1uPyIvLyI6ZS5zbGljZSgwLG4pfSxiYXNlbmFtZShlLHQpe3ZvaWQgMCE9PXQmJkxlKHQsImV4dCIpLExlKGUsInBhdGgiKTtsZXQgbixyPTAsaT0tMSxhPSEwO2lmKHZvaWQgMCE9PXQmJnQubGVuZ3RoPjAmJnQubGVuZ3RoPD1lLmxlbmd0aCl7aWYodD09PWUpcmV0dXJuIiI7bGV0IG89dC5sZW5ndGgtMSxzPS0xO2ZvcihuPWUubGVuZ3RoLTE7bj49MDstLW4pe2NvbnN0IGw9ZS5jaGFyQ29kZUF0KG4pO2lmKGw9PT1rZSl7aWYoIWEpe3I9bisxO2JyZWFrfX1lbHNlLTE9PT1zJiYoYT0hMSxzPW4rMSksbz49MCYmKGw9PT10LmNoYXJDb2RlQXQobyk/LTE9PS0tbyYmKGk9bik6KG89LTEsaT1zKSl9cmV0dXJuIHI9PT1pP2k9czotMT09PWkmJihpPWUubGVuZ3RoKSxlLnNsaWNlKHIsaSl9Zm9yKG49ZS5sZW5ndGgtMTtuPj0wOy0tbilpZihlLmNoYXJDb2RlQXQobik9PT1rZSl7aWYoIWEpe3I9bisxO2JyZWFrfX1lbHNlLTE9PT1pJiYoYT0hMSxpPW4rMSk7cmV0dXJuLTE9PT1pPyIiOmUuc2xpY2UocixpKX0sZXh0bmFtZShlKXtMZShlLCJwYXRoIik7bGV0IHQ9LTEsbj0wLHI9LTEsaT0hMCxhPTA7Zm9yKGxldCBvPWUubGVuZ3RoLTE7bz49MDstLW8pe2NvbnN0IHM9ZS5jaGFyQ29kZUF0KG8pO2lmKHMhPT1rZSktMT09PXImJihpPSExLHI9bysxKSxzPT09VGU/LTE9PT10P3Q9bzoxIT09YSYmKGE9MSk6LTEhPT10JiYoYT0tMSk7ZWxzZSBpZighaSl7bj1vKzE7YnJlYWt9fXJldHVybi0xPT09dHx8LTE9PT1yfHwwPT09YXx8MT09PWEmJnQ9PT1yLTEmJnQ9PT1uKzE/IiI6ZS5zbGljZSh0LHIpfSxmb3JtYXQ6SWUuYmluZChudWxsLCIvIikscGFyc2UoZSl7TGUoZSwicGF0aCIpO2NvbnN0IHQ9e3Jvb3Q6IiIsZGlyOiIiLGJhc2U6IiIsZXh0OiIiLG5hbWU6IiJ9O2lmKDA9PT1lLmxlbmd0aClyZXR1cm4gdDtjb25zdCBuPWUuY2hhckNvZGVBdCgwKT09PWtlO2xldCByO24/KHQucm9vdD0iLyIscj0xKTpyPTA7bGV0IGk9LTEsYT0wLG89LTEscz0hMCxsPWUubGVuZ3RoLTEsYz0wO2Zvcig7bD49cjstLWwpe2NvbnN0IHQ9ZS5jaGFyQ29kZUF0KGwpO2lmKHQhPT1rZSktMT09PW8mJihzPSExLG89bCsxKSx0PT09VGU/LTE9PT1pP2k9bDoxIT09YyYmKGM9MSk6LTEhPT1pJiYoYz0tMSk7ZWxzZSBpZighcyl7YT1sKzE7YnJlYWt9fWlmKC0xIT09byl7Y29uc3Qgcj0wPT09YSYmbj8xOmE7LTE9PT1pfHwwPT09Y3x8MT09PWMmJmk9PT1vLTEmJmk9PT1hKzE/dC5iYXNlPXQubmFtZT1lLnNsaWNlKHIsbyk6KHQubmFtZT1lLnNsaWNlKHIsaSksdC5iYXNlPWUuc2xpY2UocixvKSx0LmV4dD1lLnNsaWNlKGksbykpfXJldHVybiBhPjA/dC5kaXI9ZS5zbGljZSgwLGEtMSk6biYmKHQuZGlyPSIvIiksdH0sc2VwOiIvIixkZWxpbWl0ZXI6IjoiLHdpbjMyOm51bGwscG9zaXg6bnVsbH07VWUud2luMzI9TmUud2luMzI9TmUsVWUucG9zaXg9TmUucG9zaXg9VWUsIndpbjMyIj09PXllP05lLm5vcm1hbGl6ZTpVZS5ub3JtYWxpemUsIndpbjMyIj09PXllP05lLnJlc29sdmU6VWUucmVzb2x2ZSwid2luMzIiPT09eWU/TmUucmVsYXRpdmU6VWUucmVsYXRpdmUsIndpbjMyIj09PXllP05lLmRpcm5hbWU6VWUuZGlybmFtZSwid2luMzIiPT09eWU/TmUuYmFzZW5hbWU6VWUuYmFzZW5hbWUsIndpbjMyIj09PXllP05lLmV4dG5hbWU6VWUuZXh0bmFtZSwid2luMzIiPT09eWU/TmUuc2VwOlVlLnNlcDtjb25zdCBIZT0vXlx3W1x3XGQrLi1dKiQvLHplPS9eXC8vLERlPS9eXC9cLy87ZnVuY3Rpb24gV2UoZSx0KXtpZighZS5zY2hlbWUmJnQpdGhyb3cgbmV3IEVycm9yKGBbVXJpRXJyb3JdOiBTY2hlbWUgaXMgbWlzc2luZzoge3NjaGVtZTogIiIsIGF1dGhvcml0eTogIiR7ZS5hdXRob3JpdHl9IiwgcGF0aDogIiR7ZS5wYXRofSIsIHF1ZXJ5OiAiJHtlLnF1ZXJ5fSIsIGZyYWdtZW50OiAiJHtlLmZyYWdtZW50fSJ9YCk7aWYoZS5zY2hlbWUmJiFIZS50ZXN0KGUuc2NoZW1lKSl0aHJvdyBuZXcgRXJyb3IoIltVcmlFcnJvcl06IFNjaGVtZSBjb250YWlucyBpbGxlZ2FsIGNoYXJhY3RlcnMuIik7aWYoZS5wYXRoKWlmKGUuYXV0aG9yaXR5KXtpZighemUudGVzdChlLnBhdGgpKXRocm93IG5ldyBFcnJvcignW1VyaUVycm9yXTogSWYgYSBVUkkgY29udGFpbnMgYW4gYXV0aG9yaXR5IGNvbXBvbmVudCwgdGhlbiB0aGUgcGF0aCBjb21wb25lbnQgbXVzdCBlaXRoZXIgYmUgZW1wdHkgb3IgYmVnaW4gd2l0aCBhIHNsYXNoICgiLyIpIGNoYXJhY3RlcicpfWVsc2UgaWYoRGUudGVzdChlLnBhdGgpKXRocm93IG5ldyBFcnJvcignW1VyaUVycm9yXTogSWYgYSBVUkkgZG9lcyBub3QgY29udGFpbiBhbiBhdXRob3JpdHkgY29tcG9uZW50LCB0aGVuIHRoZSBwYXRoIGNhbm5vdCBiZWdpbiB3aXRoIHR3byBzbGFzaCBjaGFyYWN0ZXJzICgiLy8iKScpfWNvbnN0IE9lPSIiLFBlPSIvIixxZT0vXigoW146Lz8jXSs/KTopPyhcL1wvKFteLz8jXSopKT8oW14/I10qKShcPyhbXiNdKikpPygjKC4qKSk/LztjbGFzcyBGZXtjb25zdHJ1Y3RvcihlLHQsbixyLGksYT0hMSl7Im9iamVjdCI9PXR5cGVvZiBlPyh0aGlzLnNjaGVtZT1lLnNjaGVtZXx8T2UsdGhpcy5hdXRob3JpdHk9ZS5hdXRob3JpdHl8fE9lLHRoaXMucGF0aD1lLnBhdGh8fE9lLHRoaXMucXVlcnk9ZS5xdWVyeXx8T2UsdGhpcy5mcmFnbWVudD1lLmZyYWdtZW50fHxPZSk6KHRoaXMuc2NoZW1lPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGV8fHQ/ZToiZmlsZSJ9KGUsYSksdGhpcy5hdXRob3JpdHk9dHx8T2UsdGhpcy5wYXRoPWZ1bmN0aW9uKGUsdCl7c3dpdGNoKGUpe2Nhc2UiaHR0cHMiOmNhc2UiaHR0cCI6Y2FzZSJmaWxlIjp0P3RbMF0hPT1QZSYmKHQ9UGUrdCk6dD1QZX1yZXR1cm4gdH0odGhpcy5zY2hlbWUsbnx8T2UpLHRoaXMucXVlcnk9cnx8T2UsdGhpcy5mcmFnbWVudD1pfHxPZSxXZSh0aGlzLGEpKX1zdGF0aWMgaXNVcmkoZSl7cmV0dXJuIGUgaW5zdGFuY2VvZiBGZXx8ISFlJiYoInN0cmluZyI9PXR5cGVvZiBlLmF1dGhvcml0eSYmInN0cmluZyI9PXR5cGVvZiBlLmZyYWdtZW50JiYic3RyaW5nIj09dHlwZW9mIGUucGF0aCYmInN0cmluZyI9PXR5cGVvZiBlLnF1ZXJ5JiYic3RyaW5nIj09dHlwZW9mIGUuc2NoZW1lJiYic3RyaW5nIj09dHlwZW9mIGUuZnNQYXRoJiYiZnVuY3Rpb24iPT10eXBlb2YgZS53aXRoJiYiZnVuY3Rpb24iPT10eXBlb2YgZS50b1N0cmluZyl9Z2V0IGZzUGF0aCgpe3JldHVybiAkZSh0aGlzLCExKX13aXRoKGUpe2lmKCFlKXJldHVybiB0aGlzO2xldHtzY2hlbWU6dCxhdXRob3JpdHk6bixwYXRoOnIscXVlcnk6aSxmcmFnbWVudDphfT1lO3JldHVybiB2b2lkIDA9PT10P3Q9dGhpcy5zY2hlbWU6bnVsbD09PXQmJih0PU9lKSx2b2lkIDA9PT1uP249dGhpcy5hdXRob3JpdHk6bnVsbD09PW4mJihuPU9lKSx2b2lkIDA9PT1yP3I9dGhpcy5wYXRoOm51bGw9PT1yJiYocj1PZSksdm9pZCAwPT09aT9pPXRoaXMucXVlcnk6bnVsbD09PWkmJihpPU9lKSx2b2lkIDA9PT1hP2E9dGhpcy5mcmFnbWVudDpudWxsPT09YSYmKGE9T2UpLHQ9PT10aGlzLnNjaGVtZSYmbj09PXRoaXMuYXV0aG9yaXR5JiZyPT09dGhpcy5wYXRoJiZpPT09dGhpcy5xdWVyeSYmYT09PXRoaXMuZnJhZ21lbnQ/dGhpczpuZXcgQmUodCxuLHIsaSxhKX1zdGF0aWMgcGFyc2UoZSx0PSExKXtjb25zdCBuPXFlLmV4ZWMoZSk7cmV0dXJuIG4/bmV3IEJlKG5bMl18fE9lLFFlKG5bNF18fE9lKSxRZShuWzVdfHxPZSksUWUobls3XXx8T2UpLFFlKG5bOV18fE9lKSx0KTpuZXcgQmUoT2UsT2UsT2UsT2UsT2UpfXN0YXRpYyBmaWxlKGUpe2xldCB0PU9lO2lmKE0mJihlPWUucmVwbGFjZSgvXFwvZyxQZSkpLGVbMF09PT1QZSYmZVsxXT09PVBlKXtjb25zdCBuPWUuaW5kZXhPZihQZSwyKTstMT09PW4/KHQ9ZS5zdWJzdHJpbmcoMiksZT1QZSk6KHQ9ZS5zdWJzdHJpbmcoMixuKSxlPWUuc3Vic3RyaW5nKG4pfHxQZSl9cmV0dXJuIG5ldyBCZSgiZmlsZSIsdCxlLE9lLE9lKX1zdGF0aWMgZnJvbShlKXtjb25zdCB0PW5ldyBCZShlLnNjaGVtZSxlLmF1dGhvcml0eSxlLnBhdGgsZS5xdWVyeSxlLmZyYWdtZW50KTtyZXR1cm4gV2UodCwhMCksdH1zdGF0aWMgam9pblBhdGgoZSwuLi50KXtpZighZS5wYXRoKXRocm93IG5ldyBFcnJvcigiW1VyaUVycm9yXTogY2Fubm90IGNhbGwgam9pblBhdGggb24gVVJJIHdpdGhvdXQgcGF0aCIpO2xldCBuO3JldHVybiBuPU0mJiJmaWxlIj09PWUuc2NoZW1lP0ZlLmZpbGUoTmUuam9pbigkZShlLCEwKSwuLi50KSkucGF0aDpVZS5qb2luKGUucGF0aCwuLi50KSxlLndpdGgoe3BhdGg6bn0pfXRvU3RyaW5nKGU9ITEpe3JldHVybiBKZSh0aGlzLGUpfXRvSlNPTigpe3JldHVybiB0aGlzfXN0YXRpYyByZXZpdmUoZSl7aWYoZSl7aWYoZSBpbnN0YW5jZW9mIEZlKXJldHVybiBlO3tjb25zdCB0PW5ldyBCZShlKTtyZXR1cm4gdC5fZm9ybWF0dGVkPWUuZXh0ZXJuYWwsdC5fZnNQYXRoPWUuX3NlcD09PVZlP2UuZnNQYXRoOm51bGwsdH19cmV0dXJuIGV9fWNvbnN0IFZlPU0/MTp2b2lkIDA7Y2xhc3MgQmUgZXh0ZW5kcyBGZXtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5fZm9ybWF0dGVkPW51bGwsdGhpcy5fZnNQYXRoPW51bGx9Z2V0IGZzUGF0aCgpe3JldHVybiB0aGlzLl9mc1BhdGh8fCh0aGlzLl9mc1BhdGg9JGUodGhpcywhMSkpLHRoaXMuX2ZzUGF0aH10b1N0cmluZyhlPSExKXtyZXR1cm4gZT9KZSh0aGlzLCEwKToodGhpcy5fZm9ybWF0dGVkfHwodGhpcy5fZm9ybWF0dGVkPUplKHRoaXMsITEpKSx0aGlzLl9mb3JtYXR0ZWQpfXRvSlNPTigpe2NvbnN0IGU9eyRtaWQ6MX07cmV0dXJuIHRoaXMuX2ZzUGF0aCYmKGUuZnNQYXRoPXRoaXMuX2ZzUGF0aCxlLl9zZXA9VmUpLHRoaXMuX2Zvcm1hdHRlZCYmKGUuZXh0ZXJuYWw9dGhpcy5fZm9ybWF0dGVkKSx0aGlzLnBhdGgmJihlLnBhdGg9dGhpcy5wYXRoKSx0aGlzLnNjaGVtZSYmKGUuc2NoZW1lPXRoaXMuc2NoZW1lKSx0aGlzLmF1dGhvcml0eSYmKGUuYXV0aG9yaXR5PXRoaXMuYXV0aG9yaXR5KSx0aGlzLnF1ZXJ5JiYoZS5xdWVyeT10aGlzLnF1ZXJ5KSx0aGlzLmZyYWdtZW50JiYoZS5mcmFnbWVudD10aGlzLmZyYWdtZW50KSxlfX1jb25zdCBLZT17NTg6IiUzQSIsNDc6IiUyRiIsNjM6IiUzRiIsMzU6IiUyMyIsOTE6IiU1QiIsOTM6IiU1RCIsNjQ6IiU0MCIsMzM6IiUyMSIsMzY6IiUyNCIsMzg6IiUyNiIsMzk6IiUyNyIsNDA6IiUyOCIsNDE6IiUyOSIsNDI6IiUyQSIsNDM6IiUyQiIsNDQ6IiUyQyIsNTk6IiUzQiIsNjE6IiUzRCIsMzI6IiUyMCJ9O2Z1bmN0aW9uIGplKGUsdCl7bGV0IG4scj0tMTtmb3IobGV0IGk9MDtpPGUubGVuZ3RoO2krKyl7Y29uc3QgYT1lLmNoYXJDb2RlQXQoaSk7aWYoYT49OTcmJmE8PTEyMnx8YT49NjUmJmE8PTkwfHxhPj00OCYmYTw9NTd8fDQ1PT09YXx8NDY9PT1hfHw5NT09PWF8fDEyNj09PWF8fHQmJjQ3PT09YSktMSE9PXImJihuKz1lbmNvZGVVUklDb21wb25lbnQoZS5zdWJzdHJpbmcocixpKSkscj0tMSksdm9pZCAwIT09biYmKG4rPWUuY2hhckF0KGkpKTtlbHNle3ZvaWQgMD09PW4mJihuPWUuc3Vic3RyKDAsaSkpO2NvbnN0IHQ9S2VbYV07dm9pZCAwIT09dD8oLTEhPT1yJiYobis9ZW5jb2RlVVJJQ29tcG9uZW50KGUuc3Vic3RyaW5nKHIsaSkpLHI9LTEpLG4rPXQpOi0xPT09ciYmKHI9aSl9fXJldHVybi0xIT09ciYmKG4rPWVuY29kZVVSSUNvbXBvbmVudChlLnN1YnN0cmluZyhyKSkpLHZvaWQgMCE9PW4/bjplfWZ1bmN0aW9uIEdlKGUpe2xldCB0O2ZvcihsZXQgbj0wO248ZS5sZW5ndGg7bisrKXtjb25zdCByPWUuY2hhckNvZGVBdChuKTszNT09PXJ8fDYzPT09cj8odm9pZCAwPT09dCYmKHQ9ZS5zdWJzdHIoMCxuKSksdCs9S2Vbcl0pOnZvaWQgMCE9PXQmJih0Kz1lW25dKX1yZXR1cm4gdm9pZCAwIT09dD90OmV9ZnVuY3Rpb24gJGUoZSx0KXtsZXQgbjtyZXR1cm4gbj1lLmF1dGhvcml0eSYmZS5wYXRoLmxlbmd0aD4xJiYiZmlsZSI9PT1lLnNjaGVtZT9gLy8ke2UuYXV0aG9yaXR5fSR7ZS5wYXRofWA6NDc9PT1lLnBhdGguY2hhckNvZGVBdCgwKSYmKGUucGF0aC5jaGFyQ29kZUF0KDEpPj02NSYmZS5wYXRoLmNoYXJDb2RlQXQoMSk8PTkwfHxlLnBhdGguY2hhckNvZGVBdCgxKT49OTcmJmUucGF0aC5jaGFyQ29kZUF0KDEpPD0xMjIpJiY1OD09PWUucGF0aC5jaGFyQ29kZUF0KDIpP3Q/ZS5wYXRoLnN1YnN0cigxKTplLnBhdGhbMV0udG9Mb3dlckNhc2UoKStlLnBhdGguc3Vic3RyKDIpOmUucGF0aCxNJiYobj1uLnJlcGxhY2UoL1wvL2csIlxcIikpLG59ZnVuY3Rpb24gSmUoZSx0KXtjb25zdCBuPXQ/R2U6amU7bGV0IHI9IiIse3NjaGVtZTppLGF1dGhvcml0eTphLHBhdGg6byxxdWVyeTpzLGZyYWdtZW50Omx9PWU7aWYoaSYmKHIrPWkscis9IjoiKSwoYXx8ImZpbGUiPT09aSkmJihyKz1QZSxyKz1QZSksYSl7bGV0IGU9YS5pbmRleE9mKCJAIik7aWYoLTEhPT1lKXtjb25zdCB0PWEuc3Vic3RyKDAsZSk7YT1hLnN1YnN0cihlKzEpLGU9dC5pbmRleE9mKCI6IiksLTE9PT1lP3IrPW4odCwhMSk6KHIrPW4odC5zdWJzdHIoMCxlKSwhMSkscis9IjoiLHIrPW4odC5zdWJzdHIoZSsxKSwhMSkpLHIrPSJAIn1hPWEudG9Mb3dlckNhc2UoKSxlPWEuaW5kZXhPZigiOiIpLC0xPT09ZT9yKz1uKGEsITEpOihyKz1uKGEuc3Vic3RyKDAsZSksITEpLHIrPWEuc3Vic3RyKGUpKX1pZihvKXtpZihvLmxlbmd0aD49MyYmNDc9PT1vLmNoYXJDb2RlQXQoMCkmJjU4PT09by5jaGFyQ29kZUF0KDIpKXtjb25zdCBlPW8uY2hhckNvZGVBdCgxKTtlPj02NSYmZTw9OTAmJihvPWAvJHtTdHJpbmcuZnJvbUNoYXJDb2RlKGUrMzIpfToke28uc3Vic3RyKDMpfWApfWVsc2UgaWYoby5sZW5ndGg+PTImJjU4PT09by5jaGFyQ29kZUF0KDEpKXtjb25zdCBlPW8uY2hhckNvZGVBdCgwKTtlPj02NSYmZTw9OTAmJihvPWAke1N0cmluZy5mcm9tQ2hhckNvZGUoZSszMil9OiR7by5zdWJzdHIoMil9YCl9cis9bihvLCEwKX1yZXR1cm4gcyYmKHIrPSI/IixyKz1uKHMsITEpKSxsJiYocis9IiMiLHIrPXQ/bDpqZShsLCExKSkscn1mdW5jdGlvbiBYZShlKXt0cnl7cmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudChlKX1jYXRjaCh0KXtyZXR1cm4gZS5sZW5ndGg+Mz9lLnN1YnN0cigwLDMpK1hlKGUuc3Vic3RyKDMpKTplfX1jb25zdCBZZT0vKCVbMC05QS1aYS16XVswLTlBLVphLXpdKSsvZztmdW5jdGlvbiBRZShlKXtyZXR1cm4gZS5tYXRjaChZZSk/ZS5yZXBsYWNlKFllLChlPT5YZShlKSkpOmV9Y2xhc3MgWmV7Y29uc3RydWN0b3IoZSx0KXt0aGlzLmxpbmVOdW1iZXI9ZSx0aGlzLmNvbHVtbj10fXdpdGgoZT10aGlzLmxpbmVOdW1iZXIsdD10aGlzLmNvbHVtbil7cmV0dXJuIGU9PT10aGlzLmxpbmVOdW1iZXImJnQ9PT10aGlzLmNvbHVtbj90aGlzOm5ldyBaZShlLHQpfWRlbHRhKGU9MCx0PTApe3JldHVybiB0aGlzLndpdGgodGhpcy5saW5lTnVtYmVyK2UsdGhpcy5jb2x1bW4rdCl9ZXF1YWxzKGUpe3JldHVybiBaZS5lcXVhbHModGhpcyxlKX1zdGF0aWMgZXF1YWxzKGUsdCl7cmV0dXJuIWUmJiF0fHwhIWUmJiEhdCYmZS5saW5lTnVtYmVyPT09dC5saW5lTnVtYmVyJiZlLmNvbHVtbj09PXQuY29sdW1ufWlzQmVmb3JlKGUpe3JldHVybiBaZS5pc0JlZm9yZSh0aGlzLGUpfXN0YXRpYyBpc0JlZm9yZShlLHQpe3JldHVybiBlLmxpbmVOdW1iZXI8dC5saW5lTnVtYmVyfHwhKHQubGluZU51bWJlcjxlLmxpbmVOdW1iZXIpJiZlLmNvbHVtbjx0LmNvbHVtbn1pc0JlZm9yZU9yRXF1YWwoZSl7cmV0dXJuIFplLmlzQmVmb3JlT3JFcXVhbCh0aGlzLGUpfXN0YXRpYyBpc0JlZm9yZU9yRXF1YWwoZSx0KXtyZXR1cm4gZS5saW5lTnVtYmVyPHQubGluZU51bWJlcnx8ISh0LmxpbmVOdW1iZXI8ZS5saW5lTnVtYmVyKSYmZS5jb2x1bW48PXQuY29sdW1ufXN0YXRpYyBjb21wYXJlKGUsdCl7Y29uc3Qgbj0wfGUubGluZU51bWJlcixyPTB8dC5saW5lTnVtYmVyO2lmKG49PT1yKXtyZXR1cm4oMHxlLmNvbHVtbiktKDB8dC5jb2x1bW4pfXJldHVybiBuLXJ9Y2xvbmUoKXtyZXR1cm4gbmV3IFplKHRoaXMubGluZU51bWJlcix0aGlzLmNvbHVtbil9dG9TdHJpbmcoKXtyZXR1cm4iKCIrdGhpcy5saW5lTnVtYmVyKyIsIit0aGlzLmNvbHVtbisiKSJ9c3RhdGljIGxpZnQoZSl7cmV0dXJuIG5ldyBaZShlLmxpbmVOdW1iZXIsZS5jb2x1bW4pfXN0YXRpYyBpc0lQb3NpdGlvbihlKXtyZXR1cm4gZSYmIm51bWJlciI9PXR5cGVvZiBlLmxpbmVOdW1iZXImJiJudW1iZXIiPT10eXBlb2YgZS5jb2x1bW59fWNsYXNzIGV0e2NvbnN0cnVjdG9yKGUsdCxuLHIpe2U+bnx8ZT09PW4mJnQ+cj8odGhpcy5zdGFydExpbmVOdW1iZXI9bix0aGlzLnN0YXJ0Q29sdW1uPXIsdGhpcy5lbmRMaW5lTnVtYmVyPWUsdGhpcy5lbmRDb2x1bW49dCk6KHRoaXMuc3RhcnRMaW5lTnVtYmVyPWUsdGhpcy5zdGFydENvbHVtbj10LHRoaXMuZW5kTGluZU51bWJlcj1uLHRoaXMuZW5kQ29sdW1uPXIpfWlzRW1wdHkoKXtyZXR1cm4gZXQuaXNFbXB0eSh0aGlzKX1zdGF0aWMgaXNFbXB0eShlKXtyZXR1cm4gZS5zdGFydExpbmVOdW1iZXI9PT1lLmVuZExpbmVOdW1iZXImJmUuc3RhcnRDb2x1bW49PT1lLmVuZENvbHVtbn1jb250YWluc1Bvc2l0aW9uKGUpe3JldHVybiBldC5jb250YWluc1Bvc2l0aW9uKHRoaXMsZSl9c3RhdGljIGNvbnRhaW5zUG9zaXRpb24oZSx0KXtyZXR1cm4hKHQubGluZU51bWJlcjxlLnN0YXJ0TGluZU51bWJlcnx8dC5saW5lTnVtYmVyPmUuZW5kTGluZU51bWJlcikmJighKHQubGluZU51bWJlcj09PWUuc3RhcnRMaW5lTnVtYmVyJiZ0LmNvbHVtbjxlLnN0YXJ0Q29sdW1uKSYmISh0LmxpbmVOdW1iZXI9PT1lLmVuZExpbmVOdW1iZXImJnQuY29sdW1uPmUuZW5kQ29sdW1uKSl9c3RhdGljIHN0cmljdENvbnRhaW5zUG9zaXRpb24oZSx0KXtyZXR1cm4hKHQubGluZU51bWJlcjxlLnN0YXJ0TGluZU51bWJlcnx8dC5saW5lTnVtYmVyPmUuZW5kTGluZU51bWJlcikmJighKHQubGluZU51bWJlcj09PWUuc3RhcnRMaW5lTnVtYmVyJiZ0LmNvbHVtbjw9ZS5zdGFydENvbHVtbikmJiEodC5saW5lTnVtYmVyPT09ZS5lbmRMaW5lTnVtYmVyJiZ0LmNvbHVtbj49ZS5lbmRDb2x1bW4pKX1jb250YWluc1JhbmdlKGUpe3JldHVybiBldC5jb250YWluc1JhbmdlKHRoaXMsZSl9c3RhdGljIGNvbnRhaW5zUmFuZ2UoZSx0KXtyZXR1cm4hKHQuc3RhcnRMaW5lTnVtYmVyPGUuc3RhcnRMaW5lTnVtYmVyfHx0LmVuZExpbmVOdW1iZXI8ZS5zdGFydExpbmVOdW1iZXIpJiYoISh0LnN0YXJ0TGluZU51bWJlcj5lLmVuZExpbmVOdW1iZXJ8fHQuZW5kTGluZU51bWJlcj5lLmVuZExpbmVOdW1iZXIpJiYoISh0LnN0YXJ0TGluZU51bWJlcj09PWUuc3RhcnRMaW5lTnVtYmVyJiZ0LnN0YXJ0Q29sdW1uPGUuc3RhcnRDb2x1bW4pJiYhKHQuZW5kTGluZU51bWJlcj09PWUuZW5kTGluZU51bWJlciYmdC5lbmRDb2x1bW4+ZS5lbmRDb2x1bW4pKSl9c3RyaWN0Q29udGFpbnNSYW5nZShlKXtyZXR1cm4gZXQuc3RyaWN0Q29udGFpbnNSYW5nZSh0aGlzLGUpfXN0YXRpYyBzdHJpY3RDb250YWluc1JhbmdlKGUsdCl7cmV0dXJuISh0LnN0YXJ0TGluZU51bWJlcjxlLnN0YXJ0TGluZU51bWJlcnx8dC5lbmRMaW5lTnVtYmVyPGUuc3RhcnRMaW5lTnVtYmVyKSYmKCEodC5zdGFydExpbmVOdW1iZXI+ZS5lbmRMaW5lTnVtYmVyfHx0LmVuZExpbmVOdW1iZXI+ZS5lbmRMaW5lTnVtYmVyKSYmKCEodC5zdGFydExpbmVOdW1iZXI9PT1lLnN0YXJ0TGluZU51bWJlciYmdC5zdGFydENvbHVtbjw9ZS5zdGFydENvbHVtbikmJiEodC5lbmRMaW5lTnVtYmVyPT09ZS5lbmRMaW5lTnVtYmVyJiZ0LmVuZENvbHVtbj49ZS5lbmRDb2x1bW4pKSl9cGx1c1JhbmdlKGUpe3JldHVybiBldC5wbHVzUmFuZ2UodGhpcyxlKX1zdGF0aWMgcGx1c1JhbmdlKGUsdCl7bGV0IG4scixpLGE7cmV0dXJuIHQuc3RhcnRMaW5lTnVtYmVyPGUuc3RhcnRMaW5lTnVtYmVyPyhuPXQuc3RhcnRMaW5lTnVtYmVyLHI9dC5zdGFydENvbHVtbik6dC5zdGFydExpbmVOdW1iZXI9PT1lLnN0YXJ0TGluZU51bWJlcj8obj10LnN0YXJ0TGluZU51bWJlcixyPU1hdGgubWluKHQuc3RhcnRDb2x1bW4sZS5zdGFydENvbHVtbikpOihuPWUuc3RhcnRMaW5lTnVtYmVyLHI9ZS5zdGFydENvbHVtbiksdC5lbmRMaW5lTnVtYmVyPmUuZW5kTGluZU51bWJlcj8oaT10LmVuZExpbmVOdW1iZXIsYT10LmVuZENvbHVtbik6dC5lbmRMaW5lTnVtYmVyPT09ZS5lbmRMaW5lTnVtYmVyPyhpPXQuZW5kTGluZU51bWJlcixhPU1hdGgubWF4KHQuZW5kQ29sdW1uLGUuZW5kQ29sdW1uKSk6KGk9ZS5lbmRMaW5lTnVtYmVyLGE9ZS5lbmRDb2x1bW4pLG5ldyBldChuLHIsaSxhKX1pbnRlcnNlY3RSYW5nZXMoZSl7cmV0dXJuIGV0LmludGVyc2VjdFJhbmdlcyh0aGlzLGUpfXN0YXRpYyBpbnRlcnNlY3RSYW5nZXMoZSx0KXtsZXQgbj1lLnN0YXJ0TGluZU51bWJlcixyPWUuc3RhcnRDb2x1bW4saT1lLmVuZExpbmVOdW1iZXIsYT1lLmVuZENvbHVtbjtjb25zdCBvPXQuc3RhcnRMaW5lTnVtYmVyLHM9dC5zdGFydENvbHVtbixsPXQuZW5kTGluZU51bWJlcixjPXQuZW5kQ29sdW1uO3JldHVybiBuPG8/KG49byxyPXMpOm49PT1vJiYocj1NYXRoLm1heChyLHMpKSxpPmw/KGk9bCxhPWMpOmk9PT1sJiYoYT1NYXRoLm1pbihhLGMpKSxuPml8fG49PT1pJiZyPmE/bnVsbDpuZXcgZXQobixyLGksYSl9ZXF1YWxzUmFuZ2UoZSl7cmV0dXJuIGV0LmVxdWFsc1JhbmdlKHRoaXMsZSl9c3RhdGljIGVxdWFsc1JhbmdlKGUsdCl7cmV0dXJuISFlJiYhIXQmJmUuc3RhcnRMaW5lTnVtYmVyPT09dC5zdGFydExpbmVOdW1iZXImJmUuc3RhcnRDb2x1bW49PT10LnN0YXJ0Q29sdW1uJiZlLmVuZExpbmVOdW1iZXI9PT10LmVuZExpbmVOdW1iZXImJmUuZW5kQ29sdW1uPT09dC5lbmRDb2x1bW59Z2V0RW5kUG9zaXRpb24oKXtyZXR1cm4gZXQuZ2V0RW5kUG9zaXRpb24odGhpcyl9c3RhdGljIGdldEVuZFBvc2l0aW9uKGUpe3JldHVybiBuZXcgWmUoZS5lbmRMaW5lTnVtYmVyLGUuZW5kQ29sdW1uKX1nZXRTdGFydFBvc2l0aW9uKCl7cmV0dXJuIGV0LmdldFN0YXJ0UG9zaXRpb24odGhpcyl9c3RhdGljIGdldFN0YXJ0UG9zaXRpb24oZSl7cmV0dXJuIG5ldyBaZShlLnN0YXJ0TGluZU51bWJlcixlLnN0YXJ0Q29sdW1uKX10b1N0cmluZygpe3JldHVybiJbIit0aGlzLnN0YXJ0TGluZU51bWJlcisiLCIrdGhpcy5zdGFydENvbHVtbisiIC0+ICIrdGhpcy5lbmRMaW5lTnVtYmVyKyIsIit0aGlzLmVuZENvbHVtbisiXSJ9c2V0RW5kUG9zaXRpb24oZSx0KXtyZXR1cm4gbmV3IGV0KHRoaXMuc3RhcnRMaW5lTnVtYmVyLHRoaXMuc3RhcnRDb2x1bW4sZSx0KX1zZXRTdGFydFBvc2l0aW9uKGUsdCl7cmV0dXJuIG5ldyBldChlLHQsdGhpcy5lbmRMaW5lTnVtYmVyLHRoaXMuZW5kQ29sdW1uKX1jb2xsYXBzZVRvU3RhcnQoKXtyZXR1cm4gZXQuY29sbGFwc2VUb1N0YXJ0KHRoaXMpfXN0YXRpYyBjb2xsYXBzZVRvU3RhcnQoZSl7cmV0dXJuIG5ldyBldChlLnN0YXJ0TGluZU51bWJlcixlLnN0YXJ0Q29sdW1uLGUuc3RhcnRMaW5lTnVtYmVyLGUuc3RhcnRDb2x1bW4pfXN0YXRpYyBmcm9tUG9zaXRpb25zKGUsdD1lKXtyZXR1cm4gbmV3IGV0KGUubGluZU51bWJlcixlLmNvbHVtbix0LmxpbmVOdW1iZXIsdC5jb2x1bW4pfXN0YXRpYyBsaWZ0KGUpe3JldHVybiBlP25ldyBldChlLnN0YXJ0TGluZU51bWJlcixlLnN0YXJ0Q29sdW1uLGUuZW5kTGluZU51bWJlcixlLmVuZENvbHVtbik6bnVsbH1zdGF0aWMgaXNJUmFuZ2UoZSl7cmV0dXJuIGUmJiJudW1iZXIiPT10eXBlb2YgZS5zdGFydExpbmVOdW1iZXImJiJudW1iZXIiPT10eXBlb2YgZS5zdGFydENvbHVtbiYmIm51bWJlciI9PXR5cGVvZiBlLmVuZExpbmVOdW1iZXImJiJudW1iZXIiPT10eXBlb2YgZS5lbmRDb2x1bW59c3RhdGljIGFyZUludGVyc2VjdGluZ09yVG91Y2hpbmcoZSx0KXtyZXR1cm4hKGUuZW5kTGluZU51bWJlcjx0LnN0YXJ0TGluZU51bWJlcnx8ZS5lbmRMaW5lTnVtYmVyPT09dC5zdGFydExpbmVOdW1iZXImJmUuZW5kQ29sdW1uPHQuc3RhcnRDb2x1bW4pJiYhKHQuZW5kTGluZU51bWJlcjxlLnN0YXJ0TGluZU51bWJlcnx8dC5lbmRMaW5lTnVtYmVyPT09ZS5zdGFydExpbmVOdW1iZXImJnQuZW5kQ29sdW1uPGUuc3RhcnRDb2x1bW4pfXN0YXRpYyBhcmVJbnRlcnNlY3RpbmcoZSx0KXtyZXR1cm4hKGUuZW5kTGluZU51bWJlcjx0LnN0YXJ0TGluZU51bWJlcnx8ZS5lbmRMaW5lTnVtYmVyPT09dC5zdGFydExpbmVOdW1iZXImJmUuZW5kQ29sdW1uPD10LnN0YXJ0Q29sdW1uKSYmISh0LmVuZExpbmVOdW1iZXI8ZS5zdGFydExpbmVOdW1iZXJ8fHQuZW5kTGluZU51bWJlcj09PWUuc3RhcnRMaW5lTnVtYmVyJiZ0LmVuZENvbHVtbjw9ZS5zdGFydENvbHVtbil9c3RhdGljIGNvbXBhcmVSYW5nZXNVc2luZ1N0YXJ0cyhlLHQpe2lmKGUmJnQpe2NvbnN0IG49MHxlLnN0YXJ0TGluZU51bWJlcixyPTB8dC5zdGFydExpbmVOdW1iZXI7aWYobj09PXIpe2NvbnN0IG49MHxlLnN0YXJ0Q29sdW1uLHI9MHx0LnN0YXJ0Q29sdW1uO2lmKG49PT1yKXtjb25zdCBuPTB8ZS5lbmRMaW5lTnVtYmVyLHI9MHx0LmVuZExpbmVOdW1iZXI7aWYobj09PXIpe3JldHVybigwfGUuZW5kQ29sdW1uKS0oMHx0LmVuZENvbHVtbil9cmV0dXJuIG4tcn1yZXR1cm4gbi1yfXJldHVybiBuLXJ9cmV0dXJuKGU/MTowKS0odD8xOjApfXN0YXRpYyBjb21wYXJlUmFuZ2VzVXNpbmdFbmRzKGUsdCl7cmV0dXJuIGUuZW5kTGluZU51bWJlcj09PXQuZW5kTGluZU51bWJlcj9lLmVuZENvbHVtbj09PXQuZW5kQ29sdW1uP2Uuc3RhcnRMaW5lTnVtYmVyPT09dC5zdGFydExpbmVOdW1iZXI/ZS5zdGFydENvbHVtbi10LnN0YXJ0Q29sdW1uOmUuc3RhcnRMaW5lTnVtYmVyLXQuc3RhcnRMaW5lTnVtYmVyOmUuZW5kQ29sdW1uLXQuZW5kQ29sdW1uOmUuZW5kTGluZU51bWJlci10LmVuZExpbmVOdW1iZXJ9c3RhdGljIHNwYW5zTXVsdGlwbGVMaW5lcyhlKXtyZXR1cm4gZS5lbmRMaW5lTnVtYmVyPmUuc3RhcnRMaW5lTnVtYmVyfXRvSlNPTigpe3JldHVybiB0aGlzfX1mdW5jdGlvbiB0dChlLHQsbixyKXtyZXR1cm4gbmV3IGJlKGUsdCxuKS5Db21wdXRlRGlmZihyKX1jbGFzcyBudHtjb25zdHJ1Y3RvcihlKXtjb25zdCB0PVtdLG49W107Zm9yKGxldCByPTAsaT1lLmxlbmd0aDtyPGk7cisrKXRbcl09c3QoZVtyXSwxKSxuW3JdPWx0KGVbcl0sMSk7dGhpcy5saW5lcz1lLHRoaXMuX3N0YXJ0Q29sdW1ucz10LHRoaXMuX2VuZENvbHVtbnM9bn1nZXRFbGVtZW50cygpe2NvbnN0IGU9W107Zm9yKGxldCB0PTAsbj10aGlzLmxpbmVzLmxlbmd0aDt0PG47dCsrKWVbdF09dGhpcy5saW5lc1t0XS5zdWJzdHJpbmcodGhpcy5fc3RhcnRDb2x1bW5zW3RdLTEsdGhpcy5fZW5kQ29sdW1uc1t0XS0xKTtyZXR1cm4gZX1nZXRTdHJpY3RFbGVtZW50KGUpe3JldHVybiB0aGlzLmxpbmVzW2VdfWdldFN0YXJ0TGluZU51bWJlcihlKXtyZXR1cm4gZSsxfWdldEVuZExpbmVOdW1iZXIoZSl7cmV0dXJuIGUrMX1jcmVhdGVDaGFyU2VxdWVuY2UoZSx0LG4pe2NvbnN0IHI9W10saT1bXSxhPVtdO2xldCBvPTA7Zm9yKGxldCBzPXQ7czw9bjtzKyspe2NvbnN0IHQ9dGhpcy5saW5lc1tzXSxsPWU/dGhpcy5fc3RhcnRDb2x1bW5zW3NdOjEsYz1lP3RoaXMuX2VuZENvbHVtbnNbc106dC5sZW5ndGgrMTtmb3IobGV0IGU9bDtlPGM7ZSsrKXJbb109dC5jaGFyQ29kZUF0KGUtMSksaVtvXT1zKzEsYVtvXT1lLG8rKzshZSYmczxuJiYocltvXT0xMCxpW29dPXMrMSxhW29dPXQubGVuZ3RoKzEsbysrKX1yZXR1cm4gbmV3IHJ0KHIsaSxhKX19Y2xhc3MgcnR7Y29uc3RydWN0b3IoZSx0LG4pe3RoaXMuX2NoYXJDb2Rlcz1lLHRoaXMuX2xpbmVOdW1iZXJzPXQsdGhpcy5fY29sdW1ucz1ufXRvU3RyaW5nKCl7cmV0dXJuIlsiK3RoaXMuX2NoYXJDb2Rlcy5tYXAoKChlLHQpPT4oMTA9PT1lPyJcXG4iOlN0cmluZy5mcm9tQ2hhckNvZGUoZSkpK2AtKCR7dGhpcy5fbGluZU51bWJlcnNbdF19LCR7dGhpcy5fY29sdW1uc1t0XX0pYCkpLmpvaW4oIiwgIikrIl0ifV9hc3NlcnRJbmRleChlLHQpe2lmKGU8MHx8ZT49dC5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCJJbGxlZ2FsIGluZGV4Iil9Z2V0RWxlbWVudHMoKXtyZXR1cm4gdGhpcy5fY2hhckNvZGVzfWdldFN0YXJ0TGluZU51bWJlcihlKXtyZXR1cm4gZT4wJiZlPT09dGhpcy5fbGluZU51bWJlcnMubGVuZ3RoP3RoaXMuZ2V0RW5kTGluZU51bWJlcihlLTEpOih0aGlzLl9hc3NlcnRJbmRleChlLHRoaXMuX2xpbmVOdW1iZXJzKSx0aGlzLl9saW5lTnVtYmVyc1tlXSl9Z2V0RW5kTGluZU51bWJlcihlKXtyZXR1cm4tMT09PWU/dGhpcy5nZXRTdGFydExpbmVOdW1iZXIoZSsxKToodGhpcy5fYXNzZXJ0SW5kZXgoZSx0aGlzLl9saW5lTnVtYmVycyksMTA9PT10aGlzLl9jaGFyQ29kZXNbZV0/dGhpcy5fbGluZU51bWJlcnNbZV0rMTp0aGlzLl9saW5lTnVtYmVyc1tlXSl9Z2V0U3RhcnRDb2x1bW4oZSl7cmV0dXJuIGU+MCYmZT09PXRoaXMuX2NvbHVtbnMubGVuZ3RoP3RoaXMuZ2V0RW5kQ29sdW1uKGUtMSk6KHRoaXMuX2Fzc2VydEluZGV4KGUsdGhpcy5fY29sdW1ucyksdGhpcy5fY29sdW1uc1tlXSl9Z2V0RW5kQ29sdW1uKGUpe3JldHVybi0xPT09ZT90aGlzLmdldFN0YXJ0Q29sdW1uKGUrMSk6KHRoaXMuX2Fzc2VydEluZGV4KGUsdGhpcy5fY29sdW1ucyksMTA9PT10aGlzLl9jaGFyQ29kZXNbZV0/MTp0aGlzLl9jb2x1bW5zW2VdKzEpfX1jbGFzcyBpdHtjb25zdHJ1Y3RvcihlLHQsbixyLGksYSxvLHMpe3RoaXMub3JpZ2luYWxTdGFydExpbmVOdW1iZXI9ZSx0aGlzLm9yaWdpbmFsU3RhcnRDb2x1bW49dCx0aGlzLm9yaWdpbmFsRW5kTGluZU51bWJlcj1uLHRoaXMub3JpZ2luYWxFbmRDb2x1bW49cix0aGlzLm1vZGlmaWVkU3RhcnRMaW5lTnVtYmVyPWksdGhpcy5tb2RpZmllZFN0YXJ0Q29sdW1uPWEsdGhpcy5tb2RpZmllZEVuZExpbmVOdW1iZXI9byx0aGlzLm1vZGlmaWVkRW5kQ29sdW1uPXN9c3RhdGljIGNyZWF0ZUZyb21EaWZmQ2hhbmdlKGUsdCxuKXtjb25zdCByPXQuZ2V0U3RhcnRMaW5lTnVtYmVyKGUub3JpZ2luYWxTdGFydCksaT10LmdldFN0YXJ0Q29sdW1uKGUub3JpZ2luYWxTdGFydCksYT10LmdldEVuZExpbmVOdW1iZXIoZS5vcmlnaW5hbFN0YXJ0K2Uub3JpZ2luYWxMZW5ndGgtMSksbz10LmdldEVuZENvbHVtbihlLm9yaWdpbmFsU3RhcnQrZS5vcmlnaW5hbExlbmd0aC0xKSxzPW4uZ2V0U3RhcnRMaW5lTnVtYmVyKGUubW9kaWZpZWRTdGFydCksbD1uLmdldFN0YXJ0Q29sdW1uKGUubW9kaWZpZWRTdGFydCksYz1uLmdldEVuZExpbmVOdW1iZXIoZS5tb2RpZmllZFN0YXJ0K2UubW9kaWZpZWRMZW5ndGgtMSksaD1uLmdldEVuZENvbHVtbihlLm1vZGlmaWVkU3RhcnQrZS5tb2RpZmllZExlbmd0aC0xKTtyZXR1cm4gbmV3IGl0KHIsaSxhLG8scyxsLGMsaCl9fWNsYXNzIGF0e2NvbnN0cnVjdG9yKGUsdCxuLHIsaSl7dGhpcy5vcmlnaW5hbFN0YXJ0TGluZU51bWJlcj1lLHRoaXMub3JpZ2luYWxFbmRMaW5lTnVtYmVyPXQsdGhpcy5tb2RpZmllZFN0YXJ0TGluZU51bWJlcj1uLHRoaXMubW9kaWZpZWRFbmRMaW5lTnVtYmVyPXIsdGhpcy5jaGFyQ2hhbmdlcz1pfXN0YXRpYyBjcmVhdGVGcm9tRGlmZlJlc3VsdChlLHQsbixyLGksYSxvKXtsZXQgcyxsLGMsaCxkO2lmKDA9PT10Lm9yaWdpbmFsTGVuZ3RoPyhzPW4uZ2V0U3RhcnRMaW5lTnVtYmVyKHQub3JpZ2luYWxTdGFydCktMSxsPTApOihzPW4uZ2V0U3RhcnRMaW5lTnVtYmVyKHQub3JpZ2luYWxTdGFydCksbD1uLmdldEVuZExpbmVOdW1iZXIodC5vcmlnaW5hbFN0YXJ0K3Qub3JpZ2luYWxMZW5ndGgtMSkpLDA9PT10Lm1vZGlmaWVkTGVuZ3RoPyhjPXIuZ2V0U3RhcnRMaW5lTnVtYmVyKHQubW9kaWZpZWRTdGFydCktMSxoPTApOihjPXIuZ2V0U3RhcnRMaW5lTnVtYmVyKHQubW9kaWZpZWRTdGFydCksaD1yLmdldEVuZExpbmVOdW1iZXIodC5tb2RpZmllZFN0YXJ0K3QubW9kaWZpZWRMZW5ndGgtMSkpLGEmJnQub3JpZ2luYWxMZW5ndGg+MCYmdC5vcmlnaW5hbExlbmd0aDwyMCYmdC5tb2RpZmllZExlbmd0aD4wJiZ0Lm1vZGlmaWVkTGVuZ3RoPDIwJiZpKCkpe2NvbnN0IGE9bi5jcmVhdGVDaGFyU2VxdWVuY2UoZSx0Lm9yaWdpbmFsU3RhcnQsdC5vcmlnaW5hbFN0YXJ0K3Qub3JpZ2luYWxMZW5ndGgtMSkscz1yLmNyZWF0ZUNoYXJTZXF1ZW5jZShlLHQubW9kaWZpZWRTdGFydCx0Lm1vZGlmaWVkU3RhcnQrdC5tb2RpZmllZExlbmd0aC0xKTtpZihhLmdldEVsZW1lbnRzKCkubGVuZ3RoPjAmJnMuZ2V0RWxlbWVudHMoKS5sZW5ndGg+MCl7bGV0IGU9dHQoYSxzLGksITApLmNoYW5nZXM7byYmKGU9ZnVuY3Rpb24oZSl7aWYoZS5sZW5ndGg8PTEpcmV0dXJuIGU7Y29uc3QgdD1bZVswXV07bGV0IG49dFswXTtmb3IobGV0IHI9MSxpPWUubGVuZ3RoO3I8aTtyKyspe2NvbnN0IGk9ZVtyXSxhPWkub3JpZ2luYWxTdGFydC0obi5vcmlnaW5hbFN0YXJ0K24ub3JpZ2luYWxMZW5ndGgpLG89aS5tb2RpZmllZFN0YXJ0LShuLm1vZGlmaWVkU3RhcnQrbi5tb2RpZmllZExlbmd0aCk7TWF0aC5taW4oYSxvKTwzPyhuLm9yaWdpbmFsTGVuZ3RoPWkub3JpZ2luYWxTdGFydCtpLm9yaWdpbmFsTGVuZ3RoLW4ub3JpZ2luYWxTdGFydCxuLm1vZGlmaWVkTGVuZ3RoPWkubW9kaWZpZWRTdGFydCtpLm1vZGlmaWVkTGVuZ3RoLW4ubW9kaWZpZWRTdGFydCk6KHQucHVzaChpKSxuPWkpfXJldHVybiB0fShlKSksZD1bXTtmb3IobGV0IHQ9MCxuPWUubGVuZ3RoO3Q8bjt0KyspZC5wdXNoKGl0LmNyZWF0ZUZyb21EaWZmQ2hhbmdlKGVbdF0sYSxzKSl9fXJldHVybiBuZXcgYXQocyxsLGMsaCxkKX19Y2xhc3Mgb3R7Y29uc3RydWN0b3IoZSx0LG4pe3RoaXMuc2hvdWxkQ29tcHV0ZUNoYXJDaGFuZ2VzPW4uc2hvdWxkQ29tcHV0ZUNoYXJDaGFuZ2VzLHRoaXMuc2hvdWxkUG9zdFByb2Nlc3NDaGFyQ2hhbmdlcz1uLnNob3VsZFBvc3RQcm9jZXNzQ2hhckNoYW5nZXMsdGhpcy5zaG91bGRJZ25vcmVUcmltV2hpdGVzcGFjZT1uLnNob3VsZElnbm9yZVRyaW1XaGl0ZXNwYWNlLHRoaXMuc2hvdWxkTWFrZVByZXR0eURpZmY9bi5zaG91bGRNYWtlUHJldHR5RGlmZix0aGlzLm9yaWdpbmFsTGluZXM9ZSx0aGlzLm1vZGlmaWVkTGluZXM9dCx0aGlzLm9yaWdpbmFsPW5ldyBudChlKSx0aGlzLm1vZGlmaWVkPW5ldyBudCh0KSx0aGlzLmNvbnRpbnVlTGluZURpZmY9Y3Qobi5tYXhDb21wdXRhdGlvblRpbWUpLHRoaXMuY29udGludWVDaGFyRGlmZj1jdCgwPT09bi5tYXhDb21wdXRhdGlvblRpbWU/MDpNYXRoLm1pbihuLm1heENvbXB1dGF0aW9uVGltZSw1ZTMpKX1jb21wdXRlRGlmZigpe2lmKDE9PT10aGlzLm9yaWdpbmFsLmxpbmVzLmxlbmd0aCYmMD09PXRoaXMub3JpZ2luYWwubGluZXNbMF0ubGVuZ3RoKXJldHVybiAxPT09dGhpcy5tb2RpZmllZC5saW5lcy5sZW5ndGgmJjA9PT10aGlzLm1vZGlmaWVkLmxpbmVzWzBdLmxlbmd0aD97cXVpdEVhcmx5OiExLGNoYW5nZXM6W119OntxdWl0RWFybHk6ITEsY2hhbmdlczpbe29yaWdpbmFsU3RhcnRMaW5lTnVtYmVyOjEsb3JpZ2luYWxFbmRMaW5lTnVtYmVyOjEsbW9kaWZpZWRTdGFydExpbmVOdW1iZXI6MSxtb2RpZmllZEVuZExpbmVOdW1iZXI6dGhpcy5tb2RpZmllZC5saW5lcy5sZW5ndGgsY2hhckNoYW5nZXM6W3ttb2RpZmllZEVuZENvbHVtbjowLG1vZGlmaWVkRW5kTGluZU51bWJlcjowLG1vZGlmaWVkU3RhcnRDb2x1bW46MCxtb2RpZmllZFN0YXJ0TGluZU51bWJlcjowLG9yaWdpbmFsRW5kQ29sdW1uOjAsb3JpZ2luYWxFbmRMaW5lTnVtYmVyOjAsb3JpZ2luYWxTdGFydENvbHVtbjowLG9yaWdpbmFsU3RhcnRMaW5lTnVtYmVyOjB9XX1dfTtpZigxPT09dGhpcy5tb2RpZmllZC5saW5lcy5sZW5ndGgmJjA9PT10aGlzLm1vZGlmaWVkLmxpbmVzWzBdLmxlbmd0aClyZXR1cm57cXVpdEVhcmx5OiExLGNoYW5nZXM6W3tvcmlnaW5hbFN0YXJ0TGluZU51bWJlcjoxLG9yaWdpbmFsRW5kTGluZU51bWJlcjp0aGlzLm9yaWdpbmFsLmxpbmVzLmxlbmd0aCxtb2RpZmllZFN0YXJ0TGluZU51bWJlcjoxLG1vZGlmaWVkRW5kTGluZU51bWJlcjoxLGNoYXJDaGFuZ2VzOlt7bW9kaWZpZWRFbmRDb2x1bW46MCxtb2RpZmllZEVuZExpbmVOdW1iZXI6MCxtb2RpZmllZFN0YXJ0Q29sdW1uOjAsbW9kaWZpZWRTdGFydExpbmVOdW1iZXI6MCxvcmlnaW5hbEVuZENvbHVtbjowLG9yaWdpbmFsRW5kTGluZU51bWJlcjowLG9yaWdpbmFsU3RhcnRDb2x1bW46MCxvcmlnaW5hbFN0YXJ0TGluZU51bWJlcjowfV19XX07Y29uc3QgZT10dCh0aGlzLm9yaWdpbmFsLHRoaXMubW9kaWZpZWQsdGhpcy5jb250aW51ZUxpbmVEaWZmLHRoaXMuc2hvdWxkTWFrZVByZXR0eURpZmYpLHQ9ZS5jaGFuZ2VzLG49ZS5xdWl0RWFybHk7aWYodGhpcy5zaG91bGRJZ25vcmVUcmltV2hpdGVzcGFjZSl7Y29uc3QgZT1bXTtmb3IobGV0IG49MCxyPXQubGVuZ3RoO248cjtuKyspZS5wdXNoKGF0LmNyZWF0ZUZyb21EaWZmUmVzdWx0KHRoaXMuc2hvdWxkSWdub3JlVHJpbVdoaXRlc3BhY2UsdFtuXSx0aGlzLm9yaWdpbmFsLHRoaXMubW9kaWZpZWQsdGhpcy5jb250aW51ZUNoYXJEaWZmLHRoaXMuc2hvdWxkQ29tcHV0ZUNoYXJDaGFuZ2VzLHRoaXMuc2hvdWxkUG9zdFByb2Nlc3NDaGFyQ2hhbmdlcykpO3JldHVybntxdWl0RWFybHk6bixjaGFuZ2VzOmV9fWNvbnN0IHI9W107bGV0IGk9MCxhPTA7Zm9yKGxldCBlPS0xLG49dC5sZW5ndGg7ZTxuO2UrKyl7Y29uc3Qgbz1lKzE8bj90W2UrMV06bnVsbCxzPW8/by5vcmlnaW5hbFN0YXJ0OnRoaXMub3JpZ2luYWxMaW5lcy5sZW5ndGgsbD1vP28ubW9kaWZpZWRTdGFydDp0aGlzLm1vZGlmaWVkTGluZXMubGVuZ3RoO2Zvcig7aTxzJiZhPGw7KXtjb25zdCBlPXRoaXMub3JpZ2luYWxMaW5lc1tpXSx0PXRoaXMubW9kaWZpZWRMaW5lc1thXTtpZihlIT09dCl7e2xldCBuPXN0KGUsMSksbz1zdCh0LDEpO2Zvcig7bj4xJiZvPjE7KXtpZihlLmNoYXJDb2RlQXQobi0yKSE9PXQuY2hhckNvZGVBdChvLTIpKWJyZWFrO24tLSxvLS19KG4+MXx8bz4xKSYmdGhpcy5fcHVzaFRyaW1XaGl0ZXNwYWNlQ2hhckNoYW5nZShyLGkrMSwxLG4sYSsxLDEsbyl9e2xldCBuPWx0KGUsMSksbz1sdCh0LDEpO2NvbnN0IHM9ZS5sZW5ndGgrMSxsPXQubGVuZ3RoKzE7Zm9yKDtuPHMmJm88bDspe2lmKGUuY2hhckNvZGVBdChuLTEpIT09ZS5jaGFyQ29kZUF0KG8tMSkpYnJlYWs7bisrLG8rK30objxzfHxvPGwpJiZ0aGlzLl9wdXNoVHJpbVdoaXRlc3BhY2VDaGFyQ2hhbmdlKHIsaSsxLG4scyxhKzEsbyxsKX19aSsrLGErK31vJiYoci5wdXNoKGF0LmNyZWF0ZUZyb21EaWZmUmVzdWx0KHRoaXMuc2hvdWxkSWdub3JlVHJpbVdoaXRlc3BhY2Usbyx0aGlzLm9yaWdpbmFsLHRoaXMubW9kaWZpZWQsdGhpcy5jb250aW51ZUNoYXJEaWZmLHRoaXMuc2hvdWxkQ29tcHV0ZUNoYXJDaGFuZ2VzLHRoaXMuc2hvdWxkUG9zdFByb2Nlc3NDaGFyQ2hhbmdlcykpLGkrPW8ub3JpZ2luYWxMZW5ndGgsYSs9by5tb2RpZmllZExlbmd0aCl9cmV0dXJue3F1aXRFYXJseTpuLGNoYW5nZXM6cn19X3B1c2hUcmltV2hpdGVzcGFjZUNoYXJDaGFuZ2UoZSx0LG4scixpLGEsbyl7aWYodGhpcy5fbWVyZ2VUcmltV2hpdGVzcGFjZUNoYXJDaGFuZ2UoZSx0LG4scixpLGEsbykpcmV0dXJuO2xldCBzO3RoaXMuc2hvdWxkQ29tcHV0ZUNoYXJDaGFuZ2VzJiYocz1bbmV3IGl0KHQsbix0LHIsaSxhLGksbyldKSxlLnB1c2gobmV3IGF0KHQsdCxpLGkscykpfV9tZXJnZVRyaW1XaGl0ZXNwYWNlQ2hhckNoYW5nZShlLHQsbixyLGksYSxvKXtjb25zdCBzPWUubGVuZ3RoO2lmKDA9PT1zKXJldHVybiExO2NvbnN0IGw9ZVtzLTFdO3JldHVybiAwIT09bC5vcmlnaW5hbEVuZExpbmVOdW1iZXImJjAhPT1sLm1vZGlmaWVkRW5kTGluZU51bWJlciYmKGwub3JpZ2luYWxFbmRMaW5lTnVtYmVyKzE9PT10JiZsLm1vZGlmaWVkRW5kTGluZU51bWJlcisxPT09aSYmKGwub3JpZ2luYWxFbmRMaW5lTnVtYmVyPXQsbC5tb2RpZmllZEVuZExpbmVOdW1iZXI9aSx0aGlzLnNob3VsZENvbXB1dGVDaGFyQ2hhbmdlcyYmbC5jaGFyQ2hhbmdlcyYmbC5jaGFyQ2hhbmdlcy5wdXNoKG5ldyBpdCh0LG4sdCxyLGksYSxpLG8pKSwhMCkpfX1mdW5jdGlvbiBzdChlLHQpe2NvbnN0IG49ZnVuY3Rpb24oZSl7Zm9yKGxldCB0PTAsbj1lLmxlbmd0aDt0PG47dCsrKXtjb25zdCBuPWUuY2hhckNvZGVBdCh0KTtpZigzMiE9PW4mJjkhPT1uKXJldHVybiB0fXJldHVybi0xfShlKTtyZXR1cm4tMT09PW4/dDpuKzF9ZnVuY3Rpb24gbHQoZSx0KXtjb25zdCBuPWZ1bmN0aW9uKGUsdD1lLmxlbmd0aC0xKXtmb3IobGV0IG49dDtuPj0wO24tLSl7Y29uc3QgdD1lLmNoYXJDb2RlQXQobik7aWYoMzIhPT10JiY5IT09dClyZXR1cm4gbn1yZXR1cm4tMX0oZSk7cmV0dXJuLTE9PT1uP3Q6bisyfWZ1bmN0aW9uIGN0KGUpe2lmKDA9PT1lKXJldHVybigpPT4hMDtjb25zdCB0PURhdGUubm93KCk7cmV0dXJuKCk9PkRhdGUubm93KCktdDxlfXZhciBodDtmdW5jdGlvbiBkdChlKXtyZXR1cm4gZTwwPzA6ZT4yNTU/MjU1OjB8ZX1mdW5jdGlvbiB1dChlKXtyZXR1cm4gZTwwPzA6ZT40Mjk0OTY3Mjk1PzQyOTQ5NjcyOTU6MHxlfSFmdW5jdGlvbihlKXtlLmlzTGVzc1RoYW49ZnVuY3Rpb24oZSl7cmV0dXJuIGU8MH0sZS5pc0dyZWF0ZXJUaGFuPWZ1bmN0aW9uKGUpe3JldHVybiBlPjB9LGUuaXNOZWl0aGVyTGVzc09yR3JlYXRlclRoYW49ZnVuY3Rpb24oZSl7cmV0dXJuIDA9PT1lfSxlLmdyZWF0ZXJUaGFuPTEsZS5sZXNzVGhhbj0tMSxlLm5laXRoZXJMZXNzT3JHcmVhdGVyVGhhbj0wfShodHx8KGh0PXt9KSk7Y2xhc3MgcHR7Y29uc3RydWN0b3IoZSl7dGhpcy52YWx1ZXM9ZSx0aGlzLnByZWZpeFN1bT1uZXcgVWludDMyQXJyYXkoZS5sZW5ndGgpLHRoaXMucHJlZml4U3VtVmFsaWRJbmRleD1uZXcgSW50MzJBcnJheSgxKSx0aGlzLnByZWZpeFN1bVZhbGlkSW5kZXhbMF09LTF9aW5zZXJ0VmFsdWVzKGUsdCl7ZT11dChlKTtjb25zdCBuPXRoaXMudmFsdWVzLHI9dGhpcy5wcmVmaXhTdW0saT10Lmxlbmd0aDtyZXR1cm4gMCE9PWkmJih0aGlzLnZhbHVlcz1uZXcgVWludDMyQXJyYXkobi5sZW5ndGgraSksdGhpcy52YWx1ZXMuc2V0KG4uc3ViYXJyYXkoMCxlKSwwKSx0aGlzLnZhbHVlcy5zZXQobi5zdWJhcnJheShlKSxlK2kpLHRoaXMudmFsdWVzLnNldCh0LGUpLGUtMTx0aGlzLnByZWZpeFN1bVZhbGlkSW5kZXhbMF0mJih0aGlzLnByZWZpeFN1bVZhbGlkSW5kZXhbMF09ZS0xKSx0aGlzLnByZWZpeFN1bT1uZXcgVWludDMyQXJyYXkodGhpcy52YWx1ZXMubGVuZ3RoKSx0aGlzLnByZWZpeFN1bVZhbGlkSW5kZXhbMF0+PTAmJnRoaXMucHJlZml4U3VtLnNldChyLnN1YmFycmF5KDAsdGhpcy5wcmVmaXhTdW1WYWxpZEluZGV4WzBdKzEpKSwhMCl9c2V0VmFsdWUoZSx0KXtyZXR1cm4gZT11dChlKSx0PXV0KHQpLHRoaXMudmFsdWVzW2VdIT09dCYmKHRoaXMudmFsdWVzW2VdPXQsZS0xPHRoaXMucHJlZml4U3VtVmFsaWRJbmRleFswXSYmKHRoaXMucHJlZml4U3VtVmFsaWRJbmRleFswXT1lLTEpLCEwKX1yZW1vdmVWYWx1ZXMoZSx0KXtlPXV0KGUpLHQ9dXQodCk7Y29uc3Qgbj10aGlzLnZhbHVlcyxyPXRoaXMucHJlZml4U3VtO2lmKGU+PW4ubGVuZ3RoKXJldHVybiExO2NvbnN0IGk9bi5sZW5ndGgtZTtyZXR1cm4gdD49aSYmKHQ9aSksMCE9PXQmJih0aGlzLnZhbHVlcz1uZXcgVWludDMyQXJyYXkobi5sZW5ndGgtdCksdGhpcy52YWx1ZXMuc2V0KG4uc3ViYXJyYXkoMCxlKSwwKSx0aGlzLnZhbHVlcy5zZXQobi5zdWJhcnJheShlK3QpLGUpLHRoaXMucHJlZml4U3VtPW5ldyBVaW50MzJBcnJheSh0aGlzLnZhbHVlcy5sZW5ndGgpLGUtMTx0aGlzLnByZWZpeFN1bVZhbGlkSW5kZXhbMF0mJih0aGlzLnByZWZpeFN1bVZhbGlkSW5kZXhbMF09ZS0xKSx0aGlzLnByZWZpeFN1bVZhbGlkSW5kZXhbMF0+PTAmJnRoaXMucHJlZml4U3VtLnNldChyLnN1YmFycmF5KDAsdGhpcy5wcmVmaXhTdW1WYWxpZEluZGV4WzBdKzEpKSwhMCl9Z2V0VG90YWxTdW0oKXtyZXR1cm4gMD09PXRoaXMudmFsdWVzLmxlbmd0aD8wOnRoaXMuX2dldFByZWZpeFN1bSh0aGlzLnZhbHVlcy5sZW5ndGgtMSl9Z2V0UHJlZml4U3VtKGUpe3JldHVybiBlPDA/MDooZT11dChlKSx0aGlzLl9nZXRQcmVmaXhTdW0oZSkpfV9nZXRQcmVmaXhTdW0oZSl7aWYoZTw9dGhpcy5wcmVmaXhTdW1WYWxpZEluZGV4WzBdKXJldHVybiB0aGlzLnByZWZpeFN1bVtlXTtsZXQgdD10aGlzLnByZWZpeFN1bVZhbGlkSW5kZXhbMF0rMTswPT09dCYmKHRoaXMucHJlZml4U3VtWzBdPXRoaXMudmFsdWVzWzBdLHQrKyksZT49dGhpcy52YWx1ZXMubGVuZ3RoJiYoZT10aGlzLnZhbHVlcy5sZW5ndGgtMSk7Zm9yKGxldCBuPXQ7bjw9ZTtuKyspdGhpcy5wcmVmaXhTdW1bbl09dGhpcy5wcmVmaXhTdW1bbi0xXSt0aGlzLnZhbHVlc1tuXTtyZXR1cm4gdGhpcy5wcmVmaXhTdW1WYWxpZEluZGV4WzBdPU1hdGgubWF4KHRoaXMucHJlZml4U3VtVmFsaWRJbmRleFswXSxlKSx0aGlzLnByZWZpeFN1bVtlXX1nZXRJbmRleE9mKGUpe2U9TWF0aC5mbG9vcihlKSx0aGlzLmdldFRvdGFsU3VtKCk7bGV0IHQ9MCxuPXRoaXMudmFsdWVzLmxlbmd0aC0xLHI9MCxpPTAsYT0wO2Zvcig7dDw9bjspaWYocj10KyhuLXQpLzJ8MCxpPXRoaXMucHJlZml4U3VtW3JdLGE9aS10aGlzLnZhbHVlc1tyXSxlPGEpbj1yLTE7ZWxzZXtpZighKGU+PWkpKWJyZWFrO3Q9cisxfXJldHVybiBuZXcgbXQocixlLWEpfX1jbGFzcyBtdHtjb25zdHJ1Y3RvcihlLHQpe3RoaXMuaW5kZXg9ZSx0aGlzLnJlbWFpbmRlcj10LHRoaXMuX3ByZWZpeFN1bUluZGV4T2ZSZXN1bHRCcmFuZD12b2lkIDAsdGhpcy5pbmRleD1lLHRoaXMucmVtYWluZGVyPXR9fWNvbnN0IGZ0PWZ1bmN0aW9uKGU9IiIpe2xldCB0PSIoLT9cXGQqXFwuXFxkXFx3Kil8KFteIjtmb3IoY29uc3QgbiBvZiJgfiFAIyQlXiYqKCktPStbe119XFx8OzonXCIsLjw+Lz8iKWUuaW5kZXhPZihuKT49MHx8KHQrPSJcXCIrbik7cmV0dXJuIHQrPSJcXHNdKykiLG5ldyBSZWdFeHAodCwiZyIpfSgpO2NvbnN0IGd0PW5ldyBmO2Z1bmN0aW9uIGJ0KGUsdCxuLHIsaSl7aWYoaXx8KGk9cy5maXJzdChndCkpLG4ubGVuZ3RoPmkubWF4TGVuKXtsZXQgYT1lLWkubWF4TGVuLzI7cmV0dXJuIGE8MD9hPTA6cis9YSxidChlLHQsbj1uLnN1YnN0cmluZyhhLGUraS5tYXhMZW4vMikscixpKX1jb25zdCBhPURhdGUubm93KCksbz1lLTEtcjtsZXQgbD0tMSxjPW51bGw7Zm9yKGxldCBlPTE7IShEYXRlLm5vdygpLWE+PWkudGltZUJ1ZGdldCk7ZSsrKXtjb25zdCByPW8taS53aW5kb3dTaXplKmU7dC5sYXN0SW5kZXg9TWF0aC5tYXgoMCxyKTtjb25zdCBhPXd0KHQsbixvLGwpO2lmKCFhJiZjKWJyZWFrO2lmKGM9YSxyPD0wKWJyZWFrO2w9cn1pZihjKXtjb25zdCBlPXt3b3JkOmNbMF0sc3RhcnRDb2x1bW46cisxK2MuaW5kZXgsZW5kQ29sdW1uOnIrMStjLmluZGV4K2NbMF0ubGVuZ3RofTtyZXR1cm4gdC5sYXN0SW5kZXg9MCxlfXJldHVybiBudWxsfWZ1bmN0aW9uIHd0KGUsdCxuLHIpe2xldCBpO2Zvcig7aT1lLmV4ZWModCk7KXtjb25zdCB0PWkuaW5kZXh8fDA7aWYodDw9biYmZS5sYXN0SW5kZXg+PW4pcmV0dXJuIGk7aWYocj4wJiZ0PnIpcmV0dXJuIG51bGx9cmV0dXJuIG51bGx9Z3QudW5zaGlmdCh7bWF4TGVuOjFlMyx3aW5kb3dTaXplOjE1LHRpbWVCdWRnZXQ6MTUwfSk7Y2xhc3MgX3R7Y29uc3RydWN0b3IoZSl7Y29uc3QgdD1kdChlKTt0aGlzLl9kZWZhdWx0VmFsdWU9dCx0aGlzLl9hc2NpaU1hcD1fdC5fY3JlYXRlQXNjaWlNYXAodCksdGhpcy5fbWFwPW5ldyBNYXB9c3RhdGljIF9jcmVhdGVBc2NpaU1hcChlKXtjb25zdCB0PW5ldyBVaW50OEFycmF5KDI1Nik7Zm9yKGxldCBuPTA7bjwyNTY7bisrKXRbbl09ZTtyZXR1cm4gdH1zZXQoZSx0KXtjb25zdCBuPWR0KHQpO2U+PTAmJmU8MjU2P3RoaXMuX2FzY2lpTWFwW2VdPW46dGhpcy5fbWFwLnNldChlLG4pfWdldChlKXtyZXR1cm4gZT49MCYmZTwyNTY/dGhpcy5fYXNjaWlNYXBbZV06dGhpcy5fbWFwLmdldChlKXx8dGhpcy5fZGVmYXVsdFZhbHVlfX1jbGFzcyB2dHtjb25zdHJ1Y3RvcihlLHQsbil7Y29uc3Qgcj1uZXcgVWludDhBcnJheShlKnQpO2ZvcihsZXQgaT0wLGE9ZSp0O2k8YTtpKyspcltpXT1uO3RoaXMuX2RhdGE9cix0aGlzLnJvd3M9ZSx0aGlzLmNvbHM9dH1nZXQoZSx0KXtyZXR1cm4gdGhpcy5fZGF0YVtlKnRoaXMuY29scyt0XX1zZXQoZSx0LG4pe3RoaXMuX2RhdGFbZSp0aGlzLmNvbHMrdF09bn19Y2xhc3MgeXR7Y29uc3RydWN0b3IoZSl7bGV0IHQ9MCxuPTA7Zm9yKGxldCByPTAsaT1lLmxlbmd0aDtyPGk7cisrKXtjb25zdFtpLGEsb109ZVtyXTthPnQmJih0PWEpLGk+biYmKG49aSksbz5uJiYobj1vKX10KyssbisrO2NvbnN0IHI9bmV3IHZ0KG4sdCwwKTtmb3IobGV0IHQ9MCxuPWUubGVuZ3RoO3Q8bjt0Kyspe2NvbnN0W24saSxhXT1lW3RdO3Iuc2V0KG4saSxhKX10aGlzLl9zdGF0ZXM9cix0aGlzLl9tYXhDaGFyQ29kZT10fW5leHRTdGF0ZShlLHQpe3JldHVybiB0PDB8fHQ+PXRoaXMuX21heENoYXJDb2RlPzA6dGhpcy5fc3RhdGVzLmdldChlLHQpfX1sZXQgVHQ9bnVsbDtsZXQga3Q9bnVsbDtjbGFzcyBTdHtzdGF0aWMgX2NyZWF0ZUxpbmsoZSx0LG4scixpKXtsZXQgYT1pLTE7ZG97Y29uc3Qgbj10LmNoYXJDb2RlQXQoYSk7aWYoMiE9PWUuZ2V0KG4pKWJyZWFrO2EtLX13aGlsZShhPnIpO2lmKHI+MCl7Y29uc3QgZT10LmNoYXJDb2RlQXQoci0xKSxuPXQuY2hhckNvZGVBdChhKTsoNDA9PT1lJiY0MT09PW58fDkxPT09ZSYmOTM9PT1ufHwxMjM9PT1lJiYxMjU9PT1uKSYmYS0tfXJldHVybntyYW5nZTp7c3RhcnRMaW5lTnVtYmVyOm4sc3RhcnRDb2x1bW46cisxLGVuZExpbmVOdW1iZXI6bixlbmRDb2x1bW46YSsyfSx1cmw6dC5zdWJzdHJpbmcocixhKzEpfX1zdGF0aWMgY29tcHV0ZUxpbmtzKGUsdD1mdW5jdGlvbigpe3JldHVybiBudWxsPT09VHQmJihUdD1uZXcgeXQoW1sxLDEwNCwyXSxbMSw3MiwyXSxbMSwxMDIsNl0sWzEsNzAsNl0sWzIsMTE2LDNdLFsyLDg0LDNdLFszLDExNiw0XSxbMyw4NCw0XSxbNCwxMTIsNV0sWzQsODAsNV0sWzUsMTE1LDldLFs1LDgzLDldLFs1LDU4LDEwXSxbNiwxMDUsN10sWzYsNzMsN10sWzcsMTA4LDhdLFs3LDc2LDhdLFs4LDEwMSw5XSxbOCw2OSw5XSxbOSw1OCwxMF0sWzEwLDQ3LDExXSxbMTEsNDcsMTJdXSkpLFR0fSgpKXtjb25zdCBuPWZ1bmN0aW9uKCl7aWYobnVsbD09PWt0KXtrdD1uZXcgX3QoMCk7Y29uc3QgZT0iIFx0PD4nXCLjgIHjgILvvaHvvaTvvIzvvI7vvJrvvJvigJjjgIjjgIzjgI7jgJTvvIjvvLvvvZvvvaLvvaPvvZ3vvL3vvInjgJXjgI/jgI3jgInigJnvvYDvvZ7igKYiO2ZvcihsZXQgdD0wO3Q8ZS5sZW5ndGg7dCsrKWt0LnNldChlLmNoYXJDb2RlQXQodCksMSk7Y29uc3QgdD0iLiw7OiI7Zm9yKGxldCBlPTA7ZTx0Lmxlbmd0aDtlKyspa3Quc2V0KHQuY2hhckNvZGVBdChlKSwyKX1yZXR1cm4ga3R9KCkscj1bXTtmb3IobGV0IGk9MSxhPWUuZ2V0TGluZUNvdW50KCk7aTw9YTtpKyspe2NvbnN0IGE9ZS5nZXRMaW5lQ29udGVudChpKSxvPWEubGVuZ3RoO2xldCBzPTAsbD0wLGM9MCxoPTEsZD0hMSx1PSExLHA9ITEsbT0hMTtmb3IoO3M8bzspe2xldCBlPSExO2NvbnN0IG89YS5jaGFyQ29kZUF0KHMpO2lmKDEzPT09aCl7bGV0IHQ7c3dpdGNoKG8pe2Nhc2UgNDA6ZD0hMCx0PTA7YnJlYWs7Y2FzZSA0MTp0PWQ/MDoxO2JyZWFrO2Nhc2UgOTE6cD0hMCx1PSEwLHQ9MDticmVhaztjYXNlIDkzOnA9ITEsdD11PzA6MTticmVhaztjYXNlIDEyMzptPSEwLHQ9MDticmVhaztjYXNlIDEyNTp0PW0/MDoxO2JyZWFrO2Nhc2UgMzk6dD0zOT09PWM/MTowO2JyZWFrO2Nhc2UgMzQ6dD0zND09PWM/MTowO2JyZWFrO2Nhc2UgOTY6dD05Nj09PWM/MTowO2JyZWFrO2Nhc2UgNDI6dD00Mj09PWM/MTowO2JyZWFrO2Nhc2UgMTI0OnQ9MTI0PT09Yz8xOjA7YnJlYWs7Y2FzZSAzMjp0PXA/MDoxO2JyZWFrO2RlZmF1bHQ6dD1uLmdldChvKX0xPT09dCYmKHIucHVzaChTdC5fY3JlYXRlTGluayhuLGEsaSxsLHMpKSxlPSEwKX1lbHNlIGlmKDEyPT09aCl7bGV0IHQ7OTE9PT1vPyh1PSEwLHQ9MCk6dD1uLmdldChvKSwxPT09dD9lPSEwOmg9MTN9ZWxzZSBoPXQubmV4dFN0YXRlKGgsbyksMD09PWgmJihlPSEwKTtlJiYoaD0xLGQ9ITEsdT0hMSxtPSExLGw9cysxLGM9bykscysrfTEzPT09aCYmci5wdXNoKFN0Ll9jcmVhdGVMaW5rKG4sYSxpLGwsbykpfXJldHVybiByfX1jbGFzcyBDdHtjb25zdHJ1Y3Rvcigpe3RoaXMuX2RlZmF1bHRWYWx1ZVNldD1bWyJ0cnVlIiwiZmFsc2UiXSxbIlRydWUiLCJGYWxzZSJdLFsiUHJpdmF0ZSIsIlB1YmxpYyIsIkZyaWVuZCIsIlJlYWRPbmx5IiwiUGFydGlhbCIsIlByb3RlY3RlZCIsIldyaXRlT25seSJdLFsicHVibGljIiwicHJvdGVjdGVkIiwicHJpdmF0ZSJdXX1uYXZpZ2F0ZVZhbHVlU2V0KGUsdCxuLHIsaSl7aWYoZSYmdCl7Y29uc3Qgbj10aGlzLmRvTmF2aWdhdGVWYWx1ZVNldCh0LGkpO2lmKG4pcmV0dXJue3JhbmdlOmUsdmFsdWU6bn19aWYobiYmcil7Y29uc3QgZT10aGlzLmRvTmF2aWdhdGVWYWx1ZVNldChyLGkpO2lmKGUpcmV0dXJue3JhbmdlOm4sdmFsdWU6ZX19cmV0dXJuIG51bGx9ZG9OYXZpZ2F0ZVZhbHVlU2V0KGUsdCl7Y29uc3Qgbj10aGlzLm51bWJlclJlcGxhY2UoZSx0KTtyZXR1cm4gbnVsbCE9PW4/bjp0aGlzLnRleHRSZXBsYWNlKGUsdCl9bnVtYmVyUmVwbGFjZShlLHQpe2NvbnN0IG49TWF0aC5wb3coMTAsZS5sZW5ndGgtKGUubGFzdEluZGV4T2YoIi4iKSsxKSk7bGV0IHI9TnVtYmVyKGUpO2NvbnN0IGk9cGFyc2VGbG9hdChlKTtyZXR1cm4gaXNOYU4ocil8fGlzTmFOKGkpfHxyIT09aT9udWxsOjAhPT1yfHx0PyhyPU1hdGguZmxvb3IocipuKSxyKz10P246LW4sU3RyaW5nKHIvbikpOm51bGx9dGV4dFJlcGxhY2UoZSx0KXtyZXR1cm4gdGhpcy52YWx1ZVNldHNSZXBsYWNlKHRoaXMuX2RlZmF1bHRWYWx1ZVNldCxlLHQpfXZhbHVlU2V0c1JlcGxhY2UoZSx0LG4pe2xldCByPW51bGw7Zm9yKGxldCBpPTAsYT1lLmxlbmd0aDtudWxsPT09ciYmaTxhO2krKylyPXRoaXMudmFsdWVTZXRSZXBsYWNlKGVbaV0sdCxuKTtyZXR1cm4gcn12YWx1ZVNldFJlcGxhY2UoZSx0LG4pe2xldCByPWUuaW5kZXhPZih0KTtyZXR1cm4gcj49MD8ocis9bj8xOi0xLHI8MD9yPWUubGVuZ3RoLTE6ciU9ZS5sZW5ndGgsZVtyXSk6bnVsbH19Q3QuSU5TVEFOQ0U9bmV3IEN0O2NvbnN0IHh0PU9iamVjdC5mcmVlemUoKGZ1bmN0aW9uKGUsdCl7Y29uc3Qgbj1zZXRUaW1lb3V0KGUuYmluZCh0KSwwKTtyZXR1cm57ZGlzcG9zZSgpe2NsZWFyVGltZW91dChuKX19fSkpO3ZhciBMdDshZnVuY3Rpb24oZSl7ZS5pc0NhbmNlbGxhdGlvblRva2VuPWZ1bmN0aW9uKHQpe3JldHVybiB0PT09ZS5Ob25lfHx0PT09ZS5DYW5jZWxsZWR8fCh0IGluc3RhbmNlb2YgRXR8fCEoIXR8fCJvYmplY3QiIT10eXBlb2YgdCkmJigiYm9vbGVhbiI9PXR5cGVvZiB0LmlzQ2FuY2VsbGF0aW9uUmVxdWVzdGVkJiYiZnVuY3Rpb24iPT10eXBlb2YgdC5vbkNhbmNlbGxhdGlvblJlcXVlc3RlZCkpfSxlLk5vbmU9T2JqZWN0LmZyZWV6ZSh7aXNDYW5jZWxsYXRpb25SZXF1ZXN0ZWQ6ITEsb25DYW5jZWxsYXRpb25SZXF1ZXN0ZWQ6RC5Ob25lfSksZS5DYW5jZWxsZWQ9T2JqZWN0LmZyZWV6ZSh7aXNDYW5jZWxsYXRpb25SZXF1ZXN0ZWQ6ITAsb25DYW5jZWxsYXRpb25SZXF1ZXN0ZWQ6eHR9KX0oTHR8fChMdD17fSkpO2NsYXNzIEV0e2NvbnN0cnVjdG9yKCl7dGhpcy5faXNDYW5jZWxsZWQ9ITEsdGhpcy5fZW1pdHRlcj1udWxsfWNhbmNlbCgpe3RoaXMuX2lzQ2FuY2VsbGVkfHwodGhpcy5faXNDYW5jZWxsZWQ9ITAsdGhpcy5fZW1pdHRlciYmKHRoaXMuX2VtaXR0ZXIuZmlyZSh2b2lkIDApLHRoaXMuZGlzcG9zZSgpKSl9Z2V0IGlzQ2FuY2VsbGF0aW9uUmVxdWVzdGVkKCl7cmV0dXJuIHRoaXMuX2lzQ2FuY2VsbGVkfWdldCBvbkNhbmNlbGxhdGlvblJlcXVlc3RlZCgpe3JldHVybiB0aGlzLl9pc0NhbmNlbGxlZD94dDoodGhpcy5fZW1pdHRlcnx8KHRoaXMuX2VtaXR0ZXI9bmV3IEYpLHRoaXMuX2VtaXR0ZXIuZXZlbnQpfWRpc3Bvc2UoKXt0aGlzLl9lbWl0dGVyJiYodGhpcy5fZW1pdHRlci5kaXNwb3NlKCksdGhpcy5fZW1pdHRlcj1udWxsKX19Y2xhc3MgQXR7Y29uc3RydWN0b3IoZSl7dGhpcy5fdG9rZW49dm9pZCAwLHRoaXMuX3BhcmVudExpc3RlbmVyPXZvaWQgMCx0aGlzLl9wYXJlbnRMaXN0ZW5lcj1lJiZlLm9uQ2FuY2VsbGF0aW9uUmVxdWVzdGVkKHRoaXMuY2FuY2VsLHRoaXMpfWdldCB0b2tlbigpe3JldHVybiB0aGlzLl90b2tlbnx8KHRoaXMuX3Rva2VuPW5ldyBFdCksdGhpcy5fdG9rZW59Y2FuY2VsKCl7dGhpcy5fdG9rZW4/dGhpcy5fdG9rZW4gaW5zdGFuY2VvZiBFdCYmdGhpcy5fdG9rZW4uY2FuY2VsKCk6dGhpcy5fdG9rZW49THQuQ2FuY2VsbGVkfWRpc3Bvc2UoZT0hMSl7ZSYmdGhpcy5jYW5jZWwoKSx0aGlzLl9wYXJlbnRMaXN0ZW5lciYmdGhpcy5fcGFyZW50TGlzdGVuZXIuZGlzcG9zZSgpLHRoaXMuX3Rva2VuP3RoaXMuX3Rva2VuIGluc3RhbmNlb2YgRXQmJnRoaXMuX3Rva2VuLmRpc3Bvc2UoKTp0aGlzLl90b2tlbj1MdC5Ob25lfX1jbGFzcyBNdHtjb25zdHJ1Y3Rvcigpe3RoaXMuX2tleUNvZGVUb1N0cj1bXSx0aGlzLl9zdHJUb0tleUNvZGU9T2JqZWN0LmNyZWF0ZShudWxsKX1kZWZpbmUoZSx0KXt0aGlzLl9rZXlDb2RlVG9TdHJbZV09dCx0aGlzLl9zdHJUb0tleUNvZGVbdC50b0xvd2VyQ2FzZSgpXT1lfWtleUNvZGVUb1N0cihlKXtyZXR1cm4gdGhpcy5fa2V5Q29kZVRvU3RyW2VdfXN0clRvS2V5Q29kZShlKXtyZXR1cm4gdGhpcy5fc3RyVG9LZXlDb2RlW2UudG9Mb3dlckNhc2UoKV18fDB9fWNvbnN0IFJ0PW5ldyBNdCxJdD1uZXcgTXQsTnQ9bmV3IE10LFV0PW5ldyBBcnJheSgyMzApLEh0PU9iamVjdC5jcmVhdGUobnVsbCksenQ9T2JqZWN0LmNyZWF0ZShudWxsKTt2YXIgRHQsV3Q7IWZ1bmN0aW9uKCl7Y29uc3QgZT0iIix0PVtbMCwxLDAsIk5vbmUiLDAsInVua25vd24iLDAsIlZLX1VOS05PV04iLGUsZV0sWzAsMSwxLCJIeXBlciIsMCxlLDAsZSxlLGVdLFswLDEsMiwiU3VwZXIiLDAsZSwwLGUsZSxlXSxbMCwxLDMsIkZuIiwwLGUsMCxlLGUsZV0sWzAsMSw0LCJGbkxvY2siLDAsZSwwLGUsZSxlXSxbMCwxLDUsIlN1c3BlbmQiLDAsZSwwLGUsZSxlXSxbMCwxLDYsIlJlc3VtZSIsMCxlLDAsZSxlLGVdLFswLDEsNywiVHVyYm8iLDAsZSwwLGUsZSxlXSxbMCwxLDgsIlNsZWVwIiwwLGUsMCwiVktfU0xFRVAiLGUsZV0sWzAsMSw5LCJXYWtlVXAiLDAsZSwwLGUsZSxlXSxbMzEsMCwxMCwiS2V5QSIsMzEsIkEiLDY1LCJWS19BIixlLGVdLFszMiwwLDExLCJLZXlCIiwzMiwiQiIsNjYsIlZLX0IiLGUsZV0sWzMzLDAsMTIsIktleUMiLDMzLCJDIiw2NywiVktfQyIsZSxlXSxbMzQsMCwxMywiS2V5RCIsMzQsIkQiLDY4LCJWS19EIixlLGVdLFszNSwwLDE0LCJLZXlFIiwzNSwiRSIsNjksIlZLX0UiLGUsZV0sWzM2LDAsMTUsIktleUYiLDM2LCJGIiw3MCwiVktfRiIsZSxlXSxbMzcsMCwxNiwiS2V5RyIsMzcsIkciLDcxLCJWS19HIixlLGVdLFszOCwwLDE3LCJLZXlIIiwzOCwiSCIsNzIsIlZLX0giLGUsZV0sWzM5LDAsMTgsIktleUkiLDM5LCJJIiw3MywiVktfSSIsZSxlXSxbNDAsMCwxOSwiS2V5SiIsNDAsIkoiLDc0LCJWS19KIixlLGVdLFs0MSwwLDIwLCJLZXlLIiw0MSwiSyIsNzUsIlZLX0siLGUsZV0sWzQyLDAsMjEsIktleUwiLDQyLCJMIiw3NiwiVktfTCIsZSxlXSxbNDMsMCwyMiwiS2V5TSIsNDMsIk0iLDc3LCJWS19NIixlLGVdLFs0NCwwLDIzLCJLZXlOIiw0NCwiTiIsNzgsIlZLX04iLGUsZV0sWzQ1LDAsMjQsIktleU8iLDQ1LCJPIiw3OSwiVktfTyIsZSxlXSxbNDYsMCwyNSwiS2V5UCIsNDYsIlAiLDgwLCJWS19QIixlLGVdLFs0NywwLDI2LCJLZXlRIiw0NywiUSIsODEsIlZLX1EiLGUsZV0sWzQ4LDAsMjcsIktleVIiLDQ4LCJSIiw4MiwiVktfUiIsZSxlXSxbNDksMCwyOCwiS2V5UyIsNDksIlMiLDgzLCJWS19TIixlLGVdLFs1MCwwLDI5LCJLZXlUIiw1MCwiVCIsODQsIlZLX1QiLGUsZV0sWzUxLDAsMzAsIktleVUiLDUxLCJVIiw4NSwiVktfVSIsZSxlXSxbNTIsMCwzMSwiS2V5ViIsNTIsIlYiLDg2LCJWS19WIixlLGVdLFs1MywwLDMyLCJLZXlXIiw1MywiVyIsODcsIlZLX1ciLGUsZV0sWzU0LDAsMzMsIktleVgiLDU0LCJYIiw4OCwiVktfWCIsZSxlXSxbNTUsMCwzNCwiS2V5WSIsNTUsIlkiLDg5LCJWS19ZIixlLGVdLFs1NiwwLDM1LCJLZXlaIiw1NiwiWiIsOTAsIlZLX1oiLGUsZV0sWzIyLDAsMzYsIkRpZ2l0MSIsMjIsIjEiLDQ5LCJWS18xIixlLGVdLFsyMywwLDM3LCJEaWdpdDIiLDIzLCIyIiw1MCwiVktfMiIsZSxlXSxbMjQsMCwzOCwiRGlnaXQzIiwyNCwiMyIsNTEsIlZLXzMiLGUsZV0sWzI1LDAsMzksIkRpZ2l0NCIsMjUsIjQiLDUyLCJWS180IixlLGVdLFsyNiwwLDQwLCJEaWdpdDUiLDI2LCI1Iiw1MywiVktfNSIsZSxlXSxbMjcsMCw0MSwiRGlnaXQ2IiwyNywiNiIsNTQsIlZLXzYiLGUsZV0sWzI4LDAsNDIsIkRpZ2l0NyIsMjgsIjciLDU1LCJWS183IixlLGVdLFsyOSwwLDQzLCJEaWdpdDgiLDI5LCI4Iiw1NiwiVktfOCIsZSxlXSxbMzAsMCw0NCwiRGlnaXQ5IiwzMCwiOSIsNTcsIlZLXzkiLGUsZV0sWzIxLDAsNDUsIkRpZ2l0MCIsMjEsIjAiLDQ4LCJWS18wIixlLGVdLFszLDEsNDYsIkVudGVyIiwzLCJFbnRlciIsMTMsIlZLX1JFVFVSTiIsZSxlXSxbOSwxLDQ3LCJFc2NhcGUiLDksIkVzY2FwZSIsMjcsIlZLX0VTQ0FQRSIsZSxlXSxbMSwxLDQ4LCJCYWNrc3BhY2UiLDEsIkJhY2tzcGFjZSIsOCwiVktfQkFDSyIsZSxlXSxbMiwxLDQ5LCJUYWIiLDIsIlRhYiIsOSwiVktfVEFCIixlLGVdLFsxMCwxLDUwLCJTcGFjZSIsMTAsIlNwYWNlIiwzMiwiVktfU1BBQ0UiLGUsZV0sWzgzLDAsNTEsIk1pbnVzIiw4MywiLSIsMTg5LCJWS19PRU1fTUlOVVMiLCItIiwiT0VNX01JTlVTIl0sWzgxLDAsNTIsIkVxdWFsIiw4MSwiPSIsMTg3LCJWS19PRU1fUExVUyIsIj0iLCJPRU1fUExVUyJdLFs4NywwLDUzLCJCcmFja2V0TGVmdCIsODcsIlsiLDIxOSwiVktfT0VNXzQiLCJbIiwiT0VNXzQiXSxbODksMCw1NCwiQnJhY2tldFJpZ2h0Iiw4OSwiXSIsMjIxLCJWS19PRU1fNiIsIl0iLCJPRU1fNiJdLFs4OCwwLDU1LCJCYWNrc2xhc2giLDg4LCJcXCIsMjIwLCJWS19PRU1fNSIsIlxcIiwiT0VNXzUiXSxbMCwwLDU2LCJJbnRsSGFzaCIsMCxlLDAsZSxlLGVdLFs4MCwwLDU3LCJTZW1pY29sb24iLDgwLCI7IiwxODYsIlZLX09FTV8xIiwiOyIsIk9FTV8xIl0sWzkwLDAsNTgsIlF1b3RlIiw5MCwiJyIsMjIyLCJWS19PRU1fNyIsIiciLCJPRU1fNyJdLFs4NiwwLDU5LCJCYWNrcXVvdGUiLDg2LCJgIiwxOTIsIlZLX09FTV8zIiwiYCIsIk9FTV8zIl0sWzgyLDAsNjAsIkNvbW1hIiw4MiwiLCIsMTg4LCJWS19PRU1fQ09NTUEiLCIsIiwiT0VNX0NPTU1BIl0sWzg0LDAsNjEsIlBlcmlvZCIsODQsIi4iLDE5MCwiVktfT0VNX1BFUklPRCIsIi4iLCJPRU1fUEVSSU9EIl0sWzg1LDAsNjIsIlNsYXNoIiw4NSwiLyIsMTkxLCJWS19PRU1fMiIsIi8iLCJPRU1fMiJdLFs4LDEsNjMsIkNhcHNMb2NrIiw4LCJDYXBzTG9jayIsMjAsIlZLX0NBUElUQUwiLGUsZV0sWzU5LDEsNjQsIkYxIiw1OSwiRjEiLDExMiwiVktfRjEiLGUsZV0sWzYwLDEsNjUsIkYyIiw2MCwiRjIiLDExMywiVktfRjIiLGUsZV0sWzYxLDEsNjYsIkYzIiw2MSwiRjMiLDExNCwiVktfRjMiLGUsZV0sWzYyLDEsNjcsIkY0Iiw2MiwiRjQiLDExNSwiVktfRjQiLGUsZV0sWzYzLDEsNjgsIkY1Iiw2MywiRjUiLDExNiwiVktfRjUiLGUsZV0sWzY0LDEsNjksIkY2Iiw2NCwiRjYiLDExNywiVktfRjYiLGUsZV0sWzY1LDEsNzAsIkY3Iiw2NSwiRjciLDExOCwiVktfRjciLGUsZV0sWzY2LDEsNzEsIkY4Iiw2NiwiRjgiLDExOSwiVktfRjgiLGUsZV0sWzY3LDEsNzIsIkY5Iiw2NywiRjkiLDEyMCwiVktfRjkiLGUsZV0sWzY4LDEsNzMsIkYxMCIsNjgsIkYxMCIsMTIxLCJWS19GMTAiLGUsZV0sWzY5LDEsNzQsIkYxMSIsNjksIkYxMSIsMTIyLCJWS19GMTEiLGUsZV0sWzcwLDEsNzUsIkYxMiIsNzAsIkYxMiIsMTIzLCJWS19GMTIiLGUsZV0sWzAsMSw3NiwiUHJpbnRTY3JlZW4iLDAsZSwwLGUsZSxlXSxbNzksMSw3NywiU2Nyb2xsTG9jayIsNzksIlNjcm9sbExvY2siLDE0NSwiVktfU0NST0xMIixlLGVdLFs3LDEsNzgsIlBhdXNlIiw3LCJQYXVzZUJyZWFrIiwxOSwiVktfUEFVU0UiLGUsZV0sWzE5LDEsNzksIkluc2VydCIsMTksIkluc2VydCIsNDUsIlZLX0lOU0VSVCIsZSxlXSxbMTQsMSw4MCwiSG9tZSIsMTQsIkhvbWUiLDM2LCJWS19IT01FIixlLGVdLFsxMSwxLDgxLCJQYWdlVXAiLDExLCJQYWdlVXAiLDMzLCJWS19QUklPUiIsZSxlXSxbMjAsMSw4MiwiRGVsZXRlIiwyMCwiRGVsZXRlIiw0NiwiVktfREVMRVRFIixlLGVdLFsxMywxLDgzLCJFbmQiLDEzLCJFbmQiLDM1LCJWS19FTkQiLGUsZV0sWzEyLDEsODQsIlBhZ2VEb3duIiwxMiwiUGFnZURvd24iLDM0LCJWS19ORVhUIixlLGVdLFsxNywxLDg1LCJBcnJvd1JpZ2h0IiwxNywiUmlnaHRBcnJvdyIsMzksIlZLX1JJR0hUIiwiUmlnaHQiLGVdLFsxNSwxLDg2LCJBcnJvd0xlZnQiLDE1LCJMZWZ0QXJyb3ciLDM3LCJWS19MRUZUIiwiTGVmdCIsZV0sWzE4LDEsODcsIkFycm93RG93biIsMTgsIkRvd25BcnJvdyIsNDAsIlZLX0RPV04iLCJEb3duIixlXSxbMTYsMSw4OCwiQXJyb3dVcCIsMTYsIlVwQXJyb3ciLDM4LCJWS19VUCIsIlVwIixlXSxbNzgsMSw4OSwiTnVtTG9jayIsNzgsIk51bUxvY2siLDE0NCwiVktfTlVNTE9DSyIsZSxlXSxbMTA4LDEsOTAsIk51bXBhZERpdmlkZSIsMTA4LCJOdW1QYWRfRGl2aWRlIiwxMTEsIlZLX0RJVklERSIsZSxlXSxbMTAzLDEsOTEsIk51bXBhZE11bHRpcGx5IiwxMDMsIk51bVBhZF9NdWx0aXBseSIsMTA2LCJWS19NVUxUSVBMWSIsZSxlXSxbMTA2LDEsOTIsIk51bXBhZFN1YnRyYWN0IiwxMDYsIk51bVBhZF9TdWJ0cmFjdCIsMTA5LCJWS19TVUJUUkFDVCIsZSxlXSxbMTA0LDEsOTMsIk51bXBhZEFkZCIsMTA0LCJOdW1QYWRfQWRkIiwxMDcsIlZLX0FERCIsZSxlXSxbMywxLDk0LCJOdW1wYWRFbnRlciIsMyxlLDAsZSxlLGVdLFs5NCwxLDk1LCJOdW1wYWQxIiw5NCwiTnVtUGFkMSIsOTcsIlZLX05VTVBBRDEiLGUsZV0sWzk1LDEsOTYsIk51bXBhZDIiLDk1LCJOdW1QYWQyIiw5OCwiVktfTlVNUEFEMiIsZSxlXSxbOTYsMSw5NywiTnVtcGFkMyIsOTYsIk51bVBhZDMiLDk5LCJWS19OVU1QQUQzIixlLGVdLFs5NywxLDk4LCJOdW1wYWQ0Iiw5NywiTnVtUGFkNCIsMTAwLCJWS19OVU1QQUQ0IixlLGVdLFs5OCwxLDk5LCJOdW1wYWQ1Iiw5OCwiTnVtUGFkNSIsMTAxLCJWS19OVU1QQUQ1IixlLGVdLFs5OSwxLDEwMCwiTnVtcGFkNiIsOTksIk51bVBhZDYiLDEwMiwiVktfTlVNUEFENiIsZSxlXSxbMTAwLDEsMTAxLCJOdW1wYWQ3IiwxMDAsIk51bVBhZDciLDEwMywiVktfTlVNUEFENyIsZSxlXSxbMTAxLDEsMTAyLCJOdW1wYWQ4IiwxMDEsIk51bVBhZDgiLDEwNCwiVktfTlVNUEFEOCIsZSxlXSxbMTAyLDEsMTAzLCJOdW1wYWQ5IiwxMDIsIk51bVBhZDkiLDEwNSwiVktfTlVNUEFEOSIsZSxlXSxbOTMsMSwxMDQsIk51bXBhZDAiLDkzLCJOdW1QYWQwIiw5NiwiVktfTlVNUEFEMCIsZSxlXSxbMTA3LDEsMTA1LCJOdW1wYWREZWNpbWFsIiwxMDcsIk51bVBhZF9EZWNpbWFsIiwxMTAsIlZLX0RFQ0lNQUwiLGUsZV0sWzkyLDAsMTA2LCJJbnRsQmFja3NsYXNoIiw5MiwiT0VNXzEwMiIsMjI2LCJWS19PRU1fMTAyIixlLGVdLFs1OCwxLDEwNywiQ29udGV4dE1lbnUiLDU4LCJDb250ZXh0TWVudSIsOTMsZSxlLGVdLFswLDEsMTA4LCJQb3dlciIsMCxlLDAsZSxlLGVdLFswLDEsMTA5LCJOdW1wYWRFcXVhbCIsMCxlLDAsZSxlLGVdLFs3MSwxLDExMCwiRjEzIiw3MSwiRjEzIiwxMjQsIlZLX0YxMyIsZSxlXSxbNzIsMSwxMTEsIkYxNCIsNzIsIkYxNCIsMTI1LCJWS19GMTQiLGUsZV0sWzczLDEsMTEyLCJGMTUiLDczLCJGMTUiLDEyNiwiVktfRjE1IixlLGVdLFs3NCwxLDExMywiRjE2Iiw3NCwiRjE2IiwxMjcsIlZLX0YxNiIsZSxlXSxbNzUsMSwxMTQsIkYxNyIsNzUsIkYxNyIsMTI4LCJWS19GMTciLGUsZV0sWzc2LDEsMTE1LCJGMTgiLDc2LCJGMTgiLDEyOSwiVktfRjE4IixlLGVdLFs3NywxLDExNiwiRjE5Iiw3NywiRjE5IiwxMzAsIlZLX0YxOSIsZSxlXSxbMCwxLDExNywiRjIwIiwwLGUsMCwiVktfRjIwIixlLGVdLFswLDEsMTE4LCJGMjEiLDAsZSwwLCJWS19GMjEiLGUsZV0sWzAsMSwxMTksIkYyMiIsMCxlLDAsIlZLX0YyMiIsZSxlXSxbMCwxLDEyMCwiRjIzIiwwLGUsMCwiVktfRjIzIixlLGVdLFswLDEsMTIxLCJGMjQiLDAsZSwwLCJWS19GMjQiLGUsZV0sWzAsMSwxMjIsIk9wZW4iLDAsZSwwLGUsZSxlXSxbMCwxLDEyMywiSGVscCIsMCxlLDAsZSxlLGVdLFswLDEsMTI0LCJTZWxlY3QiLDAsZSwwLGUsZSxlXSxbMCwxLDEyNSwiQWdhaW4iLDAsZSwwLGUsZSxlXSxbMCwxLDEyNiwiVW5kbyIsMCxlLDAsZSxlLGVdLFswLDEsMTI3LCJDdXQiLDAsZSwwLGUsZSxlXSxbMCwxLDEyOCwiQ29weSIsMCxlLDAsZSxlLGVdLFswLDEsMTI5LCJQYXN0ZSIsMCxlLDAsZSxlLGVdLFswLDEsMTMwLCJGaW5kIiwwLGUsMCxlLGUsZV0sWzAsMSwxMzEsIkF1ZGlvVm9sdW1lTXV0ZSIsMTEyLCJBdWRpb1ZvbHVtZU11dGUiLDE3MywiVktfVk9MVU1FX01VVEUiLGUsZV0sWzAsMSwxMzIsIkF1ZGlvVm9sdW1lVXAiLDExMywiQXVkaW9Wb2x1bWVVcCIsMTc1LCJWS19WT0xVTUVfVVAiLGUsZV0sWzAsMSwxMzMsIkF1ZGlvVm9sdW1lRG93biIsMTE0LCJBdWRpb1ZvbHVtZURvd24iLDE3NCwiVktfVk9MVU1FX0RPV04iLGUsZV0sWzEwNSwxLDEzNCwiTnVtcGFkQ29tbWEiLDEwNSwiTnVtUGFkX1NlcGFyYXRvciIsMTA4LCJWS19TRVBBUkFUT1IiLGUsZV0sWzExMCwwLDEzNSwiSW50bFJvIiwxMTAsIkFCTlRfQzEiLDE5MywiVktfQUJOVF9DMSIsZSxlXSxbMCwxLDEzNiwiS2FuYU1vZGUiLDAsZSwwLGUsZSxlXSxbMCwwLDEzNywiSW50bFllbiIsMCxlLDAsZSxlLGVdLFswLDEsMTM4LCJDb252ZXJ0IiwwLGUsMCxlLGUsZV0sWzAsMSwxMzksIk5vbkNvbnZlcnQiLDAsZSwwLGUsZSxlXSxbMCwxLDE0MCwiTGFuZzEiLDAsZSwwLGUsZSxlXSxbMCwxLDE0MSwiTGFuZzIiLDAsZSwwLGUsZSxlXSxbMCwxLDE0MiwiTGFuZzMiLDAsZSwwLGUsZSxlXSxbMCwxLDE0MywiTGFuZzQiLDAsZSwwLGUsZSxlXSxbMCwxLDE0NCwiTGFuZzUiLDAsZSwwLGUsZSxlXSxbMCwxLDE0NSwiQWJvcnQiLDAsZSwwLGUsZSxlXSxbMCwxLDE0NiwiUHJvcHMiLDAsZSwwLGUsZSxlXSxbMCwxLDE0NywiTnVtcGFkUGFyZW5MZWZ0IiwwLGUsMCxlLGUsZV0sWzAsMSwxNDgsIk51bXBhZFBhcmVuUmlnaHQiLDAsZSwwLGUsZSxlXSxbMCwxLDE0OSwiTnVtcGFkQmFja3NwYWNlIiwwLGUsMCxlLGUsZV0sWzAsMSwxNTAsIk51bXBhZE1lbW9yeVN0b3JlIiwwLGUsMCxlLGUsZV0sWzAsMSwxNTEsIk51bXBhZE1lbW9yeVJlY2FsbCIsMCxlLDAsZSxlLGVdLFswLDEsMTUyLCJOdW1wYWRNZW1vcnlDbGVhciIsMCxlLDAsZSxlLGVdLFswLDEsMTUzLCJOdW1wYWRNZW1vcnlBZGQiLDAsZSwwLGUsZSxlXSxbMCwxLDE1NCwiTnVtcGFkTWVtb3J5U3VidHJhY3QiLDAsZSwwLGUsZSxlXSxbMCwxLDE1NSwiTnVtcGFkQ2xlYXIiLDEyNiwiQ2xlYXIiLDEyLCJWS19DTEVBUiIsZSxlXSxbMCwxLDE1NiwiTnVtcGFkQ2xlYXJFbnRyeSIsMCxlLDAsZSxlLGVdLFs1LDEsMCxlLDUsIkN0cmwiLDE3LCJWS19DT05UUk9MIixlLGVdLFs0LDEsMCxlLDQsIlNoaWZ0IiwxNiwiVktfU0hJRlQiLGUsZV0sWzYsMSwwLGUsNiwiQWx0IiwxOCwiVktfTUVOVSIsZSxlXSxbNTcsMSwwLGUsNTcsIk1ldGEiLDAsIlZLX0NPTU1BTkQiLGUsZV0sWzUsMSwxNTcsIkNvbnRyb2xMZWZ0Iiw1LGUsMCwiVktfTENPTlRST0wiLGUsZV0sWzQsMSwxNTgsIlNoaWZ0TGVmdCIsNCxlLDAsIlZLX0xTSElGVCIsZSxlXSxbNiwxLDE1OSwiQWx0TGVmdCIsNixlLDAsIlZLX0xNRU5VIixlLGVdLFs1NywxLDE2MCwiTWV0YUxlZnQiLDU3LGUsMCwiVktfTFdJTiIsZSxlXSxbNSwxLDE2MSwiQ29udHJvbFJpZ2h0Iiw1LGUsMCwiVktfUkNPTlRST0wiLGUsZV0sWzQsMSwxNjIsIlNoaWZ0UmlnaHQiLDQsZSwwLCJWS19SU0hJRlQiLGUsZV0sWzYsMSwxNjMsIkFsdFJpZ2h0Iiw2LGUsMCwiVktfUk1FTlUiLGUsZV0sWzU3LDEsMTY0LCJNZXRhUmlnaHQiLDU3LGUsMCwiVktfUldJTiIsZSxlXSxbMCwxLDE2NSwiQnJpZ2h0bmVzc1VwIiwwLGUsMCxlLGUsZV0sWzAsMSwxNjYsIkJyaWdodG5lc3NEb3duIiwwLGUsMCxlLGUsZV0sWzAsMSwxNjcsIk1lZGlhUGxheSIsMCxlLDAsZSxlLGVdLFswLDEsMTY4LCJNZWRpYVJlY29yZCIsMCxlLDAsZSxlLGVdLFswLDEsMTY5LCJNZWRpYUZhc3RGb3J3YXJkIiwwLGUsMCxlLGUsZV0sWzAsMSwxNzAsIk1lZGlhUmV3aW5kIiwwLGUsMCxlLGUsZV0sWzExNCwxLDE3MSwiTWVkaWFUcmFja05leHQiLDExOSwiTWVkaWFUcmFja05leHQiLDE3NiwiVktfTUVESUFfTkVYVF9UUkFDSyIsZSxlXSxbMTE1LDEsMTcyLCJNZWRpYVRyYWNrUHJldmlvdXMiLDEyMCwiTWVkaWFUcmFja1ByZXZpb3VzIiwxNzcsIlZLX01FRElBX1BSRVZfVFJBQ0siLGUsZV0sWzExNiwxLDE3MywiTWVkaWFTdG9wIiwxMjEsIk1lZGlhU3RvcCIsMTc4LCJWS19NRURJQV9TVE9QIixlLGVdLFswLDEsMTc0LCJFamVjdCIsMCxlLDAsZSxlLGVdLFsxMTcsMSwxNzUsIk1lZGlhUGxheVBhdXNlIiwxMjIsIk1lZGlhUGxheVBhdXNlIiwxNzksIlZLX01FRElBX1BMQVlfUEFVU0UiLGUsZV0sWzAsMSwxNzYsIk1lZGlhU2VsZWN0IiwxMjMsIkxhdW5jaE1lZGlhUGxheWVyIiwxODEsIlZLX01FRElBX0xBVU5DSF9NRURJQV9TRUxFQ1QiLGUsZV0sWzAsMSwxNzcsIkxhdW5jaE1haWwiLDEyNCwiTGF1bmNoTWFpbCIsMTgwLCJWS19NRURJQV9MQVVOQ0hfTUFJTCIsZSxlXSxbMCwxLDE3OCwiTGF1bmNoQXBwMiIsMTI1LCJMYXVuY2hBcHAyIiwxODMsIlZLX01FRElBX0xBVU5DSF9BUFAyIixlLGVdLFswLDEsMTc5LCJMYXVuY2hBcHAxIiwwLGUsMCwiVktfTUVESUFfTEFVTkNIX0FQUDEiLGUsZV0sWzAsMSwxODAsIlNlbGVjdFRhc2siLDAsZSwwLGUsZSxlXSxbMCwxLDE4MSwiTGF1bmNoU2NyZWVuU2F2ZXIiLDAsZSwwLGUsZSxlXSxbMCwxLDE4MiwiQnJvd3NlclNlYXJjaCIsMTE1LCJCcm93c2VyU2VhcmNoIiwxNzAsIlZLX0JST1dTRVJfU0VBUkNIIixlLGVdLFswLDEsMTgzLCJCcm93c2VySG9tZSIsMTE2LCJCcm93c2VySG9tZSIsMTcyLCJWS19CUk9XU0VSX0hPTUUiLGUsZV0sWzExMiwxLDE4NCwiQnJvd3NlckJhY2siLDExNywiQnJvd3NlckJhY2siLDE2NiwiVktfQlJPV1NFUl9CQUNLIixlLGVdLFsxMTMsMSwxODUsIkJyb3dzZXJGb3J3YXJkIiwxMTgsIkJyb3dzZXJGb3J3YXJkIiwxNjcsIlZLX0JST1dTRVJfRk9SV0FSRCIsZSxlXSxbMCwxLDE4NiwiQnJvd3NlclN0b3AiLDAsZSwwLCJWS19CUk9XU0VSX1NUT1AiLGUsZV0sWzAsMSwxODcsIkJyb3dzZXJSZWZyZXNoIiwwLGUsMCwiVktfQlJPV1NFUl9SRUZSRVNIIixlLGVdLFswLDEsMTg4LCJCcm93c2VyRmF2b3JpdGVzIiwwLGUsMCwiVktfQlJPV1NFUl9GQVZPUklURVMiLGUsZV0sWzAsMSwxODksIlpvb21Ub2dnbGUiLDAsZSwwLGUsZSxlXSxbMCwxLDE5MCwiTWFpbFJlcGx5IiwwLGUsMCxlLGUsZV0sWzAsMSwxOTEsIk1haWxGb3J3YXJkIiwwLGUsMCxlLGUsZV0sWzAsMSwxOTIsIk1haWxTZW5kIiwwLGUsMCxlLGUsZV0sWzEwOSwxLDAsZSwxMDksIktleUluQ29tcG9zaXRpb24iLDIyOSxlLGUsZV0sWzExMSwxLDAsZSwxMTEsIkFCTlRfQzIiLDE5NCwiVktfQUJOVF9DMiIsZSxlXSxbOTEsMSwwLGUsOTEsIk9FTV84IiwyMjMsIlZLX09FTV84IixlLGVdLFswLDEsMCxlLDAsZSwwLCJWS19LQU5BIixlLGVdLFswLDEsMCxlLDAsZSwwLCJWS19IQU5HVUwiLGUsZV0sWzAsMSwwLGUsMCxlLDAsIlZLX0pVTkpBIixlLGVdLFswLDEsMCxlLDAsZSwwLCJWS19GSU5BTCIsZSxlXSxbMCwxLDAsZSwwLGUsMCwiVktfSEFOSkEiLGUsZV0sWzAsMSwwLGUsMCxlLDAsIlZLX0tBTkpJIixlLGVdLFswLDEsMCxlLDAsZSwwLCJWS19DT05WRVJUIixlLGVdLFswLDEsMCxlLDAsZSwwLCJWS19OT05DT05WRVJUIixlLGVdLFswLDEsMCxlLDAsZSwwLCJWS19BQ0NFUFQiLGUsZV0sWzAsMSwwLGUsMCxlLDAsIlZLX01PREVDSEFOR0UiLGUsZV0sWzAsMSwwLGUsMCxlLDAsIlZLX1NFTEVDVCIsZSxlXSxbMCwxLDAsZSwwLGUsMCwiVktfUFJJTlQiLGUsZV0sWzAsMSwwLGUsMCxlLDAsIlZLX0VYRUNVVEUiLGUsZV0sWzAsMSwwLGUsMCxlLDAsIlZLX1NOQVBTSE9UIixlLGVdLFswLDEsMCxlLDAsZSwwLCJWS19IRUxQIixlLGVdLFswLDEsMCxlLDAsZSwwLCJWS19BUFBTIixlLGVdLFswLDEsMCxlLDAsZSwwLCJWS19QUk9DRVNTS0VZIixlLGVdLFswLDEsMCxlLDAsZSwwLCJWS19QQUNLRVQiLGUsZV0sWzAsMSwwLGUsMCxlLDAsIlZLX0RCRV9TQkNTQ0hBUiIsZSxlXSxbMCwxLDAsZSwwLGUsMCwiVktfREJFX0RCQ1NDSEFSIixlLGVdLFswLDEsMCxlLDAsZSwwLCJWS19BVFROIixlLGVdLFswLDEsMCxlLDAsZSwwLCJWS19DUlNFTCIsZSxlXSxbMCwxLDAsZSwwLGUsMCwiVktfRVhTRUwiLGUsZV0sWzAsMSwwLGUsMCxlLDAsIlZLX0VSRU9GIixlLGVdLFswLDEsMCxlLDAsZSwwLCJWS19QTEFZIixlLGVdLFswLDEsMCxlLDAsZSwwLCJWS19aT09NIixlLGVdLFswLDEsMCxlLDAsZSwwLCJWS19OT05BTUUiLGUsZV0sWzAsMSwwLGUsMCxlLDAsIlZLX1BBMSIsZSxlXSxbMCwxLDAsZSwwLGUsMCwiVktfT0VNX0NMRUFSIixlLGVdXSxuPVtdLHI9W107Zm9yKGNvbnN0IGUgb2YgdCl7Y29uc3RbdCxpLGEsbyxzLGwsYyxoLGQsdV09ZTtpZihyW2FdfHwoclthXT0hMCxIdFtvXT1hLHp0W28udG9Mb3dlckNhc2UoKV09YSksIW5bc10pe2lmKG5bc109ITAsIWwpdGhyb3cgbmV3IEVycm9yKGBTdHJpbmcgcmVwcmVzZW50YXRpb24gbWlzc2luZyBmb3Iga2V5IGNvZGUgJHtzfSBhcm91bmQgc2NhbiBjb2RlICR7b31gKTtSdC5kZWZpbmUocyxsKSxJdC5kZWZpbmUocyxkfHxsKSxOdC5kZWZpbmUocyx1fHxkfHxsKX1jJiYoVXRbY109cyl9fSgpLGZ1bmN0aW9uKGUpe2UudG9TdHJpbmc9ZnVuY3Rpb24oZSl7cmV0dXJuIFJ0LmtleUNvZGVUb1N0cihlKX0sZS5mcm9tU3RyaW5nPWZ1bmN0aW9uKGUpe3JldHVybiBSdC5zdHJUb0tleUNvZGUoZSl9LGUudG9Vc2VyU2V0dGluZ3NVUz1mdW5jdGlvbihlKXtyZXR1cm4gSXQua2V5Q29kZVRvU3RyKGUpfSxlLnRvVXNlclNldHRpbmdzR2VuZXJhbD1mdW5jdGlvbihlKXtyZXR1cm4gTnQua2V5Q29kZVRvU3RyKGUpfSxlLmZyb21Vc2VyU2V0dGluZ3M9ZnVuY3Rpb24oZSl7cmV0dXJuIEl0LnN0clRvS2V5Q29kZShlKXx8TnQuc3RyVG9LZXlDb2RlKGUpfSxlLnRvRWxlY3Ryb25BY2NlbGVyYXRvcj1mdW5jdGlvbihlKXtpZihlPj05MyYmZTw9MTA4KXJldHVybiBudWxsO3N3aXRjaChlKXtjYXNlIDE2OnJldHVybiJVcCI7Y2FzZSAxODpyZXR1cm4iRG93biI7Y2FzZSAxNTpyZXR1cm4iTGVmdCI7Y2FzZSAxNzpyZXR1cm4iUmlnaHQifXJldHVybiBSdC5rZXlDb2RlVG9TdHIoZSl9fShEdHx8KER0PXt9KSk7Y2xhc3MgT3QgZXh0ZW5kcyBldHtjb25zdHJ1Y3RvcihlLHQsbixyKXtzdXBlcihlLHQsbixyKSx0aGlzLnNlbGVjdGlvblN0YXJ0TGluZU51bWJlcj1lLHRoaXMuc2VsZWN0aW9uU3RhcnRDb2x1bW49dCx0aGlzLnBvc2l0aW9uTGluZU51bWJlcj1uLHRoaXMucG9zaXRpb25Db2x1bW49cn10b1N0cmluZygpe3JldHVybiJbIit0aGlzLnNlbGVjdGlvblN0YXJ0TGluZU51bWJlcisiLCIrdGhpcy5zZWxlY3Rpb25TdGFydENvbHVtbisiIC0+ICIrdGhpcy5wb3NpdGlvbkxpbmVOdW1iZXIrIiwiK3RoaXMucG9zaXRpb25Db2x1bW4rIl0ifWVxdWFsc1NlbGVjdGlvbihlKXtyZXR1cm4gT3Quc2VsZWN0aW9uc0VxdWFsKHRoaXMsZSl9c3RhdGljIHNlbGVjdGlvbnNFcXVhbChlLHQpe3JldHVybiBlLnNlbGVjdGlvblN0YXJ0TGluZU51bWJlcj09PXQuc2VsZWN0aW9uU3RhcnRMaW5lTnVtYmVyJiZlLnNlbGVjdGlvblN0YXJ0Q29sdW1uPT09dC5zZWxlY3Rpb25TdGFydENvbHVtbiYmZS5wb3NpdGlvbkxpbmVOdW1iZXI9PT10LnBvc2l0aW9uTGluZU51bWJlciYmZS5wb3NpdGlvbkNvbHVtbj09PXQucG9zaXRpb25Db2x1bW59Z2V0RGlyZWN0aW9uKCl7cmV0dXJuIHRoaXMuc2VsZWN0aW9uU3RhcnRMaW5lTnVtYmVyPT09dGhpcy5zdGFydExpbmVOdW1iZXImJnRoaXMuc2VsZWN0aW9uU3RhcnRDb2x1bW49PT10aGlzLnN0YXJ0Q29sdW1uPzA6MX1zZXRFbmRQb3NpdGlvbihlLHQpe3JldHVybiAwPT09dGhpcy5nZXREaXJlY3Rpb24oKT9uZXcgT3QodGhpcy5zdGFydExpbmVOdW1iZXIsdGhpcy5zdGFydENvbHVtbixlLHQpOm5ldyBPdChlLHQsdGhpcy5zdGFydExpbmVOdW1iZXIsdGhpcy5zdGFydENvbHVtbil9Z2V0UG9zaXRpb24oKXtyZXR1cm4gbmV3IFplKHRoaXMucG9zaXRpb25MaW5lTnVtYmVyLHRoaXMucG9zaXRpb25Db2x1bW4pfWdldFNlbGVjdGlvblN0YXJ0KCl7cmV0dXJuIG5ldyBaZSh0aGlzLnNlbGVjdGlvblN0YXJ0TGluZU51bWJlcix0aGlzLnNlbGVjdGlvblN0YXJ0Q29sdW1uKX1zZXRTdGFydFBvc2l0aW9uKGUsdCl7cmV0dXJuIDA9PT10aGlzLmdldERpcmVjdGlvbigpP25ldyBPdChlLHQsdGhpcy5lbmRMaW5lTnVtYmVyLHRoaXMuZW5kQ29sdW1uKTpuZXcgT3QodGhpcy5lbmRMaW5lTnVtYmVyLHRoaXMuZW5kQ29sdW1uLGUsdCl9c3RhdGljIGZyb21Qb3NpdGlvbnMoZSx0PWUpe3JldHVybiBuZXcgT3QoZS5saW5lTnVtYmVyLGUuY29sdW1uLHQubGluZU51bWJlcix0LmNvbHVtbil9c3RhdGljIGZyb21SYW5nZShlLHQpe3JldHVybiAwPT09dD9uZXcgT3QoZS5zdGFydExpbmVOdW1iZXIsZS5zdGFydENvbHVtbixlLmVuZExpbmVOdW1iZXIsZS5lbmRDb2x1bW4pOm5ldyBPdChlLmVuZExpbmVOdW1iZXIsZS5lbmRDb2x1bW4sZS5zdGFydExpbmVOdW1iZXIsZS5zdGFydENvbHVtbil9c3RhdGljIGxpZnRTZWxlY3Rpb24oZSl7cmV0dXJuIG5ldyBPdChlLnNlbGVjdGlvblN0YXJ0TGluZU51bWJlcixlLnNlbGVjdGlvblN0YXJ0Q29sdW1uLGUucG9zaXRpb25MaW5lTnVtYmVyLGUucG9zaXRpb25Db2x1bW4pfXN0YXRpYyBzZWxlY3Rpb25zQXJyRXF1YWwoZSx0KXtpZihlJiYhdHx8IWUmJnQpcmV0dXJuITE7aWYoIWUmJiF0KXJldHVybiEwO2lmKGUubGVuZ3RoIT09dC5sZW5ndGgpcmV0dXJuITE7Zm9yKGxldCBuPTAscj1lLmxlbmd0aDtuPHI7bisrKWlmKCF0aGlzLnNlbGVjdGlvbnNFcXVhbChlW25dLHRbbl0pKXJldHVybiExO3JldHVybiEwfXN0YXRpYyBpc0lTZWxlY3Rpb24oZSl7cmV0dXJuIGUmJiJudW1iZXIiPT10eXBlb2YgZS5zZWxlY3Rpb25TdGFydExpbmVOdW1iZXImJiJudW1iZXIiPT10eXBlb2YgZS5zZWxlY3Rpb25TdGFydENvbHVtbiYmIm51bWJlciI9PXR5cGVvZiBlLnBvc2l0aW9uTGluZU51bWJlciYmIm51bWJlciI9PXR5cGVvZiBlLnBvc2l0aW9uQ29sdW1ufXN0YXRpYyBjcmVhdGVXaXRoRGlyZWN0aW9uKGUsdCxuLHIsaSl7cmV0dXJuIDA9PT1pP25ldyBPdChlLHQsbixyKTpuZXcgT3QobixyLGUsdCl9fWNsYXNzIFB0e2NvbnN0cnVjdG9yKGUsdCxuKXt0aGlzLmlkPWUsdGhpcy5kZWZpbml0aW9uPXQsdGhpcy5kZXNjcmlwdGlvbj1uLFB0Ll9hbGxDb2RpY29ucy5wdXNoKHRoaXMpfWdldCBjbGFzc05hbWVzKCl7cmV0dXJuImNvZGljb24gY29kaWNvbi0iK3RoaXMuaWR9Z2V0IGNsYXNzTmFtZXNBcnJheSgpe3JldHVyblsiY29kaWNvbiIsImNvZGljb24tIit0aGlzLmlkXX1nZXQgY3NzU2VsZWN0b3IoKXtyZXR1cm4iLmNvZGljb24uY29kaWNvbi0iK3RoaXMuaWR9c3RhdGljIGdldEFsbCgpe3JldHVybiBQdC5fYWxsQ29kaWNvbnN9fVB0Ll9hbGxDb2RpY29ucz1bXSxQdC5hZGQ9bmV3IFB0KCJhZGQiLHtmb250Q2hhcmFjdGVyOiJcXGVhNjAifSksUHQucGx1cz1uZXcgUHQoInBsdXMiLFB0LmFkZC5kZWZpbml0aW9uKSxQdC5naXN0TmV3PW5ldyBQdCgiZ2lzdC1uZXciLFB0LmFkZC5kZWZpbml0aW9uKSxQdC5yZXBvQ3JlYXRlPW5ldyBQdCgicmVwby1jcmVhdGUiLFB0LmFkZC5kZWZpbml0aW9uKSxQdC5saWdodGJ1bGI9bmV3IFB0KCJsaWdodGJ1bGIiLHtmb250Q2hhcmFjdGVyOiJcXGVhNjEifSksUHQubGlnaHRCdWxiPW5ldyBQdCgibGlnaHQtYnVsYiIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE2MSJ9KSxQdC5yZXBvPW5ldyBQdCgicmVwbyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE2MiJ9KSxQdC5yZXBvRGVsZXRlPW5ldyBQdCgicmVwby1kZWxldGUiLHtmb250Q2hhcmFjdGVyOiJcXGVhNjIifSksUHQuZ2lzdEZvcms9bmV3IFB0KCJnaXN0LWZvcmsiLHtmb250Q2hhcmFjdGVyOiJcXGVhNjMifSksUHQucmVwb0ZvcmtlZD1uZXcgUHQoInJlcG8tZm9ya2VkIix7Zm9udENoYXJhY3RlcjoiXFxlYTYzIn0pLFB0LmdpdFB1bGxSZXF1ZXN0PW5ldyBQdCgiZ2l0LXB1bGwtcmVxdWVzdCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE2NCJ9KSxQdC5naXRQdWxsUmVxdWVzdEFiYW5kb25lZD1uZXcgUHQoImdpdC1wdWxsLXJlcXVlc3QtYWJhbmRvbmVkIix7Zm9udENoYXJhY3RlcjoiXFxlYTY0In0pLFB0LnJlY29yZEtleXM9bmV3IFB0KCJyZWNvcmQta2V5cyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE2NSJ9KSxQdC5rZXlib2FyZD1uZXcgUHQoImtleWJvYXJkIix7Zm9udENoYXJhY3RlcjoiXFxlYTY1In0pLFB0LnRhZz1uZXcgUHQoInRhZyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE2NiJ9KSxQdC50YWdBZGQ9bmV3IFB0KCJ0YWctYWRkIix7Zm9udENoYXJhY3RlcjoiXFxlYTY2In0pLFB0LnRhZ1JlbW92ZT1uZXcgUHQoInRhZy1yZW1vdmUiLHtmb250Q2hhcmFjdGVyOiJcXGVhNjYifSksUHQucGVyc29uPW5ldyBQdCgicGVyc29uIix7Zm9udENoYXJhY3RlcjoiXFxlYTY3In0pLFB0LnBlcnNvbkZvbGxvdz1uZXcgUHQoInBlcnNvbi1mb2xsb3ciLHtmb250Q2hhcmFjdGVyOiJcXGVhNjcifSksUHQucGVyc29uT3V0bGluZT1uZXcgUHQoInBlcnNvbi1vdXRsaW5lIix7Zm9udENoYXJhY3RlcjoiXFxlYTY3In0pLFB0LnBlcnNvbkZpbGxlZD1uZXcgUHQoInBlcnNvbi1maWxsZWQiLHtmb250Q2hhcmFjdGVyOiJcXGVhNjcifSksUHQuZ2l0QnJhbmNoPW5ldyBQdCgiZ2l0LWJyYW5jaCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE2OCJ9KSxQdC5naXRCcmFuY2hDcmVhdGU9bmV3IFB0KCJnaXQtYnJhbmNoLWNyZWF0ZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE2OCJ9KSxQdC5naXRCcmFuY2hEZWxldGU9bmV3IFB0KCJnaXQtYnJhbmNoLWRlbGV0ZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE2OCJ9KSxQdC5zb3VyY2VDb250cm9sPW5ldyBQdCgic291cmNlLWNvbnRyb2wiLHtmb250Q2hhcmFjdGVyOiJcXGVhNjgifSksUHQubWlycm9yPW5ldyBQdCgibWlycm9yIix7Zm9udENoYXJhY3RlcjoiXFxlYTY5In0pLFB0Lm1pcnJvclB1YmxpYz1uZXcgUHQoIm1pcnJvci1wdWJsaWMiLHtmb250Q2hhcmFjdGVyOiJcXGVhNjkifSksUHQuc3Rhcj1uZXcgUHQoInN0YXIiLHtmb250Q2hhcmFjdGVyOiJcXGVhNmEifSksUHQuc3RhckFkZD1uZXcgUHQoInN0YXItYWRkIix7Zm9udENoYXJhY3RlcjoiXFxlYTZhIn0pLFB0LnN0YXJEZWxldGU9bmV3IFB0KCJzdGFyLWRlbGV0ZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE2YSJ9KSxQdC5zdGFyRW1wdHk9bmV3IFB0KCJzdGFyLWVtcHR5Iix7Zm9udENoYXJhY3RlcjoiXFxlYTZhIn0pLFB0LmNvbW1lbnQ9bmV3IFB0KCJjb21tZW50Iix7Zm9udENoYXJhY3RlcjoiXFxlYTZiIn0pLFB0LmNvbW1lbnRBZGQ9bmV3IFB0KCJjb21tZW50LWFkZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE2YiJ9KSxQdC5hbGVydD1uZXcgUHQoImFsZXJ0Iix7Zm9udENoYXJhY3RlcjoiXFxlYTZjIn0pLFB0Lndhcm5pbmc9bmV3IFB0KCJ3YXJuaW5nIix7Zm9udENoYXJhY3RlcjoiXFxlYTZjIn0pLFB0LnNlYXJjaD1uZXcgUHQoInNlYXJjaCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE2ZCJ9KSxQdC5zZWFyY2hTYXZlPW5ldyBQdCgic2VhcmNoLXNhdmUiLHtmb250Q2hhcmFjdGVyOiJcXGVhNmQifSksUHQubG9nT3V0PW5ldyBQdCgibG9nLW91dCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE2ZSJ9KSxQdC5zaWduT3V0PW5ldyBQdCgic2lnbi1vdXQiLHtmb250Q2hhcmFjdGVyOiJcXGVhNmUifSksUHQubG9nSW49bmV3IFB0KCJsb2ctaW4iLHtmb250Q2hhcmFjdGVyOiJcXGVhNmYifSksUHQuc2lnbkluPW5ldyBQdCgic2lnbi1pbiIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE2ZiJ9KSxQdC5leWU9bmV3IFB0KCJleWUiLHtmb250Q2hhcmFjdGVyOiJcXGVhNzAifSksUHQuZXllVW53YXRjaD1uZXcgUHQoImV5ZS11bndhdGNoIix7Zm9udENoYXJhY3RlcjoiXFxlYTcwIn0pLFB0LmV5ZVdhdGNoPW5ldyBQdCgiZXllLXdhdGNoIix7Zm9udENoYXJhY3RlcjoiXFxlYTcwIn0pLFB0LmNpcmNsZUZpbGxlZD1uZXcgUHQoImNpcmNsZS1maWxsZWQiLHtmb250Q2hhcmFjdGVyOiJcXGVhNzEifSksUHQucHJpbWl0aXZlRG90PW5ldyBQdCgicHJpbWl0aXZlLWRvdCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3MSJ9KSxQdC5jbG9zZURpcnR5PW5ldyBQdCgiY2xvc2UtZGlydHkiLHtmb250Q2hhcmFjdGVyOiJcXGVhNzEifSksUHQuZGVidWdCcmVha3BvaW50PW5ldyBQdCgiZGVidWctYnJlYWtwb2ludCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3MSJ9KSxQdC5kZWJ1Z0JyZWFrcG9pbnREaXNhYmxlZD1uZXcgUHQoImRlYnVnLWJyZWFrcG9pbnQtZGlzYWJsZWQiLHtmb250Q2hhcmFjdGVyOiJcXGVhNzEifSksUHQuZGVidWdIaW50PW5ldyBQdCgiZGVidWctaGludCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3MSJ9KSxQdC5wcmltaXRpdmVTcXVhcmU9bmV3IFB0KCJwcmltaXRpdmUtc3F1YXJlIix7Zm9udENoYXJhY3RlcjoiXFxlYTcyIn0pLFB0LmVkaXQ9bmV3IFB0KCJlZGl0Iix7Zm9udENoYXJhY3RlcjoiXFxlYTczIn0pLFB0LnBlbmNpbD1uZXcgUHQoInBlbmNpbCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3MyJ9KSxQdC5pbmZvPW5ldyBQdCgiaW5mbyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3NCJ9KSxQdC5pc3N1ZU9wZW5lZD1uZXcgUHQoImlzc3VlLW9wZW5lZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3NCJ9KSxQdC5naXN0UHJpdmF0ZT1uZXcgUHQoImdpc3QtcHJpdmF0ZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3NSJ9KSxQdC5naXRGb3JrUHJpdmF0ZT1uZXcgUHQoImdpdC1mb3JrLXByaXZhdGUiLHtmb250Q2hhcmFjdGVyOiJcXGVhNzUifSksUHQubG9jaz1uZXcgUHQoImxvY2siLHtmb250Q2hhcmFjdGVyOiJcXGVhNzUifSksUHQubWlycm9yUHJpdmF0ZT1uZXcgUHQoIm1pcnJvci1wcml2YXRlIix7Zm9udENoYXJhY3RlcjoiXFxlYTc1In0pLFB0LmNsb3NlPW5ldyBQdCgiY2xvc2UiLHtmb250Q2hhcmFjdGVyOiJcXGVhNzYifSksUHQucmVtb3ZlQ2xvc2U9bmV3IFB0KCJyZW1vdmUtY2xvc2UiLHtmb250Q2hhcmFjdGVyOiJcXGVhNzYifSksUHQueD1uZXcgUHQoIngiLHtmb250Q2hhcmFjdGVyOiJcXGVhNzYifSksUHQucmVwb1N5bmM9bmV3IFB0KCJyZXBvLXN5bmMiLHtmb250Q2hhcmFjdGVyOiJcXGVhNzcifSksUHQuc3luYz1uZXcgUHQoInN5bmMiLHtmb250Q2hhcmFjdGVyOiJcXGVhNzcifSksUHQuY2xvbmU9bmV3IFB0KCJjbG9uZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3OCJ9KSxQdC5kZXNrdG9wRG93bmxvYWQ9bmV3IFB0KCJkZXNrdG9wLWRvd25sb2FkIix7Zm9udENoYXJhY3RlcjoiXFxlYTc4In0pLFB0LmJlYWtlcj1uZXcgUHQoImJlYWtlciIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3OSJ9KSxQdC5taWNyb3Njb3BlPW5ldyBQdCgibWljcm9zY29wZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3OSJ9KSxQdC52bT1uZXcgUHQoInZtIix7Zm9udENoYXJhY3RlcjoiXFxlYTdhIn0pLFB0LmRldmljZURlc2t0b3A9bmV3IFB0KCJkZXZpY2UtZGVza3RvcCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3YSJ9KSxQdC5maWxlPW5ldyBQdCgiZmlsZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3YiJ9KSxQdC5maWxlVGV4dD1uZXcgUHQoImZpbGUtdGV4dCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3YiJ9KSxQdC5tb3JlPW5ldyBQdCgibW9yZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3YyJ9KSxQdC5lbGxpcHNpcz1uZXcgUHQoImVsbGlwc2lzIix7Zm9udENoYXJhY3RlcjoiXFxlYTdjIn0pLFB0LmtlYmFiSG9yaXpvbnRhbD1uZXcgUHQoImtlYmFiLWhvcml6b250YWwiLHtmb250Q2hhcmFjdGVyOiJcXGVhN2MifSksUHQubWFpbFJlcGx5PW5ldyBQdCgibWFpbC1yZXBseSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3ZCJ9KSxQdC5yZXBseT1uZXcgUHQoInJlcGx5Iix7Zm9udENoYXJhY3RlcjoiXFxlYTdkIn0pLFB0Lm9yZ2FuaXphdGlvbj1uZXcgUHQoIm9yZ2FuaXphdGlvbiIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3ZSJ9KSxQdC5vcmdhbml6YXRpb25GaWxsZWQ9bmV3IFB0KCJvcmdhbml6YXRpb24tZmlsbGVkIix7Zm9udENoYXJhY3RlcjoiXFxlYTdlIn0pLFB0Lm9yZ2FuaXphdGlvbk91dGxpbmU9bmV3IFB0KCJvcmdhbml6YXRpb24tb3V0bGluZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE3ZSJ9KSxQdC5uZXdGaWxlPW5ldyBQdCgibmV3LWZpbGUiLHtmb250Q2hhcmFjdGVyOiJcXGVhN2YifSksUHQuZmlsZUFkZD1uZXcgUHQoImZpbGUtYWRkIix7Zm9udENoYXJhY3RlcjoiXFxlYTdmIn0pLFB0Lm5ld0ZvbGRlcj1uZXcgUHQoIm5ldy1mb2xkZXIiLHtmb250Q2hhcmFjdGVyOiJcXGVhODAifSksUHQuZmlsZURpcmVjdG9yeUNyZWF0ZT1uZXcgUHQoImZpbGUtZGlyZWN0b3J5LWNyZWF0ZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE4MCJ9KSxQdC50cmFzaD1uZXcgUHQoInRyYXNoIix7Zm9udENoYXJhY3RlcjoiXFxlYTgxIn0pLFB0LnRyYXNoY2FuPW5ldyBQdCgidHJhc2hjYW4iLHtmb250Q2hhcmFjdGVyOiJcXGVhODEifSksUHQuaGlzdG9yeT1uZXcgUHQoImhpc3RvcnkiLHtmb250Q2hhcmFjdGVyOiJcXGVhODIifSksUHQuY2xvY2s9bmV3IFB0KCJjbG9jayIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE4MiJ9KSxQdC5mb2xkZXI9bmV3IFB0KCJmb2xkZXIiLHtmb250Q2hhcmFjdGVyOiJcXGVhODMifSksUHQuZmlsZURpcmVjdG9yeT1uZXcgUHQoImZpbGUtZGlyZWN0b3J5Iix7Zm9udENoYXJhY3RlcjoiXFxlYTgzIn0pLFB0LnN5bWJvbEZvbGRlcj1uZXcgUHQoInN5bWJvbC1mb2xkZXIiLHtmb250Q2hhcmFjdGVyOiJcXGVhODMifSksUHQubG9nb0dpdGh1Yj1uZXcgUHQoImxvZ28tZ2l0aHViIix7Zm9udENoYXJhY3RlcjoiXFxlYTg0In0pLFB0Lm1hcmtHaXRodWI9bmV3IFB0KCJtYXJrLWdpdGh1YiIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE4NCJ9KSxQdC5naXRodWI9bmV3IFB0KCJnaXRodWIiLHtmb250Q2hhcmFjdGVyOiJcXGVhODQifSksUHQudGVybWluYWw9bmV3IFB0KCJ0ZXJtaW5hbCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE4NSJ9KSxQdC5jb25zb2xlPW5ldyBQdCgiY29uc29sZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE4NSJ9KSxQdC5yZXBsPW5ldyBQdCgicmVwbCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE4NSJ9KSxQdC56YXA9bmV3IFB0KCJ6YXAiLHtmb250Q2hhcmFjdGVyOiJcXGVhODYifSksUHQuc3ltYm9sRXZlbnQ9bmV3IFB0KCJzeW1ib2wtZXZlbnQiLHtmb250Q2hhcmFjdGVyOiJcXGVhODYifSksUHQuZXJyb3I9bmV3IFB0KCJlcnJvciIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE4NyJ9KSxQdC5zdG9wPW5ldyBQdCgic3RvcCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE4NyJ9KSxQdC52YXJpYWJsZT1uZXcgUHQoInZhcmlhYmxlIix7Zm9udENoYXJhY3RlcjoiXFxlYTg4In0pLFB0LnN5bWJvbFZhcmlhYmxlPW5ldyBQdCgic3ltYm9sLXZhcmlhYmxlIix7Zm9udENoYXJhY3RlcjoiXFxlYTg4In0pLFB0LmFycmF5PW5ldyBQdCgiYXJyYXkiLHtmb250Q2hhcmFjdGVyOiJcXGVhOGEifSksUHQuc3ltYm9sQXJyYXk9bmV3IFB0KCJzeW1ib2wtYXJyYXkiLHtmb250Q2hhcmFjdGVyOiJcXGVhOGEifSksUHQuc3ltYm9sTW9kdWxlPW5ldyBQdCgic3ltYm9sLW1vZHVsZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE4YiJ9KSxQdC5zeW1ib2xQYWNrYWdlPW5ldyBQdCgic3ltYm9sLXBhY2thZ2UiLHtmb250Q2hhcmFjdGVyOiJcXGVhOGIifSksUHQuc3ltYm9sTmFtZXNwYWNlPW5ldyBQdCgic3ltYm9sLW5hbWVzcGFjZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE4YiJ9KSxQdC5zeW1ib2xPYmplY3Q9bmV3IFB0KCJzeW1ib2wtb2JqZWN0Iix7Zm9udENoYXJhY3RlcjoiXFxlYThiIn0pLFB0LnN5bWJvbE1ldGhvZD1uZXcgUHQoInN5bWJvbC1tZXRob2QiLHtmb250Q2hhcmFjdGVyOiJcXGVhOGMifSksUHQuc3ltYm9sRnVuY3Rpb249bmV3IFB0KCJzeW1ib2wtZnVuY3Rpb24iLHtmb250Q2hhcmFjdGVyOiJcXGVhOGMifSksUHQuc3ltYm9sQ29uc3RydWN0b3I9bmV3IFB0KCJzeW1ib2wtY29uc3RydWN0b3IiLHtmb250Q2hhcmFjdGVyOiJcXGVhOGMifSksUHQuc3ltYm9sQm9vbGVhbj1uZXcgUHQoInN5bWJvbC1ib29sZWFuIix7Zm9udENoYXJhY3RlcjoiXFxlYThmIn0pLFB0LnN5bWJvbE51bGw9bmV3IFB0KCJzeW1ib2wtbnVsbCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE4ZiJ9KSxQdC5zeW1ib2xOdW1lcmljPW5ldyBQdCgic3ltYm9sLW51bWVyaWMiLHtmb250Q2hhcmFjdGVyOiJcXGVhOTAifSksUHQuc3ltYm9sTnVtYmVyPW5ldyBQdCgic3ltYm9sLW51bWJlciIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE5MCJ9KSxQdC5zeW1ib2xTdHJ1Y3R1cmU9bmV3IFB0KCJzeW1ib2wtc3RydWN0dXJlIix7Zm9udENoYXJhY3RlcjoiXFxlYTkxIn0pLFB0LnN5bWJvbFN0cnVjdD1uZXcgUHQoInN5bWJvbC1zdHJ1Y3QiLHtmb250Q2hhcmFjdGVyOiJcXGVhOTEifSksUHQuc3ltYm9sUGFyYW1ldGVyPW5ldyBQdCgic3ltYm9sLXBhcmFtZXRlciIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE5MiJ9KSxQdC5zeW1ib2xUeXBlUGFyYW1ldGVyPW5ldyBQdCgic3ltYm9sLXR5cGUtcGFyYW1ldGVyIix7Zm9udENoYXJhY3RlcjoiXFxlYTkyIn0pLFB0LnN5bWJvbEtleT1uZXcgUHQoInN5bWJvbC1rZXkiLHtmb250Q2hhcmFjdGVyOiJcXGVhOTMifSksUHQuc3ltYm9sVGV4dD1uZXcgUHQoInN5bWJvbC10ZXh0Iix7Zm9udENoYXJhY3RlcjoiXFxlYTkzIn0pLFB0LnN5bWJvbFJlZmVyZW5jZT1uZXcgUHQoInN5bWJvbC1yZWZlcmVuY2UiLHtmb250Q2hhcmFjdGVyOiJcXGVhOTQifSksUHQuZ29Ub0ZpbGU9bmV3IFB0KCJnby10by1maWxlIix7Zm9udENoYXJhY3RlcjoiXFxlYTk0In0pLFB0LnN5bWJvbEVudW09bmV3IFB0KCJzeW1ib2wtZW51bSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE5NSJ9KSxQdC5zeW1ib2xWYWx1ZT1uZXcgUHQoInN5bWJvbC12YWx1ZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE5NSJ9KSxQdC5zeW1ib2xSdWxlcj1uZXcgUHQoInN5bWJvbC1ydWxlciIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE5NiJ9KSxQdC5zeW1ib2xVbml0PW5ldyBQdCgic3ltYm9sLXVuaXQiLHtmb250Q2hhcmFjdGVyOiJcXGVhOTYifSksUHQuYWN0aXZhdGVCcmVha3BvaW50cz1uZXcgUHQoImFjdGl2YXRlLWJyZWFrcG9pbnRzIix7Zm9udENoYXJhY3RlcjoiXFxlYTk3In0pLFB0LmFyY2hpdmU9bmV3IFB0KCJhcmNoaXZlIix7Zm9udENoYXJhY3RlcjoiXFxlYTk4In0pLFB0LmFycm93Qm90aD1uZXcgUHQoImFycm93LWJvdGgiLHtmb250Q2hhcmFjdGVyOiJcXGVhOTkifSksUHQuYXJyb3dEb3duPW5ldyBQdCgiYXJyb3ctZG93biIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE5YSJ9KSxQdC5hcnJvd0xlZnQ9bmV3IFB0KCJhcnJvdy1sZWZ0Iix7Zm9udENoYXJhY3RlcjoiXFxlYTliIn0pLFB0LmFycm93UmlnaHQ9bmV3IFB0KCJhcnJvdy1yaWdodCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWE5YyJ9KSxQdC5hcnJvd1NtYWxsRG93bj1uZXcgUHQoImFycm93LXNtYWxsLWRvd24iLHtmb250Q2hhcmFjdGVyOiJcXGVhOWQifSksUHQuYXJyb3dTbWFsbExlZnQ9bmV3IFB0KCJhcnJvdy1zbWFsbC1sZWZ0Iix7Zm9udENoYXJhY3RlcjoiXFxlYTllIn0pLFB0LmFycm93U21hbGxSaWdodD1uZXcgUHQoImFycm93LXNtYWxsLXJpZ2h0Iix7Zm9udENoYXJhY3RlcjoiXFxlYTlmIn0pLFB0LmFycm93U21hbGxVcD1uZXcgUHQoImFycm93LXNtYWxsLXVwIix7Zm9udENoYXJhY3RlcjoiXFxlYWEwIn0pLFB0LmFycm93VXA9bmV3IFB0KCJhcnJvdy11cCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFhMSJ9KSxQdC5iZWxsPW5ldyBQdCgiYmVsbCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFhMiJ9KSxQdC5ib2xkPW5ldyBQdCgiYm9sZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFhMyJ9KSxQdC5ib29rPW5ldyBQdCgiYm9vayIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFhNCJ9KSxQdC5ib29rbWFyaz1uZXcgUHQoImJvb2ttYXJrIix7Zm9udENoYXJhY3RlcjoiXFxlYWE1In0pLFB0LmRlYnVnQnJlYWtwb2ludENvbmRpdGlvbmFsVW52ZXJpZmllZD1uZXcgUHQoImRlYnVnLWJyZWFrcG9pbnQtY29uZGl0aW9uYWwtdW52ZXJpZmllZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFhNiJ9KSxQdC5kZWJ1Z0JyZWFrcG9pbnRDb25kaXRpb25hbD1uZXcgUHQoImRlYnVnLWJyZWFrcG9pbnQtY29uZGl0aW9uYWwiLHtmb250Q2hhcmFjdGVyOiJcXGVhYTcifSksUHQuZGVidWdCcmVha3BvaW50Q29uZGl0aW9uYWxEaXNhYmxlZD1uZXcgUHQoImRlYnVnLWJyZWFrcG9pbnQtY29uZGl0aW9uYWwtZGlzYWJsZWQiLHtmb250Q2hhcmFjdGVyOiJcXGVhYTcifSksUHQuZGVidWdCcmVha3BvaW50RGF0YVVudmVyaWZpZWQ9bmV3IFB0KCJkZWJ1Zy1icmVha3BvaW50LWRhdGEtdW52ZXJpZmllZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFhOCJ9KSxQdC5kZWJ1Z0JyZWFrcG9pbnREYXRhPW5ldyBQdCgiZGVidWctYnJlYWtwb2ludC1kYXRhIix7Zm9udENoYXJhY3RlcjoiXFxlYWE5In0pLFB0LmRlYnVnQnJlYWtwb2ludERhdGFEaXNhYmxlZD1uZXcgUHQoImRlYnVnLWJyZWFrcG9pbnQtZGF0YS1kaXNhYmxlZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFhOSJ9KSxQdC5kZWJ1Z0JyZWFrcG9pbnRMb2dVbnZlcmlmaWVkPW5ldyBQdCgiZGVidWctYnJlYWtwb2ludC1sb2ctdW52ZXJpZmllZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFhYSJ9KSxQdC5kZWJ1Z0JyZWFrcG9pbnRMb2c9bmV3IFB0KCJkZWJ1Zy1icmVha3BvaW50LWxvZyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFhYiJ9KSxQdC5kZWJ1Z0JyZWFrcG9pbnRMb2dEaXNhYmxlZD1uZXcgUHQoImRlYnVnLWJyZWFrcG9pbnQtbG9nLWRpc2FibGVkIix7Zm9udENoYXJhY3RlcjoiXFxlYWFiIn0pLFB0LmJyaWVmY2FzZT1uZXcgUHQoImJyaWVmY2FzZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFhYyJ9KSxQdC5icm9hZGNhc3Q9bmV3IFB0KCJicm9hZGNhc3QiLHtmb250Q2hhcmFjdGVyOiJcXGVhYWQifSksUHQuYnJvd3Nlcj1uZXcgUHQoImJyb3dzZXIiLHtmb250Q2hhcmFjdGVyOiJcXGVhYWUifSksUHQuYnVnPW5ldyBQdCgiYnVnIix7Zm9udENoYXJhY3RlcjoiXFxlYWFmIn0pLFB0LmNhbGVuZGFyPW5ldyBQdCgiY2FsZW5kYXIiLHtmb250Q2hhcmFjdGVyOiJcXGVhYjAifSksUHQuY2FzZVNlbnNpdGl2ZT1uZXcgUHQoImNhc2Utc2Vuc2l0aXZlIix7Zm9udENoYXJhY3RlcjoiXFxlYWIxIn0pLFB0LmNoZWNrPW5ldyBQdCgiY2hlY2siLHtmb250Q2hhcmFjdGVyOiJcXGVhYjIifSksUHQuY2hlY2tsaXN0PW5ldyBQdCgiY2hlY2tsaXN0Iix7Zm9udENoYXJhY3RlcjoiXFxlYWIzIn0pLFB0LmNoZXZyb25Eb3duPW5ldyBQdCgiY2hldnJvbi1kb3duIix7Zm9udENoYXJhY3RlcjoiXFxlYWI0In0pLFB0LmRyb3BEb3duQnV0dG9uPW5ldyBQdCgiZHJvcC1kb3duLWJ1dHRvbiIsUHQuY2hldnJvbkRvd24uZGVmaW5pdGlvbiksUHQuY2hldnJvbkxlZnQ9bmV3IFB0KCJjaGV2cm9uLWxlZnQiLHtmb250Q2hhcmFjdGVyOiJcXGVhYjUifSksUHQuY2hldnJvblJpZ2h0PW5ldyBQdCgiY2hldnJvbi1yaWdodCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFiNiJ9KSxQdC5jaGV2cm9uVXA9bmV3IFB0KCJjaGV2cm9uLXVwIix7Zm9udENoYXJhY3RlcjoiXFxlYWI3In0pLFB0LmNocm9tZUNsb3NlPW5ldyBQdCgiY2hyb21lLWNsb3NlIix7Zm9udENoYXJhY3RlcjoiXFxlYWI4In0pLFB0LmNocm9tZU1heGltaXplPW5ldyBQdCgiY2hyb21lLW1heGltaXplIix7Zm9udENoYXJhY3RlcjoiXFxlYWI5In0pLFB0LmNocm9tZU1pbmltaXplPW5ldyBQdCgiY2hyb21lLW1pbmltaXplIix7Zm9udENoYXJhY3RlcjoiXFxlYWJhIn0pLFB0LmNocm9tZVJlc3RvcmU9bmV3IFB0KCJjaHJvbWUtcmVzdG9yZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFiYiJ9KSxQdC5jaXJjbGVPdXRsaW5lPW5ldyBQdCgiY2lyY2xlLW91dGxpbmUiLHtmb250Q2hhcmFjdGVyOiJcXGVhYmMifSksUHQuZGVidWdCcmVha3BvaW50VW52ZXJpZmllZD1uZXcgUHQoImRlYnVnLWJyZWFrcG9pbnQtdW52ZXJpZmllZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFiYyJ9KSxQdC5jaXJjbGVTbGFzaD1uZXcgUHQoImNpcmNsZS1zbGFzaCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFiZCJ9KSxQdC5jaXJjdWl0Qm9hcmQ9bmV3IFB0KCJjaXJjdWl0LWJvYXJkIix7Zm9udENoYXJhY3RlcjoiXFxlYWJlIn0pLFB0LmNsZWFyQWxsPW5ldyBQdCgiY2xlYXItYWxsIix7Zm9udENoYXJhY3RlcjoiXFxlYWJmIn0pLFB0LmNsaXBweT1uZXcgUHQoImNsaXBweSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFjMCJ9KSxQdC5jbG9zZUFsbD1uZXcgUHQoImNsb3NlLWFsbCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFjMSJ9KSxQdC5jbG91ZERvd25sb2FkPW5ldyBQdCgiY2xvdWQtZG93bmxvYWQiLHtmb250Q2hhcmFjdGVyOiJcXGVhYzIifSksUHQuY2xvdWRVcGxvYWQ9bmV3IFB0KCJjbG91ZC11cGxvYWQiLHtmb250Q2hhcmFjdGVyOiJcXGVhYzMifSksUHQuY29kZT1uZXcgUHQoImNvZGUiLHtmb250Q2hhcmFjdGVyOiJcXGVhYzQifSksUHQuY29sbGFwc2VBbGw9bmV3IFB0KCJjb2xsYXBzZS1hbGwiLHtmb250Q2hhcmFjdGVyOiJcXGVhYzUifSksUHQuY29sb3JNb2RlPW5ldyBQdCgiY29sb3ItbW9kZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFjNiJ9KSxQdC5jb21tZW50RGlzY3Vzc2lvbj1uZXcgUHQoImNvbW1lbnQtZGlzY3Vzc2lvbiIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFjNyJ9KSxQdC5jb21wYXJlQ2hhbmdlcz1uZXcgUHQoImNvbXBhcmUtY2hhbmdlcyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFmZCJ9KSxQdC5jcmVkaXRDYXJkPW5ldyBQdCgiY3JlZGl0LWNhcmQiLHtmb250Q2hhcmFjdGVyOiJcXGVhYzkifSksUHQuZGFzaD1uZXcgUHQoImRhc2giLHtmb250Q2hhcmFjdGVyOiJcXGVhY2MifSksUHQuZGFzaGJvYXJkPW5ldyBQdCgiZGFzaGJvYXJkIix7Zm9udENoYXJhY3RlcjoiXFxlYWNkIn0pLFB0LmRhdGFiYXNlPW5ldyBQdCgiZGF0YWJhc2UiLHtmb250Q2hhcmFjdGVyOiJcXGVhY2UifSksUHQuZGVidWdDb250aW51ZT1uZXcgUHQoImRlYnVnLWNvbnRpbnVlIix7Zm9udENoYXJhY3RlcjoiXFxlYWNmIn0pLFB0LmRlYnVnRGlzY29ubmVjdD1uZXcgUHQoImRlYnVnLWRpc2Nvbm5lY3QiLHtmb250Q2hhcmFjdGVyOiJcXGVhZDAifSksUHQuZGVidWdQYXVzZT1uZXcgUHQoImRlYnVnLXBhdXNlIix7Zm9udENoYXJhY3RlcjoiXFxlYWQxIn0pLFB0LmRlYnVnUmVzdGFydD1uZXcgUHQoImRlYnVnLXJlc3RhcnQiLHtmb250Q2hhcmFjdGVyOiJcXGVhZDIifSksUHQuZGVidWdTdGFydD1uZXcgUHQoImRlYnVnLXN0YXJ0Iix7Zm9udENoYXJhY3RlcjoiXFxlYWQzIn0pLFB0LmRlYnVnU3RlcEludG89bmV3IFB0KCJkZWJ1Zy1zdGVwLWludG8iLHtmb250Q2hhcmFjdGVyOiJcXGVhZDQifSksUHQuZGVidWdTdGVwT3V0PW5ldyBQdCgiZGVidWctc3RlcC1vdXQiLHtmb250Q2hhcmFjdGVyOiJcXGVhZDUifSksUHQuZGVidWdTdGVwT3Zlcj1uZXcgUHQoImRlYnVnLXN0ZXAtb3ZlciIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFkNiJ9KSxQdC5kZWJ1Z1N0b3A9bmV3IFB0KCJkZWJ1Zy1zdG9wIix7Zm9udENoYXJhY3RlcjoiXFxlYWQ3In0pLFB0LmRlYnVnPW5ldyBQdCgiZGVidWciLHtmb250Q2hhcmFjdGVyOiJcXGVhZDgifSksUHQuZGV2aWNlQ2FtZXJhVmlkZW89bmV3IFB0KCJkZXZpY2UtY2FtZXJhLXZpZGVvIix7Zm9udENoYXJhY3RlcjoiXFxlYWQ5In0pLFB0LmRldmljZUNhbWVyYT1uZXcgUHQoImRldmljZS1jYW1lcmEiLHtmb250Q2hhcmFjdGVyOiJcXGVhZGEifSksUHQuZGV2aWNlTW9iaWxlPW5ldyBQdCgiZGV2aWNlLW1vYmlsZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFkYiJ9KSxQdC5kaWZmQWRkZWQ9bmV3IFB0KCJkaWZmLWFkZGVkIix7Zm9udENoYXJhY3RlcjoiXFxlYWRjIn0pLFB0LmRpZmZJZ25vcmVkPW5ldyBQdCgiZGlmZi1pZ25vcmVkIix7Zm9udENoYXJhY3RlcjoiXFxlYWRkIn0pLFB0LmRpZmZNb2RpZmllZD1uZXcgUHQoImRpZmYtbW9kaWZpZWQiLHtmb250Q2hhcmFjdGVyOiJcXGVhZGUifSksUHQuZGlmZlJlbW92ZWQ9bmV3IFB0KCJkaWZmLXJlbW92ZWQiLHtmb250Q2hhcmFjdGVyOiJcXGVhZGYifSksUHQuZGlmZlJlbmFtZWQ9bmV3IFB0KCJkaWZmLXJlbmFtZWQiLHtmb250Q2hhcmFjdGVyOiJcXGVhZTAifSksUHQuZGlmZj1uZXcgUHQoImRpZmYiLHtmb250Q2hhcmFjdGVyOiJcXGVhZTEifSksUHQuZGlzY2FyZD1uZXcgUHQoImRpc2NhcmQiLHtmb250Q2hhcmFjdGVyOiJcXGVhZTIifSksUHQuZWRpdG9yTGF5b3V0PW5ldyBQdCgiZWRpdG9yLWxheW91dCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFlMyJ9KSxQdC5lbXB0eVdpbmRvdz1uZXcgUHQoImVtcHR5LXdpbmRvdyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFlNCJ9KSxQdC5leGNsdWRlPW5ldyBQdCgiZXhjbHVkZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFlNSJ9KSxQdC5leHRlbnNpb25zPW5ldyBQdCgiZXh0ZW5zaW9ucyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFlNiJ9KSxQdC5leWVDbG9zZWQ9bmV3IFB0KCJleWUtY2xvc2VkIix7Zm9udENoYXJhY3RlcjoiXFxlYWU3In0pLFB0LmZpbGVCaW5hcnk9bmV3IFB0KCJmaWxlLWJpbmFyeSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFlOCJ9KSxQdC5maWxlQ29kZT1uZXcgUHQoImZpbGUtY29kZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFlOSJ9KSxQdC5maWxlTWVkaWE9bmV3IFB0KCJmaWxlLW1lZGlhIix7Zm9udENoYXJhY3RlcjoiXFxlYWVhIn0pLFB0LmZpbGVQZGY9bmV3IFB0KCJmaWxlLXBkZiIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFlYiJ9KSxQdC5maWxlU3VibW9kdWxlPW5ldyBQdCgiZmlsZS1zdWJtb2R1bGUiLHtmb250Q2hhcmFjdGVyOiJcXGVhZWMifSksUHQuZmlsZVN5bWxpbmtEaXJlY3Rvcnk9bmV3IFB0KCJmaWxlLXN5bWxpbmstZGlyZWN0b3J5Iix7Zm9udENoYXJhY3RlcjoiXFxlYWVkIn0pLFB0LmZpbGVTeW1saW5rRmlsZT1uZXcgUHQoImZpbGUtc3ltbGluay1maWxlIix7Zm9udENoYXJhY3RlcjoiXFxlYWVlIn0pLFB0LmZpbGVaaXA9bmV3IFB0KCJmaWxlLXppcCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFlZiJ9KSxQdC5maWxlcz1uZXcgUHQoImZpbGVzIix7Zm9udENoYXJhY3RlcjoiXFxlYWYwIn0pLFB0LmZpbHRlcj1uZXcgUHQoImZpbHRlciIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFmMSJ9KSxQdC5mbGFtZT1uZXcgUHQoImZsYW1lIix7Zm9udENoYXJhY3RlcjoiXFxlYWYyIn0pLFB0LmZvbGREb3duPW5ldyBQdCgiZm9sZC1kb3duIix7Zm9udENoYXJhY3RlcjoiXFxlYWYzIn0pLFB0LmZvbGRVcD1uZXcgUHQoImZvbGQtdXAiLHtmb250Q2hhcmFjdGVyOiJcXGVhZjQifSksUHQuZm9sZD1uZXcgUHQoImZvbGQiLHtmb250Q2hhcmFjdGVyOiJcXGVhZjUifSksUHQuZm9sZGVyQWN0aXZlPW5ldyBQdCgiZm9sZGVyLWFjdGl2ZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFmNiJ9KSxQdC5mb2xkZXJPcGVuZWQ9bmV3IFB0KCJmb2xkZXItb3BlbmVkIix7Zm9udENoYXJhY3RlcjoiXFxlYWY3In0pLFB0LmdlYXI9bmV3IFB0KCJnZWFyIix7Zm9udENoYXJhY3RlcjoiXFxlYWY4In0pLFB0LmdpZnQ9bmV3IFB0KCJnaWZ0Iix7Zm9udENoYXJhY3RlcjoiXFxlYWY5In0pLFB0Lmdpc3RTZWNyZXQ9bmV3IFB0KCJnaXN0LXNlY3JldCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFmYSJ9KSxQdC5naXN0PW5ldyBQdCgiZ2lzdCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFmYiJ9KSxQdC5naXRDb21taXQ9bmV3IFB0KCJnaXQtY29tbWl0Iix7Zm9udENoYXJhY3RlcjoiXFxlYWZjIn0pLFB0LmdpdENvbXBhcmU9bmV3IFB0KCJnaXQtY29tcGFyZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFmZCJ9KSxQdC5naXRNZXJnZT1uZXcgUHQoImdpdC1tZXJnZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWFmZSJ9KSxQdC5naXRodWJBY3Rpb249bmV3IFB0KCJnaXRodWItYWN0aW9uIix7Zm9udENoYXJhY3RlcjoiXFxlYWZmIn0pLFB0LmdpdGh1YkFsdD1uZXcgUHQoImdpdGh1Yi1hbHQiLHtmb250Q2hhcmFjdGVyOiJcXGViMDAifSksUHQuZ2xvYmU9bmV3IFB0KCJnbG9iZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIwMSJ9KSxQdC5ncmFiYmVyPW5ldyBQdCgiZ3JhYmJlciIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIwMiJ9KSxQdC5ncmFwaD1uZXcgUHQoImdyYXBoIix7Zm9udENoYXJhY3RlcjoiXFxlYjAzIn0pLFB0LmdyaXBwZXI9bmV3IFB0KCJncmlwcGVyIix7Zm9udENoYXJhY3RlcjoiXFxlYjA0In0pLFB0LmhlYXJ0PW5ldyBQdCgiaGVhcnQiLHtmb250Q2hhcmFjdGVyOiJcXGViMDUifSksUHQuaG9tZT1uZXcgUHQoImhvbWUiLHtmb250Q2hhcmFjdGVyOiJcXGViMDYifSksUHQuaG9yaXpvbnRhbFJ1bGU9bmV3IFB0KCJob3Jpem9udGFsLXJ1bGUiLHtmb250Q2hhcmFjdGVyOiJcXGViMDcifSksUHQuaHVib3Q9bmV3IFB0KCJodWJvdCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIwOCJ9KSxQdC5pbmJveD1uZXcgUHQoImluYm94Iix7Zm9udENoYXJhY3RlcjoiXFxlYjA5In0pLFB0Lmlzc3VlQ2xvc2VkPW5ldyBQdCgiaXNzdWUtY2xvc2VkIix7Zm9udENoYXJhY3RlcjoiXFxlYmE0In0pLFB0Lmlzc3VlUmVvcGVuZWQ9bmV3IFB0KCJpc3N1ZS1yZW9wZW5lZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIwYiJ9KSxQdC5pc3N1ZXM9bmV3IFB0KCJpc3N1ZXMiLHtmb250Q2hhcmFjdGVyOiJcXGViMGMifSksUHQuaXRhbGljPW5ldyBQdCgiaXRhbGljIix7Zm9udENoYXJhY3RlcjoiXFxlYjBkIn0pLFB0LmplcnNleT1uZXcgUHQoImplcnNleSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIwZSJ9KSxQdC5qc29uPW5ldyBQdCgianNvbiIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIwZiJ9KSxQdC5rZWJhYlZlcnRpY2FsPW5ldyBQdCgia2ViYWItdmVydGljYWwiLHtmb250Q2hhcmFjdGVyOiJcXGViMTAifSksUHQua2V5PW5ldyBQdCgia2V5Iix7Zm9udENoYXJhY3RlcjoiXFxlYjExIn0pLFB0Lmxhdz1uZXcgUHQoImxhdyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIxMiJ9KSxQdC5saWdodGJ1bGJBdXRvZml4PW5ldyBQdCgibGlnaHRidWxiLWF1dG9maXgiLHtmb250Q2hhcmFjdGVyOiJcXGViMTMifSksUHQubGlua0V4dGVybmFsPW5ldyBQdCgibGluay1leHRlcm5hbCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIxNCJ9KSxQdC5saW5rPW5ldyBQdCgibGluayIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIxNSJ9KSxQdC5saXN0T3JkZXJlZD1uZXcgUHQoImxpc3Qtb3JkZXJlZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIxNiJ9KSxQdC5saXN0VW5vcmRlcmVkPW5ldyBQdCgibGlzdC11bm9yZGVyZWQiLHtmb250Q2hhcmFjdGVyOiJcXGViMTcifSksUHQubGl2ZVNoYXJlPW5ldyBQdCgibGl2ZS1zaGFyZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIxOCJ9KSxQdC5sb2FkaW5nPW5ldyBQdCgibG9hZGluZyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIxOSJ9KSxQdC5sb2NhdGlvbj1uZXcgUHQoImxvY2F0aW9uIix7Zm9udENoYXJhY3RlcjoiXFxlYjFhIn0pLFB0Lm1haWxSZWFkPW5ldyBQdCgibWFpbC1yZWFkIix7Zm9udENoYXJhY3RlcjoiXFxlYjFiIn0pLFB0Lm1haWw9bmV3IFB0KCJtYWlsIix7Zm9udENoYXJhY3RlcjoiXFxlYjFjIn0pLFB0Lm1hcmtkb3duPW5ldyBQdCgibWFya2Rvd24iLHtmb250Q2hhcmFjdGVyOiJcXGViMWQifSksUHQubWVnYXBob25lPW5ldyBQdCgibWVnYXBob25lIix7Zm9udENoYXJhY3RlcjoiXFxlYjFlIn0pLFB0Lm1lbnRpb249bmV3IFB0KCJtZW50aW9uIix7Zm9udENoYXJhY3RlcjoiXFxlYjFmIn0pLFB0Lm1pbGVzdG9uZT1uZXcgUHQoIm1pbGVzdG9uZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIyMCJ9KSxQdC5tb3J0YXJCb2FyZD1uZXcgUHQoIm1vcnRhci1ib2FyZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIyMSJ9KSxQdC5tb3ZlPW5ldyBQdCgibW92ZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIyMiJ9KSxQdC5tdWx0aXBsZVdpbmRvd3M9bmV3IFB0KCJtdWx0aXBsZS13aW5kb3dzIix7Zm9udENoYXJhY3RlcjoiXFxlYjIzIn0pLFB0Lm11dGU9bmV3IFB0KCJtdXRlIix7Zm9udENoYXJhY3RlcjoiXFxlYjI0In0pLFB0Lm5vTmV3bGluZT1uZXcgUHQoIm5vLW5ld2xpbmUiLHtmb250Q2hhcmFjdGVyOiJcXGViMjUifSksUHQubm90ZT1uZXcgUHQoIm5vdGUiLHtmb250Q2hhcmFjdGVyOiJcXGViMjYifSksUHQub2N0b2ZhY2U9bmV3IFB0KCJvY3RvZmFjZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIyNyJ9KSxQdC5vcGVuUHJldmlldz1uZXcgUHQoIm9wZW4tcHJldmlldyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIyOCJ9KSxQdC5wYWNrYWdlXz1uZXcgUHQoInBhY2thZ2UiLHtmb250Q2hhcmFjdGVyOiJcXGViMjkifSksUHQucGFpbnRjYW49bmV3IFB0KCJwYWludGNhbiIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIyYSJ9KSxQdC5waW49bmV3IFB0KCJwaW4iLHtmb250Q2hhcmFjdGVyOiJcXGViMmIifSksUHQucGxheT1uZXcgUHQoInBsYXkiLHtmb250Q2hhcmFjdGVyOiJcXGViMmMifSksUHQucnVuPW5ldyBQdCgicnVuIix7Zm9udENoYXJhY3RlcjoiXFxlYjJjIn0pLFB0LnBsdWc9bmV3IFB0KCJwbHVnIix7Zm9udENoYXJhY3RlcjoiXFxlYjJkIn0pLFB0LnByZXNlcnZlQ2FzZT1uZXcgUHQoInByZXNlcnZlLWNhc2UiLHtmb250Q2hhcmFjdGVyOiJcXGViMmUifSksUHQucHJldmlldz1uZXcgUHQoInByZXZpZXciLHtmb250Q2hhcmFjdGVyOiJcXGViMmYifSksUHQucHJvamVjdD1uZXcgUHQoInByb2plY3QiLHtmb250Q2hhcmFjdGVyOiJcXGViMzAifSksUHQucHVsc2U9bmV3IFB0KCJwdWxzZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIzMSJ9KSxQdC5xdWVzdGlvbj1uZXcgUHQoInF1ZXN0aW9uIix7Zm9udENoYXJhY3RlcjoiXFxlYjMyIn0pLFB0LnF1b3RlPW5ldyBQdCgicXVvdGUiLHtmb250Q2hhcmFjdGVyOiJcXGViMzMifSksUHQucmFkaW9Ub3dlcj1uZXcgUHQoInJhZGlvLXRvd2VyIix7Zm9udENoYXJhY3RlcjoiXFxlYjM0In0pLFB0LnJlYWN0aW9ucz1uZXcgUHQoInJlYWN0aW9ucyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIzNSJ9KSxQdC5yZWZlcmVuY2VzPW5ldyBQdCgicmVmZXJlbmNlcyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIzNiJ9KSxQdC5yZWZyZXNoPW5ldyBQdCgicmVmcmVzaCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIzNyJ9KSxQdC5yZWdleD1uZXcgUHQoInJlZ2V4Iix7Zm9udENoYXJhY3RlcjoiXFxlYjM4In0pLFB0LnJlbW90ZUV4cGxvcmVyPW5ldyBQdCgicmVtb3RlLWV4cGxvcmVyIix7Zm9udENoYXJhY3RlcjoiXFxlYjM5In0pLFB0LnJlbW90ZT1uZXcgUHQoInJlbW90ZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIzYSJ9KSxQdC5yZW1vdmU9bmV3IFB0KCJyZW1vdmUiLHtmb250Q2hhcmFjdGVyOiJcXGViM2IifSksUHQucmVwbGFjZUFsbD1uZXcgUHQoInJlcGxhY2UtYWxsIix7Zm9udENoYXJhY3RlcjoiXFxlYjNjIn0pLFB0LnJlcGxhY2U9bmV3IFB0KCJyZXBsYWNlIix7Zm9udENoYXJhY3RlcjoiXFxlYjNkIn0pLFB0LnJlcG9DbG9uZT1uZXcgUHQoInJlcG8tY2xvbmUiLHtmb250Q2hhcmFjdGVyOiJcXGViM2UifSksUHQucmVwb0ZvcmNlUHVzaD1uZXcgUHQoInJlcG8tZm9yY2UtcHVzaCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWIzZiJ9KSxQdC5yZXBvUHVsbD1uZXcgUHQoInJlcG8tcHVsbCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI0MCJ9KSxQdC5yZXBvUHVzaD1uZXcgUHQoInJlcG8tcHVzaCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI0MSJ9KSxQdC5yZXBvcnQ9bmV3IFB0KCJyZXBvcnQiLHtmb250Q2hhcmFjdGVyOiJcXGViNDIifSksUHQucmVxdWVzdENoYW5nZXM9bmV3IFB0KCJyZXF1ZXN0LWNoYW5nZXMiLHtmb250Q2hhcmFjdGVyOiJcXGViNDMifSksUHQucm9ja2V0PW5ldyBQdCgicm9ja2V0Iix7Zm9udENoYXJhY3RlcjoiXFxlYjQ0In0pLFB0LnJvb3RGb2xkZXJPcGVuZWQ9bmV3IFB0KCJyb290LWZvbGRlci1vcGVuZWQiLHtmb250Q2hhcmFjdGVyOiJcXGViNDUifSksUHQucm9vdEZvbGRlcj1uZXcgUHQoInJvb3QtZm9sZGVyIix7Zm9udENoYXJhY3RlcjoiXFxlYjQ2In0pLFB0LnJzcz1uZXcgUHQoInJzcyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI0NyJ9KSxQdC5ydWJ5PW5ldyBQdCgicnVieSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI0OCJ9KSxQdC5zYXZlQWxsPW5ldyBQdCgic2F2ZS1hbGwiLHtmb250Q2hhcmFjdGVyOiJcXGViNDkifSksUHQuc2F2ZUFzPW5ldyBQdCgic2F2ZS1hcyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI0YSJ9KSxQdC5zYXZlPW5ldyBQdCgic2F2ZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI0YiJ9KSxQdC5zY3JlZW5GdWxsPW5ldyBQdCgic2NyZWVuLWZ1bGwiLHtmb250Q2hhcmFjdGVyOiJcXGViNGMifSksUHQuc2NyZWVuTm9ybWFsPW5ldyBQdCgic2NyZWVuLW5vcm1hbCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI0ZCJ9KSxQdC5zZWFyY2hTdG9wPW5ldyBQdCgic2VhcmNoLXN0b3AiLHtmb250Q2hhcmFjdGVyOiJcXGViNGUifSksUHQuc2VydmVyPW5ldyBQdCgic2VydmVyIix7Zm9udENoYXJhY3RlcjoiXFxlYjUwIn0pLFB0LnNldHRpbmdzR2Vhcj1uZXcgUHQoInNldHRpbmdzLWdlYXIiLHtmb250Q2hhcmFjdGVyOiJcXGViNTEifSksUHQuc2V0dGluZ3M9bmV3IFB0KCJzZXR0aW5ncyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI1MiJ9KSxQdC5zaGllbGQ9bmV3IFB0KCJzaGllbGQiLHtmb250Q2hhcmFjdGVyOiJcXGViNTMifSksUHQuc21pbGV5PW5ldyBQdCgic21pbGV5Iix7Zm9udENoYXJhY3RlcjoiXFxlYjU0In0pLFB0LnNvcnRQcmVjZWRlbmNlPW5ldyBQdCgic29ydC1wcmVjZWRlbmNlIix7Zm9udENoYXJhY3RlcjoiXFxlYjU1In0pLFB0LnNwbGl0SG9yaXpvbnRhbD1uZXcgUHQoInNwbGl0LWhvcml6b250YWwiLHtmb250Q2hhcmFjdGVyOiJcXGViNTYifSksUHQuc3BsaXRWZXJ0aWNhbD1uZXcgUHQoInNwbGl0LXZlcnRpY2FsIix7Zm9udENoYXJhY3RlcjoiXFxlYjU3In0pLFB0LnNxdWlycmVsPW5ldyBQdCgic3F1aXJyZWwiLHtmb250Q2hhcmFjdGVyOiJcXGViNTgifSksUHQuc3RhckZ1bGw9bmV3IFB0KCJzdGFyLWZ1bGwiLHtmb250Q2hhcmFjdGVyOiJcXGViNTkifSksUHQuc3RhckhhbGY9bmV3IFB0KCJzdGFyLWhhbGYiLHtmb250Q2hhcmFjdGVyOiJcXGViNWEifSksUHQuc3ltYm9sQ2xhc3M9bmV3IFB0KCJzeW1ib2wtY2xhc3MiLHtmb250Q2hhcmFjdGVyOiJcXGViNWIifSksUHQuc3ltYm9sQ29sb3I9bmV3IFB0KCJzeW1ib2wtY29sb3IiLHtmb250Q2hhcmFjdGVyOiJcXGViNWMifSksUHQuc3ltYm9sQ3VzdG9tQ29sb3I9bmV3IFB0KCJzeW1ib2wtY3VzdG9tY29sb3IiLHtmb250Q2hhcmFjdGVyOiJcXGViNWMifSksUHQuc3ltYm9sQ29uc3RhbnQ9bmV3IFB0KCJzeW1ib2wtY29uc3RhbnQiLHtmb250Q2hhcmFjdGVyOiJcXGViNWQifSksUHQuc3ltYm9sRW51bU1lbWJlcj1uZXcgUHQoInN5bWJvbC1lbnVtLW1lbWJlciIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI1ZSJ9KSxQdC5zeW1ib2xGaWVsZD1uZXcgUHQoInN5bWJvbC1maWVsZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI1ZiJ9KSxQdC5zeW1ib2xGaWxlPW5ldyBQdCgic3ltYm9sLWZpbGUiLHtmb250Q2hhcmFjdGVyOiJcXGViNjAifSksUHQuc3ltYm9sSW50ZXJmYWNlPW5ldyBQdCgic3ltYm9sLWludGVyZmFjZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI2MSJ9KSxQdC5zeW1ib2xLZXl3b3JkPW5ldyBQdCgic3ltYm9sLWtleXdvcmQiLHtmb250Q2hhcmFjdGVyOiJcXGViNjIifSksUHQuc3ltYm9sTWlzYz1uZXcgUHQoInN5bWJvbC1taXNjIix7Zm9udENoYXJhY3RlcjoiXFxlYjYzIn0pLFB0LnN5bWJvbE9wZXJhdG9yPW5ldyBQdCgic3ltYm9sLW9wZXJhdG9yIix7Zm9udENoYXJhY3RlcjoiXFxlYjY0In0pLFB0LnN5bWJvbFByb3BlcnR5PW5ldyBQdCgic3ltYm9sLXByb3BlcnR5Iix7Zm9udENoYXJhY3RlcjoiXFxlYjY1In0pLFB0LndyZW5jaD1uZXcgUHQoIndyZW5jaCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI2NSJ9KSxQdC53cmVuY2hTdWJhY3Rpb249bmV3IFB0KCJ3cmVuY2gtc3ViYWN0aW9uIix7Zm9udENoYXJhY3RlcjoiXFxlYjY1In0pLFB0LnN5bWJvbFNuaXBwZXQ9bmV3IFB0KCJzeW1ib2wtc25pcHBldCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI2NiJ9KSxQdC50YXNrbGlzdD1uZXcgUHQoInRhc2tsaXN0Iix7Zm9udENoYXJhY3RlcjoiXFxlYjY3In0pLFB0LnRlbGVzY29wZT1uZXcgUHQoInRlbGVzY29wZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI2OCJ9KSxQdC50ZXh0U2l6ZT1uZXcgUHQoInRleHQtc2l6ZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI2OSJ9KSxQdC50aHJlZUJhcnM9bmV3IFB0KCJ0aHJlZS1iYXJzIix7Zm9udENoYXJhY3RlcjoiXFxlYjZhIn0pLFB0LnRodW1ic2Rvd249bmV3IFB0KCJ0aHVtYnNkb3duIix7Zm9udENoYXJhY3RlcjoiXFxlYjZiIn0pLFB0LnRodW1ic3VwPW5ldyBQdCgidGh1bWJzdXAiLHtmb250Q2hhcmFjdGVyOiJcXGViNmMifSksUHQudG9vbHM9bmV3IFB0KCJ0b29scyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI2ZCJ9KSxQdC50cmlhbmdsZURvd249bmV3IFB0KCJ0cmlhbmdsZS1kb3duIix7Zm9udENoYXJhY3RlcjoiXFxlYjZlIn0pLFB0LnRyaWFuZ2xlTGVmdD1uZXcgUHQoInRyaWFuZ2xlLWxlZnQiLHtmb250Q2hhcmFjdGVyOiJcXGViNmYifSksUHQudHJpYW5nbGVSaWdodD1uZXcgUHQoInRyaWFuZ2xlLXJpZ2h0Iix7Zm9udENoYXJhY3RlcjoiXFxlYjcwIn0pLFB0LnRyaWFuZ2xlVXA9bmV3IFB0KCJ0cmlhbmdsZS11cCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI3MSJ9KSxQdC50d2l0dGVyPW5ldyBQdCgidHdpdHRlciIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI3MiJ9KSxQdC51bmZvbGQ9bmV3IFB0KCJ1bmZvbGQiLHtmb250Q2hhcmFjdGVyOiJcXGViNzMifSksUHQudW5sb2NrPW5ldyBQdCgidW5sb2NrIix7Zm9udENoYXJhY3RlcjoiXFxlYjc0In0pLFB0LnVubXV0ZT1uZXcgUHQoInVubXV0ZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI3NSJ9KSxQdC51bnZlcmlmaWVkPW5ldyBQdCgidW52ZXJpZmllZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI3NiJ9KSxQdC52ZXJpZmllZD1uZXcgUHQoInZlcmlmaWVkIix7Zm9udENoYXJhY3RlcjoiXFxlYjc3In0pLFB0LnZlcnNpb25zPW5ldyBQdCgidmVyc2lvbnMiLHtmb250Q2hhcmFjdGVyOiJcXGViNzgifSksUHQudm1BY3RpdmU9bmV3IFB0KCJ2bS1hY3RpdmUiLHtmb250Q2hhcmFjdGVyOiJcXGViNzkifSksUHQudm1PdXRsaW5lPW5ldyBQdCgidm0tb3V0bGluZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI3YSJ9KSxQdC52bVJ1bm5pbmc9bmV3IFB0KCJ2bS1ydW5uaW5nIix7Zm9udENoYXJhY3RlcjoiXFxlYjdiIn0pLFB0LndhdGNoPW5ldyBQdCgid2F0Y2giLHtmb250Q2hhcmFjdGVyOiJcXGViN2MifSksUHQud2hpdGVzcGFjZT1uZXcgUHQoIndoaXRlc3BhY2UiLHtmb250Q2hhcmFjdGVyOiJcXGViN2QifSksUHQud2hvbGVXb3JkPW5ldyBQdCgid2hvbGUtd29yZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI3ZSJ9KSxQdC53aW5kb3c9bmV3IFB0KCJ3aW5kb3ciLHtmb250Q2hhcmFjdGVyOiJcXGViN2YifSksUHQud29yZFdyYXA9bmV3IFB0KCJ3b3JkLXdyYXAiLHtmb250Q2hhcmFjdGVyOiJcXGViODAifSksUHQuem9vbUluPW5ldyBQdCgiem9vbS1pbiIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI4MSJ9KSxQdC56b29tT3V0PW5ldyBQdCgiem9vbS1vdXQiLHtmb250Q2hhcmFjdGVyOiJcXGViODIifSksUHQubGlzdEZpbHRlcj1uZXcgUHQoImxpc3QtZmlsdGVyIix7Zm9udENoYXJhY3RlcjoiXFxlYjgzIn0pLFB0Lmxpc3RGbGF0PW5ldyBQdCgibGlzdC1mbGF0Iix7Zm9udENoYXJhY3RlcjoiXFxlYjg0In0pLFB0Lmxpc3RTZWxlY3Rpb249bmV3IFB0KCJsaXN0LXNlbGVjdGlvbiIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI4NSJ9KSxQdC5zZWxlY3Rpb249bmV3IFB0KCJzZWxlY3Rpb24iLHtmb250Q2hhcmFjdGVyOiJcXGViODUifSksUHQubGlzdFRyZWU9bmV3IFB0KCJsaXN0LXRyZWUiLHtmb250Q2hhcmFjdGVyOiJcXGViODYifSksUHQuZGVidWdCcmVha3BvaW50RnVuY3Rpb25VbnZlcmlmaWVkPW5ldyBQdCgiZGVidWctYnJlYWtwb2ludC1mdW5jdGlvbi11bnZlcmlmaWVkIix7Zm9udENoYXJhY3RlcjoiXFxlYjg3In0pLFB0LmRlYnVnQnJlYWtwb2ludEZ1bmN0aW9uPW5ldyBQdCgiZGVidWctYnJlYWtwb2ludC1mdW5jdGlvbiIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI4OCJ9KSxQdC5kZWJ1Z0JyZWFrcG9pbnRGdW5jdGlvbkRpc2FibGVkPW5ldyBQdCgiZGVidWctYnJlYWtwb2ludC1mdW5jdGlvbi1kaXNhYmxlZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI4OCJ9KSxQdC5kZWJ1Z1N0YWNrZnJhbWVBY3RpdmU9bmV3IFB0KCJkZWJ1Zy1zdGFja2ZyYW1lLWFjdGl2ZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI4OSJ9KSxQdC5jaXJjbGVTbWFsbEZpbGxlZD1uZXcgUHQoImNpcmNsZS1zbWFsbC1maWxsZWQiLHtmb250Q2hhcmFjdGVyOiJcXGViOGEifSksUHQuZGVidWdTdGFja2ZyYW1lRG90PW5ldyBQdCgiZGVidWctc3RhY2tmcmFtZS1kb3QiLFB0LmNpcmNsZVNtYWxsRmlsbGVkLmRlZmluaXRpb24pLFB0LmRlYnVnU3RhY2tmcmFtZT1uZXcgUHQoImRlYnVnLXN0YWNrZnJhbWUiLHtmb250Q2hhcmFjdGVyOiJcXGViOGIifSksUHQuZGVidWdTdGFja2ZyYW1lRm9jdXNlZD1uZXcgUHQoImRlYnVnLXN0YWNrZnJhbWUtZm9jdXNlZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI4YiJ9KSxQdC5kZWJ1Z0JyZWFrcG9pbnRVbnN1cHBvcnRlZD1uZXcgUHQoImRlYnVnLWJyZWFrcG9pbnQtdW5zdXBwb3J0ZWQiLHtmb250Q2hhcmFjdGVyOiJcXGViOGMifSksUHQuc3ltYm9sU3RyaW5nPW5ldyBQdCgic3ltYm9sLXN0cmluZyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI4ZCJ9KSxQdC5kZWJ1Z1JldmVyc2VDb250aW51ZT1uZXcgUHQoImRlYnVnLXJldmVyc2UtY29udGludWUiLHtmb250Q2hhcmFjdGVyOiJcXGViOGUifSksUHQuZGVidWdTdGVwQmFjaz1uZXcgUHQoImRlYnVnLXN0ZXAtYmFjayIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI4ZiJ9KSxQdC5kZWJ1Z1Jlc3RhcnRGcmFtZT1uZXcgUHQoImRlYnVnLXJlc3RhcnQtZnJhbWUiLHtmb250Q2hhcmFjdGVyOiJcXGViOTAifSksUHQuY2FsbEluY29taW5nPW5ldyBQdCgiY2FsbC1pbmNvbWluZyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI5MiJ9KSxQdC5jYWxsT3V0Z29pbmc9bmV3IFB0KCJjYWxsLW91dGdvaW5nIix7Zm9udENoYXJhY3RlcjoiXFxlYjkzIn0pLFB0Lm1lbnU9bmV3IFB0KCJtZW51Iix7Zm9udENoYXJhY3RlcjoiXFxlYjk0In0pLFB0LmV4cGFuZEFsbD1uZXcgUHQoImV4cGFuZC1hbGwiLHtmb250Q2hhcmFjdGVyOiJcXGViOTUifSksUHQuZmVlZGJhY2s9bmV3IFB0KCJmZWVkYmFjayIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI5NiJ9KSxQdC5ncm91cEJ5UmVmVHlwZT1uZXcgUHQoImdyb3VwLWJ5LXJlZi10eXBlIix7Zm9udENoYXJhY3RlcjoiXFxlYjk3In0pLFB0LnVuZ3JvdXBCeVJlZlR5cGU9bmV3IFB0KCJ1bmdyb3VwLWJ5LXJlZi10eXBlIix7Zm9udENoYXJhY3RlcjoiXFxlYjk4In0pLFB0LmFjY291bnQ9bmV3IFB0KCJhY2NvdW50Iix7Zm9udENoYXJhY3RlcjoiXFxlYjk5In0pLFB0LmJlbGxEb3Q9bmV3IFB0KCJiZWxsLWRvdCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI5YSJ9KSxQdC5kZWJ1Z0NvbnNvbGU9bmV3IFB0KCJkZWJ1Zy1jb25zb2xlIix7Zm9udENoYXJhY3RlcjoiXFxlYjliIn0pLFB0LmxpYnJhcnk9bmV3IFB0KCJsaWJyYXJ5Iix7Zm9udENoYXJhY3RlcjoiXFxlYjljIn0pLFB0Lm91dHB1dD1uZXcgUHQoIm91dHB1dCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI5ZCJ9KSxQdC5ydW5BbGw9bmV3IFB0KCJydW4tYWxsIix7Zm9udENoYXJhY3RlcjoiXFxlYjllIn0pLFB0LnN5bmNJZ25vcmVkPW5ldyBQdCgic3luYy1pZ25vcmVkIix7Zm9udENoYXJhY3RlcjoiXFxlYjlmIn0pLFB0LnBpbm5lZD1uZXcgUHQoInBpbm5lZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJhMCJ9KSxQdC5naXRodWJJbnZlcnRlZD1uZXcgUHQoImdpdGh1Yi1pbnZlcnRlZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJhMSJ9KSxQdC5kZWJ1Z0FsdD1uZXcgUHQoImRlYnVnLWFsdCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWI5MSJ9KSxQdC5zZXJ2ZXJQcm9jZXNzPW5ldyBQdCgic2VydmVyLXByb2Nlc3MiLHtmb250Q2hhcmFjdGVyOiJcXGViYTIifSksUHQuc2VydmVyRW52aXJvbm1lbnQ9bmV3IFB0KCJzZXJ2ZXItZW52aXJvbm1lbnQiLHtmb250Q2hhcmFjdGVyOiJcXGViYTMifSksUHQucGFzcz1uZXcgUHQoInBhc3MiLHtmb250Q2hhcmFjdGVyOiJcXGViYTQifSksUHQuc3RvcENpcmNsZT1uZXcgUHQoInN0b3AtY2lyY2xlIix7Zm9udENoYXJhY3RlcjoiXFxlYmE1In0pLFB0LnBsYXlDaXJjbGU9bmV3IFB0KCJwbGF5LWNpcmNsZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJhNiJ9KSxQdC5yZWNvcmQ9bmV3IFB0KCJyZWNvcmQiLHtmb250Q2hhcmFjdGVyOiJcXGViYTcifSksUHQuZGVidWdBbHRTbWFsbD1uZXcgUHQoImRlYnVnLWFsdC1zbWFsbCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJhOCJ9KSxQdC52bUNvbm5lY3Q9bmV3IFB0KCJ2bS1jb25uZWN0Iix7Zm9udENoYXJhY3RlcjoiXFxlYmE5In0pLFB0LmNsb3VkPW5ldyBQdCgiY2xvdWQiLHtmb250Q2hhcmFjdGVyOiJcXGViYWEifSksUHQubWVyZ2U9bmV3IFB0KCJtZXJnZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJhYiJ9KSxQdC5leHBvcnRJY29uPW5ldyBQdCgiZXhwb3J0Iix7Zm9udENoYXJhY3RlcjoiXFxlYmFjIn0pLFB0LmdyYXBoTGVmdD1uZXcgUHQoImdyYXBoLWxlZnQiLHtmb250Q2hhcmFjdGVyOiJcXGViYWQifSksUHQubWFnbmV0PW5ldyBQdCgibWFnbmV0Iix7Zm9udENoYXJhY3RlcjoiXFxlYmFlIn0pLFB0Lm5vdGVib29rPW5ldyBQdCgibm90ZWJvb2siLHtmb250Q2hhcmFjdGVyOiJcXGViYWYifSksUHQucmVkbz1uZXcgUHQoInJlZG8iLHtmb250Q2hhcmFjdGVyOiJcXGViYjAifSksUHQuY2hlY2tBbGw9bmV3IFB0KCJjaGVjay1hbGwiLHtmb250Q2hhcmFjdGVyOiJcXGViYjEifSksUHQucGlubmVkRGlydHk9bmV3IFB0KCJwaW5uZWQtZGlydHkiLHtmb250Q2hhcmFjdGVyOiJcXGViYjIifSksUHQucGFzc0ZpbGxlZD1uZXcgUHQoInBhc3MtZmlsbGVkIix7Zm9udENoYXJhY3RlcjoiXFxlYmIzIn0pLFB0LmNpcmNsZUxhcmdlRmlsbGVkPW5ldyBQdCgiY2lyY2xlLWxhcmdlLWZpbGxlZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJiNCJ9KSxQdC5jaXJjbGVMYXJnZU91dGxpbmU9bmV3IFB0KCJjaXJjbGUtbGFyZ2Utb3V0bGluZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJiNSJ9KSxQdC5jb21iaW5lPW5ldyBQdCgiY29tYmluZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJiNiJ9KSxQdC5nYXRoZXI9bmV3IFB0KCJnYXRoZXIiLHtmb250Q2hhcmFjdGVyOiJcXGViYjYifSksUHQudGFibGU9bmV3IFB0KCJ0YWJsZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJiNyJ9KSxQdC52YXJpYWJsZUdyb3VwPW5ldyBQdCgidmFyaWFibGUtZ3JvdXAiLHtmb250Q2hhcmFjdGVyOiJcXGViYjgifSksUHQudHlwZUhpZXJhcmNoeT1uZXcgUHQoInR5cGUtaGllcmFyY2h5Iix7Zm9udENoYXJhY3RlcjoiXFxlYmI5In0pLFB0LnR5cGVIaWVyYXJjaHlTdWI9bmV3IFB0KCJ0eXBlLWhpZXJhcmNoeS1zdWIiLHtmb250Q2hhcmFjdGVyOiJcXGViYmEifSksUHQudHlwZUhpZXJhcmNoeVN1cGVyPW5ldyBQdCgidHlwZS1oaWVyYXJjaHktc3VwZXIiLHtmb250Q2hhcmFjdGVyOiJcXGViYmIifSksUHQuZ2l0UHVsbFJlcXVlc3RDcmVhdGU9bmV3IFB0KCJnaXQtcHVsbC1yZXF1ZXN0LWNyZWF0ZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJiYyJ9KSxQdC5ydW5BYm92ZT1uZXcgUHQoInJ1bi1hYm92ZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJiZCJ9KSxQdC5ydW5CZWxvdz1uZXcgUHQoInJ1bi1iZWxvdyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJiZSJ9KSxQdC5ub3RlYm9va1RlbXBsYXRlPW5ldyBQdCgibm90ZWJvb2stdGVtcGxhdGUiLHtmb250Q2hhcmFjdGVyOiJcXGViYmYifSksUHQuZGVidWdSZXJ1bj1uZXcgUHQoImRlYnVnLXJlcnVuIix7Zm9udENoYXJhY3RlcjoiXFxlYmMwIn0pLFB0LndvcmtzcGFjZVRydXN0ZWQ9bmV3IFB0KCJ3b3Jrc3BhY2UtdHJ1c3RlZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJjMSJ9KSxQdC53b3Jrc3BhY2VVbnRydXN0ZWQ9bmV3IFB0KCJ3b3Jrc3BhY2UtdW50cnVzdGVkIix7Zm9udENoYXJhY3RlcjoiXFxlYmMyIn0pLFB0LndvcmtzcGFjZVVuc3BlY2lmaWVkPW5ldyBQdCgid29ya3NwYWNlLXVuc3BlY2lmaWVkIix7Zm9udENoYXJhY3RlcjoiXFxlYmMzIn0pLFB0LnRlcm1pbmFsQ21kPW5ldyBQdCgidGVybWluYWwtY21kIix7Zm9udENoYXJhY3RlcjoiXFxlYmM0In0pLFB0LnRlcm1pbmFsRGViaWFuPW5ldyBQdCgidGVybWluYWwtZGViaWFuIix7Zm9udENoYXJhY3RlcjoiXFxlYmM1In0pLFB0LnRlcm1pbmFsTGludXg9bmV3IFB0KCJ0ZXJtaW5hbC1saW51eCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJjNiJ9KSxQdC50ZXJtaW5hbFBvd2Vyc2hlbGw9bmV3IFB0KCJ0ZXJtaW5hbC1wb3dlcnNoZWxsIix7Zm9udENoYXJhY3RlcjoiXFxlYmM3In0pLFB0LnRlcm1pbmFsVG11eD1uZXcgUHQoInRlcm1pbmFsLXRtdXgiLHtmb250Q2hhcmFjdGVyOiJcXGViYzgifSksUHQudGVybWluYWxVYnVudHU9bmV3IFB0KCJ0ZXJtaW5hbC11YnVudHUiLHtmb250Q2hhcmFjdGVyOiJcXGViYzkifSksUHQudGVybWluYWxCYXNoPW5ldyBQdCgidGVybWluYWwtYmFzaCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJjYSJ9KSxQdC5hcnJvd1N3YXA9bmV3IFB0KCJhcnJvdy1zd2FwIix7Zm9udENoYXJhY3RlcjoiXFxlYmNiIn0pLFB0LmNvcHk9bmV3IFB0KCJjb3B5Iix7Zm9udENoYXJhY3RlcjoiXFxlYmNjIn0pLFB0LnBlcnNvbkFkZD1uZXcgUHQoInBlcnNvbi1hZGQiLHtmb250Q2hhcmFjdGVyOiJcXGViY2QifSksUHQuZmlsdGVyRmlsbGVkPW5ldyBQdCgiZmlsdGVyLWZpbGxlZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJjZSJ9KSxQdC53YW5kPW5ldyBQdCgid2FuZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJjZiJ9KSxQdC5kZWJ1Z0xpbmVCeUxpbmU9bmV3IFB0KCJkZWJ1Zy1saW5lLWJ5LWxpbmUiLHtmb250Q2hhcmFjdGVyOiJcXGViZDAifSksUHQuaW5zcGVjdD1uZXcgUHQoImluc3BlY3QiLHtmb250Q2hhcmFjdGVyOiJcXGViZDEifSksUHQubGF5ZXJzPW5ldyBQdCgibGF5ZXJzIix7Zm9udENoYXJhY3RlcjoiXFxlYmQyIn0pLFB0LmxheWVyc0RvdD1uZXcgUHQoImxheWVycy1kb3QiLHtmb250Q2hhcmFjdGVyOiJcXGViZDMifSksUHQubGF5ZXJzQWN0aXZlPW5ldyBQdCgibGF5ZXJzLWFjdGl2ZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJkNCJ9KSxQdC5jb21wYXNzPW5ldyBQdCgiY29tcGFzcyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJkNSJ9KSxQdC5jb21wYXNzRG90PW5ldyBQdCgiY29tcGFzcy1kb3QiLHtmb250Q2hhcmFjdGVyOiJcXGViZDYifSksUHQuY29tcGFzc0FjdGl2ZT1uZXcgUHQoImNvbXBhc3MtYWN0aXZlIix7Zm9udENoYXJhY3RlcjoiXFxlYmQ3In0pLFB0LmF6dXJlPW5ldyBQdCgiYXp1cmUiLHtmb250Q2hhcmFjdGVyOiJcXGViZDgifSksUHQuaXNzdWVEcmFmdD1uZXcgUHQoImlzc3VlLWRyYWZ0Iix7Zm9udENoYXJhY3RlcjoiXFxlYmQ5In0pLFB0LmdpdFB1bGxSZXF1ZXN0Q2xvc2VkPW5ldyBQdCgiZ2l0LXB1bGwtcmVxdWVzdC1jbG9zZWQiLHtmb250Q2hhcmFjdGVyOiJcXGViZGEifSksUHQuZ2l0UHVsbFJlcXVlc3REcmFmdD1uZXcgUHQoImdpdC1wdWxsLXJlcXVlc3QtZHJhZnQiLHtmb250Q2hhcmFjdGVyOiJcXGViZGIifSksUHQuZGVidWdBbGw9bmV3IFB0KCJkZWJ1Zy1hbGwiLHtmb250Q2hhcmFjdGVyOiJcXGViZGMifSksUHQuZGVidWdDb3ZlcmFnZT1uZXcgUHQoImRlYnVnLWNvdmVyYWdlIix7Zm9udENoYXJhY3RlcjoiXFxlYmRkIn0pLFB0LnJ1bkVycm9ycz1uZXcgUHQoInJ1bi1lcnJvcnMiLHtmb250Q2hhcmFjdGVyOiJcXGViZGUifSksUHQuZm9sZGVyTGlicmFyeT1uZXcgUHQoImZvbGRlci1saWJyYXJ5Iix7Zm9udENoYXJhY3RlcjoiXFxlYmRmIn0pLFB0LmRlYnVnQ29udGludWVTbWFsbD1uZXcgUHQoImRlYnVnLWNvbnRpbnVlLXNtYWxsIix7Zm9udENoYXJhY3RlcjoiXFxlYmUwIn0pLFB0LmJlYWtlclN0b3A9bmV3IFB0KCJiZWFrZXItc3RvcCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJlMSJ9KSxQdC5ncmFwaExpbmU9bmV3IFB0KCJncmFwaC1saW5lIix7Zm9udENoYXJhY3RlcjoiXFxlYmUyIn0pLFB0LmdyYXBoU2NhdHRlcj1uZXcgUHQoImdyYXBoLXNjYXR0ZXIiLHtmb250Q2hhcmFjdGVyOiJcXGViZTMifSksUHQucGllQ2hhcnQ9bmV3IFB0KCJwaWUtY2hhcnQiLHtmb250Q2hhcmFjdGVyOiJcXGViZTQifSksUHQuYnJhY2tldD1uZXcgUHQoImJyYWNrZXQiLFB0Lmpzb24uZGVmaW5pdGlvbiksUHQuYnJhY2tldERvdD1uZXcgUHQoImJyYWNrZXQtZG90Iix7Zm9udENoYXJhY3RlcjoiXFxlYmU1In0pLFB0LmJyYWNrZXRFcnJvcj1uZXcgUHQoImJyYWNrZXQtZXJyb3IiLHtmb250Q2hhcmFjdGVyOiJcXGViZTYifSksUHQubG9ja1NtYWxsPW5ldyBQdCgibG9jay1zbWFsbCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJlNyJ9KSxQdC5henVyZURldm9wcz1uZXcgUHQoImF6dXJlLWRldm9wcyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJlOCJ9KSxQdC52ZXJpZmllZEZpbGxlZD1uZXcgUHQoInZlcmlmaWVkLWZpbGxlZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJlOSJ9KSxQdC5uZXdMaW5lPW5ldyBQdCgibmV3bGluZSIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJlYSJ9KSxQdC5sYXlvdXQ9bmV3IFB0KCJsYXlvdXQiLHtmb250Q2hhcmFjdGVyOiJcXGViZWIifSksUHQubGF5b3V0QWN0aXZpdHliYXJMZWZ0PW5ldyBQdCgibGF5b3V0LWFjdGl2aXR5YmFyLWxlZnQiLHtmb250Q2hhcmFjdGVyOiJcXGViZWMifSksUHQubGF5b3V0QWN0aXZpdHliYXJSaWdodD1uZXcgUHQoImxheW91dC1hY3Rpdml0eWJhci1yaWdodCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJlZCJ9KSxQdC5sYXlvdXRQYW5lbExlZnQ9bmV3IFB0KCJsYXlvdXQtcGFuZWwtbGVmdCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJlZSJ9KSxQdC5sYXlvdXRQYW5lbENlbnRlcj1uZXcgUHQoImxheW91dC1wYW5lbC1jZW50ZXIiLHtmb250Q2hhcmFjdGVyOiJcXGViZWYifSksUHQubGF5b3V0UGFuZWxKdXN0aWZ5PW5ldyBQdCgibGF5b3V0LXBhbmVsLWp1c3RpZnkiLHtmb250Q2hhcmFjdGVyOiJcXGViZjAifSksUHQubGF5b3V0UGFuZWxSaWdodD1uZXcgUHQoImxheW91dC1wYW5lbC1yaWdodCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJmMSJ9KSxQdC5sYXlvdXRQYW5lbD1uZXcgUHQoImxheW91dC1wYW5lbCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJmMiJ9KSxQdC5sYXlvdXRTaWRlYmFyTGVmdD1uZXcgUHQoImxheW91dC1zaWRlYmFyLWxlZnQiLHtmb250Q2hhcmFjdGVyOiJcXGViZjMifSksUHQubGF5b3V0U2lkZWJhclJpZ2h0PW5ldyBQdCgibGF5b3V0LXNpZGViYXItcmlnaHQiLHtmb250Q2hhcmFjdGVyOiJcXGViZjQifSksUHQubGF5b3V0U3RhdHVzYmFyPW5ldyBQdCgibGF5b3V0LXN0YXR1c2JhciIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJmNSJ9KSxQdC5sYXlvdXRNZW51YmFyPW5ldyBQdCgibGF5b3V0LW1lbnViYXIiLHtmb250Q2hhcmFjdGVyOiJcXGViZjYifSksUHQubGF5b3V0Q2VudGVyZWQ9bmV3IFB0KCJsYXlvdXQtY2VudGVyZWQiLHtmb250Q2hhcmFjdGVyOiJcXGViZjcifSksUHQubGF5b3V0U2lkZWJhclJpZ2h0T2ZmPW5ldyBQdCgibGF5b3V0LXNpZGViYXItcmlnaHQtb2ZmIix7Zm9udENoYXJhY3RlcjoiXFxlYzAwIn0pLFB0LmxheW91dFBhbmVsT2ZmPW5ldyBQdCgibGF5b3V0LXBhbmVsLW9mZiIse2ZvbnRDaGFyYWN0ZXI6IlxcZWMwMSJ9KSxQdC5sYXlvdXRTaWRlYmFyTGVmdE9mZj1uZXcgUHQoImxheW91dC1zaWRlYmFyLWxlZnQtb2ZmIix7Zm9udENoYXJhY3RlcjoiXFxlYzAyIn0pLFB0LnRhcmdldD1uZXcgUHQoInRhcmdldCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJmOCJ9KSxQdC5pbmRlbnQ9bmV3IFB0KCJpbmRlbnQiLHtmb250Q2hhcmFjdGVyOiJcXGViZjkifSksUHQucmVjb3JkU21hbGw9bmV3IFB0KCJyZWNvcmQtc21hbGwiLHtmb250Q2hhcmFjdGVyOiJcXGViZmEifSksUHQuZXJyb3JTbWFsbD1uZXcgUHQoImVycm9yLXNtYWxsIix7Zm9udENoYXJhY3RlcjoiXFxlYmZiIn0pLFB0LmFycm93Q2lyY2xlRG93bj1uZXcgUHQoImFycm93LWNpcmNsZS1kb3duIix7Zm9udENoYXJhY3RlcjoiXFxlYmZjIn0pLFB0LmFycm93Q2lyY2xlTGVmdD1uZXcgUHQoImFycm93LWNpcmNsZS1sZWZ0Iix7Zm9udENoYXJhY3RlcjoiXFxlYmZkIn0pLFB0LmFycm93Q2lyY2xlUmlnaHQ9bmV3IFB0KCJhcnJvdy1jaXJjbGUtcmlnaHQiLHtmb250Q2hhcmFjdGVyOiJcXGViZmUifSksUHQuYXJyb3dDaXJjbGVVcD1uZXcgUHQoImFycm93LWNpcmNsZS11cCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWJmZiJ9KSxQdC5oZWFydEZpbGxlZD1uZXcgUHQoImhlYXJ0LWZpbGxlZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWMwNCJ9KSxQdC5tYXA9bmV3IFB0KCJtYXAiLHtmb250Q2hhcmFjdGVyOiJcXGVjMDUifSksUHQubWFwRmlsbGVkPW5ldyBQdCgibWFwLWZpbGxlZCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWMwNiJ9KSxQdC5jaXJjbGVTbWFsbD1uZXcgUHQoImNpcmNsZS1zbWFsbCIse2ZvbnRDaGFyYWN0ZXI6IlxcZWMwNyJ9KSxQdC5iZWxsU2xhc2g9bmV3IFB0KCJiZWxsLXNsYXNoIix7Zm9udENoYXJhY3RlcjoiXFxlYzA4In0pLFB0LmJlbGxTbGFzaERvdD1uZXcgUHQoImJlbGwtc2xhc2gtZG90Iix7Zm9udENoYXJhY3RlcjoiXFxlYzA5In0pLFB0LmNvbW1lbnRVbnJlc29sdmVkPW5ldyBQdCgiY29tbWVudC11bnJlc29sdmVkIix7Zm9udENoYXJhY3RlcjoiXFxlYzBhIn0pLFB0LmdpdFB1bGxSZXF1ZXN0R29Ub0NoYW5nZXM9bmV3IFB0KCJnaXQtcHVsbC1yZXF1ZXN0LWdvLXRvLWNoYW5nZXMiLHtmb250Q2hhcmFjdGVyOiJcXGVjMGIifSksUHQuZ2l0UHVsbFJlcXVlc3ROZXdDaGFuZ2VzPW5ldyBQdCgiZ2l0LXB1bGwtcmVxdWVzdC1uZXctY2hhbmdlcyIse2ZvbnRDaGFyYWN0ZXI6IlxcZWMwYyJ9KSxQdC5kaWFsb2dFcnJvcj1uZXcgUHQoImRpYWxvZy1lcnJvciIsUHQuZXJyb3IuZGVmaW5pdGlvbiksUHQuZGlhbG9nV2FybmluZz1uZXcgUHQoImRpYWxvZy13YXJuaW5nIixQdC53YXJuaW5nLmRlZmluaXRpb24pLFB0LmRpYWxvZ0luZm89bmV3IFB0KCJkaWFsb2ctaW5mbyIsUHQuaW5mby5kZWZpbml0aW9uKSxQdC5kaWFsb2dDbG9zZT1uZXcgUHQoImRpYWxvZy1jbG9zZSIsUHQuY2xvc2UuZGVmaW5pdGlvbiksUHQudHJlZUl0ZW1FeHBhbmRlZD1uZXcgUHQoInRyZWUtaXRlbS1leHBhbmRlZCIsUHQuY2hldnJvbkRvd24uZGVmaW5pdGlvbiksUHQudHJlZUZpbHRlck9uVHlwZU9uPW5ldyBQdCgidHJlZS1maWx0ZXItb24tdHlwZS1vbiIsUHQubGlzdEZpbHRlci5kZWZpbml0aW9uKSxQdC50cmVlRmlsdGVyT25UeXBlT2ZmPW5ldyBQdCgidHJlZS1maWx0ZXItb24tdHlwZS1vZmYiLFB0Lmxpc3RTZWxlY3Rpb24uZGVmaW5pdGlvbiksUHQudHJlZUZpbHRlckNsZWFyPW5ldyBQdCgidHJlZS1maWx0ZXItY2xlYXIiLFB0LmNsb3NlLmRlZmluaXRpb24pLFB0LnRyZWVJdGVtTG9hZGluZz1uZXcgUHQoInRyZWUtaXRlbS1sb2FkaW5nIixQdC5sb2FkaW5nLmRlZmluaXRpb24pLFB0Lm1lbnVTZWxlY3Rpb249bmV3IFB0KCJtZW51LXNlbGVjdGlvbiIsUHQuY2hlY2suZGVmaW5pdGlvbiksUHQubWVudVN1Ym1lbnU9bmV3IFB0KCJtZW51LXN1Ym1lbnUiLFB0LmNoZXZyb25SaWdodC5kZWZpbml0aW9uKSxQdC5tZW51QmFyTW9yZT1uZXcgUHQoIm1lbnViYXItbW9yZSIsUHQubW9yZS5kZWZpbml0aW9uKSxQdC5zY3JvbGxiYXJCdXR0b25MZWZ0PW5ldyBQdCgic2Nyb2xsYmFyLWJ1dHRvbi1sZWZ0IixQdC50cmlhbmdsZUxlZnQuZGVmaW5pdGlvbiksUHQuc2Nyb2xsYmFyQnV0dG9uUmlnaHQ9bmV3IFB0KCJzY3JvbGxiYXItYnV0dG9uLXJpZ2h0IixQdC50cmlhbmdsZVJpZ2h0LmRlZmluaXRpb24pLFB0LnNjcm9sbGJhckJ1dHRvblVwPW5ldyBQdCgic2Nyb2xsYmFyLWJ1dHRvbi11cCIsUHQudHJpYW5nbGVVcC5kZWZpbml0aW9uKSxQdC5zY3JvbGxiYXJCdXR0b25Eb3duPW5ldyBQdCgic2Nyb2xsYmFyLWJ1dHRvbi1kb3duIixQdC50cmlhbmdsZURvd24uZGVmaW5pdGlvbiksUHQudG9vbEJhck1vcmU9bmV3IFB0KCJ0b29sYmFyLW1vcmUiLFB0Lm1vcmUuZGVmaW5pdGlvbiksUHQucXVpY2tJbnB1dEJhY2s9bmV3IFB0KCJxdWljay1pbnB1dC1iYWNrIixQdC5hcnJvd0xlZnQuZGVmaW5pdGlvbiksZnVuY3Rpb24oZSl7ZS5pY29uTmFtZVNlZ21lbnQ9IltBLVphLXowLTldKyIsZS5pY29uTmFtZUV4cHJlc3Npb249IltBLVphLXowLTktXSsiLGUuaWNvbk1vZGlmaWVyRXhwcmVzc2lvbj0ifltBLVphLXpdKyIsZS5pY29uTmFtZUNoYXJhY3Rlcj0iW0EtWmEtejAtOX4tXSI7Y29uc3QgdD1uZXcgUmVnRXhwKGBeKCR7ZS5pY29uTmFtZUV4cHJlc3Npb259KSgke2UuaWNvbk1vZGlmaWVyRXhwcmVzc2lvbn0pPyRgKTtmdW5jdGlvbiBuKGUpe2lmKGUgaW5zdGFuY2VvZiBQdClyZXR1cm5bImNvZGljb24iLCJjb2RpY29uLSIrZS5pZF07Y29uc3Qgcj10LmV4ZWMoZS5pZCk7aWYoIXIpcmV0dXJuIG4oUHQuZXJyb3IpO2NvbnN0WyxpLGFdPXIsbz1bImNvZGljb24iLCJjb2RpY29uLSIraV07cmV0dXJuIGEmJm8ucHVzaCgiY29kaWNvbi1tb2RpZmllci0iK2Euc3Vic3RyKDEpKSxvfWUuYXNDbGFzc05hbWVBcnJheT1uLGUuYXNDbGFzc05hbWU9ZnVuY3Rpb24oZSl7cmV0dXJuIG4oZSkuam9pbigiICIpfSxlLmFzQ1NTU2VsZWN0b3I9ZnVuY3Rpb24oZSl7cmV0dXJuIi4iK24oZSkuam9pbigiLiIpfX0oV3R8fChXdD17fSkpO3ZhciBxdCxGdCxWdCxCdCxLdCxqdCxHdCwkdCxKdCxYdCxZdCxRdCxadCxlbix0bixubixybixhbixvbixzbixsbixjbixobixkbix1bixwbixtbixmbixnbixibix3bixfbix2bix5bixUbixrbixTbixDbix4bixMbixFbixBbixNbixSbixJbixObixVbixIbix6bj1mdW5jdGlvbihlLHQsbixyKXtyZXR1cm4gbmV3KG58fChuPVByb21pc2UpKSgoZnVuY3Rpb24oaSxhKXtmdW5jdGlvbiBvKGUpe3RyeXtsKHIubmV4dChlKSl9Y2F0Y2goZSl7YShlKX19ZnVuY3Rpb24gcyhlKXt0cnl7bChyLnRocm93KGUpKX1jYXRjaChlKXthKGUpfX1mdW5jdGlvbiBsKGUpe3ZhciB0O2UuZG9uZT9pKGUudmFsdWUpOih0PWUudmFsdWUsdCBpbnN0YW5jZW9mIG4/dDpuZXcgbigoZnVuY3Rpb24oZSl7ZSh0KX0pKSkudGhlbihvLHMpfWwoKHI9ci5hcHBseShlLHR8fFtdKSkubmV4dCgpKX0pKX07Y2xhc3MgRG4gZXh0ZW5kcyB1e2NvbnN0cnVjdG9yKGUsdCxuKXtzdXBlcigpLHRoaXMuX3JlZ2lzdHJ5PWUsdGhpcy5fbGFuZ3VhZ2VJZD10LHRoaXMuX2ZhY3Rvcnk9bix0aGlzLl9pc0Rpc3Bvc2VkPSExLHRoaXMuX3Jlc29sdmVQcm9taXNlPW51bGwsdGhpcy5faXNSZXNvbHZlZD0hMX1nZXQgaXNSZXNvbHZlZCgpe3JldHVybiB0aGlzLl9pc1Jlc29sdmVkfWRpc3Bvc2UoKXt0aGlzLl9pc0Rpc3Bvc2VkPSEwLHN1cGVyLmRpc3Bvc2UoKX1yZXNvbHZlKCl7cmV0dXJuIHpuKHRoaXMsdm9pZCAwLHZvaWQgMCwoZnVuY3Rpb24qKCl7cmV0dXJuIHRoaXMuX3Jlc29sdmVQcm9taXNlfHwodGhpcy5fcmVzb2x2ZVByb21pc2U9dGhpcy5fY3JlYXRlKCkpLHRoaXMuX3Jlc29sdmVQcm9taXNlfSkpfV9jcmVhdGUoKXtyZXR1cm4gem4odGhpcyx2b2lkIDAsdm9pZCAwLChmdW5jdGlvbiooKXtjb25zdCBlPXlpZWxkIFByb21pc2UucmVzb2x2ZSh0aGlzLl9mYWN0b3J5LmNyZWF0ZVRva2VuaXphdGlvblN1cHBvcnQoKSk7dGhpcy5faXNSZXNvbHZlZD0hMCxlJiYhdGhpcy5faXNEaXNwb3NlZCYmdGhpcy5fcmVnaXN0ZXIodGhpcy5fcmVnaXN0cnkucmVnaXN0ZXIodGhpcy5fbGFuZ3VhZ2VJZCxlKSl9KSl9fWNsYXNzIFdue2NvbnN0cnVjdG9yKGUsdCxuKXt0aGlzLl90b2tlbkJyYW5kPXZvaWQgMCx0aGlzLm9mZnNldD1lLHRoaXMudHlwZT10LHRoaXMubGFuZ3VhZ2U9bn10b1N0cmluZygpe3JldHVybiIoIit0aGlzLm9mZnNldCsiLCAiK3RoaXMudHlwZSsiKSJ9fSFmdW5jdGlvbihlKXtjb25zdCB0PW5ldyBNYXA7dC5zZXQoMCxQdC5zeW1ib2xNZXRob2QpLHQuc2V0KDEsUHQuc3ltYm9sRnVuY3Rpb24pLHQuc2V0KDIsUHQuc3ltYm9sQ29uc3RydWN0b3IpLHQuc2V0KDMsUHQuc3ltYm9sRmllbGQpLHQuc2V0KDQsUHQuc3ltYm9sVmFyaWFibGUpLHQuc2V0KDUsUHQuc3ltYm9sQ2xhc3MpLHQuc2V0KDYsUHQuc3ltYm9sU3RydWN0KSx0LnNldCg3LFB0LnN5bWJvbEludGVyZmFjZSksdC5zZXQoOCxQdC5zeW1ib2xNb2R1bGUpLHQuc2V0KDksUHQuc3ltYm9sUHJvcGVydHkpLHQuc2V0KDEwLFB0LnN5bWJvbEV2ZW50KSx0LnNldCgxMSxQdC5zeW1ib2xPcGVyYXRvciksdC5zZXQoMTIsUHQuc3ltYm9sVW5pdCksdC5zZXQoMTMsUHQuc3ltYm9sVmFsdWUpLHQuc2V0KDE1LFB0LnN5bWJvbEVudW0pLHQuc2V0KDE0LFB0LnN5bWJvbENvbnN0YW50KSx0LnNldCgxNSxQdC5zeW1ib2xFbnVtKSx0LnNldCgxNixQdC5zeW1ib2xFbnVtTWVtYmVyKSx0LnNldCgxNyxQdC5zeW1ib2xLZXl3b3JkKSx0LnNldCgyNyxQdC5zeW1ib2xTbmlwcGV0KSx0LnNldCgxOCxQdC5zeW1ib2xUZXh0KSx0LnNldCgxOSxQdC5zeW1ib2xDb2xvciksdC5zZXQoMjAsUHQuc3ltYm9sRmlsZSksdC5zZXQoMjEsUHQuc3ltYm9sUmVmZXJlbmNlKSx0LnNldCgyMixQdC5zeW1ib2xDdXN0b21Db2xvciksdC5zZXQoMjMsUHQuc3ltYm9sRm9sZGVyKSx0LnNldCgyNCxQdC5zeW1ib2xUeXBlUGFyYW1ldGVyKSx0LnNldCgyNSxQdC5hY2NvdW50KSx0LnNldCgyNixQdC5pc3N1ZXMpLGUudG9JY29uPWZ1bmN0aW9uKGUpe2xldCBuPXQuZ2V0KGUpO3JldHVybiBufHwoY29uc29sZS5pbmZvKCJObyBjb2RpY29uIGZvdW5kIGZvciBDb21wbGV0aW9uSXRlbUtpbmQgIitlKSxuPVB0LnN5bWJvbFByb3BlcnR5KSxufTtjb25zdCBuPW5ldyBNYXA7bi5zZXQoIm1ldGhvZCIsMCksbi5zZXQoImZ1bmN0aW9uIiwxKSxuLnNldCgiY29uc3RydWN0b3IiLDIpLG4uc2V0KCJmaWVsZCIsMyksbi5zZXQoInZhcmlhYmxlIiw0KSxuLnNldCgiY2xhc3MiLDUpLG4uc2V0KCJzdHJ1Y3QiLDYpLG4uc2V0KCJpbnRlcmZhY2UiLDcpLG4uc2V0KCJtb2R1bGUiLDgpLG4uc2V0KCJwcm9wZXJ0eSIsOSksbi5zZXQoImV2ZW50IiwxMCksbi5zZXQoIm9wZXJhdG9yIiwxMSksbi5zZXQoInVuaXQiLDEyKSxuLnNldCgidmFsdWUiLDEzKSxuLnNldCgiY29uc3RhbnQiLDE0KSxuLnNldCgiZW51bSIsMTUpLG4uc2V0KCJlbnVtLW1lbWJlciIsMTYpLG4uc2V0KCJlbnVtTWVtYmVyIiwxNiksbi5zZXQoImtleXdvcmQiLDE3KSxuLnNldCgic25pcHBldCIsMjcpLG4uc2V0KCJ0ZXh0IiwxOCksbi5zZXQoImNvbG9yIiwxOSksbi5zZXQoImZpbGUiLDIwKSxuLnNldCgicmVmZXJlbmNlIiwyMSksbi5zZXQoImN1c3RvbWNvbG9yIiwyMiksbi5zZXQoImZvbGRlciIsMjMpLG4uc2V0KCJ0eXBlLXBhcmFtZXRlciIsMjQpLG4uc2V0KCJ0eXBlUGFyYW1ldGVyIiwyNCksbi5zZXQoImFjY291bnQiLDI1KSxuLnNldCgiaXNzdWUiLDI2KSxlLmZyb21TdHJpbmc9ZnVuY3Rpb24oZSx0KXtsZXQgcj1uLmdldChlKTtyZXR1cm4gdm9pZCAwIT09cnx8dHx8KHI9OSkscn19KHF0fHwocXQ9e30pKSxmdW5jdGlvbihlKXtlW2UuQXV0b21hdGljPTBdPSJBdXRvbWF0aWMiLGVbZS5FeHBsaWNpdD0xXT0iRXhwbGljaXQifShGdHx8KEZ0PXt9KSksZnVuY3Rpb24oZSl7ZVtlLkludm9rZT0xXT0iSW52b2tlIixlW2UuVHJpZ2dlckNoYXJhY3Rlcj0yXT0iVHJpZ2dlckNoYXJhY3RlciIsZVtlLkNvbnRlbnRDaGFuZ2U9M109IkNvbnRlbnRDaGFuZ2UifShWdHx8KFZ0PXt9KSksZnVuY3Rpb24oZSl7ZVtlLlRleHQ9MF09IlRleHQiLGVbZS5SZWFkPTFdPSJSZWFkIixlW2UuV3JpdGU9Ml09IldyaXRlIn0oQnR8fChCdD17fSkpLGZ1bmN0aW9uKGUpe2NvbnN0IHQ9bmV3IE1hcDt0LnNldCgwLFB0LnN5bWJvbEZpbGUpLHQuc2V0KDEsUHQuc3ltYm9sTW9kdWxlKSx0LnNldCgyLFB0LnN5bWJvbE5hbWVzcGFjZSksdC5zZXQoMyxQdC5zeW1ib2xQYWNrYWdlKSx0LnNldCg0LFB0LnN5bWJvbENsYXNzKSx0LnNldCg1LFB0LnN5bWJvbE1ldGhvZCksdC5zZXQoNixQdC5zeW1ib2xQcm9wZXJ0eSksdC5zZXQoNyxQdC5zeW1ib2xGaWVsZCksdC5zZXQoOCxQdC5zeW1ib2xDb25zdHJ1Y3RvciksdC5zZXQoOSxQdC5zeW1ib2xFbnVtKSx0LnNldCgxMCxQdC5zeW1ib2xJbnRlcmZhY2UpLHQuc2V0KDExLFB0LnN5bWJvbEZ1bmN0aW9uKSx0LnNldCgxMixQdC5zeW1ib2xWYXJpYWJsZSksdC5zZXQoMTMsUHQuc3ltYm9sQ29uc3RhbnQpLHQuc2V0KDE0LFB0LnN5bWJvbFN0cmluZyksdC5zZXQoMTUsUHQuc3ltYm9sTnVtYmVyKSx0LnNldCgxNixQdC5zeW1ib2xCb29sZWFuKSx0LnNldCgxNyxQdC5zeW1ib2xBcnJheSksdC5zZXQoMTgsUHQuc3ltYm9sT2JqZWN0KSx0LnNldCgxOSxQdC5zeW1ib2xLZXkpLHQuc2V0KDIwLFB0LnN5bWJvbE51bGwpLHQuc2V0KDIxLFB0LnN5bWJvbEVudW1NZW1iZXIpLHQuc2V0KDIyLFB0LnN5bWJvbFN0cnVjdCksdC5zZXQoMjMsUHQuc3ltYm9sRXZlbnQpLHQuc2V0KDI0LFB0LnN5bWJvbE9wZXJhdG9yKSx0LnNldCgyNSxQdC5zeW1ib2xUeXBlUGFyYW1ldGVyKSxlLnRvSWNvbj1mdW5jdGlvbihlKXtsZXQgbj10LmdldChlKTtyZXR1cm4gbnx8KGNvbnNvbGUuaW5mbygiTm8gY29kaWNvbiBmb3VuZCBmb3IgU3ltYm9sS2luZCAiK2UpLG49UHQuc3ltYm9sUHJvcGVydHkpLG59fShLdHx8KEt0PXt9KSksZnVuY3Rpb24oZSl7ZS5pcz1mdW5jdGlvbihlKXtyZXR1cm4hKCFlfHwib2JqZWN0IiE9dHlwZW9mIGUpJiYoInN0cmluZyI9PXR5cGVvZiBlLmlkJiYic3RyaW5nIj09dHlwZW9mIGUudGl0bGUpfX0oanR8fChqdD17fSkpLGZ1bmN0aW9uKGUpe2VbZS5UeXBlPTFdPSJUeXBlIixlW2UuUGFyYW1ldGVyPTJdPSJQYXJhbWV0ZXIifShHdHx8KEd0PXt9KSksbmV3IGNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy5fbWFwPW5ldyBNYXAsdGhpcy5fZmFjdG9yaWVzPW5ldyBNYXAsdGhpcy5fb25EaWRDaGFuZ2U9bmV3IEYsdGhpcy5vbkRpZENoYW5nZT10aGlzLl9vbkRpZENoYW5nZS5ldmVudCx0aGlzLl9jb2xvck1hcD1udWxsfWZpcmUoZSl7dGhpcy5fb25EaWRDaGFuZ2UuZmlyZSh7Y2hhbmdlZExhbmd1YWdlczplLGNoYW5nZWRDb2xvck1hcDohMX0pfXJlZ2lzdGVyKGUsdCl7cmV0dXJuIHRoaXMuX21hcC5zZXQoZSx0KSx0aGlzLmZpcmUoW2VdKSxoKCgoKT0+e3RoaXMuX21hcC5nZXQoZSk9PT10JiYodGhpcy5fbWFwLmRlbGV0ZShlKSx0aGlzLmZpcmUoW2VdKSl9KSl9cmVnaXN0ZXJGYWN0b3J5KGUsdCl7dmFyIG47bnVsbD09PShuPXRoaXMuX2ZhY3Rvcmllcy5nZXQoZSkpfHx2b2lkIDA9PT1ufHxuLmRpc3Bvc2UoKTtjb25zdCByPW5ldyBEbih0aGlzLGUsdCk7cmV0dXJuIHRoaXMuX2ZhY3Rvcmllcy5zZXQoZSxyKSxoKCgoKT0+e2NvbnN0IHQ9dGhpcy5fZmFjdG9yaWVzLmdldChlKTt0JiZ0PT09ciYmKHRoaXMuX2ZhY3Rvcmllcy5kZWxldGUoZSksdC5kaXNwb3NlKCkpfSkpfWdldE9yQ3JlYXRlKGUpe3JldHVybiB6bih0aGlzLHZvaWQgMCx2b2lkIDAsKGZ1bmN0aW9uKigpe2NvbnN0IHQ9dGhpcy5nZXQoZSk7aWYodClyZXR1cm4gdDtjb25zdCBuPXRoaXMuX2ZhY3Rvcmllcy5nZXQoZSk7cmV0dXJuIW58fG4uaXNSZXNvbHZlZD9udWxsOih5aWVsZCBuLnJlc29sdmUoKSx0aGlzLmdldChlKSl9KSl9Z2V0KGUpe3JldHVybiB0aGlzLl9tYXAuZ2V0KGUpfHxudWxsfWlzUmVzb2x2ZWQoZSl7aWYodGhpcy5nZXQoZSkpcmV0dXJuITA7Y29uc3QgdD10aGlzLl9mYWN0b3JpZXMuZ2V0KGUpO3JldHVybiEodCYmIXQuaXNSZXNvbHZlZCl9c2V0Q29sb3JNYXAoZSl7dGhpcy5fY29sb3JNYXA9ZSx0aGlzLl9vbkRpZENoYW5nZS5maXJlKHtjaGFuZ2VkTGFuZ3VhZ2VzOkFycmF5LmZyb20odGhpcy5fbWFwLmtleXMoKSksY2hhbmdlZENvbG9yTWFwOiEwfSl9Z2V0Q29sb3JNYXAoKXtyZXR1cm4gdGhpcy5fY29sb3JNYXB9Z2V0RGVmYXVsdEJhY2tncm91bmQoKXtyZXR1cm4gdGhpcy5fY29sb3JNYXAmJnRoaXMuX2NvbG9yTWFwLmxlbmd0aD4yP3RoaXMuX2NvbG9yTWFwWzJdOm51bGx9fSxmdW5jdGlvbihlKXtlW2UuVW5rbm93bj0wXT0iVW5rbm93biIsZVtlLkRpc2FibGVkPTFdPSJEaXNhYmxlZCIsZVtlLkVuYWJsZWQ9Ml09IkVuYWJsZWQifSgkdHx8KCR0PXt9KSksZnVuY3Rpb24oZSl7ZVtlLkludm9rZT0xXT0iSW52b2tlIixlW2UuQXV0bz0yXT0iQXV0byJ9KEp0fHwoSnQ9e30pKSxmdW5jdGlvbihlKXtlW2UuS2VlcFdoaXRlc3BhY2U9MV09IktlZXBXaGl0ZXNwYWNlIixlW2UuSW5zZXJ0QXNTbmlwcGV0PTRdPSJJbnNlcnRBc1NuaXBwZXQifShYdHx8KFh0PXt9KSksZnVuY3Rpb24oZSl7ZVtlLk1ldGhvZD0wXT0iTWV0aG9kIixlW2UuRnVuY3Rpb249MV09IkZ1bmN0aW9uIixlW2UuQ29uc3RydWN0b3I9Ml09IkNvbnN0cnVjdG9yIixlW2UuRmllbGQ9M109IkZpZWxkIixlW2UuVmFyaWFibGU9NF09IlZhcmlhYmxlIixlW2UuQ2xhc3M9NV09IkNsYXNzIixlW2UuU3RydWN0PTZdPSJTdHJ1Y3QiLGVbZS5JbnRlcmZhY2U9N109IkludGVyZmFjZSIsZVtlLk1vZHVsZT04XT0iTW9kdWxlIixlW2UuUHJvcGVydHk9OV09IlByb3BlcnR5IixlW2UuRXZlbnQ9MTBdPSJFdmVudCIsZVtlLk9wZXJhdG9yPTExXT0iT3BlcmF0b3IiLGVbZS5Vbml0PTEyXT0iVW5pdCIsZVtlLlZhbHVlPTEzXT0iVmFsdWUiLGVbZS5Db25zdGFudD0xNF09IkNvbnN0YW50IixlW2UuRW51bT0xNV09IkVudW0iLGVbZS5FbnVtTWVtYmVyPTE2XT0iRW51bU1lbWJlciIsZVtlLktleXdvcmQ9MTddPSJLZXl3b3JkIixlW2UuVGV4dD0xOF09IlRleHQiLGVbZS5Db2xvcj0xOV09IkNvbG9yIixlW2UuRmlsZT0yMF09IkZpbGUiLGVbZS5SZWZlcmVuY2U9MjFdPSJSZWZlcmVuY2UiLGVbZS5DdXN0b21jb2xvcj0yMl09IkN1c3RvbWNvbG9yIixlW2UuRm9sZGVyPTIzXT0iRm9sZGVyIixlW2UuVHlwZVBhcmFtZXRlcj0yNF09IlR5cGVQYXJhbWV0ZXIiLGVbZS5Vc2VyPTI1XT0iVXNlciIsZVtlLklzc3VlPTI2XT0iSXNzdWUiLGVbZS5TbmlwcGV0PTI3XT0iU25pcHBldCJ9KFl0fHwoWXQ9e30pKSxmdW5jdGlvbihlKXtlW2UuRGVwcmVjYXRlZD0xXT0iRGVwcmVjYXRlZCJ9KFF0fHwoUXQ9e30pKSxmdW5jdGlvbihlKXtlW2UuSW52b2tlPTBdPSJJbnZva2UiLGVbZS5UcmlnZ2VyQ2hhcmFjdGVyPTFdPSJUcmlnZ2VyQ2hhcmFjdGVyIixlW2UuVHJpZ2dlckZvckluY29tcGxldGVDb21wbGV0aW9ucz0yXT0iVHJpZ2dlckZvckluY29tcGxldGVDb21wbGV0aW9ucyJ9KFp0fHwoWnQ9e30pKSxmdW5jdGlvbihlKXtlW2UuRVhBQ1Q9MF09IkVYQUNUIixlW2UuQUJPVkU9MV09IkFCT1ZFIixlW2UuQkVMT1c9Ml09IkJFTE9XIn0oZW58fChlbj17fSkpLGZ1bmN0aW9uKGUpe2VbZS5Ob3RTZXQ9MF09Ik5vdFNldCIsZVtlLkNvbnRlbnRGbHVzaD0xXT0iQ29udGVudEZsdXNoIixlW2UuUmVjb3ZlckZyb21NYXJrZXJzPTJdPSJSZWNvdmVyRnJvbU1hcmtlcnMiLGVbZS5FeHBsaWNpdD0zXT0iRXhwbGljaXQiLGVbZS5QYXN0ZT00XT0iUGFzdGUiLGVbZS5VbmRvPTVdPSJVbmRvIixlW2UuUmVkbz02XT0iUmVkbyJ9KHRufHwodG49e30pKSxmdW5jdGlvbihlKXtlW2UuTEY9MV09IkxGIixlW2UuQ1JMRj0yXT0iQ1JMRiJ9KG5ufHwobm49e30pKSxmdW5jdGlvbihlKXtlW2UuVGV4dD0wXT0iVGV4dCIsZVtlLlJlYWQ9MV09IlJlYWQiLGVbZS5Xcml0ZT0yXT0iV3JpdGUifShybnx8KHJuPXt9KSksZnVuY3Rpb24oZSl7ZVtlLk5vbmU9MF09Ik5vbmUiLGVbZS5LZWVwPTFdPSJLZWVwIixlW2UuQnJhY2tldHM9Ml09IkJyYWNrZXRzIixlW2UuQWR2YW5jZWQ9M109IkFkdmFuY2VkIixlW2UuRnVsbD00XT0iRnVsbCJ9KGFufHwoYW49e30pKSxmdW5jdGlvbihlKXtlW2UuYWNjZXB0U3VnZ2VzdGlvbk9uQ29tbWl0Q2hhcmFjdGVyPTBdPSJhY2NlcHRTdWdnZXN0aW9uT25Db21taXRDaGFyYWN0ZXIiLGVbZS5hY2NlcHRTdWdnZXN0aW9uT25FbnRlcj0xXT0iYWNjZXB0U3VnZ2VzdGlvbk9uRW50ZXIiLGVbZS5hY2Nlc3NpYmlsaXR5U3VwcG9ydD0yXT0iYWNjZXNzaWJpbGl0eVN1cHBvcnQiLGVbZS5hY2Nlc3NpYmlsaXR5UGFnZVNpemU9M109ImFjY2Vzc2liaWxpdHlQYWdlU2l6ZSIsZVtlLmFyaWFMYWJlbD00XT0iYXJpYUxhYmVsIixlW2UuYXV0b0Nsb3NpbmdCcmFja2V0cz01XT0iYXV0b0Nsb3NpbmdCcmFja2V0cyIsZVtlLmF1dG9DbG9zaW5nRGVsZXRlPTZdPSJhdXRvQ2xvc2luZ0RlbGV0ZSIsZVtlLmF1dG9DbG9zaW5nT3ZlcnR5cGU9N109ImF1dG9DbG9zaW5nT3ZlcnR5cGUiLGVbZS5hdXRvQ2xvc2luZ1F1b3Rlcz04XT0iYXV0b0Nsb3NpbmdRdW90ZXMiLGVbZS5hdXRvSW5kZW50PTldPSJhdXRvSW5kZW50IixlW2UuYXV0b21hdGljTGF5b3V0PTEwXT0iYXV0b21hdGljTGF5b3V0IixlW2UuYXV0b1N1cnJvdW5kPTExXT0iYXV0b1N1cnJvdW5kIixlW2UuYnJhY2tldFBhaXJDb2xvcml6YXRpb249MTJdPSJicmFja2V0UGFpckNvbG9yaXphdGlvbiIsZVtlLmd1aWRlcz0xM109Imd1aWRlcyIsZVtlLmNvZGVMZW5zPTE0XT0iY29kZUxlbnMiLGVbZS5jb2RlTGVuc0ZvbnRGYW1pbHk9MTVdPSJjb2RlTGVuc0ZvbnRGYW1pbHkiLGVbZS5jb2RlTGVuc0ZvbnRTaXplPTE2XT0iY29kZUxlbnNGb250U2l6ZSIsZVtlLmNvbG9yRGVjb3JhdG9ycz0xN109ImNvbG9yRGVjb3JhdG9ycyIsZVtlLmNvbHVtblNlbGVjdGlvbj0xOF09ImNvbHVtblNlbGVjdGlvbiIsZVtlLmNvbW1lbnRzPTE5XT0iY29tbWVudHMiLGVbZS5jb250ZXh0bWVudT0yMF09ImNvbnRleHRtZW51IixlW2UuY29weVdpdGhTeW50YXhIaWdobGlnaHRpbmc9MjFdPSJjb3B5V2l0aFN5bnRheEhpZ2hsaWdodGluZyIsZVtlLmN1cnNvckJsaW5raW5nPTIyXT0iY3Vyc29yQmxpbmtpbmciLGVbZS5jdXJzb3JTbW9vdGhDYXJldEFuaW1hdGlvbj0yM109ImN1cnNvclNtb290aENhcmV0QW5pbWF0aW9uIixlW2UuY3Vyc29yU3R5bGU9MjRdPSJjdXJzb3JTdHlsZSIsZVtlLmN1cnNvclN1cnJvdW5kaW5nTGluZXM9MjVdPSJjdXJzb3JTdXJyb3VuZGluZ0xpbmVzIixlW2UuY3Vyc29yU3Vycm91bmRpbmdMaW5lc1N0eWxlPTI2XT0iY3Vyc29yU3Vycm91bmRpbmdMaW5lc1N0eWxlIixlW2UuY3Vyc29yV2lkdGg9MjddPSJjdXJzb3JXaWR0aCIsZVtlLmRpc2FibGVMYXllckhpbnRpbmc9MjhdPSJkaXNhYmxlTGF5ZXJIaW50aW5nIixlW2UuZGlzYWJsZU1vbm9zcGFjZU9wdGltaXphdGlvbnM9MjldPSJkaXNhYmxlTW9ub3NwYWNlT3B0aW1pemF0aW9ucyIsZVtlLmRvbVJlYWRPbmx5PTMwXT0iZG9tUmVhZE9ubHkiLGVbZS5kcmFnQW5kRHJvcD0zMV09ImRyYWdBbmREcm9wIixlW2UuZHJvcEludG9FZGl0b3I9MzJdPSJkcm9wSW50b0VkaXRvciIsZVtlLmVtcHR5U2VsZWN0aW9uQ2xpcGJvYXJkPTMzXT0iZW1wdHlTZWxlY3Rpb25DbGlwYm9hcmQiLGVbZS5leHBlcmltZW50YWw9MzRdPSJleHBlcmltZW50YWwiLGVbZS5leHRyYUVkaXRvckNsYXNzTmFtZT0zNV09ImV4dHJhRWRpdG9yQ2xhc3NOYW1lIixlW2UuZmFzdFNjcm9sbFNlbnNpdGl2aXR5PTM2XT0iZmFzdFNjcm9sbFNlbnNpdGl2aXR5IixlW2UuZmluZD0zN109ImZpbmQiLGVbZS5maXhlZE92ZXJmbG93V2lkZ2V0cz0zOF09ImZpeGVkT3ZlcmZsb3dXaWRnZXRzIixlW2UuZm9sZGluZz0zOV09ImZvbGRpbmciLGVbZS5mb2xkaW5nU3RyYXRlZ3k9NDBdPSJmb2xkaW5nU3RyYXRlZ3kiLGVbZS5mb2xkaW5nSGlnaGxpZ2h0PTQxXT0iZm9sZGluZ0hpZ2hsaWdodCIsZVtlLmZvbGRpbmdJbXBvcnRzQnlEZWZhdWx0PTQyXT0iZm9sZGluZ0ltcG9ydHNCeURlZmF1bHQiLGVbZS5mb2xkaW5nTWF4aW11bVJlZ2lvbnM9NDNdPSJmb2xkaW5nTWF4aW11bVJlZ2lvbnMiLGVbZS51bmZvbGRPbkNsaWNrQWZ0ZXJFbmRPZkxpbmU9NDRdPSJ1bmZvbGRPbkNsaWNrQWZ0ZXJFbmRPZkxpbmUiLGVbZS5mb250RmFtaWx5PTQ1XT0iZm9udEZhbWlseSIsZVtlLmZvbnRJbmZvPTQ2XT0iZm9udEluZm8iLGVbZS5mb250TGlnYXR1cmVzPTQ3XT0iZm9udExpZ2F0dXJlcyIsZVtlLmZvbnRTaXplPTQ4XT0iZm9udFNpemUiLGVbZS5mb250V2VpZ2h0PTQ5XT0iZm9udFdlaWdodCIsZVtlLmZvcm1hdE9uUGFzdGU9NTBdPSJmb3JtYXRPblBhc3RlIixlW2UuZm9ybWF0T25UeXBlPTUxXT0iZm9ybWF0T25UeXBlIixlW2UuZ2x5cGhNYXJnaW49NTJdPSJnbHlwaE1hcmdpbiIsZVtlLmdvdG9Mb2NhdGlvbj01M109ImdvdG9Mb2NhdGlvbiIsZVtlLmhpZGVDdXJzb3JJbk92ZXJ2aWV3UnVsZXI9NTRdPSJoaWRlQ3Vyc29ySW5PdmVydmlld1J1bGVyIixlW2UuaG92ZXI9NTVdPSJob3ZlciIsZVtlLmluRGlmZkVkaXRvcj01Nl09ImluRGlmZkVkaXRvciIsZVtlLmlubGluZVN1Z2dlc3Q9NTddPSJpbmxpbmVTdWdnZXN0IixlW2UubGV0dGVyU3BhY2luZz01OF09ImxldHRlclNwYWNpbmciLGVbZS5saWdodGJ1bGI9NTldPSJsaWdodGJ1bGIiLGVbZS5saW5lRGVjb3JhdGlvbnNXaWR0aD02MF09ImxpbmVEZWNvcmF0aW9uc1dpZHRoIixlW2UubGluZUhlaWdodD02MV09ImxpbmVIZWlnaHQiLGVbZS5saW5lTnVtYmVycz02Ml09ImxpbmVOdW1iZXJzIixlW2UubGluZU51bWJlcnNNaW5DaGFycz02M109ImxpbmVOdW1iZXJzTWluQ2hhcnMiLGVbZS5saW5rZWRFZGl0aW5nPTY0XT0ibGlua2VkRWRpdGluZyIsZVtlLmxpbmtzPTY1XT0ibGlua3MiLGVbZS5tYXRjaEJyYWNrZXRzPTY2XT0ibWF0Y2hCcmFja2V0cyIsZVtlLm1pbmltYXA9NjddPSJtaW5pbWFwIixlW2UubW91c2VTdHlsZT02OF09Im1vdXNlU3R5bGUiLGVbZS5tb3VzZVdoZWVsU2Nyb2xsU2Vuc2l0aXZpdHk9NjldPSJtb3VzZVdoZWVsU2Nyb2xsU2Vuc2l0aXZpdHkiLGVbZS5tb3VzZVdoZWVsWm9vbT03MF09Im1vdXNlV2hlZWxab29tIixlW2UubXVsdGlDdXJzb3JNZXJnZU92ZXJsYXBwaW5nPTcxXT0ibXVsdGlDdXJzb3JNZXJnZU92ZXJsYXBwaW5nIixlW2UubXVsdGlDdXJzb3JNb2RpZmllcj03Ml09Im11bHRpQ3Vyc29yTW9kaWZpZXIiLGVbZS5tdWx0aUN1cnNvclBhc3RlPTczXT0ibXVsdGlDdXJzb3JQYXN0ZSIsZVtlLm9jY3VycmVuY2VzSGlnaGxpZ2h0PTc0XT0ib2NjdXJyZW5jZXNIaWdobGlnaHQiLGVbZS5vdmVydmlld1J1bGVyQm9yZGVyPTc1XT0ib3ZlcnZpZXdSdWxlckJvcmRlciIsZVtlLm92ZXJ2aWV3UnVsZXJMYW5lcz03Nl09Im92ZXJ2aWV3UnVsZXJMYW5lcyIsZVtlLnBhZGRpbmc9NzddPSJwYWRkaW5nIixlW2UucGFyYW1ldGVySGludHM9NzhdPSJwYXJhbWV0ZXJIaW50cyIsZVtlLnBlZWtXaWRnZXREZWZhdWx0Rm9jdXM9NzldPSJwZWVrV2lkZ2V0RGVmYXVsdEZvY3VzIixlW2UuZGVmaW5pdGlvbkxpbmtPcGVuc0luUGVlaz04MF09ImRlZmluaXRpb25MaW5rT3BlbnNJblBlZWsiLGVbZS5xdWlja1N1Z2dlc3Rpb25zPTgxXT0icXVpY2tTdWdnZXN0aW9ucyIsZVtlLnF1aWNrU3VnZ2VzdGlvbnNEZWxheT04Ml09InF1aWNrU3VnZ2VzdGlvbnNEZWxheSIsZVtlLnJlYWRPbmx5PTgzXT0icmVhZE9ubHkiLGVbZS5yZW5hbWVPblR5cGU9ODRdPSJyZW5hbWVPblR5cGUiLGVbZS5yZW5kZXJDb250cm9sQ2hhcmFjdGVycz04NV09InJlbmRlckNvbnRyb2xDaGFyYWN0ZXJzIixlW2UucmVuZGVyRmluYWxOZXdsaW5lPTg2XT0icmVuZGVyRmluYWxOZXdsaW5lIixlW2UucmVuZGVyTGluZUhpZ2hsaWdodD04N109InJlbmRlckxpbmVIaWdobGlnaHQiLGVbZS5yZW5kZXJMaW5lSGlnaGxpZ2h0T25seVdoZW5Gb2N1cz04OF09InJlbmRlckxpbmVIaWdobGlnaHRPbmx5V2hlbkZvY3VzIixlW2UucmVuZGVyVmFsaWRhdGlvbkRlY29yYXRpb25zPTg5XT0icmVuZGVyVmFsaWRhdGlvbkRlY29yYXRpb25zIixlW2UucmVuZGVyV2hpdGVzcGFjZT05MF09InJlbmRlcldoaXRlc3BhY2UiLGVbZS5yZXZlYWxIb3Jpem9udGFsUmlnaHRQYWRkaW5nPTkxXT0icmV2ZWFsSG9yaXpvbnRhbFJpZ2h0UGFkZGluZyIsZVtlLnJvdW5kZWRTZWxlY3Rpb249OTJdPSJyb3VuZGVkU2VsZWN0aW9uIixlW2UucnVsZXJzPTkzXT0icnVsZXJzIixlW2Uuc2Nyb2xsYmFyPTk0XT0ic2Nyb2xsYmFyIixlW2Uuc2Nyb2xsQmV5b25kTGFzdENvbHVtbj05NV09InNjcm9sbEJleW9uZExhc3RDb2x1bW4iLGVbZS5zY3JvbGxCZXlvbmRMYXN0TGluZT05Nl09InNjcm9sbEJleW9uZExhc3RMaW5lIixlW2Uuc2Nyb2xsUHJlZG9taW5hbnRBeGlzPTk3XT0ic2Nyb2xsUHJlZG9taW5hbnRBeGlzIixlW2Uuc2VsZWN0aW9uQ2xpcGJvYXJkPTk4XT0ic2VsZWN0aW9uQ2xpcGJvYXJkIixlW2Uuc2VsZWN0aW9uSGlnaGxpZ2h0PTk5XT0ic2VsZWN0aW9uSGlnaGxpZ2h0IixlW2Uuc2VsZWN0T25MaW5lTnVtYmVycz0xMDBdPSJzZWxlY3RPbkxpbmVOdW1iZXJzIixlW2Uuc2hvd0ZvbGRpbmdDb250cm9scz0xMDFdPSJzaG93Rm9sZGluZ0NvbnRyb2xzIixlW2Uuc2hvd1VudXNlZD0xMDJdPSJzaG93VW51c2VkIixlW2Uuc25pcHBldFN1Z2dlc3Rpb25zPTEwM109InNuaXBwZXRTdWdnZXN0aW9ucyIsZVtlLnNtYXJ0U2VsZWN0PTEwNF09InNtYXJ0U2VsZWN0IixlW2Uuc21vb3RoU2Nyb2xsaW5nPTEwNV09InNtb290aFNjcm9sbGluZyIsZVtlLnN0aWNreVRhYlN0b3BzPTEwNl09InN0aWNreVRhYlN0b3BzIixlW2Uuc3RvcFJlbmRlcmluZ0xpbmVBZnRlcj0xMDddPSJzdG9wUmVuZGVyaW5nTGluZUFmdGVyIixlW2Uuc3VnZ2VzdD0xMDhdPSJzdWdnZXN0IixlW2Uuc3VnZ2VzdEZvbnRTaXplPTEwOV09InN1Z2dlc3RGb250U2l6ZSIsZVtlLnN1Z2dlc3RMaW5lSGVpZ2h0PTExMF09InN1Z2dlc3RMaW5lSGVpZ2h0IixlW2Uuc3VnZ2VzdE9uVHJpZ2dlckNoYXJhY3RlcnM9MTExXT0ic3VnZ2VzdE9uVHJpZ2dlckNoYXJhY3RlcnMiLGVbZS5zdWdnZXN0U2VsZWN0aW9uPTExMl09InN1Z2dlc3RTZWxlY3Rpb24iLGVbZS50YWJDb21wbGV0aW9uPTExM109InRhYkNvbXBsZXRpb24iLGVbZS50YWJJbmRleD0xMTRdPSJ0YWJJbmRleCIsZVtlLnVuaWNvZGVIaWdobGlnaHRpbmc9MTE1XT0idW5pY29kZUhpZ2hsaWdodGluZyIsZVtlLnVudXN1YWxMaW5lVGVybWluYXRvcnM9MTE2XT0idW51c3VhbExpbmVUZXJtaW5hdG9ycyIsZVtlLnVzZVNoYWRvd0RPTT0xMTddPSJ1c2VTaGFkb3dET00iLGVbZS51c2VUYWJTdG9wcz0xMThdPSJ1c2VUYWJTdG9wcyIsZVtlLndvcmRTZXBhcmF0b3JzPTExOV09IndvcmRTZXBhcmF0b3JzIixlW2Uud29yZFdyYXA9MTIwXT0id29yZFdyYXAiLGVbZS53b3JkV3JhcEJyZWFrQWZ0ZXJDaGFyYWN0ZXJzPTEyMV09IndvcmRXcmFwQnJlYWtBZnRlckNoYXJhY3RlcnMiLGVbZS53b3JkV3JhcEJyZWFrQmVmb3JlQ2hhcmFjdGVycz0xMjJdPSJ3b3JkV3JhcEJyZWFrQmVmb3JlQ2hhcmFjdGVycyIsZVtlLndvcmRXcmFwQ29sdW1uPTEyM109IndvcmRXcmFwQ29sdW1uIixlW2Uud29yZFdyYXBPdmVycmlkZTE9MTI0XT0id29yZFdyYXBPdmVycmlkZTEiLGVbZS53b3JkV3JhcE92ZXJyaWRlMj0xMjVdPSJ3b3JkV3JhcE92ZXJyaWRlMiIsZVtlLndyYXBwaW5nSW5kZW50PTEyNl09IndyYXBwaW5nSW5kZW50IixlW2Uud3JhcHBpbmdTdHJhdGVneT0xMjddPSJ3cmFwcGluZ1N0cmF0ZWd5IixlW2Uuc2hvd0RlcHJlY2F0ZWQ9MTI4XT0ic2hvd0RlcHJlY2F0ZWQiLGVbZS5pbmxheUhpbnRzPTEyOV09ImlubGF5SGludHMiLGVbZS5lZGl0b3JDbGFzc05hbWU9MTMwXT0iZWRpdG9yQ2xhc3NOYW1lIixlW2UucGl4ZWxSYXRpbz0xMzFdPSJwaXhlbFJhdGlvIixlW2UudGFiRm9jdXNNb2RlPTEzMl09InRhYkZvY3VzTW9kZSIsZVtlLmxheW91dEluZm89MTMzXT0ibGF5b3V0SW5mbyIsZVtlLndyYXBwaW5nSW5mbz0xMzRdPSJ3cmFwcGluZ0luZm8ifShvbnx8KG9uPXt9KSksZnVuY3Rpb24oZSl7ZVtlLlRleHREZWZpbmVkPTBdPSJUZXh0RGVmaW5lZCIsZVtlLkxGPTFdPSJMRiIsZVtlLkNSTEY9Ml09IkNSTEYifShzbnx8KHNuPXt9KSksZnVuY3Rpb24oZSl7ZVtlLkxGPTBdPSJMRiIsZVtlLkNSTEY9MV09IkNSTEYifShsbnx8KGxuPXt9KSksZnVuY3Rpb24oZSl7ZVtlLk5vbmU9MF09Ik5vbmUiLGVbZS5JbmRlbnQ9MV09IkluZGVudCIsZVtlLkluZGVudE91dGRlbnQ9Ml09IkluZGVudE91dGRlbnQiLGVbZS5PdXRkZW50PTNdPSJPdXRkZW50In0oY258fChjbj17fSkpLGZ1bmN0aW9uKGUpe2VbZS5Cb3RoPTBdPSJCb3RoIixlW2UuUmlnaHQ9MV09IlJpZ2h0IixlW2UuTGVmdD0yXT0iTGVmdCIsZVtlLk5vbmU9M109Ik5vbmUifShobnx8KGhuPXt9KSksZnVuY3Rpb24oZSl7ZVtlLlR5cGU9MV09IlR5cGUiLGVbZS5QYXJhbWV0ZXI9Ml09IlBhcmFtZXRlciJ9KGRufHwoZG49e30pKSxmdW5jdGlvbihlKXtlW2UuQXV0b21hdGljPTBdPSJBdXRvbWF0aWMiLGVbZS5FeHBsaWNpdD0xXT0iRXhwbGljaXQifSh1bnx8KHVuPXt9KSksZnVuY3Rpb24oZSl7ZVtlLkRlcGVuZHNPbktiTGF5b3V0PS0xXT0iRGVwZW5kc09uS2JMYXlvdXQiLGVbZS5Vbmtub3duPTBdPSJVbmtub3duIixlW2UuQmFja3NwYWNlPTFdPSJCYWNrc3BhY2UiLGVbZS5UYWI9Ml09IlRhYiIsZVtlLkVudGVyPTNdPSJFbnRlciIsZVtlLlNoaWZ0PTRdPSJTaGlmdCIsZVtlLkN0cmw9NV09IkN0cmwiLGVbZS5BbHQ9Nl09IkFsdCIsZVtlLlBhdXNlQnJlYWs9N109IlBhdXNlQnJlYWsiLGVbZS5DYXBzTG9jaz04XT0iQ2Fwc0xvY2siLGVbZS5Fc2NhcGU9OV09IkVzY2FwZSIsZVtlLlNwYWNlPTEwXT0iU3BhY2UiLGVbZS5QYWdlVXA9MTFdPSJQYWdlVXAiLGVbZS5QYWdlRG93bj0xMl09IlBhZ2VEb3duIixlW2UuRW5kPTEzXT0iRW5kIixlW2UuSG9tZT0xNF09IkhvbWUiLGVbZS5MZWZ0QXJyb3c9MTVdPSJMZWZ0QXJyb3ciLGVbZS5VcEFycm93PTE2XT0iVXBBcnJvdyIsZVtlLlJpZ2h0QXJyb3c9MTddPSJSaWdodEFycm93IixlW2UuRG93bkFycm93PTE4XT0iRG93bkFycm93IixlW2UuSW5zZXJ0PTE5XT0iSW5zZXJ0IixlW2UuRGVsZXRlPTIwXT0iRGVsZXRlIixlW2UuRGlnaXQwPTIxXT0iRGlnaXQwIixlW2UuRGlnaXQxPTIyXT0iRGlnaXQxIixlW2UuRGlnaXQyPTIzXT0iRGlnaXQyIixlW2UuRGlnaXQzPTI0XT0iRGlnaXQzIixlW2UuRGlnaXQ0PTI1XT0iRGlnaXQ0IixlW2UuRGlnaXQ1PTI2XT0iRGlnaXQ1IixlW2UuRGlnaXQ2PTI3XT0iRGlnaXQ2IixlW2UuRGlnaXQ3PTI4XT0iRGlnaXQ3IixlW2UuRGlnaXQ4PTI5XT0iRGlnaXQ4IixlW2UuRGlnaXQ5PTMwXT0iRGlnaXQ5IixlW2UuS2V5QT0zMV09IktleUEiLGVbZS5LZXlCPTMyXT0iS2V5QiIsZVtlLktleUM9MzNdPSJLZXlDIixlW2UuS2V5RD0zNF09IktleUQiLGVbZS5LZXlFPTM1XT0iS2V5RSIsZVtlLktleUY9MzZdPSJLZXlGIixlW2UuS2V5Rz0zN109IktleUciLGVbZS5LZXlIPTM4XT0iS2V5SCIsZVtlLktleUk9MzldPSJLZXlJIixlW2UuS2V5Sj00MF09IktleUoiLGVbZS5LZXlLPTQxXT0iS2V5SyIsZVtlLktleUw9NDJdPSJLZXlMIixlW2UuS2V5TT00M109IktleU0iLGVbZS5LZXlOPTQ0XT0iS2V5TiIsZVtlLktleU89NDVdPSJLZXlPIixlW2UuS2V5UD00Nl09IktleVAiLGVbZS5LZXlRPTQ3XT0iS2V5USIsZVtlLktleVI9NDhdPSJLZXlSIixlW2UuS2V5Uz00OV09IktleVMiLGVbZS5LZXlUPTUwXT0iS2V5VCIsZVtlLktleVU9NTFdPSJLZXlVIixlW2UuS2V5Vj01Ml09IktleVYiLGVbZS5LZXlXPTUzXT0iS2V5VyIsZVtlLktleVg9NTRdPSJLZXlYIixlW2UuS2V5WT01NV09IktleVkiLGVbZS5LZXlaPTU2XT0iS2V5WiIsZVtlLk1ldGE9NTddPSJNZXRhIixlW2UuQ29udGV4dE1lbnU9NThdPSJDb250ZXh0TWVudSIsZVtlLkYxPTU5XT0iRjEiLGVbZS5GMj02MF09IkYyIixlW2UuRjM9NjFdPSJGMyIsZVtlLkY0PTYyXT0iRjQiLGVbZS5GNT02M109IkY1IixlW2UuRjY9NjRdPSJGNiIsZVtlLkY3PTY1XT0iRjciLGVbZS5GOD02Nl09IkY4IixlW2UuRjk9NjddPSJGOSIsZVtlLkYxMD02OF09IkYxMCIsZVtlLkYxMT02OV09IkYxMSIsZVtlLkYxMj03MF09IkYxMiIsZVtlLkYxMz03MV09IkYxMyIsZVtlLkYxND03Ml09IkYxNCIsZVtlLkYxNT03M109IkYxNSIsZVtlLkYxNj03NF09IkYxNiIsZVtlLkYxNz03NV09IkYxNyIsZVtlLkYxOD03Nl09IkYxOCIsZVtlLkYxOT03N109IkYxOSIsZVtlLk51bUxvY2s9NzhdPSJOdW1Mb2NrIixlW2UuU2Nyb2xsTG9jaz03OV09IlNjcm9sbExvY2siLGVbZS5TZW1pY29sb249ODBdPSJTZW1pY29sb24iLGVbZS5FcXVhbD04MV09IkVxdWFsIixlW2UuQ29tbWE9ODJdPSJDb21tYSIsZVtlLk1pbnVzPTgzXT0iTWludXMiLGVbZS5QZXJpb2Q9ODRdPSJQZXJpb2QiLGVbZS5TbGFzaD04NV09IlNsYXNoIixlW2UuQmFja3F1b3RlPTg2XT0iQmFja3F1b3RlIixlW2UuQnJhY2tldExlZnQ9ODddPSJCcmFja2V0TGVmdCIsZVtlLkJhY2tzbGFzaD04OF09IkJhY2tzbGFzaCIsZVtlLkJyYWNrZXRSaWdodD04OV09IkJyYWNrZXRSaWdodCIsZVtlLlF1b3RlPTkwXT0iUXVvdGUiLGVbZS5PRU1fOD05MV09Ik9FTV84IixlW2UuSW50bEJhY2tzbGFzaD05Ml09IkludGxCYWNrc2xhc2giLGVbZS5OdW1wYWQwPTkzXT0iTnVtcGFkMCIsZVtlLk51bXBhZDE9OTRdPSJOdW1wYWQxIixlW2UuTnVtcGFkMj05NV09Ik51bXBhZDIiLGVbZS5OdW1wYWQzPTk2XT0iTnVtcGFkMyIsZVtlLk51bXBhZDQ9OTddPSJOdW1wYWQ0IixlW2UuTnVtcGFkNT05OF09Ik51bXBhZDUiLGVbZS5OdW1wYWQ2PTk5XT0iTnVtcGFkNiIsZVtlLk51bXBhZDc9MTAwXT0iTnVtcGFkNyIsZVtlLk51bXBhZDg9MTAxXT0iTnVtcGFkOCIsZVtlLk51bXBhZDk9MTAyXT0iTnVtcGFkOSIsZVtlLk51bXBhZE11bHRpcGx5PTEwM109Ik51bXBhZE11bHRpcGx5IixlW2UuTnVtcGFkQWRkPTEwNF09Ik51bXBhZEFkZCIsZVtlLk5VTVBBRF9TRVBBUkFUT1I9MTA1XT0iTlVNUEFEX1NFUEFSQVRPUiIsZVtlLk51bXBhZFN1YnRyYWN0PTEwNl09Ik51bXBhZFN1YnRyYWN0IixlW2UuTnVtcGFkRGVjaW1hbD0xMDddPSJOdW1wYWREZWNpbWFsIixlW2UuTnVtcGFkRGl2aWRlPTEwOF09Ik51bXBhZERpdmlkZSIsZVtlLktFWV9JTl9DT01QT1NJVElPTj0xMDldPSJLRVlfSU5fQ09NUE9TSVRJT04iLGVbZS5BQk5UX0MxPTExMF09IkFCTlRfQzEiLGVbZS5BQk5UX0MyPTExMV09IkFCTlRfQzIiLGVbZS5BdWRpb1ZvbHVtZU11dGU9MTEyXT0iQXVkaW9Wb2x1bWVNdXRlIixlW2UuQXVkaW9Wb2x1bWVVcD0xMTNdPSJBdWRpb1ZvbHVtZVVwIixlW2UuQXVkaW9Wb2x1bWVEb3duPTExNF09IkF1ZGlvVm9sdW1lRG93biIsZVtlLkJyb3dzZXJTZWFyY2g9MTE1XT0iQnJvd3NlclNlYXJjaCIsZVtlLkJyb3dzZXJIb21lPTExNl09IkJyb3dzZXJIb21lIixlW2UuQnJvd3NlckJhY2s9MTE3XT0iQnJvd3NlckJhY2siLGVbZS5Ccm93c2VyRm9yd2FyZD0xMThdPSJCcm93c2VyRm9yd2FyZCIsZVtlLk1lZGlhVHJhY2tOZXh0PTExOV09Ik1lZGlhVHJhY2tOZXh0IixlW2UuTWVkaWFUcmFja1ByZXZpb3VzPTEyMF09Ik1lZGlhVHJhY2tQcmV2aW91cyIsZVtlLk1lZGlhU3RvcD0xMjFdPSJNZWRpYVN0b3AiLGVbZS5NZWRpYVBsYXlQYXVzZT0xMjJdPSJNZWRpYVBsYXlQYXVzZSIsZVtlLkxhdW5jaE1lZGlhUGxheWVyPTEyM109IkxhdW5jaE1lZGlhUGxheWVyIixlW2UuTGF1bmNoTWFpbD0xMjRdPSJMYXVuY2hNYWlsIixlW2UuTGF1bmNoQXBwMj0xMjVdPSJMYXVuY2hBcHAyIixlW2UuQ2xlYXI9MTI2XT0iQ2xlYXIiLGVbZS5NQVhfVkFMVUU9MTI3XT0iTUFYX1ZBTFVFIn0ocG58fChwbj17fSkpLGZ1bmN0aW9uKGUpe2VbZS5IaW50PTFdPSJIaW50IixlW2UuSW5mbz0yXT0iSW5mbyIsZVtlLldhcm5pbmc9NF09Ildhcm5pbmciLGVbZS5FcnJvcj04XT0iRXJyb3IifShtbnx8KG1uPXt9KSksZnVuY3Rpb24oZSl7ZVtlLlVubmVjZXNzYXJ5PTFdPSJVbm5lY2Vzc2FyeSIsZVtlLkRlcHJlY2F0ZWQ9Ml09IkRlcHJlY2F0ZWQifShmbnx8KGZuPXt9KSksZnVuY3Rpb24oZSl7ZVtlLklubGluZT0xXT0iSW5saW5lIixlW2UuR3V0dGVyPTJdPSJHdXR0ZXIifShnbnx8KGduPXt9KSksZnVuY3Rpb24oZSl7ZVtlLlVOS05PV049MF09IlVOS05PV04iLGVbZS5URVhUQVJFQT0xXT0iVEVYVEFSRUEiLGVbZS5HVVRURVJfR0xZUEhfTUFSR0lOPTJdPSJHVVRURVJfR0xZUEhfTUFSR0lOIixlW2UuR1VUVEVSX0xJTkVfTlVNQkVSUz0zXT0iR1VUVEVSX0xJTkVfTlVNQkVSUyIsZVtlLkdVVFRFUl9MSU5FX0RFQ09SQVRJT05TPTRdPSJHVVRURVJfTElORV9ERUNPUkFUSU9OUyIsZVtlLkdVVFRFUl9WSUVXX1pPTkU9NV09IkdVVFRFUl9WSUVXX1pPTkUiLGVbZS5DT05URU5UX1RFWFQ9Nl09IkNPTlRFTlRfVEVYVCIsZVtlLkNPTlRFTlRfRU1QVFk9N109IkNPTlRFTlRfRU1QVFkiLGVbZS5DT05URU5UX1ZJRVdfWk9ORT04XT0iQ09OVEVOVF9WSUVXX1pPTkUiLGVbZS5DT05URU5UX1dJREdFVD05XT0iQ09OVEVOVF9XSURHRVQiLGVbZS5PVkVSVklFV19SVUxFUj0xMF09Ik9WRVJWSUVXX1JVTEVSIixlW2UuU0NST0xMQkFSPTExXT0iU0NST0xMQkFSIixlW2UuT1ZFUkxBWV9XSURHRVQ9MTJdPSJPVkVSTEFZX1dJREdFVCIsZVtlLk9VVFNJREVfRURJVE9SPTEzXT0iT1VUU0lERV9FRElUT1IifShibnx8KGJuPXt9KSksZnVuY3Rpb24oZSl7ZVtlLlRPUF9SSUdIVF9DT1JORVI9MF09IlRPUF9SSUdIVF9DT1JORVIiLGVbZS5CT1RUT01fUklHSFRfQ09STkVSPTFdPSJCT1RUT01fUklHSFRfQ09STkVSIixlW2UuVE9QX0NFTlRFUj0yXT0iVE9QX0NFTlRFUiJ9KHdufHwod249e30pKSxmdW5jdGlvbihlKXtlW2UuTGVmdD0xXT0iTGVmdCIsZVtlLkNlbnRlcj0yXT0iQ2VudGVyIixlW2UuUmlnaHQ9NF09IlJpZ2h0IixlW2UuRnVsbD03XT0iRnVsbCJ9KF9ufHwoX249e30pKSxmdW5jdGlvbihlKXtlW2UuTGVmdD0wXT0iTGVmdCIsZVtlLlJpZ2h0PTFdPSJSaWdodCIsZVtlLk5vbmU9Ml09Ik5vbmUiLGVbZS5MZWZ0T2ZJbmplY3RlZFRleHQ9M109IkxlZnRPZkluamVjdGVkVGV4dCIsZVtlLlJpZ2h0T2ZJbmplY3RlZFRleHQ9NF09IlJpZ2h0T2ZJbmplY3RlZFRleHQifSh2bnx8KHZuPXt9KSksZnVuY3Rpb24oZSl7ZVtlLk9mZj0wXT0iT2ZmIixlW2UuT249MV09Ik9uIixlW2UuUmVsYXRpdmU9Ml09IlJlbGF0aXZlIixlW2UuSW50ZXJ2YWw9M109IkludGVydmFsIixlW2UuQ3VzdG9tPTRdPSJDdXN0b20ifSh5bnx8KHluPXt9KSksZnVuY3Rpb24oZSl7ZVtlLk5vbmU9MF09Ik5vbmUiLGVbZS5UZXh0PTFdPSJUZXh0IixlW2UuQmxvY2tzPTJdPSJCbG9ja3MifShUbnx8KFRuPXt9KSksZnVuY3Rpb24oZSl7ZVtlLlNtb290aD0wXT0iU21vb3RoIixlW2UuSW1tZWRpYXRlPTFdPSJJbW1lZGlhdGUifShrbnx8KGtuPXt9KSksZnVuY3Rpb24oZSl7ZVtlLkF1dG89MV09IkF1dG8iLGVbZS5IaWRkZW49Ml09IkhpZGRlbiIsZVtlLlZpc2libGU9M109IlZpc2libGUifShTbnx8KFNuPXt9KSksZnVuY3Rpb24oZSl7ZVtlLkxUUj0wXT0iTFRSIixlW2UuUlRMPTFdPSJSVEwifShDbnx8KENuPXt9KSksZnVuY3Rpb24oZSl7ZVtlLkludm9rZT0xXT0iSW52b2tlIixlW2UuVHJpZ2dlckNoYXJhY3Rlcj0yXT0iVHJpZ2dlckNoYXJhY3RlciIsZVtlLkNvbnRlbnRDaGFuZ2U9M109IkNvbnRlbnRDaGFuZ2UifSh4bnx8KHhuPXt9KSksZnVuY3Rpb24oZSl7ZVtlLkZpbGU9MF09IkZpbGUiLGVbZS5Nb2R1bGU9MV09Ik1vZHVsZSIsZVtlLk5hbWVzcGFjZT0yXT0iTmFtZXNwYWNlIixlW2UuUGFja2FnZT0zXT0iUGFja2FnZSIsZVtlLkNsYXNzPTRdPSJDbGFzcyIsZVtlLk1ldGhvZD01XT0iTWV0aG9kIixlW2UuUHJvcGVydHk9Nl09IlByb3BlcnR5IixlW2UuRmllbGQ9N109IkZpZWxkIixlW2UuQ29uc3RydWN0b3I9OF09IkNvbnN0cnVjdG9yIixlW2UuRW51bT05XT0iRW51bSIsZVtlLkludGVyZmFjZT0xMF09IkludGVyZmFjZSIsZVtlLkZ1bmN0aW9uPTExXT0iRnVuY3Rpb24iLGVbZS5WYXJpYWJsZT0xMl09IlZhcmlhYmxlIixlW2UuQ29uc3RhbnQ9MTNdPSJDb25zdGFudCIsZVtlLlN0cmluZz0xNF09IlN0cmluZyIsZVtlLk51bWJlcj0xNV09Ik51bWJlciIsZVtlLkJvb2xlYW49MTZdPSJCb29sZWFuIixlW2UuQXJyYXk9MTddPSJBcnJheSIsZVtlLk9iamVjdD0xOF09Ik9iamVjdCIsZVtlLktleT0xOV09IktleSIsZVtlLk51bGw9MjBdPSJOdWxsIixlW2UuRW51bU1lbWJlcj0yMV09IkVudW1NZW1iZXIiLGVbZS5TdHJ1Y3Q9MjJdPSJTdHJ1Y3QiLGVbZS5FdmVudD0yM109IkV2ZW50IixlW2UuT3BlcmF0b3I9MjRdPSJPcGVyYXRvciIsZVtlLlR5cGVQYXJhbWV0ZXI9MjVdPSJUeXBlUGFyYW1ldGVyIn0oTG58fChMbj17fSkpLGZ1bmN0aW9uKGUpe2VbZS5EZXByZWNhdGVkPTFdPSJEZXByZWNhdGVkIn0oRW58fChFbj17fSkpLGZ1bmN0aW9uKGUpe2VbZS5IaWRkZW49MF09IkhpZGRlbiIsZVtlLkJsaW5rPTFdPSJCbGluayIsZVtlLlNtb290aD0yXT0iU21vb3RoIixlW2UuUGhhc2U9M109IlBoYXNlIixlW2UuRXhwYW5kPTRdPSJFeHBhbmQiLGVbZS5Tb2xpZD01XT0iU29saWQifShBbnx8KEFuPXt9KSksZnVuY3Rpb24oZSl7ZVtlLkxpbmU9MV09IkxpbmUiLGVbZS5CbG9jaz0yXT0iQmxvY2siLGVbZS5VbmRlcmxpbmU9M109IlVuZGVybGluZSIsZVtlLkxpbmVUaGluPTRdPSJMaW5lVGhpbiIsZVtlLkJsb2NrT3V0bGluZT01XT0iQmxvY2tPdXRsaW5lIixlW2UuVW5kZXJsaW5lVGhpbj02XT0iVW5kZXJsaW5lVGhpbiJ9KE1ufHwoTW49e30pKSxmdW5jdGlvbihlKXtlW2UuQWx3YXlzR3Jvd3NXaGVuVHlwaW5nQXRFZGdlcz0wXT0iQWx3YXlzR3Jvd3NXaGVuVHlwaW5nQXRFZGdlcyIsZVtlLk5ldmVyR3Jvd3NXaGVuVHlwaW5nQXRFZGdlcz0xXT0iTmV2ZXJHcm93c1doZW5UeXBpbmdBdEVkZ2VzIixlW2UuR3Jvd3NPbmx5V2hlblR5cGluZ0JlZm9yZT0yXT0iR3Jvd3NPbmx5V2hlblR5cGluZ0JlZm9yZSIsZVtlLkdyb3dzT25seVdoZW5UeXBpbmdBZnRlcj0zXT0iR3Jvd3NPbmx5V2hlblR5cGluZ0FmdGVyIn0oUm58fChSbj17fSkpLGZ1bmN0aW9uKGUpe2VbZS5Ob25lPTBdPSJOb25lIixlW2UuU2FtZT0xXT0iU2FtZSIsZVtlLkluZGVudD0yXT0iSW5kZW50IixlW2UuRGVlcEluZGVudD0zXT0iRGVlcEluZGVudCJ9KElufHwoSW49e30pKTtjbGFzcyBPbntzdGF0aWMgY2hvcmQoZSx0KXtyZXR1cm4gZnVuY3Rpb24oZSx0KXtyZXR1cm4oZXwoNjU1MzUmdCk8PDE2Pj4+MCk+Pj4wfShlLHQpfX1mdW5jdGlvbiBQbihlLHQsbixyLGkpe3JldHVybiBmdW5jdGlvbihlLHQsbixyLGkpe2lmKDA9PT1yKXJldHVybiEwO2NvbnN0IGE9dC5jaGFyQ29kZUF0KHItMSk7aWYoMCE9PWUuZ2V0KGEpKXJldHVybiEwO2lmKDEzPT09YXx8MTA9PT1hKXJldHVybiEwO2lmKGk+MCl7Y29uc3Qgbj10LmNoYXJDb2RlQXQocik7aWYoMCE9PWUuZ2V0KG4pKXJldHVybiEwfXJldHVybiExfShlLHQsMCxyLGkpJiZmdW5jdGlvbihlLHQsbixyLGkpe2lmKHIraT09PW4pcmV0dXJuITA7Y29uc3QgYT10LmNoYXJDb2RlQXQocitpKTtpZigwIT09ZS5nZXQoYSkpcmV0dXJuITA7aWYoMTM9PT1hfHwxMD09PWEpcmV0dXJuITA7aWYoaT4wKXtjb25zdCBuPXQuY2hhckNvZGVBdChyK2ktMSk7aWYoMCE9PWUuZ2V0KG4pKXJldHVybiEwfXJldHVybiExfShlLHQsbixyLGkpfU9uLkN0cmxDbWQ9MjA0OCxPbi5TaGlmdD0xMDI0LE9uLkFsdD01MTIsT24uV2luQ3RybD0yNTYsZnVuY3Rpb24oZSl7ZVtlLkxlZnQ9MV09IkxlZnQiLGVbZS5DZW50ZXI9Ml09IkNlbnRlciIsZVtlLlJpZ2h0PTRdPSJSaWdodCIsZVtlLkZ1bGw9N109IkZ1bGwifShObnx8KE5uPXt9KSksZnVuY3Rpb24oZSl7ZVtlLklubGluZT0xXT0iSW5saW5lIixlW2UuR3V0dGVyPTJdPSJHdXR0ZXIifShVbnx8KFVuPXt9KSksZnVuY3Rpb24oZSl7ZVtlLkJvdGg9MF09IkJvdGgiLGVbZS5SaWdodD0xXT0iUmlnaHQiLGVbZS5MZWZ0PTJdPSJMZWZ0IixlW2UuTm9uZT0zXT0iTm9uZSJ9KEhufHwoSG49e30pKTtjbGFzcyBxbntjb25zdHJ1Y3RvcihlLHQpe3RoaXMuX3dvcmRTZXBhcmF0b3JzPWUsdGhpcy5fc2VhcmNoUmVnZXg9dCx0aGlzLl9wcmV2TWF0Y2hTdGFydEluZGV4PS0xLHRoaXMuX3ByZXZNYXRjaExlbmd0aD0wfXJlc2V0KGUpe3RoaXMuX3NlYXJjaFJlZ2V4Lmxhc3RJbmRleD1lLHRoaXMuX3ByZXZNYXRjaFN0YXJ0SW5kZXg9LTEsdGhpcy5fcHJldk1hdGNoTGVuZ3RoPTB9bmV4dChlKXtjb25zdCB0PWUubGVuZ3RoO2xldCBuO2Rve2lmKHRoaXMuX3ByZXZNYXRjaFN0YXJ0SW5kZXgrdGhpcy5fcHJldk1hdGNoTGVuZ3RoPT09dClyZXR1cm4gbnVsbDtpZihuPXRoaXMuX3NlYXJjaFJlZ2V4LmV4ZWMoZSksIW4pcmV0dXJuIG51bGw7Y29uc3Qgcj1uLmluZGV4LGk9blswXS5sZW5ndGg7aWYocj09PXRoaXMuX3ByZXZNYXRjaFN0YXJ0SW5kZXgmJmk9PT10aGlzLl9wcmV2TWF0Y2hMZW5ndGgpe2lmKDA9PT1pKXtYKGUsdCx0aGlzLl9zZWFyY2hSZWdleC5sYXN0SW5kZXgpPjY1NTM1P3RoaXMuX3NlYXJjaFJlZ2V4Lmxhc3RJbmRleCs9Mjp0aGlzLl9zZWFyY2hSZWdleC5sYXN0SW5kZXgrPTE7Y29udGludWV9cmV0dXJuIG51bGx9aWYodGhpcy5fcHJldk1hdGNoU3RhcnRJbmRleD1yLHRoaXMuX3ByZXZNYXRjaExlbmd0aD1pLCF0aGlzLl93b3JkU2VwYXJhdG9yc3x8UG4odGhpcy5fd29yZFNlcGFyYXRvcnMsZSx0LHIsaSkpcmV0dXJuIG59d2hpbGUobik7cmV0dXJuIG51bGx9fWNsYXNzIEZue2NvbnN0cnVjdG9yKGUpe3RoaXMub3B0aW9ucz1lLHRoaXMuYWxsb3dlZENvZGVQb2ludHM9bmV3IFNldChlLmFsbG93ZWRDb2RlUG9pbnRzKSx0aGlzLmFtYmlndW91c0NoYXJhY3RlcnM9US5nZXRJbnN0YW5jZShuZXcgU2V0KGUuYWxsb3dlZExvY2FsZXMpKX1nZXRDYW5kaWRhdGVDb2RlUG9pbnRzKCl7aWYodGhpcy5vcHRpb25zLm5vbkJhc2ljQVNDSUkpcmV0dXJuImFsbE5vbkJhc2ljQXNjaWkiO2NvbnN0IGU9bmV3IFNldDtpZih0aGlzLm9wdGlvbnMuaW52aXNpYmxlQ2hhcmFjdGVycylmb3IoY29uc3QgdCBvZiBaLmNvZGVQb2ludHMpVm4oU3RyaW5nLmZyb21Db2RlUG9pbnQodCkpfHxlLmFkZCh0KTtpZih0aGlzLm9wdGlvbnMuYW1iaWd1b3VzQ2hhcmFjdGVycylmb3IoY29uc3QgdCBvZiB0aGlzLmFtYmlndW91c0NoYXJhY3RlcnMuZ2V0Q29uZnVzYWJsZUNvZGVQb2ludHMoKSllLmFkZCh0KTtmb3IoY29uc3QgdCBvZiB0aGlzLmFsbG93ZWRDb2RlUG9pbnRzKWUuZGVsZXRlKHQpO3JldHVybiBlfXNob3VsZEhpZ2hsaWdodE5vbkJhc2ljQVNDSUkoZSx0KXtjb25zdCBuPWUuY29kZVBvaW50QXQoMCk7aWYodGhpcy5hbGxvd2VkQ29kZVBvaW50cy5oYXMobikpcmV0dXJuIDA7aWYodGhpcy5vcHRpb25zLm5vbkJhc2ljQVNDSUkpcmV0dXJuIDE7bGV0IHI9ITEsaT0hMTtpZih0KWZvcihjb25zdCBlIG9mIHQpe2NvbnN0IHQ9ZS5jb2RlUG9pbnRBdCgwKSxuPShhPWUsWS50ZXN0KGEpKTtyPXJ8fG4sbnx8dGhpcy5hbWJpZ3VvdXNDaGFyYWN0ZXJzLmlzQW1iaWd1b3VzKHQpfHxaLmlzSW52aXNpYmxlQ2hhcmFjdGVyKHQpfHwoaT0hMCl9dmFyIGE7cmV0dXJuIXImJmk/MDp0aGlzLm9wdGlvbnMuaW52aXNpYmxlQ2hhcmFjdGVycyYmIVZuKGUpJiZaLmlzSW52aXNpYmxlQ2hhcmFjdGVyKG4pPzI6dGhpcy5vcHRpb25zLmFtYmlndW91c0NoYXJhY3RlcnMmJnRoaXMuYW1iaWd1b3VzQ2hhcmFjdGVycy5pc0FtYmlndW91cyhuKT8zOjB9fWZ1bmN0aW9uIFZuKGUpe3JldHVybiIgIj09PWV8fCJcbiI9PT1lfHwiXHQiPT09ZX12YXIgQm49ZnVuY3Rpb24oZSx0LG4scil7cmV0dXJuIG5ldyhufHwobj1Qcm9taXNlKSkoKGZ1bmN0aW9uKGksYSl7ZnVuY3Rpb24gbyhlKXt0cnl7bChyLm5leHQoZSkpfWNhdGNoKGUpe2EoZSl9fWZ1bmN0aW9uIHMoZSl7dHJ5e2woci50aHJvdyhlKSl9Y2F0Y2goZSl7YShlKX19ZnVuY3Rpb24gbChlKXt2YXIgdDtlLmRvbmU/aShlLnZhbHVlKToodD1lLnZhbHVlLHQgaW5zdGFuY2VvZiBuP3Q6bmV3IG4oKGZ1bmN0aW9uKGUpe2UodCl9KSkpLnRoZW4obyxzKX1sKChyPXIuYXBwbHkoZSx0fHxbXSkpLm5leHQoKSl9KSl9O2NsYXNzIEtuIGV4dGVuZHMgY2xhc3N7Y29uc3RydWN0b3IoZSx0LG4scil7dGhpcy5fdXJpPWUsdGhpcy5fbGluZXM9dCx0aGlzLl9lb2w9bix0aGlzLl92ZXJzaW9uSWQ9cix0aGlzLl9saW5lU3RhcnRzPW51bGwsdGhpcy5fY2FjaGVkVGV4dFZhbHVlPW51bGx9ZGlzcG9zZSgpe3RoaXMuX2xpbmVzLmxlbmd0aD0wfWdldCB2ZXJzaW9uKCl7cmV0dXJuIHRoaXMuX3ZlcnNpb25JZH1nZXRUZXh0KCl7cmV0dXJuIG51bGw9PT10aGlzLl9jYWNoZWRUZXh0VmFsdWUmJih0aGlzLl9jYWNoZWRUZXh0VmFsdWU9dGhpcy5fbGluZXMuam9pbih0aGlzLl9lb2wpKSx0aGlzLl9jYWNoZWRUZXh0VmFsdWV9b25FdmVudHMoZSl7ZS5lb2wmJmUuZW9sIT09dGhpcy5fZW9sJiYodGhpcy5fZW9sPWUuZW9sLHRoaXMuX2xpbmVTdGFydHM9bnVsbCk7Y29uc3QgdD1lLmNoYW5nZXM7Zm9yKGNvbnN0IGUgb2YgdCl0aGlzLl9hY2NlcHREZWxldGVSYW5nZShlLnJhbmdlKSx0aGlzLl9hY2NlcHRJbnNlcnRUZXh0KG5ldyBaZShlLnJhbmdlLnN0YXJ0TGluZU51bWJlcixlLnJhbmdlLnN0YXJ0Q29sdW1uKSxlLnRleHQpO3RoaXMuX3ZlcnNpb25JZD1lLnZlcnNpb25JZCx0aGlzLl9jYWNoZWRUZXh0VmFsdWU9bnVsbH1fZW5zdXJlTGluZVN0YXJ0cygpe2lmKCF0aGlzLl9saW5lU3RhcnRzKXtjb25zdCBlPXRoaXMuX2VvbC5sZW5ndGgsdD10aGlzLl9saW5lcy5sZW5ndGgsbj1uZXcgVWludDMyQXJyYXkodCk7Zm9yKGxldCByPTA7cjx0O3IrKyluW3JdPXRoaXMuX2xpbmVzW3JdLmxlbmd0aCtlO3RoaXMuX2xpbmVTdGFydHM9bmV3IHB0KG4pfX1fc2V0TGluZVRleHQoZSx0KXt0aGlzLl9saW5lc1tlXT10LHRoaXMuX2xpbmVTdGFydHMmJnRoaXMuX2xpbmVTdGFydHMuc2V0VmFsdWUoZSx0aGlzLl9saW5lc1tlXS5sZW5ndGgrdGhpcy5fZW9sLmxlbmd0aCl9X2FjY2VwdERlbGV0ZVJhbmdlKGUpe2lmKGUuc3RhcnRMaW5lTnVtYmVyIT09ZS5lbmRMaW5lTnVtYmVyKXRoaXMuX3NldExpbmVUZXh0KGUuc3RhcnRMaW5lTnVtYmVyLTEsdGhpcy5fbGluZXNbZS5zdGFydExpbmVOdW1iZXItMV0uc3Vic3RyaW5nKDAsZS5zdGFydENvbHVtbi0xKSt0aGlzLl9saW5lc1tlLmVuZExpbmVOdW1iZXItMV0uc3Vic3RyaW5nKGUuZW5kQ29sdW1uLTEpKSx0aGlzLl9saW5lcy5zcGxpY2UoZS5zdGFydExpbmVOdW1iZXIsZS5lbmRMaW5lTnVtYmVyLWUuc3RhcnRMaW5lTnVtYmVyKSx0aGlzLl9saW5lU3RhcnRzJiZ0aGlzLl9saW5lU3RhcnRzLnJlbW92ZVZhbHVlcyhlLnN0YXJ0TGluZU51bWJlcixlLmVuZExpbmVOdW1iZXItZS5zdGFydExpbmVOdW1iZXIpO2Vsc2V7aWYoZS5zdGFydENvbHVtbj09PWUuZW5kQ29sdW1uKXJldHVybjt0aGlzLl9zZXRMaW5lVGV4dChlLnN0YXJ0TGluZU51bWJlci0xLHRoaXMuX2xpbmVzW2Uuc3RhcnRMaW5lTnVtYmVyLTFdLnN1YnN0cmluZygwLGUuc3RhcnRDb2x1bW4tMSkrdGhpcy5fbGluZXNbZS5zdGFydExpbmVOdW1iZXItMV0uc3Vic3RyaW5nKGUuZW5kQ29sdW1uLTEpKX19X2FjY2VwdEluc2VydFRleHQoZSx0KXtpZigwPT09dC5sZW5ndGgpcmV0dXJuO2NvbnN0IG49dC5zcGxpdCgvXHJcbnxccnxcbi8pO2lmKDE9PT1uLmxlbmd0aClyZXR1cm4gdm9pZCB0aGlzLl9zZXRMaW5lVGV4dChlLmxpbmVOdW1iZXItMSx0aGlzLl9saW5lc1tlLmxpbmVOdW1iZXItMV0uc3Vic3RyaW5nKDAsZS5jb2x1bW4tMSkrblswXSt0aGlzLl9saW5lc1tlLmxpbmVOdW1iZXItMV0uc3Vic3RyaW5nKGUuY29sdW1uLTEpKTtuW24ubGVuZ3RoLTFdKz10aGlzLl9saW5lc1tlLmxpbmVOdW1iZXItMV0uc3Vic3RyaW5nKGUuY29sdW1uLTEpLHRoaXMuX3NldExpbmVUZXh0KGUubGluZU51bWJlci0xLHRoaXMuX2xpbmVzW2UubGluZU51bWJlci0xXS5zdWJzdHJpbmcoMCxlLmNvbHVtbi0xKStuWzBdKTtjb25zdCByPW5ldyBVaW50MzJBcnJheShuLmxlbmd0aC0xKTtmb3IobGV0IHQ9MTt0PG4ubGVuZ3RoO3QrKyl0aGlzLl9saW5lcy5zcGxpY2UoZS5saW5lTnVtYmVyK3QtMSwwLG5bdF0pLHJbdC0xXT1uW3RdLmxlbmd0aCt0aGlzLl9lb2wubGVuZ3RoO3RoaXMuX2xpbmVTdGFydHMmJnRoaXMuX2xpbmVTdGFydHMuaW5zZXJ0VmFsdWVzKGUubGluZU51bWJlcixyKX19e2dldCB1cmkoKXtyZXR1cm4gdGhpcy5fdXJpfWdldCBlb2woKXtyZXR1cm4gdGhpcy5fZW9sfWdldFZhbHVlKCl7cmV0dXJuIHRoaXMuZ2V0VGV4dCgpfWdldExpbmVzQ29udGVudCgpe3JldHVybiB0aGlzLl9saW5lcy5zbGljZSgwKX1nZXRMaW5lQ291bnQoKXtyZXR1cm4gdGhpcy5fbGluZXMubGVuZ3RofWdldExpbmVDb250ZW50KGUpe3JldHVybiB0aGlzLl9saW5lc1tlLTFdfWdldFdvcmRBdFBvc2l0aW9uKGUsdCl7Y29uc3Qgbj1idChlLmNvbHVtbixmdW5jdGlvbihlKXtsZXQgdD1mdDtpZihlJiZlIGluc3RhbmNlb2YgUmVnRXhwKWlmKGUuZ2xvYmFsKXQ9ZTtlbHNle2xldCBuPSJnIjtlLmlnbm9yZUNhc2UmJihuKz0iaSIpLGUubXVsdGlsaW5lJiYobis9Im0iKSxlLnVuaWNvZGUmJihuKz0idSIpLHQ9bmV3IFJlZ0V4cChlLnNvdXJjZSxuKX1yZXR1cm4gdC5sYXN0SW5kZXg9MCx0fSh0KSx0aGlzLl9saW5lc1tlLmxpbmVOdW1iZXItMV0sMCk7cmV0dXJuIG4/bmV3IGV0KGUubGluZU51bWJlcixuLnN0YXJ0Q29sdW1uLGUubGluZU51bWJlcixuLmVuZENvbHVtbik6bnVsbH13b3JkcyhlKXtjb25zdCB0PXRoaXMuX2xpbmVzLG49dGhpcy5fd29yZGVuaXplLmJpbmQodGhpcyk7bGV0IHI9MCxpPSIiLGE9MCxvPVtdO3JldHVybnsqW1N5bWJvbC5pdGVyYXRvcl0oKXtmb3IoOzspaWYoYTxvLmxlbmd0aCl7Y29uc3QgZT1pLnN1YnN0cmluZyhvW2FdLnN0YXJ0LG9bYV0uZW5kKTthKz0xLHlpZWxkIGV9ZWxzZXtpZighKHI8dC5sZW5ndGgpKWJyZWFrO2k9dFtyXSxvPW4oaSxlKSxhPTAscis9MX19fX1nZXRMaW5lV29yZHMoZSx0KXtjb25zdCBuPXRoaXMuX2xpbmVzW2UtMV0scj10aGlzLl93b3JkZW5pemUobix0KSxpPVtdO2Zvcihjb25zdCBlIG9mIHIpaS5wdXNoKHt3b3JkOm4uc3Vic3RyaW5nKGUuc3RhcnQsZS5lbmQpLHN0YXJ0Q29sdW1uOmUuc3RhcnQrMSxlbmRDb2x1bW46ZS5lbmQrMX0pO3JldHVybiBpfV93b3JkZW5pemUoZSx0KXtjb25zdCBuPVtdO2xldCByO2Zvcih0Lmxhc3RJbmRleD0wOyhyPXQuZXhlYyhlKSkmJjAhPT1yWzBdLmxlbmd0aDspbi5wdXNoKHtzdGFydDpyLmluZGV4LGVuZDpyLmluZGV4K3JbMF0ubGVuZ3RofSk7cmV0dXJuIG59Z2V0VmFsdWVJblJhbmdlKGUpe2lmKChlPXRoaXMuX3ZhbGlkYXRlUmFuZ2UoZSkpLnN0YXJ0TGluZU51bWJlcj09PWUuZW5kTGluZU51bWJlcilyZXR1cm4gdGhpcy5fbGluZXNbZS5zdGFydExpbmVOdW1iZXItMV0uc3Vic3RyaW5nKGUuc3RhcnRDb2x1bW4tMSxlLmVuZENvbHVtbi0xKTtjb25zdCB0PXRoaXMuX2VvbCxuPWUuc3RhcnRMaW5lTnVtYmVyLTEscj1lLmVuZExpbmVOdW1iZXItMSxpPVtdO2kucHVzaCh0aGlzLl9saW5lc1tuXS5zdWJzdHJpbmcoZS5zdGFydENvbHVtbi0xKSk7Zm9yKGxldCBlPW4rMTtlPHI7ZSsrKWkucHVzaCh0aGlzLl9saW5lc1tlXSk7cmV0dXJuIGkucHVzaCh0aGlzLl9saW5lc1tyXS5zdWJzdHJpbmcoMCxlLmVuZENvbHVtbi0xKSksaS5qb2luKHQpfW9mZnNldEF0KGUpe3JldHVybiBlPXRoaXMuX3ZhbGlkYXRlUG9zaXRpb24oZSksdGhpcy5fZW5zdXJlTGluZVN0YXJ0cygpLHRoaXMuX2xpbmVTdGFydHMuZ2V0UHJlZml4U3VtKGUubGluZU51bWJlci0yKSsoZS5jb2x1bW4tMSl9cG9zaXRpb25BdChlKXtlPU1hdGguZmxvb3IoZSksZT1NYXRoLm1heCgwLGUpLHRoaXMuX2Vuc3VyZUxpbmVTdGFydHMoKTtjb25zdCB0PXRoaXMuX2xpbmVTdGFydHMuZ2V0SW5kZXhPZihlKSxuPXRoaXMuX2xpbmVzW3QuaW5kZXhdLmxlbmd0aDtyZXR1cm57bGluZU51bWJlcjoxK3QuaW5kZXgsY29sdW1uOjErTWF0aC5taW4odC5yZW1haW5kZXIsbil9fV92YWxpZGF0ZVJhbmdlKGUpe2NvbnN0IHQ9dGhpcy5fdmFsaWRhdGVQb3NpdGlvbih7bGluZU51bWJlcjplLnN0YXJ0TGluZU51bWJlcixjb2x1bW46ZS5zdGFydENvbHVtbn0pLG49dGhpcy5fdmFsaWRhdGVQb3NpdGlvbih7bGluZU51bWJlcjplLmVuZExpbmVOdW1iZXIsY29sdW1uOmUuZW5kQ29sdW1ufSk7cmV0dXJuIHQubGluZU51bWJlciE9PWUuc3RhcnRMaW5lTnVtYmVyfHx0LmNvbHVtbiE9PWUuc3RhcnRDb2x1bW58fG4ubGluZU51bWJlciE9PWUuZW5kTGluZU51bWJlcnx8bi5jb2x1bW4hPT1lLmVuZENvbHVtbj97c3RhcnRMaW5lTnVtYmVyOnQubGluZU51bWJlcixzdGFydENvbHVtbjp0LmNvbHVtbixlbmRMaW5lTnVtYmVyOm4ubGluZU51bWJlcixlbmRDb2x1bW46bi5jb2x1bW59OmV9X3ZhbGlkYXRlUG9zaXRpb24oZSl7aWYoIVplLmlzSVBvc2l0aW9uKGUpKXRocm93IG5ldyBFcnJvcigiYmFkIHBvc2l0aW9uIik7bGV0e2xpbmVOdW1iZXI6dCxjb2x1bW46bn09ZSxyPSExO2lmKHQ8MSl0PTEsbj0xLHI9ITA7ZWxzZSBpZih0PnRoaXMuX2xpbmVzLmxlbmd0aCl0PXRoaXMuX2xpbmVzLmxlbmd0aCxuPXRoaXMuX2xpbmVzW3QtMV0ubGVuZ3RoKzEscj0hMDtlbHNle2NvbnN0IGU9dGhpcy5fbGluZXNbdC0xXS5sZW5ndGgrMTtuPDE/KG49MSxyPSEwKTpuPmUmJihuPWUscj0hMCl9cmV0dXJuIHI/e2xpbmVOdW1iZXI6dCxjb2x1bW46bn06ZX19Y2xhc3Mgam57Y29uc3RydWN0b3IoZSx0KXt0aGlzLl9ob3N0PWUsdGhpcy5fbW9kZWxzPU9iamVjdC5jcmVhdGUobnVsbCksdGhpcy5fZm9yZWlnbk1vZHVsZUZhY3Rvcnk9dCx0aGlzLl9mb3JlaWduTW9kdWxlPW51bGx9ZGlzcG9zZSgpe3RoaXMuX21vZGVscz1PYmplY3QuY3JlYXRlKG51bGwpfV9nZXRNb2RlbChlKXtyZXR1cm4gdGhpcy5fbW9kZWxzW2VdfV9nZXRNb2RlbHMoKXtjb25zdCBlPVtdO3JldHVybiBPYmplY3Qua2V5cyh0aGlzLl9tb2RlbHMpLmZvckVhY2goKHQ9PmUucHVzaCh0aGlzLl9tb2RlbHNbdF0pKSksZX1hY2NlcHROZXdNb2RlbChlKXt0aGlzLl9tb2RlbHNbZS51cmxdPW5ldyBLbihGZS5wYXJzZShlLnVybCksZS5saW5lcyxlLkVPTCxlLnZlcnNpb25JZCl9YWNjZXB0TW9kZWxDaGFuZ2VkKGUsdCl7aWYoIXRoaXMuX21vZGVsc1tlXSlyZXR1cm47dGhpcy5fbW9kZWxzW2VdLm9uRXZlbnRzKHQpfWFjY2VwdFJlbW92ZWRNb2RlbChlKXt0aGlzLl9tb2RlbHNbZV0mJmRlbGV0ZSB0aGlzLl9tb2RlbHNbZV19Y29tcHV0ZVVuaWNvZGVIaWdobGlnaHRzKGUsdCxuKXtyZXR1cm4gQm4odGhpcyx2b2lkIDAsdm9pZCAwLChmdW5jdGlvbiooKXtjb25zdCByPXRoaXMuX2dldE1vZGVsKGUpO3JldHVybiByP2NsYXNze3N0YXRpYyBjb21wdXRlVW5pY29kZUhpZ2hsaWdodHMoZSx0LG4pe2NvbnN0IHI9bj9uLnN0YXJ0TGluZU51bWJlcjoxLGk9bj9uLmVuZExpbmVOdW1iZXI6ZS5nZXRMaW5lQ291bnQoKSxhPW5ldyBGbih0KSxvPWEuZ2V0Q2FuZGlkYXRlQ29kZVBvaW50cygpO2xldCBzO3ZhciBsO3M9ImFsbE5vbkJhc2ljQXNjaWkiPT09bz9uZXcgUmVnRXhwKCJbXlxcdFxcblxcclxceDIwLVxceDdFXSIsImciKTpuZXcgUmVnRXhwKGBbJHtsPUFycmF5LmZyb20obykubWFwKChlPT5TdHJpbmcuZnJvbUNvZGVQb2ludChlKSkpLmpvaW4oIiIpLGwucmVwbGFjZSgvW1xcXHtcfVwqXCtcP1x8XF5cJFwuXFtcXVwoXCldL2csIlxcJCYiKX1dYCwiZyIpO2NvbnN0IGM9bmV3IHFuKG51bGwscyksaD1bXTtsZXQgZCx1PSExLHA9MCxtPTAsZj0wO2U6Zm9yKGxldCB0PXIsbj1pO3Q8PW47dCsrKXtjb25zdCBuPWUuZ2V0TGluZUNvbnRlbnQodCkscj1uLmxlbmd0aDtjLnJlc2V0KDApO2Rve2lmKGQ9Yy5uZXh0KG4pLGQpe2xldCBlPWQuaW5kZXgsaT1kLmluZGV4K2RbMF0ubGVuZ3RoO2U+MCYmSihuLmNoYXJDb2RlQXQoZS0xKSkmJmUtLSxpKzE8ciYmSihuLmNoYXJDb2RlQXQoaS0xKSkmJmkrKztjb25zdCBvPW4uc3Vic3RyaW5nKGUsaSkscz1idChlKzEsZnQsbiwwKSxsPWEuc2hvdWxkSGlnaGxpZ2h0Tm9uQmFzaWNBU0NJSShvLHM/cy53b3JkOm51bGwpO2lmKDAhPT1sKXszPT09bD9wKys6Mj09PWw/bSsrOjE9PT1sP2YrKzpqKCk7Y29uc3Qgbj0xZTM7aWYoaC5sZW5ndGg+PW4pe3U9ITA7YnJlYWsgZX1oLnB1c2gobmV3IGV0KHQsZSsxLHQsaSsxKSl9fX13aGlsZShkKX1yZXR1cm57cmFuZ2VzOmgsaGFzTW9yZTp1LGFtYmlndW91c0NoYXJhY3RlckNvdW50OnAsaW52aXNpYmxlQ2hhcmFjdGVyQ291bnQ6bSxub25CYXNpY0FzY2lpQ2hhcmFjdGVyQ291bnQ6Zn19c3RhdGljIGNvbXB1dGVVbmljb2RlSGlnaGxpZ2h0UmVhc29uKGUsdCl7Y29uc3Qgbj1uZXcgRm4odCk7c3dpdGNoKG4uc2hvdWxkSGlnaGxpZ2h0Tm9uQmFzaWNBU0NJSShlLG51bGwpKXtjYXNlIDA6cmV0dXJuIG51bGw7Y2FzZSAyOnJldHVybntraW5kOjF9O2Nhc2UgMzp7Y29uc3Qgcj1lLmNvZGVQb2ludEF0KDApLGk9bi5hbWJpZ3VvdXNDaGFyYWN0ZXJzLmdldFByaW1hcnlDb25mdXNhYmxlKHIpLGE9US5nZXRMb2NhbGVzKCkuZmlsdGVyKChlPT4hUS5nZXRJbnN0YW5jZShuZXcgU2V0KFsuLi50LmFsbG93ZWRMb2NhbGVzLGVdKSkuaXNBbWJpZ3VvdXMocikpKTtyZXR1cm57a2luZDowLGNvbmZ1c2FibGVXaXRoOlN0cmluZy5mcm9tQ29kZVBvaW50KGkpLG5vdEFtYmlndW91c0luTG9jYWxlczphfX1jYXNlIDE6cmV0dXJue2tpbmQ6Mn19fX0uY29tcHV0ZVVuaWNvZGVIaWdobGlnaHRzKHIsdCxuKTp7cmFuZ2VzOltdLGhhc01vcmU6ITEsYW1iaWd1b3VzQ2hhcmFjdGVyQ291bnQ6MCxpbnZpc2libGVDaGFyYWN0ZXJDb3VudDowLG5vbkJhc2ljQXNjaWlDaGFyYWN0ZXJDb3VudDowfX0pKX1jb21wdXRlRGlmZihlLHQsbixyKXtyZXR1cm4gQm4odGhpcyx2b2lkIDAsdm9pZCAwLChmdW5jdGlvbiooKXtjb25zdCBpPXRoaXMuX2dldE1vZGVsKGUpLGE9dGhpcy5fZ2V0TW9kZWwodCk7cmV0dXJuIGkmJmE/am4uY29tcHV0ZURpZmYoaSxhLG4scik6bnVsbH0pKX1zdGF0aWMgY29tcHV0ZURpZmYoZSx0LG4scil7Y29uc3QgaT1lLmdldExpbmVzQ29udGVudCgpLGE9dC5nZXRMaW5lc0NvbnRlbnQoKSxvPW5ldyBvdChpLGEse3Nob3VsZENvbXB1dGVDaGFyQ2hhbmdlczohMCxzaG91bGRQb3N0UHJvY2Vzc0NoYXJDaGFuZ2VzOiEwLHNob3VsZElnbm9yZVRyaW1XaGl0ZXNwYWNlOm4sc2hvdWxkTWFrZVByZXR0eURpZmY6ITAsbWF4Q29tcHV0YXRpb25UaW1lOnJ9KS5jb21wdXRlRGlmZigpLHM9IShvLmNoYW5nZXMubGVuZ3RoPjApJiZ0aGlzLl9tb2RlbHNBcmVJZGVudGljYWwoZSx0KTtyZXR1cm57cXVpdEVhcmx5Om8ucXVpdEVhcmx5LGlkZW50aWNhbDpzLGNoYW5nZXM6by5jaGFuZ2VzfX1zdGF0aWMgX21vZGVsc0FyZUlkZW50aWNhbChlLHQpe2NvbnN0IG49ZS5nZXRMaW5lQ291bnQoKTtpZihuIT09dC5nZXRMaW5lQ291bnQoKSlyZXR1cm4hMTtmb3IobGV0IHI9MTtyPD1uO3IrKyl7aWYoZS5nZXRMaW5lQ29udGVudChyKSE9PXQuZ2V0TGluZUNvbnRlbnQocikpcmV0dXJuITF9cmV0dXJuITB9Y29tcHV0ZU1vcmVNaW5pbWFsRWRpdHMoZSx0KXtyZXR1cm4gQm4odGhpcyx2b2lkIDAsdm9pZCAwLChmdW5jdGlvbiooKXtjb25zdCBuPXRoaXMuX2dldE1vZGVsKGUpO2lmKCFuKXJldHVybiB0O2NvbnN0IHI9W107bGV0IGk7dD10LnNsaWNlKDApLnNvcnQoKChlLHQpPT57aWYoZS5yYW5nZSYmdC5yYW5nZSlyZXR1cm4gZXQuY29tcGFyZVJhbmdlc1VzaW5nU3RhcnRzKGUucmFuZ2UsdC5yYW5nZSk7cmV0dXJuKGUucmFuZ2U/MDoxKS0odC5yYW5nZT8wOjEpfSkpO2ZvcihsZXR7cmFuZ2U6ZSx0ZXh0OmEsZW9sOm99b2YgdCl7aWYoIm51bWJlciI9PXR5cGVvZiBvJiYoaT1vKSxldC5pc0VtcHR5KGUpJiYhYSljb250aW51ZTtjb25zdCB0PW4uZ2V0VmFsdWVJblJhbmdlKGUpO2lmKGE9YS5yZXBsYWNlKC9cclxufFxufFxyL2csbi5lb2wpLHQ9PT1hKWNvbnRpbnVlO2lmKE1hdGgubWF4KGEubGVuZ3RoLHQubGVuZ3RoKT5qbi5fZGlmZkxpbWl0KXtyLnB1c2goe3JhbmdlOmUsdGV4dDphfSk7Y29udGludWV9Y29uc3Qgcz1wZSh0LGEsITEpLGw9bi5vZmZzZXRBdChldC5saWZ0KGUpLmdldFN0YXJ0UG9zaXRpb24oKSk7Zm9yKGNvbnN0IGUgb2Ygcyl7Y29uc3QgdD1uLnBvc2l0aW9uQXQobCtlLm9yaWdpbmFsU3RhcnQpLGk9bi5wb3NpdGlvbkF0KGwrZS5vcmlnaW5hbFN0YXJ0K2Uub3JpZ2luYWxMZW5ndGgpLG89e3RleHQ6YS5zdWJzdHIoZS5tb2RpZmllZFN0YXJ0LGUubW9kaWZpZWRMZW5ndGgpLHJhbmdlOntzdGFydExpbmVOdW1iZXI6dC5saW5lTnVtYmVyLHN0YXJ0Q29sdW1uOnQuY29sdW1uLGVuZExpbmVOdW1iZXI6aS5saW5lTnVtYmVyLGVuZENvbHVtbjppLmNvbHVtbn19O24uZ2V0VmFsdWVJblJhbmdlKG8ucmFuZ2UpIT09by50ZXh0JiZyLnB1c2gobyl9fXJldHVybiJudW1iZXIiPT10eXBlb2YgaSYmci5wdXNoKHtlb2w6aSx0ZXh0OiIiLHJhbmdlOntzdGFydExpbmVOdW1iZXI6MCxzdGFydENvbHVtbjowLGVuZExpbmVOdW1iZXI6MCxlbmRDb2x1bW46MH19KSxyfSkpfWNvbXB1dGVMaW5rcyhlKXtyZXR1cm4gQm4odGhpcyx2b2lkIDAsdm9pZCAwLChmdW5jdGlvbiooKXtjb25zdCB0PXRoaXMuX2dldE1vZGVsKGUpO3JldHVybiB0P2Z1bmN0aW9uKGUpe3JldHVybiBlJiYiZnVuY3Rpb24iPT10eXBlb2YgZS5nZXRMaW5lQ291bnQmJiJmdW5jdGlvbiI9PXR5cGVvZiBlLmdldExpbmVDb250ZW50P1N0LmNvbXB1dGVMaW5rcyhlKTpbXX0odCk6bnVsbH0pKX10ZXh0dWFsU3VnZ2VzdChlLHQsbixyKXtyZXR1cm4gQm4odGhpcyx2b2lkIDAsdm9pZCAwLChmdW5jdGlvbiooKXtjb25zdCBpPW5ldyB6KCEwKSxhPW5ldyBSZWdFeHAobixyKSxvPW5ldyBTZXQ7ZTpmb3IoY29uc3QgbiBvZiBlKXtjb25zdCBlPXRoaXMuX2dldE1vZGVsKG4pO2lmKGUpZm9yKGNvbnN0IG4gb2YgZS53b3JkcyhhKSlpZihuIT09dCYmaXNOYU4oTnVtYmVyKG4pKSYmKG8uYWRkKG4pLG8uc2l6ZT5qbi5fc3VnZ2VzdGlvbnNMaW1pdCkpYnJlYWsgZX1yZXR1cm57d29yZHM6QXJyYXkuZnJvbShvKSxkdXJhdGlvbjppLmVsYXBzZWQoKX19KSl9Y29tcHV0ZVdvcmRSYW5nZXMoZSx0LG4scil7cmV0dXJuIEJuKHRoaXMsdm9pZCAwLHZvaWQgMCwoZnVuY3Rpb24qKCl7Y29uc3QgaT10aGlzLl9nZXRNb2RlbChlKTtpZighaSlyZXR1cm4gT2JqZWN0LmNyZWF0ZShudWxsKTtjb25zdCBhPW5ldyBSZWdFeHAobixyKSxvPU9iamVjdC5jcmVhdGUobnVsbCk7Zm9yKGxldCBlPXQuc3RhcnRMaW5lTnVtYmVyO2U8dC5lbmRMaW5lTnVtYmVyO2UrKyl7Y29uc3QgdD1pLmdldExpbmVXb3JkcyhlLGEpO2Zvcihjb25zdCBuIG9mIHQpe2lmKCFpc05hTihOdW1iZXIobi53b3JkKSkpY29udGludWU7bGV0IHQ9b1tuLndvcmRdO3R8fCh0PVtdLG9bbi53b3JkXT10KSx0LnB1c2goe3N0YXJ0TGluZU51bWJlcjplLHN0YXJ0Q29sdW1uOm4uc3RhcnRDb2x1bW4sZW5kTGluZU51bWJlcjplLGVuZENvbHVtbjpuLmVuZENvbHVtbn0pfX1yZXR1cm4gb30pKX1uYXZpZ2F0ZVZhbHVlU2V0KGUsdCxuLHIsaSl7cmV0dXJuIEJuKHRoaXMsdm9pZCAwLHZvaWQgMCwoZnVuY3Rpb24qKCl7Y29uc3QgYT10aGlzLl9nZXRNb2RlbChlKTtpZighYSlyZXR1cm4gbnVsbDtjb25zdCBvPW5ldyBSZWdFeHAocixpKTt0LnN0YXJ0Q29sdW1uPT09dC5lbmRDb2x1bW4mJih0PXtzdGFydExpbmVOdW1iZXI6dC5zdGFydExpbmVOdW1iZXIsc3RhcnRDb2x1bW46dC5zdGFydENvbHVtbixlbmRMaW5lTnVtYmVyOnQuZW5kTGluZU51bWJlcixlbmRDb2x1bW46dC5lbmRDb2x1bW4rMX0pO2NvbnN0IHM9YS5nZXRWYWx1ZUluUmFuZ2UodCksbD1hLmdldFdvcmRBdFBvc2l0aW9uKHtsaW5lTnVtYmVyOnQuc3RhcnRMaW5lTnVtYmVyLGNvbHVtbjp0LnN0YXJ0Q29sdW1ufSxvKTtpZighbClyZXR1cm4gbnVsbDtjb25zdCBjPWEuZ2V0VmFsdWVJblJhbmdlKGwpO3JldHVybiBDdC5JTlNUQU5DRS5uYXZpZ2F0ZVZhbHVlU2V0KHQscyxsLGMsbil9KSl9bG9hZEZvcmVpZ25Nb2R1bGUoZSx0LG4pe2NvbnN0IHI9ZnVuY3Rpb24oZSx0KXtjb25zdCBuPWU9PmZ1bmN0aW9uKCl7Y29uc3Qgbj1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMCk7cmV0dXJuIHQoZSxuKX0scj17fTtmb3IoY29uc3QgdCBvZiBlKXJbdF09bih0KTtyZXR1cm4gcn0obiwoKGUsdCk9PnRoaXMuX2hvc3QuZmhyKGUsdCkpKSxpPXtob3N0OnIsZ2V0TWlycm9yTW9kZWxzOigpPT50aGlzLl9nZXRNb2RlbHMoKX07cmV0dXJuIHRoaXMuX2ZvcmVpZ25Nb2R1bGVGYWN0b3J5Pyh0aGlzLl9mb3JlaWduTW9kdWxlPXRoaXMuX2ZvcmVpZ25Nb2R1bGVGYWN0b3J5KGksdCksUHJvbWlzZS5yZXNvbHZlKEsodGhpcy5fZm9yZWlnbk1vZHVsZSkpKTpQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoIlVuZXhwZWN0ZWQgdXNhZ2UiKSl9Zm1yKGUsdCl7aWYoIXRoaXMuX2ZvcmVpZ25Nb2R1bGV8fCJmdW5jdGlvbiIhPXR5cGVvZiB0aGlzLl9mb3JlaWduTW9kdWxlW2VdKXJldHVybiBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoIk1pc3NpbmcgcmVxdWVzdEhhbmRsZXIgb3IgbWV0aG9kOiAiK2UpKTt0cnl7cmV0dXJuIFByb21pc2UucmVzb2x2ZSh0aGlzLl9mb3JlaWduTW9kdWxlW2VdLmFwcGx5KHRoaXMuX2ZvcmVpZ25Nb2R1bGUsdCkpfWNhdGNoKGUpe3JldHVybiBQcm9taXNlLnJlamVjdChlKX19fWpuLl9kaWZmTGltaXQ9MWU1LGpuLl9zdWdnZXN0aW9uc0xpbWl0PTFlNCwiZnVuY3Rpb24iPT10eXBlb2YgaW1wb3J0U2NyaXB0cyYmKEwubW9uYWNvPXtlZGl0b3I6dm9pZCAwLGxhbmd1YWdlczp2b2lkIDAsQ2FuY2VsbGF0aW9uVG9rZW5Tb3VyY2U6QXQsRW1pdHRlcjpGLEtleUNvZGU6cG4sS2V5TW9kOk9uLFBvc2l0aW9uOlplLFJhbmdlOmV0LFNlbGVjdGlvbjpPdCxTZWxlY3Rpb25EaXJlY3Rpb246Q24sTWFya2VyU2V2ZXJpdHk6bW4sTWFya2VyVGFnOmZuLFVyaTpGZSxUb2tlbjpXbn0pO2xldCBHbj0hMTtmdW5jdGlvbiAkbihlKXtpZihHbilyZXR1cm47R249ITA7Y29uc3QgdD1uZXcgbGUoKGU9PntzZWxmLnBvc3RNZXNzYWdlKGUpfSksKHQ9Pm5ldyBqbih0LGUpKSk7c2VsZi5vbm1lc3NhZ2U9ZT0+e3Qub25tZXNzYWdlKGUuZGF0YSl9fWZ1bmN0aW9uIEpuKGUsdCwuLi5uKXsKLyohLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAqIENvcHlyaWdodCAoYykgTWljcm9zb2Z0IENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgICogVmVyc2lvbjogMC4zNC4wKDlkMjc4Njg1YjA3ODE1ODQ5MTk2NGY4ZmQ3YWM5NjI4ZmZmYTBmMzApCiAgICAgKiBSZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UKICAgICAqIGh0dHBzOi8vZ2l0aHViLmNvbS9taWNyb3NvZnQvbW9uYWNvLWVkaXRvci9ibG9iL21haW4vTElDRU5TRS50eHQKICAgICAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwpyZXR1cm4gZnVuY3Rpb24oZSx0KXtsZXQgbjtyZXR1cm4gbj0wPT09dC5sZW5ndGg/ZTplLnJlcGxhY2UoL1x7KFxkKylcfS9nLCgoZSxuKT0+e2xldCByPW5bMF07cmV0dXJuIHZvaWQgMCE9PXRbcl0/dFtyXTplfSkpLG59KHQsbil9ZnVuY3Rpb24gWG4oZSl7cmV0dXJuIEpufXZhciBZbixRbixabixlcix0cixucixycixpcixhcixvcixzcixscixjcixocixkcix1cixwcixtcixmcixncixicix3cixfcix2cix5cixUcixrcixTcixDcix4cixMcixFcixBcixNcixScixJcixOcixVcixIcix6cixEcixXcixPcixQcixxcixGcixWcixCcixLcjtzZWxmLm9ubWVzc2FnZT1lPT57R258fCRuKG51bGwpfSwoUW49WW58fChZbj17fSkpLk1JTl9WQUxVRT0tMjE0NzQ4MzY0OCxRbi5NQVhfVkFMVUU9MjE0NzQ4MzY0NywoZXI9Wm58fChabj17fSkpLk1JTl9WQUxVRT0wLGVyLk1BWF9WQUxVRT0yMTQ3NDgzNjQ3LChucj10cnx8KHRyPXt9KSkuY3JlYXRlPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGU9PT1OdW1iZXIuTUFYX1ZBTFVFJiYoZT1abi5NQVhfVkFMVUUpLHQ9PT1OdW1iZXIuTUFYX1ZBTFVFJiYodD1abi5NQVhfVkFMVUUpLHtsaW5lOmUsY2hhcmFjdGVyOnR9fSxuci5pcz1mdW5jdGlvbihlKXt2YXIgdD1lO3JldHVybiBLaS5vYmplY3RMaXRlcmFsKHQpJiZLaS51aW50ZWdlcih0LmxpbmUpJiZLaS51aW50ZWdlcih0LmNoYXJhY3Rlcil9LChpcj1ycnx8KHJyPXt9KSkuY3JlYXRlPWZ1bmN0aW9uKGUsdCxuLHIpe2lmKEtpLnVpbnRlZ2VyKGUpJiZLaS51aW50ZWdlcih0KSYmS2kudWludGVnZXIobikmJktpLnVpbnRlZ2VyKHIpKXJldHVybntzdGFydDp0ci5jcmVhdGUoZSx0KSxlbmQ6dHIuY3JlYXRlKG4scil9O2lmKHRyLmlzKGUpJiZ0ci5pcyh0KSlyZXR1cm57c3RhcnQ6ZSxlbmQ6dH07dGhyb3cgbmV3IEVycm9yKCJSYW5nZSNjcmVhdGUgY2FsbGVkIHdpdGggaW52YWxpZCBhcmd1bWVudHNbIitlKyIsICIrdCsiLCAiK24rIiwgIityKyJdIil9LGlyLmlzPWZ1bmN0aW9uKGUpe3ZhciB0PWU7cmV0dXJuIEtpLm9iamVjdExpdGVyYWwodCkmJnRyLmlzKHQuc3RhcnQpJiZ0ci5pcyh0LmVuZCl9LChvcj1hcnx8KGFyPXt9KSkuY3JlYXRlPWZ1bmN0aW9uKGUsdCl7cmV0dXJue3VyaTplLHJhbmdlOnR9fSxvci5pcz1mdW5jdGlvbihlKXt2YXIgdD1lO3JldHVybiBLaS5kZWZpbmVkKHQpJiZyci5pcyh0LnJhbmdlKSYmKEtpLnN0cmluZyh0LnVyaSl8fEtpLnVuZGVmaW5lZCh0LnVyaSkpfSwobHI9c3J8fChzcj17fSkpLmNyZWF0ZT1mdW5jdGlvbihlLHQsbixyKXtyZXR1cm57dGFyZ2V0VXJpOmUsdGFyZ2V0UmFuZ2U6dCx0YXJnZXRTZWxlY3Rpb25SYW5nZTpuLG9yaWdpblNlbGVjdGlvblJhbmdlOnJ9fSxsci5pcz1mdW5jdGlvbihlKXt2YXIgdD1lO3JldHVybiBLaS5kZWZpbmVkKHQpJiZyci5pcyh0LnRhcmdldFJhbmdlKSYmS2kuc3RyaW5nKHQudGFyZ2V0VXJpKSYmKHJyLmlzKHQudGFyZ2V0U2VsZWN0aW9uUmFuZ2UpfHxLaS51bmRlZmluZWQodC50YXJnZXRTZWxlY3Rpb25SYW5nZSkpJiYocnIuaXModC5vcmlnaW5TZWxlY3Rpb25SYW5nZSl8fEtpLnVuZGVmaW5lZCh0Lm9yaWdpblNlbGVjdGlvblJhbmdlKSl9LChocj1jcnx8KGNyPXt9KSkuY3JlYXRlPWZ1bmN0aW9uKGUsdCxuLHIpe3JldHVybntyZWQ6ZSxncmVlbjp0LGJsdWU6bixhbHBoYTpyfX0saHIuaXM9ZnVuY3Rpb24oZSl7dmFyIHQ9ZTtyZXR1cm4gS2kubnVtYmVyUmFuZ2UodC5yZWQsMCwxKSYmS2kubnVtYmVyUmFuZ2UodC5ncmVlbiwwLDEpJiZLaS5udW1iZXJSYW5nZSh0LmJsdWUsMCwxKSYmS2kubnVtYmVyUmFuZ2UodC5hbHBoYSwwLDEpfSwodXI9ZHJ8fChkcj17fSkpLmNyZWF0ZT1mdW5jdGlvbihlLHQpe3JldHVybntyYW5nZTplLGNvbG9yOnR9fSx1ci5pcz1mdW5jdGlvbihlKXt2YXIgdD1lO3JldHVybiByci5pcyh0LnJhbmdlKSYmY3IuaXModC5jb2xvcil9LChtcj1wcnx8KHByPXt9KSkuY3JlYXRlPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm57bGFiZWw6ZSx0ZXh0RWRpdDp0LGFkZGl0aW9uYWxUZXh0RWRpdHM6bn19LG1yLmlzPWZ1bmN0aW9uKGUpe3ZhciB0PWU7cmV0dXJuIEtpLnN0cmluZyh0LmxhYmVsKSYmKEtpLnVuZGVmaW5lZCh0LnRleHRFZGl0KXx8TXIuaXModCkpJiYoS2kudW5kZWZpbmVkKHQuYWRkaXRpb25hbFRleHRFZGl0cyl8fEtpLnR5cGVkQXJyYXkodC5hZGRpdGlvbmFsVGV4dEVkaXRzLE1yLmlzKSl9LChncj1mcnx8KGZyPXt9KSkuQ29tbWVudD0iY29tbWVudCIsZ3IuSW1wb3J0cz0iaW1wb3J0cyIsZ3IuUmVnaW9uPSJyZWdpb24iLCh3cj1icnx8KGJyPXt9KSkuY3JlYXRlPWZ1bmN0aW9uKGUsdCxuLHIsaSl7dmFyIGE9e3N0YXJ0TGluZTplLGVuZExpbmU6dH07cmV0dXJuIEtpLmRlZmluZWQobikmJihhLnN0YXJ0Q2hhcmFjdGVyPW4pLEtpLmRlZmluZWQocikmJihhLmVuZENoYXJhY3Rlcj1yKSxLaS5kZWZpbmVkKGkpJiYoYS5raW5kPWkpLGF9LHdyLmlzPWZ1bmN0aW9uKGUpe3ZhciB0PWU7cmV0dXJuIEtpLnVpbnRlZ2VyKHQuc3RhcnRMaW5lKSYmS2kudWludGVnZXIodC5zdGFydExpbmUpJiYoS2kudW5kZWZpbmVkKHQuc3RhcnRDaGFyYWN0ZXIpfHxLaS51aW50ZWdlcih0LnN0YXJ0Q2hhcmFjdGVyKSkmJihLaS51bmRlZmluZWQodC5lbmRDaGFyYWN0ZXIpfHxLaS51aW50ZWdlcih0LmVuZENoYXJhY3RlcikpJiYoS2kudW5kZWZpbmVkKHQua2luZCl8fEtpLnN0cmluZyh0LmtpbmQpKX0sKHZyPV9yfHwoX3I9e30pKS5jcmVhdGU9ZnVuY3Rpb24oZSx0KXtyZXR1cm57bG9jYXRpb246ZSxtZXNzYWdlOnR9fSx2ci5pcz1mdW5jdGlvbihlKXt2YXIgdD1lO3JldHVybiBLaS5kZWZpbmVkKHQpJiZhci5pcyh0LmxvY2F0aW9uKSYmS2kuc3RyaW5nKHQubWVzc2FnZSl9LChUcj15cnx8KHlyPXt9KSkuRXJyb3I9MSxUci5XYXJuaW5nPTIsVHIuSW5mb3JtYXRpb249MyxUci5IaW50PTQsKFNyPWtyfHwoa3I9e30pKS5Vbm5lY2Vzc2FyeT0xLFNyLkRlcHJlY2F0ZWQ9MiwoQ3J8fChDcj17fSkpLmlzPWZ1bmN0aW9uKGUpe3ZhciB0PWU7cmV0dXJuIG51bGwhPXQmJktpLnN0cmluZyh0LmhyZWYpfSwoTHI9eHJ8fCh4cj17fSkpLmNyZWF0ZT1mdW5jdGlvbihlLHQsbixyLGksYSl7dmFyIG89e3JhbmdlOmUsbWVzc2FnZTp0fTtyZXR1cm4gS2kuZGVmaW5lZChuKSYmKG8uc2V2ZXJpdHk9biksS2kuZGVmaW5lZChyKSYmKG8uY29kZT1yKSxLaS5kZWZpbmVkKGkpJiYoby5zb3VyY2U9aSksS2kuZGVmaW5lZChhKSYmKG8ucmVsYXRlZEluZm9ybWF0aW9uPWEpLG99LExyLmlzPWZ1bmN0aW9uKGUpe3ZhciB0LG49ZTtyZXR1cm4gS2kuZGVmaW5lZChuKSYmcnIuaXMobi5yYW5nZSkmJktpLnN0cmluZyhuLm1lc3NhZ2UpJiYoS2kubnVtYmVyKG4uc2V2ZXJpdHkpfHxLaS51bmRlZmluZWQobi5zZXZlcml0eSkpJiYoS2kuaW50ZWdlcihuLmNvZGUpfHxLaS5zdHJpbmcobi5jb2RlKXx8S2kudW5kZWZpbmVkKG4uY29kZSkpJiYoS2kudW5kZWZpbmVkKG4uY29kZURlc2NyaXB0aW9uKXx8S2kuc3RyaW5nKG51bGw9PT0odD1uLmNvZGVEZXNjcmlwdGlvbil8fHZvaWQgMD09PXQ/dm9pZCAwOnQuaHJlZikpJiYoS2kuc3RyaW5nKG4uc291cmNlKXx8S2kudW5kZWZpbmVkKG4uc291cmNlKSkmJihLaS51bmRlZmluZWQobi5yZWxhdGVkSW5mb3JtYXRpb24pfHxLaS50eXBlZEFycmF5KG4ucmVsYXRlZEluZm9ybWF0aW9uLF9yLmlzKSl9LChBcj1Fcnx8KEVyPXt9KSkuY3JlYXRlPWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuPVtdLHI9MjtyPGFyZ3VtZW50cy5sZW5ndGg7cisrKW5bci0yXT1hcmd1bWVudHNbcl07dmFyIGk9e3RpdGxlOmUsY29tbWFuZDp0fTtyZXR1cm4gS2kuZGVmaW5lZChuKSYmbi5sZW5ndGg+MCYmKGkuYXJndW1lbnRzPW4pLGl9LEFyLmlzPWZ1bmN0aW9uKGUpe3ZhciB0PWU7cmV0dXJuIEtpLmRlZmluZWQodCkmJktpLnN0cmluZyh0LnRpdGxlKSYmS2kuc3RyaW5nKHQuY29tbWFuZCl9LChScj1Ncnx8KE1yPXt9KSkucmVwbGFjZT1mdW5jdGlvbihlLHQpe3JldHVybntyYW5nZTplLG5ld1RleHQ6dH19LFJyLmluc2VydD1mdW5jdGlvbihlLHQpe3JldHVybntyYW5nZTp7c3RhcnQ6ZSxlbmQ6ZX0sbmV3VGV4dDp0fX0sUnIuZGVsPWZ1bmN0aW9uKGUpe3JldHVybntyYW5nZTplLG5ld1RleHQ6IiJ9fSxSci5pcz1mdW5jdGlvbihlKXt2YXIgdD1lO3JldHVybiBLaS5vYmplY3RMaXRlcmFsKHQpJiZLaS5zdHJpbmcodC5uZXdUZXh0KSYmcnIuaXModC5yYW5nZSl9LChOcj1Jcnx8KElyPXt9KSkuY3JlYXRlPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj17bGFiZWw6ZX07cmV0dXJuIHZvaWQgMCE9PXQmJihyLm5lZWRzQ29uZmlybWF0aW9uPXQpLHZvaWQgMCE9PW4mJihyLmRlc2NyaXB0aW9uPW4pLHJ9LE5yLmlzPWZ1bmN0aW9uKGUpe3ZhciB0PWU7cmV0dXJuIHZvaWQgMCE9PXQmJktpLm9iamVjdExpdGVyYWwodCkmJktpLnN0cmluZyh0LmxhYmVsKSYmKEtpLmJvb2xlYW4odC5uZWVkc0NvbmZpcm1hdGlvbil8fHZvaWQgMD09PXQubmVlZHNDb25maXJtYXRpb24pJiYoS2kuc3RyaW5nKHQuZGVzY3JpcHRpb24pfHx2b2lkIDA9PT10LmRlc2NyaXB0aW9uKX0sKFVyfHwoVXI9e30pKS5pcz1mdW5jdGlvbihlKXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIGV9LCh6cj1Icnx8KEhyPXt9KSkucmVwbGFjZT1mdW5jdGlvbihlLHQsbil7cmV0dXJue3JhbmdlOmUsbmV3VGV4dDp0LGFubm90YXRpb25JZDpufX0senIuaW5zZXJ0PWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm57cmFuZ2U6e3N0YXJ0OmUsZW5kOmV9LG5ld1RleHQ6dCxhbm5vdGF0aW9uSWQ6bn19LHpyLmRlbD1mdW5jdGlvbihlLHQpe3JldHVybntyYW5nZTplLG5ld1RleHQ6IiIsYW5ub3RhdGlvbklkOnR9fSx6ci5pcz1mdW5jdGlvbihlKXt2YXIgdD1lO3JldHVybiBNci5pcyh0KSYmKElyLmlzKHQuYW5ub3RhdGlvbklkKXx8VXIuaXModC5hbm5vdGF0aW9uSWQpKX0sKFdyPURyfHwoRHI9e30pKS5jcmVhdGU9ZnVuY3Rpb24oZSx0KXtyZXR1cm57dGV4dERvY3VtZW50OmUsZWRpdHM6dH19LFdyLmlzPWZ1bmN0aW9uKGUpe3ZhciB0PWU7cmV0dXJuIEtpLmRlZmluZWQodCkmJlhyLmlzKHQudGV4dERvY3VtZW50KSYmQXJyYXkuaXNBcnJheSh0LmVkaXRzKX0sKFByPU9yfHwoT3I9e30pKS5jcmVhdGU9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXtraW5kOiJjcmVhdGUiLHVyaTplfTtyZXR1cm4gdm9pZCAwPT09dHx8dm9pZCAwPT09dC5vdmVyd3JpdGUmJnZvaWQgMD09PXQuaWdub3JlSWZFeGlzdHN8fChyLm9wdGlvbnM9dCksdm9pZCAwIT09biYmKHIuYW5ub3RhdGlvbklkPW4pLHJ9LFByLmlzPWZ1bmN0aW9uKGUpe3ZhciB0PWU7cmV0dXJuIHQmJiJjcmVhdGUiPT09dC5raW5kJiZLaS5zdHJpbmcodC51cmkpJiYodm9pZCAwPT09dC5vcHRpb25zfHwodm9pZCAwPT09dC5vcHRpb25zLm92ZXJ3cml0ZXx8S2kuYm9vbGVhbih0Lm9wdGlvbnMub3ZlcndyaXRlKSkmJih2b2lkIDA9PT10Lm9wdGlvbnMuaWdub3JlSWZFeGlzdHN8fEtpLmJvb2xlYW4odC5vcHRpb25zLmlnbm9yZUlmRXhpc3RzKSkpJiYodm9pZCAwPT09dC5hbm5vdGF0aW9uSWR8fFVyLmlzKHQuYW5ub3RhdGlvbklkKSl9LChGcj1xcnx8KHFyPXt9KSkuY3JlYXRlPWZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBpPXtraW5kOiJyZW5hbWUiLG9sZFVyaTplLG5ld1VyaTp0fTtyZXR1cm4gdm9pZCAwPT09bnx8dm9pZCAwPT09bi5vdmVyd3JpdGUmJnZvaWQgMD09PW4uaWdub3JlSWZFeGlzdHN8fChpLm9wdGlvbnM9biksdm9pZCAwIT09ciYmKGkuYW5ub3RhdGlvbklkPXIpLGl9LEZyLmlzPWZ1bmN0aW9uKGUpe3ZhciB0PWU7cmV0dXJuIHQmJiJyZW5hbWUiPT09dC5raW5kJiZLaS5zdHJpbmcodC5vbGRVcmkpJiZLaS5zdHJpbmcodC5uZXdVcmkpJiYodm9pZCAwPT09dC5vcHRpb25zfHwodm9pZCAwPT09dC5vcHRpb25zLm92ZXJ3cml0ZXx8S2kuYm9vbGVhbih0Lm9wdGlvbnMub3ZlcndyaXRlKSkmJih2b2lkIDA9PT10Lm9wdGlvbnMuaWdub3JlSWZFeGlzdHN8fEtpLmJvb2xlYW4odC5vcHRpb25zLmlnbm9yZUlmRXhpc3RzKSkpJiYodm9pZCAwPT09dC5hbm5vdGF0aW9uSWR8fFVyLmlzKHQuYW5ub3RhdGlvbklkKSl9LChCcj1Wcnx8KFZyPXt9KSkuY3JlYXRlPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj17a2luZDoiZGVsZXRlIix1cmk6ZX07cmV0dXJuIHZvaWQgMD09PXR8fHZvaWQgMD09PXQucmVjdXJzaXZlJiZ2b2lkIDA9PT10Lmlnbm9yZUlmTm90RXhpc3RzfHwoci5vcHRpb25zPXQpLHZvaWQgMCE9PW4mJihyLmFubm90YXRpb25JZD1uKSxyfSxCci5pcz1mdW5jdGlvbihlKXt2YXIgdD1lO3JldHVybiB0JiYiZGVsZXRlIj09PXQua2luZCYmS2kuc3RyaW5nKHQudXJpKSYmKHZvaWQgMD09PXQub3B0aW9uc3x8KHZvaWQgMD09PXQub3B0aW9ucy5yZWN1cnNpdmV8fEtpLmJvb2xlYW4odC5vcHRpb25zLnJlY3Vyc2l2ZSkpJiYodm9pZCAwPT09dC5vcHRpb25zLmlnbm9yZUlmTm90RXhpc3RzfHxLaS5ib29sZWFuKHQub3B0aW9ucy5pZ25vcmVJZk5vdEV4aXN0cykpKSYmKHZvaWQgMD09PXQuYW5ub3RhdGlvbklkfHxVci5pcyh0LmFubm90YXRpb25JZCkpfSwoS3J8fChLcj17fSkpLmlzPWZ1bmN0aW9uKGUpe3ZhciB0PWU7cmV0dXJuIHQmJih2b2lkIDAhPT10LmNoYW5nZXN8fHZvaWQgMCE9PXQuZG9jdW1lbnRDaGFuZ2VzKSYmKHZvaWQgMD09PXQuZG9jdW1lbnRDaGFuZ2VzfHx0LmRvY3VtZW50Q2hhbmdlcy5ldmVyeSgoZnVuY3Rpb24oZSl7cmV0dXJuIEtpLnN0cmluZyhlLmtpbmQpP09yLmlzKGUpfHxxci5pcyhlKXx8VnIuaXMoZSk6RHIuaXMoZSl9KSkpfTt2YXIganIsR3IsJHIsSnIsWHIsWXIsUXIsWnIsZWksdGksbmkscmksaWksYWksb2ksc2ksbGksY2ksaGksZGksdWkscGksbWksZmksZ2ksYmksd2ksX2ksdmkseWksVGksa2ksU2ksQ2kseGksTGksRWksQWksTWksUmksSWksTmksVWksSGksemksRGksV2ksT2ksUGkscWksRmksVmk9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUsdCl7dGhpcy5lZGl0cz1lLHRoaXMuY2hhbmdlQW5ub3RhdGlvbnM9dH1yZXR1cm4gZS5wcm90b3R5cGUuaW5zZXJ0PWZ1bmN0aW9uKGUsdCxuKXt2YXIgcixpO2lmKHZvaWQgMD09PW4/cj1Nci5pbnNlcnQoZSx0KTpVci5pcyhuKT8oaT1uLHI9SHIuaW5zZXJ0KGUsdCxuKSk6KHRoaXMuYXNzZXJ0Q2hhbmdlQW5ub3RhdGlvbnModGhpcy5jaGFuZ2VBbm5vdGF0aW9ucyksaT10aGlzLmNoYW5nZUFubm90YXRpb25zLm1hbmFnZShuKSxyPUhyLmluc2VydChlLHQsaSkpLHRoaXMuZWRpdHMucHVzaChyKSx2b2lkIDAhPT1pKXJldHVybiBpfSxlLnByb3RvdHlwZS5yZXBsYWNlPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcixpO2lmKHZvaWQgMD09PW4/cj1Nci5yZXBsYWNlKGUsdCk6VXIuaXMobik/KGk9bixyPUhyLnJlcGxhY2UoZSx0LG4pKToodGhpcy5hc3NlcnRDaGFuZ2VBbm5vdGF0aW9ucyh0aGlzLmNoYW5nZUFubm90YXRpb25zKSxpPXRoaXMuY2hhbmdlQW5ub3RhdGlvbnMubWFuYWdlKG4pLHI9SHIucmVwbGFjZShlLHQsaSkpLHRoaXMuZWRpdHMucHVzaChyKSx2b2lkIDAhPT1pKXJldHVybiBpfSxlLnByb3RvdHlwZS5kZWxldGU9ZnVuY3Rpb24oZSx0KXt2YXIgbixyO2lmKHZvaWQgMD09PXQ/bj1Nci5kZWwoZSk6VXIuaXModCk/KHI9dCxuPUhyLmRlbChlLHQpKToodGhpcy5hc3NlcnRDaGFuZ2VBbm5vdGF0aW9ucyh0aGlzLmNoYW5nZUFubm90YXRpb25zKSxyPXRoaXMuY2hhbmdlQW5ub3RhdGlvbnMubWFuYWdlKHQpLG49SHIuZGVsKGUscikpLHRoaXMuZWRpdHMucHVzaChuKSx2b2lkIDAhPT1yKXJldHVybiByfSxlLnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24oZSl7dGhpcy5lZGl0cy5wdXNoKGUpfSxlLnByb3RvdHlwZS5hbGw9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lZGl0c30sZS5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLmVkaXRzLnNwbGljZSgwLHRoaXMuZWRpdHMubGVuZ3RoKX0sZS5wcm90b3R5cGUuYXNzZXJ0Q2hhbmdlQW5ub3RhdGlvbnM9ZnVuY3Rpb24oZSl7aWYodm9pZCAwPT09ZSl0aHJvdyBuZXcgRXJyb3IoIlRleHQgZWRpdCBjaGFuZ2UgaXMgbm90IGNvbmZpZ3VyZWQgdG8gbWFuYWdlIGNoYW5nZSBhbm5vdGF0aW9ucy4iKX0sZX0oKSxCaT1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSl7dGhpcy5fYW5ub3RhdGlvbnM9dm9pZCAwPT09ZT9PYmplY3QuY3JlYXRlKG51bGwpOmUsdGhpcy5fY291bnRlcj0wLHRoaXMuX3NpemU9MH1yZXR1cm4gZS5wcm90b3R5cGUuYWxsPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2Fubm90YXRpb25zfSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsInNpemUiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc2l6ZX0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxlLnByb3RvdHlwZS5tYW5hZ2U9ZnVuY3Rpb24oZSx0KXt2YXIgbjtpZihVci5pcyhlKT9uPWU6KG49dGhpcy5uZXh0SWQoKSx0PWUpLHZvaWQgMCE9PXRoaXMuX2Fubm90YXRpb25zW25dKXRocm93IG5ldyBFcnJvcigiSWQgIituKyIgaXMgYWxyZWFkeSBpbiB1c2UuIik7aWYodm9pZCAwPT09dCl0aHJvdyBuZXcgRXJyb3IoIk5vIGFubm90YXRpb24gcHJvdmlkZWQgZm9yIGlkICIrbik7cmV0dXJuIHRoaXMuX2Fubm90YXRpb25zW25dPXQsdGhpcy5fc2l6ZSsrLG59LGUucHJvdG90eXBlLm5leHRJZD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9jb3VudGVyKyssdGhpcy5fY291bnRlci50b1N0cmluZygpfSxlfSgpOyFmdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSl7dmFyIHQ9dGhpczt0aGlzLl90ZXh0RWRpdENoYW5nZXM9T2JqZWN0LmNyZWF0ZShudWxsKSx2b2lkIDAhPT1lPyh0aGlzLl93b3Jrc3BhY2VFZGl0PWUsZS5kb2N1bWVudENoYW5nZXM/KHRoaXMuX2NoYW5nZUFubm90YXRpb25zPW5ldyBCaShlLmNoYW5nZUFubm90YXRpb25zKSxlLmNoYW5nZUFubm90YXRpb25zPXRoaXMuX2NoYW5nZUFubm90YXRpb25zLmFsbCgpLGUuZG9jdW1lbnRDaGFuZ2VzLmZvckVhY2goKGZ1bmN0aW9uKGUpe2lmKERyLmlzKGUpKXt2YXIgbj1uZXcgVmkoZS5lZGl0cyx0Ll9jaGFuZ2VBbm5vdGF0aW9ucyk7dC5fdGV4dEVkaXRDaGFuZ2VzW2UudGV4dERvY3VtZW50LnVyaV09bn19KSkpOmUuY2hhbmdlcyYmT2JqZWN0LmtleXMoZS5jaGFuZ2VzKS5mb3JFYWNoKChmdW5jdGlvbihuKXt2YXIgcj1uZXcgVmkoZS5jaGFuZ2VzW25dKTt0Ll90ZXh0RWRpdENoYW5nZXNbbl09cn0pKSk6dGhpcy5fd29ya3NwYWNlRWRpdD17fX1PYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsImVkaXQiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pbml0RG9jdW1lbnRDaGFuZ2VzKCksdm9pZCAwIT09dGhpcy5fY2hhbmdlQW5ub3RhdGlvbnMmJigwPT09dGhpcy5fY2hhbmdlQW5ub3RhdGlvbnMuc2l6ZT90aGlzLl93b3Jrc3BhY2VFZGl0LmNoYW5nZUFubm90YXRpb25zPXZvaWQgMDp0aGlzLl93b3Jrc3BhY2VFZGl0LmNoYW5nZUFubm90YXRpb25zPXRoaXMuX2NoYW5nZUFubm90YXRpb25zLmFsbCgpKSx0aGlzLl93b3Jrc3BhY2VFZGl0fSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLGUucHJvdG90eXBlLmdldFRleHRFZGl0Q2hhbmdlPWZ1bmN0aW9uKGUpe2lmKFhyLmlzKGUpKXtpZih0aGlzLmluaXREb2N1bWVudENoYW5nZXMoKSx2b2lkIDA9PT10aGlzLl93b3Jrc3BhY2VFZGl0LmRvY3VtZW50Q2hhbmdlcyl0aHJvdyBuZXcgRXJyb3IoIldvcmtzcGFjZSBlZGl0IGlzIG5vdCBjb25maWd1cmVkIGZvciBkb2N1bWVudCBjaGFuZ2VzLiIpO3ZhciB0PXt1cmk6ZS51cmksdmVyc2lvbjplLnZlcnNpb259O2lmKCEocj10aGlzLl90ZXh0RWRpdENoYW5nZXNbdC51cmldKSl7dmFyIG49e3RleHREb2N1bWVudDp0LGVkaXRzOmk9W119O3RoaXMuX3dvcmtzcGFjZUVkaXQuZG9jdW1lbnRDaGFuZ2VzLnB1c2gobikscj1uZXcgVmkoaSx0aGlzLl9jaGFuZ2VBbm5vdGF0aW9ucyksdGhpcy5fdGV4dEVkaXRDaGFuZ2VzW3QudXJpXT1yfXJldHVybiByfWlmKHRoaXMuaW5pdENoYW5nZXMoKSx2b2lkIDA9PT10aGlzLl93b3Jrc3BhY2VFZGl0LmNoYW5nZXMpdGhyb3cgbmV3IEVycm9yKCJXb3Jrc3BhY2UgZWRpdCBpcyBub3QgY29uZmlndXJlZCBmb3Igbm9ybWFsIHRleHQgZWRpdCBjaGFuZ2VzLiIpO3ZhciByO2lmKCEocj10aGlzLl90ZXh0RWRpdENoYW5nZXNbZV0pKXt2YXIgaT1bXTt0aGlzLl93b3Jrc3BhY2VFZGl0LmNoYW5nZXNbZV09aSxyPW5ldyBWaShpKSx0aGlzLl90ZXh0RWRpdENoYW5nZXNbZV09cn1yZXR1cm4gcn0sZS5wcm90b3R5cGUuaW5pdERvY3VtZW50Q2hhbmdlcz1mdW5jdGlvbigpe3ZvaWQgMD09PXRoaXMuX3dvcmtzcGFjZUVkaXQuZG9jdW1lbnRDaGFuZ2VzJiZ2b2lkIDA9PT10aGlzLl93b3Jrc3BhY2VFZGl0LmNoYW5nZXMmJih0aGlzLl9jaGFuZ2VBbm5vdGF0aW9ucz1uZXcgQmksdGhpcy5fd29ya3NwYWNlRWRpdC5kb2N1bWVudENoYW5nZXM9W10sdGhpcy5fd29ya3NwYWNlRWRpdC5jaGFuZ2VBbm5vdGF0aW9ucz10aGlzLl9jaGFuZ2VBbm5vdGF0aW9ucy5hbGwoKSl9LGUucHJvdG90eXBlLmluaXRDaGFuZ2VzPWZ1bmN0aW9uKCl7dm9pZCAwPT09dGhpcy5fd29ya3NwYWNlRWRpdC5kb2N1bWVudENoYW5nZXMmJnZvaWQgMD09PXRoaXMuX3dvcmtzcGFjZUVkaXQuY2hhbmdlcyYmKHRoaXMuX3dvcmtzcGFjZUVkaXQuY2hhbmdlcz1PYmplY3QuY3JlYXRlKG51bGwpKX0sZS5wcm90b3R5cGUuY3JlYXRlRmlsZT1mdW5jdGlvbihlLHQsbil7aWYodGhpcy5pbml0RG9jdW1lbnRDaGFuZ2VzKCksdm9pZCAwPT09dGhpcy5fd29ya3NwYWNlRWRpdC5kb2N1bWVudENoYW5nZXMpdGhyb3cgbmV3IEVycm9yKCJXb3Jrc3BhY2UgZWRpdCBpcyBub3QgY29uZmlndXJlZCBmb3IgZG9jdW1lbnQgY2hhbmdlcy4iKTt2YXIgcixpLGE7aWYoSXIuaXModCl8fFVyLmlzKHQpP3I9dDpuPXQsdm9pZCAwPT09cj9pPU9yLmNyZWF0ZShlLG4pOihhPVVyLmlzKHIpP3I6dGhpcy5fY2hhbmdlQW5ub3RhdGlvbnMubWFuYWdlKHIpLGk9T3IuY3JlYXRlKGUsbixhKSksdGhpcy5fd29ya3NwYWNlRWRpdC5kb2N1bWVudENoYW5nZXMucHVzaChpKSx2b2lkIDAhPT1hKXJldHVybiBhfSxlLnByb3RvdHlwZS5yZW5hbWVGaWxlPWZ1bmN0aW9uKGUsdCxuLHIpe2lmKHRoaXMuaW5pdERvY3VtZW50Q2hhbmdlcygpLHZvaWQgMD09PXRoaXMuX3dvcmtzcGFjZUVkaXQuZG9jdW1lbnRDaGFuZ2VzKXRocm93IG5ldyBFcnJvcigiV29ya3NwYWNlIGVkaXQgaXMgbm90IGNvbmZpZ3VyZWQgZm9yIGRvY3VtZW50IGNoYW5nZXMuIik7dmFyIGksYSxvO2lmKElyLmlzKG4pfHxVci5pcyhuKT9pPW46cj1uLHZvaWQgMD09PWk/YT1xci5jcmVhdGUoZSx0LHIpOihvPVVyLmlzKGkpP2k6dGhpcy5fY2hhbmdlQW5ub3RhdGlvbnMubWFuYWdlKGkpLGE9cXIuY3JlYXRlKGUsdCxyLG8pKSx0aGlzLl93b3Jrc3BhY2VFZGl0LmRvY3VtZW50Q2hhbmdlcy5wdXNoKGEpLHZvaWQgMCE9PW8pcmV0dXJuIG99LGUucHJvdG90eXBlLmRlbGV0ZUZpbGU9ZnVuY3Rpb24oZSx0LG4pe2lmKHRoaXMuaW5pdERvY3VtZW50Q2hhbmdlcygpLHZvaWQgMD09PXRoaXMuX3dvcmtzcGFjZUVkaXQuZG9jdW1lbnRDaGFuZ2VzKXRocm93IG5ldyBFcnJvcigiV29ya3NwYWNlIGVkaXQgaXMgbm90IGNvbmZpZ3VyZWQgZm9yIGRvY3VtZW50IGNoYW5nZXMuIik7dmFyIHIsaSxhO2lmKElyLmlzKHQpfHxVci5pcyh0KT9yPXQ6bj10LHZvaWQgMD09PXI/aT1Wci5jcmVhdGUoZSxuKTooYT1Vci5pcyhyKT9yOnRoaXMuX2NoYW5nZUFubm90YXRpb25zLm1hbmFnZShyKSxpPVZyLmNyZWF0ZShlLG4sYSkpLHRoaXMuX3dvcmtzcGFjZUVkaXQuZG9jdW1lbnRDaGFuZ2VzLnB1c2goaSksdm9pZCAwIT09YSlyZXR1cm4gYX19KCksKEdyPWpyfHwoanI9e30pKS5jcmVhdGU9ZnVuY3Rpb24oZSl7cmV0dXJue3VyaTplfX0sR3IuaXM9ZnVuY3Rpb24oZSl7dmFyIHQ9ZTtyZXR1cm4gS2kuZGVmaW5lZCh0KSYmS2kuc3RyaW5nKHQudXJpKX0sKEpyPSRyfHwoJHI9e30pKS5jcmVhdGU9ZnVuY3Rpb24oZSx0KXtyZXR1cm57dXJpOmUsdmVyc2lvbjp0fX0sSnIuaXM9ZnVuY3Rpb24oZSl7dmFyIHQ9ZTtyZXR1cm4gS2kuZGVmaW5lZCh0KSYmS2kuc3RyaW5nKHQudXJpKSYmS2kuaW50ZWdlcih0LnZlcnNpb24pfSwoWXI9WHJ8fChYcj17fSkpLmNyZWF0ZT1mdW5jdGlvbihlLHQpe3JldHVybnt1cmk6ZSx2ZXJzaW9uOnR9fSxZci5pcz1mdW5jdGlvbihlKXt2YXIgdD1lO3JldHVybiBLaS5kZWZpbmVkKHQpJiZLaS5zdHJpbmcodC51cmkpJiYobnVsbD09PXQudmVyc2lvbnx8S2kuaW50ZWdlcih0LnZlcnNpb24pKX0sKFpyPVFyfHwoUXI9e30pKS5jcmVhdGU9ZnVuY3Rpb24oZSx0LG4scil7cmV0dXJue3VyaTplLGxhbmd1YWdlSWQ6dCx2ZXJzaW9uOm4sdGV4dDpyfX0sWnIuaXM9ZnVuY3Rpb24oZSl7dmFyIHQ9ZTtyZXR1cm4gS2kuZGVmaW5lZCh0KSYmS2kuc3RyaW5nKHQudXJpKSYmS2kuc3RyaW5nKHQubGFuZ3VhZ2VJZCkmJktpLmludGVnZXIodC52ZXJzaW9uKSYmS2kuc3RyaW5nKHQudGV4dCl9LCh0aT1laXx8KGVpPXt9KSkuUGxhaW5UZXh0PSJwbGFpbnRleHQiLHRpLk1hcmtkb3duPSJtYXJrZG93biIsZnVuY3Rpb24oZSl7ZS5pcz1mdW5jdGlvbih0KXt2YXIgbj10O3JldHVybiBuPT09ZS5QbGFpblRleHR8fG49PT1lLk1hcmtkb3dufX0oZWl8fChlaT17fSkpLChuaXx8KG5pPXt9KSkuaXM9ZnVuY3Rpb24oZSl7dmFyIHQ9ZTtyZXR1cm4gS2kub2JqZWN0TGl0ZXJhbChlKSYmZWkuaXModC5raW5kKSYmS2kuc3RyaW5nKHQudmFsdWUpfSwoaWk9cml8fChyaT17fSkpLlRleHQ9MSxpaS5NZXRob2Q9MixpaS5GdW5jdGlvbj0zLGlpLkNvbnN0cnVjdG9yPTQsaWkuRmllbGQ9NSxpaS5WYXJpYWJsZT02LGlpLkNsYXNzPTcsaWkuSW50ZXJmYWNlPTgsaWkuTW9kdWxlPTksaWkuUHJvcGVydHk9MTAsaWkuVW5pdD0xMSxpaS5WYWx1ZT0xMixpaS5FbnVtPTEzLGlpLktleXdvcmQ9MTQsaWkuU25pcHBldD0xNSxpaS5Db2xvcj0xNixpaS5GaWxlPTE3LGlpLlJlZmVyZW5jZT0xOCxpaS5Gb2xkZXI9MTksaWkuRW51bU1lbWJlcj0yMCxpaS5Db25zdGFudD0yMSxpaS5TdHJ1Y3Q9MjIsaWkuRXZlbnQ9MjMsaWkuT3BlcmF0b3I9MjQsaWkuVHlwZVBhcmFtZXRlcj0yNSwob2k9YWl8fChhaT17fSkpLlBsYWluVGV4dD0xLG9pLlNuaXBwZXQ9Miwoc2l8fChzaT17fSkpLkRlcHJlY2F0ZWQ9MSwoY2k9bGl8fChsaT17fSkpLmNyZWF0ZT1mdW5jdGlvbihlLHQsbil7cmV0dXJue25ld1RleHQ6ZSxpbnNlcnQ6dCxyZXBsYWNlOm59fSxjaS5pcz1mdW5jdGlvbihlKXt2YXIgdD1lO3JldHVybiB0JiZLaS5zdHJpbmcodC5uZXdUZXh0KSYmcnIuaXModC5pbnNlcnQpJiZyci5pcyh0LnJlcGxhY2UpfSwoZGk9aGl8fChoaT17fSkpLmFzSXM9MSxkaS5hZGp1c3RJbmRlbnRhdGlvbj0yLCh1aXx8KHVpPXt9KSkuY3JlYXRlPWZ1bmN0aW9uKGUpe3JldHVybntsYWJlbDplfX0sKHBpfHwocGk9e30pKS5jcmVhdGU9ZnVuY3Rpb24oZSx0KXtyZXR1cm57aXRlbXM6ZXx8W10saXNJbmNvbXBsZXRlOiEhdH19LChmaT1taXx8KG1pPXt9KSkuZnJvbVBsYWluVGV4dD1mdW5jdGlvbihlKXtyZXR1cm4gZS5yZXBsYWNlKC9bXFxgKl97fVtcXSgpIytcLS4hXS9nLCJcXCQmIil9LGZpLmlzPWZ1bmN0aW9uKGUpe3ZhciB0PWU7cmV0dXJuIEtpLnN0cmluZyh0KXx8S2kub2JqZWN0TGl0ZXJhbCh0KSYmS2kuc3RyaW5nKHQubGFuZ3VhZ2UpJiZLaS5zdHJpbmcodC52YWx1ZSl9LChnaXx8KGdpPXt9KSkuaXM9ZnVuY3Rpb24oZSl7dmFyIHQ9ZTtyZXR1cm4hIXQmJktpLm9iamVjdExpdGVyYWwodCkmJihuaS5pcyh0LmNvbnRlbnRzKXx8bWkuaXModC5jb250ZW50cyl8fEtpLnR5cGVkQXJyYXkodC5jb250ZW50cyxtaS5pcykpJiYodm9pZCAwPT09ZS5yYW5nZXx8cnIuaXMoZS5yYW5nZSkpfSwoYml8fChiaT17fSkpLmNyZWF0ZT1mdW5jdGlvbihlLHQpe3JldHVybiB0P3tsYWJlbDplLGRvY3VtZW50YXRpb246dH06e2xhYmVsOmV9fSwod2l8fCh3aT17fSkpLmNyZWF0ZT1mdW5jdGlvbihlLHQpe2Zvcih2YXIgbj1bXSxyPTI7cjxhcmd1bWVudHMubGVuZ3RoO3IrKyluW3ItMl09YXJndW1lbnRzW3JdO3ZhciBpPXtsYWJlbDplfTtyZXR1cm4gS2kuZGVmaW5lZCh0KSYmKGkuZG9jdW1lbnRhdGlvbj10KSxLaS5kZWZpbmVkKG4pP2kucGFyYW1ldGVycz1uOmkucGFyYW1ldGVycz1bXSxpfSwodmk9X2l8fChfaT17fSkpLlRleHQ9MSx2aS5SZWFkPTIsdmkuV3JpdGU9MywoeWl8fCh5aT17fSkpLmNyZWF0ZT1mdW5jdGlvbihlLHQpe3ZhciBuPXtyYW5nZTplfTtyZXR1cm4gS2kubnVtYmVyKHQpJiYobi5raW5kPXQpLG59LChraT1UaXx8KFRpPXt9KSkuRmlsZT0xLGtpLk1vZHVsZT0yLGtpLk5hbWVzcGFjZT0zLGtpLlBhY2thZ2U9NCxraS5DbGFzcz01LGtpLk1ldGhvZD02LGtpLlByb3BlcnR5PTcsa2kuRmllbGQ9OCxraS5Db25zdHJ1Y3Rvcj05LGtpLkVudW09MTAsa2kuSW50ZXJmYWNlPTExLGtpLkZ1bmN0aW9uPTEyLGtpLlZhcmlhYmxlPTEzLGtpLkNvbnN0YW50PTE0LGtpLlN0cmluZz0xNSxraS5OdW1iZXI9MTYsa2kuQm9vbGVhbj0xNyxraS5BcnJheT0xOCxraS5PYmplY3Q9MTksa2kuS2V5PTIwLGtpLk51bGw9MjEsa2kuRW51bU1lbWJlcj0yMixraS5TdHJ1Y3Q9MjMsa2kuRXZlbnQ9MjQsa2kuT3BlcmF0b3I9MjUsa2kuVHlwZVBhcmFtZXRlcj0yNiwoU2l8fChTaT17fSkpLkRlcHJlY2F0ZWQ9MSwoQ2l8fChDaT17fSkpLmNyZWF0ZT1mdW5jdGlvbihlLHQsbixyLGkpe3ZhciBhPXtuYW1lOmUsa2luZDp0LGxvY2F0aW9uOnt1cmk6cixyYW5nZTpufX07cmV0dXJuIGkmJihhLmNvbnRhaW5lck5hbWU9aSksYX0sKExpPXhpfHwoeGk9e30pKS5jcmVhdGU9ZnVuY3Rpb24oZSx0LG4scixpLGEpe3ZhciBvPXtuYW1lOmUsZGV0YWlsOnQsa2luZDpuLHJhbmdlOnIsc2VsZWN0aW9uUmFuZ2U6aX07cmV0dXJuIHZvaWQgMCE9PWEmJihvLmNoaWxkcmVuPWEpLG99LExpLmlzPWZ1bmN0aW9uKGUpe3ZhciB0PWU7cmV0dXJuIHQmJktpLnN0cmluZyh0Lm5hbWUpJiZLaS5udW1iZXIodC5raW5kKSYmcnIuaXModC5yYW5nZSkmJnJyLmlzKHQuc2VsZWN0aW9uUmFuZ2UpJiYodm9pZCAwPT09dC5kZXRhaWx8fEtpLnN0cmluZyh0LmRldGFpbCkpJiYodm9pZCAwPT09dC5kZXByZWNhdGVkfHxLaS5ib29sZWFuKHQuZGVwcmVjYXRlZCkpJiYodm9pZCAwPT09dC5jaGlsZHJlbnx8QXJyYXkuaXNBcnJheSh0LmNoaWxkcmVuKSkmJih2b2lkIDA9PT10LnRhZ3N8fEFycmF5LmlzQXJyYXkodC50YWdzKSl9LChBaT1FaXx8KEVpPXt9KSkuRW1wdHk9IiIsQWkuUXVpY2tGaXg9InF1aWNrZml4IixBaS5SZWZhY3Rvcj0icmVmYWN0b3IiLEFpLlJlZmFjdG9yRXh0cmFjdD0icmVmYWN0b3IuZXh0cmFjdCIsQWkuUmVmYWN0b3JJbmxpbmU9InJlZmFjdG9yLmlubGluZSIsQWkuUmVmYWN0b3JSZXdyaXRlPSJyZWZhY3Rvci5yZXdyaXRlIixBaS5Tb3VyY2U9InNvdXJjZSIsQWkuU291cmNlT3JnYW5pemVJbXBvcnRzPSJzb3VyY2Uub3JnYW5pemVJbXBvcnRzIixBaS5Tb3VyY2VGaXhBbGw9InNvdXJjZS5maXhBbGwiLChSaT1NaXx8KE1pPXt9KSkuY3JlYXRlPWZ1bmN0aW9uKGUsdCl7dmFyIG49e2RpYWdub3N0aWNzOmV9O3JldHVybiBudWxsIT10JiYobi5vbmx5PXQpLG59LFJpLmlzPWZ1bmN0aW9uKGUpe3ZhciB0PWU7cmV0dXJuIEtpLmRlZmluZWQodCkmJktpLnR5cGVkQXJyYXkodC5kaWFnbm9zdGljcyx4ci5pcykmJih2b2lkIDA9PT10Lm9ubHl8fEtpLnR5cGVkQXJyYXkodC5vbmx5LEtpLnN0cmluZykpfSwoTmk9SWl8fChJaT17fSkpLmNyZWF0ZT1mdW5jdGlvbihlLHQsbil7dmFyIHI9e3RpdGxlOmV9LGk9ITA7cmV0dXJuInN0cmluZyI9PXR5cGVvZiB0PyhpPSExLHIua2luZD10KTpFci5pcyh0KT9yLmNvbW1hbmQ9dDpyLmVkaXQ9dCxpJiZ2b2lkIDAhPT1uJiYoci5raW5kPW4pLHJ9LE5pLmlzPWZ1bmN0aW9uKGUpe3ZhciB0PWU7cmV0dXJuIHQmJktpLnN0cmluZyh0LnRpdGxlKSYmKHZvaWQgMD09PXQuZGlhZ25vc3RpY3N8fEtpLnR5cGVkQXJyYXkodC5kaWFnbm9zdGljcyx4ci5pcykpJiYodm9pZCAwPT09dC5raW5kfHxLaS5zdHJpbmcodC5raW5kKSkmJih2b2lkIDAhPT10LmVkaXR8fHZvaWQgMCE9PXQuY29tbWFuZCkmJih2b2lkIDA9PT10LmNvbW1hbmR8fEVyLmlzKHQuY29tbWFuZCkpJiYodm9pZCAwPT09dC5pc1ByZWZlcnJlZHx8S2kuYm9vbGVhbih0LmlzUHJlZmVycmVkKSkmJih2b2lkIDA9PT10LmVkaXR8fEtyLmlzKHQuZWRpdCkpfSwoSGk9VWl8fChVaT17fSkpLmNyZWF0ZT1mdW5jdGlvbihlLHQpe3ZhciBuPXtyYW5nZTplfTtyZXR1cm4gS2kuZGVmaW5lZCh0KSYmKG4uZGF0YT10KSxufSxIaS5pcz1mdW5jdGlvbihlKXt2YXIgdD1lO3JldHVybiBLaS5kZWZpbmVkKHQpJiZyci5pcyh0LnJhbmdlKSYmKEtpLnVuZGVmaW5lZCh0LmNvbW1hbmQpfHxFci5pcyh0LmNvbW1hbmQpKX0sKERpPXppfHwoemk9e30pKS5jcmVhdGU9ZnVuY3Rpb24oZSx0KXtyZXR1cm57dGFiU2l6ZTplLGluc2VydFNwYWNlczp0fX0sRGkuaXM9ZnVuY3Rpb24oZSl7dmFyIHQ9ZTtyZXR1cm4gS2kuZGVmaW5lZCh0KSYmS2kudWludGVnZXIodC50YWJTaXplKSYmS2kuYm9vbGVhbih0Lmluc2VydFNwYWNlcyl9LChPaT1XaXx8KFdpPXt9KSkuY3JlYXRlPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm57cmFuZ2U6ZSx0YXJnZXQ6dCxkYXRhOm59fSxPaS5pcz1mdW5jdGlvbihlKXt2YXIgdD1lO3JldHVybiBLaS5kZWZpbmVkKHQpJiZyci5pcyh0LnJhbmdlKSYmKEtpLnVuZGVmaW5lZCh0LnRhcmdldCl8fEtpLnN0cmluZyh0LnRhcmdldCkpfSwocWk9UGl8fChQaT17fSkpLmNyZWF0ZT1mdW5jdGlvbihlLHQpe3JldHVybntyYW5nZTplLHBhcmVudDp0fX0scWkuaXM9ZnVuY3Rpb24oZSl7dmFyIHQ9ZTtyZXR1cm4gdm9pZCAwIT09dCYmcnIuaXModC5yYW5nZSkmJih2b2lkIDA9PT10LnBhcmVudHx8cWkuaXModC5wYXJlbnQpKX0sZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChlLG4pe2lmKGUubGVuZ3RoPD0xKXJldHVybiBlO3ZhciByPWUubGVuZ3RoLzJ8MCxpPWUuc2xpY2UoMCxyKSxhPWUuc2xpY2Uocik7dChpLG4pLHQoYSxuKTtmb3IodmFyIG89MCxzPTAsbD0wO288aS5sZW5ndGgmJnM8YS5sZW5ndGg7KXt2YXIgYz1uKGlbb10sYVtzXSk7ZVtsKytdPWM8PTA/aVtvKytdOmFbcysrXX1mb3IoO288aS5sZW5ndGg7KWVbbCsrXT1pW28rK107Zm9yKDtzPGEubGVuZ3RoOyllW2wrK109YVtzKytdO3JldHVybiBlfWUuY3JlYXRlPWZ1bmN0aW9uKGUsdCxuLHIpe3JldHVybiBuZXcgJGkoZSx0LG4scil9LGUuaXM9ZnVuY3Rpb24oZSl7dmFyIHQ9ZTtyZXR1cm4hIShLaS5kZWZpbmVkKHQpJiZLaS5zdHJpbmcodC51cmkpJiYoS2kudW5kZWZpbmVkKHQubGFuZ3VhZ2VJZCl8fEtpLnN0cmluZyh0Lmxhbmd1YWdlSWQpKSYmS2kudWludGVnZXIodC5saW5lQ291bnQpJiZLaS5mdW5jKHQuZ2V0VGV4dCkmJktpLmZ1bmModC5wb3NpdGlvbkF0KSYmS2kuZnVuYyh0Lm9mZnNldEF0KSl9LGUuYXBwbHlFZGl0cz1mdW5jdGlvbihlLG4pe2Zvcih2YXIgcj1lLmdldFRleHQoKSxpPXQobiwoZnVuY3Rpb24oZSx0KXt2YXIgbj1lLnJhbmdlLnN0YXJ0LmxpbmUtdC5yYW5nZS5zdGFydC5saW5lO3JldHVybiAwPT09bj9lLnJhbmdlLnN0YXJ0LmNoYXJhY3Rlci10LnJhbmdlLnN0YXJ0LmNoYXJhY3RlcjpufSkpLGE9ci5sZW5ndGgsbz1pLmxlbmd0aC0xO28+PTA7by0tKXt2YXIgcz1pW29dLGw9ZS5vZmZzZXRBdChzLnJhbmdlLnN0YXJ0KSxjPWUub2Zmc2V0QXQocy5yYW5nZS5lbmQpO2lmKCEoYzw9YSkpdGhyb3cgbmV3IEVycm9yKCJPdmVybGFwcGluZyBlZGl0Iik7cj1yLnN1YnN0cmluZygwLGwpK3MubmV3VGV4dCtyLnN1YnN0cmluZyhjLHIubGVuZ3RoKSxhPWx9cmV0dXJuIHJ9fShGaXx8KEZpPXt9KSk7dmFyIEtpLGppLEdpLCRpPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQsbixyKXt0aGlzLl91cmk9ZSx0aGlzLl9sYW5ndWFnZUlkPXQsdGhpcy5fdmVyc2lvbj1uLHRoaXMuX2NvbnRlbnQ9cix0aGlzLl9saW5lT2Zmc2V0cz12b2lkIDB9cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwidXJpIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3VyaX0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsImxhbmd1YWdlSWQiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbGFuZ3VhZ2VJZH0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsInZlcnNpb24iLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fdmVyc2lvbn0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxlLnByb3RvdHlwZS5nZXRUZXh0PWZ1bmN0aW9uKGUpe2lmKGUpe3ZhciB0PXRoaXMub2Zmc2V0QXQoZS5zdGFydCksbj10aGlzLm9mZnNldEF0KGUuZW5kKTtyZXR1cm4gdGhpcy5fY29udGVudC5zdWJzdHJpbmcodCxuKX1yZXR1cm4gdGhpcy5fY29udGVudH0sZS5wcm90b3R5cGUudXBkYXRlPWZ1bmN0aW9uKGUsdCl7dGhpcy5fY29udGVudD1lLnRleHQsdGhpcy5fdmVyc2lvbj10LHRoaXMuX2xpbmVPZmZzZXRzPXZvaWQgMH0sZS5wcm90b3R5cGUuZ2V0TGluZU9mZnNldHM9ZnVuY3Rpb24oKXtpZih2b2lkIDA9PT10aGlzLl9saW5lT2Zmc2V0cyl7Zm9yKHZhciBlPVtdLHQ9dGhpcy5fY29udGVudCxuPSEwLHI9MDtyPHQubGVuZ3RoO3IrKyl7biYmKGUucHVzaChyKSxuPSExKTt2YXIgaT10LmNoYXJBdChyKTtuPSJcciI9PT1pfHwiXG4iPT09aSwiXHIiPT09aSYmcisxPHQubGVuZ3RoJiYiXG4iPT09dC5jaGFyQXQocisxKSYmcisrfW4mJnQubGVuZ3RoPjAmJmUucHVzaCh0Lmxlbmd0aCksdGhpcy5fbGluZU9mZnNldHM9ZX1yZXR1cm4gdGhpcy5fbGluZU9mZnNldHN9LGUucHJvdG90eXBlLnBvc2l0aW9uQXQ9ZnVuY3Rpb24oZSl7ZT1NYXRoLm1heChNYXRoLm1pbihlLHRoaXMuX2NvbnRlbnQubGVuZ3RoKSwwKTt2YXIgdD10aGlzLmdldExpbmVPZmZzZXRzKCksbj0wLHI9dC5sZW5ndGg7aWYoMD09PXIpcmV0dXJuIHRyLmNyZWF0ZSgwLGUpO2Zvcig7bjxyOyl7dmFyIGk9TWF0aC5mbG9vcigobityKS8yKTt0W2ldPmU/cj1pOm49aSsxfXZhciBhPW4tMTtyZXR1cm4gdHIuY3JlYXRlKGEsZS10W2FdKX0sZS5wcm90b3R5cGUub2Zmc2V0QXQ9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5nZXRMaW5lT2Zmc2V0cygpO2lmKGUubGluZT49dC5sZW5ndGgpcmV0dXJuIHRoaXMuX2NvbnRlbnQubGVuZ3RoO2lmKGUubGluZTwwKXJldHVybiAwO3ZhciBuPXRbZS5saW5lXSxyPWUubGluZSsxPHQubGVuZ3RoP3RbZS5saW5lKzFdOnRoaXMuX2NvbnRlbnQubGVuZ3RoO3JldHVybiBNYXRoLm1heChNYXRoLm1pbihuK2UuY2hhcmFjdGVyLHIpLG4pfSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsImxpbmVDb3VudCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmdldExpbmVPZmZzZXRzKCkubGVuZ3RofSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLGV9KCk7amk9S2l8fChLaT17fSksR2k9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZyxqaS5kZWZpbmVkPWZ1bmN0aW9uKGUpe3JldHVybiB2b2lkIDAhPT1lfSxqaS51bmRlZmluZWQ9ZnVuY3Rpb24oZSl7cmV0dXJuIHZvaWQgMD09PWV9LGppLmJvb2xlYW49ZnVuY3Rpb24oZSl7cmV0dXJuITA9PT1lfHwhMT09PWV9LGppLnN0cmluZz1mdW5jdGlvbihlKXtyZXR1cm4iW29iamVjdCBTdHJpbmddIj09PUdpLmNhbGwoZSl9LGppLm51bWJlcj1mdW5jdGlvbihlKXtyZXR1cm4iW29iamVjdCBOdW1iZXJdIj09PUdpLmNhbGwoZSl9LGppLm51bWJlclJhbmdlPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4iW29iamVjdCBOdW1iZXJdIj09PUdpLmNhbGwoZSkmJnQ8PWUmJmU8PW59LGppLmludGVnZXI9ZnVuY3Rpb24oZSl7cmV0dXJuIltvYmplY3QgTnVtYmVyXSI9PT1HaS5jYWxsKGUpJiYtMjE0NzQ4MzY0ODw9ZSYmZTw9MjE0NzQ4MzY0N30samkudWludGVnZXI9ZnVuY3Rpb24oZSl7cmV0dXJuIltvYmplY3QgTnVtYmVyXSI9PT1HaS5jYWxsKGUpJiYwPD1lJiZlPD0yMTQ3NDgzNjQ3fSxqaS5mdW5jPWZ1bmN0aW9uKGUpe3JldHVybiJbb2JqZWN0IEZ1bmN0aW9uXSI9PT1HaS5jYWxsKGUpfSxqaS5vYmplY3RMaXRlcmFsPWZ1bmN0aW9uKGUpe3JldHVybiBudWxsIT09ZSYmIm9iamVjdCI9PXR5cGVvZiBlfSxqaS50eXBlZEFycmF5PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIEFycmF5LmlzQXJyYXkoZSkmJmUuZXZlcnkodCl9O3ZhciBKaSxYaSxZaSxRaSxaaSxlYSx0YSxuYSxyYSxpYT1jbGFzc3tjb25zdHJ1Y3RvcihlLHQsbixyKXt0aGlzLl91cmk9ZSx0aGlzLl9sYW5ndWFnZUlkPXQsdGhpcy5fdmVyc2lvbj1uLHRoaXMuX2NvbnRlbnQ9cix0aGlzLl9saW5lT2Zmc2V0cz12b2lkIDB9Z2V0IHVyaSgpe3JldHVybiB0aGlzLl91cml9Z2V0IGxhbmd1YWdlSWQoKXtyZXR1cm4gdGhpcy5fbGFuZ3VhZ2VJZH1nZXQgdmVyc2lvbigpe3JldHVybiB0aGlzLl92ZXJzaW9ufWdldFRleHQoZSl7aWYoZSl7Y29uc3QgdD10aGlzLm9mZnNldEF0KGUuc3RhcnQpLG49dGhpcy5vZmZzZXRBdChlLmVuZCk7cmV0dXJuIHRoaXMuX2NvbnRlbnQuc3Vic3RyaW5nKHQsbil9cmV0dXJuIHRoaXMuX2NvbnRlbnR9dXBkYXRlKGUsdCl7Zm9yKGxldCB0IG9mIGUpaWYoaWEuaXNJbmNyZW1lbnRhbCh0KSl7Y29uc3QgZT1zYSh0LnJhbmdlKSxuPXRoaXMub2Zmc2V0QXQoZS5zdGFydCkscj10aGlzLm9mZnNldEF0KGUuZW5kKTt0aGlzLl9jb250ZW50PXRoaXMuX2NvbnRlbnQuc3Vic3RyaW5nKDAsbikrdC50ZXh0K3RoaXMuX2NvbnRlbnQuc3Vic3RyaW5nKHIsdGhpcy5fY29udGVudC5sZW5ndGgpO2NvbnN0IGk9TWF0aC5tYXgoZS5zdGFydC5saW5lLDApLGE9TWF0aC5tYXgoZS5lbmQubGluZSwwKTtsZXQgbz10aGlzLl9saW5lT2Zmc2V0cztjb25zdCBzPW9hKHQudGV4dCwhMSxuKTtpZihhLWk9PT1zLmxlbmd0aClmb3IobGV0IGU9MCx0PXMubGVuZ3RoO2U8dDtlKyspb1tlK2krMV09c1tlXTtlbHNlIHMubGVuZ3RoPDFlND9vLnNwbGljZShpKzEsYS1pLC4uLnMpOnRoaXMuX2xpbmVPZmZzZXRzPW89by5zbGljZSgwLGkrMSkuY29uY2F0KHMsby5zbGljZShhKzEpKTtjb25zdCBsPXQudGV4dC5sZW5ndGgtKHItbik7aWYoMCE9PWwpZm9yKGxldCBlPWkrMStzLmxlbmd0aCx0PW8ubGVuZ3RoO2U8dDtlKyspb1tlXT1vW2VdK2x9ZWxzZXtpZighaWEuaXNGdWxsKHQpKXRocm93IG5ldyBFcnJvcigiVW5rbm93biBjaGFuZ2UgZXZlbnQgcmVjZWl2ZWQiKTt0aGlzLl9jb250ZW50PXQudGV4dCx0aGlzLl9saW5lT2Zmc2V0cz12b2lkIDB9dGhpcy5fdmVyc2lvbj10fWdldExpbmVPZmZzZXRzKCl7cmV0dXJuIHZvaWQgMD09PXRoaXMuX2xpbmVPZmZzZXRzJiYodGhpcy5fbGluZU9mZnNldHM9b2EodGhpcy5fY29udGVudCwhMCkpLHRoaXMuX2xpbmVPZmZzZXRzfXBvc2l0aW9uQXQoZSl7ZT1NYXRoLm1heChNYXRoLm1pbihlLHRoaXMuX2NvbnRlbnQubGVuZ3RoKSwwKTtsZXQgdD10aGlzLmdldExpbmVPZmZzZXRzKCksbj0wLHI9dC5sZW5ndGg7aWYoMD09PXIpcmV0dXJue2xpbmU6MCxjaGFyYWN0ZXI6ZX07Zm9yKDtuPHI7KXtsZXQgaT1NYXRoLmZsb29yKChuK3IpLzIpO3RbaV0+ZT9yPWk6bj1pKzF9bGV0IGk9bi0xO3JldHVybntsaW5lOmksY2hhcmFjdGVyOmUtdFtpXX19b2Zmc2V0QXQoZSl7bGV0IHQ9dGhpcy5nZXRMaW5lT2Zmc2V0cygpO2lmKGUubGluZT49dC5sZW5ndGgpcmV0dXJuIHRoaXMuX2NvbnRlbnQubGVuZ3RoO2lmKGUubGluZTwwKXJldHVybiAwO2xldCBuPXRbZS5saW5lXSxyPWUubGluZSsxPHQubGVuZ3RoP3RbZS5saW5lKzFdOnRoaXMuX2NvbnRlbnQubGVuZ3RoO3JldHVybiBNYXRoLm1heChNYXRoLm1pbihuK2UuY2hhcmFjdGVyLHIpLG4pfWdldCBsaW5lQ291bnQoKXtyZXR1cm4gdGhpcy5nZXRMaW5lT2Zmc2V0cygpLmxlbmd0aH1zdGF0aWMgaXNJbmNyZW1lbnRhbChlKXtsZXQgdD1lO3JldHVybiBudWxsIT10JiYic3RyaW5nIj09dHlwZW9mIHQudGV4dCYmdm9pZCAwIT09dC5yYW5nZSYmKHZvaWQgMD09PXQucmFuZ2VMZW5ndGh8fCJudW1iZXIiPT10eXBlb2YgdC5yYW5nZUxlbmd0aCl9c3RhdGljIGlzRnVsbChlKXtsZXQgdD1lO3JldHVybiBudWxsIT10JiYic3RyaW5nIj09dHlwZW9mIHQudGV4dCYmdm9pZCAwPT09dC5yYW5nZSYmdm9pZCAwPT09dC5yYW5nZUxlbmd0aH19O2Z1bmN0aW9uIGFhKGUsdCl7aWYoZS5sZW5ndGg8PTEpcmV0dXJuIGU7Y29uc3Qgbj1lLmxlbmd0aC8yfDAscj1lLnNsaWNlKDAsbiksaT1lLnNsaWNlKG4pO2FhKHIsdCksYWEoaSx0KTtsZXQgYT0wLG89MCxzPTA7Zm9yKDthPHIubGVuZ3RoJiZvPGkubGVuZ3RoOyl7bGV0IG49dChyW2FdLGlbb10pO2VbcysrXT1uPD0wP3JbYSsrXTppW28rK119Zm9yKDthPHIubGVuZ3RoOyllW3MrK109clthKytdO2Zvcig7bzxpLmxlbmd0aDspZVtzKytdPWlbbysrXTtyZXR1cm4gZX1mdW5jdGlvbiBvYShlLHQsbj0wKXtjb25zdCByPXQ/W25dOltdO2ZvcihsZXQgdD0wO3Q8ZS5sZW5ndGg7dCsrKXtsZXQgaT1lLmNoYXJDb2RlQXQodCk7MTMhPT1pJiYxMCE9PWl8fCgxMz09PWkmJnQrMTxlLmxlbmd0aCYmMTA9PT1lLmNoYXJDb2RlQXQodCsxKSYmdCsrLHIucHVzaChuK3QrMSkpfXJldHVybiByfWZ1bmN0aW9uIHNhKGUpe2NvbnN0IHQ9ZS5zdGFydCxuPWUuZW5kO3JldHVybiB0LmxpbmU+bi5saW5lfHx0LmxpbmU9PT1uLmxpbmUmJnQuY2hhcmFjdGVyPm4uY2hhcmFjdGVyP3tzdGFydDpuLGVuZDp0fTplfWZ1bmN0aW9uIGxhKGUpe2NvbnN0IHQ9c2EoZS5yYW5nZSk7cmV0dXJuIHQhPT1lLnJhbmdlP3tuZXdUZXh0OmUubmV3VGV4dCxyYW5nZTp0fTplfShYaT1KaXx8KEppPXt9KSkuY3JlYXRlPWZ1bmN0aW9uKGUsdCxuLHIpe3JldHVybiBuZXcgaWEoZSx0LG4scil9LFhpLnVwZGF0ZT1mdW5jdGlvbihlLHQsbil7aWYoZSBpbnN0YW5jZW9mIGlhKXJldHVybiBlLnVwZGF0ZSh0LG4pLGU7dGhyb3cgbmV3IEVycm9yKCJUZXh0RG9jdW1lbnQudXBkYXRlOiBkb2N1bWVudCBtdXN0IGJlIGNyZWF0ZWQgYnkgVGV4dERvY3VtZW50LmNyZWF0ZSIpfSxYaS5hcHBseUVkaXRzPWZ1bmN0aW9uKGUsdCl7bGV0IG49ZS5nZXRUZXh0KCkscj1hYSh0Lm1hcChsYSksKChlLHQpPT57bGV0IG49ZS5yYW5nZS5zdGFydC5saW5lLXQucmFuZ2Uuc3RhcnQubGluZTtyZXR1cm4gMD09PW4/ZS5yYW5nZS5zdGFydC5jaGFyYWN0ZXItdC5yYW5nZS5zdGFydC5jaGFyYWN0ZXI6bn0pKSxpPTA7Y29uc3QgYT1bXTtmb3IoY29uc3QgdCBvZiByKXtsZXQgcj1lLm9mZnNldEF0KHQucmFuZ2Uuc3RhcnQpO2lmKHI8aSl0aHJvdyBuZXcgRXJyb3IoIk92ZXJsYXBwaW5nIGVkaXQiKTtyPmkmJmEucHVzaChuLnN1YnN0cmluZyhpLHIpKSx0Lm5ld1RleHQubGVuZ3RoJiZhLnB1c2godC5uZXdUZXh0KSxpPWUub2Zmc2V0QXQodC5yYW5nZS5lbmQpfXJldHVybiBhLnB1c2gobi5zdWJzdHIoaSkpLGEuam9pbigiIil9LChRaT1ZaXx8KFlpPXt9KSlbUWkuU3RhcnRDb21tZW50VGFnPTBdPSJTdGFydENvbW1lbnRUYWciLFFpW1FpLkNvbW1lbnQ9MV09IkNvbW1lbnQiLFFpW1FpLkVuZENvbW1lbnRUYWc9Ml09IkVuZENvbW1lbnRUYWciLFFpW1FpLlN0YXJ0VGFnT3Blbj0zXT0iU3RhcnRUYWdPcGVuIixRaVtRaS5TdGFydFRhZ0Nsb3NlPTRdPSJTdGFydFRhZ0Nsb3NlIixRaVtRaS5TdGFydFRhZ1NlbGZDbG9zZT01XT0iU3RhcnRUYWdTZWxmQ2xvc2UiLFFpW1FpLlN0YXJ0VGFnPTZdPSJTdGFydFRhZyIsUWlbUWkuRW5kVGFnT3Blbj03XT0iRW5kVGFnT3BlbiIsUWlbUWkuRW5kVGFnQ2xvc2U9OF09IkVuZFRhZ0Nsb3NlIixRaVtRaS5FbmRUYWc9OV09IkVuZFRhZyIsUWlbUWkuRGVsaW1pdGVyQXNzaWduPTEwXT0iRGVsaW1pdGVyQXNzaWduIixRaVtRaS5BdHRyaWJ1dGVOYW1lPTExXT0iQXR0cmlidXRlTmFtZSIsUWlbUWkuQXR0cmlidXRlVmFsdWU9MTJdPSJBdHRyaWJ1dGVWYWx1ZSIsUWlbUWkuU3RhcnREb2N0eXBlVGFnPTEzXT0iU3RhcnREb2N0eXBlVGFnIixRaVtRaS5Eb2N0eXBlPTE0XT0iRG9jdHlwZSIsUWlbUWkuRW5kRG9jdHlwZVRhZz0xNV09IkVuZERvY3R5cGVUYWciLFFpW1FpLkNvbnRlbnQ9MTZdPSJDb250ZW50IixRaVtRaS5XaGl0ZXNwYWNlPTE3XT0iV2hpdGVzcGFjZSIsUWlbUWkuVW5rbm93bj0xOF09IlVua25vd24iLFFpW1FpLlNjcmlwdD0xOV09IlNjcmlwdCIsUWlbUWkuU3R5bGVzPTIwXT0iU3R5bGVzIixRaVtRaS5FT1M9MjFdPSJFT1MiLChlYT1aaXx8KFppPXt9KSlbZWEuV2l0aGluQ29udGVudD0wXT0iV2l0aGluQ29udGVudCIsZWFbZWEuQWZ0ZXJPcGVuaW5nU3RhcnRUYWc9MV09IkFmdGVyT3BlbmluZ1N0YXJ0VGFnIixlYVtlYS5BZnRlck9wZW5pbmdFbmRUYWc9Ml09IkFmdGVyT3BlbmluZ0VuZFRhZyIsZWFbZWEuV2l0aGluRG9jdHlwZT0zXT0iV2l0aGluRG9jdHlwZSIsZWFbZWEuV2l0aGluVGFnPTRdPSJXaXRoaW5UYWciLGVhW2VhLldpdGhpbkVuZFRhZz01XT0iV2l0aGluRW5kVGFnIixlYVtlYS5XaXRoaW5Db21tZW50PTZdPSJXaXRoaW5Db21tZW50IixlYVtlYS5XaXRoaW5TY3JpcHRDb250ZW50PTddPSJXaXRoaW5TY3JpcHRDb250ZW50IixlYVtlYS5XaXRoaW5TdHlsZUNvbnRlbnQ9OF09IldpdGhpblN0eWxlQ29udGVudCIsZWFbZWEuQWZ0ZXJBdHRyaWJ1dGVOYW1lPTldPSJBZnRlckF0dHJpYnV0ZU5hbWUiLGVhW2VhLkJlZm9yZUF0dHJpYnV0ZVZhbHVlPTEwXT0iQmVmb3JlQXR0cmlidXRlVmFsdWUiLCh0YXx8KHRhPXt9KSkuTEFURVNUPXt0ZXh0RG9jdW1lbnQ6e2NvbXBsZXRpb246e2NvbXBsZXRpb25JdGVtOntkb2N1bWVudGF0aW9uRm9ybWF0OltlaS5NYXJrZG93bixlaS5QbGFpblRleHRdfX0saG92ZXI6e2NvbnRlbnRGb3JtYXQ6W2VpLk1hcmtkb3duLGVpLlBsYWluVGV4dF19fX0sKHJhPW5hfHwobmE9e30pKVtyYS5Vbmtub3duPTBdPSJVbmtub3duIixyYVtyYS5GaWxlPTFdPSJGaWxlIixyYVtyYS5EaXJlY3Rvcnk9Ml09IkRpcmVjdG9yeSIscmFbcmEuU3ltYm9saWNMaW5rPTY0XT0iU3ltYm9saWNMaW5rIjt2YXIgY2E9WG4oKSxoYT1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSx0KXt0aGlzLnNvdXJjZT1lLHRoaXMubGVuPWUubGVuZ3RoLHRoaXMucG9zaXRpb249dH1yZXR1cm4gZS5wcm90b3R5cGUuZW9zPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubGVuPD10aGlzLnBvc2l0aW9ufSxlLnByb3RvdHlwZS5nZXRTb3VyY2U9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zb3VyY2V9LGUucHJvdG90eXBlLnBvcz1mdW5jdGlvbigpe3JldHVybiB0aGlzLnBvc2l0aW9ufSxlLnByb3RvdHlwZS5nb0JhY2tUbz1mdW5jdGlvbihlKXt0aGlzLnBvc2l0aW9uPWV9LGUucHJvdG90eXBlLmdvQmFjaz1mdW5jdGlvbihlKXt0aGlzLnBvc2l0aW9uLT1lfSxlLnByb3RvdHlwZS5hZHZhbmNlPWZ1bmN0aW9uKGUpe3RoaXMucG9zaXRpb24rPWV9LGUucHJvdG90eXBlLmdvVG9FbmQ9ZnVuY3Rpb24oKXt0aGlzLnBvc2l0aW9uPXRoaXMuc291cmNlLmxlbmd0aH0sZS5wcm90b3R5cGUubmV4dENoYXI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zb3VyY2UuY2hhckNvZGVBdCh0aGlzLnBvc2l0aW9uKyspfHwwfSxlLnByb3RvdHlwZS5wZWVrQ2hhcj1mdW5jdGlvbihlKXtyZXR1cm4gdm9pZCAwPT09ZSYmKGU9MCksdGhpcy5zb3VyY2UuY2hhckNvZGVBdCh0aGlzLnBvc2l0aW9uK2UpfHwwfSxlLnByb3RvdHlwZS5hZHZhbmNlSWZDaGFyPWZ1bmN0aW9uKGUpe3JldHVybiBlPT09dGhpcy5zb3VyY2UuY2hhckNvZGVBdCh0aGlzLnBvc2l0aW9uKSYmKHRoaXMucG9zaXRpb24rKywhMCl9LGUucHJvdG90eXBlLmFkdmFuY2VJZkNoYXJzPWZ1bmN0aW9uKGUpe3ZhciB0O2lmKHRoaXMucG9zaXRpb24rZS5sZW5ndGg+dGhpcy5zb3VyY2UubGVuZ3RoKXJldHVybiExO2Zvcih0PTA7dDxlLmxlbmd0aDt0KyspaWYodGhpcy5zb3VyY2UuY2hhckNvZGVBdCh0aGlzLnBvc2l0aW9uK3QpIT09ZVt0XSlyZXR1cm4hMTtyZXR1cm4gdGhpcy5hZHZhbmNlKHQpLCEwfSxlLnByb3RvdHlwZS5hZHZhbmNlSWZSZWdFeHA9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5zb3VyY2Uuc3Vic3RyKHRoaXMucG9zaXRpb24pLm1hdGNoKGUpO3JldHVybiB0Pyh0aGlzLnBvc2l0aW9uPXRoaXMucG9zaXRpb24rdC5pbmRleCt0WzBdLmxlbmd0aCx0WzBdKToiIn0sZS5wcm90b3R5cGUuYWR2YW5jZVVudGlsUmVnRXhwPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuc291cmNlLnN1YnN0cih0aGlzLnBvc2l0aW9uKS5tYXRjaChlKTtyZXR1cm4gdD8odGhpcy5wb3NpdGlvbj10aGlzLnBvc2l0aW9uK3QuaW5kZXgsdFswXSk6KHRoaXMuZ29Ub0VuZCgpLCIiKX0sZS5wcm90b3R5cGUuYWR2YW5jZVVudGlsQ2hhcj1mdW5jdGlvbihlKXtmb3IoO3RoaXMucG9zaXRpb248dGhpcy5zb3VyY2UubGVuZ3RoOyl7aWYodGhpcy5zb3VyY2UuY2hhckNvZGVBdCh0aGlzLnBvc2l0aW9uKT09PWUpcmV0dXJuITA7dGhpcy5hZHZhbmNlKDEpfXJldHVybiExfSxlLnByb3RvdHlwZS5hZHZhbmNlVW50aWxDaGFycz1mdW5jdGlvbihlKXtmb3IoO3RoaXMucG9zaXRpb24rZS5sZW5ndGg8PXRoaXMuc291cmNlLmxlbmd0aDspe2Zvcih2YXIgdD0wO3Q8ZS5sZW5ndGgmJnRoaXMuc291cmNlLmNoYXJDb2RlQXQodGhpcy5wb3NpdGlvbit0KT09PWVbdF07dCsrKTtpZih0PT09ZS5sZW5ndGgpcmV0dXJuITA7dGhpcy5hZHZhbmNlKDEpfXJldHVybiB0aGlzLmdvVG9FbmQoKSwhMX0sZS5wcm90b3R5cGUuc2tpcFdoaXRlc3BhY2U9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5hZHZhbmNlV2hpbGVDaGFyKChmdW5jdGlvbihlKXtyZXR1cm4gZT09PVRhfHxlPT09a2F8fGU9PT1fYXx8ZT09PXlhfHxlPT09dmF9KSk+MH0sZS5wcm90b3R5cGUuYWR2YW5jZVdoaWxlQ2hhcj1mdW5jdGlvbihlKXtmb3IodmFyIHQ9dGhpcy5wb3NpdGlvbjt0aGlzLnBvc2l0aW9uPHRoaXMubGVuJiZlKHRoaXMuc291cmNlLmNoYXJDb2RlQXQodGhpcy5wb3NpdGlvbikpOyl0aGlzLnBvc2l0aW9uKys7cmV0dXJuIHRoaXMucG9zaXRpb24tdH0sZX0oKSxkYT0iISIuY2hhckNvZGVBdCgwKSx1YT0iLSIuY2hhckNvZGVBdCgwKSxwYT0iPCIuY2hhckNvZGVBdCgwKSxtYT0iPiIuY2hhckNvZGVBdCgwKSxmYT0iLyIuY2hhckNvZGVBdCgwKSxnYT0iPSIuY2hhckNvZGVBdCgwKSxiYT0nIicuY2hhckNvZGVBdCgwKSx3YT0iJyIuY2hhckNvZGVBdCgwKSxfYT0iXG4iLmNoYXJDb2RlQXQoMCksdmE9IlxyIi5jaGFyQ29kZUF0KDApLHlhPSJcZiIuY2hhckNvZGVBdCgwKSxUYT0iICIuY2hhckNvZGVBdCgwKSxrYT0iXHQiLmNoYXJDb2RlQXQoMCksU2E9eyJ0ZXh0L3gtaGFuZGxlYmFycy10ZW1wbGF0ZSI6ITAsInRleHQvaHRtbCI6ITB9O2Z1bmN0aW9uIENhKGUsdCxuLHIpe3ZvaWQgMD09PXQmJih0PTApLHZvaWQgMD09PW4mJihuPVppLldpdGhpbkNvbnRlbnQpLHZvaWQgMD09PXImJihyPSExKTt2YXIgaSxhLG8scyxsLGM9bmV3IGhhKGUsdCksaD1uLGQ9MCx1PVlpLlVua25vd247ZnVuY3Rpb24gcCgpe3JldHVybiBjLmFkdmFuY2VJZlJlZ0V4cCgvXltfOlx3XVtfOlx3LS5cZF0qLykudG9Mb3dlckNhc2UoKX1mdW5jdGlvbiBtKGUsdCxuKXtyZXR1cm4gdT10LGQ9ZSxpPW4sdH1mdW5jdGlvbiBmKCl7dmFyIGUsdD1jLnBvcygpO2lmKGMuZW9zKCkpcmV0dXJuIG0odCxZaS5FT1MpO3N3aXRjaChoKXtjYXNlIFppLldpdGhpbkNvbW1lbnQ6cmV0dXJuIGMuYWR2YW5jZUlmQ2hhcnMoW3VhLHVhLG1hXSk/KGg9WmkuV2l0aGluQ29udGVudCxtKHQsWWkuRW5kQ29tbWVudFRhZykpOihjLmFkdmFuY2VVbnRpbENoYXJzKFt1YSx1YSxtYV0pLG0odCxZaS5Db21tZW50KSk7Y2FzZSBaaS5XaXRoaW5Eb2N0eXBlOnJldHVybiBjLmFkdmFuY2VJZkNoYXIobWEpPyhoPVppLldpdGhpbkNvbnRlbnQsbSh0LFlpLkVuZERvY3R5cGVUYWcpKTooYy5hZHZhbmNlVW50aWxDaGFyKG1hKSxtKHQsWWkuRG9jdHlwZSkpO2Nhc2UgWmkuV2l0aGluQ29udGVudDppZihjLmFkdmFuY2VJZkNoYXIocGEpKXtpZighYy5lb3MoKSYmYy5wZWVrQ2hhcigpPT09ZGEpe2lmKGMuYWR2YW5jZUlmQ2hhcnMoW2RhLHVhLHVhXSkpcmV0dXJuIGg9WmkuV2l0aGluQ29tbWVudCxtKHQsWWkuU3RhcnRDb21tZW50VGFnKTtpZihjLmFkdmFuY2VJZlJlZ0V4cCgvXiFkb2N0eXBlL2kpKXJldHVybiBoPVppLldpdGhpbkRvY3R5cGUsbSh0LFlpLlN0YXJ0RG9jdHlwZVRhZyl9cmV0dXJuIGMuYWR2YW5jZUlmQ2hhcihmYSk/KGg9WmkuQWZ0ZXJPcGVuaW5nRW5kVGFnLG0odCxZaS5FbmRUYWdPcGVuKSk6KGg9WmkuQWZ0ZXJPcGVuaW5nU3RhcnRUYWcsbSh0LFlpLlN0YXJ0VGFnT3BlbikpfXJldHVybiBjLmFkdmFuY2VVbnRpbENoYXIocGEpLG0odCxZaS5Db250ZW50KTtjYXNlIFppLkFmdGVyT3BlbmluZ0VuZFRhZzpyZXR1cm4gcCgpLmxlbmd0aD4wPyhoPVppLldpdGhpbkVuZFRhZyxtKHQsWWkuRW5kVGFnKSk6Yy5za2lwV2hpdGVzcGFjZSgpP20odCxZaS5XaGl0ZXNwYWNlLGNhKCJlcnJvci51bmV4cGVjdGVkV2hpdGVzcGFjZSIsIlRhZyBuYW1lIG11c3QgZGlyZWN0bHkgZm9sbG93IHRoZSBvcGVuIGJyYWNrZXQuIikpOihoPVppLldpdGhpbkVuZFRhZyxjLmFkdmFuY2VVbnRpbENoYXIobWEpLHQ8Yy5wb3MoKT9tKHQsWWkuVW5rbm93bixjYSgiZXJyb3IuZW5kVGFnTmFtZUV4cGVjdGVkIiwiRW5kIHRhZyBuYW1lIGV4cGVjdGVkLiIpKTpmKCkpO2Nhc2UgWmkuV2l0aGluRW5kVGFnOmlmKGMuc2tpcFdoaXRlc3BhY2UoKSlyZXR1cm4gbSh0LFlpLldoaXRlc3BhY2UpO2lmKGMuYWR2YW5jZUlmQ2hhcihtYSkpcmV0dXJuIGg9WmkuV2l0aGluQ29udGVudCxtKHQsWWkuRW5kVGFnQ2xvc2UpO2lmKHImJmMucGVla0NoYXIoKT09PXBhKXJldHVybiBoPVppLldpdGhpbkNvbnRlbnQsbSh0LFlpLkVuZFRhZ0Nsb3NlLGNhKCJlcnJvci5jbG9zaW5nQnJhY2tldE1pc3NpbmciLCJDbG9zaW5nIGJyYWNrZXQgbWlzc2luZy4iKSk7ZT1jYSgiZXJyb3IuY2xvc2luZ0JyYWNrZXRFeHBlY3RlZCIsIkNsb3NpbmcgYnJhY2tldCBleHBlY3RlZC4iKTticmVhaztjYXNlIFppLkFmdGVyT3BlbmluZ1N0YXJ0VGFnOnJldHVybiBvPXAoKSxsPXZvaWQgMCxzPXZvaWQgMCxvLmxlbmd0aD4wPyhhPSExLGg9WmkuV2l0aGluVGFnLG0odCxZaS5TdGFydFRhZykpOmMuc2tpcFdoaXRlc3BhY2UoKT9tKHQsWWkuV2hpdGVzcGFjZSxjYSgiZXJyb3IudW5leHBlY3RlZFdoaXRlc3BhY2UiLCJUYWcgbmFtZSBtdXN0IGRpcmVjdGx5IGZvbGxvdyB0aGUgb3BlbiBicmFja2V0LiIpKTooaD1aaS5XaXRoaW5UYWcsYy5hZHZhbmNlVW50aWxDaGFyKG1hKSx0PGMucG9zKCk/bSh0LFlpLlVua25vd24sY2EoImVycm9yLnN0YXJ0VGFnTmFtZUV4cGVjdGVkIiwiU3RhcnQgdGFnIG5hbWUgZXhwZWN0ZWQuIikpOmYoKSk7Y2FzZSBaaS5XaXRoaW5UYWc6cmV0dXJuIGMuc2tpcFdoaXRlc3BhY2UoKT8oYT0hMCxtKHQsWWkuV2hpdGVzcGFjZSkpOmEmJihzPWMuYWR2YW5jZUlmUmVnRXhwKC9eW15ccyInPjwvPVx4MDAtXHgwRlx4N0ZceDgwLVx4OUZdKi8pLnRvTG93ZXJDYXNlKCkpLmxlbmd0aD4wPyhoPVppLkFmdGVyQXR0cmlidXRlTmFtZSxhPSExLG0odCxZaS5BdHRyaWJ1dGVOYW1lKSk6Yy5hZHZhbmNlSWZDaGFycyhbZmEsbWFdKT8oaD1aaS5XaXRoaW5Db250ZW50LG0odCxZaS5TdGFydFRhZ1NlbGZDbG9zZSkpOmMuYWR2YW5jZUlmQ2hhcihtYSk/KGg9InNjcmlwdCI9PT1vP2wmJlNhW2xdP1ppLldpdGhpbkNvbnRlbnQ6WmkuV2l0aGluU2NyaXB0Q29udGVudDoic3R5bGUiPT09bz9aaS5XaXRoaW5TdHlsZUNvbnRlbnQ6WmkuV2l0aGluQ29udGVudCxtKHQsWWkuU3RhcnRUYWdDbG9zZSkpOnImJmMucGVla0NoYXIoKT09PXBhPyhoPVppLldpdGhpbkNvbnRlbnQsbSh0LFlpLlN0YXJ0VGFnQ2xvc2UsY2EoImVycm9yLmNsb3NpbmdCcmFja2V0TWlzc2luZyIsIkNsb3NpbmcgYnJhY2tldCBtaXNzaW5nLiIpKSk6KGMuYWR2YW5jZSgxKSxtKHQsWWkuVW5rbm93bixjYSgiZXJyb3IudW5leHBlY3RlZENoYXJhY3RlckluVGFnIiwiVW5leHBlY3RlZCBjaGFyYWN0ZXIgaW4gdGFnLiIpKSk7Y2FzZSBaaS5BZnRlckF0dHJpYnV0ZU5hbWU6cmV0dXJuIGMuc2tpcFdoaXRlc3BhY2UoKT8oYT0hMCxtKHQsWWkuV2hpdGVzcGFjZSkpOmMuYWR2YW5jZUlmQ2hhcihnYSk/KGg9WmkuQmVmb3JlQXR0cmlidXRlVmFsdWUsbSh0LFlpLkRlbGltaXRlckFzc2lnbikpOihoPVppLldpdGhpblRhZyxmKCkpO2Nhc2UgWmkuQmVmb3JlQXR0cmlidXRlVmFsdWU6aWYoYy5za2lwV2hpdGVzcGFjZSgpKXJldHVybiBtKHQsWWkuV2hpdGVzcGFjZSk7dmFyIG49Yy5hZHZhbmNlSWZSZWdFeHAoL15bXlxzIidgPTw+XSsvKTtpZihuLmxlbmd0aD4wKXJldHVybiBjLnBlZWtDaGFyKCk9PT1tYSYmYy5wZWVrQ2hhcigtMSk9PT1mYSYmKGMuZ29CYWNrKDEpLG49bi5zdWJzdHIoMCxuLmxlbmd0aC0xKSksInR5cGUiPT09cyYmKGw9biksaD1aaS5XaXRoaW5UYWcsYT0hMSxtKHQsWWkuQXR0cmlidXRlVmFsdWUpO3ZhciBpPWMucGVla0NoYXIoKTtyZXR1cm4gaT09PXdhfHxpPT09YmE/KGMuYWR2YW5jZSgxKSxjLmFkdmFuY2VVbnRpbENoYXIoaSkmJmMuYWR2YW5jZSgxKSwidHlwZSI9PT1zJiYobD1jLmdldFNvdXJjZSgpLnN1YnN0cmluZyh0KzEsYy5wb3MoKS0xKSksaD1aaS5XaXRoaW5UYWcsYT0hMSxtKHQsWWkuQXR0cmlidXRlVmFsdWUpKTooaD1aaS5XaXRoaW5UYWcsYT0hMSxmKCkpO2Nhc2UgWmkuV2l0aGluU2NyaXB0Q29udGVudDpmb3IodmFyIGQ9MTshYy5lb3MoKTspe3ZhciB1PWMuYWR2YW5jZUlmUmVnRXhwKC88IS0tfC0tPnw8XC8/c2NyaXB0XHMqXC8/Pj8vaSk7aWYoMD09PXUubGVuZ3RoKXJldHVybiBjLmdvVG9FbmQoKSxtKHQsWWkuU2NyaXB0KTtpZigiXHgzYyEtLSI9PT11KTE9PT1kJiYoZD0yKTtlbHNlIGlmKCItLVx4M2UiPT09dSlkPTE7ZWxzZSBpZigiLyIhPT11WzFdKTI9PT1kJiYoZD0zKTtlbHNle2lmKDMhPT1kKXtjLmdvQmFjayh1Lmxlbmd0aCk7YnJlYWt9ZD0yfX1yZXR1cm4gaD1aaS5XaXRoaW5Db250ZW50LHQ8Yy5wb3MoKT9tKHQsWWkuU2NyaXB0KTpmKCk7Y2FzZSBaaS5XaXRoaW5TdHlsZUNvbnRlbnQ6cmV0dXJuIGMuYWR2YW5jZVVudGlsUmVnRXhwKC88XC9zdHlsZS9pKSxoPVppLldpdGhpbkNvbnRlbnQsdDxjLnBvcygpP20odCxZaS5TdHlsZXMpOmYoKX1yZXR1cm4gYy5hZHZhbmNlKDEpLGg9WmkuV2l0aGluQ29udGVudCxtKHQsWWkuVW5rbm93bixlKX1yZXR1cm57c2NhbjpmdW5jdGlvbigpe3ZhciBlPWMucG9zKCksdD1oLG49ZigpO3JldHVybiBuPT09WWkuRU9TfHxlIT09Yy5wb3MoKXx8ciYmKG49PT1ZaS5TdGFydFRhZ0Nsb3NlfHxuPT09WWkuRW5kVGFnQ2xvc2UpP246KGNvbnNvbGUubG9nKCJTY2FubmVyLnNjYW4gaGFzIG5vdCBhZHZhbmNlZCBhdCBvZmZzZXQgIitlKyIsIHN0YXRlIGJlZm9yZTogIit0KyIgYWZ0ZXI6ICIraCksYy5hZHZhbmNlKDEpLG0oZSxZaS5Vbmtub3duKSl9LGdldFRva2VuVHlwZTpmdW5jdGlvbigpe3JldHVybiB1fSxnZXRUb2tlbk9mZnNldDpmdW5jdGlvbigpe3JldHVybiBkfSxnZXRUb2tlbkxlbmd0aDpmdW5jdGlvbigpe3JldHVybiBjLnBvcygpLWR9LGdldFRva2VuRW5kOmZ1bmN0aW9uKCl7cmV0dXJuIGMucG9zKCl9LGdldFRva2VuVGV4dDpmdW5jdGlvbigpe3JldHVybiBjLmdldFNvdXJjZSgpLnN1YnN0cmluZyhkLGMucG9zKCkpfSxnZXRTY2FubmVyU3RhdGU6ZnVuY3Rpb24oKXtyZXR1cm4gaH0sZ2V0VG9rZW5FcnJvcjpmdW5jdGlvbigpe3JldHVybiBpfX19ZnVuY3Rpb24geGEoZSx0KXt2YXIgbj0wLHI9ZS5sZW5ndGg7aWYoMD09PXIpcmV0dXJuIDA7Zm9yKDtuPHI7KXt2YXIgaT1NYXRoLmZsb29yKChuK3IpLzIpO3QoZVtpXSk/cj1pOm49aSsxfXJldHVybiBufXZhciBMYT1bImFyZWEiLCJiYXNlIiwiYnIiLCJjb2wiLCJlbWJlZCIsImhyIiwiaW1nIiwiaW5wdXQiLCJrZXlnZW4iLCJsaW5rIiwibWVudWl0ZW0iLCJtZXRhIiwicGFyYW0iLCJzb3VyY2UiLCJ0cmFjayIsIndiciJdO2Z1bmN0aW9uIEVhKGUpe3JldHVybiEhZSYmZnVuY3Rpb24oZSx0LG4pe2Zvcih2YXIgcj0wLGk9ZS5sZW5ndGgtMTtyPD1pOyl7dmFyIGE9KHIraSkvMnwwLG89bihlW2FdLHQpO2lmKG88MClyPWErMTtlbHNle2lmKCEobz4wKSlyZXR1cm4gYTtpPWEtMX19cmV0dXJuLShyKzEpfShMYSxlLnRvTG93ZXJDYXNlKCksKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUubG9jYWxlQ29tcGFyZSh0KX0pKT49MH12YXIgQWE9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUsdCxuLHIpe3RoaXMuc3RhcnQ9ZSx0aGlzLmVuZD10LHRoaXMuY2hpbGRyZW49bix0aGlzLnBhcmVudD1yLHRoaXMuY2xvc2VkPSExfXJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsImF0dHJpYnV0ZU5hbWVzIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYXR0cmlidXRlcz9PYmplY3Qua2V5cyh0aGlzLmF0dHJpYnV0ZXMpOltdfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLGUucHJvdG90eXBlLmlzU2FtZVRhZz1mdW5jdGlvbihlKXtyZXR1cm4gdm9pZCAwPT09dGhpcy50YWc/dm9pZCAwPT09ZTp2b2lkIDAhPT1lJiZ0aGlzLnRhZy5sZW5ndGg9PT1lLmxlbmd0aCYmdGhpcy50YWcudG9Mb3dlckNhc2UoKT09PWV9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwiZmlyc3RDaGlsZCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmNoaWxkcmVuWzBdfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwibGFzdENoaWxkIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY2hpbGRyZW4ubGVuZ3RoP3RoaXMuY2hpbGRyZW5bdGhpcy5jaGlsZHJlbi5sZW5ndGgtMV06dm9pZCAwfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLGUucHJvdG90eXBlLmZpbmROb2RlQmVmb3JlPWZ1bmN0aW9uKGUpe3ZhciB0PXhhKHRoaXMuY2hpbGRyZW4sKGZ1bmN0aW9uKHQpe3JldHVybiBlPD10LnN0YXJ0fSkpLTE7aWYodD49MCl7dmFyIG49dGhpcy5jaGlsZHJlblt0XTtpZihlPm4uc3RhcnQpe2lmKGU8bi5lbmQpcmV0dXJuIG4uZmluZE5vZGVCZWZvcmUoZSk7dmFyIHI9bi5sYXN0Q2hpbGQ7cmV0dXJuIHImJnIuZW5kPT09bi5lbmQ/bi5maW5kTm9kZUJlZm9yZShlKTpufX1yZXR1cm4gdGhpc30sZS5wcm90b3R5cGUuZmluZE5vZGVBdD1mdW5jdGlvbihlKXt2YXIgdD14YSh0aGlzLmNoaWxkcmVuLChmdW5jdGlvbih0KXtyZXR1cm4gZTw9dC5zdGFydH0pKS0xO2lmKHQ+PTApe3ZhciBuPXRoaXMuY2hpbGRyZW5bdF07aWYoZT5uLnN0YXJ0JiZlPD1uLmVuZClyZXR1cm4gbi5maW5kTm9kZUF0KGUpfXJldHVybiB0aGlzfSxlfSgpO2Z1bmN0aW9uIE1hKGUpe2Zvcih2YXIgdD1DYShlLHZvaWQgMCx2b2lkIDAsITApLG49bmV3IEFhKDAsZS5sZW5ndGgsW10sdm9pZCAwKSxyPW4saT0tMSxhPXZvaWQgMCxvPW51bGwscz10LnNjYW4oKTtzIT09WWkuRU9TOyl7c3dpdGNoKHMpe2Nhc2UgWWkuU3RhcnRUYWdPcGVuOnZhciBsPW5ldyBBYSh0LmdldFRva2VuT2Zmc2V0KCksZS5sZW5ndGgsW10scik7ci5jaGlsZHJlbi5wdXNoKGwpLHI9bDticmVhaztjYXNlIFlpLlN0YXJ0VGFnOnIudGFnPXQuZ2V0VG9rZW5UZXh0KCk7YnJlYWs7Y2FzZSBZaS5TdGFydFRhZ0Nsb3NlOnIucGFyZW50JiYoci5lbmQ9dC5nZXRUb2tlbkVuZCgpLHQuZ2V0VG9rZW5MZW5ndGgoKT8oci5zdGFydFRhZ0VuZD10LmdldFRva2VuRW5kKCksci50YWcmJkVhKHIudGFnKSYmKHIuY2xvc2VkPSEwLHI9ci5wYXJlbnQpKTpyPXIucGFyZW50KTticmVhaztjYXNlIFlpLlN0YXJ0VGFnU2VsZkNsb3NlOnIucGFyZW50JiYoci5jbG9zZWQ9ITAsci5lbmQ9dC5nZXRUb2tlbkVuZCgpLHIuc3RhcnRUYWdFbmQ9dC5nZXRUb2tlbkVuZCgpLHI9ci5wYXJlbnQpO2JyZWFrO2Nhc2UgWWkuRW5kVGFnT3BlbjppPXQuZ2V0VG9rZW5PZmZzZXQoKSxhPXZvaWQgMDticmVhaztjYXNlIFlpLkVuZFRhZzphPXQuZ2V0VG9rZW5UZXh0KCkudG9Mb3dlckNhc2UoKTticmVhaztjYXNlIFlpLkVuZFRhZ0Nsb3NlOmZvcih2YXIgYz1yOyFjLmlzU2FtZVRhZyhhKSYmYy5wYXJlbnQ7KWM9Yy5wYXJlbnQ7aWYoYy5wYXJlbnQpe2Zvcig7ciE9PWM7KXIuZW5kPWksci5jbG9zZWQ9ITEscj1yLnBhcmVudDtyLmNsb3NlZD0hMCxyLmVuZFRhZ1N0YXJ0PWksci5lbmQ9dC5nZXRUb2tlbkVuZCgpLHI9ci5wYXJlbnR9YnJlYWs7Y2FzZSBZaS5BdHRyaWJ1dGVOYW1lOm89dC5nZXRUb2tlblRleHQoKSwoaD1yLmF0dHJpYnV0ZXMpfHwoci5hdHRyaWJ1dGVzPWg9e30pLGhbb109bnVsbDticmVhaztjYXNlIFlpLkF0dHJpYnV0ZVZhbHVlOnZhciBoLGQ9dC5nZXRUb2tlblRleHQoKTsoaD1yLmF0dHJpYnV0ZXMpJiZvJiYoaFtvXT1kLG89bnVsbCl9cz10LnNjYW4oKX1mb3IoO3IucGFyZW50OylyLmVuZD1lLmxlbmd0aCxyLmNsb3NlZD0hMSxyPXIucGFyZW50O3JldHVybntyb290czpuLmNoaWxkcmVuLGZpbmROb2RlQmVmb3JlOm4uZmluZE5vZGVCZWZvcmUuYmluZChuKSxmaW5kTm9kZUF0Om4uZmluZE5vZGVBdC5iaW5kKG4pfX12YXIgUmE9eyJBYWN1dGU7Ijoiw4EiLEFhY3V0ZToiw4EiLCJhYWN1dGU7Ijoiw6EiLGFhY3V0ZToiw6EiLCJBYnJldmU7IjoixIIiLCJhYnJldmU7IjoixIMiLCJhYzsiOiLiiL4iLCJhY2Q7Ijoi4oi/IiwiYWNFOyI6IuKIvsyzIiwiQWNpcmM7Ijoiw4IiLEFjaXJjOiLDgiIsImFjaXJjOyI6IsOiIixhY2lyYzoiw6IiLCJhY3V0ZTsiOiLCtCIsYWN1dGU6IsK0IiwiQWN5OyI6ItCQIiwiYWN5OyI6ItCwIiwiQUVsaWc7Ijoiw4YiLEFFbGlnOiLDhiIsImFlbGlnOyI6IsOmIixhZWxpZzoiw6YiLCJhZjsiOiLigaEiLCJBZnI7Ijoi8J2UhCIsImFmcjsiOiLwnZSeIiwiQWdyYXZlOyI6IsOAIixBZ3JhdmU6IsOAIiwiYWdyYXZlOyI6IsOgIixhZ3JhdmU6IsOgIiwiYWxlZnN5bTsiOiLihLUiLCJhbGVwaDsiOiLihLUiLCJBbHBoYTsiOiLOkSIsImFscGhhOyI6Is6xIiwiQW1hY3I7IjoixIAiLCJhbWFjcjsiOiLEgSIsImFtYWxnOyI6IuKovyIsIkFNUDsiOiImIixBTVA6IiYiLCJhbXA7IjoiJiIsYW1wOiImIiwiQW5kOyI6IuKpkyIsImFuZDsiOiLiiKciLCJhbmRhbmQ7Ijoi4qmVIiwiYW5kZDsiOiLiqZwiLCJhbmRzbG9wZTsiOiLiqZgiLCJhbmR2OyI6IuKpmiIsImFuZzsiOiLiiKAiLCJhbmdlOyI6IuKmpCIsImFuZ2xlOyI6IuKIoCIsImFuZ21zZDsiOiLiiKEiLCJhbmdtc2RhYTsiOiLipqgiLCJhbmdtc2RhYjsiOiLipqkiLCJhbmdtc2RhYzsiOiLipqoiLCJhbmdtc2RhZDsiOiLipqsiLCJhbmdtc2RhZTsiOiLipqwiLCJhbmdtc2RhZjsiOiLipq0iLCJhbmdtc2RhZzsiOiLipq4iLCJhbmdtc2RhaDsiOiLipq8iLCJhbmdydDsiOiLiiJ8iLCJhbmdydHZiOyI6IuKKviIsImFuZ3J0dmJkOyI6IuKmnSIsImFuZ3NwaDsiOiLiiKIiLCJhbmdzdDsiOiLDhSIsImFuZ3phcnI7Ijoi4o28IiwiQW9nb247IjoixIQiLCJhb2dvbjsiOiLEhSIsIkFvcGY7Ijoi8J2UuCIsImFvcGY7Ijoi8J2VkiIsImFwOyI6IuKJiCIsImFwYWNpcjsiOiLiqa8iLCJhcEU7Ijoi4qmwIiwiYXBlOyI6IuKJiiIsImFwaWQ7Ijoi4omLIiwiYXBvczsiOiInIiwiQXBwbHlGdW5jdGlvbjsiOiLigaEiLCJhcHByb3g7Ijoi4omIIiwiYXBwcm94ZXE7Ijoi4omKIiwiQXJpbmc7Ijoiw4UiLEFyaW5nOiLDhSIsImFyaW5nOyI6IsOlIixhcmluZzoiw6UiLCJBc2NyOyI6IvCdkpwiLCJhc2NyOyI6IvCdkrYiLCJBc3NpZ247Ijoi4omUIiwiYXN0OyI6IioiLCJhc3ltcDsiOiLiiYgiLCJhc3ltcGVxOyI6IuKJjSIsIkF0aWxkZTsiOiLDgyIsQXRpbGRlOiLDgyIsImF0aWxkZTsiOiLDoyIsYXRpbGRlOiLDoyIsIkF1bWw7Ijoiw4QiLEF1bWw6IsOEIiwiYXVtbDsiOiLDpCIsYXVtbDoiw6QiLCJhd2NvbmludDsiOiLiiLMiLCJhd2ludDsiOiLiqJEiLCJiYWNrY29uZzsiOiLiiYwiLCJiYWNrZXBzaWxvbjsiOiLPtiIsImJhY2twcmltZTsiOiLigLUiLCJiYWNrc2ltOyI6IuKIvSIsImJhY2tzaW1lcTsiOiLii40iLCJCYWNrc2xhc2g7Ijoi4oiWIiwiQmFydjsiOiLiq6ciLCJiYXJ2ZWU7Ijoi4oq9IiwiQmFyd2VkOyI6IuKMhiIsImJhcndlZDsiOiLijIUiLCJiYXJ3ZWRnZTsiOiLijIUiLCJiYnJrOyI6IuKOtSIsImJicmt0YnJrOyI6IuKOtiIsImJjb25nOyI6IuKJjCIsIkJjeTsiOiLQkSIsImJjeTsiOiLQsSIsImJkcXVvOyI6IuKAniIsImJlY2F1czsiOiLiiLUiLCJCZWNhdXNlOyI6IuKItSIsImJlY2F1c2U7Ijoi4oi1IiwiYmVtcHR5djsiOiLiprAiLCJiZXBzaTsiOiLPtiIsImJlcm5vdTsiOiLihKwiLCJCZXJub3VsbGlzOyI6IuKErCIsIkJldGE7IjoizpIiLCJiZXRhOyI6Is6yIiwiYmV0aDsiOiLihLYiLCJiZXR3ZWVuOyI6IuKJrCIsIkJmcjsiOiLwnZSFIiwiYmZyOyI6IvCdlJ8iLCJiaWdjYXA7Ijoi4ouCIiwiYmlnY2lyYzsiOiLil68iLCJiaWdjdXA7Ijoi4ouDIiwiYmlnb2RvdDsiOiLiqIAiLCJiaWdvcGx1czsiOiLiqIEiLCJiaWdvdGltZXM7Ijoi4qiCIiwiYmlnc3FjdXA7Ijoi4qiGIiwiYmlnc3RhcjsiOiLimIUiLCJiaWd0cmlhbmdsZWRvd247Ijoi4pa9IiwiYmlndHJpYW5nbGV1cDsiOiLilrMiLCJiaWd1cGx1czsiOiLiqIQiLCJiaWd2ZWU7Ijoi4ouBIiwiYmlnd2VkZ2U7Ijoi4ouAIiwiYmthcm93OyI6IuKkjSIsImJsYWNrbG96ZW5nZTsiOiLip6siLCJibGFja3NxdWFyZTsiOiLilqoiLCJibGFja3RyaWFuZ2xlOyI6IuKWtCIsImJsYWNrdHJpYW5nbGVkb3duOyI6IuKWviIsImJsYWNrdHJpYW5nbGVsZWZ0OyI6IuKXgiIsImJsYWNrdHJpYW5nbGVyaWdodDsiOiLilrgiLCJibGFuazsiOiLikKMiLCJibGsxMjsiOiLilpIiLCJibGsxNDsiOiLilpEiLCJibGszNDsiOiLilpMiLCJibG9jazsiOiLilogiLCJibmU7IjoiPeKDpSIsImJuZXF1aXY7Ijoi4omh4oOlIiwiYk5vdDsiOiLiq60iLCJibm90OyI6IuKMkCIsIkJvcGY7Ijoi8J2UuSIsImJvcGY7Ijoi8J2VkyIsImJvdDsiOiLiiqUiLCJib3R0b207Ijoi4oqlIiwiYm93dGllOyI6IuKLiCIsImJveGJveDsiOiLip4kiLCJib3hETDsiOiLilZciLCJib3hEbDsiOiLilZYiLCJib3hkTDsiOiLilZUiLCJib3hkbDsiOiLilJAiLCJib3hEUjsiOiLilZQiLCJib3hEcjsiOiLilZMiLCJib3hkUjsiOiLilZIiLCJib3hkcjsiOiLilIwiLCJib3hIOyI6IuKVkCIsImJveGg7Ijoi4pSAIiwiYm94SEQ7Ijoi4pWmIiwiYm94SGQ7Ijoi4pWkIiwiYm94aEQ7Ijoi4pWlIiwiYm94aGQ7Ijoi4pSsIiwiYm94SFU7Ijoi4pWpIiwiYm94SHU7Ijoi4pWnIiwiYm94aFU7Ijoi4pWoIiwiYm94aHU7Ijoi4pS0IiwiYm94bWludXM7Ijoi4oqfIiwiYm94cGx1czsiOiLiip4iLCJib3h0aW1lczsiOiLiiqAiLCJib3hVTDsiOiLilZ0iLCJib3hVbDsiOiLilZwiLCJib3h1TDsiOiLilZsiLCJib3h1bDsiOiLilJgiLCJib3hVUjsiOiLilZoiLCJib3hVcjsiOiLilZkiLCJib3h1UjsiOiLilZgiLCJib3h1cjsiOiLilJQiLCJib3hWOyI6IuKVkSIsImJveHY7Ijoi4pSCIiwiYm94Vkg7Ijoi4pWsIiwiYm94Vmg7Ijoi4pWrIiwiYm94dkg7Ijoi4pWqIiwiYm94dmg7Ijoi4pS8IiwiYm94Vkw7Ijoi4pWjIiwiYm94Vmw7Ijoi4pWiIiwiYm94dkw7Ijoi4pWhIiwiYm94dmw7Ijoi4pSkIiwiYm94VlI7Ijoi4pWgIiwiYm94VnI7Ijoi4pWfIiwiYm94dlI7Ijoi4pWeIiwiYm94dnI7Ijoi4pScIiwiYnByaW1lOyI6IuKAtSIsIkJyZXZlOyI6IsuYIiwiYnJldmU7Ijoiy5giLCJicnZiYXI7IjoiwqYiLGJydmJhcjoiwqYiLCJCc2NyOyI6IuKErCIsImJzY3I7Ijoi8J2StyIsImJzZW1pOyI6IuKBjyIsImJzaW07Ijoi4oi9IiwiYnNpbWU7Ijoi4ouNIiwiYnNvbDsiOiJcXCIsImJzb2xiOyI6IuKnhSIsImJzb2xoc3ViOyI6IuKfiCIsImJ1bGw7Ijoi4oCiIiwiYnVsbGV0OyI6IuKAoiIsImJ1bXA7Ijoi4omOIiwiYnVtcEU7Ijoi4qquIiwiYnVtcGU7Ijoi4omPIiwiQnVtcGVxOyI6IuKJjiIsImJ1bXBlcTsiOiLiiY8iLCJDYWN1dGU7IjoixIYiLCJjYWN1dGU7IjoixIciLCJDYXA7Ijoi4ouSIiwiY2FwOyI6IuKIqSIsImNhcGFuZDsiOiLiqYQiLCJjYXBicmN1cDsiOiLiqYkiLCJjYXBjYXA7Ijoi4qmLIiwiY2FwY3VwOyI6IuKphyIsImNhcGRvdDsiOiLiqYAiLCJDYXBpdGFsRGlmZmVyZW50aWFsRDsiOiLihYUiLCJjYXBzOyI6IuKIqe+4gCIsImNhcmV0OyI6IuKBgSIsImNhcm9uOyI6IsuHIiwiQ2F5bGV5czsiOiLihK0iLCJjY2FwczsiOiLiqY0iLCJDY2Fyb247IjoixIwiLCJjY2Fyb247IjoixI0iLCJDY2VkaWw7Ijoiw4ciLENjZWRpbDoiw4ciLCJjY2VkaWw7Ijoiw6ciLGNjZWRpbDoiw6ciLCJDY2lyYzsiOiLEiCIsImNjaXJjOyI6IsSJIiwiQ2NvbmludDsiOiLiiLAiLCJjY3VwczsiOiLiqYwiLCJjY3Vwc3NtOyI6IuKpkCIsIkNkb3Q7IjoixIoiLCJjZG90OyI6IsSLIiwiY2VkaWw7IjoiwrgiLGNlZGlsOiLCuCIsIkNlZGlsbGE7IjoiwrgiLCJjZW1wdHl2OyI6IuKmsiIsImNlbnQ7IjoiwqIiLGNlbnQ6IsKiIiwiQ2VudGVyRG90OyI6IsK3IiwiY2VudGVyZG90OyI6IsK3IiwiQ2ZyOyI6IuKErSIsImNmcjsiOiLwnZSgIiwiQ0hjeTsiOiLQpyIsImNoY3k7Ijoi0YciLCJjaGVjazsiOiLinJMiLCJjaGVja21hcms7Ijoi4pyTIiwiQ2hpOyI6Is6nIiwiY2hpOyI6Is+HIiwiY2lyOyI6IuKXiyIsImNpcmM7Ijoiy4YiLCJjaXJjZXE7Ijoi4omXIiwiY2lyY2xlYXJyb3dsZWZ0OyI6IuKGuiIsImNpcmNsZWFycm93cmlnaHQ7Ijoi4oa7IiwiY2lyY2xlZGFzdDsiOiLiipsiLCJjaXJjbGVkY2lyYzsiOiLiipoiLCJjaXJjbGVkZGFzaDsiOiLiip0iLCJDaXJjbGVEb3Q7Ijoi4oqZIiwiY2lyY2xlZFI7Ijoiwq4iLCJjaXJjbGVkUzsiOiLik4giLCJDaXJjbGVNaW51czsiOiLiipYiLCJDaXJjbGVQbHVzOyI6IuKKlSIsIkNpcmNsZVRpbWVzOyI6IuKKlyIsImNpckU7Ijoi4qeDIiwiY2lyZTsiOiLiiZciLCJjaXJmbmludDsiOiLiqJAiLCJjaXJtaWQ7Ijoi4quvIiwiY2lyc2NpcjsiOiLip4IiLCJDbG9ja3dpc2VDb250b3VySW50ZWdyYWw7Ijoi4oiyIiwiQ2xvc2VDdXJseURvdWJsZVF1b3RlOyI6IuKAnSIsIkNsb3NlQ3VybHlRdW90ZTsiOiLigJkiLCJjbHViczsiOiLimaMiLCJjbHVic3VpdDsiOiLimaMiLCJDb2xvbjsiOiLiiLciLCJjb2xvbjsiOiI6IiwiQ29sb25lOyI6IuKptCIsImNvbG9uZTsiOiLiiZQiLCJjb2xvbmVxOyI6IuKJlCIsImNvbW1hOyI6IiwiLCJjb21tYXQ7IjoiQCIsImNvbXA7Ijoi4oiBIiwiY29tcGZuOyI6IuKImCIsImNvbXBsZW1lbnQ7Ijoi4oiBIiwiY29tcGxleGVzOyI6IuKEgiIsImNvbmc7Ijoi4omFIiwiY29uZ2RvdDsiOiLiqa0iLCJDb25ncnVlbnQ7Ijoi4omhIiwiQ29uaW50OyI6IuKIryIsImNvbmludDsiOiLiiK4iLCJDb250b3VySW50ZWdyYWw7Ijoi4oiuIiwiQ29wZjsiOiLihIIiLCJjb3BmOyI6IvCdlZQiLCJjb3Byb2Q7Ijoi4oiQIiwiQ29wcm9kdWN0OyI6IuKIkCIsIkNPUFk7IjoiwqkiLENPUFk6IsKpIiwiY29weTsiOiLCqSIsY29weToiwqkiLCJjb3B5c3I7Ijoi4oSXIiwiQ291bnRlckNsb2Nrd2lzZUNvbnRvdXJJbnRlZ3JhbDsiOiLiiLMiLCJjcmFycjsiOiLihrUiLCJDcm9zczsiOiLiqK8iLCJjcm9zczsiOiLinJciLCJDc2NyOyI6IvCdkp4iLCJjc2NyOyI6IvCdkrgiLCJjc3ViOyI6IuKrjyIsImNzdWJlOyI6IuKrkSIsImNzdXA7Ijoi4quQIiwiY3N1cGU7Ijoi4quSIiwiY3Rkb3Q7Ijoi4ouvIiwiY3VkYXJybDsiOiLipLgiLCJjdWRhcnJyOyI6IuKktSIsImN1ZXByOyI6IuKLniIsImN1ZXNjOyI6IuKLnyIsImN1bGFycjsiOiLihrYiLCJjdWxhcnJwOyI6IuKkvSIsIkN1cDsiOiLii5MiLCJjdXA7Ijoi4oiqIiwiY3VwYnJjYXA7Ijoi4qmIIiwiQ3VwQ2FwOyI6IuKJjSIsImN1cGNhcDsiOiLiqYYiLCJjdXBjdXA7Ijoi4qmKIiwiY3VwZG90OyI6IuKKjSIsImN1cG9yOyI6IuKphSIsImN1cHM7Ijoi4oiq77iAIiwiY3VyYXJyOyI6IuKGtyIsImN1cmFycm07Ijoi4qS8IiwiY3VybHllcXByZWM7Ijoi4oueIiwiY3VybHllcXN1Y2M7Ijoi4oufIiwiY3VybHl2ZWU7Ijoi4ouOIiwiY3VybHl3ZWRnZTsiOiLii48iLCJjdXJyZW47IjoiwqQiLGN1cnJlbjoiwqQiLCJjdXJ2ZWFycm93bGVmdDsiOiLihrYiLCJjdXJ2ZWFycm93cmlnaHQ7Ijoi4oa3IiwiY3V2ZWU7Ijoi4ouOIiwiY3V3ZWQ7Ijoi4ouPIiwiY3djb25pbnQ7Ijoi4oiyIiwiY3dpbnQ7Ijoi4oixIiwiY3lsY3R5OyI6IuKMrSIsIkRhZ2dlcjsiOiLigKEiLCJkYWdnZXI7Ijoi4oCgIiwiZGFsZXRoOyI6IuKEuCIsIkRhcnI7Ijoi4oahIiwiZEFycjsiOiLih5MiLCJkYXJyOyI6IuKGkyIsImRhc2g7Ijoi4oCQIiwiRGFzaHY7Ijoi4qukIiwiZGFzaHY7Ijoi4oqjIiwiZGJrYXJvdzsiOiLipI8iLCJkYmxhYzsiOiLLnSIsIkRjYXJvbjsiOiLEjiIsImRjYXJvbjsiOiLEjyIsIkRjeTsiOiLQlCIsImRjeTsiOiLQtCIsIkREOyI6IuKFhSIsImRkOyI6IuKFhiIsImRkYWdnZXI7Ijoi4oChIiwiZGRhcnI7Ijoi4oeKIiwiRERvdHJhaGQ7Ijoi4qSRIiwiZGRvdHNlcTsiOiLiqbciLCJkZWc7IjoiwrAiLGRlZzoiwrAiLCJEZWw7Ijoi4oiHIiwiRGVsdGE7IjoizpQiLCJkZWx0YTsiOiLOtCIsImRlbXB0eXY7Ijoi4qaxIiwiZGZpc2h0OyI6IuKlvyIsIkRmcjsiOiLwnZSHIiwiZGZyOyI6IvCdlKEiLCJkSGFyOyI6IuKlpSIsImRoYXJsOyI6IuKHgyIsImRoYXJyOyI6IuKHgiIsIkRpYWNyaXRpY2FsQWN1dGU7IjoiwrQiLCJEaWFjcml0aWNhbERvdDsiOiLLmSIsIkRpYWNyaXRpY2FsRG91YmxlQWN1dGU7Ijoiy50iLCJEaWFjcml0aWNhbEdyYXZlOyI6ImAiLCJEaWFjcml0aWNhbFRpbGRlOyI6IsucIiwiZGlhbTsiOiLii4QiLCJEaWFtb25kOyI6IuKLhCIsImRpYW1vbmQ7Ijoi4ouEIiwiZGlhbW9uZHN1aXQ7Ijoi4pmmIiwiZGlhbXM7Ijoi4pmmIiwiZGllOyI6IsKoIiwiRGlmZmVyZW50aWFsRDsiOiLihYYiLCJkaWdhbW1hOyI6Is+dIiwiZGlzaW47Ijoi4ouyIiwiZGl2OyI6IsO3IiwiZGl2aWRlOyI6IsO3IixkaXZpZGU6IsO3IiwiZGl2aWRlb250aW1lczsiOiLii4ciLCJkaXZvbng7Ijoi4ouHIiwiREpjeTsiOiLQgiIsImRqY3k7Ijoi0ZIiLCJkbGNvcm47Ijoi4oyeIiwiZGxjcm9wOyI6IuKMjSIsImRvbGxhcjsiOiIkIiwiRG9wZjsiOiLwnZS7IiwiZG9wZjsiOiLwnZWVIiwiRG90OyI6IsKoIiwiZG90OyI6IsuZIiwiRG90RG90OyI6IuKDnCIsImRvdGVxOyI6IuKJkCIsImRvdGVxZG90OyI6IuKJkSIsIkRvdEVxdWFsOyI6IuKJkCIsImRvdG1pbnVzOyI6IuKIuCIsImRvdHBsdXM7Ijoi4oiUIiwiZG90c3F1YXJlOyI6IuKKoSIsImRvdWJsZWJhcndlZGdlOyI6IuKMhiIsIkRvdWJsZUNvbnRvdXJJbnRlZ3JhbDsiOiLiiK8iLCJEb3VibGVEb3Q7IjoiwqgiLCJEb3VibGVEb3duQXJyb3c7Ijoi4oeTIiwiRG91YmxlTGVmdEFycm93OyI6IuKHkCIsIkRvdWJsZUxlZnRSaWdodEFycm93OyI6IuKHlCIsIkRvdWJsZUxlZnRUZWU7Ijoi4qukIiwiRG91YmxlTG9uZ0xlZnRBcnJvdzsiOiLin7giLCJEb3VibGVMb25nTGVmdFJpZ2h0QXJyb3c7Ijoi4p+6IiwiRG91YmxlTG9uZ1JpZ2h0QXJyb3c7Ijoi4p+5IiwiRG91YmxlUmlnaHRBcnJvdzsiOiLih5IiLCJEb3VibGVSaWdodFRlZTsiOiLiiqgiLCJEb3VibGVVcEFycm93OyI6IuKHkSIsIkRvdWJsZVVwRG93bkFycm93OyI6IuKHlSIsIkRvdWJsZVZlcnRpY2FsQmFyOyI6IuKIpSIsIkRvd25BcnJvdzsiOiLihpMiLCJEb3duYXJyb3c7Ijoi4oeTIiwiZG93bmFycm93OyI6IuKGkyIsIkRvd25BcnJvd0JhcjsiOiLipJMiLCJEb3duQXJyb3dVcEFycm93OyI6IuKHtSIsIkRvd25CcmV2ZTsiOiLMkSIsImRvd25kb3duYXJyb3dzOyI6IuKHiiIsImRvd25oYXJwb29ubGVmdDsiOiLih4MiLCJkb3duaGFycG9vbnJpZ2h0OyI6IuKHgiIsIkRvd25MZWZ0UmlnaHRWZWN0b3I7Ijoi4qWQIiwiRG93bkxlZnRUZWVWZWN0b3I7Ijoi4qWeIiwiRG93bkxlZnRWZWN0b3I7Ijoi4oa9IiwiRG93bkxlZnRWZWN0b3JCYXI7Ijoi4qWWIiwiRG93blJpZ2h0VGVlVmVjdG9yOyI6IuKlnyIsIkRvd25SaWdodFZlY3RvcjsiOiLih4EiLCJEb3duUmlnaHRWZWN0b3JCYXI7Ijoi4qWXIiwiRG93blRlZTsiOiLiiqQiLCJEb3duVGVlQXJyb3c7Ijoi4oanIiwiZHJia2Fyb3c7Ijoi4qSQIiwiZHJjb3JuOyI6IuKMnyIsImRyY3JvcDsiOiLijIwiLCJEc2NyOyI6IvCdkp8iLCJkc2NyOyI6IvCdkrkiLCJEU2N5OyI6ItCFIiwiZHNjeTsiOiLRlSIsImRzb2w7Ijoi4qe2IiwiRHN0cm9rOyI6IsSQIiwiZHN0cm9rOyI6IsSRIiwiZHRkb3Q7Ijoi4ouxIiwiZHRyaTsiOiLilr8iLCJkdHJpZjsiOiLilr4iLCJkdWFycjsiOiLih7UiLCJkdWhhcjsiOiLipa8iLCJkd2FuZ2xlOyI6IuKmpiIsIkRaY3k7Ijoi0I8iLCJkemN5OyI6ItGfIiwiZHppZ3JhcnI7Ijoi4p+/IiwiRWFjdXRlOyI6IsOJIixFYWN1dGU6IsOJIiwiZWFjdXRlOyI6IsOpIixlYWN1dGU6IsOpIiwiZWFzdGVyOyI6IuKpriIsIkVjYXJvbjsiOiLEmiIsImVjYXJvbjsiOiLEmyIsImVjaXI7Ijoi4omWIiwiRWNpcmM7Ijoiw4oiLEVjaXJjOiLDiiIsImVjaXJjOyI6IsOqIixlY2lyYzoiw6oiLCJlY29sb247Ijoi4omVIiwiRWN5OyI6ItCtIiwiZWN5OyI6ItGNIiwiZUREb3Q7Ijoi4qm3IiwiRWRvdDsiOiLEliIsImVEb3Q7Ijoi4omRIiwiZWRvdDsiOiLElyIsImVlOyI6IuKFhyIsImVmRG90OyI6IuKJkiIsIkVmcjsiOiLwnZSIIiwiZWZyOyI6IvCdlKIiLCJlZzsiOiLiqpoiLCJFZ3JhdmU7Ijoiw4giLEVncmF2ZToiw4giLCJlZ3JhdmU7Ijoiw6giLGVncmF2ZToiw6giLCJlZ3M7Ijoi4qqWIiwiZWdzZG90OyI6IuKqmCIsImVsOyI6IuKqmSIsIkVsZW1lbnQ7Ijoi4oiIIiwiZWxpbnRlcnM7Ijoi4o+nIiwiZWxsOyI6IuKEkyIsImVsczsiOiLiqpUiLCJlbHNkb3Q7Ijoi4qqXIiwiRW1hY3I7IjoixJIiLCJlbWFjcjsiOiLEkyIsImVtcHR5OyI6IuKIhSIsImVtcHR5c2V0OyI6IuKIhSIsIkVtcHR5U21hbGxTcXVhcmU7Ijoi4pe7IiwiZW1wdHl2OyI6IuKIhSIsIkVtcHR5VmVyeVNtYWxsU3F1YXJlOyI6IuKWqyIsImVtc3A7Ijoi4oCDIiwiZW1zcDEzOyI6IuKAhCIsImVtc3AxNDsiOiLigIUiLCJFTkc7IjoixYoiLCJlbmc7IjoixYsiLCJlbnNwOyI6IuKAgiIsIkVvZ29uOyI6IsSYIiwiZW9nb247IjoixJkiLCJFb3BmOyI6IvCdlLwiLCJlb3BmOyI6IvCdlZYiLCJlcGFyOyI6IuKLlSIsImVwYXJzbDsiOiLip6MiLCJlcGx1czsiOiLiqbEiLCJlcHNpOyI6Is61IiwiRXBzaWxvbjsiOiLOlSIsImVwc2lsb247IjoizrUiLCJlcHNpdjsiOiLPtSIsImVxY2lyYzsiOiLiiZYiLCJlcWNvbG9uOyI6IuKJlSIsImVxc2ltOyI6IuKJgiIsImVxc2xhbnRndHI7Ijoi4qqWIiwiZXFzbGFudGxlc3M7Ijoi4qqVIiwiRXF1YWw7Ijoi4qm1IiwiZXF1YWxzOyI6Ij0iLCJFcXVhbFRpbGRlOyI6IuKJgiIsImVxdWVzdDsiOiLiiZ8iLCJFcXVpbGlicml1bTsiOiLih4wiLCJlcXVpdjsiOiLiiaEiLCJlcXVpdkREOyI6IuKpuCIsImVxdnBhcnNsOyI6IuKnpSIsImVyYXJyOyI6IuKlsSIsImVyRG90OyI6IuKJkyIsIkVzY3I7Ijoi4oSwIiwiZXNjcjsiOiLihK8iLCJlc2RvdDsiOiLiiZAiLCJFc2ltOyI6IuKpsyIsImVzaW07Ijoi4omCIiwiRXRhOyI6Is6XIiwiZXRhOyI6Is63IiwiRVRIOyI6IsOQIixFVEg6IsOQIiwiZXRoOyI6IsOwIixldGg6IsOwIiwiRXVtbDsiOiLDiyIsRXVtbDoiw4siLCJldW1sOyI6IsOrIixldW1sOiLDqyIsImV1cm87Ijoi4oKsIiwiZXhjbDsiOiIhIiwiZXhpc3Q7Ijoi4oiDIiwiRXhpc3RzOyI6IuKIgyIsImV4cGVjdGF0aW9uOyI6IuKEsCIsIkV4cG9uZW50aWFsRTsiOiLihYciLCJleHBvbmVudGlhbGU7Ijoi4oWHIiwiZmFsbGluZ2RvdHNlcTsiOiLiiZIiLCJGY3k7Ijoi0KQiLCJmY3k7Ijoi0YQiLCJmZW1hbGU7Ijoi4pmAIiwiZmZpbGlnOyI6Iu+sgyIsImZmbGlnOyI6Iu+sgCIsImZmbGxpZzsiOiLvrIQiLCJGZnI7Ijoi8J2UiSIsImZmcjsiOiLwnZSjIiwiZmlsaWc7Ijoi76yBIiwiRmlsbGVkU21hbGxTcXVhcmU7Ijoi4pe8IiwiRmlsbGVkVmVyeVNtYWxsU3F1YXJlOyI6IuKWqiIsImZqbGlnOyI6ImZqIiwiZmxhdDsiOiLima0iLCJmbGxpZzsiOiLvrIIiLCJmbHRuczsiOiLilrEiLCJmbm9mOyI6IsaSIiwiRm9wZjsiOiLwnZS9IiwiZm9wZjsiOiLwnZWXIiwiRm9yQWxsOyI6IuKIgCIsImZvcmFsbDsiOiLiiIAiLCJmb3JrOyI6IuKLlCIsImZvcmt2OyI6IuKrmSIsIkZvdXJpZXJ0cmY7Ijoi4oSxIiwiZnBhcnRpbnQ7Ijoi4qiNIiwiZnJhYzEyOyI6IsK9IixmcmFjMTI6IsK9IiwiZnJhYzEzOyI6IuKFkyIsImZyYWMxNDsiOiLCvCIsZnJhYzE0OiLCvCIsImZyYWMxNTsiOiLihZUiLCJmcmFjMTY7Ijoi4oWZIiwiZnJhYzE4OyI6IuKFmyIsImZyYWMyMzsiOiLihZQiLCJmcmFjMjU7Ijoi4oWWIiwiZnJhYzM0OyI6IsK+IixmcmFjMzQ6IsK+IiwiZnJhYzM1OyI6IuKFlyIsImZyYWMzODsiOiLihZwiLCJmcmFjNDU7Ijoi4oWYIiwiZnJhYzU2OyI6IuKFmiIsImZyYWM1ODsiOiLihZ0iLCJmcmFjNzg7Ijoi4oWeIiwiZnJhc2w7Ijoi4oGEIiwiZnJvd247Ijoi4oyiIiwiRnNjcjsiOiLihLEiLCJmc2NyOyI6IvCdkrsiLCJnYWN1dGU7Ijoix7UiLCJHYW1tYTsiOiLOkyIsImdhbW1hOyI6Is6zIiwiR2FtbWFkOyI6Is+cIiwiZ2FtbWFkOyI6Is+dIiwiZ2FwOyI6IuKqhiIsIkdicmV2ZTsiOiLEniIsImdicmV2ZTsiOiLEnyIsIkdjZWRpbDsiOiLEoiIsIkdjaXJjOyI6IsScIiwiZ2NpcmM7IjoixJ0iLCJHY3k7Ijoi0JMiLCJnY3k7Ijoi0LMiLCJHZG90OyI6IsSgIiwiZ2RvdDsiOiLEoSIsImdFOyI6IuKJpyIsImdlOyI6IuKJpSIsImdFbDsiOiLiqowiLCJnZWw7Ijoi4oubIiwiZ2VxOyI6IuKJpSIsImdlcXE7Ijoi4omnIiwiZ2Vxc2xhbnQ7Ijoi4qm+IiwiZ2VzOyI6IuKpviIsImdlc2NjOyI6IuKqqSIsImdlc2RvdDsiOiLiqoAiLCJnZXNkb3RvOyI6IuKqgiIsImdlc2RvdG9sOyI6IuKqhCIsImdlc2w7Ijoi4oub77iAIiwiZ2VzbGVzOyI6IuKqlCIsIkdmcjsiOiLwnZSKIiwiZ2ZyOyI6IvCdlKQiLCJHZzsiOiLii5kiLCJnZzsiOiLiiasiLCJnZ2c7Ijoi4ouZIiwiZ2ltZWw7Ijoi4oS3IiwiR0pjeTsiOiLQgyIsImdqY3k7Ijoi0ZMiLCJnbDsiOiLiibciLCJnbGE7Ijoi4qqlIiwiZ2xFOyI6IuKqkiIsImdsajsiOiLiqqQiLCJnbmFwOyI6IuKqiiIsImduYXBwcm94OyI6IuKqiiIsImduRTsiOiLiiakiLCJnbmU7Ijoi4qqIIiwiZ25lcTsiOiLiqogiLCJnbmVxcTsiOiLiiakiLCJnbnNpbTsiOiLii6ciLCJHb3BmOyI6IvCdlL4iLCJnb3BmOyI6IvCdlZgiLCJncmF2ZTsiOiJgIiwiR3JlYXRlckVxdWFsOyI6IuKJpSIsIkdyZWF0ZXJFcXVhbExlc3M7Ijoi4oubIiwiR3JlYXRlckZ1bGxFcXVhbDsiOiLiiaciLCJHcmVhdGVyR3JlYXRlcjsiOiLiqqIiLCJHcmVhdGVyTGVzczsiOiLiibciLCJHcmVhdGVyU2xhbnRFcXVhbDsiOiLiqb4iLCJHcmVhdGVyVGlsZGU7Ijoi4omzIiwiR3NjcjsiOiLwnZKiIiwiZ3NjcjsiOiLihIoiLCJnc2ltOyI6IuKJsyIsImdzaW1lOyI6IuKqjiIsImdzaW1sOyI6IuKqkCIsIkdUOyI6Ij4iLEdUOiI+IiwiR3Q7Ijoi4omrIiwiZ3Q7IjoiPiIsZ3Q6Ij4iLCJndGNjOyI6IuKqpyIsImd0Y2lyOyI6IuKpuiIsImd0ZG90OyI6IuKLlyIsImd0bFBhcjsiOiLippUiLCJndHF1ZXN0OyI6IuKpvCIsImd0cmFwcHJveDsiOiLiqoYiLCJndHJhcnI7Ijoi4qW4IiwiZ3RyZG90OyI6IuKLlyIsImd0cmVxbGVzczsiOiLii5siLCJndHJlcXFsZXNzOyI6IuKqjCIsImd0cmxlc3M7Ijoi4om3IiwiZ3Ryc2ltOyI6IuKJsyIsImd2ZXJ0bmVxcTsiOiLiianvuIAiLCJndm5FOyI6IuKJqe+4gCIsIkhhY2VrOyI6IsuHIiwiaGFpcnNwOyI6IuKAiiIsImhhbGY7Ijoiwr0iLCJoYW1pbHQ7Ijoi4oSLIiwiSEFSRGN5OyI6ItCqIiwiaGFyZGN5OyI6ItGKIiwiaEFycjsiOiLih5QiLCJoYXJyOyI6IuKGlCIsImhhcnJjaXI7Ijoi4qWIIiwiaGFycnc7Ijoi4oatIiwiSGF0OyI6Il4iLCJoYmFyOyI6IuKEjyIsIkhjaXJjOyI6IsSkIiwiaGNpcmM7IjoixKUiLCJoZWFydHM7Ijoi4pmlIiwiaGVhcnRzdWl0OyI6IuKZpSIsImhlbGxpcDsiOiLigKYiLCJoZXJjb247Ijoi4oq5IiwiSGZyOyI6IuKEjCIsImhmcjsiOiLwnZSlIiwiSGlsYmVydFNwYWNlOyI6IuKEiyIsImhrc2Vhcm93OyI6IuKkpSIsImhrc3dhcm93OyI6IuKkpiIsImhvYXJyOyI6IuKHvyIsImhvbXRodDsiOiLiiLsiLCJob29rbGVmdGFycm93OyI6IuKGqSIsImhvb2tyaWdodGFycm93OyI6IuKGqiIsIkhvcGY7Ijoi4oSNIiwiaG9wZjsiOiLwnZWZIiwiaG9yYmFyOyI6IuKAlSIsIkhvcml6b250YWxMaW5lOyI6IuKUgCIsIkhzY3I7Ijoi4oSLIiwiaHNjcjsiOiLwnZK9IiwiaHNsYXNoOyI6IuKEjyIsIkhzdHJvazsiOiLEpiIsImhzdHJvazsiOiLEpyIsIkh1bXBEb3duSHVtcDsiOiLiiY4iLCJIdW1wRXF1YWw7Ijoi4omPIiwiaHlidWxsOyI6IuKBgyIsImh5cGhlbjsiOiLigJAiLCJJYWN1dGU7Ijoiw40iLElhY3V0ZToiw40iLCJpYWN1dGU7Ijoiw60iLGlhY3V0ZToiw60iLCJpYzsiOiLigaMiLCJJY2lyYzsiOiLDjiIsSWNpcmM6IsOOIiwiaWNpcmM7Ijoiw64iLGljaXJjOiLDriIsIkljeTsiOiLQmCIsImljeTsiOiLQuCIsIklkb3Q7IjoixLAiLCJJRWN5OyI6ItCVIiwiaWVjeTsiOiLQtSIsImlleGNsOyI6IsKhIixpZXhjbDoiwqEiLCJpZmY7Ijoi4oeUIiwiSWZyOyI6IuKEkSIsImlmcjsiOiLwnZSmIiwiSWdyYXZlOyI6IsOMIixJZ3JhdmU6IsOMIiwiaWdyYXZlOyI6IsOsIixpZ3JhdmU6IsOsIiwiaWk7Ijoi4oWIIiwiaWlpaW50OyI6IuKojCIsImlpaW50OyI6IuKIrSIsImlpbmZpbjsiOiLip5wiLCJpaW90YTsiOiLihKkiLCJJSmxpZzsiOiLEsiIsImlqbGlnOyI6IsSzIiwiSW07Ijoi4oSRIiwiSW1hY3I7IjoixKoiLCJpbWFjcjsiOiLEqyIsImltYWdlOyI6IuKEkSIsIkltYWdpbmFyeUk7Ijoi4oWIIiwiaW1hZ2xpbmU7Ijoi4oSQIiwiaW1hZ3BhcnQ7Ijoi4oSRIiwiaW1hdGg7IjoixLEiLCJpbW9mOyI6IuKKtyIsImltcGVkOyI6Isa1IiwiSW1wbGllczsiOiLih5IiLCJpbjsiOiLiiIgiLCJpbmNhcmU7Ijoi4oSFIiwiaW5maW47Ijoi4oieIiwiaW5maW50aWU7Ijoi4qedIiwiaW5vZG90OyI6IsSxIiwiSW50OyI6IuKIrCIsImludDsiOiLiiKsiLCJpbnRjYWw7Ijoi4oq6IiwiaW50ZWdlcnM7Ijoi4oSkIiwiSW50ZWdyYWw7Ijoi4oirIiwiaW50ZXJjYWw7Ijoi4oq6IiwiSW50ZXJzZWN0aW9uOyI6IuKLgiIsImludGxhcmhrOyI6IuKolyIsImludHByb2Q7Ijoi4qi8IiwiSW52aXNpYmxlQ29tbWE7Ijoi4oGjIiwiSW52aXNpYmxlVGltZXM7Ijoi4oGiIiwiSU9jeTsiOiLQgSIsImlvY3k7Ijoi0ZEiLCJJb2dvbjsiOiLEriIsImlvZ29uOyI6IsSvIiwiSW9wZjsiOiLwnZWAIiwiaW9wZjsiOiLwnZWaIiwiSW90YTsiOiLOmSIsImlvdGE7IjoizrkiLCJpcHJvZDsiOiLiqLwiLCJpcXVlc3Q7Ijoiwr8iLGlxdWVzdDoiwr8iLCJJc2NyOyI6IuKEkCIsImlzY3I7Ijoi8J2SviIsImlzaW47Ijoi4oiIIiwiaXNpbmRvdDsiOiLii7UiLCJpc2luRTsiOiLii7kiLCJpc2luczsiOiLii7QiLCJpc2luc3Y7Ijoi4ouzIiwiaXNpbnY7Ijoi4oiIIiwiaXQ7Ijoi4oGiIiwiSXRpbGRlOyI6IsSoIiwiaXRpbGRlOyI6IsSpIiwiSXVrY3k7Ijoi0IYiLCJpdWtjeTsiOiLRliIsIkl1bWw7Ijoiw48iLEl1bWw6IsOPIiwiaXVtbDsiOiLDryIsaXVtbDoiw68iLCJKY2lyYzsiOiLEtCIsImpjaXJjOyI6IsS1IiwiSmN5OyI6ItCZIiwiamN5OyI6ItC5IiwiSmZyOyI6IvCdlI0iLCJqZnI7Ijoi8J2UpyIsImptYXRoOyI6Isi3IiwiSm9wZjsiOiLwnZWBIiwiam9wZjsiOiLwnZWbIiwiSnNjcjsiOiLwnZKlIiwianNjcjsiOiLwnZK/IiwiSnNlcmN5OyI6ItCIIiwianNlcmN5OyI6ItGYIiwiSnVrY3k7Ijoi0IQiLCJqdWtjeTsiOiLRlCIsIkthcHBhOyI6Is6aIiwia2FwcGE7IjoizroiLCJrYXBwYXY7Ijoiz7AiLCJLY2VkaWw7IjoixLYiLCJrY2VkaWw7IjoixLciLCJLY3k7Ijoi0JoiLCJrY3k7Ijoi0LoiLCJLZnI7Ijoi8J2UjiIsImtmcjsiOiLwnZSoIiwia2dyZWVuOyI6IsS4IiwiS0hjeTsiOiLQpSIsImtoY3k7Ijoi0YUiLCJLSmN5OyI6ItCMIiwia2pjeTsiOiLRnCIsIktvcGY7Ijoi8J2VgiIsImtvcGY7Ijoi8J2VnCIsIktzY3I7Ijoi8J2SpiIsImtzY3I7Ijoi8J2TgCIsImxBYXJyOyI6IuKHmiIsIkxhY3V0ZTsiOiLEuSIsImxhY3V0ZTsiOiLEuiIsImxhZW1wdHl2OyI6IuKmtCIsImxhZ3JhbjsiOiLihJIiLCJMYW1iZGE7IjoizpsiLCJsYW1iZGE7IjoizrsiLCJMYW5nOyI6IuKfqiIsImxhbmc7Ijoi4p+oIiwibGFuZ2Q7Ijoi4qaRIiwibGFuZ2xlOyI6IuKfqCIsImxhcDsiOiLiqoUiLCJMYXBsYWNldHJmOyI6IuKEkiIsImxhcXVvOyI6IsKrIixsYXF1bzoiwqsiLCJMYXJyOyI6IuKGniIsImxBcnI7Ijoi4oeQIiwibGFycjsiOiLihpAiLCJsYXJyYjsiOiLih6QiLCJsYXJyYmZzOyI6IuKknyIsImxhcnJmczsiOiLipJ0iLCJsYXJyaGs7Ijoi4oapIiwibGFycmxwOyI6IuKGqyIsImxhcnJwbDsiOiLipLkiLCJsYXJyc2ltOyI6IuKlsyIsImxhcnJ0bDsiOiLihqIiLCJsYXQ7Ijoi4qqrIiwibEF0YWlsOyI6IuKkmyIsImxhdGFpbDsiOiLipJkiLCJsYXRlOyI6IuKqrSIsImxhdGVzOyI6IuKqre+4gCIsImxCYXJyOyI6IuKkjiIsImxiYXJyOyI6IuKkjCIsImxiYnJrOyI6IuKdsiIsImxicmFjZTsiOiJ7IiwibGJyYWNrOyI6IlsiLCJsYnJrZTsiOiLiposiLCJsYnJrc2xkOyI6IuKmjyIsImxicmtzbHU7Ijoi4qaNIiwiTGNhcm9uOyI6IsS9IiwibGNhcm9uOyI6IsS+IiwiTGNlZGlsOyI6IsS7IiwibGNlZGlsOyI6IsS8IiwibGNlaWw7Ijoi4oyIIiwibGN1YjsiOiJ7IiwiTGN5OyI6ItCbIiwibGN5OyI6ItC7IiwibGRjYTsiOiLipLYiLCJsZHF1bzsiOiLigJwiLCJsZHF1b3I7Ijoi4oCeIiwibGRyZGhhcjsiOiLipaciLCJsZHJ1c2hhcjsiOiLipYsiLCJsZHNoOyI6IuKGsiIsImxFOyI6IuKJpiIsImxlOyI6IuKJpCIsIkxlZnRBbmdsZUJyYWNrZXQ7Ijoi4p+oIiwiTGVmdEFycm93OyI6IuKGkCIsIkxlZnRhcnJvdzsiOiLih5AiLCJsZWZ0YXJyb3c7Ijoi4oaQIiwiTGVmdEFycm93QmFyOyI6IuKHpCIsIkxlZnRBcnJvd1JpZ2h0QXJyb3c7Ijoi4oeGIiwibGVmdGFycm93dGFpbDsiOiLihqIiLCJMZWZ0Q2VpbGluZzsiOiLijIgiLCJMZWZ0RG91YmxlQnJhY2tldDsiOiLin6YiLCJMZWZ0RG93blRlZVZlY3RvcjsiOiLipaEiLCJMZWZ0RG93blZlY3RvcjsiOiLih4MiLCJMZWZ0RG93blZlY3RvckJhcjsiOiLipZkiLCJMZWZ0Rmxvb3I7Ijoi4oyKIiwibGVmdGhhcnBvb25kb3duOyI6IuKGvSIsImxlZnRoYXJwb29udXA7Ijoi4oa8IiwibGVmdGxlZnRhcnJvd3M7Ijoi4oeHIiwiTGVmdFJpZ2h0QXJyb3c7Ijoi4oaUIiwiTGVmdHJpZ2h0YXJyb3c7Ijoi4oeUIiwibGVmdHJpZ2h0YXJyb3c7Ijoi4oaUIiwibGVmdHJpZ2h0YXJyb3dzOyI6IuKHhiIsImxlZnRyaWdodGhhcnBvb25zOyI6IuKHiyIsImxlZnRyaWdodHNxdWlnYXJyb3c7Ijoi4oatIiwiTGVmdFJpZ2h0VmVjdG9yOyI6IuKljiIsIkxlZnRUZWU7Ijoi4oqjIiwiTGVmdFRlZUFycm93OyI6IuKGpCIsIkxlZnRUZWVWZWN0b3I7Ijoi4qWaIiwibGVmdHRocmVldGltZXM7Ijoi4ouLIiwiTGVmdFRyaWFuZ2xlOyI6IuKKsiIsIkxlZnRUcmlhbmdsZUJhcjsiOiLip48iLCJMZWZ0VHJpYW5nbGVFcXVhbDsiOiLiirQiLCJMZWZ0VXBEb3duVmVjdG9yOyI6IuKlkSIsIkxlZnRVcFRlZVZlY3RvcjsiOiLipaAiLCJMZWZ0VXBWZWN0b3I7Ijoi4oa/IiwiTGVmdFVwVmVjdG9yQmFyOyI6IuKlmCIsIkxlZnRWZWN0b3I7Ijoi4oa8IiwiTGVmdFZlY3RvckJhcjsiOiLipZIiLCJsRWc7Ijoi4qqLIiwibGVnOyI6IuKLmiIsImxlcTsiOiLiiaQiLCJsZXFxOyI6IuKJpiIsImxlcXNsYW50OyI6IuKpvSIsImxlczsiOiLiqb0iLCJsZXNjYzsiOiLiqqgiLCJsZXNkb3Q7Ijoi4qm/IiwibGVzZG90bzsiOiLiqoEiLCJsZXNkb3RvcjsiOiLiqoMiLCJsZXNnOyI6IuKLmu+4gCIsImxlc2dlczsiOiLiqpMiLCJsZXNzYXBwcm94OyI6IuKqhSIsImxlc3Nkb3Q7Ijoi4ouWIiwibGVzc2VxZ3RyOyI6IuKLmiIsImxlc3NlcXFndHI7Ijoi4qqLIiwiTGVzc0VxdWFsR3JlYXRlcjsiOiLii5oiLCJMZXNzRnVsbEVxdWFsOyI6IuKJpiIsIkxlc3NHcmVhdGVyOyI6IuKJtiIsImxlc3NndHI7Ijoi4om2IiwiTGVzc0xlc3M7Ijoi4qqhIiwibGVzc3NpbTsiOiLiibIiLCJMZXNzU2xhbnRFcXVhbDsiOiLiqb0iLCJMZXNzVGlsZGU7Ijoi4omyIiwibGZpc2h0OyI6IuKlvCIsImxmbG9vcjsiOiLijIoiLCJMZnI7Ijoi8J2UjyIsImxmcjsiOiLwnZSpIiwibGc7Ijoi4om2IiwibGdFOyI6IuKqkSIsImxIYXI7Ijoi4qWiIiwibGhhcmQ7Ijoi4oa9IiwibGhhcnU7Ijoi4oa8IiwibGhhcnVsOyI6IuKlqiIsImxoYmxrOyI6IuKWhCIsIkxKY3k7Ijoi0IkiLCJsamN5OyI6ItGZIiwiTGw7Ijoi4ouYIiwibGw7Ijoi4omqIiwibGxhcnI7Ijoi4oeHIiwibGxjb3JuZXI7Ijoi4oyeIiwiTGxlZnRhcnJvdzsiOiLih5oiLCJsbGhhcmQ7Ijoi4qWrIiwibGx0cmk7Ijoi4pe6IiwiTG1pZG90OyI6IsS/IiwibG1pZG90OyI6IsWAIiwibG1vdXN0OyI6IuKOsCIsImxtb3VzdGFjaGU7Ijoi4o6wIiwibG5hcDsiOiLiqokiLCJsbmFwcHJveDsiOiLiqokiLCJsbkU7Ijoi4omoIiwibG5lOyI6IuKqhyIsImxuZXE7Ijoi4qqHIiwibG5lcXE7Ijoi4omoIiwibG5zaW07Ijoi4oumIiwibG9hbmc7Ijoi4p+sIiwibG9hcnI7Ijoi4oe9IiwibG9icms7Ijoi4p+mIiwiTG9uZ0xlZnRBcnJvdzsiOiLin7UiLCJMb25nbGVmdGFycm93OyI6IuKfuCIsImxvbmdsZWZ0YXJyb3c7Ijoi4p+1IiwiTG9uZ0xlZnRSaWdodEFycm93OyI6IuKftyIsIkxvbmdsZWZ0cmlnaHRhcnJvdzsiOiLin7oiLCJsb25nbGVmdHJpZ2h0YXJyb3c7Ijoi4p+3IiwibG9uZ21hcHN0bzsiOiLin7wiLCJMb25nUmlnaHRBcnJvdzsiOiLin7YiLCJMb25ncmlnaHRhcnJvdzsiOiLin7kiLCJsb25ncmlnaHRhcnJvdzsiOiLin7YiLCJsb29wYXJyb3dsZWZ0OyI6IuKGqyIsImxvb3BhcnJvd3JpZ2h0OyI6IuKGrCIsImxvcGFyOyI6IuKmhSIsIkxvcGY7Ijoi8J2VgyIsImxvcGY7Ijoi8J2VnSIsImxvcGx1czsiOiLiqK0iLCJsb3RpbWVzOyI6IuKotCIsImxvd2FzdDsiOiLiiJciLCJsb3diYXI7IjoiXyIsIkxvd2VyTGVmdEFycm93OyI6IuKGmSIsIkxvd2VyUmlnaHRBcnJvdzsiOiLihpgiLCJsb3o7Ijoi4peKIiwibG96ZW5nZTsiOiLil4oiLCJsb3pmOyI6IuKnqyIsImxwYXI7IjoiKCIsImxwYXJsdDsiOiLippMiLCJscmFycjsiOiLih4YiLCJscmNvcm5lcjsiOiLijJ8iLCJscmhhcjsiOiLih4siLCJscmhhcmQ7Ijoi4qWtIiwibHJtOyI6IuKAjiIsImxydHJpOyI6IuKKvyIsImxzYXF1bzsiOiLigLkiLCJMc2NyOyI6IuKEkiIsImxzY3I7Ijoi8J2TgSIsIkxzaDsiOiLihrAiLCJsc2g7Ijoi4oawIiwibHNpbTsiOiLiibIiLCJsc2ltZTsiOiLiqo0iLCJsc2ltZzsiOiLiqo8iLCJsc3FiOyI6IlsiLCJsc3F1bzsiOiLigJgiLCJsc3F1b3I7Ijoi4oCaIiwiTHN0cm9rOyI6IsWBIiwibHN0cm9rOyI6IsWCIiwiTFQ7IjoiPCIsTFQ6IjwiLCJMdDsiOiLiiaoiLCJsdDsiOiI8IixsdDoiPCIsImx0Y2M7Ijoi4qqmIiwibHRjaXI7Ijoi4qm5IiwibHRkb3Q7Ijoi4ouWIiwibHRocmVlOyI6IuKLiyIsImx0aW1lczsiOiLii4kiLCJsdGxhcnI7Ijoi4qW2IiwibHRxdWVzdDsiOiLiqbsiLCJsdHJpOyI6IuKXgyIsImx0cmllOyI6IuKKtCIsImx0cmlmOyI6IuKXgiIsImx0clBhcjsiOiLippYiLCJsdXJkc2hhcjsiOiLipYoiLCJsdXJ1aGFyOyI6IuKlpiIsImx2ZXJ0bmVxcTsiOiLiiajvuIAiLCJsdm5FOyI6IuKJqO+4gCIsIm1hY3I7Ijoiwq8iLG1hY3I6IsKvIiwibWFsZTsiOiLimYIiLCJtYWx0OyI6IuKcoCIsIm1hbHRlc2U7Ijoi4pygIiwiTWFwOyI6IuKkhSIsIm1hcDsiOiLihqYiLCJtYXBzdG87Ijoi4oamIiwibWFwc3RvZG93bjsiOiLihqciLCJtYXBzdG9sZWZ0OyI6IuKGpCIsIm1hcHN0b3VwOyI6IuKGpSIsIm1hcmtlcjsiOiLilq4iLCJtY29tbWE7Ijoi4qipIiwiTWN5OyI6ItCcIiwibWN5OyI6ItC8IiwibWRhc2g7Ijoi4oCUIiwibUREb3Q7Ijoi4oi6IiwibWVhc3VyZWRhbmdsZTsiOiLiiKEiLCJNZWRpdW1TcGFjZTsiOiLigZ8iLCJNZWxsaW50cmY7Ijoi4oSzIiwiTWZyOyI6IvCdlJAiLCJtZnI7Ijoi8J2UqiIsIm1obzsiOiLihKciLCJtaWNybzsiOiLCtSIsbWljcm86IsK1IiwibWlkOyI6IuKIoyIsIm1pZGFzdDsiOiIqIiwibWlkY2lyOyI6IuKrsCIsIm1pZGRvdDsiOiLCtyIsbWlkZG90OiLCtyIsIm1pbnVzOyI6IuKIkiIsIm1pbnVzYjsiOiLiip8iLCJtaW51c2Q7Ijoi4oi4IiwibWludXNkdTsiOiLiqKoiLCJNaW51c1BsdXM7Ijoi4oiTIiwibWxjcDsiOiLiq5siLCJtbGRyOyI6IuKApiIsIm1ucGx1czsiOiLiiJMiLCJtb2RlbHM7Ijoi4oqnIiwiTW9wZjsiOiLwnZWEIiwibW9wZjsiOiLwnZWeIiwibXA7Ijoi4oiTIiwiTXNjcjsiOiLihLMiLCJtc2NyOyI6IvCdk4IiLCJtc3Rwb3M7Ijoi4oi+IiwiTXU7IjoizpwiLCJtdTsiOiLOvCIsIm11bHRpbWFwOyI6IuKKuCIsIm11bWFwOyI6IuKKuCIsIm5hYmxhOyI6IuKIhyIsIk5hY3V0ZTsiOiLFgyIsIm5hY3V0ZTsiOiLFhCIsIm5hbmc7Ijoi4oig4oOSIiwibmFwOyI6IuKJiSIsIm5hcEU7Ijoi4qmwzLgiLCJuYXBpZDsiOiLiiYvMuCIsIm5hcG9zOyI6IsWJIiwibmFwcHJveDsiOiLiiYkiLCJuYXR1cjsiOiLima4iLCJuYXR1cmFsOyI6IuKZriIsIm5hdHVyYWxzOyI6IuKElSIsIm5ic3A7IjoiwqAiLG5ic3A6IsKgIiwibmJ1bXA7Ijoi4omOzLgiLCJuYnVtcGU7Ijoi4omPzLgiLCJuY2FwOyI6IuKpgyIsIk5jYXJvbjsiOiLFhyIsIm5jYXJvbjsiOiLFiCIsIk5jZWRpbDsiOiLFhSIsIm5jZWRpbDsiOiLFhiIsIm5jb25nOyI6IuKJhyIsIm5jb25nZG90OyI6IuKprcy4IiwibmN1cDsiOiLiqYIiLCJOY3k7Ijoi0J0iLCJuY3k7Ijoi0L0iLCJuZGFzaDsiOiLigJMiLCJuZTsiOiLiiaAiLCJuZWFyaGs7Ijoi4qSkIiwibmVBcnI7Ijoi4oeXIiwibmVhcnI7Ijoi4oaXIiwibmVhcnJvdzsiOiLihpciLCJuZWRvdDsiOiLiiZDMuCIsIk5lZ2F0aXZlTWVkaXVtU3BhY2U7Ijoi4oCLIiwiTmVnYXRpdmVUaGlja1NwYWNlOyI6IuKAiyIsIk5lZ2F0aXZlVGhpblNwYWNlOyI6IuKAiyIsIk5lZ2F0aXZlVmVyeVRoaW5TcGFjZTsiOiLigIsiLCJuZXF1aXY7Ijoi4omiIiwibmVzZWFyOyI6IuKkqCIsIm5lc2ltOyI6IuKJgsy4IiwiTmVzdGVkR3JlYXRlckdyZWF0ZXI7Ijoi4omrIiwiTmVzdGVkTGVzc0xlc3M7Ijoi4omqIiwiTmV3TGluZTsiOiJcbiIsIm5leGlzdDsiOiLiiIQiLCJuZXhpc3RzOyI6IuKIhCIsIk5mcjsiOiLwnZSRIiwibmZyOyI6IvCdlKsiLCJuZ0U7Ijoi4omnzLgiLCJuZ2U7Ijoi4omxIiwibmdlcTsiOiLiibEiLCJuZ2VxcTsiOiLiiafMuCIsIm5nZXFzbGFudDsiOiLiqb7MuCIsIm5nZXM7Ijoi4qm+zLgiLCJuR2c7Ijoi4ouZzLgiLCJuZ3NpbTsiOiLiibUiLCJuR3Q7Ijoi4omr4oOSIiwibmd0OyI6IuKJryIsIm5ndHI7Ijoi4omvIiwibkd0djsiOiLiiavMuCIsIm5oQXJyOyI6IuKHjiIsIm5oYXJyOyI6IuKGriIsIm5ocGFyOyI6IuKrsiIsIm5pOyI6IuKIiyIsIm5pczsiOiLii7wiLCJuaXNkOyI6IuKLuiIsIm5pdjsiOiLiiIsiLCJOSmN5OyI6ItCKIiwibmpjeTsiOiLRmiIsIm5sQXJyOyI6IuKHjSIsIm5sYXJyOyI6IuKGmiIsIm5sZHI7Ijoi4oClIiwibmxFOyI6IuKJpsy4IiwibmxlOyI6IuKJsCIsIm5MZWZ0YXJyb3c7Ijoi4oeNIiwibmxlZnRhcnJvdzsiOiLihpoiLCJuTGVmdHJpZ2h0YXJyb3c7Ijoi4oeOIiwibmxlZnRyaWdodGFycm93OyI6IuKGriIsIm5sZXE7Ijoi4omwIiwibmxlcXE7Ijoi4ommzLgiLCJubGVxc2xhbnQ7Ijoi4qm9zLgiLCJubGVzOyI6IuKpvcy4Iiwibmxlc3M7Ijoi4omuIiwibkxsOyI6IuKLmMy4IiwibmxzaW07Ijoi4om0Iiwibkx0OyI6IuKJquKDkiIsIm5sdDsiOiLiia4iLCJubHRyaTsiOiLii6oiLCJubHRyaWU7Ijoi4ousIiwibkx0djsiOiLiiarMuCIsIm5taWQ7Ijoi4oikIiwiTm9CcmVhazsiOiLigaAiLCJOb25CcmVha2luZ1NwYWNlOyI6IsKgIiwiTm9wZjsiOiLihJUiLCJub3BmOyI6IvCdlZ8iLCJOb3Q7Ijoi4qusIiwibm90OyI6IsKsIixub3Q6IsKsIiwiTm90Q29uZ3J1ZW50OyI6IuKJoiIsIk5vdEN1cENhcDsiOiLiia0iLCJOb3REb3VibGVWZXJ0aWNhbEJhcjsiOiLiiKYiLCJOb3RFbGVtZW50OyI6IuKIiSIsIk5vdEVxdWFsOyI6IuKJoCIsIk5vdEVxdWFsVGlsZGU7Ijoi4omCzLgiLCJOb3RFeGlzdHM7Ijoi4oiEIiwiTm90R3JlYXRlcjsiOiLiia8iLCJOb3RHcmVhdGVyRXF1YWw7Ijoi4omxIiwiTm90R3JlYXRlckZ1bGxFcXVhbDsiOiLiiafMuCIsIk5vdEdyZWF0ZXJHcmVhdGVyOyI6IuKJq8y4IiwiTm90R3JlYXRlckxlc3M7Ijoi4om5IiwiTm90R3JlYXRlclNsYW50RXF1YWw7Ijoi4qm+zLgiLCJOb3RHcmVhdGVyVGlsZGU7Ijoi4om1IiwiTm90SHVtcERvd25IdW1wOyI6IuKJjsy4IiwiTm90SHVtcEVxdWFsOyI6IuKJj8y4Iiwibm90aW47Ijoi4oiJIiwibm90aW5kb3Q7Ijoi4ou1zLgiLCJub3RpbkU7Ijoi4ou5zLgiLCJub3RpbnZhOyI6IuKIiSIsIm5vdGludmI7Ijoi4ou3Iiwibm90aW52YzsiOiLii7YiLCJOb3RMZWZ0VHJpYW5nbGU7Ijoi4ouqIiwiTm90TGVmdFRyaWFuZ2xlQmFyOyI6IuKnj8y4IiwiTm90TGVmdFRyaWFuZ2xlRXF1YWw7Ijoi4ousIiwiTm90TGVzczsiOiLiia4iLCJOb3RMZXNzRXF1YWw7Ijoi4omwIiwiTm90TGVzc0dyZWF0ZXI7Ijoi4om4IiwiTm90TGVzc0xlc3M7Ijoi4omqzLgiLCJOb3RMZXNzU2xhbnRFcXVhbDsiOiLiqb3MuCIsIk5vdExlc3NUaWxkZTsiOiLiibQiLCJOb3ROZXN0ZWRHcmVhdGVyR3JlYXRlcjsiOiLiqqLMuCIsIk5vdE5lc3RlZExlc3NMZXNzOyI6IuKqocy4Iiwibm90bmk7Ijoi4oiMIiwibm90bml2YTsiOiLiiIwiLCJub3RuaXZiOyI6IuKLviIsIm5vdG5pdmM7Ijoi4ou9IiwiTm90UHJlY2VkZXM7Ijoi4oqAIiwiTm90UHJlY2VkZXNFcXVhbDsiOiLiqq/MuCIsIk5vdFByZWNlZGVzU2xhbnRFcXVhbDsiOiLii6AiLCJOb3RSZXZlcnNlRWxlbWVudDsiOiLiiIwiLCJOb3RSaWdodFRyaWFuZ2xlOyI6IuKLqyIsIk5vdFJpZ2h0VHJpYW5nbGVCYXI7Ijoi4qeQzLgiLCJOb3RSaWdodFRyaWFuZ2xlRXF1YWw7Ijoi4outIiwiTm90U3F1YXJlU3Vic2V0OyI6IuKKj8y4IiwiTm90U3F1YXJlU3Vic2V0RXF1YWw7Ijoi4ouiIiwiTm90U3F1YXJlU3VwZXJzZXQ7Ijoi4oqQzLgiLCJOb3RTcXVhcmVTdXBlcnNldEVxdWFsOyI6IuKLoyIsIk5vdFN1YnNldDsiOiLiioLig5IiLCJOb3RTdWJzZXRFcXVhbDsiOiLiiogiLCJOb3RTdWNjZWVkczsiOiLiioEiLCJOb3RTdWNjZWVkc0VxdWFsOyI6IuKqsMy4IiwiTm90U3VjY2VlZHNTbGFudEVxdWFsOyI6IuKLoSIsIk5vdFN1Y2NlZWRzVGlsZGU7Ijoi4om/zLgiLCJOb3RTdXBlcnNldDsiOiLiioPig5IiLCJOb3RTdXBlcnNldEVxdWFsOyI6IuKKiSIsIk5vdFRpbGRlOyI6IuKJgSIsIk5vdFRpbGRlRXF1YWw7Ijoi4omEIiwiTm90VGlsZGVGdWxsRXF1YWw7Ijoi4omHIiwiTm90VGlsZGVUaWxkZTsiOiLiiYkiLCJOb3RWZXJ0aWNhbEJhcjsiOiLiiKQiLCJucGFyOyI6IuKIpiIsIm5wYXJhbGxlbDsiOiLiiKYiLCJucGFyc2w7Ijoi4qu94oOlIiwibnBhcnQ7Ijoi4oiCzLgiLCJucG9saW50OyI6IuKolCIsIm5wcjsiOiLiioAiLCJucHJjdWU7Ijoi4ougIiwibnByZTsiOiLiqq/MuCIsIm5wcmVjOyI6IuKKgCIsIm5wcmVjZXE7Ijoi4qqvzLgiLCJuckFycjsiOiLih48iLCJucmFycjsiOiLihpsiLCJucmFycmM7Ijoi4qSzzLgiLCJucmFycnc7Ijoi4oadzLgiLCJuUmlnaHRhcnJvdzsiOiLih48iLCJucmlnaHRhcnJvdzsiOiLihpsiLCJucnRyaTsiOiLii6siLCJucnRyaWU7Ijoi4outIiwibnNjOyI6IuKKgSIsIm5zY2N1ZTsiOiLii6EiLCJuc2NlOyI6IuKqsMy4IiwiTnNjcjsiOiLwnZKpIiwibnNjcjsiOiLwnZODIiwibnNob3J0bWlkOyI6IuKIpCIsIm5zaG9ydHBhcmFsbGVsOyI6IuKIpiIsIm5zaW07Ijoi4omBIiwibnNpbWU7Ijoi4omEIiwibnNpbWVxOyI6IuKJhCIsIm5zbWlkOyI6IuKIpCIsIm5zcGFyOyI6IuKIpiIsIm5zcXN1YmU7Ijoi4ouiIiwibnNxc3VwZTsiOiLii6MiLCJuc3ViOyI6IuKKhCIsIm5zdWJFOyI6IuKrhcy4IiwibnN1YmU7Ijoi4oqIIiwibnN1YnNldDsiOiLiioLig5IiLCJuc3Vic2V0ZXE7Ijoi4oqIIiwibnN1YnNldGVxcTsiOiLiq4XMuCIsIm5zdWNjOyI6IuKKgSIsIm5zdWNjZXE7Ijoi4qqwzLgiLCJuc3VwOyI6IuKKhSIsIm5zdXBFOyI6IuKrhsy4IiwibnN1cGU7Ijoi4oqJIiwibnN1cHNldDsiOiLiioPig5IiLCJuc3Vwc2V0ZXE7Ijoi4oqJIiwibnN1cHNldGVxcTsiOiLiq4bMuCIsIm50Z2w7Ijoi4om5IiwiTnRpbGRlOyI6IsORIixOdGlsZGU6IsORIiwibnRpbGRlOyI6IsOxIixudGlsZGU6IsOxIiwibnRsZzsiOiLiibgiLCJudHJpYW5nbGVsZWZ0OyI6IuKLqiIsIm50cmlhbmdsZWxlZnRlcTsiOiLii6wiLCJudHJpYW5nbGVyaWdodDsiOiLii6siLCJudHJpYW5nbGVyaWdodGVxOyI6IuKLrSIsIk51OyI6Is6dIiwibnU7Ijoizr0iLCJudW07IjoiIyIsIm51bWVybzsiOiLihJYiLCJudW1zcDsiOiLigIciLCJudmFwOyI6IuKJjeKDkiIsIm5WRGFzaDsiOiLiiq8iLCJuVmRhc2g7Ijoi4oquIiwibnZEYXNoOyI6IuKKrSIsIm52ZGFzaDsiOiLiiqwiLCJudmdlOyI6IuKJpeKDkiIsIm52Z3Q7IjoiPuKDkiIsIm52SGFycjsiOiLipIQiLCJudmluZmluOyI6IuKnniIsIm52bEFycjsiOiLipIIiLCJudmxlOyI6IuKJpOKDkiIsIm52bHQ7IjoiPOKDkiIsIm52bHRyaWU7Ijoi4oq04oOSIiwibnZyQXJyOyI6IuKkgyIsIm52cnRyaWU7Ijoi4oq14oOSIiwibnZzaW07Ijoi4oi84oOSIiwibndhcmhrOyI6IuKkoyIsIm53QXJyOyI6IuKHliIsIm53YXJyOyI6IuKGliIsIm53YXJyb3c7Ijoi4oaWIiwibnduZWFyOyI6IuKkpyIsIk9hY3V0ZTsiOiLDkyIsT2FjdXRlOiLDkyIsIm9hY3V0ZTsiOiLDsyIsb2FjdXRlOiLDsyIsIm9hc3Q7Ijoi4oqbIiwib2NpcjsiOiLiipoiLCJPY2lyYzsiOiLDlCIsT2NpcmM6IsOUIiwib2NpcmM7Ijoiw7QiLG9jaXJjOiLDtCIsIk9jeTsiOiLQniIsIm9jeTsiOiLQviIsIm9kYXNoOyI6IuKKnSIsIk9kYmxhYzsiOiLFkCIsIm9kYmxhYzsiOiLFkSIsIm9kaXY7Ijoi4qi4Iiwib2RvdDsiOiLiipkiLCJvZHNvbGQ7Ijoi4qa8IiwiT0VsaWc7IjoixZIiLCJvZWxpZzsiOiLFkyIsIm9mY2lyOyI6IuKmvyIsIk9mcjsiOiLwnZSSIiwib2ZyOyI6IvCdlKwiLCJvZ29uOyI6IsubIiwiT2dyYXZlOyI6IsOSIixPZ3JhdmU6IsOSIiwib2dyYXZlOyI6IsOyIixvZ3JhdmU6IsOyIiwib2d0OyI6IuKngSIsIm9oYmFyOyI6IuKmtSIsIm9obTsiOiLOqSIsIm9pbnQ7Ijoi4oiuIiwib2xhcnI7Ijoi4oa6Iiwib2xjaXI7Ijoi4qa+Iiwib2xjcm9zczsiOiLiprsiLCJvbGluZTsiOiLigL4iLCJvbHQ7Ijoi4qeAIiwiT21hY3I7IjoixYwiLCJvbWFjcjsiOiLFjSIsIk9tZWdhOyI6Is6pIiwib21lZ2E7Ijoiz4kiLCJPbWljcm9uOyI6Is6fIiwib21pY3JvbjsiOiLOvyIsIm9taWQ7Ijoi4qa2Iiwib21pbnVzOyI6IuKKliIsIk9vcGY7Ijoi8J2VhiIsIm9vcGY7Ijoi8J2VoCIsIm9wYXI7Ijoi4qa3IiwiT3BlbkN1cmx5RG91YmxlUXVvdGU7Ijoi4oCcIiwiT3BlbkN1cmx5UXVvdGU7Ijoi4oCYIiwib3BlcnA7Ijoi4qa5Iiwib3BsdXM7Ijoi4oqVIiwiT3I7Ijoi4qmUIiwib3I7Ijoi4oioIiwib3JhcnI7Ijoi4oa7Iiwib3JkOyI6IuKpnSIsIm9yZGVyOyI6IuKEtCIsIm9yZGVyb2Y7Ijoi4oS0Iiwib3JkZjsiOiLCqiIsb3JkZjoiwqoiLCJvcmRtOyI6IsK6IixvcmRtOiLCuiIsIm9yaWdvZjsiOiLiirYiLCJvcm9yOyI6IuKpliIsIm9yc2xvcGU7Ijoi4qmXIiwib3J2OyI6IuKpmyIsIm9TOyI6IuKTiCIsIk9zY3I7Ijoi8J2SqiIsIm9zY3I7Ijoi4oS0IiwiT3NsYXNoOyI6IsOYIixPc2xhc2g6IsOYIiwib3NsYXNoOyI6IsO4Iixvc2xhc2g6IsO4Iiwib3NvbDsiOiLiipgiLCJPdGlsZGU7Ijoiw5UiLE90aWxkZToiw5UiLCJvdGlsZGU7Ijoiw7UiLG90aWxkZToiw7UiLCJPdGltZXM7Ijoi4qi3Iiwib3RpbWVzOyI6IuKKlyIsIm90aW1lc2FzOyI6IuKotiIsIk91bWw7Ijoiw5YiLE91bWw6IsOWIiwib3VtbDsiOiLDtiIsb3VtbDoiw7YiLCJvdmJhcjsiOiLijL0iLCJPdmVyQmFyOyI6IuKAviIsIk92ZXJCcmFjZTsiOiLij54iLCJPdmVyQnJhY2tldDsiOiLijrQiLCJPdmVyUGFyZW50aGVzaXM7Ijoi4o+cIiwicGFyOyI6IuKIpSIsInBhcmE7IjoiwrYiLHBhcmE6IsK2IiwicGFyYWxsZWw7Ijoi4oilIiwicGFyc2ltOyI6IuKrsyIsInBhcnNsOyI6IuKrvSIsInBhcnQ7Ijoi4oiCIiwiUGFydGlhbEQ7Ijoi4oiCIiwiUGN5OyI6ItCfIiwicGN5OyI6ItC/IiwicGVyY250OyI6IiUiLCJwZXJpb2Q7IjoiLiIsInBlcm1pbDsiOiLigLAiLCJwZXJwOyI6IuKKpSIsInBlcnRlbms7Ijoi4oCxIiwiUGZyOyI6IvCdlJMiLCJwZnI7Ijoi8J2UrSIsIlBoaTsiOiLOpiIsInBoaTsiOiLPhiIsInBoaXY7Ijoiz5UiLCJwaG1tYXQ7Ijoi4oSzIiwicGhvbmU7Ijoi4piOIiwiUGk7IjoizqAiLCJwaTsiOiLPgCIsInBpdGNoZm9yazsiOiLii5QiLCJwaXY7Ijoiz5YiLCJwbGFuY2s7Ijoi4oSPIiwicGxhbmNraDsiOiLihI4iLCJwbGFua3Y7Ijoi4oSPIiwicGx1czsiOiIrIiwicGx1c2FjaXI7Ijoi4qijIiwicGx1c2I7Ijoi4oqeIiwicGx1c2NpcjsiOiLiqKIiLCJwbHVzZG87Ijoi4oiUIiwicGx1c2R1OyI6IuKopSIsInBsdXNlOyI6IuKpsiIsIlBsdXNNaW51czsiOiLCsSIsInBsdXNtbjsiOiLCsSIscGx1c21uOiLCsSIsInBsdXNzaW07Ijoi4qimIiwicGx1c3R3bzsiOiLiqKciLCJwbTsiOiLCsSIsIlBvaW5jYXJlcGxhbmU7Ijoi4oSMIiwicG9pbnRpbnQ7Ijoi4qiVIiwiUG9wZjsiOiLihJkiLCJwb3BmOyI6IvCdlaEiLCJwb3VuZDsiOiLCoyIscG91bmQ6IsKjIiwiUHI7Ijoi4qq7IiwicHI7Ijoi4om6IiwicHJhcDsiOiLiqrciLCJwcmN1ZTsiOiLiibwiLCJwckU7Ijoi4qqzIiwicHJlOyI6IuKqryIsInByZWM7Ijoi4om6IiwicHJlY2FwcHJveDsiOiLiqrciLCJwcmVjY3VybHllcTsiOiLiibwiLCJQcmVjZWRlczsiOiLiiboiLCJQcmVjZWRlc0VxdWFsOyI6IuKqryIsIlByZWNlZGVzU2xhbnRFcXVhbDsiOiLiibwiLCJQcmVjZWRlc1RpbGRlOyI6IuKJviIsInByZWNlcTsiOiLiqq8iLCJwcmVjbmFwcHJveDsiOiLiqrkiLCJwcmVjbmVxcTsiOiLiqrUiLCJwcmVjbnNpbTsiOiLii6giLCJwcmVjc2ltOyI6IuKJviIsIlByaW1lOyI6IuKAsyIsInByaW1lOyI6IuKAsiIsInByaW1lczsiOiLihJkiLCJwcm5hcDsiOiLiqrkiLCJwcm5FOyI6IuKqtSIsInBybnNpbTsiOiLii6giLCJwcm9kOyI6IuKIjyIsIlByb2R1Y3Q7Ijoi4oiPIiwicHJvZmFsYXI7Ijoi4oyuIiwicHJvZmxpbmU7Ijoi4oySIiwicHJvZnN1cmY7Ijoi4oyTIiwicHJvcDsiOiLiiJ0iLCJQcm9wb3J0aW9uOyI6IuKItyIsIlByb3BvcnRpb25hbDsiOiLiiJ0iLCJwcm9wdG87Ijoi4oidIiwicHJzaW07Ijoi4om+IiwicHJ1cmVsOyI6IuKKsCIsIlBzY3I7Ijoi8J2SqyIsInBzY3I7Ijoi8J2ThSIsIlBzaTsiOiLOqCIsInBzaTsiOiLPiCIsInB1bmNzcDsiOiLigIgiLCJRZnI7Ijoi8J2UlCIsInFmcjsiOiLwnZSuIiwicWludDsiOiLiqIwiLCJRb3BmOyI6IuKEmiIsInFvcGY7Ijoi8J2VoiIsInFwcmltZTsiOiLigZciLCJRc2NyOyI6IvCdkqwiLCJxc2NyOyI6IvCdk4YiLCJxdWF0ZXJuaW9uczsiOiLihI0iLCJxdWF0aW50OyI6IuKoliIsInF1ZXN0OyI6Ij8iLCJxdWVzdGVxOyI6IuKJnyIsIlFVT1Q7IjonIicsUVVPVDonIicsInF1b3Q7IjonIicscXVvdDonIicsInJBYXJyOyI6IuKHmyIsInJhY2U7Ijoi4oi9zLEiLCJSYWN1dGU7IjoixZQiLCJyYWN1dGU7IjoixZUiLCJyYWRpYzsiOiLiiJoiLCJyYWVtcHR5djsiOiLiprMiLCJSYW5nOyI6IuKfqyIsInJhbmc7Ijoi4p+pIiwicmFuZ2Q7Ijoi4qaSIiwicmFuZ2U7Ijoi4qalIiwicmFuZ2xlOyI6IuKfqSIsInJhcXVvOyI6IsK7IixyYXF1bzoiwrsiLCJSYXJyOyI6IuKGoCIsInJBcnI7Ijoi4oeSIiwicmFycjsiOiLihpIiLCJyYXJyYXA7Ijoi4qW1IiwicmFycmI7Ijoi4oelIiwicmFycmJmczsiOiLipKAiLCJyYXJyYzsiOiLipLMiLCJyYXJyZnM7Ijoi4qSeIiwicmFycmhrOyI6IuKGqiIsInJhcnJscDsiOiLihqwiLCJyYXJycGw7Ijoi4qWFIiwicmFycnNpbTsiOiLipbQiLCJSYXJydGw7Ijoi4qSWIiwicmFycnRsOyI6IuKGoyIsInJhcnJ3OyI6IuKGnSIsInJBdGFpbDsiOiLipJwiLCJyYXRhaWw7Ijoi4qSaIiwicmF0aW87Ijoi4oi2IiwicmF0aW9uYWxzOyI6IuKEmiIsIlJCYXJyOyI6IuKkkCIsInJCYXJyOyI6IuKkjyIsInJiYXJyOyI6IuKkjSIsInJiYnJrOyI6IuKdsyIsInJicmFjZTsiOiJ9IiwicmJyYWNrOyI6Il0iLCJyYnJrZTsiOiLipowiLCJyYnJrc2xkOyI6IuKmjiIsInJicmtzbHU7Ijoi4qaQIiwiUmNhcm9uOyI6IsWYIiwicmNhcm9uOyI6IsWZIiwiUmNlZGlsOyI6IsWWIiwicmNlZGlsOyI6IsWXIiwicmNlaWw7Ijoi4oyJIiwicmN1YjsiOiJ9IiwiUmN5OyI6ItCgIiwicmN5OyI6ItGAIiwicmRjYTsiOiLipLciLCJyZGxkaGFyOyI6IuKlqSIsInJkcXVvOyI6IuKAnSIsInJkcXVvcjsiOiLigJ0iLCJyZHNoOyI6IuKGsyIsIlJlOyI6IuKEnCIsInJlYWw7Ijoi4oScIiwicmVhbGluZTsiOiLihJsiLCJyZWFscGFydDsiOiLihJwiLCJyZWFsczsiOiLihJ0iLCJyZWN0OyI6IuKWrSIsIlJFRzsiOiLCriIsUkVHOiLCriIsInJlZzsiOiLCriIscmVnOiLCriIsIlJldmVyc2VFbGVtZW50OyI6IuKIiyIsIlJldmVyc2VFcXVpbGlicml1bTsiOiLih4siLCJSZXZlcnNlVXBFcXVpbGlicml1bTsiOiLipa8iLCJyZmlzaHQ7Ijoi4qW9IiwicmZsb29yOyI6IuKMiyIsIlJmcjsiOiLihJwiLCJyZnI7Ijoi8J2UryIsInJIYXI7Ijoi4qWkIiwicmhhcmQ7Ijoi4oeBIiwicmhhcnU7Ijoi4oeAIiwicmhhcnVsOyI6IuKlrCIsIlJobzsiOiLOoSIsInJobzsiOiLPgSIsInJob3Y7Ijoiz7EiLCJSaWdodEFuZ2xlQnJhY2tldDsiOiLin6kiLCJSaWdodEFycm93OyI6IuKGkiIsIlJpZ2h0YXJyb3c7Ijoi4oeSIiwicmlnaHRhcnJvdzsiOiLihpIiLCJSaWdodEFycm93QmFyOyI6IuKHpSIsIlJpZ2h0QXJyb3dMZWZ0QXJyb3c7Ijoi4oeEIiwicmlnaHRhcnJvd3RhaWw7Ijoi4oajIiwiUmlnaHRDZWlsaW5nOyI6IuKMiSIsIlJpZ2h0RG91YmxlQnJhY2tldDsiOiLin6ciLCJSaWdodERvd25UZWVWZWN0b3I7Ijoi4qWdIiwiUmlnaHREb3duVmVjdG9yOyI6IuKHgiIsIlJpZ2h0RG93blZlY3RvckJhcjsiOiLipZUiLCJSaWdodEZsb29yOyI6IuKMiyIsInJpZ2h0aGFycG9vbmRvd247Ijoi4oeBIiwicmlnaHRoYXJwb29udXA7Ijoi4oeAIiwicmlnaHRsZWZ0YXJyb3dzOyI6IuKHhCIsInJpZ2h0bGVmdGhhcnBvb25zOyI6IuKHjCIsInJpZ2h0cmlnaHRhcnJvd3M7Ijoi4oeJIiwicmlnaHRzcXVpZ2Fycm93OyI6IuKGnSIsIlJpZ2h0VGVlOyI6IuKKoiIsIlJpZ2h0VGVlQXJyb3c7Ijoi4oamIiwiUmlnaHRUZWVWZWN0b3I7Ijoi4qWbIiwicmlnaHR0aHJlZXRpbWVzOyI6IuKLjCIsIlJpZ2h0VHJpYW5nbGU7Ijoi4oqzIiwiUmlnaHRUcmlhbmdsZUJhcjsiOiLip5AiLCJSaWdodFRyaWFuZ2xlRXF1YWw7Ijoi4oq1IiwiUmlnaHRVcERvd25WZWN0b3I7Ijoi4qWPIiwiUmlnaHRVcFRlZVZlY3RvcjsiOiLipZwiLCJSaWdodFVwVmVjdG9yOyI6IuKGviIsIlJpZ2h0VXBWZWN0b3JCYXI7Ijoi4qWUIiwiUmlnaHRWZWN0b3I7Ijoi4oeAIiwiUmlnaHRWZWN0b3JCYXI7Ijoi4qWTIiwicmluZzsiOiLLmiIsInJpc2luZ2RvdHNlcTsiOiLiiZMiLCJybGFycjsiOiLih4QiLCJybGhhcjsiOiLih4wiLCJybG07Ijoi4oCPIiwicm1vdXN0OyI6IuKOsSIsInJtb3VzdGFjaGU7Ijoi4o6xIiwicm5taWQ7Ijoi4quuIiwicm9hbmc7Ijoi4p+tIiwicm9hcnI7Ijoi4oe+Iiwicm9icms7Ijoi4p+nIiwicm9wYXI7Ijoi4qaGIiwiUm9wZjsiOiLihJ0iLCJyb3BmOyI6IvCdlaMiLCJyb3BsdXM7Ijoi4qiuIiwicm90aW1lczsiOiLiqLUiLCJSb3VuZEltcGxpZXM7Ijoi4qWwIiwicnBhcjsiOiIpIiwicnBhcmd0OyI6IuKmlCIsInJwcG9saW50OyI6IuKokiIsInJyYXJyOyI6IuKHiSIsIlJyaWdodGFycm93OyI6IuKHmyIsInJzYXF1bzsiOiLigLoiLCJSc2NyOyI6IuKEmyIsInJzY3I7Ijoi8J2ThyIsIlJzaDsiOiLihrEiLCJyc2g7Ijoi4oaxIiwicnNxYjsiOiJdIiwicnNxdW87Ijoi4oCZIiwicnNxdW9yOyI6IuKAmSIsInJ0aHJlZTsiOiLii4wiLCJydGltZXM7Ijoi4ouKIiwicnRyaTsiOiLilrkiLCJydHJpZTsiOiLiirUiLCJydHJpZjsiOiLilrgiLCJydHJpbHRyaTsiOiLip44iLCJSdWxlRGVsYXllZDsiOiLip7QiLCJydWx1aGFyOyI6IuKlqCIsInJ4OyI6IuKEniIsIlNhY3V0ZTsiOiLFmiIsInNhY3V0ZTsiOiLFmyIsInNicXVvOyI6IuKAmiIsIlNjOyI6IuKqvCIsInNjOyI6IuKJuyIsInNjYXA7Ijoi4qq4IiwiU2Nhcm9uOyI6IsWgIiwic2Nhcm9uOyI6IsWhIiwic2NjdWU7Ijoi4om9Iiwic2NFOyI6IuKqtCIsInNjZTsiOiLiqrAiLCJTY2VkaWw7IjoixZ4iLCJzY2VkaWw7IjoixZ8iLCJTY2lyYzsiOiLFnCIsInNjaXJjOyI6IsWdIiwic2NuYXA7Ijoi4qq6Iiwic2NuRTsiOiLiqrYiLCJzY25zaW07Ijoi4oupIiwic2Nwb2xpbnQ7Ijoi4qiTIiwic2NzaW07Ijoi4om/IiwiU2N5OyI6ItChIiwic2N5OyI6ItGBIiwic2RvdDsiOiLii4UiLCJzZG90YjsiOiLiiqEiLCJzZG90ZTsiOiLiqaYiLCJzZWFyaGs7Ijoi4qSlIiwic2VBcnI7Ijoi4oeYIiwic2VhcnI7Ijoi4oaYIiwic2VhcnJvdzsiOiLihpgiLCJzZWN0OyI6IsKnIixzZWN0OiLCpyIsInNlbWk7IjoiOyIsInNlc3dhcjsiOiLipKkiLCJzZXRtaW51czsiOiLiiJYiLCJzZXRtbjsiOiLiiJYiLCJzZXh0OyI6IuKctiIsIlNmcjsiOiLwnZSWIiwic2ZyOyI6IvCdlLAiLCJzZnJvd247Ijoi4oyiIiwic2hhcnA7Ijoi4pmvIiwiU0hDSGN5OyI6ItCpIiwic2hjaGN5OyI6ItGJIiwiU0hjeTsiOiLQqCIsInNoY3k7Ijoi0YgiLCJTaG9ydERvd25BcnJvdzsiOiLihpMiLCJTaG9ydExlZnRBcnJvdzsiOiLihpAiLCJzaG9ydG1pZDsiOiLiiKMiLCJzaG9ydHBhcmFsbGVsOyI6IuKIpSIsIlNob3J0UmlnaHRBcnJvdzsiOiLihpIiLCJTaG9ydFVwQXJyb3c7Ijoi4oaRIiwic2h5OyI6IsKtIixzaHk6IsKtIiwiU2lnbWE7IjoizqMiLCJzaWdtYTsiOiLPgyIsInNpZ21hZjsiOiLPgiIsInNpZ21hdjsiOiLPgiIsInNpbTsiOiLiiLwiLCJzaW1kb3Q7Ijoi4qmqIiwic2ltZTsiOiLiiYMiLCJzaW1lcTsiOiLiiYMiLCJzaW1nOyI6IuKqniIsInNpbWdFOyI6IuKqoCIsInNpbWw7Ijoi4qqdIiwic2ltbEU7Ijoi4qqfIiwic2ltbmU7Ijoi4omGIiwic2ltcGx1czsiOiLiqKQiLCJzaW1yYXJyOyI6IuKlsiIsInNsYXJyOyI6IuKGkCIsIlNtYWxsQ2lyY2xlOyI6IuKImCIsInNtYWxsc2V0bWludXM7Ijoi4oiWIiwic21hc2hwOyI6IuKosyIsInNtZXBhcnNsOyI6IuKnpCIsInNtaWQ7Ijoi4oijIiwic21pbGU7Ijoi4oyjIiwic210OyI6IuKqqiIsInNtdGU7Ijoi4qqsIiwic210ZXM7Ijoi4qqs77iAIiwiU09GVGN5OyI6ItCsIiwic29mdGN5OyI6ItGMIiwic29sOyI6Ii8iLCJzb2xiOyI6IuKnhCIsInNvbGJhcjsiOiLijL8iLCJTb3BmOyI6IvCdlYoiLCJzb3BmOyI6IvCdlaQiLCJzcGFkZXM7Ijoi4pmgIiwic3BhZGVzdWl0OyI6IuKZoCIsInNwYXI7Ijoi4oilIiwic3FjYXA7Ijoi4oqTIiwic3FjYXBzOyI6IuKKk++4gCIsInNxY3VwOyI6IuKKlCIsInNxY3VwczsiOiLiipTvuIAiLCJTcXJ0OyI6IuKImiIsInNxc3ViOyI6IuKKjyIsInNxc3ViZTsiOiLiipEiLCJzcXN1YnNldDsiOiLiio8iLCJzcXN1YnNldGVxOyI6IuKKkSIsInNxc3VwOyI6IuKKkCIsInNxc3VwZTsiOiLiipIiLCJzcXN1cHNldDsiOiLiipAiLCJzcXN1cHNldGVxOyI6IuKKkiIsInNxdTsiOiLilqEiLCJTcXVhcmU7Ijoi4pahIiwic3F1YXJlOyI6IuKWoSIsIlNxdWFyZUludGVyc2VjdGlvbjsiOiLiipMiLCJTcXVhcmVTdWJzZXQ7Ijoi4oqPIiwiU3F1YXJlU3Vic2V0RXF1YWw7Ijoi4oqRIiwiU3F1YXJlU3VwZXJzZXQ7Ijoi4oqQIiwiU3F1YXJlU3VwZXJzZXRFcXVhbDsiOiLiipIiLCJTcXVhcmVVbmlvbjsiOiLiipQiLCJzcXVhcmY7Ijoi4paqIiwic3F1ZjsiOiLilqoiLCJzcmFycjsiOiLihpIiLCJTc2NyOyI6IvCdkq4iLCJzc2NyOyI6IvCdk4giLCJzc2V0bW47Ijoi4oiWIiwic3NtaWxlOyI6IuKMoyIsInNzdGFyZjsiOiLii4YiLCJTdGFyOyI6IuKLhiIsInN0YXI7Ijoi4piGIiwic3RhcmY7Ijoi4piFIiwic3RyYWlnaHRlcHNpbG9uOyI6Is+1Iiwic3RyYWlnaHRwaGk7Ijoiz5UiLCJzdHJuczsiOiLCryIsIlN1YjsiOiLii5AiLCJzdWI7Ijoi4oqCIiwic3ViZG90OyI6IuKqvSIsInN1YkU7Ijoi4quFIiwic3ViZTsiOiLiioYiLCJzdWJlZG90OyI6IuKrgyIsInN1Ym11bHQ7Ijoi4quBIiwic3VibkU7Ijoi4quLIiwic3VibmU7Ijoi4oqKIiwic3VicGx1czsiOiLiqr8iLCJzdWJyYXJyOyI6IuKluSIsIlN1YnNldDsiOiLii5AiLCJzdWJzZXQ7Ijoi4oqCIiwic3Vic2V0ZXE7Ijoi4oqGIiwic3Vic2V0ZXFxOyI6IuKrhSIsIlN1YnNldEVxdWFsOyI6IuKKhiIsInN1YnNldG5lcTsiOiLiiooiLCJzdWJzZXRuZXFxOyI6IuKriyIsInN1YnNpbTsiOiLiq4ciLCJzdWJzdWI7Ijoi4quVIiwic3Vic3VwOyI6IuKrkyIsInN1Y2M7Ijoi4om7Iiwic3VjY2FwcHJveDsiOiLiqrgiLCJzdWNjY3VybHllcTsiOiLiib0iLCJTdWNjZWVkczsiOiLiibsiLCJTdWNjZWVkc0VxdWFsOyI6IuKqsCIsIlN1Y2NlZWRzU2xhbnRFcXVhbDsiOiLiib0iLCJTdWNjZWVkc1RpbGRlOyI6IuKJvyIsInN1Y2NlcTsiOiLiqrAiLCJzdWNjbmFwcHJveDsiOiLiqroiLCJzdWNjbmVxcTsiOiLiqrYiLCJzdWNjbnNpbTsiOiLii6kiLCJzdWNjc2ltOyI6IuKJvyIsIlN1Y2hUaGF0OyI6IuKIiyIsIlN1bTsiOiLiiJEiLCJzdW07Ijoi4oiRIiwic3VuZzsiOiLimaoiLCJTdXA7Ijoi4ouRIiwic3VwOyI6IuKKgyIsInN1cDE7IjoiwrkiLHN1cDE6IsK5Iiwic3VwMjsiOiLCsiIsc3VwMjoiwrIiLCJzdXAzOyI6IsKzIixzdXAzOiLCsyIsInN1cGRvdDsiOiLiqr4iLCJzdXBkc3ViOyI6IuKrmCIsInN1cEU7Ijoi4quGIiwic3VwZTsiOiLiiociLCJzdXBlZG90OyI6IuKrhCIsIlN1cGVyc2V0OyI6IuKKgyIsIlN1cGVyc2V0RXF1YWw7Ijoi4oqHIiwic3VwaHNvbDsiOiLin4kiLCJzdXBoc3ViOyI6IuKrlyIsInN1cGxhcnI7Ijoi4qW7Iiwic3VwbXVsdDsiOiLiq4IiLCJzdXBuRTsiOiLiq4wiLCJzdXBuZTsiOiLiiosiLCJzdXBwbHVzOyI6IuKrgCIsIlN1cHNldDsiOiLii5EiLCJzdXBzZXQ7Ijoi4oqDIiwic3Vwc2V0ZXE7Ijoi4oqHIiwic3Vwc2V0ZXFxOyI6IuKrhiIsInN1cHNldG5lcTsiOiLiiosiLCJzdXBzZXRuZXFxOyI6IuKrjCIsInN1cHNpbTsiOiLiq4giLCJzdXBzdWI7Ijoi4quUIiwic3Vwc3VwOyI6IuKrliIsInN3YXJoazsiOiLipKYiLCJzd0FycjsiOiLih5kiLCJzd2FycjsiOiLihpkiLCJzd2Fycm93OyI6IuKGmSIsInN3bndhcjsiOiLipKoiLCJzemxpZzsiOiLDnyIsc3psaWc6IsOfIiwiVGFiOyI6Ilx0IiwidGFyZ2V0OyI6IuKMliIsIlRhdTsiOiLOpCIsInRhdTsiOiLPhCIsInRicms7Ijoi4o60IiwiVGNhcm9uOyI6IsWkIiwidGNhcm9uOyI6IsWlIiwiVGNlZGlsOyI6IsWiIiwidGNlZGlsOyI6IsWjIiwiVGN5OyI6ItCiIiwidGN5OyI6ItGCIiwidGRvdDsiOiLig5siLCJ0ZWxyZWM7Ijoi4oyVIiwiVGZyOyI6IvCdlJciLCJ0ZnI7Ijoi8J2UsSIsInRoZXJlNDsiOiLiiLQiLCJUaGVyZWZvcmU7Ijoi4oi0IiwidGhlcmVmb3JlOyI6IuKItCIsIlRoZXRhOyI6Is6YIiwidGhldGE7IjoizrgiLCJ0aGV0YXN5bTsiOiLPkSIsInRoZXRhdjsiOiLPkSIsInRoaWNrYXBwcm94OyI6IuKJiCIsInRoaWNrc2ltOyI6IuKIvCIsIlRoaWNrU3BhY2U7Ijoi4oGf4oCKIiwidGhpbnNwOyI6IuKAiSIsIlRoaW5TcGFjZTsiOiLigIkiLCJ0aGthcDsiOiLiiYgiLCJ0aGtzaW07Ijoi4oi8IiwiVEhPUk47Ijoiw54iLFRIT1JOOiLDniIsInRob3JuOyI6IsO+Iix0aG9ybjoiw74iLCJUaWxkZTsiOiLiiLwiLCJ0aWxkZTsiOiLLnCIsIlRpbGRlRXF1YWw7Ijoi4omDIiwiVGlsZGVGdWxsRXF1YWw7Ijoi4omFIiwiVGlsZGVUaWxkZTsiOiLiiYgiLCJ0aW1lczsiOiLDlyIsdGltZXM6IsOXIiwidGltZXNiOyI6IuKKoCIsInRpbWVzYmFyOyI6IuKosSIsInRpbWVzZDsiOiLiqLAiLCJ0aW50OyI6IuKIrSIsInRvZWE7Ijoi4qSoIiwidG9wOyI6IuKKpCIsInRvcGJvdDsiOiLijLYiLCJ0b3BjaXI7Ijoi4quxIiwiVG9wZjsiOiLwnZWLIiwidG9wZjsiOiLwnZWlIiwidG9wZm9yazsiOiLiq5oiLCJ0b3NhOyI6IuKkqSIsInRwcmltZTsiOiLigLQiLCJUUkFERTsiOiLihKIiLCJ0cmFkZTsiOiLihKIiLCJ0cmlhbmdsZTsiOiLilrUiLCJ0cmlhbmdsZWRvd247Ijoi4pa/IiwidHJpYW5nbGVsZWZ0OyI6IuKXgyIsInRyaWFuZ2xlbGVmdGVxOyI6IuKKtCIsInRyaWFuZ2xlcTsiOiLiiZwiLCJ0cmlhbmdsZXJpZ2h0OyI6IuKWuSIsInRyaWFuZ2xlcmlnaHRlcTsiOiLiirUiLCJ0cmlkb3Q7Ijoi4pesIiwidHJpZTsiOiLiiZwiLCJ0cmltaW51czsiOiLiqLoiLCJUcmlwbGVEb3Q7Ijoi4oObIiwidHJpcGx1czsiOiLiqLkiLCJ0cmlzYjsiOiLip40iLCJ0cml0aW1lOyI6IuKouyIsInRycGV6aXVtOyI6IuKPoiIsIlRzY3I7Ijoi8J2SryIsInRzY3I7Ijoi8J2TiSIsIlRTY3k7Ijoi0KYiLCJ0c2N5OyI6ItGGIiwiVFNIY3k7Ijoi0IsiLCJ0c2hjeTsiOiLRmyIsIlRzdHJvazsiOiLFpiIsInRzdHJvazsiOiLFpyIsInR3aXh0OyI6IuKJrCIsInR3b2hlYWRsZWZ0YXJyb3c7Ijoi4oaeIiwidHdvaGVhZHJpZ2h0YXJyb3c7Ijoi4oagIiwiVWFjdXRlOyI6IsOaIixVYWN1dGU6IsOaIiwidWFjdXRlOyI6IsO6Iix1YWN1dGU6IsO6IiwiVWFycjsiOiLihp8iLCJ1QXJyOyI6IuKHkSIsInVhcnI7Ijoi4oaRIiwiVWFycm9jaXI7Ijoi4qWJIiwiVWJyY3k7Ijoi0I4iLCJ1YnJjeTsiOiLRniIsIlVicmV2ZTsiOiLFrCIsInVicmV2ZTsiOiLFrSIsIlVjaXJjOyI6IsObIixVY2lyYzoiw5siLCJ1Y2lyYzsiOiLDuyIsdWNpcmM6IsO7IiwiVWN5OyI6ItCjIiwidWN5OyI6ItGDIiwidWRhcnI7Ijoi4oeFIiwiVWRibGFjOyI6IsWwIiwidWRibGFjOyI6IsWxIiwidWRoYXI7Ijoi4qWuIiwidWZpc2h0OyI6IuKlviIsIlVmcjsiOiLwnZSYIiwidWZyOyI6IvCdlLIiLCJVZ3JhdmU7Ijoiw5kiLFVncmF2ZToiw5kiLCJ1Z3JhdmU7Ijoiw7kiLHVncmF2ZToiw7kiLCJ1SGFyOyI6IuKloyIsInVoYXJsOyI6IuKGvyIsInVoYXJyOyI6IuKGviIsInVoYmxrOyI6IuKWgCIsInVsY29ybjsiOiLijJwiLCJ1bGNvcm5lcjsiOiLijJwiLCJ1bGNyb3A7Ijoi4oyPIiwidWx0cmk7Ijoi4pe4IiwiVW1hY3I7IjoixaoiLCJ1bWFjcjsiOiLFqyIsInVtbDsiOiLCqCIsdW1sOiLCqCIsIlVuZGVyQmFyOyI6Il8iLCJVbmRlckJyYWNlOyI6IuKPnyIsIlVuZGVyQnJhY2tldDsiOiLijrUiLCJVbmRlclBhcmVudGhlc2lzOyI6IuKPnSIsIlVuaW9uOyI6IuKLgyIsIlVuaW9uUGx1czsiOiLiio4iLCJVb2dvbjsiOiLFsiIsInVvZ29uOyI6IsWzIiwiVW9wZjsiOiLwnZWMIiwidW9wZjsiOiLwnZWmIiwiVXBBcnJvdzsiOiLihpEiLCJVcGFycm93OyI6IuKHkSIsInVwYXJyb3c7Ijoi4oaRIiwiVXBBcnJvd0JhcjsiOiLipJIiLCJVcEFycm93RG93bkFycm93OyI6IuKHhSIsIlVwRG93bkFycm93OyI6IuKGlSIsIlVwZG93bmFycm93OyI6IuKHlSIsInVwZG93bmFycm93OyI6IuKGlSIsIlVwRXF1aWxpYnJpdW07Ijoi4qWuIiwidXBoYXJwb29ubGVmdDsiOiLihr8iLCJ1cGhhcnBvb25yaWdodDsiOiLihr4iLCJ1cGx1czsiOiLiio4iLCJVcHBlckxlZnRBcnJvdzsiOiLihpYiLCJVcHBlclJpZ2h0QXJyb3c7Ijoi4oaXIiwiVXBzaTsiOiLPkiIsInVwc2k7Ijoiz4UiLCJ1cHNpaDsiOiLPkiIsIlVwc2lsb247IjoizqUiLCJ1cHNpbG9uOyI6Is+FIiwiVXBUZWU7Ijoi4oqlIiwiVXBUZWVBcnJvdzsiOiLihqUiLCJ1cHVwYXJyb3dzOyI6IuKHiCIsInVyY29ybjsiOiLijJ0iLCJ1cmNvcm5lcjsiOiLijJ0iLCJ1cmNyb3A7Ijoi4oyOIiwiVXJpbmc7Ijoixa4iLCJ1cmluZzsiOiLFryIsInVydHJpOyI6IuKXuSIsIlVzY3I7Ijoi8J2SsCIsInVzY3I7Ijoi8J2TiiIsInV0ZG90OyI6IuKLsCIsIlV0aWxkZTsiOiLFqCIsInV0aWxkZTsiOiLFqSIsInV0cmk7Ijoi4pa1IiwidXRyaWY7Ijoi4pa0IiwidXVhcnI7Ijoi4oeIIiwiVXVtbDsiOiLDnCIsVXVtbDoiw5wiLCJ1dW1sOyI6IsO8Iix1dW1sOiLDvCIsInV3YW5nbGU7Ijoi4qanIiwidmFuZ3J0OyI6IuKmnCIsInZhcmVwc2lsb247Ijoiz7UiLCJ2YXJrYXBwYTsiOiLPsCIsInZhcm5vdGhpbmc7Ijoi4oiFIiwidmFycGhpOyI6Is+VIiwidmFycGk7Ijoiz5YiLCJ2YXJwcm9wdG87Ijoi4oidIiwidkFycjsiOiLih5UiLCJ2YXJyOyI6IuKGlSIsInZhcnJobzsiOiLPsSIsInZhcnNpZ21hOyI6Is+CIiwidmFyc3Vic2V0bmVxOyI6IuKKiu+4gCIsInZhcnN1YnNldG5lcXE7Ijoi4quL77iAIiwidmFyc3Vwc2V0bmVxOyI6IuKKi++4gCIsInZhcnN1cHNldG5lcXE7Ijoi4quM77iAIiwidmFydGhldGE7Ijoiz5EiLCJ2YXJ0cmlhbmdsZWxlZnQ7Ijoi4oqyIiwidmFydHJpYW5nbGVyaWdodDsiOiLiirMiLCJWYmFyOyI6IuKrqyIsInZCYXI7Ijoi4quoIiwidkJhcnY7Ijoi4qupIiwiVmN5OyI6ItCSIiwidmN5OyI6ItCyIiwiVkRhc2g7Ijoi4oqrIiwiVmRhc2g7Ijoi4oqpIiwidkRhc2g7Ijoi4oqoIiwidmRhc2g7Ijoi4oqiIiwiVmRhc2hsOyI6IuKrpiIsIlZlZTsiOiLii4EiLCJ2ZWU7Ijoi4oioIiwidmVlYmFyOyI6IuKKuyIsInZlZWVxOyI6IuKJmiIsInZlbGxpcDsiOiLii64iLCJWZXJiYXI7Ijoi4oCWIiwidmVyYmFyOyI6InwiLCJWZXJ0OyI6IuKAliIsInZlcnQ7IjoifCIsIlZlcnRpY2FsQmFyOyI6IuKIoyIsIlZlcnRpY2FsTGluZTsiOiJ8IiwiVmVydGljYWxTZXBhcmF0b3I7Ijoi4p2YIiwiVmVydGljYWxUaWxkZTsiOiLiiYAiLCJWZXJ5VGhpblNwYWNlOyI6IuKAiiIsIlZmcjsiOiLwnZSZIiwidmZyOyI6IvCdlLMiLCJ2bHRyaTsiOiLiirIiLCJ2bnN1YjsiOiLiioLig5IiLCJ2bnN1cDsiOiLiioPig5IiLCJWb3BmOyI6IvCdlY0iLCJ2b3BmOyI6IvCdlaciLCJ2cHJvcDsiOiLiiJ0iLCJ2cnRyaTsiOiLiirMiLCJWc2NyOyI6IvCdkrEiLCJ2c2NyOyI6IvCdk4siLCJ2c3VibkU7Ijoi4quL77iAIiwidnN1Ym5lOyI6IuKKiu+4gCIsInZzdXBuRTsiOiLiq4zvuIAiLCJ2c3VwbmU7Ijoi4oqL77iAIiwiVnZkYXNoOyI6IuKKqiIsInZ6aWd6YWc7Ijoi4qaaIiwiV2NpcmM7IjoixbQiLCJ3Y2lyYzsiOiLFtSIsIndlZGJhcjsiOiLiqZ8iLCJXZWRnZTsiOiLii4AiLCJ3ZWRnZTsiOiLiiKciLCJ3ZWRnZXE7Ijoi4omZIiwid2VpZXJwOyI6IuKEmCIsIldmcjsiOiLwnZSaIiwid2ZyOyI6IvCdlLQiLCJXb3BmOyI6IvCdlY4iLCJ3b3BmOyI6IvCdlagiLCJ3cDsiOiLihJgiLCJ3cjsiOiLiiYAiLCJ3cmVhdGg7Ijoi4omAIiwiV3NjcjsiOiLwnZKyIiwid3NjcjsiOiLwnZOMIiwieGNhcDsiOiLii4IiLCJ4Y2lyYzsiOiLil68iLCJ4Y3VwOyI6IuKLgyIsInhkdHJpOyI6IuKWvSIsIlhmcjsiOiLwnZSbIiwieGZyOyI6IvCdlLUiLCJ4aEFycjsiOiLin7oiLCJ4aGFycjsiOiLin7ciLCJYaTsiOiLOniIsInhpOyI6Is6+IiwieGxBcnI7Ijoi4p+4IiwieGxhcnI7Ijoi4p+1IiwieG1hcDsiOiLin7wiLCJ4bmlzOyI6IuKLuyIsInhvZG90OyI6IuKogCIsIlhvcGY7Ijoi8J2VjyIsInhvcGY7Ijoi8J2VqSIsInhvcGx1czsiOiLiqIEiLCJ4b3RpbWU7Ijoi4qiCIiwieHJBcnI7Ijoi4p+5IiwieHJhcnI7Ijoi4p+2IiwiWHNjcjsiOiLwnZKzIiwieHNjcjsiOiLwnZONIiwieHNxY3VwOyI6IuKohiIsInh1cGx1czsiOiLiqIQiLCJ4dXRyaTsiOiLilrMiLCJ4dmVlOyI6IuKLgSIsInh3ZWRnZTsiOiLii4AiLCJZYWN1dGU7Ijoiw50iLFlhY3V0ZToiw50iLCJ5YWN1dGU7Ijoiw70iLHlhY3V0ZToiw70iLCJZQWN5OyI6ItCvIiwieWFjeTsiOiLRjyIsIlljaXJjOyI6IsW2IiwieWNpcmM7IjoixbciLCJZY3k7Ijoi0KsiLCJ5Y3k7Ijoi0YsiLCJ5ZW47IjoiwqUiLHllbjoiwqUiLCJZZnI7Ijoi8J2UnCIsInlmcjsiOiLwnZS2IiwiWUljeTsiOiLQhyIsInlpY3k7Ijoi0ZciLCJZb3BmOyI6IvCdlZAiLCJ5b3BmOyI6IvCdlaoiLCJZc2NyOyI6IvCdkrQiLCJ5c2NyOyI6IvCdk44iLCJZVWN5OyI6ItCuIiwieXVjeTsiOiLRjiIsIll1bWw7IjoixbgiLCJ5dW1sOyI6IsO/Iix5dW1sOiLDvyIsIlphY3V0ZTsiOiLFuSIsInphY3V0ZTsiOiLFuiIsIlpjYXJvbjsiOiLFvSIsInpjYXJvbjsiOiLFviIsIlpjeTsiOiLQlyIsInpjeTsiOiLQtyIsIlpkb3Q7IjoixbsiLCJ6ZG90OyI6IsW8IiwiemVldHJmOyI6IuKEqCIsIlplcm9XaWR0aFNwYWNlOyI6IuKAiyIsIlpldGE7IjoizpYiLCJ6ZXRhOyI6Is62IiwiWmZyOyI6IuKEqCIsInpmcjsiOiLwnZS3IiwiWkhjeTsiOiLQliIsInpoY3k7Ijoi0LYiLCJ6aWdyYXJyOyI6IuKHnSIsIlpvcGY7Ijoi4oSkIiwiem9wZjsiOiLwnZWrIiwiWnNjcjsiOiLwnZK1IiwienNjcjsiOiLwnZOPIiwiendqOyI6IuKAjSIsInp3bmo7Ijoi4oCMIn07ZnVuY3Rpb24gSWEoZSx0KXtpZihlLmxlbmd0aDx0Lmxlbmd0aClyZXR1cm4hMTtmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKylpZihlW25dIT09dFtuXSlyZXR1cm4hMTtyZXR1cm4hMH1mdW5jdGlvbiBOYShlLHQpe2Zvcih2YXIgbj0iIjt0PjA7KTE9PSgxJnQpJiYobis9ZSksZSs9ZSx0Pj4+PTE7cmV0dXJuIG59dmFyIFVhPSJhIi5jaGFyQ29kZUF0KDApLEhhPSJ6Ii5jaGFyQ29kZUF0KDApLHphPSJBIi5jaGFyQ29kZUF0KDApLERhPSJaIi5jaGFyQ29kZUF0KDApLFdhPSIwIi5jaGFyQ29kZUF0KDApLE9hPSI5Ii5jaGFyQ29kZUF0KDApO2Z1bmN0aW9uIFBhKGUsdCl7dmFyIG49ZS5jaGFyQ29kZUF0KHQpO3JldHVybiBVYTw9biYmbjw9SGF8fHphPD1uJiZuPD1EYXx8V2E8PW4mJm48PU9hfWZ1bmN0aW9uIHFhKGUpe3JldHVybiB2b2lkIDAhPT1lfXZhciBGYT1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSx0KXt2YXIgbj10aGlzO3RoaXMuaWQ9ZSx0aGlzLl90YWdzPVtdLHRoaXMuX3RhZ01hcD17fSx0aGlzLl92YWx1ZVNldE1hcD17fSx0aGlzLl90YWdzPXQudGFnc3x8W10sdGhpcy5fZ2xvYmFsQXR0cmlidXRlcz10Lmdsb2JhbEF0dHJpYnV0ZXN8fFtdLHRoaXMuX3RhZ3MuZm9yRWFjaCgoZnVuY3Rpb24oZSl7bi5fdGFnTWFwW2UubmFtZS50b0xvd2VyQ2FzZSgpXT1lfSkpLHQudmFsdWVTZXRzJiZ0LnZhbHVlU2V0cy5mb3JFYWNoKChmdW5jdGlvbihlKXtuLl92YWx1ZVNldE1hcFtlLm5hbWVdPWUudmFsdWVzfSkpfXJldHVybiBlLnByb3RvdHlwZS5pc0FwcGxpY2FibGU9ZnVuY3Rpb24oKXtyZXR1cm4hMH0sZS5wcm90b3R5cGUuZ2V0SWQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pZH0sZS5wcm90b3R5cGUucHJvdmlkZVRhZ3M9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fdGFnc30sZS5wcm90b3R5cGUucHJvdmlkZUF0dHJpYnV0ZXM9ZnVuY3Rpb24oZSl7dmFyIHQ9W10sbj1mdW5jdGlvbihlKXt0LnB1c2goZSl9LHI9dGhpcy5fdGFnTWFwW2UudG9Mb3dlckNhc2UoKV07cmV0dXJuIHImJnIuYXR0cmlidXRlcy5mb3JFYWNoKG4pLHRoaXMuX2dsb2JhbEF0dHJpYnV0ZXMuZm9yRWFjaChuKSx0fSxlLnByb3RvdHlwZS5wcm92aWRlVmFsdWVzPWZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcyxyPVtdO3Q9dC50b0xvd2VyQ2FzZSgpO3ZhciBpPWZ1bmN0aW9uKGUpe2UuZm9yRWFjaCgoZnVuY3Rpb24oZSl7ZS5uYW1lLnRvTG93ZXJDYXNlKCk9PT10JiYoZS52YWx1ZXMmJmUudmFsdWVzLmZvckVhY2goKGZ1bmN0aW9uKGUpe3IucHVzaChlKX0pKSxlLnZhbHVlU2V0JiZuLl92YWx1ZVNldE1hcFtlLnZhbHVlU2V0XSYmbi5fdmFsdWVTZXRNYXBbZS52YWx1ZVNldF0uZm9yRWFjaCgoZnVuY3Rpb24oZSl7ci5wdXNoKGUpfSkpKX0pKX0sYT10aGlzLl90YWdNYXBbZS50b0xvd2VyQ2FzZSgpXTtyZXR1cm4gYSYmaShhLmF0dHJpYnV0ZXMpLGkodGhpcy5fZ2xvYmFsQXR0cmlidXRlcykscn0sZX0oKTtmdW5jdGlvbiBWYShlLHQsbil7dm9pZCAwPT09dCYmKHQ9e30pO3ZhciByPXtraW5kOm4/Im1hcmtkb3duIjoicGxhaW50ZXh0Iix2YWx1ZToiIn07aWYoZS5kZXNjcmlwdGlvbiYmITEhPT10LmRvY3VtZW50YXRpb24pe3ZhciBpPWZ1bmN0aW9uKGUpe2lmKGUpcmV0dXJuInN0cmluZyI9PXR5cGVvZiBlP3traW5kOiJtYXJrZG93biIsdmFsdWU6ZX06e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTplLnZhbHVlfX0oZS5kZXNjcmlwdGlvbik7aSYmKHIudmFsdWUrPWkudmFsdWUpfWlmKGUucmVmZXJlbmNlcyYmZS5yZWZlcmVuY2VzLmxlbmd0aD4wJiYhMSE9PXQucmVmZXJlbmNlcyYmKHIudmFsdWUubGVuZ3RoJiYoci52YWx1ZSs9IlxuXG4iKSxyLnZhbHVlKz1uP2UucmVmZXJlbmNlcy5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiJbIi5jb25jYXQoZS5uYW1lLCJdKCIpLmNvbmNhdChlLnVybCwiKSIpfSkpLmpvaW4oIiB8ICIpOmUucmVmZXJlbmNlcy5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiIiLmNvbmNhdChlLm5hbWUsIjogIikuY29uY2F0KGUudXJsKX0pKS5qb2luKCJcbiIpKSwiIiE9PXIudmFsdWUpcmV0dXJuIHJ9dmFyIEJhPWZ1bmN0aW9uKGUsdCxuLHIpe3JldHVybiBuZXcobnx8KG49UHJvbWlzZSkpKChmdW5jdGlvbihpLGEpe2Z1bmN0aW9uIG8oZSl7dHJ5e2woci5uZXh0KGUpKX1jYXRjaChlKXthKGUpfX1mdW5jdGlvbiBzKGUpe3RyeXtsKHIudGhyb3coZSkpfWNhdGNoKGUpe2EoZSl9fWZ1bmN0aW9uIGwoZSl7dmFyIHQ7ZS5kb25lP2koZS52YWx1ZSk6KHQ9ZS52YWx1ZSx0IGluc3RhbmNlb2Ygbj90Om5ldyBuKChmdW5jdGlvbihlKXtlKHQpfSkpKS50aGVuKG8scyl9bCgocj1yLmFwcGx5KGUsdHx8W10pKS5uZXh0KCkpfSkpfSxLYT1mdW5jdGlvbihlLHQpe3ZhciBuLHIsaSxhLG89e2xhYmVsOjAsc2VudDpmdW5jdGlvbigpe2lmKDEmaVswXSl0aHJvdyBpWzFdO3JldHVybiBpWzFdfSx0cnlzOltdLG9wczpbXX07cmV0dXJuIGE9e25leHQ6cygwKSx0aHJvdzpzKDEpLHJldHVybjpzKDIpfSwiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYoYVtTeW1ib2wuaXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSxhO2Z1bmN0aW9uIHMoYSl7cmV0dXJuIGZ1bmN0aW9uKHMpe3JldHVybiBmdW5jdGlvbihhKXtpZihuKXRocm93IG5ldyBUeXBlRXJyb3IoIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy4iKTtmb3IoO287KXRyeXtpZihuPTEsciYmKGk9MiZhWzBdP3IucmV0dXJuOmFbMF0/ci50aHJvd3x8KChpPXIucmV0dXJuKSYmaS5jYWxsKHIpLDApOnIubmV4dCkmJiEoaT1pLmNhbGwocixhWzFdKSkuZG9uZSlyZXR1cm4gaTtzd2l0Y2gocj0wLGkmJihhPVsyJmFbMF0saS52YWx1ZV0pLGFbMF0pe2Nhc2UgMDpjYXNlIDE6aT1hO2JyZWFrO2Nhc2UgNDpyZXR1cm4gby5sYWJlbCsrLHt2YWx1ZTphWzFdLGRvbmU6ITF9O2Nhc2UgNTpvLmxhYmVsKysscj1hWzFdLGE9WzBdO2NvbnRpbnVlO2Nhc2UgNzphPW8ub3BzLnBvcCgpLG8udHJ5cy5wb3AoKTtjb250aW51ZTtkZWZhdWx0OmlmKCEoaT1vLnRyeXMsKGk9aS5sZW5ndGg+MCYmaVtpLmxlbmd0aC0xXSl8fDYhPT1hWzBdJiYyIT09YVswXSkpe289MDtjb250aW51ZX1pZigzPT09YVswXSYmKCFpfHxhWzFdPmlbMF0mJmFbMV08aVszXSkpe28ubGFiZWw9YVsxXTticmVha31pZig2PT09YVswXSYmby5sYWJlbDxpWzFdKXtvLmxhYmVsPWlbMV0saT1hO2JyZWFrfWlmKGkmJm8ubGFiZWw8aVsyXSl7by5sYWJlbD1pWzJdLG8ub3BzLnB1c2goYSk7YnJlYWt9aVsyXSYmby5vcHMucG9wKCksby50cnlzLnBvcCgpO2NvbnRpbnVlfWE9dC5jYWxsKGUsbyl9Y2F0Y2goZSl7YT1bNixlXSxyPTB9ZmluYWxseXtuPWk9MH1pZig1JmFbMF0pdGhyb3cgYVsxXTtyZXR1cm57dmFsdWU6YVswXT9hWzFdOnZvaWQgMCxkb25lOiEwfX0oW2Esc10pfX19LGphPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlKXt0aGlzLnJlYWREaXJlY3Rvcnk9ZSx0aGlzLmF0cmlidXRlQ29tcGxldGlvbnM9W119cmV0dXJuIGUucHJvdG90eXBlLm9uSHRtbEF0dHJpYnV0ZVZhbHVlPWZ1bmN0aW9uKGUpeyhmdW5jdGlvbihlLHQpe2lmKCJzcmMiPT09dHx8ImhyZWYiPT09dClyZXR1cm4hMDt2YXIgbj1YYVtlXTtpZihuKXJldHVybiJzdHJpbmciPT10eXBlb2Ygbj9uPT09dDotMSE9PW4uaW5kZXhPZih0KTtyZXR1cm4hMX0pKGUudGFnLGUuYXR0cmlidXRlKSYmdGhpcy5hdHJpYnV0ZUNvbXBsZXRpb25zLnB1c2goZSl9LGUucHJvdG90eXBlLmNvbXB1dGVDb21wbGV0aW9ucz1mdW5jdGlvbihlLHQpe3JldHVybiBCYSh0aGlzLHZvaWQgMCx2b2lkIDAsKGZ1bmN0aW9uKCl7dmFyIG4scixpLGEsbyxzLGwsYyxoLGQ7cmV0dXJuIEthKHRoaXMsKGZ1bmN0aW9uKHUpe3N3aXRjaCh1LmxhYmVsKXtjYXNlIDA6bj17aXRlbXM6W10saXNJbmNvbXBsZXRlOiExfSxyPTAsaT10aGlzLmF0cmlidXRlQ29tcGxldGlvbnMsdS5sYWJlbD0xO2Nhc2UgMTpyZXR1cm4gcjxpLmxlbmd0aD8oYT1pW3JdLGZ1bmN0aW9uKGUpe2lmKElhKGUsImh0dHAiKXx8SWEoZSwiaHR0cHMiKXx8SWEoZSwiLy8iKSlyZXR1cm4hMTtyZXR1cm4hMH0obz1mdW5jdGlvbihlKXtyZXR1cm4gSWEoZSwiJyIpfHxJYShlLCciJyk/ZS5zbGljZSgxLC0xKTplfShlLmdldFRleHQoYS5yYW5nZSkpKT8iLiIhPT1vJiYiLi4iIT09bz9bMywyXToobi5pc0luY29tcGxldGU9ITAsWzMsNF0pOlszLDRdKTpbMyw1XTtjYXNlIDI6cmV0dXJuIHM9ZnVuY3Rpb24oZSx0LG4pe3ZhciByLGk9ZS5sYXN0SW5kZXhPZigiLyIpO2lmKC0xPT09aSlyPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1KYShlLnN0YXJ0LHQpLGk9SmEoZS5lbmQsbik7cmV0dXJuIHJyLmNyZWF0ZShyLGkpfShuLDEsLTEpO2Vsc2V7dmFyIGE9dC5zbGljZShpKzEpLG89SmEobi5lbmQsLTEtYS5sZW5ndGgpLHM9YS5pbmRleE9mKCIgIiksbD12b2lkIDA7bD0tMSE9PXM/SmEobyxzKTpKYShuLmVuZCwtMSkscj1yci5jcmVhdGUobyxsKX1yZXR1cm4gcn0oYS52YWx1ZSxvLGEucmFuZ2UpLFs0LHRoaXMucHJvdmlkZVBhdGhTdWdnZXN0aW9ucyhhLnZhbHVlLHMsZSx0KV07Y2FzZSAzOmZvcihsPXUuc2VudCgpLGM9MCxoPWw7YzxoLmxlbmd0aDtjKyspZD1oW2NdLG4uaXRlbXMucHVzaChkKTt1LmxhYmVsPTQ7Y2FzZSA0OnJldHVybiByKyssWzMsMV07Y2FzZSA1OnJldHVyblsyLG5dfX0pKX0pKX0sZS5wcm90b3R5cGUucHJvdmlkZVBhdGhTdWdnZXN0aW9ucz1mdW5jdGlvbihlLHQsbixyKXtyZXR1cm4gQmEodGhpcyx2b2lkIDAsdm9pZCAwLChmdW5jdGlvbigpe3ZhciBpLGEsbyxzLGwsYyxoLGQsdTtyZXR1cm4gS2EodGhpcywoZnVuY3Rpb24ocCl7c3dpdGNoKHAubGFiZWwpe2Nhc2UgMDppZihpPWUuc3Vic3RyaW5nKDAsZS5sYXN0SW5kZXhPZigiLyIpKzEpLCEoYT1yLnJlc29sdmVSZWZlcmVuY2UoaXx8Ii4iLG4udXJpKSkpcmV0dXJuWzMsNF07cC5sYWJlbD0xO2Nhc2UgMTpyZXR1cm4gcC50cnlzLnB1c2goWzEsMywsNF0pLG89W10sWzQsdGhpcy5yZWFkRGlyZWN0b3J5KGEpXTtjYXNlIDI6Zm9yKHM9cC5zZW50KCksbD0wLGM9cztsPGMubGVuZ3RoO2wrKyloPWNbbF0sZD1oWzBdLHU9aFsxXSxkLmNoYXJDb2RlQXQoMCkhPT1HYSYmby5wdXNoKCRhKGQsdT09PW5hLkRpcmVjdG9yeSx0KSk7cmV0dXJuWzIsb107Y2FzZSAzOnJldHVybiBwLnNlbnQoKSxbMyw0XTtjYXNlIDQ6cmV0dXJuWzIsW11dfX0pKX0pKX0sZX0oKSxHYT0iLiIuY2hhckNvZGVBdCgwKTtmdW5jdGlvbiAkYShlLHQsbil7cmV0dXJuIHQ/e2xhYmVsOmUrPSIvIixraW5kOnJpLkZvbGRlcix0ZXh0RWRpdDpNci5yZXBsYWNlKG4sZSksY29tbWFuZDp7dGl0bGU6IlN1Z2dlc3QiLGNvbW1hbmQ6ImVkaXRvci5hY3Rpb24udHJpZ2dlclN1Z2dlc3QifX06e2xhYmVsOmUsa2luZDpyaS5GaWxlLHRleHRFZGl0Ok1yLnJlcGxhY2UobixlKX19ZnVuY3Rpb24gSmEoZSx0KXtyZXR1cm4gdHIuY3JlYXRlKGUubGluZSxlLmNoYXJhY3Rlcit0KX12YXIgWGE9e2E6ImhyZWYiLGFyZWE6ImhyZWYiLGJvZHk6ImJhY2tncm91bmQiLGRlbDoiY2l0ZSIsZm9ybToiYWN0aW9uIixmcmFtZTpbInNyYyIsImxvbmdkZXNjIl0saW1nOlsic3JjIiwibG9uZ2Rlc2MiXSxpbnM6ImNpdGUiLGxpbms6ImhyZWYiLG9iamVjdDoiZGF0YSIscToiY2l0ZSIsc2NyaXB0OiJzcmMiLGF1ZGlvOiJzcmMiLGJ1dHRvbjoiZm9ybWFjdGlvbiIsY29tbWFuZDoiaWNvbiIsZW1iZWQ6InNyYyIsaHRtbDoibWFuaWZlc3QiLGlucHV0Olsic3JjIiwiZm9ybWFjdGlvbiJdLHNvdXJjZToic3JjIix0cmFjazoic3JjIix2aWRlbzpbInNyYyIsInBvc3RlciJdfSxZYT1mdW5jdGlvbihlLHQsbixyKXtyZXR1cm4gbmV3KG58fChuPVByb21pc2UpKSgoZnVuY3Rpb24oaSxhKXtmdW5jdGlvbiBvKGUpe3RyeXtsKHIubmV4dChlKSl9Y2F0Y2goZSl7YShlKX19ZnVuY3Rpb24gcyhlKXt0cnl7bChyLnRocm93KGUpKX1jYXRjaChlKXthKGUpfX1mdW5jdGlvbiBsKGUpe3ZhciB0O2UuZG9uZT9pKGUudmFsdWUpOih0PWUudmFsdWUsdCBpbnN0YW5jZW9mIG4/dDpuZXcgbigoZnVuY3Rpb24oZSl7ZSh0KX0pKSkudGhlbihvLHMpfWwoKHI9ci5hcHBseShlLHR8fFtdKSkubmV4dCgpKX0pKX0sUWE9ZnVuY3Rpb24oZSx0KXt2YXIgbixyLGksYSxvPXtsYWJlbDowLHNlbnQ6ZnVuY3Rpb24oKXtpZigxJmlbMF0pdGhyb3cgaVsxXTtyZXR1cm4gaVsxXX0sdHJ5czpbXSxvcHM6W119O3JldHVybiBhPXtuZXh0OnMoMCksdGhyb3c6cygxKSxyZXR1cm46cygyKX0sImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmKGFbU3ltYm9sLml0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSksYTtmdW5jdGlvbiBzKGEpe3JldHVybiBmdW5jdGlvbihzKXtyZXR1cm4gZnVuY3Rpb24oYSl7aWYobil0aHJvdyBuZXcgVHlwZUVycm9yKCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuIik7Zm9yKDtvOyl0cnl7aWYobj0xLHImJihpPTImYVswXT9yLnJldHVybjphWzBdP3IudGhyb3d8fCgoaT1yLnJldHVybikmJmkuY2FsbChyKSwwKTpyLm5leHQpJiYhKGk9aS5jYWxsKHIsYVsxXSkpLmRvbmUpcmV0dXJuIGk7c3dpdGNoKHI9MCxpJiYoYT1bMiZhWzBdLGkudmFsdWVdKSxhWzBdKXtjYXNlIDA6Y2FzZSAxOmk9YTticmVhaztjYXNlIDQ6cmV0dXJuIG8ubGFiZWwrKyx7dmFsdWU6YVsxXSxkb25lOiExfTtjYXNlIDU6by5sYWJlbCsrLHI9YVsxXSxhPVswXTtjb250aW51ZTtjYXNlIDc6YT1vLm9wcy5wb3AoKSxvLnRyeXMucG9wKCk7Y29udGludWU7ZGVmYXVsdDppZighKGk9by50cnlzLChpPWkubGVuZ3RoPjAmJmlbaS5sZW5ndGgtMV0pfHw2IT09YVswXSYmMiE9PWFbMF0pKXtvPTA7Y29udGludWV9aWYoMz09PWFbMF0mJighaXx8YVsxXT5pWzBdJiZhWzFdPGlbM10pKXtvLmxhYmVsPWFbMV07YnJlYWt9aWYoNj09PWFbMF0mJm8ubGFiZWw8aVsxXSl7by5sYWJlbD1pWzFdLGk9YTticmVha31pZihpJiZvLmxhYmVsPGlbMl0pe28ubGFiZWw9aVsyXSxvLm9wcy5wdXNoKGEpO2JyZWFrfWlbMl0mJm8ub3BzLnBvcCgpLG8udHJ5cy5wb3AoKTtjb250aW51ZX1hPXQuY2FsbChlLG8pfWNhdGNoKGUpe2E9WzYsZV0scj0wfWZpbmFsbHl7bj1pPTB9aWYoNSZhWzBdKXRocm93IGFbMV07cmV0dXJue3ZhbHVlOmFbMF0/YVsxXTp2b2lkIDAsZG9uZTohMH19KFthLHNdKX19fSxaYT1YbigpLGVvPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQpe3RoaXMubHNPcHRpb25zPWUsdGhpcy5kYXRhTWFuYWdlcj10LHRoaXMuY29tcGxldGlvblBhcnRpY2lwYW50cz1bXX1yZXR1cm4gZS5wcm90b3R5cGUuc2V0Q29tcGxldGlvblBhcnRpY2lwYW50cz1mdW5jdGlvbihlKXt0aGlzLmNvbXBsZXRpb25QYXJ0aWNpcGFudHM9ZXx8W119LGUucHJvdG90eXBlLmRvQ29tcGxldGUyPWZ1bmN0aW9uKGUsdCxuLHIsaSl7cmV0dXJuIFlhKHRoaXMsdm9pZCAwLHZvaWQgMCwoZnVuY3Rpb24oKXt2YXIgYSxvLHMsbDtyZXR1cm4gUWEodGhpcywoZnVuY3Rpb24oYyl7c3dpdGNoKGMubGFiZWwpe2Nhc2UgMDppZighdGhpcy5sc09wdGlvbnMuZmlsZVN5c3RlbVByb3ZpZGVyfHwhdGhpcy5sc09wdGlvbnMuZmlsZVN5c3RlbVByb3ZpZGVyLnJlYWREaXJlY3RvcnkpcmV0dXJuWzIsdGhpcy5kb0NvbXBsZXRlKGUsdCxuLGkpXTthPW5ldyBqYSh0aGlzLmxzT3B0aW9ucy5maWxlU3lzdGVtUHJvdmlkZXIucmVhZERpcmVjdG9yeSksbz10aGlzLmNvbXBsZXRpb25QYXJ0aWNpcGFudHMsdGhpcy5jb21wbGV0aW9uUGFydGljaXBhbnRzPVthXS5jb25jYXQobykscz10aGlzLmRvQ29tcGxldGUoZSx0LG4saSksYy5sYWJlbD0xO2Nhc2UgMTpyZXR1cm4gYy50cnlzLnB1c2goWzEsLDMsNF0pLFs0LGEuY29tcHV0ZUNvbXBsZXRpb25zKGUscildO2Nhc2UgMjpyZXR1cm4gbD1jLnNlbnQoKSxbMix7aXNJbmNvbXBsZXRlOnMuaXNJbmNvbXBsZXRlfHxsLmlzSW5jb21wbGV0ZSxpdGVtczpsLml0ZW1zLmNvbmNhdChzLml0ZW1zKX1dO2Nhc2UgMzpyZXR1cm4gdGhpcy5jb21wbGV0aW9uUGFydGljaXBhbnRzPW8sWzddO2Nhc2UgNDpyZXR1cm5bMl19fSkpfSkpfSxlLnByb3RvdHlwZS5kb0NvbXBsZXRlPWZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBpPXRoaXMuX2RvQ29tcGxldGUoZSx0LG4scik7cmV0dXJuIHRoaXMuY29udmVydENvbXBsZXRpb25MaXN0KGkpfSxlLnByb3RvdHlwZS5fZG9Db21wbGV0ZT1mdW5jdGlvbihlLHQsbixyKXt2YXIgaT17aXNJbmNvbXBsZXRlOiExLGl0ZW1zOltdfSxhPXRoaXMuY29tcGxldGlvblBhcnRpY2lwYW50cyxvPXRoaXMuZGF0YU1hbmFnZXIuZ2V0RGF0YVByb3ZpZGVycygpLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIHQuaXNBcHBsaWNhYmxlKGUubGFuZ3VhZ2VJZCkmJighcnx8ITEhPT1yW3QuZ2V0SWQoKV0pfSkpLHM9dGhpcy5kb2VzU3VwcG9ydE1hcmtkb3duKCksbD1lLmdldFRleHQoKSxjPWUub2Zmc2V0QXQodCksaD1uLmZpbmROb2RlQmVmb3JlKGMpO2lmKCFoKXJldHVybiBpO3ZhciBkLHU9Q2EobCxoLnN0YXJ0KSxwPSIiO2Z1bmN0aW9uIG0odCxuKXtyZXR1cm4gdm9pZCAwPT09biYmKG49YyksdD5jJiYodD1jKSx7c3RhcnQ6ZS5wb3NpdGlvbkF0KHQpLGVuZDplLnBvc2l0aW9uQXQobil9fWZ1bmN0aW9uIGYoZSx0KXt2YXIgbj1tKGUsdCk7cmV0dXJuIG8uZm9yRWFjaCgoZnVuY3Rpb24oZSl7ZS5wcm92aWRlVGFncygpLmZvckVhY2goKGZ1bmN0aW9uKGUpe2kuaXRlbXMucHVzaCh7bGFiZWw6ZS5uYW1lLGtpbmQ6cmkuUHJvcGVydHksZG9jdW1lbnRhdGlvbjpWYShlLHZvaWQgMCxzKSx0ZXh0RWRpdDpNci5yZXBsYWNlKG4sZS5uYW1lKSxpbnNlcnRUZXh0Rm9ybWF0OmFpLlBsYWluVGV4dH0pfSkpfSkpLGl9ZnVuY3Rpb24gZyhlKXtmb3IodmFyIHQ9ZTt0PjA7KXt2YXIgbj1sLmNoYXJBdCh0LTEpO2lmKCJcblxyIi5pbmRleE9mKG4pPj0wKXJldHVybiBsLnN1YnN0cmluZyh0LGUpO2lmKCF0byhuKSlyZXR1cm4gbnVsbDt0LS19cmV0dXJuIGwuc3Vic3RyaW5nKDAsZSl9ZnVuY3Rpb24gYihlLHQsbil7dm9pZCAwPT09biYmKG49Yyk7dmFyIHI9bShlLG4pLGE9bm8obCxuLFppLldpdGhpbkVuZFRhZyxZaS5FbmRUYWdDbG9zZSk/IiI6Ij4iLGQ9aDtmb3IodCYmKGQ9ZC5wYXJlbnQpO2Q7KXt2YXIgdT1kLnRhZztpZih1JiYoIWQuY2xvc2VkfHxkLmVuZFRhZ1N0YXJ0JiZkLmVuZFRhZ1N0YXJ0PmMpKXt2YXIgcD17bGFiZWw6Ii8iK3Usa2luZDpyaS5Qcm9wZXJ0eSxmaWx0ZXJUZXh0OiIvIit1LHRleHRFZGl0Ok1yLnJlcGxhY2UociwiLyIrdSthKSxpbnNlcnRUZXh0Rm9ybWF0OmFpLlBsYWluVGV4dH0sZj1nKGQuc3RhcnQpLGI9ZyhlLTEpO2lmKG51bGwhPT1mJiZudWxsIT09YiYmZiE9PWIpe3ZhciB3PWYrIjwvIit1K2E7cC50ZXh0RWRpdD1Nci5yZXBsYWNlKG0oZS0xLWIubGVuZ3RoKSx3KSxwLmZpbHRlclRleHQ9YisiPC8iK3V9cmV0dXJuIGkuaXRlbXMucHVzaChwKSxpfWQ9ZC5wYXJlbnR9cmV0dXJuIHR8fG8uZm9yRWFjaCgoZnVuY3Rpb24oZSl7ZS5wcm92aWRlVGFncygpLmZvckVhY2goKGZ1bmN0aW9uKGUpe2kuaXRlbXMucHVzaCh7bGFiZWw6Ii8iK2UubmFtZSxraW5kOnJpLlByb3BlcnR5LGRvY3VtZW50YXRpb246VmEoZSx2b2lkIDAscyksZmlsdGVyVGV4dDoiLyIrZS5uYW1lK2EsdGV4dEVkaXQ6TXIucmVwbGFjZShyLCIvIitlLm5hbWUrYSksaW5zZXJ0VGV4dEZvcm1hdDphaS5QbGFpblRleHR9KX0pKX0pKSxpfWZ1bmN0aW9uIHcodCxuKXtpZihyJiZyLmhpZGVBdXRvQ29tcGxldGVQcm9wb3NhbHMpcmV0dXJuIGk7aWYoIUVhKG4pKXt2YXIgYT1lLnBvc2l0aW9uQXQodCk7aS5pdGVtcy5wdXNoKHtsYWJlbDoiPC8iK24rIj4iLGtpbmQ6cmkuUHJvcGVydHksZmlsdGVyVGV4dDoiPC8iK24rIj4iLHRleHRFZGl0Ok1yLmluc2VydChhLCIkMDwvIituKyI+IiksaW5zZXJ0VGV4dEZvcm1hdDphaS5TbmlwcGV0fSl9cmV0dXJuIGl9ZnVuY3Rpb24gXyhlLHQpe3JldHVybiBmKGUsdCksYihlLCEwLHQpLGl9ZnVuY3Rpb24gdihlLHQpe3ZhciBhO3ZvaWQgMD09PXQmJih0PWMpO2Zvcih2YXIgZD1jO2Q8dCYmIjwiIT09bFtkXTspZCsrO3ZhciB1PWwuc3Vic3RyaW5nKGUsdCksZj1tKGUsZCksZz0iIjtpZighbm8obCx0LFppLkFmdGVyQXR0cmlidXRlTmFtZSxZaS5EZWxpbWl0ZXJBc3NpZ24pKXt2YXIgYj1udWxsIT09KGE9bnVsbD09cj92b2lkIDA6ci5hdHRyaWJ1dGVEZWZhdWx0VmFsdWUpJiZ2b2lkIDAhPT1hP2E6ImRvdWJsZXF1b3RlcyI7Zz0iZW1wdHkiPT09Yj8iPSQxIjoic2luZ2xlcXVvdGVzIj09PWI/Ij0nJDEnIjonPSIkMSInfXZhciB3LF89KHc9T2JqZWN0LmNyZWF0ZShudWxsKSxoLmF0dHJpYnV0ZU5hbWVzLmZvckVhY2goKGZ1bmN0aW9uKGUpe3dbZV09ITB9KSksdyk7cmV0dXJuIF9bdV09ITEsby5mb3JFYWNoKChmdW5jdGlvbihlKXtlLnByb3ZpZGVBdHRyaWJ1dGVzKHApLmZvckVhY2goKGZ1bmN0aW9uKGUpe2lmKCFfW2UubmFtZV0pe19bZS5uYW1lXT0hMDt2YXIgdCxuPWUubmFtZTsidiIhPT1lLnZhbHVlU2V0JiZnLmxlbmd0aCYmKG4rPWcsKGUudmFsdWVTZXR8fCJzdHlsZSI9PT1lLm5hbWUpJiYodD17dGl0bGU6IlN1Z2dlc3QiLGNvbW1hbmQ6ImVkaXRvci5hY3Rpb24udHJpZ2dlclN1Z2dlc3QifSkpLGkuaXRlbXMucHVzaCh7bGFiZWw6ZS5uYW1lLGtpbmQ6ImhhbmRsZXIiPT09ZS52YWx1ZVNldD9yaS5GdW5jdGlvbjpyaS5WYWx1ZSxkb2N1bWVudGF0aW9uOlZhKGUsdm9pZCAwLHMpLHRleHRFZGl0Ok1yLnJlcGxhY2UoZixuKSxpbnNlcnRUZXh0Rm9ybWF0OmFpLlNuaXBwZXQsY29tbWFuZDp0fSl9fSkpfSkpLGZ1bmN0aW9uKGUsdCl7dmFyIHI9ImRhdGEtIixhPXt9O2Z1bmN0aW9uIG8oZSl7ZS5hdHRyaWJ1dGVOYW1lcy5mb3JFYWNoKChmdW5jdGlvbihlKXshSWEoZSxyKXx8YVtlXXx8dFtlXXx8KGFbZV09ZSsnPSIkMSInKX0pKSxlLmNoaWxkcmVuLmZvckVhY2goKGZ1bmN0aW9uKGUpe3JldHVybiBvKGUpfSkpfWFbcl09IiIuY29uY2F0KHIsJyQxPSIkMiInKSxuJiZuLnJvb3RzLmZvckVhY2goKGZ1bmN0aW9uKGUpe3JldHVybiBvKGUpfSkpO09iamVjdC5rZXlzKGEpLmZvckVhY2goKGZ1bmN0aW9uKHQpe3JldHVybiBpLml0ZW1zLnB1c2goe2xhYmVsOnQsa2luZDpyaS5WYWx1ZSx0ZXh0RWRpdDpNci5yZXBsYWNlKGUsYVt0XSksaW5zZXJ0VGV4dEZvcm1hdDphaS5TbmlwcGV0fSl9KSl9KGYsXyksaX1mdW5jdGlvbiB5KG4scil7dmFyIGgsdSxmLGc7aWYodm9pZCAwPT09ciYmKHI9YyksYz5uJiZjPD1yJiYoZz1sW25dLC9eWyInXSokLy50ZXN0KGcpKSl7dmFyIGI9bisxLHc9cjtyPm4mJmxbci0xXT09PWxbbl0mJnctLTt2YXIgXz1mdW5jdGlvbihlLHQsbil7Zm9yKDt0Pm4mJiF0byhlW3QtMV0pOyl0LS07cmV0dXJuIHR9KGwsYyxiKSx2PWZ1bmN0aW9uKGUsdCxuKXtmb3IoO3Q8biYmIXRvKGVbdF0pOyl0Kys7cmV0dXJuIHR9KGwsYyx3KTtoPW0oXyx2KSxmPWM+PWImJmM8PXc/bC5zdWJzdHJpbmcoYixjKToiIix1PSExfWVsc2UgaD1tKG4sciksZj1sLnN1YnN0cmluZyhuLGMpLHU9ITA7aWYoYS5sZW5ndGg+MClmb3IodmFyIHk9cC50b0xvd2VyQ2FzZSgpLFQ9ZC50b0xvd2VyQ2FzZSgpLGs9bShuLHIpLEM9MCx4PWE7Qzx4Lmxlbmd0aDtDKyspe3ZhciBMPXhbQ107TC5vbkh0bWxBdHRyaWJ1dGVWYWx1ZSYmTC5vbkh0bWxBdHRyaWJ1dGVWYWx1ZSh7ZG9jdW1lbnQ6ZSxwb3NpdGlvbjp0LHRhZzp5LGF0dHJpYnV0ZTpULHZhbHVlOmYscmFuZ2U6a30pfXJldHVybiBvLmZvckVhY2goKGZ1bmN0aW9uKGUpe2UucHJvdmlkZVZhbHVlcyhwLGQpLmZvckVhY2goKGZ1bmN0aW9uKGUpe3ZhciB0PXU/JyInK2UubmFtZSsnIic6ZS5uYW1lO2kuaXRlbXMucHVzaCh7bGFiZWw6ZS5uYW1lLGZpbHRlclRleHQ6dCxraW5kOnJpLlVuaXQsZG9jdW1lbnRhdGlvbjpWYShlLHZvaWQgMCxzKSx0ZXh0RWRpdDpNci5yZXBsYWNlKGgsdCksaW5zZXJ0VGV4dEZvcm1hdDphaS5QbGFpblRleHR9KX0pKX0pKSxTKCksaX1mdW5jdGlvbiBUKGUpe3JldHVybiBjPT09dS5nZXRUb2tlbkVuZCgpJiYoeD11LnNjYW4oKSk9PT1lJiZ1LmdldFRva2VuT2Zmc2V0KCk9PT1jP3UuZ2V0VG9rZW5FbmQoKTpjfWZ1bmN0aW9uIGsoKXtmb3IodmFyIG49MCxyPWE7bjxyLmxlbmd0aDtuKyspe3ZhciBpPXJbbl07aS5vbkh0bWxDb250ZW50JiZpLm9uSHRtbENvbnRlbnQoe2RvY3VtZW50OmUscG9zaXRpb246dH0pfXJldHVybiBTKCl9ZnVuY3Rpb24gUygpe2Zvcih2YXIgZSxuLHIsYT1jLTEsbz10LmNoYXJhY3RlcjthPj0wJiZQYShsLGEpOylhLS0sby0tO2lmKGE+PTAmJiImIj09PWxbYV0pe3ZhciBzPXJyLmNyZWF0ZSh0ci5jcmVhdGUodC5saW5lLG8tMSksdCk7Zm9yKHZhciBoIGluIFJhKWlmKG49IjsiLHI9dm9pZCAwLChyPShlPWgpLmxlbmd0aC1uLmxlbmd0aCk+MD9lLmxhc3RJbmRleE9mKG4pPT09cjowPT09ciYmZT09PW4pe3ZhciBkPSImIitoO2kuaXRlbXMucHVzaCh7bGFiZWw6ZCxraW5kOnJpLktleXdvcmQsZG9jdW1lbnRhdGlvbjpaYSgiZW50aXR5LnByb3Bvc2UiLCJDaGFyYWN0ZXIgZW50aXR5IHJlcHJlc2VudGluZyAnIi5jb25jYXQoUmFbaF0sIiciKSksdGV4dEVkaXQ6TXIucmVwbGFjZShzLGQpLGluc2VydFRleHRGb3JtYXQ6YWkuUGxhaW5UZXh0fSl9fXJldHVybiBpfWZvcih2YXIgQyx4PXUuc2NhbigpO3ghPT1ZaS5FT1MmJnUuZ2V0VG9rZW5PZmZzZXQoKTw9Yzspe3N3aXRjaCh4KXtjYXNlIFlpLlN0YXJ0VGFnT3BlbjppZih1LmdldFRva2VuRW5kKCk9PT1jKXt2YXIgTD1UKFlpLlN0YXJ0VGFnKTtyZXR1cm4gMD09PXQubGluZSYmKEM9dm9pZCAwLEM9bShjLEwpLGkuaXRlbXMucHVzaCh7bGFiZWw6IiFET0NUWVBFIixraW5kOnJpLlByb3BlcnR5LGRvY3VtZW50YXRpb246IkEgcHJlYW1ibGUgZm9yIGFuIEhUTUwgZG9jdW1lbnQuIix0ZXh0RWRpdDpNci5yZXBsYWNlKEMsIiFET0NUWVBFIGh0bWw+IiksaW5zZXJ0VGV4dEZvcm1hdDphaS5QbGFpblRleHR9KSksXyhjLEwpfWJyZWFrO2Nhc2UgWWkuU3RhcnRUYWc6aWYodS5nZXRUb2tlbk9mZnNldCgpPD1jJiZjPD11LmdldFRva2VuRW5kKCkpcmV0dXJuIGYodS5nZXRUb2tlbk9mZnNldCgpLHUuZ2V0VG9rZW5FbmQoKSk7cD11LmdldFRva2VuVGV4dCgpO2JyZWFrO2Nhc2UgWWkuQXR0cmlidXRlTmFtZTppZih1LmdldFRva2VuT2Zmc2V0KCk8PWMmJmM8PXUuZ2V0VG9rZW5FbmQoKSlyZXR1cm4gdih1LmdldFRva2VuT2Zmc2V0KCksdS5nZXRUb2tlbkVuZCgpKTtkPXUuZ2V0VG9rZW5UZXh0KCk7YnJlYWs7Y2FzZSBZaS5EZWxpbWl0ZXJBc3NpZ246aWYodS5nZXRUb2tlbkVuZCgpPT09Yyl7TD1UKFlpLkF0dHJpYnV0ZVZhbHVlKTtyZXR1cm4geShjLEwpfWJyZWFrO2Nhc2UgWWkuQXR0cmlidXRlVmFsdWU6aWYodS5nZXRUb2tlbk9mZnNldCgpPD1jJiZjPD11LmdldFRva2VuRW5kKCkpcmV0dXJuIHkodS5nZXRUb2tlbk9mZnNldCgpLHUuZ2V0VG9rZW5FbmQoKSk7YnJlYWs7Y2FzZSBZaS5XaGl0ZXNwYWNlOmlmKGM8PXUuZ2V0VG9rZW5FbmQoKSlzd2l0Y2godS5nZXRTY2FubmVyU3RhdGUoKSl7Y2FzZSBaaS5BZnRlck9wZW5pbmdTdGFydFRhZzpyZXR1cm4gXyh1LmdldFRva2VuT2Zmc2V0KCksVChZaS5TdGFydFRhZykpO2Nhc2UgWmkuV2l0aGluVGFnOmNhc2UgWmkuQWZ0ZXJBdHRyaWJ1dGVOYW1lOnJldHVybiB2KHUuZ2V0VG9rZW5FbmQoKSk7Y2FzZSBaaS5CZWZvcmVBdHRyaWJ1dGVWYWx1ZTpyZXR1cm4geSh1LmdldFRva2VuRW5kKCkpO2Nhc2UgWmkuQWZ0ZXJPcGVuaW5nRW5kVGFnOnJldHVybiBiKHUuZ2V0VG9rZW5PZmZzZXQoKS0xLCExKTtjYXNlIFppLldpdGhpbkNvbnRlbnQ6cmV0dXJuIGsoKX1icmVhaztjYXNlIFlpLkVuZFRhZ09wZW46aWYoYzw9dS5nZXRUb2tlbkVuZCgpKXJldHVybiBiKHUuZ2V0VG9rZW5PZmZzZXQoKSsxLCExLFQoWWkuRW5kVGFnKSk7YnJlYWs7Y2FzZSBZaS5FbmRUYWc6aWYoYzw9dS5nZXRUb2tlbkVuZCgpKWZvcih2YXIgRT11LmdldFRva2VuT2Zmc2V0KCktMTtFPj0wOyl7dmFyIEE9bC5jaGFyQXQoRSk7aWYoIi8iPT09QSlyZXR1cm4gYihFLCExLHUuZ2V0VG9rZW5FbmQoKSk7aWYoIXRvKEEpKWJyZWFrO0UtLX1icmVhaztjYXNlIFlpLlN0YXJ0VGFnQ2xvc2U6aWYoYzw9dS5nZXRUb2tlbkVuZCgpJiZwKXJldHVybiB3KHUuZ2V0VG9rZW5FbmQoKSxwKTticmVhaztjYXNlIFlpLkNvbnRlbnQ6aWYoYzw9dS5nZXRUb2tlbkVuZCgpKXJldHVybiBrKCk7YnJlYWs7ZGVmYXVsdDppZihjPD11LmdldFRva2VuRW5kKCkpcmV0dXJuIGl9eD11LnNjYW4oKX1yZXR1cm4gaX0sZS5wcm90b3R5cGUuZG9RdW90ZUNvbXBsZXRlPWZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBpLGE9ZS5vZmZzZXRBdCh0KTtpZihhPD0wKXJldHVybiBudWxsO3ZhciBvPW51bGwhPT0oaT1udWxsPT1yP3ZvaWQgMDpyLmF0dHJpYnV0ZURlZmF1bHRWYWx1ZSkmJnZvaWQgMCE9PWk/aToiZG91YmxlcXVvdGVzIjtpZigiZW1wdHkiPT09bylyZXR1cm4gbnVsbDtpZigiPSIhPT1lLmdldFRleHQoKS5jaGFyQXQoYS0xKSlyZXR1cm4gbnVsbDt2YXIgcz0iZG91YmxlcXVvdGVzIj09PW8/JyIkMSInOiInJDEnIixsPW4uZmluZE5vZGVCZWZvcmUoYSk7aWYobCYmbC5hdHRyaWJ1dGVzJiZsLnN0YXJ0PGEmJighbC5lbmRUYWdTdGFydHx8bC5lbmRUYWdTdGFydD5hKSlmb3IodmFyIGM9Q2EoZS5nZXRUZXh0KCksbC5zdGFydCksaD1jLnNjYW4oKTtoIT09WWkuRU9TJiZjLmdldFRva2VuRW5kKCk8PWE7KXtpZihoPT09WWkuQXR0cmlidXRlTmFtZSYmYy5nZXRUb2tlbkVuZCgpPT09YS0xKXJldHVybihoPWMuc2NhbigpKSE9PVlpLkRlbGltaXRlckFzc2lnbnx8KGg9Yy5zY2FuKCkpPT09WWkuVW5rbm93bnx8aD09PVlpLkF0dHJpYnV0ZVZhbHVlP251bGw6cztoPWMuc2NhbigpfXJldHVybiBudWxsfSxlLnByb3RvdHlwZS5kb1RhZ0NvbXBsZXRlPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lLm9mZnNldEF0KHQpO2lmKHI8PTApcmV0dXJuIG51bGw7dmFyIGk9ZS5nZXRUZXh0KCkuY2hhckF0KHItMSk7aWYoIj4iPT09aSl7aWYoKG89bi5maW5kTm9kZUJlZm9yZShyKSkmJm8udGFnJiYhRWEoby50YWcpJiZvLnN0YXJ0PHImJighby5lbmRUYWdTdGFydHx8by5lbmRUYWdTdGFydD5yKSlmb3IodmFyIGE9KHM9Q2EoZS5nZXRUZXh0KCksby5zdGFydCkpLnNjYW4oKTthIT09WWkuRU9TJiZzLmdldFRva2VuRW5kKCk8PXI7KXtpZihhPT09WWkuU3RhcnRUYWdDbG9zZSYmcy5nZXRUb2tlbkVuZCgpPT09cilyZXR1cm4iJDA8LyIuY29uY2F0KG8udGFnLCI+Iik7YT1zLnNjYW4oKX19ZWxzZSBpZigiLyI9PT1pKXtmb3IodmFyIG89bi5maW5kTm9kZUJlZm9yZShyKTtvJiZvLmNsb3NlZCYmIShvLmVuZFRhZ1N0YXJ0JiZvLmVuZFRhZ1N0YXJ0PnIpOylvPW8ucGFyZW50O2lmKG8mJm8udGFnKXt2YXIgcztmb3IoYT0ocz1DYShlLmdldFRleHQoKSxvLnN0YXJ0KSkuc2NhbigpO2EhPT1ZaS5FT1MmJnMuZ2V0VG9rZW5FbmQoKTw9cjspe2lmKGE9PT1ZaS5FbmRUYWdPcGVuJiZzLmdldFRva2VuRW5kKCk9PT1yKXJldHVybiIiLmNvbmNhdChvLnRhZywiPiIpO2E9cy5zY2FuKCl9fX1yZXR1cm4gbnVsbH0sZS5wcm90b3R5cGUuY29udmVydENvbXBsZXRpb25MaXN0PWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmRvZXNTdXBwb3J0TWFya2Rvd24oKXx8ZS5pdGVtcy5mb3JFYWNoKChmdW5jdGlvbihlKXtlLmRvY3VtZW50YXRpb24mJiJzdHJpbmciIT10eXBlb2YgZS5kb2N1bWVudGF0aW9uJiYoZS5kb2N1bWVudGF0aW9uPXtraW5kOiJwbGFpbnRleHQiLHZhbHVlOmUuZG9jdW1lbnRhdGlvbi52YWx1ZX0pfSkpLGV9LGUucHJvdG90eXBlLmRvZXNTdXBwb3J0TWFya2Rvd249ZnVuY3Rpb24oKXt2YXIgZSx0LG47aWYoIXFhKHRoaXMuc3VwcG9ydHNNYXJrZG93bikpe2lmKCFxYSh0aGlzLmxzT3B0aW9ucy5jbGllbnRDYXBhYmlsaXRpZXMpKXJldHVybiB0aGlzLnN1cHBvcnRzTWFya2Rvd249ITAsdGhpcy5zdXBwb3J0c01hcmtkb3duO3ZhciByPW51bGw9PT0obj1udWxsPT09KHQ9bnVsbD09PShlPXRoaXMubHNPcHRpb25zLmNsaWVudENhcGFiaWxpdGllcy50ZXh0RG9jdW1lbnQpfHx2b2lkIDA9PT1lP3ZvaWQgMDplLmNvbXBsZXRpb24pfHx2b2lkIDA9PT10P3ZvaWQgMDp0LmNvbXBsZXRpb25JdGVtKXx8dm9pZCAwPT09bj92b2lkIDA6bi5kb2N1bWVudGF0aW9uRm9ybWF0O3RoaXMuc3VwcG9ydHNNYXJrZG93bj1BcnJheS5pc0FycmF5KHIpJiYtMSE9PXIuaW5kZXhPZihlaS5NYXJrZG93bil9cmV0dXJuIHRoaXMuc3VwcG9ydHNNYXJrZG93bn0sZX0oKTtmdW5jdGlvbiB0byhlKXtyZXR1cm4vXlxzKiQvLnRlc3QoZSl9ZnVuY3Rpb24gbm8oZSx0LG4scil7Zm9yKHZhciBpPUNhKGUsdCxuKSxhPWkuc2NhbigpO2E9PT1ZaS5XaGl0ZXNwYWNlOylhPWkuc2NhbigpO3JldHVybiBhPT09cn12YXIgcm8saW8sYW8sb289WG4oKSxzbz1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSx0KXt0aGlzLmxzT3B0aW9ucz1lLHRoaXMuZGF0YU1hbmFnZXI9dH1yZXR1cm4gZS5wcm90b3R5cGUuZG9Ib3Zlcj1mdW5jdGlvbihlLHQsbixyKXt2YXIgaT10aGlzLmNvbnZlcnRDb250ZW50cy5iaW5kKHRoaXMpLGE9dGhpcy5kb2VzU3VwcG9ydE1hcmtkb3duKCksbz1lLm9mZnNldEF0KHQpLHM9bi5maW5kTm9kZUF0KG8pLGw9ZS5nZXRUZXh0KCk7aWYoIXN8fCFzLnRhZylyZXR1cm4gbnVsbDt2YXIgYz10aGlzLmRhdGFNYW5hZ2VyLmdldERhdGFQcm92aWRlcnMoKS5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiB0LmlzQXBwbGljYWJsZShlLmxhbmd1YWdlSWQpfSkpO2Z1bmN0aW9uIGgoZSx0LG4pe2Zvcih2YXIgbz1mdW5jdGlvbihuKXt2YXIgbz1udWxsO2lmKG4ucHJvdmlkZVRhZ3MoKS5mb3JFYWNoKChmdW5jdGlvbihuKXtpZihuLm5hbWUudG9Mb3dlckNhc2UoKT09PWUudG9Mb3dlckNhc2UoKSl7dmFyIGk9VmEobixyLGEpO2l8fChpPXtraW5kOmE/Im1hcmtkb3duIjoicGxhaW50ZXh0Iix2YWx1ZToiIn0pLG89e2NvbnRlbnRzOmkscmFuZ2U6dH19fSkpLG8pcmV0dXJuIG8uY29udGVudHM9aShvLmNvbnRlbnRzKSx7dmFsdWU6b319LHM9MCxsPWM7czxsLmxlbmd0aDtzKyspe3ZhciBoPW8obFtzXSk7aWYoIm9iamVjdCI9PXR5cGVvZiBoKXJldHVybiBoLnZhbHVlfXJldHVybiBudWxsfWZ1bmN0aW9uIGQodCxuKXtmb3IodmFyIHI9Q2EoZS5nZXRUZXh0KCksbiksaT1yLnNjYW4oKTtpIT09WWkuRU9TJiYoci5nZXRUb2tlbkVuZCgpPG98fHIuZ2V0VG9rZW5FbmQoKT09PW8mJmkhPT10KTspaT1yLnNjYW4oKTtyZXR1cm4gaT09PXQmJm88PXIuZ2V0VG9rZW5FbmQoKT97c3RhcnQ6ZS5wb3NpdGlvbkF0KHIuZ2V0VG9rZW5PZmZzZXQoKSksZW5kOmUucG9zaXRpb25BdChyLmdldFRva2VuRW5kKCkpfTpudWxsfWlmKHMuZW5kVGFnU3RhcnQmJm8+PXMuZW5kVGFnU3RhcnQpe3ZhciB1PWQoWWkuRW5kVGFnLHMuZW5kVGFnU3RhcnQpO3JldHVybiB1P2gocy50YWcsdSk6bnVsbH12YXIgcD1kKFlpLlN0YXJ0VGFnLHMuc3RhcnQpO2lmKHApcmV0dXJuIGgocy50YWcscCk7dmFyIG09ZChZaS5BdHRyaWJ1dGVOYW1lLHMuc3RhcnQpO2lmKG0pcmV0dXJuIGZ1bmN0aW9uKGUsdCxuKXtmb3IodmFyIG89ZnVuY3Rpb24obyl7dmFyIHM9bnVsbDtpZihvLnByb3ZpZGVBdHRyaWJ1dGVzKGUpLmZvckVhY2goKGZ1bmN0aW9uKGUpe2lmKHQ9PT1lLm5hbWUmJmUuZGVzY3JpcHRpb24pe3ZhciBpPVZhKGUscixhKTtzPWk/e2NvbnRlbnRzOmkscmFuZ2U6bn06bnVsbH19KSkscylyZXR1cm4gcy5jb250ZW50cz1pKHMuY29udGVudHMpLHt2YWx1ZTpzfX0scz0wLGw9YztzPGwubGVuZ3RoO3MrKyl7dmFyIGg9byhsW3NdKTtpZigib2JqZWN0Ij09dHlwZW9mIGgpcmV0dXJuIGgudmFsdWV9cmV0dXJuIG51bGx9KGI9cy50YWcsZS5nZXRUZXh0KG0pLG0pO3ZhciBmPWZ1bmN0aW9uKCl7Zm9yKHZhciBlPW8tMSxuPXQuY2hhcmFjdGVyO2U+PTAmJlBhKGwsZSk7KWUtLSxuLS07Zm9yKHZhciByPWUrMSxpPW47UGEobCxyKTspcisrLGkrKztpZihlPj0wJiYiJiI9PT1sW2VdKXtyZXR1cm4iOyI9PT1sW3JdP3JyLmNyZWF0ZSh0ci5jcmVhdGUodC5saW5lLG4pLHRyLmNyZWF0ZSh0LmxpbmUsaSsxKSk6cnIuY3JlYXRlKHRyLmNyZWF0ZSh0LmxpbmUsbiksdHIuY3JlYXRlKHQubGluZSxpKSl9cmV0dXJuIG51bGx9KCk7aWYoZilyZXR1cm4gZnVuY3Rpb24oZSx0KXt2YXIgbj1mdW5jdGlvbihlKXtmb3IodmFyIHQ9by0xLG49IiYiO3Q+PTAmJlBhKGUsdCk7KXQtLTtmb3IodCs9MTtQYShlLHQpOyluKz1lW3RdLHQrPTE7cmV0dXJuIG4rIjsifShlKTtmb3IodmFyIHIgaW4gUmEpe3ZhciBhPW51bGw7aWYobj09PSImIityKXt2YXIgcz1SYVtyXS5jaGFyQ29kZUF0KDApLnRvU3RyaW5nKDE2KS50b1VwcGVyQ2FzZSgpLGw9IlUrIjtpZihzLmxlbmd0aDw0KWZvcih2YXIgYz00LXMubGVuZ3RoLGg9MDtoPGM7KWwrPSIwIixoKz0xO2wrPXM7dmFyIGQ9b28oImVudGl0eS5wcm9wb3NlIiwiQ2hhcmFjdGVyIGVudGl0eSByZXByZXNlbnRpbmcgJyIuY29uY2F0KFJhW3JdLCInLCB1bmljb2RlIGVxdWl2YWxlbnQgJyIpLmNvbmNhdChsLCInIikpO2E9ZD97Y29udGVudHM6ZCxyYW5nZTp0fTpudWxsfWlmKGEpcmV0dXJuIGEuY29udGVudHM9aShhLmNvbnRlbnRzKSxhfXJldHVybiBudWxsfShsLGYpO3ZhciBnPWQoWWkuQXR0cmlidXRlVmFsdWUscy5zdGFydCk7aWYoZyl7dmFyIGI9cy50YWcsdz1mdW5jdGlvbihlKXtpZihlLmxlbmd0aDw9MSlyZXR1cm4gZS5yZXBsYWNlKC9bJyJdLywiIik7IiciIT09ZVswXSYmJyInIT09ZVswXXx8KGU9ZS5zbGljZSgxKSk7IiciIT09ZVtlLmxlbmd0aC0xXSYmJyInIT09ZVtlLmxlbmd0aC0xXXx8KGU9ZS5zbGljZSgwLC0xKSk7cmV0dXJuIGV9KGUuZ2V0VGV4dChnKSksXz1mdW5jdGlvbih0LG4pe2Zvcih2YXIgcj1DYShlLmdldFRleHQoKSx0KSxpPXIuc2NhbigpLGE9dm9pZCAwO2khPT1ZaS5FT1MmJnIuZ2V0VG9rZW5FbmQoKTw9bjspKGk9ci5zY2FuKCkpPT09WWkuQXR0cmlidXRlTmFtZSYmKGE9ci5nZXRUb2tlblRleHQoKSk7cmV0dXJuIGF9KHMuc3RhcnQsZS5vZmZzZXRBdChnLnN0YXJ0KSk7aWYoXylyZXR1cm4gZnVuY3Rpb24oZSx0LG4sbyl7Zm9yKHZhciBzPWZ1bmN0aW9uKHMpe3ZhciBsPW51bGw7aWYocy5wcm92aWRlVmFsdWVzKGUsdCkuZm9yRWFjaCgoZnVuY3Rpb24oZSl7aWYobj09PWUubmFtZSYmZS5kZXNjcmlwdGlvbil7dmFyIHQ9VmEoZSxyLGEpO2w9dD97Y29udGVudHM6dCxyYW5nZTpvfTpudWxsfX0pKSxsKXJldHVybiBsLmNvbnRlbnRzPWkobC5jb250ZW50cykse3ZhbHVlOmx9fSxsPTAsaD1jO2w8aC5sZW5ndGg7bCsrKXt2YXIgZD1zKGhbbF0pO2lmKCJvYmplY3QiPT10eXBlb2YgZClyZXR1cm4gZC52YWx1ZX1yZXR1cm4gbnVsbH0oYixfLHcsZyl9cmV0dXJuIG51bGx9LGUucHJvdG90eXBlLmNvbnZlcnRDb250ZW50cz1mdW5jdGlvbihlKXtpZighdGhpcy5kb2VzU3VwcG9ydE1hcmtkb3duKCkpe2lmKCJzdHJpbmciPT10eXBlb2YgZSlyZXR1cm4gZTtpZigia2luZCJpbiBlKXJldHVybntraW5kOiJwbGFpbnRleHQiLHZhbHVlOmUudmFsdWV9O2lmKCFBcnJheS5pc0FycmF5KGUpKXJldHVybiBlLnZhbHVlO2UubWFwKChmdW5jdGlvbihlKXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIGU/ZTplLnZhbHVlfSkpfXJldHVybiBlfSxlLnByb3RvdHlwZS5kb2VzU3VwcG9ydE1hcmtkb3duPWZ1bmN0aW9uKCl7dmFyIGUsdCxuO2lmKCFxYSh0aGlzLnN1cHBvcnRzTWFya2Rvd24pKXtpZighcWEodGhpcy5sc09wdGlvbnMuY2xpZW50Q2FwYWJpbGl0aWVzKSlyZXR1cm4gdGhpcy5zdXBwb3J0c01hcmtkb3duPSEwLHRoaXMuc3VwcG9ydHNNYXJrZG93bjt2YXIgcj1udWxsPT09KG49bnVsbD09PSh0PW51bGw9PT0oZT10aGlzLmxzT3B0aW9ucy5jbGllbnRDYXBhYmlsaXRpZXMpfHx2b2lkIDA9PT1lP3ZvaWQgMDplLnRleHREb2N1bWVudCl8fHZvaWQgMD09PXQ/dm9pZCAwOnQuaG92ZXIpfHx2b2lkIDA9PT1uP3ZvaWQgMDpuLmNvbnRlbnRGb3JtYXQ7dGhpcy5zdXBwb3J0c01hcmtkb3duPUFycmF5LmlzQXJyYXkocikmJi0xIT09ci5pbmRleE9mKGVpLk1hcmtkb3duKX1yZXR1cm4gdGhpcy5zdXBwb3J0c01hcmtkb3dufSxlfSgpO2Z1bmN0aW9uIGxvKGUsdCl7cmV0dXJuIGV9cm89WywsZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChlKXt0aGlzLl9fcGFyZW50PWUsdGhpcy5fX2NoYXJhY3Rlcl9jb3VudD0wLHRoaXMuX19pbmRlbnRfY291bnQ9LTEsdGhpcy5fX2FsaWdubWVudF9jb3VudD0wLHRoaXMuX193cmFwX3BvaW50X2luZGV4PTAsdGhpcy5fX3dyYXBfcG9pbnRfY2hhcmFjdGVyX2NvdW50PTAsdGhpcy5fX3dyYXBfcG9pbnRfaW5kZW50X2NvdW50PS0xLHRoaXMuX193cmFwX3BvaW50X2FsaWdubWVudF9jb3VudD0wLHRoaXMuX19pdGVtcz1bXX1mdW5jdGlvbiBuKGUsdCl7dGhpcy5fX2NhY2hlPVsiIl0sdGhpcy5fX2luZGVudF9zaXplPWUuaW5kZW50X3NpemUsdGhpcy5fX2luZGVudF9zdHJpbmc9ZS5pbmRlbnRfY2hhcixlLmluZGVudF93aXRoX3RhYnN8fCh0aGlzLl9faW5kZW50X3N0cmluZz1uZXcgQXJyYXkoZS5pbmRlbnRfc2l6ZSsxKS5qb2luKGUuaW5kZW50X2NoYXIpKSx0PXR8fCIiLGUuaW5kZW50X2xldmVsPjAmJih0PW5ldyBBcnJheShlLmluZGVudF9sZXZlbCsxKS5qb2luKHRoaXMuX19pbmRlbnRfc3RyaW5nKSksdGhpcy5fX2Jhc2Vfc3RyaW5nPXQsdGhpcy5fX2Jhc2Vfc3RyaW5nX2xlbmd0aD10Lmxlbmd0aH1mdW5jdGlvbiByKGUscil7dGhpcy5fX2luZGVudF9jYWNoZT1uZXcgbihlLHIpLHRoaXMucmF3PSExLHRoaXMuX2VuZF93aXRoX25ld2xpbmU9ZS5lbmRfd2l0aF9uZXdsaW5lLHRoaXMuaW5kZW50X3NpemU9ZS5pbmRlbnRfc2l6ZSx0aGlzLndyYXBfbGluZV9sZW5ndGg9ZS53cmFwX2xpbmVfbGVuZ3RoLHRoaXMuaW5kZW50X2VtcHR5X2xpbmVzPWUuaW5kZW50X2VtcHR5X2xpbmVzLHRoaXMuX19saW5lcz1bXSx0aGlzLnByZXZpb3VzX2xpbmU9bnVsbCx0aGlzLmN1cnJlbnRfbGluZT1udWxsLHRoaXMubmV4dF9saW5lPW5ldyB0KHRoaXMpLHRoaXMuc3BhY2VfYmVmb3JlX3Rva2VuPSExLHRoaXMubm9uX2JyZWFraW5nX3NwYWNlPSExLHRoaXMucHJldmlvdXNfdG9rZW5fd3JhcHBlZD0hMSx0aGlzLl9fYWRkX291dHB1dGxpbmUoKX10LnByb3RvdHlwZS5jbG9uZV9lbXB0eT1mdW5jdGlvbigpe3ZhciBlPW5ldyB0KHRoaXMuX19wYXJlbnQpO3JldHVybiBlLnNldF9pbmRlbnQodGhpcy5fX2luZGVudF9jb3VudCx0aGlzLl9fYWxpZ25tZW50X2NvdW50KSxlfSx0LnByb3RvdHlwZS5pdGVtPWZ1bmN0aW9uKGUpe3JldHVybiBlPDA/dGhpcy5fX2l0ZW1zW3RoaXMuX19pdGVtcy5sZW5ndGgrZV06dGhpcy5fX2l0ZW1zW2VdfSx0LnByb3RvdHlwZS5oYXNfbWF0Y2g9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PXRoaXMuX19pdGVtcy5sZW5ndGgtMTt0Pj0wO3QtLSlpZih0aGlzLl9faXRlbXNbdF0ubWF0Y2goZSkpcmV0dXJuITA7cmV0dXJuITF9LHQucHJvdG90eXBlLnNldF9pbmRlbnQ9ZnVuY3Rpb24oZSx0KXt0aGlzLmlzX2VtcHR5KCkmJih0aGlzLl9faW5kZW50X2NvdW50PWV8fDAsdGhpcy5fX2FsaWdubWVudF9jb3VudD10fHwwLHRoaXMuX19jaGFyYWN0ZXJfY291bnQ9dGhpcy5fX3BhcmVudC5nZXRfaW5kZW50X3NpemUodGhpcy5fX2luZGVudF9jb3VudCx0aGlzLl9fYWxpZ25tZW50X2NvdW50KSl9LHQucHJvdG90eXBlLl9zZXRfd3JhcF9wb2ludD1mdW5jdGlvbigpe3RoaXMuX19wYXJlbnQud3JhcF9saW5lX2xlbmd0aCYmKHRoaXMuX193cmFwX3BvaW50X2luZGV4PXRoaXMuX19pdGVtcy5sZW5ndGgsdGhpcy5fX3dyYXBfcG9pbnRfY2hhcmFjdGVyX2NvdW50PXRoaXMuX19jaGFyYWN0ZXJfY291bnQsdGhpcy5fX3dyYXBfcG9pbnRfaW5kZW50X2NvdW50PXRoaXMuX19wYXJlbnQubmV4dF9saW5lLl9faW5kZW50X2NvdW50LHRoaXMuX193cmFwX3BvaW50X2FsaWdubWVudF9jb3VudD10aGlzLl9fcGFyZW50Lm5leHRfbGluZS5fX2FsaWdubWVudF9jb3VudCl9LHQucHJvdG90eXBlLl9zaG91bGRfd3JhcD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9fd3JhcF9wb2ludF9pbmRleCYmdGhpcy5fX2NoYXJhY3Rlcl9jb3VudD50aGlzLl9fcGFyZW50LndyYXBfbGluZV9sZW5ndGgmJnRoaXMuX193cmFwX3BvaW50X2NoYXJhY3Rlcl9jb3VudD50aGlzLl9fcGFyZW50Lm5leHRfbGluZS5fX2NoYXJhY3Rlcl9jb3VudH0sdC5wcm90b3R5cGUuX2FsbG93X3dyYXA9ZnVuY3Rpb24oKXtpZih0aGlzLl9zaG91bGRfd3JhcCgpKXt0aGlzLl9fcGFyZW50LmFkZF9uZXdfbGluZSgpO3ZhciBlPXRoaXMuX19wYXJlbnQuY3VycmVudF9saW5lO3JldHVybiBlLnNldF9pbmRlbnQodGhpcy5fX3dyYXBfcG9pbnRfaW5kZW50X2NvdW50LHRoaXMuX193cmFwX3BvaW50X2FsaWdubWVudF9jb3VudCksZS5fX2l0ZW1zPXRoaXMuX19pdGVtcy5zbGljZSh0aGlzLl9fd3JhcF9wb2ludF9pbmRleCksdGhpcy5fX2l0ZW1zPXRoaXMuX19pdGVtcy5zbGljZSgwLHRoaXMuX193cmFwX3BvaW50X2luZGV4KSxlLl9fY2hhcmFjdGVyX2NvdW50Kz10aGlzLl9fY2hhcmFjdGVyX2NvdW50LXRoaXMuX193cmFwX3BvaW50X2NoYXJhY3Rlcl9jb3VudCx0aGlzLl9fY2hhcmFjdGVyX2NvdW50PXRoaXMuX193cmFwX3BvaW50X2NoYXJhY3Rlcl9jb3VudCwiICI9PT1lLl9faXRlbXNbMF0mJihlLl9faXRlbXMuc3BsaWNlKDAsMSksZS5fX2NoYXJhY3Rlcl9jb3VudC09MSksITB9cmV0dXJuITF9LHQucHJvdG90eXBlLmlzX2VtcHR5PWZ1bmN0aW9uKCl7cmV0dXJuIDA9PT10aGlzLl9faXRlbXMubGVuZ3RofSx0LnByb3RvdHlwZS5sYXN0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaXNfZW1wdHkoKT9udWxsOnRoaXMuX19pdGVtc1t0aGlzLl9faXRlbXMubGVuZ3RoLTFdfSx0LnByb3RvdHlwZS5wdXNoPWZ1bmN0aW9uKGUpe3RoaXMuX19pdGVtcy5wdXNoKGUpO3ZhciB0PWUubGFzdEluZGV4T2YoIlxuIik7LTEhPT10P3RoaXMuX19jaGFyYWN0ZXJfY291bnQ9ZS5sZW5ndGgtdDp0aGlzLl9fY2hhcmFjdGVyX2NvdW50Kz1lLmxlbmd0aH0sdC5wcm90b3R5cGUucG9wPWZ1bmN0aW9uKCl7dmFyIGU9bnVsbDtyZXR1cm4gdGhpcy5pc19lbXB0eSgpfHwoZT10aGlzLl9faXRlbXMucG9wKCksdGhpcy5fX2NoYXJhY3Rlcl9jb3VudC09ZS5sZW5ndGgpLGV9LHQucHJvdG90eXBlLl9yZW1vdmVfaW5kZW50PWZ1bmN0aW9uKCl7dGhpcy5fX2luZGVudF9jb3VudD4wJiYodGhpcy5fX2luZGVudF9jb3VudC09MSx0aGlzLl9fY2hhcmFjdGVyX2NvdW50LT10aGlzLl9fcGFyZW50LmluZGVudF9zaXplKX0sdC5wcm90b3R5cGUuX3JlbW92ZV93cmFwX2luZGVudD1mdW5jdGlvbigpe3RoaXMuX193cmFwX3BvaW50X2luZGVudF9jb3VudD4wJiYodGhpcy5fX3dyYXBfcG9pbnRfaW5kZW50X2NvdW50LT0xKX0sdC5wcm90b3R5cGUudHJpbT1mdW5jdGlvbigpe2Zvcig7IiAiPT09dGhpcy5sYXN0KCk7KXRoaXMuX19pdGVtcy5wb3AoKSx0aGlzLl9fY2hhcmFjdGVyX2NvdW50LT0xfSx0LnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3ZhciBlPSIiO3JldHVybiB0aGlzLmlzX2VtcHR5KCk/dGhpcy5fX3BhcmVudC5pbmRlbnRfZW1wdHlfbGluZXMmJihlPXRoaXMuX19wYXJlbnQuZ2V0X2luZGVudF9zdHJpbmcodGhpcy5fX2luZGVudF9jb3VudCkpOihlPXRoaXMuX19wYXJlbnQuZ2V0X2luZGVudF9zdHJpbmcodGhpcy5fX2luZGVudF9jb3VudCx0aGlzLl9fYWxpZ25tZW50X2NvdW50KSxlKz10aGlzLl9faXRlbXMuam9pbigiIikpLGV9LG4ucHJvdG90eXBlLmdldF9pbmRlbnRfc2l6ZT1mdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMuX19iYXNlX3N0cmluZ19sZW5ndGg7cmV0dXJuIHQ9dHx8MCxlPDAmJihuPTApLG4rPWUqdGhpcy5fX2luZGVudF9zaXplLG4rPXR9LG4ucHJvdG90eXBlLmdldF9pbmRlbnRfc3RyaW5nPWZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy5fX2Jhc2Vfc3RyaW5nO3JldHVybiB0PXR8fDAsZTwwJiYoZT0wLG49IiIpLHQrPWUqdGhpcy5fX2luZGVudF9zaXplLHRoaXMuX19lbnN1cmVfY2FjaGUodCksbis9dGhpcy5fX2NhY2hlW3RdfSxuLnByb3RvdHlwZS5fX2Vuc3VyZV9jYWNoZT1mdW5jdGlvbihlKXtmb3IoO2U+PXRoaXMuX19jYWNoZS5sZW5ndGg7KXRoaXMuX19hZGRfY29sdW1uKCl9LG4ucHJvdG90eXBlLl9fYWRkX2NvbHVtbj1mdW5jdGlvbigpe3ZhciBlPXRoaXMuX19jYWNoZS5sZW5ndGgsdD0wLG49IiI7dGhpcy5fX2luZGVudF9zaXplJiZlPj10aGlzLl9faW5kZW50X3NpemUmJihlLT0odD1NYXRoLmZsb29yKGUvdGhpcy5fX2luZGVudF9zaXplKSkqdGhpcy5fX2luZGVudF9zaXplLG49bmV3IEFycmF5KHQrMSkuam9pbih0aGlzLl9faW5kZW50X3N0cmluZykpLGUmJihuKz1uZXcgQXJyYXkoZSsxKS5qb2luKCIgIikpLHRoaXMuX19jYWNoZS5wdXNoKG4pfSxyLnByb3RvdHlwZS5fX2FkZF9vdXRwdXRsaW5lPWZ1bmN0aW9uKCl7dGhpcy5wcmV2aW91c19saW5lPXRoaXMuY3VycmVudF9saW5lLHRoaXMuY3VycmVudF9saW5lPXRoaXMubmV4dF9saW5lLmNsb25lX2VtcHR5KCksdGhpcy5fX2xpbmVzLnB1c2godGhpcy5jdXJyZW50X2xpbmUpfSxyLnByb3RvdHlwZS5nZXRfbGluZV9udW1iZXI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fX2xpbmVzLmxlbmd0aH0sci5wcm90b3R5cGUuZ2V0X2luZGVudF9zdHJpbmc9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5fX2luZGVudF9jYWNoZS5nZXRfaW5kZW50X3N0cmluZyhlLHQpfSxyLnByb3RvdHlwZS5nZXRfaW5kZW50X3NpemU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5fX2luZGVudF9jYWNoZS5nZXRfaW5kZW50X3NpemUoZSx0KX0sci5wcm90b3R5cGUuaXNfZW1wdHk9ZnVuY3Rpb24oKXtyZXR1cm4hdGhpcy5wcmV2aW91c19saW5lJiZ0aGlzLmN1cnJlbnRfbGluZS5pc19lbXB0eSgpfSxyLnByb3RvdHlwZS5hZGRfbmV3X2xpbmU9ZnVuY3Rpb24oZSl7cmV0dXJuISh0aGlzLmlzX2VtcHR5KCl8fCFlJiZ0aGlzLmp1c3RfYWRkZWRfbmV3bGluZSgpfHwodGhpcy5yYXd8fHRoaXMuX19hZGRfb3V0cHV0bGluZSgpLDApKX0sci5wcm90b3R5cGUuZ2V0X2NvZGU9ZnVuY3Rpb24oZSl7dGhpcy50cmltKCEwKTt2YXIgdD10aGlzLmN1cnJlbnRfbGluZS5wb3AoKTt0JiYoIlxuIj09PXRbdC5sZW5ndGgtMV0mJih0PXQucmVwbGFjZSgvXG4rJC9nLCIiKSksdGhpcy5jdXJyZW50X2xpbmUucHVzaCh0KSksdGhpcy5fZW5kX3dpdGhfbmV3bGluZSYmdGhpcy5fX2FkZF9vdXRwdXRsaW5lKCk7dmFyIG49dGhpcy5fX2xpbmVzLmpvaW4oIlxuIik7cmV0dXJuIlxuIiE9PWUmJihuPW4ucmVwbGFjZSgvW1xuXS9nLGUpKSxufSxyLnByb3RvdHlwZS5zZXRfd3JhcF9wb2ludD1mdW5jdGlvbigpe3RoaXMuY3VycmVudF9saW5lLl9zZXRfd3JhcF9wb2ludCgpfSxyLnByb3RvdHlwZS5zZXRfaW5kZW50PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGU9ZXx8MCx0PXR8fDAsdGhpcy5uZXh0X2xpbmUuc2V0X2luZGVudChlLHQpLHRoaXMuX19saW5lcy5sZW5ndGg+MT8odGhpcy5jdXJyZW50X2xpbmUuc2V0X2luZGVudChlLHQpLCEwKToodGhpcy5jdXJyZW50X2xpbmUuc2V0X2luZGVudCgpLCExKX0sci5wcm90b3R5cGUuYWRkX3Jhd190b2tlbj1mdW5jdGlvbihlKXtmb3IodmFyIHQ9MDt0PGUubmV3bGluZXM7dCsrKXRoaXMuX19hZGRfb3V0cHV0bGluZSgpO3RoaXMuY3VycmVudF9saW5lLnNldF9pbmRlbnQoLTEpLHRoaXMuY3VycmVudF9saW5lLnB1c2goZS53aGl0ZXNwYWNlX2JlZm9yZSksdGhpcy5jdXJyZW50X2xpbmUucHVzaChlLnRleHQpLHRoaXMuc3BhY2VfYmVmb3JlX3Rva2VuPSExLHRoaXMubm9uX2JyZWFraW5nX3NwYWNlPSExLHRoaXMucHJldmlvdXNfdG9rZW5fd3JhcHBlZD0hMX0sci5wcm90b3R5cGUuYWRkX3Rva2VuPWZ1bmN0aW9uKGUpe3RoaXMuX19hZGRfc3BhY2VfYmVmb3JlX3Rva2VuKCksdGhpcy5jdXJyZW50X2xpbmUucHVzaChlKSx0aGlzLnNwYWNlX2JlZm9yZV90b2tlbj0hMSx0aGlzLm5vbl9icmVha2luZ19zcGFjZT0hMSx0aGlzLnByZXZpb3VzX3Rva2VuX3dyYXBwZWQ9dGhpcy5jdXJyZW50X2xpbmUuX2FsbG93X3dyYXAoKX0sci5wcm90b3R5cGUuX19hZGRfc3BhY2VfYmVmb3JlX3Rva2VuPWZ1bmN0aW9uKCl7dGhpcy5zcGFjZV9iZWZvcmVfdG9rZW4mJiF0aGlzLmp1c3RfYWRkZWRfbmV3bGluZSgpJiYodGhpcy5ub25fYnJlYWtpbmdfc3BhY2V8fHRoaXMuc2V0X3dyYXBfcG9pbnQoKSx0aGlzLmN1cnJlbnRfbGluZS5wdXNoKCIgIikpfSxyLnByb3RvdHlwZS5yZW1vdmVfaW5kZW50PWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD10aGlzLl9fbGluZXMubGVuZ3RoO2U8dDspdGhpcy5fX2xpbmVzW2VdLl9yZW1vdmVfaW5kZW50KCksZSsrO3RoaXMuY3VycmVudF9saW5lLl9yZW1vdmVfd3JhcF9pbmRlbnQoKX0sci5wcm90b3R5cGUudHJpbT1mdW5jdGlvbihlKXtmb3IoZT12b2lkIDAhPT1lJiZlLHRoaXMuY3VycmVudF9saW5lLnRyaW0oKTtlJiZ0aGlzLl9fbGluZXMubGVuZ3RoPjEmJnRoaXMuY3VycmVudF9saW5lLmlzX2VtcHR5KCk7KXRoaXMuX19saW5lcy5wb3AoKSx0aGlzLmN1cnJlbnRfbGluZT10aGlzLl9fbGluZXNbdGhpcy5fX2xpbmVzLmxlbmd0aC0xXSx0aGlzLmN1cnJlbnRfbGluZS50cmltKCk7dGhpcy5wcmV2aW91c19saW5lPXRoaXMuX19saW5lcy5sZW5ndGg+MT90aGlzLl9fbGluZXNbdGhpcy5fX2xpbmVzLmxlbmd0aC0yXTpudWxsfSxyLnByb3RvdHlwZS5qdXN0X2FkZGVkX25ld2xpbmU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jdXJyZW50X2xpbmUuaXNfZW1wdHkoKX0sci5wcm90b3R5cGUuanVzdF9hZGRlZF9ibGFua2xpbmU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pc19lbXB0eSgpfHx0aGlzLmN1cnJlbnRfbGluZS5pc19lbXB0eSgpJiZ0aGlzLnByZXZpb3VzX2xpbmUuaXNfZW1wdHkoKX0sci5wcm90b3R5cGUuZW5zdXJlX2VtcHR5X2xpbmVfYWJvdmU9ZnVuY3Rpb24oZSxuKXtmb3IodmFyIHI9dGhpcy5fX2xpbmVzLmxlbmd0aC0yO3I+PTA7KXt2YXIgaT10aGlzLl9fbGluZXNbcl07aWYoaS5pc19lbXB0eSgpKWJyZWFrO2lmKDAhPT1pLml0ZW0oMCkuaW5kZXhPZihlKSYmaS5pdGVtKC0xKSE9PW4pe3RoaXMuX19saW5lcy5zcGxpY2UocisxLDAsbmV3IHQodGhpcykpLHRoaXMucHJldmlvdXNfbGluZT10aGlzLl9fbGluZXNbdGhpcy5fX2xpbmVzLmxlbmd0aC0yXTticmVha31yLS19fSxlLmV4cG9ydHMuT3V0cHV0PXJ9LCwsLGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoZSx0KXt0aGlzLnJhd19vcHRpb25zPW4oZSx0KSx0aGlzLmRpc2FibGVkPXRoaXMuX2dldF9ib29sZWFuKCJkaXNhYmxlZCIpLHRoaXMuZW9sPXRoaXMuX2dldF9jaGFyYWN0ZXJzKCJlb2wiLCJhdXRvIiksdGhpcy5lbmRfd2l0aF9uZXdsaW5lPXRoaXMuX2dldF9ib29sZWFuKCJlbmRfd2l0aF9uZXdsaW5lIiksdGhpcy5pbmRlbnRfc2l6ZT10aGlzLl9nZXRfbnVtYmVyKCJpbmRlbnRfc2l6ZSIsNCksdGhpcy5pbmRlbnRfY2hhcj10aGlzLl9nZXRfY2hhcmFjdGVycygiaW5kZW50X2NoYXIiLCIgIiksdGhpcy5pbmRlbnRfbGV2ZWw9dGhpcy5fZ2V0X251bWJlcigiaW5kZW50X2xldmVsIiksdGhpcy5wcmVzZXJ2ZV9uZXdsaW5lcz10aGlzLl9nZXRfYm9vbGVhbigicHJlc2VydmVfbmV3bGluZXMiLCEwKSx0aGlzLm1heF9wcmVzZXJ2ZV9uZXdsaW5lcz10aGlzLl9nZXRfbnVtYmVyKCJtYXhfcHJlc2VydmVfbmV3bGluZXMiLDMyNzg2KSx0aGlzLnByZXNlcnZlX25ld2xpbmVzfHwodGhpcy5tYXhfcHJlc2VydmVfbmV3bGluZXM9MCksdGhpcy5pbmRlbnRfd2l0aF90YWJzPXRoaXMuX2dldF9ib29sZWFuKCJpbmRlbnRfd2l0aF90YWJzIiwiXHQiPT09dGhpcy5pbmRlbnRfY2hhciksdGhpcy5pbmRlbnRfd2l0aF90YWJzJiYodGhpcy5pbmRlbnRfY2hhcj0iXHQiLDE9PT10aGlzLmluZGVudF9zaXplJiYodGhpcy5pbmRlbnRfc2l6ZT00KSksdGhpcy53cmFwX2xpbmVfbGVuZ3RoPXRoaXMuX2dldF9udW1iZXIoIndyYXBfbGluZV9sZW5ndGgiLHRoaXMuX2dldF9udW1iZXIoIm1heF9jaGFyIikpLHRoaXMuaW5kZW50X2VtcHR5X2xpbmVzPXRoaXMuX2dldF9ib29sZWFuKCJpbmRlbnRfZW1wdHlfbGluZXMiKSx0aGlzLnRlbXBsYXRpbmc9dGhpcy5fZ2V0X3NlbGVjdGlvbl9saXN0KCJ0ZW1wbGF0aW5nIixbImF1dG8iLCJub25lIiwiZGphbmdvIiwiZXJiIiwiaGFuZGxlYmFycyIsInBocCIsInNtYXJ0eSJdLFsiYXV0byJdKX1mdW5jdGlvbiBuKGUsdCl7dmFyIG4saT17fTtmb3IobiBpbiBlPXIoZSkpbiE9PXQmJihpW25dPWVbbl0pO2lmKHQmJmVbdF0pZm9yKG4gaW4gZVt0XSlpW25dPWVbdF1bbl07cmV0dXJuIGl9ZnVuY3Rpb24gcihlKXt2YXIgdCxuPXt9O2Zvcih0IGluIGUpblt0LnJlcGxhY2UoLy0vZywiXyIpXT1lW3RdO3JldHVybiBufXQucHJvdG90eXBlLl9nZXRfYXJyYXk9ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLnJhd19vcHRpb25zW2VdLHI9dHx8W107cmV0dXJuIm9iamVjdCI9PXR5cGVvZiBuP251bGwhPT1uJiYiZnVuY3Rpb24iPT10eXBlb2Ygbi5jb25jYXQmJihyPW4uY29uY2F0KCkpOiJzdHJpbmciPT10eXBlb2YgbiYmKHI9bi5zcGxpdCgvW15hLXpBLVowLTlfXC9cLV0rLykpLHJ9LHQucHJvdG90eXBlLl9nZXRfYm9vbGVhbj1mdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMucmF3X29wdGlvbnNbZV07cmV0dXJuIHZvaWQgMD09PW4/ISF0OiEhbn0sdC5wcm90b3R5cGUuX2dldF9jaGFyYWN0ZXJzPWZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy5yYXdfb3B0aW9uc1tlXSxyPXR8fCIiO3JldHVybiJzdHJpbmciPT10eXBlb2YgbiYmKHI9bi5yZXBsYWNlKC9cXHIvLCJcciIpLnJlcGxhY2UoL1xcbi8sIlxuIikucmVwbGFjZSgvXFx0LywiXHQiKSkscn0sdC5wcm90b3R5cGUuX2dldF9udW1iZXI9ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLnJhd19vcHRpb25zW2VdO3Q9cGFyc2VJbnQodCwxMCksaXNOYU4odCkmJih0PTApO3ZhciByPXBhcnNlSW50KG4sMTApO3JldHVybiBpc05hTihyKSYmKHI9dCkscn0sdC5wcm90b3R5cGUuX2dldF9zZWxlY3Rpb249ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMuX2dldF9zZWxlY3Rpb25fbGlzdChlLHQsbik7aWYoMSE9PXIubGVuZ3RoKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBPcHRpb24gVmFsdWU6IFRoZSBvcHRpb24gJyIrZSsiJyBjYW4gb25seSBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6XG4iK3QrIlxuWW91IHBhc3NlZCBpbjogJyIrdGhpcy5yYXdfb3B0aW9uc1tlXSsiJyIpO3JldHVybiByWzBdfSx0LnByb3RvdHlwZS5fZ2V0X3NlbGVjdGlvbl9saXN0PWZ1bmN0aW9uKGUsdCxuKXtpZighdHx8MD09PXQubGVuZ3RoKXRocm93IG5ldyBFcnJvcigiU2VsZWN0aW9uIGxpc3QgY2Fubm90IGJlIGVtcHR5LiIpO2lmKG49bnx8W3RbMF1dLCF0aGlzLl9pc192YWxpZF9zZWxlY3Rpb24obix0KSl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgRGVmYXVsdCBWYWx1ZSEiKTt2YXIgcj10aGlzLl9nZXRfYXJyYXkoZSxuKTtpZighdGhpcy5faXNfdmFsaWRfc2VsZWN0aW9uKHIsdCkpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIE9wdGlvbiBWYWx1ZTogVGhlIG9wdGlvbiAnIitlKyInIGNhbiBjb250YWluIG9ubHkgdGhlIGZvbGxvd2luZyB2YWx1ZXM6XG4iK3QrIlxuWW91IHBhc3NlZCBpbjogJyIrdGhpcy5yYXdfb3B0aW9uc1tlXSsiJyIpO3JldHVybiByfSx0LnByb3RvdHlwZS5faXNfdmFsaWRfc2VsZWN0aW9uPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUubGVuZ3RoJiZ0Lmxlbmd0aCYmIWUuc29tZSgoZnVuY3Rpb24oZSl7cmV0dXJuLTE9PT10LmluZGV4T2YoZSl9KSl9LGUuZXhwb3J0cy5PcHRpb25zPXQsZS5leHBvcnRzLm5vcm1hbGl6ZU9wdHM9cixlLmV4cG9ydHMubWVyZ2VPcHRzPW59LCxmdW5jdGlvbihlKXt2YXIgdD1SZWdFeHAucHJvdG90eXBlLmhhc093blByb3BlcnR5KCJzdGlja3kiKTtmdW5jdGlvbiBuKGUpe3RoaXMuX19pbnB1dD1lfHwiIix0aGlzLl9faW5wdXRfbGVuZ3RoPXRoaXMuX19pbnB1dC5sZW5ndGgsdGhpcy5fX3Bvc2l0aW9uPTB9bi5wcm90b3R5cGUucmVzdGFydD1mdW5jdGlvbigpe3RoaXMuX19wb3NpdGlvbj0wfSxuLnByb3RvdHlwZS5iYWNrPWZ1bmN0aW9uKCl7dGhpcy5fX3Bvc2l0aW9uPjAmJih0aGlzLl9fcG9zaXRpb24tPTEpfSxuLnByb3RvdHlwZS5oYXNOZXh0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX19wb3NpdGlvbjx0aGlzLl9faW5wdXRfbGVuZ3RofSxuLnByb3RvdHlwZS5uZXh0PWZ1bmN0aW9uKCl7dmFyIGU9bnVsbDtyZXR1cm4gdGhpcy5oYXNOZXh0KCkmJihlPXRoaXMuX19pbnB1dC5jaGFyQXQodGhpcy5fX3Bvc2l0aW9uKSx0aGlzLl9fcG9zaXRpb24rPTEpLGV9LG4ucHJvdG90eXBlLnBlZWs9ZnVuY3Rpb24oZSl7dmFyIHQ9bnVsbDtyZXR1cm4gZT1lfHwwLChlKz10aGlzLl9fcG9zaXRpb24pPj0wJiZlPHRoaXMuX19pbnB1dF9sZW5ndGgmJih0PXRoaXMuX19pbnB1dC5jaGFyQXQoZSkpLHR9LG4ucHJvdG90eXBlLl9fbWF0Y2g9ZnVuY3Rpb24oZSxuKXtlLmxhc3RJbmRleD1uO3ZhciByPWUuZXhlYyh0aGlzLl9faW5wdXQpO3JldHVybiFyfHx0JiZlLnN0aWNreXx8ci5pbmRleCE9PW4mJihyPW51bGwpLHJ9LG4ucHJvdG90eXBlLnRlc3Q9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdD10fHwwLCh0Kz10aGlzLl9fcG9zaXRpb24pPj0wJiZ0PHRoaXMuX19pbnB1dF9sZW5ndGgmJiEhdGhpcy5fX21hdGNoKGUsdCl9LG4ucHJvdG90eXBlLnRlc3RDaGFyPWZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy5wZWVrKHQpO3JldHVybiBlLmxhc3RJbmRleD0wLG51bGwhPT1uJiZlLnRlc3Qobil9LG4ucHJvdG90eXBlLm1hdGNoPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuX19tYXRjaChlLHRoaXMuX19wb3NpdGlvbik7cmV0dXJuIHQ/dGhpcy5fX3Bvc2l0aW9uKz10WzBdLmxlbmd0aDp0PW51bGwsdH0sbi5wcm90b3R5cGUucmVhZD1mdW5jdGlvbihlLHQsbil7dmFyIHIsaT0iIjtyZXR1cm4gZSYmKHI9dGhpcy5tYXRjaChlKSkmJihpKz1yWzBdKSwhdHx8IXImJmV8fChpKz10aGlzLnJlYWRVbnRpbCh0LG4pKSxpfSxuLnByb3RvdHlwZS5yZWFkVW50aWw9ZnVuY3Rpb24oZSx0KXt2YXIgbixyPXRoaXMuX19wb3NpdGlvbjtlLmxhc3RJbmRleD10aGlzLl9fcG9zaXRpb247dmFyIGk9ZS5leGVjKHRoaXMuX19pbnB1dCk7cmV0dXJuIGk/KHI9aS5pbmRleCx0JiYocis9aVswXS5sZW5ndGgpKTpyPXRoaXMuX19pbnB1dF9sZW5ndGgsbj10aGlzLl9faW5wdXQuc3Vic3RyaW5nKHRoaXMuX19wb3NpdGlvbixyKSx0aGlzLl9fcG9zaXRpb249cixufSxuLnByb3RvdHlwZS5yZWFkVW50aWxBZnRlcj1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5yZWFkVW50aWwoZSwhMCl9LG4ucHJvdG90eXBlLmdldF9yZWdleHA9ZnVuY3Rpb24oZSxuKXt2YXIgcj1udWxsLGk9ImciO3JldHVybiBuJiZ0JiYoaT0ieSIpLCJzdHJpbmciPT10eXBlb2YgZSYmIiIhPT1lP3I9bmV3IFJlZ0V4cChlLGkpOmUmJihyPW5ldyBSZWdFeHAoZS5zb3VyY2UsaSkpLHJ9LG4ucHJvdG90eXBlLmdldF9saXRlcmFsX3JlZ2V4cD1mdW5jdGlvbihlKXtyZXR1cm4gUmVnRXhwKGUucmVwbGFjZSgvWy1cL1xcXiQqKz8uKCl8W1xde31dL2csIlxcJCYiKSl9LG4ucHJvdG90eXBlLnBlZWtVbnRpbEFmdGVyPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuX19wb3NpdGlvbixuPXRoaXMucmVhZFVudGlsQWZ0ZXIoZSk7cmV0dXJuIHRoaXMuX19wb3NpdGlvbj10LG59LG4ucHJvdG90eXBlLmxvb2tCYWNrPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuX19wb3NpdGlvbi0xO3JldHVybiB0Pj1lLmxlbmd0aCYmdGhpcy5fX2lucHV0LnN1YnN0cmluZyh0LWUubGVuZ3RoLHQpLnRvTG93ZXJDYXNlKCk9PT1lfSxlLmV4cG9ydHMuSW5wdXRTY2FubmVyPW59LCwsLCxmdW5jdGlvbihlKXtmdW5jdGlvbiB0KGUsdCl7ZT0ic3RyaW5nIj09dHlwZW9mIGU/ZTplLnNvdXJjZSx0PSJzdHJpbmciPT10eXBlb2YgdD90OnQuc291cmNlLHRoaXMuX19kaXJlY3RpdmVzX2Jsb2NrX3BhdHRlcm49bmV3IFJlZ0V4cChlKy8gYmVhdXRpZnkoIFx3K1s6XVx3KykrIC8uc291cmNlK3QsImciKSx0aGlzLl9fZGlyZWN0aXZlX3BhdHRlcm49LyAoXHcrKVs6XShcdyspL2csdGhpcy5fX2RpcmVjdGl2ZXNfZW5kX2lnbm9yZV9wYXR0ZXJuPW5ldyBSZWdFeHAoZSsvXHNiZWF1dGlmeVxzaWdub3JlOmVuZFxzLy5zb3VyY2UrdCwiZyIpfXQucHJvdG90eXBlLmdldF9kaXJlY3RpdmVzPWZ1bmN0aW9uKGUpe2lmKCFlLm1hdGNoKHRoaXMuX19kaXJlY3RpdmVzX2Jsb2NrX3BhdHRlcm4pKXJldHVybiBudWxsO3ZhciB0PXt9O3RoaXMuX19kaXJlY3RpdmVfcGF0dGVybi5sYXN0SW5kZXg9MDtmb3IodmFyIG49dGhpcy5fX2RpcmVjdGl2ZV9wYXR0ZXJuLmV4ZWMoZSk7bjspdFtuWzFdXT1uWzJdLG49dGhpcy5fX2RpcmVjdGl2ZV9wYXR0ZXJuLmV4ZWMoZSk7cmV0dXJuIHR9LHQucHJvdG90eXBlLnJlYWRJZ25vcmVkPWZ1bmN0aW9uKGUpe3JldHVybiBlLnJlYWRVbnRpbEFmdGVyKHRoaXMuX19kaXJlY3RpdmVzX2VuZF9pZ25vcmVfcGF0dGVybil9LGUuZXhwb3J0cy5EaXJlY3RpdmVzPXR9LCxmdW5jdGlvbihlLHQsbil7dmFyIHI9bigxNikuQmVhdXRpZmllcixpPW4oMTcpLk9wdGlvbnM7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIG5ldyByKGUsdCkuYmVhdXRpZnkoKX0sZS5leHBvcnRzLmRlZmF1bHRPcHRpb25zPWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBpfX0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPW4oMTcpLk9wdGlvbnMsaT1uKDIpLk91dHB1dCxhPW4oOCkuSW5wdXRTY2FubmVyLG89bmV3KDAsbigxMykuRGlyZWN0aXZlcykoL1wvXCovLC9cKlwvLykscz0vXHJcbnxbXHJcbl0vLGw9L1xyXG58W1xyXG5dL2csYz0vXHMvLGg9Lyg/OlxzfFxuKSsvZyxkPS9cL1wqKD86W1xzXFNdKj8pKCg/OlwqXC8pfCQpL2csdT0vXC9cLyg/OlteXG5cclx1MjAyOFx1MjAyOV0qKS9nO2Z1bmN0aW9uIHAoZSx0KXt0aGlzLl9zb3VyY2VfdGV4dD1lfHwiIix0aGlzLl9vcHRpb25zPW5ldyByKHQpLHRoaXMuX2NoPW51bGwsdGhpcy5faW5wdXQ9bnVsbCx0aGlzLk5FU1RFRF9BVF9SVUxFPXsiQHBhZ2UiOiEwLCJAZm9udC1mYWNlIjohMCwiQGtleWZyYW1lcyI6ITAsIkBtZWRpYSI6ITAsIkBzdXBwb3J0cyI6ITAsIkBkb2N1bWVudCI6ITB9LHRoaXMuQ09ORElUSU9OQUxfR1JPVVBfUlVMRT17IkBtZWRpYSI6ITAsIkBzdXBwb3J0cyI6ITAsIkBkb2N1bWVudCI6ITB9fXAucHJvdG90eXBlLmVhdFN0cmluZz1mdW5jdGlvbihlKXt2YXIgdD0iIjtmb3IodGhpcy5fY2g9dGhpcy5faW5wdXQubmV4dCgpO3RoaXMuX2NoOyl7aWYodCs9dGhpcy5fY2gsIlxcIj09PXRoaXMuX2NoKXQrPXRoaXMuX2lucHV0Lm5leHQoKTtlbHNlIGlmKC0xIT09ZS5pbmRleE9mKHRoaXMuX2NoKXx8IlxuIj09PXRoaXMuX2NoKWJyZWFrO3RoaXMuX2NoPXRoaXMuX2lucHV0Lm5leHQoKX1yZXR1cm4gdH0scC5wcm90b3R5cGUuZWF0V2hpdGVzcGFjZT1mdW5jdGlvbihlKXtmb3IodmFyIHQ9Yy50ZXN0KHRoaXMuX2lucHV0LnBlZWsoKSksbj0wO2MudGVzdCh0aGlzLl9pbnB1dC5wZWVrKCkpOyl0aGlzLl9jaD10aGlzLl9pbnB1dC5uZXh0KCksZSYmIlxuIj09PXRoaXMuX2NoJiYoMD09PW58fG48dGhpcy5fb3B0aW9ucy5tYXhfcHJlc2VydmVfbmV3bGluZXMpJiYobisrLHRoaXMuX291dHB1dC5hZGRfbmV3X2xpbmUoITApKTtyZXR1cm4gdH0scC5wcm90b3R5cGUuZm91bmROZXN0ZWRQc2V1ZG9DbGFzcz1mdW5jdGlvbigpe2Zvcih2YXIgZT0wLHQ9MSxuPXRoaXMuX2lucHV0LnBlZWsodCk7bjspe2lmKCJ7Ij09PW4pcmV0dXJuITA7aWYoIigiPT09billKz0xO2Vsc2UgaWYoIikiPT09bil7aWYoMD09PWUpcmV0dXJuITE7ZS09MX1lbHNlIGlmKCI7Ij09PW58fCJ9Ij09PW4pcmV0dXJuITE7dCsrLG49dGhpcy5faW5wdXQucGVlayh0KX1yZXR1cm4hMX0scC5wcm90b3R5cGUucHJpbnRfc3RyaW5nPWZ1bmN0aW9uKGUpe3RoaXMuX291dHB1dC5zZXRfaW5kZW50KHRoaXMuX2luZGVudExldmVsKSx0aGlzLl9vdXRwdXQubm9uX2JyZWFraW5nX3NwYWNlPSEwLHRoaXMuX291dHB1dC5hZGRfdG9rZW4oZSl9LHAucHJvdG90eXBlLnByZXNlcnZlU2luZ2xlU3BhY2U9ZnVuY3Rpb24oZSl7ZSYmKHRoaXMuX291dHB1dC5zcGFjZV9iZWZvcmVfdG9rZW49ITApfSxwLnByb3RvdHlwZS5pbmRlbnQ9ZnVuY3Rpb24oKXt0aGlzLl9pbmRlbnRMZXZlbCsrfSxwLnByb3RvdHlwZS5vdXRkZW50PWZ1bmN0aW9uKCl7dGhpcy5faW5kZW50TGV2ZWw+MCYmdGhpcy5faW5kZW50TGV2ZWwtLX0scC5wcm90b3R5cGUuYmVhdXRpZnk9ZnVuY3Rpb24oKXtpZih0aGlzLl9vcHRpb25zLmRpc2FibGVkKXJldHVybiB0aGlzLl9zb3VyY2VfdGV4dDt2YXIgZT10aGlzLl9zb3VyY2VfdGV4dCx0PXRoaXMuX29wdGlvbnMuZW9sOyJhdXRvIj09PXQmJih0PSJcbiIsZSYmcy50ZXN0KGV8fCIiKSYmKHQ9ZS5tYXRjaChzKVswXSkpO3ZhciBuPShlPWUucmVwbGFjZShsLCJcbiIpKS5tYXRjaCgvXltcdCBdKi8pWzBdO3RoaXMuX291dHB1dD1uZXcgaSh0aGlzLl9vcHRpb25zLG4pLHRoaXMuX2lucHV0PW5ldyBhKGUpLHRoaXMuX2luZGVudExldmVsPTAsdGhpcy5fbmVzdGVkTGV2ZWw9MCx0aGlzLl9jaD1udWxsO2Zvcih2YXIgcixwLG09MCxmPSExLGc9ITEsYj0hMSx3PSExLF89ITEsdj10aGlzLl9jaDtyPSIiIT09dGhpcy5faW5wdXQucmVhZChoKSxwPXYsdGhpcy5fY2g9dGhpcy5faW5wdXQubmV4dCgpLCJcXCI9PT10aGlzLl9jaCYmdGhpcy5faW5wdXQuaGFzTmV4dCgpJiYodGhpcy5fY2grPXRoaXMuX2lucHV0Lm5leHQoKSksdj10aGlzLl9jaCx0aGlzLl9jaDspaWYoIi8iPT09dGhpcy5fY2gmJiIqIj09PXRoaXMuX2lucHV0LnBlZWsoKSl7dGhpcy5fb3V0cHV0LmFkZF9uZXdfbGluZSgpLHRoaXMuX2lucHV0LmJhY2soKTt2YXIgeT10aGlzLl9pbnB1dC5yZWFkKGQpLFQ9by5nZXRfZGlyZWN0aXZlcyh5KTtUJiYic3RhcnQiPT09VC5pZ25vcmUmJih5Kz1vLnJlYWRJZ25vcmVkKHRoaXMuX2lucHV0KSksdGhpcy5wcmludF9zdHJpbmcoeSksdGhpcy5lYXRXaGl0ZXNwYWNlKCEwKSx0aGlzLl9vdXRwdXQuYWRkX25ld19saW5lKCl9ZWxzZSBpZigiLyI9PT10aGlzLl9jaCYmIi8iPT09dGhpcy5faW5wdXQucGVlaygpKXRoaXMuX291dHB1dC5zcGFjZV9iZWZvcmVfdG9rZW49ITAsdGhpcy5faW5wdXQuYmFjaygpLHRoaXMucHJpbnRfc3RyaW5nKHRoaXMuX2lucHV0LnJlYWQodSkpLHRoaXMuZWF0V2hpdGVzcGFjZSghMCk7ZWxzZSBpZigiQCI9PT10aGlzLl9jaClpZih0aGlzLnByZXNlcnZlU2luZ2xlU3BhY2UociksInsiPT09dGhpcy5faW5wdXQucGVlaygpKXRoaXMucHJpbnRfc3RyaW5nKHRoaXMuX2NoK3RoaXMuZWF0U3RyaW5nKCJ9IikpO2Vsc2V7dGhpcy5wcmludF9zdHJpbmcodGhpcy5fY2gpO3ZhciBrPXRoaXMuX2lucHV0LnBlZWtVbnRpbEFmdGVyKC9bOiAsO3t9KClbXF1cLz0nIl0vZyk7ay5tYXRjaCgvWyA6XSQvKSYmKGs9dGhpcy5lYXRTdHJpbmcoIjogIikucmVwbGFjZSgvXHMkLywiIiksdGhpcy5wcmludF9zdHJpbmcoayksdGhpcy5fb3V0cHV0LnNwYWNlX2JlZm9yZV90b2tlbj0hMCksImV4dGVuZCI9PT0oaz1rLnJlcGxhY2UoL1xzJC8sIiIpKT93PSEwOiJpbXBvcnQiPT09ayYmKF89ITApLGsgaW4gdGhpcy5ORVNURURfQVRfUlVMRT8odGhpcy5fbmVzdGVkTGV2ZWwrPTEsayBpbiB0aGlzLkNPTkRJVElPTkFMX0dST1VQX1JVTEUmJihiPSEwKSk6Znx8MCE9PW18fC0xPT09ay5pbmRleE9mKCI6Iil8fChnPSEwLHRoaXMuaW5kZW50KCkpfWVsc2UiIyI9PT10aGlzLl9jaCYmInsiPT09dGhpcy5faW5wdXQucGVlaygpPyh0aGlzLnByZXNlcnZlU2luZ2xlU3BhY2UociksdGhpcy5wcmludF9zdHJpbmcodGhpcy5fY2grdGhpcy5lYXRTdHJpbmcoIn0iKSkpOiJ7Ij09PXRoaXMuX2NoPyhnJiYoZz0hMSx0aGlzLm91dGRlbnQoKSksYj8oYj0hMSxmPXRoaXMuX2luZGVudExldmVsPj10aGlzLl9uZXN0ZWRMZXZlbCk6Zj10aGlzLl9pbmRlbnRMZXZlbD49dGhpcy5fbmVzdGVkTGV2ZWwtMSx0aGlzLl9vcHRpb25zLm5ld2xpbmVfYmV0d2Vlbl9ydWxlcyYmZiYmdGhpcy5fb3V0cHV0LnByZXZpb3VzX2xpbmUmJiJ7IiE9PXRoaXMuX291dHB1dC5wcmV2aW91c19saW5lLml0ZW0oLTEpJiZ0aGlzLl9vdXRwdXQuZW5zdXJlX2VtcHR5X2xpbmVfYWJvdmUoIi8iLCIsIiksdGhpcy5fb3V0cHV0LnNwYWNlX2JlZm9yZV90b2tlbj0hMCwiZXhwYW5kIj09PXRoaXMuX29wdGlvbnMuYnJhY2Vfc3R5bGU/KHRoaXMuX291dHB1dC5hZGRfbmV3X2xpbmUoKSx0aGlzLnByaW50X3N0cmluZyh0aGlzLl9jaCksdGhpcy5pbmRlbnQoKSx0aGlzLl9vdXRwdXQuc2V0X2luZGVudCh0aGlzLl9pbmRlbnRMZXZlbCkpOih0aGlzLmluZGVudCgpLHRoaXMucHJpbnRfc3RyaW5nKHRoaXMuX2NoKSksdGhpcy5lYXRXaGl0ZXNwYWNlKCEwKSx0aGlzLl9vdXRwdXQuYWRkX25ld19saW5lKCkpOiJ9Ij09PXRoaXMuX2NoPyh0aGlzLm91dGRlbnQoKSx0aGlzLl9vdXRwdXQuYWRkX25ld19saW5lKCksInsiPT09cCYmdGhpcy5fb3V0cHV0LnRyaW0oITApLF89ITEsdz0hMSxnJiYodGhpcy5vdXRkZW50KCksZz0hMSksdGhpcy5wcmludF9zdHJpbmcodGhpcy5fY2gpLGY9ITEsdGhpcy5fbmVzdGVkTGV2ZWwmJnRoaXMuX25lc3RlZExldmVsLS0sdGhpcy5lYXRXaGl0ZXNwYWNlKCEwKSx0aGlzLl9vdXRwdXQuYWRkX25ld19saW5lKCksdGhpcy5fb3B0aW9ucy5uZXdsaW5lX2JldHdlZW5fcnVsZXMmJiF0aGlzLl9vdXRwdXQuanVzdF9hZGRlZF9ibGFua2xpbmUoKSYmIn0iIT09dGhpcy5faW5wdXQucGVlaygpJiZ0aGlzLl9vdXRwdXQuYWRkX25ld19saW5lKCEwKSk6IjoiPT09dGhpcy5fY2g/IWYmJiFifHx0aGlzLl9pbnB1dC5sb29rQmFjaygiJiIpfHx0aGlzLmZvdW5kTmVzdGVkUHNldWRvQ2xhc3MoKXx8dGhpcy5faW5wdXQubG9va0JhY2soIigiKXx8d3x8MCE9PW0/KHRoaXMuX2lucHV0Lmxvb2tCYWNrKCIgIikmJih0aGlzLl9vdXRwdXQuc3BhY2VfYmVmb3JlX3Rva2VuPSEwKSwiOiI9PT10aGlzLl9pbnB1dC5wZWVrKCk/KHRoaXMuX2NoPXRoaXMuX2lucHV0Lm5leHQoKSx0aGlzLnByaW50X3N0cmluZygiOjoiKSk6dGhpcy5wcmludF9zdHJpbmcoIjoiKSk6KHRoaXMucHJpbnRfc3RyaW5nKCI6IiksZ3x8KGc9ITAsdGhpcy5fb3V0cHV0LnNwYWNlX2JlZm9yZV90b2tlbj0hMCx0aGlzLmVhdFdoaXRlc3BhY2UoITApLHRoaXMuaW5kZW50KCkpKTonIic9PT10aGlzLl9jaHx8IiciPT09dGhpcy5fY2g/KHRoaXMucHJlc2VydmVTaW5nbGVTcGFjZShyKSx0aGlzLnByaW50X3N0cmluZyh0aGlzLl9jaCt0aGlzLmVhdFN0cmluZyh0aGlzLl9jaCkpLHRoaXMuZWF0V2hpdGVzcGFjZSghMCkpOiI7Ij09PXRoaXMuX2NoPzA9PT1tPyhnJiYodGhpcy5vdXRkZW50KCksZz0hMSksdz0hMSxfPSExLHRoaXMucHJpbnRfc3RyaW5nKHRoaXMuX2NoKSx0aGlzLmVhdFdoaXRlc3BhY2UoITApLCIvIiE9PXRoaXMuX2lucHV0LnBlZWsoKSYmdGhpcy5fb3V0cHV0LmFkZF9uZXdfbGluZSgpKToodGhpcy5wcmludF9zdHJpbmcodGhpcy5fY2gpLHRoaXMuZWF0V2hpdGVzcGFjZSghMCksdGhpcy5fb3V0cHV0LnNwYWNlX2JlZm9yZV90b2tlbj0hMCk6IigiPT09dGhpcy5fY2g/dGhpcy5faW5wdXQubG9va0JhY2soInVybCIpPyh0aGlzLnByaW50X3N0cmluZyh0aGlzLl9jaCksdGhpcy5lYXRXaGl0ZXNwYWNlKCksbSsrLHRoaXMuaW5kZW50KCksdGhpcy5fY2g9dGhpcy5faW5wdXQubmV4dCgpLCIpIj09PXRoaXMuX2NofHwnIic9PT10aGlzLl9jaHx8IiciPT09dGhpcy5fY2g/dGhpcy5faW5wdXQuYmFjaygpOnRoaXMuX2NoJiYodGhpcy5wcmludF9zdHJpbmcodGhpcy5fY2grdGhpcy5lYXRTdHJpbmcoIikiKSksbSYmKG0tLSx0aGlzLm91dGRlbnQoKSkpKToodGhpcy5wcmVzZXJ2ZVNpbmdsZVNwYWNlKHIpLHRoaXMucHJpbnRfc3RyaW5nKHRoaXMuX2NoKSx0aGlzLmVhdFdoaXRlc3BhY2UoKSxtKyssdGhpcy5pbmRlbnQoKSk6IikiPT09dGhpcy5fY2g/KG0mJihtLS0sdGhpcy5vdXRkZW50KCkpLHRoaXMucHJpbnRfc3RyaW5nKHRoaXMuX2NoKSk6IiwiPT09dGhpcy5fY2g/KHRoaXMucHJpbnRfc3RyaW5nKHRoaXMuX2NoKSx0aGlzLmVhdFdoaXRlc3BhY2UoITApLCF0aGlzLl9vcHRpb25zLnNlbGVjdG9yX3NlcGFyYXRvcl9uZXdsaW5lfHxnfHwwIT09bXx8X3x8dz90aGlzLl9vdXRwdXQuc3BhY2VfYmVmb3JlX3Rva2VuPSEwOnRoaXMuX291dHB1dC5hZGRfbmV3X2xpbmUoKSk6Ij4iIT09dGhpcy5fY2gmJiIrIiE9PXRoaXMuX2NoJiYifiIhPT10aGlzLl9jaHx8Z3x8MCE9PW0/Il0iPT09dGhpcy5fY2g/dGhpcy5wcmludF9zdHJpbmcodGhpcy5fY2gpOiJbIj09PXRoaXMuX2NoPyh0aGlzLnByZXNlcnZlU2luZ2xlU3BhY2UociksdGhpcy5wcmludF9zdHJpbmcodGhpcy5fY2gpKToiPSI9PT10aGlzLl9jaD8odGhpcy5lYXRXaGl0ZXNwYWNlKCksdGhpcy5wcmludF9zdHJpbmcoIj0iKSxjLnRlc3QodGhpcy5fY2gpJiYodGhpcy5fY2g9IiIpKToiISIhPT10aGlzLl9jaHx8dGhpcy5faW5wdXQubG9va0JhY2soIlxcIik/KHRoaXMucHJlc2VydmVTaW5nbGVTcGFjZShyKSx0aGlzLnByaW50X3N0cmluZyh0aGlzLl9jaCkpOih0aGlzLnByaW50X3N0cmluZygiICIpLHRoaXMucHJpbnRfc3RyaW5nKHRoaXMuX2NoKSk6dGhpcy5fb3B0aW9ucy5zcGFjZV9hcm91bmRfY29tYmluYXRvcj8odGhpcy5fb3V0cHV0LnNwYWNlX2JlZm9yZV90b2tlbj0hMCx0aGlzLnByaW50X3N0cmluZyh0aGlzLl9jaCksdGhpcy5fb3V0cHV0LnNwYWNlX2JlZm9yZV90b2tlbj0hMCk6KHRoaXMucHJpbnRfc3RyaW5nKHRoaXMuX2NoKSx0aGlzLmVhdFdoaXRlc3BhY2UoKSx0aGlzLl9jaCYmYy50ZXN0KHRoaXMuX2NoKSYmKHRoaXMuX2NoPSIiKSk7cmV0dXJuIHRoaXMuX291dHB1dC5nZXRfY29kZSh0KX0sZS5leHBvcnRzLkJlYXV0aWZpZXI9cH0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPW4oNikuT3B0aW9ucztmdW5jdGlvbiBpKGUpe3IuY2FsbCh0aGlzLGUsImNzcyIpLHRoaXMuc2VsZWN0b3Jfc2VwYXJhdG9yX25ld2xpbmU9dGhpcy5fZ2V0X2Jvb2xlYW4oInNlbGVjdG9yX3NlcGFyYXRvcl9uZXdsaW5lIiwhMCksdGhpcy5uZXdsaW5lX2JldHdlZW5fcnVsZXM9dGhpcy5fZ2V0X2Jvb2xlYW4oIm5ld2xpbmVfYmV0d2Vlbl9ydWxlcyIsITApO3ZhciB0PXRoaXMuX2dldF9ib29sZWFuKCJzcGFjZV9hcm91bmRfc2VsZWN0b3Jfc2VwYXJhdG9yIik7dGhpcy5zcGFjZV9hcm91bmRfY29tYmluYXRvcj10aGlzLl9nZXRfYm9vbGVhbigic3BhY2VfYXJvdW5kX2NvbWJpbmF0b3IiKXx8dDt2YXIgbj10aGlzLl9nZXRfc2VsZWN0aW9uX2xpc3QoImJyYWNlX3N0eWxlIixbImNvbGxhcHNlIiwiZXhwYW5kIiwiZW5kLWV4cGFuZCIsIm5vbmUiLCJwcmVzZXJ2ZS1pbmxpbmUiXSk7dGhpcy5icmFjZV9zdHlsZT0iY29sbGFwc2UiO2Zvcih2YXIgaT0wO2k8bi5sZW5ndGg7aSsrKSJleHBhbmQiIT09bltpXT90aGlzLmJyYWNlX3N0eWxlPSJjb2xsYXBzZSI6dGhpcy5icmFjZV9zdHlsZT1uW2ldfWkucHJvdG90eXBlPW5ldyByLGUuZXhwb3J0cy5PcHRpb25zPWl9XSxpbz17fSxhbz1mdW5jdGlvbiBlKHQpe3ZhciBuPWlvW3RdO2lmKHZvaWQgMCE9PW4pcmV0dXJuIG4uZXhwb3J0czt2YXIgcj1pb1t0XT17ZXhwb3J0czp7fX07cmV0dXJuIHJvW3RdKHIsci5leHBvcnRzLGUpLHIuZXhwb3J0c30oMTUpO3ZhciBjbyxobyx1bz1hbztmdW5jdGlvbiBwbyhlLHQsbil7dmFyIHI9ZS5nZXRUZXh0KCksaT0hMCxhPTAsbz1uLnRhYlNpemV8fDQ7aWYodCl7Zm9yKHZhciBzPWUub2Zmc2V0QXQodC5zdGFydCksbD1zO2w+MCYmd28ocixsLTEpOylsLS07MD09PWx8fGJvKHIsbC0xKT9zPWw6bDxzJiYocz1sKzEpO2Zvcih2YXIgYz1lLm9mZnNldEF0KHQuZW5kKSxoPWM7aDxyLmxlbmd0aCYmd28ocixoKTspaCsrOyhoPT09ci5sZW5ndGh8fGJvKHIsaCkpJiYoYz1oKSx0PXJyLmNyZWF0ZShlLnBvc2l0aW9uQXQocyksZS5wb3NpdGlvbkF0KGMpKTt2YXIgZD1yLnN1YnN0cmluZygwLHMpO2lmKG5ldyBSZWdFeHAoLy4qWzxdW14+XSokLykudGVzdChkKSlyZXR1cm5be3JhbmdlOnQsbmV3VGV4dDpyPXIuc3Vic3RyaW5nKHMsYyl9XTtpZihpPWM9PT1yLmxlbmd0aCxyPXIuc3Vic3RyaW5nKHMsYyksMCE9PXMpe3ZhciB1PWUub2Zmc2V0QXQodHIuY3JlYXRlKHQuc3RhcnQubGluZSwwKSk7YT1mdW5jdGlvbihlLHQsbil7dmFyIHI9dCxpPTAsYT1uLnRhYlNpemV8fDQ7Zm9yKDtyPGUubGVuZ3RoOyl7dmFyIG89ZS5jaGFyQXQocik7aWYoIiAiPT09bylpKys7ZWxzZXtpZigiXHQiIT09bylicmVhaztpKz1hfXIrK31yZXR1cm4gTWF0aC5mbG9vcihpL2EpfShlLmdldFRleHQoKSx1LG4pfX1lbHNlIHQ9cnIuY3JlYXRlKHRyLmNyZWF0ZSgwLDApLGUucG9zaXRpb25BdChyLmxlbmd0aCkpO3ZhciBwPXtpbmRlbnRfc2l6ZTpvLGluZGVudF9jaGFyOm4uaW5zZXJ0U3BhY2VzPyIgIjoiXHQiLGluZGVudF9lbXB0eV9saW5lczptbyhuLCJpbmRlbnRFbXB0eUxpbmVzIiwhMSksd3JhcF9saW5lX2xlbmd0aDptbyhuLCJ3cmFwTGluZUxlbmd0aCIsMTIwKSx1bmZvcm1hdHRlZDpmbyhuLCJ1bmZvcm1hdHRlZCIsdm9pZCAwKSxjb250ZW50X3VuZm9ybWF0dGVkOmZvKG4sImNvbnRlbnRVbmZvcm1hdHRlZCIsdm9pZCAwKSxpbmRlbnRfaW5uZXJfaHRtbDptbyhuLCJpbmRlbnRJbm5lckh0bWwiLCExKSxwcmVzZXJ2ZV9uZXdsaW5lczptbyhuLCJwcmVzZXJ2ZU5ld0xpbmVzIiwhMCksbWF4X3ByZXNlcnZlX25ld2xpbmVzOm1vKG4sIm1heFByZXNlcnZlTmV3TGluZXMiLDMyNzg2KSxpbmRlbnRfaGFuZGxlYmFyczptbyhuLCJpbmRlbnRIYW5kbGViYXJzIiwhMSksZW5kX3dpdGhfbmV3bGluZTppJiZtbyhuLCJlbmRXaXRoTmV3bGluZSIsITEpLGV4dHJhX2xpbmVyczpmbyhuLCJleHRyYUxpbmVycyIsdm9pZCAwKSx3cmFwX2F0dHJpYnV0ZXM6bW8obiwid3JhcEF0dHJpYnV0ZXMiLCJhdXRvIiksd3JhcF9hdHRyaWJ1dGVzX2luZGVudF9zaXplOm1vKG4sIndyYXBBdHRyaWJ1dGVzSW5kZW50U2l6ZSIsdm9pZCAwKSxlb2w6IlxuIixpbmRlbnRfc2NyaXB0czptbyhuLCJpbmRlbnRTY3JpcHRzIiwibm9ybWFsIiksdGVtcGxhdGluZzpnbyhuLCJhbGwiKSx1bmZvcm1hdHRlZF9jb250ZW50X2RlbGltaXRlcjptbyhuLCJ1bmZvcm1hdHRlZENvbnRlbnREZWxpbWl0ZXIiLCIiKX0sbT1mdW5jdGlvbihlLHQpe3JldHVybiBjbyhlLHQsbG8sdW8pfShyLnJlcGxhY2UoL15ccysvLCIiKSxwKTtpZihhPjApe3ZhciBmPW4uaW5zZXJ0U3BhY2VzP05hKCIgIixvKmEpOk5hKCJcdCIsYSk7bT1tLnNwbGl0KCJcbiIpLmpvaW4oIlxuIitmKSwwPT09dC5zdGFydC5jaGFyYWN0ZXImJihtPWYrbSl9cmV0dXJuW3tyYW5nZTp0LG5ld1RleHQ6bX1dfWZ1bmN0aW9uIG1vKGUsdCxuKXtpZihlJiZlLmhhc093blByb3BlcnR5KHQpKXt2YXIgcj1lW3RdO2lmKG51bGwhPT1yKXJldHVybiByfXJldHVybiBufWZ1bmN0aW9uIGZvKGUsdCxuKXt2YXIgcj1tbyhlLHQsbnVsbCk7cmV0dXJuInN0cmluZyI9PXR5cGVvZiByP3IubGVuZ3RoPjA/ci5zcGxpdCgiLCIpLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIGUudHJpbSgpLnRvTG93ZXJDYXNlKCl9KSk6W106bn1mdW5jdGlvbiBnbyhlLHQpe3JldHVybiEwPT09bW8oZSwidGVtcGxhdGluZyIsdCk/WyJhdXRvIl06WyJub25lIl19ZnVuY3Rpb24gYm8oZSx0KXtyZXR1cm4tMSE9PSJcclxuIi5pbmRleE9mKGUuY2hhckF0KHQpKX1mdW5jdGlvbiB3byhlLHQpe3JldHVybi0xIT09IiBcdCIuaW5kZXhPZihlLmNoYXJBdCh0KSl9IWZ1bmN0aW9uKCl7dmFyIGU9WywsZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChlKXt0aGlzLl9fcGFyZW50PWUsdGhpcy5fX2NoYXJhY3Rlcl9jb3VudD0wLHRoaXMuX19pbmRlbnRfY291bnQ9LTEsdGhpcy5fX2FsaWdubWVudF9jb3VudD0wLHRoaXMuX193cmFwX3BvaW50X2luZGV4PTAsdGhpcy5fX3dyYXBfcG9pbnRfY2hhcmFjdGVyX2NvdW50PTAsdGhpcy5fX3dyYXBfcG9pbnRfaW5kZW50X2NvdW50PS0xLHRoaXMuX193cmFwX3BvaW50X2FsaWdubWVudF9jb3VudD0wLHRoaXMuX19pdGVtcz1bXX1mdW5jdGlvbiBuKGUsdCl7dGhpcy5fX2NhY2hlPVsiIl0sdGhpcy5fX2luZGVudF9zaXplPWUuaW5kZW50X3NpemUsdGhpcy5fX2luZGVudF9zdHJpbmc9ZS5pbmRlbnRfY2hhcixlLmluZGVudF93aXRoX3RhYnN8fCh0aGlzLl9faW5kZW50X3N0cmluZz1uZXcgQXJyYXkoZS5pbmRlbnRfc2l6ZSsxKS5qb2luKGUuaW5kZW50X2NoYXIpKSx0PXR8fCIiLGUuaW5kZW50X2xldmVsPjAmJih0PW5ldyBBcnJheShlLmluZGVudF9sZXZlbCsxKS5qb2luKHRoaXMuX19pbmRlbnRfc3RyaW5nKSksdGhpcy5fX2Jhc2Vfc3RyaW5nPXQsdGhpcy5fX2Jhc2Vfc3RyaW5nX2xlbmd0aD10Lmxlbmd0aH1mdW5jdGlvbiByKGUscil7dGhpcy5fX2luZGVudF9jYWNoZT1uZXcgbihlLHIpLHRoaXMucmF3PSExLHRoaXMuX2VuZF93aXRoX25ld2xpbmU9ZS5lbmRfd2l0aF9uZXdsaW5lLHRoaXMuaW5kZW50X3NpemU9ZS5pbmRlbnRfc2l6ZSx0aGlzLndyYXBfbGluZV9sZW5ndGg9ZS53cmFwX2xpbmVfbGVuZ3RoLHRoaXMuaW5kZW50X2VtcHR5X2xpbmVzPWUuaW5kZW50X2VtcHR5X2xpbmVzLHRoaXMuX19saW5lcz1bXSx0aGlzLnByZXZpb3VzX2xpbmU9bnVsbCx0aGlzLmN1cnJlbnRfbGluZT1udWxsLHRoaXMubmV4dF9saW5lPW5ldyB0KHRoaXMpLHRoaXMuc3BhY2VfYmVmb3JlX3Rva2VuPSExLHRoaXMubm9uX2JyZWFraW5nX3NwYWNlPSExLHRoaXMucHJldmlvdXNfdG9rZW5fd3JhcHBlZD0hMSx0aGlzLl9fYWRkX291dHB1dGxpbmUoKX10LnByb3RvdHlwZS5jbG9uZV9lbXB0eT1mdW5jdGlvbigpe3ZhciBlPW5ldyB0KHRoaXMuX19wYXJlbnQpO3JldHVybiBlLnNldF9pbmRlbnQodGhpcy5fX2luZGVudF9jb3VudCx0aGlzLl9fYWxpZ25tZW50X2NvdW50KSxlfSx0LnByb3RvdHlwZS5pdGVtPWZ1bmN0aW9uKGUpe3JldHVybiBlPDA/dGhpcy5fX2l0ZW1zW3RoaXMuX19pdGVtcy5sZW5ndGgrZV06dGhpcy5fX2l0ZW1zW2VdfSx0LnByb3RvdHlwZS5oYXNfbWF0Y2g9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PXRoaXMuX19pdGVtcy5sZW5ndGgtMTt0Pj0wO3QtLSlpZih0aGlzLl9faXRlbXNbdF0ubWF0Y2goZSkpcmV0dXJuITA7cmV0dXJuITF9LHQucHJvdG90eXBlLnNldF9pbmRlbnQ9ZnVuY3Rpb24oZSx0KXt0aGlzLmlzX2VtcHR5KCkmJih0aGlzLl9faW5kZW50X2NvdW50PWV8fDAsdGhpcy5fX2FsaWdubWVudF9jb3VudD10fHwwLHRoaXMuX19jaGFyYWN0ZXJfY291bnQ9dGhpcy5fX3BhcmVudC5nZXRfaW5kZW50X3NpemUodGhpcy5fX2luZGVudF9jb3VudCx0aGlzLl9fYWxpZ25tZW50X2NvdW50KSl9LHQucHJvdG90eXBlLl9zZXRfd3JhcF9wb2ludD1mdW5jdGlvbigpe3RoaXMuX19wYXJlbnQud3JhcF9saW5lX2xlbmd0aCYmKHRoaXMuX193cmFwX3BvaW50X2luZGV4PXRoaXMuX19pdGVtcy5sZW5ndGgsdGhpcy5fX3dyYXBfcG9pbnRfY2hhcmFjdGVyX2NvdW50PXRoaXMuX19jaGFyYWN0ZXJfY291bnQsdGhpcy5fX3dyYXBfcG9pbnRfaW5kZW50X2NvdW50PXRoaXMuX19wYXJlbnQubmV4dF9saW5lLl9faW5kZW50X2NvdW50LHRoaXMuX193cmFwX3BvaW50X2FsaWdubWVudF9jb3VudD10aGlzLl9fcGFyZW50Lm5leHRfbGluZS5fX2FsaWdubWVudF9jb3VudCl9LHQucHJvdG90eXBlLl9zaG91bGRfd3JhcD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9fd3JhcF9wb2ludF9pbmRleCYmdGhpcy5fX2NoYXJhY3Rlcl9jb3VudD50aGlzLl9fcGFyZW50LndyYXBfbGluZV9sZW5ndGgmJnRoaXMuX193cmFwX3BvaW50X2NoYXJhY3Rlcl9jb3VudD50aGlzLl9fcGFyZW50Lm5leHRfbGluZS5fX2NoYXJhY3Rlcl9jb3VudH0sdC5wcm90b3R5cGUuX2FsbG93X3dyYXA9ZnVuY3Rpb24oKXtpZih0aGlzLl9zaG91bGRfd3JhcCgpKXt0aGlzLl9fcGFyZW50LmFkZF9uZXdfbGluZSgpO3ZhciBlPXRoaXMuX19wYXJlbnQuY3VycmVudF9saW5lO3JldHVybiBlLnNldF9pbmRlbnQodGhpcy5fX3dyYXBfcG9pbnRfaW5kZW50X2NvdW50LHRoaXMuX193cmFwX3BvaW50X2FsaWdubWVudF9jb3VudCksZS5fX2l0ZW1zPXRoaXMuX19pdGVtcy5zbGljZSh0aGlzLl9fd3JhcF9wb2ludF9pbmRleCksdGhpcy5fX2l0ZW1zPXRoaXMuX19pdGVtcy5zbGljZSgwLHRoaXMuX193cmFwX3BvaW50X2luZGV4KSxlLl9fY2hhcmFjdGVyX2NvdW50Kz10aGlzLl9fY2hhcmFjdGVyX2NvdW50LXRoaXMuX193cmFwX3BvaW50X2NoYXJhY3Rlcl9jb3VudCx0aGlzLl9fY2hhcmFjdGVyX2NvdW50PXRoaXMuX193cmFwX3BvaW50X2NoYXJhY3Rlcl9jb3VudCwiICI9PT1lLl9faXRlbXNbMF0mJihlLl9faXRlbXMuc3BsaWNlKDAsMSksZS5fX2NoYXJhY3Rlcl9jb3VudC09MSksITB9cmV0dXJuITF9LHQucHJvdG90eXBlLmlzX2VtcHR5PWZ1bmN0aW9uKCl7cmV0dXJuIDA9PT10aGlzLl9faXRlbXMubGVuZ3RofSx0LnByb3RvdHlwZS5sYXN0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaXNfZW1wdHkoKT9udWxsOnRoaXMuX19pdGVtc1t0aGlzLl9faXRlbXMubGVuZ3RoLTFdfSx0LnByb3RvdHlwZS5wdXNoPWZ1bmN0aW9uKGUpe3RoaXMuX19pdGVtcy5wdXNoKGUpO3ZhciB0PWUubGFzdEluZGV4T2YoIlxuIik7LTEhPT10P3RoaXMuX19jaGFyYWN0ZXJfY291bnQ9ZS5sZW5ndGgtdDp0aGlzLl9fY2hhcmFjdGVyX2NvdW50Kz1lLmxlbmd0aH0sdC5wcm90b3R5cGUucG9wPWZ1bmN0aW9uKCl7dmFyIGU9bnVsbDtyZXR1cm4gdGhpcy5pc19lbXB0eSgpfHwoZT10aGlzLl9faXRlbXMucG9wKCksdGhpcy5fX2NoYXJhY3Rlcl9jb3VudC09ZS5sZW5ndGgpLGV9LHQucHJvdG90eXBlLl9yZW1vdmVfaW5kZW50PWZ1bmN0aW9uKCl7dGhpcy5fX2luZGVudF9jb3VudD4wJiYodGhpcy5fX2luZGVudF9jb3VudC09MSx0aGlzLl9fY2hhcmFjdGVyX2NvdW50LT10aGlzLl9fcGFyZW50LmluZGVudF9zaXplKX0sdC5wcm90b3R5cGUuX3JlbW92ZV93cmFwX2luZGVudD1mdW5jdGlvbigpe3RoaXMuX193cmFwX3BvaW50X2luZGVudF9jb3VudD4wJiYodGhpcy5fX3dyYXBfcG9pbnRfaW5kZW50X2NvdW50LT0xKX0sdC5wcm90b3R5cGUudHJpbT1mdW5jdGlvbigpe2Zvcig7IiAiPT09dGhpcy5sYXN0KCk7KXRoaXMuX19pdGVtcy5wb3AoKSx0aGlzLl9fY2hhcmFjdGVyX2NvdW50LT0xfSx0LnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3ZhciBlPSIiO3JldHVybiB0aGlzLmlzX2VtcHR5KCk/dGhpcy5fX3BhcmVudC5pbmRlbnRfZW1wdHlfbGluZXMmJihlPXRoaXMuX19wYXJlbnQuZ2V0X2luZGVudF9zdHJpbmcodGhpcy5fX2luZGVudF9jb3VudCkpOihlPXRoaXMuX19wYXJlbnQuZ2V0X2luZGVudF9zdHJpbmcodGhpcy5fX2luZGVudF9jb3VudCx0aGlzLl9fYWxpZ25tZW50X2NvdW50KSxlKz10aGlzLl9faXRlbXMuam9pbigiIikpLGV9LG4ucHJvdG90eXBlLmdldF9pbmRlbnRfc2l6ZT1mdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMuX19iYXNlX3N0cmluZ19sZW5ndGg7cmV0dXJuIHQ9dHx8MCxlPDAmJihuPTApLG4rPWUqdGhpcy5fX2luZGVudF9zaXplLG4rPXR9LG4ucHJvdG90eXBlLmdldF9pbmRlbnRfc3RyaW5nPWZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy5fX2Jhc2Vfc3RyaW5nO3JldHVybiB0PXR8fDAsZTwwJiYoZT0wLG49IiIpLHQrPWUqdGhpcy5fX2luZGVudF9zaXplLHRoaXMuX19lbnN1cmVfY2FjaGUodCksbis9dGhpcy5fX2NhY2hlW3RdfSxuLnByb3RvdHlwZS5fX2Vuc3VyZV9jYWNoZT1mdW5jdGlvbihlKXtmb3IoO2U+PXRoaXMuX19jYWNoZS5sZW5ndGg7KXRoaXMuX19hZGRfY29sdW1uKCl9LG4ucHJvdG90eXBlLl9fYWRkX2NvbHVtbj1mdW5jdGlvbigpe3ZhciBlPXRoaXMuX19jYWNoZS5sZW5ndGgsdD0wLG49IiI7dGhpcy5fX2luZGVudF9zaXplJiZlPj10aGlzLl9faW5kZW50X3NpemUmJihlLT0odD1NYXRoLmZsb29yKGUvdGhpcy5fX2luZGVudF9zaXplKSkqdGhpcy5fX2luZGVudF9zaXplLG49bmV3IEFycmF5KHQrMSkuam9pbih0aGlzLl9faW5kZW50X3N0cmluZykpLGUmJihuKz1uZXcgQXJyYXkoZSsxKS5qb2luKCIgIikpLHRoaXMuX19jYWNoZS5wdXNoKG4pfSxyLnByb3RvdHlwZS5fX2FkZF9vdXRwdXRsaW5lPWZ1bmN0aW9uKCl7dGhpcy5wcmV2aW91c19saW5lPXRoaXMuY3VycmVudF9saW5lLHRoaXMuY3VycmVudF9saW5lPXRoaXMubmV4dF9saW5lLmNsb25lX2VtcHR5KCksdGhpcy5fX2xpbmVzLnB1c2godGhpcy5jdXJyZW50X2xpbmUpfSxyLnByb3RvdHlwZS5nZXRfbGluZV9udW1iZXI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fX2xpbmVzLmxlbmd0aH0sci5wcm90b3R5cGUuZ2V0X2luZGVudF9zdHJpbmc9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5fX2luZGVudF9jYWNoZS5nZXRfaW5kZW50X3N0cmluZyhlLHQpfSxyLnByb3RvdHlwZS5nZXRfaW5kZW50X3NpemU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5fX2luZGVudF9jYWNoZS5nZXRfaW5kZW50X3NpemUoZSx0KX0sci5wcm90b3R5cGUuaXNfZW1wdHk9ZnVuY3Rpb24oKXtyZXR1cm4hdGhpcy5wcmV2aW91c19saW5lJiZ0aGlzLmN1cnJlbnRfbGluZS5pc19lbXB0eSgpfSxyLnByb3RvdHlwZS5hZGRfbmV3X2xpbmU9ZnVuY3Rpb24oZSl7cmV0dXJuISh0aGlzLmlzX2VtcHR5KCl8fCFlJiZ0aGlzLmp1c3RfYWRkZWRfbmV3bGluZSgpKSYmKHRoaXMucmF3fHx0aGlzLl9fYWRkX291dHB1dGxpbmUoKSwhMCl9LHIucHJvdG90eXBlLmdldF9jb2RlPWZ1bmN0aW9uKGUpe3RoaXMudHJpbSghMCk7dmFyIHQ9dGhpcy5jdXJyZW50X2xpbmUucG9wKCk7dCYmKCJcbiI9PT10W3QubGVuZ3RoLTFdJiYodD10LnJlcGxhY2UoL1xuKyQvZywiIikpLHRoaXMuY3VycmVudF9saW5lLnB1c2godCkpLHRoaXMuX2VuZF93aXRoX25ld2xpbmUmJnRoaXMuX19hZGRfb3V0cHV0bGluZSgpO3ZhciBuPXRoaXMuX19saW5lcy5qb2luKCJcbiIpO3JldHVybiJcbiIhPT1lJiYobj1uLnJlcGxhY2UoL1tcbl0vZyxlKSksbn0sci5wcm90b3R5cGUuc2V0X3dyYXBfcG9pbnQ9ZnVuY3Rpb24oKXt0aGlzLmN1cnJlbnRfbGluZS5fc2V0X3dyYXBfcG9pbnQoKX0sci5wcm90b3R5cGUuc2V0X2luZGVudD1mdW5jdGlvbihlLHQpe3JldHVybiBlPWV8fDAsdD10fHwwLHRoaXMubmV4dF9saW5lLnNldF9pbmRlbnQoZSx0KSx0aGlzLl9fbGluZXMubGVuZ3RoPjE/KHRoaXMuY3VycmVudF9saW5lLnNldF9pbmRlbnQoZSx0KSwhMCk6KHRoaXMuY3VycmVudF9saW5lLnNldF9pbmRlbnQoKSwhMSl9LHIucHJvdG90eXBlLmFkZF9yYXdfdG9rZW49ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTA7dDxlLm5ld2xpbmVzO3QrKyl0aGlzLl9fYWRkX291dHB1dGxpbmUoKTt0aGlzLmN1cnJlbnRfbGluZS5zZXRfaW5kZW50KC0xKSx0aGlzLmN1cnJlbnRfbGluZS5wdXNoKGUud2hpdGVzcGFjZV9iZWZvcmUpLHRoaXMuY3VycmVudF9saW5lLnB1c2goZS50ZXh0KSx0aGlzLnNwYWNlX2JlZm9yZV90b2tlbj0hMSx0aGlzLm5vbl9icmVha2luZ19zcGFjZT0hMSx0aGlzLnByZXZpb3VzX3Rva2VuX3dyYXBwZWQ9ITF9LHIucHJvdG90eXBlLmFkZF90b2tlbj1mdW5jdGlvbihlKXt0aGlzLl9fYWRkX3NwYWNlX2JlZm9yZV90b2tlbigpLHRoaXMuY3VycmVudF9saW5lLnB1c2goZSksdGhpcy5zcGFjZV9iZWZvcmVfdG9rZW49ITEsdGhpcy5ub25fYnJlYWtpbmdfc3BhY2U9ITEsdGhpcy5wcmV2aW91c190b2tlbl93cmFwcGVkPXRoaXMuY3VycmVudF9saW5lLl9hbGxvd193cmFwKCl9LHIucHJvdG90eXBlLl9fYWRkX3NwYWNlX2JlZm9yZV90b2tlbj1mdW5jdGlvbigpe3RoaXMuc3BhY2VfYmVmb3JlX3Rva2VuJiYhdGhpcy5qdXN0X2FkZGVkX25ld2xpbmUoKSYmKHRoaXMubm9uX2JyZWFraW5nX3NwYWNlfHx0aGlzLnNldF93cmFwX3BvaW50KCksdGhpcy5jdXJyZW50X2xpbmUucHVzaCgiICIpKX0sci5wcm90b3R5cGUucmVtb3ZlX2luZGVudD1mdW5jdGlvbihlKXtmb3IodmFyIHQ9dGhpcy5fX2xpbmVzLmxlbmd0aDtlPHQ7KXRoaXMuX19saW5lc1tlXS5fcmVtb3ZlX2luZGVudCgpLGUrKzt0aGlzLmN1cnJlbnRfbGluZS5fcmVtb3ZlX3dyYXBfaW5kZW50KCl9LHIucHJvdG90eXBlLnRyaW09ZnVuY3Rpb24oZSl7Zm9yKGU9dm9pZCAwIT09ZSYmZSx0aGlzLmN1cnJlbnRfbGluZS50cmltKCk7ZSYmdGhpcy5fX2xpbmVzLmxlbmd0aD4xJiZ0aGlzLmN1cnJlbnRfbGluZS5pc19lbXB0eSgpOyl0aGlzLl9fbGluZXMucG9wKCksdGhpcy5jdXJyZW50X2xpbmU9dGhpcy5fX2xpbmVzW3RoaXMuX19saW5lcy5sZW5ndGgtMV0sdGhpcy5jdXJyZW50X2xpbmUudHJpbSgpO3RoaXMucHJldmlvdXNfbGluZT10aGlzLl9fbGluZXMubGVuZ3RoPjE/dGhpcy5fX2xpbmVzW3RoaXMuX19saW5lcy5sZW5ndGgtMl06bnVsbH0sci5wcm90b3R5cGUuanVzdF9hZGRlZF9uZXdsaW5lPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY3VycmVudF9saW5lLmlzX2VtcHR5KCl9LHIucHJvdG90eXBlLmp1c3RfYWRkZWRfYmxhbmtsaW5lPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaXNfZW1wdHkoKXx8dGhpcy5jdXJyZW50X2xpbmUuaXNfZW1wdHkoKSYmdGhpcy5wcmV2aW91c19saW5lLmlzX2VtcHR5KCl9LHIucHJvdG90eXBlLmVuc3VyZV9lbXB0eV9saW5lX2Fib3ZlPWZ1bmN0aW9uKGUsbil7Zm9yKHZhciByPXRoaXMuX19saW5lcy5sZW5ndGgtMjtyPj0wOyl7dmFyIGk9dGhpcy5fX2xpbmVzW3JdO2lmKGkuaXNfZW1wdHkoKSlicmVhaztpZigwIT09aS5pdGVtKDApLmluZGV4T2YoZSkmJmkuaXRlbSgtMSkhPT1uKXt0aGlzLl9fbGluZXMuc3BsaWNlKHIrMSwwLG5ldyB0KHRoaXMpKSx0aGlzLnByZXZpb3VzX2xpbmU9dGhpcy5fX2xpbmVzW3RoaXMuX19saW5lcy5sZW5ndGgtMl07YnJlYWt9ci0tfX0sZS5leHBvcnRzLk91dHB1dD1yfSxmdW5jdGlvbihlKXtlLmV4cG9ydHMuVG9rZW49ZnVuY3Rpb24oZSx0LG4scil7dGhpcy50eXBlPWUsdGhpcy50ZXh0PXQsdGhpcy5jb21tZW50c19iZWZvcmU9bnVsbCx0aGlzLm5ld2xpbmVzPW58fDAsdGhpcy53aGl0ZXNwYWNlX2JlZm9yZT1yfHwiIix0aGlzLnBhcmVudD1udWxsLHRoaXMubmV4dD1udWxsLHRoaXMucHJldmlvdXM9bnVsbCx0aGlzLm9wZW5lZD1udWxsLHRoaXMuY2xvc2VkPW51bGwsdGhpcy5kaXJlY3RpdmVzPW51bGx9fSwsLGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoZSx0KXt0aGlzLnJhd19vcHRpb25zPW4oZSx0KSx0aGlzLmRpc2FibGVkPXRoaXMuX2dldF9ib29sZWFuKCJkaXNhYmxlZCIpLHRoaXMuZW9sPXRoaXMuX2dldF9jaGFyYWN0ZXJzKCJlb2wiLCJhdXRvIiksdGhpcy5lbmRfd2l0aF9uZXdsaW5lPXRoaXMuX2dldF9ib29sZWFuKCJlbmRfd2l0aF9uZXdsaW5lIiksdGhpcy5pbmRlbnRfc2l6ZT10aGlzLl9nZXRfbnVtYmVyKCJpbmRlbnRfc2l6ZSIsNCksdGhpcy5pbmRlbnRfY2hhcj10aGlzLl9nZXRfY2hhcmFjdGVycygiaW5kZW50X2NoYXIiLCIgIiksdGhpcy5pbmRlbnRfbGV2ZWw9dGhpcy5fZ2V0X251bWJlcigiaW5kZW50X2xldmVsIiksdGhpcy5wcmVzZXJ2ZV9uZXdsaW5lcz10aGlzLl9nZXRfYm9vbGVhbigicHJlc2VydmVfbmV3bGluZXMiLCEwKSx0aGlzLm1heF9wcmVzZXJ2ZV9uZXdsaW5lcz10aGlzLl9nZXRfbnVtYmVyKCJtYXhfcHJlc2VydmVfbmV3bGluZXMiLDMyNzg2KSx0aGlzLnByZXNlcnZlX25ld2xpbmVzfHwodGhpcy5tYXhfcHJlc2VydmVfbmV3bGluZXM9MCksdGhpcy5pbmRlbnRfd2l0aF90YWJzPXRoaXMuX2dldF9ib29sZWFuKCJpbmRlbnRfd2l0aF90YWJzIiwiXHQiPT09dGhpcy5pbmRlbnRfY2hhciksdGhpcy5pbmRlbnRfd2l0aF90YWJzJiYodGhpcy5pbmRlbnRfY2hhcj0iXHQiLDE9PT10aGlzLmluZGVudF9zaXplJiYodGhpcy5pbmRlbnRfc2l6ZT00KSksdGhpcy53cmFwX2xpbmVfbGVuZ3RoPXRoaXMuX2dldF9udW1iZXIoIndyYXBfbGluZV9sZW5ndGgiLHRoaXMuX2dldF9udW1iZXIoIm1heF9jaGFyIikpLHRoaXMuaW5kZW50X2VtcHR5X2xpbmVzPXRoaXMuX2dldF9ib29sZWFuKCJpbmRlbnRfZW1wdHlfbGluZXMiKSx0aGlzLnRlbXBsYXRpbmc9dGhpcy5fZ2V0X3NlbGVjdGlvbl9saXN0KCJ0ZW1wbGF0aW5nIixbImF1dG8iLCJub25lIiwiZGphbmdvIiwiZXJiIiwiaGFuZGxlYmFycyIsInBocCIsInNtYXJ0eSJdLFsiYXV0byJdKX1mdW5jdGlvbiBuKGUsdCl7dmFyIG4saT17fTtmb3IobiBpbiBlPXIoZSkpbiE9PXQmJihpW25dPWVbbl0pO2lmKHQmJmVbdF0pZm9yKG4gaW4gZVt0XSlpW25dPWVbdF1bbl07cmV0dXJuIGl9ZnVuY3Rpb24gcihlKXt2YXIgdCxuPXt9O2Zvcih0IGluIGUpe25bdC5yZXBsYWNlKC8tL2csIl8iKV09ZVt0XX1yZXR1cm4gbn10LnByb3RvdHlwZS5fZ2V0X2FycmF5PWZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy5yYXdfb3B0aW9uc1tlXSxyPXR8fFtdO3JldHVybiJvYmplY3QiPT10eXBlb2Ygbj9udWxsIT09biYmImZ1bmN0aW9uIj09dHlwZW9mIG4uY29uY2F0JiYocj1uLmNvbmNhdCgpKToic3RyaW5nIj09dHlwZW9mIG4mJihyPW4uc3BsaXQoL1teYS16QS1aMC05X1wvXC1dKy8pKSxyfSx0LnByb3RvdHlwZS5fZ2V0X2Jvb2xlYW49ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLnJhd19vcHRpb25zW2VdO3JldHVybiB2b2lkIDA9PT1uPyEhdDohIW59LHQucHJvdG90eXBlLl9nZXRfY2hhcmFjdGVycz1mdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMucmF3X29wdGlvbnNbZV0scj10fHwiIjtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIG4mJihyPW4ucmVwbGFjZSgvXFxyLywiXHIiKS5yZXBsYWNlKC9cXG4vLCJcbiIpLnJlcGxhY2UoL1xcdC8sIlx0IikpLHJ9LHQucHJvdG90eXBlLl9nZXRfbnVtYmVyPWZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy5yYXdfb3B0aW9uc1tlXTt0PXBhcnNlSW50KHQsMTApLGlzTmFOKHQpJiYodD0wKTt2YXIgcj1wYXJzZUludChuLDEwKTtyZXR1cm4gaXNOYU4ocikmJihyPXQpLHJ9LHQucHJvdG90eXBlLl9nZXRfc2VsZWN0aW9uPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzLl9nZXRfc2VsZWN0aW9uX2xpc3QoZSx0LG4pO2lmKDEhPT1yLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgT3B0aW9uIFZhbHVlOiBUaGUgb3B0aW9uICciK2UrIicgY2FuIG9ubHkgYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOlxuIit0KyJcbllvdSBwYXNzZWQgaW46ICciK3RoaXMucmF3X29wdGlvbnNbZV0rIiciKTtyZXR1cm4gclswXX0sdC5wcm90b3R5cGUuX2dldF9zZWxlY3Rpb25fbGlzdD1mdW5jdGlvbihlLHQsbil7aWYoIXR8fDA9PT10Lmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoIlNlbGVjdGlvbiBsaXN0IGNhbm5vdCBiZSBlbXB0eS4iKTtpZihuPW58fFt0WzBdXSwhdGhpcy5faXNfdmFsaWRfc2VsZWN0aW9uKG4sdCkpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIERlZmF1bHQgVmFsdWUhIik7dmFyIHI9dGhpcy5fZ2V0X2FycmF5KGUsbik7aWYoIXRoaXMuX2lzX3ZhbGlkX3NlbGVjdGlvbihyLHQpKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBPcHRpb24gVmFsdWU6IFRoZSBvcHRpb24gJyIrZSsiJyBjYW4gY29udGFpbiBvbmx5IHRoZSBmb2xsb3dpbmcgdmFsdWVzOlxuIit0KyJcbllvdSBwYXNzZWQgaW46ICciK3RoaXMucmF3X29wdGlvbnNbZV0rIiciKTtyZXR1cm4gcn0sdC5wcm90b3R5cGUuX2lzX3ZhbGlkX3NlbGVjdGlvbj1mdW5jdGlvbihlLHQpe3JldHVybiBlLmxlbmd0aCYmdC5sZW5ndGgmJiFlLnNvbWUoKGZ1bmN0aW9uKGUpe3JldHVybi0xPT09dC5pbmRleE9mKGUpfSkpfSxlLmV4cG9ydHMuT3B0aW9ucz10LGUuZXhwb3J0cy5ub3JtYWxpemVPcHRzPXIsZS5leHBvcnRzLm1lcmdlT3B0cz1ufSwsZnVuY3Rpb24oZSl7dmFyIHQ9UmVnRXhwLnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSgic3RpY2t5Iik7ZnVuY3Rpb24gbihlKXt0aGlzLl9faW5wdXQ9ZXx8IiIsdGhpcy5fX2lucHV0X2xlbmd0aD10aGlzLl9faW5wdXQubGVuZ3RoLHRoaXMuX19wb3NpdGlvbj0wfW4ucHJvdG90eXBlLnJlc3RhcnQ9ZnVuY3Rpb24oKXt0aGlzLl9fcG9zaXRpb249MH0sbi5wcm90b3R5cGUuYmFjaz1mdW5jdGlvbigpe3RoaXMuX19wb3NpdGlvbj4wJiYodGhpcy5fX3Bvc2l0aW9uLT0xKX0sbi5wcm90b3R5cGUuaGFzTmV4dD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9fcG9zaXRpb248dGhpcy5fX2lucHV0X2xlbmd0aH0sbi5wcm90b3R5cGUubmV4dD1mdW5jdGlvbigpe3ZhciBlPW51bGw7cmV0dXJuIHRoaXMuaGFzTmV4dCgpJiYoZT10aGlzLl9faW5wdXQuY2hhckF0KHRoaXMuX19wb3NpdGlvbiksdGhpcy5fX3Bvc2l0aW9uKz0xKSxlfSxuLnByb3RvdHlwZS5wZWVrPWZ1bmN0aW9uKGUpe3ZhciB0PW51bGw7cmV0dXJuIGU9ZXx8MCwoZSs9dGhpcy5fX3Bvc2l0aW9uKT49MCYmZTx0aGlzLl9faW5wdXRfbGVuZ3RoJiYodD10aGlzLl9faW5wdXQuY2hhckF0KGUpKSx0fSxuLnByb3RvdHlwZS5fX21hdGNoPWZ1bmN0aW9uKGUsbil7ZS5sYXN0SW5kZXg9bjt2YXIgcj1lLmV4ZWModGhpcy5fX2lucHV0KTtyZXR1cm4hcnx8dCYmZS5zdGlja3l8fHIuaW5kZXghPT1uJiYocj1udWxsKSxyfSxuLnByb3RvdHlwZS50ZXN0PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQ9dHx8MCwodCs9dGhpcy5fX3Bvc2l0aW9uKT49MCYmdDx0aGlzLl9faW5wdXRfbGVuZ3RoJiYhIXRoaXMuX19tYXRjaChlLHQpfSxuLnByb3RvdHlwZS50ZXN0Q2hhcj1mdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMucGVlayh0KTtyZXR1cm4gZS5sYXN0SW5kZXg9MCxudWxsIT09biYmZS50ZXN0KG4pfSxuLnByb3RvdHlwZS5tYXRjaD1mdW5jdGlvbihlKXt2YXIgdD10aGlzLl9fbWF0Y2goZSx0aGlzLl9fcG9zaXRpb24pO3JldHVybiB0P3RoaXMuX19wb3NpdGlvbis9dFswXS5sZW5ndGg6dD1udWxsLHR9LG4ucHJvdG90eXBlLnJlYWQ9ZnVuY3Rpb24oZSx0LG4pe3ZhciByLGk9IiI7cmV0dXJuIGUmJihyPXRoaXMubWF0Y2goZSkpJiYoaSs9clswXSksIXR8fCFyJiZlfHwoaSs9dGhpcy5yZWFkVW50aWwodCxuKSksaX0sbi5wcm90b3R5cGUucmVhZFVudGlsPWZ1bmN0aW9uKGUsdCl7dmFyIG4scj10aGlzLl9fcG9zaXRpb247ZS5sYXN0SW5kZXg9dGhpcy5fX3Bvc2l0aW9uO3ZhciBpPWUuZXhlYyh0aGlzLl9faW5wdXQpO3JldHVybiBpPyhyPWkuaW5kZXgsdCYmKHIrPWlbMF0ubGVuZ3RoKSk6cj10aGlzLl9faW5wdXRfbGVuZ3RoLG49dGhpcy5fX2lucHV0LnN1YnN0cmluZyh0aGlzLl9fcG9zaXRpb24sciksdGhpcy5fX3Bvc2l0aW9uPXIsbn0sbi5wcm90b3R5cGUucmVhZFVudGlsQWZ0ZXI9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMucmVhZFVudGlsKGUsITApfSxuLnByb3RvdHlwZS5nZXRfcmVnZXhwPWZ1bmN0aW9uKGUsbil7dmFyIHI9bnVsbCxpPSJnIjtyZXR1cm4gbiYmdCYmKGk9InkiKSwic3RyaW5nIj09dHlwZW9mIGUmJiIiIT09ZT9yPW5ldyBSZWdFeHAoZSxpKTplJiYocj1uZXcgUmVnRXhwKGUuc291cmNlLGkpKSxyfSxuLnByb3RvdHlwZS5nZXRfbGl0ZXJhbF9yZWdleHA9ZnVuY3Rpb24oZSl7cmV0dXJuIFJlZ0V4cChlLnJlcGxhY2UoL1stXC9cXF4kKis/LigpfFtcXXt9XS9nLCJcXCQmIikpfSxuLnByb3RvdHlwZS5wZWVrVW50aWxBZnRlcj1mdW5jdGlvbihlKXt2YXIgdD10aGlzLl9fcG9zaXRpb24sbj10aGlzLnJlYWRVbnRpbEFmdGVyKGUpO3JldHVybiB0aGlzLl9fcG9zaXRpb249dCxufSxuLnByb3RvdHlwZS5sb29rQmFjaz1mdW5jdGlvbihlKXt2YXIgdD10aGlzLl9fcG9zaXRpb24tMTtyZXR1cm4gdD49ZS5sZW5ndGgmJnRoaXMuX19pbnB1dC5zdWJzdHJpbmcodC1lLmxlbmd0aCx0KS50b0xvd2VyQ2FzZSgpPT09ZX0sZS5leHBvcnRzLklucHV0U2Nhbm5lcj1ufSxmdW5jdGlvbihlLHQsbil7dmFyIHI9big4KS5JbnB1dFNjYW5uZXIsaT1uKDMpLlRva2VuLGE9bigxMCkuVG9rZW5TdHJlYW0sbz1uKDExKS5XaGl0ZXNwYWNlUGF0dGVybixzPXtTVEFSVDoiVEtfU1RBUlQiLFJBVzoiVEtfUkFXIixFT0Y6IlRLX0VPRiJ9LGw9ZnVuY3Rpb24oZSx0KXt0aGlzLl9pbnB1dD1uZXcgcihlKSx0aGlzLl9vcHRpb25zPXR8fHt9LHRoaXMuX190b2tlbnM9bnVsbCx0aGlzLl9wYXR0ZXJucz17fSx0aGlzLl9wYXR0ZXJucy53aGl0ZXNwYWNlPW5ldyBvKHRoaXMuX2lucHV0KX07bC5wcm90b3R5cGUudG9rZW5pemU9ZnVuY3Rpb24oKXt2YXIgZTt0aGlzLl9pbnB1dC5yZXN0YXJ0KCksdGhpcy5fX3Rva2Vucz1uZXcgYSx0aGlzLl9yZXNldCgpO2Zvcih2YXIgdD1uZXcgaShzLlNUQVJULCIiKSxuPW51bGwscj1bXSxvPW5ldyBhO3QudHlwZSE9PXMuRU9GOyl7Zm9yKGU9dGhpcy5fZ2V0X25leHRfdG9rZW4odCxuKTt0aGlzLl9pc19jb21tZW50KGUpOylvLmFkZChlKSxlPXRoaXMuX2dldF9uZXh0X3Rva2VuKHQsbik7by5pc0VtcHR5KCl8fChlLmNvbW1lbnRzX2JlZm9yZT1vLG89bmV3IGEpLGUucGFyZW50PW4sdGhpcy5faXNfb3BlbmluZyhlKT8oci5wdXNoKG4pLG49ZSk6biYmdGhpcy5faXNfY2xvc2luZyhlLG4pJiYoZS5vcGVuZWQ9bixuLmNsb3NlZD1lLG49ci5wb3AoKSxlLnBhcmVudD1uKSxlLnByZXZpb3VzPXQsdC5uZXh0PWUsdGhpcy5fX3Rva2Vucy5hZGQoZSksdD1lfXJldHVybiB0aGlzLl9fdG9rZW5zfSxsLnByb3RvdHlwZS5faXNfZmlyc3RfdG9rZW49ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fX3Rva2Vucy5pc0VtcHR5KCl9LGwucHJvdG90eXBlLl9yZXNldD1mdW5jdGlvbigpe30sbC5wcm90b3R5cGUuX2dldF9uZXh0X3Rva2VuPWZ1bmN0aW9uKGUsdCl7dGhpcy5fcmVhZFdoaXRlc3BhY2UoKTt2YXIgbj10aGlzLl9pbnB1dC5yZWFkKC8uKy9nKTtyZXR1cm4gbj90aGlzLl9jcmVhdGVfdG9rZW4ocy5SQVcsbik6dGhpcy5fY3JlYXRlX3Rva2VuKHMuRU9GLCIiKX0sbC5wcm90b3R5cGUuX2lzX2NvbW1lbnQ9ZnVuY3Rpb24oZSl7cmV0dXJuITF9LGwucHJvdG90eXBlLl9pc19vcGVuaW5nPWZ1bmN0aW9uKGUpe3JldHVybiExfSxsLnByb3RvdHlwZS5faXNfY2xvc2luZz1mdW5jdGlvbihlLHQpe3JldHVybiExfSxsLnByb3RvdHlwZS5fY3JlYXRlX3Rva2VuPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIG5ldyBpKGUsdCx0aGlzLl9wYXR0ZXJucy53aGl0ZXNwYWNlLm5ld2xpbmVfY291bnQsdGhpcy5fcGF0dGVybnMud2hpdGVzcGFjZS53aGl0ZXNwYWNlX2JlZm9yZV90b2tlbil9LGwucHJvdG90eXBlLl9yZWFkV2hpdGVzcGFjZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9wYXR0ZXJucy53aGl0ZXNwYWNlLnJlYWQoKX0sZS5leHBvcnRzLlRva2VuaXplcj1sLGUuZXhwb3J0cy5UT0tFTj1zfSxmdW5jdGlvbihlKXtmdW5jdGlvbiB0KGUpe3RoaXMuX190b2tlbnM9W10sdGhpcy5fX3Rva2Vuc19sZW5ndGg9dGhpcy5fX3Rva2Vucy5sZW5ndGgsdGhpcy5fX3Bvc2l0aW9uPTAsdGhpcy5fX3BhcmVudF90b2tlbj1lfXQucHJvdG90eXBlLnJlc3RhcnQ9ZnVuY3Rpb24oKXt0aGlzLl9fcG9zaXRpb249MH0sdC5wcm90b3R5cGUuaXNFbXB0eT1mdW5jdGlvbigpe3JldHVybiAwPT09dGhpcy5fX3Rva2Vuc19sZW5ndGh9LHQucHJvdG90eXBlLmhhc05leHQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fX3Bvc2l0aW9uPHRoaXMuX190b2tlbnNfbGVuZ3RofSx0LnByb3RvdHlwZS5uZXh0PWZ1bmN0aW9uKCl7dmFyIGU9bnVsbDtyZXR1cm4gdGhpcy5oYXNOZXh0KCkmJihlPXRoaXMuX190b2tlbnNbdGhpcy5fX3Bvc2l0aW9uXSx0aGlzLl9fcG9zaXRpb24rPTEpLGV9LHQucHJvdG90eXBlLnBlZWs9ZnVuY3Rpb24oZSl7dmFyIHQ9bnVsbDtyZXR1cm4gZT1lfHwwLChlKz10aGlzLl9fcG9zaXRpb24pPj0wJiZlPHRoaXMuX190b2tlbnNfbGVuZ3RoJiYodD10aGlzLl9fdG9rZW5zW2VdKSx0fSx0LnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24oZSl7dGhpcy5fX3BhcmVudF90b2tlbiYmKGUucGFyZW50PXRoaXMuX19wYXJlbnRfdG9rZW4pLHRoaXMuX190b2tlbnMucHVzaChlKSx0aGlzLl9fdG9rZW5zX2xlbmd0aCs9MX0sZS5leHBvcnRzLlRva2VuU3RyZWFtPXR9LGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1uKDEyKS5QYXR0ZXJuO2Z1bmN0aW9uIGkoZSx0KXtyLmNhbGwodGhpcyxlLHQpLHQ/dGhpcy5fbGluZV9yZWdleHA9dGhpcy5faW5wdXQuZ2V0X3JlZ2V4cCh0Ll9saW5lX3JlZ2V4cCk6dGhpcy5fX3NldF93aGl0ZXNwYWNlX3BhdHRlcm5zKCIiLCIiKSx0aGlzLm5ld2xpbmVfY291bnQ9MCx0aGlzLndoaXRlc3BhY2VfYmVmb3JlX3Rva2VuPSIifWkucHJvdG90eXBlPW5ldyByLGkucHJvdG90eXBlLl9fc2V0X3doaXRlc3BhY2VfcGF0dGVybnM9ZnVuY3Rpb24oZSx0KXtlKz0iXFx0ICIsdCs9IlxcblxcciIsdGhpcy5fbWF0Y2hfcGF0dGVybj10aGlzLl9pbnB1dC5nZXRfcmVnZXhwKCJbIitlK3QrIl0rIiwhMCksdGhpcy5fbmV3bGluZV9yZWdleHA9dGhpcy5faW5wdXQuZ2V0X3JlZ2V4cCgiXFxyXFxufFsiK3QrIl0iKX0saS5wcm90b3R5cGUucmVhZD1mdW5jdGlvbigpe3RoaXMubmV3bGluZV9jb3VudD0wLHRoaXMud2hpdGVzcGFjZV9iZWZvcmVfdG9rZW49IiI7dmFyIGU9dGhpcy5faW5wdXQucmVhZCh0aGlzLl9tYXRjaF9wYXR0ZXJuKTtpZigiICI9PT1lKXRoaXMud2hpdGVzcGFjZV9iZWZvcmVfdG9rZW49IiAiO2Vsc2UgaWYoZSl7dmFyIHQ9dGhpcy5fX3NwbGl0KHRoaXMuX25ld2xpbmVfcmVnZXhwLGUpO3RoaXMubmV3bGluZV9jb3VudD10Lmxlbmd0aC0xLHRoaXMud2hpdGVzcGFjZV9iZWZvcmVfdG9rZW49dFt0aGlzLm5ld2xpbmVfY291bnRdfXJldHVybiBlfSxpLnByb3RvdHlwZS5tYXRjaGluZz1mdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMuX2NyZWF0ZSgpO3JldHVybiBuLl9fc2V0X3doaXRlc3BhY2VfcGF0dGVybnMoZSx0KSxuLl91cGRhdGUoKSxufSxpLnByb3RvdHlwZS5fY3JlYXRlPWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBpKHRoaXMuX2lucHV0LHRoaXMpfSxpLnByb3RvdHlwZS5fX3NwbGl0PWZ1bmN0aW9uKGUsdCl7ZS5sYXN0SW5kZXg9MDtmb3IodmFyIG49MCxyPVtdLGk9ZS5leGVjKHQpO2k7KXIucHVzaCh0LnN1YnN0cmluZyhuLGkuaW5kZXgpKSxuPWkuaW5kZXgraVswXS5sZW5ndGgsaT1lLmV4ZWModCk7cmV0dXJuIG48dC5sZW5ndGg/ci5wdXNoKHQuc3Vic3RyaW5nKG4sdC5sZW5ndGgpKTpyLnB1c2goIiIpLHJ9LGUuZXhwb3J0cy5XaGl0ZXNwYWNlUGF0dGVybj1pfSxmdW5jdGlvbihlKXtmdW5jdGlvbiB0KGUsdCl7dGhpcy5faW5wdXQ9ZSx0aGlzLl9zdGFydGluZ19wYXR0ZXJuPW51bGwsdGhpcy5fbWF0Y2hfcGF0dGVybj1udWxsLHRoaXMuX3VudGlsX3BhdHRlcm49bnVsbCx0aGlzLl91bnRpbF9hZnRlcj0hMSx0JiYodGhpcy5fc3RhcnRpbmdfcGF0dGVybj10aGlzLl9pbnB1dC5nZXRfcmVnZXhwKHQuX3N0YXJ0aW5nX3BhdHRlcm4sITApLHRoaXMuX21hdGNoX3BhdHRlcm49dGhpcy5faW5wdXQuZ2V0X3JlZ2V4cCh0Ll9tYXRjaF9wYXR0ZXJuLCEwKSx0aGlzLl91bnRpbF9wYXR0ZXJuPXRoaXMuX2lucHV0LmdldF9yZWdleHAodC5fdW50aWxfcGF0dGVybiksdGhpcy5fdW50aWxfYWZ0ZXI9dC5fdW50aWxfYWZ0ZXIpfXQucHJvdG90eXBlLnJlYWQ9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLl9pbnB1dC5yZWFkKHRoaXMuX3N0YXJ0aW5nX3BhdHRlcm4pO3JldHVybiB0aGlzLl9zdGFydGluZ19wYXR0ZXJuJiYhZXx8KGUrPXRoaXMuX2lucHV0LnJlYWQodGhpcy5fbWF0Y2hfcGF0dGVybix0aGlzLl91bnRpbF9wYXR0ZXJuLHRoaXMuX3VudGlsX2FmdGVyKSksZX0sdC5wcm90b3R5cGUucmVhZF9tYXRjaD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9pbnB1dC5tYXRjaCh0aGlzLl9tYXRjaF9wYXR0ZXJuKX0sdC5wcm90b3R5cGUudW50aWxfYWZ0ZXI9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5fY3JlYXRlKCk7cmV0dXJuIHQuX3VudGlsX2FmdGVyPSEwLHQuX3VudGlsX3BhdHRlcm49dGhpcy5faW5wdXQuZ2V0X3JlZ2V4cChlKSx0Ll91cGRhdGUoKSx0fSx0LnByb3RvdHlwZS51bnRpbD1mdW5jdGlvbihlKXt2YXIgdD10aGlzLl9jcmVhdGUoKTtyZXR1cm4gdC5fdW50aWxfYWZ0ZXI9ITEsdC5fdW50aWxfcGF0dGVybj10aGlzLl9pbnB1dC5nZXRfcmVnZXhwKGUpLHQuX3VwZGF0ZSgpLHR9LHQucHJvdG90eXBlLnN0YXJ0aW5nX3dpdGg9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5fY3JlYXRlKCk7cmV0dXJuIHQuX3N0YXJ0aW5nX3BhdHRlcm49dGhpcy5faW5wdXQuZ2V0X3JlZ2V4cChlLCEwKSx0Ll91cGRhdGUoKSx0fSx0LnByb3RvdHlwZS5tYXRjaGluZz1mdW5jdGlvbihlKXt2YXIgdD10aGlzLl9jcmVhdGUoKTtyZXR1cm4gdC5fbWF0Y2hfcGF0dGVybj10aGlzLl9pbnB1dC5nZXRfcmVnZXhwKGUsITApLHQuX3VwZGF0ZSgpLHR9LHQucHJvdG90eXBlLl9jcmVhdGU9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IHQodGhpcy5faW5wdXQsdGhpcyl9LHQucHJvdG90eXBlLl91cGRhdGU9ZnVuY3Rpb24oKXt9LGUuZXhwb3J0cy5QYXR0ZXJuPXR9LGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoZSx0KXtlPSJzdHJpbmciPT10eXBlb2YgZT9lOmUuc291cmNlLHQ9InN0cmluZyI9PXR5cGVvZiB0P3Q6dC5zb3VyY2UsdGhpcy5fX2RpcmVjdGl2ZXNfYmxvY2tfcGF0dGVybj1uZXcgUmVnRXhwKGUrLyBiZWF1dGlmeSggXHcrWzpdXHcrKSsgLy5zb3VyY2UrdCwiZyIpLHRoaXMuX19kaXJlY3RpdmVfcGF0dGVybj0vIChcdyspWzpdKFx3KykvZyx0aGlzLl9fZGlyZWN0aXZlc19lbmRfaWdub3JlX3BhdHRlcm49bmV3IFJlZ0V4cChlKy9cc2JlYXV0aWZ5XHNpZ25vcmU6ZW5kXHMvLnNvdXJjZSt0LCJnIil9dC5wcm90b3R5cGUuZ2V0X2RpcmVjdGl2ZXM9ZnVuY3Rpb24oZSl7aWYoIWUubWF0Y2godGhpcy5fX2RpcmVjdGl2ZXNfYmxvY2tfcGF0dGVybikpcmV0dXJuIG51bGw7dmFyIHQ9e307dGhpcy5fX2RpcmVjdGl2ZV9wYXR0ZXJuLmxhc3RJbmRleD0wO2Zvcih2YXIgbj10aGlzLl9fZGlyZWN0aXZlX3BhdHRlcm4uZXhlYyhlKTtuOyl0W25bMV1dPW5bMl0sbj10aGlzLl9fZGlyZWN0aXZlX3BhdHRlcm4uZXhlYyhlKTtyZXR1cm4gdH0sdC5wcm90b3R5cGUucmVhZElnbm9yZWQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGUucmVhZFVudGlsQWZ0ZXIodGhpcy5fX2RpcmVjdGl2ZXNfZW5kX2lnbm9yZV9wYXR0ZXJuKX0sZS5leHBvcnRzLkRpcmVjdGl2ZXM9dH0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPW4oMTIpLlBhdHRlcm4saT17ZGphbmdvOiExLGVyYjohMSxoYW5kbGViYXJzOiExLHBocDohMSxzbWFydHk6ITF9O2Z1bmN0aW9uIGEoZSx0KXtyLmNhbGwodGhpcyxlLHQpLHRoaXMuX190ZW1wbGF0ZV9wYXR0ZXJuPW51bGwsdGhpcy5fZGlzYWJsZWQ9T2JqZWN0LmFzc2lnbih7fSxpKSx0aGlzLl9leGNsdWRlZD1PYmplY3QuYXNzaWduKHt9LGkpLHQmJih0aGlzLl9fdGVtcGxhdGVfcGF0dGVybj10aGlzLl9pbnB1dC5nZXRfcmVnZXhwKHQuX190ZW1wbGF0ZV9wYXR0ZXJuKSx0aGlzLl9leGNsdWRlZD1PYmplY3QuYXNzaWduKHRoaXMuX2V4Y2x1ZGVkLHQuX2V4Y2x1ZGVkKSx0aGlzLl9kaXNhYmxlZD1PYmplY3QuYXNzaWduKHRoaXMuX2Rpc2FibGVkLHQuX2Rpc2FibGVkKSk7dmFyIG49bmV3IHIoZSk7dGhpcy5fX3BhdHRlcm5zPXtoYW5kbGViYXJzX2NvbW1lbnQ6bi5zdGFydGluZ193aXRoKC97eyEtLS8pLnVudGlsX2FmdGVyKC8tLX19LyksaGFuZGxlYmFyc191bmVzY2FwZWQ6bi5zdGFydGluZ193aXRoKC97e3svKS51bnRpbF9hZnRlcigvfX19LyksaGFuZGxlYmFyczpuLnN0YXJ0aW5nX3dpdGgoL3t7LykudW50aWxfYWZ0ZXIoL319LykscGhwOm4uc3RhcnRpbmdfd2l0aCgvPFw/KD86Wz0gXXxwaHApLykudW50aWxfYWZ0ZXIoL1w/Pi8pLGVyYjpuLnN0YXJ0aW5nX3dpdGgoLzwlW14lXS8pLnVudGlsX2FmdGVyKC9bXiVdJT4vKSxkamFuZ286bi5zdGFydGluZ193aXRoKC97JS8pLnVudGlsX2FmdGVyKC8lfS8pLGRqYW5nb192YWx1ZTpuLnN0YXJ0aW5nX3dpdGgoL3t7LykudW50aWxfYWZ0ZXIoL319LyksZGphbmdvX2NvbW1lbnQ6bi5zdGFydGluZ193aXRoKC97Iy8pLnVudGlsX2FmdGVyKC8jfS8pLHNtYXJ0eTpuLnN0YXJ0aW5nX3dpdGgoL3soPz1bXn17XHNcbl0pLykudW50aWxfYWZ0ZXIoL1teXHNcbl19Lyksc21hcnR5X2NvbW1lbnQ6bi5zdGFydGluZ193aXRoKC97XCovKS51bnRpbF9hZnRlcigvXCp9Lyksc21hcnR5X2xpdGVyYWw6bi5zdGFydGluZ193aXRoKC97bGl0ZXJhbH0vKS51bnRpbF9hZnRlcigve1wvbGl0ZXJhbH0vKX19YS5wcm90b3R5cGU9bmV3IHIsYS5wcm90b3R5cGUuX2NyZWF0ZT1mdW5jdGlvbigpe3JldHVybiBuZXcgYSh0aGlzLl9pbnB1dCx0aGlzKX0sYS5wcm90b3R5cGUuX3VwZGF0ZT1mdW5jdGlvbigpe3RoaXMuX19zZXRfdGVtcGxhdGVkX3BhdHRlcm4oKX0sYS5wcm90b3R5cGUuZGlzYWJsZT1mdW5jdGlvbihlKXt2YXIgdD10aGlzLl9jcmVhdGUoKTtyZXR1cm4gdC5fZGlzYWJsZWRbZV09ITAsdC5fdXBkYXRlKCksdH0sYS5wcm90b3R5cGUucmVhZF9vcHRpb25zPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuX2NyZWF0ZSgpO2Zvcih2YXIgbiBpbiBpKXQuX2Rpc2FibGVkW25dPS0xPT09ZS50ZW1wbGF0aW5nLmluZGV4T2Yobik7cmV0dXJuIHQuX3VwZGF0ZSgpLHR9LGEucHJvdG90eXBlLmV4Y2x1ZGU9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5fY3JlYXRlKCk7cmV0dXJuIHQuX2V4Y2x1ZGVkW2VdPSEwLHQuX3VwZGF0ZSgpLHR9LGEucHJvdG90eXBlLnJlYWQ9ZnVuY3Rpb24oKXt2YXIgZT0iIjtlPXRoaXMuX21hdGNoX3BhdHRlcm4/dGhpcy5faW5wdXQucmVhZCh0aGlzLl9zdGFydGluZ19wYXR0ZXJuKTp0aGlzLl9pbnB1dC5yZWFkKHRoaXMuX3N0YXJ0aW5nX3BhdHRlcm4sdGhpcy5fX3RlbXBsYXRlX3BhdHRlcm4pO2Zvcih2YXIgdD10aGlzLl9yZWFkX3RlbXBsYXRlKCk7dDspdGhpcy5fbWF0Y2hfcGF0dGVybj90Kz10aGlzLl9pbnB1dC5yZWFkKHRoaXMuX21hdGNoX3BhdHRlcm4pOnQrPXRoaXMuX2lucHV0LnJlYWRVbnRpbCh0aGlzLl9fdGVtcGxhdGVfcGF0dGVybiksZSs9dCx0PXRoaXMuX3JlYWRfdGVtcGxhdGUoKTtyZXR1cm4gdGhpcy5fdW50aWxfYWZ0ZXImJihlKz10aGlzLl9pbnB1dC5yZWFkVW50aWxBZnRlcih0aGlzLl91bnRpbF9wYXR0ZXJuKSksZX0sYS5wcm90b3R5cGUuX19zZXRfdGVtcGxhdGVkX3BhdHRlcm49ZnVuY3Rpb24oKXt2YXIgZT1bXTt0aGlzLl9kaXNhYmxlZC5waHB8fGUucHVzaCh0aGlzLl9fcGF0dGVybnMucGhwLl9zdGFydGluZ19wYXR0ZXJuLnNvdXJjZSksdGhpcy5fZGlzYWJsZWQuaGFuZGxlYmFyc3x8ZS5wdXNoKHRoaXMuX19wYXR0ZXJucy5oYW5kbGViYXJzLl9zdGFydGluZ19wYXR0ZXJuLnNvdXJjZSksdGhpcy5fZGlzYWJsZWQuZXJifHxlLnB1c2godGhpcy5fX3BhdHRlcm5zLmVyYi5fc3RhcnRpbmdfcGF0dGVybi5zb3VyY2UpLHRoaXMuX2Rpc2FibGVkLmRqYW5nb3x8KGUucHVzaCh0aGlzLl9fcGF0dGVybnMuZGphbmdvLl9zdGFydGluZ19wYXR0ZXJuLnNvdXJjZSksZS5wdXNoKHRoaXMuX19wYXR0ZXJucy5kamFuZ29fdmFsdWUuX3N0YXJ0aW5nX3BhdHRlcm4uc291cmNlKSxlLnB1c2godGhpcy5fX3BhdHRlcm5zLmRqYW5nb19jb21tZW50Ll9zdGFydGluZ19wYXR0ZXJuLnNvdXJjZSkpLHRoaXMuX2Rpc2FibGVkLnNtYXJ0eXx8ZS5wdXNoKHRoaXMuX19wYXR0ZXJucy5zbWFydHkuX3N0YXJ0aW5nX3BhdHRlcm4uc291cmNlKSx0aGlzLl91bnRpbF9wYXR0ZXJuJiZlLnB1c2godGhpcy5fdW50aWxfcGF0dGVybi5zb3VyY2UpLHRoaXMuX190ZW1wbGF0ZV9wYXR0ZXJuPXRoaXMuX2lucHV0LmdldF9yZWdleHAoIig/OiIrZS5qb2luKCJ8IikrIikiKX0sYS5wcm90b3R5cGUuX3JlYWRfdGVtcGxhdGU9ZnVuY3Rpb24oKXt2YXIgZT0iIix0PXRoaXMuX2lucHV0LnBlZWsoKTtpZigiPCI9PT10KXt2YXIgbj10aGlzLl9pbnB1dC5wZWVrKDEpO3RoaXMuX2Rpc2FibGVkLnBocHx8dGhpcy5fZXhjbHVkZWQucGhwfHwiPyIhPT1ufHwoZT1lfHx0aGlzLl9fcGF0dGVybnMucGhwLnJlYWQoKSksdGhpcy5fZGlzYWJsZWQuZXJifHx0aGlzLl9leGNsdWRlZC5lcmJ8fCIlIiE9PW58fChlPWV8fHRoaXMuX19wYXR0ZXJucy5lcmIucmVhZCgpKX1lbHNlInsiPT09dCYmKHRoaXMuX2Rpc2FibGVkLmhhbmRsZWJhcnN8fHRoaXMuX2V4Y2x1ZGVkLmhhbmRsZWJhcnN8fChlPShlPShlPWV8fHRoaXMuX19wYXR0ZXJucy5oYW5kbGViYXJzX2NvbW1lbnQucmVhZCgpKXx8dGhpcy5fX3BhdHRlcm5zLmhhbmRsZWJhcnNfdW5lc2NhcGVkLnJlYWQoKSl8fHRoaXMuX19wYXR0ZXJucy5oYW5kbGViYXJzLnJlYWQoKSksdGhpcy5fZGlzYWJsZWQuZGphbmdvfHwodGhpcy5fZXhjbHVkZWQuZGphbmdvfHx0aGlzLl9leGNsdWRlZC5oYW5kbGViYXJzfHwoZT1lfHx0aGlzLl9fcGF0dGVybnMuZGphbmdvX3ZhbHVlLnJlYWQoKSksdGhpcy5fZXhjbHVkZWQuZGphbmdvfHwoZT0oZT1lfHx0aGlzLl9fcGF0dGVybnMuZGphbmdvX2NvbW1lbnQucmVhZCgpKXx8dGhpcy5fX3BhdHRlcm5zLmRqYW5nby5yZWFkKCkpKSx0aGlzLl9kaXNhYmxlZC5zbWFydHl8fHRoaXMuX2Rpc2FibGVkLmRqYW5nbyYmdGhpcy5fZGlzYWJsZWQuaGFuZGxlYmFycyYmKGU9KGU9KGU9ZXx8dGhpcy5fX3BhdHRlcm5zLnNtYXJ0eV9jb21tZW50LnJlYWQoKSl8fHRoaXMuX19wYXR0ZXJucy5zbWFydHlfbGl0ZXJhbC5yZWFkKCkpfHx0aGlzLl9fcGF0dGVybnMuc21hcnR5LnJlYWQoKSkpO3JldHVybiBlfSxlLmV4cG9ydHMuVGVtcGxhdGFibGVQYXR0ZXJuPWF9LCwsLGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1uKDE5KS5CZWF1dGlmaWVyLGk9bigyMCkuT3B0aW9ucztlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LG4saSl7cmV0dXJuIG5ldyByKGUsdCxuLGkpLmJlYXV0aWZ5KCl9LGUuZXhwb3J0cy5kZWZhdWx0T3B0aW9ucz1mdW5jdGlvbigpe3JldHVybiBuZXcgaX19LGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1uKDIwKS5PcHRpb25zLGk9bigyKS5PdXRwdXQsYT1uKDIxKS5Ub2tlbml6ZXIsbz1uKDIxKS5UT0tFTixzPS9cclxufFtcclxuXS8sbD0vXHJcbnxbXHJcbl0vZyxjPWZ1bmN0aW9uKGUsdCl7dGhpcy5pbmRlbnRfbGV2ZWw9MCx0aGlzLmFsaWdubWVudF9zaXplPTAsdGhpcy5tYXhfcHJlc2VydmVfbmV3bGluZXM9ZS5tYXhfcHJlc2VydmVfbmV3bGluZXMsdGhpcy5wcmVzZXJ2ZV9uZXdsaW5lcz1lLnByZXNlcnZlX25ld2xpbmVzLHRoaXMuX291dHB1dD1uZXcgaShlLHQpfTtjLnByb3RvdHlwZS5jdXJyZW50X2xpbmVfaGFzX21hdGNoPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLl9vdXRwdXQuY3VycmVudF9saW5lLmhhc19tYXRjaChlKX0sYy5wcm90b3R5cGUuc2V0X3NwYWNlX2JlZm9yZV90b2tlbj1mdW5jdGlvbihlLHQpe3RoaXMuX291dHB1dC5zcGFjZV9iZWZvcmVfdG9rZW49ZSx0aGlzLl9vdXRwdXQubm9uX2JyZWFraW5nX3NwYWNlPXR9LGMucHJvdG90eXBlLnNldF93cmFwX3BvaW50PWZ1bmN0aW9uKCl7dGhpcy5fb3V0cHV0LnNldF9pbmRlbnQodGhpcy5pbmRlbnRfbGV2ZWwsdGhpcy5hbGlnbm1lbnRfc2l6ZSksdGhpcy5fb3V0cHV0LnNldF93cmFwX3BvaW50KCl9LGMucHJvdG90eXBlLmFkZF9yYXdfdG9rZW49ZnVuY3Rpb24oZSl7dGhpcy5fb3V0cHV0LmFkZF9yYXdfdG9rZW4oZSl9LGMucHJvdG90eXBlLnByaW50X3ByZXNlcnZlZF9uZXdsaW5lcz1mdW5jdGlvbihlKXt2YXIgdD0wO2UudHlwZSE9PW8uVEVYVCYmZS5wcmV2aW91cy50eXBlIT09by5URVhUJiYodD1lLm5ld2xpbmVzPzE6MCksdGhpcy5wcmVzZXJ2ZV9uZXdsaW5lcyYmKHQ9ZS5uZXdsaW5lczx0aGlzLm1heF9wcmVzZXJ2ZV9uZXdsaW5lcysxP2UubmV3bGluZXM6dGhpcy5tYXhfcHJlc2VydmVfbmV3bGluZXMrMSk7Zm9yKHZhciBuPTA7bjx0O24rKyl0aGlzLnByaW50X25ld2xpbmUobj4wKTtyZXR1cm4gMCE9PXR9LGMucHJvdG90eXBlLnRyYXZlcnNlX3doaXRlc3BhY2U9ZnVuY3Rpb24oZSl7cmV0dXJuISghZS53aGl0ZXNwYWNlX2JlZm9yZSYmIWUubmV3bGluZXMpJiYodGhpcy5wcmludF9wcmVzZXJ2ZWRfbmV3bGluZXMoZSl8fCh0aGlzLl9vdXRwdXQuc3BhY2VfYmVmb3JlX3Rva2VuPSEwKSwhMCl9LGMucHJvdG90eXBlLnByZXZpb3VzX3Rva2VuX3dyYXBwZWQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fb3V0cHV0LnByZXZpb3VzX3Rva2VuX3dyYXBwZWR9LGMucHJvdG90eXBlLnByaW50X25ld2xpbmU9ZnVuY3Rpb24oZSl7dGhpcy5fb3V0cHV0LmFkZF9uZXdfbGluZShlKX0sYy5wcm90b3R5cGUucHJpbnRfdG9rZW49ZnVuY3Rpb24oZSl7ZS50ZXh0JiYodGhpcy5fb3V0cHV0LnNldF9pbmRlbnQodGhpcy5pbmRlbnRfbGV2ZWwsdGhpcy5hbGlnbm1lbnRfc2l6ZSksdGhpcy5fb3V0cHV0LmFkZF90b2tlbihlLnRleHQpKX0sYy5wcm90b3R5cGUuaW5kZW50PWZ1bmN0aW9uKCl7dGhpcy5pbmRlbnRfbGV2ZWwrK30sYy5wcm90b3R5cGUuZ2V0X2Z1bGxfaW5kZW50PWZ1bmN0aW9uKGUpe3JldHVybihlPXRoaXMuaW5kZW50X2xldmVsKyhlfHwwKSk8MT8iIjp0aGlzLl9vdXRwdXQuZ2V0X2luZGVudF9zdHJpbmcoZSl9O3ZhciBoPWZ1bmN0aW9uKGUsdCl7dmFyIG49bnVsbCxyPW51bGw7cmV0dXJuIHQuY2xvc2VkPygic2NyaXB0Ij09PWU/bj0idGV4dC9qYXZhc2NyaXB0Ijoic3R5bGUiPT09ZSYmKG49InRleHQvY3NzIiksbj1mdW5jdGlvbihlKXtmb3IodmFyIHQ9bnVsbCxuPWUubmV4dDtuLnR5cGUhPT1vLkVPRiYmZS5jbG9zZWQhPT1uOyl7aWYobi50eXBlPT09by5BVFRSSUJVVEUmJiJ0eXBlIj09PW4udGV4dCl7bi5uZXh0JiZuLm5leHQudHlwZT09PW8uRVFVQUxTJiZuLm5leHQubmV4dCYmbi5uZXh0Lm5leHQudHlwZT09PW8uVkFMVUUmJih0PW4ubmV4dC5uZXh0LnRleHQpO2JyZWFrfW49bi5uZXh0fXJldHVybiB0fSh0KXx8bixuLnNlYXJjaCgidGV4dC9jc3MiKT4tMT9yPSJjc3MiOm4uc2VhcmNoKC9tb2R1bGV8KCh0ZXh0fGFwcGxpY2F0aW9ufGRvam8pXC8oeC0pPyhqYXZhc2NyaXB0fGVjbWFzY3JpcHR8anNjcmlwdHxsaXZlc2NyaXB0fChsZFwrKT9qc29ufG1ldGhvZHxhc3BlY3QpKS8pPi0xP3I9ImphdmFzY3JpcHQiOm4uc2VhcmNoKC8odGV4dHxhcHBsaWNhdGlvbnxkb2pvKVwvKHgtKT8oaHRtbCkvKT4tMT9yPSJodG1sIjpuLnNlYXJjaCgvdGVzdFwvbnVsbC8pPi0xJiYocj0ibnVsbCIpLHIpOm51bGx9O2Z1bmN0aW9uIGQoZSx0KXtyZXR1cm4tMSE9PXQuaW5kZXhPZihlKX1mdW5jdGlvbiB1KGUsdCxuKXt0aGlzLnBhcmVudD1lfHxudWxsLHRoaXMudGFnPXQ/dC50YWdfbmFtZToiIix0aGlzLmluZGVudF9sZXZlbD1ufHwwLHRoaXMucGFyc2VyX3Rva2VuPXR8fG51bGx9ZnVuY3Rpb24gcChlKXt0aGlzLl9wcmludGVyPWUsdGhpcy5fY3VycmVudF9mcmFtZT1udWxsfWZ1bmN0aW9uIG0oZSx0LG4saSl7dGhpcy5fc291cmNlX3RleHQ9ZXx8IiIsdD10fHx7fSx0aGlzLl9qc19iZWF1dGlmeT1uLHRoaXMuX2Nzc19iZWF1dGlmeT1pLHRoaXMuX3RhZ19zdGFjaz1udWxsO3ZhciBhPW5ldyByKHQsImh0bWwiKTt0aGlzLl9vcHRpb25zPWEsdGhpcy5faXNfd3JhcF9hdHRyaWJ1dGVzX2ZvcmNlPSJmb3JjZSI9PT10aGlzLl9vcHRpb25zLndyYXBfYXR0cmlidXRlcy5zdWJzdHIoMCwiZm9yY2UiLmxlbmd0aCksdGhpcy5faXNfd3JhcF9hdHRyaWJ1dGVzX2ZvcmNlX2V4cGFuZF9tdWx0aWxpbmU9ImZvcmNlLWV4cGFuZC1tdWx0aWxpbmUiPT09dGhpcy5fb3B0aW9ucy53cmFwX2F0dHJpYnV0ZXMsdGhpcy5faXNfd3JhcF9hdHRyaWJ1dGVzX2ZvcmNlX2FsaWduZWQ9ImZvcmNlLWFsaWduZWQiPT09dGhpcy5fb3B0aW9ucy53cmFwX2F0dHJpYnV0ZXMsdGhpcy5faXNfd3JhcF9hdHRyaWJ1dGVzX2FsaWduZWRfbXVsdGlwbGU9ImFsaWduZWQtbXVsdGlwbGUiPT09dGhpcy5fb3B0aW9ucy53cmFwX2F0dHJpYnV0ZXMsdGhpcy5faXNfd3JhcF9hdHRyaWJ1dGVzX3ByZXNlcnZlPSJwcmVzZXJ2ZSI9PT10aGlzLl9vcHRpb25zLndyYXBfYXR0cmlidXRlcy5zdWJzdHIoMCwicHJlc2VydmUiLmxlbmd0aCksdGhpcy5faXNfd3JhcF9hdHRyaWJ1dGVzX3ByZXNlcnZlX2FsaWduZWQ9InByZXNlcnZlLWFsaWduZWQiPT09dGhpcy5fb3B0aW9ucy53cmFwX2F0dHJpYnV0ZXN9cC5wcm90b3R5cGUuZ2V0X3BhcnNlcl90b2tlbj1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9jdXJyZW50X2ZyYW1lP3RoaXMuX2N1cnJlbnRfZnJhbWUucGFyc2VyX3Rva2VuOm51bGx9LHAucHJvdG90eXBlLnJlY29yZF90YWc9ZnVuY3Rpb24oZSl7dmFyIHQ9bmV3IHUodGhpcy5fY3VycmVudF9mcmFtZSxlLHRoaXMuX3ByaW50ZXIuaW5kZW50X2xldmVsKTt0aGlzLl9jdXJyZW50X2ZyYW1lPXR9LHAucHJvdG90eXBlLl90cnlfcG9wX2ZyYW1lPWZ1bmN0aW9uKGUpe3ZhciB0PW51bGw7cmV0dXJuIGUmJih0PWUucGFyc2VyX3Rva2VuLHRoaXMuX3ByaW50ZXIuaW5kZW50X2xldmVsPWUuaW5kZW50X2xldmVsLHRoaXMuX2N1cnJlbnRfZnJhbWU9ZS5wYXJlbnQpLHR9LHAucHJvdG90eXBlLl9nZXRfZnJhbWU9ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG49dGhpcy5fY3VycmVudF9mcmFtZTtuJiYtMT09PWUuaW5kZXhPZihuLnRhZyk7KXtpZih0JiYtMSE9PXQuaW5kZXhPZihuLnRhZykpe249bnVsbDticmVha31uPW4ucGFyZW50fXJldHVybiBufSxwLnByb3RvdHlwZS50cnlfcG9wPWZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy5fZ2V0X2ZyYW1lKFtlXSx0KTtyZXR1cm4gdGhpcy5fdHJ5X3BvcF9mcmFtZShuKX0scC5wcm90b3R5cGUuaW5kZW50X3RvX3RhZz1mdW5jdGlvbihlKXt2YXIgdD10aGlzLl9nZXRfZnJhbWUoZSk7dCYmKHRoaXMuX3ByaW50ZXIuaW5kZW50X2xldmVsPXQuaW5kZW50X2xldmVsKX0sbS5wcm90b3R5cGUuYmVhdXRpZnk9ZnVuY3Rpb24oKXtpZih0aGlzLl9vcHRpb25zLmRpc2FibGVkKXJldHVybiB0aGlzLl9zb3VyY2VfdGV4dDt2YXIgZT10aGlzLl9zb3VyY2VfdGV4dCx0PXRoaXMuX29wdGlvbnMuZW9sOyJhdXRvIj09PXRoaXMuX29wdGlvbnMuZW9sJiYodD0iXG4iLGUmJnMudGVzdChlKSYmKHQ9ZS5tYXRjaChzKVswXSkpO3ZhciBuPShlPWUucmVwbGFjZShsLCJcbiIpKS5tYXRjaCgvXltcdCBdKi8pWzBdLHI9e3RleHQ6IiIsdHlwZToiIn0saT1uZXcgZixoPW5ldyBjKHRoaXMuX29wdGlvbnMsbiksZD1uZXcgYShlLHRoaXMuX29wdGlvbnMpLnRva2VuaXplKCk7dGhpcy5fdGFnX3N0YWNrPW5ldyBwKGgpO2Zvcih2YXIgdT1udWxsLG09ZC5uZXh0KCk7bS50eXBlIT09by5FT0Y7KW0udHlwZT09PW8uVEFHX09QRU58fG0udHlwZT09PW8uQ09NTUVOVD9pPXU9dGhpcy5faGFuZGxlX3RhZ19vcGVuKGgsbSxpLHIpOm0udHlwZT09PW8uQVRUUklCVVRFfHxtLnR5cGU9PT1vLkVRVUFMU3x8bS50eXBlPT09by5WQUxVRXx8bS50eXBlPT09by5URVhUJiYhaS50YWdfY29tcGxldGU/dT10aGlzLl9oYW5kbGVfaW5zaWRlX3RhZyhoLG0saSxkKTptLnR5cGU9PT1vLlRBR19DTE9TRT91PXRoaXMuX2hhbmRsZV90YWdfY2xvc2UoaCxtLGkpOm0udHlwZT09PW8uVEVYVD91PXRoaXMuX2hhbmRsZV90ZXh0KGgsbSxpKTpoLmFkZF9yYXdfdG9rZW4obSkscj11LG09ZC5uZXh0KCk7cmV0dXJuIGguX291dHB1dC5nZXRfY29kZSh0KX0sbS5wcm90b3R5cGUuX2hhbmRsZV90YWdfY2xvc2U9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXt0ZXh0OnQudGV4dCx0eXBlOnQudHlwZX07cmV0dXJuIGUuYWxpZ25tZW50X3NpemU9MCxuLnRhZ19jb21wbGV0ZT0hMCxlLnNldF9zcGFjZV9iZWZvcmVfdG9rZW4odC5uZXdsaW5lc3x8IiIhPT10LndoaXRlc3BhY2VfYmVmb3JlLCEwKSxuLmlzX3VuZm9ybWF0dGVkP2UuYWRkX3Jhd190b2tlbih0KTooIjwiPT09bi50YWdfc3RhcnRfY2hhciYmKGUuc2V0X3NwYWNlX2JlZm9yZV90b2tlbigiLyI9PT10LnRleHRbMF0sITApLHRoaXMuX2lzX3dyYXBfYXR0cmlidXRlc19mb3JjZV9leHBhbmRfbXVsdGlsaW5lJiZuLmhhc193cmFwcGVkX2F0dHJzJiZlLnByaW50X25ld2xpbmUoITEpKSxlLnByaW50X3Rva2VuKHQpKSwhbi5pbmRlbnRfY29udGVudHx8bi5pc191bmZvcm1hdHRlZHx8bi5pc19jb250ZW50X3VuZm9ybWF0dGVkfHwoZS5pbmRlbnQoKSxuLmluZGVudF9jb250ZW50PSExKSxuLmlzX2lubGluZV9lbGVtZW50fHxuLmlzX3VuZm9ybWF0dGVkfHxuLmlzX2NvbnRlbnRfdW5mb3JtYXR0ZWR8fGUuc2V0X3dyYXBfcG9pbnQoKSxyfSxtLnByb3RvdHlwZS5faGFuZGxlX2luc2lkZV90YWc9ZnVuY3Rpb24oZSx0LG4scil7dmFyIGk9bi5oYXNfd3JhcHBlZF9hdHRycyxhPXt0ZXh0OnQudGV4dCx0eXBlOnQudHlwZX07aWYoZS5zZXRfc3BhY2VfYmVmb3JlX3Rva2VuKHQubmV3bGluZXN8fCIiIT09dC53aGl0ZXNwYWNlX2JlZm9yZSwhMCksbi5pc191bmZvcm1hdHRlZCllLmFkZF9yYXdfdG9rZW4odCk7ZWxzZSBpZigieyI9PT1uLnRhZ19zdGFydF9jaGFyJiZ0LnR5cGU9PT1vLlRFWFQpZS5wcmludF9wcmVzZXJ2ZWRfbmV3bGluZXModCk/KHQubmV3bGluZXM9MCxlLmFkZF9yYXdfdG9rZW4odCkpOmUucHJpbnRfdG9rZW4odCk7ZWxzZXtpZih0LnR5cGU9PT1vLkFUVFJJQlVURT8oZS5zZXRfc3BhY2VfYmVmb3JlX3Rva2VuKCEwKSxuLmF0dHJfY291bnQrPTEpOih0LnR5cGU9PT1vLkVRVUFMU3x8dC50eXBlPT09by5WQUxVRSYmdC5wcmV2aW91cy50eXBlPT09by5FUVVBTFMpJiZlLnNldF9zcGFjZV9iZWZvcmVfdG9rZW4oITEpLHQudHlwZT09PW8uQVRUUklCVVRFJiYiPCI9PT1uLnRhZ19zdGFydF9jaGFyJiYoKHRoaXMuX2lzX3dyYXBfYXR0cmlidXRlc19wcmVzZXJ2ZXx8dGhpcy5faXNfd3JhcF9hdHRyaWJ1dGVzX3ByZXNlcnZlX2FsaWduZWQpJiYoZS50cmF2ZXJzZV93aGl0ZXNwYWNlKHQpLGk9aXx8MCE9PXQubmV3bGluZXMpLHRoaXMuX2lzX3dyYXBfYXR0cmlidXRlc19mb3JjZSkpe3ZhciBzPW4uYXR0cl9jb3VudD4xO2lmKHRoaXMuX2lzX3dyYXBfYXR0cmlidXRlc19mb3JjZV9leHBhbmRfbXVsdGlsaW5lJiYxPT09bi5hdHRyX2NvdW50KXt2YXIgbCxjPSEwLGg9MDtkb3tpZigobD1yLnBlZWsoaCkpLnR5cGU9PT1vLkFUVFJJQlVURSl7Yz0hMTticmVha31oKz0xfXdoaWxlKGg8NCYmbC50eXBlIT09by5FT0YmJmwudHlwZSE9PW8uVEFHX0NMT1NFKTtzPSFjfXMmJihlLnByaW50X25ld2xpbmUoITEpLGk9ITApfWUucHJpbnRfdG9rZW4odCksaT1pfHxlLnByZXZpb3VzX3Rva2VuX3dyYXBwZWQoKSxuLmhhc193cmFwcGVkX2F0dHJzPWl9cmV0dXJuIGF9LG0ucHJvdG90eXBlLl9oYW5kbGVfdGV4dD1mdW5jdGlvbihlLHQsbil7dmFyIHI9e3RleHQ6dC50ZXh0LHR5cGU6IlRLX0NPTlRFTlQifTtyZXR1cm4gbi5jdXN0b21fYmVhdXRpZmllcl9uYW1lP3RoaXMuX3ByaW50X2N1c3RvbV9iZWF0aWZpZXJfdGV4dChlLHQsbik6bi5pc191bmZvcm1hdHRlZHx8bi5pc19jb250ZW50X3VuZm9ybWF0dGVkP2UuYWRkX3Jhd190b2tlbih0KTooZS50cmF2ZXJzZV93aGl0ZXNwYWNlKHQpLGUucHJpbnRfdG9rZW4odCkpLHJ9LG0ucHJvdG90eXBlLl9wcmludF9jdXN0b21fYmVhdGlmaWVyX3RleHQ9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXM7aWYoIiIhPT10LnRleHQpe3ZhciBpLGE9dC50ZXh0LG89MSxzPSIiLGw9IiI7ImphdmFzY3JpcHQiPT09bi5jdXN0b21fYmVhdXRpZmllcl9uYW1lJiYiZnVuY3Rpb24iPT10eXBlb2YgdGhpcy5fanNfYmVhdXRpZnk/aT10aGlzLl9qc19iZWF1dGlmeToiY3NzIj09PW4uY3VzdG9tX2JlYXV0aWZpZXJfbmFtZSYmImZ1bmN0aW9uIj09dHlwZW9mIHRoaXMuX2Nzc19iZWF1dGlmeT9pPXRoaXMuX2Nzc19iZWF1dGlmeToiaHRtbCI9PT1uLmN1c3RvbV9iZWF1dGlmaWVyX25hbWUmJihpPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIG5ldyBtKGUsdCxyLl9qc19iZWF1dGlmeSxyLl9jc3NfYmVhdXRpZnkpLmJlYXV0aWZ5KCl9KSwia2VlcCI9PT10aGlzLl9vcHRpb25zLmluZGVudF9zY3JpcHRzP289MDoic2VwYXJhdGUiPT09dGhpcy5fb3B0aW9ucy5pbmRlbnRfc2NyaXB0cyYmKG89LWUuaW5kZW50X2xldmVsKTt2YXIgYz1lLmdldF9mdWxsX2luZGVudChvKTtpZihhPWEucmVwbGFjZSgvXG5bIFx0XSokLywiIiksImh0bWwiIT09bi5jdXN0b21fYmVhdXRpZmllcl9uYW1lJiYiPCI9PT1hWzBdJiZhLm1hdGNoKC9eKDwhLS18PCFcW0NEQVRBXFspLykpe3ZhciBoPS9eKDwhLS1bXlxuXSp8PCFcW0NEQVRBXFspKFxuPykoWyBcdFxuXSopKFtcc1xTXSopKC0tPnxdXT4pJC8uZXhlYyhhKTtpZighaClyZXR1cm4gdm9pZCBlLmFkZF9yYXdfdG9rZW4odCk7cz1jK2hbMV0rIlxuIixhPWhbNF0saFs1XSYmKGw9YytoWzVdKSxhPWEucmVwbGFjZSgvXG5bIFx0XSokLywiIiksKGhbMl18fC0xIT09aFszXS5pbmRleE9mKCJcbiIpKSYmKGg9aFszXS5tYXRjaCgvWyBcdF0rJC8pKSYmKHQud2hpdGVzcGFjZV9iZWZvcmU9aFswXSl9aWYoYSlpZihpKXt2YXIgZD1mdW5jdGlvbigpe3RoaXMuZW9sPSJcbiJ9O2QucHJvdG90eXBlPXRoaXMuX29wdGlvbnMucmF3X29wdGlvbnMsYT1pKGMrYSxuZXcgZCl9ZWxzZXt2YXIgdT10LndoaXRlc3BhY2VfYmVmb3JlO3UmJihhPWEucmVwbGFjZShuZXcgUmVnRXhwKCJcbigiK3UrIik/IiwiZyIpLCJcbiIpKSxhPWMrYS5yZXBsYWNlKC9cbi9nLCJcbiIrYyl9cyYmKGE9YT9zK2ErIlxuIitsOnMrbCksZS5wcmludF9uZXdsaW5lKCExKSxhJiYodC50ZXh0PWEsdC53aGl0ZXNwYWNlX2JlZm9yZT0iIix0Lm5ld2xpbmVzPTAsZS5hZGRfcmF3X3Rva2VuKHQpLGUucHJpbnRfbmV3bGluZSghMCkpfX0sbS5wcm90b3R5cGUuX2hhbmRsZV90YWdfb3Blbj1mdW5jdGlvbihlLHQsbixyKXt2YXIgaT10aGlzLl9nZXRfdGFnX29wZW5fdG9rZW4odCk7cmV0dXJuIW4uaXNfdW5mb3JtYXR0ZWQmJiFuLmlzX2NvbnRlbnRfdW5mb3JtYXR0ZWR8fG4uaXNfZW1wdHlfZWxlbWVudHx8dC50eXBlIT09by5UQUdfT1BFTnx8MCE9PXQudGV4dC5pbmRleE9mKCI8LyIpPyhlLnRyYXZlcnNlX3doaXRlc3BhY2UodCksdGhpcy5fc2V0X3RhZ19wb3NpdGlvbihlLHQsaSxuLHIpLGkuaXNfaW5saW5lX2VsZW1lbnR8fGUuc2V0X3dyYXBfcG9pbnQoKSxlLnByaW50X3Rva2VuKHQpKTooZS5hZGRfcmF3X3Rva2VuKHQpLGkuc3RhcnRfdGFnX3Rva2VuPXRoaXMuX3RhZ19zdGFjay50cnlfcG9wKGkudGFnX25hbWUpKSwodGhpcy5faXNfd3JhcF9hdHRyaWJ1dGVzX2ZvcmNlX2FsaWduZWR8fHRoaXMuX2lzX3dyYXBfYXR0cmlidXRlc19hbGlnbmVkX211bHRpcGxlfHx0aGlzLl9pc193cmFwX2F0dHJpYnV0ZXNfcHJlc2VydmVfYWxpZ25lZCkmJihpLmFsaWdubWVudF9zaXplPXQudGV4dC5sZW5ndGgrMSksaS50YWdfY29tcGxldGV8fGkuaXNfdW5mb3JtYXR0ZWR8fChlLmFsaWdubWVudF9zaXplPWkuYWxpZ25tZW50X3NpemUpLGl9O3ZhciBmPWZ1bmN0aW9uKGUsdCl7dmFyIG47KHRoaXMucGFyZW50PWV8fG51bGwsdGhpcy50ZXh0PSIiLHRoaXMudHlwZT0iVEtfVEFHX09QRU4iLHRoaXMudGFnX25hbWU9IiIsdGhpcy5pc19pbmxpbmVfZWxlbWVudD0hMSx0aGlzLmlzX3VuZm9ybWF0dGVkPSExLHRoaXMuaXNfY29udGVudF91bmZvcm1hdHRlZD0hMSx0aGlzLmlzX2VtcHR5X2VsZW1lbnQ9ITEsdGhpcy5pc19zdGFydF90YWc9ITEsdGhpcy5pc19lbmRfdGFnPSExLHRoaXMuaW5kZW50X2NvbnRlbnQ9ITEsdGhpcy5tdWx0aWxpbmVfY29udGVudD0hMSx0aGlzLmN1c3RvbV9iZWF1dGlmaWVyX25hbWU9bnVsbCx0aGlzLnN0YXJ0X3RhZ190b2tlbj1udWxsLHRoaXMuYXR0cl9jb3VudD0wLHRoaXMuaGFzX3dyYXBwZWRfYXR0cnM9ITEsdGhpcy5hbGlnbm1lbnRfc2l6ZT0wLHRoaXMudGFnX2NvbXBsZXRlPSExLHRoaXMudGFnX3N0YXJ0X2NoYXI9IiIsdGhpcy50YWdfY2hlY2s9IiIsdCk/KHRoaXMudGFnX3N0YXJ0X2NoYXI9dC50ZXh0WzBdLHRoaXMudGV4dD10LnRleHQsIjwiPT09dGhpcy50YWdfc3RhcnRfY2hhcj8obj10LnRleHQubWF0Y2goL148KFteXHM+XSopLyksdGhpcy50YWdfY2hlY2s9bj9uWzFdOiIiKToobj10LnRleHQubWF0Y2goL157eyg/OltcXl18I1wqPyk/KFteXHN9XSspLyksdGhpcy50YWdfY2hlY2s9bj9uWzFdOiIiLCJ7eyM+Ij09PXQudGV4dCYmIj4iPT09dGhpcy50YWdfY2hlY2smJm51bGwhPT10Lm5leHQmJih0aGlzLnRhZ19jaGVjaz10Lm5leHQudGV4dCkpLHRoaXMudGFnX2NoZWNrPXRoaXMudGFnX2NoZWNrLnRvTG93ZXJDYXNlKCksdC50eXBlPT09by5DT01NRU5UJiYodGhpcy50YWdfY29tcGxldGU9ITApLHRoaXMuaXNfc3RhcnRfdGFnPSIvIiE9PXRoaXMudGFnX2NoZWNrLmNoYXJBdCgwKSx0aGlzLnRhZ19uYW1lPXRoaXMuaXNfc3RhcnRfdGFnP3RoaXMudGFnX2NoZWNrOnRoaXMudGFnX2NoZWNrLnN1YnN0cigxKSx0aGlzLmlzX2VuZF90YWc9IXRoaXMuaXNfc3RhcnRfdGFnfHx0LmNsb3NlZCYmIi8+Ij09PXQuY2xvc2VkLnRleHQsdGhpcy5pc19lbmRfdGFnPXRoaXMuaXNfZW5kX3RhZ3x8InsiPT09dGhpcy50YWdfc3RhcnRfY2hhciYmKHRoaXMudGV4dC5sZW5ndGg8M3x8L1teI1xeXS8udGVzdCh0aGlzLnRleHQuY2hhckF0KDIpKSkpOnRoaXMudGFnX2NvbXBsZXRlPSEwfTttLnByb3RvdHlwZS5fZ2V0X3RhZ19vcGVuX3Rva2VuPWZ1bmN0aW9uKGUpe3ZhciB0PW5ldyBmKHRoaXMuX3RhZ19zdGFjay5nZXRfcGFyc2VyX3Rva2VuKCksZSk7cmV0dXJuIHQuYWxpZ25tZW50X3NpemU9dGhpcy5fb3B0aW9ucy53cmFwX2F0dHJpYnV0ZXNfaW5kZW50X3NpemUsdC5pc19lbmRfdGFnPXQuaXNfZW5kX3RhZ3x8ZCh0LnRhZ19jaGVjayx0aGlzLl9vcHRpb25zLnZvaWRfZWxlbWVudHMpLHQuaXNfZW1wdHlfZWxlbWVudD10LnRhZ19jb21wbGV0ZXx8dC5pc19zdGFydF90YWcmJnQuaXNfZW5kX3RhZyx0LmlzX3VuZm9ybWF0dGVkPSF0LnRhZ19jb21wbGV0ZSYmZCh0LnRhZ19jaGVjayx0aGlzLl9vcHRpb25zLnVuZm9ybWF0dGVkKSx0LmlzX2NvbnRlbnRfdW5mb3JtYXR0ZWQ9IXQuaXNfZW1wdHlfZWxlbWVudCYmZCh0LnRhZ19jaGVjayx0aGlzLl9vcHRpb25zLmNvbnRlbnRfdW5mb3JtYXR0ZWQpLHQuaXNfaW5saW5lX2VsZW1lbnQ9ZCh0LnRhZ19uYW1lLHRoaXMuX29wdGlvbnMuaW5saW5lKXx8InsiPT09dC50YWdfc3RhcnRfY2hhcix0fSxtLnByb3RvdHlwZS5fc2V0X3RhZ19wb3NpdGlvbj1mdW5jdGlvbihlLHQsbixyLGkpe2lmKG4uaXNfZW1wdHlfZWxlbWVudHx8KG4uaXNfZW5kX3RhZz9uLnN0YXJ0X3RhZ190b2tlbj10aGlzLl90YWdfc3RhY2sudHJ5X3BvcChuLnRhZ19uYW1lKToodGhpcy5fZG9fb3B0aW9uYWxfZW5kX2VsZW1lbnQobikmJihuLmlzX2lubGluZV9lbGVtZW50fHxlLnByaW50X25ld2xpbmUoITEpKSx0aGlzLl90YWdfc3RhY2sucmVjb3JkX3RhZyhuKSwic2NyaXB0IiE9PW4udGFnX25hbWUmJiJzdHlsZSIhPT1uLnRhZ19uYW1lfHxuLmlzX3VuZm9ybWF0dGVkfHxuLmlzX2NvbnRlbnRfdW5mb3JtYXR0ZWR8fChuLmN1c3RvbV9iZWF1dGlmaWVyX25hbWU9aChuLnRhZ19jaGVjayx0KSkpKSxkKG4udGFnX2NoZWNrLHRoaXMuX29wdGlvbnMuZXh0cmFfbGluZXJzKSYmKGUucHJpbnRfbmV3bGluZSghMSksZS5fb3V0cHV0Lmp1c3RfYWRkZWRfYmxhbmtsaW5lKCl8fGUucHJpbnRfbmV3bGluZSghMCkpLG4uaXNfZW1wdHlfZWxlbWVudCl7aWYoInsiPT09bi50YWdfc3RhcnRfY2hhciYmImVsc2UiPT09bi50YWdfY2hlY2spdGhpcy5fdGFnX3N0YWNrLmluZGVudF90b190YWcoWyJpZiIsInVubGVzcyIsImVhY2giXSksbi5pbmRlbnRfY29udGVudD0hMCxlLmN1cnJlbnRfbGluZV9oYXNfbWF0Y2goL3t7I2lmLyl8fGUucHJpbnRfbmV3bGluZSghMSk7IiEtLSI9PT1uLnRhZ19uYW1lJiZpLnR5cGU9PT1vLlRBR19DTE9TRSYmci5pc19lbmRfdGFnJiYtMT09PW4udGV4dC5pbmRleE9mKCJcbiIpfHwobi5pc19pbmxpbmVfZWxlbWVudHx8bi5pc191bmZvcm1hdHRlZHx8ZS5wcmludF9uZXdsaW5lKCExKSx0aGlzLl9jYWxjbHVhdGVfcGFyZW50X211bHRpbGluZShlLG4pKX1lbHNlIGlmKG4uaXNfZW5kX3RhZyl7dmFyIGE9ITE7YT0oYT1uLnN0YXJ0X3RhZ190b2tlbiYmbi5zdGFydF90YWdfdG9rZW4ubXVsdGlsaW5lX2NvbnRlbnQpfHwhbi5pc19pbmxpbmVfZWxlbWVudCYmIShyLmlzX2lubGluZV9lbGVtZW50fHxyLmlzX3VuZm9ybWF0dGVkKSYmIShpLnR5cGU9PT1vLlRBR19DTE9TRSYmbi5zdGFydF90YWdfdG9rZW49PT1yKSYmIlRLX0NPTlRFTlQiIT09aS50eXBlLChuLmlzX2NvbnRlbnRfdW5mb3JtYXR0ZWR8fG4uaXNfdW5mb3JtYXR0ZWQpJiYoYT0hMSksYSYmZS5wcmludF9uZXdsaW5lKCExKX1lbHNlIG4uaW5kZW50X2NvbnRlbnQ9IW4uY3VzdG9tX2JlYXV0aWZpZXJfbmFtZSwiPCI9PT1uLnRhZ19zdGFydF9jaGFyJiYoImh0bWwiPT09bi50YWdfbmFtZT9uLmluZGVudF9jb250ZW50PXRoaXMuX29wdGlvbnMuaW5kZW50X2lubmVyX2h0bWw6ImhlYWQiPT09bi50YWdfbmFtZT9uLmluZGVudF9jb250ZW50PXRoaXMuX29wdGlvbnMuaW5kZW50X2hlYWRfaW5uZXJfaHRtbDoiYm9keSI9PT1uLnRhZ19uYW1lJiYobi5pbmRlbnRfY29udGVudD10aGlzLl9vcHRpb25zLmluZGVudF9ib2R5X2lubmVyX2h0bWwpKSxuLmlzX2lubGluZV9lbGVtZW50fHxuLmlzX3VuZm9ybWF0dGVkfHwiVEtfQ09OVEVOVCI9PT1pLnR5cGUmJiFuLmlzX2NvbnRlbnRfdW5mb3JtYXR0ZWR8fGUucHJpbnRfbmV3bGluZSghMSksdGhpcy5fY2FsY2x1YXRlX3BhcmVudF9tdWx0aWxpbmUoZSxuKX0sbS5wcm90b3R5cGUuX2NhbGNsdWF0ZV9wYXJlbnRfbXVsdGlsaW5lPWZ1bmN0aW9uKGUsdCl7IXQucGFyZW50fHwhZS5fb3V0cHV0Lmp1c3RfYWRkZWRfbmV3bGluZSgpfHwodC5pc19pbmxpbmVfZWxlbWVudHx8dC5pc191bmZvcm1hdHRlZCkmJnQucGFyZW50LmlzX2lubGluZV9lbGVtZW50fHwodC5wYXJlbnQubXVsdGlsaW5lX2NvbnRlbnQ9ITApfTt2YXIgZz1bImFkZHJlc3MiLCJhcnRpY2xlIiwiYXNpZGUiLCJibG9ja3F1b3RlIiwiZGV0YWlscyIsImRpdiIsImRsIiwiZmllbGRzZXQiLCJmaWdjYXB0aW9uIiwiZmlndXJlIiwiZm9vdGVyIiwiZm9ybSIsImgxIiwiaDIiLCJoMyIsImg0IiwiaDUiLCJoNiIsImhlYWRlciIsImhyIiwibWFpbiIsIm5hdiIsIm9sIiwicCIsInByZSIsInNlY3Rpb24iLCJ0YWJsZSIsInVsIl0sYj1bImEiLCJhdWRpbyIsImRlbCIsImlucyIsIm1hcCIsIm5vc2NyaXB0IiwidmlkZW8iXTttLnByb3RvdHlwZS5fZG9fb3B0aW9uYWxfZW5kX2VsZW1lbnQ9ZnVuY3Rpb24oZSl7dmFyIHQ9bnVsbDtpZighZS5pc19lbXB0eV9lbGVtZW50JiZlLmlzX3N0YXJ0X3RhZyYmZS5wYXJlbnQpe2lmKCJib2R5Ij09PWUudGFnX25hbWUpdD10fHx0aGlzLl90YWdfc3RhY2sudHJ5X3BvcCgiaGVhZCIpO2Vsc2UgaWYoImxpIj09PWUudGFnX25hbWUpdD10fHx0aGlzLl90YWdfc3RhY2sudHJ5X3BvcCgibGkiLFsib2wiLCJ1bCJdKTtlbHNlIGlmKCJkZCI9PT1lLnRhZ19uYW1lfHwiZHQiPT09ZS50YWdfbmFtZSl0PSh0PXR8fHRoaXMuX3RhZ19zdGFjay50cnlfcG9wKCJkdCIsWyJkbCJdKSl8fHRoaXMuX3RhZ19zdGFjay50cnlfcG9wKCJkZCIsWyJkbCJdKTtlbHNlIGlmKCJwIj09PWUucGFyZW50LnRhZ19uYW1lJiYtMSE9PWcuaW5kZXhPZihlLnRhZ19uYW1lKSl7dmFyIG49ZS5wYXJlbnQucGFyZW50O24mJi0xIT09Yi5pbmRleE9mKG4udGFnX25hbWUpfHwodD10fHx0aGlzLl90YWdfc3RhY2sudHJ5X3BvcCgicCIpKX1lbHNlInJwIj09PWUudGFnX25hbWV8fCJydCI9PT1lLnRhZ19uYW1lP3Q9KHQ9dHx8dGhpcy5fdGFnX3N0YWNrLnRyeV9wb3AoInJ0IixbInJ1YnkiLCJydGMiXSkpfHx0aGlzLl90YWdfc3RhY2sudHJ5X3BvcCgicnAiLFsicnVieSIsInJ0YyJdKToib3B0Z3JvdXAiPT09ZS50YWdfbmFtZT90PXR8fHRoaXMuX3RhZ19zdGFjay50cnlfcG9wKCJvcHRncm91cCIsWyJzZWxlY3QiXSk6Im9wdGlvbiI9PT1lLnRhZ19uYW1lP3Q9dHx8dGhpcy5fdGFnX3N0YWNrLnRyeV9wb3AoIm9wdGlvbiIsWyJzZWxlY3QiLCJkYXRhbGlzdCIsIm9wdGdyb3VwIl0pOiJjb2xncm91cCI9PT1lLnRhZ19uYW1lP3Q9dHx8dGhpcy5fdGFnX3N0YWNrLnRyeV9wb3AoImNhcHRpb24iLFsidGFibGUiXSk6InRoZWFkIj09PWUudGFnX25hbWU/dD0odD10fHx0aGlzLl90YWdfc3RhY2sudHJ5X3BvcCgiY2FwdGlvbiIsWyJ0YWJsZSJdKSl8fHRoaXMuX3RhZ19zdGFjay50cnlfcG9wKCJjb2xncm91cCIsWyJ0YWJsZSJdKToidGJvZHkiPT09ZS50YWdfbmFtZXx8InRmb290Ij09PWUudGFnX25hbWU/dD0odD0odD0odD10fHx0aGlzLl90YWdfc3RhY2sudHJ5X3BvcCgiY2FwdGlvbiIsWyJ0YWJsZSJdKSl8fHRoaXMuX3RhZ19zdGFjay50cnlfcG9wKCJjb2xncm91cCIsWyJ0YWJsZSJdKSl8fHRoaXMuX3RhZ19zdGFjay50cnlfcG9wKCJ0aGVhZCIsWyJ0YWJsZSJdKSl8fHRoaXMuX3RhZ19zdGFjay50cnlfcG9wKCJ0Ym9keSIsWyJ0YWJsZSJdKToidHIiPT09ZS50YWdfbmFtZT90PSh0PSh0PXR8fHRoaXMuX3RhZ19zdGFjay50cnlfcG9wKCJjYXB0aW9uIixbInRhYmxlIl0pKXx8dGhpcy5fdGFnX3N0YWNrLnRyeV9wb3AoImNvbGdyb3VwIixbInRhYmxlIl0pKXx8dGhpcy5fdGFnX3N0YWNrLnRyeV9wb3AoInRyIixbInRhYmxlIiwidGhlYWQiLCJ0Ym9keSIsInRmb290Il0pOiJ0aCIhPT1lLnRhZ19uYW1lJiYidGQiIT09ZS50YWdfbmFtZXx8KHQ9KHQ9dHx8dGhpcy5fdGFnX3N0YWNrLnRyeV9wb3AoInRkIixbInRhYmxlIiwidGhlYWQiLCJ0Ym9keSIsInRmb290IiwidHIiXSkpfHx0aGlzLl90YWdfc3RhY2sudHJ5X3BvcCgidGgiLFsidGFibGUiLCJ0aGVhZCIsInRib2R5IiwidGZvb3QiLCJ0ciJdKSk7cmV0dXJuIGUucGFyZW50PXRoaXMuX3RhZ19zdGFjay5nZXRfcGFyc2VyX3Rva2VuKCksdH19LGUuZXhwb3J0cy5CZWF1dGlmaWVyPW19LGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1uKDYpLk9wdGlvbnM7ZnVuY3Rpb24gaShlKXtyLmNhbGwodGhpcyxlLCJodG1sIiksMT09PXRoaXMudGVtcGxhdGluZy5sZW5ndGgmJiJhdXRvIj09PXRoaXMudGVtcGxhdGluZ1swXSYmKHRoaXMudGVtcGxhdGluZz1bImRqYW5nbyIsImVyYiIsImhhbmRsZWJhcnMiLCJwaHAiXSksdGhpcy5pbmRlbnRfaW5uZXJfaHRtbD10aGlzLl9nZXRfYm9vbGVhbigiaW5kZW50X2lubmVyX2h0bWwiKSx0aGlzLmluZGVudF9ib2R5X2lubmVyX2h0bWw9dGhpcy5fZ2V0X2Jvb2xlYW4oImluZGVudF9ib2R5X2lubmVyX2h0bWwiLCEwKSx0aGlzLmluZGVudF9oZWFkX2lubmVyX2h0bWw9dGhpcy5fZ2V0X2Jvb2xlYW4oImluZGVudF9oZWFkX2lubmVyX2h0bWwiLCEwKSx0aGlzLmluZGVudF9oYW5kbGViYXJzPXRoaXMuX2dldF9ib29sZWFuKCJpbmRlbnRfaGFuZGxlYmFycyIsITApLHRoaXMud3JhcF9hdHRyaWJ1dGVzPXRoaXMuX2dldF9zZWxlY3Rpb24oIndyYXBfYXR0cmlidXRlcyIsWyJhdXRvIiwiZm9yY2UiLCJmb3JjZS1hbGlnbmVkIiwiZm9yY2UtZXhwYW5kLW11bHRpbGluZSIsImFsaWduZWQtbXVsdGlwbGUiLCJwcmVzZXJ2ZSIsInByZXNlcnZlLWFsaWduZWQiXSksdGhpcy53cmFwX2F0dHJpYnV0ZXNfaW5kZW50X3NpemU9dGhpcy5fZ2V0X251bWJlcigid3JhcF9hdHRyaWJ1dGVzX2luZGVudF9zaXplIix0aGlzLmluZGVudF9zaXplKSx0aGlzLmV4dHJhX2xpbmVycz10aGlzLl9nZXRfYXJyYXkoImV4dHJhX2xpbmVycyIsWyJoZWFkIiwiYm9keSIsIi9odG1sIl0pLHRoaXMuaW5saW5lPXRoaXMuX2dldF9hcnJheSgiaW5saW5lIixbImEiLCJhYmJyIiwiYXJlYSIsImF1ZGlvIiwiYiIsImJkaSIsImJkbyIsImJyIiwiYnV0dG9uIiwiY2FudmFzIiwiY2l0ZSIsImNvZGUiLCJkYXRhIiwiZGF0YWxpc3QiLCJkZWwiLCJkZm4iLCJlbSIsImVtYmVkIiwiaSIsImlmcmFtZSIsImltZyIsImlucHV0IiwiaW5zIiwia2JkIiwia2V5Z2VuIiwibGFiZWwiLCJtYXAiLCJtYXJrIiwibWF0aCIsIm1ldGVyIiwibm9zY3JpcHQiLCJvYmplY3QiLCJvdXRwdXQiLCJwcm9ncmVzcyIsInEiLCJydWJ5IiwicyIsInNhbXAiLCJzZWxlY3QiLCJzbWFsbCIsInNwYW4iLCJzdHJvbmciLCJzdWIiLCJzdXAiLCJzdmciLCJ0ZW1wbGF0ZSIsInRleHRhcmVhIiwidGltZSIsInUiLCJ2YXIiLCJ2aWRlbyIsIndiciIsInRleHQiLCJhY3JvbnltIiwiYmlnIiwic3RyaWtlIiwidHQiXSksdGhpcy52b2lkX2VsZW1lbnRzPXRoaXMuX2dldF9hcnJheSgidm9pZF9lbGVtZW50cyIsWyJhcmVhIiwiYmFzZSIsImJyIiwiY29sIiwiZW1iZWQiLCJociIsImltZyIsImlucHV0Iiwia2V5Z2VuIiwibGluayIsIm1lbnVpdGVtIiwibWV0YSIsInBhcmFtIiwic291cmNlIiwidHJhY2siLCJ3YnIiLCIhZG9jdHlwZSIsIj94bWwiLCJiYXNlZm9udCIsImlzaW5kZXgiXSksdGhpcy51bmZvcm1hdHRlZD10aGlzLl9nZXRfYXJyYXkoInVuZm9ybWF0dGVkIixbXSksdGhpcy5jb250ZW50X3VuZm9ybWF0dGVkPXRoaXMuX2dldF9hcnJheSgiY29udGVudF91bmZvcm1hdHRlZCIsWyJwcmUiLCJ0ZXh0YXJlYSJdKSx0aGlzLnVuZm9ybWF0dGVkX2NvbnRlbnRfZGVsaW1pdGVyPXRoaXMuX2dldF9jaGFyYWN0ZXJzKCJ1bmZvcm1hdHRlZF9jb250ZW50X2RlbGltaXRlciIpLHRoaXMuaW5kZW50X3NjcmlwdHM9dGhpcy5fZ2V0X3NlbGVjdGlvbigiaW5kZW50X3NjcmlwdHMiLFsibm9ybWFsIiwia2VlcCIsInNlcGFyYXRlIl0pfWkucHJvdG90eXBlPW5ldyByLGUuZXhwb3J0cy5PcHRpb25zPWl9LGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1uKDkpLlRva2VuaXplcixpPW4oOSkuVE9LRU4sYT1uKDEzKS5EaXJlY3RpdmVzLG89bigxNCkuVGVtcGxhdGFibGVQYXR0ZXJuLHM9bigxMikuUGF0dGVybixsPXtUQUdfT1BFTjoiVEtfVEFHX09QRU4iLFRBR19DTE9TRToiVEtfVEFHX0NMT1NFIixBVFRSSUJVVEU6IlRLX0FUVFJJQlVURSIsRVFVQUxTOiJUS19FUVVBTFMiLFZBTFVFOiJUS19WQUxVRSIsQ09NTUVOVDoiVEtfQ09NTUVOVCIsVEVYVDoiVEtfVEVYVCIsVU5LTk9XTjoiVEtfVU5LTk9XTiIsU1RBUlQ6aS5TVEFSVCxSQVc6aS5SQVcsRU9GOmkuRU9GfSxjPW5ldyBhKC88XCEtLS8sLy0tPi8pLGg9ZnVuY3Rpb24oZSx0KXtyLmNhbGwodGhpcyxlLHQpLHRoaXMuX2N1cnJlbnRfdGFnX25hbWU9IiI7dmFyIG49bmV3IG8odGhpcy5faW5wdXQpLnJlYWRfb3B0aW9ucyh0aGlzLl9vcHRpb25zKSxpPW5ldyBzKHRoaXMuX2lucHV0KTtpZih0aGlzLl9fcGF0dGVybnM9e3dvcmQ6bi51bnRpbCgvW1xuXHJcdCA8XS8pLHNpbmdsZV9xdW90ZTpuLnVudGlsX2FmdGVyKC8nLyksZG91YmxlX3F1b3RlOm4udW50aWxfYWZ0ZXIoLyIvKSxhdHRyaWJ1dGU6bi51bnRpbCgvW1xuXHJcdCA9Pl18XC8+LyksZWxlbWVudF9uYW1lOm4udW50aWwoL1tcblxyXHQgPlwvXS8pLGhhbmRsZWJhcnNfY29tbWVudDppLnN0YXJ0aW5nX3dpdGgoL3t7IS0tLykudW50aWxfYWZ0ZXIoLy0tfX0vKSxoYW5kbGViYXJzOmkuc3RhcnRpbmdfd2l0aCgve3svKS51bnRpbF9hZnRlcigvfX0vKSxoYW5kbGViYXJzX29wZW46aS51bnRpbCgvW1xuXHJcdCB9XS8pLGhhbmRsZWJhcnNfcmF3X2Nsb3NlOmkudW50aWwoL319LyksY29tbWVudDppLnN0YXJ0aW5nX3dpdGgoLzwhLS0vKS51bnRpbF9hZnRlcigvLS0+LyksY2RhdGE6aS5zdGFydGluZ193aXRoKC88IVxbQ0RBVEFcWy8pLnVudGlsX2FmdGVyKC9dXT4vKSxjb25kaXRpb25hbF9jb21tZW50Omkuc3RhcnRpbmdfd2l0aCgvPCFcWy8pLnVudGlsX2FmdGVyKC9dPi8pLHByb2Nlc3Npbmc6aS5zdGFydGluZ193aXRoKC88XD8vKS51bnRpbF9hZnRlcigvXD8+Lyl9LHRoaXMuX29wdGlvbnMuaW5kZW50X2hhbmRsZWJhcnMmJih0aGlzLl9fcGF0dGVybnMud29yZD10aGlzLl9fcGF0dGVybnMud29yZC5leGNsdWRlKCJoYW5kbGViYXJzIikpLHRoaXMuX3VuZm9ybWF0dGVkX2NvbnRlbnRfZGVsaW1pdGVyPW51bGwsdGhpcy5fb3B0aW9ucy51bmZvcm1hdHRlZF9jb250ZW50X2RlbGltaXRlcil7dmFyIGE9dGhpcy5faW5wdXQuZ2V0X2xpdGVyYWxfcmVnZXhwKHRoaXMuX29wdGlvbnMudW5mb3JtYXR0ZWRfY29udGVudF9kZWxpbWl0ZXIpO3RoaXMuX19wYXR0ZXJucy51bmZvcm1hdHRlZF9jb250ZW50X2RlbGltaXRlcj1pLm1hdGNoaW5nKGEpLnVudGlsX2FmdGVyKGEpfX07KGgucHJvdG90eXBlPW5ldyByKS5faXNfY29tbWVudD1mdW5jdGlvbihlKXtyZXR1cm4hMX0saC5wcm90b3R5cGUuX2lzX29wZW5pbmc9ZnVuY3Rpb24oZSl7cmV0dXJuIGUudHlwZT09PWwuVEFHX09QRU59LGgucHJvdG90eXBlLl9pc19jbG9zaW5nPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUudHlwZT09PWwuVEFHX0NMT1NFJiZ0JiYoKCI+Ij09PWUudGV4dHx8Ii8+Ij09PWUudGV4dCkmJiI8Ij09PXQudGV4dFswXXx8In19Ij09PWUudGV4dCYmInsiPT09dC50ZXh0WzBdJiYieyI9PT10LnRleHRbMV0pfSxoLnByb3RvdHlwZS5fcmVzZXQ9ZnVuY3Rpb24oKXt0aGlzLl9jdXJyZW50X3RhZ19uYW1lPSIifSxoLnByb3RvdHlwZS5fZ2V0X25leHRfdG9rZW49ZnVuY3Rpb24oZSx0KXt2YXIgbj1udWxsO3RoaXMuX3JlYWRXaGl0ZXNwYWNlKCk7dmFyIHI9dGhpcy5faW5wdXQucGVlaygpO3JldHVybiBudWxsPT09cj90aGlzLl9jcmVhdGVfdG9rZW4obC5FT0YsIiIpOm49KG49KG49KG49KG49KG49KG49KG49KG49bnx8dGhpcy5fcmVhZF9vcGVuX2hhbmRsZWJhcnMocix0KSl8fHRoaXMuX3JlYWRfYXR0cmlidXRlKHIsZSx0KSl8fHRoaXMuX3JlYWRfY2xvc2Uocix0KSl8fHRoaXMuX3JlYWRfcmF3X2NvbnRlbnQocixlLHQpKXx8dGhpcy5fcmVhZF9jb250ZW50X3dvcmQocikpfHx0aGlzLl9yZWFkX2NvbW1lbnRfb3JfY2RhdGEocikpfHx0aGlzLl9yZWFkX3Byb2Nlc3NpbmcocikpfHx0aGlzLl9yZWFkX29wZW4ocix0KSl8fHRoaXMuX2NyZWF0ZV90b2tlbihsLlVOS05PV04sdGhpcy5faW5wdXQubmV4dCgpKX0saC5wcm90b3R5cGUuX3JlYWRfY29tbWVudF9vcl9jZGF0YT1mdW5jdGlvbihlKXt2YXIgdD1udWxsLG49bnVsbCxyPW51bGw7IjwiPT09ZSYmKCIhIj09PXRoaXMuX2lucHV0LnBlZWsoMSkmJigobj10aGlzLl9fcGF0dGVybnMuY29tbWVudC5yZWFkKCkpPyhyPWMuZ2V0X2RpcmVjdGl2ZXMobikpJiYic3RhcnQiPT09ci5pZ25vcmUmJihuKz1jLnJlYWRJZ25vcmVkKHRoaXMuX2lucHV0KSk6bj10aGlzLl9fcGF0dGVybnMuY2RhdGEucmVhZCgpKSxuJiYoKHQ9dGhpcy5fY3JlYXRlX3Rva2VuKGwuQ09NTUVOVCxuKSkuZGlyZWN0aXZlcz1yKSk7cmV0dXJuIHR9LGgucHJvdG90eXBlLl9yZWFkX3Byb2Nlc3Npbmc9ZnVuY3Rpb24oZSl7dmFyIHQ9bnVsbCxuPW51bGw7aWYoIjwiPT09ZSl7dmFyIHI9dGhpcy5faW5wdXQucGVlaygxKTsiISIhPT1yJiYiPyIhPT1yfHwobj0obj10aGlzLl9fcGF0dGVybnMuY29uZGl0aW9uYWxfY29tbWVudC5yZWFkKCkpfHx0aGlzLl9fcGF0dGVybnMucHJvY2Vzc2luZy5yZWFkKCkpLG4mJigodD10aGlzLl9jcmVhdGVfdG9rZW4obC5DT01NRU5ULG4pKS5kaXJlY3RpdmVzPW51bGwpfXJldHVybiB0fSxoLnByb3RvdHlwZS5fcmVhZF9vcGVuPWZ1bmN0aW9uKGUsdCl7dmFyIG49bnVsbCxyPW51bGw7cmV0dXJuIHR8fCI8Ij09PWUmJihuPXRoaXMuX2lucHV0Lm5leHQoKSwiLyI9PT10aGlzLl9pbnB1dC5wZWVrKCkmJihuKz10aGlzLl9pbnB1dC5uZXh0KCkpLG4rPXRoaXMuX19wYXR0ZXJucy5lbGVtZW50X25hbWUucmVhZCgpLHI9dGhpcy5fY3JlYXRlX3Rva2VuKGwuVEFHX09QRU4sbikpLHJ9LGgucHJvdG90eXBlLl9yZWFkX29wZW5faGFuZGxlYmFycz1mdW5jdGlvbihlLHQpe3ZhciBuPW51bGwscj1udWxsO3JldHVybiB0fHx0aGlzLl9vcHRpb25zLmluZGVudF9oYW5kbGViYXJzJiYieyI9PT1lJiYieyI9PT10aGlzLl9pbnB1dC5wZWVrKDEpJiYoIiEiPT09dGhpcy5faW5wdXQucGVlaygyKT8obj0obj10aGlzLl9fcGF0dGVybnMuaGFuZGxlYmFyc19jb21tZW50LnJlYWQoKSl8fHRoaXMuX19wYXR0ZXJucy5oYW5kbGViYXJzLnJlYWQoKSxyPXRoaXMuX2NyZWF0ZV90b2tlbihsLkNPTU1FTlQsbikpOihuPXRoaXMuX19wYXR0ZXJucy5oYW5kbGViYXJzX29wZW4ucmVhZCgpLHI9dGhpcy5fY3JlYXRlX3Rva2VuKGwuVEFHX09QRU4sbikpKSxyfSxoLnByb3RvdHlwZS5fcmVhZF9jbG9zZT1mdW5jdGlvbihlLHQpe3ZhciBuPW51bGwscj1udWxsO3JldHVybiB0JiYoIjwiPT09dC50ZXh0WzBdJiYoIj4iPT09ZXx8Ii8iPT09ZSYmIj4iPT09dGhpcy5faW5wdXQucGVlaygxKSk/KG49dGhpcy5faW5wdXQubmV4dCgpLCIvIj09PWUmJihuKz10aGlzLl9pbnB1dC5uZXh0KCkpLHI9dGhpcy5fY3JlYXRlX3Rva2VuKGwuVEFHX0NMT1NFLG4pKToieyI9PT10LnRleHRbMF0mJiJ9Ij09PWUmJiJ9Ij09PXRoaXMuX2lucHV0LnBlZWsoMSkmJih0aGlzLl9pbnB1dC5uZXh0KCksdGhpcy5faW5wdXQubmV4dCgpLHI9dGhpcy5fY3JlYXRlX3Rva2VuKGwuVEFHX0NMT1NFLCJ9fSIpKSkscn0saC5wcm90b3R5cGUuX3JlYWRfYXR0cmlidXRlPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1udWxsLGk9IiI7aWYobiYmIjwiPT09bi50ZXh0WzBdKWlmKCI9Ij09PWUpcj10aGlzLl9jcmVhdGVfdG9rZW4obC5FUVVBTFMsdGhpcy5faW5wdXQubmV4dCgpKTtlbHNlIGlmKCciJz09PWV8fCInIj09PWUpe3ZhciBhPXRoaXMuX2lucHV0Lm5leHQoKTthKz0nIic9PT1lP3RoaXMuX19wYXR0ZXJucy5kb3VibGVfcXVvdGUucmVhZCgpOnRoaXMuX19wYXR0ZXJucy5zaW5nbGVfcXVvdGUucmVhZCgpLHI9dGhpcy5fY3JlYXRlX3Rva2VuKGwuVkFMVUUsYSl9ZWxzZShpPXRoaXMuX19wYXR0ZXJucy5hdHRyaWJ1dGUucmVhZCgpKSYmKHI9dC50eXBlPT09bC5FUVVBTFM/dGhpcy5fY3JlYXRlX3Rva2VuKGwuVkFMVUUsaSk6dGhpcy5fY3JlYXRlX3Rva2VuKGwuQVRUUklCVVRFLGkpKTtyZXR1cm4gcn0saC5wcm90b3R5cGUuX2lzX2NvbnRlbnRfdW5mb3JtYXR0ZWQ9ZnVuY3Rpb24oZSl7cmV0dXJuLTE9PT10aGlzLl9vcHRpb25zLnZvaWRfZWxlbWVudHMuaW5kZXhPZihlKSYmKC0xIT09dGhpcy5fb3B0aW9ucy5jb250ZW50X3VuZm9ybWF0dGVkLmluZGV4T2YoZSl8fC0xIT09dGhpcy5fb3B0aW9ucy51bmZvcm1hdHRlZC5pbmRleE9mKGUpKX0saC5wcm90b3R5cGUuX3JlYWRfcmF3X2NvbnRlbnQ9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPSIiO2lmKG4mJiJ7Ij09PW4udGV4dFswXSlyPXRoaXMuX19wYXR0ZXJucy5oYW5kbGViYXJzX3Jhd19jbG9zZS5yZWFkKCk7ZWxzZSBpZih0LnR5cGU9PT1sLlRBR19DTE9TRSYmIjwiPT09dC5vcGVuZWQudGV4dFswXSYmIi8iIT09dC50ZXh0WzBdKXt2YXIgaT10Lm9wZW5lZC50ZXh0LnN1YnN0cigxKS50b0xvd2VyQ2FzZSgpO2lmKCJzY3JpcHQiPT09aXx8InN0eWxlIj09PWkpe3ZhciBhPXRoaXMuX3JlYWRfY29tbWVudF9vcl9jZGF0YShlKTtpZihhKXJldHVybiBhLnR5cGU9bC5URVhULGE7cj10aGlzLl9pbnB1dC5yZWFkVW50aWwobmV3IFJlZ0V4cCgiPC8iK2krIltcXG5cXHJcXHQgXSo/PiIsImlnIikpfWVsc2UgdGhpcy5faXNfY29udGVudF91bmZvcm1hdHRlZChpKSYmKHI9dGhpcy5faW5wdXQucmVhZFVudGlsKG5ldyBSZWdFeHAoIjwvIitpKyJbXFxuXFxyXFx0IF0qPz4iLCJpZyIpKSl9cmV0dXJuIHI/dGhpcy5fY3JlYXRlX3Rva2VuKGwuVEVYVCxyKTpudWxsfSxoLnByb3RvdHlwZS5fcmVhZF9jb250ZW50X3dvcmQ9ZnVuY3Rpb24oZSl7dmFyIHQ9IiI7aWYodGhpcy5fb3B0aW9ucy51bmZvcm1hdHRlZF9jb250ZW50X2RlbGltaXRlciYmZT09PXRoaXMuX29wdGlvbnMudW5mb3JtYXR0ZWRfY29udGVudF9kZWxpbWl0ZXJbMF0mJih0PXRoaXMuX19wYXR0ZXJucy51bmZvcm1hdHRlZF9jb250ZW50X2RlbGltaXRlci5yZWFkKCkpLHR8fCh0PXRoaXMuX19wYXR0ZXJucy53b3JkLnJlYWQoKSksdClyZXR1cm4gdGhpcy5fY3JlYXRlX3Rva2VuKGwuVEVYVCx0KX0sZS5leHBvcnRzLlRva2VuaXplcj1oLGUuZXhwb3J0cy5UT0tFTj1sfV0sdD17fTt2YXIgbj1mdW5jdGlvbiBuKHIpe3ZhciBpPXRbcl07aWYodm9pZCAwIT09aSlyZXR1cm4gaS5leHBvcnRzO3ZhciBhPXRbcl09e2V4cG9ydHM6e319O3JldHVybiBlW3JdKGEsYS5leHBvcnRzLG4pLGEuZXhwb3J0c30oMTgpO2NvPW59KCksaG89KCgpPT57dmFyIGU9ezQ3MDplPT57ZnVuY3Rpb24gdChlKXtpZigic3RyaW5nIiE9dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcigiUGF0aCBtdXN0IGJlIGEgc3RyaW5nLiBSZWNlaXZlZCAiK0pTT04uc3RyaW5naWZ5KGUpKX1mdW5jdGlvbiBuKGUsdCl7Zm9yKHZhciBuLHI9IiIsaT0wLGE9LTEsbz0wLHM9MDtzPD1lLmxlbmd0aDsrK3Mpe2lmKHM8ZS5sZW5ndGgpbj1lLmNoYXJDb2RlQXQocyk7ZWxzZXtpZig0Nz09PW4pYnJlYWs7bj00N31pZig0Nz09PW4pe2lmKGE9PT1zLTF8fDE9PT1vKTtlbHNlIGlmKGEhPT1zLTEmJjI9PT1vKXtpZihyLmxlbmd0aDwyfHwyIT09aXx8NDYhPT1yLmNoYXJDb2RlQXQoci5sZW5ndGgtMSl8fDQ2IT09ci5jaGFyQ29kZUF0KHIubGVuZ3RoLTIpKWlmKHIubGVuZ3RoPjIpe3ZhciBsPXIubGFzdEluZGV4T2YoIi8iKTtpZihsIT09ci5sZW5ndGgtMSl7LTE9PT1sPyhyPSIiLGk9MCk6aT0ocj1yLnNsaWNlKDAsbCkpLmxlbmd0aC0xLXIubGFzdEluZGV4T2YoIi8iKSxhPXMsbz0wO2NvbnRpbnVlfX1lbHNlIGlmKDI9PT1yLmxlbmd0aHx8MT09PXIubGVuZ3RoKXtyPSIiLGk9MCxhPXMsbz0wO2NvbnRpbnVlfXQmJihyLmxlbmd0aD4wP3IrPSIvLi4iOnI9Ii4uIixpPTIpfWVsc2Ugci5sZW5ndGg+MD9yKz0iLyIrZS5zbGljZShhKzEscyk6cj1lLnNsaWNlKGErMSxzKSxpPXMtYS0xO2E9cyxvPTB9ZWxzZSA0Nj09PW4mJi0xIT09bz8rK286bz0tMX1yZXR1cm4gcn12YXIgcj17cmVzb2x2ZTpmdW5jdGlvbigpe2Zvcih2YXIgZSxyPSIiLGk9ITEsYT1hcmd1bWVudHMubGVuZ3RoLTE7YT49LTEmJiFpO2EtLSl7dmFyIG87YT49MD9vPWFyZ3VtZW50c1thXToodm9pZCAwPT09ZSYmKGU9cHJvY2Vzcy5jd2QoKSksbz1lKSx0KG8pLDAhPT1vLmxlbmd0aCYmKHI9bysiLyIrcixpPTQ3PT09by5jaGFyQ29kZUF0KDApKX1yZXR1cm4gcj1uKHIsIWkpLGk/ci5sZW5ndGg+MD8iLyIrcjoiLyI6ci5sZW5ndGg+MD9yOiIuIn0sbm9ybWFsaXplOmZ1bmN0aW9uKGUpe2lmKHQoZSksMD09PWUubGVuZ3RoKXJldHVybiIuIjt2YXIgcj00Nz09PWUuY2hhckNvZGVBdCgwKSxpPTQ3PT09ZS5jaGFyQ29kZUF0KGUubGVuZ3RoLTEpO3JldHVybiAwIT09KGU9bihlLCFyKSkubGVuZ3RofHxyfHwoZT0iLiIpLGUubGVuZ3RoPjAmJmkmJihlKz0iLyIpLHI/Ii8iK2U6ZX0saXNBYnNvbHV0ZTpmdW5jdGlvbihlKXtyZXR1cm4gdChlKSxlLmxlbmd0aD4wJiY0Nz09PWUuY2hhckNvZGVBdCgwKX0sam9pbjpmdW5jdGlvbigpe2lmKDA9PT1hcmd1bWVudHMubGVuZ3RoKXJldHVybiIuIjtmb3IodmFyIGUsbj0wO248YXJndW1lbnRzLmxlbmd0aDsrK24pe3ZhciBpPWFyZ3VtZW50c1tuXTt0KGkpLGkubGVuZ3RoPjAmJih2b2lkIDA9PT1lP2U9aTplKz0iLyIraSl9cmV0dXJuIHZvaWQgMD09PWU/Ii4iOnIubm9ybWFsaXplKGUpfSxyZWxhdGl2ZTpmdW5jdGlvbihlLG4pe2lmKHQoZSksdChuKSxlPT09bilyZXR1cm4iIjtpZigoZT1yLnJlc29sdmUoZSkpPT09KG49ci5yZXNvbHZlKG4pKSlyZXR1cm4iIjtmb3IodmFyIGk9MTtpPGUubGVuZ3RoJiY0Nz09PWUuY2hhckNvZGVBdChpKTsrK2kpO2Zvcih2YXIgYT1lLmxlbmd0aCxvPWEtaSxzPTE7czxuLmxlbmd0aCYmNDc9PT1uLmNoYXJDb2RlQXQocyk7KytzKTtmb3IodmFyIGw9bi5sZW5ndGgtcyxjPW88bD9vOmwsaD0tMSxkPTA7ZDw9YzsrK2Qpe2lmKGQ9PT1jKXtpZihsPmMpe2lmKDQ3PT09bi5jaGFyQ29kZUF0KHMrZCkpcmV0dXJuIG4uc2xpY2UocytkKzEpO2lmKDA9PT1kKXJldHVybiBuLnNsaWNlKHMrZCl9ZWxzZSBvPmMmJig0Nz09PWUuY2hhckNvZGVBdChpK2QpP2g9ZDowPT09ZCYmKGg9MCkpO2JyZWFrfXZhciB1PWUuY2hhckNvZGVBdChpK2QpO2lmKHUhPT1uLmNoYXJDb2RlQXQocytkKSlicmVhazs0Nz09PXUmJihoPWQpfXZhciBwPSIiO2ZvcihkPWkraCsxO2Q8PWE7KytkKWQhPT1hJiY0NyE9PWUuY2hhckNvZGVBdChkKXx8KDA9PT1wLmxlbmd0aD9wKz0iLi4iOnArPSIvLi4iKTtyZXR1cm4gcC5sZW5ndGg+MD9wK24uc2xpY2UocytoKToocys9aCw0Nz09PW4uY2hhckNvZGVBdChzKSYmKytzLG4uc2xpY2UocykpfSxfbWFrZUxvbmc6ZnVuY3Rpb24oZSl7cmV0dXJuIGV9LGRpcm5hbWU6ZnVuY3Rpb24oZSl7aWYodChlKSwwPT09ZS5sZW5ndGgpcmV0dXJuIi4iO2Zvcih2YXIgbj1lLmNoYXJDb2RlQXQoMCkscj00Nz09PW4saT0tMSxhPSEwLG89ZS5sZW5ndGgtMTtvPj0xOy0tbylpZig0Nz09PShuPWUuY2hhckNvZGVBdChvKSkpe2lmKCFhKXtpPW87YnJlYWt9fWVsc2UgYT0hMTtyZXR1cm4tMT09PWk/cj8iLyI6Ii4iOnImJjE9PT1pPyIvLyI6ZS5zbGljZSgwLGkpfSxiYXNlbmFtZTpmdW5jdGlvbihlLG4pe2lmKHZvaWQgMCE9PW4mJiJzdHJpbmciIT10eXBlb2Ygbil0aHJvdyBuZXcgVHlwZUVycm9yKCciZXh0IiBhcmd1bWVudCBtdXN0IGJlIGEgc3RyaW5nJyk7dChlKTt2YXIgcixpPTAsYT0tMSxvPSEwO2lmKHZvaWQgMCE9PW4mJm4ubGVuZ3RoPjAmJm4ubGVuZ3RoPD1lLmxlbmd0aCl7aWYobi5sZW5ndGg9PT1lLmxlbmd0aCYmbj09PWUpcmV0dXJuIiI7dmFyIHM9bi5sZW5ndGgtMSxsPS0xO2ZvcihyPWUubGVuZ3RoLTE7cj49MDstLXIpe3ZhciBjPWUuY2hhckNvZGVBdChyKTtpZig0Nz09PWMpe2lmKCFvKXtpPXIrMTticmVha319ZWxzZS0xPT09bCYmKG89ITEsbD1yKzEpLHM+PTAmJihjPT09bi5jaGFyQ29kZUF0KHMpPy0xPT0tLXMmJihhPXIpOihzPS0xLGE9bCkpfXJldHVybiBpPT09YT9hPWw6LTE9PT1hJiYoYT1lLmxlbmd0aCksZS5zbGljZShpLGEpfWZvcihyPWUubGVuZ3RoLTE7cj49MDstLXIpaWYoNDc9PT1lLmNoYXJDb2RlQXQocikpe2lmKCFvKXtpPXIrMTticmVha319ZWxzZS0xPT09YSYmKG89ITEsYT1yKzEpO3JldHVybi0xPT09YT8iIjplLnNsaWNlKGksYSl9LGV4dG5hbWU6ZnVuY3Rpb24oZSl7dChlKTtmb3IodmFyIG49LTEscj0wLGk9LTEsYT0hMCxvPTAscz1lLmxlbmd0aC0xO3M+PTA7LS1zKXt2YXIgbD1lLmNoYXJDb2RlQXQocyk7aWYoNDchPT1sKS0xPT09aSYmKGE9ITEsaT1zKzEpLDQ2PT09bD8tMT09PW4/bj1zOjEhPT1vJiYobz0xKTotMSE9PW4mJihvPS0xKTtlbHNlIGlmKCFhKXtyPXMrMTticmVha319cmV0dXJuLTE9PT1ufHwtMT09PWl8fDA9PT1vfHwxPT09byYmbj09PWktMSYmbj09PXIrMT8iIjplLnNsaWNlKG4saSl9LGZvcm1hdDpmdW5jdGlvbihlKXtpZihudWxsPT09ZXx8Im9iamVjdCIhPXR5cGVvZiBlKXRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSAicGF0aE9iamVjdCIgYXJndW1lbnQgbXVzdCBiZSBvZiB0eXBlIE9iamVjdC4gUmVjZWl2ZWQgdHlwZSAnK3R5cGVvZiBlKTtyZXR1cm4gbj0odD1lKS5kaXJ8fHQucm9vdCxyPXQuYmFzZXx8KHQubmFtZXx8IiIpKyh0LmV4dHx8IiIpLG4/bj09PXQucm9vdD9uK3I6bisiLyIrcjpyO3ZhciB0LG4scn0scGFyc2U6ZnVuY3Rpb24oZSl7dChlKTt2YXIgbj17cm9vdDoiIixkaXI6IiIsYmFzZToiIixleHQ6IiIsbmFtZToiIn07aWYoMD09PWUubGVuZ3RoKXJldHVybiBuO3ZhciByLGk9ZS5jaGFyQ29kZUF0KDApLGE9NDc9PT1pO2E/KG4ucm9vdD0iLyIscj0xKTpyPTA7Zm9yKHZhciBvPS0xLHM9MCxsPS0xLGM9ITAsaD1lLmxlbmd0aC0xLGQ9MDtoPj1yOy0taClpZig0NyE9PShpPWUuY2hhckNvZGVBdChoKSkpLTE9PT1sJiYoYz0hMSxsPWgrMSksNDY9PT1pPy0xPT09bz9vPWg6MSE9PWQmJihkPTEpOi0xIT09byYmKGQ9LTEpO2Vsc2UgaWYoIWMpe3M9aCsxO2JyZWFrfXJldHVybi0xPT09b3x8LTE9PT1sfHwwPT09ZHx8MT09PWQmJm89PT1sLTEmJm89PT1zKzE/LTEhPT1sJiYobi5iYXNlPW4ubmFtZT0wPT09cyYmYT9lLnNsaWNlKDEsbCk6ZS5zbGljZShzLGwpKTooMD09PXMmJmE/KG4ubmFtZT1lLnNsaWNlKDEsbyksbi5iYXNlPWUuc2xpY2UoMSxsKSk6KG4ubmFtZT1lLnNsaWNlKHMsbyksbi5iYXNlPWUuc2xpY2UocyxsKSksbi5leHQ9ZS5zbGljZShvLGwpKSxzPjA/bi5kaXI9ZS5zbGljZSgwLHMtMSk6YSYmKG4uZGlyPSIvIiksbn0sc2VwOiIvIixkZWxpbWl0ZXI6IjoiLHdpbjMyOm51bGwscG9zaXg6bnVsbH07ci5wb3NpeD1yLGUuZXhwb3J0cz1yfSw0NDc6KGUsdCxuKT0+e3ZhciByO2lmKG4ucih0KSxuLmQodCx7VVJJOigpPT5mLFV0aWxzOigpPT54fSksIm9iamVjdCI9PXR5cGVvZiBwcm9jZXNzKXI9IndpbjMyIj09PXByb2Nlc3MucGxhdGZvcm07ZWxzZSBpZigib2JqZWN0Ij09dHlwZW9mIG5hdmlnYXRvcil7dmFyIGk9bmF2aWdhdG9yLnVzZXJBZ2VudDtyPWkuaW5kZXhPZigiV2luZG93cyIpPj0wfXZhciBhLG8scz0oYT1mdW5jdGlvbihlLHQpe3JldHVybihhPU9iamVjdC5zZXRQcm90b3R5cGVPZnx8e19fcHJvdG9fXzpbXX1pbnN0YW5jZW9mIEFycmF5JiZmdW5jdGlvbihlLHQpe2UuX19wcm90b19fPXR9fHxmdW5jdGlvbihlLHQpe2Zvcih2YXIgbiBpbiB0KU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LG4pJiYoZVtuXT10W25dKX0pKGUsdCl9LGZ1bmN0aW9uKGUsdCl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQmJm51bGwhPT10KXRocm93IG5ldyBUeXBlRXJyb3IoIkNsYXNzIGV4dGVuZHMgdmFsdWUgIitTdHJpbmcodCkrIiBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBudWxsIik7ZnVuY3Rpb24gbigpe3RoaXMuY29uc3RydWN0b3I9ZX1hKGUsdCksZS5wcm90b3R5cGU9bnVsbD09PXQ/T2JqZWN0LmNyZWF0ZSh0KToobi5wcm90b3R5cGU9dC5wcm90b3R5cGUsbmV3IG4pfSksbD0vXlx3W1x3XGQrLi1dKiQvLGM9L15cLy8saD0vXlwvXC8vO2Z1bmN0aW9uIGQoZSx0KXtpZighZS5zY2hlbWUmJnQpdGhyb3cgbmV3IEVycm9yKCdbVXJpRXJyb3JdOiBTY2hlbWUgaXMgbWlzc2luZzoge3NjaGVtZTogIiIsIGF1dGhvcml0eTogIicuY29uY2F0KGUuYXV0aG9yaXR5LCciLCBwYXRoOiAiJykuY29uY2F0KGUucGF0aCwnIiwgcXVlcnk6ICInKS5jb25jYXQoZS5xdWVyeSwnIiwgZnJhZ21lbnQ6ICInKS5jb25jYXQoZS5mcmFnbWVudCwnIn0nKSk7aWYoZS5zY2hlbWUmJiFsLnRlc3QoZS5zY2hlbWUpKXRocm93IG5ldyBFcnJvcigiW1VyaUVycm9yXTogU2NoZW1lIGNvbnRhaW5zIGlsbGVnYWwgY2hhcmFjdGVycy4iKTtpZihlLnBhdGgpaWYoZS5hdXRob3JpdHkpe2lmKCFjLnRlc3QoZS5wYXRoKSl0aHJvdyBuZXcgRXJyb3IoJ1tVcmlFcnJvcl06IElmIGEgVVJJIGNvbnRhaW5zIGFuIGF1dGhvcml0eSBjb21wb25lbnQsIHRoZW4gdGhlIHBhdGggY29tcG9uZW50IG11c3QgZWl0aGVyIGJlIGVtcHR5IG9yIGJlZ2luIHdpdGggYSBzbGFzaCAoIi8iKSBjaGFyYWN0ZXInKX1lbHNlIGlmKGgudGVzdChlLnBhdGgpKXRocm93IG5ldyBFcnJvcignW1VyaUVycm9yXTogSWYgYSBVUkkgZG9lcyBub3QgY29udGFpbiBhbiBhdXRob3JpdHkgY29tcG9uZW50LCB0aGVuIHRoZSBwYXRoIGNhbm5vdCBiZWdpbiB3aXRoIHR3byBzbGFzaCBjaGFyYWN0ZXJzICgiLy8iKScpfXZhciB1PSIiLHA9Ii8iLG09L14oKFteOi8/I10rPyk6KT8oXC9cLyhbXi8/I10qKSk/KFtePyNdKikoXD8oW14jXSopKT8oIyguKikpPy8sZj1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSx0LG4scixpLGEpe3ZhciBvLHM7dm9pZCAwPT09YSYmKGE9ITEpLCJvYmplY3QiPT10eXBlb2YgZT8odGhpcy5zY2hlbWU9ZS5zY2hlbWV8fHUsdGhpcy5hdXRob3JpdHk9ZS5hdXRob3JpdHl8fHUsdGhpcy5wYXRoPWUucGF0aHx8dSx0aGlzLnF1ZXJ5PWUucXVlcnl8fHUsdGhpcy5mcmFnbWVudD1lLmZyYWdtZW50fHx1KToodGhpcy5zY2hlbWU9KHM9YSwobz1lKXx8cz9vOiJmaWxlIiksdGhpcy5hdXRob3JpdHk9dHx8dSx0aGlzLnBhdGg9ZnVuY3Rpb24oZSx0KXtzd2l0Y2goZSl7Y2FzZSJodHRwcyI6Y2FzZSJodHRwIjpjYXNlImZpbGUiOnQ/dFswXSE9PXAmJih0PXArdCk6dD1wfXJldHVybiB0fSh0aGlzLnNjaGVtZSxufHx1KSx0aGlzLnF1ZXJ5PXJ8fHUsdGhpcy5mcmFnbWVudD1pfHx1LGQodGhpcyxhKSl9cmV0dXJuIGUuaXNVcmk9ZnVuY3Rpb24odCl7cmV0dXJuIHQgaW5zdGFuY2VvZiBlfHwhIXQmJiJzdHJpbmciPT10eXBlb2YgdC5hdXRob3JpdHkmJiJzdHJpbmciPT10eXBlb2YgdC5mcmFnbWVudCYmInN0cmluZyI9PXR5cGVvZiB0LnBhdGgmJiJzdHJpbmciPT10eXBlb2YgdC5xdWVyeSYmInN0cmluZyI9PXR5cGVvZiB0LnNjaGVtZSYmInN0cmluZyI9PXR5cGVvZiB0LmZzUGF0aCYmImZ1bmN0aW9uIj09dHlwZW9mIHQud2l0aCYmImZ1bmN0aW9uIj09dHlwZW9mIHQudG9TdHJpbmd9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwiZnNQYXRoIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHkodGhpcywhMSl9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksZS5wcm90b3R5cGUud2l0aD1mdW5jdGlvbihlKXtpZighZSlyZXR1cm4gdGhpczt2YXIgdD1lLnNjaGVtZSxuPWUuYXV0aG9yaXR5LHI9ZS5wYXRoLGk9ZS5xdWVyeSxhPWUuZnJhZ21lbnQ7cmV0dXJuIHZvaWQgMD09PXQ/dD10aGlzLnNjaGVtZTpudWxsPT09dCYmKHQ9dSksdm9pZCAwPT09bj9uPXRoaXMuYXV0aG9yaXR5Om51bGw9PT1uJiYobj11KSx2b2lkIDA9PT1yP3I9dGhpcy5wYXRoOm51bGw9PT1yJiYocj11KSx2b2lkIDA9PT1pP2k9dGhpcy5xdWVyeTpudWxsPT09aSYmKGk9dSksdm9pZCAwPT09YT9hPXRoaXMuZnJhZ21lbnQ6bnVsbD09PWEmJihhPXUpLHQ9PT10aGlzLnNjaGVtZSYmbj09PXRoaXMuYXV0aG9yaXR5JiZyPT09dGhpcy5wYXRoJiZpPT09dGhpcy5xdWVyeSYmYT09PXRoaXMuZnJhZ21lbnQ/dGhpczpuZXcgYih0LG4scixpLGEpfSxlLnBhcnNlPWZ1bmN0aW9uKGUsdCl7dm9pZCAwPT09dCYmKHQ9ITEpO3ZhciBuPW0uZXhlYyhlKTtyZXR1cm4gbj9uZXcgYihuWzJdfHx1LEMobls0XXx8dSksQyhuWzVdfHx1KSxDKG5bN118fHUpLEMobls5XXx8dSksdCk6bmV3IGIodSx1LHUsdSx1KX0sZS5maWxlPWZ1bmN0aW9uKGUpe3ZhciB0PXU7aWYociYmKGU9ZS5yZXBsYWNlKC9cXC9nLHApKSxlWzBdPT09cCYmZVsxXT09PXApe3ZhciBuPWUuaW5kZXhPZihwLDIpOy0xPT09bj8odD1lLnN1YnN0cmluZygyKSxlPXApOih0PWUuc3Vic3RyaW5nKDIsbiksZT1lLnN1YnN0cmluZyhuKXx8cCl9cmV0dXJuIG5ldyBiKCJmaWxlIix0LGUsdSx1KX0sZS5mcm9tPWZ1bmN0aW9uKGUpe3ZhciB0PW5ldyBiKGUuc2NoZW1lLGUuYXV0aG9yaXR5LGUucGF0aCxlLnF1ZXJ5LGUuZnJhZ21lbnQpO3JldHVybiBkKHQsITApLHR9LGUucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKGUpe3JldHVybiB2b2lkIDA9PT1lJiYoZT0hMSksVCh0aGlzLGUpfSxlLnByb3RvdHlwZS50b0pTT049ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30sZS5yZXZpdmU9ZnVuY3Rpb24odCl7aWYodCl7aWYodCBpbnN0YW5jZW9mIGUpcmV0dXJuIHQ7dmFyIG49bmV3IGIodCk7cmV0dXJuIG4uX2Zvcm1hdHRlZD10LmV4dGVybmFsLG4uX2ZzUGF0aD10Ll9zZXA9PT1nP3QuZnNQYXRoOm51bGwsbn1yZXR1cm4gdH0sZX0oKSxnPXI/MTp2b2lkIDAsYj1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KCl7dmFyIHQ9bnVsbCE9PWUmJmUuYXBwbHkodGhpcyxhcmd1bWVudHMpfHx0aGlzO3JldHVybiB0Ll9mb3JtYXR0ZWQ9bnVsbCx0Ll9mc1BhdGg9bnVsbCx0fXJldHVybiBzKHQsZSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJmc1BhdGgiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZnNQYXRofHwodGhpcy5fZnNQYXRoPXkodGhpcywhMSkpLHRoaXMuX2ZzUGF0aH0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSx0LnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbihlKXtyZXR1cm4gdm9pZCAwPT09ZSYmKGU9ITEpLGU/VCh0aGlzLCEwKToodGhpcy5fZm9ybWF0dGVkfHwodGhpcy5fZm9ybWF0dGVkPVQodGhpcywhMSkpLHRoaXMuX2Zvcm1hdHRlZCl9LHQucHJvdG90eXBlLnRvSlNPTj1mdW5jdGlvbigpe3ZhciBlPXskbWlkOjF9O3JldHVybiB0aGlzLl9mc1BhdGgmJihlLmZzUGF0aD10aGlzLl9mc1BhdGgsZS5fc2VwPWcpLHRoaXMuX2Zvcm1hdHRlZCYmKGUuZXh0ZXJuYWw9dGhpcy5fZm9ybWF0dGVkKSx0aGlzLnBhdGgmJihlLnBhdGg9dGhpcy5wYXRoKSx0aGlzLnNjaGVtZSYmKGUuc2NoZW1lPXRoaXMuc2NoZW1lKSx0aGlzLmF1dGhvcml0eSYmKGUuYXV0aG9yaXR5PXRoaXMuYXV0aG9yaXR5KSx0aGlzLnF1ZXJ5JiYoZS5xdWVyeT10aGlzLnF1ZXJ5KSx0aGlzLmZyYWdtZW50JiYoZS5mcmFnbWVudD10aGlzLmZyYWdtZW50KSxlfSx0fShmKSx3PSgobz17fSlbNThdPSIlM0EiLG9bNDddPSIlMkYiLG9bNjNdPSIlM0YiLG9bMzVdPSIlMjMiLG9bOTFdPSIlNUIiLG9bOTNdPSIlNUQiLG9bNjRdPSIlNDAiLG9bMzNdPSIlMjEiLG9bMzZdPSIlMjQiLG9bMzhdPSIlMjYiLG9bMzldPSIlMjciLG9bNDBdPSIlMjgiLG9bNDFdPSIlMjkiLG9bNDJdPSIlMkEiLG9bNDNdPSIlMkIiLG9bNDRdPSIlMkMiLG9bNTldPSIlM0IiLG9bNjFdPSIlM0QiLG9bMzJdPSIlMjAiLG8pO2Z1bmN0aW9uIF8oZSx0KXtmb3IodmFyIG49dm9pZCAwLHI9LTEsaT0wO2k8ZS5sZW5ndGg7aSsrKXt2YXIgYT1lLmNoYXJDb2RlQXQoaSk7aWYoYT49OTcmJmE8PTEyMnx8YT49NjUmJmE8PTkwfHxhPj00OCYmYTw9NTd8fDQ1PT09YXx8NDY9PT1hfHw5NT09PWF8fDEyNj09PWF8fHQmJjQ3PT09YSktMSE9PXImJihuKz1lbmNvZGVVUklDb21wb25lbnQoZS5zdWJzdHJpbmcocixpKSkscj0tMSksdm9pZCAwIT09biYmKG4rPWUuY2hhckF0KGkpKTtlbHNle3ZvaWQgMD09PW4mJihuPWUuc3Vic3RyKDAsaSkpO3ZhciBvPXdbYV07dm9pZCAwIT09bz8oLTEhPT1yJiYobis9ZW5jb2RlVVJJQ29tcG9uZW50KGUuc3Vic3RyaW5nKHIsaSkpLHI9LTEpLG4rPW8pOi0xPT09ciYmKHI9aSl9fXJldHVybi0xIT09ciYmKG4rPWVuY29kZVVSSUNvbXBvbmVudChlLnN1YnN0cmluZyhyKSkpLHZvaWQgMCE9PW4/bjplfWZ1bmN0aW9uIHYoZSl7Zm9yKHZhciB0PXZvaWQgMCxuPTA7bjxlLmxlbmd0aDtuKyspe3ZhciByPWUuY2hhckNvZGVBdChuKTszNT09PXJ8fDYzPT09cj8odm9pZCAwPT09dCYmKHQ9ZS5zdWJzdHIoMCxuKSksdCs9d1tyXSk6dm9pZCAwIT09dCYmKHQrPWVbbl0pfXJldHVybiB2b2lkIDAhPT10P3Q6ZX1mdW5jdGlvbiB5KGUsdCl7dmFyIG47cmV0dXJuIG49ZS5hdXRob3JpdHkmJmUucGF0aC5sZW5ndGg+MSYmImZpbGUiPT09ZS5zY2hlbWU/Ii8vIi5jb25jYXQoZS5hdXRob3JpdHkpLmNvbmNhdChlLnBhdGgpOjQ3PT09ZS5wYXRoLmNoYXJDb2RlQXQoMCkmJihlLnBhdGguY2hhckNvZGVBdCgxKT49NjUmJmUucGF0aC5jaGFyQ29kZUF0KDEpPD05MHx8ZS5wYXRoLmNoYXJDb2RlQXQoMSk+PTk3JiZlLnBhdGguY2hhckNvZGVBdCgxKTw9MTIyKSYmNTg9PT1lLnBhdGguY2hhckNvZGVBdCgyKT90P2UucGF0aC5zdWJzdHIoMSk6ZS5wYXRoWzFdLnRvTG93ZXJDYXNlKCkrZS5wYXRoLnN1YnN0cigyKTplLnBhdGgsciYmKG49bi5yZXBsYWNlKC9cLy9nLCJcXCIpKSxufWZ1bmN0aW9uIFQoZSx0KXt2YXIgbj10P3Y6XyxyPSIiLGk9ZS5zY2hlbWUsYT1lLmF1dGhvcml0eSxvPWUucGF0aCxzPWUucXVlcnksbD1lLmZyYWdtZW50O2lmKGkmJihyKz1pLHIrPSI6IiksKGF8fCJmaWxlIj09PWkpJiYocis9cCxyKz1wKSxhKXt2YXIgYz1hLmluZGV4T2YoIkAiKTtpZigtMSE9PWMpe3ZhciBoPWEuc3Vic3RyKDAsYyk7YT1hLnN1YnN0cihjKzEpLC0xPT09KGM9aC5pbmRleE9mKCI6IikpP3IrPW4oaCwhMSk6KHIrPW4oaC5zdWJzdHIoMCxjKSwhMSkscis9IjoiLHIrPW4oaC5zdWJzdHIoYysxKSwhMSkpLHIrPSJAIn0tMT09PShjPShhPWEudG9Mb3dlckNhc2UoKSkuaW5kZXhPZigiOiIpKT9yKz1uKGEsITEpOihyKz1uKGEuc3Vic3RyKDAsYyksITEpLHIrPWEuc3Vic3RyKGMpKX1pZihvKXtpZihvLmxlbmd0aD49MyYmNDc9PT1vLmNoYXJDb2RlQXQoMCkmJjU4PT09by5jaGFyQ29kZUF0KDIpKShkPW8uY2hhckNvZGVBdCgxKSk+PTY1JiZkPD05MCYmKG89Ii8iLmNvbmNhdChTdHJpbmcuZnJvbUNoYXJDb2RlKGQrMzIpLCI6IikuY29uY2F0KG8uc3Vic3RyKDMpKSk7ZWxzZSBpZihvLmxlbmd0aD49MiYmNTg9PT1vLmNoYXJDb2RlQXQoMSkpe3ZhciBkOyhkPW8uY2hhckNvZGVBdCgwKSk+PTY1JiZkPD05MCYmKG89IiIuY29uY2F0KFN0cmluZy5mcm9tQ2hhckNvZGUoZCszMiksIjoiKS5jb25jYXQoby5zdWJzdHIoMikpKX1yKz1uKG8sITApfXJldHVybiBzJiYocis9Ij8iLHIrPW4ocywhMSkpLGwmJihyKz0iIyIscis9dD9sOl8obCwhMSkpLHJ9ZnVuY3Rpb24gayhlKXt0cnl7cmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudChlKX1jYXRjaCh0KXtyZXR1cm4gZS5sZW5ndGg+Mz9lLnN1YnN0cigwLDMpK2soZS5zdWJzdHIoMykpOmV9fXZhciBTPS8oJVswLTlBLVphLXpdWzAtOUEtWmEtel0pKy9nO2Z1bmN0aW9uIEMoZSl7cmV0dXJuIGUubWF0Y2goUyk/ZS5yZXBsYWNlKFMsKGZ1bmN0aW9uKGUpe3JldHVybiBrKGUpfSkpOmV9dmFyIHgsTCxFPW4oNDcwKSxBPWZ1bmN0aW9uKGUsdCxuKXtpZihufHwyPT09YXJndW1lbnRzLmxlbmd0aClmb3IodmFyIHIsaT0wLGE9dC5sZW5ndGg7aTxhO2krKykhciYmaSBpbiB0fHwocnx8KHI9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwodCwwLGkpKSxyW2ldPXRbaV0pO3JldHVybiBlLmNvbmNhdChyfHxBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCh0KSl9LE09RS5wb3NpeHx8RTsoTD14fHwoeD17fSkpLmpvaW5QYXRoPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD1bXSxuPTE7bjxhcmd1bWVudHMubGVuZ3RoO24rKyl0W24tMV09YXJndW1lbnRzW25dO3JldHVybiBlLndpdGgoe3BhdGg6TS5qb2luLmFwcGx5KE0sQShbZS5wYXRoXSx0LCExKSl9KX0sTC5yZXNvbHZlUGF0aD1mdW5jdGlvbihlKXtmb3IodmFyIHQ9W10sbj0xO248YXJndW1lbnRzLmxlbmd0aDtuKyspdFtuLTFdPWFyZ3VtZW50c1tuXTt2YXIgcj1lLnBhdGh8fCIvIjtyZXR1cm4gZS53aXRoKHtwYXRoOk0ucmVzb2x2ZS5hcHBseShNLEEoW3JdLHQsITEpKX0pfSxMLmRpcm5hbWU9ZnVuY3Rpb24oZSl7dmFyIHQ9TS5kaXJuYW1lKGUucGF0aCk7cmV0dXJuIDE9PT10Lmxlbmd0aCYmNDY9PT10LmNoYXJDb2RlQXQoMCk/ZTplLndpdGgoe3BhdGg6dH0pfSxMLmJhc2VuYW1lPWZ1bmN0aW9uKGUpe3JldHVybiBNLmJhc2VuYW1lKGUucGF0aCl9LEwuZXh0bmFtZT1mdW5jdGlvbihlKXtyZXR1cm4gTS5leHRuYW1lKGUucGF0aCl9fX0sdD17fTtmdW5jdGlvbiBuKHIpe2lmKHRbcl0pcmV0dXJuIHRbcl0uZXhwb3J0czt2YXIgaT10W3JdPXtleHBvcnRzOnt9fTtyZXR1cm4gZVtyXShpLGkuZXhwb3J0cyxuKSxpLmV4cG9ydHN9cmV0dXJuIG4uZD0oZSx0KT0+e2Zvcih2YXIgciBpbiB0KW4ubyh0LHIpJiYhbi5vKGUscikmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIse2VudW1lcmFibGU6ITAsZ2V0OnRbcl19KX0sbi5vPShlLHQpPT5PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSx0KSxuLnI9ZT0+eyJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZTeW1ib2wudG9TdHJpbmdUYWcmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLFN5bWJvbC50b1N0cmluZ1RhZyx7dmFsdWU6Ik1vZHVsZSJ9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSl9LG4oNDQ3KX0pKCk7dmFye1VSSTpfbyxVdGlsczp2b309aG87ZnVuY3Rpb24geW8oZSl7dmFyIHQ9ZVswXTtyZXR1cm4gdCE9PWVbZS5sZW5ndGgtMV18fCInIiE9PXQmJiciJyE9PXR8fChlPWUuc3Vic3RyKDEsZS5sZW5ndGgtMikpLGV9ZnVuY3Rpb24gVG8oZSx0LG4scixpLGEpe3ZhciBvPXlvKG4pO2lmKHM9byxsPWUubGFuZ3VhZ2VJZCxzLmxlbmd0aCYmKCJoYW5kbGViYXJzIiE9PWx8fCEve3t8fX0vLnRlc3QocykpJiYvXGIod1tcd1xkKy4tXSo6XC9cLyk/W15ccygpPD5dKyg/OlwoW1x3XGRdK1wpfChbXls6cHVuY3Q6XVxzXXxcLz8pKS8udGVzdChzKSl7dmFyIHMsbDtvLmxlbmd0aDxuLmxlbmd0aCYmKHIrKyxpLS0pO3ZhciBjPWZ1bmN0aW9uKGUsdCxuLHIpe2lmKCEvXlxzKmphdmFzY3JpcHRcOi9pLnRlc3QodCkmJiEvW1xuXHJdLy50ZXN0KHQpKXJldHVybiB0PXQucmVwbGFjZSgvXlxzKi9nLCIiKSwvXmh0dHBzPzpcL1wvL2kudGVzdCh0KXx8L15maWxlOlwvXC8vaS50ZXN0KHQpP3Q6L15cIy9pLnRlc3QodCk/ZSt0Oi9eXC9cLy9pLnRlc3QodCk/KElhKGUsImh0dHBzOi8vIik/Imh0dHBzIjoiaHR0cCIpKyI6Iit0LnJlcGxhY2UoL15ccyovZywiIik6bj9uLnJlc29sdmVSZWZlcmVuY2UodCxyfHxlKTp0fShlLnVyaSxvLHQsYSk7aWYoYyYmZnVuY3Rpb24oZSl7dHJ5e3JldHVybiBfby5wYXJzZShlKSwhMH1jYXRjaChlKXtyZXR1cm4hMX19KGMpKXJldHVybntyYW5nZTpyci5jcmVhdGUoZS5wb3NpdGlvbkF0KHIpLGUucG9zaXRpb25BdChpKSksdGFyZ2V0OmN9fX1mdW5jdGlvbiBrbyhlLHQpe2Zvcih2YXIgbj1bXSxyPUNhKGUuZ2V0VGV4dCgpLDApLGk9ci5zY2FuKCksYT12b2lkIDAsbz0hMSxzPXZvaWQgMCxsPXt9O2khPT1ZaS5FT1M7KXtzd2l0Y2goaSl7Y2FzZSBZaS5TdGFydFRhZzppZighcylvPSJiYXNlIj09PXIuZ2V0VG9rZW5UZXh0KCkudG9Mb3dlckNhc2UoKTticmVhaztjYXNlIFlpLkF0dHJpYnV0ZU5hbWU6YT1yLmdldFRva2VuVGV4dCgpLnRvTG93ZXJDYXNlKCk7YnJlYWs7Y2FzZSBZaS5BdHRyaWJ1dGVWYWx1ZTppZigic3JjIj09PWF8fCJocmVmIj09PWEpe3ZhciBjPXIuZ2V0VG9rZW5UZXh0KCk7aWYoIW8pKHU9VG8oZSx0LGMsci5nZXRUb2tlbk9mZnNldCgpLHIuZ2V0VG9rZW5FbmQoKSxzKSkmJm4ucHVzaCh1KTtvJiZ2b2lkIDA9PT1zJiYocz15byhjKSkmJnQmJihzPXQucmVzb2x2ZVJlZmVyZW5jZShzLGUudXJpKSksbz0hMSxhPXZvaWQgMH1lbHNlIGlmKCJpZCI9PT1hKXtsW3lvKHIuZ2V0VG9rZW5UZXh0KCkpXT1yLmdldFRva2VuT2Zmc2V0KCl9fWk9ci5zY2FuKCl9Zm9yKHZhciBoPTAsZD1uO2g8ZC5sZW5ndGg7aCsrKXt2YXIgdT1kW2hdLHA9ZS51cmkrIiMiO2lmKHUudGFyZ2V0JiZJYSh1LnRhcmdldCxwKSl7dmFyIG09bFt1LnRhcmdldC5zdWJzdHIocC5sZW5ndGgpXTtpZih2b2lkIDAhPT1tKXt2YXIgZj1lLnBvc2l0aW9uQXQobSk7dS50YXJnZXQ9IiIuY29uY2F0KHApLmNvbmNhdChmLmxpbmUrMSwiLCIpLmNvbmNhdChmLmNoYXJhY3RlcisxKX19fXJldHVybiBufWZ1bmN0aW9uIFNvKGUsdCxuKXt2YXIgcj1lLm9mZnNldEF0KHQpLGk9bi5maW5kTm9kZUF0KHIpO2lmKCFpLnRhZylyZXR1cm5bXTt2YXIgYT1bXSxvPUxvKFlpLlN0YXJ0VGFnLGUsaS5zdGFydCkscz0ibnVtYmVyIj09dHlwZW9mIGkuZW5kVGFnU3RhcnQmJkxvKFlpLkVuZFRhZyxlLGkuZW5kVGFnU3RhcnQpO3JldHVybihvJiZ4byhvLHQpfHxzJiZ4byhzLHQpKSYmKG8mJmEucHVzaCh7a2luZDpfaS5SZWFkLHJhbmdlOm99KSxzJiZhLnB1c2goe2tpbmQ6X2kuUmVhZCxyYW5nZTpzfSkpLGF9ZnVuY3Rpb24gQ28oZSx0KXtyZXR1cm4gZS5saW5lPHQubGluZXx8ZS5saW5lPT09dC5saW5lJiZlLmNoYXJhY3Rlcjw9dC5jaGFyYWN0ZXJ9ZnVuY3Rpb24geG8oZSx0KXtyZXR1cm4gQ28oZS5zdGFydCx0KSYmQ28odCxlLmVuZCl9ZnVuY3Rpb24gTG8oZSx0LG4pe2Zvcih2YXIgcj1DYSh0LmdldFRleHQoKSxuKSxpPXIuc2NhbigpO2khPT1ZaS5FT1MmJmkhPT1lOylpPXIuc2NhbigpO3JldHVybiBpIT09WWkuRU9TP3tzdGFydDp0LnBvc2l0aW9uQXQoci5nZXRUb2tlbk9mZnNldCgpKSxlbmQ6dC5wb3NpdGlvbkF0KHIuZ2V0VG9rZW5FbmQoKSl9Om51bGx9ZnVuY3Rpb24gRW8oZSx0KXt2YXIgbj1bXTtyZXR1cm4gdC5yb290cy5mb3JFYWNoKChmdW5jdGlvbih0KXtBbyhlLHQsIiIsbil9KSksbn1mdW5jdGlvbiBBbyhlLHQsbixyKXt2YXIgaT1mdW5jdGlvbihlKXt2YXIgdD1lLnRhZztpZihlLmF0dHJpYnV0ZXMpe3ZhciBuPWUuYXR0cmlidXRlcy5pZCxyPWUuYXR0cmlidXRlcy5jbGFzcztuJiYodCs9IiMiLmNvbmNhdChuLnJlcGxhY2UoL1tcIlwnXS9nLCIiKSkpLHImJih0Kz1yLnJlcGxhY2UoL1tcIlwnXS9nLCIiKS5zcGxpdCgvXHMrLykubWFwKChmdW5jdGlvbihlKXtyZXR1cm4iLiIuY29uY2F0KGUpfSkpLmpvaW4oIiIpKX1yZXR1cm4gdHx8Ij8ifSh0KSxhPWFyLmNyZWF0ZShlLnVyaSxyci5jcmVhdGUoZS5wb3NpdGlvbkF0KHQuc3RhcnQpLGUucG9zaXRpb25BdCh0LmVuZCkpKSxvPXtuYW1lOmksbG9jYXRpb246YSxjb250YWluZXJOYW1lOm4sa2luZDpUaS5GaWVsZH07ci5wdXNoKG8pLHQuY2hpbGRyZW4uZm9yRWFjaCgoZnVuY3Rpb24odCl7QW8oZSx0LGkscil9KSl9ZnVuY3Rpb24gTW8oZSx0LG4scil7dmFyIGksYT1lLm9mZnNldEF0KHQpLG89ci5maW5kTm9kZUF0KGEpO2lmKCFvLnRhZylyZXR1cm4gbnVsbDtpZighZnVuY3Rpb24oZSx0LG4pe2lmKGUuZW5kVGFnU3RhcnQmJmUuZW5kVGFnU3RhcnQrIjwvIi5sZW5ndGg8PXQmJnQ8PWUuZW5kVGFnU3RhcnQrIjwvIi5sZW5ndGgrbi5sZW5ndGgpcmV0dXJuITA7cmV0dXJuIGUuc3RhcnQrIjwiLmxlbmd0aDw9dCYmdDw9ZS5zdGFydCsiPCIubGVuZ3RoK24ubGVuZ3RofShvLGEsby50YWcpKXJldHVybiBudWxsO3ZhciBzPVtdLGw9e3N0YXJ0OmUucG9zaXRpb25BdChvLnN0YXJ0KyI8Ii5sZW5ndGgpLGVuZDplLnBvc2l0aW9uQXQoby5zdGFydCsiPCIubGVuZ3RoK28udGFnLmxlbmd0aCl9O2lmKHMucHVzaCh7cmFuZ2U6bCxuZXdUZXh0Om59KSxvLmVuZFRhZ1N0YXJ0KXt2YXIgYz17c3RhcnQ6ZS5wb3NpdGlvbkF0KG8uZW5kVGFnU3RhcnQrIjwvIi5sZW5ndGgpLGVuZDplLnBvc2l0aW9uQXQoby5lbmRUYWdTdGFydCsiPC8iLmxlbmd0aCtvLnRhZy5sZW5ndGgpfTtzLnB1c2goe3JhbmdlOmMsbmV3VGV4dDpufSl9cmV0dXJue2NoYW5nZXM6KChpPXt9KVtlLnVyaS50b1N0cmluZygpXT1zLGkpfX1mdW5jdGlvbiBSbyhlLHQsbil7dmFyIHI9ZS5vZmZzZXRBdCh0KSxpPW4uZmluZE5vZGVBdChyKTtpZighaS50YWcpcmV0dXJuIG51bGw7aWYoIWkuZW5kVGFnU3RhcnQpcmV0dXJuIG51bGw7aWYoaS5zdGFydCsiPCIubGVuZ3RoPD1yJiZyPD1pLnN0YXJ0KyI8Ii5sZW5ndGgraS50YWcubGVuZ3RoKXt2YXIgYT1yLSI8Ii5sZW5ndGgtaS5zdGFydCtpLmVuZFRhZ1N0YXJ0KyI8LyIubGVuZ3RoO3JldHVybiBlLnBvc2l0aW9uQXQoYSl9aWYoaS5lbmRUYWdTdGFydCsiPC8iLmxlbmd0aDw9ciYmcjw9aS5lbmRUYWdTdGFydCsiPC8iLmxlbmd0aCtpLnRhZy5sZW5ndGgpe2E9ci0iPC8iLmxlbmd0aC1pLmVuZFRhZ1N0YXJ0K2kuc3RhcnQrIjwiLmxlbmd0aDtyZXR1cm4gZS5wb3NpdGlvbkF0KGEpfXJldHVybiBudWxsfWZ1bmN0aW9uIElvKGUsdCxuKXt2YXIgcj1lLm9mZnNldEF0KHQpLGk9bi5maW5kTm9kZUF0KHIpLGE9aS50YWc/aS50YWcubGVuZ3RoOjA7cmV0dXJuIGkuZW5kVGFnU3RhcnQmJihpLnN0YXJ0KyI8Ii5sZW5ndGg8PXImJnI8PWkuc3RhcnQrIjwiLmxlbmd0aCthfHxpLmVuZFRhZ1N0YXJ0KyI8LyIubGVuZ3RoPD1yJiZyPD1pLmVuZFRhZ1N0YXJ0KyI8LyIubGVuZ3RoK2EpP1tyci5jcmVhdGUoZS5wb3NpdGlvbkF0KGkuc3RhcnQrIjwiLmxlbmd0aCksZS5wb3NpdGlvbkF0KGkuc3RhcnQrIjwiLmxlbmd0aCthKSkscnIuY3JlYXRlKGUucG9zaXRpb25BdChpLmVuZFRhZ1N0YXJ0KyI8LyIubGVuZ3RoKSxlLnBvc2l0aW9uQXQoaS5lbmRUYWdTdGFydCsiPC8iLmxlbmd0aCthKSldOm51bGx9ZnVuY3Rpb24gTm8oZSx0KXt2YXIgbj1DYShlLmdldFRleHQoKSkscj1uLnNjYW4oKSxpPVtdLGE9W10sbz1udWxsLHM9LTE7ZnVuY3Rpb24gbChlKXtpLnB1c2goZSkscz1lLnN0YXJ0TGluZX1mb3IoO3IhPT1ZaS5FT1M7KXtzd2l0Y2gocil7Y2FzZSBZaS5TdGFydFRhZzp2YXIgYz1uLmdldFRva2VuVGV4dCgpLGg9ZS5wb3NpdGlvbkF0KG4uZ2V0VG9rZW5PZmZzZXQoKSkubGluZTthLnB1c2goe3N0YXJ0TGluZTpoLHRhZ05hbWU6Y30pLG89YzticmVhaztjYXNlIFlpLkVuZFRhZzpvPW4uZ2V0VG9rZW5UZXh0KCk7YnJlYWs7Y2FzZSBZaS5TdGFydFRhZ0Nsb3NlOmlmKCFvfHwhRWEobykpYnJlYWs7Y2FzZSBZaS5FbmRUYWdDbG9zZTpjYXNlIFlpLlN0YXJ0VGFnU2VsZkNsb3NlOmZvcih2YXIgZD1hLmxlbmd0aC0xO2Q+PTAmJmFbZF0udGFnTmFtZSE9PW87KWQtLTtpZihkPj0wKXt2YXIgdT1hW2RdO2EubGVuZ3RoPWQsKG09ZS5wb3NpdGlvbkF0KG4uZ2V0VG9rZW5PZmZzZXQoKSkubGluZS0xKT4oaD11LnN0YXJ0TGluZSkmJnMhPT1oJiZsKHtzdGFydExpbmU6aCxlbmRMaW5lOm19KX1icmVhaztjYXNlIFlpLkNvbW1lbnQ6aD1lLnBvc2l0aW9uQXQobi5nZXRUb2tlbk9mZnNldCgpKS5saW5lO3ZhciBwPW4uZ2V0VG9rZW5UZXh0KCkubWF0Y2goL15ccyojKHJlZ2lvblxiKXwoZW5kcmVnaW9uXGIpLyk7aWYocClpZihwWzFdKWEucHVzaCh7c3RhcnRMaW5lOmgsdGFnTmFtZToiIn0pO2Vsc2V7Zm9yKGQ9YS5sZW5ndGgtMTtkPj0wJiZhW2RdLnRhZ05hbWUubGVuZ3RoOylkLS07aWYoZD49MCl7dmFyIG07dT1hW2RdO2EubGVuZ3RoPWQsKG09aCk+KGg9dS5zdGFydExpbmUpJiZzIT09aCYmbCh7c3RhcnRMaW5lOmgsZW5kTGluZTptLGtpbmQ6ZnIuUmVnaW9ufSl9fWVsc2UgaDwobT1lLnBvc2l0aW9uQXQobi5nZXRUb2tlbk9mZnNldCgpK24uZ2V0VG9rZW5MZW5ndGgoKSkubGluZSkmJmwoe3N0YXJ0TGluZTpoLGVuZExpbmU6bSxraW5kOmZyLkNvbW1lbnR9KX1yPW4uc2NhbigpfXZhciBmPXQmJnQucmFuZ2VMaW1pdHx8TnVtYmVyLk1BWF9WQUxVRTtyZXR1cm4gaS5sZW5ndGg+Zj9mdW5jdGlvbihlLHQpe2U9ZS5zb3J0KChmdW5jdGlvbihlLHQpe3ZhciBuPWUuc3RhcnRMaW5lLXQuc3RhcnRMaW5lO3JldHVybiAwPT09biYmKG49ZS5lbmRMaW5lLXQuZW5kTGluZSksbn0pKTtmb3IodmFyIG49dm9pZCAwLHI9W10saT1bXSxhPVtdLG89ZnVuY3Rpb24oZSx0KXtpW2VdPXQsdDwzMCYmKGFbdF09KGFbdF18fDApKzEpfSxzPTA7czxlLmxlbmd0aDtzKyspe3ZhciBsPWVbc107aWYobil7aWYobC5zdGFydExpbmU+bi5zdGFydExpbmUpaWYobC5lbmRMaW5lPD1uLmVuZExpbmUpci5wdXNoKG4pLG49bCxvKHMsci5sZW5ndGgpO2Vsc2UgaWYobC5zdGFydExpbmU+bi5lbmRMaW5lKXtkb3tuPXIucG9wKCl9d2hpbGUobiYmbC5zdGFydExpbmU+bi5lbmRMaW5lKTtuJiZyLnB1c2gobiksbj1sLG8ocyxyLmxlbmd0aCl9fWVsc2Ugbj1sLG8ocywwKX12YXIgYz0wLGg9MDtmb3Iocz0wO3M8YS5sZW5ndGg7cysrKXt2YXIgZD1hW3NdO2lmKGQpe2lmKGQrYz50KXtoPXM7YnJlYWt9Yys9ZH19dmFyIHU9W107Zm9yKHM9MDtzPGUubGVuZ3RoO3MrKyl7dmFyIHA9aVtzXTsibnVtYmVyIj09dHlwZW9mIHAmJihwPGh8fHA9PT1oJiZjKys8dCkmJnUucHVzaChlW3NdKX1yZXR1cm4gdX0oaSxmKTppfWZ1bmN0aW9uIFVvKGUsdCl7cmV0dXJuIHQubWFwKChmdW5jdGlvbih0KXtmb3IodmFyIG49ZnVuY3Rpb24oZSx0KXt2YXIgbj1NYShlLmdldFRleHQoKSkscj1lLm9mZnNldEF0KHQpLGk9bi5maW5kTm9kZUF0KHIpLGE9ZnVuY3Rpb24oZSl7dmFyIHQ9ZSxuPWZ1bmN0aW9uKGUpe3JldHVybiBlLnN0YXJ0VGFnRW5kJiZlLmVuZFRhZ1N0YXJ0JiZlLnN0YXJ0VGFnRW5kPGUuZW5kVGFnU3RhcnQ/W1tlLnN0YXJ0VGFnRW5kLGUuZW5kVGFnU3RhcnRdLFtlLnN0YXJ0LGUuZW5kXV06W1tlLnN0YXJ0LGUuZW5kXV19LHI9W107Zm9yKDt0LnBhcmVudDspbih0PXQucGFyZW50KS5mb3JFYWNoKChmdW5jdGlvbihlKXtyZXR1cm4gci5wdXNoKGUpfSkpO3JldHVybiByfShpKTtpZihpLnN0YXJ0VGFnRW5kJiYhaS5lbmRUYWdTdGFydCl7aWYoaS5zdGFydFRhZ0VuZCE9PWkuZW5kKXJldHVybltbaS5zdGFydCxpLmVuZF1dO3ZhciBvPXJyLmNyZWF0ZShlLnBvc2l0aW9uQXQoaS5zdGFydFRhZ0VuZC0yKSxlLnBvc2l0aW9uQXQoaS5zdGFydFRhZ0VuZCkpO3JldHVybiIvPiI9PT1lLmdldFRleHQobyk/YS51bnNoaWZ0KFtpLnN0YXJ0KzEsaS5zdGFydFRhZ0VuZC0yXSk6YS51bnNoaWZ0KFtpLnN0YXJ0KzEsaS5zdGFydFRhZ0VuZC0xXSksYT1IbyhlLGkscikuY29uY2F0KGEpfWlmKCFpLnN0YXJ0VGFnRW5kfHwhaS5lbmRUYWdTdGFydClyZXR1cm4gYTtyZXR1cm4gYS51bnNoaWZ0KFtpLnN0YXJ0LGkuZW5kXSksaS5zdGFydDxyJiZyPGkuc3RhcnRUYWdFbmQ/KGEudW5zaGlmdChbaS5zdGFydCsxLGkuc3RhcnRUYWdFbmQtMV0pLGE9SG8oZSxpLHIpLmNvbmNhdChhKSk6aS5zdGFydFRhZ0VuZDw9ciYmcjw9aS5lbmRUYWdTdGFydD8oYS51bnNoaWZ0KFtpLnN0YXJ0VGFnRW5kLGkuZW5kVGFnU3RhcnRdKSxhKToocj49aS5lbmRUYWdTdGFydCsyJiZhLnVuc2hpZnQoW2kuZW5kVGFnU3RhcnQrMixpLmVuZC0xXSksYSl9KGUsdCkscj12b2lkIDAsaT12b2lkIDAsYT1uLmxlbmd0aC0xO2E+PTA7YS0tKXt2YXIgbz1uW2FdO3ImJm9bMF09PT1yWzBdJiZvWzFdPT09clsxXXx8KGk9UGkuY3JlYXRlKHJyLmNyZWF0ZShlLnBvc2l0aW9uQXQoblthXVswXSksZS5wb3NpdGlvbkF0KG5bYV1bMV0pKSxpKSkscj1vfXJldHVybiBpfHwoaT1QaS5jcmVhdGUocnIuY3JlYXRlKHQsdCkpKSxpfSkpfWZ1bmN0aW9uIEhvKGUsdCxuKXtmb3IodmFyIHI9cnIuY3JlYXRlKGUucG9zaXRpb25BdCh0LnN0YXJ0KSxlLnBvc2l0aW9uQXQodC5lbmQpKSxpPWUuZ2V0VGV4dChyKSxhPW4tdC5zdGFydCxvPUNhKGkpLHM9by5zY2FuKCksbD10LnN0YXJ0LGM9W10saD0hMSxkPS0xO3MhPT1ZaS5FT1M7KXtzd2l0Y2gocyl7Y2FzZSBZaS5BdHRyaWJ1dGVOYW1lOmlmKGE8by5nZXRUb2tlbk9mZnNldCgpKXtoPSExO2JyZWFrfWE8PW8uZ2V0VG9rZW5FbmQoKSYmYy51bnNoaWZ0KFtvLmdldFRva2VuT2Zmc2V0KCksby5nZXRUb2tlbkVuZCgpXSksaD0hMCxkPW8uZ2V0VG9rZW5PZmZzZXQoKTticmVhaztjYXNlIFlpLkF0dHJpYnV0ZVZhbHVlOmlmKCFoKWJyZWFrO3ZhciB1PW8uZ2V0VG9rZW5UZXh0KCk7aWYoYTxvLmdldFRva2VuT2Zmc2V0KCkpe2MucHVzaChbZCxvLmdldFRva2VuRW5kKCldKTticmVha31hPj1vLmdldFRva2VuT2Zmc2V0KCkmJmE8PW8uZ2V0VG9rZW5FbmQoKSYmKGMudW5zaGlmdChbby5nZXRUb2tlbk9mZnNldCgpLG8uZ2V0VG9rZW5FbmQoKV0pLCgnIic9PT11WzBdJiYnIic9PT11W3UubGVuZ3RoLTFdfHwiJyI9PT11WzBdJiYiJyI9PT11W3UubGVuZ3RoLTFdKSYmYT49by5nZXRUb2tlbk9mZnNldCgpKzEmJmE8PW8uZ2V0VG9rZW5FbmQoKS0xJiZjLnVuc2hpZnQoW28uZ2V0VG9rZW5PZmZzZXQoKSsxLG8uZ2V0VG9rZW5FbmQoKS0xXSksYy5wdXNoKFtkLG8uZ2V0VG9rZW5FbmQoKV0pKX1zPW8uc2NhbigpfXJldHVybiBjLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuW2VbMF0rbCxlWzFdK2xdfSkpfXZhciB6bz17dmVyc2lvbjoxLjEsdGFnczpbe25hbWU6Imh0bWwiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBodG1sIGVsZW1lbnQgcmVwcmVzZW50cyB0aGUgcm9vdCBvZiBhbiBIVE1MIGRvY3VtZW50LiJ9LGF0dHJpYnV0ZXM6W3tuYW1lOiJtYW5pZmVzdCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiU3BlY2lmaWVzIHRoZSBVUkkgb2YgYSByZXNvdXJjZSBtYW5pZmVzdCBpbmRpY2F0aW5nIHJlc291cmNlcyB0aGF0IHNob3VsZCBiZSBjYWNoZWQgbG9jYWxseS4gU2VlIFtVc2luZyB0aGUgYXBwbGljYXRpb24gY2FjaGVdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvVXNpbmdfdGhlX2FwcGxpY2F0aW9uX2NhY2hlKSBmb3IgZGV0YWlscy4ifX0se25hbWU6InZlcnNpb24iLGRlc2NyaXB0aW9uOidTcGVjaWZpZXMgdGhlIHZlcnNpb24gb2YgdGhlIEhUTUwgW0RvY3VtZW50IFR5cGUgRGVmaW5pdGlvbl0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9HbG9zc2FyeS9EVEQgIkRvY3VtZW50IFR5cGUgRGVmaW5pdGlvbjogSW4gSFRNTCwgdGhlIGRvY3R5cGUgaXMgdGhlIHJlcXVpcmVkICI8IURPQ1RZUEUgaHRtbD4iIHByZWFtYmxlIGZvdW5kIGF0IHRoZSB0b3Agb2YgYWxsIGRvY3VtZW50cy4gSXRzIHNvbGUgcHVycG9zZSBpcyB0byBwcmV2ZW50IGEgYnJvd3NlciBmcm9tIHN3aXRjaGluZyBpbnRvIHNvLWNhbGxlZCDigJxxdWlya3MgbW9kZeKAnSB3aGVuIHJlbmRlcmluZyBhIGRvY3VtZW50OyB0aGF0IGlzLCB0aGUgIjwhRE9DVFlQRSBodG1sPiIgZG9jdHlwZSBlbnN1cmVzIHRoYXQgdGhlIGJyb3dzZXIgbWFrZXMgYSBiZXN0LWVmZm9ydCBhdHRlbXB0IGF0IGZvbGxvd2luZyB0aGUgcmVsZXZhbnQgc3BlY2lmaWNhdGlvbnMsIHJhdGhlciB0aGFuIHVzaW5nIGEgZGlmZmVyZW50IHJlbmRlcmluZyBtb2RlIHRoYXQgaXMgaW5jb21wYXRpYmxlIHdpdGggc29tZSBzcGVjaWZpY2F0aW9ucy4iKSB0aGF0IGdvdmVybnMgdGhlIGN1cnJlbnQgZG9jdW1lbnQuIFRoaXMgYXR0cmlidXRlIGlzIG5vdCBuZWVkZWQsIGJlY2F1c2UgaXQgaXMgcmVkdW5kYW50IHdpdGggdGhlIHZlcnNpb24gaW5mb3JtYXRpb24gaW4gdGhlIGRvY3VtZW50IHR5cGUgZGVjbGFyYXRpb24uJ30se25hbWU6InhtbG5zIixkZXNjcmlwdGlvbjonU3BlY2lmaWVzIHRoZSBYTUwgTmFtZXNwYWNlIG9mIHRoZSBkb2N1bWVudC4gRGVmYXVsdCB2YWx1ZSBpcyBgImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiYC4gVGhpcyBpcyByZXF1aXJlZCBpbiBkb2N1bWVudHMgcGFyc2VkIHdpdGggWE1MIHBhcnNlcnMsIGFuZCBvcHRpb25hbCBpbiB0ZXh0L2h0bWwgZG9jdW1lbnRzLid9XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvaHRtbCJ9XX0se25hbWU6ImhlYWQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBoZWFkIGVsZW1lbnQgcmVwcmVzZW50cyBhIGNvbGxlY3Rpb24gb2YgbWV0YWRhdGEgZm9yIHRoZSBEb2N1bWVudC4ifSxhdHRyaWJ1dGVzOlt7bmFtZToicHJvZmlsZSIsZGVzY3JpcHRpb246IlRoZSBVUklzIG9mIG9uZSBvciBtb3JlIG1ldGFkYXRhIHByb2ZpbGVzLCBzZXBhcmF0ZWQgYnkgd2hpdGUgc3BhY2UuIn1dLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9oZWFkIn1dfSx7bmFtZToidGl0bGUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSB0aXRsZSBlbGVtZW50IHJlcHJlc2VudHMgdGhlIGRvY3VtZW50J3MgdGl0bGUgb3IgbmFtZS4gQXV0aG9ycyBzaG91bGQgdXNlIHRpdGxlcyB0aGF0IGlkZW50aWZ5IHRoZWlyIGRvY3VtZW50cyBldmVuIHdoZW4gdGhleSBhcmUgdXNlZCBvdXQgb2YgY29udGV4dCwgZm9yIGV4YW1wbGUgaW4gYSB1c2VyJ3MgaGlzdG9yeSBvciBib29rbWFya3MsIG9yIGluIHNlYXJjaCByZXN1bHRzLiBUaGUgZG9jdW1lbnQncyB0aXRsZSBpcyBvZnRlbiBkaWZmZXJlbnQgZnJvbSBpdHMgZmlyc3QgaGVhZGluZywgc2luY2UgdGhlIGZpcnN0IGhlYWRpbmcgZG9lcyBub3QgaGF2ZSB0byBzdGFuZCBhbG9uZSB3aGVuIHRha2VuIG91dCBvZiBjb250ZXh0LiJ9LGF0dHJpYnV0ZXM6W10scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3RpdGxlIn1dfSx7bmFtZToiYmFzZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGJhc2UgZWxlbWVudCBhbGxvd3MgYXV0aG9ycyB0byBzcGVjaWZ5IHRoZSBkb2N1bWVudCBiYXNlIFVSTCBmb3IgdGhlIHB1cnBvc2VzIG9mIHJlc29sdmluZyByZWxhdGl2ZSBVUkxzLCBhbmQgdGhlIG5hbWUgb2YgdGhlIGRlZmF1bHQgYnJvd3NpbmcgY29udGV4dCBmb3IgdGhlIHB1cnBvc2VzIG9mIGZvbGxvd2luZyBoeXBlcmxpbmtzLiBUaGUgZWxlbWVudCBkb2VzIG5vdCByZXByZXNlbnQgYW55IGNvbnRlbnQgYmV5b25kIHRoaXMgaW5mb3JtYXRpb24uIn0sYXR0cmlidXRlczpbe25hbWU6ImhyZWYiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBiYXNlIFVSTCB0byBiZSB1c2VkIHRocm91Z2hvdXQgdGhlIGRvY3VtZW50IGZvciByZWxhdGl2ZSBVUkwgYWRkcmVzc2VzLiBJZiB0aGlzIGF0dHJpYnV0ZSBpcyBzcGVjaWZpZWQsIHRoaXMgZWxlbWVudCBtdXN0IGNvbWUgYmVmb3JlIGFueSBvdGhlciBlbGVtZW50cyB3aXRoIGF0dHJpYnV0ZXMgd2hvc2UgdmFsdWVzIGFyZSBVUkxzLiBBYnNvbHV0ZSBhbmQgcmVsYXRpdmUgVVJMcyBhcmUgYWxsb3dlZC4ifX0se25hbWU6InRhcmdldCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiQSBuYW1lIG9yIGtleXdvcmQgaW5kaWNhdGluZyB0aGUgZGVmYXVsdCBsb2NhdGlvbiB0byBkaXNwbGF5IHRoZSByZXN1bHQgd2hlbiBoeXBlcmxpbmtzIG9yIGZvcm1zIGNhdXNlIG5hdmlnYXRpb24sIGZvciBlbGVtZW50cyB0aGF0IGRvIG5vdCBoYXZlIGFuIGV4cGxpY2l0IHRhcmdldCByZWZlcmVuY2UuIEl0IGlzIGEgbmFtZSBvZiwgb3Iga2V5d29yZCBmb3IsIGEgX2Jyb3dzaW5nIGNvbnRleHRfIChmb3IgZXhhbXBsZTogdGFiLCB3aW5kb3csIG9yIGlubGluZSBmcmFtZSkuIFRoZSBmb2xsb3dpbmcga2V5d29yZHMgaGF2ZSBzcGVjaWFsIG1lYW5pbmdzOlxuXG4qICAgYF9zZWxmYDogTG9hZCB0aGUgcmVzdWx0IGludG8gdGhlIHNhbWUgYnJvd3NpbmcgY29udGV4dCBhcyB0aGUgY3VycmVudCBvbmUuIFRoaXMgdmFsdWUgaXMgdGhlIGRlZmF1bHQgaWYgdGhlIGF0dHJpYnV0ZSBpcyBub3Qgc3BlY2lmaWVkLlxuKiAgIGBfYmxhbmtgOiBMb2FkIHRoZSByZXN1bHQgaW50byBhIG5ldyB1bm5hbWVkIGJyb3dzaW5nIGNvbnRleHQuXG4qICAgYF9wYXJlbnRgOiBMb2FkIHRoZSByZXN1bHQgaW50byB0aGUgcGFyZW50IGJyb3dzaW5nIGNvbnRleHQgb2YgdGhlIGN1cnJlbnQgb25lLiBJZiB0aGVyZSBpcyBubyBwYXJlbnQsIHRoaXMgb3B0aW9uIGJlaGF2ZXMgdGhlIHNhbWUgd2F5IGFzIGBfc2VsZmAuXG4qICAgYF90b3BgOiBMb2FkIHRoZSByZXN1bHQgaW50byB0aGUgdG9wLWxldmVsIGJyb3dzaW5nIGNvbnRleHQgKHRoYXQgaXMsIHRoZSBicm93c2luZyBjb250ZXh0IHRoYXQgaXMgYW4gYW5jZXN0b3Igb2YgdGhlIGN1cnJlbnQgb25lLCBhbmQgaGFzIG5vIHBhcmVudCkuIElmIHRoZXJlIGlzIG5vIHBhcmVudCwgdGhpcyBvcHRpb24gYmVoYXZlcyB0aGUgc2FtZSB3YXkgYXMgYF9zZWxmYC5cblxuSWYgdGhpcyBhdHRyaWJ1dGUgaXMgc3BlY2lmaWVkLCB0aGlzIGVsZW1lbnQgbXVzdCBjb21lIGJlZm9yZSBhbnkgb3RoZXIgZWxlbWVudHMgd2l0aCBhdHRyaWJ1dGVzIHdob3NlIHZhbHVlcyBhcmUgVVJMcy4ifX1dLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9iYXNlIn1dfSx7bmFtZToibGluayIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGxpbmsgZWxlbWVudCBhbGxvd3MgYXV0aG9ycyB0byBsaW5rIHRoZWlyIGRvY3VtZW50IHRvIG90aGVyIHJlc291cmNlcy4ifSxhdHRyaWJ1dGVzOlt7bmFtZToiaHJlZiIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTonVGhpcyBhdHRyaWJ1dGUgc3BlY2lmaWVzIHRoZSBbVVJMXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0dsb3NzYXJ5L1VSTCAiVVJMOiBVbmlmb3JtIFJlc291cmNlIExvY2F0b3IgKFVSTCkgaXMgYSB0ZXh0IHN0cmluZyBzcGVjaWZ5aW5nIHdoZXJlIGEgcmVzb3VyY2UgY2FuIGJlIGZvdW5kIG9uIHRoZSBJbnRlcm5ldC4iKSBvZiB0aGUgbGlua2VkIHJlc291cmNlLiBBIFVSTCBjYW4gYmUgYWJzb2x1dGUgb3IgcmVsYXRpdmUuJ319LHtuYW1lOiJjcm9zc29yaWdpbiIsdmFsdWVTZXQ6InhvIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOidUaGlzIGVudW1lcmF0ZWQgYXR0cmlidXRlIGluZGljYXRlcyB3aGV0aGVyIFtDT1JTXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0dsb3NzYXJ5L0NPUlMgIkNPUlM6IENPUlMgKENyb3NzLU9yaWdpbiBSZXNvdXJjZSBTaGFyaW5nKSBpcyBhIHN5c3RlbSwgY29uc2lzdGluZyBvZiB0cmFuc21pdHRpbmcgSFRUUCBoZWFkZXJzLCB0aGF0IGRldGVybWluZXMgd2hldGhlciBicm93c2VycyBibG9jayBmcm9udGVuZCBKYXZhU2NyaXB0IGNvZGUgZnJvbSBhY2Nlc3NpbmcgcmVzcG9uc2VzIGZvciBjcm9zcy1vcmlnaW4gcmVxdWVzdHMuIikgbXVzdCBiZSB1c2VkIHdoZW4gZmV0Y2hpbmcgdGhlIHJlc291cmNlLiBbQ09SUy1lbmFibGVkIGltYWdlc10oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9DT1JTX0VuYWJsZWRfSW1hZ2UpIGNhbiBiZSByZXVzZWQgaW4gdGhlIFtgPGNhbnZhcz5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvY2FudmFzICJVc2UgdGhlIEhUTUwgPGNhbnZhcz4gZWxlbWVudCB3aXRoIGVpdGhlciB0aGUgY2FudmFzIHNjcmlwdGluZyBBUEkgb3IgdGhlIFdlYkdMIEFQSSB0byBkcmF3IGdyYXBoaWNzIGFuZCBhbmltYXRpb25zLiIpIGVsZW1lbnQgd2l0aG91dCBiZWluZyBfdGFpbnRlZF8uIFRoZSBhbGxvd2VkIHZhbHVlcyBhcmU6XG5cbmBhbm9ueW1vdXNgXG5cbkEgY3Jvc3Mtb3JpZ2luIHJlcXVlc3QgKGkuZS4gd2l0aCBhbiBbYE9yaWdpbmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUVFAvSGVhZGVycy9PcmlnaW4gIlRoZSBPcmlnaW4gcmVxdWVzdCBoZWFkZXIgaW5kaWNhdGVzIHdoZXJlIGEgZmV0Y2ggb3JpZ2luYXRlcyBmcm9tLiBJdCBkb2VzblwndCBpbmNsdWRlIGFueSBwYXRoIGluZm9ybWF0aW9uLCBidXQgb25seSB0aGUgc2VydmVyIG5hbWUuIEl0IGlzIHNlbnQgd2l0aCBDT1JTIHJlcXVlc3RzLCBhcyB3ZWxsIGFzIHdpdGggUE9TVCByZXF1ZXN0cy4gSXQgaXMgc2ltaWxhciB0byB0aGUgUmVmZXJlciBoZWFkZXIsIGJ1dCwgdW5saWtlIHRoaXMgaGVhZGVyLCBpdCBkb2VzblwndCBkaXNjbG9zZSB0aGUgd2hvbGUgcGF0aC4iKSBIVFRQIGhlYWRlcikgaXMgcGVyZm9ybWVkLCBidXQgbm8gY3JlZGVudGlhbCBpcyBzZW50IChpLmUuIG5vIGNvb2tpZSwgWC41MDkgY2VydGlmaWNhdGUsIG9yIEhUVFAgQmFzaWMgYXV0aGVudGljYXRpb24pLiBJZiB0aGUgc2VydmVyIGRvZXMgbm90IGdpdmUgY3JlZGVudGlhbHMgdG8gdGhlIG9yaWdpbiBzaXRlIChieSBub3Qgc2V0dGluZyB0aGUgW2BBY2Nlc3MtQ29udHJvbC1BbGxvdy1PcmlnaW5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVFRQL0hlYWRlcnMvQWNjZXNzLUNvbnRyb2wtQWxsb3ctT3JpZ2luICJUaGUgQWNjZXNzLUNvbnRyb2wtQWxsb3ctT3JpZ2luIHJlc3BvbnNlIGhlYWRlciBpbmRpY2F0ZXMgd2hldGhlciB0aGUgcmVzcG9uc2UgY2FuIGJlIHNoYXJlZCB3aXRoIHJlcXVlc3RpbmcgY29kZSBmcm9tIHRoZSBnaXZlbiBvcmlnaW4uIikgSFRUUCBoZWFkZXIpIHRoZSBpbWFnZSB3aWxsIGJlIHRhaW50ZWQgYW5kIGl0cyB1c2FnZSByZXN0cmljdGVkLlxuXG5gdXNlLWNyZWRlbnRpYWxzYFxuXG5BIGNyb3NzLW9yaWdpbiByZXF1ZXN0IChpLmUuIHdpdGggYW4gYE9yaWdpbmAgSFRUUCBoZWFkZXIpIGlzIHBlcmZvcm1lZCBhbG9uZyB3aXRoIGEgY3JlZGVudGlhbCBzZW50IChpLmUuIGEgY29va2llLCBjZXJ0aWZpY2F0ZSwgYW5kL29yIEhUVFAgQmFzaWMgYXV0aGVudGljYXRpb24gaXMgcGVyZm9ybWVkKS4gSWYgdGhlIHNlcnZlciBkb2VzIG5vdCBnaXZlIGNyZWRlbnRpYWxzIHRvIHRoZSBvcmlnaW4gc2l0ZSAodGhyb3VnaCBbYEFjY2Vzcy1Db250cm9sLUFsbG93LUNyZWRlbnRpYWxzYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRUUC9IZWFkZXJzL0FjY2Vzcy1Db250cm9sLUFsbG93LUNyZWRlbnRpYWxzICJUaGUgQWNjZXNzLUNvbnRyb2wtQWxsb3ctQ3JlZGVudGlhbHMgcmVzcG9uc2UgaGVhZGVyIHRlbGxzIGJyb3dzZXJzIHdoZXRoZXIgdG8gZXhwb3NlIHRoZSByZXNwb25zZSB0byBmcm9udGVuZCBKYXZhU2NyaXB0IGNvZGUgd2hlbiB0aGUgcmVxdWVzdFwncyBjcmVkZW50aWFscyBtb2RlIChSZXF1ZXN0LmNyZWRlbnRpYWxzKSBpcyAiaW5jbHVkZSIuIikgSFRUUCBoZWFkZXIpLCB0aGUgcmVzb3VyY2Ugd2lsbCBiZSBfdGFpbnRlZF8gYW5kIGl0cyB1c2FnZSByZXN0cmljdGVkLlxuXG5JZiB0aGUgYXR0cmlidXRlIGlzIG5vdCBwcmVzZW50LCB0aGUgcmVzb3VyY2UgaXMgZmV0Y2hlZCB3aXRob3V0IGEgW0NPUlNdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvR2xvc3NhcnkvQ09SUyAiQ09SUzogQ09SUyAoQ3Jvc3MtT3JpZ2luIFJlc291cmNlIFNoYXJpbmcpIGlzIGEgc3lzdGVtLCBjb25zaXN0aW5nIG9mIHRyYW5zbWl0dGluZyBIVFRQIGhlYWRlcnMsIHRoYXQgZGV0ZXJtaW5lcyB3aGV0aGVyIGJyb3dzZXJzIGJsb2NrIGZyb250ZW5kIEphdmFTY3JpcHQgY29kZSBmcm9tIGFjY2Vzc2luZyByZXNwb25zZXMgZm9yIGNyb3NzLW9yaWdpbiByZXF1ZXN0cy4iKSByZXF1ZXN0IChpLmUuIHdpdGhvdXQgc2VuZGluZyB0aGUgYE9yaWdpbmAgSFRUUCBoZWFkZXIpLCBwcmV2ZW50aW5nIGl0cyBub24tdGFpbnRlZCB1c2FnZS4gSWYgaW52YWxpZCwgaXQgaXMgaGFuZGxlZCBhcyBpZiB0aGUgZW51bWVyYXRlZCBrZXl3b3JkICoqYW5vbnltb3VzKiogd2FzIHVzZWQuIFNlZSBbQ09SUyBzZXR0aW5ncyBhdHRyaWJ1dGVzXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0NPUlNfc2V0dGluZ3NfYXR0cmlidXRlcykgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24uJ319LHtuYW1lOiJyZWwiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoaXMgYXR0cmlidXRlIG5hbWVzIGEgcmVsYXRpb25zaGlwIG9mIHRoZSBsaW5rZWQgZG9jdW1lbnQgdG8gdGhlIGN1cnJlbnQgZG9jdW1lbnQuIFRoZSBhdHRyaWJ1dGUgbXVzdCBiZSBhIHNwYWNlLXNlcGFyYXRlZCBsaXN0IG9mIHRoZSBbbGluayB0eXBlcyB2YWx1ZXNdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvTGlua190eXBlcykuIn19LHtuYW1lOiJtZWRpYSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhpcyBhdHRyaWJ1dGUgc3BlY2lmaWVzIHRoZSBtZWRpYSB0aGF0IHRoZSBsaW5rZWQgcmVzb3VyY2UgYXBwbGllcyB0by4gSXRzIHZhbHVlIG11c3QgYmUgYSBtZWRpYSB0eXBlIC8gW21lZGlhIHF1ZXJ5XShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvTWVkaWFfcXVlcmllcykuIFRoaXMgYXR0cmlidXRlIGlzIG1haW5seSB1c2VmdWwgd2hlbiBsaW5raW5nIHRvIGV4dGVybmFsIHN0eWxlc2hlZXRzIOKAlCBpdCBhbGxvd3MgdGhlIHVzZXIgYWdlbnQgdG8gcGljayB0aGUgYmVzdCBhZGFwdGVkIG9uZSBmb3IgdGhlIGRldmljZSBpdCBydW5zIG9uLlxuXG4qKk5vdGVzOioqXG5cbiogICBJbiBIVE1MIDQsIHRoaXMgY2FuIG9ubHkgYmUgYSBzaW1wbGUgd2hpdGUtc3BhY2Utc2VwYXJhdGVkIGxpc3Qgb2YgbWVkaWEgZGVzY3JpcHRpb24gbGl0ZXJhbHMsIGkuZS4sIFttZWRpYSB0eXBlcyBhbmQgZ3JvdXBzXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvQG1lZGlhKSwgd2hlcmUgZGVmaW5lZCBhbmQgYWxsb3dlZCBhcyB2YWx1ZXMgZm9yIHRoaXMgYXR0cmlidXRlLCBzdWNoIGFzIGBwcmludGAsIGBzY3JlZW5gLCBgYXVyYWxgLCBgYnJhaWxsZWAuIEhUTUw1IGV4dGVuZGVkIHRoaXMgdG8gYW55IGtpbmQgb2YgW21lZGlhIHF1ZXJpZXNdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9NZWRpYV9xdWVyaWVzKSwgd2hpY2ggYXJlIGEgc3VwZXJzZXQgb2YgdGhlIGFsbG93ZWQgdmFsdWVzIG9mIEhUTUwgNC5cbiogICBCcm93c2VycyBub3Qgc3VwcG9ydGluZyBbQ1NTMyBNZWRpYSBRdWVyaWVzXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvTWVkaWFfcXVlcmllcykgd29uJ3QgbmVjZXNzYXJpbHkgcmVjb2duaXplIHRoZSBhZGVxdWF0ZSBsaW5rOyBkbyBub3QgZm9yZ2V0IHRvIHNldCBmYWxsYmFjayBsaW5rcywgdGhlIHJlc3RyaWN0ZWQgc2V0IG9mIG1lZGlhIHF1ZXJpZXMgZGVmaW5lZCBpbiBIVE1MIDQuIn19LHtuYW1lOiJocmVmbGFuZyIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhpcyBhdHRyaWJ1dGUgaW5kaWNhdGVzIHRoZSBsYW5ndWFnZSBvZiB0aGUgbGlua2VkIHJlc291cmNlLiBJdCBpcyBwdXJlbHkgYWR2aXNvcnkuIEFsbG93ZWQgdmFsdWVzIGFyZSBkZXRlcm1pbmVkIGJ5IFtCQ1A0N10oaHR0cHM6Ly93d3cuaWV0Zi5vcmcvcmZjL2JjcC9iY3A0Ny50eHQpLiBVc2UgdGhpcyBhdHRyaWJ1dGUgb25seSBpZiB0aGUgW2BocmVmYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2EjYXR0ci1ocmVmKSBhdHRyaWJ1dGUgaXMgcHJlc2VudC4ifX0se25hbWU6InR5cGUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6J1RoaXMgYXR0cmlidXRlIGlzIHVzZWQgdG8gZGVmaW5lIHRoZSB0eXBlIG9mIHRoZSBjb250ZW50IGxpbmtlZCB0by4gVGhlIHZhbHVlIG9mIHRoZSBhdHRyaWJ1dGUgc2hvdWxkIGJlIGEgTUlNRSB0eXBlIHN1Y2ggYXMgKip0ZXh0L2h0bWwqKiwgKip0ZXh0L2NzcyoqLCBhbmQgc28gb24uIFRoZSBjb21tb24gdXNlIG9mIHRoaXMgYXR0cmlidXRlIGlzIHRvIGRlZmluZSB0aGUgdHlwZSBvZiBzdHlsZXNoZWV0IGJlaW5nIHJlZmVyZW5jZWQgKHN1Y2ggYXMgKip0ZXh0L2NzcyoqKSwgYnV0IGdpdmVuIHRoYXQgQ1NTIGlzIHRoZSBvbmx5IHN0eWxlc2hlZXQgbGFuZ3VhZ2UgdXNlZCBvbiB0aGUgd2ViLCBub3Qgb25seSBpcyBpdCBwb3NzaWJsZSB0byBvbWl0IHRoZSBgdHlwZWAgYXR0cmlidXRlLCBidXQgaXMgYWN0dWFsbHkgbm93IHJlY29tbWVuZGVkIHByYWN0aWNlLiBJdCBpcyBhbHNvIHVzZWQgb24gYHJlbD0icHJlbG9hZCJgIGxpbmsgdHlwZXMsIHRvIG1ha2Ugc3VyZSB0aGUgYnJvd3NlciBvbmx5IGRvd25sb2FkcyBmaWxlIHR5cGVzIHRoYXQgaXQgc3VwcG9ydHMuJ319LHtuYW1lOiJzaXplcyIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhpcyBhdHRyaWJ1dGUgZGVmaW5lcyB0aGUgc2l6ZXMgb2YgdGhlIGljb25zIGZvciB2aXN1YWwgbWVkaWEgY29udGFpbmVkIGluIHRoZSByZXNvdXJjZS4gSXQgbXVzdCBiZSBwcmVzZW50IG9ubHkgaWYgdGhlIFtgcmVsYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2xpbmsjYXR0ci1yZWwpIGNvbnRhaW5zIGEgdmFsdWUgb2YgYGljb25gIG9yIGEgbm9uLXN0YW5kYXJkIHR5cGUgc3VjaCBhcyBBcHBsZSdzIGBhcHBsZS10b3VjaC1pY29uYC4gSXQgbWF5IGhhdmUgdGhlIGZvbGxvd2luZyB2YWx1ZXM6XG5cbiogICBgYW55YCwgbWVhbmluZyB0aGF0IHRoZSBpY29uIGNhbiBiZSBzY2FsZWQgdG8gYW55IHNpemUgYXMgaXQgaXMgaW4gYSB2ZWN0b3IgZm9ybWF0LCBsaWtlIGBpbWFnZS9zdmcreG1sYC5cbiogICBhIHdoaXRlLXNwYWNlIHNlcGFyYXRlZCBsaXN0IG9mIHNpemVzLCBlYWNoIGluIHRoZSBmb3JtYXQgYF88d2lkdGggaW4gcGl4ZWxzPl94XzxoZWlnaHQgaW4gcGl4ZWxzPl9gIG9yIGBfPHdpZHRoIGluIHBpeGVscz5fWF88aGVpZ2h0IGluIHBpeGVscz5fYC4gRWFjaCBvZiB0aGVzZSBzaXplcyBtdXN0IGJlIGNvbnRhaW5lZCBpbiB0aGUgcmVzb3VyY2UuXG5cbioqTm90ZToqKiBNb3N0IGljb24gZm9ybWF0cyBhcmUgb25seSBhYmxlIHRvIHN0b3JlIG9uZSBzaW5nbGUgaWNvbjsgdGhlcmVmb3JlIG1vc3Qgb2YgdGhlIHRpbWUgdGhlIFtgc2l6ZXNgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0dsb2JhbF9hdHRyaWJ1dGVzI2F0dHItc2l6ZXMpIGNvbnRhaW5zIG9ubHkgb25lIGVudHJ5LiBNUydzIElDTyBmb3JtYXQgZG9lcywgYXMgd2VsbCBhcyBBcHBsZSdzIElDTlMuIElDTyBpcyBtb3JlIHViaXF1aXRvdXM7IHlvdSBzaG91bGQgZGVmaW5pdGVseSB1c2UgaXQuIn19LHtuYW1lOiJhcyIsZGVzY3JpcHRpb246J1RoaXMgYXR0cmlidXRlIGlzIG9ubHkgdXNlZCB3aGVuIGByZWw9InByZWxvYWQiYCBvciBgcmVsPSJwcmVmZXRjaCJgIGhhcyBiZWVuIHNldCBvbiB0aGUgYDxsaW5rPmAgZWxlbWVudC4gSXQgc3BlY2lmaWVzIHRoZSB0eXBlIG9mIGNvbnRlbnQgYmVpbmcgbG9hZGVkIGJ5IHRoZSBgPGxpbms+YCwgd2hpY2ggaXMgbmVjZXNzYXJ5IGZvciBjb250ZW50IHByaW9yaXRpemF0aW9uLCByZXF1ZXN0IG1hdGNoaW5nLCBhcHBsaWNhdGlvbiBvZiBjb3JyZWN0IFtjb250ZW50IHNlY3VyaXR5IHBvbGljeV0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRUUC9DU1ApLCBhbmQgc2V0dGluZyBvZiBjb3JyZWN0IFtgQWNjZXB0YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRUUC9IZWFkZXJzL0FjY2VwdCAiVGhlIEFjY2VwdCByZXF1ZXN0IEhUVFAgaGVhZGVyIGFkdmVydGlzZXMgd2hpY2ggY29udGVudCB0eXBlcywgZXhwcmVzc2VkIGFzIE1JTUUgdHlwZXMsIHRoZSBjbGllbnQgaXMgYWJsZSB0byB1bmRlcnN0YW5kLiBVc2luZyBjb250ZW50IG5lZ290aWF0aW9uLCB0aGUgc2VydmVyIHRoZW4gc2VsZWN0cyBvbmUgb2YgdGhlIHByb3Bvc2FscywgdXNlcyBpdCBhbmQgaW5mb3JtcyB0aGUgY2xpZW50IG9mIGl0cyBjaG9pY2Ugd2l0aCB0aGUgQ29udGVudC1UeXBlIHJlc3BvbnNlIGhlYWRlci4gQnJvd3NlcnMgc2V0IGFkZXF1YXRlIHZhbHVlcyBmb3IgdGhpcyBoZWFkZXIgZGVwZW5kaW5nIG9uwqB0aGUgY29udGV4dCB3aGVyZSB0aGUgcmVxdWVzdCBpcyBkb25lOiB3aGVuIGZldGNoaW5nIGEgQ1NTIHN0eWxlc2hlZXQgYSBkaWZmZXJlbnQgdmFsdWUgaXMgc2V0IGZvciB0aGUgcmVxdWVzdCB0aGFuIHdoZW4gZmV0Y2hpbmcgYW4gaW1hZ2UswqB2aWRlbyBvciBhIHNjcmlwdC4iKSByZXF1ZXN0IGhlYWRlci4nfSx7bmFtZToiaW1wb3J0YW5jZSIsZGVzY3JpcHRpb246IkluZGljYXRlcyB0aGUgcmVsYXRpdmUgaW1wb3J0YW5jZSBvZiB0aGUgcmVzb3VyY2UuIFByaW9yaXR5IGhpbnRzIGFyZSBkZWxlZ2F0ZWQgdXNpbmcgdGhlIHZhbHVlczoifSx7bmFtZToiaW1wb3J0YW5jZSIsZGVzY3JpcHRpb246JyoqYGF1dG9gKio6IEluZGljYXRlc8KgKipub8KgcHJlZmVyZW5jZSoqLiBUaGUgYnJvd3NlciBtYXkgdXNlIGl0cyBvd24gaGV1cmlzdGljcyB0byBkZWNpZGUgdGhlIHByaW9yaXR5IG9mIHRoZSByZXNvdXJjZS5cblxuKipgaGlnaGAqKjogSW5kaWNhdGVzIHRvIHRoZcKgYnJvd3NlcsKgdGhhdCB0aGUgcmVzb3VyY2UgaXMgb2bCoCoqaGlnaCoqIHByaW9yaXR5LlxuXG4qKmBsb3dgKio6wqBJbmRpY2F0ZXMgdG8gdGhlwqBicm93c2VywqB0aGF0IHRoZSByZXNvdXJjZSBpcyBvZsKgKipsb3cqKiBwcmlvcml0eS5cblxuKipOb3RlOioqIFRoZSBgaW1wb3J0YW5jZWAgYXR0cmlidXRlIG1heSBvbmx5IGJlIHVzZWQgZm9yIHRoZSBgPGxpbms+YCBlbGVtZW50IGlmIGByZWw9InByZWxvYWQiYCBvciBgcmVsPSJwcmVmZXRjaCJgIGlzIHByZXNlbnQuJ30se25hbWU6ImludGVncml0eSIsZGVzY3JpcHRpb246IkNvbnRhaW5zIGlubGluZSBtZXRhZGF0YSDigJQgYSBiYXNlNjQtZW5jb2RlZCBjcnlwdG9ncmFwaGljIGhhc2ggb2YgdGhlIHJlc291cmNlIChmaWxlKSB5b3XigJlyZSB0ZWxsaW5nIHRoZSBicm93c2VyIHRvIGZldGNoLiBUaGUgYnJvd3NlciBjYW4gdXNlIHRoaXMgdG8gdmVyaWZ5IHRoYXQgdGhlIGZldGNoZWQgcmVzb3VyY2UgaGFzIGJlZW4gZGVsaXZlcmVkIGZyZWUgb2YgdW5leHBlY3RlZCBtYW5pcHVsYXRpb24uIFNlZSBbU3VicmVzb3VyY2UgSW50ZWdyaXR5XShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9TZWN1cml0eS9TdWJyZXNvdXJjZV9JbnRlZ3JpdHkpLiJ9LHtuYW1lOiJyZWZlcnJlcnBvbGljeSIsZGVzY3JpcHRpb246J0Egc3RyaW5nIGluZGljYXRpbmcgd2hpY2ggcmVmZXJyZXIgdG8gdXNlIHdoZW4gZmV0Y2hpbmcgdGhlIHJlc291cmNlOlxuXG4qICAgYG5vLXJlZmVycmVyYCBtZWFucyB0aGF0IHRoZSBbYFJlZmVyZXJgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVFRQL0hlYWRlcnMvUmVmZXJlciAiVGhlIFJlZmVyZXIgcmVxdWVzdCBoZWFkZXIgY29udGFpbnMgdGhlIGFkZHJlc3Mgb2YgdGhlIHByZXZpb3VzIHdlYiBwYWdlIGZyb20gd2hpY2ggYSBsaW5rIHRvIHRoZSBjdXJyZW50bHkgcmVxdWVzdGVkIHBhZ2Ugd2FzIGZvbGxvd2VkLiBUaGUgUmVmZXJlciBoZWFkZXIgYWxsb3dzIHNlcnZlcnMgdG8gaWRlbnRpZnkgd2hlcmUgcGVvcGxlIGFyZSB2aXNpdGluZyB0aGVtIGZyb20gYW5kIG1heSB1c2UgdGhhdCBkYXRhIGZvciBhbmFseXRpY3MsIGxvZ2dpbmcsIG9yIG9wdGltaXplZCBjYWNoaW5nLCBmb3IgZXhhbXBsZS4iKSBoZWFkZXIgd2lsbCBub3QgYmUgc2VudC5cbiogICBgbm8tcmVmZXJyZXItd2hlbi1kb3duZ3JhZGVgIG1lYW5zIHRoYXQgbm8gW2BSZWZlcmVyYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRUUC9IZWFkZXJzL1JlZmVyZXIgIlRoZSBSZWZlcmVyIHJlcXVlc3QgaGVhZGVyIGNvbnRhaW5zIHRoZSBhZGRyZXNzIG9mIHRoZSBwcmV2aW91cyB3ZWIgcGFnZSBmcm9tIHdoaWNoIGEgbGluayB0byB0aGUgY3VycmVudGx5IHJlcXVlc3RlZCBwYWdlIHdhcyBmb2xsb3dlZC4gVGhlIFJlZmVyZXIgaGVhZGVyIGFsbG93cyBzZXJ2ZXJzIHRvIGlkZW50aWZ5IHdoZXJlIHBlb3BsZSBhcmUgdmlzaXRpbmcgdGhlbSBmcm9tIGFuZCBtYXkgdXNlIHRoYXQgZGF0YSBmb3IgYW5hbHl0aWNzLCBsb2dnaW5nLCBvciBvcHRpbWl6ZWQgY2FjaGluZywgZm9yIGV4YW1wbGUuIikgaGVhZGVyIHdpbGwgYmUgc2VudCB3aGVuIG5hdmlnYXRpbmcgdG8gYW4gb3JpZ2luIHdpdGhvdXQgVExTIChIVFRQUykuIFRoaXMgaXMgYSB1c2VyIGFnZW504oCZcyBkZWZhdWx0IGJlaGF2aW9yLCBpZiBubyBwb2xpY3kgaXMgb3RoZXJ3aXNlIHNwZWNpZmllZC5cbiogICBgb3JpZ2luYCBtZWFucyB0aGF0IHRoZSByZWZlcnJlciB3aWxsIGJlIHRoZSBvcmlnaW4gb2YgdGhlIHBhZ2UsIHdoaWNoIGlzIHJvdWdobHkgdGhlIHNjaGVtZSwgdGhlIGhvc3QsIGFuZCB0aGUgcG9ydC5cbiogICBgb3JpZ2luLXdoZW4tY3Jvc3Mtb3JpZ2luYCBtZWFucyB0aGF0IG5hdmlnYXRpbmcgdG8gb3RoZXIgb3JpZ2lucyB3aWxsIGJlIGxpbWl0ZWQgdG8gdGhlIHNjaGVtZSwgdGhlIGhvc3QsIGFuZCB0aGUgcG9ydCwgd2hpbGUgbmF2aWdhdGluZyBvbiB0aGUgc2FtZSBvcmlnaW4gd2lsbCBpbmNsdWRlIHRoZSByZWZlcnJlclwncyBwYXRoLlxuKiAgIGB1bnNhZmUtdXJsYCBtZWFucyB0aGF0IHRoZSByZWZlcnJlciB3aWxsIGluY2x1ZGUgdGhlIG9yaWdpbiBhbmQgdGhlIHBhdGggKGJ1dCBub3QgdGhlIGZyYWdtZW50LCBwYXNzd29yZCwgb3IgdXNlcm5hbWUpLiBUaGlzIGNhc2UgaXMgdW5zYWZlIGJlY2F1c2UgaXQgY2FuIGxlYWsgb3JpZ2lucyBhbmQgcGF0aHMgZnJvbSBUTFMtcHJvdGVjdGVkIHJlc291cmNlcyB0byBpbnNlY3VyZSBvcmlnaW5zLid9LHtuYW1lOiJ0aXRsZSIsZGVzY3JpcHRpb246J1RoZSBgdGl0bGVgIGF0dHJpYnV0ZSBoYXMgc3BlY2lhbCBzZW1hbnRpY3Mgb24gdGhlIGA8bGluaz5gIGVsZW1lbnQuIFdoZW4gdXNlZCBvbiBhIGA8bGluayByZWw9InN0eWxlc2hlZXQiPmAgaXQgZGVmaW5lcyBhIFtwcmVmZXJyZWQgb3IgYW4gYWx0ZXJuYXRlIHN0eWxlc2hlZXRdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9BbHRlcm5hdGl2ZV9zdHlsZV9zaGVldHMpLiBJbmNvcnJlY3RseSB1c2luZyBpdCBtYXkgW2NhdXNlIHRoZSBzdHlsZXNoZWV0IHRvIGJlIGlnbm9yZWRdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvQ29ycmVjdGx5X1VzaW5nX1RpdGxlc19XaXRoX0V4dGVybmFsX1N0eWxlc2hlZXRzKS4nfV0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2xpbmsifV19LHtuYW1lOiJtZXRhIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgbWV0YSBlbGVtZW50IHJlcHJlc2VudHMgdmFyaW91cyBraW5kcyBvZiBtZXRhZGF0YSB0aGF0IGNhbm5vdCBiZSBleHByZXNzZWQgdXNpbmcgdGhlIHRpdGxlLCBiYXNlLCBsaW5rLCBzdHlsZSwgYW5kIHNjcmlwdCBlbGVtZW50cy4ifSxhdHRyaWJ1dGVzOlt7bmFtZToibmFtZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTonVGhpcyBhdHRyaWJ1dGUgZGVmaW5lcyB0aGUgbmFtZSBvZiBhIHBpZWNlIG9mIGRvY3VtZW50LWxldmVsIG1ldGFkYXRhLiBJdCBzaG91bGQgbm90IGJlIHNldCBpZiBvbmUgb2YgdGhlIGF0dHJpYnV0ZXMgW2BpdGVtcHJvcGBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvR2xvYmFsX2F0dHJpYnV0ZXMjYXR0ci1pdGVtcHJvcCksIFtgaHR0cC1lcXVpdmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9tZXRhI2F0dHItaHR0cC1lcXVpdikgb3IgW2BjaGFyc2V0YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L21ldGEjYXR0ci1jaGFyc2V0KSBpcyBhbHNvIHNldC5cblxuVGhpcyBtZXRhZGF0YSBuYW1lIGlzIGFzc29jaWF0ZWQgd2l0aCB0aGUgdmFsdWUgY29udGFpbmVkIGJ5IHRoZSBbYGNvbnRlbnRgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvbWV0YSNhdHRyLWNvbnRlbnQpIGF0dHJpYnV0ZS4gVGhlIHBvc3NpYmxlIHZhbHVlcyBmb3IgdGhlIG5hbWUgYXR0cmlidXRlIGFyZTpcblxuKiAgIGBhcHBsaWNhdGlvbi1uYW1lYCB3aGljaCBkZWZpbmVzIHRoZSBuYW1lIG9mIHRoZSBhcHBsaWNhdGlvbiBydW5uaW5nIGluIHRoZSB3ZWIgcGFnZS5cbiAgICBcbiAgICAqKk5vdGU6KipcbiAgICBcbiAgICAqICAgQnJvd3NlcnMgbWF5IHVzZSB0aGlzIHRvIGlkZW50aWZ5IHRoZSBhcHBsaWNhdGlvbi4gSXQgaXMgZGlmZmVyZW50IGZyb20gdGhlIFtgPHRpdGxlPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC90aXRsZSAiVGhlIEhUTUwgVGl0bGUgZWxlbWVudCAoPHRpdGxlPikgZGVmaW5lcyB0aGUgZG9jdW1lbnRcJ3MgdGl0bGUgdGhhdCBpcyBzaG93biBpbiBhIGJyb3dzZXJcJ3MgdGl0bGUgYmFyIG9yIGEgcGFnZVwncyB0YWIuIikgZWxlbWVudCwgd2hpY2ggdXN1YWxseSBjb250YWluIHRoZSBhcHBsaWNhdGlvbiBuYW1lLCBidXQgbWF5IGFsc28gY29udGFpbiBpbmZvcm1hdGlvbiBsaWtlIHRoZSBkb2N1bWVudCBuYW1lIG9yIGEgc3RhdHVzLlxuICAgICogICBTaW1wbGUgd2ViIHBhZ2VzIHNob3VsZG5cJ3QgZGVmaW5lIGFuIGFwcGxpY2F0aW9uLW5hbWUuXG4gICAgXG4qICAgYGF1dGhvcmAgd2hpY2ggZGVmaW5lcyB0aGUgbmFtZSBvZiB0aGUgZG9jdW1lbnRcJ3MgYXV0aG9yLlxuKiAgIGBkZXNjcmlwdGlvbmAgd2hpY2ggY29udGFpbnMgYSBzaG9ydCBhbmQgYWNjdXJhdGUgc3VtbWFyeSBvZiB0aGUgY29udGVudCBvZiB0aGUgcGFnZS4gU2V2ZXJhbCBicm93c2VycywgbGlrZSBGaXJlZm94IGFuZCBPcGVyYSwgdXNlIHRoaXMgYXMgdGhlIGRlZmF1bHQgZGVzY3JpcHRpb24gb2YgYm9va21hcmtlZCBwYWdlcy5cbiogICBgZ2VuZXJhdG9yYCB3aGljaCBjb250YWlucyB0aGUgaWRlbnRpZmllciBvZiB0aGUgc29mdHdhcmUgdGhhdCBnZW5lcmF0ZWQgdGhlIHBhZ2UuXG4qICAgYGtleXdvcmRzYCB3aGljaCBjb250YWlucyB3b3JkcyByZWxldmFudCB0byB0aGUgcGFnZVwncyBjb250ZW50IHNlcGFyYXRlZCBieSBjb21tYXMuXG4qICAgYHJlZmVycmVyYCB3aGljaCBjb250cm9scyB0aGUgW2BSZWZlcmVyYCBIVFRQIGhlYWRlcl0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRUUC9IZWFkZXJzL1JlZmVyZXIpIGF0dGFjaGVkIHRvIHJlcXVlc3RzIHNlbnQgZnJvbSB0aGUgZG9jdW1lbnQ6XG4gICAgXG4gICAgVmFsdWVzIGZvciB0aGUgYGNvbnRlbnRgIGF0dHJpYnV0ZSBvZiBgPG1ldGEgbmFtZT0icmVmZXJyZXIiPmBcbiAgICBcbiAgICBgbm8tcmVmZXJyZXJgXG4gICAgXG4gICAgRG8gbm90IHNlbmQgYSBIVFRQIGBSZWZlcnJlcmAgaGVhZGVyLlxuICAgIFxuICAgIGBvcmlnaW5gXG4gICAgXG4gICAgU2VuZCB0aGUgW29yaWdpbl0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9HbG9zc2FyeS9PcmlnaW4pIG9mIHRoZSBkb2N1bWVudC5cbiAgICBcbiAgICBgbm8tcmVmZXJyZXItd2hlbi1kb3duZ3JhZGVgXG4gICAgXG4gICAgU2VuZCB0aGUgW29yaWdpbl0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9HbG9zc2FyeS9PcmlnaW4pIGFzIGEgcmVmZXJyZXIgdG8gVVJMcyBhcyBzZWN1cmUgYXMgdGhlIGN1cnJlbnQgcGFnZSwgKGh0dHBz4oaSaHR0cHMpLCBidXQgZG9lcyBub3Qgc2VuZCBhIHJlZmVycmVyIHRvIGxlc3Mgc2VjdXJlIFVSTHMgKGh0dHBz4oaSaHR0cCkuIFRoaXMgaXMgdGhlIGRlZmF1bHQgYmVoYXZpb3VyLlxuICAgIFxuICAgIGBvcmlnaW4td2hlbi1jcm9zcy1vcmlnaW5gXG4gICAgXG4gICAgU2VuZCB0aGUgZnVsbCBVUkwgKHN0cmlwcGVkIG9mIHBhcmFtZXRlcnMpIGZvciBzYW1lLW9yaWdpbiByZXF1ZXN0cywgYnV0IG9ubHkgc2VuZCB0aGUgW29yaWdpbl0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9HbG9zc2FyeS9PcmlnaW4pIGZvciBvdGhlciBjYXNlcy5cbiAgICBcbiAgICBgc2FtZS1vcmlnaW5gXG4gICAgXG4gICAgQSByZWZlcnJlciB3aWxsIGJlIHNlbnQgZm9yIFtzYW1lLXNpdGUgb3JpZ2luc10oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvU2VjdXJpdHkvU2FtZS1vcmlnaW5fcG9saWN5KSwgYnV0IGNyb3NzLW9yaWdpbiByZXF1ZXN0cyB3aWxsIGNvbnRhaW4gbm8gcmVmZXJyZXIgaW5mb3JtYXRpb24uXG4gICAgXG4gICAgYHN0cmljdC1vcmlnaW5gXG4gICAgXG4gICAgT25seSBzZW5kIHRoZSBvcmlnaW4gb2YgdGhlIGRvY3VtZW50IGFzIHRoZSByZWZlcnJlciB0byBhLXByaW9yaSBhcy1tdWNoLXNlY3VyZSBkZXN0aW5hdGlvbiAoSFRUUFMtPkhUVFBTKSwgYnV0IGRvblwndCBzZW5kIGl0IHRvIGEgbGVzcyBzZWN1cmUgZGVzdGluYXRpb24gKEhUVFBTLT5IVFRQKS5cbiAgICBcbiAgICBgc3RyaWN0LW9yaWdpbi13aGVuLWNyb3NzLW9yaWdpbmBcbiAgICBcbiAgICBTZW5kIGEgZnVsbCBVUkwgd2hlbiBwZXJmb3JtaW5nIGEgc2FtZS1vcmlnaW4gcmVxdWVzdCwgb25seSBzZW5kIHRoZSBvcmlnaW4gb2YgdGhlIGRvY3VtZW50IHRvIGEtcHJpb3JpIGFzLW11Y2gtc2VjdXJlIGRlc3RpbmF0aW9uIChIVFRQUy0+SFRUUFMpLCBhbmQgc2VuZCBubyBoZWFkZXIgdG8gYSBsZXNzIHNlY3VyZSBkZXN0aW5hdGlvbiAoSFRUUFMtPkhUVFApLlxuICAgIFxuICAgIGB1bnNhZmUtVVJMYFxuICAgIFxuICAgIFNlbmQgdGhlIGZ1bGwgVVJMIChzdHJpcHBlZCBvZiBwYXJhbWV0ZXJzKSBmb3Igc2FtZS1vcmlnaW4gb3IgY3Jvc3Mtb3JpZ2luIHJlcXVlc3RzLlxuICAgIFxuICAgICoqTm90ZXM6KipcbiAgICBcbiAgICAqICAgU29tZSBicm93c2VycyBzdXBwb3J0IHRoZSBkZXByZWNhdGVkIHZhbHVlcyBvZiBgYWx3YXlzYCwgYGRlZmF1bHRgLCBhbmQgYG5ldmVyYCBmb3IgcmVmZXJyZXIuXG4gICAgKiAgIER5bmFtaWNhbGx5IGluc2VydGluZyBgPG1ldGEgbmFtZT0icmVmZXJyZXIiPmAgKHdpdGggW2Bkb2N1bWVudC53cml0ZWBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9Eb2N1bWVudC93cml0ZSkgb3IgW2BhcHBlbmRDaGlsZGBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9Ob2RlL2FwcGVuZENoaWxkKSkgbWFrZXMgdGhlIHJlZmVycmVyIGJlaGF2aW91ciB1bnByZWRpY3RhYmxlLlxuICAgICogICBXaGVuIHNldmVyYWwgY29uZmxpY3RpbmcgcG9saWNpZXMgYXJlIGRlZmluZWQsIHRoZSBuby1yZWZlcnJlciBwb2xpY3kgaXMgYXBwbGllZC5cbiAgICBcblxuVGhpcyBhdHRyaWJ1dGUgbWF5IGFsc28gaGF2ZSBhIHZhbHVlIHRha2VuIGZyb20gdGhlIGV4dGVuZGVkIGxpc3QgZGVmaW5lZCBvbiBbV0hBVFdHIFdpa2kgTWV0YUV4dGVuc2lvbnMgcGFnZV0oaHR0cHM6Ly93aWtpLndoYXR3Zy5vcmcvd2lraS9NZXRhRXh0ZW5zaW9ucykuIEFsdGhvdWdoIG5vbmUgaGF2ZSBiZWVuIGZvcm1hbGx5IGFjY2VwdGVkIHlldCwgYSBmZXcgY29tbW9ubHkgdXNlZCBuYW1lcyBhcmU6XG5cbiogICBgY3JlYXRvcmAgd2hpY2ggZGVmaW5lcyB0aGUgbmFtZSBvZiB0aGUgY3JlYXRvciBvZiB0aGUgZG9jdW1lbnQsIHN1Y2ggYXMgYW4gb3JnYW5pemF0aW9uIG9yIGluc3RpdHV0aW9uLiBJZiB0aGVyZSBhcmUgbW9yZSB0aGFuIG9uZSwgc2V2ZXJhbCBbYDxtZXRhPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9tZXRhICJUaGUgSFRNTCA8bWV0YT4gZWxlbWVudCByZXByZXNlbnRzIG1ldGFkYXRhIHRoYXQgY2Fubm90IGJlIHJlcHJlc2VudGVkIGJ5IG90aGVyIEhUTUwgbWV0YS1yZWxhdGVkIGVsZW1lbnRzLCBsaWtlIDxiYXNlPiwgPGxpbms+LCA8c2NyaXB0PiwgPHN0eWxlPiBvciA8dGl0bGU+LiIpIGVsZW1lbnRzIHNob3VsZCBiZSB1c2VkLlxuKiAgIGBnb29nbGVib3RgLCBhIHN5bm9ueW0gb2YgYHJvYm90c2AsIGlzIG9ubHkgZm9sbG93ZWQgYnkgR29vZ2xlYm90ICh0aGUgaW5kZXhpbmcgY3Jhd2xlciBmb3IgR29vZ2xlKS5cbiogICBgcHVibGlzaGVyYCB3aGljaCBkZWZpbmVzIHRoZSBuYW1lIG9mIHRoZSBkb2N1bWVudFwncyBwdWJsaXNoZXIuXG4qICAgYHJvYm90c2Agd2hpY2ggZGVmaW5lcyB0aGUgYmVoYXZpb3VyIHRoYXQgY29vcGVyYXRpdmUgY3Jhd2xlcnMsIG9yICJyb2JvdHMiLCBzaG91bGQgdXNlIHdpdGggdGhlIHBhZ2UuIEl0IGlzIGEgY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2YgdGhlIHZhbHVlcyBiZWxvdzpcbiAgICBcbiAgICBWYWx1ZXMgZm9yIHRoZSBjb250ZW50IG9mIGA8bWV0YSBuYW1lPSJyb2JvdHMiPmBcbiAgICBcbiAgICBWYWx1ZVxuICAgIFxuICAgIERlc2NyaXB0aW9uXG4gICAgXG4gICAgVXNlZCBieVxuICAgIFxuICAgIGBpbmRleGBcbiAgICBcbiAgICBBbGxvd3MgdGhlIHJvYm90IHRvIGluZGV4IHRoZSBwYWdlIChkZWZhdWx0KS5cbiAgICBcbiAgICBBbGxcbiAgICBcbiAgICBgbm9pbmRleGBcbiAgICBcbiAgICBSZXF1ZXN0cyB0aGUgcm9ib3QgdG8gbm90IGluZGV4IHRoZSBwYWdlLlxuICAgIFxuICAgIEFsbFxuICAgIFxuICAgIGBmb2xsb3dgXG4gICAgXG4gICAgQWxsb3dzIHRoZSByb2JvdCB0byBmb2xsb3cgdGhlIGxpbmtzIG9uIHRoZSBwYWdlIChkZWZhdWx0KS5cbiAgICBcbiAgICBBbGxcbiAgICBcbiAgICBgbm9mb2xsb3dgXG4gICAgXG4gICAgUmVxdWVzdHMgdGhlIHJvYm90IHRvIG5vdCBmb2xsb3cgdGhlIGxpbmtzIG9uIHRoZSBwYWdlLlxuICAgIFxuICAgIEFsbFxuICAgIFxuICAgIGBub25lYFxuICAgIFxuICAgIEVxdWl2YWxlbnQgdG8gYG5vaW5kZXgsIG5vZm9sbG93YFxuICAgIFxuICAgIFtHb29nbGVdKGh0dHBzOi8vc3VwcG9ydC5nb29nbGUuY29tL3dlYm1hc3RlcnMvYW5zd2VyLzc5ODEyKVxuICAgIFxuICAgIGBub29kcGBcbiAgICBcbiAgICBQcmV2ZW50cyB1c2luZyB0aGUgW09wZW4gRGlyZWN0b3J5IFByb2plY3RdKGh0dHBzOi8vd3d3LmRtb3oub3JnLykgZGVzY3JpcHRpb24sIGlmIGFueSwgYXMgdGhlIHBhZ2UgZGVzY3JpcHRpb24gaW4gc2VhcmNoIGVuZ2luZSByZXN1bHRzLlxuICAgIFxuICAgIFtHb29nbGVdKGh0dHBzOi8vc3VwcG9ydC5nb29nbGUuY29tL3dlYm1hc3RlcnMvYW5zd2VyLzM1NjI0I25vZG1veiksIFtZYWhvb10oaHR0cHM6Ly9oZWxwLnlhaG9vLmNvbS9rYi9zZWFyY2gtZm9yLWRlc2t0b3AvbWV0YS10YWdzLXJvYm90c3R4dC15YWhvby1zZWFyY2gtc2xuMjIxMy5odG1sI2NvbnQ1KSwgW0JpbmddKGh0dHBzOi8vd3d3LmJpbmcuY29tL3dlYm1hc3Rlci9oZWxwL3doaWNoLXJvYm90cy1tZXRhdGFncy1kb2VzLWJpbmctc3VwcG9ydC01MTk4ZDI0MClcbiAgICBcbiAgICBgbm9hcmNoaXZlYFxuICAgIFxuICAgIFJlcXVlc3RzIHRoZSBzZWFyY2ggZW5naW5lIG5vdCB0byBjYWNoZSB0aGUgcGFnZSBjb250ZW50LlxuICAgIFxuICAgIFtHb29nbGVdKGh0dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL3dlYm1hc3RlcnMvY29udHJvbC1jcmF3bC1pbmRleC9kb2NzL3JvYm90c19tZXRhX3RhZyN2YWxpZC1pbmRleGluZy0tc2VydmluZy1kaXJlY3RpdmVzKSwgW1lhaG9vXShodHRwczovL2hlbHAueWFob28uY29tL2tiL3NlYXJjaC1mb3ItZGVza3RvcC9TTE4yMjEzLmh0bWwpLCBbQmluZ10oaHR0cHM6Ly93d3cuYmluZy5jb20vd2VibWFzdGVyL2hlbHAvd2hpY2gtcm9ib3RzLW1ldGF0YWdzLWRvZXMtYmluZy1zdXBwb3J0LTUxOThkMjQwKVxuICAgIFxuICAgIGBub3NuaXBwZXRgXG4gICAgXG4gICAgUHJldmVudHMgZGlzcGxheWluZyBhbnkgZGVzY3JpcHRpb24gb2YgdGhlIHBhZ2UgaW4gc2VhcmNoIGVuZ2luZSByZXN1bHRzLlxuICAgIFxuICAgIFtHb29nbGVdKGh0dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL3dlYm1hc3RlcnMvY29udHJvbC1jcmF3bC1pbmRleC9kb2NzL3JvYm90c19tZXRhX3RhZyN2YWxpZC1pbmRleGluZy0tc2VydmluZy1kaXJlY3RpdmVzKSwgW0JpbmddKGh0dHBzOi8vd3d3LmJpbmcuY29tL3dlYm1hc3Rlci9oZWxwL3doaWNoLXJvYm90cy1tZXRhdGFncy1kb2VzLWJpbmctc3VwcG9ydC01MTk4ZDI0MClcbiAgICBcbiAgICBgbm9pbWFnZWluZGV4YFxuICAgIFxuICAgIFJlcXVlc3RzIHRoaXMgcGFnZSBub3QgdG8gYXBwZWFyIGFzIHRoZSByZWZlcnJpbmcgcGFnZSBvZiBhbiBpbmRleGVkIGltYWdlLlxuICAgIFxuICAgIFtHb29nbGVdKGh0dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL3dlYm1hc3RlcnMvY29udHJvbC1jcmF3bC1pbmRleC9kb2NzL3JvYm90c19tZXRhX3RhZyN2YWxpZC1pbmRleGluZy0tc2VydmluZy1kaXJlY3RpdmVzKVxuICAgIFxuICAgIGBub2NhY2hlYFxuICAgIFxuICAgIFN5bm9ueW0gb2YgYG5vYXJjaGl2ZWAuXG4gICAgXG4gICAgW0JpbmddKGh0dHBzOi8vd3d3LmJpbmcuY29tL3dlYm1hc3Rlci9oZWxwL3doaWNoLXJvYm90cy1tZXRhdGFncy1kb2VzLWJpbmctc3VwcG9ydC01MTk4ZDI0MClcbiAgICBcbiAgICAqKk5vdGVzOioqXG4gICAgXG4gICAgKiAgIE9ubHkgY29vcGVyYXRpdmUgcm9ib3RzIGZvbGxvdyB0aGVzZSBydWxlcy4gRG8gbm90IGV4cGVjdCB0byBwcmV2ZW50IGUtbWFpbCBoYXJ2ZXN0ZXJzIHdpdGggdGhlbS5cbiAgICAqICAgVGhlIHJvYm90IHN0aWxsIG5lZWRzIHRvIGFjY2VzcyB0aGUgcGFnZSBpbiBvcmRlciB0byByZWFkIHRoZXNlIHJ1bGVzLiBUbyBwcmV2ZW50IGJhbmR3aWR0aCBjb25zdW1wdGlvbiwgdXNlIGEgX1tyb2JvdHMudHh0XShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0dsb3NzYXJ5L3JvYm90cy50eHQgInJvYm90cy50eHQ6IFJvYm90cy50eHQgaXMgYSBmaWxlIHdoaWNoIGlzIHVzdWFsbHkgcGxhY2VkIGluIHRoZSByb290IG9mIGFueSB3ZWJzaXRlLiBJdCBkZWNpZGVzIHdoZXRoZXLCoGNyYXdsZXJzIGFyZSBwZXJtaXR0ZWQgb3IgZm9yYmlkZGVuIGFjY2VzcyB0byB0aGUgd2ViIHNpdGUuIilfIGZpbGUuXG4gICAgKiAgIElmIHlvdSB3YW50IHRvIHJlbW92ZSBhIHBhZ2UsIGBub2luZGV4YCB3aWxsIHdvcmssIGJ1dCBvbmx5IGFmdGVyIHRoZSByb2JvdCB2aXNpdHMgdGhlIHBhZ2UgYWdhaW4uIEVuc3VyZSB0aGF0IHRoZSBgcm9ib3RzLnR4dGAgZmlsZSBpcyBub3QgcHJldmVudGluZyByZXZpc2l0cy5cbiAgICAqICAgU29tZSB2YWx1ZXMgYXJlIG11dHVhbGx5IGV4Y2x1c2l2ZSwgbGlrZSBgaW5kZXhgIGFuZCBgbm9pbmRleGAsIG9yIGBmb2xsb3dgIGFuZCBgbm9mb2xsb3dgLiBJbiB0aGVzZSBjYXNlcyB0aGUgcm9ib3RcJ3MgYmVoYXZpb3VyIGlzIHVuZGVmaW5lZCBhbmQgbWF5IHZhcnkgYmV0d2VlbiB0aGVtLlxuICAgICogICBTb21lIGNyYXdsZXIgcm9ib3RzLCBsaWtlIEdvb2dsZSwgWWFob28gYW5kIEJpbmcsIHN1cHBvcnQgdGhlIHNhbWUgdmFsdWVzIGZvciB0aGUgSFRUUCBoZWFkZXIgYFgtUm9ib3RzLVRhZ2A7IHRoaXMgYWxsb3dzIG5vbi1IVE1MIGRvY3VtZW50cyBsaWtlIGltYWdlcyB0byB1c2UgdGhlc2UgcnVsZXMuXG4gICAgXG4qICAgYHNsdXJwYCwgaXMgYSBzeW5vbnltIG9mIGByb2JvdHNgLCBidXQgb25seSBmb3IgU2x1cnAgLSB0aGUgY3Jhd2xlciBmb3IgWWFob28gU2VhcmNoLlxuKiAgIGB2aWV3cG9ydGAsIHdoaWNoIGdpdmVzIGhpbnRzIGFib3V0IHRoZSBzaXplIG9mIHRoZSBpbml0aWFsIHNpemUgb2YgdGhlIFt2aWV3cG9ydF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9HbG9zc2FyeS92aWV3cG9ydCAidmlld3BvcnQ6IEEgdmlld3BvcnQgcmVwcmVzZW50cyBhIHBvbHlnb25hbCAobm9ybWFsbHkgcmVjdGFuZ3VsYXIpIGFyZWEgaW4gY29tcHV0ZXIgZ3JhcGhpY3MgdGhhdCBpcyBjdXJyZW50bHkgYmVpbmcgdmlld2VkLiBJbiB3ZWIgYnJvd3NlciB0ZXJtcywgaXQgcmVmZXJzIHRvIHRoZSBwYXJ0IG9mIHRoZSBkb2N1bWVudCB5b3VcJ3JlIHZpZXdpbmcgd2hpY2ggaXMgY3VycmVudGx5IHZpc2libGUgaW4gaXRzIHdpbmRvdyAob3IgdGhlIHNjcmVlbiwgaWYgdGhlIGRvY3VtZW50IGlzIGJlaW5nIHZpZXdlZCBpbiBmdWxsIHNjcmVlbiBtb2RlKS4gQ29udGVudCBvdXRzaWRlIHRoZSB2aWV3cG9ydCBpcyBub3QgdmlzaWJsZSBvbnNjcmVlbiB1bnRpbCBzY3JvbGxlZCBpbnRvIHZpZXcuIikuIFVzZWQgYnkgbW9iaWxlIGRldmljZXMgb25seS5cbiAgICBcbiAgICBWYWx1ZXMgZm9yIHRoZSBjb250ZW50IG9mIGA8bWV0YSBuYW1lPSJ2aWV3cG9ydCI+YFxuICAgIFxuICAgIFZhbHVlXG4gICAgXG4gICAgUG9zc2libGUgc3VidmFsdWVzXG4gICAgXG4gICAgRGVzY3JpcHRpb25cbiAgICBcbiAgICBgd2lkdGhgXG4gICAgXG4gICAgQSBwb3NpdGl2ZSBpbnRlZ2VyIG51bWJlciwgb3IgdGhlIHRleHQgYGRldmljZS13aWR0aGBcbiAgICBcbiAgICBEZWZpbmVzIHRoZSBwaXhlbCB3aWR0aCBvZiB0aGUgdmlld3BvcnQgdGhhdCB5b3Ugd2FudCB0aGUgd2ViIHNpdGUgdG8gYmUgcmVuZGVyZWQgYXQuXG4gICAgXG4gICAgYGhlaWdodGBcbiAgICBcbiAgICBBIHBvc2l0aXZlIGludGVnZXIsIG9yIHRoZSB0ZXh0IGBkZXZpY2UtaGVpZ2h0YFxuICAgIFxuICAgIERlZmluZXMgdGhlIGhlaWdodCBvZiB0aGUgdmlld3BvcnQuIE5vdCB1c2VkIGJ5IGFueSBicm93c2VyLlxuICAgIFxuICAgIGBpbml0aWFsLXNjYWxlYFxuICAgIFxuICAgIEEgcG9zaXRpdmUgbnVtYmVyIGJldHdlZW4gYDAuMGAgYW5kIGAxMC4wYFxuICAgIFxuICAgIERlZmluZXMgdGhlIHJhdGlvIGJldHdlZW4gdGhlIGRldmljZSB3aWR0aCAoYGRldmljZS13aWR0aGAgaW4gcG9ydHJhaXQgbW9kZSBvciBgZGV2aWNlLWhlaWdodGAgaW4gbGFuZHNjYXBlIG1vZGUpIGFuZCB0aGUgdmlld3BvcnQgc2l6ZS5cbiAgICBcbiAgICBgbWF4aW11bS1zY2FsZWBcbiAgICBcbiAgICBBIHBvc2l0aXZlIG51bWJlciBiZXR3ZWVuIGAwLjBgIGFuZCBgMTAuMGBcbiAgICBcbiAgICBEZWZpbmVzIHRoZSBtYXhpbXVtIGFtb3VudCB0byB6b29tIGluLiBJdCBtdXN0IGJlIGdyZWF0ZXIgb3IgZXF1YWwgdG8gdGhlIGBtaW5pbXVtLXNjYWxlYCBvciB0aGUgYmVoYXZpb3VyIGlzIHVuZGVmaW5lZC4gQnJvd3NlciBzZXR0aW5ncyBjYW4gaWdub3JlIHRoaXMgcnVsZSBhbmQgaU9TMTArIGlnbm9yZXMgaXQgYnkgZGVmYXVsdC5cbiAgICBcbiAgICBgbWluaW11bS1zY2FsZWBcbiAgICBcbiAgICBBIHBvc2l0aXZlIG51bWJlciBiZXR3ZWVuIGAwLjBgIGFuZCBgMTAuMGBcbiAgICBcbiAgICBEZWZpbmVzIHRoZSBtaW5pbXVtIHpvb20gbGV2ZWwuIEl0IG11c3QgYmUgc21hbGxlciBvciBlcXVhbCB0byB0aGUgYG1heGltdW0tc2NhbGVgIG9yIHRoZSBiZWhhdmlvdXIgaXMgdW5kZWZpbmVkLiBCcm93c2VyIHNldHRpbmdzIGNhbiBpZ25vcmUgdGhpcyBydWxlIGFuZCBpT1MxMCsgaWdub3JlcyBpdCBieSBkZWZhdWx0LlxuICAgIFxuICAgIGB1c2VyLXNjYWxhYmxlYFxuICAgIFxuICAgIGB5ZXNgIG9yIGBub2BcbiAgICBcbiAgICBJZiBzZXQgdG8gYG5vYCwgdGhlIHVzZXIgaXMgbm90IGFibGUgdG8gem9vbSBpbiB0aGUgd2VicGFnZS4gVGhlIGRlZmF1bHQgaXMgYHllc2AuIEJyb3dzZXIgc2V0dGluZ3MgY2FuIGlnbm9yZSB0aGlzIHJ1bGUsIGFuZCBpT1MxMCsgaWdub3JlcyBpdCBieSBkZWZhdWx0LlxuICAgIFxuICAgIFNwZWNpZmljYXRpb25cbiAgICBcbiAgICBTdGF0dXNcbiAgICBcbiAgICBDb21tZW50XG4gICAgXG4gICAgW0NTUyBEZXZpY2UgQWRhcHRhdGlvbiAgXG4gICAgVGhlIGRlZmluaXRpb24gb2YgXCc8bWV0YSBuYW1lPSJ2aWV3cG9ydCI+XCcgaW4gdGhhdCBzcGVjaWZpY2F0aW9uLl0oaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzcy1kZXZpY2UtYWRhcHQvI3ZpZXdwb3J0LW1ldGEpXG4gICAgXG4gICAgV29ya2luZyBEcmFmdFxuICAgIFxuICAgIE5vbi1ub3JtYXRpdmVseSBkZXNjcmliZXMgdGhlIFZpZXdwb3J0IE1FVEEgZWxlbWVudFxuICAgIFxuICAgIFNlZSBhbHNvOiBbYEB2aWV3cG9ydGBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9Admlld3BvcnQgIlRoZSBAdmlld3BvcnQgQ1NTIGF0LXJ1bGUgbGV0cyB5b3UgY29uZmlndXJlIHRoZSB2aWV3cG9ydCB0aHJvdWdoIHdoaWNoIHRoZSBkb2N1bWVudCBpcyB2aWV3ZWQuIEl0XCdzIHByaW1hcmlseSB1c2VkIGZvciBtb2JpbGUgZGV2aWNlcywgYnV0IGlzIGFsc28gdXNlZCBieSBkZXNrdG9wIGJyb3dzZXJzIHRoYXQgc3VwcG9ydCBmZWF0dXJlcyBsaWtlICJzbmFwIHRvIGVkZ2UiIChzdWNoIGFzIE1pY3Jvc29mdCBFZGdlKS4iKVxuICAgIFxuICAgICoqTm90ZXM6KipcbiAgICBcbiAgICAqICAgVGhvdWdoIHVuc3RhbmRhcmRpemVkLCB0aGlzIGRlY2xhcmF0aW9uIGlzIHJlc3BlY3RlZCBieSBtb3N0IG1vYmlsZSBicm93c2VycyBkdWUgdG8gZGUtZmFjdG8gZG9taW5hbmNlLlxuICAgICogICBUaGUgZGVmYXVsdCB2YWx1ZXMgbWF5IHZhcnkgYmV0d2VlbiBkZXZpY2VzIGFuZCBicm93c2Vycy5cbiAgICAqICAgVG8gbGVhcm4gYWJvdXQgdGhpcyBkZWNsYXJhdGlvbiBpbiBGaXJlZm94IGZvciBNb2JpbGUsIHNlZSBbdGhpcyBhcnRpY2xlXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL01vYmlsZS9WaWV3cG9ydF9tZXRhX3RhZyAiTW9iaWxlL1ZpZXdwb3J0IG1ldGEgdGFnIikuJ319LHtuYW1lOiJodHRwLWVxdWl2IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOidEZWZpbmVzIGEgcHJhZ21hIGRpcmVjdGl2ZS4gVGhlIGF0dHJpYnV0ZSBpcyBuYW1lZCBgKipodHRwLWVxdWl2KiooYWxlbnQpYCBiZWNhdXNlIGFsbCB0aGUgYWxsb3dlZCB2YWx1ZXMgYXJlIG5hbWVzIG9mIHBhcnRpY3VsYXIgSFRUUCBoZWFkZXJzOlxuXG4qICAgYCJjb250ZW50LWxhbmd1YWdlImAgIFxuICAgIERlZmluZXMgdGhlIGRlZmF1bHQgbGFuZ3VhZ2Ugb2YgdGhlIHBhZ2UuIEl0IGNhbiBiZSBvdmVycmlkZGVuIGJ5IHRoZSBbbGFuZ10oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9HbG9iYWxfYXR0cmlidXRlcy9sYW5nKSBhdHRyaWJ1dGUgb24gYW55IGVsZW1lbnQuXG4gICAgXG4gICAgKipXYXJuaW5nOioqIERvIG5vdCB1c2UgdGhpcyB2YWx1ZSwgYXMgaXQgaXMgb2Jzb2xldGUuIFByZWZlciB0aGUgYGxhbmdgIGF0dHJpYnV0ZSBvbiB0aGUgW2A8aHRtbD5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvaHRtbCAiVGhlIEhUTUwgPGh0bWw+IGVsZW1lbnQgcmVwcmVzZW50cyB0aGUgcm9vdCAodG9wLWxldmVsIGVsZW1lbnQpIG9mIGFuIEhUTUwgZG9jdW1lbnQsIHNvIGl0IGlzIGFsc28gcmVmZXJyZWQgdG8gYXMgdGhlIHJvb3QgZWxlbWVudC4gQWxsIG90aGVyIGVsZW1lbnRzIG11c3QgYmUgZGVzY2VuZGFudHMgb2YgdGhpcyBlbGVtZW50LiIpIGVsZW1lbnQuXG4gICAgXG4qICAgYCJjb250ZW50LXNlY3VyaXR5LXBvbGljeSJgICBcbiAgICBBbGxvd3MgcGFnZSBhdXRob3JzIHRvIGRlZmluZSBhIFtjb250ZW50IHBvbGljeV0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvU2VjdXJpdHkvQ1NQL0NTUF9wb2xpY3lfZGlyZWN0aXZlcykgZm9yIHRoZSBjdXJyZW50IHBhZ2UuIENvbnRlbnQgcG9saWNpZXMgbW9zdGx5IHNwZWNpZnkgYWxsb3dlZCBzZXJ2ZXIgb3JpZ2lucyBhbmQgc2NyaXB0IGVuZHBvaW50cyB3aGljaCBoZWxwIGd1YXJkIGFnYWluc3QgY3Jvc3Mtc2l0ZSBzY3JpcHRpbmcgYXR0YWNrcy5cbiogICBgImNvbnRlbnQtdHlwZSJgICBcbiAgICBEZWZpbmVzIHRoZSBbTUlNRSB0eXBlXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0dsb3NzYXJ5L01JTUVfdHlwZSkgb2YgdGhlIGRvY3VtZW50LCBmb2xsb3dlZCBieSBpdHMgY2hhcmFjdGVyIGVuY29kaW5nLiBJdCBmb2xsb3dzIHRoZSBzYW1lIHN5bnRheCBhcyB0aGUgSFRUUCBgY29udGVudC10eXBlYCBlbnRpdHktaGVhZGVyIGZpZWxkLCBidXQgYXMgaXQgaXMgaW5zaWRlIGEgSFRNTCBwYWdlLCBtb3N0IHZhbHVlcyBvdGhlciB0aGFuIGB0ZXh0L2h0bWxgIGFyZSBpbXBvc3NpYmxlLiBUaGVyZWZvcmUgdGhlIHZhbGlkIHN5bnRheCBmb3IgaXRzIGBjb250ZW50YCBpcyB0aGUgc3RyaW5nIFwnYHRleHQvaHRtbGBcJyBmb2xsb3dlZCBieSBhIGNoYXJhY3RlciBzZXQgd2l0aCB0aGUgZm9sbG93aW5nIHN5bnRheDogXCdgOyBjaGFyc2V0PV9JQU5BY2hhcnNldF9gXCcsIHdoZXJlIGBJQU5BY2hhcnNldGAgaXMgdGhlIF9wcmVmZXJyZWQgTUlNRSBuYW1lXyBmb3IgYSBjaGFyYWN0ZXIgc2V0IGFzIFtkZWZpbmVkIGJ5IHRoZSBJQU5BLl0oaHR0cHM6Ly93d3cuaWFuYS5vcmcvYXNzaWdubWVudHMvY2hhcmFjdGVyLXNldHMpXG4gICAgXG4gICAgKipXYXJuaW5nOioqIERvIG5vdCB1c2UgdGhpcyB2YWx1ZSwgYXMgaXQgaXMgb2Jzb2xldGUuIFVzZSB0aGUgW2BjaGFyc2V0YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L21ldGEjYXR0ci1jaGFyc2V0KSBhdHRyaWJ1dGUgb24gdGhlIFtgPG1ldGE+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L21ldGEgIlRoZSBIVE1MIDxtZXRhPiBlbGVtZW50IHJlcHJlc2VudHMgbWV0YWRhdGEgdGhhdCBjYW5ub3QgYmUgcmVwcmVzZW50ZWQgYnkgb3RoZXIgSFRNTCBtZXRhLXJlbGF0ZWQgZWxlbWVudHMsIGxpa2UgPGJhc2U+LCA8bGluaz4sIDxzY3JpcHQ+LCA8c3R5bGU+IG9yIDx0aXRsZT4uIikgZWxlbWVudC5cbiAgICBcbiAgICAqKk5vdGU6KiogQXMgW2A8bWV0YT5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvbWV0YSAiVGhlIEhUTUwgPG1ldGE+IGVsZW1lbnQgcmVwcmVzZW50cyBtZXRhZGF0YSB0aGF0IGNhbm5vdCBiZSByZXByZXNlbnRlZCBieSBvdGhlciBIVE1MIG1ldGEtcmVsYXRlZCBlbGVtZW50cywgbGlrZSA8YmFzZT4sIDxsaW5rPiwgPHNjcmlwdD4sIDxzdHlsZT4gb3IgPHRpdGxlPi4iKSBjYW5cJ3QgY2hhbmdlIGRvY3VtZW50c1wnIHR5cGVzIGluIFhIVE1MIG9yIEhUTUw1XCdzIFhIVE1MIHNlcmlhbGl6YXRpb24sIG5ldmVyIHNldCB0aGUgTUlNRSB0eXBlIHRvIGFuIFhIVE1MIE1JTUUgdHlwZSB3aXRoIGA8bWV0YT5gLlxuICAgIFxuKiAgIGAicmVmcmVzaCJgICBcbiAgICBUaGlzIGluc3RydWN0aW9uIHNwZWNpZmllczpcbiAgICAqICAgVGhlIG51bWJlciBvZiBzZWNvbmRzIHVudGlsIHRoZSBwYWdlIHNob3VsZCBiZSByZWxvYWRlZCAtIG9ubHkgaWYgdGhlIFtgY29udGVudGBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9tZXRhI2F0dHItY29udGVudCkgYXR0cmlidXRlIGNvbnRhaW5zIGEgcG9zaXRpdmUgaW50ZWdlci5cbiAgICAqICAgVGhlIG51bWJlciBvZiBzZWNvbmRzIHVudGlsIHRoZSBwYWdlIHNob3VsZCByZWRpcmVjdCB0byBhbm90aGVyIC0gb25seSBpZiB0aGUgW2Bjb250ZW50YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L21ldGEjYXR0ci1jb250ZW50KSBhdHRyaWJ1dGUgY29udGFpbnMgYSBwb3NpdGl2ZSBpbnRlZ2VyIGZvbGxvd2VkIGJ5IHRoZSBzdHJpbmcgXCdgO3VybD1gXCcsIGFuZCBhIHZhbGlkIFVSTC5cbiogICBgInNldC1jb29raWUiYCAgXG4gICAgRGVmaW5lcyBhIFtjb29raWVdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvY29va2llKSBmb3IgdGhlIHBhZ2UuIEl0cyBjb250ZW50IG11c3QgZm9sbG93IHRoZSBzeW50YXggZGVmaW5lZCBpbiB0aGUgW0lFVEYgSFRUUCBDb29raWUgU3BlY2lmaWNhdGlvbl0oaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL2RyYWZ0LWlldGYtaHR0cHN0YXRlLWNvb2tpZS0xNCkuXG4gICAgXG4gICAgKipXYXJuaW5nOioqIERvIG5vdCB1c2UgdGhpcyBpbnN0cnVjdGlvbiwgYXMgaXQgaXMgb2Jzb2xldGUuIFVzZSB0aGUgSFRUUCBoZWFkZXIgW2BTZXQtQ29va2llYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRUUC9IZWFkZXJzL1NldC1Db29raWUpIGluc3RlYWQuJ319LHtuYW1lOiJjb250ZW50IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGlzIGF0dHJpYnV0ZSBjb250YWlucyB0aGUgdmFsdWUgZm9yIHRoZSBbYGh0dHAtZXF1aXZgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvbWV0YSNhdHRyLWh0dHAtZXF1aXYpIG9yIFtgbmFtZWBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9tZXRhI2F0dHItbmFtZSkgYXR0cmlidXRlLCBkZXBlbmRpbmcgb24gd2hpY2ggaXMgdXNlZC4ifX0se25hbWU6ImNoYXJzZXQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6J1RoaXMgYXR0cmlidXRlIGRlY2xhcmVzIHRoZSBwYWdlXCdzIGNoYXJhY3RlciBlbmNvZGluZy4gSXQgbXVzdCBjb250YWluIGEgW3N0YW5kYXJkIElBTkEgTUlNRSBuYW1lIGZvciBjaGFyYWN0ZXIgZW5jb2RpbmdzXShodHRwczovL3d3dy5pYW5hLm9yZy9hc3NpZ25tZW50cy9jaGFyYWN0ZXItc2V0cykuIEFsdGhvdWdoIHRoZSBzdGFuZGFyZCBkb2VzblwndCByZXF1ZXN0IGEgc3BlY2lmaWMgZW5jb2RpbmcsIGl0IHN1Z2dlc3RzOlxuXG4qICAgQXV0aG9ycyBhcmUgZW5jb3VyYWdlZCB0byB1c2UgW2BVVEYtOGBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvR2xvc3NhcnkvVVRGLTgpLlxuKiAgIEF1dGhvcnMgc2hvdWxkIG5vdCB1c2UgQVNDSUktaW5jb21wYXRpYmxlIGVuY29kaW5ncyB0byBhdm9pZCBzZWN1cml0eSByaXNrOiBicm93c2VycyBub3Qgc3VwcG9ydGluZyB0aGVtIG1heSBpbnRlcnByZXQgaGFybWZ1bCBjb250ZW50IGFzIEhUTUwuIFRoaXMgaGFwcGVucyB3aXRoIHRoZSBgSklTX0M2MjI2LTE5ODNgLCBgSklTX1gwMjEyLTE5OTBgLCBgSFotR0ItMjMxMmAsIGBKT0hBQmAsIHRoZSBJU08tMjAyMiBmYW1pbHkgYW5kIHRoZSBFQkNESUMgZmFtaWx5LlxuXG4qKk5vdGU6KiogQVNDSUktaW5jb21wYXRpYmxlIGVuY29kaW5ncyBhcmUgdGhvc2UgdGhhdCBkb25cJ3QgbWFwIHRoZSA4LWJpdCBjb2RlIHBvaW50cyBgMHgyMGAgdG8gYDB4N0VgIHRvIHRoZSBgMHgwMDIwYCB0byBgMHgwMDdFYCBVbmljb2RlIGNvZGUgcG9pbnRzKVxuXG4qICAgQXV0aG9ycyAqKm11c3Qgbm90KiogdXNlIGBDRVNVLThgLCBgVVRGLTdgLCBgQk9DVS0xYCBhbmQvb3IgYFNDU1VgIGFzIFtjcm9zcy1zaXRlIHNjcmlwdGluZ10oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9HbG9zc2FyeS9Dcm9zcy1zaXRlX3NjcmlwdGluZykgYXR0YWNrcyB3aXRoIHRoZXNlIGVuY29kaW5ncyBoYXZlIGJlZW4gZGVtb25zdHJhdGVkLlxuKiAgIEF1dGhvcnMgc2hvdWxkIG5vdCB1c2UgYFVURi0zMmAgYmVjYXVzZSBub3QgYWxsIEhUTUw1IGVuY29kaW5nIGFsZ29yaXRobXMgY2FuIGRpc3Rpbmd1aXNoIGl0IGZyb20gYFVURi0xNmAuXG5cbioqTm90ZXM6KipcblxuKiAgIFRoZSBkZWNsYXJlZCBjaGFyYWN0ZXIgZW5jb2RpbmcgbXVzdCBtYXRjaCB0aGUgb25lIHRoZSBwYWdlIHdhcyBzYXZlZCB3aXRoIHRvIGF2b2lkIGdhcmJsZWQgY2hhcmFjdGVycyBhbmQgc2VjdXJpdHkgaG9sZXMuXG4qICAgVGhlIFtgPG1ldGE+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L21ldGEgIlRoZSBIVE1MIDxtZXRhPiBlbGVtZW50IHJlcHJlc2VudHMgbWV0YWRhdGEgdGhhdCBjYW5ub3QgYmUgcmVwcmVzZW50ZWQgYnkgb3RoZXIgSFRNTCBtZXRhLXJlbGF0ZWQgZWxlbWVudHMsIGxpa2UgPGJhc2U+LCA8bGluaz4sIDxzY3JpcHQ+LCA8c3R5bGU+IG9yIDx0aXRsZT4uIikgZWxlbWVudCBkZWNsYXJpbmcgdGhlIGVuY29kaW5nIG11c3QgYmUgaW5zaWRlIHRoZSBbYDxoZWFkPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9oZWFkICJUaGUgSFRNTCA8aGVhZD4gZWxlbWVudCBwcm92aWRlcyBnZW5lcmFsIGluZm9ybWF0aW9uIChtZXRhZGF0YSkgYWJvdXQgdGhlIGRvY3VtZW50LCBpbmNsdWRpbmcgaXRzIHRpdGxlIGFuZCBsaW5rcyB0byBpdHPCoHNjcmlwdHMgYW5kIHN0eWxlIHNoZWV0cy4iKSBlbGVtZW50IGFuZCAqKndpdGhpbiB0aGUgZmlyc3QgMTAyNCBieXRlcyoqIG9mIHRoZSBIVE1MIGFzIHNvbWUgYnJvd3NlcnMgb25seSBsb29rIGF0IHRob3NlIGJ5dGVzIGJlZm9yZSBjaG9vc2luZyBhbiBlbmNvZGluZy5cbiogICBUaGlzIFtgPG1ldGE+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L21ldGEgIlRoZSBIVE1MIDxtZXRhPiBlbGVtZW50IHJlcHJlc2VudHMgbWV0YWRhdGEgdGhhdCBjYW5ub3QgYmUgcmVwcmVzZW50ZWQgYnkgb3RoZXIgSFRNTCBtZXRhLXJlbGF0ZWQgZWxlbWVudHMsIGxpa2UgPGJhc2U+LCA8bGluaz4sIDxzY3JpcHQ+LCA8c3R5bGU+IG9yIDx0aXRsZT4uIikgZWxlbWVudCBpcyBvbmx5IG9uZSBwYXJ0IG9mIHRoZSBbYWxnb3JpdGhtIHRvIGRldGVybWluZSBhIHBhZ2VcJ3MgY2hhcmFjdGVyIHNldF0oaHR0cHM6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50LXdvcmsvbXVsdGlwYWdlL3BhcnNpbmcuaHRtbCNlbmNvZGluZy1zbmlmZmluZy1hbGdvcml0aG0gIkFsZ29yaXRobSBjaGFyc2V0IHBhZ2UiKS4gVGhlIFtgQ29udGVudC1UeXBlYCBoZWFkZXJdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUVFAvSGVhZGVycy9Db250ZW50LVR5cGUpIGFuZCBhbnkgW0J5dGUtT3JkZXIgTWFya3NdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvR2xvc3NhcnkvQnl0ZS1PcmRlcl9NYXJrICJUaGUgZGVmaW5pdGlvbiBvZiB0aGF0IHRlcm0gKEJ5dGUtT3JkZXIgTWFya3MpIGhhcyBub3QgYmVlbiB3cml0dGVuIHlldDsgcGxlYXNlIGNvbnNpZGVyIGNvbnRyaWJ1dGluZyBpdCEiKSBvdmVycmlkZSB0aGlzIGVsZW1lbnQuXG4qICAgSXQgaXMgc3Ryb25nbHkgcmVjb21tZW5kZWQgdG8gZGVmaW5lIHRoZSBjaGFyYWN0ZXIgZW5jb2RpbmcuIElmIGEgcGFnZVwncyBlbmNvZGluZyBpcyB1bmRlZmluZWQsIGNyb3NzLXNjcmlwdGluZyB0ZWNobmlxdWVzIGFyZSBwb3NzaWJsZSwgc3VjaCBhcyB0aGUgW2BVVEYtN2AgZmFsbGJhY2sgY3Jvc3Mtc2NyaXB0aW5nIHRlY2huaXF1ZV0oaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9kb2N0eXBlLW1pcnJvci93aWtpL0FydGljbGVVdGY3KS5cbiogICBUaGUgW2A8bWV0YT5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvbWV0YSAiVGhlIEhUTUwgPG1ldGE+IGVsZW1lbnQgcmVwcmVzZW50cyBtZXRhZGF0YSB0aGF0IGNhbm5vdCBiZSByZXByZXNlbnRlZCBieSBvdGhlciBIVE1MIG1ldGEtcmVsYXRlZCBlbGVtZW50cywgbGlrZSA8YmFzZT4sIDxsaW5rPiwgPHNjcmlwdD4sIDxzdHlsZT4gb3IgPHRpdGxlPi4iKSBlbGVtZW50IHdpdGggYSBgY2hhcnNldGAgYXR0cmlidXRlIGlzIGEgc3lub255bSBmb3IgdGhlIHByZS1IVE1MNSBgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9X0lBTkFjaGFyc2V0XyI+YCwgd2hlcmUgX2BJQU5BY2hhcnNldGBfIGNvbnRhaW5zIHRoZSB2YWx1ZSBvZiB0aGUgZXF1aXZhbGVudCBbYGNoYXJzZXRgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvbWV0YSNhdHRyLWNoYXJzZXQpIGF0dHJpYnV0ZS4gVGhpcyBzeW50YXggaXMgc3RpbGwgYWxsb3dlZCwgYWx0aG91Z2ggbm8gbG9uZ2VyIHJlY29tbWVuZGVkLid9fSx7bmFtZToic2NoZW1lIixkZXNjcmlwdGlvbjoiVGhpcyBhdHRyaWJ1dGUgZGVmaW5lcyB0aGUgc2NoZW1lIGluIHdoaWNoIG1ldGFkYXRhIGlzIGRlc2NyaWJlZC4gQSBzY2hlbWUgaXMgYSBjb250ZXh0IGxlYWRpbmcgdG8gdGhlIGNvcnJlY3QgaW50ZXJwcmV0YXRpb25zIG9mIHRoZSBbYGNvbnRlbnRgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvbWV0YSNhdHRyLWNvbnRlbnQpIHZhbHVlLCBsaWtlIGEgZm9ybWF0LlxuXG4qKldhcm5pbmc6KiogRG8gbm90IHVzZSB0aGlzIHZhbHVlLCBhcyBpdCBpcyBvYnNvbGV0ZS4gVGhlcmUgaXMgbm8gcmVwbGFjZW1lbnQgYXMgdGhlcmUgd2FzIG5vIHJlYWwgdXNhZ2UgZm9yIGl0LiJ9XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvbWV0YSJ9XX0se25hbWU6InN0eWxlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgc3R5bGUgZWxlbWVudCBhbGxvd3MgYXV0aG9ycyB0byBlbWJlZCBzdHlsZSBpbmZvcm1hdGlvbiBpbiB0aGVpciBkb2N1bWVudHMuIFRoZSBzdHlsZSBlbGVtZW50IGlzIG9uZSBvZiBzZXZlcmFsIGlucHV0cyB0byB0aGUgc3R5bGluZyBwcm9jZXNzaW5nIG1vZGVsLiBUaGUgZWxlbWVudCBkb2VzIG5vdCByZXByZXNlbnQgY29udGVudCBmb3IgdGhlIHVzZXIuIn0sYXR0cmlidXRlczpbe25hbWU6Im1lZGlhIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGlzIGF0dHJpYnV0ZSBkZWZpbmVzIHdoaWNoIG1lZGlhIHRoZSBzdHlsZSBzaG91bGQgYmUgYXBwbGllZCB0by4gSXRzIHZhbHVlIGlzIGEgW21lZGlhIHF1ZXJ5XShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9HdWlkZS9DU1MvTWVkaWFfcXVlcmllcyksIHdoaWNoIGRlZmF1bHRzIHRvIGBhbGxgIGlmIHRoZSBhdHRyaWJ1dGUgaXMgbWlzc2luZy4ifX0se25hbWU6Im5vbmNlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJBIGNyeXB0b2dyYXBoaWMgbm9uY2UgKG51bWJlciB1c2VkIG9uY2UpIHVzZWQgdG8gd2hpdGVsaXN0IGlubGluZSBzdHlsZXMgaW4gYSBbc3R5bGUtc3JjIENvbnRlbnQtU2VjdXJpdHktUG9saWN5XShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVFRQL0hlYWRlcnMvQ29udGVudC1TZWN1cml0eS1Qb2xpY3kvc3R5bGUtc3JjKS4gVGhlIHNlcnZlciBtdXN0IGdlbmVyYXRlIGEgdW5pcXVlIG5vbmNlIHZhbHVlIGVhY2ggdGltZSBpdCB0cmFuc21pdHMgYSBwb2xpY3kuIEl0IGlzIGNyaXRpY2FsIHRvIHByb3ZpZGUgYSBub25jZSB0aGF0IGNhbm5vdCBiZSBndWVzc2VkIGFzIGJ5cGFzc2luZyBhIHJlc291cmNl4oCZcyBwb2xpY3kgaXMgb3RoZXJ3aXNlIHRyaXZpYWwuIn19LHtuYW1lOiJ0eXBlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGlzIGF0dHJpYnV0ZSBkZWZpbmVzIHRoZSBzdHlsaW5nIGxhbmd1YWdlIGFzIGEgTUlNRSB0eXBlIChjaGFyc2V0IHNob3VsZCBub3QgYmUgc3BlY2lmaWVkKS4gVGhpcyBhdHRyaWJ1dGUgaXMgb3B0aW9uYWwgYW5kIGRlZmF1bHRzIHRvIGB0ZXh0L2Nzc2AgaWYgaXQgaXMgbm90IHNwZWNpZmllZCDigJQgdGhlcmUgaXMgdmVyeSBsaXR0bGUgcmVhc29uIHRvIGluY2x1ZGUgdGhpcyBpbiBtb2Rlcm4gd2ViIGRvY3VtZW50cy4ifX0se25hbWU6InNjb3BlZCIsdmFsdWVTZXQ6InYifSx7bmFtZToidGl0bGUiLGRlc2NyaXB0aW9uOiJUaGlzIGF0dHJpYnV0ZSBzcGVjaWZpZXMgW2FsdGVybmF0aXZlIHN0eWxlIHNoZWV0XShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvQWx0ZXJuYXRpdmVfc3R5bGVfc2hlZXRzKSBzZXRzLiJ9XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvc3R5bGUifV19LHtuYW1lOiJib2R5IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgYm9keSBlbGVtZW50IHJlcHJlc2VudHMgdGhlIGNvbnRlbnQgb2YgdGhlIGRvY3VtZW50LiJ9LGF0dHJpYnV0ZXM6W3tuYW1lOiJvbmFmdGVycHJpbnQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkZ1bmN0aW9uIHRvIGNhbGwgYWZ0ZXIgdGhlIHVzZXIgaGFzIHByaW50ZWQgdGhlIGRvY3VtZW50LiJ9fSx7bmFtZToib25iZWZvcmVwcmludCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiRnVuY3Rpb24gdG8gY2FsbCB3aGVuIHRoZSB1c2VyIHJlcXVlc3RzIHByaW50aW5nIG9mIHRoZSBkb2N1bWVudC4ifX0se25hbWU6Im9uYmVmb3JldW5sb2FkIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJGdW5jdGlvbiB0byBjYWxsIHdoZW4gdGhlIGRvY3VtZW50IGlzIGFib3V0IHRvIGJlIHVubG9hZGVkLiJ9fSx7bmFtZToib25oYXNoY2hhbmdlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJGdW5jdGlvbiB0byBjYWxsIHdoZW4gdGhlIGZyYWdtZW50IGlkZW50aWZpZXIgcGFydCAoc3RhcnRpbmcgd2l0aCB0aGUgaGFzaCAoYCcjJ2ApIGNoYXJhY3Rlcikgb2YgdGhlIGRvY3VtZW50J3MgY3VycmVudCBhZGRyZXNzIGhhcyBjaGFuZ2VkLiJ9fSx7bmFtZToib25sYW5ndWFnZWNoYW5nZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiRnVuY3Rpb24gdG8gY2FsbCB3aGVuIHRoZSBwcmVmZXJyZWQgbGFuZ3VhZ2VzIGNoYW5nZWQuIn19LHtuYW1lOiJvbm1lc3NhZ2UiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkZ1bmN0aW9uIHRvIGNhbGwgd2hlbiB0aGUgZG9jdW1lbnQgaGFzIHJlY2VpdmVkIGEgbWVzc2FnZS4ifX0se25hbWU6Im9ub2ZmbGluZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiRnVuY3Rpb24gdG8gY2FsbCB3aGVuIG5ldHdvcmsgY29tbXVuaWNhdGlvbiBoYXMgZmFpbGVkLiJ9fSx7bmFtZToib25vbmxpbmUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkZ1bmN0aW9uIHRvIGNhbGwgd2hlbiBuZXR3b3JrIGNvbW11bmljYXRpb24gaGFzIGJlZW4gcmVzdG9yZWQuIn19LHtuYW1lOiJvbnBhZ2VoaWRlIn0se25hbWU6Im9ucGFnZXNob3cifSx7bmFtZToib25wb3BzdGF0ZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiRnVuY3Rpb24gdG8gY2FsbCB3aGVuIHRoZSB1c2VyIGhhcyBuYXZpZ2F0ZWQgc2Vzc2lvbiBoaXN0b3J5LiJ9fSx7bmFtZToib25zdG9yYWdlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJGdW5jdGlvbiB0byBjYWxsIHdoZW4gdGhlIHN0b3JhZ2UgYXJlYSBoYXMgY2hhbmdlZC4ifX0se25hbWU6Im9udW5sb2FkIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJGdW5jdGlvbiB0byBjYWxsIHdoZW4gdGhlIGRvY3VtZW50IGlzIGdvaW5nIGF3YXkuIn19LHtuYW1lOiJhbGluayIsZGVzY3JpcHRpb246J0NvbG9yIG9mIHRleHQgZm9yIGh5cGVybGlua3Mgd2hlbiBzZWxlY3RlZC4gX1RoaXMgbWV0aG9kIGlzIG5vbi1jb25mb3JtaW5nLCB1c2UgQ1NTIFtgY29sb3JgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvY29sb3IgIlRoZSBjb2xvciBDU1MgcHJvcGVydHkgc2V0cyB0aGUgZm9yZWdyb3VuZCBjb2xvciB2YWx1ZSBvZiBhbiBlbGVtZW50XCdzIHRleHQgYW5kIHRleHQgZGVjb3JhdGlvbnMsIGFuZCBzZXRzIHRoZSBjdXJyZW50Y29sb3IgdmFsdWUuIikgcHJvcGVydHkgaW4gY29uanVuY3Rpb24gd2l0aCB0aGUgW2A6YWN0aXZlYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTLzphY3RpdmUgIlRoZSA6YWN0aXZlIENTUyBwc2V1ZG8tY2xhc3MgcmVwcmVzZW50cyBhbiBlbGVtZW50IChzdWNoIGFzIGEgYnV0dG9uKSB0aGF0IGlzIGJlaW5nIGFjdGl2YXRlZCBieSB0aGUgdXNlci4iKSBwc2V1ZG8tY2xhc3MgaW5zdGVhZC5fJ30se25hbWU6ImJhY2tncm91bmQiLGRlc2NyaXB0aW9uOidVUkkgb2YgYSBpbWFnZSB0byB1c2UgYXMgYSBiYWNrZ3JvdW5kLiBfVGhpcyBtZXRob2QgaXMgbm9uLWNvbmZvcm1pbmcsIHVzZSBDU1MgW2BiYWNrZ3JvdW5kYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL2JhY2tncm91bmQgIlRoZSBiYWNrZ3JvdW5kIHNob3J0aGFuZCBDU1MgcHJvcGVydHkgc2V0cyBhbGwgYmFja2dyb3VuZCBzdHlsZSBwcm9wZXJ0aWVzIGF0IG9uY2UsIHN1Y2ggYXMgY29sb3IsIGltYWdlLCBvcmlnaW4gYW5kIHNpemUsIG9yIHJlcGVhdCBtZXRob2QuIikgcHJvcGVydHkgb24gdGhlIGVsZW1lbnQgaW5zdGVhZC5fJ30se25hbWU6ImJnY29sb3IiLGRlc2NyaXB0aW9uOidCYWNrZ3JvdW5kIGNvbG9yIGZvciB0aGUgZG9jdW1lbnQuIF9UaGlzIG1ldGhvZCBpcyBub24tY29uZm9ybWluZywgdXNlIENTUyBbYGJhY2tncm91bmQtY29sb3JgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvYmFja2dyb3VuZC1jb2xvciAiVGhlIGJhY2tncm91bmQtY29sb3IgQ1NTIHByb3BlcnR5IHNldHMgdGhlIGJhY2tncm91bmQgY29sb3Igb2YgYW4gZWxlbWVudC4iKSBwcm9wZXJ0eSBvbiB0aGUgZWxlbWVudCBpbnN0ZWFkLl8nfSx7bmFtZToiYm90dG9tbWFyZ2luIixkZXNjcmlwdGlvbjonVGhlIG1hcmdpbiBvZiB0aGUgYm90dG9tIG9mIHRoZSBib2R5LiBfVGhpcyBtZXRob2QgaXMgbm9uLWNvbmZvcm1pbmcsIHVzZSBDU1MgW2BtYXJnaW4tYm90dG9tYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL21hcmdpbi1ib3R0b20gIlRoZSBtYXJnaW4tYm90dG9tIENTUyBwcm9wZXJ0eSBzZXRzIHRoZSBtYXJnaW4gYXJlYSBvbiB0aGUgYm90dG9tIG9mIGFuIGVsZW1lbnQuIEEgcG9zaXRpdmUgdmFsdWUgcGxhY2VzIGl0IGZhcnRoZXIgZnJvbSBpdHMgbmVpZ2hib3JzLCB3aGlsZSBhIG5lZ2F0aXZlIHZhbHVlIHBsYWNlcyBpdCBjbG9zZXIuIikgcHJvcGVydHkgb24gdGhlIGVsZW1lbnQgaW5zdGVhZC5fJ30se25hbWU6ImxlZnRtYXJnaW4iLGRlc2NyaXB0aW9uOidUaGUgbWFyZ2luIG9mIHRoZSBsZWZ0IG9mIHRoZSBib2R5LiBfVGhpcyBtZXRob2QgaXMgbm9uLWNvbmZvcm1pbmcsIHVzZSBDU1MgW2BtYXJnaW4tbGVmdGBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9tYXJnaW4tbGVmdCAiVGhlIG1hcmdpbi1sZWZ0IENTUyBwcm9wZXJ0eSBzZXRzIHRoZSBtYXJnaW4gYXJlYSBvbiB0aGUgbGVmdCBzaWRlIG9mIGFuIGVsZW1lbnQuIEEgcG9zaXRpdmUgdmFsdWUgcGxhY2VzIGl0IGZhcnRoZXIgZnJvbSBpdHMgbmVpZ2hib3JzLCB3aGlsZSBhIG5lZ2F0aXZlIHZhbHVlIHBsYWNlcyBpdCBjbG9zZXIuIikgcHJvcGVydHkgb24gdGhlIGVsZW1lbnQgaW5zdGVhZC5fJ30se25hbWU6ImxpbmsiLGRlc2NyaXB0aW9uOidDb2xvciBvZiB0ZXh0IGZvciB1bnZpc2l0ZWQgaHlwZXJ0ZXh0IGxpbmtzLiBfVGhpcyBtZXRob2QgaXMgbm9uLWNvbmZvcm1pbmcsIHVzZSBDU1MgW2Bjb2xvcmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9jb2xvciAiVGhlIGNvbG9yIENTUyBwcm9wZXJ0eSBzZXRzIHRoZSBmb3JlZ3JvdW5kIGNvbG9yIHZhbHVlIG9mIGFuIGVsZW1lbnRcJ3MgdGV4dCBhbmQgdGV4dCBkZWNvcmF0aW9ucywgYW5kIHNldHMgdGhlIGN1cnJlbnRjb2xvciB2YWx1ZS4iKSBwcm9wZXJ0eSBpbiBjb25qdW5jdGlvbiB3aXRoIHRoZSBbYDpsaW5rYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTLzpsaW5rICJUaGUgOmxpbmsgQ1NTIHBzZXVkby1jbGFzcyByZXByZXNlbnRzIGFuIGVsZW1lbnQgdGhhdCBoYXMgbm90IHlldCBiZWVuIHZpc2l0ZWQuIEl0IG1hdGNoZXMgZXZlcnkgdW52aXNpdGVkIDxhPiwgPGFyZWE+LCBvciA8bGluaz4gZWxlbWVudCB0aGF0IGhhcyBhbiBocmVmIGF0dHJpYnV0ZS4iKSBwc2V1ZG8tY2xhc3MgaW5zdGVhZC5fJ30se25hbWU6Im9uYmx1ciIsZGVzY3JpcHRpb246IkZ1bmN0aW9uIHRvIGNhbGwgd2hlbiB0aGUgZG9jdW1lbnQgbG9zZXMgZm9jdXMuIn0se25hbWU6Im9uZXJyb3IiLGRlc2NyaXB0aW9uOiJGdW5jdGlvbiB0byBjYWxsIHdoZW4gdGhlIGRvY3VtZW50IGZhaWxzIHRvIGxvYWQgcHJvcGVybHkuIn0se25hbWU6Im9uZm9jdXMiLGRlc2NyaXB0aW9uOiJGdW5jdGlvbiB0byBjYWxsIHdoZW4gdGhlIGRvY3VtZW50IHJlY2VpdmVzIGZvY3VzLiJ9LHtuYW1lOiJvbmxvYWQiLGRlc2NyaXB0aW9uOiJGdW5jdGlvbiB0byBjYWxsIHdoZW4gdGhlIGRvY3VtZW50IGhhcyBmaW5pc2hlZCBsb2FkaW5nLiJ9LHtuYW1lOiJvbnJlZG8iLGRlc2NyaXB0aW9uOiJGdW5jdGlvbiB0byBjYWxsIHdoZW4gdGhlIHVzZXIgaGFzIG1vdmVkIGZvcndhcmQgaW4gdW5kbyB0cmFuc2FjdGlvbiBoaXN0b3J5LiJ9LHtuYW1lOiJvbnJlc2l6ZSIsZGVzY3JpcHRpb246IkZ1bmN0aW9uIHRvIGNhbGwgd2hlbiB0aGUgZG9jdW1lbnQgaGFzIGJlZW4gcmVzaXplZC4ifSx7bmFtZToib251bmRvIixkZXNjcmlwdGlvbjoiRnVuY3Rpb24gdG8gY2FsbCB3aGVuIHRoZSB1c2VyIGhhcyBtb3ZlZCBiYWNrd2FyZCBpbiB1bmRvIHRyYW5zYWN0aW9uIGhpc3RvcnkuIn0se25hbWU6InJpZ2h0bWFyZ2luIixkZXNjcmlwdGlvbjonVGhlIG1hcmdpbiBvZiB0aGUgcmlnaHQgb2YgdGhlIGJvZHkuIF9UaGlzIG1ldGhvZCBpcyBub24tY29uZm9ybWluZywgdXNlIENTUyBbYG1hcmdpbi1yaWdodGBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9tYXJnaW4tcmlnaHQgIlRoZSBtYXJnaW4tcmlnaHQgQ1NTIHByb3BlcnR5IHNldHMgdGhlIG1hcmdpbiBhcmVhIG9uIHRoZSByaWdodCBzaWRlIG9mIGFuIGVsZW1lbnQuIEEgcG9zaXRpdmUgdmFsdWUgcGxhY2VzIGl0IGZhcnRoZXIgZnJvbSBpdHMgbmVpZ2hib3JzLCB3aGlsZSBhIG5lZ2F0aXZlIHZhbHVlIHBsYWNlcyBpdCBjbG9zZXIuIikgcHJvcGVydHkgb24gdGhlIGVsZW1lbnQgaW5zdGVhZC5fJ30se25hbWU6InRleHQiLGRlc2NyaXB0aW9uOidGb3JlZ3JvdW5kIGNvbG9yIG9mIHRleHQuIF9UaGlzIG1ldGhvZCBpcyBub24tY29uZm9ybWluZywgdXNlIENTUyBbYGNvbG9yYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL2NvbG9yICJUaGUgY29sb3IgQ1NTIHByb3BlcnR5IHNldHMgdGhlIGZvcmVncm91bmQgY29sb3IgdmFsdWUgb2YgYW4gZWxlbWVudFwncyB0ZXh0IGFuZCB0ZXh0IGRlY29yYXRpb25zLCBhbmQgc2V0cyB0aGUgY3VycmVudGNvbG9yIHZhbHVlLiIpIHByb3BlcnR5IG9uIHRoZSBlbGVtZW50IGluc3RlYWQuXyd9LHtuYW1lOiJ0b3BtYXJnaW4iLGRlc2NyaXB0aW9uOidUaGUgbWFyZ2luIG9mIHRoZSB0b3Agb2YgdGhlIGJvZHkuIF9UaGlzIG1ldGhvZCBpcyBub24tY29uZm9ybWluZywgdXNlIENTUyBbYG1hcmdpbi10b3BgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvbWFyZ2luLXRvcCAiVGhlIG1hcmdpbi10b3AgQ1NTIHByb3BlcnR5IHNldHMgdGhlIG1hcmdpbiBhcmVhIG9uIHRoZSB0b3Agb2YgYW4gZWxlbWVudC4gQSBwb3NpdGl2ZSB2YWx1ZSBwbGFjZXMgaXQgZmFydGhlciBmcm9tIGl0cyBuZWlnaGJvcnMsIHdoaWxlIGEgbmVnYXRpdmUgdmFsdWUgcGxhY2VzIGl0IGNsb3Nlci4iKSBwcm9wZXJ0eSBvbiB0aGUgZWxlbWVudCBpbnN0ZWFkLl8nfSx7bmFtZToidmxpbmsiLGRlc2NyaXB0aW9uOidDb2xvciBvZiB0ZXh0IGZvciB2aXNpdGVkIGh5cGVydGV4dCBsaW5rcy4gX1RoaXMgbWV0aG9kIGlzIG5vbi1jb25mb3JtaW5nLCB1c2UgQ1NTIFtgY29sb3JgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvY29sb3IgIlRoZSBjb2xvciBDU1MgcHJvcGVydHkgc2V0cyB0aGUgZm9yZWdyb3VuZCBjb2xvciB2YWx1ZSBvZiBhbiBlbGVtZW50XCdzIHRleHQgYW5kIHRleHQgZGVjb3JhdGlvbnMsIGFuZCBzZXRzIHRoZSBjdXJyZW50Y29sb3IgdmFsdWUuIikgcHJvcGVydHkgaW4gY29uanVuY3Rpb24gd2l0aCB0aGUgW2A6dmlzaXRlZGBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy86dmlzaXRlZCAiVGhlIDp2aXNpdGVkIENTUyBwc2V1ZG8tY2xhc3MgcmVwcmVzZW50cyBsaW5rcyB0aGF0IHRoZSB1c2VyIGhhcyBhbHJlYWR5IHZpc2l0ZWQuIEZvciBwcml2YWN5IHJlYXNvbnMsIHRoZSBzdHlsZXMgdGhhdCBjYW4gYmUgbW9kaWZpZWQgdXNpbmcgdGhpcyBzZWxlY3RvciBhcmUgdmVyeSBsaW1pdGVkLiIpIHBzZXVkby1jbGFzcyBpbnN0ZWFkLl8nfV0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2JvZHkifV19LHtuYW1lOiJhcnRpY2xlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgYXJ0aWNsZSBlbGVtZW50IHJlcHJlc2VudHMgYSBjb21wbGV0ZSwgb3Igc2VsZi1jb250YWluZWQsIGNvbXBvc2l0aW9uIGluIGEgZG9jdW1lbnQsIHBhZ2UsIGFwcGxpY2F0aW9uLCBvciBzaXRlIGFuZCB0aGF0IGlzLCBpbiBwcmluY2lwbGUsIGluZGVwZW5kZW50bHkgZGlzdHJpYnV0YWJsZSBvciByZXVzYWJsZSwgZS5nLiBpbiBzeW5kaWNhdGlvbi4gVGhpcyBjb3VsZCBiZSBhIGZvcnVtIHBvc3QsIGEgbWFnYXppbmUgb3IgbmV3c3BhcGVyIGFydGljbGUsIGEgYmxvZyBlbnRyeSwgYSB1c2VyLXN1Ym1pdHRlZCBjb21tZW50LCBhbiBpbnRlcmFjdGl2ZSB3aWRnZXQgb3IgZ2FkZ2V0LCBvciBhbnkgb3RoZXIgaW5kZXBlbmRlbnQgaXRlbSBvZiBjb250ZW50LiBFYWNoIGFydGljbGUgc2hvdWxkIGJlIGlkZW50aWZpZWQsIHR5cGljYWxseSBieSBpbmNsdWRpbmcgYSBoZWFkaW5nIChoMeKAk2g2IGVsZW1lbnQpIGFzIGEgY2hpbGQgb2YgdGhlIGFydGljbGUgZWxlbWVudC4ifSxhdHRyaWJ1dGVzOltdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9hcnRpY2xlIn1dfSx7bmFtZToic2VjdGlvbiIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHNlY3Rpb24gZWxlbWVudCByZXByZXNlbnRzIGEgZ2VuZXJpYyBzZWN0aW9uIG9mIGEgZG9jdW1lbnQgb3IgYXBwbGljYXRpb24uIEEgc2VjdGlvbiwgaW4gdGhpcyBjb250ZXh0LCBpcyBhIHRoZW1hdGljIGdyb3VwaW5nIG9mIGNvbnRlbnQuIEVhY2ggc2VjdGlvbiBzaG91bGQgYmUgaWRlbnRpZmllZCwgdHlwaWNhbGx5IGJ5IGluY2x1ZGluZyBhIGhlYWRpbmcgKCBoMS0gaDYgZWxlbWVudCkgYXMgYSBjaGlsZCBvZiB0aGUgc2VjdGlvbiBlbGVtZW50LiJ9LGF0dHJpYnV0ZXM6W10scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3NlY3Rpb24ifV19LHtuYW1lOiJuYXYiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBuYXYgZWxlbWVudCByZXByZXNlbnRzIGEgc2VjdGlvbiBvZiBhIHBhZ2UgdGhhdCBsaW5rcyB0byBvdGhlciBwYWdlcyBvciB0byBwYXJ0cyB3aXRoaW4gdGhlIHBhZ2U6IGEgc2VjdGlvbiB3aXRoIG5hdmlnYXRpb24gbGlua3MuIn0sYXR0cmlidXRlczpbXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvbmF2In1dfSx7bmFtZToiYXNpZGUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBhc2lkZSBlbGVtZW50IHJlcHJlc2VudHMgYSBzZWN0aW9uIG9mIGEgcGFnZSB0aGF0IGNvbnNpc3RzIG9mIGNvbnRlbnQgdGhhdCBpcyB0YW5nZW50aWFsbHkgcmVsYXRlZCB0byB0aGUgY29udGVudCBhcm91bmQgdGhlIGFzaWRlIGVsZW1lbnQsIGFuZCB3aGljaCBjb3VsZCBiZSBjb25zaWRlcmVkIHNlcGFyYXRlIGZyb20gdGhhdCBjb250ZW50LiBTdWNoIHNlY3Rpb25zIGFyZSBvZnRlbiByZXByZXNlbnRlZCBhcyBzaWRlYmFycyBpbiBwcmludGVkIHR5cG9ncmFwaHkuIn0sYXR0cmlidXRlczpbXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvYXNpZGUifV19LHtuYW1lOiJoMSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGgxIGVsZW1lbnQgcmVwcmVzZW50cyBhIHNlY3Rpb24gaGVhZGluZy4ifSxhdHRyaWJ1dGVzOltdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9IZWFkaW5nX0VsZW1lbnRzIn1dfSx7bmFtZToiaDIiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBoMiBlbGVtZW50IHJlcHJlc2VudHMgYSBzZWN0aW9uIGhlYWRpbmcuIn0sYXR0cmlidXRlczpbXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvSGVhZGluZ19FbGVtZW50cyJ9XX0se25hbWU6ImgzIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgaDMgZWxlbWVudCByZXByZXNlbnRzIGEgc2VjdGlvbiBoZWFkaW5nLiJ9LGF0dHJpYnV0ZXM6W10scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L0hlYWRpbmdfRWxlbWVudHMifV19LHtuYW1lOiJoNCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGg0IGVsZW1lbnQgcmVwcmVzZW50cyBhIHNlY3Rpb24gaGVhZGluZy4ifSxhdHRyaWJ1dGVzOltdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9IZWFkaW5nX0VsZW1lbnRzIn1dfSx7bmFtZToiaDUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBoNSBlbGVtZW50IHJlcHJlc2VudHMgYSBzZWN0aW9uIGhlYWRpbmcuIn0sYXR0cmlidXRlczpbXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvSGVhZGluZ19FbGVtZW50cyJ9XX0se25hbWU6Img2IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgaDYgZWxlbWVudCByZXByZXNlbnRzIGEgc2VjdGlvbiBoZWFkaW5nLiJ9LGF0dHJpYnV0ZXM6W10scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L0hlYWRpbmdfRWxlbWVudHMifV19LHtuYW1lOiJoZWFkZXIiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBoZWFkZXIgZWxlbWVudCByZXByZXNlbnRzIGludHJvZHVjdG9yeSBjb250ZW50IGZvciBpdHMgbmVhcmVzdCBhbmNlc3RvciBzZWN0aW9uaW5nIGNvbnRlbnQgb3Igc2VjdGlvbmluZyByb290IGVsZW1lbnQuIEEgaGVhZGVyIHR5cGljYWxseSBjb250YWlucyBhIGdyb3VwIG9mIGludHJvZHVjdG9yeSBvciBuYXZpZ2F0aW9uYWwgYWlkcy4gV2hlbiB0aGUgbmVhcmVzdCBhbmNlc3RvciBzZWN0aW9uaW5nIGNvbnRlbnQgb3Igc2VjdGlvbmluZyByb290IGVsZW1lbnQgaXMgdGhlIGJvZHkgZWxlbWVudCwgdGhlbiBpdCBhcHBsaWVzIHRvIHRoZSB3aG9sZSBwYWdlLiJ9LGF0dHJpYnV0ZXM6W10scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2hlYWRlciJ9XX0se25hbWU6ImZvb3RlciIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGZvb3RlciBlbGVtZW50IHJlcHJlc2VudHMgYSBmb290ZXIgZm9yIGl0cyBuZWFyZXN0IGFuY2VzdG9yIHNlY3Rpb25pbmcgY29udGVudCBvciBzZWN0aW9uaW5nIHJvb3QgZWxlbWVudC4gQSBmb290ZXIgdHlwaWNhbGx5IGNvbnRhaW5zIGluZm9ybWF0aW9uIGFib3V0IGl0cyBzZWN0aW9uIHN1Y2ggYXMgd2hvIHdyb3RlIGl0LCBsaW5rcyB0byByZWxhdGVkIGRvY3VtZW50cywgY29weXJpZ2h0IGRhdGEsIGFuZCB0aGUgbGlrZS4ifSxhdHRyaWJ1dGVzOltdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9mb290ZXIifV19LHtuYW1lOiJhZGRyZXNzIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgYWRkcmVzcyBlbGVtZW50IHJlcHJlc2VudHMgdGhlIGNvbnRhY3QgaW5mb3JtYXRpb24gZm9yIGl0cyBuZWFyZXN0IGFydGljbGUgb3IgYm9keSBlbGVtZW50IGFuY2VzdG9yLiBJZiB0aGF0IGlzIHRoZSBib2R5IGVsZW1lbnQsIHRoZW4gdGhlIGNvbnRhY3QgaW5mb3JtYXRpb24gYXBwbGllcyB0byB0aGUgZG9jdW1lbnQgYXMgYSB3aG9sZS4ifSxhdHRyaWJ1dGVzOltdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9hZGRyZXNzIn1dfSx7bmFtZToicCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHAgZWxlbWVudCByZXByZXNlbnRzIGEgcGFyYWdyYXBoLiJ9LGF0dHJpYnV0ZXM6W10scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3AifV19LHtuYW1lOiJociIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGhyIGVsZW1lbnQgcmVwcmVzZW50cyBhIHBhcmFncmFwaC1sZXZlbCB0aGVtYXRpYyBicmVhaywgZS5nLiBhIHNjZW5lIGNoYW5nZSBpbiBhIHN0b3J5LCBvciBhIHRyYW5zaXRpb24gdG8gYW5vdGhlciB0b3BpYyB3aXRoaW4gYSBzZWN0aW9uIG9mIGEgcmVmZXJlbmNlIGJvb2suIn0sYXR0cmlidXRlczpbe25hbWU6ImFsaWduIixkZXNjcmlwdGlvbjoiU2V0cyB0aGUgYWxpZ25tZW50IG9mIHRoZSBydWxlIG9uIHRoZSBwYWdlLiBJZiBubyB2YWx1ZSBpcyBzcGVjaWZpZWQsIHRoZSBkZWZhdWx0IHZhbHVlIGlzIGBsZWZ0YC4ifSx7bmFtZToiY29sb3IiLGRlc2NyaXB0aW9uOiJTZXRzIHRoZSBjb2xvciBvZiB0aGUgcnVsZSB0aHJvdWdoIGNvbG9yIG5hbWUgb3IgaGV4YWRlY2ltYWwgdmFsdWUuIn0se25hbWU6Im5vc2hhZGUiLGRlc2NyaXB0aW9uOiJTZXRzIHRoZSBydWxlIHRvIGhhdmUgbm8gc2hhZGluZy4ifSx7bmFtZToic2l6ZSIsZGVzY3JpcHRpb246IlNldHMgdGhlIGhlaWdodCwgaW4gcGl4ZWxzLCBvZiB0aGUgcnVsZS4ifSx7bmFtZToid2lkdGgiLGRlc2NyaXB0aW9uOiJTZXRzIHRoZSBsZW5ndGggb2YgdGhlIHJ1bGUgb24gdGhlIHBhZ2UgdGhyb3VnaCBhIHBpeGVsIG9yIHBlcmNlbnRhZ2UgdmFsdWUuIn1dLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9ociJ9XX0se25hbWU6InByZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHByZSBlbGVtZW50IHJlcHJlc2VudHMgYSBibG9jayBvZiBwcmVmb3JtYXR0ZWQgdGV4dCwgaW4gd2hpY2ggc3RydWN0dXJlIGlzIHJlcHJlc2VudGVkIGJ5IHR5cG9ncmFwaGljIGNvbnZlbnRpb25zIHJhdGhlciB0aGFuIGJ5IGVsZW1lbnRzLiJ9LGF0dHJpYnV0ZXM6W3tuYW1lOiJjb2xzIixkZXNjcmlwdGlvbjonQ29udGFpbnMgdGhlIF9wcmVmZXJyZWRfIGNvdW50IG9mIGNoYXJhY3RlcnMgdGhhdCBhIGxpbmUgc2hvdWxkIGhhdmUuIEl0IHdhcyBhIG5vbi1zdGFuZGFyZCBzeW5vbnltIG9mIFtgd2lkdGhgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvcHJlI2F0dHItd2lkdGgpLiBUbyBhY2hpZXZlIHN1Y2ggYW4gZWZmZWN0LCB1c2UgQ1NTIFtgd2lkdGhgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1Mvd2lkdGggIlRoZSB3aWR0aCBDU1MgcHJvcGVydHkgc2V0cyBhbiBlbGVtZW50XCdzIHdpZHRoLiBCeSBkZWZhdWx0IGl0IHNldHMgdGhlIHdpZHRoIG9mIHRoZSBjb250ZW50IGFyZWEsIGJ1dCBpZiBib3gtc2l6aW5nIGlzIHNldCB0byBib3JkZXItYm94LCBpdCBzZXRzIHRoZSB3aWR0aCBvZiB0aGUgYm9yZGVyIGFyZWEuIikgaW5zdGVhZC4nfSx7bmFtZToid2lkdGgiLGRlc2NyaXB0aW9uOidDb250YWlucyB0aGUgX3ByZWZlcnJlZF8gY291bnQgb2YgY2hhcmFjdGVycyB0aGF0IGEgbGluZSBzaG91bGQgaGF2ZS4gVGhvdWdoIHRlY2huaWNhbGx5IHN0aWxsIGltcGxlbWVudGVkLCB0aGlzIGF0dHJpYnV0ZSBoYXMgbm8gdmlzdWFsIGVmZmVjdDsgdG8gYWNoaWV2ZSBzdWNoIGFuIGVmZmVjdCwgdXNlIENTUyBbYHdpZHRoYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL3dpZHRoICJUaGUgd2lkdGggQ1NTIHByb3BlcnR5IHNldHMgYW4gZWxlbWVudFwncyB3aWR0aC4gQnkgZGVmYXVsdCBpdCBzZXRzIHRoZSB3aWR0aCBvZiB0aGUgY29udGVudCBhcmVhLCBidXQgaWYgYm94LXNpemluZyBpcyBzZXQgdG8gYm9yZGVyLWJveCwgaXQgc2V0cyB0aGUgd2lkdGggb2YgdGhlIGJvcmRlciBhcmVhLiIpIGluc3RlYWQuJ30se25hbWU6IndyYXAiLGRlc2NyaXB0aW9uOidJcyBhIF9oaW50XyBpbmRpY2F0aW5nIGhvdyB0aGUgb3ZlcmZsb3cgbXVzdCBoYXBwZW4uIEluIG1vZGVybiBicm93c2VyIHRoaXMgaGludCBpcyBpZ25vcmVkIGFuZCBubyB2aXN1YWwgZWZmZWN0IHJlc3VsdHMgaW4gaXRzIHByZXNlbnQ7IHRvIGFjaGlldmUgc3VjaCBhbiBlZmZlY3QsIHVzZSBDU1MgW2B3aGl0ZS1zcGFjZWBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy93aGl0ZS1zcGFjZSAiVGhlIHdoaXRlLXNwYWNlIENTUyBwcm9wZXJ0eSBzZXRzIGhvdyB3aGl0ZSBzcGFjZSBpbnNpZGUgYW4gZWxlbWVudCBpcyBoYW5kbGVkLiIpIGluc3RlYWQuJ31dLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9wcmUifV19LHtuYW1lOiJibG9ja3F1b3RlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgYmxvY2txdW90ZSBlbGVtZW50IHJlcHJlc2VudHMgY29udGVudCB0aGF0IGlzIHF1b3RlZCBmcm9tIGFub3RoZXIgc291cmNlLCBvcHRpb25hbGx5IHdpdGggYSBjaXRhdGlvbiB3aGljaCBtdXN0IGJlIHdpdGhpbiBhIGZvb3RlciBvciBjaXRlIGVsZW1lbnQsIGFuZCBvcHRpb25hbGx5IHdpdGggaW4tbGluZSBjaGFuZ2VzIHN1Y2ggYXMgYW5ub3RhdGlvbnMgYW5kIGFiYnJldmlhdGlvbnMuIn0sYXR0cmlidXRlczpbe25hbWU6ImNpdGUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkEgVVJMIHRoYXQgZGVzaWduYXRlcyBhIHNvdXJjZSBkb2N1bWVudCBvciBtZXNzYWdlIGZvciB0aGUgaW5mb3JtYXRpb24gcXVvdGVkLiBUaGlzIGF0dHJpYnV0ZSBpcyBpbnRlbmRlZCB0byBwb2ludCB0byBpbmZvcm1hdGlvbiBleHBsYWluaW5nIHRoZSBjb250ZXh0IG9yIHRoZSByZWZlcmVuY2UgZm9yIHRoZSBxdW90ZS4ifX1dLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9ibG9ja3F1b3RlIn1dfSx7bmFtZToib2wiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBvbCBlbGVtZW50IHJlcHJlc2VudHMgYSBsaXN0IG9mIGl0ZW1zLCB3aGVyZSB0aGUgaXRlbXMgaGF2ZSBiZWVuIGludGVudGlvbmFsbHkgb3JkZXJlZCwgc3VjaCB0aGF0IGNoYW5naW5nIHRoZSBvcmRlciB3b3VsZCBjaGFuZ2UgdGhlIG1lYW5pbmcgb2YgdGhlIGRvY3VtZW50LiJ9LGF0dHJpYnV0ZXM6W3tuYW1lOiJyZXZlcnNlZCIsdmFsdWVTZXQ6InYiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoaXMgQm9vbGVhbiBhdHRyaWJ1dGUgc3BlY2lmaWVzIHRoYXQgdGhlIGl0ZW1zIG9mIHRoZSBsaXN0IGFyZSBzcGVjaWZpZWQgaW4gcmV2ZXJzZWQgb3JkZXIuIn19LHtuYW1lOiJzdGFydCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTonVGhpcyBpbnRlZ2VyIGF0dHJpYnV0ZSBzcGVjaWZpZXMgdGhlIHN0YXJ0IHZhbHVlIGZvciBudW1iZXJpbmcgdGhlIGluZGl2aWR1YWwgbGlzdCBpdGVtcy4gQWx0aG91Z2ggdGhlIG9yZGVyaW5nIHR5cGUgb2YgbGlzdCBlbGVtZW50cyBtaWdodCBiZSBSb21hbiBudW1lcmFscywgc3VjaCBhcyBYWFhJLCBvciBsZXR0ZXJzLCB0aGUgdmFsdWUgb2Ygc3RhcnQgaXMgYWx3YXlzIHJlcHJlc2VudGVkIGFzIGEgbnVtYmVyLiBUbyBzdGFydCBudW1iZXJpbmcgZWxlbWVudHMgZnJvbSB0aGUgbGV0dGVyICJDIiwgdXNlIGA8b2wgc3RhcnQ9IjMiPmAuXG5cbioqTm90ZSoqOiBUaGlzIGF0dHJpYnV0ZSB3YXMgZGVwcmVjYXRlZCBpbiBIVE1MNCwgYnV0IHJlaW50cm9kdWNlZCBpbiBIVE1MNS4nfX0se25hbWU6InR5cGUiLHZhbHVlU2V0OiJsdCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiSW5kaWNhdGVzIHRoZSBudW1iZXJpbmcgdHlwZTpcblxuKiAgIGAnYSdgIGluZGljYXRlcyBsb3dlcmNhc2UgbGV0dGVycyxcbiogICBgJ0EnYCBpbmRpY2F0ZXMgdXBwZXJjYXNlIGxldHRlcnMsXG4qICAgYCdpJ2AgaW5kaWNhdGVzIGxvd2VyY2FzZSBSb21hbiBudW1lcmFscyxcbiogICBgJ0knYCBpbmRpY2F0ZXMgdXBwZXJjYXNlIFJvbWFuIG51bWVyYWxzLFxuKiAgIGFuZCBgJzEnYCBpbmRpY2F0ZXMgbnVtYmVycyAoZGVmYXVsdCkuXG5cblRoZSB0eXBlIHNldCBpcyB1c2VkIGZvciB0aGUgZW50aXJlIGxpc3QgdW5sZXNzIGEgZGlmZmVyZW50IFtgdHlwZWBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9saSNhdHRyLXR5cGUpIGF0dHJpYnV0ZSBpcyB1c2VkIHdpdGhpbiBhbiBlbmNsb3NlZCBbYDxsaT5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvbGkgXCJUaGUgSFRNTCA8bGk+IGVsZW1lbnQgaXMgdXNlZCB0byByZXByZXNlbnQgYW4gaXRlbSBpbiBhIGxpc3QuIEl0IG11c3QgYmUgY29udGFpbmVkIGluIGEgcGFyZW50IGVsZW1lbnQ6IGFuIG9yZGVyZWQgbGlzdCAoPG9sPiksIGFuIHVub3JkZXJlZCBsaXN0ICg8dWw+KSwgb3IgYSBtZW51ICg8bWVudT4pLiBJbiBtZW51cyBhbmQgdW5vcmRlcmVkIGxpc3RzLCBsaXN0IGl0ZW1zIGFyZSB1c3VhbGx5IGRpc3BsYXllZCB1c2luZyBidWxsZXQgcG9pbnRzLiBJbiBvcmRlcmVkIGxpc3RzLCB0aGV5IGFyZSB1c3VhbGx5IGRpc3BsYXllZCB3aXRoIGFuIGFzY2VuZGluZyBjb3VudGVyIG9uIHRoZSBsZWZ0LCBzdWNoIGFzIGEgbnVtYmVyIG9yIGxldHRlci5cIikgZWxlbWVudC5cblxuKipOb3RlOioqIFRoaXMgYXR0cmlidXRlIHdhcyBkZXByZWNhdGVkIGluIEhUTUw0LCBidXQgcmVpbnRyb2R1Y2VkIGluIEhUTUw1LlxuXG5Vbmxlc3MgdGhlIHZhbHVlIG9mIHRoZSBsaXN0IG51bWJlciBtYXR0ZXJzIChlLmcuIGluIGxlZ2FsIG9yIHRlY2huaWNhbCBkb2N1bWVudHMgd2hlcmUgaXRlbXMgYXJlIHRvIGJlIHJlZmVyZW5jZWQgYnkgdGhlaXIgbnVtYmVyL2xldHRlciksIHRoZSBDU1MgW2BsaXN0LXN0eWxlLXR5cGVgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvbGlzdC1zdHlsZS10eXBlIFwiVGhlIGxpc3Qtc3R5bGUtdHlwZSBDU1MgcHJvcGVydHkgc2V0cyB0aGUgbWFya2VyIChzdWNoIGFzIGEgZGlzYywgY2hhcmFjdGVyLCBvciBjdXN0b20gY291bnRlciBzdHlsZSkgb2YgYSBsaXN0IGl0ZW0gZWxlbWVudC5cIikgcHJvcGVydHkgc2hvdWxkIGJlIHVzZWQgaW5zdGVhZC4ifX0se25hbWU6ImNvbXBhY3QiLGRlc2NyaXB0aW9uOidUaGlzIEJvb2xlYW4gYXR0cmlidXRlIGhpbnRzIHRoYXQgdGhlIGxpc3Qgc2hvdWxkIGJlIHJlbmRlcmVkIGluIGEgY29tcGFjdCBzdHlsZS4gVGhlIGludGVycHJldGF0aW9uIG9mIHRoaXMgYXR0cmlidXRlIGRlcGVuZHMgb24gdGhlIHVzZXIgYWdlbnQgYW5kIGl0IGRvZXNuXCd0IHdvcmsgaW4gYWxsIGJyb3dzZXJzLlxuXG4qKldhcm5pbmc6KiogRG8gbm90IHVzZSB0aGlzIGF0dHJpYnV0ZSwgYXMgaXQgaGFzIGJlZW4gZGVwcmVjYXRlZDogdGhlIFtgPG9sPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9vbCAiVGhlIEhUTUwgPG9sPiBlbGVtZW50IHJlcHJlc2VudHMgYW4gb3JkZXJlZCBsaXN0IG9mIGl0ZW1zLCB0eXBpY2FsbHkgcmVuZGVyZWQgYXMgYSBudW1iZXJlZCBsaXN0LiIpIGVsZW1lbnQgc2hvdWxkIGJlIHN0eWxlZCB1c2luZyBbQ1NTXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0NTUykuIFRvIGdpdmUgYW4gZWZmZWN0IHNpbWlsYXIgdG8gdGhlIGBjb21wYWN0YCBhdHRyaWJ1dGUsIHRoZSBbQ1NTXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0NTUykgcHJvcGVydHkgW2BsaW5lLWhlaWdodGBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9saW5lLWhlaWdodCAiVGhlIGxpbmUtaGVpZ2h0IENTUyBwcm9wZXJ0eSBzZXRzIHRoZSBhbW91bnQgb2Ygc3BhY2UgdXNlZCBmb3IgbGluZXMsIHN1Y2ggYXMgaW4gdGV4dC4gT24gYmxvY2stbGV2ZWwgZWxlbWVudHMsIGl0IHNwZWNpZmllcyB0aGUgbWluaW11bSBoZWlnaHQgb2YgbGluZSBib3hlcyB3aXRoaW4gdGhlIGVsZW1lbnQuIE9uIG5vbi1yZXBsYWNlZCBpbmxpbmUgZWxlbWVudHMsIGl0IHNwZWNpZmllcyB0aGUgaGVpZ2h0IHRoYXQgaXMgdXNlZCB0byBjYWxjdWxhdGUgbGluZSBib3ggaGVpZ2h0LiIpIGNhbiBiZSB1c2VkIHdpdGggYSB2YWx1ZSBvZiBgODAlYC4nfV0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L29sIn1dfSx7bmFtZToidWwiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSB1bCBlbGVtZW50IHJlcHJlc2VudHMgYSBsaXN0IG9mIGl0ZW1zLCB3aGVyZSB0aGUgb3JkZXIgb2YgdGhlIGl0ZW1zIGlzIG5vdCBpbXBvcnRhbnQg4oCUIHRoYXQgaXMsIHdoZXJlIGNoYW5naW5nIHRoZSBvcmRlciB3b3VsZCBub3QgbWF0ZXJpYWxseSBjaGFuZ2UgdGhlIG1lYW5pbmcgb2YgdGhlIGRvY3VtZW50LiJ9LGF0dHJpYnV0ZXM6W3tuYW1lOiJjb21wYWN0IixkZXNjcmlwdGlvbjonVGhpcyBCb29sZWFuIGF0dHJpYnV0ZSBoaW50cyB0aGF0IHRoZSBsaXN0IHNob3VsZCBiZSByZW5kZXJlZCBpbiBhIGNvbXBhY3Qgc3R5bGUuIFRoZSBpbnRlcnByZXRhdGlvbiBvZiB0aGlzIGF0dHJpYnV0ZSBkZXBlbmRzIG9uIHRoZSB1c2VyIGFnZW50IGFuZCBpdCBkb2VzblwndCB3b3JrIGluIGFsbCBicm93c2Vycy5cblxuKipVc2FnZSBub3RlOsKgKipEbyBub3QgdXNlIHRoaXMgYXR0cmlidXRlLCBhcyBpdCBoYXMgYmVlbiBkZXByZWNhdGVkOiB0aGUgW2A8dWw+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3VsICJUaGUgSFRNTCA8dWw+IGVsZW1lbnQgcmVwcmVzZW50cyBhbiB1bm9yZGVyZWQgbGlzdCBvZiBpdGVtcywgdHlwaWNhbGx5IHJlbmRlcmVkIGFzIGEgYnVsbGV0ZWQgbGlzdC4iKSBlbGVtZW50IHNob3VsZCBiZSBzdHlsZWQgdXNpbmcgW0NTU10oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9DU1MpLiBUbyBnaXZlIGEgc2ltaWxhciBlZmZlY3QgYXMgdGhlIGBjb21wYWN0YCBhdHRyaWJ1dGUsIHRoZSBbQ1NTXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0NTUykgcHJvcGVydHkgW2xpbmUtaGVpZ2h0XShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0NTUy9saW5lLWhlaWdodCkgY2FuIGJlIHVzZWQgd2l0aCBhIHZhbHVlIG9mIGA4MCVgLid9XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvdWwifV19LHtuYW1lOiJsaSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGxpIGVsZW1lbnQgcmVwcmVzZW50cyBhIGxpc3QgaXRlbS4gSWYgaXRzIHBhcmVudCBlbGVtZW50IGlzIGFuIG9sLCB1bCwgb3IgbWVudSBlbGVtZW50LCB0aGVuIHRoZSBlbGVtZW50IGlzIGFuIGl0ZW0gb2YgdGhlIHBhcmVudCBlbGVtZW50J3MgbGlzdCwgYXMgZGVmaW5lZCBmb3IgdGhvc2UgZWxlbWVudHMuIE90aGVyd2lzZSwgdGhlIGxpc3QgaXRlbSBoYXMgbm8gZGVmaW5lZCBsaXN0LXJlbGF0ZWQgcmVsYXRpb25zaGlwIHRvIGFueSBvdGhlciBsaSBlbGVtZW50LiJ9LGF0dHJpYnV0ZXM6W3tuYW1lOiJ2YWx1ZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTonVGhpcyBpbnRlZ2VyIGF0dHJpYnV0ZSBpbmRpY2F0ZXMgdGhlIGN1cnJlbnQgb3JkaW5hbCB2YWx1ZSBvZiB0aGUgbGlzdCBpdGVtIGFzIGRlZmluZWQgYnkgdGhlIFtgPG9sPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9vbCAiVGhlIEhUTUwgPG9sPiBlbGVtZW50IHJlcHJlc2VudHMgYW4gb3JkZXJlZCBsaXN0IG9mIGl0ZW1zLCB0eXBpY2FsbHkgcmVuZGVyZWQgYXMgYSBudW1iZXJlZCBsaXN0LiIpIGVsZW1lbnQuIFRoZSBvbmx5IGFsbG93ZWQgdmFsdWUgZm9yIHRoaXMgYXR0cmlidXRlIGlzIGEgbnVtYmVyLCBldmVuIGlmIHRoZSBsaXN0IGlzIGRpc3BsYXllZCB3aXRoIFJvbWFuIG51bWVyYWxzIG9yIGxldHRlcnMuIExpc3QgaXRlbXMgdGhhdCBmb2xsb3cgdGhpcyBvbmUgY29udGludWUgbnVtYmVyaW5nIGZyb20gdGhlIHZhbHVlIHNldC4gVGhlICoqdmFsdWUqKiBhdHRyaWJ1dGUgaGFzIG5vIG1lYW5pbmcgZm9yIHVub3JkZXJlZCBsaXN0cyAoW2A8dWw+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3VsICJUaGUgSFRNTCA8dWw+IGVsZW1lbnQgcmVwcmVzZW50cyBhbiB1bm9yZGVyZWQgbGlzdCBvZiBpdGVtcywgdHlwaWNhbGx5IHJlbmRlcmVkIGFzIGEgYnVsbGV0ZWQgbGlzdC4iKSkgb3IgZm9yIG1lbnVzIChbYDxtZW51PmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9tZW51ICJUaGUgSFRNTCA8bWVudT4gZWxlbWVudCByZXByZXNlbnRzIGEgZ3JvdXAgb2YgY29tbWFuZHMgdGhhdCBhIHVzZXIgY2FuIHBlcmZvcm0gb3IgYWN0aXZhdGUuIFRoaXMgaW5jbHVkZXMgYm90aCBsaXN0IG1lbnVzLCB3aGljaCBtaWdodCBhcHBlYXIgYWNyb3NzIHRoZSB0b3Agb2YgYSBzY3JlZW4sIGFzIHdlbGwgYXMgY29udGV4dCBtZW51cywgc3VjaCBhcyB0aG9zZSB0aGF0IG1pZ2h0IGFwcGVhciB1bmRlcm5lYXRoIGEgYnV0dG9uIGFmdGVyIGl0IGhhcyBiZWVuIGNsaWNrZWQuIikpLlxuXG4qKk5vdGUqKjogVGhpcyBhdHRyaWJ1dGUgd2FzIGRlcHJlY2F0ZWQgaW4gSFRNTDQsIGJ1dCByZWludHJvZHVjZWQgaW4gSFRNTDUuXG5cbioqTm90ZToqKiBQcmlvciB0byBHZWNrb8KgOS4wLCBuZWdhdGl2ZSB2YWx1ZXMgd2VyZSBpbmNvcnJlY3RseSBjb252ZXJ0ZWQgdG8gMC4gU3RhcnRpbmcgaW4gR2Vja2/CoDkuMCBhbGwgaW50ZWdlciB2YWx1ZXMgYXJlIGNvcnJlY3RseSBwYXJzZWQuJ319LHtuYW1lOiJ0eXBlIixkZXNjcmlwdGlvbjonVGhpcyBjaGFyYWN0ZXIgYXR0cmlidXRlIGluZGljYXRlcyB0aGUgbnVtYmVyaW5nIHR5cGU6XG5cbiogICBgYWA6IGxvd2VyY2FzZSBsZXR0ZXJzXG4qICAgYEFgOiB1cHBlcmNhc2UgbGV0dGVyc1xuKiAgIGBpYDogbG93ZXJjYXNlIFJvbWFuIG51bWVyYWxzXG4qICAgYElgOiB1cHBlcmNhc2UgUm9tYW4gbnVtZXJhbHNcbiogICBgMWA6IG51bWJlcnNcblxuVGhpcyB0eXBlIG92ZXJyaWRlcyB0aGUgb25lIHVzZWQgYnkgaXRzIHBhcmVudCBbYDxvbD5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvb2wgIlRoZSBIVE1MIDxvbD4gZWxlbWVudCByZXByZXNlbnRzIGFuIG9yZGVyZWQgbGlzdCBvZiBpdGVtcywgdHlwaWNhbGx5IHJlbmRlcmVkIGFzIGEgbnVtYmVyZWQgbGlzdC4iKSBlbGVtZW50LCBpZiBhbnkuXG5cbioqVXNhZ2Ugbm90ZToqKiBUaGlzIGF0dHJpYnV0ZSBoYXMgYmVlbiBkZXByZWNhdGVkOiB1c2UgdGhlIENTUyBbYGxpc3Qtc3R5bGUtdHlwZWBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9saXN0LXN0eWxlLXR5cGUgIlRoZSBsaXN0LXN0eWxlLXR5cGUgQ1NTIHByb3BlcnR5IHNldHMgdGhlIG1hcmtlciAoc3VjaCBhcyBhIGRpc2MsIGNoYXJhY3Rlciwgb3IgY3VzdG9tIGNvdW50ZXIgc3R5bGUpIG9mIGEgbGlzdCBpdGVtIGVsZW1lbnQuIikgcHJvcGVydHkgaW5zdGVhZC4nfV0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2xpIn1dfSx7bmFtZToiZGwiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBkbCBlbGVtZW50IHJlcHJlc2VudHMgYW4gYXNzb2NpYXRpb24gbGlzdCBjb25zaXN0aW5nIG9mIHplcm8gb3IgbW9yZSBuYW1lLXZhbHVlIGdyb3VwcyAoYSBkZXNjcmlwdGlvbiBsaXN0KS4gQSBuYW1lLXZhbHVlIGdyb3VwIGNvbnNpc3RzIG9mIG9uZSBvciBtb3JlIG5hbWVzIChkdCBlbGVtZW50cykgZm9sbG93ZWQgYnkgb25lIG9yIG1vcmUgdmFsdWVzIChkZCBlbGVtZW50cyksIGlnbm9yaW5nIGFueSBub2RlcyBvdGhlciB0aGFuIGR0IGFuZCBkZCBlbGVtZW50cy4gV2l0aGluIGEgc2luZ2xlIGRsIGVsZW1lbnQsIHRoZXJlIHNob3VsZCBub3QgYmUgbW9yZSB0aGFuIG9uZSBkdCBlbGVtZW50IGZvciBlYWNoIG5hbWUuIn0sYXR0cmlidXRlczpbXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvZGwifV19LHtuYW1lOiJkdCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGR0IGVsZW1lbnQgcmVwcmVzZW50cyB0aGUgdGVybSwgb3IgbmFtZSwgcGFydCBvZiBhIHRlcm0tZGVzY3JpcHRpb24gZ3JvdXAgaW4gYSBkZXNjcmlwdGlvbiBsaXN0IChkbCBlbGVtZW50KS4ifSxhdHRyaWJ1dGVzOltdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9kdCJ9XX0se25hbWU6ImRkIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgZGQgZWxlbWVudCByZXByZXNlbnRzIHRoZSBkZXNjcmlwdGlvbiwgZGVmaW5pdGlvbiwgb3IgdmFsdWUsIHBhcnQgb2YgYSB0ZXJtLWRlc2NyaXB0aW9uIGdyb3VwIGluIGEgZGVzY3JpcHRpb24gbGlzdCAoZGwgZWxlbWVudCkuIn0sYXR0cmlidXRlczpbe25hbWU6Im5vd3JhcCIsZGVzY3JpcHRpb246IklmIHRoZSB2YWx1ZSBvZiB0aGlzIGF0dHJpYnV0ZSBpcyBzZXQgdG8gYHllc2AsIHRoZSBkZWZpbml0aW9uIHRleHQgd2lsbCBub3Qgd3JhcC4gVGhlIGRlZmF1bHQgdmFsdWUgaXMgYG5vYC4ifV0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2RkIn1dfSx7bmFtZToiZmlndXJlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgZmlndXJlIGVsZW1lbnQgcmVwcmVzZW50cyBzb21lIGZsb3cgY29udGVudCwgb3B0aW9uYWxseSB3aXRoIGEgY2FwdGlvbiwgdGhhdCBpcyBzZWxmLWNvbnRhaW5lZCAobGlrZSBhIGNvbXBsZXRlIHNlbnRlbmNlKSBhbmQgaXMgdHlwaWNhbGx5IHJlZmVyZW5jZWQgYXMgYSBzaW5nbGUgdW5pdCBmcm9tIHRoZSBtYWluIGZsb3cgb2YgdGhlIGRvY3VtZW50LiJ9LGF0dHJpYnV0ZXM6W10scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2ZpZ3VyZSJ9XX0se25hbWU6ImZpZ2NhcHRpb24iLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBmaWdjYXB0aW9uIGVsZW1lbnQgcmVwcmVzZW50cyBhIGNhcHRpb24gb3IgbGVnZW5kIGZvciB0aGUgcmVzdCBvZiB0aGUgY29udGVudHMgb2YgdGhlIGZpZ2NhcHRpb24gZWxlbWVudCdzIHBhcmVudCBmaWd1cmUgZWxlbWVudCwgaWYgYW55LiJ9LGF0dHJpYnV0ZXM6W10scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2ZpZ2NhcHRpb24ifV19LHtuYW1lOiJtYWluIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgbWFpbiBlbGVtZW50IHJlcHJlc2VudHMgdGhlIG1haW4gY29udGVudCBvZiB0aGUgYm9keSBvZiBhIGRvY3VtZW50IG9yIGFwcGxpY2F0aW9uLiBUaGUgbWFpbiBjb250ZW50IGFyZWEgY29uc2lzdHMgb2YgY29udGVudCB0aGF0IGlzIGRpcmVjdGx5IHJlbGF0ZWQgdG8gb3IgZXhwYW5kcyB1cG9uIHRoZSBjZW50cmFsIHRvcGljIG9mIGEgZG9jdW1lbnQgb3IgY2VudHJhbCBmdW5jdGlvbmFsaXR5IG9mIGFuIGFwcGxpY2F0aW9uLiJ9LGF0dHJpYnV0ZXM6W10scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L21haW4ifV19LHtuYW1lOiJkaXYiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBkaXYgZWxlbWVudCBoYXMgbm8gc3BlY2lhbCBtZWFuaW5nIGF0IGFsbC4gSXQgcmVwcmVzZW50cyBpdHMgY2hpbGRyZW4uIEl0IGNhbiBiZSB1c2VkIHdpdGggdGhlIGNsYXNzLCBsYW5nLCBhbmQgdGl0bGUgYXR0cmlidXRlcyB0byBtYXJrIHVwIHNlbWFudGljcyBjb21tb24gdG8gYSBncm91cCBvZiBjb25zZWN1dGl2ZSBlbGVtZW50cy4ifSxhdHRyaWJ1dGVzOltdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9kaXYifV19LHtuYW1lOiJhIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJJZiB0aGUgYSBlbGVtZW50IGhhcyBhbiBocmVmIGF0dHJpYnV0ZSwgdGhlbiBpdCByZXByZXNlbnRzIGEgaHlwZXJsaW5rIChhIGh5cGVydGV4dCBhbmNob3IpIGxhYmVsZWQgYnkgaXRzIGNvbnRlbnRzLiJ9LGF0dHJpYnV0ZXM6W3tuYW1lOiJocmVmIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJDb250YWlucyBhIFVSTCBvciBhIFVSTCBmcmFnbWVudCB0aGF0IHRoZSBoeXBlcmxpbmsgcG9pbnRzIHRvLiJ9fSx7bmFtZToidGFyZ2V0IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOidTcGVjaWZpZXMgd2hlcmUgdG8gZGlzcGxheSB0aGUgbGlua2VkIFVSTC4gSXQgaXMgYSBuYW1lIG9mLCBvciBrZXl3b3JkIGZvciwgYSBfYnJvd3NpbmcgY29udGV4dF86IGEgdGFiLCB3aW5kb3csIG9yIGA8aWZyYW1lPmAuIFRoZSBmb2xsb3dpbmcga2V5d29yZHMgaGF2ZSBzcGVjaWFsIG1lYW5pbmdzOlxuXG4qICAgYF9zZWxmYDogTG9hZCB0aGUgVVJMIGludG8gdGhlIHNhbWUgYnJvd3NpbmcgY29udGV4dCBhcyB0aGUgY3VycmVudCBvbmUuIFRoaXMgaXMgdGhlIGRlZmF1bHQgYmVoYXZpb3IuXG4qICAgYF9ibGFua2A6IExvYWQgdGhlIFVSTCBpbnRvIGEgbmV3IGJyb3dzaW5nIGNvbnRleHQuIFRoaXMgaXMgdXN1YWxseSBhIHRhYiwgYnV0IHVzZXJzIGNhbiBjb25maWd1cmUgYnJvd3NlcnMgdG8gdXNlIG5ldyB3aW5kb3dzIGluc3RlYWQuXG4qICAgYF9wYXJlbnRgOiBMb2FkIHRoZSBVUkwgaW50byB0aGUgcGFyZW50IGJyb3dzaW5nIGNvbnRleHQgb2YgdGhlIGN1cnJlbnQgb25lLiBJZiB0aGVyZSBpcyBubyBwYXJlbnQsIHRoaXMgYmVoYXZlcyB0aGUgc2FtZSB3YXkgYXMgYF9zZWxmYC5cbiogICBgX3RvcGA6IExvYWQgdGhlIFVSTCBpbnRvIHRoZSB0b3AtbGV2ZWwgYnJvd3NpbmcgY29udGV4dCAodGhhdCBpcywgdGhlICJoaWdoZXN0IiBicm93c2luZyBjb250ZXh0IHRoYXQgaXMgYW4gYW5jZXN0b3Igb2YgdGhlIGN1cnJlbnQgb25lLCBhbmQgaGFzIG5vIHBhcmVudCkuIElmIHRoZXJlIGlzIG5vIHBhcmVudCwgdGhpcyBiZWhhdmVzIHRoZSBzYW1lIHdheSBhcyBgX3NlbGZgLlxuXG4qKk5vdGU6KiogV2hlbiB1c2luZyBgdGFyZ2V0YCwgY29uc2lkZXIgYWRkaW5nIGByZWw9Im5vcmVmZXJyZXIiYCB0byBhdm9pZCBleHBsb2l0YXRpb24gb2YgdGhlIGB3aW5kb3cub3BlbmVyYCBBUEkuXG5cbioqTm90ZToqKiBMaW5raW5nIHRvIGFub3RoZXIgcGFnZSB1c2luZyBgdGFyZ2V0PSJfYmxhbmsiYCB3aWxsIHJ1biB0aGUgbmV3IHBhZ2Ugb24gdGhlIHNhbWUgcHJvY2VzcyBhcyB5b3VyIHBhZ2UuIElmIHRoZSBuZXcgcGFnZSBpcyBleGVjdXRpbmcgZXhwZW5zaXZlIEpTLCB5b3VyIHBhZ2VcJ3MgcGVyZm9ybWFuY2UgbWF5IHN1ZmZlci4gVG8gYXZvaWQgdGhpcyB1c2UgYHJlbD0ibm9vcGVuZXIiYC4nfX0se25hbWU6ImRvd25sb2FkIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGlzIGF0dHJpYnV0ZSBpbnN0cnVjdHMgYnJvd3NlcnMgdG8gZG93bmxvYWQgYSBVUkwgaW5zdGVhZCBvZiBuYXZpZ2F0aW5nIHRvIGl0LCBzbyB0aGUgdXNlciB3aWxsIGJlIHByb21wdGVkIHRvIHNhdmUgaXQgYXMgYSBsb2NhbCBmaWxlLiBJZiB0aGUgYXR0cmlidXRlIGhhcyBhIHZhbHVlLCBpdCBpcyB1c2VkIGFzIHRoZSBwcmUtZmlsbGVkIGZpbGUgbmFtZSBpbiB0aGUgU2F2ZSBwcm9tcHQgKHRoZSB1c2VyIGNhbiBzdGlsbCBjaGFuZ2UgdGhlIGZpbGUgbmFtZSBpZiB0aGV5IHdhbnQpLiBUaGVyZSBhcmUgbm8gcmVzdHJpY3Rpb25zIG9uIGFsbG93ZWQgdmFsdWVzLCB0aG91Z2ggYC9gIGFuZCBgXFxgIGFyZSBjb252ZXJ0ZWQgdG8gdW5kZXJzY29yZXMuIE1vc3QgZmlsZSBzeXN0ZW1zIGxpbWl0IHNvbWUgcHVuY3R1YXRpb24gaW4gZmlsZSBuYW1lcywgYW5kIGJyb3dzZXJzIHdpbGwgYWRqdXN0IHRoZSBzdWdnZXN0ZWQgbmFtZSBhY2NvcmRpbmdseS5cblxuKipOb3RlczoqKlxuXG4qICAgVGhpcyBhdHRyaWJ1dGUgb25seSB3b3JrcyBmb3IgW3NhbWUtb3JpZ2luIFVSTHNdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL1NlY3VyaXR5L1NhbWUtb3JpZ2luX3BvbGljeSkuXG4qICAgQWx0aG91Z2ggSFRUUChzKSBVUkxzIG5lZWQgdG8gYmUgaW4gdGhlIHNhbWUtb3JpZ2luLCBbYGJsb2I6YCBVUkxzXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvVVJMLmNyZWF0ZU9iamVjdFVSTCkgYW5kIFtgZGF0YTpgIFVSTHNdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUVFAvQmFzaWNzX29mX0hUVFAvRGF0YV9VUklzKSBhcmUgYWxsb3dlZCBzbyB0aGF0IGNvbnRlbnQgZ2VuZXJhdGVkIGJ5IEphdmFTY3JpcHQsIHN1Y2ggYXMgcGljdHVyZXMgY3JlYXRlZCBpbiBhbiBpbWFnZS1lZGl0b3IgV2ViIGFwcCwgY2FuIGJlIGRvd25sb2FkZWQuXG4qICAgSWYgdGhlIEhUVFAgaGVhZGVyIFtgQ29udGVudC1EaXNwb3NpdGlvbjpgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVFRQL0hlYWRlcnMvQ29udGVudC1EaXNwb3NpdGlvbikgZ2l2ZXMgYSBkaWZmZXJlbnQgZmlsZW5hbWUgdGhhbiB0aGlzIGF0dHJpYnV0ZSwgdGhlIEhUVFAgaGVhZGVyIHRha2VzIHByaW9yaXR5IG92ZXIgdGhpcyBhdHRyaWJ1dGUuXG4qICAgSWYgYENvbnRlbnQtRGlzcG9zaXRpb246YCBpcyBzZXQgdG8gYGlubGluZWAsIEZpcmVmb3ggcHJpb3JpdGl6ZXMgYENvbnRlbnQtRGlzcG9zaXRpb25gLCBsaWtlIHRoZSBmaWxlbmFtZSBjYXNlLCB3aGlsZSBDaHJvbWUgcHJpb3JpdGl6ZXMgdGhlIGBkb3dubG9hZGAgYXR0cmlidXRlLiJ9fSx7bmFtZToicGluZyIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTonQ29udGFpbnMgYSBzcGFjZS1zZXBhcmF0ZWQgbGlzdCBvZiBVUkxzIHRvIHdoaWNoLCB3aGVuIHRoZSBoeXBlcmxpbmsgaXMgZm9sbG93ZWQsIFtgUE9TVGBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUVFAvTWV0aG9kcy9QT1NUICJUaGUgSFRUUCBQT1NUIG1ldGhvZCBzZW5kcyBkYXRhIHRvIHRoZSBzZXJ2ZXIuIFRoZSB0eXBlIG9mIHRoZSBib2R5IG9mIHRoZSByZXF1ZXN0IGlzIGluZGljYXRlZCBieSB0aGUgQ29udGVudC1UeXBlIGhlYWRlci4iKSByZXF1ZXN0cyB3aXRoIHRoZSBib2R5IGBQSU5HYCB3aWxsIGJlIHNlbnQgYnkgdGhlIGJyb3dzZXIgKGluIHRoZSBiYWNrZ3JvdW5kKS4gVHlwaWNhbGx5IHVzZWQgZm9yIHRyYWNraW5nLid9fSx7bmFtZToicmVsIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJTcGVjaWZpZXMgdGhlIHJlbGF0aW9uc2hpcCBvZiB0aGUgdGFyZ2V0IG9iamVjdCB0byB0aGUgbGluayBvYmplY3QuIFRoZSB2YWx1ZSBpcyBhIHNwYWNlLXNlcGFyYXRlZCBsaXN0IG9mIFtsaW5rIHR5cGVzXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0xpbmtfdHlwZXMpLiJ9fSx7bmFtZToiaHJlZmxhbmciLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6J1RoaXMgYXR0cmlidXRlIGluZGljYXRlcyB0aGUgaHVtYW4gbGFuZ3VhZ2Ugb2YgdGhlIGxpbmtlZCByZXNvdXJjZS4gSXQgaXMgcHVyZWx5IGFkdmlzb3J5LCB3aXRoIG5vIGJ1aWx0LWluIGZ1bmN0aW9uYWxpdHkuIEFsbG93ZWQgdmFsdWVzIGFyZSBkZXRlcm1pbmVkIGJ5IFtCQ1A0N10oaHR0cHM6Ly93d3cuaWV0Zi5vcmcvcmZjL2JjcC9iY3A0Ny50eHQgIlRhZ3MgZm9yIElkZW50aWZ5aW5nIExhbmd1YWdlcyIpLid9fSx7bmFtZToidHlwZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTonU3BlY2lmaWVzIHRoZSBtZWRpYSB0eXBlIGluIHRoZSBmb3JtIG9mIGEgW01JTUUgdHlwZV0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9HbG9zc2FyeS9NSU1FX3R5cGUgIk1JTUUgdHlwZTogQcKgTUlNRSB0eXBlwqAobm93IHByb3Blcmx5IGNhbGxlZCAibWVkaWEgdHlwZSIsIGJ1dMKgYWxzbyBzb21ldGltZXMgImNvbnRlbnQgdHlwZSIpIGlzIGEgc3RyaW5nIHNlbnQgYWxvbmfCoHdpdGggYSBmaWxlIGluZGljYXRpbmcgdGhlIHR5cGUgb2YgdGhlIGZpbGUgKGRlc2NyaWJpbmcgdGhlIGNvbnRlbnQgZm9ybWF0LCBmb3IgZXhhbXBsZSwgYSBzb3VuZCBmaWxlIG1pZ2h0IGJlIGxhYmVsZWTCoGF1ZGlvL29nZywgb3IgYW4gaW1hZ2UgZmlsZcKgaW1hZ2UvcG5nKS4iKSBmb3IgdGhlIGxpbmtlZCBVUkwuIEl0IGlzIHB1cmVseSBhZHZpc29yeSwgd2l0aCBubyBidWlsdC1pbiBmdW5jdGlvbmFsaXR5Lid9fSx7bmFtZToicmVmZXJyZXJwb2xpY3kiLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgd2hpY2ggW3JlZmVycmVyXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVFRQL0hlYWRlcnMvUmVmZXJlcikgdG8gc2VuZCB3aGVuIGZldGNoaW5nIHRoZSBVUkw6XG5cbiogICBgJ25vLXJlZmVycmVyJ2AgbWVhbnMgdGhlIGBSZWZlcmVyOmAgaGVhZGVyIHdpbGwgbm90IGJlIHNlbnQuXG4qICAgYCduby1yZWZlcnJlci13aGVuLWRvd25ncmFkZSdgIG1lYW5zIG5vIGBSZWZlcmVyOmAgaGVhZGVyIHdpbGwgYmUgc2VudCB3aGVuIG5hdmlnYXRpbmcgdG8gYW4gb3JpZ2luIHdpdGhvdXQgSFRUUFMuIFRoaXMgaXMgdGhlIGRlZmF1bHQgYmVoYXZpb3IuXG4qICAgYCdvcmlnaW4nYCBtZWFucyB0aGUgcmVmZXJyZXIgd2lsbCBiZSB0aGUgW29yaWdpbl0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9HbG9zc2FyeS9PcmlnaW4pIG9mIHRoZSBwYWdlLCBub3QgaW5jbHVkaW5nIGluZm9ybWF0aW9uIGFmdGVyIHRoZSBkb21haW4uXG4qICAgYCdvcmlnaW4td2hlbi1jcm9zcy1vcmlnaW4nYCBtZWFuaW5nIHRoYXQgbmF2aWdhdGlvbnMgdG8gb3RoZXIgb3JpZ2lucyB3aWxsIGJlIGxpbWl0ZWQgdG8gdGhlIHNjaGVtZSwgdGhlIGhvc3QgYW5kIHRoZSBwb3J0LCB3aGlsZSBuYXZpZ2F0aW9ucyBvbiB0aGUgc2FtZSBvcmlnaW4gd2lsbCBpbmNsdWRlIHRoZSByZWZlcnJlcidzIHBhdGguXG4qICAgYCdzdHJpY3Qtb3JpZ2luLXdoZW4tY3Jvc3Mtb3JpZ2luJ2BcbiogICBgJ3Vuc2FmZS11cmwnYCBtZWFucyB0aGUgcmVmZXJyZXIgd2lsbCBpbmNsdWRlIHRoZSBvcmlnaW4gYW5kIHBhdGgsIGJ1dCBub3QgdGhlIGZyYWdtZW50LCBwYXNzd29yZCwgb3IgdXNlcm5hbWUuIFRoaXMgaXMgdW5zYWZlIGJlY2F1c2UgaXQgY2FuIGxlYWsgZGF0YSBmcm9tIHNlY3VyZSBVUkxzIHRvIGluc2VjdXJlIG9uZXMuIn1dLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9hIn1dfSx7bmFtZToiZW0iLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBlbSBlbGVtZW50IHJlcHJlc2VudHMgc3RyZXNzIGVtcGhhc2lzIG9mIGl0cyBjb250ZW50cy4ifSxhdHRyaWJ1dGVzOltdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9lbSJ9XX0se25hbWU6InN0cm9uZyIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHN0cm9uZyBlbGVtZW50IHJlcHJlc2VudHMgc3Ryb25nIGltcG9ydGFuY2UsIHNlcmlvdXNuZXNzLCBvciB1cmdlbmN5IGZvciBpdHMgY29udGVudHMuIn0sYXR0cmlidXRlczpbXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvc3Ryb25nIn1dfSx7bmFtZToic21hbGwiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBzbWFsbCBlbGVtZW50IHJlcHJlc2VudHMgc2lkZSBjb21tZW50cyBzdWNoIGFzIHNtYWxsIHByaW50LiJ9LGF0dHJpYnV0ZXM6W10scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3NtYWxsIn1dfSx7bmFtZToicyIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHMgZWxlbWVudCByZXByZXNlbnRzIGNvbnRlbnRzIHRoYXQgYXJlIG5vIGxvbmdlciBhY2N1cmF0ZSBvciBubyBsb25nZXIgcmVsZXZhbnQuIn0sYXR0cmlidXRlczpbXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvcyJ9XX0se25hbWU6ImNpdGUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBjaXRlIGVsZW1lbnQgcmVwcmVzZW50cyBhIHJlZmVyZW5jZSB0byBhIGNyZWF0aXZlIHdvcmsuIEl0IG11c3QgaW5jbHVkZSB0aGUgdGl0bGUgb2YgdGhlIHdvcmsgb3IgdGhlIG5hbWUgb2YgdGhlIGF1dGhvcihwZXJzb24sIHBlb3BsZSBvciBvcmdhbml6YXRpb24pIG9yIGFuIFVSTCByZWZlcmVuY2UsIG9yIGEgcmVmZXJlbmNlIGluIGFiYnJldmlhdGVkIGZvcm0gYXMgcGVyIHRoZSBjb252ZW50aW9ucyB1c2VkIGZvciB0aGUgYWRkaXRpb24gb2YgY2l0YXRpb24gbWV0YWRhdGEuIn0sYXR0cmlidXRlczpbXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvY2l0ZSJ9XX0se25hbWU6InEiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBxIGVsZW1lbnQgcmVwcmVzZW50cyBzb21lIHBocmFzaW5nIGNvbnRlbnQgcXVvdGVkIGZyb20gYW5vdGhlciBzb3VyY2UuIn0sYXR0cmlidXRlczpbe25hbWU6ImNpdGUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSB2YWx1ZSBvZiB0aGlzIGF0dHJpYnV0ZSBpcyBhIFVSTCB0aGF0IGRlc2lnbmF0ZXMgYSBzb3VyY2UgZG9jdW1lbnQgb3IgbWVzc2FnZSBmb3IgdGhlIGluZm9ybWF0aW9uIHF1b3RlZC4gVGhpcyBhdHRyaWJ1dGUgaXMgaW50ZW5kZWQgdG8gcG9pbnQgdG8gaW5mb3JtYXRpb24gZXhwbGFpbmluZyB0aGUgY29udGV4dCBvciB0aGUgcmVmZXJlbmNlIGZvciB0aGUgcXVvdGUuIn19XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvcSJ9XX0se25hbWU6ImRmbiIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGRmbiBlbGVtZW50IHJlcHJlc2VudHMgdGhlIGRlZmluaW5nIGluc3RhbmNlIG9mIGEgdGVybS4gVGhlIHBhcmFncmFwaCwgZGVzY3JpcHRpb24gbGlzdCBncm91cCwgb3Igc2VjdGlvbiB0aGF0IGlzIHRoZSBuZWFyZXN0IGFuY2VzdG9yIG9mIHRoZSBkZm4gZWxlbWVudCBtdXN0IGFsc28gY29udGFpbiB0aGUgZGVmaW5pdGlvbihzKSBmb3IgdGhlIHRlcm0gZ2l2ZW4gYnkgdGhlIGRmbiBlbGVtZW50LiJ9LGF0dHJpYnV0ZXM6W10scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2RmbiJ9XX0se25hbWU6ImFiYnIiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBhYmJyIGVsZW1lbnQgcmVwcmVzZW50cyBhbiBhYmJyZXZpYXRpb24gb3IgYWNyb255bSwgb3B0aW9uYWxseSB3aXRoIGl0cyBleHBhbnNpb24uIFRoZSB0aXRsZSBhdHRyaWJ1dGUgbWF5IGJlIHVzZWQgdG8gcHJvdmlkZSBhbiBleHBhbnNpb24gb2YgdGhlIGFiYnJldmlhdGlvbi4gVGhlIGF0dHJpYnV0ZSwgaWYgc3BlY2lmaWVkLCBtdXN0IGNvbnRhaW4gYW4gZXhwYW5zaW9uIG9mIHRoZSBhYmJyZXZpYXRpb24sIGFuZCBub3RoaW5nIGVsc2UuIn0sYXR0cmlidXRlczpbXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvYWJiciJ9XX0se25hbWU6InJ1YnkiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBydWJ5IGVsZW1lbnQgYWxsb3dzIG9uZSBvciBtb3JlIHNwYW5zIG9mIHBocmFzaW5nIGNvbnRlbnQgdG8gYmUgbWFya2VkIHdpdGggcnVieSBhbm5vdGF0aW9ucy4gUnVieSBhbm5vdGF0aW9ucyBhcmUgc2hvcnQgcnVucyBvZiB0ZXh0IHByZXNlbnRlZCBhbG9uZ3NpZGUgYmFzZSB0ZXh0LCBwcmltYXJpbHkgdXNlZCBpbiBFYXN0IEFzaWFuIHR5cG9ncmFwaHkgYXMgYSBndWlkZSBmb3IgcHJvbnVuY2lhdGlvbiBvciB0byBpbmNsdWRlIG90aGVyIGFubm90YXRpb25zLiBJbiBKYXBhbmVzZSwgdGhpcyBmb3JtIG9mIHR5cG9ncmFwaHkgaXMgYWxzbyBrbm93biBhcyBmdXJpZ2FuYS4gUnVieSB0ZXh0IGNhbiBhcHBlYXIgb24gZWl0aGVyIHNpZGUsIGFuZCBzb21ldGltZXMgYm90aCBzaWRlcywgb2YgdGhlIGJhc2UgdGV4dCwgYW5kIGl0IGlzIHBvc3NpYmxlIHRvIGNvbnRyb2wgaXRzIHBvc2l0aW9uIHVzaW5nIENTUy4gQSBtb3JlIGNvbXBsZXRlIGludHJvZHVjdGlvbiB0byBydWJ5IGNhbiBiZSBmb3VuZCBpbiB0aGUgVXNlIENhc2VzICYgRXhwbG9yYXRvcnkgQXBwcm9hY2hlcyBmb3IgUnVieSBNYXJrdXAgZG9jdW1lbnQgYXMgd2VsbCBhcyBpbiBDU1MgUnVieSBNb2R1bGUgTGV2ZWwgMS4gW1JVQlktVUNdIFtDU1NSVUJZXSJ9LGF0dHJpYnV0ZXM6W10scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3J1YnkifV19LHtuYW1lOiJyYiIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHJiIGVsZW1lbnQgbWFya3MgdGhlIGJhc2UgdGV4dCBjb21wb25lbnQgb2YgYSBydWJ5IGFubm90YXRpb24uIFdoZW4gaXQgaXMgdGhlIGNoaWxkIG9mIGEgcnVieSBlbGVtZW50LCBpdCBkb2Vzbid0IHJlcHJlc2VudCBhbnl0aGluZyBpdHNlbGYsIGJ1dCBpdHMgcGFyZW50IHJ1YnkgZWxlbWVudCB1c2VzIGl0IGFzIHBhcnQgb2YgZGV0ZXJtaW5pbmcgd2hhdCBpdCByZXByZXNlbnRzLiJ9LGF0dHJpYnV0ZXM6W10scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3JiIn1dfSx7bmFtZToicnQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBydCBlbGVtZW50IG1hcmtzIHRoZSBydWJ5IHRleHQgY29tcG9uZW50IG9mIGEgcnVieSBhbm5vdGF0aW9uLiBXaGVuIGl0IGlzIHRoZSBjaGlsZCBvZiBhIHJ1YnkgZWxlbWVudCBvciBvZiBhbiBydGMgZWxlbWVudCB0aGF0IGlzIGl0c2VsZiB0aGUgY2hpbGQgb2YgYSBydWJ5IGVsZW1lbnQsIGl0IGRvZXNuJ3QgcmVwcmVzZW50IGFueXRoaW5nIGl0c2VsZiwgYnV0IGl0cyBhbmNlc3RvciBydWJ5IGVsZW1lbnQgdXNlcyBpdCBhcyBwYXJ0IG9mIGRldGVybWluaW5nIHdoYXQgaXQgcmVwcmVzZW50cy4ifSxhdHRyaWJ1dGVzOltdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9ydCJ9XX0se25hbWU6InJwIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgcnAgZWxlbWVudCBpcyB1c2VkIHRvIHByb3ZpZGUgZmFsbGJhY2sgdGV4dCB0byBiZSBzaG93biBieSB1c2VyIGFnZW50cyB0aGF0IGRvbid0IHN1cHBvcnQgcnVieSBhbm5vdGF0aW9ucy4gT25lIHdpZGVzcHJlYWQgY29udmVudGlvbiBpcyB0byBwcm92aWRlIHBhcmVudGhlc2VzIGFyb3VuZCB0aGUgcnVieSB0ZXh0IGNvbXBvbmVudCBvZiBhIHJ1YnkgYW5ub3RhdGlvbi4ifSxhdHRyaWJ1dGVzOltdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9ycCJ9XX0se25hbWU6InRpbWUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSB0aW1lIGVsZW1lbnQgcmVwcmVzZW50cyBpdHMgY29udGVudHMsIGFsb25nIHdpdGggYSBtYWNoaW5lLXJlYWRhYmxlIGZvcm0gb2YgdGhvc2UgY29udGVudHMgaW4gdGhlIGRhdGV0aW1lIGF0dHJpYnV0ZS4gVGhlIGtpbmQgb2YgY29udGVudCBpcyBsaW1pdGVkIHRvIHZhcmlvdXMga2luZHMgb2YgZGF0ZXMsIHRpbWVzLCB0aW1lLXpvbmUgb2Zmc2V0cywgYW5kIGR1cmF0aW9ucywgYXMgZGVzY3JpYmVkIGJlbG93LiJ9LGF0dHJpYnV0ZXM6W3tuYW1lOiJkYXRldGltZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhpcyBhdHRyaWJ1dGUgaW5kaWNhdGVzIHRoZSB0aW1lIGFuZC9vciBkYXRlIG9mIHRoZSBlbGVtZW50IGFuZCBtdXN0IGJlIGluIG9uZSBvZiB0aGUgZm9ybWF0cyBkZXNjcmliZWQgYmVsb3cuIn19XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvdGltZSJ9XX0se25hbWU6ImNvZGUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBjb2RlIGVsZW1lbnQgcmVwcmVzZW50cyBhIGZyYWdtZW50IG9mIGNvbXB1dGVyIGNvZGUuIFRoaXMgY291bGQgYmUgYW4gWE1MIGVsZW1lbnQgbmFtZSwgYSBmaWxlIG5hbWUsIGEgY29tcHV0ZXIgcHJvZ3JhbSwgb3IgYW55IG90aGVyIHN0cmluZyB0aGF0IGEgY29tcHV0ZXIgd291bGQgcmVjb2duaXplLiJ9LGF0dHJpYnV0ZXM6W10scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2NvZGUifV19LHtuYW1lOiJ2YXIiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSB2YXIgZWxlbWVudCByZXByZXNlbnRzIGEgdmFyaWFibGUuIFRoaXMgY291bGQgYmUgYW4gYWN0dWFsIHZhcmlhYmxlIGluIGEgbWF0aGVtYXRpY2FsIGV4cHJlc3Npb24gb3IgcHJvZ3JhbW1pbmcgY29udGV4dCwgYW4gaWRlbnRpZmllciByZXByZXNlbnRpbmcgYSBjb25zdGFudCwgYSBzeW1ib2wgaWRlbnRpZnlpbmcgYSBwaHlzaWNhbCBxdWFudGl0eSwgYSBmdW5jdGlvbiBwYXJhbWV0ZXIsIG9yIGp1c3QgYmUgYSB0ZXJtIHVzZWQgYXMgYSBwbGFjZWhvbGRlciBpbiBwcm9zZS4ifSxhdHRyaWJ1dGVzOltdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC92YXIifV19LHtuYW1lOiJzYW1wIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgc2FtcCBlbGVtZW50IHJlcHJlc2VudHMgc2FtcGxlIG9yIHF1b3RlZCBvdXRwdXQgZnJvbSBhbm90aGVyIHByb2dyYW0gb3IgY29tcHV0aW5nIHN5c3RlbS4ifSxhdHRyaWJ1dGVzOltdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9zYW1wIn1dfSx7bmFtZToia2JkIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUga2JkIGVsZW1lbnQgcmVwcmVzZW50cyB1c2VyIGlucHV0ICh0eXBpY2FsbHkga2V5Ym9hcmQgaW5wdXQsIGFsdGhvdWdoIGl0IG1heSBhbHNvIGJlIHVzZWQgdG8gcmVwcmVzZW50IG90aGVyIGlucHV0LCBzdWNoIGFzIHZvaWNlIGNvbW1hbmRzKS4ifSxhdHRyaWJ1dGVzOltdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9rYmQifV19LHtuYW1lOiJzdWIiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBzdWIgZWxlbWVudCByZXByZXNlbnRzIGEgc3Vic2NyaXB0LiJ9LGF0dHJpYnV0ZXM6W10scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3N1YiJ9XX0se25hbWU6InN1cCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHN1cCBlbGVtZW50IHJlcHJlc2VudHMgYSBzdXBlcnNjcmlwdC4ifSxhdHRyaWJ1dGVzOltdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9zdXAifV19LHtuYW1lOiJpIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgaSBlbGVtZW50IHJlcHJlc2VudHMgYSBzcGFuIG9mIHRleHQgaW4gYW4gYWx0ZXJuYXRlIHZvaWNlIG9yIG1vb2QsIG9yIG90aGVyd2lzZSBvZmZzZXQgZnJvbSB0aGUgbm9ybWFsIHByb3NlIGluIGEgbWFubmVyIGluZGljYXRpbmcgYSBkaWZmZXJlbnQgcXVhbGl0eSBvZiB0ZXh0LCBzdWNoIGFzIGEgdGF4b25vbWljIGRlc2lnbmF0aW9uLCBhIHRlY2huaWNhbCB0ZXJtLCBhbiBpZGlvbWF0aWMgcGhyYXNlIGZyb20gYW5vdGhlciBsYW5ndWFnZSwgdHJhbnNsaXRlcmF0aW9uLCBhIHRob3VnaHQsIG9yIGEgc2hpcCBuYW1lIGluIFdlc3Rlcm4gdGV4dHMuIn0sYXR0cmlidXRlczpbXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvaSJ9XX0se25hbWU6ImIiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBiIGVsZW1lbnQgcmVwcmVzZW50cyBhIHNwYW4gb2YgdGV4dCB0byB3aGljaCBhdHRlbnRpb24gaXMgYmVpbmcgZHJhd24gZm9yIHV0aWxpdGFyaWFuIHB1cnBvc2VzIHdpdGhvdXQgY29udmV5aW5nIGFueSBleHRyYSBpbXBvcnRhbmNlIGFuZCB3aXRoIG5vIGltcGxpY2F0aW9uIG9mIGFuIGFsdGVybmF0ZSB2b2ljZSBvciBtb29kLCBzdWNoIGFzIGtleSB3b3JkcyBpbiBhIGRvY3VtZW50IGFic3RyYWN0LCBwcm9kdWN0IG5hbWVzIGluIGEgcmV2aWV3LCBhY3Rpb25hYmxlIHdvcmRzIGluIGludGVyYWN0aXZlIHRleHQtZHJpdmVuIHNvZnR3YXJlLCBvciBhbiBhcnRpY2xlIGxlZGUuIn0sYXR0cmlidXRlczpbXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvYiJ9XX0se25hbWU6InUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSB1IGVsZW1lbnQgcmVwcmVzZW50cyBhIHNwYW4gb2YgdGV4dCB3aXRoIGFuIHVuYXJ0aWN1bGF0ZWQsIHRob3VnaCBleHBsaWNpdGx5IHJlbmRlcmVkLCBub24tdGV4dHVhbCBhbm5vdGF0aW9uLCBzdWNoIGFzIGxhYmVsaW5nIHRoZSB0ZXh0IGFzIGJlaW5nIGEgcHJvcGVyIG5hbWUgaW4gQ2hpbmVzZSB0ZXh0IChhIENoaW5lc2UgcHJvcGVyIG5hbWUgbWFyayksIG9yIGxhYmVsaW5nIHRoZSB0ZXh0IGFzIGJlaW5nIG1pc3NwZWx0LiJ9LGF0dHJpYnV0ZXM6W10scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3UifV19LHtuYW1lOiJtYXJrIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgbWFyayBlbGVtZW50IHJlcHJlc2VudHMgYSBydW4gb2YgdGV4dCBpbiBvbmUgZG9jdW1lbnQgbWFya2VkIG9yIGhpZ2hsaWdodGVkIGZvciByZWZlcmVuY2UgcHVycG9zZXMsIGR1ZSB0byBpdHMgcmVsZXZhbmNlIGluIGFub3RoZXIgY29udGV4dC4gV2hlbiB1c2VkIGluIGEgcXVvdGF0aW9uIG9yIG90aGVyIGJsb2NrIG9mIHRleHQgcmVmZXJyZWQgdG8gZnJvbSB0aGUgcHJvc2UsIGl0IGluZGljYXRlcyBhIGhpZ2hsaWdodCB0aGF0IHdhcyBub3Qgb3JpZ2luYWxseSBwcmVzZW50IGJ1dCB3aGljaCBoYXMgYmVlbiBhZGRlZCB0byBicmluZyB0aGUgcmVhZGVyJ3MgYXR0ZW50aW9uIHRvIGEgcGFydCBvZiB0aGUgdGV4dCB0aGF0IG1pZ2h0IG5vdCBoYXZlIGJlZW4gY29uc2lkZXJlZCBpbXBvcnRhbnQgYnkgdGhlIG9yaWdpbmFsIGF1dGhvciB3aGVuIHRoZSBibG9jayB3YXMgb3JpZ2luYWxseSB3cml0dGVuLCBidXQgd2hpY2ggaXMgbm93IHVuZGVyIHByZXZpb3VzbHkgdW5leHBlY3RlZCBzY3J1dGlueS4gV2hlbiB1c2VkIGluIHRoZSBtYWluIHByb3NlIG9mIGEgZG9jdW1lbnQsIGl0IGluZGljYXRlcyBhIHBhcnQgb2YgdGhlIGRvY3VtZW50IHRoYXQgaGFzIGJlZW4gaGlnaGxpZ2h0ZWQgZHVlIHRvIGl0cyBsaWtlbHkgcmVsZXZhbmNlIHRvIHRoZSB1c2VyJ3MgY3VycmVudCBhY3Rpdml0eS4ifSxhdHRyaWJ1dGVzOltdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9tYXJrIn1dfSx7bmFtZToiYmRpIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgYmRpIGVsZW1lbnQgcmVwcmVzZW50cyBhIHNwYW4gb2YgdGV4dCB0aGF0IGlzIHRvIGJlIGlzb2xhdGVkIGZyb20gaXRzIHN1cnJvdW5kaW5ncyBmb3IgdGhlIHB1cnBvc2VzIG9mIGJpZGlyZWN0aW9uYWwgdGV4dCBmb3JtYXR0aW5nLiBbQklESV0ifSxhdHRyaWJ1dGVzOltdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9iZGkifV19LHtuYW1lOiJiZG8iLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBiZG8gZWxlbWVudCByZXByZXNlbnRzIGV4cGxpY2l0IHRleHQgZGlyZWN0aW9uYWxpdHkgZm9ybWF0dGluZyBjb250cm9sIGZvciBpdHMgY2hpbGRyZW4uIEl0IGFsbG93cyBhdXRob3JzIHRvIG92ZXJyaWRlIHRoZSBVbmljb2RlIGJpZGlyZWN0aW9uYWwgYWxnb3JpdGhtIGJ5IGV4cGxpY2l0bHkgc3BlY2lmeWluZyBhIGRpcmVjdGlvbiBvdmVycmlkZS4gW0JJREldIn0sYXR0cmlidXRlczpbe25hbWU6ImRpciIsZGVzY3JpcHRpb246IlRoZSBkaXJlY3Rpb24gaW4gd2hpY2ggdGV4dCBzaG91bGQgYmUgcmVuZGVyZWQgaW4gdGhpcyBlbGVtZW50J3MgY29udGVudHMuIFBvc3NpYmxlIHZhbHVlcyBhcmU6XG5cbiogICBgbHRyYDogSW5kaWNhdGVzIHRoYXQgdGhlIHRleHQgc2hvdWxkIGdvIGluIGEgbGVmdC10by1yaWdodCBkaXJlY3Rpb24uXG4qICAgYHJ0bGA6IEluZGljYXRlcyB0aGF0IHRoZSB0ZXh0IHNob3VsZCBnbyBpbiBhIHJpZ2h0LXRvLWxlZnQgZGlyZWN0aW9uLiJ9XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvYmRvIn1dfSx7bmFtZToic3BhbiIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHNwYW4gZWxlbWVudCBkb2Vzbid0IG1lYW4gYW55dGhpbmcgb24gaXRzIG93biwgYnV0IGNhbiBiZSB1c2VmdWwgd2hlbiB1c2VkIHRvZ2V0aGVyIHdpdGggdGhlIGdsb2JhbCBhdHRyaWJ1dGVzLCBlLmcuIGNsYXNzLCBsYW5nLCBvciBkaXIuIEl0IHJlcHJlc2VudHMgaXRzIGNoaWxkcmVuLiJ9LGF0dHJpYnV0ZXM6W10scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3NwYW4ifV19LHtuYW1lOiJiciIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGJyIGVsZW1lbnQgcmVwcmVzZW50cyBhIGxpbmUgYnJlYWsuIn0sYXR0cmlidXRlczpbe25hbWU6ImNsZWFyIixkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIHdoZXJlIHRvIGJlZ2luIHRoZSBuZXh0IGxpbmUgYWZ0ZXIgdGhlIGJyZWFrLiJ9XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvYnIifV19LHtuYW1lOiJ3YnIiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSB3YnIgZWxlbWVudCByZXByZXNlbnRzIGEgbGluZSBicmVhayBvcHBvcnR1bml0eS4ifSxhdHRyaWJ1dGVzOltdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC93YnIifV19LHtuYW1lOiJpbnMiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBpbnMgZWxlbWVudCByZXByZXNlbnRzIGFuIGFkZGl0aW9uIHRvIHRoZSBkb2N1bWVudC4ifSxhdHRyaWJ1dGVzOlt7bmFtZToiY2l0ZSIsZGVzY3JpcHRpb246IlRoaXMgYXR0cmlidXRlIGRlZmluZXMgdGhlIFVSSSBvZiBhIHJlc291cmNlIHRoYXQgZXhwbGFpbnMgdGhlIGNoYW5nZSwgc3VjaCBhcyBhIGxpbmsgdG8gbWVldGluZyBtaW51dGVzIG9yIGEgdGlja2V0IGluIGEgdHJvdWJsZXNob290aW5nIHN5c3RlbS4ifSx7bmFtZToiZGF0ZXRpbWUiLGRlc2NyaXB0aW9uOidUaGlzIGF0dHJpYnV0ZSBpbmRpY2F0ZXMgdGhlIHRpbWUgYW5kIGRhdGUgb2YgdGhlIGNoYW5nZSBhbmQgbXVzdCBiZSBhIHZhbGlkIGRhdGUgd2l0aCBhbiBvcHRpb25hbCB0aW1lIHN0cmluZy4gSWYgdGhlIHZhbHVlIGNhbm5vdCBiZSBwYXJzZWQgYXMgYSBkYXRlIHdpdGggYW4gb3B0aW9uYWwgdGltZSBzdHJpbmcsIHRoZSBlbGVtZW50IGRvZXMgbm90IGhhdmUgYW4gYXNzb2NpYXRlZCB0aW1lIHN0YW1wLiBGb3IgdGhlIGZvcm1hdCBvZiB0aGUgc3RyaW5nIHdpdGhvdXQgYSB0aW1lLCBzZWUgW0Zvcm1hdCBvZiBhIHZhbGlkIGRhdGUgc3RyaW5nXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0RhdGVfYW5kX3RpbWVfZm9ybWF0cyNGb3JtYXRfb2ZfYV92YWxpZF9kYXRlX3N0cmluZyAiQ2VydGFpbiBIVE1MIGVsZW1lbnRzIHVzZSBkYXRlIGFuZC9vciB0aW1lIHZhbHVlcy4gVGhlIGZvcm1hdHMgb2YgdGhlIHN0cmluZ3MgdGhhdCBzcGVjaWZ5IHRoZXNlIGFyZSBkZXNjcmliZWQgaW4gdGhpcyBhcnRpY2xlLiIpIGluIFtEYXRlIGFuZCB0aW1lIGZvcm1hdHMgdXNlZCBpbiBIVE1MXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0RhdGVfYW5kX3RpbWVfZm9ybWF0cyAiQ2VydGFpbiBIVE1MIGVsZW1lbnRzIHVzZSBkYXRlIGFuZC9vciB0aW1lIHZhbHVlcy4gVGhlIGZvcm1hdHMgb2YgdGhlIHN0cmluZ3MgdGhhdCBzcGVjaWZ5IHRoZXNlIGFyZSBkZXNjcmliZWQgaW4gdGhpcyBhcnRpY2xlLiIpLiBUaGUgZm9ybWF0IG9mIHRoZSBzdHJpbmcgaWYgaXQgaW5jbHVkZXMgYm90aCBkYXRlIGFuZCB0aW1lIGlzIGNvdmVyZWQgaW4gW0Zvcm1hdCBvZiBhIHZhbGlkIGxvY2FsIGRhdGUgYW5kIHRpbWUgc3RyaW5nXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0RhdGVfYW5kX3RpbWVfZm9ybWF0cyNGb3JtYXRfb2ZfYV92YWxpZF9sb2NhbF9kYXRlX2FuZF90aW1lX3N0cmluZyAiQ2VydGFpbiBIVE1MIGVsZW1lbnRzIHVzZSBkYXRlIGFuZC9vciB0aW1lIHZhbHVlcy4gVGhlIGZvcm1hdHMgb2YgdGhlIHN0cmluZ3MgdGhhdCBzcGVjaWZ5IHRoZXNlIGFyZSBkZXNjcmliZWQgaW4gdGhpcyBhcnRpY2xlLiIpIGluIFtEYXRlIGFuZCB0aW1lIGZvcm1hdHMgdXNlZCBpbiBIVE1MXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0RhdGVfYW5kX3RpbWVfZm9ybWF0cyAiQ2VydGFpbiBIVE1MIGVsZW1lbnRzIHVzZSBkYXRlIGFuZC9vciB0aW1lIHZhbHVlcy4gVGhlIGZvcm1hdHMgb2YgdGhlIHN0cmluZ3MgdGhhdCBzcGVjaWZ5IHRoZXNlIGFyZSBkZXNjcmliZWQgaW4gdGhpcyBhcnRpY2xlLiIpLid9XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvaW5zIn1dfSx7bmFtZToiZGVsIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgZGVsIGVsZW1lbnQgcmVwcmVzZW50cyBhIHJlbW92YWwgZnJvbSB0aGUgZG9jdW1lbnQuIn0sYXR0cmlidXRlczpbe25hbWU6ImNpdGUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkEgVVJJIGZvciBhIHJlc291cmNlIHRoYXQgZXhwbGFpbnMgdGhlIGNoYW5nZSAoZm9yIGV4YW1wbGUsIG1lZXRpbmcgbWludXRlcykuIn19LHtuYW1lOiJkYXRldGltZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTonVGhpcyBhdHRyaWJ1dGUgaW5kaWNhdGVzIHRoZSB0aW1lIGFuZCBkYXRlIG9mIHRoZSBjaGFuZ2UgYW5kIG11c3QgYmUgYSB2YWxpZCBkYXRlIHN0cmluZyB3aXRoIGFuIG9wdGlvbmFsIHRpbWUuIElmIHRoZSB2YWx1ZSBjYW5ub3QgYmUgcGFyc2VkIGFzIGEgZGF0ZSB3aXRoIGFuIG9wdGlvbmFsIHRpbWUgc3RyaW5nLCB0aGUgZWxlbWVudCBkb2VzIG5vdCBoYXZlIGFuIGFzc29jaWF0ZWQgdGltZSBzdGFtcC4gRm9yIHRoZSBmb3JtYXQgb2YgdGhlIHN0cmluZyB3aXRob3V0IGEgdGltZSwgc2VlIFtGb3JtYXQgb2YgYSB2YWxpZCBkYXRlIHN0cmluZ10oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9EYXRlX2FuZF90aW1lX2Zvcm1hdHMjRm9ybWF0X29mX2FfdmFsaWRfZGF0ZV9zdHJpbmcgIkNlcnRhaW4gSFRNTCBlbGVtZW50cyB1c2UgZGF0ZSBhbmQvb3IgdGltZSB2YWx1ZXMuIFRoZSBmb3JtYXRzIG9mIHRoZSBzdHJpbmdzIHRoYXQgc3BlY2lmeSB0aGVzZSBhcmUgZGVzY3JpYmVkIGluIHRoaXMgYXJ0aWNsZS4iKSBpbiBbRGF0ZSBhbmQgdGltZSBmb3JtYXRzIHVzZWQgaW4gSFRNTF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9EYXRlX2FuZF90aW1lX2Zvcm1hdHMgIkNlcnRhaW4gSFRNTCBlbGVtZW50cyB1c2UgZGF0ZSBhbmQvb3IgdGltZSB2YWx1ZXMuIFRoZSBmb3JtYXRzIG9mIHRoZSBzdHJpbmdzIHRoYXQgc3BlY2lmeSB0aGVzZSBhcmUgZGVzY3JpYmVkIGluIHRoaXMgYXJ0aWNsZS4iKS4gVGhlIGZvcm1hdCBvZiB0aGUgc3RyaW5nIGlmIGl0IGluY2x1ZGVzIGJvdGggZGF0ZSBhbmQgdGltZSBpcyBjb3ZlcmVkIGluIFtGb3JtYXQgb2YgYSB2YWxpZCBsb2NhbCBkYXRlIGFuZCB0aW1lIHN0cmluZ10oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9EYXRlX2FuZF90aW1lX2Zvcm1hdHMjRm9ybWF0X29mX2FfdmFsaWRfbG9jYWxfZGF0ZV9hbmRfdGltZV9zdHJpbmcgIkNlcnRhaW4gSFRNTCBlbGVtZW50cyB1c2UgZGF0ZSBhbmQvb3IgdGltZSB2YWx1ZXMuIFRoZSBmb3JtYXRzIG9mIHRoZSBzdHJpbmdzIHRoYXQgc3BlY2lmeSB0aGVzZSBhcmUgZGVzY3JpYmVkIGluIHRoaXMgYXJ0aWNsZS4iKSBpbiBbRGF0ZSBhbmQgdGltZSBmb3JtYXRzIHVzZWQgaW4gSFRNTF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9EYXRlX2FuZF90aW1lX2Zvcm1hdHMgIkNlcnRhaW4gSFRNTCBlbGVtZW50cyB1c2UgZGF0ZSBhbmQvb3IgdGltZSB2YWx1ZXMuIFRoZSBmb3JtYXRzIG9mIHRoZSBzdHJpbmdzIHRoYXQgc3BlY2lmeSB0aGVzZSBhcmUgZGVzY3JpYmVkIGluIHRoaXMgYXJ0aWNsZS4iKS4nfX1dLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9kZWwifV19LHtuYW1lOiJwaWN0dXJlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgcGljdHVyZSBlbGVtZW50IGlzIGEgY29udGFpbmVyIHdoaWNoIHByb3ZpZGVzIG11bHRpcGxlIHNvdXJjZXMgdG8gaXRzIGNvbnRhaW5lZCBpbWcgZWxlbWVudCB0byBhbGxvdyBhdXRob3JzIHRvIGRlY2xhcmF0aXZlbHkgY29udHJvbCBvciBnaXZlIGhpbnRzIHRvIHRoZSB1c2VyIGFnZW50IGFib3V0IHdoaWNoIGltYWdlIHJlc291cmNlIHRvIHVzZSwgYmFzZWQgb24gdGhlIHNjcmVlbiBwaXhlbCBkZW5zaXR5LCB2aWV3cG9ydCBzaXplLCBpbWFnZSBmb3JtYXQsIGFuZCBvdGhlciBmYWN0b3JzLiBJdCByZXByZXNlbnRzIGl0cyBjaGlsZHJlbi4ifSxhdHRyaWJ1dGVzOltdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9waWN0dXJlIn1dfSx7bmFtZToiaW1nIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJBbiBpbWcgZWxlbWVudCByZXByZXNlbnRzIGFuIGltYWdlLiJ9LGF0dHJpYnV0ZXM6W3tuYW1lOiJhbHQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6J1RoaXMgYXR0cmlidXRlIGRlZmluZXMgYW4gYWx0ZXJuYXRpdmUgdGV4dCBkZXNjcmlwdGlvbiBvZiB0aGUgaW1hZ2UuXG5cbioqTm90ZToqKiBCcm93c2VycyBkbyBub3QgYWx3YXlzIGRpc3BsYXkgdGhlIGltYWdlIHJlZmVyZW5jZWQgYnkgdGhlIGVsZW1lbnQuIFRoaXMgaXMgdGhlIGNhc2UgZm9yIG5vbi1ncmFwaGljYWwgYnJvd3NlcnMgKGluY2x1ZGluZyB0aG9zZSB1c2VkIGJ5IHBlb3BsZSB3aXRoIHZpc3VhbCBpbXBhaXJtZW50cyksIGlmIHRoZSB1c2VyIGNob29zZXMgbm90IHRvIGRpc3BsYXkgaW1hZ2VzLCBvciBpZiB0aGUgYnJvd3NlciBjYW5ub3QgZGlzcGxheSB0aGUgaW1hZ2UgYmVjYXVzZSBpdCBpcyBpbnZhbGlkIG9yIGFuIFt1bnN1cHBvcnRlZCB0eXBlXSgjU3VwcG9ydGVkX2ltYWdlX2Zvcm1hdHMpLiBJbiB0aGVzZSBjYXNlcywgdGhlIGJyb3dzZXIgbWF5IHJlcGxhY2UgdGhlIGltYWdlIHdpdGggdGhlIHRleHQgZGVmaW5lZCBpbiB0aGlzIGVsZW1lbnRcJ3MgYGFsdGAgYXR0cmlidXRlLiBZb3Ugc2hvdWxkLCBmb3IgdGhlc2UgcmVhc29ucyBhbmQgb3RoZXJzLCBwcm92aWRlIGEgdXNlZnVsIHZhbHVlIGZvciBgYWx0YCB3aGVuZXZlciBwb3NzaWJsZS5cblxuKipOb3RlOioqIE9taXR0aW5nIHRoaXMgYXR0cmlidXRlIGFsdG9nZXRoZXIgaW5kaWNhdGVzIHRoYXQgdGhlIGltYWdlIGlzIGEga2V5IHBhcnQgb2YgdGhlIGNvbnRlbnQsIGFuZCBubyB0ZXh0dWFsIGVxdWl2YWxlbnQgaXMgYXZhaWxhYmxlLiBTZXR0aW5nIHRoaXMgYXR0cmlidXRlIHRvIGFuIGVtcHR5IHN0cmluZyAoYGFsdD0iImApIGluZGljYXRlcyB0aGF0IHRoaXMgaW1hZ2UgaXMgX25vdF8gYSBrZXkgcGFydCBvZiB0aGUgY29udGVudCAoZGVjb3JhdGl2ZSksIGFuZCB0aGF0IG5vbi12aXN1YWwgYnJvd3NlcnMgbWF5IG9taXQgaXQgZnJvbSByZW5kZXJpbmcuJ319LHtuYW1lOiJzcmMiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBpbWFnZSBVUkwuIFRoaXMgYXR0cmlidXRlIGlzIG1hbmRhdG9yeSBmb3IgdGhlIGA8aW1nPmAgZWxlbWVudC4gT24gYnJvd3NlcnMgc3VwcG9ydGluZyBgc3Jjc2V0YCwgYHNyY2AgaXMgdHJlYXRlZCBsaWtlIGEgY2FuZGlkYXRlIGltYWdlIHdpdGggYSBwaXhlbCBkZW5zaXR5IGRlc2NyaXB0b3IgYDF4YCB1bmxlc3MgYW4gaW1hZ2Ugd2l0aCB0aGlzIHBpeGVsIGRlbnNpdHkgZGVzY3JpcHRvciBpcyBhbHJlYWR5IGRlZmluZWQgaW4gYHNyY3NldCxgIG9yIHVubGVzcyBgc3Jjc2V0YCBjb250YWlucyAnYHdgJyBkZXNjcmlwdG9ycy4ifX0se25hbWU6InNyY3NldCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiQSBsaXN0IG9mIG9uZSBvciBtb3JlIHN0cmluZ3Mgc2VwYXJhdGVkIGJ5IGNvbW1hcyBpbmRpY2F0aW5nIGEgc2V0IG9mIHBvc3NpYmxlIGltYWdlIHNvdXJjZXMgZm9yIHRoZSB1c2VyIGFnZW50IHRvIHVzZS4gRWFjaCBzdHJpbmcgaXMgY29tcG9zZWQgb2Y6XG5cbjEuICBhIFVSTCB0byBhbiBpbWFnZSxcbjIuICBvcHRpb25hbGx5LCB3aGl0ZXNwYWNlIGZvbGxvd2VkIGJ5IG9uZSBvZjpcbiAgICAqICAgQSB3aWR0aCBkZXNjcmlwdG9yLCBvciBhIHBvc2l0aXZlIGludGVnZXIgZGlyZWN0bHkgZm9sbG93ZWQgYnkgJ2B3YCcuIFRoZSB3aWR0aCBkZXNjcmlwdG9yIGlzIGRpdmlkZWQgYnkgdGhlIHNvdXJjZSBzaXplIGdpdmVuIGluIHRoZSBgc2l6ZXNgIGF0dHJpYnV0ZSB0byBjYWxjdWxhdGUgdGhlIGVmZmVjdGl2ZSBwaXhlbCBkZW5zaXR5LlxuICAgICogICBBIHBpeGVsIGRlbnNpdHkgZGVzY3JpcHRvciwgd2hpY2ggaXMgYSBwb3NpdGl2ZSBmbG9hdGluZyBwb2ludCBudW1iZXIgZGlyZWN0bHkgZm9sbG93ZWQgYnkgJ2B4YCcuXG5cbklmIG5vIGRlc2NyaXB0b3IgaXMgc3BlY2lmaWVkLCB0aGUgc291cmNlIGlzIGFzc2lnbmVkIHRoZSBkZWZhdWx0IGRlc2NyaXB0b3I6IGAxeGAuXG5cbkl0IGlzIGluY29ycmVjdCB0byBtaXggd2lkdGggZGVzY3JpcHRvcnMgYW5kIHBpeGVsIGRlbnNpdHkgZGVzY3JpcHRvcnMgaW4gdGhlIHNhbWUgYHNyY3NldGAgYXR0cmlidXRlLiBEdXBsaWNhdGUgZGVzY3JpcHRvcnMgKGZvciBpbnN0YW5jZSwgdHdvIHNvdXJjZXMgaW4gdGhlIHNhbWUgYHNyY3NldGAgd2hpY2ggYXJlIGJvdGggZGVzY3JpYmVkIHdpdGggJ2AyeGAnKSBhcmUgYWxzbyBpbnZhbGlkLlxuXG5UaGUgdXNlciBhZ2VudCBzZWxlY3RzIGFueSBvbmUgb2YgdGhlIGF2YWlsYWJsZSBzb3VyY2VzIGF0IGl0cyBkaXNjcmV0aW9uLiBUaGlzIHByb3ZpZGVzIHRoZW0gd2l0aCBzaWduaWZpY2FudCBsZWV3YXkgdG8gdGFpbG9yIHRoZWlyIHNlbGVjdGlvbiBiYXNlZCBvbiB0aGluZ3MgbGlrZSB1c2VyIHByZWZlcmVuY2VzIG9yIGJhbmR3aWR0aCBjb25kaXRpb25zLiBTZWUgb3VyIFtSZXNwb25zaXZlIGltYWdlc10oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9MZWFybi9IVE1ML011bHRpbWVkaWFfYW5kX2VtYmVkZGluZy9SZXNwb25zaXZlX2ltYWdlcykgdHV0b3JpYWwgZm9yIGFuIGV4YW1wbGUuIn19LHtuYW1lOiJjcm9zc29yaWdpbiIsdmFsdWVTZXQ6InhvIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOidUaGlzIGVudW1lcmF0ZWQgYXR0cmlidXRlIGluZGljYXRlcyBpZiB0aGUgZmV0Y2hpbmcgb2YgdGhlIHJlbGF0ZWQgaW1hZ2UgbXVzdCBiZSBkb25lIHVzaW5nIENPUlMgb3Igbm90LiBbQ09SUy1lbmFibGVkIGltYWdlc10oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9DT1JTX0VuYWJsZWRfSW1hZ2UpIGNhbiBiZSByZXVzZWQgaW4gdGhlIFtgPGNhbnZhcz5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvY2FudmFzICJVc2UgdGhlIEhUTUwgPGNhbnZhcz4gZWxlbWVudCB3aXRoIGVpdGhlciB0aGUgY2FudmFzIHNjcmlwdGluZyBBUEkgb3IgdGhlIFdlYkdMIEFQSSB0byBkcmF3IGdyYXBoaWNzIGFuZCBhbmltYXRpb25zLiIpIGVsZW1lbnQgd2l0aG91dCBiZWluZyAiW3RhaW50ZWRdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvQ09SU19lbmFibGVkX2ltYWdlI1doYXRfaXNfYV90YWludGVkX2NhbnZhcykuIiBUaGUgYWxsb3dlZCB2YWx1ZXMgYXJlOid9fSx7bmFtZToidXNlbWFwIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOidUaGUgcGFydGlhbCBVUkwgKHN0YXJ0aW5nIHdpdGggXCcjXCcpIG9mIGFuIFtpbWFnZSBtYXBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvSFRNTC9FbGVtZW50L21hcCkgYXNzb2NpYXRlZCB3aXRoIHRoZSBlbGVtZW50LlxuXG4qKk5vdGU6KiogWW91IGNhbm5vdCB1c2UgdGhpcyBhdHRyaWJ1dGUgaWYgdGhlIGA8aW1nPmAgZWxlbWVudCBpcyBhIGRlc2NlbmRhbnQgb2YgYW4gW2A8YT5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvYSAiVGhlIEhUTUwgPGE+IGVsZW1lbnQgKG9yIGFuY2hvciBlbGVtZW50KSBjcmVhdGVzIGEgaHlwZXJsaW5rIHRvIG90aGVyIHdlYiBwYWdlcywgZmlsZXMsIGxvY2F0aW9ucyB3aXRoaW4gdGhlIHNhbWUgcGFnZSwgZW1haWwgYWRkcmVzc2VzLCBvciBhbnkgb3RoZXIgVVJMLiIpIG9yIFtgPGJ1dHRvbj5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvYnV0dG9uICJUaGUgSFRNTCA8YnV0dG9uPiBlbGVtZW50IHJlcHJlc2VudHMgYSBjbGlja2FibGUgYnV0dG9uLCB3aGljaCBjYW4gYmUgdXNlZCBpbiBmb3JtcyBvciBhbnl3aGVyZSBpbiBhIGRvY3VtZW50IHRoYXQgbmVlZHMgc2ltcGxlLCBzdGFuZGFyZCBidXR0b24gZnVuY3Rpb25hbGl0eS4iKSBlbGVtZW50Lid9fSx7bmFtZToiaXNtYXAiLHZhbHVlU2V0OiJ2IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOidUaGlzIEJvb2xlYW4gYXR0cmlidXRlIGluZGljYXRlcyB0aGF0IHRoZSBpbWFnZSBpcyBwYXJ0IG9mIGEgc2VydmVyLXNpZGUgbWFwLiBJZiBzbywgdGhlIHByZWNpc2UgY29vcmRpbmF0ZXMgb2YgYSBjbGljayBhcmUgc2VudCB0byB0aGUgc2VydmVyLlxuXG4qKk5vdGU6KiogVGhpcyBhdHRyaWJ1dGUgaXMgYWxsb3dlZCBvbmx5IGlmIHRoZSBgPGltZz5gIGVsZW1lbnQgaXMgYSBkZXNjZW5kYW50IG9mIGFuIFtgPGE+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2EgIlRoZSBIVE1MIDxhPiBlbGVtZW50IChvciBhbmNob3IgZWxlbWVudCkgY3JlYXRlcyBhIGh5cGVybGluayB0byBvdGhlciB3ZWIgcGFnZXMsIGZpbGVzLCBsb2NhdGlvbnMgd2l0aGluIHRoZSBzYW1lIHBhZ2UsIGVtYWlsIGFkZHJlc3Nlcywgb3IgYW55IG90aGVyIFVSTC4iKSBlbGVtZW50IHdpdGggYSB2YWxpZCBbYGhyZWZgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvYSNhdHRyLWhyZWYpIGF0dHJpYnV0ZS4nfX0se25hbWU6IndpZHRoIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgaW50cmluc2ljIHdpZHRoIG9mIHRoZSBpbWFnZSBpbiBwaXhlbHMuIn19LHtuYW1lOiJoZWlnaHQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBpbnRyaW5zaWMgaGVpZ2h0IG9mIHRoZSBpbWFnZSBpbiBwaXhlbHMuIn19LHtuYW1lOiJkZWNvZGluZyIsZGVzY3JpcHRpb246IlByb3ZpZGVzIGFuIGltYWdlIGRlY29kaW5nIGhpbnQgdG8gdGhlIGJyb3dzZXIuIFRoZSBhbGxvd2VkIHZhbHVlcyBhcmU6In0se25hbWU6ImRlY29kaW5nIixkZXNjcmlwdGlvbjoiYHN5bmNgXG5cbkRlY29kZSB0aGUgaW1hZ2Ugc3luY2hyb25vdXNseSBmb3IgYXRvbWljIHByZXNlbnRhdGlvbiB3aXRoIG90aGVyIGNvbnRlbnQuXG5cbmBhc3luY2BcblxuRGVjb2RlIHRoZSBpbWFnZSBhc3luY2hyb25vdXNseSB0byByZWR1Y2UgZGVsYXkgaW4gcHJlc2VudGluZyBvdGhlciBjb250ZW50LlxuXG5gYXV0b2BcblxuRGVmYXVsdCBtb2RlLCB3aGljaCBpbmRpY2F0ZXMgbm8gcHJlZmVyZW5jZSBmb3IgdGhlIGRlY29kaW5nIG1vZGUuIFRoZSBicm93c2VyIGRlY2lkZXMgd2hhdCBpcyBiZXN0IGZvciB0aGUgdXNlci4ifSx7bmFtZToiaW1wb3J0YW5jZSIsZGVzY3JpcHRpb246IkluZGljYXRlcyB0aGUgcmVsYXRpdmUgaW1wb3J0YW5jZSBvZiB0aGUgcmVzb3VyY2UuIFByaW9yaXR5IGhpbnRzIGFyZSBkZWxlZ2F0ZWQgdXNpbmcgdGhlIHZhbHVlczoifSx7bmFtZToiaW1wb3J0YW5jZSIsZGVzY3JpcHRpb246ImBhdXRvYDogSW5kaWNhdGVzwqAqKm5vwqBwcmVmZXJlbmNlKiouIFRoZSBicm93c2VyIG1heSB1c2UgaXRzIG93biBoZXVyaXN0aWNzIHRvIGRlY2lkZSB0aGUgcHJpb3JpdHkgb2YgdGhlIGltYWdlLlxuXG5gaGlnaGA6IEluZGljYXRlcyB0byB0aGXCoGJyb3dzZXLCoHRoYXQgdGhlIGltYWdlIGlzIG9mwqAqKmhpZ2gqKiBwcmlvcml0eS5cblxuYGxvd2A6wqBJbmRpY2F0ZXMgdG8gdGhlwqBicm93c2VywqB0aGF0IHRoZSBpbWFnZSBpcyBvZsKgKipsb3cqKiBwcmlvcml0eS4ifSx7bmFtZToiaW50cmluc2ljc2l6ZSIsZGVzY3JpcHRpb246IlRoaXMgYXR0cmlidXRlIHRlbGxzIHRoZSBicm93c2VyIHRvIGlnbm9yZSB0aGUgYWN0dWFsIGludHJpbnNpYyBzaXplIG9mIHRoZSBpbWFnZSBhbmQgcHJldGVuZCBpdOKAmXMgdGhlIHNpemUgc3BlY2lmaWVkIGluIHRoZSBhdHRyaWJ1dGUuIFNwZWNpZmljYWxseSwgdGhlIGltYWdlIHdvdWxkIHJhc3RlciBhdCB0aGVzZSBkaW1lbnNpb25zIGFuZCBgbmF0dXJhbFdpZHRoYC9gbmF0dXJhbEhlaWdodGAgb24gaW1hZ2VzIHdvdWxkIHJldHVybiB0aGUgdmFsdWVzIHNwZWNpZmllZCBpbiB0aGlzIGF0dHJpYnV0ZS4gW0V4cGxhaW5lcl0oaHR0cHM6Ly9naXRodWIuY29tL29qYW52YWZhaS9pbnRyaW5zaWNzaXplLWF0dHJpYnV0ZSksIFtleGFtcGxlc10oaHR0cHM6Ly9nb29nbGVjaHJvbWUuZ2l0aHViLmlvL3NhbXBsZXMvaW50cmluc2ljLXNpemUvaW5kZXguaHRtbCkifSx7bmFtZToicmVmZXJyZXJwb2xpY3kiLGRlc2NyaXB0aW9uOiJBIHN0cmluZyBpbmRpY2F0aW5nIHdoaWNoIHJlZmVycmVyIHRvIHVzZSB3aGVuIGZldGNoaW5nIHRoZSByZXNvdXJjZTpcblxuKiAgIGBuby1yZWZlcnJlcjpgIFRoZSBbYFJlZmVyZXJgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVFRQL0hlYWRlcnMvUmVmZXJlciBcIlRoZSBSZWZlcmVyIHJlcXVlc3QgaGVhZGVyIGNvbnRhaW5zIHRoZSBhZGRyZXNzIG9mIHRoZSBwcmV2aW91cyB3ZWIgcGFnZSBmcm9tIHdoaWNoIGEgbGluayB0byB0aGUgY3VycmVudGx5IHJlcXVlc3RlZCBwYWdlIHdhcyBmb2xsb3dlZC4gVGhlIFJlZmVyZXIgaGVhZGVyIGFsbG93cyBzZXJ2ZXJzIHRvIGlkZW50aWZ5IHdoZXJlIHBlb3BsZSBhcmUgdmlzaXRpbmcgdGhlbSBmcm9tIGFuZCBtYXkgdXNlIHRoYXQgZGF0YSBmb3IgYW5hbHl0aWNzLCBsb2dnaW5nLCBvciBvcHRpbWl6ZWQgY2FjaGluZywgZm9yIGV4YW1wbGUuXCIpIGhlYWRlciB3aWxsIG5vdCBiZSBzZW50LlxuKiAgIGBuby1yZWZlcnJlci13aGVuLWRvd25ncmFkZTpgIE5vIGBSZWZlcmVyYCBoZWFkZXIgd2lsbCBiZSBzZW50IHdoZW4gbmF2aWdhdGluZyB0byBhbiBvcmlnaW4gd2l0aG91dCBUTFMgKEhUVFBTKS4gVGhpcyBpcyBhIHVzZXIgYWdlbnTigJlzIGRlZmF1bHQgYmVoYXZpb3IgaWYgbm8gcG9saWN5IGlzIG90aGVyd2lzZSBzcGVjaWZpZWQuXG4qICAgYG9yaWdpbjpgIFRoZSBgUmVmZXJlcmAgaGVhZGVyIHdpbGwgaW5jbHVkZSB0aGUgcGFnZSBvZiBvcmlnaW4ncyBzY2hlbWUsIHRoZSBob3N0LCBhbmQgdGhlIHBvcnQuXG4qICAgYG9yaWdpbi13aGVuLWNyb3NzLW9yaWdpbjpgIE5hdmlnYXRpbmcgdG8gb3RoZXIgb3JpZ2lucyB3aWxsIGxpbWl0IHRoZSBpbmNsdWRlZCByZWZlcnJhbCBkYXRhIHRvIHRoZSBzY2hlbWUsIHRoZSBob3N0IGFuZCB0aGUgcG9ydCwgd2hpbGUgbmF2aWdhdGluZyBmcm9tIHRoZSBzYW1lIG9yaWdpbiB3aWxsIGluY2x1ZGUgdGhlIHJlZmVycmVyJ3MgZnVsbCBwYXRoLlxuKiAgIGB1bnNhZmUtdXJsOmAgVGhlIGBSZWZlcmVyYCBoZWFkZXIgd2lsbCBpbmNsdWRlIHRoZSBvcmlnaW4gYW5kIHRoZSBwYXRoLCBidXQgbm90IHRoZSBmcmFnbWVudCwgcGFzc3dvcmQsIG9yIHVzZXJuYW1lLiBUaGlzIGNhc2UgaXMgdW5zYWZlIGJlY2F1c2UgaXQgY2FuIGxlYWsgb3JpZ2lucyBhbmQgcGF0aHMgZnJvbSBUTFMtcHJvdGVjdGVkIHJlc291cmNlcyB0byBpbnNlY3VyZSBvcmlnaW5zLiJ9LHtuYW1lOiJzaXplcyIsZGVzY3JpcHRpb246IkEgbGlzdCBvZiBvbmUgb3IgbW9yZSBzdHJpbmdzIHNlcGFyYXRlZCBieSBjb21tYXMgaW5kaWNhdGluZyBhIHNldCBvZiBzb3VyY2Ugc2l6ZXMuIEVhY2ggc291cmNlIHNpemUgY29uc2lzdHMgb2Y6XG5cbjEuICBhIG1lZGlhIGNvbmRpdGlvbi4gVGhpcyBtdXN0IGJlIG9taXR0ZWQgZm9yIHRoZSBsYXN0IGl0ZW0uXG4yLiAgYSBzb3VyY2Ugc2l6ZSB2YWx1ZS5cblxuU291cmNlIHNpemUgdmFsdWVzIHNwZWNpZnkgdGhlIGludGVuZGVkIGRpc3BsYXkgc2l6ZSBvZiB0aGUgaW1hZ2UuIFVzZXIgYWdlbnRzIHVzZSB0aGUgY3VycmVudCBzb3VyY2Ugc2l6ZSB0byBzZWxlY3Qgb25lIG9mIHRoZSBzb3VyY2VzIHN1cHBsaWVkIGJ5IHRoZSBgc3Jjc2V0YCBhdHRyaWJ1dGUsIHdoZW4gdGhvc2Ugc291cmNlcyBhcmUgZGVzY3JpYmVkIHVzaW5nIHdpZHRoICgnYHdgJykgZGVzY3JpcHRvcnMuIFRoZSBzZWxlY3RlZCBzb3VyY2Ugc2l6ZSBhZmZlY3RzIHRoZSBpbnRyaW5zaWMgc2l6ZSBvZiB0aGUgaW1hZ2UgKHRoZSBpbWFnZeKAmXMgZGlzcGxheSBzaXplIGlmIG5vIENTUyBzdHlsaW5nIGlzIGFwcGxpZWQpLiBJZiB0aGUgYHNyY3NldGAgYXR0cmlidXRlIGlzIGFic2VudCwgb3IgY29udGFpbnMgbm8gdmFsdWVzIHdpdGggYSB3aWR0aCAoYHdgKSBkZXNjcmlwdG9yLCB0aGVuIHRoZSBgc2l6ZXNgIGF0dHJpYnV0ZSBoYXMgbm8gZWZmZWN0LiJ9XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvaW1nIn1dfSx7bmFtZToiaWZyYW1lIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgaWZyYW1lIGVsZW1lbnQgcmVwcmVzZW50cyBhIG5lc3RlZCBicm93c2luZyBjb250ZXh0LiJ9LGF0dHJpYnV0ZXM6W3tuYW1lOiJzcmMiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6J1RoZSBVUkwgb2YgdGhlIHBhZ2UgdG8gZW1iZWQuIFVzZSBhIHZhbHVlIG9mIGBhYm91dDpibGFua2AgdG8gZW1iZWQgYW4gZW1wdHkgcGFnZSB0aGF0IGNvbmZvcm1zIHRvIHRoZSBbc2FtZS1vcmlnaW4gcG9saWN5XShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9TZWN1cml0eS9TYW1lLW9yaWdpbl9wb2xpY3kjSW5oZXJpdGVkX29yaWdpbnMpLiBBbHNvIG5vdGUgdGhhdCBwcm9ncmFtYXRpY2FsbHkgcmVtb3ZpbmcgYW4gYDxpZnJhbWU+YFwncyBzcmMgYXR0cmlidXRlIChlLmcuIHZpYSBbYEVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKClgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvRWxlbWVudC9yZW1vdmVBdHRyaWJ1dGUgIlRoZSBFbGVtZW50IG1ldGhvZCByZW1vdmVBdHRyaWJ1dGUoKSByZW1vdmVzIHRoZSBhdHRyaWJ1dGUgd2l0aCB0aGUgc3BlY2lmaWVkIG5hbWUgZnJvbSB0aGUgZWxlbWVudC4iKSkgY2F1c2VzIGBhYm91dDpibGFua2AgdG8gYmUgbG9hZGVkIGluIHRoZSBmcmFtZSBpbiBGaXJlZm94IChmcm9tIHZlcnNpb24gNjUpLCBDaHJvbWl1bS1iYXNlZCBicm93c2VycywgYW5kIFNhZmFyaS9pT1MuJ319LHtuYW1lOiJzcmNkb2MiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IklubGluZSBIVE1MIHRvIGVtYmVkLCBvdmVycmlkaW5nIHRoZSBgc3JjYCBhdHRyaWJ1dGUuIElmIGEgYnJvd3NlciBkb2VzIG5vdCBzdXBwb3J0IHRoZSBgc3JjZG9jYCBhdHRyaWJ1dGUsIGl0IHdpbGwgZmFsbCBiYWNrIHRvIHRoZSBVUkwgaW4gdGhlIGBzcmNgIGF0dHJpYnV0ZS4ifX0se25hbWU6Im5hbWUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6J0EgdGFyZ2V0YWJsZSBuYW1lIGZvciB0aGUgZW1iZWRkZWQgYnJvd3NpbmcgY29udGV4dC4gVGhpcyBjYW4gYmUgdXNlZCBpbiB0aGUgYHRhcmdldGAgYXR0cmlidXRlIG9mIHRoZSBbYDxhPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9hICJUaGUgSFRNTCA8YT4gZWxlbWVudCAob3IgYW5jaG9yIGVsZW1lbnQpIGNyZWF0ZXMgYSBoeXBlcmxpbmsgdG8gb3RoZXIgd2ViIHBhZ2VzLCBmaWxlcywgbG9jYXRpb25zIHdpdGhpbiB0aGUgc2FtZSBwYWdlLCBlbWFpbCBhZGRyZXNzZXMsIG9yIGFueSBvdGhlciBVUkwuIiksIFtgPGZvcm0+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2Zvcm0gIlRoZSBIVE1MIDxmb3JtPiBlbGVtZW50IHJlcHJlc2VudHMgYSBkb2N1bWVudCBzZWN0aW9uIHRoYXQgY29udGFpbnMgaW50ZXJhY3RpdmUgY29udHJvbHMgZm9yIHN1Ym1pdHRpbmcgaW5mb3JtYXRpb24gdG8gYSB3ZWIgc2VydmVyLiIpLCBvciBbYDxiYXNlPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9iYXNlICJUaGUgSFRNTCA8YmFzZT4gZWxlbWVudCBzcGVjaWZpZXMgdGhlIGJhc2UgVVJMIHRvIHVzZSBmb3IgYWxsIHJlbGF0aXZlIFVSTHMgY29udGFpbmVkIHdpdGhpbiBhIGRvY3VtZW50LiBUaGVyZSBjYW4gYmUgb25seSBvbmUgPGJhc2U+IGVsZW1lbnQgaW4gYSBkb2N1bWVudC4iKSBlbGVtZW50czsgdGhlIGBmb3JtdGFyZ2V0YCBhdHRyaWJ1dGUgb2YgdGhlIFtgPGlucHV0PmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9pbnB1dCAiVGhlIEhUTUwgPGlucHV0PiBlbGVtZW50IGlzIHVzZWQgdG8gY3JlYXRlIGludGVyYWN0aXZlIGNvbnRyb2xzIGZvciB3ZWItYmFzZWQgZm9ybXMgaW4gb3JkZXIgdG8gYWNjZXB0IGRhdGEgZnJvbSB0aGUgdXNlcjsgYSB3aWRlIHZhcmlldHkgb2YgdHlwZXMgb2YgaW5wdXQgZGF0YSBhbmQgY29udHJvbCB3aWRnZXRzIGFyZSBhdmFpbGFibGUsIGRlcGVuZGluZyBvbiB0aGUgZGV2aWNlIGFuZCB1c2VyIGFnZW50LiIpIG9yIFtgPGJ1dHRvbj5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvYnV0dG9uICJUaGUgSFRNTCA8YnV0dG9uPiBlbGVtZW50IHJlcHJlc2VudHMgYSBjbGlja2FibGUgYnV0dG9uLCB3aGljaCBjYW4gYmUgdXNlZCBpbiBmb3JtcyBvciBhbnl3aGVyZSBpbiBhIGRvY3VtZW50IHRoYXQgbmVlZHMgc2ltcGxlLCBzdGFuZGFyZCBidXR0b24gZnVuY3Rpb25hbGl0eS4iKSBlbGVtZW50czsgb3IgdGhlIGB3aW5kb3dOYW1lYCBwYXJhbWV0ZXIgaW4gdGhlIFtgd2luZG93Lm9wZW4oKWBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9XaW5kb3cvb3BlbiAiVGhlwqBXaW5kb3cgaW50ZXJmYWNlXCdzIG9wZW4oKSBtZXRob2QgbG9hZHMgdGhlIHNwZWNpZmllZCByZXNvdXJjZSBpbnRvIHRoZSBicm93c2luZyBjb250ZXh0ICh3aW5kb3csIDxpZnJhbWU+IG9yIHRhYikgd2l0aCB0aGUgc3BlY2lmaWVkIG5hbWUuIElmIHRoZSBuYW1lIGRvZXNuXCd0IGV4aXN0LCB0aGVuIGEgbmV3IHdpbmRvdyBpcyBvcGVuZWQgYW5kIHRoZSBzcGVjaWZpZWQgcmVzb3VyY2UgaXMgbG9hZGVkIGludG8gaXRzIGJyb3dzaW5nIGNvbnRleHQuIikgbWV0aG9kLid9fSx7bmFtZToic2FuZGJveCIsdmFsdWVTZXQ6InNiIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOidBcHBsaWVzIGV4dHJhIHJlc3RyaWN0aW9ucyB0byB0aGUgY29udGVudCBpbiB0aGUgZnJhbWUuIFRoZSB2YWx1ZSBvZiB0aGUgYXR0cmlidXRlIGNhbiBlaXRoZXIgYmUgZW1wdHkgdG8gYXBwbHkgYWxsIHJlc3RyaWN0aW9ucywgb3Igc3BhY2Utc2VwYXJhdGVkIHRva2VucyB0byBsaWZ0IHBhcnRpY3VsYXIgcmVzdHJpY3Rpb25zOlxuXG4qICAgYGFsbG93LWZvcm1zYDogQWxsb3dzIHRoZSByZXNvdXJjZSB0byBzdWJtaXQgZm9ybXMuIElmIHRoaXMga2V5d29yZCBpcyBub3QgdXNlZCwgZm9ybSBzdWJtaXNzaW9uIGlzIGJsb2NrZWQuXG4qICAgYGFsbG93LW1vZGFsc2A6IExldHMgdGhlIHJlc291cmNlIFtvcGVuIG1vZGFsIHdpbmRvd3NdKGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL29yaWdpbi5odG1sI3NhbmRib3hlZC1tb2RhbHMtZmxhZykuXG4qICAgYGFsbG93LW9yaWVudGF0aW9uLWxvY2tgOiBMZXRzIHRoZSByZXNvdXJjZSBbbG9jayB0aGUgc2NyZWVuIG9yaWVudGF0aW9uXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvU2NyZWVuL2xvY2tPcmllbnRhdGlvbikuXG4qICAgYGFsbG93LXBvaW50ZXItbG9ja2A6IExldHMgdGhlIHJlc291cmNlIHVzZSB0aGUgW1BvaW50ZXIgTG9jayBBUEldKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViQVBJL1BvaW50ZXJfTG9jaykuXG4qICAgYGFsbG93LXBvcHVwc2A6IEFsbG93cyBwb3B1cHMgKHN1Y2ggYXMgYHdpbmRvdy5vcGVuKClgLCBgdGFyZ2V0PSJfYmxhbmsiYCwgb3IgYHNob3dNb2RhbERpYWxvZygpYCkuIElmIHRoaXMga2V5d29yZCBpcyBub3QgdXNlZCwgdGhlIHBvcHVwIHdpbGwgc2lsZW50bHkgZmFpbCB0byBvcGVuLlxuKiAgIGBhbGxvdy1wb3B1cHMtdG8tZXNjYXBlLXNhbmRib3hgOiBMZXRzIHRoZSBzYW5kYm94ZWQgZG9jdW1lbnQgb3BlbiBuZXcgd2luZG93cyB3aXRob3V0IHRob3NlIHdpbmRvd3MgaW5oZXJpdGluZyB0aGUgc2FuZGJveGluZy4gRm9yIGV4YW1wbGUsIHRoaXMgY2FuIHNhZmVseSBzYW5kYm94IGFuIGFkdmVydGlzZW1lbnQgd2l0aG91dCBmb3JjaW5nIHRoZSBzYW1lIHJlc3RyaWN0aW9ucyB1cG9uIHRoZSBwYWdlIHRoZSBhZCBsaW5rcyB0by5cbiogICBgYWxsb3ctcHJlc2VudGF0aW9uYDogTGV0cyB0aGUgcmVzb3VyY2Ugc3RhcnQgYSBbcHJlc2VudGF0aW9uIHNlc3Npb25dKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9QcmVzZW50YXRpb25SZXF1ZXN0KS5cbiogICBgYWxsb3ctc2FtZS1vcmlnaW5gOiBJZiB0aGlzIHRva2VuIGlzIG5vdCB1c2VkLCB0aGUgcmVzb3VyY2UgaXMgdHJlYXRlZCBhcyBiZWluZyBmcm9tIGEgc3BlY2lhbCBvcmlnaW4gdGhhdCBhbHdheXMgZmFpbHMgdGhlIFtzYW1lLW9yaWdpbiBwb2xpY3ldKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvR2xvc3Nhcnkvc2FtZS1vcmlnaW5fcG9saWN5ICJzYW1lLW9yaWdpbiBwb2xpY3k6IFRoZSBzYW1lLW9yaWdpbiBwb2xpY3kgaXMgYSBjcml0aWNhbCBzZWN1cml0eSBtZWNoYW5pc20gdGhhdCByZXN0cmljdHMgaG93IGEgZG9jdW1lbnQgb3Igc2NyaXB0IGxvYWRlZCBmcm9tIG9uZSBvcmlnaW4gY2FuIGludGVyYWN0IHdpdGggYSByZXNvdXJjZSBmcm9tIGFub3RoZXIgb3JpZ2luLiIpLlxuKiAgIGBhbGxvdy1zY3JpcHRzYDogTGV0cyB0aGUgcmVzb3VyY2UgcnVuIHNjcmlwdHMgKGJ1dCBub3QgY3JlYXRlIHBvcHVwIHdpbmRvd3MpLlxuKiAgIGBhbGxvdy1zdG9yYWdlLWFjY2Vzcy1ieS11c2VyLWFjdGl2YXRpb25gIDogTGV0cyB0aGUgcmVzb3VyY2UgcmVxdWVzdCBhY2Nlc3MgdG8gdGhlIHBhcmVudFwncyBzdG9yYWdlIGNhcGFiaWxpdGllcyB3aXRoIHRoZSBbU3RvcmFnZSBBY2Nlc3MgQVBJXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvU3RvcmFnZV9BY2Nlc3NfQVBJKS5cbiogICBgYWxsb3ctdG9wLW5hdmlnYXRpb25gOiBMZXRzIHRoZSByZXNvdXJjZSBuYXZpZ2F0ZSB0aGUgdG9wLWxldmVsIGJyb3dzaW5nIGNvbnRleHQgKHRoZSBvbmUgbmFtZWQgYF90b3BgKS5cbiogICBgYWxsb3ctdG9wLW5hdmlnYXRpb24tYnktdXNlci1hY3RpdmF0aW9uYDogTGV0cyB0aGUgcmVzb3VyY2UgbmF2aWdhdGUgdGhlIHRvcC1sZXZlbCBicm93c2luZyBjb250ZXh0LCBidXQgb25seSBpZiBpbml0aWF0ZWQgYnkgYSB1c2VyIGdlc3R1cmUuXG5cbioqTm90ZXMgYWJvdXQgc2FuZGJveGluZzoqKlxuXG4qICAgV2hlbiB0aGUgZW1iZWRkZWQgZG9jdW1lbnQgaGFzIHRoZSBzYW1lIG9yaWdpbiBhcyB0aGUgZW1iZWRkaW5nIHBhZ2UsIGl0IGlzICoqc3Ryb25nbHkgZGlzY291cmFnZWQqKiB0byB1c2UgYm90aCBgYWxsb3ctc2NyaXB0c2AgYW5kIGBhbGxvdy1zYW1lLW9yaWdpbmAsIGFzIHRoYXQgbGV0cyB0aGUgZW1iZWRkZWQgZG9jdW1lbnQgcmVtb3ZlIHRoZSBgc2FuZGJveGAgYXR0cmlidXRlIOKAlCBtYWtpbmcgaXQgbm8gbW9yZSBzZWN1cmUgdGhhbiBub3QgdXNpbmcgdGhlIGBzYW5kYm94YCBhdHRyaWJ1dGUgYXQgYWxsLlxuKiAgIFNhbmRib3hpbmcgaXMgdXNlbGVzcyBpZiB0aGUgYXR0YWNrZXIgY2FuIGRpc3BsYXkgY29udGVudCBvdXRzaWRlIGEgc2FuZGJveGVkIGBpZnJhbWVgIOKAlCBzdWNoIGFzIGlmIHRoZSB2aWV3ZXIgb3BlbnMgdGhlIGZyYW1lIGluIGEgbmV3IHRhYi4gU3VjaCBjb250ZW50IHNob3VsZCBiZSBhbHNvIHNlcnZlZCBmcm9tIGEgX3NlcGFyYXRlIG9yaWdpbl8gdG8gbGltaXQgcG90ZW50aWFsIGRhbWFnZS5cbiogICBUaGUgYHNhbmRib3hgIGF0dHJpYnV0ZSBpcyB1bnN1cHBvcnRlZCBpbiBJbnRlcm5ldCBFeHBsb3JlciA5IGFuZCBlYXJsaWVyLid9fSx7bmFtZToic2VhbWxlc3MiLHZhbHVlU2V0OiJ2In0se25hbWU6ImFsbG93ZnVsbHNjcmVlbiIsdmFsdWVTZXQ6InYiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6J1NldCB0byBgdHJ1ZWAgaWYgdGhlIGA8aWZyYW1lPmAgY2FuIGFjdGl2YXRlIGZ1bGxzY3JlZW4gbW9kZSBieSBjYWxsaW5nIHRoZSBbYHJlcXVlc3RGdWxsc2NyZWVuKClgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvRWxlbWVudC9yZXF1ZXN0RnVsbHNjcmVlbiAiVGhlIEVsZW1lbnQucmVxdWVzdEZ1bGxzY3JlZW4oKSBtZXRob2QgaXNzdWVzIGFuIGFzeW5jaHJvbm91cyByZXF1ZXN0IHRvIG1ha2UgdGhlIGVsZW1lbnQgYmUgZGlzcGxheWVkIGluIGZ1bGwtc2NyZWVuIG1vZGUuIikgbWV0aG9kLid9fSx7bmFtZToid2lkdGgiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSB3aWR0aCBvZiB0aGUgZnJhbWUgaW4gQ1NTIHBpeGVscy4gRGVmYXVsdCBpcyBgMzAwYC4ifX0se25hbWU6ImhlaWdodCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGhlaWdodCBvZiB0aGUgZnJhbWUgaW4gQ1NTIHBpeGVscy4gRGVmYXVsdCBpcyBgMTUwYC4ifX0se25hbWU6ImFsbG93IixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgW2ZlYXR1cmUgcG9saWN5XShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVFRQL0ZlYXR1cmVfUG9saWN5KSBmb3IgdGhlIGA8aWZyYW1lPmAuIn0se25hbWU6ImFsbG93cGF5bWVudHJlcXVlc3QiLGRlc2NyaXB0aW9uOiJTZXQgdG8gYHRydWVgIGlmIGEgY3Jvc3Mtb3JpZ2luIGA8aWZyYW1lPmAgc2hvdWxkIGJlIGFsbG93ZWQgdG8gaW52b2tlIHRoZSBbUGF5bWVudCBSZXF1ZXN0IEFQSV0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL1BheW1lbnRfUmVxdWVzdF9BUEkpLiJ9LHtuYW1lOiJhbGxvd3BheW1lbnRyZXF1ZXN0IixkZXNjcmlwdGlvbjonVGhpcyBhdHRyaWJ1dGUgaXMgY29uc2lkZXJlZCBhIGxlZ2FjeSBhdHRyaWJ1dGUgYW5kIHJlZGVmaW5lZCBhcyBgYWxsb3c9InBheW1lbnQiYC4nfSx7bmFtZToiY3NwIixkZXNjcmlwdGlvbjonQSBbQ29udGVudCBTZWN1cml0eSBQb2xpY3ldKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUVFAvQ1NQKSBlbmZvcmNlZCBmb3IgdGhlIGVtYmVkZGVkIHJlc291cmNlLiBTZWUgW2BIVE1MSUZyYW1lRWxlbWVudC5jc3BgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvSFRNTElGcmFtZUVsZW1lbnQvY3NwICJUaGUgY3NwIHByb3BlcnR5IG9mIHRoZSBIVE1MSUZyYW1lRWxlbWVudCBpbnRlcmZhY2Ugc3BlY2lmaWVzIHRoZSBDb250ZW50IFNlY3VyaXR5IFBvbGljeSB0aGF0IGFuIGVtYmVkZGVkIGRvY3VtZW50IG11c3QgYWdyZWUgdG8gZW5mb3JjZSB1cG9uIGl0c2VsZi4iKSBmb3IgZGV0YWlscy4nfSx7bmFtZToiaW1wb3J0YW5jZSIsZGVzY3JpcHRpb246IlRoZSBkb3dubG9hZCBwcmlvcml0eSBvZiB0aGUgcmVzb3VyY2UgaW4gdGhlIGA8aWZyYW1lPmAncyBgc3JjYCBhdHRyaWJ1dGUuIEFsbG93ZWQgdmFsdWVzOlxuXG5gYXV0b2AgKGRlZmF1bHQpXG5cbk5vIHByZWZlcmVuY2UuIFRoZSBicm93c2VyIHVzZXMgaXRzIG93biBoZXVyaXN0aWNzIHRvIGRlY2lkZSB0aGUgcHJpb3JpdHkgb2YgdGhlIHJlc291cmNlLlxuXG5gaGlnaGBcblxuVGhlIHJlc291cmNlIHNob3VsZCBiZSBkb3dubG9hZGVkIGJlZm9yZSBvdGhlciBsb3dlci1wcmlvcml0eSBwYWdlIHJlc291cmNlcy5cblxuYGxvd2BcblxuVGhlIHJlc291cmNlIHNob3VsZCBiZSBkb3dubG9hZGVkIGFmdGVyIG90aGVyIGhpZ2hlci1wcmlvcml0eSBwYWdlIHJlc291cmNlcy4ifSx7bmFtZToicmVmZXJyZXJwb2xpY3kiLGRlc2NyaXB0aW9uOidJbmRpY2F0ZXMgd2hpY2ggW3JlZmVycmVyXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvRG9jdW1lbnQvcmVmZXJyZXIpIHRvIHNlbmQgd2hlbiBmZXRjaGluZyB0aGUgZnJhbWVcJ3MgcmVzb3VyY2U6XG5cbiogICBgbm8tcmVmZXJyZXJgOiBUaGUgW2BSZWZlcmVyYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRUUC9IZWFkZXJzL1JlZmVyZXIgIlRoZSBSZWZlcmVyIHJlcXVlc3QgaGVhZGVyIGNvbnRhaW5zIHRoZSBhZGRyZXNzIG9mIHRoZSBwcmV2aW91cyB3ZWIgcGFnZSBmcm9tIHdoaWNoIGEgbGluayB0byB0aGUgY3VycmVudGx5IHJlcXVlc3RlZCBwYWdlIHdhcyBmb2xsb3dlZC4gVGhlIFJlZmVyZXIgaGVhZGVyIGFsbG93cyBzZXJ2ZXJzIHRvIGlkZW50aWZ5IHdoZXJlIHBlb3BsZSBhcmUgdmlzaXRpbmcgdGhlbSBmcm9tIGFuZCBtYXkgdXNlIHRoYXQgZGF0YSBmb3IgYW5hbHl0aWNzLCBsb2dnaW5nLCBvciBvcHRpbWl6ZWQgY2FjaGluZywgZm9yIGV4YW1wbGUuIikgaGVhZGVyIHdpbGwgbm90IGJlIHNlbnQuXG4qICAgYG5vLXJlZmVycmVyLXdoZW4tZG93bmdyYWRlYCAoZGVmYXVsdCk6IFRoZSBbYFJlZmVyZXJgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVFRQL0hlYWRlcnMvUmVmZXJlciAiVGhlIFJlZmVyZXIgcmVxdWVzdCBoZWFkZXIgY29udGFpbnMgdGhlIGFkZHJlc3Mgb2YgdGhlIHByZXZpb3VzIHdlYiBwYWdlIGZyb20gd2hpY2ggYSBsaW5rIHRvIHRoZSBjdXJyZW50bHkgcmVxdWVzdGVkIHBhZ2Ugd2FzIGZvbGxvd2VkLiBUaGUgUmVmZXJlciBoZWFkZXIgYWxsb3dzIHNlcnZlcnMgdG8gaWRlbnRpZnkgd2hlcmUgcGVvcGxlIGFyZSB2aXNpdGluZyB0aGVtIGZyb20gYW5kIG1heSB1c2UgdGhhdCBkYXRhIGZvciBhbmFseXRpY3MsIGxvZ2dpbmcsIG9yIG9wdGltaXplZCBjYWNoaW5nLCBmb3IgZXhhbXBsZS4iKSBoZWFkZXIgd2lsbCBub3QgYmUgc2VudCB0byBbb3JpZ2luXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0dsb3NzYXJ5L29yaWdpbiAib3JpZ2luOiBXZWIgY29udGVudFwncyBvcmlnaW4gaXMgZGVmaW5lZCBieSB0aGUgc2NoZW1lIChwcm90b2NvbCksIGhvc3QgKGRvbWFpbiksIGFuZCBwb3J0IG9mIHRoZSBVUkwgdXNlZCB0byBhY2Nlc3MgaXQuIFR3byBvYmplY3RzIGhhdmUgdGhlIHNhbWUgb3JpZ2luIG9ubHkgd2hlbiB0aGUgc2NoZW1lLCBob3N0LCBhbmQgcG9ydCBhbGwgbWF0Y2guIilzIHdpdGhvdXQgW1RMU10oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9HbG9zc2FyeS9UTFMgIlRMUzogVHJhbnNwb3J0IExheWVyIFNlY3VyaXR5IChUTFMpLCBwcmV2aW91c2x5IGtub3duIGFzIFNlY3VyZSBTb2NrZXRzIExheWVyIChTU0wpLCBpcyBhIHByb3RvY29sIHVzZWQgYnkgYXBwbGljYXRpb25zIHRvIGNvbW11bmljYXRlIHNlY3VyZWx5IGFjcm9zcyBhIG5ldHdvcmssIHByZXZlbnRpbmcgdGFtcGVyaW5nIHdpdGggYW5kIGVhdmVzZHJvcHBpbmcgb24gZW1haWwsIHdlYiBicm93c2luZywgbWVzc2FnaW5nLCBhbmQgb3RoZXIgcHJvdG9jb2xzLiIpIChbSFRUUFNdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvR2xvc3NhcnkvSFRUUFMgIkhUVFBTOiBIVFRQUyAoSFRUUCBTZWN1cmUpIGlzIGFuIGVuY3J5cHRlZCB2ZXJzaW9uIG9mIHRoZSBIVFRQIHByb3RvY29sLiBJdCB1c3VhbGx5IHVzZXMgU1NMIG9yIFRMUyB0byBlbmNyeXB0IGFsbCBjb21tdW5pY2F0aW9uIGJldHdlZW4gYSBjbGllbnQgYW5kIGEgc2VydmVyLiBUaGlzIHNlY3VyZSBjb25uZWN0aW9uIGFsbG93cyBjbGllbnRzIHRvIHNhZmVseSBleGNoYW5nZSBzZW5zaXRpdmUgZGF0YSB3aXRoIGEgc2VydmVyLCBmb3IgZXhhbXBsZSBmb3IgYmFua2luZyBhY3Rpdml0aWVzIG9yIG9ubGluZSBzaG9wcGluZy4iKSkuXG4qICAgYG9yaWdpbmA6IFRoZSBzZW50IHJlZmVycmVyIHdpbGwgYmUgbGltaXRlZCB0byB0aGUgb3JpZ2luIG9mIHRoZSByZWZlcnJpbmcgcGFnZTogaXRzIFtzY2hlbWVdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvQXJjaGl2ZS9Nb3ppbGxhL1VSSVNjaGVtZSksIFtob3N0XShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0dsb3NzYXJ5L2hvc3QgImhvc3Q6IEEgaG9zdCBpcyBhIGRldmljZSBjb25uZWN0ZWQgdG8gdGhlIEludGVybmV0IChvciBhIGxvY2FsIG5ldHdvcmspLiBTb21lIGhvc3RzIGNhbGxlZCBzZXJ2ZXJzIG9mZmVyIGFkZGl0aW9uYWwgc2VydmljZXMgbGlrZSBzZXJ2aW5nIHdlYnBhZ2VzIG9yIHN0b3JpbmcgZmlsZXMgYW5kIGVtYWlscy4iKSwgYW5kIFtwb3J0XShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0dsb3NzYXJ5L3BvcnQgInBvcnQ6IEZvciBhIGNvbXB1dGVyIGNvbm5lY3RlZCB0byBhIG5ldHdvcmsgd2l0aCBhbiBJUCBhZGRyZXNzLCBhIHBvcnQgaXMgYSBjb21tdW5pY2F0aW9uIGVuZHBvaW50LiBQb3J0cyBhcmUgZGVzaWduYXRlZCBieSBudW1iZXJzLCBhbmQgYmVsb3cgMTAyNCBlYWNoIHBvcnQgaXMgYXNzb2NpYXRlZCBieSBkZWZhdWx0IHdpdGggYSBzcGVjaWZpYyBwcm90b2NvbC4iKS5cbiogICBgb3JpZ2luLXdoZW4tY3Jvc3Mtb3JpZ2luYDogVGhlIHJlZmVycmVyIHNlbnQgdG8gb3RoZXIgb3JpZ2lucyB3aWxsIGJlIGxpbWl0ZWQgdG8gdGhlIHNjaGVtZSwgdGhlIGhvc3QsIGFuZCB0aGUgcG9ydC4gTmF2aWdhdGlvbnMgb24gdGhlIHNhbWUgb3JpZ2luIHdpbGwgc3RpbGwgaW5jbHVkZSB0aGUgcGF0aC5cbiogICBgc2FtZS1vcmlnaW5gOiBBIHJlZmVycmVyIHdpbGwgYmUgc2VudCBmb3IgW3NhbWUgb3JpZ2luXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0dsb3NzYXJ5L1NhbWUtb3JpZ2luX3BvbGljeSAic2FtZSBvcmlnaW46IFRoZSBzYW1lLW9yaWdpbiBwb2xpY3kgaXMgYSBjcml0aWNhbCBzZWN1cml0eSBtZWNoYW5pc20gdGhhdCByZXN0cmljdHMgaG93IGEgZG9jdW1lbnQgb3Igc2NyaXB0IGxvYWRlZCBmcm9tIG9uZSBvcmlnaW4gY2FuIGludGVyYWN0IHdpdGggYSByZXNvdXJjZSBmcm9tIGFub3RoZXIgb3JpZ2luLiIpLCBidXQgY3Jvc3Mtb3JpZ2luIHJlcXVlc3RzIHdpbGwgY29udGFpbiBubyByZWZlcnJlciBpbmZvcm1hdGlvbi5cbiogICBgc3RyaWN0LW9yaWdpbmA6IE9ubHkgc2VuZCB0aGUgb3JpZ2luIG9mIHRoZSBkb2N1bWVudCBhcyB0aGUgcmVmZXJyZXIgd2hlbiB0aGUgcHJvdG9jb2wgc2VjdXJpdHkgbGV2ZWwgc3RheXMgdGhlIHNhbWUgKEhUVFBT4oaSSFRUUFMpLCBidXQgZG9uXCd0IHNlbmQgaXQgdG8gYSBsZXNzIHNlY3VyZSBkZXN0aW5hdGlvbiAoSFRUUFPihpJIVFRQKS5cbiogICBgc3RyaWN0LW9yaWdpbi13aGVuLWNyb3NzLW9yaWdpbmA6IFNlbmQgYSBmdWxsIFVSTCB3aGVuIHBlcmZvcm1pbmcgYSBzYW1lLW9yaWdpbiByZXF1ZXN0LCBvbmx5IHNlbmQgdGhlIG9yaWdpbiB3aGVuIHRoZSBwcm90b2NvbCBzZWN1cml0eSBsZXZlbCBzdGF5cyB0aGUgc2FtZSAoSFRUUFPihpJIVFRQUyksIGFuZCBzZW5kIG5vIGhlYWRlciB0byBhIGxlc3Mgc2VjdXJlIGRlc3RpbmF0aW9uIChIVFRQU+KGkkhUVFApLlxuKiAgIGB1bnNhZmUtdXJsYDogVGhlIHJlZmVycmVyIHdpbGwgaW5jbHVkZSB0aGUgb3JpZ2luIF9hbmRfIHRoZSBwYXRoIChidXQgbm90IHRoZSBbZnJhZ21lbnRdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9IVE1MSHlwZXJsaW5rRWxlbWVudFV0aWxzL2hhc2gpLCBbcGFzc3dvcmRdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9IVE1MSHlwZXJsaW5rRWxlbWVudFV0aWxzL3Bhc3N3b3JkKSwgb3IgW3VzZXJuYW1lXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvSFRNTEh5cGVybGlua0VsZW1lbnRVdGlscy91c2VybmFtZSkpLiAqKlRoaXMgdmFsdWUgaXMgdW5zYWZlKiosIGJlY2F1c2UgaXQgbGVha3Mgb3JpZ2lucyBhbmQgcGF0aHMgZnJvbSBUTFMtcHJvdGVjdGVkIHJlc291cmNlcyB0byBpbnNlY3VyZSBvcmlnaW5zLid9XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvaWZyYW1lIn1dfSx7bmFtZToiZW1iZWQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBlbWJlZCBlbGVtZW50IHByb3ZpZGVzIGFuIGludGVncmF0aW9uIHBvaW50IGZvciBhbiBleHRlcm5hbCAodHlwaWNhbGx5IG5vbi1IVE1MKSBhcHBsaWNhdGlvbiBvciBpbnRlcmFjdGl2ZSBjb250ZW50LiJ9LGF0dHJpYnV0ZXM6W3tuYW1lOiJzcmMiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBVUkzCoG9mIHRoZSByZXNvdXJjZSBiZWluZyBlbWJlZGRlZC4ifX0se25hbWU6InR5cGUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBNSU1FwqB0eXBlIHRvIHVzZSB0byBzZWxlY3QgdGhlIHBsdWctaW4gdG8gaW5zdGFudGlhdGUuIn19LHtuYW1lOiJ3aWR0aCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGRpc3BsYXllZCB3aWR0aCBvZiB0aGUgcmVzb3VyY2UsIGluIFtDU1MgcGl4ZWxzXShodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLXZhbHVlcy8jcHgpLiBUaGlzIG11c3QgYmUgYW4gYWJzb2x1dGUgdmFsdWU7IHBlcmNlbnRhZ2VzIGFyZSBfbm90XyBhbGxvd2VkLiJ9fSx7bmFtZToiaGVpZ2h0IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgZGlzcGxheWVkIGhlaWdodCBvZiB0aGUgcmVzb3VyY2UsIGluIFtDU1MgcGl4ZWxzXShodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLXZhbHVlcy8jcHgpLiBUaGlzIG11c3QgYmUgYW4gYWJzb2x1dGUgdmFsdWU7IHBlcmNlbnRhZ2VzIGFyZSBfbm90XyBhbGxvd2VkLiJ9fV0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2VtYmVkIn1dfSx7bmFtZToib2JqZWN0IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgb2JqZWN0IGVsZW1lbnQgY2FuIHJlcHJlc2VudCBhbiBleHRlcm5hbCByZXNvdXJjZSwgd2hpY2gsIGRlcGVuZGluZyBvbiB0aGUgdHlwZSBvZiB0aGUgcmVzb3VyY2UsIHdpbGwgZWl0aGVyIGJlIHRyZWF0ZWQgYXMgYW4gaW1hZ2UsIGFzIGEgbmVzdGVkIGJyb3dzaW5nIGNvbnRleHQsIG9yIGFzIGFuIGV4dGVybmFsIHJlc291cmNlIHRvIGJlIHByb2Nlc3NlZCBieSBhIHBsdWdpbi4ifSxhdHRyaWJ1dGVzOlt7bmFtZToiZGF0YSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGFkZHJlc3Mgb2YgdGhlIHJlc291cmNlIGFzIGEgdmFsaWQgVVJMLiBBdCBsZWFzdCBvbmUgb2YgKipkYXRhKiogYW5kICoqdHlwZSoqIG11c3QgYmUgZGVmaW5lZC4ifX0se25hbWU6InR5cGUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBbY29udGVudCB0eXBlXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0dsb3NzYXJ5L0NvbnRlbnRfdHlwZSkgb2YgdGhlIHJlc291cmNlIHNwZWNpZmllZCBieSAqKmRhdGEqKi4gQXQgbGVhc3Qgb25lIG9mICoqZGF0YSoqIGFuZCAqKnR5cGUqKiBtdXN0IGJlIGRlZmluZWQuIn19LHtuYW1lOiJ0eXBlbXVzdG1hdGNoIix2YWx1ZVNldDoidiIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhpcyBCb29sZWFuIGF0dHJpYnV0ZSBpbmRpY2F0ZXMgaWYgdGhlICoqdHlwZSoqIGF0dHJpYnV0ZSBhbmQgdGhlIGFjdHVhbCBbY29udGVudCB0eXBlXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0dsb3NzYXJ5L0NvbnRlbnRfdHlwZSkgb2YgdGhlIHJlc291cmNlIG11c3QgbWF0Y2ggdG8gYmUgdXNlZC4ifX0se25hbWU6Im5hbWUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBuYW1lIG9mIHZhbGlkIGJyb3dzaW5nIGNvbnRleHQgKEhUTUw1KSwgb3IgdGhlIG5hbWUgb2YgdGhlIGNvbnRyb2wgKEhUTUwgNCkuIn19LHtuYW1lOiJ1c2VtYXAiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkEgaGFzaC1uYW1lIHJlZmVyZW5jZSB0byBhIFtgPG1hcD5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvbWFwIFwiVGhlIEhUTUwgPG1hcD4gZWxlbWVudCBpcyB1c2VkIHdpdGggPGFyZWE+IGVsZW1lbnRzIHRvIGRlZmluZSBhbiBpbWFnZSBtYXAgKGEgY2xpY2thYmxlIGxpbmsgYXJlYSkuXCIpIGVsZW1lbnQ7IHRoYXQgaXMgYSAnIycgZm9sbG93ZWQgYnkgdGhlIHZhbHVlIG9mIGEgW2BuYW1lYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L21hcCNhdHRyLW5hbWUpIG9mIGEgbWFwIGVsZW1lbnQuIn19LHtuYW1lOiJmb3JtIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOidUaGUgZm9ybSBlbGVtZW50LCBpZiBhbnksIHRoYXQgdGhlIG9iamVjdCBlbGVtZW50IGlzIGFzc29jaWF0ZWQgd2l0aCAoaXRzIF9mb3JtIG93bmVyXykuIFRoZSB2YWx1ZSBvZiB0aGUgYXR0cmlidXRlIG11c3QgYmUgYW4gSUQgb2YgYSBbYDxmb3JtPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9mb3JtICJUaGUgSFRNTCA8Zm9ybT4gZWxlbWVudCByZXByZXNlbnRzIGEgZG9jdW1lbnQgc2VjdGlvbiB0aGF0IGNvbnRhaW5zIGludGVyYWN0aXZlIGNvbnRyb2xzIGZvciBzdWJtaXR0aW5nIGluZm9ybWF0aW9uIHRvIGEgd2ViIHNlcnZlci4iKSBlbGVtZW50IGluIHRoZSBzYW1lIGRvY3VtZW50Lid9fSx7bmFtZToid2lkdGgiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSB3aWR0aCBvZiB0aGUgZGlzcGxheSByZXNvdXJjZSwgaW4gW0NTUyBwaXhlbHNdKGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3MtdmFsdWVzLyNweCkuIC0tIChBYnNvbHV0ZSB2YWx1ZXMgb25seS4gW05PIHBlcmNlbnRhZ2VzXShodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9lbWJlZGRlZC1jb250ZW50Lmh0bWwjZGltZW5zaW9uLWF0dHJpYnV0ZXMpKSJ9fSx7bmFtZToiaGVpZ2h0IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgaGVpZ2h0IG9mIHRoZSBkaXNwbGF5ZWQgcmVzb3VyY2UsIGluIFtDU1MgcGl4ZWxzXShodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLXZhbHVlcy8jcHgpLiAtLSAoQWJzb2x1dGUgdmFsdWVzIG9ubHkuIFtOTyBwZXJjZW50YWdlc10oaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvZW1iZWRkZWQtY29udGVudC5odG1sI2RpbWVuc2lvbi1hdHRyaWJ1dGVzKSkifX0se25hbWU6ImFyY2hpdmUiLGRlc2NyaXB0aW9uOiJBIHNwYWNlLXNlcGFyYXRlZCBsaXN0IG9mIFVSSXMgZm9yIGFyY2hpdmVzIG9mIHJlc291cmNlcyBmb3IgdGhlIG9iamVjdC4ifSx7bmFtZToiYm9yZGVyIixkZXNjcmlwdGlvbjoiVGhlIHdpZHRoIG9mIGEgYm9yZGVyIGFyb3VuZCB0aGUgY29udHJvbCwgaW4gcGl4ZWxzLiJ9LHtuYW1lOiJjbGFzc2lkIixkZXNjcmlwdGlvbjoiVGhlIFVSSSBvZiB0aGUgb2JqZWN0J3MgaW1wbGVtZW50YXRpb24uIEl0IGNhbiBiZSB1c2VkIHRvZ2V0aGVyIHdpdGgsIG9yIGluIHBsYWNlIG9mLCB0aGUgKipkYXRhKiogYXR0cmlidXRlLiJ9LHtuYW1lOiJjb2RlYmFzZSIsZGVzY3JpcHRpb246IlRoZSBiYXNlIHBhdGggdXNlZCB0byByZXNvbHZlIHJlbGF0aXZlIFVSSXMgc3BlY2lmaWVkIGJ5ICoqY2xhc3NpZCoqLCAqKmRhdGEqKiwgb3IgKiphcmNoaXZlKiouIElmIG5vdCBzcGVjaWZpZWQsIHRoZSBkZWZhdWx0IGlzIHRoZSBiYXNlIFVSSSBvZiB0aGUgY3VycmVudCBkb2N1bWVudC4ifSx7bmFtZToiY29kZXR5cGUiLGRlc2NyaXB0aW9uOiJUaGUgY29udGVudCB0eXBlIG9mIHRoZSBkYXRhIHNwZWNpZmllZCBieSAqKmNsYXNzaWQqKi4ifSx7bmFtZToiZGVjbGFyZSIsZGVzY3JpcHRpb246IlRoZSBwcmVzZW5jZSBvZiB0aGlzIEJvb2xlYW4gYXR0cmlidXRlIG1ha2VzIHRoaXMgZWxlbWVudCBhIGRlY2xhcmF0aW9uIG9ubHkuIFRoZSBvYmplY3QgbXVzdCBiZSBpbnN0YW50aWF0ZWQgYnkgYSBzdWJzZXF1ZW50IGA8b2JqZWN0PmAgZWxlbWVudC4gSW4gSFRNTDUsIHJlcGVhdCB0aGUgPG9iamVjdD4gZWxlbWVudCBjb21wbGV0ZWx5IGVhY2ggdGhhdCB0aGF0IHRoZSByZXNvdXJjZSBpcyByZXVzZWQuIn0se25hbWU6InN0YW5kYnkiLGRlc2NyaXB0aW9uOiJBIG1lc3NhZ2UgdGhhdCB0aGUgYnJvd3NlciBjYW4gc2hvdyB3aGlsZSBsb2FkaW5nIHRoZSBvYmplY3QncyBpbXBsZW1lbnRhdGlvbiBhbmQgZGF0YS4ifSx7bmFtZToidGFiaW5kZXgiLGRlc2NyaXB0aW9uOiJUaGUgcG9zaXRpb24gb2YgdGhlIGVsZW1lbnQgaW4gdGhlIHRhYmJpbmcgbmF2aWdhdGlvbiBvcmRlciBmb3IgdGhlIGN1cnJlbnQgZG9jdW1lbnQuIn1dLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9vYmplY3QifV19LHtuYW1lOiJwYXJhbSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHBhcmFtIGVsZW1lbnQgZGVmaW5lcyBwYXJhbWV0ZXJzIGZvciBwbHVnaW5zIGludm9rZWQgYnkgb2JqZWN0IGVsZW1lbnRzLiBJdCBkb2VzIG5vdCByZXByZXNlbnQgYW55dGhpbmcgb24gaXRzIG93bi4ifSxhdHRyaWJ1dGVzOlt7bmFtZToibmFtZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiTmFtZSBvZiB0aGUgcGFyYW1ldGVyLiJ9fSx7bmFtZToidmFsdWUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlNwZWNpZmllcyB0aGUgdmFsdWUgb2YgdGhlIHBhcmFtZXRlci4ifX0se25hbWU6InR5cGUiLGRlc2NyaXB0aW9uOidPbmx5IHVzZWQgaWYgdGhlIGB2YWx1ZXR5cGVgIGlzIHNldCB0byAicmVmIi4gU3BlY2lmaWVzIHRoZSBNSU1FIHR5cGUgb2YgdmFsdWVzIGZvdW5kIGF0IHRoZSBVUkkgc3BlY2lmaWVkIGJ5IHZhbHVlLid9LHtuYW1lOiJ2YWx1ZXR5cGUiLGRlc2NyaXB0aW9uOidTcGVjaWZpZXMgdGhlIHR5cGUgb2YgdGhlIGB2YWx1ZWAgYXR0cmlidXRlLiBQb3NzaWJsZSB2YWx1ZXMgYXJlOlxuXG4qICAgZGF0YTogRGVmYXVsdCB2YWx1ZS4gVGhlIHZhbHVlIGlzIHBhc3NlZCB0byB0aGUgb2JqZWN0XCdzIGltcGxlbWVudGF0aW9uIGFzIGEgc3RyaW5nLlxuKiAgIHJlZjogVGhlIHZhbHVlIGlzIGEgVVJJIHRvIGEgcmVzb3VyY2Ugd2hlcmUgcnVuLXRpbWUgdmFsdWVzIGFyZSBzdG9yZWQuXG4qICAgb2JqZWN0OiBBbiBJRCBvZiBhbm90aGVyIFtgPG9iamVjdD5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvb2JqZWN0ICJUaGUgSFRNTCA8b2JqZWN0PiBlbGVtZW50IHJlcHJlc2VudHMgYW4gZXh0ZXJuYWwgcmVzb3VyY2UsIHdoaWNoIGNhbiBiZSB0cmVhdGVkIGFzIGFuIGltYWdlLCBhIG5lc3RlZCBicm93c2luZyBjb250ZXh0LCBvciBhIHJlc291cmNlIHRvIGJlIGhhbmRsZWQgYnkgYSBwbHVnaW4uIikgaW4gdGhlIHNhbWUgZG9jdW1lbnQuJ31dLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9wYXJhbSJ9XX0se25hbWU6InZpZGVvIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJBIHZpZGVvIGVsZW1lbnQgaXMgdXNlZCBmb3IgcGxheWluZyB2aWRlb3Mgb3IgbW92aWVzLCBhbmQgYXVkaW8gZmlsZXMgd2l0aCBjYXB0aW9ucy4ifSxhdHRyaWJ1dGVzOlt7bmFtZToic3JjIn0se25hbWU6ImNyb3Nzb3JpZ2luIix2YWx1ZVNldDoieG8ifSx7bmFtZToicG9zdGVyIn0se25hbWU6InByZWxvYWQiLHZhbHVlU2V0OiJwbCJ9LHtuYW1lOiJhdXRvcGxheSIsdmFsdWVTZXQ6InYiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkEgQm9vbGVhbiBhdHRyaWJ1dGU7IGlmIHNwZWNpZmllZCwgdGhlIHZpZGVvIGF1dG9tYXRpY2FsbHkgYmVnaW5zIHRvIHBsYXkgYmFjayBhcyBzb29uIGFzIGl0IGNhbiBkbyBzbyB3aXRob3V0IHN0b3BwaW5nIHRvIGZpbmlzaCBsb2FkaW5nIHRoZSBkYXRhLiJ9fSx7bmFtZToibWVkaWFncm91cCJ9LHtuYW1lOiJsb29wIix2YWx1ZVNldDoidiJ9LHtuYW1lOiJtdXRlZCIsdmFsdWVTZXQ6InYifSx7bmFtZToiY29udHJvbHMiLHZhbHVlU2V0OiJ2In0se25hbWU6IndpZHRoIn0se25hbWU6ImhlaWdodCJ9XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvdmlkZW8ifV19LHtuYW1lOiJhdWRpbyIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiQW4gYXVkaW8gZWxlbWVudCByZXByZXNlbnRzIGEgc291bmQgb3IgYXVkaW8gc3RyZWFtLiJ9LGF0dHJpYnV0ZXM6W3tuYW1lOiJzcmMiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6J1RoZSBVUkwgb2YgdGhlIGF1ZGlvIHRvIGVtYmVkLiBUaGlzIGlzIHN1YmplY3QgdG8gW0hUVFAgYWNjZXNzIGNvbnRyb2xzXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0hUVFBfYWNjZXNzX2NvbnRyb2wpLiBUaGlzIGlzIG9wdGlvbmFsOyB5b3UgbWF5IGluc3RlYWQgdXNlIHRoZSBbYDxzb3VyY2U+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3NvdXJjZSAiVGhlIEhUTUwgPHNvdXJjZT4gZWxlbWVudCBzcGVjaWZpZXMgbXVsdGlwbGUgbWVkaWEgcmVzb3VyY2VzIGZvciB0aGUgPHBpY3R1cmU+LCB0aGUgPGF1ZGlvPiBlbGVtZW50LCBvciB0aGUgPHZpZGVvPiBlbGVtZW50LiIpIGVsZW1lbnQgd2l0aGluIHRoZSBhdWRpbyBibG9jayB0byBzcGVjaWZ5IHRoZSBhdWRpbyB0byBlbWJlZC4nfX0se25hbWU6ImNyb3Nzb3JpZ2luIix2YWx1ZVNldDoieG8iLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6J1RoaXMgZW51bWVyYXRlZCBhdHRyaWJ1dGUgaW5kaWNhdGVzIHdoZXRoZXIgdG8gdXNlIENPUlMgdG8gZmV0Y2ggdGhlIHJlbGF0ZWQgaW1hZ2UuIFtDT1JTLWVuYWJsZWQgcmVzb3VyY2VzXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0NPUlNfRW5hYmxlZF9JbWFnZSkgY2FuIGJlIHJldXNlZCBpbiB0aGUgW2A8Y2FudmFzPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9jYW52YXMgIlVzZSB0aGUgSFRNTCA8Y2FudmFzPiBlbGVtZW50IHdpdGggZWl0aGVyIHRoZSBjYW52YXMgc2NyaXB0aW5nIEFQSSBvciB0aGUgV2ViR0wgQVBJIHRvIGRyYXcgZ3JhcGhpY3MgYW5kIGFuaW1hdGlvbnMuIikgZWxlbWVudCB3aXRob3V0IGJlaW5nIF90YWludGVkXy4gVGhlIGFsbG93ZWQgdmFsdWVzIGFyZTpcblxuYW5vbnltb3VzXG5cblNlbmRzIGEgY3Jvc3Mtb3JpZ2luIHJlcXVlc3Qgd2l0aG91dCBhIGNyZWRlbnRpYWwuIEluIG90aGVyIHdvcmRzLCBpdCBzZW5kcyB0aGUgYE9yaWdpbjpgIEhUVFAgaGVhZGVyIHdpdGhvdXQgYSBjb29raWUsIFguNTA5IGNlcnRpZmljYXRlLCBvciBwZXJmb3JtaW5nIEhUVFAgQmFzaWMgYXV0aGVudGljYXRpb24uIElmIHRoZSBzZXJ2ZXIgZG9lcyBub3QgZ2l2ZSBjcmVkZW50aWFscyB0byB0aGUgb3JpZ2luIHNpdGUgKGJ5IG5vdCBzZXR0aW5nIHRoZSBgQWNjZXNzLUNvbnRyb2wtQWxsb3ctT3JpZ2luOmAgSFRUUCBoZWFkZXIpLCB0aGUgaW1hZ2Ugd2lsbCBiZSBfdGFpbnRlZF8sIGFuZCBpdHMgdXNhZ2UgcmVzdHJpY3RlZC5cblxudXNlLWNyZWRlbnRpYWxzXG5cblNlbmRzIGEgY3Jvc3Mtb3JpZ2luIHJlcXVlc3Qgd2l0aCBhIGNyZWRlbnRpYWwuIEluIG90aGVyIHdvcmRzLCBpdCBzZW5kcyB0aGUgYE9yaWdpbjpgIEhUVFAgaGVhZGVyIHdpdGggYSBjb29raWUsIGEgY2VydGlmaWNhdGUsIG9yIHBlcmZvcm1pbmcgSFRUUCBCYXNpYyBhdXRoZW50aWNhdGlvbi4gSWYgdGhlIHNlcnZlciBkb2VzIG5vdCBnaXZlIGNyZWRlbnRpYWxzIHRvIHRoZSBvcmlnaW4gc2l0ZSAodGhyb3VnaCBgQWNjZXNzLUNvbnRyb2wtQWxsb3ctQ3JlZGVudGlhbHM6YCBIVFRQIGhlYWRlciksIHRoZSBpbWFnZSB3aWxsIGJlIF90YWludGVkXyBhbmQgaXRzIHVzYWdlIHJlc3RyaWN0ZWQuXG5cbldoZW4gbm90IHByZXNlbnQsIHRoZSByZXNvdXJjZSBpcyBmZXRjaGVkIHdpdGhvdXQgYSBDT1JTIHJlcXVlc3QgKGkuZS4gd2l0aG91dCBzZW5kaW5nIHRoZSBgT3JpZ2luOmAgSFRUUCBoZWFkZXIpLCBwcmV2ZW50aW5nIGl0cyBub24tdGFpbnRlZCB1c2VkIGluIFtgPGNhbnZhcz5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvY2FudmFzICJVc2UgdGhlIEhUTUwgPGNhbnZhcz4gZWxlbWVudCB3aXRoIGVpdGhlciB0aGUgY2FudmFzIHNjcmlwdGluZyBBUEkgb3IgdGhlIFdlYkdMIEFQSSB0byBkcmF3IGdyYXBoaWNzIGFuZCBhbmltYXRpb25zLiIpIGVsZW1lbnRzLiBJZiBpbnZhbGlkLCBpdCBpcyBoYW5kbGVkIGFzIGlmIHRoZSBlbnVtZXJhdGVkIGtleXdvcmQgKiphbm9ueW1vdXMqKiB3YXMgdXNlZC4gU2VlIFtDT1JTIHNldHRpbmdzIGF0dHJpYnV0ZXNdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvSFRNTC9DT1JTX3NldHRpbmdzX2F0dHJpYnV0ZXMpIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uLid9fSx7bmFtZToicHJlbG9hZCIsdmFsdWVTZXQ6InBsIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGlzIGVudW1lcmF0ZWQgYXR0cmlidXRlIGlzIGludGVuZGVkIHRvIHByb3ZpZGUgYSBoaW50IHRvIHRoZSBicm93c2VyIGFib3V0IHdoYXQgdGhlIGF1dGhvciB0aGlua3Mgd2lsbCBsZWFkIHRvIHRoZSBiZXN0IHVzZXIgZXhwZXJpZW5jZS4gSXQgbWF5IGhhdmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOlxuXG4qICAgYG5vbmVgOiBJbmRpY2F0ZXMgdGhhdCB0aGUgYXVkaW8gc2hvdWxkIG5vdCBiZSBwcmVsb2FkZWQuXG4qICAgYG1ldGFkYXRhYDogSW5kaWNhdGVzIHRoYXQgb25seSBhdWRpbyBtZXRhZGF0YSAoZS5nLiBsZW5ndGgpIGlzIGZldGNoZWQuXG4qICAgYGF1dG9gOiBJbmRpY2F0ZXMgdGhhdCB0aGUgd2hvbGUgYXVkaW8gZmlsZSBjYW4gYmUgZG93bmxvYWRlZCwgZXZlbiBpZiB0aGUgdXNlciBpcyBub3QgZXhwZWN0ZWQgdG8gdXNlIGl0LlxuKiAgIF9lbXB0eSBzdHJpbmdfOiBBIHN5bm9ueW0gb2YgdGhlIGBhdXRvYCB2YWx1ZS5cblxuSWYgbm90IHNldCwgYHByZWxvYWRgJ3MgZGVmYXVsdCB2YWx1ZSBpcyBicm93c2VyLWRlZmluZWQgKGkuZS4gZWFjaCBicm93c2VyIG1heSBoYXZlIGl0cyBvd24gZGVmYXVsdCB2YWx1ZSkuIFRoZSBzcGVjIGFkdmlzZXMgaXQgdG8gYmUgc2V0IHRvIGBtZXRhZGF0YWAuXG5cbioqVXNhZ2Ugbm90ZXM6KipcblxuKiAgIFRoZSBgYXV0b3BsYXlgIGF0dHJpYnV0ZSBoYXMgcHJlY2VkZW5jZSBvdmVywqBgcHJlbG9hZGAuIElmIGBhdXRvcGxheWAgaXMgc3BlY2lmaWVkLCB0aGUgYnJvd3NlciB3b3VsZCBvYnZpb3VzbHkgbmVlZCB0byBzdGFydCBkb3dubG9hZGluZyB0aGUgYXVkaW8gZm9yIHBsYXliYWNrLlxuKiAgIFRoZSBicm93c2VyIGlzIG5vdCBmb3JjZWQgYnkgdGhlIHNwZWNpZmljYXRpb24gdG8gZm9sbG93IHRoZSB2YWx1ZSBvZiB0aGlzIGF0dHJpYnV0ZTsgaXQgaXMgYSBtZXJlIGhpbnQuIn19LHtuYW1lOiJhdXRvcGxheSIsdmFsdWVTZXQ6InYiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkEgQm9vbGVhbiBhdHRyaWJ1dGU6wqBpZiBzcGVjaWZpZWQsIHRoZSBhdWRpbyB3aWxsIGF1dG9tYXRpY2FsbHkgYmVnaW4gcGxheWJhY2sgYXMgc29vbiBhcyBpdCBjYW4gZG8gc28sIHdpdGhvdXQgd2FpdGluZyBmb3IgdGhlIGVudGlyZSBhdWRpbyBmaWxlIHRvIGZpbmlzaCBkb3dubG9hZGluZy5cblxuKipOb3RlKio6IFNpdGVzIHRoYXQgYXV0b21hdGljYWxseSBwbGF5IGF1ZGlvIChvciB2aWRlb3Mgd2l0aCBhbiBhdWRpbyB0cmFjaykgY2FuIGJlIGFuIHVucGxlYXNhbnQgZXhwZXJpZW5jZSBmb3IgdXNlcnMsIHNvIHNob3VsZCBiZSBhdm9pZGVkIHdoZW4gcG9zc2libGUuIElmIHlvdSBtdXN0IG9mZmVyIGF1dG9wbGF5IGZ1bmN0aW9uYWxpdHksIHlvdSBzaG91bGQgbWFrZSBpdCBvcHQtaW4gKHJlcXVpcmluZyBhIHVzZXIgdG8gc3BlY2lmaWNhbGx5IGVuYWJsZSBpdCkuIEhvd2V2ZXIsIHRoaXMgY2FuIGJlIHVzZWZ1bCB3aGVuIGNyZWF0aW5nIG1lZGlhIGVsZW1lbnRzIHdob3NlIHNvdXJjZSB3aWxsIGJlIHNldCBhdCBhIGxhdGVyIHRpbWUsIHVuZGVyIHVzZXIgY29udHJvbC4ifX0se25hbWU6Im1lZGlhZ3JvdXAifSx7bmFtZToibG9vcCIsdmFsdWVTZXQ6InYiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkEgQm9vbGVhbiBhdHRyaWJ1dGU6wqBpZiBzcGVjaWZpZWQsIHRoZSBhdWRpbyBwbGF5ZXIgd2lsbMKgYXV0b21hdGljYWxseSBzZWVrIGJhY2sgdG8gdGhlIHN0YXJ0wqB1cG9uIHJlYWNoaW5nIHRoZSBlbmQgb2YgdGhlIGF1ZGlvLiJ9fSx7bmFtZToibXV0ZWQiLHZhbHVlU2V0OiJ2IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJBIEJvb2xlYW4gYXR0cmlidXRlIHRoYXQgaW5kaWNhdGVzIHdoZXRoZXIgdGhlIGF1ZGlvIHdpbGwgYmUgaW5pdGlhbGx5IHNpbGVuY2VkLiBJdHMgZGVmYXVsdCB2YWx1ZSBpcyBgZmFsc2VgLiJ9fSx7bmFtZToiY29udHJvbHMiLHZhbHVlU2V0OiJ2IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJJZiB0aGlzIGF0dHJpYnV0ZSBpcyBwcmVzZW50LCB0aGUgYnJvd3NlciB3aWxsIG9mZmVyIGNvbnRyb2xzIHRvIGFsbG93IHRoZSB1c2VyIHRvIGNvbnRyb2wgYXVkaW8gcGxheWJhY2ssIGluY2x1ZGluZyB2b2x1bWUsIHNlZWtpbmcsIGFuZCBwYXVzZS9yZXN1bWUgcGxheWJhY2suIn19XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvYXVkaW8ifV19LHtuYW1lOiJzb3VyY2UiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBzb3VyY2UgZWxlbWVudCBhbGxvd3MgYXV0aG9ycyB0byBzcGVjaWZ5IG11bHRpcGxlIGFsdGVybmF0aXZlIG1lZGlhIHJlc291cmNlcyBmb3IgbWVkaWEgZWxlbWVudHMuIEl0IGRvZXMgbm90IHJlcHJlc2VudCBhbnl0aGluZyBvbiBpdHMgb3duLiJ9LGF0dHJpYnV0ZXM6W3tuYW1lOiJzcmMiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6J1JlcXVpcmVkIGZvciBbYDxhdWRpbz5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvYXVkaW8gIlRoZSBIVE1MIDxhdWRpbz4gZWxlbWVudCBpcyB1c2VkIHRvIGVtYmVkIHNvdW5kIGNvbnRlbnQgaW4gZG9jdW1lbnRzLiBJdCBtYXkgY29udGFpbiBvbmUgb3IgbW9yZSBhdWRpbyBzb3VyY2VzLCByZXByZXNlbnRlZCB1c2luZyB0aGUgc3JjIGF0dHJpYnV0ZSBvciB0aGUgPHNvdXJjZT4gZWxlbWVudDrCoHRoZSBicm93c2VyIHdpbGwgY2hvb3NlIHRoZSBtb3N0IHN1aXRhYmxlIG9uZS4gSXQgY2FuIGFsc28gYmUgdGhlIGRlc3RpbmF0aW9uIGZvciBzdHJlYW1lZCBtZWRpYSwgdXNpbmcgYSBNZWRpYVN0cmVhbS4iKSBhbmQgW2A8dmlkZW8+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3ZpZGVvICJUaGUgSFRNTCBWaWRlbyBlbGVtZW50ICg8dmlkZW8+KSBlbWJlZHMgYSBtZWRpYSBwbGF5ZXIgd2hpY2ggc3VwcG9ydHMgdmlkZW8gcGxheWJhY2sgaW50byB0aGUgZG9jdW1lbnQuIiksIGFkZHJlc3Mgb2YgdGhlIG1lZGlhIHJlc291cmNlLiBUaGUgdmFsdWUgb2YgdGhpcyBhdHRyaWJ1dGUgaXMgaWdub3JlZCB3aGVuIHRoZSBgPHNvdXJjZT5gIGVsZW1lbnQgaXMgcGxhY2VkIGluc2lkZSBhIFtgPHBpY3R1cmU+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3BpY3R1cmUgIlRoZSBIVE1MIDxwaWN0dXJlPiBlbGVtZW50IGNvbnRhaW5zIHplcm8gb3IgbW9yZSA8c291cmNlPiBlbGVtZW50cyBhbmQgb25lIDxpbWc+IGVsZW1lbnQgdG8gcHJvdmlkZSB2ZXJzaW9ucyBvZiBhbiBpbWFnZSBmb3IgZGlmZmVyZW50IGRpc3BsYXkvZGV2aWNlIHNjZW5hcmlvcy4iKSBlbGVtZW50Lid9fSx7bmFtZToidHlwZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIE1JTUUtdHlwZSBvZiB0aGUgcmVzb3VyY2UsIG9wdGlvbmFsbHkgd2l0aCBhIGBjb2RlY3NgIHBhcmFtZXRlci4gU2VlIFtSRkMgNDI4MV0oaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzQyODEpIGZvciBpbmZvcm1hdGlvbiBhYm91dCBob3cgdG8gc3BlY2lmeSBjb2RlY3MuIn19LHtuYW1lOiJzaXplcyIsZGVzY3JpcHRpb246J0lzIGEgbGlzdCBvZiBzb3VyY2Ugc2l6ZXMgdGhhdCBkZXNjcmliZXMgdGhlIGZpbmFsIHJlbmRlcmVkIHdpZHRoIG9mIHRoZSBpbWFnZSByZXByZXNlbnRlZCBieSB0aGUgc291cmNlLiBFYWNoIHNvdXJjZSBzaXplIGNvbnNpc3RzIG9mIGEgY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2YgbWVkaWEgY29uZGl0aW9uLWxlbmd0aCBwYWlycy4gVGhpcyBpbmZvcm1hdGlvbiBpcyB1c2VkIGJ5IHRoZSBicm93c2VyIHRvIGRldGVybWluZSwgYmVmb3JlIGxheWluZyB0aGUgcGFnZSBvdXQsIHdoaWNoIGltYWdlIGRlZmluZWQgaW4gW2BzcmNzZXRgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvc291cmNlI2F0dHItc3Jjc2V0KSB0byB1c2UuICBcblRoZSBgc2l6ZXNgIGF0dHJpYnV0ZSBoYXMgYW4gZWZmZWN0IG9ubHkgd2hlbiB0aGUgW2A8c291cmNlPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9zb3VyY2UgIlRoZSBIVE1MIDxzb3VyY2U+IGVsZW1lbnQgc3BlY2lmaWVzIG11bHRpcGxlIG1lZGlhIHJlc291cmNlcyBmb3IgdGhlIDxwaWN0dXJlPiwgdGhlIDxhdWRpbz4gZWxlbWVudCwgb3IgdGhlIDx2aWRlbz4gZWxlbWVudC4iKSBlbGVtZW50IGlzIHRoZSBkaXJlY3QgY2hpbGQgb2YgYSBbYDxwaWN0dXJlPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9waWN0dXJlICJUaGUgSFRNTCA8cGljdHVyZT4gZWxlbWVudCBjb250YWlucyB6ZXJvIG9yIG1vcmUgPHNvdXJjZT4gZWxlbWVudHMgYW5kIG9uZSA8aW1nPiBlbGVtZW50IHRvIHByb3ZpZGUgdmVyc2lvbnMgb2YgYW4gaW1hZ2UgZm9yIGRpZmZlcmVudCBkaXNwbGF5L2RldmljZSBzY2VuYXJpb3MuIikgZWxlbWVudC4nfSx7bmFtZToic3Jjc2V0IixkZXNjcmlwdGlvbjoiQSBsaXN0IG9mIG9uZSBvciBtb3JlIHN0cmluZ3Mgc2VwYXJhdGVkIGJ5IGNvbW1hcyBpbmRpY2F0aW5nIGEgc2V0IG9mIHBvc3NpYmxlIGltYWdlcyByZXByZXNlbnRlZCBieSB0aGUgc291cmNlIGZvciB0aGUgYnJvd3NlciB0byB1c2UuIEVhY2ggc3RyaW5nIGlzIGNvbXBvc2VkIG9mOlxuXG4xLiAgb25lIFVSTCB0byBhbiBpbWFnZSxcbjIuICBhIHdpZHRoIGRlc2NyaXB0b3IsIHRoYXQgaXMgYSBwb3NpdGl2ZSBpbnRlZ2VyIGRpcmVjdGx5IGZvbGxvd2VkIGJ5IGAndydgLiBUaGUgZGVmYXVsdCB2YWx1ZSwgaWYgbWlzc2luZywgaXMgdGhlIGluZmluaXR5LlxuMy4gIGEgcGl4ZWwgZGVuc2l0eSBkZXNjcmlwdG9yLCB0aGF0IGlzIGEgcG9zaXRpdmUgZmxvYXRpbmcgbnVtYmVyIGRpcmVjdGx5IGZvbGxvd2VkIGJ5IGAneCdgLiBUaGUgZGVmYXVsdCB2YWx1ZSwgaWYgbWlzc2luZywgaXMgYDF4YC5cblxuRWFjaCBzdHJpbmcgaW4gdGhlIGxpc3QgbXVzdCBoYXZlIGF0IGxlYXN0IGEgd2lkdGggZGVzY3JpcHRvciBvciBhIHBpeGVsIGRlbnNpdHkgZGVzY3JpcHRvciB0byBiZSB2YWxpZC4gQW1vbmcgdGhlIGxpc3QsIHRoZXJlIG11c3QgYmUgb25seSBvbmUgc3RyaW5nIGNvbnRhaW5pbmcgdGhlIHNhbWUgdHVwbGUgb2Ygd2lkdGggZGVzY3JpcHRvciBhbmQgcGl4ZWwgZGVuc2l0eSBkZXNjcmlwdG9yLiAgXG5UaGUgYnJvd3NlciBjaG9vc2VzIHRoZSBtb3N0IGFkZXF1YXRlIGltYWdlIHRvIGRpc3BsYXkgYXQgYSBnaXZlbiBwb2ludCBvZiB0aW1lLiAgXG5UaGUgYHNyY3NldGAgYXR0cmlidXRlIGhhcyBhbiBlZmZlY3Qgb25seSB3aGVuIHRoZSBbYDxzb3VyY2U+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3NvdXJjZSBcIlRoZSBIVE1MIDxzb3VyY2U+IGVsZW1lbnQgc3BlY2lmaWVzIG11bHRpcGxlIG1lZGlhIHJlc291cmNlcyBmb3IgdGhlIDxwaWN0dXJlPiwgdGhlIDxhdWRpbz4gZWxlbWVudCwgb3IgdGhlIDx2aWRlbz4gZWxlbWVudC5cIikgZWxlbWVudCBpcyB0aGUgZGlyZWN0IGNoaWxkIG9mIGEgW2A8cGljdHVyZT5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvcGljdHVyZSBcIlRoZSBIVE1MIDxwaWN0dXJlPiBlbGVtZW50IGNvbnRhaW5zIHplcm8gb3IgbW9yZSA8c291cmNlPiBlbGVtZW50cyBhbmQgb25lIDxpbWc+IGVsZW1lbnQgdG8gcHJvdmlkZSB2ZXJzaW9ucyBvZiBhbiBpbWFnZSBmb3IgZGlmZmVyZW50IGRpc3BsYXkvZGV2aWNlIHNjZW5hcmlvcy5cIikgZWxlbWVudC4ifSx7bmFtZToibWVkaWEiLGRlc2NyaXB0aW9uOidbTWVkaWEgcXVlcnldKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvQ1NTL01lZGlhX3F1ZXJpZXMpIG9mIHRoZSByZXNvdXJjZVwncyBpbnRlbmRlZCBtZWRpYTsgdGhpcyBzaG91bGQgYmUgdXNlZCBvbmx5IGluIGEgW2A8cGljdHVyZT5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvcGljdHVyZSAiVGhlIEhUTUwgPHBpY3R1cmU+IGVsZW1lbnQgY29udGFpbnMgemVybyBvciBtb3JlIDxzb3VyY2U+IGVsZW1lbnRzIGFuZCBvbmUgPGltZz4gZWxlbWVudCB0byBwcm92aWRlIHZlcnNpb25zIG9mIGFuIGltYWdlIGZvciBkaWZmZXJlbnQgZGlzcGxheS9kZXZpY2Ugc2NlbmFyaW9zLiIpIGVsZW1lbnQuJ31dLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9zb3VyY2UifV19LHtuYW1lOiJ0cmFjayIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHRyYWNrIGVsZW1lbnQgYWxsb3dzIGF1dGhvcnMgdG8gc3BlY2lmeSBleHBsaWNpdCBleHRlcm5hbCB0aW1lZCB0ZXh0IHRyYWNrcyBmb3IgbWVkaWEgZWxlbWVudHMuIEl0IGRvZXMgbm90IHJlcHJlc2VudCBhbnl0aGluZyBvbiBpdHMgb3duLiJ9LGF0dHJpYnV0ZXM6W3tuYW1lOiJkZWZhdWx0Iix2YWx1ZVNldDoidiIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhpcyBhdHRyaWJ1dGUgaW5kaWNhdGVzIHRoYXQgdGhlIHRyYWNrIHNob3VsZCBiZSBlbmFibGVkIHVubGVzcyB0aGUgdXNlcidzIHByZWZlcmVuY2VzIGluZGljYXRlIHRoYXQgYW5vdGhlciB0cmFjayBpcyBtb3JlIGFwcHJvcHJpYXRlLiBUaGlzIG1heSBvbmx5IGJlIHVzZWQgb24gb25lIGB0cmFja2AgZWxlbWVudCBwZXIgbWVkaWEgZWxlbWVudC4ifX0se25hbWU6ImtpbmQiLHZhbHVlU2V0OiJ0ayIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiSG93IHRoZSB0ZXh0IHRyYWNrIGlzIG1lYW50IHRvIGJlIHVzZWQuIElmIG9taXR0ZWQgdGhlIGRlZmF1bHQga2luZCBpcyBgc3VidGl0bGVzYC4gSWYgdGhlIGF0dHJpYnV0ZSBpcyBub3QgcHJlc2VudCwgaXQgd2lsbCB1c2UgdGhlIGBzdWJ0aXRsZXNgLiBJZiB0aGUgYXR0cmlidXRlIGNvbnRhaW5zIGFuIGludmFsaWQgdmFsdWUsIGl0IHdpbGwgdXNlIGBtZXRhZGF0YWAuIChWZXJzaW9ucyBvZiBDaHJvbWUgZWFybGllciB0aGFuIDUyIHRyZWF0ZWQgYW4gaW52YWxpZCB2YWx1ZSBhcyBgc3VidGl0bGVzYC4pwqBUaGUgZm9sbG93aW5nIGtleXdvcmRzIGFyZSBhbGxvd2VkOlxuXG4qICAgYHN1YnRpdGxlc2BcbiAgICAqICAgU3VidGl0bGVzIHByb3ZpZGUgdHJhbnNsYXRpb24gb2YgY29udGVudCB0aGF0IGNhbm5vdCBiZSB1bmRlcnN0b29kIGJ5IHRoZSB2aWV3ZXIuIEZvciBleGFtcGxlIGRpYWxvZ3VlIG9yIHRleHQgdGhhdCBpcyBub3QgRW5nbGlzaCBpbiBhbiBFbmdsaXNoIGxhbmd1YWdlIGZpbG0uXG4gICAgKiAgIFN1YnRpdGxlcyBtYXkgY29udGFpbiBhZGRpdGlvbmFsIGNvbnRlbnQsIHVzdWFsbHkgZXh0cmEgYmFja2dyb3VuZCBpbmZvcm1hdGlvbi4gRm9yIGV4YW1wbGUgdGhlIHRleHQgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgU3RhciBXYXJzIGZpbG1zLCBvciB0aGUgZGF0ZSwgdGltZSwgYW5kIGxvY2F0aW9uIG9mIGEgc2NlbmUuXG4qICAgYGNhcHRpb25zYFxuICAgICogICBDbG9zZWQgY2FwdGlvbnMgcHJvdmlkZSBhIHRyYW5zY3JpcHRpb24gYW5kIHBvc3NpYmx5IGEgdHJhbnNsYXRpb24gb2YgYXVkaW8uXG4gICAgKiAgIEl0IG1heSBpbmNsdWRlIGltcG9ydGFudCBub24tdmVyYmFsIGluZm9ybWF0aW9uIHN1Y2ggYXMgbXVzaWMgY3VlcyBvciBzb3VuZCBlZmZlY3RzLiBJdCBtYXkgaW5kaWNhdGUgdGhlIGN1ZSdzIHNvdXJjZSAoZS5nLiBtdXNpYywgdGV4dCwgY2hhcmFjdGVyKS5cbiAgICAqICAgU3VpdGFibGUgZm9yIHVzZXJzIHdobyBhcmUgZGVhZiBvciB3aGVuIHRoZSBzb3VuZCBpcyBtdXRlZC5cbiogICBgZGVzY3JpcHRpb25zYFxuICAgICogICBUZXh0dWFsIGRlc2NyaXB0aW9uIG9mIHRoZSB2aWRlbyBjb250ZW50LlxuICAgICogICBTdWl0YWJsZSBmb3IgdXNlcnMgd2hvIGFyZSBibGluZCBvciB3aGVyZSB0aGUgdmlkZW8gY2Fubm90IGJlIHNlZW4uXG4qICAgYGNoYXB0ZXJzYFxuICAgICogICBDaGFwdGVyIHRpdGxlcyBhcmUgaW50ZW5kZWQgdG8gYmUgdXNlZCB3aGVuIHRoZSB1c2VyIGlzIG5hdmlnYXRpbmcgdGhlIG1lZGlhIHJlc291cmNlLlxuKiAgIGBtZXRhZGF0YWBcbiAgICAqICAgVHJhY2tzIHVzZWQgYnkgc2NyaXB0cy4gTm90IHZpc2libGUgdG8gdGhlIHVzZXIuIn19LHtuYW1lOiJsYWJlbCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiQSB1c2VyLXJlYWRhYmxlIHRpdGxlIG9mIHRoZSB0ZXh0IHRyYWNrIHdoaWNoIGlzIHVzZWQgYnkgdGhlIGJyb3dzZXIgd2hlbiBsaXN0aW5nIGF2YWlsYWJsZSB0ZXh0IHRyYWNrcy4ifX0se25hbWU6InNyYyIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTonQWRkcmVzcyBvZiB0aGUgdHJhY2sgKGAudnR0YCBmaWxlKS4gTXVzdCBiZSBhIHZhbGlkIFVSTC4gVGhpcyBhdHRyaWJ1dGUgbXVzdCBiZSBzcGVjaWZpZWQgYW5kIGl0cyBVUkwgdmFsdWUgbXVzdCBoYXZlIHRoZSBzYW1lIG9yaWdpbiBhcyB0aGUgZG9jdW1lbnQg4oCUIHVubGVzcyB0aGUgW2A8YXVkaW8+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2F1ZGlvICJUaGUgSFRNTCA8YXVkaW8+IGVsZW1lbnQgaXMgdXNlZCB0byBlbWJlZCBzb3VuZCBjb250ZW50IGluIGRvY3VtZW50cy4gSXQgbWF5IGNvbnRhaW4gb25lIG9yIG1vcmUgYXVkaW8gc291cmNlcywgcmVwcmVzZW50ZWQgdXNpbmcgdGhlIHNyYyBhdHRyaWJ1dGUgb3IgdGhlIDxzb3VyY2U+IGVsZW1lbnQ6wqB0aGUgYnJvd3NlciB3aWxsIGNob29zZSB0aGUgbW9zdCBzdWl0YWJsZSBvbmUuIEl0IGNhbiBhbHNvIGJlIHRoZSBkZXN0aW5hdGlvbiBmb3Igc3RyZWFtZWQgbWVkaWEsIHVzaW5nIGEgTWVkaWFTdHJlYW0uIikgb3IgW2A8dmlkZW8+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3ZpZGVvICJUaGUgSFRNTCBWaWRlbyBlbGVtZW50ICg8dmlkZW8+KSBlbWJlZHMgYSBtZWRpYSBwbGF5ZXIgd2hpY2ggc3VwcG9ydHMgdmlkZW8gcGxheWJhY2sgaW50byB0aGUgZG9jdW1lbnQuIikgcGFyZW50IGVsZW1lbnQgb2YgdGhlIGB0cmFja2AgZWxlbWVudCBoYXMgYSBbYGNyb3Nzb3JpZ2luYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9DT1JTX3NldHRpbmdzX2F0dHJpYnV0ZXMpIGF0dHJpYnV0ZS4nfX0se25hbWU6InNyY2xhbmciLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6Ikxhbmd1YWdlIG9mIHRoZSB0cmFjayB0ZXh0IGRhdGEuIEl0IG11c3QgYmUgYSB2YWxpZCBbQkNQIDQ3XShodHRwczovL3IxMmEuZ2l0aHViLmlvL2FwcC1zdWJ0YWdzLykgbGFuZ3VhZ2UgdGFnLiBJZiB0aGUgYGtpbmRgIGF0dHJpYnV0ZSBpcyBzZXQgdG/CoGBzdWJ0aXRsZXMsYCB0aGVuIGBzcmNsYW5nYCBtdXN0IGJlIGRlZmluZWQuIn19XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvdHJhY2sifV19LHtuYW1lOiJtYXAiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBtYXAgZWxlbWVudCwgaW4gY29uanVuY3Rpb24gd2l0aCBhbiBpbWcgZWxlbWVudCBhbmQgYW55IGFyZWEgZWxlbWVudCBkZXNjZW5kYW50cywgZGVmaW5lcyBhbiBpbWFnZSBtYXAuIFRoZSBlbGVtZW50IHJlcHJlc2VudHMgaXRzIGNoaWxkcmVuLiJ9LGF0dHJpYnV0ZXM6W3tuYW1lOiJuYW1lIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgbmFtZSBhdHRyaWJ1dGUgZ2l2ZXMgdGhlIG1hcCBhIG5hbWUgc28gdGhhdCBpdCBjYW4gYmUgcmVmZXJlbmNlZC4gVGhlIGF0dHJpYnV0ZSBtdXN0IGJlIHByZXNlbnQgYW5kIG11c3QgaGF2ZSBhIG5vbi1lbXB0eSB2YWx1ZSB3aXRoIG5vIHNwYWNlIGNoYXJhY3RlcnMuIFRoZSB2YWx1ZSBvZiB0aGUgbmFtZSBhdHRyaWJ1dGUgbXVzdCBub3QgYmUgYSBjb21wYXRpYmlsaXR5LWNhc2VsZXNzIG1hdGNoIGZvciB0aGUgdmFsdWUgb2YgdGhlIG5hbWUgYXR0cmlidXRlIG9mIGFub3RoZXIgbWFwIGVsZW1lbnQgaW4gdGhlIHNhbWUgZG9jdW1lbnQuIElmIHRoZSBpZCBhdHRyaWJ1dGUgaXMgYWxzbyBzcGVjaWZpZWQsIGJvdGggYXR0cmlidXRlcyBtdXN0IGhhdmUgdGhlIHNhbWUgdmFsdWUuIn19XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvbWFwIn1dfSx7bmFtZToiYXJlYSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGFyZWEgZWxlbWVudCByZXByZXNlbnRzIGVpdGhlciBhIGh5cGVybGluayB3aXRoIHNvbWUgdGV4dCBhbmQgYSBjb3JyZXNwb25kaW5nIGFyZWEgb24gYW4gaW1hZ2UgbWFwLCBvciBhIGRlYWQgYXJlYSBvbiBhbiBpbWFnZSBtYXAuIn0sYXR0cmlidXRlczpbe25hbWU6ImFsdCJ9LHtuYW1lOiJjb29yZHMifSx7bmFtZToic2hhcGUiLHZhbHVlU2V0OiJzaCJ9LHtuYW1lOiJocmVmIn0se25hbWU6InRhcmdldCJ9LHtuYW1lOiJkb3dubG9hZCJ9LHtuYW1lOiJwaW5nIn0se25hbWU6InJlbCJ9LHtuYW1lOiJocmVmbGFuZyJ9LHtuYW1lOiJ0eXBlIn0se25hbWU6ImFjY2Vzc2tleSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIGtleWJvYXJkIG5hdmlnYXRpb24gYWNjZWxlcmF0b3IgZm9yIHRoZSBlbGVtZW50LiBQcmVzc2luZyBBTFQgb3IgYSBzaW1pbGFyIGtleSBpbiBhc3NvY2lhdGlvbiB3aXRoIHRoZSBzcGVjaWZpZWQgY2hhcmFjdGVyIHNlbGVjdHMgdGhlIGZvcm0gY29udHJvbCBjb3JyZWxhdGVkIHdpdGggdGhhdCBrZXkgc2VxdWVuY2UuIFBhZ2UgZGVzaWduZXJzIGFyZSBmb3Jld2FybmVkIHRvIGF2b2lkIGtleSBzZXF1ZW5jZXMgYWxyZWFkeSBib3VuZCB0byBicm93c2Vycy4gVGhpcyBhdHRyaWJ1dGUgaXMgZ2xvYmFsIHNpbmNlIEhUTUw1LiJ9XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvYXJlYSJ9XX0se25hbWU6InRhYmxlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgdGFibGUgZWxlbWVudCByZXByZXNlbnRzIGRhdGEgd2l0aCBtb3JlIHRoYW4gb25lIGRpbWVuc2lvbiwgaW4gdGhlIGZvcm0gb2YgYSB0YWJsZS4ifSxhdHRyaWJ1dGVzOlt7bmFtZToiYm9yZGVyIn0se25hbWU6ImFsaWduIixkZXNjcmlwdGlvbjonVGhpcyBlbnVtZXJhdGVkIGF0dHJpYnV0ZSBpbmRpY2F0ZXMgaG93IHRoZSB0YWJsZSBtdXN0IGJlIGFsaWduZWQgaW5zaWRlIHRoZSBjb250YWluaW5nIGRvY3VtZW50LiBJdCBtYXkgaGF2ZSB0aGUgZm9sbG93aW5nIHZhbHVlczpcblxuKiAgIGxlZnQ6IHRoZSB0YWJsZSBpcyBkaXNwbGF5ZWQgb24gdGhlIGxlZnQgc2lkZSBvZiB0aGUgZG9jdW1lbnQ7XG4qICAgY2VudGVyOiB0aGUgdGFibGUgaXMgZGlzcGxheWVkIGluIHRoZSBjZW50ZXIgb2YgdGhlIGRvY3VtZW50O1xuKiAgIHJpZ2h0OiB0aGUgdGFibGUgaXMgZGlzcGxheWVkIG9uIHRoZSByaWdodCBzaWRlIG9mIHRoZSBkb2N1bWVudC5cblxuKipVc2FnZSBOb3RlKipcblxuKiAgICoqRG8gbm90IHVzZSB0aGlzIGF0dHJpYnV0ZSoqLCBhcyBpdCBoYXMgYmVlbiBkZXByZWNhdGVkLiBUaGUgW2A8dGFibGU+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3RhYmxlICJUaGUgSFRNTCA8dGFibGU+IGVsZW1lbnQgcmVwcmVzZW50cyB0YWJ1bGFyIGRhdGEg4oCUIHRoYXQgaXMsIGluZm9ybWF0aW9uIHByZXNlbnRlZCBpbiBhIHR3by1kaW1lbnNpb25hbCB0YWJsZSBjb21wcmlzZWQgb2Ygcm93cyBhbmQgY29sdW1ucyBvZiBjZWxscyBjb250YWluaW5nIGRhdGEuIikgZWxlbWVudCBzaG91bGQgYmUgc3R5bGVkIHVzaW5nIFtDU1NdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvQ1NTKS4gU2V0IFtgbWFyZ2luLWxlZnRgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvbWFyZ2luLWxlZnQgIlRoZSBtYXJnaW4tbGVmdCBDU1MgcHJvcGVydHkgc2V0cyB0aGUgbWFyZ2luIGFyZWEgb24gdGhlIGxlZnQgc2lkZSBvZiBhbiBlbGVtZW50LiBBIHBvc2l0aXZlIHZhbHVlIHBsYWNlcyBpdCBmYXJ0aGVyIGZyb20gaXRzIG5laWdoYm9ycywgd2hpbGUgYSBuZWdhdGl2ZSB2YWx1ZSBwbGFjZXMgaXQgY2xvc2VyLiIpIGFuZCBbYG1hcmdpbi1yaWdodGBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9tYXJnaW4tcmlnaHQgIlRoZSBtYXJnaW4tcmlnaHQgQ1NTIHByb3BlcnR5IHNldHMgdGhlIG1hcmdpbiBhcmVhIG9uIHRoZSByaWdodCBzaWRlIG9mIGFuIGVsZW1lbnQuIEEgcG9zaXRpdmUgdmFsdWUgcGxhY2VzIGl0IGZhcnRoZXIgZnJvbSBpdHMgbmVpZ2hib3JzLCB3aGlsZSBhIG5lZ2F0aXZlIHZhbHVlIHBsYWNlcyBpdCBjbG9zZXIuIikgdG8gYGF1dG9gIG9yIFtgbWFyZ2luYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL21hcmdpbiAiVGhlIG1hcmdpbiBDU1MgcHJvcGVydHkgc2V0cyB0aGUgbWFyZ2luIGFyZWEgb24gYWxsIGZvdXIgc2lkZXMgb2YgYW4gZWxlbWVudC4gSXQgaXMgYSBzaG9ydGhhbmQgZm9yIG1hcmdpbi10b3AsIG1hcmdpbi1yaWdodCwgbWFyZ2luLWJvdHRvbSwgYW5kIG1hcmdpbi1sZWZ0LiIpIHRvIGAwIGF1dG9gIHRvIGFjaGlldmUgYW4gZWZmZWN0IHRoYXQgaXMgc2ltaWxhciB0byB0aGUgYWxpZ24gYXR0cmlidXRlLlxuKiAgIFByaW9yIHRvIEZpcmVmb3ggNCwgRmlyZWZveCBhbHNvIHN1cHBvcnRlZCB0aGUgYG1pZGRsZWAsIGBhYnNtaWRkbGVgLCBhbmQgYGFic2NlbnRlcmAgdmFsdWVzIGFzIHN5bm9ueW1zIG9mIGBjZW50ZXJgLCBpbiBxdWlya3MgbW9kZSBvbmx5Lid9XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvdGFibGUifV19LHtuYW1lOiJjYXB0aW9uIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgY2FwdGlvbiBlbGVtZW50IHJlcHJlc2VudHMgdGhlIHRpdGxlIG9mIHRoZSB0YWJsZSB0aGF0IGlzIGl0cyBwYXJlbnQsIGlmIGl0IGhhcyBhIHBhcmVudCBhbmQgdGhhdCBpcyBhIHRhYmxlIGVsZW1lbnQuIn0sYXR0cmlidXRlczpbe25hbWU6ImFsaWduIixkZXNjcmlwdGlvbjonVGhpcyBlbnVtZXJhdGVkIGF0dHJpYnV0ZSBpbmRpY2F0ZXMgaG93IHRoZSBjYXB0aW9uIG11c3QgYmUgYWxpZ25lZCB3aXRoIHJlc3BlY3QgdG8gdGhlIHRhYmxlLiBJdCBtYXkgaGF2ZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6XG5cbmBsZWZ0YFxuXG5UaGUgY2FwdGlvbiBpcyBkaXNwbGF5ZWQgdG8gdGhlIGxlZnQgb2YgdGhlIHRhYmxlLlxuXG5gdG9wYFxuXG5UaGUgY2FwdGlvbiBpcyBkaXNwbGF5ZWQgYWJvdmUgdGhlIHRhYmxlLlxuXG5gcmlnaHRgXG5cblRoZSBjYXB0aW9uIGlzIGRpc3BsYXllZCB0byB0aGUgcmlnaHQgb2YgdGhlIHRhYmxlLlxuXG5gYm90dG9tYFxuXG5UaGUgY2FwdGlvbiBpcyBkaXNwbGF5ZWQgYmVsb3cgdGhlIHRhYmxlLlxuXG4qKlVzYWdlIG5vdGU6KiogRG8gbm90IHVzZSB0aGlzIGF0dHJpYnV0ZSwgYXMgaXQgaGFzIGJlZW4gZGVwcmVjYXRlZC4gVGhlIFtgPGNhcHRpb24+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2NhcHRpb24gIlRoZSBIVE1MIFRhYmxlIENhcHRpb24gZWxlbWVudCAoPGNhcHRpb24+KSBzcGVjaWZpZXMgdGhlIGNhcHRpb24gKG9yIHRpdGxlKSBvZiBhIHRhYmxlLCBhbmQgaWYgdXNlZCBpcyBhbHdheXMgdGhlIGZpcnN0IGNoaWxkIG9mIGEgPHRhYmxlPi4iKSBlbGVtZW50IHNob3VsZCBiZSBzdHlsZWQgdXNpbmcgdGhlIFtDU1NdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvQ1NTKSBwcm9wZXJ0aWVzIFtgY2FwdGlvbi1zaWRlYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL2NhcHRpb24tc2lkZSAiVGhlIGNhcHRpb24tc2lkZSBDU1MgcHJvcGVydHkgcHV0cyB0aGUgY29udGVudCBvZiBhIHRhYmxlXCdzIDxjYXB0aW9uPiBvbiB0aGUgc3BlY2lmaWVkIHNpZGUuIFRoZSB2YWx1ZXMgYXJlIHJlbGF0aXZlIHRvIHRoZSB3cml0aW5nLW1vZGUgb2YgdGhlIHRhYmxlLiIpIGFuZCBbYHRleHQtYWxpZ25gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvdGV4dC1hbGlnbiAiVGhlIHRleHQtYWxpZ24gQ1NTIHByb3BlcnR5IHNldHMgdGhlIGhvcml6b250YWwgYWxpZ25tZW50IG9mIGFuIGlubGluZSBvciB0YWJsZS1jZWxsIGJveC4gVGhpcyBtZWFucyBpdCB3b3JrcyBsaWtlIHZlcnRpY2FsLWFsaWduIGJ1dCBpbiB0aGUgaG9yaXpvbnRhbCBkaXJlY3Rpb24uIikuJ31dLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9jYXB0aW9uIn1dfSx7bmFtZToiY29sZ3JvdXAiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBjb2xncm91cCBlbGVtZW50IHJlcHJlc2VudHMgYSBncm91cCBvZiBvbmUgb3IgbW9yZSBjb2x1bW5zIGluIHRoZSB0YWJsZSB0aGF0IGlzIGl0cyBwYXJlbnQsIGlmIGl0IGhhcyBhIHBhcmVudCBhbmQgdGhhdCBpcyBhIHRhYmxlIGVsZW1lbnQuIn0sYXR0cmlidXRlczpbe25hbWU6InNwYW4ifSx7bmFtZToiYWxpZ24iLGRlc2NyaXB0aW9uOidUaGlzIGVudW1lcmF0ZWQgYXR0cmlidXRlIHNwZWNpZmllcyBob3cgaG9yaXpvbnRhbCBhbGlnbm1lbnQgb2YgZWFjaCBjb2x1bW4gY2VsbCBjb250ZW50IHdpbGwgYmUgaGFuZGxlZC4gUG9zc2libGUgdmFsdWVzIGFyZTpcblxuKiAgIGBsZWZ0YCwgYWxpZ25pbmcgdGhlIGNvbnRlbnQgdG8gdGhlIGxlZnQgb2YgdGhlIGNlbGxcbiogICBgY2VudGVyYCwgY2VudGVyaW5nIHRoZSBjb250ZW50IGluIHRoZSBjZWxsXG4qICAgYHJpZ2h0YCwgYWxpZ25pbmcgdGhlIGNvbnRlbnQgdG8gdGhlIHJpZ2h0IG9mIHRoZSBjZWxsXG4qICAgYGp1c3RpZnlgLCBpbnNlcnRpbmcgc3BhY2VzIGludG8gdGhlIHRleHR1YWwgY29udGVudCBzbyB0aGF0IHRoZSBjb250ZW50IGlzIGp1c3RpZmllZCBpbiB0aGUgY2VsbFxuKiAgIGBjaGFyYCwgYWxpZ25pbmcgdGhlIHRleHR1YWwgY29udGVudCBvbiBhIHNwZWNpYWwgY2hhcmFjdGVyIHdpdGggYSBtaW5pbWFsIG9mZnNldCwgZGVmaW5lZCBieSB0aGUgW2BjaGFyYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2NvbCNhdHRyLWNoYXIpIGFuZCBbYGNoYXJvZmZgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvY29sI2F0dHItY2hhcm9mZikgYXR0cmlidXRlcyBVbmltcGxlbWVudGVkIChzZWUgW2J1Z8KgMjIxMl0oaHR0cHM6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxMiAiY2hhcmFjdGVyIGFsaWdubWVudCBub3QgaW1wbGVtZW50ZWQgKGFsaWduPWNoYXIsIGNoYXJvZmY9LCB0ZXh0LWFsaWduOjxzdHJpbmc+KSIpKS5cblxuSWYgdGhpcyBhdHRyaWJ1dGUgaXMgbm90IHNldCwgdGhlIGBsZWZ0YCB2YWx1ZSBpcyBhc3N1bWVkLiBUaGUgZGVzY2VuZGFudCBbYDxjb2w+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2NvbCAiVGhlIEhUTUwgPGNvbD4gZWxlbWVudCBkZWZpbmVzIGEgY29sdW1uIHdpdGhpbiBhIHRhYmxlIGFuZCBpcyB1c2VkIGZvciBkZWZpbmluZyBjb21tb24gc2VtYW50aWNzIG9uIGFsbCBjb21tb24gY2VsbHMuIEl0IGlzIGdlbmVyYWxseSBmb3VuZCB3aXRoaW4gYSA8Y29sZ3JvdXA+IGVsZW1lbnQuIikgZWxlbWVudHMgbWF5IG92ZXJyaWRlIHRoaXMgdmFsdWUgdXNpbmcgdGhlaXIgb3duIFtgYWxpZ25gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvY29sI2F0dHItYWxpZ24pIGF0dHJpYnV0ZS5cblxuKipOb3RlOioqIERvIG5vdCB1c2UgdGhpcyBhdHRyaWJ1dGUgYXMgaXQgaXMgb2Jzb2xldGUgKG5vdCBzdXBwb3J0ZWQpIGluIHRoZSBsYXRlc3Qgc3RhbmRhcmQuXG5cbiogICBUbyBhY2hpZXZlIHRoZSBzYW1lIGVmZmVjdCBhcyB0aGUgYGxlZnRgLCBgY2VudGVyYCwgYHJpZ2h0YCBvciBganVzdGlmeWAgdmFsdWVzOlxuICAgICogICBEbyBub3QgdHJ5IHRvIHNldCB0aGUgW2B0ZXh0LWFsaWduYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL3RleHQtYWxpZ24gIlRoZSB0ZXh0LWFsaWduIENTUyBwcm9wZXJ0eSBzZXRzIHRoZSBob3Jpem9udGFsIGFsaWdubWVudCBvZiBhbiBpbmxpbmUgb3IgdGFibGUtY2VsbCBib3guIFRoaXMgbWVhbnMgaXQgd29ya3MgbGlrZSB2ZXJ0aWNhbC1hbGlnbiBidXQgaW4gdGhlIGhvcml6b250YWwgZGlyZWN0aW9uLiIpIHByb3BlcnR5IG9uIGEgc2VsZWN0b3IgZ2l2aW5nIGEgW2A8Y29sZ3JvdXA+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2NvbGdyb3VwICJUaGUgSFRNTCA8Y29sZ3JvdXA+IGVsZW1lbnQgZGVmaW5lcyBhIGdyb3VwIG9mIGNvbHVtbnMgd2l0aGluIGEgdGFibGUuIikgZWxlbWVudC4gQmVjYXVzZSBbYDx0ZD5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvdGQgIlRoZSBIVE1MIDx0ZD4gZWxlbWVudCBkZWZpbmVzIGEgY2VsbCBvZiBhIHRhYmxlIHRoYXQgY29udGFpbnMgZGF0YS4gSXQgcGFydGljaXBhdGVzIGluIHRoZSB0YWJsZSBtb2RlbC4iKSBlbGVtZW50cyBhcmUgbm90IGRlc2NlbmRhbnQgb2YgdGhlIFtgPGNvbGdyb3VwPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9jb2xncm91cCAiVGhlIEhUTUwgPGNvbGdyb3VwPiBlbGVtZW50IGRlZmluZXMgYSBncm91cCBvZiBjb2x1bW5zIHdpdGhpbiBhIHRhYmxlLiIpIGVsZW1lbnQsIHRoZXkgd29uXCd0IGluaGVyaXQgaXQuXG4gICAgKiAgIElmIHRoZSB0YWJsZSBkb2VzblwndCB1c2UgYSBbYGNvbHNwYW5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvdGQjYXR0ci1jb2xzcGFuKSBhdHRyaWJ1dGUsIHVzZSBvbmUgYHRkOm50aC1jaGlsZChhbitiKWAgQ1NTIHNlbGVjdG9yIHBlciBjb2x1bW4sIHdoZXJlIGEgaXMgdGhlIHRvdGFsIG51bWJlciBvZiB0aGUgY29sdW1ucyBpbiB0aGUgdGFibGUgYW5kIGIgaXMgdGhlIG9yZGluYWwgcG9zaXRpb24gb2YgdGhpcyBjb2x1bW4gaW4gdGhlIHRhYmxlLiBPbmx5IGFmdGVyIHRoaXMgc2VsZWN0b3IgdGhlIFtgdGV4dC1hbGlnbmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy90ZXh0LWFsaWduICJUaGUgdGV4dC1hbGlnbiBDU1MgcHJvcGVydHkgc2V0cyB0aGUgaG9yaXpvbnRhbCBhbGlnbm1lbnQgb2YgYW4gaW5saW5lIG9yIHRhYmxlLWNlbGwgYm94LiBUaGlzIG1lYW5zIGl0IHdvcmtzIGxpa2UgdmVydGljYWwtYWxpZ24gYnV0IGluIHRoZSBob3Jpem9udGFsIGRpcmVjdGlvbi4iKSBwcm9wZXJ0eSBjYW4gYmUgdXNlZC5cbiAgICAqICAgSWYgdGhlIHRhYmxlIGRvZXMgdXNlIGEgW2Bjb2xzcGFuYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3RkI2F0dHItY29sc3BhbikgYXR0cmlidXRlLCB0aGUgZWZmZWN0IGNhbiBiZSBhY2hpZXZlZCBieSBjb21iaW5pbmcgYWRlcXVhdGUgQ1NTIGF0dHJpYnV0ZSBzZWxlY3RvcnMgbGlrZSBgW2NvbHNwYW49bl1gLCB0aG91Z2ggdGhpcyBpcyBub3QgdHJpdmlhbC5cbiogICBUbyBhY2hpZXZlIHRoZSBzYW1lIGVmZmVjdCBhcyB0aGUgYGNoYXJgIHZhbHVlLCBpbiBDU1MzLCB5b3UgY2FuIHVzZSB0aGUgdmFsdWUgb2YgdGhlIFtgY2hhcmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9jb2xncm91cCNhdHRyLWNoYXIpIGFzIHRoZSB2YWx1ZSBvZiB0aGUgW2B0ZXh0LWFsaWduYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL3RleHQtYWxpZ24gIlRoZSB0ZXh0LWFsaWduIENTUyBwcm9wZXJ0eSBzZXRzIHRoZSBob3Jpem9udGFsIGFsaWdubWVudCBvZiBhbiBpbmxpbmUgb3IgdGFibGUtY2VsbCBib3guIFRoaXMgbWVhbnMgaXQgd29ya3MgbGlrZSB2ZXJ0aWNhbC1hbGlnbiBidXQgaW4gdGhlIGhvcml6b250YWwgZGlyZWN0aW9uLiIpIHByb3BlcnR5IFVuaW1wbGVtZW50ZWQuJ31dLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9jb2xncm91cCJ9XX0se25hbWU6ImNvbCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiSWYgYSBjb2wgZWxlbWVudCBoYXMgYSBwYXJlbnQgYW5kIHRoYXQgaXMgYSBjb2xncm91cCBlbGVtZW50IHRoYXQgaXRzZWxmIGhhcyBhIHBhcmVudCB0aGF0IGlzIGEgdGFibGUgZWxlbWVudCwgdGhlbiB0aGUgY29sIGVsZW1lbnQgcmVwcmVzZW50cyBvbmUgb3IgbW9yZSBjb2x1bW5zIGluIHRoZSBjb2x1bW4gZ3JvdXAgcmVwcmVzZW50ZWQgYnkgdGhhdCBjb2xncm91cC4ifSxhdHRyaWJ1dGVzOlt7bmFtZToic3BhbiJ9LHtuYW1lOiJhbGlnbiIsZGVzY3JpcHRpb246J1RoaXMgZW51bWVyYXRlZCBhdHRyaWJ1dGUgc3BlY2lmaWVzIGhvdyBob3Jpem9udGFsIGFsaWdubWVudCBvZiBlYWNoIGNvbHVtbiBjZWxsIGNvbnRlbnQgd2lsbCBiZSBoYW5kbGVkLiBQb3NzaWJsZSB2YWx1ZXMgYXJlOlxuXG4qICAgYGxlZnRgLCBhbGlnbmluZyB0aGUgY29udGVudCB0byB0aGUgbGVmdCBvZiB0aGUgY2VsbFxuKiAgIGBjZW50ZXJgLCBjZW50ZXJpbmcgdGhlIGNvbnRlbnQgaW4gdGhlIGNlbGxcbiogICBgcmlnaHRgLCBhbGlnbmluZyB0aGUgY29udGVudCB0byB0aGUgcmlnaHQgb2YgdGhlIGNlbGxcbiogICBganVzdGlmeWAsIGluc2VydGluZyBzcGFjZXMgaW50byB0aGUgdGV4dHVhbCBjb250ZW50IHNvIHRoYXQgdGhlIGNvbnRlbnQgaXMganVzdGlmaWVkIGluIHRoZSBjZWxsXG4qICAgYGNoYXJgLCBhbGlnbmluZyB0aGUgdGV4dHVhbCBjb250ZW50IG9uIGEgc3BlY2lhbCBjaGFyYWN0ZXIgd2l0aCBhIG1pbmltYWwgb2Zmc2V0LCBkZWZpbmVkIGJ5IHRoZSBbYGNoYXJgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvY29sI2F0dHItY2hhcikgYW5kIFtgY2hhcm9mZmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9jb2wjYXR0ci1jaGFyb2ZmKSBhdHRyaWJ1dGVzIFVuaW1wbGVtZW50ZWQgKHNlZSBbYnVnwqAyMjEyXShodHRwczovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjEyICJjaGFyYWN0ZXIgYWxpZ25tZW50IG5vdCBpbXBsZW1lbnRlZCAoYWxpZ249Y2hhciwgY2hhcm9mZj0sIHRleHQtYWxpZ246PHN0cmluZz4pIikpLlxuXG5JZiB0aGlzIGF0dHJpYnV0ZSBpcyBub3Qgc2V0LCBpdHMgdmFsdWUgaXMgaW5oZXJpdGVkIGZyb20gdGhlIFtgYWxpZ25gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvY29sZ3JvdXAjYXR0ci1hbGlnbikgb2YgdGhlIFtgPGNvbGdyb3VwPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9jb2xncm91cCAiVGhlIEhUTUwgPGNvbGdyb3VwPiBlbGVtZW50IGRlZmluZXMgYSBncm91cCBvZiBjb2x1bW5zIHdpdGhpbiBhIHRhYmxlLiIpIGVsZW1lbnQgdGhpcyBgPGNvbD5gIGVsZW1lbnQgYmVsb25ncyB0b28uIElmIHRoZXJlIGFyZSBub25lLCB0aGUgYGxlZnRgIHZhbHVlIGlzIGFzc3VtZWQuXG5cbioqTm90ZToqKiBEbyBub3QgdXNlIHRoaXMgYXR0cmlidXRlIGFzIGl0IGlzIG9ic29sZXRlIChub3Qgc3VwcG9ydGVkKSBpbiB0aGUgbGF0ZXN0IHN0YW5kYXJkLlxuXG4qICAgVG8gYWNoaWV2ZSB0aGUgc2FtZSBlZmZlY3QgYXMgdGhlIGBsZWZ0YCwgYGNlbnRlcmAsIGByaWdodGAgb3IgYGp1c3RpZnlgIHZhbHVlczpcbiAgICAqICAgRG8gbm90IHRyeSB0byBzZXQgdGhlIFtgdGV4dC1hbGlnbmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy90ZXh0LWFsaWduICJUaGUgdGV4dC1hbGlnbiBDU1MgcHJvcGVydHkgc2V0cyB0aGUgaG9yaXpvbnRhbCBhbGlnbm1lbnQgb2YgYW4gaW5saW5lIG9yIHRhYmxlLWNlbGwgYm94LiBUaGlzIG1lYW5zIGl0IHdvcmtzIGxpa2UgdmVydGljYWwtYWxpZ24gYnV0IGluIHRoZSBob3Jpem9udGFsIGRpcmVjdGlvbi4iKSBwcm9wZXJ0eSBvbiBhIHNlbGVjdG9yIGdpdmluZyBhIFtgPGNvbD5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvY29sICJUaGUgSFRNTCA8Y29sPiBlbGVtZW50IGRlZmluZXMgYSBjb2x1bW4gd2l0aGluIGEgdGFibGUgYW5kIGlzIHVzZWQgZm9yIGRlZmluaW5nIGNvbW1vbiBzZW1hbnRpY3Mgb24gYWxsIGNvbW1vbiBjZWxscy4gSXQgaXMgZ2VuZXJhbGx5IGZvdW5kIHdpdGhpbiBhIDxjb2xncm91cD4gZWxlbWVudC4iKSBlbGVtZW50LiBCZWNhdXNlIFtgPHRkPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC90ZCAiVGhlIEhUTUwgPHRkPiBlbGVtZW50IGRlZmluZXMgYSBjZWxsIG9mIGEgdGFibGUgdGhhdCBjb250YWlucyBkYXRhLiBJdCBwYXJ0aWNpcGF0ZXMgaW4gdGhlIHRhYmxlIG1vZGVsLiIpIGVsZW1lbnRzIGFyZSBub3QgZGVzY2VuZGFudCBvZiB0aGUgW2A8Y29sPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9jb2wgIlRoZSBIVE1MIDxjb2w+IGVsZW1lbnQgZGVmaW5lcyBhIGNvbHVtbiB3aXRoaW4gYSB0YWJsZSBhbmQgaXMgdXNlZCBmb3IgZGVmaW5pbmcgY29tbW9uIHNlbWFudGljcyBvbiBhbGwgY29tbW9uIGNlbGxzLiBJdCBpcyBnZW5lcmFsbHkgZm91bmQgd2l0aGluIGEgPGNvbGdyb3VwPiBlbGVtZW50LiIpIGVsZW1lbnQsIHRoZXkgd29uXCd0IGluaGVyaXQgaXQuXG4gICAgKiAgIElmIHRoZSB0YWJsZSBkb2VzblwndCB1c2UgYSBbYGNvbHNwYW5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvdGQjYXR0ci1jb2xzcGFuKSBhdHRyaWJ1dGUsIHVzZSB0aGUgYHRkOm50aC1jaGlsZChhbitiKWAgQ1NTIHNlbGVjdG9yLiBTZXQgYGFgIHRvIHplcm8gYW5kIGBiYCB0byB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbiBpbiB0aGUgdGFibGUsIGUuZy4gYHRkOm50aC1jaGlsZCgyKSB7IHRleHQtYWxpZ246IHJpZ2h0OyB9YCB0byByaWdodC1hbGlnbiB0aGUgc2Vjb25kIGNvbHVtbi5cbiAgICAqICAgSWYgdGhlIHRhYmxlIGRvZXMgdXNlIGEgW2Bjb2xzcGFuYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3RkI2F0dHItY29sc3BhbikgYXR0cmlidXRlLCB0aGUgZWZmZWN0IGNhbiBiZSBhY2hpZXZlZCBieSBjb21iaW5pbmcgYWRlcXVhdGUgQ1NTIGF0dHJpYnV0ZSBzZWxlY3RvcnMgbGlrZSBgW2NvbHNwYW49bl1gLCB0aG91Z2ggdGhpcyBpcyBub3QgdHJpdmlhbC5cbiogICBUbyBhY2hpZXZlIHRoZSBzYW1lIGVmZmVjdCBhcyB0aGUgYGNoYXJgIHZhbHVlLCBpbiBDU1MzLCB5b3UgY2FuIHVzZSB0aGUgdmFsdWUgb2YgdGhlIFtgY2hhcmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9jb2wjYXR0ci1jaGFyKSBhcyB0aGUgdmFsdWUgb2YgdGhlIFtgdGV4dC1hbGlnbmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy90ZXh0LWFsaWduICJUaGUgdGV4dC1hbGlnbiBDU1MgcHJvcGVydHkgc2V0cyB0aGUgaG9yaXpvbnRhbCBhbGlnbm1lbnQgb2YgYW4gaW5saW5lIG9yIHRhYmxlLWNlbGwgYm94LiBUaGlzIG1lYW5zIGl0IHdvcmtzIGxpa2UgdmVydGljYWwtYWxpZ24gYnV0IGluIHRoZSBob3Jpem9udGFsIGRpcmVjdGlvbi4iKSBwcm9wZXJ0eSBVbmltcGxlbWVudGVkLid9XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvY29sIn1dfSx7bmFtZToidGJvZHkiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSB0Ym9keSBlbGVtZW50IHJlcHJlc2VudHMgYSBibG9jayBvZiByb3dzIHRoYXQgY29uc2lzdCBvZiBhIGJvZHkgb2YgZGF0YSBmb3IgdGhlIHBhcmVudCB0YWJsZSBlbGVtZW50LCBpZiB0aGUgdGJvZHkgZWxlbWVudCBoYXMgYSBwYXJlbnQgYW5kIGl0IGlzIGEgdGFibGUuIn0sYXR0cmlidXRlczpbe25hbWU6ImFsaWduIixkZXNjcmlwdGlvbjonVGhpcyBlbnVtZXJhdGVkIGF0dHJpYnV0ZSBzcGVjaWZpZXMgaG93IGhvcml6b250YWwgYWxpZ25tZW50IG9mIGVhY2ggY2VsbCBjb250ZW50IHdpbGwgYmUgaGFuZGxlZC4gUG9zc2libGUgdmFsdWVzIGFyZTpcblxuKiAgIGBsZWZ0YCwgYWxpZ25pbmcgdGhlIGNvbnRlbnQgdG8gdGhlIGxlZnQgb2YgdGhlIGNlbGxcbiogICBgY2VudGVyYCwgY2VudGVyaW5nIHRoZSBjb250ZW50IGluIHRoZSBjZWxsXG4qICAgYHJpZ2h0YCwgYWxpZ25pbmcgdGhlIGNvbnRlbnQgdG8gdGhlIHJpZ2h0IG9mIHRoZSBjZWxsXG4qICAgYGp1c3RpZnlgLCBpbnNlcnRpbmcgc3BhY2VzIGludG8gdGhlIHRleHR1YWwgY29udGVudCBzbyB0aGF0IHRoZSBjb250ZW50IGlzIGp1c3RpZmllZCBpbiB0aGUgY2VsbFxuKiAgIGBjaGFyYCwgYWxpZ25pbmcgdGhlIHRleHR1YWwgY29udGVudCBvbiBhIHNwZWNpYWwgY2hhcmFjdGVyIHdpdGggYSBtaW5pbWFsIG9mZnNldCwgZGVmaW5lZCBieSB0aGUgW2BjaGFyYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3Rib2R5I2F0dHItY2hhcikgYW5kIFtgY2hhcm9mZmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC90Ym9keSNhdHRyLWNoYXJvZmYpIGF0dHJpYnV0ZXMuXG5cbklmIHRoaXMgYXR0cmlidXRlIGlzIG5vdCBzZXQsIHRoZSBgbGVmdGAgdmFsdWUgaXMgYXNzdW1lZC5cblxuKipOb3RlOioqIERvIG5vdCB1c2UgdGhpcyBhdHRyaWJ1dGUgYXMgaXQgaXMgb2Jzb2xldGUgKG5vdCBzdXBwb3J0ZWQpIGluIHRoZSBsYXRlc3Qgc3RhbmRhcmQuXG5cbiogICBUbyBhY2hpZXZlIHRoZSBzYW1lIGVmZmVjdCBhcyB0aGUgYGxlZnRgLCBgY2VudGVyYCwgYHJpZ2h0YCBvciBganVzdGlmeWAgdmFsdWVzLCB1c2UgdGhlIENTUyBbYHRleHQtYWxpZ25gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvdGV4dC1hbGlnbiAiVGhlIHRleHQtYWxpZ24gQ1NTIHByb3BlcnR5IHNldHMgdGhlIGhvcml6b250YWwgYWxpZ25tZW50IG9mIGFuIGlubGluZSBvciB0YWJsZS1jZWxsIGJveC4gVGhpcyBtZWFucyBpdCB3b3JrcyBsaWtlIHZlcnRpY2FsLWFsaWduIGJ1dCBpbiB0aGUgaG9yaXpvbnRhbCBkaXJlY3Rpb24uIikgcHJvcGVydHkgb24gaXQuXG4qICAgVG8gYWNoaWV2ZSB0aGUgc2FtZSBlZmZlY3QgYXMgdGhlIGBjaGFyYCB2YWx1ZSwgaW4gQ1NTMywgeW91IGNhbiB1c2UgdGhlIHZhbHVlIG9mIHRoZSBbYGNoYXJgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvdGJvZHkjYXR0ci1jaGFyKSBhcyB0aGUgdmFsdWUgb2YgdGhlIFtgdGV4dC1hbGlnbmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy90ZXh0LWFsaWduICJUaGUgdGV4dC1hbGlnbiBDU1MgcHJvcGVydHkgc2V0cyB0aGUgaG9yaXpvbnRhbCBhbGlnbm1lbnQgb2YgYW4gaW5saW5lIG9yIHRhYmxlLWNlbGwgYm94LiBUaGlzIG1lYW5zIGl0IHdvcmtzIGxpa2UgdmVydGljYWwtYWxpZ24gYnV0IGluIHRoZSBob3Jpem9udGFsIGRpcmVjdGlvbi4iKSBwcm9wZXJ0eSBVbmltcGxlbWVudGVkLid9XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvdGJvZHkifV19LHtuYW1lOiJ0aGVhZCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHRoZWFkIGVsZW1lbnQgcmVwcmVzZW50cyB0aGUgYmxvY2sgb2Ygcm93cyB0aGF0IGNvbnNpc3Qgb2YgdGhlIGNvbHVtbiBsYWJlbHMgKGhlYWRlcnMpIGZvciB0aGUgcGFyZW50IHRhYmxlIGVsZW1lbnQsIGlmIHRoZSB0aGVhZCBlbGVtZW50IGhhcyBhIHBhcmVudCBhbmQgaXQgaXMgYSB0YWJsZS4ifSxhdHRyaWJ1dGVzOlt7bmFtZToiYWxpZ24iLGRlc2NyaXB0aW9uOidUaGlzIGVudW1lcmF0ZWQgYXR0cmlidXRlIHNwZWNpZmllcyBob3cgaG9yaXpvbnRhbCBhbGlnbm1lbnQgb2YgZWFjaCBjZWxsIGNvbnRlbnQgd2lsbCBiZSBoYW5kbGVkLiBQb3NzaWJsZSB2YWx1ZXMgYXJlOlxuXG4qICAgYGxlZnRgLCBhbGlnbmluZyB0aGUgY29udGVudCB0byB0aGUgbGVmdCBvZiB0aGUgY2VsbFxuKiAgIGBjZW50ZXJgLCBjZW50ZXJpbmcgdGhlIGNvbnRlbnQgaW4gdGhlIGNlbGxcbiogICBgcmlnaHRgLCBhbGlnbmluZyB0aGUgY29udGVudCB0byB0aGUgcmlnaHQgb2YgdGhlIGNlbGxcbiogICBganVzdGlmeWAsIGluc2VydGluZyBzcGFjZXMgaW50byB0aGUgdGV4dHVhbCBjb250ZW50IHNvIHRoYXQgdGhlIGNvbnRlbnQgaXMganVzdGlmaWVkIGluIHRoZSBjZWxsXG4qICAgYGNoYXJgLCBhbGlnbmluZyB0aGUgdGV4dHVhbCBjb250ZW50IG9uIGEgc3BlY2lhbCBjaGFyYWN0ZXIgd2l0aCBhIG1pbmltYWwgb2Zmc2V0LCBkZWZpbmVkIGJ5IHRoZSBbYGNoYXJgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvdGhlYWQjYXR0ci1jaGFyKSBhbmQgW2BjaGFyb2ZmYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3RoZWFkI2F0dHItY2hhcm9mZikgYXR0cmlidXRlcyBVbmltcGxlbWVudGVkIChzZWUgW2J1Z8KgMjIxMl0oaHR0cHM6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxMiAiY2hhcmFjdGVyIGFsaWdubWVudCBub3QgaW1wbGVtZW50ZWQgKGFsaWduPWNoYXIsIGNoYXJvZmY9LCB0ZXh0LWFsaWduOjxzdHJpbmc+KSIpKS5cblxuSWYgdGhpcyBhdHRyaWJ1dGUgaXMgbm90IHNldCwgdGhlIGBsZWZ0YCB2YWx1ZSBpcyBhc3N1bWVkLlxuXG4qKk5vdGU6KiogRG8gbm90IHVzZSB0aGlzIGF0dHJpYnV0ZSBhcyBpdCBpcyBvYnNvbGV0ZSAobm90IHN1cHBvcnRlZCkgaW4gdGhlIGxhdGVzdCBzdGFuZGFyZC5cblxuKiAgIFRvIGFjaGlldmUgdGhlIHNhbWUgZWZmZWN0IGFzIHRoZSBgbGVmdGAsIGBjZW50ZXJgLCBgcmlnaHRgIG9yIGBqdXN0aWZ5YCB2YWx1ZXMsIHVzZSB0aGUgQ1NTIFtgdGV4dC1hbGlnbmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy90ZXh0LWFsaWduICJUaGUgdGV4dC1hbGlnbiBDU1MgcHJvcGVydHkgc2V0cyB0aGUgaG9yaXpvbnRhbCBhbGlnbm1lbnQgb2YgYW4gaW5saW5lIG9yIHRhYmxlLWNlbGwgYm94LiBUaGlzIG1lYW5zIGl0IHdvcmtzIGxpa2UgdmVydGljYWwtYWxpZ24gYnV0IGluIHRoZSBob3Jpem9udGFsIGRpcmVjdGlvbi4iKSBwcm9wZXJ0eSBvbiBpdC5cbiogICBUbyBhY2hpZXZlIHRoZSBzYW1lIGVmZmVjdCBhcyB0aGUgYGNoYXJgIHZhbHVlLCBpbiBDU1MzLCB5b3UgY2FuIHVzZSB0aGUgdmFsdWUgb2YgdGhlIFtgY2hhcmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC90aGVhZCNhdHRyLWNoYXIpIGFzIHRoZSB2YWx1ZSBvZiB0aGUgW2B0ZXh0LWFsaWduYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL3RleHQtYWxpZ24gIlRoZSB0ZXh0LWFsaWduIENTUyBwcm9wZXJ0eSBzZXRzIHRoZSBob3Jpem9udGFsIGFsaWdubWVudCBvZiBhbiBpbmxpbmUgb3IgdGFibGUtY2VsbCBib3guIFRoaXMgbWVhbnMgaXQgd29ya3MgbGlrZSB2ZXJ0aWNhbC1hbGlnbiBidXQgaW4gdGhlIGhvcml6b250YWwgZGlyZWN0aW9uLiIpIHByb3BlcnR5IFVuaW1wbGVtZW50ZWQuJ31dLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC90aGVhZCJ9XX0se25hbWU6InRmb290IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgdGZvb3QgZWxlbWVudCByZXByZXNlbnRzIHRoZSBibG9jayBvZiByb3dzIHRoYXQgY29uc2lzdCBvZiB0aGUgY29sdW1uIHN1bW1hcmllcyAoZm9vdGVycykgZm9yIHRoZSBwYXJlbnQgdGFibGUgZWxlbWVudCwgaWYgdGhlIHRmb290IGVsZW1lbnQgaGFzIGEgcGFyZW50IGFuZCBpdCBpcyBhIHRhYmxlLiJ9LGF0dHJpYnV0ZXM6W3tuYW1lOiJhbGlnbiIsZGVzY3JpcHRpb246J1RoaXMgZW51bWVyYXRlZCBhdHRyaWJ1dGUgc3BlY2lmaWVzIGhvdyBob3Jpem9udGFsIGFsaWdubWVudCBvZiBlYWNoIGNlbGwgY29udGVudCB3aWxsIGJlIGhhbmRsZWQuIFBvc3NpYmxlIHZhbHVlcyBhcmU6XG5cbiogICBgbGVmdGAsIGFsaWduaW5nIHRoZSBjb250ZW50IHRvIHRoZSBsZWZ0IG9mIHRoZSBjZWxsXG4qICAgYGNlbnRlcmAsIGNlbnRlcmluZyB0aGUgY29udGVudCBpbiB0aGUgY2VsbFxuKiAgIGByaWdodGAsIGFsaWduaW5nIHRoZSBjb250ZW50IHRvIHRoZSByaWdodCBvZiB0aGUgY2VsbFxuKiAgIGBqdXN0aWZ5YCwgaW5zZXJ0aW5nIHNwYWNlcyBpbnRvIHRoZSB0ZXh0dWFsIGNvbnRlbnQgc28gdGhhdCB0aGUgY29udGVudCBpcyBqdXN0aWZpZWQgaW4gdGhlIGNlbGxcbiogICBgY2hhcmAsIGFsaWduaW5nIHRoZSB0ZXh0dWFsIGNvbnRlbnQgb24gYSBzcGVjaWFsIGNoYXJhY3RlciB3aXRoIGEgbWluaW1hbCBvZmZzZXQsIGRlZmluZWQgYnkgdGhlIFtgY2hhcmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC90Ym9keSNhdHRyLWNoYXIpIGFuZCBbYGNoYXJvZmZgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvdGJvZHkjYXR0ci1jaGFyb2ZmKSBhdHRyaWJ1dGVzIFVuaW1wbGVtZW50ZWQgKHNlZSBbYnVnwqAyMjEyXShodHRwczovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjEyICJjaGFyYWN0ZXIgYWxpZ25tZW50IG5vdCBpbXBsZW1lbnRlZCAoYWxpZ249Y2hhciwgY2hhcm9mZj0sIHRleHQtYWxpZ246PHN0cmluZz4pIikpLlxuXG5JZiB0aGlzIGF0dHJpYnV0ZSBpcyBub3Qgc2V0LCB0aGUgYGxlZnRgIHZhbHVlIGlzIGFzc3VtZWQuXG5cbioqTm90ZToqKiBEbyBub3QgdXNlIHRoaXMgYXR0cmlidXRlIGFzIGl0IGlzIG9ic29sZXRlIChub3Qgc3VwcG9ydGVkKSBpbiB0aGUgbGF0ZXN0IHN0YW5kYXJkLlxuXG4qICAgVG8gYWNoaWV2ZSB0aGUgc2FtZSBlZmZlY3QgYXMgdGhlIGBsZWZ0YCwgYGNlbnRlcmAsIGByaWdodGAgb3IgYGp1c3RpZnlgIHZhbHVlcywgdXNlIHRoZSBDU1MgW2B0ZXh0LWFsaWduYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL3RleHQtYWxpZ24gIlRoZSB0ZXh0LWFsaWduIENTUyBwcm9wZXJ0eSBzZXRzIHRoZSBob3Jpem9udGFsIGFsaWdubWVudCBvZiBhbiBpbmxpbmUgb3IgdGFibGUtY2VsbCBib3guIFRoaXMgbWVhbnMgaXQgd29ya3MgbGlrZSB2ZXJ0aWNhbC1hbGlnbiBidXQgaW4gdGhlIGhvcml6b250YWwgZGlyZWN0aW9uLiIpIHByb3BlcnR5IG9uIGl0LlxuKiAgIFRvIGFjaGlldmUgdGhlIHNhbWUgZWZmZWN0IGFzIHRoZSBgY2hhcmAgdmFsdWUsIGluIENTUzMsIHlvdSBjYW4gdXNlIHRoZSB2YWx1ZSBvZiB0aGUgW2BjaGFyYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3Rmb290I2F0dHItY2hhcikgYXMgdGhlIHZhbHVlIG9mIHRoZSBbYHRleHQtYWxpZ25gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvdGV4dC1hbGlnbiAiVGhlIHRleHQtYWxpZ24gQ1NTIHByb3BlcnR5IHNldHMgdGhlIGhvcml6b250YWwgYWxpZ25tZW50IG9mIGFuIGlubGluZSBvciB0YWJsZS1jZWxsIGJveC4gVGhpcyBtZWFucyBpdCB3b3JrcyBsaWtlIHZlcnRpY2FsLWFsaWduIGJ1dCBpbiB0aGUgaG9yaXpvbnRhbCBkaXJlY3Rpb24uIikgcHJvcGVydHkgVW5pbXBsZW1lbnRlZC4nfV0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3Rmb290In1dfSx7bmFtZToidHIiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSB0ciBlbGVtZW50IHJlcHJlc2VudHMgYSByb3cgb2YgY2VsbHMgaW4gYSB0YWJsZS4ifSxhdHRyaWJ1dGVzOlt7bmFtZToiYWxpZ24iLGRlc2NyaXB0aW9uOidBIFtgRE9NU3RyaW5nYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL0RPTVN0cmluZyAiRE9NU3RyaW5nIGlzIGEgVVRGLTE2IFN0cmluZy4gQXMgSmF2YVNjcmlwdCBhbHJlYWR5IHVzZXMgc3VjaCBzdHJpbmdzLCBET01TdHJpbmcgaXMgbWFwcGVkIGRpcmVjdGx5IHRvIGEgU3RyaW5nLiIpIHdoaWNoIHNwZWNpZmllcyBob3cgdGhlIGNlbGxcJ3MgY29udGV4dCBzaG91bGQgYmUgYWxpZ25lZCBob3Jpem9udGFsbHkgd2l0aGluIHRoZSBjZWxscyBpbiB0aGUgcm93OyB0aGlzIGlzIHNob3J0aGFuZCBmb3IgdXNpbmcgYGFsaWduYCBvbiBldmVyeSBjZWxsIGluIHRoZSByb3cgaW5kaXZpZHVhbGx5LiBQb3NzaWJsZSB2YWx1ZXMgYXJlOlxuXG5gbGVmdGBcblxuQWxpZ24gdGhlIGNvbnRlbnQgb2YgZWFjaCBjZWxsIGF0IGl0cyBsZWZ0IGVkZ2UuXG5cbmBjZW50ZXJgXG5cbkNlbnRlciB0aGUgY29udGVudHMgb2YgZWFjaCBjZWxsIGJldHdlZW4gdGhlaXIgbGVmdCBhbmQgcmlnaHQgZWRnZXMuXG5cbmByaWdodGBcblxuQWxpZ24gdGhlIGNvbnRlbnQgb2YgZWFjaCBjZWxsIGF0IGl0cyByaWdodCBlZGdlLlxuXG5ganVzdGlmeWBcblxuV2lkZW4gd2hpdGVzcGFjZXMgd2l0aGluIHRoZSB0ZXh0IG9mIGVhY2ggY2VsbCBzbyB0aGF0IHRoZSB0ZXh0IGZpbGxzIHRoZSBmdWxsIHdpZHRoIG9mIGVhY2ggY2VsbCAoZnVsbCBqdXN0aWZpY2F0aW9uKS5cblxuYGNoYXJgXG5cbkFsaWduIGVhY2ggY2VsbCBpbiB0aGUgcm93IG9uIGEgc3BlY2lmaWMgY2hhcmFjdGVyIChzdWNoIHRoYXQgZWFjaCByb3cgaW4gdGhlIGNvbHVtbiB0aGF0IGlzIGNvbmZpZ3VyZWQgdGhpcyB3YXkgd2lsbCBob3Jpem9udGFsbHkgYWxpZ24gaXRzIGNlbGxzIG9uIHRoYXQgY2hhcmFjdGVyKS4gVGhpcyB1c2VzIHRoZSBbYGNoYXJgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvdHIjYXR0ci1jaGFyKSBhbmQgW2BjaGFyb2ZmYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3RyI2F0dHItY2hhcm9mZikgdG8gZXN0YWJsaXNoIHRoZSBhbGlnbm1lbnQgY2hhcmFjdGVyICh0eXBpY2FsbHkgIi4iIG9yICIsIiB3aGVuIGFsaWduaW5nIG51bWVyaWNhbCBkYXRhKSBhbmQgdGhlIG51bWJlciBvZiBjaGFyYWN0ZXJzIHRoYXQgc2hvdWxkIGZvbGxvdyB0aGUgYWxpZ25tZW50IGNoYXJhY3Rlci4gVGhpcyBhbGlnbm1lbnQgdHlwZSB3YXMgbmV2ZXIgd2lkZWx5IHN1cHBvcnRlZC5cblxuSWYgbm8gdmFsdWUgaXMgZXhwcmVzc2x5IHNldCBmb3IgYGFsaWduYCwgdGhlIHBhcmVudCBub2RlXCdzIHZhbHVlIGlzIGluaGVyaXRlZC5cblxuSW5zdGVhZCBvZiB1c2luZyB0aGUgb2Jzb2xldGUgYGFsaWduYCBhdHRyaWJ1dGUsIHlvdSBzaG91bGQgaW5zdGVhZCB1c2UgdGhlIENTUyBbYHRleHQtYWxpZ25gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvdGV4dC1hbGlnbiAiVGhlIHRleHQtYWxpZ24gQ1NTIHByb3BlcnR5IHNldHMgdGhlIGhvcml6b250YWwgYWxpZ25tZW50IG9mIGFuIGlubGluZSBvciB0YWJsZS1jZWxsIGJveC4gVGhpcyBtZWFucyBpdCB3b3JrcyBsaWtlIHZlcnRpY2FsLWFsaWduIGJ1dCBpbiB0aGUgaG9yaXpvbnRhbCBkaXJlY3Rpb24uIikgcHJvcGVydHkgdG8gZXN0YWJsaXNoIGBsZWZ0YCwgYGNlbnRlcmAsIGByaWdodGAsIG9yIGBqdXN0aWZ5YCBhbGlnbm1lbnQgZm9yIHRoZSByb3dcJ3MgY2VsbHMuIFRvIGFwcGx5IGNoYXJhY3Rlci1iYXNlZCBhbGlnbm1lbnQsIHNldCB0aGUgQ1NTIFtgdGV4dC1hbGlnbmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy90ZXh0LWFsaWduICJUaGUgdGV4dC1hbGlnbiBDU1MgcHJvcGVydHkgc2V0cyB0aGUgaG9yaXpvbnRhbCBhbGlnbm1lbnQgb2YgYW4gaW5saW5lIG9yIHRhYmxlLWNlbGwgYm94LiBUaGlzIG1lYW5zIGl0IHdvcmtzIGxpa2UgdmVydGljYWwtYWxpZ24gYnV0IGluIHRoZSBob3Jpem9udGFsIGRpcmVjdGlvbi4iKSBwcm9wZXJ0eSB0byB0aGUgYWxpZ25tZW50IGNoYXJhY3RlciAoc3VjaCBhcyBgIi4iYCBvciBgIiwiYCkuJ31dLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC90ciJ9XX0se25hbWU6InRkIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgdGQgZWxlbWVudCByZXByZXNlbnRzIGEgZGF0YSBjZWxsIGluIGEgdGFibGUuIn0sYXR0cmlidXRlczpbe25hbWU6ImNvbHNwYW4ifSx7bmFtZToicm93c3BhbiJ9LHtuYW1lOiJoZWFkZXJzIn0se25hbWU6ImFiYnIiLGRlc2NyaXB0aW9uOiJUaGlzIGF0dHJpYnV0ZSBjb250YWlucyBhIHNob3J0IGFiYnJldmlhdGVkIGRlc2NyaXB0aW9uIG9mIHRoZSBjZWxsJ3MgY29udGVudC4gU29tZSB1c2VyLWFnZW50cywgc3VjaCBhcyBzcGVlY2ggcmVhZGVycywgbWF5IHByZXNlbnQgdGhpcyBkZXNjcmlwdGlvbiBiZWZvcmUgdGhlIGNvbnRlbnQgaXRzZWxmLlxuXG4qKk5vdGU6KiogRG8gbm90IHVzZSB0aGlzIGF0dHJpYnV0ZSBhcyBpdCBpcyBvYnNvbGV0ZSBpbiB0aGUgbGF0ZXN0IHN0YW5kYXJkLiBBbHRlcm5hdGl2ZWx5LCB5b3UgY2FuIHB1dCB0aGUgYWJicmV2aWF0ZWQgZGVzY3JpcHRpb24gaW5zaWRlIHRoZSBjZWxsIGFuZCBwbGFjZSB0aGUgbG9uZyBjb250ZW50IGluIHRoZSAqKnRpdGxlKiogYXR0cmlidXRlLiJ9LHtuYW1lOiJhbGlnbiIsZGVzY3JpcHRpb246J1RoaXMgZW51bWVyYXRlZCBhdHRyaWJ1dGUgc3BlY2lmaWVzIGhvdyB0aGUgY2VsbCBjb250ZW50XCdzIGhvcml6b250YWwgYWxpZ25tZW50IHdpbGwgYmUgaGFuZGxlZC4gUG9zc2libGUgdmFsdWVzIGFyZTpcblxuKiAgIGBsZWZ0YDogVGhlIGNvbnRlbnQgaXMgYWxpZ25lZCB0byB0aGUgbGVmdCBvZiB0aGUgY2VsbC5cbiogICBgY2VudGVyYDogVGhlIGNvbnRlbnQgaXMgY2VudGVyZWQgaW4gdGhlIGNlbGwuXG4qICAgYHJpZ2h0YDogVGhlIGNvbnRlbnQgaXMgYWxpZ25lZCB0byB0aGUgcmlnaHQgb2YgdGhlIGNlbGwuXG4qICAgYGp1c3RpZnlgICh3aXRoIHRleHQgb25seSk6IFRoZSBjb250ZW50IGlzIHN0cmV0Y2hlZCBvdXQgaW5zaWRlIHRoZSBjZWxsIHNvIHRoYXQgaXQgY292ZXJzIGl0cyBlbnRpcmUgd2lkdGguXG4qICAgYGNoYXJgICh3aXRoIHRleHQgb25seSk6IFRoZSBjb250ZW50IGlzIGFsaWduZWQgdG8gYSBjaGFyYWN0ZXIgaW5zaWRlIHRoZSBgPHRoPmAgZWxlbWVudCB3aXRoIG1pbmltYWwgb2Zmc2V0LiBUaGlzIGNoYXJhY3RlciBpcyBkZWZpbmVkIGJ5IHRoZSBbYGNoYXJgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvdGQjYXR0ci1jaGFyKSBhbmQgW2BjaGFyb2ZmYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3RkI2F0dHItY2hhcm9mZikgYXR0cmlidXRlcyBVbmltcGxlbWVudGVkIChzZWUgW2J1Z8KgMjIxMl0oaHR0cHM6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxMiAiY2hhcmFjdGVyIGFsaWdubWVudCBub3QgaW1wbGVtZW50ZWQgKGFsaWduPWNoYXIsIGNoYXJvZmY9LCB0ZXh0LWFsaWduOjxzdHJpbmc+KSIpKS5cblxuVGhlIGRlZmF1bHQgdmFsdWUgd2hlbiB0aGlzIGF0dHJpYnV0ZSBpcyBub3Qgc3BlY2lmaWVkIGlzIGBsZWZ0YC5cblxuKipOb3RlOioqIERvIG5vdCB1c2UgdGhpcyBhdHRyaWJ1dGUgYXMgaXQgaXMgb2Jzb2xldGUgaW4gdGhlIGxhdGVzdCBzdGFuZGFyZC5cblxuKiAgIFRvIGFjaGlldmUgdGhlIHNhbWUgZWZmZWN0IGFzIHRoZSBgbGVmdGAsIGBjZW50ZXJgLCBgcmlnaHRgIG9yIGBqdXN0aWZ5YCB2YWx1ZXMsIGFwcGx5IHRoZSBDU1MgW2B0ZXh0LWFsaWduYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL3RleHQtYWxpZ24gIlRoZSB0ZXh0LWFsaWduIENTUyBwcm9wZXJ0eSBzZXRzIHRoZSBob3Jpem9udGFsIGFsaWdubWVudCBvZiBhbiBpbmxpbmUgb3IgdGFibGUtY2VsbCBib3guIFRoaXMgbWVhbnMgaXQgd29ya3MgbGlrZSB2ZXJ0aWNhbC1hbGlnbiBidXQgaW4gdGhlIGhvcml6b250YWwgZGlyZWN0aW9uLiIpIHByb3BlcnR5IHRvIHRoZSBlbGVtZW50LlxuKiAgIFRvIGFjaGlldmUgdGhlIHNhbWUgZWZmZWN0IGFzIHRoZSBgY2hhcmAgdmFsdWUsIGdpdmUgdGhlIFtgdGV4dC1hbGlnbmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy90ZXh0LWFsaWduICJUaGUgdGV4dC1hbGlnbiBDU1MgcHJvcGVydHkgc2V0cyB0aGUgaG9yaXpvbnRhbCBhbGlnbm1lbnQgb2YgYW4gaW5saW5lIG9yIHRhYmxlLWNlbGwgYm94LiBUaGlzIG1lYW5zIGl0IHdvcmtzIGxpa2UgdmVydGljYWwtYWxpZ24gYnV0IGluIHRoZSBob3Jpem9udGFsIGRpcmVjdGlvbi4iKSBwcm9wZXJ0eSB0aGUgc2FtZSB2YWx1ZSB5b3Ugd291bGQgdXNlIGZvciB0aGUgW2BjaGFyYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3RkI2F0dHItY2hhcikuIFVuaW1wbGVtZW50ZWQgaW4gQ1NTMy4nfSx7bmFtZToiYXhpcyIsZGVzY3JpcHRpb246IlRoaXMgYXR0cmlidXRlIGNvbnRhaW5zIGEgbGlzdCBvZiBzcGFjZS1zZXBhcmF0ZWQgc3RyaW5ncy4gRWFjaCBzdHJpbmcgaXMgdGhlIGBpZGAgb2YgYSBncm91cCBvZiBjZWxscyB0aGF0IHRoaXMgaGVhZGVyIGFwcGxpZXMgdG8uXG5cbioqTm90ZToqKiBEbyBub3QgdXNlIHRoaXMgYXR0cmlidXRlIGFzIGl0IGlzIG9ic29sZXRlIGluIHRoZSBsYXRlc3Qgc3RhbmRhcmQuIn0se25hbWU6ImJnY29sb3IiLGRlc2NyaXB0aW9uOidUaGlzIGF0dHJpYnV0ZSBkZWZpbmVzIHRoZSBiYWNrZ3JvdW5kIGNvbG9yIG9mIGVhY2ggY2VsbCBpbiBhIGNvbHVtbi4gSXQgY29uc2lzdHMgb2YgYSA2LWRpZ2l0IGhleGFkZWNpbWFsIGNvZGUgYXMgZGVmaW5lZCBpbiBbc1JHQl0oaHR0cHM6Ly93d3cudzMub3JnL0dyYXBoaWNzL0NvbG9yL3NSR0IpIGFuZCBpcyBwcmVmaXhlZCBieSBcJyNcJy4gVGhpcyBhdHRyaWJ1dGUgbWF5IGJlIHVzZWQgd2l0aCBvbmUgb2Ygc2l4dGVlbiBwcmVkZWZpbmVkIGNvbG9yIHN0cmluZ3M6XG5cbsKgXG5cbmBibGFja2AgPSAiIzAwMDAwMCJcblxuwqBcblxuYGdyZWVuYCA9ICIjMDA4MDAwIlxuXG7CoFxuXG5gc2lsdmVyYCA9ICIjQzBDMEMwIlxuXG7CoFxuXG5gbGltZWAgPSAiIzAwRkYwMCJcblxuwqBcblxuYGdyYXlgID0gIiM4MDgwODAiXG5cbsKgXG5cbmBvbGl2ZWAgPSAiIzgwODAwMCJcblxuwqBcblxuYHdoaXRlYCA9ICIjRkZGRkZGIlxuXG7CoFxuXG5geWVsbG93YCA9ICIjRkZGRjAwIlxuXG7CoFxuXG5gbWFyb29uYCA9ICIjODAwMDAwIlxuXG7CoFxuXG5gbmF2eWAgPSAiIzAwMDA4MCJcblxuwqBcblxuYHJlZGAgPSAiI0ZGMDAwMCJcblxuwqBcblxuYGJsdWVgID0gIiMwMDAwRkYiXG5cbsKgXG5cbmBwdXJwbGVgID0gIiM4MDAwODAiXG5cbsKgXG5cbmB0ZWFsYCA9ICIjMDA4MDgwIlxuXG7CoFxuXG5gZnVjaHNpYWAgPSAiI0ZGMDBGRiJcblxuwqBcblxuYGFxdWFgID0gIiMwMEZGRkYiXG5cbioqTm90ZToqKiBEbyBub3QgdXNlIHRoaXMgYXR0cmlidXRlLCBhcyBpdCBpcyBub24tc3RhbmRhcmQgYW5kIG9ubHkgaW1wbGVtZW50ZWQgaW4gc29tZSB2ZXJzaW9ucyBvZiBNaWNyb3NvZnQgSW50ZXJuZXQgRXhwbG9yZXI6IFRoZSBbYDx0ZD5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvdGQgIlRoZSBIVE1MIDx0ZD4gZWxlbWVudCBkZWZpbmVzIGEgY2VsbCBvZiBhIHRhYmxlIHRoYXQgY29udGFpbnMgZGF0YS4gSXQgcGFydGljaXBhdGVzIGluIHRoZSB0YWJsZSBtb2RlbC4iKSBlbGVtZW50IHNob3VsZCBiZSBzdHlsZWQgdXNpbmcgW0NTU10oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9DU1MpLiBUbyBjcmVhdGUgYSBzaW1pbGFyIGVmZmVjdCB1c2UgdGhlIFtgYmFja2dyb3VuZC1jb2xvcmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9iYWNrZ3JvdW5kLWNvbG9yICJUaGUgYmFja2dyb3VuZC1jb2xvciBDU1MgcHJvcGVydHkgc2V0cyB0aGUgYmFja2dyb3VuZCBjb2xvciBvZiBhbiBlbGVtZW50LiIpIHByb3BlcnR5IGluIFtDU1NdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvQ1NTKSBpbnN0ZWFkLid9XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvdGQifV19LHtuYW1lOiJ0aCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHRoIGVsZW1lbnQgcmVwcmVzZW50cyBhIGhlYWRlciBjZWxsIGluIGEgdGFibGUuIn0sYXR0cmlidXRlczpbe25hbWU6ImNvbHNwYW4ifSx7bmFtZToicm93c3BhbiJ9LHtuYW1lOiJoZWFkZXJzIn0se25hbWU6InNjb3BlIix2YWx1ZVNldDoicyJ9LHtuYW1lOiJzb3J0ZWQifSx7bmFtZToiYWJiciIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhpcyBhdHRyaWJ1dGUgY29udGFpbnMgYSBzaG9ydCBhYmJyZXZpYXRlZCBkZXNjcmlwdGlvbiBvZiB0aGUgY2VsbCdzIGNvbnRlbnQuIFNvbWUgdXNlci1hZ2VudHMsIHN1Y2ggYXMgc3BlZWNoIHJlYWRlcnMsIG1heSBwcmVzZW50IHRoaXMgZGVzY3JpcHRpb24gYmVmb3JlIHRoZSBjb250ZW50IGl0c2VsZi4ifX0se25hbWU6ImFsaWduIixkZXNjcmlwdGlvbjonVGhpcyBlbnVtZXJhdGVkIGF0dHJpYnV0ZSBzcGVjaWZpZXMgaG93IHRoZSBjZWxsIGNvbnRlbnRcJ3MgaG9yaXpvbnRhbCBhbGlnbm1lbnQgd2lsbCBiZSBoYW5kbGVkLiBQb3NzaWJsZSB2YWx1ZXMgYXJlOlxuXG4qICAgYGxlZnRgOiBUaGUgY29udGVudCBpcyBhbGlnbmVkIHRvIHRoZSBsZWZ0IG9mIHRoZSBjZWxsLlxuKiAgIGBjZW50ZXJgOiBUaGUgY29udGVudCBpcyBjZW50ZXJlZCBpbiB0aGUgY2VsbC5cbiogICBgcmlnaHRgOiBUaGUgY29udGVudCBpcyBhbGlnbmVkIHRvIHRoZSByaWdodCBvZiB0aGUgY2VsbC5cbiogICBganVzdGlmeWAgKHdpdGggdGV4dCBvbmx5KTogVGhlIGNvbnRlbnQgaXMgc3RyZXRjaGVkIG91dCBpbnNpZGUgdGhlIGNlbGwgc28gdGhhdCBpdCBjb3ZlcnMgaXRzIGVudGlyZSB3aWR0aC5cbiogICBgY2hhcmAgKHdpdGggdGV4dCBvbmx5KTogVGhlIGNvbnRlbnQgaXMgYWxpZ25lZCB0byBhIGNoYXJhY3RlciBpbnNpZGUgdGhlIGA8dGg+YCBlbGVtZW50IHdpdGggbWluaW1hbCBvZmZzZXQuIFRoaXMgY2hhcmFjdGVyIGlzIGRlZmluZWQgYnkgdGhlIFtgY2hhcmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC90aCNhdHRyLWNoYXIpIGFuZCBbYGNoYXJvZmZgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvdGgjYXR0ci1jaGFyb2ZmKSBhdHRyaWJ1dGVzLlxuXG5UaGUgZGVmYXVsdCB2YWx1ZSB3aGVuIHRoaXMgYXR0cmlidXRlIGlzIG5vdCBzcGVjaWZpZWQgaXMgYGxlZnRgLlxuXG4qKk5vdGU6KiogRG8gbm90IHVzZSB0aGlzIGF0dHJpYnV0ZSBhcyBpdCBpcyBvYnNvbGV0ZSBpbiB0aGUgbGF0ZXN0IHN0YW5kYXJkLlxuXG4qICAgVG8gYWNoaWV2ZSB0aGUgc2FtZSBlZmZlY3QgYXMgdGhlIGBsZWZ0YCwgYGNlbnRlcmAsIGByaWdodGAgb3IgYGp1c3RpZnlgIHZhbHVlcywgYXBwbHkgdGhlIENTUyBbYHRleHQtYWxpZ25gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvdGV4dC1hbGlnbiAiVGhlIHRleHQtYWxpZ24gQ1NTIHByb3BlcnR5IHNldHMgdGhlIGhvcml6b250YWwgYWxpZ25tZW50IG9mIGFuIGlubGluZSBvciB0YWJsZS1jZWxsIGJveC4gVGhpcyBtZWFucyBpdCB3b3JrcyBsaWtlIHZlcnRpY2FsLWFsaWduIGJ1dCBpbiB0aGUgaG9yaXpvbnRhbCBkaXJlY3Rpb24uIikgcHJvcGVydHkgdG8gdGhlIGVsZW1lbnQuXG4qICAgVG8gYWNoaWV2ZSB0aGUgc2FtZSBlZmZlY3QgYXMgdGhlIGBjaGFyYCB2YWx1ZSwgZ2l2ZSB0aGUgW2B0ZXh0LWFsaWduYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL3RleHQtYWxpZ24gIlRoZSB0ZXh0LWFsaWduIENTUyBwcm9wZXJ0eSBzZXRzIHRoZSBob3Jpem9udGFsIGFsaWdubWVudCBvZiBhbiBpbmxpbmUgb3IgdGFibGUtY2VsbCBib3guIFRoaXMgbWVhbnMgaXQgd29ya3MgbGlrZSB2ZXJ0aWNhbC1hbGlnbiBidXQgaW4gdGhlIGhvcml6b250YWwgZGlyZWN0aW9uLiIpIHByb3BlcnR5IHRoZSBzYW1lIHZhbHVlIHlvdSB3b3VsZCB1c2UgZm9yIHRoZSBbYGNoYXJgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvdGgjYXR0ci1jaGFyKS4gVW5pbXBsZW1lbnRlZCBpbiBDU1MzLid9LHtuYW1lOiJheGlzIixkZXNjcmlwdGlvbjoiVGhpcyBhdHRyaWJ1dGUgY29udGFpbnMgYSBsaXN0IG9mIHNwYWNlLXNlcGFyYXRlZCBzdHJpbmdzLiBFYWNoIHN0cmluZyBpcyB0aGUgYGlkYCBvZiBhIGdyb3VwIG9mIGNlbGxzIHRoYXQgdGhpcyBoZWFkZXIgYXBwbGllcyB0by5cblxuKipOb3RlOioqIERvIG5vdCB1c2UgdGhpcyBhdHRyaWJ1dGUgYXMgaXQgaXMgb2Jzb2xldGUgaW4gdGhlIGxhdGVzdCBzdGFuZGFyZDogdXNlIHRoZSBbYHNjb3BlYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3RoI2F0dHItc2NvcGUpIGF0dHJpYnV0ZSBpbnN0ZWFkLiJ9LHtuYW1lOiJiZ2NvbG9yIixkZXNjcmlwdGlvbjonVGhpcyBhdHRyaWJ1dGUgZGVmaW5lcyB0aGUgYmFja2dyb3VuZCBjb2xvciBvZiBlYWNoIGNlbGwgaW4gYSBjb2x1bW4uIEl0IGNvbnNpc3RzIG9mIGEgNi1kaWdpdCBoZXhhZGVjaW1hbCBjb2RlIGFzIGRlZmluZWQgaW4gW3NSR0JdKGh0dHBzOi8vd3d3LnczLm9yZy9HcmFwaGljcy9Db2xvci9zUkdCKSBhbmQgaXMgcHJlZml4ZWQgYnkgXCcjXCcuIFRoaXMgYXR0cmlidXRlIG1heSBiZSB1c2VkIHdpdGggb25lIG9mIHNpeHRlZW4gcHJlZGVmaW5lZCBjb2xvciBzdHJpbmdzOlxuXG7CoFxuXG5gYmxhY2tgID0gIiMwMDAwMDAiXG5cbsKgXG5cbmBncmVlbmAgPSAiIzAwODAwMCJcblxuwqBcblxuYHNpbHZlcmAgPSAiI0MwQzBDMCJcblxuwqBcblxuYGxpbWVgID0gIiMwMEZGMDAiXG5cbsKgXG5cbmBncmF5YCA9ICIjODA4MDgwIlxuXG7CoFxuXG5gb2xpdmVgID0gIiM4MDgwMDAiXG5cbsKgXG5cbmB3aGl0ZWAgPSAiI0ZGRkZGRiJcblxuwqBcblxuYHllbGxvd2AgPSAiI0ZGRkYwMCJcblxuwqBcblxuYG1hcm9vbmAgPSAiIzgwMDAwMCJcblxuwqBcblxuYG5hdnlgID0gIiMwMDAwODAiXG5cbsKgXG5cbmByZWRgID0gIiNGRjAwMDAiXG5cbsKgXG5cbmBibHVlYCA9ICIjMDAwMEZGIlxuXG7CoFxuXG5gcHVycGxlYCA9ICIjODAwMDgwIlxuXG7CoFxuXG5gdGVhbGAgPSAiIzAwODA4MCJcblxuwqBcblxuYGZ1Y2hzaWFgID0gIiNGRjAwRkYiXG5cbsKgXG5cbmBhcXVhYCA9ICIjMDBGRkZGIlxuXG4qKk5vdGU6KiogRG8gbm90IHVzZSB0aGlzIGF0dHJpYnV0ZSwgYXMgaXQgaXMgbm9uLXN0YW5kYXJkIGFuZCBvbmx5IGltcGxlbWVudGVkIGluIHNvbWUgdmVyc2lvbnMgb2YgTWljcm9zb2Z0IEludGVybmV0IEV4cGxvcmVyOiBUaGUgW2A8dGg+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3RoICJUaGUgSFRNTCA8dGg+IGVsZW1lbnQgZGVmaW5lcyBhIGNlbGwgYXMgaGVhZGVyIG9mIGEgZ3JvdXAgb2YgdGFibGUgY2VsbHMuIFRoZSBleGFjdCBuYXR1cmUgb2YgdGhpcyBncm91cCBpcyBkZWZpbmVkIGJ5IHRoZSBzY29wZSBhbmQgaGVhZGVycyBhdHRyaWJ1dGVzLiIpIGVsZW1lbnQgc2hvdWxkIGJlIHN0eWxlZCB1c2luZyBbQ1NTXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MpLiBUbyBjcmVhdGUgYSBzaW1pbGFyIGVmZmVjdCB1c2UgdGhlIFtgYmFja2dyb3VuZC1jb2xvcmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9iYWNrZ3JvdW5kLWNvbG9yICJUaGUgYmFja2dyb3VuZC1jb2xvciBDU1MgcHJvcGVydHkgc2V0cyB0aGUgYmFja2dyb3VuZCBjb2xvciBvZiBhbiBlbGVtZW50LiIpIHByb3BlcnR5IGluIFtDU1NdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUykgaW5zdGVhZC4nfV0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3RoIn1dfSx7bmFtZToiZm9ybSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGZvcm0gZWxlbWVudCByZXByZXNlbnRzIGEgY29sbGVjdGlvbiBvZiBmb3JtLWFzc29jaWF0ZWQgZWxlbWVudHMsIHNvbWUgb2Ygd2hpY2ggY2FuIHJlcHJlc2VudCBlZGl0YWJsZSB2YWx1ZXMgdGhhdCBjYW4gYmUgc3VibWl0dGVkIHRvIGEgc2VydmVyIGZvciBwcm9jZXNzaW5nLiJ9LGF0dHJpYnV0ZXM6W3tuYW1lOiJhY2NlcHQtY2hhcnNldCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTonQSBzcGFjZS0gb3IgY29tbWEtZGVsaW1pdGVkIGxpc3Qgb2YgY2hhcmFjdGVyIGVuY29kaW5ncyB0aGF0IHRoZSBzZXJ2ZXIgYWNjZXB0cy4gVGhlIGJyb3dzZXIgdXNlcyB0aGVtIGluIHRoZSBvcmRlciBpbiB3aGljaCB0aGV5IGFyZSBsaXN0ZWQuIFRoZSBkZWZhdWx0IHZhbHVlLCB0aGUgcmVzZXJ2ZWQgc3RyaW5nIGAiVU5LTk9XTiJgLCBpbmRpY2F0ZXMgdGhlIHNhbWUgZW5jb2RpbmcgYXMgdGhhdCBvZiB0aGUgZG9jdW1lbnQgY29udGFpbmluZyB0aGUgZm9ybSBlbGVtZW50LiAgXG5JbiBwcmV2aW91cyB2ZXJzaW9ucyBvZiBIVE1MLCB0aGUgZGlmZmVyZW50IGNoYXJhY3RlciBlbmNvZGluZ3MgY291bGQgYmUgZGVsaW1pdGVkIGJ5IHNwYWNlcyBvciBjb21tYXMuIEluIEhUTUw1LCBvbmx5IHNwYWNlcyBhcmUgYWxsb3dlZCBhcyBkZWxpbWl0ZXJzLid9fSx7bmFtZToiYWN0aW9uIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOidUaGUgVVJJIG9mIGEgcHJvZ3JhbSB0aGF0IHByb2Nlc3NlcyB0aGUgZm9ybSBpbmZvcm1hdGlvbi4gVGhpcyB2YWx1ZSBjYW4gYmUgb3ZlcnJpZGRlbiBieSBhIFtgZm9ybWFjdGlvbmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9idXR0b24jYXR0ci1mb3JtYWN0aW9uKSBhdHRyaWJ1dGUgb24gYSBbYDxidXR0b24+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2J1dHRvbiAiVGhlIEhUTUwgPGJ1dHRvbj4gZWxlbWVudCByZXByZXNlbnRzIGEgY2xpY2thYmxlIGJ1dHRvbiwgd2hpY2ggY2FuIGJlIHVzZWQgaW4gZm9ybXMgb3IgYW55d2hlcmUgaW4gYSBkb2N1bWVudCB0aGF0IG5lZWRzIHNpbXBsZSwgc3RhbmRhcmQgYnV0dG9uIGZ1bmN0aW9uYWxpdHkuIikgb3IgW2A8aW5wdXQ+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2lucHV0ICJUaGUgSFRNTCA8aW5wdXQ+IGVsZW1lbnQgaXMgdXNlZCB0byBjcmVhdGUgaW50ZXJhY3RpdmUgY29udHJvbHMgZm9yIHdlYi1iYXNlZCBmb3JtcyBpbiBvcmRlciB0byBhY2NlcHQgZGF0YSBmcm9tIHRoZSB1c2VyOyBhIHdpZGUgdmFyaWV0eSBvZiB0eXBlcyBvZiBpbnB1dCBkYXRhIGFuZCBjb250cm9sIHdpZGdldHMgYXJlIGF2YWlsYWJsZSwgZGVwZW5kaW5nIG9uIHRoZSBkZXZpY2UgYW5kIHVzZXIgYWdlbnQuIikgZWxlbWVudC4nfX0se25hbWU6ImF1dG9jb21wbGV0ZSIsdmFsdWVTZXQ6Im8iLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkluZGljYXRlcyB3aGV0aGVyIGlucHV0IGVsZW1lbnRzIGNhbiBieSBkZWZhdWx0IGhhdmUgdGhlaXIgdmFsdWVzIGF1dG9tYXRpY2FsbHkgY29tcGxldGVkIGJ5IHRoZSBicm93c2VyLiBUaGlzIHNldHRpbmcgY2FuIGJlIG92ZXJyaWRkZW4gYnkgYW4gYGF1dG9jb21wbGV0ZWAgYXR0cmlidXRlIG9uIGFuIGVsZW1lbnQgYmVsb25naW5nIHRvIHRoZSBmb3JtLiBQb3NzaWJsZSB2YWx1ZXMgYXJlOlxuXG4qICAgYG9mZmA6IFRoZSB1c2VyIG11c3QgZXhwbGljaXRseSBlbnRlciBhIHZhbHVlIGludG8gZWFjaCBmaWVsZCBmb3IgZXZlcnkgdXNlLCBvciB0aGUgZG9jdW1lbnQgcHJvdmlkZXMgaXRzIG93biBhdXRvLWNvbXBsZXRpb24gbWV0aG9kOyB0aGUgYnJvd3NlciBkb2VzIG5vdCBhdXRvbWF0aWNhbGx5IGNvbXBsZXRlIGVudHJpZXMuXG4qICAgYG9uYDogVGhlIGJyb3dzZXIgY2FuIGF1dG9tYXRpY2FsbHkgY29tcGxldGUgdmFsdWVzIGJhc2VkIG9uIHZhbHVlcyB0aGF0IHRoZSB1c2VyIGhhcyBwcmV2aW91c2x5IGVudGVyZWQgaW4gdGhlIGZvcm0uXG5cbkZvciBtb3N0IG1vZGVybiBicm93c2VycyAoaW5jbHVkaW5nIEZpcmVmb3ggMzgrLCBHb29nbGUgQ2hyb21lIDM0KywgSUUgMTErKSBzZXR0aW5nIHRoZSBhdXRvY29tcGxldGUgYXR0cmlidXRlIHdpbGwgbm90IHByZXZlbnQgYSBicm93c2VyJ3MgcGFzc3dvcmQgbWFuYWdlciBmcm9tIGFza2luZyB0aGUgdXNlciBpZiB0aGV5IHdhbnQgdG8gc3RvcmUgbG9naW4gZmllbGRzICh1c2VybmFtZSBhbmQgcGFzc3dvcmQpLCBpZiB0aGUgdXNlciBwZXJtaXRzIHRoZSBzdG9yYWdlIHRoZSBicm93c2VyIHdpbGwgYXV0b2ZpbGwgdGhlIGxvZ2luIHRoZSBuZXh0IHRpbWUgdGhlIHVzZXIgdmlzaXRzIHRoZSBwYWdlLiBTZWUgW1RoZSBhdXRvY29tcGxldGUgYXR0cmlidXRlIGFuZCBsb2dpbiBmaWVsZHNdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL1NlY3VyaXR5L1NlY3VyaW5nX3lvdXJfc2l0ZS9UdXJuaW5nX29mZl9mb3JtX2F1dG9jb21wbGV0aW9uI1RoZV9hdXRvY29tcGxldGVfYXR0cmlidXRlX2FuZF9sb2dpbl9maWVsZHMpLiJ9fSx7bmFtZToiZW5jdHlwZSIsdmFsdWVTZXQ6ImV0IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOidXaGVuIHRoZSB2YWx1ZSBvZiB0aGUgYG1ldGhvZGAgYXR0cmlidXRlIGlzIGBwb3N0YCwgZW5jdHlwZSBpcyB0aGUgW01JTUUgdHlwZV0oaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTWltZV90eXBlKSBvZiBjb250ZW50IHRoYXQgaXMgdXNlZCB0byBzdWJtaXQgdGhlIGZvcm0gdG8gdGhlIHNlcnZlci4gUG9zc2libGUgdmFsdWVzIGFyZTpcblxuKiAgIGBhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWRgOiBUaGUgZGVmYXVsdCB2YWx1ZSBpZiB0aGUgYXR0cmlidXRlIGlzIG5vdCBzcGVjaWZpZWQuXG4qICAgYG11bHRpcGFydC9mb3JtLWRhdGFgOiBUaGUgdmFsdWUgdXNlZCBmb3IgYW4gW2A8aW5wdXQ+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2lucHV0ICJUaGUgSFRNTCA8aW5wdXQ+IGVsZW1lbnQgaXMgdXNlZCB0byBjcmVhdGUgaW50ZXJhY3RpdmUgY29udHJvbHMgZm9yIHdlYi1iYXNlZCBmb3JtcyBpbiBvcmRlciB0byBhY2NlcHQgZGF0YSBmcm9tIHRoZSB1c2VyOyBhIHdpZGUgdmFyaWV0eSBvZiB0eXBlcyBvZiBpbnB1dCBkYXRhIGFuZCBjb250cm9sIHdpZGdldHMgYXJlIGF2YWlsYWJsZSwgZGVwZW5kaW5nIG9uIHRoZSBkZXZpY2UgYW5kIHVzZXIgYWdlbnQuIikgZWxlbWVudCB3aXRoIHRoZSBgdHlwZWAgYXR0cmlidXRlIHNldCB0byAiZmlsZSIuXG4qICAgYHRleHQvcGxhaW5gOiAoSFRNTDUpXG5cblRoaXMgdmFsdWUgY2FuIGJlIG92ZXJyaWRkZW4gYnkgYSBbYGZvcm1lbmN0eXBlYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2J1dHRvbiNhdHRyLWZvcm1lbmN0eXBlKSBhdHRyaWJ1dGUgb24gYSBbYDxidXR0b24+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2J1dHRvbiAiVGhlIEhUTUwgPGJ1dHRvbj4gZWxlbWVudCByZXByZXNlbnRzIGEgY2xpY2thYmxlIGJ1dHRvbiwgd2hpY2ggY2FuIGJlIHVzZWQgaW4gZm9ybXMgb3IgYW55d2hlcmUgaW4gYSBkb2N1bWVudCB0aGF0IG5lZWRzIHNpbXBsZSwgc3RhbmRhcmQgYnV0dG9uIGZ1bmN0aW9uYWxpdHkuIikgb3IgW2A8aW5wdXQ+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2lucHV0ICJUaGUgSFRNTCA8aW5wdXQ+IGVsZW1lbnQgaXMgdXNlZCB0byBjcmVhdGUgaW50ZXJhY3RpdmUgY29udHJvbHMgZm9yIHdlYi1iYXNlZCBmb3JtcyBpbiBvcmRlciB0byBhY2NlcHQgZGF0YSBmcm9tIHRoZSB1c2VyOyBhIHdpZGUgdmFyaWV0eSBvZiB0eXBlcyBvZiBpbnB1dCBkYXRhIGFuZCBjb250cm9sIHdpZGdldHMgYXJlIGF2YWlsYWJsZSwgZGVwZW5kaW5nIG9uIHRoZSBkZXZpY2UgYW5kIHVzZXIgYWdlbnQuIikgZWxlbWVudC4nfX0se25hbWU6Im1ldGhvZCIsdmFsdWVTZXQ6Im0iLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6J1RoZSBbSFRUUF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRUUCkgbWV0aG9kIHRoYXQgdGhlIGJyb3dzZXIgdXNlcyB0byBzdWJtaXQgdGhlIGZvcm0uIFBvc3NpYmxlIHZhbHVlcyBhcmU6XG5cbiogICBgcG9zdGA6IENvcnJlc3BvbmRzIHRvIHRoZSBIVFRQIFtQT1NUIG1ldGhvZF0oaHR0cHM6Ly93d3cudzMub3JnL1Byb3RvY29scy9yZmMyNjE2L3JmYzI2MTYtc2VjOS5odG1sI3NlYzkuNSkgOyBmb3JtIGRhdGEgYXJlIGluY2x1ZGVkIGluIHRoZSBib2R5IG9mIHRoZSBmb3JtIGFuZCBzZW50IHRvIHRoZSBzZXJ2ZXIuXG4qICAgYGdldGA6IENvcnJlc3BvbmRzIHRvIHRoZSBIVFRQIFtHRVQgbWV0aG9kXShodHRwczovL3d3dy53My5vcmcvUHJvdG9jb2xzL3JmYzI2MTYvcmZjMjYxNi1zZWM5Lmh0bWwjc2VjOS4zKTsgZm9ybSBkYXRhIGFyZSBhcHBlbmRlZCB0byB0aGUgYGFjdGlvbmAgYXR0cmlidXRlIFVSSSB3aXRoIGEgXCc/XCcgYXMgc2VwYXJhdG9yLCBhbmQgdGhlIHJlc3VsdGluZyBVUkkgaXMgc2VudCB0byB0aGUgc2VydmVyLiBVc2UgdGhpcyBtZXRob2Qgd2hlbiB0aGUgZm9ybSBoYXMgbm8gc2lkZS1lZmZlY3RzIGFuZCBjb250YWlucyBvbmx5IEFTQ0lJIGNoYXJhY3RlcnMuXG4qICAgYGRpYWxvZ2A6IFVzZSB3aGVuIHRoZSBmb3JtIGlzIGluc2lkZSBhwqBbYDxkaWFsb2c+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2RpYWxvZyAiVGhlIEhUTUwgPGRpYWxvZz4gZWxlbWVudCByZXByZXNlbnRzIGEgZGlhbG9nIGJveCBvciBvdGhlciBpbnRlcmFjdGl2ZSBjb21wb25lbnQsIHN1Y2ggYXMgYW4gaW5zcGVjdG9yIG9yIHdpbmRvdy4iKSBlbGVtZW50IHRvIGNsb3NlIHRoZSBkaWFsb2cgd2hlbiBzdWJtaXR0ZWQuXG5cblRoaXMgdmFsdWUgY2FuIGJlIG92ZXJyaWRkZW4gYnkgYSBbYGZvcm1tZXRob2RgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvYnV0dG9uI2F0dHItZm9ybW1ldGhvZCkgYXR0cmlidXRlIG9uIGEgW2A8YnV0dG9uPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9idXR0b24gIlRoZSBIVE1MIDxidXR0b24+IGVsZW1lbnQgcmVwcmVzZW50cyBhIGNsaWNrYWJsZSBidXR0b24sIHdoaWNoIGNhbiBiZSB1c2VkIGluIGZvcm1zIG9yIGFueXdoZXJlIGluIGEgZG9jdW1lbnQgdGhhdCBuZWVkcyBzaW1wbGUsIHN0YW5kYXJkIGJ1dHRvbiBmdW5jdGlvbmFsaXR5LiIpIG9yIFtgPGlucHV0PmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9pbnB1dCAiVGhlIEhUTUwgPGlucHV0PiBlbGVtZW50IGlzIHVzZWQgdG8gY3JlYXRlIGludGVyYWN0aXZlIGNvbnRyb2xzIGZvciB3ZWItYmFzZWQgZm9ybXMgaW4gb3JkZXIgdG8gYWNjZXB0IGRhdGEgZnJvbSB0aGUgdXNlcjsgYSB3aWRlIHZhcmlldHkgb2YgdHlwZXMgb2YgaW5wdXQgZGF0YSBhbmQgY29udHJvbCB3aWRnZXRzIGFyZSBhdmFpbGFibGUsIGRlcGVuZGluZyBvbiB0aGUgZGV2aWNlIGFuZCB1c2VyIGFnZW50LiIpIGVsZW1lbnQuJ319LHtuYW1lOiJuYW1lIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgbmFtZSBvZiB0aGUgZm9ybS4gSW4gSFRNTCA0LCBpdHMgdXNlIGlzIGRlcHJlY2F0ZWQgKGBpZGAgc2hvdWxkIGJlIHVzZWQgaW5zdGVhZCkuIEl0IG11c3QgYmUgdW5pcXVlIGFtb25nIHRoZSBmb3JtcyBpbiBhIGRvY3VtZW50IGFuZCBub3QganVzdCBhbiBlbXB0eSBzdHJpbmcgaW4gSFRNTCA1LiJ9fSx7bmFtZToibm92YWxpZGF0ZSIsdmFsdWVTZXQ6InYiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6J1RoaXMgQm9vbGVhbiBhdHRyaWJ1dGUgaW5kaWNhdGVzIHRoYXQgdGhlIGZvcm0gaXMgbm90IHRvIGJlIHZhbGlkYXRlZCB3aGVuIHN1Ym1pdHRlZC4gSWYgdGhpcyBhdHRyaWJ1dGUgaXMgbm90IHNwZWNpZmllZCAoYW5kIHRoZXJlZm9yZSB0aGUgZm9ybSBpcyB2YWxpZGF0ZWQpLCB0aGlzIGRlZmF1bHQgc2V0dGluZyBjYW4gYmUgb3ZlcnJpZGRlbiBieSBhIFtgZm9ybW5vdmFsaWRhdGVgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvYnV0dG9uI2F0dHItZm9ybW5vdmFsaWRhdGUpIGF0dHJpYnV0ZSBvbiBhIFtgPGJ1dHRvbj5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvYnV0dG9uICJUaGUgSFRNTCA8YnV0dG9uPiBlbGVtZW50IHJlcHJlc2VudHMgYSBjbGlja2FibGUgYnV0dG9uLCB3aGljaCBjYW4gYmUgdXNlZCBpbiBmb3JtcyBvciBhbnl3aGVyZSBpbiBhIGRvY3VtZW50IHRoYXQgbmVlZHMgc2ltcGxlLCBzdGFuZGFyZCBidXR0b24gZnVuY3Rpb25hbGl0eS4iKSBvciBbYDxpbnB1dD5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvaW5wdXQgIlRoZSBIVE1MIDxpbnB1dD4gZWxlbWVudCBpcyB1c2VkIHRvIGNyZWF0ZSBpbnRlcmFjdGl2ZSBjb250cm9scyBmb3Igd2ViLWJhc2VkIGZvcm1zIGluIG9yZGVyIHRvIGFjY2VwdCBkYXRhIGZyb20gdGhlIHVzZXI7IGEgd2lkZSB2YXJpZXR5IG9mIHR5cGVzIG9mIGlucHV0IGRhdGEgYW5kIGNvbnRyb2wgd2lkZ2V0cyBhcmUgYXZhaWxhYmxlLCBkZXBlbmRpbmcgb24gdGhlIGRldmljZSBhbmQgdXNlciBhZ2VudC4iKSBlbGVtZW50IGJlbG9uZ2luZyB0byB0aGUgZm9ybS4nfX0se25hbWU6InRhcmdldCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTonQSBuYW1lIG9yIGtleXdvcmQgaW5kaWNhdGluZyB3aGVyZSB0byBkaXNwbGF5IHRoZSByZXNwb25zZSB0aGF0IGlzIHJlY2VpdmVkIGFmdGVyIHN1Ym1pdHRpbmcgdGhlIGZvcm0uIEluIEhUTUwgNCwgdGhpcyBpcyB0aGUgbmFtZS9rZXl3b3JkIGZvciBhIGZyYW1lLiBJbiBIVE1MNSwgaXQgaXMgYSBuYW1lL2tleXdvcmQgZm9yIGEgX2Jyb3dzaW5nIGNvbnRleHRfIChmb3IgZXhhbXBsZSwgdGFiLCB3aW5kb3csIG9yIGlubGluZSBmcmFtZSkuIFRoZSBmb2xsb3dpbmcga2V5d29yZHMgaGF2ZSBzcGVjaWFsIG1lYW5pbmdzOlxuXG4qICAgYF9zZWxmYDogTG9hZCB0aGUgcmVzcG9uc2UgaW50byB0aGUgc2FtZSBIVE1MIDQgZnJhbWUgKG9yIEhUTUw1IGJyb3dzaW5nIGNvbnRleHQpIGFzIHRoZSBjdXJyZW50IG9uZS4gVGhpcyB2YWx1ZSBpcyB0aGUgZGVmYXVsdCBpZiB0aGUgYXR0cmlidXRlIGlzIG5vdCBzcGVjaWZpZWQuXG4qICAgYF9ibGFua2A6IExvYWQgdGhlIHJlc3BvbnNlIGludG8gYSBuZXcgdW5uYW1lZCBIVE1MIDQgd2luZG93IG9yIEhUTUw1IGJyb3dzaW5nIGNvbnRleHQuXG4qICAgYF9wYXJlbnRgOiBMb2FkIHRoZSByZXNwb25zZSBpbnRvIHRoZSBIVE1MIDQgZnJhbWVzZXQgcGFyZW50IG9mIHRoZSBjdXJyZW50IGZyYW1lLCBvciBIVE1MNSBwYXJlbnQgYnJvd3NpbmcgY29udGV4dCBvZiB0aGUgY3VycmVudCBvbmUuIElmIHRoZXJlIGlzIG5vIHBhcmVudCwgdGhpcyBvcHRpb24gYmVoYXZlcyB0aGUgc2FtZSB3YXkgYXMgYF9zZWxmYC5cbiogICBgX3RvcGA6IEhUTUwgNDogTG9hZCB0aGUgcmVzcG9uc2UgaW50byB0aGUgZnVsbCBvcmlnaW5hbCB3aW5kb3csIGFuZCBjYW5jZWwgYWxsIG90aGVyIGZyYW1lcy4gSFRNTDU6IExvYWQgdGhlIHJlc3BvbnNlIGludG8gdGhlIHRvcC1sZXZlbCBicm93c2luZyBjb250ZXh0IChpLmUuLCB0aGUgYnJvd3NpbmcgY29udGV4dCB0aGF0IGlzIGFuIGFuY2VzdG9yIG9mIHRoZSBjdXJyZW50IG9uZSwgYW5kIGhhcyBubyBwYXJlbnQpLiBJZiB0aGVyZSBpcyBubyBwYXJlbnQsIHRoaXMgb3B0aW9uIGJlaGF2ZXMgdGhlIHNhbWUgd2F5IGFzIGBfc2VsZmAuXG4qICAgX2lmcmFtZW5hbWVfOiBUaGUgcmVzcG9uc2UgaXMgZGlzcGxheWVkIGluIGEgbmFtZWQgW2A8aWZyYW1lPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9pZnJhbWUgIlRoZSBIVE1MIElubGluZSBGcmFtZSBlbGVtZW50ICg8aWZyYW1lPikgcmVwcmVzZW50cyBhIG5lc3RlZCBicm93c2luZyBjb250ZXh0LCBlbWJlZGRpbmcgYW5vdGhlciBIVE1MIHBhZ2UgaW50byB0aGUgY3VycmVudCBvbmUuIikuXG5cbkhUTUw1OiBUaGlzIHZhbHVlIGNhbiBiZSBvdmVycmlkZGVuIGJ5IGEgW2Bmb3JtdGFyZ2V0YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2J1dHRvbiNhdHRyLWZvcm10YXJnZXQpIGF0dHJpYnV0ZSBvbiBhIFtgPGJ1dHRvbj5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvYnV0dG9uICJUaGUgSFRNTCA8YnV0dG9uPiBlbGVtZW50IHJlcHJlc2VudHMgYSBjbGlja2FibGUgYnV0dG9uLCB3aGljaCBjYW4gYmUgdXNlZCBpbiBmb3JtcyBvciBhbnl3aGVyZSBpbiBhIGRvY3VtZW50IHRoYXQgbmVlZHMgc2ltcGxlLCBzdGFuZGFyZCBidXR0b24gZnVuY3Rpb25hbGl0eS4iKSBvciBbYDxpbnB1dD5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvaW5wdXQgIlRoZSBIVE1MIDxpbnB1dD4gZWxlbWVudCBpcyB1c2VkIHRvIGNyZWF0ZSBpbnRlcmFjdGl2ZSBjb250cm9scyBmb3Igd2ViLWJhc2VkIGZvcm1zIGluIG9yZGVyIHRvIGFjY2VwdCBkYXRhIGZyb20gdGhlIHVzZXI7IGEgd2lkZSB2YXJpZXR5IG9mIHR5cGVzIG9mIGlucHV0IGRhdGEgYW5kIGNvbnRyb2wgd2lkZ2V0cyBhcmUgYXZhaWxhYmxlLCBkZXBlbmRpbmcgb24gdGhlIGRldmljZSBhbmQgdXNlciBhZ2VudC4iKSBlbGVtZW50Lid9fSx7bmFtZToiYWNjZXB0IixkZXNjcmlwdGlvbjonQSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiBjb250ZW50IHR5cGVzIHRoYXQgdGhlIHNlcnZlciBhY2NlcHRzLlxuXG4qKlVzYWdlIG5vdGU6KiogVGhpcyBhdHRyaWJ1dGUgaGFzIGJlZW4gcmVtb3ZlZCBpbiBIVE1MNSBhbmQgc2hvdWxkIG5vIGxvbmdlciBiZSB1c2VkLiBJbnN0ZWFkLCB1c2UgdGhlIFtgYWNjZXB0YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2lucHV0I2F0dHItYWNjZXB0KSBhdHRyaWJ1dGUgb2YgdGhlIHNwZWNpZmljIFtgPGlucHV0PmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9pbnB1dCAiVGhlIEhUTUwgPGlucHV0PiBlbGVtZW50IGlzIHVzZWQgdG8gY3JlYXRlIGludGVyYWN0aXZlIGNvbnRyb2xzIGZvciB3ZWItYmFzZWQgZm9ybXMgaW4gb3JkZXIgdG8gYWNjZXB0IGRhdGEgZnJvbSB0aGUgdXNlcjsgYSB3aWRlIHZhcmlldHkgb2YgdHlwZXMgb2YgaW5wdXQgZGF0YSBhbmQgY29udHJvbCB3aWRnZXRzIGFyZSBhdmFpbGFibGUsIGRlcGVuZGluZyBvbiB0aGUgZGV2aWNlIGFuZCB1c2VyIGFnZW50LiIpIGVsZW1lbnQuJ30se25hbWU6ImF1dG9jYXBpdGFsaXplIixkZXNjcmlwdGlvbjoiVGhpcyBpcyBhIG5vbnN0YW5kYXJkIGF0dHJpYnV0ZSB1c2VkIGJ5IGlPUyBTYWZhcmkgTW9iaWxlIHdoaWNoIGNvbnRyb2xzIHdoZXRoZXIgYW5kIGhvdyB0aGUgdGV4dCB2YWx1ZSBmb3IgdGV4dHVhbCBmb3JtIGNvbnRyb2wgZGVzY2VuZGFudHMgc2hvdWxkIGJlIGF1dG9tYXRpY2FsbHkgY2FwaXRhbGl6ZWQgYXMgaXQgaXMgZW50ZXJlZC9lZGl0ZWQgYnkgdGhlIHVzZXIuIElmIHRoZSBgYXV0b2NhcGl0YWxpemVgIGF0dHJpYnV0ZSBpcyBzcGVjaWZpZWQgb24gYW4gaW5kaXZpZHVhbCBmb3JtIGNvbnRyb2wgZGVzY2VuZGFudCwgaXQgdHJ1bXBzIHRoZSBmb3JtLXdpZGUgYGF1dG9jYXBpdGFsaXplYCBzZXR0aW5nLiBUaGUgbm9uLWRlcHJlY2F0ZWQgdmFsdWVzIGFyZSBhdmFpbGFibGUgaW4gaU9TIDUgYW5kIGxhdGVyLiBUaGUgZGVmYXVsdCB2YWx1ZSBpcyBgc2VudGVuY2VzYC4gUG9zc2libGUgdmFsdWVzIGFyZTpcblxuKiAgIGBub25lYDogQ29tcGxldGVseSBkaXNhYmxlcyBhdXRvbWF0aWMgY2FwaXRhbGl6YXRpb25cbiogICBgc2VudGVuY2VzYDogQXV0b21hdGljYWxseSBjYXBpdGFsaXplIHRoZSBmaXJzdCBsZXR0ZXIgb2Ygc2VudGVuY2VzLlxuKiAgIGB3b3Jkc2A6IEF1dG9tYXRpY2FsbHkgY2FwaXRhbGl6ZSB0aGUgZmlyc3QgbGV0dGVyIG9mIHdvcmRzLlxuKiAgIGBjaGFyYWN0ZXJzYDogQXV0b21hdGljYWxseSBjYXBpdGFsaXplIGFsbCBjaGFyYWN0ZXJzLlxuKiAgIGBvbmA6IERlcHJlY2F0ZWQgc2luY2UgaU9TIDUuXG4qICAgYG9mZmA6IERlcHJlY2F0ZWQgc2luY2UgaU9TIDUuIn1dLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9mb3JtIn1dfSx7bmFtZToibGFiZWwiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBsYWJlbCBlbGVtZW50IHJlcHJlc2VudHMgYSBjYXB0aW9uIGluIGEgdXNlciBpbnRlcmZhY2UuIFRoZSBjYXB0aW9uIGNhbiBiZSBhc3NvY2lhdGVkIHdpdGggYSBzcGVjaWZpYyBmb3JtIGNvbnRyb2wsIGtub3duIGFzIHRoZSBsYWJlbCBlbGVtZW50J3MgbGFiZWxlZCBjb250cm9sLCBlaXRoZXIgdXNpbmcgdGhlIGZvciBhdHRyaWJ1dGUsIG9yIGJ5IHB1dHRpbmcgdGhlIGZvcm0gY29udHJvbCBpbnNpZGUgdGhlIGxhYmVsIGVsZW1lbnQgaXRzZWxmLiJ9LGF0dHJpYnV0ZXM6W3tuYW1lOiJmb3JtIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOidUaGUgW2A8Zm9ybT5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvZm9ybSAiVGhlIEhUTUwgPGZvcm0+IGVsZW1lbnQgcmVwcmVzZW50cyBhIGRvY3VtZW50IHNlY3Rpb24gdGhhdCBjb250YWlucyBpbnRlcmFjdGl2ZSBjb250cm9scyBmb3Igc3VibWl0dGluZyBpbmZvcm1hdGlvbiB0byBhIHdlYiBzZXJ2ZXIuIikgZWxlbWVudCB3aXRoIHdoaWNoIHRoZSBsYWJlbCBpcyBhc3NvY2lhdGVkIChpdHMgX2Zvcm0gb3duZXJfKS4gSWYgc3BlY2lmaWVkLCB0aGUgdmFsdWUgb2YgdGhlIGF0dHJpYnV0ZSBpcyB0aGUgYGlkYCBvZiBhIFtgPGZvcm0+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2Zvcm0gIlRoZSBIVE1MIDxmb3JtPiBlbGVtZW50IHJlcHJlc2VudHMgYSBkb2N1bWVudCBzZWN0aW9uIHRoYXQgY29udGFpbnMgaW50ZXJhY3RpdmUgY29udHJvbHMgZm9yIHN1Ym1pdHRpbmcgaW5mb3JtYXRpb24gdG8gYSB3ZWIgc2VydmVyLiIpIGVsZW1lbnQgaW4gdGhlIHNhbWUgZG9jdW1lbnQuIFRoaXMgbGV0cyB5b3UgcGxhY2UgbGFiZWwgZWxlbWVudHMgYW55d2hlcmUgd2l0aGluIGEgZG9jdW1lbnQsIG5vdCBqdXN0IGFzIGRlc2NlbmRhbnRzIG9mIHRoZWlyIGZvcm0gZWxlbWVudHMuJ319LHtuYW1lOiJmb3IiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBbYGlkYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9HbG9iYWxfYXR0cmlidXRlcyNhdHRyLWlkKSBvZiBhIFtsYWJlbGFibGVdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0d1aWRlL0hUTUwvQ29udGVudF9jYXRlZ29yaWVzI0Zvcm1fbGFiZWxhYmxlKSBmb3JtLXJlbGF0ZWQgZWxlbWVudCBpbiB0aGUgc2FtZSBkb2N1bWVudCBhcyB0aGUgYDxsYWJlbD5gIGVsZW1lbnQuIFRoZSBmaXJzdCBlbGVtZW50IGluIHRoZSBkb2N1bWVudCB3aXRoIGFuIGBpZGAgbWF0Y2hpbmcgdGhlIHZhbHVlIG9mIHRoZSBgZm9yYCBhdHRyaWJ1dGUgaXMgdGhlIF9sYWJlbGVkIGNvbnRyb2xfIGZvciB0aGlzIGxhYmVsIGVsZW1lbnQsIGlmIGl0IGlzIGEgbGFiZWxhYmxlIGVsZW1lbnQuIElmIGl0IGlzwqBub3QgbGFiZWxhYmxlIHRoZW4gdGhlIGBmb3JgIGF0dHJpYnV0ZSBoYXMgbm8gZWZmZWN0LiBJZiB0aGVyZSBhcmUgb3RoZXIgZWxlbWVudHMgd2hpY2ggYWxzbyBtYXRjaCB0aGUgYGlkYCB2YWx1ZSwgbGF0ZXIgaW4gdGhlIGRvY3VtZW50LCB0aGV5IGFyZSBub3QgY29uc2lkZXJlZC5cblxuKipOb3RlKio6IEEgYDxsYWJlbD5gIGVsZW1lbnQgY2FuIGhhdmUgYm90aCBhIGBmb3JgIGF0dHJpYnV0ZSBhbmQgYSBjb250YWluZWQgY29udHJvbCBlbGVtZW50LCBhcyBsb25nIGFzIHRoZSBgZm9yYCBhdHRyaWJ1dGUgcG9pbnRzIHRvIHRoZSBjb250YWluZWQgY29udHJvbCBlbGVtZW50LiJ9fV0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2xhYmVsIn1dfSx7bmFtZToiaW5wdXQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBpbnB1dCBlbGVtZW50IHJlcHJlc2VudHMgYSB0eXBlZCBkYXRhIGZpZWxkLCB1c3VhbGx5IHdpdGggYSBmb3JtIGNvbnRyb2wgdG8gYWxsb3cgdGhlIHVzZXIgdG8gZWRpdCB0aGUgZGF0YS4ifSxhdHRyaWJ1dGVzOlt7bmFtZToiYWNjZXB0In0se25hbWU6ImFsdCJ9LHtuYW1lOiJhdXRvY29tcGxldGUiLHZhbHVlU2V0OiJpbnB1dGF1dG9jb21wbGV0ZSJ9LHtuYW1lOiJhdXRvZm9jdXMiLHZhbHVlU2V0OiJ2In0se25hbWU6ImNoZWNrZWQiLHZhbHVlU2V0OiJ2In0se25hbWU6ImRpcm5hbWUifSx7bmFtZToiZGlzYWJsZWQiLHZhbHVlU2V0OiJ2In0se25hbWU6ImZvcm0ifSx7bmFtZToiZm9ybWFjdGlvbiJ9LHtuYW1lOiJmb3JtZW5jdHlwZSIsdmFsdWVTZXQ6ImV0In0se25hbWU6ImZvcm1tZXRob2QiLHZhbHVlU2V0OiJmbSJ9LHtuYW1lOiJmb3Jtbm92YWxpZGF0ZSIsdmFsdWVTZXQ6InYifSx7bmFtZToiZm9ybXRhcmdldCJ9LHtuYW1lOiJoZWlnaHQifSx7bmFtZToiaW5wdXRtb2RlIix2YWx1ZVNldDoiaW0ifSx7bmFtZToibGlzdCJ9LHtuYW1lOiJtYXgifSx7bmFtZToibWF4bGVuZ3RoIn0se25hbWU6Im1pbiJ9LHtuYW1lOiJtaW5sZW5ndGgifSx7bmFtZToibXVsdGlwbGUiLHZhbHVlU2V0OiJ2In0se25hbWU6Im5hbWUifSx7bmFtZToicGF0dGVybiJ9LHtuYW1lOiJwbGFjZWhvbGRlciJ9LHtuYW1lOiJyZWFkb25seSIsdmFsdWVTZXQ6InYifSx7bmFtZToicmVxdWlyZWQiLHZhbHVlU2V0OiJ2In0se25hbWU6InNpemUifSx7bmFtZToic3JjIn0se25hbWU6InN0ZXAifSx7bmFtZToidHlwZSIsdmFsdWVTZXQ6InQifSx7bmFtZToidmFsdWUifSx7bmFtZToid2lkdGgifV0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2lucHV0In1dfSx7bmFtZToiYnV0dG9uIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgYnV0dG9uIGVsZW1lbnQgcmVwcmVzZW50cyBhIGJ1dHRvbiBsYWJlbGVkIGJ5IGl0cyBjb250ZW50cy4ifSxhdHRyaWJ1dGVzOlt7bmFtZToiYXV0b2ZvY3VzIix2YWx1ZVNldDoidiIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhpcyBCb29sZWFuIGF0dHJpYnV0ZSBsZXRzIHlvdSBzcGVjaWZ5IHRoYXQgdGhlIGJ1dHRvbiBzaG91bGQgaGF2ZSBpbnB1dCBmb2N1cyB3aGVuIHRoZSBwYWdlIGxvYWRzLCB1bmxlc3MgdGhlIHVzZXIgb3ZlcnJpZGVzIGl0LCBmb3IgZXhhbXBsZSBieSB0eXBpbmcgaW4gYSBkaWZmZXJlbnQgY29udHJvbC4gT25seSBvbmUgZm9ybS1hc3NvY2lhdGVkIGVsZW1lbnQgaW4gYSBkb2N1bWVudCBjYW4gaGF2ZSB0aGlzIGF0dHJpYnV0ZSBzcGVjaWZpZWQuIn19LHtuYW1lOiJkaXNhYmxlZCIsdmFsdWVTZXQ6InYiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6J1RoaXMgQm9vbGVhbiBhdHRyaWJ1dGUgaW5kaWNhdGVzIHRoYXQgdGhlIHVzZXIgY2Fubm90IGludGVyYWN0IHdpdGggdGhlIGJ1dHRvbi4gSWYgdGhpcyBhdHRyaWJ1dGUgaXMgbm90IHNwZWNpZmllZCwgdGhlIGJ1dHRvbiBpbmhlcml0cyBpdHMgc2V0dGluZyBmcm9tIHRoZSBjb250YWluaW5nIGVsZW1lbnQsIGZvciBleGFtcGxlIFtgPGZpZWxkc2V0PmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9maWVsZHNldCAiVGhlIEhUTUwgPGZpZWxkc2V0PiBlbGVtZW50IGlzIHVzZWQgdG8gZ3JvdXAgc2V2ZXJhbCBjb250cm9scyBhcyB3ZWxsIGFzIGxhYmVscyAoPGxhYmVsPikgd2l0aGluIGEgd2ViIGZvcm0uIik7IGlmIHRoZXJlIGlzIG5vIGNvbnRhaW5pbmcgZWxlbWVudCB3aXRoIHRoZSAqKmRpc2FibGVkKiogYXR0cmlidXRlIHNldCwgdGhlbiB0aGUgYnV0dG9uIGlzIGVuYWJsZWQuXG5cbkZpcmVmb3ggd2lsbCwgdW5saWtlIG90aGVyIGJyb3dzZXJzLCBieSBkZWZhdWx0LCBbcGVyc2lzdCB0aGUgZHluYW1pYyBkaXNhYmxlZCBzdGF0ZV0oaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvNTk4NTgzOS9idWctd2l0aC1maXJlZm94LWRpc2FibGVkLWF0dHJpYnV0ZS1vZi1pbnB1dC1ub3QtcmVzZXR0aW5nLXdoZW4tcmVmcmVzaGluZykgb2YgYSBbYDxidXR0b24+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2J1dHRvbiAiVGhlIEhUTUwgPGJ1dHRvbj4gZWxlbWVudCByZXByZXNlbnRzIGEgY2xpY2thYmxlIGJ1dHRvbiwgd2hpY2ggY2FuIGJlIHVzZWQgaW4gZm9ybXMgb3IgYW55d2hlcmUgaW4gYSBkb2N1bWVudCB0aGF0IG5lZWRzIHNpbXBsZSwgc3RhbmRhcmQgYnV0dG9uIGZ1bmN0aW9uYWxpdHkuIikgYWNyb3NzIHBhZ2UgbG9hZHMuIFVzZSB0aGUgW2BhdXRvY29tcGxldGVgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvYnV0dG9uI2F0dHItYXV0b2NvbXBsZXRlKSBhdHRyaWJ1dGUgdG8gY29udHJvbCB0aGlzIGZlYXR1cmUuJ319LHtuYW1lOiJmb3JtIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOidUaGUgZm9ybSBlbGVtZW50IHRoYXQgdGhlIGJ1dHRvbiBpcyBhc3NvY2lhdGVkIHdpdGggKGl0cyBfZm9ybSBvd25lcl8pLiBUaGUgdmFsdWUgb2YgdGhlIGF0dHJpYnV0ZSBtdXN0IGJlIHRoZSAqKmlkKiogYXR0cmlidXRlIG9mIGEgW2A8Zm9ybT5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvZm9ybSAiVGhlIEhUTUwgPGZvcm0+IGVsZW1lbnQgcmVwcmVzZW50cyBhIGRvY3VtZW50IHNlY3Rpb24gdGhhdCBjb250YWlucyBpbnRlcmFjdGl2ZSBjb250cm9scyBmb3Igc3VibWl0dGluZyBpbmZvcm1hdGlvbiB0byBhIHdlYiBzZXJ2ZXIuIikgZWxlbWVudCBpbiB0aGUgc2FtZSBkb2N1bWVudC4gSWYgdGhpcyBhdHRyaWJ1dGUgaXMgbm90IHNwZWNpZmllZCwgdGhlIGA8YnV0dG9uPmAgZWxlbWVudCB3aWxsIGJlIGFzc29jaWF0ZWQgdG8gYW4gYW5jZXN0b3IgW2A8Zm9ybT5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvZm9ybSAiVGhlIEhUTUwgPGZvcm0+IGVsZW1lbnQgcmVwcmVzZW50cyBhIGRvY3VtZW50IHNlY3Rpb24gdGhhdCBjb250YWlucyBpbnRlcmFjdGl2ZSBjb250cm9scyBmb3Igc3VibWl0dGluZyBpbmZvcm1hdGlvbiB0byBhIHdlYiBzZXJ2ZXIuIikgZWxlbWVudCwgaWYgb25lIGV4aXN0cy4gVGhpcyBhdHRyaWJ1dGUgZW5hYmxlcyB5b3UgdG8gYXNzb2NpYXRlIGA8YnV0dG9uPmAgZWxlbWVudHMgdG8gW2A8Zm9ybT5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvZm9ybSAiVGhlIEhUTUwgPGZvcm0+IGVsZW1lbnQgcmVwcmVzZW50cyBhIGRvY3VtZW50IHNlY3Rpb24gdGhhdCBjb250YWlucyBpbnRlcmFjdGl2ZSBjb250cm9scyBmb3Igc3VibWl0dGluZyBpbmZvcm1hdGlvbiB0byBhIHdlYiBzZXJ2ZXIuIikgZWxlbWVudHMgYW55d2hlcmUgd2l0aGluIGEgZG9jdW1lbnQsIG5vdCBqdXN0IGFzIGRlc2NlbmRhbnRzIG9mIFtgPGZvcm0+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2Zvcm0gIlRoZSBIVE1MIDxmb3JtPiBlbGVtZW50IHJlcHJlc2VudHMgYSBkb2N1bWVudCBzZWN0aW9uIHRoYXQgY29udGFpbnMgaW50ZXJhY3RpdmUgY29udHJvbHMgZm9yIHN1Ym1pdHRpbmcgaW5mb3JtYXRpb24gdG8gYSB3ZWIgc2VydmVyLiIpIGVsZW1lbnRzLid9fSx7bmFtZToiZm9ybWFjdGlvbiIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIFVSSSBvZiBhIHByb2dyYW0gdGhhdCBwcm9jZXNzZXMgdGhlIGluZm9ybWF0aW9uIHN1Ym1pdHRlZCBieSB0aGUgYnV0dG9uLiBJZiBzcGVjaWZpZWQsIGl0IG92ZXJyaWRlcyB0aGUgW2BhY3Rpb25gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvZm9ybSNhdHRyLWFjdGlvbikgYXR0cmlidXRlIG9mIHRoZSBidXR0b24ncyBmb3JtIG93bmVyLiJ9fSx7bmFtZToiZm9ybWVuY3R5cGUiLHZhbHVlU2V0OiJldCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTonSWYgdGhlIGJ1dHRvbiBpcyBhIHN1Ym1pdCBidXR0b24sIHRoaXMgYXR0cmlidXRlIHNwZWNpZmllcyB0aGUgdHlwZSBvZiBjb250ZW50IHRoYXQgaXMgdXNlZCB0byBzdWJtaXQgdGhlIGZvcm0gdG8gdGhlIHNlcnZlci4gUG9zc2libGUgdmFsdWVzIGFyZTpcblxuKiAgIGBhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWRgOiBUaGUgZGVmYXVsdCB2YWx1ZSBpZiB0aGUgYXR0cmlidXRlIGlzIG5vdCBzcGVjaWZpZWQuXG4qICAgYG11bHRpcGFydC9mb3JtLWRhdGFgOiBVc2UgdGhpcyB2YWx1ZSBpZiB5b3UgYXJlIHVzaW5nIGFuIFtgPGlucHV0PmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9pbnB1dCAiVGhlIEhUTUwgPGlucHV0PiBlbGVtZW50IGlzIHVzZWQgdG8gY3JlYXRlIGludGVyYWN0aXZlIGNvbnRyb2xzIGZvciB3ZWItYmFzZWQgZm9ybXMgaW4gb3JkZXIgdG8gYWNjZXB0IGRhdGEgZnJvbSB0aGUgdXNlcjsgYSB3aWRlIHZhcmlldHkgb2YgdHlwZXMgb2YgaW5wdXQgZGF0YSBhbmQgY29udHJvbCB3aWRnZXRzIGFyZSBhdmFpbGFibGUsIGRlcGVuZGluZyBvbiB0aGUgZGV2aWNlIGFuZCB1c2VyIGFnZW50LiIpIGVsZW1lbnQgd2l0aCB0aGUgW2B0eXBlYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2lucHV0I2F0dHItdHlwZSkgYXR0cmlidXRlIHNldCB0byBgZmlsZWAuXG4qICAgYHRleHQvcGxhaW5gXG5cbklmIHRoaXMgYXR0cmlidXRlIGlzIHNwZWNpZmllZCwgaXQgb3ZlcnJpZGVzIHRoZSBbYGVuY3R5cGVgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvZm9ybSNhdHRyLWVuY3R5cGUpIGF0dHJpYnV0ZSBvZiB0aGUgYnV0dG9uXCdzIGZvcm0gb3duZXIuJ319LHtuYW1lOiJmb3JtbWV0aG9kIix2YWx1ZVNldDoiZm0iLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IklmIHRoZSBidXR0b24gaXMgYSBzdWJtaXQgYnV0dG9uLCB0aGlzIGF0dHJpYnV0ZSBzcGVjaWZpZXMgdGhlIEhUVFAgbWV0aG9kIHRoYXQgdGhlIGJyb3dzZXIgdXNlcyB0byBzdWJtaXQgdGhlIGZvcm0uIFBvc3NpYmxlIHZhbHVlcyBhcmU6XG5cbiogICBgcG9zdGA6IFRoZSBkYXRhIGZyb20gdGhlIGZvcm0gYXJlIGluY2x1ZGVkIGluIHRoZSBib2R5IG9mIHRoZSBmb3JtIGFuZCBzZW50IHRvIHRoZSBzZXJ2ZXIuXG4qICAgYGdldGA6IFRoZSBkYXRhIGZyb20gdGhlIGZvcm0gYXJlIGFwcGVuZGVkIHRvIHRoZSAqKmZvcm0qKiBhdHRyaWJ1dGUgVVJJLCB3aXRoIGEgJz8nIGFzIGEgc2VwYXJhdG9yLCBhbmQgdGhlIHJlc3VsdGluZyBVUkkgaXMgc2VudCB0byB0aGUgc2VydmVyLiBVc2UgdGhpcyBtZXRob2Qgd2hlbiB0aGUgZm9ybSBoYXMgbm8gc2lkZS1lZmZlY3RzIGFuZCBjb250YWlucyBvbmx5IEFTQ0lJIGNoYXJhY3RlcnMuXG5cbklmIHNwZWNpZmllZCwgdGhpcyBhdHRyaWJ1dGUgb3ZlcnJpZGVzIHRoZSBbYG1ldGhvZGBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9mb3JtI2F0dHItbWV0aG9kKSBhdHRyaWJ1dGUgb2YgdGhlIGJ1dHRvbidzIGZvcm0gb3duZXIuIn19LHtuYW1lOiJmb3Jtbm92YWxpZGF0ZSIsdmFsdWVTZXQ6InYiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IklmIHRoZSBidXR0b24gaXMgYSBzdWJtaXQgYnV0dG9uLCB0aGlzIEJvb2xlYW4gYXR0cmlidXRlIHNwZWNpZmllcyB0aGF0IHRoZSBmb3JtIGlzIG5vdCB0byBiZSB2YWxpZGF0ZWQgd2hlbiBpdCBpcyBzdWJtaXR0ZWQuIElmIHRoaXMgYXR0cmlidXRlIGlzIHNwZWNpZmllZCwgaXQgb3ZlcnJpZGVzIHRoZSBbYG5vdmFsaWRhdGVgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvZm9ybSNhdHRyLW5vdmFsaWRhdGUpIGF0dHJpYnV0ZSBvZiB0aGUgYnV0dG9uJ3MgZm9ybSBvd25lci4ifX0se25hbWU6ImZvcm10YXJnZXQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IklmIHRoZSBidXR0b24gaXMgYSBzdWJtaXQgYnV0dG9uLCB0aGlzIGF0dHJpYnV0ZSBpcyBhIG5hbWUgb3Iga2V5d29yZCBpbmRpY2F0aW5nIHdoZXJlIHRvIGRpc3BsYXkgdGhlIHJlc3BvbnNlIHRoYXQgaXMgcmVjZWl2ZWQgYWZ0ZXIgc3VibWl0dGluZyB0aGUgZm9ybS4gVGhpcyBpcyBhIG5hbWUgb2YsIG9yIGtleXdvcmQgZm9yLCBhIF9icm93c2luZyBjb250ZXh0XyAoZm9yIGV4YW1wbGUsIHRhYiwgd2luZG93LCBvciBpbmxpbmUgZnJhbWUpLiBJZiB0aGlzIGF0dHJpYnV0ZSBpcyBzcGVjaWZpZWQsIGl0IG92ZXJyaWRlcyB0aGUgW2B0YXJnZXRgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvZm9ybSNhdHRyLXRhcmdldCkgYXR0cmlidXRlIG9mIHRoZSBidXR0b24ncyBmb3JtIG93bmVyLiBUaGUgZm9sbG93aW5nIGtleXdvcmRzIGhhdmUgc3BlY2lhbCBtZWFuaW5nczpcblxuKiAgIGBfc2VsZmA6IExvYWQgdGhlIHJlc3BvbnNlIGludG8gdGhlIHNhbWUgYnJvd3NpbmcgY29udGV4dCBhcyB0aGUgY3VycmVudCBvbmUuIFRoaXMgdmFsdWUgaXMgdGhlIGRlZmF1bHQgaWYgdGhlIGF0dHJpYnV0ZSBpcyBub3Qgc3BlY2lmaWVkLlxuKiAgIGBfYmxhbmtgOiBMb2FkIHRoZSByZXNwb25zZSBpbnRvIGEgbmV3IHVubmFtZWQgYnJvd3NpbmcgY29udGV4dC5cbiogICBgX3BhcmVudGA6IExvYWQgdGhlIHJlc3BvbnNlIGludG8gdGhlIHBhcmVudCBicm93c2luZyBjb250ZXh0IG9mIHRoZSBjdXJyZW50IG9uZS4gSWYgdGhlcmUgaXMgbm8gcGFyZW50LCB0aGlzIG9wdGlvbiBiZWhhdmVzIHRoZSBzYW1lIHdheSBhcyBgX3NlbGZgLlxuKiAgIGBfdG9wYDogTG9hZCB0aGUgcmVzcG9uc2UgaW50byB0aGUgdG9wLWxldmVsIGJyb3dzaW5nIGNvbnRleHQgKHRoYXQgaXMsIHRoZSBicm93c2luZyBjb250ZXh0IHRoYXQgaXMgYW4gYW5jZXN0b3Igb2YgdGhlIGN1cnJlbnQgb25lLCBhbmQgaGFzIG5vIHBhcmVudCkuIElmIHRoZXJlIGlzIG5vIHBhcmVudCwgdGhpcyBvcHRpb24gYmVoYXZlcyB0aGUgc2FtZSB3YXkgYXMgYF9zZWxmYC4ifX0se25hbWU6Im5hbWUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBuYW1lIG9mIHRoZSBidXR0b24sIHdoaWNoIGlzIHN1Ym1pdHRlZCB3aXRoIHRoZSBmb3JtIGRhdGEuIn19LHtuYW1lOiJ0eXBlIix2YWx1ZVNldDoiYnQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSB0eXBlIG9mIHRoZSBidXR0b24uIFBvc3NpYmxlIHZhbHVlcyBhcmU6XG5cbiogICBgc3VibWl0YDogVGhlIGJ1dHRvbiBzdWJtaXRzIHRoZSBmb3JtIGRhdGEgdG8gdGhlIHNlcnZlci4gVGhpcyBpcyB0aGUgZGVmYXVsdCBpZiB0aGUgYXR0cmlidXRlIGlzIG5vdCBzcGVjaWZpZWQsIG9yIGlmIHRoZSBhdHRyaWJ1dGUgaXMgZHluYW1pY2FsbHkgY2hhbmdlZCB0byBhbiBlbXB0eSBvciBpbnZhbGlkIHZhbHVlLlxuKiAgIGByZXNldGA6IFRoZSBidXR0b24gcmVzZXRzIGFsbCB0aGUgY29udHJvbHMgdG8gdGhlaXIgaW5pdGlhbCB2YWx1ZXMuXG4qICAgYGJ1dHRvbmA6IFRoZSBidXR0b24gaGFzIG5vIGRlZmF1bHQgYmVoYXZpb3IuIEl0IGNhbiBoYXZlIGNsaWVudC1zaWRlIHNjcmlwdHMgYXNzb2NpYXRlZCB3aXRoIHRoZSBlbGVtZW50J3MgZXZlbnRzLCB3aGljaCBhcmUgdHJpZ2dlcmVkIHdoZW4gdGhlIGV2ZW50cyBvY2N1ci4ifX0se25hbWU6InZhbHVlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgaW5pdGlhbCB2YWx1ZSBvZiB0aGUgYnV0dG9uLiBJdCBkZWZpbmVzIHRoZSB2YWx1ZSBhc3NvY2lhdGVkIHdpdGggdGhlIGJ1dHRvbiB3aGljaCBpcyBzdWJtaXR0ZWQgd2l0aCB0aGUgZm9ybSBkYXRhLiBUaGlzIHZhbHVlIGlzIHBhc3NlZCB0byB0aGUgc2VydmVyIGluIHBhcmFtcyB3aGVuIHRoZSBmb3JtIGlzIHN1Ym1pdHRlZC4ifX0se25hbWU6ImF1dG9jb21wbGV0ZSIsZGVzY3JpcHRpb246J1RoZSB1c2Ugb2YgdGhpcyBhdHRyaWJ1dGUgb24gYSBbYDxidXR0b24+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2J1dHRvbiAiVGhlIEhUTUwgPGJ1dHRvbj4gZWxlbWVudCByZXByZXNlbnRzIGEgY2xpY2thYmxlIGJ1dHRvbiwgd2hpY2ggY2FuIGJlIHVzZWQgaW4gZm9ybXMgb3IgYW55d2hlcmUgaW4gYSBkb2N1bWVudCB0aGF0IG5lZWRzIHNpbXBsZSwgc3RhbmRhcmQgYnV0dG9uIGZ1bmN0aW9uYWxpdHkuIikgaXMgbm9uc3RhbmRhcmQgYW5kIEZpcmVmb3gtc3BlY2lmaWMuIEJ5IGRlZmF1bHQsIHVubGlrZSBvdGhlciBicm93c2VycywgW0ZpcmVmb3ggcGVyc2lzdHMgdGhlIGR5bmFtaWMgZGlzYWJsZWQgc3RhdGVdKGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzU5ODU4MzkvYnVnLXdpdGgtZmlyZWZveC1kaXNhYmxlZC1hdHRyaWJ1dGUtb2YtaW5wdXQtbm90LXJlc2V0dGluZy13aGVuLXJlZnJlc2hpbmcpIG9mIGEgW2A8YnV0dG9uPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9idXR0b24gIlRoZSBIVE1MIDxidXR0b24+IGVsZW1lbnQgcmVwcmVzZW50cyBhIGNsaWNrYWJsZSBidXR0b24sIHdoaWNoIGNhbiBiZSB1c2VkIGluIGZvcm1zIG9yIGFueXdoZXJlIGluIGEgZG9jdW1lbnQgdGhhdCBuZWVkcyBzaW1wbGUsIHN0YW5kYXJkIGJ1dHRvbiBmdW5jdGlvbmFsaXR5LiIpIGFjcm9zcyBwYWdlIGxvYWRzLiBTZXR0aW5nIHRoZSB2YWx1ZSBvZiB0aGlzIGF0dHJpYnV0ZSB0byBgb2ZmYCAoaS5lLiBgYXV0b2NvbXBsZXRlPSJvZmYiYCkgZGlzYWJsZXMgdGhpcyBmZWF0dXJlLiBTZWUgW2J1Z8KgNjU0MDcyXShodHRwczovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD02NTQwNzIgImlmIGRpc2FibGVkIHN0YXRlIGlzIGNoYW5nZWQgd2l0aCBqYXZhc2NyaXB0LCB0aGUgbm9ybWFsIHN0YXRlIGRvZXNuXCd0IHJldHVybiBhZnRlciByZWZyZXNoaW5nIHRoZSBwYWdlIikuJ31dLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9idXR0b24ifV19LHtuYW1lOiJzZWxlY3QiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBzZWxlY3QgZWxlbWVudCByZXByZXNlbnRzIGEgY29udHJvbCBmb3Igc2VsZWN0aW5nIGFtb25nc3QgYSBzZXQgb2Ygb3B0aW9ucy4ifSxhdHRyaWJ1dGVzOlt7bmFtZToiYXV0b2NvbXBsZXRlIix2YWx1ZVNldDoiaW5wdXRhdXRvY29tcGxldGUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6J0EgW2BET01TdHJpbmdgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvRE9NU3RyaW5nICJET01TdHJpbmcgaXMgYSBVVEYtMTYgU3RyaW5nLiBBcyBKYXZhU2NyaXB0IGFscmVhZHkgdXNlcyBzdWNoIHN0cmluZ3MsIERPTVN0cmluZyBpcyBtYXBwZWQgZGlyZWN0bHkgdG8gYSBTdHJpbmcuIikgcHJvdmlkaW5nIGEgaGludCBmb3IgYSBbdXNlciBhZ2VudFwnc10oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9HbG9zc2FyeS91c2VyX2FnZW50ICJ1c2VyIGFnZW50XCdzOiBBIHVzZXIgYWdlbnQgaXMgYSBjb21wdXRlciBwcm9ncmFtIHJlcHJlc2VudGluZyBhIHBlcnNvbiwgZm9yIGV4YW1wbGUsIGEgYnJvd3NlciBpbiBhIFdlYiBjb250ZXh0LiIpIGF1dG9jb21wbGV0ZSBmZWF0dXJlLiBTZWUgW1RoZSBIVE1MIGF1dG9jb21wbGV0ZSBhdHRyaWJ1dGVdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvQXR0cmlidXRlcy9hdXRvY29tcGxldGUpIGZvciBhIGNvbXBsZXRlIGxpc3Qgb2YgdmFsdWVzIGFuZCBkZXRhaWxzIG9uIGhvdyB0byB1c2UgYXV0b2NvbXBsZXRlLid9fSx7bmFtZToiYXV0b2ZvY3VzIix2YWx1ZVNldDoidiIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhpcyBCb29sZWFuIGF0dHJpYnV0ZSBsZXRzIHlvdSBzcGVjaWZ5IHRoYXQgYSBmb3JtIGNvbnRyb2wgc2hvdWxkIGhhdmUgaW5wdXQgZm9jdXMgd2hlbiB0aGUgcGFnZSBsb2Fkcy4gT25seSBvbmUgZm9ybSBlbGVtZW50IGluIGEgZG9jdW1lbnQgY2FuIGhhdmUgdGhlIGBhdXRvZm9jdXNgIGF0dHJpYnV0ZS4ifX0se25hbWU6ImRpc2FibGVkIix2YWx1ZVNldDoidiIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhpcyBCb29sZWFuIGF0dHJpYnV0ZSBpbmRpY2F0ZXMgdGhhdCB0aGUgdXNlciBjYW5ub3QgaW50ZXJhY3Qgd2l0aCB0aGUgY29udHJvbC4gSWYgdGhpcyBhdHRyaWJ1dGUgaXMgbm90IHNwZWNpZmllZCwgdGhlIGNvbnRyb2wgaW5oZXJpdHMgaXRzIHNldHRpbmcgZnJvbSB0aGUgY29udGFpbmluZyBlbGVtZW50LCBmb3IgZXhhbXBsZSBgZmllbGRzZXRgOyBpZiB0aGVyZSBpcyBubyBjb250YWluaW5nIGVsZW1lbnQgd2l0aCB0aGUgYGRpc2FibGVkYCBhdHRyaWJ1dGUgc2V0LCB0aGVuIHRoZSBjb250cm9sIGlzIGVuYWJsZWQuIn19LHtuYW1lOiJmb3JtIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOidUaGlzIGF0dHJpYnV0ZSBsZXRzIHlvdSBzcGVjaWZ5IHRoZSBmb3JtIGVsZW1lbnQgdG/CoHdoaWNowqB0aGUgc2VsZWN0IGVsZW1lbnQgaXMgYXNzb2NpYXRlZMKgKHRoYXQgaXMsIGl0cyAiZm9ybSBvd25lciIpLiBJZiB0aGlzIGF0dHJpYnV0ZSBpcyBzcGVjaWZpZWQsIGl0cyB2YWx1ZSBtdXN0IGJlIHRoZSBzYW1lIGFzIHRoZSBgaWRgIG9mIGEgZm9ybSBlbGVtZW50IGluIHRoZSBzYW1lIGRvY3VtZW50LiBUaGlzIGVuYWJsZXMgeW91IHRvIHBsYWNlIHNlbGVjdCBlbGVtZW50cyBhbnl3aGVyZSB3aXRoaW4gYSBkb2N1bWVudCwgbm90IGp1c3QgYXMgZGVzY2VuZGFudHMgb2YgdGhlaXIgZm9ybSBlbGVtZW50cy4nfX0se25hbWU6Im11bHRpcGxlIix2YWx1ZVNldDoidiIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhpcyBCb29sZWFuIGF0dHJpYnV0ZSBpbmRpY2F0ZXMgdGhhdCBtdWx0aXBsZSBvcHRpb25zIGNhbiBiZSBzZWxlY3RlZCBpbiB0aGUgbGlzdC4gSWYgaXQgaXMgbm90IHNwZWNpZmllZCwgdGhlbiBvbmx5IG9uZSBvcHRpb24gY2FuIGJlIHNlbGVjdGVkIGF0IGEgdGltZS4gV2hlbiBgbXVsdGlwbGVgIGlzIHNwZWNpZmllZCwgbW9zdCBicm93c2VycyB3aWxsIHNob3cgYSBzY3JvbGxpbmcgbGlzdCBib3ggaW5zdGVhZCBvZiBhIHNpbmdsZSBsaW5lIGRyb3Bkb3duLiJ9fSx7bmFtZToibmFtZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhpcyBhdHRyaWJ1dGUgaXMgdXNlZCB0byBzcGVjaWZ5IHRoZSBuYW1lIG9mIHRoZSBjb250cm9sLiJ9fSx7bmFtZToicmVxdWlyZWQiLHZhbHVlU2V0OiJ2IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJBIEJvb2xlYW4gYXR0cmlidXRlIGluZGljYXRpbmcgdGhhdCBhbiBvcHRpb24gd2l0aCBhIG5vbi1lbXB0eSBzdHJpbmcgdmFsdWUgbXVzdCBiZSBzZWxlY3RlZC4ifX0se25hbWU6InNpemUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IklmIHRoZSBjb250cm9sIGlzIHByZXNlbnRlZCBhcyBhIHNjcm9sbGluZyBsaXN0IGJveCAoZS5nLiB3aGVuIGBtdWx0aXBsZWAgaXMgc3BlY2lmaWVkKSwgdGhpcyBhdHRyaWJ1dGUgcmVwcmVzZW50cyB0aGUgbnVtYmVyIG9mIHJvd3MgaW4gdGhlIGxpc3QgdGhhdCBzaG91bGQgYmUgdmlzaWJsZSBhdCBvbmUgdGltZS4gQnJvd3NlcnMgYXJlIG5vdCByZXF1aXJlZCB0byBwcmVzZW50IGEgc2VsZWN0IGVsZW1lbnQgYXMgYSBzY3JvbGxlZCBsaXN0IGJveC4gVGhlIGRlZmF1bHQgdmFsdWUgaXMgMC5cblxuKipOb3RlOioqIEFjY29yZGluZyB0byB0aGUgSFRNTDUgc3BlY2lmaWNhdGlvbiwgdGhlIGRlZmF1bHQgdmFsdWUgZm9yIHNpemUgc2hvdWxkIGJlIDE7IGhvd2V2ZXIsIGluIHByYWN0aWNlLCB0aGlzIGhhcyBiZWVuIGZvdW5kIHRvIGJyZWFrIHNvbWUgd2ViIHNpdGVzLCBhbmQgbm8gb3RoZXIgYnJvd3NlciBjdXJyZW50bHkgZG9lcyB0aGF0LCBzbyBNb3ppbGxhIGhhcyBvcHRlZCB0byBjb250aW51ZSB0byByZXR1cm4gMCBmb3IgdGhlIHRpbWUgYmVpbmcgd2l0aCBGaXJlZm94LiJ9fV0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3NlbGVjdCJ9XX0se25hbWU6ImRhdGFsaXN0IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgZGF0YWxpc3QgZWxlbWVudCByZXByZXNlbnRzIGEgc2V0IG9mIG9wdGlvbiBlbGVtZW50cyB0aGF0IHJlcHJlc2VudCBwcmVkZWZpbmVkIG9wdGlvbnMgZm9yIG90aGVyIGNvbnRyb2xzLiBJbiB0aGUgcmVuZGVyaW5nLCB0aGUgZGF0YWxpc3QgZWxlbWVudCByZXByZXNlbnRzIG5vdGhpbmcgYW5kIGl0LCBhbG9uZyB3aXRoIGl0cyBjaGlsZHJlbiwgc2hvdWxkIGJlIGhpZGRlbi4ifSxhdHRyaWJ1dGVzOltdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9kYXRhbGlzdCJ9XX0se25hbWU6Im9wdGdyb3VwIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgb3B0Z3JvdXAgZWxlbWVudCByZXByZXNlbnRzIGEgZ3JvdXAgb2Ygb3B0aW9uIGVsZW1lbnRzIHdpdGggYSBjb21tb24gbGFiZWwuIn0sYXR0cmlidXRlczpbe25hbWU6ImRpc2FibGVkIix2YWx1ZVNldDoidiIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiSWYgdGhpcyBCb29sZWFuIGF0dHJpYnV0ZSBpcyBzZXQsIG5vbmUgb2YgdGhlIGl0ZW1zIGluIHRoaXMgb3B0aW9uIGdyb3VwIGlzIHNlbGVjdGFibGUuIE9mdGVuIGJyb3dzZXJzIGdyZXkgb3V0IHN1Y2ggY29udHJvbCBhbmQgaXQgd29uJ3QgcmVjZWl2ZSBhbnkgYnJvd3NpbmcgZXZlbnRzLCBsaWtlIG1vdXNlIGNsaWNrcyBvciBmb2N1cy1yZWxhdGVkIG9uZXMuIn19LHtuYW1lOiJsYWJlbCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIG5hbWUgb2YgdGhlIGdyb3VwIG9mIG9wdGlvbnMsIHdoaWNoIHRoZSBicm93c2VyIGNhbiB1c2Ugd2hlbiBsYWJlbGluZyB0aGUgb3B0aW9ucyBpbiB0aGUgdXNlciBpbnRlcmZhY2UuIFRoaXMgYXR0cmlidXRlIGlzIG1hbmRhdG9yeSBpZiB0aGlzIGVsZW1lbnQgaXMgdXNlZC4ifX1dLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9vcHRncm91cCJ9XX0se25hbWU6Im9wdGlvbiIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIG9wdGlvbiBlbGVtZW50IHJlcHJlc2VudHMgYW4gb3B0aW9uIGluIGEgc2VsZWN0IGVsZW1lbnQgb3IgYXMgcGFydCBvZiBhIGxpc3Qgb2Ygc3VnZ2VzdGlvbnMgaW4gYSBkYXRhbGlzdCBlbGVtZW50LiJ9LGF0dHJpYnV0ZXM6W3tuYW1lOiJkaXNhYmxlZCIsdmFsdWVTZXQ6InYiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6J0lmIHRoaXMgQm9vbGVhbiBhdHRyaWJ1dGUgaXMgc2V0LCB0aGlzIG9wdGlvbiBpcyBub3QgY2hlY2thYmxlLiBPZnRlbiBicm93c2VycyBncmV5IG91dCBzdWNoIGNvbnRyb2wgYW5kIGl0IHdvblwndCByZWNlaXZlIGFueSBicm93c2luZyBldmVudCwgbGlrZSBtb3VzZSBjbGlja3Mgb3IgZm9jdXMtcmVsYXRlZCBvbmVzLiBJZiB0aGlzIGF0dHJpYnV0ZSBpcyBub3Qgc2V0LCB0aGUgZWxlbWVudCBjYW4gc3RpbGwgYmUgZGlzYWJsZWQgaWYgb25lIG9mIGl0cyBhbmNlc3RvcnMgaXMgYSBkaXNhYmxlZCBbYDxvcHRncm91cD5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvb3B0Z3JvdXAgIlRoZSBIVE1MIDxvcHRncm91cD4gZWxlbWVudCBjcmVhdGVzIGEgZ3JvdXBpbmcgb2Ygb3B0aW9ucyB3aXRoaW4gYSA8c2VsZWN0PiBlbGVtZW50LiIpIGVsZW1lbnQuJ319LHtuYW1lOiJsYWJlbCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhpcyBhdHRyaWJ1dGUgaXMgdGV4dCBmb3IgdGhlIGxhYmVsIGluZGljYXRpbmcgdGhlIG1lYW5pbmcgb2YgdGhlIG9wdGlvbi4gSWYgdGhlIGBsYWJlbGAgYXR0cmlidXRlIGlzbid0IGRlZmluZWQsIGl0cyB2YWx1ZSBpcyB0aGF0IG9mIHRoZSBlbGVtZW50IHRleHQgY29udGVudC4ifX0se25hbWU6InNlbGVjdGVkIix2YWx1ZVNldDoidiIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTonSWYgcHJlc2VudCwgdGhpcyBCb29sZWFuIGF0dHJpYnV0ZSBpbmRpY2F0ZXMgdGhhdCB0aGUgb3B0aW9uIGlzIGluaXRpYWxseSBzZWxlY3RlZC4gSWYgdGhlIGA8b3B0aW9uPmAgZWxlbWVudCBpcyB0aGUgZGVzY2VuZGFudCBvZiBhIFtgPHNlbGVjdD5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvc2VsZWN0ICJUaGUgSFRNTCA8c2VsZWN0PiBlbGVtZW50IHJlcHJlc2VudHMgYSBjb250cm9sIHRoYXQgcHJvdmlkZXMgYSBtZW51IG9mIG9wdGlvbnMiKSBlbGVtZW50IHdob3NlIFtgbXVsdGlwbGVgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvc2VsZWN0I2F0dHItbXVsdGlwbGUpIGF0dHJpYnV0ZSBpcyBub3Qgc2V0LCBvbmx5IG9uZSBzaW5nbGUgYDxvcHRpb24+YCBvZiB0aGlzIFtgPHNlbGVjdD5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvc2VsZWN0ICJUaGUgSFRNTCA8c2VsZWN0PiBlbGVtZW50IHJlcHJlc2VudHMgYSBjb250cm9sIHRoYXQgcHJvdmlkZXMgYSBtZW51IG9mIG9wdGlvbnMiKSBlbGVtZW50IG1heSBoYXZlIHRoZSBgc2VsZWN0ZWRgIGF0dHJpYnV0ZS4nfX0se25hbWU6InZhbHVlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgY29udGVudCBvZiB0aGlzIGF0dHJpYnV0ZSByZXByZXNlbnRzIHRoZSB2YWx1ZSB0byBiZSBzdWJtaXR0ZWQgd2l0aCB0aGUgZm9ybSwgc2hvdWxkIHRoaXMgb3B0aW9uIGJlIHNlbGVjdGVkLsKgSWYgdGhpcyBhdHRyaWJ1dGUgaXMgb21pdHRlZCwgdGhlIHZhbHVlIGlzIHRha2VuIGZyb20gdGhlIHRleHQgY29udGVudCBvZiB0aGUgb3B0aW9uIGVsZW1lbnQuIn19XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvb3B0aW9uIn1dfSx7bmFtZToidGV4dGFyZWEiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSB0ZXh0YXJlYSBlbGVtZW50IHJlcHJlc2VudHMgYSBtdWx0aWxpbmUgcGxhaW4gdGV4dCBlZGl0IGNvbnRyb2wgZm9yIHRoZSBlbGVtZW50J3MgcmF3IHZhbHVlLiBUaGUgY29udGVudHMgb2YgdGhlIGNvbnRyb2wgcmVwcmVzZW50IHRoZSBjb250cm9sJ3MgZGVmYXVsdCB2YWx1ZS4ifSxhdHRyaWJ1dGVzOlt7bmFtZToiYXV0b2NvbXBsZXRlIix2YWx1ZVNldDoiaW5wdXRhdXRvY29tcGxldGUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6J1RoaXMgYXR0cmlidXRlIGluZGljYXRlcyB3aGV0aGVyIHRoZSB2YWx1ZSBvZiB0aGUgY29udHJvbCBjYW4gYmUgYXV0b21hdGljYWxseSBjb21wbGV0ZWQgYnkgdGhlIGJyb3dzZXIuIFBvc3NpYmxlIHZhbHVlcyBhcmU6XG5cbiogICBgb2ZmYDogVGhlIHVzZXIgbXVzdCBleHBsaWNpdGx5IGVudGVyIGEgdmFsdWUgaW50byB0aGlzIGZpZWxkIGZvciBldmVyeSB1c2UsIG9yIHRoZSBkb2N1bWVudCBwcm92aWRlcyBpdHMgb3duIGF1dG8tY29tcGxldGlvbiBtZXRob2Q7IHRoZSBicm93c2VyIGRvZXMgbm90IGF1dG9tYXRpY2FsbHkgY29tcGxldGUgdGhlIGVudHJ5LlxuKiAgIGBvbmA6IFRoZSBicm93c2VyIGNhbiBhdXRvbWF0aWNhbGx5IGNvbXBsZXRlIHRoZSB2YWx1ZSBiYXNlZCBvbiB2YWx1ZXMgdGhhdCB0aGUgdXNlciBoYXMgZW50ZXJlZCBkdXJpbmcgcHJldmlvdXMgdXNlcy5cblxuSWYgdGhlIGBhdXRvY29tcGxldGVgIGF0dHJpYnV0ZSBpcyBub3Qgc3BlY2lmaWVkIG9uIGEgYDx0ZXh0YXJlYT5gIGVsZW1lbnQsIHRoZW4gdGhlIGJyb3dzZXIgdXNlcyB0aGUgYGF1dG9jb21wbGV0ZWAgYXR0cmlidXRlIHZhbHVlIG9mIHRoZSBgPHRleHRhcmVhPmAgZWxlbWVudFwncyBmb3JtIG93bmVyLiBUaGUgZm9ybSBvd25lciBpcyBlaXRoZXIgdGhlIFtgPGZvcm0+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2Zvcm0gIlRoZSBIVE1MIDxmb3JtPiBlbGVtZW50IHJlcHJlc2VudHMgYSBkb2N1bWVudCBzZWN0aW9uIHRoYXQgY29udGFpbnMgaW50ZXJhY3RpdmUgY29udHJvbHMgZm9yIHN1Ym1pdHRpbmcgaW5mb3JtYXRpb24gdG8gYSB3ZWIgc2VydmVyLiIpIGVsZW1lbnQgdGhhdCB0aGlzIGA8dGV4dGFyZWE+YCBlbGVtZW50IGlzIGEgZGVzY2VuZGFudCBvZiBvciB0aGUgZm9ybSBlbGVtZW50IHdob3NlIGBpZGAgaXMgc3BlY2lmaWVkIGJ5IHRoZSBgZm9ybWAgYXR0cmlidXRlIG9mIHRoZSBpbnB1dCBlbGVtZW50LiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIHRoZSBbYGF1dG9jb21wbGV0ZWBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9mb3JtI2F0dHItYXV0b2NvbXBsZXRlKSBhdHRyaWJ1dGUgaW4gW2A8Zm9ybT5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvZm9ybSAiVGhlIEhUTUwgPGZvcm0+IGVsZW1lbnQgcmVwcmVzZW50cyBhIGRvY3VtZW50IHNlY3Rpb24gdGhhdCBjb250YWlucyBpbnRlcmFjdGl2ZSBjb250cm9scyBmb3Igc3VibWl0dGluZyBpbmZvcm1hdGlvbiB0byBhIHdlYiBzZXJ2ZXIuIikuJ319LHtuYW1lOiJhdXRvZm9jdXMiLHZhbHVlU2V0OiJ2IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGlzIEJvb2xlYW4gYXR0cmlidXRlIGxldHMgeW91IHNwZWNpZnkgdGhhdCBhIGZvcm0gY29udHJvbCBzaG91bGQgaGF2ZSBpbnB1dCBmb2N1cyB3aGVuIHRoZSBwYWdlIGxvYWRzLiBPbmx5IG9uZSBmb3JtLWFzc29jaWF0ZWQgZWxlbWVudCBpbiBhIGRvY3VtZW50IGNhbiBoYXZlIHRoaXMgYXR0cmlidXRlIHNwZWNpZmllZC4ifX0se25hbWU6ImNvbHMiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSB2aXNpYmxlIHdpZHRoIG9mIHRoZSB0ZXh0IGNvbnRyb2wsIGluIGF2ZXJhZ2UgY2hhcmFjdGVyIHdpZHRocy4gSWYgaXQgaXMgc3BlY2lmaWVkLCBpdCBtdXN0IGJlIGEgcG9zaXRpdmUgaW50ZWdlci4gSWYgaXQgaXMgbm90IHNwZWNpZmllZCwgdGhlIGRlZmF1bHQgdmFsdWUgaXMgYDIwYC4ifX0se25hbWU6ImRpcm5hbWUifSx7bmFtZToiZGlzYWJsZWQiLHZhbHVlU2V0OiJ2IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOidUaGlzIEJvb2xlYW4gYXR0cmlidXRlIGluZGljYXRlcyB0aGF0IHRoZSB1c2VyIGNhbm5vdCBpbnRlcmFjdCB3aXRoIHRoZSBjb250cm9sLiBJZiB0aGlzIGF0dHJpYnV0ZSBpcyBub3Qgc3BlY2lmaWVkLCB0aGUgY29udHJvbCBpbmhlcml0cyBpdHMgc2V0dGluZyBmcm9tIHRoZSBjb250YWluaW5nIGVsZW1lbnQsIGZvciBleGFtcGxlIFtgPGZpZWxkc2V0PmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9maWVsZHNldCAiVGhlIEhUTUwgPGZpZWxkc2V0PiBlbGVtZW50IGlzIHVzZWQgdG8gZ3JvdXAgc2V2ZXJhbCBjb250cm9scyBhcyB3ZWxsIGFzIGxhYmVscyAoPGxhYmVsPikgd2l0aGluIGEgd2ViIGZvcm0uIik7IGlmIHRoZXJlIGlzIG5vIGNvbnRhaW5pbmcgZWxlbWVudCB3aGVuIHRoZSBgZGlzYWJsZWRgIGF0dHJpYnV0ZSBpcyBzZXQsIHRoZSBjb250cm9sIGlzIGVuYWJsZWQuJ319LHtuYW1lOiJmb3JtIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOidUaGUgZm9ybSBlbGVtZW50IHRoYXQgdGhlIGA8dGV4dGFyZWE+YCBlbGVtZW50IGlzIGFzc29jaWF0ZWQgd2l0aCAoaXRzICJmb3JtIG93bmVyIikuIFRoZSB2YWx1ZSBvZiB0aGUgYXR0cmlidXRlIG11c3QgYmUgdGhlIGBpZGAgb2YgYSBmb3JtIGVsZW1lbnQgaW4gdGhlIHNhbWUgZG9jdW1lbnQuIElmIHRoaXMgYXR0cmlidXRlIGlzIG5vdCBzcGVjaWZpZWQsIHRoZSBgPHRleHRhcmVhPmAgZWxlbWVudCBtdXN0IGJlIGEgZGVzY2VuZGFudCBvZiBhIGZvcm0gZWxlbWVudC4gVGhpcyBhdHRyaWJ1dGUgZW5hYmxlcyB5b3UgdG8gcGxhY2UgYDx0ZXh0YXJlYT5gIGVsZW1lbnRzIGFueXdoZXJlIHdpdGhpbiBhIGRvY3VtZW50LCBub3QganVzdCBhcyBkZXNjZW5kYW50cyBvZiBmb3JtIGVsZW1lbnRzLid9fSx7bmFtZToiaW5wdXRtb2RlIix2YWx1ZVNldDoiaW0ifSx7bmFtZToibWF4bGVuZ3RoIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgbWF4aW11bSBudW1iZXIgb2YgY2hhcmFjdGVycyAodW5pY29kZSBjb2RlIHBvaW50cykgdGhhdCB0aGUgdXNlciBjYW4gZW50ZXIuIElmIHRoaXMgdmFsdWUgaXNuJ3Qgc3BlY2lmaWVkLCB0aGUgdXNlciBjYW4gZW50ZXIgYW4gdW5saW1pdGVkIG51bWJlciBvZiBjaGFyYWN0ZXJzLiJ9fSx7bmFtZToibWlubGVuZ3RoIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgbWluaW11bSBudW1iZXIgb2YgY2hhcmFjdGVycyAodW5pY29kZSBjb2RlIHBvaW50cykgcmVxdWlyZWQgdGhhdCB0aGUgdXNlciBzaG91bGQgZW50ZXIuIn19LHtuYW1lOiJuYW1lIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgbmFtZSBvZiB0aGUgY29udHJvbC4ifX0se25hbWU6InBsYWNlaG9sZGVyIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOidBIGhpbnQgdG8gdGhlIHVzZXIgb2Ygd2hhdCBjYW4gYmUgZW50ZXJlZCBpbiB0aGUgY29udHJvbC4gQ2FycmlhZ2UgcmV0dXJucyBvciBsaW5lLWZlZWRzIHdpdGhpbiB0aGUgcGxhY2Vob2xkZXIgdGV4dCBtdXN0IGJlIHRyZWF0ZWQgYXMgbGluZSBicmVha3Mgd2hlbiByZW5kZXJpbmcgdGhlIGhpbnQuXG5cbioqTm90ZToqKiBQbGFjZWhvbGRlcnMgc2hvdWxkIG9ubHkgYmUgdXNlZCB0byBzaG93IGFuIGV4YW1wbGUgb2YgdGhlIHR5cGUgb2YgZGF0YSB0aGF0IHNob3VsZCBiZSBlbnRlcmVkIGludG8gYSBmb3JtOyB0aGV5IGFyZSBfbm90XyBhIHN1YnN0aXR1dGUgZm9yIGEgcHJvcGVyIFtgPGxhYmVsPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9sYWJlbCAiVGhlIEhUTUwgPGxhYmVsPiBlbGVtZW50IHJlcHJlc2VudHMgYSBjYXB0aW9uIGZvciBhbiBpdGVtIGluIGEgdXNlciBpbnRlcmZhY2UuIikgZWxlbWVudCB0aWVkIHRvIHRoZSBpbnB1dC4gU2VlIFtMYWJlbHMgYW5kIHBsYWNlaG9sZGVyc10oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2lucHV0I0xhYmVsc19hbmRfcGxhY2Vob2xkZXJzICJUaGUgSFRNTCA8aW5wdXQ+IGVsZW1lbnQgaXMgdXNlZCB0byBjcmVhdGUgaW50ZXJhY3RpdmUgY29udHJvbHMgZm9yIHdlYi1iYXNlZCBmb3JtcyBpbiBvcmRlciB0byBhY2NlcHQgZGF0YSBmcm9tIHRoZSB1c2VyOyBhIHdpZGUgdmFyaWV0eSBvZiB0eXBlcyBvZiBpbnB1dCBkYXRhIGFuZCBjb250cm9sIHdpZGdldHMgYXJlIGF2YWlsYWJsZSwgZGVwZW5kaW5nIG9uIHRoZSBkZXZpY2UgYW5kIHVzZXIgYWdlbnQuIikgaW4gWzxpbnB1dD46IFRoZSBJbnB1dCAoRm9ybSBJbnB1dCkgZWxlbWVudF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2lucHV0ICJUaGUgSFRNTCA8aW5wdXQ+IGVsZW1lbnQgaXMgdXNlZCB0byBjcmVhdGUgaW50ZXJhY3RpdmUgY29udHJvbHMgZm9yIHdlYi1iYXNlZCBmb3JtcyBpbiBvcmRlciB0byBhY2NlcHQgZGF0YSBmcm9tIHRoZSB1c2VyOyBhIHdpZGUgdmFyaWV0eSBvZiB0eXBlcyBvZiBpbnB1dCBkYXRhIGFuZCBjb250cm9sIHdpZGdldHMgYXJlIGF2YWlsYWJsZSwgZGVwZW5kaW5nIG9uIHRoZSBkZXZpY2UgYW5kIHVzZXIgYWdlbnQuIikgZm9yIGEgZnVsbCBleHBsYW5hdGlvbi4nfX0se25hbWU6InJlYWRvbmx5Iix2YWx1ZVNldDoidiIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhpcyBCb29sZWFuIGF0dHJpYnV0ZSBpbmRpY2F0ZXMgdGhhdCB0aGUgdXNlciBjYW5ub3QgbW9kaWZ5IHRoZSB2YWx1ZSBvZiB0aGUgY29udHJvbC4gVW5saWtlIHRoZSBgZGlzYWJsZWRgIGF0dHJpYnV0ZSwgdGhlIGByZWFkb25seWAgYXR0cmlidXRlIGRvZXMgbm90IHByZXZlbnQgdGhlIHVzZXIgZnJvbSBjbGlja2luZyBvciBzZWxlY3RpbmcgaW4gdGhlIGNvbnRyb2wuIFRoZSB2YWx1ZSBvZiBhIHJlYWQtb25seSBjb250cm9sIGlzIHN0aWxsIHN1Ym1pdHRlZCB3aXRoIHRoZSBmb3JtLiJ9fSx7bmFtZToicmVxdWlyZWQiLHZhbHVlU2V0OiJ2IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGlzIGF0dHJpYnV0ZSBzcGVjaWZpZXMgdGhhdCB0aGUgdXNlciBtdXN0IGZpbGwgaW4gYSB2YWx1ZSBiZWZvcmUgc3VibWl0dGluZyBhIGZvcm0uIn19LHtuYW1lOiJyb3dzIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgbnVtYmVyIG9mIHZpc2libGUgdGV4dCBsaW5lcyBmb3IgdGhlIGNvbnRyb2wuIn19LHtuYW1lOiJ3cmFwIix2YWx1ZVNldDoidyIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiSW5kaWNhdGVzIGhvdyB0aGUgY29udHJvbCB3cmFwcyB0ZXh0LiBQb3NzaWJsZSB2YWx1ZXMgYXJlOlxuXG4qICAgYGhhcmRgOiBUaGUgYnJvd3NlciBhdXRvbWF0aWNhbGx5IGluc2VydHMgbGluZSBicmVha3MgKENSK0xGKSBzbyB0aGF0IGVhY2ggbGluZSBoYXMgbm8gbW9yZSB0aGFuIHRoZSB3aWR0aCBvZiB0aGUgY29udHJvbDsgdGhlIGBjb2xzYCBhdHRyaWJ1dGUgbXVzdCBhbHNvIGJlIHNwZWNpZmllZCBmb3IgdGhpcyB0byB0YWtlIGVmZmVjdC5cbiogICBgc29mdGA6IFRoZSBicm93c2VyIGVuc3VyZXMgdGhhdCBhbGwgbGluZSBicmVha3MgaW4gdGhlIHZhbHVlIGNvbnNpc3Qgb2YgYSBDUitMRiBwYWlyLCBidXQgZG9lcyBub3QgaW5zZXJ0IGFueSBhZGRpdGlvbmFsIGxpbmUgYnJlYWtzLlxuKiAgIGBvZmZgIDogTGlrZSBgc29mdGAgYnV0IGNoYW5nZXMgYXBwZWFyYW5jZSB0byBgd2hpdGUtc3BhY2U6IHByZWAgc28gbGluZSBzZWdtZW50cyBleGNlZWRpbmcgYGNvbHNgIGFyZSBub3Qgd3JhcHBlZCBhbmQgdGhlIGA8dGV4dGFyZWE+YCBiZWNvbWVzIGhvcml6b250YWxseSBzY3JvbGxhYmxlLlxuXG5JZiB0aGlzIGF0dHJpYnV0ZSBpcyBub3Qgc3BlY2lmaWVkLCBgc29mdGAgaXMgaXRzIGRlZmF1bHQgdmFsdWUuIn19LHtuYW1lOiJhdXRvY2FwaXRhbGl6ZSIsZGVzY3JpcHRpb246IlRoaXMgaXMgYSBub24tc3RhbmRhcmQgYXR0cmlidXRlIHN1cHBvcnRlZCBieSBXZWJLaXQgb24gaU9TICh0aGVyZWZvcmUgbmVhcmx5IGFsbCBicm93c2VycyBydW5uaW5nIG9uIGlPUywgaW5jbHVkaW5nIFNhZmFyaSwgRmlyZWZveCwgYW5kIENocm9tZSksIHdoaWNoIGNvbnRyb2xzIHdoZXRoZXIgYW5kIGhvdyB0aGUgdGV4dCB2YWx1ZSBzaG91bGQgYmUgYXV0b21hdGljYWxseSBjYXBpdGFsaXplZCBhcyBpdCBpcyBlbnRlcmVkL2VkaXRlZCBieSB0aGUgdXNlci4gVGhlIG5vbi1kZXByZWNhdGVkIHZhbHVlcyBhcmUgYXZhaWxhYmxlIGluIGlPUyA1IGFuZCBsYXRlci4gUG9zc2libGUgdmFsdWVzIGFyZTpcblxuKiAgIGBub25lYDogQ29tcGxldGVseSBkaXNhYmxlcyBhdXRvbWF0aWMgY2FwaXRhbGl6YXRpb24uXG4qICAgYHNlbnRlbmNlc2A6IEF1dG9tYXRpY2FsbHkgY2FwaXRhbGl6ZSB0aGUgZmlyc3QgbGV0dGVyIG9mIHNlbnRlbmNlcy5cbiogICBgd29yZHNgOiBBdXRvbWF0aWNhbGx5IGNhcGl0YWxpemUgdGhlIGZpcnN0IGxldHRlciBvZiB3b3Jkcy5cbiogICBgY2hhcmFjdGVyc2A6IEF1dG9tYXRpY2FsbHkgY2FwaXRhbGl6ZSBhbGwgY2hhcmFjdGVycy5cbiogICBgb25gOiBEZXByZWNhdGVkIHNpbmNlIGlPUyA1LlxuKiAgIGBvZmZgOiBEZXByZWNhdGVkIHNpbmNlIGlPUyA1LiJ9LHtuYW1lOiJzcGVsbGNoZWNrIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIHdoZXRoZXIgdGhlIGA8dGV4dGFyZWE+YCBpcyBzdWJqZWN0IHRvIHNwZWxsIGNoZWNraW5nIGJ5IHRoZSB1bmRlcmx5aW5nIGJyb3dzZXIvT1MuIHRoZSB2YWx1ZSBjYW4gYmU6XG5cbiogICBgdHJ1ZWA6IEluZGljYXRlcyB0aGF0IHRoZSBlbGVtZW50IG5lZWRzIHRvIGhhdmUgaXRzIHNwZWxsaW5nIGFuZCBncmFtbWFyIGNoZWNrZWQuXG4qICAgYGRlZmF1bHRgIDogSW5kaWNhdGVzIHRoYXQgdGhlIGVsZW1lbnQgaXMgdG8gYWN0IGFjY29yZGluZyB0byBhIGRlZmF1bHQgYmVoYXZpb3IsIHBvc3NpYmx5IGJhc2VkIG9uIHRoZSBwYXJlbnQgZWxlbWVudCdzIG93biBgc3BlbGxjaGVja2AgdmFsdWUuXG4qICAgYGZhbHNlYCA6IEluZGljYXRlcyB0aGF0IHRoZSBlbGVtZW50IHNob3VsZCBub3QgYmUgc3BlbGwgY2hlY2tlZC4ifV0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3RleHRhcmVhIn1dfSx7bmFtZToib3V0cHV0IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgb3V0cHV0IGVsZW1lbnQgcmVwcmVzZW50cyB0aGUgcmVzdWx0IG9mIGEgY2FsY3VsYXRpb24gcGVyZm9ybWVkIGJ5IHRoZSBhcHBsaWNhdGlvbiwgb3IgdGhlIHJlc3VsdCBvZiBhIHVzZXIgYWN0aW9uLiJ9LGF0dHJpYnV0ZXM6W3tuYW1lOiJmb3IiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkEgc3BhY2Utc2VwYXJhdGVkIGxpc3Qgb2Ygb3RoZXIgZWxlbWVudHPigJkgW2BpZGBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvR2xvYmFsX2F0dHJpYnV0ZXMvaWQpcywgaW5kaWNhdGluZyB0aGF0IHRob3NlIGVsZW1lbnRzIGNvbnRyaWJ1dGVkIGlucHV0IHZhbHVlcyB0byAob3Igb3RoZXJ3aXNlIGFmZmVjdGVkKSB0aGUgY2FsY3VsYXRpb24uIn19LHtuYW1lOiJmb3JtIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOidUaGUgW2Zvcm0gZWxlbWVudF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2Zvcm0pIHRoYXQgdGhpcyBlbGVtZW50IGlzIGFzc29jaWF0ZWQgd2l0aCAoaXRzICJmb3JtIG93bmVyIikuIFRoZSB2YWx1ZSBvZiB0aGUgYXR0cmlidXRlIG11c3QgYmUgYW4gYGlkYCBvZiBhIGZvcm0gZWxlbWVudCBpbiB0aGUgc2FtZSBkb2N1bWVudC4gSWYgdGhpcyBhdHRyaWJ1dGUgaXMgbm90IHNwZWNpZmllZCwgdGhlIG91dHB1dCBlbGVtZW50IG11c3QgYmUgYSBkZXNjZW5kYW50IG9mIGEgZm9ybSBlbGVtZW50LiBUaGlzIGF0dHJpYnV0ZSBlbmFibGVzIHlvdSB0byBwbGFjZSBvdXRwdXQgZWxlbWVudHMgYW55d2hlcmUgd2l0aGluIGEgZG9jdW1lbnQsIG5vdCBqdXN0IGFzIGRlc2NlbmRhbnRzIG9mIHRoZWlyIGZvcm0gZWxlbWVudHMuJ319LHtuYW1lOiJuYW1lIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOidUaGUgbmFtZSBvZiB0aGUgZWxlbWVudCwgZXhwb3NlZCBpbiB0aGUgW2BIVE1MRm9ybUVsZW1lbnRgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvSFRNTEZvcm1FbGVtZW50ICJUaGUgSFRNTEZvcm1FbGVtZW50IGludGVyZmFjZSByZXByZXNlbnRzIGEgPGZvcm0+IGVsZW1lbnQgaW4gdGhlIERPTTsgaXQgYWxsb3dzIGFjY2VzcyB0byBhbmQgaW4gc29tZSBjYXNlcyBtb2RpZmljYXRpb24gb2YgYXNwZWN0cyBvZiB0aGUgZm9ybSwgYXMgd2VsbCBhcyBhY2Nlc3MgdG8gaXRzIGNvbXBvbmVudCBlbGVtZW50cy4iKSBBUEkuJ319XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvb3V0cHV0In1dfSx7bmFtZToicHJvZ3Jlc3MiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBwcm9ncmVzcyBlbGVtZW50IHJlcHJlc2VudHMgdGhlIGNvbXBsZXRpb24gcHJvZ3Jlc3Mgb2YgYSB0YXNrLiBUaGUgcHJvZ3Jlc3MgaXMgZWl0aGVyIGluZGV0ZXJtaW5hdGUsIGluZGljYXRpbmcgdGhhdCBwcm9ncmVzcyBpcyBiZWluZyBtYWRlIGJ1dCB0aGF0IGl0IGlzIG5vdCBjbGVhciBob3cgbXVjaCBtb3JlIHdvcmsgcmVtYWlucyB0byBiZSBkb25lIGJlZm9yZSB0aGUgdGFzayBpcyBjb21wbGV0ZSAoZS5nLiBiZWNhdXNlIHRoZSB0YXNrIGlzIHdhaXRpbmcgZm9yIGEgcmVtb3RlIGhvc3QgdG8gcmVzcG9uZCksIG9yIHRoZSBwcm9ncmVzcyBpcyBhIG51bWJlciBpbiB0aGUgcmFuZ2UgemVybyB0byBhIG1heGltdW0sIGdpdmluZyB0aGUgZnJhY3Rpb24gb2Ygd29yayB0aGF0IGhhcyBzbyBmYXIgYmVlbiBjb21wbGV0ZWQuIn0sYXR0cmlidXRlczpbe25hbWU6InZhbHVlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGlzIGF0dHJpYnV0ZSBzcGVjaWZpZXMgaG93IG11Y2ggb2YgdGhlIHRhc2sgdGhhdCBoYXMgYmVlbiBjb21wbGV0ZWQuIEl0IG11c3QgYmUgYSB2YWxpZCBmbG9hdGluZyBwb2ludCBudW1iZXIgYmV0d2VlbiAwIGFuZCBgbWF4YCwgb3IgYmV0d2VlbiAwIGFuZCAxIGlmIGBtYXhgIGlzIG9taXR0ZWQuIElmIHRoZXJlIGlzIG5vIGB2YWx1ZWAgYXR0cmlidXRlLCB0aGUgcHJvZ3Jlc3MgYmFyIGlzIGluZGV0ZXJtaW5hdGU7IHRoaXMgaW5kaWNhdGVzIHRoYXQgYW4gYWN0aXZpdHkgaXMgb25nb2luZyB3aXRoIG5vIGluZGljYXRpb24gb2YgaG93IGxvbmcgaXQgaXMgZXhwZWN0ZWQgdG8gdGFrZS4ifX0se25hbWU6Im1heCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhpcyBhdHRyaWJ1dGUgZGVzY3JpYmVzIGhvdyBtdWNoIHdvcmsgdGhlIHRhc2sgaW5kaWNhdGVkIGJ5IHRoZSBgcHJvZ3Jlc3NgIGVsZW1lbnQgcmVxdWlyZXMuIFRoZSBgbWF4YCBhdHRyaWJ1dGUsIGlmIHByZXNlbnQsIG11c3QgaGF2ZSBhIHZhbHVlIGdyZWF0ZXIgdGhhbiB6ZXJvIGFuZCBiZSBhIHZhbGlkIGZsb2F0aW5nIHBvaW50IG51bWJlci4gVGhlIGRlZmF1bHQgdmFsdWUgaXMgMS4ifX1dLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9wcm9ncmVzcyJ9XX0se25hbWU6Im1ldGVyIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgbWV0ZXIgZWxlbWVudCByZXByZXNlbnRzIGEgc2NhbGFyIG1lYXN1cmVtZW50IHdpdGhpbiBhIGtub3duIHJhbmdlLCBvciBhIGZyYWN0aW9uYWwgdmFsdWU7IGZvciBleGFtcGxlIGRpc2sgdXNhZ2UsIHRoZSByZWxldmFuY2Ugb2YgYSBxdWVyeSByZXN1bHQsIG9yIHRoZSBmcmFjdGlvbiBvZiBhIHZvdGluZyBwb3B1bGF0aW9uIHRvIGhhdmUgc2VsZWN0ZWQgYSBwYXJ0aWN1bGFyIGNhbmRpZGF0ZS4ifSxhdHRyaWJ1dGVzOlt7bmFtZToidmFsdWUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBjdXJyZW50IG51bWVyaWMgdmFsdWUuIFRoaXMgbXVzdCBiZSBiZXR3ZWVuIHRoZSBtaW5pbXVtIGFuZCBtYXhpbXVtIHZhbHVlcyAoYG1pbmAgYXR0cmlidXRlIGFuZCBgbWF4YCBhdHRyaWJ1dGUpIGlmIHRoZXkgYXJlIHNwZWNpZmllZC4gSWYgdW5zcGVjaWZpZWQgb3IgbWFsZm9ybWVkLCB0aGUgdmFsdWUgaXMgMC4gSWYgc3BlY2lmaWVkLCBidXQgbm90IHdpdGhpbiB0aGUgcmFuZ2UgZ2l2ZW4gYnkgdGhlIGBtaW5gIGF0dHJpYnV0ZSBhbmQgYG1heGAgYXR0cmlidXRlLCB0aGUgdmFsdWUgaXMgZXF1YWwgdG8gdGhlIG5lYXJlc3QgZW5kIG9mIHRoZSByYW5nZS5cblxuKipVc2FnZSBub3RlOioqIFVubGVzcyB0aGUgYHZhbHVlYCBhdHRyaWJ1dGUgaXMgYmV0d2VlbiBgMGAgYW5kIGAxYCAoaW5jbHVzaXZlKSwgdGhlIGBtaW5gIGFuZCBgbWF4YCBhdHRyaWJ1dGVzIHNob3VsZCBkZWZpbmUgdGhlIHJhbmdlIHNvIHRoYXQgdGhlIGB2YWx1ZWAgYXR0cmlidXRlJ3MgdmFsdWUgaXMgd2l0aGluIGl0LiJ9fSx7bmFtZToibWluIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgbG93ZXIgbnVtZXJpYyBib3VuZCBvZiB0aGUgbWVhc3VyZWQgcmFuZ2UuIFRoaXMgbXVzdCBiZSBsZXNzIHRoYW4gdGhlIG1heGltdW0gdmFsdWUgKGBtYXhgIGF0dHJpYnV0ZSksIGlmIHNwZWNpZmllZC4gSWYgdW5zcGVjaWZpZWQsIHRoZSBtaW5pbXVtIHZhbHVlIGlzIDAuIn19LHtuYW1lOiJtYXgiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSB1cHBlciBudW1lcmljIGJvdW5kIG9mIHRoZSBtZWFzdXJlZCByYW5nZS4gVGhpcyBtdXN0IGJlIGdyZWF0ZXIgdGhhbiB0aGUgbWluaW11bSB2YWx1ZSAoYG1pbmAgYXR0cmlidXRlKSwgaWYgc3BlY2lmaWVkLiBJZiB1bnNwZWNpZmllZCwgdGhlIG1heGltdW0gdmFsdWUgaXMgMS4ifX0se25hbWU6ImxvdyIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHVwcGVyIG51bWVyaWMgYm91bmQgb2YgdGhlIGxvdyBlbmQgb2YgdGhlIG1lYXN1cmVkIHJhbmdlLiBUaGlzIG11c3QgYmUgZ3JlYXRlciB0aGFuIHRoZSBtaW5pbXVtIHZhbHVlIChgbWluYCBhdHRyaWJ1dGUpLCBhbmQgaXQgYWxzbyBtdXN0IGJlIGxlc3MgdGhhbiB0aGUgaGlnaCB2YWx1ZSBhbmQgbWF4aW11bSB2YWx1ZSAoYGhpZ2hgIGF0dHJpYnV0ZSBhbmQgYG1heGAgYXR0cmlidXRlLCByZXNwZWN0aXZlbHkpLCBpZiBhbnkgYXJlIHNwZWNpZmllZC4gSWYgdW5zcGVjaWZpZWQsIG9yIGlmIGxlc3MgdGhhbiB0aGUgbWluaW11bSB2YWx1ZSwgdGhlIGBsb3dgIHZhbHVlIGlzIGVxdWFsIHRvIHRoZSBtaW5pbXVtIHZhbHVlLiJ9fSx7bmFtZToiaGlnaCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGxvd2VyIG51bWVyaWMgYm91bmQgb2YgdGhlIGhpZ2ggZW5kIG9mIHRoZSBtZWFzdXJlZCByYW5nZS4gVGhpcyBtdXN0IGJlIGxlc3MgdGhhbiB0aGUgbWF4aW11bSB2YWx1ZSAoYG1heGAgYXR0cmlidXRlKSwgYW5kIGl0IGFsc28gbXVzdCBiZSBncmVhdGVyIHRoYW4gdGhlIGxvdyB2YWx1ZSBhbmQgbWluaW11bSB2YWx1ZSAoYGxvd2AgYXR0cmlidXRlIGFuZCAqKm1pbioqIGF0dHJpYnV0ZSwgcmVzcGVjdGl2ZWx5KSwgaWYgYW55IGFyZSBzcGVjaWZpZWQuIElmIHVuc3BlY2lmaWVkLCBvciBpZiBncmVhdGVyIHRoYW4gdGhlIG1heGltdW0gdmFsdWUsIHRoZSBgaGlnaGAgdmFsdWUgaXMgZXF1YWwgdG8gdGhlIG1heGltdW0gdmFsdWUuIn19LHtuYW1lOiJvcHRpbXVtIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGlzIGF0dHJpYnV0ZSBpbmRpY2F0ZXMgdGhlIG9wdGltYWwgbnVtZXJpYyB2YWx1ZS4gSXQgbXVzdCBiZSB3aXRoaW4gdGhlIHJhbmdlIChhcyBkZWZpbmVkIGJ5IHRoZSBgbWluYCBhdHRyaWJ1dGUgYW5kIGBtYXhgIGF0dHJpYnV0ZSkuIFdoZW4gdXNlZCB3aXRoIHRoZSBgbG93YCBhdHRyaWJ1dGUgYW5kIGBoaWdoYCBhdHRyaWJ1dGUsIGl0IGdpdmVzIGFuIGluZGljYXRpb24gd2hlcmUgYWxvbmcgdGhlIHJhbmdlIGlzIGNvbnNpZGVyZWQgcHJlZmVyYWJsZS4gRm9yIGV4YW1wbGUsIGlmIGl0IGlzIGJldHdlZW4gdGhlIGBtaW5gIGF0dHJpYnV0ZSBhbmQgdGhlIGBsb3dgIGF0dHJpYnV0ZSwgdGhlbiB0aGUgbG93ZXIgcmFuZ2UgaXMgY29uc2lkZXJlZCBwcmVmZXJyZWQuIn19LHtuYW1lOiJmb3JtIixkZXNjcmlwdGlvbjoiVGhpcyBhdHRyaWJ1dGUgYXNzb2NpYXRlcyB0aGUgZWxlbWVudCB3aXRoIGEgYGZvcm1gIGVsZW1lbnQgdGhhdCBoYXMgb3duZXJzaGlwIG9mIHRoZSBgbWV0ZXJgIGVsZW1lbnQuIEZvciBleGFtcGxlLCBhIGBtZXRlcmAgbWlnaHQgYmUgZGlzcGxheWluZyBhIHJhbmdlIGNvcnJlc3BvbmRpbmcgdG8gYW4gYGlucHV0YCBlbGVtZW50IG9mIGB0eXBlYCBfbnVtYmVyXy4gVGhpcyBhdHRyaWJ1dGUgaXMgb25seSB1c2VkIGlmIHRoZSBgbWV0ZXJgIGVsZW1lbnQgaXMgYmVpbmcgdXNlZCBhcyBhIGZvcm0tYXNzb2NpYXRlZCBlbGVtZW50OyBldmVuIHRoZW4sIGl0IG1heSBiZSBvbWl0dGVkIGlmIHRoZSBlbGVtZW50IGFwcGVhcnMgYXMgYSBkZXNjZW5kYW50IG9mIGEgYGZvcm1gIGVsZW1lbnQuIn1dLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9tZXRlciJ9XX0se25hbWU6ImZpZWxkc2V0IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgZmllbGRzZXQgZWxlbWVudCByZXByZXNlbnRzIGEgc2V0IG9mIGZvcm0gY29udHJvbHMgb3B0aW9uYWxseSBncm91cGVkIHVuZGVyIGEgY29tbW9uIG5hbWUuIn0sYXR0cmlidXRlczpbe25hbWU6ImRpc2FibGVkIix2YWx1ZVNldDoidiIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiSWYgdGhpcyBCb29sZWFuIGF0dHJpYnV0ZSBpcyBzZXQsIGFsbCBmb3JtIGNvbnRyb2xzIHRoYXQgYXJlIGRlc2NlbmRhbnRzIG9mIHRoZSBgPGZpZWxkc2V0PmAsIGFyZSBkaXNhYmxlZCwgbWVhbmluZyB0aGV5IGFyZSBub3QgZWRpdGFibGUgYW5kIHdvbid0IGJlIHN1Ym1pdHRlZCBhbG9uZyB3aXRoIHRoZSBgPGZvcm0+YC4gVGhleSB3b24ndCByZWNlaXZlIGFueSBicm93c2luZyBldmVudHMsIGxpa2UgbW91c2UgY2xpY2tzIG9yIGZvY3VzLXJlbGF0ZWQgZXZlbnRzLiBCeSBkZWZhdWx0IGJyb3dzZXJzIGRpc3BsYXkgc3VjaCBjb250cm9scyBncmF5ZWQgb3V0LiBOb3RlIHRoYXQgZm9ybSBlbGVtZW50cyBpbnNpZGUgdGhlIFtgPGxlZ2VuZD5gXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvbGVnZW5kIFwiVGhlIEhUTUwgPGxlZ2VuZD4gZWxlbWVudCByZXByZXNlbnRzIGEgY2FwdGlvbiBmb3IgdGhlIGNvbnRlbnQgb2YgaXRzIHBhcmVudCA8ZmllbGRzZXQ+LlwiKSBlbGVtZW50IHdvbid0IGJlIGRpc2FibGVkLiJ9fSx7bmFtZToiZm9ybSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTonVGhpcyBhdHRyaWJ1dGUgdGFrZXMgdGhlIHZhbHVlIG9mIHRoZSBgaWRgIGF0dHJpYnV0ZSBvZiBhIFtgPGZvcm0+YF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2Zvcm0gIlRoZSBIVE1MIDxmb3JtPiBlbGVtZW50IHJlcHJlc2VudHMgYSBkb2N1bWVudCBzZWN0aW9uIHRoYXQgY29udGFpbnMgaW50ZXJhY3RpdmUgY29udHJvbHMgZm9yIHN1Ym1pdHRpbmcgaW5mb3JtYXRpb24gdG8gYSB3ZWIgc2VydmVyLiIpIGVsZW1lbnQgeW91IHdhbnQgdGhlIGA8ZmllbGRzZXQ+YCB0byBiZSBwYXJ0IG9mLCBldmVuIGlmIGl0IGlzIG5vdCBpbnNpZGUgdGhlIGZvcm0uJ319LHtuYW1lOiJuYW1lIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOidUaGUgbmFtZSBhc3NvY2lhdGVkIHdpdGggdGhlIGdyb3VwLlxuXG4qKk5vdGUqKjogVGhlIGNhcHRpb24gZm9yIHRoZSBmaWVsZHNldCBpcyBnaXZlbiBieSB0aGUgZmlyc3QgW2A8bGVnZW5kPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9sZWdlbmQgIlRoZSBIVE1MIDxsZWdlbmQ+IGVsZW1lbnQgcmVwcmVzZW50cyBhIGNhcHRpb24gZm9yIHRoZSBjb250ZW50IG9mIGl0cyBwYXJlbnQgPGZpZWxkc2V0Pi4iKSBlbGVtZW50IG5lc3RlZCBpbnNpZGUgaXQuJ319XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvZmllbGRzZXQifV19LHtuYW1lOiJsZWdlbmQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBsZWdlbmQgZWxlbWVudCByZXByZXNlbnRzIGEgY2FwdGlvbiBmb3IgdGhlIHJlc3Qgb2YgdGhlIGNvbnRlbnRzIG9mIHRoZSBsZWdlbmQgZWxlbWVudCdzIHBhcmVudCBmaWVsZHNldCBlbGVtZW50LCBpZiBhbnkuIn0sYXR0cmlidXRlczpbXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvbGVnZW5kIn1dfSx7bmFtZToiZGV0YWlscyIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGRldGFpbHMgZWxlbWVudCByZXByZXNlbnRzIGEgZGlzY2xvc3VyZSB3aWRnZXQgZnJvbSB3aGljaCB0aGUgdXNlciBjYW4gb2J0YWluIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gb3IgY29udHJvbHMuIn0sYXR0cmlidXRlczpbe25hbWU6Im9wZW4iLHZhbHVlU2V0OiJ2IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGlzIEJvb2xlYW4gYXR0cmlidXRlIGluZGljYXRlcyB3aGV0aGVyIG9yIG5vdCB0aGUgZGV0YWlscyDigJQgdGhhdCBpcywgdGhlIGNvbnRlbnRzIG9mIHRoZSBgPGRldGFpbHM+YCBlbGVtZW50IOKAlCBhcmUgY3VycmVudGx5IHZpc2libGUuIFRoZSBkZWZhdWx0LCBgZmFsc2VgLCBtZWFucyB0aGUgZGV0YWlscyBhcmUgbm90IHZpc2libGUuIn19XSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvZGV0YWlscyJ9XX0se25hbWU6InN1bW1hcnkiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBzdW1tYXJ5IGVsZW1lbnQgcmVwcmVzZW50cyBhIHN1bW1hcnksIGNhcHRpb24sIG9yIGxlZ2VuZCBmb3IgdGhlIHJlc3Qgb2YgdGhlIGNvbnRlbnRzIG9mIHRoZSBzdW1tYXJ5IGVsZW1lbnQncyBwYXJlbnQgZGV0YWlscyBlbGVtZW50LCBpZiBhbnkuIn0sYXR0cmlidXRlczpbXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvc3VtbWFyeSJ9XX0se25hbWU6ImRpYWxvZyIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGRpYWxvZyBlbGVtZW50IHJlcHJlc2VudHMgYSBwYXJ0IG9mIGFuIGFwcGxpY2F0aW9uIHRoYXQgYSB1c2VyIGludGVyYWN0cyB3aXRoIHRvIHBlcmZvcm0gYSB0YXNrLCBmb3IgZXhhbXBsZSBhIGRpYWxvZyBib3gsIGluc3BlY3Rvciwgb3Igd2luZG93LiJ9LGF0dHJpYnV0ZXM6W3tuYW1lOiJvcGVuIixkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIHRoYXQgdGhlIGRpYWxvZyBpcyBhY3RpdmUgYW5kIGF2YWlsYWJsZSBmb3IgaW50ZXJhY3Rpb24uIFdoZW4gdGhlIGBvcGVuYCBhdHRyaWJ1dGUgaXMgbm90IHNldCwgdGhlIGRpYWxvZyBzaG91bGRuJ3QgYmUgc2hvd24gdG8gdGhlIHVzZXIuIn1dLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9kaWFsb2cifV19LHtuYW1lOiJzY3JpcHQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBzY3JpcHQgZWxlbWVudCBhbGxvd3MgYXV0aG9ycyB0byBpbmNsdWRlIGR5bmFtaWMgc2NyaXB0IGFuZCBkYXRhIGJsb2NrcyBpbiB0aGVpciBkb2N1bWVudHMuIFRoZSBlbGVtZW50IGRvZXMgbm90IHJlcHJlc2VudCBjb250ZW50IGZvciB0aGUgdXNlci4ifSxhdHRyaWJ1dGVzOlt7bmFtZToic3JjIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGlzIGF0dHJpYnV0ZSBzcGVjaWZpZXMgdGhlIFVSSSBvZiBhbiBleHRlcm5hbCBzY3JpcHQ7IHRoaXMgY2FuIGJlIHVzZWQgYXMgYW4gYWx0ZXJuYXRpdmUgdG8gZW1iZWRkaW5nIGEgc2NyaXB0IGRpcmVjdGx5IHdpdGhpbiBhIGRvY3VtZW50LlxuXG5JZiBhIGBzY3JpcHRgIGVsZW1lbnQgaGFzIGEgYHNyY2AgYXR0cmlidXRlIHNwZWNpZmllZCwgaXQgc2hvdWxkIG5vdCBoYXZlIGEgc2NyaXB0IGVtYmVkZGVkIGluc2lkZSBpdHMgdGFncy4ifX0se25hbWU6InR5cGUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6J1RoaXMgYXR0cmlidXRlIGluZGljYXRlcyB0aGUgdHlwZSBvZiBzY3JpcHQgcmVwcmVzZW50ZWQuIFRoZSB2YWx1ZSBvZiB0aGlzIGF0dHJpYnV0ZSB3aWxsIGJlIGluIG9uZSBvZiB0aGUgZm9sbG93aW5nIGNhdGVnb3JpZXM6XG5cbiogICAqKk9taXR0ZWQgb3IgYSBKYXZhU2NyaXB0IE1JTUUgdHlwZToqKiBGb3IgSFRNTDUtY29tcGxpYW50IGJyb3dzZXJzIHRoaXMgaW5kaWNhdGVzIHRoZSBzY3JpcHQgaXMgSmF2YVNjcmlwdC4gSFRNTDUgc3BlY2lmaWNhdGlvbiB1cmdlcyBhdXRob3JzIHRvIG9taXQgdGhlIGF0dHJpYnV0ZSByYXRoZXIgdGhhbiBwcm92aWRlIGEgcmVkdW5kYW50IE1JTUUgdHlwZS4gSW4gZWFybGllciBicm93c2VycywgdGhpcyBpZGVudGlmaWVkIHRoZSBzY3JpcHRpbmcgbGFuZ3VhZ2Ugb2YgdGhlIGVtYmVkZGVkIG9yIGltcG9ydGVkICh2aWEgdGhlIGBzcmNgIGF0dHJpYnV0ZSkgY29kZS4gSmF2YVNjcmlwdCBNSU1FIHR5cGVzIGFyZSBbbGlzdGVkIGluIHRoZSBzcGVjaWZpY2F0aW9uXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVFRQL0Jhc2ljc19vZl9IVFRQL01JTUVfdHlwZXMjSmF2YVNjcmlwdF90eXBlcykuXG4qICAgKipgbW9kdWxlYDoqKiBGb3IgSFRNTDUtY29tcGxpYW50IGJyb3dzZXJzIHRoZSBjb2RlIGlzIHRyZWF0ZWQgYXMgYSBKYXZhU2NyaXB0IG1vZHVsZS4gVGhlIHByb2Nlc3Npbmcgb2YgdGhlIHNjcmlwdCBjb250ZW50cyBpcyBub3QgYWZmZWN0ZWQgYnkgdGhlIGBjaGFyc2V0YCBhbmQgYGRlZmVyYCBhdHRyaWJ1dGVzLiBGb3IgaW5mb3JtYXRpb24gb24gdXNpbmcgYG1vZHVsZWAsIHNlZSBbRVM2IGluIERlcHRoOiBNb2R1bGVzXShodHRwczovL2hhY2tzLm1vemlsbGEub3JnLzIwMTUvMDgvZXM2LWluLWRlcHRoLW1vZHVsZXMvKS4gQ29kZSBtYXkgYmVoYXZlIGRpZmZlcmVudGx5IHdoZW4gdGhlIGBtb2R1bGVgIGtleXdvcmQgaXMgdXNlZC5cbiogICAqKkFueSBvdGhlciB2YWx1ZToqKiBUaGUgZW1iZWRkZWQgY29udGVudCBpcyB0cmVhdGVkIGFzIGEgZGF0YSBibG9jayB3aGljaCB3b25cJ3QgYmUgcHJvY2Vzc2VkIGJ5IHRoZSBicm93c2VyLiBEZXZlbG9wZXJzIG11c3QgdXNlIGEgdmFsaWQgTUlNRSB0eXBlIHRoYXQgaXMgbm90IGEgSmF2YVNjcmlwdCBNSU1FIHR5cGUgdG8gZGVub3RlIGRhdGEgYmxvY2tzLiBUaGUgYHNyY2AgYXR0cmlidXRlIHdpbGwgYmUgaWdub3JlZC5cblxuKipOb3RlOioqIGluIEZpcmVmb3ggeW91IGNvdWxkIHNwZWNpZnkgdGhlIHZlcnNpb24gb2YgSmF2YVNjcmlwdCBjb250YWluZWQgaW4gYSBgPHNjcmlwdD5gIGVsZW1lbnQgYnkgaW5jbHVkaW5nIGEgbm9uLXN0YW5kYXJkIGB2ZXJzaW9uYCBwYXJhbWV0ZXIgaW5zaWRlIHRoZSBgdHlwZWAgYXR0cmlidXRlIOKAlCBmb3IgZXhhbXBsZSBgdHlwZT0idGV4dC9qYXZhc2NyaXB0O3ZlcnNpb249MS44ImAuIFRoaXMgaGFzIGJlZW4gcmVtb3ZlZCBpbiBGaXJlZm94IDU5IChzZWUgW2J1Z8KgMTQyODc0NV0oaHR0cHM6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQyODc0NSAiRklYRUQ6IFJlbW92ZSBzdXBwb3J0IGZvciB2ZXJzaW9uIHBhcmFtZXRlciBmcm9tIHNjcmlwdCBsb2FkZXIiKSkuJ319LHtuYW1lOiJjaGFyc2V0In0se25hbWU6ImFzeW5jIix2YWx1ZVNldDoidiIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTonVGhpcyBpcyBhIEJvb2xlYW4gYXR0cmlidXRlIGluZGljYXRpbmcgdGhhdCB0aGUgYnJvd3NlciBzaG91bGQsIGlmIHBvc3NpYmxlLCBsb2FkIHRoZSBzY3JpcHQgYXN5bmNocm9ub3VzbHkuXG5cblRoaXMgYXR0cmlidXRlIG11c3Qgbm90IGJlIHVzZWQgaWYgdGhlIGBzcmNgIGF0dHJpYnV0ZSBpcyBhYnNlbnQgKGkuZS4gZm9yIGlubGluZSBzY3JpcHRzKS4gSWYgaXQgaXMgaW5jbHVkZWQgaW4gdGhpcyBjYXNlIGl0IHdpbGwgaGF2ZSBubyBlZmZlY3QuXG5cbkJyb3dzZXJzIHVzdWFsbHkgYXNzdW1lIHRoZSB3b3JzdCBjYXNlIHNjZW5hcmlvIGFuZCBsb2FkIHNjcmlwdHMgc3luY2hyb25vdXNseSwgKGkuZS4gYGFzeW5jPSJmYWxzZSJgKSBkdXJpbmcgSFRNTCBwYXJzaW5nLlxuXG5EeW5hbWljYWxseSBpbnNlcnRlZCBzY3JpcHRzICh1c2luZyBbYGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoKWBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9Eb2N1bWVudC9jcmVhdGVFbGVtZW50ICJJbiBhbiBIVE1MIGRvY3VtZW50LCB0aGUgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgpIG1ldGhvZCBjcmVhdGVzIHRoZSBIVE1MIGVsZW1lbnQgc3BlY2lmaWVkIGJ5IHRhZ05hbWUsIG9yIGFuIEhUTUxVbmtub3duRWxlbWVudCBpZiB0YWdOYW1lIGlzblwndCByZWNvZ25pemVkLiIpKSBsb2FkIGFzeW5jaHJvbm91c2x5IGJ5IGRlZmF1bHQsIHNvIHRvIHR1cm4gb24gc3luY2hyb25vdXMgbG9hZGluZyAoaS5lLiBzY3JpcHRzIGxvYWQgaW4gdGhlIG9yZGVyIHRoZXkgd2VyZSBpbnNlcnRlZCkgc2V0IGBhc3luYz0iZmFsc2UiYC5cblxuU2VlIFtCcm93c2VyIGNvbXBhdGliaWxpdHldKCNCcm93c2VyX2NvbXBhdGliaWxpdHkpIGZvciBub3RlcyBvbiBicm93c2VyIHN1cHBvcnQuIFNlZSBhbHNvIFtBc3luYyBzY3JpcHRzIGZvciBhc20uanNdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvR2FtZXMvVGVjaG5pcXVlcy9Bc3luY19zY3JpcHRzKS4nfX0se25hbWU6ImRlZmVyIix2YWx1ZVNldDoidiIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTonVGhpcyBCb29sZWFuIGF0dHJpYnV0ZSBpcyBzZXQgdG8gaW5kaWNhdGUgdG8gYSBicm93c2VyIHRoYXQgdGhlIHNjcmlwdCBpcyBtZWFudCB0byBiZSBleGVjdXRlZCBhZnRlciB0aGUgZG9jdW1lbnQgaGFzIGJlZW4gcGFyc2VkLCBidXQgYmVmb3JlIGZpcmluZyBbYERPTUNvbnRlbnRMb2FkZWRgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9FdmVudHMvRE9NQ29udGVudExvYWRlZCAiL2VuLVVTL2RvY3MvV2ViL0V2ZW50cy9ET01Db250ZW50TG9hZGVkIikuXG5cblNjcmlwdHMgd2l0aCB0aGUgYGRlZmVyYCBhdHRyaWJ1dGUgd2lsbCBwcmV2ZW50IHRoZSBgRE9NQ29udGVudExvYWRlZGAgZXZlbnQgZnJvbSBmaXJpbmcgdW50aWwgdGhlIHNjcmlwdCBoYXMgbG9hZGVkIGFuZCBmaW5pc2hlZCBldmFsdWF0aW5nLlxuXG5UaGlzIGF0dHJpYnV0ZSBtdXN0IG5vdCBiZSB1c2VkIGlmIHRoZSBgc3JjYCBhdHRyaWJ1dGUgaXMgYWJzZW50IChpLmUuIGZvciBpbmxpbmUgc2NyaXB0cyksIGluIHRoaXMgY2FzZSBpdCB3b3VsZCBoYXZlIG5vIGVmZmVjdC5cblxuVG8gYWNoaWV2ZSBhIHNpbWlsYXIgZWZmZWN0IGZvciBkeW5hbWljYWxseSBpbnNlcnRlZCBzY3JpcHRzIHVzZSBgYXN5bmM9ImZhbHNlImAgaW5zdGVhZC4gU2NyaXB0cyB3aXRoIHRoZSBgZGVmZXJgIGF0dHJpYnV0ZSB3aWxsIGV4ZWN1dGUgaW4gdGhlIG9yZGVyIGluIHdoaWNoIHRoZXkgYXBwZWFyIGluIHRoZSBkb2N1bWVudC4nfX0se25hbWU6ImNyb3Nzb3JpZ2luIix2YWx1ZVNldDoieG8iLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6J05vcm1hbCBgc2NyaXB0YCBlbGVtZW50cyBwYXNzIG1pbmltYWwgaW5mb3JtYXRpb24gdG8gdGhlIFtgd2luZG93Lm9uZXJyb3JgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvR2xvYmFsRXZlbnRIYW5kbGVycy9vbmVycm9yICJUaGUgb25lcnJvciBwcm9wZXJ0eSBvZiB0aGUgR2xvYmFsRXZlbnRIYW5kbGVycyBtaXhpbiBpcyBhbiBFdmVudEhhbmRsZXIgdGhhdCBwcm9jZXNzZXMgZXJyb3IgZXZlbnRzLiIpIGZvciBzY3JpcHRzIHdoaWNoIGRvIG5vdCBwYXNzIHRoZSBzdGFuZGFyZCBbQ09SU10oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9HbG9zc2FyeS9DT1JTICJDT1JTOiBDT1JTIChDcm9zcy1PcmlnaW4gUmVzb3VyY2UgU2hhcmluZykgaXMgYSBzeXN0ZW0sIGNvbnNpc3Rpbmcgb2YgdHJhbnNtaXR0aW5nIEhUVFAgaGVhZGVycywgdGhhdCBkZXRlcm1pbmVzIHdoZXRoZXIgYnJvd3NlcnMgYmxvY2sgZnJvbnRlbmQgSmF2YVNjcmlwdCBjb2RlIGZyb20gYWNjZXNzaW5nIHJlc3BvbnNlcyBmb3IgY3Jvc3Mtb3JpZ2luIHJlcXVlc3RzLiIpIGNoZWNrcy4gVG8gYWxsb3cgZXJyb3IgbG9nZ2luZyBmb3Igc2l0ZXMgd2hpY2ggdXNlIGEgc2VwYXJhdGUgZG9tYWluIGZvciBzdGF0aWMgbWVkaWEsIHVzZSB0aGlzIGF0dHJpYnV0ZS4gU2VlIFtDT1JTIHNldHRpbmdzIGF0dHJpYnV0ZXNdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvQ09SU19zZXR0aW5nc19hdHRyaWJ1dGVzKSBmb3IgYSBtb3JlIGRlc2NyaXB0aXZlIGV4cGxhbmF0aW9uIG9mIGl0cyB2YWxpZCBhcmd1bWVudHMuJ319LHtuYW1lOiJub25jZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiQSBjcnlwdG9ncmFwaGljIG5vbmNlIChudW1iZXIgdXNlZCBvbmNlKSB0byB3aGl0ZWxpc3QgaW5saW5lIHNjcmlwdHMgaW4gYSBbc2NyaXB0LXNyYyBDb250ZW50LVNlY3VyaXR5LVBvbGljeV0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRUUC9IZWFkZXJzL0NvbnRlbnQtU2VjdXJpdHktUG9saWN5L3NjcmlwdC1zcmMpLiBUaGUgc2VydmVyIG11c3QgZ2VuZXJhdGUgYSB1bmlxdWUgbm9uY2UgdmFsdWUgZWFjaCB0aW1lIGl0IHRyYW5zbWl0cyBhIHBvbGljeS4gSXQgaXMgY3JpdGljYWwgdG8gcHJvdmlkZSBhIG5vbmNlIHRoYXQgY2Fubm90IGJlIGd1ZXNzZWQgYXMgYnlwYXNzaW5nIGEgcmVzb3VyY2UncyBwb2xpY3kgaXMgb3RoZXJ3aXNlIHRyaXZpYWwuIn19LHtuYW1lOiJpbnRlZ3JpdHkiLGRlc2NyaXB0aW9uOiJUaGlzIGF0dHJpYnV0ZSBjb250YWlucyBpbmxpbmUgbWV0YWRhdGEgdGhhdCBhIHVzZXIgYWdlbnQgY2FuIHVzZSB0byB2ZXJpZnkgdGhhdCBhIGZldGNoZWQgcmVzb3VyY2UgaGFzIGJlZW4gZGVsaXZlcmVkIGZyZWUgb2YgdW5leHBlY3RlZCBtYW5pcHVsYXRpb24uIFNlZSBbU3VicmVzb3VyY2UgSW50ZWdyaXR5XShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9TZWN1cml0eS9TdWJyZXNvdXJjZV9JbnRlZ3JpdHkpLiJ9LHtuYW1lOiJub21vZHVsZSIsZGVzY3JpcHRpb246IlRoaXMgQm9vbGVhbiBhdHRyaWJ1dGUgaXMgc2V0IHRvIGluZGljYXRlIHRoYXQgdGhlIHNjcmlwdCBzaG91bGQgbm90IGJlIGV4ZWN1dGVkIGluIGJyb3dzZXJzIHRoYXQgc3VwcG9ydCBbRVMyMDE1IG1vZHVsZXNdKGh0dHBzOi8vaGFja3MubW96aWxsYS5vcmcvMjAxNS8wOC9lczYtaW4tZGVwdGgtbW9kdWxlcy8pIOKAlCBpbiBlZmZlY3QsIHRoaXMgY2FuIGJlIHVzZWQgdG8gc2VydmUgZmFsbGJhY2sgc2NyaXB0cyB0byBvbGRlciBicm93c2VycyB0aGF0IGRvIG5vdCBzdXBwb3J0IG1vZHVsYXIgSmF2YVNjcmlwdCBjb2RlLiJ9LHtuYW1lOiJyZWZlcnJlcnBvbGljeSIsZGVzY3JpcHRpb246J0luZGljYXRlcyB3aGljaCBbcmVmZXJyZXJdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9Eb2N1bWVudC9yZWZlcnJlcikgdG8gc2VuZCB3aGVuIGZldGNoaW5nIHRoZSBzY3JpcHQsIG9yIHJlc291cmNlcyBmZXRjaGVkIGJ5IHRoZSBzY3JpcHQ6XG5cbiogICBgbm8tcmVmZXJyZXJgOiBUaGUgW2BSZWZlcmVyYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRUUC9IZWFkZXJzL1JlZmVyZXIgIlRoZSBSZWZlcmVyIHJlcXVlc3QgaGVhZGVyIGNvbnRhaW5zIHRoZSBhZGRyZXNzIG9mIHRoZSBwcmV2aW91cyB3ZWIgcGFnZSBmcm9tIHdoaWNoIGEgbGluayB0byB0aGUgY3VycmVudGx5IHJlcXVlc3RlZCBwYWdlIHdhcyBmb2xsb3dlZC4gVGhlIFJlZmVyZXIgaGVhZGVyIGFsbG93cyBzZXJ2ZXJzIHRvIGlkZW50aWZ5IHdoZXJlIHBlb3BsZSBhcmUgdmlzaXRpbmcgdGhlbSBmcm9tIGFuZCBtYXkgdXNlIHRoYXQgZGF0YSBmb3IgYW5hbHl0aWNzLCBsb2dnaW5nLCBvciBvcHRpbWl6ZWQgY2FjaGluZywgZm9yIGV4YW1wbGUuIikgaGVhZGVyIHdpbGwgbm90IGJlIHNlbnQuXG4qICAgYG5vLXJlZmVycmVyLXdoZW4tZG93bmdyYWRlYCAoZGVmYXVsdCk6IFRoZSBbYFJlZmVyZXJgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVFRQL0hlYWRlcnMvUmVmZXJlciAiVGhlIFJlZmVyZXIgcmVxdWVzdCBoZWFkZXIgY29udGFpbnMgdGhlIGFkZHJlc3Mgb2YgdGhlIHByZXZpb3VzIHdlYiBwYWdlIGZyb20gd2hpY2ggYSBsaW5rIHRvIHRoZSBjdXJyZW50bHkgcmVxdWVzdGVkIHBhZ2Ugd2FzIGZvbGxvd2VkLiBUaGUgUmVmZXJlciBoZWFkZXIgYWxsb3dzIHNlcnZlcnMgdG8gaWRlbnRpZnkgd2hlcmUgcGVvcGxlIGFyZSB2aXNpdGluZyB0aGVtIGZyb20gYW5kIG1heSB1c2UgdGhhdCBkYXRhIGZvciBhbmFseXRpY3MsIGxvZ2dpbmcsIG9yIG9wdGltaXplZCBjYWNoaW5nLCBmb3IgZXhhbXBsZS4iKSBoZWFkZXIgd2lsbCBub3QgYmUgc2VudCB0byBbb3JpZ2luXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0dsb3NzYXJ5L29yaWdpbiAib3JpZ2luOiBXZWIgY29udGVudFwncyBvcmlnaW4gaXMgZGVmaW5lZCBieSB0aGUgc2NoZW1lIChwcm90b2NvbCksIGhvc3QgKGRvbWFpbiksIGFuZCBwb3J0IG9mIHRoZSBVUkwgdXNlZCB0byBhY2Nlc3MgaXQuIFR3byBvYmplY3RzIGhhdmUgdGhlIHNhbWUgb3JpZ2luIG9ubHkgd2hlbiB0aGUgc2NoZW1lLCBob3N0LCBhbmQgcG9ydCBhbGwgbWF0Y2guIilzIHdpdGhvdXQgW1RMU10oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9HbG9zc2FyeS9UTFMgIlRMUzogVHJhbnNwb3J0IExheWVyIFNlY3VyaXR5IChUTFMpLCBwcmV2aW91c2x5IGtub3duIGFzIFNlY3VyZSBTb2NrZXRzIExheWVyIChTU0wpLCBpcyBhIHByb3RvY29sIHVzZWQgYnkgYXBwbGljYXRpb25zIHRvIGNvbW11bmljYXRlIHNlY3VyZWx5IGFjcm9zcyBhIG5ldHdvcmssIHByZXZlbnRpbmcgdGFtcGVyaW5nIHdpdGggYW5kIGVhdmVzZHJvcHBpbmcgb24gZW1haWwsIHdlYiBicm93c2luZywgbWVzc2FnaW5nLCBhbmQgb3RoZXIgcHJvdG9jb2xzLiIpIChbSFRUUFNdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvR2xvc3NhcnkvSFRUUFMgIkhUVFBTOiBIVFRQUyAoSFRUUCBTZWN1cmUpIGlzIGFuIGVuY3J5cHRlZCB2ZXJzaW9uIG9mIHRoZSBIVFRQIHByb3RvY29sLiBJdCB1c3VhbGx5IHVzZXMgU1NMIG9yIFRMUyB0byBlbmNyeXB0IGFsbCBjb21tdW5pY2F0aW9uIGJldHdlZW4gYSBjbGllbnQgYW5kIGEgc2VydmVyLiBUaGlzIHNlY3VyZSBjb25uZWN0aW9uIGFsbG93cyBjbGllbnRzIHRvIHNhZmVseSBleGNoYW5nZSBzZW5zaXRpdmUgZGF0YSB3aXRoIGEgc2VydmVyLCBmb3IgZXhhbXBsZSBmb3IgYmFua2luZyBhY3Rpdml0aWVzIG9yIG9ubGluZSBzaG9wcGluZy4iKSkuXG4qICAgYG9yaWdpbmA6IFRoZSBzZW50IHJlZmVycmVyIHdpbGwgYmUgbGltaXRlZCB0byB0aGUgb3JpZ2luIG9mIHRoZSByZWZlcnJpbmcgcGFnZTogaXRzIFtzY2hlbWVdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvQXJjaGl2ZS9Nb3ppbGxhL1VSSVNjaGVtZSksIFtob3N0XShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0dsb3NzYXJ5L2hvc3QgImhvc3Q6IEEgaG9zdCBpcyBhIGRldmljZSBjb25uZWN0ZWQgdG8gdGhlIEludGVybmV0IChvciBhIGxvY2FsIG5ldHdvcmspLiBTb21lIGhvc3RzIGNhbGxlZCBzZXJ2ZXJzIG9mZmVyIGFkZGl0aW9uYWwgc2VydmljZXMgbGlrZSBzZXJ2aW5nIHdlYnBhZ2VzIG9yIHN0b3JpbmcgZmlsZXMgYW5kIGVtYWlscy4iKSwgYW5kIFtwb3J0XShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0dsb3NzYXJ5L3BvcnQgInBvcnQ6IEZvciBhIGNvbXB1dGVyIGNvbm5lY3RlZCB0byBhIG5ldHdvcmsgd2l0aCBhbiBJUCBhZGRyZXNzLCBhIHBvcnQgaXMgYSBjb21tdW5pY2F0aW9uIGVuZHBvaW50LiBQb3J0cyBhcmUgZGVzaWduYXRlZCBieSBudW1iZXJzLCBhbmQgYmVsb3cgMTAyNCBlYWNoIHBvcnQgaXMgYXNzb2NpYXRlZCBieSBkZWZhdWx0IHdpdGggYSBzcGVjaWZpYyBwcm90b2NvbC4iKS5cbiogICBgb3JpZ2luLXdoZW4tY3Jvc3Mtb3JpZ2luYDogVGhlIHJlZmVycmVyIHNlbnQgdG8gb3RoZXIgb3JpZ2lucyB3aWxsIGJlIGxpbWl0ZWQgdG8gdGhlIHNjaGVtZSwgdGhlIGhvc3QsIGFuZCB0aGUgcG9ydC4gTmF2aWdhdGlvbnMgb24gdGhlIHNhbWUgb3JpZ2luIHdpbGwgc3RpbGwgaW5jbHVkZSB0aGUgcGF0aC5cbiogICBgc2FtZS1vcmlnaW5gOiBBIHJlZmVycmVyIHdpbGwgYmUgc2VudCBmb3IgW3NhbWUgb3JpZ2luXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0dsb3NzYXJ5L1NhbWUtb3JpZ2luX3BvbGljeSAic2FtZSBvcmlnaW46IFRoZSBzYW1lLW9yaWdpbiBwb2xpY3kgaXMgYSBjcml0aWNhbCBzZWN1cml0eSBtZWNoYW5pc20gdGhhdCByZXN0cmljdHMgaG93IGEgZG9jdW1lbnQgb3Igc2NyaXB0IGxvYWRlZCBmcm9tIG9uZSBvcmlnaW4gY2FuIGludGVyYWN0IHdpdGggYSByZXNvdXJjZSBmcm9tIGFub3RoZXIgb3JpZ2luLiIpLCBidXQgY3Jvc3Mtb3JpZ2luIHJlcXVlc3RzIHdpbGwgY29udGFpbiBubyByZWZlcnJlciBpbmZvcm1hdGlvbi5cbiogICBgc3RyaWN0LW9yaWdpbmA6IE9ubHkgc2VuZCB0aGUgb3JpZ2luIG9mIHRoZSBkb2N1bWVudCBhcyB0aGUgcmVmZXJyZXIgd2hlbiB0aGUgcHJvdG9jb2wgc2VjdXJpdHkgbGV2ZWwgc3RheXMgdGhlIHNhbWUgKGUuZy4gSFRUUFPihpJIVFRQUyksIGJ1dCBkb25cJ3Qgc2VuZCBpdCB0byBhIGxlc3Mgc2VjdXJlIGRlc3RpbmF0aW9uIChlLmcuIEhUVFBT4oaSSFRUUCkuXG4qICAgYHN0cmljdC1vcmlnaW4td2hlbi1jcm9zcy1vcmlnaW5gOiBTZW5kIGEgZnVsbCBVUkwgd2hlbiBwZXJmb3JtaW5nIGEgc2FtZS1vcmlnaW4gcmVxdWVzdCwgYnV0IG9ubHkgc2VuZCB0aGUgb3JpZ2luIHdoZW4gdGhlIHByb3RvY29sIHNlY3VyaXR5IGxldmVsIHN0YXlzIHRoZSBzYW1lIChlLmcuSFRUUFPihpJIVFRQUyksIGFuZCBzZW5kIG5vIGhlYWRlciB0byBhIGxlc3Mgc2VjdXJlIGRlc3RpbmF0aW9uIChlLmcuIEhUVFBT4oaSSFRUUCkuXG4qICAgYHVuc2FmZS11cmxgOiBUaGUgcmVmZXJyZXIgd2lsbCBpbmNsdWRlIHRoZSBvcmlnaW4gX2FuZF8gdGhlIHBhdGggKGJ1dCBub3QgdGhlIFtmcmFnbWVudF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL0hUTUxIeXBlcmxpbmtFbGVtZW50VXRpbHMvaGFzaCksIFtwYXNzd29yZF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL0hUTUxIeXBlcmxpbmtFbGVtZW50VXRpbHMvcGFzc3dvcmQpLCBvciBbdXNlcm5hbWVdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9IVE1MSHlwZXJsaW5rRWxlbWVudFV0aWxzL3VzZXJuYW1lKSkuICoqVGhpcyB2YWx1ZSBpcyB1bnNhZmUqKiwgYmVjYXVzZSBpdCBsZWFrcyBvcmlnaW5zIGFuZCBwYXRocyBmcm9tIFRMUy1wcm90ZWN0ZWQgcmVzb3VyY2VzIHRvIGluc2VjdXJlIG9yaWdpbnMuXG5cbioqTm90ZSoqOiBBbiBlbXB0eSBzdHJpbmcgdmFsdWUgKGAiImApIGlzIGJvdGggdGhlIGRlZmF1bHQgdmFsdWUsIGFuZCBhIGZhbGxiYWNrIHZhbHVlIGlmIGByZWZlcnJlcnBvbGljeWAgaXMgbm90IHN1cHBvcnRlZC4gSWYgYHJlZmVycmVycG9saWN5YCBpcyBub3QgZXhwbGljaXRseSBzcGVjaWZpZWQgb24gdGhlIGA8c2NyaXB0PmAgZWxlbWVudCwgaXQgd2lsbCBhZG9wdCBhIGhpZ2hlci1sZXZlbCByZWZlcnJlciBwb2xpY3ksIGkuZS4gb25lIHNldCBvbiB0aGUgd2hvbGUgZG9jdW1lbnQgb3IgZG9tYWluLiBJZiBhIGhpZ2hlci1sZXZlbCBwb2xpY3kgaXMgbm90IGF2YWlsYWJsZSzCoHRoZSBlbXB0eSBzdHJpbmcgaXMgdHJlYXRlZCBhcyBiZWluZyBlcXVpdmFsZW50IHRvIGBuby1yZWZlcnJlci13aGVuLWRvd25ncmFkZWAuJ30se25hbWU6InRleHQiLGRlc2NyaXB0aW9uOiJMaWtlIHRoZSBgdGV4dENvbnRlbnRgIGF0dHJpYnV0ZSwgdGhpcyBhdHRyaWJ1dGUgc2V0cyB0aGUgdGV4dCBjb250ZW50IG9mIHRoZSBlbGVtZW50LiBVbmxpa2UgdGhlIGB0ZXh0Q29udGVudGAgYXR0cmlidXRlLCBob3dldmVyLCB0aGlzIGF0dHJpYnV0ZSBpcyBldmFsdWF0ZWQgYXMgZXhlY3V0YWJsZSBjb2RlIGFmdGVyIHRoZSBub2RlIGlzIGluc2VydGVkIGludG8gdGhlIERPTS4ifV0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3NjcmlwdCJ9XX0se25hbWU6Im5vc2NyaXB0IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgbm9zY3JpcHQgZWxlbWVudCByZXByZXNlbnRzIG5vdGhpbmcgaWYgc2NyaXB0aW5nIGlzIGVuYWJsZWQsIGFuZCByZXByZXNlbnRzIGl0cyBjaGlsZHJlbiBpZiBzY3JpcHRpbmcgaXMgZGlzYWJsZWQuIEl0IGlzIHVzZWQgdG8gcHJlc2VudCBkaWZmZXJlbnQgbWFya3VwIHRvIHVzZXIgYWdlbnRzIHRoYXQgc3VwcG9ydCBzY3JpcHRpbmcgYW5kIHRob3NlIHRoYXQgZG9uJ3Qgc3VwcG9ydCBzY3JpcHRpbmcsIGJ5IGFmZmVjdGluZyBob3cgdGhlIGRvY3VtZW50IGlzIHBhcnNlZC4ifSxhdHRyaWJ1dGVzOltdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9ub3NjcmlwdCJ9XX0se25hbWU6InRlbXBsYXRlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgdGVtcGxhdGUgZWxlbWVudCBpcyB1c2VkIHRvIGRlY2xhcmUgZnJhZ21lbnRzIG9mIEhUTUwgdGhhdCBjYW4gYmUgY2xvbmVkIGFuZCBpbnNlcnRlZCBpbiB0aGUgZG9jdW1lbnQgYnkgc2NyaXB0LiJ9LGF0dHJpYnV0ZXM6W10scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3RlbXBsYXRlIn1dfSx7bmFtZToiY2FudmFzIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgY2FudmFzIGVsZW1lbnQgcHJvdmlkZXMgc2NyaXB0cyB3aXRoIGEgcmVzb2x1dGlvbi1kZXBlbmRlbnQgYml0bWFwIGNhbnZhcywgd2hpY2ggY2FuIGJlIHVzZWQgZm9yIHJlbmRlcmluZyBncmFwaHMsIGdhbWUgZ3JhcGhpY3MsIGFydCwgb3Igb3RoZXIgdmlzdWFsIGltYWdlcyBvbiB0aGUgZmx5LiJ9LGF0dHJpYnV0ZXM6W3tuYW1lOiJ3aWR0aCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHdpZHRoIG9mIHRoZSBjb29yZGluYXRlIHNwYWNlIGluIENTUyBwaXhlbHMuIERlZmF1bHRzIHRvIDMwMC4ifX0se25hbWU6ImhlaWdodCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIGhlaWdodCBvZiB0aGUgY29vcmRpbmF0ZSBzcGFjZSBpbiBDU1MgcGl4ZWxzLiBEZWZhdWx0cyB0byAxNTAuIn19LHtuYW1lOiJtb3otb3BhcXVlIixkZXNjcmlwdGlvbjoiTGV0cyB0aGUgY2FudmFzIGtub3cgd2hldGhlciBvciBub3QgdHJhbnNsdWNlbmN5IHdpbGwgYmUgYSBmYWN0b3IuIElmIHRoZSBjYW52YXMga25vd3MgdGhlcmUncyBubyB0cmFuc2x1Y2VuY3ksIHBhaW50aW5nIHBlcmZvcm1hbmNlIGNhbiBiZSBvcHRpbWl6ZWQuIFRoaXMgaXMgb25seSBzdXBwb3J0ZWQgYnkgTW96aWxsYS1iYXNlZCBicm93c2VyczsgdXNlIHRoZSBzdGFuZGFyZGl6ZWQgW2BjYW52YXMuZ2V0Q29udGV4dCgnMmQnLCB7IGFscGhhOiBmYWxzZSB9KWBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9IVE1MQ2FudmFzRWxlbWVudC9nZXRDb250ZXh0IFwiVGhlIEhUTUxDYW52YXNFbGVtZW50LmdldENvbnRleHQoKSBtZXRob2QgcmV0dXJucyBhIGRyYXdpbmcgY29udGV4dCBvbiB0aGUgY2FudmFzLCBvciBudWxsIGlmIHRoZSBjb250ZXh0IGlkZW50aWZpZXIgaXMgbm90IHN1cHBvcnRlZC5cIikgaW5zdGVhZC4ifV0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2NhbnZhcyJ9XX1dLGdsb2JhbEF0dHJpYnV0ZXM6W3tuYW1lOiJhY2Nlc3NrZXkiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlByb3ZpZGVzIGEgaGludCBmb3IgZ2VuZXJhdGluZyBhIGtleWJvYXJkIHNob3J0Y3V0IGZvciB0aGUgY3VycmVudCBlbGVtZW50LiBUaGlzIGF0dHJpYnV0ZSBjb25zaXN0cyBvZiBhIHNwYWNlLXNlcGFyYXRlZCBsaXN0IG9mIGNoYXJhY3RlcnMuIFRoZSBicm93c2VyIHNob3VsZCB1c2UgdGhlIGZpcnN0IG9uZSB0aGF0IGV4aXN0cyBvbiB0aGUgY29tcHV0ZXIga2V5Ym9hcmQgbGF5b3V0LiJ9LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvR2xvYmFsX2F0dHJpYnV0ZXMvYWNjZXNza2V5In1dfSx7bmFtZToiYXV0b2NhcGl0YWxpemUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkNvbnRyb2xzIHdoZXRoZXIgYW5kIGhvdyB0ZXh0IGlucHV0IGlzIGF1dG9tYXRpY2FsbHkgY2FwaXRhbGl6ZWQgYXMgaXQgaXMgZW50ZXJlZC9lZGl0ZWQgYnkgdGhlIHVzZXIuIEl0IGNhbiBoYXZlIHRoZSBmb2xsb3dpbmcgdmFsdWVzOlxuXG4qICAgYG9mZmAgb3IgYG5vbmVgLCBubyBhdXRvY2FwaXRhbGl6YXRpb24gaXMgYXBwbGllZCAoYWxsIGxldHRlcnMgZGVmYXVsdCB0byBsb3dlcmNhc2UpXG4qICAgYG9uYCBvciBgc2VudGVuY2VzYCwgdGhlIGZpcnN0IGxldHRlciBvZiBlYWNoIHNlbnRlbmNlIGRlZmF1bHRzIHRvIGEgY2FwaXRhbCBsZXR0ZXI7IGFsbCBvdGhlciBsZXR0ZXJzIGRlZmF1bHQgdG8gbG93ZXJjYXNlXG4qICAgYHdvcmRzYCwgdGhlIGZpcnN0IGxldHRlciBvZiBlYWNoIHdvcmQgZGVmYXVsdHMgdG8gYSBjYXBpdGFsIGxldHRlcjsgYWxsIG90aGVyIGxldHRlcnMgZGVmYXVsdCB0byBsb3dlcmNhc2VcbiogICBgY2hhcmFjdGVyc2AsIGFsbCBsZXR0ZXJzIHNob3VsZCBkZWZhdWx0IHRvIHVwcGVyY2FzZSJ9LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvR2xvYmFsX2F0dHJpYnV0ZXMvYXV0b2NhcGl0YWxpemUifV19LHtuYW1lOiJjbGFzcyIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTonQSBzcGFjZS1zZXBhcmF0ZWQgbGlzdCBvZiB0aGUgY2xhc3NlcyBvZiB0aGUgZWxlbWVudC4gQ2xhc3NlcyBhbGxvd3MgQ1NTIGFuZCBKYXZhU2NyaXB0IHRvIHNlbGVjdCBhbmQgYWNjZXNzIHNwZWNpZmljIGVsZW1lbnRzIHZpYSB0aGUgW2NsYXNzIHNlbGVjdG9yc10oL2VuLVVTL2RvY3MvV2ViL0NTUy9DbGFzc19zZWxlY3RvcnMpIG9yIGZ1bmN0aW9ucyBsaWtlIHRoZSBtZXRob2QgW2BEb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKClgXSgvZW4tVVMvZG9jcy9XZWIvQVBJL0RvY3VtZW50L2dldEVsZW1lbnRzQnlDbGFzc05hbWUgInJldHVybnMgYW4gYXJyYXktbGlrZSBvYmplY3Qgb2YgYWxsIGNoaWxkIGVsZW1lbnRzIHdoaWNoIGhhdmUgYWxsIG9mIHRoZSBnaXZlbiBjbGFzcyBuYW1lcy4iKS4nfSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0dsb2JhbF9hdHRyaWJ1dGVzL2NsYXNzIn1dfSx7bmFtZToiY29udGVudGVkaXRhYmxlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJBbiBlbnVtZXJhdGVkIGF0dHJpYnV0ZSBpbmRpY2F0aW5nIGlmIHRoZSBlbGVtZW50IHNob3VsZCBiZSBlZGl0YWJsZSBieSB0aGUgdXNlci4gSWYgc28sIHRoZSBicm93c2VyIG1vZGlmaWVzIGl0cyB3aWRnZXQgdG8gYWxsb3cgZWRpdGluZy4gVGhlIGF0dHJpYnV0ZSBtdXN0IHRha2Ugb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOlxuXG4qICAgYHRydWVgIG9yIHRoZSBfZW1wdHkgc3RyaW5nXywgd2hpY2ggaW5kaWNhdGVzIHRoYXQgdGhlIGVsZW1lbnQgbXVzdCBiZSBlZGl0YWJsZTtcbiogICBgZmFsc2VgLCB3aGljaCBpbmRpY2F0ZXMgdGhhdCB0aGUgZWxlbWVudCBtdXN0IG5vdCBiZSBlZGl0YWJsZS4ifSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0dsb2JhbF9hdHRyaWJ1dGVzL2NvbnRlbnRlZGl0YWJsZSJ9XX0se25hbWU6ImNvbnRleHRtZW51IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOidUaGUgYFsqKmlkKipdKCNhdHRyLWlkKWAgb2YgYSBbYDxtZW51PmBdKC9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvbWVudSAiVGhlIEhUTUwgPG1lbnU+IGVsZW1lbnQgcmVwcmVzZW50cyBhIGdyb3VwIG9mIGNvbW1hbmRzIHRoYXQgYSB1c2VyIGNhbiBwZXJmb3JtIG9yIGFjdGl2YXRlLiBUaGlzIGluY2x1ZGVzIGJvdGggbGlzdCBtZW51cywgd2hpY2ggbWlnaHQgYXBwZWFyIGFjcm9zcyB0aGUgdG9wIG9mIGEgc2NyZWVuLCBhcyB3ZWxsIGFzIGNvbnRleHQgbWVudXMsIHN1Y2ggYXMgdGhvc2UgdGhhdCBtaWdodCBhcHBlYXIgdW5kZXJuZWF0aCBhIGJ1dHRvbiBhZnRlciBpdCBoYXMgYmVlbiBjbGlja2VkLiIpIHRvIHVzZSBhcyB0aGUgY29udGV4dHVhbCBtZW51IGZvciB0aGlzIGVsZW1lbnQuJ30scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9HbG9iYWxfYXR0cmlidXRlcy9jb250ZXh0bWVudSJ9XX0se25hbWU6ImRpciIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiQW4gZW51bWVyYXRlZCBhdHRyaWJ1dGUgaW5kaWNhdGluZyB0aGUgZGlyZWN0aW9uYWxpdHkgb2YgdGhlIGVsZW1lbnQncyB0ZXh0LiBJdCBjYW4gaGF2ZSB0aGUgZm9sbG93aW5nIHZhbHVlczpcblxuKiAgIGBsdHJgLCB3aGljaCBtZWFucyBfbGVmdCB0byByaWdodF8gYW5kIGlzIHRvIGJlIHVzZWQgZm9yIGxhbmd1YWdlcyB0aGF0IGFyZSB3cml0dGVuIGZyb20gdGhlIGxlZnQgdG8gdGhlIHJpZ2h0IChsaWtlIEVuZ2xpc2gpO1xuKiAgIGBydGxgLCB3aGljaCBtZWFucyBfcmlnaHQgdG8gbGVmdF8gYW5kIGlzIHRvIGJlIHVzZWQgZm9yIGxhbmd1YWdlcyB0aGF0IGFyZSB3cml0dGVuIGZyb20gdGhlIHJpZ2h0IHRvIHRoZSBsZWZ0IChsaWtlIEFyYWJpYyk7XG4qICAgYGF1dG9gLCB3aGljaCBsZXRzIHRoZSB1c2VyIGFnZW50IGRlY2lkZS4gSXQgdXNlcyBhIGJhc2ljIGFsZ29yaXRobSBhcyBpdCBwYXJzZXMgdGhlIGNoYXJhY3RlcnMgaW5zaWRlIHRoZSBlbGVtZW50IHVudGlsIGl0IGZpbmRzIGEgY2hhcmFjdGVyIHdpdGggYSBzdHJvbmcgZGlyZWN0aW9uYWxpdHksIHRoZW4gaXQgYXBwbGllcyB0aGF0IGRpcmVjdGlvbmFsaXR5IHRvIHRoZSB3aG9sZSBlbGVtZW50LiJ9LHZhbHVlU2V0OiJkIixyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0dsb2JhbF9hdHRyaWJ1dGVzL2RpciJ9XX0se25hbWU6ImRyYWdnYWJsZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiQW4gZW51bWVyYXRlZCBhdHRyaWJ1dGUgaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBlbGVtZW50IGNhbiBiZSBkcmFnZ2VkLCB1c2luZyB0aGUgW0RyYWcgYW5kIERyb3AgQVBJXSgvZW4tdXMvZG9jcy9EcmFnRHJvcC9EcmFnX2FuZF9Ecm9wKS4gSXQgY2FuIGhhdmUgdGhlIGZvbGxvd2luZyB2YWx1ZXM6XG5cbiogICBgdHJ1ZWAsIHdoaWNoIGluZGljYXRlcyB0aGF0IHRoZSBlbGVtZW50IG1heSBiZSBkcmFnZ2VkXG4qICAgYGZhbHNlYCwgd2hpY2ggaW5kaWNhdGVzIHRoYXQgdGhlIGVsZW1lbnQgbWF5IG5vdCBiZSBkcmFnZ2VkLiJ9LHZhbHVlU2V0OiJiIixyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0dsb2JhbF9hdHRyaWJ1dGVzL2RyYWdnYWJsZSJ9XX0se25hbWU6ImRyb3B6b25lIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJBbiBlbnVtZXJhdGVkIGF0dHJpYnV0ZSBpbmRpY2F0aW5nIHdoYXQgdHlwZXMgb2YgY29udGVudCBjYW4gYmUgZHJvcHBlZCBvbiBhbiBlbGVtZW50LCB1c2luZyB0aGUgW0RyYWcgYW5kIERyb3AgQVBJXSgvZW4tVVMvZG9jcy9EcmFnRHJvcC9EcmFnX2FuZF9Ecm9wKS4gSXQgY2FuIGhhdmUgdGhlIGZvbGxvd2luZyB2YWx1ZXM6XG5cbiogICBgY29weWAsIHdoaWNoIGluZGljYXRlcyB0aGF0IGRyb3BwaW5nIHdpbGwgY3JlYXRlIGEgY29weSBvZiB0aGUgZWxlbWVudCB0aGF0IHdhcyBkcmFnZ2VkXG4qICAgYG1vdmVgLCB3aGljaCBpbmRpY2F0ZXMgdGhhdCB0aGUgZWxlbWVudCB0aGF0IHdhcyBkcmFnZ2VkIHdpbGwgYmUgbW92ZWQgdG8gdGhpcyBuZXcgbG9jYXRpb24uXG4qICAgYGxpbmtgLCB3aWxsIGNyZWF0ZSBhIGxpbmsgdG8gdGhlIGRyYWdnZWQgZGF0YS4ifX0se25hbWU6ImV4cG9ydHBhcnRzIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJVc2VkIHRvIHRyYW5zaXRpdmVseSBleHBvcnQgc2hhZG93IHBhcnRzIGZyb20gYSBuZXN0ZWQgc2hhZG93IHRyZWUgaW50byBhIGNvbnRhaW5pbmcgbGlnaHQgdHJlZS4ifSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0dsb2JhbF9hdHRyaWJ1dGVzL2V4cG9ydHBhcnRzIn1dfSx7bmFtZToiaGlkZGVuIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJBIEJvb2xlYW4gYXR0cmlidXRlIGluZGljYXRlcyB0aGF0IHRoZSBlbGVtZW50IGlzIG5vdCB5ZXQsIG9yIGlzIG5vIGxvbmdlciwgX3JlbGV2YW50Xy4gRm9yIGV4YW1wbGUsIGl0IGNhbiBiZSB1c2VkIHRvIGhpZGUgZWxlbWVudHMgb2YgdGhlIHBhZ2UgdGhhdCBjYW4ndCBiZSB1c2VkIHVudGlsIHRoZSBsb2dpbiBwcm9jZXNzIGhhcyBiZWVuIGNvbXBsZXRlZC4gVGhlIGJyb3dzZXIgd29uJ3QgcmVuZGVyIHN1Y2ggZWxlbWVudHMuIFRoaXMgYXR0cmlidXRlIG11c3Qgbm90IGJlIHVzZWQgdG8gaGlkZSBjb250ZW50IHRoYXQgY291bGQgbGVnaXRpbWF0ZWx5IGJlIHNob3duLiJ9LHZhbHVlU2V0OiJ2IixyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0dsb2JhbF9hdHRyaWJ1dGVzL2hpZGRlbiJ9XX0se25hbWU6ImlkIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJEZWZpbmVzIGEgdW5pcXVlIGlkZW50aWZpZXIgKElEKSB3aGljaCBtdXN0IGJlIHVuaXF1ZSBpbiB0aGUgd2hvbGUgZG9jdW1lbnQuIEl0cyBwdXJwb3NlIGlzIHRvIGlkZW50aWZ5IHRoZSBlbGVtZW50IHdoZW4gbGlua2luZyAodXNpbmcgYSBmcmFnbWVudCBpZGVudGlmaWVyKSwgc2NyaXB0aW5nLCBvciBzdHlsaW5nICh3aXRoIENTUykuIn0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9HbG9iYWxfYXR0cmlidXRlcy9pZCJ9XX0se25hbWU6ImlucHV0bW9kZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTonUHJvdmlkZXMgYSBoaW50IHRvIGJyb3dzZXJzIGFzIHRvIHRoZSB0eXBlIG9mIHZpcnR1YWwga2V5Ym9hcmQgY29uZmlndXJhdGlvbiB0byB1c2Ugd2hlbiBlZGl0aW5nIHRoaXMgZWxlbWVudCBvciBpdHMgY29udGVudHMuIFVzZWQgcHJpbWFyaWx5IG9uIFtgPGlucHV0PmBdKC9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvaW5wdXQgIlRoZSBIVE1MIDxpbnB1dD4gZWxlbWVudCBpcyB1c2VkIHRvIGNyZWF0ZSBpbnRlcmFjdGl2ZSBjb250cm9scyBmb3Igd2ViLWJhc2VkIGZvcm1zIGluIG9yZGVyIHRvIGFjY2VwdCBkYXRhIGZyb20gdGhlIHVzZXI7IGEgd2lkZSB2YXJpZXR5IG9mIHR5cGVzIG9mIGlucHV0IGRhdGEgYW5kIGNvbnRyb2wgd2lkZ2V0cyBhcmUgYXZhaWxhYmxlLCBkZXBlbmRpbmcgb24gdGhlIGRldmljZSBhbmQgdXNlciBhZ2VudC4iKSBlbGVtZW50cywgYnV0IGlzIHVzYWJsZSBvbiBhbnkgZWxlbWVudCB3aGlsZSBpbiBgW2NvbnRlbnRlZGl0YWJsZV0oL2VuLVVTL2RvY3MvV2ViL0hUTUwvR2xvYmFsX2F0dHJpYnV0ZXMjYXR0ci1jb250ZW50ZWRpdGFibGUpYCBtb2RlLid9LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvR2xvYmFsX2F0dHJpYnV0ZXMvaW5wdXRtb2RlIn1dfSx7bmFtZToiaXMiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkFsbG93cyB5b3UgdG8gc3BlY2lmeSB0aGF0IGEgc3RhbmRhcmQgSFRNTCBlbGVtZW50IHNob3VsZCBiZWhhdmUgbGlrZSBhIHJlZ2lzdGVyZWQgY3VzdG9tIGJ1aWx0LWluIGVsZW1lbnQgKHNlZSBbVXNpbmcgY3VzdG9tIGVsZW1lbnRzXSgvZW4tVVMvZG9jcy9XZWIvV2ViX0NvbXBvbmVudHMvVXNpbmdfY3VzdG9tX2VsZW1lbnRzKSBmb3IgbW9yZSBkZXRhaWxzKS4ifSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0dsb2JhbF9hdHRyaWJ1dGVzL2lzIn1dfSx7bmFtZToiaXRlbWlkIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgdW5pcXVlLCBnbG9iYWwgaWRlbnRpZmllciBvZiBhbiBpdGVtLiJ9LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvR2xvYmFsX2F0dHJpYnV0ZXMvaXRlbWlkIn1dfSx7bmFtZToiaXRlbXByb3AiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlVzZWQgdG8gYWRkIHByb3BlcnRpZXMgdG8gYW4gaXRlbS4gRXZlcnkgSFRNTCBlbGVtZW50IG1heSBoYXZlIGFuIGBpdGVtcHJvcGAgYXR0cmlidXRlIHNwZWNpZmllZCwgd2hlcmUgYW4gYGl0ZW1wcm9wYCBjb25zaXN0cyBvZiBhIG5hbWUgYW5kIHZhbHVlIHBhaXIuIn0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9HbG9iYWxfYXR0cmlidXRlcy9pdGVtcHJvcCJ9XX0se25hbWU6Iml0ZW1yZWYiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlByb3BlcnRpZXMgdGhhdCBhcmUgbm90IGRlc2NlbmRhbnRzIG9mIGFuIGVsZW1lbnQgd2l0aCB0aGUgYGl0ZW1zY29wZWAgYXR0cmlidXRlIGNhbiBiZSBhc3NvY2lhdGVkIHdpdGggdGhlIGl0ZW0gdXNpbmcgYW4gYGl0ZW1yZWZgLiBJdCBwcm92aWRlcyBhIGxpc3Qgb2YgZWxlbWVudCBpZHMgKG5vdCBgaXRlbWlkYHMpIHdpdGggYWRkaXRpb25hbCBwcm9wZXJ0aWVzIGVsc2V3aGVyZSBpbiB0aGUgZG9jdW1lbnQuIn0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9HbG9iYWxfYXR0cmlidXRlcy9pdGVtcmVmIn1dfSx7bmFtZToiaXRlbXNjb3BlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJgaXRlbXNjb3BlYCAodXN1YWxseSkgd29ya3MgYWxvbmcgd2l0aCBgW2l0ZW10eXBlXSgvZW4tVVMvZG9jcy9XZWIvSFRNTC9HbG9iYWxfYXR0cmlidXRlcyNhdHRyLWl0ZW10eXBlKWAgdG8gc3BlY2lmeSB0aGF0IHRoZSBIVE1MIGNvbnRhaW5lZCBpbiBhIGJsb2NrIGlzIGFib3V0IGEgcGFydGljdWxhciBpdGVtLiBgaXRlbXNjb3BlYCBjcmVhdGVzIHRoZSBJdGVtIGFuZCBkZWZpbmVzIHRoZSBzY29wZSBvZiB0aGUgYGl0ZW10eXBlYCBhc3NvY2lhdGVkIHdpdGggaXQuIGBpdGVtdHlwZWAgaXMgYSB2YWxpZCBVUkwgb2YgYSB2b2NhYnVsYXJ5IChzdWNoIGFzIFtzY2hlbWEub3JnXShodHRwczovL3NjaGVtYS5vcmcvKSkgdGhhdCBkZXNjcmliZXMgdGhlIGl0ZW0gYW5kIGl0cyBwcm9wZXJ0aWVzIGNvbnRleHQuIn0sdmFsdWVTZXQ6InYiLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvR2xvYmFsX2F0dHJpYnV0ZXMvaXRlbXNjb3BlIn1dfSx7bmFtZToiaXRlbXR5cGUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlNwZWNpZmllcyB0aGUgVVJMIG9mIHRoZSB2b2NhYnVsYXJ5IHRoYXQgd2lsbCBiZSB1c2VkIHRvIGRlZmluZSBgaXRlbXByb3BgcyAoaXRlbSBwcm9wZXJ0aWVzKSBpbiB0aGUgZGF0YSBzdHJ1Y3R1cmUuIGBbaXRlbXNjb3BlXSgvZW4tVVMvZG9jcy9XZWIvSFRNTC9HbG9iYWxfYXR0cmlidXRlcyNhdHRyLWl0ZW1zY29wZSlgIGlzIHVzZWQgdG8gc2V0IHRoZSBzY29wZSBvZiB3aGVyZSBpbiB0aGUgZGF0YSBzdHJ1Y3R1cmUgdGhlIHZvY2FidWxhcnkgc2V0IGJ5IGBpdGVtdHlwZWAgd2lsbCBiZSBhY3RpdmUuIn0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9HbG9iYWxfYXR0cmlidXRlcy9pdGVtdHlwZSJ9XX0se25hbWU6ImxhbmciLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkhlbHBzIGRlZmluZSB0aGUgbGFuZ3VhZ2Ugb2YgYW4gZWxlbWVudDogdGhlIGxhbmd1YWdlIHRoYXQgbm9uLWVkaXRhYmxlIGVsZW1lbnRzIGFyZSBpbiwgb3IgdGhlIGxhbmd1YWdlIHRoYXQgZWRpdGFibGUgZWxlbWVudHMgc2hvdWxkIGJlIHdyaXR0ZW4gaW4gYnkgdGhlIHVzZXIuIFRoZSBhdHRyaWJ1dGUgY29udGFpbnMgb25lIOKAnGxhbmd1YWdlIHRhZ+KAnSAobWFkZSBvZiBoeXBoZW4tc2VwYXJhdGVkIOKAnGxhbmd1YWdlIHN1YnRhZ3PigJ0pIGluIHRoZSBmb3JtYXQgZGVmaW5lZCBpbiBbX1RhZ3MgZm9yIElkZW50aWZ5aW5nIExhbmd1YWdlcyAoQkNQNDcpX10oaHR0cHM6Ly93d3cuaWV0Zi5vcmcvcmZjL2JjcC9iY3A0Ny50eHQpLiBbKip4bWw6bGFuZyoqXSgjYXR0ci14bWw6bGFuZykgaGFzIHByaW9yaXR5IG92ZXIgaXQuIn0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9HbG9iYWxfYXR0cmlidXRlcy9sYW5nIn1dfSx7bmFtZToicGFydCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTonQSBzcGFjZS1zZXBhcmF0ZWQgbGlzdCBvZiB0aGUgcGFydCBuYW1lcyBvZiB0aGUgZWxlbWVudC4gUGFydCBuYW1lcyBhbGxvd3MgQ1NTIHRvIHNlbGVjdCBhbmQgc3R5bGUgc3BlY2lmaWMgZWxlbWVudHMgaW4gYSBzaGFkb3cgdHJlZSB2aWEgdGhlIFtgOjpwYXJ0YF0oL2VuLVVTL2RvY3MvV2ViL0NTUy86OnBhcnQgIlRoZSA6OnBhcnQgQ1NTIHBzZXVkby1lbGVtZW50IHJlcHJlc2VudHMgYW55IGVsZW1lbnQgd2l0aGluIGEgc2hhZG93IHRyZWUgdGhhdCBoYXMgYSBtYXRjaGluZyBwYXJ0IGF0dHJpYnV0ZS4iKSBwc2V1ZG8tZWxlbWVudC4nfSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0dsb2JhbF9hdHRyaWJ1dGVzL3BhcnQifV19LHtuYW1lOiJyb2xlIix2YWx1ZVNldDoicm9sZXMifSx7bmFtZToic2xvdCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiQXNzaWducyBhIHNsb3QgaW4gYSBbc2hhZG93IERPTV0oL2VuLVVTL2RvY3MvV2ViL1dlYl9Db21wb25lbnRzL1NoYWRvd19ET00pIHNoYWRvdyB0cmVlIHRvIGFuIGVsZW1lbnQ6IEFuIGVsZW1lbnQgd2l0aCBhIGBzbG90YCBhdHRyaWJ1dGUgaXMgYXNzaWduZWQgdG8gdGhlIHNsb3QgY3JlYXRlZCBieSB0aGUgW2A8c2xvdD5gXSgvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L3Nsb3QgXCJUaGUgSFRNTCA8c2xvdD4gZWxlbWVudOKAlHBhcnQgb2YgdGhlIFdlYiBDb21wb25lbnRzIHRlY2hub2xvZ3kgc3VpdGXigJRpcyBhIHBsYWNlaG9sZGVyIGluc2lkZSBhIHdlYiBjb21wb25lbnQgdGhhdCB5b3UgY2FuIGZpbGwgd2l0aCB5b3VyIG93biBtYXJrdXAsIHdoaWNoIGxldHMgeW91IGNyZWF0ZSBzZXBhcmF0ZSBET00gdHJlZXMgYW5kIHByZXNlbnQgdGhlbSB0b2dldGhlci5cIikgZWxlbWVudCB3aG9zZSBgW25hbWVdKC9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvc2xvdCNhdHRyLW5hbWUpYCBhdHRyaWJ1dGUncyB2YWx1ZSBtYXRjaGVzIHRoYXQgYHNsb3RgIGF0dHJpYnV0ZSdzIHZhbHVlLiJ9LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0hUTUwvR2xvYmFsX2F0dHJpYnV0ZXMvc2xvdCJ9XX0se25hbWU6InNwZWxsY2hlY2siLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkFuIGVudW1lcmF0ZWQgYXR0cmlidXRlIGRlZmluZXMgd2hldGhlciB0aGUgZWxlbWVudCBtYXkgYmUgY2hlY2tlZCBmb3Igc3BlbGxpbmcgZXJyb3JzLiBJdCBtYXkgaGF2ZSB0aGUgZm9sbG93aW5nIHZhbHVlczpcblxuKiAgIGB0cnVlYCwgd2hpY2ggaW5kaWNhdGVzIHRoYXQgdGhlIGVsZW1lbnQgc2hvdWxkIGJlLCBpZiBwb3NzaWJsZSwgY2hlY2tlZCBmb3Igc3BlbGxpbmcgZXJyb3JzO1xuKiAgIGBmYWxzZWAsIHdoaWNoIGluZGljYXRlcyB0aGF0IHRoZSBlbGVtZW50IHNob3VsZCBub3QgYmUgY2hlY2tlZCBmb3Igc3BlbGxpbmcgZXJyb3JzLiJ9LHZhbHVlU2V0OiJiIixyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0dsb2JhbF9hdHRyaWJ1dGVzL3NwZWxsY2hlY2sifV19LHtuYW1lOiJzdHlsZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTonQ29udGFpbnMgW0NTU10oL2VuLVVTL2RvY3MvV2ViL0NTUykgc3R5bGluZyBkZWNsYXJhdGlvbnMgdG8gYmUgYXBwbGllZCB0byB0aGUgZWxlbWVudC4gTm90ZSB0aGF0IGl0IGlzIHJlY29tbWVuZGVkIGZvciBzdHlsZXMgdG8gYmUgZGVmaW5lZCBpbiBhIHNlcGFyYXRlIGZpbGUgb3IgZmlsZXMuIFRoaXMgYXR0cmlidXRlIGFuZCB0aGUgW2A8c3R5bGU+YF0oL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9zdHlsZSAiVGhlIEhUTUwgPHN0eWxlPiBlbGVtZW50IGNvbnRhaW5zIHN0eWxlIGluZm9ybWF0aW9uIGZvciBhIGRvY3VtZW50LCBvciBwYXJ0IG9mIGEgZG9jdW1lbnQuIikgZWxlbWVudCBoYXZlIG1haW5seSB0aGUgcHVycG9zZSBvZiBhbGxvd2luZyBmb3IgcXVpY2sgc3R5bGluZywgZm9yIGV4YW1wbGUgZm9yIHRlc3RpbmcgcHVycG9zZXMuJ30scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9HbG9iYWxfYXR0cmlidXRlcy9zdHlsZSJ9XX0se25hbWU6InRhYmluZGV4IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJBbiBpbnRlZ2VyIGF0dHJpYnV0ZSBpbmRpY2F0aW5nIGlmIHRoZSBlbGVtZW50IGNhbiB0YWtlIGlucHV0IGZvY3VzIChpcyBfZm9jdXNhYmxlXyksIGlmIGl0IHNob3VsZCBwYXJ0aWNpcGF0ZSB0byBzZXF1ZW50aWFsIGtleWJvYXJkIG5hdmlnYXRpb24sIGFuZCBpZiBzbywgYXQgd2hhdCBwb3NpdGlvbi4gSXQgY2FuIHRha2Ugc2V2ZXJhbCB2YWx1ZXM6XG5cbiogICBhIF9uZWdhdGl2ZSB2YWx1ZV8gbWVhbnMgdGhhdCB0aGUgZWxlbWVudCBzaG91bGQgYmUgZm9jdXNhYmxlLCBidXQgc2hvdWxkIG5vdCBiZSByZWFjaGFibGUgdmlhIHNlcXVlbnRpYWwga2V5Ym9hcmQgbmF2aWdhdGlvbjtcbiogICBgMGAgbWVhbnMgdGhhdCB0aGUgZWxlbWVudCBzaG91bGQgYmUgZm9jdXNhYmxlIGFuZCByZWFjaGFibGUgdmlhIHNlcXVlbnRpYWwga2V5Ym9hcmQgbmF2aWdhdGlvbiwgYnV0IGl0cyByZWxhdGl2ZSBvcmRlciBpcyBkZWZpbmVkIGJ5IHRoZSBwbGF0Zm9ybSBjb252ZW50aW9uO1xuKiAgIGEgX3Bvc2l0aXZlIHZhbHVlXyBtZWFucyB0aGF0IHRoZSBlbGVtZW50IHNob3VsZCBiZSBmb2N1c2FibGUgYW5kIHJlYWNoYWJsZSB2aWEgc2VxdWVudGlhbCBrZXlib2FyZCBuYXZpZ2F0aW9uOyB0aGUgb3JkZXIgaW4gd2hpY2ggdGhlIGVsZW1lbnRzIGFyZSBmb2N1c2VkIGlzIHRoZSBpbmNyZWFzaW5nIHZhbHVlIG9mIHRoZSBbKip0YWJpbmRleCoqXSgjYXR0ci10YWJpbmRleCkuIElmIHNldmVyYWwgZWxlbWVudHMgc2hhcmUgdGhlIHNhbWUgdGFiaW5kZXgsIHRoZWlyIHJlbGF0aXZlIG9yZGVyIGZvbGxvd3MgdGhlaXIgcmVsYXRpdmUgcG9zaXRpb25zIGluIHRoZSBkb2N1bWVudC4ifSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0dsb2JhbF9hdHRyaWJ1dGVzL3RhYmluZGV4In1dfSx7bmFtZToidGl0bGUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkNvbnRhaW5zIGEgdGV4dCByZXByZXNlbnRpbmcgYWR2aXNvcnkgaW5mb3JtYXRpb24gcmVsYXRlZCB0byB0aGUgZWxlbWVudCBpdCBiZWxvbmdzIHRvLiBTdWNoIGluZm9ybWF0aW9uIGNhbiB0eXBpY2FsbHksIGJ1dCBub3QgbmVjZXNzYXJpbHksIGJlIHByZXNlbnRlZCB0byB0aGUgdXNlciBhcyBhIHRvb2x0aXAuIn0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSFRNTC9HbG9iYWxfYXR0cmlidXRlcy90aXRsZSJ9XX0se25hbWU6InRyYW5zbGF0ZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiQW4gZW51bWVyYXRlZCBhdHRyaWJ1dGUgdGhhdCBpcyB1c2VkIHRvIHNwZWNpZnkgd2hldGhlciBhbiBlbGVtZW50J3MgYXR0cmlidXRlIHZhbHVlcyBhbmQgdGhlIHZhbHVlcyBvZiBpdHMgW2BUZXh0YF0oL2VuLVVTL2RvY3MvV2ViL0FQSS9UZXh0IFwiVGhlIFRleHQgaW50ZXJmYWNlIHJlcHJlc2VudHMgdGhlIHRleHR1YWwgY29udGVudCBvZiBFbGVtZW50IG9yIEF0dHIuIElmIGFuIGVsZW1lbnQgaGFzIG5vIG1hcmt1cCB3aXRoaW4gaXRzIGNvbnRlbnQsIGl0IGhhcyBhIHNpbmdsZSBjaGlsZCBpbXBsZW1lbnRpbmcgVGV4dCB0aGF0IGNvbnRhaW5zIHRoZSBlbGVtZW50J3MgdGV4dC4gSG93ZXZlciwgaWYgdGhlIGVsZW1lbnQgY29udGFpbnMgbWFya3VwLCBpdCBpcyBwYXJzZWQgaW50byBpbmZvcm1hdGlvbiBpdGVtcyBhbmQgVGV4dCBub2RlcyB0aGF0IGZvcm0gaXRzIGNoaWxkcmVuLlwiKSBub2RlIGNoaWxkcmVuIGFyZSB0byBiZSB0cmFuc2xhdGVkIHdoZW4gdGhlIHBhZ2UgaXMgbG9jYWxpemVkLCBvciB3aGV0aGVyIHRvIGxlYXZlIHRoZW0gdW5jaGFuZ2VkLiBJdCBjYW4gaGF2ZSB0aGUgZm9sbG93aW5nIHZhbHVlczpcblxuKiAgIGVtcHR5IHN0cmluZyBhbmQgYHllc2AsIHdoaWNoIGluZGljYXRlcyB0aGF0IHRoZSBlbGVtZW50IHdpbGwgYmUgdHJhbnNsYXRlZC5cbiogICBgbm9gLCB3aGljaCBpbmRpY2F0ZXMgdGhhdCB0aGUgZWxlbWVudCB3aWxsIG5vdCBiZSB0cmFuc2xhdGVkLiJ9LHZhbHVlU2V0OiJ5IixyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0dsb2JhbF9hdHRyaWJ1dGVzL3RyYW5zbGF0ZSJ9XX0se25hbWU6Im9uYWJvcnQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBsb2FkaW5nIG9mIGEgcmVzb3VyY2UgaGFzIGJlZW4gYWJvcnRlZC4ifX0se25hbWU6Im9uYmx1ciIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiQW4gZWxlbWVudCBoYXMgbG9zdCBmb2N1cyAoZG9lcyBub3QgYnViYmxlKS4ifX0se25hbWU6Im9uY2FucGxheSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHVzZXIgYWdlbnQgY2FuIHBsYXkgdGhlIG1lZGlhLCBidXQgZXN0aW1hdGVzIHRoYXQgbm90IGVub3VnaCBkYXRhIGhhcyBiZWVuIGxvYWRlZCB0byBwbGF5IHRoZSBtZWRpYSB1cCB0byBpdHMgZW5kIHdpdGhvdXQgaGF2aW5nIHRvIHN0b3AgZm9yIGZ1cnRoZXIgYnVmZmVyaW5nIG9mIGNvbnRlbnQuIn19LHtuYW1lOiJvbmNhbnBsYXl0aHJvdWdoIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgdXNlciBhZ2VudCBjYW4gcGxheSB0aGUgbWVkaWEgdXAgdG8gaXRzIGVuZCB3aXRob3V0IGhhdmluZyB0byBzdG9wIGZvciBmdXJ0aGVyIGJ1ZmZlcmluZyBvZiBjb250ZW50LiJ9fSx7bmFtZToib25jaGFuZ2UiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBjaGFuZ2UgZXZlbnQgaXMgZmlyZWQgZm9yIDxpbnB1dD4sIDxzZWxlY3Q+LCBhbmQgPHRleHRhcmVhPiBlbGVtZW50cyB3aGVuIGEgY2hhbmdlIHRvIHRoZSBlbGVtZW50J3MgdmFsdWUgaXMgY29tbWl0dGVkIGJ5IHRoZSB1c2VyLiJ9fSx7bmFtZToib25jbGljayIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiQSBwb2ludGluZyBkZXZpY2UgYnV0dG9uIGhhcyBiZWVuIHByZXNzZWQgYW5kIHJlbGVhc2VkIG9uIGFuIGVsZW1lbnQuIn19LHtuYW1lOiJvbmNvbnRleHRtZW51IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgcmlnaHQgYnV0dG9uIG9mIHRoZSBtb3VzZSBpcyBjbGlja2VkIChiZWZvcmUgdGhlIGNvbnRleHQgbWVudSBpcyBkaXNwbGF5ZWQpLiJ9fSx7bmFtZToib25kYmxjbGljayIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiQSBwb2ludGluZyBkZXZpY2UgYnV0dG9uIGlzIGNsaWNrZWQgdHdpY2Ugb24gYW4gZWxlbWVudC4ifX0se25hbWU6Im9uZHJhZyIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiQW4gZWxlbWVudCBvciB0ZXh0IHNlbGVjdGlvbiBpcyBiZWluZyBkcmFnZ2VkIChldmVyeSAzNTBtcykuIn19LHtuYW1lOiJvbmRyYWdlbmQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkEgZHJhZyBvcGVyYXRpb24gaXMgYmVpbmcgZW5kZWQgKGJ5IHJlbGVhc2luZyBhIG1vdXNlIGJ1dHRvbiBvciBoaXR0aW5nIHRoZSBlc2NhcGUga2V5KS4ifX0se25hbWU6Im9uZHJhZ2VudGVyIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJBIGRyYWdnZWQgZWxlbWVudCBvciB0ZXh0IHNlbGVjdGlvbiBlbnRlcnMgYSB2YWxpZCBkcm9wIHRhcmdldC4ifX0se25hbWU6Im9uZHJhZ2xlYXZlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJBIGRyYWdnZWQgZWxlbWVudCBvciB0ZXh0IHNlbGVjdGlvbiBsZWF2ZXMgYSB2YWxpZCBkcm9wIHRhcmdldC4ifX0se25hbWU6Im9uZHJhZ292ZXIiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkFuIGVsZW1lbnQgb3IgdGV4dCBzZWxlY3Rpb24gaXMgYmVpbmcgZHJhZ2dlZCBvdmVyIGEgdmFsaWQgZHJvcCB0YXJnZXQgKGV2ZXJ5IDM1MG1zKS4ifX0se25hbWU6Im9uZHJhZ3N0YXJ0IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgdXNlciBzdGFydHMgZHJhZ2dpbmcgYW4gZWxlbWVudCBvciB0ZXh0IHNlbGVjdGlvbi4ifX0se25hbWU6Im9uZHJvcCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiQW4gZWxlbWVudCBpcyBkcm9wcGVkIG9uIGEgdmFsaWQgZHJvcCB0YXJnZXQuIn19LHtuYW1lOiJvbmR1cmF0aW9uY2hhbmdlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgZHVyYXRpb24gYXR0cmlidXRlIGhhcyBiZWVuIHVwZGF0ZWQuIn19LHtuYW1lOiJvbmVtcHRpZWQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBtZWRpYSBoYXMgYmVjb21lIGVtcHR5OyBmb3IgZXhhbXBsZSwgdGhpcyBldmVudCBpcyBzZW50IGlmIHRoZSBtZWRpYSBoYXMgYWxyZWFkeSBiZWVuIGxvYWRlZCAob3IgcGFydGlhbGx5IGxvYWRlZCksIGFuZCB0aGUgbG9hZCgpIG1ldGhvZCBpcyBjYWxsZWQgdG8gcmVsb2FkIGl0LiJ9fSx7bmFtZToib25lbmRlZCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiUGxheWJhY2sgaGFzIHN0b3BwZWQgYmVjYXVzZSB0aGUgZW5kIG9mIHRoZSBtZWRpYSB3YXMgcmVhY2hlZC4ifX0se25hbWU6Im9uZXJyb3IiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkEgcmVzb3VyY2UgZmFpbGVkIHRvIGxvYWQuIn19LHtuYW1lOiJvbmZvY3VzIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJBbiBlbGVtZW50IGhhcyByZWNlaXZlZCBmb2N1cyAoZG9lcyBub3QgYnViYmxlKS4ifX0se25hbWU6Im9uZm9ybWNoYW5nZSJ9LHtuYW1lOiJvbmZvcm1pbnB1dCJ9LHtuYW1lOiJvbmlucHV0IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgdmFsdWUgb2YgYW4gZWxlbWVudCBjaGFuZ2VzIG9yIHRoZSBjb250ZW50IG9mIGFuIGVsZW1lbnQgd2l0aCB0aGUgYXR0cmlidXRlIGNvbnRlbnRlZGl0YWJsZSBpcyBtb2RpZmllZC4ifX0se25hbWU6Im9uaW52YWxpZCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiQSBzdWJtaXR0YWJsZSBlbGVtZW50IGhhcyBiZWVuIGNoZWNrZWQgYW5kIGRvZXNuJ3Qgc2F0aXNmeSBpdHMgY29uc3RyYWludHMuIn19LHtuYW1lOiJvbmtleWRvd24iLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkEga2V5IGlzIHByZXNzZWQgZG93bi4ifX0se25hbWU6Im9ua2V5cHJlc3MiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkEga2V5IGlzIHByZXNzZWQgZG93biBhbmQgdGhhdCBrZXkgbm9ybWFsbHkgcHJvZHVjZXMgYSBjaGFyYWN0ZXIgdmFsdWUgKHVzZSBpbnB1dCBpbnN0ZWFkKS4ifX0se25hbWU6Im9ua2V5dXAiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkEga2V5IGlzIHJlbGVhc2VkLiJ9fSx7bmFtZToib25sb2FkIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJBIHJlc291cmNlIGFuZCBpdHMgZGVwZW5kZW50IHJlc291cmNlcyBoYXZlIGZpbmlzaGVkIGxvYWRpbmcuIn19LHtuYW1lOiJvbmxvYWRlZGRhdGEiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBmaXJzdCBmcmFtZSBvZiB0aGUgbWVkaWEgaGFzIGZpbmlzaGVkIGxvYWRpbmcuIn19LHtuYW1lOiJvbmxvYWRlZG1ldGFkYXRhIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgbWV0YWRhdGEgaGFzIGJlZW4gbG9hZGVkLiJ9fSx7bmFtZToib25sb2Fkc3RhcnQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlByb2dyZXNzIGhhcyBiZWd1bi4ifX0se25hbWU6Im9ubW91c2Vkb3duIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJBIHBvaW50aW5nIGRldmljZSBidXR0b24gKHVzdWFsbHkgYSBtb3VzZSkgaXMgcHJlc3NlZCBvbiBhbiBlbGVtZW50LiJ9fSx7bmFtZToib25tb3VzZW1vdmUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkEgcG9pbnRpbmcgZGV2aWNlIGlzIG1vdmVkIG92ZXIgYW4gZWxlbWVudC4ifX0se25hbWU6Im9ubW91c2VvdXQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkEgcG9pbnRpbmcgZGV2aWNlIGlzIG1vdmVkIG9mZiB0aGUgZWxlbWVudCB0aGF0IGhhcyB0aGUgbGlzdGVuZXIgYXR0YWNoZWQgb3Igb2ZmIG9uZSBvZiBpdHMgY2hpbGRyZW4uIn19LHtuYW1lOiJvbm1vdXNlb3ZlciIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiQSBwb2ludGluZyBkZXZpY2UgaXMgbW92ZWQgb250byB0aGUgZWxlbWVudCB0aGF0IGhhcyB0aGUgbGlzdGVuZXIgYXR0YWNoZWQgb3Igb250byBvbmUgb2YgaXRzIGNoaWxkcmVuLiJ9fSx7bmFtZToib25tb3VzZXVwIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJBIHBvaW50aW5nIGRldmljZSBidXR0b24gaXMgcmVsZWFzZWQgb3ZlciBhbiBlbGVtZW50LiJ9fSx7bmFtZToib25tb3VzZXdoZWVsIn0se25hbWU6Im9ubW91c2VlbnRlciIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiQSBwb2ludGluZyBkZXZpY2UgaXMgbW92ZWQgb250byB0aGUgZWxlbWVudCB0aGF0IGhhcyB0aGUgbGlzdGVuZXIgYXR0YWNoZWQuIn19LHtuYW1lOiJvbm1vdXNlbGVhdmUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkEgcG9pbnRpbmcgZGV2aWNlIGlzIG1vdmVkIG9mZiB0aGUgZWxlbWVudCB0aGF0IGhhcyB0aGUgbGlzdGVuZXIgYXR0YWNoZWQuIn19LHtuYW1lOiJvbnBhdXNlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJQbGF5YmFjayBoYXMgYmVlbiBwYXVzZWQuIn19LHtuYW1lOiJvbnBsYXkiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlBsYXliYWNrIGhhcyBiZWd1bi4ifX0se25hbWU6Im9ucGxheWluZyIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiUGxheWJhY2sgaXMgcmVhZHkgdG8gc3RhcnQgYWZ0ZXIgaGF2aW5nIGJlZW4gcGF1c2VkIG9yIGRlbGF5ZWQgZHVlIHRvIGxhY2sgb2YgZGF0YS4ifX0se25hbWU6Im9ucHJvZ3Jlc3MiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkluIHByb2dyZXNzLiJ9fSx7bmFtZToib25yYXRlY2hhbmdlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgcGxheWJhY2sgcmF0ZSBoYXMgY2hhbmdlZC4ifX0se25hbWU6Im9ucmVzZXQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkEgZm9ybSBpcyByZXNldC4ifX0se25hbWU6Im9ucmVzaXplIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgZG9jdW1lbnQgdmlldyBoYXMgYmVlbiByZXNpemVkLiJ9fSx7bmFtZToib25yZWFkeXN0YXRlY2hhbmdlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgcmVhZHlTdGF0ZSBhdHRyaWJ1dGUgb2YgYSBkb2N1bWVudCBoYXMgY2hhbmdlZC4ifX0se25hbWU6Im9uc2Nyb2xsIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgZG9jdW1lbnQgdmlldyBvciBhbiBlbGVtZW50IGhhcyBiZWVuIHNjcm9sbGVkLiJ9fSx7bmFtZToib25zZWVrZWQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkEgc2VlayBvcGVyYXRpb24gY29tcGxldGVkLiJ9fSx7bmFtZToib25zZWVraW5nIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJBIHNlZWsgb3BlcmF0aW9uIGJlZ2FuLiJ9fSx7bmFtZToib25zZWxlY3QiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlNvbWUgdGV4dCBpcyBiZWluZyBzZWxlY3RlZC4ifX0se25hbWU6Im9uc2hvdyIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiQSBjb250ZXh0bWVudSBldmVudCB3YXMgZmlyZWQgb24vYnViYmxlZCB0byBhbiBlbGVtZW50IHRoYXQgaGFzIGEgY29udGV4dG1lbnUgYXR0cmlidXRlIn19LHtuYW1lOiJvbnN0YWxsZWQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSB1c2VyIGFnZW50IGlzIHRyeWluZyB0byBmZXRjaCBtZWRpYSBkYXRhLCBidXQgZGF0YSBpcyB1bmV4cGVjdGVkbHkgbm90IGZvcnRoY29taW5nLiJ9fSx7bmFtZToib25zdWJtaXQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkEgZm9ybSBpcyBzdWJtaXR0ZWQuIn19LHtuYW1lOiJvbnN1c3BlbmQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6Ik1lZGlhIGRhdGEgbG9hZGluZyBoYXMgYmVlbiBzdXNwZW5kZWQuIn19LHtuYW1lOiJvbnRpbWV1cGRhdGUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSB0aW1lIGluZGljYXRlZCBieSB0aGUgY3VycmVudFRpbWUgYXR0cmlidXRlIGhhcyBiZWVuIHVwZGF0ZWQuIn19LHtuYW1lOiJvbnZvbHVtZWNoYW5nZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHZvbHVtZSBoYXMgY2hhbmdlZC4ifX0se25hbWU6Im9ud2FpdGluZyIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiUGxheWJhY2sgaGFzIHN0b3BwZWQgYmVjYXVzZSBvZiBhIHRlbXBvcmFyeSBsYWNrIG9mIGRhdGEuIn19LHtuYW1lOiJvbnBvaW50ZXJjYW5jZWwiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBwb2ludGVyIGlzIHVubGlrZWx5IHRvIHByb2R1Y2UgYW55IG1vcmUgZXZlbnRzLiJ9fSx7bmFtZToib25wb2ludGVyZG93biIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHBvaW50ZXIgZW50ZXJzIHRoZSBhY3RpdmUgYnV0dG9ucyBzdGF0ZS4ifX0se25hbWU6Im9ucG9pbnRlcmVudGVyIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJQb2ludGluZyBkZXZpY2UgaXMgbW92ZWQgaW5zaWRlIHRoZSBoaXQtdGVzdGluZyBib3VuZGFyeS4ifX0se25hbWU6Im9ucG9pbnRlcmxlYXZlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJQb2ludGluZyBkZXZpY2UgaXMgbW92ZWQgb3V0IG9mIHRoZSBoaXQtdGVzdGluZyBib3VuZGFyeS4ifX0se25hbWU6Im9ucG9pbnRlcmxvY2tjaGFuZ2UiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBwb2ludGVyIHdhcyBsb2NrZWQgb3IgcmVsZWFzZWQuIn19LHtuYW1lOiJvbnBvaW50ZXJsb2NrZXJyb3IiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6Ikl0IHdhcyBpbXBvc3NpYmxlIHRvIGxvY2sgdGhlIHBvaW50ZXIgZm9yIHRlY2huaWNhbCByZWFzb25zIG9yIGJlY2F1c2UgdGhlIHBlcm1pc3Npb24gd2FzIGRlbmllZC4ifX0se25hbWU6Im9ucG9pbnRlcm1vdmUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBwb2ludGVyIGNoYW5nZWQgY29vcmRpbmF0ZXMuIn19LHtuYW1lOiJvbnBvaW50ZXJvdXQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlRoZSBwb2ludGluZyBkZXZpY2UgbW92ZWQgb3V0IG9mIGhpdC10ZXN0aW5nIGJvdW5kYXJ5IG9yIGxlYXZlcyBkZXRlY3RhYmxlIGhvdmVyIHJhbmdlLiJ9fSx7bmFtZToib25wb2ludGVyb3ZlciIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVGhlIHBvaW50aW5nIGRldmljZSBpcyBtb3ZlZCBpbnRvIHRoZSBoaXQtdGVzdGluZyBib3VuZGFyeS4ifX0se25hbWU6Im9ucG9pbnRlcnVwIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJUaGUgcG9pbnRlciBsZWF2ZXMgdGhlIGFjdGl2ZSBidXR0b25zIHN0YXRlLiJ9fSx7bmFtZToiYXJpYS1hY3RpdmVkZXNjZW5kYW50IixyZWZlcmVuY2VzOlt7bmFtZToiV0FJLUFSSUEgUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtYWN0aXZlZGVzY2VuZGFudCJ9XSxkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJJZGVudGlmaWVzIHRoZSBjdXJyZW50bHkgYWN0aXZlIGVsZW1lbnQgd2hlbiBET00gZm9jdXMgaXMgb24gYSBbYGNvbXBvc2l0ZWBdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2NvbXBvc2l0ZSkgd2lkZ2V0LCBbYHRleHRib3hgXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyN0ZXh0Ym94KSwgW2Bncm91cGBdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2dyb3VwKSwgb3IgW2BhcHBsaWNhdGlvbmBdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FwcGxpY2F0aW9uKS4ifX0se25hbWU6ImFyaWEtYXRvbWljIix2YWx1ZVNldDoiYiIscmVmZXJlbmNlczpbe25hbWU6IldBSS1BUklBIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLWF0b21pYyJ9XSxkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJJbmRpY2F0ZXMgd2hldGhlciBbYXNzaXN0aXZlIHRlY2hub2xvZ2llc10oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jZGZuLWFzc2lzdGl2ZS10ZWNobm9sb2d5KSB3aWxsIHByZXNlbnQgYWxsLCBvciBvbmx5IHBhcnRzIG9mLCB0aGUgY2hhbmdlZCByZWdpb24gYmFzZWQgb24gdGhlIGNoYW5nZSBub3RpZmljYXRpb25zIGRlZmluZWQgYnkgdGhlIFtgYXJpYS1yZWxldmFudGBdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtcmVsZXZhbnQpIGF0dHJpYnV0ZS4ifX0se25hbWU6ImFyaWEtYXV0b2NvbXBsZXRlIix2YWx1ZVNldDoiYXV0b2NvbXBsZXRlIixyZWZlcmVuY2VzOlt7bmFtZToiV0FJLUFSSUEgUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtYXV0b2NvbXBsZXRlIn1dLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkluZGljYXRlcyB3aGV0aGVyIGlucHV0dGluZyB0ZXh0IGNvdWxkIHRyaWdnZXIgZGlzcGxheSBvZiBvbmUgb3IgbW9yZSBwcmVkaWN0aW9ucyBvZiB0aGUgdXNlcidzIGludGVuZGVkIHZhbHVlIGZvciBhbiBpbnB1dCBhbmQgc3BlY2lmaWVzIGhvdyBwcmVkaWN0aW9ucyB3b3VsZCBiZSBwcmVzZW50ZWQgaWYgdGhleSBhcmUgbWFkZS4ifX0se25hbWU6ImFyaWEtYnVzeSIsdmFsdWVTZXQ6ImIiLHJlZmVyZW5jZXM6W3tuYW1lOiJXQUktQVJJQSBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1idXN5In1dLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkluZGljYXRlcyBhbiBlbGVtZW50IGlzIGJlaW5nIG1vZGlmaWVkIGFuZCB0aGF0IGFzc2lzdGl2ZSB0ZWNobm9sb2dpZXMgX01BWV8gd2FudCB0byB3YWl0IHVudGlsIHRoZSBtb2RpZmljYXRpb25zIGFyZSBjb21wbGV0ZSBiZWZvcmUgZXhwb3NpbmcgdGhlbSB0byB0aGUgdXNlci4ifX0se25hbWU6ImFyaWEtY2hlY2tlZCIsdmFsdWVTZXQ6InRyaXN0YXRlIixyZWZlcmVuY2VzOlt7bmFtZToiV0FJLUFSSUEgUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtY2hlY2tlZCJ9XSxkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOidJbmRpY2F0ZXMgdGhlIGN1cnJlbnQgImNoZWNrZWQiIFtzdGF0ZV0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jZGZuLXN0YXRlKSBvZiBjaGVja2JveGVzLCByYWRpbyBidXR0b25zLCBhbmQgb3RoZXIgW3dpZGdldHNdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2Rmbi13aWRnZXQpLiBTZWUgcmVsYXRlZCBbYGFyaWEtcHJlc3NlZGBdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtcHJlc3NlZCkgYW5kIFtgYXJpYS1zZWxlY3RlZGBdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtc2VsZWN0ZWQpLid9fSx7bmFtZToiYXJpYS1jb2xjb3VudCIscmVmZXJlbmNlczpbe25hbWU6IldBSS1BUklBIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLWNvbGNvdW50In1dLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkRlZmluZXMgdGhlIHRvdGFsIG51bWJlciBvZiBjb2x1bW5zIGluIGEgW2B0YWJsZWBdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI3RhYmxlKSwgW2BncmlkYF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jZ3JpZCksIG9yIFtgdHJlZWdyaWRgXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyN0cmVlZ3JpZCkuIFNlZSByZWxhdGVkIFtgYXJpYS1jb2xpbmRleGBdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtY29saW5kZXgpLiJ9fSx7bmFtZToiYXJpYS1jb2xpbmRleCIscmVmZXJlbmNlczpbe25hbWU6IldBSS1BUklBIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLWNvbGluZGV4In1dLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkRlZmluZXMgYW4gW2VsZW1lbnQnc10oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jZGZuLWVsZW1lbnQpIGNvbHVtbiBpbmRleCBvciBwb3NpdGlvbiB3aXRoIHJlc3BlY3QgdG8gdGhlIHRvdGFsIG51bWJlciBvZiBjb2x1bW5zIHdpdGhpbiBhIFtgdGFibGVgXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyN0YWJsZSksIFtgZ3JpZGBdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2dyaWQpLCBvciBbYHRyZWVncmlkYF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jdHJlZWdyaWQpLiBTZWUgcmVsYXRlZCBbYGFyaWEtY29sY291bnRgXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLWNvbGNvdW50KSBhbmQgW2BhcmlhLWNvbHNwYW5gXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLWNvbHNwYW4pLiJ9fSx7bmFtZToiYXJpYS1jb2xzcGFuIixyZWZlcmVuY2VzOlt7bmFtZToiV0FJLUFSSUEgUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtY29sc3BhbiJ9XSxkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJEZWZpbmVzIHRoZSBudW1iZXIgb2YgY29sdW1ucyBzcGFubmVkIGJ5IGEgY2VsbCBvciBncmlkY2VsbCB3aXRoaW4gYSBbYHRhYmxlYF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jdGFibGUpLCBbYGdyaWRgXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNncmlkKSwgb3IgW2B0cmVlZ3JpZGBdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI3RyZWVncmlkKS4gU2VlIHJlbGF0ZWQgW2BhcmlhLWNvbGluZGV4YF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1jb2xpbmRleCkgYW5kIFtgYXJpYS1yb3dzcGFuYF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1yb3dzcGFuKS4ifX0se25hbWU6ImFyaWEtY29udHJvbHMiLHJlZmVyZW5jZXM6W3tuYW1lOiJXQUktQVJJQSBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1jb250cm9scyJ9XSxkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJJZGVudGlmaWVzIHRoZSBbZWxlbWVudF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jZGZuLWVsZW1lbnQpIChvciBlbGVtZW50cykgd2hvc2UgY29udGVudHMgb3IgcHJlc2VuY2UgYXJlIGNvbnRyb2xsZWQgYnkgdGhlIGN1cnJlbnQgZWxlbWVudC4gU2VlIHJlbGF0ZWQgW2BhcmlhLW93bnNgXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLW93bnMpLiJ9fSx7bmFtZToiYXJpYS1jdXJyZW50Iix2YWx1ZVNldDoiY3VycmVudCIscmVmZXJlbmNlczpbe25hbWU6IldBSS1BUklBIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLWN1cnJlbnQifV0sZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiSW5kaWNhdGVzIHRoZSBbZWxlbWVudF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jZGZuLWVsZW1lbnQpIHRoYXQgcmVwcmVzZW50cyB0aGUgY3VycmVudCBpdGVtIHdpdGhpbiBhIGNvbnRhaW5lciBvciBzZXQgb2YgcmVsYXRlZCBlbGVtZW50cy4ifX0se25hbWU6ImFyaWEtZGVzY3JpYmVkYnkiLHJlZmVyZW5jZXM6W3tuYW1lOiJXQUktQVJJQSBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1kZXNjcmliZWRieSJ9XSxkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJJZGVudGlmaWVzIHRoZSBbZWxlbWVudF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jZGZuLWVsZW1lbnQpIChvciBlbGVtZW50cykgdGhhdCBkZXNjcmliZXMgdGhlIFtvYmplY3RdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2Rmbi1vYmplY3QpLiBTZWUgcmVsYXRlZCBbYGFyaWEtbGFiZWxsZWRieWBdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtbGFiZWxsZWRieSkuIn19LHtuYW1lOiJhcmlhLWRpc2FibGVkIix2YWx1ZVNldDoiYiIscmVmZXJlbmNlczpbe25hbWU6IldBSS1BUklBIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLWRpc2FibGVkIn1dLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkluZGljYXRlcyB0aGF0IHRoZSBbZWxlbWVudF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jZGZuLWVsZW1lbnQpIGlzIFtwZXJjZWl2YWJsZV0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jZGZuLXBlcmNlaXZhYmxlKSBidXQgZGlzYWJsZWQsIHNvIGl0IGlzIG5vdCBlZGl0YWJsZSBvciBvdGhlcndpc2UgW29wZXJhYmxlXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNkZm4tb3BlcmFibGUpLiBTZWUgcmVsYXRlZCBbYGFyaWEtaGlkZGVuYF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1oaWRkZW4pIGFuZCBbYGFyaWEtcmVhZG9ubHlgXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLXJlYWRvbmx5KS4ifX0se25hbWU6ImFyaWEtZHJvcGVmZmVjdCIsdmFsdWVTZXQ6ImRyb3BlZmZlY3QiLHJlZmVyZW5jZXM6W3tuYW1lOiJXQUktQVJJQSBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1kcm9wZWZmZWN0In1dLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IlxcW0RlcHJlY2F0ZWQgaW4gQVJJQSAxLjFcXF0gSW5kaWNhdGVzIHdoYXQgZnVuY3Rpb25zIGNhbiBiZSBwZXJmb3JtZWQgd2hlbiBhIGRyYWdnZWQgb2JqZWN0IGlzIHJlbGVhc2VkIG9uIHRoZSBkcm9wIHRhcmdldC4ifX0se25hbWU6ImFyaWEtZXJyb3JtZXNzYWdlIixyZWZlcmVuY2VzOlt7bmFtZToiV0FJLUFSSUEgUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtZXJyb3JtZXNzYWdlIn1dLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IklkZW50aWZpZXMgdGhlIFtlbGVtZW50XShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNkZm4tZWxlbWVudCkgdGhhdCBwcm92aWRlcyBhbiBlcnJvciBtZXNzYWdlIGZvciB0aGUgW29iamVjdF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jZGZuLW9iamVjdCkuIFNlZSByZWxhdGVkIFtgYXJpYS1pbnZhbGlkYF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1pbnZhbGlkKSBhbmQgW2BhcmlhLWRlc2NyaWJlZGJ5YF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1kZXNjcmliZWRieSkuIn19LHtuYW1lOiJhcmlhLWV4cGFuZGVkIix2YWx1ZVNldDoidSIscmVmZXJlbmNlczpbe25hbWU6IldBSS1BUklBIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLWV4cGFuZGVkIn1dLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkluZGljYXRlcyB3aGV0aGVyIHRoZSBlbGVtZW50LCBvciBhbm90aGVyIGdyb3VwaW5nIGVsZW1lbnQgaXQgY29udHJvbHMsIGlzIGN1cnJlbnRseSBleHBhbmRlZCBvciBjb2xsYXBzZWQuIn19LHtuYW1lOiJhcmlhLWZsb3d0byIscmVmZXJlbmNlczpbe25hbWU6IldBSS1BUklBIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLWZsb3d0byJ9XSxkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJJZGVudGlmaWVzIHRoZSBuZXh0IFtlbGVtZW50XShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNkZm4tZWxlbWVudCkgKG9yIGVsZW1lbnRzKSBpbiBhbiBhbHRlcm5hdGUgcmVhZGluZyBvcmRlciBvZiBjb250ZW50IHdoaWNoLCBhdCB0aGUgdXNlcidzIGRpc2NyZXRpb24sIGFsbG93cyBhc3Npc3RpdmUgdGVjaG5vbG9neSB0byBvdmVycmlkZSB0aGUgZ2VuZXJhbCBkZWZhdWx0IG9mIHJlYWRpbmcgaW4gZG9jdW1lbnQgc291cmNlIG9yZGVyLiJ9fSx7bmFtZToiYXJpYS1ncmFiYmVkIix2YWx1ZVNldDoidSIscmVmZXJlbmNlczpbe25hbWU6IldBSS1BUklBIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLWdyYWJiZWQifV0sZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZTonXFxbRGVwcmVjYXRlZCBpbiBBUklBIDEuMVxcXSBJbmRpY2F0ZXMgYW4gZWxlbWVudFwncyAiZ3JhYmJlZCIgW3N0YXRlXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNkZm4tc3RhdGUpIGluIGEgZHJhZy1hbmQtZHJvcCBvcGVyYXRpb24uJ319LHtuYW1lOiJhcmlhLWhhc3BvcHVwIix2YWx1ZVNldDoiaGFzcG9wdXAiLHJlZmVyZW5jZXM6W3tuYW1lOiJXQUktQVJJQSBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1oYXNwb3B1cCJ9XSxkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJJbmRpY2F0ZXMgdGhlIGF2YWlsYWJpbGl0eSBhbmQgdHlwZSBvZiBpbnRlcmFjdGl2ZSBwb3B1cCBlbGVtZW50LCBzdWNoIGFzIG1lbnUgb3IgZGlhbG9nLCB0aGF0IGNhbiBiZSB0cmlnZ2VyZWQgYnkgYW4gW2VsZW1lbnRdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2Rmbi1lbGVtZW50KS4ifX0se25hbWU6ImFyaWEtaGlkZGVuIix2YWx1ZVNldDoiYiIscmVmZXJlbmNlczpbe25hbWU6IldBSS1BUklBIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLWhpZGRlbiJ9XSxkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJJbmRpY2F0ZXMgd2hldGhlciB0aGUgW2VsZW1lbnRdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2Rmbi1lbGVtZW50KSBpcyBleHBvc2VkIHRvIGFuIGFjY2Vzc2liaWxpdHkgQVBJLiBTZWUgcmVsYXRlZCBbYGFyaWEtZGlzYWJsZWRgXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLWRpc2FibGVkKS4ifX0se25hbWU6ImFyaWEtaW52YWxpZCIsdmFsdWVTZXQ6ImludmFsaWQiLHJlZmVyZW5jZXM6W3tuYW1lOiJXQUktQVJJQSBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1pbnZhbGlkIn1dLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkluZGljYXRlcyB0aGUgZW50ZXJlZCB2YWx1ZSBkb2VzIG5vdCBjb25mb3JtIHRvIHRoZSBmb3JtYXQgZXhwZWN0ZWQgYnkgdGhlIGFwcGxpY2F0aW9uLiBTZWUgcmVsYXRlZCBbYGFyaWEtZXJyb3JtZXNzYWdlYF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1lcnJvcm1lc3NhZ2UpLiJ9fSx7bmFtZToiYXJpYS1sYWJlbCIscmVmZXJlbmNlczpbe25hbWU6IldBSS1BUklBIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLWxhYmVsIn1dLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkRlZmluZXMgYSBzdHJpbmcgdmFsdWUgdGhhdCBsYWJlbHMgdGhlIGN1cnJlbnQgZWxlbWVudC4gU2VlIHJlbGF0ZWQgW2BhcmlhLWxhYmVsbGVkYnlgXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLWxhYmVsbGVkYnkpLiJ9fSx7bmFtZToiYXJpYS1sYWJlbGxlZGJ5IixyZWZlcmVuY2VzOlt7bmFtZToiV0FJLUFSSUEgUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtbGFiZWxsZWRieSJ9XSxkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJJZGVudGlmaWVzIHRoZSBbZWxlbWVudF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jZGZuLWVsZW1lbnQpIChvciBlbGVtZW50cykgdGhhdCBsYWJlbHMgdGhlIGN1cnJlbnQgZWxlbWVudC4gU2VlIHJlbGF0ZWQgW2BhcmlhLWRlc2NyaWJlZGJ5YF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1kZXNjcmliZWRieSkuIn19LHtuYW1lOiJhcmlhLWxldmVsIixyZWZlcmVuY2VzOlt7bmFtZToiV0FJLUFSSUEgUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtbGV2ZWwifV0sZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiRGVmaW5lcyB0aGUgaGllcmFyY2hpY2FsIGxldmVsIG9mIGFuIFtlbGVtZW50XShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNkZm4tZWxlbWVudCkgd2l0aGluIGEgc3RydWN0dXJlLiJ9fSx7bmFtZToiYXJpYS1saXZlIix2YWx1ZVNldDoibGl2ZSIscmVmZXJlbmNlczpbe25hbWU6IldBSS1BUklBIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLWxpdmUifV0sZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiSW5kaWNhdGVzIHRoYXQgYW4gW2VsZW1lbnRdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2Rmbi1lbGVtZW50KSB3aWxsIGJlIHVwZGF0ZWQsIGFuZCBkZXNjcmliZXMgdGhlIHR5cGVzIG9mIHVwZGF0ZXMgdGhlIFt1c2VyIGFnZW50c10oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jZGZuLXVzZXItYWdlbnQpLCBbYXNzaXN0aXZlIHRlY2hub2xvZ2llc10oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jZGZuLWFzc2lzdGl2ZS10ZWNobm9sb2d5KSwgYW5kIHVzZXIgY2FuIGV4cGVjdCBmcm9tIHRoZSBbbGl2ZSByZWdpb25dKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2Rmbi1saXZlLXJlZ2lvbikuIn19LHtuYW1lOiJhcmlhLW1vZGFsIix2YWx1ZVNldDoiYiIscmVmZXJlbmNlczpbe25hbWU6IldBSS1BUklBIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLW1vZGFsIn1dLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkluZGljYXRlcyB3aGV0aGVyIGFuIFtlbGVtZW50XShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNkZm4tZWxlbWVudCkgaXMgbW9kYWwgd2hlbiBkaXNwbGF5ZWQuIn19LHtuYW1lOiJhcmlhLW11bHRpbGluZSIsdmFsdWVTZXQ6ImIiLHJlZmVyZW5jZXM6W3tuYW1lOiJXQUktQVJJQSBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1tdWx0aWxpbmUifV0sZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiSW5kaWNhdGVzIHdoZXRoZXIgYSB0ZXh0IGJveCBhY2NlcHRzIG11bHRpcGxlIGxpbmVzIG9mIGlucHV0IG9yIG9ubHkgYSBzaW5nbGUgbGluZS4ifX0se25hbWU6ImFyaWEtbXVsdGlzZWxlY3RhYmxlIix2YWx1ZVNldDoiYiIscmVmZXJlbmNlczpbe25hbWU6IldBSS1BUklBIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLW11bHRpc2VsZWN0YWJsZSJ9XSxkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJJbmRpY2F0ZXMgdGhhdCB0aGUgdXNlciBtYXkgc2VsZWN0IG1vcmUgdGhhbiBvbmUgaXRlbSBmcm9tIHRoZSBjdXJyZW50IHNlbGVjdGFibGUgZGVzY2VuZGFudHMuIn19LHtuYW1lOiJhcmlhLW9yaWVudGF0aW9uIix2YWx1ZVNldDoib3JpZW50YXRpb24iLHJlZmVyZW5jZXM6W3tuYW1lOiJXQUktQVJJQSBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1vcmllbnRhdGlvbiJ9XSxkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJJbmRpY2F0ZXMgd2hldGhlciB0aGUgZWxlbWVudCdzIG9yaWVudGF0aW9uIGlzIGhvcml6b250YWwsIHZlcnRpY2FsLCBvciB1bmtub3duL2FtYmlndW91cy4ifX0se25hbWU6ImFyaWEtb3ducyIscmVmZXJlbmNlczpbe25hbWU6IldBSS1BUklBIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLW93bnMifV0sZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiSWRlbnRpZmllcyBhbiBbZWxlbWVudF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jZGZuLWVsZW1lbnQpIChvciBlbGVtZW50cykgaW4gb3JkZXIgdG8gZGVmaW5lIGEgdmlzdWFsLCBmdW5jdGlvbmFsLCBvciBjb250ZXh0dWFsIHBhcmVudC9jaGlsZCBbcmVsYXRpb25zaGlwXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNkZm4tcmVsYXRpb25zaGlwKSBiZXR3ZWVuIERPTSBlbGVtZW50cyB3aGVyZSB0aGUgRE9NIGhpZXJhcmNoeSBjYW5ub3QgYmUgdXNlZCB0byByZXByZXNlbnQgdGhlIHJlbGF0aW9uc2hpcC4gU2VlIHJlbGF0ZWQgW2BhcmlhLWNvbnRyb2xzYF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1jb250cm9scykuIn19LHtuYW1lOiJhcmlhLXBsYWNlaG9sZGVyIixyZWZlcmVuY2VzOlt7bmFtZToiV0FJLUFSSUEgUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtcGxhY2Vob2xkZXIifV0sZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiRGVmaW5lcyBhIHNob3J0IGhpbnQgKGEgd29yZCBvciBzaG9ydCBwaHJhc2UpIGludGVuZGVkIHRvIGFpZCB0aGUgdXNlciB3aXRoIGRhdGEgZW50cnkgd2hlbiB0aGUgY29udHJvbCBoYXMgbm8gdmFsdWUuIEEgaGludCBjb3VsZCBiZSBhIHNhbXBsZSB2YWx1ZSBvciBhIGJyaWVmIGRlc2NyaXB0aW9uIG9mIHRoZSBleHBlY3RlZCBmb3JtYXQuIn19LHtuYW1lOiJhcmlhLXBvc2luc2V0IixyZWZlcmVuY2VzOlt7bmFtZToiV0FJLUFSSUEgUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtcG9zaW5zZXQifV0sZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiRGVmaW5lcyBhbiBbZWxlbWVudF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jZGZuLWVsZW1lbnQpJ3MgbnVtYmVyIG9yIHBvc2l0aW9uIGluIHRoZSBjdXJyZW50IHNldCBvZiBsaXN0aXRlbXMgb3IgdHJlZWl0ZW1zLiBOb3QgcmVxdWlyZWQgaWYgYWxsIGVsZW1lbnRzIGluIHRoZSBzZXQgYXJlIHByZXNlbnQgaW4gdGhlIERPTS4gU2VlIHJlbGF0ZWQgW2BhcmlhLXNldHNpemVgXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLXNldHNpemUpLiJ9fSx7bmFtZToiYXJpYS1wcmVzc2VkIix2YWx1ZVNldDoidHJpc3RhdGUiLHJlZmVyZW5jZXM6W3tuYW1lOiJXQUktQVJJQSBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1wcmVzc2VkIn1dLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6J0luZGljYXRlcyB0aGUgY3VycmVudCAicHJlc3NlZCIgW3N0YXRlXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNkZm4tc3RhdGUpIG9mIHRvZ2dsZSBidXR0b25zLiBTZWUgcmVsYXRlZCBbYGFyaWEtY2hlY2tlZGBdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtY2hlY2tlZCkgYW5kIFtgYXJpYS1zZWxlY3RlZGBdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtc2VsZWN0ZWQpLid9fSx7bmFtZToiYXJpYS1yZWFkb25seSIsdmFsdWVTZXQ6ImIiLHJlZmVyZW5jZXM6W3tuYW1lOiJXQUktQVJJQSBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1yZWFkb25seSJ9XSxkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJJbmRpY2F0ZXMgdGhhdCB0aGUgW2VsZW1lbnRdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2Rmbi1lbGVtZW50KSBpcyBub3QgZWRpdGFibGUsIGJ1dCBpcyBvdGhlcndpc2UgW29wZXJhYmxlXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNkZm4tb3BlcmFibGUpLiBTZWUgcmVsYXRlZCBbYGFyaWEtZGlzYWJsZWRgXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLWRpc2FibGVkKS4ifX0se25hbWU6ImFyaWEtcmVsZXZhbnQiLHZhbHVlU2V0OiJyZWxldmFudCIscmVmZXJlbmNlczpbe25hbWU6IldBSS1BUklBIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLXJlbGV2YW50In1dLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkluZGljYXRlcyB3aGF0IG5vdGlmaWNhdGlvbnMgdGhlIHVzZXIgYWdlbnQgd2lsbCB0cmlnZ2VyIHdoZW4gdGhlIGFjY2Vzc2liaWxpdHkgdHJlZSB3aXRoaW4gYSBsaXZlIHJlZ2lvbiBpcyBtb2RpZmllZC4gU2VlIHJlbGF0ZWQgW2BhcmlhLWF0b21pY2BdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtYXRvbWljKS4ifX0se25hbWU6ImFyaWEtcmVxdWlyZWQiLHZhbHVlU2V0OiJiIixyZWZlcmVuY2VzOlt7bmFtZToiV0FJLUFSSUEgUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtcmVxdWlyZWQifV0sZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiSW5kaWNhdGVzIHRoYXQgdXNlciBpbnB1dCBpcyByZXF1aXJlZCBvbiB0aGUgW2VsZW1lbnRdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2Rmbi1lbGVtZW50KSBiZWZvcmUgYSBmb3JtIG1heSBiZSBzdWJtaXR0ZWQuIn19LHtuYW1lOiJhcmlhLXJvbGVkZXNjcmlwdGlvbiIscmVmZXJlbmNlczpbe25hbWU6IldBSS1BUklBIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLXJvbGVkZXNjcmlwdGlvbiJ9XSxkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJEZWZpbmVzIGEgaHVtYW4tcmVhZGFibGUsIGF1dGhvci1sb2NhbGl6ZWQgZGVzY3JpcHRpb24gZm9yIHRoZSBbcm9sZV0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jZGZuLXJvbGUpIG9mIGFuIFtlbGVtZW50XShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNkZm4tZWxlbWVudCkuIn19LHtuYW1lOiJhcmlhLXJvd2NvdW50IixyZWZlcmVuY2VzOlt7bmFtZToiV0FJLUFSSUEgUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtcm93Y291bnQifV0sZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiRGVmaW5lcyB0aGUgdG90YWwgbnVtYmVyIG9mIHJvd3MgaW4gYSBbYHRhYmxlYF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jdGFibGUpLCBbYGdyaWRgXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNncmlkKSwgb3IgW2B0cmVlZ3JpZGBdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI3RyZWVncmlkKS4gU2VlIHJlbGF0ZWQgW2BhcmlhLXJvd2luZGV4YF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1yb3dpbmRleCkuIn19LHtuYW1lOiJhcmlhLXJvd2luZGV4IixyZWZlcmVuY2VzOlt7bmFtZToiV0FJLUFSSUEgUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtcm93aW5kZXgifV0sZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiRGVmaW5lcyBhbiBbZWxlbWVudCdzXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNkZm4tZWxlbWVudCkgcm93IGluZGV4IG9yIHBvc2l0aW9uIHdpdGggcmVzcGVjdCB0byB0aGUgdG90YWwgbnVtYmVyIG9mIHJvd3Mgd2l0aGluIGEgW2B0YWJsZWBdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI3RhYmxlKSwgW2BncmlkYF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jZ3JpZCksIG9yIFtgdHJlZWdyaWRgXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyN0cmVlZ3JpZCkuIFNlZSByZWxhdGVkIFtgYXJpYS1yb3djb3VudGBdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtcm93Y291bnQpIGFuZCBbYGFyaWEtcm93c3BhbmBdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtcm93c3BhbikuIn19LHtuYW1lOiJhcmlhLXJvd3NwYW4iLHJlZmVyZW5jZXM6W3tuYW1lOiJXQUktQVJJQSBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1yb3dzcGFuIn1dLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkRlZmluZXMgdGhlIG51bWJlciBvZiByb3dzIHNwYW5uZWQgYnkgYSBjZWxsIG9yIGdyaWRjZWxsIHdpdGhpbiBhIFtgdGFibGVgXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyN0YWJsZSksIFtgZ3JpZGBdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2dyaWQpLCBvciBbYHRyZWVncmlkYF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jdHJlZWdyaWQpLiBTZWUgcmVsYXRlZCBbYGFyaWEtcm93aW5kZXhgXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLXJvd2luZGV4KSBhbmQgW2BhcmlhLWNvbHNwYW5gXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLWNvbHNwYW4pLiJ9fSx7bmFtZToiYXJpYS1zZWxlY3RlZCIsdmFsdWVTZXQ6InUiLHJlZmVyZW5jZXM6W3tuYW1lOiJXQUktQVJJQSBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1zZWxlY3RlZCJ9XSxkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOidJbmRpY2F0ZXMgdGhlIGN1cnJlbnQgInNlbGVjdGVkIiBbc3RhdGVdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2Rmbi1zdGF0ZSkgb2YgdmFyaW91cyBbd2lkZ2V0c10oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jZGZuLXdpZGdldCkuIFNlZSByZWxhdGVkIFtgYXJpYS1jaGVja2VkYF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1jaGVja2VkKSBhbmQgW2BhcmlhLXByZXNzZWRgXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLXByZXNzZWQpLid9fSx7bmFtZToiYXJpYS1zZXRzaXplIixyZWZlcmVuY2VzOlt7bmFtZToiV0FJLUFSSUEgUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtc2V0c2l6ZSJ9XSxkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJEZWZpbmVzIHRoZSBudW1iZXIgb2YgaXRlbXMgaW4gdGhlIGN1cnJlbnQgc2V0IG9mIGxpc3RpdGVtcyBvciB0cmVlaXRlbXMuIE5vdCByZXF1aXJlZCBpZiBhbGwgZWxlbWVudHMgaW4gdGhlIHNldCBhcmUgcHJlc2VudCBpbiB0aGUgRE9NLiBTZWUgcmVsYXRlZCBbYGFyaWEtcG9zaW5zZXRgXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLXBvc2luc2V0KS4ifX0se25hbWU6ImFyaWEtc29ydCIsdmFsdWVTZXQ6InNvcnQiLHJlZmVyZW5jZXM6W3tuYW1lOiJXQUktQVJJQSBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1zb3J0In1dLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkluZGljYXRlcyBpZiBpdGVtcyBpbiBhIHRhYmxlIG9yIGdyaWQgYXJlIHNvcnRlZCBpbiBhc2NlbmRpbmcgb3IgZGVzY2VuZGluZyBvcmRlci4ifX0se25hbWU6ImFyaWEtdmFsdWVtYXgiLHJlZmVyZW5jZXM6W3tuYW1lOiJXQUktQVJJQSBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS12YWx1ZW1heCJ9XSxkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJEZWZpbmVzIHRoZSBtYXhpbXVtIGFsbG93ZWQgdmFsdWUgZm9yIGEgcmFuZ2UgW3dpZGdldF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jZGZuLXdpZGdldCkuIn19LHtuYW1lOiJhcmlhLXZhbHVlbWluIixyZWZlcmVuY2VzOlt7bmFtZToiV0FJLUFSSUEgUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtdmFsdWVtaW4ifV0sZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiRGVmaW5lcyB0aGUgbWluaW11bSBhbGxvd2VkIHZhbHVlIGZvciBhIHJhbmdlIFt3aWRnZXRdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2Rmbi13aWRnZXQpLiJ9fSx7bmFtZToiYXJpYS12YWx1ZW5vdyIscmVmZXJlbmNlczpbe25hbWU6IldBSS1BUklBIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLXZhbHVlbm93In1dLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkRlZmluZXMgdGhlIGN1cnJlbnQgdmFsdWUgZm9yIGEgcmFuZ2UgW3dpZGdldF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jZGZuLXdpZGdldCkuIFNlZSByZWxhdGVkIFtgYXJpYS12YWx1ZXRleHRgXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLXZhbHVldGV4dCkuIn19LHtuYW1lOiJhcmlhLXZhbHVldGV4dCIscmVmZXJlbmNlczpbe25hbWU6IldBSS1BUklBIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLXZhbHVldGV4dCJ9XSxkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJEZWZpbmVzIHRoZSBodW1hbiByZWFkYWJsZSB0ZXh0IGFsdGVybmF0aXZlIG9mIFtgYXJpYS12YWx1ZW5vd2BdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtdmFsdWVub3cpIGZvciBhIHJhbmdlIFt3aWRnZXRdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2Rmbi13aWRnZXQpLiJ9fSx7bmFtZToiYXJpYS1kZXRhaWxzIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJJZGVudGlmaWVzIHRoZSBbZWxlbWVudF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jZGZuLWVsZW1lbnQpIHRoYXQgcHJvdmlkZXMgYSBkZXRhaWxlZCwgZXh0ZW5kZWQgZGVzY3JpcHRpb24gZm9yIHRoZSBbb2JqZWN0XShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNkZm4tb2JqZWN0KS4gU2VlIHJlbGF0ZWQgW2BhcmlhLWRlc2NyaWJlZGJ5YF0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1kZXNjcmliZWRieSkuIn19LHtuYW1lOiJhcmlhLWtleXNob3J0Y3V0cyIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiSW5kaWNhdGVzIGtleWJvYXJkIHNob3J0Y3V0cyB0aGF0IGFuIGF1dGhvciBoYXMgaW1wbGVtZW50ZWQgdG8gYWN0aXZhdGUgb3IgZ2l2ZSBmb2N1cyB0byBhbiBlbGVtZW50LiJ9fV0sdmFsdWVTZXRzOlt7bmFtZToiYiIsdmFsdWVzOlt7bmFtZToidHJ1ZSJ9LHtuYW1lOiJmYWxzZSJ9XX0se25hbWU6InUiLHZhbHVlczpbe25hbWU6InRydWUifSx7bmFtZToiZmFsc2UifSx7bmFtZToidW5kZWZpbmVkIn1dfSx7bmFtZToibyIsdmFsdWVzOlt7bmFtZToib24ifSx7bmFtZToib2ZmIn1dfSx7bmFtZToieSIsdmFsdWVzOlt7bmFtZToieWVzIn0se25hbWU6Im5vIn1dfSx7bmFtZToidyIsdmFsdWVzOlt7bmFtZToic29mdCJ9LHtuYW1lOiJoYXJkIn1dfSx7bmFtZToiZCIsdmFsdWVzOlt7bmFtZToibHRyIn0se25hbWU6InJ0bCJ9LHtuYW1lOiJhdXRvIn1dfSx7bmFtZToibSIsdmFsdWVzOlt7bmFtZToiZ2V0IixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJDb3JyZXNwb25kcyB0byB0aGUgSFRUUCBbR0VUIG1ldGhvZF0oaHR0cHM6Ly93d3cudzMub3JnL1Byb3RvY29scy9yZmMyNjE2L3JmYzI2MTYtc2VjOS5odG1sI3NlYzkuMyk7IGZvcm0gZGF0YSBhcmUgYXBwZW5kZWQgdG8gdGhlIGBhY3Rpb25gIGF0dHJpYnV0ZSBVUkkgd2l0aCBhICc/JyBhcyBzZXBhcmF0b3IsIGFuZCB0aGUgcmVzdWx0aW5nIFVSSSBpcyBzZW50IHRvIHRoZSBzZXJ2ZXIuIFVzZSB0aGlzIG1ldGhvZCB3aGVuIHRoZSBmb3JtIGhhcyBubyBzaWRlLWVmZmVjdHMgYW5kIGNvbnRhaW5zIG9ubHkgQVNDSUkgY2hhcmFjdGVycy4ifX0se25hbWU6InBvc3QiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkNvcnJlc3BvbmRzIHRvIHRoZSBIVFRQIFtQT1NUIG1ldGhvZF0oaHR0cHM6Ly93d3cudzMub3JnL1Byb3RvY29scy9yZmMyNjE2L3JmYzI2MTYtc2VjOS5odG1sI3NlYzkuNSk7IGZvcm0gZGF0YSBhcmUgaW5jbHVkZWQgaW4gdGhlIGJvZHkgb2YgdGhlIGZvcm0gYW5kIHNlbnQgdG8gdGhlIHNlcnZlci4ifX0se25hbWU6ImRpYWxvZyIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiVXNlIHdoZW4gdGhlIGZvcm0gaXMgaW5zaWRlIGEgW2A8ZGlhbG9nPmBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9kaWFsb2cpIGVsZW1lbnQgdG8gY2xvc2UgdGhlIGRpYWxvZyB3aGVuIHN1Ym1pdHRlZC4ifX1dfSx7bmFtZToiZm0iLHZhbHVlczpbe25hbWU6ImdldCJ9LHtuYW1lOiJwb3N0In1dfSx7bmFtZToicyIsdmFsdWVzOlt7bmFtZToicm93In0se25hbWU6ImNvbCJ9LHtuYW1lOiJyb3dncm91cCJ9LHtuYW1lOiJjb2xncm91cCJ9XX0se25hbWU6InQiLHZhbHVlczpbe25hbWU6ImhpZGRlbiJ9LHtuYW1lOiJ0ZXh0In0se25hbWU6InNlYXJjaCJ9LHtuYW1lOiJ0ZWwifSx7bmFtZToidXJsIn0se25hbWU6ImVtYWlsIn0se25hbWU6InBhc3N3b3JkIn0se25hbWU6ImRhdGV0aW1lIn0se25hbWU6ImRhdGUifSx7bmFtZToibW9udGgifSx7bmFtZToid2VlayJ9LHtuYW1lOiJ0aW1lIn0se25hbWU6ImRhdGV0aW1lLWxvY2FsIn0se25hbWU6Im51bWJlciJ9LHtuYW1lOiJyYW5nZSJ9LHtuYW1lOiJjb2xvciJ9LHtuYW1lOiJjaGVja2JveCJ9LHtuYW1lOiJyYWRpbyJ9LHtuYW1lOiJmaWxlIn0se25hbWU6InN1Ym1pdCJ9LHtuYW1lOiJpbWFnZSJ9LHtuYW1lOiJyZXNldCJ9LHtuYW1lOiJidXR0b24ifV19LHtuYW1lOiJpbSIsdmFsdWVzOlt7bmFtZToidmVyYmF0aW0ifSx7bmFtZToibGF0aW4ifSx7bmFtZToibGF0aW4tbmFtZSJ9LHtuYW1lOiJsYXRpbi1wcm9zZSJ9LHtuYW1lOiJmdWxsLXdpZHRoLWxhdGluIn0se25hbWU6ImthbmEifSx7bmFtZToia2FuYS1uYW1lIn0se25hbWU6ImthdGFrYW5hIn0se25hbWU6Im51bWVyaWMifSx7bmFtZToidGVsIn0se25hbWU6ImVtYWlsIn0se25hbWU6InVybCJ9XX0se25hbWU6ImJ0Iix2YWx1ZXM6W3tuYW1lOiJidXR0b24ifSx7bmFtZToic3VibWl0In0se25hbWU6InJlc2V0In0se25hbWU6Im1lbnUifV19LHtuYW1lOiJsdCIsdmFsdWVzOlt7bmFtZToiMSJ9LHtuYW1lOiJhIn0se25hbWU6IkEifSx7bmFtZToiaSJ9LHtuYW1lOiJJIn1dfSx7bmFtZToibXQiLHZhbHVlczpbe25hbWU6ImNvbnRleHQifSx7bmFtZToidG9vbGJhciJ9XX0se25hbWU6Im1pdCIsdmFsdWVzOlt7bmFtZToiY29tbWFuZCJ9LHtuYW1lOiJjaGVja2JveCJ9LHtuYW1lOiJyYWRpbyJ9XX0se25hbWU6ImV0Iix2YWx1ZXM6W3tuYW1lOiJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQifSx7bmFtZToibXVsdGlwYXJ0L2Zvcm0tZGF0YSJ9LHtuYW1lOiJ0ZXh0L3BsYWluIn1dfSx7bmFtZToidGsiLHZhbHVlczpbe25hbWU6InN1YnRpdGxlcyJ9LHtuYW1lOiJjYXB0aW9ucyJ9LHtuYW1lOiJkZXNjcmlwdGlvbnMifSx7bmFtZToiY2hhcHRlcnMifSx7bmFtZToibWV0YWRhdGEifV19LHtuYW1lOiJwbCIsdmFsdWVzOlt7bmFtZToibm9uZSJ9LHtuYW1lOiJtZXRhZGF0YSJ9LHtuYW1lOiJhdXRvIn1dfSx7bmFtZToic2giLHZhbHVlczpbe25hbWU6ImNpcmNsZSJ9LHtuYW1lOiJkZWZhdWx0In0se25hbWU6InBvbHkifSx7bmFtZToicmVjdCJ9XX0se25hbWU6InhvIix2YWx1ZXM6W3tuYW1lOiJhbm9ueW1vdXMifSx7bmFtZToidXNlLWNyZWRlbnRpYWxzIn1dfSx7bmFtZToic2IiLHZhbHVlczpbe25hbWU6ImFsbG93LWZvcm1zIn0se25hbWU6ImFsbG93LW1vZGFscyJ9LHtuYW1lOiJhbGxvdy1wb2ludGVyLWxvY2sifSx7bmFtZToiYWxsb3ctcG9wdXBzIn0se25hbWU6ImFsbG93LXBvcHVwcy10by1lc2NhcGUtc2FuZGJveCJ9LHtuYW1lOiJhbGxvdy1zYW1lLW9yaWdpbiJ9LHtuYW1lOiJhbGxvdy1zY3JpcHRzIn0se25hbWU6ImFsbG93LXRvcC1uYXZpZ2F0aW9uIn1dfSx7bmFtZToidHJpc3RhdGUiLHZhbHVlczpbe25hbWU6InRydWUifSx7bmFtZToiZmFsc2UifSx7bmFtZToibWl4ZWQifSx7bmFtZToidW5kZWZpbmVkIn1dfSx7bmFtZToiaW5wdXRhdXRvY29tcGxldGUiLHZhbHVlczpbe25hbWU6ImFkZGl0aW9uYWwtbmFtZSJ9LHtuYW1lOiJhZGRyZXNzLWxldmVsMSJ9LHtuYW1lOiJhZGRyZXNzLWxldmVsMiJ9LHtuYW1lOiJhZGRyZXNzLWxldmVsMyJ9LHtuYW1lOiJhZGRyZXNzLWxldmVsNCJ9LHtuYW1lOiJhZGRyZXNzLWxpbmUxIn0se25hbWU6ImFkZHJlc3MtbGluZTIifSx7bmFtZToiYWRkcmVzcy1saW5lMyJ9LHtuYW1lOiJiZGF5In0se25hbWU6ImJkYXkteWVhciJ9LHtuYW1lOiJiZGF5LWRheSJ9LHtuYW1lOiJiZGF5LW1vbnRoIn0se25hbWU6ImJpbGxpbmcifSx7bmFtZToiY2MtYWRkaXRpb25hbC1uYW1lIn0se25hbWU6ImNjLWNzYyJ9LHtuYW1lOiJjYy1leHAifSx7bmFtZToiY2MtZXhwLW1vbnRoIn0se25hbWU6ImNjLWV4cC15ZWFyIn0se25hbWU6ImNjLWZhbWlseS1uYW1lIn0se25hbWU6ImNjLWdpdmVuLW5hbWUifSx7bmFtZToiY2MtbmFtZSJ9LHtuYW1lOiJjYy1udW1iZXIifSx7bmFtZToiY2MtdHlwZSJ9LHtuYW1lOiJjb3VudHJ5In0se25hbWU6ImNvdW50cnktbmFtZSJ9LHtuYW1lOiJjdXJyZW50LXBhc3N3b3JkIn0se25hbWU6ImVtYWlsIn0se25hbWU6ImZhbWlseS1uYW1lIn0se25hbWU6ImZheCJ9LHtuYW1lOiJnaXZlbi1uYW1lIn0se25hbWU6ImhvbWUifSx7bmFtZToiaG9ub3JpZmljLXByZWZpeCJ9LHtuYW1lOiJob25vcmlmaWMtc3VmZml4In0se25hbWU6ImltcHAifSx7bmFtZToibGFuZ3VhZ2UifSx7bmFtZToibW9iaWxlIn0se25hbWU6Im5hbWUifSx7bmFtZToibmV3LXBhc3N3b3JkIn0se25hbWU6Im5pY2tuYW1lIn0se25hbWU6Im9yZ2FuaXphdGlvbiJ9LHtuYW1lOiJvcmdhbml6YXRpb24tdGl0bGUifSx7bmFtZToicGFnZXIifSx7bmFtZToicGhvdG8ifSx7bmFtZToicG9zdGFsLWNvZGUifSx7bmFtZToic2V4In0se25hbWU6InNoaXBwaW5nIn0se25hbWU6InN0cmVldC1hZGRyZXNzIn0se25hbWU6InRlbC1hcmVhLWNvZGUifSx7bmFtZToidGVsIn0se25hbWU6InRlbC1jb3VudHJ5LWNvZGUifSx7bmFtZToidGVsLWV4dGVuc2lvbiJ9LHtuYW1lOiJ0ZWwtbG9jYWwifSx7bmFtZToidGVsLWxvY2FsLXByZWZpeCJ9LHtuYW1lOiJ0ZWwtbG9jYWwtc3VmZml4In0se25hbWU6InRlbC1uYXRpb25hbCJ9LHtuYW1lOiJ0cmFuc2FjdGlvbi1hbW91bnQifSx7bmFtZToidHJhbnNhY3Rpb24tY3VycmVuY3kifSx7bmFtZToidXJsIn0se25hbWU6InVzZXJuYW1lIn0se25hbWU6IndvcmsifV19LHtuYW1lOiJhdXRvY29tcGxldGUiLHZhbHVlczpbe25hbWU6ImlubGluZSJ9LHtuYW1lOiJsaXN0In0se25hbWU6ImJvdGgifSx7bmFtZToibm9uZSJ9XX0se25hbWU6ImN1cnJlbnQiLHZhbHVlczpbe25hbWU6InBhZ2UifSx7bmFtZToic3RlcCJ9LHtuYW1lOiJsb2NhdGlvbiJ9LHtuYW1lOiJkYXRlIn0se25hbWU6InRpbWUifSx7bmFtZToidHJ1ZSJ9LHtuYW1lOiJmYWxzZSJ9XX0se25hbWU6ImRyb3BlZmZlY3QiLHZhbHVlczpbe25hbWU6ImNvcHkifSx7bmFtZToibW92ZSJ9LHtuYW1lOiJsaW5rIn0se25hbWU6ImV4ZWN1dGUifSx7bmFtZToicG9wdXAifSx7bmFtZToibm9uZSJ9XX0se25hbWU6ImludmFsaWQiLHZhbHVlczpbe25hbWU6ImdyYW1tYXIifSx7bmFtZToiZmFsc2UifSx7bmFtZToic3BlbGxpbmcifSx7bmFtZToidHJ1ZSJ9XX0se25hbWU6ImxpdmUiLHZhbHVlczpbe25hbWU6Im9mZiJ9LHtuYW1lOiJwb2xpdGUifSx7bmFtZToiYXNzZXJ0aXZlIn1dfSx7bmFtZToib3JpZW50YXRpb24iLHZhbHVlczpbe25hbWU6InZlcnRpY2FsIn0se25hbWU6Imhvcml6b250YWwifSx7bmFtZToidW5kZWZpbmVkIn1dfSx7bmFtZToicmVsZXZhbnQiLHZhbHVlczpbe25hbWU6ImFkZGl0aW9ucyJ9LHtuYW1lOiJyZW1vdmFscyJ9LHtuYW1lOiJ0ZXh0In0se25hbWU6ImFsbCJ9LHtuYW1lOiJhZGRpdGlvbnMgdGV4dCJ9XX0se25hbWU6InNvcnQiLHZhbHVlczpbe25hbWU6ImFzY2VuZGluZyJ9LHtuYW1lOiJkZXNjZW5kaW5nIn0se25hbWU6Im5vbmUifSx7bmFtZToib3RoZXIifV19LHtuYW1lOiJyb2xlcyIsdmFsdWVzOlt7bmFtZToiYWxlcnQifSx7bmFtZToiYWxlcnRkaWFsb2cifSx7bmFtZToiYnV0dG9uIn0se25hbWU6ImNoZWNrYm94In0se25hbWU6ImRpYWxvZyJ9LHtuYW1lOiJncmlkY2VsbCJ9LHtuYW1lOiJsaW5rIn0se25hbWU6ImxvZyJ9LHtuYW1lOiJtYXJxdWVlIn0se25hbWU6Im1lbnVpdGVtIn0se25hbWU6Im1lbnVpdGVtY2hlY2tib3gifSx7bmFtZToibWVudWl0ZW1yYWRpbyJ9LHtuYW1lOiJvcHRpb24ifSx7bmFtZToicHJvZ3Jlc3NiYXIifSx7bmFtZToicmFkaW8ifSx7bmFtZToic2Nyb2xsYmFyIn0se25hbWU6InNlYXJjaGJveCJ9LHtuYW1lOiJzbGlkZXIifSx7bmFtZToic3BpbmJ1dHRvbiJ9LHtuYW1lOiJzdGF0dXMifSx7bmFtZToic3dpdGNoIn0se25hbWU6InRhYiJ9LHtuYW1lOiJ0YWJwYW5lbCJ9LHtuYW1lOiJ0ZXh0Ym94In0se25hbWU6InRpbWVyIn0se25hbWU6InRvb2x0aXAifSx7bmFtZToidHJlZWl0ZW0ifSx7bmFtZToiY29tYm9ib3gifSx7bmFtZToiZ3JpZCJ9LHtuYW1lOiJsaXN0Ym94In0se25hbWU6Im1lbnUifSx7bmFtZToibWVudWJhciJ9LHtuYW1lOiJyYWRpb2dyb3VwIn0se25hbWU6InRhYmxpc3QifSx7bmFtZToidHJlZSJ9LHtuYW1lOiJ0cmVlZ3JpZCJ9LHtuYW1lOiJhcHBsaWNhdGlvbiJ9LHtuYW1lOiJhcnRpY2xlIn0se25hbWU6ImNlbGwifSx7bmFtZToiY29sdW1uaGVhZGVyIn0se25hbWU6ImRlZmluaXRpb24ifSx7bmFtZToiZGlyZWN0b3J5In0se25hbWU6ImRvY3VtZW50In0se25hbWU6ImZlZWQifSx7bmFtZToiZmlndXJlIn0se25hbWU6Imdyb3VwIn0se25hbWU6ImhlYWRpbmcifSx7bmFtZToiaW1nIn0se25hbWU6Imxpc3QifSx7bmFtZToibGlzdGl0ZW0ifSx7bmFtZToibWF0aCJ9LHtuYW1lOiJub25lIn0se25hbWU6Im5vdGUifSx7bmFtZToicHJlc2VudGF0aW9uIn0se25hbWU6InJlZ2lvbiJ9LHtuYW1lOiJyb3cifSx7bmFtZToicm93Z3JvdXAifSx7bmFtZToicm93aGVhZGVyIn0se25hbWU6InNlcGFyYXRvciJ9LHtuYW1lOiJ0YWJsZSJ9LHtuYW1lOiJ0ZXJtIn0se25hbWU6InRleHQifSx7bmFtZToidG9vbGJhciJ9LHtuYW1lOiJiYW5uZXIifSx7bmFtZToiY29tcGxlbWVudGFyeSJ9LHtuYW1lOiJjb250ZW50aW5mbyJ9LHtuYW1lOiJmb3JtIn0se25hbWU6Im1haW4ifSx7bmFtZToibmF2aWdhdGlvbiJ9LHtuYW1lOiJyZWdpb24ifSx7bmFtZToic2VhcmNoIn0se25hbWU6ImRvYy1hYnN0cmFjdCJ9LHtuYW1lOiJkb2MtYWNrbm93bGVkZ21lbnRzIn0se25hbWU6ImRvYy1hZnRlcndvcmQifSx7bmFtZToiZG9jLWFwcGVuZGl4In0se25hbWU6ImRvYy1iYWNrbGluayJ9LHtuYW1lOiJkb2MtYmlibGlvZW50cnkifSx7bmFtZToiZG9jLWJpYmxpb2dyYXBoeSJ9LHtuYW1lOiJkb2MtYmlibGlvcmVmIn0se25hbWU6ImRvYy1jaGFwdGVyIn0se25hbWU6ImRvYy1jb2xvcGhvbiJ9LHtuYW1lOiJkb2MtY29uY2x1c2lvbiJ9LHtuYW1lOiJkb2MtY292ZXIifSx7bmFtZToiZG9jLWNyZWRpdCJ9LHtuYW1lOiJkb2MtY3JlZGl0cyJ9LHtuYW1lOiJkb2MtZGVkaWNhdGlvbiJ9LHtuYW1lOiJkb2MtZW5kbm90ZSJ9LHtuYW1lOiJkb2MtZW5kbm90ZXMifSx7bmFtZToiZG9jLWVwaWdyYXBoIn0se25hbWU6ImRvYy1lcGlsb2d1ZSJ9LHtuYW1lOiJkb2MtZXJyYXRhIn0se25hbWU6ImRvYy1leGFtcGxlIn0se25hbWU6ImRvYy1mb290bm90ZSJ9LHtuYW1lOiJkb2MtZm9yZXdvcmQifSx7bmFtZToiZG9jLWdsb3NzYXJ5In0se25hbWU6ImRvYy1nbG9zc3JlZiJ9LHtuYW1lOiJkb2MtaW5kZXgifSx7bmFtZToiZG9jLWludHJvZHVjdGlvbiJ9LHtuYW1lOiJkb2Mtbm90ZXJlZiJ9LHtuYW1lOiJkb2Mtbm90aWNlIn0se25hbWU6ImRvYy1wYWdlYnJlYWsifSx7bmFtZToiZG9jLXBhZ2VsaXN0In0se25hbWU6ImRvYy1wYXJ0In0se25hbWU6ImRvYy1wcmVmYWNlIn0se25hbWU6ImRvYy1wcm9sb2d1ZSJ9LHtuYW1lOiJkb2MtcHVsbHF1b3RlIn0se25hbWU6ImRvYy1xbmEifSx7bmFtZToiZG9jLXN1YnRpdGxlIn0se25hbWU6ImRvYy10aXAifSx7bmFtZToiZG9jLXRvYyJ9XX0se25hbWU6Im1ldGFuYW1lcyIsdmFsdWVzOlt7bmFtZToiYXBwbGljYXRpb24tbmFtZSJ9LHtuYW1lOiJhdXRob3IifSx7bmFtZToiZGVzY3JpcHRpb24ifSx7bmFtZToiZm9ybWF0LWRldGVjdGlvbiJ9LHtuYW1lOiJnZW5lcmF0b3IifSx7bmFtZToia2V5d29yZHMifSx7bmFtZToicHVibGlzaGVyIn0se25hbWU6InJlZmVycmVyIn0se25hbWU6InJvYm90cyJ9LHtuYW1lOiJ0aGVtZS1jb2xvciJ9LHtuYW1lOiJ2aWV3cG9ydCJ9XX0se25hbWU6Imhhc3BvcHVwIix2YWx1ZXM6W3tuYW1lOiJmYWxzZSIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiKGRlZmF1bHQpIEluZGljYXRlcyB0aGUgZWxlbWVudCBkb2VzIG5vdCBoYXZlIGEgcG9wdXAuIn19LHtuYW1lOiJ0cnVlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJJbmRpY2F0ZXMgdGhlIHBvcHVwIGlzIGEgbWVudS4ifX0se25hbWU6Im1lbnUiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkluZGljYXRlcyB0aGUgcG9wdXAgaXMgYSBtZW51LiJ9fSx7bmFtZToibGlzdGJveCIsZGVzY3JpcHRpb246e2tpbmQ6Im1hcmtkb3duIix2YWx1ZToiSW5kaWNhdGVzIHRoZSBwb3B1cCBpcyBhIGxpc3Rib3guIn19LHtuYW1lOiJ0cmVlIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJJbmRpY2F0ZXMgdGhlIHBvcHVwIGlzIGEgdHJlZS4ifX0se25hbWU6ImdyaWQiLGRlc2NyaXB0aW9uOntraW5kOiJtYXJrZG93biIsdmFsdWU6IkluZGljYXRlcyB0aGUgcG9wdXAgaXMgYSBncmlkLiJ9fSx7bmFtZToiZGlhbG9nIixkZXNjcmlwdGlvbjp7a2luZDoibWFya2Rvd24iLHZhbHVlOiJJbmRpY2F0ZXMgdGhlIHBvcHVwIGlzIGEgZGlhbG9nLiJ9fV19XX0sRG89ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUpe3RoaXMuZGF0YVByb3ZpZGVycz1bXSx0aGlzLnNldERhdGFQcm92aWRlcnMoITEhPT1lLnVzZURlZmF1bHREYXRhUHJvdmlkZXIsZS5jdXN0b21EYXRhUHJvdmlkZXJzfHxbXSl9cmV0dXJuIGUucHJvdG90eXBlLnNldERhdGFQcm92aWRlcnM9ZnVuY3Rpb24oZSx0KXt2YXIgbjt0aGlzLmRhdGFQcm92aWRlcnM9W10sZSYmdGhpcy5kYXRhUHJvdmlkZXJzLnB1c2gobmV3IEZhKCJodG1sNSIsem8pKSwobj10aGlzLmRhdGFQcm92aWRlcnMpLnB1c2guYXBwbHkobix0KX0sZS5wcm90b3R5cGUuZ2V0RGF0YVByb3ZpZGVycz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmRhdGFQcm92aWRlcnN9LGV9KCksV289e307ZnVuY3Rpb24gT28oZSx0KXtyZXR1cm4gbmV3IEZhKGUsdCl9c2VsZi5vbm1lc3NhZ2U9KCk9PnskbigoKGUsdCk9Pm5ldyBjbGFzc3tfY3R4O19sYW5ndWFnZVNlcnZpY2U7X2xhbmd1YWdlU2V0dGluZ3M7X2xhbmd1YWdlSWQ7Y29uc3RydWN0b3IoZSx0KXt0aGlzLl9jdHg9ZSx0aGlzLl9sYW5ndWFnZVNldHRpbmdzPXQubGFuZ3VhZ2VTZXR0aW5ncyx0aGlzLl9sYW5ndWFnZUlkPXQubGFuZ3VhZ2VJZDtjb25zdCBuPXRoaXMuX2xhbmd1YWdlU2V0dGluZ3MuZGF0YSxyPW4/LnVzZURlZmF1bHREYXRhUHJvdmlkZXIsaT1bXTtpZihuPy5kYXRhUHJvdmlkZXJzKWZvcihjb25zdCBlIGluIG4uZGF0YVByb3ZpZGVycylpLnB1c2goT28oZSxuLmRhdGFQcm92aWRlcnNbZV0pKTt0aGlzLl9sYW5ndWFnZVNlcnZpY2U9ZnVuY3Rpb24oZSl7dm9pZCAwPT09ZSYmKGU9V28pO3ZhciB0PW5ldyBEbyhlKSxuPW5ldyBzbyhlLHQpLHI9bmV3IGVvKGUsdCk7cmV0dXJue3NldERhdGFQcm92aWRlcnM6dC5zZXREYXRhUHJvdmlkZXJzLmJpbmQodCksY3JlYXRlU2Nhbm5lcjpDYSxwYXJzZUhUTUxEb2N1bWVudDpmdW5jdGlvbihlKXtyZXR1cm4gTWEoZS5nZXRUZXh0KCkpfSxkb0NvbXBsZXRlOnIuZG9Db21wbGV0ZS5iaW5kKHIpLGRvQ29tcGxldGUyOnIuZG9Db21wbGV0ZTIuYmluZChyKSxzZXRDb21wbGV0aW9uUGFydGljaXBhbnRzOnIuc2V0Q29tcGxldGlvblBhcnRpY2lwYW50cy5iaW5kKHIpLGRvSG92ZXI6bi5kb0hvdmVyLmJpbmQobiksZm9ybWF0OnBvLGZpbmREb2N1bWVudEhpZ2hsaWdodHM6U28sZmluZERvY3VtZW50TGlua3M6a28sZmluZERvY3VtZW50U3ltYm9sczpFbyxnZXRGb2xkaW5nUmFuZ2VzOk5vLGdldFNlbGVjdGlvblJhbmdlczpVbyxkb1F1b3RlQ29tcGxldGU6ci5kb1F1b3RlQ29tcGxldGUuYmluZChyKSxkb1RhZ0NvbXBsZXRlOnIuZG9UYWdDb21wbGV0ZS5iaW5kKHIpLGRvUmVuYW1lOk1vLGZpbmRNYXRjaGluZ1RhZ1Bvc2l0aW9uOlJvLGZpbmRPblR5cGVSZW5hbWVSYW5nZXM6SW8sZmluZExpbmtlZEVkaXRpbmdSYW5nZXM6SW99fSh7dXNlRGVmYXVsdERhdGFQcm92aWRlcjpyLGN1c3RvbURhdGFQcm92aWRlcnM6aX0pfWFzeW5jIGRvQ29tcGxldGUoZSx0KXtsZXQgbj10aGlzLl9nZXRUZXh0RG9jdW1lbnQoZSk7aWYoIW4pcmV0dXJuIG51bGw7bGV0IHI9dGhpcy5fbGFuZ3VhZ2VTZXJ2aWNlLnBhcnNlSFRNTERvY3VtZW50KG4pO3JldHVybiBQcm9taXNlLnJlc29sdmUodGhpcy5fbGFuZ3VhZ2VTZXJ2aWNlLmRvQ29tcGxldGUobix0LHIsdGhpcy5fbGFuZ3VhZ2VTZXR0aW5ncyYmdGhpcy5fbGFuZ3VhZ2VTZXR0aW5ncy5zdWdnZXN0KSl9YXN5bmMgZm9ybWF0KGUsdCxuKXtsZXQgcj10aGlzLl9nZXRUZXh0RG9jdW1lbnQoZSk7aWYoIXIpcmV0dXJuW107bGV0IGk9ey4uLnRoaXMuX2xhbmd1YWdlU2V0dGluZ3MuZm9ybWF0LC4uLm59LGE9dGhpcy5fbGFuZ3VhZ2VTZXJ2aWNlLmZvcm1hdChyLHQsaSk7cmV0dXJuIFByb21pc2UucmVzb2x2ZShhKX1hc3luYyBkb0hvdmVyKGUsdCl7bGV0IG49dGhpcy5fZ2V0VGV4dERvY3VtZW50KGUpO2lmKCFuKXJldHVybiBudWxsO2xldCByPXRoaXMuX2xhbmd1YWdlU2VydmljZS5wYXJzZUhUTUxEb2N1bWVudChuKSxpPXRoaXMuX2xhbmd1YWdlU2VydmljZS5kb0hvdmVyKG4sdCxyKTtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGkpfWFzeW5jIGZpbmREb2N1bWVudEhpZ2hsaWdodHMoZSx0KXtsZXQgbj10aGlzLl9nZXRUZXh0RG9jdW1lbnQoZSk7aWYoIW4pcmV0dXJuW107bGV0IHI9dGhpcy5fbGFuZ3VhZ2VTZXJ2aWNlLnBhcnNlSFRNTERvY3VtZW50KG4pLGk9dGhpcy5fbGFuZ3VhZ2VTZXJ2aWNlLmZpbmREb2N1bWVudEhpZ2hsaWdodHMobix0LHIpO3JldHVybiBQcm9taXNlLnJlc29sdmUoaSl9YXN5bmMgZmluZERvY3VtZW50TGlua3MoZSl7bGV0IHQ9dGhpcy5fZ2V0VGV4dERvY3VtZW50KGUpO2lmKCF0KXJldHVybltdO2xldCBuPXRoaXMuX2xhbmd1YWdlU2VydmljZS5maW5kRG9jdW1lbnRMaW5rcyh0LG51bGwpO3JldHVybiBQcm9taXNlLnJlc29sdmUobil9YXN5bmMgZmluZERvY3VtZW50U3ltYm9scyhlKXtsZXQgdD10aGlzLl9nZXRUZXh0RG9jdW1lbnQoZSk7aWYoIXQpcmV0dXJuW107bGV0IG49dGhpcy5fbGFuZ3VhZ2VTZXJ2aWNlLnBhcnNlSFRNTERvY3VtZW50KHQpLHI9dGhpcy5fbGFuZ3VhZ2VTZXJ2aWNlLmZpbmREb2N1bWVudFN5bWJvbHModCxuKTtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHIpfWFzeW5jIGdldEZvbGRpbmdSYW5nZXMoZSx0KXtsZXQgbj10aGlzLl9nZXRUZXh0RG9jdW1lbnQoZSk7aWYoIW4pcmV0dXJuW107bGV0IHI9dGhpcy5fbGFuZ3VhZ2VTZXJ2aWNlLmdldEZvbGRpbmdSYW5nZXMobix0KTtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHIpfWFzeW5jIGdldFNlbGVjdGlvblJhbmdlcyhlLHQpe2xldCBuPXRoaXMuX2dldFRleHREb2N1bWVudChlKTtpZighbilyZXR1cm5bXTtsZXQgcj10aGlzLl9sYW5ndWFnZVNlcnZpY2UuZ2V0U2VsZWN0aW9uUmFuZ2VzKG4sdCk7cmV0dXJuIFByb21pc2UucmVzb2x2ZShyKX1hc3luYyBkb1JlbmFtZShlLHQsbil7bGV0IHI9dGhpcy5fZ2V0VGV4dERvY3VtZW50KGUpO2lmKCFyKXJldHVybiBudWxsO2xldCBpPXRoaXMuX2xhbmd1YWdlU2VydmljZS5wYXJzZUhUTUxEb2N1bWVudChyKSxhPXRoaXMuX2xhbmd1YWdlU2VydmljZS5kb1JlbmFtZShyLHQsbixpKTtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGEpfV9nZXRUZXh0RG9jdW1lbnQoZSl7bGV0IHQ9dGhpcy5fY3R4LmdldE1pcnJvck1vZGVscygpO2ZvcihsZXQgbiBvZiB0KWlmKG4udXJpLnRvU3RyaW5nKCk9PT1lKXJldHVybiBKaS5jcmVhdGUoZSx0aGlzLl9sYW5ndWFnZUlkLG4udmVyc2lvbixuLmdldFZhbHVlKCkpO3JldHVybiBudWxsfX0oZSx0KSkpfX0oKTsKCg==', null, false);
|
|
4
4
|
/* eslint-enable */
|
|
5
5
|
|
|
6
6
|
export { WorkerFactory as default };
|