@vtj/designer 0.9.3 → 0.9.5

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.
Files changed (46) hide show
  1. package/dist/{Editor-C1dy1R3N.js → Editor-ZiUDqfgK.js} +1 -1
  2. package/dist/css.worker-DcQjDQkA.js +109 -0
  3. package/dist/editor.worker-lG8NyUhA.js +25 -0
  4. package/dist/html.worker-B83UVBG6.js +25 -0
  5. package/dist/index.mjs +228 -226
  6. package/dist/json.worker-Deqi-XXW.js +25 -0
  7. package/dist/ts.worker-P1pVlN2Z.js +51359 -0
  8. package/package.json +8 -8
  9. package/types/components/editor/Editor.d.ts +1 -1
  10. package/types/components/editor/index.d.ts +1 -1
  11. package/types/components/regions/empty.d.ts +1 -1
  12. package/types/components/regions/index.d.ts +2 -2
  13. package/types/components/regions/toolbar.d.ts +1 -1
  14. package/types/components/setters/file.d.ts +1 -1
  15. package/types/components/setters/function.d.ts +1 -1
  16. package/types/components/setters/icon.d.ts +1 -1
  17. package/types/components/setters/index.d.ts +7 -7
  18. package/types/components/setters/json.d.ts +1 -1
  19. package/types/components/setters/section.d.ts +1 -1
  20. package/types/components/setters/slider.d.ts +1 -1
  21. package/types/components/setters/tag.d.ts +1 -1
  22. package/types/components/shared/binder.d.ts +2 -1
  23. package/types/components/shared/box.d.ts +3 -2
  24. package/types/components/shared/item.d.ts +2 -1
  25. package/types/components/shared/panel.d.ts +2 -1
  26. package/types/components/shared/tabs.d.ts +2 -1
  27. package/types/components/shared/viewer.d.ts +1 -1
  28. package/types/components/shared/viewport.d.ts +3 -2
  29. package/types/components/widgets/about/index.d.ts +1 -1
  30. package/types/components/widgets/actions/coder.d.ts +1 -1
  31. package/types/components/widgets/apis/base-info.d.ts +1 -1
  32. package/types/components/widgets/apis/jsonp-options.d.ts +1 -1
  33. package/types/components/widgets/apis/mock-template.d.ts +1 -1
  34. package/types/components/widgets/apis/request-settings.d.ts +1 -1
  35. package/types/components/widgets/designer/actions.d.ts +1 -1
  36. package/types/components/widgets/empty/index.d.ts +1 -1
  37. package/types/components/widgets/index.d.ts +3 -3
  38. package/types/components/widgets/previewer/index.d.ts +1 -1
  39. package/types/components/widgets/scripts/group.d.ts +3 -2
  40. package/types/components/widgets/style/spacing-input.d.ts +1 -1
  41. package/types/version.d.ts +3 -3
  42. package/dist/css.worker-BkwH8iYE.js +0 -25
  43. package/dist/editor.worker-C8k3yDdT.js +0 -25
  44. package/dist/html.worker-DefZQYbA.js +0 -25
  45. package/dist/json.worker-05I1Fjzo.js +0 -25
  46. package/dist/ts.worker-Dn3IQaLA.js +0 -25
@@ -1,25 +0,0 @@
1
- const c = "dmFyIGZmPU9iamVjdC5kZWZpbmVQcm9wZXJ0eTt2YXIgZ2Y9KHl0LEhlLEdlKT0+SGUgaW4geXQ/ZmYoeXQsSGUse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOkdlfSk6eXRbSGVdPUdlO3ZhciB3dD0oeXQsSGUsR2UpPT5nZih5dCx0eXBlb2YgSGUhPSJzeW1ib2wiP0hlKyIiOkhlLEdlKTsoZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7dmFyIHN0LHllLFo7Y2xhc3MgeXR7Y29uc3RydWN0b3IoKXt0aGlzLmxpc3RlbmVycz1bXSx0aGlzLnVuZXhwZWN0ZWRFcnJvckhhbmRsZXI9ZnVuY3Rpb24odCl7c2V0VGltZW91dCgoKT0+e3Rocm93IHQuc3RhY2s/RHQuaXNFcnJvck5vVGVsZW1ldHJ5KHQpP25ldyBEdCh0Lm1lc3NhZ2UrYAoKYCt0LnN0YWNrKTpuZXcgRXJyb3IodC5tZXNzYWdlK2AKCmArdC5zdGFjayk6dH0sMCl9fWVtaXQodCl7dGhpcy5saXN0ZW5lcnMuZm9yRWFjaChuPT57bih0KX0pfW9uVW5leHBlY3RlZEVycm9yKHQpe3RoaXMudW5leHBlY3RlZEVycm9ySGFuZGxlcih0KSx0aGlzLmVtaXQodCl9b25VbmV4cGVjdGVkRXh0ZXJuYWxFcnJvcih0KXt0aGlzLnVuZXhwZWN0ZWRFcnJvckhhbmRsZXIodCl9fWNvbnN0IEhlPW5ldyB5dDtmdW5jdGlvbiBHZShlKXtyaChlKXx8SGUub25VbmV4cGVjdGVkRXJyb3IoZSl9ZnVuY3Rpb24gQXMoZSl7aWYoZSBpbnN0YW5jZW9mIEVycm9yKXtjb25zdHtuYW1lOnQsbWVzc2FnZTpufT1lLHI9ZS5zdGFja3RyYWNlfHxlLnN0YWNrO3JldHVybnskaXNFcnJvcjohMCxuYW1lOnQsbWVzc2FnZTpuLHN0YWNrOnIsbm9UZWxlbWV0cnk6RHQuaXNFcnJvck5vVGVsZW1ldHJ5KGUpfX1yZXR1cm4gZX1jb25zdCBNcj0iQ2FuY2VsZWQiO2Z1bmN0aW9uIHJoKGUpe3JldHVybiBlIGluc3RhbmNlb2YgaWg/ITA6ZSBpbnN0YW5jZW9mIEVycm9yJiZlLm5hbWU9PT1NciYmZS5tZXNzYWdlPT09TXJ9Y2xhc3MgaWggZXh0ZW5kcyBFcnJvcntjb25zdHJ1Y3Rvcigpe3N1cGVyKE1yKSx0aGlzLm5hbWU9dGhpcy5tZXNzYWdlfX1jbGFzcyBEdCBleHRlbmRzIEVycm9ye2NvbnN0cnVjdG9yKHQpe3N1cGVyKHQpLHRoaXMubmFtZT0iQ29kZUV4cGVjdGVkRXJyb3IifXN0YXRpYyBmcm9tRXJyb3IodCl7aWYodCBpbnN0YW5jZW9mIER0KXJldHVybiB0O2NvbnN0IG49bmV3IER0O3JldHVybiBuLm1lc3NhZ2U9dC5tZXNzYWdlLG4uc3RhY2s9dC5zdGFjayxufXN0YXRpYyBpc0Vycm9yTm9UZWxlbWV0cnkodCl7cmV0dXJuIHQubmFtZT09PSJDb2RlRXhwZWN0ZWRFcnJvciJ9fWNsYXNzIF9lIGV4dGVuZHMgRXJyb3J7Y29uc3RydWN0b3IodCl7c3VwZXIodHx8IkFuIHVuZXhwZWN0ZWQgYnVnIG9jY3VycmVkLiIpLE9iamVjdC5zZXRQcm90b3R5cGVPZih0aGlzLF9lLnByb3RvdHlwZSl9fWZ1bmN0aW9uIHNoKGUsdCl7Y29uc3Qgbj10aGlzO2xldCByPSExLGk7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHJ8fChyPSEwLGk9ZS5hcHBseShuLGFyZ3VtZW50cykpLGl9fXZhciBMbjsoZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChFKXtyZXR1cm4gRSYmdHlwZW9mIEU9PSJvYmplY3QiJiZ0eXBlb2YgRVtTeW1ib2wuaXRlcmF0b3JdPT0iZnVuY3Rpb24ifWUuaXM9dDtjb25zdCBuPU9iamVjdC5mcmVlemUoW10pO2Z1bmN0aW9uIHIoKXtyZXR1cm4gbn1lLmVtcHR5PXI7ZnVuY3Rpb24qaShFKXt5aWVsZCBFfWUuc2luZ2xlPWk7ZnVuY3Rpb24gcyhFKXtyZXR1cm4gdChFKT9FOmkoRSl9ZS53cmFwPXM7ZnVuY3Rpb24gYShFKXtyZXR1cm4gRXx8bn1lLmZyb209YTtmdW5jdGlvbipsKEUpe2ZvcihsZXQgUj1FLmxlbmd0aC0xO1I+PTA7Ui0tKXlpZWxkIEVbUl19ZS5yZXZlcnNlPWw7ZnVuY3Rpb24gbyhFKXtyZXR1cm4hRXx8RVtTeW1ib2wuaXRlcmF0b3JdKCkubmV4dCgpLmRvbmU9PT0hMH1lLmlzRW1wdHk9bztmdW5jdGlvbiBjKEUpe3JldHVybiBFW1N5bWJvbC5pdGVyYXRvcl0oKS5uZXh0KCkudmFsdWV9ZS5maXJzdD1jO2Z1bmN0aW9uIGQoRSxSKXtsZXQgTT0wO2Zvcihjb25zdCBUIG9mIEUpaWYoUihULE0rKykpcmV0dXJuITA7cmV0dXJuITF9ZS5zb21lPWQ7ZnVuY3Rpb24gdShFLFIpe2Zvcihjb25zdCBNIG9mIEUpaWYoUihNKSlyZXR1cm4gTX1lLmZpbmQ9dTtmdW5jdGlvbipmKEUsUil7Zm9yKGNvbnN0IE0gb2YgRSlSKE0pJiYoeWllbGQgTSl9ZS5maWx0ZXI9ZjtmdW5jdGlvbiptKEUsUil7bGV0IE09MDtmb3IoY29uc3QgVCBvZiBFKXlpZWxkIFIoVCxNKyspfWUubWFwPW07ZnVuY3Rpb24qdihFLFIpe2xldCBNPTA7Zm9yKGNvbnN0IFQgb2YgRSl5aWVsZCpSKFQsTSsrKX1lLmZsYXRNYXA9djtmdW5jdGlvbip5KC4uLkUpe2Zvcihjb25zdCBSIG9mIEUpeWllbGQqUn1lLmNvbmNhdD15O2Z1bmN0aW9uIF8oRSxSLE0pe2xldCBUPU07Zm9yKGNvbnN0IFAgb2YgRSlUPVIoVCxQKTtyZXR1cm4gVH1lLnJlZHVjZT1fO2Z1bmN0aW9uKmsoRSxSLE09RS5sZW5ndGgpe2ZvcihSPDAmJihSKz1FLmxlbmd0aCksTTwwP00rPUUubGVuZ3RoOk0+RS5sZW5ndGgmJihNPUUubGVuZ3RoKTtSPE07UisrKXlpZWxkIEVbUl19ZS5zbGljZT1rO2Z1bmN0aW9uIEQoRSxSPU51bWJlci5QT1NJVElWRV9JTkZJTklUWSl7Y29uc3QgTT1bXTtpZihSPT09MClyZXR1cm5bTSxFXTtjb25zdCBUPUVbU3ltYm9sLml0ZXJhdG9yXSgpO2ZvcihsZXQgUD0wO1A8UjtQKyspe2NvbnN0ICQ9VC5uZXh0KCk7aWYoJC5kb25lKXJldHVybltNLGUuZW1wdHkoKV07TS5wdXNoKCQudmFsdWUpfXJldHVybltNLHtbU3ltYm9sLml0ZXJhdG9yXSgpe3JldHVybiBUfX1dfWUuY29uc3VtZT1EO2FzeW5jIGZ1bmN0aW9uIE4oRSl7Y29uc3QgUj1bXTtmb3IgYXdhaXQoY29uc3QgTSBvZiBFKVIucHVzaChNKTtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKFIpfWUuYXN5bmNUb0FycmF5PU59KShMbnx8KExuPXt9KSk7ZnVuY3Rpb24gYmYoZSl7cmV0dXJuIGV9ZnVuY3Rpb24gdmYoZSx0KXt9ZnVuY3Rpb24gTXMoZSl7aWYoTG4uaXMoZSkpe2NvbnN0IHQ9W107Zm9yKGNvbnN0IG4gb2YgZSlpZihuKXRyeXtuLmRpc3Bvc2UoKX1jYXRjaChyKXt0LnB1c2gocil9aWYodC5sZW5ndGg9PT0xKXRocm93IHRbMF07aWYodC5sZW5ndGg+MSl0aHJvdyBuZXcgQWdncmVnYXRlRXJyb3IodCwiRW5jb3VudGVyZWQgZXJyb3JzIHdoaWxlIGRpc3Bvc2luZyBvZiBzdG9yZSIpO3JldHVybiBBcnJheS5pc0FycmF5KGUpP1tdOmV9ZWxzZSBpZihlKXJldHVybiBlLmRpc3Bvc2UoKSxlfWZ1bmN0aW9uIGFoKC4uLmUpe3JldHVybiB6bigoKT0+TXMoZSkpfWZ1bmN0aW9uIHpuKGUpe3JldHVybntkaXNwb3NlOnNoKCgpPT57ZSgpfSl9fWNvbnN0IGtyPWNsYXNzIGtye2NvbnN0cnVjdG9yKCl7dGhpcy5fdG9EaXNwb3NlPW5ldyBTZXQsdGhpcy5faXNEaXNwb3NlZD0hMX1kaXNwb3NlKCl7dGhpcy5faXNEaXNwb3NlZHx8KHRoaXMuX2lzRGlzcG9zZWQ9ITAsdGhpcy5jbGVhcigpKX1nZXQgaXNEaXNwb3NlZCgpe3JldHVybiB0aGlzLl9pc0Rpc3Bvc2VkfWNsZWFyKCl7aWYodGhpcy5fdG9EaXNwb3NlLnNpemUhPT0wKXRyeXtNcyh0aGlzLl90b0Rpc3Bvc2UpfWZpbmFsbHl7dGhpcy5fdG9EaXNwb3NlLmNsZWFyKCl9fWFkZCh0KXtpZighdClyZXR1cm4gdDtpZih0PT09dGhpcyl0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCByZWdpc3RlciBhIGRpc3Bvc2FibGUgb24gaXRzZWxmISIpO3JldHVybiB0aGlzLl9pc0Rpc3Bvc2VkP2tyLkRJU0FCTEVfRElTUE9TRURfV0FSTklOR3x8Y29uc29sZS53YXJuKG5ldyBFcnJvcigiVHJ5aW5nIHRvIGFkZCBhIGRpc3Bvc2FibGUgdG8gYSBEaXNwb3NhYmxlU3RvcmUgdGhhdCBoYXMgYWxyZWFkeSBiZWVuIGRpc3Bvc2VkIG9mLiBUaGUgYWRkZWQgb2JqZWN0IHdpbGwgYmUgbGVha2VkISIpLnN0YWNrKTp0aGlzLl90b0Rpc3Bvc2UuYWRkKHQpLHR9ZGVsZXRlQW5kTGVhayh0KXt0JiZ0aGlzLl90b0Rpc3Bvc2UuaGFzKHQpJiZ0aGlzLl90b0Rpc3Bvc2UuZGVsZXRlKHQpfX07a3IuRElTQUJMRV9ESVNQT1NFRF9XQVJOSU5HPSExO2xldCBzbj1rcjtjb25zdCBGcz1jbGFzcyBGc3tjb25zdHJ1Y3Rvcigpe3RoaXMuX3N0b3JlPW5ldyBzbix0aGlzLl9zdG9yZX1kaXNwb3NlKCl7dGhpcy5fc3RvcmUuZGlzcG9zZSgpfV9yZWdpc3Rlcih0KXtpZih0PT09dGhpcyl0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCByZWdpc3RlciBhIGRpc3Bvc2FibGUgb24gaXRzZWxmISIpO3JldHVybiB0aGlzLl9zdG9yZS5hZGQodCl9fTtGcy5Ob25lPU9iamVjdC5mcmVlemUoe2Rpc3Bvc2UoKXt9fSk7bGV0IEl0PUZzLGFlPShzdD1jbGFzc3tjb25zdHJ1Y3Rvcih0KXt0aGlzLmVsZW1lbnQ9dCx0aGlzLm5leHQ9c3QuVW5kZWZpbmVkLHRoaXMucHJldj1zdC5VbmRlZmluZWR9fSxzdC5VbmRlZmluZWQ9bmV3IHN0KHZvaWQgMCksc3QpO2NsYXNzIG9oe2NvbnN0cnVjdG9yKCl7dGhpcy5fZmlyc3Q9YWUuVW5kZWZpbmVkLHRoaXMuX2xhc3Q9YWUuVW5kZWZpbmVkLHRoaXMuX3NpemU9MH1nZXQgc2l6ZSgpe3JldHVybiB0aGlzLl9zaXplfWlzRW1wdHkoKXtyZXR1cm4gdGhpcy5fZmlyc3Q9PT1hZS5VbmRlZmluZWR9Y2xlYXIoKXtsZXQgdD10aGlzLl9maXJzdDtmb3IoO3QhPT1hZS5VbmRlZmluZWQ7KXtjb25zdCBuPXQubmV4dDt0LnByZXY9YWUuVW5kZWZpbmVkLHQubmV4dD1hZS5VbmRlZmluZWQsdD1ufXRoaXMuX2ZpcnN0PWFlLlVuZGVmaW5lZCx0aGlzLl9sYXN0PWFlLlVuZGVmaW5lZCx0aGlzLl9zaXplPTB9dW5zaGlmdCh0KXtyZXR1cm4gdGhpcy5faW5zZXJ0KHQsITEpfXB1c2godCl7cmV0dXJuIHRoaXMuX2luc2VydCh0LCEwKX1faW5zZXJ0KHQsbil7Y29uc3Qgcj1uZXcgYWUodCk7aWYodGhpcy5fZmlyc3Q9PT1hZS5VbmRlZmluZWQpdGhpcy5fZmlyc3Q9cix0aGlzLl9sYXN0PXI7ZWxzZSBpZihuKXtjb25zdCBzPXRoaXMuX2xhc3Q7dGhpcy5fbGFzdD1yLHIucHJldj1zLHMubmV4dD1yfWVsc2V7Y29uc3Qgcz10aGlzLl9maXJzdDt0aGlzLl9maXJzdD1yLHIubmV4dD1zLHMucHJldj1yfXRoaXMuX3NpemUrPTE7bGV0IGk9ITE7cmV0dXJuKCk9PntpfHwoaT0hMCx0aGlzLl9yZW1vdmUocikpfX1zaGlmdCgpe2lmKHRoaXMuX2ZpcnN0IT09YWUuVW5kZWZpbmVkKXtjb25zdCB0PXRoaXMuX2ZpcnN0LmVsZW1lbnQ7cmV0dXJuIHRoaXMuX3JlbW92ZSh0aGlzLl9maXJzdCksdH19cG9wKCl7aWYodGhpcy5fbGFzdCE9PWFlLlVuZGVmaW5lZCl7Y29uc3QgdD10aGlzLl9sYXN0LmVsZW1lbnQ7cmV0dXJuIHRoaXMuX3JlbW92ZSh0aGlzLl9sYXN0KSx0fX1fcmVtb3ZlKHQpe2lmKHQucHJldiE9PWFlLlVuZGVmaW5lZCYmdC5uZXh0IT09YWUuVW5kZWZpbmVkKXtjb25zdCBuPXQucHJldjtuLm5leHQ9dC5uZXh0LHQubmV4dC5wcmV2PW59ZWxzZSB0LnByZXY9PT1hZS5VbmRlZmluZWQmJnQubmV4dD09PWFlLlVuZGVmaW5lZD8odGhpcy5fZmlyc3Q9YWUuVW5kZWZpbmVkLHRoaXMuX2xhc3Q9YWUuVW5kZWZpbmVkKTp0Lm5leHQ9PT1hZS5VbmRlZmluZWQ/KHRoaXMuX2xhc3Q9dGhpcy5fbGFzdC5wcmV2LHRoaXMuX2xhc3QubmV4dD1hZS5VbmRlZmluZWQpOnQucHJldj09PWFlLlVuZGVmaW5lZCYmKHRoaXMuX2ZpcnN0PXRoaXMuX2ZpcnN0Lm5leHQsdGhpcy5fZmlyc3QucHJldj1hZS5VbmRlZmluZWQpO3RoaXMuX3NpemUtPTF9KltTeW1ib2wuaXRlcmF0b3JdKCl7bGV0IHQ9dGhpcy5fZmlyc3Q7Zm9yKDt0IT09YWUuVW5kZWZpbmVkOyl5aWVsZCB0LmVsZW1lbnQsdD10Lm5leHR9fWNvbnN0IGxoPWdsb2JhbFRoaXMucGVyZm9ybWFuY2UmJnR5cGVvZiBnbG9iYWxUaGlzLnBlcmZvcm1hbmNlLm5vdz09ImZ1bmN0aW9uIjtjbGFzcyBQbntzdGF0aWMgY3JlYXRlKHQpe3JldHVybiBuZXcgUG4odCl9Y29uc3RydWN0b3IodCl7dGhpcy5fbm93PWxoJiZ0PT09ITE/RGF0ZS5ub3c6Z2xvYmFsVGhpcy5wZXJmb3JtYW5jZS5ub3cuYmluZChnbG9iYWxUaGlzLnBlcmZvcm1hbmNlKSx0aGlzLl9zdGFydFRpbWU9dGhpcy5fbm93KCksdGhpcy5fc3RvcFRpbWU9LTF9c3RvcCgpe3RoaXMuX3N0b3BUaW1lPXRoaXMuX25vdygpfXJlc2V0KCl7dGhpcy5fc3RhcnRUaW1lPXRoaXMuX25vdygpLHRoaXMuX3N0b3BUaW1lPS0xfWVsYXBzZWQoKXtyZXR1cm4gdGhpcy5fc3RvcFRpbWUhPT0tMT90aGlzLl9zdG9wVGltZS10aGlzLl9zdGFydFRpbWU6dGhpcy5fbm93KCktdGhpcy5fc3RhcnRUaW1lfX12YXIgTHI7KGZ1bmN0aW9uKGUpe2UuTm9uZT0oKT0+SXQuTm9uZTtmdW5jdGlvbiB0KHcsQyl7cmV0dXJuIHUodywoKT0+e30sMCx2b2lkIDAsITAsdm9pZCAwLEMpfWUuZGVmZXI9dDtmdW5jdGlvbiBuKHcpe3JldHVybihDLEY9bnVsbCxJKT0+e2xldCBMPSExLHo7cmV0dXJuIHo9dyhCPT57aWYoIUwpcmV0dXJuIHo/ei5kaXNwb3NlKCk6TD0hMCxDLmNhbGwoRixCKX0sbnVsbCxJKSxMJiZ6LmRpc3Bvc2UoKSx6fX1lLm9uY2U9bjtmdW5jdGlvbiByKHcsQyxGKXtyZXR1cm4gYygoSSxMPW51bGwseik9PncoQj0+SS5jYWxsKEwsQyhCKSksbnVsbCx6KSxGKX1lLm1hcD1yO2Z1bmN0aW9uIGkodyxDLEYpe3JldHVybiBjKChJLEw9bnVsbCx6KT0+dyhCPT57QyhCKSxJLmNhbGwoTCxCKX0sbnVsbCx6KSxGKX1lLmZvckVhY2g9aTtmdW5jdGlvbiBzKHcsQyxGKXtyZXR1cm4gYygoSSxMPW51bGwseik9PncoQj0+QyhCKSYmSS5jYWxsKEwsQiksbnVsbCx6KSxGKX1lLmZpbHRlcj1zO2Z1bmN0aW9uIGEodyl7cmV0dXJuIHd9ZS5zaWduYWw9YTtmdW5jdGlvbiBsKC4uLncpe3JldHVybihDLEY9bnVsbCxJKT0+e2NvbnN0IEw9YWgoLi4udy5tYXAoej0+eihCPT5DLmNhbGwoRixCKSkpKTtyZXR1cm4gZChMLEkpfX1lLmFueT1sO2Z1bmN0aW9uIG8odyxDLEYsSSl7bGV0IEw9RjtyZXR1cm4gcih3LHo9PihMPUMoTCx6KSxMKSxJKX1lLnJlZHVjZT1vO2Z1bmN0aW9uIGModyxDKXtsZXQgRjtjb25zdCBJPXtvbldpbGxBZGRGaXJzdExpc3RlbmVyKCl7Rj13KEwuZmlyZSxMKX0sb25EaWRSZW1vdmVMYXN0TGlzdGVuZXIoKXtGPy5kaXNwb3NlKCl9fSxMPW5ldyBMZShJKTtyZXR1cm4gQz8uYWRkKEwpLEwuZXZlbnR9ZnVuY3Rpb24gZCh3LEMpe3JldHVybiBDIGluc3RhbmNlb2YgQXJyYXk/Qy5wdXNoKHcpOkMmJkMuYWRkKHcpLHd9ZnVuY3Rpb24gdSh3LEMsRj0xMDAsST0hMSxMPSExLHosQil7bGV0IFkscSx4ZSxubj0wLHZ0O2NvbnN0IFJzPXtsZWFrV2FybmluZ1RocmVzaG9sZDp6LG9uV2lsbEFkZEZpcnN0TGlzdGVuZXIoKXtZPXcocGY9PntubisrLHE9QyhxLHBmKSxJJiYheGUmJihybi5maXJlKHEpLHE9dm9pZCAwKSx2dD0oKT0+e2NvbnN0IG1mPXE7cT12b2lkIDAseGU9dm9pZCAwLCghSXx8bm4+MSkmJnJuLmZpcmUobWYpLG5uPTB9LHR5cGVvZiBGPT0ibnVtYmVyIj8oY2xlYXJUaW1lb3V0KHhlKSx4ZT1zZXRUaW1lb3V0KHZ0LEYpKTp4ZT09PXZvaWQgMCYmKHhlPTAscXVldWVNaWNyb3Rhc2sodnQpKX0pfSxvbldpbGxSZW1vdmVMaXN0ZW5lcigpe0wmJm5uPjAmJnZ0Py4oKX0sb25EaWRSZW1vdmVMYXN0TGlzdGVuZXIoKXt2dD12b2lkIDAsWS5kaXNwb3NlKCl9fSxybj1uZXcgTGUoUnMpO3JldHVybiBCPy5hZGQocm4pLHJuLmV2ZW50fWUuZGVib3VuY2U9dTtmdW5jdGlvbiBmKHcsQz0wLEYpe3JldHVybiBlLmRlYm91bmNlKHcsKEksTCk9Pkk/KEkucHVzaChMKSxJKTpbTF0sQyx2b2lkIDAsITAsdm9pZCAwLEYpfWUuYWNjdW11bGF0ZT1mO2Z1bmN0aW9uIG0odyxDPShJLEwpPT5JPT09TCxGKXtsZXQgST0hMCxMO3JldHVybiBzKHcsej0+e2NvbnN0IEI9SXx8IUMoeixMKTtyZXR1cm4gST0hMSxMPXosQn0sRil9ZS5sYXRjaD1tO2Z1bmN0aW9uIHYodyxDLEYpe3JldHVybltlLmZpbHRlcih3LEMsRiksZS5maWx0ZXIodyxJPT4hQyhJKSxGKV19ZS5zcGxpdD12O2Z1bmN0aW9uIHkodyxDPSExLEY9W10sSSl7bGV0IEw9Ri5zbGljZSgpLHo9dyhxPT57TD9MLnB1c2gocSk6WS5maXJlKHEpfSk7SSYmSS5hZGQoeik7Y29uc3QgQj0oKT0+e0w/LmZvckVhY2gocT0+WS5maXJlKHEpKSxMPW51bGx9LFk9bmV3IExlKHtvbldpbGxBZGRGaXJzdExpc3RlbmVyKCl7enx8KHo9dyhxPT5ZLmZpcmUocSkpLEkmJkkuYWRkKHopKX0sb25EaWRBZGRGaXJzdExpc3RlbmVyKCl7TCYmKEM/c2V0VGltZW91dChCKTpCKCkpfSxvbkRpZFJlbW92ZUxhc3RMaXN0ZW5lcigpe3omJnouZGlzcG9zZSgpLHo9bnVsbH19KTtyZXR1cm4gSSYmSS5hZGQoWSksWS5ldmVudH1lLmJ1ZmZlcj15O2Z1bmN0aW9uIF8odyxDKXtyZXR1cm4oSSxMLHopPT57Y29uc3QgQj1DKG5ldyBEKTtyZXR1cm4gdyhmdW5jdGlvbihZKXtjb25zdCBxPUIuZXZhbHVhdGUoWSk7cSE9PWsmJkkuY2FsbChMLHEpfSx2b2lkIDAseil9fWUuY2hhaW49Xztjb25zdCBrPVN5bWJvbCgiSGFsdENoYWluYWJsZSIpO2NsYXNzIER7Y29uc3RydWN0b3IoKXt0aGlzLnN0ZXBzPVtdfW1hcChDKXtyZXR1cm4gdGhpcy5zdGVwcy5wdXNoKEMpLHRoaXN9Zm9yRWFjaChDKXtyZXR1cm4gdGhpcy5zdGVwcy5wdXNoKEY9PihDKEYpLEYpKSx0aGlzfWZpbHRlcihDKXtyZXR1cm4gdGhpcy5zdGVwcy5wdXNoKEY9PkMoRik/RjprKSx0aGlzfXJlZHVjZShDLEYpe2xldCBJPUY7cmV0dXJuIHRoaXMuc3RlcHMucHVzaChMPT4oST1DKEksTCksSSkpLHRoaXN9bGF0Y2goQz0oRixJKT0+Rj09PUkpe2xldCBGPSEwLEk7cmV0dXJuIHRoaXMuc3RlcHMucHVzaChMPT57Y29uc3Qgej1GfHwhQyhMLEkpO3JldHVybiBGPSExLEk9TCx6P0w6a30pLHRoaXN9ZXZhbHVhdGUoQyl7Zm9yKGNvbnN0IEYgb2YgdGhpcy5zdGVwcylpZihDPUYoQyksQz09PWspYnJlYWs7cmV0dXJuIEN9fWZ1bmN0aW9uIE4odyxDLEY9ST0+SSl7Y29uc3QgST0oLi4uWSk9PkIuZmlyZShGKC4uLlkpKSxMPSgpPT53Lm9uKEMsSSksej0oKT0+dy5yZW1vdmVMaXN0ZW5lcihDLEkpLEI9bmV3IExlKHtvbldpbGxBZGRGaXJzdExpc3RlbmVyOkwsb25EaWRSZW1vdmVMYXN0TGlzdGVuZXI6en0pO3JldHVybiBCLmV2ZW50fWUuZnJvbU5vZGVFdmVudEVtaXR0ZXI9TjtmdW5jdGlvbiBFKHcsQyxGPUk9Pkkpe2NvbnN0IEk9KC4uLlkpPT5CLmZpcmUoRiguLi5ZKSksTD0oKT0+dy5hZGRFdmVudExpc3RlbmVyKEMsSSksej0oKT0+dy5yZW1vdmVFdmVudExpc3RlbmVyKEMsSSksQj1uZXcgTGUoe29uV2lsbEFkZEZpcnN0TGlzdGVuZXI6TCxvbkRpZFJlbW92ZUxhc3RMaXN0ZW5lcjp6fSk7cmV0dXJuIEIuZXZlbnR9ZS5mcm9tRE9NRXZlbnRFbWl0dGVyPUU7ZnVuY3Rpb24gUih3KXtyZXR1cm4gbmV3IFByb21pc2UoQz0+bih3KShDKSl9ZS50b1Byb21pc2U9UjtmdW5jdGlvbiBNKHcpe2NvbnN0IEM9bmV3IExlO3JldHVybiB3LnRoZW4oRj0+e0MuZmlyZShGKX0sKCk9PntDLmZpcmUodm9pZCAwKX0pLmZpbmFsbHkoKCk9PntDLmRpc3Bvc2UoKX0pLEMuZXZlbnR9ZS5mcm9tUHJvbWlzZT1NO2Z1bmN0aW9uIFQodyxDKXtyZXR1cm4gdyhGPT5DLmZpcmUoRikpfWUuZm9yd2FyZD1UO2Z1bmN0aW9uIFAodyxDLEYpe3JldHVybiBDKEYpLHcoST0+QyhJKSl9ZS5ydW5BbmRTdWJzY3JpYmU9UDtjbGFzcyAke2NvbnN0cnVjdG9yKEMsRil7dGhpcy5fb2JzZXJ2YWJsZT1DLHRoaXMuX2NvdW50ZXI9MCx0aGlzLl9oYXNDaGFuZ2VkPSExO2NvbnN0IEk9e29uV2lsbEFkZEZpcnN0TGlzdGVuZXI6KCk9PntDLmFkZE9ic2VydmVyKHRoaXMpfSxvbkRpZFJlbW92ZUxhc3RMaXN0ZW5lcjooKT0+e0MucmVtb3ZlT2JzZXJ2ZXIodGhpcyl9fTt0aGlzLmVtaXR0ZXI9bmV3IExlKEkpLEYmJkYuYWRkKHRoaXMuZW1pdHRlcil9YmVnaW5VcGRhdGUoQyl7dGhpcy5fY291bnRlcisrfWhhbmRsZVBvc3NpYmxlQ2hhbmdlKEMpe31oYW5kbGVDaGFuZ2UoQyxGKXt0aGlzLl9oYXNDaGFuZ2VkPSEwfWVuZFVwZGF0ZShDKXt0aGlzLl9jb3VudGVyLS0sdGhpcy5fY291bnRlcj09PTAmJih0aGlzLl9vYnNlcnZhYmxlLnJlcG9ydENoYW5nZXMoKSx0aGlzLl9oYXNDaGFuZ2VkJiYodGhpcy5faGFzQ2hhbmdlZD0hMSx0aGlzLmVtaXR0ZXIuZmlyZSh0aGlzLl9vYnNlcnZhYmxlLmdldCgpKSkpfX1mdW5jdGlvbiBlZSh3LEMpe3JldHVybiBuZXcgJCh3LEMpLmVtaXR0ZXIuZXZlbnR9ZS5mcm9tT2JzZXJ2YWJsZT1lZTtmdW5jdGlvbiBBKHcpe3JldHVybihDLEYsSSk9PntsZXQgTD0wLHo9ITE7Y29uc3QgQj17YmVnaW5VcGRhdGUoKXtMKyt9LGVuZFVwZGF0ZSgpe0wtLSxMPT09MCYmKHcucmVwb3J0Q2hhbmdlcygpLHomJih6PSExLEMuY2FsbChGKSkpfSxoYW5kbGVQb3NzaWJsZUNoYW5nZSgpe30saGFuZGxlQ2hhbmdlKCl7ej0hMH19O3cuYWRkT2JzZXJ2ZXIoQiksdy5yZXBvcnRDaGFuZ2VzKCk7Y29uc3QgWT17ZGlzcG9zZSgpe3cucmVtb3ZlT2JzZXJ2ZXIoQil9fTtyZXR1cm4gSSBpbnN0YW5jZW9mIHNuP0kuYWRkKFkpOkFycmF5LmlzQXJyYXkoSSkmJkkucHVzaChZKSxZfX1lLmZyb21PYnNlcnZhYmxlTGlnaHQ9QX0pKExyfHwoTHI9e30pKTtjb25zdCBLdD1jbGFzcyBLdHtjb25zdHJ1Y3Rvcih0KXt0aGlzLmxpc3RlbmVyQ291bnQ9MCx0aGlzLmludm9jYXRpb25Db3VudD0wLHRoaXMuZWxhcHNlZE92ZXJhbGw9MCx0aGlzLmR1cmF0aW9ucz1bXSx0aGlzLm5hbWU9YCR7dH1fJHtLdC5faWRQb29sKyt9YCxLdC5hbGwuYWRkKHRoaXMpfXN0YXJ0KHQpe3RoaXMuX3N0b3BXYXRjaD1uZXcgUG4sdGhpcy5saXN0ZW5lckNvdW50PXR9c3RvcCgpe2lmKHRoaXMuX3N0b3BXYXRjaCl7Y29uc3QgdD10aGlzLl9zdG9wV2F0Y2guZWxhcHNlZCgpO3RoaXMuZHVyYXRpb25zLnB1c2godCksdGhpcy5lbGFwc2VkT3ZlcmFsbCs9dCx0aGlzLmludm9jYXRpb25Db3VudCs9MSx0aGlzLl9zdG9wV2F0Y2g9dm9pZCAwfX19O0t0LmFsbD1uZXcgU2V0LEt0Ll9pZFBvb2w9MDtsZXQgenI9S3QsY2g9LTE7Y29uc3QgRXI9Y2xhc3MgRXJ7Y29uc3RydWN0b3IodCxuLHI9KEVyLl9pZFBvb2wrKykudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDMsIjAiKSl7dGhpcy5fZXJyb3JIYW5kbGVyPXQsdGhpcy50aHJlc2hvbGQ9bix0aGlzLm5hbWU9cix0aGlzLl93YXJuQ291bnRkb3duPTB9ZGlzcG9zZSgpe3RoaXMuX3N0YWNrcz8uY2xlYXIoKX1jaGVjayh0LG4pe2NvbnN0IHI9dGhpcy50aHJlc2hvbGQ7aWYocjw9MHx8bjxyKXJldHVybjt0aGlzLl9zdGFja3N8fCh0aGlzLl9zdGFja3M9bmV3IE1hcCk7Y29uc3QgaT10aGlzLl9zdGFja3MuZ2V0KHQudmFsdWUpfHwwO2lmKHRoaXMuX3N0YWNrcy5zZXQodC52YWx1ZSxpKzEpLHRoaXMuX3dhcm5Db3VudGRvd24tPTEsdGhpcy5fd2FybkNvdW50ZG93bjw9MCl7dGhpcy5fd2FybkNvdW50ZG93bj1yKi41O2NvbnN0W3MsYV09dGhpcy5nZXRNb3N0RnJlcXVlbnRTdGFjaygpLGw9YFske3RoaXMubmFtZX1dIHBvdGVudGlhbCBsaXN0ZW5lciBMRUFLIGRldGVjdGVkLCBoYXZpbmcgJHtufSBsaXN0ZW5lcnMgYWxyZWFkeS4gTU9TVCBmcmVxdWVudCBsaXN0ZW5lciAoJHthfSk6YDtjb25zb2xlLndhcm4obCksY29uc29sZS53YXJuKHMpO2NvbnN0IG89bmV3IGhoKGwscyk7dGhpcy5fZXJyb3JIYW5kbGVyKG8pfXJldHVybigpPT57Y29uc3Qgcz10aGlzLl9zdGFja3MuZ2V0KHQudmFsdWUpfHwwO3RoaXMuX3N0YWNrcy5zZXQodC52YWx1ZSxzLTEpfX1nZXRNb3N0RnJlcXVlbnRTdGFjaygpe2lmKCF0aGlzLl9zdGFja3MpcmV0dXJuO2xldCB0LG49MDtmb3IoY29uc3RbcixpXW9mIHRoaXMuX3N0YWNrcykoIXR8fG48aSkmJih0PVtyLGldLG49aSk7cmV0dXJuIHR9fTtFci5faWRQb29sPTE7bGV0IFByPUVyO2NsYXNzIFRye3N0YXRpYyBjcmVhdGUoKXtjb25zdCB0PW5ldyBFcnJvcjtyZXR1cm4gbmV3IFRyKHQuc3RhY2s/PyIiKX1jb25zdHJ1Y3Rvcih0KXt0aGlzLnZhbHVlPXR9cHJpbnQoKXtjb25zb2xlLndhcm4odGhpcy52YWx1ZS5zcGxpdChgCmApLnNsaWNlKDIpLmpvaW4oYApgKSl9fWNsYXNzIGhoIGV4dGVuZHMgRXJyb3J7Y29uc3RydWN0b3IodCxuKXtzdXBlcih0KSx0aGlzLm5hbWU9Ikxpc3RlbmVyTGVha0Vycm9yIix0aGlzLnN0YWNrPW59fWNsYXNzIGRoIGV4dGVuZHMgRXJyb3J7Y29uc3RydWN0b3IodCxuKXtzdXBlcih0KSx0aGlzLm5hbWU9Ikxpc3RlbmVyUmVmdXNhbEVycm9yIix0aGlzLnN0YWNrPW59fWNsYXNzIE9ye2NvbnN0cnVjdG9yKHQpe3RoaXMudmFsdWU9dH19Y29uc3QgdWg9MjtjbGFzcyBMZXtjb25zdHJ1Y3Rvcih0KXt0aGlzLl9zaXplPTAsdGhpcy5fb3B0aW9ucz10LHRoaXMuX2xlYWthZ2VNb249dGhpcy5fb3B0aW9ucz8ubGVha1dhcm5pbmdUaHJlc2hvbGQ/bmV3IFByKHQ/Lm9uTGlzdGVuZXJFcnJvcj8/R2UsdGhpcy5fb3B0aW9ucz8ubGVha1dhcm5pbmdUaHJlc2hvbGQ/P2NoKTp2b2lkIDAsdGhpcy5fcGVyZk1vbj10aGlzLl9vcHRpb25zPy5fcHJvZk5hbWU/bmV3IHpyKHRoaXMuX29wdGlvbnMuX3Byb2ZOYW1lKTp2b2lkIDAsdGhpcy5fZGVsaXZlcnlRdWV1ZT10aGlzLl9vcHRpb25zPy5kZWxpdmVyeVF1ZXVlfWRpc3Bvc2UoKXt0aGlzLl9kaXNwb3NlZHx8KHRoaXMuX2Rpc3Bvc2VkPSEwLHRoaXMuX2RlbGl2ZXJ5UXVldWU/LmN1cnJlbnQ9PT10aGlzJiZ0aGlzLl9kZWxpdmVyeVF1ZXVlLnJlc2V0KCksdGhpcy5fbGlzdGVuZXJzJiYodGhpcy5fbGlzdGVuZXJzPXZvaWQgMCx0aGlzLl9zaXplPTApLHRoaXMuX29wdGlvbnM/Lm9uRGlkUmVtb3ZlTGFzdExpc3RlbmVyPy4oKSx0aGlzLl9sZWFrYWdlTW9uPy5kaXNwb3NlKCkpfWdldCBldmVudCgpe3JldHVybiB0aGlzLl9ldmVudD8/KHRoaXMuX2V2ZW50PSh0LG4scik9PntpZih0aGlzLl9sZWFrYWdlTW9uJiZ0aGlzLl9zaXplPnRoaXMuX2xlYWthZ2VNb24udGhyZXNob2xkKioyKXtjb25zdCBsPWBbJHt0aGlzLl9sZWFrYWdlTW9uLm5hbWV9XSBSRUZVU0VTIHRvIGFjY2VwdCBuZXcgbGlzdGVuZXJzIGJlY2F1c2UgaXQgZXhjZWVkZWQgaXRzIHRocmVzaG9sZCBieSBmYXIgKCR7dGhpcy5fc2l6ZX0gdnMgJHt0aGlzLl9sZWFrYWdlTW9uLnRocmVzaG9sZH0pYDtjb25zb2xlLndhcm4obCk7Y29uc3Qgbz10aGlzLl9sZWFrYWdlTW9uLmdldE1vc3RGcmVxdWVudFN0YWNrKCk/P1siVU5LTk9XTiBzdGFjayIsLTFdLGM9bmV3IGRoKGAke2x9LiBISU5UOiBTdGFjayBzaG93cyBtb3N0IGZyZXF1ZW50IGxpc3RlbmVyICgke29bMV19LXRpbWVzKWAsb1swXSk7cmV0dXJuKHRoaXMuX29wdGlvbnM/Lm9uTGlzdGVuZXJFcnJvcnx8R2UpKGMpLEl0Lk5vbmV9aWYodGhpcy5fZGlzcG9zZWQpcmV0dXJuIEl0Lk5vbmU7biYmKHQ9dC5iaW5kKG4pKTtjb25zdCBpPW5ldyBPcih0KTtsZXQgczt0aGlzLl9sZWFrYWdlTW9uJiZ0aGlzLl9zaXplPj1NYXRoLmNlaWwodGhpcy5fbGVha2FnZU1vbi50aHJlc2hvbGQqLjIpJiYoaS5zdGFjaz1Uci5jcmVhdGUoKSxzPXRoaXMuX2xlYWthZ2VNb24uY2hlY2soaS5zdGFjayx0aGlzLl9zaXplKzEpKSx0aGlzLl9saXN0ZW5lcnM/dGhpcy5fbGlzdGVuZXJzIGluc3RhbmNlb2YgT3I/KHRoaXMuX2RlbGl2ZXJ5UXVldWU/Pyh0aGlzLl9kZWxpdmVyeVF1ZXVlPW5ldyBwaCksdGhpcy5fbGlzdGVuZXJzPVt0aGlzLl9saXN0ZW5lcnMsaV0pOnRoaXMuX2xpc3RlbmVycy5wdXNoKGkpOih0aGlzLl9vcHRpb25zPy5vbldpbGxBZGRGaXJzdExpc3RlbmVyPy4odGhpcyksdGhpcy5fbGlzdGVuZXJzPWksdGhpcy5fb3B0aW9ucz8ub25EaWRBZGRGaXJzdExpc3RlbmVyPy4odGhpcykpLHRoaXMuX3NpemUrKztjb25zdCBhPXpuKCgpPT57cz8uKCksdGhpcy5fcmVtb3ZlTGlzdGVuZXIoaSl9KTtyZXR1cm4gciBpbnN0YW5jZW9mIHNuP3IuYWRkKGEpOkFycmF5LmlzQXJyYXkocikmJnIucHVzaChhKSxhfSksdGhpcy5fZXZlbnR9X3JlbW92ZUxpc3RlbmVyKHQpe2lmKHRoaXMuX29wdGlvbnM/Lm9uV2lsbFJlbW92ZUxpc3RlbmVyPy4odGhpcyksIXRoaXMuX2xpc3RlbmVycylyZXR1cm47aWYodGhpcy5fc2l6ZT09PTEpe3RoaXMuX2xpc3RlbmVycz12b2lkIDAsdGhpcy5fb3B0aW9ucz8ub25EaWRSZW1vdmVMYXN0TGlzdGVuZXI/Lih0aGlzKSx0aGlzLl9zaXplPTA7cmV0dXJufWNvbnN0IG49dGhpcy5fbGlzdGVuZXJzLHI9bi5pbmRleE9mKHQpO2lmKHI9PT0tMSl0aHJvdyBjb25zb2xlLmxvZygiZGlzcG9zZWQ/Iix0aGlzLl9kaXNwb3NlZCksY29uc29sZS5sb2coInNpemU/Iix0aGlzLl9zaXplKSxjb25zb2xlLmxvZygiYXJyPyIsSlNPTi5zdHJpbmdpZnkodGhpcy5fbGlzdGVuZXJzKSksbmV3IEVycm9yKCJBdHRlbXB0ZWQgdG8gZGlzcG9zZSB1bmtub3duIGxpc3RlbmVyIik7dGhpcy5fc2l6ZS0tLG5bcl09dm9pZCAwO2NvbnN0IGk9dGhpcy5fZGVsaXZlcnlRdWV1ZS5jdXJyZW50PT09dGhpcztpZih0aGlzLl9zaXplKnVoPD1uLmxlbmd0aCl7bGV0IHM9MDtmb3IobGV0IGE9MDthPG4ubGVuZ3RoO2ErKyluW2FdP25bcysrXT1uW2FdOmkmJih0aGlzLl9kZWxpdmVyeVF1ZXVlLmVuZC0tLHM8dGhpcy5fZGVsaXZlcnlRdWV1ZS5pJiZ0aGlzLl9kZWxpdmVyeVF1ZXVlLmktLSk7bi5sZW5ndGg9c319X2RlbGl2ZXIodCxuKXtpZighdClyZXR1cm47Y29uc3Qgcj10aGlzLl9vcHRpb25zPy5vbkxpc3RlbmVyRXJyb3J8fEdlO2lmKCFyKXt0LnZhbHVlKG4pO3JldHVybn10cnl7dC52YWx1ZShuKX1jYXRjaChpKXtyKGkpfX1fZGVsaXZlclF1ZXVlKHQpe2NvbnN0IG49dC5jdXJyZW50Ll9saXN0ZW5lcnM7Zm9yKDt0Lmk8dC5lbmQ7KXRoaXMuX2RlbGl2ZXIoblt0LmkrK10sdC52YWx1ZSk7dC5yZXNldCgpfWZpcmUodCl7aWYodGhpcy5fZGVsaXZlcnlRdWV1ZT8uY3VycmVudCYmKHRoaXMuX2RlbGl2ZXJRdWV1ZSh0aGlzLl9kZWxpdmVyeVF1ZXVlKSx0aGlzLl9wZXJmTW9uPy5zdG9wKCkpLHRoaXMuX3BlcmZNb24/LnN0YXJ0KHRoaXMuX3NpemUpLHRoaXMuX2xpc3RlbmVycylpZih0aGlzLl9saXN0ZW5lcnMgaW5zdGFuY2VvZiBPcil0aGlzLl9kZWxpdmVyKHRoaXMuX2xpc3RlbmVycyx0KTtlbHNle2NvbnN0IG49dGhpcy5fZGVsaXZlcnlRdWV1ZTtuLmVucXVldWUodGhpcyx0LHRoaXMuX2xpc3RlbmVycy5sZW5ndGgpLHRoaXMuX2RlbGl2ZXJRdWV1ZShuKX10aGlzLl9wZXJmTW9uPy5zdG9wKCl9aGFzTGlzdGVuZXJzKCl7cmV0dXJuIHRoaXMuX3NpemU+MH19Y2xhc3MgcGh7Y29uc3RydWN0b3IoKXt0aGlzLmk9LTEsdGhpcy5lbmQ9MH1lbnF1ZXVlKHQsbixyKXt0aGlzLmk9MCx0aGlzLmVuZD1yLHRoaXMuY3VycmVudD10LHRoaXMudmFsdWU9bn1yZXNldCgpe3RoaXMuaT10aGlzLmVuZCx0aGlzLmN1cnJlbnQ9dm9pZCAwLHRoaXMudmFsdWU9dm9pZCAwfX1mdW5jdGlvbiBtaChlKXtyZXR1cm4gdHlwZW9mIGU9PSJzdHJpbmcifWZ1bmN0aW9uIGZoKGUpe2xldCB0PVtdO2Zvcig7T2JqZWN0LnByb3RvdHlwZSE9PWU7KXQ9dC5jb25jYXQoT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoZSkpLGU9T2JqZWN0LmdldFByb3RvdHlwZU9mKGUpO3JldHVybiB0fWZ1bmN0aW9uIFdyKGUpe2NvbnN0IHQ9W107Zm9yKGNvbnN0IG4gb2YgZmgoZSkpdHlwZW9mIGVbbl09PSJmdW5jdGlvbiImJnQucHVzaChuKTtyZXR1cm4gdH1mdW5jdGlvbiBnaChlLHQpe2NvbnN0IG49aT0+ZnVuY3Rpb24oKXtjb25zdCBzPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywwKTtyZXR1cm4gdChpLHMpfSxyPXt9O2Zvcihjb25zdCBpIG9mIGUpcltpXT1uKGkpO3JldHVybiByfWZ1bmN0aW9uIGJoKCl7cmV0dXJuIGdsb2JhbFRoaXMuX1ZTQ09ERV9OTFNfTUVTU0FHRVN9ZnVuY3Rpb24gTHMoKXtyZXR1cm4gZ2xvYmFsVGhpcy5fVlNDT0RFX05MU19MQU5HVUFHRX1jb25zdCB2aD1McygpPT09InBzZXVkbyJ8fHR5cGVvZiBkb2N1bWVudDwidSImJmRvY3VtZW50LmxvY2F0aW9uJiZkb2N1bWVudC5sb2NhdGlvbi5oYXNoLmluZGV4T2YoInBzZXVkbz10cnVlIik+PTA7ZnVuY3Rpb24genMoZSx0KXtsZXQgbjtyZXR1cm4gdC5sZW5ndGg9PT0wP249ZTpuPWUucmVwbGFjZSgvXHsoXGQrKVx9L2csKHIsaSk9Pntjb25zdCBzPWlbMF0sYT10W3NdO2xldCBsPXI7cmV0dXJuIHR5cGVvZiBhPT0ic3RyaW5nIj9sPWE6KHR5cGVvZiBhPT0ibnVtYmVyInx8dHlwZW9mIGE9PSJib29sZWFuInx8YT09PXZvaWQgMHx8YT09PW51bGwpJiYobD1TdHJpbmcoYSkpLGx9KSx2aCYmKG49Iu+8uyIrbi5yZXBsYWNlKC9bYW91ZWldL2csIiQmJCYiKSsi77y9Iiksbn1mdW5jdGlvbiByZShlLHQsLi4ubil7cmV0dXJuIHpzKHR5cGVvZiBlPT0ibnVtYmVyIj93aChlLHQpOnQsbil9ZnVuY3Rpb24gd2goZSx0KXtjb25zdCBuPWJoKCk/LltlXTtpZih0eXBlb2YgbiE9InN0cmluZyIpe2lmKHR5cGVvZiB0PT0ic3RyaW5nIilyZXR1cm4gdDt0aHJvdyBuZXcgRXJyb3IoYCEhISBOTFMgTUlTU0lORzogJHtlfSAhISFgKX1yZXR1cm4gbn1jb25zdCBBdD0iZW4iO2xldCBWcj0hMSxVcj0hMSwkcj0hMSxUbixCcj1BdCxQcz1BdCx5aCxKZTtjb25zdCB4dD1nbG9iYWxUaGlzO2xldCBrZTt0eXBlb2YgeHQudnNjb2RlPCJ1IiYmdHlwZW9mIHh0LnZzY29kZS5wcm9jZXNzPCJ1Ij9rZT14dC52c2NvZGUucHJvY2Vzczp0eXBlb2YgcHJvY2VzczwidSImJnR5cGVvZiBwcm9jZXNzPy52ZXJzaW9ucz8ubm9kZT09InN0cmluZyImJihrZT1wcm9jZXNzKTtjb25zdCB4aD10eXBlb2Yga2U/LnZlcnNpb25zPy5lbGVjdHJvbj09InN0cmluZyImJmtlPy50eXBlPT09InJlbmRlcmVyIjtpZih0eXBlb2Yga2U9PSJvYmplY3QiKXtWcj1rZS5wbGF0Zm9ybT09PSJ3aW4zMiIsVXI9a2UucGxhdGZvcm09PT0iZGFyd2luIiwkcj1rZS5wbGF0Zm9ybT09PSJsaW51eCIsJHImJmtlLmVudi5TTkFQJiZrZS5lbnYuU05BUF9SRVZJU0lPTixrZS5lbnYuQ0l8fGtlLmVudi5CVUlMRF9BUlRJRkFDVFNUQUdJTkdESVJFQ1RPUlksVG49QXQsQnI9QXQ7Y29uc3QgZT1rZS5lbnYuVlNDT0RFX05MU19DT05GSUc7aWYoZSl0cnl7Y29uc3QgdD1KU09OLnBhcnNlKGUpO1RuPXQudXNlckxvY2FsZSxQcz10Lm9zTG9jYWxlLEJyPXQucmVzb2x2ZWRMYW5ndWFnZXx8QXQseWg9dC5sYW5ndWFnZVBhY2s/LnRyYW5zbGF0aW9uc0NvbmZpZ0ZpbGV9Y2F0Y2h7fX1lbHNlIHR5cGVvZiBuYXZpZ2F0b3I9PSJvYmplY3QiJiYheGg/KEplPW5hdmlnYXRvci51c2VyQWdlbnQsVnI9SmUuaW5kZXhPZigiV2luZG93cyIpPj0wLFVyPUplLmluZGV4T2YoIk1hY2ludG9zaCIpPj0wLChKZS5pbmRleE9mKCJNYWNpbnRvc2giKT49MHx8SmUuaW5kZXhPZigiaVBhZCIpPj0wfHxKZS5pbmRleE9mKCJpUGhvbmUiKT49MCkmJm5hdmlnYXRvci5tYXhUb3VjaFBvaW50cyYmbmF2aWdhdG9yLm1heFRvdWNoUG9pbnRzPjAsJHI9SmUuaW5kZXhPZigiTGludXgiKT49MCxKZT8uaW5kZXhPZigiTW9iaSIpPj0wLEJyPUxzKCl8fEF0LFRuPW5hdmlnYXRvci5sYW5ndWFnZS50b0xvd2VyQ2FzZSgpLFBzPVRuKTpjb25zb2xlLmVycm9yKCJVbmFibGUgdG8gcmVzb2x2ZSBwbGF0Zm9ybS4iKTtjb25zdCBhbj1WcixTaD1VcixPZT1KZSxDaD10eXBlb2YgeHQucG9zdE1lc3NhZ2U9PSJmdW5jdGlvbiImJiF4dC5pbXBvcnRTY3JpcHRzOygoKT0+e2lmKENoKXtjb25zdCBlPVtdO3h0LmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLG49PntpZihuLmRhdGEmJm4uZGF0YS52c2NvZGVTY2hlZHVsZUFzeW5jV29yaylmb3IobGV0IHI9MCxpPWUubGVuZ3RoO3I8aTtyKyspe2NvbnN0IHM9ZVtyXTtpZihzLmlkPT09bi5kYXRhLnZzY29kZVNjaGVkdWxlQXN5bmNXb3JrKXtlLnNwbGljZShyLDEpLHMuY2FsbGJhY2soKTtyZXR1cm59fX0pO2xldCB0PTA7cmV0dXJuIG49Pntjb25zdCByPSsrdDtlLnB1c2goe2lkOnIsY2FsbGJhY2s6bn0pLHh0LnBvc3RNZXNzYWdlKHt2c2NvZGVTY2hlZHVsZUFzeW5jV29yazpyfSwiKiIpfX1yZXR1cm4gZT0+c2V0VGltZW91dChlKX0pKCk7Y29uc3QgX2g9ISEoT2UmJk9lLmluZGV4T2YoIkNocm9tZSIpPj0wKTtPZSYmT2UuaW5kZXhPZigiRmlyZWZveCIpPj0wLCFfaCYmT2UmJk9lLmluZGV4T2YoIlNhZmFyaSIpPj0wLE9lJiZPZS5pbmRleE9mKCJFZGcvIik+PTAsT2UmJk9lLmluZGV4T2YoIkFuZHJvaWQiKT49MDtmdW5jdGlvbiBraChlKXtyZXR1cm4gZX1jbGFzcyBFaHtjb25zdHJ1Y3Rvcih0LG4pe3RoaXMubGFzdENhY2hlPXZvaWQgMCx0aGlzLmxhc3RBcmdLZXk9dm9pZCAwLHR5cGVvZiB0PT0iZnVuY3Rpb24iPyh0aGlzLl9mbj10LHRoaXMuX2NvbXB1dGVLZXk9a2gpOih0aGlzLl9mbj1uLHRoaXMuX2NvbXB1dGVLZXk9dC5nZXRDYWNoZUtleSl9Z2V0KHQpe2NvbnN0IG49dGhpcy5fY29tcHV0ZUtleSh0KTtyZXR1cm4gdGhpcy5sYXN0QXJnS2V5IT09biYmKHRoaXMubGFzdEFyZ0tleT1uLHRoaXMubGFzdENhY2hlPXRoaXMuX2ZuKHQpKSx0aGlzLmxhc3RDYWNoZX19Y2xhc3MgVHN7Y29uc3RydWN0b3IodCl7dGhpcy5leGVjdXRvcj10LHRoaXMuX2RpZFJ1bj0hMX1nZXQgdmFsdWUoKXtpZighdGhpcy5fZGlkUnVuKXRyeXt0aGlzLl92YWx1ZT10aGlzLmV4ZWN1dG9yKCl9Y2F0Y2godCl7dGhpcy5fZXJyb3I9dH1maW5hbGx5e3RoaXMuX2RpZFJ1bj0hMH1pZih0aGlzLl9lcnJvcil0aHJvdyB0aGlzLl9lcnJvcjtyZXR1cm4gdGhpcy5fdmFsdWV9Z2V0IHJhd1ZhbHVlKCl7cmV0dXJuIHRoaXMuX3ZhbHVlfX1mdW5jdGlvbiBGaChlKXtyZXR1cm4gZS5yZXBsYWNlKC9bXFxce1x9XCpcK1w/XHxcXlwkXC5cW1xdXChcKV0vZywiXFwkJiIpfWZ1bmN0aW9uIFJoKGUpe3JldHVybiBlLnNwbGl0KC9cclxufFxyfFxuLyl9ZnVuY3Rpb24gTmgoZSl7Zm9yKGxldCB0PTAsbj1lLmxlbmd0aDt0PG47dCsrKXtjb25zdCByPWUuY2hhckNvZGVBdCh0KTtpZihyIT09MzImJnIhPT05KXJldHVybiB0fXJldHVybi0xfWZ1bmN0aW9uIERoKGUsdD1lLmxlbmd0aC0xKXtmb3IobGV0IG49dDtuPj0wO24tLSl7Y29uc3Qgcj1lLmNoYXJDb2RlQXQobik7aWYociE9PTMyJiZyIT09OSlyZXR1cm4gbn1yZXR1cm4tMX1mdW5jdGlvbiBPcyhlKXtyZXR1cm4gZT49NjUmJmU8PTkwfWZ1bmN0aW9uIE9uKGUpe3JldHVybiA1NTI5Njw9ZSYmZTw9NTYzMTl9ZnVuY3Rpb24gcXIoZSl7cmV0dXJuIDU2MzIwPD1lJiZlPD01NzM0M31mdW5jdGlvbiBXcyhlLHQpe3JldHVybihlLTU1Mjk2PDwxMCkrKHQtNTYzMjApKzY1NTM2fWZ1bmN0aW9uIEloKGUsdCxuKXtjb25zdCByPWUuY2hhckNvZGVBdChuKTtpZihPbihyKSYmbisxPHQpe2NvbnN0IGk9ZS5jaGFyQ29kZUF0KG4rMSk7aWYocXIoaSkpcmV0dXJuIFdzKHIsaSl9cmV0dXJuIHJ9Y29uc3QgQWg9L15bXHRcblxyXHgyMC1ceDdFXSokLztmdW5jdGlvbiBNaChlKXtyZXR1cm4gQWgudGVzdChlKX1jb25zdCBxZT1jbGFzcyBxZXtzdGF0aWMgZ2V0SW5zdGFuY2UodCl7cmV0dXJuIHFlLmNhY2hlLmdldChBcnJheS5mcm9tKHQpKX1zdGF0aWMgZ2V0TG9jYWxlcygpe3JldHVybiBxZS5fbG9jYWxlcy52YWx1ZX1jb25zdHJ1Y3Rvcih0KXt0aGlzLmNvbmZ1c2FibGVEaWN0aW9uYXJ5PXR9aXNBbWJpZ3VvdXModCl7cmV0dXJuIHRoaXMuY29uZnVzYWJsZURpY3Rpb25hcnkuaGFzKHQpfWdldFByaW1hcnlDb25mdXNhYmxlKHQpe3JldHVybiB0aGlzLmNvbmZ1c2FibGVEaWN0aW9uYXJ5LmdldCh0KX1nZXRDb25mdXNhYmxlQ29kZVBvaW50cygpe3JldHVybiBuZXcgU2V0KHRoaXMuY29uZnVzYWJsZURpY3Rpb25hcnkua2V5cygpKX19O3FlLmFtYmlndW91c0NoYXJhY3RlckRhdGE9bmV3IFRzKCgpPT5KU09OLnBhcnNlKCd7Il9jb21tb24iOls4MjMyLDMyLDgyMzMsMzIsNTc2MCwzMiw4MTkyLDMyLDgxOTMsMzIsODE5NCwzMiw4MTk1LDMyLDgxOTYsMzIsODE5NywzMiw4MTk4LDMyLDgyMDAsMzIsODIwMSwzMiw4MjAyLDMyLDgyODcsMzIsODE5OSwzMiw4MjM5LDMyLDIwNDIsOTUsNjUxMDEsOTUsNjUxMDIsOTUsNjUxMDMsOTUsODIwOCw0NSw4MjA5LDQ1LDgyMTAsNDUsNjUxMTIsNDUsMTc0OCw0NSw4MjU5LDQ1LDcyNyw0NSw4NzIyLDQ1LDEwMTM0LDQ1LDExNDUwLDQ1LDE1NDksNDQsMTY0Myw0NCw4MjE4LDQ0LDE4NCw0NCw0MjIzMyw0NCw4OTQsNTksMjMwNyw1OCwyNjkxLDU4LDE0MTcsNTgsMTc5NSw1OCwxNzk2LDU4LDU4NjgsNTgsNjUwNzIsNTgsNjE0Nyw1OCw2MTUzLDU4LDgyODIsNTgsMTQ3NSw1OCw3NjAsNTgsNDI4ODksNTgsODc1OCw1OCw3MjAsNTgsNDIyMzcsNTgsNDUxLDMzLDExNjAxLDMzLDY2MCw2Myw1NzcsNjMsMjQyOSw2Myw1MDM4LDYzLDQyNzMxLDYzLDExOTE0OSw0Niw4MjI4LDQ2LDE3OTMsNDYsMTc5NCw0Niw0MjUxMCw0Niw2ODE3Niw0NiwxNjMyLDQ2LDE3NzYsNDYsNDIyMzIsNDYsMTM3Myw5Niw2NTI4Nyw5Niw4MjE5LDk2LDgyNDIsOTYsMTM3MCw5NiwxNTIzLDk2LDgxNzUsOTYsNjUzNDQsOTYsOTAwLDk2LDgxODksOTYsODEyNSw5Niw4MTI3LDk2LDgxOTAsOTYsNjk3LDk2LDg4NCw5Niw3MTIsOTYsNzE0LDk2LDcxNSw5Niw3NTYsOTYsNjk5LDk2LDcwMSw5Niw3MDAsOTYsNzAyLDk2LDQyODkyLDk2LDE0OTcsOTYsMjAzNiw5NiwyMDM3LDk2LDUxOTQsOTYsNTgzNiw5Niw5NDAzMyw5Niw5NDAzNCw5Niw2NTMzOSw5MSwxMDA4OCw0MCwxMDA5OCw0MCwxMjMwOCw0MCw2NDgzMCw0MCw2NTM0MSw5MywxMDA4OSw0MSwxMDA5OSw0MSwxMjMwOSw0MSw2NDgzMSw0MSwxMDEwMCwxMjMsMTE5MDYwLDEyMywxMDEwMSwxMjUsNjUzNDIsOTQsODI3MCw0MiwxNjQ1LDQyLDg3MjcsNDIsNjYzMzUsNDIsNTk0MSw0Nyw4MjU3LDQ3LDg3MjUsNDcsODI2MCw0Nyw5NTg1LDQ3LDEwMTg3LDQ3LDEwNzQ0LDQ3LDExOTM1NCw0NywxMjc1NSw0NywxMjMzOSw0NywxMTQ2Miw0NywyMDAzMSw0NywxMjAzNSw0Nyw2NTM0MCw5Miw2NTEyOCw5Miw4NzI2LDkyLDEwMTg5LDkyLDEwNzQxLDkyLDEwNzQ1LDkyLDExOTMxMSw5MiwxMTkzNTUsOTIsMTI3NTYsOTIsMjAwMjIsOTIsMTIwMzQsOTIsNDI4NzIsMzgsNzA4LDk0LDcxMCw5NCw1ODY5LDQzLDEwMTMzLDQzLDY2MjAzLDQzLDgyNDksNjAsMTAwOTQsNjAsNzA2LDYwLDExOTM1MCw2MCw1MTc2LDYwLDU4MTAsNjAsNTEyMCw2MSwxMTg0MCw2MSwxMjQ0OCw2MSw0MjIzOSw2MSw4MjUwLDYyLDEwMDk1LDYyLDcwNyw2MiwxMTkzNTEsNjIsNTE3MSw2Miw5NDAxNSw2Miw4Mjc1LDEyNiw3MzIsMTI2LDgxMjgsMTI2LDg3NjQsMTI2LDY1MzcyLDEyNCw2NTI5Myw0NSwxMjA3ODQsNTAsMTIwNzk0LDUwLDEyMDgwNCw1MCwxMjA4MTQsNTAsMTIwODI0LDUwLDEzMDAzNCw1MCw0Mjg0Miw1MCw0MjMsNTAsMTAwMCw1MCw0MjU2NCw1MCw1MzExLDUwLDQyNzM1LDUwLDExOTMwMiw1MSwxMjA3ODUsNTEsMTIwNzk1LDUxLDEyMDgwNSw1MSwxMjA4MTUsNTEsMTIwODI1LDUxLDEzMDAzNSw1MSw0MjkyMyw1MSw1NDAsNTEsNDM5LDUxLDQyODU4LDUxLDExNDY4LDUxLDEyNDgsNTEsOTQwMTEsNTEsNzE4ODIsNTEsMTIwNzg2LDUyLDEyMDc5Niw1MiwxMjA4MDYsNTIsMTIwODE2LDUyLDEyMDgyNiw1MiwxMzAwMzYsNTIsNTA3MCw1Miw3MTg1NSw1MiwxMjA3ODcsNTMsMTIwNzk3LDUzLDEyMDgwNyw1MywxMjA4MTcsNTMsMTIwODI3LDUzLDEzMDAzNyw1Myw0NDQsNTMsNzE4NjcsNTMsMTIwNzg4LDU0LDEyMDc5OCw1NCwxMjA4MDgsNTQsMTIwODE4LDU0LDEyMDgyOCw1NCwxMzAwMzgsNTQsMTE0NzQsNTQsNTEwMiw1NCw3MTg5Myw1NCwxMTkzMTQsNTUsMTIwNzg5LDU1LDEyMDc5OSw1NSwxMjA4MDksNTUsMTIwODE5LDU1LDEyMDgyOSw1NSwxMzAwMzksNTUsNjY3NzAsNTUsNzE4NzgsNTUsMjgxOSw1NiwyNTM4LDU2LDI2NjYsNTYsMTI1MTMxLDU2LDEyMDc5MCw1NiwxMjA4MDAsNTYsMTIwODEwLDU2LDEyMDgyMCw1NiwxMjA4MzAsNTYsMTMwMDQwLDU2LDU0Nyw1Niw1NDYsNTYsNjYzMzAsNTYsMjY2Myw1NywyOTIwLDU3LDI1NDEsNTcsMzQzNyw1NywxMjA3OTEsNTcsMTIwODAxLDU3LDEyMDgxMSw1NywxMjA4MjEsNTcsMTIwODMxLDU3LDEzMDA0MSw1Nyw0Mjg2Miw1NywxMTQ2Niw1Nyw3MTg4NCw1Nyw3MTg1Miw1Nyw3MTg5NCw1Nyw5MDgyLDk3LDY1MzQ1LDk3LDExOTgzNCw5NywxMTk4ODYsOTcsMTE5OTM4LDk3LDExOTk5MCw5NywxMjAwNDIsOTcsMTIwMDk0LDk3LDEyMDE0Niw5NywxMjAxOTgsOTcsMTIwMjUwLDk3LDEyMDMwMiw5NywxMjAzNTQsOTcsMTIwNDA2LDk3LDEyMDQ1OCw5Nyw1OTMsOTcsOTQ1LDk3LDEyMDUxNCw5NywxMjA1NzIsOTcsMTIwNjMwLDk3LDEyMDY4OCw5NywxMjA3NDYsOTcsNjUzMTMsNjUsMTE5ODA4LDY1LDExOTg2MCw2NSwxMTk5MTIsNjUsMTE5OTY0LDY1LDEyMDAxNiw2NSwxMjAwNjgsNjUsMTIwMTIwLDY1LDEyMDE3Miw2NSwxMjAyMjQsNjUsMTIwMjc2LDY1LDEyMDMyOCw2NSwxMjAzODAsNjUsMTIwNDMyLDY1LDkxMyw2NSwxMjA0ODgsNjUsMTIwNTQ2LDY1LDEyMDYwNCw2NSwxMjA2NjIsNjUsMTIwNzIwLDY1LDUwMzQsNjUsNTU3Myw2NSw0MjIyMiw2NSw5NDAxNiw2NSw2NjIwOCw2NSwxMTk4MzUsOTgsMTE5ODg3LDk4LDExOTkzOSw5OCwxMTk5OTEsOTgsMTIwMDQzLDk4LDEyMDA5NSw5OCwxMjAxNDcsOTgsMTIwMTk5LDk4LDEyMDI1MSw5OCwxMjAzMDMsOTgsMTIwMzU1LDk4LDEyMDQwNyw5OCwxMjA0NTksOTgsMzg4LDk4LDUwNzEsOTgsNTIzNCw5OCw1NTUxLDk4LDY1MzE0LDY2LDg0OTIsNjYsMTE5ODA5LDY2LDExOTg2MSw2NiwxMTk5MTMsNjYsMTIwMDE3LDY2LDEyMDA2OSw2NiwxMjAxMjEsNjYsMTIwMTczLDY2LDEyMDIyNSw2NiwxMjAyNzcsNjYsMTIwMzI5LDY2LDEyMDM4MSw2NiwxMjA0MzMsNjYsNDI5MzIsNjYsOTE0LDY2LDEyMDQ4OSw2NiwxMjA1NDcsNjYsMTIwNjA1LDY2LDEyMDY2Myw2NiwxMjA3MjEsNjYsNTEwOCw2Niw1NjIzLDY2LDQyMTkyLDY2LDY2MTc4LDY2LDY2MjA5LDY2LDY2MzA1LDY2LDY1MzQ3LDk5LDg1NzMsOTksMTE5ODM2LDk5LDExOTg4OCw5OSwxMTk5NDAsOTksMTE5OTkyLDk5LDEyMDA0NCw5OSwxMjAwOTYsOTksMTIwMTQ4LDk5LDEyMDIwMCw5OSwxMjAyNTIsOTksMTIwMzA0LDk5LDEyMDM1Niw5OSwxMjA0MDgsOTksMTIwNDYwLDk5LDc0MjgsOTksMTAxMCw5OSwxMTQyOSw5OSw0Mzk1MSw5OSw2NjYyMSw5OSwxMjg4NDQsNjcsNzE5MjIsNjcsNzE5MTMsNjcsNjUzMTUsNjcsODU1Nyw2Nyw4NDUwLDY3LDg0OTMsNjcsMTE5ODEwLDY3LDExOTg2Miw2NywxMTk5MTQsNjcsMTE5OTY2LDY3LDEyMDAxOCw2NywxMjAxNzQsNjcsMTIwMjI2LDY3LDEyMDI3OCw2NywxMjAzMzAsNjcsMTIwMzgyLDY3LDEyMDQzNCw2NywxMDE3LDY3LDExNDI4LDY3LDUwODcsNjcsNDIyMDIsNjcsNjYyMTAsNjcsNjYzMDYsNjcsNjY1ODEsNjcsNjY4NDQsNjcsODU3NCwxMDAsODUxOCwxMDAsMTE5ODM3LDEwMCwxMTk4ODksMTAwLDExOTk0MSwxMDAsMTE5OTkzLDEwMCwxMjAwNDUsMTAwLDEyMDA5NywxMDAsMTIwMTQ5LDEwMCwxMjAyMDEsMTAwLDEyMDI1MywxMDAsMTIwMzA1LDEwMCwxMjAzNTcsMTAwLDEyMDQwOSwxMDAsMTIwNDYxLDEwMCwxMjgxLDEwMCw1MDk1LDEwMCw1MjMxLDEwMCw0MjE5NCwxMDAsODU1OCw2OCw4NTE3LDY4LDExOTgxMSw2OCwxMTk4NjMsNjgsMTE5OTE1LDY4LDExOTk2Nyw2OCwxMjAwMTksNjgsMTIwMDcxLDY4LDEyMDEyMyw2OCwxMjAxNzUsNjgsMTIwMjI3LDY4LDEyMDI3OSw2OCwxMjAzMzEsNjgsMTIwMzgzLDY4LDEyMDQzNSw2OCw1MDI0LDY4LDU1OTgsNjgsNTYxMCw2OCw0MjE5NSw2OCw4NDk0LDEwMSw2NTM0OSwxMDEsODQ5NSwxMDEsODUxOSwxMDEsMTE5ODM4LDEwMSwxMTk4OTAsMTAxLDExOTk0MiwxMDEsMTIwMDQ2LDEwMSwxMjAwOTgsMTAxLDEyMDE1MCwxMDEsMTIwMjAyLDEwMSwxMjAyNTQsMTAxLDEyMDMwNiwxMDEsMTIwMzU4LDEwMSwxMjA0MTAsMTAxLDEyMDQ2MiwxMDEsNDM4MjYsMTAxLDEyMTMsMTAxLDg5NTksNjksNjUzMTcsNjksODQ5Niw2OSwxMTk4MTIsNjksMTE5ODY0LDY5LDExOTkxNiw2OSwxMjAwMjAsNjksMTIwMDcyLDY5LDEyMDEyNCw2OSwxMjAxNzYsNjksMTIwMjI4LDY5LDEyMDI4MCw2OSwxMjAzMzIsNjksMTIwMzg0LDY5LDEyMDQzNiw2OSw5MTcsNjksMTIwNDkyLDY5LDEyMDU1MCw2OSwxMjA2MDgsNjksMTIwNjY2LDY5LDEyMDcyNCw2OSwxMTU3Nyw2OSw1MDM2LDY5LDQyMjI0LDY5LDcxODQ2LDY5LDcxODU0LDY5LDY2MTgyLDY5LDExOTgzOSwxMDIsMTE5ODkxLDEwMiwxMTk5NDMsMTAyLDExOTk5NSwxMDIsMTIwMDQ3LDEwMiwxMjAwOTksMTAyLDEyMDE1MSwxMDIsMTIwMjAzLDEwMiwxMjAyNTUsMTAyLDEyMDMwNywxMDIsMTIwMzU5LDEwMiwxMjA0MTEsMTAyLDEyMDQ2MywxMDIsNDM4MjksMTAyLDQyOTA1LDEwMiwzODMsMTAyLDc4MzcsMTAyLDE0MTIsMTAyLDExOTMxNSw3MCw4NDk3LDcwLDExOTgxMyw3MCwxMTk4NjUsNzAsMTE5OTE3LDcwLDEyMDAyMSw3MCwxMjAwNzMsNzAsMTIwMTI1LDcwLDEyMDE3Nyw3MCwxMjAyMjksNzAsMTIwMjgxLDcwLDEyMDMzMyw3MCwxMjAzODUsNzAsMTIwNDM3LDcwLDQyOTA0LDcwLDk4OCw3MCwxMjA3NzgsNzAsNTU1Niw3MCw0MjIwNSw3MCw3MTg3NCw3MCw3MTg0Miw3MCw2NjE4Myw3MCw2NjIxMyw3MCw2Njg1Myw3MCw2NTM1MSwxMDMsODQ1OCwxMDMsMTE5ODQwLDEwMywxMTk4OTIsMTAzLDExOTk0NCwxMDMsMTIwMDQ4LDEwMywxMjAxMDAsMTAzLDEyMDE1MiwxMDMsMTIwMjA0LDEwMywxMjAyNTYsMTAzLDEyMDMwOCwxMDMsMTIwMzYwLDEwMywxMjA0MTIsMTAzLDEyMDQ2NCwxMDMsNjA5LDEwMyw3NTU1LDEwMywzOTcsMTAzLDE0MDksMTAzLDExOTgxNCw3MSwxMTk4NjYsNzEsMTE5OTE4LDcxLDExOTk3MCw3MSwxMjAwMjIsNzEsMTIwMDc0LDcxLDEyMDEyNiw3MSwxMjAxNzgsNzEsMTIwMjMwLDcxLDEyMDI4Miw3MSwxMjAzMzQsNzEsMTIwMzg2LDcxLDEyMDQzOCw3MSwxMjkyLDcxLDUwNTYsNzEsNTEwNyw3MSw0MjE5OCw3MSw2NTM1MiwxMDQsODQ2MiwxMDQsMTE5ODQxLDEwNCwxMTk5NDUsMTA0LDExOTk5NywxMDQsMTIwMDQ5LDEwNCwxMjAxMDEsMTA0LDEyMDE1MywxMDQsMTIwMjA1LDEwNCwxMjAyNTcsMTA0LDEyMDMwOSwxMDQsMTIwMzYxLDEwNCwxMjA0MTMsMTA0LDEyMDQ2NSwxMDQsMTIxMSwxMDQsMTM5MiwxMDQsNTA1OCwxMDQsNjUzMjAsNzIsODQ1OSw3Miw4NDYwLDcyLDg0NjEsNzIsMTE5ODE1LDcyLDExOTg2Nyw3MiwxMTk5MTksNzIsMTIwMDIzLDcyLDEyMDE3OSw3MiwxMjAyMzEsNzIsMTIwMjgzLDcyLDEyMDMzNSw3MiwxMjAzODcsNzIsMTIwNDM5LDcyLDkxOSw3MiwxMjA0OTQsNzIsMTIwNTUyLDcyLDEyMDYxMCw3MiwxMjA2NjgsNzIsMTIwNzI2LDcyLDExNDA2LDcyLDUwNTEsNzIsNTUwMCw3Miw0MjIxNSw3Miw2NjI1NSw3Miw3MzEsMTA1LDkwNzUsMTA1LDY1MzUzLDEwNSw4NTYwLDEwNSw4NTA1LDEwNSw4NTIwLDEwNSwxMTk4NDIsMTA1LDExOTg5NCwxMDUsMTE5OTQ2LDEwNSwxMTk5OTgsMTA1LDEyMDA1MCwxMDUsMTIwMTAyLDEwNSwxMjAxNTQsMTA1LDEyMDIwNiwxMDUsMTIwMjU4LDEwNSwxMjAzMTAsMTA1LDEyMDM2MiwxMDUsMTIwNDE0LDEwNSwxMjA0NjYsMTA1LDEyMDQ4NCwxMDUsNjE4LDEwNSw2MTcsMTA1LDk1MywxMDUsODEyNiwxMDUsODkwLDEwNSwxMjA1MjIsMTA1LDEyMDU4MCwxMDUsMTIwNjM4LDEwNSwxMjA2OTYsMTA1LDEyMDc1NCwxMDUsMTExMCwxMDUsNDI1NjcsMTA1LDEyMzEsMTA1LDQzODkzLDEwNSw1MDI5LDEwNSw3MTg3NSwxMDUsNjUzNTQsMTA2LDg1MjEsMTA2LDExOTg0MywxMDYsMTE5ODk1LDEwNiwxMTk5NDcsMTA2LDExOTk5OSwxMDYsMTIwMDUxLDEwNiwxMjAxMDMsMTA2LDEyMDE1NSwxMDYsMTIwMjA3LDEwNiwxMjAyNTksMTA2LDEyMDMxMSwxMDYsMTIwMzYzLDEwNiwxMjA0MTUsMTA2LDEyMDQ2NywxMDYsMTAxMSwxMDYsMTExMiwxMDYsNjUzMjIsNzQsMTE5ODE3LDc0LDExOTg2OSw3NCwxMTk5MjEsNzQsMTE5OTczLDc0LDEyMDAyNSw3NCwxMjAwNzcsNzQsMTIwMTI5LDc0LDEyMDE4MSw3NCwxMjAyMzMsNzQsMTIwMjg1LDc0LDEyMDMzNyw3NCwxMjAzODksNzQsMTIwNDQxLDc0LDQyOTMwLDc0LDg5NSw3NCwxMDMyLDc0LDUwMzUsNzQsNTI2MSw3NCw0MjIwMSw3NCwxMTk4NDQsMTA3LDExOTg5NiwxMDcsMTE5OTQ4LDEwNywxMjAwMDAsMTA3LDEyMDA1MiwxMDcsMTIwMTA0LDEwNywxMjAxNTYsMTA3LDEyMDIwOCwxMDcsMTIwMjYwLDEwNywxMjAzMTIsMTA3LDEyMDM2NCwxMDcsMTIwNDE2LDEwNywxMjA0NjgsMTA3LDg0OTAsNzUsNjUzMjMsNzUsMTE5ODE4LDc1LDExOTg3MCw3NSwxMTk5MjIsNzUsMTE5OTc0LDc1LDEyMDAyNiw3NSwxMjAwNzgsNzUsMTIwMTMwLDc1LDEyMDE4Miw3NSwxMjAyMzQsNzUsMTIwMjg2LDc1LDEyMDMzOCw3NSwxMjAzOTAsNzUsMTIwNDQyLDc1LDkyMiw3NSwxMjA0OTcsNzUsMTIwNTU1LDc1LDEyMDYxMyw3NSwxMjA2NzEsNzUsMTIwNzI5LDc1LDExNDEyLDc1LDUwOTQsNzUsNTg0NSw3NSw0MjE5OSw3NSw2Njg0MCw3NSwxNDcyLDEwOCw4NzM5LDczLDkyMTMsNzMsNjU1MTIsNzMsMTYzMywxMDgsMTc3Nyw3Myw2NjMzNiwxMDgsMTI1MTI3LDEwOCwxMjA3ODMsNzMsMTIwNzkzLDczLDEyMDgwMyw3MywxMjA4MTMsNzMsMTIwODIzLDczLDEzMDAzMyw3Myw2NTMyMSw3Myw4NTQ0LDczLDg0NjQsNzMsODQ2NSw3MywxMTk4MTYsNzMsMTE5ODY4LDczLDExOTkyMCw3MywxMjAwMjQsNzMsMTIwMTI4LDczLDEyMDE4MCw3MywxMjAyMzIsNzMsMTIwMjg0LDczLDEyMDMzNiw3MywxMjAzODgsNzMsMTIwNDQwLDczLDY1MzU2LDEwOCw4NTcyLDczLDg0NjcsMTA4LDExOTg0NSwxMDgsMTE5ODk3LDEwOCwxMTk5NDksMTA4LDEyMDAwMSwxMDgsMTIwMDUzLDEwOCwxMjAxMDUsNzMsMTIwMTU3LDczLDEyMDIwOSw3MywxMjAyNjEsNzMsMTIwMzEzLDczLDEyMDM2NSw3MywxMjA0MTcsNzMsMTIwNDY5LDczLDQ0OCw3MywxMjA0OTYsNzMsMTIwNTU0LDczLDEyMDYxMiw3MywxMjA2NzAsNzMsMTIwNzI4LDczLDExNDEwLDczLDEwMzAsNzMsMTIxNiw3MywxNDkzLDEwOCwxNTAzLDEwOCwxNTc1LDEwOCwxMjY0NjQsMTA4LDEyNjU5MiwxMDgsNjUxNjYsMTA4LDY1MTY1LDEwOCwxOTk0LDEwOCwxMTU5OSw3Myw1ODI1LDczLDQyMjI2LDczLDkzOTkyLDczLDY2MTg2LDEyNCw2NjMxMywxMjQsMTE5MzM4LDc2LDg1NTYsNzYsODQ2Niw3NiwxMTk4MTksNzYsMTE5ODcxLDc2LDExOTkyMyw3NiwxMjAwMjcsNzYsMTIwMDc5LDc2LDEyMDEzMSw3NiwxMjAxODMsNzYsMTIwMjM1LDc2LDEyMDI4Nyw3NiwxMjAzMzksNzYsMTIwMzkxLDc2LDEyMDQ0Myw3NiwxMTQ3Miw3Niw1MDg2LDc2LDUyOTAsNzYsNDIyMDksNzYsOTM5NzQsNzYsNzE4NDMsNzYsNzE4NTgsNzYsNjY1ODcsNzYsNjY4NTQsNzYsNjUzMjUsNzcsODU1OSw3Nyw4NDk5LDc3LDExOTgyMCw3NywxMTk4NzIsNzcsMTE5OTI0LDc3LDEyMDAyOCw3NywxMjAwODAsNzcsMTIwMTMyLDc3LDEyMDE4NCw3NywxMjAyMzYsNzcsMTIwMjg4LDc3LDEyMDM0MCw3NywxMjAzOTIsNzcsMTIwNDQ0LDc3LDkyNCw3NywxMjA0OTksNzcsMTIwNTU3LDc3LDEyMDYxNSw3NywxMjA2NzMsNzcsMTIwNzMxLDc3LDEwMTgsNzcsMTE0MTYsNzcsNTA0Nyw3Nyw1NjE2LDc3LDU4NDYsNzcsNDIyMDcsNzcsNjYyMjQsNzcsNjYzMjEsNzcsMTE5ODQ3LDExMCwxMTk4OTksMTEwLDExOTk1MSwxMTAsMTIwMDAzLDExMCwxMjAwNTUsMTEwLDEyMDEwNywxMTAsMTIwMTU5LDExMCwxMjAyMTEsMTEwLDEyMDI2MywxMTAsMTIwMzE1LDExMCwxMjAzNjcsMTEwLDEyMDQxOSwxMTAsMTIwNDcxLDExMCwxNDAwLDExMCwxNDA0LDExMCw2NTMyNiw3OCw4NDY5LDc4LDExOTgyMSw3OCwxMTk4NzMsNzgsMTE5OTI1LDc4LDExOTk3Nyw3OCwxMjAwMjksNzgsMTIwMDgxLDc4LDEyMDE4NSw3OCwxMjAyMzcsNzgsMTIwMjg5LDc4LDEyMDM0MSw3OCwxMjAzOTMsNzgsMTIwNDQ1LDc4LDkyNSw3OCwxMjA1MDAsNzgsMTIwNTU4LDc4LDEyMDYxNiw3OCwxMjA2NzQsNzgsMTIwNzMyLDc4LDExNDE4LDc4LDQyMjA4LDc4LDY2ODM1LDc4LDMwNzQsMTExLDMyMDIsMTExLDMzMzAsMTExLDM0NTgsMTExLDI0MDYsMTExLDI2NjIsMTExLDI3OTAsMTExLDMwNDYsMTExLDMxNzQsMTExLDMzMDIsMTExLDM0MzAsMTExLDM2NjQsMTExLDM3OTIsMTExLDQxNjAsMTExLDE2MzcsMTExLDE3ODEsMTExLDY1MzU5LDExMSw4NTAwLDExMSwxMTk4NDgsMTExLDExOTkwMCwxMTEsMTE5OTUyLDExMSwxMjAwNTYsMTExLDEyMDEwOCwxMTEsMTIwMTYwLDExMSwxMjAyMTIsMTExLDEyMDI2NCwxMTEsMTIwMzE2LDExMSwxMjAzNjgsMTExLDEyMDQyMCwxMTEsMTIwNDcyLDExMSw3NDM5LDExMSw3NDQxLDExMSw0MzgzNywxMTEsOTU5LDExMSwxMjA1MjgsMTExLDEyMDU4NiwxMTEsMTIwNjQ0LDExMSwxMjA3MDIsMTExLDEyMDc2MCwxMTEsOTYzLDExMSwxMjA1MzIsMTExLDEyMDU5MCwxMTEsMTIwNjQ4LDExMSwxMjA3MDYsMTExLDEyMDc2NCwxMTEsMTE0MjMsMTExLDQzNTEsMTExLDE0MTMsMTExLDE1MDUsMTExLDE2MDcsMTExLDEyNjUwMCwxMTEsMTI2NTY0LDExMSwxMjY1OTYsMTExLDY1MjU5LDExMSw2NTI2MCwxMTEsNjUyNTgsMTExLDY1MjU3LDExMSwxNzI2LDExMSw2NDQyOCwxMTEsNjQ0MjksMTExLDY0NDI3LDExMSw2NDQyNiwxMTEsMTcyOSwxMTEsNjQ0MjQsMTExLDY0NDI1LDExMSw2NDQyMywxMTEsNjQ0MjIsMTExLDE3NDksMTExLDMzNjAsMTExLDQxMjUsMTExLDY2Nzk0LDExMSw3MTg4MCwxMTEsNzE4OTUsMTExLDY2NjA0LDExMSwxOTg0LDc5LDI1MzQsNzksMjkxOCw3OSwxMjI5NSw3OSw3MDg2NCw3OSw3MTkwNCw3OSwxMjA3ODIsNzksMTIwNzkyLDc5LDEyMDgwMiw3OSwxMjA4MTIsNzksMTIwODIyLDc5LDEzMDAzMiw3OSw2NTMyNyw3OSwxMTk4MjIsNzksMTE5ODc0LDc5LDExOTkyNiw3OSwxMTk5NzgsNzksMTIwMDMwLDc5LDEyMDA4Miw3OSwxMjAxMzQsNzksMTIwMTg2LDc5LDEyMDIzOCw3OSwxMjAyOTAsNzksMTIwMzQyLDc5LDEyMDM5NCw3OSwxMjA0NDYsNzksOTI3LDc5LDEyMDUwMiw3OSwxMjA1NjAsNzksMTIwNjE4LDc5LDEyMDY3Niw3OSwxMjA3MzQsNzksMTE0MjIsNzksMTM2NSw3OSwxMTYwNCw3OSw0ODE2LDc5LDI4NDgsNzksNjY3NTQsNzksNDIyMjcsNzksNzE4NjEsNzksNjYxOTQsNzksNjYyMTksNzksNjY1NjQsNzksNjY4MzgsNzksOTA3NiwxMTIsNjUzNjAsMTEyLDExOTg0OSwxMTIsMTE5OTAxLDExMiwxMTk5NTMsMTEyLDEyMDAwNSwxMTIsMTIwMDU3LDExMiwxMjAxMDksMTEyLDEyMDE2MSwxMTIsMTIwMjEzLDExMiwxMjAyNjUsMTEyLDEyMDMxNywxMTIsMTIwMzY5LDExMiwxMjA0MjEsMTEyLDEyMDQ3MywxMTIsOTYxLDExMiwxMjA1MzAsMTEyLDEyMDU0NCwxMTIsMTIwNTg4LDExMiwxMjA2MDIsMTEyLDEyMDY0NiwxMTIsMTIwNjYwLDExMiwxMjA3MDQsMTEyLDEyMDcxOCwxMTIsMTIwNzYyLDExMiwxMjA3NzYsMTEyLDExNDI3LDExMiw2NTMyOCw4MCw4NDczLDgwLDExOTgyMyw4MCwxMTk4NzUsODAsMTE5OTI3LDgwLDExOTk3OSw4MCwxMjAwMzEsODAsMTIwMDgzLDgwLDEyMDE4Nyw4MCwxMjAyMzksODAsMTIwMjkxLDgwLDEyMDM0Myw4MCwxMjAzOTUsODAsMTIwNDQ3LDgwLDkyOSw4MCwxMjA1MDQsODAsMTIwNTYyLDgwLDEyMDYyMCw4MCwxMjA2NzgsODAsMTIwNzM2LDgwLDExNDI2LDgwLDUwOTAsODAsNTIyOSw4MCw0MjE5Myw4MCw2NjE5Nyw4MCwxMTk4NTAsMTEzLDExOTkwMiwxMTMsMTE5OTU0LDExMywxMjAwMDYsMTEzLDEyMDA1OCwxMTMsMTIwMTEwLDExMywxMjAxNjIsMTEzLDEyMDIxNCwxMTMsMTIwMjY2LDExMywxMjAzMTgsMTEzLDEyMDM3MCwxMTMsMTIwNDIyLDExMywxMjA0NzQsMTEzLDEzMDcsMTEzLDEzNzksMTEzLDEzODIsMTEzLDg0NzQsODEsMTE5ODI0LDgxLDExOTg3Niw4MSwxMTk5MjgsODEsMTE5OTgwLDgxLDEyMDAzMiw4MSwxMjAwODQsODEsMTIwMTg4LDgxLDEyMDI0MCw4MSwxMjAyOTIsODEsMTIwMzQ0LDgxLDEyMDM5Niw4MSwxMjA0NDgsODEsMTE2MDUsODEsMTE5ODUxLDExNCwxMTk5MDMsMTE0LDExOTk1NSwxMTQsMTIwMDA3LDExNCwxMjAwNTksMTE0LDEyMDExMSwxMTQsMTIwMTYzLDExNCwxMjAyMTUsMTE0LDEyMDI2NywxMTQsMTIwMzE5LDExNCwxMjAzNzEsMTE0LDEyMDQyMywxMTQsMTIwNDc1LDExNCw0Mzg0NywxMTQsNDM4NDgsMTE0LDc0NjIsMTE0LDExMzk3LDExNCw0MzkwNSwxMTQsMTE5MzE4LDgyLDg0NzUsODIsODQ3Niw4Miw4NDc3LDgyLDExOTgyNSw4MiwxMTk4NzcsODIsMTE5OTI5LDgyLDEyMDAzMyw4MiwxMjAxODksODIsMTIwMjQxLDgyLDEyMDI5Myw4MiwxMjAzNDUsODIsMTIwMzk3LDgyLDEyMDQ0OSw4Miw0MjIsODIsNTAyNSw4Miw1MDc0LDgyLDY2NzQwLDgyLDU1MTEsODIsNDIyMTEsODIsOTQwMDUsODIsNjUzNjMsMTE1LDExOTg1MiwxMTUsMTE5OTA0LDExNSwxMTk5NTYsMTE1LDEyMDAwOCwxMTUsMTIwMDYwLDExNSwxMjAxMTIsMTE1LDEyMDE2NCwxMTUsMTIwMjE2LDExNSwxMjAyNjgsMTE1LDEyMDMyMCwxMTUsMTIwMzcyLDExNSwxMjA0MjQsMTE1LDEyMDQ3NiwxMTUsNDI4MDEsMTE1LDQ0NSwxMTUsMTEwOSwxMTUsNDM5NDYsMTE1LDcxODczLDExNSw2NjYzMiwxMTUsNjUzMzEsODMsMTE5ODI2LDgzLDExOTg3OCw4MywxMTk5MzAsODMsMTE5OTgyLDgzLDEyMDAzNCw4MywxMjAwODYsODMsMTIwMTM4LDgzLDEyMDE5MCw4MywxMjAyNDIsODMsMTIwMjk0LDgzLDEyMDM0Niw4MywxMjAzOTgsODMsMTIwNDUwLDgzLDEwMjksODMsMTM1OSw4Myw1MDc3LDgzLDUwODIsODMsNDIyMTAsODMsOTQwMTAsODMsNjYxOTgsODMsNjY1OTIsODMsMTE5ODUzLDExNiwxMTk5MDUsMTE2LDExOTk1NywxMTYsMTIwMDA5LDExNiwxMjAwNjEsMTE2LDEyMDExMywxMTYsMTIwMTY1LDExNiwxMjAyMTcsMTE2LDEyMDI2OSwxMTYsMTIwMzIxLDExNiwxMjAzNzMsMTE2LDEyMDQyNSwxMTYsMTIwNDc3LDExNiw4ODY4LDg0LDEwMjAxLDg0LDEyODg3Miw4NCw2NTMzMiw4NCwxMTk4MjcsODQsMTE5ODc5LDg0LDExOTkzMSw4NCwxMTk5ODMsODQsMTIwMDM1LDg0LDEyMDA4Nyw4NCwxMjAxMzksODQsMTIwMTkxLDg0LDEyMDI0Myw4NCwxMjAyOTUsODQsMTIwMzQ3LDg0LDEyMDM5OSw4NCwxMjA0NTEsODQsOTMyLDg0LDEyMDUwNyw4NCwxMjA1NjUsODQsMTIwNjIzLDg0LDEyMDY4MSw4NCwxMjA3MzksODQsMTE0MzAsODQsNTAyNiw4NCw0MjE5Niw4NCw5Mzk2Miw4NCw3MTg2OCw4NCw2NjE5OSw4NCw2NjIyNSw4NCw2NjMyNSw4NCwxMTk4NTQsMTE3LDExOTkwNiwxMTcsMTE5OTU4LDExNywxMjAwMTAsMTE3LDEyMDA2MiwxMTcsMTIwMTE0LDExNywxMjAxNjYsMTE3LDEyMDIxOCwxMTcsMTIwMjcwLDExNywxMjAzMjIsMTE3LDEyMDM3NCwxMTcsMTIwNDI2LDExNywxMjA0NzgsMTE3LDQyOTExLDExNyw3NDUyLDExNyw0Mzg1NCwxMTcsNDM4NTgsMTE3LDY1MSwxMTcsOTY1LDExNywxMjA1MzQsMTE3LDEyMDU5MiwxMTcsMTIwNjUwLDExNywxMjA3MDgsMTE3LDEyMDc2NiwxMTcsMTQwNSwxMTcsNjY4MDYsMTE3LDcxODk2LDExNyw4NzQ2LDg1LDg4OTksODUsMTE5ODI4LDg1LDExOTg4MCw4NSwxMTk5MzIsODUsMTE5OTg0LDg1LDEyMDAzNiw4NSwxMjAwODgsODUsMTIwMTQwLDg1LDEyMDE5Miw4NSwxMjAyNDQsODUsMTIwMjk2LDg1LDEyMDM0OCw4NSwxMjA0MDAsODUsMTIwNDUyLDg1LDEzNTcsODUsNDYwOCw4NSw2Njc2Niw4NSw1MTk2LDg1LDQyMjI4LDg1LDk0MDE4LDg1LDcxODY0LDg1LDg3NDQsMTE4LDg4OTcsMTE4LDY1MzY2LDExOCw4NTY0LDExOCwxMTk4NTUsMTE4LDExOTkwNywxMTgsMTE5OTU5LDExOCwxMjAwMTEsMTE4LDEyMDA2MywxMTgsMTIwMTE1LDExOCwxMjAxNjcsMTE4LDEyMDIxOSwxMTgsMTIwMjcxLDExOCwxMjAzMjMsMTE4LDEyMDM3NSwxMTgsMTIwNDI3LDExOCwxMjA0NzksMTE4LDc0NTYsMTE4LDk1NywxMTgsMTIwNTI2LDExOCwxMjA1ODQsMTE4LDEyMDY0MiwxMTgsMTIwNzAwLDExOCwxMjA3NTgsMTE4LDExNDEsMTE4LDE0OTYsMTE4LDcxNDMwLDExOCw0Mzk0NSwxMTgsNzE4NzIsMTE4LDExOTMwOSw4NiwxNjM5LDg2LDE3ODMsODYsODU0OCw4NiwxMTk4MjksODYsMTE5ODgxLDg2LDExOTkzMyw4NiwxMTk5ODUsODYsMTIwMDM3LDg2LDEyMDA4OSw4NiwxMjAxNDEsODYsMTIwMTkzLDg2LDEyMDI0NSw4NiwxMjAyOTcsODYsMTIwMzQ5LDg2LDEyMDQwMSw4NiwxMjA0NTMsODYsMTE0MCw4NiwxMTU3Niw4Niw1MDgxLDg2LDUxNjcsODYsNDI3MTksODYsNDIyMTQsODYsOTM5NjAsODYsNzE4NDAsODYsNjY4NDUsODYsNjIzLDExOSwxMTk4NTYsMTE5LDExOTkwOCwxMTksMTE5OTYwLDExOSwxMjAwMTIsMTE5LDEyMDA2NCwxMTksMTIwMTE2LDExOSwxMjAxNjgsMTE5LDEyMDIyMCwxMTksMTIwMjcyLDExOSwxMjAzMjQsMTE5LDEyMDM3NiwxMTksMTIwNDI4LDExOSwxMjA0ODAsMTE5LDc0NTcsMTE5LDExMjEsMTE5LDEzMDksMTE5LDEzNzcsMTE5LDcxNDM0LDExOSw3MTQzOCwxMTksNzE0MzksMTE5LDQzOTA3LDExOSw3MTkxOSw4Nyw3MTkxMCw4NywxMTk4MzAsODcsMTE5ODgyLDg3LDExOTkzNCw4NywxMTk5ODYsODcsMTIwMDM4LDg3LDEyMDA5MCw4NywxMjAxNDIsODcsMTIwMTk0LDg3LDEyMDI0Niw4NywxMjAyOTgsODcsMTIwMzUwLDg3LDEyMDQwMiw4NywxMjA0NTQsODcsMTMwOCw4Nyw1MDQzLDg3LDUwNzYsODcsNDIyMTgsODcsNTc0MiwxMjAsMTA1MzksMTIwLDEwNTQwLDEyMCwxMDc5OSwxMjAsNjUzNjgsMTIwLDg1NjksMTIwLDExOTg1NywxMjAsMTE5OTA5LDEyMCwxMTk5NjEsMTIwLDEyMDAxMywxMjAsMTIwMDY1LDEyMCwxMjAxMTcsMTIwLDEyMDE2OSwxMjAsMTIwMjIxLDEyMCwxMjAyNzMsMTIwLDEyMDMyNSwxMjAsMTIwMzc3LDEyMCwxMjA0MjksMTIwLDEyMDQ4MSwxMjAsNTQ0MSwxMjAsNTUwMSwxMjAsNTc0MSw4OCw5NTg3LDg4LDY2MzM4LDg4LDcxOTE2LDg4LDY1MzM2LDg4LDg1NTMsODgsMTE5ODMxLDg4LDExOTg4Myw4OCwxMTk5MzUsODgsMTE5OTg3LDg4LDEyMDAzOSw4OCwxMjAwOTEsODgsMTIwMTQzLDg4LDEyMDE5NSw4OCwxMjAyNDcsODgsMTIwMjk5LDg4LDEyMDM1MSw4OCwxMjA0MDMsODgsMTIwNDU1LDg4LDQyOTMxLDg4LDkzNSw4OCwxMjA1MTAsODgsMTIwNTY4LDg4LDEyMDYyNiw4OCwxMjA2ODQsODgsMTIwNzQyLDg4LDExNDM2LDg4LDExNjEzLDg4LDU4MTUsODgsNDIyMTksODgsNjYxOTIsODgsNjYyMjgsODgsNjYzMjcsODgsNjY4NTUsODgsNjExLDEyMSw3NTY0LDEyMSw2NTM2OSwxMjEsMTE5ODU4LDEyMSwxMTk5MTAsMTIxLDExOTk2MiwxMjEsMTIwMDE0LDEyMSwxMjAwNjYsMTIxLDEyMDExOCwxMjEsMTIwMTcwLDEyMSwxMjAyMjIsMTIxLDEyMDI3NCwxMjEsMTIwMzI2LDEyMSwxMjAzNzgsMTIxLDEyMDQzMCwxMjEsMTIwNDgyLDEyMSw2NTUsMTIxLDc5MzUsMTIxLDQzODY2LDEyMSw5NDcsMTIxLDg1MDksMTIxLDEyMDUxNiwxMjEsMTIwNTc0LDEyMSwxMjA2MzIsMTIxLDEyMDY5MCwxMjEsMTIwNzQ4LDEyMSwxMTk5LDEyMSw0MzI3LDEyMSw3MTkwMCwxMjEsNjUzMzcsODksMTE5ODMyLDg5LDExOTg4NCw4OSwxMTk5MzYsODksMTE5OTg4LDg5LDEyMDA0MCw4OSwxMjAwOTIsODksMTIwMTQ0LDg5LDEyMDE5Niw4OSwxMjAyNDgsODksMTIwMzAwLDg5LDEyMDM1Miw4OSwxMjA0MDQsODksMTIwNDU2LDg5LDkzMyw4OSw5NzgsODksMTIwNTA4LDg5LDEyMDU2Niw4OSwxMjA2MjQsODksMTIwNjgyLDg5LDEyMDc0MCw4OSwxMTQzMiw4OSwxMTk4LDg5LDUwMzMsODksNTA1Myw4OSw0MjIyMCw4OSw5NDAxOSw4OSw3MTg0NCw4OSw2NjIyNiw4OSwxMTk4NTksMTIyLDExOTkxMSwxMjIsMTE5OTYzLDEyMiwxMjAwMTUsMTIyLDEyMDA2NywxMjIsMTIwMTE5LDEyMiwxMjAxNzEsMTIyLDEyMDIyMywxMjIsMTIwMjc1LDEyMiwxMjAzMjcsMTIyLDEyMDM3OSwxMjIsMTIwNDMxLDEyMiwxMjA0ODMsMTIyLDc0NTgsMTIyLDQzOTIzLDEyMiw3MTg3NiwxMjIsNjYyOTMsOTAsNzE5MDksOTAsNjUzMzgsOTAsODQ4NCw5MCw4NDg4LDkwLDExOTgzMyw5MCwxMTk4ODUsOTAsMTE5OTM3LDkwLDExOTk4OSw5MCwxMjAwNDEsOTAsMTIwMTk3LDkwLDEyMDI0OSw5MCwxMjAzMDEsOTAsMTIwMzUzLDkwLDEyMDQwNSw5MCwxMjA0NTcsOTAsOTE4LDkwLDEyMDQ5Myw5MCwxMjA1NTEsOTAsMTIwNjA5LDkwLDEyMDY2Nyw5MCwxMjA3MjUsOTAsNTA1OSw5MCw0MjIwNCw5MCw3MTg0OSw5MCw2NTI4MiwzNCw2NTI4NCwzNiw2NTI4NSwzNyw2NTI4NiwzOCw2NTI5MCw0Miw2NTI5MSw0Myw2NTI5NCw0Niw2NTI5NSw0Nyw2NTI5Niw0OCw2NTI5Nyw0OSw2NTI5OCw1MCw2NTI5OSw1MSw2NTMwMCw1Miw2NTMwMSw1Myw2NTMwMiw1NCw2NTMwMyw1NSw2NTMwNCw1Niw2NTMwNSw1Nyw2NTMwOCw2MCw2NTMwOSw2MSw2NTMxMCw2Miw2NTMxMiw2NCw2NTMxNiw2OCw2NTMxOCw3MCw2NTMxOSw3MSw2NTMyNCw3Niw2NTMyOSw4MSw2NTMzMCw4Miw2NTMzMyw4NSw2NTMzNCw4Niw2NTMzNSw4Nyw2NTM0Myw5NSw2NTM0Niw5OCw2NTM0OCwxMDAsNjUzNTAsMTAyLDY1MzU1LDEwNyw2NTM1NywxMDksNjUzNTgsMTEwLDY1MzYxLDExMyw2NTM2MiwxMTQsNjUzNjQsMTE2LDY1MzY1LDExNyw2NTM2NywxMTksNjUzNzAsMTIyLDY1MzcxLDEyMyw2NTM3MywxMjUsMTE5ODQ2LDEwOV0sIl9kZWZhdWx0IjpbMTYwLDMyLDgyMTEsNDUsNjUzNzQsMTI2LDY1MzA2LDU4LDY1MjgxLDMzLDgyMTYsOTYsODIxNyw5Niw4MjQ1LDk2LDE4MCw5NiwxMjQ5NCw0NywxMDQ3LDUxLDEwNzMsNTQsMTA3Miw5NywxMDQwLDY1LDEwNjgsOTgsMTA0Miw2NiwxMDg5LDk5LDEwNTcsNjcsMTA3NywxMDEsMTA0NSw2OSwxMDUzLDcyLDMwNSwxMDUsMTA1MCw3NSw5MjEsNzMsMTA1Miw3NywxMDg2LDExMSwxMDU0LDc5LDEwMDksMTEyLDEwODgsMTEyLDEwNTYsODAsMTA3NSwxMTQsMTA1OCw4NCwyMTUsMTIwLDEwOTMsMTIwLDEwNjEsODgsMTA5MSwxMjEsMTA1OSw4OSw2NTI4MywzNSw2NTI4OCw0MCw2NTI4OSw0MSw2NTI5Miw0NCw2NTMwNyw1OSw2NTMxMSw2M10sImNzIjpbNjUzNzQsMTI2LDY1MzA2LDU4LDY1MjgxLDMzLDgyMTYsOTYsODIxNyw5Niw4MjQ1LDk2LDE4MCw5NiwxMjQ5NCw0NywxMDQ3LDUxLDEwNzMsNTQsMTA3Miw5NywxMDQwLDY1LDEwNjgsOTgsMTA0Miw2NiwxMDg5LDk5LDEwNTcsNjcsMTA3NywxMDEsMTA0NSw2OSwxMDUzLDcyLDMwNSwxMDUsMTA1MCw3NSw5MjEsNzMsMTA1Miw3NywxMDg2LDExMSwxMDU0LDc5LDEwMDksMTEyLDEwODgsMTEyLDEwNTYsODAsMTA3NSwxMTQsMTA1OCw4NCwxMDkzLDEyMCwxMDYxLDg4LDEwOTEsMTIxLDEwNTksODksNjUyODMsMzUsNjUyODgsNDAsNjUyODksNDEsNjUyOTIsNDQsNjUzMDcsNTksNjUzMTEsNjNdLCJkZSI6WzY1Mzc0LDEyNiw2NTMwNiw1OCw2NTI4MSwzMyw4MjE2LDk2LDgyMTcsOTYsODI0NSw5NiwxODAsOTYsMTI0OTQsNDcsMTA0Nyw1MSwxMDczLDU0LDEwNzIsOTcsMTA0MCw2NSwxMDY4LDk4LDEwNDIsNjYsMTA4OSw5OSwxMDU3LDY3LDEwNzcsMTAxLDEwNDUsNjksMTA1Myw3MiwzMDUsMTA1LDEwNTAsNzUsOTIxLDczLDEwNTIsNzcsMTA4NiwxMTEsMTA1NCw3OSwxMDA5LDExMiwxMDg4LDExMiwxMDU2LDgwLDEwNzUsMTE0LDEwNTgsODQsMTA5MywxMjAsMTA2MSw4OCwxMDkxLDEyMSwxMDU5LDg5LDY1MjgzLDM1LDY1Mjg4LDQwLDY1Mjg5LDQxLDY1MjkyLDQ0LDY1MzA3LDU5LDY1MzExLDYzXSwiZXMiOls4MjExLDQ1LDY1Mzc0LDEyNiw2NTMwNiw1OCw2NTI4MSwzMyw4MjQ1LDk2LDE4MCw5NiwxMjQ5NCw0NywxMDQ3LDUxLDEwNzMsNTQsMTA3Miw5NywxMDQwLDY1LDEwNjgsOTgsMTA0Miw2NiwxMDg5LDk5LDEwNTcsNjcsMTA3NywxMDEsMTA0NSw2OSwxMDUzLDcyLDMwNSwxMDUsMTA1MCw3NSwxMDUyLDc3LDEwODYsMTExLDEwNTQsNzksMTAwOSwxMTIsMTA4OCwxMTIsMTA1Niw4MCwxMDc1LDExNCwxMDU4LDg0LDIxNSwxMjAsMTA5MywxMjAsMTA2MSw4OCwxMDkxLDEyMSwxMDU5LDg5LDY1MjgzLDM1LDY1Mjg4LDQwLDY1Mjg5LDQxLDY1MjkyLDQ0LDY1MzA3LDU5LDY1MzExLDYzXSwiZnIiOls2NTM3NCwxMjYsNjUzMDYsNTgsNjUyODEsMzMsODIxNiw5Niw4MjQ1LDk2LDEyNDk0LDQ3LDEwNDcsNTEsMTA3Myw1NCwxMDcyLDk3LDEwNDAsNjUsMTA2OCw5OCwxMDQyLDY2LDEwODksOTksMTA1Nyw2NywxMDc3LDEwMSwxMDQ1LDY5LDEwNTMsNzIsMzA1LDEwNSwxMDUwLDc1LDkyMSw3MywxMDUyLDc3LDEwODYsMTExLDEwNTQsNzksMTAwOSwxMTIsMTA4OCwxMTIsMTA1Niw4MCwxMDc1LDExNCwxMDU4LDg0LDIxNSwxMjAsMTA5MywxMjAsMTA2MSw4OCwxMDkxLDEyMSwxMDU5LDg5LDY1MjgzLDM1LDY1Mjg4LDQwLDY1Mjg5LDQxLDY1MjkyLDQ0LDY1MzA3LDU5LDY1MzExLDYzXSwiaXQiOlsxNjAsMzIsODIxMSw0NSw2NTM3NCwxMjYsNjUzMDYsNTgsNjUyODEsMzMsODIxNiw5Niw4MjQ1LDk2LDE4MCw5NiwxMjQ5NCw0NywxMDQ3LDUxLDEwNzMsNTQsMTA3Miw5NywxMDQwLDY1LDEwNjgsOTgsMTA0Miw2NiwxMDg5LDk5LDEwNTcsNjcsMTA3NywxMDEsMTA0NSw2OSwxMDUzLDcyLDMwNSwxMDUsMTA1MCw3NSw5MjEsNzMsMTA1Miw3NywxMDg2LDExMSwxMDU0LDc5LDEwMDksMTEyLDEwODgsMTEyLDEwNTYsODAsMTA3NSwxMTQsMTA1OCw4NCwyMTUsMTIwLDEwOTMsMTIwLDEwNjEsODgsMTA5MSwxMjEsMTA1OSw4OSw2NTI4MywzNSw2NTI4OCw0MCw2NTI4OSw0MSw2NTI5Miw0NCw2NTMwNyw1OSw2NTMxMSw2M10sImphIjpbODIxMSw0NSw2NTMwNiw1OCw2NTI4MSwzMyw4MjE2LDk2LDgyMTcsOTYsODI0NSw5NiwxODAsOTYsMTA0Nyw1MSwxMDczLDU0LDEwNzIsOTcsMTA0MCw2NSwxMDY4LDk4LDEwNDIsNjYsMTA4OSw5OSwxMDU3LDY3LDEwNzcsMTAxLDEwNDUsNjksMTA1Myw3MiwzMDUsMTA1LDEwNTAsNzUsOTIxLDczLDEwNTIsNzcsMTA4NiwxMTEsMTA1NCw3OSwxMDA5LDExMiwxMDg4LDExMiwxMDU2LDgwLDEwNzUsMTE0LDEwNTgsODQsMjE1LDEyMCwxMDkzLDEyMCwxMDYxLDg4LDEwOTEsMTIxLDEwNTksODksNjUyODMsMzUsNjUyOTIsNDQsNjUzMDcsNTldLCJrbyI6WzgyMTEsNDUsNjUzNzQsMTI2LDY1MzA2LDU4LDY1MjgxLDMzLDgyNDUsOTYsMTgwLDk2LDEyNDk0LDQ3LDEwNDcsNTEsMTA3Myw1NCwxMDcyLDk3LDEwNDAsNjUsMTA2OCw5OCwxMDQyLDY2LDEwODksOTksMTA1Nyw2NywxMDc3LDEwMSwxMDQ1LDY5LDEwNTMsNzIsMzA1LDEwNSwxMDUwLDc1LDkyMSw3MywxMDUyLDc3LDEwODYsMTExLDEwNTQsNzksMTAwOSwxMTIsMTA4OCwxMTIsMTA1Niw4MCwxMDc1LDExNCwxMDU4LDg0LDIxNSwxMjAsMTA5MywxMjAsMTA2MSw4OCwxMDkxLDEyMSwxMDU5LDg5LDY1MjgzLDM1LDY1Mjg4LDQwLDY1Mjg5LDQxLDY1MjkyLDQ0LDY1MzA3LDU5LDY1MzExLDYzXSwicGwiOls2NTM3NCwxMjYsNjUzMDYsNTgsNjUyODEsMzMsODIxNiw5Niw4MjE3LDk2LDgyNDUsOTYsMTgwLDk2LDEyNDk0LDQ3LDEwNDcsNTEsMTA3Myw1NCwxMDcyLDk3LDEwNDAsNjUsMTA2OCw5OCwxMDQyLDY2LDEwODksOTksMTA1Nyw2NywxMDc3LDEwMSwxMDQ1LDY5LDEwNTMsNzIsMzA1LDEwNSwxMDUwLDc1LDkyMSw3MywxMDUyLDc3LDEwODYsMTExLDEwNTQsNzksMTAwOSwxMTIsMTA4OCwxMTIsMTA1Niw4MCwxMDc1LDExNCwxMDU4LDg0LDIxNSwxMjAsMTA5MywxMjAsMTA2MSw4OCwxMDkxLDEyMSwxMDU5LDg5LDY1MjgzLDM1LDY1Mjg4LDQwLDY1Mjg5LDQxLDY1MjkyLDQ0LDY1MzA3LDU5LDY1MzExLDYzXSwicHQtQlIiOls2NTM3NCwxMjYsNjUzMDYsNTgsNjUyODEsMzMsODIxNiw5Niw4MjE3LDk2LDgyNDUsOTYsMTgwLDk2LDEyNDk0LDQ3LDEwNDcsNTEsMTA3Myw1NCwxMDcyLDk3LDEwNDAsNjUsMTA2OCw5OCwxMDQyLDY2LDEwODksOTksMTA1Nyw2NywxMDc3LDEwMSwxMDQ1LDY5LDEwNTMsNzIsMzA1LDEwNSwxMDUwLDc1LDkyMSw3MywxMDUyLDc3LDEwODYsMTExLDEwNTQsNzksMTAwOSwxMTIsMTA4OCwxMTIsMTA1Niw4MCwxMDc1LDExNCwxMDU4LDg0LDIxNSwxMjAsMTA5MywxMjAsMTA2MSw4OCwxMDkxLDEyMSwxMDU5LDg5LDY1MjgzLDM1LDY1Mjg4LDQwLDY1Mjg5LDQxLDY1MjkyLDQ0LDY1MzA3LDU5LDY1MzExLDYzXSwicXBzLXBsb2MiOlsxNjAsMzIsODIxMSw0NSw2NTM3NCwxMjYsNjUzMDYsNTgsNjUyODEsMzMsODIxNiw5Niw4MjE3LDk2LDgyNDUsOTYsMTgwLDk2LDEyNDk0LDQ3LDEwNDcsNTEsMTA3Myw1NCwxMDcyLDk3LDEwNDAsNjUsMTA2OCw5OCwxMDQyLDY2LDEwODksOTksMTA1Nyw2NywxMDc3LDEwMSwxMDQ1LDY5LDEwNTMsNzIsMzA1LDEwNSwxMDUwLDc1LDkyMSw3MywxMDUyLDc3LDEwODYsMTExLDEwNTQsNzksMTA4OCwxMTIsMTA1Niw4MCwxMDc1LDExNCwxMDU4LDg0LDIxNSwxMjAsMTA5MywxMjAsMTA2MSw4OCwxMDkxLDEyMSwxMDU5LDg5LDY1MjgzLDM1LDY1Mjg4LDQwLDY1Mjg5LDQxLDY1MjkyLDQ0LDY1MzA3LDU5LDY1MzExLDYzXSwicnUiOls2NTM3NCwxMjYsNjUzMDYsNTgsNjUyODEsMzMsODIxNiw5Niw4MjE3LDk2LDgyNDUsOTYsMTgwLDk2LDEyNDk0LDQ3LDMwNSwxMDUsOTIxLDczLDEwMDksMTEyLDIxNSwxMjAsNjUyODMsMzUsNjUyODgsNDAsNjUyODksNDEsNjUyOTIsNDQsNjUzMDcsNTksNjUzMTEsNjNdLCJ0ciI6WzE2MCwzMiw4MjExLDQ1LDY1Mzc0LDEyNiw2NTMwNiw1OCw2NTI4MSwzMyw4MjQ1LDk2LDE4MCw5NiwxMjQ5NCw0NywxMDQ3LDUxLDEwNzMsNTQsMTA3Miw5NywxMDQwLDY1LDEwNjgsOTgsMTA0Miw2NiwxMDg5LDk5LDEwNTcsNjcsMTA3NywxMDEsMTA0NSw2OSwxMDUzLDcyLDEwNTAsNzUsOTIxLDczLDEwNTIsNzcsMTA4NiwxMTEsMTA1NCw3OSwxMDA5LDExMiwxMDg4LDExMiwxMDU2LDgwLDEwNzUsMTE0LDEwNTgsODQsMjE1LDEyMCwxMDkzLDEyMCwxMDYxLDg4LDEwOTEsMTIxLDEwNTksODksNjUyODMsMzUsNjUyODgsNDAsNjUyODksNDEsNjUyOTIsNDQsNjUzMDcsNTksNjUzMTEsNjNdLCJ6aC1oYW5zIjpbNjUzNzQsMTI2LDY1MzA2LDU4LDY1MjgxLDMzLDgyNDUsOTYsMTgwLDk2LDEyNDk0LDQ3LDEwNDcsNTEsMTA3Myw1NCwxMDcyLDk3LDEwNDAsNjUsMTA2OCw5OCwxMDQyLDY2LDEwODksOTksMTA1Nyw2NywxMDc3LDEwMSwxMDQ1LDY5LDEwNTMsNzIsMzA1LDEwNSwxMDUwLDc1LDkyMSw3MywxMDUyLDc3LDEwODYsMTExLDEwNTQsNzksMTAwOSwxMTIsMTA4OCwxMTIsMTA1Niw4MCwxMDc1LDExNCwxMDU4LDg0LDIxNSwxMjAsMTA5MywxMjAsMTA2MSw4OCwxMDkxLDEyMSwxMDU5LDg5LDY1Mjg4LDQwLDY1Mjg5LDQxXSwiemgtaGFudCI6WzgyMTEsNDUsNjUzNzQsMTI2LDE4MCw5NiwxMjQ5NCw0NywxMDQ3LDUxLDEwNzMsNTQsMTA3Miw5NywxMDQwLDY1LDEwNjgsOTgsMTA0Miw2NiwxMDg5LDk5LDEwNTcsNjcsMTA3NywxMDEsMTA0NSw2OSwxMDUzLDcyLDMwNSwxMDUsMTA1MCw3NSw5MjEsNzMsMTA1Miw3NywxMDg2LDExMSwxMDU0LDc5LDEwMDksMTEyLDEwODgsMTEyLDEwNTYsODAsMTA3NSwxMTQsMTA1OCw4NCwyMTUsMTIwLDEwOTMsMTIwLDEwNjEsODgsMTA5MSwxMjEsMTA1OSw4OSw2NTI4MywzNSw2NTMwNyw1OV19JykpLHFlLmNhY2hlPW5ldyBFaCh7Z2V0Q2FjaGVLZXk6SlNPTi5zdHJpbmdpZnl9LHQ9PntmdW5jdGlvbiBuKGQpe2NvbnN0IHU9bmV3IE1hcDtmb3IobGV0IGY9MDtmPGQubGVuZ3RoO2YrPTIpdS5zZXQoZFtmXSxkW2YrMV0pO3JldHVybiB1fWZ1bmN0aW9uIHIoZCx1KXtjb25zdCBmPW5ldyBNYXAoZCk7Zm9yKGNvbnN0W20sdl1vZiB1KWYuc2V0KG0sdik7cmV0dXJuIGZ9ZnVuY3Rpb24gaShkLHUpe2lmKCFkKXJldHVybiB1O2NvbnN0IGY9bmV3IE1hcDtmb3IoY29uc3RbbSx2XW9mIGQpdS5oYXMobSkmJmYuc2V0KG0sdik7cmV0dXJuIGZ9Y29uc3Qgcz1xZS5hbWJpZ3VvdXNDaGFyYWN0ZXJEYXRhLnZhbHVlO2xldCBhPXQuZmlsdGVyKGQ9PiFkLnN0YXJ0c1dpdGgoIl8iKSYmZCBpbiBzKTthLmxlbmd0aD09PTAmJihhPVsiX2RlZmF1bHQiXSk7bGV0IGw7Zm9yKGNvbnN0IGQgb2YgYSl7Y29uc3QgdT1uKHNbZF0pO2w9aShsLHUpfWNvbnN0IG89bihzLl9jb21tb24pLGM9cihvLGwpO3JldHVybiBuZXcgcWUoYyl9KSxxZS5fbG9jYWxlcz1uZXcgVHMoKCk9Pk9iamVjdC5rZXlzKHFlLmFtYmlndW91c0NoYXJhY3RlckRhdGEudmFsdWUpLmZpbHRlcih0PT4hdC5zdGFydHNXaXRoKCJfIikpKTtsZXQgb249cWU7Y29uc3QgWnQ9Y2xhc3MgWnR7c3RhdGljIGdldFJhd0RhdGEoKXtyZXR1cm4gSlNPTi5wYXJzZSgiWzksMTAsMTEsMTIsMTMsMzIsMTI3LDE2MCwxNzMsODQ3LDE1NjQsNDQ0Nyw0NDQ4LDYwNjgsNjA2OSw2MTU1LDYxNTYsNjE1Nyw2MTU4LDczNTUsNzM1Niw4MTkyLDgxOTMsODE5NCw4MTk1LDgxOTYsODE5Nyw4MTk4LDgxOTksODIwMCw4MjAxLDgyMDIsODIwMyw4MjA0LDgyMDUsODIwNiw4MjA3LDgyMzQsODIzNSw4MjM2LDgyMzcsODIzOCw4MjM5LDgyODcsODI4OCw4Mjg5LDgyOTAsODI5MSw4MjkyLDgyOTMsODI5NCw4Mjk1LDgyOTYsODI5Nyw4Mjk4LDgyOTksODMwMCw4MzAxLDgzMDIsODMwMywxMDI0MCwxMjI4OCwxMjY0NCw2NTAyNCw2NTAyNSw2NTAyNiw2NTAyNyw2NTAyOCw2NTAyOSw2NTAzMCw2NTAzMSw2NTAzMiw2NTAzMyw2NTAzNCw2NTAzNSw2NTAzNiw2NTAzNyw2NTAzOCw2NTAzOSw2NTI3OSw2NTQ0MCw2NTUyMCw2NTUyMSw2NTUyMiw2NTUyMyw2NTUyNCw2NTUyNSw2NTUyNiw2NTUyNyw2NTUyOCw2NTUzMiw3ODg0NCwxMTkxNTUsMTE5MTU2LDExOTE1NywxMTkxNTgsMTE5MTU5LDExOTE2MCwxMTkxNjEsMTE5MTYyLDkxNzUwNCw5MTc1MDUsOTE3NTA2LDkxNzUwNyw5MTc1MDgsOTE3NTA5LDkxNzUxMCw5MTc1MTEsOTE3NTEyLDkxNzUxMyw5MTc1MTQsOTE3NTE1LDkxNzUxNiw5MTc1MTcsOTE3NTE4LDkxNzUxOSw5MTc1MjAsOTE3NTIxLDkxNzUyMiw5MTc1MjMsOTE3NTI0LDkxNzUyNSw5MTc1MjYsOTE3NTI3LDkxNzUyOCw5MTc1MjksOTE3NTMwLDkxNzUzMSw5MTc1MzIsOTE3NTMzLDkxNzUzNCw5MTc1MzUsOTE3NTM2LDkxNzUzNyw5MTc1MzgsOTE3NTM5LDkxNzU0MCw5MTc1NDEsOTE3NTQyLDkxNzU0Myw5MTc1NDQsOTE3NTQ1LDkxNzU0Niw5MTc1NDcsOTE3NTQ4LDkxNzU0OSw5MTc1NTAsOTE3NTUxLDkxNzU1Miw5MTc1NTMsOTE3NTU0LDkxNzU1NSw5MTc1NTYsOTE3NTU3LDkxNzU1OCw5MTc1NTksOTE3NTYwLDkxNzU2MSw5MTc1NjIsOTE3NTYzLDkxNzU2NCw5MTc1NjUsOTE3NTY2LDkxNzU2Nyw5MTc1NjgsOTE3NTY5LDkxNzU3MCw5MTc1NzEsOTE3NTcyLDkxNzU3Myw5MTc1NzQsOTE3NTc1LDkxNzU3Niw5MTc1NzcsOTE3NTc4LDkxNzU3OSw5MTc1ODAsOTE3NTgxLDkxNzU4Miw5MTc1ODMsOTE3NTg0LDkxNzU4NSw5MTc1ODYsOTE3NTg3LDkxNzU4OCw5MTc1ODksOTE3NTkwLDkxNzU5MSw5MTc1OTIsOTE3NTkzLDkxNzU5NCw5MTc1OTUsOTE3NTk2LDkxNzU5Nyw5MTc1OTgsOTE3NTk5LDkxNzYwMCw5MTc2MDEsOTE3NjAyLDkxNzYwMyw5MTc2MDQsOTE3NjA1LDkxNzYwNiw5MTc2MDcsOTE3NjA4LDkxNzYwOSw5MTc2MTAsOTE3NjExLDkxNzYxMiw5MTc2MTMsOTE3NjE0LDkxNzYxNSw5MTc2MTYsOTE3NjE3LDkxNzYxOCw5MTc2MTksOTE3NjIwLDkxNzYyMSw5MTc2MjIsOTE3NjIzLDkxNzYyNCw5MTc2MjUsOTE3NjI2LDkxNzYyNyw5MTc2MjgsOTE3NjI5LDkxNzYzMCw5MTc2MzEsOTE3NzYwLDkxNzc2MSw5MTc3NjIsOTE3NzYzLDkxNzc2NCw5MTc3NjUsOTE3NzY2LDkxNzc2Nyw5MTc3NjgsOTE3NzY5LDkxNzc3MCw5MTc3NzEsOTE3NzcyLDkxNzc3Myw5MTc3NzQsOTE3Nzc1LDkxNzc3Niw5MTc3NzcsOTE3Nzc4LDkxNzc3OSw5MTc3ODAsOTE3NzgxLDkxNzc4Miw5MTc3ODMsOTE3Nzg0LDkxNzc4NSw5MTc3ODYsOTE3Nzg3LDkxNzc4OCw5MTc3ODksOTE3NzkwLDkxNzc5MSw5MTc3OTIsOTE3NzkzLDkxNzc5NCw5MTc3OTUsOTE3Nzk2LDkxNzc5Nyw5MTc3OTgsOTE3Nzk5LDkxNzgwMCw5MTc4MDEsOTE3ODAyLDkxNzgwMyw5MTc4MDQsOTE3ODA1LDkxNzgwNiw5MTc4MDcsOTE3ODA4LDkxNzgwOSw5MTc4MTAsOTE3ODExLDkxNzgxMiw5MTc4MTMsOTE3ODE0LDkxNzgxNSw5MTc4MTYsOTE3ODE3LDkxNzgxOCw5MTc4MTksOTE3ODIwLDkxNzgyMSw5MTc4MjIsOTE3ODIzLDkxNzgyNCw5MTc4MjUsOTE3ODI2LDkxNzgyNyw5MTc4MjgsOTE3ODI5LDkxNzgzMCw5MTc4MzEsOTE3ODMyLDkxNzgzMyw5MTc4MzQsOTE3ODM1LDkxNzgzNiw5MTc4MzcsOTE3ODM4LDkxNzgzOSw5MTc4NDAsOTE3ODQxLDkxNzg0Miw5MTc4NDMsOTE3ODQ0LDkxNzg0NSw5MTc4NDYsOTE3ODQ3LDkxNzg0OCw5MTc4NDksOTE3ODUwLDkxNzg1MSw5MTc4NTIsOTE3ODUzLDkxNzg1NCw5MTc4NTUsOTE3ODU2LDkxNzg1Nyw5MTc4NTgsOTE3ODU5LDkxNzg2MCw5MTc4NjEsOTE3ODYyLDkxNzg2Myw5MTc4NjQsOTE3ODY1LDkxNzg2Niw5MTc4NjcsOTE3ODY4LDkxNzg2OSw5MTc4NzAsOTE3ODcxLDkxNzg3Miw5MTc4NzMsOTE3ODc0LDkxNzg3NSw5MTc4NzYsOTE3ODc3LDkxNzg3OCw5MTc4NzksOTE3ODgwLDkxNzg4MSw5MTc4ODIsOTE3ODgzLDkxNzg4NCw5MTc4ODUsOTE3ODg2LDkxNzg4Nyw5MTc4ODgsOTE3ODg5LDkxNzg5MCw5MTc4OTEsOTE3ODkyLDkxNzg5Myw5MTc4OTQsOTE3ODk1LDkxNzg5Niw5MTc4OTcsOTE3ODk4LDkxNzg5OSw5MTc5MDAsOTE3OTAxLDkxNzkwMiw5MTc5MDMsOTE3OTA0LDkxNzkwNSw5MTc5MDYsOTE3OTA3LDkxNzkwOCw5MTc5MDksOTE3OTEwLDkxNzkxMSw5MTc5MTIsOTE3OTEzLDkxNzkxNCw5MTc5MTUsOTE3OTE2LDkxNzkxNyw5MTc5MTgsOTE3OTE5LDkxNzkyMCw5MTc5MjEsOTE3OTIyLDkxNzkyMyw5MTc5MjQsOTE3OTI1LDkxNzkyNiw5MTc5MjcsOTE3OTI4LDkxNzkyOSw5MTc5MzAsOTE3OTMxLDkxNzkzMiw5MTc5MzMsOTE3OTM0LDkxNzkzNSw5MTc5MzYsOTE3OTM3LDkxNzkzOCw5MTc5MzksOTE3OTQwLDkxNzk0MSw5MTc5NDIsOTE3OTQzLDkxNzk0NCw5MTc5NDUsOTE3OTQ2LDkxNzk0Nyw5MTc5NDgsOTE3OTQ5LDkxNzk1MCw5MTc5NTEsOTE3OTUyLDkxNzk1Myw5MTc5NTQsOTE3OTU1LDkxNzk1Niw5MTc5NTcsOTE3OTU4LDkxNzk1OSw5MTc5NjAsOTE3OTYxLDkxNzk2Miw5MTc5NjMsOTE3OTY0LDkxNzk2NSw5MTc5NjYsOTE3OTY3LDkxNzk2OCw5MTc5NjksOTE3OTcwLDkxNzk3MSw5MTc5NzIsOTE3OTczLDkxNzk3NCw5MTc5NzUsOTE3OTc2LDkxNzk3Nyw5MTc5NzgsOTE3OTc5LDkxNzk4MCw5MTc5ODEsOTE3OTgyLDkxNzk4Myw5MTc5ODQsOTE3OTg1LDkxNzk4Niw5MTc5ODcsOTE3OTg4LDkxNzk4OSw5MTc5OTAsOTE3OTkxLDkxNzk5Miw5MTc5OTMsOTE3OTk0LDkxNzk5NSw5MTc5OTYsOTE3OTk3LDkxNzk5OCw5MTc5OTldIil9c3RhdGljIGdldERhdGEoKXtyZXR1cm4gdGhpcy5fZGF0YXx8KHRoaXMuX2RhdGE9bmV3IFNldChadC5nZXRSYXdEYXRhKCkpKSx0aGlzLl9kYXRhfXN0YXRpYyBpc0ludmlzaWJsZUNoYXJhY3Rlcih0KXtyZXR1cm4gWnQuZ2V0RGF0YSgpLmhhcyh0KX1zdGF0aWMgZ2V0IGNvZGVQb2ludHMoKXtyZXR1cm4gWnQuZ2V0RGF0YSgpfX07WnQuX2RhdGE9dm9pZCAwO2xldCBsbj1adDtjb25zdCBMaD0iJGluaXRpYWxpemUiO2NsYXNzIHpoe2NvbnN0cnVjdG9yKHQsbixyLGkpe3RoaXMudnNXb3JrZXI9dCx0aGlzLnJlcT1uLHRoaXMubWV0aG9kPXIsdGhpcy5hcmdzPWksdGhpcy50eXBlPTB9fWNsYXNzIFZze2NvbnN0cnVjdG9yKHQsbixyLGkpe3RoaXMudnNXb3JrZXI9dCx0aGlzLnNlcT1uLHRoaXMucmVzPXIsdGhpcy5lcnI9aSx0aGlzLnR5cGU9MX19Y2xhc3MgUGh7Y29uc3RydWN0b3IodCxuLHIsaSl7dGhpcy52c1dvcmtlcj10LHRoaXMucmVxPW4sdGhpcy5ldmVudE5hbWU9cix0aGlzLmFyZz1pLHRoaXMudHlwZT0yfX1jbGFzcyBUaHtjb25zdHJ1Y3Rvcih0LG4scil7dGhpcy52c1dvcmtlcj10LHRoaXMucmVxPW4sdGhpcy5ldmVudD1yLHRoaXMudHlwZT0zfX1jbGFzcyBPaHtjb25zdHJ1Y3Rvcih0LG4pe3RoaXMudnNXb3JrZXI9dCx0aGlzLnJlcT1uLHRoaXMudHlwZT00fX1jbGFzcyBXaHtjb25zdHJ1Y3Rvcih0KXt0aGlzLl93b3JrZXJJZD0tMSx0aGlzLl9oYW5kbGVyPXQsdGhpcy5fbGFzdFNlbnRSZXE9MCx0aGlzLl9wZW5kaW5nUmVwbGllcz1PYmplY3QuY3JlYXRlKG51bGwpLHRoaXMuX3BlbmRpbmdFbWl0dGVycz1uZXcgTWFwLHRoaXMuX3BlbmRpbmdFdmVudHM9bmV3IE1hcH1zZXRXb3JrZXJJZCh0KXt0aGlzLl93b3JrZXJJZD10fXNlbmRNZXNzYWdlKHQsbil7Y29uc3Qgcj1TdHJpbmcoKyt0aGlzLl9sYXN0U2VudFJlcSk7cmV0dXJuIG5ldyBQcm9taXNlKChpLHMpPT57dGhpcy5fcGVuZGluZ1JlcGxpZXNbcl09e3Jlc29sdmU6aSxyZWplY3Q6c30sdGhpcy5fc2VuZChuZXcgemgodGhpcy5fd29ya2VySWQscix0LG4pKX0pfWxpc3Rlbih0LG4pe2xldCByPW51bGw7Y29uc3QgaT1uZXcgTGUoe29uV2lsbEFkZEZpcnN0TGlzdGVuZXI6KCk9PntyPVN0cmluZygrK3RoaXMuX2xhc3RTZW50UmVxKSx0aGlzLl9wZW5kaW5nRW1pdHRlcnMuc2V0KHIsaSksdGhpcy5fc2VuZChuZXcgUGgodGhpcy5fd29ya2VySWQscix0LG4pKX0sb25EaWRSZW1vdmVMYXN0TGlzdGVuZXI6KCk9Pnt0aGlzLl9wZW5kaW5nRW1pdHRlcnMuZGVsZXRlKHIpLHRoaXMuX3NlbmQobmV3IE9oKHRoaXMuX3dvcmtlcklkLHIpKSxyPW51bGx9fSk7cmV0dXJuIGkuZXZlbnR9aGFuZGxlTWVzc2FnZSh0KXshdHx8IXQudnNXb3JrZXJ8fHRoaXMuX3dvcmtlcklkIT09LTEmJnQudnNXb3JrZXIhPT10aGlzLl93b3JrZXJJZHx8dGhpcy5faGFuZGxlTWVzc2FnZSh0KX1faGFuZGxlTWVzc2FnZSh0KXtzd2l0Y2godC50eXBlKXtjYXNlIDE6cmV0dXJuIHRoaXMuX2hhbmRsZVJlcGx5TWVzc2FnZSh0KTtjYXNlIDA6cmV0dXJuIHRoaXMuX2hhbmRsZVJlcXVlc3RNZXNzYWdlKHQpO2Nhc2UgMjpyZXR1cm4gdGhpcy5faGFuZGxlU3Vic2NyaWJlRXZlbnRNZXNzYWdlKHQpO2Nhc2UgMzpyZXR1cm4gdGhpcy5faGFuZGxlRXZlbnRNZXNzYWdlKHQpO2Nhc2UgNDpyZXR1cm4gdGhpcy5faGFuZGxlVW5zdWJzY3JpYmVFdmVudE1lc3NhZ2UodCl9fV9oYW5kbGVSZXBseU1lc3NhZ2UodCl7aWYoIXRoaXMuX3BlbmRpbmdSZXBsaWVzW3Quc2VxXSl7Y29uc29sZS53YXJuKCJHb3QgcmVwbHkgdG8gdW5rbm93biBzZXEiKTtyZXR1cm59Y29uc3Qgbj10aGlzLl9wZW5kaW5nUmVwbGllc1t0LnNlcV07aWYoZGVsZXRlIHRoaXMuX3BlbmRpbmdSZXBsaWVzW3Quc2VxXSx0LmVycil7bGV0IHI9dC5lcnI7dC5lcnIuJGlzRXJyb3ImJihyPW5ldyBFcnJvcixyLm5hbWU9dC5lcnIubmFtZSxyLm1lc3NhZ2U9dC5lcnIubWVzc2FnZSxyLnN0YWNrPXQuZXJyLnN0YWNrKSxuLnJlamVjdChyKTtyZXR1cm59bi5yZXNvbHZlKHQucmVzKX1faGFuZGxlUmVxdWVzdE1lc3NhZ2UodCl7Y29uc3Qgbj10LnJlcTt0aGlzLl9oYW5kbGVyLmhhbmRsZU1lc3NhZ2UodC5tZXRob2QsdC5hcmdzKS50aGVuKGk9Pnt0aGlzLl9zZW5kKG5ldyBWcyh0aGlzLl93b3JrZXJJZCxuLGksdm9pZCAwKSl9LGk9PntpLmRldGFpbCBpbnN0YW5jZW9mIEVycm9yJiYoaS5kZXRhaWw9QXMoaS5kZXRhaWwpKSx0aGlzLl9zZW5kKG5ldyBWcyh0aGlzLl93b3JrZXJJZCxuLHZvaWQgMCxBcyhpKSkpfSl9X2hhbmRsZVN1YnNjcmliZUV2ZW50TWVzc2FnZSh0KXtjb25zdCBuPXQucmVxLHI9dGhpcy5faGFuZGxlci5oYW5kbGVFdmVudCh0LmV2ZW50TmFtZSx0LmFyZykoaT0+e3RoaXMuX3NlbmQobmV3IFRoKHRoaXMuX3dvcmtlcklkLG4saSkpfSk7dGhpcy5fcGVuZGluZ0V2ZW50cy5zZXQobixyKX1faGFuZGxlRXZlbnRNZXNzYWdlKHQpe2lmKCF0aGlzLl9wZW5kaW5nRW1pdHRlcnMuaGFzKHQucmVxKSl7Y29uc29sZS53YXJuKCJHb3QgZXZlbnQgZm9yIHVua25vd24gcmVxIik7cmV0dXJufXRoaXMuX3BlbmRpbmdFbWl0dGVycy5nZXQodC5yZXEpLmZpcmUodC5ldmVudCl9X2hhbmRsZVVuc3Vic2NyaWJlRXZlbnRNZXNzYWdlKHQpe2lmKCF0aGlzLl9wZW5kaW5nRXZlbnRzLmhhcyh0LnJlcSkpe2NvbnNvbGUud2FybigiR290IHVuc3Vic2NyaWJlIGZvciB1bmtub3duIHJlcSIpO3JldHVybn10aGlzLl9wZW5kaW5nRXZlbnRzLmdldCh0LnJlcSkuZGlzcG9zZSgpLHRoaXMuX3BlbmRpbmdFdmVudHMuZGVsZXRlKHQucmVxKX1fc2VuZCh0KXtjb25zdCBuPVtdO2lmKHQudHlwZT09PTApZm9yKGxldCByPTA7cjx0LmFyZ3MubGVuZ3RoO3IrKyl0LmFyZ3Nbcl1pbnN0YW5jZW9mIEFycmF5QnVmZmVyJiZuLnB1c2godC5hcmdzW3JdKTtlbHNlIHQudHlwZT09PTEmJnQucmVzIGluc3RhbmNlb2YgQXJyYXlCdWZmZXImJm4ucHVzaCh0LnJlcyk7dGhpcy5faGFuZGxlci5zZW5kTWVzc2FnZSh0LG4pfX1mdW5jdGlvbiBVcyhlKXtyZXR1cm4gZVswXT09PSJvIiYmZVsxXT09PSJuIiYmT3MoZS5jaGFyQ29kZUF0KDIpKX1mdW5jdGlvbiAkcyhlKXtyZXR1cm4vXm9uRHluYW1pYy8udGVzdChlKSYmT3MoZS5jaGFyQ29kZUF0KDkpKX1mdW5jdGlvbiBWaChlLHQsbil7Y29uc3Qgcj1hPT5mdW5jdGlvbigpe2NvbnN0IGw9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDApO3JldHVybiB0KGEsbCl9LGk9YT0+ZnVuY3Rpb24obCl7cmV0dXJuIG4oYSxsKX0scz17fTtmb3IoY29uc3QgYSBvZiBlKXtpZigkcyhhKSl7c1thXT1pKGEpO2NvbnRpbnVlfWlmKFVzKGEpKXtzW2FdPW4oYSx2b2lkIDApO2NvbnRpbnVlfXNbYV09cihhKX1yZXR1cm4gc31jbGFzcyBVaHtjb25zdHJ1Y3Rvcih0LG4pe3RoaXMuX3JlcXVlc3RIYW5kbGVyRmFjdG9yeT1uLHRoaXMuX3JlcXVlc3RIYW5kbGVyPW51bGwsdGhpcy5fcHJvdG9jb2w9bmV3IFdoKHtzZW5kTWVzc2FnZToocixpKT0+e3QocixpKX0saGFuZGxlTWVzc2FnZToocixpKT0+dGhpcy5faGFuZGxlTWVzc2FnZShyLGkpLGhhbmRsZUV2ZW50OihyLGkpPT50aGlzLl9oYW5kbGVFdmVudChyLGkpfSl9b25tZXNzYWdlKHQpe3RoaXMuX3Byb3RvY29sLmhhbmRsZU1lc3NhZ2UodCl9X2hhbmRsZU1lc3NhZ2UodCxuKXtpZih0PT09TGgpcmV0dXJuIHRoaXMuaW5pdGlhbGl6ZShuWzBdLG5bMV0sblsyXSxuWzNdKTtpZighdGhpcy5fcmVxdWVzdEhhbmRsZXJ8fHR5cGVvZiB0aGlzLl9yZXF1ZXN0SGFuZGxlclt0XSE9ImZ1bmN0aW9uIilyZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKCJNaXNzaW5nIHJlcXVlc3RIYW5kbGVyIG9yIG1ldGhvZDogIit0KSk7dHJ5e3JldHVybiBQcm9taXNlLnJlc29sdmUodGhpcy5fcmVxdWVzdEhhbmRsZXJbdF0uYXBwbHkodGhpcy5fcmVxdWVzdEhhbmRsZXIsbikpfWNhdGNoKHIpe3JldHVybiBQcm9taXNlLnJlamVjdChyKX19X2hhbmRsZUV2ZW50KHQsbil7aWYoIXRoaXMuX3JlcXVlc3RIYW5kbGVyKXRocm93IG5ldyBFcnJvcigiTWlzc2luZyByZXF1ZXN0SGFuZGxlciIpO2lmKCRzKHQpKXtjb25zdCByPXRoaXMuX3JlcXVlc3RIYW5kbGVyW3RdLmNhbGwodGhpcy5fcmVxdWVzdEhhbmRsZXIsbik7aWYodHlwZW9mIHIhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IEVycm9yKGBNaXNzaW5nIGR5bmFtaWMgZXZlbnQgJHt0fSBvbiByZXF1ZXN0IGhhbmRsZXIuYCk7cmV0dXJuIHJ9aWYoVXModCkpe2NvbnN0IHI9dGhpcy5fcmVxdWVzdEhhbmRsZXJbdF07aWYodHlwZW9mIHIhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IEVycm9yKGBNaXNzaW5nIGV2ZW50ICR7dH0gb24gcmVxdWVzdCBoYW5kbGVyLmApO3JldHVybiByfXRocm93IG5ldyBFcnJvcihgTWFsZm9ybWVkIGV2ZW50IG5hbWUgJHt0fWApfWluaXRpYWxpemUodCxuLHIsaSl7dGhpcy5fcHJvdG9jb2wuc2V0V29ya2VySWQodCk7Y29uc3QgbD1WaChpLChvLGMpPT50aGlzLl9wcm90b2NvbC5zZW5kTWVzc2FnZShvLGMpLChvLGMpPT50aGlzLl9wcm90b2NvbC5saXN0ZW4obyxjKSk7cmV0dXJuIHRoaXMuX3JlcXVlc3RIYW5kbGVyRmFjdG9yeT8odGhpcy5fcmVxdWVzdEhhbmRsZXI9dGhpcy5fcmVxdWVzdEhhbmRsZXJGYWN0b3J5KGwpLFByb21pc2UucmVzb2x2ZShXcih0aGlzLl9yZXF1ZXN0SGFuZGxlcikpKToobiYmKHR5cGVvZiBuLmJhc2VVcmw8InUiJiZkZWxldGUgbi5iYXNlVXJsLHR5cGVvZiBuLnBhdGhzPCJ1IiYmdHlwZW9mIG4ucGF0aHMudnM8InUiJiZkZWxldGUgbi5wYXRocy52cyx0eXBlb2Ygbi50cnVzdGVkVHlwZXNQb2xpY3k8InUiJiZkZWxldGUgbi50cnVzdGVkVHlwZXNQb2xpY3ksbi5jYXRjaEVycm9yPSEwLGdsb2JhbFRoaXMucmVxdWlyZS5jb25maWcobikpLG5ldyBQcm9taXNlKChvLGMpPT57Y29uc3QgZD1nbG9iYWxUaGlzLnJlcXVpcmU7ZChbcl0sdT0+e2lmKHRoaXMuX3JlcXVlc3RIYW5kbGVyPXUuY3JlYXRlKGwpLCF0aGlzLl9yZXF1ZXN0SGFuZGxlcil7YyhuZXcgRXJyb3IoIk5vIFJlcXVlc3RIYW5kbGVyISIpKTtyZXR1cm59byhXcih0aGlzLl9yZXF1ZXN0SGFuZGxlcikpfSxjKX0pKX19Y2xhc3MgYXR7Y29uc3RydWN0b3IodCxuLHIsaSl7dGhpcy5vcmlnaW5hbFN0YXJ0PXQsdGhpcy5vcmlnaW5hbExlbmd0aD1uLHRoaXMubW9kaWZpZWRTdGFydD1yLHRoaXMubW9kaWZpZWRMZW5ndGg9aX1nZXRPcmlnaW5hbEVuZCgpe3JldHVybiB0aGlzLm9yaWdpbmFsU3RhcnQrdGhpcy5vcmlnaW5hbExlbmd0aH1nZXRNb2RpZmllZEVuZCgpe3JldHVybiB0aGlzLm1vZGlmaWVkU3RhcnQrdGhpcy5tb2RpZmllZExlbmd0aH19ZnVuY3Rpb24gQnMoZSx0KXtyZXR1cm4odDw8NSktdCtlfDB9ZnVuY3Rpb24gJGgoZSx0KXt0PUJzKDE0OTQxNyx0KTtmb3IobGV0IG49MCxyPWUubGVuZ3RoO248cjtuKyspdD1CcyhlLmNoYXJDb2RlQXQobiksdCk7cmV0dXJuIHR9ZnVuY3Rpb24ganIoZSx0LG49MzIpe2NvbnN0IHI9bi10LGk9figoMTw8ciktMSk7cmV0dXJuKGU8PHR8KGkmZSk+Pj5yKT4+PjB9ZnVuY3Rpb24gcXMoZSx0PTAsbj1lLmJ5dGVMZW5ndGgscj0wKXtmb3IobGV0IGk9MDtpPG47aSsrKWVbdCtpXT1yfWZ1bmN0aW9uIEJoKGUsdCxuPSIwIil7Zm9yKDtlLmxlbmd0aDx0OyllPW4rZTtyZXR1cm4gZX1mdW5jdGlvbiBjbihlLHQ9MzIpe3JldHVybiBlIGluc3RhbmNlb2YgQXJyYXlCdWZmZXI/QXJyYXkuZnJvbShuZXcgVWludDhBcnJheShlKSkubWFwKG49Pm4udG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDIsIjAiKSkuam9pbigiIik6QmgoKGU+Pj4wKS50b1N0cmluZygxNiksdC80KX1jb25zdCBGcj1jbGFzcyBGcntjb25zdHJ1Y3Rvcigpe3RoaXMuX2gwPTE3MzI1ODQxOTMsdGhpcy5faDE9NDAyMzIzMzQxNyx0aGlzLl9oMj0yNTYyMzgzMTAyLHRoaXMuX2gzPTI3MTczMzg3OCx0aGlzLl9oND0zMjg1Mzc3NTIwLHRoaXMuX2J1ZmY9bmV3IFVpbnQ4QXJyYXkoNjcpLHRoaXMuX2J1ZmZEVj1uZXcgRGF0YVZpZXcodGhpcy5fYnVmZi5idWZmZXIpLHRoaXMuX2J1ZmZMZW49MCx0aGlzLl90b3RhbExlbj0wLHRoaXMuX2xlZnRvdmVySGlnaFN1cnJvZ2F0ZT0wLHRoaXMuX2ZpbmlzaGVkPSExfXVwZGF0ZSh0KXtjb25zdCBuPXQubGVuZ3RoO2lmKG49PT0wKXJldHVybjtjb25zdCByPXRoaXMuX2J1ZmY7bGV0IGk9dGhpcy5fYnVmZkxlbixzPXRoaXMuX2xlZnRvdmVySGlnaFN1cnJvZ2F0ZSxhLGw7Zm9yKHMhPT0wPyhhPXMsbD0tMSxzPTApOihhPXQuY2hhckNvZGVBdCgwKSxsPTApOzspe2xldCBvPWE7aWYoT24oYSkpaWYobCsxPG4pe2NvbnN0IGM9dC5jaGFyQ29kZUF0KGwrMSk7cXIoYyk/KGwrKyxvPVdzKGEsYykpOm89NjU1MzN9ZWxzZXtzPWE7YnJlYWt9ZWxzZSBxcihhKSYmKG89NjU1MzMpO2lmKGk9dGhpcy5fcHVzaChyLGksbyksbCsrLGw8bilhPXQuY2hhckNvZGVBdChsKTtlbHNlIGJyZWFrfXRoaXMuX2J1ZmZMZW49aSx0aGlzLl9sZWZ0b3ZlckhpZ2hTdXJyb2dhdGU9c31fcHVzaCh0LG4scil7cmV0dXJuIHI8MTI4P3RbbisrXT1yOnI8MjA0OD8odFtuKytdPTE5MnwociYxOTg0KT4+PjYsdFtuKytdPTEyOHwociY2Myk+Pj4wKTpyPDY1NTM2Pyh0W24rK109MjI0fChyJjYxNDQwKT4+PjEyLHRbbisrXT0xMjh8KHImNDAzMik+Pj42LHRbbisrXT0xMjh8KHImNjMpPj4+MCk6KHRbbisrXT0yNDB8KHImMTgzNTAwOCk+Pj4xOCx0W24rK109MTI4fChyJjI1ODA0OCk+Pj4xMix0W24rK109MTI4fChyJjQwMzIpPj4+Nix0W24rK109MTI4fChyJjYzKT4+PjApLG4+PTY0JiYodGhpcy5fc3RlcCgpLG4tPTY0LHRoaXMuX3RvdGFsTGVuKz02NCx0WzBdPXRbNjRdLHRbMV09dFs2NV0sdFsyXT10WzY2XSksbn1kaWdlc3QoKXtyZXR1cm4gdGhpcy5fZmluaXNoZWR8fCh0aGlzLl9maW5pc2hlZD0hMCx0aGlzLl9sZWZ0b3ZlckhpZ2hTdXJyb2dhdGUmJih0aGlzLl9sZWZ0b3ZlckhpZ2hTdXJyb2dhdGU9MCx0aGlzLl9idWZmTGVuPXRoaXMuX3B1c2godGhpcy5fYnVmZix0aGlzLl9idWZmTGVuLDY1NTMzKSksdGhpcy5fdG90YWxMZW4rPXRoaXMuX2J1ZmZMZW4sdGhpcy5fd3JhcFVwKCkpLGNuKHRoaXMuX2gwKStjbih0aGlzLl9oMSkrY24odGhpcy5faDIpK2NuKHRoaXMuX2gzKStjbih0aGlzLl9oNCl9X3dyYXBVcCgpe3RoaXMuX2J1ZmZbdGhpcy5fYnVmZkxlbisrXT0xMjgscXModGhpcy5fYnVmZix0aGlzLl9idWZmTGVuKSx0aGlzLl9idWZmTGVuPjU2JiYodGhpcy5fc3RlcCgpLHFzKHRoaXMuX2J1ZmYpKTtjb25zdCB0PTgqdGhpcy5fdG90YWxMZW47dGhpcy5fYnVmZkRWLnNldFVpbnQzMig1NixNYXRoLmZsb29yKHQvNDI5NDk2NzI5NiksITEpLHRoaXMuX2J1ZmZEVi5zZXRVaW50MzIoNjAsdCU0Mjk0OTY3Mjk2LCExKSx0aGlzLl9zdGVwKCl9X3N0ZXAoKXtjb25zdCB0PUZyLl9iaWdCbG9jazMyLG49dGhpcy5fYnVmZkRWO2ZvcihsZXQgdT0wO3U8NjQ7dSs9NCl0LnNldFVpbnQzMih1LG4uZ2V0VWludDMyKHUsITEpLCExKTtmb3IobGV0IHU9NjQ7dTwzMjA7dSs9NCl0LnNldFVpbnQzMih1LGpyKHQuZ2V0VWludDMyKHUtMTIsITEpXnQuZ2V0VWludDMyKHUtMzIsITEpXnQuZ2V0VWludDMyKHUtNTYsITEpXnQuZ2V0VWludDMyKHUtNjQsITEpLDEpLCExKTtsZXQgcj10aGlzLl9oMCxpPXRoaXMuX2gxLHM9dGhpcy5faDIsYT10aGlzLl9oMyxsPXRoaXMuX2g0LG8sYyxkO2ZvcihsZXQgdT0wO3U8ODA7dSsrKXU8MjA/KG89aSZzfH5pJmEsYz0xNTE4NTAwMjQ5KTp1PDQwPyhvPWlec15hLGM9MTg1OTc3NTM5Myk6dTw2MD8obz1pJnN8aSZhfHMmYSxjPTI0MDA5NTk3MDgpOihvPWlec15hLGM9MzM5NTQ2OTc4MiksZD1qcihyLDUpK28rbCtjK3QuZ2V0VWludDMyKHUqNCwhMSkmNDI5NDk2NzI5NSxsPWEsYT1zLHM9anIoaSwzMCksaT1yLHI9ZDt0aGlzLl9oMD10aGlzLl9oMCtyJjQyOTQ5NjcyOTUsdGhpcy5faDE9dGhpcy5faDEraSY0Mjk0OTY3Mjk1LHRoaXMuX2gyPXRoaXMuX2gyK3MmNDI5NDk2NzI5NSx0aGlzLl9oMz10aGlzLl9oMythJjQyOTQ5NjcyOTUsdGhpcy5faDQ9dGhpcy5faDQrbCY0Mjk0OTY3Mjk1fX07RnIuX2JpZ0Jsb2NrMzI9bmV3IERhdGFWaWV3KG5ldyBBcnJheUJ1ZmZlcigzMjApKTtsZXQganM9RnI7Y2xhc3MgSHN7Y29uc3RydWN0b3IodCl7dGhpcy5zb3VyY2U9dH1nZXRFbGVtZW50cygpe2NvbnN0IHQ9dGhpcy5zb3VyY2Usbj1uZXcgSW50MzJBcnJheSh0Lmxlbmd0aCk7Zm9yKGxldCByPTAsaT10Lmxlbmd0aDtyPGk7cisrKW5bcl09dC5jaGFyQ29kZUF0KHIpO3JldHVybiBufX1mdW5jdGlvbiBxaChlLHQsbil7cmV0dXJuIG5ldyBvdChuZXcgSHMoZSksbmV3IEhzKHQpKS5Db21wdXRlRGlmZihuKS5jaGFuZ2VzfWNsYXNzIE10e3N0YXRpYyBBc3NlcnQodCxuKXtpZighdCl0aHJvdyBuZXcgRXJyb3Iobil9fWNsYXNzIEx0e3N0YXRpYyBDb3B5KHQsbixyLGkscyl7Zm9yKGxldCBhPTA7YTxzO2ErKylyW2krYV09dFtuK2FdfXN0YXRpYyBDb3B5Mih0LG4scixpLHMpe2ZvcihsZXQgYT0wO2E8czthKyspcltpK2FdPXRbbithXX19Y2xhc3MgR3N7Y29uc3RydWN0b3IoKXt0aGlzLm1fY2hhbmdlcz1bXSx0aGlzLm1fb3JpZ2luYWxTdGFydD0xMDczNzQxODI0LHRoaXMubV9tb2RpZmllZFN0YXJ0PTEwNzM3NDE4MjQsdGhpcy5tX29yaWdpbmFsQ291bnQ9MCx0aGlzLm1fbW9kaWZpZWRDb3VudD0wfU1hcmtOZXh0Q2hhbmdlKCl7KHRoaXMubV9vcmlnaW5hbENvdW50PjB8fHRoaXMubV9tb2RpZmllZENvdW50PjApJiZ0aGlzLm1fY2hhbmdlcy5wdXNoKG5ldyBhdCh0aGlzLm1fb3JpZ2luYWxTdGFydCx0aGlzLm1fb3JpZ2luYWxDb3VudCx0aGlzLm1fbW9kaWZpZWRTdGFydCx0aGlzLm1fbW9kaWZpZWRDb3VudCkpLHRoaXMubV9vcmlnaW5hbENvdW50PTAsdGhpcy5tX21vZGlmaWVkQ291bnQ9MCx0aGlzLm1fb3JpZ2luYWxTdGFydD0xMDczNzQxODI0LHRoaXMubV9tb2RpZmllZFN0YXJ0PTEwNzM3NDE4MjR9QWRkT3JpZ2luYWxFbGVtZW50KHQsbil7dGhpcy5tX29yaWdpbmFsU3RhcnQ9TWF0aC5taW4odGhpcy5tX29yaWdpbmFsU3RhcnQsdCksdGhpcy5tX21vZGlmaWVkU3RhcnQ9TWF0aC5taW4odGhpcy5tX21vZGlmaWVkU3RhcnQsbiksdGhpcy5tX29yaWdpbmFsQ291bnQrK31BZGRNb2RpZmllZEVsZW1lbnQodCxuKXt0aGlzLm1fb3JpZ2luYWxTdGFydD1NYXRoLm1pbih0aGlzLm1fb3JpZ2luYWxTdGFydCx0KSx0aGlzLm1fbW9kaWZpZWRTdGFydD1NYXRoLm1pbih0aGlzLm1fbW9kaWZpZWRTdGFydCxuKSx0aGlzLm1fbW9kaWZpZWRDb3VudCsrfWdldENoYW5nZXMoKXtyZXR1cm4odGhpcy5tX29yaWdpbmFsQ291bnQ+MHx8dGhpcy5tX21vZGlmaWVkQ291bnQ+MCkmJnRoaXMuTWFya05leHRDaGFuZ2UoKSx0aGlzLm1fY2hhbmdlc31nZXRSZXZlcnNlQ2hhbmdlcygpe3JldHVybih0aGlzLm1fb3JpZ2luYWxDb3VudD4wfHx0aGlzLm1fbW9kaWZpZWRDb3VudD4wKSYmdGhpcy5NYXJrTmV4dENoYW5nZSgpLHRoaXMubV9jaGFuZ2VzLnJldmVyc2UoKSx0aGlzLm1fY2hhbmdlc319Y2xhc3Mgb3R7Y29uc3RydWN0b3IodCxuLHI9bnVsbCl7dGhpcy5Db250aW51ZVByb2Nlc3NpbmdQcmVkaWNhdGU9cix0aGlzLl9vcmlnaW5hbFNlcXVlbmNlPXQsdGhpcy5fbW9kaWZpZWRTZXF1ZW5jZT1uO2NvbnN0W2kscyxhXT1vdC5fZ2V0RWxlbWVudHModCksW2wsbyxjXT1vdC5fZ2V0RWxlbWVudHMobik7dGhpcy5faGFzU3RyaW5ncz1hJiZjLHRoaXMuX29yaWdpbmFsU3RyaW5nRWxlbWVudHM9aSx0aGlzLl9vcmlnaW5hbEVsZW1lbnRzT3JIYXNoPXMsdGhpcy5fbW9kaWZpZWRTdHJpbmdFbGVtZW50cz1sLHRoaXMuX21vZGlmaWVkRWxlbWVudHNPckhhc2g9byx0aGlzLm1fZm9yd2FyZEhpc3Rvcnk9W10sdGhpcy5tX3JldmVyc2VIaXN0b3J5PVtdfXN0YXRpYyBfaXNTdHJpbmdBcnJheSh0KXtyZXR1cm4gdC5sZW5ndGg+MCYmdHlwZW9mIHRbMF09PSJzdHJpbmcifXN0YXRpYyBfZ2V0RWxlbWVudHModCl7Y29uc3Qgbj10LmdldEVsZW1lbnRzKCk7aWYob3QuX2lzU3RyaW5nQXJyYXkobikpe2NvbnN0IHI9bmV3IEludDMyQXJyYXkobi5sZW5ndGgpO2ZvcihsZXQgaT0wLHM9bi5sZW5ndGg7aTxzO2krKylyW2ldPSRoKG5baV0sMCk7cmV0dXJuW24sciwhMF19cmV0dXJuIG4gaW5zdGFuY2VvZiBJbnQzMkFycmF5P1tbXSxuLCExXTpbW10sbmV3IEludDMyQXJyYXkobiksITFdfUVsZW1lbnRzQXJlRXF1YWwodCxuKXtyZXR1cm4gdGhpcy5fb3JpZ2luYWxFbGVtZW50c09ySGFzaFt0XSE9PXRoaXMuX21vZGlmaWVkRWxlbWVudHNPckhhc2hbbl0/ITE6dGhpcy5faGFzU3RyaW5ncz90aGlzLl9vcmlnaW5hbFN0cmluZ0VsZW1lbnRzW3RdPT09dGhpcy5fbW9kaWZpZWRTdHJpbmdFbGVtZW50c1tuXTohMH1FbGVtZW50c0FyZVN0cmljdEVxdWFsKHQsbil7aWYoIXRoaXMuRWxlbWVudHNBcmVFcXVhbCh0LG4pKXJldHVybiExO2NvbnN0IHI9b3QuX2dldFN0cmljdEVsZW1lbnQodGhpcy5fb3JpZ2luYWxTZXF1ZW5jZSx0KSxpPW90Ll9nZXRTdHJpY3RFbGVtZW50KHRoaXMuX21vZGlmaWVkU2VxdWVuY2Usbik7cmV0dXJuIHI9PT1pfXN0YXRpYyBfZ2V0U3RyaWN0RWxlbWVudCh0LG4pe3JldHVybiB0eXBlb2YgdC5nZXRTdHJpY3RFbGVtZW50PT0iZnVuY3Rpb24iP3QuZ2V0U3RyaWN0RWxlbWVudChuKTpudWxsfU9yaWdpbmFsRWxlbWVudHNBcmVFcXVhbCh0LG4pe3JldHVybiB0aGlzLl9vcmlnaW5hbEVsZW1lbnRzT3JIYXNoW3RdIT09dGhpcy5fb3JpZ2luYWxFbGVtZW50c09ySGFzaFtuXT8hMTp0aGlzLl9oYXNTdHJpbmdzP3RoaXMuX29yaWdpbmFsU3RyaW5nRWxlbWVudHNbdF09PT10aGlzLl9vcmlnaW5hbFN0cmluZ0VsZW1lbnRzW25dOiEwfU1vZGlmaWVkRWxlbWVudHNBcmVFcXVhbCh0LG4pe3JldHVybiB0aGlzLl9tb2RpZmllZEVsZW1lbnRzT3JIYXNoW3RdIT09dGhpcy5fbW9kaWZpZWRFbGVtZW50c09ySGFzaFtuXT8hMTp0aGlzLl9oYXNTdHJpbmdzP3RoaXMuX21vZGlmaWVkU3RyaW5nRWxlbWVudHNbdF09PT10aGlzLl9tb2RpZmllZFN0cmluZ0VsZW1lbnRzW25dOiEwfUNvbXB1dGVEaWZmKHQpe3JldHVybiB0aGlzLl9Db21wdXRlRGlmZigwLHRoaXMuX29yaWdpbmFsRWxlbWVudHNPckhhc2gubGVuZ3RoLTEsMCx0aGlzLl9tb2RpZmllZEVsZW1lbnRzT3JIYXNoLmxlbmd0aC0xLHQpfV9Db21wdXRlRGlmZih0LG4scixpLHMpe2NvbnN0IGE9WyExXTtsZXQgbD10aGlzLkNvbXB1dGVEaWZmUmVjdXJzaXZlKHQsbixyLGksYSk7cmV0dXJuIHMmJihsPXRoaXMuUHJldHRpZnlDaGFuZ2VzKGwpKSx7cXVpdEVhcmx5OmFbMF0sY2hhbmdlczpsfX1Db21wdXRlRGlmZlJlY3Vyc2l2ZSh0LG4scixpLHMpe2ZvcihzWzBdPSExO3Q8PW4mJnI8PWkmJnRoaXMuRWxlbWVudHNBcmVFcXVhbCh0LHIpOyl0KysscisrO2Zvcig7bj49dCYmaT49ciYmdGhpcy5FbGVtZW50c0FyZUVxdWFsKG4saSk7KW4tLSxpLS07aWYodD5ufHxyPmkpe2xldCB1O3JldHVybiByPD1pPyhNdC5Bc3NlcnQodD09PW4rMSwib3JpZ2luYWxTdGFydCBzaG91bGQgb25seSBiZSBvbmUgbW9yZSB0aGFuIG9yaWdpbmFsRW5kIiksdT1bbmV3IGF0KHQsMCxyLGktcisxKV0pOnQ8PW4/KE10LkFzc2VydChyPT09aSsxLCJtb2RpZmllZFN0YXJ0IHNob3VsZCBvbmx5IGJlIG9uZSBtb3JlIHRoYW4gbW9kaWZpZWRFbmQiKSx1PVtuZXcgYXQodCxuLXQrMSxyLDApXSk6KE10LkFzc2VydCh0PT09bisxLCJvcmlnaW5hbFN0YXJ0IHNob3VsZCBvbmx5IGJlIG9uZSBtb3JlIHRoYW4gb3JpZ2luYWxFbmQiKSxNdC5Bc3NlcnQocj09PWkrMSwibW9kaWZpZWRTdGFydCBzaG91bGQgb25seSBiZSBvbmUgbW9yZSB0aGFuIG1vZGlmaWVkRW5kIiksdT1bXSksdX1jb25zdCBhPVswXSxsPVswXSxvPXRoaXMuQ29tcHV0ZVJlY3Vyc2lvblBvaW50KHQsbixyLGksYSxsLHMpLGM9YVswXSxkPWxbMF07aWYobyE9PW51bGwpcmV0dXJuIG87aWYoIXNbMF0pe2NvbnN0IHU9dGhpcy5Db21wdXRlRGlmZlJlY3Vyc2l2ZSh0LGMscixkLHMpO2xldCBmPVtdO3JldHVybiBzWzBdP2Y9W25ldyBhdChjKzEsbi0oYysxKSsxLGQrMSxpLShkKzEpKzEpXTpmPXRoaXMuQ29tcHV0ZURpZmZSZWN1cnNpdmUoYysxLG4sZCsxLGkscyksdGhpcy5Db25jYXRlbmF0ZUNoYW5nZXModSxmKX1yZXR1cm5bbmV3IGF0KHQsbi10KzEscixpLXIrMSldfVdBTEtUUkFDRSh0LG4scixpLHMsYSxsLG8sYyxkLHUsZixtLHYseSxfLGssRCl7bGV0IE49bnVsbCxFPW51bGwsUj1uZXcgR3MsTT1uLFQ9cixQPW1bMF0tX1swXS1pLCQ9LTEwNzM3NDE4MjQsZWU9dGhpcy5tX2ZvcndhcmRIaXN0b3J5Lmxlbmd0aC0xO2Rve2NvbnN0IEE9UCt0O0E9PT1NfHxBPFQmJmNbQS0xXTxjW0ErMV0/KHU9Y1tBKzFdLHY9dS1QLWksdTwkJiZSLk1hcmtOZXh0Q2hhbmdlKCksJD11LFIuQWRkTW9kaWZpZWRFbGVtZW50KHUrMSx2KSxQPUErMS10KToodT1jW0EtMV0rMSx2PXUtUC1pLHU8JCYmUi5NYXJrTmV4dENoYW5nZSgpLCQ9dS0xLFIuQWRkT3JpZ2luYWxFbGVtZW50KHUsdisxKSxQPUEtMS10KSxlZT49MCYmKGM9dGhpcy5tX2ZvcndhcmRIaXN0b3J5W2VlXSx0PWNbMF0sTT0xLFQ9Yy5sZW5ndGgtMSl9d2hpbGUoLS1lZT49LTEpO2lmKE49Ui5nZXRSZXZlcnNlQ2hhbmdlcygpLERbMF0pe2xldCBBPW1bMF0rMSx3PV9bMF0rMTtpZihOIT09bnVsbCYmTi5sZW5ndGg+MCl7Y29uc3QgQz1OW04ubGVuZ3RoLTFdO0E9TWF0aC5tYXgoQSxDLmdldE9yaWdpbmFsRW5kKCkpLHc9TWF0aC5tYXgodyxDLmdldE1vZGlmaWVkRW5kKCkpfUU9W25ldyBhdChBLGYtQSsxLHcseS13KzEpXX1lbHNle1I9bmV3IEdzLE09YSxUPWwsUD1tWzBdLV9bMF0tbywkPTEwNzM3NDE4MjQsZWU9az90aGlzLm1fcmV2ZXJzZUhpc3RvcnkubGVuZ3RoLTE6dGhpcy5tX3JldmVyc2VIaXN0b3J5Lmxlbmd0aC0yO2Rve2NvbnN0IEE9UCtzO0E9PT1NfHxBPFQmJmRbQS0xXT49ZFtBKzFdPyh1PWRbQSsxXS0xLHY9dS1QLW8sdT4kJiZSLk1hcmtOZXh0Q2hhbmdlKCksJD11KzEsUi5BZGRPcmlnaW5hbEVsZW1lbnQodSsxLHYrMSksUD1BKzEtcyk6KHU9ZFtBLTFdLHY9dS1QLW8sdT4kJiZSLk1hcmtOZXh0Q2hhbmdlKCksJD11LFIuQWRkTW9kaWZpZWRFbGVtZW50KHUrMSx2KzEpLFA9QS0xLXMpLGVlPj0wJiYoZD10aGlzLm1fcmV2ZXJzZUhpc3RvcnlbZWVdLHM9ZFswXSxNPTEsVD1kLmxlbmd0aC0xKX13aGlsZSgtLWVlPj0tMSk7RT1SLmdldENoYW5nZXMoKX1yZXR1cm4gdGhpcy5Db25jYXRlbmF0ZUNoYW5nZXMoTixFKX1Db21wdXRlUmVjdXJzaW9uUG9pbnQodCxuLHIsaSxzLGEsbCl7bGV0IG89MCxjPTAsZD0wLHU9MCxmPTAsbT0wO3QtLSxyLS0sc1swXT0wLGFbMF09MCx0aGlzLm1fZm9yd2FyZEhpc3Rvcnk9W10sdGhpcy5tX3JldmVyc2VIaXN0b3J5PVtdO2NvbnN0IHY9bi10KyhpLXIpLHk9disxLF89bmV3IEludDMyQXJyYXkoeSksaz1uZXcgSW50MzJBcnJheSh5KSxEPWktcixOPW4tdCxFPXQtcixSPW4taSxUPShOLUQpJTI9PT0wO19bRF09dCxrW05dPW4sbFswXT0hMTtmb3IobGV0IFA9MTtQPD12LzIrMTtQKyspe2xldCAkPTAsZWU9MDtkPXRoaXMuQ2xpcERpYWdvbmFsQm91bmQoRC1QLFAsRCx5KSx1PXRoaXMuQ2xpcERpYWdvbmFsQm91bmQoRCtQLFAsRCx5KTtmb3IobGV0IHc9ZDt3PD11O3crPTIpe3c9PT1kfHx3PHUmJl9bdy0xXTxfW3crMV0/bz1fW3crMV06bz1fW3ctMV0rMSxjPW8tKHctRCktRTtjb25zdCBDPW87Zm9yKDtvPG4mJmM8aSYmdGhpcy5FbGVtZW50c0FyZUVxdWFsKG8rMSxjKzEpOylvKyssYysrO2lmKF9bd109byxvK2M+JCtlZSYmKCQ9byxlZT1jKSwhVCYmTWF0aC5hYnMody1OKTw9UC0xJiZvPj1rW3ddKXJldHVybiBzWzBdPW8sYVswXT1jLEM8PWtbd10mJlA8PTE0NDg/dGhpcy5XQUxLVFJBQ0UoRCxkLHUsRSxOLGYsbSxSLF8sayxvLG4scyxjLGksYSxULGwpOm51bGx9Y29uc3QgQT0oJC10KyhlZS1yKS1QKS8yO2lmKHRoaXMuQ29udGludWVQcm9jZXNzaW5nUHJlZGljYXRlIT09bnVsbCYmIXRoaXMuQ29udGludWVQcm9jZXNzaW5nUHJlZGljYXRlKCQsQSkpcmV0dXJuIGxbMF09ITAsc1swXT0kLGFbMF09ZWUsQT4wJiZQPD0xNDQ4P3RoaXMuV0FMS1RSQUNFKEQsZCx1LEUsTixmLG0sUixfLGssbyxuLHMsYyxpLGEsVCxsKToodCsrLHIrKyxbbmV3IGF0KHQsbi10KzEscixpLXIrMSldKTtmPXRoaXMuQ2xpcERpYWdvbmFsQm91bmQoTi1QLFAsTix5KSxtPXRoaXMuQ2xpcERpYWdvbmFsQm91bmQoTitQLFAsTix5KTtmb3IobGV0IHc9Zjt3PD1tO3crPTIpe3c9PT1mfHx3PG0mJmtbdy0xXT49a1t3KzFdP289a1t3KzFdLTE6bz1rW3ctMV0sYz1vLSh3LU4pLVI7Y29uc3QgQz1vO2Zvcig7bz50JiZjPnImJnRoaXMuRWxlbWVudHNBcmVFcXVhbChvLGMpOylvLS0sYy0tO2lmKGtbd109byxUJiZNYXRoLmFicyh3LUQpPD1QJiZvPD1fW3ddKXJldHVybiBzWzBdPW8sYVswXT1jLEM+PV9bd10mJlA8PTE0NDg/dGhpcy5XQUxLVFJBQ0UoRCxkLHUsRSxOLGYsbSxSLF8sayxvLG4scyxjLGksYSxULGwpOm51bGx9aWYoUDw9MTQ0Nyl7bGV0IHc9bmV3IEludDMyQXJyYXkodS1kKzIpO3dbMF09RC1kKzEsTHQuQ29weTIoXyxkLHcsMSx1LWQrMSksdGhpcy5tX2ZvcndhcmRIaXN0b3J5LnB1c2godyksdz1uZXcgSW50MzJBcnJheShtLWYrMiksd1swXT1OLWYrMSxMdC5Db3B5MihrLGYsdywxLG0tZisxKSx0aGlzLm1fcmV2ZXJzZUhpc3RvcnkucHVzaCh3KX19cmV0dXJuIHRoaXMuV0FMS1RSQUNFKEQsZCx1LEUsTixmLG0sUixfLGssbyxuLHMsYyxpLGEsVCxsKX1QcmV0dGlmeUNoYW5nZXModCl7Zm9yKGxldCBuPTA7bjx0Lmxlbmd0aDtuKyspe2NvbnN0IHI9dFtuXSxpPW48dC5sZW5ndGgtMT90W24rMV0ub3JpZ2luYWxTdGFydDp0aGlzLl9vcmlnaW5hbEVsZW1lbnRzT3JIYXNoLmxlbmd0aCxzPW48dC5sZW5ndGgtMT90W24rMV0ubW9kaWZpZWRTdGFydDp0aGlzLl9tb2RpZmllZEVsZW1lbnRzT3JIYXNoLmxlbmd0aCxhPXIub3JpZ2luYWxMZW5ndGg+MCxsPXIubW9kaWZpZWRMZW5ndGg+MDtmb3IoO3Iub3JpZ2luYWxTdGFydCtyLm9yaWdpbmFsTGVuZ3RoPGkmJnIubW9kaWZpZWRTdGFydCtyLm1vZGlmaWVkTGVuZ3RoPHMmJighYXx8dGhpcy5PcmlnaW5hbEVsZW1lbnRzQXJlRXF1YWwoci5vcmlnaW5hbFN0YXJ0LHIub3JpZ2luYWxTdGFydCtyLm9yaWdpbmFsTGVuZ3RoKSkmJighbHx8dGhpcy5Nb2RpZmllZEVsZW1lbnRzQXJlRXF1YWwoci5tb2RpZmllZFN0YXJ0LHIubW9kaWZpZWRTdGFydCtyLm1vZGlmaWVkTGVuZ3RoKSk7KXtjb25zdCBjPXRoaXMuRWxlbWVudHNBcmVTdHJpY3RFcXVhbChyLm9yaWdpbmFsU3RhcnQsci5tb2RpZmllZFN0YXJ0KTtpZih0aGlzLkVsZW1lbnRzQXJlU3RyaWN0RXF1YWwoci5vcmlnaW5hbFN0YXJ0K3Iub3JpZ2luYWxMZW5ndGgsci5tb2RpZmllZFN0YXJ0K3IubW9kaWZpZWRMZW5ndGgpJiYhYylicmVhaztyLm9yaWdpbmFsU3RhcnQrKyxyLm1vZGlmaWVkU3RhcnQrK31jb25zdCBvPVtudWxsXTtpZihuPHQubGVuZ3RoLTEmJnRoaXMuQ2hhbmdlc092ZXJsYXAodFtuXSx0W24rMV0sbykpe3Rbbl09b1swXSx0LnNwbGljZShuKzEsMSksbi0tO2NvbnRpbnVlfX1mb3IobGV0IG49dC5sZW5ndGgtMTtuPj0wO24tLSl7Y29uc3Qgcj10W25dO2xldCBpPTAscz0wO2lmKG4+MCl7Y29uc3QgdT10W24tMV07aT11Lm9yaWdpbmFsU3RhcnQrdS5vcmlnaW5hbExlbmd0aCxzPXUubW9kaWZpZWRTdGFydCt1Lm1vZGlmaWVkTGVuZ3RofWNvbnN0IGE9ci5vcmlnaW5hbExlbmd0aD4wLGw9ci5tb2RpZmllZExlbmd0aD4wO2xldCBvPTAsYz10aGlzLl9ib3VuZGFyeVNjb3JlKHIub3JpZ2luYWxTdGFydCxyLm9yaWdpbmFsTGVuZ3RoLHIubW9kaWZpZWRTdGFydCxyLm1vZGlmaWVkTGVuZ3RoKTtmb3IobGV0IHU9MTs7dSsrKXtjb25zdCBmPXIub3JpZ2luYWxTdGFydC11LG09ci5tb2RpZmllZFN0YXJ0LXU7aWYoZjxpfHxtPHN8fGEmJiF0aGlzLk9yaWdpbmFsRWxlbWVudHNBcmVFcXVhbChmLGYrci5vcmlnaW5hbExlbmd0aCl8fGwmJiF0aGlzLk1vZGlmaWVkRWxlbWVudHNBcmVFcXVhbChtLG0rci5tb2RpZmllZExlbmd0aCkpYnJlYWs7Y29uc3QgeT0oZj09PWkmJm09PT1zPzU6MCkrdGhpcy5fYm91bmRhcnlTY29yZShmLHIub3JpZ2luYWxMZW5ndGgsbSxyLm1vZGlmaWVkTGVuZ3RoKTt5PmMmJihjPXksbz11KX1yLm9yaWdpbmFsU3RhcnQtPW8sci5tb2RpZmllZFN0YXJ0LT1vO2NvbnN0IGQ9W251bGxdO2lmKG4+MCYmdGhpcy5DaGFuZ2VzT3ZlcmxhcCh0W24tMV0sdFtuXSxkKSl7dFtuLTFdPWRbMF0sdC5zcGxpY2UobiwxKSxuKys7Y29udGludWV9fWlmKHRoaXMuX2hhc1N0cmluZ3MpZm9yKGxldCBuPTEscj10Lmxlbmd0aDtuPHI7bisrKXtjb25zdCBpPXRbbi0xXSxzPXRbbl0sYT1zLm9yaWdpbmFsU3RhcnQtaS5vcmlnaW5hbFN0YXJ0LWkub3JpZ2luYWxMZW5ndGgsbD1pLm9yaWdpbmFsU3RhcnQsbz1zLm9yaWdpbmFsU3RhcnQrcy5vcmlnaW5hbExlbmd0aCxjPW8tbCxkPWkubW9kaWZpZWRTdGFydCx1PXMubW9kaWZpZWRTdGFydCtzLm1vZGlmaWVkTGVuZ3RoLGY9dS1kO2lmKGE8NSYmYzwyMCYmZjwyMCl7Y29uc3QgbT10aGlzLl9maW5kQmV0dGVyQ29udGlndW91c1NlcXVlbmNlKGwsYyxkLGYsYSk7aWYobSl7Y29uc3Rbdix5XT1tOyh2IT09aS5vcmlnaW5hbFN0YXJ0K2kub3JpZ2luYWxMZW5ndGh8fHkhPT1pLm1vZGlmaWVkU3RhcnQraS5tb2RpZmllZExlbmd0aCkmJihpLm9yaWdpbmFsTGVuZ3RoPXYtaS5vcmlnaW5hbFN0YXJ0LGkubW9kaWZpZWRMZW5ndGg9eS1pLm1vZGlmaWVkU3RhcnQscy5vcmlnaW5hbFN0YXJ0PXYrYSxzLm1vZGlmaWVkU3RhcnQ9eSthLHMub3JpZ2luYWxMZW5ndGg9by1zLm9yaWdpbmFsU3RhcnQscy5tb2RpZmllZExlbmd0aD11LXMubW9kaWZpZWRTdGFydCl9fX1yZXR1cm4gdH1fZmluZEJldHRlckNvbnRpZ3VvdXNTZXF1ZW5jZSh0LG4scixpLHMpe2lmKG48c3x8aTxzKXJldHVybiBudWxsO2NvbnN0IGE9dCtuLXMrMSxsPXIraS1zKzE7bGV0IG89MCxjPTAsZD0wO2ZvcihsZXQgdT10O3U8YTt1KyspZm9yKGxldCBmPXI7ZjxsO2YrKyl7Y29uc3QgbT10aGlzLl9jb250aWd1b3VzU2VxdWVuY2VTY29yZSh1LGYscyk7bT4wJiZtPm8mJihvPW0sYz11LGQ9Zil9cmV0dXJuIG8+MD9bYyxkXTpudWxsfV9jb250aWd1b3VzU2VxdWVuY2VTY29yZSh0LG4scil7bGV0IGk9MDtmb3IobGV0IHM9MDtzPHI7cysrKXtpZighdGhpcy5FbGVtZW50c0FyZUVxdWFsKHQrcyxuK3MpKXJldHVybiAwO2krPXRoaXMuX29yaWdpbmFsU3RyaW5nRWxlbWVudHNbdCtzXS5sZW5ndGh9cmV0dXJuIGl9X09yaWdpbmFsSXNCb3VuZGFyeSh0KXtyZXR1cm4gdDw9MHx8dD49dGhpcy5fb3JpZ2luYWxFbGVtZW50c09ySGFzaC5sZW5ndGgtMT8hMDp0aGlzLl9oYXNTdHJpbmdzJiYvXlxzKiQvLnRlc3QodGhpcy5fb3JpZ2luYWxTdHJpbmdFbGVtZW50c1t0XSl9X09yaWdpbmFsUmVnaW9uSXNCb3VuZGFyeSh0LG4pe2lmKHRoaXMuX09yaWdpbmFsSXNCb3VuZGFyeSh0KXx8dGhpcy5fT3JpZ2luYWxJc0JvdW5kYXJ5KHQtMSkpcmV0dXJuITA7aWYobj4wKXtjb25zdCByPXQrbjtpZih0aGlzLl9PcmlnaW5hbElzQm91bmRhcnkoci0xKXx8dGhpcy5fT3JpZ2luYWxJc0JvdW5kYXJ5KHIpKXJldHVybiEwfXJldHVybiExfV9Nb2RpZmllZElzQm91bmRhcnkodCl7cmV0dXJuIHQ8PTB8fHQ+PXRoaXMuX21vZGlmaWVkRWxlbWVudHNPckhhc2gubGVuZ3RoLTE/ITA6dGhpcy5faGFzU3RyaW5ncyYmL15ccyokLy50ZXN0KHRoaXMuX21vZGlmaWVkU3RyaW5nRWxlbWVudHNbdF0pfV9Nb2RpZmllZFJlZ2lvbklzQm91bmRhcnkodCxuKXtpZih0aGlzLl9Nb2RpZmllZElzQm91bmRhcnkodCl8fHRoaXMuX01vZGlmaWVkSXNCb3VuZGFyeSh0LTEpKXJldHVybiEwO2lmKG4+MCl7Y29uc3Qgcj10K247aWYodGhpcy5fTW9kaWZpZWRJc0JvdW5kYXJ5KHItMSl8fHRoaXMuX01vZGlmaWVkSXNCb3VuZGFyeShyKSlyZXR1cm4hMH1yZXR1cm4hMX1fYm91bmRhcnlTY29yZSh0LG4scixpKXtjb25zdCBzPXRoaXMuX09yaWdpbmFsUmVnaW9uSXNCb3VuZGFyeSh0LG4pPzE6MCxhPXRoaXMuX01vZGlmaWVkUmVnaW9uSXNCb3VuZGFyeShyLGkpPzE6MDtyZXR1cm4gcythfUNvbmNhdGVuYXRlQ2hhbmdlcyh0LG4pe2NvbnN0IHI9W107aWYodC5sZW5ndGg9PT0wfHxuLmxlbmd0aD09PTApcmV0dXJuIG4ubGVuZ3RoPjA/bjp0O2lmKHRoaXMuQ2hhbmdlc092ZXJsYXAodFt0Lmxlbmd0aC0xXSxuWzBdLHIpKXtjb25zdCBpPW5ldyBBcnJheSh0Lmxlbmd0aCtuLmxlbmd0aC0xKTtyZXR1cm4gTHQuQ29weSh0LDAsaSwwLHQubGVuZ3RoLTEpLGlbdC5sZW5ndGgtMV09clswXSxMdC5Db3B5KG4sMSxpLHQubGVuZ3RoLG4ubGVuZ3RoLTEpLGl9ZWxzZXtjb25zdCBpPW5ldyBBcnJheSh0Lmxlbmd0aCtuLmxlbmd0aCk7cmV0dXJuIEx0LkNvcHkodCwwLGksMCx0Lmxlbmd0aCksTHQuQ29weShuLDAsaSx0Lmxlbmd0aCxuLmxlbmd0aCksaX19Q2hhbmdlc092ZXJsYXAodCxuLHIpe2lmKE10LkFzc2VydCh0Lm9yaWdpbmFsU3RhcnQ8PW4ub3JpZ2luYWxTdGFydCwiTGVmdCBjaGFuZ2UgaXMgbm90IGxlc3MgdGhhbiBvciBlcXVhbCB0byByaWdodCBjaGFuZ2UiKSxNdC5Bc3NlcnQodC5tb2RpZmllZFN0YXJ0PD1uLm1vZGlmaWVkU3RhcnQsIkxlZnQgY2hhbmdlIGlzIG5vdCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gcmlnaHQgY2hhbmdlIiksdC5vcmlnaW5hbFN0YXJ0K3Qub3JpZ2luYWxMZW5ndGg+PW4ub3JpZ2luYWxTdGFydHx8dC5tb2RpZmllZFN0YXJ0K3QubW9kaWZpZWRMZW5ndGg+PW4ubW9kaWZpZWRTdGFydCl7Y29uc3QgaT10Lm9yaWdpbmFsU3RhcnQ7bGV0IHM9dC5vcmlnaW5hbExlbmd0aDtjb25zdCBhPXQubW9kaWZpZWRTdGFydDtsZXQgbD10Lm1vZGlmaWVkTGVuZ3RoO3JldHVybiB0Lm9yaWdpbmFsU3RhcnQrdC5vcmlnaW5hbExlbmd0aD49bi5vcmlnaW5hbFN0YXJ0JiYocz1uLm9yaWdpbmFsU3RhcnQrbi5vcmlnaW5hbExlbmd0aC10Lm9yaWdpbmFsU3RhcnQpLHQubW9kaWZpZWRTdGFydCt0Lm1vZGlmaWVkTGVuZ3RoPj1uLm1vZGlmaWVkU3RhcnQmJihsPW4ubW9kaWZpZWRTdGFydCtuLm1vZGlmaWVkTGVuZ3RoLXQubW9kaWZpZWRTdGFydCksclswXT1uZXcgYXQoaSxzLGEsbCksITB9ZWxzZSByZXR1cm4gclswXT1udWxsLCExfUNsaXBEaWFnb25hbEJvdW5kKHQsbixyLGkpe2lmKHQ+PTAmJnQ8aSlyZXR1cm4gdDtjb25zdCBzPXIsYT1pLXItMSxsPW4lMj09PTA7aWYodDwwKXtjb25zdCBvPXMlMj09PTA7cmV0dXJuIGw9PT1vPzA6MX1lbHNle2NvbnN0IG89YSUyPT09MDtyZXR1cm4gbD09PW8/aS0xOmktMn19fXZhciBKcz17RU5WX1RZUEU6ImxvY2FsIixOT0RFX0VOVjoicHJvZHVjdGlvbiJ9O2xldCB6dDtjb25zdCBIcj1nbG9iYWxUaGlzLnZzY29kZTtpZih0eXBlb2YgSHI8InUiJiZ0eXBlb2YgSHIucHJvY2VzczwidSIpe2NvbnN0IGU9SHIucHJvY2Vzczt6dD17Z2V0IHBsYXRmb3JtKCl7cmV0dXJuIGUucGxhdGZvcm19LGdldCBhcmNoKCl7cmV0dXJuIGUuYXJjaH0sZ2V0IGVudigpe3JldHVybiBlLmVudn0sY3dkKCl7cmV0dXJuIGUuY3dkKCl9fX1lbHNlIHR5cGVvZiBwcm9jZXNzPCJ1Ij96dD17Z2V0IHBsYXRmb3JtKCl7cmV0dXJuIHByb2Nlc3MucGxhdGZvcm19LGdldCBhcmNoKCl7cmV0dXJuIHByb2Nlc3MuYXJjaH0sZ2V0IGVudigpe3JldHVybiBKc30sY3dkKCl7cmV0dXJuIEpzLlZTQ09ERV9DV0R8fHByb2Nlc3MuY3dkKCl9fTp6dD17Z2V0IHBsYXRmb3JtKCl7cmV0dXJuIGFuPyJ3aW4zMiI6U2g/ImRhcndpbiI6ImxpbnV4In0sZ2V0IGFyY2goKXt9LGdldCBlbnYoKXtyZXR1cm57fX0sY3dkKCl7cmV0dXJuIi8ifX07Y29uc3QgV249enQuY3dkLGpoPXp0LmVudixIaD16dC5wbGF0Zm9ybSxHaD02NSxKaD05NyxYaD05MCxZaD0xMjIsbHQ9NDYsZmU9NDcsU2U9OTIsY3Q9NTgsUWg9NjM7Y2xhc3MgWHMgZXh0ZW5kcyBFcnJvcntjb25zdHJ1Y3Rvcih0LG4scil7bGV0IGk7dHlwZW9mIG49PSJzdHJpbmciJiZuLmluZGV4T2YoIm5vdCAiKT09PTA/KGk9Im11c3Qgbm90IGJlIixuPW4ucmVwbGFjZSgvXm5vdCAvLCIiKSk6aT0ibXVzdCBiZSI7Y29uc3Qgcz10LmluZGV4T2YoIi4iKSE9PS0xPyJwcm9wZXJ0eSI6ImFyZ3VtZW50IjtsZXQgYT1gVGhlICIke3R9IiAke3N9ICR7aX0gb2YgdHlwZSAke259YDthKz1gLiBSZWNlaXZlZCB0eXBlICR7dHlwZW9mIHJ9YCxzdXBlcihhKSx0aGlzLmNvZGU9IkVSUl9JTlZBTElEX0FSR19UWVBFIn19ZnVuY3Rpb24gS2goZSx0KXtpZihlPT09bnVsbHx8dHlwZW9mIGUhPSJvYmplY3QiKXRocm93IG5ldyBYcyh0LCJPYmplY3QiLGUpfWZ1bmN0aW9uIGxlKGUsdCl7aWYodHlwZW9mIGUhPSJzdHJpbmciKXRocm93IG5ldyBYcyh0LCJzdHJpbmciLGUpfWNvbnN0IGh0PUhoPT09IndpbjMyIjtmdW5jdGlvbiBIKGUpe3JldHVybiBlPT09ZmV8fGU9PT1TZX1mdW5jdGlvbiBHcihlKXtyZXR1cm4gZT09PWZlfWZ1bmN0aW9uIGR0KGUpe3JldHVybiBlPj1HaCYmZTw9WGh8fGU+PUpoJiZlPD1ZaH1mdW5jdGlvbiBWbihlLHQsbixyKXtsZXQgaT0iIixzPTAsYT0tMSxsPTAsbz0wO2ZvcihsZXQgYz0wO2M8PWUubGVuZ3RoOysrYyl7aWYoYzxlLmxlbmd0aClvPWUuY2hhckNvZGVBdChjKTtlbHNle2lmKHIobykpYnJlYWs7bz1mZX1pZihyKG8pKXtpZighKGE9PT1jLTF8fGw9PT0xKSlpZihsPT09Mil7aWYoaS5sZW5ndGg8Mnx8cyE9PTJ8fGkuY2hhckNvZGVBdChpLmxlbmd0aC0xKSE9PWx0fHxpLmNoYXJDb2RlQXQoaS5sZW5ndGgtMikhPT1sdCl7aWYoaS5sZW5ndGg+Mil7Y29uc3QgZD1pLmxhc3RJbmRleE9mKG4pO2Q9PT0tMT8oaT0iIixzPTApOihpPWkuc2xpY2UoMCxkKSxzPWkubGVuZ3RoLTEtaS5sYXN0SW5kZXhPZihuKSksYT1jLGw9MDtjb250aW51ZX1lbHNlIGlmKGkubGVuZ3RoIT09MCl7aT0iIixzPTAsYT1jLGw9MDtjb250aW51ZX19dCYmKGkrPWkubGVuZ3RoPjA/YCR7bn0uLmA6Ii4uIixzPTIpfWVsc2UgaS5sZW5ndGg+MD9pKz1gJHtufSR7ZS5zbGljZShhKzEsYyl9YDppPWUuc2xpY2UoYSsxLGMpLHM9Yy1hLTE7YT1jLGw9MH1lbHNlIG89PT1sdCYmbCE9PS0xPysrbDpsPS0xfXJldHVybiBpfWZ1bmN0aW9uIFpoKGUpe3JldHVybiBlP2Ake2VbMF09PT0iLiI/IiI6Ii4ifSR7ZX1gOiIifWZ1bmN0aW9uIFlzKGUsdCl7S2godCwicGF0aE9iamVjdCIpO2NvbnN0IG49dC5kaXJ8fHQucm9vdCxyPXQuYmFzZXx8YCR7dC5uYW1lfHwiIn0ke1poKHQuZXh0KX1gO3JldHVybiBuP249PT10LnJvb3Q/YCR7bn0ke3J9YDpgJHtufSR7ZX0ke3J9YDpyfWNvbnN0IHdlPXtyZXNvbHZlKC4uLmUpe2xldCB0PSIiLG49IiIscj0hMTtmb3IobGV0IGk9ZS5sZW5ndGgtMTtpPj0tMTtpLS0pe2xldCBzO2lmKGk+PTApe2lmKHM9ZVtpXSxsZShzLGBwYXRoc1ske2l9XWApLHMubGVuZ3RoPT09MCljb250aW51ZX1lbHNlIHQubGVuZ3RoPT09MD9zPVduKCk6KHM9amhbYD0ke3R9YF18fFduKCksKHM9PT12b2lkIDB8fHMuc2xpY2UoMCwyKS50b0xvd2VyQ2FzZSgpIT09dC50b0xvd2VyQ2FzZSgpJiZzLmNoYXJDb2RlQXQoMik9PT1TZSkmJihzPWAke3R9XFxgKSk7Y29uc3QgYT1zLmxlbmd0aDtsZXQgbD0wLG89IiIsYz0hMTtjb25zdCBkPXMuY2hhckNvZGVBdCgwKTtpZihhPT09MSlIKGQpJiYobD0xLGM9ITApO2Vsc2UgaWYoSChkKSlpZihjPSEwLEgocy5jaGFyQ29kZUF0KDEpKSl7bGV0IHU9MixmPXU7Zm9yKDt1PGEmJiFIKHMuY2hhckNvZGVBdCh1KSk7KXUrKztpZih1PGEmJnUhPT1mKXtjb25zdCBtPXMuc2xpY2UoZix1KTtmb3IoZj11O3U8YSYmSChzLmNoYXJDb2RlQXQodSkpOyl1Kys7aWYodTxhJiZ1IT09Zil7Zm9yKGY9dTt1PGEmJiFIKHMuY2hhckNvZGVBdCh1KSk7KXUrKzsodT09PWF8fHUhPT1mKSYmKG89YFxcXFwke219XFwke3Muc2xpY2UoZix1KX1gLGw9dSl9fX1lbHNlIGw9MTtlbHNlIGR0KGQpJiZzLmNoYXJDb2RlQXQoMSk9PT1jdCYmKG89cy5zbGljZSgwLDIpLGw9MixhPjImJkgocy5jaGFyQ29kZUF0KDIpKSYmKGM9ITAsbD0zKSk7aWYoby5sZW5ndGg+MClpZih0Lmxlbmd0aD4wKXtpZihvLnRvTG93ZXJDYXNlKCkhPT10LnRvTG93ZXJDYXNlKCkpY29udGludWV9ZWxzZSB0PW87aWYocil7aWYodC5sZW5ndGg+MClicmVha31lbHNlIGlmKG49YCR7cy5zbGljZShsKX1cXCR7bn1gLHI9YyxjJiZ0Lmxlbmd0aD4wKWJyZWFrfXJldHVybiBuPVZuKG4sIXIsIlxcIixIKSxyP2Ake3R9XFwke259YDpgJHt0fSR7bn1gfHwiLiJ9LG5vcm1hbGl6ZShlKXtsZShlLCJwYXRoIik7Y29uc3QgdD1lLmxlbmd0aDtpZih0PT09MClyZXR1cm4iLiI7bGV0IG49MCxyLGk9ITE7Y29uc3Qgcz1lLmNoYXJDb2RlQXQoMCk7aWYodD09PTEpcmV0dXJuIEdyKHMpPyJcXCI6ZTtpZihIKHMpKWlmKGk9ITAsSChlLmNoYXJDb2RlQXQoMSkpKXtsZXQgbD0yLG89bDtmb3IoO2w8dCYmIUgoZS5jaGFyQ29kZUF0KGwpKTspbCsrO2lmKGw8dCYmbCE9PW8pe2NvbnN0IGM9ZS5zbGljZShvLGwpO2ZvcihvPWw7bDx0JiZIKGUuY2hhckNvZGVBdChsKSk7KWwrKztpZihsPHQmJmwhPT1vKXtmb3Iobz1sO2w8dCYmIUgoZS5jaGFyQ29kZUF0KGwpKTspbCsrO2lmKGw9PT10KXJldHVybmBcXFxcJHtjfVxcJHtlLnNsaWNlKG8pfVxcYDtsIT09byYmKHI9YFxcXFwke2N9XFwke2Uuc2xpY2UobyxsKX1gLG49bCl9fX1lbHNlIG49MTtlbHNlIGR0KHMpJiZlLmNoYXJDb2RlQXQoMSk9PT1jdCYmKHI9ZS5zbGljZSgwLDIpLG49Mix0PjImJkgoZS5jaGFyQ29kZUF0KDIpKSYmKGk9ITAsbj0zKSk7bGV0IGE9bjx0P1ZuKGUuc2xpY2UobiksIWksIlxcIixIKToiIjtyZXR1cm4gYS5sZW5ndGg9PT0wJiYhaSYmKGE9Ii4iKSxhLmxlbmd0aD4wJiZIKGUuY2hhckNvZGVBdCh0LTEpKSYmKGErPSJcXCIpLHI9PT12b2lkIDA/aT9gXFwke2F9YDphOmk/YCR7cn1cXCR7YX1gOmAke3J9JHthfWB9LGlzQWJzb2x1dGUoZSl7bGUoZSwicGF0aCIpO2NvbnN0IHQ9ZS5sZW5ndGg7aWYodD09PTApcmV0dXJuITE7Y29uc3Qgbj1lLmNoYXJDb2RlQXQoMCk7cmV0dXJuIEgobil8fHQ+MiYmZHQobikmJmUuY2hhckNvZGVBdCgxKT09PWN0JiZIKGUuY2hhckNvZGVBdCgyKSl9LGpvaW4oLi4uZSl7aWYoZS5sZW5ndGg9PT0wKXJldHVybiIuIjtsZXQgdCxuO2ZvcihsZXQgcz0wO3M8ZS5sZW5ndGg7KytzKXtjb25zdCBhPWVbc107bGUoYSwicGF0aCIpLGEubGVuZ3RoPjAmJih0PT09dm9pZCAwP3Q9bj1hOnQrPWBcXCR7YX1gKX1pZih0PT09dm9pZCAwKXJldHVybiIuIjtsZXQgcj0hMCxpPTA7aWYodHlwZW9mIG49PSJzdHJpbmciJiZIKG4uY2hhckNvZGVBdCgwKSkpeysraTtjb25zdCBzPW4ubGVuZ3RoO3M+MSYmSChuLmNoYXJDb2RlQXQoMSkpJiYoKytpLHM+MiYmKEgobi5jaGFyQ29kZUF0KDIpKT8rK2k6cj0hMSkpfWlmKHIpe2Zvcig7aTx0Lmxlbmd0aCYmSCh0LmNoYXJDb2RlQXQoaSkpOylpKys7aT49MiYmKHQ9YFxcJHt0LnNsaWNlKGkpfWApfXJldHVybiB3ZS5ub3JtYWxpemUodCl9LHJlbGF0aXZlKGUsdCl7aWYobGUoZSwiZnJvbSIpLGxlKHQsInRvIiksZT09PXQpcmV0dXJuIiI7Y29uc3Qgbj13ZS5yZXNvbHZlKGUpLHI9d2UucmVzb2x2ZSh0KTtpZihuPT09cnx8KGU9bi50b0xvd2VyQ2FzZSgpLHQ9ci50b0xvd2VyQ2FzZSgpLGU9PT10KSlyZXR1cm4iIjtsZXQgaT0wO2Zvcig7aTxlLmxlbmd0aCYmZS5jaGFyQ29kZUF0KGkpPT09U2U7KWkrKztsZXQgcz1lLmxlbmd0aDtmb3IoO3MtMT5pJiZlLmNoYXJDb2RlQXQocy0xKT09PVNlOylzLS07Y29uc3QgYT1zLWk7bGV0IGw9MDtmb3IoO2w8dC5sZW5ndGgmJnQuY2hhckNvZGVBdChsKT09PVNlOylsKys7bGV0IG89dC5sZW5ndGg7Zm9yKDtvLTE+bCYmdC5jaGFyQ29kZUF0KG8tMSk9PT1TZTspby0tO2NvbnN0IGM9by1sLGQ9YTxjP2E6YztsZXQgdT0tMSxmPTA7Zm9yKDtmPGQ7ZisrKXtjb25zdCB2PWUuY2hhckNvZGVBdChpK2YpO2lmKHYhPT10LmNoYXJDb2RlQXQobCtmKSlicmVhazt2PT09U2UmJih1PWYpfWlmKGYhPT1kKXtpZih1PT09LTEpcmV0dXJuIHJ9ZWxzZXtpZihjPmQpe2lmKHQuY2hhckNvZGVBdChsK2YpPT09U2UpcmV0dXJuIHIuc2xpY2UobCtmKzEpO2lmKGY9PT0yKXJldHVybiByLnNsaWNlKGwrZil9YT5kJiYoZS5jaGFyQ29kZUF0KGkrZik9PT1TZT91PWY6Zj09PTImJih1PTMpKSx1PT09LTEmJih1PTApfWxldCBtPSIiO2ZvcihmPWkrdSsxO2Y8PXM7KytmKShmPT09c3x8ZS5jaGFyQ29kZUF0KGYpPT09U2UpJiYobSs9bS5sZW5ndGg9PT0wPyIuLiI6IlxcLi4iKTtyZXR1cm4gbCs9dSxtLmxlbmd0aD4wP2Ake219JHtyLnNsaWNlKGwsbyl9YDooci5jaGFyQ29kZUF0KGwpPT09U2UmJisrbCxyLnNsaWNlKGwsbykpfSx0b05hbWVzcGFjZWRQYXRoKGUpe2lmKHR5cGVvZiBlIT0ic3RyaW5nInx8ZS5sZW5ndGg9PT0wKXJldHVybiBlO2NvbnN0IHQ9d2UucmVzb2x2ZShlKTtpZih0Lmxlbmd0aDw9MilyZXR1cm4gZTtpZih0LmNoYXJDb2RlQXQoMCk9PT1TZSl7aWYodC5jaGFyQ29kZUF0KDEpPT09U2Upe2NvbnN0IG49dC5jaGFyQ29kZUF0KDIpO2lmKG4hPT1RaCYmbiE9PWx0KXJldHVybmBcXFxcP1xcVU5DXFwke3Quc2xpY2UoMil9YH19ZWxzZSBpZihkdCh0LmNoYXJDb2RlQXQoMCkpJiZ0LmNoYXJDb2RlQXQoMSk9PT1jdCYmdC5jaGFyQ29kZUF0KDIpPT09U2UpcmV0dXJuYFxcXFw/XFwke3R9YDtyZXR1cm4gZX0sZGlybmFtZShlKXtsZShlLCJwYXRoIik7Y29uc3QgdD1lLmxlbmd0aDtpZih0PT09MClyZXR1cm4iLiI7bGV0IG49LTEscj0wO2NvbnN0IGk9ZS5jaGFyQ29kZUF0KDApO2lmKHQ9PT0xKXJldHVybiBIKGkpP2U6Ii4iO2lmKEgoaSkpe2lmKG49cj0xLEgoZS5jaGFyQ29kZUF0KDEpKSl7bGV0IGw9MixvPWw7Zm9yKDtsPHQmJiFIKGUuY2hhckNvZGVBdChsKSk7KWwrKztpZihsPHQmJmwhPT1vKXtmb3Iobz1sO2w8dCYmSChlLmNoYXJDb2RlQXQobCkpOylsKys7aWYobDx0JiZsIT09byl7Zm9yKG89bDtsPHQmJiFIKGUuY2hhckNvZGVBdChsKSk7KWwrKztpZihsPT09dClyZXR1cm4gZTtsIT09byYmKG49cj1sKzEpfX19fWVsc2UgZHQoaSkmJmUuY2hhckNvZGVBdCgxKT09PWN0JiYobj10PjImJkgoZS5jaGFyQ29kZUF0KDIpKT8zOjIscj1uKTtsZXQgcz0tMSxhPSEwO2ZvcihsZXQgbD10LTE7bD49cjstLWwpaWYoSChlLmNoYXJDb2RlQXQobCkpKXtpZighYSl7cz1sO2JyZWFrfX1lbHNlIGE9ITE7aWYocz09PS0xKXtpZihuPT09LTEpcmV0dXJuIi4iO3M9bn1yZXR1cm4gZS5zbGljZSgwLHMpfSxiYXNlbmFtZShlLHQpe3QhPT12b2lkIDAmJmxlKHQsInN1ZmZpeCIpLGxlKGUsInBhdGgiKTtsZXQgbj0wLHI9LTEsaT0hMCxzO2lmKGUubGVuZ3RoPj0yJiZkdChlLmNoYXJDb2RlQXQoMCkpJiZlLmNoYXJDb2RlQXQoMSk9PT1jdCYmKG49MiksdCE9PXZvaWQgMCYmdC5sZW5ndGg+MCYmdC5sZW5ndGg8PWUubGVuZ3RoKXtpZih0PT09ZSlyZXR1cm4iIjtsZXQgYT10Lmxlbmd0aC0xLGw9LTE7Zm9yKHM9ZS5sZW5ndGgtMTtzPj1uOy0tcyl7Y29uc3Qgbz1lLmNoYXJDb2RlQXQocyk7aWYoSChvKSl7aWYoIWkpe249cysxO2JyZWFrfX1lbHNlIGw9PT0tMSYmKGk9ITEsbD1zKzEpLGE+PTAmJihvPT09dC5jaGFyQ29kZUF0KGEpPy0tYT09PS0xJiYocj1zKTooYT0tMSxyPWwpKX1yZXR1cm4gbj09PXI/cj1sOnI9PT0tMSYmKHI9ZS5sZW5ndGgpLGUuc2xpY2UobixyKX1mb3Iocz1lLmxlbmd0aC0xO3M+PW47LS1zKWlmKEgoZS5jaGFyQ29kZUF0KHMpKSl7aWYoIWkpe249cysxO2JyZWFrfX1lbHNlIHI9PT0tMSYmKGk9ITEscj1zKzEpO3JldHVybiByPT09LTE/IiI6ZS5zbGljZShuLHIpfSxleHRuYW1lKGUpe2xlKGUsInBhdGgiKTtsZXQgdD0wLG49LTEscj0wLGk9LTEscz0hMCxhPTA7ZS5sZW5ndGg+PTImJmUuY2hhckNvZGVBdCgxKT09PWN0JiZkdChlLmNoYXJDb2RlQXQoMCkpJiYodD1yPTIpO2ZvcihsZXQgbD1lLmxlbmd0aC0xO2w+PXQ7LS1sKXtjb25zdCBvPWUuY2hhckNvZGVBdChsKTtpZihIKG8pKXtpZighcyl7cj1sKzE7YnJlYWt9Y29udGludWV9aT09PS0xJiYocz0hMSxpPWwrMSksbz09PWx0P249PT0tMT9uPWw6YSE9PTEmJihhPTEpOm4hPT0tMSYmKGE9LTEpfXJldHVybiBuPT09LTF8fGk9PT0tMXx8YT09PTB8fGE9PT0xJiZuPT09aS0xJiZuPT09cisxPyIiOmUuc2xpY2UobixpKX0sZm9ybWF0OllzLmJpbmQobnVsbCwiXFwiKSxwYXJzZShlKXtsZShlLCJwYXRoIik7Y29uc3QgdD17cm9vdDoiIixkaXI6IiIsYmFzZToiIixleHQ6IiIsbmFtZToiIn07aWYoZS5sZW5ndGg9PT0wKXJldHVybiB0O2NvbnN0IG49ZS5sZW5ndGg7bGV0IHI9MCxpPWUuY2hhckNvZGVBdCgwKTtpZihuPT09MSlyZXR1cm4gSChpKT8odC5yb290PXQuZGlyPWUsdCk6KHQuYmFzZT10Lm5hbWU9ZSx0KTtpZihIKGkpKXtpZihyPTEsSChlLmNoYXJDb2RlQXQoMSkpKXtsZXQgdT0yLGY9dTtmb3IoO3U8biYmIUgoZS5jaGFyQ29kZUF0KHUpKTspdSsrO2lmKHU8biYmdSE9PWYpe2ZvcihmPXU7dTxuJiZIKGUuY2hhckNvZGVBdCh1KSk7KXUrKztpZih1PG4mJnUhPT1mKXtmb3IoZj11O3U8biYmIUgoZS5jaGFyQ29kZUF0KHUpKTspdSsrO3U9PT1uP3I9dTp1IT09ZiYmKHI9dSsxKX19fX1lbHNlIGlmKGR0KGkpJiZlLmNoYXJDb2RlQXQoMSk9PT1jdCl7aWYobjw9MilyZXR1cm4gdC5yb290PXQuZGlyPWUsdDtpZihyPTIsSChlLmNoYXJDb2RlQXQoMikpKXtpZihuPT09MylyZXR1cm4gdC5yb290PXQuZGlyPWUsdDtyPTN9fXI+MCYmKHQucm9vdD1lLnNsaWNlKDAscikpO2xldCBzPS0xLGE9cixsPS0xLG89ITAsYz1lLmxlbmd0aC0xLGQ9MDtmb3IoO2M+PXI7LS1jKXtpZihpPWUuY2hhckNvZGVBdChjKSxIKGkpKXtpZighbyl7YT1jKzE7YnJlYWt9Y29udGludWV9bD09PS0xJiYobz0hMSxsPWMrMSksaT09PWx0P3M9PT0tMT9zPWM6ZCE9PTEmJihkPTEpOnMhPT0tMSYmKGQ9LTEpfXJldHVybiBsIT09LTEmJihzPT09LTF8fGQ9PT0wfHxkPT09MSYmcz09PWwtMSYmcz09PWErMT90LmJhc2U9dC5uYW1lPWUuc2xpY2UoYSxsKToodC5uYW1lPWUuc2xpY2UoYSxzKSx0LmJhc2U9ZS5zbGljZShhLGwpLHQuZXh0PWUuc2xpY2UocyxsKSkpLGE+MCYmYSE9PXI/dC5kaXI9ZS5zbGljZSgwLGEtMSk6dC5kaXI9dC5yb290LHR9LHNlcDoiXFwiLGRlbGltaXRlcjoiOyIsd2luMzI6bnVsbCxwb3NpeDpudWxsfSxlZD0oKCk9PntpZihodCl7Y29uc3QgZT0vXFwvZztyZXR1cm4oKT0+e2NvbnN0IHQ9V24oKS5yZXBsYWNlKGUsIi8iKTtyZXR1cm4gdC5zbGljZSh0LmluZGV4T2YoIi8iKSl9fXJldHVybigpPT5XbigpfSkoKSxDZT17cmVzb2x2ZSguLi5lKXtsZXQgdD0iIixuPSExO2ZvcihsZXQgcj1lLmxlbmd0aC0xO3I+PS0xJiYhbjtyLS0pe2NvbnN0IGk9cj49MD9lW3JdOmVkKCk7bGUoaSxgcGF0aHNbJHtyfV1gKSxpLmxlbmd0aCE9PTAmJih0PWAke2l9LyR7dH1gLG49aS5jaGFyQ29kZUF0KDApPT09ZmUpfXJldHVybiB0PVZuKHQsIW4sIi8iLEdyKSxuP2AvJHt0fWA6dC5sZW5ndGg+MD90OiIuIn0sbm9ybWFsaXplKGUpe2lmKGxlKGUsInBhdGgiKSxlLmxlbmd0aD09PTApcmV0dXJuIi4iO2NvbnN0IHQ9ZS5jaGFyQ29kZUF0KDApPT09ZmUsbj1lLmNoYXJDb2RlQXQoZS5sZW5ndGgtMSk9PT1mZTtyZXR1cm4gZT1WbihlLCF0LCIvIixHciksZS5sZW5ndGg9PT0wP3Q/Ii8iOm4/Ii4vIjoiLiI6KG4mJihlKz0iLyIpLHQ/YC8ke2V9YDplKX0saXNBYnNvbHV0ZShlKXtyZXR1cm4gbGUoZSwicGF0aCIpLGUubGVuZ3RoPjAmJmUuY2hhckNvZGVBdCgwKT09PWZlfSxqb2luKC4uLmUpe2lmKGUubGVuZ3RoPT09MClyZXR1cm4iLiI7bGV0IHQ7Zm9yKGxldCBuPTA7bjxlLmxlbmd0aDsrK24pe2NvbnN0IHI9ZVtuXTtsZShyLCJwYXRoIiksci5sZW5ndGg+MCYmKHQ9PT12b2lkIDA/dD1yOnQrPWAvJHtyfWApfXJldHVybiB0PT09dm9pZCAwPyIuIjpDZS5ub3JtYWxpemUodCl9LHJlbGF0aXZlKGUsdCl7aWYobGUoZSwiZnJvbSIpLGxlKHQsInRvIiksZT09PXR8fChlPUNlLnJlc29sdmUoZSksdD1DZS5yZXNvbHZlKHQpLGU9PT10KSlyZXR1cm4iIjtjb25zdCBuPTEscj1lLmxlbmd0aCxpPXItbixzPTEsYT10Lmxlbmd0aC1zLGw9aTxhP2k6YTtsZXQgbz0tMSxjPTA7Zm9yKDtjPGw7YysrKXtjb25zdCB1PWUuY2hhckNvZGVBdChuK2MpO2lmKHUhPT10LmNoYXJDb2RlQXQocytjKSlicmVhazt1PT09ZmUmJihvPWMpfWlmKGM9PT1sKWlmKGE+bCl7aWYodC5jaGFyQ29kZUF0KHMrYyk9PT1mZSlyZXR1cm4gdC5zbGljZShzK2MrMSk7aWYoYz09PTApcmV0dXJuIHQuc2xpY2UocytjKX1lbHNlIGk+bCYmKGUuY2hhckNvZGVBdChuK2MpPT09ZmU/bz1jOmM9PT0wJiYobz0wKSk7bGV0IGQ9IiI7Zm9yKGM9bitvKzE7Yzw9cjsrK2MpKGM9PT1yfHxlLmNoYXJDb2RlQXQoYyk9PT1mZSkmJihkKz1kLmxlbmd0aD09PTA/Ii4uIjoiLy4uIik7cmV0dXJuYCR7ZH0ke3Quc2xpY2UocytvKX1gfSx0b05hbWVzcGFjZWRQYXRoKGUpe3JldHVybiBlfSxkaXJuYW1lKGUpe2lmKGxlKGUsInBhdGgiKSxlLmxlbmd0aD09PTApcmV0dXJuIi4iO2NvbnN0IHQ9ZS5jaGFyQ29kZUF0KDApPT09ZmU7bGV0IG49LTEscj0hMDtmb3IobGV0IGk9ZS5sZW5ndGgtMTtpPj0xOy0taSlpZihlLmNoYXJDb2RlQXQoaSk9PT1mZSl7aWYoIXIpe249aTticmVha319ZWxzZSByPSExO3JldHVybiBuPT09LTE/dD8iLyI6Ii4iOnQmJm49PT0xPyIvLyI6ZS5zbGljZSgwLG4pfSxiYXNlbmFtZShlLHQpe3QhPT12b2lkIDAmJmxlKHQsImV4dCIpLGxlKGUsInBhdGgiKTtsZXQgbj0wLHI9LTEsaT0hMCxzO2lmKHQhPT12b2lkIDAmJnQubGVuZ3RoPjAmJnQubGVuZ3RoPD1lLmxlbmd0aCl7aWYodD09PWUpcmV0dXJuIiI7bGV0IGE9dC5sZW5ndGgtMSxsPS0xO2ZvcihzPWUubGVuZ3RoLTE7cz49MDstLXMpe2NvbnN0IG89ZS5jaGFyQ29kZUF0KHMpO2lmKG89PT1mZSl7aWYoIWkpe249cysxO2JyZWFrfX1lbHNlIGw9PT0tMSYmKGk9ITEsbD1zKzEpLGE+PTAmJihvPT09dC5jaGFyQ29kZUF0KGEpPy0tYT09PS0xJiYocj1zKTooYT0tMSxyPWwpKX1yZXR1cm4gbj09PXI/cj1sOnI9PT0tMSYmKHI9ZS5sZW5ndGgpLGUuc2xpY2UobixyKX1mb3Iocz1lLmxlbmd0aC0xO3M+PTA7LS1zKWlmKGUuY2hhckNvZGVBdChzKT09PWZlKXtpZighaSl7bj1zKzE7YnJlYWt9fWVsc2Ugcj09PS0xJiYoaT0hMSxyPXMrMSk7cmV0dXJuIHI9PT0tMT8iIjplLnNsaWNlKG4scil9LGV4dG5hbWUoZSl7bGUoZSwicGF0aCIpO2xldCB0PS0xLG49MCxyPS0xLGk9ITAscz0wO2ZvcihsZXQgYT1lLmxlbmd0aC0xO2E+PTA7LS1hKXtjb25zdCBsPWUuY2hhckNvZGVBdChhKTtpZihsPT09ZmUpe2lmKCFpKXtuPWErMTticmVha31jb250aW51ZX1yPT09LTEmJihpPSExLHI9YSsxKSxsPT09bHQ/dD09PS0xP3Q9YTpzIT09MSYmKHM9MSk6dCE9PS0xJiYocz0tMSl9cmV0dXJuIHQ9PT0tMXx8cj09PS0xfHxzPT09MHx8cz09PTEmJnQ9PT1yLTEmJnQ9PT1uKzE/IiI6ZS5zbGljZSh0LHIpfSxmb3JtYXQ6WXMuYmluZChudWxsLCIvIikscGFyc2UoZSl7bGUoZSwicGF0aCIpO2NvbnN0IHQ9e3Jvb3Q6IiIsZGlyOiIiLGJhc2U6IiIsZXh0OiIiLG5hbWU6IiJ9O2lmKGUubGVuZ3RoPT09MClyZXR1cm4gdDtjb25zdCBuPWUuY2hhckNvZGVBdCgwKT09PWZlO2xldCByO24/KHQucm9vdD0iLyIscj0xKTpyPTA7bGV0IGk9LTEscz0wLGE9LTEsbD0hMCxvPWUubGVuZ3RoLTEsYz0wO2Zvcig7bz49cjstLW8pe2NvbnN0IGQ9ZS5jaGFyQ29kZUF0KG8pO2lmKGQ9PT1mZSl7aWYoIWwpe3M9bysxO2JyZWFrfWNvbnRpbnVlfWE9PT0tMSYmKGw9ITEsYT1vKzEpLGQ9PT1sdD9pPT09LTE/aT1vOmMhPT0xJiYoYz0xKTppIT09LTEmJihjPS0xKX1pZihhIT09LTEpe2NvbnN0IGQ9cz09PTAmJm4/MTpzO2k9PT0tMXx8Yz09PTB8fGM9PT0xJiZpPT09YS0xJiZpPT09cysxP3QuYmFzZT10Lm5hbWU9ZS5zbGljZShkLGEpOih0Lm5hbWU9ZS5zbGljZShkLGkpLHQuYmFzZT1lLnNsaWNlKGQsYSksdC5leHQ9ZS5zbGljZShpLGEpKX1yZXR1cm4gcz4wP3QuZGlyPWUuc2xpY2UoMCxzLTEpOm4mJih0LmRpcj0iLyIpLHR9LHNlcDoiLyIsZGVsaW1pdGVyOiI6Iix3aW4zMjpudWxsLHBvc2l4Om51bGx9O0NlLndpbjMyPXdlLndpbjMyPXdlLENlLnBvc2l4PXdlLnBvc2l4PUNlLGh0P3dlLm5vcm1hbGl6ZTpDZS5ub3JtYWxpemUsaHQ/d2UucmVzb2x2ZTpDZS5yZXNvbHZlLGh0P3dlLnJlbGF0aXZlOkNlLnJlbGF0aXZlLGh0P3dlLmRpcm5hbWU6Q2UuZGlybmFtZSxodD93ZS5iYXNlbmFtZTpDZS5iYXNlbmFtZSxodD93ZS5leHRuYW1lOkNlLmV4dG5hbWUsaHQ/d2Uuc2VwOkNlLnNlcDtjb25zdCB0ZD0vXlx3W1x3XGQrLi1dKiQvLG5kPS9eXC8vLHJkPS9eXC9cLy87ZnVuY3Rpb24gaWQoZSx0KXtpZighZS5zY2hlbWUmJnQpdGhyb3cgbmV3IEVycm9yKGBbVXJpRXJyb3JdOiBTY2hlbWUgaXMgbWlzc2luZzoge3NjaGVtZTogIiIsIGF1dGhvcml0eTogIiR7ZS5hdXRob3JpdHl9IiwgcGF0aDogIiR7ZS5wYXRofSIsIHF1ZXJ5OiAiJHtlLnF1ZXJ5fSIsIGZyYWdtZW50OiAiJHtlLmZyYWdtZW50fSJ9YCk7aWYoZS5zY2hlbWUmJiF0ZC50ZXN0KGUuc2NoZW1lKSl0aHJvdyBuZXcgRXJyb3IoIltVcmlFcnJvcl06IFNjaGVtZSBjb250YWlucyBpbGxlZ2FsIGNoYXJhY3RlcnMuIik7aWYoZS5wYXRoKXtpZihlLmF1dGhvcml0eSl7aWYoIW5kLnRlc3QoZS5wYXRoKSl0aHJvdyBuZXcgRXJyb3IoJ1tVcmlFcnJvcl06IElmIGEgVVJJIGNvbnRhaW5zIGFuIGF1dGhvcml0eSBjb21wb25lbnQsIHRoZW4gdGhlIHBhdGggY29tcG9uZW50IG11c3QgZWl0aGVyIGJlIGVtcHR5IG9yIGJlZ2luIHdpdGggYSBzbGFzaCAoIi8iKSBjaGFyYWN0ZXInKX1lbHNlIGlmKHJkLnRlc3QoZS5wYXRoKSl0aHJvdyBuZXcgRXJyb3IoJ1tVcmlFcnJvcl06IElmIGEgVVJJIGRvZXMgbm90IGNvbnRhaW4gYW4gYXV0aG9yaXR5IGNvbXBvbmVudCwgdGhlbiB0aGUgcGF0aCBjYW5ub3QgYmVnaW4gd2l0aCB0d28gc2xhc2ggY2hhcmFjdGVycyAoIi8vIiknKX19ZnVuY3Rpb24gc2QoZSx0KXtyZXR1cm4hZSYmIXQ/ImZpbGUiOmV9ZnVuY3Rpb24gYWQoZSx0KXtzd2l0Y2goZSl7Y2FzZSJodHRwcyI6Y2FzZSJodHRwIjpjYXNlImZpbGUiOnQ/dFswXSE9PXplJiYodD16ZSt0KTp0PXplO2JyZWFrfXJldHVybiB0fWNvbnN0IG5lPSIiLHplPSIvIixvZD0vXigoW146Lz8jXSs/KTopPyhcL1wvKFteLz8jXSopKT8oW14/I10qKShcPyhbXiNdKikpPygjKC4qKSk/LztsZXQgSnI9Y2xhc3MgSXJ7c3RhdGljIGlzVXJpKHQpe3JldHVybiB0IGluc3RhbmNlb2YgSXI/ITA6dD90eXBlb2YgdC5hdXRob3JpdHk9PSJzdHJpbmciJiZ0eXBlb2YgdC5mcmFnbWVudD09InN0cmluZyImJnR5cGVvZiB0LnBhdGg9PSJzdHJpbmciJiZ0eXBlb2YgdC5xdWVyeT09InN0cmluZyImJnR5cGVvZiB0LnNjaGVtZT09InN0cmluZyImJnR5cGVvZiB0LmZzUGF0aD09InN0cmluZyImJnR5cGVvZiB0LndpdGg9PSJmdW5jdGlvbiImJnR5cGVvZiB0LnRvU3RyaW5nPT0iZnVuY3Rpb24iOiExfWNvbnN0cnVjdG9yKHQsbixyLGkscyxhPSExKXt0eXBlb2YgdD09Im9iamVjdCI/KHRoaXMuc2NoZW1lPXQuc2NoZW1lfHxuZSx0aGlzLmF1dGhvcml0eT10LmF1dGhvcml0eXx8bmUsdGhpcy5wYXRoPXQucGF0aHx8bmUsdGhpcy5xdWVyeT10LnF1ZXJ5fHxuZSx0aGlzLmZyYWdtZW50PXQuZnJhZ21lbnR8fG5lKToodGhpcy5zY2hlbWU9c2QodCxhKSx0aGlzLmF1dGhvcml0eT1ufHxuZSx0aGlzLnBhdGg9YWQodGhpcy5zY2hlbWUscnx8bmUpLHRoaXMucXVlcnk9aXx8bmUsdGhpcy5mcmFnbWVudD1zfHxuZSxpZCh0aGlzLGEpKX1nZXQgZnNQYXRoKCl7cmV0dXJuIFhyKHRoaXMsITEpfXdpdGgodCl7aWYoIXQpcmV0dXJuIHRoaXM7bGV0e3NjaGVtZTpuLGF1dGhvcml0eTpyLHBhdGg6aSxxdWVyeTpzLGZyYWdtZW50OmF9PXQ7cmV0dXJuIG49PT12b2lkIDA/bj10aGlzLnNjaGVtZTpuPT09bnVsbCYmKG49bmUpLHI9PT12b2lkIDA/cj10aGlzLmF1dGhvcml0eTpyPT09bnVsbCYmKHI9bmUpLGk9PT12b2lkIDA/aT10aGlzLnBhdGg6aT09PW51bGwmJihpPW5lKSxzPT09dm9pZCAwP3M9dGhpcy5xdWVyeTpzPT09bnVsbCYmKHM9bmUpLGE9PT12b2lkIDA/YT10aGlzLmZyYWdtZW50OmE9PT1udWxsJiYoYT1uZSksbj09PXRoaXMuc2NoZW1lJiZyPT09dGhpcy5hdXRob3JpdHkmJmk9PT10aGlzLnBhdGgmJnM9PT10aGlzLnF1ZXJ5JiZhPT09dGhpcy5mcmFnbWVudD90aGlzOm5ldyBQdChuLHIsaSxzLGEpfXN0YXRpYyBwYXJzZSh0LG49ITEpe2NvbnN0IHI9b2QuZXhlYyh0KTtyZXR1cm4gcj9uZXcgUHQoclsyXXx8bmUsVW4ocls0XXx8bmUpLFVuKHJbNV18fG5lKSxVbihyWzddfHxuZSksVW4ocls5XXx8bmUpLG4pOm5ldyBQdChuZSxuZSxuZSxuZSxuZSl9c3RhdGljIGZpbGUodCl7bGV0IG49bmU7aWYoYW4mJih0PXQucmVwbGFjZSgvXFwvZyx6ZSkpLHRbMF09PT16ZSYmdFsxXT09PXplKXtjb25zdCByPXQuaW5kZXhPZih6ZSwyKTtyPT09LTE/KG49dC5zdWJzdHJpbmcoMiksdD16ZSk6KG49dC5zdWJzdHJpbmcoMixyKSx0PXQuc3Vic3RyaW5nKHIpfHx6ZSl9cmV0dXJuIG5ldyBQdCgiZmlsZSIsbix0LG5lLG5lKX1zdGF0aWMgZnJvbSh0LG4pe3JldHVybiBuZXcgUHQodC5zY2hlbWUsdC5hdXRob3JpdHksdC5wYXRoLHQucXVlcnksdC5mcmFnbWVudCxuKX1zdGF0aWMgam9pblBhdGgodCwuLi5uKXtpZighdC5wYXRoKXRocm93IG5ldyBFcnJvcigiW1VyaUVycm9yXTogY2Fubm90IGNhbGwgam9pblBhdGggb24gVVJJIHdpdGhvdXQgcGF0aCIpO2xldCByO3JldHVybiBhbiYmdC5zY2hlbWU9PT0iZmlsZSI/cj1Jci5maWxlKHdlLmpvaW4oWHIodCwhMCksLi4ubikpLnBhdGg6cj1DZS5qb2luKHQucGF0aCwuLi5uKSx0LndpdGgoe3BhdGg6cn0pfXRvU3RyaW5nKHQ9ITEpe3JldHVybiBZcih0aGlzLHQpfXRvSlNPTigpe3JldHVybiB0aGlzfXN0YXRpYyByZXZpdmUodCl7aWYodCl7aWYodCBpbnN0YW5jZW9mIElyKXJldHVybiB0O3tjb25zdCBuPW5ldyBQdCh0KTtyZXR1cm4gbi5fZm9ybWF0dGVkPXQuZXh0ZXJuYWw/P251bGwsbi5fZnNQYXRoPXQuX3NlcD09PVFzP3QuZnNQYXRoPz9udWxsOm51bGwsbn19ZWxzZSByZXR1cm4gdH19O2NvbnN0IFFzPWFuPzE6dm9pZCAwO2NsYXNzIFB0IGV4dGVuZHMgSnJ7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMuX2Zvcm1hdHRlZD1udWxsLHRoaXMuX2ZzUGF0aD1udWxsfWdldCBmc1BhdGgoKXtyZXR1cm4gdGhpcy5fZnNQYXRofHwodGhpcy5fZnNQYXRoPVhyKHRoaXMsITEpKSx0aGlzLl9mc1BhdGh9dG9TdHJpbmcodD0hMSl7cmV0dXJuIHQ/WXIodGhpcywhMCk6KHRoaXMuX2Zvcm1hdHRlZHx8KHRoaXMuX2Zvcm1hdHRlZD1Zcih0aGlzLCExKSksdGhpcy5fZm9ybWF0dGVkKX10b0pTT04oKXtjb25zdCB0PXskbWlkOjF9O3JldHVybiB0aGlzLl9mc1BhdGgmJih0LmZzUGF0aD10aGlzLl9mc1BhdGgsdC5fc2VwPVFzKSx0aGlzLl9mb3JtYXR0ZWQmJih0LmV4dGVybmFsPXRoaXMuX2Zvcm1hdHRlZCksdGhpcy5wYXRoJiYodC5wYXRoPXRoaXMucGF0aCksdGhpcy5zY2hlbWUmJih0LnNjaGVtZT10aGlzLnNjaGVtZSksdGhpcy5hdXRob3JpdHkmJih0LmF1dGhvcml0eT10aGlzLmF1dGhvcml0eSksdGhpcy5xdWVyeSYmKHQucXVlcnk9dGhpcy5xdWVyeSksdGhpcy5mcmFnbWVudCYmKHQuZnJhZ21lbnQ9dGhpcy5mcmFnbWVudCksdH19Y29uc3QgS3M9ezU4OiIlM0EiLDQ3OiIlMkYiLDYzOiIlM0YiLDM1OiIlMjMiLDkxOiIlNUIiLDkzOiIlNUQiLDY0OiIlNDAiLDMzOiIlMjEiLDM2OiIlMjQiLDM4OiIlMjYiLDM5OiIlMjciLDQwOiIlMjgiLDQxOiIlMjkiLDQyOiIlMkEiLDQzOiIlMkIiLDQ0OiIlMkMiLDU5OiIlM0IiLDYxOiIlM0QiLDMyOiIlMjAifTtmdW5jdGlvbiBacyhlLHQsbil7bGV0IHIsaT0tMTtmb3IobGV0IHM9MDtzPGUubGVuZ3RoO3MrKyl7Y29uc3QgYT1lLmNoYXJDb2RlQXQocyk7aWYoYT49OTcmJmE8PTEyMnx8YT49NjUmJmE8PTkwfHxhPj00OCYmYTw9NTd8fGE9PT00NXx8YT09PTQ2fHxhPT09OTV8fGE9PT0xMjZ8fHQmJmE9PT00N3x8biYmYT09PTkxfHxuJiZhPT09OTN8fG4mJmE9PT01OClpIT09LTEmJihyKz1lbmNvZGVVUklDb21wb25lbnQoZS5zdWJzdHJpbmcoaSxzKSksaT0tMSksciE9PXZvaWQgMCYmKHIrPWUuY2hhckF0KHMpKTtlbHNle3I9PT12b2lkIDAmJihyPWUuc3Vic3RyKDAscykpO2NvbnN0IGw9S3NbYV07bCE9PXZvaWQgMD8oaSE9PS0xJiYocis9ZW5jb2RlVVJJQ29tcG9uZW50KGUuc3Vic3RyaW5nKGkscykpLGk9LTEpLHIrPWwpOmk9PT0tMSYmKGk9cyl9fXJldHVybiBpIT09LTEmJihyKz1lbmNvZGVVUklDb21wb25lbnQoZS5zdWJzdHJpbmcoaSkpKSxyIT09dm9pZCAwP3I6ZX1mdW5jdGlvbiBsZChlKXtsZXQgdDtmb3IobGV0IG49MDtuPGUubGVuZ3RoO24rKyl7Y29uc3Qgcj1lLmNoYXJDb2RlQXQobik7cj09PTM1fHxyPT09NjM/KHQ9PT12b2lkIDAmJih0PWUuc3Vic3RyKDAsbikpLHQrPUtzW3JdKTp0IT09dm9pZCAwJiYodCs9ZVtuXSl9cmV0dXJuIHQhPT12b2lkIDA/dDplfWZ1bmN0aW9uIFhyKGUsdCl7bGV0IG47cmV0dXJuIGUuYXV0aG9yaXR5JiZlLnBhdGgubGVuZ3RoPjEmJmUuc2NoZW1lPT09ImZpbGUiP249YC8vJHtlLmF1dGhvcml0eX0ke2UucGF0aH1gOmUucGF0aC5jaGFyQ29kZUF0KDApPT09NDcmJihlLnBhdGguY2hhckNvZGVBdCgxKT49NjUmJmUucGF0aC5jaGFyQ29kZUF0KDEpPD05MHx8ZS5wYXRoLmNoYXJDb2RlQXQoMSk+PTk3JiZlLnBhdGguY2hhckNvZGVBdCgxKTw9MTIyKSYmZS5wYXRoLmNoYXJDb2RlQXQoMik9PT01OD90P249ZS5wYXRoLnN1YnN0cigxKTpuPWUucGF0aFsxXS50b0xvd2VyQ2FzZSgpK2UucGF0aC5zdWJzdHIoMik6bj1lLnBhdGgsYW4mJihuPW4ucmVwbGFjZSgvXC8vZywiXFwiKSksbn1mdW5jdGlvbiBZcihlLHQpe2NvbnN0IG49dD9sZDpacztsZXQgcj0iIix7c2NoZW1lOmksYXV0aG9yaXR5OnMscGF0aDphLHF1ZXJ5OmwsZnJhZ21lbnQ6b309ZTtpZihpJiYocis9aSxyKz0iOiIpLChzfHxpPT09ImZpbGUiKSYmKHIrPXplLHIrPXplKSxzKXtsZXQgYz1zLmluZGV4T2YoIkAiKTtpZihjIT09LTEpe2NvbnN0IGQ9cy5zdWJzdHIoMCxjKTtzPXMuc3Vic3RyKGMrMSksYz1kLmxhc3RJbmRleE9mKCI6IiksYz09PS0xP3IrPW4oZCwhMSwhMSk6KHIrPW4oZC5zdWJzdHIoMCxjKSwhMSwhMSkscis9IjoiLHIrPW4oZC5zdWJzdHIoYysxKSwhMSwhMCkpLHIrPSJAIn1zPXMudG9Mb3dlckNhc2UoKSxjPXMubGFzdEluZGV4T2YoIjoiKSxjPT09LTE/cis9bihzLCExLCEwKToocis9bihzLnN1YnN0cigwLGMpLCExLCEwKSxyKz1zLnN1YnN0cihjKSl9aWYoYSl7aWYoYS5sZW5ndGg+PTMmJmEuY2hhckNvZGVBdCgwKT09PTQ3JiZhLmNoYXJDb2RlQXQoMik9PT01OCl7Y29uc3QgYz1hLmNoYXJDb2RlQXQoMSk7Yz49NjUmJmM8PTkwJiYoYT1gLyR7U3RyaW5nLmZyb21DaGFyQ29kZShjKzMyKX06JHthLnN1YnN0cigzKX1gKX1lbHNlIGlmKGEubGVuZ3RoPj0yJiZhLmNoYXJDb2RlQXQoMSk9PT01OCl7Y29uc3QgYz1hLmNoYXJDb2RlQXQoMCk7Yz49NjUmJmM8PTkwJiYoYT1gJHtTdHJpbmcuZnJvbUNoYXJDb2RlKGMrMzIpfToke2Euc3Vic3RyKDIpfWApfXIrPW4oYSwhMCwhMSl9cmV0dXJuIGwmJihyKz0iPyIscis9bihsLCExLCExKSksbyYmKHIrPSIjIixyKz10P286WnMobywhMSwhMSkpLHJ9ZnVuY3Rpb24gZWEoZSl7dHJ5e3JldHVybiBkZWNvZGVVUklDb21wb25lbnQoZSl9Y2F0Y2h7cmV0dXJuIGUubGVuZ3RoPjM/ZS5zdWJzdHIoMCwzKStlYShlLnN1YnN0cigzKSk6ZX19Y29uc3QgdGE9LyglWzAtOUEtWmEtel1bMC05QS1aYS16XSkrL2c7ZnVuY3Rpb24gVW4oZSl7cmV0dXJuIGUubWF0Y2godGEpP2UucmVwbGFjZSh0YSx0PT5lYSh0KSk6ZX1sZXQgY2U9Y2xhc3MgTnR7Y29uc3RydWN0b3IodCxuKXt0aGlzLmxpbmVOdW1iZXI9dCx0aGlzLmNvbHVtbj1ufXdpdGgodD10aGlzLmxpbmVOdW1iZXIsbj10aGlzLmNvbHVtbil7cmV0dXJuIHQ9PT10aGlzLmxpbmVOdW1iZXImJm49PT10aGlzLmNvbHVtbj90aGlzOm5ldyBOdCh0LG4pfWRlbHRhKHQ9MCxuPTApe3JldHVybiB0aGlzLndpdGgodGhpcy5saW5lTnVtYmVyK3QsdGhpcy5jb2x1bW4rbil9ZXF1YWxzKHQpe3JldHVybiBOdC5lcXVhbHModGhpcyx0KX1zdGF0aWMgZXF1YWxzKHQsbil7cmV0dXJuIXQmJiFuPyEwOiEhdCYmISFuJiZ0LmxpbmVOdW1iZXI9PT1uLmxpbmVOdW1iZXImJnQuY29sdW1uPT09bi5jb2x1bW59aXNCZWZvcmUodCl7cmV0dXJuIE50LmlzQmVmb3JlKHRoaXMsdCl9c3RhdGljIGlzQmVmb3JlKHQsbil7cmV0dXJuIHQubGluZU51bWJlcjxuLmxpbmVOdW1iZXI/ITA6bi5saW5lTnVtYmVyPHQubGluZU51bWJlcj8hMTp0LmNvbHVtbjxuLmNvbHVtbn1pc0JlZm9yZU9yRXF1YWwodCl7cmV0dXJuIE50LmlzQmVmb3JlT3JFcXVhbCh0aGlzLHQpfXN0YXRpYyBpc0JlZm9yZU9yRXF1YWwodCxuKXtyZXR1cm4gdC5saW5lTnVtYmVyPG4ubGluZU51bWJlcj8hMDpuLmxpbmVOdW1iZXI8dC5saW5lTnVtYmVyPyExOnQuY29sdW1uPD1uLmNvbHVtbn1zdGF0aWMgY29tcGFyZSh0LG4pe2NvbnN0IHI9dC5saW5lTnVtYmVyfDAsaT1uLmxpbmVOdW1iZXJ8MDtpZihyPT09aSl7Y29uc3Qgcz10LmNvbHVtbnwwLGE9bi5jb2x1bW58MDtyZXR1cm4gcy1hfXJldHVybiByLWl9Y2xvbmUoKXtyZXR1cm4gbmV3IE50KHRoaXMubGluZU51bWJlcix0aGlzLmNvbHVtbil9dG9TdHJpbmcoKXtyZXR1cm4iKCIrdGhpcy5saW5lTnVtYmVyKyIsIit0aGlzLmNvbHVtbisiKSJ9c3RhdGljIGxpZnQodCl7cmV0dXJuIG5ldyBOdCh0LmxpbmVOdW1iZXIsdC5jb2x1bW4pfXN0YXRpYyBpc0lQb3NpdGlvbih0KXtyZXR1cm4gdCYmdHlwZW9mIHQubGluZU51bWJlcj09Im51bWJlciImJnR5cGVvZiB0LmNvbHVtbj09Im51bWJlciJ9dG9KU09OKCl7cmV0dXJue2xpbmVOdW1iZXI6dGhpcy5saW5lTnVtYmVyLGNvbHVtbjp0aGlzLmNvbHVtbn19fSxRPWNsYXNzIGRle2NvbnN0cnVjdG9yKHQsbixyLGkpe3Q+cnx8dD09PXImJm4+aT8odGhpcy5zdGFydExpbmVOdW1iZXI9cix0aGlzLnN0YXJ0Q29sdW1uPWksdGhpcy5lbmRMaW5lTnVtYmVyPXQsdGhpcy5lbmRDb2x1bW49bik6KHRoaXMuc3RhcnRMaW5lTnVtYmVyPXQsdGhpcy5zdGFydENvbHVtbj1uLHRoaXMuZW5kTGluZU51bWJlcj1yLHRoaXMuZW5kQ29sdW1uPWkpfWlzRW1wdHkoKXtyZXR1cm4gZGUuaXNFbXB0eSh0aGlzKX1zdGF0aWMgaXNFbXB0eSh0KXtyZXR1cm4gdC5zdGFydExpbmVOdW1iZXI9PT10LmVuZExpbmVOdW1iZXImJnQuc3RhcnRDb2x1bW49PT10LmVuZENvbHVtbn1jb250YWluc1Bvc2l0aW9uKHQpe3JldHVybiBkZS5jb250YWluc1Bvc2l0aW9uKHRoaXMsdCl9c3RhdGljIGNvbnRhaW5zUG9zaXRpb24odCxuKXtyZXR1cm4hKG4ubGluZU51bWJlcjx0LnN0YXJ0TGluZU51bWJlcnx8bi5saW5lTnVtYmVyPnQuZW5kTGluZU51bWJlcnx8bi5saW5lTnVtYmVyPT09dC5zdGFydExpbmVOdW1iZXImJm4uY29sdW1uPHQuc3RhcnRDb2x1bW58fG4ubGluZU51bWJlcj09PXQuZW5kTGluZU51bWJlciYmbi5jb2x1bW4+dC5lbmRDb2x1bW4pfXN0YXRpYyBzdHJpY3RDb250YWluc1Bvc2l0aW9uKHQsbil7cmV0dXJuIShuLmxpbmVOdW1iZXI8dC5zdGFydExpbmVOdW1iZXJ8fG4ubGluZU51bWJlcj50LmVuZExpbmVOdW1iZXJ8fG4ubGluZU51bWJlcj09PXQuc3RhcnRMaW5lTnVtYmVyJiZuLmNvbHVtbjw9dC5zdGFydENvbHVtbnx8bi5saW5lTnVtYmVyPT09dC5lbmRMaW5lTnVtYmVyJiZuLmNvbHVtbj49dC5lbmRDb2x1bW4pfWNvbnRhaW5zUmFuZ2UodCl7cmV0dXJuIGRlLmNvbnRhaW5zUmFuZ2UodGhpcyx0KX1zdGF0aWMgY29udGFpbnNSYW5nZSh0LG4pe3JldHVybiEobi5zdGFydExpbmVOdW1iZXI8dC5zdGFydExpbmVOdW1iZXJ8fG4uZW5kTGluZU51bWJlcjx0LnN0YXJ0TGluZU51bWJlcnx8bi5zdGFydExpbmVOdW1iZXI+dC5lbmRMaW5lTnVtYmVyfHxuLmVuZExpbmVOdW1iZXI+dC5lbmRMaW5lTnVtYmVyfHxuLnN0YXJ0TGluZU51bWJlcj09PXQuc3RhcnRMaW5lTnVtYmVyJiZuLnN0YXJ0Q29sdW1uPHQuc3RhcnRDb2x1bW58fG4uZW5kTGluZU51bWJlcj09PXQuZW5kTGluZU51bWJlciYmbi5lbmRDb2x1bW4+dC5lbmRDb2x1bW4pfXN0cmljdENvbnRhaW5zUmFuZ2UodCl7cmV0dXJuIGRlLnN0cmljdENvbnRhaW5zUmFuZ2UodGhpcyx0KX1zdGF0aWMgc3RyaWN0Q29udGFpbnNSYW5nZSh0LG4pe3JldHVybiEobi5zdGFydExpbmVOdW1iZXI8dC5zdGFydExpbmVOdW1iZXJ8fG4uZW5kTGluZU51bWJlcjx0LnN0YXJ0TGluZU51bWJlcnx8bi5zdGFydExpbmVOdW1iZXI+dC5lbmRMaW5lTnVtYmVyfHxuLmVuZExpbmVOdW1iZXI+dC5lbmRMaW5lTnVtYmVyfHxuLnN0YXJ0TGluZU51bWJlcj09PXQuc3RhcnRMaW5lTnVtYmVyJiZuLnN0YXJ0Q29sdW1uPD10LnN0YXJ0Q29sdW1ufHxuLmVuZExpbmVOdW1iZXI9PT10LmVuZExpbmVOdW1iZXImJm4uZW5kQ29sdW1uPj10LmVuZENvbHVtbil9cGx1c1JhbmdlKHQpe3JldHVybiBkZS5wbHVzUmFuZ2UodGhpcyx0KX1zdGF0aWMgcGx1c1JhbmdlKHQsbil7bGV0IHIsaSxzLGE7cmV0dXJuIG4uc3RhcnRMaW5lTnVtYmVyPHQuc3RhcnRMaW5lTnVtYmVyPyhyPW4uc3RhcnRMaW5lTnVtYmVyLGk9bi5zdGFydENvbHVtbik6bi5zdGFydExpbmVOdW1iZXI9PT10LnN0YXJ0TGluZU51bWJlcj8ocj1uLnN0YXJ0TGluZU51bWJlcixpPU1hdGgubWluKG4uc3RhcnRDb2x1bW4sdC5zdGFydENvbHVtbikpOihyPXQuc3RhcnRMaW5lTnVtYmVyLGk9dC5zdGFydENvbHVtbiksbi5lbmRMaW5lTnVtYmVyPnQuZW5kTGluZU51bWJlcj8ocz1uLmVuZExpbmVOdW1iZXIsYT1uLmVuZENvbHVtbik6bi5lbmRMaW5lTnVtYmVyPT09dC5lbmRMaW5lTnVtYmVyPyhzPW4uZW5kTGluZU51bWJlcixhPU1hdGgubWF4KG4uZW5kQ29sdW1uLHQuZW5kQ29sdW1uKSk6KHM9dC5lbmRMaW5lTnVtYmVyLGE9dC5lbmRDb2x1bW4pLG5ldyBkZShyLGkscyxhKX1pbnRlcnNlY3RSYW5nZXModCl7cmV0dXJuIGRlLmludGVyc2VjdFJhbmdlcyh0aGlzLHQpfXN0YXRpYyBpbnRlcnNlY3RSYW5nZXModCxuKXtsZXQgcj10LnN0YXJ0TGluZU51bWJlcixpPXQuc3RhcnRDb2x1bW4scz10LmVuZExpbmVOdW1iZXIsYT10LmVuZENvbHVtbjtjb25zdCBsPW4uc3RhcnRMaW5lTnVtYmVyLG89bi5zdGFydENvbHVtbixjPW4uZW5kTGluZU51bWJlcixkPW4uZW5kQ29sdW1uO3JldHVybiByPGw/KHI9bCxpPW8pOnI9PT1sJiYoaT1NYXRoLm1heChpLG8pKSxzPmM/KHM9YyxhPWQpOnM9PT1jJiYoYT1NYXRoLm1pbihhLGQpKSxyPnN8fHI9PT1zJiZpPmE/bnVsbDpuZXcgZGUocixpLHMsYSl9ZXF1YWxzUmFuZ2UodCl7cmV0dXJuIGRlLmVxdWFsc1JhbmdlKHRoaXMsdCl9c3RhdGljIGVxdWFsc1JhbmdlKHQsbil7cmV0dXJuIXQmJiFuPyEwOiEhdCYmISFuJiZ0LnN0YXJ0TGluZU51bWJlcj09PW4uc3RhcnRMaW5lTnVtYmVyJiZ0LnN0YXJ0Q29sdW1uPT09bi5zdGFydENvbHVtbiYmdC5lbmRMaW5lTnVtYmVyPT09bi5lbmRMaW5lTnVtYmVyJiZ0LmVuZENvbHVtbj09PW4uZW5kQ29sdW1ufWdldEVuZFBvc2l0aW9uKCl7cmV0dXJuIGRlLmdldEVuZFBvc2l0aW9uKHRoaXMpfXN0YXRpYyBnZXRFbmRQb3NpdGlvbih0KXtyZXR1cm4gbmV3IGNlKHQuZW5kTGluZU51bWJlcix0LmVuZENvbHVtbil9Z2V0U3RhcnRQb3NpdGlvbigpe3JldHVybiBkZS5nZXRTdGFydFBvc2l0aW9uKHRoaXMpfXN0YXRpYyBnZXRTdGFydFBvc2l0aW9uKHQpe3JldHVybiBuZXcgY2UodC5zdGFydExpbmVOdW1iZXIsdC5zdGFydENvbHVtbil9dG9TdHJpbmcoKXtyZXR1cm4iWyIrdGhpcy5zdGFydExpbmVOdW1iZXIrIiwiK3RoaXMuc3RhcnRDb2x1bW4rIiAtPiAiK3RoaXMuZW5kTGluZU51bWJlcisiLCIrdGhpcy5lbmRDb2x1bW4rIl0ifXNldEVuZFBvc2l0aW9uKHQsbil7cmV0dXJuIG5ldyBkZSh0aGlzLnN0YXJ0TGluZU51bWJlcix0aGlzLnN0YXJ0Q29sdW1uLHQsbil9c2V0U3RhcnRQb3NpdGlvbih0LG4pe3JldHVybiBuZXcgZGUodCxuLHRoaXMuZW5kTGluZU51bWJlcix0aGlzLmVuZENvbHVtbil9Y29sbGFwc2VUb1N0YXJ0KCl7cmV0dXJuIGRlLmNvbGxhcHNlVG9TdGFydCh0aGlzKX1zdGF0aWMgY29sbGFwc2VUb1N0YXJ0KHQpe3JldHVybiBuZXcgZGUodC5zdGFydExpbmVOdW1iZXIsdC5zdGFydENvbHVtbix0LnN0YXJ0TGluZU51bWJlcix0LnN0YXJ0Q29sdW1uKX1jb2xsYXBzZVRvRW5kKCl7cmV0dXJuIGRlLmNvbGxhcHNlVG9FbmQodGhpcyl9c3RhdGljIGNvbGxhcHNlVG9FbmQodCl7cmV0dXJuIG5ldyBkZSh0LmVuZExpbmVOdW1iZXIsdC5lbmRDb2x1bW4sdC5lbmRMaW5lTnVtYmVyLHQuZW5kQ29sdW1uKX1kZWx0YSh0KXtyZXR1cm4gbmV3IGRlKHRoaXMuc3RhcnRMaW5lTnVtYmVyK3QsdGhpcy5zdGFydENvbHVtbix0aGlzLmVuZExpbmVOdW1iZXIrdCx0aGlzLmVuZENvbHVtbil9c3RhdGljIGZyb21Qb3NpdGlvbnModCxuPXQpe3JldHVybiBuZXcgZGUodC5saW5lTnVtYmVyLHQuY29sdW1uLG4ubGluZU51bWJlcixuLmNvbHVtbil9c3RhdGljIGxpZnQodCl7cmV0dXJuIHQ/bmV3IGRlKHQuc3RhcnRMaW5lTnVtYmVyLHQuc3RhcnRDb2x1bW4sdC5lbmRMaW5lTnVtYmVyLHQuZW5kQ29sdW1uKTpudWxsfXN0YXRpYyBpc0lSYW5nZSh0KXtyZXR1cm4gdCYmdHlwZW9mIHQuc3RhcnRMaW5lTnVtYmVyPT0ibnVtYmVyIiYmdHlwZW9mIHQuc3RhcnRDb2x1bW49PSJudW1iZXIiJiZ0eXBlb2YgdC5lbmRMaW5lTnVtYmVyPT0ibnVtYmVyIiYmdHlwZW9mIHQuZW5kQ29sdW1uPT0ibnVtYmVyIn1zdGF0aWMgYXJlSW50ZXJzZWN0aW5nT3JUb3VjaGluZyh0LG4pe3JldHVybiEodC5lbmRMaW5lTnVtYmVyPG4uc3RhcnRMaW5lTnVtYmVyfHx0LmVuZExpbmVOdW1iZXI9PT1uLnN0YXJ0TGluZU51bWJlciYmdC5lbmRDb2x1bW48bi5zdGFydENvbHVtbnx8bi5lbmRMaW5lTnVtYmVyPHQuc3RhcnRMaW5lTnVtYmVyfHxuLmVuZExpbmVOdW1iZXI9PT10LnN0YXJ0TGluZU51bWJlciYmbi5lbmRDb2x1bW48dC5zdGFydENvbHVtbil9c3RhdGljIGFyZUludGVyc2VjdGluZyh0LG4pe3JldHVybiEodC5lbmRMaW5lTnVtYmVyPG4uc3RhcnRMaW5lTnVtYmVyfHx0LmVuZExpbmVOdW1iZXI9PT1uLnN0YXJ0TGluZU51bWJlciYmdC5lbmRDb2x1bW48PW4uc3RhcnRDb2x1bW58fG4uZW5kTGluZU51bWJlcjx0LnN0YXJ0TGluZU51bWJlcnx8bi5lbmRMaW5lTnVtYmVyPT09dC5zdGFydExpbmVOdW1iZXImJm4uZW5kQ29sdW1uPD10LnN0YXJ0Q29sdW1uKX1zdGF0aWMgY29tcGFyZVJhbmdlc1VzaW5nU3RhcnRzKHQsbil7aWYodCYmbil7Y29uc3Qgcz10LnN0YXJ0TGluZU51bWJlcnwwLGE9bi5zdGFydExpbmVOdW1iZXJ8MDtpZihzPT09YSl7Y29uc3QgbD10LnN0YXJ0Q29sdW1ufDAsbz1uLnN0YXJ0Q29sdW1ufDA7aWYobD09PW8pe2NvbnN0IGM9dC5lbmRMaW5lTnVtYmVyfDAsZD1uLmVuZExpbmVOdW1iZXJ8MDtpZihjPT09ZCl7Y29uc3QgdT10LmVuZENvbHVtbnwwLGY9bi5lbmRDb2x1bW58MDtyZXR1cm4gdS1mfXJldHVybiBjLWR9cmV0dXJuIGwtb31yZXR1cm4gcy1hfXJldHVybih0PzE6MCktKG4/MTowKX1zdGF0aWMgY29tcGFyZVJhbmdlc1VzaW5nRW5kcyh0LG4pe3JldHVybiB0LmVuZExpbmVOdW1iZXI9PT1uLmVuZExpbmVOdW1iZXI/dC5lbmRDb2x1bW49PT1uLmVuZENvbHVtbj90LnN0YXJ0TGluZU51bWJlcj09PW4uc3RhcnRMaW5lTnVtYmVyP3Quc3RhcnRDb2x1bW4tbi5zdGFydENvbHVtbjp0LnN0YXJ0TGluZU51bWJlci1uLnN0YXJ0TGluZU51bWJlcjp0LmVuZENvbHVtbi1uLmVuZENvbHVtbjp0LmVuZExpbmVOdW1iZXItbi5lbmRMaW5lTnVtYmVyfXN0YXRpYyBzcGFuc011bHRpcGxlTGluZXModCl7cmV0dXJuIHQuZW5kTGluZU51bWJlcj50LnN0YXJ0TGluZU51bWJlcn10b0pTT04oKXtyZXR1cm4gdGhpc319O2Z1bmN0aW9uIGNkKGUsdCxuPShyLGkpPT5yPT09aSl7aWYoZT09PXQpcmV0dXJuITA7aWYoIWV8fCF0fHxlLmxlbmd0aCE9PXQubGVuZ3RoKXJldHVybiExO2ZvcihsZXQgcj0wLGk9ZS5sZW5ndGg7cjxpO3IrKylpZighbihlW3JdLHRbcl0pKXJldHVybiExO3JldHVybiEwfWZ1bmN0aW9uKmhkKGUsdCl7bGV0IG4scjtmb3IoY29uc3QgaSBvZiBlKXIhPT12b2lkIDAmJnQocixpKT9uLnB1c2goaSk6KG4mJih5aWVsZCBuKSxuPVtpXSkscj1pO24mJih5aWVsZCBuKX1mdW5jdGlvbiBkZChlLHQpe2ZvcihsZXQgbj0wO248PWUubGVuZ3RoO24rKyl0KG49PT0wP3ZvaWQgMDplW24tMV0sbj09PWUubGVuZ3RoP3ZvaWQgMDplW25dKX1mdW5jdGlvbiB1ZChlLHQpe2ZvcihsZXQgbj0wO248ZS5sZW5ndGg7bisrKXQobj09PTA/dm9pZCAwOmVbbi0xXSxlW25dLG4rMT09PWUubGVuZ3RoP3ZvaWQgMDplW24rMV0pfWZ1bmN0aW9uIHBkKGUsdCl7Zm9yKGNvbnN0IG4gb2YgdCllLnB1c2gobil9dmFyIFFyOyhmdW5jdGlvbihlKXtmdW5jdGlvbiB0KHMpe3JldHVybiBzPDB9ZS5pc0xlc3NUaGFuPXQ7ZnVuY3Rpb24gbihzKXtyZXR1cm4gczw9MH1lLmlzTGVzc1RoYW5PckVxdWFsPW47ZnVuY3Rpb24gcihzKXtyZXR1cm4gcz4wfWUuaXNHcmVhdGVyVGhhbj1yO2Z1bmN0aW9uIGkocyl7cmV0dXJuIHM9PT0wfWUuaXNOZWl0aGVyTGVzc09yR3JlYXRlclRoYW49aSxlLmdyZWF0ZXJUaGFuPTEsZS5sZXNzVGhhbj0tMSxlLm5laXRoZXJMZXNzT3JHcmVhdGVyVGhhbj0wfSkoUXJ8fChRcj17fSkpO2Z1bmN0aW9uICRuKGUsdCl7cmV0dXJuKG4scik9PnQoZShuKSxlKHIpKX1jb25zdCBCbj0oZSx0KT0+ZS10O2Z1bmN0aW9uIG1kKGUpe3JldHVybih0LG4pPT4tZSh0LG4pfWNvbnN0IGVuPWNsYXNzIGVue2NvbnN0cnVjdG9yKHQpe3RoaXMuaXRlcmF0ZT10fXRvQXJyYXkoKXtjb25zdCB0PVtdO3JldHVybiB0aGlzLml0ZXJhdGUobj0+KHQucHVzaChuKSwhMCkpLHR9ZmlsdGVyKHQpe3JldHVybiBuZXcgZW4obj0+dGhpcy5pdGVyYXRlKHI9PnQocik/bihyKTohMCkpfW1hcCh0KXtyZXR1cm4gbmV3IGVuKG49PnRoaXMuaXRlcmF0ZShyPT5uKHQocikpKSl9ZmluZExhc3QodCl7bGV0IG47cmV0dXJuIHRoaXMuaXRlcmF0ZShyPT4odChyKSYmKG49ciksITApKSxufWZpbmRMYXN0TWF4QnkodCl7bGV0IG4scj0hMDtyZXR1cm4gdGhpcy5pdGVyYXRlKGk9Pigocnx8UXIuaXNHcmVhdGVyVGhhbih0KGksbikpKSYmKHI9ITEsbj1pKSwhMCkpLG59fTtlbi5lbXB0eT1uZXcgZW4odD0+e30pO2xldCBuYT1lbjtmdW5jdGlvbiByYShlKXtyZXR1cm4gZTwwPzA6ZT4yNTU/MjU1OmV8MH1mdW5jdGlvbiBUdChlKXtyZXR1cm4gZTwwPzA6ZT40Mjk0OTY3Mjk1PzQyOTQ5NjcyOTU6ZXwwfWNsYXNzIGZke2NvbnN0cnVjdG9yKHQpe3RoaXMudmFsdWVzPXQsdGhpcy5wcmVmaXhTdW09bmV3IFVpbnQzMkFycmF5KHQubGVuZ3RoKSx0aGlzLnByZWZpeFN1bVZhbGlkSW5kZXg9bmV3IEludDMyQXJyYXkoMSksdGhpcy5wcmVmaXhTdW1WYWxpZEluZGV4WzBdPS0xfWluc2VydFZhbHVlcyh0LG4pe3Q9VHQodCk7Y29uc3Qgcj10aGlzLnZhbHVlcyxpPXRoaXMucHJlZml4U3VtLHM9bi5sZW5ndGg7cmV0dXJuIHM9PT0wPyExOih0aGlzLnZhbHVlcz1uZXcgVWludDMyQXJyYXkoci5sZW5ndGgrcyksdGhpcy52YWx1ZXMuc2V0KHIuc3ViYXJyYXkoMCx0KSwwKSx0aGlzLnZhbHVlcy5zZXQoci5zdWJhcnJheSh0KSx0K3MpLHRoaXMudmFsdWVzLnNldChuLHQpLHQtMTx0aGlzLnByZWZpeFN1bVZhbGlkSW5kZXhbMF0mJih0aGlzLnByZWZpeFN1bVZhbGlkSW5kZXhbMF09dC0xKSx0aGlzLnByZWZpeFN1bT1uZXcgVWludDMyQXJyYXkodGhpcy52YWx1ZXMubGVuZ3RoKSx0aGlzLnByZWZpeFN1bVZhbGlkSW5kZXhbMF0+PTAmJnRoaXMucHJlZml4U3VtLnNldChpLnN1YmFycmF5KDAsdGhpcy5wcmVmaXhTdW1WYWxpZEluZGV4WzBdKzEpKSwhMCl9c2V0VmFsdWUodCxuKXtyZXR1cm4gdD1UdCh0KSxuPVR0KG4pLHRoaXMudmFsdWVzW3RdPT09bj8hMToodGhpcy52YWx1ZXNbdF09bix0LTE8dGhpcy5wcmVmaXhTdW1WYWxpZEluZGV4WzBdJiYodGhpcy5wcmVmaXhTdW1WYWxpZEluZGV4WzBdPXQtMSksITApfXJlbW92ZVZhbHVlcyh0LG4pe3Q9VHQodCksbj1UdChuKTtjb25zdCByPXRoaXMudmFsdWVzLGk9dGhpcy5wcmVmaXhTdW07aWYodD49ci5sZW5ndGgpcmV0dXJuITE7Y29uc3Qgcz1yLmxlbmd0aC10O3JldHVybiBuPj1zJiYobj1zKSxuPT09MD8hMToodGhpcy52YWx1ZXM9bmV3IFVpbnQzMkFycmF5KHIubGVuZ3RoLW4pLHRoaXMudmFsdWVzLnNldChyLnN1YmFycmF5KDAsdCksMCksdGhpcy52YWx1ZXMuc2V0KHIuc3ViYXJyYXkodCtuKSx0KSx0aGlzLnByZWZpeFN1bT1uZXcgVWludDMyQXJyYXkodGhpcy52YWx1ZXMubGVuZ3RoKSx0LTE8dGhpcy5wcmVmaXhTdW1WYWxpZEluZGV4WzBdJiYodGhpcy5wcmVmaXhTdW1WYWxpZEluZGV4WzBdPXQtMSksdGhpcy5wcmVmaXhTdW1WYWxpZEluZGV4WzBdPj0wJiZ0aGlzLnByZWZpeFN1bS5zZXQoaS5zdWJhcnJheSgwLHRoaXMucHJlZml4U3VtVmFsaWRJbmRleFswXSsxKSksITApfWdldFRvdGFsU3VtKCl7cmV0dXJuIHRoaXMudmFsdWVzLmxlbmd0aD09PTA/MDp0aGlzLl9nZXRQcmVmaXhTdW0odGhpcy52YWx1ZXMubGVuZ3RoLTEpfWdldFByZWZpeFN1bSh0KXtyZXR1cm4gdDwwPzA6KHQ9VHQodCksdGhpcy5fZ2V0UHJlZml4U3VtKHQpKX1fZ2V0UHJlZml4U3VtKHQpe2lmKHQ8PXRoaXMucHJlZml4U3VtVmFsaWRJbmRleFswXSlyZXR1cm4gdGhpcy5wcmVmaXhTdW1bdF07bGV0IG49dGhpcy5wcmVmaXhTdW1WYWxpZEluZGV4WzBdKzE7bj09PTAmJih0aGlzLnByZWZpeFN1bVswXT10aGlzLnZhbHVlc1swXSxuKyspLHQ+PXRoaXMudmFsdWVzLmxlbmd0aCYmKHQ9dGhpcy52YWx1ZXMubGVuZ3RoLTEpO2ZvcihsZXQgcj1uO3I8PXQ7cisrKXRoaXMucHJlZml4U3VtW3JdPXRoaXMucHJlZml4U3VtW3ItMV0rdGhpcy52YWx1ZXNbcl07cmV0dXJuIHRoaXMucHJlZml4U3VtVmFsaWRJbmRleFswXT1NYXRoLm1heCh0aGlzLnByZWZpeFN1bVZhbGlkSW5kZXhbMF0sdCksdGhpcy5wcmVmaXhTdW1bdF19Z2V0SW5kZXhPZih0KXt0PU1hdGguZmxvb3IodCksdGhpcy5nZXRUb3RhbFN1bSgpO2xldCBuPTAscj10aGlzLnZhbHVlcy5sZW5ndGgtMSxpPTAscz0wLGE9MDtmb3IoO248PXI7KWlmKGk9bisoci1uKS8yfDAscz10aGlzLnByZWZpeFN1bVtpXSxhPXMtdGhpcy52YWx1ZXNbaV0sdDxhKXI9aS0xO2Vsc2UgaWYodD49cyluPWkrMTtlbHNlIGJyZWFrO3JldHVybiBuZXcgZ2QoaSx0LWEpfX1jbGFzcyBnZHtjb25zdHJ1Y3Rvcih0LG4pe3RoaXMuaW5kZXg9dCx0aGlzLnJlbWFpbmRlcj1uLHRoaXMuX3ByZWZpeFN1bUluZGV4T2ZSZXN1bHRCcmFuZD12b2lkIDAsdGhpcy5pbmRleD10LHRoaXMucmVtYWluZGVyPW59fWNsYXNzIGJke2NvbnN0cnVjdG9yKHQsbixyLGkpe3RoaXMuX3VyaT10LHRoaXMuX2xpbmVzPW4sdGhpcy5fZW9sPXIsdGhpcy5fdmVyc2lvbklkPWksdGhpcy5fbGluZVN0YXJ0cz1udWxsLHRoaXMuX2NhY2hlZFRleHRWYWx1ZT1udWxsfWRpc3Bvc2UoKXt0aGlzLl9saW5lcy5sZW5ndGg9MH1nZXQgdmVyc2lvbigpe3JldHVybiB0aGlzLl92ZXJzaW9uSWR9Z2V0VGV4dCgpe3JldHVybiB0aGlzLl9jYWNoZWRUZXh0VmFsdWU9PT1udWxsJiYodGhpcy5fY2FjaGVkVGV4dFZhbHVlPXRoaXMuX2xpbmVzLmpvaW4odGhpcy5fZW9sKSksdGhpcy5fY2FjaGVkVGV4dFZhbHVlfW9uRXZlbnRzKHQpe3QuZW9sJiZ0LmVvbCE9PXRoaXMuX2VvbCYmKHRoaXMuX2VvbD10LmVvbCx0aGlzLl9saW5lU3RhcnRzPW51bGwpO2NvbnN0IG49dC5jaGFuZ2VzO2Zvcihjb25zdCByIG9mIG4pdGhpcy5fYWNjZXB0RGVsZXRlUmFuZ2Uoci5yYW5nZSksdGhpcy5fYWNjZXB0SW5zZXJ0VGV4dChuZXcgY2Uoci5yYW5nZS5zdGFydExpbmVOdW1iZXIsci5yYW5nZS5zdGFydENvbHVtbiksci50ZXh0KTt0aGlzLl92ZXJzaW9uSWQ9dC52ZXJzaW9uSWQsdGhpcy5fY2FjaGVkVGV4dFZhbHVlPW51bGx9X2Vuc3VyZUxpbmVTdGFydHMoKXtpZighdGhpcy5fbGluZVN0YXJ0cyl7Y29uc3QgdD10aGlzLl9lb2wubGVuZ3RoLG49dGhpcy5fbGluZXMubGVuZ3RoLHI9bmV3IFVpbnQzMkFycmF5KG4pO2ZvcihsZXQgaT0wO2k8bjtpKyspcltpXT10aGlzLl9saW5lc1tpXS5sZW5ndGgrdDt0aGlzLl9saW5lU3RhcnRzPW5ldyBmZChyKX19X3NldExpbmVUZXh0KHQsbil7dGhpcy5fbGluZXNbdF09bix0aGlzLl9saW5lU3RhcnRzJiZ0aGlzLl9saW5lU3RhcnRzLnNldFZhbHVlKHQsdGhpcy5fbGluZXNbdF0ubGVuZ3RoK3RoaXMuX2VvbC5sZW5ndGgpfV9hY2NlcHREZWxldGVSYW5nZSh0KXtpZih0LnN0YXJ0TGluZU51bWJlcj09PXQuZW5kTGluZU51bWJlcil7aWYodC5zdGFydENvbHVtbj09PXQuZW5kQ29sdW1uKXJldHVybjt0aGlzLl9zZXRMaW5lVGV4dCh0LnN0YXJ0TGluZU51bWJlci0xLHRoaXMuX2xpbmVzW3Quc3RhcnRMaW5lTnVtYmVyLTFdLnN1YnN0cmluZygwLHQuc3RhcnRDb2x1bW4tMSkrdGhpcy5fbGluZXNbdC5zdGFydExpbmVOdW1iZXItMV0uc3Vic3RyaW5nKHQuZW5kQ29sdW1uLTEpKTtyZXR1cm59dGhpcy5fc2V0TGluZVRleHQodC5zdGFydExpbmVOdW1iZXItMSx0aGlzLl9saW5lc1t0LnN0YXJ0TGluZU51bWJlci0xXS5zdWJzdHJpbmcoMCx0LnN0YXJ0Q29sdW1uLTEpK3RoaXMuX2xpbmVzW3QuZW5kTGluZU51bWJlci0xXS5zdWJzdHJpbmcodC5lbmRDb2x1bW4tMSkpLHRoaXMuX2xpbmVzLnNwbGljZSh0LnN0YXJ0TGluZU51bWJlcix0LmVuZExpbmVOdW1iZXItdC5zdGFydExpbmVOdW1iZXIpLHRoaXMuX2xpbmVTdGFydHMmJnRoaXMuX2xpbmVTdGFydHMucmVtb3ZlVmFsdWVzKHQuc3RhcnRMaW5lTnVtYmVyLHQuZW5kTGluZU51bWJlci10LnN0YXJ0TGluZU51bWJlcil9X2FjY2VwdEluc2VydFRleHQodCxuKXtpZihuLmxlbmd0aD09PTApcmV0dXJuO2NvbnN0IHI9Umgobik7aWYoci5sZW5ndGg9PT0xKXt0aGlzLl9zZXRMaW5lVGV4dCh0LmxpbmVOdW1iZXItMSx0aGlzLl9saW5lc1t0LmxpbmVOdW1iZXItMV0uc3Vic3RyaW5nKDAsdC5jb2x1bW4tMSkrclswXSt0aGlzLl9saW5lc1t0LmxpbmVOdW1iZXItMV0uc3Vic3RyaW5nKHQuY29sdW1uLTEpKTtyZXR1cm59cltyLmxlbmd0aC0xXSs9dGhpcy5fbGluZXNbdC5saW5lTnVtYmVyLTFdLnN1YnN0cmluZyh0LmNvbHVtbi0xKSx0aGlzLl9zZXRMaW5lVGV4dCh0LmxpbmVOdW1iZXItMSx0aGlzLl9saW5lc1t0LmxpbmVOdW1iZXItMV0uc3Vic3RyaW5nKDAsdC5jb2x1bW4tMSkrclswXSk7Y29uc3QgaT1uZXcgVWludDMyQXJyYXkoci5sZW5ndGgtMSk7Zm9yKGxldCBzPTE7czxyLmxlbmd0aDtzKyspdGhpcy5fbGluZXMuc3BsaWNlKHQubGluZU51bWJlcitzLTEsMCxyW3NdKSxpW3MtMV09cltzXS5sZW5ndGgrdGhpcy5fZW9sLmxlbmd0aDt0aGlzLl9saW5lU3RhcnRzJiZ0aGlzLl9saW5lU3RhcnRzLmluc2VydFZhbHVlcyh0LmxpbmVOdW1iZXIsaSl9fWNvbnN0IHZkPSJgfiFAIyQlXiYqKCktPStbe119XFx8OzonXCIsLjw+Lz8iO2Z1bmN0aW9uIHdkKGU9IiIpe2xldCB0PSIoLT9cXGQqXFwuXFxkXFx3Kil8KFteIjtmb3IoY29uc3QgbiBvZiB2ZCllLmluZGV4T2Yobik+PTB8fCh0Kz0iXFwiK24pO3JldHVybiB0Kz0iXFxzXSspIixuZXcgUmVnRXhwKHQsImciKX1jb25zdCBpYT13ZCgpO2Z1bmN0aW9uIHNhKGUpe2xldCB0PWlhO2lmKGUmJmUgaW5zdGFuY2VvZiBSZWdFeHApaWYoZS5nbG9iYWwpdD1lO2Vsc2V7bGV0IG49ImciO2UuaWdub3JlQ2FzZSYmKG4rPSJpIiksZS5tdWx0aWxpbmUmJihuKz0ibSIpLGUudW5pY29kZSYmKG4rPSJ1IiksdD1uZXcgUmVnRXhwKGUuc291cmNlLG4pfXJldHVybiB0Lmxhc3RJbmRleD0wLHR9Y29uc3QgYWE9bmV3IG9oO2FhLnVuc2hpZnQoe21heExlbjoxZTMsd2luZG93U2l6ZToxNSx0aW1lQnVkZ2V0OjE1MH0pO2Z1bmN0aW9uIEtyKGUsdCxuLHIsaSl7aWYodD1zYSh0KSxpfHwoaT1Mbi5maXJzdChhYSkpLG4ubGVuZ3RoPmkubWF4TGVuKXtsZXQgYz1lLWkubWF4TGVuLzI7cmV0dXJuIGM8MD9jPTA6cis9YyxuPW4uc3Vic3RyaW5nKGMsZStpLm1heExlbi8yKSxLcihlLHQsbixyLGkpfWNvbnN0IHM9RGF0ZS5ub3coKSxhPWUtMS1yO2xldCBsPS0xLG89bnVsbDtmb3IobGV0IGM9MTshKERhdGUubm93KCktcz49aS50aW1lQnVkZ2V0KTtjKyspe2NvbnN0IGQ9YS1pLndpbmRvd1NpemUqYzt0Lmxhc3RJbmRleD1NYXRoLm1heCgwLGQpO2NvbnN0IHU9eWQodCxuLGEsbCk7aWYoIXUmJm98fChvPXUsZDw9MCkpYnJlYWs7bD1kfWlmKG8pe2NvbnN0IGM9e3dvcmQ6b1swXSxzdGFydENvbHVtbjpyKzErby5pbmRleCxlbmRDb2x1bW46cisxK28uaW5kZXgrb1swXS5sZW5ndGh9O3JldHVybiB0Lmxhc3RJbmRleD0wLGN9cmV0dXJuIG51bGx9ZnVuY3Rpb24geWQoZSx0LG4scil7bGV0IGk7Zm9yKDtpPWUuZXhlYyh0KTspe2NvbnN0IHM9aS5pbmRleHx8MDtpZihzPD1uJiZlLmxhc3RJbmRleD49bilyZXR1cm4gaTtpZihyPjAmJnM+cilyZXR1cm4gbnVsbH1yZXR1cm4gbnVsbH1jbGFzcyBacntjb25zdHJ1Y3Rvcih0KXtjb25zdCBuPXJhKHQpO3RoaXMuX2RlZmF1bHRWYWx1ZT1uLHRoaXMuX2FzY2lpTWFwPVpyLl9jcmVhdGVBc2NpaU1hcChuKSx0aGlzLl9tYXA9bmV3IE1hcH1zdGF0aWMgX2NyZWF0ZUFzY2lpTWFwKHQpe2NvbnN0IG49bmV3IFVpbnQ4QXJyYXkoMjU2KTtyZXR1cm4gbi5maWxsKHQpLG59c2V0KHQsbil7Y29uc3Qgcj1yYShuKTt0Pj0wJiZ0PDI1Nj90aGlzLl9hc2NpaU1hcFt0XT1yOnRoaXMuX21hcC5zZXQodCxyKX1nZXQodCl7cmV0dXJuIHQ+PTAmJnQ8MjU2P3RoaXMuX2FzY2lpTWFwW3RdOnRoaXMuX21hcC5nZXQodCl8fHRoaXMuX2RlZmF1bHRWYWx1ZX1jbGVhcigpe3RoaXMuX2FzY2lpTWFwLmZpbGwodGhpcy5fZGVmYXVsdFZhbHVlKSx0aGlzLl9tYXAuY2xlYXIoKX19Y2xhc3MgeGR7Y29uc3RydWN0b3IodCxuLHIpe2NvbnN0IGk9bmV3IFVpbnQ4QXJyYXkodCpuKTtmb3IobGV0IHM9MCxhPXQqbjtzPGE7cysrKWlbc109cjt0aGlzLl9kYXRhPWksdGhpcy5yb3dzPXQsdGhpcy5jb2xzPW59Z2V0KHQsbil7cmV0dXJuIHRoaXMuX2RhdGFbdCp0aGlzLmNvbHMrbl19c2V0KHQsbixyKXt0aGlzLl9kYXRhW3QqdGhpcy5jb2xzK25dPXJ9fWNsYXNzIFNke2NvbnN0cnVjdG9yKHQpe2xldCBuPTAscj0wO2ZvcihsZXQgcz0wLGE9dC5sZW5ndGg7czxhO3MrKyl7Y29uc3RbbCxvLGNdPXRbc107bz5uJiYobj1vKSxsPnImJihyPWwpLGM+ciYmKHI9Yyl9bisrLHIrKztjb25zdCBpPW5ldyB4ZChyLG4sMCk7Zm9yKGxldCBzPTAsYT10Lmxlbmd0aDtzPGE7cysrKXtjb25zdFtsLG8sY109dFtzXTtpLnNldChsLG8sYyl9dGhpcy5fc3RhdGVzPWksdGhpcy5fbWF4Q2hhckNvZGU9bn1uZXh0U3RhdGUodCxuKXtyZXR1cm4gbjwwfHxuPj10aGlzLl9tYXhDaGFyQ29kZT8wOnRoaXMuX3N0YXRlcy5nZXQodCxuKX19bGV0IGVpPW51bGw7ZnVuY3Rpb24gQ2QoKXtyZXR1cm4gZWk9PT1udWxsJiYoZWk9bmV3IFNkKFtbMSwxMDQsMl0sWzEsNzIsMl0sWzEsMTAyLDZdLFsxLDcwLDZdLFsyLDExNiwzXSxbMiw4NCwzXSxbMywxMTYsNF0sWzMsODQsNF0sWzQsMTEyLDVdLFs0LDgwLDVdLFs1LDExNSw5XSxbNSw4Myw5XSxbNSw1OCwxMF0sWzYsMTA1LDddLFs2LDczLDddLFs3LDEwOCw4XSxbNyw3Niw4XSxbOCwxMDEsOV0sWzgsNjksOV0sWzksNTgsMTBdLFsxMCw0NywxMV0sWzExLDQ3LDEyXV0pKSxlaX1sZXQgaG49bnVsbDtmdW5jdGlvbiBfZCgpe2lmKGhuPT09bnVsbCl7aG49bmV3IFpyKDApO2NvbnN0IGU9YCAJPD4nIuOAgeOAgu+9oe+9pO+8jO+8ju+8mu+8m+KAmOOAiOOAjOOAjuOAlO+8iO+8u++9m++9ou+9o++9ne+8ve+8ieOAleOAj+OAjeOAieKAme+9gO+9nuKApmA7Zm9yKGxldCBuPTA7bjxlLmxlbmd0aDtuKyspaG4uc2V0KGUuY2hhckNvZGVBdChuKSwxKTtjb25zdCB0PSIuLDs6Ijtmb3IobGV0IG49MDtuPHQubGVuZ3RoO24rKylobi5zZXQodC5jaGFyQ29kZUF0KG4pLDIpfXJldHVybiBobn1jbGFzcyBxbntzdGF0aWMgX2NyZWF0ZUxpbmsodCxuLHIsaSxzKXtsZXQgYT1zLTE7ZG97Y29uc3QgbD1uLmNoYXJDb2RlQXQoYSk7aWYodC5nZXQobCkhPT0yKWJyZWFrO2EtLX13aGlsZShhPmkpO2lmKGk+MCl7Y29uc3QgbD1uLmNoYXJDb2RlQXQoaS0xKSxvPW4uY2hhckNvZGVBdChhKTsobD09PTQwJiZvPT09NDF8fGw9PT05MSYmbz09PTkzfHxsPT09MTIzJiZvPT09MTI1KSYmYS0tfXJldHVybntyYW5nZTp7c3RhcnRMaW5lTnVtYmVyOnIsc3RhcnRDb2x1bW46aSsxLGVuZExpbmVOdW1iZXI6cixlbmRDb2x1bW46YSsyfSx1cmw6bi5zdWJzdHJpbmcoaSxhKzEpfX1zdGF0aWMgY29tcHV0ZUxpbmtzKHQsbj1DZCgpKXtjb25zdCByPV9kKCksaT1bXTtmb3IobGV0IHM9MSxhPXQuZ2V0TGluZUNvdW50KCk7czw9YTtzKyspe2NvbnN0IGw9dC5nZXRMaW5lQ29udGVudChzKSxvPWwubGVuZ3RoO2xldCBjPTAsZD0wLHU9MCxmPTEsbT0hMSx2PSExLHk9ITEsXz0hMTtmb3IoO2M8bzspe2xldCBrPSExO2NvbnN0IEQ9bC5jaGFyQ29kZUF0KGMpO2lmKGY9PT0xMyl7bGV0IE47c3dpdGNoKEQpe2Nhc2UgNDA6bT0hMCxOPTA7YnJlYWs7Y2FzZSA0MTpOPW0/MDoxO2JyZWFrO2Nhc2UgOTE6eT0hMCx2PSEwLE49MDticmVhaztjYXNlIDkzOnk9ITEsTj12PzA6MTticmVhaztjYXNlIDEyMzpfPSEwLE49MDticmVhaztjYXNlIDEyNTpOPV8/MDoxO2JyZWFrO2Nhc2UgMzk6Y2FzZSAzNDpjYXNlIDk2OnU9PT1EP049MTp1PT09Mzl8fHU9PT0zNHx8dT09PTk2P049MDpOPTE7YnJlYWs7Y2FzZSA0MjpOPXU9PT00Mj8xOjA7YnJlYWs7Y2FzZSAxMjQ6Tj11PT09MTI0PzE6MDticmVhaztjYXNlIDMyOk49eT8wOjE7YnJlYWs7ZGVmYXVsdDpOPXIuZ2V0KEQpfU49PT0xJiYoaS5wdXNoKHFuLl9jcmVhdGVMaW5rKHIsbCxzLGQsYykpLGs9ITApfWVsc2UgaWYoZj09PTEyKXtsZXQgTjtEPT09OTE/KHY9ITAsTj0wKTpOPXIuZ2V0KEQpLE49PT0xP2s9ITA6Zj0xM31lbHNlIGY9bi5uZXh0U3RhdGUoZixEKSxmPT09MCYmKGs9ITApO2smJihmPTEsbT0hMSx2PSExLF89ITEsZD1jKzEsdT1EKSxjKyt9Zj09PTEzJiZpLnB1c2gocW4uX2NyZWF0ZUxpbmsocixsLHMsZCxvKSl9cmV0dXJuIGl9fWZ1bmN0aW9uIGtkKGUpe3JldHVybiFlfHx0eXBlb2YgZS5nZXRMaW5lQ291bnQhPSJmdW5jdGlvbiJ8fHR5cGVvZiBlLmdldExpbmVDb250ZW50IT0iZnVuY3Rpb24iP1tdOnFuLmNvbXB1dGVMaW5rcyhlKX1jb25zdCBScj1jbGFzcyBScntjb25zdHJ1Y3Rvcigpe3RoaXMuX2RlZmF1bHRWYWx1ZVNldD1bWyJ0cnVlIiwiZmFsc2UiXSxbIlRydWUiLCJGYWxzZSJdLFsiUHJpdmF0ZSIsIlB1YmxpYyIsIkZyaWVuZCIsIlJlYWRPbmx5IiwiUGFydGlhbCIsIlByb3RlY3RlZCIsIldyaXRlT25seSJdLFsicHVibGljIiwicHJvdGVjdGVkIiwicHJpdmF0ZSJdXX1uYXZpZ2F0ZVZhbHVlU2V0KHQsbixyLGkscyl7aWYodCYmbil7Y29uc3QgYT10aGlzLmRvTmF2aWdhdGVWYWx1ZVNldChuLHMpO2lmKGEpcmV0dXJue3JhbmdlOnQsdmFsdWU6YX19aWYociYmaSl7Y29uc3QgYT10aGlzLmRvTmF2aWdhdGVWYWx1ZVNldChpLHMpO2lmKGEpcmV0dXJue3JhbmdlOnIsdmFsdWU6YX19cmV0dXJuIG51bGx9ZG9OYXZpZ2F0ZVZhbHVlU2V0KHQsbil7Y29uc3Qgcj10aGlzLm51bWJlclJlcGxhY2UodCxuKTtyZXR1cm4gciE9PW51bGw/cjp0aGlzLnRleHRSZXBsYWNlKHQsbil9bnVtYmVyUmVwbGFjZSh0LG4pe2NvbnN0IHI9TWF0aC5wb3coMTAsdC5sZW5ndGgtKHQubGFzdEluZGV4T2YoIi4iKSsxKSk7bGV0IGk9TnVtYmVyKHQpO2NvbnN0IHM9cGFyc2VGbG9hdCh0KTtyZXR1cm4haXNOYU4oaSkmJiFpc05hTihzKSYmaT09PXM/aT09PTAmJiFuP251bGw6KGk9TWF0aC5mbG9vcihpKnIpLGkrPW4/cjotcixTdHJpbmcoaS9yKSk6bnVsbH10ZXh0UmVwbGFjZSh0LG4pe3JldHVybiB0aGlzLnZhbHVlU2V0c1JlcGxhY2UodGhpcy5fZGVmYXVsdFZhbHVlU2V0LHQsbil9dmFsdWVTZXRzUmVwbGFjZSh0LG4scil7bGV0IGk9bnVsbDtmb3IobGV0IHM9MCxhPXQubGVuZ3RoO2k9PT1udWxsJiZzPGE7cysrKWk9dGhpcy52YWx1ZVNldFJlcGxhY2UodFtzXSxuLHIpO3JldHVybiBpfXZhbHVlU2V0UmVwbGFjZSh0LG4scil7bGV0IGk9dC5pbmRleE9mKG4pO3JldHVybiBpPj0wPyhpKz1yPzE6LTEsaTwwP2k9dC5sZW5ndGgtMTppJT10Lmxlbmd0aCx0W2ldKTpudWxsfX07UnIuSU5TVEFOQ0U9bmV3IFJyO2xldCB0aT1Scjtjb25zdCBvYT1PYmplY3QuZnJlZXplKGZ1bmN0aW9uKGUsdCl7Y29uc3Qgbj1zZXRUaW1lb3V0KGUuYmluZCh0KSwwKTtyZXR1cm57ZGlzcG9zZSgpe2NsZWFyVGltZW91dChuKX19fSk7dmFyIGpuOyhmdW5jdGlvbihlKXtmdW5jdGlvbiB0KG4pe3JldHVybiBuPT09ZS5Ob25lfHxuPT09ZS5DYW5jZWxsZWR8fG4gaW5zdGFuY2VvZiBIbj8hMDohbnx8dHlwZW9mIG4hPSJvYmplY3QiPyExOnR5cGVvZiBuLmlzQ2FuY2VsbGF0aW9uUmVxdWVzdGVkPT0iYm9vbGVhbiImJnR5cGVvZiBuLm9uQ2FuY2VsbGF0aW9uUmVxdWVzdGVkPT0iZnVuY3Rpb24ifWUuaXNDYW5jZWxsYXRpb25Ub2tlbj10LGUuTm9uZT1PYmplY3QuZnJlZXplKHtpc0NhbmNlbGxhdGlvblJlcXVlc3RlZDohMSxvbkNhbmNlbGxhdGlvblJlcXVlc3RlZDpMci5Ob25lfSksZS5DYW5jZWxsZWQ9T2JqZWN0LmZyZWV6ZSh7aXNDYW5jZWxsYXRpb25SZXF1ZXN0ZWQ6ITAsb25DYW5jZWxsYXRpb25SZXF1ZXN0ZWQ6b2F9KX0pKGpufHwoam49e30pKTtjbGFzcyBIbntjb25zdHJ1Y3Rvcigpe3RoaXMuX2lzQ2FuY2VsbGVkPSExLHRoaXMuX2VtaXR0ZXI9bnVsbH1jYW5jZWwoKXt0aGlzLl9pc0NhbmNlbGxlZHx8KHRoaXMuX2lzQ2FuY2VsbGVkPSEwLHRoaXMuX2VtaXR0ZXImJih0aGlzLl9lbWl0dGVyLmZpcmUodm9pZCAwKSx0aGlzLmRpc3Bvc2UoKSkpfWdldCBpc0NhbmNlbGxhdGlvblJlcXVlc3RlZCgpe3JldHVybiB0aGlzLl9pc0NhbmNlbGxlZH1nZXQgb25DYW5jZWxsYXRpb25SZXF1ZXN0ZWQoKXtyZXR1cm4gdGhpcy5faXNDYW5jZWxsZWQ/b2E6KHRoaXMuX2VtaXR0ZXJ8fCh0aGlzLl9lbWl0dGVyPW5ldyBMZSksdGhpcy5fZW1pdHRlci5ldmVudCl9ZGlzcG9zZSgpe3RoaXMuX2VtaXR0ZXImJih0aGlzLl9lbWl0dGVyLmRpc3Bvc2UoKSx0aGlzLl9lbWl0dGVyPW51bGwpfX1jbGFzcyBFZHtjb25zdHJ1Y3Rvcih0KXt0aGlzLl90b2tlbj12b2lkIDAsdGhpcy5fcGFyZW50TGlzdGVuZXI9dm9pZCAwLHRoaXMuX3BhcmVudExpc3RlbmVyPXQmJnQub25DYW5jZWxsYXRpb25SZXF1ZXN0ZWQodGhpcy5jYW5jZWwsdGhpcyl9Z2V0IHRva2VuKCl7cmV0dXJuIHRoaXMuX3Rva2VufHwodGhpcy5fdG9rZW49bmV3IEhuKSx0aGlzLl90b2tlbn1jYW5jZWwoKXt0aGlzLl90b2tlbj90aGlzLl90b2tlbiBpbnN0YW5jZW9mIEhuJiZ0aGlzLl90b2tlbi5jYW5jZWwoKTp0aGlzLl90b2tlbj1qbi5DYW5jZWxsZWR9ZGlzcG9zZSh0PSExKXt0JiZ0aGlzLmNhbmNlbCgpLHRoaXMuX3BhcmVudExpc3RlbmVyPy5kaXNwb3NlKCksdGhpcy5fdG9rZW4/dGhpcy5fdG9rZW4gaW5zdGFuY2VvZiBIbiYmdGhpcy5fdG9rZW4uZGlzcG9zZSgpOnRoaXMuX3Rva2VuPWpuLk5vbmV9fWNsYXNzIG5pe2NvbnN0cnVjdG9yKCl7dGhpcy5fa2V5Q29kZVRvU3RyPVtdLHRoaXMuX3N0clRvS2V5Q29kZT1PYmplY3QuY3JlYXRlKG51bGwpfWRlZmluZSh0LG4pe3RoaXMuX2tleUNvZGVUb1N0clt0XT1uLHRoaXMuX3N0clRvS2V5Q29kZVtuLnRvTG93ZXJDYXNlKCldPXR9a2V5Q29kZVRvU3RyKHQpe3JldHVybiB0aGlzLl9rZXlDb2RlVG9TdHJbdF19c3RyVG9LZXlDb2RlKHQpe3JldHVybiB0aGlzLl9zdHJUb0tleUNvZGVbdC50b0xvd2VyQ2FzZSgpXXx8MH19Y29uc3QgR249bmV3IG5pLHJpPW5ldyBuaSxpaT1uZXcgbmksRmQ9bmV3IEFycmF5KDIzMCksUmQ9T2JqZWN0LmNyZWF0ZShudWxsKSxOZD1PYmplY3QuY3JlYXRlKG51bGwpOyhmdW5jdGlvbigpe2NvbnN0IGU9IiIsdD1bWzEsMCwiTm9uZSIsMCwidW5rbm93biIsMCwiVktfVU5LTk9XTiIsZSxlXSxbMSwxLCJIeXBlciIsMCxlLDAsZSxlLGVdLFsxLDIsIlN1cGVyIiwwLGUsMCxlLGUsZV0sWzEsMywiRm4iLDAsZSwwLGUsZSxlXSxbMSw0LCJGbkxvY2siLDAsZSwwLGUsZSxlXSxbMSw1LCJTdXNwZW5kIiwwLGUsMCxlLGUsZV0sWzEsNiwiUmVzdW1lIiwwLGUsMCxlLGUsZV0sWzEsNywiVHVyYm8iLDAsZSwwLGUsZSxlXSxbMSw4LCJTbGVlcCIsMCxlLDAsIlZLX1NMRUVQIixlLGVdLFsxLDksIldha2VVcCIsMCxlLDAsZSxlLGVdLFswLDEwLCJLZXlBIiwzMSwiQSIsNjUsIlZLX0EiLGUsZV0sWzAsMTEsIktleUIiLDMyLCJCIiw2NiwiVktfQiIsZSxlXSxbMCwxMiwiS2V5QyIsMzMsIkMiLDY3LCJWS19DIixlLGVdLFswLDEzLCJLZXlEIiwzNCwiRCIsNjgsIlZLX0QiLGUsZV0sWzAsMTQsIktleUUiLDM1LCJFIiw2OSwiVktfRSIsZSxlXSxbMCwxNSwiS2V5RiIsMzYsIkYiLDcwLCJWS19GIixlLGVdLFswLDE2LCJLZXlHIiwzNywiRyIsNzEsIlZLX0ciLGUsZV0sWzAsMTcsIktleUgiLDM4LCJIIiw3MiwiVktfSCIsZSxlXSxbMCwxOCwiS2V5SSIsMzksIkkiLDczLCJWS19JIixlLGVdLFswLDE5LCJLZXlKIiw0MCwiSiIsNzQsIlZLX0oiLGUsZV0sWzAsMjAsIktleUsiLDQxLCJLIiw3NSwiVktfSyIsZSxlXSxbMCwyMSwiS2V5TCIsNDIsIkwiLDc2LCJWS19MIixlLGVdLFswLDIyLCJLZXlNIiw0MywiTSIsNzcsIlZLX00iLGUsZV0sWzAsMjMsIktleU4iLDQ0LCJOIiw3OCwiVktfTiIsZSxlXSxbMCwyNCwiS2V5TyIsNDUsIk8iLDc5LCJWS19PIixlLGVdLFswLDI1LCJLZXlQIiw0NiwiUCIsODAsIlZLX1AiLGUsZV0sWzAsMjYsIktleVEiLDQ3LCJRIiw4MSwiVktfUSIsZSxlXSxbMCwyNywiS2V5UiIsNDgsIlIiLDgyLCJWS19SIixlLGVdLFswLDI4LCJLZXlTIiw0OSwiUyIsODMsIlZLX1MiLGUsZV0sWzAsMjksIktleVQiLDUwLCJUIiw4NCwiVktfVCIsZSxlXSxbMCwzMCwiS2V5VSIsNTEsIlUiLDg1LCJWS19VIixlLGVdLFswLDMxLCJLZXlWIiw1MiwiViIsODYsIlZLX1YiLGUsZV0sWzAsMzIsIktleVciLDUzLCJXIiw4NywiVktfVyIsZSxlXSxbMCwzMywiS2V5WCIsNTQsIlgiLDg4LCJWS19YIixlLGVdLFswLDM0LCJLZXlZIiw1NSwiWSIsODksIlZLX1kiLGUsZV0sWzAsMzUsIktleVoiLDU2LCJaIiw5MCwiVktfWiIsZSxlXSxbMCwzNiwiRGlnaXQxIiwyMiwiMSIsNDksIlZLXzEiLGUsZV0sWzAsMzcsIkRpZ2l0MiIsMjMsIjIiLDUwLCJWS18yIixlLGVdLFswLDM4LCJEaWdpdDMiLDI0LCIzIiw1MSwiVktfMyIsZSxlXSxbMCwzOSwiRGlnaXQ0IiwyNSwiNCIsNTIsIlZLXzQiLGUsZV0sWzAsNDAsIkRpZ2l0NSIsMjYsIjUiLDUzLCJWS181IixlLGVdLFswLDQxLCJEaWdpdDYiLDI3LCI2Iiw1NCwiVktfNiIsZSxlXSxbMCw0MiwiRGlnaXQ3IiwyOCwiNyIsNTUsIlZLXzciLGUsZV0sWzAsNDMsIkRpZ2l0OCIsMjksIjgiLDU2LCJWS184IixlLGVdLFswLDQ0LCJEaWdpdDkiLDMwLCI5Iiw1NywiVktfOSIsZSxlXSxbMCw0NSwiRGlnaXQwIiwyMSwiMCIsNDgsIlZLXzAiLGUsZV0sWzEsNDYsIkVudGVyIiwzLCJFbnRlciIsMTMsIlZLX1JFVFVSTiIsZSxlXSxbMSw0NywiRXNjYXBlIiw5LCJFc2NhcGUiLDI3LCJWS19FU0NBUEUiLGUsZV0sWzEsNDgsIkJhY2tzcGFjZSIsMSwiQmFja3NwYWNlIiw4LCJWS19CQUNLIixlLGVdLFsxLDQ5LCJUYWIiLDIsIlRhYiIsOSwiVktfVEFCIixlLGVdLFsxLDUwLCJTcGFjZSIsMTAsIlNwYWNlIiwzMiwiVktfU1BBQ0UiLGUsZV0sWzAsNTEsIk1pbnVzIiw4OCwiLSIsMTg5LCJWS19PRU1fTUlOVVMiLCItIiwiT0VNX01JTlVTIl0sWzAsNTIsIkVxdWFsIiw4NiwiPSIsMTg3LCJWS19PRU1fUExVUyIsIj0iLCJPRU1fUExVUyJdLFswLDUzLCJCcmFja2V0TGVmdCIsOTIsIlsiLDIxOSwiVktfT0VNXzQiLCJbIiwiT0VNXzQiXSxbMCw1NCwiQnJhY2tldFJpZ2h0Iiw5NCwiXSIsMjIxLCJWS19PRU1fNiIsIl0iLCJPRU1fNiJdLFswLDU1LCJCYWNrc2xhc2giLDkzLCJcXCIsMjIwLCJWS19PRU1fNSIsIlxcIiwiT0VNXzUiXSxbMCw1NiwiSW50bEhhc2giLDAsZSwwLGUsZSxlXSxbMCw1NywiU2VtaWNvbG9uIiw4NSwiOyIsMTg2LCJWS19PRU1fMSIsIjsiLCJPRU1fMSJdLFswLDU4LCJRdW90ZSIsOTUsIiciLDIyMiwiVktfT0VNXzciLCInIiwiT0VNXzciXSxbMCw1OSwiQmFja3F1b3RlIiw5MSwiYCIsMTkyLCJWS19PRU1fMyIsImAiLCJPRU1fMyJdLFswLDYwLCJDb21tYSIsODcsIiwiLDE4OCwiVktfT0VNX0NPTU1BIiwiLCIsIk9FTV9DT01NQSJdLFswLDYxLCJQZXJpb2QiLDg5LCIuIiwxOTAsIlZLX09FTV9QRVJJT0QiLCIuIiwiT0VNX1BFUklPRCJdLFswLDYyLCJTbGFzaCIsOTAsIi8iLDE5MSwiVktfT0VNXzIiLCIvIiwiT0VNXzIiXSxbMSw2MywiQ2Fwc0xvY2siLDgsIkNhcHNMb2NrIiwyMCwiVktfQ0FQSVRBTCIsZSxlXSxbMSw2NCwiRjEiLDU5LCJGMSIsMTEyLCJWS19GMSIsZSxlXSxbMSw2NSwiRjIiLDYwLCJGMiIsMTEzLCJWS19GMiIsZSxlXSxbMSw2NiwiRjMiLDYxLCJGMyIsMTE0LCJWS19GMyIsZSxlXSxbMSw2NywiRjQiLDYyLCJGNCIsMTE1LCJWS19GNCIsZSxlXSxbMSw2OCwiRjUiLDYzLCJGNSIsMTE2LCJWS19GNSIsZSxlXSxbMSw2OSwiRjYiLDY0LCJGNiIsMTE3LCJWS19GNiIsZSxlXSxbMSw3MCwiRjciLDY1LCJGNyIsMTE4LCJWS19GNyIsZSxlXSxbMSw3MSwiRjgiLDY2LCJGOCIsMTE5LCJWS19GOCIsZSxlXSxbMSw3MiwiRjkiLDY3LCJGOSIsMTIwLCJWS19GOSIsZSxlXSxbMSw3MywiRjEwIiw2OCwiRjEwIiwxMjEsIlZLX0YxMCIsZSxlXSxbMSw3NCwiRjExIiw2OSwiRjExIiwxMjIsIlZLX0YxMSIsZSxlXSxbMSw3NSwiRjEyIiw3MCwiRjEyIiwxMjMsIlZLX0YxMiIsZSxlXSxbMSw3NiwiUHJpbnRTY3JlZW4iLDAsZSwwLGUsZSxlXSxbMSw3NywiU2Nyb2xsTG9jayIsODQsIlNjcm9sbExvY2siLDE0NSwiVktfU0NST0xMIixlLGVdLFsxLDc4LCJQYXVzZSIsNywiUGF1c2VCcmVhayIsMTksIlZLX1BBVVNFIixlLGVdLFsxLDc5LCJJbnNlcnQiLDE5LCJJbnNlcnQiLDQ1LCJWS19JTlNFUlQiLGUsZV0sWzEsODAsIkhvbWUiLDE0LCJIb21lIiwzNiwiVktfSE9NRSIsZSxlXSxbMSw4MSwiUGFnZVVwIiwxMSwiUGFnZVVwIiwzMywiVktfUFJJT1IiLGUsZV0sWzEsODIsIkRlbGV0ZSIsMjAsIkRlbGV0ZSIsNDYsIlZLX0RFTEVURSIsZSxlXSxbMSw4MywiRW5kIiwxMywiRW5kIiwzNSwiVktfRU5EIixlLGVdLFsxLDg0LCJQYWdlRG93biIsMTIsIlBhZ2VEb3duIiwzNCwiVktfTkVYVCIsZSxlXSxbMSw4NSwiQXJyb3dSaWdodCIsMTcsIlJpZ2h0QXJyb3ciLDM5LCJWS19SSUdIVCIsIlJpZ2h0IixlXSxbMSw4NiwiQXJyb3dMZWZ0IiwxNSwiTGVmdEFycm93IiwzNywiVktfTEVGVCIsIkxlZnQiLGVdLFsxLDg3LCJBcnJvd0Rvd24iLDE4LCJEb3duQXJyb3ciLDQwLCJWS19ET1dOIiwiRG93biIsZV0sWzEsODgsIkFycm93VXAiLDE2LCJVcEFycm93IiwzOCwiVktfVVAiLCJVcCIsZV0sWzEsODksIk51bUxvY2siLDgzLCJOdW1Mb2NrIiwxNDQsIlZLX05VTUxPQ0siLGUsZV0sWzEsOTAsIk51bXBhZERpdmlkZSIsMTEzLCJOdW1QYWRfRGl2aWRlIiwxMTEsIlZLX0RJVklERSIsZSxlXSxbMSw5MSwiTnVtcGFkTXVsdGlwbHkiLDEwOCwiTnVtUGFkX011bHRpcGx5IiwxMDYsIlZLX01VTFRJUExZIixlLGVdLFsxLDkyLCJOdW1wYWRTdWJ0cmFjdCIsMTExLCJOdW1QYWRfU3VidHJhY3QiLDEwOSwiVktfU1VCVFJBQ1QiLGUsZV0sWzEsOTMsIk51bXBhZEFkZCIsMTA5LCJOdW1QYWRfQWRkIiwxMDcsIlZLX0FERCIsZSxlXSxbMSw5NCwiTnVtcGFkRW50ZXIiLDMsZSwwLGUsZSxlXSxbMSw5NSwiTnVtcGFkMSIsOTksIk51bVBhZDEiLDk3LCJWS19OVU1QQUQxIixlLGVdLFsxLDk2LCJOdW1wYWQyIiwxMDAsIk51bVBhZDIiLDk4LCJWS19OVU1QQUQyIixlLGVdLFsxLDk3LCJOdW1wYWQzIiwxMDEsIk51bVBhZDMiLDk5LCJWS19OVU1QQUQzIixlLGVdLFsxLDk4LCJOdW1wYWQ0IiwxMDIsIk51bVBhZDQiLDEwMCwiVktfTlVNUEFENCIsZSxlXSxbMSw5OSwiTnVtcGFkNSIsMTAzLCJOdW1QYWQ1IiwxMDEsIlZLX05VTVBBRDUiLGUsZV0sWzEsMTAwLCJOdW1wYWQ2IiwxMDQsIk51bVBhZDYiLDEwMiwiVktfTlVNUEFENiIsZSxlXSxbMSwxMDEsIk51bXBhZDciLDEwNSwiTnVtUGFkNyIsMTAzLCJWS19OVU1QQUQ3IixlLGVdLFsxLDEwMiwiTnVtcGFkOCIsMTA2LCJOdW1QYWQ4IiwxMDQsIlZLX05VTVBBRDgiLGUsZV0sWzEsMTAzLCJOdW1wYWQ5IiwxMDcsIk51bVBhZDkiLDEwNSwiVktfTlVNUEFEOSIsZSxlXSxbMSwxMDQsIk51bXBhZDAiLDk4LCJOdW1QYWQwIiw5NiwiVktfTlVNUEFEMCIsZSxlXSxbMSwxMDUsIk51bXBhZERlY2ltYWwiLDExMiwiTnVtUGFkX0RlY2ltYWwiLDExMCwiVktfREVDSU1BTCIsZSxlXSxbMCwxMDYsIkludGxCYWNrc2xhc2giLDk3LCJPRU1fMTAyIiwyMjYsIlZLX09FTV8xMDIiLGUsZV0sWzEsMTA3LCJDb250ZXh0TWVudSIsNTgsIkNvbnRleHRNZW51Iiw5MyxlLGUsZV0sWzEsMTA4LCJQb3dlciIsMCxlLDAsZSxlLGVdLFsxLDEwOSwiTnVtcGFkRXF1YWwiLDAsZSwwLGUsZSxlXSxbMSwxMTAsIkYxMyIsNzEsIkYxMyIsMTI0LCJWS19GMTMiLGUsZV0sWzEsMTExLCJGMTQiLDcyLCJGMTQiLDEyNSwiVktfRjE0IixlLGVdLFsxLDExMiwiRjE1Iiw3MywiRjE1IiwxMjYsIlZLX0YxNSIsZSxlXSxbMSwxMTMsIkYxNiIsNzQsIkYxNiIsMTI3LCJWS19GMTYiLGUsZV0sWzEsMTE0LCJGMTciLDc1LCJGMTciLDEyOCwiVktfRjE3IixlLGVdLFsxLDExNSwiRjE4Iiw3NiwiRjE4IiwxMjksIlZLX0YxOCIsZSxlXSxbMSwxMTYsIkYxOSIsNzcsIkYxOSIsMTMwLCJWS19GMTkiLGUsZV0sWzEsMTE3LCJGMjAiLDc4LCJGMjAiLDEzMSwiVktfRjIwIixlLGVdLFsxLDExOCwiRjIxIiw3OSwiRjIxIiwxMzIsIlZLX0YyMSIsZSxlXSxbMSwxMTksIkYyMiIsODAsIkYyMiIsMTMzLCJWS19GMjIiLGUsZV0sWzEsMTIwLCJGMjMiLDgxLCJGMjMiLDEzNCwiVktfRjIzIixlLGVdLFsxLDEyMSwiRjI0Iiw4MiwiRjI0IiwxMzUsIlZLX0YyNCIsZSxlXSxbMSwxMjIsIk9wZW4iLDAsZSwwLGUsZSxlXSxbMSwxMjMsIkhlbHAiLDAsZSwwLGUsZSxlXSxbMSwxMjQsIlNlbGVjdCIsMCxlLDAsZSxlLGVdLFsxLDEyNSwiQWdhaW4iLDAsZSwwLGUsZSxlXSxbMSwxMjYsIlVuZG8iLDAsZSwwLGUsZSxlXSxbMSwxMjcsIkN1dCIsMCxlLDAsZSxlLGVdLFsxLDEyOCwiQ29weSIsMCxlLDAsZSxlLGVdLFsxLDEyOSwiUGFzdGUiLDAsZSwwLGUsZSxlXSxbMSwxMzAsIkZpbmQiLDAsZSwwLGUsZSxlXSxbMSwxMzEsIkF1ZGlvVm9sdW1lTXV0ZSIsMTE3LCJBdWRpb1ZvbHVtZU11dGUiLDE3MywiVktfVk9MVU1FX01VVEUiLGUsZV0sWzEsMTMyLCJBdWRpb1ZvbHVtZVVwIiwxMTgsIkF1ZGlvVm9sdW1lVXAiLDE3NSwiVktfVk9MVU1FX1VQIixlLGVdLFsxLDEzMywiQXVkaW9Wb2x1bWVEb3duIiwxMTksIkF1ZGlvVm9sdW1lRG93biIsMTc0LCJWS19WT0xVTUVfRE9XTiIsZSxlXSxbMSwxMzQsIk51bXBhZENvbW1hIiwxMTAsIk51bVBhZF9TZXBhcmF0b3IiLDEwOCwiVktfU0VQQVJBVE9SIixlLGVdLFswLDEzNSwiSW50bFJvIiwxMTUsIkFCTlRfQzEiLDE5MywiVktfQUJOVF9DMSIsZSxlXSxbMSwxMzYsIkthbmFNb2RlIiwwLGUsMCxlLGUsZV0sWzAsMTM3LCJJbnRsWWVuIiwwLGUsMCxlLGUsZV0sWzEsMTM4LCJDb252ZXJ0IiwwLGUsMCxlLGUsZV0sWzEsMTM5LCJOb25Db252ZXJ0IiwwLGUsMCxlLGUsZV0sWzEsMTQwLCJMYW5nMSIsMCxlLDAsZSxlLGVdLFsxLDE0MSwiTGFuZzIiLDAsZSwwLGUsZSxlXSxbMSwxNDIsIkxhbmczIiwwLGUsMCxlLGUsZV0sWzEsMTQzLCJMYW5nNCIsMCxlLDAsZSxlLGVdLFsxLDE0NCwiTGFuZzUiLDAsZSwwLGUsZSxlXSxbMSwxNDUsIkFib3J0IiwwLGUsMCxlLGUsZV0sWzEsMTQ2LCJQcm9wcyIsMCxlLDAsZSxlLGVdLFsxLDE0NywiTnVtcGFkUGFyZW5MZWZ0IiwwLGUsMCxlLGUsZV0sWzEsMTQ4LCJOdW1wYWRQYXJlblJpZ2h0IiwwLGUsMCxlLGUsZV0sWzEsMTQ5LCJOdW1wYWRCYWNrc3BhY2UiLDAsZSwwLGUsZSxlXSxbMSwxNTAsIk51bXBhZE1lbW9yeVN0b3JlIiwwLGUsMCxlLGUsZV0sWzEsMTUxLCJOdW1wYWRNZW1vcnlSZWNhbGwiLDAsZSwwLGUsZSxlXSxbMSwxNTIsIk51bXBhZE1lbW9yeUNsZWFyIiwwLGUsMCxlLGUsZV0sWzEsMTUzLCJOdW1wYWRNZW1vcnlBZGQiLDAsZSwwLGUsZSxlXSxbMSwxNTQsIk51bXBhZE1lbW9yeVN1YnRyYWN0IiwwLGUsMCxlLGUsZV0sWzEsMTU1LCJOdW1wYWRDbGVhciIsMTMxLCJDbGVhciIsMTIsIlZLX0NMRUFSIixlLGVdLFsxLDE1NiwiTnVtcGFkQ2xlYXJFbnRyeSIsMCxlLDAsZSxlLGVdLFsxLDAsZSw1LCJDdHJsIiwxNywiVktfQ09OVFJPTCIsZSxlXSxbMSwwLGUsNCwiU2hpZnQiLDE2LCJWS19TSElGVCIsZSxlXSxbMSwwLGUsNiwiQWx0IiwxOCwiVktfTUVOVSIsZSxlXSxbMSwwLGUsNTcsIk1ldGEiLDkxLCJWS19DT01NQU5EIixlLGVdLFsxLDE1NywiQ29udHJvbExlZnQiLDUsZSwwLCJWS19MQ09OVFJPTCIsZSxlXSxbMSwxNTgsIlNoaWZ0TGVmdCIsNCxlLDAsIlZLX0xTSElGVCIsZSxlXSxbMSwxNTksIkFsdExlZnQiLDYsZSwwLCJWS19MTUVOVSIsZSxlXSxbMSwxNjAsIk1ldGFMZWZ0Iiw1NyxlLDAsIlZLX0xXSU4iLGUsZV0sWzEsMTYxLCJDb250cm9sUmlnaHQiLDUsZSwwLCJWS19SQ09OVFJPTCIsZSxlXSxbMSwxNjIsIlNoaWZ0UmlnaHQiLDQsZSwwLCJWS19SU0hJRlQiLGUsZV0sWzEsMTYzLCJBbHRSaWdodCIsNixlLDAsIlZLX1JNRU5VIixlLGVdLFsxLDE2NCwiTWV0YVJpZ2h0Iiw1NyxlLDAsIlZLX1JXSU4iLGUsZV0sWzEsMTY1LCJCcmlnaHRuZXNzVXAiLDAsZSwwLGUsZSxlXSxbMSwxNjYsIkJyaWdodG5lc3NEb3duIiwwLGUsMCxlLGUsZV0sWzEsMTY3LCJNZWRpYVBsYXkiLDAsZSwwLGUsZSxlXSxbMSwxNjgsIk1lZGlhUmVjb3JkIiwwLGUsMCxlLGUsZV0sWzEsMTY5LCJNZWRpYUZhc3RGb3J3YXJkIiwwLGUsMCxlLGUsZV0sWzEsMTcwLCJNZWRpYVJld2luZCIsMCxlLDAsZSxlLGVdLFsxLDE3MSwiTWVkaWFUcmFja05leHQiLDEyNCwiTWVkaWFUcmFja05leHQiLDE3NiwiVktfTUVESUFfTkVYVF9UUkFDSyIsZSxlXSxbMSwxNzIsIk1lZGlhVHJhY2tQcmV2aW91cyIsMTI1LCJNZWRpYVRyYWNrUHJldmlvdXMiLDE3NywiVktfTUVESUFfUFJFVl9UUkFDSyIsZSxlXSxbMSwxNzMsIk1lZGlhU3RvcCIsMTI2LCJNZWRpYVN0b3AiLDE3OCwiVktfTUVESUFfU1RPUCIsZSxlXSxbMSwxNzQsIkVqZWN0IiwwLGUsMCxlLGUsZV0sWzEsMTc1LCJNZWRpYVBsYXlQYXVzZSIsMTI3LCJNZWRpYVBsYXlQYXVzZSIsMTc5LCJWS19NRURJQV9QTEFZX1BBVVNFIixlLGVdLFsxLDE3NiwiTWVkaWFTZWxlY3QiLDEyOCwiTGF1bmNoTWVkaWFQbGF5ZXIiLDE4MSwiVktfTUVESUFfTEFVTkNIX01FRElBX1NFTEVDVCIsZSxlXSxbMSwxNzcsIkxhdW5jaE1haWwiLDEyOSwiTGF1bmNoTWFpbCIsMTgwLCJWS19NRURJQV9MQVVOQ0hfTUFJTCIsZSxlXSxbMSwxNzgsIkxhdW5jaEFwcDIiLDEzMCwiTGF1bmNoQXBwMiIsMTgzLCJWS19NRURJQV9MQVVOQ0hfQVBQMiIsZSxlXSxbMSwxNzksIkxhdW5jaEFwcDEiLDAsZSwwLCJWS19NRURJQV9MQVVOQ0hfQVBQMSIsZSxlXSxbMSwxODAsIlNlbGVjdFRhc2siLDAsZSwwLGUsZSxlXSxbMSwxODEsIkxhdW5jaFNjcmVlblNhdmVyIiwwLGUsMCxlLGUsZV0sWzEsMTgyLCJCcm93c2VyU2VhcmNoIiwxMjAsIkJyb3dzZXJTZWFyY2giLDE3MCwiVktfQlJPV1NFUl9TRUFSQ0giLGUsZV0sWzEsMTgzLCJCcm93c2VySG9tZSIsMTIxLCJCcm93c2VySG9tZSIsMTcyLCJWS19CUk9XU0VSX0hPTUUiLGUsZV0sWzEsMTg0LCJCcm93c2VyQmFjayIsMTIyLCJCcm93c2VyQmFjayIsMTY2LCJWS19CUk9XU0VSX0JBQ0siLGUsZV0sWzEsMTg1LCJCcm93c2VyRm9yd2FyZCIsMTIzLCJCcm93c2VyRm9yd2FyZCIsMTY3LCJWS19CUk9XU0VSX0ZPUldBUkQiLGUsZV0sWzEsMTg2LCJCcm93c2VyU3RvcCIsMCxlLDAsIlZLX0JST1dTRVJfU1RPUCIsZSxlXSxbMSwxODcsIkJyb3dzZXJSZWZyZXNoIiwwLGUsMCwiVktfQlJPV1NFUl9SRUZSRVNIIixlLGVdLFsxLDE4OCwiQnJvd3NlckZhdm9yaXRlcyIsMCxlLDAsIlZLX0JST1dTRVJfRkFWT1JJVEVTIixlLGVdLFsxLDE4OSwiWm9vbVRvZ2dsZSIsMCxlLDAsZSxlLGVdLFsxLDE5MCwiTWFpbFJlcGx5IiwwLGUsMCxlLGUsZV0sWzEsMTkxLCJNYWlsRm9yd2FyZCIsMCxlLDAsZSxlLGVdLFsxLDE5MiwiTWFpbFNlbmQiLDAsZSwwLGUsZSxlXSxbMSwwLGUsMTE0LCJLZXlJbkNvbXBvc2l0aW9uIiwyMjksZSxlLGVdLFsxLDAsZSwxMTYsIkFCTlRfQzIiLDE5NCwiVktfQUJOVF9DMiIsZSxlXSxbMSwwLGUsOTYsIk9FTV84IiwyMjMsIlZLX09FTV84IixlLGVdLFsxLDAsZSwwLGUsMCwiVktfS0FOQSIsZSxlXSxbMSwwLGUsMCxlLDAsIlZLX0hBTkdVTCIsZSxlXSxbMSwwLGUsMCxlLDAsIlZLX0pVTkpBIixlLGVdLFsxLDAsZSwwLGUsMCwiVktfRklOQUwiLGUsZV0sWzEsMCxlLDAsZSwwLCJWS19IQU5KQSIsZSxlXSxbMSwwLGUsMCxlLDAsIlZLX0tBTkpJIixlLGVdLFsxLDAsZSwwLGUsMCwiVktfQ09OVkVSVCIsZSxlXSxbMSwwLGUsMCxlLDAsIlZLX05PTkNPTlZFUlQiLGUsZV0sWzEsMCxlLDAsZSwwLCJWS19BQ0NFUFQiLGUsZV0sWzEsMCxlLDAsZSwwLCJWS19NT0RFQ0hBTkdFIixlLGVdLFsxLDAsZSwwLGUsMCwiVktfU0VMRUNUIixlLGVdLFsxLDAsZSwwLGUsMCwiVktfUFJJTlQiLGUsZV0sWzEsMCxlLDAsZSwwLCJWS19FWEVDVVRFIixlLGVdLFsxLDAsZSwwLGUsMCwiVktfU05BUFNIT1QiLGUsZV0sWzEsMCxlLDAsZSwwLCJWS19IRUxQIixlLGVdLFsxLDAsZSwwLGUsMCwiVktfQVBQUyIsZSxlXSxbMSwwLGUsMCxlLDAsIlZLX1BST0NFU1NLRVkiLGUsZV0sWzEsMCxlLDAsZSwwLCJWS19QQUNLRVQiLGUsZV0sWzEsMCxlLDAsZSwwLCJWS19EQkVfU0JDU0NIQVIiLGUsZV0sWzEsMCxlLDAsZSwwLCJWS19EQkVfREJDU0NIQVIiLGUsZV0sWzEsMCxlLDAsZSwwLCJWS19BVFROIixlLGVdLFsxLDAsZSwwLGUsMCwiVktfQ1JTRUwiLGUsZV0sWzEsMCxlLDAsZSwwLCJWS19FWFNFTCIsZSxlXSxbMSwwLGUsMCxlLDAsIlZLX0VSRU9GIixlLGVdLFsxLDAsZSwwLGUsMCwiVktfUExBWSIsZSxlXSxbMSwwLGUsMCxlLDAsIlZLX1pPT00iLGUsZV0sWzEsMCxlLDAsZSwwLCJWS19OT05BTUUiLGUsZV0sWzEsMCxlLDAsZSwwLCJWS19QQTEiLGUsZV0sWzEsMCxlLDAsZSwwLCJWS19PRU1fQ0xFQVIiLGUsZV1dLG49W10scj1bXTtmb3IoY29uc3QgaSBvZiB0KXtjb25zdFtzLGEsbCxvLGMsZCx1LGYsbV09aTtpZihyW2FdfHwoclthXT0hMCxSZFtsXT1hLE5kW2wudG9Mb3dlckNhc2UoKV09YSksIW5bb10pe2lmKG5bb109ITAsIWMpdGhyb3cgbmV3IEVycm9yKGBTdHJpbmcgcmVwcmVzZW50YXRpb24gbWlzc2luZyBmb3Iga2V5IGNvZGUgJHtvfSBhcm91bmQgc2NhbiBjb2RlICR7bH1gKTtHbi5kZWZpbmUobyxjKSxyaS5kZWZpbmUobyxmfHxjKSxpaS5kZWZpbmUobyxtfHxmfHxjKX1kJiYoRmRbZF09byl9fSkoKTt2YXIgbGE7KGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQobCl7cmV0dXJuIEduLmtleUNvZGVUb1N0cihsKX1lLnRvU3RyaW5nPXQ7ZnVuY3Rpb24gbihsKXtyZXR1cm4gR24uc3RyVG9LZXlDb2RlKGwpfWUuZnJvbVN0cmluZz1uO2Z1bmN0aW9uIHIobCl7cmV0dXJuIHJpLmtleUNvZGVUb1N0cihsKX1lLnRvVXNlclNldHRpbmdzVVM9cjtmdW5jdGlvbiBpKGwpe3JldHVybiBpaS5rZXlDb2RlVG9TdHIobCl9ZS50b1VzZXJTZXR0aW5nc0dlbmVyYWw9aTtmdW5jdGlvbiBzKGwpe3JldHVybiByaS5zdHJUb0tleUNvZGUobCl8fGlpLnN0clRvS2V5Q29kZShsKX1lLmZyb21Vc2VyU2V0dGluZ3M9cztmdW5jdGlvbiBhKGwpe2lmKGw+PTk4JiZsPD0xMTMpcmV0dXJuIG51bGw7c3dpdGNoKGwpe2Nhc2UgMTY6cmV0dXJuIlVwIjtjYXNlIDE4OnJldHVybiJEb3duIjtjYXNlIDE1OnJldHVybiJMZWZ0IjtjYXNlIDE3OnJldHVybiJSaWdodCJ9cmV0dXJuIEduLmtleUNvZGVUb1N0cihsKX1lLnRvRWxlY3Ryb25BY2NlbGVyYXRvcj1hfSkobGF8fChsYT17fSkpO2Z1bmN0aW9uIERkKGUsdCl7Y29uc3Qgbj0odCY2NTUzNSk8PDE2Pj4+MDtyZXR1cm4oZXxuKT4+PjB9Y2xhc3MgRWUgZXh0ZW5kcyBRe2NvbnN0cnVjdG9yKHQsbixyLGkpe3N1cGVyKHQsbixyLGkpLHRoaXMuc2VsZWN0aW9uU3RhcnRMaW5lTnVtYmVyPXQsdGhpcy5zZWxlY3Rpb25TdGFydENvbHVtbj1uLHRoaXMucG9zaXRpb25MaW5lTnVtYmVyPXIsdGhpcy5wb3NpdGlvbkNvbHVtbj1pfXRvU3RyaW5nKCl7cmV0dXJuIlsiK3RoaXMuc2VsZWN0aW9uU3RhcnRMaW5lTnVtYmVyKyIsIit0aGlzLnNlbGVjdGlvblN0YXJ0Q29sdW1uKyIgLT4gIit0aGlzLnBvc2l0aW9uTGluZU51bWJlcisiLCIrdGhpcy5wb3NpdGlvbkNvbHVtbisiXSJ9ZXF1YWxzU2VsZWN0aW9uKHQpe3JldHVybiBFZS5zZWxlY3Rpb25zRXF1YWwodGhpcyx0KX1zdGF0aWMgc2VsZWN0aW9uc0VxdWFsKHQsbil7cmV0dXJuIHQuc2VsZWN0aW9uU3RhcnRMaW5lTnVtYmVyPT09bi5zZWxlY3Rpb25TdGFydExpbmVOdW1iZXImJnQuc2VsZWN0aW9uU3RhcnRDb2x1bW49PT1uLnNlbGVjdGlvblN0YXJ0Q29sdW1uJiZ0LnBvc2l0aW9uTGluZU51bWJlcj09PW4ucG9zaXRpb25MaW5lTnVtYmVyJiZ0LnBvc2l0aW9uQ29sdW1uPT09bi5wb3NpdGlvbkNvbHVtbn1nZXREaXJlY3Rpb24oKXtyZXR1cm4gdGhpcy5zZWxlY3Rpb25TdGFydExpbmVOdW1iZXI9PT10aGlzLnN0YXJ0TGluZU51bWJlciYmdGhpcy5zZWxlY3Rpb25TdGFydENvbHVtbj09PXRoaXMuc3RhcnRDb2x1bW4/MDoxfXNldEVuZFBvc2l0aW9uKHQsbil7cmV0dXJuIHRoaXMuZ2V0RGlyZWN0aW9uKCk9PT0wP25ldyBFZSh0aGlzLnN0YXJ0TGluZU51bWJlcix0aGlzLnN0YXJ0Q29sdW1uLHQsbik6bmV3IEVlKHQsbix0aGlzLnN0YXJ0TGluZU51bWJlcix0aGlzLnN0YXJ0Q29sdW1uKX1nZXRQb3NpdGlvbigpe3JldHVybiBuZXcgY2UodGhpcy5wb3NpdGlvbkxpbmVOdW1iZXIsdGhpcy5wb3NpdGlvbkNvbHVtbil9Z2V0U2VsZWN0aW9uU3RhcnQoKXtyZXR1cm4gbmV3IGNlKHRoaXMuc2VsZWN0aW9uU3RhcnRMaW5lTnVtYmVyLHRoaXMuc2VsZWN0aW9uU3RhcnRDb2x1bW4pfXNldFN0YXJ0UG9zaXRpb24odCxuKXtyZXR1cm4gdGhpcy5nZXREaXJlY3Rpb24oKT09PTA/bmV3IEVlKHQsbix0aGlzLmVuZExpbmVOdW1iZXIsdGhpcy5lbmRDb2x1bW4pOm5ldyBFZSh0aGlzLmVuZExpbmVOdW1iZXIsdGhpcy5lbmRDb2x1bW4sdCxuKX1zdGF0aWMgZnJvbVBvc2l0aW9ucyh0LG49dCl7cmV0dXJuIG5ldyBFZSh0LmxpbmVOdW1iZXIsdC5jb2x1bW4sbi5saW5lTnVtYmVyLG4uY29sdW1uKX1zdGF0aWMgZnJvbVJhbmdlKHQsbil7cmV0dXJuIG49PT0wP25ldyBFZSh0LnN0YXJ0TGluZU51bWJlcix0LnN0YXJ0Q29sdW1uLHQuZW5kTGluZU51bWJlcix0LmVuZENvbHVtbik6bmV3IEVlKHQuZW5kTGluZU51bWJlcix0LmVuZENvbHVtbix0LnN0YXJ0TGluZU51bWJlcix0LnN0YXJ0Q29sdW1uKX1zdGF0aWMgbGlmdFNlbGVjdGlvbih0KXtyZXR1cm4gbmV3IEVlKHQuc2VsZWN0aW9uU3RhcnRMaW5lTnVtYmVyLHQuc2VsZWN0aW9uU3RhcnRDb2x1bW4sdC5wb3NpdGlvbkxpbmVOdW1iZXIsdC5wb3NpdGlvbkNvbHVtbil9c3RhdGljIHNlbGVjdGlvbnNBcnJFcXVhbCh0LG4pe2lmKHQmJiFufHwhdCYmbilyZXR1cm4hMTtpZighdCYmIW4pcmV0dXJuITA7aWYodC5sZW5ndGghPT1uLmxlbmd0aClyZXR1cm4hMTtmb3IobGV0IHI9MCxpPXQubGVuZ3RoO3I8aTtyKyspaWYoIXRoaXMuc2VsZWN0aW9uc0VxdWFsKHRbcl0sbltyXSkpcmV0dXJuITE7cmV0dXJuITB9c3RhdGljIGlzSVNlbGVjdGlvbih0KXtyZXR1cm4gdCYmdHlwZW9mIHQuc2VsZWN0aW9uU3RhcnRMaW5lTnVtYmVyPT0ibnVtYmVyIiYmdHlwZW9mIHQuc2VsZWN0aW9uU3RhcnRDb2x1bW49PSJudW1iZXIiJiZ0eXBlb2YgdC5wb3NpdGlvbkxpbmVOdW1iZXI9PSJudW1iZXIiJiZ0eXBlb2YgdC5wb3NpdGlvbkNvbHVtbj09Im51bWJlciJ9c3RhdGljIGNyZWF0ZVdpdGhEaXJlY3Rpb24odCxuLHIsaSxzKXtyZXR1cm4gcz09PTA/bmV3IEVlKHQsbixyLGkpOm5ldyBFZShyLGksdCxuKX19Y29uc3QgY2E9T2JqZWN0LmNyZWF0ZShudWxsKTtmdW5jdGlvbiBoKGUsdCl7aWYobWgodCkpe2NvbnN0IG49Y2FbdF07aWYobj09PXZvaWQgMCl0aHJvdyBuZXcgRXJyb3IoYCR7ZX0gcmVmZXJlbmNlcyBhbiB1bmtub3duIGNvZGljb246ICR7dH1gKTt0PW59cmV0dXJuIGNhW2VdPXQse2lkOmV9fWNvbnN0IElkPXthZGQ6aCgiYWRkIiw2ZTQpLHBsdXM6aCgicGx1cyIsNmU0KSxnaXN0TmV3OmgoImdpc3QtbmV3Iiw2ZTQpLHJlcG9DcmVhdGU6aCgicmVwby1jcmVhdGUiLDZlNCksbGlnaHRidWxiOmgoImxpZ2h0YnVsYiIsNjAwMDEpLGxpZ2h0QnVsYjpoKCJsaWdodC1idWxiIiw2MDAwMSkscmVwbzpoKCJyZXBvIiw2MDAwMikscmVwb0RlbGV0ZTpoKCJyZXBvLWRlbGV0ZSIsNjAwMDIpLGdpc3RGb3JrOmgoImdpc3QtZm9yayIsNjAwMDMpLHJlcG9Gb3JrZWQ6aCgicmVwby1mb3JrZWQiLDYwMDAzKSxnaXRQdWxsUmVxdWVzdDpoKCJnaXQtcHVsbC1yZXF1ZXN0Iiw2MDAwNCksZ2l0UHVsbFJlcXVlc3RBYmFuZG9uZWQ6aCgiZ2l0LXB1bGwtcmVxdWVzdC1hYmFuZG9uZWQiLDYwMDA0KSxyZWNvcmRLZXlzOmgoInJlY29yZC1rZXlzIiw2MDAwNSksa2V5Ym9hcmQ6aCgia2V5Ym9hcmQiLDYwMDA1KSx0YWc6aCgidGFnIiw2MDAwNiksZ2l0UHVsbFJlcXVlc3RMYWJlbDpoKCJnaXQtcHVsbC1yZXF1ZXN0LWxhYmVsIiw2MDAwNiksdGFnQWRkOmgoInRhZy1hZGQiLDYwMDA2KSx0YWdSZW1vdmU6aCgidGFnLXJlbW92ZSIsNjAwMDYpLHBlcnNvbjpoKCJwZXJzb24iLDYwMDA3KSxwZXJzb25Gb2xsb3c6aCgicGVyc29uLWZvbGxvdyIsNjAwMDcpLHBlcnNvbk91dGxpbmU6aCgicGVyc29uLW91dGxpbmUiLDYwMDA3KSxwZXJzb25GaWxsZWQ6aCgicGVyc29uLWZpbGxlZCIsNjAwMDcpLGdpdEJyYW5jaDpoKCJnaXQtYnJhbmNoIiw2MDAwOCksZ2l0QnJhbmNoQ3JlYXRlOmgoImdpdC1icmFuY2gtY3JlYXRlIiw2MDAwOCksZ2l0QnJhbmNoRGVsZXRlOmgoImdpdC1icmFuY2gtZGVsZXRlIiw2MDAwOCksc291cmNlQ29udHJvbDpoKCJzb3VyY2UtY29udHJvbCIsNjAwMDgpLG1pcnJvcjpoKCJtaXJyb3IiLDYwMDA5KSxtaXJyb3JQdWJsaWM6aCgibWlycm9yLXB1YmxpYyIsNjAwMDkpLHN0YXI6aCgic3RhciIsNjAwMTApLHN0YXJBZGQ6aCgic3Rhci1hZGQiLDYwMDEwKSxzdGFyRGVsZXRlOmgoInN0YXItZGVsZXRlIiw2MDAxMCksc3RhckVtcHR5OmgoInN0YXItZW1wdHkiLDYwMDEwKSxjb21tZW50OmgoImNvbW1lbnQiLDYwMDExKSxjb21tZW50QWRkOmgoImNvbW1lbnQtYWRkIiw2MDAxMSksYWxlcnQ6aCgiYWxlcnQiLDYwMDEyKSx3YXJuaW5nOmgoIndhcm5pbmciLDYwMDEyKSxzZWFyY2g6aCgic2VhcmNoIiw2MDAxMyksc2VhcmNoU2F2ZTpoKCJzZWFyY2gtc2F2ZSIsNjAwMTMpLGxvZ091dDpoKCJsb2ctb3V0Iiw2MDAxNCksc2lnbk91dDpoKCJzaWduLW91dCIsNjAwMTQpLGxvZ0luOmgoImxvZy1pbiIsNjAwMTUpLHNpZ25JbjpoKCJzaWduLWluIiw2MDAxNSksZXllOmgoImV5ZSIsNjAwMTYpLGV5ZVVud2F0Y2g6aCgiZXllLXVud2F0Y2giLDYwMDE2KSxleWVXYXRjaDpoKCJleWUtd2F0Y2giLDYwMDE2KSxjaXJjbGVGaWxsZWQ6aCgiY2lyY2xlLWZpbGxlZCIsNjAwMTcpLHByaW1pdGl2ZURvdDpoKCJwcmltaXRpdmUtZG90Iiw2MDAxNyksY2xvc2VEaXJ0eTpoKCJjbG9zZS1kaXJ0eSIsNjAwMTcpLGRlYnVnQnJlYWtwb2ludDpoKCJkZWJ1Zy1icmVha3BvaW50Iiw2MDAxNyksZGVidWdCcmVha3BvaW50RGlzYWJsZWQ6aCgiZGVidWctYnJlYWtwb2ludC1kaXNhYmxlZCIsNjAwMTcpLGRlYnVnSGludDpoKCJkZWJ1Zy1oaW50Iiw2MDAxNyksdGVybWluYWxEZWNvcmF0aW9uU3VjY2VzczpoKCJ0ZXJtaW5hbC1kZWNvcmF0aW9uLXN1Y2Nlc3MiLDYwMDE3KSxwcmltaXRpdmVTcXVhcmU6aCgicHJpbWl0aXZlLXNxdWFyZSIsNjAwMTgpLGVkaXQ6aCgiZWRpdCIsNjAwMTkpLHBlbmNpbDpoKCJwZW5jaWwiLDYwMDE5KSxpbmZvOmgoImluZm8iLDYwMDIwKSxpc3N1ZU9wZW5lZDpoKCJpc3N1ZS1vcGVuZWQiLDYwMDIwKSxnaXN0UHJpdmF0ZTpoKCJnaXN0LXByaXZhdGUiLDYwMDIxKSxnaXRGb3JrUHJpdmF0ZTpoKCJnaXQtZm9yay1wcml2YXRlIiw2MDAyMSksbG9jazpoKCJsb2NrIiw2MDAyMSksbWlycm9yUHJpdmF0ZTpoKCJtaXJyb3ItcHJpdmF0ZSIsNjAwMjEpLGNsb3NlOmgoImNsb3NlIiw2MDAyMikscmVtb3ZlQ2xvc2U6aCgicmVtb3ZlLWNsb3NlIiw2MDAyMikseDpoKCJ4Iiw2MDAyMikscmVwb1N5bmM6aCgicmVwby1zeW5jIiw2MDAyMyksc3luYzpoKCJzeW5jIiw2MDAyMyksY2xvbmU6aCgiY2xvbmUiLDYwMDI0KSxkZXNrdG9wRG93bmxvYWQ6aCgiZGVza3RvcC1kb3dubG9hZCIsNjAwMjQpLGJlYWtlcjpoKCJiZWFrZXIiLDYwMDI1KSxtaWNyb3Njb3BlOmgoIm1pY3Jvc2NvcGUiLDYwMDI1KSx2bTpoKCJ2bSIsNjAwMjYpLGRldmljZURlc2t0b3A6aCgiZGV2aWNlLWRlc2t0b3AiLDYwMDI2KSxmaWxlOmgoImZpbGUiLDYwMDI3KSxmaWxlVGV4dDpoKCJmaWxlLXRleHQiLDYwMDI3KSxtb3JlOmgoIm1vcmUiLDYwMDI4KSxlbGxpcHNpczpoKCJlbGxpcHNpcyIsNjAwMjgpLGtlYmFiSG9yaXpvbnRhbDpoKCJrZWJhYi1ob3Jpem9udGFsIiw2MDAyOCksbWFpbFJlcGx5OmgoIm1haWwtcmVwbHkiLDYwMDI5KSxyZXBseTpoKCJyZXBseSIsNjAwMjkpLG9yZ2FuaXphdGlvbjpoKCJvcmdhbml6YXRpb24iLDYwMDMwKSxvcmdhbml6YXRpb25GaWxsZWQ6aCgib3JnYW5pemF0aW9uLWZpbGxlZCIsNjAwMzApLG9yZ2FuaXphdGlvbk91dGxpbmU6aCgib3JnYW5pemF0aW9uLW91dGxpbmUiLDYwMDMwKSxuZXdGaWxlOmgoIm5ldy1maWxlIiw2MDAzMSksZmlsZUFkZDpoKCJmaWxlLWFkZCIsNjAwMzEpLG5ld0ZvbGRlcjpoKCJuZXctZm9sZGVyIiw2MDAzMiksZmlsZURpcmVjdG9yeUNyZWF0ZTpoKCJmaWxlLWRpcmVjdG9yeS1jcmVhdGUiLDYwMDMyKSx0cmFzaDpoKCJ0cmFzaCIsNjAwMzMpLHRyYXNoY2FuOmgoInRyYXNoY2FuIiw2MDAzMyksaGlzdG9yeTpoKCJoaXN0b3J5Iiw2MDAzNCksY2xvY2s6aCgiY2xvY2siLDYwMDM0KSxmb2xkZXI6aCgiZm9sZGVyIiw2MDAzNSksZmlsZURpcmVjdG9yeTpoKCJmaWxlLWRpcmVjdG9yeSIsNjAwMzUpLHN5bWJvbEZvbGRlcjpoKCJzeW1ib2wtZm9sZGVyIiw2MDAzNSksbG9nb0dpdGh1YjpoKCJsb2dvLWdpdGh1YiIsNjAwMzYpLG1hcmtHaXRodWI6aCgibWFyay1naXRodWIiLDYwMDM2KSxnaXRodWI6aCgiZ2l0aHViIiw2MDAzNiksdGVybWluYWw6aCgidGVybWluYWwiLDYwMDM3KSxjb25zb2xlOmgoImNvbnNvbGUiLDYwMDM3KSxyZXBsOmgoInJlcGwiLDYwMDM3KSx6YXA6aCgiemFwIiw2MDAzOCksc3ltYm9sRXZlbnQ6aCgic3ltYm9sLWV2ZW50Iiw2MDAzOCksZXJyb3I6aCgiZXJyb3IiLDYwMDM5KSxzdG9wOmgoInN0b3AiLDYwMDM5KSx2YXJpYWJsZTpoKCJ2YXJpYWJsZSIsNjAwNDApLHN5bWJvbFZhcmlhYmxlOmgoInN5bWJvbC12YXJpYWJsZSIsNjAwNDApLGFycmF5OmgoImFycmF5Iiw2MDA0Miksc3ltYm9sQXJyYXk6aCgic3ltYm9sLWFycmF5Iiw2MDA0Miksc3ltYm9sTW9kdWxlOmgoInN5bWJvbC1tb2R1bGUiLDYwMDQzKSxzeW1ib2xQYWNrYWdlOmgoInN5bWJvbC1wYWNrYWdlIiw2MDA0Myksc3ltYm9sTmFtZXNwYWNlOmgoInN5bWJvbC1uYW1lc3BhY2UiLDYwMDQzKSxzeW1ib2xPYmplY3Q6aCgic3ltYm9sLW9iamVjdCIsNjAwNDMpLHN5bWJvbE1ldGhvZDpoKCJzeW1ib2wtbWV0aG9kIiw2MDA0NCksc3ltYm9sRnVuY3Rpb246aCgic3ltYm9sLWZ1bmN0aW9uIiw2MDA0NCksc3ltYm9sQ29uc3RydWN0b3I6aCgic3ltYm9sLWNvbnN0cnVjdG9yIiw2MDA0NCksc3ltYm9sQm9vbGVhbjpoKCJzeW1ib2wtYm9vbGVhbiIsNjAwNDcpLHN5bWJvbE51bGw6aCgic3ltYm9sLW51bGwiLDYwMDQ3KSxzeW1ib2xOdW1lcmljOmgoInN5bWJvbC1udW1lcmljIiw2MDA0OCksc3ltYm9sTnVtYmVyOmgoInN5bWJvbC1udW1iZXIiLDYwMDQ4KSxzeW1ib2xTdHJ1Y3R1cmU6aCgic3ltYm9sLXN0cnVjdHVyZSIsNjAwNDkpLHN5bWJvbFN0cnVjdDpoKCJzeW1ib2wtc3RydWN0Iiw2MDA0OSksc3ltYm9sUGFyYW1ldGVyOmgoInN5bWJvbC1wYXJhbWV0ZXIiLDYwMDUwKSxzeW1ib2xUeXBlUGFyYW1ldGVyOmgoInN5bWJvbC10eXBlLXBhcmFtZXRlciIsNjAwNTApLHN5bWJvbEtleTpoKCJzeW1ib2wta2V5Iiw2MDA1MSksc3ltYm9sVGV4dDpoKCJzeW1ib2wtdGV4dCIsNjAwNTEpLHN5bWJvbFJlZmVyZW5jZTpoKCJzeW1ib2wtcmVmZXJlbmNlIiw2MDA1MiksZ29Ub0ZpbGU6aCgiZ28tdG8tZmlsZSIsNjAwNTIpLHN5bWJvbEVudW06aCgic3ltYm9sLWVudW0iLDYwMDUzKSxzeW1ib2xWYWx1ZTpoKCJzeW1ib2wtdmFsdWUiLDYwMDUzKSxzeW1ib2xSdWxlcjpoKCJzeW1ib2wtcnVsZXIiLDYwMDU0KSxzeW1ib2xVbml0OmgoInN5bWJvbC11bml0Iiw2MDA1NCksYWN0aXZhdGVCcmVha3BvaW50czpoKCJhY3RpdmF0ZS1icmVha3BvaW50cyIsNjAwNTUpLGFyY2hpdmU6aCgiYXJjaGl2ZSIsNjAwNTYpLGFycm93Qm90aDpoKCJhcnJvdy1ib3RoIiw2MDA1NyksYXJyb3dEb3duOmgoImFycm93LWRvd24iLDYwMDU4KSxhcnJvd0xlZnQ6aCgiYXJyb3ctbGVmdCIsNjAwNTkpLGFycm93UmlnaHQ6aCgiYXJyb3ctcmlnaHQiLDYwMDYwKSxhcnJvd1NtYWxsRG93bjpoKCJhcnJvdy1zbWFsbC1kb3duIiw2MDA2MSksYXJyb3dTbWFsbExlZnQ6aCgiYXJyb3ctc21hbGwtbGVmdCIsNjAwNjIpLGFycm93U21hbGxSaWdodDpoKCJhcnJvdy1zbWFsbC1yaWdodCIsNjAwNjMpLGFycm93U21hbGxVcDpoKCJhcnJvdy1zbWFsbC11cCIsNjAwNjQpLGFycm93VXA6aCgiYXJyb3ctdXAiLDYwMDY1KSxiZWxsOmgoImJlbGwiLDYwMDY2KSxib2xkOmgoImJvbGQiLDYwMDY3KSxib29rOmgoImJvb2siLDYwMDY4KSxib29rbWFyazpoKCJib29rbWFyayIsNjAwNjkpLGRlYnVnQnJlYWtwb2ludENvbmRpdGlvbmFsVW52ZXJpZmllZDpoKCJkZWJ1Zy1icmVha3BvaW50LWNvbmRpdGlvbmFsLXVudmVyaWZpZWQiLDYwMDcwKSxkZWJ1Z0JyZWFrcG9pbnRDb25kaXRpb25hbDpoKCJkZWJ1Zy1icmVha3BvaW50LWNvbmRpdGlvbmFsIiw2MDA3MSksZGVidWdCcmVha3BvaW50Q29uZGl0aW9uYWxEaXNhYmxlZDpoKCJkZWJ1Zy1icmVha3BvaW50LWNvbmRpdGlvbmFsLWRpc2FibGVkIiw2MDA3MSksZGVidWdCcmVha3BvaW50RGF0YVVudmVyaWZpZWQ6aCgiZGVidWctYnJlYWtwb2ludC1kYXRhLXVudmVyaWZpZWQiLDYwMDcyKSxkZWJ1Z0JyZWFrcG9pbnREYXRhOmgoImRlYnVnLWJyZWFrcG9pbnQtZGF0YSIsNjAwNzMpLGRlYnVnQnJlYWtwb2ludERhdGFEaXNhYmxlZDpoKCJkZWJ1Zy1icmVha3BvaW50LWRhdGEtZGlzYWJsZWQiLDYwMDczKSxkZWJ1Z0JyZWFrcG9pbnRMb2dVbnZlcmlmaWVkOmgoImRlYnVnLWJyZWFrcG9pbnQtbG9nLXVudmVyaWZpZWQiLDYwMDc0KSxkZWJ1Z0JyZWFrcG9pbnRMb2c6aCgiZGVidWctYnJlYWtwb2ludC1sb2ciLDYwMDc1KSxkZWJ1Z0JyZWFrcG9pbnRMb2dEaXNhYmxlZDpoKCJkZWJ1Zy1icmVha3BvaW50LWxvZy1kaXNhYmxlZCIsNjAwNzUpLGJyaWVmY2FzZTpoKCJicmllZmNhc2UiLDYwMDc2KSxicm9hZGNhc3Q6aCgiYnJvYWRjYXN0Iiw2MDA3NyksYnJvd3NlcjpoKCJicm93c2VyIiw2MDA3OCksYnVnOmgoImJ1ZyIsNjAwNzkpLGNhbGVuZGFyOmgoImNhbGVuZGFyIiw2MDA4MCksY2FzZVNlbnNpdGl2ZTpoKCJjYXNlLXNlbnNpdGl2ZSIsNjAwODEpLGNoZWNrOmgoImNoZWNrIiw2MDA4MiksY2hlY2tsaXN0OmgoImNoZWNrbGlzdCIsNjAwODMpLGNoZXZyb25Eb3duOmgoImNoZXZyb24tZG93biIsNjAwODQpLGNoZXZyb25MZWZ0OmgoImNoZXZyb24tbGVmdCIsNjAwODUpLGNoZXZyb25SaWdodDpoKCJjaGV2cm9uLXJpZ2h0Iiw2MDA4NiksY2hldnJvblVwOmgoImNoZXZyb24tdXAiLDYwMDg3KSxjaHJvbWVDbG9zZTpoKCJjaHJvbWUtY2xvc2UiLDYwMDg4KSxjaHJvbWVNYXhpbWl6ZTpoKCJjaHJvbWUtbWF4aW1pemUiLDYwMDg5KSxjaHJvbWVNaW5pbWl6ZTpoKCJjaHJvbWUtbWluaW1pemUiLDYwMDkwKSxjaHJvbWVSZXN0b3JlOmgoImNocm9tZS1yZXN0b3JlIiw2MDA5MSksY2lyY2xlT3V0bGluZTpoKCJjaXJjbGUtb3V0bGluZSIsNjAwOTIpLGNpcmNsZTpoKCJjaXJjbGUiLDYwMDkyKSxkZWJ1Z0JyZWFrcG9pbnRVbnZlcmlmaWVkOmgoImRlYnVnLWJyZWFrcG9pbnQtdW52ZXJpZmllZCIsNjAwOTIpLHRlcm1pbmFsRGVjb3JhdGlvbkluY29tcGxldGU6aCgidGVybWluYWwtZGVjb3JhdGlvbi1pbmNvbXBsZXRlIiw2MDA5MiksY2lyY2xlU2xhc2g6aCgiY2lyY2xlLXNsYXNoIiw2MDA5MyksY2lyY3VpdEJvYXJkOmgoImNpcmN1aXQtYm9hcmQiLDYwMDk0KSxjbGVhckFsbDpoKCJjbGVhci1hbGwiLDYwMDk1KSxjbGlwcHk6aCgiY2xpcHB5Iiw2MDA5NiksY2xvc2VBbGw6aCgiY2xvc2UtYWxsIiw2MDA5NyksY2xvdWREb3dubG9hZDpoKCJjbG91ZC1kb3dubG9hZCIsNjAwOTgpLGNsb3VkVXBsb2FkOmgoImNsb3VkLXVwbG9hZCIsNjAwOTkpLGNvZGU6aCgiY29kZSIsNjAxMDApLGNvbGxhcHNlQWxsOmgoImNvbGxhcHNlLWFsbCIsNjAxMDEpLGNvbG9yTW9kZTpoKCJjb2xvci1tb2RlIiw2MDEwMiksY29tbWVudERpc2N1c3Npb246aCgiY29tbWVudC1kaXNjdXNzaW9uIiw2MDEwMyksY3JlZGl0Q2FyZDpoKCJjcmVkaXQtY2FyZCIsNjAxMDUpLGRhc2g6aCgiZGFzaCIsNjAxMDgpLGRhc2hib2FyZDpoKCJkYXNoYm9hcmQiLDYwMTA5KSxkYXRhYmFzZTpoKCJkYXRhYmFzZSIsNjAxMTApLGRlYnVnQ29udGludWU6aCgiZGVidWctY29udGludWUiLDYwMTExKSxkZWJ1Z0Rpc2Nvbm5lY3Q6aCgiZGVidWctZGlzY29ubmVjdCIsNjAxMTIpLGRlYnVnUGF1c2U6aCgiZGVidWctcGF1c2UiLDYwMTEzKSxkZWJ1Z1Jlc3RhcnQ6aCgiZGVidWctcmVzdGFydCIsNjAxMTQpLGRlYnVnU3RhcnQ6aCgiZGVidWctc3RhcnQiLDYwMTE1KSxkZWJ1Z1N0ZXBJbnRvOmgoImRlYnVnLXN0ZXAtaW50byIsNjAxMTYpLGRlYnVnU3RlcE91dDpoKCJkZWJ1Zy1zdGVwLW91dCIsNjAxMTcpLGRlYnVnU3RlcE92ZXI6aCgiZGVidWctc3RlcC1vdmVyIiw2MDExOCksZGVidWdTdG9wOmgoImRlYnVnLXN0b3AiLDYwMTE5KSxkZWJ1ZzpoKCJkZWJ1ZyIsNjAxMjApLGRldmljZUNhbWVyYVZpZGVvOmgoImRldmljZS1jYW1lcmEtdmlkZW8iLDYwMTIxKSxkZXZpY2VDYW1lcmE6aCgiZGV2aWNlLWNhbWVyYSIsNjAxMjIpLGRldmljZU1vYmlsZTpoKCJkZXZpY2UtbW9iaWxlIiw2MDEyMyksZGlmZkFkZGVkOmgoImRpZmYtYWRkZWQiLDYwMTI0KSxkaWZmSWdub3JlZDpoKCJkaWZmLWlnbm9yZWQiLDYwMTI1KSxkaWZmTW9kaWZpZWQ6aCgiZGlmZi1tb2RpZmllZCIsNjAxMjYpLGRpZmZSZW1vdmVkOmgoImRpZmYtcmVtb3ZlZCIsNjAxMjcpLGRpZmZSZW5hbWVkOmgoImRpZmYtcmVuYW1lZCIsNjAxMjgpLGRpZmY6aCgiZGlmZiIsNjAxMjkpLGRpZmZTaWRlYnlzaWRlOmgoImRpZmYtc2lkZWJ5c2lkZSIsNjAxMjkpLGRpc2NhcmQ6aCgiZGlzY2FyZCIsNjAxMzApLGVkaXRvckxheW91dDpoKCJlZGl0b3ItbGF5b3V0Iiw2MDEzMSksZW1wdHlXaW5kb3c6aCgiZW1wdHktd2luZG93Iiw2MDEzMiksZXhjbHVkZTpoKCJleGNsdWRlIiw2MDEzMyksZXh0ZW5zaW9uczpoKCJleHRlbnNpb25zIiw2MDEzNCksZXllQ2xvc2VkOmgoImV5ZS1jbG9zZWQiLDYwMTM1KSxmaWxlQmluYXJ5OmgoImZpbGUtYmluYXJ5Iiw2MDEzNiksZmlsZUNvZGU6aCgiZmlsZS1jb2RlIiw2MDEzNyksZmlsZU1lZGlhOmgoImZpbGUtbWVkaWEiLDYwMTM4KSxmaWxlUGRmOmgoImZpbGUtcGRmIiw2MDEzOSksZmlsZVN1Ym1vZHVsZTpoKCJmaWxlLXN1Ym1vZHVsZSIsNjAxNDApLGZpbGVTeW1saW5rRGlyZWN0b3J5OmgoImZpbGUtc3ltbGluay1kaXJlY3RvcnkiLDYwMTQxKSxmaWxlU3ltbGlua0ZpbGU6aCgiZmlsZS1zeW1saW5rLWZpbGUiLDYwMTQyKSxmaWxlWmlwOmgoImZpbGUtemlwIiw2MDE0MyksZmlsZXM6aCgiZmlsZXMiLDYwMTQ0KSxmaWx0ZXI6aCgiZmlsdGVyIiw2MDE0NSksZmxhbWU6aCgiZmxhbWUiLDYwMTQ2KSxmb2xkRG93bjpoKCJmb2xkLWRvd24iLDYwMTQ3KSxmb2xkVXA6aCgiZm9sZC11cCIsNjAxNDgpLGZvbGQ6aCgiZm9sZCIsNjAxNDkpLGZvbGRlckFjdGl2ZTpoKCJmb2xkZXItYWN0aXZlIiw2MDE1MCksZm9sZGVyT3BlbmVkOmgoImZvbGRlci1vcGVuZWQiLDYwMTUxKSxnZWFyOmgoImdlYXIiLDYwMTUyKSxnaWZ0OmgoImdpZnQiLDYwMTUzKSxnaXN0U2VjcmV0OmgoImdpc3Qtc2VjcmV0Iiw2MDE1NCksZ2lzdDpoKCJnaXN0Iiw2MDE1NSksZ2l0Q29tbWl0OmgoImdpdC1jb21taXQiLDYwMTU2KSxnaXRDb21wYXJlOmgoImdpdC1jb21wYXJlIiw2MDE1NyksY29tcGFyZUNoYW5nZXM6aCgiY29tcGFyZS1jaGFuZ2VzIiw2MDE1NyksZ2l0TWVyZ2U6aCgiZ2l0LW1lcmdlIiw2MDE1OCksZ2l0aHViQWN0aW9uOmgoImdpdGh1Yi1hY3Rpb24iLDYwMTU5KSxnaXRodWJBbHQ6aCgiZ2l0aHViLWFsdCIsNjAxNjApLGdsb2JlOmgoImdsb2JlIiw2MDE2MSksZ3JhYmJlcjpoKCJncmFiYmVyIiw2MDE2MiksZ3JhcGg6aCgiZ3JhcGgiLDYwMTYzKSxncmlwcGVyOmgoImdyaXBwZXIiLDYwMTY0KSxoZWFydDpoKCJoZWFydCIsNjAxNjUpLGhvbWU6aCgiaG9tZSIsNjAxNjYpLGhvcml6b250YWxSdWxlOmgoImhvcml6b250YWwtcnVsZSIsNjAxNjcpLGh1Ym90OmgoImh1Ym90Iiw2MDE2OCksaW5ib3g6aCgiaW5ib3giLDYwMTY5KSxpc3N1ZVJlb3BlbmVkOmgoImlzc3VlLXJlb3BlbmVkIiw2MDE3MSksaXNzdWVzOmgoImlzc3VlcyIsNjAxNzIpLGl0YWxpYzpoKCJpdGFsaWMiLDYwMTczKSxqZXJzZXk6aCgiamVyc2V5Iiw2MDE3NCksanNvbjpoKCJqc29uIiw2MDE3NSksa2ViYWJWZXJ0aWNhbDpoKCJrZWJhYi12ZXJ0aWNhbCIsNjAxNzYpLGtleTpoKCJrZXkiLDYwMTc3KSxsYXc6aCgibGF3Iiw2MDE3OCksbGlnaHRidWxiQXV0b2ZpeDpoKCJsaWdodGJ1bGItYXV0b2ZpeCIsNjAxNzkpLGxpbmtFeHRlcm5hbDpoKCJsaW5rLWV4dGVybmFsIiw2MDE4MCksbGluazpoKCJsaW5rIiw2MDE4MSksbGlzdE9yZGVyZWQ6aCgibGlzdC1vcmRlcmVkIiw2MDE4MiksbGlzdFVub3JkZXJlZDpoKCJsaXN0LXVub3JkZXJlZCIsNjAxODMpLGxpdmVTaGFyZTpoKCJsaXZlLXNoYXJlIiw2MDE4NCksbG9hZGluZzpoKCJsb2FkaW5nIiw2MDE4NSksbG9jYXRpb246aCgibG9jYXRpb24iLDYwMTg2KSxtYWlsUmVhZDpoKCJtYWlsLXJlYWQiLDYwMTg3KSxtYWlsOmgoIm1haWwiLDYwMTg4KSxtYXJrZG93bjpoKCJtYXJrZG93biIsNjAxODkpLG1lZ2FwaG9uZTpoKCJtZWdhcGhvbmUiLDYwMTkwKSxtZW50aW9uOmgoIm1lbnRpb24iLDYwMTkxKSxtaWxlc3RvbmU6aCgibWlsZXN0b25lIiw2MDE5MiksZ2l0UHVsbFJlcXVlc3RNaWxlc3RvbmU6aCgiZ2l0LXB1bGwtcmVxdWVzdC1taWxlc3RvbmUiLDYwMTkyKSxtb3J0YXJCb2FyZDpoKCJtb3J0YXItYm9hcmQiLDYwMTkzKSxtb3ZlOmgoIm1vdmUiLDYwMTk0KSxtdWx0aXBsZVdpbmRvd3M6aCgibXVsdGlwbGUtd2luZG93cyIsNjAxOTUpLG11dGU6aCgibXV0ZSIsNjAxOTYpLG5vTmV3bGluZTpoKCJuby1uZXdsaW5lIiw2MDE5Nyksbm90ZTpoKCJub3RlIiw2MDE5OCksb2N0b2ZhY2U6aCgib2N0b2ZhY2UiLDYwMTk5KSxvcGVuUHJldmlldzpoKCJvcGVuLXByZXZpZXciLDYwMjAwKSxwYWNrYWdlOmgoInBhY2thZ2UiLDYwMjAxKSxwYWludGNhbjpoKCJwYWludGNhbiIsNjAyMDIpLHBpbjpoKCJwaW4iLDYwMjAzKSxwbGF5OmgoInBsYXkiLDYwMjA0KSxydW46aCgicnVuIiw2MDIwNCkscGx1ZzpoKCJwbHVnIiw2MDIwNSkscHJlc2VydmVDYXNlOmgoInByZXNlcnZlLWNhc2UiLDYwMjA2KSxwcmV2aWV3OmgoInByZXZpZXciLDYwMjA3KSxwcm9qZWN0OmgoInByb2plY3QiLDYwMjA4KSxwdWxzZTpoKCJwdWxzZSIsNjAyMDkpLHF1ZXN0aW9uOmgoInF1ZXN0aW9uIiw2MDIxMCkscXVvdGU6aCgicXVvdGUiLDYwMjExKSxyYWRpb1Rvd2VyOmgoInJhZGlvLXRvd2VyIiw2MDIxMikscmVhY3Rpb25zOmgoInJlYWN0aW9ucyIsNjAyMTMpLHJlZmVyZW5jZXM6aCgicmVmZXJlbmNlcyIsNjAyMTQpLHJlZnJlc2g6aCgicmVmcmVzaCIsNjAyMTUpLHJlZ2V4OmgoInJlZ2V4Iiw2MDIxNikscmVtb3RlRXhwbG9yZXI6aCgicmVtb3RlLWV4cGxvcmVyIiw2MDIxNykscmVtb3RlOmgoInJlbW90ZSIsNjAyMTgpLHJlbW92ZTpoKCJyZW1vdmUiLDYwMjE5KSxyZXBsYWNlQWxsOmgoInJlcGxhY2UtYWxsIiw2MDIyMCkscmVwbGFjZTpoKCJyZXBsYWNlIiw2MDIyMSkscmVwb0Nsb25lOmgoInJlcG8tY2xvbmUiLDYwMjIyKSxyZXBvRm9yY2VQdXNoOmgoInJlcG8tZm9yY2UtcHVzaCIsNjAyMjMpLHJlcG9QdWxsOmgoInJlcG8tcHVsbCIsNjAyMjQpLHJlcG9QdXNoOmgoInJlcG8tcHVzaCIsNjAyMjUpLHJlcG9ydDpoKCJyZXBvcnQiLDYwMjI2KSxyZXF1ZXN0Q2hhbmdlczpoKCJyZXF1ZXN0LWNoYW5nZXMiLDYwMjI3KSxyb2NrZXQ6aCgicm9ja2V0Iiw2MDIyOCkscm9vdEZvbGRlck9wZW5lZDpoKCJyb290LWZvbGRlci1vcGVuZWQiLDYwMjI5KSxyb290Rm9sZGVyOmgoInJvb3QtZm9sZGVyIiw2MDIzMCkscnNzOmgoInJzcyIsNjAyMzEpLHJ1Ynk6aCgicnVieSIsNjAyMzIpLHNhdmVBbGw6aCgic2F2ZS1hbGwiLDYwMjMzKSxzYXZlQXM6aCgic2F2ZS1hcyIsNjAyMzQpLHNhdmU6aCgic2F2ZSIsNjAyMzUpLHNjcmVlbkZ1bGw6aCgic2NyZWVuLWZ1bGwiLDYwMjM2KSxzY3JlZW5Ob3JtYWw6aCgic2NyZWVuLW5vcm1hbCIsNjAyMzcpLHNlYXJjaFN0b3A6aCgic2VhcmNoLXN0b3AiLDYwMjM4KSxzZXJ2ZXI6aCgic2VydmVyIiw2MDI0MCksc2V0dGluZ3NHZWFyOmgoInNldHRpbmdzLWdlYXIiLDYwMjQxKSxzZXR0aW5nczpoKCJzZXR0aW5ncyIsNjAyNDIpLHNoaWVsZDpoKCJzaGllbGQiLDYwMjQzKSxzbWlsZXk6aCgic21pbGV5Iiw2MDI0NCksc29ydFByZWNlZGVuY2U6aCgic29ydC1wcmVjZWRlbmNlIiw2MDI0NSksc3BsaXRIb3Jpem9udGFsOmgoInNwbGl0LWhvcml6b250YWwiLDYwMjQ2KSxzcGxpdFZlcnRpY2FsOmgoInNwbGl0LXZlcnRpY2FsIiw2MDI0Nyksc3F1aXJyZWw6aCgic3F1aXJyZWwiLDYwMjQ4KSxzdGFyRnVsbDpoKCJzdGFyLWZ1bGwiLDYwMjQ5KSxzdGFySGFsZjpoKCJzdGFyLWhhbGYiLDYwMjUwKSxzeW1ib2xDbGFzczpoKCJzeW1ib2wtY2xhc3MiLDYwMjUxKSxzeW1ib2xDb2xvcjpoKCJzeW1ib2wtY29sb3IiLDYwMjUyKSxzeW1ib2xDb25zdGFudDpoKCJzeW1ib2wtY29uc3RhbnQiLDYwMjUzKSxzeW1ib2xFbnVtTWVtYmVyOmgoInN5bWJvbC1lbnVtLW1lbWJlciIsNjAyNTQpLHN5bWJvbEZpZWxkOmgoInN5bWJvbC1maWVsZCIsNjAyNTUpLHN5bWJvbEZpbGU6aCgic3ltYm9sLWZpbGUiLDYwMjU2KSxzeW1ib2xJbnRlcmZhY2U6aCgic3ltYm9sLWludGVyZmFjZSIsNjAyNTcpLHN5bWJvbEtleXdvcmQ6aCgic3ltYm9sLWtleXdvcmQiLDYwMjU4KSxzeW1ib2xNaXNjOmgoInN5bWJvbC1taXNjIiw2MDI1OSksc3ltYm9sT3BlcmF0b3I6aCgic3ltYm9sLW9wZXJhdG9yIiw2MDI2MCksc3ltYm9sUHJvcGVydHk6aCgic3ltYm9sLXByb3BlcnR5Iiw2MDI2MSksd3JlbmNoOmgoIndyZW5jaCIsNjAyNjEpLHdyZW5jaFN1YmFjdGlvbjpoKCJ3cmVuY2gtc3ViYWN0aW9uIiw2MDI2MSksc3ltYm9sU25pcHBldDpoKCJzeW1ib2wtc25pcHBldCIsNjAyNjIpLHRhc2tsaXN0OmgoInRhc2tsaXN0Iiw2MDI2MyksdGVsZXNjb3BlOmgoInRlbGVzY29wZSIsNjAyNjQpLHRleHRTaXplOmgoInRleHQtc2l6ZSIsNjAyNjUpLHRocmVlQmFyczpoKCJ0aHJlZS1iYXJzIiw2MDI2NiksdGh1bWJzZG93bjpoKCJ0aHVtYnNkb3duIiw2MDI2NyksdGh1bWJzdXA6aCgidGh1bWJzdXAiLDYwMjY4KSx0b29sczpoKCJ0b29scyIsNjAyNjkpLHRyaWFuZ2xlRG93bjpoKCJ0cmlhbmdsZS1kb3duIiw2MDI3MCksdHJpYW5nbGVMZWZ0OmgoInRyaWFuZ2xlLWxlZnQiLDYwMjcxKSx0cmlhbmdsZVJpZ2h0OmgoInRyaWFuZ2xlLXJpZ2h0Iiw2MDI3MiksdHJpYW5nbGVVcDpoKCJ0cmlhbmdsZS11cCIsNjAyNzMpLHR3aXR0ZXI6aCgidHdpdHRlciIsNjAyNzQpLHVuZm9sZDpoKCJ1bmZvbGQiLDYwMjc1KSx1bmxvY2s6aCgidW5sb2NrIiw2MDI3NiksdW5tdXRlOmgoInVubXV0ZSIsNjAyNzcpLHVudmVyaWZpZWQ6aCgidW52ZXJpZmllZCIsNjAyNzgpLHZlcmlmaWVkOmgoInZlcmlmaWVkIiw2MDI3OSksdmVyc2lvbnM6aCgidmVyc2lvbnMiLDYwMjgwKSx2bUFjdGl2ZTpoKCJ2bS1hY3RpdmUiLDYwMjgxKSx2bU91dGxpbmU6aCgidm0tb3V0bGluZSIsNjAyODIpLHZtUnVubmluZzpoKCJ2bS1ydW5uaW5nIiw2MDI4Myksd2F0Y2g6aCgid2F0Y2giLDYwMjg0KSx3aGl0ZXNwYWNlOmgoIndoaXRlc3BhY2UiLDYwMjg1KSx3aG9sZVdvcmQ6aCgid2hvbGUtd29yZCIsNjAyODYpLHdpbmRvdzpoKCJ3aW5kb3ciLDYwMjg3KSx3b3JkV3JhcDpoKCJ3b3JkLXdyYXAiLDYwMjg4KSx6b29tSW46aCgiem9vbS1pbiIsNjAyODkpLHpvb21PdXQ6aCgiem9vbS1vdXQiLDYwMjkwKSxsaXN0RmlsdGVyOmgoImxpc3QtZmlsdGVyIiw2MDI5MSksbGlzdEZsYXQ6aCgibGlzdC1mbGF0Iiw2MDI5MiksbGlzdFNlbGVjdGlvbjpoKCJsaXN0LXNlbGVjdGlvbiIsNjAyOTMpLHNlbGVjdGlvbjpoKCJzZWxlY3Rpb24iLDYwMjkzKSxsaXN0VHJlZTpoKCJsaXN0LXRyZWUiLDYwMjk0KSxkZWJ1Z0JyZWFrcG9pbnRGdW5jdGlvblVudmVyaWZpZWQ6aCgiZGVidWctYnJlYWtwb2ludC1mdW5jdGlvbi11bnZlcmlmaWVkIiw2MDI5NSksZGVidWdCcmVha3BvaW50RnVuY3Rpb246aCgiZGVidWctYnJlYWtwb2ludC1mdW5jdGlvbiIsNjAyOTYpLGRlYnVnQnJlYWtwb2ludEZ1bmN0aW9uRGlzYWJsZWQ6aCgiZGVidWctYnJlYWtwb2ludC1mdW5jdGlvbi1kaXNhYmxlZCIsNjAyOTYpLGRlYnVnU3RhY2tmcmFtZUFjdGl2ZTpoKCJkZWJ1Zy1zdGFja2ZyYW1lLWFjdGl2ZSIsNjAyOTcpLGNpcmNsZVNtYWxsRmlsbGVkOmgoImNpcmNsZS1zbWFsbC1maWxsZWQiLDYwMjk4KSxkZWJ1Z1N0YWNrZnJhbWVEb3Q6aCgiZGVidWctc3RhY2tmcmFtZS1kb3QiLDYwMjk4KSx0ZXJtaW5hbERlY29yYXRpb25NYXJrOmgoInRlcm1pbmFsLWRlY29yYXRpb24tbWFyayIsNjAyOTgpLGRlYnVnU3RhY2tmcmFtZTpoKCJkZWJ1Zy1zdGFja2ZyYW1lIiw2MDI5OSksZGVidWdTdGFja2ZyYW1lRm9jdXNlZDpoKCJkZWJ1Zy1zdGFja2ZyYW1lLWZvY3VzZWQiLDYwMjk5KSxkZWJ1Z0JyZWFrcG9pbnRVbnN1cHBvcnRlZDpoKCJkZWJ1Zy1icmVha3BvaW50LXVuc3VwcG9ydGVkIiw2MDMwMCksc3ltYm9sU3RyaW5nOmgoInN5bWJvbC1zdHJpbmciLDYwMzAxKSxkZWJ1Z1JldmVyc2VDb250aW51ZTpoKCJkZWJ1Zy1yZXZlcnNlLWNvbnRpbnVlIiw2MDMwMiksZGVidWdTdGVwQmFjazpoKCJkZWJ1Zy1zdGVwLWJhY2siLDYwMzAzKSxkZWJ1Z1Jlc3RhcnRGcmFtZTpoKCJkZWJ1Zy1yZXN0YXJ0LWZyYW1lIiw2MDMwNCksZGVidWdBbHQ6aCgiZGVidWctYWx0Iiw2MDMwNSksY2FsbEluY29taW5nOmgoImNhbGwtaW5jb21pbmciLDYwMzA2KSxjYWxsT3V0Z29pbmc6aCgiY2FsbC1vdXRnb2luZyIsNjAzMDcpLG1lbnU6aCgibWVudSIsNjAzMDgpLGV4cGFuZEFsbDpoKCJleHBhbmQtYWxsIiw2MDMwOSksZmVlZGJhY2s6aCgiZmVlZGJhY2siLDYwMzEwKSxnaXRQdWxsUmVxdWVzdFJldmlld2VyOmgoImdpdC1wdWxsLXJlcXVlc3QtcmV2aWV3ZXIiLDYwMzEwKSxncm91cEJ5UmVmVHlwZTpoKCJncm91cC1ieS1yZWYtdHlwZSIsNjAzMTEpLHVuZ3JvdXBCeVJlZlR5cGU6aCgidW5ncm91cC1ieS1yZWYtdHlwZSIsNjAzMTIpLGFjY291bnQ6aCgiYWNjb3VudCIsNjAzMTMpLGdpdFB1bGxSZXF1ZXN0QXNzaWduZWU6aCgiZ2l0LXB1bGwtcmVxdWVzdC1hc3NpZ25lZSIsNjAzMTMpLGJlbGxEb3Q6aCgiYmVsbC1kb3QiLDYwMzE0KSxkZWJ1Z0NvbnNvbGU6aCgiZGVidWctY29uc29sZSIsNjAzMTUpLGxpYnJhcnk6aCgibGlicmFyeSIsNjAzMTYpLG91dHB1dDpoKCJvdXRwdXQiLDYwMzE3KSxydW5BbGw6aCgicnVuLWFsbCIsNjAzMTgpLHN5bmNJZ25vcmVkOmgoInN5bmMtaWdub3JlZCIsNjAzMTkpLHBpbm5lZDpoKCJwaW5uZWQiLDYwMzIwKSxnaXRodWJJbnZlcnRlZDpoKCJnaXRodWItaW52ZXJ0ZWQiLDYwMzIxKSxzZXJ2ZXJQcm9jZXNzOmgoInNlcnZlci1wcm9jZXNzIiw2MDMyMiksc2VydmVyRW52aXJvbm1lbnQ6aCgic2VydmVyLWVudmlyb25tZW50Iiw2MDMyMykscGFzczpoKCJwYXNzIiw2MDMyNCksaXNzdWVDbG9zZWQ6aCgiaXNzdWUtY2xvc2VkIiw2MDMyNCksc3RvcENpcmNsZTpoKCJzdG9wLWNpcmNsZSIsNjAzMjUpLHBsYXlDaXJjbGU6aCgicGxheS1jaXJjbGUiLDYwMzI2KSxyZWNvcmQ6aCgicmVjb3JkIiw2MDMyNyksZGVidWdBbHRTbWFsbDpoKCJkZWJ1Zy1hbHQtc21hbGwiLDYwMzI4KSx2bUNvbm5lY3Q6aCgidm0tY29ubmVjdCIsNjAzMjkpLGNsb3VkOmgoImNsb3VkIiw2MDMzMCksbWVyZ2U6aCgibWVyZ2UiLDYwMzMxKSxleHBvcnQ6aCgiZXhwb3J0Iiw2MDMzMiksZ3JhcGhMZWZ0OmgoImdyYXBoLWxlZnQiLDYwMzMzKSxtYWduZXQ6aCgibWFnbmV0Iiw2MDMzNCksbm90ZWJvb2s6aCgibm90ZWJvb2siLDYwMzM1KSxyZWRvOmgoInJlZG8iLDYwMzM2KSxjaGVja0FsbDpoKCJjaGVjay1hbGwiLDYwMzM3KSxwaW5uZWREaXJ0eTpoKCJwaW5uZWQtZGlydHkiLDYwMzM4KSxwYXNzRmlsbGVkOmgoInBhc3MtZmlsbGVkIiw2MDMzOSksY2lyY2xlTGFyZ2VGaWxsZWQ6aCgiY2lyY2xlLWxhcmdlLWZpbGxlZCIsNjAzNDApLGNpcmNsZUxhcmdlOmgoImNpcmNsZS1sYXJnZSIsNjAzNDEpLGNpcmNsZUxhcmdlT3V0bGluZTpoKCJjaXJjbGUtbGFyZ2Utb3V0bGluZSIsNjAzNDEpLGNvbWJpbmU6aCgiY29tYmluZSIsNjAzNDIpLGdhdGhlcjpoKCJnYXRoZXIiLDYwMzQyKSx0YWJsZTpoKCJ0YWJsZSIsNjAzNDMpLHZhcmlhYmxlR3JvdXA6aCgidmFyaWFibGUtZ3JvdXAiLDYwMzQ0KSx0eXBlSGllcmFyY2h5OmgoInR5cGUtaGllcmFyY2h5Iiw2MDM0NSksdHlwZUhpZXJhcmNoeVN1YjpoKCJ0eXBlLWhpZXJhcmNoeS1zdWIiLDYwMzQ2KSx0eXBlSGllcmFyY2h5U3VwZXI6aCgidHlwZS1oaWVyYXJjaHktc3VwZXIiLDYwMzQ3KSxnaXRQdWxsUmVxdWVzdENyZWF0ZTpoKCJnaXQtcHVsbC1yZXF1ZXN0LWNyZWF0ZSIsNjAzNDgpLHJ1bkFib3ZlOmgoInJ1bi1hYm92ZSIsNjAzNDkpLHJ1bkJlbG93OmgoInJ1bi1iZWxvdyIsNjAzNTApLG5vdGVib29rVGVtcGxhdGU6aCgibm90ZWJvb2stdGVtcGxhdGUiLDYwMzUxKSxkZWJ1Z1JlcnVuOmgoImRlYnVnLXJlcnVuIiw2MDM1Miksd29ya3NwYWNlVHJ1c3RlZDpoKCJ3b3Jrc3BhY2UtdHJ1c3RlZCIsNjAzNTMpLHdvcmtzcGFjZVVudHJ1c3RlZDpoKCJ3b3Jrc3BhY2UtdW50cnVzdGVkIiw2MDM1NCksd29ya3NwYWNlVW5rbm93bjpoKCJ3b3Jrc3BhY2UtdW5rbm93biIsNjAzNTUpLHRlcm1pbmFsQ21kOmgoInRlcm1pbmFsLWNtZCIsNjAzNTYpLHRlcm1pbmFsRGViaWFuOmgoInRlcm1pbmFsLWRlYmlhbiIsNjAzNTcpLHRlcm1pbmFsTGludXg6aCgidGVybWluYWwtbGludXgiLDYwMzU4KSx0ZXJtaW5hbFBvd2Vyc2hlbGw6aCgidGVybWluYWwtcG93ZXJzaGVsbCIsNjAzNTkpLHRlcm1pbmFsVG11eDpoKCJ0ZXJtaW5hbC10bXV4Iiw2MDM2MCksdGVybWluYWxVYnVudHU6aCgidGVybWluYWwtdWJ1bnR1Iiw2MDM2MSksdGVybWluYWxCYXNoOmgoInRlcm1pbmFsLWJhc2giLDYwMzYyKSxhcnJvd1N3YXA6aCgiYXJyb3ctc3dhcCIsNjAzNjMpLGNvcHk6aCgiY29weSIsNjAzNjQpLHBlcnNvbkFkZDpoKCJwZXJzb24tYWRkIiw2MDM2NSksZmlsdGVyRmlsbGVkOmgoImZpbHRlci1maWxsZWQiLDYwMzY2KSx3YW5kOmgoIndhbmQiLDYwMzY3KSxkZWJ1Z0xpbmVCeUxpbmU6aCgiZGVidWctbGluZS1ieS1saW5lIiw2MDM2OCksaW5zcGVjdDpoKCJpbnNwZWN0Iiw2MDM2OSksbGF5ZXJzOmgoImxheWVycyIsNjAzNzApLGxheWVyc0RvdDpoKCJsYXllcnMtZG90Iiw2MDM3MSksbGF5ZXJzQWN0aXZlOmgoImxheWVycy1hY3RpdmUiLDYwMzcyKSxjb21wYXNzOmgoImNvbXBhc3MiLDYwMzczKSxjb21wYXNzRG90OmgoImNvbXBhc3MtZG90Iiw2MDM3NCksY29tcGFzc0FjdGl2ZTpoKCJjb21wYXNzLWFjdGl2ZSIsNjAzNzUpLGF6dXJlOmgoImF6dXJlIiw2MDM3NiksaXNzdWVEcmFmdDpoKCJpc3N1ZS1kcmFmdCIsNjAzNzcpLGdpdFB1bGxSZXF1ZXN0Q2xvc2VkOmgoImdpdC1wdWxsLXJlcXVlc3QtY2xvc2VkIiw2MDM3OCksZ2l0UHVsbFJlcXVlc3REcmFmdDpoKCJnaXQtcHVsbC1yZXF1ZXN0LWRyYWZ0Iiw2MDM3OSksZGVidWdBbGw6aCgiZGVidWctYWxsIiw2MDM4MCksZGVidWdDb3ZlcmFnZTpoKCJkZWJ1Zy1jb3ZlcmFnZSIsNjAzODEpLHJ1bkVycm9yczpoKCJydW4tZXJyb3JzIiw2MDM4MiksZm9sZGVyTGlicmFyeTpoKCJmb2xkZXItbGlicmFyeSIsNjAzODMpLGRlYnVnQ29udGludWVTbWFsbDpoKCJkZWJ1Zy1jb250aW51ZS1zbWFsbCIsNjAzODQpLGJlYWtlclN0b3A6aCgiYmVha2VyLXN0b3AiLDYwMzg1KSxncmFwaExpbmU6aCgiZ3JhcGgtbGluZSIsNjAzODYpLGdyYXBoU2NhdHRlcjpoKCJncmFwaC1zY2F0dGVyIiw2MDM4NykscGllQ2hhcnQ6aCgicGllLWNoYXJ0Iiw2MDM4OCksYnJhY2tldDpoKCJicmFja2V0Iiw2MDE3NSksYnJhY2tldERvdDpoKCJicmFja2V0LWRvdCIsNjAzODkpLGJyYWNrZXRFcnJvcjpoKCJicmFja2V0LWVycm9yIiw2MDM5MCksbG9ja1NtYWxsOmgoImxvY2stc21hbGwiLDYwMzkxKSxhenVyZURldm9wczpoKCJhenVyZS1kZXZvcHMiLDYwMzkyKSx2ZXJpZmllZEZpbGxlZDpoKCJ2ZXJpZmllZC1maWxsZWQiLDYwMzkzKSxuZXdsaW5lOmgoIm5ld2xpbmUiLDYwMzk0KSxsYXlvdXQ6aCgibGF5b3V0Iiw2MDM5NSksbGF5b3V0QWN0aXZpdHliYXJMZWZ0OmgoImxheW91dC1hY3Rpdml0eWJhci1sZWZ0Iiw2MDM5NiksbGF5b3V0QWN0aXZpdHliYXJSaWdodDpoKCJsYXlvdXQtYWN0aXZpdHliYXItcmlnaHQiLDYwMzk3KSxsYXlvdXRQYW5lbExlZnQ6aCgibGF5b3V0LXBhbmVsLWxlZnQiLDYwMzk4KSxsYXlvdXRQYW5lbENlbnRlcjpoKCJsYXlvdXQtcGFuZWwtY2VudGVyIiw2MDM5OSksbGF5b3V0UGFuZWxKdXN0aWZ5OmgoImxheW91dC1wYW5lbC1qdXN0aWZ5Iiw2MDQwMCksbGF5b3V0UGFuZWxSaWdodDpoKCJsYXlvdXQtcGFuZWwtcmlnaHQiLDYwNDAxKSxsYXlvdXRQYW5lbDpoKCJsYXlvdXQtcGFuZWwiLDYwNDAyKSxsYXlvdXRTaWRlYmFyTGVmdDpoKCJsYXlvdXQtc2lkZWJhci1sZWZ0Iiw2MDQwMyksbGF5b3V0U2lkZWJhclJpZ2h0OmgoImxheW91dC1zaWRlYmFyLXJpZ2h0Iiw2MDQwNCksbGF5b3V0U3RhdHVzYmFyOmgoImxheW91dC1zdGF0dXNiYXIiLDYwNDA1KSxsYXlvdXRNZW51YmFyOmgoImxheW91dC1tZW51YmFyIiw2MDQwNiksbGF5b3V0Q2VudGVyZWQ6aCgibGF5b3V0LWNlbnRlcmVkIiw2MDQwNyksdGFyZ2V0OmgoInRhcmdldCIsNjA0MDgpLGluZGVudDpoKCJpbmRlbnQiLDYwNDA5KSxyZWNvcmRTbWFsbDpoKCJyZWNvcmQtc21hbGwiLDYwNDEwKSxlcnJvclNtYWxsOmgoImVycm9yLXNtYWxsIiw2MDQxMSksdGVybWluYWxEZWNvcmF0aW9uRXJyb3I6aCgidGVybWluYWwtZGVjb3JhdGlvbi1lcnJvciIsNjA0MTEpLGFycm93Q2lyY2xlRG93bjpoKCJhcnJvdy1jaXJjbGUtZG93biIsNjA0MTIpLGFycm93Q2lyY2xlTGVmdDpoKCJhcnJvdy1jaXJjbGUtbGVmdCIsNjA0MTMpLGFycm93Q2lyY2xlUmlnaHQ6aCgiYXJyb3ctY2lyY2xlLXJpZ2h0Iiw2MDQxNCksYXJyb3dDaXJjbGVVcDpoKCJhcnJvdy1jaXJjbGUtdXAiLDYwNDE1KSxsYXlvdXRTaWRlYmFyUmlnaHRPZmY6aCgibGF5b3V0LXNpZGViYXItcmlnaHQtb2ZmIiw2MDQxNiksbGF5b3V0UGFuZWxPZmY6aCgibGF5b3V0LXBhbmVsLW9mZiIsNjA0MTcpLGxheW91dFNpZGViYXJMZWZ0T2ZmOmgoImxheW91dC1zaWRlYmFyLWxlZnQtb2ZmIiw2MDQxOCksYmxhbms6aCgiYmxhbmsiLDYwNDE5KSxoZWFydEZpbGxlZDpoKCJoZWFydC1maWxsZWQiLDYwNDIwKSxtYXA6aCgibWFwIiw2MDQyMSksbWFwSG9yaXpvbnRhbDpoKCJtYXAtaG9yaXpvbnRhbCIsNjA0MjEpLGZvbGRIb3Jpem9udGFsOmgoImZvbGQtaG9yaXpvbnRhbCIsNjA0MjEpLG1hcEZpbGxlZDpoKCJtYXAtZmlsbGVkIiw2MDQyMiksbWFwSG9yaXpvbnRhbEZpbGxlZDpoKCJtYXAtaG9yaXpvbnRhbC1maWxsZWQiLDYwNDIyKSxmb2xkSG9yaXpvbnRhbEZpbGxlZDpoKCJmb2xkLWhvcml6b250YWwtZmlsbGVkIiw2MDQyMiksY2lyY2xlU21hbGw6aCgiY2lyY2xlLXNtYWxsIiw2MDQyMyksYmVsbFNsYXNoOmgoImJlbGwtc2xhc2giLDYwNDI0KSxiZWxsU2xhc2hEb3Q6aCgiYmVsbC1zbGFzaC1kb3QiLDYwNDI1KSxjb21tZW50VW5yZXNvbHZlZDpoKCJjb21tZW50LXVucmVzb2x2ZWQiLDYwNDI2KSxnaXRQdWxsUmVxdWVzdEdvVG9DaGFuZ2VzOmgoImdpdC1wdWxsLXJlcXVlc3QtZ28tdG8tY2hhbmdlcyIsNjA0MjcpLGdpdFB1bGxSZXF1ZXN0TmV3Q2hhbmdlczpoKCJnaXQtcHVsbC1yZXF1ZXN0LW5ldy1jaGFuZ2VzIiw2MDQyOCksc2VhcmNoRnV6enk6aCgic2VhcmNoLWZ1enp5Iiw2MDQyOSksY29tbWVudERyYWZ0OmgoImNvbW1lbnQtZHJhZnQiLDYwNDMwKSxzZW5kOmgoInNlbmQiLDYwNDMxKSxzcGFya2xlOmgoInNwYXJrbGUiLDYwNDMyKSxpbnNlcnQ6aCgiaW5zZXJ0Iiw2MDQzMyksbWljOmgoIm1pYyIsNjA0MzQpLHRodW1ic2Rvd25GaWxsZWQ6aCgidGh1bWJzZG93bi1maWxsZWQiLDYwNDM1KSx0aHVtYnN1cEZpbGxlZDpoKCJ0aHVtYnN1cC1maWxsZWQiLDYwNDM2KSxjb2ZmZWU6aCgiY29mZmVlIiw2MDQzNyksc25ha2U6aCgic25ha2UiLDYwNDM4KSxnYW1lOmgoImdhbWUiLDYwNDM5KSx2cjpoKCJ2ciIsNjA0NDApLGNoaXA6aCgiY2hpcCIsNjA0NDEpLHBpYW5vOmgoInBpYW5vIiw2MDQ0MiksbXVzaWM6aCgibXVzaWMiLDYwNDQzKSxtaWNGaWxsZWQ6aCgibWljLWZpbGxlZCIsNjA0NDQpLHJlcG9GZXRjaDpoKCJyZXBvLWZldGNoIiw2MDQ0NSksY29waWxvdDpoKCJjb3BpbG90Iiw2MDQ0NiksbGlnaHRidWxiU3BhcmtsZTpoKCJsaWdodGJ1bGItc3BhcmtsZSIsNjA0NDcpLHJvYm90OmgoInJvYm90Iiw2MDQ0OCksc3BhcmtsZUZpbGxlZDpoKCJzcGFya2xlLWZpbGxlZCIsNjA0NDkpLGRpZmZTaW5nbGU6aCgiZGlmZi1zaW5nbGUiLDYwNDUwKSxkaWZmTXVsdGlwbGU6aCgiZGlmZi1tdWx0aXBsZSIsNjA0NTEpLHN1cnJvdW5kV2l0aDpoKCJzdXJyb3VuZC13aXRoIiw2MDQ1Miksc2hhcmU6aCgic2hhcmUiLDYwNDUzKSxnaXRTdGFzaDpoKCJnaXQtc3Rhc2giLDYwNDU0KSxnaXRTdGFzaEFwcGx5OmgoImdpdC1zdGFzaC1hcHBseSIsNjA0NTUpLGdpdFN0YXNoUG9wOmgoImdpdC1zdGFzaC1wb3AiLDYwNDU2KSx2c2NvZGU6aCgidnNjb2RlIiw2MDQ1NyksdnNjb2RlSW5zaWRlcnM6aCgidnNjb2RlLWluc2lkZXJzIiw2MDQ1OCksY29kZU9zczpoKCJjb2RlLW9zcyIsNjA0NTkpLHJ1bkNvdmVyYWdlOmgoInJ1bi1jb3ZlcmFnZSIsNjA0NjApLHJ1bkFsbENvdmVyYWdlOmgoInJ1bi1hbGwtY292ZXJhZ2UiLDYwNDYxKSxjb3ZlcmFnZTpoKCJjb3ZlcmFnZSIsNjA0NjIpLGdpdGh1YlByb2plY3Q6aCgiZ2l0aHViLXByb2plY3QiLDYwNDYzKSxtYXBWZXJ0aWNhbDpoKCJtYXAtdmVydGljYWwiLDYwNDY0KSxmb2xkVmVydGljYWw6aCgiZm9sZC12ZXJ0aWNhbCIsNjA0NjQpLG1hcFZlcnRpY2FsRmlsbGVkOmgoIm1hcC12ZXJ0aWNhbC1maWxsZWQiLDYwNDY1KSxmb2xkVmVydGljYWxGaWxsZWQ6aCgiZm9sZC12ZXJ0aWNhbC1maWxsZWQiLDYwNDY1KSxnb1RvU2VhcmNoOmgoImdvLXRvLXNlYXJjaCIsNjA0NjYpLHBlcmNlbnRhZ2U6aCgicGVyY2VudGFnZSIsNjA0NjcpLHNvcnRQZXJjZW50YWdlOmgoInNvcnQtcGVyY2VudGFnZSIsNjA0NjcpLGF0dGFjaDpoKCJhdHRhY2giLDYwNDY4KX0sQWQ9e2RpYWxvZ0Vycm9yOmgoImRpYWxvZy1lcnJvciIsImVycm9yIiksZGlhbG9nV2FybmluZzpoKCJkaWFsb2ctd2FybmluZyIsIndhcm5pbmciKSxkaWFsb2dJbmZvOmgoImRpYWxvZy1pbmZvIiwiaW5mbyIpLGRpYWxvZ0Nsb3NlOmgoImRpYWxvZy1jbG9zZSIsImNsb3NlIiksdHJlZUl0ZW1FeHBhbmRlZDpoKCJ0cmVlLWl0ZW0tZXhwYW5kZWQiLCJjaGV2cm9uLWRvd24iKSx0cmVlRmlsdGVyT25UeXBlT246aCgidHJlZS1maWx0ZXItb24tdHlwZS1vbiIsImxpc3QtZmlsdGVyIiksdHJlZUZpbHRlck9uVHlwZU9mZjpoKCJ0cmVlLWZpbHRlci1vbi10eXBlLW9mZiIsImxpc3Qtc2VsZWN0aW9uIiksdHJlZUZpbHRlckNsZWFyOmgoInRyZWUtZmlsdGVyLWNsZWFyIiwiY2xvc2UiKSx0cmVlSXRlbUxvYWRpbmc6aCgidHJlZS1pdGVtLWxvYWRpbmciLCJsb2FkaW5nIiksbWVudVNlbGVjdGlvbjpoKCJtZW51LXNlbGVjdGlvbiIsImNoZWNrIiksbWVudVN1Ym1lbnU6aCgibWVudS1zdWJtZW51IiwiY2hldnJvbi1yaWdodCIpLG1lbnVCYXJNb3JlOmgoIm1lbnViYXItbW9yZSIsIm1vcmUiKSxzY3JvbGxiYXJCdXR0b25MZWZ0OmgoInNjcm9sbGJhci1idXR0b24tbGVmdCIsInRyaWFuZ2xlLWxlZnQiKSxzY3JvbGxiYXJCdXR0b25SaWdodDpoKCJzY3JvbGxiYXItYnV0dG9uLXJpZ2h0IiwidHJpYW5nbGUtcmlnaHQiKSxzY3JvbGxiYXJCdXR0b25VcDpoKCJzY3JvbGxiYXItYnV0dG9uLXVwIiwidHJpYW5nbGUtdXAiKSxzY3JvbGxiYXJCdXR0b25Eb3duOmgoInNjcm9sbGJhci1idXR0b24tZG93biIsInRyaWFuZ2xlLWRvd24iKSx0b29sQmFyTW9yZTpoKCJ0b29sYmFyLW1vcmUiLCJtb3JlIikscXVpY2tJbnB1dEJhY2s6aCgicXVpY2staW5wdXQtYmFjayIsImFycm93LWxlZnQiKSxkcm9wRG93bkJ1dHRvbjpoKCJkcm9wLWRvd24tYnV0dG9uIiw2MDA4NCksc3ltYm9sQ3VzdG9tQ29sb3I6aCgic3ltYm9sLWN1c3RvbWNvbG9yIiw2MDI1MiksZXhwb3J0SWNvbjpoKCJleHBvcnQiLDYwMzMyKSx3b3Jrc3BhY2VVbnNwZWNpZmllZDpoKCJ3b3Jrc3BhY2UtdW5zcGVjaWZpZWQiLDYwMzU1KSxuZXdMaW5lOmgoIm5ld2xpbmUiLDYwMzk0KSx0aHVtYnNEb3duRmlsbGVkOmgoInRodW1ic2Rvd24tZmlsbGVkIiw2MDQzNSksdGh1bWJzVXBGaWxsZWQ6aCgidGh1bWJzdXAtZmlsbGVkIiw2MDQzNiksZ2l0RmV0Y2g6aCgiZ2l0LWZldGNoIiw2MDQ0NSksbGlnaHRidWxiU3BhcmtsZUF1dG9maXg6aCgibGlnaHRidWxiLXNwYXJrbGUtYXV0b2ZpeCIsNjA0NDcpLGRlYnVnQnJlYWtwb2ludFBlbmRpbmc6aCgiZGVidWctYnJlYWtwb2ludC1wZW5kaW5nIiw2MDM3Nyl9LFc9ey4uLklkLC4uLkFkfTtjbGFzcyBNZHtjb25zdHJ1Y3Rvcigpe3RoaXMuX3Rva2VuaXphdGlvblN1cHBvcnRzPW5ldyBNYXAsdGhpcy5fZmFjdG9yaWVzPW5ldyBNYXAsdGhpcy5fb25EaWRDaGFuZ2U9bmV3IExlLHRoaXMub25EaWRDaGFuZ2U9dGhpcy5fb25EaWRDaGFuZ2UuZXZlbnQsdGhpcy5fY29sb3JNYXA9bnVsbH1oYW5kbGVDaGFuZ2UodCl7dGhpcy5fb25EaWRDaGFuZ2UuZmlyZSh7Y2hhbmdlZExhbmd1YWdlczp0LGNoYW5nZWRDb2xvck1hcDohMX0pfXJlZ2lzdGVyKHQsbil7cmV0dXJuIHRoaXMuX3Rva2VuaXphdGlvblN1cHBvcnRzLnNldCh0LG4pLHRoaXMuaGFuZGxlQ2hhbmdlKFt0XSksem4oKCk9Pnt0aGlzLl90b2tlbml6YXRpb25TdXBwb3J0cy5nZXQodCk9PT1uJiYodGhpcy5fdG9rZW5pemF0aW9uU3VwcG9ydHMuZGVsZXRlKHQpLHRoaXMuaGFuZGxlQ2hhbmdlKFt0XSkpfSl9Z2V0KHQpe3JldHVybiB0aGlzLl90b2tlbml6YXRpb25TdXBwb3J0cy5nZXQodCl8fG51bGx9cmVnaXN0ZXJGYWN0b3J5KHQsbil7dGhpcy5fZmFjdG9yaWVzLmdldCh0KT8uZGlzcG9zZSgpO2NvbnN0IHI9bmV3IExkKHRoaXMsdCxuKTtyZXR1cm4gdGhpcy5fZmFjdG9yaWVzLnNldCh0LHIpLHpuKCgpPT57Y29uc3QgaT10aGlzLl9mYWN0b3JpZXMuZ2V0KHQpOyFpfHxpIT09cnx8KHRoaXMuX2ZhY3Rvcmllcy5kZWxldGUodCksaS5kaXNwb3NlKCkpfSl9YXN5bmMgZ2V0T3JDcmVhdGUodCl7Y29uc3Qgbj10aGlzLmdldCh0KTtpZihuKXJldHVybiBuO2NvbnN0IHI9dGhpcy5fZmFjdG9yaWVzLmdldCh0KTtyZXR1cm4hcnx8ci5pc1Jlc29sdmVkP251bGw6KGF3YWl0IHIucmVzb2x2ZSgpLHRoaXMuZ2V0KHQpKX1pc1Jlc29sdmVkKHQpe2lmKHRoaXMuZ2V0KHQpKXJldHVybiEwO2NvbnN0IHI9dGhpcy5fZmFjdG9yaWVzLmdldCh0KTtyZXR1cm4hISghcnx8ci5pc1Jlc29sdmVkKX1zZXRDb2xvck1hcCh0KXt0aGlzLl9jb2xvck1hcD10LHRoaXMuX29uRGlkQ2hhbmdlLmZpcmUoe2NoYW5nZWRMYW5ndWFnZXM6QXJyYXkuZnJvbSh0aGlzLl90b2tlbml6YXRpb25TdXBwb3J0cy5rZXlzKCkpLGNoYW5nZWRDb2xvck1hcDohMH0pfWdldENvbG9yTWFwKCl7cmV0dXJuIHRoaXMuX2NvbG9yTWFwfWdldERlZmF1bHRCYWNrZ3JvdW5kKCl7cmV0dXJuIHRoaXMuX2NvbG9yTWFwJiZ0aGlzLl9jb2xvck1hcC5sZW5ndGg+Mj90aGlzLl9jb2xvck1hcFsyXTpudWxsfX1jbGFzcyBMZCBleHRlbmRzIEl0e2dldCBpc1Jlc29sdmVkKCl7cmV0dXJuIHRoaXMuX2lzUmVzb2x2ZWR9Y29uc3RydWN0b3IodCxuLHIpe3N1cGVyKCksdGhpcy5fcmVnaXN0cnk9dCx0aGlzLl9sYW5ndWFnZUlkPW4sdGhpcy5fZmFjdG9yeT1yLHRoaXMuX2lzRGlzcG9zZWQ9ITEsdGhpcy5fcmVzb2x2ZVByb21pc2U9bnVsbCx0aGlzLl9pc1Jlc29sdmVkPSExfWRpc3Bvc2UoKXt0aGlzLl9pc0Rpc3Bvc2VkPSEwLHN1cGVyLmRpc3Bvc2UoKX1hc3luYyByZXNvbHZlKCl7cmV0dXJuIHRoaXMuX3Jlc29sdmVQcm9taXNlfHwodGhpcy5fcmVzb2x2ZVByb21pc2U9dGhpcy5fY3JlYXRlKCkpLHRoaXMuX3Jlc29sdmVQcm9taXNlfWFzeW5jIF9jcmVhdGUoKXtjb25zdCB0PWF3YWl0IHRoaXMuX2ZhY3RvcnkudG9rZW5pemF0aW9uU3VwcG9ydDt0aGlzLl9pc1Jlc29sdmVkPSEwLHQmJiF0aGlzLl9pc0Rpc3Bvc2VkJiZ0aGlzLl9yZWdpc3Rlcih0aGlzLl9yZWdpc3RyeS5yZWdpc3Rlcih0aGlzLl9sYW5ndWFnZUlkLHQpKX19Y2xhc3MgemR7Y29uc3RydWN0b3IodCxuLHIpe3RoaXMub2Zmc2V0PXQsdGhpcy50eXBlPW4sdGhpcy5sYW5ndWFnZT1yLHRoaXMuX3Rva2VuQnJhbmQ9dm9pZCAwfXRvU3RyaW5nKCl7cmV0dXJuIigiK3RoaXMub2Zmc2V0KyIsICIrdGhpcy50eXBlKyIpIn19dmFyIGhhOyhmdW5jdGlvbihlKXtlW2UuSW5jcmVhc2U9MF09IkluY3JlYXNlIixlW2UuRGVjcmVhc2U9MV09IkRlY3JlYXNlIn0pKGhhfHwoaGE9e30pKTt2YXIgZGE7KGZ1bmN0aW9uKGUpe2NvbnN0IHQ9bmV3IE1hcDt0LnNldCgwLFcuc3ltYm9sTWV0aG9kKSx0LnNldCgxLFcuc3ltYm9sRnVuY3Rpb24pLHQuc2V0KDIsVy5zeW1ib2xDb25zdHJ1Y3RvciksdC5zZXQoMyxXLnN5bWJvbEZpZWxkKSx0LnNldCg0LFcuc3ltYm9sVmFyaWFibGUpLHQuc2V0KDUsVy5zeW1ib2xDbGFzcyksdC5zZXQoNixXLnN5bWJvbFN0cnVjdCksdC5zZXQoNyxXLnN5bWJvbEludGVyZmFjZSksdC5zZXQoOCxXLnN5bWJvbE1vZHVsZSksdC5zZXQoOSxXLnN5bWJvbFByb3BlcnR5KSx0LnNldCgxMCxXLnN5bWJvbEV2ZW50KSx0LnNldCgxMSxXLnN5bWJvbE9wZXJhdG9yKSx0LnNldCgxMixXLnN5bWJvbFVuaXQpLHQuc2V0KDEzLFcuc3ltYm9sVmFsdWUpLHQuc2V0KDE1LFcuc3ltYm9sRW51bSksdC5zZXQoMTQsVy5zeW1ib2xDb25zdGFudCksdC5zZXQoMTUsVy5zeW1ib2xFbnVtKSx0LnNldCgxNixXLnN5bWJvbEVudW1NZW1iZXIpLHQuc2V0KDE3LFcuc3ltYm9sS2V5d29yZCksdC5zZXQoMjcsVy5zeW1ib2xTbmlwcGV0KSx0LnNldCgxOCxXLnN5bWJvbFRleHQpLHQuc2V0KDE5LFcuc3ltYm9sQ29sb3IpLHQuc2V0KDIwLFcuc3ltYm9sRmlsZSksdC5zZXQoMjEsVy5zeW1ib2xSZWZlcmVuY2UpLHQuc2V0KDIyLFcuc3ltYm9sQ3VzdG9tQ29sb3IpLHQuc2V0KDIzLFcuc3ltYm9sRm9sZGVyKSx0LnNldCgyNCxXLnN5bWJvbFR5cGVQYXJhbWV0ZXIpLHQuc2V0KDI1LFcuYWNjb3VudCksdC5zZXQoMjYsVy5pc3N1ZXMpO2Z1bmN0aW9uIG4ocyl7bGV0IGE9dC5nZXQocyk7cmV0dXJuIGF8fChjb25zb2xlLmluZm8oIk5vIGNvZGljb24gZm91bmQgZm9yIENvbXBsZXRpb25JdGVtS2luZCAiK3MpLGE9Vy5zeW1ib2xQcm9wZXJ0eSksYX1lLnRvSWNvbj1uO2NvbnN0IHI9bmV3IE1hcDtyLnNldCgibWV0aG9kIiwwKSxyLnNldCgiZnVuY3Rpb24iLDEpLHIuc2V0KCJjb25zdHJ1Y3RvciIsMiksci5zZXQoImZpZWxkIiwzKSxyLnNldCgidmFyaWFibGUiLDQpLHIuc2V0KCJjbGFzcyIsNSksci5zZXQoInN0cnVjdCIsNiksci5zZXQoImludGVyZmFjZSIsNyksci5zZXQoIm1vZHVsZSIsOCksci5zZXQoInByb3BlcnR5Iiw5KSxyLnNldCgiZXZlbnQiLDEwKSxyLnNldCgib3BlcmF0b3IiLDExKSxyLnNldCgidW5pdCIsMTIpLHIuc2V0KCJ2YWx1ZSIsMTMpLHIuc2V0KCJjb25zdGFudCIsMTQpLHIuc2V0KCJlbnVtIiwxNSksci5zZXQoImVudW0tbWVtYmVyIiwxNiksci5zZXQoImVudW1NZW1iZXIiLDE2KSxyLnNldCgia2V5d29yZCIsMTcpLHIuc2V0KCJzbmlwcGV0IiwyNyksci5zZXQoInRleHQiLDE4KSxyLnNldCgiY29sb3IiLDE5KSxyLnNldCgiZmlsZSIsMjApLHIuc2V0KCJyZWZlcmVuY2UiLDIxKSxyLnNldCgiY3VzdG9tY29sb3IiLDIyKSxyLnNldCgiZm9sZGVyIiwyMyksci5zZXQoInR5cGUtcGFyYW1ldGVyIiwyNCksci5zZXQoInR5cGVQYXJhbWV0ZXIiLDI0KSxyLnNldCgiYWNjb3VudCIsMjUpLHIuc2V0KCJpc3N1ZSIsMjYpO2Z1bmN0aW9uIGkocyxhKXtsZXQgbD1yLmdldChzKTtyZXR1cm4gdHlwZW9mIGw+InUiJiYhYSYmKGw9OSksbH1lLmZyb21TdHJpbmc9aX0pKGRhfHwoZGE9e30pKTt2YXIgdWE7KGZ1bmN0aW9uKGUpe2VbZS5BdXRvbWF0aWM9MF09IkF1dG9tYXRpYyIsZVtlLkV4cGxpY2l0PTFdPSJFeHBsaWNpdCJ9KSh1YXx8KHVhPXt9KSk7dmFyIHBhOyhmdW5jdGlvbihlKXtlW2UuQXV0b21hdGljPTBdPSJBdXRvbWF0aWMiLGVbZS5QYXN0ZUFzPTFdPSJQYXN0ZUFzIn0pKHBhfHwocGE9e30pKTt2YXIgbWE7KGZ1bmN0aW9uKGUpe2VbZS5JbnZva2U9MV09Ikludm9rZSIsZVtlLlRyaWdnZXJDaGFyYWN0ZXI9Ml09IlRyaWdnZXJDaGFyYWN0ZXIiLGVbZS5Db250ZW50Q2hhbmdlPTNdPSJDb250ZW50Q2hhbmdlIn0pKG1hfHwobWE9e30pKTt2YXIgZmE7KGZ1bmN0aW9uKGUpe2VbZS5UZXh0PTBdPSJUZXh0IixlW2UuUmVhZD0xXT0iUmVhZCIsZVtlLldyaXRlPTJdPSJXcml0ZSJ9KShmYXx8KGZhPXt9KSkscmUoIkFycmF5IiwiYXJyYXkiKSxyZSgiQm9vbGVhbiIsImJvb2xlYW4iKSxyZSgiQ2xhc3MiLCJjbGFzcyIpLHJlKCJDb25zdGFudCIsImNvbnN0YW50IikscmUoIkNvbnN0cnVjdG9yIiwiY29uc3RydWN0b3IiKSxyZSgiRW51bSIsImVudW1lcmF0aW9uIikscmUoIkVudW1NZW1iZXIiLCJlbnVtZXJhdGlvbiBtZW1iZXIiKSxyZSgiRXZlbnQiLCJldmVudCIpLHJlKCJGaWVsZCIsImZpZWxkIikscmUoIkZpbGUiLCJmaWxlIikscmUoIkZ1bmN0aW9uIiwiZnVuY3Rpb24iKSxyZSgiSW50ZXJmYWNlIiwiaW50ZXJmYWNlIikscmUoIktleSIsImtleSIpLHJlKCJNZXRob2QiLCJtZXRob2QiKSxyZSgiTW9kdWxlIiwibW9kdWxlIikscmUoIk5hbWVzcGFjZSIsIm5hbWVzcGFjZSIpLHJlKCJOdWxsIiwibnVsbCIpLHJlKCJOdW1iZXIiLCJudW1iZXIiKSxyZSgiT2JqZWN0Iiwib2JqZWN0IikscmUoIk9wZXJhdG9yIiwib3BlcmF0b3IiKSxyZSgiUGFja2FnZSIsInBhY2thZ2UiKSxyZSgiUHJvcGVydHkiLCJwcm9wZXJ0eSIpLHJlKCJTdHJpbmciLCJzdHJpbmciKSxyZSgiU3RydWN0Iiwic3RydWN0IikscmUoIlR5cGVQYXJhbWV0ZXIiLCJ0eXBlIHBhcmFtZXRlciIpLHJlKCJWYXJpYWJsZSIsInZhcmlhYmxlIik7dmFyIGdhOyhmdW5jdGlvbihlKXtjb25zdCB0PW5ldyBNYXA7dC5zZXQoMCxXLnN5bWJvbEZpbGUpLHQuc2V0KDEsVy5zeW1ib2xNb2R1bGUpLHQuc2V0KDIsVy5zeW1ib2xOYW1lc3BhY2UpLHQuc2V0KDMsVy5zeW1ib2xQYWNrYWdlKSx0LnNldCg0LFcuc3ltYm9sQ2xhc3MpLHQuc2V0KDUsVy5zeW1ib2xNZXRob2QpLHQuc2V0KDYsVy5zeW1ib2xQcm9wZXJ0eSksdC5zZXQoNyxXLnN5bWJvbEZpZWxkKSx0LnNldCg4LFcuc3ltYm9sQ29uc3RydWN0b3IpLHQuc2V0KDksVy5zeW1ib2xFbnVtKSx0LnNldCgxMCxXLnN5bWJvbEludGVyZmFjZSksdC5zZXQoMTEsVy5zeW1ib2xGdW5jdGlvbiksdC5zZXQoMTIsVy5zeW1ib2xWYXJpYWJsZSksdC5zZXQoMTMsVy5zeW1ib2xDb25zdGFudCksdC5zZXQoMTQsVy5zeW1ib2xTdHJpbmcpLHQuc2V0KDE1LFcuc3ltYm9sTnVtYmVyKSx0LnNldCgxNixXLnN5bWJvbEJvb2xlYW4pLHQuc2V0KDE3LFcuc3ltYm9sQXJyYXkpLHQuc2V0KDE4LFcuc3ltYm9sT2JqZWN0KSx0LnNldCgxOSxXLnN5bWJvbEtleSksdC5zZXQoMjAsVy5zeW1ib2xOdWxsKSx0LnNldCgyMSxXLnN5bWJvbEVudW1NZW1iZXIpLHQuc2V0KDIyLFcuc3ltYm9sU3RydWN0KSx0LnNldCgyMyxXLnN5bWJvbEV2ZW50KSx0LnNldCgyNCxXLnN5bWJvbE9wZXJhdG9yKSx0LnNldCgyNSxXLnN5bWJvbFR5cGVQYXJhbWV0ZXIpO2Z1bmN0aW9uIG4ocil7bGV0IGk9dC5nZXQocik7cmV0dXJuIGl8fChjb25zb2xlLmluZm8oIk5vIGNvZGljb24gZm91bmQgZm9yIFN5bWJvbEtpbmQgIityKSxpPVcuc3ltYm9sUHJvcGVydHkpLGl9ZS50b0ljb249bn0pKGdhfHwoZ2E9e30pKTtsZXQgeWY9KHllPWNsYXNze3N0YXRpYyBmcm9tVmFsdWUodCl7c3dpdGNoKHQpe2Nhc2UiY29tbWVudCI6cmV0dXJuIHllLkNvbW1lbnQ7Y2FzZSJpbXBvcnRzIjpyZXR1cm4geWUuSW1wb3J0cztjYXNlInJlZ2lvbiI6cmV0dXJuIHllLlJlZ2lvbn1yZXR1cm4gbmV3IHllKHQpfWNvbnN0cnVjdG9yKHQpe3RoaXMudmFsdWU9dH19LHllLkNvbW1lbnQ9bmV3IHllKCJjb21tZW50IikseWUuSW1wb3J0cz1uZXcgeWUoImltcG9ydHMiKSx5ZS5SZWdpb249bmV3IHllKCJyZWdpb24iKSx5ZSk7dmFyIGJhOyhmdW5jdGlvbihlKXtlW2UuQUlHZW5lcmF0ZWQ9MV09IkFJR2VuZXJhdGVkIn0pKGJhfHwoYmE9e30pKTt2YXIgdmE7KGZ1bmN0aW9uKGUpe2VbZS5JbnZva2U9MF09Ikludm9rZSIsZVtlLkF1dG9tYXRpYz0xXT0iQXV0b21hdGljIn0pKHZhfHwodmE9e30pKTt2YXIgd2E7KGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQobil7cmV0dXJuIW58fHR5cGVvZiBuIT0ib2JqZWN0Ij8hMTp0eXBlb2Ygbi5pZD09InN0cmluZyImJnR5cGVvZiBuLnRpdGxlPT0ic3RyaW5nIn1lLmlzPXR9KSh3YXx8KHdhPXt9KSk7dmFyIHlhOyhmdW5jdGlvbihlKXtlW2UuVHlwZT0xXT0iVHlwZSIsZVtlLlBhcmFtZXRlcj0yXT0iUGFyYW1ldGVyIn0pKHlhfHwoeWE9e30pKSxuZXcgTWQ7dmFyIHhhOyhmdW5jdGlvbihlKXtlW2UuSW52b2tlPTBdPSJJbnZva2UiLGVbZS5BdXRvbWF0aWM9MV09IkF1dG9tYXRpYyJ9KSh4YXx8KHhhPXt9KSk7dmFyIFNhOyhmdW5jdGlvbihlKXtlW2UuVW5rbm93bj0wXT0iVW5rbm93biIsZVtlLkRpc2FibGVkPTFdPSJEaXNhYmxlZCIsZVtlLkVuYWJsZWQ9Ml09IkVuYWJsZWQifSkoU2F8fChTYT17fSkpO3ZhciBDYTsoZnVuY3Rpb24oZSl7ZVtlLkludm9rZT0xXT0iSW52b2tlIixlW2UuQXV0bz0yXT0iQXV0byJ9KShDYXx8KENhPXt9KSk7dmFyIF9hOyhmdW5jdGlvbihlKXtlW2UuTm9uZT0wXT0iTm9uZSIsZVtlLktlZXBXaGl0ZXNwYWNlPTFdPSJLZWVwV2hpdGVzcGFjZSIsZVtlLkluc2VydEFzU25pcHBldD00XT0iSW5zZXJ0QXNTbmlwcGV0In0pKF9hfHwoX2E9e30pKTt2YXIga2E7KGZ1bmN0aW9uKGUpe2VbZS5NZXRob2Q9MF09Ik1ldGhvZCIsZVtlLkZ1bmN0aW9uPTFdPSJGdW5jdGlvbiIsZVtlLkNvbnN0cnVjdG9yPTJdPSJDb25zdHJ1Y3RvciIsZVtlLkZpZWxkPTNdPSJGaWVsZCIsZVtlLlZhcmlhYmxlPTRdPSJWYXJpYWJsZSIsZVtlLkNsYXNzPTVdPSJDbGFzcyIsZVtlLlN0cnVjdD02XT0iU3RydWN0IixlW2UuSW50ZXJmYWNlPTddPSJJbnRlcmZhY2UiLGVbZS5Nb2R1bGU9OF09Ik1vZHVsZSIsZVtlLlByb3BlcnR5PTldPSJQcm9wZXJ0eSIsZVtlLkV2ZW50PTEwXT0iRXZlbnQiLGVbZS5PcGVyYXRvcj0xMV09Ik9wZXJhdG9yIixlW2UuVW5pdD0xMl09IlVuaXQiLGVbZS5WYWx1ZT0xM109IlZhbHVlIixlW2UuQ29uc3RhbnQ9MTRdPSJDb25zdGFudCIsZVtlLkVudW09MTVdPSJFbnVtIixlW2UuRW51bU1lbWJlcj0xNl09IkVudW1NZW1iZXIiLGVbZS5LZXl3b3JkPTE3XT0iS2V5d29yZCIsZVtlLlRleHQ9MThdPSJUZXh0IixlW2UuQ29sb3I9MTldPSJDb2xvciIsZVtlLkZpbGU9MjBdPSJGaWxlIixlW2UuUmVmZXJlbmNlPTIxXT0iUmVmZXJlbmNlIixlW2UuQ3VzdG9tY29sb3I9MjJdPSJDdXN0b21jb2xvciIsZVtlLkZvbGRlcj0yM109IkZvbGRlciIsZVtlLlR5cGVQYXJhbWV0ZXI9MjRdPSJUeXBlUGFyYW1ldGVyIixlW2UuVXNlcj0yNV09IlVzZXIiLGVbZS5Jc3N1ZT0yNl09Iklzc3VlIixlW2UuU25pcHBldD0yN109IlNuaXBwZXQifSkoa2F8fChrYT17fSkpO3ZhciBFYTsoZnVuY3Rpb24oZSl7ZVtlLkRlcHJlY2F0ZWQ9MV09IkRlcHJlY2F0ZWQifSkoRWF8fChFYT17fSkpO3ZhciBGYTsoZnVuY3Rpb24oZSl7ZVtlLkludm9rZT0wXT0iSW52b2tlIixlW2UuVHJpZ2dlckNoYXJhY3Rlcj0xXT0iVHJpZ2dlckNoYXJhY3RlciIsZVtlLlRyaWdnZXJGb3JJbmNvbXBsZXRlQ29tcGxldGlvbnM9Ml09IlRyaWdnZXJGb3JJbmNvbXBsZXRlQ29tcGxldGlvbnMifSkoRmF8fChGYT17fSkpO3ZhciBSYTsoZnVuY3Rpb24oZSl7ZVtlLkVYQUNUPTBdPSJFWEFDVCIsZVtlLkFCT1ZFPTFdPSJBQk9WRSIsZVtlLkJFTE9XPTJdPSJCRUxPVyJ9KShSYXx8KFJhPXt9KSk7dmFyIE5hOyhmdW5jdGlvbihlKXtlW2UuTm90U2V0PTBdPSJOb3RTZXQiLGVbZS5Db250ZW50Rmx1c2g9MV09IkNvbnRlbnRGbHVzaCIsZVtlLlJlY292ZXJGcm9tTWFya2Vycz0yXT0iUmVjb3ZlckZyb21NYXJrZXJzIixlW2UuRXhwbGljaXQ9M109IkV4cGxpY2l0IixlW2UuUGFzdGU9NF09IlBhc3RlIixlW2UuVW5kbz01XT0iVW5kbyIsZVtlLlJlZG89Nl09IlJlZG8ifSkoTmF8fChOYT17fSkpO3ZhciBEYTsoZnVuY3Rpb24oZSl7ZVtlLkxGPTFdPSJMRiIsZVtlLkNSTEY9Ml09IkNSTEYifSkoRGF8fChEYT17fSkpO3ZhciBJYTsoZnVuY3Rpb24oZSl7ZVtlLlRleHQ9MF09IlRleHQiLGVbZS5SZWFkPTFdPSJSZWFkIixlW2UuV3JpdGU9Ml09IldyaXRlIn0pKElhfHwoSWE9e30pKTt2YXIgQWE7KGZ1bmN0aW9uKGUpe2VbZS5Ob25lPTBdPSJOb25lIixlW2UuS2VlcD0xXT0iS2VlcCIsZVtlLkJyYWNrZXRzPTJdPSJCcmFja2V0cyIsZVtlLkFkdmFuY2VkPTNdPSJBZHZhbmNlZCIsZVtlLkZ1bGw9NF09IkZ1bGwifSkoQWF8fChBYT17fSkpO3ZhciBNYTsoZnVuY3Rpb24oZSl7ZVtlLmFjY2VwdFN1Z2dlc3Rpb25PbkNvbW1pdENoYXJhY3Rlcj0wXT0iYWNjZXB0U3VnZ2VzdGlvbk9uQ29tbWl0Q2hhcmFjdGVyIixlW2UuYWNjZXB0U3VnZ2VzdGlvbk9uRW50ZXI9MV09ImFjY2VwdFN1Z2dlc3Rpb25PbkVudGVyIixlW2UuYWNjZXNzaWJpbGl0eVN1cHBvcnQ9Ml09ImFjY2Vzc2liaWxpdHlTdXBwb3J0IixlW2UuYWNjZXNzaWJpbGl0eVBhZ2VTaXplPTNdPSJhY2Nlc3NpYmlsaXR5UGFnZVNpemUiLGVbZS5hcmlhTGFiZWw9NF09ImFyaWFMYWJlbCIsZVtlLmFyaWFSZXF1aXJlZD01XT0iYXJpYVJlcXVpcmVkIixlW2UuYXV0b0Nsb3NpbmdCcmFja2V0cz02XT0iYXV0b0Nsb3NpbmdCcmFja2V0cyIsZVtlLmF1dG9DbG9zaW5nQ29tbWVudHM9N109ImF1dG9DbG9zaW5nQ29tbWVudHMiLGVbZS5zY3JlZW5SZWFkZXJBbm5vdW5jZUlubGluZVN1Z2dlc3Rpb249OF09InNjcmVlblJlYWRlckFubm91bmNlSW5saW5lU3VnZ2VzdGlvbiIsZVtlLmF1dG9DbG9zaW5nRGVsZXRlPTldPSJhdXRvQ2xvc2luZ0RlbGV0ZSIsZVtlLmF1dG9DbG9zaW5nT3ZlcnR5cGU9MTBdPSJhdXRvQ2xvc2luZ092ZXJ0eXBlIixlW2UuYXV0b0Nsb3NpbmdRdW90ZXM9MTFdPSJhdXRvQ2xvc2luZ1F1b3RlcyIsZVtlLmF1dG9JbmRlbnQ9MTJdPSJhdXRvSW5kZW50IixlW2UuYXV0b21hdGljTGF5b3V0PTEzXT0iYXV0b21hdGljTGF5b3V0IixlW2UuYXV0b1N1cnJvdW5kPTE0XT0iYXV0b1N1cnJvdW5kIixlW2UuYnJhY2tldFBhaXJDb2xvcml6YXRpb249MTVdPSJicmFja2V0UGFpckNvbG9yaXphdGlvbiIsZVtlLmd1aWRlcz0xNl09Imd1aWRlcyIsZVtlLmNvZGVMZW5zPTE3XT0iY29kZUxlbnMiLGVbZS5jb2RlTGVuc0ZvbnRGYW1pbHk9MThdPSJjb2RlTGVuc0ZvbnRGYW1pbHkiLGVbZS5jb2RlTGVuc0ZvbnRTaXplPTE5XT0iY29kZUxlbnNGb250U2l6ZSIsZVtlLmNvbG9yRGVjb3JhdG9ycz0yMF09ImNvbG9yRGVjb3JhdG9ycyIsZVtlLmNvbG9yRGVjb3JhdG9yc0xpbWl0PTIxXT0iY29sb3JEZWNvcmF0b3JzTGltaXQiLGVbZS5jb2x1bW5TZWxlY3Rpb249MjJdPSJjb2x1bW5TZWxlY3Rpb24iLGVbZS5jb21tZW50cz0yM109ImNvbW1lbnRzIixlW2UuY29udGV4dG1lbnU9MjRdPSJjb250ZXh0bWVudSIsZVtlLmNvcHlXaXRoU3ludGF4SGlnaGxpZ2h0aW5nPTI1XT0iY29weVdpdGhTeW50YXhIaWdobGlnaHRpbmciLGVbZS5jdXJzb3JCbGlua2luZz0yNl09ImN1cnNvckJsaW5raW5nIixlW2UuY3Vyc29yU21vb3RoQ2FyZXRBbmltYXRpb249MjddPSJjdXJzb3JTbW9vdGhDYXJldEFuaW1hdGlvbiIsZVtlLmN1cnNvclN0eWxlPTI4XT0iY3Vyc29yU3R5bGUiLGVbZS5jdXJzb3JTdXJyb3VuZGluZ0xpbmVzPTI5XT0iY3Vyc29yU3Vycm91bmRpbmdMaW5lcyIsZVtlLmN1cnNvclN1cnJvdW5kaW5nTGluZXNTdHlsZT0zMF09ImN1cnNvclN1cnJvdW5kaW5nTGluZXNTdHlsZSIsZVtlLmN1cnNvcldpZHRoPTMxXT0iY3Vyc29yV2lkdGgiLGVbZS5kaXNhYmxlTGF5ZXJIaW50aW5nPTMyXT0iZGlzYWJsZUxheWVySGludGluZyIsZVtlLmRpc2FibGVNb25vc3BhY2VPcHRpbWl6YXRpb25zPTMzXT0iZGlzYWJsZU1vbm9zcGFjZU9wdGltaXphdGlvbnMiLGVbZS5kb21SZWFkT25seT0zNF09ImRvbVJlYWRPbmx5IixlW2UuZHJhZ0FuZERyb3A9MzVdPSJkcmFnQW5kRHJvcCIsZVtlLmRyb3BJbnRvRWRpdG9yPTM2XT0iZHJvcEludG9FZGl0b3IiLGVbZS5lbXB0eVNlbGVjdGlvbkNsaXBib2FyZD0zN109ImVtcHR5U2VsZWN0aW9uQ2xpcGJvYXJkIixlW2UuZXhwZXJpbWVudGFsV2hpdGVzcGFjZVJlbmRlcmluZz0zOF09ImV4cGVyaW1lbnRhbFdoaXRlc3BhY2VSZW5kZXJpbmciLGVbZS5leHRyYUVkaXRvckNsYXNzTmFtZT0zOV09ImV4dHJhRWRpdG9yQ2xhc3NOYW1lIixlW2UuZmFzdFNjcm9sbFNlbnNpdGl2aXR5PTQwXT0iZmFzdFNjcm9sbFNlbnNpdGl2aXR5IixlW2UuZmluZD00MV09ImZpbmQiLGVbZS5maXhlZE92ZXJmbG93V2lkZ2V0cz00Ml09ImZpeGVkT3ZlcmZsb3dXaWRnZXRzIixlW2UuZm9sZGluZz00M109ImZvbGRpbmciLGVbZS5mb2xkaW5nU3RyYXRlZ3k9NDRdPSJmb2xkaW5nU3RyYXRlZ3kiLGVbZS5mb2xkaW5nSGlnaGxpZ2h0PTQ1XT0iZm9sZGluZ0hpZ2hsaWdodCIsZVtlLmZvbGRpbmdJbXBvcnRzQnlEZWZhdWx0PTQ2XT0iZm9sZGluZ0ltcG9ydHNCeURlZmF1bHQiLGVbZS5mb2xkaW5nTWF4aW11bVJlZ2lvbnM9NDddPSJmb2xkaW5nTWF4aW11bVJlZ2lvbnMiLGVbZS51bmZvbGRPbkNsaWNrQWZ0ZXJFbmRPZkxpbmU9NDhdPSJ1bmZvbGRPbkNsaWNrQWZ0ZXJFbmRPZkxpbmUiLGVbZS5mb250RmFtaWx5PTQ5XT0iZm9udEZhbWlseSIsZVtlLmZvbnRJbmZvPTUwXT0iZm9udEluZm8iLGVbZS5mb250TGlnYXR1cmVzPTUxXT0iZm9udExpZ2F0dXJlcyIsZVtlLmZvbnRTaXplPTUyXT0iZm9udFNpemUiLGVbZS5mb250V2VpZ2h0PTUzXT0iZm9udFdlaWdodCIsZVtlLmZvbnRWYXJpYXRpb25zPTU0XT0iZm9udFZhcmlhdGlvbnMiLGVbZS5mb3JtYXRPblBhc3RlPTU1XT0iZm9ybWF0T25QYXN0ZSIsZVtlLmZvcm1hdE9uVHlwZT01Nl09ImZvcm1hdE9uVHlwZSIsZVtlLmdseXBoTWFyZ2luPTU3XT0iZ2x5cGhNYXJnaW4iLGVbZS5nb3RvTG9jYXRpb249NThdPSJnb3RvTG9jYXRpb24iLGVbZS5oaWRlQ3Vyc29ySW5PdmVydmlld1J1bGVyPTU5XT0iaGlkZUN1cnNvckluT3ZlcnZpZXdSdWxlciIsZVtlLmhvdmVyPTYwXT0iaG92ZXIiLGVbZS5pbkRpZmZFZGl0b3I9NjFdPSJpbkRpZmZFZGl0b3IiLGVbZS5pbmxpbmVTdWdnZXN0PTYyXT0iaW5saW5lU3VnZ2VzdCIsZVtlLmlubGluZUVkaXQ9NjNdPSJpbmxpbmVFZGl0IixlW2UubGV0dGVyU3BhY2luZz02NF09ImxldHRlclNwYWNpbmciLGVbZS5saWdodGJ1bGI9NjVdPSJsaWdodGJ1bGIiLGVbZS5saW5lRGVjb3JhdGlvbnNXaWR0aD02Nl09ImxpbmVEZWNvcmF0aW9uc1dpZHRoIixlW2UubGluZUhlaWdodD02N109ImxpbmVIZWlnaHQiLGVbZS5saW5lTnVtYmVycz02OF09ImxpbmVOdW1iZXJzIixlW2UubGluZU51bWJlcnNNaW5DaGFycz02OV09ImxpbmVOdW1iZXJzTWluQ2hhcnMiLGVbZS5saW5rZWRFZGl0aW5nPTcwXT0ibGlua2VkRWRpdGluZyIsZVtlLmxpbmtzPTcxXT0ibGlua3MiLGVbZS5tYXRjaEJyYWNrZXRzPTcyXT0ibWF0Y2hCcmFja2V0cyIsZVtlLm1pbmltYXA9NzNdPSJtaW5pbWFwIixlW2UubW91c2VTdHlsZT03NF09Im1vdXNlU3R5bGUiLGVbZS5tb3VzZVdoZWVsU2Nyb2xsU2Vuc2l0aXZpdHk9NzVdPSJtb3VzZVdoZWVsU2Nyb2xsU2Vuc2l0aXZpdHkiLGVbZS5tb3VzZVdoZWVsWm9vbT03Nl09Im1vdXNlV2hlZWxab29tIixlW2UubXVsdGlDdXJzb3JNZXJnZU92ZXJsYXBwaW5nPTc3XT0ibXVsdGlDdXJzb3JNZXJnZU92ZXJsYXBwaW5nIixlW2UubXVsdGlDdXJzb3JNb2RpZmllcj03OF09Im11bHRpQ3Vyc29yTW9kaWZpZXIiLGVbZS5tdWx0aUN1cnNvclBhc3RlPTc5XT0ibXVsdGlDdXJzb3JQYXN0ZSIsZVtlLm11bHRpQ3Vyc29yTGltaXQ9ODBdPSJtdWx0aUN1cnNvckxpbWl0IixlW2Uub2NjdXJyZW5jZXNIaWdobGlnaHQ9ODFdPSJvY2N1cnJlbmNlc0hpZ2hsaWdodCIsZVtlLm92ZXJ2aWV3UnVsZXJCb3JkZXI9ODJdPSJvdmVydmlld1J1bGVyQm9yZGVyIixlW2Uub3ZlcnZpZXdSdWxlckxhbmVzPTgzXT0ib3ZlcnZpZXdSdWxlckxhbmVzIixlW2UucGFkZGluZz04NF09InBhZGRpbmciLGVbZS5wYXN0ZUFzPTg1XT0icGFzdGVBcyIsZVtlLnBhcmFtZXRlckhpbnRzPTg2XT0icGFyYW1ldGVySGludHMiLGVbZS5wZWVrV2lkZ2V0RGVmYXVsdEZvY3VzPTg3XT0icGVla1dpZGdldERlZmF1bHRGb2N1cyIsZVtlLnBsYWNlaG9sZGVyPTg4XT0icGxhY2Vob2xkZXIiLGVbZS5kZWZpbml0aW9uTGlua09wZW5zSW5QZWVrPTg5XT0iZGVmaW5pdGlvbkxpbmtPcGVuc0luUGVlayIsZVtlLnF1aWNrU3VnZ2VzdGlvbnM9OTBdPSJxdWlja1N1Z2dlc3Rpb25zIixlW2UucXVpY2tTdWdnZXN0aW9uc0RlbGF5PTkxXT0icXVpY2tTdWdnZXN0aW9uc0RlbGF5IixlW2UucmVhZE9ubHk9OTJdPSJyZWFkT25seSIsZVtlLnJlYWRPbmx5TWVzc2FnZT05M109InJlYWRPbmx5TWVzc2FnZSIsZVtlLnJlbmFtZU9uVHlwZT05NF09InJlbmFtZU9uVHlwZSIsZVtlLnJlbmRlckNvbnRyb2xDaGFyYWN0ZXJzPTk1XT0icmVuZGVyQ29udHJvbENoYXJhY3RlcnMiLGVbZS5yZW5kZXJGaW5hbE5ld2xpbmU9OTZdPSJyZW5kZXJGaW5hbE5ld2xpbmUiLGVbZS5yZW5kZXJMaW5lSGlnaGxpZ2h0PTk3XT0icmVuZGVyTGluZUhpZ2hsaWdodCIsZVtlLnJlbmRlckxpbmVIaWdobGlnaHRPbmx5V2hlbkZvY3VzPTk4XT0icmVuZGVyTGluZUhpZ2hsaWdodE9ubHlXaGVuRm9jdXMiLGVbZS5yZW5kZXJWYWxpZGF0aW9uRGVjb3JhdGlvbnM9OTldPSJyZW5kZXJWYWxpZGF0aW9uRGVjb3JhdGlvbnMiLGVbZS5yZW5kZXJXaGl0ZXNwYWNlPTEwMF09InJlbmRlcldoaXRlc3BhY2UiLGVbZS5yZXZlYWxIb3Jpem9udGFsUmlnaHRQYWRkaW5nPTEwMV09InJldmVhbEhvcml6b250YWxSaWdodFBhZGRpbmciLGVbZS5yb3VuZGVkU2VsZWN0aW9uPTEwMl09InJvdW5kZWRTZWxlY3Rpb24iLGVbZS5ydWxlcnM9MTAzXT0icnVsZXJzIixlW2Uuc2Nyb2xsYmFyPTEwNF09InNjcm9sbGJhciIsZVtlLnNjcm9sbEJleW9uZExhc3RDb2x1bW49MTA1XT0ic2Nyb2xsQmV5b25kTGFzdENvbHVtbiIsZVtlLnNjcm9sbEJleW9uZExhc3RMaW5lPTEwNl09InNjcm9sbEJleW9uZExhc3RMaW5lIixlW2Uuc2Nyb2xsUHJlZG9taW5hbnRBeGlzPTEwN109InNjcm9sbFByZWRvbWluYW50QXhpcyIsZVtlLnNlbGVjdGlvbkNsaXBib2FyZD0xMDhdPSJzZWxlY3Rpb25DbGlwYm9hcmQiLGVbZS5zZWxlY3Rpb25IaWdobGlnaHQ9MTA5XT0ic2VsZWN0aW9uSGlnaGxpZ2h0IixlW2Uuc2VsZWN0T25MaW5lTnVtYmVycz0xMTBdPSJzZWxlY3RPbkxpbmVOdW1iZXJzIixlW2Uuc2hvd0ZvbGRpbmdDb250cm9scz0xMTFdPSJzaG93Rm9sZGluZ0NvbnRyb2xzIixlW2Uuc2hvd1VudXNlZD0xMTJdPSJzaG93VW51c2VkIixlW2Uuc25pcHBldFN1Z2dlc3Rpb25zPTExM109InNuaXBwZXRTdWdnZXN0aW9ucyIsZVtlLnNtYXJ0U2VsZWN0PTExNF09InNtYXJ0U2VsZWN0IixlW2Uuc21vb3RoU2Nyb2xsaW5nPTExNV09InNtb290aFNjcm9sbGluZyIsZVtlLnN0aWNreVNjcm9sbD0xMTZdPSJzdGlja3lTY3JvbGwiLGVbZS5zdGlja3lUYWJTdG9wcz0xMTddPSJzdGlja3lUYWJTdG9wcyIsZVtlLnN0b3BSZW5kZXJpbmdMaW5lQWZ0ZXI9MTE4XT0ic3RvcFJlbmRlcmluZ0xpbmVBZnRlciIsZVtlLnN1Z2dlc3Q9MTE5XT0ic3VnZ2VzdCIsZVtlLnN1Z2dlc3RGb250U2l6ZT0xMjBdPSJzdWdnZXN0Rm9udFNpemUiLGVbZS5zdWdnZXN0TGluZUhlaWdodD0xMjFdPSJzdWdnZXN0TGluZUhlaWdodCIsZVtlLnN1Z2dlc3RPblRyaWdnZXJDaGFyYWN0ZXJzPTEyMl09InN1Z2dlc3RPblRyaWdnZXJDaGFyYWN0ZXJzIixlW2Uuc3VnZ2VzdFNlbGVjdGlvbj0xMjNdPSJzdWdnZXN0U2VsZWN0aW9uIixlW2UudGFiQ29tcGxldGlvbj0xMjRdPSJ0YWJDb21wbGV0aW9uIixlW2UudGFiSW5kZXg9MTI1XT0idGFiSW5kZXgiLGVbZS51bmljb2RlSGlnaGxpZ2h0aW5nPTEyNl09InVuaWNvZGVIaWdobGlnaHRpbmciLGVbZS51bnVzdWFsTGluZVRlcm1pbmF0b3JzPTEyN109InVudXN1YWxMaW5lVGVybWluYXRvcnMiLGVbZS51c2VTaGFkb3dET009MTI4XT0idXNlU2hhZG93RE9NIixlW2UudXNlVGFiU3RvcHM9MTI5XT0idXNlVGFiU3RvcHMiLGVbZS53b3JkQnJlYWs9MTMwXT0id29yZEJyZWFrIixlW2Uud29yZFNlZ21lbnRlckxvY2FsZXM9MTMxXT0id29yZFNlZ21lbnRlckxvY2FsZXMiLGVbZS53b3JkU2VwYXJhdG9ycz0xMzJdPSJ3b3JkU2VwYXJhdG9ycyIsZVtlLndvcmRXcmFwPTEzM109IndvcmRXcmFwIixlW2Uud29yZFdyYXBCcmVha0FmdGVyQ2hhcmFjdGVycz0xMzRdPSJ3b3JkV3JhcEJyZWFrQWZ0ZXJDaGFyYWN0ZXJzIixlW2Uud29yZFdyYXBCcmVha0JlZm9yZUNoYXJhY3RlcnM9MTM1XT0id29yZFdyYXBCcmVha0JlZm9yZUNoYXJhY3RlcnMiLGVbZS53b3JkV3JhcENvbHVtbj0xMzZdPSJ3b3JkV3JhcENvbHVtbiIsZVtlLndvcmRXcmFwT3ZlcnJpZGUxPTEzN109IndvcmRXcmFwT3ZlcnJpZGUxIixlW2Uud29yZFdyYXBPdmVycmlkZTI9MTM4XT0id29yZFdyYXBPdmVycmlkZTIiLGVbZS53cmFwcGluZ0luZGVudD0xMzldPSJ3cmFwcGluZ0luZGVudCIsZVtlLndyYXBwaW5nU3RyYXRlZ3k9MTQwXT0id3JhcHBpbmdTdHJhdGVneSIsZVtlLnNob3dEZXByZWNhdGVkPTE0MV09InNob3dEZXByZWNhdGVkIixlW2UuaW5sYXlIaW50cz0xNDJdPSJpbmxheUhpbnRzIixlW2UuZWRpdG9yQ2xhc3NOYW1lPTE0M109ImVkaXRvckNsYXNzTmFtZSIsZVtlLnBpeGVsUmF0aW89MTQ0XT0icGl4ZWxSYXRpbyIsZVtlLnRhYkZvY3VzTW9kZT0xNDVdPSJ0YWJGb2N1c01vZGUiLGVbZS5sYXlvdXRJbmZvPTE0Nl09ImxheW91dEluZm8iLGVbZS53cmFwcGluZ0luZm89MTQ3XT0id3JhcHBpbmdJbmZvIixlW2UuZGVmYXVsdENvbG9yRGVjb3JhdG9ycz0xNDhdPSJkZWZhdWx0Q29sb3JEZWNvcmF0b3JzIixlW2UuY29sb3JEZWNvcmF0b3JzQWN0aXZhdGVkT249MTQ5XT0iY29sb3JEZWNvcmF0b3JzQWN0aXZhdGVkT24iLGVbZS5pbmxpbmVDb21wbGV0aW9uc0FjY2Vzc2liaWxpdHlWZXJib3NlPTE1MF09ImlubGluZUNvbXBsZXRpb25zQWNjZXNzaWJpbGl0eVZlcmJvc2UifSkoTWF8fChNYT17fSkpO3ZhciBMYTsoZnVuY3Rpb24oZSl7ZVtlLlRleHREZWZpbmVkPTBdPSJUZXh0RGVmaW5lZCIsZVtlLkxGPTFdPSJMRiIsZVtlLkNSTEY9Ml09IkNSTEYifSkoTGF8fChMYT17fSkpO3ZhciB6YTsoZnVuY3Rpb24oZSl7ZVtlLkxGPTBdPSJMRiIsZVtlLkNSTEY9MV09IkNSTEYifSkoemF8fCh6YT17fSkpO3ZhciBQYTsoZnVuY3Rpb24oZSl7ZVtlLkxlZnQ9MV09IkxlZnQiLGVbZS5DZW50ZXI9Ml09IkNlbnRlciIsZVtlLlJpZ2h0PTNdPSJSaWdodCJ9KShQYXx8KFBhPXt9KSk7dmFyIFRhOyhmdW5jdGlvbihlKXtlW2UuSW5jcmVhc2U9MF09IkluY3JlYXNlIixlW2UuRGVjcmVhc2U9MV09IkRlY3JlYXNlIn0pKFRhfHwoVGE9e30pKTt2YXIgT2E7KGZ1bmN0aW9uKGUpe2VbZS5Ob25lPTBdPSJOb25lIixlW2UuSW5kZW50PTFdPSJJbmRlbnQiLGVbZS5JbmRlbnRPdXRkZW50PTJdPSJJbmRlbnRPdXRkZW50IixlW2UuT3V0ZGVudD0zXT0iT3V0ZGVudCJ9KShPYXx8KE9hPXt9KSk7dmFyIFdhOyhmdW5jdGlvbihlKXtlW2UuQm90aD0wXT0iQm90aCIsZVtlLlJpZ2h0PTFdPSJSaWdodCIsZVtlLkxlZnQ9Ml09IkxlZnQiLGVbZS5Ob25lPTNdPSJOb25lIn0pKFdhfHwoV2E9e30pKTt2YXIgVmE7KGZ1bmN0aW9uKGUpe2VbZS5UeXBlPTFdPSJUeXBlIixlW2UuUGFyYW1ldGVyPTJdPSJQYXJhbWV0ZXIifSkoVmF8fChWYT17fSkpO3ZhciBVYTsoZnVuY3Rpb24oZSl7ZVtlLkF1dG9tYXRpYz0wXT0iQXV0b21hdGljIixlW2UuRXhwbGljaXQ9MV09IkV4cGxpY2l0In0pKFVhfHwoVWE9e30pKTt2YXIgJGE7KGZ1bmN0aW9uKGUpe2VbZS5JbnZva2U9MF09Ikludm9rZSIsZVtlLkF1dG9tYXRpYz0xXT0iQXV0b21hdGljIn0pKCRhfHwoJGE9e30pKTt2YXIgc2k7KGZ1bmN0aW9uKGUpe2VbZS5EZXBlbmRzT25LYkxheW91dD0tMV09IkRlcGVuZHNPbktiTGF5b3V0IixlW2UuVW5rbm93bj0wXT0iVW5rbm93biIsZVtlLkJhY2tzcGFjZT0xXT0iQmFja3NwYWNlIixlW2UuVGFiPTJdPSJUYWIiLGVbZS5FbnRlcj0zXT0iRW50ZXIiLGVbZS5TaGlmdD00XT0iU2hpZnQiLGVbZS5DdHJsPTVdPSJDdHJsIixlW2UuQWx0PTZdPSJBbHQiLGVbZS5QYXVzZUJyZWFrPTddPSJQYXVzZUJyZWFrIixlW2UuQ2Fwc0xvY2s9OF09IkNhcHNMb2NrIixlW2UuRXNjYXBlPTldPSJFc2NhcGUiLGVbZS5TcGFjZT0xMF09IlNwYWNlIixlW2UuUGFnZVVwPTExXT0iUGFnZVVwIixlW2UuUGFnZURvd249MTJdPSJQYWdlRG93biIsZVtlLkVuZD0xM109IkVuZCIsZVtlLkhvbWU9MTRdPSJIb21lIixlW2UuTGVmdEFycm93PTE1XT0iTGVmdEFycm93IixlW2UuVXBBcnJvdz0xNl09IlVwQXJyb3ciLGVbZS5SaWdodEFycm93PTE3XT0iUmlnaHRBcnJvdyIsZVtlLkRvd25BcnJvdz0xOF09IkRvd25BcnJvdyIsZVtlLkluc2VydD0xOV09Ikluc2VydCIsZVtlLkRlbGV0ZT0yMF09IkRlbGV0ZSIsZVtlLkRpZ2l0MD0yMV09IkRpZ2l0MCIsZVtlLkRpZ2l0MT0yMl09IkRpZ2l0MSIsZVtlLkRpZ2l0Mj0yM109IkRpZ2l0MiIsZVtlLkRpZ2l0Mz0yNF09IkRpZ2l0MyIsZVtlLkRpZ2l0ND0yNV09IkRpZ2l0NCIsZVtlLkRpZ2l0NT0yNl09IkRpZ2l0NSIsZVtlLkRpZ2l0Nj0yN109IkRpZ2l0NiIsZVtlLkRpZ2l0Nz0yOF09IkRpZ2l0NyIsZVtlLkRpZ2l0OD0yOV09IkRpZ2l0OCIsZVtlLkRpZ2l0OT0zMF09IkRpZ2l0OSIsZVtlLktleUE9MzFdPSJLZXlBIixlW2UuS2V5Qj0zMl09IktleUIiLGVbZS5LZXlDPTMzXT0iS2V5QyIsZVtlLktleUQ9MzRdPSJLZXlEIixlW2UuS2V5RT0zNV09IktleUUiLGVbZS5LZXlGPTM2XT0iS2V5RiIsZVtlLktleUc9MzddPSJLZXlHIixlW2UuS2V5SD0zOF09IktleUgiLGVbZS5LZXlJPTM5XT0iS2V5SSIsZVtlLktleUo9NDBdPSJLZXlKIixlW2UuS2V5Sz00MV09IktleUsiLGVbZS5LZXlMPTQyXT0iS2V5TCIsZVtlLktleU09NDNdPSJLZXlNIixlW2UuS2V5Tj00NF09IktleU4iLGVbZS5LZXlPPTQ1XT0iS2V5TyIsZVtlLktleVA9NDZdPSJLZXlQIixlW2UuS2V5UT00N109IktleVEiLGVbZS5LZXlSPTQ4XT0iS2V5UiIsZVtlLktleVM9NDldPSJLZXlTIixlW2UuS2V5VD01MF09IktleVQiLGVbZS5LZXlVPTUxXT0iS2V5VSIsZVtlLktleVY9NTJdPSJLZXlWIixlW2UuS2V5Vz01M109IktleVciLGVbZS5LZXlYPTU0XT0iS2V5WCIsZVtlLktleVk9NTVdPSJLZXlZIixlW2UuS2V5Wj01Nl09IktleVoiLGVbZS5NZXRhPTU3XT0iTWV0YSIsZVtlLkNvbnRleHRNZW51PTU4XT0iQ29udGV4dE1lbnUiLGVbZS5GMT01OV09IkYxIixlW2UuRjI9NjBdPSJGMiIsZVtlLkYzPTYxXT0iRjMiLGVbZS5GND02Ml09IkY0IixlW2UuRjU9NjNdPSJGNSIsZVtlLkY2PTY0XT0iRjYiLGVbZS5GNz02NV09IkY3IixlW2UuRjg9NjZdPSJGOCIsZVtlLkY5PTY3XT0iRjkiLGVbZS5GMTA9NjhdPSJGMTAiLGVbZS5GMTE9NjldPSJGMTEiLGVbZS5GMTI9NzBdPSJGMTIiLGVbZS5GMTM9NzFdPSJGMTMiLGVbZS5GMTQ9NzJdPSJGMTQiLGVbZS5GMTU9NzNdPSJGMTUiLGVbZS5GMTY9NzRdPSJGMTYiLGVbZS5GMTc9NzVdPSJGMTciLGVbZS5GMTg9NzZdPSJGMTgiLGVbZS5GMTk9NzddPSJGMTkiLGVbZS5GMjA9NzhdPSJGMjAiLGVbZS5GMjE9NzldPSJGMjEiLGVbZS5GMjI9ODBdPSJGMjIiLGVbZS5GMjM9ODFdPSJGMjMiLGVbZS5GMjQ9ODJdPSJGMjQiLGVbZS5OdW1Mb2NrPTgzXT0iTnVtTG9jayIsZVtlLlNjcm9sbExvY2s9ODRdPSJTY3JvbGxMb2NrIixlW2UuU2VtaWNvbG9uPTg1XT0iU2VtaWNvbG9uIixlW2UuRXF1YWw9ODZdPSJFcXVhbCIsZVtlLkNvbW1hPTg3XT0iQ29tbWEiLGVbZS5NaW51cz04OF09Ik1pbnVzIixlW2UuUGVyaW9kPTg5XT0iUGVyaW9kIixlW2UuU2xhc2g9OTBdPSJTbGFzaCIsZVtlLkJhY2txdW90ZT05MV09IkJhY2txdW90ZSIsZVtlLkJyYWNrZXRMZWZ0PTkyXT0iQnJhY2tldExlZnQiLGVbZS5CYWNrc2xhc2g9OTNdPSJCYWNrc2xhc2giLGVbZS5CcmFja2V0UmlnaHQ9OTRdPSJCcmFja2V0UmlnaHQiLGVbZS5RdW90ZT05NV09IlF1b3RlIixlW2UuT0VNXzg9OTZdPSJPRU1fOCIsZVtlLkludGxCYWNrc2xhc2g9OTddPSJJbnRsQmFja3NsYXNoIixlW2UuTnVtcGFkMD05OF09Ik51bXBhZDAiLGVbZS5OdW1wYWQxPTk5XT0iTnVtcGFkMSIsZVtlLk51bXBhZDI9MTAwXT0iTnVtcGFkMiIsZVtlLk51bXBhZDM9MTAxXT0iTnVtcGFkMyIsZVtlLk51bXBhZDQ9MTAyXT0iTnVtcGFkNCIsZVtlLk51bXBhZDU9MTAzXT0iTnVtcGFkNSIsZVtlLk51bXBhZDY9MTA0XT0iTnVtcGFkNiIsZVtlLk51bXBhZDc9MTA1XT0iTnVtcGFkNyIsZVtlLk51bXBhZDg9MTA2XT0iTnVtcGFkOCIsZVtlLk51bXBhZDk9MTA3XT0iTnVtcGFkOSIsZVtlLk51bXBhZE11bHRpcGx5PTEwOF09Ik51bXBhZE11bHRpcGx5IixlW2UuTnVtcGFkQWRkPTEwOV09Ik51bXBhZEFkZCIsZVtlLk5VTVBBRF9TRVBBUkFUT1I9MTEwXT0iTlVNUEFEX1NFUEFSQVRPUiIsZVtlLk51bXBhZFN1YnRyYWN0PTExMV09Ik51bXBhZFN1YnRyYWN0IixlW2UuTnVtcGFkRGVjaW1hbD0xMTJdPSJOdW1wYWREZWNpbWFsIixlW2UuTnVtcGFkRGl2aWRlPTExM109Ik51bXBhZERpdmlkZSIsZVtlLktFWV9JTl9DT01QT1NJVElPTj0xMTRdPSJLRVlfSU5fQ09NUE9TSVRJT04iLGVbZS5BQk5UX0MxPTExNV09IkFCTlRfQzEiLGVbZS5BQk5UX0MyPTExNl09IkFCTlRfQzIiLGVbZS5BdWRpb1ZvbHVtZU11dGU9MTE3XT0iQXVkaW9Wb2x1bWVNdXRlIixlW2UuQXVkaW9Wb2x1bWVVcD0xMThdPSJBdWRpb1ZvbHVtZVVwIixlW2UuQXVkaW9Wb2x1bWVEb3duPTExOV09IkF1ZGlvVm9sdW1lRG93biIsZVtlLkJyb3dzZXJTZWFyY2g9MTIwXT0iQnJvd3NlclNlYXJjaCIsZVtlLkJyb3dzZXJIb21lPTEyMV09IkJyb3dzZXJIb21lIixlW2UuQnJvd3NlckJhY2s9MTIyXT0iQnJvd3NlckJhY2siLGVbZS5Ccm93c2VyRm9yd2FyZD0xMjNdPSJCcm93c2VyRm9yd2FyZCIsZVtlLk1lZGlhVHJhY2tOZXh0PTEyNF09Ik1lZGlhVHJhY2tOZXh0IixlW2UuTWVkaWFUcmFja1ByZXZpb3VzPTEyNV09Ik1lZGlhVHJhY2tQcmV2aW91cyIsZVtlLk1lZGlhU3RvcD0xMjZdPSJNZWRpYVN0b3AiLGVbZS5NZWRpYVBsYXlQYXVzZT0xMjddPSJNZWRpYVBsYXlQYXVzZSIsZVtlLkxhdW5jaE1lZGlhUGxheWVyPTEyOF09IkxhdW5jaE1lZGlhUGxheWVyIixlW2UuTGF1bmNoTWFpbD0xMjldPSJMYXVuY2hNYWlsIixlW2UuTGF1bmNoQXBwMj0xMzBdPSJMYXVuY2hBcHAyIixlW2UuQ2xlYXI9MTMxXT0iQ2xlYXIiLGVbZS5NQVhfVkFMVUU9MTMyXT0iTUFYX1ZBTFVFIn0pKHNpfHwoc2k9e30pKTt2YXIgYWk7KGZ1bmN0aW9uKGUpe2VbZS5IaW50PTFdPSJIaW50IixlW2UuSW5mbz0yXT0iSW5mbyIsZVtlLldhcm5pbmc9NF09Ildhcm5pbmciLGVbZS5FcnJvcj04XT0iRXJyb3IifSkoYWl8fChhaT17fSkpO3ZhciBvaTsoZnVuY3Rpb24oZSl7ZVtlLlVubmVjZXNzYXJ5PTFdPSJVbm5lY2Vzc2FyeSIsZVtlLkRlcHJlY2F0ZWQ9Ml09IkRlcHJlY2F0ZWQifSkob2l8fChvaT17fSkpO3ZhciBCYTsoZnVuY3Rpb24oZSl7ZVtlLklubGluZT0xXT0iSW5saW5lIixlW2UuR3V0dGVyPTJdPSJHdXR0ZXIifSkoQmF8fChCYT17fSkpO3ZhciBxYTsoZnVuY3Rpb24oZSl7ZVtlLk5vcm1hbD0xXT0iTm9ybWFsIixlW2UuVW5kZXJsaW5lZD0yXT0iVW5kZXJsaW5lZCJ9KShxYXx8KHFhPXt9KSk7dmFyIGphOyhmdW5jdGlvbihlKXtlW2UuVU5LTk9XTj0wXT0iVU5LTk9XTiIsZVtlLlRFWFRBUkVBPTFdPSJURVhUQVJFQSIsZVtlLkdVVFRFUl9HTFlQSF9NQVJHSU49Ml09IkdVVFRFUl9HTFlQSF9NQVJHSU4iLGVbZS5HVVRURVJfTElORV9OVU1CRVJTPTNdPSJHVVRURVJfTElORV9OVU1CRVJTIixlW2UuR1VUVEVSX0xJTkVfREVDT1JBVElPTlM9NF09IkdVVFRFUl9MSU5FX0RFQ09SQVRJT05TIixlW2UuR1VUVEVSX1ZJRVdfWk9ORT01XT0iR1VUVEVSX1ZJRVdfWk9ORSIsZVtlLkNPTlRFTlRfVEVYVD02XT0iQ09OVEVOVF9URVhUIixlW2UuQ09OVEVOVF9FTVBUWT03XT0iQ09OVEVOVF9FTVBUWSIsZVtlLkNPTlRFTlRfVklFV19aT05FPThdPSJDT05URU5UX1ZJRVdfWk9ORSIsZVtlLkNPTlRFTlRfV0lER0VUPTldPSJDT05URU5UX1dJREdFVCIsZVtlLk9WRVJWSUVXX1JVTEVSPTEwXT0iT1ZFUlZJRVdfUlVMRVIiLGVbZS5TQ1JPTExCQVI9MTFdPSJTQ1JPTExCQVIiLGVbZS5PVkVSTEFZX1dJREdFVD0xMl09Ik9WRVJMQVlfV0lER0VUIixlW2UuT1VUU0lERV9FRElUT1I9MTNdPSJPVVRTSURFX0VESVRPUiJ9KShqYXx8KGphPXt9KSk7dmFyIEhhOyhmdW5jdGlvbihlKXtlW2UuQUlHZW5lcmF0ZWQ9MV09IkFJR2VuZXJhdGVkIn0pKEhhfHwoSGE9e30pKTt2YXIgR2E7KGZ1bmN0aW9uKGUpe2VbZS5JbnZva2U9MF09Ikludm9rZSIsZVtlLkF1dG9tYXRpYz0xXT0iQXV0b21hdGljIn0pKEdhfHwoR2E9e30pKTt2YXIgSmE7KGZ1bmN0aW9uKGUpe2VbZS5UT1BfUklHSFRfQ09STkVSPTBdPSJUT1BfUklHSFRfQ09STkVSIixlW2UuQk9UVE9NX1JJR0hUX0NPUk5FUj0xXT0iQk9UVE9NX1JJR0hUX0NPUk5FUiIsZVtlLlRPUF9DRU5URVI9Ml09IlRPUF9DRU5URVIifSkoSmF8fChKYT17fSkpO3ZhciBYYTsoZnVuY3Rpb24oZSl7ZVtlLkxlZnQ9MV09IkxlZnQiLGVbZS5DZW50ZXI9Ml09IkNlbnRlciIsZVtlLlJpZ2h0PTRdPSJSaWdodCIsZVtlLkZ1bGw9N109IkZ1bGwifSkoWGF8fChYYT17fSkpO3ZhciBZYTsoZnVuY3Rpb24oZSl7ZVtlLldvcmQ9MF09IldvcmQiLGVbZS5MaW5lPTFdPSJMaW5lIixlW2UuU3VnZ2VzdD0yXT0iU3VnZ2VzdCJ9KShZYXx8KFlhPXt9KSk7dmFyIFFhOyhmdW5jdGlvbihlKXtlW2UuTGVmdD0wXT0iTGVmdCIsZVtlLlJpZ2h0PTFdPSJSaWdodCIsZVtlLk5vbmU9Ml09Ik5vbmUiLGVbZS5MZWZ0T2ZJbmplY3RlZFRleHQ9M109IkxlZnRPZkluamVjdGVkVGV4dCIsZVtlLlJpZ2h0T2ZJbmplY3RlZFRleHQ9NF09IlJpZ2h0T2ZJbmplY3RlZFRleHQifSkoUWF8fChRYT17fSkpO3ZhciBLYTsoZnVuY3Rpb24oZSl7ZVtlLk9mZj0wXT0iT2ZmIixlW2UuT249MV09Ik9uIixlW2UuUmVsYXRpdmU9Ml09IlJlbGF0aXZlIixlW2UuSW50ZXJ2YWw9M109IkludGVydmFsIixlW2UuQ3VzdG9tPTRdPSJDdXN0b20ifSkoS2F8fChLYT17fSkpO3ZhciBaYTsoZnVuY3Rpb24oZSl7ZVtlLk5vbmU9MF09Ik5vbmUiLGVbZS5UZXh0PTFdPSJUZXh0IixlW2UuQmxvY2tzPTJdPSJCbG9ja3MifSkoWmF8fChaYT17fSkpO3ZhciBlbzsoZnVuY3Rpb24oZSl7ZVtlLlNtb290aD0wXT0iU21vb3RoIixlW2UuSW1tZWRpYXRlPTFdPSJJbW1lZGlhdGUifSkoZW98fChlbz17fSkpO3ZhciB0bzsoZnVuY3Rpb24oZSl7ZVtlLkF1dG89MV09IkF1dG8iLGVbZS5IaWRkZW49Ml09IkhpZGRlbiIsZVtlLlZpc2libGU9M109IlZpc2libGUifSkodG98fCh0bz17fSkpO3ZhciBsaTsoZnVuY3Rpb24oZSl7ZVtlLkxUUj0wXT0iTFRSIixlW2UuUlRMPTFdPSJSVEwifSkobGl8fChsaT17fSkpO3ZhciBubzsoZnVuY3Rpb24oZSl7ZS5PZmY9Im9mZiIsZS5PbkNvZGU9Im9uQ29kZSIsZS5Pbj0ib24ifSkobm98fChubz17fSkpO3ZhciBybzsoZnVuY3Rpb24oZSl7ZVtlLkludm9rZT0xXT0iSW52b2tlIixlW2UuVHJpZ2dlckNoYXJhY3Rlcj0yXT0iVHJpZ2dlckNoYXJhY3RlciIsZVtlLkNvbnRlbnRDaGFuZ2U9M109IkNvbnRlbnRDaGFuZ2UifSkocm98fChybz17fSkpO3ZhciBpbzsoZnVuY3Rpb24oZSl7ZVtlLkZpbGU9MF09IkZpbGUiLGVbZS5Nb2R1bGU9MV09Ik1vZHVsZSIsZVtlLk5hbWVzcGFjZT0yXT0iTmFtZXNwYWNlIixlW2UuUGFja2FnZT0zXT0iUGFja2FnZSIsZVtlLkNsYXNzPTRdPSJDbGFzcyIsZVtlLk1ldGhvZD01XT0iTWV0aG9kIixlW2UuUHJvcGVydHk9Nl09IlByb3BlcnR5IixlW2UuRmllbGQ9N109IkZpZWxkIixlW2UuQ29uc3RydWN0b3I9OF09IkNvbnN0cnVjdG9yIixlW2UuRW51bT05XT0iRW51bSIsZVtlLkludGVyZmFjZT0xMF09IkludGVyZmFjZSIsZVtlLkZ1bmN0aW9uPTExXT0iRnVuY3Rpb24iLGVbZS5WYXJpYWJsZT0xMl09IlZhcmlhYmxlIixlW2UuQ29uc3RhbnQ9MTNdPSJDb25zdGFudCIsZVtlLlN0cmluZz0xNF09IlN0cmluZyIsZVtlLk51bWJlcj0xNV09Ik51bWJlciIsZVtlLkJvb2xlYW49MTZdPSJCb29sZWFuIixlW2UuQXJyYXk9MTddPSJBcnJheSIsZVtlLk9iamVjdD0xOF09Ik9iamVjdCIsZVtlLktleT0xOV09IktleSIsZVtlLk51bGw9MjBdPSJOdWxsIixlW2UuRW51bU1lbWJlcj0yMV09IkVudW1NZW1iZXIiLGVbZS5TdHJ1Y3Q9MjJdPSJTdHJ1Y3QiLGVbZS5FdmVudD0yM109IkV2ZW50IixlW2UuT3BlcmF0b3I9MjRdPSJPcGVyYXRvciIsZVtlLlR5cGVQYXJhbWV0ZXI9MjVdPSJUeXBlUGFyYW1ldGVyIn0pKGlvfHwoaW89e30pKTt2YXIgc287KGZ1bmN0aW9uKGUpe2VbZS5EZXByZWNhdGVkPTFdPSJEZXByZWNhdGVkIn0pKHNvfHwoc289e30pKTt2YXIgYW87KGZ1bmN0aW9uKGUpe2VbZS5IaWRkZW49MF09IkhpZGRlbiIsZVtlLkJsaW5rPTFdPSJCbGluayIsZVtlLlNtb290aD0yXT0iU21vb3RoIixlW2UuUGhhc2U9M109IlBoYXNlIixlW2UuRXhwYW5kPTRdPSJFeHBhbmQiLGVbZS5Tb2xpZD01XT0iU29saWQifSkoYW98fChhbz17fSkpO3ZhciBvbzsoZnVuY3Rpb24oZSl7ZVtlLkxpbmU9MV09IkxpbmUiLGVbZS5CbG9jaz0yXT0iQmxvY2siLGVbZS5VbmRlcmxpbmU9M109IlVuZGVybGluZSIsZVtlLkxpbmVUaGluPTRdPSJMaW5lVGhpbiIsZVtlLkJsb2NrT3V0bGluZT01XT0iQmxvY2tPdXRsaW5lIixlW2UuVW5kZXJsaW5lVGhpbj02XT0iVW5kZXJsaW5lVGhpbiJ9KShvb3x8KG9vPXt9KSk7dmFyIGxvOyhmdW5jdGlvbihlKXtlW2UuQWx3YXlzR3Jvd3NXaGVuVHlwaW5nQXRFZGdlcz0wXT0iQWx3YXlzR3Jvd3NXaGVuVHlwaW5nQXRFZGdlcyIsZVtlLk5ldmVyR3Jvd3NXaGVuVHlwaW5nQXRFZGdlcz0xXT0iTmV2ZXJHcm93c1doZW5UeXBpbmdBdEVkZ2VzIixlW2UuR3Jvd3NPbmx5V2hlblR5cGluZ0JlZm9yZT0yXT0iR3Jvd3NPbmx5V2hlblR5cGluZ0JlZm9yZSIsZVtlLkdyb3dzT25seVdoZW5UeXBpbmdBZnRlcj0zXT0iR3Jvd3NPbmx5V2hlblR5cGluZ0FmdGVyIn0pKGxvfHwobG89e30pKTt2YXIgY287KGZ1bmN0aW9uKGUpe2VbZS5Ob25lPTBdPSJOb25lIixlW2UuU2FtZT0xXT0iU2FtZSIsZVtlLkluZGVudD0yXT0iSW5kZW50IixlW2UuRGVlcEluZGVudD0zXT0iRGVlcEluZGVudCJ9KShjb3x8KGNvPXt9KSk7Y29uc3QgdG49Y2xhc3MgdG57c3RhdGljIGNob3JkKHQsbil7cmV0dXJuIERkKHQsbil9fTt0bi5DdHJsQ21kPTIwNDgsdG4uU2hpZnQ9MTAyNCx0bi5BbHQ9NTEyLHRuLldpbkN0cmw9MjU2O2xldCBjaT10bjtmdW5jdGlvbiBQZCgpe3JldHVybntlZGl0b3I6dm9pZCAwLGxhbmd1YWdlczp2b2lkIDAsQ2FuY2VsbGF0aW9uVG9rZW5Tb3VyY2U6RWQsRW1pdHRlcjpMZSxLZXlDb2RlOnNpLEtleU1vZDpjaSxQb3NpdGlvbjpjZSxSYW5nZTpRLFNlbGVjdGlvbjpFZSxTZWxlY3Rpb25EaXJlY3Rpb246bGksTWFya2VyU2V2ZXJpdHk6YWksTWFya2VyVGFnOm9pLFVyaTpKcixUb2tlbjp6ZH19dmFyIGhvO2NsYXNzIFRke2NvbnN0cnVjdG9yKCl7dGhpc1tob109IkxpbmtlZE1hcCIsdGhpcy5fbWFwPW5ldyBNYXAsdGhpcy5faGVhZD12b2lkIDAsdGhpcy5fdGFpbD12b2lkIDAsdGhpcy5fc2l6ZT0wLHRoaXMuX3N0YXRlPTB9Y2xlYXIoKXt0aGlzLl9tYXAuY2xlYXIoKSx0aGlzLl9oZWFkPXZvaWQgMCx0aGlzLl90YWlsPXZvaWQgMCx0aGlzLl9zaXplPTAsdGhpcy5fc3RhdGUrK31pc0VtcHR5KCl7cmV0dXJuIXRoaXMuX2hlYWQmJiF0aGlzLl90YWlsfWdldCBzaXplKCl7cmV0dXJuIHRoaXMuX3NpemV9Z2V0IGZpcnN0KCl7cmV0dXJuIHRoaXMuX2hlYWQ/LnZhbHVlfWdldCBsYXN0KCl7cmV0dXJuIHRoaXMuX3RhaWw/LnZhbHVlfWhhcyh0KXtyZXR1cm4gdGhpcy5fbWFwLmhhcyh0KX1nZXQodCxuPTApe2NvbnN0IHI9dGhpcy5fbWFwLmdldCh0KTtpZihyKXJldHVybiBuIT09MCYmdGhpcy50b3VjaChyLG4pLHIudmFsdWV9c2V0KHQsbixyPTApe2xldCBpPXRoaXMuX21hcC5nZXQodCk7aWYoaSlpLnZhbHVlPW4sciE9PTAmJnRoaXMudG91Y2goaSxyKTtlbHNle3N3aXRjaChpPXtrZXk6dCx2YWx1ZTpuLG5leHQ6dm9pZCAwLHByZXZpb3VzOnZvaWQgMH0scil7Y2FzZSAwOnRoaXMuYWRkSXRlbUxhc3QoaSk7YnJlYWs7Y2FzZSAxOnRoaXMuYWRkSXRlbUZpcnN0KGkpO2JyZWFrO2Nhc2UgMjp0aGlzLmFkZEl0ZW1MYXN0KGkpO2JyZWFrO2RlZmF1bHQ6dGhpcy5hZGRJdGVtTGFzdChpKTticmVha310aGlzLl9tYXAuc2V0KHQsaSksdGhpcy5fc2l6ZSsrfXJldHVybiB0aGlzfWRlbGV0ZSh0KXtyZXR1cm4hIXRoaXMucmVtb3ZlKHQpfXJlbW92ZSh0KXtjb25zdCBuPXRoaXMuX21hcC5nZXQodCk7aWYobilyZXR1cm4gdGhpcy5fbWFwLmRlbGV0ZSh0KSx0aGlzLnJlbW92ZUl0ZW0obiksdGhpcy5fc2l6ZS0tLG4udmFsdWV9c2hpZnQoKXtpZighdGhpcy5faGVhZCYmIXRoaXMuX3RhaWwpcmV0dXJuO2lmKCF0aGlzLl9oZWFkfHwhdGhpcy5fdGFpbCl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgbGlzdCIpO2NvbnN0IHQ9dGhpcy5faGVhZDtyZXR1cm4gdGhpcy5fbWFwLmRlbGV0ZSh0LmtleSksdGhpcy5yZW1vdmVJdGVtKHQpLHRoaXMuX3NpemUtLSx0LnZhbHVlfWZvckVhY2godCxuKXtjb25zdCByPXRoaXMuX3N0YXRlO2xldCBpPXRoaXMuX2hlYWQ7Zm9yKDtpOyl7aWYobj90LmJpbmQobikoaS52YWx1ZSxpLmtleSx0aGlzKTp0KGkudmFsdWUsaS5rZXksdGhpcyksdGhpcy5fc3RhdGUhPT1yKXRocm93IG5ldyBFcnJvcigiTGlua2VkTWFwIGdvdCBtb2RpZmllZCBkdXJpbmcgaXRlcmF0aW9uLiIpO2k9aS5uZXh0fX1rZXlzKCl7Y29uc3QgdD10aGlzLG49dGhpcy5fc3RhdGU7bGV0IHI9dGhpcy5faGVhZDtjb25zdCBpPXtbU3ltYm9sLml0ZXJhdG9yXSgpe3JldHVybiBpfSxuZXh0KCl7aWYodC5fc3RhdGUhPT1uKXRocm93IG5ldyBFcnJvcigiTGlua2VkTWFwIGdvdCBtb2RpZmllZCBkdXJpbmcgaXRlcmF0aW9uLiIpO2lmKHIpe2NvbnN0IHM9e3ZhbHVlOnIua2V5LGRvbmU6ITF9O3JldHVybiByPXIubmV4dCxzfWVsc2UgcmV0dXJue3ZhbHVlOnZvaWQgMCxkb25lOiEwfX19O3JldHVybiBpfXZhbHVlcygpe2NvbnN0IHQ9dGhpcyxuPXRoaXMuX3N0YXRlO2xldCByPXRoaXMuX2hlYWQ7Y29uc3QgaT17W1N5bWJvbC5pdGVyYXRvcl0oKXtyZXR1cm4gaX0sbmV4dCgpe2lmKHQuX3N0YXRlIT09bil0aHJvdyBuZXcgRXJyb3IoIkxpbmtlZE1hcCBnb3QgbW9kaWZpZWQgZHVyaW5nIGl0ZXJhdGlvbi4iKTtpZihyKXtjb25zdCBzPXt2YWx1ZTpyLnZhbHVlLGRvbmU6ITF9O3JldHVybiByPXIubmV4dCxzfWVsc2UgcmV0dXJue3ZhbHVlOnZvaWQgMCxkb25lOiEwfX19O3JldHVybiBpfWVudHJpZXMoKXtjb25zdCB0PXRoaXMsbj10aGlzLl9zdGF0ZTtsZXQgcj10aGlzLl9oZWFkO2NvbnN0IGk9e1tTeW1ib2wuaXRlcmF0b3JdKCl7cmV0dXJuIGl9LG5leHQoKXtpZih0Ll9zdGF0ZSE9PW4pdGhyb3cgbmV3IEVycm9yKCJMaW5rZWRNYXAgZ290IG1vZGlmaWVkIGR1cmluZyBpdGVyYXRpb24uIik7aWYocil7Y29uc3Qgcz17dmFsdWU6W3Iua2V5LHIudmFsdWVdLGRvbmU6ITF9O3JldHVybiByPXIubmV4dCxzfWVsc2UgcmV0dXJue3ZhbHVlOnZvaWQgMCxkb25lOiEwfX19O3JldHVybiBpfVsoaG89U3ltYm9sLnRvU3RyaW5nVGFnLFN5bWJvbC5pdGVyYXRvcildKCl7cmV0dXJuIHRoaXMuZW50cmllcygpfXRyaW1PbGQodCl7aWYodD49dGhpcy5zaXplKXJldHVybjtpZih0PT09MCl7dGhpcy5jbGVhcigpO3JldHVybn1sZXQgbj10aGlzLl9oZWFkLHI9dGhpcy5zaXplO2Zvcig7biYmcj50Oyl0aGlzLl9tYXAuZGVsZXRlKG4ua2V5KSxuPW4ubmV4dCxyLS07dGhpcy5faGVhZD1uLHRoaXMuX3NpemU9cixuJiYobi5wcmV2aW91cz12b2lkIDApLHRoaXMuX3N0YXRlKyt9dHJpbU5ldyh0KXtpZih0Pj10aGlzLnNpemUpcmV0dXJuO2lmKHQ9PT0wKXt0aGlzLmNsZWFyKCk7cmV0dXJufWxldCBuPXRoaXMuX3RhaWwscj10aGlzLnNpemU7Zm9yKDtuJiZyPnQ7KXRoaXMuX21hcC5kZWxldGUobi5rZXkpLG49bi5wcmV2aW91cyxyLS07dGhpcy5fdGFpbD1uLHRoaXMuX3NpemU9cixuJiYobi5uZXh0PXZvaWQgMCksdGhpcy5fc3RhdGUrK31hZGRJdGVtRmlyc3QodCl7aWYoIXRoaXMuX2hlYWQmJiF0aGlzLl90YWlsKXRoaXMuX3RhaWw9dDtlbHNlIGlmKHRoaXMuX2hlYWQpdC5uZXh0PXRoaXMuX2hlYWQsdGhpcy5faGVhZC5wcmV2aW91cz10O2Vsc2UgdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIGxpc3QiKTt0aGlzLl9oZWFkPXQsdGhpcy5fc3RhdGUrK31hZGRJdGVtTGFzdCh0KXtpZighdGhpcy5faGVhZCYmIXRoaXMuX3RhaWwpdGhpcy5faGVhZD10O2Vsc2UgaWYodGhpcy5fdGFpbCl0LnByZXZpb3VzPXRoaXMuX3RhaWwsdGhpcy5fdGFpbC5uZXh0PXQ7ZWxzZSB0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgbGlzdCIpO3RoaXMuX3RhaWw9dCx0aGlzLl9zdGF0ZSsrfXJlbW92ZUl0ZW0odCl7aWYodD09PXRoaXMuX2hlYWQmJnQ9PT10aGlzLl90YWlsKXRoaXMuX2hlYWQ9dm9pZCAwLHRoaXMuX3RhaWw9dm9pZCAwO2Vsc2UgaWYodD09PXRoaXMuX2hlYWQpe2lmKCF0Lm5leHQpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIGxpc3QiKTt0Lm5leHQucHJldmlvdXM9dm9pZCAwLHRoaXMuX2hlYWQ9dC5uZXh0fWVsc2UgaWYodD09PXRoaXMuX3RhaWwpe2lmKCF0LnByZXZpb3VzKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBsaXN0Iik7dC5wcmV2aW91cy5uZXh0PXZvaWQgMCx0aGlzLl90YWlsPXQucHJldmlvdXN9ZWxzZXtjb25zdCBuPXQubmV4dCxyPXQucHJldmlvdXM7aWYoIW58fCFyKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBsaXN0Iik7bi5wcmV2aW91cz1yLHIubmV4dD1ufXQubmV4dD12b2lkIDAsdC5wcmV2aW91cz12b2lkIDAsdGhpcy5fc3RhdGUrK310b3VjaCh0LG4pe2lmKCF0aGlzLl9oZWFkfHwhdGhpcy5fdGFpbCl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgbGlzdCIpO2lmKCEobiE9PTEmJm4hPT0yKSl7aWYobj09PTEpe2lmKHQ9PT10aGlzLl9oZWFkKXJldHVybjtjb25zdCByPXQubmV4dCxpPXQucHJldmlvdXM7dD09PXRoaXMuX3RhaWw/KGkubmV4dD12b2lkIDAsdGhpcy5fdGFpbD1pKTooci5wcmV2aW91cz1pLGkubmV4dD1yKSx0LnByZXZpb3VzPXZvaWQgMCx0Lm5leHQ9dGhpcy5faGVhZCx0aGlzLl9oZWFkLnByZXZpb3VzPXQsdGhpcy5faGVhZD10LHRoaXMuX3N0YXRlKyt9ZWxzZSBpZihuPT09Mil7aWYodD09PXRoaXMuX3RhaWwpcmV0dXJuO2NvbnN0IHI9dC5uZXh0LGk9dC5wcmV2aW91czt0PT09dGhpcy5faGVhZD8oci5wcmV2aW91cz12b2lkIDAsdGhpcy5faGVhZD1yKTooci5wcmV2aW91cz1pLGkubmV4dD1yKSx0Lm5leHQ9dm9pZCAwLHQucHJldmlvdXM9dGhpcy5fdGFpbCx0aGlzLl90YWlsLm5leHQ9dCx0aGlzLl90YWlsPXQsdGhpcy5fc3RhdGUrK319fXRvSlNPTigpe2NvbnN0IHQ9W107cmV0dXJuIHRoaXMuZm9yRWFjaCgobixyKT0+e3QucHVzaChbcixuXSl9KSx0fWZyb21KU09OKHQpe3RoaXMuY2xlYXIoKTtmb3IoY29uc3RbbixyXW9mIHQpdGhpcy5zZXQobixyKX19Y2xhc3MgT2QgZXh0ZW5kcyBUZHtjb25zdHJ1Y3Rvcih0LG49MSl7c3VwZXIoKSx0aGlzLl9saW1pdD10LHRoaXMuX3JhdGlvPU1hdGgubWluKE1hdGgubWF4KDAsbiksMSl9Z2V0IGxpbWl0KCl7cmV0dXJuIHRoaXMuX2xpbWl0fXNldCBsaW1pdCh0KXt0aGlzLl9saW1pdD10LHRoaXMuY2hlY2tUcmltKCl9Z2V0KHQsbj0yKXtyZXR1cm4gc3VwZXIuZ2V0KHQsbil9cGVlayh0KXtyZXR1cm4gc3VwZXIuZ2V0KHQsMCl9c2V0KHQsbil7cmV0dXJuIHN1cGVyLnNldCh0LG4sMiksdGhpc31jaGVja1RyaW0oKXt0aGlzLnNpemU+dGhpcy5fbGltaXQmJnRoaXMudHJpbShNYXRoLnJvdW5kKHRoaXMuX2xpbWl0KnRoaXMuX3JhdGlvKSl9fWNsYXNzIFdkIGV4dGVuZHMgT2R7Y29uc3RydWN0b3IodCxuPTEpe3N1cGVyKHQsbil9dHJpbSh0KXt0aGlzLnRyaW1PbGQodCl9c2V0KHQsbil7cmV0dXJuIHN1cGVyLnNldCh0LG4pLHRoaXMuY2hlY2tUcmltKCksdGhpc319Y2xhc3MgVmR7Y29uc3RydWN0b3IoKXt0aGlzLm1hcD1uZXcgTWFwfWFkZCh0LG4pe2xldCByPXRoaXMubWFwLmdldCh0KTtyfHwocj1uZXcgU2V0LHRoaXMubWFwLnNldCh0LHIpKSxyLmFkZChuKX1kZWxldGUodCxuKXtjb25zdCByPXRoaXMubWFwLmdldCh0KTtyJiYoci5kZWxldGUobiksci5zaXplPT09MCYmdGhpcy5tYXAuZGVsZXRlKHQpKX1mb3JFYWNoKHQsbil7Y29uc3Qgcj10aGlzLm1hcC5nZXQodCk7ciYmci5mb3JFYWNoKG4pfWdldCh0KXtjb25zdCBuPXRoaXMubWFwLmdldCh0KTtyZXR1cm4gbnx8bmV3IFNldH19bmV3IFdkKDEwKTt2YXIgdW87KGZ1bmN0aW9uKGUpe2VbZS5MZWZ0PTFdPSJMZWZ0IixlW2UuQ2VudGVyPTJdPSJDZW50ZXIiLGVbZS5SaWdodD00XT0iUmlnaHQiLGVbZS5GdWxsPTddPSJGdWxsIn0pKHVvfHwodW89e30pKTt2YXIgcG87KGZ1bmN0aW9uKGUpe2VbZS5MZWZ0PTFdPSJMZWZ0IixlW2UuQ2VudGVyPTJdPSJDZW50ZXIiLGVbZS5SaWdodD0zXT0iUmlnaHQifSkocG98fChwbz17fSkpO3ZhciBtbzsoZnVuY3Rpb24oZSl7ZVtlLkJvdGg9MF09IkJvdGgiLGVbZS5SaWdodD0xXT0iUmlnaHQiLGVbZS5MZWZ0PTJdPSJMZWZ0IixlW2UuTm9uZT0zXT0iTm9uZSJ9KShtb3x8KG1vPXt9KSk7ZnVuY3Rpb24gVWQoZSx0LG4scixpKXtpZihyPT09MClyZXR1cm4hMDtjb25zdCBzPXQuY2hhckNvZGVBdChyLTEpO2lmKGUuZ2V0KHMpIT09MHx8cz09PTEzfHxzPT09MTApcmV0dXJuITA7aWYoaT4wKXtjb25zdCBhPXQuY2hhckNvZGVBdChyKTtpZihlLmdldChhKSE9PTApcmV0dXJuITB9cmV0dXJuITF9ZnVuY3Rpb24gJGQoZSx0LG4scixpKXtpZihyK2k9PT1uKXJldHVybiEwO2NvbnN0IHM9dC5jaGFyQ29kZUF0KHIraSk7aWYoZS5nZXQocykhPT0wfHxzPT09MTN8fHM9PT0xMClyZXR1cm4hMDtpZihpPjApe2NvbnN0IGE9dC5jaGFyQ29kZUF0KHIraS0xKTtpZihlLmdldChhKSE9PTApcmV0dXJuITB9cmV0dXJuITF9ZnVuY3Rpb24gQmQoZSx0LG4scixpKXtyZXR1cm4gVWQoZSx0LG4scixpKSYmJGQoZSx0LG4scixpKX1jbGFzcyBxZHtjb25zdHJ1Y3Rvcih0LG4pe3RoaXMuX3dvcmRTZXBhcmF0b3JzPXQsdGhpcy5fc2VhcmNoUmVnZXg9bix0aGlzLl9wcmV2TWF0Y2hTdGFydEluZGV4PS0xLHRoaXMuX3ByZXZNYXRjaExlbmd0aD0wfXJlc2V0KHQpe3RoaXMuX3NlYXJjaFJlZ2V4Lmxhc3RJbmRleD10LHRoaXMuX3ByZXZNYXRjaFN0YXJ0SW5kZXg9LTEsdGhpcy5fcHJldk1hdGNoTGVuZ3RoPTB9bmV4dCh0KXtjb25zdCBuPXQubGVuZ3RoO2xldCByO2Rve2lmKHRoaXMuX3ByZXZNYXRjaFN0YXJ0SW5kZXgrdGhpcy5fcHJldk1hdGNoTGVuZ3RoPT09bnx8KHI9dGhpcy5fc2VhcmNoUmVnZXguZXhlYyh0KSwhcikpcmV0dXJuIG51bGw7Y29uc3QgaT1yLmluZGV4LHM9clswXS5sZW5ndGg7aWYoaT09PXRoaXMuX3ByZXZNYXRjaFN0YXJ0SW5kZXgmJnM9PT10aGlzLl9wcmV2TWF0Y2hMZW5ndGgpe2lmKHM9PT0wKXtJaCh0LG4sdGhpcy5fc2VhcmNoUmVnZXgubGFzdEluZGV4KT42NTUzNT90aGlzLl9zZWFyY2hSZWdleC5sYXN0SW5kZXgrPTI6dGhpcy5fc2VhcmNoUmVnZXgubGFzdEluZGV4Kz0xO2NvbnRpbnVlfXJldHVybiBudWxsfWlmKHRoaXMuX3ByZXZNYXRjaFN0YXJ0SW5kZXg9aSx0aGlzLl9wcmV2TWF0Y2hMZW5ndGg9cywhdGhpcy5fd29yZFNlcGFyYXRvcnN8fEJkKHRoaXMuX3dvcmRTZXBhcmF0b3JzLHQsbixpLHMpKXJldHVybiByfXdoaWxlKHIpO3JldHVybiBudWxsfX1mdW5jdGlvbiBqZChlLHQ9IlVucmVhY2hhYmxlIil7dGhyb3cgbmV3IEVycm9yKHQpfWZ1bmN0aW9uIEpuKGUpe2lmKCFlKCkpe2RlYnVnZ2VyO2UoKSxHZShuZXcgX2UoIkFzc2VydGlvbiBGYWlsZWQiKSl9fWZ1bmN0aW9uIGZvKGUsdCl7bGV0IG49MDtmb3IoO248ZS5sZW5ndGgtMTspe2NvbnN0IHI9ZVtuXSxpPWVbbisxXTtpZighdChyLGkpKXJldHVybiExO24rK31yZXR1cm4hMH1jbGFzcyBIZHtzdGF0aWMgY29tcHV0ZVVuaWNvZGVIaWdobGlnaHRzKHQsbixyKXtjb25zdCBpPXI/ci5zdGFydExpbmVOdW1iZXI6MSxzPXI/ci5lbmRMaW5lTnVtYmVyOnQuZ2V0TGluZUNvdW50KCksYT1uZXcgZ28obiksbD1hLmdldENhbmRpZGF0ZUNvZGVQb2ludHMoKTtsZXQgbztsPT09ImFsbE5vbkJhc2ljQXNjaWkiP289bmV3IFJlZ0V4cCgiW15cXHRcXG5cXHJcXHgyMC1cXHg3RV0iLCJnIik6bz1uZXcgUmVnRXhwKGAke0dkKEFycmF5LmZyb20obCkpfWAsImciKTtjb25zdCBjPW5ldyBxZChudWxsLG8pLGQ9W107bGV0IHU9ITEsZixtPTAsdj0wLHk9MDtlOmZvcihsZXQgXz1pLGs9cztfPD1rO18rKyl7Y29uc3QgRD10LmdldExpbmVDb250ZW50KF8pLE49RC5sZW5ndGg7Yy5yZXNldCgwKTtkbyBpZihmPWMubmV4dChEKSxmKXtsZXQgRT1mLmluZGV4LFI9Zi5pbmRleCtmWzBdLmxlbmd0aDtpZihFPjApe2NvbnN0ICQ9RC5jaGFyQ29kZUF0KEUtMSk7T24oJCkmJkUtLX1pZihSKzE8Til7Y29uc3QgJD1ELmNoYXJDb2RlQXQoUi0xKTtPbigkKSYmUisrfWNvbnN0IE09RC5zdWJzdHJpbmcoRSxSKTtsZXQgVD1LcihFKzEsaWEsRCwwKTtUJiZULmVuZENvbHVtbjw9RSsxJiYoVD1udWxsKTtjb25zdCBQPWEuc2hvdWxkSGlnaGxpZ2h0Tm9uQmFzaWNBU0NJSShNLFQ/VC53b3JkOm51bGwpO2lmKFAhPT0wKXtpZihQPT09Mz9tKys6UD09PTI/disrOlA9PT0xP3krKzpqZCgpLGQubGVuZ3RoPj0xZTMpe3U9ITA7YnJlYWsgZX1kLnB1c2gobmV3IFEoXyxFKzEsXyxSKzEpKX19d2hpbGUoZil9cmV0dXJue3JhbmdlczpkLGhhc01vcmU6dSxhbWJpZ3VvdXNDaGFyYWN0ZXJDb3VudDptLGludmlzaWJsZUNoYXJhY3RlckNvdW50OnYsbm9uQmFzaWNBc2NpaUNoYXJhY3RlckNvdW50Onl9fXN0YXRpYyBjb21wdXRlVW5pY29kZUhpZ2hsaWdodFJlYXNvbih0LG4pe2NvbnN0IHI9bmV3IGdvKG4pO3N3aXRjaChyLnNob3VsZEhpZ2hsaWdodE5vbkJhc2ljQVNDSUkodCxudWxsKSl7Y2FzZSAwOnJldHVybiBudWxsO2Nhc2UgMjpyZXR1cm57a2luZDoxfTtjYXNlIDM6e2NvbnN0IHM9dC5jb2RlUG9pbnRBdCgwKSxhPXIuYW1iaWd1b3VzQ2hhcmFjdGVycy5nZXRQcmltYXJ5Q29uZnVzYWJsZShzKSxsPW9uLmdldExvY2FsZXMoKS5maWx0ZXIobz0+IW9uLmdldEluc3RhbmNlKG5ldyBTZXQoWy4uLm4uYWxsb3dlZExvY2FsZXMsb10pKS5pc0FtYmlndW91cyhzKSk7cmV0dXJue2tpbmQ6MCxjb25mdXNhYmxlV2l0aDpTdHJpbmcuZnJvbUNvZGVQb2ludChhKSxub3RBbWJpZ3VvdXNJbkxvY2FsZXM6bH19Y2FzZSAxOnJldHVybntraW5kOjJ9fX19ZnVuY3Rpb24gR2QoZSx0KXtyZXR1cm5gWyR7RmgoZS5tYXAocj0+U3RyaW5nLmZyb21Db2RlUG9pbnQocikpLmpvaW4oIiIpKX1dYH1jbGFzcyBnb3tjb25zdHJ1Y3Rvcih0KXt0aGlzLm9wdGlvbnM9dCx0aGlzLmFsbG93ZWRDb2RlUG9pbnRzPW5ldyBTZXQodC5hbGxvd2VkQ29kZVBvaW50cyksdGhpcy5hbWJpZ3VvdXNDaGFyYWN0ZXJzPW9uLmdldEluc3RhbmNlKG5ldyBTZXQodC5hbGxvd2VkTG9jYWxlcykpfWdldENhbmRpZGF0ZUNvZGVQb2ludHMoKXtpZih0aGlzLm9wdGlvbnMubm9uQmFzaWNBU0NJSSlyZXR1cm4iYWxsTm9uQmFzaWNBc2NpaSI7Y29uc3QgdD1uZXcgU2V0O2lmKHRoaXMub3B0aW9ucy5pbnZpc2libGVDaGFyYWN0ZXJzKWZvcihjb25zdCBuIG9mIGxuLmNvZGVQb2ludHMpYm8oU3RyaW5nLmZyb21Db2RlUG9pbnQobikpfHx0LmFkZChuKTtpZih0aGlzLm9wdGlvbnMuYW1iaWd1b3VzQ2hhcmFjdGVycylmb3IoY29uc3QgbiBvZiB0aGlzLmFtYmlndW91c0NoYXJhY3RlcnMuZ2V0Q29uZnVzYWJsZUNvZGVQb2ludHMoKSl0LmFkZChuKTtmb3IoY29uc3QgbiBvZiB0aGlzLmFsbG93ZWRDb2RlUG9pbnRzKXQuZGVsZXRlKG4pO3JldHVybiB0fXNob3VsZEhpZ2hsaWdodE5vbkJhc2ljQVNDSUkodCxuKXtjb25zdCByPXQuY29kZVBvaW50QXQoMCk7aWYodGhpcy5hbGxvd2VkQ29kZVBvaW50cy5oYXMocikpcmV0dXJuIDA7aWYodGhpcy5vcHRpb25zLm5vbkJhc2ljQVNDSUkpcmV0dXJuIDE7bGV0IGk9ITEscz0hMTtpZihuKWZvcihjb25zdCBhIG9mIG4pe2NvbnN0IGw9YS5jb2RlUG9pbnRBdCgwKSxvPU1oKGEpO2k9aXx8bywhbyYmIXRoaXMuYW1iaWd1b3VzQ2hhcmFjdGVycy5pc0FtYmlndW91cyhsKSYmIWxuLmlzSW52aXNpYmxlQ2hhcmFjdGVyKGwpJiYocz0hMCl9cmV0dXJuIWkmJnM/MDp0aGlzLm9wdGlvbnMuaW52aXNpYmxlQ2hhcmFjdGVycyYmIWJvKHQpJiZsbi5pc0ludmlzaWJsZUNoYXJhY3RlcihyKT8yOnRoaXMub3B0aW9ucy5hbWJpZ3VvdXNDaGFyYWN0ZXJzJiZ0aGlzLmFtYmlndW91c0NoYXJhY3RlcnMuaXNBbWJpZ3VvdXMocik/MzowfX1mdW5jdGlvbiBibyhlKXtyZXR1cm4gZT09PSIgInx8ZT09PWAKYHx8ZT09PSIJIn1jbGFzcyBYbntjb25zdHJ1Y3Rvcih0LG4scil7dGhpcy5jaGFuZ2VzPXQsdGhpcy5tb3Zlcz1uLHRoaXMuaGl0VGltZW91dD1yfX1jbGFzcyBKZHtjb25zdHJ1Y3Rvcih0LG4pe3RoaXMubGluZVJhbmdlTWFwcGluZz10LHRoaXMuY2hhbmdlcz1ufX1jbGFzcyBYe3N0YXRpYyBhZGRSYW5nZSh0LG4pe2xldCByPTA7Zm9yKDtyPG4ubGVuZ3RoJiZuW3JdLmVuZEV4Y2x1c2l2ZTx0LnN0YXJ0OylyKys7bGV0IGk9cjtmb3IoO2k8bi5sZW5ndGgmJm5baV0uc3RhcnQ8PXQuZW5kRXhjbHVzaXZlOylpKys7aWYocj09PWkpbi5zcGxpY2UociwwLHQpO2Vsc2V7Y29uc3Qgcz1NYXRoLm1pbih0LnN0YXJ0LG5bcl0uc3RhcnQpLGE9TWF0aC5tYXgodC5lbmRFeGNsdXNpdmUsbltpLTFdLmVuZEV4Y2x1c2l2ZSk7bi5zcGxpY2UocixpLXIsbmV3IFgocyxhKSl9fXN0YXRpYyB0cnlDcmVhdGUodCxuKXtpZighKHQ+bikpcmV0dXJuIG5ldyBYKHQsbil9c3RhdGljIG9mTGVuZ3RoKHQpe3JldHVybiBuZXcgWCgwLHQpfXN0YXRpYyBvZlN0YXJ0QW5kTGVuZ3RoKHQsbil7cmV0dXJuIG5ldyBYKHQsdCtuKX1jb25zdHJ1Y3Rvcih0LG4pe2lmKHRoaXMuc3RhcnQ9dCx0aGlzLmVuZEV4Y2x1c2l2ZT1uLHQ+bil0aHJvdyBuZXcgX2UoYEludmFsaWQgcmFuZ2U6ICR7dGhpcy50b1N0cmluZygpfWApfWdldCBpc0VtcHR5KCl7cmV0dXJuIHRoaXMuc3RhcnQ9PT10aGlzLmVuZEV4Y2x1c2l2ZX1kZWx0YSh0KXtyZXR1cm4gbmV3IFgodGhpcy5zdGFydCt0LHRoaXMuZW5kRXhjbHVzaXZlK3QpfWRlbHRhU3RhcnQodCl7cmV0dXJuIG5ldyBYKHRoaXMuc3RhcnQrdCx0aGlzLmVuZEV4Y2x1c2l2ZSl9ZGVsdGFFbmQodCl7cmV0dXJuIG5ldyBYKHRoaXMuc3RhcnQsdGhpcy5lbmRFeGNsdXNpdmUrdCl9Z2V0IGxlbmd0aCgpe3JldHVybiB0aGlzLmVuZEV4Y2x1c2l2ZS10aGlzLnN0YXJ0fXRvU3RyaW5nKCl7cmV0dXJuYFske3RoaXMuc3RhcnR9LCAke3RoaXMuZW5kRXhjbHVzaXZlfSlgfWNvbnRhaW5zKHQpe3JldHVybiB0aGlzLnN0YXJ0PD10JiZ0PHRoaXMuZW5kRXhjbHVzaXZlfWpvaW4odCl7cmV0dXJuIG5ldyBYKE1hdGgubWluKHRoaXMuc3RhcnQsdC5zdGFydCksTWF0aC5tYXgodGhpcy5lbmRFeGNsdXNpdmUsdC5lbmRFeGNsdXNpdmUpKX1pbnRlcnNlY3QodCl7Y29uc3Qgbj1NYXRoLm1heCh0aGlzLnN0YXJ0LHQuc3RhcnQpLHI9TWF0aC5taW4odGhpcy5lbmRFeGNsdXNpdmUsdC5lbmRFeGNsdXNpdmUpO2lmKG48PXIpcmV0dXJuIG5ldyBYKG4scil9aW50ZXJzZWN0cyh0KXtjb25zdCBuPU1hdGgubWF4KHRoaXMuc3RhcnQsdC5zdGFydCkscj1NYXRoLm1pbih0aGlzLmVuZEV4Y2x1c2l2ZSx0LmVuZEV4Y2x1c2l2ZSk7cmV0dXJuIG48cn1pc0JlZm9yZSh0KXtyZXR1cm4gdGhpcy5lbmRFeGNsdXNpdmU8PXQuc3RhcnR9aXNBZnRlcih0KXtyZXR1cm4gdGhpcy5zdGFydD49dC5lbmRFeGNsdXNpdmV9c2xpY2UodCl7cmV0dXJuIHQuc2xpY2UodGhpcy5zdGFydCx0aGlzLmVuZEV4Y2x1c2l2ZSl9c3Vic3RyaW5nKHQpe3JldHVybiB0LnN1YnN0cmluZyh0aGlzLnN0YXJ0LHRoaXMuZW5kRXhjbHVzaXZlKX1jbGlwKHQpe2lmKHRoaXMuaXNFbXB0eSl0aHJvdyBuZXcgX2UoYEludmFsaWQgY2xpcHBpbmcgcmFuZ2U6ICR7dGhpcy50b1N0cmluZygpfWApO3JldHVybiBNYXRoLm1heCh0aGlzLnN0YXJ0LE1hdGgubWluKHRoaXMuZW5kRXhjbHVzaXZlLTEsdCkpfWNsaXBDeWNsaWModCl7aWYodGhpcy5pc0VtcHR5KXRocm93IG5ldyBfZShgSW52YWxpZCBjbGlwcGluZyByYW5nZTogJHt0aGlzLnRvU3RyaW5nKCl9YCk7cmV0dXJuIHQ8dGhpcy5zdGFydD90aGlzLmVuZEV4Y2x1c2l2ZS0odGhpcy5zdGFydC10KSV0aGlzLmxlbmd0aDp0Pj10aGlzLmVuZEV4Y2x1c2l2ZT90aGlzLnN0YXJ0Kyh0LXRoaXMuc3RhcnQpJXRoaXMubGVuZ3RoOnR9Zm9yRWFjaCh0KXtmb3IobGV0IG49dGhpcy5zdGFydDtuPHRoaXMuZW5kRXhjbHVzaXZlO24rKyl0KG4pfX1mdW5jdGlvbiBPdChlLHQpe2NvbnN0IG49ZG4oZSx0KTtyZXR1cm4gbj09PS0xP3ZvaWQgMDplW25dfWZ1bmN0aW9uIGRuKGUsdCxuPTAscj1lLmxlbmd0aCl7bGV0IGk9bixzPXI7Zm9yKDtpPHM7KXtjb25zdCBhPU1hdGguZmxvb3IoKGkrcykvMik7dChlW2FdKT9pPWErMTpzPWF9cmV0dXJuIGktMX1mdW5jdGlvbiBYZChlLHQpe2NvbnN0IG49aGkoZSx0KTtyZXR1cm4gbj09PWUubGVuZ3RoP3ZvaWQgMDplW25dfWZ1bmN0aW9uIGhpKGUsdCxuPTAscj1lLmxlbmd0aCl7bGV0IGk9bixzPXI7Zm9yKDtpPHM7KXtjb25zdCBhPU1hdGguZmxvb3IoKGkrcykvMik7dChlW2FdKT9zPWE6aT1hKzF9cmV0dXJuIGl9Y29uc3QgTnI9Y2xhc3MgTnJ7Y29uc3RydWN0b3IodCl7dGhpcy5fYXJyYXk9dCx0aGlzLl9maW5kTGFzdE1vbm90b25vdXNMYXN0SWR4PTB9ZmluZExhc3RNb25vdG9ub3VzKHQpe2lmKE5yLmFzc2VydEludmFyaWFudHMpe2lmKHRoaXMuX3ByZXZGaW5kTGFzdFByZWRpY2F0ZSl7Zm9yKGNvbnN0IHIgb2YgdGhpcy5fYXJyYXkpaWYodGhpcy5fcHJldkZpbmRMYXN0UHJlZGljYXRlKHIpJiYhdChyKSl0aHJvdyBuZXcgRXJyb3IoIk1vbm90b25vdXNBcnJheTogY3VycmVudCBwcmVkaWNhdGUgbXVzdCBiZSB3ZWFrZXIgdGhhbiAob3IgZXF1YWwgdG8pIHRoZSBwcmV2aW91cyBwcmVkaWNhdGUuIil9dGhpcy5fcHJldkZpbmRMYXN0UHJlZGljYXRlPXR9Y29uc3Qgbj1kbih0aGlzLl9hcnJheSx0LHRoaXMuX2ZpbmRMYXN0TW9ub3Rvbm91c0xhc3RJZHgpO3JldHVybiB0aGlzLl9maW5kTGFzdE1vbm90b25vdXNMYXN0SWR4PW4rMSxuPT09LTE/dm9pZCAwOnRoaXMuX2FycmF5W25dfX07TnIuYXNzZXJ0SW52YXJpYW50cz0hMTtsZXQgWW49TnI7Y2xhc3MgantzdGF0aWMgZnJvbVJhbmdlSW5jbHVzaXZlKHQpe3JldHVybiBuZXcgaih0LnN0YXJ0TGluZU51bWJlcix0LmVuZExpbmVOdW1iZXIrMSl9c3RhdGljIGpvaW5NYW55KHQpe2lmKHQubGVuZ3RoPT09MClyZXR1cm5bXTtsZXQgbj1uZXcgV2UodFswXS5zbGljZSgpKTtmb3IobGV0IHI9MTtyPHQubGVuZ3RoO3IrKyluPW4uZ2V0VW5pb24obmV3IFdlKHRbcl0uc2xpY2UoKSkpO3JldHVybiBuLnJhbmdlc31zdGF0aWMgam9pbih0KXtpZih0Lmxlbmd0aD09PTApdGhyb3cgbmV3IF9lKCJsaW5lUmFuZ2VzIGNhbm5vdCBiZSBlbXB0eSIpO2xldCBuPXRbMF0uc3RhcnRMaW5lTnVtYmVyLHI9dFswXS5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlO2ZvcihsZXQgaT0xO2k8dC5sZW5ndGg7aSsrKW49TWF0aC5taW4obix0W2ldLnN0YXJ0TGluZU51bWJlcikscj1NYXRoLm1heChyLHRbaV0uZW5kTGluZU51bWJlckV4Y2x1c2l2ZSk7cmV0dXJuIG5ldyBqKG4scil9c3RhdGljIG9mTGVuZ3RoKHQsbil7cmV0dXJuIG5ldyBqKHQsdCtuKX1zdGF0aWMgZGVzZXJpYWxpemUodCl7cmV0dXJuIG5ldyBqKHRbMF0sdFsxXSl9Y29uc3RydWN0b3IodCxuKXtpZih0Pm4pdGhyb3cgbmV3IF9lKGBzdGFydExpbmVOdW1iZXIgJHt0fSBjYW5ub3QgYmUgYWZ0ZXIgZW5kTGluZU51bWJlckV4Y2x1c2l2ZSAke259YCk7dGhpcy5zdGFydExpbmVOdW1iZXI9dCx0aGlzLmVuZExpbmVOdW1iZXJFeGNsdXNpdmU9bn1jb250YWlucyh0KXtyZXR1cm4gdGhpcy5zdGFydExpbmVOdW1iZXI8PXQmJnQ8dGhpcy5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlfWdldCBpc0VtcHR5KCl7cmV0dXJuIHRoaXMuc3RhcnRMaW5lTnVtYmVyPT09dGhpcy5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlfWRlbHRhKHQpe3JldHVybiBuZXcgaih0aGlzLnN0YXJ0TGluZU51bWJlcit0LHRoaXMuZW5kTGluZU51bWJlckV4Y2x1c2l2ZSt0KX1kZWx0YUxlbmd0aCh0KXtyZXR1cm4gbmV3IGoodGhpcy5zdGFydExpbmVOdW1iZXIsdGhpcy5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlK3QpfWdldCBsZW5ndGgoKXtyZXR1cm4gdGhpcy5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlLXRoaXMuc3RhcnRMaW5lTnVtYmVyfWpvaW4odCl7cmV0dXJuIG5ldyBqKE1hdGgubWluKHRoaXMuc3RhcnRMaW5lTnVtYmVyLHQuc3RhcnRMaW5lTnVtYmVyKSxNYXRoLm1heCh0aGlzLmVuZExpbmVOdW1iZXJFeGNsdXNpdmUsdC5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlKSl9dG9TdHJpbmcoKXtyZXR1cm5gWyR7dGhpcy5zdGFydExpbmVOdW1iZXJ9LCR7dGhpcy5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlfSlgfWludGVyc2VjdCh0KXtjb25zdCBuPU1hdGgubWF4KHRoaXMuc3RhcnRMaW5lTnVtYmVyLHQuc3RhcnRMaW5lTnVtYmVyKSxyPU1hdGgubWluKHRoaXMuZW5kTGluZU51bWJlckV4Y2x1c2l2ZSx0LmVuZExpbmVOdW1iZXJFeGNsdXNpdmUpO2lmKG48PXIpcmV0dXJuIG5ldyBqKG4scil9aW50ZXJzZWN0c1N0cmljdCh0KXtyZXR1cm4gdGhpcy5zdGFydExpbmVOdW1iZXI8dC5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlJiZ0LnN0YXJ0TGluZU51bWJlcjx0aGlzLmVuZExpbmVOdW1iZXJFeGNsdXNpdmV9b3ZlcmxhcE9yVG91Y2godCl7cmV0dXJuIHRoaXMuc3RhcnRMaW5lTnVtYmVyPD10LmVuZExpbmVOdW1iZXJFeGNsdXNpdmUmJnQuc3RhcnRMaW5lTnVtYmVyPD10aGlzLmVuZExpbmVOdW1iZXJFeGNsdXNpdmV9ZXF1YWxzKHQpe3JldHVybiB0aGlzLnN0YXJ0TGluZU51bWJlcj09PXQuc3RhcnRMaW5lTnVtYmVyJiZ0aGlzLmVuZExpbmVOdW1iZXJFeGNsdXNpdmU9PT10LmVuZExpbmVOdW1iZXJFeGNsdXNpdmV9dG9JbmNsdXNpdmVSYW5nZSgpe3JldHVybiB0aGlzLmlzRW1wdHk/bnVsbDpuZXcgUSh0aGlzLnN0YXJ0TGluZU51bWJlciwxLHRoaXMuZW5kTGluZU51bWJlckV4Y2x1c2l2ZS0xLE51bWJlci5NQVhfU0FGRV9JTlRFR0VSKX10b0V4Y2x1c2l2ZVJhbmdlKCl7cmV0dXJuIG5ldyBRKHRoaXMuc3RhcnRMaW5lTnVtYmVyLDEsdGhpcy5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlLDEpfW1hcFRvTGluZUFycmF5KHQpe2NvbnN0IG49W107Zm9yKGxldCByPXRoaXMuc3RhcnRMaW5lTnVtYmVyO3I8dGhpcy5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlO3IrKyluLnB1c2godChyKSk7cmV0dXJuIG59Zm9yRWFjaCh0KXtmb3IobGV0IG49dGhpcy5zdGFydExpbmVOdW1iZXI7bjx0aGlzLmVuZExpbmVOdW1iZXJFeGNsdXNpdmU7bisrKXQobil9c2VyaWFsaXplKCl7cmV0dXJuW3RoaXMuc3RhcnRMaW5lTnVtYmVyLHRoaXMuZW5kTGluZU51bWJlckV4Y2x1c2l2ZV19aW5jbHVkZXModCl7cmV0dXJuIHRoaXMuc3RhcnRMaW5lTnVtYmVyPD10JiZ0PHRoaXMuZW5kTGluZU51bWJlckV4Y2x1c2l2ZX10b09mZnNldFJhbmdlKCl7cmV0dXJuIG5ldyBYKHRoaXMuc3RhcnRMaW5lTnVtYmVyLTEsdGhpcy5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlLTEpfX1jbGFzcyBXZXtjb25zdHJ1Y3Rvcih0PVtdKXt0aGlzLl9ub3JtYWxpemVkUmFuZ2VzPXR9Z2V0IHJhbmdlcygpe3JldHVybiB0aGlzLl9ub3JtYWxpemVkUmFuZ2VzfWFkZFJhbmdlKHQpe2lmKHQubGVuZ3RoPT09MClyZXR1cm47Y29uc3Qgbj1oaSh0aGlzLl9ub3JtYWxpemVkUmFuZ2VzLGk9PmkuZW5kTGluZU51bWJlckV4Y2x1c2l2ZT49dC5zdGFydExpbmVOdW1iZXIpLHI9ZG4odGhpcy5fbm9ybWFsaXplZFJhbmdlcyxpPT5pLnN0YXJ0TGluZU51bWJlcjw9dC5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlKSsxO2lmKG49PT1yKXRoaXMuX25vcm1hbGl6ZWRSYW5nZXMuc3BsaWNlKG4sMCx0KTtlbHNlIGlmKG49PT1yLTEpe2NvbnN0IGk9dGhpcy5fbm9ybWFsaXplZFJhbmdlc1tuXTt0aGlzLl9ub3JtYWxpemVkUmFuZ2VzW25dPWkuam9pbih0KX1lbHNle2NvbnN0IGk9dGhpcy5fbm9ybWFsaXplZFJhbmdlc1tuXS5qb2luKHRoaXMuX25vcm1hbGl6ZWRSYW5nZXNbci0xXSkuam9pbih0KTt0aGlzLl9ub3JtYWxpemVkUmFuZ2VzLnNwbGljZShuLHItbixpKX19Y29udGFpbnModCl7Y29uc3Qgbj1PdCh0aGlzLl9ub3JtYWxpemVkUmFuZ2VzLHI9PnIuc3RhcnRMaW5lTnVtYmVyPD10KTtyZXR1cm4hIW4mJm4uZW5kTGluZU51bWJlckV4Y2x1c2l2ZT50fWludGVyc2VjdHModCl7Y29uc3Qgbj1PdCh0aGlzLl9ub3JtYWxpemVkUmFuZ2VzLHI9PnIuc3RhcnRMaW5lTnVtYmVyPHQuZW5kTGluZU51bWJlckV4Y2x1c2l2ZSk7cmV0dXJuISFuJiZuLmVuZExpbmVOdW1iZXJFeGNsdXNpdmU+dC5zdGFydExpbmVOdW1iZXJ9Z2V0VW5pb24odCl7aWYodGhpcy5fbm9ybWFsaXplZFJhbmdlcy5sZW5ndGg9PT0wKXJldHVybiB0O2lmKHQuX25vcm1hbGl6ZWRSYW5nZXMubGVuZ3RoPT09MClyZXR1cm4gdGhpcztjb25zdCBuPVtdO2xldCByPTAsaT0wLHM9bnVsbDtmb3IoO3I8dGhpcy5fbm9ybWFsaXplZFJhbmdlcy5sZW5ndGh8fGk8dC5fbm9ybWFsaXplZFJhbmdlcy5sZW5ndGg7KXtsZXQgYT1udWxsO2lmKHI8dGhpcy5fbm9ybWFsaXplZFJhbmdlcy5sZW5ndGgmJmk8dC5fbm9ybWFsaXplZFJhbmdlcy5sZW5ndGgpe2NvbnN0IGw9dGhpcy5fbm9ybWFsaXplZFJhbmdlc1tyXSxvPXQuX25vcm1hbGl6ZWRSYW5nZXNbaV07bC5zdGFydExpbmVOdW1iZXI8by5zdGFydExpbmVOdW1iZXI/KGE9bCxyKyspOihhPW8saSsrKX1lbHNlIHI8dGhpcy5fbm9ybWFsaXplZFJhbmdlcy5sZW5ndGg/KGE9dGhpcy5fbm9ybWFsaXplZFJhbmdlc1tyXSxyKyspOihhPXQuX25vcm1hbGl6ZWRSYW5nZXNbaV0saSsrKTtzPT09bnVsbD9zPWE6cy5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlPj1hLnN0YXJ0TGluZU51bWJlcj9zPW5ldyBqKHMuc3RhcnRMaW5lTnVtYmVyLE1hdGgubWF4KHMuZW5kTGluZU51bWJlckV4Y2x1c2l2ZSxhLmVuZExpbmVOdW1iZXJFeGNsdXNpdmUpKToobi5wdXNoKHMpLHM9YSl9cmV0dXJuIHMhPT1udWxsJiZuLnB1c2gocyksbmV3IFdlKG4pfXN1YnRyYWN0RnJvbSh0KXtjb25zdCBuPWhpKHRoaXMuX25vcm1hbGl6ZWRSYW5nZXMsYT0+YS5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlPj10LnN0YXJ0TGluZU51bWJlcikscj1kbih0aGlzLl9ub3JtYWxpemVkUmFuZ2VzLGE9PmEuc3RhcnRMaW5lTnVtYmVyPD10LmVuZExpbmVOdW1iZXJFeGNsdXNpdmUpKzE7aWYobj09PXIpcmV0dXJuIG5ldyBXZShbdF0pO2NvbnN0IGk9W107bGV0IHM9dC5zdGFydExpbmVOdW1iZXI7Zm9yKGxldCBhPW47YTxyO2ErKyl7Y29uc3QgbD10aGlzLl9ub3JtYWxpemVkUmFuZ2VzW2FdO2wuc3RhcnRMaW5lTnVtYmVyPnMmJmkucHVzaChuZXcgaihzLGwuc3RhcnRMaW5lTnVtYmVyKSkscz1sLmVuZExpbmVOdW1iZXJFeGNsdXNpdmV9cmV0dXJuIHM8dC5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlJiZpLnB1c2gobmV3IGoocyx0LmVuZExpbmVOdW1iZXJFeGNsdXNpdmUpKSxuZXcgV2UoaSl9dG9TdHJpbmcoKXtyZXR1cm4gdGhpcy5fbm9ybWFsaXplZFJhbmdlcy5tYXAodD0+dC50b1N0cmluZygpKS5qb2luKCIsICIpfWdldEludGVyc2VjdGlvbih0KXtjb25zdCBuPVtdO2xldCByPTAsaT0wO2Zvcig7cjx0aGlzLl9ub3JtYWxpemVkUmFuZ2VzLmxlbmd0aCYmaTx0Ll9ub3JtYWxpemVkUmFuZ2VzLmxlbmd0aDspe2NvbnN0IHM9dGhpcy5fbm9ybWFsaXplZFJhbmdlc1tyXSxhPXQuX25vcm1hbGl6ZWRSYW5nZXNbaV0sbD1zLmludGVyc2VjdChhKTtsJiYhbC5pc0VtcHR5JiZuLnB1c2gobCkscy5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlPGEuZW5kTGluZU51bWJlckV4Y2x1c2l2ZT9yKys6aSsrfXJldHVybiBuZXcgV2Uobil9Z2V0V2l0aERlbHRhKHQpe3JldHVybiBuZXcgV2UodGhpcy5fbm9ybWFsaXplZFJhbmdlcy5tYXAobj0+bi5kZWx0YSh0KSkpfX1jb25zdCBidD1jbGFzcyBidHtzdGF0aWMgYmV0d2VlblBvc2l0aW9ucyh0LG4pe3JldHVybiB0LmxpbmVOdW1iZXI9PT1uLmxpbmVOdW1iZXI/bmV3IGJ0KDAsbi5jb2x1bW4tdC5jb2x1bW4pOm5ldyBidChuLmxpbmVOdW1iZXItdC5saW5lTnVtYmVyLG4uY29sdW1uLTEpfXN0YXRpYyBvZlJhbmdlKHQpe3JldHVybiBidC5iZXR3ZWVuUG9zaXRpb25zKHQuZ2V0U3RhcnRQb3NpdGlvbigpLHQuZ2V0RW5kUG9zaXRpb24oKSl9c3RhdGljIG9mVGV4dCh0KXtsZXQgbj0wLHI9MDtmb3IoY29uc3QgaSBvZiB0KWk9PT1gCmA/KG4rKyxyPTApOnIrKztyZXR1cm4gbmV3IGJ0KG4scil9Y29uc3RydWN0b3IodCxuKXt0aGlzLmxpbmVDb3VudD10LHRoaXMuY29sdW1uQ291bnQ9bn1pc0dyZWF0ZXJUaGFuT3JFcXVhbFRvKHQpe3JldHVybiB0aGlzLmxpbmVDb3VudCE9PXQubGluZUNvdW50P3RoaXMubGluZUNvdW50PnQubGluZUNvdW50OnRoaXMuY29sdW1uQ291bnQ+PXQuY29sdW1uQ291bnR9Y3JlYXRlUmFuZ2UodCl7cmV0dXJuIHRoaXMubGluZUNvdW50PT09MD9uZXcgUSh0LmxpbmVOdW1iZXIsdC5jb2x1bW4sdC5saW5lTnVtYmVyLHQuY29sdW1uK3RoaXMuY29sdW1uQ291bnQpOm5ldyBRKHQubGluZU51bWJlcix0LmNvbHVtbix0LmxpbmVOdW1iZXIrdGhpcy5saW5lQ291bnQsdGhpcy5jb2x1bW5Db3VudCsxKX1hZGRUb1Bvc2l0aW9uKHQpe3JldHVybiB0aGlzLmxpbmVDb3VudD09PTA/bmV3IGNlKHQubGluZU51bWJlcix0LmNvbHVtbit0aGlzLmNvbHVtbkNvdW50KTpuZXcgY2UodC5saW5lTnVtYmVyK3RoaXMubGluZUNvdW50LHRoaXMuY29sdW1uQ291bnQrMSl9dG9TdHJpbmcoKXtyZXR1cm5gJHt0aGlzLmxpbmVDb3VudH0sJHt0aGlzLmNvbHVtbkNvdW50fWB9fTtidC56ZXJvPW5ldyBidCgwLDApO2xldCB2bz1idDtjbGFzcyBZZHtjb25zdHJ1Y3Rvcih0LG4pe3RoaXMucmFuZ2U9dCx0aGlzLnRleHQ9bn10b1NpbmdsZUVkaXRPcGVyYXRpb24oKXtyZXR1cm57cmFuZ2U6dGhpcy5yYW5nZSx0ZXh0OnRoaXMudGV4dH19fWNsYXNzIE5le3N0YXRpYyBpbnZlcnNlKHQsbixyKXtjb25zdCBpPVtdO2xldCBzPTEsYT0xO2Zvcihjb25zdCBvIG9mIHQpe2NvbnN0IGM9bmV3IE5lKG5ldyBqKHMsby5vcmlnaW5hbC5zdGFydExpbmVOdW1iZXIpLG5ldyBqKGEsby5tb2RpZmllZC5zdGFydExpbmVOdW1iZXIpKTtjLm1vZGlmaWVkLmlzRW1wdHl8fGkucHVzaChjKSxzPW8ub3JpZ2luYWwuZW5kTGluZU51bWJlckV4Y2x1c2l2ZSxhPW8ubW9kaWZpZWQuZW5kTGluZU51bWJlckV4Y2x1c2l2ZX1jb25zdCBsPW5ldyBOZShuZXcgaihzLG4rMSksbmV3IGooYSxyKzEpKTtyZXR1cm4gbC5tb2RpZmllZC5pc0VtcHR5fHxpLnB1c2gobCksaX1zdGF0aWMgY2xpcCh0LG4scil7Y29uc3QgaT1bXTtmb3IoY29uc3QgcyBvZiB0KXtjb25zdCBhPXMub3JpZ2luYWwuaW50ZXJzZWN0KG4pLGw9cy5tb2RpZmllZC5pbnRlcnNlY3Qocik7YSYmIWEuaXNFbXB0eSYmbCYmIWwuaXNFbXB0eSYmaS5wdXNoKG5ldyBOZShhLGwpKX1yZXR1cm4gaX1jb25zdHJ1Y3Rvcih0LG4pe3RoaXMub3JpZ2luYWw9dCx0aGlzLm1vZGlmaWVkPW59dG9TdHJpbmcoKXtyZXR1cm5geyR7dGhpcy5vcmlnaW5hbC50b1N0cmluZygpfS0+JHt0aGlzLm1vZGlmaWVkLnRvU3RyaW5nKCl9fWB9ZmxpcCgpe3JldHVybiBuZXcgTmUodGhpcy5tb2RpZmllZCx0aGlzLm9yaWdpbmFsKX1qb2luKHQpe3JldHVybiBuZXcgTmUodGhpcy5vcmlnaW5hbC5qb2luKHQub3JpZ2luYWwpLHRoaXMubW9kaWZpZWQuam9pbih0Lm1vZGlmaWVkKSl9dG9SYW5nZU1hcHBpbmcoKXtjb25zdCB0PXRoaXMub3JpZ2luYWwudG9JbmNsdXNpdmVSYW5nZSgpLG49dGhpcy5tb2RpZmllZC50b0luY2x1c2l2ZVJhbmdlKCk7aWYodCYmbilyZXR1cm4gbmV3IFBlKHQsbik7aWYodGhpcy5vcmlnaW5hbC5zdGFydExpbmVOdW1iZXI9PT0xfHx0aGlzLm1vZGlmaWVkLnN0YXJ0TGluZU51bWJlcj09PTEpe2lmKCEodGhpcy5tb2RpZmllZC5zdGFydExpbmVOdW1iZXI9PT0xJiZ0aGlzLm9yaWdpbmFsLnN0YXJ0TGluZU51bWJlcj09PTEpKXRocm93IG5ldyBfZSgibm90IGEgdmFsaWQgZGlmZiIpO3JldHVybiBuZXcgUGUobmV3IFEodGhpcy5vcmlnaW5hbC5zdGFydExpbmVOdW1iZXIsMSx0aGlzLm9yaWdpbmFsLmVuZExpbmVOdW1iZXJFeGNsdXNpdmUsMSksbmV3IFEodGhpcy5tb2RpZmllZC5zdGFydExpbmVOdW1iZXIsMSx0aGlzLm1vZGlmaWVkLmVuZExpbmVOdW1iZXJFeGNsdXNpdmUsMSkpfWVsc2UgcmV0dXJuIG5ldyBQZShuZXcgUSh0aGlzLm9yaWdpbmFsLnN0YXJ0TGluZU51bWJlci0xLE51bWJlci5NQVhfU0FGRV9JTlRFR0VSLHRoaXMub3JpZ2luYWwuZW5kTGluZU51bWJlckV4Y2x1c2l2ZS0xLE51bWJlci5NQVhfU0FGRV9JTlRFR0VSKSxuZXcgUSh0aGlzLm1vZGlmaWVkLnN0YXJ0TGluZU51bWJlci0xLE51bWJlci5NQVhfU0FGRV9JTlRFR0VSLHRoaXMubW9kaWZpZWQuZW5kTGluZU51bWJlckV4Y2x1c2l2ZS0xLE51bWJlci5NQVhfU0FGRV9JTlRFR0VSKSl9dG9SYW5nZU1hcHBpbmcyKHQsbil7aWYod28odGhpcy5vcmlnaW5hbC5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlLHQpJiZ3byh0aGlzLm1vZGlmaWVkLmVuZExpbmVOdW1iZXJFeGNsdXNpdmUsbikpcmV0dXJuIG5ldyBQZShuZXcgUSh0aGlzLm9yaWdpbmFsLnN0YXJ0TGluZU51bWJlciwxLHRoaXMub3JpZ2luYWwuZW5kTGluZU51bWJlckV4Y2x1c2l2ZSwxKSxuZXcgUSh0aGlzLm1vZGlmaWVkLnN0YXJ0TGluZU51bWJlciwxLHRoaXMubW9kaWZpZWQuZW5kTGluZU51bWJlckV4Y2x1c2l2ZSwxKSk7aWYoIXRoaXMub3JpZ2luYWwuaXNFbXB0eSYmIXRoaXMubW9kaWZpZWQuaXNFbXB0eSlyZXR1cm4gbmV3IFBlKFEuZnJvbVBvc2l0aW9ucyhuZXcgY2UodGhpcy5vcmlnaW5hbC5zdGFydExpbmVOdW1iZXIsMSksV3QobmV3IGNlKHRoaXMub3JpZ2luYWwuZW5kTGluZU51bWJlckV4Y2x1c2l2ZS0xLE51bWJlci5NQVhfU0FGRV9JTlRFR0VSKSx0KSksUS5mcm9tUG9zaXRpb25zKG5ldyBjZSh0aGlzLm1vZGlmaWVkLnN0YXJ0TGluZU51bWJlciwxKSxXdChuZXcgY2UodGhpcy5tb2RpZmllZC5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlLTEsTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVIpLG4pKSk7aWYodGhpcy5vcmlnaW5hbC5zdGFydExpbmVOdW1iZXI+MSYmdGhpcy5tb2RpZmllZC5zdGFydExpbmVOdW1iZXI+MSlyZXR1cm4gbmV3IFBlKFEuZnJvbVBvc2l0aW9ucyhXdChuZXcgY2UodGhpcy5vcmlnaW5hbC5zdGFydExpbmVOdW1iZXItMSxOdW1iZXIuTUFYX1NBRkVfSU5URUdFUiksdCksV3QobmV3IGNlKHRoaXMub3JpZ2luYWwuZW5kTGluZU51bWJlckV4Y2x1c2l2ZS0xLE51bWJlci5NQVhfU0FGRV9JTlRFR0VSKSx0KSksUS5mcm9tUG9zaXRpb25zKFd0KG5ldyBjZSh0aGlzLm1vZGlmaWVkLnN0YXJ0TGluZU51bWJlci0xLE51bWJlci5NQVhfU0FGRV9JTlRFR0VSKSxuKSxXdChuZXcgY2UodGhpcy5tb2RpZmllZC5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlLTEsTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVIpLG4pKSk7dGhyb3cgbmV3IF9lfX1mdW5jdGlvbiBXdChlLHQpe2lmKGUubGluZU51bWJlcjwxKXJldHVybiBuZXcgY2UoMSwxKTtpZihlLmxpbmVOdW1iZXI+dC5sZW5ndGgpcmV0dXJuIG5ldyBjZSh0Lmxlbmd0aCx0W3QubGVuZ3RoLTFdLmxlbmd0aCsxKTtjb25zdCBuPXRbZS5saW5lTnVtYmVyLTFdO3JldHVybiBlLmNvbHVtbj5uLmxlbmd0aCsxP25ldyBjZShlLmxpbmVOdW1iZXIsbi5sZW5ndGgrMSk6ZX1mdW5jdGlvbiB3byhlLHQpe3JldHVybiBlPj0xJiZlPD10Lmxlbmd0aH1jbGFzcyBYZSBleHRlbmRzIE5le3N0YXRpYyBmcm9tUmFuZ2VNYXBwaW5ncyh0KXtjb25zdCBuPWouam9pbih0Lm1hcChpPT5qLmZyb21SYW5nZUluY2x1c2l2ZShpLm9yaWdpbmFsUmFuZ2UpKSkscj1qLmpvaW4odC5tYXAoaT0+ai5mcm9tUmFuZ2VJbmNsdXNpdmUoaS5tb2RpZmllZFJhbmdlKSkpO3JldHVybiBuZXcgWGUobixyLHQpfWNvbnN0cnVjdG9yKHQsbixyKXtzdXBlcih0LG4pLHRoaXMuaW5uZXJDaGFuZ2VzPXJ9ZmxpcCgpe3JldHVybiBuZXcgWGUodGhpcy5tb2RpZmllZCx0aGlzLm9yaWdpbmFsLHRoaXMuaW5uZXJDaGFuZ2VzPy5tYXAodD0+dC5mbGlwKCkpKX13aXRoSW5uZXJDaGFuZ2VzRnJvbUxpbmVSYW5nZXMoKXtyZXR1cm4gbmV3IFhlKHRoaXMub3JpZ2luYWwsdGhpcy5tb2RpZmllZCxbdGhpcy50b1JhbmdlTWFwcGluZygpXSl9fWNsYXNzIFBle3N0YXRpYyBhc3NlcnRTb3J0ZWQodCl7Zm9yKGxldCBuPTE7bjx0Lmxlbmd0aDtuKyspe2NvbnN0IHI9dFtuLTFdLGk9dFtuXTtpZighKHIub3JpZ2luYWxSYW5nZS5nZXRFbmRQb3NpdGlvbigpLmlzQmVmb3JlT3JFcXVhbChpLm9yaWdpbmFsUmFuZ2UuZ2V0U3RhcnRQb3NpdGlvbigpKSYmci5tb2RpZmllZFJhbmdlLmdldEVuZFBvc2l0aW9uKCkuaXNCZWZvcmVPckVxdWFsKGkubW9kaWZpZWRSYW5nZS5nZXRTdGFydFBvc2l0aW9uKCkpKSl0aHJvdyBuZXcgX2UoIlJhbmdlIG1hcHBpbmdzIG11c3QgYmUgc29ydGVkIil9fWNvbnN0cnVjdG9yKHQsbil7dGhpcy5vcmlnaW5hbFJhbmdlPXQsdGhpcy5tb2RpZmllZFJhbmdlPW59dG9TdHJpbmcoKXtyZXR1cm5geyR7dGhpcy5vcmlnaW5hbFJhbmdlLnRvU3RyaW5nKCl9LT4ke3RoaXMubW9kaWZpZWRSYW5nZS50b1N0cmluZygpfX1gfWZsaXAoKXtyZXR1cm4gbmV3IFBlKHRoaXMubW9kaWZpZWRSYW5nZSx0aGlzLm9yaWdpbmFsUmFuZ2UpfXRvVGV4dEVkaXQodCl7Y29uc3Qgbj10LmdldFZhbHVlT2ZSYW5nZSh0aGlzLm1vZGlmaWVkUmFuZ2UpO3JldHVybiBuZXcgWWQodGhpcy5vcmlnaW5hbFJhbmdlLG4pfX1jb25zdCBRZD0zO2NsYXNzIEtke2NvbXB1dGVEaWZmKHQsbixyKXtjb25zdCBzPW5ldyB0dSh0LG4se21heENvbXB1dGF0aW9uVGltZTpyLm1heENvbXB1dGF0aW9uVGltZU1zLHNob3VsZElnbm9yZVRyaW1XaGl0ZXNwYWNlOnIuaWdub3JlVHJpbVdoaXRlc3BhY2Usc2hvdWxkQ29tcHV0ZUNoYXJDaGFuZ2VzOiEwLHNob3VsZE1ha2VQcmV0dHlEaWZmOiEwLHNob3VsZFBvc3RQcm9jZXNzQ2hhckNoYW5nZXM6ITB9KS5jb21wdXRlRGlmZigpLGE9W107bGV0IGw9bnVsbDtmb3IoY29uc3QgbyBvZiBzLmNoYW5nZXMpe2xldCBjO28ub3JpZ2luYWxFbmRMaW5lTnVtYmVyPT09MD9jPW5ldyBqKG8ub3JpZ2luYWxTdGFydExpbmVOdW1iZXIrMSxvLm9yaWdpbmFsU3RhcnRMaW5lTnVtYmVyKzEpOmM9bmV3IGooby5vcmlnaW5hbFN0YXJ0TGluZU51bWJlcixvLm9yaWdpbmFsRW5kTGluZU51bWJlcisxKTtsZXQgZDtvLm1vZGlmaWVkRW5kTGluZU51bWJlcj09PTA/ZD1uZXcgaihvLm1vZGlmaWVkU3RhcnRMaW5lTnVtYmVyKzEsby5tb2RpZmllZFN0YXJ0TGluZU51bWJlcisxKTpkPW5ldyBqKG8ubW9kaWZpZWRTdGFydExpbmVOdW1iZXIsby5tb2RpZmllZEVuZExpbmVOdW1iZXIrMSk7bGV0IHU9bmV3IFhlKGMsZCxvLmNoYXJDaGFuZ2VzPy5tYXAoZj0+bmV3IFBlKG5ldyBRKGYub3JpZ2luYWxTdGFydExpbmVOdW1iZXIsZi5vcmlnaW5hbFN0YXJ0Q29sdW1uLGYub3JpZ2luYWxFbmRMaW5lTnVtYmVyLGYub3JpZ2luYWxFbmRDb2x1bW4pLG5ldyBRKGYubW9kaWZpZWRTdGFydExpbmVOdW1iZXIsZi5tb2RpZmllZFN0YXJ0Q29sdW1uLGYubW9kaWZpZWRFbmRMaW5lTnVtYmVyLGYubW9kaWZpZWRFbmRDb2x1bW4pKSkpO2wmJihsLm1vZGlmaWVkLmVuZExpbmVOdW1iZXJFeGNsdXNpdmU9PT11Lm1vZGlmaWVkLnN0YXJ0TGluZU51bWJlcnx8bC5vcmlnaW5hbC5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlPT09dS5vcmlnaW5hbC5zdGFydExpbmVOdW1iZXIpJiYodT1uZXcgWGUobC5vcmlnaW5hbC5qb2luKHUub3JpZ2luYWwpLGwubW9kaWZpZWQuam9pbih1Lm1vZGlmaWVkKSxsLmlubmVyQ2hhbmdlcyYmdS5pbm5lckNoYW5nZXM/bC5pbm5lckNoYW5nZXMuY29uY2F0KHUuaW5uZXJDaGFuZ2VzKTp2b2lkIDApLGEucG9wKCkpLGEucHVzaCh1KSxsPXV9cmV0dXJuIEpuKCgpPT5mbyhhLChvLGMpPT5jLm9yaWdpbmFsLnN0YXJ0TGluZU51bWJlci1vLm9yaWdpbmFsLmVuZExpbmVOdW1iZXJFeGNsdXNpdmU9PT1jLm1vZGlmaWVkLnN0YXJ0TGluZU51bWJlci1vLm1vZGlmaWVkLmVuZExpbmVOdW1iZXJFeGNsdXNpdmUmJm8ub3JpZ2luYWwuZW5kTGluZU51bWJlckV4Y2x1c2l2ZTxjLm9yaWdpbmFsLnN0YXJ0TGluZU51bWJlciYmby5tb2RpZmllZC5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlPGMubW9kaWZpZWQuc3RhcnRMaW5lTnVtYmVyKSksbmV3IFhuKGEsW10scy5xdWl0RWFybHkpfX1mdW5jdGlvbiB5byhlLHQsbixyKXtyZXR1cm4gbmV3IG90KGUsdCxuKS5Db21wdXRlRGlmZihyKX1sZXQgeG89Y2xhc3N7Y29uc3RydWN0b3IodCl7Y29uc3Qgbj1bXSxyPVtdO2ZvcihsZXQgaT0wLHM9dC5sZW5ndGg7aTxzO2krKyluW2ldPWRpKHRbaV0sMSkscltpXT11aSh0W2ldLDEpO3RoaXMubGluZXM9dCx0aGlzLl9zdGFydENvbHVtbnM9bix0aGlzLl9lbmRDb2x1bW5zPXJ9Z2V0RWxlbWVudHMoKXtjb25zdCB0PVtdO2ZvcihsZXQgbj0wLHI9dGhpcy5saW5lcy5sZW5ndGg7bjxyO24rKyl0W25dPXRoaXMubGluZXNbbl0uc3Vic3RyaW5nKHRoaXMuX3N0YXJ0Q29sdW1uc1tuXS0xLHRoaXMuX2VuZENvbHVtbnNbbl0tMSk7cmV0dXJuIHR9Z2V0U3RyaWN0RWxlbWVudCh0KXtyZXR1cm4gdGhpcy5saW5lc1t0XX1nZXRTdGFydExpbmVOdW1iZXIodCl7cmV0dXJuIHQrMX1nZXRFbmRMaW5lTnVtYmVyKHQpe3JldHVybiB0KzF9Y3JlYXRlQ2hhclNlcXVlbmNlKHQsbixyKXtjb25zdCBpPVtdLHM9W10sYT1bXTtsZXQgbD0wO2ZvcihsZXQgbz1uO288PXI7bysrKXtjb25zdCBjPXRoaXMubGluZXNbb10sZD10P3RoaXMuX3N0YXJ0Q29sdW1uc1tvXToxLHU9dD90aGlzLl9lbmRDb2x1bW5zW29dOmMubGVuZ3RoKzE7Zm9yKGxldCBmPWQ7Zjx1O2YrKylpW2xdPWMuY2hhckNvZGVBdChmLTEpLHNbbF09bysxLGFbbF09ZixsKys7IXQmJm88ciYmKGlbbF09MTAsc1tsXT1vKzEsYVtsXT1jLmxlbmd0aCsxLGwrKyl9cmV0dXJuIG5ldyBaZChpLHMsYSl9fTtjbGFzcyBaZHtjb25zdHJ1Y3Rvcih0LG4scil7dGhpcy5fY2hhckNvZGVzPXQsdGhpcy5fbGluZU51bWJlcnM9bix0aGlzLl9jb2x1bW5zPXJ9dG9TdHJpbmcoKXtyZXR1cm4iWyIrdGhpcy5fY2hhckNvZGVzLm1hcCgodCxuKT0+KHQ9PT0xMD8iXFxuIjpTdHJpbmcuZnJvbUNoYXJDb2RlKHQpKStgLSgke3RoaXMuX2xpbmVOdW1iZXJzW25dfSwke3RoaXMuX2NvbHVtbnNbbl19KWApLmpvaW4oIiwgIikrIl0ifV9hc3NlcnRJbmRleCh0LG4pe2lmKHQ8MHx8dD49bi5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCJJbGxlZ2FsIGluZGV4Iil9Z2V0RWxlbWVudHMoKXtyZXR1cm4gdGhpcy5fY2hhckNvZGVzfWdldFN0YXJ0TGluZU51bWJlcih0KXtyZXR1cm4gdD4wJiZ0PT09dGhpcy5fbGluZU51bWJlcnMubGVuZ3RoP3RoaXMuZ2V0RW5kTGluZU51bWJlcih0LTEpOih0aGlzLl9hc3NlcnRJbmRleCh0LHRoaXMuX2xpbmVOdW1iZXJzKSx0aGlzLl9saW5lTnVtYmVyc1t0XSl9Z2V0RW5kTGluZU51bWJlcih0KXtyZXR1cm4gdD09PS0xP3RoaXMuZ2V0U3RhcnRMaW5lTnVtYmVyKHQrMSk6KHRoaXMuX2Fzc2VydEluZGV4KHQsdGhpcy5fbGluZU51bWJlcnMpLHRoaXMuX2NoYXJDb2Rlc1t0XT09PTEwP3RoaXMuX2xpbmVOdW1iZXJzW3RdKzE6dGhpcy5fbGluZU51bWJlcnNbdF0pfWdldFN0YXJ0Q29sdW1uKHQpe3JldHVybiB0PjAmJnQ9PT10aGlzLl9jb2x1bW5zLmxlbmd0aD90aGlzLmdldEVuZENvbHVtbih0LTEpOih0aGlzLl9hc3NlcnRJbmRleCh0LHRoaXMuX2NvbHVtbnMpLHRoaXMuX2NvbHVtbnNbdF0pfWdldEVuZENvbHVtbih0KXtyZXR1cm4gdD09PS0xP3RoaXMuZ2V0U3RhcnRDb2x1bW4odCsxKToodGhpcy5fYXNzZXJ0SW5kZXgodCx0aGlzLl9jb2x1bW5zKSx0aGlzLl9jaGFyQ29kZXNbdF09PT0xMD8xOnRoaXMuX2NvbHVtbnNbdF0rMSl9fWNsYXNzIFZ0e2NvbnN0cnVjdG9yKHQsbixyLGkscyxhLGwsbyl7dGhpcy5vcmlnaW5hbFN0YXJ0TGluZU51bWJlcj10LHRoaXMub3JpZ2luYWxTdGFydENvbHVtbj1uLHRoaXMub3JpZ2luYWxFbmRMaW5lTnVtYmVyPXIsdGhpcy5vcmlnaW5hbEVuZENvbHVtbj1pLHRoaXMubW9kaWZpZWRTdGFydExpbmVOdW1iZXI9cyx0aGlzLm1vZGlmaWVkU3RhcnRDb2x1bW49YSx0aGlzLm1vZGlmaWVkRW5kTGluZU51bWJlcj1sLHRoaXMubW9kaWZpZWRFbmRDb2x1bW49b31zdGF0aWMgY3JlYXRlRnJvbURpZmZDaGFuZ2UodCxuLHIpe2NvbnN0IGk9bi5nZXRTdGFydExpbmVOdW1iZXIodC5vcmlnaW5hbFN0YXJ0KSxzPW4uZ2V0U3RhcnRDb2x1bW4odC5vcmlnaW5hbFN0YXJ0KSxhPW4uZ2V0RW5kTGluZU51bWJlcih0Lm9yaWdpbmFsU3RhcnQrdC5vcmlnaW5hbExlbmd0aC0xKSxsPW4uZ2V0RW5kQ29sdW1uKHQub3JpZ2luYWxTdGFydCt0Lm9yaWdpbmFsTGVuZ3RoLTEpLG89ci5nZXRTdGFydExpbmVOdW1iZXIodC5tb2RpZmllZFN0YXJ0KSxjPXIuZ2V0U3RhcnRDb2x1bW4odC5tb2RpZmllZFN0YXJ0KSxkPXIuZ2V0RW5kTGluZU51bWJlcih0Lm1vZGlmaWVkU3RhcnQrdC5tb2RpZmllZExlbmd0aC0xKSx1PXIuZ2V0RW5kQ29sdW1uKHQubW9kaWZpZWRTdGFydCt0Lm1vZGlmaWVkTGVuZ3RoLTEpO3JldHVybiBuZXcgVnQoaSxzLGEsbCxvLGMsZCx1KX19ZnVuY3Rpb24gZXUoZSl7aWYoZS5sZW5ndGg8PTEpcmV0dXJuIGU7Y29uc3QgdD1bZVswXV07bGV0IG49dFswXTtmb3IobGV0IHI9MSxpPWUubGVuZ3RoO3I8aTtyKyspe2NvbnN0IHM9ZVtyXSxhPXMub3JpZ2luYWxTdGFydC0obi5vcmlnaW5hbFN0YXJ0K24ub3JpZ2luYWxMZW5ndGgpLGw9cy5tb2RpZmllZFN0YXJ0LShuLm1vZGlmaWVkU3RhcnQrbi5tb2RpZmllZExlbmd0aCk7TWF0aC5taW4oYSxsKTxRZD8obi5vcmlnaW5hbExlbmd0aD1zLm9yaWdpbmFsU3RhcnQrcy5vcmlnaW5hbExlbmd0aC1uLm9yaWdpbmFsU3RhcnQsbi5tb2RpZmllZExlbmd0aD1zLm1vZGlmaWVkU3RhcnQrcy5tb2RpZmllZExlbmd0aC1uLm1vZGlmaWVkU3RhcnQpOih0LnB1c2gocyksbj1zKX1yZXR1cm4gdH1jbGFzcyB1bntjb25zdHJ1Y3Rvcih0LG4scixpLHMpe3RoaXMub3JpZ2luYWxTdGFydExpbmVOdW1iZXI9dCx0aGlzLm9yaWdpbmFsRW5kTGluZU51bWJlcj1uLHRoaXMubW9kaWZpZWRTdGFydExpbmVOdW1iZXI9cix0aGlzLm1vZGlmaWVkRW5kTGluZU51bWJlcj1pLHRoaXMuY2hhckNoYW5nZXM9c31zdGF0aWMgY3JlYXRlRnJvbURpZmZSZXN1bHQodCxuLHIsaSxzLGEsbCl7bGV0IG8sYyxkLHUsZjtpZihuLm9yaWdpbmFsTGVuZ3RoPT09MD8obz1yLmdldFN0YXJ0TGluZU51bWJlcihuLm9yaWdpbmFsU3RhcnQpLTEsYz0wKToobz1yLmdldFN0YXJ0TGluZU51bWJlcihuLm9yaWdpbmFsU3RhcnQpLGM9ci5nZXRFbmRMaW5lTnVtYmVyKG4ub3JpZ2luYWxTdGFydCtuLm9yaWdpbmFsTGVuZ3RoLTEpKSxuLm1vZGlmaWVkTGVuZ3RoPT09MD8oZD1pLmdldFN0YXJ0TGluZU51bWJlcihuLm1vZGlmaWVkU3RhcnQpLTEsdT0wKTooZD1pLmdldFN0YXJ0TGluZU51bWJlcihuLm1vZGlmaWVkU3RhcnQpLHU9aS5nZXRFbmRMaW5lTnVtYmVyKG4ubW9kaWZpZWRTdGFydCtuLm1vZGlmaWVkTGVuZ3RoLTEpKSxhJiZuLm9yaWdpbmFsTGVuZ3RoPjAmJm4ub3JpZ2luYWxMZW5ndGg8MjAmJm4ubW9kaWZpZWRMZW5ndGg+MCYmbi5tb2RpZmllZExlbmd0aDwyMCYmcygpKXtjb25zdCBtPXIuY3JlYXRlQ2hhclNlcXVlbmNlKHQsbi5vcmlnaW5hbFN0YXJ0LG4ub3JpZ2luYWxTdGFydCtuLm9yaWdpbmFsTGVuZ3RoLTEpLHY9aS5jcmVhdGVDaGFyU2VxdWVuY2UodCxuLm1vZGlmaWVkU3RhcnQsbi5tb2RpZmllZFN0YXJ0K24ubW9kaWZpZWRMZW5ndGgtMSk7aWYobS5nZXRFbGVtZW50cygpLmxlbmd0aD4wJiZ2LmdldEVsZW1lbnRzKCkubGVuZ3RoPjApe2xldCB5PXlvKG0sdixzLCEwKS5jaGFuZ2VzO2wmJih5PWV1KHkpKSxmPVtdO2ZvcihsZXQgXz0wLGs9eS5sZW5ndGg7XzxrO18rKylmLnB1c2goVnQuY3JlYXRlRnJvbURpZmZDaGFuZ2UoeVtfXSxtLHYpKX19cmV0dXJuIG5ldyB1bihvLGMsZCx1LGYpfX1jbGFzcyB0dXtjb25zdHJ1Y3Rvcih0LG4scil7dGhpcy5zaG91bGRDb21wdXRlQ2hhckNoYW5nZXM9ci5zaG91bGRDb21wdXRlQ2hhckNoYW5nZXMsdGhpcy5zaG91bGRQb3N0UHJvY2Vzc0NoYXJDaGFuZ2VzPXIuc2hvdWxkUG9zdFByb2Nlc3NDaGFyQ2hhbmdlcyx0aGlzLnNob3VsZElnbm9yZVRyaW1XaGl0ZXNwYWNlPXIuc2hvdWxkSWdub3JlVHJpbVdoaXRlc3BhY2UsdGhpcy5zaG91bGRNYWtlUHJldHR5RGlmZj1yLnNob3VsZE1ha2VQcmV0dHlEaWZmLHRoaXMub3JpZ2luYWxMaW5lcz10LHRoaXMubW9kaWZpZWRMaW5lcz1uLHRoaXMub3JpZ2luYWw9bmV3IHhvKHQpLHRoaXMubW9kaWZpZWQ9bmV3IHhvKG4pLHRoaXMuY29udGludWVMaW5lRGlmZj1TbyhyLm1heENvbXB1dGF0aW9uVGltZSksdGhpcy5jb250aW51ZUNoYXJEaWZmPVNvKHIubWF4Q29tcHV0YXRpb25UaW1lPT09MD8wOk1hdGgubWluKHIubWF4Q29tcHV0YXRpb25UaW1lLDVlMykpfWNvbXB1dGVEaWZmKCl7aWYodGhpcy5vcmlnaW5hbC5saW5lcy5sZW5ndGg9PT0xJiZ0aGlzLm9yaWdpbmFsLmxpbmVzWzBdLmxlbmd0aD09PTApcmV0dXJuIHRoaXMubW9kaWZpZWQubGluZXMubGVuZ3RoPT09MSYmdGhpcy5tb2RpZmllZC5saW5lc1swXS5sZW5ndGg9PT0wP3txdWl0RWFybHk6ITEsY2hhbmdlczpbXX06e3F1aXRFYXJseTohMSxjaGFuZ2VzOlt7b3JpZ2luYWxTdGFydExpbmVOdW1iZXI6MSxvcmlnaW5hbEVuZExpbmVOdW1iZXI6MSxtb2RpZmllZFN0YXJ0TGluZU51bWJlcjoxLG1vZGlmaWVkRW5kTGluZU51bWJlcjp0aGlzLm1vZGlmaWVkLmxpbmVzLmxlbmd0aCxjaGFyQ2hhbmdlczp2b2lkIDB9XX07aWYodGhpcy5tb2RpZmllZC5saW5lcy5sZW5ndGg9PT0xJiZ0aGlzLm1vZGlmaWVkLmxpbmVzWzBdLmxlbmd0aD09PTApcmV0dXJue3F1aXRFYXJseTohMSxjaGFuZ2VzOlt7b3JpZ2luYWxTdGFydExpbmVOdW1iZXI6MSxvcmlnaW5hbEVuZExpbmVOdW1iZXI6dGhpcy5vcmlnaW5hbC5saW5lcy5sZW5ndGgsbW9kaWZpZWRTdGFydExpbmVOdW1iZXI6MSxtb2RpZmllZEVuZExpbmVOdW1iZXI6MSxjaGFyQ2hhbmdlczp2b2lkIDB9XX07Y29uc3QgdD15byh0aGlzLm9yaWdpbmFsLHRoaXMubW9kaWZpZWQsdGhpcy5jb250aW51ZUxpbmVEaWZmLHRoaXMuc2hvdWxkTWFrZVByZXR0eURpZmYpLG49dC5jaGFuZ2VzLHI9dC5xdWl0RWFybHk7aWYodGhpcy5zaG91bGRJZ25vcmVUcmltV2hpdGVzcGFjZSl7Y29uc3QgbD1bXTtmb3IobGV0IG89MCxjPW4ubGVuZ3RoO288YztvKyspbC5wdXNoKHVuLmNyZWF0ZUZyb21EaWZmUmVzdWx0KHRoaXMuc2hvdWxkSWdub3JlVHJpbVdoaXRlc3BhY2UsbltvXSx0aGlzLm9yaWdpbmFsLHRoaXMubW9kaWZpZWQsdGhpcy5jb250aW51ZUNoYXJEaWZmLHRoaXMuc2hvdWxkQ29tcHV0ZUNoYXJDaGFuZ2VzLHRoaXMuc2hvdWxkUG9zdFByb2Nlc3NDaGFyQ2hhbmdlcykpO3JldHVybntxdWl0RWFybHk6cixjaGFuZ2VzOmx9fWNvbnN0IGk9W107bGV0IHM9MCxhPTA7Zm9yKGxldCBsPS0xLG89bi5sZW5ndGg7bDxvO2wrKyl7Y29uc3QgYz1sKzE8bz9uW2wrMV06bnVsbCxkPWM/Yy5vcmlnaW5hbFN0YXJ0OnRoaXMub3JpZ2luYWxMaW5lcy5sZW5ndGgsdT1jP2MubW9kaWZpZWRTdGFydDp0aGlzLm1vZGlmaWVkTGluZXMubGVuZ3RoO2Zvcig7czxkJiZhPHU7KXtjb25zdCBmPXRoaXMub3JpZ2luYWxMaW5lc1tzXSxtPXRoaXMubW9kaWZpZWRMaW5lc1thXTtpZihmIT09bSl7e2xldCB2PWRpKGYsMSkseT1kaShtLDEpO2Zvcig7dj4xJiZ5PjE7KXtjb25zdCBfPWYuY2hhckNvZGVBdCh2LTIpLGs9bS5jaGFyQ29kZUF0KHktMik7aWYoXyE9PWspYnJlYWs7di0tLHktLX0odj4xfHx5PjEpJiZ0aGlzLl9wdXNoVHJpbVdoaXRlc3BhY2VDaGFyQ2hhbmdlKGkscysxLDEsdixhKzEsMSx5KX17bGV0IHY9dWkoZiwxKSx5PXVpKG0sMSk7Y29uc3QgXz1mLmxlbmd0aCsxLGs9bS5sZW5ndGgrMTtmb3IoO3Y8XyYmeTxrOyl7Y29uc3QgRD1mLmNoYXJDb2RlQXQodi0xKSxOPWYuY2hhckNvZGVBdCh5LTEpO2lmKEQhPT1OKWJyZWFrO3YrKyx5Kyt9KHY8X3x8eTxrKSYmdGhpcy5fcHVzaFRyaW1XaGl0ZXNwYWNlQ2hhckNoYW5nZShpLHMrMSx2LF8sYSsxLHksayl9fXMrKyxhKyt9YyYmKGkucHVzaCh1bi5jcmVhdGVGcm9tRGlmZlJlc3VsdCh0aGlzLnNob3VsZElnbm9yZVRyaW1XaGl0ZXNwYWNlLGMsdGhpcy5vcmlnaW5hbCx0aGlzLm1vZGlmaWVkLHRoaXMuY29udGludWVDaGFyRGlmZix0aGlzLnNob3VsZENvbXB1dGVDaGFyQ2hhbmdlcyx0aGlzLnNob3VsZFBvc3RQcm9jZXNzQ2hhckNoYW5nZXMpKSxzKz1jLm9yaWdpbmFsTGVuZ3RoLGErPWMubW9kaWZpZWRMZW5ndGgpfXJldHVybntxdWl0RWFybHk6cixjaGFuZ2VzOml9fV9wdXNoVHJpbVdoaXRlc3BhY2VDaGFyQ2hhbmdlKHQsbixyLGkscyxhLGwpe2lmKHRoaXMuX21lcmdlVHJpbVdoaXRlc3BhY2VDaGFyQ2hhbmdlKHQsbixyLGkscyxhLGwpKXJldHVybjtsZXQgbzt0aGlzLnNob3VsZENvbXB1dGVDaGFyQ2hhbmdlcyYmKG89W25ldyBWdChuLHIsbixpLHMsYSxzLGwpXSksdC5wdXNoKG5ldyB1bihuLG4scyxzLG8pKX1fbWVyZ2VUcmltV2hpdGVzcGFjZUNoYXJDaGFuZ2UodCxuLHIsaSxzLGEsbCl7Y29uc3Qgbz10Lmxlbmd0aDtpZihvPT09MClyZXR1cm4hMTtjb25zdCBjPXRbby0xXTtyZXR1cm4gYy5vcmlnaW5hbEVuZExpbmVOdW1iZXI9PT0wfHxjLm1vZGlmaWVkRW5kTGluZU51bWJlcj09PTA/ITE6Yy5vcmlnaW5hbEVuZExpbmVOdW1iZXI9PT1uJiZjLm1vZGlmaWVkRW5kTGluZU51bWJlcj09PXM/KHRoaXMuc2hvdWxkQ29tcHV0ZUNoYXJDaGFuZ2VzJiZjLmNoYXJDaGFuZ2VzJiZjLmNoYXJDaGFuZ2VzLnB1c2gobmV3IFZ0KG4scixuLGkscyxhLHMsbCkpLCEwKTpjLm9yaWdpbmFsRW5kTGluZU51bWJlcisxPT09biYmYy5tb2RpZmllZEVuZExpbmVOdW1iZXIrMT09PXM/KGMub3JpZ2luYWxFbmRMaW5lTnVtYmVyPW4sYy5tb2RpZmllZEVuZExpbmVOdW1iZXI9cyx0aGlzLnNob3VsZENvbXB1dGVDaGFyQ2hhbmdlcyYmYy5jaGFyQ2hhbmdlcyYmYy5jaGFyQ2hhbmdlcy5wdXNoKG5ldyBWdChuLHIsbixpLHMsYSxzLGwpKSwhMCk6ITF9fWZ1bmN0aW9uIGRpKGUsdCl7Y29uc3Qgbj1OaChlKTtyZXR1cm4gbj09PS0xP3Q6bisxfWZ1bmN0aW9uIHVpKGUsdCl7Y29uc3Qgbj1EaChlKTtyZXR1cm4gbj09PS0xP3Q6bisyfWZ1bmN0aW9uIFNvKGUpe2lmKGU9PT0wKXJldHVybigpPT4hMDtjb25zdCB0PURhdGUubm93KCk7cmV0dXJuKCk9PkRhdGUubm93KCktdDxlfWNsYXNzIFlle3N0YXRpYyB0cml2aWFsKHQsbil7cmV0dXJuIG5ldyBZZShbbmV3IG9lKFgub2ZMZW5ndGgodC5sZW5ndGgpLFgub2ZMZW5ndGgobi5sZW5ndGgpKV0sITEpfXN0YXRpYyB0cml2aWFsVGltZWRPdXQodCxuKXtyZXR1cm4gbmV3IFllKFtuZXcgb2UoWC5vZkxlbmd0aCh0Lmxlbmd0aCksWC5vZkxlbmd0aChuLmxlbmd0aCkpXSwhMCl9Y29uc3RydWN0b3IodCxuKXt0aGlzLmRpZmZzPXQsdGhpcy5oaXRUaW1lb3V0PW59fWNsYXNzIG9le3N0YXRpYyBpbnZlcnQodCxuKXtjb25zdCByPVtdO3JldHVybiBkZCh0LChpLHMpPT57ci5wdXNoKG9lLmZyb21PZmZzZXRQYWlycyhpP2kuZ2V0RW5kRXhjbHVzaXZlcygpOlFlLnplcm8scz9zLmdldFN0YXJ0cygpOm5ldyBRZShuLChpP2kuc2VxMlJhbmdlLmVuZEV4Y2x1c2l2ZS1pLnNlcTFSYW5nZS5lbmRFeGNsdXNpdmU6MCkrbikpKX0pLHJ9c3RhdGljIGZyb21PZmZzZXRQYWlycyh0LG4pe3JldHVybiBuZXcgb2UobmV3IFgodC5vZmZzZXQxLG4ub2Zmc2V0MSksbmV3IFgodC5vZmZzZXQyLG4ub2Zmc2V0MikpfXN0YXRpYyBhc3NlcnRTb3J0ZWQodCl7bGV0IG47Zm9yKGNvbnN0IHIgb2YgdCl7aWYobiYmIShuLnNlcTFSYW5nZS5lbmRFeGNsdXNpdmU8PXIuc2VxMVJhbmdlLnN0YXJ0JiZuLnNlcTJSYW5nZS5lbmRFeGNsdXNpdmU8PXIuc2VxMlJhbmdlLnN0YXJ0KSl0aHJvdyBuZXcgX2UoIlNlcXVlbmNlIGRpZmZzIG11c3QgYmUgc29ydGVkIik7bj1yfX1jb25zdHJ1Y3Rvcih0LG4pe3RoaXMuc2VxMVJhbmdlPXQsdGhpcy5zZXEyUmFuZ2U9bn1zd2FwKCl7cmV0dXJuIG5ldyBvZSh0aGlzLnNlcTJSYW5nZSx0aGlzLnNlcTFSYW5nZSl9dG9TdHJpbmcoKXtyZXR1cm5gJHt0aGlzLnNlcTFSYW5nZX0gPC0+ICR7dGhpcy5zZXEyUmFuZ2V9YH1qb2luKHQpe3JldHVybiBuZXcgb2UodGhpcy5zZXExUmFuZ2Uuam9pbih0LnNlcTFSYW5nZSksdGhpcy5zZXEyUmFuZ2Uuam9pbih0LnNlcTJSYW5nZSkpfWRlbHRhKHQpe3JldHVybiB0PT09MD90aGlzOm5ldyBvZSh0aGlzLnNlcTFSYW5nZS5kZWx0YSh0KSx0aGlzLnNlcTJSYW5nZS5kZWx0YSh0KSl9ZGVsdGFTdGFydCh0KXtyZXR1cm4gdD09PTA/dGhpczpuZXcgb2UodGhpcy5zZXExUmFuZ2UuZGVsdGFTdGFydCh0KSx0aGlzLnNlcTJSYW5nZS5kZWx0YVN0YXJ0KHQpKX1kZWx0YUVuZCh0KXtyZXR1cm4gdD09PTA/dGhpczpuZXcgb2UodGhpcy5zZXExUmFuZ2UuZGVsdGFFbmQodCksdGhpcy5zZXEyUmFuZ2UuZGVsdGFFbmQodCkpfWludGVyc2VjdCh0KXtjb25zdCBuPXRoaXMuc2VxMVJhbmdlLmludGVyc2VjdCh0LnNlcTFSYW5nZSkscj10aGlzLnNlcTJSYW5nZS5pbnRlcnNlY3QodC5zZXEyUmFuZ2UpO2lmKCEoIW58fCFyKSlyZXR1cm4gbmV3IG9lKG4scil9Z2V0U3RhcnRzKCl7cmV0dXJuIG5ldyBRZSh0aGlzLnNlcTFSYW5nZS5zdGFydCx0aGlzLnNlcTJSYW5nZS5zdGFydCl9Z2V0RW5kRXhjbHVzaXZlcygpe3JldHVybiBuZXcgUWUodGhpcy5zZXExUmFuZ2UuZW5kRXhjbHVzaXZlLHRoaXMuc2VxMlJhbmdlLmVuZEV4Y2x1c2l2ZSl9fWNvbnN0IEZ0PWNsYXNzIEZ0e2NvbnN0cnVjdG9yKHQsbil7dGhpcy5vZmZzZXQxPXQsdGhpcy5vZmZzZXQyPW59dG9TdHJpbmcoKXtyZXR1cm5gJHt0aGlzLm9mZnNldDF9IDwtPiAke3RoaXMub2Zmc2V0Mn1gfWRlbHRhKHQpe3JldHVybiB0PT09MD90aGlzOm5ldyBGdCh0aGlzLm9mZnNldDErdCx0aGlzLm9mZnNldDIrdCl9ZXF1YWxzKHQpe3JldHVybiB0aGlzLm9mZnNldDE9PT10Lm9mZnNldDEmJnRoaXMub2Zmc2V0Mj09PXQub2Zmc2V0Mn19O0Z0Lnplcm89bmV3IEZ0KDAsMCksRnQubWF4PW5ldyBGdChOdW1iZXIuTUFYX1NBRkVfSU5URUdFUixOdW1iZXIuTUFYX1NBRkVfSU5URUdFUik7bGV0IFFlPUZ0O2NvbnN0IERyPWNsYXNzIERye2lzVmFsaWQoKXtyZXR1cm4hMH19O0RyLmluc3RhbmNlPW5ldyBEcjtsZXQgcG49RHI7Y2xhc3MgbnV7Y29uc3RydWN0b3IodCl7aWYodGhpcy50aW1lb3V0PXQsdGhpcy5zdGFydFRpbWU9RGF0ZS5ub3coKSx0aGlzLnZhbGlkPSEwLHQ8PTApdGhyb3cgbmV3IF9lKCJ0aW1lb3V0IG11c3QgYmUgcG9zaXRpdmUiKX1pc1ZhbGlkKCl7aWYoIShEYXRlLm5vdygpLXRoaXMuc3RhcnRUaW1lPHRoaXMudGltZW91dCkmJnRoaXMudmFsaWQpe3RoaXMudmFsaWQ9ITE7ZGVidWdnZXJ9cmV0dXJuIHRoaXMudmFsaWR9fWNsYXNzIHBpe2NvbnN0cnVjdG9yKHQsbil7dGhpcy53aWR0aD10LHRoaXMuaGVpZ2h0PW4sdGhpcy5hcnJheT1bXSx0aGlzLmFycmF5PW5ldyBBcnJheSh0Km4pfWdldCh0LG4pe3JldHVybiB0aGlzLmFycmF5W3Qrbip0aGlzLndpZHRoXX1zZXQodCxuLHIpe3RoaXMuYXJyYXlbdCtuKnRoaXMud2lkdGhdPXJ9fWZ1bmN0aW9uIG1pKGUpe3JldHVybiBlPT09MzJ8fGU9PT05fWNvbnN0IE1uPWNsYXNzIE1ue3N0YXRpYyBnZXRLZXkodCl7bGV0IG49dGhpcy5jaHJLZXlzLmdldCh0KTtyZXR1cm4gbj09PXZvaWQgMCYmKG49dGhpcy5jaHJLZXlzLnNpemUsdGhpcy5jaHJLZXlzLnNldCh0LG4pKSxufWNvbnN0cnVjdG9yKHQsbixyKXt0aGlzLnJhbmdlPXQsdGhpcy5saW5lcz1uLHRoaXMuc291cmNlPXIsdGhpcy5oaXN0b2dyYW09W107bGV0IGk9MDtmb3IobGV0IHM9dC5zdGFydExpbmVOdW1iZXItMTtzPHQuZW5kTGluZU51bWJlckV4Y2x1c2l2ZS0xO3MrKyl7Y29uc3QgYT1uW3NdO2ZvcihsZXQgbz0wO288YS5sZW5ndGg7bysrKXtpKys7Y29uc3QgYz1hW29dLGQ9TW4uZ2V0S2V5KGMpO3RoaXMuaGlzdG9ncmFtW2RdPSh0aGlzLmhpc3RvZ3JhbVtkXXx8MCkrMX1pKys7Y29uc3QgbD1Nbi5nZXRLZXkoYApgKTt0aGlzLmhpc3RvZ3JhbVtsXT0odGhpcy5oaXN0b2dyYW1bbF18fDApKzF9dGhpcy50b3RhbENvdW50PWl9Y29tcHV0ZVNpbWlsYXJpdHkodCl7bGV0IG49MDtjb25zdCByPU1hdGgubWF4KHRoaXMuaGlzdG9ncmFtLmxlbmd0aCx0Lmhpc3RvZ3JhbS5sZW5ndGgpO2ZvcihsZXQgaT0wO2k8cjtpKyspbis9TWF0aC5hYnMoKHRoaXMuaGlzdG9ncmFtW2ldPz8wKS0odC5oaXN0b2dyYW1baV0/PzApKTtyZXR1cm4gMS1uLyh0aGlzLnRvdGFsQ291bnQrdC50b3RhbENvdW50KX19O01uLmNocktleXM9bmV3IE1hcDtsZXQgUW49TW47Y2xhc3MgcnV7Y29tcHV0ZSh0LG4scj1wbi5pbnN0YW5jZSxpKXtpZih0Lmxlbmd0aD09PTB8fG4ubGVuZ3RoPT09MClyZXR1cm4gWWUudHJpdmlhbCh0LG4pO2NvbnN0IHM9bmV3IHBpKHQubGVuZ3RoLG4ubGVuZ3RoKSxhPW5ldyBwaSh0Lmxlbmd0aCxuLmxlbmd0aCksbD1uZXcgcGkodC5sZW5ndGgsbi5sZW5ndGgpO2ZvcihsZXQgdj0wO3Y8dC5sZW5ndGg7disrKWZvcihsZXQgeT0wO3k8bi5sZW5ndGg7eSsrKXtpZighci5pc1ZhbGlkKCkpcmV0dXJuIFllLnRyaXZpYWxUaW1lZE91dCh0LG4pO2NvbnN0IF89dj09PTA/MDpzLmdldCh2LTEseSksaz15PT09MD8wOnMuZ2V0KHYseS0xKTtsZXQgRDt0LmdldEVsZW1lbnQodik9PT1uLmdldEVsZW1lbnQoeSk/KHY9PT0wfHx5PT09MD9EPTA6RD1zLmdldCh2LTEseS0xKSx2PjAmJnk+MCYmYS5nZXQodi0xLHktMSk9PT0zJiYoRCs9bC5nZXQodi0xLHktMSkpLEQrPWk/aSh2LHkpOjEpOkQ9LTE7Y29uc3QgTj1NYXRoLm1heChfLGssRCk7aWYoTj09PUQpe2NvbnN0IEU9dj4wJiZ5PjA/bC5nZXQodi0xLHktMSk6MDtsLnNldCh2LHksRSsxKSxhLnNldCh2LHksMyl9ZWxzZSBOPT09Xz8obC5zZXQodix5LDApLGEuc2V0KHYseSwxKSk6Tj09PWsmJihsLnNldCh2LHksMCksYS5zZXQodix5LDIpKTtzLnNldCh2LHksTil9Y29uc3Qgbz1bXTtsZXQgYz10Lmxlbmd0aCxkPW4ubGVuZ3RoO2Z1bmN0aW9uIHUodix5KXsodisxIT09Y3x8eSsxIT09ZCkmJm8ucHVzaChuZXcgb2UobmV3IFgodisxLGMpLG5ldyBYKHkrMSxkKSkpLGM9dixkPXl9bGV0IGY9dC5sZW5ndGgtMSxtPW4ubGVuZ3RoLTE7Zm9yKDtmPj0wJiZtPj0wOylhLmdldChmLG0pPT09Mz8odShmLG0pLGYtLSxtLS0pOmEuZ2V0KGYsbSk9PT0xP2YtLTptLS07cmV0dXJuIHUoLTEsLTEpLG8ucmV2ZXJzZSgpLG5ldyBZZShvLCExKX19Y2xhc3MgQ297Y29tcHV0ZSh0LG4scj1wbi5pbnN0YW5jZSl7aWYodC5sZW5ndGg9PT0wfHxuLmxlbmd0aD09PTApcmV0dXJuIFllLnRyaXZpYWwodCxuKTtjb25zdCBpPXQscz1uO2Z1bmN0aW9uIGEoeSxfKXtmb3IoO3k8aS5sZW5ndGgmJl88cy5sZW5ndGgmJmkuZ2V0RWxlbWVudCh5KT09PXMuZ2V0RWxlbWVudChfKTspeSsrLF8rKztyZXR1cm4geX1sZXQgbD0wO2NvbnN0IG89bmV3IGl1O28uc2V0KDAsYSgwLDApKTtjb25zdCBjPW5ldyBzdTtjLnNldCgwLG8uZ2V0KDApPT09MD9udWxsOm5ldyBfbyhudWxsLDAsMCxvLmdldCgwKSkpO2xldCBkPTA7ZTpmb3IoOzspe2lmKGwrKywhci5pc1ZhbGlkKCkpcmV0dXJuIFllLnRyaXZpYWxUaW1lZE91dChpLHMpO2NvbnN0IHk9LU1hdGgubWluKGwscy5sZW5ndGgrbCUyKSxfPU1hdGgubWluKGwsaS5sZW5ndGgrbCUyKTtmb3IoZD15O2Q8PV87ZCs9Mil7Y29uc3Qgaz1kPT09Xz8tMTpvLmdldChkKzEpLEQ9ZD09PXk/LTE6by5nZXQoZC0xKSsxLE49TWF0aC5taW4oTWF0aC5tYXgoayxEKSxpLmxlbmd0aCksRT1OLWQ7aWYoTj5pLmxlbmd0aHx8RT5zLmxlbmd0aCljb250aW51ZTtjb25zdCBSPWEoTixFKTtvLnNldChkLFIpO2NvbnN0IE09Tj09PWs/Yy5nZXQoZCsxKTpjLmdldChkLTEpO2lmKGMuc2V0KGQsUiE9PU4/bmV3IF9vKE0sTixFLFItTik6TSksby5nZXQoZCk9PT1pLmxlbmd0aCYmby5nZXQoZCktZD09PXMubGVuZ3RoKWJyZWFrIGV9fWxldCB1PWMuZ2V0KGQpO2NvbnN0IGY9W107bGV0IG09aS5sZW5ndGgsdj1zLmxlbmd0aDtmb3IoOzspe2NvbnN0IHk9dT91LngrdS5sZW5ndGg6MCxfPXU/dS55K3UubGVuZ3RoOjA7aWYoKHkhPT1tfHxfIT09dikmJmYucHVzaChuZXcgb2UobmV3IFgoeSxtKSxuZXcgWChfLHYpKSksIXUpYnJlYWs7bT11Lngsdj11LnksdT11LnByZXZ9cmV0dXJuIGYucmV2ZXJzZSgpLG5ldyBZZShmLCExKX19Y2xhc3MgX297Y29uc3RydWN0b3IodCxuLHIsaSl7dGhpcy5wcmV2PXQsdGhpcy54PW4sdGhpcy55PXIsdGhpcy5sZW5ndGg9aX19Y2xhc3MgaXV7Y29uc3RydWN0b3IoKXt0aGlzLnBvc2l0aXZlQXJyPW5ldyBJbnQzMkFycmF5KDEwKSx0aGlzLm5lZ2F0aXZlQXJyPW5ldyBJbnQzMkFycmF5KDEwKX1nZXQodCl7cmV0dXJuIHQ8MD8odD0tdC0xLHRoaXMubmVnYXRpdmVBcnJbdF0pOnRoaXMucG9zaXRpdmVBcnJbdF19c2V0KHQsbil7aWYodDwwKXtpZih0PS10LTEsdD49dGhpcy5uZWdhdGl2ZUFyci5sZW5ndGgpe2NvbnN0IHI9dGhpcy5uZWdhdGl2ZUFycjt0aGlzLm5lZ2F0aXZlQXJyPW5ldyBJbnQzMkFycmF5KHIubGVuZ3RoKjIpLHRoaXMubmVnYXRpdmVBcnIuc2V0KHIpfXRoaXMubmVnYXRpdmVBcnJbdF09bn1lbHNle2lmKHQ+PXRoaXMucG9zaXRpdmVBcnIubGVuZ3RoKXtjb25zdCByPXRoaXMucG9zaXRpdmVBcnI7dGhpcy5wb3NpdGl2ZUFycj1uZXcgSW50MzJBcnJheShyLmxlbmd0aCoyKSx0aGlzLnBvc2l0aXZlQXJyLnNldChyKX10aGlzLnBvc2l0aXZlQXJyW3RdPW59fX1jbGFzcyBzdXtjb25zdHJ1Y3Rvcigpe3RoaXMucG9zaXRpdmVBcnI9W10sdGhpcy5uZWdhdGl2ZUFycj1bXX1nZXQodCl7cmV0dXJuIHQ8MD8odD0tdC0xLHRoaXMubmVnYXRpdmVBcnJbdF0pOnRoaXMucG9zaXRpdmVBcnJbdF19c2V0KHQsbil7dDwwPyh0PS10LTEsdGhpcy5uZWdhdGl2ZUFyclt0XT1uKTp0aGlzLnBvc2l0aXZlQXJyW3RdPW59fWNsYXNzIEtue2NvbnN0cnVjdG9yKHQsbixyKXt0aGlzLmxpbmVzPXQsdGhpcy5yYW5nZT1uLHRoaXMuY29uc2lkZXJXaGl0ZXNwYWNlQ2hhbmdlcz1yLHRoaXMuZWxlbWVudHM9W10sdGhpcy5maXJzdEVsZW1lbnRPZmZzZXRCeUxpbmVJZHg9W10sdGhpcy5saW5lU3RhcnRPZmZzZXRzPVtdLHRoaXMudHJpbW1lZFdzTGVuZ3Roc0J5TGluZUlkeD1bXSx0aGlzLmZpcnN0RWxlbWVudE9mZnNldEJ5TGluZUlkeC5wdXNoKDApO2ZvcihsZXQgaT10aGlzLnJhbmdlLnN0YXJ0TGluZU51bWJlcjtpPD10aGlzLnJhbmdlLmVuZExpbmVOdW1iZXI7aSsrKXtsZXQgcz10W2ktMV0sYT0wO2k9PT10aGlzLnJhbmdlLnN0YXJ0TGluZU51bWJlciYmdGhpcy5yYW5nZS5zdGFydENvbHVtbj4xJiYoYT10aGlzLnJhbmdlLnN0YXJ0Q29sdW1uLTEscz1zLnN1YnN0cmluZyhhKSksdGhpcy5saW5lU3RhcnRPZmZzZXRzLnB1c2goYSk7bGV0IGw9MDtpZighcil7Y29uc3QgYz1zLnRyaW1TdGFydCgpO2w9cy5sZW5ndGgtYy5sZW5ndGgscz1jLnRyaW1FbmQoKX10aGlzLnRyaW1tZWRXc0xlbmd0aHNCeUxpbmVJZHgucHVzaChsKTtjb25zdCBvPWk9PT10aGlzLnJhbmdlLmVuZExpbmVOdW1iZXI/TWF0aC5taW4odGhpcy5yYW5nZS5lbmRDb2x1bW4tMS1hLWwscy5sZW5ndGgpOnMubGVuZ3RoO2ZvcihsZXQgYz0wO2M8bztjKyspdGhpcy5lbGVtZW50cy5wdXNoKHMuY2hhckNvZGVBdChjKSk7aTx0aGlzLnJhbmdlLmVuZExpbmVOdW1iZXImJih0aGlzLmVsZW1lbnRzLnB1c2goMTApLHRoaXMuZmlyc3RFbGVtZW50T2Zmc2V0QnlMaW5lSWR4LnB1c2godGhpcy5lbGVtZW50cy5sZW5ndGgpKX19dG9TdHJpbmcoKXtyZXR1cm5gU2xpY2U6ICIke3RoaXMudGV4dH0iYH1nZXQgdGV4dCgpe3JldHVybiB0aGlzLmdldFRleHQobmV3IFgoMCx0aGlzLmxlbmd0aCkpfWdldFRleHQodCl7cmV0dXJuIHRoaXMuZWxlbWVudHMuc2xpY2UodC5zdGFydCx0LmVuZEV4Y2x1c2l2ZSkubWFwKG49PlN0cmluZy5mcm9tQ2hhckNvZGUobikpLmpvaW4oIiIpfWdldEVsZW1lbnQodCl7cmV0dXJuIHRoaXMuZWxlbWVudHNbdF19Z2V0IGxlbmd0aCgpe3JldHVybiB0aGlzLmVsZW1lbnRzLmxlbmd0aH1nZXRCb3VuZGFyeVNjb3JlKHQpe2NvbnN0IG49RW8odD4wP3RoaXMuZWxlbWVudHNbdC0xXTotMSkscj1Fbyh0PHRoaXMuZWxlbWVudHMubGVuZ3RoP3RoaXMuZWxlbWVudHNbdF06LTEpO2lmKG49PT03JiZyPT09OClyZXR1cm4gMDtpZihuPT09OClyZXR1cm4gMTUwO2xldCBpPTA7cmV0dXJuIG4hPT1yJiYoaSs9MTAsbj09PTAmJnI9PT0xJiYoaSs9MSkpLGkrPWtvKG4pLGkrPWtvKHIpLGl9dHJhbnNsYXRlT2Zmc2V0KHQsbj0icmlnaHQiKXtjb25zdCByPWRuKHRoaXMuZmlyc3RFbGVtZW50T2Zmc2V0QnlMaW5lSWR4LHM9PnM8PXQpLGk9dC10aGlzLmZpcnN0RWxlbWVudE9mZnNldEJ5TGluZUlkeFtyXTtyZXR1cm4gbmV3IGNlKHRoaXMucmFuZ2Uuc3RhcnRMaW5lTnVtYmVyK3IsMSt0aGlzLmxpbmVTdGFydE9mZnNldHNbcl0raSsoaT09PTAmJm49PT0ibGVmdCI/MDp0aGlzLnRyaW1tZWRXc0xlbmd0aHNCeUxpbmVJZHhbcl0pKX10cmFuc2xhdGVSYW5nZSh0KXtjb25zdCBuPXRoaXMudHJhbnNsYXRlT2Zmc2V0KHQuc3RhcnQsInJpZ2h0Iikscj10aGlzLnRyYW5zbGF0ZU9mZnNldCh0LmVuZEV4Y2x1c2l2ZSwibGVmdCIpO3JldHVybiByLmlzQmVmb3JlKG4pP1EuZnJvbVBvc2l0aW9ucyhyLHIpOlEuZnJvbVBvc2l0aW9ucyhuLHIpfWZpbmRXb3JkQ29udGFpbmluZyh0KXtpZih0PDB8fHQ+PXRoaXMuZWxlbWVudHMubGVuZ3RofHwhZmkodGhpcy5lbGVtZW50c1t0XSkpcmV0dXJuO2xldCBuPXQ7Zm9yKDtuPjAmJmZpKHRoaXMuZWxlbWVudHNbbi0xXSk7KW4tLTtsZXQgcj10O2Zvcig7cjx0aGlzLmVsZW1lbnRzLmxlbmd0aCYmZmkodGhpcy5lbGVtZW50c1tyXSk7KXIrKztyZXR1cm4gbmV3IFgobixyKX1jb3VudExpbmVzSW4odCl7cmV0dXJuIHRoaXMudHJhbnNsYXRlT2Zmc2V0KHQuZW5kRXhjbHVzaXZlKS5saW5lTnVtYmVyLXRoaXMudHJhbnNsYXRlT2Zmc2V0KHQuc3RhcnQpLmxpbmVOdW1iZXJ9aXNTdHJvbmdseUVxdWFsKHQsbil7cmV0dXJuIHRoaXMuZWxlbWVudHNbdF09PT10aGlzLmVsZW1lbnRzW25dfWV4dGVuZFRvRnVsbExpbmVzKHQpe2NvbnN0IG49T3QodGhpcy5maXJzdEVsZW1lbnRPZmZzZXRCeUxpbmVJZHgsaT0+aTw9dC5zdGFydCk/PzAscj1YZCh0aGlzLmZpcnN0RWxlbWVudE9mZnNldEJ5TGluZUlkeCxpPT50LmVuZEV4Y2x1c2l2ZTw9aSk/P3RoaXMuZWxlbWVudHMubGVuZ3RoO3JldHVybiBuZXcgWChuLHIpfX1mdW5jdGlvbiBmaShlKXtyZXR1cm4gZT49OTcmJmU8PTEyMnx8ZT49NjUmJmU8PTkwfHxlPj00OCYmZTw9NTd9Y29uc3QgYXU9ezA6MCwxOjAsMjowLDM6MTAsNDoyLDU6MzAsNjozLDc6MTAsODoxMH07ZnVuY3Rpb24ga28oZSl7cmV0dXJuIGF1W2VdfWZ1bmN0aW9uIEVvKGUpe3JldHVybiBlPT09MTA/ODplPT09MTM/NzptaShlKT82OmU+PTk3JiZlPD0xMjI/MDplPj02NSYmZTw9OTA/MTplPj00OCYmZTw9NTc/MjplPT09LTE/MzplPT09NDR8fGU9PT01OT81OjR9ZnVuY3Rpb24gb3UoZSx0LG4scixpLHMpe2xldHttb3ZlczphLGV4Y2x1ZGVkQ2hhbmdlczpsfT1jdShlLHQsbixzKTtpZighcy5pc1ZhbGlkKCkpcmV0dXJuW107Y29uc3Qgbz1lLmZpbHRlcihkPT4hbC5oYXMoZCkpLGM9aHUobyxyLGksdCxuLHMpO3JldHVybiBwZChhLGMpLGE9ZHUoYSksYT1hLmZpbHRlcihkPT57Y29uc3QgdT1kLm9yaWdpbmFsLnRvT2Zmc2V0UmFuZ2UoKS5zbGljZSh0KS5tYXAobT0+bS50cmltKCkpO3JldHVybiB1LmpvaW4oYApgKS5sZW5ndGg+PTE1JiZsdSh1LG09Pm0ubGVuZ3RoPj0yKT49Mn0pLGE9dXUoZSxhKSxhfWZ1bmN0aW9uIGx1KGUsdCl7bGV0IG49MDtmb3IoY29uc3QgciBvZiBlKXQocikmJm4rKztyZXR1cm4gbn1mdW5jdGlvbiBjdShlLHQsbixyKXtjb25zdCBpPVtdLHM9ZS5maWx0ZXIobz0+by5tb2RpZmllZC5pc0VtcHR5JiZvLm9yaWdpbmFsLmxlbmd0aD49MykubWFwKG89Pm5ldyBRbihvLm9yaWdpbmFsLHQsbykpLGE9bmV3IFNldChlLmZpbHRlcihvPT5vLm9yaWdpbmFsLmlzRW1wdHkmJm8ubW9kaWZpZWQubGVuZ3RoPj0zKS5tYXAobz0+bmV3IFFuKG8ubW9kaWZpZWQsbixvKSkpLGw9bmV3IFNldDtmb3IoY29uc3QgbyBvZiBzKXtsZXQgYz0tMSxkO2Zvcihjb25zdCB1IG9mIGEpe2NvbnN0IGY9by5jb21wdXRlU2ltaWxhcml0eSh1KTtmPmMmJihjPWYsZD11KX1pZihjPi45JiZkJiYoYS5kZWxldGUoZCksaS5wdXNoKG5ldyBOZShvLnJhbmdlLGQucmFuZ2UpKSxsLmFkZChvLnNvdXJjZSksbC5hZGQoZC5zb3VyY2UpKSwhci5pc1ZhbGlkKCkpcmV0dXJue21vdmVzOmksZXhjbHVkZWRDaGFuZ2VzOmx9fXJldHVybnttb3ZlczppLGV4Y2x1ZGVkQ2hhbmdlczpsfX1mdW5jdGlvbiBodShlLHQsbixyLGkscyl7Y29uc3QgYT1bXSxsPW5ldyBWZDtmb3IoY29uc3QgZiBvZiBlKWZvcihsZXQgbT1mLm9yaWdpbmFsLnN0YXJ0TGluZU51bWJlcjttPGYub3JpZ2luYWwuZW5kTGluZU51bWJlckV4Y2x1c2l2ZS0yO20rKyl7Y29uc3Qgdj1gJHt0W20tMV19OiR7dFttKzEtMV19OiR7dFttKzItMV19YDtsLmFkZCh2LHtyYW5nZTpuZXcgaihtLG0rMyl9KX1jb25zdCBvPVtdO2Uuc29ydCgkbihmPT5mLm1vZGlmaWVkLnN0YXJ0TGluZU51bWJlcixCbikpO2Zvcihjb25zdCBmIG9mIGUpe2xldCBtPVtdO2ZvcihsZXQgdj1mLm1vZGlmaWVkLnN0YXJ0TGluZU51bWJlcjt2PGYubW9kaWZpZWQuZW5kTGluZU51bWJlckV4Y2x1c2l2ZS0yO3YrKyl7Y29uc3QgeT1gJHtuW3YtMV19OiR7blt2KzEtMV19OiR7blt2KzItMV19YCxfPW5ldyBqKHYsdiszKSxrPVtdO2wuZm9yRWFjaCh5LCh7cmFuZ2U6RH0pPT57Zm9yKGNvbnN0IEUgb2YgbSlpZihFLm9yaWdpbmFsTGluZVJhbmdlLmVuZExpbmVOdW1iZXJFeGNsdXNpdmUrMT09PUQuZW5kTGluZU51bWJlckV4Y2x1c2l2ZSYmRS5tb2RpZmllZExpbmVSYW5nZS5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlKzE9PT1fLmVuZExpbmVOdW1iZXJFeGNsdXNpdmUpe0Uub3JpZ2luYWxMaW5lUmFuZ2U9bmV3IGooRS5vcmlnaW5hbExpbmVSYW5nZS5zdGFydExpbmVOdW1iZXIsRC5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlKSxFLm1vZGlmaWVkTGluZVJhbmdlPW5ldyBqKEUubW9kaWZpZWRMaW5lUmFuZ2Uuc3RhcnRMaW5lTnVtYmVyLF8uZW5kTGluZU51bWJlckV4Y2x1c2l2ZSksay5wdXNoKEUpO3JldHVybn1jb25zdCBOPXttb2RpZmllZExpbmVSYW5nZTpfLG9yaWdpbmFsTGluZVJhbmdlOkR9O28ucHVzaChOKSxrLnB1c2goTil9KSxtPWt9aWYoIXMuaXNWYWxpZCgpKXJldHVybltdfW8uc29ydChtZCgkbihmPT5mLm1vZGlmaWVkTGluZVJhbmdlLmxlbmd0aCxCbikpKTtjb25zdCBjPW5ldyBXZSxkPW5ldyBXZTtmb3IoY29uc3QgZiBvZiBvKXtjb25zdCBtPWYubW9kaWZpZWRMaW5lUmFuZ2Uuc3RhcnRMaW5lTnVtYmVyLWYub3JpZ2luYWxMaW5lUmFuZ2Uuc3RhcnRMaW5lTnVtYmVyLHY9Yy5zdWJ0cmFjdEZyb20oZi5tb2RpZmllZExpbmVSYW5nZSkseT1kLnN1YnRyYWN0RnJvbShmLm9yaWdpbmFsTGluZVJhbmdlKS5nZXRXaXRoRGVsdGEobSksXz12LmdldEludGVyc2VjdGlvbih5KTtmb3IoY29uc3QgayBvZiBfLnJhbmdlcyl7aWYoay5sZW5ndGg8Myljb250aW51ZTtjb25zdCBEPWssTj1rLmRlbHRhKC1tKTthLnB1c2gobmV3IE5lKE4sRCkpLGMuYWRkUmFuZ2UoRCksZC5hZGRSYW5nZShOKX19YS5zb3J0KCRuKGY9PmYub3JpZ2luYWwuc3RhcnRMaW5lTnVtYmVyLEJuKSk7Y29uc3QgdT1uZXcgWW4oZSk7Zm9yKGxldCBmPTA7ZjxhLmxlbmd0aDtmKyspe2NvbnN0IG09YVtmXSx2PXUuZmluZExhc3RNb25vdG9ub3VzKE09Pk0ub3JpZ2luYWwuc3RhcnRMaW5lTnVtYmVyPD1tLm9yaWdpbmFsLnN0YXJ0TGluZU51bWJlcikseT1PdChlLE09Pk0ubW9kaWZpZWQuc3RhcnRMaW5lTnVtYmVyPD1tLm1vZGlmaWVkLnN0YXJ0TGluZU51bWJlciksXz1NYXRoLm1heChtLm9yaWdpbmFsLnN0YXJ0TGluZU51bWJlci12Lm9yaWdpbmFsLnN0YXJ0TGluZU51bWJlcixtLm1vZGlmaWVkLnN0YXJ0TGluZU51bWJlci15Lm1vZGlmaWVkLnN0YXJ0TGluZU51bWJlciksaz11LmZpbmRMYXN0TW9ub3Rvbm91cyhNPT5NLm9yaWdpbmFsLnN0YXJ0TGluZU51bWJlcjxtLm9yaWdpbmFsLmVuZExpbmVOdW1iZXJFeGNsdXNpdmUpLEQ9T3QoZSxNPT5NLm1vZGlmaWVkLnN0YXJ0TGluZU51bWJlcjxtLm1vZGlmaWVkLmVuZExpbmVOdW1iZXJFeGNsdXNpdmUpLE49TWF0aC5tYXgoay5vcmlnaW5hbC5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlLW0ub3JpZ2luYWwuZW5kTGluZU51bWJlckV4Y2x1c2l2ZSxELm1vZGlmaWVkLmVuZExpbmVOdW1iZXJFeGNsdXNpdmUtbS5tb2RpZmllZC5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlKTtsZXQgRTtmb3IoRT0wO0U8XztFKyspe2NvbnN0IE09bS5vcmlnaW5hbC5zdGFydExpbmVOdW1iZXItRS0xLFQ9bS5tb2RpZmllZC5zdGFydExpbmVOdW1iZXItRS0xO2lmKE0+ci5sZW5ndGh8fFQ+aS5sZW5ndGh8fGMuY29udGFpbnMoVCl8fGQuY29udGFpbnMoTSl8fCFGbyhyW00tMV0saVtULTFdLHMpKWJyZWFrfUU+MCYmKGQuYWRkUmFuZ2UobmV3IGoobS5vcmlnaW5hbC5zdGFydExpbmVOdW1iZXItRSxtLm9yaWdpbmFsLnN0YXJ0TGluZU51bWJlcikpLGMuYWRkUmFuZ2UobmV3IGoobS5tb2RpZmllZC5zdGFydExpbmVOdW1iZXItRSxtLm1vZGlmaWVkLnN0YXJ0TGluZU51bWJlcikpKTtsZXQgUjtmb3IoUj0wO1I8TjtSKyspe2NvbnN0IE09bS5vcmlnaW5hbC5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlK1IsVD1tLm1vZGlmaWVkLmVuZExpbmVOdW1iZXJFeGNsdXNpdmUrUjtpZihNPnIubGVuZ3RofHxUPmkubGVuZ3RofHxjLmNvbnRhaW5zKFQpfHxkLmNvbnRhaW5zKE0pfHwhRm8ocltNLTFdLGlbVC0xXSxzKSlicmVha31SPjAmJihkLmFkZFJhbmdlKG5ldyBqKG0ub3JpZ2luYWwuZW5kTGluZU51bWJlckV4Y2x1c2l2ZSxtLm9yaWdpbmFsLmVuZExpbmVOdW1iZXJFeGNsdXNpdmUrUikpLGMuYWRkUmFuZ2UobmV3IGoobS5tb2RpZmllZC5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlLG0ubW9kaWZpZWQuZW5kTGluZU51bWJlckV4Y2x1c2l2ZStSKSkpLChFPjB8fFI+MCkmJihhW2ZdPW5ldyBOZShuZXcgaihtLm9yaWdpbmFsLnN0YXJ0TGluZU51bWJlci1FLG0ub3JpZ2luYWwuZW5kTGluZU51bWJlckV4Y2x1c2l2ZStSKSxuZXcgaihtLm1vZGlmaWVkLnN0YXJ0TGluZU51bWJlci1FLG0ubW9kaWZpZWQuZW5kTGluZU51bWJlckV4Y2x1c2l2ZStSKSkpfXJldHVybiBhfWZ1bmN0aW9uIEZvKGUsdCxuKXtpZihlLnRyaW0oKT09PXQudHJpbSgpKXJldHVybiEwO2lmKGUubGVuZ3RoPjMwMCYmdC5sZW5ndGg+MzAwKXJldHVybiExO2NvbnN0IGk9bmV3IENvKCkuY29tcHV0ZShuZXcgS24oW2VdLG5ldyBRKDEsMSwxLGUubGVuZ3RoKSwhMSksbmV3IEtuKFt0XSxuZXcgUSgxLDEsMSx0Lmxlbmd0aCksITEpLG4pO2xldCBzPTA7Y29uc3QgYT1vZS5pbnZlcnQoaS5kaWZmcyxlLmxlbmd0aCk7Zm9yKGNvbnN0IGQgb2YgYSlkLnNlcTFSYW5nZS5mb3JFYWNoKHU9PnttaShlLmNoYXJDb2RlQXQodSkpfHxzKyt9KTtmdW5jdGlvbiBsKGQpe2xldCB1PTA7Zm9yKGxldCBmPTA7ZjxlLmxlbmd0aDtmKyspbWkoZC5jaGFyQ29kZUF0KGYpKXx8dSsrO3JldHVybiB1fWNvbnN0IG89bChlLmxlbmd0aD50Lmxlbmd0aD9lOnQpO3JldHVybiBzL28+LjYmJm8+MTB9ZnVuY3Rpb24gZHUoZSl7aWYoZS5sZW5ndGg9PT0wKXJldHVybiBlO2Uuc29ydCgkbihuPT5uLm9yaWdpbmFsLnN0YXJ0TGluZU51bWJlcixCbikpO2NvbnN0IHQ9W2VbMF1dO2ZvcihsZXQgbj0xO248ZS5sZW5ndGg7bisrKXtjb25zdCByPXRbdC5sZW5ndGgtMV0saT1lW25dLHM9aS5vcmlnaW5hbC5zdGFydExpbmVOdW1iZXItci5vcmlnaW5hbC5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlLGE9aS5tb2RpZmllZC5zdGFydExpbmVOdW1iZXItci5tb2RpZmllZC5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlO2lmKHM+PTAmJmE+PTAmJnMrYTw9Mil7dFt0Lmxlbmd0aC0xXT1yLmpvaW4oaSk7Y29udGludWV9dC5wdXNoKGkpfXJldHVybiB0fWZ1bmN0aW9uIHV1KGUsdCl7Y29uc3Qgbj1uZXcgWW4oZSk7cmV0dXJuIHQ9dC5maWx0ZXIocj0+e2NvbnN0IGk9bi5maW5kTGFzdE1vbm90b25vdXMobD0+bC5vcmlnaW5hbC5zdGFydExpbmVOdW1iZXI8ci5vcmlnaW5hbC5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlKXx8bmV3IE5lKG5ldyBqKDEsMSksbmV3IGooMSwxKSkscz1PdChlLGw9PmwubW9kaWZpZWQuc3RhcnRMaW5lTnVtYmVyPHIubW9kaWZpZWQuZW5kTGluZU51bWJlckV4Y2x1c2l2ZSk7cmV0dXJuIGkhPT1zfSksdH1mdW5jdGlvbiBSbyhlLHQsbil7bGV0IHI9bjtyZXR1cm4gcj1ObyhlLHQscikscj1ObyhlLHQscikscj1wdShlLHQscikscn1mdW5jdGlvbiBObyhlLHQsbil7aWYobi5sZW5ndGg9PT0wKXJldHVybiBuO2NvbnN0IHI9W107ci5wdXNoKG5bMF0pO2ZvcihsZXQgcz0xO3M8bi5sZW5ndGg7cysrKXtjb25zdCBhPXJbci5sZW5ndGgtMV07bGV0IGw9bltzXTtpZihsLnNlcTFSYW5nZS5pc0VtcHR5fHxsLnNlcTJSYW5nZS5pc0VtcHR5KXtjb25zdCBvPWwuc2VxMVJhbmdlLnN0YXJ0LWEuc2VxMVJhbmdlLmVuZEV4Y2x1c2l2ZTtsZXQgYztmb3IoYz0xO2M8PW8mJiEoZS5nZXRFbGVtZW50KGwuc2VxMVJhbmdlLnN0YXJ0LWMpIT09ZS5nZXRFbGVtZW50KGwuc2VxMVJhbmdlLmVuZEV4Y2x1c2l2ZS1jKXx8dC5nZXRFbGVtZW50KGwuc2VxMlJhbmdlLnN0YXJ0LWMpIT09dC5nZXRFbGVtZW50KGwuc2VxMlJhbmdlLmVuZEV4Y2x1c2l2ZS1jKSk7YysrKTtpZihjLS0sYz09PW8pe3Jbci5sZW5ndGgtMV09bmV3IG9lKG5ldyBYKGEuc2VxMVJhbmdlLnN0YXJ0LGwuc2VxMVJhbmdlLmVuZEV4Y2x1c2l2ZS1vKSxuZXcgWChhLnNlcTJSYW5nZS5zdGFydCxsLnNlcTJSYW5nZS5lbmRFeGNsdXNpdmUtbykpO2NvbnRpbnVlfWw9bC5kZWx0YSgtYyl9ci5wdXNoKGwpfWNvbnN0IGk9W107Zm9yKGxldCBzPTA7czxyLmxlbmd0aC0xO3MrKyl7Y29uc3QgYT1yW3MrMV07bGV0IGw9cltzXTtpZihsLnNlcTFSYW5nZS5pc0VtcHR5fHxsLnNlcTJSYW5nZS5pc0VtcHR5KXtjb25zdCBvPWEuc2VxMVJhbmdlLnN0YXJ0LWwuc2VxMVJhbmdlLmVuZEV4Y2x1c2l2ZTtsZXQgYztmb3IoYz0wO2M8byYmISghZS5pc1N0cm9uZ2x5RXF1YWwobC5zZXExUmFuZ2Uuc3RhcnQrYyxsLnNlcTFSYW5nZS5lbmRFeGNsdXNpdmUrYyl8fCF0LmlzU3Ryb25nbHlFcXVhbChsLnNlcTJSYW5nZS5zdGFydCtjLGwuc2VxMlJhbmdlLmVuZEV4Y2x1c2l2ZStjKSk7YysrKTtpZihjPT09byl7cltzKzFdPW5ldyBvZShuZXcgWChsLnNlcTFSYW5nZS5zdGFydCtvLGEuc2VxMVJhbmdlLmVuZEV4Y2x1c2l2ZSksbmV3IFgobC5zZXEyUmFuZ2Uuc3RhcnQrbyxhLnNlcTJSYW5nZS5lbmRFeGNsdXNpdmUpKTtjb250aW51ZX1jPjAmJihsPWwuZGVsdGEoYykpfWkucHVzaChsKX1yZXR1cm4gci5sZW5ndGg+MCYmaS5wdXNoKHJbci5sZW5ndGgtMV0pLGl9ZnVuY3Rpb24gcHUoZSx0LG4pe2lmKCFlLmdldEJvdW5kYXJ5U2NvcmV8fCF0LmdldEJvdW5kYXJ5U2NvcmUpcmV0dXJuIG47Zm9yKGxldCByPTA7cjxuLmxlbmd0aDtyKyspe2NvbnN0IGk9cj4wP25bci0xXTp2b2lkIDAscz1uW3JdLGE9cisxPG4ubGVuZ3RoP25bcisxXTp2b2lkIDAsbD1uZXcgWChpP2kuc2VxMVJhbmdlLmVuZEV4Y2x1c2l2ZSsxOjAsYT9hLnNlcTFSYW5nZS5zdGFydC0xOmUubGVuZ3RoKSxvPW5ldyBYKGk/aS5zZXEyUmFuZ2UuZW5kRXhjbHVzaXZlKzE6MCxhP2Euc2VxMlJhbmdlLnN0YXJ0LTE6dC5sZW5ndGgpO3Muc2VxMVJhbmdlLmlzRW1wdHk/bltyXT1EbyhzLGUsdCxsLG8pOnMuc2VxMlJhbmdlLmlzRW1wdHkmJihuW3JdPURvKHMuc3dhcCgpLHQsZSxvLGwpLnN3YXAoKSl9cmV0dXJuIG59ZnVuY3Rpb24gRG8oZSx0LG4scixpKXtsZXQgYT0xO2Zvcig7ZS5zZXExUmFuZ2Uuc3RhcnQtYT49ci5zdGFydCYmZS5zZXEyUmFuZ2Uuc3RhcnQtYT49aS5zdGFydCYmbi5pc1N0cm9uZ2x5RXF1YWwoZS5zZXEyUmFuZ2Uuc3RhcnQtYSxlLnNlcTJSYW5nZS5lbmRFeGNsdXNpdmUtYSkmJmE8MTAwOylhKys7YS0tO2xldCBsPTA7Zm9yKDtlLnNlcTFSYW5nZS5zdGFydCtsPHIuZW5kRXhjbHVzaXZlJiZlLnNlcTJSYW5nZS5lbmRFeGNsdXNpdmUrbDxpLmVuZEV4Y2x1c2l2ZSYmbi5pc1N0cm9uZ2x5RXF1YWwoZS5zZXEyUmFuZ2Uuc3RhcnQrbCxlLnNlcTJSYW5nZS5lbmRFeGNsdXNpdmUrbCkmJmw8MTAwOylsKys7aWYoYT09PTAmJmw9PT0wKXJldHVybiBlO2xldCBvPTAsYz0tMTtmb3IobGV0IGQ9LWE7ZDw9bDtkKyspe2NvbnN0IHU9ZS5zZXEyUmFuZ2Uuc3RhcnQrZCxmPWUuc2VxMlJhbmdlLmVuZEV4Y2x1c2l2ZStkLG09ZS5zZXExUmFuZ2Uuc3RhcnQrZCx2PXQuZ2V0Qm91bmRhcnlTY29yZShtKStuLmdldEJvdW5kYXJ5U2NvcmUodSkrbi5nZXRCb3VuZGFyeVNjb3JlKGYpO3Y+YyYmKGM9dixvPWQpfXJldHVybiBlLmRlbHRhKG8pfWZ1bmN0aW9uIG11KGUsdCxuKXtjb25zdCByPVtdO2Zvcihjb25zdCBpIG9mIG4pe2NvbnN0IHM9cltyLmxlbmd0aC0xXTtpZighcyl7ci5wdXNoKGkpO2NvbnRpbnVlfWkuc2VxMVJhbmdlLnN0YXJ0LXMuc2VxMVJhbmdlLmVuZEV4Y2x1c2l2ZTw9Mnx8aS5zZXEyUmFuZ2Uuc3RhcnQtcy5zZXEyUmFuZ2UuZW5kRXhjbHVzaXZlPD0yP3Jbci5sZW5ndGgtMV09bmV3IG9lKHMuc2VxMVJhbmdlLmpvaW4oaS5zZXExUmFuZ2UpLHMuc2VxMlJhbmdlLmpvaW4oaS5zZXEyUmFuZ2UpKTpyLnB1c2goaSl9cmV0dXJuIHJ9ZnVuY3Rpb24gZnUoZSx0LG4pe2NvbnN0IHI9b2UuaW52ZXJ0KG4sZS5sZW5ndGgpLGk9W107bGV0IHM9bmV3IFFlKDAsMCk7ZnVuY3Rpb24gYShvLGMpe2lmKG8ub2Zmc2V0MTxzLm9mZnNldDF8fG8ub2Zmc2V0MjxzLm9mZnNldDIpcmV0dXJuO2NvbnN0IGQ9ZS5maW5kV29yZENvbnRhaW5pbmcoby5vZmZzZXQxKSx1PXQuZmluZFdvcmRDb250YWluaW5nKG8ub2Zmc2V0Mik7aWYoIWR8fCF1KXJldHVybjtsZXQgZj1uZXcgb2UoZCx1KTtjb25zdCBtPWYuaW50ZXJzZWN0KGMpO2xldCB2PW0uc2VxMVJhbmdlLmxlbmd0aCx5PW0uc2VxMlJhbmdlLmxlbmd0aDtmb3IoO3IubGVuZ3RoPjA7KXtjb25zdCBfPXJbMF07aWYoIShfLnNlcTFSYW5nZS5pbnRlcnNlY3RzKGYuc2VxMVJhbmdlKXx8Xy5zZXEyUmFuZ2UuaW50ZXJzZWN0cyhmLnNlcTJSYW5nZSkpKWJyZWFrO2NvbnN0IEQ9ZS5maW5kV29yZENvbnRhaW5pbmcoXy5zZXExUmFuZ2Uuc3RhcnQpLE49dC5maW5kV29yZENvbnRhaW5pbmcoXy5zZXEyUmFuZ2Uuc3RhcnQpLEU9bmV3IG9lKEQsTiksUj1FLmludGVyc2VjdChfKTtpZih2Kz1SLnNlcTFSYW5nZS5sZW5ndGgseSs9Ui5zZXEyUmFuZ2UubGVuZ3RoLGY9Zi5qb2luKEUpLGYuc2VxMVJhbmdlLmVuZEV4Y2x1c2l2ZT49Xy5zZXExUmFuZ2UuZW5kRXhjbHVzaXZlKXIuc2hpZnQoKTtlbHNlIGJyZWFrfXYreTwoZi5zZXExUmFuZ2UubGVuZ3RoK2Yuc2VxMlJhbmdlLmxlbmd0aCkqMi8zJiZpLnB1c2goZikscz1mLmdldEVuZEV4Y2x1c2l2ZXMoKX1mb3IoO3IubGVuZ3RoPjA7KXtjb25zdCBvPXIuc2hpZnQoKTtvLnNlcTFSYW5nZS5pc0VtcHR5fHwoYShvLmdldFN0YXJ0cygpLG8pLGEoby5nZXRFbmRFeGNsdXNpdmVzKCkuZGVsdGEoLTEpLG8pKX1yZXR1cm4gZ3UobixpKX1mdW5jdGlvbiBndShlLHQpe2NvbnN0IG49W107Zm9yKDtlLmxlbmd0aD4wfHx0Lmxlbmd0aD4wOyl7Y29uc3Qgcj1lWzBdLGk9dFswXTtsZXQgcztyJiYoIWl8fHIuc2VxMVJhbmdlLnN0YXJ0PGkuc2VxMVJhbmdlLnN0YXJ0KT9zPWUuc2hpZnQoKTpzPXQuc2hpZnQoKSxuLmxlbmd0aD4wJiZuW24ubGVuZ3RoLTFdLnNlcTFSYW5nZS5lbmRFeGNsdXNpdmU+PXMuc2VxMVJhbmdlLnN0YXJ0P25bbi5sZW5ndGgtMV09bltuLmxlbmd0aC0xXS5qb2luKHMpOm4ucHVzaChzKX1yZXR1cm4gbn1mdW5jdGlvbiBidShlLHQsbil7bGV0IHI9bjtpZihyLmxlbmd0aD09PTApcmV0dXJuIHI7bGV0IGk9MCxzO2Rve3M9ITE7Y29uc3QgYT1bclswXV07Zm9yKGxldCBsPTE7bDxyLmxlbmd0aDtsKyspe2xldCBkPWZ1bmN0aW9uKGYsbSl7Y29uc3Qgdj1uZXcgWChjLnNlcTFSYW5nZS5lbmRFeGNsdXNpdmUsby5zZXExUmFuZ2Uuc3RhcnQpO3JldHVybiBlLmdldFRleHQodikucmVwbGFjZSgvXHMvZywiIikubGVuZ3RoPD00JiYoZi5zZXExUmFuZ2UubGVuZ3RoK2Yuc2VxMlJhbmdlLmxlbmd0aD41fHxtLnNlcTFSYW5nZS5sZW5ndGgrbS5zZXEyUmFuZ2UubGVuZ3RoPjUpfTtjb25zdCBvPXJbbF0sYz1hW2EubGVuZ3RoLTFdO2QoYyxvKT8ocz0hMCxhW2EubGVuZ3RoLTFdPWFbYS5sZW5ndGgtMV0uam9pbihvKSk6YS5wdXNoKG8pfXI9YX13aGlsZShpKys8MTAmJnMpO3JldHVybiByfWZ1bmN0aW9uIHZ1KGUsdCxuKXtsZXQgcj1uO2lmKHIubGVuZ3RoPT09MClyZXR1cm4gcjtsZXQgaT0wLHM7ZG97cz0hMTtjb25zdCBsPVtyWzBdXTtmb3IobGV0IG89MTtvPHIubGVuZ3RoO28rKyl7bGV0IHU9ZnVuY3Rpb24obSx2KXtjb25zdCB5PW5ldyBYKGQuc2VxMVJhbmdlLmVuZEV4Y2x1c2l2ZSxjLnNlcTFSYW5nZS5zdGFydCk7aWYoZS5jb3VudExpbmVzSW4oeSk+NXx8eS5sZW5ndGg+NTAwKXJldHVybiExO2NvbnN0IGs9ZS5nZXRUZXh0KHkpLnRyaW0oKTtpZihrLmxlbmd0aD4yMHx8ay5zcGxpdCgvXHJcbnxccnxcbi8pLmxlbmd0aD4xKXJldHVybiExO2NvbnN0IEQ9ZS5jb3VudExpbmVzSW4obS5zZXExUmFuZ2UpLE49bS5zZXExUmFuZ2UubGVuZ3RoLEU9dC5jb3VudExpbmVzSW4obS5zZXEyUmFuZ2UpLFI9bS5zZXEyUmFuZ2UubGVuZ3RoLE09ZS5jb3VudExpbmVzSW4odi5zZXExUmFuZ2UpLFQ9di5zZXExUmFuZ2UubGVuZ3RoLFA9dC5jb3VudExpbmVzSW4odi5zZXEyUmFuZ2UpLCQ9di5zZXEyUmFuZ2UubGVuZ3RoLGVlPTIqNDArNTA7ZnVuY3Rpb24gQSh3KXtyZXR1cm4gTWF0aC5taW4odyxlZSl9cmV0dXJuIE1hdGgucG93KE1hdGgucG93KEEoRCo0MCtOKSwxLjUpK01hdGgucG93KEEoRSo0MCtSKSwxLjUpLDEuNSkrTWF0aC5wb3coTWF0aC5wb3coQShNKjQwK1QpLDEuNSkrTWF0aC5wb3coQShQKjQwKyQpLDEuNSksMS41KT4oZWUqKjEuNSkqKjEuNSoxLjN9O2NvbnN0IGM9cltvXSxkPWxbbC5sZW5ndGgtMV07dShkLGMpPyhzPSEwLGxbbC5sZW5ndGgtMV09bFtsLmxlbmd0aC0xXS5qb2luKGMpKTpsLnB1c2goYyl9cj1sfXdoaWxlKGkrKzwxMCYmcyk7Y29uc3QgYT1bXTtyZXR1cm4gdWQociwobCxvLGMpPT57bGV0IGQ9bztmdW5jdGlvbiB1KGspe3JldHVybiBrLmxlbmd0aD4wJiZrLnRyaW0oKS5sZW5ndGg8PTMmJm8uc2VxMVJhbmdlLmxlbmd0aCtvLnNlcTJSYW5nZS5sZW5ndGg+MTAwfWNvbnN0IGY9ZS5leHRlbmRUb0Z1bGxMaW5lcyhvLnNlcTFSYW5nZSksbT1lLmdldFRleHQobmV3IFgoZi5zdGFydCxvLnNlcTFSYW5nZS5zdGFydCkpO3UobSkmJihkPWQuZGVsdGFTdGFydCgtbS5sZW5ndGgpKTtjb25zdCB2PWUuZ2V0VGV4dChuZXcgWChvLnNlcTFSYW5nZS5lbmRFeGNsdXNpdmUsZi5lbmRFeGNsdXNpdmUpKTt1KHYpJiYoZD1kLmRlbHRhRW5kKHYubGVuZ3RoKSk7Y29uc3QgeT1vZS5mcm9tT2Zmc2V0UGFpcnMobD9sLmdldEVuZEV4Y2x1c2l2ZXMoKTpRZS56ZXJvLGM/Yy5nZXRTdGFydHMoKTpRZS5tYXgpLF89ZC5pbnRlcnNlY3QoeSk7YS5sZW5ndGg+MCYmXy5nZXRTdGFydHMoKS5lcXVhbHMoYVthLmxlbmd0aC0xXS5nZXRFbmRFeGNsdXNpdmVzKCkpP2FbYS5sZW5ndGgtMV09YVthLmxlbmd0aC0xXS5qb2luKF8pOmEucHVzaChfKX0pLGF9Y2xhc3MgSW97Y29uc3RydWN0b3IodCxuKXt0aGlzLnRyaW1tZWRIYXNoPXQsdGhpcy5saW5lcz1ufWdldEVsZW1lbnQodCl7cmV0dXJuIHRoaXMudHJpbW1lZEhhc2hbdF19Z2V0IGxlbmd0aCgpe3JldHVybiB0aGlzLnRyaW1tZWRIYXNoLmxlbmd0aH1nZXRCb3VuZGFyeVNjb3JlKHQpe2NvbnN0IG49dD09PTA/MDpBbyh0aGlzLmxpbmVzW3QtMV0pLHI9dD09PXRoaXMubGluZXMubGVuZ3RoPzA6QW8odGhpcy5saW5lc1t0XSk7cmV0dXJuIDFlMy0obityKX1nZXRUZXh0KHQpe3JldHVybiB0aGlzLmxpbmVzLnNsaWNlKHQuc3RhcnQsdC5lbmRFeGNsdXNpdmUpLmpvaW4oYApgKX1pc1N0cm9uZ2x5RXF1YWwodCxuKXtyZXR1cm4gdGhpcy5saW5lc1t0XT09PXRoaXMubGluZXNbbl19fWZ1bmN0aW9uIEFvKGUpe2xldCB0PTA7Zm9yKDt0PGUubGVuZ3RoJiYoZS5jaGFyQ29kZUF0KHQpPT09MzJ8fGUuY2hhckNvZGVBdCh0KT09PTkpOyl0Kys7cmV0dXJuIHR9Y2xhc3Mgd3V7Y29uc3RydWN0b3IoKXt0aGlzLmR5bmFtaWNQcm9ncmFtbWluZ0RpZmZpbmc9bmV3IHJ1LHRoaXMubXllcnNEaWZmaW5nQWxnb3JpdGhtPW5ldyBDb31jb21wdXRlRGlmZih0LG4scil7aWYodC5sZW5ndGg8PTEmJmNkKHQsbiwoUixNKT0+Uj09PU0pKXJldHVybiBuZXcgWG4oW10sW10sITEpO2lmKHQubGVuZ3RoPT09MSYmdFswXS5sZW5ndGg9PT0wfHxuLmxlbmd0aD09PTEmJm5bMF0ubGVuZ3RoPT09MClyZXR1cm4gbmV3IFhuKFtuZXcgWGUobmV3IGooMSx0Lmxlbmd0aCsxKSxuZXcgaigxLG4ubGVuZ3RoKzEpLFtuZXcgUGUobmV3IFEoMSwxLHQubGVuZ3RoLHRbdC5sZW5ndGgtMV0ubGVuZ3RoKzEpLG5ldyBRKDEsMSxuLmxlbmd0aCxuW24ubGVuZ3RoLTFdLmxlbmd0aCsxKSldKV0sW10sITEpO2NvbnN0IGk9ci5tYXhDb21wdXRhdGlvblRpbWVNcz09PTA/cG4uaW5zdGFuY2U6bmV3IG51KHIubWF4Q29tcHV0YXRpb25UaW1lTXMpLHM9IXIuaWdub3JlVHJpbVdoaXRlc3BhY2UsYT1uZXcgTWFwO2Z1bmN0aW9uIGwoUil7bGV0IE09YS5nZXQoUik7cmV0dXJuIE09PT12b2lkIDAmJihNPWEuc2l6ZSxhLnNldChSLE0pKSxNfWNvbnN0IG89dC5tYXAoUj0+bChSLnRyaW0oKSkpLGM9bi5tYXAoUj0+bChSLnRyaW0oKSkpLGQ9bmV3IElvKG8sdCksdT1uZXcgSW8oYyxuKSxmPWQubGVuZ3RoK3UubGVuZ3RoPDE3MDA/dGhpcy5keW5hbWljUHJvZ3JhbW1pbmdEaWZmaW5nLmNvbXB1dGUoZCx1LGksKFIsTSk9PnRbUl09PT1uW01dP25bTV0ubGVuZ3RoPT09MD8uMToxK01hdGgubG9nKDErbltNXS5sZW5ndGgpOi45OSk6dGhpcy5teWVyc0RpZmZpbmdBbGdvcml0aG0uY29tcHV0ZShkLHUsaSk7bGV0IG09Zi5kaWZmcyx2PWYuaGl0VGltZW91dDttPVJvKGQsdSxtKSxtPWJ1KGQsdSxtKTtjb25zdCB5PVtdLF89Uj0+e2lmKHMpZm9yKGxldCBNPTA7TTxSO00rKyl7Y29uc3QgVD1rK00sUD1EK007aWYodFtUXSE9PW5bUF0pe2NvbnN0ICQ9dGhpcy5yZWZpbmVEaWZmKHQsbixuZXcgb2UobmV3IFgoVCxUKzEpLG5ldyBYKFAsUCsxKSksaSxzKTtmb3IoY29uc3QgZWUgb2YgJC5tYXBwaW5ncyl5LnB1c2goZWUpOyQuaGl0VGltZW91dCYmKHY9ITApfX19O2xldCBrPTAsRD0wO2Zvcihjb25zdCBSIG9mIG0pe0puKCgpPT5SLnNlcTFSYW5nZS5zdGFydC1rPT09Ui5zZXEyUmFuZ2Uuc3RhcnQtRCk7Y29uc3QgTT1SLnNlcTFSYW5nZS5zdGFydC1rO18oTSksaz1SLnNlcTFSYW5nZS5lbmRFeGNsdXNpdmUsRD1SLnNlcTJSYW5nZS5lbmRFeGNsdXNpdmU7Y29uc3QgVD10aGlzLnJlZmluZURpZmYodCxuLFIsaSxzKTtULmhpdFRpbWVvdXQmJih2PSEwKTtmb3IoY29uc3QgUCBvZiBULm1hcHBpbmdzKXkucHVzaChQKX1fKHQubGVuZ3RoLWspO2NvbnN0IE49TW8oeSx0LG4pO2xldCBFPVtdO3JldHVybiByLmNvbXB1dGVNb3ZlcyYmKEU9dGhpcy5jb21wdXRlTW92ZXMoTix0LG4sbyxjLGkscykpLEpuKCgpPT57ZnVuY3Rpb24gUihULFApe2lmKFQubGluZU51bWJlcjwxfHxULmxpbmVOdW1iZXI+UC5sZW5ndGgpcmV0dXJuITE7Y29uc3QgJD1QW1QubGluZU51bWJlci0xXTtyZXR1cm4hKFQuY29sdW1uPDF8fFQuY29sdW1uPiQubGVuZ3RoKzEpfWZ1bmN0aW9uIE0oVCxQKXtyZXR1cm4hKFQuc3RhcnRMaW5lTnVtYmVyPDF8fFQuc3RhcnRMaW5lTnVtYmVyPlAubGVuZ3RoKzF8fFQuZW5kTGluZU51bWJlckV4Y2x1c2l2ZTwxfHxULmVuZExpbmVOdW1iZXJFeGNsdXNpdmU+UC5sZW5ndGgrMSl9Zm9yKGNvbnN0IFQgb2YgTil7aWYoIVQuaW5uZXJDaGFuZ2VzKXJldHVybiExO2Zvcihjb25zdCBQIG9mIFQuaW5uZXJDaGFuZ2VzKWlmKCEoUihQLm1vZGlmaWVkUmFuZ2UuZ2V0U3RhcnRQb3NpdGlvbigpLG4pJiZSKFAubW9kaWZpZWRSYW5nZS5nZXRFbmRQb3NpdGlvbigpLG4pJiZSKFAub3JpZ2luYWxSYW5nZS5nZXRTdGFydFBvc2l0aW9uKCksdCkmJlIoUC5vcmlnaW5hbFJhbmdlLmdldEVuZFBvc2l0aW9uKCksdCkpKXJldHVybiExO2lmKCFNKFQubW9kaWZpZWQsbil8fCFNKFQub3JpZ2luYWwsdCkpcmV0dXJuITF9cmV0dXJuITB9KSxuZXcgWG4oTixFLHYpfWNvbXB1dGVNb3Zlcyh0LG4scixpLHMsYSxsKXtyZXR1cm4gb3UodCxuLHIsaSxzLGEpLm1hcChkPT57Y29uc3QgdT10aGlzLnJlZmluZURpZmYobixyLG5ldyBvZShkLm9yaWdpbmFsLnRvT2Zmc2V0UmFuZ2UoKSxkLm1vZGlmaWVkLnRvT2Zmc2V0UmFuZ2UoKSksYSxsKSxmPU1vKHUubWFwcGluZ3MsbixyLCEwKTtyZXR1cm4gbmV3IEpkKGQsZil9KX1yZWZpbmVEaWZmKHQsbixyLGkscyl7Y29uc3QgbD14dShyKS50b1JhbmdlTWFwcGluZzIodCxuKSxvPW5ldyBLbih0LGwub3JpZ2luYWxSYW5nZSxzKSxjPW5ldyBLbihuLGwubW9kaWZpZWRSYW5nZSxzKSxkPW8ubGVuZ3RoK2MubGVuZ3RoPDUwMD90aGlzLmR5bmFtaWNQcm9ncmFtbWluZ0RpZmZpbmcuY29tcHV0ZShvLGMsaSk6dGhpcy5teWVyc0RpZmZpbmdBbGdvcml0aG0uY29tcHV0ZShvLGMsaSk7bGV0IHU9ZC5kaWZmcztyZXR1cm4gdT1SbyhvLGMsdSksdT1mdShvLGMsdSksdT1tdShvLGMsdSksdT12dShvLGMsdSkse21hcHBpbmdzOnUubWFwKG09Pm5ldyBQZShvLnRyYW5zbGF0ZVJhbmdlKG0uc2VxMVJhbmdlKSxjLnRyYW5zbGF0ZVJhbmdlKG0uc2VxMlJhbmdlKSkpLGhpdFRpbWVvdXQ6ZC5oaXRUaW1lb3V0fX19ZnVuY3Rpb24gTW8oZSx0LG4scj0hMSl7Y29uc3QgaT1bXTtmb3IoY29uc3QgcyBvZiBoZChlLm1hcChhPT55dShhLHQsbikpLChhLGwpPT5hLm9yaWdpbmFsLm92ZXJsYXBPclRvdWNoKGwub3JpZ2luYWwpfHxhLm1vZGlmaWVkLm92ZXJsYXBPclRvdWNoKGwubW9kaWZpZWQpKSl7Y29uc3QgYT1zWzBdLGw9c1tzLmxlbmd0aC0xXTtpLnB1c2gobmV3IFhlKGEub3JpZ2luYWwuam9pbihsLm9yaWdpbmFsKSxhLm1vZGlmaWVkLmpvaW4obC5tb2RpZmllZCkscy5tYXAobz0+by5pbm5lckNoYW5nZXNbMF0pKSl9cmV0dXJuIEpuKCgpPT4hciYmaS5sZW5ndGg+MCYmKGlbMF0ubW9kaWZpZWQuc3RhcnRMaW5lTnVtYmVyIT09aVswXS5vcmlnaW5hbC5zdGFydExpbmVOdW1iZXJ8fG4ubGVuZ3RoLWlbaS5sZW5ndGgtMV0ubW9kaWZpZWQuZW5kTGluZU51bWJlckV4Y2x1c2l2ZSE9PXQubGVuZ3RoLWlbaS5sZW5ndGgtMV0ub3JpZ2luYWwuZW5kTGluZU51bWJlckV4Y2x1c2l2ZSk/ITE6Zm8oaSwocyxhKT0+YS5vcmlnaW5hbC5zdGFydExpbmVOdW1iZXItcy5vcmlnaW5hbC5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlPT09YS5tb2RpZmllZC5zdGFydExpbmVOdW1iZXItcy5tb2RpZmllZC5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlJiZzLm9yaWdpbmFsLmVuZExpbmVOdW1iZXJFeGNsdXNpdmU8YS5vcmlnaW5hbC5zdGFydExpbmVOdW1iZXImJnMubW9kaWZpZWQuZW5kTGluZU51bWJlckV4Y2x1c2l2ZTxhLm1vZGlmaWVkLnN0YXJ0TGluZU51bWJlcikpLGl9ZnVuY3Rpb24geXUoZSx0LG4pe2xldCByPTAsaT0wO2UubW9kaWZpZWRSYW5nZS5lbmRDb2x1bW49PT0xJiZlLm9yaWdpbmFsUmFuZ2UuZW5kQ29sdW1uPT09MSYmZS5vcmlnaW5hbFJhbmdlLnN0YXJ0TGluZU51bWJlcityPD1lLm9yaWdpbmFsUmFuZ2UuZW5kTGluZU51bWJlciYmZS5tb2RpZmllZFJhbmdlLnN0YXJ0TGluZU51bWJlcityPD1lLm1vZGlmaWVkUmFuZ2UuZW5kTGluZU51bWJlciYmKGk9LTEpLGUubW9kaWZpZWRSYW5nZS5zdGFydENvbHVtbi0xPj1uW2UubW9kaWZpZWRSYW5nZS5zdGFydExpbmVOdW1iZXItMV0ubGVuZ3RoJiZlLm9yaWdpbmFsUmFuZ2Uuc3RhcnRDb2x1bW4tMT49dFtlLm9yaWdpbmFsUmFuZ2Uuc3RhcnRMaW5lTnVtYmVyLTFdLmxlbmd0aCYmZS5vcmlnaW5hbFJhbmdlLnN0YXJ0TGluZU51bWJlcjw9ZS5vcmlnaW5hbFJhbmdlLmVuZExpbmVOdW1iZXIraSYmZS5tb2RpZmllZFJhbmdlLnN0YXJ0TGluZU51bWJlcjw9ZS5tb2RpZmllZFJhbmdlLmVuZExpbmVOdW1iZXIraSYmKHI9MSk7Y29uc3Qgcz1uZXcgaihlLm9yaWdpbmFsUmFuZ2Uuc3RhcnRMaW5lTnVtYmVyK3IsZS5vcmlnaW5hbFJhbmdlLmVuZExpbmVOdW1iZXIrMStpKSxhPW5ldyBqKGUubW9kaWZpZWRSYW5nZS5zdGFydExpbmVOdW1iZXIrcixlLm1vZGlmaWVkUmFuZ2UuZW5kTGluZU51bWJlcisxK2kpO3JldHVybiBuZXcgWGUocyxhLFtlXSl9ZnVuY3Rpb24geHUoZSl7cmV0dXJuIG5ldyBOZShuZXcgaihlLnNlcTFSYW5nZS5zdGFydCsxLGUuc2VxMVJhbmdlLmVuZEV4Y2x1c2l2ZSsxKSxuZXcgaihlLnNlcTJSYW5nZS5zdGFydCsxLGUuc2VxMlJhbmdlLmVuZEV4Y2x1c2l2ZSsxKSl9Y29uc3QgTG89e2dldExlZ2FjeTooKT0+bmV3IEtkLGdldERlZmF1bHQ6KCk9Pm5ldyB3dX07ZnVuY3Rpb24gdXQoZSx0KXtjb25zdCBuPU1hdGgucG93KDEwLHQpO3JldHVybiBNYXRoLnJvdW5kKGUqbikvbn1jbGFzcyBwZXtjb25zdHJ1Y3Rvcih0LG4scixpPTEpe3RoaXMuX3JnYmFCcmFuZD12b2lkIDAsdGhpcy5yPU1hdGgubWluKDI1NSxNYXRoLm1heCgwLHQpKXwwLHRoaXMuZz1NYXRoLm1pbigyNTUsTWF0aC5tYXgoMCxuKSl8MCx0aGlzLmI9TWF0aC5taW4oMjU1LE1hdGgubWF4KDAscikpfDAsdGhpcy5hPXV0KE1hdGgubWF4KE1hdGgubWluKDEsaSksMCksMyl9c3RhdGljIGVxdWFscyh0LG4pe3JldHVybiB0LnI9PT1uLnImJnQuZz09PW4uZyYmdC5iPT09bi5iJiZ0LmE9PT1uLmF9fWNsYXNzIERle2NvbnN0cnVjdG9yKHQsbixyLGkpe3RoaXMuX2hzbGFCcmFuZD12b2lkIDAsdGhpcy5oPU1hdGgubWF4KE1hdGgubWluKDM2MCx0KSwwKXwwLHRoaXMucz11dChNYXRoLm1heChNYXRoLm1pbigxLG4pLDApLDMpLHRoaXMubD11dChNYXRoLm1heChNYXRoLm1pbigxLHIpLDApLDMpLHRoaXMuYT11dChNYXRoLm1heChNYXRoLm1pbigxLGkpLDApLDMpfXN0YXRpYyBlcXVhbHModCxuKXtyZXR1cm4gdC5oPT09bi5oJiZ0LnM9PT1uLnMmJnQubD09PW4ubCYmdC5hPT09bi5hfXN0YXRpYyBmcm9tUkdCQSh0KXtjb25zdCBuPXQuci8yNTUscj10LmcvMjU1LGk9dC5iLzI1NSxzPXQuYSxhPU1hdGgubWF4KG4scixpKSxsPU1hdGgubWluKG4scixpKTtsZXQgbz0wLGM9MDtjb25zdCBkPShsK2EpLzIsdT1hLWw7aWYodT4wKXtzd2l0Y2goYz1NYXRoLm1pbihkPD0uNT91LygyKmQpOnUvKDItMipkKSwxKSxhKXtjYXNlIG46bz0oci1pKS91KyhyPGk/NjowKTticmVhaztjYXNlIHI6bz0oaS1uKS91KzI7YnJlYWs7Y2FzZSBpOm89KG4tcikvdSs0O2JyZWFrfW8qPTYwLG89TWF0aC5yb3VuZChvKX1yZXR1cm4gbmV3IERlKG8sYyxkLHMpfXN0YXRpYyBfaHVlMnJnYih0LG4scil7cmV0dXJuIHI8MCYmKHIrPTEpLHI+MSYmKHItPTEpLHI8MS82P3QrKG4tdCkqNipyOnI8MS8yP246cjwyLzM/dCsobi10KSooMi8zLXIpKjY6dH1zdGF0aWMgdG9SR0JBKHQpe2NvbnN0IG49dC5oLzM2MCx7czpyLGw6aSxhOnN9PXQ7bGV0IGEsbCxvO2lmKHI9PT0wKWE9bD1vPWk7ZWxzZXtjb25zdCBjPWk8LjU/aSooMStyKTppK3ItaSpyLGQ9MippLWM7YT1EZS5faHVlMnJnYihkLGMsbisxLzMpLGw9RGUuX2h1ZTJyZ2IoZCxjLG4pLG89RGUuX2h1ZTJyZ2IoZCxjLG4tMS8zKX1yZXR1cm4gbmV3IHBlKE1hdGgucm91bmQoYSoyNTUpLE1hdGgucm91bmQobCoyNTUpLE1hdGgucm91bmQobyoyNTUpLHMpfX1jbGFzcyBVdHtjb25zdHJ1Y3Rvcih0LG4scixpKXt0aGlzLl9oc3ZhQnJhbmQ9dm9pZCAwLHRoaXMuaD1NYXRoLm1heChNYXRoLm1pbigzNjAsdCksMCl8MCx0aGlzLnM9dXQoTWF0aC5tYXgoTWF0aC5taW4oMSxuKSwwKSwzKSx0aGlzLnY9dXQoTWF0aC5tYXgoTWF0aC5taW4oMSxyKSwwKSwzKSx0aGlzLmE9dXQoTWF0aC5tYXgoTWF0aC5taW4oMSxpKSwwKSwzKX1zdGF0aWMgZXF1YWxzKHQsbil7cmV0dXJuIHQuaD09PW4uaCYmdC5zPT09bi5zJiZ0LnY9PT1uLnYmJnQuYT09PW4uYX1zdGF0aWMgZnJvbVJHQkEodCl7Y29uc3Qgbj10LnIvMjU1LHI9dC5nLzI1NSxpPXQuYi8yNTUscz1NYXRoLm1heChuLHIsaSksYT1NYXRoLm1pbihuLHIsaSksbD1zLWEsbz1zPT09MD8wOmwvcztsZXQgYztyZXR1cm4gbD09PTA/Yz0wOnM9PT1uP2M9KChyLWkpL2wlNis2KSU2OnM9PT1yP2M9KGktbikvbCsyOmM9KG4tcikvbCs0LG5ldyBVdChNYXRoLnJvdW5kKGMqNjApLG8scyx0LmEpfXN0YXRpYyB0b1JHQkEodCl7Y29uc3R7aDpuLHM6cix2OmksYTpzfT10LGE9aSpyLGw9YSooMS1NYXRoLmFicyhuLzYwJTItMSkpLG89aS1hO2xldFtjLGQsdV09WzAsMCwwXTtyZXR1cm4gbjw2MD8oYz1hLGQ9bCk6bjwxMjA/KGM9bCxkPWEpOm48MTgwPyhkPWEsdT1sKTpuPDI0MD8oZD1sLHU9YSk6bjwzMDA/KGM9bCx1PWEpOm48PTM2MCYmKGM9YSx1PWwpLGM9TWF0aC5yb3VuZCgoYytvKSoyNTUpLGQ9TWF0aC5yb3VuZCgoZCtvKSoyNTUpLHU9TWF0aC5yb3VuZCgodStvKSoyNTUpLG5ldyBwZShjLGQsdSxzKX19bGV0IFpuPShaPWNsYXNze3N0YXRpYyBmcm9tSGV4KHQpe3JldHVybiBaLkZvcm1hdC5DU1MucGFyc2VIZXgodCl8fFoucmVkfXN0YXRpYyBlcXVhbHModCxuKXtyZXR1cm4hdCYmIW4/ITA6IXR8fCFuPyExOnQuZXF1YWxzKG4pfWdldCBoc2xhKCl7cmV0dXJuIHRoaXMuX2hzbGE/dGhpcy5faHNsYTpEZS5mcm9tUkdCQSh0aGlzLnJnYmEpfWdldCBoc3ZhKCl7cmV0dXJuIHRoaXMuX2hzdmE/dGhpcy5faHN2YTpVdC5mcm9tUkdCQSh0aGlzLnJnYmEpfWNvbnN0cnVjdG9yKHQpe2lmKHQpaWYodCBpbnN0YW5jZW9mIHBlKXRoaXMucmdiYT10O2Vsc2UgaWYodCBpbnN0YW5jZW9mIERlKXRoaXMuX2hzbGE9dCx0aGlzLnJnYmE9RGUudG9SR0JBKHQpO2Vsc2UgaWYodCBpbnN0YW5jZW9mIFV0KXRoaXMuX2hzdmE9dCx0aGlzLnJnYmE9VXQudG9SR0JBKHQpO2Vsc2UgdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIGNvbG9yIGN0b3IgYXJndW1lbnQiKTtlbHNlIHRocm93IG5ldyBFcnJvcigiQ29sb3IgbmVlZHMgYSB2YWx1ZSIpfWVxdWFscyh0KXtyZXR1cm4hIXQmJnBlLmVxdWFscyh0aGlzLnJnYmEsdC5yZ2JhKSYmRGUuZXF1YWxzKHRoaXMuaHNsYSx0LmhzbGEpJiZVdC5lcXVhbHModGhpcy5oc3ZhLHQuaHN2YSl9Z2V0UmVsYXRpdmVMdW1pbmFuY2UoKXtjb25zdCB0PVouX3JlbGF0aXZlTHVtaW5hbmNlRm9yQ29tcG9uZW50KHRoaXMucmdiYS5yKSxuPVouX3JlbGF0aXZlTHVtaW5hbmNlRm9yQ29tcG9uZW50KHRoaXMucmdiYS5nKSxyPVouX3JlbGF0aXZlTHVtaW5hbmNlRm9yQ29tcG9uZW50KHRoaXMucmdiYS5iKSxpPS4yMTI2KnQrLjcxNTIqbisuMDcyMipyO3JldHVybiB1dChpLDQpfXN0YXRpYyBfcmVsYXRpdmVMdW1pbmFuY2VGb3JDb21wb25lbnQodCl7Y29uc3Qgbj10LzI1NTtyZXR1cm4gbjw9LjAzOTI4P24vMTIuOTI6TWF0aC5wb3coKG4rLjA1NSkvMS4wNTUsMi40KX1pc0xpZ2h0ZXIoKXtyZXR1cm4odGhpcy5yZ2JhLnIqMjk5K3RoaXMucmdiYS5nKjU4Nyt0aGlzLnJnYmEuYioxMTQpLzFlMz49MTI4fWlzTGlnaHRlclRoYW4odCl7Y29uc3Qgbj10aGlzLmdldFJlbGF0aXZlTHVtaW5hbmNlKCkscj10LmdldFJlbGF0aXZlTHVtaW5hbmNlKCk7cmV0dXJuIG4+cn1pc0RhcmtlclRoYW4odCl7Y29uc3Qgbj10aGlzLmdldFJlbGF0aXZlTHVtaW5hbmNlKCkscj10LmdldFJlbGF0aXZlTHVtaW5hbmNlKCk7cmV0dXJuIG48cn1saWdodGVuKHQpe3JldHVybiBuZXcgWihuZXcgRGUodGhpcy5oc2xhLmgsdGhpcy5oc2xhLnMsdGhpcy5oc2xhLmwrdGhpcy5oc2xhLmwqdCx0aGlzLmhzbGEuYSkpfWRhcmtlbih0KXtyZXR1cm4gbmV3IFoobmV3IERlKHRoaXMuaHNsYS5oLHRoaXMuaHNsYS5zLHRoaXMuaHNsYS5sLXRoaXMuaHNsYS5sKnQsdGhpcy5oc2xhLmEpKX10cmFuc3BhcmVudCh0KXtjb25zdHtyOm4sZzpyLGI6aSxhOnN9PXRoaXMucmdiYTtyZXR1cm4gbmV3IFoobmV3IHBlKG4scixpLHMqdCkpfWlzVHJhbnNwYXJlbnQoKXtyZXR1cm4gdGhpcy5yZ2JhLmE9PT0wfWlzT3BhcXVlKCl7cmV0dXJuIHRoaXMucmdiYS5hPT09MX1vcHBvc2l0ZSgpe3JldHVybiBuZXcgWihuZXcgcGUoMjU1LXRoaXMucmdiYS5yLDI1NS10aGlzLnJnYmEuZywyNTUtdGhpcy5yZ2JhLmIsdGhpcy5yZ2JhLmEpKX1tYWtlT3BhcXVlKHQpe2lmKHRoaXMuaXNPcGFxdWUoKXx8dC5yZ2JhLmEhPT0xKXJldHVybiB0aGlzO2NvbnN0e3I6bixnOnIsYjppLGE6c309dGhpcy5yZ2JhO3JldHVybiBuZXcgWihuZXcgcGUodC5yZ2JhLnItcyoodC5yZ2JhLnItbiksdC5yZ2JhLmctcyoodC5yZ2JhLmctciksdC5yZ2JhLmItcyoodC5yZ2JhLmItaSksMSkpfXRvU3RyaW5nKCl7cmV0dXJuIHRoaXMuX3RvU3RyaW5nfHwodGhpcy5fdG9TdHJpbmc9Wi5Gb3JtYXQuQ1NTLmZvcm1hdCh0aGlzKSksdGhpcy5fdG9TdHJpbmd9c3RhdGljIGdldExpZ2h0ZXJDb2xvcih0LG4scil7aWYodC5pc0xpZ2h0ZXJUaGFuKG4pKXJldHVybiB0O3I9cnx8LjU7Y29uc3QgaT10LmdldFJlbGF0aXZlTHVtaW5hbmNlKCkscz1uLmdldFJlbGF0aXZlTHVtaW5hbmNlKCk7cmV0dXJuIHI9cioocy1pKS9zLHQubGlnaHRlbihyKX1zdGF0aWMgZ2V0RGFya2VyQ29sb3IodCxuLHIpe2lmKHQuaXNEYXJrZXJUaGFuKG4pKXJldHVybiB0O3I9cnx8LjU7Y29uc3QgaT10LmdldFJlbGF0aXZlTHVtaW5hbmNlKCkscz1uLmdldFJlbGF0aXZlTHVtaW5hbmNlKCk7cmV0dXJuIHI9ciooaS1zKS9pLHQuZGFya2VuKHIpfX0sWi53aGl0ZT1uZXcgWihuZXcgcGUoMjU1LDI1NSwyNTUsMSkpLFouYmxhY2s9bmV3IFoobmV3IHBlKDAsMCwwLDEpKSxaLnJlZD1uZXcgWihuZXcgcGUoMjU1LDAsMCwxKSksWi5ibHVlPW5ldyBaKG5ldyBwZSgwLDAsMjU1LDEpKSxaLmdyZWVuPW5ldyBaKG5ldyBwZSgwLDI1NSwwLDEpKSxaLmN5YW49bmV3IFoobmV3IHBlKDAsMjU1LDI1NSwxKSksWi5saWdodGdyZXk9bmV3IFoobmV3IHBlKDIxMSwyMTEsMjExLDEpKSxaLnRyYW5zcGFyZW50PW5ldyBaKG5ldyBwZSgwLDAsMCwwKSksWik7KGZ1bmN0aW9uKGUpeyhmdW5jdGlvbih0KXsoZnVuY3Rpb24obil7ZnVuY3Rpb24gcihtKXtyZXR1cm4gbS5yZ2JhLmE9PT0xP2ByZ2IoJHttLnJnYmEucn0sICR7bS5yZ2JhLmd9LCAke20ucmdiYS5ifSlgOmUuRm9ybWF0LkNTUy5mb3JtYXRSR0JBKG0pfW4uZm9ybWF0UkdCPXI7ZnVuY3Rpb24gaShtKXtyZXR1cm5gcmdiYSgke20ucmdiYS5yfSwgJHttLnJnYmEuZ30sICR7bS5yZ2JhLmJ9LCAkeyttLnJnYmEuYS50b0ZpeGVkKDIpfSlgfW4uZm9ybWF0UkdCQT1pO2Z1bmN0aW9uIHMobSl7cmV0dXJuIG0uaHNsYS5hPT09MT9gaHNsKCR7bS5oc2xhLmh9LCAkeyhtLmhzbGEucyoxMDApLnRvRml4ZWQoMil9JSwgJHsobS5oc2xhLmwqMTAwKS50b0ZpeGVkKDIpfSUpYDplLkZvcm1hdC5DU1MuZm9ybWF0SFNMQShtKX1uLmZvcm1hdEhTTD1zO2Z1bmN0aW9uIGEobSl7cmV0dXJuYGhzbGEoJHttLmhzbGEuaH0sICR7KG0uaHNsYS5zKjEwMCkudG9GaXhlZCgyKX0lLCAkeyhtLmhzbGEubCoxMDApLnRvRml4ZWQoMil9JSwgJHttLmhzbGEuYS50b0ZpeGVkKDIpfSlgfW4uZm9ybWF0SFNMQT1hO2Z1bmN0aW9uIGwobSl7Y29uc3Qgdj1tLnRvU3RyaW5nKDE2KTtyZXR1cm4gdi5sZW5ndGghPT0yPyIwIit2OnZ9ZnVuY3Rpb24gbyhtKXtyZXR1cm5gIyR7bChtLnJnYmEucil9JHtsKG0ucmdiYS5nKX0ke2wobS5yZ2JhLmIpfWB9bi5mb3JtYXRIZXg9bztmdW5jdGlvbiBjKG0sdj0hMSl7cmV0dXJuIHYmJm0ucmdiYS5hPT09MT9lLkZvcm1hdC5DU1MuZm9ybWF0SGV4KG0pOmAjJHtsKG0ucmdiYS5yKX0ke2wobS5yZ2JhLmcpfSR7bChtLnJnYmEuYil9JHtsKE1hdGgucm91bmQobS5yZ2JhLmEqMjU1KSl9YH1uLmZvcm1hdEhleEE9YztmdW5jdGlvbiBkKG0pe3JldHVybiBtLmlzT3BhcXVlKCk/ZS5Gb3JtYXQuQ1NTLmZvcm1hdEhleChtKTplLkZvcm1hdC5DU1MuZm9ybWF0UkdCQShtKX1uLmZvcm1hdD1kO2Z1bmN0aW9uIHUobSl7Y29uc3Qgdj1tLmxlbmd0aDtpZih2PT09MHx8bS5jaGFyQ29kZUF0KDApIT09MzUpcmV0dXJuIG51bGw7aWYodj09PTcpe2NvbnN0IHk9MTYqZihtLmNoYXJDb2RlQXQoMSkpK2YobS5jaGFyQ29kZUF0KDIpKSxfPTE2KmYobS5jaGFyQ29kZUF0KDMpKStmKG0uY2hhckNvZGVBdCg0KSksaz0xNipmKG0uY2hhckNvZGVBdCg1KSkrZihtLmNoYXJDb2RlQXQoNikpO3JldHVybiBuZXcgZShuZXcgcGUoeSxfLGssMSkpfWlmKHY9PT05KXtjb25zdCB5PTE2KmYobS5jaGFyQ29kZUF0KDEpKStmKG0uY2hhckNvZGVBdCgyKSksXz0xNipmKG0uY2hhckNvZGVBdCgzKSkrZihtLmNoYXJDb2RlQXQoNCkpLGs9MTYqZihtLmNoYXJDb2RlQXQoNSkpK2YobS5jaGFyQ29kZUF0KDYpKSxEPTE2KmYobS5jaGFyQ29kZUF0KDcpKStmKG0uY2hhckNvZGVBdCg4KSk7cmV0dXJuIG5ldyBlKG5ldyBwZSh5LF8sayxELzI1NSkpfWlmKHY9PT00KXtjb25zdCB5PWYobS5jaGFyQ29kZUF0KDEpKSxfPWYobS5jaGFyQ29kZUF0KDIpKSxrPWYobS5jaGFyQ29kZUF0KDMpKTtyZXR1cm4gbmV3IGUobmV3IHBlKDE2KnkreSwxNipfK18sMTYqaytrKSl9aWYodj09PTUpe2NvbnN0IHk9ZihtLmNoYXJDb2RlQXQoMSkpLF89ZihtLmNoYXJDb2RlQXQoMikpLGs9ZihtLmNoYXJDb2RlQXQoMykpLEQ9ZihtLmNoYXJDb2RlQXQoNCkpO3JldHVybiBuZXcgZShuZXcgcGUoMTYqeSt5LDE2Kl8rXywxNiprK2ssKDE2KkQrRCkvMjU1KSl9cmV0dXJuIG51bGx9bi5wYXJzZUhleD11O2Z1bmN0aW9uIGYobSl7c3dpdGNoKG0pe2Nhc2UgNDg6cmV0dXJuIDA7Y2FzZSA0OTpyZXR1cm4gMTtjYXNlIDUwOnJldHVybiAyO2Nhc2UgNTE6cmV0dXJuIDM7Y2FzZSA1MjpyZXR1cm4gNDtjYXNlIDUzOnJldHVybiA1O2Nhc2UgNTQ6cmV0dXJuIDY7Y2FzZSA1NTpyZXR1cm4gNztjYXNlIDU2OnJldHVybiA4O2Nhc2UgNTc6cmV0dXJuIDk7Y2FzZSA5NzpyZXR1cm4gMTA7Y2FzZSA2NTpyZXR1cm4gMTA7Y2FzZSA5ODpyZXR1cm4gMTE7Y2FzZSA2NjpyZXR1cm4gMTE7Y2FzZSA5OTpyZXR1cm4gMTI7Y2FzZSA2NzpyZXR1cm4gMTI7Y2FzZSAxMDA6cmV0dXJuIDEzO2Nhc2UgNjg6cmV0dXJuIDEzO2Nhc2UgMTAxOnJldHVybiAxNDtjYXNlIDY5OnJldHVybiAxNDtjYXNlIDEwMjpyZXR1cm4gMTU7Y2FzZSA3MDpyZXR1cm4gMTV9cmV0dXJuIDB9fSkodC5DU1N8fCh0LkNTUz17fSkpfSkoZS5Gb3JtYXR8fChlLkZvcm1hdD17fSkpfSkoWm58fChabj17fSkpO2Z1bmN0aW9uIHpvKGUpe2NvbnN0IHQ9W107Zm9yKGNvbnN0IG4gb2YgZSl7Y29uc3Qgcj1OdW1iZXIobik7KHJ8fHI9PT0wJiZuLnJlcGxhY2UoL1xzL2csIiIpIT09IiIpJiZ0LnB1c2gocil9cmV0dXJuIHR9ZnVuY3Rpb24gZ2koZSx0LG4scil7cmV0dXJue3JlZDplLzI1NSxibHVlOm4vMjU1LGdyZWVuOnQvMjU1LGFscGhhOnJ9fWZ1bmN0aW9uIG1uKGUsdCl7Y29uc3Qgbj10LmluZGV4LHI9dFswXS5sZW5ndGg7aWYoIW4pcmV0dXJuO2NvbnN0IGk9ZS5wb3NpdGlvbkF0KG4pO3JldHVybntzdGFydExpbmVOdW1iZXI6aS5saW5lTnVtYmVyLHN0YXJ0Q29sdW1uOmkuY29sdW1uLGVuZExpbmVOdW1iZXI6aS5saW5lTnVtYmVyLGVuZENvbHVtbjppLmNvbHVtbityfX1mdW5jdGlvbiBTdShlLHQpe2lmKCFlKXJldHVybjtjb25zdCBuPVpuLkZvcm1hdC5DU1MucGFyc2VIZXgodCk7aWYobilyZXR1cm57cmFuZ2U6ZSxjb2xvcjpnaShuLnJnYmEucixuLnJnYmEuZyxuLnJnYmEuYixuLnJnYmEuYSl9fWZ1bmN0aW9uIFBvKGUsdCxuKXtpZighZXx8dC5sZW5ndGghPT0xKXJldHVybjtjb25zdCBpPXRbMF0udmFsdWVzKCkscz16byhpKTtyZXR1cm57cmFuZ2U6ZSxjb2xvcjpnaShzWzBdLHNbMV0sc1syXSxuP3NbM106MSl9fWZ1bmN0aW9uIFRvKGUsdCxuKXtpZighZXx8dC5sZW5ndGghPT0xKXJldHVybjtjb25zdCBpPXRbMF0udmFsdWVzKCkscz16byhpKSxhPW5ldyBabihuZXcgRGUoc1swXSxzWzFdLzEwMCxzWzJdLzEwMCxuP3NbM106MSkpO3JldHVybntyYW5nZTplLGNvbG9yOmdpKGEucmdiYS5yLGEucmdiYS5nLGEucmdiYS5iLGEucmdiYS5hKX19ZnVuY3Rpb24gZm4oZSx0KXtyZXR1cm4gdHlwZW9mIGU9PSJzdHJpbmciP1suLi5lLm1hdGNoQWxsKHQpXTplLmZpbmRNYXRjaGVzKHQpfWZ1bmN0aW9uIEN1KGUpe2NvbnN0IHQ9W10scj1mbihlLC9cYihyZ2J8cmdiYXxoc2x8aHNsYSkoXChbMC05XHMsLlwlXSpcKSl8KCMpKFtBLUZhLWYwLTldezN9KVxifCgjKShbQS1GYS1mMC05XXs0fSlcYnwoIykoW0EtRmEtZjAtOV17Nn0pXGJ8KCMpKFtBLUZhLWYwLTldezh9KVxiL2dtKTtpZihyLmxlbmd0aD4wKWZvcihjb25zdCBpIG9mIHIpe2NvbnN0IHM9aS5maWx0ZXIoYz0+YyE9PXZvaWQgMCksYT1zWzFdLGw9c1syXTtpZighbCljb250aW51ZTtsZXQgbztpZihhPT09InJnYiIpe2NvbnN0IGM9L15cKFxzKigyNVswLTVdfDJbMC00XVswLTldfDFbMC05XXsyfXxbMS05XVswLTldfFswLTldKVxzKixccyooMjVbMC01XXwyWzAtNF1bMC05XXwxWzAtOV17Mn18WzEtOV1bMC05XXxbMC05XSlccyosXHMqKDI1WzAtNV18MlswLTRdWzAtOV18MVswLTldezJ9fFsxLTldWzAtOV18WzAtOV0pXHMqXCkkL2dtO289UG8obW4oZSxpKSxmbihsLGMpLCExKX1lbHNlIGlmKGE9PT0icmdiYSIpe2NvbnN0IGM9L15cKFxzKigyNVswLTVdfDJbMC00XVswLTldfDFbMC05XXsyfXxbMS05XVswLTldfFswLTldKVxzKixccyooMjVbMC01XXwyWzAtNF1bMC05XXwxWzAtOV17Mn18WzEtOV1bMC05XXxbMC05XSlccyosXHMqKDI1WzAtNV18MlswLTRdWzAtOV18MVswLTldezJ9fFsxLTldWzAtOV18WzAtOV0pXHMqLFxzKigwWy5dWzAtOV0rfFsuXVswLTldK3xbMDFdWy5dfFswMV0pXHMqXCkkL2dtO289UG8obW4oZSxpKSxmbihsLGMpLCEwKX1lbHNlIGlmKGE9PT0iaHNsIil7Y29uc3QgYz0vXlwoXHMqKDM2WzBdfDNbMC01XVswLTldfFsxMl1bMC05XVswLTldfFsxLTldP1swLTldKVxzKixccyooMTAwfFxkezEsMn1bLl1cZCp8XGR7MSwyfSklXHMqLFxzKigxMDB8XGR7MSwyfVsuXVxkKnxcZHsxLDJ9KSVccypcKSQvZ207bz1UbyhtbihlLGkpLGZuKGwsYyksITEpfWVsc2UgaWYoYT09PSJoc2xhIil7Y29uc3QgYz0vXlwoXHMqKDM2WzBdfDNbMC01XVswLTldfFsxMl1bMC05XVswLTldfFsxLTldP1swLTldKVxzKixccyooMTAwfFxkezEsMn1bLl1cZCp8XGR7MSwyfSklXHMqLFxzKigxMDB8XGR7MSwyfVsuXVxkKnxcZHsxLDJ9KSVccyosXHMqKDBbLl1bMC05XSt8Wy5dWzAtOV0rfFswMV1bLl18WzAxXSlccypcKSQvZ207bz1UbyhtbihlLGkpLGZuKGwsYyksITApfWVsc2UgYT09PSIjIiYmKG89U3UobW4oZSxpKSxhK2wpKTtvJiZ0LnB1c2gobyl9cmV0dXJuIHR9ZnVuY3Rpb24gX3UoZSl7cmV0dXJuIWV8fHR5cGVvZiBlLmdldFZhbHVlIT0iZnVuY3Rpb24ifHx0eXBlb2YgZS5wb3NpdGlvbkF0IT0iZnVuY3Rpb24iP1tdOkN1KGUpfWNvbnN0IE9vPW5ldyBSZWdFeHAoIlxcYk1BUks6XFxzKiguKikkIiwiZCIpLGt1PS9eLSt8LSskL2c7ZnVuY3Rpb24gRXUoZSx0KXtsZXQgbj1bXTtpZih0LmZpbmRSZWdpb25TZWN0aW9uSGVhZGVycyYmdC5mb2xkaW5nUnVsZXM/Lm1hcmtlcnMpe2NvbnN0IHI9RnUoZSx0KTtuPW4uY29uY2F0KHIpfWlmKHQuZmluZE1hcmtTZWN0aW9uSGVhZGVycyl7Y29uc3Qgcj1SdShlKTtuPW4uY29uY2F0KHIpfXJldHVybiBufWZ1bmN0aW9uIEZ1KGUsdCl7Y29uc3Qgbj1bXSxyPWUuZ2V0TGluZUNvdW50KCk7Zm9yKGxldCBpPTE7aTw9cjtpKyspe2NvbnN0IHM9ZS5nZXRMaW5lQ29udGVudChpKSxhPXMubWF0Y2godC5mb2xkaW5nUnVsZXMubWFya2Vycy5zdGFydCk7aWYoYSl7Y29uc3QgbD17c3RhcnRMaW5lTnVtYmVyOmksc3RhcnRDb2x1bW46YVswXS5sZW5ndGgrMSxlbmRMaW5lTnVtYmVyOmksZW5kQ29sdW1uOnMubGVuZ3RoKzF9O2lmKGwuZW5kQ29sdW1uPmwuc3RhcnRDb2x1bW4pe2NvbnN0IG89e3JhbmdlOmwsLi4uV28ocy5zdWJzdHJpbmcoYVswXS5sZW5ndGgpKSxzaG91bGRCZUluQ29tbWVudHM6ITF9OyhvLnRleHR8fG8uaGFzU2VwYXJhdG9yTGluZSkmJm4ucHVzaChvKX19fXJldHVybiBufWZ1bmN0aW9uIFJ1KGUpe2NvbnN0IHQ9W10sbj1lLmdldExpbmVDb3VudCgpO2ZvcihsZXQgcj0xO3I8PW47cisrKXtjb25zdCBpPWUuZ2V0TGluZUNvbnRlbnQocik7TnUoaSxyLHQpfXJldHVybiB0fWZ1bmN0aW9uIE51KGUsdCxuKXtPby5sYXN0SW5kZXg9MDtjb25zdCByPU9vLmV4ZWMoZSk7aWYocil7Y29uc3QgaT1yLmluZGljZXNbMV1bMF0rMSxzPXIuaW5kaWNlc1sxXVsxXSsxLGE9e3N0YXJ0TGluZU51bWJlcjp0LHN0YXJ0Q29sdW1uOmksZW5kTGluZU51bWJlcjp0LGVuZENvbHVtbjpzfTtpZihhLmVuZENvbHVtbj5hLnN0YXJ0Q29sdW1uKXtjb25zdCBsPXtyYW5nZTphLC4uLldvKHJbMV0pLHNob3VsZEJlSW5Db21tZW50czohMH07KGwudGV4dHx8bC5oYXNTZXBhcmF0b3JMaW5lKSYmbi5wdXNoKGwpfX19ZnVuY3Rpb24gV28oZSl7ZT1lLnRyaW0oKTtjb25zdCB0PWUuc3RhcnRzV2l0aCgiLSIpO3JldHVybiBlPWUucmVwbGFjZShrdSwiIikse3RleHQ6ZSxoYXNTZXBhcmF0b3JMaW5lOnR9fWNsYXNzIER1IGV4dGVuZHMgYmR7Z2V0IHVyaSgpe3JldHVybiB0aGlzLl91cml9Z2V0IGVvbCgpe3JldHVybiB0aGlzLl9lb2x9Z2V0VmFsdWUoKXtyZXR1cm4gdGhpcy5nZXRUZXh0KCl9ZmluZE1hdGNoZXModCl7Y29uc3Qgbj1bXTtmb3IobGV0IHI9MDtyPHRoaXMuX2xpbmVzLmxlbmd0aDtyKyspe2NvbnN0IGk9dGhpcy5fbGluZXNbcl0scz10aGlzLm9mZnNldEF0KG5ldyBjZShyKzEsMSkpLGE9aS5tYXRjaEFsbCh0KTtmb3IoY29uc3QgbCBvZiBhKShsLmluZGV4fHxsLmluZGV4PT09MCkmJihsLmluZGV4PWwuaW5kZXgrcyksbi5wdXNoKGwpfXJldHVybiBufWdldExpbmVzQ29udGVudCgpe3JldHVybiB0aGlzLl9saW5lcy5zbGljZSgwKX1nZXRMaW5lQ291bnQoKXtyZXR1cm4gdGhpcy5fbGluZXMubGVuZ3RofWdldExpbmVDb250ZW50KHQpe3JldHVybiB0aGlzLl9saW5lc1t0LTFdfWdldFdvcmRBdFBvc2l0aW9uKHQsbil7Y29uc3Qgcj1Lcih0LmNvbHVtbixzYShuKSx0aGlzLl9saW5lc1t0LmxpbmVOdW1iZXItMV0sMCk7cmV0dXJuIHI/bmV3IFEodC5saW5lTnVtYmVyLHIuc3RhcnRDb2x1bW4sdC5saW5lTnVtYmVyLHIuZW5kQ29sdW1uKTpudWxsfXdvcmRzKHQpe2NvbnN0IG49dGhpcy5fbGluZXMscj10aGlzLl93b3JkZW5pemUuYmluZCh0aGlzKTtsZXQgaT0wLHM9IiIsYT0wLGw9W107cmV0dXJueypbU3ltYm9sLml0ZXJhdG9yXSgpe2Zvcig7OylpZihhPGwubGVuZ3RoKXtjb25zdCBvPXMuc3Vic3RyaW5nKGxbYV0uc3RhcnQsbFthXS5lbmQpO2ErPTEseWllbGQgb31lbHNlIGlmKGk8bi5sZW5ndGgpcz1uW2ldLGw9cihzLHQpLGE9MCxpKz0xO2Vsc2UgYnJlYWt9fX1nZXRMaW5lV29yZHModCxuKXtjb25zdCByPXRoaXMuX2xpbmVzW3QtMV0saT10aGlzLl93b3JkZW5pemUocixuKSxzPVtdO2Zvcihjb25zdCBhIG9mIGkpcy5wdXNoKHt3b3JkOnIuc3Vic3RyaW5nKGEuc3RhcnQsYS5lbmQpLHN0YXJ0Q29sdW1uOmEuc3RhcnQrMSxlbmRDb2x1bW46YS5lbmQrMX0pO3JldHVybiBzfV93b3JkZW5pemUodCxuKXtjb25zdCByPVtdO2xldCBpO2ZvcihuLmxhc3RJbmRleD0wOyhpPW4uZXhlYyh0KSkmJmlbMF0ubGVuZ3RoIT09MDspci5wdXNoKHtzdGFydDppLmluZGV4LGVuZDppLmluZGV4K2lbMF0ubGVuZ3RofSk7cmV0dXJuIHJ9Z2V0VmFsdWVJblJhbmdlKHQpe2lmKHQ9dGhpcy5fdmFsaWRhdGVSYW5nZSh0KSx0LnN0YXJ0TGluZU51bWJlcj09PXQuZW5kTGluZU51bWJlcilyZXR1cm4gdGhpcy5fbGluZXNbdC5zdGFydExpbmVOdW1iZXItMV0uc3Vic3RyaW5nKHQuc3RhcnRDb2x1bW4tMSx0LmVuZENvbHVtbi0xKTtjb25zdCBuPXRoaXMuX2VvbCxyPXQuc3RhcnRMaW5lTnVtYmVyLTEsaT10LmVuZExpbmVOdW1iZXItMSxzPVtdO3MucHVzaCh0aGlzLl9saW5lc1tyXS5zdWJzdHJpbmcodC5zdGFydENvbHVtbi0xKSk7Zm9yKGxldCBhPXIrMTthPGk7YSsrKXMucHVzaCh0aGlzLl9saW5lc1thXSk7cmV0dXJuIHMucHVzaCh0aGlzLl9saW5lc1tpXS5zdWJzdHJpbmcoMCx0LmVuZENvbHVtbi0xKSkscy5qb2luKG4pfW9mZnNldEF0KHQpe3JldHVybiB0PXRoaXMuX3ZhbGlkYXRlUG9zaXRpb24odCksdGhpcy5fZW5zdXJlTGluZVN0YXJ0cygpLHRoaXMuX2xpbmVTdGFydHMuZ2V0UHJlZml4U3VtKHQubGluZU51bWJlci0yKSsodC5jb2x1bW4tMSl9cG9zaXRpb25BdCh0KXt0PU1hdGguZmxvb3IodCksdD1NYXRoLm1heCgwLHQpLHRoaXMuX2Vuc3VyZUxpbmVTdGFydHMoKTtjb25zdCBuPXRoaXMuX2xpbmVTdGFydHMuZ2V0SW5kZXhPZih0KSxyPXRoaXMuX2xpbmVzW24uaW5kZXhdLmxlbmd0aDtyZXR1cm57bGluZU51bWJlcjoxK24uaW5kZXgsY29sdW1uOjErTWF0aC5taW4obi5yZW1haW5kZXIscil9fV92YWxpZGF0ZVJhbmdlKHQpe2NvbnN0IG49dGhpcy5fdmFsaWRhdGVQb3NpdGlvbih7bGluZU51bWJlcjp0LnN0YXJ0TGluZU51bWJlcixjb2x1bW46dC5zdGFydENvbHVtbn0pLHI9dGhpcy5fdmFsaWRhdGVQb3NpdGlvbih7bGluZU51bWJlcjp0LmVuZExpbmVOdW1iZXIsY29sdW1uOnQuZW5kQ29sdW1ufSk7cmV0dXJuIG4ubGluZU51bWJlciE9PXQuc3RhcnRMaW5lTnVtYmVyfHxuLmNvbHVtbiE9PXQuc3RhcnRDb2x1bW58fHIubGluZU51bWJlciE9PXQuZW5kTGluZU51bWJlcnx8ci5jb2x1bW4hPT10LmVuZENvbHVtbj97c3RhcnRMaW5lTnVtYmVyOm4ubGluZU51bWJlcixzdGFydENvbHVtbjpuLmNvbHVtbixlbmRMaW5lTnVtYmVyOnIubGluZU51bWJlcixlbmRDb2x1bW46ci5jb2x1bW59OnR9X3ZhbGlkYXRlUG9zaXRpb24odCl7aWYoIWNlLmlzSVBvc2l0aW9uKHQpKXRocm93IG5ldyBFcnJvcigiYmFkIHBvc2l0aW9uIik7bGV0e2xpbmVOdW1iZXI6bixjb2x1bW46cn09dCxpPSExO2lmKG48MSluPTEscj0xLGk9ITA7ZWxzZSBpZihuPnRoaXMuX2xpbmVzLmxlbmd0aCluPXRoaXMuX2xpbmVzLmxlbmd0aCxyPXRoaXMuX2xpbmVzW24tMV0ubGVuZ3RoKzEsaT0hMDtlbHNle2NvbnN0IHM9dGhpcy5fbGluZXNbbi0xXS5sZW5ndGgrMTtyPDE/KHI9MSxpPSEwKTpyPnMmJihyPXMsaT0hMCl9cmV0dXJuIGk/e2xpbmVOdW1iZXI6bixjb2x1bW46cn06dH19Y29uc3QgUnQ9Y2xhc3MgUnR7Y29uc3RydWN0b3IodCxuKXt0aGlzLl9ob3N0PXQsdGhpcy5fbW9kZWxzPU9iamVjdC5jcmVhdGUobnVsbCksdGhpcy5fZm9yZWlnbk1vZHVsZUZhY3Rvcnk9bix0aGlzLl9mb3JlaWduTW9kdWxlPW51bGx9ZGlzcG9zZSgpe3RoaXMuX21vZGVscz1PYmplY3QuY3JlYXRlKG51bGwpfV9nZXRNb2RlbCh0KXtyZXR1cm4gdGhpcy5fbW9kZWxzW3RdfV9nZXRNb2RlbHMoKXtjb25zdCB0PVtdO3JldHVybiBPYmplY3Qua2V5cyh0aGlzLl9tb2RlbHMpLmZvckVhY2gobj0+dC5wdXNoKHRoaXMuX21vZGVsc1tuXSkpLHR9YWNjZXB0TmV3TW9kZWwodCl7dGhpcy5fbW9kZWxzW3QudXJsXT1uZXcgRHUoSnIucGFyc2UodC51cmwpLHQubGluZXMsdC5FT0wsdC52ZXJzaW9uSWQpfWFjY2VwdE1vZGVsQ2hhbmdlZCh0LG4pe2lmKCF0aGlzLl9tb2RlbHNbdF0pcmV0dXJuO3RoaXMuX21vZGVsc1t0XS5vbkV2ZW50cyhuKX1hY2NlcHRSZW1vdmVkTW9kZWwodCl7dGhpcy5fbW9kZWxzW3RdJiZkZWxldGUgdGhpcy5fbW9kZWxzW3RdfWFzeW5jIGNvbXB1dGVVbmljb2RlSGlnaGxpZ2h0cyh0LG4scil7Y29uc3QgaT10aGlzLl9nZXRNb2RlbCh0KTtyZXR1cm4gaT9IZC5jb21wdXRlVW5pY29kZUhpZ2hsaWdodHMoaSxuLHIpOntyYW5nZXM6W10saGFzTW9yZTohMSxhbWJpZ3VvdXNDaGFyYWN0ZXJDb3VudDowLGludmlzaWJsZUNoYXJhY3RlckNvdW50OjAsbm9uQmFzaWNBc2NpaUNoYXJhY3RlckNvdW50OjB9fWFzeW5jIGZpbmRTZWN0aW9uSGVhZGVycyh0LG4pe2NvbnN0IHI9dGhpcy5fZ2V0TW9kZWwodCk7cmV0dXJuIHI/RXUocixuKTpbXX1hc3luYyBjb21wdXRlRGlmZih0LG4scixpKXtjb25zdCBzPXRoaXMuX2dldE1vZGVsKHQpLGE9dGhpcy5fZ2V0TW9kZWwobik7cmV0dXJuIXN8fCFhP251bGw6UnQuY29tcHV0ZURpZmYocyxhLHIsaSl9c3RhdGljIGNvbXB1dGVEaWZmKHQsbixyLGkpe2NvbnN0IHM9aT09PSJhZHZhbmNlZCI/TG8uZ2V0RGVmYXVsdCgpOkxvLmdldExlZ2FjeSgpLGE9dC5nZXRMaW5lc0NvbnRlbnQoKSxsPW4uZ2V0TGluZXNDb250ZW50KCksbz1zLmNvbXB1dGVEaWZmKGEsbCxyKSxjPW8uY2hhbmdlcy5sZW5ndGg+MD8hMTp0aGlzLl9tb2RlbHNBcmVJZGVudGljYWwodCxuKTtmdW5jdGlvbiBkKHUpe3JldHVybiB1Lm1hcChmPT5bZi5vcmlnaW5hbC5zdGFydExpbmVOdW1iZXIsZi5vcmlnaW5hbC5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlLGYubW9kaWZpZWQuc3RhcnRMaW5lTnVtYmVyLGYubW9kaWZpZWQuZW5kTGluZU51bWJlckV4Y2x1c2l2ZSxmLmlubmVyQ2hhbmdlcz8ubWFwKG09PlttLm9yaWdpbmFsUmFuZ2Uuc3RhcnRMaW5lTnVtYmVyLG0ub3JpZ2luYWxSYW5nZS5zdGFydENvbHVtbixtLm9yaWdpbmFsUmFuZ2UuZW5kTGluZU51bWJlcixtLm9yaWdpbmFsUmFuZ2UuZW5kQ29sdW1uLG0ubW9kaWZpZWRSYW5nZS5zdGFydExpbmVOdW1iZXIsbS5tb2RpZmllZFJhbmdlLnN0YXJ0Q29sdW1uLG0ubW9kaWZpZWRSYW5nZS5lbmRMaW5lTnVtYmVyLG0ubW9kaWZpZWRSYW5nZS5lbmRDb2x1bW5dKV0pfXJldHVybntpZGVudGljYWw6YyxxdWl0RWFybHk6by5oaXRUaW1lb3V0LGNoYW5nZXM6ZChvLmNoYW5nZXMpLG1vdmVzOm8ubW92ZXMubWFwKHU9Plt1LmxpbmVSYW5nZU1hcHBpbmcub3JpZ2luYWwuc3RhcnRMaW5lTnVtYmVyLHUubGluZVJhbmdlTWFwcGluZy5vcmlnaW5hbC5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlLHUubGluZVJhbmdlTWFwcGluZy5tb2RpZmllZC5zdGFydExpbmVOdW1iZXIsdS5saW5lUmFuZ2VNYXBwaW5nLm1vZGlmaWVkLmVuZExpbmVOdW1iZXJFeGNsdXNpdmUsZCh1LmNoYW5nZXMpXSl9fXN0YXRpYyBfbW9kZWxzQXJlSWRlbnRpY2FsKHQsbil7Y29uc3Qgcj10LmdldExpbmVDb3VudCgpLGk9bi5nZXRMaW5lQ291bnQoKTtpZihyIT09aSlyZXR1cm4hMTtmb3IobGV0IHM9MTtzPD1yO3MrKyl7Y29uc3QgYT10LmdldExpbmVDb250ZW50KHMpLGw9bi5nZXRMaW5lQ29udGVudChzKTtpZihhIT09bClyZXR1cm4hMX1yZXR1cm4hMH1hc3luYyBjb21wdXRlTW9yZU1pbmltYWxFZGl0cyh0LG4scil7Y29uc3QgaT10aGlzLl9nZXRNb2RlbCh0KTtpZighaSlyZXR1cm4gbjtjb25zdCBzPVtdO2xldCBhO249bi5zbGljZSgwKS5zb3J0KChvLGMpPT57aWYoby5yYW5nZSYmYy5yYW5nZSlyZXR1cm4gUS5jb21wYXJlUmFuZ2VzVXNpbmdTdGFydHMoby5yYW5nZSxjLnJhbmdlKTtjb25zdCBkPW8ucmFuZ2U/MDoxLHU9Yy5yYW5nZT8wOjE7cmV0dXJuIGQtdX0pO2xldCBsPTA7Zm9yKGxldCBvPTE7bzxuLmxlbmd0aDtvKyspUS5nZXRFbmRQb3NpdGlvbihuW2xdLnJhbmdlKS5lcXVhbHMoUS5nZXRTdGFydFBvc2l0aW9uKG5bb10ucmFuZ2UpKT8obltsXS5yYW5nZT1RLmZyb21Qb3NpdGlvbnMoUS5nZXRTdGFydFBvc2l0aW9uKG5bbF0ucmFuZ2UpLFEuZ2V0RW5kUG9zaXRpb24obltvXS5yYW5nZSkpLG5bbF0udGV4dCs9bltvXS50ZXh0KToobCsrLG5bbF09bltvXSk7bi5sZW5ndGg9bCsxO2ZvcihsZXR7cmFuZ2U6byx0ZXh0OmMsZW9sOmR9b2Ygbil7aWYodHlwZW9mIGQ9PSJudW1iZXIiJiYoYT1kKSxRLmlzRW1wdHkobykmJiFjKWNvbnRpbnVlO2NvbnN0IHU9aS5nZXRWYWx1ZUluUmFuZ2Uobyk7aWYoYz1jLnJlcGxhY2UoL1xyXG58XG58XHIvZyxpLmVvbCksdT09PWMpY29udGludWU7aWYoTWF0aC5tYXgoYy5sZW5ndGgsdS5sZW5ndGgpPlJ0Ll9kaWZmTGltaXQpe3MucHVzaCh7cmFuZ2U6byx0ZXh0OmN9KTtjb250aW51ZX1jb25zdCBmPXFoKHUsYyxyKSxtPWkub2Zmc2V0QXQoUS5saWZ0KG8pLmdldFN0YXJ0UG9zaXRpb24oKSk7Zm9yKGNvbnN0IHYgb2YgZil7Y29uc3QgeT1pLnBvc2l0aW9uQXQobSt2Lm9yaWdpbmFsU3RhcnQpLF89aS5wb3NpdGlvbkF0KG0rdi5vcmlnaW5hbFN0YXJ0K3Yub3JpZ2luYWxMZW5ndGgpLGs9e3RleHQ6Yy5zdWJzdHIodi5tb2RpZmllZFN0YXJ0LHYubW9kaWZpZWRMZW5ndGgpLHJhbmdlOntzdGFydExpbmVOdW1iZXI6eS5saW5lTnVtYmVyLHN0YXJ0Q29sdW1uOnkuY29sdW1uLGVuZExpbmVOdW1iZXI6Xy5saW5lTnVtYmVyLGVuZENvbHVtbjpfLmNvbHVtbn19O2kuZ2V0VmFsdWVJblJhbmdlKGsucmFuZ2UpIT09ay50ZXh0JiZzLnB1c2goayl9fXJldHVybiB0eXBlb2YgYT09Im51bWJlciImJnMucHVzaCh7ZW9sOmEsdGV4dDoiIixyYW5nZTp7c3RhcnRMaW5lTnVtYmVyOjAsc3RhcnRDb2x1bW46MCxlbmRMaW5lTnVtYmVyOjAsZW5kQ29sdW1uOjB9fSksc31hc3luYyBjb21wdXRlTGlua3ModCl7Y29uc3Qgbj10aGlzLl9nZXRNb2RlbCh0KTtyZXR1cm4gbj9rZChuKTpudWxsfWFzeW5jIGNvbXB1dGVEZWZhdWx0RG9jdW1lbnRDb2xvcnModCl7Y29uc3Qgbj10aGlzLl9nZXRNb2RlbCh0KTtyZXR1cm4gbj9fdShuKTpudWxsfWFzeW5jIHRleHR1YWxTdWdnZXN0KHQsbixyLGkpe2NvbnN0IHM9bmV3IFBuLGE9bmV3IFJlZ0V4cChyLGkpLGw9bmV3IFNldDtlOmZvcihjb25zdCBvIG9mIHQpe2NvbnN0IGM9dGhpcy5fZ2V0TW9kZWwobyk7aWYoYyl7Zm9yKGNvbnN0IGQgb2YgYy53b3JkcyhhKSlpZighKGQ9PT1ufHwhaXNOYU4oTnVtYmVyKGQpKSkmJihsLmFkZChkKSxsLnNpemU+UnQuX3N1Z2dlc3Rpb25zTGltaXQpKWJyZWFrIGV9fXJldHVybnt3b3JkczpBcnJheS5mcm9tKGwpLGR1cmF0aW9uOnMuZWxhcHNlZCgpfX1hc3luYyBjb21wdXRlV29yZFJhbmdlcyh0LG4scixpKXtjb25zdCBzPXRoaXMuX2dldE1vZGVsKHQpO2lmKCFzKXJldHVybiBPYmplY3QuY3JlYXRlKG51bGwpO2NvbnN0IGE9bmV3IFJlZ0V4cChyLGkpLGw9T2JqZWN0LmNyZWF0ZShudWxsKTtmb3IobGV0IG89bi5zdGFydExpbmVOdW1iZXI7bzxuLmVuZExpbmVOdW1iZXI7bysrKXtjb25zdCBjPXMuZ2V0TGluZVdvcmRzKG8sYSk7Zm9yKGNvbnN0IGQgb2YgYyl7aWYoIWlzTmFOKE51bWJlcihkLndvcmQpKSljb250aW51ZTtsZXQgdT1sW2Qud29yZF07dXx8KHU9W10sbFtkLndvcmRdPXUpLHUucHVzaCh7c3RhcnRMaW5lTnVtYmVyOm8sc3RhcnRDb2x1bW46ZC5zdGFydENvbHVtbixlbmRMaW5lTnVtYmVyOm8sZW5kQ29sdW1uOmQuZW5kQ29sdW1ufSl9fXJldHVybiBsfWFzeW5jIG5hdmlnYXRlVmFsdWVTZXQodCxuLHIsaSxzKXtjb25zdCBhPXRoaXMuX2dldE1vZGVsKHQpO2lmKCFhKXJldHVybiBudWxsO2NvbnN0IGw9bmV3IFJlZ0V4cChpLHMpO24uc3RhcnRDb2x1bW49PT1uLmVuZENvbHVtbiYmKG49e3N0YXJ0TGluZU51bWJlcjpuLnN0YXJ0TGluZU51bWJlcixzdGFydENvbHVtbjpuLnN0YXJ0Q29sdW1uLGVuZExpbmVOdW1iZXI6bi5lbmRMaW5lTnVtYmVyLGVuZENvbHVtbjpuLmVuZENvbHVtbisxfSk7Y29uc3Qgbz1hLmdldFZhbHVlSW5SYW5nZShuKSxjPWEuZ2V0V29yZEF0UG9zaXRpb24oe2xpbmVOdW1iZXI6bi5zdGFydExpbmVOdW1iZXIsY29sdW1uOm4uc3RhcnRDb2x1bW59LGwpO2lmKCFjKXJldHVybiBudWxsO2NvbnN0IGQ9YS5nZXRWYWx1ZUluUmFuZ2UoYyk7cmV0dXJuIHRpLklOU1RBTkNFLm5hdmlnYXRlVmFsdWVTZXQobixvLGMsZCxyKX1sb2FkRm9yZWlnbk1vZHVsZSh0LG4scil7Y29uc3QgYT17aG9zdDpnaChyLChsLG8pPT50aGlzLl9ob3N0LmZocihsLG8pKSxnZXRNaXJyb3JNb2RlbHM6KCk9PnRoaXMuX2dldE1vZGVscygpfTtyZXR1cm4gdGhpcy5fZm9yZWlnbk1vZHVsZUZhY3Rvcnk/KHRoaXMuX2ZvcmVpZ25Nb2R1bGU9dGhpcy5fZm9yZWlnbk1vZHVsZUZhY3RvcnkoYSxuKSxQcm9taXNlLnJlc29sdmUoV3IodGhpcy5fZm9yZWlnbk1vZHVsZSkpKTpQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoIlVuZXhwZWN0ZWQgdXNhZ2UiKSl9Zm1yKHQsbil7aWYoIXRoaXMuX2ZvcmVpZ25Nb2R1bGV8fHR5cGVvZiB0aGlzLl9mb3JlaWduTW9kdWxlW3RdIT0iZnVuY3Rpb24iKXJldHVybiBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoIk1pc3NpbmcgcmVxdWVzdEhhbmRsZXIgb3IgbWV0aG9kOiAiK3QpKTt0cnl7cmV0dXJuIFByb21pc2UucmVzb2x2ZSh0aGlzLl9mb3JlaWduTW9kdWxlW3RdLmFwcGx5KHRoaXMuX2ZvcmVpZ25Nb2R1bGUsbikpfWNhdGNoKHIpe3JldHVybiBQcm9taXNlLnJlamVjdChyKX19fTtSdC5fZGlmZkxpbWl0PTFlNSxSdC5fc3VnZ2VzdGlvbnNMaW1pdD0xZTQ7bGV0IGJpPVJ0O3R5cGVvZiBpbXBvcnRTY3JpcHRzPT0iZnVuY3Rpb24iJiYoZ2xvYmFsVGhpcy5tb25hY289UGQoKSk7bGV0IHZpPSExO2Z1bmN0aW9uIFZvKGUpe2lmKHZpKXJldHVybjt2aT0hMDtjb25zdCB0PW5ldyBVaChuPT57Z2xvYmFsVGhpcy5wb3N0TWVzc2FnZShuKX0sbj0+bmV3IGJpKG4sZSkpO2dsb2JhbFRoaXMub25tZXNzYWdlPW49Pnt0Lm9ubWVzc2FnZShuLmRhdGEpfX1nbG9iYWxUaGlzLm9ubWVzc2FnZT1lPT57dml8fFZvKG51bGwpfTsvKiEtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogKiBDb3B5cmlnaHQgKGMpIE1pY3Jvc29mdCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICogVmVyc2lvbjogMC41MS4wKDY3ZDY2NGEzMjk2OGUxOWUyZWIwOGI2OTZhOTI0NjM4MDQxODJhZTQpCiAqIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZQogKiBodHRwczovL2dpdGh1Yi5jb20vbWljcm9zb2Z0L21vbmFjby1lZGl0b3IvYmxvYi9tYWluL0xJQ0VOU0UudHh0CiAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL3ZhciBwOyhmdW5jdGlvbihlKXtlW2UuSWRlbnQ9MF09IklkZW50IixlW2UuQXRLZXl3b3JkPTFdPSJBdEtleXdvcmQiLGVbZS5TdHJpbmc9Ml09IlN0cmluZyIsZVtlLkJhZFN0cmluZz0zXT0iQmFkU3RyaW5nIixlW2UuVW5xdW90ZWRTdHJpbmc9NF09IlVucXVvdGVkU3RyaW5nIixlW2UuSGFzaD01XT0iSGFzaCIsZVtlLk51bT02XT0iTnVtIixlW2UuUGVyY2VudGFnZT03XT0iUGVyY2VudGFnZSIsZVtlLkRpbWVuc2lvbj04XT0iRGltZW5zaW9uIixlW2UuVW5pY29kZVJhbmdlPTldPSJVbmljb2RlUmFuZ2UiLGVbZS5DRE89MTBdPSJDRE8iLGVbZS5DREM9MTFdPSJDREMiLGVbZS5Db2xvbj0xMl09IkNvbG9uIixlW2UuU2VtaUNvbG9uPTEzXT0iU2VtaUNvbG9uIixlW2UuQ3VybHlMPTE0XT0iQ3VybHlMIixlW2UuQ3VybHlSPTE1XT0iQ3VybHlSIixlW2UuUGFyZW50aGVzaXNMPTE2XT0iUGFyZW50aGVzaXNMIixlW2UuUGFyZW50aGVzaXNSPTE3XT0iUGFyZW50aGVzaXNSIixlW2UuQnJhY2tldEw9MThdPSJCcmFja2V0TCIsZVtlLkJyYWNrZXRSPTE5XT0iQnJhY2tldFIiLGVbZS5XaGl0ZXNwYWNlPTIwXT0iV2hpdGVzcGFjZSIsZVtlLkluY2x1ZGVzPTIxXT0iSW5jbHVkZXMiLGVbZS5EYXNobWF0Y2g9MjJdPSJEYXNobWF0Y2giLGVbZS5TdWJzdHJpbmdPcGVyYXRvcj0yM109IlN1YnN0cmluZ09wZXJhdG9yIixlW2UuUHJlZml4T3BlcmF0b3I9MjRdPSJQcmVmaXhPcGVyYXRvciIsZVtlLlN1ZmZpeE9wZXJhdG9yPTI1XT0iU3VmZml4T3BlcmF0b3IiLGVbZS5EZWxpbT0yNl09IkRlbGltIixlW2UuRU1TPTI3XT0iRU1TIixlW2UuRVhTPTI4XT0iRVhTIixlW2UuTGVuZ3RoPTI5XT0iTGVuZ3RoIixlW2UuQW5nbGU9MzBdPSJBbmdsZSIsZVtlLlRpbWU9MzFdPSJUaW1lIixlW2UuRnJlcT0zMl09IkZyZXEiLGVbZS5FeGNsYW1hdGlvbj0zM109IkV4Y2xhbWF0aW9uIixlW2UuUmVzb2x1dGlvbj0zNF09IlJlc29sdXRpb24iLGVbZS5Db21tYT0zNV09IkNvbW1hIixlW2UuQ2hhcnNldD0zNl09IkNoYXJzZXQiLGVbZS5Fc2NhcGVkSmF2YVNjcmlwdD0zN109IkVzY2FwZWRKYXZhU2NyaXB0IixlW2UuQmFkRXNjYXBlZEphdmFTY3JpcHQ9MzhdPSJCYWRFc2NhcGVkSmF2YVNjcmlwdCIsZVtlLkNvbW1lbnQ9MzldPSJDb21tZW50IixlW2UuU2luZ2xlTGluZUNvbW1lbnQ9NDBdPSJTaW5nbGVMaW5lQ29tbWVudCIsZVtlLkVPRj00MV09IkVPRiIsZVtlLkNvbnRhaW5lclF1ZXJ5TGVuZ3RoPTQyXT0iQ29udGFpbmVyUXVlcnlMZW5ndGgiLGVbZS5DdXN0b21Ub2tlbj00M109IkN1c3RvbVRva2VuIn0pKHB8fChwPXt9KSk7dmFyIFVvPWNsYXNze2NvbnN0cnVjdG9yKGUpe3RoaXMuc291cmNlPWUsdGhpcy5sZW49ZS5sZW5ndGgsdGhpcy5wb3NpdGlvbj0wfXN1YnN0cmluZyhlLHQ9dGhpcy5wb3NpdGlvbil7cmV0dXJuIHRoaXMuc291cmNlLnN1YnN0cmluZyhlLHQpfWVvcygpe3JldHVybiB0aGlzLmxlbjw9dGhpcy5wb3NpdGlvbn1wb3MoKXtyZXR1cm4gdGhpcy5wb3NpdGlvbn1nb0JhY2tUbyhlKXt0aGlzLnBvc2l0aW9uPWV9Z29CYWNrKGUpe3RoaXMucG9zaXRpb24tPWV9YWR2YW5jZShlKXt0aGlzLnBvc2l0aW9uKz1lfW5leHRDaGFyKCl7cmV0dXJuIHRoaXMuc291cmNlLmNoYXJDb2RlQXQodGhpcy5wb3NpdGlvbisrKXx8MH1wZWVrQ2hhcihlPTApe3JldHVybiB0aGlzLnNvdXJjZS5jaGFyQ29kZUF0KHRoaXMucG9zaXRpb24rZSl8fDB9bG9va2JhY2tDaGFyKGU9MCl7cmV0dXJuIHRoaXMuc291cmNlLmNoYXJDb2RlQXQodGhpcy5wb3NpdGlvbi1lKXx8MH1hZHZhbmNlSWZDaGFyKGUpe3JldHVybiBlPT09dGhpcy5zb3VyY2UuY2hhckNvZGVBdCh0aGlzLnBvc2l0aW9uKT8odGhpcy5wb3NpdGlvbisrLCEwKTohMX1hZHZhbmNlSWZDaGFycyhlKXtpZih0aGlzLnBvc2l0aW9uK2UubGVuZ3RoPnRoaXMuc291cmNlLmxlbmd0aClyZXR1cm4hMTtsZXQgdD0wO2Zvcig7dDxlLmxlbmd0aDt0KyspaWYodGhpcy5zb3VyY2UuY2hhckNvZGVBdCh0aGlzLnBvc2l0aW9uK3QpIT09ZVt0XSlyZXR1cm4hMTtyZXR1cm4gdGhpcy5hZHZhbmNlKHQpLCEwfWFkdmFuY2VXaGlsZUNoYXIoZSl7Y29uc3QgdD10aGlzLnBvc2l0aW9uO2Zvcig7dGhpcy5wb3NpdGlvbjx0aGlzLmxlbiYmZSh0aGlzLnNvdXJjZS5jaGFyQ29kZUF0KHRoaXMucG9zaXRpb24pKTspdGhpcy5wb3NpdGlvbisrO3JldHVybiB0aGlzLnBvc2l0aW9uLXR9fSxlcj05Nywkbz0xMDIsQm89MTIyLHRyPTY1LHFvPTcwLGpvPTkwLGduPTQ4LGJuPTU3LEl1PTEyNixBdT05NCx2bj02MSxNdT0xMjQsU3Q9NDUsSG89OTUsTHU9Mzcsd2k9NDIsR289NDAsSm89NDEsenU9NjAsUHU9NjIsVHU9NjQsT3U9MzUsV3U9MzYseWk9OTIsWG89NDcsJHQ9MTAsQnQ9MTMsd249MTIsWW89MzQsUW89MzkseGk9MzIsU2k9OSxWdT01OSxVdT01OCwkdT0xMjMsQnU9MTI1LHF1PTkxLGp1PTkzLEh1PTQ0LEtvPTQ2LFpvPTMzLEd1PTYzLEp1PTQzLFZlPXt9O1ZlW1Z1XT1wLlNlbWlDb2xvbixWZVtVdV09cC5Db2xvbixWZVskdV09cC5DdXJseUwsVmVbQnVdPXAuQ3VybHlSLFZlW2p1XT1wLkJyYWNrZXRSLFZlW3F1XT1wLkJyYWNrZXRMLFZlW0dvXT1wLlBhcmVudGhlc2lzTCxWZVtKb109cC5QYXJlbnRoZXNpc1IsVmVbSHVdPXAuQ29tbWE7dmFyIGllPXt9O2llLmVtPXAuRU1TLGllLmV4PXAuRVhTLGllLnB4PXAuTGVuZ3RoLGllLmNtPXAuTGVuZ3RoLGllLm1tPXAuTGVuZ3RoLGllLmluPXAuTGVuZ3RoLGllLnB0PXAuTGVuZ3RoLGllLnBjPXAuTGVuZ3RoLGllLmRlZz1wLkFuZ2xlLGllLnJhZD1wLkFuZ2xlLGllLmdyYWQ9cC5BbmdsZSxpZS5tcz1wLlRpbWUsaWUucz1wLlRpbWUsaWUuaHo9cC5GcmVxLGllLmtoej1wLkZyZXEsaWVbIiUiXT1wLlBlcmNlbnRhZ2UsaWUuZnI9cC5QZXJjZW50YWdlLGllLmRwaT1wLlJlc29sdXRpb24saWUuZHBjbT1wLlJlc29sdXRpb24saWUuY3F3PXAuQ29udGFpbmVyUXVlcnlMZW5ndGgsaWUuY3FoPXAuQ29udGFpbmVyUXVlcnlMZW5ndGgsaWUuY3FpPXAuQ29udGFpbmVyUXVlcnlMZW5ndGgsaWUuY3FiPXAuQ29udGFpbmVyUXVlcnlMZW5ndGgsaWUuY3FtaW49cC5Db250YWluZXJRdWVyeUxlbmd0aCxpZS5jcW1heD1wLkNvbnRhaW5lclF1ZXJ5TGVuZ3RoO3ZhciB5bj1jbGFzc3tjb25zdHJ1Y3Rvcigpe3RoaXMuc3RyZWFtPW5ldyBVbygiIiksdGhpcy5pZ25vcmVDb21tZW50PSEwLHRoaXMuaWdub3JlV2hpdGVzcGFjZT0hMCx0aGlzLmluVVJMPSExfXNldFNvdXJjZShlKXt0aGlzLnN0cmVhbT1uZXcgVW8oZSl9ZmluaXNoVG9rZW4oZSx0LG4pe3JldHVybntvZmZzZXQ6ZSxsZW46dGhpcy5zdHJlYW0ucG9zKCktZSx0eXBlOnQsdGV4dDpufHx0aGlzLnN0cmVhbS5zdWJzdHJpbmcoZSl9fXN1YnN0cmluZyhlLHQpe3JldHVybiB0aGlzLnN0cmVhbS5zdWJzdHJpbmcoZSxlK3QpfXBvcygpe3JldHVybiB0aGlzLnN0cmVhbS5wb3MoKX1nb0JhY2tUbyhlKXt0aGlzLnN0cmVhbS5nb0JhY2tUbyhlKX1zY2FuVW5xdW90ZWRTdHJpbmcoKXtjb25zdCBlPXRoaXMuc3RyZWFtLnBvcygpLHQ9W107cmV0dXJuIHRoaXMuX3VucXVvdGVkU3RyaW5nKHQpP3RoaXMuZmluaXNoVG9rZW4oZSxwLlVucXVvdGVkU3RyaW5nLHQuam9pbigiIikpOm51bGx9c2Nhbigpe2NvbnN0IGU9dGhpcy50cml2aWEoKTtpZihlIT09bnVsbClyZXR1cm4gZTtjb25zdCB0PXRoaXMuc3RyZWFtLnBvcygpO3JldHVybiB0aGlzLnN0cmVhbS5lb3MoKT90aGlzLmZpbmlzaFRva2VuKHQscC5FT0YpOnRoaXMuc2Nhbk5leHQodCl9dHJ5U2NhblVuaWNvZGUoKXtjb25zdCBlPXRoaXMuc3RyZWFtLnBvcygpO2lmKCF0aGlzLnN0cmVhbS5lb3MoKSYmdGhpcy5fdW5pY29kZVJhbmdlKCkpcmV0dXJuIHRoaXMuZmluaXNoVG9rZW4oZSxwLlVuaWNvZGVSYW5nZSk7dGhpcy5zdHJlYW0uZ29CYWNrVG8oZSl9c2Nhbk5leHQoZSl7aWYodGhpcy5zdHJlYW0uYWR2YW5jZUlmQ2hhcnMoW3p1LFpvLFN0LFN0XSkpcmV0dXJuIHRoaXMuZmluaXNoVG9rZW4oZSxwLkNETyk7aWYodGhpcy5zdHJlYW0uYWR2YW5jZUlmQ2hhcnMoW1N0LFN0LFB1XSkpcmV0dXJuIHRoaXMuZmluaXNoVG9rZW4oZSxwLkNEQyk7bGV0IHQ9W107aWYodGhpcy5pZGVudCh0KSlyZXR1cm4gdGhpcy5maW5pc2hUb2tlbihlLHAuSWRlbnQsdC5qb2luKCIiKSk7aWYodGhpcy5zdHJlYW0uYWR2YW5jZUlmQ2hhcihUdSkpaWYodD1bIkAiXSx0aGlzLl9uYW1lKHQpKXtjb25zdCByPXQuam9pbigiIik7cmV0dXJuIHI9PT0iQGNoYXJzZXQiP3RoaXMuZmluaXNoVG9rZW4oZSxwLkNoYXJzZXQscik6dGhpcy5maW5pc2hUb2tlbihlLHAuQXRLZXl3b3JkLHIpfWVsc2UgcmV0dXJuIHRoaXMuZmluaXNoVG9rZW4oZSxwLkRlbGltKTtpZih0aGlzLnN0cmVhbS5hZHZhbmNlSWZDaGFyKE91KSlyZXR1cm4gdD1bIiMiXSx0aGlzLl9uYW1lKHQpP3RoaXMuZmluaXNoVG9rZW4oZSxwLkhhc2gsdC5qb2luKCIiKSk6dGhpcy5maW5pc2hUb2tlbihlLHAuRGVsaW0pO2lmKHRoaXMuc3RyZWFtLmFkdmFuY2VJZkNoYXIoWm8pKXJldHVybiB0aGlzLmZpbmlzaFRva2VuKGUscC5FeGNsYW1hdGlvbik7aWYodGhpcy5fbnVtYmVyKCkpe2NvbnN0IHI9dGhpcy5zdHJlYW0ucG9zKCk7aWYodD1bdGhpcy5zdHJlYW0uc3Vic3RyaW5nKGUscildLHRoaXMuc3RyZWFtLmFkdmFuY2VJZkNoYXIoTHUpKXJldHVybiB0aGlzLmZpbmlzaFRva2VuKGUscC5QZXJjZW50YWdlKTtpZih0aGlzLmlkZW50KHQpKXtjb25zdCBpPXRoaXMuc3RyZWFtLnN1YnN0cmluZyhyKS50b0xvd2VyQ2FzZSgpLHM9aWVbaV07cmV0dXJuIHR5cGVvZiBzPCJ1Ij90aGlzLmZpbmlzaFRva2VuKGUscyx0LmpvaW4oIiIpKTp0aGlzLmZpbmlzaFRva2VuKGUscC5EaW1lbnNpb24sdC5qb2luKCIiKSl9cmV0dXJuIHRoaXMuZmluaXNoVG9rZW4oZSxwLk51bSl9dD1bXTtsZXQgbj10aGlzLl9zdHJpbmcodCk7cmV0dXJuIG4hPT1udWxsP3RoaXMuZmluaXNoVG9rZW4oZSxuLHQuam9pbigiIikpOihuPVZlW3RoaXMuc3RyZWFtLnBlZWtDaGFyKCldLHR5cGVvZiBuPCJ1Ij8odGhpcy5zdHJlYW0uYWR2YW5jZSgxKSx0aGlzLmZpbmlzaFRva2VuKGUsbikpOnRoaXMuc3RyZWFtLnBlZWtDaGFyKDApPT09SXUmJnRoaXMuc3RyZWFtLnBlZWtDaGFyKDEpPT09dm4/KHRoaXMuc3RyZWFtLmFkdmFuY2UoMiksdGhpcy5maW5pc2hUb2tlbihlLHAuSW5jbHVkZXMpKTp0aGlzLnN0cmVhbS5wZWVrQ2hhcigwKT09PU11JiZ0aGlzLnN0cmVhbS5wZWVrQ2hhcigxKT09PXZuPyh0aGlzLnN0cmVhbS5hZHZhbmNlKDIpLHRoaXMuZmluaXNoVG9rZW4oZSxwLkRhc2htYXRjaCkpOnRoaXMuc3RyZWFtLnBlZWtDaGFyKDApPT09d2kmJnRoaXMuc3RyZWFtLnBlZWtDaGFyKDEpPT09dm4/KHRoaXMuc3RyZWFtLmFkdmFuY2UoMiksdGhpcy5maW5pc2hUb2tlbihlLHAuU3Vic3RyaW5nT3BlcmF0b3IpKTp0aGlzLnN0cmVhbS5wZWVrQ2hhcigwKT09PUF1JiZ0aGlzLnN0cmVhbS5wZWVrQ2hhcigxKT09PXZuPyh0aGlzLnN0cmVhbS5hZHZhbmNlKDIpLHRoaXMuZmluaXNoVG9rZW4oZSxwLlByZWZpeE9wZXJhdG9yKSk6dGhpcy5zdHJlYW0ucGVla0NoYXIoMCk9PT1XdSYmdGhpcy5zdHJlYW0ucGVla0NoYXIoMSk9PT12bj8odGhpcy5zdHJlYW0uYWR2YW5jZSgyKSx0aGlzLmZpbmlzaFRva2VuKGUscC5TdWZmaXhPcGVyYXRvcikpOih0aGlzLnN0cmVhbS5uZXh0Q2hhcigpLHRoaXMuZmluaXNoVG9rZW4oZSxwLkRlbGltKSkpfXRyaXZpYSgpe2Zvcig7Oyl7Y29uc3QgZT10aGlzLnN0cmVhbS5wb3MoKTtpZih0aGlzLl93aGl0ZXNwYWNlKCkpe2lmKCF0aGlzLmlnbm9yZVdoaXRlc3BhY2UpcmV0dXJuIHRoaXMuZmluaXNoVG9rZW4oZSxwLldoaXRlc3BhY2UpfWVsc2UgaWYodGhpcy5jb21tZW50KCkpe2lmKCF0aGlzLmlnbm9yZUNvbW1lbnQpcmV0dXJuIHRoaXMuZmluaXNoVG9rZW4oZSxwLkNvbW1lbnQpfWVsc2UgcmV0dXJuIG51bGx9fWNvbW1lbnQoKXtpZih0aGlzLnN0cmVhbS5hZHZhbmNlSWZDaGFycyhbWG8sd2ldKSl7bGV0IGU9ITEsdD0hMTtyZXR1cm4gdGhpcy5zdHJlYW0uYWR2YW5jZVdoaWxlQ2hhcihuPT50JiZuPT09WG8/KGU9ITAsITEpOih0PW49PT13aSwhMCkpLGUmJnRoaXMuc3RyZWFtLmFkdmFuY2UoMSksITB9cmV0dXJuITF9X251bWJlcigpe2xldCBlPTAsdDtyZXR1cm4gdGhpcy5zdHJlYW0ucGVla0NoYXIoKT09PUtvJiYoZT0xKSx0PXRoaXMuc3RyZWFtLnBlZWtDaGFyKGUpLHQ+PWduJiZ0PD1ibj8odGhpcy5zdHJlYW0uYWR2YW5jZShlKzEpLHRoaXMuc3RyZWFtLmFkdmFuY2VXaGlsZUNoYXIobj0+bj49Z24mJm48PWJufHxlPT09MCYmbj09PUtvKSwhMCk6ITF9X25ld2xpbmUoZSl7Y29uc3QgdD10aGlzLnN0cmVhbS5wZWVrQ2hhcigpO3N3aXRjaCh0KXtjYXNlIEJ0OmNhc2Ugd246Y2FzZSAkdDpyZXR1cm4gdGhpcy5zdHJlYW0uYWR2YW5jZSgxKSxlLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZSh0KSksdD09PUJ0JiZ0aGlzLnN0cmVhbS5hZHZhbmNlSWZDaGFyKCR0KSYmZS5wdXNoKGAKYCksITB9cmV0dXJuITF9X2VzY2FwZShlLHQpe2xldCBuPXRoaXMuc3RyZWFtLnBlZWtDaGFyKCk7aWYobj09PXlpKXt0aGlzLnN0cmVhbS5hZHZhbmNlKDEpLG49dGhpcy5zdHJlYW0ucGVla0NoYXIoKTtsZXQgcj0wO2Zvcig7cjw2JiYobj49Z24mJm48PWJufHxuPj1lciYmbjw9JG98fG4+PXRyJiZuPD1xbyk7KXRoaXMuc3RyZWFtLmFkdmFuY2UoMSksbj10aGlzLnN0cmVhbS5wZWVrQ2hhcigpLHIrKztpZihyPjApe3RyeXtjb25zdCBpPXBhcnNlSW50KHRoaXMuc3RyZWFtLnN1YnN0cmluZyh0aGlzLnN0cmVhbS5wb3MoKS1yKSwxNik7aSYmZS5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUoaSkpfWNhdGNoe31yZXR1cm4gbj09PXhpfHxuPT09U2k/dGhpcy5zdHJlYW0uYWR2YW5jZSgxKTp0aGlzLl9uZXdsaW5lKFtdKSwhMH1pZihuIT09QnQmJm4hPT13biYmbiE9PSR0KXJldHVybiB0aGlzLnN0cmVhbS5hZHZhbmNlKDEpLGUucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKG4pKSwhMDtpZih0KXJldHVybiB0aGlzLl9uZXdsaW5lKGUpfXJldHVybiExfV9zdHJpbmdDaGFyKGUsdCl7Y29uc3Qgbj10aGlzLnN0cmVhbS5wZWVrQ2hhcigpO3JldHVybiBuIT09MCYmbiE9PWUmJm4hPT15aSYmbiE9PUJ0JiZuIT09d24mJm4hPT0kdD8odGhpcy5zdHJlYW0uYWR2YW5jZSgxKSx0LnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZShuKSksITApOiExfV9zdHJpbmcoZSl7aWYodGhpcy5zdHJlYW0ucGVla0NoYXIoKT09PVFvfHx0aGlzLnN0cmVhbS5wZWVrQ2hhcigpPT09WW8pe2NvbnN0IHQ9dGhpcy5zdHJlYW0ubmV4dENoYXIoKTtmb3IoZS5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUodCkpO3RoaXMuX3N0cmluZ0NoYXIodCxlKXx8dGhpcy5fZXNjYXBlKGUsITApOyk7cmV0dXJuIHRoaXMuc3RyZWFtLnBlZWtDaGFyKCk9PT10Pyh0aGlzLnN0cmVhbS5uZXh0Q2hhcigpLGUucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKHQpKSxwLlN0cmluZyk6cC5CYWRTdHJpbmd9cmV0dXJuIG51bGx9X3VucXVvdGVkQ2hhcihlKXtjb25zdCB0PXRoaXMuc3RyZWFtLnBlZWtDaGFyKCk7cmV0dXJuIHQhPT0wJiZ0IT09eWkmJnQhPT1RbyYmdCE9PVlvJiZ0IT09R28mJnQhPT1KbyYmdCE9PXhpJiZ0IT09U2kmJnQhPT0kdCYmdCE9PXduJiZ0IT09QnQ/KHRoaXMuc3RyZWFtLmFkdmFuY2UoMSksZS5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUodCkpLCEwKTohMX1fdW5xdW90ZWRTdHJpbmcoZSl7bGV0IHQ9ITE7Zm9yKDt0aGlzLl91bnF1b3RlZENoYXIoZSl8fHRoaXMuX2VzY2FwZShlKTspdD0hMDtyZXR1cm4gdH1fd2hpdGVzcGFjZSgpe3JldHVybiB0aGlzLnN0cmVhbS5hZHZhbmNlV2hpbGVDaGFyKHQ9PnQ9PT14aXx8dD09PVNpfHx0PT09JHR8fHQ9PT13bnx8dD09PUJ0KT4wfV9uYW1lKGUpe2xldCB0PSExO2Zvcig7dGhpcy5faWRlbnRDaGFyKGUpfHx0aGlzLl9lc2NhcGUoZSk7KXQ9ITA7cmV0dXJuIHR9aWRlbnQoZSl7Y29uc3QgdD10aGlzLnN0cmVhbS5wb3MoKTtpZih0aGlzLl9taW51cyhlKSl7aWYodGhpcy5fbWludXMoZSl8fHRoaXMuX2lkZW50Rmlyc3RDaGFyKGUpfHx0aGlzLl9lc2NhcGUoZSkpe2Zvcig7dGhpcy5faWRlbnRDaGFyKGUpfHx0aGlzLl9lc2NhcGUoZSk7KTtyZXR1cm4hMH19ZWxzZSBpZih0aGlzLl9pZGVudEZpcnN0Q2hhcihlKXx8dGhpcy5fZXNjYXBlKGUpKXtmb3IoO3RoaXMuX2lkZW50Q2hhcihlKXx8dGhpcy5fZXNjYXBlKGUpOyk7cmV0dXJuITB9cmV0dXJuIHRoaXMuc3RyZWFtLmdvQmFja1RvKHQpLCExfV9pZGVudEZpcnN0Q2hhcihlKXtjb25zdCB0PXRoaXMuc3RyZWFtLnBlZWtDaGFyKCk7cmV0dXJuIHQ9PT1Ib3x8dD49ZXImJnQ8PUJvfHx0Pj10ciYmdDw9am98fHQ+PTEyOCYmdDw9NjU1MzU/KHRoaXMuc3RyZWFtLmFkdmFuY2UoMSksZS5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUodCkpLCEwKTohMX1fbWludXMoZSl7Y29uc3QgdD10aGlzLnN0cmVhbS5wZWVrQ2hhcigpO3JldHVybiB0PT09U3Q/KHRoaXMuc3RyZWFtLmFkdmFuY2UoMSksZS5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUodCkpLCEwKTohMX1faWRlbnRDaGFyKGUpe2NvbnN0IHQ9dGhpcy5zdHJlYW0ucGVla0NoYXIoKTtyZXR1cm4gdD09PUhvfHx0PT09U3R8fHQ+PWVyJiZ0PD1Cb3x8dD49dHImJnQ8PWpvfHx0Pj1nbiYmdDw9Ym58fHQ+PTEyOCYmdDw9NjU1MzU/KHRoaXMuc3RyZWFtLmFkdmFuY2UoMSksZS5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUodCkpLCEwKTohMX1fdW5pY29kZVJhbmdlKCl7aWYodGhpcy5zdHJlYW0uYWR2YW5jZUlmQ2hhcihKdSkpe2NvbnN0IGU9bj0+bj49Z24mJm48PWJufHxuPj1lciYmbjw9JG98fG4+PXRyJiZuPD1xbyx0PXRoaXMuc3RyZWFtLmFkdmFuY2VXaGlsZUNoYXIoZSkrdGhpcy5zdHJlYW0uYWR2YW5jZVdoaWxlQ2hhcihuPT5uPT09R3UpO2lmKHQ+PTEmJnQ8PTYpaWYodGhpcy5zdHJlYW0uYWR2YW5jZUlmQ2hhcihTdCkpe2NvbnN0IG49dGhpcy5zdHJlYW0uYWR2YW5jZVdoaWxlQ2hhcihlKTtpZihuPj0xJiZuPD02KXJldHVybiEwfWVsc2UgcmV0dXJuITB9cmV0dXJuITF9fTtmdW5jdGlvbiB1ZShlLHQpe2lmKGUubGVuZ3RoPHQubGVuZ3RoKXJldHVybiExO2ZvcihsZXQgbj0wO248dC5sZW5ndGg7bisrKWlmKGVbbl0hPT10W25dKXJldHVybiExO3JldHVybiEwfWZ1bmN0aW9uIGVsKGUsdCl7bGV0IG49ZS5sZW5ndGgtdC5sZW5ndGg7cmV0dXJuIG4+MD9lLmxhc3RJbmRleE9mKHQpPT09bjpuPT09MD9lPT09dDohMX1mdW5jdGlvbiBYdShlLHQsbj00KXtsZXQgcj1NYXRoLmFicyhlLmxlbmd0aC10Lmxlbmd0aCk7aWYocj5uKXJldHVybiAwO2xldCBpPVtdLHM9W10sYSxsO2ZvcihhPTA7YTx0Lmxlbmd0aCsxOysrYSlzLnB1c2goMCk7Zm9yKGE9MDthPGUubGVuZ3RoKzE7KythKWkucHVzaChzKTtmb3IoYT0xO2E8ZS5sZW5ndGgrMTsrK2EpZm9yKGw9MTtsPHQubGVuZ3RoKzE7KytsKWVbYS0xXT09PXRbbC0xXT9pW2FdW2xdPWlbYS0xXVtsLTFdKzE6aVthXVtsXT1NYXRoLm1heChpW2EtMV1bbF0saVthXVtsLTFdKTtyZXR1cm4gaVtlLmxlbmd0aF1bdC5sZW5ndGhdLU1hdGguc3FydChyKX1mdW5jdGlvbiB0bChlLHQ9ITApe3JldHVybiBlP2UubGVuZ3RoPDE0MD9lOmUuc2xpY2UoMCwxNDApKyh0PyLigKYiOiIiKToiIn1mdW5jdGlvbiBZdShlLHQpe2NvbnN0IG49dC5leGVjKGUpO3JldHVybiBuJiZuWzBdLmxlbmd0aD9lLnN1YnN0cigwLGUubGVuZ3RoLW5bMF0ubGVuZ3RoKTplfWZ1bmN0aW9uIG5sKGUsdCl7bGV0IG49IiI7Zm9yKDt0PjA7KSh0JjEpPT09MSYmKG4rPWUpLGUrPWUsdD10Pj4+MTtyZXR1cm4gbn12YXIgYjsoZnVuY3Rpb24oZSl7ZVtlLlVuZGVmaW5lZD0wXT0iVW5kZWZpbmVkIixlW2UuSWRlbnRpZmllcj0xXT0iSWRlbnRpZmllciIsZVtlLlN0eWxlc2hlZXQ9Ml09IlN0eWxlc2hlZXQiLGVbZS5SdWxlc2V0PTNdPSJSdWxlc2V0IixlW2UuU2VsZWN0b3I9NF09IlNlbGVjdG9yIixlW2UuU2ltcGxlU2VsZWN0b3I9NV09IlNpbXBsZVNlbGVjdG9yIixlW2UuU2VsZWN0b3JJbnRlcnBvbGF0aW9uPTZdPSJTZWxlY3RvckludGVycG9sYXRpb24iLGVbZS5TZWxlY3RvckNvbWJpbmF0b3I9N109IlNlbGVjdG9yQ29tYmluYXRvciIsZVtlLlNlbGVjdG9yQ29tYmluYXRvclBhcmVudD04XT0iU2VsZWN0b3JDb21iaW5hdG9yUGFyZW50IixlW2UuU2VsZWN0b3JDb21iaW5hdG9yU2libGluZz05XT0iU2VsZWN0b3JDb21iaW5hdG9yU2libGluZyIsZVtlLlNlbGVjdG9yQ29tYmluYXRvckFsbFNpYmxpbmdzPTEwXT0iU2VsZWN0b3JDb21iaW5hdG9yQWxsU2libGluZ3MiLGVbZS5TZWxlY3RvckNvbWJpbmF0b3JTaGFkb3dQaWVyY2luZ0Rlc2NlbmRhbnQ9MTFdPSJTZWxlY3RvckNvbWJpbmF0b3JTaGFkb3dQaWVyY2luZ0Rlc2NlbmRhbnQiLGVbZS5QYWdlPTEyXT0iUGFnZSIsZVtlLlBhZ2VCb3hNYXJnaW5Cb3g9MTNdPSJQYWdlQm94TWFyZ2luQm94IixlW2UuQ2xhc3NTZWxlY3Rvcj0xNF09IkNsYXNzU2VsZWN0b3IiLGVbZS5JZGVudGlmaWVyU2VsZWN0b3I9MTVdPSJJZGVudGlmaWVyU2VsZWN0b3IiLGVbZS5FbGVtZW50TmFtZVNlbGVjdG9yPTE2XT0iRWxlbWVudE5hbWVTZWxlY3RvciIsZVtlLlBzZXVkb1NlbGVjdG9yPTE3XT0iUHNldWRvU2VsZWN0b3IiLGVbZS5BdHRyaWJ1dGVTZWxlY3Rvcj0xOF09IkF0dHJpYnV0ZVNlbGVjdG9yIixlW2UuRGVjbGFyYXRpb249MTldPSJEZWNsYXJhdGlvbiIsZVtlLkRlY2xhcmF0aW9ucz0yMF09IkRlY2xhcmF0aW9ucyIsZVtlLlByb3BlcnR5PTIxXT0iUHJvcGVydHkiLGVbZS5FeHByZXNzaW9uPTIyXT0iRXhwcmVzc2lvbiIsZVtlLkJpbmFyeUV4cHJlc3Npb249MjNdPSJCaW5hcnlFeHByZXNzaW9uIixlW2UuVGVybT0yNF09IlRlcm0iLGVbZS5PcGVyYXRvcj0yNV09Ik9wZXJhdG9yIixlW2UuVmFsdWU9MjZdPSJWYWx1ZSIsZVtlLlN0cmluZ0xpdGVyYWw9MjddPSJTdHJpbmdMaXRlcmFsIixlW2UuVVJJTGl0ZXJhbD0yOF09IlVSSUxpdGVyYWwiLGVbZS5Fc2NhcGVkVmFsdWU9MjldPSJFc2NhcGVkVmFsdWUiLGVbZS5GdW5jdGlvbj0zMF09IkZ1bmN0aW9uIixlW2UuTnVtZXJpY1ZhbHVlPTMxXT0iTnVtZXJpY1ZhbHVlIixlW2UuSGV4Q29sb3JWYWx1ZT0zMl09IkhleENvbG9yVmFsdWUiLGVbZS5SYXRpb1ZhbHVlPTMzXT0iUmF0aW9WYWx1ZSIsZVtlLk1peGluRGVjbGFyYXRpb249MzRdPSJNaXhpbkRlY2xhcmF0aW9uIixlW2UuTWl4aW5SZWZlcmVuY2U9MzVdPSJNaXhpblJlZmVyZW5jZSIsZVtlLlZhcmlhYmxlTmFtZT0zNl09IlZhcmlhYmxlTmFtZSIsZVtlLlZhcmlhYmxlRGVjbGFyYXRpb249MzddPSJWYXJpYWJsZURlY2xhcmF0aW9uIixlW2UuUHJpbz0zOF09IlByaW8iLGVbZS5JbnRlcnBvbGF0aW9uPTM5XT0iSW50ZXJwb2xhdGlvbiIsZVtlLk5lc3RlZFByb3BlcnRpZXM9NDBdPSJOZXN0ZWRQcm9wZXJ0aWVzIixlW2UuRXh0ZW5kc1JlZmVyZW5jZT00MV09IkV4dGVuZHNSZWZlcmVuY2UiLGVbZS5TZWxlY3RvclBsYWNlaG9sZGVyPTQyXT0iU2VsZWN0b3JQbGFjZWhvbGRlciIsZVtlLkRlYnVnPTQzXT0iRGVidWciLGVbZS5JZj00NF09IklmIixlW2UuRWxzZT00NV09IkVsc2UiLGVbZS5Gb3I9NDZdPSJGb3IiLGVbZS5FYWNoPTQ3XT0iRWFjaCIsZVtlLldoaWxlPTQ4XT0iV2hpbGUiLGVbZS5NaXhpbkNvbnRlbnRSZWZlcmVuY2U9NDldPSJNaXhpbkNvbnRlbnRSZWZlcmVuY2UiLGVbZS5NaXhpbkNvbnRlbnREZWNsYXJhdGlvbj01MF09Ik1peGluQ29udGVudERlY2xhcmF0aW9uIixlW2UuTWVkaWE9NTFdPSJNZWRpYSIsZVtlLktleWZyYW1lPTUyXT0iS2V5ZnJhbWUiLGVbZS5Gb250RmFjZT01M109IkZvbnRGYWNlIixlW2UuSW1wb3J0PTU0XT0iSW1wb3J0IixlW2UuTmFtZXNwYWNlPTU1XT0iTmFtZXNwYWNlIixlW2UuSW52b2NhdGlvbj01Nl09Ikludm9jYXRpb24iLGVbZS5GdW5jdGlvbkRlY2xhcmF0aW9uPTU3XT0iRnVuY3Rpb25EZWNsYXJhdGlvbiIsZVtlLlJldHVyblN0YXRlbWVudD01OF09IlJldHVyblN0YXRlbWVudCIsZVtlLk1lZGlhUXVlcnk9NTldPSJNZWRpYVF1ZXJ5IixlW2UuTWVkaWFDb25kaXRpb249NjBdPSJNZWRpYUNvbmRpdGlvbiIsZVtlLk1lZGlhRmVhdHVyZT02MV09Ik1lZGlhRmVhdHVyZSIsZVtlLkZ1bmN0aW9uUGFyYW1ldGVyPTYyXT0iRnVuY3Rpb25QYXJhbWV0ZXIiLGVbZS5GdW5jdGlvbkFyZ3VtZW50PTYzXT0iRnVuY3Rpb25Bcmd1bWVudCIsZVtlLktleWZyYW1lU2VsZWN0b3I9NjRdPSJLZXlmcmFtZVNlbGVjdG9yIixlW2UuVmlld1BvcnQ9NjVdPSJWaWV3UG9ydCIsZVtlLkRvY3VtZW50PTY2XT0iRG9jdW1lbnQiLGVbZS5BdEFwcGx5UnVsZT02N109IkF0QXBwbHlSdWxlIixlW2UuQ3VzdG9tUHJvcGVydHlEZWNsYXJhdGlvbj02OF09IkN1c3RvbVByb3BlcnR5RGVjbGFyYXRpb24iLGVbZS5DdXN0b21Qcm9wZXJ0eVNldD02OV09IkN1c3RvbVByb3BlcnR5U2V0IixlW2UuTGlzdEVudHJ5PTcwXT0iTGlzdEVudHJ5IixlW2UuU3VwcG9ydHM9NzFdPSJTdXBwb3J0cyIsZVtlLlN1cHBvcnRzQ29uZGl0aW9uPTcyXT0iU3VwcG9ydHNDb25kaXRpb24iLGVbZS5OYW1lc3BhY2VQcmVmaXg9NzNdPSJOYW1lc3BhY2VQcmVmaXgiLGVbZS5HcmlkTGluZT03NF09IkdyaWRMaW5lIixlW2UuUGx1Z2luPTc1XT0iUGx1Z2luIixlW2UuVW5rbm93bkF0UnVsZT03Nl09IlVua25vd25BdFJ1bGUiLGVbZS5Vc2U9NzddPSJVc2UiLGVbZS5Nb2R1bGVDb25maWd1cmF0aW9uPTc4XT0iTW9kdWxlQ29uZmlndXJhdGlvbiIsZVtlLkZvcndhcmQ9NzldPSJGb3J3YXJkIixlW2UuRm9yd2FyZFZpc2liaWxpdHk9ODBdPSJGb3J3YXJkVmlzaWJpbGl0eSIsZVtlLk1vZHVsZT04MV09Ik1vZHVsZSIsZVtlLlVuaWNvZGVSYW5nZT04Ml09IlVuaWNvZGVSYW5nZSIsZVtlLkxheWVyPTgzXT0iTGF5ZXIiLGVbZS5MYXllck5hbWVMaXN0PTg0XT0iTGF5ZXJOYW1lTGlzdCIsZVtlLkxheWVyTmFtZT04NV09IkxheWVyTmFtZSIsZVtlLlByb3BlcnR5QXRSdWxlPTg2XT0iUHJvcGVydHlBdFJ1bGUiLGVbZS5Db250YWluZXI9ODddPSJDb250YWluZXIifSkoYnx8KGI9e30pKTt2YXIgRzsoZnVuY3Rpb24oZSl7ZVtlLk1peGluPTBdPSJNaXhpbiIsZVtlLlJ1bGU9MV09IlJ1bGUiLGVbZS5WYXJpYWJsZT0yXT0iVmFyaWFibGUiLGVbZS5GdW5jdGlvbj0zXT0iRnVuY3Rpb24iLGVbZS5LZXlmcmFtZT00XT0iS2V5ZnJhbWUiLGVbZS5Vbmtub3duPTVdPSJVbmtub3duIixlW2UuTW9kdWxlPTZdPSJNb2R1bGUiLGVbZS5Gb3J3YXJkPTddPSJGb3J3YXJkIixlW2UuRm9yd2FyZFZpc2liaWxpdHk9OF09IkZvcndhcmRWaXNpYmlsaXR5IixlW2UuUHJvcGVydHk9OV09IlByb3BlcnR5In0pKEd8fChHPXt9KSk7ZnVuY3Rpb24gQ2koZSx0KXtsZXQgbj1udWxsO3JldHVybiFlfHx0PGUub2Zmc2V0fHx0PmUuZW5kP251bGw6KGUuYWNjZXB0KHI9PnIub2Zmc2V0PT09LTEmJnIubGVuZ3RoPT09LTE/ITA6ci5vZmZzZXQ8PXQmJnIuZW5kPj10PyhuP3IubGVuZ3RoPD1uLmxlbmd0aCYmKG49cik6bj1yLCEwKTohMSksbil9ZnVuY3Rpb24gX2koZSx0KXtsZXQgbj1DaShlLHQpO2NvbnN0IHI9W107Zm9yKDtuOylyLnVuc2hpZnQobiksbj1uLnBhcmVudDtyZXR1cm4gcn1mdW5jdGlvbiBRdShlKXtjb25zdCB0PWUuZmluZFBhcmVudChiLkRlY2xhcmF0aW9uKSxuPXQmJnQuZ2V0VmFsdWUoKTtyZXR1cm4gbiYmbi5lbmNsb3NlcyhlKT90Om51bGx9dmFyIE89Y2xhc3N7Z2V0IGVuZCgpe3JldHVybiB0aGlzLm9mZnNldCt0aGlzLmxlbmd0aH1jb25zdHJ1Y3RvcihlPS0xLHQ9LTEsbil7dGhpcy5wYXJlbnQ9bnVsbCx0aGlzLm9mZnNldD1lLHRoaXMubGVuZ3RoPXQsbiYmKHRoaXMubm9kZVR5cGU9bil9c2V0IHR5cGUoZSl7dGhpcy5ub2RlVHlwZT1lfWdldCB0eXBlKCl7cmV0dXJuIHRoaXMubm9kZVR5cGV8fGIuVW5kZWZpbmVkfWdldFRleHRQcm92aWRlcigpe2xldCBlPXRoaXM7Zm9yKDtlJiYhZS50ZXh0UHJvdmlkZXI7KWU9ZS5wYXJlbnQ7cmV0dXJuIGU/ZS50ZXh0UHJvdmlkZXI6KCk9PiJ1bmtub3duIn1nZXRUZXh0KCl7cmV0dXJuIHRoaXMuZ2V0VGV4dFByb3ZpZGVyKCkodGhpcy5vZmZzZXQsdGhpcy5sZW5ndGgpfW1hdGNoZXMoZSl7cmV0dXJuIHRoaXMubGVuZ3RoPT09ZS5sZW5ndGgmJnRoaXMuZ2V0VGV4dFByb3ZpZGVyKCkodGhpcy5vZmZzZXQsdGhpcy5sZW5ndGgpPT09ZX1zdGFydHNXaXRoKGUpe3JldHVybiB0aGlzLmxlbmd0aD49ZS5sZW5ndGgmJnRoaXMuZ2V0VGV4dFByb3ZpZGVyKCkodGhpcy5vZmZzZXQsZS5sZW5ndGgpPT09ZX1lbmRzV2l0aChlKXtyZXR1cm4gdGhpcy5sZW5ndGg+PWUubGVuZ3RoJiZ0aGlzLmdldFRleHRQcm92aWRlcigpKHRoaXMuZW5kLWUubGVuZ3RoLGUubGVuZ3RoKT09PWV9YWNjZXB0KGUpe2lmKGUodGhpcykmJnRoaXMuY2hpbGRyZW4pZm9yKGNvbnN0IHQgb2YgdGhpcy5jaGlsZHJlbil0LmFjY2VwdChlKX1hY2NlcHRWaXNpdG9yKGUpe3RoaXMuYWNjZXB0KGUudmlzaXROb2RlLmJpbmQoZSkpfWFkb3B0Q2hpbGQoZSx0PS0xKXtpZihlLnBhcmVudCYmZS5wYXJlbnQuY2hpbGRyZW4pe2NvbnN0IHI9ZS5wYXJlbnQuY2hpbGRyZW4uaW5kZXhPZihlKTtyPj0wJiZlLnBhcmVudC5jaGlsZHJlbi5zcGxpY2UociwxKX1lLnBhcmVudD10aGlzO2xldCBuPXRoaXMuY2hpbGRyZW47cmV0dXJuIG58fChuPXRoaXMuY2hpbGRyZW49W10pLHQhPT0tMT9uLnNwbGljZSh0LDAsZSk6bi5wdXNoKGUpLGV9YXR0YWNoVG8oZSx0PS0xKXtyZXR1cm4gZSYmZS5hZG9wdENoaWxkKHRoaXMsdCksdGhpc31jb2xsZWN0SXNzdWVzKGUpe3RoaXMuaXNzdWVzJiZlLnB1c2guYXBwbHkoZSx0aGlzLmlzc3Vlcyl9YWRkSXNzdWUoZSl7dGhpcy5pc3N1ZXN8fCh0aGlzLmlzc3Vlcz1bXSksdGhpcy5pc3N1ZXMucHVzaChlKX1oYXNJc3N1ZShlKXtyZXR1cm4gQXJyYXkuaXNBcnJheSh0aGlzLmlzc3VlcykmJnRoaXMuaXNzdWVzLnNvbWUodD0+dC5nZXRSdWxlKCk9PT1lKX1pc0Vycm9uZW91cyhlPSExKXtyZXR1cm4gdGhpcy5pc3N1ZXMmJnRoaXMuaXNzdWVzLmxlbmd0aD4wPyEwOmUmJkFycmF5LmlzQXJyYXkodGhpcy5jaGlsZHJlbikmJnRoaXMuY2hpbGRyZW4uc29tZSh0PT50LmlzRXJyb25lb3VzKCEwKSl9c2V0Tm9kZShlLHQsbj0tMSl7cmV0dXJuIHQ/KHQuYXR0YWNoVG8odGhpcyxuKSx0aGlzW2VdPXQsITApOiExfWFkZENoaWxkKGUpe3JldHVybiBlPyh0aGlzLmNoaWxkcmVufHwodGhpcy5jaGlsZHJlbj1bXSksZS5hdHRhY2hUbyh0aGlzKSx0aGlzLnVwZGF0ZU9mZnNldEFuZExlbmd0aChlKSwhMCk6ITF9dXBkYXRlT2Zmc2V0QW5kTGVuZ3RoKGUpeyhlLm9mZnNldDx0aGlzLm9mZnNldHx8dGhpcy5vZmZzZXQ9PT0tMSkmJih0aGlzLm9mZnNldD1lLm9mZnNldCk7Y29uc3QgdD1lLmVuZDsodD50aGlzLmVuZHx8dGhpcy5sZW5ndGg9PT0tMSkmJih0aGlzLmxlbmd0aD10LXRoaXMub2Zmc2V0KX1oYXNDaGlsZHJlbigpe3JldHVybiEhdGhpcy5jaGlsZHJlbiYmdGhpcy5jaGlsZHJlbi5sZW5ndGg+MH1nZXRDaGlsZHJlbigpe3JldHVybiB0aGlzLmNoaWxkcmVuP3RoaXMuY2hpbGRyZW4uc2xpY2UoMCk6W119Z2V0Q2hpbGQoZSl7cmV0dXJuIHRoaXMuY2hpbGRyZW4mJmU8dGhpcy5jaGlsZHJlbi5sZW5ndGg/dGhpcy5jaGlsZHJlbltlXTpudWxsfWFkZENoaWxkcmVuKGUpe2Zvcihjb25zdCB0IG9mIGUpdGhpcy5hZGRDaGlsZCh0KX1maW5kRmlyc3RDaGlsZEJlZm9yZU9mZnNldChlKXtpZih0aGlzLmNoaWxkcmVuKXtsZXQgdD1udWxsO2ZvcihsZXQgbj10aGlzLmNoaWxkcmVuLmxlbmd0aC0xO24+PTA7bi0tKWlmKHQ9dGhpcy5jaGlsZHJlbltuXSx0Lm9mZnNldDw9ZSlyZXR1cm4gdH1yZXR1cm4gbnVsbH1maW5kQ2hpbGRBdE9mZnNldChlLHQpe2NvbnN0IG49dGhpcy5maW5kRmlyc3RDaGlsZEJlZm9yZU9mZnNldChlKTtyZXR1cm4gbiYmbi5lbmQ+PWU/dCYmbi5maW5kQ2hpbGRBdE9mZnNldChlLCEwKXx8bjpudWxsfWVuY2xvc2VzKGUpe3JldHVybiB0aGlzLm9mZnNldDw9ZS5vZmZzZXQmJnRoaXMub2Zmc2V0K3RoaXMubGVuZ3RoPj1lLm9mZnNldCtlLmxlbmd0aH1nZXRQYXJlbnQoKXtsZXQgZT10aGlzLnBhcmVudDtmb3IoO2UgaW5zdGFuY2VvZiBiZTspZT1lLnBhcmVudDtyZXR1cm4gZX1maW5kUGFyZW50KGUpe2xldCB0PXRoaXM7Zm9yKDt0JiZ0LnR5cGUhPT1lOyl0PXQucGFyZW50O3JldHVybiB0fWZpbmRBUGFyZW50KC4uLmUpe2xldCB0PXRoaXM7Zm9yKDt0JiYhZS5zb21lKG49PnQudHlwZT09PW4pOyl0PXQucGFyZW50O3JldHVybiB0fXNldERhdGEoZSx0KXt0aGlzLm9wdGlvbnN8fCh0aGlzLm9wdGlvbnM9e30pLHRoaXMub3B0aW9uc1tlXT10fWdldERhdGEoZSl7cmV0dXJuIXRoaXMub3B0aW9uc3x8IXRoaXMub3B0aW9ucy5oYXNPd25Qcm9wZXJ0eShlKT9udWxsOnRoaXMub3B0aW9uc1tlXX19LGJlPWNsYXNzIGV4dGVuZHMgT3tjb25zdHJ1Y3RvcihlLHQ9LTEpe3N1cGVyKC0xLC0xKSx0aGlzLmF0dGFjaFRvKGUsdCksdGhpcy5vZmZzZXQ9LTEsdGhpcy5sZW5ndGg9LTF9fSxLdT1jbGFzcyBleHRlbmRzIE97Y29uc3RydWN0b3IoZSx0KXtzdXBlcihlLHQpfWdldCB0eXBlKCl7cmV0dXJuIGIuVW5pY29kZVJhbmdlfXNldFJhbmdlU3RhcnQoZSl7cmV0dXJuIHRoaXMuc2V0Tm9kZSgicmFuZ2VTdGFydCIsZSl9Z2V0UmFuZ2VTdGFydCgpe3JldHVybiB0aGlzLnJhbmdlU3RhcnR9c2V0UmFuZ2VFbmQoZSl7cmV0dXJuIHRoaXMuc2V0Tm9kZSgicmFuZ2VFbmQiLGUpfWdldFJhbmdlRW5kKCl7cmV0dXJuIHRoaXMucmFuZ2VFbmR9fSxJZT1jbGFzcyBleHRlbmRzIE97Y29uc3RydWN0b3IoZSx0KXtzdXBlcihlLHQpLHRoaXMuaXNDdXN0b21Qcm9wZXJ0eT0hMX1nZXQgdHlwZSgpe3JldHVybiBiLklkZW50aWZpZXJ9Y29udGFpbnNJbnRlcnBvbGF0aW9uKCl7cmV0dXJuIHRoaXMuaGFzQ2hpbGRyZW4oKX19LFp1PWNsYXNzIGV4dGVuZHMgT3tjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKGUsdCl9Z2V0IHR5cGUoKXtyZXR1cm4gYi5TdHlsZXNoZWV0fX0sa2k9Y2xhc3MgZXh0ZW5kcyBPe2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIoZSx0KX1nZXQgdHlwZSgpe3JldHVybiBiLkRlY2xhcmF0aW9uc319LHNlPWNsYXNzIGV4dGVuZHMgT3tjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKGUsdCl9Z2V0RGVjbGFyYXRpb25zKCl7cmV0dXJuIHRoaXMuZGVjbGFyYXRpb25zfXNldERlY2xhcmF0aW9ucyhlKXtyZXR1cm4gdGhpcy5zZXROb2RlKCJkZWNsYXJhdGlvbnMiLGUpfX0sQ3Q9Y2xhc3MgZXh0ZW5kcyBzZXtjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKGUsdCl9Z2V0IHR5cGUoKXtyZXR1cm4gYi5SdWxlc2V0fWdldFNlbGVjdG9ycygpe3JldHVybiB0aGlzLnNlbGVjdG9yc3x8KHRoaXMuc2VsZWN0b3JzPW5ldyBiZSh0aGlzKSksdGhpcy5zZWxlY3RvcnN9aXNOZXN0ZWQoKXtyZXR1cm4hIXRoaXMucGFyZW50JiZ0aGlzLnBhcmVudC5maW5kUGFyZW50KGIuRGVjbGFyYXRpb25zKSE9PW51bGx9fSx4bj1jbGFzcyBleHRlbmRzIE97Y29uc3RydWN0b3IoZSx0KXtzdXBlcihlLHQpfWdldCB0eXBlKCl7cmV0dXJuIGIuU2VsZWN0b3J9fSxxdD1jbGFzcyBleHRlbmRzIE97Y29uc3RydWN0b3IoZSx0KXtzdXBlcihlLHQpfWdldCB0eXBlKCl7cmV0dXJuIGIuU2ltcGxlU2VsZWN0b3J9fSxFaT1jbGFzcyBleHRlbmRzIE97Y29uc3RydWN0b3IoZSx0KXtzdXBlcihlLHQpfX0sZXA9Y2xhc3MgZXh0ZW5kcyBzZXtjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKGUsdCl9Z2V0IHR5cGUoKXtyZXR1cm4gYi5DdXN0b21Qcm9wZXJ0eVNldH19LFVlPWNsYXNzIHRoIGV4dGVuZHMgRWl7Y29uc3RydWN0b3IodCxuKXtzdXBlcih0LG4pLHRoaXMucHJvcGVydHk9bnVsbH1nZXQgdHlwZSgpe3JldHVybiBiLkRlY2xhcmF0aW9ufXNldFByb3BlcnR5KHQpe3JldHVybiB0aGlzLnNldE5vZGUoInByb3BlcnR5Iix0KX1nZXRQcm9wZXJ0eSgpe3JldHVybiB0aGlzLnByb3BlcnR5fWdldEZ1bGxQcm9wZXJ0eU5hbWUoKXtjb25zdCB0PXRoaXMucHJvcGVydHk/dGhpcy5wcm9wZXJ0eS5nZXROYW1lKCk6InVua25vd24iO2lmKHRoaXMucGFyZW50IGluc3RhbmNlb2Yga2kmJnRoaXMucGFyZW50LmdldFBhcmVudCgpaW5zdGFuY2VvZiBpbCl7Y29uc3Qgbj10aGlzLnBhcmVudC5nZXRQYXJlbnQoKS5nZXRQYXJlbnQoKTtpZihuIGluc3RhbmNlb2YgdGgpcmV0dXJuIG4uZ2V0RnVsbFByb3BlcnR5TmFtZSgpK3R9cmV0dXJuIHR9Z2V0Tm9uUHJlZml4ZWRQcm9wZXJ0eU5hbWUoKXtjb25zdCB0PXRoaXMuZ2V0RnVsbFByb3BlcnR5TmFtZSgpO2lmKHQmJnQuY2hhckF0KDApPT09Ii0iKXtjb25zdCBuPXQuaW5kZXhPZigiLSIsMSk7aWYobiE9PS0xKXJldHVybiB0LnN1YnN0cmluZyhuKzEpfXJldHVybiB0fXNldFZhbHVlKHQpe3JldHVybiB0aGlzLnNldE5vZGUoInZhbHVlIix0KX1nZXRWYWx1ZSgpe3JldHVybiB0aGlzLnZhbHVlfXNldE5lc3RlZFByb3BlcnRpZXModCl7cmV0dXJuIHRoaXMuc2V0Tm9kZSgibmVzdGVkUHJvcGVydGllcyIsdCl9Z2V0TmVzdGVkUHJvcGVydGllcygpe3JldHVybiB0aGlzLm5lc3RlZFByb3BlcnRpZXN9fSx0cD1jbGFzcyBleHRlbmRzIFVle2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIoZSx0KX1nZXQgdHlwZSgpe3JldHVybiBiLkN1c3RvbVByb3BlcnR5RGVjbGFyYXRpb259c2V0UHJvcGVydHlTZXQoZSl7cmV0dXJuIHRoaXMuc2V0Tm9kZSgicHJvcGVydHlTZXQiLGUpfWdldFByb3BlcnR5U2V0KCl7cmV0dXJuIHRoaXMucHJvcGVydHlTZXR9fSxGaT1jbGFzcyBleHRlbmRzIE97Y29uc3RydWN0b3IoZSx0KXtzdXBlcihlLHQpfWdldCB0eXBlKCl7cmV0dXJuIGIuUHJvcGVydHl9c2V0SWRlbnRpZmllcihlKXtyZXR1cm4gdGhpcy5zZXROb2RlKCJpZGVudGlmaWVyIixlKX1nZXRJZGVudGlmaWVyKCl7cmV0dXJuIHRoaXMuaWRlbnRpZmllcn1nZXROYW1lKCl7cmV0dXJuIFl1KHRoaXMuZ2V0VGV4dCgpLC9bX1wrXSskLyl9aXNDdXN0b21Qcm9wZXJ0eSgpe3JldHVybiEhdGhpcy5pZGVudGlmaWVyJiZ0aGlzLmlkZW50aWZpZXIuaXNDdXN0b21Qcm9wZXJ0eX19LG5wPWNsYXNzIGV4dGVuZHMgT3tjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKGUsdCl9Z2V0IHR5cGUoKXtyZXR1cm4gYi5JbnZvY2F0aW9ufWdldEFyZ3VtZW50cygpe3JldHVybiB0aGlzLmFyZ3VtZW50c3x8KHRoaXMuYXJndW1lbnRzPW5ldyBiZSh0aGlzKSksdGhpcy5hcmd1bWVudHN9fSxTbj1jbGFzcyBleHRlbmRzIG5we2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIoZSx0KX1nZXQgdHlwZSgpe3JldHVybiBiLkZ1bmN0aW9ufXNldElkZW50aWZpZXIoZSl7cmV0dXJuIHRoaXMuc2V0Tm9kZSgiaWRlbnRpZmllciIsZSwwKX1nZXRJZGVudGlmaWVyKCl7cmV0dXJuIHRoaXMuaWRlbnRpZmllcn1nZXROYW1lKCl7cmV0dXJuIHRoaXMuaWRlbnRpZmllcj90aGlzLmlkZW50aWZpZXIuZ2V0VGV4dCgpOiIifX0sbnI9Y2xhc3MgZXh0ZW5kcyBPe2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIoZSx0KX1nZXQgdHlwZSgpe3JldHVybiBiLkZ1bmN0aW9uUGFyYW1ldGVyfXNldElkZW50aWZpZXIoZSl7cmV0dXJuIHRoaXMuc2V0Tm9kZSgiaWRlbnRpZmllciIsZSwwKX1nZXRJZGVudGlmaWVyKCl7cmV0dXJuIHRoaXMuaWRlbnRpZmllcn1nZXROYW1lKCl7cmV0dXJuIHRoaXMuaWRlbnRpZmllcj90aGlzLmlkZW50aWZpZXIuZ2V0VGV4dCgpOiIifXNldERlZmF1bHRWYWx1ZShlKXtyZXR1cm4gdGhpcy5zZXROb2RlKCJkZWZhdWx0VmFsdWUiLGUsMCl9Z2V0RGVmYXVsdFZhbHVlKCl7cmV0dXJuIHRoaXMuZGVmYXVsdFZhbHVlfX0sanQ9Y2xhc3MgZXh0ZW5kcyBPe2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIoZSx0KX1nZXQgdHlwZSgpe3JldHVybiBiLkZ1bmN0aW9uQXJndW1lbnR9c2V0SWRlbnRpZmllcihlKXtyZXR1cm4gdGhpcy5zZXROb2RlKCJpZGVudGlmaWVyIixlLDApfWdldElkZW50aWZpZXIoKXtyZXR1cm4gdGhpcy5pZGVudGlmaWVyfWdldE5hbWUoKXtyZXR1cm4gdGhpcy5pZGVudGlmaWVyP3RoaXMuaWRlbnRpZmllci5nZXRUZXh0KCk6IiJ9c2V0VmFsdWUoZSl7cmV0dXJuIHRoaXMuc2V0Tm9kZSgidmFsdWUiLGUsMCl9Z2V0VmFsdWUoKXtyZXR1cm4gdGhpcy52YWx1ZX19LHJwPWNsYXNzIGV4dGVuZHMgc2V7Y29uc3RydWN0b3IoZSx0KXtzdXBlcihlLHQpfWdldCB0eXBlKCl7cmV0dXJuIGIuSWZ9c2V0RXhwcmVzc2lvbihlKXtyZXR1cm4gdGhpcy5zZXROb2RlKCJleHByZXNzaW9uIixlLDApfXNldEVsc2VDbGF1c2UoZSl7cmV0dXJuIHRoaXMuc2V0Tm9kZSgiZWxzZUNsYXVzZSIsZSl9fSxpcD1jbGFzcyBleHRlbmRzIHNle2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIoZSx0KX1nZXQgdHlwZSgpe3JldHVybiBiLkZvcn1zZXRWYXJpYWJsZShlKXtyZXR1cm4gdGhpcy5zZXROb2RlKCJ2YXJpYWJsZSIsZSwwKX19LHNwPWNsYXNzIGV4dGVuZHMgc2V7Y29uc3RydWN0b3IoZSx0KXtzdXBlcihlLHQpfWdldCB0eXBlKCl7cmV0dXJuIGIuRWFjaH1nZXRWYXJpYWJsZXMoKXtyZXR1cm4gdGhpcy52YXJpYWJsZXN8fCh0aGlzLnZhcmlhYmxlcz1uZXcgYmUodGhpcykpLHRoaXMudmFyaWFibGVzfX0sYXA9Y2xhc3MgZXh0ZW5kcyBzZXtjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKGUsdCl9Z2V0IHR5cGUoKXtyZXR1cm4gYi5XaGlsZX19LG9wPWNsYXNzIGV4dGVuZHMgc2V7Y29uc3RydWN0b3IoZSx0KXtzdXBlcihlLHQpfWdldCB0eXBlKCl7cmV0dXJuIGIuRWxzZX19LHJyPWNsYXNzIGV4dGVuZHMgc2V7Y29uc3RydWN0b3IoZSx0KXtzdXBlcihlLHQpfWdldCB0eXBlKCl7cmV0dXJuIGIuRnVuY3Rpb25EZWNsYXJhdGlvbn1zZXRJZGVudGlmaWVyKGUpe3JldHVybiB0aGlzLnNldE5vZGUoImlkZW50aWZpZXIiLGUsMCl9Z2V0SWRlbnRpZmllcigpe3JldHVybiB0aGlzLmlkZW50aWZpZXJ9Z2V0TmFtZSgpe3JldHVybiB0aGlzLmlkZW50aWZpZXI/dGhpcy5pZGVudGlmaWVyLmdldFRleHQoKToiIn1nZXRQYXJhbWV0ZXJzKCl7cmV0dXJuIHRoaXMucGFyYW1ldGVyc3x8KHRoaXMucGFyYW1ldGVycz1uZXcgYmUodGhpcykpLHRoaXMucGFyYW1ldGVyc319LGxwPWNsYXNzIGV4dGVuZHMgc2V7Y29uc3RydWN0b3IoZSx0KXtzdXBlcihlLHQpfWdldCB0eXBlKCl7cmV0dXJuIGIuVmlld1BvcnR9fSxybD1jbGFzcyBleHRlbmRzIHNle2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIoZSx0KX1nZXQgdHlwZSgpe3JldHVybiBiLkZvbnRGYWNlfX0saWw9Y2xhc3MgZXh0ZW5kcyBzZXtjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKGUsdCl9Z2V0IHR5cGUoKXtyZXR1cm4gYi5OZXN0ZWRQcm9wZXJ0aWVzfX0sc2w9Y2xhc3MgZXh0ZW5kcyBzZXtjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKGUsdCl9Z2V0IHR5cGUoKXtyZXR1cm4gYi5LZXlmcmFtZX1zZXRLZXl3b3JkKGUpe3JldHVybiB0aGlzLnNldE5vZGUoImtleXdvcmQiLGUsMCl9Z2V0S2V5d29yZCgpe3JldHVybiB0aGlzLmtleXdvcmR9c2V0SWRlbnRpZmllcihlKXtyZXR1cm4gdGhpcy5zZXROb2RlKCJpZGVudGlmaWVyIixlLDApfWdldElkZW50aWZpZXIoKXtyZXR1cm4gdGhpcy5pZGVudGlmaWVyfWdldE5hbWUoKXtyZXR1cm4gdGhpcy5pZGVudGlmaWVyP3RoaXMuaWRlbnRpZmllci5nZXRUZXh0KCk6IiJ9fSxhbD1jbGFzcyBleHRlbmRzIHNle2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIoZSx0KX1nZXQgdHlwZSgpe3JldHVybiBiLktleWZyYW1lU2VsZWN0b3J9fSxSaT1jbGFzcyBleHRlbmRzIE97Y29uc3RydWN0b3IoZSx0KXtzdXBlcihlLHQpfWdldCB0eXBlKCl7cmV0dXJuIGIuSW1wb3J0fXNldE1lZGlhbGlzdChlKXtyZXR1cm4gZT8oZS5hdHRhY2hUbyh0aGlzKSwhMCk6ITF9fSxjcD1jbGFzcyBleHRlbmRzIE97Z2V0IHR5cGUoKXtyZXR1cm4gYi5Vc2V9Z2V0UGFyYW1ldGVycygpe3JldHVybiB0aGlzLnBhcmFtZXRlcnN8fCh0aGlzLnBhcmFtZXRlcnM9bmV3IGJlKHRoaXMpKSx0aGlzLnBhcmFtZXRlcnN9c2V0SWRlbnRpZmllcihlKXtyZXR1cm4gdGhpcy5zZXROb2RlKCJpZGVudGlmaWVyIixlLDApfWdldElkZW50aWZpZXIoKXtyZXR1cm4gdGhpcy5pZGVudGlmaWVyfX0saHA9Y2xhc3MgZXh0ZW5kcyBPe2dldCB0eXBlKCl7cmV0dXJuIGIuTW9kdWxlQ29uZmlndXJhdGlvbn1zZXRJZGVudGlmaWVyKGUpe3JldHVybiB0aGlzLnNldE5vZGUoImlkZW50aWZpZXIiLGUsMCl9Z2V0SWRlbnRpZmllcigpe3JldHVybiB0aGlzLmlkZW50aWZpZXJ9Z2V0TmFtZSgpe3JldHVybiB0aGlzLmlkZW50aWZpZXI/dGhpcy5pZGVudGlmaWVyLmdldFRleHQoKToiIn1zZXRWYWx1ZShlKXtyZXR1cm4gdGhpcy5zZXROb2RlKCJ2YWx1ZSIsZSwwKX1nZXRWYWx1ZSgpe3JldHVybiB0aGlzLnZhbHVlfX0sZHA9Y2xhc3MgZXh0ZW5kcyBPe2dldCB0eXBlKCl7cmV0dXJuIGIuRm9yd2FyZH1zZXRJZGVudGlmaWVyKGUpe3JldHVybiB0aGlzLnNldE5vZGUoImlkZW50aWZpZXIiLGUsMCl9Z2V0SWRlbnRpZmllcigpe3JldHVybiB0aGlzLmlkZW50aWZpZXJ9Z2V0TWVtYmVycygpe3JldHVybiB0aGlzLm1lbWJlcnN8fCh0aGlzLm1lbWJlcnM9bmV3IGJlKHRoaXMpKSx0aGlzLm1lbWJlcnN9Z2V0UGFyYW1ldGVycygpe3JldHVybiB0aGlzLnBhcmFtZXRlcnN8fCh0aGlzLnBhcmFtZXRlcnM9bmV3IGJlKHRoaXMpKSx0aGlzLnBhcmFtZXRlcnN9fSx1cD1jbGFzcyBleHRlbmRzIE97Z2V0IHR5cGUoKXtyZXR1cm4gYi5Gb3J3YXJkVmlzaWJpbGl0eX1zZXRJZGVudGlmaWVyKGUpe3JldHVybiB0aGlzLnNldE5vZGUoImlkZW50aWZpZXIiLGUsMCl9Z2V0SWRlbnRpZmllcigpe3JldHVybiB0aGlzLmlkZW50aWZpZXJ9fSxwcD1jbGFzcyBleHRlbmRzIE97Y29uc3RydWN0b3IoZSx0KXtzdXBlcihlLHQpfWdldCB0eXBlKCl7cmV0dXJuIGIuTmFtZXNwYWNlfX0sTmk9Y2xhc3MgZXh0ZW5kcyBzZXtjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKGUsdCl9Z2V0IHR5cGUoKXtyZXR1cm4gYi5NZWRpYX19LERpPWNsYXNzIGV4dGVuZHMgc2V7Y29uc3RydWN0b3IoZSx0KXtzdXBlcihlLHQpfWdldCB0eXBlKCl7cmV0dXJuIGIuU3VwcG9ydHN9fSxtcD1jbGFzcyBleHRlbmRzIHNle2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIoZSx0KX1nZXQgdHlwZSgpe3JldHVybiBiLkxheWVyfXNldE5hbWVzKGUpe3JldHVybiB0aGlzLnNldE5vZGUoIm5hbWVzIixlKX1nZXROYW1lcygpe3JldHVybiB0aGlzLm5hbWVzfX0sZnA9Y2xhc3MgZXh0ZW5kcyBzZXtjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKGUsdCl9Z2V0IHR5cGUoKXtyZXR1cm4gYi5Qcm9wZXJ0eUF0UnVsZX1zZXROYW1lKGUpe3JldHVybiBlPyhlLmF0dGFjaFRvKHRoaXMpLHRoaXMubmFtZT1lLCEwKTohMX1nZXROYW1lKCl7cmV0dXJuIHRoaXMubmFtZX19LGdwPWNsYXNzIGV4dGVuZHMgc2V7Y29uc3RydWN0b3IoZSx0KXtzdXBlcihlLHQpfWdldCB0eXBlKCl7cmV0dXJuIGIuRG9jdW1lbnR9fSxicD1jbGFzcyBleHRlbmRzIHNle2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIoZSx0KX1nZXQgdHlwZSgpe3JldHVybiBiLkNvbnRhaW5lcn19LG9sPWNsYXNzIGV4dGVuZHMgT3tjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKGUsdCl9fSxsbD1jbGFzcyBleHRlbmRzIE97Y29uc3RydWN0b3IoZSx0KXtzdXBlcihlLHQpfWdldCB0eXBlKCl7cmV0dXJuIGIuTWVkaWFRdWVyeX19LHZwPWNsYXNzIGV4dGVuZHMgT3tjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKGUsdCl9Z2V0IHR5cGUoKXtyZXR1cm4gYi5NZWRpYUNvbmRpdGlvbn19LHdwPWNsYXNzIGV4dGVuZHMgT3tjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKGUsdCl9Z2V0IHR5cGUoKXtyZXR1cm4gYi5NZWRpYUZlYXR1cmV9fSxDbj1jbGFzcyBleHRlbmRzIE97Y29uc3RydWN0b3IoZSx0KXtzdXBlcihlLHQpfWdldCB0eXBlKCl7cmV0dXJuIGIuU3VwcG9ydHNDb25kaXRpb259fSx5cD1jbGFzcyBleHRlbmRzIHNle2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIoZSx0KX1nZXQgdHlwZSgpe3JldHVybiBiLlBhZ2V9fSx4cD1jbGFzcyBleHRlbmRzIHNle2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIoZSx0KX1nZXQgdHlwZSgpe3JldHVybiBiLlBhZ2VCb3hNYXJnaW5Cb3h9fSxjbD1jbGFzcyBleHRlbmRzIE97Y29uc3RydWN0b3IoZSx0KXtzdXBlcihlLHQpfWdldCB0eXBlKCl7cmV0dXJuIGIuRXhwcmVzc2lvbn19LElpPWNsYXNzIGV4dGVuZHMgT3tjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKGUsdCl9Z2V0IHR5cGUoKXtyZXR1cm4gYi5CaW5hcnlFeHByZXNzaW9ufXNldExlZnQoZSl7cmV0dXJuIHRoaXMuc2V0Tm9kZSgibGVmdCIsZSl9Z2V0TGVmdCgpe3JldHVybiB0aGlzLmxlZnR9c2V0UmlnaHQoZSl7cmV0dXJuIHRoaXMuc2V0Tm9kZSgicmlnaHQiLGUpfWdldFJpZ2h0KCl7cmV0dXJuIHRoaXMucmlnaHR9c2V0T3BlcmF0b3IoZSl7cmV0dXJuIHRoaXMuc2V0Tm9kZSgib3BlcmF0b3IiLGUpfWdldE9wZXJhdG9yKCl7cmV0dXJuIHRoaXMub3BlcmF0b3J9fSxTcD1jbGFzcyBleHRlbmRzIE97Y29uc3RydWN0b3IoZSx0KXtzdXBlcihlLHQpfWdldCB0eXBlKCl7cmV0dXJuIGIuVGVybX1zZXRPcGVyYXRvcihlKXtyZXR1cm4gdGhpcy5zZXROb2RlKCJvcGVyYXRvciIsZSl9Z2V0T3BlcmF0b3IoKXtyZXR1cm4gdGhpcy5vcGVyYXRvcn1zZXRFeHByZXNzaW9uKGUpe3JldHVybiB0aGlzLnNldE5vZGUoImV4cHJlc3Npb24iLGUpfWdldEV4cHJlc3Npb24oKXtyZXR1cm4gdGhpcy5leHByZXNzaW9ufX0sQ3A9Y2xhc3MgZXh0ZW5kcyBPe2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIoZSx0KX1nZXQgdHlwZSgpe3JldHVybiBiLkF0dHJpYnV0ZVNlbGVjdG9yfXNldE5hbWVzcGFjZVByZWZpeChlKXtyZXR1cm4gdGhpcy5zZXROb2RlKCJuYW1lc3BhY2VQcmVmaXgiLGUpfWdldE5hbWVzcGFjZVByZWZpeCgpe3JldHVybiB0aGlzLm5hbWVzcGFjZVByZWZpeH1zZXRJZGVudGlmaWVyKGUpe3JldHVybiB0aGlzLnNldE5vZGUoImlkZW50aWZpZXIiLGUpfWdldElkZW50aWZpZXIoKXtyZXR1cm4gdGhpcy5pZGVudGlmaWVyfXNldE9wZXJhdG9yKGUpe3JldHVybiB0aGlzLnNldE5vZGUoIm9wZXJhdG9yIixlKX1nZXRPcGVyYXRvcigpe3JldHVybiB0aGlzLm9wZXJhdG9yfXNldFZhbHVlKGUpe3JldHVybiB0aGlzLnNldE5vZGUoInZhbHVlIixlKX1nZXRWYWx1ZSgpe3JldHVybiB0aGlzLnZhbHVlfX0sQWk9Y2xhc3MgZXh0ZW5kcyBPe2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIoZSx0KX1nZXQgdHlwZSgpe3JldHVybiBiLkhleENvbG9yVmFsdWV9fSxfcD1jbGFzcyBleHRlbmRzIE97Y29uc3RydWN0b3IoZSx0KXtzdXBlcihlLHQpfWdldCB0eXBlKCl7cmV0dXJuIGIuUmF0aW9WYWx1ZX19LGtwPTQ2LEVwPTQ4LEZwPTU3LE1pPWNsYXNzIGV4dGVuZHMgT3tjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKGUsdCl9Z2V0IHR5cGUoKXtyZXR1cm4gYi5OdW1lcmljVmFsdWV9Z2V0VmFsdWUoKXtjb25zdCBlPXRoaXMuZ2V0VGV4dCgpO2xldCB0PTAsbjtmb3IobGV0IHI9MCxpPWUubGVuZ3RoO3I8aSYmKG49ZS5jaGFyQ29kZUF0KHIpLEVwPD1uJiZuPD1GcHx8bj09PWtwKTtyKyspdCs9MTtyZXR1cm57dmFsdWU6ZS5zdWJzdHJpbmcoMCx0KSx1bml0OnQ8ZS5sZW5ndGg/ZS5zdWJzdHJpbmcodCk6dm9pZCAwfX19LGlyPWNsYXNzIGV4dGVuZHMgRWl7Y29uc3RydWN0b3IoZSx0KXtzdXBlcihlLHQpLHRoaXMubmVlZHNTZW1pY29sb249ITB9Z2V0IHR5cGUoKXtyZXR1cm4gYi5WYXJpYWJsZURlY2xhcmF0aW9ufXNldFZhcmlhYmxlKGUpe3JldHVybiBlPyhlLmF0dGFjaFRvKHRoaXMpLHRoaXMudmFyaWFibGU9ZSwhMCk6ITF9Z2V0VmFyaWFibGUoKXtyZXR1cm4gdGhpcy52YXJpYWJsZX1nZXROYW1lKCl7cmV0dXJuIHRoaXMudmFyaWFibGU/dGhpcy52YXJpYWJsZS5nZXROYW1lKCk6IiJ9c2V0VmFsdWUoZSl7cmV0dXJuIGU/KGUuYXR0YWNoVG8odGhpcyksdGhpcy52YWx1ZT1lLCEwKTohMX1nZXRWYWx1ZSgpe3JldHVybiB0aGlzLnZhbHVlfX0sTGk9Y2xhc3MgZXh0ZW5kcyBPe2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIoZSx0KX1nZXQgdHlwZSgpe3JldHVybiBiLkludGVycG9sYXRpb259fSx6aT1jbGFzcyBleHRlbmRzIE97Y29uc3RydWN0b3IoZSx0KXtzdXBlcihlLHQpfWdldCB0eXBlKCl7cmV0dXJuIGIuVmFyaWFibGVOYW1lfWdldE5hbWUoKXtyZXR1cm4gdGhpcy5nZXRUZXh0KCl9fSxfbj1jbGFzcyBleHRlbmRzIE97Y29uc3RydWN0b3IoZSx0KXtzdXBlcihlLHQpfWdldCB0eXBlKCl7cmV0dXJuIGIuRXh0ZW5kc1JlZmVyZW5jZX1nZXRTZWxlY3RvcnMoKXtyZXR1cm4gdGhpcy5zZWxlY3RvcnN8fCh0aGlzLnNlbGVjdG9ycz1uZXcgYmUodGhpcykpLHRoaXMuc2VsZWN0b3JzfX0sUnA9Y2xhc3MgZXh0ZW5kcyBPe2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIoZSx0KX1nZXQgdHlwZSgpe3JldHVybiBiLk1peGluQ29udGVudFJlZmVyZW5jZX1nZXRBcmd1bWVudHMoKXtyZXR1cm4gdGhpcy5hcmd1bWVudHN8fCh0aGlzLmFyZ3VtZW50cz1uZXcgYmUodGhpcykpLHRoaXMuYXJndW1lbnRzfX0sTnA9Y2xhc3MgZXh0ZW5kcyBzZXtjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKGUsdCl9Z2V0IHR5cGUoKXtyZXR1cm4gYi5NaXhpbkNvbnRlbnREZWNsYXJhdGlvbn1nZXRQYXJhbWV0ZXJzKCl7cmV0dXJuIHRoaXMucGFyYW1ldGVyc3x8KHRoaXMucGFyYW1ldGVycz1uZXcgYmUodGhpcykpLHRoaXMucGFyYW1ldGVyc319LHNyPWNsYXNzIGV4dGVuZHMgT3tjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKGUsdCl9Z2V0IHR5cGUoKXtyZXR1cm4gYi5NaXhpblJlZmVyZW5jZX1nZXROYW1lc3BhY2VzKCl7cmV0dXJuIHRoaXMubmFtZXNwYWNlc3x8KHRoaXMubmFtZXNwYWNlcz1uZXcgYmUodGhpcykpLHRoaXMubmFtZXNwYWNlc31zZXRJZGVudGlmaWVyKGUpe3JldHVybiB0aGlzLnNldE5vZGUoImlkZW50aWZpZXIiLGUsMCl9Z2V0SWRlbnRpZmllcigpe3JldHVybiB0aGlzLmlkZW50aWZpZXJ9Z2V0TmFtZSgpe3JldHVybiB0aGlzLmlkZW50aWZpZXI/dGhpcy5pZGVudGlmaWVyLmdldFRleHQoKToiIn1nZXRBcmd1bWVudHMoKXtyZXR1cm4gdGhpcy5hcmd1bWVudHN8fCh0aGlzLmFyZ3VtZW50cz1uZXcgYmUodGhpcykpLHRoaXMuYXJndW1lbnRzfXNldENvbnRlbnQoZSl7cmV0dXJuIHRoaXMuc2V0Tm9kZSgiY29udGVudCIsZSl9Z2V0Q29udGVudCgpe3JldHVybiB0aGlzLmNvbnRlbnR9fSxrbj1jbGFzcyBleHRlbmRzIHNle2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIoZSx0KX1nZXQgdHlwZSgpe3JldHVybiBiLk1peGluRGVjbGFyYXRpb259c2V0SWRlbnRpZmllcihlKXtyZXR1cm4gdGhpcy5zZXROb2RlKCJpZGVudGlmaWVyIixlLDApfWdldElkZW50aWZpZXIoKXtyZXR1cm4gdGhpcy5pZGVudGlmaWVyfWdldE5hbWUoKXtyZXR1cm4gdGhpcy5pZGVudGlmaWVyP3RoaXMuaWRlbnRpZmllci5nZXRUZXh0KCk6IiJ9Z2V0UGFyYW1ldGVycygpe3JldHVybiB0aGlzLnBhcmFtZXRlcnN8fCh0aGlzLnBhcmFtZXRlcnM9bmV3IGJlKHRoaXMpKSx0aGlzLnBhcmFtZXRlcnN9c2V0R3VhcmQoZSl7cmV0dXJuIGUmJihlLmF0dGFjaFRvKHRoaXMpLHRoaXMuZ3VhcmQ9ZSksITF9fSxobD1jbGFzcyBleHRlbmRzIHNle2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIoZSx0KX1nZXQgdHlwZSgpe3JldHVybiBiLlVua25vd25BdFJ1bGV9c2V0QXRSdWxlTmFtZShlKXt0aGlzLmF0UnVsZU5hbWU9ZX1nZXRBdFJ1bGVOYW1lKCl7cmV0dXJuIHRoaXMuYXRSdWxlTmFtZX19LERwPWNsYXNzIGV4dGVuZHMgT3tnZXQgdHlwZSgpe3JldHVybiBiLkxpc3RFbnRyeX1zZXRLZXkoZSl7cmV0dXJuIHRoaXMuc2V0Tm9kZSgia2V5IixlLDApfXNldFZhbHVlKGUpe3JldHVybiB0aGlzLnNldE5vZGUoInZhbHVlIixlLDEpfX0sSXA9Y2xhc3MgZXh0ZW5kcyBPe2dldENvbmRpdGlvbnMoKXtyZXR1cm4gdGhpcy5jb25kaXRpb25zfHwodGhpcy5jb25kaXRpb25zPW5ldyBiZSh0aGlzKSksdGhpcy5jb25kaXRpb25zfX0sQXA9Y2xhc3MgZXh0ZW5kcyBPe3NldFZhcmlhYmxlKGUpe3JldHVybiB0aGlzLnNldE5vZGUoInZhcmlhYmxlIixlKX19LGRsPWNsYXNzIGV4dGVuZHMgT3tnZXQgdHlwZSgpe3JldHVybiBiLk1vZHVsZX1zZXRJZGVudGlmaWVyKGUpe3JldHVybiB0aGlzLnNldE5vZGUoImlkZW50aWZpZXIiLGUsMCl9Z2V0SWRlbnRpZmllcigpe3JldHVybiB0aGlzLmlkZW50aWZpZXJ9fSxGZTsoZnVuY3Rpb24oZSl7ZVtlLklnbm9yZT0xXT0iSWdub3JlIixlW2UuV2FybmluZz0yXT0iV2FybmluZyIsZVtlLkVycm9yPTRdPSJFcnJvciJ9KShGZXx8KEZlPXt9KSk7dmFyIHVsPWNsYXNze2NvbnN0cnVjdG9yKGUsdCxuLHIsaT1lLm9mZnNldCxzPWUubGVuZ3RoKXt0aGlzLm5vZGU9ZSx0aGlzLnJ1bGU9dCx0aGlzLmxldmVsPW4sdGhpcy5tZXNzYWdlPXJ8fHQubWVzc2FnZSx0aGlzLm9mZnNldD1pLHRoaXMubGVuZ3RoPXN9Z2V0UnVsZSgpe3JldHVybiB0aGlzLnJ1bGV9Z2V0TGV2ZWwoKXtyZXR1cm4gdGhpcy5sZXZlbH1nZXRPZmZzZXQoKXtyZXR1cm4gdGhpcy5vZmZzZXR9Z2V0TGVuZ3RoKCl7cmV0dXJuIHRoaXMubGVuZ3RofWdldE5vZGUoKXtyZXR1cm4gdGhpcy5ub2RlfWdldE1lc3NhZ2UoKXtyZXR1cm4gdGhpcy5tZXNzYWdlfX0sTXA9Y2xhc3Mgbmh7c3RhdGljIGVudHJpZXModCl7Y29uc3Qgbj1uZXcgbmg7cmV0dXJuIHQuYWNjZXB0VmlzaXRvcihuKSxuLmVudHJpZXN9Y29uc3RydWN0b3IoKXt0aGlzLmVudHJpZXM9W119dmlzaXROb2RlKHQpe3JldHVybiB0LmlzRXJyb25lb3VzKCkmJnQuY29sbGVjdElzc3Vlcyh0aGlzLmVudHJpZXMpLCEwfX07ZnVuY3Rpb24gZyguLi5lKXtjb25zdCB0PWVbMF07bGV0IG4scixpO2lmKHR5cGVvZiB0PT0ic3RyaW5nIiluPXQscj10LGUuc3BsaWNlKDAsMSksaT0hZXx8dHlwZW9mIGVbMF0hPSJvYmplY3QiP2U6ZVswXTtlbHNlIGlmKHQgaW5zdGFuY2VvZiBBcnJheSl7Y29uc3Qgcz1lLnNsaWNlKDEpO2lmKHQubGVuZ3RoIT09cy5sZW5ndGgrMSl0aHJvdyBuZXcgRXJyb3IoImV4cGVjdGVkIGEgc3RyaW5nIGFzIHRoZSBmaXJzdCBhcmd1bWVudCB0byBsMTBuLnQiKTtsZXQgYT10WzBdO2ZvcihsZXQgbD0xO2w8dC5sZW5ndGg7bCsrKWErPWB7JHtsLTF9fWArdFtsXTtyZXR1cm4gZyhhLC4uLnMpfWVsc2Ugcj10Lm1lc3NhZ2Usbj1yLHQuY29tbWVudCYmdC5jb21tZW50Lmxlbmd0aD4wJiYobis9YC8ke0FycmF5LmlzQXJyYXkodC5jb21tZW50KT90LmNvbW1lbnQuam9pbigiIik6dC5jb21tZW50fWApLGk9dC5hcmdzPz97fTtyZXR1cm4genAocixpKX12YXIgTHA9L3soW159XSspfS9nO2Z1bmN0aW9uIHpwKGUsdCl7cmV0dXJuIE9iamVjdC5rZXlzKHQpLmxlbmd0aD09PTA/ZTplLnJlcGxhY2UoTHAsKG4scik9PnRbcl0/P24pfXZhciBLPWNsYXNze2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5pZD1lLHRoaXMubWVzc2FnZT10fX0seD17TnVtYmVyRXhwZWN0ZWQ6bmV3IEsoImNzcy1udW1iZXJleHBlY3RlZCIsZygibnVtYmVyIGV4cGVjdGVkIikpLENvbmRpdGlvbkV4cGVjdGVkOm5ldyBLKCJjc3MtY29uZGl0aW9uZXhwZWN0ZWQiLGcoImNvbmRpdGlvbiBleHBlY3RlZCIpKSxSdWxlT3JTZWxlY3RvckV4cGVjdGVkOm5ldyBLKCJjc3MtcnVsZW9yc2VsZWN0b3JleHBlY3RlZCIsZygiYXQtcnVsZSBvciBzZWxlY3RvciBleHBlY3RlZCIpKSxEb3RFeHBlY3RlZDpuZXcgSygiY3NzLWRvdGV4cGVjdGVkIixnKCJkb3QgZXhwZWN0ZWQiKSksQ29sb25FeHBlY3RlZDpuZXcgSygiY3NzLWNvbG9uZXhwZWN0ZWQiLGcoImNvbG9uIGV4cGVjdGVkIikpLFNlbWlDb2xvbkV4cGVjdGVkOm5ldyBLKCJjc3Mtc2VtaWNvbG9uZXhwZWN0ZWQiLGcoInNlbWktY29sb24gZXhwZWN0ZWQiKSksVGVybUV4cGVjdGVkOm5ldyBLKCJjc3MtdGVybWV4cGVjdGVkIixnKCJ0ZXJtIGV4cGVjdGVkIikpLEV4cHJlc3Npb25FeHBlY3RlZDpuZXcgSygiY3NzLWV4cHJlc3Npb25leHBlY3RlZCIsZygiZXhwcmVzc2lvbiBleHBlY3RlZCIpKSxPcGVyYXRvckV4cGVjdGVkOm5ldyBLKCJjc3Mtb3BlcmF0b3JleHBlY3RlZCIsZygib3BlcmF0b3IgZXhwZWN0ZWQiKSksSWRlbnRpZmllckV4cGVjdGVkOm5ldyBLKCJjc3MtaWRlbnRpZmllcmV4cGVjdGVkIixnKCJpZGVudGlmaWVyIGV4cGVjdGVkIikpLFBlcmNlbnRhZ2VFeHBlY3RlZDpuZXcgSygiY3NzLXBlcmNlbnRhZ2VleHBlY3RlZCIsZygicGVyY2VudGFnZSBleHBlY3RlZCIpKSxVUklPclN0cmluZ0V4cGVjdGVkOm5ldyBLKCJjc3MtdXJpb3JzdHJpbmdleHBlY3RlZCIsZygidXJpIG9yIHN0cmluZyBleHBlY3RlZCIpKSxVUklFeHBlY3RlZDpuZXcgSygiY3NzLXVyaWV4cGVjdGVkIixnKCJVUkkgZXhwZWN0ZWQiKSksVmFyaWFibGVOYW1lRXhwZWN0ZWQ6bmV3IEsoImNzcy12YXJuYW1lZXhwZWN0ZWQiLGcoInZhcmlhYmxlIG5hbWUgZXhwZWN0ZWQiKSksVmFyaWFibGVWYWx1ZUV4cGVjdGVkOm5ldyBLKCJjc3MtdmFydmFsdWVleHBlY3RlZCIsZygidmFyaWFibGUgdmFsdWUgZXhwZWN0ZWQiKSksUHJvcGVydHlWYWx1ZUV4cGVjdGVkOm5ldyBLKCJjc3MtcHJvcGVydHl2YWx1ZWV4cGVjdGVkIixnKCJwcm9wZXJ0eSB2YWx1ZSBleHBlY3RlZCIpKSxMZWZ0Q3VybHlFeHBlY3RlZDpuZXcgSygiY3NzLWxjdXJseWV4cGVjdGVkIixnKCJ7IGV4cGVjdGVkIikpLFJpZ2h0Q3VybHlFeHBlY3RlZDpuZXcgSygiY3NzLXJjdXJseWV4cGVjdGVkIixnKCJ9IGV4cGVjdGVkIikpLExlZnRTcXVhcmVCcmFja2V0RXhwZWN0ZWQ6bmV3IEsoImNzcy1yYnJhY2tldGV4cGVjdGVkIixnKCJbIGV4cGVjdGVkIikpLFJpZ2h0U3F1YXJlQnJhY2tldEV4cGVjdGVkOm5ldyBLKCJjc3MtbGJyYWNrZXRleHBlY3RlZCIsZygiXSBleHBlY3RlZCIpKSxMZWZ0UGFyZW50aGVzaXNFeHBlY3RlZDpuZXcgSygiY3NzLWxwYXJlbnRleHBlY3RlZCIsZygiKCBleHBlY3RlZCIpKSxSaWdodFBhcmVudGhlc2lzRXhwZWN0ZWQ6bmV3IEsoImNzcy1ycGFyZW50ZXhwZWN0ZWQiLGcoIikgZXhwZWN0ZWQiKSksQ29tbWFFeHBlY3RlZDpuZXcgSygiY3NzLWNvbW1hZXhwZWN0ZWQiLGcoImNvbW1hIGV4cGVjdGVkIikpLFBhZ2VEaXJlY3RpdmVPckRlY2xhcmF0aW9uRXhwZWN0ZWQ6bmV3IEsoImNzcy1wYWdlZGlyb3JkZWNsZXhwZWN0ZWQiLGcoInBhZ2UgZGlyZWN0aXZlIG9yIGRlY2xhcmF0b24gZXhwZWN0ZWQiKSksVW5rbm93bkF0UnVsZTpuZXcgSygiY3NzLXVua25vd25hdHJ1bGUiLGcoImF0LXJ1bGUgdW5rbm93biIpKSxVbmtub3duS2V5d29yZDpuZXcgSygiY3NzLXVua25vd25rZXl3b3JkIixnKCJ1bmtub3duIGtleXdvcmQiKSksU2VsZWN0b3JFeHBlY3RlZDpuZXcgSygiY3NzLXNlbGVjdG9yZXhwZWN0ZWQiLGcoInNlbGVjdG9yIGV4cGVjdGVkIikpLFN0cmluZ0xpdGVyYWxFeHBlY3RlZDpuZXcgSygiY3NzLXN0cmluZ2xpdGVyYWxleHBlY3RlZCIsZygic3RyaW5nIGxpdGVyYWwgZXhwZWN0ZWQiKSksV2hpdGVzcGFjZUV4cGVjdGVkOm5ldyBLKCJjc3Mtd2hpdGVzcGFjZWV4cGVjdGVkIixnKCJ3aGl0ZXNwYWNlIGV4cGVjdGVkIikpLE1lZGlhUXVlcnlFeHBlY3RlZDpuZXcgSygiY3NzLW1lZGlhcXVlcnlleHBlY3RlZCIsZygibWVkaWEgcXVlcnkgZXhwZWN0ZWQiKSksSWRlbnRpZmllck9yV2lsZGNhcmRFeHBlY3RlZDpuZXcgSygiY3NzLWlkb3J3aWxkY2FyZGV4cGVjdGVkIixnKCJpZGVudGlmaWVyIG9yIHdpbGRjYXJkIGV4cGVjdGVkIikpLFdpbGRjYXJkRXhwZWN0ZWQ6bmV3IEsoImNzcy13aWxkY2FyZGV4cGVjdGVkIixnKCJ3aWxkY2FyZCBleHBlY3RlZCIpKSxJZGVudGlmaWVyT3JWYXJpYWJsZUV4cGVjdGVkOm5ldyBLKCJjc3MtaWRvcnZhcmV4cGVjdGVkIixnKCJpZGVudGlmaWVyIG9yIHZhcmlhYmxlIGV4cGVjdGVkIikpfSxwbDsoZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChuKXtyZXR1cm4gdHlwZW9mIG49PSJzdHJpbmcifWUuaXM9dH0pKHBsfHwocGw9e30pKTt2YXIgUGk7KGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQobil7cmV0dXJuIHR5cGVvZiBuPT0ic3RyaW5nIn1lLmlzPXR9KShQaXx8KFBpPXt9KSk7dmFyIG1sOyhmdW5jdGlvbihlKXtlLk1JTl9WQUxVRT0tMjE0NzQ4MzY0OCxlLk1BWF9WQUxVRT0yMTQ3NDgzNjQ3O2Z1bmN0aW9uIHQobil7cmV0dXJuIHR5cGVvZiBuPT0ibnVtYmVyIiYmZS5NSU5fVkFMVUU8PW4mJm48PWUuTUFYX1ZBTFVFfWUuaXM9dH0pKG1sfHwobWw9e30pKTt2YXIgYXI7KGZ1bmN0aW9uKGUpe2UuTUlOX1ZBTFVFPTAsZS5NQVhfVkFMVUU9MjE0NzQ4MzY0NztmdW5jdGlvbiB0KG4pe3JldHVybiB0eXBlb2Ygbj09Im51bWJlciImJmUuTUlOX1ZBTFVFPD1uJiZuPD1lLk1BWF9WQUxVRX1lLmlzPXR9KShhcnx8KGFyPXt9KSk7dmFyIHZlOyhmdW5jdGlvbihlKXtmdW5jdGlvbiB0KHIsaSl7cmV0dXJuIHI9PT1OdW1iZXIuTUFYX1ZBTFVFJiYocj1hci5NQVhfVkFMVUUpLGk9PT1OdW1iZXIuTUFYX1ZBTFVFJiYoaT1hci5NQVhfVkFMVUUpLHtsaW5lOnIsY2hhcmFjdGVyOml9fWUuY3JlYXRlPXQ7ZnVuY3Rpb24gbihyKXtsZXQgaT1yO3JldHVybiBTLm9iamVjdExpdGVyYWwoaSkmJlMudWludGVnZXIoaS5saW5lKSYmUy51aW50ZWdlcihpLmNoYXJhY3Rlcil9ZS5pcz1ufSkodmV8fCh2ZT17fSkpO3ZhciBKOyhmdW5jdGlvbihlKXtmdW5jdGlvbiB0KHIsaSxzLGEpe2lmKFMudWludGVnZXIocikmJlMudWludGVnZXIoaSkmJlMudWludGVnZXIocykmJlMudWludGVnZXIoYSkpcmV0dXJue3N0YXJ0OnZlLmNyZWF0ZShyLGkpLGVuZDp2ZS5jcmVhdGUocyxhKX07aWYodmUuaXMocikmJnZlLmlzKGkpKXJldHVybntzdGFydDpyLGVuZDppfTt0aHJvdyBuZXcgRXJyb3IoYFJhbmdlI2NyZWF0ZSBjYWxsZWQgd2l0aCBpbnZhbGlkIGFyZ3VtZW50c1ske3J9LCAke2l9LCAke3N9LCAke2F9XWApfWUuY3JlYXRlPXQ7ZnVuY3Rpb24gbihyKXtsZXQgaT1yO3JldHVybiBTLm9iamVjdExpdGVyYWwoaSkmJnZlLmlzKGkuc3RhcnQpJiZ2ZS5pcyhpLmVuZCl9ZS5pcz1ufSkoSnx8KEo9e30pKTt2YXIgRW47KGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQocixpKXtyZXR1cm57dXJpOnIscmFuZ2U6aX19ZS5jcmVhdGU9dDtmdW5jdGlvbiBuKHIpe2xldCBpPXI7cmV0dXJuIFMub2JqZWN0TGl0ZXJhbChpKSYmSi5pcyhpLnJhbmdlKSYmKFMuc3RyaW5nKGkudXJpKXx8Uy51bmRlZmluZWQoaS51cmkpKX1lLmlzPW59KShFbnx8KEVuPXt9KSk7dmFyIGZsOyhmdW5jdGlvbihlKXtmdW5jdGlvbiB0KHIsaSxzLGEpe3JldHVybnt0YXJnZXRVcmk6cix0YXJnZXRSYW5nZTppLHRhcmdldFNlbGVjdGlvblJhbmdlOnMsb3JpZ2luU2VsZWN0aW9uUmFuZ2U6YX19ZS5jcmVhdGU9dDtmdW5jdGlvbiBuKHIpe2xldCBpPXI7cmV0dXJuIFMub2JqZWN0TGl0ZXJhbChpKSYmSi5pcyhpLnRhcmdldFJhbmdlKSYmUy5zdHJpbmcoaS50YXJnZXRVcmkpJiZKLmlzKGkudGFyZ2V0U2VsZWN0aW9uUmFuZ2UpJiYoSi5pcyhpLm9yaWdpblNlbGVjdGlvblJhbmdlKXx8Uy51bmRlZmluZWQoaS5vcmlnaW5TZWxlY3Rpb25SYW5nZSkpfWUuaXM9bn0pKGZsfHwoZmw9e30pKTt2YXIgVGk7KGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQocixpLHMsYSl7cmV0dXJue3JlZDpyLGdyZWVuOmksYmx1ZTpzLGFscGhhOmF9fWUuY3JlYXRlPXQ7ZnVuY3Rpb24gbihyKXtjb25zdCBpPXI7cmV0dXJuIFMub2JqZWN0TGl0ZXJhbChpKSYmUy5udW1iZXJSYW5nZShpLnJlZCwwLDEpJiZTLm51bWJlclJhbmdlKGkuZ3JlZW4sMCwxKSYmUy5udW1iZXJSYW5nZShpLmJsdWUsMCwxKSYmUy5udW1iZXJSYW5nZShpLmFscGhhLDAsMSl9ZS5pcz1ufSkoVGl8fChUaT17fSkpO3ZhciBnbDsoZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChyLGkpe3JldHVybntyYW5nZTpyLGNvbG9yOml9fWUuY3JlYXRlPXQ7ZnVuY3Rpb24gbihyKXtjb25zdCBpPXI7cmV0dXJuIFMub2JqZWN0TGl0ZXJhbChpKSYmSi5pcyhpLnJhbmdlKSYmVGkuaXMoaS5jb2xvcil9ZS5pcz1ufSkoZ2x8fChnbD17fSkpO3ZhciBibDsoZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChyLGkscyl7cmV0dXJue2xhYmVsOnIsdGV4dEVkaXQ6aSxhZGRpdGlvbmFsVGV4dEVkaXRzOnN9fWUuY3JlYXRlPXQ7ZnVuY3Rpb24gbihyKXtjb25zdCBpPXI7cmV0dXJuIFMub2JqZWN0TGl0ZXJhbChpKSYmUy5zdHJpbmcoaS5sYWJlbCkmJihTLnVuZGVmaW5lZChpLnRleHRFZGl0KXx8VS5pcyhpKSkmJihTLnVuZGVmaW5lZChpLmFkZGl0aW9uYWxUZXh0RWRpdHMpfHxTLnR5cGVkQXJyYXkoaS5hZGRpdGlvbmFsVGV4dEVkaXRzLFUuaXMpKX1lLmlzPW59KShibHx8KGJsPXt9KSk7dmFyIHZsOyhmdW5jdGlvbihlKXtlLkNvbW1lbnQ9ImNvbW1lbnQiLGUuSW1wb3J0cz0iaW1wb3J0cyIsZS5SZWdpb249InJlZ2lvbiJ9KSh2bHx8KHZsPXt9KSk7dmFyIHdsOyhmdW5jdGlvbihlKXtmdW5jdGlvbiB0KHIsaSxzLGEsbCxvKXtjb25zdCBjPXtzdGFydExpbmU6cixlbmRMaW5lOml9O3JldHVybiBTLmRlZmluZWQocykmJihjLnN0YXJ0Q2hhcmFjdGVyPXMpLFMuZGVmaW5lZChhKSYmKGMuZW5kQ2hhcmFjdGVyPWEpLFMuZGVmaW5lZChsKSYmKGMua2luZD1sKSxTLmRlZmluZWQobykmJihjLmNvbGxhcHNlZFRleHQ9byksY31lLmNyZWF0ZT10O2Z1bmN0aW9uIG4ocil7Y29uc3QgaT1yO3JldHVybiBTLm9iamVjdExpdGVyYWwoaSkmJlMudWludGVnZXIoaS5zdGFydExpbmUpJiZTLnVpbnRlZ2VyKGkuc3RhcnRMaW5lKSYmKFMudW5kZWZpbmVkKGkuc3RhcnRDaGFyYWN0ZXIpfHxTLnVpbnRlZ2VyKGkuc3RhcnRDaGFyYWN0ZXIpKSYmKFMudW5kZWZpbmVkKGkuZW5kQ2hhcmFjdGVyKXx8Uy51aW50ZWdlcihpLmVuZENoYXJhY3RlcikpJiYoUy51bmRlZmluZWQoaS5raW5kKXx8Uy5zdHJpbmcoaS5raW5kKSl9ZS5pcz1ufSkod2x8fCh3bD17fSkpO3ZhciBPaTsoZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChyLGkpe3JldHVybntsb2NhdGlvbjpyLG1lc3NhZ2U6aX19ZS5jcmVhdGU9dDtmdW5jdGlvbiBuKHIpe2xldCBpPXI7cmV0dXJuIFMuZGVmaW5lZChpKSYmRW4uaXMoaS5sb2NhdGlvbikmJlMuc3RyaW5nKGkubWVzc2FnZSl9ZS5pcz1ufSkoT2l8fChPaT17fSkpO3ZhciBvcjsoZnVuY3Rpb24oZSl7ZS5FcnJvcj0xLGUuV2FybmluZz0yLGUuSW5mb3JtYXRpb249MyxlLkhpbnQ9NH0pKG9yfHwob3I9e30pKTt2YXIgeWw7KGZ1bmN0aW9uKGUpe2UuVW5uZWNlc3Nhcnk9MSxlLkRlcHJlY2F0ZWQ9Mn0pKHlsfHwoeWw9e30pKTt2YXIgeGw7KGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQobil7Y29uc3Qgcj1uO3JldHVybiBTLm9iamVjdExpdGVyYWwocikmJlMuc3RyaW5nKHIuaHJlZil9ZS5pcz10fSkoeGx8fCh4bD17fSkpO3ZhciBscjsoZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChyLGkscyxhLGwsbyl7bGV0IGM9e3JhbmdlOnIsbWVzc2FnZTppfTtyZXR1cm4gUy5kZWZpbmVkKHMpJiYoYy5zZXZlcml0eT1zKSxTLmRlZmluZWQoYSkmJihjLmNvZGU9YSksUy5kZWZpbmVkKGwpJiYoYy5zb3VyY2U9bCksUy5kZWZpbmVkKG8pJiYoYy5yZWxhdGVkSW5mb3JtYXRpb249byksY31lLmNyZWF0ZT10O2Z1bmN0aW9uIG4ocil7dmFyIGk7bGV0IHM9cjtyZXR1cm4gUy5kZWZpbmVkKHMpJiZKLmlzKHMucmFuZ2UpJiZTLnN0cmluZyhzLm1lc3NhZ2UpJiYoUy5udW1iZXIocy5zZXZlcml0eSl8fFMudW5kZWZpbmVkKHMuc2V2ZXJpdHkpKSYmKFMuaW50ZWdlcihzLmNvZGUpfHxTLnN0cmluZyhzLmNvZGUpfHxTLnVuZGVmaW5lZChzLmNvZGUpKSYmKFMudW5kZWZpbmVkKHMuY29kZURlc2NyaXB0aW9uKXx8Uy5zdHJpbmcoKGk9cy5jb2RlRGVzY3JpcHRpb24pPT09bnVsbHx8aT09PXZvaWQgMD92b2lkIDA6aS5ocmVmKSkmJihTLnN0cmluZyhzLnNvdXJjZSl8fFMudW5kZWZpbmVkKHMuc291cmNlKSkmJihTLnVuZGVmaW5lZChzLnJlbGF0ZWRJbmZvcm1hdGlvbil8fFMudHlwZWRBcnJheShzLnJlbGF0ZWRJbmZvcm1hdGlvbixPaS5pcykpfWUuaXM9bn0pKGxyfHwobHI9e30pKTt2YXIgX3Q7KGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQocixpLC4uLnMpe2xldCBhPXt0aXRsZTpyLGNvbW1hbmQ6aX07cmV0dXJuIFMuZGVmaW5lZChzKSYmcy5sZW5ndGg+MCYmKGEuYXJndW1lbnRzPXMpLGF9ZS5jcmVhdGU9dDtmdW5jdGlvbiBuKHIpe2xldCBpPXI7cmV0dXJuIFMuZGVmaW5lZChpKSYmUy5zdHJpbmcoaS50aXRsZSkmJlMuc3RyaW5nKGkuY29tbWFuZCl9ZS5pcz1ufSkoX3R8fChfdD17fSkpO3ZhciBVOyhmdW5jdGlvbihlKXtmdW5jdGlvbiB0KHMsYSl7cmV0dXJue3JhbmdlOnMsbmV3VGV4dDphfX1lLnJlcGxhY2U9dDtmdW5jdGlvbiBuKHMsYSl7cmV0dXJue3JhbmdlOntzdGFydDpzLGVuZDpzfSxuZXdUZXh0OmF9fWUuaW5zZXJ0PW47ZnVuY3Rpb24gcihzKXtyZXR1cm57cmFuZ2U6cyxuZXdUZXh0OiIifX1lLmRlbD1yO2Z1bmN0aW9uIGkocyl7Y29uc3QgYT1zO3JldHVybiBTLm9iamVjdExpdGVyYWwoYSkmJlMuc3RyaW5nKGEubmV3VGV4dCkmJkouaXMoYS5yYW5nZSl9ZS5pcz1pfSkoVXx8KFU9e30pKTt2YXIgV2k7KGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQocixpLHMpe2NvbnN0IGE9e2xhYmVsOnJ9O3JldHVybiBpIT09dm9pZCAwJiYoYS5uZWVkc0NvbmZpcm1hdGlvbj1pKSxzIT09dm9pZCAwJiYoYS5kZXNjcmlwdGlvbj1zKSxhfWUuY3JlYXRlPXQ7ZnVuY3Rpb24gbihyKXtjb25zdCBpPXI7cmV0dXJuIFMub2JqZWN0TGl0ZXJhbChpKSYmUy5zdHJpbmcoaS5sYWJlbCkmJihTLmJvb2xlYW4oaS5uZWVkc0NvbmZpcm1hdGlvbil8fGkubmVlZHNDb25maXJtYXRpb249PT12b2lkIDApJiYoUy5zdHJpbmcoaS5kZXNjcmlwdGlvbil8fGkuZGVzY3JpcHRpb249PT12b2lkIDApfWUuaXM9bn0pKFdpfHwoV2k9e30pKTt2YXIgSHQ7KGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQobil7Y29uc3Qgcj1uO3JldHVybiBTLnN0cmluZyhyKX1lLmlzPXR9KShIdHx8KEh0PXt9KSk7dmFyIFNsOyhmdW5jdGlvbihlKXtmdW5jdGlvbiB0KHMsYSxsKXtyZXR1cm57cmFuZ2U6cyxuZXdUZXh0OmEsYW5ub3RhdGlvbklkOmx9fWUucmVwbGFjZT10O2Z1bmN0aW9uIG4ocyxhLGwpe3JldHVybntyYW5nZTp7c3RhcnQ6cyxlbmQ6c30sbmV3VGV4dDphLGFubm90YXRpb25JZDpsfX1lLmluc2VydD1uO2Z1bmN0aW9uIHIocyxhKXtyZXR1cm57cmFuZ2U6cyxuZXdUZXh0OiIiLGFubm90YXRpb25JZDphfX1lLmRlbD1yO2Z1bmN0aW9uIGkocyl7Y29uc3QgYT1zO3JldHVybiBVLmlzKGEpJiYoV2kuaXMoYS5hbm5vdGF0aW9uSWQpfHxIdC5pcyhhLmFubm90YXRpb25JZCkpfWUuaXM9aX0pKFNsfHwoU2w9e30pKTt2YXIgY3I7KGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQocixpKXtyZXR1cm57dGV4dERvY3VtZW50OnIsZWRpdHM6aX19ZS5jcmVhdGU9dDtmdW5jdGlvbiBuKHIpe2xldCBpPXI7cmV0dXJuIFMuZGVmaW5lZChpKSYmamkuaXMoaS50ZXh0RG9jdW1lbnQpJiZBcnJheS5pc0FycmF5KGkuZWRpdHMpfWUuaXM9bn0pKGNyfHwoY3I9e30pKTt2YXIgVmk7KGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQocixpLHMpe2xldCBhPXtraW5kOiJjcmVhdGUiLHVyaTpyfTtyZXR1cm4gaSE9PXZvaWQgMCYmKGkub3ZlcndyaXRlIT09dm9pZCAwfHxpLmlnbm9yZUlmRXhpc3RzIT09dm9pZCAwKSYmKGEub3B0aW9ucz1pKSxzIT09dm9pZCAwJiYoYS5hbm5vdGF0aW9uSWQ9cyksYX1lLmNyZWF0ZT10O2Z1bmN0aW9uIG4ocil7bGV0IGk9cjtyZXR1cm4gaSYmaS5raW5kPT09ImNyZWF0ZSImJlMuc3RyaW5nKGkudXJpKSYmKGkub3B0aW9ucz09PXZvaWQgMHx8KGkub3B0aW9ucy5vdmVyd3JpdGU9PT12b2lkIDB8fFMuYm9vbGVhbihpLm9wdGlvbnMub3ZlcndyaXRlKSkmJihpLm9wdGlvbnMuaWdub3JlSWZFeGlzdHM9PT12b2lkIDB8fFMuYm9vbGVhbihpLm9wdGlvbnMuaWdub3JlSWZFeGlzdHMpKSkmJihpLmFubm90YXRpb25JZD09PXZvaWQgMHx8SHQuaXMoaS5hbm5vdGF0aW9uSWQpKX1lLmlzPW59KShWaXx8KFZpPXt9KSk7dmFyIFVpOyhmdW5jdGlvbihlKXtmdW5jdGlvbiB0KHIsaSxzLGEpe2xldCBsPXtraW5kOiJyZW5hbWUiLG9sZFVyaTpyLG5ld1VyaTppfTtyZXR1cm4gcyE9PXZvaWQgMCYmKHMub3ZlcndyaXRlIT09dm9pZCAwfHxzLmlnbm9yZUlmRXhpc3RzIT09dm9pZCAwKSYmKGwub3B0aW9ucz1zKSxhIT09dm9pZCAwJiYobC5hbm5vdGF0aW9uSWQ9YSksbH1lLmNyZWF0ZT10O2Z1bmN0aW9uIG4ocil7bGV0IGk9cjtyZXR1cm4gaSYmaS5raW5kPT09InJlbmFtZSImJlMuc3RyaW5nKGkub2xkVXJpKSYmUy5zdHJpbmcoaS5uZXdVcmkpJiYoaS5vcHRpb25zPT09dm9pZCAwfHwoaS5vcHRpb25zLm92ZXJ3cml0ZT09PXZvaWQgMHx8Uy5ib29sZWFuKGkub3B0aW9ucy5vdmVyd3JpdGUpKSYmKGkub3B0aW9ucy5pZ25vcmVJZkV4aXN0cz09PXZvaWQgMHx8Uy5ib29sZWFuKGkub3B0aW9ucy5pZ25vcmVJZkV4aXN0cykpKSYmKGkuYW5ub3RhdGlvbklkPT09dm9pZCAwfHxIdC5pcyhpLmFubm90YXRpb25JZCkpfWUuaXM9bn0pKFVpfHwoVWk9e30pKTt2YXIgJGk7KGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQocixpLHMpe2xldCBhPXtraW5kOiJkZWxldGUiLHVyaTpyfTtyZXR1cm4gaSE9PXZvaWQgMCYmKGkucmVjdXJzaXZlIT09dm9pZCAwfHxpLmlnbm9yZUlmTm90RXhpc3RzIT09dm9pZCAwKSYmKGEub3B0aW9ucz1pKSxzIT09dm9pZCAwJiYoYS5hbm5vdGF0aW9uSWQ9cyksYX1lLmNyZWF0ZT10O2Z1bmN0aW9uIG4ocil7bGV0IGk9cjtyZXR1cm4gaSYmaS5raW5kPT09ImRlbGV0ZSImJlMuc3RyaW5nKGkudXJpKSYmKGkub3B0aW9ucz09PXZvaWQgMHx8KGkub3B0aW9ucy5yZWN1cnNpdmU9PT12b2lkIDB8fFMuYm9vbGVhbihpLm9wdGlvbnMucmVjdXJzaXZlKSkmJihpLm9wdGlvbnMuaWdub3JlSWZOb3RFeGlzdHM9PT12b2lkIDB8fFMuYm9vbGVhbihpLm9wdGlvbnMuaWdub3JlSWZOb3RFeGlzdHMpKSkmJihpLmFubm90YXRpb25JZD09PXZvaWQgMHx8SHQuaXMoaS5hbm5vdGF0aW9uSWQpKX1lLmlzPW59KSgkaXx8KCRpPXt9KSk7dmFyIEJpOyhmdW5jdGlvbihlKXtmdW5jdGlvbiB0KG4pe2xldCByPW47cmV0dXJuIHImJihyLmNoYW5nZXMhPT12b2lkIDB8fHIuZG9jdW1lbnRDaGFuZ2VzIT09dm9pZCAwKSYmKHIuZG9jdW1lbnRDaGFuZ2VzPT09dm9pZCAwfHxyLmRvY3VtZW50Q2hhbmdlcy5ldmVyeShpPT5TLnN0cmluZyhpLmtpbmQpP1ZpLmlzKGkpfHxVaS5pcyhpKXx8JGkuaXMoaSk6Y3IuaXMoaSkpKX1lLmlzPXR9KShCaXx8KEJpPXt9KSk7dmFyIENsOyhmdW5jdGlvbihlKXtmdW5jdGlvbiB0KHIpe3JldHVybnt1cmk6cn19ZS5jcmVhdGU9dDtmdW5jdGlvbiBuKHIpe2xldCBpPXI7cmV0dXJuIFMuZGVmaW5lZChpKSYmUy5zdHJpbmcoaS51cmkpfWUuaXM9bn0pKENsfHwoQ2w9e30pKTt2YXIgcWk7KGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQocixpKXtyZXR1cm57dXJpOnIsdmVyc2lvbjppfX1lLmNyZWF0ZT10O2Z1bmN0aW9uIG4ocil7bGV0IGk9cjtyZXR1cm4gUy5kZWZpbmVkKGkpJiZTLnN0cmluZyhpLnVyaSkmJlMuaW50ZWdlcihpLnZlcnNpb24pfWUuaXM9bn0pKHFpfHwocWk9e30pKTt2YXIgamk7KGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQocixpKXtyZXR1cm57dXJpOnIsdmVyc2lvbjppfX1lLmNyZWF0ZT10O2Z1bmN0aW9uIG4ocil7bGV0IGk9cjtyZXR1cm4gUy5kZWZpbmVkKGkpJiZTLnN0cmluZyhpLnVyaSkmJihpLnZlcnNpb249PT1udWxsfHxTLmludGVnZXIoaS52ZXJzaW9uKSl9ZS5pcz1ufSkoaml8fChqaT17fSkpO3ZhciBfbDsoZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChyLGkscyxhKXtyZXR1cm57dXJpOnIsbGFuZ3VhZ2VJZDppLHZlcnNpb246cyx0ZXh0OmF9fWUuY3JlYXRlPXQ7ZnVuY3Rpb24gbihyKXtsZXQgaT1yO3JldHVybiBTLmRlZmluZWQoaSkmJlMuc3RyaW5nKGkudXJpKSYmUy5zdHJpbmcoaS5sYW5ndWFnZUlkKSYmUy5pbnRlZ2VyKGkudmVyc2lvbikmJlMuc3RyaW5nKGkudGV4dCl9ZS5pcz1ufSkoX2x8fChfbD17fSkpO3ZhciAkZTsoZnVuY3Rpb24oZSl7ZS5QbGFpblRleHQ9InBsYWludGV4dCIsZS5NYXJrZG93bj0ibWFya2Rvd24iO2Z1bmN0aW9uIHQobil7Y29uc3Qgcj1uO3JldHVybiByPT09ZS5QbGFpblRleHR8fHI9PT1lLk1hcmtkb3dufWUuaXM9dH0pKCRlfHwoJGU9e30pKTt2YXIgRm47KGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQobil7Y29uc3Qgcj1uO3JldHVybiBTLm9iamVjdExpdGVyYWwobikmJiRlLmlzKHIua2luZCkmJlMuc3RyaW5nKHIudmFsdWUpfWUuaXM9dH0pKEZufHwoRm49e30pKTt2YXIgVjsoZnVuY3Rpb24oZSl7ZS5UZXh0PTEsZS5NZXRob2Q9MixlLkZ1bmN0aW9uPTMsZS5Db25zdHJ1Y3Rvcj00LGUuRmllbGQ9NSxlLlZhcmlhYmxlPTYsZS5DbGFzcz03LGUuSW50ZXJmYWNlPTgsZS5Nb2R1bGU9OSxlLlByb3BlcnR5PTEwLGUuVW5pdD0xMSxlLlZhbHVlPTEyLGUuRW51bT0xMyxlLktleXdvcmQ9MTQsZS5TbmlwcGV0PTE1LGUuQ29sb3I9MTYsZS5GaWxlPTE3LGUuUmVmZXJlbmNlPTE4LGUuRm9sZGVyPTE5LGUuRW51bU1lbWJlcj0yMCxlLkNvbnN0YW50PTIxLGUuU3RydWN0PTIyLGUuRXZlbnQ9MjMsZS5PcGVyYXRvcj0yNCxlLlR5cGVQYXJhbWV0ZXI9MjV9KShWfHwoVj17fSkpO3ZhciBSZTsoZnVuY3Rpb24oZSl7ZS5QbGFpblRleHQ9MSxlLlNuaXBwZXQ9Mn0pKFJlfHwoUmU9e30pKTt2YXIga3Q7KGZ1bmN0aW9uKGUpe2UuRGVwcmVjYXRlZD0xfSkoa3R8fChrdD17fSkpO3ZhciBrbDsoZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChyLGkscyl7cmV0dXJue25ld1RleHQ6cixpbnNlcnQ6aSxyZXBsYWNlOnN9fWUuY3JlYXRlPXQ7ZnVuY3Rpb24gbihyKXtjb25zdCBpPXI7cmV0dXJuIGkmJlMuc3RyaW5nKGkubmV3VGV4dCkmJkouaXMoaS5pbnNlcnQpJiZKLmlzKGkucmVwbGFjZSl9ZS5pcz1ufSkoa2x8fChrbD17fSkpO3ZhciBFbDsoZnVuY3Rpb24oZSl7ZS5hc0lzPTEsZS5hZGp1c3RJbmRlbnRhdGlvbj0yfSkoRWx8fChFbD17fSkpO3ZhciBGbDsoZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChuKXtjb25zdCByPW47cmV0dXJuIHImJihTLnN0cmluZyhyLmRldGFpbCl8fHIuZGV0YWlsPT09dm9pZCAwKSYmKFMuc3RyaW5nKHIuZGVzY3JpcHRpb24pfHxyLmRlc2NyaXB0aW9uPT09dm9pZCAwKX1lLmlzPXR9KShGbHx8KEZsPXt9KSk7dmFyIFJsOyhmdW5jdGlvbihlKXtmdW5jdGlvbiB0KG4pe3JldHVybntsYWJlbDpufX1lLmNyZWF0ZT10fSkoUmx8fChSbD17fSkpO3ZhciBObDsoZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChuLHIpe3JldHVybntpdGVtczpufHxbXSxpc0luY29tcGxldGU6ISFyfX1lLmNyZWF0ZT10fSkoTmx8fChObD17fSkpO3ZhciBocjsoZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChyKXtyZXR1cm4gci5yZXBsYWNlKC9bXFxgKl97fVtcXSgpIytcLS4hXS9nLCJcXCQmIil9ZS5mcm9tUGxhaW5UZXh0PXQ7ZnVuY3Rpb24gbihyKXtjb25zdCBpPXI7cmV0dXJuIFMuc3RyaW5nKGkpfHxTLm9iamVjdExpdGVyYWwoaSkmJlMuc3RyaW5nKGkubGFuZ3VhZ2UpJiZTLnN0cmluZyhpLnZhbHVlKX1lLmlzPW59KShocnx8KGhyPXt9KSk7dmFyIERsOyhmdW5jdGlvbihlKXtmdW5jdGlvbiB0KG4pe2xldCByPW47cmV0dXJuISFyJiZTLm9iamVjdExpdGVyYWwocikmJihGbi5pcyhyLmNvbnRlbnRzKXx8aHIuaXMoci5jb250ZW50cyl8fFMudHlwZWRBcnJheShyLmNvbnRlbnRzLGhyLmlzKSkmJihuLnJhbmdlPT09dm9pZCAwfHxKLmlzKG4ucmFuZ2UpKX1lLmlzPXR9KShEbHx8KERsPXt9KSk7dmFyIElsOyhmdW5jdGlvbihlKXtmdW5jdGlvbiB0KG4scil7cmV0dXJuIHI/e2xhYmVsOm4sZG9jdW1lbnRhdGlvbjpyfTp7bGFiZWw6bn19ZS5jcmVhdGU9dH0pKElsfHwoSWw9e30pKTt2YXIgQWw7KGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQobixyLC4uLmkpe2xldCBzPXtsYWJlbDpufTtyZXR1cm4gUy5kZWZpbmVkKHIpJiYocy5kb2N1bWVudGF0aW9uPXIpLFMuZGVmaW5lZChpKT9zLnBhcmFtZXRlcnM9aTpzLnBhcmFtZXRlcnM9W10sc31lLmNyZWF0ZT10fSkoQWx8fChBbD17fSkpO3ZhciBHdDsoZnVuY3Rpb24oZSl7ZS5UZXh0PTEsZS5SZWFkPTIsZS5Xcml0ZT0zfSkoR3R8fChHdD17fSkpO3ZhciBNbDsoZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChuLHIpe2xldCBpPXtyYW5nZTpufTtyZXR1cm4gUy5udW1iZXIocikmJihpLmtpbmQ9ciksaX1lLmNyZWF0ZT10fSkoTWx8fChNbD17fSkpO3ZhciBLZTsoZnVuY3Rpb24oZSl7ZS5GaWxlPTEsZS5Nb2R1bGU9MixlLk5hbWVzcGFjZT0zLGUuUGFja2FnZT00LGUuQ2xhc3M9NSxlLk1ldGhvZD02LGUuUHJvcGVydHk9NyxlLkZpZWxkPTgsZS5Db25zdHJ1Y3Rvcj05LGUuRW51bT0xMCxlLkludGVyZmFjZT0xMSxlLkZ1bmN0aW9uPTEyLGUuVmFyaWFibGU9MTMsZS5Db25zdGFudD0xNCxlLlN0cmluZz0xNSxlLk51bWJlcj0xNixlLkJvb2xlYW49MTcsZS5BcnJheT0xOCxlLk9iamVjdD0xOSxlLktleT0yMCxlLk51bGw9MjEsZS5FbnVtTWVtYmVyPTIyLGUuU3RydWN0PTIzLGUuRXZlbnQ9MjQsZS5PcGVyYXRvcj0yNSxlLlR5cGVQYXJhbWV0ZXI9MjZ9KShLZXx8KEtlPXt9KSk7dmFyIExsOyhmdW5jdGlvbihlKXtlLkRlcHJlY2F0ZWQ9MX0pKExsfHwoTGw9e30pKTt2YXIgemw7KGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQobixyLGkscyxhKXtsZXQgbD17bmFtZTpuLGtpbmQ6cixsb2NhdGlvbjp7dXJpOnMscmFuZ2U6aX19O3JldHVybiBhJiYobC5jb250YWluZXJOYW1lPWEpLGx9ZS5jcmVhdGU9dH0pKHpsfHwoemw9e30pKTt2YXIgUGw7KGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQobixyLGkscyl7cmV0dXJuIHMhPT12b2lkIDA/e25hbWU6bixraW5kOnIsbG9jYXRpb246e3VyaTppLHJhbmdlOnN9fTp7bmFtZTpuLGtpbmQ6cixsb2NhdGlvbjp7dXJpOml9fX1lLmNyZWF0ZT10fSkoUGx8fChQbD17fSkpO3ZhciBUbDsoZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChyLGkscyxhLGwsbyl7bGV0IGM9e25hbWU6cixkZXRhaWw6aSxraW5kOnMscmFuZ2U6YSxzZWxlY3Rpb25SYW5nZTpsfTtyZXR1cm4gbyE9PXZvaWQgMCYmKGMuY2hpbGRyZW49byksY31lLmNyZWF0ZT10O2Z1bmN0aW9uIG4ocil7bGV0IGk9cjtyZXR1cm4gaSYmUy5zdHJpbmcoaS5uYW1lKSYmUy5udW1iZXIoaS5raW5kKSYmSi5pcyhpLnJhbmdlKSYmSi5pcyhpLnNlbGVjdGlvblJhbmdlKSYmKGkuZGV0YWlsPT09dm9pZCAwfHxTLnN0cmluZyhpLmRldGFpbCkpJiYoaS5kZXByZWNhdGVkPT09dm9pZCAwfHxTLmJvb2xlYW4oaS5kZXByZWNhdGVkKSkmJihpLmNoaWxkcmVuPT09dm9pZCAwfHxBcnJheS5pc0FycmF5KGkuY2hpbGRyZW4pKSYmKGkudGFncz09PXZvaWQgMHx8QXJyYXkuaXNBcnJheShpLnRhZ3MpKX1lLmlzPW59KShUbHx8KFRsPXt9KSk7dmFyIEhpOyhmdW5jdGlvbihlKXtlLkVtcHR5PSIiLGUuUXVpY2tGaXg9InF1aWNrZml4IixlLlJlZmFjdG9yPSJyZWZhY3RvciIsZS5SZWZhY3RvckV4dHJhY3Q9InJlZmFjdG9yLmV4dHJhY3QiLGUuUmVmYWN0b3JJbmxpbmU9InJlZmFjdG9yLmlubGluZSIsZS5SZWZhY3RvclJld3JpdGU9InJlZmFjdG9yLnJld3JpdGUiLGUuU291cmNlPSJzb3VyY2UiLGUuU291cmNlT3JnYW5pemVJbXBvcnRzPSJzb3VyY2Uub3JnYW5pemVJbXBvcnRzIixlLlNvdXJjZUZpeEFsbD0ic291cmNlLmZpeEFsbCJ9KShIaXx8KEhpPXt9KSk7dmFyIGRyOyhmdW5jdGlvbihlKXtlLkludm9rZWQ9MSxlLkF1dG9tYXRpYz0yfSkoZHJ8fChkcj17fSkpO3ZhciBPbDsoZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChyLGkscyl7bGV0IGE9e2RpYWdub3N0aWNzOnJ9O3JldHVybiBpIT1udWxsJiYoYS5vbmx5PWkpLHMhPW51bGwmJihhLnRyaWdnZXJLaW5kPXMpLGF9ZS5jcmVhdGU9dDtmdW5jdGlvbiBuKHIpe2xldCBpPXI7cmV0dXJuIFMuZGVmaW5lZChpKSYmUy50eXBlZEFycmF5KGkuZGlhZ25vc3RpY3MsbHIuaXMpJiYoaS5vbmx5PT09dm9pZCAwfHxTLnR5cGVkQXJyYXkoaS5vbmx5LFMuc3RyaW5nKSkmJihpLnRyaWdnZXJLaW5kPT09dm9pZCAwfHxpLnRyaWdnZXJLaW5kPT09ZHIuSW52b2tlZHx8aS50cmlnZ2VyS2luZD09PWRyLkF1dG9tYXRpYyl9ZS5pcz1ufSkoT2x8fChPbD17fSkpO3ZhciBHaTsoZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChyLGkscyl7bGV0IGE9e3RpdGxlOnJ9LGw9ITA7cmV0dXJuIHR5cGVvZiBpPT0ic3RyaW5nIj8obD0hMSxhLmtpbmQ9aSk6X3QuaXMoaSk/YS5jb21tYW5kPWk6YS5lZGl0PWksbCYmcyE9PXZvaWQgMCYmKGEua2luZD1zKSxhfWUuY3JlYXRlPXQ7ZnVuY3Rpb24gbihyKXtsZXQgaT1yO3JldHVybiBpJiZTLnN0cmluZyhpLnRpdGxlKSYmKGkuZGlhZ25vc3RpY3M9PT12b2lkIDB8fFMudHlwZWRBcnJheShpLmRpYWdub3N0aWNzLGxyLmlzKSkmJihpLmtpbmQ9PT12b2lkIDB8fFMuc3RyaW5nKGkua2luZCkpJiYoaS5lZGl0IT09dm9pZCAwfHxpLmNvbW1hbmQhPT12b2lkIDApJiYoaS5jb21tYW5kPT09dm9pZCAwfHxfdC5pcyhpLmNvbW1hbmQpKSYmKGkuaXNQcmVmZXJyZWQ9PT12b2lkIDB8fFMuYm9vbGVhbihpLmlzUHJlZmVycmVkKSkmJihpLmVkaXQ9PT12b2lkIDB8fEJpLmlzKGkuZWRpdCkpfWUuaXM9bn0pKEdpfHwoR2k9e30pKTt2YXIgV2w7KGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQocixpKXtsZXQgcz17cmFuZ2U6cn07cmV0dXJuIFMuZGVmaW5lZChpKSYmKHMuZGF0YT1pKSxzfWUuY3JlYXRlPXQ7ZnVuY3Rpb24gbihyKXtsZXQgaT1yO3JldHVybiBTLmRlZmluZWQoaSkmJkouaXMoaS5yYW5nZSkmJihTLnVuZGVmaW5lZChpLmNvbW1hbmQpfHxfdC5pcyhpLmNvbW1hbmQpKX1lLmlzPW59KShXbHx8KFdsPXt9KSk7dmFyIFZsOyhmdW5jdGlvbihlKXtmdW5jdGlvbiB0KHIsaSl7cmV0dXJue3RhYlNpemU6cixpbnNlcnRTcGFjZXM6aX19ZS5jcmVhdGU9dDtmdW5jdGlvbiBuKHIpe2xldCBpPXI7cmV0dXJuIFMuZGVmaW5lZChpKSYmUy51aW50ZWdlcihpLnRhYlNpemUpJiZTLmJvb2xlYW4oaS5pbnNlcnRTcGFjZXMpfWUuaXM9bn0pKFZsfHwoVmw9e30pKTt2YXIgVWw7KGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQocixpLHMpe3JldHVybntyYW5nZTpyLHRhcmdldDppLGRhdGE6c319ZS5jcmVhdGU9dDtmdW5jdGlvbiBuKHIpe2xldCBpPXI7cmV0dXJuIFMuZGVmaW5lZChpKSYmSi5pcyhpLnJhbmdlKSYmKFMudW5kZWZpbmVkKGkudGFyZ2V0KXx8Uy5zdHJpbmcoaS50YXJnZXQpKX1lLmlzPW59KShVbHx8KFVsPXt9KSk7dmFyIHVyOyhmdW5jdGlvbihlKXtmdW5jdGlvbiB0KHIsaSl7cmV0dXJue3JhbmdlOnIscGFyZW50Oml9fWUuY3JlYXRlPXQ7ZnVuY3Rpb24gbihyKXtsZXQgaT1yO3JldHVybiBTLm9iamVjdExpdGVyYWwoaSkmJkouaXMoaS5yYW5nZSkmJihpLnBhcmVudD09PXZvaWQgMHx8ZS5pcyhpLnBhcmVudCkpfWUuaXM9bn0pKHVyfHwodXI9e30pKTt2YXIgJGw7KGZ1bmN0aW9uKGUpe2UubmFtZXNwYWNlPSJuYW1lc3BhY2UiLGUudHlwZT0idHlwZSIsZS5jbGFzcz0iY2xhc3MiLGUuZW51bT0iZW51bSIsZS5pbnRlcmZhY2U9ImludGVyZmFjZSIsZS5zdHJ1Y3Q9InN0cnVjdCIsZS50eXBlUGFyYW1ldGVyPSJ0eXBlUGFyYW1ldGVyIixlLnBhcmFtZXRlcj0icGFyYW1ldGVyIixlLnZhcmlhYmxlPSJ2YXJpYWJsZSIsZS5wcm9wZXJ0eT0icHJvcGVydHkiLGUuZW51bU1lbWJlcj0iZW51bU1lbWJlciIsZS5ldmVudD0iZXZlbnQiLGUuZnVuY3Rpb249ImZ1bmN0aW9uIixlLm1ldGhvZD0ibWV0aG9kIixlLm1hY3JvPSJtYWNybyIsZS5rZXl3b3JkPSJrZXl3b3JkIixlLm1vZGlmaWVyPSJtb2RpZmllciIsZS5jb21tZW50PSJjb21tZW50IixlLnN0cmluZz0ic3RyaW5nIixlLm51bWJlcj0ibnVtYmVyIixlLnJlZ2V4cD0icmVnZXhwIixlLm9wZXJhdG9yPSJvcGVyYXRvciIsZS5kZWNvcmF0b3I9ImRlY29yYXRvciJ9KSgkbHx8KCRsPXt9KSk7dmFyIEJsOyhmdW5jdGlvbihlKXtlLmRlY2xhcmF0aW9uPSJkZWNsYXJhdGlvbiIsZS5kZWZpbml0aW9uPSJkZWZpbml0aW9uIixlLnJlYWRvbmx5PSJyZWFkb25seSIsZS5zdGF0aWM9InN0YXRpYyIsZS5kZXByZWNhdGVkPSJkZXByZWNhdGVkIixlLmFic3RyYWN0PSJhYnN0cmFjdCIsZS5hc3luYz0iYXN5bmMiLGUubW9kaWZpY2F0aW9uPSJtb2RpZmljYXRpb24iLGUuZG9jdW1lbnRhdGlvbj0iZG9jdW1lbnRhdGlvbiIsZS5kZWZhdWx0TGlicmFyeT0iZGVmYXVsdExpYnJhcnkifSkoQmx8fChCbD17fSkpO3ZhciBxbDsoZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChuKXtjb25zdCByPW47cmV0dXJuIFMub2JqZWN0TGl0ZXJhbChyKSYmKHIucmVzdWx0SWQ9PT12b2lkIDB8fHR5cGVvZiByLnJlc3VsdElkPT0ic3RyaW5nIikmJkFycmF5LmlzQXJyYXkoci5kYXRhKSYmKHIuZGF0YS5sZW5ndGg9PT0wfHx0eXBlb2Ygci5kYXRhWzBdPT0ibnVtYmVyIil9ZS5pcz10fSkocWx8fChxbD17fSkpO3ZhciBqbDsoZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChyLGkpe3JldHVybntyYW5nZTpyLHRleHQ6aX19ZS5jcmVhdGU9dDtmdW5jdGlvbiBuKHIpe2NvbnN0IGk9cjtyZXR1cm4gaSE9bnVsbCYmSi5pcyhpLnJhbmdlKSYmUy5zdHJpbmcoaS50ZXh0KX1lLmlzPW59KShqbHx8KGpsPXt9KSk7dmFyIEhsOyhmdW5jdGlvbihlKXtmdW5jdGlvbiB0KHIsaSxzKXtyZXR1cm57cmFuZ2U6cix2YXJpYWJsZU5hbWU6aSxjYXNlU2Vuc2l0aXZlTG9va3VwOnN9fWUuY3JlYXRlPXQ7ZnVuY3Rpb24gbihyKXtjb25zdCBpPXI7cmV0dXJuIGkhPW51bGwmJkouaXMoaS5yYW5nZSkmJlMuYm9vbGVhbihpLmNhc2VTZW5zaXRpdmVMb29rdXApJiYoUy5zdHJpbmcoaS52YXJpYWJsZU5hbWUpfHxpLnZhcmlhYmxlTmFtZT09PXZvaWQgMCl9ZS5pcz1ufSkoSGx8fChIbD17fSkpO3ZhciBHbDsoZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChyLGkpe3JldHVybntyYW5nZTpyLGV4cHJlc3Npb246aX19ZS5jcmVhdGU9dDtmdW5jdGlvbiBuKHIpe2NvbnN0IGk9cjtyZXR1cm4gaSE9bnVsbCYmSi5pcyhpLnJhbmdlKSYmKFMuc3RyaW5nKGkuZXhwcmVzc2lvbil8fGkuZXhwcmVzc2lvbj09PXZvaWQgMCl9ZS5pcz1ufSkoR2x8fChHbD17fSkpO3ZhciBKbDsoZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChyLGkpe3JldHVybntmcmFtZUlkOnIsc3RvcHBlZExvY2F0aW9uOml9fWUuY3JlYXRlPXQ7ZnVuY3Rpb24gbihyKXtjb25zdCBpPXI7cmV0dXJuIFMuZGVmaW5lZChpKSYmSi5pcyhyLnN0b3BwZWRMb2NhdGlvbil9ZS5pcz1ufSkoSmx8fChKbD17fSkpO3ZhciBKaTsoZnVuY3Rpb24oZSl7ZS5UeXBlPTEsZS5QYXJhbWV0ZXI9MjtmdW5jdGlvbiB0KG4pe3JldHVybiBuPT09MXx8bj09PTJ9ZS5pcz10fSkoSml8fChKaT17fSkpO3ZhciBYaTsoZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChyKXtyZXR1cm57dmFsdWU6cn19ZS5jcmVhdGU9dDtmdW5jdGlvbiBuKHIpe2NvbnN0IGk9cjtyZXR1cm4gUy5vYmplY3RMaXRlcmFsKGkpJiYoaS50b29sdGlwPT09dm9pZCAwfHxTLnN0cmluZyhpLnRvb2x0aXApfHxGbi5pcyhpLnRvb2x0aXApKSYmKGkubG9jYXRpb249PT12b2lkIDB8fEVuLmlzKGkubG9jYXRpb24pKSYmKGkuY29tbWFuZD09PXZvaWQgMHx8X3QuaXMoaS5jb21tYW5kKSl9ZS5pcz1ufSkoWGl8fChYaT17fSkpO3ZhciBYbDsoZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChyLGkscyl7Y29uc3QgYT17cG9zaXRpb246cixsYWJlbDppfTtyZXR1cm4gcyE9PXZvaWQgMCYmKGEua2luZD1zKSxhfWUuY3JlYXRlPXQ7ZnVuY3Rpb24gbihyKXtjb25zdCBpPXI7cmV0dXJuIFMub2JqZWN0TGl0ZXJhbChpKSYmdmUuaXMoaS5wb3NpdGlvbikmJihTLnN0cmluZyhpLmxhYmVsKXx8Uy50eXBlZEFycmF5KGkubGFiZWwsWGkuaXMpKSYmKGkua2luZD09PXZvaWQgMHx8SmkuaXMoaS5raW5kKSkmJmkudGV4dEVkaXRzPT09dm9pZCAwfHxTLnR5cGVkQXJyYXkoaS50ZXh0RWRpdHMsVS5pcykmJihpLnRvb2x0aXA9PT12b2lkIDB8fFMuc3RyaW5nKGkudG9vbHRpcCl8fEZuLmlzKGkudG9vbHRpcCkpJiYoaS5wYWRkaW5nTGVmdD09PXZvaWQgMHx8Uy5ib29sZWFuKGkucGFkZGluZ0xlZnQpKSYmKGkucGFkZGluZ1JpZ2h0PT09dm9pZCAwfHxTLmJvb2xlYW4oaS5wYWRkaW5nUmlnaHQpKX1lLmlzPW59KShYbHx8KFhsPXt9KSk7dmFyIFlsOyhmdW5jdGlvbihlKXtmdW5jdGlvbiB0KG4pe3JldHVybntraW5kOiJzbmlwcGV0Iix2YWx1ZTpufX1lLmNyZWF0ZVNuaXBwZXQ9dH0pKFlsfHwoWWw9e30pKTt2YXIgUWw7KGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQobixyLGkscyl7cmV0dXJue2luc2VydFRleHQ6bixmaWx0ZXJUZXh0OnIscmFuZ2U6aSxjb21tYW5kOnN9fWUuY3JlYXRlPXR9KShRbHx8KFFsPXt9KSk7dmFyIEtsOyhmdW5jdGlvbihlKXtmdW5jdGlvbiB0KG4pe3JldHVybntpdGVtczpufX1lLmNyZWF0ZT10fSkoS2x8fChLbD17fSkpO3ZhciBabDsoZnVuY3Rpb24oZSl7ZS5JbnZva2VkPTAsZS5BdXRvbWF0aWM9MX0pKFpsfHwoWmw9e30pKTt2YXIgZWM7KGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQobixyKXtyZXR1cm57cmFuZ2U6bix0ZXh0OnJ9fWUuY3JlYXRlPXR9KShlY3x8KGVjPXt9KSk7dmFyIHRjOyhmdW5jdGlvbihlKXtmdW5jdGlvbiB0KG4scil7cmV0dXJue3RyaWdnZXJLaW5kOm4sc2VsZWN0ZWRDb21wbGV0aW9uSW5mbzpyfX1lLmNyZWF0ZT10fSkodGN8fCh0Yz17fSkpO3ZhciBuYzsoZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChuKXtjb25zdCByPW47cmV0dXJuIFMub2JqZWN0TGl0ZXJhbChyKSYmUGkuaXMoci51cmkpJiZTLnN0cmluZyhyLm5hbWUpfWUuaXM9dH0pKG5jfHwobmM9e30pKTt2YXIgcmM7KGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQocyxhLGwsbyl7cmV0dXJuIG5ldyBQcChzLGEsbCxvKX1lLmNyZWF0ZT10O2Z1bmN0aW9uIG4ocyl7bGV0IGE9cztyZXR1cm4hIShTLmRlZmluZWQoYSkmJlMuc3RyaW5nKGEudXJpKSYmKFMudW5kZWZpbmVkKGEubGFuZ3VhZ2VJZCl8fFMuc3RyaW5nKGEubGFuZ3VhZ2VJZCkpJiZTLnVpbnRlZ2VyKGEubGluZUNvdW50KSYmUy5mdW5jKGEuZ2V0VGV4dCkmJlMuZnVuYyhhLnBvc2l0aW9uQXQpJiZTLmZ1bmMoYS5vZmZzZXRBdCkpfWUuaXM9bjtmdW5jdGlvbiByKHMsYSl7bGV0IGw9cy5nZXRUZXh0KCksbz1pKGEsKGQsdSk9PntsZXQgZj1kLnJhbmdlLnN0YXJ0LmxpbmUtdS5yYW5nZS5zdGFydC5saW5lO3JldHVybiBmPT09MD9kLnJhbmdlLnN0YXJ0LmNoYXJhY3Rlci11LnJhbmdlLnN0YXJ0LmNoYXJhY3RlcjpmfSksYz1sLmxlbmd0aDtmb3IobGV0IGQ9by5sZW5ndGgtMTtkPj0wO2QtLSl7bGV0IHU9b1tkXSxmPXMub2Zmc2V0QXQodS5yYW5nZS5zdGFydCksbT1zLm9mZnNldEF0KHUucmFuZ2UuZW5kKTtpZihtPD1jKWw9bC5zdWJzdHJpbmcoMCxmKSt1Lm5ld1RleHQrbC5zdWJzdHJpbmcobSxsLmxlbmd0aCk7ZWxzZSB0aHJvdyBuZXcgRXJyb3IoIk92ZXJsYXBwaW5nIGVkaXQiKTtjPWZ9cmV0dXJuIGx9ZS5hcHBseUVkaXRzPXI7ZnVuY3Rpb24gaShzLGEpe2lmKHMubGVuZ3RoPD0xKXJldHVybiBzO2NvbnN0IGw9cy5sZW5ndGgvMnwwLG89cy5zbGljZSgwLGwpLGM9cy5zbGljZShsKTtpKG8sYSksaShjLGEpO2xldCBkPTAsdT0wLGY9MDtmb3IoO2Q8by5sZW5ndGgmJnU8Yy5sZW5ndGg7KWEob1tkXSxjW3VdKTw9MD9zW2YrK109b1tkKytdOnNbZisrXT1jW3UrK107Zm9yKDtkPG8ubGVuZ3RoOylzW2YrK109b1tkKytdO2Zvcig7dTxjLmxlbmd0aDspc1tmKytdPWNbdSsrXTtyZXR1cm4gc319KShyY3x8KHJjPXt9KSk7dmFyIFBwPWNsYXNze2NvbnN0cnVjdG9yKGUsdCxuLHIpe3RoaXMuX3VyaT1lLHRoaXMuX2xhbmd1YWdlSWQ9dCx0aGlzLl92ZXJzaW9uPW4sdGhpcy5fY29udGVudD1yLHRoaXMuX2xpbmVPZmZzZXRzPXZvaWQgMH1nZXQgdXJpKCl7cmV0dXJuIHRoaXMuX3VyaX1nZXQgbGFuZ3VhZ2VJZCgpe3JldHVybiB0aGlzLl9sYW5ndWFnZUlkfWdldCB2ZXJzaW9uKCl7cmV0dXJuIHRoaXMuX3ZlcnNpb259Z2V0VGV4dChlKXtpZihlKXtsZXQgdD10aGlzLm9mZnNldEF0KGUuc3RhcnQpLG49dGhpcy5vZmZzZXRBdChlLmVuZCk7cmV0dXJuIHRoaXMuX2NvbnRlbnQuc3Vic3RyaW5nKHQsbil9cmV0dXJuIHRoaXMuX2NvbnRlbnR9dXBkYXRlKGUsdCl7dGhpcy5fY29udGVudD1lLnRleHQsdGhpcy5fdmVyc2lvbj10LHRoaXMuX2xpbmVPZmZzZXRzPXZvaWQgMH1nZXRMaW5lT2Zmc2V0cygpe2lmKHRoaXMuX2xpbmVPZmZzZXRzPT09dm9pZCAwKXtsZXQgZT1bXSx0PXRoaXMuX2NvbnRlbnQsbj0hMDtmb3IobGV0IHI9MDtyPHQubGVuZ3RoO3IrKyl7biYmKGUucHVzaChyKSxuPSExKTtsZXQgaT10LmNoYXJBdChyKTtuPWk9PT0iXHIifHxpPT09YApgLGk9PT0iXHIiJiZyKzE8dC5sZW5ndGgmJnQuY2hhckF0KHIrMSk9PT1gCmAmJnIrK31uJiZ0Lmxlbmd0aD4wJiZlLnB1c2godC5sZW5ndGgpLHRoaXMuX2xpbmVPZmZzZXRzPWV9cmV0dXJuIHRoaXMuX2xpbmVPZmZzZXRzfXBvc2l0aW9uQXQoZSl7ZT1NYXRoLm1heChNYXRoLm1pbihlLHRoaXMuX2NvbnRlbnQubGVuZ3RoKSwwKTtsZXQgdD10aGlzLmdldExpbmVPZmZzZXRzKCksbj0wLHI9dC5sZW5ndGg7aWYocj09PTApcmV0dXJuIHZlLmNyZWF0ZSgwLGUpO2Zvcig7bjxyOyl7bGV0IHM9TWF0aC5mbG9vcigobityKS8yKTt0W3NdPmU/cj1zOm49cysxfWxldCBpPW4tMTtyZXR1cm4gdmUuY3JlYXRlKGksZS10W2ldKX1vZmZzZXRBdChlKXtsZXQgdD10aGlzLmdldExpbmVPZmZzZXRzKCk7aWYoZS5saW5lPj10Lmxlbmd0aClyZXR1cm4gdGhpcy5fY29udGVudC5sZW5ndGg7aWYoZS5saW5lPDApcmV0dXJuIDA7bGV0IG49dFtlLmxpbmVdLHI9ZS5saW5lKzE8dC5sZW5ndGg/dFtlLmxpbmUrMV06dGhpcy5fY29udGVudC5sZW5ndGg7cmV0dXJuIE1hdGgubWF4KE1hdGgubWluKG4rZS5jaGFyYWN0ZXIsciksbil9Z2V0IGxpbmVDb3VudCgpe3JldHVybiB0aGlzLmdldExpbmVPZmZzZXRzKCkubGVuZ3RofX0sUzsoZnVuY3Rpb24oZSl7Y29uc3QgdD1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nO2Z1bmN0aW9uIG4obSl7cmV0dXJuIHR5cGVvZiBtPCJ1In1lLmRlZmluZWQ9bjtmdW5jdGlvbiByKG0pe3JldHVybiB0eXBlb2YgbT4idSJ9ZS51bmRlZmluZWQ9cjtmdW5jdGlvbiBpKG0pe3JldHVybiBtPT09ITB8fG09PT0hMX1lLmJvb2xlYW49aTtmdW5jdGlvbiBzKG0pe3JldHVybiB0LmNhbGwobSk9PT0iW29iamVjdCBTdHJpbmddIn1lLnN0cmluZz1zO2Z1bmN0aW9uIGEobSl7cmV0dXJuIHQuY2FsbChtKT09PSJbb2JqZWN0IE51bWJlcl0ifWUubnVtYmVyPWE7ZnVuY3Rpb24gbChtLHYseSl7cmV0dXJuIHQuY2FsbChtKT09PSJbb2JqZWN0IE51bWJlcl0iJiZ2PD1tJiZtPD15fWUubnVtYmVyUmFuZ2U9bDtmdW5jdGlvbiBvKG0pe3JldHVybiB0LmNhbGwobSk9PT0iW29iamVjdCBOdW1iZXJdIiYmLTIxNDc0ODM2NDg8PW0mJm08PTIxNDc0ODM2NDd9ZS5pbnRlZ2VyPW87ZnVuY3Rpb24gYyhtKXtyZXR1cm4gdC5jYWxsKG0pPT09IltvYmplY3QgTnVtYmVyXSImJjA8PW0mJm08PTIxNDc0ODM2NDd9ZS51aW50ZWdlcj1jO2Z1bmN0aW9uIGQobSl7cmV0dXJuIHQuY2FsbChtKT09PSJbb2JqZWN0IEZ1bmN0aW9uXSJ9ZS5mdW5jPWQ7ZnVuY3Rpb24gdShtKXtyZXR1cm4gbSE9PW51bGwmJnR5cGVvZiBtPT0ib2JqZWN0In1lLm9iamVjdExpdGVyYWw9dTtmdW5jdGlvbiBmKG0sdil7cmV0dXJuIEFycmF5LmlzQXJyYXkobSkmJm0uZXZlcnkodil9ZS50eXBlZEFycmF5PWZ9KShTfHwoUz17fSkpO3ZhciBpYz1jbGFzcyBOc3tjb25zdHJ1Y3Rvcih0LG4scixpKXt0aGlzLl91cmk9dCx0aGlzLl9sYW5ndWFnZUlkPW4sdGhpcy5fdmVyc2lvbj1yLHRoaXMuX2NvbnRlbnQ9aSx0aGlzLl9saW5lT2Zmc2V0cz12b2lkIDB9Z2V0IHVyaSgpe3JldHVybiB0aGlzLl91cml9Z2V0IGxhbmd1YWdlSWQoKXtyZXR1cm4gdGhpcy5fbGFuZ3VhZ2VJZH1nZXQgdmVyc2lvbigpe3JldHVybiB0aGlzLl92ZXJzaW9ufWdldFRleHQodCl7aWYodCl7Y29uc3Qgbj10aGlzLm9mZnNldEF0KHQuc3RhcnQpLHI9dGhpcy5vZmZzZXRBdCh0LmVuZCk7cmV0dXJuIHRoaXMuX2NvbnRlbnQuc3Vic3RyaW5nKG4scil9cmV0dXJuIHRoaXMuX2NvbnRlbnR9dXBkYXRlKHQsbil7Zm9yKGxldCByIG9mIHQpaWYoTnMuaXNJbmNyZW1lbnRhbChyKSl7Y29uc3QgaT1hYyhyLnJhbmdlKSxzPXRoaXMub2Zmc2V0QXQoaS5zdGFydCksYT10aGlzLm9mZnNldEF0KGkuZW5kKTt0aGlzLl9jb250ZW50PXRoaXMuX2NvbnRlbnQuc3Vic3RyaW5nKDAscykrci50ZXh0K3RoaXMuX2NvbnRlbnQuc3Vic3RyaW5nKGEsdGhpcy5fY29udGVudC5sZW5ndGgpO2NvbnN0IGw9TWF0aC5tYXgoaS5zdGFydC5saW5lLDApLG89TWF0aC5tYXgoaS5lbmQubGluZSwwKTtsZXQgYz10aGlzLl9saW5lT2Zmc2V0cztjb25zdCBkPXNjKHIudGV4dCwhMSxzKTtpZihvLWw9PT1kLmxlbmd0aClmb3IobGV0IGY9MCxtPWQubGVuZ3RoO2Y8bTtmKyspY1tmK2wrMV09ZFtmXTtlbHNlIGQubGVuZ3RoPDFlND9jLnNwbGljZShsKzEsby1sLC4uLmQpOnRoaXMuX2xpbmVPZmZzZXRzPWM9Yy5zbGljZSgwLGwrMSkuY29uY2F0KGQsYy5zbGljZShvKzEpKTtjb25zdCB1PXIudGV4dC5sZW5ndGgtKGEtcyk7aWYodSE9PTApZm9yKGxldCBmPWwrMStkLmxlbmd0aCxtPWMubGVuZ3RoO2Y8bTtmKyspY1tmXT1jW2ZdK3V9ZWxzZSBpZihOcy5pc0Z1bGwocikpdGhpcy5fY29udGVudD1yLnRleHQsdGhpcy5fbGluZU9mZnNldHM9dm9pZCAwO2Vsc2UgdGhyb3cgbmV3IEVycm9yKCJVbmtub3duIGNoYW5nZSBldmVudCByZWNlaXZlZCIpO3RoaXMuX3ZlcnNpb249bn1nZXRMaW5lT2Zmc2V0cygpe3JldHVybiB0aGlzLl9saW5lT2Zmc2V0cz09PXZvaWQgMCYmKHRoaXMuX2xpbmVPZmZzZXRzPXNjKHRoaXMuX2NvbnRlbnQsITApKSx0aGlzLl9saW5lT2Zmc2V0c31wb3NpdGlvbkF0KHQpe3Q9TWF0aC5tYXgoTWF0aC5taW4odCx0aGlzLl9jb250ZW50Lmxlbmd0aCksMCk7bGV0IG49dGhpcy5nZXRMaW5lT2Zmc2V0cygpLHI9MCxpPW4ubGVuZ3RoO2lmKGk9PT0wKXJldHVybntsaW5lOjAsY2hhcmFjdGVyOnR9O2Zvcig7cjxpOyl7bGV0IGE9TWF0aC5mbG9vcigocitpKS8yKTtuW2FdPnQ/aT1hOnI9YSsxfWxldCBzPXItMTtyZXR1cm57bGluZTpzLGNoYXJhY3Rlcjp0LW5bc119fW9mZnNldEF0KHQpe2xldCBuPXRoaXMuZ2V0TGluZU9mZnNldHMoKTtpZih0LmxpbmU+PW4ubGVuZ3RoKXJldHVybiB0aGlzLl9jb250ZW50Lmxlbmd0aDtpZih0LmxpbmU8MClyZXR1cm4gMDtsZXQgcj1uW3QubGluZV0saT10LmxpbmUrMTxuLmxlbmd0aD9uW3QubGluZSsxXTp0aGlzLl9jb250ZW50Lmxlbmd0aDtyZXR1cm4gTWF0aC5tYXgoTWF0aC5taW4ocit0LmNoYXJhY3RlcixpKSxyKX1nZXQgbGluZUNvdW50KCl7cmV0dXJuIHRoaXMuZ2V0TGluZU9mZnNldHMoKS5sZW5ndGh9c3RhdGljIGlzSW5jcmVtZW50YWwodCl7bGV0IG49dDtyZXR1cm4gbiE9bnVsbCYmdHlwZW9mIG4udGV4dD09InN0cmluZyImJm4ucmFuZ2UhPT12b2lkIDAmJihuLnJhbmdlTGVuZ3RoPT09dm9pZCAwfHx0eXBlb2Ygbi5yYW5nZUxlbmd0aD09Im51bWJlciIpfXN0YXRpYyBpc0Z1bGwodCl7bGV0IG49dDtyZXR1cm4gbiE9bnVsbCYmdHlwZW9mIG4udGV4dD09InN0cmluZyImJm4ucmFuZ2U9PT12b2lkIDAmJm4ucmFuZ2VMZW5ndGg9PT12b2lkIDB9fSxZaTsoZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChpLHMsYSxsKXtyZXR1cm4gbmV3IGljKGkscyxhLGwpfWUuY3JlYXRlPXQ7ZnVuY3Rpb24gbihpLHMsYSl7aWYoaSBpbnN0YW5jZW9mIGljKXJldHVybiBpLnVwZGF0ZShzLGEpLGk7dGhyb3cgbmV3IEVycm9yKCJUZXh0RG9jdW1lbnQudXBkYXRlOiBkb2N1bWVudCBtdXN0IGJlIGNyZWF0ZWQgYnkgVGV4dERvY3VtZW50LmNyZWF0ZSIpfWUudXBkYXRlPW47ZnVuY3Rpb24gcihpLHMpe2xldCBhPWkuZ2V0VGV4dCgpLGw9UWkocy5tYXAoVHApLChkLHUpPT57bGV0IGY9ZC5yYW5nZS5zdGFydC5saW5lLXUucmFuZ2Uuc3RhcnQubGluZTtyZXR1cm4gZj09PTA/ZC5yYW5nZS5zdGFydC5jaGFyYWN0ZXItdS5yYW5nZS5zdGFydC5jaGFyYWN0ZXI6Zn0pLG89MDtjb25zdCBjPVtdO2Zvcihjb25zdCBkIG9mIGwpe2xldCB1PWkub2Zmc2V0QXQoZC5yYW5nZS5zdGFydCk7aWYodTxvKXRocm93IG5ldyBFcnJvcigiT3ZlcmxhcHBpbmcgZWRpdCIpO3U+byYmYy5wdXNoKGEuc3Vic3RyaW5nKG8sdSkpLGQubmV3VGV4dC5sZW5ndGgmJmMucHVzaChkLm5ld1RleHQpLG89aS5vZmZzZXRBdChkLnJhbmdlLmVuZCl9cmV0dXJuIGMucHVzaChhLnN1YnN0cihvKSksYy5qb2luKCIiKX1lLmFwcGx5RWRpdHM9cn0pKFlpfHwoWWk9e30pKTtmdW5jdGlvbiBRaShlLHQpe2lmKGUubGVuZ3RoPD0xKXJldHVybiBlO2NvbnN0IG49ZS5sZW5ndGgvMnwwLHI9ZS5zbGljZSgwLG4pLGk9ZS5zbGljZShuKTtRaShyLHQpLFFpKGksdCk7bGV0IHM9MCxhPTAsbD0wO2Zvcig7czxyLmxlbmd0aCYmYTxpLmxlbmd0aDspdChyW3NdLGlbYV0pPD0wP2VbbCsrXT1yW3MrK106ZVtsKytdPWlbYSsrXTtmb3IoO3M8ci5sZW5ndGg7KWVbbCsrXT1yW3MrK107Zm9yKDthPGkubGVuZ3RoOyllW2wrK109aVthKytdO3JldHVybiBlfWZ1bmN0aW9uIHNjKGUsdCxuPTApe2NvbnN0IHI9dD9bbl06W107Zm9yKGxldCBpPTA7aTxlLmxlbmd0aDtpKyspe2xldCBzPWUuY2hhckNvZGVBdChpKTsocz09PTEzfHxzPT09MTApJiYocz09PTEzJiZpKzE8ZS5sZW5ndGgmJmUuY2hhckNvZGVBdChpKzEpPT09MTAmJmkrKyxyLnB1c2gobitpKzEpKX1yZXR1cm4gcn1mdW5jdGlvbiBhYyhlKXtjb25zdCB0PWUuc3RhcnQsbj1lLmVuZDtyZXR1cm4gdC5saW5lPm4ubGluZXx8dC5saW5lPT09bi5saW5lJiZ0LmNoYXJhY3Rlcj5uLmNoYXJhY3Rlcj97c3RhcnQ6bixlbmQ6dH06ZX1mdW5jdGlvbiBUcChlKXtjb25zdCB0PWFjKGUucmFuZ2UpO3JldHVybiB0IT09ZS5yYW5nZT97bmV3VGV4dDplLm5ld1RleHQscmFuZ2U6dH06ZX12YXIgb2M7KGZ1bmN0aW9uKGUpe2UuTEFURVNUPXt0ZXh0RG9jdW1lbnQ6e2NvbXBsZXRpb246e2NvbXBsZXRpb25JdGVtOntkb2N1bWVudGF0aW9uRm9ybWF0OlskZS5NYXJrZG93biwkZS5QbGFpblRleHRdfX0saG92ZXI6e2NvbnRlbnRGb3JtYXQ6WyRlLk1hcmtkb3duLCRlLlBsYWluVGV4dF19fX19KShvY3x8KG9jPXt9KSk7dmFyIFJuOyhmdW5jdGlvbihlKXtlW2UuVW5rbm93bj0wXT0iVW5rbm93biIsZVtlLkZpbGU9MV09IkZpbGUiLGVbZS5EaXJlY3Rvcnk9Ml09IkRpcmVjdG9yeSIsZVtlLlN5bWJvbGljTGluaz02NF09IlN5bWJvbGljTGluayJ9KShSbnx8KFJuPXt9KSk7dmFyIGxjPXtFOiJFZGdlIixGRjoiRmlyZWZveCIsUzoiU2FmYXJpIixDOiJDaHJvbWUiLElFOiJJRSIsTzoiT3BlcmEifTtmdW5jdGlvbiBjYyhlKXtzd2l0Y2goZSl7Y2FzZSJleHBlcmltZW50YWwiOnJldHVybmDimqDvuI8gUHJvcGVydHkgaXMgZXhwZXJpbWVudGFsLiBCZSBjYXV0aW91cyB3aGVuIHVzaW5nIGl0Lu+4jwoKYDtjYXNlIm5vbnN0YW5kYXJkIjpyZXR1cm5g8J+aqO+4jyBQcm9wZXJ0eSBpcyBub25zdGFuZGFyZC4gQXZvaWQgdXNpbmcgaXQuCgpgO2Nhc2Uib2Jzb2xldGUiOnJldHVybmDwn5qo77iP77iP77iPIFByb3BlcnR5IGlzIG9ic29sZXRlLiBBdm9pZCB1c2luZyBpdC4KCmA7ZGVmYXVsdDpyZXR1cm4iIn19ZnVuY3Rpb24gcHQoZSx0LG4pe2xldCByO2lmKHQ/cj17a2luZDoibWFya2Rvd24iLHZhbHVlOldwKGUsbil9OnI9e2tpbmQ6InBsYWludGV4dCIsdmFsdWU6T3AoZSxuKX0sci52YWx1ZSE9PSIiKXJldHVybiByfWZ1bmN0aW9uIHByKGUpe3JldHVybiBlPWUucmVwbGFjZSgvW1xcYCpfe31bXF0oKSMrXC0uIV0vZywiXFwkJiIpLGUucmVwbGFjZSgvPC9nLCImbHQ7IikucmVwbGFjZSgvPi9nLCImZ3Q7Iil9ZnVuY3Rpb24gT3AoZSx0KXtpZighZS5kZXNjcmlwdGlvbnx8ZS5kZXNjcmlwdGlvbj09PSIiKXJldHVybiIiO2lmKHR5cGVvZiBlLmRlc2NyaXB0aW9uIT0ic3RyaW5nIilyZXR1cm4gZS5kZXNjcmlwdGlvbi52YWx1ZTtsZXQgbj0iIjtpZih0Py5kb2N1bWVudGF0aW9uIT09ITEpe2Uuc3RhdHVzJiYobis9Y2MoZS5zdGF0dXMpKSxuKz1lLmRlc2NyaXB0aW9uO2NvbnN0IHI9aGMoZS5icm93c2Vycyk7ciYmKG4rPWAKKGArcisiKSIpLCJzeW50YXgiaW4gZSYmKG4rPWAKClN5bnRheDogJHtlLnN5bnRheH1gKX1yZXR1cm4gZS5yZWZlcmVuY2VzJiZlLnJlZmVyZW5jZXMubGVuZ3RoPjAmJnQ/LnJlZmVyZW5jZXMhPT0hMSYmKG4ubGVuZ3RoPjAmJihuKz1gCgpgKSxuKz1lLnJlZmVyZW5jZXMubWFwKHI9PmAke3IubmFtZX06ICR7ci51cmx9YCkuam9pbigiIHwgIikpLG59ZnVuY3Rpb24gV3AoZSx0KXtpZighZS5kZXNjcmlwdGlvbnx8ZS5kZXNjcmlwdGlvbj09PSIiKXJldHVybiIiO2xldCBuPSIiO2lmKHQ/LmRvY3VtZW50YXRpb24hPT0hMSl7ZS5zdGF0dXMmJihuKz1jYyhlLnN0YXR1cykpLHR5cGVvZiBlLmRlc2NyaXB0aW9uPT0ic3RyaW5nIj9uKz1wcihlLmRlc2NyaXB0aW9uKTpuKz1lLmRlc2NyaXB0aW9uLmtpbmQ9PT0kZS5NYXJrZG93bj9lLmRlc2NyaXB0aW9uLnZhbHVlOnByKGUuZGVzY3JpcHRpb24udmFsdWUpO2NvbnN0IHI9aGMoZS5icm93c2Vycyk7ciYmKG4rPWAKCihgK3ByKHIpKyIpIiksInN5bnRheCJpbiBlJiZlLnN5bnRheCYmKG4rPWAKClN5bnRheDogJHtwcihlLnN5bnRheCl9YCl9cmV0dXJuIGUucmVmZXJlbmNlcyYmZS5yZWZlcmVuY2VzLmxlbmd0aD4wJiZ0Py5yZWZlcmVuY2VzIT09ITEmJihuLmxlbmd0aD4wJiYobis9YAoKYCksbis9ZS5yZWZlcmVuY2VzLm1hcChyPT5gWyR7ci5uYW1lfV0oJHtyLnVybH0pYCkuam9pbigiIHwgIikpLG59ZnVuY3Rpb24gaGMoZT1bXSl7cmV0dXJuIGUubGVuZ3RoPT09MD9udWxsOmUubWFwKHQ9PntsZXQgbj0iIjtjb25zdCByPXQubWF0Y2goLyhbQS1aXSspKFxkKyk/LyksaT1yWzFdLHM9clsyXTtyZXR1cm4gaSBpbiBsYyYmKG4rPWxjW2ldKSxzJiYobis9IiAiK3MpLG59KS5qb2luKCIsICIpfXZhciBWcD0vKF4jKFswLTlBLUZdezN9KXsxLDJ9JCl8KF4jKFswLTlBLUZdezR9KXsxLDJ9JCkvaSxVcD1be2xhYmVsOiJyZ2IiLGZ1bmM6InJnYigkcmVkLCAkZ3JlZW4sICRibHVlKSIsaW5zZXJ0VGV4dDoicmdiKCR7MTpyZWR9LCAkezI6Z3JlZW59LCAkezM6Ymx1ZX0pIixkZXNjOmcoIkNyZWF0ZXMgYSBDb2xvciBmcm9tIHJlZCwgZ3JlZW4sIGFuZCBibHVlIHZhbHVlcy4iKX0se2xhYmVsOiJyZ2JhIixmdW5jOiJyZ2JhKCRyZWQsICRncmVlbiwgJGJsdWUsICRhbHBoYSkiLGluc2VydFRleHQ6InJnYmEoJHsxOnJlZH0sICR7MjpncmVlbn0sICR7MzpibHVlfSwgJHs0OmFscGhhfSkiLGRlc2M6ZygiQ3JlYXRlcyBhIENvbG9yIGZyb20gcmVkLCBncmVlbiwgYmx1ZSwgYW5kIGFscGhhIHZhbHVlcy4iKX0se2xhYmVsOiJyZ2IgcmVsYXRpdmUiLGZ1bmM6InJnYihmcm9tICRjb2xvciAkcmVkICRncmVlbiAkYmx1ZSkiLGluc2VydFRleHQ6InJnYihmcm9tICR7MTpjb2xvcn0gJHsyOnJ9ICR7MzpnfSAkezQ6Yn0pIixkZXNjOmcoIkNyZWF0ZXMgYSBDb2xvciBmcm9tIHRoZSByZWQsIGdyZWVuLCBhbmQgYmx1ZSB2YWx1ZXMgb2YgYW5vdGhlciBDb2xvci4iKX0se2xhYmVsOiJoc2wiLGZ1bmM6ImhzbCgkaHVlLCAkc2F0dXJhdGlvbiwgJGxpZ2h0bmVzcykiLGluc2VydFRleHQ6ImhzbCgkezE6aHVlfSwgJHsyOnNhdHVyYXRpb259LCAkezM6bGlnaHRuZXNzfSkiLGRlc2M6ZygiQ3JlYXRlcyBhIENvbG9yIGZyb20gaHVlLCBzYXR1cmF0aW9uLCBhbmQgbGlnaHRuZXNzIHZhbHVlcy4iKX0se2xhYmVsOiJoc2xhIixmdW5jOiJoc2xhKCRodWUsICRzYXR1cmF0aW9uLCAkbGlnaHRuZXNzLCAkYWxwaGEpIixpbnNlcnRUZXh0OiJoc2xhKCR7MTpodWV9LCAkezI6c2F0dXJhdGlvbn0sICR7MzpsaWdodG5lc3N9LCAkezQ6YWxwaGF9KSIsZGVzYzpnKCJDcmVhdGVzIGEgQ29sb3IgZnJvbSBodWUsIHNhdHVyYXRpb24sIGxpZ2h0bmVzcywgYW5kIGFscGhhIHZhbHVlcy4iKX0se2xhYmVsOiJoc2wgcmVsYXRpdmUiLGZ1bmM6ImhzbChmcm9tICRjb2xvciAkaHVlICRzYXR1cmF0aW9uICRsaWdodG5lc3MpIixpbnNlcnRUZXh0OiJoc2woZnJvbSAkezE6Y29sb3J9ICR7MjpofSAkezM6c30gJHs0Omx9KSIsZGVzYzpnKCJDcmVhdGVzIGEgQ29sb3IgZnJvbSB0aGUgaHVlLCBzYXR1cmF0aW9uLCBhbmQgbGlnaHRuZXNzIHZhbHVlcyBvZiBhbm90aGVyIENvbG9yLiIpfSx7bGFiZWw6Imh3YiIsZnVuYzoiaHdiKCRodWUgJHdoaXRlICRibGFjaykiLGluc2VydFRleHQ6Imh3YigkezE6aHVlfSAkezI6d2hpdGV9ICR7MzpibGFja30pIixkZXNjOmcoIkNyZWF0ZXMgYSBDb2xvciBmcm9tIGh1ZSwgd2hpdGUsIGFuZCBibGFjayB2YWx1ZXMuIil9LHtsYWJlbDoiaHdiIHJlbGF0aXZlIixmdW5jOiJod2IoZnJvbSAkY29sb3IgJGh1ZSAkd2hpdGUgJGJsYWNrKSIsaW5zZXJ0VGV4dDoiaHdiKGZyb20gJHsxOmNvbG9yfSAkezI6aH0gJHszOnd9ICR7NDpifSkiLGRlc2M6ZygiQ3JlYXRlcyBhIENvbG9yIGZyb20gdGhlIGh1ZSwgd2hpdGUsIGFuZCBibGFjayB2YWx1ZXMgb2YgYW5vdGhlciBDb2xvci4iKX0se2xhYmVsOiJsYWIiLGZ1bmM6ImxhYigkbGlnaHRuZXNzICRhICRiKSIsaW5zZXJ0VGV4dDoibGFiKCR7MTpsaWdodG5lc3N9ICR7MjphfSAkezM6Yn0pIixkZXNjOmcoIkNyZWF0ZXMgYSBDb2xvciBmcm9tIGxpZ2h0bmVzcywgYSwgYW5kIGIgdmFsdWVzLiIpfSx7bGFiZWw6ImxhYiByZWxhdGl2ZSIsZnVuYzoibGFiKGZyb20gJGNvbG9yICRsaWdodG5lc3MgJGEgJGIpIixpbnNlcnRUZXh0OiJsYWIoZnJvbSAkezE6Y29sb3J9ICR7MjpsfSAkezM6YX0gJHs0OmJ9KSIsZGVzYzpnKCJDcmVhdGVzIGEgQ29sb3IgZnJvbSB0aGUgbGlnaHRuZXNzLCBhLCBhbmQgYiB2YWx1ZXMgb2YgYW5vdGhlciBDb2xvci4iKX0se2xhYmVsOiJva2xhYiIsZnVuYzoib2tsYWIoJGxpZ2h0bmVzcyAkYSAkYikiLGluc2VydFRleHQ6Im9rbGFiKCR7MTpsaWdodG5lc3N9ICR7MjphfSAkezM6Yn0pIixkZXNjOmcoIkNyZWF0ZXMgYSBDb2xvciBmcm9tIGxpZ2h0bmVzcywgYSwgYW5kIGIgdmFsdWVzLiIpfSx7bGFiZWw6Im9rbGFiIHJlbGF0aXZlIixmdW5jOiJva2xhYihmcm9tICRjb2xvciAkbGlnaHRuZXNzICRhICRiKSIsaW5zZXJ0VGV4dDoib2tsYWIoZnJvbSAkezE6Y29sb3J9ICR7MjpsfSAkezM6YX0gJHs0OmJ9KSIsZGVzYzpnKCJDcmVhdGVzIGEgQ29sb3IgZnJvbSB0aGUgbGlnaHRuZXNzLCBhLCBhbmQgYiB2YWx1ZXMgb2YgYW5vdGhlciBDb2xvci4iKX0se2xhYmVsOiJsY2giLGZ1bmM6ImxjaCgkbGlnaHRuZXNzICRjaHJvbWEgJGh1ZSkiLGluc2VydFRleHQ6ImxjaCgkezE6bGlnaHRuZXNzfSAkezI6Y2hyb21hfSAkezM6aHVlfSkiLGRlc2M6ZygiQ3JlYXRlcyBhIENvbG9yIGZyb20gbGlnaHRuZXNzLCBjaHJvbWEsIGFuZCBodWUgdmFsdWVzLiIpfSx7bGFiZWw6ImxjaCByZWxhdGl2ZSIsZnVuYzoibGNoKGZyb20gJGNvbG9yICRsaWdodG5lc3MgJGNocm9tYSAkaHVlKSIsaW5zZXJ0VGV4dDoibGNoKGZyb20gJHsxOmNvbG9yfSAkezI6bH0gJHszOmN9ICR7NDpofSkiLGRlc2M6ZygiQ3JlYXRlcyBhIENvbG9yIGZyb20gdGhlIGxpZ2h0bmVzcywgY2hyb21hLCBhbmQgaHVlIHZhbHVlcyBvZiBhbm90aGVyIENvbG9yLiIpfSx7bGFiZWw6Im9rbGNoIixmdW5jOiJva2xjaCgkbGlnaHRuZXNzICRjaHJvbWEgJGh1ZSkiLGluc2VydFRleHQ6Im9rbGNoKCR7MTpsaWdodG5lc3N9ICR7MjpjaHJvbWF9ICR7MzpodWV9KSIsZGVzYzpnKCJDcmVhdGVzIGEgQ29sb3IgZnJvbSBsaWdodG5lc3MsIGNocm9tYSwgYW5kIGh1ZSB2YWx1ZXMuIil9LHtsYWJlbDoib2tsY2ggcmVsYXRpdmUiLGZ1bmM6Im9rbGNoKGZyb20gJGNvbG9yICRsaWdodG5lc3MgJGNocm9tYSAkaHVlKSIsaW5zZXJ0VGV4dDoib2tsY2goZnJvbSAkezE6Y29sb3J9ICR7MjpsfSAkezM6Y30gJHs0Omh9KSIsZGVzYzpnKCJDcmVhdGVzIGEgQ29sb3IgZnJvbSB0aGUgbGlnaHRuZXNzLCBjaHJvbWEsIGFuZCBodWUgdmFsdWVzIG9mIGFub3RoZXIgQ29sb3IuIil9LHtsYWJlbDoiY29sb3IiLGZ1bmM6ImNvbG9yKCRjb2xvci1zcGFjZSAkcmVkICRncmVlbiAkYmx1ZSkiLGluc2VydFRleHQ6ImNvbG9yKCR7MXxzcmdiLHNyZ2ItbGluZWFyLGRpc3BsYXktcDMsYTk4LXJnYixwcm9waG90by1yZ2IscmVjMjAyMCx4eXgseHl6LWQ1MCx4eXotZDY1fH0gJHsyOnJlZH0gJHszOmdyZWVufSAkezQ6Ymx1ZX0pIixkZXNjOmcoIkNyZWF0ZXMgYSBDb2xvciBpbiBhIHNwZWNpZmljIGNvbG9yIHNwYWNlIGZyb20gcmVkLCBncmVlbiwgYW5kIGJsdWUgdmFsdWVzLiIpfSx7bGFiZWw6ImNvbG9yIHJlbGF0aXZlIixmdW5jOiJjb2xvcihmcm9tICRjb2xvciAkY29sb3Itc3BhY2UgJHJlZCAkZ3JlZW4gJGJsdWUpIixpbnNlcnRUZXh0OiJjb2xvcihmcm9tICR7MTpjb2xvcn0gJHsyfHNyZ2Isc3JnYi1saW5lYXIsZGlzcGxheS1wMyxhOTgtcmdiLHByb3Bob3RvLXJnYixyZWMyMDIwLHh5eCx4eXotZDUwLHh5ei1kNjV8fSAkezM6cn0gJHs0Omd9ICR7NTpifSkiLGRlc2M6ZygiQ3JlYXRlcyBhIENvbG9yIGluIGEgc3BlY2lmaWMgY29sb3Igc3BhY2UgZnJvbSB0aGUgcmVkLCBncmVlbiwgYW5kIGJsdWUgdmFsdWVzIG9mIGFub3RoZXIgQ29sb3IuIil9LHtsYWJlbDoiY29sb3ItbWl4IixmdW5jOiJjb2xvci1taXgoaW4gJGNvbG9yLXNwYWNlLCAkY29sb3IgJHBlcmNlbnRhZ2UsICRjb2xvciAkcGVyY2VudGFnZSkiLGluc2VydFRleHQ6ImNvbG9yLW1peChpbiAkezF8c3JnYixzcmdiLWxpbmVhcixsYWIsb2tsYWIseHl6LHh5ei1kNTAseHl6LWQ2NXx9LCAkezM6Y29sb3J9ICR7NDpwZXJjZW50YWdlfSwgJHs1OmNvbG9yfSAkezY6cGVyY2VudGFnZX0pIixkZXNjOmcoIk1peCB0d28gY29sb3JzIHRvZ2V0aGVyIGluIGEgcmVjdGFuZ3VsYXIgY29sb3Igc3BhY2UuIil9LHtsYWJlbDoiY29sb3ItbWl4IGh1ZSIsZnVuYzoiY29sb3ItbWl4KGluICRjb2xvci1zcGFjZSAkaW50ZXJwb2xhdGlvbi1tZXRob2QgaHVlLCAkY29sb3IgJHBlcmNlbnRhZ2UsICRjb2xvciAkcGVyY2VudGFnZSkiLGluc2VydFRleHQ6ImNvbG9yLW1peChpbiAkezF8aHNsLGh3YixsY2gsb2tsY2h8fSAkezJ8c2hvcnRlciBodWUsbG9uZ2VyIGh1ZSxpbmNyZWFzaW5nIGh1ZSxkZWNyZWFzaW5nIGh1ZXx9LCAkezM6Y29sb3J9ICR7NDpwZXJjZW50YWdlfSwgJHs1OmNvbG9yfSAkezY6cGVyY2VudGFnZX0pIixkZXNjOmcoIk1peCB0d28gY29sb3JzIHRvZ2V0aGVyIGluIGEgcG9sYXIgY29sb3Igc3BhY2UuIil9XSwkcD0vXihyZ2J8cmdiYXxoc2x8aHNsYXxod2IpJC9pLG1yPXthbGljZWJsdWU6IiNmMGY4ZmYiLGFudGlxdWV3aGl0ZToiI2ZhZWJkNyIsYXF1YToiIzAwZmZmZiIsYXF1YW1hcmluZToiIzdmZmZkNCIsYXp1cmU6IiNmMGZmZmYiLGJlaWdlOiIjZjVmNWRjIixiaXNxdWU6IiNmZmU0YzQiLGJsYWNrOiIjMDAwMDAwIixibGFuY2hlZGFsbW9uZDoiI2ZmZWJjZCIsYmx1ZToiIzAwMDBmZiIsYmx1ZXZpb2xldDoiIzhhMmJlMiIsYnJvd246IiNhNTJhMmEiLGJ1cmx5d29vZDoiI2RlYjg4NyIsY2FkZXRibHVlOiIjNWY5ZWEwIixjaGFydHJldXNlOiIjN2ZmZjAwIixjaG9jb2xhdGU6IiNkMjY5MWUiLGNvcmFsOiIjZmY3ZjUwIixjb3JuZmxvd2VyYmx1ZToiIzY0OTVlZCIsY29ybnNpbGs6IiNmZmY4ZGMiLGNyaW1zb246IiNkYzE0M2MiLGN5YW46IiMwMGZmZmYiLGRhcmtibHVlOiIjMDAwMDhiIixkYXJrY3lhbjoiIzAwOGI4YiIsZGFya2dvbGRlbnJvZDoiI2I4ODYwYiIsZGFya2dyYXk6IiNhOWE5YTkiLGRhcmtncmV5OiIjYTlhOWE5IixkYXJrZ3JlZW46IiMwMDY0MDAiLGRhcmtraGFraToiI2JkYjc2YiIsZGFya21hZ2VudGE6IiM4YjAwOGIiLGRhcmtvbGl2ZWdyZWVuOiIjNTU2YjJmIixkYXJrb3JhbmdlOiIjZmY4YzAwIixkYXJrb3JjaGlkOiIjOTkzMmNjIixkYXJrcmVkOiIjOGIwMDAwIixkYXJrc2FsbW9uOiIjZTk5NjdhIixkYXJrc2VhZ3JlZW46IiM4ZmJjOGYiLGRhcmtzbGF0ZWJsdWU6IiM0ODNkOGIiLGRhcmtzbGF0ZWdyYXk6IiMyZjRmNGYiLGRhcmtzbGF0ZWdyZXk6IiMyZjRmNGYiLGRhcmt0dXJxdW9pc2U6IiMwMGNlZDEiLGRhcmt2aW9sZXQ6IiM5NDAwZDMiLGRlZXBwaW5rOiIjZmYxNDkzIixkZWVwc2t5Ymx1ZToiIzAwYmZmZiIsZGltZ3JheToiIzY5Njk2OSIsZGltZ3JleToiIzY5Njk2OSIsZG9kZ2VyYmx1ZToiIzFlOTBmZiIsZmlyZWJyaWNrOiIjYjIyMjIyIixmbG9yYWx3aGl0ZToiI2ZmZmFmMCIsZm9yZXN0Z3JlZW46IiMyMjhiMjIiLGZ1Y2hzaWE6IiNmZjAwZmYiLGdhaW5zYm9ybzoiI2RjZGNkYyIsZ2hvc3R3aGl0ZToiI2Y4ZjhmZiIsZ29sZDoiI2ZmZDcwMCIsZ29sZGVucm9kOiIjZGFhNTIwIixncmF5OiIjODA4MDgwIixncmV5OiIjODA4MDgwIixncmVlbjoiIzAwODAwMCIsZ3JlZW55ZWxsb3c6IiNhZGZmMmYiLGhvbmV5ZGV3OiIjZjBmZmYwIixob3RwaW5rOiIjZmY2OWI0IixpbmRpYW5yZWQ6IiNjZDVjNWMiLGluZGlnbzoiIzRiMDA4MiIsaXZvcnk6IiNmZmZmZjAiLGtoYWtpOiIjZjBlNjhjIixsYXZlbmRlcjoiI2U2ZTZmYSIsbGF2ZW5kZXJibHVzaDoiI2ZmZjBmNSIsbGF3bmdyZWVuOiIjN2NmYzAwIixsZW1vbmNoaWZmb246IiNmZmZhY2QiLGxpZ2h0Ymx1ZToiI2FkZDhlNiIsbGlnaHRjb3JhbDoiI2YwODA4MCIsbGlnaHRjeWFuOiIjZTBmZmZmIixsaWdodGdvbGRlbnJvZHllbGxvdzoiI2ZhZmFkMiIsbGlnaHRncmF5OiIjZDNkM2QzIixsaWdodGdyZXk6IiNkM2QzZDMiLGxpZ2h0Z3JlZW46IiM5MGVlOTAiLGxpZ2h0cGluazoiI2ZmYjZjMSIsbGlnaHRzYWxtb246IiNmZmEwN2EiLGxpZ2h0c2VhZ3JlZW46IiMyMGIyYWEiLGxpZ2h0c2t5Ymx1ZToiIzg3Y2VmYSIsbGlnaHRzbGF0ZWdyYXk6IiM3Nzg4OTkiLGxpZ2h0c2xhdGVncmV5OiIjNzc4ODk5IixsaWdodHN0ZWVsYmx1ZToiI2IwYzRkZSIsbGlnaHR5ZWxsb3c6IiNmZmZmZTAiLGxpbWU6IiMwMGZmMDAiLGxpbWVncmVlbjoiIzMyY2QzMiIsbGluZW46IiNmYWYwZTYiLG1hZ2VudGE6IiNmZjAwZmYiLG1hcm9vbjoiIzgwMDAwMCIsbWVkaXVtYXF1YW1hcmluZToiIzY2Y2RhYSIsbWVkaXVtYmx1ZToiIzAwMDBjZCIsbWVkaXVtb3JjaGlkOiIjYmE1NWQzIixtZWRpdW1wdXJwbGU6IiM5MzcwZDgiLG1lZGl1bXNlYWdyZWVuOiIjM2NiMzcxIixtZWRpdW1zbGF0ZWJsdWU6IiM3YjY4ZWUiLG1lZGl1bXNwcmluZ2dyZWVuOiIjMDBmYTlhIixtZWRpdW10dXJxdW9pc2U6IiM0OGQxY2MiLG1lZGl1bXZpb2xldHJlZDoiI2M3MTU4NSIsbWlkbmlnaHRibHVlOiIjMTkxOTcwIixtaW50Y3JlYW06IiNmNWZmZmEiLG1pc3R5cm9zZToiI2ZmZTRlMSIsbW9jY2FzaW46IiNmZmU0YjUiLG5hdmFqb3doaXRlOiIjZmZkZWFkIixuYXZ5OiIjMDAwMDgwIixvbGRsYWNlOiIjZmRmNWU2IixvbGl2ZToiIzgwODAwMCIsb2xpdmVkcmFiOiIjNmI4ZTIzIixvcmFuZ2U6IiNmZmE1MDAiLG9yYW5nZXJlZDoiI2ZmNDUwMCIsb3JjaGlkOiIjZGE3MGQ2IixwYWxlZ29sZGVucm9kOiIjZWVlOGFhIixwYWxlZ3JlZW46IiM5OGZiOTgiLHBhbGV0dXJxdW9pc2U6IiNhZmVlZWUiLHBhbGV2aW9sZXRyZWQ6IiNkODcwOTMiLHBhcGF5YXdoaXA6IiNmZmVmZDUiLHBlYWNocHVmZjoiI2ZmZGFiOSIscGVydToiI2NkODUzZiIscGluazoiI2ZmYzBjYiIscGx1bToiI2RkYTBkZCIscG93ZGVyYmx1ZToiI2IwZTBlNiIscHVycGxlOiIjODAwMDgwIixyZWQ6IiNmZjAwMDAiLHJlYmVjY2FwdXJwbGU6IiM2NjMzOTkiLHJvc3licm93bjoiI2JjOGY4ZiIscm95YWxibHVlOiIjNDE2OWUxIixzYWRkbGVicm93bjoiIzhiNDUxMyIsc2FsbW9uOiIjZmE4MDcyIixzYW5keWJyb3duOiIjZjRhNDYwIixzZWFncmVlbjoiIzJlOGI1NyIsc2Vhc2hlbGw6IiNmZmY1ZWUiLHNpZW5uYToiI2EwNTIyZCIsc2lsdmVyOiIjYzBjMGMwIixza3libHVlOiIjODdjZWViIixzbGF0ZWJsdWU6IiM2YTVhY2QiLHNsYXRlZ3JheToiIzcwODA5MCIsc2xhdGVncmV5OiIjNzA4MDkwIixzbm93OiIjZmZmYWZhIixzcHJpbmdncmVlbjoiIzAwZmY3ZiIsc3RlZWxibHVlOiIjNDY4MmI0Iix0YW46IiNkMmI0OGMiLHRlYWw6IiMwMDgwODAiLHRoaXN0bGU6IiNkOGJmZDgiLHRvbWF0bzoiI2ZmNjM0NyIsdHVycXVvaXNlOiIjNDBlMGQwIix2aW9sZXQ6IiNlZTgyZWUiLHdoZWF0OiIjZjVkZWIzIix3aGl0ZToiI2ZmZmZmZiIsd2hpdGVzbW9rZToiI2Y1ZjVmNSIseWVsbG93OiIjZmZmZjAwIix5ZWxsb3dncmVlbjoiIzlhY2QzMiJ9LEJwPW5ldyBSZWdFeHAoYF4oJHtPYmplY3Qua2V5cyhtcikuam9pbigifCIpfSkkYCwiaSIpLEtpPXtjdXJyZW50Q29sb3I6IlRoZSB2YWx1ZSBvZiB0aGUgJ2NvbG9yJyBwcm9wZXJ0eS4gVGhlIGNvbXB1dGVkIHZhbHVlIG9mIHRoZSAnY3VycmVudENvbG9yJyBrZXl3b3JkIGlzIHRoZSBjb21wdXRlZCB2YWx1ZSBvZiB0aGUgJ2NvbG9yJyBwcm9wZXJ0eS4gSWYgdGhlICdjdXJyZW50Q29sb3InIGtleXdvcmQgaXMgc2V0IG9uIHRoZSAnY29sb3InIHByb3BlcnR5IGl0c2VsZiwgaXQgaXMgdHJlYXRlZCBhcyAnY29sb3I6aW5oZXJpdCcgYXQgcGFyc2UgdGltZS4iLHRyYW5zcGFyZW50OiJGdWxseSB0cmFuc3BhcmVudC4gVGhpcyBrZXl3b3JkIGNhbiBiZSBjb25zaWRlcmVkIGEgc2hvcnRoYW5kIGZvciByZ2JhKDAsMCwwLDApIHdoaWNoIGlzIGl0cyBjb21wdXRlZCB2YWx1ZS4ifSxxcD1uZXcgUmVnRXhwKGBeKCR7T2JqZWN0LmtleXMoS2kpLmpvaW4oInwiKX0pJGAsImkiKTtmdW5jdGlvbiBtdChlLHQpe2NvbnN0IHI9ZS5nZXRUZXh0KCkubWF0Y2goL14oWy0rXT9bMC05XSpcLj9bMC05XSspKCU/KSQvKTtpZihyKXtyWzJdJiYodD0xMDApO2NvbnN0IGk9cGFyc2VGbG9hdChyWzFdKS90O2lmKGk+PTAmJmk8PTEpcmV0dXJuIGl9dGhyb3cgbmV3IEVycm9yfWZ1bmN0aW9uIGRjKGUpe2NvbnN0IHQ9ZS5nZXRUZXh0KCksbj10Lm1hdGNoKC9eKFstK10/WzAtOV0qXC4/WzAtOV0rKShkZWd8cmFkfGdyYWR8dHVybik/JC8pO2lmKG4pc3dpdGNoKG5bMl0pe2Nhc2UiZGVnIjpyZXR1cm4gcGFyc2VGbG9hdCh0KSUzNjA7Y2FzZSJyYWQiOnJldHVybiBwYXJzZUZsb2F0KHQpKjE4MC9NYXRoLlBJJTM2MDtjYXNlImdyYWQiOnJldHVybiBwYXJzZUZsb2F0KHQpKi45JTM2MDtjYXNlInR1cm4iOnJldHVybiBwYXJzZUZsb2F0KHQpKjM2MCUzNjA7ZGVmYXVsdDppZih0eXBlb2YgblsyXT4idSIpcmV0dXJuIHBhcnNlRmxvYXQodCklMzYwfXRocm93IG5ldyBFcnJvcn1mdW5jdGlvbiBqcChlKXtjb25zdCB0PWUuZ2V0TmFtZSgpO3JldHVybiB0PyRwLnRlc3QodCk6ITF9ZnVuY3Rpb24gdWMoZSl7cmV0dXJuIFZwLnRlc3QoZSl8fEJwLnRlc3QoZSl8fHFwLnRlc3QoZSl9dmFyIHBjPTQ4LEhwPTU3LEdwPTY1LGZyPTk3LEpwPTEwMjtmdW5jdGlvbiBoZShlKXtyZXR1cm4gZTxwYz8wOmU8PUhwP2UtcGM6KGU8ZnImJihlKz1mci1HcCksZT49ZnImJmU8PUpwP2UtZnIrMTA6MCl9ZnVuY3Rpb24gbWMoZSl7aWYoZVswXSE9PSIjIilyZXR1cm4gbnVsbDtzd2l0Y2goZS5sZW5ndGgpe2Nhc2UgNDpyZXR1cm57cmVkOmhlKGUuY2hhckNvZGVBdCgxKSkqMTcvMjU1LGdyZWVuOmhlKGUuY2hhckNvZGVBdCgyKSkqMTcvMjU1LGJsdWU6aGUoZS5jaGFyQ29kZUF0KDMpKSoxNy8yNTUsYWxwaGE6MX07Y2FzZSA1OnJldHVybntyZWQ6aGUoZS5jaGFyQ29kZUF0KDEpKSoxNy8yNTUsZ3JlZW46aGUoZS5jaGFyQ29kZUF0KDIpKSoxNy8yNTUsYmx1ZTpoZShlLmNoYXJDb2RlQXQoMykpKjE3LzI1NSxhbHBoYTpoZShlLmNoYXJDb2RlQXQoNCkpKjE3LzI1NX07Y2FzZSA3OnJldHVybntyZWQ6KGhlKGUuY2hhckNvZGVBdCgxKSkqMTYraGUoZS5jaGFyQ29kZUF0KDIpKSkvMjU1LGdyZWVuOihoZShlLmNoYXJDb2RlQXQoMykpKjE2K2hlKGUuY2hhckNvZGVBdCg0KSkpLzI1NSxibHVlOihoZShlLmNoYXJDb2RlQXQoNSkpKjE2K2hlKGUuY2hhckNvZGVBdCg2KSkpLzI1NSxhbHBoYToxfTtjYXNlIDk6cmV0dXJue3JlZDooaGUoZS5jaGFyQ29kZUF0KDEpKSoxNitoZShlLmNoYXJDb2RlQXQoMikpKS8yNTUsZ3JlZW46KGhlKGUuY2hhckNvZGVBdCgzKSkqMTYraGUoZS5jaGFyQ29kZUF0KDQpKSkvMjU1LGJsdWU6KGhlKGUuY2hhckNvZGVBdCg1KSkqMTYraGUoZS5jaGFyQ29kZUF0KDYpKSkvMjU1LGFscGhhOihoZShlLmNoYXJDb2RlQXQoNykpKjE2K2hlKGUuY2hhckNvZGVBdCg4KSkpLzI1NX19cmV0dXJuIG51bGx9ZnVuY3Rpb24gZmMoZSx0LG4scj0xKXtpZihlPWUvNjAsdD09PTApcmV0dXJue3JlZDpuLGdyZWVuOm4sYmx1ZTpuLGFscGhhOnJ9O3tjb25zdCBpPShsLG8sYyk9Pntmb3IoO2M8MDspYys9Njtmb3IoO2M+PTY7KWMtPTY7cmV0dXJuIGM8MT8oby1sKSpjK2w6YzwzP286Yzw0PyhvLWwpKig0LWMpK2w6bH0scz1uPD0uNT9uKih0KzEpOm4rdC1uKnQsYT1uKjItcztyZXR1cm57cmVkOmkoYSxzLGUrMiksZ3JlZW46aShhLHMsZSksYmx1ZTppKGEscyxlLTIpLGFscGhhOnJ9fX1mdW5jdGlvbiBnYyhlKXtjb25zdCB0PWUucmVkLG49ZS5ncmVlbixyPWUuYmx1ZSxpPWUuYWxwaGEscz1NYXRoLm1heCh0LG4sciksYT1NYXRoLm1pbih0LG4scik7bGV0IGw9MCxvPTA7Y29uc3QgYz0oYStzKS8yLGQ9cy1hO2lmKGQ+MCl7c3dpdGNoKG89TWF0aC5taW4oYzw9LjU/ZC8oMipjKTpkLygyLTIqYyksMSkscyl7Y2FzZSB0Omw9KG4tcikvZCsobjxyPzY6MCk7YnJlYWs7Y2FzZSBuOmw9KHItdCkvZCsyO2JyZWFrO2Nhc2UgcjpsPSh0LW4pL2QrNDticmVha31sKj02MCxsPU1hdGgucm91bmQobCl9cmV0dXJue2g6bCxzOm8sbDpjLGE6aX19ZnVuY3Rpb24gWHAoZSx0LG4scj0xKXtpZih0K24+PTEpe2NvbnN0IG89dC8odCtuKTtyZXR1cm57cmVkOm8sZ3JlZW46byxibHVlOm8sYWxwaGE6cn19Y29uc3QgaT1mYyhlLDEsLjUscik7bGV0IHM9aS5yZWQ7cyo9MS10LW4scys9dDtsZXQgYT1pLmdyZWVuO2EqPTEtdC1uLGErPXQ7bGV0IGw9aS5ibHVlO3JldHVybiBsKj0xLXQtbixsKz10LHtyZWQ6cyxncmVlbjphLGJsdWU6bCxhbHBoYTpyfX1mdW5jdGlvbiBZcChlKXtjb25zdCB0PWdjKGUpLG49TWF0aC5taW4oZS5yZWQsZS5ncmVlbixlLmJsdWUpLHI9MS1NYXRoLm1heChlLnJlZCxlLmdyZWVuLGUuYmx1ZSk7cmV0dXJue2g6dC5oLHc6bixiOnIsYTp0LmF9fWZ1bmN0aW9uIFFwKGUpe2lmKGUudHlwZT09PWIuSGV4Q29sb3JWYWx1ZSl7Y29uc3QgdD1lLmdldFRleHQoKTtyZXR1cm4gbWModCl9ZWxzZSBpZihlLnR5cGU9PT1iLkZ1bmN0aW9uKXtjb25zdCB0PWUsbj10LmdldE5hbWUoKTtsZXQgcj10LmdldEFyZ3VtZW50cygpLmdldENoaWxkcmVuKCk7aWYoci5sZW5ndGg9PT0xKXtjb25zdCBpPXJbMF0uZ2V0Q2hpbGRyZW4oKTtpZihpLmxlbmd0aD09PTEmJmlbMF0udHlwZT09PWIuRXhwcmVzc2lvbiYmKHI9aVswXS5nZXRDaGlsZHJlbigpLHIubGVuZ3RoPT09Mykpe2NvbnN0IHM9clsyXTtpZihzIGluc3RhbmNlb2YgSWkpe2NvbnN0IGE9cy5nZXRMZWZ0KCksbD1zLmdldFJpZ2h0KCksbz1zLmdldE9wZXJhdG9yKCk7YSYmbCYmbyYmby5tYXRjaGVzKCIvIikmJihyPVtyWzBdLHJbMV0sYSxsXSl9fX1pZighbnx8ci5sZW5ndGg8M3x8ci5sZW5ndGg+NClyZXR1cm4gbnVsbDt0cnl7Y29uc3QgaT1yLmxlbmd0aD09PTQ/bXQoclszXSwxKToxO2lmKG49PT0icmdiInx8bj09PSJyZ2JhIilyZXR1cm57cmVkOm10KHJbMF0sMjU1KSxncmVlbjptdChyWzFdLDI1NSksYmx1ZTptdChyWzJdLDI1NSksYWxwaGE6aX07aWYobj09PSJoc2wifHxuPT09ImhzbGEiKXtjb25zdCBzPWRjKHJbMF0pLGE9bXQoclsxXSwxMDApLGw9bXQoclsyXSwxMDApO3JldHVybiBmYyhzLGEsbCxpKX1lbHNlIGlmKG49PT0iaHdiIil7Y29uc3Qgcz1kYyhyWzBdKSxhPW10KHJbMV0sMTAwKSxsPW10KHJbMl0sMTAwKTtyZXR1cm4gWHAocyxhLGwsaSl9fWNhdGNoe3JldHVybiBudWxsfX1lbHNlIGlmKGUudHlwZT09PWIuSWRlbnRpZmllcil7aWYoZS5wYXJlbnQmJmUucGFyZW50LnR5cGUhPT1iLlRlcm0pcmV0dXJuIG51bGw7Y29uc3QgdD1lLnBhcmVudDtpZih0JiZ0LnBhcmVudCYmdC5wYXJlbnQudHlwZT09PWIuQmluYXJ5RXhwcmVzc2lvbil7Y29uc3QgaT10LnBhcmVudDtpZihpLnBhcmVudCYmaS5wYXJlbnQudHlwZT09PWIuTGlzdEVudHJ5JiZpLnBhcmVudC5rZXk9PT1pKXJldHVybiBudWxsfWNvbnN0IG49ZS5nZXRUZXh0KCkudG9Mb3dlckNhc2UoKTtpZihuPT09Im5vbmUiKXJldHVybiBudWxsO2NvbnN0IHI9bXJbbl07aWYocilyZXR1cm4gbWMocil9cmV0dXJuIG51bGx9dmFyIGJjPXtib3R0b206IkNvbXB1dGVzIHRvIOKAmDEwMCXigJkgZm9yIHRoZSB2ZXJ0aWNhbCBwb3NpdGlvbiBpZiBvbmUgb3IgdHdvIHZhbHVlcyBhcmUgZ2l2ZW4sIG90aGVyd2lzZSBzcGVjaWZpZXMgdGhlIGJvdHRvbSBlZGdlIGFzIHRoZSBvcmlnaW4gZm9yIHRoZSBuZXh0IG9mZnNldC4iLGNlbnRlcjoiQ29tcHV0ZXMgdG8g4oCYNTAl4oCZICjigJhsZWZ0IDUwJeKAmSkgZm9yIHRoZSBob3Jpem9udGFsIHBvc2l0aW9uIGlmIHRoZSBob3Jpem9udGFsIHBvc2l0aW9uIGlzIG5vdCBvdGhlcndpc2Ugc3BlY2lmaWVkLCBvciDigJg1MCXigJkgKOKAmHRvcCA1MCXigJkpIGZvciB0aGUgdmVydGljYWwgcG9zaXRpb24gaWYgaXQgaXMuIixsZWZ0OiJDb21wdXRlcyB0byDigJgwJeKAmSBmb3IgdGhlIGhvcml6b250YWwgcG9zaXRpb24gaWYgb25lIG9yIHR3byB2YWx1ZXMgYXJlIGdpdmVuLCBvdGhlcndpc2Ugc3BlY2lmaWVzIHRoZSBsZWZ0IGVkZ2UgYXMgdGhlIG9yaWdpbiBmb3IgdGhlIG5leHQgb2Zmc2V0LiIscmlnaHQ6IkNvbXB1dGVzIHRvIOKAmDEwMCXigJkgZm9yIHRoZSBob3Jpem9udGFsIHBvc2l0aW9uIGlmIG9uZSBvciB0d28gdmFsdWVzIGFyZSBnaXZlbiwgb3RoZXJ3aXNlIHNwZWNpZmllcyB0aGUgcmlnaHQgZWRnZSBhcyB0aGUgb3JpZ2luIGZvciB0aGUgbmV4dCBvZmZzZXQuIix0b3A6IkNvbXB1dGVzIHRvIOKAmDAl4oCZIGZvciB0aGUgdmVydGljYWwgcG9zaXRpb24gaWYgb25lIG9yIHR3byB2YWx1ZXMgYXJlIGdpdmVuLCBvdGhlcndpc2Ugc3BlY2lmaWVzIHRoZSB0b3AgZWRnZSBhcyB0aGUgb3JpZ2luIGZvciB0aGUgbmV4dCBvZmZzZXQuIn0sdmM9eyJuby1yZXBlYXQiOiJQbGFjZWQgb25jZSBhbmQgbm90IHJlcGVhdGVkIGluIHRoaXMgZGlyZWN0aW9uLiIscmVwZWF0OiJSZXBlYXRlZCBpbiB0aGlzIGRpcmVjdGlvbiBhcyBvZnRlbiBhcyBuZWVkZWQgdG8gY292ZXIgdGhlIGJhY2tncm91bmQgcGFpbnRpbmcgYXJlYS4iLCJyZXBlYXQteCI6IkNvbXB1dGVzIHRvIOKAmHJlcGVhdCBuby1yZXBlYXTigJkuIiwicmVwZWF0LXkiOiJDb21wdXRlcyB0byDigJhuby1yZXBlYXQgcmVwZWF04oCZLiIscm91bmQ6IlJlcGVhdGVkIGFzIG9mdGVuIGFzIHdpbGwgZml0IHdpdGhpbiB0aGUgYmFja2dyb3VuZCBwb3NpdGlvbmluZyBhcmVhLiBJZiBpdCBkb2VzbuKAmXQgZml0IGEgd2hvbGUgbnVtYmVyIG9mIHRpbWVzLCBpdCBpcyByZXNjYWxlZCBzbyB0aGF0IGl0IGRvZXMuIixzcGFjZToiUmVwZWF0ZWQgYXMgb2Z0ZW4gYXMgd2lsbCBmaXQgd2l0aGluIHRoZSBiYWNrZ3JvdW5kIHBvc2l0aW9uaW5nIGFyZWEgd2l0aG91dCBiZWluZyBjbGlwcGVkIGFuZCB0aGVuIHRoZSBpbWFnZXMgYXJlIHNwYWNlZCBvdXQgdG8gZmlsbCB0aGUgYXJlYS4ifSx3Yz17ZGFzaGVkOiJBIHNlcmllcyBvZiBzcXVhcmUtZW5kZWQgZGFzaGVzLiIsZG90dGVkOiJBIHNlcmllcyBvZiByb3VuZCBkb3RzLiIsZG91YmxlOiJUd28gcGFyYWxsZWwgc29saWQgbGluZXMgd2l0aCBzb21lIHNwYWNlIGJldHdlZW4gdGhlbS4iLGdyb292ZToiTG9va3MgYXMgaWYgaXQgd2VyZSBjYXJ2ZWQgaW4gdGhlIGNhbnZhcy4iLGhpZGRlbjoiU2FtZSBhcyDigJhub25l4oCZLCBidXQgaGFzIGRpZmZlcmVudCBiZWhhdmlvciBpbiB0aGUgYm9yZGVyIGNvbmZsaWN0IHJlc29sdXRpb24gcnVsZXMgZm9yIGJvcmRlci1jb2xsYXBzZWQgdGFibGVzLiIsaW5zZXQ6Ikxvb2tzIGFzIGlmIHRoZSBjb250ZW50IG9uIHRoZSBpbnNpZGUgb2YgdGhlIGJvcmRlciBpcyBzdW5rZW4gaW50byB0aGUgY2FudmFzLiIsbm9uZToiTm8gYm9yZGVyLiBDb2xvciBhbmQgd2lkdGggYXJlIGlnbm9yZWQuIixvdXRzZXQ6Ikxvb2tzIGFzIGlmIHRoZSBjb250ZW50IG9uIHRoZSBpbnNpZGUgb2YgdGhlIGJvcmRlciBpcyBjb21pbmcgb3V0IG9mIHRoZSBjYW52YXMuIixyaWRnZToiTG9va3MgYXMgaWYgaXQgd2VyZSBjb21pbmcgb3V0IG9mIHRoZSBjYW52YXMuIixzb2xpZDoiQSBzaW5nbGUgbGluZSBzZWdtZW50LiJ9LEtwPVsibWVkaXVtIiwidGhpY2siLCJ0aGluIl0seWM9eyJib3JkZXItYm94IjoiVGhlIGJhY2tncm91bmQgaXMgcGFpbnRlZCB3aXRoaW4gKGNsaXBwZWQgdG8pIHRoZSBib3JkZXIgYm94LiIsImNvbnRlbnQtYm94IjoiVGhlIGJhY2tncm91bmQgaXMgcGFpbnRlZCB3aXRoaW4gKGNsaXBwZWQgdG8pIHRoZSBjb250ZW50IGJveC4iLCJwYWRkaW5nLWJveCI6IlRoZSBiYWNrZ3JvdW5kIGlzIHBhaW50ZWQgd2l0aGluIChjbGlwcGVkIHRvKSB0aGUgcGFkZGluZyBib3guIn0seGM9eyJtYXJnaW4tYm94IjoiVXNlcyB0aGUgbWFyZ2luIGJveCBhcyByZWZlcmVuY2UgYm94LiIsImZpbGwtYm94IjoiVXNlcyB0aGUgb2JqZWN0IGJvdW5kaW5nIGJveCBhcyByZWZlcmVuY2UgYm94LiIsInN0cm9rZS1ib3giOiJVc2VzIHRoZSBzdHJva2UgYm91bmRpbmcgYm94IGFzIHJlZmVyZW5jZSBib3guIiwidmlldy1ib3giOiJVc2VzIHRoZSBuZWFyZXN0IFNWRyB2aWV3cG9ydCBhcyByZWZlcmVuY2UgYm94LiJ9LFNjPXtpbml0aWFsOiJSZXByZXNlbnRzIHRoZSB2YWx1ZSBzcGVjaWZpZWQgYXMgdGhlIHByb3BlcnR54oCZcyBpbml0aWFsIHZhbHVlLiIsaW5oZXJpdDoiUmVwcmVzZW50cyB0aGUgY29tcHV0ZWQgdmFsdWUgb2YgdGhlIHByb3BlcnR5IG9uIHRoZSBlbGVtZW504oCZcyBwYXJlbnQuIix1bnNldDoiQWN0cyBhcyBlaXRoZXIgYGluaGVyaXRgIG9yIGBpbml0aWFsYCwgZGVwZW5kaW5nIG9uIHdoZXRoZXIgdGhlIHByb3BlcnR5IGlzIGluaGVyaXRlZCBvciBub3QuIn0sQ2M9eyJ2YXIoKSI6IkV2YWx1YXRlcyB0aGUgdmFsdWUgb2YgYSBjdXN0b20gdmFyaWFibGUuIiwiY2FsYygpIjoiRXZhbHVhdGVzIGFuIG1hdGhlbWF0aWNhbCBleHByZXNzaW9uLiBUaGUgZm9sbG93aW5nIG9wZXJhdG9ycyBjYW4gYmUgdXNlZDogKyAtICogLy4ifSxfYz17InVybCgpIjoiUmVmZXJlbmNlIGFuIGltYWdlIGZpbGUgYnkgVVJMIiwiaW1hZ2UoKSI6IlByb3ZpZGUgaW1hZ2UgZmFsbGJhY2tzIGFuZCBhbm5vdGF0aW9ucy4iLCItd2Via2l0LWltYWdlLXNldCgpIjoiUHJvdmlkZSBtdWx0aXBsZSByZXNvbHV0aW9ucy4gUmVtZW1iZXIgdG8gdXNlIHVucHJlZml4ZWQgaW1hZ2Utc2V0KCkgaW4gYWRkaXRpb24uIiwiaW1hZ2Utc2V0KCkiOiJQcm92aWRlIG11bHRpcGxlIHJlc29sdXRpb25zIG9mIGFuIGltYWdlIGFuZCBjb25zdCB0aGUgVUEgZGVjaWRlIHdoaWNoIGlzIG1vc3QgYXBwcm9wcmlhdGUgaW4gYSBnaXZlbiBzaXR1YXRpb24uIiwiLW1vei1lbGVtZW50KCkiOiJVc2UgYW4gZWxlbWVudCBpbiB0aGUgZG9jdW1lbnQgYXMgYW4gaW1hZ2UuIFJlbWVtYmVyIHRvIHVzZSB1bnByZWZpeGVkIGVsZW1lbnQoKSBpbiBhZGRpdGlvbi4iLCJlbGVtZW50KCkiOiJVc2UgYW4gZWxlbWVudCBpbiB0aGUgZG9jdW1lbnQgYXMgYW4gaW1hZ2UuIiwiY3Jvc3MtZmFkZSgpIjoiSW5kaWNhdGVzIHRoZSB0d28gaW1hZ2VzIHRvIGJlIGNvbWJpbmVkIGFuZCBob3cgZmFyIGFsb25nIGluIHRoZSB0cmFuc2l0aW9uIHRoZSBjb21iaW5hdGlvbiBpcy4iLCItd2Via2l0LWdyYWRpZW50KCkiOiJEZXByZWNhdGVkLiBVc2UgbW9kZXJuIGxpbmVhci1ncmFkaWVudCgpIG9yIHJhZGlhbC1ncmFkaWVudCgpIGluc3RlYWQuIiwiLXdlYmtpdC1saW5lYXItZ3JhZGllbnQoKSI6IkxpbmVhciBncmFkaWVudC4gUmVtZW1iZXIgdG8gdXNlIHVucHJlZml4ZWQgdmVyc2lvbiBpbiBhZGRpdGlvbi4iLCItbW96LWxpbmVhci1ncmFkaWVudCgpIjoiTGluZWFyIGdyYWRpZW50LiBSZW1lbWJlciB0byB1c2UgdW5wcmVmaXhlZCB2ZXJzaW9uIGluIGFkZGl0aW9uLiIsIi1vLWxpbmVhci1ncmFkaWVudCgpIjoiTGluZWFyIGdyYWRpZW50LiBSZW1lbWJlciB0byB1c2UgdW5wcmVmaXhlZCB2ZXJzaW9uIGluIGFkZGl0aW9uLiIsImxpbmVhci1ncmFkaWVudCgpIjoiQSBsaW5lYXIgZ3JhZGllbnQgaXMgY3JlYXRlZCBieSBzcGVjaWZ5aW5nIGEgc3RyYWlnaHQgZ3JhZGllbnQgbGluZSwgYW5kIHRoZW4gc2V2ZXJhbCBjb2xvcnMgcGxhY2VkIGFsb25nIHRoYXQgbGluZS4iLCItd2Via2l0LXJlcGVhdGluZy1saW5lYXItZ3JhZGllbnQoKSI6IlJlcGVhdGluZyBMaW5lYXIgZ3JhZGllbnQuIFJlbWVtYmVyIHRvIHVzZSB1bnByZWZpeGVkIHZlcnNpb24gaW4gYWRkaXRpb24uIiwiLW1vei1yZXBlYXRpbmctbGluZWFyLWdyYWRpZW50KCkiOiJSZXBlYXRpbmcgTGluZWFyIGdyYWRpZW50LiBSZW1lbWJlciB0byB1c2UgdW5wcmVmaXhlZCB2ZXJzaW9uIGluIGFkZGl0aW9uLiIsIi1vLXJlcGVhdGluZy1saW5lYXItZ3JhZGllbnQoKSI6IlJlcGVhdGluZyBMaW5lYXIgZ3JhZGllbnQuIFJlbWVtYmVyIHRvIHVzZSB1bnByZWZpeGVkIHZlcnNpb24gaW4gYWRkaXRpb24uIiwicmVwZWF0aW5nLWxpbmVhci1ncmFkaWVudCgpIjoiU2FtZSBhcyBsaW5lYXItZ3JhZGllbnQsIGV4Y2VwdCB0aGUgY29sb3Itc3RvcHMgYXJlIHJlcGVhdGVkIGluZmluaXRlbHkgaW4gYm90aCBkaXJlY3Rpb25zLCB3aXRoIHRoZWlyIHBvc2l0aW9ucyBzaGlmdGVkIGJ5IG11bHRpcGxlcyBvZiB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZSBsYXN0IHNwZWNpZmllZCBjb2xvci1zdG9w4oCZcyBwb3NpdGlvbiBhbmQgdGhlIGZpcnN0IHNwZWNpZmllZCBjb2xvci1zdG9w4oCZcyBwb3NpdGlvbi4iLCItd2Via2l0LXJhZGlhbC1ncmFkaWVudCgpIjoiUmFkaWFsIGdyYWRpZW50LiBSZW1lbWJlciB0byB1c2UgdW5wcmVmaXhlZCB2ZXJzaW9uIGluIGFkZGl0aW9uLiIsIi1tb3otcmFkaWFsLWdyYWRpZW50KCkiOiJSYWRpYWwgZ3JhZGllbnQuIFJlbWVtYmVyIHRvIHVzZSB1bnByZWZpeGVkIHZlcnNpb24gaW4gYWRkaXRpb24uIiwicmFkaWFsLWdyYWRpZW50KCkiOiJDb2xvcnMgZW1lcmdlIGZyb20gYSBzaW5nbGUgcG9pbnQgYW5kIHNtb290aGx5IHNwcmVhZCBvdXR3YXJkIGluIGEgY2lyY3VsYXIgb3IgZWxsaXB0aWNhbCBzaGFwZS4iLCItd2Via2l0LXJlcGVhdGluZy1yYWRpYWwtZ3JhZGllbnQoKSI6IlJlcGVhdGluZyByYWRpYWwgZ3JhZGllbnQuIFJlbWVtYmVyIHRvIHVzZSB1bnByZWZpeGVkIHZlcnNpb24gaW4gYWRkaXRpb24uIiwiLW1vei1yZXBlYXRpbmctcmFkaWFsLWdyYWRpZW50KCkiOiJSZXBlYXRpbmcgcmFkaWFsIGdyYWRpZW50LiBSZW1lbWJlciB0byB1c2UgdW5wcmVmaXhlZCB2ZXJzaW9uIGluIGFkZGl0aW9uLiIsInJlcGVhdGluZy1yYWRpYWwtZ3JhZGllbnQoKSI6IlNhbWUgYXMgcmFkaWFsLWdyYWRpZW50LCBleGNlcHQgdGhlIGNvbG9yLXN0b3BzIGFyZSByZXBlYXRlZCBpbmZpbml0ZWx5IGluIGJvdGggZGlyZWN0aW9ucywgd2l0aCB0aGVpciBwb3NpdGlvbnMgc2hpZnRlZCBieSBtdWx0aXBsZXMgb2YgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUgbGFzdCBzcGVjaWZpZWQgY29sb3Itc3RvcOKAmXMgcG9zaXRpb24gYW5kIHRoZSBmaXJzdCBzcGVjaWZpZWQgY29sb3Itc3RvcOKAmXMgcG9zaXRpb24uIn0sa2M9e2Vhc2U6IkVxdWl2YWxlbnQgdG8gY3ViaWMtYmV6aWVyKDAuMjUsIDAuMSwgMC4yNSwgMS4wKS4iLCJlYXNlLWluIjoiRXF1aXZhbGVudCB0byBjdWJpYy1iZXppZXIoMC40MiwgMCwgMS4wLCAxLjApLiIsImVhc2UtaW4tb3V0IjoiRXF1aXZhbGVudCB0byBjdWJpYy1iZXppZXIoMC40MiwgMCwgMC41OCwgMS4wKS4iLCJlYXNlLW91dCI6IkVxdWl2YWxlbnQgdG8gY3ViaWMtYmV6aWVyKDAsIDAsIDAuNTgsIDEuMCkuIixsaW5lYXI6IkVxdWl2YWxlbnQgdG8gY3ViaWMtYmV6aWVyKDAuMCwgMC4wLCAxLjAsIDEuMCkuIiwic3RlcC1lbmQiOiJFcXVpdmFsZW50IHRvIHN0ZXBzKDEsIGVuZCkuIiwic3RlcC1zdGFydCI6IkVxdWl2YWxlbnQgdG8gc3RlcHMoMSwgc3RhcnQpLiIsInN0ZXBzKCkiOiJUaGUgZmlyc3QgcGFyYW1ldGVyIHNwZWNpZmllcyB0aGUgbnVtYmVyIG9mIGludGVydmFscyBpbiB0aGUgZnVuY3Rpb24uIFRoZSBzZWNvbmQgcGFyYW1ldGVyLCB3aGljaCBpcyBvcHRpb25hbCwgaXMgZWl0aGVyIHRoZSB2YWx1ZSDigJxzdGFydOKAnSBvciDigJxlbmTigJ0uIiwiY3ViaWMtYmV6aWVyKCkiOiJTcGVjaWZpZXMgYSBjdWJpYy1iZXppZXIgY3VydmUuIFRoZSBmb3VyIHZhbHVlcyBzcGVjaWZ5IHBvaW50cyBQMSBhbmQgUDIgIG9mIHRoZSBjdXJ2ZSBhcyAoeDEsIHkxLCB4MiwgeTIpLiIsImN1YmljLWJlemllcigwLjYsIC0wLjI4LCAwLjczNSwgMC4wNDUpIjoiRWFzZS1pbiBCYWNrLiBPdmVyc2hvb3RzLiIsImN1YmljLWJlemllcigwLjY4LCAtMC41NSwgMC4yNjUsIDEuNTUpIjoiRWFzZS1pbi1vdXQgQmFjay4gT3ZlcnNob290cy4iLCJjdWJpYy1iZXppZXIoMC4xNzUsIDAuODg1LCAwLjMyLCAxLjI3NSkiOiJFYXNlLW91dCBCYWNrLiBPdmVyc2hvb3RzLiIsImN1YmljLWJlemllcigwLjYsIDAuMDQsIDAuOTgsIDAuMzM1KSI6IkVhc2UtaW4gQ2lyY3VsYXIuIEJhc2VkIG9uIGhhbGYgY2lyY2xlLiIsImN1YmljLWJlemllcigwLjc4NSwgMC4xMzUsIDAuMTUsIDAuODYpIjoiRWFzZS1pbi1vdXQgQ2lyY3VsYXIuIEJhc2VkIG9uIGhhbGYgY2lyY2xlLiIsImN1YmljLWJlemllcigwLjA3NSwgMC44MiwgMC4xNjUsIDEpIjoiRWFzZS1vdXQgQ2lyY3VsYXIuIEJhc2VkIG9uIGhhbGYgY2lyY2xlLiIsImN1YmljLWJlemllcigwLjU1LCAwLjA1NSwgMC42NzUsIDAuMTkpIjoiRWFzZS1pbiBDdWJpYy4gQmFzZWQgb24gcG93ZXIgb2YgdGhyZWUuIiwiY3ViaWMtYmV6aWVyKDAuNjQ1LCAwLjA0NSwgMC4zNTUsIDEpIjoiRWFzZS1pbi1vdXQgQ3ViaWMuIEJhc2VkIG9uIHBvd2VyIG9mIHRocmVlLiIsImN1YmljLWJlemllcigwLjIxNSwgMC42MTAsIDAuMzU1LCAxKSI6IkVhc2Utb3V0IEN1YmljLiBCYXNlZCBvbiBwb3dlciBvZiB0aHJlZS4iLCJjdWJpYy1iZXppZXIoMC45NSwgMC4wNSwgMC43OTUsIDAuMDM1KSI6IkVhc2UtaW4gRXhwb25lbnRpYWwuIEJhc2VkIG9uIHR3byB0byB0aGUgcG93ZXIgdGVuLiIsImN1YmljLWJlemllcigxLCAwLCAwLCAxKSI6IkVhc2UtaW4tb3V0IEV4cG9uZW50aWFsLiBCYXNlZCBvbiB0d28gdG8gdGhlIHBvd2VyIHRlbi4iLCJjdWJpYy1iZXppZXIoMC4xOSwgMSwgMC4yMiwgMSkiOiJFYXNlLW91dCBFeHBvbmVudGlhbC4gQmFzZWQgb24gdHdvIHRvIHRoZSBwb3dlciB0ZW4uIiwiY3ViaWMtYmV6aWVyKDAuNDcsIDAsIDAuNzQ1LCAwLjcxNSkiOiJFYXNlLWluIFNpbmUuIiwiY3ViaWMtYmV6aWVyKDAuNDQ1LCAwLjA1LCAwLjU1LCAwLjk1KSI6IkVhc2UtaW4tb3V0IFNpbmUuIiwiY3ViaWMtYmV6aWVyKDAuMzksIDAuNTc1LCAwLjU2NSwgMSkiOiJFYXNlLW91dCBTaW5lLiIsImN1YmljLWJlemllcigwLjU1LCAwLjA4NSwgMC42OCwgMC41MykiOiJFYXNlLWluIFF1YWRyYXRpYy4gQmFzZWQgb24gcG93ZXIgb2YgdHdvLiIsImN1YmljLWJlemllcigwLjQ1NSwgMC4wMywgMC41MTUsIDAuOTU1KSI6IkVhc2UtaW4tb3V0IFF1YWRyYXRpYy4gQmFzZWQgb24gcG93ZXIgb2YgdHdvLiIsImN1YmljLWJlemllcigwLjI1LCAwLjQ2LCAwLjQ1LCAwLjk0KSI6IkVhc2Utb3V0IFF1YWRyYXRpYy4gQmFzZWQgb24gcG93ZXIgb2YgdHdvLiIsImN1YmljLWJlemllcigwLjg5NSwgMC4wMywgMC42ODUsIDAuMjIpIjoiRWFzZS1pbiBRdWFydGljLiBCYXNlZCBvbiBwb3dlciBvZiBmb3VyLiIsImN1YmljLWJlemllcigwLjc3LCAwLCAwLjE3NSwgMSkiOiJFYXNlLWluLW91dCBRdWFydGljLiBCYXNlZCBvbiBwb3dlciBvZiBmb3VyLiIsImN1YmljLWJlemllcigwLjE2NSwgMC44NCwgMC40NCwgMSkiOiJFYXNlLW91dCBRdWFydGljLiBCYXNlZCBvbiBwb3dlciBvZiBmb3VyLiIsImN1YmljLWJlemllcigwLjc1NSwgMC4wNSwgMC44NTUsIDAuMDYpIjoiRWFzZS1pbiBRdWludGljLiBCYXNlZCBvbiBwb3dlciBvZiBmaXZlLiIsImN1YmljLWJlemllcigwLjg2LCAwLCAwLjA3LCAxKSI6IkVhc2UtaW4tb3V0IFF1aW50aWMuIEJhc2VkIG9uIHBvd2VyIG9mIGZpdmUuIiwiY3ViaWMtYmV6aWVyKDAuMjMsIDEsIDAuMzIwLCAxKSI6IkVhc2Utb3V0IFF1aW50aWMuIEJhc2VkIG9uIHBvd2VyIG9mIGZpdmUuIn0sRWM9eyJjaXJjbGUoKSI6IkRlZmluZXMgYSBjaXJjbGUuIiwiZWxsaXBzZSgpIjoiRGVmaW5lcyBhbiBlbGxpcHNlLiIsImluc2V0KCkiOiJEZWZpbmVzIGFuIGluc2V0IHJlY3RhbmdsZS4iLCJwb2x5Z29uKCkiOiJEZWZpbmVzIGEgcG9seWdvbi4ifSxGYz17bGVuZ3RoOlsiY2FwIiwiY2giLCJjbSIsImNxYiIsImNxaCIsImNxaSIsImNxbWF4IiwiY3FtaW4iLCJjcXciLCJkdmIiLCJkdmgiLCJkdmkiLCJkdnciLCJlbSIsImV4IiwiaWMiLCJpbiIsImxoIiwibHZiIiwibHZoIiwibHZpIiwibHZ3IiwibW0iLCJwYyIsInB0IiwicHgiLCJxIiwicmNhcCIsInJjaCIsInJlbSIsInJleCIsInJpYyIsInJsaCIsInN2YiIsInN2aCIsInN2aSIsInN2dyIsInZiIiwidmgiLCJ2aSIsInZtYXgiLCJ2bWluIiwidnciXSxhbmdsZTpbImRlZyIsInJhZCIsImdyYWQiLCJ0dXJuIl0sdGltZTpbIm1zIiwicyJdLGZyZXF1ZW5jeTpbIkh6Iiwia0h6Il0scmVzb2x1dGlvbjpbImRwaSIsImRwY20iLCJkcHB4Il0scGVyY2VudGFnZTpbIiUiLCJmciJdfSxacD1bImEiLCJhYmJyIiwiYWRkcmVzcyIsImFyZWEiLCJhcnRpY2xlIiwiYXNpZGUiLCJhdWRpbyIsImIiLCJiYXNlIiwiYmRpIiwiYmRvIiwiYmxvY2txdW90ZSIsImJvZHkiLCJiciIsImJ1dHRvbiIsImNhbnZhcyIsImNhcHRpb24iLCJjaXRlIiwiY29kZSIsImNvbCIsImNvbGdyb3VwIiwiZGF0YSIsImRhdGFsaXN0IiwiZGQiLCJkZWwiLCJkZXRhaWxzIiwiZGZuIiwiZGlhbG9nIiwiZGl2IiwiZGwiLCJkdCIsImVtIiwiZW1iZWQiLCJmaWVsZHNldCIsImZpZ2NhcHRpb24iLCJmaWd1cmUiLCJmb290ZXIiLCJmb3JtIiwiaDEiLCJoMiIsImgzIiwiaDQiLCJoNSIsImg2IiwiaGVhZCIsImhlYWRlciIsImhncm91cCIsImhyIiwiaHRtbCIsImkiLCJpZnJhbWUiLCJpbWciLCJpbnB1dCIsImlucyIsImtiZCIsImtleWdlbiIsImxhYmVsIiwibGVnZW5kIiwibGkiLCJsaW5rIiwibWFpbiIsIm1hcCIsIm1hcmsiLCJtZW51IiwibWVudWl0ZW0iLCJtZXRhIiwibWV0ZXIiLCJuYXYiLCJub3NjcmlwdCIsIm9iamVjdCIsIm9sIiwib3B0Z3JvdXAiLCJvcHRpb24iLCJvdXRwdXQiLCJwIiwicGFyYW0iLCJwaWN0dXJlIiwicHJlIiwicHJvZ3Jlc3MiLCJxIiwicmIiLCJycCIsInJ0IiwicnRjIiwicnVieSIsInMiLCJzYW1wIiwic2NyaXB0Iiwic2VjdGlvbiIsInNlbGVjdCIsInNtYWxsIiwic291cmNlIiwic3BhbiIsInN0cm9uZyIsInN0eWxlIiwic3ViIiwic3VtbWFyeSIsInN1cCIsInRhYmxlIiwidGJvZHkiLCJ0ZCIsInRlbXBsYXRlIiwidGV4dGFyZWEiLCJ0Zm9vdCIsInRoIiwidGhlYWQiLCJ0aW1lIiwidGl0bGUiLCJ0ciIsInRyYWNrIiwidSIsInVsIiwiY29uc3QiLCJ2aWRlbyIsIndiciJdLGVtPVsiY2lyY2xlIiwiY2xpcFBhdGgiLCJjdXJzb3IiLCJkZWZzIiwiZGVzYyIsImVsbGlwc2UiLCJmZUJsZW5kIiwiZmVDb2xvck1hdHJpeCIsImZlQ29tcG9uZW50VHJhbnNmZXIiLCJmZUNvbXBvc2l0ZSIsImZlQ29udm9sdmVNYXRyaXgiLCJmZURpZmZ1c2VMaWdodGluZyIsImZlRGlzcGxhY2VtZW50TWFwIiwiZmVEaXN0YW50TGlnaHQiLCJmZURyb3BTaGFkb3ciLCJmZUZsb29kIiwiZmVGdW5jQSIsImZlRnVuY0IiLCJmZUZ1bmNHIiwiZmVGdW5jUiIsImZlR2F1c3NpYW5CbHVyIiwiZmVJbWFnZSIsImZlTWVyZ2UiLCJmZU1lcmdlTm9kZSIsImZlTW9ycGhvbG9neSIsImZlT2Zmc2V0IiwiZmVQb2ludExpZ2h0IiwiZmVTcGVjdWxhckxpZ2h0aW5nIiwiZmVTcG90TGlnaHQiLCJmZVRpbGUiLCJmZVR1cmJ1bGVuY2UiLCJmaWx0ZXIiLCJmb3JlaWduT2JqZWN0IiwiZyIsImhhdGNoIiwiaGF0Y2hwYXRoIiwiaW1hZ2UiLCJsaW5lIiwibGluZWFyR3JhZGllbnQiLCJtYXJrZXIiLCJtYXNrIiwibWVzaCIsIm1lc2hwYXRjaCIsIm1lc2hyb3ciLCJtZXRhZGF0YSIsIm1wYXRoIiwicGF0aCIsInBhdHRlcm4iLCJwb2x5Z29uIiwicG9seWxpbmUiLCJyYWRpYWxHcmFkaWVudCIsInJlY3QiLCJzZXQiLCJzb2xpZGNvbG9yIiwic3RvcCIsInN2ZyIsInN3aXRjaCIsInN5bWJvbCIsInRleHQiLCJ0ZXh0UGF0aCIsInRzcGFuIiwidXNlIiwidmlldyJdLHRtPVsiQGJvdHRvbS1jZW50ZXIiLCJAYm90dG9tLWxlZnQiLCJAYm90dG9tLWxlZnQtY29ybmVyIiwiQGJvdHRvbS1yaWdodCIsIkBib3R0b20tcmlnaHQtY29ybmVyIiwiQGxlZnQtYm90dG9tIiwiQGxlZnQtbWlkZGxlIiwiQGxlZnQtdG9wIiwiQHJpZ2h0LWJvdHRvbSIsIkByaWdodC1taWRkbGUiLCJAcmlnaHQtdG9wIiwiQHRvcC1jZW50ZXIiLCJAdG9wLWxlZnQiLCJAdG9wLWxlZnQtY29ybmVyIiwiQHRvcC1yaWdodCIsIkB0b3AtcmlnaHQtY29ybmVyIl07ZnVuY3Rpb24gZ3IoZSl7cmV0dXJuIE9iamVjdC5rZXlzKGUpLm1hcCh0PT5lW3RdKX1mdW5jdGlvbiBBZShlKXtyZXR1cm4gdHlwZW9mIGU8InUifXZhciBicj1jbGFzc3tjb25zdHJ1Y3RvcihlPW5ldyB5bil7dGhpcy5rZXlmcmFtZVJlZ2V4PS9eQChcLSh3ZWJraXR8bXN8bW96fG8pXC0pP2tleWZyYW1lcyQvaSx0aGlzLnNjYW5uZXI9ZSx0aGlzLnRva2VuPXt0eXBlOnAuRU9GLG9mZnNldDotMSxsZW46MCx0ZXh0OiIifSx0aGlzLnByZXZUb2tlbj12b2lkIDB9cGVla0lkZW50KGUpe3JldHVybiBwLklkZW50PT09dGhpcy50b2tlbi50eXBlJiZlLmxlbmd0aD09PXRoaXMudG9rZW4udGV4dC5sZW5ndGgmJmU9PT10aGlzLnRva2VuLnRleHQudG9Mb3dlckNhc2UoKX1wZWVrS2V5d29yZChlKXtyZXR1cm4gcC5BdEtleXdvcmQ9PT10aGlzLnRva2VuLnR5cGUmJmUubGVuZ3RoPT09dGhpcy50b2tlbi50ZXh0Lmxlbmd0aCYmZT09PXRoaXMudG9rZW4udGV4dC50b0xvd2VyQ2FzZSgpfXBlZWtEZWxpbShlKXtyZXR1cm4gcC5EZWxpbT09PXRoaXMudG9rZW4udHlwZSYmZT09PXRoaXMudG9rZW4udGV4dH1wZWVrKGUpe3JldHVybiBlPT09dGhpcy50b2tlbi50eXBlfXBlZWtPbmUoLi4uZSl7cmV0dXJuIGUuaW5kZXhPZih0aGlzLnRva2VuLnR5cGUpIT09LTF9cGVla1JlZ0V4cChlLHQpe3JldHVybiBlIT09dGhpcy50b2tlbi50eXBlPyExOnQudGVzdCh0aGlzLnRva2VuLnRleHQpfWhhc1doaXRlc3BhY2UoKXtyZXR1cm4hIXRoaXMucHJldlRva2VuJiZ0aGlzLnByZXZUb2tlbi5vZmZzZXQrdGhpcy5wcmV2VG9rZW4ubGVuIT09dGhpcy50b2tlbi5vZmZzZXR9Y29uc3VtZVRva2VuKCl7dGhpcy5wcmV2VG9rZW49dGhpcy50b2tlbix0aGlzLnRva2VuPXRoaXMuc2Nhbm5lci5zY2FuKCl9YWNjZXB0VW5pY29kZVJhbmdlKCl7Y29uc3QgZT10aGlzLnNjYW5uZXIudHJ5U2NhblVuaWNvZGUoKTtyZXR1cm4gZT8odGhpcy5wcmV2VG9rZW49ZSx0aGlzLnRva2VuPXRoaXMuc2Nhbm5lci5zY2FuKCksITApOiExfW1hcmsoKXtyZXR1cm57cHJldjp0aGlzLnByZXZUb2tlbixjdXJyOnRoaXMudG9rZW4scG9zOnRoaXMuc2Nhbm5lci5wb3MoKX19cmVzdG9yZUF0TWFyayhlKXt0aGlzLnByZXZUb2tlbj1lLnByZXYsdGhpcy50b2tlbj1lLmN1cnIsdGhpcy5zY2FubmVyLmdvQmFja1RvKGUucG9zKX10cnkoZSl7Y29uc3QgdD10aGlzLm1hcmsoKSxuPWUoKTtyZXR1cm4gbnx8KHRoaXMucmVzdG9yZUF0TWFyayh0KSxudWxsKX1hY2NlcHRPbmVLZXl3b3JkKGUpe2lmKHAuQXRLZXl3b3JkPT09dGhpcy50b2tlbi50eXBlKXtmb3IoY29uc3QgdCBvZiBlKWlmKHQubGVuZ3RoPT09dGhpcy50b2tlbi50ZXh0Lmxlbmd0aCYmdD09PXRoaXMudG9rZW4udGV4dC50b0xvd2VyQ2FzZSgpKXJldHVybiB0aGlzLmNvbnN1bWVUb2tlbigpLCEwfXJldHVybiExfWFjY2VwdChlKXtyZXR1cm4gZT09PXRoaXMudG9rZW4udHlwZT8odGhpcy5jb25zdW1lVG9rZW4oKSwhMCk6ITF9YWNjZXB0SWRlbnQoZSl7cmV0dXJuIHRoaXMucGVla0lkZW50KGUpPyh0aGlzLmNvbnN1bWVUb2tlbigpLCEwKTohMX1hY2NlcHRLZXl3b3JkKGUpe3JldHVybiB0aGlzLnBlZWtLZXl3b3JkKGUpPyh0aGlzLmNvbnN1bWVUb2tlbigpLCEwKTohMX1hY2NlcHREZWxpbShlKXtyZXR1cm4gdGhpcy5wZWVrRGVsaW0oZSk/KHRoaXMuY29uc3VtZVRva2VuKCksITApOiExfWFjY2VwdFJlZ2V4cChlKXtyZXR1cm4gZS50ZXN0KHRoaXMudG9rZW4udGV4dCk/KHRoaXMuY29uc3VtZVRva2VuKCksITApOiExfV9wYXJzZVJlZ2V4cChlKXtsZXQgdD10aGlzLmNyZWF0ZU5vZGUoYi5JZGVudGlmaWVyKTtkbzt3aGlsZSh0aGlzLmFjY2VwdFJlZ2V4cChlKSk7cmV0dXJuIHRoaXMuZmluaXNoKHQpfWFjY2VwdFVucXVvdGVkU3RyaW5nKCl7Y29uc3QgZT10aGlzLnNjYW5uZXIucG9zKCk7dGhpcy5zY2FubmVyLmdvQmFja1RvKHRoaXMudG9rZW4ub2Zmc2V0KTtjb25zdCB0PXRoaXMuc2Nhbm5lci5zY2FuVW5xdW90ZWRTdHJpbmcoKTtyZXR1cm4gdD8odGhpcy50b2tlbj10LHRoaXMuY29uc3VtZVRva2VuKCksITApOih0aGlzLnNjYW5uZXIuZ29CYWNrVG8oZSksITEpfXJlc3luYyhlLHQpe2Zvcig7Oyl7aWYoZSYmZS5pbmRleE9mKHRoaXMudG9rZW4udHlwZSkhPT0tMSlyZXR1cm4gdGhpcy5jb25zdW1lVG9rZW4oKSwhMDtpZih0JiZ0LmluZGV4T2YodGhpcy50b2tlbi50eXBlKSE9PS0xKXJldHVybiEwO2lmKHRoaXMudG9rZW4udHlwZT09PXAuRU9GKXJldHVybiExO3RoaXMudG9rZW49dGhpcy5zY2FubmVyLnNjYW4oKX19Y3JlYXRlTm9kZShlKXtyZXR1cm4gbmV3IE8odGhpcy50b2tlbi5vZmZzZXQsdGhpcy50b2tlbi5sZW4sZSl9Y3JlYXRlKGUpe3JldHVybiBuZXcgZSh0aGlzLnRva2VuLm9mZnNldCx0aGlzLnRva2VuLmxlbil9ZmluaXNoKGUsdCxuLHIpe2lmKCEoZSBpbnN0YW5jZW9mIGJlKSYmKHQmJnRoaXMubWFya0Vycm9yKGUsdCxuLHIpLHRoaXMucHJldlRva2VuKSl7Y29uc3QgaT10aGlzLnByZXZUb2tlbi5vZmZzZXQrdGhpcy5wcmV2VG9rZW4ubGVuO2UubGVuZ3RoPWk+ZS5vZmZzZXQ/aS1lLm9mZnNldDowfXJldHVybiBlfW1hcmtFcnJvcihlLHQsbixyKXt0aGlzLnRva2VuIT09dGhpcy5sYXN0RXJyb3JUb2tlbiYmKGUuYWRkSXNzdWUobmV3IHVsKGUsdCxGZS5FcnJvcix2b2lkIDAsdGhpcy50b2tlbi5vZmZzZXQsdGhpcy50b2tlbi5sZW4pKSx0aGlzLmxhc3RFcnJvclRva2VuPXRoaXMudG9rZW4pLChufHxyKSYmdGhpcy5yZXN5bmMobixyKX1wYXJzZVN0eWxlc2hlZXQoZSl7Y29uc3QgdD1lLnZlcnNpb24sbj1lLmdldFRleHQoKSxyPShpLHMpPT57aWYoZS52ZXJzaW9uIT09dCl0aHJvdyBuZXcgRXJyb3IoIlVuZGVybHlpbmcgbW9kZWwgaGFzIGNoYW5nZWQsIEFTVCBpcyBubyBsb25nZXIgdmFsaWQiKTtyZXR1cm4gbi5zdWJzdHIoaSxzKX07cmV0dXJuIHRoaXMuaW50ZXJuYWxQYXJzZShuLHRoaXMuX3BhcnNlU3R5bGVzaGVldCxyKX1pbnRlcm5hbFBhcnNlKGUsdCxuKXt0aGlzLnNjYW5uZXIuc2V0U291cmNlKGUpLHRoaXMudG9rZW49dGhpcy5zY2FubmVyLnNjYW4oKTtjb25zdCByPXQuYmluZCh0aGlzKSgpO3JldHVybiByJiYobj9yLnRleHRQcm92aWRlcj1uOnIudGV4dFByb3ZpZGVyPShpLHMpPT5lLnN1YnN0cihpLHMpKSxyfV9wYXJzZVN0eWxlc2hlZXQoKXtjb25zdCBlPXRoaXMuY3JlYXRlKFp1KTtmb3IoO2UuYWRkQ2hpbGQodGhpcy5fcGFyc2VTdHlsZXNoZWV0U3RhcnQoKSk7KTtsZXQgdD0hMTtkb3tsZXQgbj0hMTtkb3tuPSExO2NvbnN0IHI9dGhpcy5fcGFyc2VTdHlsZXNoZWV0U3RhdGVtZW50KCk7Zm9yKHImJihlLmFkZENoaWxkKHIpLG49ITAsdD0hMSwhdGhpcy5wZWVrKHAuRU9GKSYmdGhpcy5fbmVlZHNTZW1pY29sb25BZnRlcihyKSYmIXRoaXMuYWNjZXB0KHAuU2VtaUNvbG9uKSYmdGhpcy5tYXJrRXJyb3IoZSx4LlNlbWlDb2xvbkV4cGVjdGVkKSk7dGhpcy5hY2NlcHQocC5TZW1pQ29sb24pfHx0aGlzLmFjY2VwdChwLkNETyl8fHRoaXMuYWNjZXB0KHAuQ0RDKTspbj0hMCx0PSExfXdoaWxlKG4pO2lmKHRoaXMucGVlayhwLkVPRikpYnJlYWs7dHx8KHRoaXMucGVlayhwLkF0S2V5d29yZCk/dGhpcy5tYXJrRXJyb3IoZSx4LlVua25vd25BdFJ1bGUpOnRoaXMubWFya0Vycm9yKGUseC5SdWxlT3JTZWxlY3RvckV4cGVjdGVkKSx0PSEwKSx0aGlzLmNvbnN1bWVUb2tlbigpfXdoaWxlKCF0aGlzLnBlZWsocC5FT0YpKTtyZXR1cm4gdGhpcy5maW5pc2goZSl9X3BhcnNlU3R5bGVzaGVldFN0YXJ0KCl7cmV0dXJuIHRoaXMuX3BhcnNlQ2hhcnNldCgpfV9wYXJzZVN0eWxlc2hlZXRTdGF0ZW1lbnQoZT0hMSl7cmV0dXJuIHRoaXMucGVlayhwLkF0S2V5d29yZCk/dGhpcy5fcGFyc2VTdHlsZXNoZWV0QXRTdGF0ZW1lbnQoZSk6dGhpcy5fcGFyc2VSdWxlc2V0KGUpfV9wYXJzZVN0eWxlc2hlZXRBdFN0YXRlbWVudChlPSExKXtyZXR1cm4gdGhpcy5fcGFyc2VJbXBvcnQoKXx8dGhpcy5fcGFyc2VNZWRpYShlKXx8dGhpcy5fcGFyc2VQYWdlKCl8fHRoaXMuX3BhcnNlRm9udEZhY2UoKXx8dGhpcy5fcGFyc2VLZXlmcmFtZSgpfHx0aGlzLl9wYXJzZVN1cHBvcnRzKGUpfHx0aGlzLl9wYXJzZUxheWVyKGUpfHx0aGlzLl9wYXJzZVByb3BlcnR5QXRSdWxlKCl8fHRoaXMuX3BhcnNlVmlld1BvcnQoKXx8dGhpcy5fcGFyc2VOYW1lc3BhY2UoKXx8dGhpcy5fcGFyc2VEb2N1bWVudCgpfHx0aGlzLl9wYXJzZUNvbnRhaW5lcihlKXx8dGhpcy5fcGFyc2VVbmtub3duQXRSdWxlKCl9X3RyeVBhcnNlUnVsZXNldChlKXtjb25zdCB0PXRoaXMubWFyaygpO2lmKHRoaXMuX3BhcnNlU2VsZWN0b3IoZSkpe2Zvcig7dGhpcy5hY2NlcHQocC5Db21tYSkmJnRoaXMuX3BhcnNlU2VsZWN0b3IoZSk7KTtpZih0aGlzLmFjY2VwdChwLkN1cmx5TCkpcmV0dXJuIHRoaXMucmVzdG9yZUF0TWFyayh0KSx0aGlzLl9wYXJzZVJ1bGVzZXQoZSl9cmV0dXJuIHRoaXMucmVzdG9yZUF0TWFyayh0KSxudWxsfV9wYXJzZVJ1bGVzZXQoZT0hMSl7Y29uc3QgdD10aGlzLmNyZWF0ZShDdCksbj10LmdldFNlbGVjdG9ycygpO2lmKCFuLmFkZENoaWxkKHRoaXMuX3BhcnNlU2VsZWN0b3IoZSkpKXJldHVybiBudWxsO2Zvcig7dGhpcy5hY2NlcHQocC5Db21tYSk7KWlmKCFuLmFkZENoaWxkKHRoaXMuX3BhcnNlU2VsZWN0b3IoZSkpKXJldHVybiB0aGlzLmZpbmlzaCh0LHguU2VsZWN0b3JFeHBlY3RlZCk7cmV0dXJuIHRoaXMuX3BhcnNlQm9keSh0LHRoaXMuX3BhcnNlUnVsZVNldERlY2xhcmF0aW9uLmJpbmQodGhpcykpfV9wYXJzZVJ1bGVTZXREZWNsYXJhdGlvbkF0U3RhdGVtZW50KCl7cmV0dXJuIHRoaXMuX3BhcnNlTWVkaWEoITApfHx0aGlzLl9wYXJzZVN1cHBvcnRzKCEwKXx8dGhpcy5fcGFyc2VMYXllcighMCl8fHRoaXMuX3BhcnNlQ29udGFpbmVyKCEwKXx8dGhpcy5fcGFyc2VVbmtub3duQXRSdWxlKCl9X3BhcnNlUnVsZVNldERlY2xhcmF0aW9uKCl7cmV0dXJuIHRoaXMucGVlayhwLkF0S2V5d29yZCk/dGhpcy5fcGFyc2VSdWxlU2V0RGVjbGFyYXRpb25BdFN0YXRlbWVudCgpOnRoaXMucGVlayhwLklkZW50KT90aGlzLl90cnlQYXJzZVJ1bGVzZXQoITApfHx0aGlzLl9wYXJzZURlY2xhcmF0aW9uKCk6dGhpcy5fcGFyc2VSdWxlc2V0KCEwKX1fbmVlZHNTZW1pY29sb25BZnRlcihlKXtzd2l0Y2goZS50eXBlKXtjYXNlIGIuS2V5ZnJhbWU6Y2FzZSBiLlZpZXdQb3J0OmNhc2UgYi5NZWRpYTpjYXNlIGIuUnVsZXNldDpjYXNlIGIuTmFtZXNwYWNlOmNhc2UgYi5JZjpjYXNlIGIuRm9yOmNhc2UgYi5FYWNoOmNhc2UgYi5XaGlsZTpjYXNlIGIuTWl4aW5EZWNsYXJhdGlvbjpjYXNlIGIuRnVuY3Rpb25EZWNsYXJhdGlvbjpjYXNlIGIuTWl4aW5Db250ZW50RGVjbGFyYXRpb246cmV0dXJuITE7Y2FzZSBiLkV4dGVuZHNSZWZlcmVuY2U6Y2FzZSBiLk1peGluQ29udGVudFJlZmVyZW5jZTpjYXNlIGIuUmV0dXJuU3RhdGVtZW50OmNhc2UgYi5NZWRpYVF1ZXJ5OmNhc2UgYi5EZWJ1ZzpjYXNlIGIuSW1wb3J0OmNhc2UgYi5BdEFwcGx5UnVsZTpjYXNlIGIuQ3VzdG9tUHJvcGVydHlEZWNsYXJhdGlvbjpyZXR1cm4hMDtjYXNlIGIuVmFyaWFibGVEZWNsYXJhdGlvbjpyZXR1cm4gZS5uZWVkc1NlbWljb2xvbjtjYXNlIGIuTWl4aW5SZWZlcmVuY2U6cmV0dXJuIWUuZ2V0Q29udGVudCgpO2Nhc2UgYi5EZWNsYXJhdGlvbjpyZXR1cm4hZS5nZXROZXN0ZWRQcm9wZXJ0aWVzKCl9cmV0dXJuITF9X3BhcnNlRGVjbGFyYXRpb25zKGUpe2NvbnN0IHQ9dGhpcy5jcmVhdGUoa2kpO2lmKCF0aGlzLmFjY2VwdChwLkN1cmx5TCkpcmV0dXJuIG51bGw7bGV0IG49ZSgpO2Zvcig7dC5hZGRDaGlsZChuKSYmIXRoaXMucGVlayhwLkN1cmx5Uik7KXtpZih0aGlzLl9uZWVkc1NlbWljb2xvbkFmdGVyKG4pJiYhdGhpcy5hY2NlcHQocC5TZW1pQ29sb24pKXJldHVybiB0aGlzLmZpbmlzaCh0LHguU2VtaUNvbG9uRXhwZWN0ZWQsW3AuU2VtaUNvbG9uLHAuQ3VybHlSXSk7Zm9yKG4mJnRoaXMucHJldlRva2VuJiZ0aGlzLnByZXZUb2tlbi50eXBlPT09cC5TZW1pQ29sb24mJihuLnNlbWljb2xvblBvc2l0aW9uPXRoaXMucHJldlRva2VuLm9mZnNldCk7dGhpcy5hY2NlcHQocC5TZW1pQ29sb24pOyk7bj1lKCl9cmV0dXJuIHRoaXMuYWNjZXB0KHAuQ3VybHlSKT90aGlzLmZpbmlzaCh0KTp0aGlzLmZpbmlzaCh0LHguUmlnaHRDdXJseUV4cGVjdGVkLFtwLkN1cmx5UixwLlNlbWlDb2xvbl0pfV9wYXJzZUJvZHkoZSx0KXtyZXR1cm4gZS5zZXREZWNsYXJhdGlvbnModGhpcy5fcGFyc2VEZWNsYXJhdGlvbnModCkpP3RoaXMuZmluaXNoKGUpOnRoaXMuZmluaXNoKGUseC5MZWZ0Q3VybHlFeHBlY3RlZCxbcC5DdXJseVIscC5TZW1pQ29sb25dKX1fcGFyc2VTZWxlY3RvcihlKXtjb25zdCB0PXRoaXMuY3JlYXRlKHhuKTtsZXQgbj0hMTtmb3IoZSYmKG49dC5hZGRDaGlsZCh0aGlzLl9wYXJzZUNvbWJpbmF0b3IoKSkpO3QuYWRkQ2hpbGQodGhpcy5fcGFyc2VTaW1wbGVTZWxlY3RvcigpKTspbj0hMCx0LmFkZENoaWxkKHRoaXMuX3BhcnNlQ29tYmluYXRvcigpKTtyZXR1cm4gbj90aGlzLmZpbmlzaCh0KTpudWxsfV9wYXJzZURlY2xhcmF0aW9uKGUpe2NvbnN0IHQ9dGhpcy5fdHJ5UGFyc2VDdXN0b21Qcm9wZXJ0eURlY2xhcmF0aW9uKGUpO2lmKHQpcmV0dXJuIHQ7Y29uc3Qgbj10aGlzLmNyZWF0ZShVZSk7cmV0dXJuIG4uc2V0UHJvcGVydHkodGhpcy5fcGFyc2VQcm9wZXJ0eSgpKT90aGlzLmFjY2VwdChwLkNvbG9uKT8odGhpcy5wcmV2VG9rZW4mJihuLmNvbG9uUG9zaXRpb249dGhpcy5wcmV2VG9rZW4ub2Zmc2V0KSxuLnNldFZhbHVlKHRoaXMuX3BhcnNlRXhwcigpKT8obi5hZGRDaGlsZCh0aGlzLl9wYXJzZVByaW8oKSksdGhpcy5wZWVrKHAuU2VtaUNvbG9uKSYmKG4uc2VtaWNvbG9uUG9zaXRpb249dGhpcy50b2tlbi5vZmZzZXQpLHRoaXMuZmluaXNoKG4pKTp0aGlzLmZpbmlzaChuLHguUHJvcGVydHlWYWx1ZUV4cGVjdGVkKSk6dGhpcy5maW5pc2gobix4LkNvbG9uRXhwZWN0ZWQsW3AuQ29sb25dLGV8fFtwLlNlbWlDb2xvbl0pOm51bGx9X3RyeVBhcnNlQ3VzdG9tUHJvcGVydHlEZWNsYXJhdGlvbihlKXtpZighdGhpcy5wZWVrUmVnRXhwKHAuSWRlbnQsL14tLS8pKXJldHVybiBudWxsO2NvbnN0IHQ9dGhpcy5jcmVhdGUodHApO2lmKCF0LnNldFByb3BlcnR5KHRoaXMuX3BhcnNlUHJvcGVydHkoKSkpcmV0dXJuIG51bGw7aWYoIXRoaXMuYWNjZXB0KHAuQ29sb24pKXJldHVybiB0aGlzLmZpbmlzaCh0LHguQ29sb25FeHBlY3RlZCxbcC5Db2xvbl0pO3RoaXMucHJldlRva2VuJiYodC5jb2xvblBvc2l0aW9uPXRoaXMucHJldlRva2VuLm9mZnNldCk7Y29uc3Qgbj10aGlzLm1hcmsoKTtpZih0aGlzLnBlZWsocC5DdXJseUwpKXtjb25zdCBpPXRoaXMuY3JlYXRlKGVwKSxzPXRoaXMuX3BhcnNlRGVjbGFyYXRpb25zKHRoaXMuX3BhcnNlUnVsZVNldERlY2xhcmF0aW9uLmJpbmQodGhpcykpO2lmKGkuc2V0RGVjbGFyYXRpb25zKHMpJiYhcy5pc0Vycm9uZW91cyghMCkmJihpLmFkZENoaWxkKHRoaXMuX3BhcnNlUHJpbygpKSx0aGlzLnBlZWsocC5TZW1pQ29sb24pKSlyZXR1cm4gdGhpcy5maW5pc2goaSksdC5zZXRQcm9wZXJ0eVNldChpKSx0LnNlbWljb2xvblBvc2l0aW9uPXRoaXMudG9rZW4ub2Zmc2V0LHRoaXMuZmluaXNoKHQpO3RoaXMucmVzdG9yZUF0TWFyayhuKX1jb25zdCByPXRoaXMuX3BhcnNlRXhwcigpO3JldHVybiByJiYhci5pc0Vycm9uZW91cyghMCkmJih0aGlzLl9wYXJzZVByaW8oKSx0aGlzLnBlZWtPbmUoLi4uZXx8W10scC5TZW1pQ29sb24scC5FT0YpKT8odC5zZXRWYWx1ZShyKSx0aGlzLnBlZWsocC5TZW1pQ29sb24pJiYodC5zZW1pY29sb25Qb3NpdGlvbj10aGlzLnRva2VuLm9mZnNldCksdGhpcy5maW5pc2godCkpOih0aGlzLnJlc3RvcmVBdE1hcmsobiksdC5hZGRDaGlsZCh0aGlzLl9wYXJzZUN1c3RvbVByb3BlcnR5VmFsdWUoZSkpLHQuYWRkQ2hpbGQodGhpcy5fcGFyc2VQcmlvKCkpLEFlKHQuY29sb25Qb3NpdGlvbikmJnRoaXMudG9rZW4ub2Zmc2V0PT09dC5jb2xvblBvc2l0aW9uKzE/dGhpcy5maW5pc2godCx4LlByb3BlcnR5VmFsdWVFeHBlY3RlZCk6dGhpcy5maW5pc2godCkpfV9wYXJzZUN1c3RvbVByb3BlcnR5VmFsdWUoZT1bcC5DdXJseVJdKXtjb25zdCB0PXRoaXMuY3JlYXRlKE8pLG49KCk9Pmk9PT0wJiZzPT09MCYmYT09PTAscj0oKT0+ZS5pbmRleE9mKHRoaXMudG9rZW4udHlwZSkhPT0tMTtsZXQgaT0wLHM9MCxhPTA7ZTpmb3IoOzspe3N3aXRjaCh0aGlzLnRva2VuLnR5cGUpe2Nhc2UgcC5TZW1pQ29sb246aWYobigpKWJyZWFrIGU7YnJlYWs7Y2FzZSBwLkV4Y2xhbWF0aW9uOmlmKG4oKSlicmVhayBlO2JyZWFrO2Nhc2UgcC5DdXJseUw6aSsrO2JyZWFrO2Nhc2UgcC5DdXJseVI6aWYoaS0tLGk8MCl7aWYocigpJiZzPT09MCYmYT09PTApYnJlYWsgZTtyZXR1cm4gdGhpcy5maW5pc2godCx4LkxlZnRDdXJseUV4cGVjdGVkKX1icmVhaztjYXNlIHAuUGFyZW50aGVzaXNMOnMrKzticmVhaztjYXNlIHAuUGFyZW50aGVzaXNSOmlmKHMtLSxzPDApe2lmKHIoKSYmYT09PTAmJmk9PT0wKWJyZWFrIGU7cmV0dXJuIHRoaXMuZmluaXNoKHQseC5MZWZ0UGFyZW50aGVzaXNFeHBlY3RlZCl9YnJlYWs7Y2FzZSBwLkJyYWNrZXRMOmErKzticmVhaztjYXNlIHAuQnJhY2tldFI6aWYoYS0tLGE8MClyZXR1cm4gdGhpcy5maW5pc2godCx4LkxlZnRTcXVhcmVCcmFja2V0RXhwZWN0ZWQpO2JyZWFrO2Nhc2UgcC5CYWRTdHJpbmc6YnJlYWsgZTtjYXNlIHAuRU9GOmxldCBsPXguUmlnaHRDdXJseUV4cGVjdGVkO3JldHVybiBhPjA/bD14LlJpZ2h0U3F1YXJlQnJhY2tldEV4cGVjdGVkOnM+MCYmKGw9eC5SaWdodFBhcmVudGhlc2lzRXhwZWN0ZWQpLHRoaXMuZmluaXNoKHQsbCl9dGhpcy5jb25zdW1lVG9rZW4oKX1yZXR1cm4gdGhpcy5maW5pc2godCl9X3RyeVRvUGFyc2VEZWNsYXJhdGlvbihlKXtjb25zdCB0PXRoaXMubWFyaygpO3JldHVybiB0aGlzLl9wYXJzZVByb3BlcnR5KCkmJnRoaXMuYWNjZXB0KHAuQ29sb24pPyh0aGlzLnJlc3RvcmVBdE1hcmsodCksdGhpcy5fcGFyc2VEZWNsYXJhdGlvbihlKSk6KHRoaXMucmVzdG9yZUF0TWFyayh0KSxudWxsKX1fcGFyc2VQcm9wZXJ0eSgpe2NvbnN0IGU9dGhpcy5jcmVhdGUoRmkpLHQ9dGhpcy5tYXJrKCk7cmV0dXJuKHRoaXMuYWNjZXB0RGVsaW0oIioiKXx8dGhpcy5hY2NlcHREZWxpbSgiXyIpKSYmdGhpcy5oYXNXaGl0ZXNwYWNlKCk/KHRoaXMucmVzdG9yZUF0TWFyayh0KSxudWxsKTplLnNldElkZW50aWZpZXIodGhpcy5fcGFyc2VQcm9wZXJ0eUlkZW50aWZpZXIoKSk/dGhpcy5maW5pc2goZSk6bnVsbH1fcGFyc2VQcm9wZXJ0eUlkZW50aWZpZXIoKXtyZXR1cm4gdGhpcy5fcGFyc2VJZGVudCgpfV9wYXJzZUNoYXJzZXQoKXtpZighdGhpcy5wZWVrKHAuQ2hhcnNldCkpcmV0dXJuIG51bGw7Y29uc3QgZT10aGlzLmNyZWF0ZShPKTtyZXR1cm4gdGhpcy5jb25zdW1lVG9rZW4oKSx0aGlzLmFjY2VwdChwLlN0cmluZyk/dGhpcy5hY2NlcHQocC5TZW1pQ29sb24pP3RoaXMuZmluaXNoKGUpOnRoaXMuZmluaXNoKGUseC5TZW1pQ29sb25FeHBlY3RlZCk6dGhpcy5maW5pc2goZSx4LklkZW50aWZpZXJFeHBlY3RlZCl9X3BhcnNlSW1wb3J0KCl7aWYoIXRoaXMucGVla0tleXdvcmQoIkBpbXBvcnQiKSlyZXR1cm4gbnVsbDtjb25zdCBlPXRoaXMuY3JlYXRlKFJpKTtyZXR1cm4gdGhpcy5jb25zdW1lVG9rZW4oKSwhZS5hZGRDaGlsZCh0aGlzLl9wYXJzZVVSSUxpdGVyYWwoKSkmJiFlLmFkZENoaWxkKHRoaXMuX3BhcnNlU3RyaW5nTGl0ZXJhbCgpKT90aGlzLmZpbmlzaChlLHguVVJJT3JTdHJpbmdFeHBlY3RlZCk6dGhpcy5fY29tcGxldGVQYXJzZUltcG9ydChlKX1fY29tcGxldGVQYXJzZUltcG9ydChlKXtpZih0aGlzLmFjY2VwdElkZW50KCJsYXllciIpJiZ0aGlzLmFjY2VwdChwLlBhcmVudGhlc2lzTCkpe2lmKCFlLmFkZENoaWxkKHRoaXMuX3BhcnNlTGF5ZXJOYW1lKCkpKXJldHVybiB0aGlzLmZpbmlzaChlLHguSWRlbnRpZmllckV4cGVjdGVkLFtwLlNlbWlDb2xvbl0pO2lmKCF0aGlzLmFjY2VwdChwLlBhcmVudGhlc2lzUikpcmV0dXJuIHRoaXMuZmluaXNoKGUseC5SaWdodFBhcmVudGhlc2lzRXhwZWN0ZWQsW3AuUGFyZW50aGVzaXNSXSxbXSl9cmV0dXJuIHRoaXMuYWNjZXB0SWRlbnQoInN1cHBvcnRzIikmJnRoaXMuYWNjZXB0KHAuUGFyZW50aGVzaXNMKSYmKGUuYWRkQ2hpbGQodGhpcy5fdHJ5VG9QYXJzZURlY2xhcmF0aW9uKCl8fHRoaXMuX3BhcnNlU3VwcG9ydHNDb25kaXRpb24oKSksIXRoaXMuYWNjZXB0KHAuUGFyZW50aGVzaXNSKSk/dGhpcy5maW5pc2goZSx4LlJpZ2h0UGFyZW50aGVzaXNFeHBlY3RlZCxbcC5QYXJlbnRoZXNpc1JdLFtdKTooIXRoaXMucGVlayhwLlNlbWlDb2xvbikmJiF0aGlzLnBlZWsocC5FT0YpJiZlLnNldE1lZGlhbGlzdCh0aGlzLl9wYXJzZU1lZGlhUXVlcnlMaXN0KCkpLHRoaXMuZmluaXNoKGUpKX1fcGFyc2VOYW1lc3BhY2UoKXtpZighdGhpcy5wZWVrS2V5d29yZCgiQG5hbWVzcGFjZSIpKXJldHVybiBudWxsO2NvbnN0IGU9dGhpcy5jcmVhdGUocHApO3JldHVybiB0aGlzLmNvbnN1bWVUb2tlbigpLCFlLmFkZENoaWxkKHRoaXMuX3BhcnNlVVJJTGl0ZXJhbCgpKSYmKGUuYWRkQ2hpbGQodGhpcy5fcGFyc2VJZGVudCgpKSwhZS5hZGRDaGlsZCh0aGlzLl9wYXJzZVVSSUxpdGVyYWwoKSkmJiFlLmFkZENoaWxkKHRoaXMuX3BhcnNlU3RyaW5nTGl0ZXJhbCgpKSk/dGhpcy5maW5pc2goZSx4LlVSSUV4cGVjdGVkLFtwLlNlbWlDb2xvbl0pOnRoaXMuYWNjZXB0KHAuU2VtaUNvbG9uKT90aGlzLmZpbmlzaChlKTp0aGlzLmZpbmlzaChlLHguU2VtaUNvbG9uRXhwZWN0ZWQpfV9wYXJzZUZvbnRGYWNlKCl7aWYoIXRoaXMucGVla0tleXdvcmQoIkBmb250LWZhY2UiKSlyZXR1cm4gbnVsbDtjb25zdCBlPXRoaXMuY3JlYXRlKHJsKTtyZXR1cm4gdGhpcy5jb25zdW1lVG9rZW4oKSx0aGlzLl9wYXJzZUJvZHkoZSx0aGlzLl9wYXJzZVJ1bGVTZXREZWNsYXJhdGlvbi5iaW5kKHRoaXMpKX1fcGFyc2VWaWV3UG9ydCgpe2lmKCF0aGlzLnBlZWtLZXl3b3JkKCJALW1zLXZpZXdwb3J0IikmJiF0aGlzLnBlZWtLZXl3b3JkKCJALW8tdmlld3BvcnQiKSYmIXRoaXMucGVla0tleXdvcmQoIkB2aWV3cG9ydCIpKXJldHVybiBudWxsO2NvbnN0IGU9dGhpcy5jcmVhdGUobHApO3JldHVybiB0aGlzLmNvbnN1bWVUb2tlbigpLHRoaXMuX3BhcnNlQm9keShlLHRoaXMuX3BhcnNlUnVsZVNldERlY2xhcmF0aW9uLmJpbmQodGhpcykpfV9wYXJzZUtleWZyYW1lKCl7aWYoIXRoaXMucGVla1JlZ0V4cChwLkF0S2V5d29yZCx0aGlzLmtleWZyYW1lUmVnZXgpKXJldHVybiBudWxsO2NvbnN0IGU9dGhpcy5jcmVhdGUoc2wpLHQ9dGhpcy5jcmVhdGUoTyk7cmV0dXJuIHRoaXMuY29uc3VtZVRva2VuKCksZS5zZXRLZXl3b3JkKHRoaXMuZmluaXNoKHQpKSx0Lm1hdGNoZXMoIkAtbXMta2V5ZnJhbWVzIikmJnRoaXMubWFya0Vycm9yKHQseC5Vbmtub3duS2V5d29yZCksZS5zZXRJZGVudGlmaWVyKHRoaXMuX3BhcnNlS2V5ZnJhbWVJZGVudCgpKT90aGlzLl9wYXJzZUJvZHkoZSx0aGlzLl9wYXJzZUtleWZyYW1lU2VsZWN0b3IuYmluZCh0aGlzKSk6dGhpcy5maW5pc2goZSx4LklkZW50aWZpZXJFeHBlY3RlZCxbcC5DdXJseVJdKX1fcGFyc2VLZXlmcmFtZUlkZW50KCl7cmV0dXJuIHRoaXMuX3BhcnNlSWRlbnQoW0cuS2V5ZnJhbWVdKX1fcGFyc2VLZXlmcmFtZVNlbGVjdG9yKCl7Y29uc3QgZT10aGlzLmNyZWF0ZShhbCk7bGV0IHQ9ITE7aWYoZS5hZGRDaGlsZCh0aGlzLl9wYXJzZUlkZW50KCkpJiYodD0hMCksdGhpcy5hY2NlcHQocC5QZXJjZW50YWdlKSYmKHQ9ITApLCF0KXJldHVybiBudWxsO2Zvcig7dGhpcy5hY2NlcHQocC5Db21tYSk7KWlmKHQ9ITEsZS5hZGRDaGlsZCh0aGlzLl9wYXJzZUlkZW50KCkpJiYodD0hMCksdGhpcy5hY2NlcHQocC5QZXJjZW50YWdlKSYmKHQ9ITApLCF0KXJldHVybiB0aGlzLmZpbmlzaChlLHguUGVyY2VudGFnZUV4cGVjdGVkKTtyZXR1cm4gdGhpcy5fcGFyc2VCb2R5KGUsdGhpcy5fcGFyc2VSdWxlU2V0RGVjbGFyYXRpb24uYmluZCh0aGlzKSl9X3RyeVBhcnNlS2V5ZnJhbWVTZWxlY3Rvcigpe2NvbnN0IGU9dGhpcy5jcmVhdGUoYWwpLHQ9dGhpcy5tYXJrKCk7bGV0IG49ITE7aWYoZS5hZGRDaGlsZCh0aGlzLl9wYXJzZUlkZW50KCkpJiYobj0hMCksdGhpcy5hY2NlcHQocC5QZXJjZW50YWdlKSYmKG49ITApLCFuKXJldHVybiBudWxsO2Zvcig7dGhpcy5hY2NlcHQocC5Db21tYSk7KWlmKG49ITEsZS5hZGRDaGlsZCh0aGlzLl9wYXJzZUlkZW50KCkpJiYobj0hMCksdGhpcy5hY2NlcHQocC5QZXJjZW50YWdlKSYmKG49ITApLCFuKXJldHVybiB0aGlzLnJlc3RvcmVBdE1hcmsodCksbnVsbDtyZXR1cm4gdGhpcy5wZWVrKHAuQ3VybHlMKT90aGlzLl9wYXJzZUJvZHkoZSx0aGlzLl9wYXJzZVJ1bGVTZXREZWNsYXJhdGlvbi5iaW5kKHRoaXMpKToodGhpcy5yZXN0b3JlQXRNYXJrKHQpLG51bGwpfV9wYXJzZVByb3BlcnR5QXRSdWxlKCl7aWYoIXRoaXMucGVla0tleXdvcmQoIkBwcm9wZXJ0eSIpKXJldHVybiBudWxsO2NvbnN0IGU9dGhpcy5jcmVhdGUoZnApO3JldHVybiB0aGlzLmNvbnN1bWVUb2tlbigpLCF0aGlzLnBlZWtSZWdFeHAocC5JZGVudCwvXi0tLyl8fCFlLnNldE5hbWUodGhpcy5fcGFyc2VJZGVudChbRy5Qcm9wZXJ0eV0pKT90aGlzLmZpbmlzaChlLHguSWRlbnRpZmllckV4cGVjdGVkKTp0aGlzLl9wYXJzZUJvZHkoZSx0aGlzLl9wYXJzZURlY2xhcmF0aW9uLmJpbmQodGhpcykpfV9wYXJzZUxheWVyKGU9ITEpe2lmKCF0aGlzLnBlZWtLZXl3b3JkKCJAbGF5ZXIiKSlyZXR1cm4gbnVsbDtjb25zdCB0PXRoaXMuY3JlYXRlKG1wKTt0aGlzLmNvbnN1bWVUb2tlbigpO2NvbnN0IG49dGhpcy5fcGFyc2VMYXllck5hbWVMaXN0KCk7cmV0dXJuIG4mJnQuc2V0TmFtZXMobiksKCFufHxuLmdldENoaWxkcmVuKCkubGVuZ3RoPT09MSkmJnRoaXMucGVlayhwLkN1cmx5TCk/dGhpcy5fcGFyc2VCb2R5KHQsdGhpcy5fcGFyc2VMYXllckRlY2xhcmF0aW9uLmJpbmQodGhpcyxlKSk6dGhpcy5hY2NlcHQocC5TZW1pQ29sb24pP3RoaXMuZmluaXNoKHQpOnRoaXMuZmluaXNoKHQseC5TZW1pQ29sb25FeHBlY3RlZCl9X3BhcnNlTGF5ZXJEZWNsYXJhdGlvbihlPSExKXtyZXR1cm4gZT90aGlzLl90cnlQYXJzZVJ1bGVzZXQoITApfHx0aGlzLl90cnlUb1BhcnNlRGVjbGFyYXRpb24oKXx8dGhpcy5fcGFyc2VTdHlsZXNoZWV0U3RhdGVtZW50KCEwKTp0aGlzLl9wYXJzZVN0eWxlc2hlZXRTdGF0ZW1lbnQoITEpfV9wYXJzZUxheWVyTmFtZUxpc3QoKXtjb25zdCBlPXRoaXMuY3JlYXRlTm9kZShiLkxheWVyTmFtZUxpc3QpO2lmKCFlLmFkZENoaWxkKHRoaXMuX3BhcnNlTGF5ZXJOYW1lKCkpKXJldHVybiBudWxsO2Zvcig7dGhpcy5hY2NlcHQocC5Db21tYSk7KWlmKCFlLmFkZENoaWxkKHRoaXMuX3BhcnNlTGF5ZXJOYW1lKCkpKXJldHVybiB0aGlzLmZpbmlzaChlLHguSWRlbnRpZmllckV4cGVjdGVkKTtyZXR1cm4gdGhpcy5maW5pc2goZSl9X3BhcnNlTGF5ZXJOYW1lKCl7Y29uc3QgZT10aGlzLmNyZWF0ZU5vZGUoYi5MYXllck5hbWUpO2lmKCFlLmFkZENoaWxkKHRoaXMuX3BhcnNlSWRlbnQoKSkpcmV0dXJuIG51bGw7Zm9yKDshdGhpcy5oYXNXaGl0ZXNwYWNlKCkmJnRoaXMuYWNjZXB0RGVsaW0oIi4iKTspaWYodGhpcy5oYXNXaGl0ZXNwYWNlKCl8fCFlLmFkZENoaWxkKHRoaXMuX3BhcnNlSWRlbnQoKSkpcmV0dXJuIHRoaXMuZmluaXNoKGUseC5JZGVudGlmaWVyRXhwZWN0ZWQpO3JldHVybiB0aGlzLmZpbmlzaChlKX1fcGFyc2VTdXBwb3J0cyhlPSExKXtpZighdGhpcy5wZWVrS2V5d29yZCgiQHN1cHBvcnRzIikpcmV0dXJuIG51bGw7Y29uc3QgdD10aGlzLmNyZWF0ZShEaSk7cmV0dXJuIHRoaXMuY29uc3VtZVRva2VuKCksdC5hZGRDaGlsZCh0aGlzLl9wYXJzZVN1cHBvcnRzQ29uZGl0aW9uKCkpLHRoaXMuX3BhcnNlQm9keSh0LHRoaXMuX3BhcnNlU3VwcG9ydHNEZWNsYXJhdGlvbi5iaW5kKHRoaXMsZSkpfV9wYXJzZVN1cHBvcnRzRGVjbGFyYXRpb24oZT0hMSl7cmV0dXJuIGU/dGhpcy5fdHJ5UGFyc2VSdWxlc2V0KCEwKXx8dGhpcy5fdHJ5VG9QYXJzZURlY2xhcmF0aW9uKCl8fHRoaXMuX3BhcnNlU3R5bGVzaGVldFN0YXRlbWVudCghMCk6dGhpcy5fcGFyc2VTdHlsZXNoZWV0U3RhdGVtZW50KCExKX1fcGFyc2VTdXBwb3J0c0NvbmRpdGlvbigpe2NvbnN0IGU9dGhpcy5jcmVhdGUoQ24pO2lmKHRoaXMuYWNjZXB0SWRlbnQoIm5vdCIpKWUuYWRkQ2hpbGQodGhpcy5fcGFyc2VTdXBwb3J0c0NvbmRpdGlvbkluUGFyZW5zKCkpO2Vsc2UgaWYoZS5hZGRDaGlsZCh0aGlzLl9wYXJzZVN1cHBvcnRzQ29uZGl0aW9uSW5QYXJlbnMoKSksdGhpcy5wZWVrUmVnRXhwKHAuSWRlbnQsL14oYW5kfG9yKSQvaSkpe2NvbnN0IHQ9dGhpcy50b2tlbi50ZXh0LnRvTG93ZXJDYXNlKCk7Zm9yKDt0aGlzLmFjY2VwdElkZW50KHQpOyllLmFkZENoaWxkKHRoaXMuX3BhcnNlU3VwcG9ydHNDb25kaXRpb25JblBhcmVucygpKX1yZXR1cm4gdGhpcy5maW5pc2goZSl9X3BhcnNlU3VwcG9ydHNDb25kaXRpb25JblBhcmVucygpe2NvbnN0IGU9dGhpcy5jcmVhdGUoQ24pO2lmKHRoaXMuYWNjZXB0KHAuUGFyZW50aGVzaXNMKSlyZXR1cm4gdGhpcy5wcmV2VG9rZW4mJihlLmxQYXJlbnQ9dGhpcy5wcmV2VG9rZW4ub2Zmc2V0KSwhZS5hZGRDaGlsZCh0aGlzLl90cnlUb1BhcnNlRGVjbGFyYXRpb24oW3AuUGFyZW50aGVzaXNSXSkpJiYhdGhpcy5fcGFyc2VTdXBwb3J0c0NvbmRpdGlvbigpP3RoaXMuZmluaXNoKGUseC5Db25kaXRpb25FeHBlY3RlZCk6dGhpcy5hY2NlcHQocC5QYXJlbnRoZXNpc1IpPyh0aGlzLnByZXZUb2tlbiYmKGUuclBhcmVudD10aGlzLnByZXZUb2tlbi5vZmZzZXQpLHRoaXMuZmluaXNoKGUpKTp0aGlzLmZpbmlzaChlLHguUmlnaHRQYXJlbnRoZXNpc0V4cGVjdGVkLFtwLlBhcmVudGhlc2lzUl0sW10pO2lmKHRoaXMucGVlayhwLklkZW50KSl7Y29uc3QgdD10aGlzLm1hcmsoKTtpZih0aGlzLmNvbnN1bWVUb2tlbigpLCF0aGlzLmhhc1doaXRlc3BhY2UoKSYmdGhpcy5hY2NlcHQocC5QYXJlbnRoZXNpc0wpKXtsZXQgbj0xO2Zvcig7dGhpcy50b2tlbi50eXBlIT09cC5FT0YmJm4hPT0wOyl0aGlzLnRva2VuLnR5cGU9PT1wLlBhcmVudGhlc2lzTD9uKys6dGhpcy50b2tlbi50eXBlPT09cC5QYXJlbnRoZXNpc1ImJm4tLSx0aGlzLmNvbnN1bWVUb2tlbigpO3JldHVybiB0aGlzLmZpbmlzaChlKX1lbHNlIHRoaXMucmVzdG9yZUF0TWFyayh0KX1yZXR1cm4gdGhpcy5maW5pc2goZSx4LkxlZnRQYXJlbnRoZXNpc0V4cGVjdGVkLFtdLFtwLlBhcmVudGhlc2lzTF0pfV9wYXJzZU1lZGlhRGVjbGFyYXRpb24oZT0hMSl7cmV0dXJuIGU/dGhpcy5fdHJ5UGFyc2VSdWxlc2V0KCEwKXx8dGhpcy5fdHJ5VG9QYXJzZURlY2xhcmF0aW9uKCl8fHRoaXMuX3BhcnNlU3R5bGVzaGVldFN0YXRlbWVudCghMCk6dGhpcy5fcGFyc2VTdHlsZXNoZWV0U3RhdGVtZW50KCExKX1fcGFyc2VNZWRpYShlPSExKXtpZighdGhpcy5wZWVrS2V5d29yZCgiQG1lZGlhIikpcmV0dXJuIG51bGw7Y29uc3QgdD10aGlzLmNyZWF0ZShOaSk7cmV0dXJuIHRoaXMuY29uc3VtZVRva2VuKCksdC5hZGRDaGlsZCh0aGlzLl9wYXJzZU1lZGlhUXVlcnlMaXN0KCkpP3RoaXMuX3BhcnNlQm9keSh0LHRoaXMuX3BhcnNlTWVkaWFEZWNsYXJhdGlvbi5iaW5kKHRoaXMsZSkpOnRoaXMuZmluaXNoKHQseC5NZWRpYVF1ZXJ5RXhwZWN0ZWQpfV9wYXJzZU1lZGlhUXVlcnlMaXN0KCl7Y29uc3QgZT10aGlzLmNyZWF0ZShvbCk7aWYoIWUuYWRkQ2hpbGQodGhpcy5fcGFyc2VNZWRpYVF1ZXJ5KCkpKXJldHVybiB0aGlzLmZpbmlzaChlLHguTWVkaWFRdWVyeUV4cGVjdGVkKTtmb3IoO3RoaXMuYWNjZXB0KHAuQ29tbWEpOylpZighZS5hZGRDaGlsZCh0aGlzLl9wYXJzZU1lZGlhUXVlcnkoKSkpcmV0dXJuIHRoaXMuZmluaXNoKGUseC5NZWRpYVF1ZXJ5RXhwZWN0ZWQpO3JldHVybiB0aGlzLmZpbmlzaChlKX1fcGFyc2VNZWRpYVF1ZXJ5KCl7Y29uc3QgZT10aGlzLmNyZWF0ZShsbCksdD10aGlzLm1hcmsoKTtpZih0aGlzLmFjY2VwdElkZW50KCJub3QiKSx0aGlzLnBlZWsocC5QYXJlbnRoZXNpc0wpKXRoaXMucmVzdG9yZUF0TWFyayh0KSxlLmFkZENoaWxkKHRoaXMuX3BhcnNlTWVkaWFDb25kaXRpb24oKSk7ZWxzZXtpZih0aGlzLmFjY2VwdElkZW50KCJvbmx5IiksIWUuYWRkQ2hpbGQodGhpcy5fcGFyc2VJZGVudCgpKSlyZXR1cm4gbnVsbDt0aGlzLmFjY2VwdElkZW50KCJhbmQiKSYmZS5hZGRDaGlsZCh0aGlzLl9wYXJzZU1lZGlhQ29uZGl0aW9uKCkpfXJldHVybiB0aGlzLmZpbmlzaChlKX1fcGFyc2VSYXRpbygpe2NvbnN0IGU9dGhpcy5tYXJrKCksdD10aGlzLmNyZWF0ZShfcCk7cmV0dXJuIHRoaXMuX3BhcnNlTnVtZXJpYygpP3RoaXMuYWNjZXB0RGVsaW0oIi8iKT90aGlzLl9wYXJzZU51bWVyaWMoKT90aGlzLmZpbmlzaCh0KTp0aGlzLmZpbmlzaCh0LHguTnVtYmVyRXhwZWN0ZWQpOih0aGlzLnJlc3RvcmVBdE1hcmsoZSksbnVsbCk6bnVsbH1fcGFyc2VNZWRpYUNvbmRpdGlvbigpe2NvbnN0IGU9dGhpcy5jcmVhdGUodnApO3RoaXMuYWNjZXB0SWRlbnQoIm5vdCIpO2xldCB0PSEwO2Zvcig7dDspe2lmKCF0aGlzLmFjY2VwdChwLlBhcmVudGhlc2lzTCkpcmV0dXJuIHRoaXMuZmluaXNoKGUseC5MZWZ0UGFyZW50aGVzaXNFeHBlY3RlZCxbXSxbcC5DdXJseUxdKTtpZih0aGlzLnBlZWsocC5QYXJlbnRoZXNpc0wpfHx0aGlzLnBlZWtJZGVudCgibm90Iik/ZS5hZGRDaGlsZCh0aGlzLl9wYXJzZU1lZGlhQ29uZGl0aW9uKCkpOmUuYWRkQ2hpbGQodGhpcy5fcGFyc2VNZWRpYUZlYXR1cmUoKSksIXRoaXMuYWNjZXB0KHAuUGFyZW50aGVzaXNSKSlyZXR1cm4gdGhpcy5maW5pc2goZSx4LlJpZ2h0UGFyZW50aGVzaXNFeHBlY3RlZCxbXSxbcC5DdXJseUxdKTt0PXRoaXMuYWNjZXB0SWRlbnQoImFuZCIpfHx0aGlzLmFjY2VwdElkZW50KCJvciIpfXJldHVybiB0aGlzLmZpbmlzaChlKX1fcGFyc2VNZWRpYUZlYXR1cmUoKXtjb25zdCBlPVtwLlBhcmVudGhlc2lzUl0sdD10aGlzLmNyZWF0ZSh3cCk7aWYodC5hZGRDaGlsZCh0aGlzLl9wYXJzZU1lZGlhRmVhdHVyZU5hbWUoKSkpe2lmKHRoaXMuYWNjZXB0KHAuQ29sb24pKXtpZighdC5hZGRDaGlsZCh0aGlzLl9wYXJzZU1lZGlhRmVhdHVyZVZhbHVlKCkpKXJldHVybiB0aGlzLmZpbmlzaCh0LHguVGVybUV4cGVjdGVkLFtdLGUpfWVsc2UgaWYodGhpcy5fcGFyc2VNZWRpYUZlYXR1cmVSYW5nZU9wZXJhdG9yKCkpe2lmKCF0LmFkZENoaWxkKHRoaXMuX3BhcnNlTWVkaWFGZWF0dXJlVmFsdWUoKSkpcmV0dXJuIHRoaXMuZmluaXNoKHQseC5UZXJtRXhwZWN0ZWQsW10sZSk7aWYodGhpcy5fcGFyc2VNZWRpYUZlYXR1cmVSYW5nZU9wZXJhdG9yKCkmJiF0LmFkZENoaWxkKHRoaXMuX3BhcnNlTWVkaWFGZWF0dXJlVmFsdWUoKSkpcmV0dXJuIHRoaXMuZmluaXNoKHQseC5UZXJtRXhwZWN0ZWQsW10sZSl9fWVsc2UgaWYodC5hZGRDaGlsZCh0aGlzLl9wYXJzZU1lZGlhRmVhdHVyZVZhbHVlKCkpKXtpZighdGhpcy5fcGFyc2VNZWRpYUZlYXR1cmVSYW5nZU9wZXJhdG9yKCkpcmV0dXJuIHRoaXMuZmluaXNoKHQseC5PcGVyYXRvckV4cGVjdGVkLFtdLGUpO2lmKCF0LmFkZENoaWxkKHRoaXMuX3BhcnNlTWVkaWFGZWF0dXJlTmFtZSgpKSlyZXR1cm4gdGhpcy5maW5pc2godCx4LklkZW50aWZpZXJFeHBlY3RlZCxbXSxlKTtpZih0aGlzLl9wYXJzZU1lZGlhRmVhdHVyZVJhbmdlT3BlcmF0b3IoKSYmIXQuYWRkQ2hpbGQodGhpcy5fcGFyc2VNZWRpYUZlYXR1cmVWYWx1ZSgpKSlyZXR1cm4gdGhpcy5maW5pc2godCx4LlRlcm1FeHBlY3RlZCxbXSxlKX1lbHNlIHJldHVybiB0aGlzLmZpbmlzaCh0LHguSWRlbnRpZmllckV4cGVjdGVkLFtdLGUpO3JldHVybiB0aGlzLmZpbmlzaCh0KX1fcGFyc2VNZWRpYUZlYXR1cmVSYW5nZU9wZXJhdG9yKCl7cmV0dXJuIHRoaXMuYWNjZXB0RGVsaW0oIjwiKXx8dGhpcy5hY2NlcHREZWxpbSgiPiIpPyh0aGlzLmhhc1doaXRlc3BhY2UoKXx8dGhpcy5hY2NlcHREZWxpbSgiPSIpLCEwKTohIXRoaXMuYWNjZXB0RGVsaW0oIj0iKX1fcGFyc2VNZWRpYUZlYXR1cmVOYW1lKCl7cmV0dXJuIHRoaXMuX3BhcnNlSWRlbnQoKX1fcGFyc2VNZWRpYUZlYXR1cmVWYWx1ZSgpe3JldHVybiB0aGlzLl9wYXJzZVJhdGlvKCl8fHRoaXMuX3BhcnNlVGVybUV4cHJlc3Npb24oKX1fcGFyc2VNZWRpdW0oKXtjb25zdCBlPXRoaXMuY3JlYXRlKE8pO3JldHVybiBlLmFkZENoaWxkKHRoaXMuX3BhcnNlSWRlbnQoKSk/dGhpcy5maW5pc2goZSk6bnVsbH1fcGFyc2VQYWdlRGVjbGFyYXRpb24oKXtyZXR1cm4gdGhpcy5fcGFyc2VQYWdlTWFyZ2luQm94KCl8fHRoaXMuX3BhcnNlUnVsZVNldERlY2xhcmF0aW9uKCl9X3BhcnNlUGFnZSgpe2lmKCF0aGlzLnBlZWtLZXl3b3JkKCJAcGFnZSIpKXJldHVybiBudWxsO2NvbnN0IGU9dGhpcy5jcmVhdGUoeXApO2lmKHRoaXMuY29uc3VtZVRva2VuKCksZS5hZGRDaGlsZCh0aGlzLl9wYXJzZVBhZ2VTZWxlY3RvcigpKSl7Zm9yKDt0aGlzLmFjY2VwdChwLkNvbW1hKTspaWYoIWUuYWRkQ2hpbGQodGhpcy5fcGFyc2VQYWdlU2VsZWN0b3IoKSkpcmV0dXJuIHRoaXMuZmluaXNoKGUseC5JZGVudGlmaWVyRXhwZWN0ZWQpfXJldHVybiB0aGlzLl9wYXJzZUJvZHkoZSx0aGlzLl9wYXJzZVBhZ2VEZWNsYXJhdGlvbi5iaW5kKHRoaXMpKX1fcGFyc2VQYWdlTWFyZ2luQm94KCl7aWYoIXRoaXMucGVlayhwLkF0S2V5d29yZCkpcmV0dXJuIG51bGw7Y29uc3QgZT10aGlzLmNyZWF0ZSh4cCk7cmV0dXJuIHRoaXMuYWNjZXB0T25lS2V5d29yZCh0bSl8fHRoaXMubWFya0Vycm9yKGUseC5Vbmtub3duQXRSdWxlLFtdLFtwLkN1cmx5TF0pLHRoaXMuX3BhcnNlQm9keShlLHRoaXMuX3BhcnNlUnVsZVNldERlY2xhcmF0aW9uLmJpbmQodGhpcykpfV9wYXJzZVBhZ2VTZWxlY3Rvcigpe2lmKCF0aGlzLnBlZWsocC5JZGVudCkmJiF0aGlzLnBlZWsocC5Db2xvbikpcmV0dXJuIG51bGw7Y29uc3QgZT10aGlzLmNyZWF0ZShPKTtyZXR1cm4gZS5hZGRDaGlsZCh0aGlzLl9wYXJzZUlkZW50KCkpLHRoaXMuYWNjZXB0KHAuQ29sb24pJiYhZS5hZGRDaGlsZCh0aGlzLl9wYXJzZUlkZW50KCkpP3RoaXMuZmluaXNoKGUseC5JZGVudGlmaWVyRXhwZWN0ZWQpOnRoaXMuZmluaXNoKGUpfV9wYXJzZURvY3VtZW50KCl7aWYoIXRoaXMucGVla0tleXdvcmQoIkAtbW96LWRvY3VtZW50IikpcmV0dXJuIG51bGw7Y29uc3QgZT10aGlzLmNyZWF0ZShncCk7cmV0dXJuIHRoaXMuY29uc3VtZVRva2VuKCksdGhpcy5yZXN5bmMoW10sW3AuQ3VybHlMXSksdGhpcy5fcGFyc2VCb2R5KGUsdGhpcy5fcGFyc2VTdHlsZXNoZWV0U3RhdGVtZW50LmJpbmQodGhpcykpfV9wYXJzZUNvbnRhaW5lckRlY2xhcmF0aW9uKGU9ITEpe3JldHVybiBlP3RoaXMuX3RyeVBhcnNlUnVsZXNldCghMCl8fHRoaXMuX3RyeVRvUGFyc2VEZWNsYXJhdGlvbigpfHx0aGlzLl9wYXJzZVN0eWxlc2hlZXRTdGF0ZW1lbnQoITApOnRoaXMuX3BhcnNlU3R5bGVzaGVldFN0YXRlbWVudCghMSl9X3BhcnNlQ29udGFpbmVyKGU9ITEpe2lmKCF0aGlzLnBlZWtLZXl3b3JkKCJAY29udGFpbmVyIikpcmV0dXJuIG51bGw7Y29uc3QgdD10aGlzLmNyZWF0ZShicCk7cmV0dXJuIHRoaXMuY29uc3VtZVRva2VuKCksdC5hZGRDaGlsZCh0aGlzLl9wYXJzZUlkZW50KCkpLHQuYWRkQ2hpbGQodGhpcy5fcGFyc2VDb250YWluZXJRdWVyeSgpKSx0aGlzLl9wYXJzZUJvZHkodCx0aGlzLl9wYXJzZUNvbnRhaW5lckRlY2xhcmF0aW9uLmJpbmQodGhpcyxlKSl9X3BhcnNlQ29udGFpbmVyUXVlcnkoKXtjb25zdCBlPXRoaXMuY3JlYXRlKE8pO2lmKHRoaXMuYWNjZXB0SWRlbnQoIm5vdCIpKWUuYWRkQ2hpbGQodGhpcy5fcGFyc2VDb250YWluZXJRdWVyeUluUGFyZW5zKCkpO2Vsc2UgaWYoZS5hZGRDaGlsZCh0aGlzLl9wYXJzZUNvbnRhaW5lclF1ZXJ5SW5QYXJlbnMoKSksdGhpcy5wZWVrSWRlbnQoImFuZCIpKWZvcig7dGhpcy5hY2NlcHRJZGVudCgiYW5kIik7KWUuYWRkQ2hpbGQodGhpcy5fcGFyc2VDb250YWluZXJRdWVyeUluUGFyZW5zKCkpO2Vsc2UgaWYodGhpcy5wZWVrSWRlbnQoIm9yIikpZm9yKDt0aGlzLmFjY2VwdElkZW50KCJvciIpOyllLmFkZENoaWxkKHRoaXMuX3BhcnNlQ29udGFpbmVyUXVlcnlJblBhcmVucygpKTtyZXR1cm4gdGhpcy5maW5pc2goZSl9X3BhcnNlQ29udGFpbmVyUXVlcnlJblBhcmVucygpe2NvbnN0IGU9dGhpcy5jcmVhdGUoTyk7aWYodGhpcy5hY2NlcHQocC5QYXJlbnRoZXNpc0wpKXtpZih0aGlzLnBlZWtJZGVudCgibm90Iil8fHRoaXMucGVlayhwLlBhcmVudGhlc2lzTCk/ZS5hZGRDaGlsZCh0aGlzLl9wYXJzZUNvbnRhaW5lclF1ZXJ5KCkpOmUuYWRkQ2hpbGQodGhpcy5fcGFyc2VNZWRpYUZlYXR1cmUoKSksIXRoaXMuYWNjZXB0KHAuUGFyZW50aGVzaXNSKSlyZXR1cm4gdGhpcy5maW5pc2goZSx4LlJpZ2h0UGFyZW50aGVzaXNFeHBlY3RlZCxbXSxbcC5DdXJseUxdKX1lbHNlIGlmKHRoaXMuYWNjZXB0SWRlbnQoInN0eWxlIikpe2lmKHRoaXMuaGFzV2hpdGVzcGFjZSgpfHwhdGhpcy5hY2NlcHQocC5QYXJlbnRoZXNpc0wpKXJldHVybiB0aGlzLmZpbmlzaChlLHguTGVmdFBhcmVudGhlc2lzRXhwZWN0ZWQsW10sW3AuQ3VybHlMXSk7aWYoZS5hZGRDaGlsZCh0aGlzLl9wYXJzZVN0eWxlUXVlcnkoKSksIXRoaXMuYWNjZXB0KHAuUGFyZW50aGVzaXNSKSlyZXR1cm4gdGhpcy5maW5pc2goZSx4LlJpZ2h0UGFyZW50aGVzaXNFeHBlY3RlZCxbXSxbcC5DdXJseUxdKX1lbHNlIHJldHVybiB0aGlzLmZpbmlzaChlLHguTGVmdFBhcmVudGhlc2lzRXhwZWN0ZWQsW10sW3AuQ3VybHlMXSk7cmV0dXJuIHRoaXMuZmluaXNoKGUpfV9wYXJzZVN0eWxlUXVlcnkoKXtjb25zdCBlPXRoaXMuY3JlYXRlKE8pO2lmKHRoaXMuYWNjZXB0SWRlbnQoIm5vdCIpKWUuYWRkQ2hpbGQodGhpcy5fcGFyc2VTdHlsZUluUGFyZW5zKCkpO2Vsc2UgaWYodGhpcy5wZWVrKHAuUGFyZW50aGVzaXNMKSl7aWYoZS5hZGRDaGlsZCh0aGlzLl9wYXJzZVN0eWxlSW5QYXJlbnMoKSksdGhpcy5wZWVrSWRlbnQoImFuZCIpKWZvcig7dGhpcy5hY2NlcHRJZGVudCgiYW5kIik7KWUuYWRkQ2hpbGQodGhpcy5fcGFyc2VTdHlsZUluUGFyZW5zKCkpO2Vsc2UgaWYodGhpcy5wZWVrSWRlbnQoIm9yIikpZm9yKDt0aGlzLmFjY2VwdElkZW50KCJvciIpOyllLmFkZENoaWxkKHRoaXMuX3BhcnNlU3R5bGVJblBhcmVucygpKX1lbHNlIGUuYWRkQ2hpbGQodGhpcy5fcGFyc2VEZWNsYXJhdGlvbihbcC5QYXJlbnRoZXNpc1JdKSk7cmV0dXJuIHRoaXMuZmluaXNoKGUpfV9wYXJzZVN0eWxlSW5QYXJlbnMoKXtjb25zdCBlPXRoaXMuY3JlYXRlKE8pO2lmKHRoaXMuYWNjZXB0KHAuUGFyZW50aGVzaXNMKSl7aWYoZS5hZGRDaGlsZCh0aGlzLl9wYXJzZVN0eWxlUXVlcnkoKSksIXRoaXMuYWNjZXB0KHAuUGFyZW50aGVzaXNSKSlyZXR1cm4gdGhpcy5maW5pc2goZSx4LlJpZ2h0UGFyZW50aGVzaXNFeHBlY3RlZCxbXSxbcC5DdXJseUxdKX1lbHNlIHJldHVybiB0aGlzLmZpbmlzaChlLHguTGVmdFBhcmVudGhlc2lzRXhwZWN0ZWQsW10sW3AuQ3VybHlMXSk7cmV0dXJuIHRoaXMuZmluaXNoKGUpfV9wYXJzZVVua25vd25BdFJ1bGUoKXtpZighdGhpcy5wZWVrKHAuQXRLZXl3b3JkKSlyZXR1cm4gbnVsbDtjb25zdCBlPXRoaXMuY3JlYXRlKGhsKTtlLmFkZENoaWxkKHRoaXMuX3BhcnNlVW5rbm93bkF0UnVsZU5hbWUoKSk7Y29uc3QgdD0oKT0+cj09PTAmJmk9PT0wJiZzPT09MDtsZXQgbj0wLHI9MCxpPTAscz0wO2U6Zm9yKDs7KXtzd2l0Y2godGhpcy50b2tlbi50eXBlKXtjYXNlIHAuU2VtaUNvbG9uOmlmKHQoKSlicmVhayBlO2JyZWFrO2Nhc2UgcC5FT0Y6cmV0dXJuIHI+MD90aGlzLmZpbmlzaChlLHguUmlnaHRDdXJseUV4cGVjdGVkKTpzPjA/dGhpcy5maW5pc2goZSx4LlJpZ2h0U3F1YXJlQnJhY2tldEV4cGVjdGVkKTppPjA/dGhpcy5maW5pc2goZSx4LlJpZ2h0UGFyZW50aGVzaXNFeHBlY3RlZCk6dGhpcy5maW5pc2goZSk7Y2FzZSBwLkN1cmx5TDpuKysscisrO2JyZWFrO2Nhc2UgcC5DdXJseVI6aWYoci0tLG4+MCYmcj09PTApe2lmKHRoaXMuY29uc3VtZVRva2VuKCkscz4wKXJldHVybiB0aGlzLmZpbmlzaChlLHguUmlnaHRTcXVhcmVCcmFja2V0RXhwZWN0ZWQpO2lmKGk+MClyZXR1cm4gdGhpcy5maW5pc2goZSx4LlJpZ2h0UGFyZW50aGVzaXNFeHBlY3RlZCk7YnJlYWsgZX1pZihyPDApe2lmKGk9PT0wJiZzPT09MClicmVhayBlO3JldHVybiB0aGlzLmZpbmlzaChlLHguTGVmdEN1cmx5RXhwZWN0ZWQpfWJyZWFrO2Nhc2UgcC5QYXJlbnRoZXNpc0w6aSsrO2JyZWFrO2Nhc2UgcC5QYXJlbnRoZXNpc1I6aWYoaS0tLGk8MClyZXR1cm4gdGhpcy5maW5pc2goZSx4LkxlZnRQYXJlbnRoZXNpc0V4cGVjdGVkKTticmVhaztjYXNlIHAuQnJhY2tldEw6cysrO2JyZWFrO2Nhc2UgcC5CcmFja2V0UjppZihzLS0sczwwKXJldHVybiB0aGlzLmZpbmlzaChlLHguTGVmdFNxdWFyZUJyYWNrZXRFeHBlY3RlZCk7YnJlYWt9dGhpcy5jb25zdW1lVG9rZW4oKX1yZXR1cm4gZX1fcGFyc2VVbmtub3duQXRSdWxlTmFtZSgpe2NvbnN0IGU9dGhpcy5jcmVhdGUoTyk7cmV0dXJuIHRoaXMuYWNjZXB0KHAuQXRLZXl3b3JkKT90aGlzLmZpbmlzaChlKTplfV9wYXJzZU9wZXJhdG9yKCl7aWYodGhpcy5wZWVrRGVsaW0oIi8iKXx8dGhpcy5wZWVrRGVsaW0oIioiKXx8dGhpcy5wZWVrRGVsaW0oIisiKXx8dGhpcy5wZWVrRGVsaW0oIi0iKXx8dGhpcy5wZWVrKHAuRGFzaG1hdGNoKXx8dGhpcy5wZWVrKHAuSW5jbHVkZXMpfHx0aGlzLnBlZWsocC5TdWJzdHJpbmdPcGVyYXRvcil8fHRoaXMucGVlayhwLlByZWZpeE9wZXJhdG9yKXx8dGhpcy5wZWVrKHAuU3VmZml4T3BlcmF0b3IpfHx0aGlzLnBlZWtEZWxpbSgiPSIpKXtjb25zdCBlPXRoaXMuY3JlYXRlTm9kZShiLk9wZXJhdG9yKTtyZXR1cm4gdGhpcy5jb25zdW1lVG9rZW4oKSx0aGlzLmZpbmlzaChlKX1lbHNlIHJldHVybiBudWxsfV9wYXJzZVVuYXJ5T3BlcmF0b3IoKXtpZighdGhpcy5wZWVrRGVsaW0oIisiKSYmIXRoaXMucGVla0RlbGltKCItIikpcmV0dXJuIG51bGw7Y29uc3QgZT10aGlzLmNyZWF0ZShPKTtyZXR1cm4gdGhpcy5jb25zdW1lVG9rZW4oKSx0aGlzLmZpbmlzaChlKX1fcGFyc2VDb21iaW5hdG9yKCl7aWYodGhpcy5wZWVrRGVsaW0oIj4iKSl7Y29uc3QgZT10aGlzLmNyZWF0ZShPKTt0aGlzLmNvbnN1bWVUb2tlbigpO2NvbnN0IHQ9dGhpcy5tYXJrKCk7aWYoIXRoaXMuaGFzV2hpdGVzcGFjZSgpJiZ0aGlzLmFjY2VwdERlbGltKCI+Iikpe2lmKCF0aGlzLmhhc1doaXRlc3BhY2UoKSYmdGhpcy5hY2NlcHREZWxpbSgiPiIpKXJldHVybiBlLnR5cGU9Yi5TZWxlY3RvckNvbWJpbmF0b3JTaGFkb3dQaWVyY2luZ0Rlc2NlbmRhbnQsdGhpcy5maW5pc2goZSk7dGhpcy5yZXN0b3JlQXRNYXJrKHQpfXJldHVybiBlLnR5cGU9Yi5TZWxlY3RvckNvbWJpbmF0b3JQYXJlbnQsdGhpcy5maW5pc2goZSl9ZWxzZSBpZih0aGlzLnBlZWtEZWxpbSgiKyIpKXtjb25zdCBlPXRoaXMuY3JlYXRlKE8pO3JldHVybiB0aGlzLmNvbnN1bWVUb2tlbigpLGUudHlwZT1iLlNlbGVjdG9yQ29tYmluYXRvclNpYmxpbmcsdGhpcy5maW5pc2goZSl9ZWxzZSBpZih0aGlzLnBlZWtEZWxpbSgifiIpKXtjb25zdCBlPXRoaXMuY3JlYXRlKE8pO3JldHVybiB0aGlzLmNvbnN1bWVUb2tlbigpLGUudHlwZT1iLlNlbGVjdG9yQ29tYmluYXRvckFsbFNpYmxpbmdzLHRoaXMuZmluaXNoKGUpfWVsc2UgaWYodGhpcy5wZWVrRGVsaW0oIi8iKSl7Y29uc3QgZT10aGlzLmNyZWF0ZShPKTt0aGlzLmNvbnN1bWVUb2tlbigpO2NvbnN0IHQ9dGhpcy5tYXJrKCk7aWYoIXRoaXMuaGFzV2hpdGVzcGFjZSgpJiZ0aGlzLmFjY2VwdElkZW50KCJkZWVwIikmJiF0aGlzLmhhc1doaXRlc3BhY2UoKSYmdGhpcy5hY2NlcHREZWxpbSgiLyIpKXJldHVybiBlLnR5cGU9Yi5TZWxlY3RvckNvbWJpbmF0b3JTaGFkb3dQaWVyY2luZ0Rlc2NlbmRhbnQsdGhpcy5maW5pc2goZSk7dGhpcy5yZXN0b3JlQXRNYXJrKHQpfXJldHVybiBudWxsfV9wYXJzZVNpbXBsZVNlbGVjdG9yKCl7Y29uc3QgZT10aGlzLmNyZWF0ZShxdCk7bGV0IHQ9MDtmb3IoZS5hZGRDaGlsZCh0aGlzLl9wYXJzZUVsZW1lbnROYW1lKCl8fHRoaXMuX3BhcnNlTmVzdGluZ1NlbGVjdG9yKCkpJiZ0Kys7KHQ9PT0wfHwhdGhpcy5oYXNXaGl0ZXNwYWNlKCkpJiZlLmFkZENoaWxkKHRoaXMuX3BhcnNlU2ltcGxlU2VsZWN0b3JCb2R5KCkpOyl0Kys7cmV0dXJuIHQ+MD90aGlzLmZpbmlzaChlKTpudWxsfV9wYXJzZU5lc3RpbmdTZWxlY3Rvcigpe2lmKHRoaXMucGVla0RlbGltKCImIikpe2NvbnN0IGU9dGhpcy5jcmVhdGVOb2RlKGIuU2VsZWN0b3JDb21iaW5hdG9yKTtyZXR1cm4gdGhpcy5jb25zdW1lVG9rZW4oKSx0aGlzLmZpbmlzaChlKX1yZXR1cm4gbnVsbH1fcGFyc2VTaW1wbGVTZWxlY3RvckJvZHkoKXtyZXR1cm4gdGhpcy5fcGFyc2VQc2V1ZG8oKXx8dGhpcy5fcGFyc2VIYXNoKCl8fHRoaXMuX3BhcnNlQ2xhc3MoKXx8dGhpcy5fcGFyc2VBdHRyaWIoKX1fcGFyc2VTZWxlY3RvcklkZW50KCl7cmV0dXJuIHRoaXMuX3BhcnNlSWRlbnQoKX1fcGFyc2VIYXNoKCl7aWYoIXRoaXMucGVlayhwLkhhc2gpJiYhdGhpcy5wZWVrRGVsaW0oIiMiKSlyZXR1cm4gbnVsbDtjb25zdCBlPXRoaXMuY3JlYXRlTm9kZShiLklkZW50aWZpZXJTZWxlY3Rvcik7aWYodGhpcy5hY2NlcHREZWxpbSgiIyIpKXtpZih0aGlzLmhhc1doaXRlc3BhY2UoKXx8IWUuYWRkQ2hpbGQodGhpcy5fcGFyc2VTZWxlY3RvcklkZW50KCkpKXJldHVybiB0aGlzLmZpbmlzaChlLHguSWRlbnRpZmllckV4cGVjdGVkKX1lbHNlIHRoaXMuY29uc3VtZVRva2VuKCk7cmV0dXJuIHRoaXMuZmluaXNoKGUpfV9wYXJzZUNsYXNzKCl7aWYoIXRoaXMucGVla0RlbGltKCIuIikpcmV0dXJuIG51bGw7Y29uc3QgZT10aGlzLmNyZWF0ZU5vZGUoYi5DbGFzc1NlbGVjdG9yKTtyZXR1cm4gdGhpcy5jb25zdW1lVG9rZW4oKSx0aGlzLmhhc1doaXRlc3BhY2UoKXx8IWUuYWRkQ2hpbGQodGhpcy5fcGFyc2VTZWxlY3RvcklkZW50KCkpP3RoaXMuZmluaXNoKGUseC5JZGVudGlmaWVyRXhwZWN0ZWQpOnRoaXMuZmluaXNoKGUpfV9wYXJzZUVsZW1lbnROYW1lKCl7Y29uc3QgZT10aGlzLm1hcmsoKSx0PXRoaXMuY3JlYXRlTm9kZShiLkVsZW1lbnROYW1lU2VsZWN0b3IpO3JldHVybiB0LmFkZENoaWxkKHRoaXMuX3BhcnNlTmFtZXNwYWNlUHJlZml4KCkpLCF0LmFkZENoaWxkKHRoaXMuX3BhcnNlU2VsZWN0b3JJZGVudCgpKSYmIXRoaXMuYWNjZXB0RGVsaW0oIioiKT8odGhpcy5yZXN0b3JlQXRNYXJrKGUpLG51bGwpOnRoaXMuZmluaXNoKHQpfV9wYXJzZU5hbWVzcGFjZVByZWZpeCgpe2NvbnN0IGU9dGhpcy5tYXJrKCksdD10aGlzLmNyZWF0ZU5vZGUoYi5OYW1lc3BhY2VQcmVmaXgpO3JldHVybiF0LmFkZENoaWxkKHRoaXMuX3BhcnNlSWRlbnQoKSkmJnRoaXMuYWNjZXB0RGVsaW0oIioiKSx0aGlzLmFjY2VwdERlbGltKCJ8Iik/dGhpcy5maW5pc2godCk6KHRoaXMucmVzdG9yZUF0TWFyayhlKSxudWxsKX1fcGFyc2VBdHRyaWIoKXtpZighdGhpcy5wZWVrKHAuQnJhY2tldEwpKXJldHVybiBudWxsO2NvbnN0IGU9dGhpcy5jcmVhdGUoQ3ApO3JldHVybiB0aGlzLmNvbnN1bWVUb2tlbigpLGUuc2V0TmFtZXNwYWNlUHJlZml4KHRoaXMuX3BhcnNlTmFtZXNwYWNlUHJlZml4KCkpLGUuc2V0SWRlbnRpZmllcih0aGlzLl9wYXJzZUlkZW50KCkpPyhlLnNldE9wZXJhdG9yKHRoaXMuX3BhcnNlT3BlcmF0b3IoKSkmJihlLnNldFZhbHVlKHRoaXMuX3BhcnNlQmluYXJ5RXhwcigpKSx0aGlzLmFjY2VwdElkZW50KCJpIiksdGhpcy5hY2NlcHRJZGVudCgicyIpKSx0aGlzLmFjY2VwdChwLkJyYWNrZXRSKT90aGlzLmZpbmlzaChlKTp0aGlzLmZpbmlzaChlLHguUmlnaHRTcXVhcmVCcmFja2V0RXhwZWN0ZWQpKTp0aGlzLmZpbmlzaChlLHguSWRlbnRpZmllckV4cGVjdGVkKX1fcGFyc2VQc2V1ZG8oKXtjb25zdCBlPXRoaXMuX3RyeVBhcnNlUHNldWRvSWRlbnRpZmllcigpO2lmKGUpe2lmKCF0aGlzLmhhc1doaXRlc3BhY2UoKSYmdGhpcy5hY2NlcHQocC5QYXJlbnRoZXNpc0wpKXtjb25zdCB0PSgpPT57Y29uc3Qgcj10aGlzLmNyZWF0ZShPKTtpZighci5hZGRDaGlsZCh0aGlzLl9wYXJzZVNlbGVjdG9yKCEwKSkpcmV0dXJuIG51bGw7Zm9yKDt0aGlzLmFjY2VwdChwLkNvbW1hKSYmci5hZGRDaGlsZCh0aGlzLl9wYXJzZVNlbGVjdG9yKCEwKSk7KTtyZXR1cm4gdGhpcy5wZWVrKHAuUGFyZW50aGVzaXNSKT90aGlzLmZpbmlzaChyKTpudWxsfTtpZighZS5hZGRDaGlsZCh0aGlzLnRyeSh0KSkmJmUuYWRkQ2hpbGQodGhpcy5fcGFyc2VCaW5hcnlFeHByKCkpJiZ0aGlzLmFjY2VwdElkZW50KCJvZiIpJiYhZS5hZGRDaGlsZCh0aGlzLnRyeSh0KSkpcmV0dXJuIHRoaXMuZmluaXNoKGUseC5TZWxlY3RvckV4cGVjdGVkKTtpZighdGhpcy5hY2NlcHQocC5QYXJlbnRoZXNpc1IpKXJldHVybiB0aGlzLmZpbmlzaChlLHguUmlnaHRQYXJlbnRoZXNpc0V4cGVjdGVkKX1yZXR1cm4gdGhpcy5maW5pc2goZSl9cmV0dXJuIG51bGx9X3RyeVBhcnNlUHNldWRvSWRlbnRpZmllcigpe2lmKCF0aGlzLnBlZWsocC5Db2xvbikpcmV0dXJuIG51bGw7Y29uc3QgZT10aGlzLm1hcmsoKSx0PXRoaXMuY3JlYXRlTm9kZShiLlBzZXVkb1NlbGVjdG9yKTtyZXR1cm4gdGhpcy5jb25zdW1lVG9rZW4oKSx0aGlzLmhhc1doaXRlc3BhY2UoKT8odGhpcy5yZXN0b3JlQXRNYXJrKGUpLG51bGwpOih0aGlzLmFjY2VwdChwLkNvbG9uKSx0aGlzLmhhc1doaXRlc3BhY2UoKXx8IXQuYWRkQ2hpbGQodGhpcy5fcGFyc2VJZGVudCgpKT90aGlzLmZpbmlzaCh0LHguSWRlbnRpZmllckV4cGVjdGVkKTp0aGlzLmZpbmlzaCh0KSl9X3RyeVBhcnNlUHJpbygpe2NvbnN0IGU9dGhpcy5tYXJrKCksdD10aGlzLl9wYXJzZVByaW8oKTtyZXR1cm4gdHx8KHRoaXMucmVzdG9yZUF0TWFyayhlKSxudWxsKX1fcGFyc2VQcmlvKCl7aWYoIXRoaXMucGVlayhwLkV4Y2xhbWF0aW9uKSlyZXR1cm4gbnVsbDtjb25zdCBlPXRoaXMuY3JlYXRlTm9kZShiLlByaW8pO3JldHVybiB0aGlzLmFjY2VwdChwLkV4Y2xhbWF0aW9uKSYmdGhpcy5hY2NlcHRJZGVudCgiaW1wb3J0YW50Iik/dGhpcy5maW5pc2goZSk6bnVsbH1fcGFyc2VFeHByKGU9ITEpe2NvbnN0IHQ9dGhpcy5jcmVhdGUoY2wpO2lmKCF0LmFkZENoaWxkKHRoaXMuX3BhcnNlQmluYXJ5RXhwcigpKSlyZXR1cm4gbnVsbDtmb3IoOzspe2lmKHRoaXMucGVlayhwLkNvbW1hKSl7aWYoZSlyZXR1cm4gdGhpcy5maW5pc2godCk7dGhpcy5jb25zdW1lVG9rZW4oKX1pZighdC5hZGRDaGlsZCh0aGlzLl9wYXJzZUJpbmFyeUV4cHIoKSkpYnJlYWt9cmV0dXJuIHRoaXMuZmluaXNoKHQpfV9wYXJzZVVuaWNvZGVSYW5nZSgpe2lmKCF0aGlzLnBlZWtJZGVudCgidSIpKXJldHVybiBudWxsO2NvbnN0IGU9dGhpcy5jcmVhdGUoS3UpO3JldHVybiB0aGlzLmFjY2VwdFVuaWNvZGVSYW5nZSgpP3RoaXMuZmluaXNoKGUpOm51bGx9X3BhcnNlTmFtZWRMaW5lKCl7aWYoIXRoaXMucGVlayhwLkJyYWNrZXRMKSlyZXR1cm4gbnVsbDtjb25zdCBlPXRoaXMuY3JlYXRlTm9kZShiLkdyaWRMaW5lKTtmb3IodGhpcy5jb25zdW1lVG9rZW4oKTtlLmFkZENoaWxkKHRoaXMuX3BhcnNlSWRlbnQoKSk7KTtyZXR1cm4gdGhpcy5hY2NlcHQocC5CcmFja2V0Uik/dGhpcy5maW5pc2goZSk6dGhpcy5maW5pc2goZSx4LlJpZ2h0U3F1YXJlQnJhY2tldEV4cGVjdGVkKX1fcGFyc2VCaW5hcnlFeHByKGUsdCl7bGV0IG49dGhpcy5jcmVhdGUoSWkpO2lmKCFuLnNldExlZnQoZXx8dGhpcy5fcGFyc2VUZXJtKCkpKXJldHVybiBudWxsO2lmKCFuLnNldE9wZXJhdG9yKHR8fHRoaXMuX3BhcnNlT3BlcmF0b3IoKSkpcmV0dXJuIHRoaXMuZmluaXNoKG4pO2lmKCFuLnNldFJpZ2h0KHRoaXMuX3BhcnNlVGVybSgpKSlyZXR1cm4gdGhpcy5maW5pc2gobix4LlRlcm1FeHBlY3RlZCk7bj10aGlzLmZpbmlzaChuKTtjb25zdCByPXRoaXMuX3BhcnNlT3BlcmF0b3IoKTtyZXR1cm4gciYmKG49dGhpcy5fcGFyc2VCaW5hcnlFeHByKG4scikpLHRoaXMuZmluaXNoKG4pfV9wYXJzZVRlcm0oKXtsZXQgZT10aGlzLmNyZWF0ZShTcCk7cmV0dXJuIGUuc2V0T3BlcmF0b3IodGhpcy5fcGFyc2VVbmFyeU9wZXJhdG9yKCkpLGUuc2V0RXhwcmVzc2lvbih0aGlzLl9wYXJzZVRlcm1FeHByZXNzaW9uKCkpP3RoaXMuZmluaXNoKGUpOm51bGx9X3BhcnNlVGVybUV4cHJlc3Npb24oKXtyZXR1cm4gdGhpcy5fcGFyc2VVUklMaXRlcmFsKCl8fHRoaXMuX3BhcnNlVW5pY29kZVJhbmdlKCl8fHRoaXMuX3BhcnNlRnVuY3Rpb24oKXx8dGhpcy5fcGFyc2VJZGVudCgpfHx0aGlzLl9wYXJzZVN0cmluZ0xpdGVyYWwoKXx8dGhpcy5fcGFyc2VOdW1lcmljKCl8fHRoaXMuX3BhcnNlSGV4Q29sb3IoKXx8dGhpcy5fcGFyc2VPcGVyYXRpb24oKXx8dGhpcy5fcGFyc2VOYW1lZExpbmUoKX1fcGFyc2VPcGVyYXRpb24oKXtpZighdGhpcy5wZWVrKHAuUGFyZW50aGVzaXNMKSlyZXR1cm4gbnVsbDtjb25zdCBlPXRoaXMuY3JlYXRlKE8pO3JldHVybiB0aGlzLmNvbnN1bWVUb2tlbigpLGUuYWRkQ2hpbGQodGhpcy5fcGFyc2VFeHByKCkpLHRoaXMuYWNjZXB0KHAuUGFyZW50aGVzaXNSKT90aGlzLmZpbmlzaChlKTp0aGlzLmZpbmlzaChlLHguUmlnaHRQYXJlbnRoZXNpc0V4cGVjdGVkKX1fcGFyc2VOdW1lcmljKCl7aWYodGhpcy5wZWVrKHAuTnVtKXx8dGhpcy5wZWVrKHAuUGVyY2VudGFnZSl8fHRoaXMucGVlayhwLlJlc29sdXRpb24pfHx0aGlzLnBlZWsocC5MZW5ndGgpfHx0aGlzLnBlZWsocC5FTVMpfHx0aGlzLnBlZWsocC5FWFMpfHx0aGlzLnBlZWsocC5BbmdsZSl8fHRoaXMucGVlayhwLlRpbWUpfHx0aGlzLnBlZWsocC5EaW1lbnNpb24pfHx0aGlzLnBlZWsocC5Db250YWluZXJRdWVyeUxlbmd0aCl8fHRoaXMucGVlayhwLkZyZXEpKXtjb25zdCBlPXRoaXMuY3JlYXRlKE1pKTtyZXR1cm4gdGhpcy5jb25zdW1lVG9rZW4oKSx0aGlzLmZpbmlzaChlKX1yZXR1cm4gbnVsbH1fcGFyc2VTdHJpbmdMaXRlcmFsKCl7aWYoIXRoaXMucGVlayhwLlN0cmluZykmJiF0aGlzLnBlZWsocC5CYWRTdHJpbmcpKXJldHVybiBudWxsO2NvbnN0IGU9dGhpcy5jcmVhdGVOb2RlKGIuU3RyaW5nTGl0ZXJhbCk7cmV0dXJuIHRoaXMuY29uc3VtZVRva2VuKCksdGhpcy5maW5pc2goZSl9X3BhcnNlVVJJTGl0ZXJhbCgpe2lmKCF0aGlzLnBlZWtSZWdFeHAocC5JZGVudCwvXnVybCgtcHJlZml4KT8kL2kpKXJldHVybiBudWxsO2NvbnN0IGU9dGhpcy5tYXJrKCksdD10aGlzLmNyZWF0ZU5vZGUoYi5VUklMaXRlcmFsKTtyZXR1cm4gdGhpcy5hY2NlcHQocC5JZGVudCksdGhpcy5oYXNXaGl0ZXNwYWNlKCl8fCF0aGlzLnBlZWsocC5QYXJlbnRoZXNpc0wpPyh0aGlzLnJlc3RvcmVBdE1hcmsoZSksbnVsbCk6KHRoaXMuc2Nhbm5lci5pblVSTD0hMCx0aGlzLmNvbnN1bWVUb2tlbigpLHQuYWRkQ2hpbGQodGhpcy5fcGFyc2VVUkxBcmd1bWVudCgpKSx0aGlzLnNjYW5uZXIuaW5VUkw9ITEsdGhpcy5hY2NlcHQocC5QYXJlbnRoZXNpc1IpP3RoaXMuZmluaXNoKHQpOnRoaXMuZmluaXNoKHQseC5SaWdodFBhcmVudGhlc2lzRXhwZWN0ZWQpKX1fcGFyc2VVUkxBcmd1bWVudCgpe2NvbnN0IGU9dGhpcy5jcmVhdGUoTyk7cmV0dXJuIXRoaXMuYWNjZXB0KHAuU3RyaW5nKSYmIXRoaXMuYWNjZXB0KHAuQmFkU3RyaW5nKSYmIXRoaXMuYWNjZXB0VW5xdW90ZWRTdHJpbmcoKT9udWxsOnRoaXMuZmluaXNoKGUpfV9wYXJzZUlkZW50KGUpe2lmKCF0aGlzLnBlZWsocC5JZGVudCkpcmV0dXJuIG51bGw7Y29uc3QgdD10aGlzLmNyZWF0ZShJZSk7cmV0dXJuIGUmJih0LnJlZmVyZW5jZVR5cGVzPWUpLHQuaXNDdXN0b21Qcm9wZXJ0eT10aGlzLnBlZWtSZWdFeHAocC5JZGVudCwvXi0tLyksdGhpcy5jb25zdW1lVG9rZW4oKSx0aGlzLmZpbmlzaCh0KX1fcGFyc2VGdW5jdGlvbigpe2NvbnN0IGU9dGhpcy5tYXJrKCksdD10aGlzLmNyZWF0ZShTbik7aWYoIXQuc2V0SWRlbnRpZmllcih0aGlzLl9wYXJzZUZ1bmN0aW9uSWRlbnRpZmllcigpKSlyZXR1cm4gbnVsbDtpZih0aGlzLmhhc1doaXRlc3BhY2UoKXx8IXRoaXMuYWNjZXB0KHAuUGFyZW50aGVzaXNMKSlyZXR1cm4gdGhpcy5yZXN0b3JlQXRNYXJrKGUpLG51bGw7aWYodC5nZXRBcmd1bWVudHMoKS5hZGRDaGlsZCh0aGlzLl9wYXJzZUZ1bmN0aW9uQXJndW1lbnQoKSkpZm9yKDt0aGlzLmFjY2VwdChwLkNvbW1hKSYmIXRoaXMucGVlayhwLlBhcmVudGhlc2lzUik7KXQuZ2V0QXJndW1lbnRzKCkuYWRkQ2hpbGQodGhpcy5fcGFyc2VGdW5jdGlvbkFyZ3VtZW50KCkpfHx0aGlzLm1hcmtFcnJvcih0LHguRXhwcmVzc2lvbkV4cGVjdGVkKTtyZXR1cm4gdGhpcy5hY2NlcHQocC5QYXJlbnRoZXNpc1IpP3RoaXMuZmluaXNoKHQpOnRoaXMuZmluaXNoKHQseC5SaWdodFBhcmVudGhlc2lzRXhwZWN0ZWQpfV9wYXJzZUZ1bmN0aW9uSWRlbnRpZmllcigpe2lmKCF0aGlzLnBlZWsocC5JZGVudCkpcmV0dXJuIG51bGw7Y29uc3QgZT10aGlzLmNyZWF0ZShJZSk7aWYoZS5yZWZlcmVuY2VUeXBlcz1bRy5GdW5jdGlvbl0sdGhpcy5hY2NlcHRJZGVudCgicHJvZ2lkIikpe2lmKHRoaXMuYWNjZXB0KHAuQ29sb24pKWZvcig7dGhpcy5hY2NlcHQocC5JZGVudCkmJnRoaXMuYWNjZXB0RGVsaW0oIi4iKTspO3JldHVybiB0aGlzLmZpbmlzaChlKX1yZXR1cm4gdGhpcy5jb25zdW1lVG9rZW4oKSx0aGlzLmZpbmlzaChlKX1fcGFyc2VGdW5jdGlvbkFyZ3VtZW50KCl7Y29uc3QgZT10aGlzLmNyZWF0ZShqdCk7cmV0dXJuIGUuc2V0VmFsdWUodGhpcy5fcGFyc2VFeHByKCEwKSk/dGhpcy5maW5pc2goZSk6bnVsbH1fcGFyc2VIZXhDb2xvcigpe2lmKHRoaXMucGVla1JlZ0V4cChwLkhhc2gsL14jKFtBLUZhLWYwLTldezN9fFtBLUZhLWYwLTldezR9fFtBLUZhLWYwLTldezZ9fFtBLUZhLWYwLTldezh9KSQvZykpe2NvbnN0IGU9dGhpcy5jcmVhdGUoQWkpO3JldHVybiB0aGlzLmNvbnN1bWVUb2tlbigpLHRoaXMuZmluaXNoKGUpfWVsc2UgcmV0dXJuIG51bGx9fTtmdW5jdGlvbiBubShlLHQpe2xldCBuPTAscj1lLmxlbmd0aDtpZihyPT09MClyZXR1cm4gMDtmb3IoO248cjspe2xldCBpPU1hdGguZmxvb3IoKG4rcikvMik7dChlW2ldKT9yPWk6bj1pKzF9cmV0dXJuIG59ZnVuY3Rpb24gUmMoZSx0KXtyZXR1cm4gZS5pbmRleE9mKHQpIT09LTF9ZnVuY3Rpb24gdnIoLi4uZSl7Y29uc3QgdD1bXTtmb3IoY29uc3QgbiBvZiBlKWZvcihjb25zdCByIG9mIG4pUmModCxyKXx8dC5wdXNoKHIpO3JldHVybiB0fXZhciBOYz1jbGFzc3tjb25zdHJ1Y3RvcihlLHQpe3RoaXMub2Zmc2V0PWUsdGhpcy5sZW5ndGg9dCx0aGlzLnN5bWJvbHM9W10sdGhpcy5wYXJlbnQ9bnVsbCx0aGlzLmNoaWxkcmVuPVtdfWFkZENoaWxkKGUpe3RoaXMuY2hpbGRyZW4ucHVzaChlKSxlLnNldFBhcmVudCh0aGlzKX1zZXRQYXJlbnQoZSl7dGhpcy5wYXJlbnQ9ZX1maW5kU2NvcGUoZSx0PTApe3JldHVybiB0aGlzLm9mZnNldDw9ZSYmdGhpcy5vZmZzZXQrdGhpcy5sZW5ndGg+ZSt0fHx0aGlzLm9mZnNldD09PWUmJnRoaXMubGVuZ3RoPT09dD90aGlzLmZpbmRJblNjb3BlKGUsdCk6bnVsbH1maW5kSW5TY29wZShlLHQ9MCl7Y29uc3Qgbj1lK3Qscj1ubSh0aGlzLmNoaWxkcmVuLHM9PnMub2Zmc2V0Pm4pO2lmKHI9PT0wKXJldHVybiB0aGlzO2NvbnN0IGk9dGhpcy5jaGlsZHJlbltyLTFdO3JldHVybiBpLm9mZnNldDw9ZSYmaS5vZmZzZXQraS5sZW5ndGg+PWUrdD9pLmZpbmRJblNjb3BlKGUsdCk6dGhpc31hZGRTeW1ib2woZSl7dGhpcy5zeW1ib2xzLnB1c2goZSl9Z2V0U3ltYm9sKGUsdCl7Zm9yKGxldCBuPTA7bjx0aGlzLnN5bWJvbHMubGVuZ3RoO24rKyl7Y29uc3Qgcj10aGlzLnN5bWJvbHNbbl07aWYoci5uYW1lPT09ZSYmci50eXBlPT09dClyZXR1cm4gcn1yZXR1cm4gbnVsbH1nZXRTeW1ib2xzKCl7cmV0dXJuIHRoaXMuc3ltYm9sc319LHJtPWNsYXNzIGV4dGVuZHMgTmN7Y29uc3RydWN0b3IoKXtzdXBlcigwLE51bWJlci5NQVhfVkFMVUUpfX0sd3I9Y2xhc3N7Y29uc3RydWN0b3IoZSx0LG4scil7dGhpcy5uYW1lPWUsdGhpcy52YWx1ZT10LHRoaXMubm9kZT1uLHRoaXMudHlwZT1yfX0saW09Y2xhc3N7Y29uc3RydWN0b3IoZSl7dGhpcy5zY29wZT1lfWFkZFN5bWJvbChlLHQsbixyKXtpZihlLm9mZnNldCE9PS0xKXtjb25zdCBpPXRoaXMuc2NvcGUuZmluZFNjb3BlKGUub2Zmc2V0LGUubGVuZ3RoKTtpJiZpLmFkZFN5bWJvbChuZXcgd3IodCxuLGUscikpfX1hZGRTY29wZShlKXtpZihlLm9mZnNldCE9PS0xKXtjb25zdCB0PXRoaXMuc2NvcGUuZmluZFNjb3BlKGUub2Zmc2V0LGUubGVuZ3RoKTtpZih0JiYodC5vZmZzZXQhPT1lLm9mZnNldHx8dC5sZW5ndGghPT1lLmxlbmd0aCkpe2NvbnN0IG49bmV3IE5jKGUub2Zmc2V0LGUubGVuZ3RoKTtyZXR1cm4gdC5hZGRDaGlsZChuKSxufXJldHVybiB0fXJldHVybiBudWxsfWFkZFN5bWJvbFRvQ2hpbGRTY29wZShlLHQsbixyLGkpe2lmKGUmJmUub2Zmc2V0IT09LTEpe2NvbnN0IHM9dGhpcy5hZGRTY29wZShlKTtzJiZzLmFkZFN5bWJvbChuZXcgd3IobixyLHQsaSkpfX12aXNpdE5vZGUoZSl7c3dpdGNoKGUudHlwZSl7Y2FzZSBiLktleWZyYW1lOnJldHVybiB0aGlzLmFkZFN5bWJvbChlLGUuZ2V0TmFtZSgpLHZvaWQgMCxHLktleWZyYW1lKSwhMDtjYXNlIGIuQ3VzdG9tUHJvcGVydHlEZWNsYXJhdGlvbjpyZXR1cm4gdGhpcy52aXNpdEN1c3RvbVByb3BlcnR5RGVjbGFyYXRpb25Ob2RlKGUpO2Nhc2UgYi5WYXJpYWJsZURlY2xhcmF0aW9uOnJldHVybiB0aGlzLnZpc2l0VmFyaWFibGVEZWNsYXJhdGlvbk5vZGUoZSk7Y2FzZSBiLlJ1bGVzZXQ6cmV0dXJuIHRoaXMudmlzaXRSdWxlU2V0KGUpO2Nhc2UgYi5NaXhpbkRlY2xhcmF0aW9uOnJldHVybiB0aGlzLmFkZFN5bWJvbChlLGUuZ2V0TmFtZSgpLHZvaWQgMCxHLk1peGluKSwhMDtjYXNlIGIuRnVuY3Rpb25EZWNsYXJhdGlvbjpyZXR1cm4gdGhpcy5hZGRTeW1ib2woZSxlLmdldE5hbWUoKSx2b2lkIDAsRy5GdW5jdGlvbiksITA7Y2FzZSBiLkZ1bmN0aW9uUGFyYW1ldGVyOnJldHVybiB0aGlzLnZpc2l0RnVuY3Rpb25QYXJhbWV0ZXJOb2RlKGUpO2Nhc2UgYi5EZWNsYXJhdGlvbnM6cmV0dXJuIHRoaXMuYWRkU2NvcGUoZSksITA7Y2FzZSBiLkZvcjpjb25zdCB0PWUsbj10LmdldERlY2xhcmF0aW9ucygpO3JldHVybiBuJiZ0LnZhcmlhYmxlJiZ0aGlzLmFkZFN5bWJvbFRvQ2hpbGRTY29wZShuLHQudmFyaWFibGUsdC52YXJpYWJsZS5nZXROYW1lKCksdm9pZCAwLEcuVmFyaWFibGUpLCEwO2Nhc2UgYi5FYWNoOntjb25zdCByPWUsaT1yLmdldERlY2xhcmF0aW9ucygpO2lmKGkpe2NvbnN0IHM9ci5nZXRWYXJpYWJsZXMoKS5nZXRDaGlsZHJlbigpO2Zvcihjb25zdCBhIG9mIHMpdGhpcy5hZGRTeW1ib2xUb0NoaWxkU2NvcGUoaSxhLGEuZ2V0TmFtZSgpLHZvaWQgMCxHLlZhcmlhYmxlKX1yZXR1cm4hMH19cmV0dXJuITB9dmlzaXRSdWxlU2V0KGUpe2NvbnN0IHQ9dGhpcy5zY29wZS5maW5kU2NvcGUoZS5vZmZzZXQsZS5sZW5ndGgpO2lmKHQpZm9yKGNvbnN0IG4gb2YgZS5nZXRTZWxlY3RvcnMoKS5nZXRDaGlsZHJlbigpKW4gaW5zdGFuY2VvZiB4biYmbi5nZXRDaGlsZHJlbigpLmxlbmd0aD09PTEmJnQuYWRkU3ltYm9sKG5ldyB3cihuLmdldENoaWxkKDApLmdldFRleHQoKSx2b2lkIDAsbixHLlJ1bGUpKTtyZXR1cm4hMH12aXNpdFZhcmlhYmxlRGVjbGFyYXRpb25Ob2RlKGUpe2NvbnN0IHQ9ZS5nZXRWYWx1ZSgpP2UuZ2V0VmFsdWUoKS5nZXRUZXh0KCk6dm9pZCAwO3JldHVybiB0aGlzLmFkZFN5bWJvbChlLGUuZ2V0TmFtZSgpLHQsRy5WYXJpYWJsZSksITB9dmlzaXRGdW5jdGlvblBhcmFtZXRlck5vZGUoZSl7Y29uc3QgdD1lLmdldFBhcmVudCgpLmdldERlY2xhcmF0aW9ucygpO2lmKHQpe2NvbnN0IG49ZS5nZXREZWZhdWx0VmFsdWUoKSxyPW4/bi5nZXRUZXh0KCk6dm9pZCAwO3RoaXMuYWRkU3ltYm9sVG9DaGlsZFNjb3BlKHQsZSxlLmdldE5hbWUoKSxyLEcuVmFyaWFibGUpfXJldHVybiEwfXZpc2l0Q3VzdG9tUHJvcGVydHlEZWNsYXJhdGlvbk5vZGUoZSl7Y29uc3QgdD1lLmdldFZhbHVlKCk/ZS5nZXRWYWx1ZSgpLmdldFRleHQoKToiIjtyZXR1cm4gdGhpcy5hZGRDU1NWYXJpYWJsZShlLmdldFByb3BlcnR5KCksZS5nZXRQcm9wZXJ0eSgpLmdldE5hbWUoKSx0LEcuVmFyaWFibGUpLCEwfWFkZENTU1ZhcmlhYmxlKGUsdCxuLHIpe2Uub2Zmc2V0IT09LTEmJnRoaXMuc2NvcGUuYWRkU3ltYm9sKG5ldyB3cih0LG4sZSxyKSl9fSxaaT1jbGFzc3tjb25zdHJ1Y3RvcihlKXt0aGlzLmdsb2JhbD1uZXcgcm0sZS5hY2NlcHRWaXNpdG9yKG5ldyBpbSh0aGlzLmdsb2JhbCkpfWZpbmRTeW1ib2xzQXRPZmZzZXQoZSx0KXtsZXQgbj10aGlzLmdsb2JhbC5maW5kU2NvcGUoZSwwKTtjb25zdCByPVtdLGk9e307Zm9yKDtuOyl7Y29uc3Qgcz1uLmdldFN5bWJvbHMoKTtmb3IobGV0IGE9MDthPHMubGVuZ3RoO2ErKyl7Y29uc3QgbD1zW2FdO2wudHlwZT09PXQmJiFpW2wubmFtZV0mJihyLnB1c2gobCksaVtsLm5hbWVdPSEwKX1uPW4ucGFyZW50fXJldHVybiByfWludGVybmFsRmluZFN5bWJvbChlLHQpe2xldCBuPWU7aWYoZS5wYXJlbnQgaW5zdGFuY2VvZiBuciYmZS5wYXJlbnQuZ2V0UGFyZW50KClpbnN0YW5jZW9mIHNlJiYobj1lLnBhcmVudC5nZXRQYXJlbnQoKS5nZXREZWNsYXJhdGlvbnMoKSksZS5wYXJlbnQgaW5zdGFuY2VvZiBqdCYmZS5wYXJlbnQuZ2V0UGFyZW50KClpbnN0YW5jZW9mIFNuKXtjb25zdCBzPWUucGFyZW50LmdldFBhcmVudCgpLmdldElkZW50aWZpZXIoKTtpZihzKXtjb25zdCBhPXRoaXMuaW50ZXJuYWxGaW5kU3ltYm9sKHMsW0cuRnVuY3Rpb25dKTthJiYobj1hLm5vZGUuZ2V0RGVjbGFyYXRpb25zKCkpfX1pZighbilyZXR1cm4gbnVsbDtjb25zdCByPWUuZ2V0VGV4dCgpO2xldCBpPXRoaXMuZ2xvYmFsLmZpbmRTY29wZShuLm9mZnNldCxuLmxlbmd0aCk7Zm9yKDtpOyl7Zm9yKGxldCBzPTA7czx0Lmxlbmd0aDtzKyspe2NvbnN0IGE9dFtzXSxsPWkuZ2V0U3ltYm9sKHIsYSk7aWYobClyZXR1cm4gbH1pPWkucGFyZW50fXJldHVybiBudWxsfWV2YWx1YXRlUmVmZXJlbmNlVHlwZXMoZSl7aWYoZSBpbnN0YW5jZW9mIEllKXtjb25zdCBuPWUucmVmZXJlbmNlVHlwZXM7aWYobilyZXR1cm4gbjt7aWYoZS5pc0N1c3RvbVByb3BlcnR5KXJldHVybltHLlZhcmlhYmxlXTtjb25zdCByPVF1KGUpO2lmKHIpe2NvbnN0IGk9ci5nZXROb25QcmVmaXhlZFByb3BlcnR5TmFtZSgpO2lmKChpPT09ImFuaW1hdGlvbiJ8fGk9PT0iYW5pbWF0aW9uLW5hbWUiKSYmci5nZXRWYWx1ZSgpJiZyLmdldFZhbHVlKCkub2Zmc2V0PT09ZS5vZmZzZXQpcmV0dXJuW0cuS2V5ZnJhbWVdfX19ZWxzZSBpZihlIGluc3RhbmNlb2YgemkpcmV0dXJuW0cuVmFyaWFibGVdO3JldHVybiBlLmZpbmRBUGFyZW50KGIuU2VsZWN0b3IsYi5FeHRlbmRzUmVmZXJlbmNlKT9bRy5SdWxlXTpudWxsfWZpbmRTeW1ib2xGcm9tTm9kZShlKXtpZighZSlyZXR1cm4gbnVsbDtmb3IoO2UudHlwZT09PWIuSW50ZXJwb2xhdGlvbjspZT1lLmdldFBhcmVudCgpO2NvbnN0IHQ9dGhpcy5ldmFsdWF0ZVJlZmVyZW5jZVR5cGVzKGUpO3JldHVybiB0P3RoaXMuaW50ZXJuYWxGaW5kU3ltYm9sKGUsdCk6bnVsbH1tYXRjaGVzU3ltYm9sKGUsdCl7aWYoIWUpcmV0dXJuITE7Zm9yKDtlLnR5cGU9PT1iLkludGVycG9sYXRpb247KWU9ZS5nZXRQYXJlbnQoKTtpZighZS5tYXRjaGVzKHQubmFtZSkpcmV0dXJuITE7Y29uc3Qgbj10aGlzLmV2YWx1YXRlUmVmZXJlbmNlVHlwZXMoZSk7cmV0dXJuIW58fG4uaW5kZXhPZih0LnR5cGUpPT09LTE/ITE6dGhpcy5pbnRlcm5hbEZpbmRTeW1ib2woZSxuKT09PXR9ZmluZFN5bWJvbChlLHQsbil7bGV0IHI9dGhpcy5nbG9iYWwuZmluZFNjb3BlKG4pO2Zvcig7cjspe2NvbnN0IGk9ci5nZXRTeW1ib2woZSx0KTtpZihpKXJldHVybiBpO3I9ci5wYXJlbnR9cmV0dXJuIG51bGx9fSxEYzsoKCk9Pnt2YXIgZT17NDcwOmk9PntmdW5jdGlvbiBzKG8pe2lmKHR5cGVvZiBvIT0ic3RyaW5nIil0aHJvdyBuZXcgVHlwZUVycm9yKCJQYXRoIG11c3QgYmUgYSBzdHJpbmcuIFJlY2VpdmVkICIrSlNPTi5zdHJpbmdpZnkobykpfWZ1bmN0aW9uIGEobyxjKXtmb3IodmFyIGQsdT0iIixmPTAsbT0tMSx2PTAseT0wO3k8PW8ubGVuZ3RoOysreSl7aWYoeTxvLmxlbmd0aClkPW8uY2hhckNvZGVBdCh5KTtlbHNle2lmKGQ9PT00NylicmVhaztkPTQ3fWlmKGQ9PT00Nyl7aWYoIShtPT09eS0xfHx2PT09MSkpaWYobSE9PXktMSYmdj09PTIpe2lmKHUubGVuZ3RoPDJ8fGYhPT0yfHx1LmNoYXJDb2RlQXQodS5sZW5ndGgtMSkhPT00Nnx8dS5jaGFyQ29kZUF0KHUubGVuZ3RoLTIpIT09NDYpe2lmKHUubGVuZ3RoPjIpe3ZhciBfPXUubGFzdEluZGV4T2YoIi8iKTtpZihfIT09dS5sZW5ndGgtMSl7Xz09PS0xPyh1PSIiLGY9MCk6Zj0odT11LnNsaWNlKDAsXykpLmxlbmd0aC0xLXUubGFzdEluZGV4T2YoIi8iKSxtPXksdj0wO2NvbnRpbnVlfX1lbHNlIGlmKHUubGVuZ3RoPT09Mnx8dS5sZW5ndGg9PT0xKXt1PSIiLGY9MCxtPXksdj0wO2NvbnRpbnVlfX1jJiYodS5sZW5ndGg+MD91Kz0iLy4uIjp1PSIuLiIsZj0yKX1lbHNlIHUubGVuZ3RoPjA/dSs9Ii8iK28uc2xpY2UobSsxLHkpOnU9by5zbGljZShtKzEseSksZj15LW0tMTttPXksdj0wfWVsc2UgZD09PTQ2JiZ2IT09LTE/Kyt2OnY9LTF9cmV0dXJuIHV9dmFyIGw9e3Jlc29sdmU6ZnVuY3Rpb24oKXtmb3IodmFyIG8sYz0iIixkPSExLHU9YXJndW1lbnRzLmxlbmd0aC0xO3U+PS0xJiYhZDt1LS0pe3ZhciBmO3U+PTA/Zj1hcmd1bWVudHNbdV06KG89PT12b2lkIDAmJihvPXByb2Nlc3MuY3dkKCkpLGY9bykscyhmKSxmLmxlbmd0aCE9PTAmJihjPWYrIi8iK2MsZD1mLmNoYXJDb2RlQXQoMCk9PT00Nyl9cmV0dXJuIGM9YShjLCFkKSxkP2MubGVuZ3RoPjA/Ii8iK2M6Ii8iOmMubGVuZ3RoPjA/YzoiLiJ9LG5vcm1hbGl6ZTpmdW5jdGlvbihvKXtpZihzKG8pLG8ubGVuZ3RoPT09MClyZXR1cm4iLiI7dmFyIGM9by5jaGFyQ29kZUF0KDApPT09NDcsZD1vLmNoYXJDb2RlQXQoby5sZW5ndGgtMSk9PT00NztyZXR1cm4obz1hKG8sIWMpKS5sZW5ndGghPT0wfHxjfHwobz0iLiIpLG8ubGVuZ3RoPjAmJmQmJihvKz0iLyIpLGM/Ii8iK286b30saXNBYnNvbHV0ZTpmdW5jdGlvbihvKXtyZXR1cm4gcyhvKSxvLmxlbmd0aD4wJiZvLmNoYXJDb2RlQXQoMCk9PT00N30sam9pbjpmdW5jdGlvbigpe2lmKGFyZ3VtZW50cy5sZW5ndGg9PT0wKXJldHVybiIuIjtmb3IodmFyIG8sYz0wO2M8YXJndW1lbnRzLmxlbmd0aDsrK2Mpe3ZhciBkPWFyZ3VtZW50c1tjXTtzKGQpLGQubGVuZ3RoPjAmJihvPT09dm9pZCAwP289ZDpvKz0iLyIrZCl9cmV0dXJuIG89PT12b2lkIDA/Ii4iOmwubm9ybWFsaXplKG8pfSxyZWxhdGl2ZTpmdW5jdGlvbihvLGMpe2lmKHMobykscyhjKSxvPT09Y3x8KG89bC5yZXNvbHZlKG8pKT09PShjPWwucmVzb2x2ZShjKSkpcmV0dXJuIiI7Zm9yKHZhciBkPTE7ZDxvLmxlbmd0aCYmby5jaGFyQ29kZUF0KGQpPT09NDc7KytkKTtmb3IodmFyIHU9by5sZW5ndGgsZj11LWQsbT0xO208Yy5sZW5ndGgmJmMuY2hhckNvZGVBdChtKT09PTQ3OysrbSk7Zm9yKHZhciB2PWMubGVuZ3RoLW0seT1mPHY/Zjp2LF89LTEsaz0wO2s8PXk7KytrKXtpZihrPT09eSl7aWYodj55KXtpZihjLmNoYXJDb2RlQXQobStrKT09PTQ3KXJldHVybiBjLnNsaWNlKG0raysxKTtpZihrPT09MClyZXR1cm4gYy5zbGljZShtK2spfWVsc2UgZj55JiYoby5jaGFyQ29kZUF0KGQrayk9PT00Nz9fPWs6az09PTAmJihfPTApKTticmVha312YXIgRD1vLmNoYXJDb2RlQXQoZCtrKTtpZihEIT09Yy5jaGFyQ29kZUF0KG0raykpYnJlYWs7RD09PTQ3JiYoXz1rKX12YXIgTj0iIjtmb3Ioaz1kK18rMTtrPD11OysraylrIT09dSYmby5jaGFyQ29kZUF0KGspIT09NDd8fChOLmxlbmd0aD09PTA/Tis9Ii4uIjpOKz0iLy4uIik7cmV0dXJuIE4ubGVuZ3RoPjA/TitjLnNsaWNlKG0rXyk6KG0rPV8sYy5jaGFyQ29kZUF0KG0pPT09NDcmJisrbSxjLnNsaWNlKG0pKX0sX21ha2VMb25nOmZ1bmN0aW9uKG8pe3JldHVybiBvfSxkaXJuYW1lOmZ1bmN0aW9uKG8pe2lmKHMobyksby5sZW5ndGg9PT0wKXJldHVybiIuIjtmb3IodmFyIGM9by5jaGFyQ29kZUF0KDApLGQ9Yz09PTQ3LHU9LTEsZj0hMCxtPW8ubGVuZ3RoLTE7bT49MTstLW0paWYoKGM9by5jaGFyQ29kZUF0KG0pKT09PTQ3KXtpZighZil7dT1tO2JyZWFrfX1lbHNlIGY9ITE7cmV0dXJuIHU9PT0tMT9kPyIvIjoiLiI6ZCYmdT09PTE/Ii8vIjpvLnNsaWNlKDAsdSl9LGJhc2VuYW1lOmZ1bmN0aW9uKG8sYyl7aWYoYyE9PXZvaWQgMCYmdHlwZW9mIGMhPSJzdHJpbmciKXRocm93IG5ldyBUeXBlRXJyb3IoJyJleHQiIGFyZ3VtZW50IG11c3QgYmUgYSBzdHJpbmcnKTtzKG8pO3ZhciBkLHU9MCxmPS0xLG09ITA7aWYoYyE9PXZvaWQgMCYmYy5sZW5ndGg+MCYmYy5sZW5ndGg8PW8ubGVuZ3RoKXtpZihjLmxlbmd0aD09PW8ubGVuZ3RoJiZjPT09bylyZXR1cm4iIjt2YXIgdj1jLmxlbmd0aC0xLHk9LTE7Zm9yKGQ9by5sZW5ndGgtMTtkPj0wOy0tZCl7dmFyIF89by5jaGFyQ29kZUF0KGQpO2lmKF89PT00Nyl7aWYoIW0pe3U9ZCsxO2JyZWFrfX1lbHNlIHk9PT0tMSYmKG09ITEseT1kKzEpLHY+PTAmJihfPT09Yy5jaGFyQ29kZUF0KHYpPy0tdj09LTEmJihmPWQpOih2PS0xLGY9eSkpfXJldHVybiB1PT09Zj9mPXk6Zj09PS0xJiYoZj1vLmxlbmd0aCksby5zbGljZSh1LGYpfWZvcihkPW8ubGVuZ3RoLTE7ZD49MDstLWQpaWYoby5jaGFyQ29kZUF0KGQpPT09NDcpe2lmKCFtKXt1PWQrMTticmVha319ZWxzZSBmPT09LTEmJihtPSExLGY9ZCsxKTtyZXR1cm4gZj09PS0xPyIiOm8uc2xpY2UodSxmKX0sZXh0bmFtZTpmdW5jdGlvbihvKXtzKG8pO2Zvcih2YXIgYz0tMSxkPTAsdT0tMSxmPSEwLG09MCx2PW8ubGVuZ3RoLTE7dj49MDstLXYpe3ZhciB5PW8uY2hhckNvZGVBdCh2KTtpZih5IT09NDcpdT09PS0xJiYoZj0hMSx1PXYrMSkseT09PTQ2P2M9PT0tMT9jPXY6bSE9PTEmJihtPTEpOmMhPT0tMSYmKG09LTEpO2Vsc2UgaWYoIWYpe2Q9disxO2JyZWFrfX1yZXR1cm4gYz09PS0xfHx1PT09LTF8fG09PT0wfHxtPT09MSYmYz09PXUtMSYmYz09PWQrMT8iIjpvLnNsaWNlKGMsdSl9LGZvcm1hdDpmdW5jdGlvbihvKXtpZihvPT09bnVsbHx8dHlwZW9mIG8hPSJvYmplY3QiKXRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSAicGF0aE9iamVjdCIgYXJndW1lbnQgbXVzdCBiZSBvZiB0eXBlIE9iamVjdC4gUmVjZWl2ZWQgdHlwZSAnK3R5cGVvZiBvKTtyZXR1cm4gZnVuY3Rpb24oYyxkKXt2YXIgdT1kLmRpcnx8ZC5yb290LGY9ZC5iYXNlfHwoZC5uYW1lfHwiIikrKGQuZXh0fHwiIik7cmV0dXJuIHU/dT09PWQucm9vdD91K2Y6dSsiLyIrZjpmfSgwLG8pfSxwYXJzZTpmdW5jdGlvbihvKXtzKG8pO3ZhciBjPXtyb290OiIiLGRpcjoiIixiYXNlOiIiLGV4dDoiIixuYW1lOiIifTtpZihvLmxlbmd0aD09PTApcmV0dXJuIGM7dmFyIGQsdT1vLmNoYXJDb2RlQXQoMCksZj11PT09NDc7Zj8oYy5yb290PSIvIixkPTEpOmQ9MDtmb3IodmFyIG09LTEsdj0wLHk9LTEsXz0hMCxrPW8ubGVuZ3RoLTEsRD0wO2s+PWQ7LS1rKWlmKCh1PW8uY2hhckNvZGVBdChrKSkhPT00Nyl5PT09LTEmJihfPSExLHk9aysxKSx1PT09NDY/bT09PS0xP209azpEIT09MSYmKEQ9MSk6bSE9PS0xJiYoRD0tMSk7ZWxzZSBpZighXyl7dj1rKzE7YnJlYWt9cmV0dXJuIG09PT0tMXx8eT09PS0xfHxEPT09MHx8RD09PTEmJm09PT15LTEmJm09PT12KzE/eSE9PS0xJiYoYy5iYXNlPWMubmFtZT12PT09MCYmZj9vLnNsaWNlKDEseSk6by5zbGljZSh2LHkpKToodj09PTAmJmY/KGMubmFtZT1vLnNsaWNlKDEsbSksYy5iYXNlPW8uc2xpY2UoMSx5KSk6KGMubmFtZT1vLnNsaWNlKHYsbSksYy5iYXNlPW8uc2xpY2Uodix5KSksYy5leHQ9by5zbGljZShtLHkpKSx2PjA/Yy5kaXI9by5zbGljZSgwLHYtMSk6ZiYmKGMuZGlyPSIvIiksY30sc2VwOiIvIixkZWxpbWl0ZXI6IjoiLHdpbjMyOm51bGwscG9zaXg6bnVsbH07bC5wb3NpeD1sLGkuZXhwb3J0cz1sfX0sdD17fTtmdW5jdGlvbiBuKGkpe3ZhciBzPXRbaV07aWYocyE9PXZvaWQgMClyZXR1cm4gcy5leHBvcnRzO3ZhciBhPXRbaV09e2V4cG9ydHM6e319O3JldHVybiBlW2ldKGEsYS5leHBvcnRzLG4pLGEuZXhwb3J0c31uLmQ9KGkscyk9Pntmb3IodmFyIGEgaW4gcyluLm8ocyxhKSYmIW4ubyhpLGEpJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoaSxhLHtlbnVtZXJhYmxlOiEwLGdldDpzW2FdfSl9LG4ubz0oaSxzKT0+T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGkscyksbi5yPWk9Pnt0eXBlb2YgU3ltYm9sPCJ1IiYmU3ltYm9sLnRvU3RyaW5nVGFnJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoaSxTeW1ib2wudG9TdHJpbmdUYWcse3ZhbHVlOiJNb2R1bGUifSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGksIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pfTt2YXIgcj17fTsoKCk9PntsZXQgaTtuLnIociksbi5kKHIse1VSSTooKT0+ZixVdGlsczooKT0+ZWV9KSx0eXBlb2YgcHJvY2Vzcz09Im9iamVjdCI/aT1wcm9jZXNzLnBsYXRmb3JtPT09IndpbjMyIjp0eXBlb2YgbmF2aWdhdG9yPT0ib2JqZWN0IiYmKGk9bmF2aWdhdG9yLnVzZXJBZ2VudC5pbmRleE9mKCJXaW5kb3dzIik+PTApO2NvbnN0IHM9L15cd1tcd1xkKy4tXSokLyxhPS9eXC8vLGw9L15cL1wvLztmdW5jdGlvbiBvKEEsdyl7aWYoIUEuc2NoZW1lJiZ3KXRocm93IG5ldyBFcnJvcihgW1VyaUVycm9yXTogU2NoZW1lIGlzIG1pc3Npbmc6IHtzY2hlbWU6ICIiLCBhdXRob3JpdHk6ICIke0EuYXV0aG9yaXR5fSIsIHBhdGg6ICIke0EucGF0aH0iLCBxdWVyeTogIiR7QS5xdWVyeX0iLCBmcmFnbWVudDogIiR7QS5mcmFnbWVudH0ifWApO2lmKEEuc2NoZW1lJiYhcy50ZXN0KEEuc2NoZW1lKSl0aHJvdyBuZXcgRXJyb3IoIltVcmlFcnJvcl06IFNjaGVtZSBjb250YWlucyBpbGxlZ2FsIGNoYXJhY3RlcnMuIik7aWYoQS5wYXRoKXtpZihBLmF1dGhvcml0eSl7aWYoIWEudGVzdChBLnBhdGgpKXRocm93IG5ldyBFcnJvcignW1VyaUVycm9yXTogSWYgYSBVUkkgY29udGFpbnMgYW4gYXV0aG9yaXR5IGNvbXBvbmVudCwgdGhlbiB0aGUgcGF0aCBjb21wb25lbnQgbXVzdCBlaXRoZXIgYmUgZW1wdHkgb3IgYmVnaW4gd2l0aCBhIHNsYXNoICgiLyIpIGNoYXJhY3RlcicpfWVsc2UgaWYobC50ZXN0KEEucGF0aCkpdGhyb3cgbmV3IEVycm9yKCdbVXJpRXJyb3JdOiBJZiBhIFVSSSBkb2VzIG5vdCBjb250YWluIGFuIGF1dGhvcml0eSBjb21wb25lbnQsIHRoZW4gdGhlIHBhdGggY2Fubm90IGJlZ2luIHdpdGggdHdvIHNsYXNoIGNoYXJhY3RlcnMgKCIvLyIpJyl9fWNvbnN0IGM9IiIsZD0iLyIsdT0vXigoW146Lz8jXSs/KTopPyhcL1wvKFteLz8jXSopKT8oW14/I10qKShcPyhbXiNdKikpPygjKC4qKSk/LztjbGFzcyBme2NvbnN0cnVjdG9yKHcsQyxGLEksTCx6PSExKXt3dCh0aGlzLCJzY2hlbWUiKTt3dCh0aGlzLCJhdXRob3JpdHkiKTt3dCh0aGlzLCJwYXRoIik7d3QodGhpcywicXVlcnkiKTt3dCh0aGlzLCJmcmFnbWVudCIpO3R5cGVvZiB3PT0ib2JqZWN0Ij8odGhpcy5zY2hlbWU9dy5zY2hlbWV8fGMsdGhpcy5hdXRob3JpdHk9dy5hdXRob3JpdHl8fGMsdGhpcy5wYXRoPXcucGF0aHx8Yyx0aGlzLnF1ZXJ5PXcucXVlcnl8fGMsdGhpcy5mcmFnbWVudD13LmZyYWdtZW50fHxjKToodGhpcy5zY2hlbWU9ZnVuY3Rpb24oQixZKXtyZXR1cm4gQnx8WT9COiJmaWxlIn0odyx6KSx0aGlzLmF1dGhvcml0eT1DfHxjLHRoaXMucGF0aD1mdW5jdGlvbihCLFkpe3N3aXRjaChCKXtjYXNlImh0dHBzIjpjYXNlImh0dHAiOmNhc2UiZmlsZSI6WT9ZWzBdIT09ZCYmKFk9ZCtZKTpZPWR9cmV0dXJuIFl9KHRoaXMuc2NoZW1lLEZ8fGMpLHRoaXMucXVlcnk9SXx8Yyx0aGlzLmZyYWdtZW50PUx8fGMsbyh0aGlzLHopKX1zdGF0aWMgaXNVcmkodyl7cmV0dXJuIHcgaW5zdGFuY2VvZiBmfHwhIXcmJnR5cGVvZiB3LmF1dGhvcml0eT09InN0cmluZyImJnR5cGVvZiB3LmZyYWdtZW50PT0ic3RyaW5nIiYmdHlwZW9mIHcucGF0aD09InN0cmluZyImJnR5cGVvZiB3LnF1ZXJ5PT0ic3RyaW5nIiYmdHlwZW9mIHcuc2NoZW1lPT0ic3RyaW5nIiYmdHlwZW9mIHcuZnNQYXRoPT0ic3RyaW5nIiYmdHlwZW9mIHcud2l0aD09ImZ1bmN0aW9uIiYmdHlwZW9mIHcudG9TdHJpbmc9PSJmdW5jdGlvbiJ9Z2V0IGZzUGF0aCgpe3JldHVybiBEKHRoaXMpfXdpdGgodyl7aWYoIXcpcmV0dXJuIHRoaXM7bGV0e3NjaGVtZTpDLGF1dGhvcml0eTpGLHBhdGg6SSxxdWVyeTpMLGZyYWdtZW50Onp9PXc7cmV0dXJuIEM9PT12b2lkIDA/Qz10aGlzLnNjaGVtZTpDPT09bnVsbCYmKEM9YyksRj09PXZvaWQgMD9GPXRoaXMuYXV0aG9yaXR5OkY9PT1udWxsJiYoRj1jKSxJPT09dm9pZCAwP0k9dGhpcy5wYXRoOkk9PT1udWxsJiYoST1jKSxMPT09dm9pZCAwP0w9dGhpcy5xdWVyeTpMPT09bnVsbCYmKEw9Yyksej09PXZvaWQgMD96PXRoaXMuZnJhZ21lbnQ6ej09PW51bGwmJih6PWMpLEM9PT10aGlzLnNjaGVtZSYmRj09PXRoaXMuYXV0aG9yaXR5JiZJPT09dGhpcy5wYXRoJiZMPT09dGhpcy5xdWVyeSYmej09PXRoaXMuZnJhZ21lbnQ/dGhpczpuZXcgdihDLEYsSSxMLHopfXN0YXRpYyBwYXJzZSh3LEM9ITEpe2NvbnN0IEY9dS5leGVjKHcpO3JldHVybiBGP25ldyB2KEZbMl18fGMsTShGWzRdfHxjKSxNKEZbNV18fGMpLE0oRls3XXx8YyksTShGWzldfHxjKSxDKTpuZXcgdihjLGMsYyxjLGMpfXN0YXRpYyBmaWxlKHcpe2xldCBDPWM7aWYoaSYmKHc9dy5yZXBsYWNlKC9cXC9nLGQpKSx3WzBdPT09ZCYmd1sxXT09PWQpe2NvbnN0IEY9dy5pbmRleE9mKGQsMik7Rj09PS0xPyhDPXcuc3Vic3RyaW5nKDIpLHc9ZCk6KEM9dy5zdWJzdHJpbmcoMixGKSx3PXcuc3Vic3RyaW5nKEYpfHxkKX1yZXR1cm4gbmV3IHYoImZpbGUiLEMsdyxjLGMpfXN0YXRpYyBmcm9tKHcpe2NvbnN0IEM9bmV3IHYody5zY2hlbWUsdy5hdXRob3JpdHksdy5wYXRoLHcucXVlcnksdy5mcmFnbWVudCk7cmV0dXJuIG8oQywhMCksQ310b1N0cmluZyh3PSExKXtyZXR1cm4gTih0aGlzLHcpfXRvSlNPTigpe3JldHVybiB0aGlzfXN0YXRpYyByZXZpdmUodyl7aWYodyl7aWYodyBpbnN0YW5jZW9mIGYpcmV0dXJuIHc7e2NvbnN0IEM9bmV3IHYodyk7cmV0dXJuIEMuX2Zvcm1hdHRlZD13LmV4dGVybmFsLEMuX2ZzUGF0aD13Ll9zZXA9PT1tP3cuZnNQYXRoOm51bGwsQ319cmV0dXJuIHd9fWNvbnN0IG09aT8xOnZvaWQgMDtjbGFzcyB2IGV4dGVuZHMgZntjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyk7d3QodGhpcywiX2Zvcm1hdHRlZCIsbnVsbCk7d3QodGhpcywiX2ZzUGF0aCIsbnVsbCl9Z2V0IGZzUGF0aCgpe3JldHVybiB0aGlzLl9mc1BhdGh8fCh0aGlzLl9mc1BhdGg9RCh0aGlzKSksdGhpcy5fZnNQYXRofXRvU3RyaW5nKEM9ITEpe3JldHVybiBDP04odGhpcywhMCk6KHRoaXMuX2Zvcm1hdHRlZHx8KHRoaXMuX2Zvcm1hdHRlZD1OKHRoaXMsITEpKSx0aGlzLl9mb3JtYXR0ZWQpfXRvSlNPTigpe2NvbnN0IEM9eyRtaWQ6MX07cmV0dXJuIHRoaXMuX2ZzUGF0aCYmKEMuZnNQYXRoPXRoaXMuX2ZzUGF0aCxDLl9zZXA9bSksdGhpcy5fZm9ybWF0dGVkJiYoQy5leHRlcm5hbD10aGlzLl9mb3JtYXR0ZWQpLHRoaXMucGF0aCYmKEMucGF0aD10aGlzLnBhdGgpLHRoaXMuc2NoZW1lJiYoQy5zY2hlbWU9dGhpcy5zY2hlbWUpLHRoaXMuYXV0aG9yaXR5JiYoQy5hdXRob3JpdHk9dGhpcy5hdXRob3JpdHkpLHRoaXMucXVlcnkmJihDLnF1ZXJ5PXRoaXMucXVlcnkpLHRoaXMuZnJhZ21lbnQmJihDLmZyYWdtZW50PXRoaXMuZnJhZ21lbnQpLEN9fWNvbnN0IHk9ezU4OiIlM0EiLDQ3OiIlMkYiLDYzOiIlM0YiLDM1OiIlMjMiLDkxOiIlNUIiLDkzOiIlNUQiLDY0OiIlNDAiLDMzOiIlMjEiLDM2OiIlMjQiLDM4OiIlMjYiLDM5OiIlMjciLDQwOiIlMjgiLDQxOiIlMjkiLDQyOiIlMkEiLDQzOiIlMkIiLDQ0OiIlMkMiLDU5OiIlM0IiLDYxOiIlM0QiLDMyOiIlMjAifTtmdW5jdGlvbiBfKEEsdyxDKXtsZXQgRixJPS0xO2ZvcihsZXQgTD0wO0w8QS5sZW5ndGg7TCsrKXtjb25zdCB6PUEuY2hhckNvZGVBdChMKTtpZih6Pj05NyYmejw9MTIyfHx6Pj02NSYmejw9OTB8fHo+PTQ4JiZ6PD01N3x8ej09PTQ1fHx6PT09NDZ8fHo9PT05NXx8ej09PTEyNnx8dyYmej09PTQ3fHxDJiZ6PT09OTF8fEMmJno9PT05M3x8QyYmej09PTU4KUkhPT0tMSYmKEYrPWVuY29kZVVSSUNvbXBvbmVudChBLnN1YnN0cmluZyhJLEwpKSxJPS0xKSxGIT09dm9pZCAwJiYoRis9QS5jaGFyQXQoTCkpO2Vsc2V7Rj09PXZvaWQgMCYmKEY9QS5zdWJzdHIoMCxMKSk7Y29uc3QgQj15W3pdO0IhPT12b2lkIDA/KEkhPT0tMSYmKEYrPWVuY29kZVVSSUNvbXBvbmVudChBLnN1YnN0cmluZyhJLEwpKSxJPS0xKSxGKz1CKTpJPT09LTEmJihJPUwpfX1yZXR1cm4gSSE9PS0xJiYoRis9ZW5jb2RlVVJJQ29tcG9uZW50KEEuc3Vic3RyaW5nKEkpKSksRiE9PXZvaWQgMD9GOkF9ZnVuY3Rpb24gayhBKXtsZXQgdztmb3IobGV0IEM9MDtDPEEubGVuZ3RoO0MrKyl7Y29uc3QgRj1BLmNoYXJDb2RlQXQoQyk7Rj09PTM1fHxGPT09NjM/KHc9PT12b2lkIDAmJih3PUEuc3Vic3RyKDAsQykpLHcrPXlbRl0pOnchPT12b2lkIDAmJih3Kz1BW0NdKX1yZXR1cm4gdyE9PXZvaWQgMD93OkF9ZnVuY3Rpb24gRChBLHcpe2xldCBDO3JldHVybiBDPUEuYXV0aG9yaXR5JiZBLnBhdGgubGVuZ3RoPjEmJkEuc2NoZW1lPT09ImZpbGUiP2AvLyR7QS5hdXRob3JpdHl9JHtBLnBhdGh9YDpBLnBhdGguY2hhckNvZGVBdCgwKT09PTQ3JiYoQS5wYXRoLmNoYXJDb2RlQXQoMSk+PTY1JiZBLnBhdGguY2hhckNvZGVBdCgxKTw9OTB8fEEucGF0aC5jaGFyQ29kZUF0KDEpPj05NyYmQS5wYXRoLmNoYXJDb2RlQXQoMSk8PTEyMikmJkEucGF0aC5jaGFyQ29kZUF0KDIpPT09NTg/QS5wYXRoWzFdLnRvTG93ZXJDYXNlKCkrQS5wYXRoLnN1YnN0cigyKTpBLnBhdGgsaSYmKEM9Qy5yZXBsYWNlKC9cLy9nLCJcXCIpKSxDfWZ1bmN0aW9uIE4oQSx3KXtjb25zdCBDPXc/azpfO2xldCBGPSIiLHtzY2hlbWU6SSxhdXRob3JpdHk6TCxwYXRoOnoscXVlcnk6QixmcmFnbWVudDpZfT1BO2lmKEkmJihGKz1JLEYrPSI6IiksKEx8fEk9PT0iZmlsZSIpJiYoRis9ZCxGKz1kKSxMKXtsZXQgcT1MLmluZGV4T2YoIkAiKTtpZihxIT09LTEpe2NvbnN0IHhlPUwuc3Vic3RyKDAscSk7TD1MLnN1YnN0cihxKzEpLHE9eGUubGFzdEluZGV4T2YoIjoiKSxxPT09LTE/Ris9Qyh4ZSwhMSwhMSk6KEYrPUMoeGUuc3Vic3RyKDAscSksITEsITEpLEYrPSI6IixGKz1DKHhlLnN1YnN0cihxKzEpLCExLCEwKSksRis9IkAifUw9TC50b0xvd2VyQ2FzZSgpLHE9TC5sYXN0SW5kZXhPZigiOiIpLHE9PT0tMT9GKz1DKEwsITEsITApOihGKz1DKEwuc3Vic3RyKDAscSksITEsITApLEYrPUwuc3Vic3RyKHEpKX1pZih6KXtpZih6Lmxlbmd0aD49MyYmei5jaGFyQ29kZUF0KDApPT09NDcmJnouY2hhckNvZGVBdCgyKT09PTU4KXtjb25zdCBxPXouY2hhckNvZGVBdCgxKTtxPj02NSYmcTw9OTAmJih6PWAvJHtTdHJpbmcuZnJvbUNoYXJDb2RlKHErMzIpfToke3ouc3Vic3RyKDMpfWApfWVsc2UgaWYoei5sZW5ndGg+PTImJnouY2hhckNvZGVBdCgxKT09PTU4KXtjb25zdCBxPXouY2hhckNvZGVBdCgwKTtxPj02NSYmcTw9OTAmJih6PWAke1N0cmluZy5mcm9tQ2hhckNvZGUocSszMil9OiR7ei5zdWJzdHIoMil9YCl9Ris9Qyh6LCEwLCExKX1yZXR1cm4gQiYmKEYrPSI/IixGKz1DKEIsITEsITEpKSxZJiYoRis9IiMiLEYrPXc/WTpfKFksITEsITEpKSxGfWZ1bmN0aW9uIEUoQSl7dHJ5e3JldHVybiBkZWNvZGVVUklDb21wb25lbnQoQSl9Y2F0Y2h7cmV0dXJuIEEubGVuZ3RoPjM/QS5zdWJzdHIoMCwzKStFKEEuc3Vic3RyKDMpKTpBfX1jb25zdCBSPS8oJVswLTlBLVphLXpdWzAtOUEtWmEtel0pKy9nO2Z1bmN0aW9uIE0oQSl7cmV0dXJuIEEubWF0Y2goUik/QS5yZXBsYWNlKFIsdz0+RSh3KSk6QX12YXIgVD1uKDQ3MCk7Y29uc3QgUD1ULnBvc2l4fHxULCQ9Ii8iO3ZhciBlZTsoZnVuY3Rpb24oQSl7QS5qb2luUGF0aD1mdW5jdGlvbih3LC4uLkMpe3JldHVybiB3LndpdGgoe3BhdGg6UC5qb2luKHcucGF0aCwuLi5DKX0pfSxBLnJlc29sdmVQYXRoPWZ1bmN0aW9uKHcsLi4uQyl7bGV0IEY9dy5wYXRoLEk9ITE7RlswXSE9PSQmJihGPSQrRixJPSEwKTtsZXQgTD1QLnJlc29sdmUoRiwuLi5DKTtyZXR1cm4gSSYmTFswXT09PSQmJiF3LmF1dGhvcml0eSYmKEw9TC5zdWJzdHJpbmcoMSkpLHcud2l0aCh7cGF0aDpMfSl9LEEuZGlybmFtZT1mdW5jdGlvbih3KXtpZih3LnBhdGgubGVuZ3RoPT09MHx8dy5wYXRoPT09JClyZXR1cm4gdztsZXQgQz1QLmRpcm5hbWUody5wYXRoKTtyZXR1cm4gQy5sZW5ndGg9PT0xJiZDLmNoYXJDb2RlQXQoMCk9PT00NiYmKEM9IiIpLHcud2l0aCh7cGF0aDpDfSl9LEEuYmFzZW5hbWU9ZnVuY3Rpb24odyl7cmV0dXJuIFAuYmFzZW5hbWUody5wYXRoKX0sQS5leHRuYW1lPWZ1bmN0aW9uKHcpe3JldHVybiBQLmV4dG5hbWUody5wYXRoKX19KShlZXx8KGVlPXt9KSl9KSgpLERjPXJ9KSgpO3ZhcntVUkk6ZXMsVXRpbHM6ZnR9PURjO2Z1bmN0aW9uIHRzKGUpe3JldHVybiBmdC5kaXJuYW1lKGVzLnBhcnNlKGUpKS50b1N0cmluZyghMCl9ZnVuY3Rpb24gSnQoZSwuLi50KXtyZXR1cm4gZnQuam9pblBhdGgoZXMucGFyc2UoZSksLi4udCkudG9TdHJpbmcoITApfXZhciBzbT1jbGFzc3tjb25zdHJ1Y3RvcihlKXt0aGlzLnJlYWREaXJlY3Rvcnk9ZSx0aGlzLmxpdGVyYWxDb21wbGV0aW9ucz1bXSx0aGlzLmltcG9ydENvbXBsZXRpb25zPVtdfW9uQ3NzVVJJTGl0ZXJhbFZhbHVlKGUpe3RoaXMubGl0ZXJhbENvbXBsZXRpb25zLnB1c2goZSl9b25Dc3NJbXBvcnRQYXRoKGUpe3RoaXMuaW1wb3J0Q29tcGxldGlvbnMucHVzaChlKX1hc3luYyBjb21wdXRlQ29tcGxldGlvbnMoZSx0KXtjb25zdCBuPXtpdGVtczpbXSxpc0luY29tcGxldGU6ITF9O2Zvcihjb25zdCByIG9mIHRoaXMubGl0ZXJhbENvbXBsZXRpb25zKXtjb25zdCBpPXIudXJpVmFsdWUscz1ucyhpKTtpZihzPT09Ii4ifHxzPT09Ii4uIiluLmlzSW5jb21wbGV0ZT0hMDtlbHNle2NvbnN0IGE9YXdhaXQgdGhpcy5wcm92aWRlUGF0aFN1Z2dlc3Rpb25zKGksci5wb3NpdGlvbixyLnJhbmdlLGUsdCk7Zm9yKGxldCBsIG9mIGEpbi5pdGVtcy5wdXNoKGwpfX1mb3IoY29uc3QgciBvZiB0aGlzLmltcG9ydENvbXBsZXRpb25zKXtjb25zdCBpPXIucGF0aFZhbHVlLHM9bnMoaSk7aWYocz09PSIuInx8cz09PSIuLiIpbi5pc0luY29tcGxldGU9ITA7ZWxzZXtsZXQgYT1hd2FpdCB0aGlzLnByb3ZpZGVQYXRoU3VnZ2VzdGlvbnMoaSxyLnBvc2l0aW9uLHIucmFuZ2UsZSx0KTtlLmxhbmd1YWdlSWQ9PT0ic2NzcyImJmEuZm9yRWFjaChsPT57dWUobC5sYWJlbCwiXyIpJiZlbChsLmxhYmVsLCIuc2NzcyIpJiYobC50ZXh0RWRpdD9sLnRleHRFZGl0Lm5ld1RleHQ9bC5sYWJlbC5zbGljZSgxLC01KTpsLmxhYmVsPWwubGFiZWwuc2xpY2UoMSwtNSkpfSk7Zm9yKGxldCBsIG9mIGEpbi5pdGVtcy5wdXNoKGwpfX1yZXR1cm4gbn1hc3luYyBwcm92aWRlUGF0aFN1Z2dlc3Rpb25zKGUsdCxuLHIsaSl7Y29uc3Qgcz1ucyhlKSxhPXVlKGUsIiciKXx8dWUoZSwnIicpLGw9YT9zLnNsaWNlKDAsdC5jaGFyYWN0ZXItKG4uc3RhcnQuY2hhcmFjdGVyKzEpKTpzLnNsaWNlKDAsdC5jaGFyYWN0ZXItbi5zdGFydC5jaGFyYWN0ZXIpLG89ci51cmksYz1hP2NtKG4sMSwtMSk6bixkPW9tKGwscyxjKSx1PWwuc3Vic3RyaW5nKDAsbC5sYXN0SW5kZXhPZigiLyIpKzEpO2xldCBmPWkucmVzb2x2ZVJlZmVyZW5jZSh1fHwiLiIsbyk7aWYoZil0cnl7Y29uc3QgbT1bXSx2PWF3YWl0IHRoaXMucmVhZERpcmVjdG9yeShmKTtmb3IoY29uc3RbeSxfXW9mIHYpeS5jaGFyQ29kZUF0KDApIT09YW0mJihfPT09Um4uRGlyZWN0b3J5fHxKdChmLHkpIT09bykmJm0ucHVzaChsbSh5LF89PT1Sbi5EaXJlY3RvcnksZCkpO3JldHVybiBtfWNhdGNoe31yZXR1cm5bXX19LGFtPTQ2O2Z1bmN0aW9uIG5zKGUpe3JldHVybiB1ZShlLCInIil8fHVlKGUsJyInKT9lLnNsaWNlKDEsLTEpOmV9ZnVuY3Rpb24gb20oZSx0LG4pe2xldCByO2NvbnN0IGk9ZS5sYXN0SW5kZXhPZigiLyIpO2lmKGk9PT0tMSlyPW47ZWxzZXtjb25zdCBzPXQuc2xpY2UoaSsxKSxhPXhyKG4uZW5kLC1zLmxlbmd0aCksbD1zLmluZGV4T2YoIiAiKTtsZXQgbztsIT09LTE/bz14cihhLGwpOm89bi5lbmQscj1KLmNyZWF0ZShhLG8pfXJldHVybiByfWZ1bmN0aW9uIGxtKGUsdCxuKXtyZXR1cm4gdD8oZT1lKyIvIix7bGFiZWw6eXIoZSksa2luZDpWLkZvbGRlcix0ZXh0RWRpdDpVLnJlcGxhY2Uobix5cihlKSksY29tbWFuZDp7dGl0bGU6IlN1Z2dlc3QiLGNvbW1hbmQ6ImVkaXRvci5hY3Rpb24udHJpZ2dlclN1Z2dlc3QifX0pOntsYWJlbDp5cihlKSxraW5kOlYuRmlsZSx0ZXh0RWRpdDpVLnJlcGxhY2Uobix5cihlKSl9fWZ1bmN0aW9uIHlyKGUpe3JldHVybiBlLnJlcGxhY2UoLyhcc3xcKHxcKXwsfCJ8JykvZywiXFwkMSIpfWZ1bmN0aW9uIHhyKGUsdCl7cmV0dXJuIHZlLmNyZWF0ZShlLmxpbmUsZS5jaGFyYWN0ZXIrdCl9ZnVuY3Rpb24gY20oZSx0LG4pe2NvbnN0IHI9eHIoZS5zdGFydCx0KSxpPXhyKGUuZW5kLG4pO3JldHVybiBKLmNyZWF0ZShyLGkpfXZhciBaZT1SZS5TbmlwcGV0LEljPXt0aXRsZToiU3VnZ2VzdCIsY29tbWFuZDoiZWRpdG9yLmFjdGlvbi50cmlnZ2VyU3VnZ2VzdCJ9LEJlOyhmdW5jdGlvbihlKXtlLkVudW1zPSIgIixlLk5vcm1hbD0iZCIsZS5WZW5kb3JQcmVmaXhlZD0ieCIsZS5UZXJtPSJ5IixlLlZhcmlhYmxlPSJ6In0pKEJlfHwoQmU9e30pKTt2YXIgcnM9Y2xhc3N7Y29uc3RydWN0b3IoZT1udWxsLHQsbil7dGhpcy52YXJpYWJsZVByZWZpeD1lLHRoaXMubHNPcHRpb25zPXQsdGhpcy5jc3NEYXRhTWFuYWdlcj1uLHRoaXMuY29tcGxldGlvblBhcnRpY2lwYW50cz1bXX1jb25maWd1cmUoZSl7dGhpcy5kZWZhdWx0U2V0dGluZ3M9ZX1nZXRTeW1ib2xDb250ZXh0KCl7cmV0dXJuIHRoaXMuc3ltYm9sQ29udGV4dHx8KHRoaXMuc3ltYm9sQ29udGV4dD1uZXcgWmkodGhpcy5zdHlsZVNoZWV0KSksdGhpcy5zeW1ib2xDb250ZXh0fXNldENvbXBsZXRpb25QYXJ0aWNpcGFudHMoZSl7dGhpcy5jb21wbGV0aW9uUGFydGljaXBhbnRzPWV8fFtdfWFzeW5jIGRvQ29tcGxldGUyKGUsdCxuLHIsaT10aGlzLmRlZmF1bHRTZXR0aW5ncyl7aWYoIXRoaXMubHNPcHRpb25zLmZpbGVTeXN0ZW1Qcm92aWRlcnx8IXRoaXMubHNPcHRpb25zLmZpbGVTeXN0ZW1Qcm92aWRlci5yZWFkRGlyZWN0b3J5KXJldHVybiB0aGlzLmRvQ29tcGxldGUoZSx0LG4saSk7Y29uc3Qgcz1uZXcgc20odGhpcy5sc09wdGlvbnMuZmlsZVN5c3RlbVByb3ZpZGVyLnJlYWREaXJlY3RvcnkpLGE9dGhpcy5jb21wbGV0aW9uUGFydGljaXBhbnRzO3RoaXMuY29tcGxldGlvblBhcnRpY2lwYW50cz1bc10uY29uY2F0KGEpO2NvbnN0IGw9dGhpcy5kb0NvbXBsZXRlKGUsdCxuLGkpO3RyeXtjb25zdCBvPWF3YWl0IHMuY29tcHV0ZUNvbXBsZXRpb25zKGUscik7cmV0dXJue2lzSW5jb21wbGV0ZTpsLmlzSW5jb21wbGV0ZXx8by5pc0luY29tcGxldGUsaXRlbURlZmF1bHRzOmwuaXRlbURlZmF1bHRzLGl0ZW1zOm8uaXRlbXMuY29uY2F0KGwuaXRlbXMpfX1maW5hbGx5e3RoaXMuY29tcGxldGlvblBhcnRpY2lwYW50cz1hfX1kb0NvbXBsZXRlKGUsdCxuLHIpe3RoaXMub2Zmc2V0PWUub2Zmc2V0QXQodCksdGhpcy5wb3NpdGlvbj10LHRoaXMuY3VycmVudFdvcmQ9cG0oZSx0aGlzLm9mZnNldCksdGhpcy5kZWZhdWx0UmVwbGFjZVJhbmdlPUouY3JlYXRlKHZlLmNyZWF0ZSh0aGlzLnBvc2l0aW9uLmxpbmUsdGhpcy5wb3NpdGlvbi5jaGFyYWN0ZXItdGhpcy5jdXJyZW50V29yZC5sZW5ndGgpLHRoaXMucG9zaXRpb24pLHRoaXMudGV4dERvY3VtZW50PWUsdGhpcy5zdHlsZVNoZWV0PW4sdGhpcy5kb2N1bWVudFNldHRpbmdzPXI7dHJ5e2NvbnN0IGk9e2lzSW5jb21wbGV0ZTohMSxpdGVtRGVmYXVsdHM6e2VkaXRSYW5nZTp7c3RhcnQ6e2xpbmU6dC5saW5lLGNoYXJhY3Rlcjp0LmNoYXJhY3Rlci10aGlzLmN1cnJlbnRXb3JkLmxlbmd0aH0sZW5kOnR9fSxpdGVtczpbXX07dGhpcy5ub2RlUGF0aD1faSh0aGlzLnN0eWxlU2hlZXQsdGhpcy5vZmZzZXQpO2ZvcihsZXQgcz10aGlzLm5vZGVQYXRoLmxlbmd0aC0xO3M+PTA7cy0tKXtjb25zdCBhPXRoaXMubm9kZVBhdGhbc107aWYoYSBpbnN0YW5jZW9mIEZpKXRoaXMuZ2V0Q29tcGxldGlvbnNGb3JEZWNsYXJhdGlvblByb3BlcnR5KGEuZ2V0UGFyZW50KCksaSk7ZWxzZSBpZihhIGluc3RhbmNlb2YgY2wpYS5wYXJlbnQgaW5zdGFuY2VvZiBMaT90aGlzLmdldFZhcmlhYmxlUHJvcG9zYWxzKG51bGwsaSk6dGhpcy5nZXRDb21wbGV0aW9uc0ZvckV4cHJlc3Npb24oYSxpKTtlbHNlIGlmKGEgaW5zdGFuY2VvZiBxdCl7Y29uc3QgbD1hLmZpbmRBUGFyZW50KGIuRXh0ZW5kc1JlZmVyZW5jZSxiLlJ1bGVzZXQpO2lmKGwpaWYobC50eXBlPT09Yi5FeHRlbmRzUmVmZXJlbmNlKXRoaXMuZ2V0Q29tcGxldGlvbnNGb3JFeHRlbmRzUmVmZXJlbmNlKGwsYSxpKTtlbHNle2NvbnN0IG89bDt0aGlzLmdldENvbXBsZXRpb25zRm9yU2VsZWN0b3IobyxvJiZvLmlzTmVzdGVkKCksaSl9fWVsc2UgaWYoYSBpbnN0YW5jZW9mIGp0KXRoaXMuZ2V0Q29tcGxldGlvbnNGb3JGdW5jdGlvbkFyZ3VtZW50KGEsYS5nZXRQYXJlbnQoKSxpKTtlbHNlIGlmKGEgaW5zdGFuY2VvZiBraSl0aGlzLmdldENvbXBsZXRpb25zRm9yRGVjbGFyYXRpb25zKGEsaSk7ZWxzZSBpZihhIGluc3RhbmNlb2YgaXIpdGhpcy5nZXRDb21wbGV0aW9uc0ZvclZhcmlhYmxlRGVjbGFyYXRpb24oYSxpKTtlbHNlIGlmKGEgaW5zdGFuY2VvZiBDdCl0aGlzLmdldENvbXBsZXRpb25zRm9yUnVsZVNldChhLGkpO2Vsc2UgaWYoYSBpbnN0YW5jZW9mIExpKXRoaXMuZ2V0Q29tcGxldGlvbnNGb3JJbnRlcnBvbGF0aW9uKGEsaSk7ZWxzZSBpZihhIGluc3RhbmNlb2YgcnIpdGhpcy5nZXRDb21wbGV0aW9uc0ZvckZ1bmN0aW9uRGVjbGFyYXRpb24oYSxpKTtlbHNlIGlmKGEgaW5zdGFuY2VvZiBzcil0aGlzLmdldENvbXBsZXRpb25zRm9yTWl4aW5SZWZlcmVuY2UoYSxpKTtlbHNlIGlmKGEgaW5zdGFuY2VvZiBTbil0aGlzLmdldENvbXBsZXRpb25zRm9yRnVuY3Rpb25Bcmd1bWVudChudWxsLGEsaSk7ZWxzZSBpZihhIGluc3RhbmNlb2YgRGkpdGhpcy5nZXRDb21wbGV0aW9uc0ZvclN1cHBvcnRzKGEsaSk7ZWxzZSBpZihhIGluc3RhbmNlb2YgQ24pdGhpcy5nZXRDb21wbGV0aW9uc0ZvclN1cHBvcnRzQ29uZGl0aW9uKGEsaSk7ZWxzZSBpZihhIGluc3RhbmNlb2YgX24pdGhpcy5nZXRDb21wbGV0aW9uc0ZvckV4dGVuZHNSZWZlcmVuY2UoYSxudWxsLGkpO2Vsc2UgaWYoYS50eXBlPT09Yi5VUklMaXRlcmFsKXRoaXMuZ2V0Q29tcGxldGlvbkZvclVyaUxpdGVyYWxWYWx1ZShhLGkpO2Vsc2UgaWYoYS5wYXJlbnQ9PT1udWxsKXRoaXMuZ2V0Q29tcGxldGlvbkZvclRvcExldmVsKGkpO2Vsc2UgaWYoYS50eXBlPT09Yi5TdHJpbmdMaXRlcmFsJiZ0aGlzLmlzSW1wb3J0UGF0aFBhcmVudChhLnBhcmVudC50eXBlKSl0aGlzLmdldENvbXBsZXRpb25Gb3JJbXBvcnRQYXRoKGEsaSk7ZWxzZSBjb250aW51ZTtpZihpLml0ZW1zLmxlbmd0aD4wfHx0aGlzLm9mZnNldD5hLm9mZnNldClyZXR1cm4gdGhpcy5maW5hbGl6ZShpKX1yZXR1cm4gdGhpcy5nZXRDb21wbGV0aW9uc0ZvclN0eWxlc2hlZXQoaSksaS5pdGVtcy5sZW5ndGg9PT0wJiZ0aGlzLnZhcmlhYmxlUHJlZml4JiZ0aGlzLmN1cnJlbnRXb3JkLmluZGV4T2YodGhpcy52YXJpYWJsZVByZWZpeCk9PT0wJiZ0aGlzLmdldFZhcmlhYmxlUHJvcG9zYWxzKG51bGwsaSksdGhpcy5maW5hbGl6ZShpKX1maW5hbGx5e3RoaXMucG9zaXRpb249bnVsbCx0aGlzLmN1cnJlbnRXb3JkPW51bGwsdGhpcy50ZXh0RG9jdW1lbnQ9bnVsbCx0aGlzLnN0eWxlU2hlZXQ9bnVsbCx0aGlzLnN5bWJvbENvbnRleHQ9bnVsbCx0aGlzLmRlZmF1bHRSZXBsYWNlUmFuZ2U9bnVsbCx0aGlzLm5vZGVQYXRoPW51bGx9fWlzSW1wb3J0UGF0aFBhcmVudChlKXtyZXR1cm4gZT09PWIuSW1wb3J0fWZpbmFsaXplKGUpe3JldHVybiBlfWZpbmRJbk5vZGVQYXRoKC4uLmUpe2ZvcihsZXQgdD10aGlzLm5vZGVQYXRoLmxlbmd0aC0xO3Q+PTA7dC0tKXtjb25zdCBuPXRoaXMubm9kZVBhdGhbdF07aWYoZS5pbmRleE9mKG4udHlwZSkhPT0tMSlyZXR1cm4gbn1yZXR1cm4gbnVsbH1nZXRDb21wbGV0aW9uc0ZvckRlY2xhcmF0aW9uUHJvcGVydHkoZSx0KXtyZXR1cm4gdGhpcy5nZXRQcm9wZXJ0eVByb3Bvc2FscyhlLHQpfWdldFByb3BlcnR5UHJvcG9zYWxzKGUsdCl7Y29uc3Qgbj10aGlzLmlzVHJpZ2dlclByb3BlcnR5VmFsdWVDb21wbGV0aW9uRW5hYmxlZCxyPXRoaXMuaXNDb21wbGV0ZVByb3BlcnR5V2l0aFNlbWljb2xvbkVuYWJsZWQ7cmV0dXJuIHRoaXMuY3NzRGF0YU1hbmFnZXIuZ2V0UHJvcGVydGllcygpLmZvckVhY2gocz0+e2xldCBhLGwsbz0hMTtlPyhhPXRoaXMuZ2V0Q29tcGxldGlvblJhbmdlKGUuZ2V0UHJvcGVydHkoKSksbD1zLm5hbWUsQWUoZS5jb2xvblBvc2l0aW9uKXx8KGwrPSI6ICIsbz0hMCkpOihhPXRoaXMuZ2V0Q29tcGxldGlvblJhbmdlKG51bGwpLGw9cy5uYW1lKyI6ICIsbz0hMCksIWUmJnImJihsKz0iJDA7IiksZSYmIWUuc2VtaWNvbG9uUG9zaXRpb24mJnImJnRoaXMub2Zmc2V0Pj10aGlzLnRleHREb2N1bWVudC5vZmZzZXRBdChhLmVuZCkmJihsKz0iJDA7Iik7Y29uc3QgYz17bGFiZWw6cy5uYW1lLGRvY3VtZW50YXRpb246cHQocyx0aGlzLmRvZXNTdXBwb3J0TWFya2Rvd24oKSksdGFnczpObihzKT9ba3QuRGVwcmVjYXRlZF06W10sdGV4dEVkaXQ6VS5yZXBsYWNlKGEsbCksaW5zZXJ0VGV4dEZvcm1hdDpSZS5TbmlwcGV0LGtpbmQ6Vi5Qcm9wZXJ0eX07cy5yZXN0cmljdGlvbnN8fChvPSExKSxuJiZvJiYoYy5jb21tYW5kPUljKTtjb25zdCB1PSgyNTUtKHR5cGVvZiBzLnJlbGV2YW5jZT09Im51bWJlciI/TWF0aC5taW4oTWF0aC5tYXgocy5yZWxldmFuY2UsMCksOTkpOjUwKSkudG9TdHJpbmcoMTYpLGY9dWUocy5uYW1lLCItIik/QmUuVmVuZG9yUHJlZml4ZWQ6QmUuTm9ybWFsO2Muc29ydFRleHQ9ZisiXyIrdSx0Lml0ZW1zLnB1c2goYyl9KSx0aGlzLmNvbXBsZXRpb25QYXJ0aWNpcGFudHMuZm9yRWFjaChzPT57cy5vbkNzc1Byb3BlcnR5JiZzLm9uQ3NzUHJvcGVydHkoe3Byb3BlcnR5TmFtZTp0aGlzLmN1cnJlbnRXb3JkLHJhbmdlOnRoaXMuZGVmYXVsdFJlcGxhY2VSYW5nZX0pfSksdH1nZXQgaXNUcmlnZ2VyUHJvcGVydHlWYWx1ZUNvbXBsZXRpb25FbmFibGVkKCl7cmV0dXJuIHRoaXMuZG9jdW1lbnRTZXR0aW5ncz8udHJpZ2dlclByb3BlcnR5VmFsdWVDb21wbGV0aW9uPz8hMH1nZXQgaXNDb21wbGV0ZVByb3BlcnR5V2l0aFNlbWljb2xvbkVuYWJsZWQoKXtyZXR1cm4gdGhpcy5kb2N1bWVudFNldHRpbmdzPy5jb21wbGV0ZVByb3BlcnR5V2l0aFNlbWljb2xvbj8/ITB9Z2V0Q29tcGxldGlvbnNGb3JEZWNsYXJhdGlvblZhbHVlKGUsdCl7Y29uc3Qgbj1lLmdldEZ1bGxQcm9wZXJ0eU5hbWUoKSxyPXRoaXMuY3NzRGF0YU1hbmFnZXIuZ2V0UHJvcGVydHkobik7bGV0IGk9ZS5nZXRWYWx1ZSgpfHxudWxsO2Zvcig7aSYmaS5oYXNDaGlsZHJlbigpOylpPWkuZmluZENoaWxkQXRPZmZzZXQodGhpcy5vZmZzZXQsITEpO2lmKHRoaXMuY29tcGxldGlvblBhcnRpY2lwYW50cy5mb3JFYWNoKHM9PntzLm9uQ3NzUHJvcGVydHlWYWx1ZSYmcy5vbkNzc1Byb3BlcnR5VmFsdWUoe3Byb3BlcnR5TmFtZTpuLHByb3BlcnR5VmFsdWU6dGhpcy5jdXJyZW50V29yZCxyYW5nZTp0aGlzLmdldENvbXBsZXRpb25SYW5nZShpKX0pfSkscil7aWYoci5yZXN0cmljdGlvbnMpZm9yKGNvbnN0IHMgb2Ygci5yZXN0cmljdGlvbnMpc3dpdGNoKHMpe2Nhc2UiY29sb3IiOnRoaXMuZ2V0Q29sb3JQcm9wb3NhbHMocixpLHQpO2JyZWFrO2Nhc2UicG9zaXRpb24iOnRoaXMuZ2V0UG9zaXRpb25Qcm9wb3NhbHMocixpLHQpO2JyZWFrO2Nhc2UicmVwZWF0Ijp0aGlzLmdldFJlcGVhdFN0eWxlUHJvcG9zYWxzKHIsaSx0KTticmVhaztjYXNlImxpbmUtc3R5bGUiOnRoaXMuZ2V0TGluZVN0eWxlUHJvcG9zYWxzKHIsaSx0KTticmVhaztjYXNlImxpbmUtd2lkdGgiOnRoaXMuZ2V0TGluZVdpZHRoUHJvcG9zYWxzKHIsaSx0KTticmVhaztjYXNlImdlb21ldHJ5LWJveCI6dGhpcy5nZXRHZW9tZXRyeUJveFByb3Bvc2FscyhyLGksdCk7YnJlYWs7Y2FzZSJib3giOnRoaXMuZ2V0Qm94UHJvcG9zYWxzKHIsaSx0KTticmVhaztjYXNlImltYWdlIjp0aGlzLmdldEltYWdlUHJvcG9zYWxzKHIsaSx0KTticmVhaztjYXNlInRpbWluZy1mdW5jdGlvbiI6dGhpcy5nZXRUaW1pbmdGdW5jdGlvblByb3Bvc2FscyhyLGksdCk7YnJlYWs7Y2FzZSJzaGFwZSI6dGhpcy5nZXRCYXNpY1NoYXBlUHJvcG9zYWxzKHIsaSx0KTticmVha310aGlzLmdldFZhbHVlRW51bVByb3Bvc2FscyhyLGksdCksdGhpcy5nZXRDU1NXaWRlS2V5d29yZFByb3Bvc2FscyhyLGksdCksdGhpcy5nZXRVbml0UHJvcG9zYWxzKHIsaSx0KX1lbHNle2NvbnN0IHM9aG0odGhpcy5zdHlsZVNoZWV0LGUpO2Zvcihjb25zdCBhIG9mIHMuZ2V0RW50cmllcygpKXQuaXRlbXMucHVzaCh7bGFiZWw6YSx0ZXh0RWRpdDpVLnJlcGxhY2UodGhpcy5nZXRDb21wbGV0aW9uUmFuZ2UoaSksYSksa2luZDpWLlZhbHVlfSl9cmV0dXJuIHRoaXMuZ2V0VmFyaWFibGVQcm9wb3NhbHMoaSx0KSx0aGlzLmdldFRlcm1Qcm9wb3NhbHMocixpLHQpLHR9Z2V0VmFsdWVFbnVtUHJvcG9zYWxzKGUsdCxuKXtpZihlLnZhbHVlcylmb3IoY29uc3QgciBvZiBlLnZhbHVlcyl7bGV0IGk9ci5uYW1lLHM7aWYoZWwoaSwiKSIpKXtjb25zdCBvPWkubGFzdEluZGV4T2YoIigiKTtvIT09LTEmJihpPWkuc3Vic3RyaW5nKDAsbysxKSsiJDEiK2kuc3Vic3RyaW5nKG8rMSkscz1aZSl9bGV0IGE9QmUuRW51bXM7dWUoci5uYW1lLCItIikmJihhKz1CZS5WZW5kb3JQcmVmaXhlZCk7Y29uc3QgbD17bGFiZWw6ci5uYW1lLGRvY3VtZW50YXRpb246cHQocix0aGlzLmRvZXNTdXBwb3J0TWFya2Rvd24oKSksdGFnczpObihlKT9ba3QuRGVwcmVjYXRlZF06W10sdGV4dEVkaXQ6VS5yZXBsYWNlKHRoaXMuZ2V0Q29tcGxldGlvblJhbmdlKHQpLGkpLHNvcnRUZXh0OmEsa2luZDpWLlZhbHVlLGluc2VydFRleHRGb3JtYXQ6c307bi5pdGVtcy5wdXNoKGwpfXJldHVybiBufWdldENTU1dpZGVLZXl3b3JkUHJvcG9zYWxzKGUsdCxuKXtmb3IoY29uc3QgciBpbiBTYyluLml0ZW1zLnB1c2goe2xhYmVsOnIsZG9jdW1lbnRhdGlvbjpTY1tyXSx0ZXh0RWRpdDpVLnJlcGxhY2UodGhpcy5nZXRDb21wbGV0aW9uUmFuZ2UodCksciksa2luZDpWLlZhbHVlfSk7Zm9yKGNvbnN0IHIgaW4gQ2Mpe2NvbnN0IGk9WHQocik7bi5pdGVtcy5wdXNoKHtsYWJlbDpyLGRvY3VtZW50YXRpb246Q2Nbcl0sdGV4dEVkaXQ6VS5yZXBsYWNlKHRoaXMuZ2V0Q29tcGxldGlvblJhbmdlKHQpLGkpLGtpbmQ6Vi5GdW5jdGlvbixpbnNlcnRUZXh0Rm9ybWF0OlplLGNvbW1hbmQ6dWUociwidmFyIik/SWM6dm9pZCAwfSl9cmV0dXJuIG59Z2V0Q29tcGxldGlvbnNGb3JJbnRlcnBvbGF0aW9uKGUsdCl7cmV0dXJuIHRoaXMub2Zmc2V0Pj1lLm9mZnNldCsyJiZ0aGlzLmdldFZhcmlhYmxlUHJvcG9zYWxzKG51bGwsdCksdH1nZXRWYXJpYWJsZVByb3Bvc2FscyhlLHQpe2NvbnN0IG49dGhpcy5nZXRTeW1ib2xDb250ZXh0KCkuZmluZFN5bWJvbHNBdE9mZnNldCh0aGlzLm9mZnNldCxHLlZhcmlhYmxlKTtmb3IoY29uc3QgciBvZiBuKXtjb25zdCBpPXVlKHIubmFtZSwiLS0iKT9gdmFyKCR7ci5uYW1lfSlgOnIubmFtZSxzPXtsYWJlbDpyLm5hbWUsZG9jdW1lbnRhdGlvbjpyLnZhbHVlP3RsKHIudmFsdWUpOnIudmFsdWUsdGV4dEVkaXQ6VS5yZXBsYWNlKHRoaXMuZ2V0Q29tcGxldGlvblJhbmdlKGUpLGkpLGtpbmQ6Vi5WYXJpYWJsZSxzb3J0VGV4dDpCZS5WYXJpYWJsZX07aWYodHlwZW9mIHMuZG9jdW1lbnRhdGlvbj09InN0cmluZyImJnVjKHMuZG9jdW1lbnRhdGlvbikmJihzLmtpbmQ9Vi5Db2xvciksci5ub2RlLnR5cGU9PT1iLkZ1bmN0aW9uUGFyYW1ldGVyKXtjb25zdCBhPXIubm9kZS5nZXRQYXJlbnQoKTthLnR5cGU9PT1iLk1peGluRGVjbGFyYXRpb24mJihzLmRldGFpbD1nKCJhcmd1bWVudCBmcm9tICd7MH0nIixhLmdldE5hbWUoKSkpfXQuaXRlbXMucHVzaChzKX1yZXR1cm4gdH1nZXRWYXJpYWJsZVByb3Bvc2Fsc0ZvckNTU1ZhckZ1bmN0aW9uKGUpe2NvbnN0IHQ9bmV3IGlzO3RoaXMuc3R5bGVTaGVldC5hY2NlcHRWaXNpdG9yKG5ldyB1bSh0LHRoaXMub2Zmc2V0KSk7bGV0IG49dGhpcy5nZXRTeW1ib2xDb250ZXh0KCkuZmluZFN5bWJvbHNBdE9mZnNldCh0aGlzLm9mZnNldCxHLlZhcmlhYmxlKTtmb3IoY29uc3QgciBvZiBuKXtpZih1ZShyLm5hbWUsIi0tIikpe2NvbnN0IGk9e2xhYmVsOnIubmFtZSxkb2N1bWVudGF0aW9uOnIudmFsdWU/dGwoci52YWx1ZSk6ci52YWx1ZSx0ZXh0RWRpdDpVLnJlcGxhY2UodGhpcy5nZXRDb21wbGV0aW9uUmFuZ2UobnVsbCksci5uYW1lKSxraW5kOlYuVmFyaWFibGV9O3R5cGVvZiBpLmRvY3VtZW50YXRpb249PSJzdHJpbmciJiZ1YyhpLmRvY3VtZW50YXRpb24pJiYoaS5raW5kPVYuQ29sb3IpLGUuaXRlbXMucHVzaChpKX10LnJlbW92ZShyLm5hbWUpfWZvcihjb25zdCByIG9mIHQuZ2V0RW50cmllcygpKWlmKHVlKHIsIi0tIikpe2NvbnN0IGk9e2xhYmVsOnIsdGV4dEVkaXQ6VS5yZXBsYWNlKHRoaXMuZ2V0Q29tcGxldGlvblJhbmdlKG51bGwpLHIpLGtpbmQ6Vi5WYXJpYWJsZX07ZS5pdGVtcy5wdXNoKGkpfXJldHVybiBlfWdldFVuaXRQcm9wb3NhbHMoZSx0LG4pe2xldCByPSIwIjtpZih0aGlzLmN1cnJlbnRXb3JkLmxlbmd0aD4wKXtjb25zdCBpPXRoaXMuY3VycmVudFdvcmQubWF0Y2goL14tP1xkW1wuXGQrXSovKTtpJiYocj1pWzBdLG4uaXNJbmNvbXBsZXRlPXIubGVuZ3RoPT09dGhpcy5jdXJyZW50V29yZC5sZW5ndGgpfWVsc2UgdGhpcy5jdXJyZW50V29yZC5sZW5ndGg9PT0wJiYobi5pc0luY29tcGxldGU9ITApO2lmKHQmJnQucGFyZW50JiZ0LnBhcmVudC50eXBlPT09Yi5UZXJtJiYodD10LmdldFBhcmVudCgpKSxlLnJlc3RyaWN0aW9ucylmb3IoY29uc3QgaSBvZiBlLnJlc3RyaWN0aW9ucyl7Y29uc3Qgcz1GY1tpXTtpZihzKWZvcihjb25zdCBhIG9mIHMpe2NvbnN0IGw9cithO24uaXRlbXMucHVzaCh7bGFiZWw6bCx0ZXh0RWRpdDpVLnJlcGxhY2UodGhpcy5nZXRDb21wbGV0aW9uUmFuZ2UodCksbCksa2luZDpWLlVuaXR9KX19cmV0dXJuIG59Z2V0Q29tcGxldGlvblJhbmdlKGUpe2lmKGUmJmUub2Zmc2V0PD10aGlzLm9mZnNldCYmdGhpcy5vZmZzZXQ8PWUuZW5kKXtjb25zdCB0PWUuZW5kIT09LTE/dGhpcy50ZXh0RG9jdW1lbnQucG9zaXRpb25BdChlLmVuZCk6dGhpcy5wb3NpdGlvbixuPXRoaXMudGV4dERvY3VtZW50LnBvc2l0aW9uQXQoZS5vZmZzZXQpO2lmKG4ubGluZT09PXQubGluZSlyZXR1cm4gSi5jcmVhdGUobix0KX1yZXR1cm4gdGhpcy5kZWZhdWx0UmVwbGFjZVJhbmdlfWdldENvbG9yUHJvcG9zYWxzKGUsdCxuKXtmb3IoY29uc3QgaSBpbiBtciluLml0ZW1zLnB1c2goe2xhYmVsOmksZG9jdW1lbnRhdGlvbjptcltpXSx0ZXh0RWRpdDpVLnJlcGxhY2UodGhpcy5nZXRDb21wbGV0aW9uUmFuZ2UodCksaSksa2luZDpWLkNvbG9yfSk7Zm9yKGNvbnN0IGkgaW4gS2kpbi5pdGVtcy5wdXNoKHtsYWJlbDppLGRvY3VtZW50YXRpb246S2lbaV0sdGV4dEVkaXQ6VS5yZXBsYWNlKHRoaXMuZ2V0Q29tcGxldGlvblJhbmdlKHQpLGkpLGtpbmQ6Vi5WYWx1ZX0pO2NvbnN0IHI9bmV3IGlzO3RoaXMuc3R5bGVTaGVldC5hY2NlcHRWaXNpdG9yKG5ldyBkbShyLHRoaXMub2Zmc2V0KSk7Zm9yKGNvbnN0IGkgb2Ygci5nZXRFbnRyaWVzKCkpbi5pdGVtcy5wdXNoKHtsYWJlbDppLHRleHRFZGl0OlUucmVwbGFjZSh0aGlzLmdldENvbXBsZXRpb25SYW5nZSh0KSxpKSxraW5kOlYuQ29sb3J9KTtmb3IoY29uc3QgaSBvZiBVcCluLml0ZW1zLnB1c2goe2xhYmVsOmkubGFiZWwsZGV0YWlsOmkuZnVuYyxkb2N1bWVudGF0aW9uOmkuZGVzYyx0ZXh0RWRpdDpVLnJlcGxhY2UodGhpcy5nZXRDb21wbGV0aW9uUmFuZ2UodCksaS5pbnNlcnRUZXh0KSxpbnNlcnRUZXh0Rm9ybWF0OlplLGtpbmQ6Vi5GdW5jdGlvbn0pO3JldHVybiBufWdldFBvc2l0aW9uUHJvcG9zYWxzKGUsdCxuKXtmb3IoY29uc3QgciBpbiBiYyluLml0ZW1zLnB1c2goe2xhYmVsOnIsZG9jdW1lbnRhdGlvbjpiY1tyXSx0ZXh0RWRpdDpVLnJlcGxhY2UodGhpcy5nZXRDb21wbGV0aW9uUmFuZ2UodCksciksa2luZDpWLlZhbHVlfSk7cmV0dXJuIG59Z2V0UmVwZWF0U3R5bGVQcm9wb3NhbHMoZSx0LG4pe2Zvcihjb25zdCByIGluIHZjKW4uaXRlbXMucHVzaCh7bGFiZWw6cixkb2N1bWVudGF0aW9uOnZjW3JdLHRleHRFZGl0OlUucmVwbGFjZSh0aGlzLmdldENvbXBsZXRpb25SYW5nZSh0KSxyKSxraW5kOlYuVmFsdWV9KTtyZXR1cm4gbn1nZXRMaW5lU3R5bGVQcm9wb3NhbHMoZSx0LG4pe2Zvcihjb25zdCByIGluIHdjKW4uaXRlbXMucHVzaCh7bGFiZWw6cixkb2N1bWVudGF0aW9uOndjW3JdLHRleHRFZGl0OlUucmVwbGFjZSh0aGlzLmdldENvbXBsZXRpb25SYW5nZSh0KSxyKSxraW5kOlYuVmFsdWV9KTtyZXR1cm4gbn1nZXRMaW5lV2lkdGhQcm9wb3NhbHMoZSx0LG4pe2Zvcihjb25zdCByIG9mIEtwKW4uaXRlbXMucHVzaCh7bGFiZWw6cix0ZXh0RWRpdDpVLnJlcGxhY2UodGhpcy5nZXRDb21wbGV0aW9uUmFuZ2UodCksciksa2luZDpWLlZhbHVlfSk7cmV0dXJuIG59Z2V0R2VvbWV0cnlCb3hQcm9wb3NhbHMoZSx0LG4pe2Zvcihjb25zdCByIGluIHhjKW4uaXRlbXMucHVzaCh7bGFiZWw6cixkb2N1bWVudGF0aW9uOnhjW3JdLHRleHRFZGl0OlUucmVwbGFjZSh0aGlzLmdldENvbXBsZXRpb25SYW5nZSh0KSxyKSxraW5kOlYuVmFsdWV9KTtyZXR1cm4gbn1nZXRCb3hQcm9wb3NhbHMoZSx0LG4pe2Zvcihjb25zdCByIGluIHljKW4uaXRlbXMucHVzaCh7bGFiZWw6cixkb2N1bWVudGF0aW9uOnljW3JdLHRleHRFZGl0OlUucmVwbGFjZSh0aGlzLmdldENvbXBsZXRpb25SYW5nZSh0KSxyKSxraW5kOlYuVmFsdWV9KTtyZXR1cm4gbn1nZXRJbWFnZVByb3Bvc2FscyhlLHQsbil7Zm9yKGNvbnN0IHIgaW4gX2Mpe2NvbnN0IGk9WHQocik7bi5pdGVtcy5wdXNoKHtsYWJlbDpyLGRvY3VtZW50YXRpb246X2Nbcl0sdGV4dEVkaXQ6VS5yZXBsYWNlKHRoaXMuZ2V0Q29tcGxldGlvblJhbmdlKHQpLGkpLGtpbmQ6Vi5GdW5jdGlvbixpbnNlcnRUZXh0Rm9ybWF0OnIhPT1pP1plOnZvaWQgMH0pfXJldHVybiBufWdldFRpbWluZ0Z1bmN0aW9uUHJvcG9zYWxzKGUsdCxuKXtmb3IoY29uc3QgciBpbiBrYyl7Y29uc3QgaT1YdChyKTtuLml0ZW1zLnB1c2goe2xhYmVsOnIsZG9jdW1lbnRhdGlvbjprY1tyXSx0ZXh0RWRpdDpVLnJlcGxhY2UodGhpcy5nZXRDb21wbGV0aW9uUmFuZ2UodCksaSksa2luZDpWLkZ1bmN0aW9uLGluc2VydFRleHRGb3JtYXQ6ciE9PWk/WmU6dm9pZCAwfSl9cmV0dXJuIG59Z2V0QmFzaWNTaGFwZVByb3Bvc2FscyhlLHQsbil7Zm9yKGNvbnN0IHIgaW4gRWMpe2NvbnN0IGk9WHQocik7bi5pdGVtcy5wdXNoKHtsYWJlbDpyLGRvY3VtZW50YXRpb246RWNbcl0sdGV4dEVkaXQ6VS5yZXBsYWNlKHRoaXMuZ2V0Q29tcGxldGlvblJhbmdlKHQpLGkpLGtpbmQ6Vi5GdW5jdGlvbixpbnNlcnRUZXh0Rm9ybWF0OnIhPT1pP1plOnZvaWQgMH0pfXJldHVybiBufWdldENvbXBsZXRpb25zRm9yU3R5bGVzaGVldChlKXtjb25zdCB0PXRoaXMuc3R5bGVTaGVldC5maW5kRmlyc3RDaGlsZEJlZm9yZU9mZnNldCh0aGlzLm9mZnNldCk7cmV0dXJuIHQ/dCBpbnN0YW5jZW9mIEN0P3RoaXMuZ2V0Q29tcGxldGlvbnNGb3JSdWxlU2V0KHQsZSk6dCBpbnN0YW5jZW9mIERpP3RoaXMuZ2V0Q29tcGxldGlvbnNGb3JTdXBwb3J0cyh0LGUpOmU6dGhpcy5nZXRDb21wbGV0aW9uRm9yVG9wTGV2ZWwoZSl9Z2V0Q29tcGxldGlvbkZvclRvcExldmVsKGUpe3JldHVybiB0aGlzLmNzc0RhdGFNYW5hZ2VyLmdldEF0RGlyZWN0aXZlcygpLmZvckVhY2godD0+e2UuaXRlbXMucHVzaCh7bGFiZWw6dC5uYW1lLHRleHRFZGl0OlUucmVwbGFjZSh0aGlzLmdldENvbXBsZXRpb25SYW5nZShudWxsKSx0Lm5hbWUpLGRvY3VtZW50YXRpb246cHQodCx0aGlzLmRvZXNTdXBwb3J0TWFya2Rvd24oKSksdGFnczpObih0KT9ba3QuRGVwcmVjYXRlZF06W10sa2luZDpWLktleXdvcmR9KX0pLHRoaXMuZ2V0Q29tcGxldGlvbnNGb3JTZWxlY3RvcihudWxsLCExLGUpLGV9Z2V0Q29tcGxldGlvbnNGb3JSdWxlU2V0KGUsdCl7Y29uc3Qgbj1lLmdldERlY2xhcmF0aW9ucygpO3JldHVybiBuJiZuLmVuZHNXaXRoKCJ9IikmJnRoaXMub2Zmc2V0Pj1uLmVuZD90aGlzLmdldENvbXBsZXRpb25Gb3JUb3BMZXZlbCh0KTohbnx8dGhpcy5vZmZzZXQ8PW4ub2Zmc2V0P3RoaXMuZ2V0Q29tcGxldGlvbnNGb3JTZWxlY3RvcihlLGUuaXNOZXN0ZWQoKSx0KTp0aGlzLmdldENvbXBsZXRpb25zRm9yRGVjbGFyYXRpb25zKGUuZ2V0RGVjbGFyYXRpb25zKCksdCl9Z2V0Q29tcGxldGlvbnNGb3JTZWxlY3RvcihlLHQsbil7Y29uc3Qgcj10aGlzLmZpbmRJbk5vZGVQYXRoKGIuUHNldWRvU2VsZWN0b3IsYi5JZGVudGlmaWVyU2VsZWN0b3IsYi5DbGFzc1NlbGVjdG9yLGIuRWxlbWVudE5hbWVTZWxlY3Rvcik7aWYoIXImJnRoaXMuaGFzQ2hhcmFjdGVyQXRQb3NpdGlvbih0aGlzLm9mZnNldC10aGlzLmN1cnJlbnRXb3JkLmxlbmd0aC0xLCI6IikmJih0aGlzLmN1cnJlbnRXb3JkPSI6Iit0aGlzLmN1cnJlbnRXb3JkLHRoaXMuaGFzQ2hhcmFjdGVyQXRQb3NpdGlvbih0aGlzLm9mZnNldC10aGlzLmN1cnJlbnRXb3JkLmxlbmd0aC0xLCI6IikmJih0aGlzLmN1cnJlbnRXb3JkPSI6Iit0aGlzLmN1cnJlbnRXb3JkKSx0aGlzLmRlZmF1bHRSZXBsYWNlUmFuZ2U9Si5jcmVhdGUodmUuY3JlYXRlKHRoaXMucG9zaXRpb24ubGluZSx0aGlzLnBvc2l0aW9uLmNoYXJhY3Rlci10aGlzLmN1cnJlbnRXb3JkLmxlbmd0aCksdGhpcy5wb3NpdGlvbikpLHRoaXMuY3NzRGF0YU1hbmFnZXIuZ2V0UHNldWRvQ2xhc3NlcygpLmZvckVhY2gobz0+e2NvbnN0IGM9WHQoby5uYW1lKSxkPXtsYWJlbDpvLm5hbWUsdGV4dEVkaXQ6VS5yZXBsYWNlKHRoaXMuZ2V0Q29tcGxldGlvblJhbmdlKHIpLGMpLGRvY3VtZW50YXRpb246cHQobyx0aGlzLmRvZXNTdXBwb3J0TWFya2Rvd24oKSksdGFnczpObihvKT9ba3QuRGVwcmVjYXRlZF06W10sa2luZDpWLkZ1bmN0aW9uLGluc2VydFRleHRGb3JtYXQ6by5uYW1lIT09Yz9aZTp2b2lkIDB9O3VlKG8ubmFtZSwiOi0iKSYmKGQuc29ydFRleHQ9QmUuVmVuZG9yUHJlZml4ZWQpLG4uaXRlbXMucHVzaChkKX0pLHRoaXMuY3NzRGF0YU1hbmFnZXIuZ2V0UHNldWRvRWxlbWVudHMoKS5mb3JFYWNoKG89Pntjb25zdCBjPVh0KG8ubmFtZSksZD17bGFiZWw6by5uYW1lLHRleHRFZGl0OlUucmVwbGFjZSh0aGlzLmdldENvbXBsZXRpb25SYW5nZShyKSxjKSxkb2N1bWVudGF0aW9uOnB0KG8sdGhpcy5kb2VzU3VwcG9ydE1hcmtkb3duKCkpLHRhZ3M6Tm4obyk/W2t0LkRlcHJlY2F0ZWRdOltdLGtpbmQ6Vi5GdW5jdGlvbixpbnNlcnRUZXh0Rm9ybWF0Om8ubmFtZSE9PWM/WmU6dm9pZCAwfTt1ZShvLm5hbWUsIjo6LSIpJiYoZC5zb3J0VGV4dD1CZS5WZW5kb3JQcmVmaXhlZCksbi5pdGVtcy5wdXNoKGQpfSksIXQpe2Zvcihjb25zdCBvIG9mIFpwKW4uaXRlbXMucHVzaCh7bGFiZWw6byx0ZXh0RWRpdDpVLnJlcGxhY2UodGhpcy5nZXRDb21wbGV0aW9uUmFuZ2Uociksbyksa2luZDpWLktleXdvcmR9KTtmb3IoY29uc3QgbyBvZiBlbSluLml0ZW1zLnB1c2goe2xhYmVsOm8sdGV4dEVkaXQ6VS5yZXBsYWNlKHRoaXMuZ2V0Q29tcGxldGlvblJhbmdlKHIpLG8pLGtpbmQ6Vi5LZXl3b3JkfSl9Y29uc3QgYT17fTthW3RoaXMuY3VycmVudFdvcmRdPSEwO2NvbnN0IGw9dGhpcy50ZXh0RG9jdW1lbnQuZ2V0VGV4dCgpO2lmKHRoaXMuc3R5bGVTaGVldC5hY2NlcHQobz0+e2lmKG8udHlwZT09PWIuU2ltcGxlU2VsZWN0b3ImJm8ubGVuZ3RoPjApe2NvbnN0IGM9bC5zdWJzdHIoby5vZmZzZXQsby5sZW5ndGgpO3JldHVybiBjLmNoYXJBdCgwKT09PSIuIiYmIWFbY10mJihhW2NdPSEwLG4uaXRlbXMucHVzaCh7bGFiZWw6Yyx0ZXh0RWRpdDpVLnJlcGxhY2UodGhpcy5nZXRDb21wbGV0aW9uUmFuZ2UociksYyksa2luZDpWLktleXdvcmR9KSksITF9cmV0dXJuITB9KSxlJiZlLmlzTmVzdGVkKCkpe2NvbnN0IG89ZS5nZXRTZWxlY3RvcnMoKS5maW5kRmlyc3RDaGlsZEJlZm9yZU9mZnNldCh0aGlzLm9mZnNldCk7byYmZS5nZXRTZWxlY3RvcnMoKS5nZXRDaGlsZHJlbigpLmluZGV4T2Yobyk9PT0wJiZ0aGlzLmdldFByb3BlcnR5UHJvcG9zYWxzKG51bGwsbil9cmV0dXJuIG59Z2V0Q29tcGxldGlvbnNGb3JEZWNsYXJhdGlvbnMoZSx0KXtpZighZXx8dGhpcy5vZmZzZXQ9PT1lLm9mZnNldClyZXR1cm4gdDtjb25zdCBuPWUuZmluZEZpcnN0Q2hpbGRCZWZvcmVPZmZzZXQodGhpcy5vZmZzZXQpO2lmKCFuKXJldHVybiB0aGlzLmdldENvbXBsZXRpb25zRm9yRGVjbGFyYXRpb25Qcm9wZXJ0eShudWxsLHQpO2lmKG4gaW5zdGFuY2VvZiBFaSl7Y29uc3Qgcj1uO2lmKCFBZShyLmNvbG9uUG9zaXRpb24pfHx0aGlzLm9mZnNldDw9ci5jb2xvblBvc2l0aW9uKXJldHVybiB0aGlzLmdldENvbXBsZXRpb25zRm9yRGVjbGFyYXRpb25Qcm9wZXJ0eShyLHQpO2lmKEFlKHIuc2VtaWNvbG9uUG9zaXRpb24pJiZyLnNlbWljb2xvblBvc2l0aW9uPHRoaXMub2Zmc2V0KXJldHVybiB0aGlzLm9mZnNldD09PXIuc2VtaWNvbG9uUG9zaXRpb24rMT90OnRoaXMuZ2V0Q29tcGxldGlvbnNGb3JEZWNsYXJhdGlvblByb3BlcnR5KG51bGwsdCk7aWYociBpbnN0YW5jZW9mIFVlKXJldHVybiB0aGlzLmdldENvbXBsZXRpb25zRm9yRGVjbGFyYXRpb25WYWx1ZShyLHQpfWVsc2UgbiBpbnN0YW5jZW9mIF9uP3RoaXMuZ2V0Q29tcGxldGlvbnNGb3JFeHRlbmRzUmVmZXJlbmNlKG4sbnVsbCx0KTp0aGlzLmN1cnJlbnRXb3JkJiZ0aGlzLmN1cnJlbnRXb3JkWzBdPT09IkAiP3RoaXMuZ2V0Q29tcGxldGlvbnNGb3JEZWNsYXJhdGlvblByb3BlcnR5KG51bGwsdCk6biBpbnN0YW5jZW9mIEN0JiZ0aGlzLmdldENvbXBsZXRpb25zRm9yRGVjbGFyYXRpb25Qcm9wZXJ0eShudWxsLHQpO3JldHVybiB0fWdldENvbXBsZXRpb25zRm9yVmFyaWFibGVEZWNsYXJhdGlvbihlLHQpe3JldHVybiB0aGlzLm9mZnNldCYmQWUoZS5jb2xvblBvc2l0aW9uKSYmdGhpcy5vZmZzZXQ+ZS5jb2xvblBvc2l0aW9uJiZ0aGlzLmdldFZhcmlhYmxlUHJvcG9zYWxzKGUuZ2V0VmFsdWUoKXx8bnVsbCx0KSx0fWdldENvbXBsZXRpb25zRm9yRXhwcmVzc2lvbihlLHQpe2NvbnN0IG49ZS5nZXRQYXJlbnQoKTtpZihuIGluc3RhbmNlb2YganQpcmV0dXJuIHRoaXMuZ2V0Q29tcGxldGlvbnNGb3JGdW5jdGlvbkFyZ3VtZW50KG4sbi5nZXRQYXJlbnQoKSx0KSx0O2NvbnN0IHI9ZS5maW5kUGFyZW50KGIuRGVjbGFyYXRpb24pO2lmKCFyKXJldHVybiB0aGlzLmdldFRlcm1Qcm9wb3NhbHModm9pZCAwLG51bGwsdCksdDtjb25zdCBpPWUuZmluZENoaWxkQXRPZmZzZXQodGhpcy5vZmZzZXQsITApO3JldHVybiBpP2kgaW5zdGFuY2VvZiBNaXx8aSBpbnN0YW5jZW9mIEllP3RoaXMuZ2V0Q29tcGxldGlvbnNGb3JEZWNsYXJhdGlvblZhbHVlKHIsdCk6dDp0aGlzLmdldENvbXBsZXRpb25zRm9yRGVjbGFyYXRpb25WYWx1ZShyLHQpfWdldENvbXBsZXRpb25zRm9yRnVuY3Rpb25Bcmd1bWVudChlLHQsbil7Y29uc3Qgcj10LmdldElkZW50aWZpZXIoKTtyZXR1cm4gciYmci5tYXRjaGVzKCJ2YXIiKSYmKCF0LmdldEFyZ3VtZW50cygpLmhhc0NoaWxkcmVuKCl8fHQuZ2V0QXJndW1lbnRzKCkuZ2V0Q2hpbGQoMCk9PT1lKSYmdGhpcy5nZXRWYXJpYWJsZVByb3Bvc2Fsc0ZvckNTU1ZhckZ1bmN0aW9uKG4pLG59Z2V0Q29tcGxldGlvbnNGb3JGdW5jdGlvbkRlY2xhcmF0aW9uKGUsdCl7Y29uc3Qgbj1lLmdldERlY2xhcmF0aW9ucygpO3JldHVybiBuJiZ0aGlzLm9mZnNldD5uLm9mZnNldCYmdGhpcy5vZmZzZXQ8bi5lbmQmJnRoaXMuZ2V0VGVybVByb3Bvc2Fscyh2b2lkIDAsbnVsbCx0KSx0fWdldENvbXBsZXRpb25zRm9yTWl4aW5SZWZlcmVuY2UoZSx0KXtjb25zdCBuPXRoaXMuZ2V0U3ltYm9sQ29udGV4dCgpLmZpbmRTeW1ib2xzQXRPZmZzZXQodGhpcy5vZmZzZXQsRy5NaXhpbik7Zm9yKGNvbnN0IGkgb2YgbilpLm5vZGUgaW5zdGFuY2VvZiBrbiYmdC5pdGVtcy5wdXNoKHRoaXMubWFrZVRlcm1Qcm9wb3NhbChpLGkubm9kZS5nZXRQYXJhbWV0ZXJzKCksbnVsbCkpO2NvbnN0IHI9ZS5nZXRJZGVudGlmaWVyKCl8fG51bGw7cmV0dXJuIHRoaXMuY29tcGxldGlvblBhcnRpY2lwYW50cy5mb3JFYWNoKGk9PntpLm9uQ3NzTWl4aW5SZWZlcmVuY2UmJmkub25Dc3NNaXhpblJlZmVyZW5jZSh7bWl4aW5OYW1lOnRoaXMuY3VycmVudFdvcmQscmFuZ2U6dGhpcy5nZXRDb21wbGV0aW9uUmFuZ2Uocil9KX0pLHR9Z2V0VGVybVByb3Bvc2FscyhlLHQsbil7Y29uc3Qgcj10aGlzLmdldFN5bWJvbENvbnRleHQoKS5maW5kU3ltYm9sc0F0T2Zmc2V0KHRoaXMub2Zmc2V0LEcuRnVuY3Rpb24pO2Zvcihjb25zdCBpIG9mIHIpaS5ub2RlIGluc3RhbmNlb2YgcnImJm4uaXRlbXMucHVzaCh0aGlzLm1ha2VUZXJtUHJvcG9zYWwoaSxpLm5vZGUuZ2V0UGFyYW1ldGVycygpLHQpKTtyZXR1cm4gbn1tYWtlVGVybVByb3Bvc2FsKGUsdCxuKXtlLm5vZGU7Y29uc3Qgcj10LmdldENoaWxkcmVuKCkubWFwKHM9PnMgaW5zdGFuY2VvZiBucj9zLmdldE5hbWUoKTpzLmdldFRleHQoKSksaT1lLm5hbWUrIigiK3IubWFwKChzLGEpPT4iJHsiKyhhKzEpKyI6IitzKyJ9Iikuam9pbigiLCAiKSsiKSI7cmV0dXJue2xhYmVsOmUubmFtZSxkZXRhaWw6ZS5uYW1lKyIoIityLmpvaW4oIiwgIikrIikiLHRleHRFZGl0OlUucmVwbGFjZSh0aGlzLmdldENvbXBsZXRpb25SYW5nZShuKSxpKSxpbnNlcnRUZXh0Rm9ybWF0OlplLGtpbmQ6Vi5GdW5jdGlvbixzb3J0VGV4dDpCZS5UZXJtfX1nZXRDb21wbGV0aW9uc0ZvclN1cHBvcnRzQ29uZGl0aW9uKGUsdCl7Y29uc3Qgbj1lLmZpbmRGaXJzdENoaWxkQmVmb3JlT2Zmc2V0KHRoaXMub2Zmc2V0KTtpZihuKXtpZihuIGluc3RhbmNlb2YgVWUpcmV0dXJuIUFlKG4uY29sb25Qb3NpdGlvbil8fHRoaXMub2Zmc2V0PD1uLmNvbG9uUG9zaXRpb24/dGhpcy5nZXRDb21wbGV0aW9uc0ZvckRlY2xhcmF0aW9uUHJvcGVydHkobix0KTp0aGlzLmdldENvbXBsZXRpb25zRm9yRGVjbGFyYXRpb25WYWx1ZShuLHQpO2lmKG4gaW5zdGFuY2VvZiBDbilyZXR1cm4gdGhpcy5nZXRDb21wbGV0aW9uc0ZvclN1cHBvcnRzQ29uZGl0aW9uKG4sdCl9cmV0dXJuIEFlKGUubFBhcmVudCkmJnRoaXMub2Zmc2V0PmUubFBhcmVudCYmKCFBZShlLnJQYXJlbnQpfHx0aGlzLm9mZnNldDw9ZS5yUGFyZW50KT90aGlzLmdldENvbXBsZXRpb25zRm9yRGVjbGFyYXRpb25Qcm9wZXJ0eShudWxsLHQpOnR9Z2V0Q29tcGxldGlvbnNGb3JTdXBwb3J0cyhlLHQpe2NvbnN0IG49ZS5nZXREZWNsYXJhdGlvbnMoKTtpZighbnx8dGhpcy5vZmZzZXQ8PW4ub2Zmc2V0KXtjb25zdCBpPWUuZmluZEZpcnN0Q2hpbGRCZWZvcmVPZmZzZXQodGhpcy5vZmZzZXQpO3JldHVybiBpIGluc3RhbmNlb2YgQ24/dGhpcy5nZXRDb21wbGV0aW9uc0ZvclN1cHBvcnRzQ29uZGl0aW9uKGksdCk6dH1yZXR1cm4gdGhpcy5nZXRDb21wbGV0aW9uRm9yVG9wTGV2ZWwodCl9Z2V0Q29tcGxldGlvbnNGb3JFeHRlbmRzUmVmZXJlbmNlKGUsdCxuKXtyZXR1cm4gbn1nZXRDb21wbGV0aW9uRm9yVXJpTGl0ZXJhbFZhbHVlKGUsdCl7bGV0IG4scixpO2lmKGUuaGFzQ2hpbGRyZW4oKSl7Y29uc3Qgcz1lLmdldENoaWxkKDApO249cy5nZXRUZXh0KCkscj10aGlzLnBvc2l0aW9uLGk9dGhpcy5nZXRDb21wbGV0aW9uUmFuZ2Uocyl9ZWxzZXtuPSIiLHI9dGhpcy5wb3NpdGlvbjtjb25zdCBzPXRoaXMudGV4dERvY3VtZW50LnBvc2l0aW9uQXQoZS5vZmZzZXQrNCk7aT1KLmNyZWF0ZShzLHMpfXJldHVybiB0aGlzLmNvbXBsZXRpb25QYXJ0aWNpcGFudHMuZm9yRWFjaChzPT57cy5vbkNzc1VSSUxpdGVyYWxWYWx1ZSYmcy5vbkNzc1VSSUxpdGVyYWxWYWx1ZSh7dXJpVmFsdWU6bixwb3NpdGlvbjpyLHJhbmdlOml9KX0pLHR9Z2V0Q29tcGxldGlvbkZvckltcG9ydFBhdGgoZSx0KXtyZXR1cm4gdGhpcy5jb21wbGV0aW9uUGFydGljaXBhbnRzLmZvckVhY2gobj0+e24ub25Dc3NJbXBvcnRQYXRoJiZuLm9uQ3NzSW1wb3J0UGF0aCh7cGF0aFZhbHVlOmUuZ2V0VGV4dCgpLHBvc2l0aW9uOnRoaXMucG9zaXRpb24scmFuZ2U6dGhpcy5nZXRDb21wbGV0aW9uUmFuZ2UoZSl9KX0pLHR9aGFzQ2hhcmFjdGVyQXRQb3NpdGlvbihlLHQpe2NvbnN0IG49dGhpcy50ZXh0RG9jdW1lbnQuZ2V0VGV4dCgpO3JldHVybiBlPj0wJiZlPG4ubGVuZ3RoJiZuLmNoYXJBdChlKT09PXR9ZG9lc1N1cHBvcnRNYXJrZG93bigpe2lmKCFBZSh0aGlzLnN1cHBvcnRzTWFya2Rvd24pKXtpZighQWUodGhpcy5sc09wdGlvbnMuY2xpZW50Q2FwYWJpbGl0aWVzKSlyZXR1cm4gdGhpcy5zdXBwb3J0c01hcmtkb3duPSEwLHRoaXMuc3VwcG9ydHNNYXJrZG93bjtjb25zdCBlPXRoaXMubHNPcHRpb25zLmNsaWVudENhcGFiaWxpdGllcy50ZXh0RG9jdW1lbnQ/LmNvbXBsZXRpb24/LmNvbXBsZXRpb25JdGVtPy5kb2N1bWVudGF0aW9uRm9ybWF0O3RoaXMuc3VwcG9ydHNNYXJrZG93bj1BcnJheS5pc0FycmF5KGUpJiZlLmluZGV4T2YoJGUuTWFya2Rvd24pIT09LTF9cmV0dXJuIHRoaXMuc3VwcG9ydHNNYXJrZG93bn19O2Z1bmN0aW9uIE5uKGUpe3JldHVybiEhKGUuc3RhdHVzJiYoZS5zdGF0dXM9PT0ibm9uc3RhbmRhcmQifHxlLnN0YXR1cz09PSJvYnNvbGV0ZSIpKX12YXIgaXM9Y2xhc3N7Y29uc3RydWN0b3IoKXt0aGlzLmVudHJpZXM9e319YWRkKGUpe3RoaXMuZW50cmllc1tlXT0hMH1yZW1vdmUoZSl7ZGVsZXRlIHRoaXMuZW50cmllc1tlXX1nZXRFbnRyaWVzKCl7cmV0dXJuIE9iamVjdC5rZXlzKHRoaXMuZW50cmllcyl9fTtmdW5jdGlvbiBYdChlKXtyZXR1cm4gZS5yZXBsYWNlKC9cKFwpJC8sIigkMSkiKX1mdW5jdGlvbiBobShlLHQpe2NvbnN0IG49dC5nZXRGdWxsUHJvcGVydHlOYW1lKCkscj1uZXcgaXM7ZnVuY3Rpb24gaShsKXtyZXR1cm4obCBpbnN0YW5jZW9mIEllfHxsIGluc3RhbmNlb2YgTWl8fGwgaW5zdGFuY2VvZiBBaSkmJnIuYWRkKGwuZ2V0VGV4dCgpKSwhMH1mdW5jdGlvbiBzKGwpe2NvbnN0IG89bC5nZXRGdWxsUHJvcGVydHlOYW1lKCk7cmV0dXJuIG49PT1vfWZ1bmN0aW9uIGEobCl7aWYobCBpbnN0YW5jZW9mIFVlJiZsIT09dCYmcyhsKSl7Y29uc3Qgbz1sLmdldFZhbHVlKCk7byYmby5hY2NlcHQoaSl9cmV0dXJuITB9cmV0dXJuIGUuYWNjZXB0KGEpLHJ9dmFyIGRtPWNsYXNze2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5lbnRyaWVzPWUsdGhpcy5jdXJyZW50T2Zmc2V0PXR9dmlzaXROb2RlKGUpe3JldHVybihlIGluc3RhbmNlb2YgQWl8fGUgaW5zdGFuY2VvZiBTbiYmanAoZSkpJiYodGhpcy5jdXJyZW50T2Zmc2V0PGUub2Zmc2V0fHxlLmVuZDx0aGlzLmN1cnJlbnRPZmZzZXQpJiZ0aGlzLmVudHJpZXMuYWRkKGUuZ2V0VGV4dCgpKSwhMH19LHVtPWNsYXNze2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5lbnRyaWVzPWUsdGhpcy5jdXJyZW50T2Zmc2V0PXR9dmlzaXROb2RlKGUpe3JldHVybiBlIGluc3RhbmNlb2YgSWUmJmUuaXNDdXN0b21Qcm9wZXJ0eSYmKHRoaXMuY3VycmVudE9mZnNldDxlLm9mZnNldHx8ZS5lbmQ8dGhpcy5jdXJyZW50T2Zmc2V0KSYmdGhpcy5lbnRyaWVzLmFkZChlLmdldFRleHQoKSksITB9fTtmdW5jdGlvbiBwbShlLHQpe2xldCBuPXQtMTtjb25zdCByPWUuZ2V0VGV4dCgpO2Zvcig7bj49MCYmYCAJClxyIjp7WygpXX0sKj4rYC5pbmRleE9mKHIuY2hhckF0KG4pKT09PS0xOyluLS07cmV0dXJuIHIuc3Vic3RyaW5nKG4rMSx0KX12YXIgc3M9Y2xhc3MgRHN7Y29uc3RydWN0b3IoKXt0aGlzLnBhcmVudD1udWxsLHRoaXMuY2hpbGRyZW49bnVsbCx0aGlzLmF0dHJpYnV0ZXM9bnVsbH1maW5kQXR0cmlidXRlKHQpe2lmKHRoaXMuYXR0cmlidXRlcyl7Zm9yKGNvbnN0IG4gb2YgdGhpcy5hdHRyaWJ1dGVzKWlmKG4ubmFtZT09PXQpcmV0dXJuIG4udmFsdWV9cmV0dXJuIG51bGx9YWRkQ2hpbGQodCl7dCBpbnN0YW5jZW9mIERzJiYodC5wYXJlbnQ9dGhpcyksdGhpcy5jaGlsZHJlbnx8KHRoaXMuY2hpbGRyZW49W10pLHRoaXMuY2hpbGRyZW4ucHVzaCh0KX1hcHBlbmQodCl7aWYodGhpcy5hdHRyaWJ1dGVzKXtjb25zdCBuPXRoaXMuYXR0cmlidXRlc1t0aGlzLmF0dHJpYnV0ZXMubGVuZ3RoLTFdO24udmFsdWU9bi52YWx1ZSt0fX1wcmVwZW5kKHQpe2lmKHRoaXMuYXR0cmlidXRlcyl7Y29uc3Qgbj10aGlzLmF0dHJpYnV0ZXNbMF07bi52YWx1ZT10K24udmFsdWV9fWZpbmRSb290KCl7bGV0IHQ9dGhpcztmb3IoO3QucGFyZW50JiYhKHQucGFyZW50IGluc3RhbmNlb2YgWXQpOyl0PXQucGFyZW50O3JldHVybiB0fXJlbW92ZUNoaWxkKHQpe2lmKHRoaXMuY2hpbGRyZW4pe2NvbnN0IG49dGhpcy5jaGlsZHJlbi5pbmRleE9mKHQpO2lmKG4hPT0tMSlyZXR1cm4gdGhpcy5jaGlsZHJlbi5zcGxpY2UobiwxKSwhMH1yZXR1cm4hMX1hZGRBdHRyKHQsbil7dGhpcy5hdHRyaWJ1dGVzfHwodGhpcy5hdHRyaWJ1dGVzPVtdKTtmb3IoY29uc3QgciBvZiB0aGlzLmF0dHJpYnV0ZXMpaWYoci5uYW1lPT09dCl7ci52YWx1ZSs9IiAiK247cmV0dXJufXRoaXMuYXR0cmlidXRlcy5wdXNoKHtuYW1lOnQsdmFsdWU6bn0pfWNsb25lKHQ9ITApe2NvbnN0IG49bmV3IERzO2lmKHRoaXMuYXR0cmlidXRlcyl7bi5hdHRyaWJ1dGVzPVtdO2Zvcihjb25zdCByIG9mIHRoaXMuYXR0cmlidXRlcyluLmFkZEF0dHIoci5uYW1lLHIudmFsdWUpfWlmKHQmJnRoaXMuY2hpbGRyZW4pe24uY2hpbGRyZW49W107Zm9yKGxldCByPTA7cjx0aGlzLmNoaWxkcmVuLmxlbmd0aDtyKyspbi5hZGRDaGlsZCh0aGlzLmNoaWxkcmVuW3JdLmNsb25lKCkpfXJldHVybiBufWNsb25lV2l0aFBhcmVudCgpe2NvbnN0IHQ9dGhpcy5jbG9uZSghMSk7cmV0dXJuIHRoaXMucGFyZW50JiYhKHRoaXMucGFyZW50IGluc3RhbmNlb2YgWXQpJiZ0aGlzLnBhcmVudC5jbG9uZVdpdGhQYXJlbnQoKS5hZGRDaGlsZCh0KSx0fX0sWXQ9Y2xhc3MgZXh0ZW5kcyBzc3t9LGFzPWNsYXNzIGV4dGVuZHMgc3N7Y29uc3RydWN0b3IoZSl7c3VwZXIoKSx0aGlzLmFkZEF0dHIoIm5hbWUiLGUpfX0sQWM9Y2xhc3N7Y29uc3RydWN0b3IoZSl7dGhpcy5xdW90ZT1lLHRoaXMucmVzdWx0PVtdfXByaW50KGUsdCl7dGhpcy5yZXN1bHQ9W10sZSBpbnN0YW5jZW9mIFl0P2UuY2hpbGRyZW4mJnRoaXMuZG9QcmludChlLmNoaWxkcmVuLDApOnRoaXMuZG9QcmludChbZV0sMCk7bGV0IG47cmV0dXJuIHQ/bj1gJHt0LnRleHR9CiDigKYgYCt0aGlzLnJlc3VsdC5qb2luKGAKYCk6bj10aGlzLnJlc3VsdC5qb2luKGAKYCksW3tsYW5ndWFnZToiaHRtbCIsdmFsdWU6bn1dfWRvUHJpbnQoZSx0KXtmb3IoY29uc3QgbiBvZiBlKXRoaXMuZG9QcmludEVsZW1lbnQobix0KSxuLmNoaWxkcmVuJiZ0aGlzLmRvUHJpbnQobi5jaGlsZHJlbix0KzEpfXdyaXRlTGluZShlLHQpe2NvbnN0IG49bmV3IEFycmF5KGUrMSkuam9pbigiICAiKTt0aGlzLnJlc3VsdC5wdXNoKG4rdCl9ZG9QcmludEVsZW1lbnQoZSx0KXtjb25zdCBuPWUuZmluZEF0dHJpYnV0ZSgibmFtZSIpO2lmKGUgaW5zdGFuY2VvZiBhc3x8bj09PSLigKYiKXt0aGlzLndyaXRlTGluZSh0LG4pO3JldHVybn1jb25zdCByPVsiPCJdO2lmKG4/ci5wdXNoKG4pOnIucHVzaCgiZWxlbWVudCIpLGUuYXR0cmlidXRlcyl7Zm9yKGNvbnN0IGkgb2YgZS5hdHRyaWJ1dGVzKWlmKGkubmFtZSE9PSJuYW1lIil7ci5wdXNoKCIgIiksci5wdXNoKGkubmFtZSk7Y29uc3Qgcz1pLnZhbHVlO3MmJihyLnB1c2goIj0iKSxyLnB1c2goZXQuZW5zdXJlKHMsdGhpcy5xdW90ZSkpKX19ci5wdXNoKCI+IiksdGhpcy53cml0ZUxpbmUodCxyLmpvaW4oIiIpKX19LGV0OyhmdW5jdGlvbihlKXtmdW5jdGlvbiB0KHIsaSl7cmV0dXJuIGkrbihyKStpfWUuZW5zdXJlPXQ7ZnVuY3Rpb24gbihyKXtjb25zdCBpPXIubWF0Y2goL15bJyJdKC4qKVsiJ10kLyk7cmV0dXJuIGk/aVsxXTpyfWUucmVtb3ZlPW59KShldHx8KGV0PXt9KSk7dmFyIG9zPWNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy5pZD0wLHRoaXMuYXR0cj0wLHRoaXMudGFnPTB9fTtmdW5jdGlvbiBNYyhlLHQpe2xldCBuPW5ldyBzcztmb3IoY29uc3QgciBvZiBlLmdldENoaWxkcmVuKCkpc3dpdGNoKHIudHlwZSl7Y2FzZSBiLlNlbGVjdG9yQ29tYmluYXRvcjppZih0KXtjb25zdCBsPXIuZ2V0VGV4dCgpLnNwbGl0KCImIik7aWYobC5sZW5ndGg9PT0xKXtuLmFkZEF0dHIoIm5hbWUiLGxbMF0pO2JyZWFrfW49dC5jbG9uZVdpdGhQYXJlbnQoKSxsWzBdJiZuLmZpbmRSb290KCkucHJlcGVuZChsWzBdKTtmb3IobGV0IG89MTtvPGwubGVuZ3RoO28rKyl7aWYobz4xKXtjb25zdCBjPXQuY2xvbmVXaXRoUGFyZW50KCk7bi5hZGRDaGlsZChjLmZpbmRSb290KCkpLG49Y31uLmFwcGVuZChsW29dKX19YnJlYWs7Y2FzZSBiLlNlbGVjdG9yUGxhY2Vob2xkZXI6aWYoci5tYXRjaGVzKCJAYXQtcm9vdCIpKXJldHVybiBuO2Nhc2UgYi5FbGVtZW50TmFtZVNlbGVjdG9yOmNvbnN0IGk9ci5nZXRUZXh0KCk7bi5hZGRBdHRyKCJuYW1lIixpPT09IioiPyJlbGVtZW50IjpNZShpKSk7YnJlYWs7Y2FzZSBiLkNsYXNzU2VsZWN0b3I6bi5hZGRBdHRyKCJjbGFzcyIsTWUoci5nZXRUZXh0KCkuc3Vic3RyaW5nKDEpKSk7YnJlYWs7Y2FzZSBiLklkZW50aWZpZXJTZWxlY3RvcjpuLmFkZEF0dHIoImlkIixNZShyLmdldFRleHQoKS5zdWJzdHJpbmcoMSkpKTticmVhaztjYXNlIGIuTWl4aW5EZWNsYXJhdGlvbjpuLmFkZEF0dHIoImNsYXNzIixyLmdldE5hbWUoKSk7YnJlYWs7Y2FzZSBiLlBzZXVkb1NlbGVjdG9yOm4uYWRkQXR0cihNZShyLmdldFRleHQoKSksIiIpO2JyZWFrO2Nhc2UgYi5BdHRyaWJ1dGVTZWxlY3Rvcjpjb25zdCBzPXIsYT1zLmdldElkZW50aWZpZXIoKTtpZihhKXtjb25zdCBsPXMuZ2V0VmFsdWUoKSxvPXMuZ2V0T3BlcmF0b3IoKTtsZXQgYztpZihsJiZvKXN3aXRjaChNZShvLmdldFRleHQoKSkpe2Nhc2UifD0iOmM9YCR7ZXQucmVtb3ZlKE1lKGwuZ2V0VGV4dCgpKSl9LeKApmA7YnJlYWs7Y2FzZSJePSI6Yz1gJHtldC5yZW1vdmUoTWUobC5nZXRUZXh0KCkpKX3igKZgO2JyZWFrO2Nhc2UiJD0iOmM9YOKApiR7ZXQucmVtb3ZlKE1lKGwuZ2V0VGV4dCgpKSl9YDticmVhaztjYXNlIn49IjpjPWAg4oCmICR7ZXQucmVtb3ZlKE1lKGwuZ2V0VGV4dCgpKSl9IOKApiBgO2JyZWFrO2Nhc2UiKj0iOmM9YOKApiR7ZXQucmVtb3ZlKE1lKGwuZ2V0VGV4dCgpKSl94oCmYDticmVhaztkZWZhdWx0OmM9ZXQucmVtb3ZlKE1lKGwuZ2V0VGV4dCgpKSk7YnJlYWt9bi5hZGRBdHRyKE1lKGEuZ2V0VGV4dCgpKSxjKX1icmVha31yZXR1cm4gbn1mdW5jdGlvbiBNZShlKXtjb25zdCB0PW5ldyB5bjt0LnNldFNvdXJjZShlKTtjb25zdCBuPXQuc2NhblVucXVvdGVkU3RyaW5nKCk7cmV0dXJuIG4/bi50ZXh0OmV9dmFyIG1tPWNsYXNze2NvbnN0cnVjdG9yKGUpe3RoaXMuY3NzRGF0YU1hbmFnZXI9ZX1zZWxlY3RvclRvTWFya2VkU3RyaW5nKGUsdCl7Y29uc3Qgbj1ibShlKTtpZihuKXtjb25zdCByPW5ldyBBYygnIicpLnByaW50KG4sdCk7cmV0dXJuIHIucHVzaCh0aGlzLnNlbGVjdG9yVG9TcGVjaWZpY2l0eU1hcmtlZFN0cmluZyhlKSkscn1lbHNlIHJldHVybltdfXNpbXBsZVNlbGVjdG9yVG9NYXJrZWRTdHJpbmcoZSl7Y29uc3QgdD1NYyhlKSxuPW5ldyBBYygnIicpLnByaW50KHQpO3JldHVybiBuLnB1c2godGhpcy5zZWxlY3RvclRvU3BlY2lmaWNpdHlNYXJrZWRTdHJpbmcoZSkpLG59aXNQc2V1ZG9FbGVtZW50SWRlbnRpZmllcihlKXtjb25zdCB0PWUubWF0Y2goL146Oj8oW1x3LV0rKS8pO3JldHVybiB0PyEhdGhpcy5jc3NEYXRhTWFuYWdlci5nZXRQc2V1ZG9FbGVtZW50KCI6OiIrdFsxXSk6ITF9c2VsZWN0b3JUb1NwZWNpZmljaXR5TWFya2VkU3RyaW5nKGUpe2NvbnN0IHQ9aT0+e2NvbnN0IHM9bmV3IG9zO2xldCBhPW5ldyBvcztmb3IoY29uc3QgbCBvZiBpKWZvcihjb25zdCBvIG9mIGwuZ2V0Q2hpbGRyZW4oKSl7Y29uc3QgYz1uKG8pO2lmKGMuaWQ+YS5pZCl7YT1jO2NvbnRpbnVlfWVsc2UgaWYoYy5pZDxhLmlkKWNvbnRpbnVlO2lmKGMuYXR0cj5hLmF0dHIpe2E9Yztjb250aW51ZX1lbHNlIGlmKGMuYXR0cjxhLmF0dHIpY29udGludWU7aWYoYy50YWc+YS50YWcpe2E9Yztjb250aW51ZX19cmV0dXJuIHMuaWQrPWEuaWQscy5hdHRyKz1hLmF0dHIscy50YWcrPWEudGFnLHN9LG49aT0+e2NvbnN0IHM9bmV3IG9zO2U6Zm9yKGNvbnN0IGEgb2YgaS5nZXRDaGlsZHJlbigpKXtzd2l0Y2goYS50eXBlKXtjYXNlIGIuSWRlbnRpZmllclNlbGVjdG9yOnMuaWQrKzticmVhaztjYXNlIGIuQ2xhc3NTZWxlY3RvcjpjYXNlIGIuQXR0cmlidXRlU2VsZWN0b3I6cy5hdHRyKys7YnJlYWs7Y2FzZSBiLkVsZW1lbnROYW1lU2VsZWN0b3I6aWYoYS5tYXRjaGVzKCIqIikpYnJlYWs7cy50YWcrKzticmVhaztjYXNlIGIuUHNldWRvU2VsZWN0b3I6Y29uc3QgbD1hLmdldFRleHQoKSxvPWEuZ2V0Q2hpbGRyZW4oKTtpZih0aGlzLmlzUHNldWRvRWxlbWVudElkZW50aWZpZXIobCkpe2lmKGwubWF0Y2goL146OnNsb3R0ZWQvaSkmJm8ubGVuZ3RoPjApe3MudGFnKys7bGV0IGM9dChvKTtzLmlkKz1jLmlkLHMuYXR0cis9Yy5hdHRyLHMudGFnKz1jLnRhZztjb250aW51ZSBlfXMudGFnKys7Y29udGludWUgZX1pZihsLm1hdGNoKC9eOndoZXJlL2kpKWNvbnRpbnVlIGU7aWYobC5tYXRjaCgvXjooPzpub3R8aGFzfGlzKS9pKSYmby5sZW5ndGg+MCl7bGV0IGM9dChvKTtzLmlkKz1jLmlkLHMuYXR0cis9Yy5hdHRyLHMudGFnKz1jLnRhZztjb250aW51ZSBlfWlmKGwubWF0Y2goL146KD86aG9zdHxob3N0LWNvbnRleHQpL2kpJiZvLmxlbmd0aD4wKXtzLmF0dHIrKztsZXQgYz10KG8pO3MuaWQrPWMuaWQscy5hdHRyKz1jLmF0dHIscy50YWcrPWMudGFnO2NvbnRpbnVlIGV9aWYobC5tYXRjaCgvXjooPzpudGgtY2hpbGR8bnRoLWxhc3QtY2hpbGQpL2kpJiZvLmxlbmd0aD4wKXtpZihzLmF0dHIrKyxvLmxlbmd0aD09PTMmJm9bMV0udHlwZT09PTIzKXtsZXQgbT10KG9bMl0uZ2V0Q2hpbGRyZW4oKSk7cy5pZCs9bS5pZCxzLmF0dHIrPW0uYXR0cixzLnRhZys9bS50YWc7Y29udGludWUgZX1jb25zdCBjPW5ldyBicixkPW9bMV0uZ2V0VGV4dCgpO2Muc2Nhbm5lci5zZXRTb3VyY2UoZCk7Y29uc3QgdT1jLnNjYW5uZXIuc2NhbigpLGY9Yy5zY2FubmVyLnNjYW4oKTtpZih1LnRleHQ9PT0ibiJ8fHUudGV4dD09PSItbiImJmYudGV4dD09PSJvZiIpe2NvbnN0IG09W10seT1kLnNsaWNlKGYub2Zmc2V0KzIpLnNwbGl0KCIsIik7Zm9yKGNvbnN0IGsgb2YgeSl7Y29uc3QgRD1jLmludGVybmFsUGFyc2UoayxjLl9wYXJzZVNlbGVjdG9yKTtEJiZtLnB1c2goRCl9bGV0IF89dChtKTtzLmlkKz1fLmlkLHMuYXR0cis9Xy5hdHRyLHMudGFnKz1fLnRhZztjb250aW51ZSBlfWNvbnRpbnVlIGV9cy5hdHRyKys7Y29udGludWUgZX1pZihhLmdldENoaWxkcmVuKCkubGVuZ3RoPjApe2NvbnN0IGw9bihhKTtzLmlkKz1sLmlkLHMuYXR0cis9bC5hdHRyLHMudGFnKz1sLnRhZ319cmV0dXJuIHN9LHI9bihlKTtyZXR1cm5gWyR7ZygiU2VsZWN0b3IgU3BlY2lmaWNpdHkiKX1dKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9TcGVjaWZpY2l0eSk6ICgke3IuaWR9LCAke3IuYXR0cn0sICR7ci50YWd9KWB9fSxmbT1jbGFzc3tjb25zdHJ1Y3RvcihlKXt0aGlzLnByZXY9bnVsbCx0aGlzLmVsZW1lbnQ9ZX1wcm9jZXNzU2VsZWN0b3IoZSl7bGV0IHQ9bnVsbDtpZighKHRoaXMuZWxlbWVudCBpbnN0YW5jZW9mIFl0KSYmZS5nZXRDaGlsZHJlbigpLnNvbWUobj0+bi5oYXNDaGlsZHJlbigpJiZuLmdldENoaWxkKDApLnR5cGU9PT1iLlNlbGVjdG9yQ29tYmluYXRvcikpe2NvbnN0IG49dGhpcy5lbGVtZW50LmZpbmRSb290KCk7bi5wYXJlbnQgaW5zdGFuY2VvZiBZdCYmKHQ9dGhpcy5lbGVtZW50LHRoaXMuZWxlbWVudD1uLnBhcmVudCx0aGlzLmVsZW1lbnQucmVtb3ZlQ2hpbGQobiksdGhpcy5wcmV2PW51bGwpfWZvcihjb25zdCBuIG9mIGUuZ2V0Q2hpbGRyZW4oKSl7aWYobiBpbnN0YW5jZW9mIHF0KXtpZih0aGlzLnByZXYgaW5zdGFuY2VvZiBxdCl7Y29uc3Qgcz1uZXcgYXMoIuKApiIpO3RoaXMuZWxlbWVudC5hZGRDaGlsZChzKSx0aGlzLmVsZW1lbnQ9c31lbHNlIHRoaXMucHJldiYmKHRoaXMucHJldi5tYXRjaGVzKCIrIil8fHRoaXMucHJldi5tYXRjaGVzKCJ+IikpJiZ0aGlzLmVsZW1lbnQucGFyZW50JiYodGhpcy5lbGVtZW50PXRoaXMuZWxlbWVudC5wYXJlbnQpO3RoaXMucHJldiYmdGhpcy5wcmV2Lm1hdGNoZXMoIn4iKSYmdGhpcy5lbGVtZW50LmFkZENoaWxkKG5ldyBhcygi4ouuIikpO2NvbnN0IHI9TWMobix0KSxpPXIuZmluZFJvb3QoKTt0aGlzLmVsZW1lbnQuYWRkQ2hpbGQoaSksdGhpcy5lbGVtZW50PXJ9KG4gaW5zdGFuY2VvZiBxdHx8bi50eXBlPT09Yi5TZWxlY3RvckNvbWJpbmF0b3JQYXJlbnR8fG4udHlwZT09PWIuU2VsZWN0b3JDb21iaW5hdG9yU2hhZG93UGllcmNpbmdEZXNjZW5kYW50fHxuLnR5cGU9PT1iLlNlbGVjdG9yQ29tYmluYXRvclNpYmxpbmd8fG4udHlwZT09PWIuU2VsZWN0b3JDb21iaW5hdG9yQWxsU2libGluZ3MpJiYodGhpcy5wcmV2PW4pfX19O2Z1bmN0aW9uIGdtKGUpe3N3aXRjaChlLnR5cGUpe2Nhc2UgYi5NaXhpbkRlY2xhcmF0aW9uOmNhc2UgYi5TdHlsZXNoZWV0OnJldHVybiEwfXJldHVybiExfWZ1bmN0aW9uIGJtKGUpe2lmKGUubWF0Y2hlcygiQGF0LXJvb3QiKSlyZXR1cm4gbnVsbDtjb25zdCB0PW5ldyBZdCxuPVtdLHI9ZS5nZXRQYXJlbnQoKTtpZihyIGluc3RhbmNlb2YgQ3Qpe2xldCBzPXIuZ2V0UGFyZW50KCk7Zm9yKDtzJiYhZ20ocyk7KXtpZihzIGluc3RhbmNlb2YgQ3Qpe2lmKHMuZ2V0U2VsZWN0b3JzKCkubWF0Y2hlcygiQGF0LXJvb3QiKSlicmVhaztuLnB1c2gocyl9cz1zLmdldFBhcmVudCgpfX1jb25zdCBpPW5ldyBmbSh0KTtmb3IobGV0IHM9bi5sZW5ndGgtMTtzPj0wO3MtLSl7Y29uc3QgYT1uW3NdLmdldFNlbGVjdG9ycygpLmdldENoaWxkKDApO2EmJmkucHJvY2Vzc1NlbGVjdG9yKGEpfXJldHVybiBpLnByb2Nlc3NTZWxlY3RvcihlKSx0fXZhciBscz1jbGFzc3tjb25zdHJ1Y3RvcihlLHQpe3RoaXMuY2xpZW50Q2FwYWJpbGl0aWVzPWUsdGhpcy5jc3NEYXRhTWFuYWdlcj10LHRoaXMuc2VsZWN0b3JQcmludGluZz1uZXcgbW0odCl9Y29uZmlndXJlKGUpe3RoaXMuZGVmYXVsdFNldHRpbmdzPWV9ZG9Ib3ZlcihlLHQsbixyPXRoaXMuZGVmYXVsdFNldHRpbmdzKXtmdW5jdGlvbiBpKGMpe3JldHVybiBKLmNyZWF0ZShlLnBvc2l0aW9uQXQoYy5vZmZzZXQpLGUucG9zaXRpb25BdChjLmVuZCkpfWNvbnN0IHM9ZS5vZmZzZXRBdCh0KSxhPV9pKG4scyk7bGV0IGw9bnVsbCxvO2ZvcihsZXQgYz0wO2M8YS5sZW5ndGg7YysrKXtjb25zdCBkPWFbY107aWYoZCBpbnN0YW5jZW9mIE5pKXtjb25zdCB1PS9AbWVkaWFbXlx7XSsvZztvPXtpc01lZGlhOiEwLHRleHQ6ZC5nZXRUZXh0KCkubWF0Y2godSk/LlswXX19aWYoZCBpbnN0YW5jZW9mIHhuKXtsPXtjb250ZW50czp0aGlzLnNlbGVjdG9yUHJpbnRpbmcuc2VsZWN0b3JUb01hcmtlZFN0cmluZyhkLG8pLHJhbmdlOmkoZCl9O2JyZWFrfWlmKGQgaW5zdGFuY2VvZiBxdCl7dWUoZC5nZXRUZXh0KCksIkAiKXx8KGw9e2NvbnRlbnRzOnRoaXMuc2VsZWN0b3JQcmludGluZy5zaW1wbGVTZWxlY3RvclRvTWFya2VkU3RyaW5nKGQpLHJhbmdlOmkoZCl9KTticmVha31pZihkIGluc3RhbmNlb2YgVWUpe2NvbnN0IHU9ZC5nZXRGdWxsUHJvcGVydHlOYW1lKCksZj10aGlzLmNzc0RhdGFNYW5hZ2VyLmdldFByb3BlcnR5KHUpO2lmKGYpe2NvbnN0IG09cHQoZix0aGlzLmRvZXNTdXBwb3J0TWFya2Rvd24oKSxyKTttP2w9e2NvbnRlbnRzOm0scmFuZ2U6aShkKX06bD1udWxsfWNvbnRpbnVlfWlmKGQgaW5zdGFuY2VvZiBobCl7Y29uc3QgdT1kLmdldFRleHQoKSxmPXRoaXMuY3NzRGF0YU1hbmFnZXIuZ2V0QXREaXJlY3RpdmUodSk7aWYoZil7Y29uc3QgbT1wdChmLHRoaXMuZG9lc1N1cHBvcnRNYXJrZG93bigpLHIpO20/bD17Y29udGVudHM6bSxyYW5nZTppKGQpfTpsPW51bGx9Y29udGludWV9aWYoZCBpbnN0YW5jZW9mIE8mJmQudHlwZT09PWIuUHNldWRvU2VsZWN0b3Ipe2NvbnN0IHU9ZC5nZXRUZXh0KCksZj11LnNsaWNlKDAsMik9PT0iOjoiP3RoaXMuY3NzRGF0YU1hbmFnZXIuZ2V0UHNldWRvRWxlbWVudCh1KTp0aGlzLmNzc0RhdGFNYW5hZ2VyLmdldFBzZXVkb0NsYXNzKHUpO2lmKGYpe2NvbnN0IG09cHQoZix0aGlzLmRvZXNTdXBwb3J0TWFya2Rvd24oKSxyKTttP2w9e2NvbnRlbnRzOm0scmFuZ2U6aShkKX06bD1udWxsfWNvbnRpbnVlfX1yZXR1cm4gbCYmKGwuY29udGVudHM9dGhpcy5jb252ZXJ0Q29udGVudHMobC5jb250ZW50cykpLGx9Y29udmVydENvbnRlbnRzKGUpe3JldHVybiB0aGlzLmRvZXNTdXBwb3J0TWFya2Rvd24oKXx8dHlwZW9mIGU9PSJzdHJpbmciP2U6ImtpbmQiaW4gZT97a2luZDoicGxhaW50ZXh0Iix2YWx1ZTplLnZhbHVlfTpBcnJheS5pc0FycmF5KGUpP2UubWFwKHQ9PnR5cGVvZiB0PT0ic3RyaW5nIj90OnQudmFsdWUpOmUudmFsdWV9ZG9lc1N1cHBvcnRNYXJrZG93bigpe2lmKCFBZSh0aGlzLnN1cHBvcnRzTWFya2Rvd24pKXtpZighQWUodGhpcy5jbGllbnRDYXBhYmlsaXRpZXMpKXJldHVybiB0aGlzLnN1cHBvcnRzTWFya2Rvd249ITAsdGhpcy5zdXBwb3J0c01hcmtkb3duO2NvbnN0IGU9dGhpcy5jbGllbnRDYXBhYmlsaXRpZXMudGV4dERvY3VtZW50JiZ0aGlzLmNsaWVudENhcGFiaWxpdGllcy50ZXh0RG9jdW1lbnQuaG92ZXI7dGhpcy5zdXBwb3J0c01hcmtkb3duPWUmJmUuY29udGVudEZvcm1hdCYmQXJyYXkuaXNBcnJheShlLmNvbnRlbnRGb3JtYXQpJiZlLmNvbnRlbnRGb3JtYXQuaW5kZXhPZigkZS5NYXJrZG93bikhPT0tMX1yZXR1cm4gdGhpcy5zdXBwb3J0c01hcmtkb3dufX0sTGM9L15cdys6XC9cLy8semM9L15kYXRhOi8sY3M9Y2xhc3N7Y29uc3RydWN0b3IoZSx0KXt0aGlzLmZpbGVTeXN0ZW1Qcm92aWRlcj1lLHRoaXMucmVzb2x2ZU1vZHVsZVJlZmVyZW5jZXM9dH1jb25maWd1cmUoZSl7dGhpcy5kZWZhdWx0U2V0dGluZ3M9ZX1maW5kRGVmaW5pdGlvbihlLHQsbil7Y29uc3Qgcj1uZXcgWmkobiksaT1lLm9mZnNldEF0KHQpLHM9Q2kobixpKTtpZighcylyZXR1cm4gbnVsbDtjb25zdCBhPXIuZmluZFN5bWJvbEZyb21Ob2RlKHMpO3JldHVybiBhP3t1cmk6ZS51cmkscmFuZ2U6dHQoYS5ub2RlLGUpfTpudWxsfWZpbmRSZWZlcmVuY2VzKGUsdCxuKXtyZXR1cm4gdGhpcy5maW5kRG9jdW1lbnRIaWdobGlnaHRzKGUsdCxuKS5tYXAoaT0+KHt1cmk6ZS51cmkscmFuZ2U6aS5yYW5nZX0pKX1nZXRIaWdobGlnaHROb2RlKGUsdCxuKXtjb25zdCByPWUub2Zmc2V0QXQodCk7bGV0IGk9Q2kobixyKTtpZighKCFpfHxpLnR5cGU9PT1iLlN0eWxlc2hlZXR8fGkudHlwZT09PWIuRGVjbGFyYXRpb25zKSlyZXR1cm4gaS50eXBlPT09Yi5JZGVudGlmaWVyJiZpLnBhcmVudCYmaS5wYXJlbnQudHlwZT09PWIuQ2xhc3NTZWxlY3RvciYmKGk9aS5wYXJlbnQpLGl9ZmluZERvY3VtZW50SGlnaGxpZ2h0cyhlLHQsbil7Y29uc3Qgcj1bXSxpPXRoaXMuZ2V0SGlnaGxpZ2h0Tm9kZShlLHQsbik7aWYoIWkpcmV0dXJuIHI7Y29uc3Qgcz1uZXcgWmkobiksYT1zLmZpbmRTeW1ib2xGcm9tTm9kZShpKSxsPWkuZ2V0VGV4dCgpO3JldHVybiBuLmFjY2VwdChvPT57aWYoYSl7aWYocy5tYXRjaGVzU3ltYm9sKG8sYSkpcmV0dXJuIHIucHVzaCh7a2luZDpUYyhvKSxyYW5nZTp0dChvLGUpfSksITF9ZWxzZSBpJiZpLnR5cGU9PT1vLnR5cGUmJm8ubWF0Y2hlcyhsKSYmci5wdXNoKHtraW5kOlRjKG8pLHJhbmdlOnR0KG8sZSl9KTtyZXR1cm4hMH0pLHJ9aXNSYXdTdHJpbmdEb2N1bWVudExpbmtOb2RlKGUpe3JldHVybiBlLnR5cGU9PT1iLkltcG9ydH1maW5kRG9jdW1lbnRMaW5rcyhlLHQsbil7Y29uc3Qgcj10aGlzLmZpbmRVbnJlc29sdmVkTGlua3MoZSx0KSxpPVtdO2ZvcihsZXQgcyBvZiByKXtjb25zdCBhPXMubGluayxsPWEudGFyZ2V0O2lmKCEoIWx8fHpjLnRlc3QobCkpKWlmKExjLnRlc3QobCkpaS5wdXNoKGEpO2Vsc2V7Y29uc3Qgbz1uLnJlc29sdmVSZWZlcmVuY2UobCxlLnVyaSk7byYmKGEudGFyZ2V0PW8pLGkucHVzaChhKX19cmV0dXJuIGl9YXN5bmMgZmluZERvY3VtZW50TGlua3MyKGUsdCxuKXtjb25zdCByPXRoaXMuZmluZFVucmVzb2x2ZWRMaW5rcyhlLHQpLGk9W107Zm9yKGxldCBzIG9mIHIpe2NvbnN0IGE9cy5saW5rLGw9YS50YXJnZXQ7aWYoISghbHx8emMudGVzdChsKSkpaWYoTGMudGVzdChsKSlpLnB1c2goYSk7ZWxzZXtjb25zdCBvPWF3YWl0IHRoaXMucmVzb2x2ZVJlZmVyZW5jZShsLGUudXJpLG4scy5pc1Jhd0xpbmspO28hPT12b2lkIDAmJihhLnRhcmdldD1vLGkucHVzaChhKSl9fXJldHVybiBpfWZpbmRVbnJlc29sdmVkTGlua3MoZSx0KXtjb25zdCBuPVtdLHI9aT0+e2xldCBzPWkuZ2V0VGV4dCgpO2NvbnN0IGE9dHQoaSxlKTtpZihhLnN0YXJ0LmxpbmU9PT1hLmVuZC5saW5lJiZhLnN0YXJ0LmNoYXJhY3Rlcj09PWEuZW5kLmNoYXJhY3RlcilyZXR1cm47KHVlKHMsIiciKXx8dWUocywnIicpKSYmKHM9cy5zbGljZSgxLC0xKSk7Y29uc3QgbD1pLnBhcmVudD90aGlzLmlzUmF3U3RyaW5nRG9jdW1lbnRMaW5rTm9kZShpLnBhcmVudCk6ITE7bi5wdXNoKHtsaW5rOnt0YXJnZXQ6cyxyYW5nZTphfSxpc1Jhd0xpbms6bH0pfTtyZXR1cm4gdC5hY2NlcHQoaT0+e2lmKGkudHlwZT09PWIuVVJJTGl0ZXJhbCl7Y29uc3Qgcz1pLmdldENoaWxkKDApO3JldHVybiBzJiZyKHMpLCExfWlmKGkucGFyZW50JiZ0aGlzLmlzUmF3U3RyaW5nRG9jdW1lbnRMaW5rTm9kZShpLnBhcmVudCkpe2NvbnN0IHM9aS5nZXRUZXh0KCk7cmV0dXJuKHVlKHMsIiciKXx8dWUocywnIicpKSYmcihpKSwhMX1yZXR1cm4hMH0pLG59ZmluZFN5bWJvbEluZm9ybWF0aW9ucyhlLHQpe2NvbnN0IG49W10scj0oaSxzLGEpPT57Y29uc3QgbD1hIGluc3RhbmNlb2YgTz90dChhLGUpOmEsbz17bmFtZTppfHxnKCI8dW5kZWZpbmVkPiIpLGtpbmQ6cyxsb2NhdGlvbjpFbi5jcmVhdGUoZS51cmksbCl9O24ucHVzaChvKX07cmV0dXJuIHRoaXMuY29sbGVjdERvY3VtZW50U3ltYm9scyhlLHQsciksbn1maW5kRG9jdW1lbnRTeW1ib2xzKGUsdCl7Y29uc3Qgbj1bXSxyPVtdLGk9KHMsYSxsLG8sYyk9Pntjb25zdCBkPWwgaW5zdGFuY2VvZiBPP3R0KGwsZSk6bDtsZXQgdT1vIGluc3RhbmNlb2YgTz90dChvLGUpOm87KCF1fHwhUGMoZCx1KSkmJih1PUouY3JlYXRlKGQuc3RhcnQsZC5zdGFydCkpO2NvbnN0IGY9e25hbWU6c3x8ZygiPHVuZGVmaW5lZD4iKSxraW5kOmEscmFuZ2U6ZCxzZWxlY3Rpb25SYW5nZTp1fTtsZXQgbT1yLnBvcCgpO2Zvcig7bSYmIVBjKG1bMV0sZCk7KW09ci5wb3AoKTtpZihtKXtjb25zdCB2PW1bMF07di5jaGlsZHJlbnx8KHYuY2hpbGRyZW49W10pLHYuY2hpbGRyZW4ucHVzaChmKSxyLnB1c2gobSl9ZWxzZSBuLnB1c2goZik7YyYmci5wdXNoKFtmLHR0KGMsZSldKX07cmV0dXJuIHRoaXMuY29sbGVjdERvY3VtZW50U3ltYm9scyhlLHQsaSksbn1jb2xsZWN0RG9jdW1lbnRTeW1ib2xzKGUsdCxuKXt0LmFjY2VwdChyPT57aWYociBpbnN0YW5jZW9mIEN0KXtmb3IoY29uc3QgaSBvZiByLmdldFNlbGVjdG9ycygpLmdldENoaWxkcmVuKCkpaWYoaSBpbnN0YW5jZW9mIHhuKXtjb25zdCBzPUouY3JlYXRlKGUucG9zaXRpb25BdChpLm9mZnNldCksZS5wb3NpdGlvbkF0KHIuZW5kKSk7bihpLmdldFRleHQoKSxLZS5DbGFzcyxzLGksci5nZXREZWNsYXJhdGlvbnMoKSl9fWVsc2UgaWYociBpbnN0YW5jZW9mIGlyKW4oci5nZXROYW1lKCksS2UuVmFyaWFibGUscixyLmdldFZhcmlhYmxlKCksdm9pZCAwKTtlbHNlIGlmKHIgaW5zdGFuY2VvZiBrbiluKHIuZ2V0TmFtZSgpLEtlLk1ldGhvZCxyLHIuZ2V0SWRlbnRpZmllcigpLHIuZ2V0RGVjbGFyYXRpb25zKCkpO2Vsc2UgaWYociBpbnN0YW5jZW9mIHJyKW4oci5nZXROYW1lKCksS2UuRnVuY3Rpb24scixyLmdldElkZW50aWZpZXIoKSxyLmdldERlY2xhcmF0aW9ucygpKTtlbHNlIGlmKHIgaW5zdGFuY2VvZiBzbCl7Y29uc3QgaT1nKCJAa2V5ZnJhbWVzIHswfSIsci5nZXROYW1lKCkpO24oaSxLZS5DbGFzcyxyLHIuZ2V0SWRlbnRpZmllcigpLHIuZ2V0RGVjbGFyYXRpb25zKCkpfWVsc2UgaWYociBpbnN0YW5jZW9mIHJsKXtjb25zdCBpPWcoIkBmb250LWZhY2UiKTtuKGksS2UuQ2xhc3Mscix2b2lkIDAsci5nZXREZWNsYXJhdGlvbnMoKSl9ZWxzZSBpZihyIGluc3RhbmNlb2YgTmkpe2NvbnN0IGk9ci5nZXRDaGlsZCgwKTtpZihpIGluc3RhbmNlb2Ygb2wpe2NvbnN0IHM9IkBtZWRpYSAiK2kuZ2V0VGV4dCgpO24ocyxLZS5Nb2R1bGUscixpLHIuZ2V0RGVjbGFyYXRpb25zKCkpfX1yZXR1cm4hMH0pfWZpbmREb2N1bWVudENvbG9ycyhlLHQpe2NvbnN0IG49W107cmV0dXJuIHQuYWNjZXB0KHI9Pntjb25zdCBpPXZtKHIsZSk7cmV0dXJuIGkmJm4ucHVzaChpKSwhMH0pLG59Z2V0Q29sb3JQcmVzZW50YXRpb25zKGUsdCxuLHIpe2NvbnN0IGk9W10scz1NYXRoLnJvdW5kKG4ucmVkKjI1NSksYT1NYXRoLnJvdW5kKG4uZ3JlZW4qMjU1KSxsPU1hdGgucm91bmQobi5ibHVlKjI1NSk7bGV0IG87bi5hbHBoYT09PTE/bz1gcmdiKCR7c30sICR7YX0sICR7bH0pYDpvPWByZ2JhKCR7c30sICR7YX0sICR7bH0sICR7bi5hbHBoYX0pYCxpLnB1c2goe2xhYmVsOm8sdGV4dEVkaXQ6VS5yZXBsYWNlKHIsbyl9KSxuLmFscGhhPT09MT9vPWAjJHtFdChzKX0ke0V0KGEpfSR7RXQobCl9YDpvPWAjJHtFdChzKX0ke0V0KGEpfSR7RXQobCl9JHtFdChNYXRoLnJvdW5kKG4uYWxwaGEqMjU1KSl9YCxpLnB1c2goe2xhYmVsOm8sdGV4dEVkaXQ6VS5yZXBsYWNlKHIsbyl9KTtjb25zdCBjPWdjKG4pO2MuYT09PTE/bz1gaHNsKCR7Yy5ofSwgJHtNYXRoLnJvdW5kKGMucyoxMDApfSUsICR7TWF0aC5yb3VuZChjLmwqMTAwKX0lKWA6bz1gaHNsYSgke2MuaH0sICR7TWF0aC5yb3VuZChjLnMqMTAwKX0lLCAke01hdGgucm91bmQoYy5sKjEwMCl9JSwgJHtjLmF9KWAsaS5wdXNoKHtsYWJlbDpvLHRleHRFZGl0OlUucmVwbGFjZShyLG8pfSk7Y29uc3QgZD1ZcChuKTtyZXR1cm4gZC5hPT09MT9vPWBod2IoJHtkLmh9ICR7TWF0aC5yb3VuZChkLncqMTAwKX0lICR7TWF0aC5yb3VuZChkLmIqMTAwKX0lKWA6bz1gaHdiKCR7ZC5ofSAke01hdGgucm91bmQoZC53KjEwMCl9JSAke01hdGgucm91bmQoZC5iKjEwMCl9JSAvICR7ZC5hfSlgLGkucHVzaCh7bGFiZWw6byx0ZXh0RWRpdDpVLnJlcGxhY2UocixvKX0pLGl9cHJlcGFyZVJlbmFtZShlLHQsbil7Y29uc3Qgcj10aGlzLmdldEhpZ2hsaWdodE5vZGUoZSx0LG4pO2lmKHIpcmV0dXJuIEouY3JlYXRlKGUucG9zaXRpb25BdChyLm9mZnNldCksZS5wb3NpdGlvbkF0KHIuZW5kKSl9ZG9SZW5hbWUoZSx0LG4scil7Y29uc3Qgcz10aGlzLmZpbmREb2N1bWVudEhpZ2hsaWdodHMoZSx0LHIpLm1hcChhPT5VLnJlcGxhY2UoYS5yYW5nZSxuKSk7cmV0dXJue2NoYW5nZXM6e1tlLnVyaV06c319fWFzeW5jIHJlc29sdmVNb2R1bGVSZWZlcmVuY2UoZSx0LG4pe2lmKHVlKHQsImZpbGU6Ly8iKSl7Y29uc3Qgcj13bShlKTtpZihyJiZyIT09Ii4iJiZyIT09Ii4uIil7Y29uc3QgaT1uLnJlc29sdmVSZWZlcmVuY2UoIi8iLHQpLHM9dHModCksYT1hd2FpdCB0aGlzLnJlc29sdmVQYXRoVG9Nb2R1bGUocixzLGkpO2lmKGEpe2NvbnN0IGw9ZS5zdWJzdHJpbmcoci5sZW5ndGgrMSk7cmV0dXJuIEp0KGEsbCl9fX19YXN5bmMgbWFwUmVmZXJlbmNlKGUsdCl7cmV0dXJuIGV9YXN5bmMgcmVzb2x2ZVJlZmVyZW5jZShlLHQsbixyPSExLGk9dGhpcy5kZWZhdWx0U2V0dGluZ3Mpe2lmKGVbMF09PT0ifiImJmVbMV0hPT0iLyImJnRoaXMuZmlsZVN5c3RlbVByb3ZpZGVyKXJldHVybiBlPWUuc3Vic3RyaW5nKDEpLHRoaXMubWFwUmVmZXJlbmNlKGF3YWl0IHRoaXMucmVzb2x2ZU1vZHVsZVJlZmVyZW5jZShlLHQsbikscik7Y29uc3Qgcz1hd2FpdCB0aGlzLm1hcFJlZmVyZW5jZShuLnJlc29sdmVSZWZlcmVuY2UoZSx0KSxyKTtpZih0aGlzLnJlc29sdmVNb2R1bGVSZWZlcmVuY2VzKXtpZihzJiZhd2FpdCB0aGlzLmZpbGVFeGlzdHMocykpcmV0dXJuIHM7Y29uc3QgYT1hd2FpdCB0aGlzLm1hcFJlZmVyZW5jZShhd2FpdCB0aGlzLnJlc29sdmVNb2R1bGVSZWZlcmVuY2UoZSx0LG4pLHIpO2lmKGEpcmV0dXJuIGF9aWYocyYmIWF3YWl0IHRoaXMuZmlsZUV4aXN0cyhzKSl7Y29uc3QgYT1uLnJlc29sdmVSZWZlcmVuY2UoIi8iLHQpO2lmKGkmJmEpe2lmKGUgaW4gaSlyZXR1cm4gdGhpcy5tYXBSZWZlcmVuY2UoSnQoYSxpW2VdKSxyKTtjb25zdCBsPWUuaW5kZXhPZigiLyIpLG89YCR7ZS5zdWJzdHJpbmcoMCxsKX0vYDtpZihvIGluIGkpe2NvbnN0IGM9aVtvXS5zbGljZSgwLC0xKTtsZXQgZD1KdChhLGMpO3JldHVybiB0aGlzLm1hcFJlZmVyZW5jZShkPUp0KGQsZS5zdWJzdHJpbmcoby5sZW5ndGgtMSkpLHIpfX19cmV0dXJuIHN9YXN5bmMgcmVzb2x2ZVBhdGhUb01vZHVsZShlLHQsbil7Y29uc3Qgcj1KdCh0LCJub2RlX21vZHVsZXMiLGUsInBhY2thZ2UuanNvbiIpO2lmKGF3YWl0IHRoaXMuZmlsZUV4aXN0cyhyKSlyZXR1cm4gdHMocik7aWYobiYmdC5zdGFydHNXaXRoKG4pJiZ0Lmxlbmd0aCE9PW4ubGVuZ3RoKXJldHVybiB0aGlzLnJlc29sdmVQYXRoVG9Nb2R1bGUoZSx0cyh0KSxuKX1hc3luYyBmaWxlRXhpc3RzKGUpe2lmKCF0aGlzLmZpbGVTeXN0ZW1Qcm92aWRlcilyZXR1cm4hMTt0cnl7Y29uc3QgdD1hd2FpdCB0aGlzLmZpbGVTeXN0ZW1Qcm92aWRlci5zdGF0KGUpO3JldHVybiEodC50eXBlPT09Um4uVW5rbm93biYmdC5zaXplPT09LTEpfWNhdGNoe3JldHVybiExfX19O2Z1bmN0aW9uIHZtKGUsdCl7Y29uc3Qgbj1RcChlKTtpZihuKXtjb25zdCByPXR0KGUsdCk7cmV0dXJue2NvbG9yOm4scmFuZ2U6cn19cmV0dXJuIG51bGx9ZnVuY3Rpb24gdHQoZSx0KXtyZXR1cm4gSi5jcmVhdGUodC5wb3NpdGlvbkF0KGUub2Zmc2V0KSx0LnBvc2l0aW9uQXQoZS5lbmQpKX1mdW5jdGlvbiBQYyhlLHQpe2NvbnN0IG49dC5zdGFydC5saW5lLHI9dC5lbmQubGluZSxpPWUuc3RhcnQubGluZSxzPWUuZW5kLmxpbmU7cmV0dXJuIShuPGl8fHI8aXx8bj5zfHxyPnN8fG49PT1pJiZ0LnN0YXJ0LmNoYXJhY3RlcjxlLnN0YXJ0LmNoYXJhY3Rlcnx8cj09PXMmJnQuZW5kLmNoYXJhY3Rlcj5lLmVuZC5jaGFyYWN0ZXIpfWZ1bmN0aW9uIFRjKGUpe2lmKGUudHlwZT09PWIuU2VsZWN0b3J8fGUgaW5zdGFuY2VvZiBJZSYmZS5wYXJlbnQmJmUucGFyZW50IGluc3RhbmNlb2YgRmkmJmUuaXNDdXN0b21Qcm9wZXJ0eSlyZXR1cm4gR3QuV3JpdGU7aWYoZS5wYXJlbnQpc3dpdGNoKGUucGFyZW50LnR5cGUpe2Nhc2UgYi5GdW5jdGlvbkRlY2xhcmF0aW9uOmNhc2UgYi5NaXhpbkRlY2xhcmF0aW9uOmNhc2UgYi5LZXlmcmFtZTpjYXNlIGIuVmFyaWFibGVEZWNsYXJhdGlvbjpjYXNlIGIuRnVuY3Rpb25QYXJhbWV0ZXI6cmV0dXJuIEd0LldyaXRlfXJldHVybiBHdC5SZWFkfWZ1bmN0aW9uIEV0KGUpe2NvbnN0IHQ9ZS50b1N0cmluZygxNik7cmV0dXJuIHQubGVuZ3RoIT09Mj8iMCIrdDp0fWZ1bmN0aW9uIHdtKGUpe2NvbnN0IHQ9ZS5pbmRleE9mKCIvIik7aWYodD09PS0xKXJldHVybiIiO2lmKGVbMF09PT0iQCIpe2NvbnN0IG49ZS5pbmRleE9mKCIvIix0KzEpO3JldHVybiBuPT09LTE/ZTplLnN1YnN0cmluZygwLG4pfXJldHVybiBlLnN1YnN0cmluZygwLHQpfXZhciBRdD1GZS5XYXJuaW5nLE9jPUZlLkVycm9yLFRlPUZlLklnbm9yZSxtZT1jbGFzc3tjb25zdHJ1Y3RvcihlLHQsbil7dGhpcy5pZD1lLHRoaXMubWVzc2FnZT10LHRoaXMuZGVmYXVsdFZhbHVlPW59fSx5bT1jbGFzc3tjb25zdHJ1Y3RvcihlLHQsbil7dGhpcy5pZD1lLHRoaXMubWVzc2FnZT10LHRoaXMuZGVmYXVsdFZhbHVlPW59fSx0ZT17QWxsVmVuZG9yUHJlZml4ZXM6bmV3IG1lKCJjb21wYXRpYmxlVmVuZG9yUHJlZml4ZXMiLGcoIldoZW4gdXNpbmcgYSB2ZW5kb3Itc3BlY2lmaWMgcHJlZml4IG1ha2Ugc3VyZSB0byBhbHNvIGluY2x1ZGUgYWxsIG90aGVyIHZlbmRvci1zcGVjaWZpYyBwcm9wZXJ0aWVzIiksVGUpLEluY2x1ZGVTdGFuZGFyZFByb3BlcnR5V2hlblVzaW5nVmVuZG9yUHJlZml4Om5ldyBtZSgidmVuZG9yUHJlZml4IixnKCJXaGVuIHVzaW5nIGEgdmVuZG9yLXNwZWNpZmljIHByZWZpeCBhbHNvIGluY2x1ZGUgdGhlIHN0YW5kYXJkIHByb3BlcnR5IiksUXQpLER1cGxpY2F0ZURlY2xhcmF0aW9uczpuZXcgbWUoImR1cGxpY2F0ZVByb3BlcnRpZXMiLGcoIkRvIG5vdCB1c2UgZHVwbGljYXRlIHN0eWxlIGRlZmluaXRpb25zIiksVGUpLEVtcHR5UnVsZVNldDpuZXcgbWUoImVtcHR5UnVsZXMiLGcoIkRvIG5vdCB1c2UgZW1wdHkgcnVsZXNldHMiKSxRdCksSW1wb3J0U3RhdGVtZW1lbnQ6bmV3IG1lKCJpbXBvcnRTdGF0ZW1lbnQiLGcoIkltcG9ydCBzdGF0ZW1lbnRzIGRvIG5vdCBsb2FkIGluIHBhcmFsbGVsIiksVGUpLEJld2FyZU9mQm94TW9kZWxTaXplOm5ldyBtZSgiYm94TW9kZWwiLGcoIkRvIG5vdCB1c2Ugd2lkdGggb3IgaGVpZ2h0IHdoZW4gdXNpbmcgcGFkZGluZyBvciBib3JkZXIiKSxUZSksVW5pdmVyc2FsU2VsZWN0b3I6bmV3IG1lKCJ1bml2ZXJzYWxTZWxlY3RvciIsZygiVGhlIHVuaXZlcnNhbCBzZWxlY3RvciAoKikgaXMga25vd24gdG8gYmUgc2xvdyIpLFRlKSxaZXJvV2l0aFVuaXQ6bmV3IG1lKCJ6ZXJvVW5pdHMiLGcoIk5vIHVuaXQgZm9yIHplcm8gbmVlZGVkIiksVGUpLFJlcXVpcmVkUHJvcGVydGllc0ZvckZvbnRGYWNlOm5ldyBtZSgiZm9udEZhY2VQcm9wZXJ0aWVzIixnKCJAZm9udC1mYWNlIHJ1bGUgbXVzdCBkZWZpbmUgJ3NyYycgYW5kICdmb250LWZhbWlseScgcHJvcGVydGllcyIpLFF0KSxIZXhDb2xvckxlbmd0aDpuZXcgbWUoImhleENvbG9yTGVuZ3RoIixnKCJIZXggY29sb3JzIG11c3QgY29uc2lzdCBvZiB0aHJlZSwgZm91ciwgc2l4IG9yIGVpZ2h0IGhleCBudW1iZXJzIiksT2MpLEFyZ3NJbkNvbG9yRnVuY3Rpb246bmV3IG1lKCJhcmd1bWVudHNJbkNvbG9yRnVuY3Rpb24iLGcoIkludmFsaWQgbnVtYmVyIG9mIHBhcmFtZXRlcnMiKSxPYyksVW5rbm93blByb3BlcnR5Om5ldyBtZSgidW5rbm93blByb3BlcnRpZXMiLGcoIlVua25vd24gcHJvcGVydHkuIiksUXQpLFVua25vd25BdFJ1bGVzOm5ldyBtZSgidW5rbm93bkF0UnVsZXMiLGcoIlVua25vd24gYXQtcnVsZS4iKSxRdCksSUVTdGFySGFjazpuZXcgbWUoImllSGFjayIsZygiSUUgaGFja3MgYXJlIG9ubHkgbmVjZXNzYXJ5IHdoZW4gc3VwcG9ydGluZyBJRTcgYW5kIG9sZGVyIiksVGUpLFVua25vd25WZW5kb3JTcGVjaWZpY1Byb3BlcnR5Om5ldyBtZSgidW5rbm93blZlbmRvclNwZWNpZmljUHJvcGVydGllcyIsZygiVW5rbm93biB2ZW5kb3Igc3BlY2lmaWMgcHJvcGVydHkuIiksVGUpLFByb3BlcnR5SWdub3JlZER1ZVRvRGlzcGxheTpuZXcgbWUoInByb3BlcnR5SWdub3JlZER1ZVRvRGlzcGxheSIsZygiUHJvcGVydHkgaXMgaWdub3JlZCBkdWUgdG8gdGhlIGRpc3BsYXkuIiksUXQpLEF2b2lkSW1wb3J0YW50Om5ldyBtZSgiaW1wb3J0YW50IixnKCJBdm9pZCB1c2luZyAhaW1wb3J0YW50LiBJdCBpcyBhbiBpbmRpY2F0aW9uIHRoYXQgdGhlIHNwZWNpZmljaXR5IG9mIHRoZSBlbnRpcmUgQ1NTIGhhcyBnb3R0ZW4gb3V0IG9mIGNvbnRyb2wgYW5kIG5lZWRzIHRvIGJlIHJlZmFjdG9yZWQuIiksVGUpLEF2b2lkRmxvYXQ6bmV3IG1lKCJmbG9hdCIsZygiQXZvaWQgdXNpbmcgJ2Zsb2F0Jy4gRmxvYXRzIGxlYWQgdG8gZnJhZ2lsZSBDU1MgdGhhdCBpcyBlYXN5IHRvIGJyZWFrIGlmIG9uZSBhc3BlY3Qgb2YgdGhlIGxheW91dCBjaGFuZ2VzLiIpLFRlKSxBdm9pZElkU2VsZWN0b3I6bmV3IG1lKCJpZFNlbGVjdG9yIixnKCJTZWxlY3RvcnMgc2hvdWxkIG5vdCBjb250YWluIElEcyBiZWNhdXNlIHRoZXNlIHJ1bGVzIGFyZSB0b28gdGlnaHRseSBjb3VwbGVkIHdpdGggdGhlIEhUTUwuIiksVGUpfSx4bT17VmFsaWRQcm9wZXJ0aWVzOm5ldyB5bSgidmFsaWRQcm9wZXJ0aWVzIixnKCJBIGxpc3Qgb2YgcHJvcGVydGllcyB0aGF0IGFyZSBub3QgdmFsaWRhdGVkIGFnYWluc3QgdGhlIGB1bmtub3duUHJvcGVydGllc2AgcnVsZS4iKSxbXSl9LFNtPWNsYXNze2NvbnN0cnVjdG9yKGU9e30pe3RoaXMuY29uZj1lfWdldFJ1bGUoZSl7aWYodGhpcy5jb25mLmhhc093blByb3BlcnR5KGUuaWQpKXtjb25zdCB0PUNtKHRoaXMuY29uZltlLmlkXSk7aWYodClyZXR1cm4gdH1yZXR1cm4gZS5kZWZhdWx0VmFsdWV9Z2V0U2V0dGluZyhlKXtyZXR1cm4gdGhpcy5jb25mW2UuaWRdfX07ZnVuY3Rpb24gQ20oZSl7c3dpdGNoKGUpe2Nhc2UiaWdub3JlIjpyZXR1cm4gRmUuSWdub3JlO2Nhc2Uid2FybmluZyI6cmV0dXJuIEZlLldhcm5pbmc7Y2FzZSJlcnJvciI6cmV0dXJuIEZlLkVycm9yfXJldHVybiBudWxsfXZhciBocz1jbGFzc3tjb25zdHJ1Y3RvcihlKXt0aGlzLmNzc0RhdGFNYW5hZ2VyPWV9ZG9Db2RlQWN0aW9ucyhlLHQsbixyKXtyZXR1cm4gdGhpcy5kb0NvZGVBY3Rpb25zMihlLHQsbixyKS5tYXAoaT0+e2NvbnN0IHM9aS5lZGl0JiZpLmVkaXQuZG9jdW1lbnRDaGFuZ2VzJiZpLmVkaXQuZG9jdW1lbnRDaGFuZ2VzWzBdO3JldHVybiBfdC5jcmVhdGUoaS50aXRsZSwiX2Nzcy5hcHBseUNvZGVBY3Rpb24iLGUudXJpLGUudmVyc2lvbixzJiZzLmVkaXRzKX0pfWRvQ29kZUFjdGlvbnMyKGUsdCxuLHIpe2NvbnN0IGk9W107aWYobi5kaWFnbm9zdGljcylmb3IoY29uc3QgcyBvZiBuLmRpYWdub3N0aWNzKXRoaXMuYXBwZW5kRml4ZXNGb3JNYXJrZXIoZSxyLHMsaSk7cmV0dXJuIGl9Z2V0Rml4ZXNGb3JVbmtub3duUHJvcGVydHkoZSx0LG4scil7Y29uc3QgaT10LmdldE5hbWUoKSxzPVtdO3RoaXMuY3NzRGF0YU1hbmFnZXIuZ2V0UHJvcGVydGllcygpLmZvckVhY2gobD0+e2NvbnN0IG89WHUoaSxsLm5hbWUpO28+PWkubGVuZ3RoLzImJnMucHVzaCh7cHJvcGVydHk6bC5uYW1lLHNjb3JlOm99KX0pLHMuc29ydCgobCxvKT0+by5zY29yZS1sLnNjb3JlfHxsLnByb3BlcnR5LmxvY2FsZUNvbXBhcmUoby5wcm9wZXJ0eSkpO2xldCBhPTM7Zm9yKGNvbnN0IGwgb2Ygcyl7Y29uc3Qgbz1sLnByb3BlcnR5LGM9ZygiUmVuYW1lIHRvICd7MH0nIixvKSxkPVUucmVwbGFjZShuLnJhbmdlLG8pLHU9cWkuY3JlYXRlKGUudXJpLGUudmVyc2lvbiksZj17ZG9jdW1lbnRDaGFuZ2VzOltjci5jcmVhdGUodSxbZF0pXX0sbT1HaS5jcmVhdGUoYyxmLEhpLlF1aWNrRml4KTtpZihtLmRpYWdub3N0aWNzPVtuXSxyLnB1c2gobSksLS1hPD0wKXJldHVybn19YXBwZW5kRml4ZXNGb3JNYXJrZXIoZSx0LG4scil7aWYobi5jb2RlIT09dGUuVW5rbm93blByb3BlcnR5LmlkKXJldHVybjtjb25zdCBpPWUub2Zmc2V0QXQobi5yYW5nZS5zdGFydCkscz1lLm9mZnNldEF0KG4ucmFuZ2UuZW5kKSxhPV9pKHQsaSk7Zm9yKGxldCBsPWEubGVuZ3RoLTE7bD49MDtsLS0pe2NvbnN0IG89YVtsXTtpZihvIGluc3RhbmNlb2YgVWUpe2NvbnN0IGM9by5nZXRQcm9wZXJ0eSgpO2lmKGMmJmMub2Zmc2V0PT09aSYmYy5lbmQ9PT1zKXt0aGlzLmdldEZpeGVzRm9yVW5rbm93blByb3BlcnR5KGUsYyxuLHIpO3JldHVybn19fX19LF9tPWNsYXNze2NvbnN0cnVjdG9yKGUpe3RoaXMuZnVsbFByb3BlcnR5TmFtZT1lLmdldEZ1bGxQcm9wZXJ0eU5hbWUoKS50b0xvd2VyQ2FzZSgpLHRoaXMubm9kZT1lfX07ZnVuY3Rpb24gRG4oZSx0LG4scil7Y29uc3QgaT1lW3RdO2kudmFsdWU9bixuJiYoUmMoaS5wcm9wZXJ0aWVzLHIpfHxpLnByb3BlcnRpZXMucHVzaChyKSl9ZnVuY3Rpb24ga20oZSx0LG4pe0RuKGUsInRvcCIsdCxuKSxEbihlLCJyaWdodCIsdCxuKSxEbihlLCJib3R0b20iLHQsbiksRG4oZSwibGVmdCIsdCxuKX1mdW5jdGlvbiBnZShlLHQsbixyKXt0PT09InRvcCJ8fHQ9PT0icmlnaHQifHx0PT09ImJvdHRvbSJ8fHQ9PT0ibGVmdCI/RG4oZSx0LG4scik6a20oZSxuLHIpfWZ1bmN0aW9uIGRzKGUsdCxuKXtzd2l0Y2godC5sZW5ndGgpe2Nhc2UgMTpnZShlLHZvaWQgMCx0WzBdLG4pO2JyZWFrO2Nhc2UgMjpnZShlLCJ0b3AiLHRbMF0sbiksZ2UoZSwiYm90dG9tIix0WzBdLG4pLGdlKGUsInJpZ2h0Iix0WzFdLG4pLGdlKGUsImxlZnQiLHRbMV0sbik7YnJlYWs7Y2FzZSAzOmdlKGUsInRvcCIsdFswXSxuKSxnZShlLCJyaWdodCIsdFsxXSxuKSxnZShlLCJsZWZ0Iix0WzFdLG4pLGdlKGUsImJvdHRvbSIsdFsyXSxuKTticmVhaztjYXNlIDQ6Z2UoZSwidG9wIix0WzBdLG4pLGdlKGUsInJpZ2h0Iix0WzFdLG4pLGdlKGUsImJvdHRvbSIsdFsyXSxuKSxnZShlLCJsZWZ0Iix0WzNdLG4pO2JyZWFrfX1mdW5jdGlvbiB1cyhlLHQpe2ZvcihsZXQgbiBvZiB0KWlmKGUubWF0Y2hlcyhuKSlyZXR1cm4hMDtyZXR1cm4hMX1mdW5jdGlvbiBJbihlLHQ9ITApe3JldHVybiB0JiZ1cyhlLFsiaW5pdGlhbCIsInVuc2V0Il0pPyExOnBhcnNlRmxvYXQoZS5nZXRUZXh0KCkpIT09MH1mdW5jdGlvbiBXYyhlLHQ9ITApe3JldHVybiBlLm1hcChuPT5JbihuLHQpKX1mdW5jdGlvbiBTcihlLHQ9ITApe3JldHVybiEodXMoZSxbIm5vbmUiLCJoaWRkZW4iXSl8fHQmJnVzKGUsWyJpbml0aWFsIiwidW5zZXQiXSkpfWZ1bmN0aW9uIEVtKGUsdD0hMCl7cmV0dXJuIGUubWFwKG49PlNyKG4sdCkpfWZ1bmN0aW9uIEZtKGUpe2NvbnN0IHQ9ZS5nZXRDaGlsZHJlbigpO2lmKHQubGVuZ3RoPT09MSl7Y29uc3Qgbj10WzBdO3JldHVybiBJbihuKSYmU3Iobil9Zm9yKGNvbnN0IG4gb2YgdCl7Y29uc3Qgcj1uO2lmKCFJbihyLCExKXx8IVNyKHIsITEpKXJldHVybiExfXJldHVybiEwfWZ1bmN0aW9uIFJtKGUpe2NvbnN0IHQ9e3RvcDp7dmFsdWU6ITEscHJvcGVydGllczpbXX0scmlnaHQ6e3ZhbHVlOiExLHByb3BlcnRpZXM6W119LGJvdHRvbTp7dmFsdWU6ITEscHJvcGVydGllczpbXX0sbGVmdDp7dmFsdWU6ITEscHJvcGVydGllczpbXX19O2Zvcihjb25zdCBuIG9mIGUpe2NvbnN0IHI9bi5ub2RlLnZhbHVlO2lmKCEodHlwZW9mIHI+InUiKSlzd2l0Y2gobi5mdWxsUHJvcGVydHlOYW1lKXtjYXNlImJveC1zaXppbmciOnJldHVybnt0b3A6e3ZhbHVlOiExLHByb3BlcnRpZXM6W119LHJpZ2h0Ont2YWx1ZTohMSxwcm9wZXJ0aWVzOltdfSxib3R0b206e3ZhbHVlOiExLHByb3BlcnRpZXM6W119LGxlZnQ6e3ZhbHVlOiExLHByb3BlcnRpZXM6W119fTtjYXNlIndpZHRoIjp0LndpZHRoPW47YnJlYWs7Y2FzZSJoZWlnaHQiOnQuaGVpZ2h0PW47YnJlYWs7ZGVmYXVsdDpjb25zdCBpPW4uZnVsbFByb3BlcnR5TmFtZS5zcGxpdCgiLSIpO3N3aXRjaChpWzBdKXtjYXNlImJvcmRlciI6c3dpdGNoKGlbMV0pe2Nhc2Ugdm9pZCAwOmNhc2UidG9wIjpjYXNlInJpZ2h0IjpjYXNlImJvdHRvbSI6Y2FzZSJsZWZ0Ijpzd2l0Y2goaVsyXSl7Y2FzZSB2b2lkIDA6Z2UodCxpWzFdLEZtKHIpLG4pO2JyZWFrO2Nhc2Uid2lkdGgiOmdlKHQsaVsxXSxJbihyLCExKSxuKTticmVhaztjYXNlInN0eWxlIjpnZSh0LGlbMV0sU3IociwhMCksbik7YnJlYWt9YnJlYWs7Y2FzZSJ3aWR0aCI6ZHModCxXYyhyLmdldENoaWxkcmVuKCksITEpLG4pO2JyZWFrO2Nhc2Uic3R5bGUiOmRzKHQsRW0oci5nZXRDaGlsZHJlbigpLCEwKSxuKTticmVha31icmVhaztjYXNlInBhZGRpbmciOmkubGVuZ3RoPT09MT9kcyh0LFdjKHIuZ2V0Q2hpbGRyZW4oKSwhMCksbik6Z2UodCxpWzFdLEluKHIsITApLG4pO2JyZWFrfWJyZWFrfX1yZXR1cm4gdH12YXIgVmM9Y2xhc3N7Y29uc3RydWN0b3IoKXt0aGlzLmRhdGE9e319YWRkKGUsdCxuKXtsZXQgcj10aGlzLmRhdGFbZV07cnx8KHI9e25vZGVzOltdLG5hbWVzOltdfSx0aGlzLmRhdGFbZV09ciksci5uYW1lcy5wdXNoKHQpLG4mJnIubm9kZXMucHVzaChuKX19LFVjPWNsYXNzIEFye3N0YXRpYyBlbnRyaWVzKHQsbixyLGkscyl7Y29uc3QgYT1uZXcgQXIobixyLGkpO3JldHVybiB0LmFjY2VwdFZpc2l0b3IoYSksYS5jb21wbGV0ZVZhbGlkYXRpb25zKCksYS5nZXRFbnRyaWVzKHMpfWNvbnN0cnVjdG9yKHQsbixyKXt0aGlzLmNzc0RhdGFNYW5hZ2VyPXIsdGhpcy53YXJuaW5ncz1bXSx0aGlzLnNldHRpbmdzPW4sdGhpcy5kb2N1bWVudFRleHQ9dC5nZXRUZXh0KCksdGhpcy5rZXlmcmFtZXM9bmV3IFZjLHRoaXMudmFsaWRQcm9wZXJ0aWVzPXt9O2NvbnN0IGk9bi5nZXRTZXR0aW5nKHhtLlZhbGlkUHJvcGVydGllcyk7QXJyYXkuaXNBcnJheShpKSYmaS5mb3JFYWNoKHM9PntpZih0eXBlb2Ygcz09InN0cmluZyIpe2NvbnN0IGE9cy50cmltKCkudG9Mb3dlckNhc2UoKTthLmxlbmd0aCYmKHRoaXMudmFsaWRQcm9wZXJ0aWVzW2FdPSEwKX19KX1pc1ZhbGlkUHJvcGVydHlEZWNsYXJhdGlvbih0KXtjb25zdCBuPXQuZnVsbFByb3BlcnR5TmFtZTtyZXR1cm4gdGhpcy52YWxpZFByb3BlcnRpZXNbbl19ZmV0Y2godCxuKXtjb25zdCByPVtdO2Zvcihjb25zdCBpIG9mIHQpaS5mdWxsUHJvcGVydHlOYW1lPT09biYmci5wdXNoKGkpO3JldHVybiByfWZldGNoV2l0aFZhbHVlKHQsbixyKXtjb25zdCBpPVtdO2Zvcihjb25zdCBzIG9mIHQpaWYocy5mdWxsUHJvcGVydHlOYW1lPT09bil7Y29uc3QgYT1zLm5vZGUuZ2V0VmFsdWUoKTthJiZ0aGlzLmZpbmRWYWx1ZUluRXhwcmVzc2lvbihhLHIpJiZpLnB1c2gocyl9cmV0dXJuIGl9ZmluZFZhbHVlSW5FeHByZXNzaW9uKHQsbil7bGV0IHI9ITE7cmV0dXJuIHQuYWNjZXB0KGk9PihpLnR5cGU9PT1iLklkZW50aWZpZXImJmkubWF0Y2hlcyhuKSYmKHI9ITApLCFyKSkscn1nZXRFbnRyaWVzKHQ9RmUuV2FybmluZ3xGZS5FcnJvcil7cmV0dXJuIHRoaXMud2FybmluZ3MuZmlsdGVyKG49PihuLmdldExldmVsKCkmdCkhPT0wKX1hZGRFbnRyeSh0LG4scil7Y29uc3QgaT1uZXcgdWwodCxuLHRoaXMuc2V0dGluZ3MuZ2V0UnVsZShuKSxyKTt0aGlzLndhcm5pbmdzLnB1c2goaSl9Z2V0TWlzc2luZ05hbWVzKHQsbil7Y29uc3Qgcj10LnNsaWNlKDApO2ZvcihsZXQgcz0wO3M8bi5sZW5ndGg7cysrKXtjb25zdCBhPXIuaW5kZXhPZihuW3NdKTthIT09LTEmJihyW2FdPW51bGwpfWxldCBpPW51bGw7Zm9yKGxldCBzPTA7czxyLmxlbmd0aDtzKyspe2NvbnN0IGE9cltzXTthJiYoaT09PW51bGw/aT1nKCInezB9JyIsYSk6aT1nKCJ7MH0sICd7MX0nIixpLGEpKX1yZXR1cm4gaX12aXNpdE5vZGUodCl7c3dpdGNoKHQudHlwZSl7Y2FzZSBiLlVua25vd25BdFJ1bGU6cmV0dXJuIHRoaXMudmlzaXRVbmtub3duQXRSdWxlKHQpO2Nhc2UgYi5LZXlmcmFtZTpyZXR1cm4gdGhpcy52aXNpdEtleWZyYW1lKHQpO2Nhc2UgYi5Gb250RmFjZTpyZXR1cm4gdGhpcy52aXNpdEZvbnRGYWNlKHQpO2Nhc2UgYi5SdWxlc2V0OnJldHVybiB0aGlzLnZpc2l0UnVsZVNldCh0KTtjYXNlIGIuU2ltcGxlU2VsZWN0b3I6cmV0dXJuIHRoaXMudmlzaXRTaW1wbGVTZWxlY3Rvcih0KTtjYXNlIGIuRnVuY3Rpb246cmV0dXJuIHRoaXMudmlzaXRGdW5jdGlvbih0KTtjYXNlIGIuTnVtZXJpY1ZhbHVlOnJldHVybiB0aGlzLnZpc2l0TnVtZXJpY1ZhbHVlKHQpO2Nhc2UgYi5JbXBvcnQ6cmV0dXJuIHRoaXMudmlzaXRJbXBvcnQodCk7Y2FzZSBiLkhleENvbG9yVmFsdWU6cmV0dXJuIHRoaXMudmlzaXRIZXhDb2xvclZhbHVlKHQpO2Nhc2UgYi5QcmlvOnJldHVybiB0aGlzLnZpc2l0UHJpbyh0KTtjYXNlIGIuSWRlbnRpZmllclNlbGVjdG9yOnJldHVybiB0aGlzLnZpc2l0SWRlbnRpZmllclNlbGVjdG9yKHQpfXJldHVybiEwfWNvbXBsZXRlVmFsaWRhdGlvbnMoKXt0aGlzLnZhbGlkYXRlS2V5ZnJhbWVzKCl9dmlzaXRVbmtub3duQXRSdWxlKHQpe2NvbnN0IG49dC5nZXRDaGlsZCgwKTtyZXR1cm4hbnx8dGhpcy5jc3NEYXRhTWFuYWdlci5nZXRBdERpcmVjdGl2ZShuLmdldFRleHQoKSk/ITE6KHRoaXMuYWRkRW50cnkobix0ZS5Vbmtub3duQXRSdWxlcyxgVW5rbm93biBhdCBydWxlICR7bi5nZXRUZXh0KCl9YCksITApfXZpc2l0S2V5ZnJhbWUodCl7Y29uc3Qgbj10LmdldEtleXdvcmQoKTtpZighbilyZXR1cm4hMTtjb25zdCByPW4uZ2V0VGV4dCgpO3JldHVybiB0aGlzLmtleWZyYW1lcy5hZGQodC5nZXROYW1lKCkscixyIT09IkBrZXlmcmFtZXMiP246bnVsbCksITB9dmFsaWRhdGVLZXlmcmFtZXMoKXtjb25zdCB0PVsiQC13ZWJraXQta2V5ZnJhbWVzIiwiQC1tb3ota2V5ZnJhbWVzIiwiQC1vLWtleWZyYW1lcyJdO2Zvcihjb25zdCBuIGluIHRoaXMua2V5ZnJhbWVzLmRhdGEpe2NvbnN0IHI9dGhpcy5rZXlmcmFtZXMuZGF0YVtuXS5uYW1lcyxpPXIuaW5kZXhPZigiQGtleWZyYW1lcyIpPT09LTE7aWYoIWkmJnIubGVuZ3RoPT09MSljb250aW51ZTtjb25zdCBzPXRoaXMuZ2V0TWlzc2luZ05hbWVzKHQscik7aWYoc3x8aSlmb3IoY29uc3QgYSBvZiB0aGlzLmtleWZyYW1lcy5kYXRhW25dLm5vZGVzKXtpZihpKXtjb25zdCBsPWcoIkFsd2F5cyBkZWZpbmUgc3RhbmRhcmQgcnVsZSAnQGtleWZyYW1lcycgd2hlbiBkZWZpbmluZyBrZXlmcmFtZXMuIik7dGhpcy5hZGRFbnRyeShhLHRlLkluY2x1ZGVTdGFuZGFyZFByb3BlcnR5V2hlblVzaW5nVmVuZG9yUHJlZml4LGwpfWlmKHMpe2NvbnN0IGw9ZygiQWx3YXlzIGluY2x1ZGUgYWxsIHZlbmRvciBzcGVjaWZpYyBydWxlczogTWlzc2luZzogezB9IixzKTt0aGlzLmFkZEVudHJ5KGEsdGUuQWxsVmVuZG9yUHJlZml4ZXMsbCl9fX1yZXR1cm4hMH12aXNpdFNpbXBsZVNlbGVjdG9yKHQpe2NvbnN0IG49dGhpcy5kb2N1bWVudFRleHQuY2hhckF0KHQub2Zmc2V0KTtyZXR1cm4gdC5sZW5ndGg9PT0xJiZuPT09IioiJiZ0aGlzLmFkZEVudHJ5KHQsdGUuVW5pdmVyc2FsU2VsZWN0b3IpLCEwfXZpc2l0SWRlbnRpZmllclNlbGVjdG9yKHQpe3JldHVybiB0aGlzLmFkZEVudHJ5KHQsdGUuQXZvaWRJZFNlbGVjdG9yKSwhMH12aXNpdEltcG9ydCh0KXtyZXR1cm4gdGhpcy5hZGRFbnRyeSh0LHRlLkltcG9ydFN0YXRlbWVtZW50KSwhMH12aXNpdFJ1bGVTZXQodCl7Y29uc3Qgbj10LmdldERlY2xhcmF0aW9ucygpO2lmKCFuKXJldHVybiExO24uaGFzQ2hpbGRyZW4oKXx8dGhpcy5hZGRFbnRyeSh0LmdldFNlbGVjdG9ycygpLHRlLkVtcHR5UnVsZVNldCk7Y29uc3Qgcj1bXTtmb3IoY29uc3QgbyBvZiBuLmdldENoaWxkcmVuKCkpbyBpbnN0YW5jZW9mIFVlJiZyLnB1c2gobmV3IF9tKG8pKTtjb25zdCBpPVJtKHIpO2lmKGkud2lkdGgpe2xldCBvPVtdO2lmKGkucmlnaHQudmFsdWUmJihvPXZyKG8saS5yaWdodC5wcm9wZXJ0aWVzKSksaS5sZWZ0LnZhbHVlJiYobz12cihvLGkubGVmdC5wcm9wZXJ0aWVzKSksby5sZW5ndGghPT0wKXtmb3IoY29uc3QgYyBvZiBvKXRoaXMuYWRkRW50cnkoYy5ub2RlLHRlLkJld2FyZU9mQm94TW9kZWxTaXplKTt0aGlzLmFkZEVudHJ5KGkud2lkdGgubm9kZSx0ZS5CZXdhcmVPZkJveE1vZGVsU2l6ZSl9fWlmKGkuaGVpZ2h0KXtsZXQgbz1bXTtpZihpLnRvcC52YWx1ZSYmKG89dnIobyxpLnRvcC5wcm9wZXJ0aWVzKSksaS5ib3R0b20udmFsdWUmJihvPXZyKG8saS5ib3R0b20ucHJvcGVydGllcykpLG8ubGVuZ3RoIT09MCl7Zm9yKGNvbnN0IGMgb2Ygbyl0aGlzLmFkZEVudHJ5KGMubm9kZSx0ZS5CZXdhcmVPZkJveE1vZGVsU2l6ZSk7dGhpcy5hZGRFbnRyeShpLmhlaWdodC5ub2RlLHRlLkJld2FyZU9mQm94TW9kZWxTaXplKX19bGV0IHM9dGhpcy5mZXRjaFdpdGhWYWx1ZShyLCJkaXNwbGF5IiwiaW5saW5lLWJsb2NrIik7aWYocy5sZW5ndGg+MCl7Y29uc3Qgbz10aGlzLmZldGNoKHIsImZsb2F0Iik7Zm9yKGxldCBjPTA7YzxvLmxlbmd0aDtjKyspe2NvbnN0IGQ9b1tjXS5ub2RlLHU9ZC5nZXRWYWx1ZSgpO3UmJiF1Lm1hdGNoZXMoIm5vbmUiKSYmdGhpcy5hZGRFbnRyeShkLHRlLlByb3BlcnR5SWdub3JlZER1ZVRvRGlzcGxheSxnKCJpbmxpbmUtYmxvY2sgaXMgaWdub3JlZCBkdWUgdG8gdGhlIGZsb2F0LiBJZiAnZmxvYXQnIGhhcyBhIHZhbHVlIG90aGVyIHRoYW4gJ25vbmUnLCB0aGUgYm94IGlzIGZsb2F0ZWQgYW5kICdkaXNwbGF5JyBpcyB0cmVhdGVkIGFzICdibG9jayciKSl9fWlmKHM9dGhpcy5mZXRjaFdpdGhWYWx1ZShyLCJkaXNwbGF5IiwiYmxvY2siKSxzLmxlbmd0aD4wKXtjb25zdCBvPXRoaXMuZmV0Y2gociwidmVydGljYWwtYWxpZ24iKTtmb3IobGV0IGM9MDtjPG8ubGVuZ3RoO2MrKyl0aGlzLmFkZEVudHJ5KG9bY10ubm9kZSx0ZS5Qcm9wZXJ0eUlnbm9yZWREdWVUb0Rpc3BsYXksZygiUHJvcGVydHkgaXMgaWdub3JlZCBkdWUgdG8gdGhlIGRpc3BsYXkuIFdpdGggJ2Rpc3BsYXk6IGJsb2NrJywgdmVydGljYWwtYWxpZ24gc2hvdWxkIG5vdCBiZSB1c2VkLiIpKX1jb25zdCBhPXRoaXMuZmV0Y2gociwiZmxvYXQiKTtmb3IobGV0IG89MDtvPGEubGVuZ3RoO28rKyl7Y29uc3QgYz1hW29dO3RoaXMuaXNWYWxpZFByb3BlcnR5RGVjbGFyYXRpb24oYyl8fHRoaXMuYWRkRW50cnkoYy5ub2RlLHRlLkF2b2lkRmxvYXQpfWZvcihsZXQgbz0wO288ci5sZW5ndGg7bysrKXtjb25zdCBjPXJbb107aWYoYy5mdWxsUHJvcGVydHlOYW1lIT09ImJhY2tncm91bmQiJiYhdGhpcy52YWxpZFByb3BlcnRpZXNbYy5mdWxsUHJvcGVydHlOYW1lXSl7Y29uc3QgZD1jLm5vZGUuZ2V0VmFsdWUoKTtpZihkJiZ0aGlzLmRvY3VtZW50VGV4dC5jaGFyQXQoZC5vZmZzZXQpIT09Ii0iKXtjb25zdCB1PXRoaXMuZmV0Y2gocixjLmZ1bGxQcm9wZXJ0eU5hbWUpO2lmKHUubGVuZ3RoPjEpZm9yKGxldCBmPTA7Zjx1Lmxlbmd0aDtmKyspe2NvbnN0IG09dVtmXS5ub2RlLmdldFZhbHVlKCk7bSYmdGhpcy5kb2N1bWVudFRleHQuY2hhckF0KG0ub2Zmc2V0KSE9PSItIiYmdVtmXSE9PWMmJnRoaXMuYWRkRW50cnkoYy5ub2RlLHRlLkR1cGxpY2F0ZURlY2xhcmF0aW9ucyl9fX19aWYoIXQuZ2V0U2VsZWN0b3JzKCkubWF0Y2hlcygiOmV4cG9ydCIpKXtjb25zdCBvPW5ldyBWYztsZXQgYz0hMTtmb3IoY29uc3QgZCBvZiByKXtjb25zdCB1PWQubm9kZTtpZih0aGlzLmlzQ1NTRGVjbGFyYXRpb24odSkpe2xldCBmPWQuZnVsbFByb3BlcnR5TmFtZTtjb25zdCBtPWYuY2hhckF0KDApO2lmKG09PT0iLSIpe2lmKGYuY2hhckF0KDEpIT09Ii0iKXshdGhpcy5jc3NEYXRhTWFuYWdlci5pc0tub3duUHJvcGVydHkoZikmJiF0aGlzLnZhbGlkUHJvcGVydGllc1tmXSYmdGhpcy5hZGRFbnRyeSh1LmdldFByb3BlcnR5KCksdGUuVW5rbm93blZlbmRvclNwZWNpZmljUHJvcGVydHkpO2NvbnN0IHY9dS5nZXROb25QcmVmaXhlZFByb3BlcnR5TmFtZSgpO28uYWRkKHYsZix1LmdldFByb3BlcnR5KCkpfX1lbHNle2NvbnN0IHY9ZjsobT09PSIqInx8bT09PSJfIikmJih0aGlzLmFkZEVudHJ5KHUuZ2V0UHJvcGVydHkoKSx0ZS5JRVN0YXJIYWNrKSxmPWYuc3Vic3RyKDEpKSwhdGhpcy5jc3NEYXRhTWFuYWdlci5pc0tub3duUHJvcGVydHkodikmJiF0aGlzLmNzc0RhdGFNYW5hZ2VyLmlzS25vd25Qcm9wZXJ0eShmKSYmKHRoaXMudmFsaWRQcm9wZXJ0aWVzW2ZdfHx0aGlzLmFkZEVudHJ5KHUuZ2V0UHJvcGVydHkoKSx0ZS5Vbmtub3duUHJvcGVydHksZygiVW5rbm93biBwcm9wZXJ0eTogJ3swfSciLHUuZ2V0RnVsbFByb3BlcnR5TmFtZSgpKSkpLG8uYWRkKGYsZixudWxsKX19ZWxzZSBjPSEwfWlmKCFjKWZvcihjb25zdCBkIGluIG8uZGF0YSl7Y29uc3QgdT1vLmRhdGFbZF0sZj11Lm5hbWVzLG09dGhpcy5jc3NEYXRhTWFuYWdlci5pc1N0YW5kYXJkUHJvcGVydHkoZCkmJmYuaW5kZXhPZihkKT09PS0xO2lmKCFtJiZmLmxlbmd0aD09PTEpY29udGludWU7Y29uc3Qgdj1uZXcgU2V0KG0/dS5ub2RlczpbXSk7aWYobSl7Y29uc3Qgaz10aGlzLmdldENvbnRleHR1YWxWZW5kb3JTcGVjaWZpY1BzZXVkb0VsZW1lbnRzKHQpO2Zvcihjb25zdCBEIG9mIHUubm9kZXMpe2NvbnN0IE49RC5nZXROYW1lKCksRT1OLnN1YnN0cmluZygwLE4ubGVuZ3RoLWQubGVuZ3RoKTtrLnNvbWUoUj0+Ui5zdGFydHNXaXRoKEUpKSYmdi5kZWxldGUoRCl9fWNvbnN0IHk9W107Zm9yKGxldCBrPTAsRD1Bci5wcmVmaXhlcy5sZW5ndGg7azxEO2srKyl7Y29uc3QgTj1Bci5wcmVmaXhlc1trXTt0aGlzLmNzc0RhdGFNYW5hZ2VyLmlzU3RhbmRhcmRQcm9wZXJ0eShOK2QpJiZ5LnB1c2goTitkKX1jb25zdCBfPXRoaXMuZ2V0TWlzc2luZ05hbWVzKHksZik7aWYoX3x8bSlmb3IoY29uc3QgayBvZiB1Lm5vZGVzKXtpZihtJiZ2LmhhcyhrKSl7Y29uc3QgRD1nKCJBbHNvIGRlZmluZSB0aGUgc3RhbmRhcmQgcHJvcGVydHkgJ3swfScgZm9yIGNvbXBhdGliaWxpdHkiLGQpO3RoaXMuYWRkRW50cnkoayx0ZS5JbmNsdWRlU3RhbmRhcmRQcm9wZXJ0eVdoZW5Vc2luZ1ZlbmRvclByZWZpeCxEKX1pZihfKXtjb25zdCBEPWcoIkFsd2F5cyBpbmNsdWRlIGFsbCB2ZW5kb3Igc3BlY2lmaWMgcHJvcGVydGllczogTWlzc2luZzogezB9IixfKTt0aGlzLmFkZEVudHJ5KGssdGUuQWxsVmVuZG9yUHJlZml4ZXMsRCl9fX19cmV0dXJuITB9Z2V0Q29udGV4dHVhbFZlbmRvclNwZWNpZmljUHNldWRvRWxlbWVudHModCl7ZnVuY3Rpb24gbihzLGEpe2Zvcihjb25zdCBsIG9mIGEuZ2V0Q2hpbGRyZW4oKSl7aWYobC50eXBlPT09Yi5Qc2V1ZG9TZWxlY3Rvcil7Y29uc3Qgbz1sLmdldENoaWxkcmVuKClbMF0/LmdldFRleHQoKTtvJiZzLmFkZChvKX1uKHMsbCl9fWZ1bmN0aW9uIHIocyxhKXtpZihhLnR5cGU9PT1iLlJ1bGVzZXQpZm9yKGNvbnN0IGwgb2YgYS5nZXRTZWxlY3RvcnMoKS5nZXRDaGlsZHJlbigpKW4ocyxsKTtyZXR1cm4gYS5wYXJlbnQ/cihzLGEucGFyZW50KTp2b2lkIDB9Y29uc3QgaT1uZXcgU2V0O3JldHVybiByKGksdCksQXJyYXkuZnJvbShpKX12aXNpdFByaW8odCl7cmV0dXJuIHRoaXMuYWRkRW50cnkodCx0ZS5Bdm9pZEltcG9ydGFudCksITB9dmlzaXROdW1lcmljVmFsdWUodCl7Y29uc3Qgbj10LmZpbmRQYXJlbnQoYi5GdW5jdGlvbik7aWYobiYmbi5nZXROYW1lKCk9PT0iY2FsYyIpcmV0dXJuITA7Y29uc3Qgcj10LmZpbmRQYXJlbnQoYi5EZWNsYXJhdGlvbik7aWYociYmci5nZXRWYWx1ZSgpKXtjb25zdCBzPXQuZ2V0VmFsdWUoKTtpZighcy51bml0fHxGYy5sZW5ndGguaW5kZXhPZihzLnVuaXQudG9Mb3dlckNhc2UoKSk9PT0tMSlyZXR1cm4hMDtwYXJzZUZsb2F0KHMudmFsdWUpPT09MCYmcy51bml0JiYhdGhpcy52YWxpZFByb3BlcnRpZXNbci5nZXRGdWxsUHJvcGVydHlOYW1lKCldJiZ0aGlzLmFkZEVudHJ5KHQsdGUuWmVyb1dpdGhVbml0KX1yZXR1cm4hMH12aXNpdEZvbnRGYWNlKHQpe2NvbnN0IG49dC5nZXREZWNsYXJhdGlvbnMoKTtpZighbilyZXR1cm4hMTtsZXQgcj0hMSxpPSExLHM9ITE7Zm9yKGNvbnN0IGEgb2Ygbi5nZXRDaGlsZHJlbigpKWlmKHRoaXMuaXNDU1NEZWNsYXJhdGlvbihhKSl7Y29uc3QgbD1hLmdldFByb3BlcnR5KCkuZ2V0TmFtZSgpLnRvTG93ZXJDYXNlKCk7bD09PSJzcmMiJiYocj0hMCksbD09PSJmb250LWZhbWlseSImJihpPSEwKX1lbHNlIHM9ITA7cmV0dXJuIXMmJighcnx8IWkpJiZ0aGlzLmFkZEVudHJ5KHQsdGUuUmVxdWlyZWRQcm9wZXJ0aWVzRm9yRm9udEZhY2UpLCEwfWlzQ1NTRGVjbGFyYXRpb24odCl7aWYodCBpbnN0YW5jZW9mIFVlKXtpZighdC5nZXRWYWx1ZSgpKXJldHVybiExO2NvbnN0IG49dC5nZXRQcm9wZXJ0eSgpO2lmKCFuKXJldHVybiExO2NvbnN0IHI9bi5nZXRJZGVudGlmaWVyKCk7cmV0dXJuISghcnx8ci5jb250YWluc0ludGVycG9sYXRpb24oKSl9cmV0dXJuITF9dmlzaXRIZXhDb2xvclZhbHVlKHQpe2NvbnN0IG49dC5sZW5ndGg7cmV0dXJuIG4hPT05JiZuIT09NyYmbiE9PTUmJm4hPT00JiZ0aGlzLmFkZEVudHJ5KHQsdGUuSGV4Q29sb3JMZW5ndGgpLCExfXZpc2l0RnVuY3Rpb24odCl7Y29uc3Qgbj10LmdldE5hbWUoKS50b0xvd2VyQ2FzZSgpO2xldCByPS0xLGk9MDtzd2l0Y2gobil7Y2FzZSJyZ2IoIjpjYXNlImhzbCgiOnI9MzticmVhaztjYXNlInJnYmEoIjpjYXNlImhzbGEoIjpyPTQ7YnJlYWt9cmV0dXJuIHIhPT0tMSYmKHQuZ2V0QXJndW1lbnRzKCkuYWNjZXB0KHM9PnMgaW5zdGFuY2VvZiBJaT8oaSs9MSwhMSk6ITApLGkhPT1yJiZ0aGlzLmFkZEVudHJ5KHQsdGUuQXJnc0luQ29sb3JGdW5jdGlvbikpLCEwfX07VWMucHJlZml4ZXM9WyItbXMtIiwiLW1vei0iLCItby0iLCItd2Via2l0LSJdO3ZhciBwcz1jbGFzc3tjb25zdHJ1Y3RvcihlKXt0aGlzLmNzc0RhdGFNYW5hZ2VyPWV9Y29uZmlndXJlKGUpe3RoaXMuc2V0dGluZ3M9ZX1kb1ZhbGlkYXRpb24oZSx0LG49dGhpcy5zZXR0aW5ncyl7aWYobiYmbi52YWxpZGF0ZT09PSExKXJldHVybltdO2NvbnN0IHI9W107ci5wdXNoLmFwcGx5KHIsTXAuZW50cmllcyh0KSksci5wdXNoLmFwcGx5KHIsVWMuZW50cmllcyh0LGUsbmV3IFNtKG4mJm4ubGludCksdGhpcy5jc3NEYXRhTWFuYWdlcikpO2NvbnN0IGk9W107Zm9yKGNvbnN0IGEgaW4gdGUpaS5wdXNoKHRlW2FdLmlkKTtmdW5jdGlvbiBzKGEpe2NvbnN0IGw9Si5jcmVhdGUoZS5wb3NpdGlvbkF0KGEuZ2V0T2Zmc2V0KCkpLGUucG9zaXRpb25BdChhLmdldE9mZnNldCgpK2EuZ2V0TGVuZ3RoKCkpKSxvPWUubGFuZ3VhZ2VJZDtyZXR1cm57Y29kZTphLmdldFJ1bGUoKS5pZCxzb3VyY2U6byxtZXNzYWdlOmEuZ2V0TWVzc2FnZSgpLHNldmVyaXR5OmEuZ2V0TGV2ZWwoKT09PUZlLldhcm5pbmc/b3IuV2FybmluZzpvci5FcnJvcixyYW5nZTpsfX1yZXR1cm4gci5maWx0ZXIoYT0+YS5nZXRMZXZlbCgpIT09RmUuSWdub3JlKS5tYXAocyl9fSwkYz00NyxObT0xMCxEbT0xMyxJbT0xMixBbT0zNixNbT0zNSxMbT0xMjMsQW49NjEsem09MzMsUG09NjAsVG09NjIsbXM9NDYsbnQ9cC5DdXN0b21Ub2tlbixmcz1udCsrLENyPW50Kys7bnQrKzt2YXIgQmM9bnQrKyxxYz1udCsrLGdzPW50KyssYnM9bnQrKyxfcj1udCsrO250Kys7dmFyIGpjPWNsYXNzIGV4dGVuZHMgeW57c2Nhbk5leHQoZSl7aWYodGhpcy5zdHJlYW0uYWR2YW5jZUlmQ2hhcihBbSkpe2NvbnN0IHQ9WyIkIl07aWYodGhpcy5pZGVudCh0KSlyZXR1cm4gdGhpcy5maW5pc2hUb2tlbihlLGZzLHQuam9pbigiIikpO3RoaXMuc3RyZWFtLmdvQmFja1RvKGUpfXJldHVybiB0aGlzLnN0cmVhbS5hZHZhbmNlSWZDaGFycyhbTW0sTG1dKT90aGlzLmZpbmlzaFRva2VuKGUsQ3IpOnRoaXMuc3RyZWFtLmFkdmFuY2VJZkNoYXJzKFtBbixBbl0pP3RoaXMuZmluaXNoVG9rZW4oZSxCYyk6dGhpcy5zdHJlYW0uYWR2YW5jZUlmQ2hhcnMoW3ptLEFuXSk/dGhpcy5maW5pc2hUb2tlbihlLHFjKTp0aGlzLnN0cmVhbS5hZHZhbmNlSWZDaGFyKFBtKT90aGlzLnN0cmVhbS5hZHZhbmNlSWZDaGFyKEFuKT90aGlzLmZpbmlzaFRva2VuKGUsYnMpOnRoaXMuZmluaXNoVG9rZW4oZSxwLkRlbGltKTp0aGlzLnN0cmVhbS5hZHZhbmNlSWZDaGFyKFRtKT90aGlzLnN0cmVhbS5hZHZhbmNlSWZDaGFyKEFuKT90aGlzLmZpbmlzaFRva2VuKGUsZ3MpOnRoaXMuZmluaXNoVG9rZW4oZSxwLkRlbGltKTp0aGlzLnN0cmVhbS5hZHZhbmNlSWZDaGFycyhbbXMsbXMsbXNdKT90aGlzLmZpbmlzaFRva2VuKGUsX3IpOnN1cGVyLnNjYW5OZXh0KGUpfWNvbW1lbnQoKXtyZXR1cm4gc3VwZXIuY29tbWVudCgpPyEwOiF0aGlzLmluVVJMJiZ0aGlzLnN0cmVhbS5hZHZhbmNlSWZDaGFycyhbJGMsJGNdKT8odGhpcy5zdHJlYW0uYWR2YW5jZVdoaWxlQ2hhcihlPT57c3dpdGNoKGUpe2Nhc2UgTm06Y2FzZSBEbTpjYXNlIEltOnJldHVybiExO2RlZmF1bHQ6cmV0dXJuITB9fSksITApOiExfX0sdnM9Y2xhc3N7Y29uc3RydWN0b3IoZSx0KXt0aGlzLmlkPWUsdGhpcy5tZXNzYWdlPXR9fSx3cz17RnJvbUV4cGVjdGVkOm5ldyB2cygic2Nzcy1mcm9tZXhwZWN0ZWQiLGcoIidmcm9tJyBleHBlY3RlZCIpKSxUaHJvdWdoT3JUb0V4cGVjdGVkOm5ldyB2cygic2Nzcy10aHJvdWdoZXhwZWN0ZWQiLGcoIid0aHJvdWdoJyBvciAndG8nIGV4cGVjdGVkIikpLEluRXhwZWN0ZWQ6bmV3IHZzKCJzY3NzLWZyb21leHBlY3RlZCIsZygiJ2luJyBleHBlY3RlZCIpKX0sT209Y2xhc3MgZXh0ZW5kcyBicntjb25zdHJ1Y3Rvcigpe3N1cGVyKG5ldyBqYyl9X3BhcnNlU3R5bGVzaGVldFN0YXRlbWVudChlPSExKXtyZXR1cm4gdGhpcy5wZWVrKHAuQXRLZXl3b3JkKT90aGlzLl9wYXJzZVdhcm5BbmREZWJ1ZygpfHx0aGlzLl9wYXJzZUNvbnRyb2xTdGF0ZW1lbnQoKXx8dGhpcy5fcGFyc2VNaXhpbkRlY2xhcmF0aW9uKCl8fHRoaXMuX3BhcnNlTWl4aW5Db250ZW50KCl8fHRoaXMuX3BhcnNlTWl4aW5SZWZlcmVuY2UoKXx8dGhpcy5fcGFyc2VGdW5jdGlvbkRlY2xhcmF0aW9uKCl8fHRoaXMuX3BhcnNlRm9yd2FyZCgpfHx0aGlzLl9wYXJzZVVzZSgpfHx0aGlzLl9wYXJzZVJ1bGVzZXQoZSl8fHN1cGVyLl9wYXJzZVN0eWxlc2hlZXRBdFN0YXRlbWVudChlKTp0aGlzLl9wYXJzZVJ1bGVzZXQoITApfHx0aGlzLl9wYXJzZVZhcmlhYmxlRGVjbGFyYXRpb24oKX1fcGFyc2VJbXBvcnQoKXtpZighdGhpcy5wZWVrS2V5d29yZCgiQGltcG9ydCIpKXJldHVybiBudWxsO2NvbnN0IGU9dGhpcy5jcmVhdGUoUmkpO2lmKHRoaXMuY29uc3VtZVRva2VuKCksIWUuYWRkQ2hpbGQodGhpcy5fcGFyc2VVUklMaXRlcmFsKCkpJiYhZS5hZGRDaGlsZCh0aGlzLl9wYXJzZVN0cmluZ0xpdGVyYWwoKSkpcmV0dXJuIHRoaXMuZmluaXNoKGUseC5VUklPclN0cmluZ0V4cGVjdGVkKTtmb3IoO3RoaXMuYWNjZXB0KHAuQ29tbWEpOylpZighZS5hZGRDaGlsZCh0aGlzLl9wYXJzZVVSSUxpdGVyYWwoKSkmJiFlLmFkZENoaWxkKHRoaXMuX3BhcnNlU3RyaW5nTGl0ZXJhbCgpKSlyZXR1cm4gdGhpcy5maW5pc2goZSx4LlVSSU9yU3RyaW5nRXhwZWN0ZWQpO3JldHVybiB0aGlzLl9jb21wbGV0ZVBhcnNlSW1wb3J0KGUpfV9wYXJzZVZhcmlhYmxlRGVjbGFyYXRpb24oZT1bXSl7aWYoIXRoaXMucGVlayhmcykpcmV0dXJuIG51bGw7Y29uc3QgdD10aGlzLmNyZWF0ZShpcik7aWYoIXQuc2V0VmFyaWFibGUodGhpcy5fcGFyc2VWYXJpYWJsZSgpKSlyZXR1cm4gbnVsbDtpZighdGhpcy5hY2NlcHQocC5Db2xvbikpcmV0dXJuIHRoaXMuZmluaXNoKHQseC5Db2xvbkV4cGVjdGVkKTtpZih0aGlzLnByZXZUb2tlbiYmKHQuY29sb25Qb3NpdGlvbj10aGlzLnByZXZUb2tlbi5vZmZzZXQpLCF0LnNldFZhbHVlKHRoaXMuX3BhcnNlRXhwcigpKSlyZXR1cm4gdGhpcy5maW5pc2godCx4LlZhcmlhYmxlVmFsdWVFeHBlY3RlZCxbXSxlKTtmb3IoO3RoaXMucGVlayhwLkV4Y2xhbWF0aW9uKTspaWYoIXQuYWRkQ2hpbGQodGhpcy5fdHJ5UGFyc2VQcmlvKCkpKXtpZih0aGlzLmNvbnN1bWVUb2tlbigpLCF0aGlzLnBlZWtSZWdFeHAocC5JZGVudCwvXihkZWZhdWx0fGdsb2JhbCkkLykpcmV0dXJuIHRoaXMuZmluaXNoKHQseC5Vbmtub3duS2V5d29yZCk7dGhpcy5jb25zdW1lVG9rZW4oKX1yZXR1cm4gdGhpcy5wZWVrKHAuU2VtaUNvbG9uKSYmKHQuc2VtaWNvbG9uUG9zaXRpb249dGhpcy50b2tlbi5vZmZzZXQpLHRoaXMuZmluaXNoKHQpfV9wYXJzZU1lZGlhQ29uZGl0aW9uKCl7cmV0dXJuIHRoaXMuX3BhcnNlSW50ZXJwb2xhdGlvbigpfHxzdXBlci5fcGFyc2VNZWRpYUNvbmRpdGlvbigpfV9wYXJzZU1lZGlhRmVhdHVyZVJhbmdlT3BlcmF0b3IoKXtyZXR1cm4gdGhpcy5hY2NlcHQoYnMpfHx0aGlzLmFjY2VwdChncyl8fHN1cGVyLl9wYXJzZU1lZGlhRmVhdHVyZVJhbmdlT3BlcmF0b3IoKX1fcGFyc2VNZWRpYUZlYXR1cmVOYW1lKCl7cmV0dXJuIHRoaXMuX3BhcnNlTW9kdWxlTWVtYmVyKCl8fHRoaXMuX3BhcnNlRnVuY3Rpb24oKXx8dGhpcy5fcGFyc2VJZGVudCgpfHx0aGlzLl9wYXJzZVZhcmlhYmxlKCl9X3BhcnNlS2V5ZnJhbWVTZWxlY3Rvcigpe3JldHVybiB0aGlzLl90cnlQYXJzZUtleWZyYW1lU2VsZWN0b3IoKXx8dGhpcy5fcGFyc2VDb250cm9sU3RhdGVtZW50KHRoaXMuX3BhcnNlS2V5ZnJhbWVTZWxlY3Rvci5iaW5kKHRoaXMpKXx8dGhpcy5fcGFyc2VXYXJuQW5kRGVidWcoKXx8dGhpcy5fcGFyc2VNaXhpblJlZmVyZW5jZSgpfHx0aGlzLl9wYXJzZUZ1bmN0aW9uRGVjbGFyYXRpb24oKXx8dGhpcy5fcGFyc2VWYXJpYWJsZURlY2xhcmF0aW9uKCl8fHRoaXMuX3BhcnNlTWl4aW5Db250ZW50KCl9X3BhcnNlVmFyaWFibGUoKXtpZighdGhpcy5wZWVrKGZzKSlyZXR1cm4gbnVsbDtjb25zdCBlPXRoaXMuY3JlYXRlKHppKTtyZXR1cm4gdGhpcy5jb25zdW1lVG9rZW4oKSxlfV9wYXJzZU1vZHVsZU1lbWJlcigpe2NvbnN0IGU9dGhpcy5tYXJrKCksdD10aGlzLmNyZWF0ZShkbCk7cmV0dXJuIHQuc2V0SWRlbnRpZmllcih0aGlzLl9wYXJzZUlkZW50KFtHLk1vZHVsZV0pKT90aGlzLmhhc1doaXRlc3BhY2UoKXx8IXRoaXMuYWNjZXB0RGVsaW0oIi4iKXx8dGhpcy5oYXNXaGl0ZXNwYWNlKCk/KHRoaXMucmVzdG9yZUF0TWFyayhlKSxudWxsKTp0LmFkZENoaWxkKHRoaXMuX3BhcnNlVmFyaWFibGUoKXx8dGhpcy5fcGFyc2VGdW5jdGlvbigpKT90OnRoaXMuZmluaXNoKHQseC5JZGVudGlmaWVyT3JWYXJpYWJsZUV4cGVjdGVkKTpudWxsfV9wYXJzZUlkZW50KGUpe2lmKCF0aGlzLnBlZWsocC5JZGVudCkmJiF0aGlzLnBlZWsoQ3IpJiYhdGhpcy5wZWVrRGVsaW0oIi0iKSlyZXR1cm4gbnVsbDtjb25zdCB0PXRoaXMuY3JlYXRlKEllKTt0LnJlZmVyZW5jZVR5cGVzPWUsdC5pc0N1c3RvbVByb3BlcnR5PXRoaXMucGVla1JlZ0V4cChwLklkZW50LC9eLS0vKTtsZXQgbj0hMTtjb25zdCByPSgpPT57Y29uc3QgaT10aGlzLm1hcmsoKTtyZXR1cm4gdGhpcy5hY2NlcHREZWxpbSgiLSIpJiYodGhpcy5oYXNXaGl0ZXNwYWNlKCl8fHRoaXMuYWNjZXB0RGVsaW0oIi0iKSx0aGlzLmhhc1doaXRlc3BhY2UoKSk/KHRoaXMucmVzdG9yZUF0TWFyayhpKSxudWxsKTp0aGlzLl9wYXJzZUludGVycG9sYXRpb24oKX07Zm9yKDsodGhpcy5hY2NlcHQocC5JZGVudCl8fHQuYWRkQ2hpbGQocigpKXx8biYmdGhpcy5hY2NlcHRSZWdleHAoL15bXHctXS8pKSYmKG49ITAsIXRoaXMuaGFzV2hpdGVzcGFjZSgpKTspO3JldHVybiBuP3RoaXMuZmluaXNoKHQpOm51bGx9X3BhcnNlVGVybUV4cHJlc3Npb24oKXtyZXR1cm4gdGhpcy5fcGFyc2VNb2R1bGVNZW1iZXIoKXx8dGhpcy5fcGFyc2VWYXJpYWJsZSgpfHx0aGlzLl9wYXJzZU5lc3RpbmdTZWxlY3RvcigpfHxzdXBlci5fcGFyc2VUZXJtRXhwcmVzc2lvbigpfV9wYXJzZUludGVycG9sYXRpb24oKXtpZih0aGlzLnBlZWsoQ3IpKXtjb25zdCBlPXRoaXMuY3JlYXRlKExpKTtyZXR1cm4gdGhpcy5jb25zdW1lVG9rZW4oKSwhZS5hZGRDaGlsZCh0aGlzLl9wYXJzZUV4cHIoKSkmJiF0aGlzLl9wYXJzZU5lc3RpbmdTZWxlY3RvcigpP3RoaXMuYWNjZXB0KHAuQ3VybHlSKT90aGlzLmZpbmlzaChlKTp0aGlzLmZpbmlzaChlLHguRXhwcmVzc2lvbkV4cGVjdGVkKTp0aGlzLmFjY2VwdChwLkN1cmx5Uik/dGhpcy5maW5pc2goZSk6dGhpcy5maW5pc2goZSx4LlJpZ2h0Q3VybHlFeHBlY3RlZCl9cmV0dXJuIG51bGx9X3BhcnNlT3BlcmF0b3IoKXtpZih0aGlzLnBlZWsoQmMpfHx0aGlzLnBlZWsocWMpfHx0aGlzLnBlZWsoZ3MpfHx0aGlzLnBlZWsoYnMpfHx0aGlzLnBlZWtEZWxpbSgiPiIpfHx0aGlzLnBlZWtEZWxpbSgiPCIpfHx0aGlzLnBlZWtJZGVudCgiYW5kIil8fHRoaXMucGVla0lkZW50KCJvciIpfHx0aGlzLnBlZWtEZWxpbSgiJSIpKXtjb25zdCBlPXRoaXMuY3JlYXRlTm9kZShiLk9wZXJhdG9yKTtyZXR1cm4gdGhpcy5jb25zdW1lVG9rZW4oKSx0aGlzLmZpbmlzaChlKX1yZXR1cm4gc3VwZXIuX3BhcnNlT3BlcmF0b3IoKX1fcGFyc2VVbmFyeU9wZXJhdG9yKCl7aWYodGhpcy5wZWVrSWRlbnQoIm5vdCIpKXtjb25zdCBlPXRoaXMuY3JlYXRlKE8pO3JldHVybiB0aGlzLmNvbnN1bWVUb2tlbigpLHRoaXMuZmluaXNoKGUpfXJldHVybiBzdXBlci5fcGFyc2VVbmFyeU9wZXJhdG9yKCl9X3BhcnNlUnVsZVNldERlY2xhcmF0aW9uKCl7cmV0dXJuIHRoaXMucGVlayhwLkF0S2V5d29yZCk/dGhpcy5fcGFyc2VLZXlmcmFtZSgpfHx0aGlzLl9wYXJzZUltcG9ydCgpfHx0aGlzLl9wYXJzZU1lZGlhKCEwKXx8dGhpcy5fcGFyc2VGb250RmFjZSgpfHx0aGlzLl9wYXJzZVdhcm5BbmREZWJ1ZygpfHx0aGlzLl9wYXJzZUNvbnRyb2xTdGF0ZW1lbnQoKXx8dGhpcy5fcGFyc2VGdW5jdGlvbkRlY2xhcmF0aW9uKCl8fHRoaXMuX3BhcnNlRXh0ZW5kcygpfHx0aGlzLl9wYXJzZU1peGluUmVmZXJlbmNlKCl8fHRoaXMuX3BhcnNlTWl4aW5Db250ZW50KCl8fHRoaXMuX3BhcnNlTWl4aW5EZWNsYXJhdGlvbigpfHx0aGlzLl9wYXJzZVJ1bGVzZXQoITApfHx0aGlzLl9wYXJzZVN1cHBvcnRzKCEwKXx8dGhpcy5fcGFyc2VMYXllcigpfHx0aGlzLl9wYXJzZVByb3BlcnR5QXRSdWxlKCl8fHRoaXMuX3BhcnNlQ29udGFpbmVyKCEwKXx8dGhpcy5fcGFyc2VSdWxlU2V0RGVjbGFyYXRpb25BdFN0YXRlbWVudCgpOnRoaXMuX3BhcnNlVmFyaWFibGVEZWNsYXJhdGlvbigpfHx0aGlzLl90cnlQYXJzZVJ1bGVzZXQoITApfHx0aGlzLl9wYXJzZURlY2xhcmF0aW9uKCl9X3BhcnNlRGVjbGFyYXRpb24oZSl7Y29uc3QgdD10aGlzLl90cnlQYXJzZUN1c3RvbVByb3BlcnR5RGVjbGFyYXRpb24oZSk7aWYodClyZXR1cm4gdDtjb25zdCBuPXRoaXMuY3JlYXRlKFVlKTtpZighbi5zZXRQcm9wZXJ0eSh0aGlzLl9wYXJzZVByb3BlcnR5KCkpKXJldHVybiBudWxsO2lmKCF0aGlzLmFjY2VwdChwLkNvbG9uKSlyZXR1cm4gdGhpcy5maW5pc2gobix4LkNvbG9uRXhwZWN0ZWQsW3AuQ29sb25dLGV8fFtwLlNlbWlDb2xvbl0pO3RoaXMucHJldlRva2VuJiYobi5jb2xvblBvc2l0aW9uPXRoaXMucHJldlRva2VuLm9mZnNldCk7bGV0IHI9ITE7aWYobi5zZXRWYWx1ZSh0aGlzLl9wYXJzZUV4cHIoKSkmJihyPSEwLG4uYWRkQ2hpbGQodGhpcy5fcGFyc2VQcmlvKCkpKSx0aGlzLnBlZWsocC5DdXJseUwpKW4uc2V0TmVzdGVkUHJvcGVydGllcyh0aGlzLl9wYXJzZU5lc3RlZFByb3BlcnRpZXMoKSk7ZWxzZSBpZighcilyZXR1cm4gdGhpcy5maW5pc2gobix4LlByb3BlcnR5VmFsdWVFeHBlY3RlZCk7cmV0dXJuIHRoaXMucGVlayhwLlNlbWlDb2xvbikmJihuLnNlbWljb2xvblBvc2l0aW9uPXRoaXMudG9rZW4ub2Zmc2V0KSx0aGlzLmZpbmlzaChuKX1fcGFyc2VOZXN0ZWRQcm9wZXJ0aWVzKCl7Y29uc3QgZT10aGlzLmNyZWF0ZShpbCk7cmV0dXJuIHRoaXMuX3BhcnNlQm9keShlLHRoaXMuX3BhcnNlRGVjbGFyYXRpb24uYmluZCh0aGlzKSl9X3BhcnNlRXh0ZW5kcygpe2lmKHRoaXMucGVla0tleXdvcmQoIkBleHRlbmQiKSl7Y29uc3QgZT10aGlzLmNyZWF0ZShfbik7aWYodGhpcy5jb25zdW1lVG9rZW4oKSwhZS5nZXRTZWxlY3RvcnMoKS5hZGRDaGlsZCh0aGlzLl9wYXJzZVNpbXBsZVNlbGVjdG9yKCkpKXJldHVybiB0aGlzLmZpbmlzaChlLHguU2VsZWN0b3JFeHBlY3RlZCk7Zm9yKDt0aGlzLmFjY2VwdChwLkNvbW1hKTspZS5nZXRTZWxlY3RvcnMoKS5hZGRDaGlsZCh0aGlzLl9wYXJzZVNpbXBsZVNlbGVjdG9yKCkpO3JldHVybiB0aGlzLmFjY2VwdChwLkV4Y2xhbWF0aW9uKSYmIXRoaXMuYWNjZXB0SWRlbnQoIm9wdGlvbmFsIik/dGhpcy5maW5pc2goZSx4LlVua25vd25LZXl3b3JkKTp0aGlzLmZpbmlzaChlKX1yZXR1cm4gbnVsbH1fcGFyc2VTaW1wbGVTZWxlY3RvckJvZHkoKXtyZXR1cm4gdGhpcy5fcGFyc2VTZWxlY3RvclBsYWNlaG9sZGVyKCl8fHN1cGVyLl9wYXJzZVNpbXBsZVNlbGVjdG9yQm9keSgpfV9wYXJzZU5lc3RpbmdTZWxlY3Rvcigpe2lmKHRoaXMucGVla0RlbGltKCImIikpe2NvbnN0IGU9dGhpcy5jcmVhdGVOb2RlKGIuU2VsZWN0b3JDb21iaW5hdG9yKTtmb3IodGhpcy5jb25zdW1lVG9rZW4oKTshdGhpcy5oYXNXaGl0ZXNwYWNlKCkmJih0aGlzLmFjY2VwdERlbGltKCItIil8fHRoaXMuYWNjZXB0KHAuTnVtKXx8dGhpcy5hY2NlcHQocC5EaW1lbnNpb24pfHxlLmFkZENoaWxkKHRoaXMuX3BhcnNlSWRlbnQoKSl8fHRoaXMuYWNjZXB0RGVsaW0oIiYiKSk7KTtyZXR1cm4gdGhpcy5maW5pc2goZSl9cmV0dXJuIG51bGx9X3BhcnNlU2VsZWN0b3JQbGFjZWhvbGRlcigpe2lmKHRoaXMucGVla0RlbGltKCIlIikpe2NvbnN0IGU9dGhpcy5jcmVhdGVOb2RlKGIuU2VsZWN0b3JQbGFjZWhvbGRlcik7cmV0dXJuIHRoaXMuY29uc3VtZVRva2VuKCksdGhpcy5fcGFyc2VJZGVudCgpLHRoaXMuZmluaXNoKGUpfWVsc2UgaWYodGhpcy5wZWVrS2V5d29yZCgiQGF0LXJvb3QiKSl7Y29uc3QgZT10aGlzLmNyZWF0ZU5vZGUoYi5TZWxlY3RvclBsYWNlaG9sZGVyKTtpZih0aGlzLmNvbnN1bWVUb2tlbigpLHRoaXMuYWNjZXB0KHAuUGFyZW50aGVzaXNMKSl7aWYoIXRoaXMuYWNjZXB0SWRlbnQoIndpdGgiKSYmIXRoaXMuYWNjZXB0SWRlbnQoIndpdGhvdXQiKSlyZXR1cm4gdGhpcy5maW5pc2goZSx4LklkZW50aWZpZXJFeHBlY3RlZCk7aWYoIXRoaXMuYWNjZXB0KHAuQ29sb24pKXJldHVybiB0aGlzLmZpbmlzaChlLHguQ29sb25FeHBlY3RlZCk7aWYoIWUuYWRkQ2hpbGQodGhpcy5fcGFyc2VJZGVudCgpKSlyZXR1cm4gdGhpcy5maW5pc2goZSx4LklkZW50aWZpZXJFeHBlY3RlZCk7aWYoIXRoaXMuYWNjZXB0KHAuUGFyZW50aGVzaXNSKSlyZXR1cm4gdGhpcy5maW5pc2goZSx4LlJpZ2h0UGFyZW50aGVzaXNFeHBlY3RlZCxbcC5DdXJseVJdKX1yZXR1cm4gdGhpcy5maW5pc2goZSl9cmV0dXJuIG51bGx9X3BhcnNlRWxlbWVudE5hbWUoKXtjb25zdCBlPXRoaXMubWFyaygpLHQ9c3VwZXIuX3BhcnNlRWxlbWVudE5hbWUoKTtyZXR1cm4gdCYmIXRoaXMuaGFzV2hpdGVzcGFjZSgpJiZ0aGlzLnBlZWsocC5QYXJlbnRoZXNpc0wpPyh0aGlzLnJlc3RvcmVBdE1hcmsoZSksbnVsbCk6dH1fdHJ5UGFyc2VQc2V1ZG9JZGVudGlmaWVyKCl7cmV0dXJuIHRoaXMuX3BhcnNlSW50ZXJwb2xhdGlvbigpfHxzdXBlci5fdHJ5UGFyc2VQc2V1ZG9JZGVudGlmaWVyKCl9X3BhcnNlV2FybkFuZERlYnVnKCl7aWYoIXRoaXMucGVla0tleXdvcmQoIkBkZWJ1ZyIpJiYhdGhpcy5wZWVrS2V5d29yZCgiQHdhcm4iKSYmIXRoaXMucGVla0tleXdvcmQoIkBlcnJvciIpKXJldHVybiBudWxsO2NvbnN0IGU9dGhpcy5jcmVhdGVOb2RlKGIuRGVidWcpO3JldHVybiB0aGlzLmNvbnN1bWVUb2tlbigpLGUuYWRkQ2hpbGQodGhpcy5fcGFyc2VFeHByKCkpLHRoaXMuZmluaXNoKGUpfV9wYXJzZUNvbnRyb2xTdGF0ZW1lbnQoZT10aGlzLl9wYXJzZVJ1bGVTZXREZWNsYXJhdGlvbi5iaW5kKHRoaXMpKXtyZXR1cm4gdGhpcy5wZWVrKHAuQXRLZXl3b3JkKT90aGlzLl9wYXJzZUlmU3RhdGVtZW50KGUpfHx0aGlzLl9wYXJzZUZvclN0YXRlbWVudChlKXx8dGhpcy5fcGFyc2VFYWNoU3RhdGVtZW50KGUpfHx0aGlzLl9wYXJzZVdoaWxlU3RhdGVtZW50KGUpOm51bGx9X3BhcnNlSWZTdGF0ZW1lbnQoZSl7cmV0dXJuIHRoaXMucGVla0tleXdvcmQoIkBpZiIpP3RoaXMuX2ludGVybmFsUGFyc2VJZlN0YXRlbWVudChlKTpudWxsfV9pbnRlcm5hbFBhcnNlSWZTdGF0ZW1lbnQoZSl7Y29uc3QgdD10aGlzLmNyZWF0ZShycCk7aWYodGhpcy5jb25zdW1lVG9rZW4oKSwhdC5zZXRFeHByZXNzaW9uKHRoaXMuX3BhcnNlRXhwcighMCkpKXJldHVybiB0aGlzLmZpbmlzaCh0LHguRXhwcmVzc2lvbkV4cGVjdGVkKTtpZih0aGlzLl9wYXJzZUJvZHkodCxlKSx0aGlzLmFjY2VwdEtleXdvcmQoIkBlbHNlIikpe2lmKHRoaXMucGVla0lkZW50KCJpZiIpKXQuc2V0RWxzZUNsYXVzZSh0aGlzLl9pbnRlcm5hbFBhcnNlSWZTdGF0ZW1lbnQoZSkpO2Vsc2UgaWYodGhpcy5wZWVrKHAuQ3VybHlMKSl7Y29uc3Qgbj10aGlzLmNyZWF0ZShvcCk7dGhpcy5fcGFyc2VCb2R5KG4sZSksdC5zZXRFbHNlQ2xhdXNlKG4pfX1yZXR1cm4gdGhpcy5maW5pc2godCl9X3BhcnNlRm9yU3RhdGVtZW50KGUpe2lmKCF0aGlzLnBlZWtLZXl3b3JkKCJAZm9yIikpcmV0dXJuIG51bGw7Y29uc3QgdD10aGlzLmNyZWF0ZShpcCk7cmV0dXJuIHRoaXMuY29uc3VtZVRva2VuKCksdC5zZXRWYXJpYWJsZSh0aGlzLl9wYXJzZVZhcmlhYmxlKCkpP3RoaXMuYWNjZXB0SWRlbnQoImZyb20iKT90LmFkZENoaWxkKHRoaXMuX3BhcnNlQmluYXJ5RXhwcigpKT8hdGhpcy5hY2NlcHRJZGVudCgidG8iKSYmIXRoaXMuYWNjZXB0SWRlbnQoInRocm91Z2giKT90aGlzLmZpbmlzaCh0LHdzLlRocm91Z2hPclRvRXhwZWN0ZWQsW3AuQ3VybHlSXSk6dC5hZGRDaGlsZCh0aGlzLl9wYXJzZUJpbmFyeUV4cHIoKSk/dGhpcy5fcGFyc2VCb2R5KHQsZSk6dGhpcy5maW5pc2godCx4LkV4cHJlc3Npb25FeHBlY3RlZCxbcC5DdXJseVJdKTp0aGlzLmZpbmlzaCh0LHguRXhwcmVzc2lvbkV4cGVjdGVkLFtwLkN1cmx5Ul0pOnRoaXMuZmluaXNoKHQsd3MuRnJvbUV4cGVjdGVkLFtwLkN1cmx5Ul0pOnRoaXMuZmluaXNoKHQseC5WYXJpYWJsZU5hbWVFeHBlY3RlZCxbcC5DdXJseVJdKX1fcGFyc2VFYWNoU3RhdGVtZW50KGUpe2lmKCF0aGlzLnBlZWtLZXl3b3JkKCJAZWFjaCIpKXJldHVybiBudWxsO2NvbnN0IHQ9dGhpcy5jcmVhdGUoc3ApO3RoaXMuY29uc3VtZVRva2VuKCk7Y29uc3Qgbj10LmdldFZhcmlhYmxlcygpO2lmKCFuLmFkZENoaWxkKHRoaXMuX3BhcnNlVmFyaWFibGUoKSkpcmV0dXJuIHRoaXMuZmluaXNoKHQseC5WYXJpYWJsZU5hbWVFeHBlY3RlZCxbcC5DdXJseVJdKTtmb3IoO3RoaXMuYWNjZXB0KHAuQ29tbWEpOylpZighbi5hZGRDaGlsZCh0aGlzLl9wYXJzZVZhcmlhYmxlKCkpKXJldHVybiB0aGlzLmZpbmlzaCh0LHguVmFyaWFibGVOYW1lRXhwZWN0ZWQsW3AuQ3VybHlSXSk7cmV0dXJuIHRoaXMuZmluaXNoKG4pLHRoaXMuYWNjZXB0SWRlbnQoImluIik/dC5hZGRDaGlsZCh0aGlzLl9wYXJzZUV4cHIoKSk/dGhpcy5fcGFyc2VCb2R5KHQsZSk6dGhpcy5maW5pc2godCx4LkV4cHJlc3Npb25FeHBlY3RlZCxbcC5DdXJseVJdKTp0aGlzLmZpbmlzaCh0LHdzLkluRXhwZWN0ZWQsW3AuQ3VybHlSXSl9X3BhcnNlV2hpbGVTdGF0ZW1lbnQoZSl7aWYoIXRoaXMucGVla0tleXdvcmQoIkB3aGlsZSIpKXJldHVybiBudWxsO2NvbnN0IHQ9dGhpcy5jcmVhdGUoYXApO3JldHVybiB0aGlzLmNvbnN1bWVUb2tlbigpLHQuYWRkQ2hpbGQodGhpcy5fcGFyc2VCaW5hcnlFeHByKCkpP3RoaXMuX3BhcnNlQm9keSh0LGUpOnRoaXMuZmluaXNoKHQseC5FeHByZXNzaW9uRXhwZWN0ZWQsW3AuQ3VybHlSXSl9X3BhcnNlRnVuY3Rpb25Cb2R5RGVjbGFyYXRpb24oKXtyZXR1cm4gdGhpcy5fcGFyc2VWYXJpYWJsZURlY2xhcmF0aW9uKCl8fHRoaXMuX3BhcnNlUmV0dXJuU3RhdGVtZW50KCl8fHRoaXMuX3BhcnNlV2FybkFuZERlYnVnKCl8fHRoaXMuX3BhcnNlQ29udHJvbFN0YXRlbWVudCh0aGlzLl9wYXJzZUZ1bmN0aW9uQm9keURlY2xhcmF0aW9uLmJpbmQodGhpcykpfV9wYXJzZUZ1bmN0aW9uRGVjbGFyYXRpb24oKXtpZighdGhpcy5wZWVrS2V5d29yZCgiQGZ1bmN0aW9uIikpcmV0dXJuIG51bGw7Y29uc3QgZT10aGlzLmNyZWF0ZShycik7aWYodGhpcy5jb25zdW1lVG9rZW4oKSwhZS5zZXRJZGVudGlmaWVyKHRoaXMuX3BhcnNlSWRlbnQoW0cuRnVuY3Rpb25dKSkpcmV0dXJuIHRoaXMuZmluaXNoKGUseC5JZGVudGlmaWVyRXhwZWN0ZWQsW3AuQ3VybHlSXSk7aWYoIXRoaXMuYWNjZXB0KHAuUGFyZW50aGVzaXNMKSlyZXR1cm4gdGhpcy5maW5pc2goZSx4LkxlZnRQYXJlbnRoZXNpc0V4cGVjdGVkLFtwLkN1cmx5Ul0pO2lmKGUuZ2V0UGFyYW1ldGVycygpLmFkZENoaWxkKHRoaXMuX3BhcnNlUGFyYW1ldGVyRGVjbGFyYXRpb24oKSkpe2Zvcig7dGhpcy5hY2NlcHQocC5Db21tYSkmJiF0aGlzLnBlZWsocC5QYXJlbnRoZXNpc1IpOylpZighZS5nZXRQYXJhbWV0ZXJzKCkuYWRkQ2hpbGQodGhpcy5fcGFyc2VQYXJhbWV0ZXJEZWNsYXJhdGlvbigpKSlyZXR1cm4gdGhpcy5maW5pc2goZSx4LlZhcmlhYmxlTmFtZUV4cGVjdGVkKX1yZXR1cm4gdGhpcy5hY2NlcHQocC5QYXJlbnRoZXNpc1IpP3RoaXMuX3BhcnNlQm9keShlLHRoaXMuX3BhcnNlRnVuY3Rpb25Cb2R5RGVjbGFyYXRpb24uYmluZCh0aGlzKSk6dGhpcy5maW5pc2goZSx4LlJpZ2h0UGFyZW50aGVzaXNFeHBlY3RlZCxbcC5DdXJseVJdKX1fcGFyc2VSZXR1cm5TdGF0ZW1lbnQoKXtpZighdGhpcy5wZWVrS2V5d29yZCgiQHJldHVybiIpKXJldHVybiBudWxsO2NvbnN0IGU9dGhpcy5jcmVhdGVOb2RlKGIuUmV0dXJuU3RhdGVtZW50KTtyZXR1cm4gdGhpcy5jb25zdW1lVG9rZW4oKSxlLmFkZENoaWxkKHRoaXMuX3BhcnNlRXhwcigpKT90aGlzLmZpbmlzaChlKTp0aGlzLmZpbmlzaChlLHguRXhwcmVzc2lvbkV4cGVjdGVkKX1fcGFyc2VNaXhpbkRlY2xhcmF0aW9uKCl7aWYoIXRoaXMucGVla0tleXdvcmQoIkBtaXhpbiIpKXJldHVybiBudWxsO2NvbnN0IGU9dGhpcy5jcmVhdGUoa24pO2lmKHRoaXMuY29uc3VtZVRva2VuKCksIWUuc2V0SWRlbnRpZmllcih0aGlzLl9wYXJzZUlkZW50KFtHLk1peGluXSkpKXJldHVybiB0aGlzLmZpbmlzaChlLHguSWRlbnRpZmllckV4cGVjdGVkLFtwLkN1cmx5Ul0pO2lmKHRoaXMuYWNjZXB0KHAuUGFyZW50aGVzaXNMKSl7aWYoZS5nZXRQYXJhbWV0ZXJzKCkuYWRkQ2hpbGQodGhpcy5fcGFyc2VQYXJhbWV0ZXJEZWNsYXJhdGlvbigpKSl7Zm9yKDt0aGlzLmFjY2VwdChwLkNvbW1hKSYmIXRoaXMucGVlayhwLlBhcmVudGhlc2lzUik7KWlmKCFlLmdldFBhcmFtZXRlcnMoKS5hZGRDaGlsZCh0aGlzLl9wYXJzZVBhcmFtZXRlckRlY2xhcmF0aW9uKCkpKXJldHVybiB0aGlzLmZpbmlzaChlLHguVmFyaWFibGVOYW1lRXhwZWN0ZWQpfWlmKCF0aGlzLmFjY2VwdChwLlBhcmVudGhlc2lzUikpcmV0dXJuIHRoaXMuZmluaXNoKGUseC5SaWdodFBhcmVudGhlc2lzRXhwZWN0ZWQsW3AuQ3VybHlSXSl9cmV0dXJuIHRoaXMuX3BhcnNlQm9keShlLHRoaXMuX3BhcnNlUnVsZVNldERlY2xhcmF0aW9uLmJpbmQodGhpcykpfV9wYXJzZVBhcmFtZXRlckRlY2xhcmF0aW9uKCl7Y29uc3QgZT10aGlzLmNyZWF0ZShucik7cmV0dXJuIGUuc2V0SWRlbnRpZmllcih0aGlzLl9wYXJzZVZhcmlhYmxlKCkpPyh0aGlzLmFjY2VwdChfciksdGhpcy5hY2NlcHQocC5Db2xvbikmJiFlLnNldERlZmF1bHRWYWx1ZSh0aGlzLl9wYXJzZUV4cHIoITApKT90aGlzLmZpbmlzaChlLHguVmFyaWFibGVWYWx1ZUV4cGVjdGVkLFtdLFtwLkNvbW1hLHAuUGFyZW50aGVzaXNSXSk6dGhpcy5maW5pc2goZSkpOm51bGx9X3BhcnNlTWl4aW5Db250ZW50KCl7aWYoIXRoaXMucGVla0tleXdvcmQoIkBjb250ZW50IikpcmV0dXJuIG51bGw7Y29uc3QgZT10aGlzLmNyZWF0ZShScCk7aWYodGhpcy5jb25zdW1lVG9rZW4oKSx0aGlzLmFjY2VwdChwLlBhcmVudGhlc2lzTCkpe2lmKGUuZ2V0QXJndW1lbnRzKCkuYWRkQ2hpbGQodGhpcy5fcGFyc2VGdW5jdGlvbkFyZ3VtZW50KCkpKXtmb3IoO3RoaXMuYWNjZXB0KHAuQ29tbWEpJiYhdGhpcy5wZWVrKHAuUGFyZW50aGVzaXNSKTspaWYoIWUuZ2V0QXJndW1lbnRzKCkuYWRkQ2hpbGQodGhpcy5fcGFyc2VGdW5jdGlvbkFyZ3VtZW50KCkpKXJldHVybiB0aGlzLmZpbmlzaChlLHguRXhwcmVzc2lvbkV4cGVjdGVkKX1pZighdGhpcy5hY2NlcHQocC5QYXJlbnRoZXNpc1IpKXJldHVybiB0aGlzLmZpbmlzaChlLHguUmlnaHRQYXJlbnRoZXNpc0V4cGVjdGVkKX1yZXR1cm4gdGhpcy5maW5pc2goZSl9X3BhcnNlTWl4aW5SZWZlcmVuY2UoKXtpZighdGhpcy5wZWVrS2V5d29yZCgiQGluY2x1ZGUiKSlyZXR1cm4gbnVsbDtjb25zdCBlPXRoaXMuY3JlYXRlKHNyKTt0aGlzLmNvbnN1bWVUb2tlbigpO2NvbnN0IHQ9dGhpcy5fcGFyc2VJZGVudChbRy5NaXhpbl0pO2lmKCFlLnNldElkZW50aWZpZXIodCkpcmV0dXJuIHRoaXMuZmluaXNoKGUseC5JZGVudGlmaWVyRXhwZWN0ZWQsW3AuQ3VybHlSXSk7aWYoIXRoaXMuaGFzV2hpdGVzcGFjZSgpJiZ0aGlzLmFjY2VwdERlbGltKCIuIikmJiF0aGlzLmhhc1doaXRlc3BhY2UoKSl7Y29uc3Qgbj10aGlzLl9wYXJzZUlkZW50KFtHLk1peGluXSk7aWYoIW4pcmV0dXJuIHRoaXMuZmluaXNoKGUseC5JZGVudGlmaWVyRXhwZWN0ZWQsW3AuQ3VybHlSXSk7Y29uc3Qgcj10aGlzLmNyZWF0ZShkbCk7dC5yZWZlcmVuY2VUeXBlcz1bRy5Nb2R1bGVdLHIuc2V0SWRlbnRpZmllcih0KSxlLnNldElkZW50aWZpZXIobiksZS5hZGRDaGlsZChyKX1pZih0aGlzLmFjY2VwdChwLlBhcmVudGhlc2lzTCkpe2lmKGUuZ2V0QXJndW1lbnRzKCkuYWRkQ2hpbGQodGhpcy5fcGFyc2VGdW5jdGlvbkFyZ3VtZW50KCkpKXtmb3IoO3RoaXMuYWNjZXB0KHAuQ29tbWEpJiYhdGhpcy5wZWVrKHAuUGFyZW50aGVzaXNSKTspaWYoIWUuZ2V0QXJndW1lbnRzKCkuYWRkQ2hpbGQodGhpcy5fcGFyc2VGdW5jdGlvbkFyZ3VtZW50KCkpKXJldHVybiB0aGlzLmZpbmlzaChlLHguRXhwcmVzc2lvbkV4cGVjdGVkKX1pZighdGhpcy5hY2NlcHQocC5QYXJlbnRoZXNpc1IpKXJldHVybiB0aGlzLmZpbmlzaChlLHguUmlnaHRQYXJlbnRoZXNpc0V4cGVjdGVkKX1yZXR1cm4odGhpcy5wZWVrSWRlbnQoInVzaW5nIil8fHRoaXMucGVlayhwLkN1cmx5TCkpJiZlLnNldENvbnRlbnQodGhpcy5fcGFyc2VNaXhpbkNvbnRlbnREZWNsYXJhdGlvbigpKSx0aGlzLmZpbmlzaChlKX1fcGFyc2VNaXhpbkNvbnRlbnREZWNsYXJhdGlvbigpe2NvbnN0IGU9dGhpcy5jcmVhdGUoTnApO2lmKHRoaXMuYWNjZXB0SWRlbnQoInVzaW5nIikpe2lmKCF0aGlzLmFjY2VwdChwLlBhcmVudGhlc2lzTCkpcmV0dXJuIHRoaXMuZmluaXNoKGUseC5MZWZ0UGFyZW50aGVzaXNFeHBlY3RlZCxbcC5DdXJseUxdKTtpZihlLmdldFBhcmFtZXRlcnMoKS5hZGRDaGlsZCh0aGlzLl9wYXJzZVBhcmFtZXRlckRlY2xhcmF0aW9uKCkpKXtmb3IoO3RoaXMuYWNjZXB0KHAuQ29tbWEpJiYhdGhpcy5wZWVrKHAuUGFyZW50aGVzaXNSKTspaWYoIWUuZ2V0UGFyYW1ldGVycygpLmFkZENoaWxkKHRoaXMuX3BhcnNlUGFyYW1ldGVyRGVjbGFyYXRpb24oKSkpcmV0dXJuIHRoaXMuZmluaXNoKGUseC5WYXJpYWJsZU5hbWVFeHBlY3RlZCl9aWYoIXRoaXMuYWNjZXB0KHAuUGFyZW50aGVzaXNSKSlyZXR1cm4gdGhpcy5maW5pc2goZSx4LlJpZ2h0UGFyZW50aGVzaXNFeHBlY3RlZCxbcC5DdXJseUxdKX1yZXR1cm4gdGhpcy5wZWVrKHAuQ3VybHlMKSYmdGhpcy5fcGFyc2VCb2R5KGUsdGhpcy5fcGFyc2VNaXhpblJlZmVyZW5jZUJvZHlTdGF0ZW1lbnQuYmluZCh0aGlzKSksdGhpcy5maW5pc2goZSl9X3BhcnNlTWl4aW5SZWZlcmVuY2VCb2R5U3RhdGVtZW50KCl7cmV0dXJuIHRoaXMuX3RyeVBhcnNlS2V5ZnJhbWVTZWxlY3RvcigpfHx0aGlzLl9wYXJzZVJ1bGVTZXREZWNsYXJhdGlvbigpfV9wYXJzZUZ1bmN0aW9uQXJndW1lbnQoKXtjb25zdCBlPXRoaXMuY3JlYXRlKGp0KSx0PXRoaXMubWFyaygpLG49dGhpcy5fcGFyc2VWYXJpYWJsZSgpO2lmKG4paWYodGhpcy5hY2NlcHQocC5Db2xvbikpZS5zZXRJZGVudGlmaWVyKG4pO2Vsc2V7aWYodGhpcy5hY2NlcHQoX3IpKXJldHVybiBlLnNldFZhbHVlKG4pLHRoaXMuZmluaXNoKGUpO3RoaXMucmVzdG9yZUF0TWFyayh0KX1yZXR1cm4gZS5zZXRWYWx1ZSh0aGlzLl9wYXJzZUV4cHIoITApKT8odGhpcy5hY2NlcHQoX3IpLGUuYWRkQ2hpbGQodGhpcy5fcGFyc2VQcmlvKCkpLHRoaXMuZmluaXNoKGUpKTplLnNldFZhbHVlKHRoaXMuX3RyeVBhcnNlUHJpbygpKT90aGlzLmZpbmlzaChlKTpudWxsfV9wYXJzZVVSTEFyZ3VtZW50KCl7Y29uc3QgZT10aGlzLm1hcmsoKSx0PXN1cGVyLl9wYXJzZVVSTEFyZ3VtZW50KCk7aWYoIXR8fCF0aGlzLnBlZWsocC5QYXJlbnRoZXNpc1IpKXt0aGlzLnJlc3RvcmVBdE1hcmsoZSk7Y29uc3Qgbj10aGlzLmNyZWF0ZShPKTtyZXR1cm4gbi5hZGRDaGlsZCh0aGlzLl9wYXJzZUJpbmFyeUV4cHIoKSksdGhpcy5maW5pc2gobil9cmV0dXJuIHR9X3BhcnNlT3BlcmF0aW9uKCl7aWYoIXRoaXMucGVlayhwLlBhcmVudGhlc2lzTCkpcmV0dXJuIG51bGw7Y29uc3QgZT10aGlzLmNyZWF0ZShPKTtmb3IodGhpcy5jb25zdW1lVG9rZW4oKTtlLmFkZENoaWxkKHRoaXMuX3BhcnNlTGlzdEVsZW1lbnQoKSk7KXRoaXMuYWNjZXB0KHAuQ29tbWEpO3JldHVybiB0aGlzLmFjY2VwdChwLlBhcmVudGhlc2lzUik/dGhpcy5maW5pc2goZSk6dGhpcy5maW5pc2goZSx4LlJpZ2h0UGFyZW50aGVzaXNFeHBlY3RlZCl9X3BhcnNlTGlzdEVsZW1lbnQoKXtjb25zdCBlPXRoaXMuY3JlYXRlKERwKSx0PXRoaXMuX3BhcnNlQmluYXJ5RXhwcigpO2lmKCF0KXJldHVybiBudWxsO2lmKHRoaXMuYWNjZXB0KHAuQ29sb24pKXtpZihlLnNldEtleSh0KSwhZS5zZXRWYWx1ZSh0aGlzLl9wYXJzZUJpbmFyeUV4cHIoKSkpcmV0dXJuIHRoaXMuZmluaXNoKGUseC5FeHByZXNzaW9uRXhwZWN0ZWQpfWVsc2UgZS5zZXRWYWx1ZSh0KTtyZXR1cm4gdGhpcy5maW5pc2goZSl9X3BhcnNlVXNlKCl7aWYoIXRoaXMucGVla0tleXdvcmQoIkB1c2UiKSlyZXR1cm4gbnVsbDtjb25zdCBlPXRoaXMuY3JlYXRlKGNwKTtpZih0aGlzLmNvbnN1bWVUb2tlbigpLCFlLmFkZENoaWxkKHRoaXMuX3BhcnNlU3RyaW5nTGl0ZXJhbCgpKSlyZXR1cm4gdGhpcy5maW5pc2goZSx4LlN0cmluZ0xpdGVyYWxFeHBlY3RlZCk7aWYoIXRoaXMucGVlayhwLlNlbWlDb2xvbikmJiF0aGlzLnBlZWsocC5FT0YpKXtpZighdGhpcy5wZWVrUmVnRXhwKHAuSWRlbnQsL2FzfHdpdGgvKSlyZXR1cm4gdGhpcy5maW5pc2goZSx4LlVua25vd25LZXl3b3JkKTtpZih0aGlzLmFjY2VwdElkZW50KCJhcyIpJiYhZS5zZXRJZGVudGlmaWVyKHRoaXMuX3BhcnNlSWRlbnQoW0cuTW9kdWxlXSkpJiYhdGhpcy5hY2NlcHREZWxpbSgiKiIpKXJldHVybiB0aGlzLmZpbmlzaChlLHguSWRlbnRpZmllck9yV2lsZGNhcmRFeHBlY3RlZCk7aWYodGhpcy5hY2NlcHRJZGVudCgid2l0aCIpKXtpZighdGhpcy5hY2NlcHQocC5QYXJlbnRoZXNpc0wpKXJldHVybiB0aGlzLmZpbmlzaChlLHguTGVmdFBhcmVudGhlc2lzRXhwZWN0ZWQsW3AuUGFyZW50aGVzaXNSXSk7aWYoIWUuZ2V0UGFyYW1ldGVycygpLmFkZENoaWxkKHRoaXMuX3BhcnNlTW9kdWxlQ29uZmlnRGVjbGFyYXRpb24oKSkpcmV0dXJuIHRoaXMuZmluaXNoKGUseC5WYXJpYWJsZU5hbWVFeHBlY3RlZCk7Zm9yKDt0aGlzLmFjY2VwdChwLkNvbW1hKSYmIXRoaXMucGVlayhwLlBhcmVudGhlc2lzUik7KWlmKCFlLmdldFBhcmFtZXRlcnMoKS5hZGRDaGlsZCh0aGlzLl9wYXJzZU1vZHVsZUNvbmZpZ0RlY2xhcmF0aW9uKCkpKXJldHVybiB0aGlzLmZpbmlzaChlLHguVmFyaWFibGVOYW1lRXhwZWN0ZWQpO2lmKCF0aGlzLmFjY2VwdChwLlBhcmVudGhlc2lzUikpcmV0dXJuIHRoaXMuZmluaXNoKGUseC5SaWdodFBhcmVudGhlc2lzRXhwZWN0ZWQpfX1yZXR1cm4hdGhpcy5hY2NlcHQocC5TZW1pQ29sb24pJiYhdGhpcy5hY2NlcHQocC5FT0YpP3RoaXMuZmluaXNoKGUseC5TZW1pQ29sb25FeHBlY3RlZCk6dGhpcy5maW5pc2goZSl9X3BhcnNlTW9kdWxlQ29uZmlnRGVjbGFyYXRpb24oKXtjb25zdCBlPXRoaXMuY3JlYXRlKGhwKTtyZXR1cm4gZS5zZXRJZGVudGlmaWVyKHRoaXMuX3BhcnNlVmFyaWFibGUoKSk/IXRoaXMuYWNjZXB0KHAuQ29sb24pfHwhZS5zZXRWYWx1ZSh0aGlzLl9wYXJzZUV4cHIoITApKT90aGlzLmZpbmlzaChlLHguVmFyaWFibGVWYWx1ZUV4cGVjdGVkLFtdLFtwLkNvbW1hLHAuUGFyZW50aGVzaXNSXSk6dGhpcy5hY2NlcHQocC5FeGNsYW1hdGlvbikmJih0aGlzLmhhc1doaXRlc3BhY2UoKXx8IXRoaXMuYWNjZXB0SWRlbnQoImRlZmF1bHQiKSk/dGhpcy5maW5pc2goZSx4LlVua25vd25LZXl3b3JkKTp0aGlzLmZpbmlzaChlKTpudWxsfV9wYXJzZUZvcndhcmQoKXtpZighdGhpcy5wZWVrS2V5d29yZCgiQGZvcndhcmQiKSlyZXR1cm4gbnVsbDtjb25zdCBlPXRoaXMuY3JlYXRlKGRwKTtpZih0aGlzLmNvbnN1bWVUb2tlbigpLCFlLmFkZENoaWxkKHRoaXMuX3BhcnNlU3RyaW5nTGl0ZXJhbCgpKSlyZXR1cm4gdGhpcy5maW5pc2goZSx4LlN0cmluZ0xpdGVyYWxFeHBlY3RlZCk7aWYodGhpcy5hY2NlcHRJZGVudCgiYXMiKSl7Y29uc3QgdD10aGlzLl9wYXJzZUlkZW50KFtHLkZvcndhcmRdKTtpZighZS5zZXRJZGVudGlmaWVyKHQpKXJldHVybiB0aGlzLmZpbmlzaChlLHguSWRlbnRpZmllckV4cGVjdGVkKTtpZih0aGlzLmhhc1doaXRlc3BhY2UoKXx8IXRoaXMuYWNjZXB0RGVsaW0oIioiKSlyZXR1cm4gdGhpcy5maW5pc2goZSx4LldpbGRjYXJkRXhwZWN0ZWQpfWlmKHRoaXMuYWNjZXB0SWRlbnQoIndpdGgiKSl7aWYoIXRoaXMuYWNjZXB0KHAuUGFyZW50aGVzaXNMKSlyZXR1cm4gdGhpcy5maW5pc2goZSx4LkxlZnRQYXJlbnRoZXNpc0V4cGVjdGVkLFtwLlBhcmVudGhlc2lzUl0pO2lmKCFlLmdldFBhcmFtZXRlcnMoKS5hZGRDaGlsZCh0aGlzLl9wYXJzZU1vZHVsZUNvbmZpZ0RlY2xhcmF0aW9uKCkpKXJldHVybiB0aGlzLmZpbmlzaChlLHguVmFyaWFibGVOYW1lRXhwZWN0ZWQpO2Zvcig7dGhpcy5hY2NlcHQocC5Db21tYSkmJiF0aGlzLnBlZWsocC5QYXJlbnRoZXNpc1IpOylpZighZS5nZXRQYXJhbWV0ZXJzKCkuYWRkQ2hpbGQodGhpcy5fcGFyc2VNb2R1bGVDb25maWdEZWNsYXJhdGlvbigpKSlyZXR1cm4gdGhpcy5maW5pc2goZSx4LlZhcmlhYmxlTmFtZUV4cGVjdGVkKTtpZighdGhpcy5hY2NlcHQocC5QYXJlbnRoZXNpc1IpKXJldHVybiB0aGlzLmZpbmlzaChlLHguUmlnaHRQYXJlbnRoZXNpc0V4cGVjdGVkKX1lbHNlIGlmKCh0aGlzLnBlZWtJZGVudCgiaGlkZSIpfHx0aGlzLnBlZWtJZGVudCgic2hvdyIpKSYmIWUuYWRkQ2hpbGQodGhpcy5fcGFyc2VGb3J3YXJkVmlzaWJpbGl0eSgpKSlyZXR1cm4gdGhpcy5maW5pc2goZSx4LklkZW50aWZpZXJPclZhcmlhYmxlRXhwZWN0ZWQpO3JldHVybiF0aGlzLmFjY2VwdChwLlNlbWlDb2xvbikmJiF0aGlzLmFjY2VwdChwLkVPRik/dGhpcy5maW5pc2goZSx4LlNlbWlDb2xvbkV4cGVjdGVkKTp0aGlzLmZpbmlzaChlKX1fcGFyc2VGb3J3YXJkVmlzaWJpbGl0eSgpe2NvbnN0IGU9dGhpcy5jcmVhdGUodXApO2ZvcihlLnNldElkZW50aWZpZXIodGhpcy5fcGFyc2VJZGVudCgpKTtlLmFkZENoaWxkKHRoaXMuX3BhcnNlVmFyaWFibGUoKXx8dGhpcy5fcGFyc2VJZGVudCgpKTspdGhpcy5hY2NlcHQocC5Db21tYSk7cmV0dXJuIGUuZ2V0Q2hpbGRyZW4oKS5sZW5ndGg+MT9lOm51bGx9X3BhcnNlU3VwcG9ydHNDb25kaXRpb24oKXtyZXR1cm4gdGhpcy5fcGFyc2VJbnRlcnBvbGF0aW9uKCl8fHN1cGVyLl9wYXJzZVN1cHBvcnRzQ29uZGl0aW9uKCl9fSxydD1nKCJTYXNzIGRvY3VtZW50YXRpb24iKSxndD1jbGFzcyBqZSBleHRlbmRzIHJze2NvbnN0cnVjdG9yKHQsbil7c3VwZXIoIiQiLHQsbiksSGMoamUuc2Nzc01vZHVsZUxvYWRlcnMpLEhjKGplLnNjc3NNb2R1bGVCdWlsdElucyl9aXNJbXBvcnRQYXRoUGFyZW50KHQpe3JldHVybiB0PT09Yi5Gb3J3YXJkfHx0PT09Yi5Vc2V8fHN1cGVyLmlzSW1wb3J0UGF0aFBhcmVudCh0KX1nZXRDb21wbGV0aW9uRm9ySW1wb3J0UGF0aCh0LG4pe2NvbnN0IHI9dC5nZXRQYXJlbnQoKS50eXBlO2lmKHI9PT1iLkZvcndhcmR8fHI9PT1iLlVzZSlmb3IobGV0IGkgb2YgamUuc2Nzc01vZHVsZUJ1aWx0SW5zKXtjb25zdCBzPXtsYWJlbDppLmxhYmVsLGRvY3VtZW50YXRpb246aS5kb2N1bWVudGF0aW9uLHRleHRFZGl0OlUucmVwbGFjZSh0aGlzLmdldENvbXBsZXRpb25SYW5nZSh0KSxgJyR7aS5sYWJlbH0nYCksa2luZDpWLk1vZHVsZX07bi5pdGVtcy5wdXNoKHMpfXJldHVybiBzdXBlci5nZXRDb21wbGV0aW9uRm9ySW1wb3J0UGF0aCh0LG4pfWNyZWF0ZVJlcGxhY2VGdW5jdGlvbigpe2xldCB0PTE7cmV0dXJuKG4scik9PiJcXCIrcisiOiAkeyIrdCsrKyI6IisoamUudmFyaWFibGVEZWZhdWx0c1tyXXx8IiIpKyJ9In1jcmVhdGVGdW5jdGlvblByb3Bvc2Fscyh0LG4scixpKXtmb3IoY29uc3QgcyBvZiB0KXtjb25zdCBhPXMuZnVuYy5yZXBsYWNlKC9cWz8oXCRcdyspXF0/L2csdGhpcy5jcmVhdGVSZXBsYWNlRnVuY3Rpb24oKSksbz17bGFiZWw6cy5mdW5jLnN1YnN0cigwLHMuZnVuYy5pbmRleE9mKCIoIikpLGRldGFpbDpzLmZ1bmMsZG9jdW1lbnRhdGlvbjpzLmRlc2MsdGV4dEVkaXQ6VS5yZXBsYWNlKHRoaXMuZ2V0Q29tcGxldGlvblJhbmdlKG4pLGEpLGluc2VydFRleHRGb3JtYXQ6UmUuU25pcHBldCxraW5kOlYuRnVuY3Rpb259O3ImJihvLnNvcnRUZXh0PSJ6IiksaS5pdGVtcy5wdXNoKG8pfXJldHVybiBpfWdldENvbXBsZXRpb25zRm9yU2VsZWN0b3IodCxuLHIpe3JldHVybiB0aGlzLmNyZWF0ZUZ1bmN0aW9uUHJvcG9zYWxzKGplLnNlbGVjdG9yRnVuY3MsbnVsbCwhMCxyKSxzdXBlci5nZXRDb21wbGV0aW9uc0ZvclNlbGVjdG9yKHQsbixyKX1nZXRUZXJtUHJvcG9zYWxzKHQsbixyKXtsZXQgaT1qZS5idWlsdEluRnVuY3M7cmV0dXJuIHQmJihpPWkuZmlsdGVyKHM9PiFzLnR5cGV8fCF0LnJlc3RyaWN0aW9uc3x8dC5yZXN0cmljdGlvbnMuaW5kZXhPZihzLnR5cGUpIT09LTEpKSx0aGlzLmNyZWF0ZUZ1bmN0aW9uUHJvcG9zYWxzKGksbiwhMCxyKSxzdXBlci5nZXRUZXJtUHJvcG9zYWxzKHQsbixyKX1nZXRDb2xvclByb3Bvc2Fscyh0LG4scil7cmV0dXJuIHRoaXMuY3JlYXRlRnVuY3Rpb25Qcm9wb3NhbHMoamUuY29sb3JQcm9wb3NhbHMsbiwhMSxyKSxzdXBlci5nZXRDb2xvclByb3Bvc2Fscyh0LG4scil9Z2V0Q29tcGxldGlvbnNGb3JEZWNsYXJhdGlvblByb3BlcnR5KHQsbil7cmV0dXJuIHRoaXMuZ2V0Q29tcGxldGlvbkZvckF0RGlyZWN0aXZlcyhuKSx0aGlzLmdldENvbXBsZXRpb25zRm9yU2VsZWN0b3IobnVsbCwhMCxuKSxzdXBlci5nZXRDb21wbGV0aW9uc0ZvckRlY2xhcmF0aW9uUHJvcGVydHkodCxuKX1nZXRDb21wbGV0aW9uc0ZvckV4dGVuZHNSZWZlcmVuY2UodCxuLHIpe2NvbnN0IGk9dGhpcy5nZXRTeW1ib2xDb250ZXh0KCkuZmluZFN5bWJvbHNBdE9mZnNldCh0aGlzLm9mZnNldCxHLlJ1bGUpO2Zvcihjb25zdCBzIG9mIGkpe2NvbnN0IGE9e2xhYmVsOnMubmFtZSx0ZXh0RWRpdDpVLnJlcGxhY2UodGhpcy5nZXRDb21wbGV0aW9uUmFuZ2Uobikscy5uYW1lKSxraW5kOlYuRnVuY3Rpb259O3IuaXRlbXMucHVzaChhKX1yZXR1cm4gcn1nZXRDb21wbGV0aW9uRm9yQXREaXJlY3RpdmVzKHQpe3JldHVybiB0Lml0ZW1zLnB1c2goLi4uamUuc2Nzc0F0RGlyZWN0aXZlcyksdH1nZXRDb21wbGV0aW9uRm9yVG9wTGV2ZWwodCl7cmV0dXJuIHRoaXMuZ2V0Q29tcGxldGlvbkZvckF0RGlyZWN0aXZlcyh0KSx0aGlzLmdldENvbXBsZXRpb25Gb3JNb2R1bGVMb2FkZXJzKHQpLHN1cGVyLmdldENvbXBsZXRpb25Gb3JUb3BMZXZlbCh0KSx0fWdldENvbXBsZXRpb25Gb3JNb2R1bGVMb2FkZXJzKHQpe3JldHVybiB0Lml0ZW1zLnB1c2goLi4uamUuc2Nzc01vZHVsZUxvYWRlcnMpLHR9fTtndC52YXJpYWJsZURlZmF1bHRzPXskcmVkOiIxIiwkZ3JlZW46IjIiLCRibHVlOiIzIiwkYWxwaGE6IjEuMCIsJGNvbG9yOiIjMDAwMDAwIiwkd2VpZ2h0OiIwLjUiLCRodWU6IjAiLCRzYXR1cmF0aW9uOiIwJSIsJGxpZ2h0bmVzczoiMCUiLCRkZWdyZWVzOiIwIiwkYW1vdW50OiIwIiwkc3RyaW5nOiciIicsJHN1YnN0cmluZzonInMiJywkbnVtYmVyOiIwIiwkbGltaXQ6IjEifSxndC5jb2xvclByb3Bvc2Fscz1be2Z1bmM6InJlZCgkY29sb3IpIixkZXNjOmcoIkdldHMgdGhlIHJlZCBjb21wb25lbnQgb2YgYSBjb2xvci4iKX0se2Z1bmM6ImdyZWVuKCRjb2xvcikiLGRlc2M6ZygiR2V0cyB0aGUgZ3JlZW4gY29tcG9uZW50IG9mIGEgY29sb3IuIil9LHtmdW5jOiJibHVlKCRjb2xvcikiLGRlc2M6ZygiR2V0cyB0aGUgYmx1ZSBjb21wb25lbnQgb2YgYSBjb2xvci4iKX0se2Z1bmM6Im1peCgkY29sb3IsICRjb2xvciwgWyR3ZWlnaHRdKSIsZGVzYzpnKCJNaXhlcyB0d28gY29sb3JzIHRvZ2V0aGVyLiIpfSx7ZnVuYzoiaHVlKCRjb2xvcikiLGRlc2M6ZygiR2V0cyB0aGUgaHVlIGNvbXBvbmVudCBvZiBhIGNvbG9yLiIpfSx7ZnVuYzoic2F0dXJhdGlvbigkY29sb3IpIixkZXNjOmcoIkdldHMgdGhlIHNhdHVyYXRpb24gY29tcG9uZW50IG9mIGEgY29sb3IuIil9LHtmdW5jOiJsaWdodG5lc3MoJGNvbG9yKSIsZGVzYzpnKCJHZXRzIHRoZSBsaWdodG5lc3MgY29tcG9uZW50IG9mIGEgY29sb3IuIil9LHtmdW5jOiJhZGp1c3QtaHVlKCRjb2xvciwgJGRlZ3JlZXMpIixkZXNjOmcoIkNoYW5nZXMgdGhlIGh1ZSBvZiBhIGNvbG9yLiIpfSx7ZnVuYzoibGlnaHRlbigkY29sb3IsICRhbW91bnQpIixkZXNjOmcoIk1ha2VzIGEgY29sb3IgbGlnaHRlci4iKX0se2Z1bmM6ImRhcmtlbigkY29sb3IsICRhbW91bnQpIixkZXNjOmcoIk1ha2VzIGEgY29sb3IgZGFya2VyLiIpfSx7ZnVuYzoic2F0dXJhdGUoJGNvbG9yLCAkYW1vdW50KSIsZGVzYzpnKCJNYWtlcyBhIGNvbG9yIG1vcmUgc2F0dXJhdGVkLiIpfSx7ZnVuYzoiZGVzYXR1cmF0ZSgkY29sb3IsICRhbW91bnQpIixkZXNjOmcoIk1ha2VzIGEgY29sb3IgbGVzcyBzYXR1cmF0ZWQuIil9LHtmdW5jOiJncmF5c2NhbGUoJGNvbG9yKSIsZGVzYzpnKCJDb252ZXJ0cyBhIGNvbG9yIHRvIGdyYXlzY2FsZS4iKX0se2Z1bmM6ImNvbXBsZW1lbnQoJGNvbG9yKSIsZGVzYzpnKCJSZXR1cm5zIHRoZSBjb21wbGVtZW50IG9mIGEgY29sb3IuIil9LHtmdW5jOiJpbnZlcnQoJGNvbG9yKSIsZGVzYzpnKCJSZXR1cm5zIHRoZSBpbnZlcnNlIG9mIGEgY29sb3IuIil9LHtmdW5jOiJhbHBoYSgkY29sb3IpIixkZXNjOmcoIkdldHMgdGhlIG9wYWNpdHkgY29tcG9uZW50IG9mIGEgY29sb3IuIil9LHtmdW5jOiJvcGFjaXR5KCRjb2xvcikiLGRlc2M6IkdldHMgdGhlIGFscGhhIGNvbXBvbmVudCAob3BhY2l0eSkgb2YgYSBjb2xvci4ifSx7ZnVuYzoicmdiYSgkY29sb3IsICRhbHBoYSkiLGRlc2M6ZygiQ2hhbmdlcyB0aGUgYWxwaGEgY29tcG9uZW50IGZvciBhIGNvbG9yLiIpfSx7ZnVuYzoib3BhY2lmeSgkY29sb3IsICRhbW91bnQpIixkZXNjOmcoIk1ha2VzIGEgY29sb3IgbW9yZSBvcGFxdWUuIil9LHtmdW5jOiJmYWRlLWluKCRjb2xvciwgJGFtb3VudCkiLGRlc2M6ZygiTWFrZXMgYSBjb2xvciBtb3JlIG9wYXF1ZS4iKX0se2Z1bmM6InRyYW5zcGFyZW50aXplKCRjb2xvciwgJGFtb3VudCkiLGRlc2M6ZygiTWFrZXMgYSBjb2xvciBtb3JlIHRyYW5zcGFyZW50LiIpfSx7ZnVuYzoiZmFkZS1vdXQoJGNvbG9yLCAkYW1vdW50KSIsZGVzYzpnKCJNYWtlcyBhIGNvbG9yIG1vcmUgdHJhbnNwYXJlbnQuIil9LHtmdW5jOiJhZGp1c3QtY29sb3IoJGNvbG9yLCBbJHJlZF0sIFskZ3JlZW5dLCBbJGJsdWVdLCBbJGh1ZV0sIFskc2F0dXJhdGlvbl0sIFskbGlnaHRuZXNzXSwgWyRhbHBoYV0pIixkZXNjOmcoIkluY3JlYXNlcyBvciBkZWNyZWFzZXMgb25lIG9yIG1vcmUgY29tcG9uZW50cyBvZiBhIGNvbG9yLiIpfSx7ZnVuYzoic2NhbGUtY29sb3IoJGNvbG9yLCBbJHJlZF0sIFskZ3JlZW5dLCBbJGJsdWVdLCBbJHNhdHVyYXRpb25dLCBbJGxpZ2h0bmVzc10sIFskYWxwaGFdKSIsZGVzYzpnKCJGbHVpZGx5IHNjYWxlcyBvbmUgb3IgbW9yZSBwcm9wZXJ0aWVzIG9mIGEgY29sb3IuIil9LHtmdW5jOiJjaGFuZ2UtY29sb3IoJGNvbG9yLCBbJHJlZF0sIFskZ3JlZW5dLCBbJGJsdWVdLCBbJGh1ZV0sIFskc2F0dXJhdGlvbl0sIFskbGlnaHRuZXNzXSwgWyRhbHBoYV0pIixkZXNjOmcoIkNoYW5nZXMgb25lIG9yIG1vcmUgcHJvcGVydGllcyBvZiBhIGNvbG9yLiIpfSx7ZnVuYzoiaWUtaGV4LXN0cigkY29sb3IpIixkZXNjOmcoIkNvbnZlcnRzIGEgY29sb3IgaW50byB0aGUgZm9ybWF0IHVuZGVyc3Rvb2QgYnkgSUUgZmlsdGVycy4iKX1dLGd0LnNlbGVjdG9yRnVuY3M9W3tmdW5jOiJzZWxlY3Rvci1uZXN0KCRzZWxlY3RvcnPigKYpIixkZXNjOmcoIk5lc3RzIHNlbGVjdG9yIGJlbmVhdGggb25lIGFub3RoZXIgbGlrZSB0aGV5IHdvdWxkIGJlIG5lc3RlZCBpbiB0aGUgc3R5bGVzaGVldC4iKX0se2Z1bmM6InNlbGVjdG9yLWFwcGVuZCgkc2VsZWN0b3Jz4oCmKSIsZGVzYzpnKCJBcHBlbmRzIHNlbGVjdG9ycyB0byBvbmUgYW5vdGhlciB3aXRob3V0IHNwYWNlcyBpbiBiZXR3ZWVuLiIpfSx7ZnVuYzoic2VsZWN0b3ItZXh0ZW5kKCRzZWxlY3RvciwgJGV4dGVuZGVlLCAkZXh0ZW5kZXIpIixkZXNjOmcoIkV4dGVuZHMgJGV4dGVuZGVlIHdpdGggJGV4dGVuZGVyIHdpdGhpbiAkc2VsZWN0b3IuIil9LHtmdW5jOiJzZWxlY3Rvci1yZXBsYWNlKCRzZWxlY3RvciwgJG9yaWdpbmFsLCAkcmVwbGFjZW1lbnQpIixkZXNjOmcoIlJlcGxhY2VzICRvcmlnaW5hbCB3aXRoICRyZXBsYWNlbWVudCB3aXRoaW4gJHNlbGVjdG9yLiIpfSx7ZnVuYzoic2VsZWN0b3ItdW5pZnkoJHNlbGVjdG9yMSwgJHNlbGVjdG9yMikiLGRlc2M6ZygiVW5pZmllcyB0d28gc2VsZWN0b3JzIHRvIHByb2R1Y2UgYSBzZWxlY3RvciB0aGF0IG1hdGNoZXMgZWxlbWVudHMgbWF0Y2hlZCBieSBib3RoLiIpfSx7ZnVuYzoiaXMtc3VwZXJzZWxlY3Rvcigkc3VwZXIsICRzdWIpIixkZXNjOmcoIlJldHVybnMgd2hldGhlciAkc3VwZXIgbWF0Y2hlcyBhbGwgdGhlIGVsZW1lbnRzICRzdWIgZG9lcywgYW5kIHBvc3NpYmx5IG1vcmUuIil9LHtmdW5jOiJzaW1wbGUtc2VsZWN0b3JzKCRzZWxlY3RvcikiLGRlc2M6ZygiUmV0dXJucyB0aGUgc2ltcGxlIHNlbGVjdG9ycyB0aGF0IGNvbXByaXNlIGEgY29tcG91bmQgc2VsZWN0b3IuIil9LHtmdW5jOiJzZWxlY3Rvci1wYXJzZSgkc2VsZWN0b3IpIixkZXNjOmcoIlBhcnNlcyBhIHNlbGVjdG9yIGludG8gdGhlIGZvcm1hdCByZXR1cm5lZCBieSAmLiIpfV0sZ3QuYnVpbHRJbkZ1bmNzPVt7ZnVuYzoidW5xdW90ZSgkc3RyaW5nKSIsZGVzYzpnKCJSZW1vdmVzIHF1b3RlcyBmcm9tIGEgc3RyaW5nLiIpfSx7ZnVuYzoicXVvdGUoJHN0cmluZykiLGRlc2M6ZygiQWRkcyBxdW90ZXMgdG8gYSBzdHJpbmcuIil9LHtmdW5jOiJzdHItbGVuZ3RoKCRzdHJpbmcpIixkZXNjOmcoIlJldHVybnMgdGhlIG51bWJlciBvZiBjaGFyYWN0ZXJzIGluIGEgc3RyaW5nLiIpfSx7ZnVuYzoic3RyLWluc2VydCgkc3RyaW5nLCAkaW5zZXJ0LCAkaW5kZXgpIixkZXNjOmcoIkluc2VydHMgJGluc2VydCBpbnRvICRzdHJpbmcgYXQgJGluZGV4LiIpfSx7ZnVuYzoic3RyLWluZGV4KCRzdHJpbmcsICRzdWJzdHJpbmcpIixkZXNjOmcoIlJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBmaXJzdCBvY2N1cmFuY2Ugb2YgJHN1YnN0cmluZyBpbiAkc3RyaW5nLiIpfSx7ZnVuYzoic3RyLXNsaWNlKCRzdHJpbmcsICRzdGFydC1hdCwgWyRlbmQtYXRdKSIsZGVzYzpnKCJFeHRyYWN0cyBhIHN1YnN0cmluZyBmcm9tICRzdHJpbmcuIil9LHtmdW5jOiJ0by11cHBlci1jYXNlKCRzdHJpbmcpIixkZXNjOmcoIkNvbnZlcnRzIGEgc3RyaW5nIHRvIHVwcGVyIGNhc2UuIil9LHtmdW5jOiJ0by1sb3dlci1jYXNlKCRzdHJpbmcpIixkZXNjOmcoIkNvbnZlcnRzIGEgc3RyaW5nIHRvIGxvd2VyIGNhc2UuIil9LHtmdW5jOiJwZXJjZW50YWdlKCRudW1iZXIpIixkZXNjOmcoIkNvbnZlcnRzIGEgdW5pdGxlc3MgbnVtYmVyIHRvIGEgcGVyY2VudGFnZS4iKSx0eXBlOiJwZXJjZW50YWdlIn0se2Z1bmM6InJvdW5kKCRudW1iZXIpIixkZXNjOmcoIlJvdW5kcyBhIG51bWJlciB0byB0aGUgbmVhcmVzdCB3aG9sZSBudW1iZXIuIil9LHtmdW5jOiJjZWlsKCRudW1iZXIpIixkZXNjOmcoIlJvdW5kcyBhIG51bWJlciB1cCB0byB0aGUgbmV4dCB3aG9sZSBudW1iZXIuIil9LHtmdW5jOiJmbG9vcigkbnVtYmVyKSIsZGVzYzpnKCJSb3VuZHMgYSBudW1iZXIgZG93biB0byB0aGUgcHJldmlvdXMgd2hvbGUgbnVtYmVyLiIpfSx7ZnVuYzoiYWJzKCRudW1iZXIpIixkZXNjOmcoIlJldHVybnMgdGhlIGFic29sdXRlIHZhbHVlIG9mIGEgbnVtYmVyLiIpfSx7ZnVuYzoibWluKCRudW1iZXJzKSIsZGVzYzpnKCJGaW5kcyB0aGUgbWluaW11bSBvZiBzZXZlcmFsIG51bWJlcnMuIil9LHtmdW5jOiJtYXgoJG51bWJlcnMpIixkZXNjOmcoIkZpbmRzIHRoZSBtYXhpbXVtIG9mIHNldmVyYWwgbnVtYmVycy4iKX0se2Z1bmM6InJhbmRvbShbJGxpbWl0XSkiLGRlc2M6ZygiUmV0dXJucyBhIHJhbmRvbSBudW1iZXIuIil9LHtmdW5jOiJsZW5ndGgoJGxpc3QpIixkZXNjOmcoIlJldHVybnMgdGhlIGxlbmd0aCBvZiBhIGxpc3QuIil9LHtmdW5jOiJudGgoJGxpc3QsICRuKSIsZGVzYzpnKCJSZXR1cm5zIGEgc3BlY2lmaWMgaXRlbSBpbiBhIGxpc3QuIil9LHtmdW5jOiJzZXQtbnRoKCRsaXN0LCAkbiwgJHZhbHVlKSIsZGVzYzpnKCJSZXBsYWNlcyB0aGUgbnRoIGl0ZW0gaW4gYSBsaXN0LiIpfSx7ZnVuYzoiam9pbigkbGlzdDEsICRsaXN0MiwgWyRzZXBhcmF0b3JdKSIsZGVzYzpnKCJKb2lucyB0b2dldGhlciB0d28gbGlzdHMgaW50byBvbmUuIil9LHtmdW5jOiJhcHBlbmQoJGxpc3QxLCAkdmFsLCBbJHNlcGFyYXRvcl0pIixkZXNjOmcoIkFwcGVuZHMgYSBzaW5nbGUgdmFsdWUgb250byB0aGUgZW5kIG9mIGEgbGlzdC4iKX0se2Z1bmM6InppcCgkbGlzdHMpIixkZXNjOmcoIkNvbWJpbmVzIHNldmVyYWwgbGlzdHMgaW50byBhIHNpbmdsZSBtdWx0aWRpbWVuc2lvbmFsIGxpc3QuIil9LHtmdW5jOiJpbmRleCgkbGlzdCwgJHZhbHVlKSIsZGVzYzpnKCJSZXR1cm5zIHRoZSBwb3NpdGlvbiBvZiBhIHZhbHVlIHdpdGhpbiBhIGxpc3QuIil9LHtmdW5jOiJsaXN0LXNlcGFyYXRvcigjbGlzdCkiLGRlc2M6ZygiUmV0dXJucyB0aGUgc2VwYXJhdG9yIG9mIGEgbGlzdC4iKX0se2Z1bmM6Im1hcC1nZXQoJG1hcCwgJGtleSkiLGRlc2M6ZygiUmV0dXJucyB0aGUgdmFsdWUgaW4gYSBtYXAgYXNzb2NpYXRlZCB3aXRoIGEgZ2l2ZW4ga2V5LiIpfSx7ZnVuYzoibWFwLW1lcmdlKCRtYXAxLCAkbWFwMikiLGRlc2M6ZygiTWVyZ2VzIHR3byBtYXBzIHRvZ2V0aGVyIGludG8gYSBuZXcgbWFwLiIpfSx7ZnVuYzoibWFwLXJlbW92ZSgkbWFwLCAka2V5cykiLGRlc2M6ZygiUmV0dXJucyBhIG5ldyBtYXAgd2l0aCBrZXlzIHJlbW92ZWQuIil9LHtmdW5jOiJtYXAta2V5cygkbWFwKSIsZGVzYzpnKCJSZXR1cm5zIGEgbGlzdCBvZiBhbGwga2V5cyBpbiBhIG1hcC4iKX0se2Z1bmM6Im1hcC12YWx1ZXMoJG1hcCkiLGRlc2M6ZygiUmV0dXJucyBhIGxpc3Qgb2YgYWxsIHZhbHVlcyBpbiBhIG1hcC4iKX0se2Z1bmM6Im1hcC1oYXMta2V5KCRtYXAsICRrZXkpIixkZXNjOmcoIlJldHVybnMgd2hldGhlciBhIG1hcCBoYXMgYSB2YWx1ZSBhc3NvY2lhdGVkIHdpdGggYSBnaXZlbiBrZXkuIil9LHtmdW5jOiJrZXl3b3JkcygkYXJncykiLGRlc2M6ZygiUmV0dXJucyB0aGUga2V5d29yZHMgcGFzc2VkIHRvIGEgZnVuY3Rpb24gdGhhdCB0YWtlcyB2YXJpYWJsZSBhcmd1bWVudHMuIil9LHtmdW5jOiJmZWF0dXJlLWV4aXN0cygkZmVhdHVyZSkiLGRlc2M6ZygiUmV0dXJucyB3aGV0aGVyIGEgZmVhdHVyZSBleGlzdHMgaW4gdGhlIGN1cnJlbnQgU2FzcyBydW50aW1lLiIpfSx7ZnVuYzoidmFyaWFibGUtZXhpc3RzKCRuYW1lKSIsZGVzYzpnKCJSZXR1cm5zIHdoZXRoZXIgYSB2YXJpYWJsZSB3aXRoIHRoZSBnaXZlbiBuYW1lIGV4aXN0cyBpbiB0aGUgY3VycmVudCBzY29wZS4iKX0se2Z1bmM6Imdsb2JhbC12YXJpYWJsZS1leGlzdHMoJG5hbWUpIixkZXNjOmcoIlJldHVybnMgd2hldGhlciBhIHZhcmlhYmxlIHdpdGggdGhlIGdpdmVuIG5hbWUgZXhpc3RzIGluIHRoZSBnbG9iYWwgc2NvcGUuIil9LHtmdW5jOiJmdW5jdGlvbi1leGlzdHMoJG5hbWUpIixkZXNjOmcoIlJldHVybnMgd2hldGhlciBhIGZ1bmN0aW9uIHdpdGggdGhlIGdpdmVuIG5hbWUgZXhpc3RzLiIpfSx7ZnVuYzoibWl4aW4tZXhpc3RzKCRuYW1lKSIsZGVzYzpnKCJSZXR1cm5zIHdoZXRoZXIgYSBtaXhpbiB3aXRoIHRoZSBnaXZlbiBuYW1lIGV4aXN0cy4iKX0se2Z1bmM6Imluc3BlY3QoJHZhbHVlKSIsZGVzYzpnKCJSZXR1cm5zIHRoZSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYSB2YWx1ZSBhcyBpdCB3b3VsZCBiZSByZXByZXNlbnRlZCBpbiBTYXNzLiIpfSx7ZnVuYzoidHlwZS1vZigkdmFsdWUpIixkZXNjOmcoIlJldHVybnMgdGhlIHR5cGUgb2YgYSB2YWx1ZS4iKX0se2Z1bmM6InVuaXQoJG51bWJlcikiLGRlc2M6ZygiUmV0dXJucyB0aGUgdW5pdChzKSBhc3NvY2lhdGVkIHdpdGggYSBudW1iZXIuIil9LHtmdW5jOiJ1bml0bGVzcygkbnVtYmVyKSIsZGVzYzpnKCJSZXR1cm5zIHdoZXRoZXIgYSBudW1iZXIgaGFzIHVuaXRzLiIpfSx7ZnVuYzoiY29tcGFyYWJsZSgkbnVtYmVyMSwgJG51bWJlcjIpIixkZXNjOmcoIlJldHVybnMgd2hldGhlciB0d28gbnVtYmVycyBjYW4gYmUgYWRkZWQsIHN1YnRyYWN0ZWQsIG9yIGNvbXBhcmVkLiIpfSx7ZnVuYzoiY2FsbCgkbmFtZSwgJGFyZ3PigKYpIixkZXNjOmcoIkR5bmFtaWNhbGx5IGNhbGxzIGEgU2FzcyBmdW5jdGlvbi4iKX1dLGd0LnNjc3NBdERpcmVjdGl2ZXM9W3tsYWJlbDoiQGV4dGVuZCIsZG9jdW1lbnRhdGlvbjpnKCJJbmhlcml0cyB0aGUgc3R5bGVzIG9mIGFub3RoZXIgc2VsZWN0b3IuIiksa2luZDpWLktleXdvcmR9LHtsYWJlbDoiQGF0LXJvb3QiLGRvY3VtZW50YXRpb246ZygiQ2F1c2VzIG9uZSBvciBtb3JlIHJ1bGVzIHRvIGJlIGVtaXR0ZWQgYXQgdGhlIHJvb3Qgb2YgdGhlIGRvY3VtZW50LiIpLGtpbmQ6Vi5LZXl3b3JkfSx7bGFiZWw6IkBkZWJ1ZyIsZG9jdW1lbnRhdGlvbjpnKCJQcmludHMgdGhlIHZhbHVlIG9mIGFuIGV4cHJlc3Npb24gdG8gdGhlIHN0YW5kYXJkIGVycm9yIG91dHB1dCBzdHJlYW0uIFVzZWZ1bCBmb3IgZGVidWdnaW5nIGNvbXBsaWNhdGVkIFNhc3MgZmlsZXMuIiksa2luZDpWLktleXdvcmR9LHtsYWJlbDoiQHdhcm4iLGRvY3VtZW50YXRpb246ZygiUHJpbnRzIHRoZSB2YWx1ZSBvZiBhbiBleHByZXNzaW9uIHRvIHRoZSBzdGFuZGFyZCBlcnJvciBvdXRwdXQgc3RyZWFtLiBVc2VmdWwgZm9yIGxpYnJhcmllcyB0aGF0IG5lZWQgdG8gd2FybiB1c2VycyBvZiBkZXByZWNhdGlvbnMgb3IgcmVjb3ZlcmluZyBmcm9tIG1pbm9yIG1peGluIHVzYWdlIG1pc3Rha2VzLiBXYXJuaW5ncyBjYW4gYmUgdHVybmVkIG9mZiB3aXRoIHRoZSBgLS1xdWlldGAgY29tbWFuZC1saW5lIG9wdGlvbiBvciB0aGUgYDpxdWlldGAgU2FzcyBvcHRpb24uIiksa2luZDpWLktleXdvcmR9LHtsYWJlbDoiQGVycm9yIixkb2N1bWVudGF0aW9uOmcoIlRocm93cyB0aGUgdmFsdWUgb2YgYW4gZXhwcmVzc2lvbiBhcyBhIGZhdGFsIGVycm9yIHdpdGggc3RhY2sgdHJhY2UuIFVzZWZ1bCBmb3IgdmFsaWRhdGluZyBhcmd1bWVudHMgdG8gbWl4aW5zIGFuZCBmdW5jdGlvbnMuIiksa2luZDpWLktleXdvcmR9LHtsYWJlbDoiQGlmIixkb2N1bWVudGF0aW9uOmcoIkluY2x1ZGVzIHRoZSBib2R5IGlmIHRoZSBleHByZXNzaW9uIGRvZXMgbm90IGV2YWx1YXRlIHRvIGBmYWxzZWAgb3IgYG51bGxgLiIpLGluc2VydFRleHQ6YEBpZiBcJHsxOmV4cHJ9IHsKCSQwCn1gLGluc2VydFRleHRGb3JtYXQ6UmUuU25pcHBldCxraW5kOlYuS2V5d29yZH0se2xhYmVsOiJAZm9yIixkb2N1bWVudGF0aW9uOmcoIkZvciBsb29wIHRoYXQgcmVwZWF0ZWRseSBvdXRwdXRzIGEgc2V0IG9mIHN0eWxlcyBmb3IgZWFjaCBgJHZhcmAgaW4gdGhlIGBmcm9tL3Rocm91Z2hgIG9yIGBmcm9tL3RvYCBjbGF1c2UuIiksaW5zZXJ0VGV4dDoiQGZvciBcXCQkezE6dmFyfSBmcm9tICR7MjpzdGFydH0gJHszfHRvLHRocm91Z2h8fSAkezQ6ZW5kfSB7XG4JJDBcbn0iLGluc2VydFRleHRGb3JtYXQ6UmUuU25pcHBldCxraW5kOlYuS2V5d29yZH0se2xhYmVsOiJAZWFjaCIsZG9jdW1lbnRhdGlvbjpnKCJFYWNoIGxvb3AgdGhhdCBzZXRzIGAkdmFyYCB0byBlYWNoIGl0ZW0gaW4gdGhlIGxpc3Qgb3IgbWFwLCB0aGVuIG91dHB1dHMgdGhlIHN0eWxlcyBpdCBjb250YWlucyB1c2luZyB0aGF0IHZhbHVlIG9mIGAkdmFyYC4iKSxpbnNlcnRUZXh0OiJAZWFjaCBcXCQkezE6dmFyfSBpbiAkezI6bGlzdH0ge1xuCSQwXG59IixpbnNlcnRUZXh0Rm9ybWF0OlJlLlNuaXBwZXQsa2luZDpWLktleXdvcmR9LHtsYWJlbDoiQHdoaWxlIixkb2N1bWVudGF0aW9uOmcoIldoaWxlIGxvb3AgdGhhdCB0YWtlcyBhbiBleHByZXNzaW9uIGFuZCByZXBlYXRlZGx5IG91dHB1dHMgdGhlIG5lc3RlZCBzdHlsZXMgdW50aWwgdGhlIHN0YXRlbWVudCBldmFsdWF0ZXMgdG8gYGZhbHNlYC4iKSxpbnNlcnRUZXh0OmBAd2hpbGUgXCR7MTpjb25kaXRpb259IHsKCSQwCn1gLGluc2VydFRleHRGb3JtYXQ6UmUuU25pcHBldCxraW5kOlYuS2V5d29yZH0se2xhYmVsOiJAbWl4aW4iLGRvY3VtZW50YXRpb246ZygiRGVmaW5lcyBzdHlsZXMgdGhhdCBjYW4gYmUgcmUtdXNlZCB0aHJvdWdob3V0IHRoZSBzdHlsZXNoZWV0IHdpdGggYEBpbmNsdWRlYC4iKSxpbnNlcnRUZXh0OmBAbWl4aW4gXCR7MTpuYW1lfSB7CgkkMAp9YCxpbnNlcnRUZXh0Rm9ybWF0OlJlLlNuaXBwZXQsa2luZDpWLktleXdvcmR9LHtsYWJlbDoiQGluY2x1ZGUiLGRvY3VtZW50YXRpb246ZygiSW5jbHVkZXMgdGhlIHN0eWxlcyBkZWZpbmVkIGJ5IGFub3RoZXIgbWl4aW4gaW50byB0aGUgY3VycmVudCBydWxlLiIpLGtpbmQ6Vi5LZXl3b3JkfSx7bGFiZWw6IkBmdW5jdGlvbiIsZG9jdW1lbnRhdGlvbjpnKCJEZWZpbmVzIGNvbXBsZXggb3BlcmF0aW9ucyB0aGF0IGNhbiBiZSByZS11c2VkIHRocm91Z2hvdXQgc3R5bGVzaGVldHMuIiksa2luZDpWLktleXdvcmR9XSxndC5zY3NzTW9kdWxlTG9hZGVycz1be2xhYmVsOiJAdXNlIixkb2N1bWVudGF0aW9uOmcoIkxvYWRzIG1peGlucywgZnVuY3Rpb25zLCBhbmQgdmFyaWFibGVzIGZyb20gb3RoZXIgU2FzcyBzdHlsZXNoZWV0cyBhcyAnbW9kdWxlcycsIGFuZCBjb21iaW5lcyBDU1MgZnJvbSBtdWx0aXBsZSBzdHlsZXNoZWV0cyB0b2dldGhlci4iKSxyZWZlcmVuY2VzOlt7bmFtZTpydCx1cmw6Imh0dHBzOi8vc2Fzcy1sYW5nLmNvbS9kb2N1bWVudGF0aW9uL2F0LXJ1bGVzL3VzZSJ9XSxpbnNlcnRUZXh0OiJAdXNlICQwOyIsaW5zZXJ0VGV4dEZvcm1hdDpSZS5TbmlwcGV0LGtpbmQ6Vi5LZXl3b3JkfSx7bGFiZWw6IkBmb3J3YXJkIixkb2N1bWVudGF0aW9uOmcoIkxvYWRzIGEgU2FzcyBzdHlsZXNoZWV0IGFuZCBtYWtlcyBpdHMgbWl4aW5zLCBmdW5jdGlvbnMsIGFuZCB2YXJpYWJsZXMgYXZhaWxhYmxlIHdoZW4gdGhpcyBzdHlsZXNoZWV0IGlzIGxvYWRlZCB3aXRoIHRoZSBAdXNlIHJ1bGUuIikscmVmZXJlbmNlczpbe25hbWU6cnQsdXJsOiJodHRwczovL3Nhc3MtbGFuZy5jb20vZG9jdW1lbnRhdGlvbi9hdC1ydWxlcy9mb3J3YXJkIn1dLGluc2VydFRleHQ6IkBmb3J3YXJkICQwOyIsaW5zZXJ0VGV4dEZvcm1hdDpSZS5TbmlwcGV0LGtpbmQ6Vi5LZXl3b3JkfV0sZ3Quc2Nzc01vZHVsZUJ1aWx0SW5zPVt7bGFiZWw6InNhc3M6bWF0aCIsZG9jdW1lbnRhdGlvbjpnKCJQcm92aWRlcyBmdW5jdGlvbnMgdGhhdCBvcGVyYXRlIG9uIG51bWJlcnMuIikscmVmZXJlbmNlczpbe25hbWU6cnQsdXJsOiJodHRwczovL3Nhc3MtbGFuZy5jb20vZG9jdW1lbnRhdGlvbi9tb2R1bGVzL21hdGgifV19LHtsYWJlbDoic2FzczpzdHJpbmciLGRvY3VtZW50YXRpb246ZygiTWFrZXMgaXQgZWFzeSB0byBjb21iaW5lLCBzZWFyY2gsIG9yIHNwbGl0IGFwYXJ0IHN0cmluZ3MuIikscmVmZXJlbmNlczpbe25hbWU6cnQsdXJsOiJodHRwczovL3Nhc3MtbGFuZy5jb20vZG9jdW1lbnRhdGlvbi9tb2R1bGVzL3N0cmluZyJ9XX0se2xhYmVsOiJzYXNzOmNvbG9yIixkb2N1bWVudGF0aW9uOmcoIkdlbmVyYXRlcyBuZXcgY29sb3JzIGJhc2VkIG9uIGV4aXN0aW5nIG9uZXMsIG1ha2luZyBpdCBlYXN5IHRvIGJ1aWxkIGNvbG9yIHRoZW1lcy4iKSxyZWZlcmVuY2VzOlt7bmFtZTpydCx1cmw6Imh0dHBzOi8vc2Fzcy1sYW5nLmNvbS9kb2N1bWVudGF0aW9uL21vZHVsZXMvY29sb3IifV19LHtsYWJlbDoic2FzczpsaXN0Iixkb2N1bWVudGF0aW9uOmcoIkxldHMgeW91IGFjY2VzcyBhbmQgbW9kaWZ5IHZhbHVlcyBpbiBsaXN0cy4iKSxyZWZlcmVuY2VzOlt7bmFtZTpydCx1cmw6Imh0dHBzOi8vc2Fzcy1sYW5nLmNvbS9kb2N1bWVudGF0aW9uL21vZHVsZXMvbGlzdCJ9XX0se2xhYmVsOiJzYXNzOm1hcCIsZG9jdW1lbnRhdGlvbjpnKCJNYWtlcyBpdCBwb3NzaWJsZSB0byBsb29rIHVwIHRoZSB2YWx1ZSBhc3NvY2lhdGVkIHdpdGggYSBrZXkgaW4gYSBtYXAsIGFuZCBtdWNoIG1vcmUuIikscmVmZXJlbmNlczpbe25hbWU6cnQsdXJsOiJodHRwczovL3Nhc3MtbGFuZy5jb20vZG9jdW1lbnRhdGlvbi9tb2R1bGVzL21hcCJ9XX0se2xhYmVsOiJzYXNzOnNlbGVjdG9yIixkb2N1bWVudGF0aW9uOmcoIlByb3ZpZGVzIGFjY2VzcyB0byBTYXNz4oCZcyBwb3dlcmZ1bCBzZWxlY3RvciBlbmdpbmUuIikscmVmZXJlbmNlczpbe25hbWU6cnQsdXJsOiJodHRwczovL3Nhc3MtbGFuZy5jb20vZG9jdW1lbnRhdGlvbi9tb2R1bGVzL3NlbGVjdG9yIn1dfSx7bGFiZWw6InNhc3M6bWV0YSIsZG9jdW1lbnRhdGlvbjpnKCJFeHBvc2VzIHRoZSBkZXRhaWxzIG9mIFNhc3PigJlzIGlubmVyIHdvcmtpbmdzLiIpLHJlZmVyZW5jZXM6W3tuYW1lOnJ0LHVybDoiaHR0cHM6Ly9zYXNzLWxhbmcuY29tL2RvY3VtZW50YXRpb24vbW9kdWxlcy9tZXRhIn1dfV07ZnVuY3Rpb24gSGMoZSl7ZS5mb3JFYWNoKHQ9PntpZih0LmRvY3VtZW50YXRpb24mJnQucmVmZXJlbmNlcyYmdC5yZWZlcmVuY2VzLmxlbmd0aD4wKXtjb25zdCBuPXR5cGVvZiB0LmRvY3VtZW50YXRpb249PSJzdHJpbmciP3traW5kOiJtYXJrZG93biIsdmFsdWU6dC5kb2N1bWVudGF0aW9ufTp7a2luZDoibWFya2Rvd24iLHZhbHVlOnQuZG9jdW1lbnRhdGlvbi52YWx1ZX07bi52YWx1ZSs9YAoKYCxuLnZhbHVlKz10LnJlZmVyZW5jZXMubWFwKHI9PmBbJHtyLm5hbWV9XSgke3IudXJsfSlgKS5qb2luKCIgfCAiKSx0LmRvY3VtZW50YXRpb249bn19KX12YXIgR2M9NDcsV209MTAsVm09MTMsVW09MTIseXM9OTYseHM9NDYsJG09cC5DdXN0b21Ub2tlbixTcz0kbSsrLEpjPWNsYXNzIGV4dGVuZHMgeW57c2Nhbk5leHQoZSl7Y29uc3QgdD10aGlzLmVzY2FwZWRKYXZhU2NyaXB0KCk7cmV0dXJuIHQhPT1udWxsP3RoaXMuZmluaXNoVG9rZW4oZSx0KTp0aGlzLnN0cmVhbS5hZHZhbmNlSWZDaGFycyhbeHMseHMseHNdKT90aGlzLmZpbmlzaFRva2VuKGUsU3MpOnN1cGVyLnNjYW5OZXh0KGUpfWNvbW1lbnQoKXtyZXR1cm4gc3VwZXIuY29tbWVudCgpPyEwOiF0aGlzLmluVVJMJiZ0aGlzLnN0cmVhbS5hZHZhbmNlSWZDaGFycyhbR2MsR2NdKT8odGhpcy5zdHJlYW0uYWR2YW5jZVdoaWxlQ2hhcihlPT57c3dpdGNoKGUpe2Nhc2UgV206Y2FzZSBWbTpjYXNlIFVtOnJldHVybiExO2RlZmF1bHQ6cmV0dXJuITB9fSksITApOiExfWVzY2FwZWRKYXZhU2NyaXB0KCl7cmV0dXJuIHRoaXMuc3RyZWFtLnBlZWtDaGFyKCk9PT15cz8odGhpcy5zdHJlYW0uYWR2YW5jZSgxKSx0aGlzLnN0cmVhbS5hZHZhbmNlV2hpbGVDaGFyKHQ9PnQhPT15cyksdGhpcy5zdHJlYW0uYWR2YW5jZUlmQ2hhcih5cyk/cC5Fc2NhcGVkSmF2YVNjcmlwdDpwLkJhZEVzY2FwZWRKYXZhU2NyaXB0KTpudWxsfX0sQm09Y2xhc3MgZXh0ZW5kcyBicntjb25zdHJ1Y3Rvcigpe3N1cGVyKG5ldyBKYyl9X3BhcnNlU3R5bGVzaGVldFN0YXRlbWVudChlPSExKXtyZXR1cm4gdGhpcy5wZWVrKHAuQXRLZXl3b3JkKT90aGlzLl9wYXJzZVZhcmlhYmxlRGVjbGFyYXRpb24oKXx8dGhpcy5fcGFyc2VQbHVnaW4oKXx8c3VwZXIuX3BhcnNlU3R5bGVzaGVldEF0U3RhdGVtZW50KGUpOnRoaXMuX3RyeVBhcnNlTWl4aW5EZWNsYXJhdGlvbigpfHx0aGlzLl90cnlQYXJzZU1peGluUmVmZXJlbmNlKCl8fHRoaXMuX3BhcnNlRnVuY3Rpb24oKXx8dGhpcy5fcGFyc2VSdWxlc2V0KCEwKX1fcGFyc2VJbXBvcnQoKXtpZighdGhpcy5wZWVrS2V5d29yZCgiQGltcG9ydCIpJiYhdGhpcy5wZWVrS2V5d29yZCgiQGltcG9ydC1vbmNlIikpcmV0dXJuIG51bGw7Y29uc3QgZT10aGlzLmNyZWF0ZShSaSk7aWYodGhpcy5jb25zdW1lVG9rZW4oKSx0aGlzLmFjY2VwdChwLlBhcmVudGhlc2lzTCkpe2lmKCF0aGlzLmFjY2VwdChwLklkZW50KSlyZXR1cm4gdGhpcy5maW5pc2goZSx4LklkZW50aWZpZXJFeHBlY3RlZCxbcC5TZW1pQ29sb25dKTtkbyBpZighdGhpcy5hY2NlcHQocC5Db21tYSkpYnJlYWs7d2hpbGUodGhpcy5hY2NlcHQocC5JZGVudCkpO2lmKCF0aGlzLmFjY2VwdChwLlBhcmVudGhlc2lzUikpcmV0dXJuIHRoaXMuZmluaXNoKGUseC5SaWdodFBhcmVudGhlc2lzRXhwZWN0ZWQsW3AuU2VtaUNvbG9uXSl9cmV0dXJuIWUuYWRkQ2hpbGQodGhpcy5fcGFyc2VVUklMaXRlcmFsKCkpJiYhZS5hZGRDaGlsZCh0aGlzLl9wYXJzZVN0cmluZ0xpdGVyYWwoKSk/dGhpcy5maW5pc2goZSx4LlVSSU9yU3RyaW5nRXhwZWN0ZWQsW3AuU2VtaUNvbG9uXSk6KCF0aGlzLnBlZWsocC5TZW1pQ29sb24pJiYhdGhpcy5wZWVrKHAuRU9GKSYmZS5zZXRNZWRpYWxpc3QodGhpcy5fcGFyc2VNZWRpYVF1ZXJ5TGlzdCgpKSx0aGlzLl9jb21wbGV0ZVBhcnNlSW1wb3J0KGUpKX1fcGFyc2VQbHVnaW4oKXtpZighdGhpcy5wZWVrS2V5d29yZCgiQHBsdWdpbiIpKXJldHVybiBudWxsO2NvbnN0IGU9dGhpcy5jcmVhdGVOb2RlKGIuUGx1Z2luKTtyZXR1cm4gdGhpcy5jb25zdW1lVG9rZW4oKSxlLmFkZENoaWxkKHRoaXMuX3BhcnNlU3RyaW5nTGl0ZXJhbCgpKT90aGlzLmFjY2VwdChwLlNlbWlDb2xvbik/dGhpcy5maW5pc2goZSk6dGhpcy5maW5pc2goZSx4LlNlbWlDb2xvbkV4cGVjdGVkKTp0aGlzLmZpbmlzaChlLHguU3RyaW5nTGl0ZXJhbEV4cGVjdGVkKX1fcGFyc2VNZWRpYVF1ZXJ5KCl7Y29uc3QgZT1zdXBlci5fcGFyc2VNZWRpYVF1ZXJ5KCk7aWYoIWUpe2NvbnN0IHQ9dGhpcy5jcmVhdGUobGwpO3JldHVybiB0LmFkZENoaWxkKHRoaXMuX3BhcnNlVmFyaWFibGUoKSk/dGhpcy5maW5pc2godCk6bnVsbH1yZXR1cm4gZX1fcGFyc2VNZWRpYURlY2xhcmF0aW9uKGU9ITEpe3JldHVybiB0aGlzLl90cnlQYXJzZVJ1bGVzZXQoZSl8fHRoaXMuX3RyeVRvUGFyc2VEZWNsYXJhdGlvbigpfHx0aGlzLl90cnlQYXJzZU1peGluRGVjbGFyYXRpb24oKXx8dGhpcy5fdHJ5UGFyc2VNaXhpblJlZmVyZW5jZSgpfHx0aGlzLl9wYXJzZURldGFjaGVkUnVsZVNldE1peGluKCl8fHRoaXMuX3BhcnNlU3R5bGVzaGVldFN0YXRlbWVudChlKX1fcGFyc2VNZWRpYUZlYXR1cmVOYW1lKCl7cmV0dXJuIHRoaXMuX3BhcnNlSWRlbnQoKXx8dGhpcy5fcGFyc2VWYXJpYWJsZSgpfV9wYXJzZVZhcmlhYmxlRGVjbGFyYXRpb24oZT1bXSl7Y29uc3QgdD10aGlzLmNyZWF0ZShpciksbj10aGlzLm1hcmsoKTtpZighdC5zZXRWYXJpYWJsZSh0aGlzLl9wYXJzZVZhcmlhYmxlKCEwKSkpcmV0dXJuIG51bGw7aWYodGhpcy5hY2NlcHQocC5Db2xvbikpe2lmKHRoaXMucHJldlRva2VuJiYodC5jb2xvblBvc2l0aW9uPXRoaXMucHJldlRva2VuLm9mZnNldCksdC5zZXRWYWx1ZSh0aGlzLl9wYXJzZURldGFjaGVkUnVsZVNldCgpKSl0Lm5lZWRzU2VtaWNvbG9uPSExO2Vsc2UgaWYoIXQuc2V0VmFsdWUodGhpcy5fcGFyc2VFeHByKCkpKXJldHVybiB0aGlzLmZpbmlzaCh0LHguVmFyaWFibGVWYWx1ZUV4cGVjdGVkLFtdLGUpO3QuYWRkQ2hpbGQodGhpcy5fcGFyc2VQcmlvKCkpfWVsc2UgcmV0dXJuIHRoaXMucmVzdG9yZUF0TWFyayhuKSxudWxsO3JldHVybiB0aGlzLnBlZWsocC5TZW1pQ29sb24pJiYodC5zZW1pY29sb25Qb3NpdGlvbj10aGlzLnRva2VuLm9mZnNldCksdGhpcy5maW5pc2godCl9X3BhcnNlRGV0YWNoZWRSdWxlU2V0KCl7bGV0IGU9dGhpcy5tYXJrKCk7aWYodGhpcy5wZWVrRGVsaW0oIiMiKXx8dGhpcy5wZWVrRGVsaW0oIi4iKSlpZih0aGlzLmNvbnN1bWVUb2tlbigpLCF0aGlzLmhhc1doaXRlc3BhY2UoKSYmdGhpcy5hY2NlcHQocC5QYXJlbnRoZXNpc0wpKXtsZXQgbj10aGlzLmNyZWF0ZShrbik7aWYobi5nZXRQYXJhbWV0ZXJzKCkuYWRkQ2hpbGQodGhpcy5fcGFyc2VNaXhpblBhcmFtZXRlcigpKSlmb3IoOyh0aGlzLmFjY2VwdChwLkNvbW1hKXx8dGhpcy5hY2NlcHQocC5TZW1pQ29sb24pKSYmIXRoaXMucGVlayhwLlBhcmVudGhlc2lzUik7KW4uZ2V0UGFyYW1ldGVycygpLmFkZENoaWxkKHRoaXMuX3BhcnNlTWl4aW5QYXJhbWV0ZXIoKSl8fHRoaXMubWFya0Vycm9yKG4seC5JZGVudGlmaWVyRXhwZWN0ZWQsW10sW3AuUGFyZW50aGVzaXNSXSk7aWYoIXRoaXMuYWNjZXB0KHAuUGFyZW50aGVzaXNSKSlyZXR1cm4gdGhpcy5yZXN0b3JlQXRNYXJrKGUpLG51bGx9ZWxzZSByZXR1cm4gdGhpcy5yZXN0b3JlQXRNYXJrKGUpLG51bGw7aWYoIXRoaXMucGVlayhwLkN1cmx5TCkpcmV0dXJuIG51bGw7Y29uc3QgdD10aGlzLmNyZWF0ZShzZSk7cmV0dXJuIHRoaXMuX3BhcnNlQm9keSh0LHRoaXMuX3BhcnNlRGV0YWNoZWRSdWxlU2V0Qm9keS5iaW5kKHRoaXMpKSx0aGlzLmZpbmlzaCh0KX1fcGFyc2VEZXRhY2hlZFJ1bGVTZXRCb2R5KCl7cmV0dXJuIHRoaXMuX3RyeVBhcnNlS2V5ZnJhbWVTZWxlY3RvcigpfHx0aGlzLl9wYXJzZVJ1bGVTZXREZWNsYXJhdGlvbigpfV9hZGRMb29rdXBDaGlsZHJlbihlKXtpZighZS5hZGRDaGlsZCh0aGlzLl9wYXJzZUxvb2t1cFZhbHVlKCkpKXJldHVybiExO2xldCB0PSExO2Zvcig7dGhpcy5wZWVrKHAuQnJhY2tldEwpJiYodD0hMCksISFlLmFkZENoaWxkKHRoaXMuX3BhcnNlTG9va3VwVmFsdWUoKSk7KXQ9ITE7cmV0dXJuIXR9X3BhcnNlTG9va3VwVmFsdWUoKXtjb25zdCBlPXRoaXMuY3JlYXRlKE8pLHQ9dGhpcy5tYXJrKCk7cmV0dXJuIHRoaXMuYWNjZXB0KHAuQnJhY2tldEwpPyhlLmFkZENoaWxkKHRoaXMuX3BhcnNlVmFyaWFibGUoITEsITApKXx8ZS5hZGRDaGlsZCh0aGlzLl9wYXJzZVByb3BlcnR5SWRlbnRpZmllcigpKSkmJnRoaXMuYWNjZXB0KHAuQnJhY2tldFIpfHx0aGlzLmFjY2VwdChwLkJyYWNrZXRSKT9lOih0aGlzLnJlc3RvcmVBdE1hcmsodCksbnVsbCk6KHRoaXMucmVzdG9yZUF0TWFyayh0KSxudWxsKX1fcGFyc2VWYXJpYWJsZShlPSExLHQ9ITEpe2NvbnN0IG49IWUmJnRoaXMucGVla0RlbGltKCIkIik7aWYoIXRoaXMucGVla0RlbGltKCJAIikmJiFuJiYhdGhpcy5wZWVrKHAuQXRLZXl3b3JkKSlyZXR1cm4gbnVsbDtjb25zdCByPXRoaXMuY3JlYXRlKHppKSxpPXRoaXMubWFyaygpO2Zvcig7dGhpcy5hY2NlcHREZWxpbSgiQCIpfHwhZSYmdGhpcy5hY2NlcHREZWxpbSgiJCIpOylpZih0aGlzLmhhc1doaXRlc3BhY2UoKSlyZXR1cm4gdGhpcy5yZXN0b3JlQXRNYXJrKGkpLG51bGw7cmV0dXJuIXRoaXMuYWNjZXB0KHAuQXRLZXl3b3JkKSYmIXRoaXMuYWNjZXB0KHAuSWRlbnQpPyh0aGlzLnJlc3RvcmVBdE1hcmsoaSksbnVsbCk6IXQmJnRoaXMucGVlayhwLkJyYWNrZXRMKSYmIXRoaXMuX2FkZExvb2t1cENoaWxkcmVuKHIpPyh0aGlzLnJlc3RvcmVBdE1hcmsoaSksbnVsbCk6cn1fcGFyc2VUZXJtRXhwcmVzc2lvbigpe3JldHVybiB0aGlzLl9wYXJzZVZhcmlhYmxlKCl8fHRoaXMuX3BhcnNlRXNjYXBlZCgpfHxzdXBlci5fcGFyc2VUZXJtRXhwcmVzc2lvbigpfHx0aGlzLl90cnlQYXJzZU1peGluUmVmZXJlbmNlKCExKX1fcGFyc2VFc2NhcGVkKCl7aWYodGhpcy5wZWVrKHAuRXNjYXBlZEphdmFTY3JpcHQpfHx0aGlzLnBlZWsocC5CYWRFc2NhcGVkSmF2YVNjcmlwdCkpe2NvbnN0IGU9dGhpcy5jcmVhdGVOb2RlKGIuRXNjYXBlZFZhbHVlKTtyZXR1cm4gdGhpcy5jb25zdW1lVG9rZW4oKSx0aGlzLmZpbmlzaChlKX1pZih0aGlzLnBlZWtEZWxpbSgifiIpKXtjb25zdCBlPXRoaXMuY3JlYXRlTm9kZShiLkVzY2FwZWRWYWx1ZSk7cmV0dXJuIHRoaXMuY29uc3VtZVRva2VuKCksdGhpcy5hY2NlcHQocC5TdHJpbmcpfHx0aGlzLmFjY2VwdChwLkVzY2FwZWRKYXZhU2NyaXB0KT90aGlzLmZpbmlzaChlKTp0aGlzLmZpbmlzaChlLHguVGVybUV4cGVjdGVkKX1yZXR1cm4gbnVsbH1fcGFyc2VPcGVyYXRvcigpe2NvbnN0IGU9dGhpcy5fcGFyc2VHdWFyZE9wZXJhdG9yKCk7cmV0dXJuIGV8fHN1cGVyLl9wYXJzZU9wZXJhdG9yKCl9X3BhcnNlR3VhcmRPcGVyYXRvcigpe2lmKHRoaXMucGVla0RlbGltKCI+Iikpe2NvbnN0IGU9dGhpcy5jcmVhdGVOb2RlKGIuT3BlcmF0b3IpO3JldHVybiB0aGlzLmNvbnN1bWVUb2tlbigpLHRoaXMuYWNjZXB0RGVsaW0oIj0iKSxlfWVsc2UgaWYodGhpcy5wZWVrRGVsaW0oIj0iKSl7Y29uc3QgZT10aGlzLmNyZWF0ZU5vZGUoYi5PcGVyYXRvcik7cmV0dXJuIHRoaXMuY29uc3VtZVRva2VuKCksdGhpcy5hY2NlcHREZWxpbSgiPCIpLGV9ZWxzZSBpZih0aGlzLnBlZWtEZWxpbSgiPCIpKXtjb25zdCBlPXRoaXMuY3JlYXRlTm9kZShiLk9wZXJhdG9yKTtyZXR1cm4gdGhpcy5jb25zdW1lVG9rZW4oKSx0aGlzLmFjY2VwdERlbGltKCI9IiksZX1yZXR1cm4gbnVsbH1fcGFyc2VSdWxlU2V0RGVjbGFyYXRpb24oKXtyZXR1cm4gdGhpcy5wZWVrKHAuQXRLZXl3b3JkKT90aGlzLl9wYXJzZUtleWZyYW1lKCl8fHRoaXMuX3BhcnNlTWVkaWEoITApfHx0aGlzLl9wYXJzZUltcG9ydCgpfHx0aGlzLl9wYXJzZVN1cHBvcnRzKCEwKXx8dGhpcy5fcGFyc2VMYXllcigpfHx0aGlzLl9wYXJzZVByb3BlcnR5QXRSdWxlKCl8fHRoaXMuX3BhcnNlQ29udGFpbmVyKCEwKXx8dGhpcy5fcGFyc2VEZXRhY2hlZFJ1bGVTZXRNaXhpbigpfHx0aGlzLl9wYXJzZVZhcmlhYmxlRGVjbGFyYXRpb24oKXx8dGhpcy5fcGFyc2VSdWxlU2V0RGVjbGFyYXRpb25BdFN0YXRlbWVudCgpOnRoaXMuX3RyeVBhcnNlTWl4aW5EZWNsYXJhdGlvbigpfHx0aGlzLl90cnlQYXJzZVJ1bGVzZXQoITApfHx0aGlzLl90cnlQYXJzZU1peGluUmVmZXJlbmNlKCl8fHRoaXMuX3BhcnNlRnVuY3Rpb24oKXx8dGhpcy5fcGFyc2VFeHRlbmQoKXx8dGhpcy5fcGFyc2VEZWNsYXJhdGlvbigpfV9wYXJzZUtleWZyYW1lSWRlbnQoKXtyZXR1cm4gdGhpcy5fcGFyc2VJZGVudChbRy5LZXlmcmFtZV0pfHx0aGlzLl9wYXJzZVZhcmlhYmxlKCl9X3BhcnNlS2V5ZnJhbWVTZWxlY3Rvcigpe3JldHVybiB0aGlzLl9wYXJzZURldGFjaGVkUnVsZVNldE1peGluKCl8fHN1cGVyLl9wYXJzZUtleWZyYW1lU2VsZWN0b3IoKX1fcGFyc2VTZWxlY3RvcihlKXtjb25zdCB0PXRoaXMuY3JlYXRlKHhuKTtsZXQgbj0hMTtmb3IoZSYmKG49dC5hZGRDaGlsZCh0aGlzLl9wYXJzZUNvbWJpbmF0b3IoKSkpO3QuYWRkQ2hpbGQodGhpcy5fcGFyc2VTaW1wbGVTZWxlY3RvcigpKTspe249ITA7Y29uc3Qgcj10aGlzLm1hcmsoKTtpZih0LmFkZENoaWxkKHRoaXMuX3BhcnNlR3VhcmQoKSkmJnRoaXMucGVlayhwLkN1cmx5TCkpYnJlYWs7dGhpcy5yZXN0b3JlQXRNYXJrKHIpLHQuYWRkQ2hpbGQodGhpcy5fcGFyc2VDb21iaW5hdG9yKCkpfXJldHVybiBuP3RoaXMuZmluaXNoKHQpOm51bGx9X3BhcnNlTmVzdGluZ1NlbGVjdG9yKCl7aWYodGhpcy5wZWVrRGVsaW0oIiYiKSl7Y29uc3QgZT10aGlzLmNyZWF0ZU5vZGUoYi5TZWxlY3RvckNvbWJpbmF0b3IpO2Zvcih0aGlzLmNvbnN1bWVUb2tlbigpOyF0aGlzLmhhc1doaXRlc3BhY2UoKSYmKHRoaXMuYWNjZXB0RGVsaW0oIi0iKXx8dGhpcy5hY2NlcHQocC5OdW0pfHx0aGlzLmFjY2VwdChwLkRpbWVuc2lvbil8fGUuYWRkQ2hpbGQodGhpcy5fcGFyc2VJZGVudCgpKXx8dGhpcy5hY2NlcHREZWxpbSgiJiIpKTspO3JldHVybiB0aGlzLmZpbmlzaChlKX1yZXR1cm4gbnVsbH1fcGFyc2VTZWxlY3RvcklkZW50KCl7aWYoIXRoaXMucGVla0ludGVycG9sYXRlZElkZW50KCkpcmV0dXJuIG51bGw7Y29uc3QgZT10aGlzLmNyZWF0ZU5vZGUoYi5TZWxlY3RvckludGVycG9sYXRpb24pO3JldHVybiB0aGlzLl9hY2NlcHRJbnRlcnBvbGF0ZWRJZGVudChlKT90aGlzLmZpbmlzaChlKTpudWxsfV9wYXJzZVByb3BlcnR5SWRlbnRpZmllcihlPSExKXtjb25zdCB0PS9eW1x3LV0rLztpZighdGhpcy5wZWVrSW50ZXJwb2xhdGVkSWRlbnQoKSYmIXRoaXMucGVla1JlZ0V4cCh0aGlzLnRva2VuLnR5cGUsdCkpcmV0dXJuIG51bGw7Y29uc3Qgbj10aGlzLm1hcmsoKSxyPXRoaXMuY3JlYXRlKEllKTtyLmlzQ3VzdG9tUHJvcGVydHk9dGhpcy5hY2NlcHREZWxpbSgiLSIpJiZ0aGlzLmFjY2VwdERlbGltKCItIik7bGV0IGk9ITE7cmV0dXJuIGU/ci5pc0N1c3RvbVByb3BlcnR5P2k9ci5hZGRDaGlsZCh0aGlzLl9wYXJzZUlkZW50KCkpOmk9ci5hZGRDaGlsZCh0aGlzLl9wYXJzZVJlZ2V4cCh0KSk6ci5pc0N1c3RvbVByb3BlcnR5P2k9dGhpcy5fYWNjZXB0SW50ZXJwb2xhdGVkSWRlbnQocik6aT10aGlzLl9hY2NlcHRJbnRlcnBvbGF0ZWRJZGVudChyLHQpLGk/KCFlJiYhdGhpcy5oYXNXaGl0ZXNwYWNlKCkmJih0aGlzLmFjY2VwdERlbGltKCIrIiksdGhpcy5oYXNXaGl0ZXNwYWNlKCl8fHRoaXMuYWNjZXB0SWRlbnQoIl8iKSksdGhpcy5maW5pc2gocikpOih0aGlzLnJlc3RvcmVBdE1hcmsobiksbnVsbCl9cGVla0ludGVycG9sYXRlZElkZW50KCl7cmV0dXJuIHRoaXMucGVlayhwLklkZW50KXx8dGhpcy5wZWVrRGVsaW0oIkAiKXx8dGhpcy5wZWVrRGVsaW0oIiQiKXx8dGhpcy5wZWVrRGVsaW0oIi0iKX1fYWNjZXB0SW50ZXJwb2xhdGVkSWRlbnQoZSx0KXtsZXQgbj0hMTtjb25zdCByPSgpPT57Y29uc3Qgcz10aGlzLm1hcmsoKTtyZXR1cm4gdGhpcy5hY2NlcHREZWxpbSgiLSIpJiYodGhpcy5oYXNXaGl0ZXNwYWNlKCl8fHRoaXMuYWNjZXB0RGVsaW0oIi0iKSx0aGlzLmhhc1doaXRlc3BhY2UoKSk/KHRoaXMucmVzdG9yZUF0TWFyayhzKSxudWxsKTp0aGlzLl9wYXJzZUludGVycG9sYXRpb24oKX0saT10PygpPT50aGlzLmFjY2VwdFJlZ2V4cCh0KTooKT0+dGhpcy5hY2NlcHQocC5JZGVudCk7Zm9yKDsoaSgpfHxlLmFkZENoaWxkKHRoaXMuX3BhcnNlSW50ZXJwb2xhdGlvbigpfHx0aGlzLnRyeShyKSkpJiYobj0hMCwhdGhpcy5oYXNXaGl0ZXNwYWNlKCkpOyk7cmV0dXJuIG59X3BhcnNlSW50ZXJwb2xhdGlvbigpe2NvbnN0IGU9dGhpcy5tYXJrKCk7aWYodGhpcy5wZWVrRGVsaW0oIkAiKXx8dGhpcy5wZWVrRGVsaW0oIiQiKSl7Y29uc3QgdD10aGlzLmNyZWF0ZU5vZGUoYi5JbnRlcnBvbGF0aW9uKTtyZXR1cm4gdGhpcy5jb25zdW1lVG9rZW4oKSx0aGlzLmhhc1doaXRlc3BhY2UoKXx8IXRoaXMuYWNjZXB0KHAuQ3VybHlMKT8odGhpcy5yZXN0b3JlQXRNYXJrKGUpLG51bGwpOnQuYWRkQ2hpbGQodGhpcy5fcGFyc2VJZGVudCgpKT90aGlzLmFjY2VwdChwLkN1cmx5Uik/dGhpcy5maW5pc2godCk6dGhpcy5maW5pc2godCx4LlJpZ2h0Q3VybHlFeHBlY3RlZCk6dGhpcy5maW5pc2godCx4LklkZW50aWZpZXJFeHBlY3RlZCl9cmV0dXJuIG51bGx9X3RyeVBhcnNlTWl4aW5EZWNsYXJhdGlvbigpe2NvbnN0IGU9dGhpcy5tYXJrKCksdD10aGlzLmNyZWF0ZShrbik7aWYoIXQuc2V0SWRlbnRpZmllcih0aGlzLl9wYXJzZU1peGluRGVjbGFyYXRpb25JZGVudGlmaWVyKCkpfHwhdGhpcy5hY2NlcHQocC5QYXJlbnRoZXNpc0wpKXJldHVybiB0aGlzLnJlc3RvcmVBdE1hcmsoZSksbnVsbDtpZih0LmdldFBhcmFtZXRlcnMoKS5hZGRDaGlsZCh0aGlzLl9wYXJzZU1peGluUGFyYW1ldGVyKCkpKWZvcig7KHRoaXMuYWNjZXB0KHAuQ29tbWEpfHx0aGlzLmFjY2VwdChwLlNlbWlDb2xvbikpJiYhdGhpcy5wZWVrKHAuUGFyZW50aGVzaXNSKTspdC5nZXRQYXJhbWV0ZXJzKCkuYWRkQ2hpbGQodGhpcy5fcGFyc2VNaXhpblBhcmFtZXRlcigpKXx8dGhpcy5tYXJrRXJyb3IodCx4LklkZW50aWZpZXJFeHBlY3RlZCxbXSxbcC5QYXJlbnRoZXNpc1JdKTtyZXR1cm4gdGhpcy5hY2NlcHQocC5QYXJlbnRoZXNpc1IpPyh0LnNldEd1YXJkKHRoaXMuX3BhcnNlR3VhcmQoKSksdGhpcy5wZWVrKHAuQ3VybHlMKT90aGlzLl9wYXJzZUJvZHkodCx0aGlzLl9wYXJzZU1peEluQm9keURlY2xhcmF0aW9uLmJpbmQodGhpcykpOih0aGlzLnJlc3RvcmVBdE1hcmsoZSksbnVsbCkpOih0aGlzLnJlc3RvcmVBdE1hcmsoZSksbnVsbCl9X3BhcnNlTWl4SW5Cb2R5RGVjbGFyYXRpb24oKXtyZXR1cm4gdGhpcy5fcGFyc2VGb250RmFjZSgpfHx0aGlzLl9wYXJzZVJ1bGVTZXREZWNsYXJhdGlvbigpfV9wYXJzZU1peGluRGVjbGFyYXRpb25JZGVudGlmaWVyKCl7bGV0IGU7aWYodGhpcy5wZWVrRGVsaW0oIiMiKXx8dGhpcy5wZWVrRGVsaW0oIi4iKSl7aWYoZT10aGlzLmNyZWF0ZShJZSksdGhpcy5jb25zdW1lVG9rZW4oKSx0aGlzLmhhc1doaXRlc3BhY2UoKXx8IWUuYWRkQ2hpbGQodGhpcy5fcGFyc2VJZGVudCgpKSlyZXR1cm4gbnVsbH1lbHNlIGlmKHRoaXMucGVlayhwLkhhc2gpKWU9dGhpcy5jcmVhdGUoSWUpLHRoaXMuY29uc3VtZVRva2VuKCk7ZWxzZSByZXR1cm4gbnVsbDtyZXR1cm4gZS5yZWZlcmVuY2VUeXBlcz1bRy5NaXhpbl0sdGhpcy5maW5pc2goZSl9X3BhcnNlUHNldWRvKCl7aWYoIXRoaXMucGVlayhwLkNvbG9uKSlyZXR1cm4gbnVsbDtjb25zdCBlPXRoaXMubWFyaygpLHQ9dGhpcy5jcmVhdGUoX24pO3JldHVybiB0aGlzLmNvbnN1bWVUb2tlbigpLHRoaXMuYWNjZXB0SWRlbnQoImV4dGVuZCIpP3RoaXMuX2NvbXBsZXRlRXh0ZW5kcyh0KToodGhpcy5yZXN0b3JlQXRNYXJrKGUpLHN1cGVyLl9wYXJzZVBzZXVkbygpKX1fcGFyc2VFeHRlbmQoKXtpZighdGhpcy5wZWVrRGVsaW0oIiYiKSlyZXR1cm4gbnVsbDtjb25zdCBlPXRoaXMubWFyaygpLHQ9dGhpcy5jcmVhdGUoX24pO3JldHVybiB0aGlzLmNvbnN1bWVUb2tlbigpLHRoaXMuaGFzV2hpdGVzcGFjZSgpfHwhdGhpcy5hY2NlcHQocC5Db2xvbil8fCF0aGlzLmFjY2VwdElkZW50KCJleHRlbmQiKT8odGhpcy5yZXN0b3JlQXRNYXJrKGUpLG51bGwpOnRoaXMuX2NvbXBsZXRlRXh0ZW5kcyh0KX1fY29tcGxldGVFeHRlbmRzKGUpe2lmKCF0aGlzLmFjY2VwdChwLlBhcmVudGhlc2lzTCkpcmV0dXJuIHRoaXMuZmluaXNoKGUseC5MZWZ0UGFyZW50aGVzaXNFeHBlY3RlZCk7Y29uc3QgdD1lLmdldFNlbGVjdG9ycygpO2lmKCF0LmFkZENoaWxkKHRoaXMuX3BhcnNlU2VsZWN0b3IoITApKSlyZXR1cm4gdGhpcy5maW5pc2goZSx4LlNlbGVjdG9yRXhwZWN0ZWQpO2Zvcig7dGhpcy5hY2NlcHQocC5Db21tYSk7KWlmKCF0LmFkZENoaWxkKHRoaXMuX3BhcnNlU2VsZWN0b3IoITApKSlyZXR1cm4gdGhpcy5maW5pc2goZSx4LlNlbGVjdG9yRXhwZWN0ZWQpO3JldHVybiB0aGlzLmFjY2VwdChwLlBhcmVudGhlc2lzUik/dGhpcy5maW5pc2goZSk6dGhpcy5maW5pc2goZSx4LlJpZ2h0UGFyZW50aGVzaXNFeHBlY3RlZCl9X3BhcnNlRGV0YWNoZWRSdWxlU2V0TWl4aW4oKXtpZighdGhpcy5wZWVrKHAuQXRLZXl3b3JkKSlyZXR1cm4gbnVsbDtjb25zdCBlPXRoaXMubWFyaygpLHQ9dGhpcy5jcmVhdGUoc3IpO3JldHVybiB0LmFkZENoaWxkKHRoaXMuX3BhcnNlVmFyaWFibGUoITApKSYmKHRoaXMuaGFzV2hpdGVzcGFjZSgpfHwhdGhpcy5hY2NlcHQocC5QYXJlbnRoZXNpc0wpKT8odGhpcy5yZXN0b3JlQXRNYXJrKGUpLG51bGwpOnRoaXMuYWNjZXB0KHAuUGFyZW50aGVzaXNSKT90aGlzLmZpbmlzaCh0KTp0aGlzLmZpbmlzaCh0LHguUmlnaHRQYXJlbnRoZXNpc0V4cGVjdGVkKX1fdHJ5UGFyc2VNaXhpblJlZmVyZW5jZShlPSEwKXtjb25zdCB0PXRoaXMubWFyaygpLG49dGhpcy5jcmVhdGUoc3IpO2xldCByPXRoaXMuX3BhcnNlTWl4aW5EZWNsYXJhdGlvbklkZW50aWZpZXIoKTtmb3IoO3I7KXt0aGlzLmFjY2VwdERlbGltKCI+Iik7Y29uc3Qgcz10aGlzLl9wYXJzZU1peGluRGVjbGFyYXRpb25JZGVudGlmaWVyKCk7aWYocyluLmdldE5hbWVzcGFjZXMoKS5hZGRDaGlsZChyKSxyPXM7ZWxzZSBicmVha31pZighbi5zZXRJZGVudGlmaWVyKHIpKXJldHVybiB0aGlzLnJlc3RvcmVBdE1hcmsodCksbnVsbDtsZXQgaT0hMTtpZih0aGlzLmFjY2VwdChwLlBhcmVudGhlc2lzTCkpe2lmKGk9ITAsbi5nZXRBcmd1bWVudHMoKS5hZGRDaGlsZCh0aGlzLl9wYXJzZU1peGluQXJndW1lbnQoKSkpe2Zvcig7KHRoaXMuYWNjZXB0KHAuQ29tbWEpfHx0aGlzLmFjY2VwdChwLlNlbWlDb2xvbikpJiYhdGhpcy5wZWVrKHAuUGFyZW50aGVzaXNSKTspaWYoIW4uZ2V0QXJndW1lbnRzKCkuYWRkQ2hpbGQodGhpcy5fcGFyc2VNaXhpbkFyZ3VtZW50KCkpKXJldHVybiB0aGlzLmZpbmlzaChuLHguRXhwcmVzc2lvbkV4cGVjdGVkKX1pZighdGhpcy5hY2NlcHQocC5QYXJlbnRoZXNpc1IpKXJldHVybiB0aGlzLmZpbmlzaChuLHguUmlnaHRQYXJlbnRoZXNpc0V4cGVjdGVkKTtyLnJlZmVyZW5jZVR5cGVzPVtHLk1peGluXX1lbHNlIHIucmVmZXJlbmNlVHlwZXM9W0cuTWl4aW4sRy5SdWxlXTtyZXR1cm4gdGhpcy5wZWVrKHAuQnJhY2tldEwpP2V8fHRoaXMuX2FkZExvb2t1cENoaWxkcmVuKG4pOm4uYWRkQ2hpbGQodGhpcy5fcGFyc2VQcmlvKCkpLCFpJiYhdGhpcy5wZWVrKHAuU2VtaUNvbG9uKSYmIXRoaXMucGVlayhwLkN1cmx5UikmJiF0aGlzLnBlZWsocC5FT0YpPyh0aGlzLnJlc3RvcmVBdE1hcmsodCksbnVsbCk6dGhpcy5maW5pc2gobil9X3BhcnNlTWl4aW5Bcmd1bWVudCgpe2NvbnN0IGU9dGhpcy5jcmVhdGUoanQpLHQ9dGhpcy5tYXJrKCksbj10aGlzLl9wYXJzZVZhcmlhYmxlKCk7cmV0dXJuIG4mJih0aGlzLmFjY2VwdChwLkNvbG9uKT9lLnNldElkZW50aWZpZXIobik6dGhpcy5yZXN0b3JlQXRNYXJrKHQpKSxlLnNldFZhbHVlKHRoaXMuX3BhcnNlRGV0YWNoZWRSdWxlU2V0KCl8fHRoaXMuX3BhcnNlRXhwcighMCkpP3RoaXMuZmluaXNoKGUpOih0aGlzLnJlc3RvcmVBdE1hcmsodCksbnVsbCl9X3BhcnNlTWl4aW5QYXJhbWV0ZXIoKXtjb25zdCBlPXRoaXMuY3JlYXRlKG5yKTtpZih0aGlzLnBlZWtLZXl3b3JkKCJAcmVzdCIpKXtjb25zdCBuPXRoaXMuY3JlYXRlKE8pO3JldHVybiB0aGlzLmNvbnN1bWVUb2tlbigpLHRoaXMuYWNjZXB0KFNzKT8oZS5zZXRJZGVudGlmaWVyKHRoaXMuZmluaXNoKG4pKSx0aGlzLmZpbmlzaChlKSk6dGhpcy5maW5pc2goZSx4LkRvdEV4cGVjdGVkLFtdLFtwLkNvbW1hLHAuUGFyZW50aGVzaXNSXSl9aWYodGhpcy5wZWVrKFNzKSl7Y29uc3Qgbj10aGlzLmNyZWF0ZShPKTtyZXR1cm4gdGhpcy5jb25zdW1lVG9rZW4oKSxlLnNldElkZW50aWZpZXIodGhpcy5maW5pc2gobikpLHRoaXMuZmluaXNoKGUpfWxldCB0PSExO3JldHVybiBlLnNldElkZW50aWZpZXIodGhpcy5fcGFyc2VWYXJpYWJsZSgpKSYmKHRoaXMuYWNjZXB0KHAuQ29sb24pLHQ9ITApLCFlLnNldERlZmF1bHRWYWx1ZSh0aGlzLl9wYXJzZURldGFjaGVkUnVsZVNldCgpfHx0aGlzLl9wYXJzZUV4cHIoITApKSYmIXQ/bnVsbDp0aGlzLmZpbmlzaChlKX1fcGFyc2VHdWFyZCgpe2lmKCF0aGlzLnBlZWtJZGVudCgid2hlbiIpKXJldHVybiBudWxsO2NvbnN0IGU9dGhpcy5jcmVhdGUoSXApO2lmKHRoaXMuY29uc3VtZVRva2VuKCksIWUuZ2V0Q29uZGl0aW9ucygpLmFkZENoaWxkKHRoaXMuX3BhcnNlR3VhcmRDb25kaXRpb24oKSkpcmV0dXJuIHRoaXMuZmluaXNoKGUseC5Db25kaXRpb25FeHBlY3RlZCk7Zm9yKDt0aGlzLmFjY2VwdElkZW50KCJhbmQiKXx8dGhpcy5hY2NlcHQocC5Db21tYSk7KWlmKCFlLmdldENvbmRpdGlvbnMoKS5hZGRDaGlsZCh0aGlzLl9wYXJzZUd1YXJkQ29uZGl0aW9uKCkpKXJldHVybiB0aGlzLmZpbmlzaChlLHguQ29uZGl0aW9uRXhwZWN0ZWQpO3JldHVybiB0aGlzLmZpbmlzaChlKX1fcGFyc2VHdWFyZENvbmRpdGlvbigpe2NvbnN0IGU9dGhpcy5jcmVhdGUoQXApO3JldHVybiBlLmlzTmVnYXRlZD10aGlzLmFjY2VwdElkZW50KCJub3QiKSx0aGlzLmFjY2VwdChwLlBhcmVudGhlc2lzTCk/KGUuYWRkQ2hpbGQodGhpcy5fcGFyc2VFeHByKCkpLHRoaXMuYWNjZXB0KHAuUGFyZW50aGVzaXNSKT90aGlzLmZpbmlzaChlKTp0aGlzLmZpbmlzaChlLHguUmlnaHRQYXJlbnRoZXNpc0V4cGVjdGVkKSk6ZS5pc05lZ2F0ZWQ/dGhpcy5maW5pc2goZSx4LkxlZnRQYXJlbnRoZXNpc0V4cGVjdGVkKTpudWxsfV9wYXJzZUZ1bmN0aW9uKCl7Y29uc3QgZT10aGlzLm1hcmsoKSx0PXRoaXMuY3JlYXRlKFNuKTtpZighdC5zZXRJZGVudGlmaWVyKHRoaXMuX3BhcnNlRnVuY3Rpb25JZGVudGlmaWVyKCkpKXJldHVybiBudWxsO2lmKHRoaXMuaGFzV2hpdGVzcGFjZSgpfHwhdGhpcy5hY2NlcHQocC5QYXJlbnRoZXNpc0wpKXJldHVybiB0aGlzLnJlc3RvcmVBdE1hcmsoZSksbnVsbDtpZih0LmdldEFyZ3VtZW50cygpLmFkZENoaWxkKHRoaXMuX3BhcnNlTWl4aW5Bcmd1bWVudCgpKSl7Zm9yKDsodGhpcy5hY2NlcHQocC5Db21tYSl8fHRoaXMuYWNjZXB0KHAuU2VtaUNvbG9uKSkmJiF0aGlzLnBlZWsocC5QYXJlbnRoZXNpc1IpOylpZighdC5nZXRBcmd1bWVudHMoKS5hZGRDaGlsZCh0aGlzLl9wYXJzZU1peGluQXJndW1lbnQoKSkpcmV0dXJuIHRoaXMuZmluaXNoKHQseC5FeHByZXNzaW9uRXhwZWN0ZWQpfXJldHVybiB0aGlzLmFjY2VwdChwLlBhcmVudGhlc2lzUik/dGhpcy5maW5pc2godCk6dGhpcy5maW5pc2godCx4LlJpZ2h0UGFyZW50aGVzaXNFeHBlY3RlZCl9X3BhcnNlRnVuY3Rpb25JZGVudGlmaWVyKCl7aWYodGhpcy5wZWVrRGVsaW0oIiUiKSl7Y29uc3QgZT10aGlzLmNyZWF0ZShJZSk7cmV0dXJuIGUucmVmZXJlbmNlVHlwZXM9W0cuRnVuY3Rpb25dLHRoaXMuY29uc3VtZVRva2VuKCksdGhpcy5maW5pc2goZSl9cmV0dXJuIHN1cGVyLl9wYXJzZUZ1bmN0aW9uSWRlbnRpZmllcigpfV9wYXJzZVVSTEFyZ3VtZW50KCl7Y29uc3QgZT10aGlzLm1hcmsoKSx0PXN1cGVyLl9wYXJzZVVSTEFyZ3VtZW50KCk7aWYoIXR8fCF0aGlzLnBlZWsocC5QYXJlbnRoZXNpc1IpKXt0aGlzLnJlc3RvcmVBdE1hcmsoZSk7Y29uc3Qgbj10aGlzLmNyZWF0ZShPKTtyZXR1cm4gbi5hZGRDaGlsZCh0aGlzLl9wYXJzZUJpbmFyeUV4cHIoKSksdGhpcy5maW5pc2gobil9cmV0dXJuIHR9fSxDcz1jbGFzcyBJcyBleHRlbmRzIHJze2NvbnN0cnVjdG9yKHQsbil7c3VwZXIoIkAiLHQsbil9Y3JlYXRlRnVuY3Rpb25Qcm9wb3NhbHModCxuLHIsaSl7Zm9yKGNvbnN0IHMgb2YgdCl7Y29uc3QgYT17bGFiZWw6cy5uYW1lLGRldGFpbDpzLmV4YW1wbGUsZG9jdW1lbnRhdGlvbjpzLmRlc2NyaXB0aW9uLHRleHRFZGl0OlUucmVwbGFjZSh0aGlzLmdldENvbXBsZXRpb25SYW5nZShuKSxzLm5hbWUrIigkMCkiKSxpbnNlcnRUZXh0Rm9ybWF0OlJlLlNuaXBwZXQsa2luZDpWLkZ1bmN0aW9ufTtyJiYoYS5zb3J0VGV4dD0ieiIpLGkuaXRlbXMucHVzaChhKX1yZXR1cm4gaX1nZXRUZXJtUHJvcG9zYWxzKHQsbixyKXtsZXQgaT1Jcy5idWlsdEluUHJvcG9zYWxzO3JldHVybiB0JiYoaT1pLmZpbHRlcihzPT4hcy50eXBlfHwhdC5yZXN0cmljdGlvbnN8fHQucmVzdHJpY3Rpb25zLmluZGV4T2Yocy50eXBlKSE9PS0xKSksdGhpcy5jcmVhdGVGdW5jdGlvblByb3Bvc2FscyhpLG4sITAsciksc3VwZXIuZ2V0VGVybVByb3Bvc2Fscyh0LG4scil9Z2V0Q29sb3JQcm9wb3NhbHModCxuLHIpe3JldHVybiB0aGlzLmNyZWF0ZUZ1bmN0aW9uUHJvcG9zYWxzKElzLmNvbG9yUHJvcG9zYWxzLG4sITEsciksc3VwZXIuZ2V0Q29sb3JQcm9wb3NhbHModCxuLHIpfWdldENvbXBsZXRpb25zRm9yRGVjbGFyYXRpb25Qcm9wZXJ0eSh0LG4pe3JldHVybiB0aGlzLmdldENvbXBsZXRpb25zRm9yU2VsZWN0b3IobnVsbCwhMCxuKSxzdXBlci5nZXRDb21wbGV0aW9uc0ZvckRlY2xhcmF0aW9uUHJvcGVydHkodCxuKX19O0NzLmJ1aWx0SW5Qcm9wb3NhbHM9W3tuYW1lOiJpZiIsZXhhbXBsZToiaWYoY29uZGl0aW9uLCB0cnVlVmFsdWUgWywgZmFsc2VWYWx1ZV0pOyIsZGVzY3JpcHRpb246ZygicmV0dXJucyBvbmUgb2YgdHdvIHZhbHVlcyBkZXBlbmRpbmcgb24gYSBjb25kaXRpb24uIil9LHtuYW1lOiJib29sZWFuIixleGFtcGxlOiJib29sZWFuKGNvbmRpdGlvbik7IixkZXNjcmlwdGlvbjpnKCcic3RvcmUiIGEgYm9vbGVhbiB0ZXN0IGZvciBsYXRlciBldmFsdWF0aW9uIGluIGEgZ3VhcmQgb3IgaWYoKS4nKX0se25hbWU6Imxlbmd0aCIsZXhhbXBsZToibGVuZ3RoKEBsaXN0KTsiLGRlc2NyaXB0aW9uOmcoInJldHVybnMgdGhlIG51bWJlciBvZiBlbGVtZW50cyBpbiBhIHZhbHVlIGxpc3QiKX0se25hbWU6ImV4dHJhY3QiLGV4YW1wbGU6ImV4dHJhY3QoQGxpc3QsIGluZGV4KTsiLGRlc2NyaXB0aW9uOmcoInJldHVybnMgYSB2YWx1ZSBhdCB0aGUgc3BlY2lmaWVkIHBvc2l0aW9uIGluIHRoZSBsaXN0Iil9LHtuYW1lOiJyYW5nZSIsZXhhbXBsZToicmFuZ2UoW3N0YXJ0LCBdIGVuZCBbLCBzdGVwXSk7IixkZXNjcmlwdGlvbjpnKCJnZW5lcmF0ZSBhIGxpc3Qgc3Bhbm5pbmcgYSByYW5nZSBvZiB2YWx1ZXMiKX0se25hbWU6ImVhY2giLGV4YW1wbGU6ImVhY2goQGxpc3QsIHJ1bGVzZXQpOyIsZGVzY3JpcHRpb246ZygiYmluZCB0aGUgZXZhbHVhdGlvbiBvZiBhIHJ1bGVzZXQgdG8gZWFjaCBtZW1iZXIgb2YgYSBsaXN0LiIpfSx7bmFtZToiZXNjYXBlIixleGFtcGxlOiJlc2NhcGUoQHN0cmluZyk7IixkZXNjcmlwdGlvbjpnKCJVUkwgZW5jb2RlcyBhIHN0cmluZyIpfSx7bmFtZToiZSIsZXhhbXBsZToiZShAc3RyaW5nKTsiLGRlc2NyaXB0aW9uOmcoImVzY2FwZSBzdHJpbmcgY29udGVudCIpfSx7bmFtZToicmVwbGFjZSIsZXhhbXBsZToicmVwbGFjZShAc3RyaW5nLCBAcGF0dGVybiwgQHJlcGxhY2VtZW50WywgQGZsYWdzXSk7IixkZXNjcmlwdGlvbjpnKCJzdHJpbmcgcmVwbGFjZSIpfSx7bmFtZToidW5pdCIsZXhhbXBsZToidW5pdChAZGltZW5zaW9uLCBbQHVuaXQ6ICcnXSk7IixkZXNjcmlwdGlvbjpnKCJyZW1vdmUgb3IgY2hhbmdlIHRoZSB1bml0IG9mIGEgZGltZW5zaW9uIil9LHtuYW1lOiJjb2xvciIsZXhhbXBsZToiY29sb3IoQHN0cmluZyk7IixkZXNjcmlwdGlvbjpnKCJwYXJzZXMgYSBzdHJpbmcgdG8gYSBjb2xvciIpLHR5cGU6ImNvbG9yIn0se25hbWU6ImNvbnZlcnQiLGV4YW1wbGU6ImNvbnZlcnQoQHZhbHVlLCB1bml0KTsiLGRlc2NyaXB0aW9uOmcoImNvbnZlcnRzIG51bWJlcnMgZnJvbSBvbmUgdHlwZSBpbnRvIGFub3RoZXIiKX0se25hbWU6ImRhdGEtdXJpIixleGFtcGxlOiJkYXRhLXVyaShbbWltZXR5cGUsXSB1cmwpOyIsZGVzY3JpcHRpb246ZygiaW5saW5lcyBhIHJlc291cmNlIGFuZCBmYWxscyBiYWNrIHRvIGB1cmwoKWAiKSx0eXBlOiJ1cmwifSx7bmFtZToiYWJzIixkZXNjcmlwdGlvbjpnKCJhYnNvbHV0ZSB2YWx1ZSBvZiBhIG51bWJlciIpLGV4YW1wbGU6ImFicyhudW1iZXIpOyJ9LHtuYW1lOiJhY29zIixkZXNjcmlwdGlvbjpnKCJhcmNjb3NpbmUgLSBpbnZlcnNlIG9mIGNvc2luZSBmdW5jdGlvbiIpLGV4YW1wbGU6ImFjb3MobnVtYmVyKTsifSx7bmFtZToiYXNpbiIsZGVzY3JpcHRpb246ZygiYXJjc2luZSAtIGludmVyc2Ugb2Ygc2luZSBmdW5jdGlvbiIpLGV4YW1wbGU6ImFzaW4obnVtYmVyKTsifSx7bmFtZToiY2VpbCIsZXhhbXBsZToiY2VpbChAbnVtYmVyKTsiLGRlc2NyaXB0aW9uOmcoInJvdW5kcyB1cCB0byBhbiBpbnRlZ2VyIil9LHtuYW1lOiJjb3MiLGRlc2NyaXB0aW9uOmcoImNvc2luZSBmdW5jdGlvbiIpLGV4YW1wbGU6ImNvcyhudW1iZXIpOyJ9LHtuYW1lOiJmbG9vciIsZGVzY3JpcHRpb246Zygicm91bmRzIGRvd24gdG8gYW4gaW50ZWdlciIpLGV4YW1wbGU6ImZsb29yKEBudW1iZXIpOyJ9LHtuYW1lOiJwZXJjZW50YWdlIixkZXNjcmlwdGlvbjpnKCJjb252ZXJ0cyB0byBhICUsIGUuZy4gMC41ID4gNTAlIiksZXhhbXBsZToicGVyY2VudGFnZShAbnVtYmVyKTsiLHR5cGU6InBlcmNlbnRhZ2UifSx7bmFtZToicm91bmQiLGRlc2NyaXB0aW9uOmcoInJvdW5kcyBhIG51bWJlciB0byBhIG51bWJlciBvZiBwbGFjZXMiKSxleGFtcGxlOiJyb3VuZChudW1iZXIsIFtwbGFjZXM6IDBdKTsifSx7bmFtZToic3FydCIsZGVzY3JpcHRpb246ZygiY2FsY3VsYXRlcyBzcXVhcmUgcm9vdCBvZiBhIG51bWJlciIpLGV4YW1wbGU6InNxcnQobnVtYmVyKTsifSx7bmFtZToic2luIixkZXNjcmlwdGlvbjpnKCJzaW5lIGZ1bmN0aW9uIiksZXhhbXBsZToic2luKG51bWJlcik7In0se25hbWU6InRhbiIsZGVzY3JpcHRpb246ZygidGFuZ2VudCBmdW5jdGlvbiIpLGV4YW1wbGU6InRhbihudW1iZXIpOyJ9LHtuYW1lOiJhdGFuIixkZXNjcmlwdGlvbjpnKCJhcmN0YW5nZW50IC0gaW52ZXJzZSBvZiB0YW5nZW50IGZ1bmN0aW9uIiksZXhhbXBsZToiYXRhbihudW1iZXIpOyJ9LHtuYW1lOiJwaSIsZGVzY3JpcHRpb246ZygicmV0dXJucyBwaSIpLGV4YW1wbGU6InBpKCk7In0se25hbWU6InBvdyIsZGVzY3JpcHRpb246ZygiZmlyc3QgYXJndW1lbnQgcmFpc2VkIHRvIHRoZSBwb3dlciBvZiB0aGUgc2Vjb25kIGFyZ3VtZW50IiksZXhhbXBsZToicG93KEBiYXNlLCBAZXhwb25lbnQpOyJ9LHtuYW1lOiJtb2QiLGRlc2NyaXB0aW9uOmcoImZpcnN0IGFyZ3VtZW50IG1vZHVsdXMgc2Vjb25kIGFyZ3VtZW50IiksZXhhbXBsZToibW9kKG51bWJlciwgbnVtYmVyKTsifSx7bmFtZToibWluIixkZXNjcmlwdGlvbjpnKCJyZXR1cm5zIHRoZSBsb3dlc3Qgb2Ygb25lIG9yIG1vcmUgdmFsdWVzIiksZXhhbXBsZToibWluKEB4LCBAeSk7In0se25hbWU6Im1heCIsZGVzY3JpcHRpb246ZygicmV0dXJucyB0aGUgbG93ZXN0IG9mIG9uZSBvciBtb3JlIHZhbHVlcyIpLGV4YW1wbGU6Im1heChAeCwgQHkpOyJ9XSxDcy5jb2xvclByb3Bvc2Fscz1be25hbWU6ImFyZ2IiLGV4YW1wbGU6ImFyZ2IoQGNvbG9yKTsiLGRlc2NyaXB0aW9uOmcoImNyZWF0ZXMgYSAjQUFSUkdHQkIiKX0se25hbWU6ImhzbCIsZXhhbXBsZToiaHNsKEBodWUsIEBzYXR1cmF0aW9uLCBAbGlnaHRuZXNzKTsiLGRlc2NyaXB0aW9uOmcoImNyZWF0ZXMgYSBjb2xvciIpfSx7bmFtZToiaHNsYSIsZXhhbXBsZToiaHNsYShAaHVlLCBAc2F0dXJhdGlvbiwgQGxpZ2h0bmVzcywgQGFscGhhKTsiLGRlc2NyaXB0aW9uOmcoImNyZWF0ZXMgYSBjb2xvciIpfSx7bmFtZToiaHN2IixleGFtcGxlOiJoc3YoQGh1ZSwgQHNhdHVyYXRpb24sIEB2YWx1ZSk7IixkZXNjcmlwdGlvbjpnKCJjcmVhdGVzIGEgY29sb3IiKX0se25hbWU6ImhzdmEiLGV4YW1wbGU6ImhzdmEoQGh1ZSwgQHNhdHVyYXRpb24sIEB2YWx1ZSwgQGFscGhhKTsiLGRlc2NyaXB0aW9uOmcoImNyZWF0ZXMgYSBjb2xvciIpfSx7bmFtZToiaHVlIixleGFtcGxlOiJodWUoQGNvbG9yKTsiLGRlc2NyaXB0aW9uOmcoInJldHVybnMgdGhlIGBodWVgIGNoYW5uZWwgb2YgYEBjb2xvcmAgaW4gdGhlIEhTTCBzcGFjZSIpfSx7bmFtZToic2F0dXJhdGlvbiIsZXhhbXBsZToic2F0dXJhdGlvbihAY29sb3IpOyIsZGVzY3JpcHRpb246ZygicmV0dXJucyB0aGUgYHNhdHVyYXRpb25gIGNoYW5uZWwgb2YgYEBjb2xvcmAgaW4gdGhlIEhTTCBzcGFjZSIpfSx7bmFtZToibGlnaHRuZXNzIixleGFtcGxlOiJsaWdodG5lc3MoQGNvbG9yKTsiLGRlc2NyaXB0aW9uOmcoInJldHVybnMgdGhlIGBsaWdodG5lc3NgIGNoYW5uZWwgb2YgYEBjb2xvcmAgaW4gdGhlIEhTTCBzcGFjZSIpfSx7bmFtZToiaHN2aHVlIixleGFtcGxlOiJoc3ZodWUoQGNvbG9yKTsiLGRlc2NyaXB0aW9uOmcoInJldHVybnMgdGhlIGBodWVgIGNoYW5uZWwgb2YgYEBjb2xvcmAgaW4gdGhlIEhTViBzcGFjZSIpfSx7bmFtZToiaHN2c2F0dXJhdGlvbiIsZXhhbXBsZToiaHN2c2F0dXJhdGlvbihAY29sb3IpOyIsZGVzY3JpcHRpb246ZygicmV0dXJucyB0aGUgYHNhdHVyYXRpb25gIGNoYW5uZWwgb2YgYEBjb2xvcmAgaW4gdGhlIEhTViBzcGFjZSIpfSx7bmFtZToiaHN2dmFsdWUiLGV4YW1wbGU6ImhzdnZhbHVlKEBjb2xvcik7IixkZXNjcmlwdGlvbjpnKCJyZXR1cm5zIHRoZSBgdmFsdWVgIGNoYW5uZWwgb2YgYEBjb2xvcmAgaW4gdGhlIEhTViBzcGFjZSIpfSx7bmFtZToicmVkIixleGFtcGxlOiJyZWQoQGNvbG9yKTsiLGRlc2NyaXB0aW9uOmcoInJldHVybnMgdGhlIGByZWRgIGNoYW5uZWwgb2YgYEBjb2xvcmAiKX0se25hbWU6ImdyZWVuIixleGFtcGxlOiJncmVlbihAY29sb3IpOyIsZGVzY3JpcHRpb246ZygicmV0dXJucyB0aGUgYGdyZWVuYCBjaGFubmVsIG9mIGBAY29sb3JgIil9LHtuYW1lOiJibHVlIixleGFtcGxlOiJibHVlKEBjb2xvcik7IixkZXNjcmlwdGlvbjpnKCJyZXR1cm5zIHRoZSBgYmx1ZWAgY2hhbm5lbCBvZiBgQGNvbG9yYCIpfSx7bmFtZToiYWxwaGEiLGV4YW1wbGU6ImFscGhhKEBjb2xvcik7IixkZXNjcmlwdGlvbjpnKCJyZXR1cm5zIHRoZSBgYWxwaGFgIGNoYW5uZWwgb2YgYEBjb2xvcmAiKX0se25hbWU6Imx1bWEiLGV4YW1wbGU6Imx1bWEoQGNvbG9yKTsiLGRlc2NyaXB0aW9uOmcoInJldHVybnMgdGhlIGBsdW1hYCB2YWx1ZSAocGVyY2VwdHVhbCBicmlnaHRuZXNzKSBvZiBgQGNvbG9yYCIpfSx7bmFtZToic2F0dXJhdGUiLGV4YW1wbGU6InNhdHVyYXRlKEBjb2xvciwgMTAlKTsiLGRlc2NyaXB0aW9uOmcoInJldHVybiBgQGNvbG9yYCAxMCUgcG9pbnRzIG1vcmUgc2F0dXJhdGVkIil9LHtuYW1lOiJkZXNhdHVyYXRlIixleGFtcGxlOiJkZXNhdHVyYXRlKEBjb2xvciwgMTAlKTsiLGRlc2NyaXB0aW9uOmcoInJldHVybiBgQGNvbG9yYCAxMCUgcG9pbnRzIGxlc3Mgc2F0dXJhdGVkIil9LHtuYW1lOiJsaWdodGVuIixleGFtcGxlOiJsaWdodGVuKEBjb2xvciwgMTAlKTsiLGRlc2NyaXB0aW9uOmcoInJldHVybiBgQGNvbG9yYCAxMCUgcG9pbnRzIGxpZ2h0ZXIiKX0se25hbWU6ImRhcmtlbiIsZXhhbXBsZToiZGFya2VuKEBjb2xvciwgMTAlKTsiLGRlc2NyaXB0aW9uOmcoInJldHVybiBgQGNvbG9yYCAxMCUgcG9pbnRzIGRhcmtlciIpfSx7bmFtZToiZmFkZWluIixleGFtcGxlOiJmYWRlaW4oQGNvbG9yLCAxMCUpOyIsZGVzY3JpcHRpb246ZygicmV0dXJuIGBAY29sb3JgIDEwJSBwb2ludHMgbGVzcyB0cmFuc3BhcmVudCIpfSx7bmFtZToiZmFkZW91dCIsZXhhbXBsZToiZmFkZW91dChAY29sb3IsIDEwJSk7IixkZXNjcmlwdGlvbjpnKCJyZXR1cm4gYEBjb2xvcmAgMTAlIHBvaW50cyBtb3JlIHRyYW5zcGFyZW50Iil9LHtuYW1lOiJmYWRlIixleGFtcGxlOiJmYWRlKEBjb2xvciwgNTAlKTsiLGRlc2NyaXB0aW9uOmcoInJldHVybiBgQGNvbG9yYCB3aXRoIDUwJSB0cmFuc3BhcmVuY3kiKX0se25hbWU6InNwaW4iLGV4YW1wbGU6InNwaW4oQGNvbG9yLCAxMCk7IixkZXNjcmlwdGlvbjpnKCJyZXR1cm4gYEBjb2xvcmAgd2l0aCBhIDEwIGRlZ3JlZSBsYXJnZXIgaW4gaHVlIil9LHtuYW1lOiJtaXgiLGV4YW1wbGU6Im1peChAY29sb3IxLCBAY29sb3IyLCBbQHdlaWdodDogNTAlXSk7IixkZXNjcmlwdGlvbjpnKCJyZXR1cm4gYSBtaXggb2YgYEBjb2xvcjFgIGFuZCBgQGNvbG9yMmAiKX0se25hbWU6ImdyZXlzY2FsZSIsZXhhbXBsZToiZ3JleXNjYWxlKEBjb2xvcik7IixkZXNjcmlwdGlvbjpnKCJyZXR1cm5zIGEgZ3JleSwgMTAwJSBkZXNhdHVyYXRlZCBjb2xvciIpfSx7bmFtZToiY29udHJhc3QiLGV4YW1wbGU6ImNvbnRyYXN0KEBjb2xvcjEsIFtAZGFya2NvbG9yOiBibGFja10sIFtAbGlnaHRjb2xvcjogd2hpdGVdLCBbQHRocmVzaG9sZDogNDMlXSk7IixkZXNjcmlwdGlvbjpnKCJyZXR1cm4gYEBkYXJrY29sb3JgIGlmIGBAY29sb3IxIGlzPiA0MyUgbHVtYWAgb3RoZXJ3aXNlIHJldHVybiBgQGxpZ2h0Y29sb3JgLCBzZWUgbm90ZXMiKX0se25hbWU6Im11bHRpcGx5IixleGFtcGxlOiJtdWx0aXBseShAY29sb3IxLCBAY29sb3IyKTsifSx7bmFtZToic2NyZWVuIixleGFtcGxlOiJzY3JlZW4oQGNvbG9yMSwgQGNvbG9yMik7In0se25hbWU6Im92ZXJsYXkiLGV4YW1wbGU6Im92ZXJsYXkoQGNvbG9yMSwgQGNvbG9yMik7In0se25hbWU6InNvZnRsaWdodCIsZXhhbXBsZToic29mdGxpZ2h0KEBjb2xvcjEsIEBjb2xvcjIpOyJ9LHtuYW1lOiJoYXJkbGlnaHQiLGV4YW1wbGU6ImhhcmRsaWdodChAY29sb3IxLCBAY29sb3IyKTsifSx7bmFtZToiZGlmZmVyZW5jZSIsZXhhbXBsZToiZGlmZmVyZW5jZShAY29sb3IxLCBAY29sb3IyKTsifSx7bmFtZToiZXhjbHVzaW9uIixleGFtcGxlOiJleGNsdXNpb24oQGNvbG9yMSwgQGNvbG9yMik7In0se25hbWU6ImF2ZXJhZ2UiLGV4YW1wbGU6ImF2ZXJhZ2UoQGNvbG9yMSwgQGNvbG9yMik7In0se25hbWU6Im5lZ2F0aW9uIixleGFtcGxlOiJuZWdhdGlvbihAY29sb3IxLCBAY29sb3IyKTsifV07ZnVuY3Rpb24gcW0oZSx0KXtjb25zdCBuPWptKGUpO3JldHVybiBIbShuLHQpfWZ1bmN0aW9uIGptKGUpe2Z1bmN0aW9uIHQoZCl7cmV0dXJuIGUucG9zaXRpb25BdChkLm9mZnNldCkubGluZX1mdW5jdGlvbiBuKGQpe3JldHVybiBlLnBvc2l0aW9uQXQoZC5vZmZzZXQrZC5sZW4pLmxpbmV9ZnVuY3Rpb24gcigpe3N3aXRjaChlLmxhbmd1YWdlSWQpe2Nhc2Uic2NzcyI6cmV0dXJuIG5ldyBqYztjYXNlImxlc3MiOnJldHVybiBuZXcgSmM7ZGVmYXVsdDpyZXR1cm4gbmV3IHlufX1mdW5jdGlvbiBpKGQsdSl7Y29uc3QgZj10KGQpLG09bihkKTtyZXR1cm4gZiE9PW0/e3N0YXJ0TGluZTpmLGVuZExpbmU6bSxraW5kOnV9Om51bGx9Y29uc3Qgcz1bXSxhPVtdLGw9cigpO2wuaWdub3JlQ29tbWVudD0hMSxsLnNldFNvdXJjZShlLmdldFRleHQoKSk7bGV0IG89bC5zY2FuKCksYz1udWxsO2Zvcig7by50eXBlIT09cC5FT0Y7KXtzd2l0Y2goby50eXBlKXtjYXNlIHAuQ3VybHlMOmNhc2UgQ3I6e2EucHVzaCh7bGluZTp0KG8pLHR5cGU6ImJyYWNlIixpc1N0YXJ0OiEwfSk7YnJlYWt9Y2FzZSBwLkN1cmx5Ujp7aWYoYS5sZW5ndGghPT0wKXtjb25zdCBkPVhjKGEsImJyYWNlIik7aWYoIWQpYnJlYWs7bGV0IHU9bihvKTtkLnR5cGU9PT0iYnJhY2UiJiYoYyYmbihjKSE9PXUmJnUtLSxkLmxpbmUhPT11JiZzLnB1c2goe3N0YXJ0TGluZTpkLmxpbmUsZW5kTGluZTp1LGtpbmQ6dm9pZCAwfSkpfWJyZWFrfWNhc2UgcC5Db21tZW50Ontjb25zdCBkPW09Pm09PT0iI3JlZ2lvbiI/e2xpbmU6dChvKSx0eXBlOiJjb21tZW50Iixpc1N0YXJ0OiEwfTp7bGluZTpuKG8pLHR5cGU6ImNvbW1lbnQiLGlzU3RhcnQ6ITF9LGY9KG09Pntjb25zdCB2PW0udGV4dC5tYXRjaCgvXlxzKlwvXCpccyooI3JlZ2lvbnwjZW5kcmVnaW9uKVxiXHMqKC4qPylccypcKlwvLyk7aWYodilyZXR1cm4gZCh2WzFdKTtpZihlLmxhbmd1YWdlSWQ9PT0ic2NzcyJ8fGUubGFuZ3VhZ2VJZD09PSJsZXNzIil7Y29uc3QgeT1tLnRleHQubWF0Y2goL15ccypcL1wvXHMqKCNyZWdpb258I2VuZHJlZ2lvbilcYlxzKiguKj8pXHMqLyk7aWYoeSlyZXR1cm4gZCh5WzFdKX1yZXR1cm4gbnVsbH0pKG8pO2lmKGYpaWYoZi5pc1N0YXJ0KWEucHVzaChmKTtlbHNle2NvbnN0IG09WGMoYSwiY29tbWVudCIpO2lmKCFtKWJyZWFrO20udHlwZT09PSJjb21tZW50IiYmbS5saW5lIT09Zi5saW5lJiZzLnB1c2goe3N0YXJ0TGluZTptLmxpbmUsZW5kTGluZTpmLmxpbmUsa2luZDoicmVnaW9uIn0pfWVsc2V7Y29uc3QgbT1pKG8sImNvbW1lbnQiKTttJiZzLnB1c2gobSl9YnJlYWt9fWM9byxvPWwuc2NhbigpfXJldHVybiBzfWZ1bmN0aW9uIFhjKGUsdCl7aWYoZS5sZW5ndGg9PT0wKXJldHVybiBudWxsO2ZvcihsZXQgbj1lLmxlbmd0aC0xO24+PTA7bi0tKWlmKGVbbl0udHlwZT09PXQmJmVbbl0uaXNTdGFydClyZXR1cm4gZS5zcGxpY2UobiwxKVswXTtyZXR1cm4gbnVsbH1mdW5jdGlvbiBIbShlLHQpe2NvbnN0IG49dCYmdC5yYW5nZUxpbWl0fHxOdW1iZXIuTUFYX1ZBTFVFLHI9ZS5zb3J0KChhLGwpPT57bGV0IG89YS5zdGFydExpbmUtbC5zdGFydExpbmU7cmV0dXJuIG89PT0wJiYobz1hLmVuZExpbmUtbC5lbmRMaW5lKSxvfSksaT1bXTtsZXQgcz0tMTtyZXR1cm4gci5mb3JFYWNoKGE9PnthLnN0YXJ0TGluZTxzJiZzPGEuZW5kTGluZXx8KGkucHVzaChhKSxzPWEuZW5kTGluZSl9KSxpLmxlbmd0aDxuP2k6aS5zbGljZSgwLG4pfXZhciBZYzsoZnVuY3Rpb24oKXt2YXIgZT1bLCxmdW5jdGlvbihpKXtmdW5jdGlvbiBzKG8pe3RoaXMuX19wYXJlbnQ9byx0aGlzLl9fY2hhcmFjdGVyX2NvdW50PTAsdGhpcy5fX2luZGVudF9jb3VudD0tMSx0aGlzLl9fYWxpZ25tZW50X2NvdW50PTAsdGhpcy5fX3dyYXBfcG9pbnRfaW5kZXg9MCx0aGlzLl9fd3JhcF9wb2ludF9jaGFyYWN0ZXJfY291bnQ9MCx0aGlzLl9fd3JhcF9wb2ludF9pbmRlbnRfY291bnQ9LTEsdGhpcy5fX3dyYXBfcG9pbnRfYWxpZ25tZW50X2NvdW50PTAsdGhpcy5fX2l0ZW1zPVtdfXMucHJvdG90eXBlLmNsb25lX2VtcHR5PWZ1bmN0aW9uKCl7dmFyIG89bmV3IHModGhpcy5fX3BhcmVudCk7cmV0dXJuIG8uc2V0X2luZGVudCh0aGlzLl9faW5kZW50X2NvdW50LHRoaXMuX19hbGlnbm1lbnRfY291bnQpLG99LHMucHJvdG90eXBlLml0ZW09ZnVuY3Rpb24obyl7cmV0dXJuIG88MD90aGlzLl9faXRlbXNbdGhpcy5fX2l0ZW1zLmxlbmd0aCtvXTp0aGlzLl9faXRlbXNbb119LHMucHJvdG90eXBlLmhhc19tYXRjaD1mdW5jdGlvbihvKXtmb3IodmFyIGM9dGhpcy5fX2l0ZW1zLmxlbmd0aC0xO2M+PTA7Yy0tKWlmKHRoaXMuX19pdGVtc1tjXS5tYXRjaChvKSlyZXR1cm4hMDtyZXR1cm4hMX0scy5wcm90b3R5cGUuc2V0X2luZGVudD1mdW5jdGlvbihvLGMpe3RoaXMuaXNfZW1wdHkoKSYmKHRoaXMuX19pbmRlbnRfY291bnQ9b3x8MCx0aGlzLl9fYWxpZ25tZW50X2NvdW50PWN8fDAsdGhpcy5fX2NoYXJhY3Rlcl9jb3VudD10aGlzLl9fcGFyZW50LmdldF9pbmRlbnRfc2l6ZSh0aGlzLl9faW5kZW50X2NvdW50LHRoaXMuX19hbGlnbm1lbnRfY291bnQpKX0scy5wcm90b3R5cGUuX3NldF93cmFwX3BvaW50PWZ1bmN0aW9uKCl7dGhpcy5fX3BhcmVudC53cmFwX2xpbmVfbGVuZ3RoJiYodGhpcy5fX3dyYXBfcG9pbnRfaW5kZXg9dGhpcy5fX2l0ZW1zLmxlbmd0aCx0aGlzLl9fd3JhcF9wb2ludF9jaGFyYWN0ZXJfY291bnQ9dGhpcy5fX2NoYXJhY3Rlcl9jb3VudCx0aGlzLl9fd3JhcF9wb2ludF9pbmRlbnRfY291bnQ9dGhpcy5fX3BhcmVudC5uZXh0X2xpbmUuX19pbmRlbnRfY291bnQsdGhpcy5fX3dyYXBfcG9pbnRfYWxpZ25tZW50X2NvdW50PXRoaXMuX19wYXJlbnQubmV4dF9saW5lLl9fYWxpZ25tZW50X2NvdW50KX0scy5wcm90b3R5cGUuX3Nob3VsZF93cmFwPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX193cmFwX3BvaW50X2luZGV4JiZ0aGlzLl9fY2hhcmFjdGVyX2NvdW50PnRoaXMuX19wYXJlbnQud3JhcF9saW5lX2xlbmd0aCYmdGhpcy5fX3dyYXBfcG9pbnRfY2hhcmFjdGVyX2NvdW50PnRoaXMuX19wYXJlbnQubmV4dF9saW5lLl9fY2hhcmFjdGVyX2NvdW50fSxzLnByb3RvdHlwZS5fYWxsb3dfd3JhcD1mdW5jdGlvbigpe2lmKHRoaXMuX3Nob3VsZF93cmFwKCkpe3RoaXMuX19wYXJlbnQuYWRkX25ld19saW5lKCk7dmFyIG89dGhpcy5fX3BhcmVudC5jdXJyZW50X2xpbmU7cmV0dXJuIG8uc2V0X2luZGVudCh0aGlzLl9fd3JhcF9wb2ludF9pbmRlbnRfY291bnQsdGhpcy5fX3dyYXBfcG9pbnRfYWxpZ25tZW50X2NvdW50KSxvLl9faXRlbXM9dGhpcy5fX2l0ZW1zLnNsaWNlKHRoaXMuX193cmFwX3BvaW50X2luZGV4KSx0aGlzLl9faXRlbXM9dGhpcy5fX2l0ZW1zLnNsaWNlKDAsdGhpcy5fX3dyYXBfcG9pbnRfaW5kZXgpLG8uX19jaGFyYWN0ZXJfY291bnQrPXRoaXMuX19jaGFyYWN0ZXJfY291bnQtdGhpcy5fX3dyYXBfcG9pbnRfY2hhcmFjdGVyX2NvdW50LHRoaXMuX19jaGFyYWN0ZXJfY291bnQ9dGhpcy5fX3dyYXBfcG9pbnRfY2hhcmFjdGVyX2NvdW50LG8uX19pdGVtc1swXT09PSIgIiYmKG8uX19pdGVtcy5zcGxpY2UoMCwxKSxvLl9fY2hhcmFjdGVyX2NvdW50LT0xKSwhMH1yZXR1cm4hMX0scy5wcm90b3R5cGUuaXNfZW1wdHk9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fX2l0ZW1zLmxlbmd0aD09PTB9LHMucHJvdG90eXBlLmxhc3Q9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pc19lbXB0eSgpP251bGw6dGhpcy5fX2l0ZW1zW3RoaXMuX19pdGVtcy5sZW5ndGgtMV19LHMucHJvdG90eXBlLnB1c2g9ZnVuY3Rpb24obyl7dGhpcy5fX2l0ZW1zLnB1c2gobyk7dmFyIGM9by5sYXN0SW5kZXhPZihgCmApO2MhPT0tMT90aGlzLl9fY2hhcmFjdGVyX2NvdW50PW8ubGVuZ3RoLWM6dGhpcy5fX2NoYXJhY3Rlcl9jb3VudCs9by5sZW5ndGh9LHMucHJvdG90eXBlLnBvcD1mdW5jdGlvbigpe3ZhciBvPW51bGw7cmV0dXJuIHRoaXMuaXNfZW1wdHkoKXx8KG89dGhpcy5fX2l0ZW1zLnBvcCgpLHRoaXMuX19jaGFyYWN0ZXJfY291bnQtPW8ubGVuZ3RoKSxvfSxzLnByb3RvdHlwZS5fcmVtb3ZlX2luZGVudD1mdW5jdGlvbigpe3RoaXMuX19pbmRlbnRfY291bnQ+MCYmKHRoaXMuX19pbmRlbnRfY291bnQtPTEsdGhpcy5fX2NoYXJhY3Rlcl9jb3VudC09dGhpcy5fX3BhcmVudC5pbmRlbnRfc2l6ZSl9LHMucHJvdG90eXBlLl9yZW1vdmVfd3JhcF9pbmRlbnQ9ZnVuY3Rpb24oKXt0aGlzLl9fd3JhcF9wb2ludF9pbmRlbnRfY291bnQ+MCYmKHRoaXMuX193cmFwX3BvaW50X2luZGVudF9jb3VudC09MSl9LHMucHJvdG90eXBlLnRyaW09ZnVuY3Rpb24oKXtmb3IoO3RoaXMubGFzdCgpPT09IiAiOyl0aGlzLl9faXRlbXMucG9wKCksdGhpcy5fX2NoYXJhY3Rlcl9jb3VudC09MX0scy5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXt2YXIgbz0iIjtyZXR1cm4gdGhpcy5pc19lbXB0eSgpP3RoaXMuX19wYXJlbnQuaW5kZW50X2VtcHR5X2xpbmVzJiYobz10aGlzLl9fcGFyZW50LmdldF9pbmRlbnRfc3RyaW5nKHRoaXMuX19pbmRlbnRfY291bnQpKToobz10aGlzLl9fcGFyZW50LmdldF9pbmRlbnRfc3RyaW5nKHRoaXMuX19pbmRlbnRfY291bnQsdGhpcy5fX2FsaWdubWVudF9jb3VudCksbys9dGhpcy5fX2l0ZW1zLmpvaW4oIiIpKSxvfTtmdW5jdGlvbiBhKG8sYyl7dGhpcy5fX2NhY2hlPVsiIl0sdGhpcy5fX2luZGVudF9zaXplPW8uaW5kZW50X3NpemUsdGhpcy5fX2luZGVudF9zdHJpbmc9by5pbmRlbnRfY2hhcixvLmluZGVudF93aXRoX3RhYnN8fCh0aGlzLl9faW5kZW50X3N0cmluZz1uZXcgQXJyYXkoby5pbmRlbnRfc2l6ZSsxKS5qb2luKG8uaW5kZW50X2NoYXIpKSxjPWN8fCIiLG8uaW5kZW50X2xldmVsPjAmJihjPW5ldyBBcnJheShvLmluZGVudF9sZXZlbCsxKS5qb2luKHRoaXMuX19pbmRlbnRfc3RyaW5nKSksdGhpcy5fX2Jhc2Vfc3RyaW5nPWMsdGhpcy5fX2Jhc2Vfc3RyaW5nX2xlbmd0aD1jLmxlbmd0aH1hLnByb3RvdHlwZS5nZXRfaW5kZW50X3NpemU9ZnVuY3Rpb24obyxjKXt2YXIgZD10aGlzLl9fYmFzZV9zdHJpbmdfbGVuZ3RoO3JldHVybiBjPWN8fDAsbzwwJiYoZD0wKSxkKz1vKnRoaXMuX19pbmRlbnRfc2l6ZSxkKz1jLGR9LGEucHJvdG90eXBlLmdldF9pbmRlbnRfc3RyaW5nPWZ1bmN0aW9uKG8sYyl7dmFyIGQ9dGhpcy5fX2Jhc2Vfc3RyaW5nO3JldHVybiBjPWN8fDAsbzwwJiYobz0wLGQ9IiIpLGMrPW8qdGhpcy5fX2luZGVudF9zaXplLHRoaXMuX19lbnN1cmVfY2FjaGUoYyksZCs9dGhpcy5fX2NhY2hlW2NdLGR9LGEucHJvdG90eXBlLl9fZW5zdXJlX2NhY2hlPWZ1bmN0aW9uKG8pe2Zvcig7bz49dGhpcy5fX2NhY2hlLmxlbmd0aDspdGhpcy5fX2FkZF9jb2x1bW4oKX0sYS5wcm90b3R5cGUuX19hZGRfY29sdW1uPWZ1bmN0aW9uKCl7dmFyIG89dGhpcy5fX2NhY2hlLmxlbmd0aCxjPTAsZD0iIjt0aGlzLl9faW5kZW50X3NpemUmJm8+PXRoaXMuX19pbmRlbnRfc2l6ZSYmKGM9TWF0aC5mbG9vcihvL3RoaXMuX19pbmRlbnRfc2l6ZSksby09Yyp0aGlzLl9faW5kZW50X3NpemUsZD1uZXcgQXJyYXkoYysxKS5qb2luKHRoaXMuX19pbmRlbnRfc3RyaW5nKSksbyYmKGQrPW5ldyBBcnJheShvKzEpLmpvaW4oIiAiKSksdGhpcy5fX2NhY2hlLnB1c2goZCl9O2Z1bmN0aW9uIGwobyxjKXt0aGlzLl9faW5kZW50X2NhY2hlPW5ldyBhKG8sYyksdGhpcy5yYXc9ITEsdGhpcy5fZW5kX3dpdGhfbmV3bGluZT1vLmVuZF93aXRoX25ld2xpbmUsdGhpcy5pbmRlbnRfc2l6ZT1vLmluZGVudF9zaXplLHRoaXMud3JhcF9saW5lX2xlbmd0aD1vLndyYXBfbGluZV9sZW5ndGgsdGhpcy5pbmRlbnRfZW1wdHlfbGluZXM9by5pbmRlbnRfZW1wdHlfbGluZXMsdGhpcy5fX2xpbmVzPVtdLHRoaXMucHJldmlvdXNfbGluZT1udWxsLHRoaXMuY3VycmVudF9saW5lPW51bGwsdGhpcy5uZXh0X2xpbmU9bmV3IHModGhpcyksdGhpcy5zcGFjZV9iZWZvcmVfdG9rZW49ITEsdGhpcy5ub25fYnJlYWtpbmdfc3BhY2U9ITEsdGhpcy5wcmV2aW91c190b2tlbl93cmFwcGVkPSExLHRoaXMuX19hZGRfb3V0cHV0bGluZSgpfWwucHJvdG90eXBlLl9fYWRkX291dHB1dGxpbmU9ZnVuY3Rpb24oKXt0aGlzLnByZXZpb3VzX2xpbmU9dGhpcy5jdXJyZW50X2xpbmUsdGhpcy5jdXJyZW50X2xpbmU9dGhpcy5uZXh0X2xpbmUuY2xvbmVfZW1wdHkoKSx0aGlzLl9fbGluZXMucHVzaCh0aGlzLmN1cnJlbnRfbGluZSl9LGwucHJvdG90eXBlLmdldF9saW5lX251bWJlcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9fbGluZXMubGVuZ3RofSxsLnByb3RvdHlwZS5nZXRfaW5kZW50X3N0cmluZz1mdW5jdGlvbihvLGMpe3JldHVybiB0aGlzLl9faW5kZW50X2NhY2hlLmdldF9pbmRlbnRfc3RyaW5nKG8sYyl9LGwucHJvdG90eXBlLmdldF9pbmRlbnRfc2l6ZT1mdW5jdGlvbihvLGMpe3JldHVybiB0aGlzLl9faW5kZW50X2NhY2hlLmdldF9pbmRlbnRfc2l6ZShvLGMpfSxsLnByb3RvdHlwZS5pc19lbXB0eT1mdW5jdGlvbigpe3JldHVybiF0aGlzLnByZXZpb3VzX2xpbmUmJnRoaXMuY3VycmVudF9saW5lLmlzX2VtcHR5KCl9LGwucHJvdG90eXBlLmFkZF9uZXdfbGluZT1mdW5jdGlvbihvKXtyZXR1cm4gdGhpcy5pc19lbXB0eSgpfHwhbyYmdGhpcy5qdXN0X2FkZGVkX25ld2xpbmUoKT8hMToodGhpcy5yYXd8fHRoaXMuX19hZGRfb3V0cHV0bGluZSgpLCEwKX0sbC5wcm90b3R5cGUuZ2V0X2NvZGU9ZnVuY3Rpb24obyl7dGhpcy50cmltKCEwKTt2YXIgYz10aGlzLmN1cnJlbnRfbGluZS5wb3AoKTtjJiYoY1tjLmxlbmd0aC0xXT09PWAKYCYmKGM9Yy5yZXBsYWNlKC9cbiskL2csIiIpKSx0aGlzLmN1cnJlbnRfbGluZS5wdXNoKGMpKSx0aGlzLl9lbmRfd2l0aF9uZXdsaW5lJiZ0aGlzLl9fYWRkX291dHB1dGxpbmUoKTt2YXIgZD10aGlzLl9fbGluZXMuam9pbihgCmApO3JldHVybiBvIT09YApgJiYoZD1kLnJlcGxhY2UoL1tcbl0vZyxvKSksZH0sbC5wcm90b3R5cGUuc2V0X3dyYXBfcG9pbnQ9ZnVuY3Rpb24oKXt0aGlzLmN1cnJlbnRfbGluZS5fc2V0X3dyYXBfcG9pbnQoKX0sbC5wcm90b3R5cGUuc2V0X2luZGVudD1mdW5jdGlvbihvLGMpe3JldHVybiBvPW98fDAsYz1jfHwwLHRoaXMubmV4dF9saW5lLnNldF9pbmRlbnQobyxjKSx0aGlzLl9fbGluZXMubGVuZ3RoPjE/KHRoaXMuY3VycmVudF9saW5lLnNldF9pbmRlbnQobyxjKSwhMCk6KHRoaXMuY3VycmVudF9saW5lLnNldF9pbmRlbnQoKSwhMSl9LGwucHJvdG90eXBlLmFkZF9yYXdfdG9rZW49ZnVuY3Rpb24obyl7Zm9yKHZhciBjPTA7YzxvLm5ld2xpbmVzO2MrKyl0aGlzLl9fYWRkX291dHB1dGxpbmUoKTt0aGlzLmN1cnJlbnRfbGluZS5zZXRfaW5kZW50KC0xKSx0aGlzLmN1cnJlbnRfbGluZS5wdXNoKG8ud2hpdGVzcGFjZV9iZWZvcmUpLHRoaXMuY3VycmVudF9saW5lLnB1c2goby50ZXh0KSx0aGlzLnNwYWNlX2JlZm9yZV90b2tlbj0hMSx0aGlzLm5vbl9icmVha2luZ19zcGFjZT0hMSx0aGlzLnByZXZpb3VzX3Rva2VuX3dyYXBwZWQ9ITF9LGwucHJvdG90eXBlLmFkZF90b2tlbj1mdW5jdGlvbihvKXt0aGlzLl9fYWRkX3NwYWNlX2JlZm9yZV90b2tlbigpLHRoaXMuY3VycmVudF9saW5lLnB1c2gobyksdGhpcy5zcGFjZV9iZWZvcmVfdG9rZW49ITEsdGhpcy5ub25fYnJlYWtpbmdfc3BhY2U9ITEsdGhpcy5wcmV2aW91c190b2tlbl93cmFwcGVkPXRoaXMuY3VycmVudF9saW5lLl9hbGxvd193cmFwKCl9LGwucHJvdG90eXBlLl9fYWRkX3NwYWNlX2JlZm9yZV90b2tlbj1mdW5jdGlvbigpe3RoaXMuc3BhY2VfYmVmb3JlX3Rva2VuJiYhdGhpcy5qdXN0X2FkZGVkX25ld2xpbmUoKSYmKHRoaXMubm9uX2JyZWFraW5nX3NwYWNlfHx0aGlzLnNldF93cmFwX3BvaW50KCksdGhpcy5jdXJyZW50X2xpbmUucHVzaCgiICIpKX0sbC5wcm90b3R5cGUucmVtb3ZlX2luZGVudD1mdW5jdGlvbihvKXtmb3IodmFyIGM9dGhpcy5fX2xpbmVzLmxlbmd0aDtvPGM7KXRoaXMuX19saW5lc1tvXS5fcmVtb3ZlX2luZGVudCgpLG8rKzt0aGlzLmN1cnJlbnRfbGluZS5fcmVtb3ZlX3dyYXBfaW5kZW50KCl9LGwucHJvdG90eXBlLnRyaW09ZnVuY3Rpb24obyl7Zm9yKG89bz09PXZvaWQgMD8hMTpvLHRoaXMuY3VycmVudF9saW5lLnRyaW0oKTtvJiZ0aGlzLl9fbGluZXMubGVuZ3RoPjEmJnRoaXMuY3VycmVudF9saW5lLmlzX2VtcHR5KCk7KXRoaXMuX19saW5lcy5wb3AoKSx0aGlzLmN1cnJlbnRfbGluZT10aGlzLl9fbGluZXNbdGhpcy5fX2xpbmVzLmxlbmd0aC0xXSx0aGlzLmN1cnJlbnRfbGluZS50cmltKCk7dGhpcy5wcmV2aW91c19saW5lPXRoaXMuX19saW5lcy5sZW5ndGg+MT90aGlzLl9fbGluZXNbdGhpcy5fX2xpbmVzLmxlbmd0aC0yXTpudWxsfSxsLnByb3RvdHlwZS5qdXN0X2FkZGVkX25ld2xpbmU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jdXJyZW50X2xpbmUuaXNfZW1wdHkoKX0sbC5wcm90b3R5cGUuanVzdF9hZGRlZF9ibGFua2xpbmU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pc19lbXB0eSgpfHx0aGlzLmN1cnJlbnRfbGluZS5pc19lbXB0eSgpJiZ0aGlzLnByZXZpb3VzX2xpbmUuaXNfZW1wdHkoKX0sbC5wcm90b3R5cGUuZW5zdXJlX2VtcHR5X2xpbmVfYWJvdmU9ZnVuY3Rpb24obyxjKXtmb3IodmFyIGQ9dGhpcy5fX2xpbmVzLmxlbmd0aC0yO2Q+PTA7KXt2YXIgdT10aGlzLl9fbGluZXNbZF07aWYodS5pc19lbXB0eSgpKWJyZWFrO2lmKHUuaXRlbSgwKS5pbmRleE9mKG8pIT09MCYmdS5pdGVtKC0xKSE9PWMpe3RoaXMuX19saW5lcy5zcGxpY2UoZCsxLDAsbmV3IHModGhpcykpLHRoaXMucHJldmlvdXNfbGluZT10aGlzLl9fbGluZXNbdGhpcy5fX2xpbmVzLmxlbmd0aC0yXTticmVha31kLS19fSxpLmV4cG9ydHMuT3V0cHV0PWx9LCwsLGZ1bmN0aW9uKGkpe2Z1bmN0aW9uIHMobyxjKXt0aGlzLnJhd19vcHRpb25zPWEobyxjKSx0aGlzLmRpc2FibGVkPXRoaXMuX2dldF9ib29sZWFuKCJkaXNhYmxlZCIpLHRoaXMuZW9sPXRoaXMuX2dldF9jaGFyYWN0ZXJzKCJlb2wiLCJhdXRvIiksdGhpcy5lbmRfd2l0aF9uZXdsaW5lPXRoaXMuX2dldF9ib29sZWFuKCJlbmRfd2l0aF9uZXdsaW5lIiksdGhpcy5pbmRlbnRfc2l6ZT10aGlzLl9nZXRfbnVtYmVyKCJpbmRlbnRfc2l6ZSIsNCksdGhpcy5pbmRlbnRfY2hhcj10aGlzLl9nZXRfY2hhcmFjdGVycygiaW5kZW50X2NoYXIiLCIgIiksdGhpcy5pbmRlbnRfbGV2ZWw9dGhpcy5fZ2V0X251bWJlcigiaW5kZW50X2xldmVsIiksdGhpcy5wcmVzZXJ2ZV9uZXdsaW5lcz10aGlzLl9nZXRfYm9vbGVhbigicHJlc2VydmVfbmV3bGluZXMiLCEwKSx0aGlzLm1heF9wcmVzZXJ2ZV9uZXdsaW5lcz10aGlzLl9nZXRfbnVtYmVyKCJtYXhfcHJlc2VydmVfbmV3bGluZXMiLDMyNzg2KSx0aGlzLnByZXNlcnZlX25ld2xpbmVzfHwodGhpcy5tYXhfcHJlc2VydmVfbmV3bGluZXM9MCksdGhpcy5pbmRlbnRfd2l0aF90YWJzPXRoaXMuX2dldF9ib29sZWFuKCJpbmRlbnRfd2l0aF90YWJzIix0aGlzLmluZGVudF9jaGFyPT09IgkiKSx0aGlzLmluZGVudF93aXRoX3RhYnMmJih0aGlzLmluZGVudF9jaGFyPSIJIix0aGlzLmluZGVudF9zaXplPT09MSYmKHRoaXMuaW5kZW50X3NpemU9NCkpLHRoaXMud3JhcF9saW5lX2xlbmd0aD10aGlzLl9nZXRfbnVtYmVyKCJ3cmFwX2xpbmVfbGVuZ3RoIix0aGlzLl9nZXRfbnVtYmVyKCJtYXhfY2hhciIpKSx0aGlzLmluZGVudF9lbXB0eV9saW5lcz10aGlzLl9nZXRfYm9vbGVhbigiaW5kZW50X2VtcHR5X2xpbmVzIiksdGhpcy50ZW1wbGF0aW5nPXRoaXMuX2dldF9zZWxlY3Rpb25fbGlzdCgidGVtcGxhdGluZyIsWyJhdXRvIiwibm9uZSIsImFuZ3VsYXIiLCJkamFuZ28iLCJlcmIiLCJoYW5kbGViYXJzIiwicGhwIiwic21hcnR5Il0sWyJhdXRvIl0pfXMucHJvdG90eXBlLl9nZXRfYXJyYXk9ZnVuY3Rpb24obyxjKXt2YXIgZD10aGlzLnJhd19vcHRpb25zW29dLHU9Y3x8W107cmV0dXJuIHR5cGVvZiBkPT0ib2JqZWN0Ij9kIT09bnVsbCYmdHlwZW9mIGQuY29uY2F0PT0iZnVuY3Rpb24iJiYodT1kLmNvbmNhdCgpKTp0eXBlb2YgZD09InN0cmluZyImJih1PWQuc3BsaXQoL1teYS16QS1aMC05X1wvXC1dKy8pKSx1fSxzLnByb3RvdHlwZS5fZ2V0X2Jvb2xlYW49ZnVuY3Rpb24obyxjKXt2YXIgZD10aGlzLnJhd19vcHRpb25zW29dLHU9ZD09PXZvaWQgMD8hIWM6ISFkO3JldHVybiB1fSxzLnByb3RvdHlwZS5fZ2V0X2NoYXJhY3RlcnM9ZnVuY3Rpb24obyxjKXt2YXIgZD10aGlzLnJhd19vcHRpb25zW29dLHU9Y3x8IiI7cmV0dXJuIHR5cGVvZiBkPT0ic3RyaW5nIiYmKHU9ZC5yZXBsYWNlKC9cXHIvLCJcciIpLnJlcGxhY2UoL1xcbi8sYApgKS5yZXBsYWNlKC9cXHQvLCIJIikpLHV9LHMucHJvdG90eXBlLl9nZXRfbnVtYmVyPWZ1bmN0aW9uKG8sYyl7dmFyIGQ9dGhpcy5yYXdfb3B0aW9uc1tvXTtjPXBhcnNlSW50KGMsMTApLGlzTmFOKGMpJiYoYz0wKTt2YXIgdT1wYXJzZUludChkLDEwKTtyZXR1cm4gaXNOYU4odSkmJih1PWMpLHV9LHMucHJvdG90eXBlLl9nZXRfc2VsZWN0aW9uPWZ1bmN0aW9uKG8sYyxkKXt2YXIgdT10aGlzLl9nZXRfc2VsZWN0aW9uX2xpc3QobyxjLGQpO2lmKHUubGVuZ3RoIT09MSl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgT3B0aW9uIFZhbHVlOiBUaGUgb3B0aW9uICciK28rYCcgY2FuIG9ubHkgYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOgpgK2MrYApZb3UgcGFzc2VkIGluOiAnYCt0aGlzLnJhd19vcHRpb25zW29dKyInIik7cmV0dXJuIHVbMF19LHMucHJvdG90eXBlLl9nZXRfc2VsZWN0aW9uX2xpc3Q9ZnVuY3Rpb24obyxjLGQpe2lmKCFjfHxjLmxlbmd0aD09PTApdGhyb3cgbmV3IEVycm9yKCJTZWxlY3Rpb24gbGlzdCBjYW5ub3QgYmUgZW1wdHkuIik7aWYoZD1kfHxbY1swXV0sIXRoaXMuX2lzX3ZhbGlkX3NlbGVjdGlvbihkLGMpKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBEZWZhdWx0IFZhbHVlISIpO3ZhciB1PXRoaXMuX2dldF9hcnJheShvLGQpO2lmKCF0aGlzLl9pc192YWxpZF9zZWxlY3Rpb24odSxjKSl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgT3B0aW9uIFZhbHVlOiBUaGUgb3B0aW9uICciK28rYCcgY2FuIGNvbnRhaW4gb25seSB0aGUgZm9sbG93aW5nIHZhbHVlczoKYCtjK2AKWW91IHBhc3NlZCBpbjogJ2ArdGhpcy5yYXdfb3B0aW9uc1tvXSsiJyIpO3JldHVybiB1fSxzLnByb3RvdHlwZS5faXNfdmFsaWRfc2VsZWN0aW9uPWZ1bmN0aW9uKG8sYyl7cmV0dXJuIG8ubGVuZ3RoJiZjLmxlbmd0aCYmIW8uc29tZShmdW5jdGlvbihkKXtyZXR1cm4gYy5pbmRleE9mKGQpPT09LTF9KX07ZnVuY3Rpb24gYShvLGMpe3ZhciBkPXt9O289bChvKTt2YXIgdTtmb3IodSBpbiBvKXUhPT1jJiYoZFt1XT1vW3VdKTtpZihjJiZvW2NdKWZvcih1IGluIG9bY10pZFt1XT1vW2NdW3VdO3JldHVybiBkfWZ1bmN0aW9uIGwobyl7dmFyIGM9e30sZDtmb3IoZCBpbiBvKXt2YXIgdT1kLnJlcGxhY2UoLy0vZywiXyIpO2NbdV09b1tkXX1yZXR1cm4gY31pLmV4cG9ydHMuT3B0aW9ucz1zLGkuZXhwb3J0cy5ub3JtYWxpemVPcHRzPWwsaS5leHBvcnRzLm1lcmdlT3B0cz1hfSwsZnVuY3Rpb24oaSl7dmFyIHM9UmVnRXhwLnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSgic3RpY2t5Iik7ZnVuY3Rpb24gYShsKXt0aGlzLl9faW5wdXQ9bHx8IiIsdGhpcy5fX2lucHV0X2xlbmd0aD10aGlzLl9faW5wdXQubGVuZ3RoLHRoaXMuX19wb3NpdGlvbj0wfWEucHJvdG90eXBlLnJlc3RhcnQ9ZnVuY3Rpb24oKXt0aGlzLl9fcG9zaXRpb249MH0sYS5wcm90b3R5cGUuYmFjaz1mdW5jdGlvbigpe3RoaXMuX19wb3NpdGlvbj4wJiYodGhpcy5fX3Bvc2l0aW9uLT0xKX0sYS5wcm90b3R5cGUuaGFzTmV4dD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9fcG9zaXRpb248dGhpcy5fX2lucHV0X2xlbmd0aH0sYS5wcm90b3R5cGUubmV4dD1mdW5jdGlvbigpe3ZhciBsPW51bGw7cmV0dXJuIHRoaXMuaGFzTmV4dCgpJiYobD10aGlzLl9faW5wdXQuY2hhckF0KHRoaXMuX19wb3NpdGlvbiksdGhpcy5fX3Bvc2l0aW9uKz0xKSxsfSxhLnByb3RvdHlwZS5wZWVrPWZ1bmN0aW9uKGwpe3ZhciBvPW51bGw7cmV0dXJuIGw9bHx8MCxsKz10aGlzLl9fcG9zaXRpb24sbD49MCYmbDx0aGlzLl9faW5wdXRfbGVuZ3RoJiYobz10aGlzLl9faW5wdXQuY2hhckF0KGwpKSxvfSxhLnByb3RvdHlwZS5fX21hdGNoPWZ1bmN0aW9uKGwsbyl7bC5sYXN0SW5kZXg9bzt2YXIgYz1sLmV4ZWModGhpcy5fX2lucHV0KTtyZXR1cm4gYyYmIShzJiZsLnN0aWNreSkmJmMuaW5kZXghPT1vJiYoYz1udWxsKSxjfSxhLnByb3RvdHlwZS50ZXN0PWZ1bmN0aW9uKGwsbyl7cmV0dXJuIG89b3x8MCxvKz10aGlzLl9fcG9zaXRpb24sbz49MCYmbzx0aGlzLl9faW5wdXRfbGVuZ3RoPyEhdGhpcy5fX21hdGNoKGwsbyk6ITF9LGEucHJvdG90eXBlLnRlc3RDaGFyPWZ1bmN0aW9uKGwsbyl7dmFyIGM9dGhpcy5wZWVrKG8pO3JldHVybiBsLmxhc3RJbmRleD0wLGMhPT1udWxsJiZsLnRlc3QoYyl9LGEucHJvdG90eXBlLm1hdGNoPWZ1bmN0aW9uKGwpe3ZhciBvPXRoaXMuX19tYXRjaChsLHRoaXMuX19wb3NpdGlvbik7cmV0dXJuIG8/dGhpcy5fX3Bvc2l0aW9uKz1vWzBdLmxlbmd0aDpvPW51bGwsb30sYS5wcm90b3R5cGUucmVhZD1mdW5jdGlvbihsLG8sYyl7dmFyIGQ9IiIsdTtyZXR1cm4gbCYmKHU9dGhpcy5tYXRjaChsKSx1JiYoZCs9dVswXSkpLG8mJih1fHwhbCkmJihkKz10aGlzLnJlYWRVbnRpbChvLGMpKSxkfSxhLnByb3RvdHlwZS5yZWFkVW50aWw9ZnVuY3Rpb24obCxvKXt2YXIgYz0iIixkPXRoaXMuX19wb3NpdGlvbjtsLmxhc3RJbmRleD10aGlzLl9fcG9zaXRpb247dmFyIHU9bC5leGVjKHRoaXMuX19pbnB1dCk7cmV0dXJuIHU/KGQ9dS5pbmRleCxvJiYoZCs9dVswXS5sZW5ndGgpKTpkPXRoaXMuX19pbnB1dF9sZW5ndGgsYz10aGlzLl9faW5wdXQuc3Vic3RyaW5nKHRoaXMuX19wb3NpdGlvbixkKSx0aGlzLl9fcG9zaXRpb249ZCxjfSxhLnByb3RvdHlwZS5yZWFkVW50aWxBZnRlcj1mdW5jdGlvbihsKXtyZXR1cm4gdGhpcy5yZWFkVW50aWwobCwhMCl9LGEucHJvdG90eXBlLmdldF9yZWdleHA9ZnVuY3Rpb24obCxvKXt2YXIgYz1udWxsLGQ9ImciO3JldHVybiBvJiZzJiYoZD0ieSIpLHR5cGVvZiBsPT0ic3RyaW5nIiYmbCE9PSIiP2M9bmV3IFJlZ0V4cChsLGQpOmwmJihjPW5ldyBSZWdFeHAobC5zb3VyY2UsZCkpLGN9LGEucHJvdG90eXBlLmdldF9saXRlcmFsX3JlZ2V4cD1mdW5jdGlvbihsKXtyZXR1cm4gUmVnRXhwKGwucmVwbGFjZSgvWy1cL1xcXiQqKz8uKCl8W1xde31dL2csIlxcJCYiKSl9LGEucHJvdG90eXBlLnBlZWtVbnRpbEFmdGVyPWZ1bmN0aW9uKGwpe3ZhciBvPXRoaXMuX19wb3NpdGlvbixjPXRoaXMucmVhZFVudGlsQWZ0ZXIobCk7cmV0dXJuIHRoaXMuX19wb3NpdGlvbj1vLGN9LGEucHJvdG90eXBlLmxvb2tCYWNrPWZ1bmN0aW9uKGwpe3ZhciBvPXRoaXMuX19wb3NpdGlvbi0xO3JldHVybiBvPj1sLmxlbmd0aCYmdGhpcy5fX2lucHV0LnN1YnN0cmluZyhvLWwubGVuZ3RoLG8pLnRvTG93ZXJDYXNlKCk9PT1sfSxpLmV4cG9ydHMuSW5wdXRTY2FubmVyPWF9LCwsLCxmdW5jdGlvbihpKXtmdW5jdGlvbiBzKGEsbCl7YT10eXBlb2YgYT09InN0cmluZyI/YTphLnNvdXJjZSxsPXR5cGVvZiBsPT0ic3RyaW5nIj9sOmwuc291cmNlLHRoaXMuX19kaXJlY3RpdmVzX2Jsb2NrX3BhdHRlcm49bmV3IFJlZ0V4cChhKy8gYmVhdXRpZnkoIFx3K1s6XVx3KykrIC8uc291cmNlK2wsImciKSx0aGlzLl9fZGlyZWN0aXZlX3BhdHRlcm49LyAoXHcrKVs6XShcdyspL2csdGhpcy5fX2RpcmVjdGl2ZXNfZW5kX2lnbm9yZV9wYXR0ZXJuPW5ldyBSZWdFeHAoYSsvXHNiZWF1dGlmeVxzaWdub3JlOmVuZFxzLy5zb3VyY2UrbCwiZyIpfXMucHJvdG90eXBlLmdldF9kaXJlY3RpdmVzPWZ1bmN0aW9uKGEpe2lmKCFhLm1hdGNoKHRoaXMuX19kaXJlY3RpdmVzX2Jsb2NrX3BhdHRlcm4pKXJldHVybiBudWxsO3ZhciBsPXt9O3RoaXMuX19kaXJlY3RpdmVfcGF0dGVybi5sYXN0SW5kZXg9MDtmb3IodmFyIG89dGhpcy5fX2RpcmVjdGl2ZV9wYXR0ZXJuLmV4ZWMoYSk7bzspbFtvWzFdXT1vWzJdLG89dGhpcy5fX2RpcmVjdGl2ZV9wYXR0ZXJuLmV4ZWMoYSk7cmV0dXJuIGx9LHMucHJvdG90eXBlLnJlYWRJZ25vcmVkPWZ1bmN0aW9uKGEpe3JldHVybiBhLnJlYWRVbnRpbEFmdGVyKHRoaXMuX19kaXJlY3RpdmVzX2VuZF9pZ25vcmVfcGF0dGVybil9LGkuZXhwb3J0cy5EaXJlY3RpdmVzPXN9LCxmdW5jdGlvbihpLHMsYSl7dmFyIGw9YSgxNikuQmVhdXRpZmllcixvPWEoMTcpLk9wdGlvbnM7ZnVuY3Rpb24gYyhkLHUpe3ZhciBmPW5ldyBsKGQsdSk7cmV0dXJuIGYuYmVhdXRpZnkoKX1pLmV4cG9ydHM9YyxpLmV4cG9ydHMuZGVmYXVsdE9wdGlvbnM9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IG99fSxmdW5jdGlvbihpLHMsYSl7dmFyIGw9YSgxNykuT3B0aW9ucyxvPWEoMikuT3V0cHV0LGM9YSg4KS5JbnB1dFNjYW5uZXIsZD1hKDEzKS5EaXJlY3RpdmVzLHU9bmV3IGQoL1wvXCovLC9cKlwvLyksZj0vXHJcbnxbXHJcbl0vLG09L1xyXG58W1xyXG5dL2csdj0vXHMvLHk9Lyg/OlxzfFxuKSsvZyxfPS9cL1wqKD86W1xzXFNdKj8pKCg/OlwqXC8pfCQpL2csaz0vXC9cLyg/OlteXG5cclx1MjAyOFx1MjAyOV0qKS9nO2Z1bmN0aW9uIEQoTixFKXt0aGlzLl9zb3VyY2VfdGV4dD1OfHwiIix0aGlzLl9vcHRpb25zPW5ldyBsKEUpLHRoaXMuX2NoPW51bGwsdGhpcy5faW5wdXQ9bnVsbCx0aGlzLk5FU1RFRF9BVF9SVUxFPXtwYWdlOiEwLCJmb250LWZhY2UiOiEwLGtleWZyYW1lczohMCxtZWRpYTohMCxzdXBwb3J0czohMCxkb2N1bWVudDohMH0sdGhpcy5DT05ESVRJT05BTF9HUk9VUF9SVUxFPXttZWRpYTohMCxzdXBwb3J0czohMCxkb2N1bWVudDohMH0sdGhpcy5OT05fU0VNSUNPTE9OX05FV0xJTkVfUFJPUEVSVFk9WyJncmlkLXRlbXBsYXRlLWFyZWFzIiwiZ3JpZC10ZW1wbGF0ZSJdfUQucHJvdG90eXBlLmVhdFN0cmluZz1mdW5jdGlvbihOKXt2YXIgRT0iIjtmb3IodGhpcy5fY2g9dGhpcy5faW5wdXQubmV4dCgpO3RoaXMuX2NoOyl7aWYoRSs9dGhpcy5fY2gsdGhpcy5fY2g9PT0iXFwiKUUrPXRoaXMuX2lucHV0Lm5leHQoKTtlbHNlIGlmKE4uaW5kZXhPZih0aGlzLl9jaCkhPT0tMXx8dGhpcy5fY2g9PT1gCmApYnJlYWs7dGhpcy5fY2g9dGhpcy5faW5wdXQubmV4dCgpfXJldHVybiBFfSxELnByb3RvdHlwZS5lYXRXaGl0ZXNwYWNlPWZ1bmN0aW9uKE4pe2Zvcih2YXIgRT12LnRlc3QodGhpcy5faW5wdXQucGVlaygpKSxSPTA7di50ZXN0KHRoaXMuX2lucHV0LnBlZWsoKSk7KXRoaXMuX2NoPXRoaXMuX2lucHV0Lm5leHQoKSxOJiZ0aGlzLl9jaD09PWAKYCYmKFI9PT0wfHxSPHRoaXMuX29wdGlvbnMubWF4X3ByZXNlcnZlX25ld2xpbmVzKSYmKFIrKyx0aGlzLl9vdXRwdXQuYWRkX25ld19saW5lKCEwKSk7cmV0dXJuIEV9LEQucHJvdG90eXBlLmZvdW5kTmVzdGVkUHNldWRvQ2xhc3M9ZnVuY3Rpb24oKXtmb3IodmFyIE49MCxFPTEsUj10aGlzLl9pbnB1dC5wZWVrKEUpO1I7KXtpZihSPT09InsiKXJldHVybiEwO2lmKFI9PT0iKCIpTis9MTtlbHNlIGlmKFI9PT0iKSIpe2lmKE49PT0wKXJldHVybiExO04tPTF9ZWxzZSBpZihSPT09IjsifHxSPT09In0iKXJldHVybiExO0UrKyxSPXRoaXMuX2lucHV0LnBlZWsoRSl9cmV0dXJuITF9LEQucHJvdG90eXBlLnByaW50X3N0cmluZz1mdW5jdGlvbihOKXt0aGlzLl9vdXRwdXQuc2V0X2luZGVudCh0aGlzLl9pbmRlbnRMZXZlbCksdGhpcy5fb3V0cHV0Lm5vbl9icmVha2luZ19zcGFjZT0hMCx0aGlzLl9vdXRwdXQuYWRkX3Rva2VuKE4pfSxELnByb3RvdHlwZS5wcmVzZXJ2ZVNpbmdsZVNwYWNlPWZ1bmN0aW9uKE4pe04mJih0aGlzLl9vdXRwdXQuc3BhY2VfYmVmb3JlX3Rva2VuPSEwKX0sRC5wcm90b3R5cGUuaW5kZW50PWZ1bmN0aW9uKCl7dGhpcy5faW5kZW50TGV2ZWwrK30sRC5wcm90b3R5cGUub3V0ZGVudD1mdW5jdGlvbigpe3RoaXMuX2luZGVudExldmVsPjAmJnRoaXMuX2luZGVudExldmVsLS19LEQucHJvdG90eXBlLmJlYXV0aWZ5PWZ1bmN0aW9uKCl7aWYodGhpcy5fb3B0aW9ucy5kaXNhYmxlZClyZXR1cm4gdGhpcy5fc291cmNlX3RleHQ7dmFyIE49dGhpcy5fc291cmNlX3RleHQsRT10aGlzLl9vcHRpb25zLmVvbDtFPT09ImF1dG8iJiYoRT1gCmAsTiYmZi50ZXN0KE58fCIiKSYmKEU9Ti5tYXRjaChmKVswXSkpLE49Ti5yZXBsYWNlKG0sYApgKTt2YXIgUj1OLm1hdGNoKC9eW1x0IF0qLylbMF07dGhpcy5fb3V0cHV0PW5ldyBvKHRoaXMuX29wdGlvbnMsUiksdGhpcy5faW5wdXQ9bmV3IGMoTiksdGhpcy5faW5kZW50TGV2ZWw9MCx0aGlzLl9uZXN0ZWRMZXZlbD0wLHRoaXMuX2NoPW51bGw7Zm9yKHZhciBNPTAsVD0hMSxQPSExLCQ9ITEsZWU9ITEsQT0hMSx3PXRoaXMuX2NoLEM9ITEsRixJLEw7Rj10aGlzLl9pbnB1dC5yZWFkKHkpLEk9RiE9PSIiLEw9dyx0aGlzLl9jaD10aGlzLl9pbnB1dC5uZXh0KCksdGhpcy5fY2g9PT0iXFwiJiZ0aGlzLl9pbnB1dC5oYXNOZXh0KCkmJih0aGlzLl9jaCs9dGhpcy5faW5wdXQubmV4dCgpKSx3PXRoaXMuX2NoLHRoaXMuX2NoOylpZih0aGlzLl9jaD09PSIvIiYmdGhpcy5faW5wdXQucGVlaygpPT09IioiKXt0aGlzLl9vdXRwdXQuYWRkX25ld19saW5lKCksdGhpcy5faW5wdXQuYmFjaygpO3ZhciB6PXRoaXMuX2lucHV0LnJlYWQoXyksQj11LmdldF9kaXJlY3RpdmVzKHopO0ImJkIuaWdub3JlPT09InN0YXJ0IiYmKHorPXUucmVhZElnbm9yZWQodGhpcy5faW5wdXQpKSx0aGlzLnByaW50X3N0cmluZyh6KSx0aGlzLmVhdFdoaXRlc3BhY2UoITApLHRoaXMuX291dHB1dC5hZGRfbmV3X2xpbmUoKX1lbHNlIGlmKHRoaXMuX2NoPT09Ii8iJiZ0aGlzLl9pbnB1dC5wZWVrKCk9PT0iLyIpdGhpcy5fb3V0cHV0LnNwYWNlX2JlZm9yZV90b2tlbj0hMCx0aGlzLl9pbnB1dC5iYWNrKCksdGhpcy5wcmludF9zdHJpbmcodGhpcy5faW5wdXQucmVhZChrKSksdGhpcy5lYXRXaGl0ZXNwYWNlKCEwKTtlbHNlIGlmKHRoaXMuX2NoPT09IiQiKXt0aGlzLnByZXNlcnZlU2luZ2xlU3BhY2UoSSksdGhpcy5wcmludF9zdHJpbmcodGhpcy5fY2gpO3ZhciBZPXRoaXMuX2lucHV0LnBlZWtVbnRpbEFmdGVyKC9bOiAsO3t9KClbXF1cLz0nIl0vZyk7WS5tYXRjaCgvWyA6XSQvKSYmKFk9dGhpcy5lYXRTdHJpbmcoIjogIikucmVwbGFjZSgvXHMrJC8sIiIpLHRoaXMucHJpbnRfc3RyaW5nKFkpLHRoaXMuX291dHB1dC5zcGFjZV9iZWZvcmVfdG9rZW49ITApLE09PT0wJiZZLmluZGV4T2YoIjoiKSE9PS0xJiYoUD0hMCx0aGlzLmluZGVudCgpKX1lbHNlIGlmKHRoaXMuX2NoPT09IkAiKWlmKHRoaXMucHJlc2VydmVTaW5nbGVTcGFjZShJKSx0aGlzLl9pbnB1dC5wZWVrKCk9PT0ieyIpdGhpcy5wcmludF9zdHJpbmcodGhpcy5fY2grdGhpcy5lYXRTdHJpbmcoIn0iKSk7ZWxzZXt0aGlzLnByaW50X3N0cmluZyh0aGlzLl9jaCk7dmFyIHE9dGhpcy5faW5wdXQucGVla1VudGlsQWZ0ZXIoL1s6ICw7e30oKVtcXVwvPSciXS9nKTtxLm1hdGNoKC9bIDpdJC8pJiYocT10aGlzLmVhdFN0cmluZygiOiAiKS5yZXBsYWNlKC9ccyskLywiIiksdGhpcy5wcmludF9zdHJpbmcocSksdGhpcy5fb3V0cHV0LnNwYWNlX2JlZm9yZV90b2tlbj0hMCksTT09PTAmJnEuaW5kZXhPZigiOiIpIT09LTE/KFA9ITAsdGhpcy5pbmRlbnQoKSk6cSBpbiB0aGlzLk5FU1RFRF9BVF9SVUxFPyh0aGlzLl9uZXN0ZWRMZXZlbCs9MSxxIGluIHRoaXMuQ09ORElUSU9OQUxfR1JPVVBfUlVMRSYmKCQ9ITApKTpNPT09MCYmIVAmJihlZT0hMCl9ZWxzZSBpZih0aGlzLl9jaD09PSIjIiYmdGhpcy5faW5wdXQucGVlaygpPT09InsiKXRoaXMucHJlc2VydmVTaW5nbGVTcGFjZShJKSx0aGlzLnByaW50X3N0cmluZyh0aGlzLl9jaCt0aGlzLmVhdFN0cmluZygifSIpKTtlbHNlIGlmKHRoaXMuX2NoPT09InsiKVAmJihQPSExLHRoaXMub3V0ZGVudCgpKSxlZT0hMSwkPygkPSExLFQ9dGhpcy5faW5kZW50TGV2ZWw+PXRoaXMuX25lc3RlZExldmVsKTpUPXRoaXMuX2luZGVudExldmVsPj10aGlzLl9uZXN0ZWRMZXZlbC0xLHRoaXMuX29wdGlvbnMubmV3bGluZV9iZXR3ZWVuX3J1bGVzJiZUJiZ0aGlzLl9vdXRwdXQucHJldmlvdXNfbGluZSYmdGhpcy5fb3V0cHV0LnByZXZpb3VzX2xpbmUuaXRlbSgtMSkhPT0ieyImJnRoaXMuX291dHB1dC5lbnN1cmVfZW1wdHlfbGluZV9hYm92ZSgiLyIsIiwiKSx0aGlzLl9vdXRwdXQuc3BhY2VfYmVmb3JlX3Rva2VuPSEwLHRoaXMuX29wdGlvbnMuYnJhY2Vfc3R5bGU9PT0iZXhwYW5kIj8odGhpcy5fb3V0cHV0LmFkZF9uZXdfbGluZSgpLHRoaXMucHJpbnRfc3RyaW5nKHRoaXMuX2NoKSx0aGlzLmluZGVudCgpLHRoaXMuX291dHB1dC5zZXRfaW5kZW50KHRoaXMuX2luZGVudExldmVsKSk6KEw9PT0iKCI/dGhpcy5fb3V0cHV0LnNwYWNlX2JlZm9yZV90b2tlbj0hMTpMIT09IiwiJiZ0aGlzLmluZGVudCgpLHRoaXMucHJpbnRfc3RyaW5nKHRoaXMuX2NoKSksdGhpcy5lYXRXaGl0ZXNwYWNlKCEwKSx0aGlzLl9vdXRwdXQuYWRkX25ld19saW5lKCk7ZWxzZSBpZih0aGlzLl9jaD09PSJ9Iil0aGlzLm91dGRlbnQoKSx0aGlzLl9vdXRwdXQuYWRkX25ld19saW5lKCksTD09PSJ7IiYmdGhpcy5fb3V0cHV0LnRyaW0oITApLFAmJih0aGlzLm91dGRlbnQoKSxQPSExKSx0aGlzLnByaW50X3N0cmluZyh0aGlzLl9jaCksVD0hMSx0aGlzLl9uZXN0ZWRMZXZlbCYmdGhpcy5fbmVzdGVkTGV2ZWwtLSx0aGlzLmVhdFdoaXRlc3BhY2UoITApLHRoaXMuX291dHB1dC5hZGRfbmV3X2xpbmUoKSx0aGlzLl9vcHRpb25zLm5ld2xpbmVfYmV0d2Vlbl9ydWxlcyYmIXRoaXMuX291dHB1dC5qdXN0X2FkZGVkX2JsYW5rbGluZSgpJiZ0aGlzLl9pbnB1dC5wZWVrKCkhPT0ifSImJnRoaXMuX291dHB1dC5hZGRfbmV3X2xpbmUoITApLHRoaXMuX2lucHV0LnBlZWsoKT09PSIpIiYmKHRoaXMuX291dHB1dC50cmltKCEwKSx0aGlzLl9vcHRpb25zLmJyYWNlX3N0eWxlPT09ImV4cGFuZCImJnRoaXMuX291dHB1dC5hZGRfbmV3X2xpbmUoITApKTtlbHNlIGlmKHRoaXMuX2NoPT09IjoiKXtmb3IodmFyIHhlPTA7eGU8dGhpcy5OT05fU0VNSUNPTE9OX05FV0xJTkVfUFJPUEVSVFkubGVuZ3RoO3hlKyspaWYodGhpcy5faW5wdXQubG9va0JhY2sodGhpcy5OT05fU0VNSUNPTE9OX05FV0xJTkVfUFJPUEVSVFlbeGVdKSl7Qz0hMDticmVha30oVHx8JCkmJiEodGhpcy5faW5wdXQubG9va0JhY2soIiYiKXx8dGhpcy5mb3VuZE5lc3RlZFBzZXVkb0NsYXNzKCkpJiYhdGhpcy5faW5wdXQubG9va0JhY2soIigiKSYmIWVlJiZNPT09MD8odGhpcy5wcmludF9zdHJpbmcoIjoiKSxQfHwoUD0hMCx0aGlzLl9vdXRwdXQuc3BhY2VfYmVmb3JlX3Rva2VuPSEwLHRoaXMuZWF0V2hpdGVzcGFjZSghMCksdGhpcy5pbmRlbnQoKSkpOih0aGlzLl9pbnB1dC5sb29rQmFjaygiICIpJiYodGhpcy5fb3V0cHV0LnNwYWNlX2JlZm9yZV90b2tlbj0hMCksdGhpcy5faW5wdXQucGVlaygpPT09IjoiPyh0aGlzLl9jaD10aGlzLl9pbnB1dC5uZXh0KCksdGhpcy5wcmludF9zdHJpbmcoIjo6IikpOnRoaXMucHJpbnRfc3RyaW5nKCI6IikpfWVsc2UgaWYodGhpcy5fY2g9PT0nIid8fHRoaXMuX2NoPT09IiciKXt2YXIgbm49TD09PSciJ3x8TD09PSInIjt0aGlzLnByZXNlcnZlU2luZ2xlU3BhY2Uobm58fEkpLHRoaXMucHJpbnRfc3RyaW5nKHRoaXMuX2NoK3RoaXMuZWF0U3RyaW5nKHRoaXMuX2NoKSksdGhpcy5lYXRXaGl0ZXNwYWNlKCEwKX1lbHNlIGlmKHRoaXMuX2NoPT09IjsiKUM9ITEsTT09PTA/KFAmJih0aGlzLm91dGRlbnQoKSxQPSExKSxlZT0hMSx0aGlzLnByaW50X3N0cmluZyh0aGlzLl9jaCksdGhpcy5lYXRXaGl0ZXNwYWNlKCEwKSx0aGlzLl9pbnB1dC5wZWVrKCkhPT0iLyImJnRoaXMuX291dHB1dC5hZGRfbmV3X2xpbmUoKSk6KHRoaXMucHJpbnRfc3RyaW5nKHRoaXMuX2NoKSx0aGlzLmVhdFdoaXRlc3BhY2UoITApLHRoaXMuX291dHB1dC5zcGFjZV9iZWZvcmVfdG9rZW49ITApO2Vsc2UgaWYodGhpcy5fY2g9PT0iKCIpaWYodGhpcy5faW5wdXQubG9va0JhY2soInVybCIpKXRoaXMucHJpbnRfc3RyaW5nKHRoaXMuX2NoKSx0aGlzLmVhdFdoaXRlc3BhY2UoKSxNKyssdGhpcy5pbmRlbnQoKSx0aGlzLl9jaD10aGlzLl9pbnB1dC5uZXh0KCksdGhpcy5fY2g9PT0iKSJ8fHRoaXMuX2NoPT09JyInfHx0aGlzLl9jaD09PSInIj90aGlzLl9pbnB1dC5iYWNrKCk6dGhpcy5fY2gmJih0aGlzLnByaW50X3N0cmluZyh0aGlzLl9jaCt0aGlzLmVhdFN0cmluZygiKSIpKSxNJiYoTS0tLHRoaXMub3V0ZGVudCgpKSk7ZWxzZXt2YXIgdnQ9ITE7dGhpcy5faW5wdXQubG9va0JhY2soIndpdGgiKSYmKHZ0PSEwKSx0aGlzLnByZXNlcnZlU2luZ2xlU3BhY2UoSXx8dnQpLHRoaXMucHJpbnRfc3RyaW5nKHRoaXMuX2NoKSxQJiZMPT09IiQiJiZ0aGlzLl9vcHRpb25zLnNlbGVjdG9yX3NlcGFyYXRvcl9uZXdsaW5lPyh0aGlzLl9vdXRwdXQuYWRkX25ld19saW5lKCksQT0hMCk6KHRoaXMuZWF0V2hpdGVzcGFjZSgpLE0rKyx0aGlzLmluZGVudCgpKX1lbHNlIGlmKHRoaXMuX2NoPT09IikiKU0mJihNLS0sdGhpcy5vdXRkZW50KCkpLEEmJnRoaXMuX2lucHV0LnBlZWsoKT09PSI7IiYmdGhpcy5fb3B0aW9ucy5zZWxlY3Rvcl9zZXBhcmF0b3JfbmV3bGluZSYmKEE9ITEsdGhpcy5vdXRkZW50KCksdGhpcy5fb3V0cHV0LmFkZF9uZXdfbGluZSgpKSx0aGlzLnByaW50X3N0cmluZyh0aGlzLl9jaCk7ZWxzZSBpZih0aGlzLl9jaD09PSIsIil0aGlzLnByaW50X3N0cmluZyh0aGlzLl9jaCksdGhpcy5lYXRXaGl0ZXNwYWNlKCEwKSx0aGlzLl9vcHRpb25zLnNlbGVjdG9yX3NlcGFyYXRvcl9uZXdsaW5lJiYoIVB8fEEpJiZNPT09MCYmIWVlP3RoaXMuX291dHB1dC5hZGRfbmV3X2xpbmUoKTp0aGlzLl9vdXRwdXQuc3BhY2VfYmVmb3JlX3Rva2VuPSEwO2Vsc2UgaWYoKHRoaXMuX2NoPT09Ij4ifHx0aGlzLl9jaD09PSIrInx8dGhpcy5fY2g9PT0ifiIpJiYhUCYmTT09PTApdGhpcy5fb3B0aW9ucy5zcGFjZV9hcm91bmRfY29tYmluYXRvcj8odGhpcy5fb3V0cHV0LnNwYWNlX2JlZm9yZV90b2tlbj0hMCx0aGlzLnByaW50X3N0cmluZyh0aGlzLl9jaCksdGhpcy5fb3V0cHV0LnNwYWNlX2JlZm9yZV90b2tlbj0hMCk6KHRoaXMucHJpbnRfc3RyaW5nKHRoaXMuX2NoKSx0aGlzLmVhdFdoaXRlc3BhY2UoKSx0aGlzLl9jaCYmdi50ZXN0KHRoaXMuX2NoKSYmKHRoaXMuX2NoPSIiKSk7ZWxzZSBpZih0aGlzLl9jaD09PSJdIil0aGlzLnByaW50X3N0cmluZyh0aGlzLl9jaCk7ZWxzZSBpZih0aGlzLl9jaD09PSJbIil0aGlzLnByZXNlcnZlU2luZ2xlU3BhY2UoSSksdGhpcy5wcmludF9zdHJpbmcodGhpcy5fY2gpO2Vsc2UgaWYodGhpcy5fY2g9PT0iPSIpdGhpcy5lYXRXaGl0ZXNwYWNlKCksdGhpcy5wcmludF9zdHJpbmcoIj0iKSx2LnRlc3QodGhpcy5fY2gpJiYodGhpcy5fY2g9IiIpO2Vsc2UgaWYodGhpcy5fY2g9PT0iISImJiF0aGlzLl9pbnB1dC5sb29rQmFjaygiXFwiKSl0aGlzLl9vdXRwdXQuc3BhY2VfYmVmb3JlX3Rva2VuPSEwLHRoaXMucHJpbnRfc3RyaW5nKHRoaXMuX2NoKTtlbHNle3ZhciBScz1MPT09JyInfHxMPT09IiciO3RoaXMucHJlc2VydmVTaW5nbGVTcGFjZShSc3x8SSksdGhpcy5wcmludF9zdHJpbmcodGhpcy5fY2gpLCF0aGlzLl9vdXRwdXQuanVzdF9hZGRlZF9uZXdsaW5lKCkmJnRoaXMuX2lucHV0LnBlZWsoKT09PWAKYCYmQyYmdGhpcy5fb3V0cHV0LmFkZF9uZXdfbGluZSgpfXZhciBybj10aGlzLl9vdXRwdXQuZ2V0X2NvZGUoRSk7cmV0dXJuIHJufSxpLmV4cG9ydHMuQmVhdXRpZmllcj1EfSxmdW5jdGlvbihpLHMsYSl7dmFyIGw9YSg2KS5PcHRpb25zO2Z1bmN0aW9uIG8oYyl7bC5jYWxsKHRoaXMsYywiY3NzIiksdGhpcy5zZWxlY3Rvcl9zZXBhcmF0b3JfbmV3bGluZT10aGlzLl9nZXRfYm9vbGVhbigic2VsZWN0b3Jfc2VwYXJhdG9yX25ld2xpbmUiLCEwKSx0aGlzLm5ld2xpbmVfYmV0d2Vlbl9ydWxlcz10aGlzLl9nZXRfYm9vbGVhbigibmV3bGluZV9iZXR3ZWVuX3J1bGVzIiwhMCk7dmFyIGQ9dGhpcy5fZ2V0X2Jvb2xlYW4oInNwYWNlX2Fyb3VuZF9zZWxlY3Rvcl9zZXBhcmF0b3IiKTt0aGlzLnNwYWNlX2Fyb3VuZF9jb21iaW5hdG9yPXRoaXMuX2dldF9ib29sZWFuKCJzcGFjZV9hcm91bmRfY29tYmluYXRvciIpfHxkO3ZhciB1PXRoaXMuX2dldF9zZWxlY3Rpb25fbGlzdCgiYnJhY2Vfc3R5bGUiLFsiY29sbGFwc2UiLCJleHBhbmQiLCJlbmQtZXhwYW5kIiwibm9uZSIsInByZXNlcnZlLWlubGluZSJdKTt0aGlzLmJyYWNlX3N0eWxlPSJjb2xsYXBzZSI7Zm9yKHZhciBmPTA7Zjx1Lmxlbmd0aDtmKyspdVtmXSE9PSJleHBhbmQiP3RoaXMuYnJhY2Vfc3R5bGU9ImNvbGxhcHNlIjp0aGlzLmJyYWNlX3N0eWxlPXVbZl19by5wcm90b3R5cGU9bmV3IGwsaS5leHBvcnRzLk9wdGlvbnM9b31dLHQ9e307ZnVuY3Rpb24gbihpKXt2YXIgcz10W2ldO2lmKHMhPT12b2lkIDApcmV0dXJuIHMuZXhwb3J0czt2YXIgYT10W2ldPXtleHBvcnRzOnt9fTtyZXR1cm4gZVtpXShhLGEuZXhwb3J0cyxuKSxhLmV4cG9ydHN9dmFyIHI9bigxNSk7WWM9cn0pKCk7dmFyIEdtPVljO2Z1bmN0aW9uIEptKGUsdCxuKXtsZXQgcj1lLmdldFRleHQoKSxpPSEwLHM9MCxhPSExO2NvbnN0IGw9bi50YWJTaXplfHw0O2lmKHQpe2xldCBkPWUub2Zmc2V0QXQodC5zdGFydCksdT1kO2Zvcig7dT4wJiZaYyhyLHUtMSk7KXUtLTt1PT09MHx8S2Mocix1LTEpP2Q9dTp1PGQmJihkPXUrMSk7bGV0IGY9ZS5vZmZzZXRBdCh0LmVuZCksbT1mO2Zvcig7bTxyLmxlbmd0aCYmWmMocixtKTspbSsrO2lmKChtPT09ci5sZW5ndGh8fEtjKHIsbSkpJiYoZj1tKSx0PUouY3JlYXRlKGUucG9zaXRpb25BdChkKSxlLnBvc2l0aW9uQXQoZikpLGE9UW0ocixkKSxpPWY9PT1yLmxlbmd0aCxyPXIuc3Vic3RyaW5nKGQsZiksZCE9PTApe2NvbnN0IHY9ZS5vZmZzZXRBdCh2ZS5jcmVhdGUodC5zdGFydC5saW5lLDApKTtzPUttKGUuZ2V0VGV4dCgpLHYsbil9YSYmKHI9YHsKJHtRYyhyKX1gKX1lbHNlIHQ9Si5jcmVhdGUodmUuY3JlYXRlKDAsMCksZS5wb3NpdGlvbkF0KHIubGVuZ3RoKSk7Y29uc3Qgbz17aW5kZW50X3NpemU6bCxpbmRlbnRfY2hhcjpuLmluc2VydFNwYWNlcz8iICI6IgkiLGVuZF93aXRoX25ld2xpbmU6aSYmaXQobiwiaW5zZXJ0RmluYWxOZXdsaW5lIiwhMSksc2VsZWN0b3Jfc2VwYXJhdG9yX25ld2xpbmU6aXQobiwibmV3bGluZUJldHdlZW5TZWxlY3RvcnMiLCEwKSxuZXdsaW5lX2JldHdlZW5fcnVsZXM6aXQobiwibmV3bGluZUJldHdlZW5SdWxlcyIsITApLHNwYWNlX2Fyb3VuZF9zZWxlY3Rvcl9zZXBhcmF0b3I6aXQobiwic3BhY2VBcm91bmRTZWxlY3RvclNlcGFyYXRvciIsITEpLGJyYWNlX3N0eWxlOml0KG4sImJyYWNlU3R5bGUiLCJjb2xsYXBzZSIpLGluZGVudF9lbXB0eV9saW5lczppdChuLCJpbmRlbnRFbXB0eUxpbmVzIiwhMSksbWF4X3ByZXNlcnZlX25ld2xpbmVzOml0KG4sIm1heFByZXNlcnZlTmV3TGluZXMiLHZvaWQgMCkscHJlc2VydmVfbmV3bGluZXM6aXQobiwicHJlc2VydmVOZXdMaW5lcyIsITApLHdyYXBfbGluZV9sZW5ndGg6aXQobiwid3JhcExpbmVMZW5ndGgiLHZvaWQgMCksZW9sOmAKYH07bGV0IGM9R20ocixvKTtpZihhJiYoYz1RYyhjLnN1YnN0cmluZygyKSkpLHM+MCl7Y29uc3QgZD1uLmluc2VydFNwYWNlcz9ubCgiICIsbCpzKTpubCgiCSIscyk7Yz1jLnNwbGl0KGAKYCkuam9pbihgCmArZCksdC5zdGFydC5jaGFyYWN0ZXI9PT0wJiYoYz1kK2MpfXJldHVyblt7cmFuZ2U6dCxuZXdUZXh0OmN9XX1mdW5jdGlvbiBRYyhlKXtyZXR1cm4gZS5yZXBsYWNlKC9eXHMrLywiIil9dmFyIFhtPTEyMyxZbT0xMjU7ZnVuY3Rpb24gUW0oZSx0KXtmb3IoO3Q+PTA7KXtjb25zdCBuPWUuY2hhckNvZGVBdCh0KTtpZihuPT09WG0pcmV0dXJuITA7aWYobj09PVltKXJldHVybiExO3QtLX1yZXR1cm4hMX1mdW5jdGlvbiBpdChlLHQsbil7aWYoZSYmZS5oYXNPd25Qcm9wZXJ0eSh0KSl7Y29uc3Qgcj1lW3RdO2lmKHIhPT1udWxsKXJldHVybiByfXJldHVybiBufWZ1bmN0aW9uIEttKGUsdCxuKXtsZXQgcj10LGk9MDtjb25zdCBzPW4udGFiU2l6ZXx8NDtmb3IoO3I8ZS5sZW5ndGg7KXtjb25zdCBhPWUuY2hhckF0KHIpO2lmKGE9PT0iICIpaSsrO2Vsc2UgaWYoYT09PSIJIilpKz1zO2Vsc2UgYnJlYWs7cisrfXJldHVybiBNYXRoLmZsb29yKGkvcyl9ZnVuY3Rpb24gS2MoZSx0KXtyZXR1cm5gXHIKYC5pbmRleE9mKGUuY2hhckF0KHQpKSE9PS0xfWZ1bmN0aW9uIFpjKGUsdCl7cmV0dXJuIiAJIi5pbmRleE9mKGUuY2hhckF0KHQpKSE9PS0xfXZhciBabT17dmVyc2lvbjoxLjEscHJvcGVydGllczpbe25hbWU6ImFkZGl0aXZlLXN5bWJvbHMiLGJyb3dzZXJzOlsiRkYzMyJdLGF0UnVsZToiQGNvdW50ZXItc3R5bGUiLHN5bnRheDoiWyA8aW50ZWdlcj4gJiYgPHN5bWJvbD4gXSMiLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiQGNvdW50ZXItc3R5bGUgZGVzY3JpcHRvci4gU3BlY2lmaWVzIHRoZSBzeW1ib2xzIHVzZWQgYnkgdGhlIG1hcmtlci1jb25zdHJ1Y3Rpb24gYWxnb3JpdGhtIHNwZWNpZmllZCBieSB0aGUgc3lzdGVtIGRlc2NyaXB0b3IuIE5lZWRzIHRvIGJlIHNwZWNpZmllZCBpZiB0aGUgY291bnRlciBzeXN0ZW0gaXMgJ2FkZGl0aXZlJy4iLHJlc3RyaWN0aW9uczpbImludGVnZXIiLCJzdHJpbmciLCJpbWFnZSIsImlkZW50aWZpZXIiXX0se25hbWU6ImFsaWduLWNvbnRlbnQiLGJyb3dzZXJzOlsiRTEyIiwiRkYyOCIsIlM5IiwiQzI5IiwiSUUxMSIsIk8xNiJdLHZhbHVlczpbe25hbWU6ImNlbnRlciIsZGVzY3JpcHRpb246IkxpbmVzIGFyZSBwYWNrZWQgdG93YXJkIHRoZSBjZW50ZXIgb2YgdGhlIGZsZXggY29udGFpbmVyLiJ9LHtuYW1lOiJmbGV4LWVuZCIsZGVzY3JpcHRpb246IkxpbmVzIGFyZSBwYWNrZWQgdG93YXJkIHRoZSBlbmQgb2YgdGhlIGZsZXggY29udGFpbmVyLiJ9LHtuYW1lOiJmbGV4LXN0YXJ0IixkZXNjcmlwdGlvbjoiTGluZXMgYXJlIHBhY2tlZCB0b3dhcmQgdGhlIHN0YXJ0IG9mIHRoZSBmbGV4IGNvbnRhaW5lci4ifSx7bmFtZToic3BhY2UtYXJvdW5kIixkZXNjcmlwdGlvbjoiTGluZXMgYXJlIGV2ZW5seSBkaXN0cmlidXRlZCBpbiB0aGUgZmxleCBjb250YWluZXIsIHdpdGggaGFsZi1zaXplIHNwYWNlcyBvbiBlaXRoZXIgZW5kLiJ9LHtuYW1lOiJzcGFjZS1iZXR3ZWVuIixkZXNjcmlwdGlvbjoiTGluZXMgYXJlIGV2ZW5seSBkaXN0cmlidXRlZCBpbiB0aGUgZmxleCBjb250YWluZXIuIn0se25hbWU6InN0cmV0Y2giLGRlc2NyaXB0aW9uOiJMaW5lcyBzdHJldGNoIHRvIHRha2UgdXAgdGhlIHJlbWFpbmluZyBzcGFjZS4ifSx7bmFtZToic3RhcnQifSx7bmFtZToiZW5kIn0se25hbWU6Im5vcm1hbCJ9LHtuYW1lOiJiYXNlbGluZSJ9LHtuYW1lOiJmaXJzdCBiYXNlbGluZSJ9LHtuYW1lOiJsYXN0IGJhc2VsaW5lIn0se25hbWU6InNwYWNlLWFyb3VuZCJ9LHtuYW1lOiJzcGFjZS1iZXR3ZWVuIn0se25hbWU6InNwYWNlLWV2ZW5seSJ9LHtuYW1lOiJzdHJldGNoIn0se25hbWU6InNhZmUifSx7bmFtZToidW5zYWZlIn1dLHN5bnRheDoibm9ybWFsIHwgPGJhc2VsaW5lLXBvc2l0aW9uPiB8IDxjb250ZW50LWRpc3RyaWJ1dGlvbj4gfCA8b3ZlcmZsb3ctcG9zaXRpb24+PyA8Y29udGVudC1wb3NpdGlvbj4iLHJlbGV2YW5jZTo2NixyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYWxpZ24tY29udGVudCJ9XSxkZXNjcmlwdGlvbjoiQWxpZ25zIGEgZmxleCBjb250YWluZXIncyBsaW5lcyB3aXRoaW4gdGhlIGZsZXggY29udGFpbmVyIHdoZW4gdGhlcmUgaXMgZXh0cmEgc3BhY2UgaW4gdGhlIGNyb3NzLWF4aXMsIHNpbWlsYXIgdG8gaG93ICdqdXN0aWZ5LWNvbnRlbnQnIGFsaWducyBpbmRpdmlkdWFsIGl0ZW1zIHdpdGhpbiB0aGUgbWFpbi1heGlzLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiYWxpZ24taXRlbXMiLGJyb3dzZXJzOlsiRTEyIiwiRkYyMCIsIlM5IiwiQzI5IiwiSUUxMSIsIk8xNiJdLHZhbHVlczpbe25hbWU6ImJhc2VsaW5lIixkZXNjcmlwdGlvbjoiSWYgdGhlIGZsZXggaXRlbSdzIGlubGluZSBheGlzIGlzIHRoZSBzYW1lIGFzIHRoZSBjcm9zcyBheGlzLCB0aGlzIHZhbHVlIGlzIGlkZW50aWNhbCB0byAnZmxleC1zdGFydCcuIE90aGVyd2lzZSwgaXQgcGFydGljaXBhdGVzIGluIGJhc2VsaW5lIGFsaWdubWVudC4ifSx7bmFtZToiY2VudGVyIixkZXNjcmlwdGlvbjoiVGhlIGZsZXggaXRlbSdzIG1hcmdpbiBib3ggaXMgY2VudGVyZWQgaW4gdGhlIGNyb3NzIGF4aXMgd2l0aGluIHRoZSBsaW5lLiJ9LHtuYW1lOiJmbGV4LWVuZCIsZGVzY3JpcHRpb246IlRoZSBjcm9zcy1lbmQgbWFyZ2luIGVkZ2Ugb2YgdGhlIGZsZXggaXRlbSBpcyBwbGFjZWQgZmx1c2ggd2l0aCB0aGUgY3Jvc3MtZW5kIGVkZ2Ugb2YgdGhlIGxpbmUuIn0se25hbWU6ImZsZXgtc3RhcnQiLGRlc2NyaXB0aW9uOiJUaGUgY3Jvc3Mtc3RhcnQgbWFyZ2luIGVkZ2Ugb2YgdGhlIGZsZXggaXRlbSBpcyBwbGFjZWQgZmx1c2ggd2l0aCB0aGUgY3Jvc3Mtc3RhcnQgZWRnZSBvZiB0aGUgbGluZS4ifSx7bmFtZToic3RyZXRjaCIsZGVzY3JpcHRpb246IklmIHRoZSBjcm9zcyBzaXplIHByb3BlcnR5IG9mIHRoZSBmbGV4IGl0ZW0gY29tcHV0ZXMgdG8gYXV0bywgYW5kIG5laXRoZXIgb2YgdGhlIGNyb3NzLWF4aXMgbWFyZ2lucyBhcmUgYXV0bywgdGhlIGZsZXggaXRlbSBpcyBzdHJldGNoZWQuIn0se25hbWU6Im5vcm1hbCJ9LHtuYW1lOiJzdGFydCJ9LHtuYW1lOiJlbmQifSx7bmFtZToic2VsZi1zdGFydCJ9LHtuYW1lOiJzZWxmLWVuZCJ9LHtuYW1lOiJmaXJzdCBiYXNlbGluZSJ9LHtuYW1lOiJsYXN0IGJhc2VsaW5lIn0se25hbWU6InN0cmV0Y2gifSx7bmFtZToic2FmZSJ9LHtuYW1lOiJ1bnNhZmUifV0sc3ludGF4OiJub3JtYWwgfCBzdHJldGNoIHwgPGJhc2VsaW5lLXBvc2l0aW9uPiB8IFsgPG92ZXJmbG93LXBvc2l0aW9uPj8gPHNlbGYtcG9zaXRpb24+IF0iLHJlbGV2YW5jZTo4NyxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYWxpZ24taXRlbXMifV0sZGVzY3JpcHRpb246IkFsaWducyBmbGV4IGl0ZW1zIGFsb25nIHRoZSBjcm9zcyBheGlzIG9mIHRoZSBjdXJyZW50IGxpbmUgb2YgdGhlIGZsZXggY29udGFpbmVyLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToianVzdGlmeS1pdGVtcyIsYnJvd3NlcnM6WyJFMTIiLCJGRjIwIiwiUzkiLCJDNTIiLCJJRTExIiwiTzEyLjEiXSx2YWx1ZXM6W3tuYW1lOiJhdXRvIn0se25hbWU6Im5vcm1hbCJ9LHtuYW1lOiJlbmQifSx7bmFtZToic3RhcnQifSx7bmFtZToiZmxleC1lbmQiLGRlc2NyaXB0aW9uOiciRmxleCBpdGVtcyBhcmUgcGFja2VkIHRvd2FyZCB0aGUgZW5kIG9mIHRoZSBsaW5lLiInfSx7bmFtZToiZmxleC1zdGFydCIsZGVzY3JpcHRpb246JyJGbGV4IGl0ZW1zIGFyZSBwYWNrZWQgdG93YXJkIHRoZSBzdGFydCBvZiB0aGUgbGluZS4iJ30se25hbWU6InNlbGYtZW5kIixkZXNjcmlwdGlvbjoiVGhlIGl0ZW0gaXMgcGFja2VkIGZsdXNoIHRvIHRoZSBlZGdlIG9mIHRoZSBhbGlnbm1lbnQgY29udGFpbmVyIG9mIHRoZSBlbmQgc2lkZSBvZiB0aGUgaXRlbSwgaW4gdGhlIGFwcHJvcHJpYXRlIGF4aXMuIn0se25hbWU6InNlbGYtc3RhcnQiLGRlc2NyaXB0aW9uOiJUaGUgaXRlbSBpcyBwYWNrZWQgZmx1c2ggdG8gdGhlIGVkZ2Ugb2YgdGhlIGFsaWdubWVudCBjb250YWluZXIgb2YgdGhlIHN0YXJ0IHNpZGUgb2YgdGhlIGl0ZW0sIGluIHRoZSBhcHByb3ByaWF0ZSBheGlzLi4ifSx7bmFtZToiY2VudGVyIixkZXNjcmlwdGlvbjoiVGhlIGl0ZW1zIGFyZSBwYWNrZWQgZmx1c2ggdG8gZWFjaCBvdGhlciB0b3dhcmQgdGhlIGNlbnRlciBvZiB0aGUgb2YgdGhlIGFsaWdubWVudCBjb250YWluZXIuIn0se25hbWU6ImxlZnQifSx7bmFtZToicmlnaHQifSx7bmFtZToiYmFzZWxpbmUifSx7bmFtZToiZmlyc3QgYmFzZWxpbmUifSx7bmFtZToibGFzdCBiYXNlbGluZSJ9LHtuYW1lOiJzdHJldGNoIixkZXNjcmlwdGlvbjoiSWYgdGhlIGNyb3NzIHNpemUgcHJvcGVydHkgb2YgdGhlIGZsZXggaXRlbSBjb21wdXRlcyB0byBhdXRvLCBhbmQgbmVpdGhlciBvZiB0aGUgY3Jvc3MtYXhpcyBtYXJnaW5zIGFyZSBhdXRvLCB0aGUgZmxleCBpdGVtIGlzIHN0cmV0Y2hlZC4ifSx7bmFtZToic2FmZSJ9LHtuYW1lOiJ1bnNhZmUifSx7bmFtZToibGVnYWN5In1dLHN5bnRheDoibm9ybWFsIHwgc3RyZXRjaCB8IDxiYXNlbGluZS1wb3NpdGlvbj4gfCA8b3ZlcmZsb3ctcG9zaXRpb24+PyBbIDxzZWxmLXBvc2l0aW9uPiB8IGxlZnQgfCByaWdodCBdIHwgbGVnYWN5IHwgbGVnYWN5ICYmIFsgbGVmdCB8IHJpZ2h0IHwgY2VudGVyIF0iLHJlbGV2YW5jZTo1MyxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvanVzdGlmeS1pdGVtcyJ9XSxkZXNjcmlwdGlvbjoiRGVmaW5lcyB0aGUgZGVmYXVsdCBqdXN0aWZ5LXNlbGYgZm9yIGFsbCBpdGVtcyBvZiB0aGUgYm94LCBnaXZpbmcgdGhlbSB0aGUgZGVmYXVsdCB3YXkgb2YganVzdGlmeWluZyBlYWNoIGJveCBhbG9uZyB0aGUgYXBwcm9wcmlhdGUgYXhpcyIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToianVzdGlmeS1zZWxmIixicm93c2VyczpbIkUxNiIsIkZGNDUiLCJTMTAuMSIsIkM1NyIsIklFMTAiLCJPNDQiXSx2YWx1ZXM6W3tuYW1lOiJhdXRvIn0se25hbWU6Im5vcm1hbCJ9LHtuYW1lOiJlbmQifSx7bmFtZToic3RhcnQifSx7bmFtZToiZmxleC1lbmQiLGRlc2NyaXB0aW9uOiciRmxleCBpdGVtcyBhcmUgcGFja2VkIHRvd2FyZCB0aGUgZW5kIG9mIHRoZSBsaW5lLiInfSx7bmFtZToiZmxleC1zdGFydCIsZGVzY3JpcHRpb246JyJGbGV4IGl0ZW1zIGFyZSBwYWNrZWQgdG93YXJkIHRoZSBzdGFydCBvZiB0aGUgbGluZS4iJ30se25hbWU6InNlbGYtZW5kIixkZXNjcmlwdGlvbjoiVGhlIGl0ZW0gaXMgcGFja2VkIGZsdXNoIHRvIHRoZSBlZGdlIG9mIHRoZSBhbGlnbm1lbnQgY29udGFpbmVyIG9mIHRoZSBlbmQgc2lkZSBvZiB0aGUgaXRlbSwgaW4gdGhlIGFwcHJvcHJpYXRlIGF4aXMuIn0se25hbWU6InNlbGYtc3RhcnQiLGRlc2NyaXB0aW9uOiJUaGUgaXRlbSBpcyBwYWNrZWQgZmx1c2ggdG8gdGhlIGVkZ2Ugb2YgdGhlIGFsaWdubWVudCBjb250YWluZXIgb2YgdGhlIHN0YXJ0IHNpZGUgb2YgdGhlIGl0ZW0sIGluIHRoZSBhcHByb3ByaWF0ZSBheGlzLi4ifSx7bmFtZToiY2VudGVyIixkZXNjcmlwdGlvbjoiVGhlIGl0ZW1zIGFyZSBwYWNrZWQgZmx1c2ggdG8gZWFjaCBvdGhlciB0b3dhcmQgdGhlIGNlbnRlciBvZiB0aGUgb2YgdGhlIGFsaWdubWVudCBjb250YWluZXIuIn0se25hbWU6ImxlZnQifSx7bmFtZToicmlnaHQifSx7bmFtZToiYmFzZWxpbmUifSx7bmFtZToiZmlyc3QgYmFzZWxpbmUifSx7bmFtZToibGFzdCBiYXNlbGluZSJ9LHtuYW1lOiJzdHJldGNoIixkZXNjcmlwdGlvbjoiSWYgdGhlIGNyb3NzIHNpemUgcHJvcGVydHkgb2YgdGhlIGZsZXggaXRlbSBjb21wdXRlcyB0byBhdXRvLCBhbmQgbmVpdGhlciBvZiB0aGUgY3Jvc3MtYXhpcyBtYXJnaW5zIGFyZSBhdXRvLCB0aGUgZmxleCBpdGVtIGlzIHN0cmV0Y2hlZC4ifSx7bmFtZToic2F2ZSJ9LHtuYW1lOiJ1bnNhdmUifV0sc3ludGF4OiJhdXRvIHwgbm9ybWFsIHwgc3RyZXRjaCB8IDxiYXNlbGluZS1wb3NpdGlvbj4gfCA8b3ZlcmZsb3ctcG9zaXRpb24+PyBbIDxzZWxmLXBvc2l0aW9uPiB8IGxlZnQgfCByaWdodCBdIixyZWxldmFuY2U6NTUscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2p1c3RpZnktc2VsZiJ9XSxkZXNjcmlwdGlvbjoiRGVmaW5lcyB0aGUgd2F5IG9mIGp1c3RpZnlpbmcgYSBib3ggaW5zaWRlIGl0cyBjb250YWluZXIgYWxvbmcgdGhlIGFwcHJvcHJpYXRlIGF4aXMuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJhbGlnbi1zZWxmIixicm93c2VyczpbIkUxMiIsIkZGMjAiLCJTOSIsIkMyOSIsIklFMTAiLCJPMTIuMSJdLHZhbHVlczpbe25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJDb21wdXRlcyB0byB0aGUgdmFsdWUgb2YgJ2FsaWduLWl0ZW1zJyBvbiB0aGUgZWxlbWVudCdzIHBhcmVudCwgb3IgJ3N0cmV0Y2gnIGlmIHRoZSBlbGVtZW50IGhhcyBubyBwYXJlbnQuIE9uIGFic29sdXRlbHkgcG9zaXRpb25lZCBlbGVtZW50cywgaXQgY29tcHV0ZXMgdG8gaXRzZWxmLiJ9LHtuYW1lOiJub3JtYWwifSx7bmFtZToic2VsZi1lbmQifSx7bmFtZToic2VsZi1zdGFydCJ9LHtuYW1lOiJiYXNlbGluZSIsZGVzY3JpcHRpb246IklmIHRoZSBmbGV4IGl0ZW0ncyBpbmxpbmUgYXhpcyBpcyB0aGUgc2FtZSBhcyB0aGUgY3Jvc3MgYXhpcywgdGhpcyB2YWx1ZSBpcyBpZGVudGljYWwgdG8gJ2ZsZXgtc3RhcnQnLiBPdGhlcndpc2UsIGl0IHBhcnRpY2lwYXRlcyBpbiBiYXNlbGluZSBhbGlnbm1lbnQuIn0se25hbWU6ImNlbnRlciIsZGVzY3JpcHRpb246IlRoZSBmbGV4IGl0ZW0ncyBtYXJnaW4gYm94IGlzIGNlbnRlcmVkIGluIHRoZSBjcm9zcyBheGlzIHdpdGhpbiB0aGUgbGluZS4ifSx7bmFtZToiZmxleC1lbmQiLGRlc2NyaXB0aW9uOiJUaGUgY3Jvc3MtZW5kIG1hcmdpbiBlZGdlIG9mIHRoZSBmbGV4IGl0ZW0gaXMgcGxhY2VkIGZsdXNoIHdpdGggdGhlIGNyb3NzLWVuZCBlZGdlIG9mIHRoZSBsaW5lLiJ9LHtuYW1lOiJmbGV4LXN0YXJ0IixkZXNjcmlwdGlvbjoiVGhlIGNyb3NzLXN0YXJ0IG1hcmdpbiBlZGdlIG9mIHRoZSBmbGV4IGl0ZW0gaXMgcGxhY2VkIGZsdXNoIHdpdGggdGhlIGNyb3NzLXN0YXJ0IGVkZ2Ugb2YgdGhlIGxpbmUuIn0se25hbWU6InN0cmV0Y2giLGRlc2NyaXB0aW9uOiJJZiB0aGUgY3Jvc3Mgc2l6ZSBwcm9wZXJ0eSBvZiB0aGUgZmxleCBpdGVtIGNvbXB1dGVzIHRvIGF1dG8sIGFuZCBuZWl0aGVyIG9mIHRoZSBjcm9zcy1heGlzIG1hcmdpbnMgYXJlIGF1dG8sIHRoZSBmbGV4IGl0ZW0gaXMgc3RyZXRjaGVkLiJ9LHtuYW1lOiJiYXNlbGluZSJ9LHtuYW1lOiJmaXJzdCBiYXNlbGluZSJ9LHtuYW1lOiJsYXN0IGJhc2VsaW5lIn0se25hbWU6InNhZmUifSx7bmFtZToidW5zYWZlIn1dLHN5bnRheDoiYXV0byB8IG5vcm1hbCB8IHN0cmV0Y2ggfCA8YmFzZWxpbmUtcG9zaXRpb24+IHwgPG92ZXJmbG93LXBvc2l0aW9uPj8gPHNlbGYtcG9zaXRpb24+IixyZWxldmFuY2U6NzMscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2FsaWduLXNlbGYifV0sZGVzY3JpcHRpb246IkFsbG93cyB0aGUgZGVmYXVsdCBhbGlnbm1lbnQgYWxvbmcgdGhlIGNyb3NzIGF4aXMgdG8gYmUgb3ZlcnJpZGRlbiBmb3IgaW5kaXZpZHVhbCBmbGV4IGl0ZW1zLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiYWxsIixicm93c2VyczpbIkU3OSIsIkZGMjciLCJTOS4xIiwiQzM3IiwiTzI0Il0sdmFsdWVzOltdLHN5bnRheDoiaW5pdGlhbCB8IGluaGVyaXQgfCB1bnNldCB8IHJldmVydCB8IHJldmVydC1sYXllciIscmVsZXZhbmNlOjUzLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9hbGwifV0sZGVzY3JpcHRpb246IlNob3J0aGFuZCB0aGF0IHJlc2V0cyBhbGwgcHJvcGVydGllcyBleGNlcHQgJ2RpcmVjdGlvbicgYW5kICd1bmljb2RlLWJpZGknLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiYWx0Iixicm93c2VyczpbIlM5Il0sdmFsdWVzOltdLHJlbGV2YW5jZTo1MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYWx0In1dLGRlc2NyaXB0aW9uOiJQcm92aWRlcyBhbHRlcm5hdGl2ZSB0ZXh0IGZvciBhc3Npc3RpdmUgdGVjaG5vbG9neSB0byByZXBsYWNlIHRoZSBnZW5lcmF0ZWQgY29udGVudCBvZiBhIDo6YmVmb3JlIG9yIDo6YWZ0ZXIgZWxlbWVudC4iLHJlc3RyaWN0aW9uczpbInN0cmluZyIsImVudW0iXX0se25hbWU6ImFuaW1hdGlvbiIsYnJvd3NlcnM6WyJFMTIiLCJGRjE2IiwiUzkiLCJDNDMiLCJJRTEwIiwiTzMwIl0sdmFsdWVzOlt7bmFtZToiYWx0ZXJuYXRlIixkZXNjcmlwdGlvbjoiVGhlIGFuaW1hdGlvbiBjeWNsZSBpdGVyYXRpb25zIHRoYXQgYXJlIG9kZCBjb3VudHMgYXJlIHBsYXllZCBpbiB0aGUgbm9ybWFsIGRpcmVjdGlvbiwgYW5kIHRoZSBhbmltYXRpb24gY3ljbGUgaXRlcmF0aW9ucyB0aGF0IGFyZSBldmVuIGNvdW50cyBhcmUgcGxheWVkIGluIGEgcmV2ZXJzZSBkaXJlY3Rpb24uIn0se25hbWU6ImFsdGVybmF0ZS1yZXZlcnNlIixkZXNjcmlwdGlvbjoiVGhlIGFuaW1hdGlvbiBjeWNsZSBpdGVyYXRpb25zIHRoYXQgYXJlIG9kZCBjb3VudHMgYXJlIHBsYXllZCBpbiB0aGUgcmV2ZXJzZSBkaXJlY3Rpb24sIGFuZCB0aGUgYW5pbWF0aW9uIGN5Y2xlIGl0ZXJhdGlvbnMgdGhhdCBhcmUgZXZlbiBjb3VudHMgYXJlIHBsYXllZCBpbiBhIG5vcm1hbCBkaXJlY3Rpb24uIn0se25hbWU6ImJhY2t3YXJkcyIsZGVzY3JpcHRpb246IlRoZSBiZWdpbm5pbmcgcHJvcGVydHkgdmFsdWUgKGFzIGRlZmluZWQgaW4gdGhlIGZpcnN0IEBrZXlmcmFtZXMgYXQtcnVsZSkgaXMgYXBwbGllZCBiZWZvcmUgdGhlIGFuaW1hdGlvbiBpcyBkaXNwbGF5ZWQsIGR1cmluZyB0aGUgcGVyaW9kIGRlZmluZWQgYnkgJ2FuaW1hdGlvbi1kZWxheScuIn0se25hbWU6ImJvdGgiLGRlc2NyaXB0aW9uOiJCb3RoIGZvcndhcmRzIGFuZCBiYWNrd2FyZHMgZmlsbCBtb2RlcyBhcmUgYXBwbGllZC4ifSx7bmFtZToiZm9yd2FyZHMiLGRlc2NyaXB0aW9uOiJUaGUgZmluYWwgcHJvcGVydHkgdmFsdWUgKGFzIGRlZmluZWQgaW4gdGhlIGxhc3QgQGtleWZyYW1lcyBhdC1ydWxlKSBpcyBtYWludGFpbmVkIGFmdGVyIHRoZSBhbmltYXRpb24gY29tcGxldGVzLiJ9LHtuYW1lOiJpbmZpbml0ZSIsZGVzY3JpcHRpb246IkNhdXNlcyB0aGUgYW5pbWF0aW9uIHRvIHJlcGVhdCBmb3JldmVyLiJ9LHtuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiTm8gYW5pbWF0aW9uIGlzIHBlcmZvcm1lZCJ9LHtuYW1lOiJub3JtYWwiLGRlc2NyaXB0aW9uOiJOb3JtYWwgcGxheWJhY2suIn0se25hbWU6InJldmVyc2UiLGRlc2NyaXB0aW9uOiJBbGwgaXRlcmF0aW9ucyBvZiB0aGUgYW5pbWF0aW9uIGFyZSBwbGF5ZWQgaW4gdGhlIHJldmVyc2UgZGlyZWN0aW9uIGZyb20gdGhlIHdheSB0aGV5IHdlcmUgc3BlY2lmaWVkLiJ9XSxzeW50YXg6IjxzaW5nbGUtYW5pbWF0aW9uPiMiLHJlbGV2YW5jZTo4MixyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYW5pbWF0aW9uIn1dLGRlc2NyaXB0aW9uOiJTaG9ydGhhbmQgcHJvcGVydHkgY29tYmluZXMgc2l4IG9mIHRoZSBhbmltYXRpb24gcHJvcGVydGllcyBpbnRvIGEgc2luZ2xlIHByb3BlcnR5LiIscmVzdHJpY3Rpb25zOlsidGltZSIsInRpbWluZy1mdW5jdGlvbiIsImVudW0iLCJpZGVudGlmaWVyIiwibnVtYmVyIl19LHtuYW1lOiJhbmltYXRpb24tZGVsYXkiLGJyb3dzZXJzOlsiRTEyIiwiRkYxNiIsIlM5IiwiQzQzIiwiSUUxMCIsIk8zMCJdLHN5bnRheDoiPHRpbWU+IyIscmVsZXZhbmNlOjY2LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9hbmltYXRpb24tZGVsYXkifV0sZGVzY3JpcHRpb246IkRlZmluZXMgd2hlbiB0aGUgYW5pbWF0aW9uIHdpbGwgc3RhcnQuIixyZXN0cmljdGlvbnM6WyJ0aW1lIl19LHtuYW1lOiJhbmltYXRpb24tZGlyZWN0aW9uIixicm93c2VyczpbIkUxMiIsIkZGMTYiLCJTOSIsIkM0MyIsIklFMTAiLCJPMzAiXSx2YWx1ZXM6W3tuYW1lOiJhbHRlcm5hdGUiLGRlc2NyaXB0aW9uOiJUaGUgYW5pbWF0aW9uIGN5Y2xlIGl0ZXJhdGlvbnMgdGhhdCBhcmUgb2RkIGNvdW50cyBhcmUgcGxheWVkIGluIHRoZSBub3JtYWwgZGlyZWN0aW9uLCBhbmQgdGhlIGFuaW1hdGlvbiBjeWNsZSBpdGVyYXRpb25zIHRoYXQgYXJlIGV2ZW4gY291bnRzIGFyZSBwbGF5ZWQgaW4gYSByZXZlcnNlIGRpcmVjdGlvbi4ifSx7bmFtZToiYWx0ZXJuYXRlLXJldmVyc2UiLGRlc2NyaXB0aW9uOiJUaGUgYW5pbWF0aW9uIGN5Y2xlIGl0ZXJhdGlvbnMgdGhhdCBhcmUgb2RkIGNvdW50cyBhcmUgcGxheWVkIGluIHRoZSByZXZlcnNlIGRpcmVjdGlvbiwgYW5kIHRoZSBhbmltYXRpb24gY3ljbGUgaXRlcmF0aW9ucyB0aGF0IGFyZSBldmVuIGNvdW50cyBhcmUgcGxheWVkIGluIGEgbm9ybWFsIGRpcmVjdGlvbi4ifSx7bmFtZToibm9ybWFsIixkZXNjcmlwdGlvbjoiTm9ybWFsIHBsYXliYWNrLiJ9LHtuYW1lOiJyZXZlcnNlIixkZXNjcmlwdGlvbjoiQWxsIGl0ZXJhdGlvbnMgb2YgdGhlIGFuaW1hdGlvbiBhcmUgcGxheWVkIGluIHRoZSByZXZlcnNlIGRpcmVjdGlvbiBmcm9tIHRoZSB3YXkgdGhleSB3ZXJlIHNwZWNpZmllZC4ifV0sc3ludGF4OiI8c2luZ2xlLWFuaW1hdGlvbi1kaXJlY3Rpb24+IyIscmVsZXZhbmNlOjU4LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9hbmltYXRpb24tZGlyZWN0aW9uIn1dLGRlc2NyaXB0aW9uOiJEZWZpbmVzIHdoZXRoZXIgb3Igbm90IHRoZSBhbmltYXRpb24gc2hvdWxkIHBsYXkgaW4gcmV2ZXJzZSBvbiBhbHRlcm5hdGUgY3ljbGVzLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiYW5pbWF0aW9uLWR1cmF0aW9uIixicm93c2VyczpbIkUxMiIsIkZGMTYiLCJTOSIsIkM0MyIsIklFMTAiLCJPMzAiXSxzeW50YXg6Ijx0aW1lPiMiLHJlbGV2YW5jZTo3MixyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYW5pbWF0aW9uLWR1cmF0aW9uIn1dLGRlc2NyaXB0aW9uOiJEZWZpbmVzIHRoZSBsZW5ndGggb2YgdGltZSB0aGF0IGFuIGFuaW1hdGlvbiB0YWtlcyB0byBjb21wbGV0ZSBvbmUgY3ljbGUuIixyZXN0cmljdGlvbnM6WyJ0aW1lIl19LHtuYW1lOiJhbmltYXRpb24tZmlsbC1tb2RlIixicm93c2VyczpbIkUxMiIsIkZGMTYiLCJTOSIsIkM0MyIsIklFMTAiLCJPMzAiXSx2YWx1ZXM6W3tuYW1lOiJiYWNrd2FyZHMiLGRlc2NyaXB0aW9uOiJUaGUgYmVnaW5uaW5nIHByb3BlcnR5IHZhbHVlIChhcyBkZWZpbmVkIGluIHRoZSBmaXJzdCBAa2V5ZnJhbWVzIGF0LXJ1bGUpIGlzIGFwcGxpZWQgYmVmb3JlIHRoZSBhbmltYXRpb24gaXMgZGlzcGxheWVkLCBkdXJpbmcgdGhlIHBlcmlvZCBkZWZpbmVkIGJ5ICdhbmltYXRpb24tZGVsYXknLiJ9LHtuYW1lOiJib3RoIixkZXNjcmlwdGlvbjoiQm90aCBmb3J3YXJkcyBhbmQgYmFja3dhcmRzIGZpbGwgbW9kZXMgYXJlIGFwcGxpZWQuIn0se25hbWU6ImZvcndhcmRzIixkZXNjcmlwdGlvbjoiVGhlIGZpbmFsIHByb3BlcnR5IHZhbHVlIChhcyBkZWZpbmVkIGluIHRoZSBsYXN0IEBrZXlmcmFtZXMgYXQtcnVsZSkgaXMgbWFpbnRhaW5lZCBhZnRlciB0aGUgYW5pbWF0aW9uIGNvbXBsZXRlcy4ifSx7bmFtZToibm9uZSIsZGVzY3JpcHRpb246IlRoZXJlIGlzIG5vIGNoYW5nZSB0byB0aGUgcHJvcGVydHkgdmFsdWUgYmV0d2VlbiB0aGUgdGltZSB0aGUgYW5pbWF0aW9uIGlzIGFwcGxpZWQgYW5kIHRoZSB0aW1lIHRoZSBhbmltYXRpb24gYmVnaW5zIHBsYXlpbmcgb3IgYWZ0ZXIgdGhlIGFuaW1hdGlvbiBjb21wbGV0ZXMuIn1dLHN5bnRheDoiPHNpbmdsZS1hbmltYXRpb24tZmlsbC1tb2RlPiMiLHJlbGV2YW5jZTo2NSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYW5pbWF0aW9uLWZpbGwtbW9kZSJ9XSxkZXNjcmlwdGlvbjoiRGVmaW5lcyB3aGF0IHZhbHVlcyBhcmUgYXBwbGllZCBieSB0aGUgYW5pbWF0aW9uIG91dHNpZGUgdGhlIHRpbWUgaXQgaXMgZXhlY3V0aW5nLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudCIsYnJvd3NlcnM6WyJFMTIiLCJGRjE2IiwiUzkiLCJDNDMiLCJJRTEwIiwiTzMwIl0sdmFsdWVzOlt7bmFtZToiaW5maW5pdGUiLGRlc2NyaXB0aW9uOiJDYXVzZXMgdGhlIGFuaW1hdGlvbiB0byByZXBlYXQgZm9yZXZlci4ifV0sc3ludGF4OiI8c2luZ2xlLWFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ+IyIscmVsZXZhbmNlOjY0LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9hbmltYXRpb24taXRlcmF0aW9uLWNvdW50In1dLGRlc2NyaXB0aW9uOiJEZWZpbmVzIHRoZSBudW1iZXIgb2YgdGltZXMgYW4gYW5pbWF0aW9uIGN5Y2xlIGlzIHBsYXllZC4gVGhlIGRlZmF1bHQgdmFsdWUgaXMgb25lLCBtZWFuaW5nIHRoZSBhbmltYXRpb24gd2lsbCBwbGF5IGZyb20gYmVnaW5uaW5nIHRvIGVuZCBvbmNlLiIscmVzdHJpY3Rpb25zOlsibnVtYmVyIiwiZW51bSJdfSx7bmFtZToiYW5pbWF0aW9uLW5hbWUiLGJyb3dzZXJzOlsiRTEyIiwiRkYxNiIsIlM5IiwiQzQzIiwiSUUxMCIsIk8zMCJdLHZhbHVlczpbe25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJObyBhbmltYXRpb24gaXMgcGVyZm9ybWVkIn1dLHN5bnRheDoiWyBub25lIHwgPGtleWZyYW1lcy1uYW1lPiBdIyIscmVsZXZhbmNlOjcyLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9hbmltYXRpb24tbmFtZSJ9XSxkZXNjcmlwdGlvbjoiRGVmaW5lcyBhIGxpc3Qgb2YgYW5pbWF0aW9ucyB0aGF0IGFwcGx5LiBFYWNoIG5hbWUgaXMgdXNlZCB0byBzZWxlY3QgdGhlIGtleWZyYW1lIGF0LXJ1bGUgdGhhdCBwcm92aWRlcyB0aGUgcHJvcGVydHkgdmFsdWVzIGZvciB0aGUgYW5pbWF0aW9uLiIscmVzdHJpY3Rpb25zOlsiaWRlbnRpZmllciIsImVudW0iXX0se25hbWU6ImFuaW1hdGlvbi1wbGF5LXN0YXRlIixicm93c2VyczpbIkUxMiIsIkZGMTYiLCJTOSIsIkM0MyIsIklFMTAiLCJPMzAiXSx2YWx1ZXM6W3tuYW1lOiJwYXVzZWQiLGRlc2NyaXB0aW9uOiJBIHJ1bm5pbmcgYW5pbWF0aW9uIHdpbGwgYmUgcGF1c2VkLiJ9LHtuYW1lOiJydW5uaW5nIixkZXNjcmlwdGlvbjoiUmVzdW1lIHBsYXliYWNrIG9mIGEgcGF1c2VkIGFuaW1hdGlvbi4ifV0sc3ludGF4OiI8c2luZ2xlLWFuaW1hdGlvbi1wbGF5LXN0YXRlPiMiLHJlbGV2YW5jZTo1NSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYW5pbWF0aW9uLXBsYXktc3RhdGUifV0sZGVzY3JpcHRpb246IkRlZmluZXMgd2hldGhlciB0aGUgYW5pbWF0aW9uIGlzIHJ1bm5pbmcgb3IgcGF1c2VkLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbiIsYnJvd3NlcnM6WyJFMTIiLCJGRjE2IiwiUzkiLCJDNDMiLCJJRTEwIiwiTzMwIl0sc3ludGF4OiI8ZWFzaW5nLWZ1bmN0aW9uPiMiLHJlbGV2YW5jZTo3MSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbiJ9XSxkZXNjcmlwdGlvbjoiRGVzY3JpYmVzIGhvdyB0aGUgYW5pbWF0aW9uIHdpbGwgcHJvZ3Jlc3Mgb3ZlciBvbmUgY3ljbGUgb2YgaXRzIGR1cmF0aW9uLiIscmVzdHJpY3Rpb25zOlsidGltaW5nLWZ1bmN0aW9uIl19LHtuYW1lOiJiYWNrZmFjZS12aXNpYmlsaXR5Iixicm93c2VyczpbIkUxMiIsIkZGMTYiLCJTMTUuNCIsIkMzNiIsIklFMTAiLCJPMjMiXSx2YWx1ZXM6W3tuYW1lOiJoaWRkZW4iLGRlc2NyaXB0aW9uOiJCYWNrIHNpZGUgaXMgaGlkZGVuLiJ9LHtuYW1lOiJ2aXNpYmxlIixkZXNjcmlwdGlvbjoiQmFjayBzaWRlIGlzIHZpc2libGUuIn1dLHN5bnRheDoidmlzaWJsZSB8IGhpZGRlbiIscmVsZXZhbmNlOjYwLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9iYWNrZmFjZS12aXNpYmlsaXR5In1dLGRlc2NyaXB0aW9uOiJEZXRlcm1pbmVzIHdoZXRoZXIgb3Igbm90IHRoZSAnYmFjaycgc2lkZSBvZiBhIHRyYW5zZm9ybWVkIGVsZW1lbnQgaXMgdmlzaWJsZSB3aGVuIGZhY2luZyB0aGUgdmlld2VyLiBXaXRoIGFuIGlkZW50aXR5IHRyYW5zZm9ybSwgdGhlIGZyb250IHNpZGUgb2YgYW4gZWxlbWVudCBmYWNlcyB0aGUgdmlld2VyLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiYmFja2dyb3VuZCIsYnJvd3NlcnM6WyJFMTIiLCJGRjEiLCJTMSIsIkMxIiwiSUU0IiwiTzMuNSJdLHZhbHVlczpbe25hbWU6ImZpeGVkIixkZXNjcmlwdGlvbjoiVGhlIGJhY2tncm91bmQgaXMgZml4ZWQgd2l0aCByZWdhcmQgdG8gdGhlIHZpZXdwb3J0LiBJbiBwYWdlZCBtZWRpYSB3aGVyZSB0aGVyZSBpcyBubyB2aWV3cG9ydCwgYSAnZml4ZWQnIGJhY2tncm91bmQgaXMgZml4ZWQgd2l0aCByZXNwZWN0IHRvIHRoZSBwYWdlIGJveCBhbmQgdGhlcmVmb3JlIHJlcGxpY2F0ZWQgb24gZXZlcnkgcGFnZS4ifSx7bmFtZToibG9jYWwiLGRlc2NyaXB0aW9uOiJUaGUgYmFja2dyb3VuZCBpcyBmaXhlZCB3aXRoIHJlZ2FyZCB0byB0aGUgZWxlbWVudCdzIGNvbnRlbnRzOiBpZiB0aGUgZWxlbWVudCBoYXMgYSBzY3JvbGxpbmcgbWVjaGFuaXNtLCB0aGUgYmFja2dyb3VuZCBzY3JvbGxzIHdpdGggdGhlIGVsZW1lbnQncyBjb250ZW50cy4ifSx7bmFtZToibm9uZSIsZGVzY3JpcHRpb246IkEgdmFsdWUgb2YgJ25vbmUnIGNvdW50cyBhcyBhbiBpbWFnZSBsYXllciBidXQgZHJhd3Mgbm90aGluZy4ifSx7bmFtZToic2Nyb2xsIixkZXNjcmlwdGlvbjoiVGhlIGJhY2tncm91bmQgaXMgZml4ZWQgd2l0aCByZWdhcmQgdG8gdGhlIGVsZW1lbnQgaXRzZWxmIGFuZCBkb2VzIG5vdCBzY3JvbGwgd2l0aCBpdHMgY29udGVudHMuIChJdCBpcyBlZmZlY3RpdmVseSBhdHRhY2hlZCB0byB0aGUgZWxlbWVudCdzIGJvcmRlci4pIn1dLHN5bnRheDoiWyA8YmctbGF5ZXI+ICwgXSogPGZpbmFsLWJnLWxheWVyPiIscmVsZXZhbmNlOjkzLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9iYWNrZ3JvdW5kIn1dLGRlc2NyaXB0aW9uOiJTaG9ydGhhbmQgcHJvcGVydHkgZm9yIHNldHRpbmcgbW9zdCBiYWNrZ3JvdW5kIHByb3BlcnRpZXMgYXQgdGhlIHNhbWUgcGxhY2UgaW4gdGhlIHN0eWxlIHNoZWV0LiIscmVzdHJpY3Rpb25zOlsiZW51bSIsImltYWdlIiwiY29sb3IiLCJwb3NpdGlvbiIsImxlbmd0aCIsInJlcGVhdCIsInBlcmNlbnRhZ2UiLCJib3giXX0se25hbWU6ImJhY2tncm91bmQtYXR0YWNobWVudCIsYnJvd3NlcnM6WyJFMTIiLCJGRjEiLCJTMSIsIkMxIiwiSUU0IiwiTzMuNSJdLHZhbHVlczpbe25hbWU6ImZpeGVkIixkZXNjcmlwdGlvbjoiVGhlIGJhY2tncm91bmQgaXMgZml4ZWQgd2l0aCByZWdhcmQgdG8gdGhlIHZpZXdwb3J0LiBJbiBwYWdlZCBtZWRpYSB3aGVyZSB0aGVyZSBpcyBubyB2aWV3cG9ydCwgYSAnZml4ZWQnIGJhY2tncm91bmQgaXMgZml4ZWQgd2l0aCByZXNwZWN0IHRvIHRoZSBwYWdlIGJveCBhbmQgdGhlcmVmb3JlIHJlcGxpY2F0ZWQgb24gZXZlcnkgcGFnZS4ifSx7bmFtZToibG9jYWwiLGJyb3dzZXJzOlsiRTEyIiwiRkYxIiwiUzEiLCJDMSIsIklFNCIsIk8zLjUiXSxkZXNjcmlwdGlvbjoiVGhlIGJhY2tncm91bmQgaXMgZml4ZWQgd2l0aCByZWdhcmQgdG8gdGhlIGVsZW1lbnQncyBjb250ZW50czogaWYgdGhlIGVsZW1lbnQgaGFzIGEgc2Nyb2xsaW5nIG1lY2hhbmlzbSwgdGhlIGJhY2tncm91bmQgc2Nyb2xscyB3aXRoIHRoZSBlbGVtZW50J3MgY29udGVudHMuIn0se25hbWU6InNjcm9sbCIsZGVzY3JpcHRpb246IlRoZSBiYWNrZ3JvdW5kIGlzIGZpeGVkIHdpdGggcmVnYXJkIHRvIHRoZSBlbGVtZW50IGl0c2VsZiBhbmQgZG9lcyBub3Qgc2Nyb2xsIHdpdGggaXRzIGNvbnRlbnRzLiAoSXQgaXMgZWZmZWN0aXZlbHkgYXR0YWNoZWQgdG8gdGhlIGVsZW1lbnQncyBib3JkZXIuKSJ9XSxzeW50YXg6IjxhdHRhY2htZW50PiMiLHJlbGV2YW5jZTo1NCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYmFja2dyb3VuZC1hdHRhY2htZW50In1dLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgd2hldGhlciB0aGUgYmFja2dyb3VuZCBpbWFnZXMgYXJlIGZpeGVkIHdpdGggcmVnYXJkIHRvIHRoZSB2aWV3cG9ydCAoJ2ZpeGVkJykgb3Igc2Nyb2xsIGFsb25nIHdpdGggdGhlIGVsZW1lbnQgKCdzY3JvbGwnKSBvciBpdHMgY29udGVudHMgKCdsb2NhbCcpLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiYmFja2dyb3VuZC1ibGVuZC1tb2RlIixicm93c2VyczpbIkU3OSIsIkZGMzAiLCJTOCIsIkMzNSIsIk8yMiJdLHZhbHVlczpbe25hbWU6Im5vcm1hbCIsZGVzY3JpcHRpb246IkRlZmF1bHQgYXR0cmlidXRlIHdoaWNoIHNwZWNpZmllcyBubyBibGVuZGluZyJ9LHtuYW1lOiJtdWx0aXBseSIsZGVzY3JpcHRpb246IlRoZSBzb3VyY2UgY29sb3IgaXMgbXVsdGlwbGllZCBieSB0aGUgZGVzdGluYXRpb24gY29sb3IgYW5kIHJlcGxhY2VzIHRoZSBkZXN0aW5hdGlvbi4ifSx7bmFtZToic2NyZWVuIixkZXNjcmlwdGlvbjoiTXVsdGlwbGllcyB0aGUgY29tcGxlbWVudHMgb2YgdGhlIGJhY2tkcm9wIGFuZCBzb3VyY2UgY29sb3IgdmFsdWVzLCB0aGVuIGNvbXBsZW1lbnRzIHRoZSByZXN1bHQuIn0se25hbWU6Im92ZXJsYXkiLGRlc2NyaXB0aW9uOiJNdWx0aXBsaWVzIG9yIHNjcmVlbnMgdGhlIGNvbG9ycywgZGVwZW5kaW5nIG9uIHRoZSBiYWNrZHJvcCBjb2xvciB2YWx1ZS4ifSx7bmFtZToiZGFya2VuIixkZXNjcmlwdGlvbjoiU2VsZWN0cyB0aGUgZGFya2VyIG9mIHRoZSBiYWNrZHJvcCBhbmQgc291cmNlIGNvbG9ycy4ifSx7bmFtZToibGlnaHRlbiIsZGVzY3JpcHRpb246IlNlbGVjdHMgdGhlIGxpZ2h0ZXIgb2YgdGhlIGJhY2tkcm9wIGFuZCBzb3VyY2UgY29sb3JzLiJ9LHtuYW1lOiJjb2xvci1kb2RnZSIsZGVzY3JpcHRpb246IkJyaWdodGVucyB0aGUgYmFja2Ryb3AgY29sb3IgdG8gcmVmbGVjdCB0aGUgc291cmNlIGNvbG9yLiJ9LHtuYW1lOiJjb2xvci1idXJuIixkZXNjcmlwdGlvbjoiRGFya2VucyB0aGUgYmFja2Ryb3AgY29sb3IgdG8gcmVmbGVjdCB0aGUgc291cmNlIGNvbG9yLiJ9LHtuYW1lOiJoYXJkLWxpZ2h0IixkZXNjcmlwdGlvbjoiTXVsdGlwbGllcyBvciBzY3JlZW5zIHRoZSBjb2xvcnMsIGRlcGVuZGluZyBvbiB0aGUgc291cmNlIGNvbG9yIHZhbHVlLiJ9LHtuYW1lOiJzb2Z0LWxpZ2h0IixkZXNjcmlwdGlvbjoiRGFya2VucyBvciBsaWdodGVucyB0aGUgY29sb3JzLCBkZXBlbmRpbmcgb24gdGhlIHNvdXJjZSBjb2xvciB2YWx1ZS4ifSx7bmFtZToiZGlmZmVyZW5jZSIsZGVzY3JpcHRpb246IlN1YnRyYWN0cyB0aGUgZGFya2VyIG9mIHRoZSB0d28gY29uc3RpdHVlbnQgY29sb3JzIGZyb20gdGhlIGxpZ2h0ZXIgY29sb3IuLiJ9LHtuYW1lOiJleGNsdXNpb24iLGRlc2NyaXB0aW9uOiJQcm9kdWNlcyBhbiBlZmZlY3Qgc2ltaWxhciB0byB0aGF0IG9mIHRoZSBEaWZmZXJlbmNlIG1vZGUgYnV0IGxvd2VyIGluIGNvbnRyYXN0LiJ9LHtuYW1lOiJodWUiLGJyb3dzZXJzOlsiRTc5IiwiRkYzMCIsIlM4IiwiQzM1IiwiTzIyIl0sZGVzY3JpcHRpb246IkNyZWF0ZXMgYSBjb2xvciB3aXRoIHRoZSBodWUgb2YgdGhlIHNvdXJjZSBjb2xvciBhbmQgdGhlIHNhdHVyYXRpb24gYW5kIGx1bWlub3NpdHkgb2YgdGhlIGJhY2tkcm9wIGNvbG9yLiJ9LHtuYW1lOiJzYXR1cmF0aW9uIixicm93c2VyczpbIkU3OSIsIkZGMzAiLCJTOCIsIkMzNSIsIk8yMiJdLGRlc2NyaXB0aW9uOiJDcmVhdGVzIGEgY29sb3Igd2l0aCB0aGUgc2F0dXJhdGlvbiBvZiB0aGUgc291cmNlIGNvbG9yIGFuZCB0aGUgaHVlIGFuZCBsdW1pbm9zaXR5IG9mIHRoZSBiYWNrZHJvcCBjb2xvci4ifSx7bmFtZToiY29sb3IiLGJyb3dzZXJzOlsiRTc5IiwiRkYzMCIsIlM4IiwiQzM1IiwiTzIyIl0sZGVzY3JpcHRpb246IkNyZWF0ZXMgYSBjb2xvciB3aXRoIHRoZSBodWUgYW5kIHNhdHVyYXRpb24gb2YgdGhlIHNvdXJjZSBjb2xvciBhbmQgdGhlIGx1bWlub3NpdHkgb2YgdGhlIGJhY2tkcm9wIGNvbG9yLiJ9LHtuYW1lOiJsdW1pbm9zaXR5Iixicm93c2VyczpbIkU3OSIsIkZGMzAiLCJTOCIsIkMzNSIsIk8yMiJdLGRlc2NyaXB0aW9uOiJDcmVhdGVzIGEgY29sb3Igd2l0aCB0aGUgbHVtaW5vc2l0eSBvZiB0aGUgc291cmNlIGNvbG9yIGFuZCB0aGUgaHVlIGFuZCBzYXR1cmF0aW9uIG9mIHRoZSBiYWNrZHJvcCBjb2xvci4ifV0sc3ludGF4OiI8YmxlbmQtbW9kZT4jIixyZWxldmFuY2U6NTIscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2JhY2tncm91bmQtYmxlbmQtbW9kZSJ9XSxkZXNjcmlwdGlvbjoiRGVmaW5lcyB0aGUgYmxlbmRpbmcgbW9kZSBvZiBlYWNoIGJhY2tncm91bmQgbGF5ZXIuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJiYWNrZ3JvdW5kLWNsaXAiLGJyb3dzZXJzOlsiRTEyIiwiRkY0IiwiUzUiLCJDMSIsIklFOSIsIk8xMC41Il0sc3ludGF4OiI8Ym94PiMiLHJlbGV2YW5jZTo2OSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYmFja2dyb3VuZC1jbGlwIn1dLGRlc2NyaXB0aW9uOiJEZXRlcm1pbmVzIHRoZSBiYWNrZ3JvdW5kIHBhaW50aW5nIGFyZWEuIixyZXN0cmljdGlvbnM6WyJib3giXX0se25hbWU6ImJhY2tncm91bmQtY29sb3IiLGJyb3dzZXJzOlsiRTEyIiwiRkYxIiwiUzEiLCJDMSIsIklFNCIsIk8zLjUiXSxzeW50YXg6Ijxjb2xvcj4iLHJlbGV2YW5jZTo5NCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYmFja2dyb3VuZC1jb2xvciJ9XSxkZXNjcmlwdGlvbjoiU2V0cyB0aGUgYmFja2dyb3VuZCBjb2xvciBvZiBhbiBlbGVtZW50LiIscmVzdHJpY3Rpb25zOlsiY29sb3IiXX0se25hbWU6ImJhY2tncm91bmQtaW1hZ2UiLGJyb3dzZXJzOlsiRTEyIiwiRkYxIiwiUzEiLCJDMSIsIklFNCIsIk8zLjUiXSx2YWx1ZXM6W3tuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiQ291bnRzIGFzIGFuIGltYWdlIGxheWVyIGJ1dCBkcmF3cyBub3RoaW5nLiJ9XSxzeW50YXg6IjxiZy1pbWFnZT4jIixyZWxldmFuY2U6ODgscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2JhY2tncm91bmQtaW1hZ2UifV0sZGVzY3JpcHRpb246IlNldHMgdGhlIGJhY2tncm91bmQgaW1hZ2Uocykgb2YgYW4gZWxlbWVudC4iLHJlc3RyaWN0aW9uczpbImltYWdlIiwiZW51bSJdfSx7bmFtZToiYmFja2dyb3VuZC1vcmlnaW4iLGJyb3dzZXJzOlsiRTEyIiwiRkY0IiwiUzMiLCJDMSIsIklFOSIsIk8xMC41Il0sc3ludGF4OiI8Ym94PiMiLHJlbGV2YW5jZTo1MyxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYmFja2dyb3VuZC1vcmlnaW4ifV0sZGVzY3JpcHRpb246IkZvciBlbGVtZW50cyByZW5kZXJlZCBhcyBhIHNpbmdsZSBib3gsIHNwZWNpZmllcyB0aGUgYmFja2dyb3VuZCBwb3NpdGlvbmluZyBhcmVhLiBGb3IgZWxlbWVudHMgcmVuZGVyZWQgYXMgbXVsdGlwbGUgYm94ZXMgKGUuZy4sIGlubGluZSBib3hlcyBvbiBzZXZlcmFsIGxpbmVzLCBib3hlcyBvbiBzZXZlcmFsIHBhZ2VzKSBzcGVjaWZpZXMgd2hpY2ggYm94ZXMgJ2JveC1kZWNvcmF0aW9uLWJyZWFrJyBvcGVyYXRlcyBvbiB0byBkZXRlcm1pbmUgdGhlIGJhY2tncm91bmQgcG9zaXRpb25pbmcgYXJlYShzKS4iLHJlc3RyaWN0aW9uczpbImJveCJdfSx7bmFtZToiYmFja2dyb3VuZC1wb3NpdGlvbiIsYnJvd3NlcnM6WyJFMTIiLCJGRjEiLCJTMSIsIkMxIiwiSUU0IiwiTzMuNSJdLHN5bnRheDoiPGJnLXBvc2l0aW9uPiMiLHJlbGV2YW5jZTo4NyxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYmFja2dyb3VuZC1wb3NpdGlvbiJ9XSxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIHRoZSBpbml0aWFsIHBvc2l0aW9uIG9mIHRoZSBiYWNrZ3JvdW5kIGltYWdlKHMpIChhZnRlciBhbnkgcmVzaXppbmcpIHdpdGhpbiB0aGVpciBjb3JyZXNwb25kaW5nIGJhY2tncm91bmQgcG9zaXRpb25pbmcgYXJlYS4iLHJlc3RyaWN0aW9uczpbInBvc2l0aW9uIiwibGVuZ3RoIiwicGVyY2VudGFnZSJdfSx7bmFtZToiYmFja2dyb3VuZC1wb3NpdGlvbi14Iixicm93c2VyczpbIkUxMiIsIkZGNDkiLCJTMSIsIkMxIiwiSUU2IiwiTzE1Il0sdmFsdWVzOlt7bmFtZToiY2VudGVyIixkZXNjcmlwdGlvbjoiRXF1aXZhbGVudCB0byAnNTAlJyAoJ2xlZnQgNTAlJykgZm9yIHRoZSBob3Jpem9udGFsIHBvc2l0aW9uIGlmIHRoZSBob3Jpem9udGFsIHBvc2l0aW9uIGlzIG5vdCBvdGhlcndpc2Ugc3BlY2lmaWVkLCBvciAnNTAlJyAoJ3RvcCA1MCUnKSBmb3IgdGhlIHZlcnRpY2FsIHBvc2l0aW9uIGlmIGl0IGlzLiJ9LHtuYW1lOiJsZWZ0IixkZXNjcmlwdGlvbjoiRXF1aXZhbGVudCB0byAnMCUnIGZvciB0aGUgaG9yaXpvbnRhbCBwb3NpdGlvbiBpZiBvbmUgb3IgdHdvIHZhbHVlcyBhcmUgZ2l2ZW4sIG90aGVyd2lzZSBzcGVjaWZpZXMgdGhlIGxlZnQgZWRnZSBhcyB0aGUgb3JpZ2luIGZvciB0aGUgbmV4dCBvZmZzZXQuIn0se25hbWU6InJpZ2h0IixkZXNjcmlwdGlvbjoiRXF1aXZhbGVudCB0byAnMTAwJScgZm9yIHRoZSBob3Jpem9udGFsIHBvc2l0aW9uIGlmIG9uZSBvciB0d28gdmFsdWVzIGFyZSBnaXZlbiwgb3RoZXJ3aXNlIHNwZWNpZmllcyB0aGUgcmlnaHQgZWRnZSBhcyB0aGUgb3JpZ2luIGZvciB0aGUgbmV4dCBvZmZzZXQuIn1dLHN5bnRheDoiWyBjZW50ZXIgfCBbIFsgbGVmdCB8IHJpZ2h0IHwgeC1zdGFydCB8IHgtZW5kIF0/IDxsZW5ndGgtcGVyY2VudGFnZT4/IF0hIF0jIixyZWxldmFuY2U6NTUscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2JhY2tncm91bmQtcG9zaXRpb24teCJ9XSxkZXNjcmlwdGlvbjoiSWYgYmFja2dyb3VuZCBpbWFnZXMgaGF2ZSBiZWVuIHNwZWNpZmllZCwgdGhpcyBwcm9wZXJ0eSBzcGVjaWZpZXMgdGhlaXIgaW5pdGlhbCBwb3NpdGlvbiAoYWZ0ZXIgYW55IHJlc2l6aW5nKSB3aXRoaW4gdGhlaXIgY29ycmVzcG9uZGluZyBiYWNrZ3JvdW5kIHBvc2l0aW9uaW5nIGFyZWEuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJwZXJjZW50YWdlIl19LHtuYW1lOiJiYWNrZ3JvdW5kLXBvc2l0aW9uLXkiLGJyb3dzZXJzOlsiRTEyIiwiRkY0OSIsIlMxIiwiQzEiLCJJRTYiLCJPMTUiXSx2YWx1ZXM6W3tuYW1lOiJib3R0b20iLGRlc2NyaXB0aW9uOiJFcXVpdmFsZW50IHRvICcxMDAlJyBmb3IgdGhlIHZlcnRpY2FsIHBvc2l0aW9uIGlmIG9uZSBvciB0d28gdmFsdWVzIGFyZSBnaXZlbiwgb3RoZXJ3aXNlIHNwZWNpZmllcyB0aGUgYm90dG9tIGVkZ2UgYXMgdGhlIG9yaWdpbiBmb3IgdGhlIG5leHQgb2Zmc2V0LiJ9LHtuYW1lOiJjZW50ZXIiLGRlc2NyaXB0aW9uOiJFcXVpdmFsZW50IHRvICc1MCUnICgnbGVmdCA1MCUnKSBmb3IgdGhlIGhvcml6b250YWwgcG9zaXRpb24gaWYgdGhlIGhvcml6b250YWwgcG9zaXRpb24gaXMgbm90IG90aGVyd2lzZSBzcGVjaWZpZWQsIG9yICc1MCUnICgndG9wIDUwJScpIGZvciB0aGUgdmVydGljYWwgcG9zaXRpb24gaWYgaXQgaXMuIn0se25hbWU6InRvcCIsZGVzY3JpcHRpb246IkVxdWl2YWxlbnQgdG8gJzAlJyBmb3IgdGhlIHZlcnRpY2FsIHBvc2l0aW9uIGlmIG9uZSBvciB0d28gdmFsdWVzIGFyZSBnaXZlbiwgb3RoZXJ3aXNlIHNwZWNpZmllcyB0aGUgdG9wIGVkZ2UgYXMgdGhlIG9yaWdpbiBmb3IgdGhlIG5leHQgb2Zmc2V0LiJ9XSxzeW50YXg6IlsgY2VudGVyIHwgWyBbIHRvcCB8IGJvdHRvbSB8IHktc3RhcnQgfCB5LWVuZCBdPyA8bGVuZ3RoLXBlcmNlbnRhZ2U+PyBdISBdIyIscmVsZXZhbmNlOjUzLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9iYWNrZ3JvdW5kLXBvc2l0aW9uLXkifV0sZGVzY3JpcHRpb246IklmIGJhY2tncm91bmQgaW1hZ2VzIGhhdmUgYmVlbiBzcGVjaWZpZWQsIHRoaXMgcHJvcGVydHkgc3BlY2lmaWVzIHRoZWlyIGluaXRpYWwgcG9zaXRpb24gKGFmdGVyIGFueSByZXNpemluZykgd2l0aGluIHRoZWlyIGNvcnJlc3BvbmRpbmcgYmFja2dyb3VuZCBwb3NpdGlvbmluZyBhcmVhLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwicGVyY2VudGFnZSJdfSx7bmFtZToiYmFja2dyb3VuZC1yZXBlYXQiLGJyb3dzZXJzOlsiRTEyIiwiRkYxIiwiUzEiLCJDMSIsIklFNCIsIk8zLjUiXSx2YWx1ZXM6W10sc3ludGF4OiI8cmVwZWF0LXN0eWxlPiMiLHJlbGV2YW5jZTo4NSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYmFja2dyb3VuZC1yZXBlYXQifV0sZGVzY3JpcHRpb246IlNwZWNpZmllcyBob3cgYmFja2dyb3VuZCBpbWFnZXMgYXJlIHRpbGVkIGFmdGVyIHRoZXkgaGF2ZSBiZWVuIHNpemVkIGFuZCBwb3NpdGlvbmVkLiIscmVzdHJpY3Rpb25zOlsicmVwZWF0Il19LHtuYW1lOiJiYWNrZ3JvdW5kLXNpemUiLGJyb3dzZXJzOlsiRTEyIiwiRkY0IiwiUzUiLCJDMyIsIklFOSIsIk8xMCJdLHZhbHVlczpbe25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJSZXNvbHZlZCBieSB1c2luZyB0aGUgaW1hZ2UncyBpbnRyaW5zaWMgcmF0aW8gYW5kIHRoZSBzaXplIG9mIHRoZSBvdGhlciBkaW1lbnNpb24sIG9yIGZhaWxpbmcgdGhhdCwgdXNpbmcgdGhlIGltYWdlJ3MgaW50cmluc2ljIHNpemUsIG9yIGZhaWxpbmcgdGhhdCwgdHJlYXRpbmcgaXQgYXMgMTAwJS4ifSx7bmFtZToiY29udGFpbiIsZGVzY3JpcHRpb246IlNjYWxlIHRoZSBpbWFnZSwgd2hpbGUgcHJlc2VydmluZyBpdHMgaW50cmluc2ljIGFzcGVjdCByYXRpbyAoaWYgYW55KSwgdG8gdGhlIGxhcmdlc3Qgc2l6ZSBzdWNoIHRoYXQgYm90aCBpdHMgd2lkdGggYW5kIGl0cyBoZWlnaHQgY2FuIGZpdCBpbnNpZGUgdGhlIGJhY2tncm91bmQgcG9zaXRpb25pbmcgYXJlYS4ifSx7bmFtZToiY292ZXIiLGRlc2NyaXB0aW9uOiJTY2FsZSB0aGUgaW1hZ2UsIHdoaWxlIHByZXNlcnZpbmcgaXRzIGludHJpbnNpYyBhc3BlY3QgcmF0aW8gKGlmIGFueSksIHRvIHRoZSBzbWFsbGVzdCBzaXplIHN1Y2ggdGhhdCBib3RoIGl0cyB3aWR0aCBhbmQgaXRzIGhlaWdodCBjYW4gY29tcGxldGVseSBjb3ZlciB0aGUgYmFja2dyb3VuZCBwb3NpdGlvbmluZyBhcmVhLiJ9XSxzeW50YXg6IjxiZy1zaXplPiMiLHJlbGV2YW5jZTo4NSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYmFja2dyb3VuZC1zaXplIn1dLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgdGhlIHNpemUgb2YgdGhlIGJhY2tncm91bmQgaW1hZ2VzLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwicGVyY2VudGFnZSJdfSx7bmFtZToiYmVoYXZpb3IiLGJyb3dzZXJzOlsiSUU2Il0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJJRSBvbmx5LiBVc2VkIHRvIGV4dGVuZCBiZWhhdmlvcnMgb2YgdGhlIGJyb3dzZXIuIixyZXN0cmljdGlvbnM6WyJ1cmwiXX0se25hbWU6ImJsb2NrLXNpemUiLGJyb3dzZXJzOlsiRTc5IiwiRkY0MSIsIlMxMi4xIiwiQzU3IiwiTzQ0Il0sdmFsdWVzOlt7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IkRlcGVuZHMgb24gdGhlIHZhbHVlcyBvZiBvdGhlciBwcm9wZXJ0aWVzLiJ9XSxzeW50YXg6Ijwnd2lkdGgnPiIscmVsZXZhbmNlOjUzLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9ibG9jay1zaXplIn1dLGRlc2NyaXB0aW9uOiJTaXplIG9mIGFuIGVsZW1lbnQgaW4gdGhlIGRpcmVjdGlvbiBvcHBvc2l0ZSB0aGF0IG9mIHRoZSBkaXJlY3Rpb24gc3BlY2lmaWVkIGJ5ICd3cml0aW5nLW1vZGUnLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwicGVyY2VudGFnZSJdfSx7bmFtZToiYm9yZGVyIixicm93c2VyczpbIkUxMiIsIkZGMSIsIlMxIiwiQzEiLCJJRTQiLCJPMy41Il0sc3ludGF4OiI8bGluZS13aWR0aD4gfHwgPGxpbmUtc3R5bGU+IHx8IDxjb2xvcj4iLHJlbGV2YW5jZTo5NSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYm9yZGVyIn1dLGRlc2NyaXB0aW9uOiJTaG9ydGhhbmQgcHJvcGVydHkgZm9yIHNldHRpbmcgYm9yZGVyIHdpZHRoLCBzdHlsZSwgYW5kIGNvbG9yLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwibGluZS13aWR0aCIsImxpbmUtc3R5bGUiLCJjb2xvciJdfSx7bmFtZToiYm9yZGVyLWJsb2NrLWVuZCIsYnJvd3NlcnM6WyJFNzkiLCJGRjQxIiwiUzEyLjEiLCJDNjkiLCJPNTYiXSxzeW50YXg6IjwnYm9yZGVyLXRvcC13aWR0aCc+IHx8IDwnYm9yZGVyLXRvcC1zdHlsZSc+IHx8IDxjb2xvcj4iLHJlbGV2YW5jZTo1MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYm9yZGVyLWJsb2NrLWVuZCJ9XSxkZXNjcmlwdGlvbjoiTG9naWNhbCAnYm9yZGVyLWJvdHRvbScuIE1hcHBpbmcgZGVwZW5kcyBvbiB0aGUgcGFyZW50IGVsZW1lbnQncyAnd3JpdGluZy1tb2RlJywgJ2RpcmVjdGlvbicsIGFuZCAndGV4dC1vcmllbnRhdGlvbicuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJsaW5lLXdpZHRoIiwibGluZS1zdHlsZSIsImNvbG9yIl19LHtuYW1lOiJib3JkZXItYmxvY2stc3RhcnQiLGJyb3dzZXJzOlsiRTc5IiwiRkY0MSIsIlMxMi4xIiwiQzY5IiwiTzU2Il0sc3ludGF4OiI8J2JvcmRlci10b3Atd2lkdGgnPiB8fCA8J2JvcmRlci10b3Atc3R5bGUnPiB8fCA8Y29sb3I+IixyZWxldmFuY2U6NTAscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2JvcmRlci1ibG9jay1zdGFydCJ9XSxkZXNjcmlwdGlvbjoiTG9naWNhbCAnYm9yZGVyLXRvcCcuIE1hcHBpbmcgZGVwZW5kcyBvbiB0aGUgcGFyZW50IGVsZW1lbnQncyAnd3JpdGluZy1tb2RlJywgJ2RpcmVjdGlvbicsIGFuZCAndGV4dC1vcmllbnRhdGlvbicuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJsaW5lLXdpZHRoIiwibGluZS1zdHlsZSIsImNvbG9yIl19LHtuYW1lOiJib3JkZXItYmxvY2stZW5kLWNvbG9yIixicm93c2VyczpbIkU3OSIsIkZGNDEiLCJTMTIuMSIsIkM2OSIsIk81NiJdLHN5bnRheDoiPCdib3JkZXItdG9wLWNvbG9yJz4iLHJlbGV2YW5jZTo1MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYm9yZGVyLWJsb2NrLWVuZC1jb2xvciJ9XSxkZXNjcmlwdGlvbjoiTG9naWNhbCAnYm9yZGVyLWJvdHRvbS1jb2xvcicuIE1hcHBpbmcgZGVwZW5kcyBvbiB0aGUgcGFyZW50IGVsZW1lbnQncyAnd3JpdGluZy1tb2RlJywgJ2RpcmVjdGlvbicsIGFuZCAndGV4dC1vcmllbnRhdGlvbicuIixyZXN0cmljdGlvbnM6WyJjb2xvciJdfSx7bmFtZToiYm9yZGVyLWJsb2NrLXN0YXJ0LWNvbG9yIixicm93c2VyczpbIkU3OSIsIkZGNDEiLCJTMTIuMSIsIkM2OSIsIk81NiJdLHN5bnRheDoiPCdib3JkZXItdG9wLWNvbG9yJz4iLHJlbGV2YW5jZTo1MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYm9yZGVyLWJsb2NrLXN0YXJ0LWNvbG9yIn1dLGRlc2NyaXB0aW9uOiJMb2dpY2FsICdib3JkZXItdG9wLWNvbG9yJy4gTWFwcGluZyBkZXBlbmRzIG9uIHRoZSBwYXJlbnQgZWxlbWVudCdzICd3cml0aW5nLW1vZGUnLCAnZGlyZWN0aW9uJywgYW5kICd0ZXh0LW9yaWVudGF0aW9uJy4iLHJlc3RyaWN0aW9uczpbImNvbG9yIl19LHtuYW1lOiJib3JkZXItYmxvY2stZW5kLXN0eWxlIixicm93c2VyczpbIkU3OSIsIkZGNDEiLCJTMTIuMSIsIkM2OSIsIk81NiJdLHN5bnRheDoiPCdib3JkZXItdG9wLXN0eWxlJz4iLHJlbGV2YW5jZTo1MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYm9yZGVyLWJsb2NrLWVuZC1zdHlsZSJ9XSxkZXNjcmlwdGlvbjoiTG9naWNhbCAnYm9yZGVyLWJvdHRvbS1zdHlsZScuIE1hcHBpbmcgZGVwZW5kcyBvbiB0aGUgcGFyZW50IGVsZW1lbnQncyAnd3JpdGluZy1tb2RlJywgJ2RpcmVjdGlvbicsIGFuZCAndGV4dC1vcmllbnRhdGlvbicuIixyZXN0cmljdGlvbnM6WyJsaW5lLXN0eWxlIl19LHtuYW1lOiJib3JkZXItYmxvY2stc3RhcnQtc3R5bGUiLGJyb3dzZXJzOlsiRTc5IiwiRkY0MSIsIlMxMi4xIiwiQzY5IiwiTzU2Il0sc3ludGF4OiI8J2JvcmRlci10b3Atc3R5bGUnPiIscmVsZXZhbmNlOjUwLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9ib3JkZXItYmxvY2stc3RhcnQtc3R5bGUifV0sZGVzY3JpcHRpb246IkxvZ2ljYWwgJ2JvcmRlci10b3Atc3R5bGUnLiBNYXBwaW5nIGRlcGVuZHMgb24gdGhlIHBhcmVudCBlbGVtZW50J3MgJ3dyaXRpbmctbW9kZScsICdkaXJlY3Rpb24nLCBhbmQgJ3RleHQtb3JpZW50YXRpb24nLiIscmVzdHJpY3Rpb25zOlsibGluZS1zdHlsZSJdfSx7bmFtZToiYm9yZGVyLWJsb2NrLWVuZC13aWR0aCIsYnJvd3NlcnM6WyJFNzkiLCJGRjQxIiwiUzEyLjEiLCJDNjkiLCJPNTYiXSxzeW50YXg6IjwnYm9yZGVyLXRvcC13aWR0aCc+IixyZWxldmFuY2U6NTAscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2JvcmRlci1ibG9jay1lbmQtd2lkdGgifV0sZGVzY3JpcHRpb246IkxvZ2ljYWwgJ2JvcmRlci1ib3R0b20td2lkdGgnLiBNYXBwaW5nIGRlcGVuZHMgb24gdGhlIHBhcmVudCBlbGVtZW50J3MgJ3dyaXRpbmctbW9kZScsICdkaXJlY3Rpb24nLCBhbmQgJ3RleHQtb3JpZW50YXRpb24nLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwibGluZS13aWR0aCJdfSx7bmFtZToiYm9yZGVyLWJsb2NrLXN0YXJ0LXdpZHRoIixicm93c2VyczpbIkU3OSIsIkZGNDEiLCJTMTIuMSIsIkM2OSIsIk81NiJdLHN5bnRheDoiPCdib3JkZXItdG9wLXdpZHRoJz4iLHJlbGV2YW5jZTo1MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYm9yZGVyLWJsb2NrLXN0YXJ0LXdpZHRoIn1dLGRlc2NyaXB0aW9uOiJMb2dpY2FsICdib3JkZXItdG9wLXdpZHRoJy4gTWFwcGluZyBkZXBlbmRzIG9uIHRoZSBwYXJlbnQgZWxlbWVudCdzICd3cml0aW5nLW1vZGUnLCAnZGlyZWN0aW9uJywgYW5kICd0ZXh0LW9yaWVudGF0aW9uJy4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsImxpbmUtd2lkdGgiXX0se25hbWU6ImJvcmRlci1ib3R0b20iLGJyb3dzZXJzOlsiRTEyIiwiRkYxIiwiUzEiLCJDMSIsIklFNCIsIk8zLjUiXSxzeW50YXg6IjxsaW5lLXdpZHRoPiB8fCA8bGluZS1zdHlsZT4gfHwgPGNvbG9yPiIscmVsZXZhbmNlOjg3LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9ib3JkZXItYm90dG9tIn1dLGRlc2NyaXB0aW9uOiJTaG9ydGhhbmQgcHJvcGVydHkgZm9yIHNldHRpbmcgYm9yZGVyIHdpZHRoLCBzdHlsZSBhbmQgY29sb3IuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJsaW5lLXdpZHRoIiwibGluZS1zdHlsZSIsImNvbG9yIl19LHtuYW1lOiJib3JkZXItYm90dG9tLWNvbG9yIixicm93c2VyczpbIkUxMiIsIkZGMSIsIlMxIiwiQzEiLCJJRTQiLCJPMy41Il0sc3ludGF4OiI8J2JvcmRlci10b3AtY29sb3InPiIscmVsZXZhbmNlOjcwLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9ib3JkZXItYm90dG9tLWNvbG9yIn1dLGRlc2NyaXB0aW9uOiJTZXRzIHRoZSBjb2xvciBvZiB0aGUgYm90dG9tIGJvcmRlci4iLHJlc3RyaWN0aW9uczpbImNvbG9yIl19LHtuYW1lOiJib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzIixicm93c2VyczpbIkUxMiIsIkZGNCIsIlM1IiwiQzQiLCJJRTkiLCJPMTAuNSJdLHN5bnRheDoiPGxlbmd0aC1wZXJjZW50YWdlPnsxLDJ9IixyZWxldmFuY2U6NzQscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXMifV0sZGVzY3JpcHRpb246IkRlZmluZXMgdGhlIHJhZGlpIG9mIHRoZSBib3R0b20gbGVmdCBvdXRlciBib3JkZXIgZWRnZS4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsInBlcmNlbnRhZ2UiXX0se25hbWU6ImJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzIixicm93c2VyczpbIkUxMiIsIkZGNCIsIlM1IiwiQzQiLCJJRTkiLCJPMTAuNSJdLHN5bnRheDoiPGxlbmd0aC1wZXJjZW50YWdlPnsxLDJ9IixyZWxldmFuY2U6NzQscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzIn1dLGRlc2NyaXB0aW9uOiJEZWZpbmVzIHRoZSByYWRpaSBvZiB0aGUgYm90dG9tIHJpZ2h0IG91dGVyIGJvcmRlciBlZGdlLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwicGVyY2VudGFnZSJdfSx7bmFtZToiYm9yZGVyLWJvdHRvbS1zdHlsZSIsYnJvd3NlcnM6WyJFMTIiLCJGRjEiLCJTMSIsIkMxIiwiSUU1LjUiLCJPOS4yIl0sc3ludGF4OiI8bGluZS1zdHlsZT4iLHJlbGV2YW5jZTo2MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYm9yZGVyLWJvdHRvbS1zdHlsZSJ9XSxkZXNjcmlwdGlvbjoiU2V0cyB0aGUgc3R5bGUgb2YgdGhlIGJvdHRvbSBib3JkZXIuIixyZXN0cmljdGlvbnM6WyJsaW5lLXN0eWxlIl19LHtuYW1lOiJib3JkZXItYm90dG9tLXdpZHRoIixicm93c2VyczpbIkUxMiIsIkZGMSIsIlMxIiwiQzEiLCJJRTQiLCJPMy41Il0sc3ludGF4OiI8bGluZS13aWR0aD4iLHJlbGV2YW5jZTo2NSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYm9yZGVyLWJvdHRvbS13aWR0aCJ9XSxkZXNjcmlwdGlvbjoiU2V0cyB0aGUgdGhpY2tuZXNzIG9mIHRoZSBib3R0b20gYm9yZGVyLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwibGluZS13aWR0aCJdfSx7bmFtZToiYm9yZGVyLWNvbGxhcHNlIixicm93c2VyczpbIkUxMiIsIkZGMSIsIlMxLjIiLCJDMSIsIklFNSIsIk80Il0sdmFsdWVzOlt7bmFtZToiY29sbGFwc2UiLGRlc2NyaXB0aW9uOiJTZWxlY3RzIHRoZSBjb2xsYXBzaW5nIGJvcmRlcnMgbW9kZWwuIn0se25hbWU6InNlcGFyYXRlIixkZXNjcmlwdGlvbjoiU2VsZWN0cyB0aGUgc2VwYXJhdGVkIGJvcmRlcnMgYm9yZGVyIG1vZGVsLiJ9XSxzeW50YXg6ImNvbGxhcHNlIHwgc2VwYXJhdGUiLHJlbGV2YW5jZTo3MSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYm9yZGVyLWNvbGxhcHNlIn1dLGRlc2NyaXB0aW9uOiJTZWxlY3RzIGEgdGFibGUncyBib3JkZXIgbW9kZWwuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJib3JkZXItY29sb3IiLGJyb3dzZXJzOlsiRTEyIiwiRkYxIiwiUzEiLCJDMSIsIklFNCIsIk8zLjUiXSx2YWx1ZXM6W10sc3ludGF4OiI8Y29sb3I+ezEsNH0iLHJlbGV2YW5jZTo4NixyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYm9yZGVyLWNvbG9yIn1dLGRlc2NyaXB0aW9uOiJUaGUgY29sb3Igb2YgdGhlIGJvcmRlciBhcm91bmQgYWxsIGZvdXIgZWRnZXMgb2YgYW4gZWxlbWVudC4iLHJlc3RyaWN0aW9uczpbImNvbG9yIl19LHtuYW1lOiJib3JkZXItaW1hZ2UiLGJyb3dzZXJzOlsiRTEyIiwiRkYxNSIsIlM2IiwiQzE2IiwiSUUxMSIsIk8xMSJdLHZhbHVlczpbe25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJJZiAnYXV0bycgaXMgc3BlY2lmaWVkIHRoZW4gdGhlIGJvcmRlciBpbWFnZSB3aWR0aCBpcyB0aGUgaW50cmluc2ljIHdpZHRoIG9yIGhlaWdodCAod2hpY2hldmVyIGlzIGFwcGxpY2FibGUpIG9mIHRoZSBjb3JyZXNwb25kaW5nIGltYWdlIHNsaWNlLiBJZiB0aGUgaW1hZ2UgZG9lcyBub3QgaGF2ZSB0aGUgcmVxdWlyZWQgaW50cmluc2ljIGRpbWVuc2lvbiB0aGVuIHRoZSBjb3JyZXNwb25kaW5nIGJvcmRlci13aWR0aCBpcyB1c2VkIGluc3RlYWQuIn0se25hbWU6ImZpbGwiLGRlc2NyaXB0aW9uOiJDYXVzZXMgdGhlIG1pZGRsZSBwYXJ0IG9mIHRoZSBib3JkZXItaW1hZ2UgdG8gYmUgcHJlc2VydmVkLiJ9LHtuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiVXNlIHRoZSBib3JkZXIgc3R5bGVzLiJ9LHtuYW1lOiJyZXBlYXQiLGRlc2NyaXB0aW9uOiJUaGUgaW1hZ2UgaXMgdGlsZWQgKHJlcGVhdGVkKSB0byBmaWxsIHRoZSBhcmVhLiJ9LHtuYW1lOiJyb3VuZCIsZGVzY3JpcHRpb246IlRoZSBpbWFnZSBpcyB0aWxlZCAocmVwZWF0ZWQpIHRvIGZpbGwgdGhlIGFyZWEuIElmIGl0IGRvZXMgbm90IGZpbGwgdGhlIGFyZWEgd2l0aCBhIHdob2xlIG51bWJlciBvZiB0aWxlcywgdGhlIGltYWdlIGlzIHJlc2NhbGVkIHNvIHRoYXQgaXQgZG9lcy4ifSx7bmFtZToic3BhY2UiLGRlc2NyaXB0aW9uOiJUaGUgaW1hZ2UgaXMgdGlsZWQgKHJlcGVhdGVkKSB0byBmaWxsIHRoZSBhcmVhLiBJZiBpdCBkb2VzIG5vdCBmaWxsIHRoZSBhcmVhIHdpdGggYSB3aG9sZSBudW1iZXIgb2YgdGlsZXMsIHRoZSBleHRyYSBzcGFjZSBpcyBkaXN0cmlidXRlZCBhcm91bmQgdGhlIHRpbGVzLiJ9LHtuYW1lOiJzdHJldGNoIixkZXNjcmlwdGlvbjoiVGhlIGltYWdlIGlzIHN0cmV0Y2hlZCB0byBmaWxsIHRoZSBhcmVhLiJ9LHtuYW1lOiJ1cmwoKSJ9XSxzeW50YXg6IjwnYm9yZGVyLWltYWdlLXNvdXJjZSc+IHx8IDwnYm9yZGVyLWltYWdlLXNsaWNlJz4gWyAvIDwnYm9yZGVyLWltYWdlLXdpZHRoJz4gfCAvIDwnYm9yZGVyLWltYWdlLXdpZHRoJz4/IC8gPCdib3JkZXItaW1hZ2Utb3V0c2V0Jz4gXT8gfHwgPCdib3JkZXItaW1hZ2UtcmVwZWF0Jz4iLHJlbGV2YW5jZTo1MixyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYm9yZGVyLWltYWdlIn1dLGRlc2NyaXB0aW9uOiJTaG9ydGhhbmQgcHJvcGVydHkgZm9yIHNldHRpbmcgJ2JvcmRlci1pbWFnZS1zb3VyY2UnLCAnYm9yZGVyLWltYWdlLXNsaWNlJywgJ2JvcmRlci1pbWFnZS13aWR0aCcsICdib3JkZXItaW1hZ2Utb3V0c2V0JyBhbmQgJ2JvcmRlci1pbWFnZS1yZXBlYXQnLiBPbWl0dGVkIHZhbHVlcyBhcmUgc2V0IHRvIHRoZWlyIGluaXRpYWwgdmFsdWVzLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwicGVyY2VudGFnZSIsIm51bWJlciIsInVybCIsImVudW0iXX0se25hbWU6ImJvcmRlci1pbWFnZS1vdXRzZXQiLGJyb3dzZXJzOlsiRTEyIiwiRkYxNSIsIlM2IiwiQzE1IiwiSUUxMSIsIk8xNSJdLHN5bnRheDoiWyA8bGVuZ3RoPiB8IDxudW1iZXI+IF17MSw0fSIscmVsZXZhbmNlOjUwLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9ib3JkZXItaW1hZ2Utb3V0c2V0In1dLGRlc2NyaXB0aW9uOiJUaGUgdmFsdWVzIHNwZWNpZnkgdGhlIGFtb3VudCBieSB3aGljaCB0aGUgYm9yZGVyIGltYWdlIGFyZWEgZXh0ZW5kcyBiZXlvbmQgdGhlIGJvcmRlciBib3ggb24gdGhlIHRvcCwgcmlnaHQsIGJvdHRvbSwgYW5kIGxlZnQgc2lkZXMgcmVzcGVjdGl2ZWx5LiBJZiB0aGUgZm91cnRoIHZhbHVlIGlzIGFic2VudCwgaXQgaXMgdGhlIHNhbWUgYXMgdGhlIHNlY29uZC4gSWYgdGhlIHRoaXJkIG9uZSBpcyBhbHNvIGFic2VudCwgaXQgaXMgdGhlIHNhbWUgYXMgdGhlIGZpcnN0LiBJZiB0aGUgc2Vjb25kIG9uZSBpcyBhbHNvIGFic2VudCwgaXQgaXMgdGhlIHNhbWUgYXMgdGhlIGZpcnN0LiBOdW1iZXJzIHJlcHJlc2VudCBtdWx0aXBsZXMgb2YgdGhlIGNvcnJlc3BvbmRpbmcgYm9yZGVyLXdpZHRoLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwibnVtYmVyIl19LHtuYW1lOiJib3JkZXItaW1hZ2UtcmVwZWF0Iixicm93c2VyczpbIkUxMiIsIkZGMTUiLCJTNiIsIkMxNSIsIklFMTEiLCJPMTUiXSx2YWx1ZXM6W3tuYW1lOiJyZXBlYXQiLGRlc2NyaXB0aW9uOiJUaGUgaW1hZ2UgaXMgdGlsZWQgKHJlcGVhdGVkKSB0byBmaWxsIHRoZSBhcmVhLiJ9LHtuYW1lOiJyb3VuZCIsZGVzY3JpcHRpb246IlRoZSBpbWFnZSBpcyB0aWxlZCAocmVwZWF0ZWQpIHRvIGZpbGwgdGhlIGFyZWEuIElmIGl0IGRvZXMgbm90IGZpbGwgdGhlIGFyZWEgd2l0aCBhIHdob2xlIG51bWJlciBvZiB0aWxlcywgdGhlIGltYWdlIGlzIHJlc2NhbGVkIHNvIHRoYXQgaXQgZG9lcy4ifSx7bmFtZToic3BhY2UiLGRlc2NyaXB0aW9uOiJUaGUgaW1hZ2UgaXMgdGlsZWQgKHJlcGVhdGVkKSB0byBmaWxsIHRoZSBhcmVhLiBJZiBpdCBkb2VzIG5vdCBmaWxsIHRoZSBhcmVhIHdpdGggYSB3aG9sZSBudW1iZXIgb2YgdGlsZXMsIHRoZSBleHRyYSBzcGFjZSBpcyBkaXN0cmlidXRlZCBhcm91bmQgdGhlIHRpbGVzLiJ9LHtuYW1lOiJzdHJldGNoIixkZXNjcmlwdGlvbjoiVGhlIGltYWdlIGlzIHN0cmV0Y2hlZCB0byBmaWxsIHRoZSBhcmVhLiJ9XSxzeW50YXg6Ilsgc3RyZXRjaCB8IHJlcGVhdCB8IHJvdW5kIHwgc3BhY2UgXXsxLDJ9IixyZWxldmFuY2U6NTAscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2JvcmRlci1pbWFnZS1yZXBlYXQifV0sZGVzY3JpcHRpb246IlNwZWNpZmllcyBob3cgdGhlIGltYWdlcyBmb3IgdGhlIHNpZGVzIGFuZCB0aGUgbWlkZGxlIHBhcnQgb2YgdGhlIGJvcmRlciBpbWFnZSBhcmUgc2NhbGVkIGFuZCB0aWxlZC4gSWYgdGhlIHNlY29uZCBrZXl3b3JkIGlzIGFic2VudCwgaXQgaXMgYXNzdW1lZCB0byBiZSB0aGUgc2FtZSBhcyB0aGUgZmlyc3QuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJib3JkZXItaW1hZ2Utc2xpY2UiLGJyb3dzZXJzOlsiRTEyIiwiRkYxNSIsIlM2IiwiQzE1IiwiSUUxMSIsIk8xNSJdLHZhbHVlczpbe25hbWU6ImZpbGwiLGRlc2NyaXB0aW9uOiJDYXVzZXMgdGhlIG1pZGRsZSBwYXJ0IG9mIHRoZSBib3JkZXItaW1hZ2UgdG8gYmUgcHJlc2VydmVkLiJ9XSxzeW50YXg6IjxudW1iZXItcGVyY2VudGFnZT57MSw0fSAmJiBmaWxsPyIscmVsZXZhbmNlOjUwLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9ib3JkZXItaW1hZ2Utc2xpY2UifV0sZGVzY3JpcHRpb246IlNwZWNpZmllcyBpbndhcmQgb2Zmc2V0cyBmcm9tIHRoZSB0b3AsIHJpZ2h0LCBib3R0b20sIGFuZCBsZWZ0IGVkZ2VzIG9mIHRoZSBpbWFnZSwgZGl2aWRpbmcgaXQgaW50byBuaW5lIHJlZ2lvbnM6IGZvdXIgY29ybmVycywgZm91ciBlZGdlcyBhbmQgYSBtaWRkbGUuIixyZXN0cmljdGlvbnM6WyJudW1iZXIiLCJwZXJjZW50YWdlIl19LHtuYW1lOiJib3JkZXItaW1hZ2Utc291cmNlIixicm93c2VyczpbIkUxMiIsIkZGMTUiLCJTNiIsIkMxNSIsIklFMTEiLCJPMTUiXSx2YWx1ZXM6W3tuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiVXNlIHRoZSBib3JkZXIgc3R5bGVzLiJ9XSxzeW50YXg6Im5vbmUgfCA8aW1hZ2U+IixyZWxldmFuY2U6NTAscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2JvcmRlci1pbWFnZS1zb3VyY2UifV0sZGVzY3JpcHRpb246IlNwZWNpZmllcyBhbiBpbWFnZSB0byB1c2UgaW5zdGVhZCBvZiB0aGUgYm9yZGVyIHN0eWxlcyBnaXZlbiBieSB0aGUgJ2JvcmRlci1zdHlsZScgcHJvcGVydGllcyBhbmQgYXMgYW4gYWRkaXRpb25hbCBiYWNrZ3JvdW5kIGxheWVyIGZvciB0aGUgZWxlbWVudC4gSWYgdGhlIHZhbHVlIGlzICdub25lJyBvciBpZiB0aGUgaW1hZ2UgY2Fubm90IGJlIGRpc3BsYXllZCwgdGhlIGJvcmRlciBzdHlsZXMgd2lsbCBiZSB1c2VkLiIscmVzdHJpY3Rpb25zOlsiaW1hZ2UiXX0se25hbWU6ImJvcmRlci1pbWFnZS13aWR0aCIsYnJvd3NlcnM6WyJFMTIiLCJGRjEzIiwiUzYiLCJDMTUiLCJJRTExIiwiTzE1Il0sdmFsdWVzOlt7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IlRoZSBib3JkZXIgaW1hZ2Ugd2lkdGggaXMgdGhlIGludHJpbnNpYyB3aWR0aCBvciBoZWlnaHQgKHdoaWNoZXZlciBpcyBhcHBsaWNhYmxlKSBvZiB0aGUgY29ycmVzcG9uZGluZyBpbWFnZSBzbGljZS4gSWYgdGhlIGltYWdlIGRvZXMgbm90IGhhdmUgdGhlIHJlcXVpcmVkIGludHJpbnNpYyBkaW1lbnNpb24gdGhlbiB0aGUgY29ycmVzcG9uZGluZyBib3JkZXItd2lkdGggaXMgdXNlZCBpbnN0ZWFkLiJ9XSxzeW50YXg6IlsgPGxlbmd0aC1wZXJjZW50YWdlPiB8IDxudW1iZXI+IHwgYXV0byBdezEsNH0iLHJlbGV2YW5jZTo1MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYm9yZGVyLWltYWdlLXdpZHRoIn1dLGRlc2NyaXB0aW9uOiJUaGUgZm91ciB2YWx1ZXMgb2YgJ2JvcmRlci1pbWFnZS13aWR0aCcgc3BlY2lmeSBvZmZzZXRzIHRoYXQgYXJlIHVzZWQgdG8gZGl2aWRlIHRoZSBib3JkZXIgaW1hZ2UgYXJlYSBpbnRvIG5pbmUgcGFydHMuIFRoZXkgcmVwcmVzZW50IGlud2FyZCBkaXN0YW5jZXMgZnJvbSB0aGUgdG9wLCByaWdodCwgYm90dG9tLCBhbmQgbGVmdCBzaWRlcyBvZiB0aGUgYXJlYSwgcmVzcGVjdGl2ZWx5LiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwicGVyY2VudGFnZSIsIm51bWJlciJdfSx7bmFtZToiYm9yZGVyLWlubGluZS1lbmQiLGJyb3dzZXJzOlsiRTc5IiwiRkY0MSIsIlMxMi4xIiwiQzY5IiwiTzU2Il0sc3ludGF4OiI8J2JvcmRlci10b3Atd2lkdGgnPiB8fCA8J2JvcmRlci10b3Atc3R5bGUnPiB8fCA8Y29sb3I+IixyZWxldmFuY2U6NTAscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2JvcmRlci1pbmxpbmUtZW5kIn1dLGRlc2NyaXB0aW9uOiJMb2dpY2FsICdib3JkZXItcmlnaHQnLiBNYXBwaW5nIGRlcGVuZHMgb24gdGhlIHBhcmVudCBlbGVtZW50J3MgJ3dyaXRpbmctbW9kZScsICdkaXJlY3Rpb24nLCBhbmQgJ3RleHQtb3JpZW50YXRpb24nLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwibGluZS13aWR0aCIsImxpbmUtc3R5bGUiLCJjb2xvciJdfSx7bmFtZToiYm9yZGVyLWlubGluZS1zdGFydCIsYnJvd3NlcnM6WyJFNzkiLCJGRjQxIiwiUzEyLjEiLCJDNjkiLCJPNTYiXSxzeW50YXg6IjwnYm9yZGVyLXRvcC13aWR0aCc+IHx8IDwnYm9yZGVyLXRvcC1zdHlsZSc+IHx8IDxjb2xvcj4iLHJlbGV2YW5jZTo1MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYm9yZGVyLWlubGluZS1zdGFydCJ9XSxkZXNjcmlwdGlvbjoiTG9naWNhbCAnYm9yZGVyLWxlZnQnLiBNYXBwaW5nIGRlcGVuZHMgb24gdGhlIHBhcmVudCBlbGVtZW50J3MgJ3dyaXRpbmctbW9kZScsICdkaXJlY3Rpb24nLCBhbmQgJ3RleHQtb3JpZW50YXRpb24nLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwibGluZS13aWR0aCIsImxpbmUtc3R5bGUiLCJjb2xvciJdfSx7bmFtZToiYm9yZGVyLWlubGluZS1lbmQtY29sb3IiLGJyb3dzZXJzOlsiRTc5IiwiRkY0MSIsIlMxMi4xIiwiQzY5IiwiTzU2Il0sc3ludGF4OiI8J2JvcmRlci10b3AtY29sb3InPiIscmVsZXZhbmNlOjUwLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9ib3JkZXItaW5saW5lLWVuZC1jb2xvciJ9XSxkZXNjcmlwdGlvbjoiTG9naWNhbCAnYm9yZGVyLXJpZ2h0LWNvbG9yJy4gTWFwcGluZyBkZXBlbmRzIG9uIHRoZSBwYXJlbnQgZWxlbWVudCdzICd3cml0aW5nLW1vZGUnLCAnZGlyZWN0aW9uJywgYW5kICd0ZXh0LW9yaWVudGF0aW9uJy4iLHJlc3RyaWN0aW9uczpbImNvbG9yIl19LHtuYW1lOiJib3JkZXItaW5saW5lLXN0YXJ0LWNvbG9yIixicm93c2VyczpbIkU3OSIsIkZGNDEiLCJTMTIuMSIsIkM2OSIsIk81NiJdLHN5bnRheDoiPCdib3JkZXItdG9wLWNvbG9yJz4iLHJlbGV2YW5jZTo1MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYm9yZGVyLWlubGluZS1zdGFydC1jb2xvciJ9XSxkZXNjcmlwdGlvbjoiTG9naWNhbCAnYm9yZGVyLWxlZnQtY29sb3InLiBNYXBwaW5nIGRlcGVuZHMgb24gdGhlIHBhcmVudCBlbGVtZW50J3MgJ3dyaXRpbmctbW9kZScsICdkaXJlY3Rpb24nLCBhbmQgJ3RleHQtb3JpZW50YXRpb24nLiIscmVzdHJpY3Rpb25zOlsiY29sb3IiXX0se25hbWU6ImJvcmRlci1pbmxpbmUtZW5kLXN0eWxlIixicm93c2VyczpbIkU3OSIsIkZGNDEiLCJTMTIuMSIsIkM2OSIsIk81NiJdLHN5bnRheDoiPCdib3JkZXItdG9wLXN0eWxlJz4iLHJlbGV2YW5jZTo1MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYm9yZGVyLWlubGluZS1lbmQtc3R5bGUifV0sZGVzY3JpcHRpb246IkxvZ2ljYWwgJ2JvcmRlci1yaWdodC1zdHlsZScuIE1hcHBpbmcgZGVwZW5kcyBvbiB0aGUgcGFyZW50IGVsZW1lbnQncyAnd3JpdGluZy1tb2RlJywgJ2RpcmVjdGlvbicsIGFuZCAndGV4dC1vcmllbnRhdGlvbicuIixyZXN0cmljdGlvbnM6WyJsaW5lLXN0eWxlIl19LHtuYW1lOiJib3JkZXItaW5saW5lLXN0YXJ0LXN0eWxlIixicm93c2VyczpbIkU3OSIsIkZGNDEiLCJTMTIuMSIsIkM2OSIsIk81NiJdLHN5bnRheDoiPCdib3JkZXItdG9wLXN0eWxlJz4iLHJlbGV2YW5jZTo1MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYm9yZGVyLWlubGluZS1zdGFydC1zdHlsZSJ9XSxkZXNjcmlwdGlvbjoiTG9naWNhbCAnYm9yZGVyLWxlZnQtc3R5bGUnLiBNYXBwaW5nIGRlcGVuZHMgb24gdGhlIHBhcmVudCBlbGVtZW50J3MgJ3dyaXRpbmctbW9kZScsICdkaXJlY3Rpb24nLCBhbmQgJ3RleHQtb3JpZW50YXRpb24nLiIscmVzdHJpY3Rpb25zOlsibGluZS1zdHlsZSJdfSx7bmFtZToiYm9yZGVyLWlubGluZS1lbmQtd2lkdGgiLGJyb3dzZXJzOlsiRTc5IiwiRkY0MSIsIlMxMi4xIiwiQzY5IiwiTzU2Il0sc3ludGF4OiI8J2JvcmRlci10b3Atd2lkdGgnPiIscmVsZXZhbmNlOjUwLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9ib3JkZXItaW5saW5lLWVuZC13aWR0aCJ9XSxkZXNjcmlwdGlvbjoiTG9naWNhbCAnYm9yZGVyLXJpZ2h0LXdpZHRoJy4gTWFwcGluZyBkZXBlbmRzIG9uIHRoZSBwYXJlbnQgZWxlbWVudCdzICd3cml0aW5nLW1vZGUnLCAnZGlyZWN0aW9uJywgYW5kICd0ZXh0LW9yaWVudGF0aW9uJy4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsImxpbmUtd2lkdGgiXX0se25hbWU6ImJvcmRlci1pbmxpbmUtc3RhcnQtd2lkdGgiLGJyb3dzZXJzOlsiRTc5IiwiRkY0MSIsIlMxMi4xIiwiQzY5IiwiTzU2Il0sc3ludGF4OiI8J2JvcmRlci10b3Atd2lkdGgnPiIscmVsZXZhbmNlOjUwLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9ib3JkZXItaW5saW5lLXN0YXJ0LXdpZHRoIn1dLGRlc2NyaXB0aW9uOiJMb2dpY2FsICdib3JkZXItbGVmdC13aWR0aCcuIE1hcHBpbmcgZGVwZW5kcyBvbiB0aGUgcGFyZW50IGVsZW1lbnQncyAnd3JpdGluZy1tb2RlJywgJ2RpcmVjdGlvbicsIGFuZCAndGV4dC1vcmllbnRhdGlvbicuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJsaW5lLXdpZHRoIl19LHtuYW1lOiJib3JkZXItbGVmdCIsYnJvd3NlcnM6WyJFMTIiLCJGRjEiLCJTMSIsIkMxIiwiSUU0IiwiTzMuNSJdLHN5bnRheDoiPGxpbmUtd2lkdGg+IHx8IDxsaW5lLXN0eWxlPiB8fCA8Y29sb3I+IixyZWxldmFuY2U6ODEscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2JvcmRlci1sZWZ0In1dLGRlc2NyaXB0aW9uOiJTaG9ydGhhbmQgcHJvcGVydHkgZm9yIHNldHRpbmcgYm9yZGVyIHdpZHRoLCBzdHlsZSBhbmQgY29sb3IiLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsImxpbmUtd2lkdGgiLCJsaW5lLXN0eWxlIiwiY29sb3IiXX0se25hbWU6ImJvcmRlci1sZWZ0LWNvbG9yIixicm93c2VyczpbIkUxMiIsIkZGMSIsIlMxIiwiQzEiLCJJRTQiLCJPMy41Il0sc3ludGF4OiI8Y29sb3I+IixyZWxldmFuY2U6NjcscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2JvcmRlci1sZWZ0LWNvbG9yIn1dLGRlc2NyaXB0aW9uOiJTZXRzIHRoZSBjb2xvciBvZiB0aGUgbGVmdCBib3JkZXIuIixyZXN0cmljdGlvbnM6WyJjb2xvciJdfSx7bmFtZToiYm9yZGVyLWxlZnQtc3R5bGUiLGJyb3dzZXJzOlsiRTEyIiwiRkYxIiwiUzEiLCJDMSIsIklFNS41IiwiTzkuMiJdLHN5bnRheDoiPGxpbmUtc3R5bGU+IixyZWxldmFuY2U6NTQscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2JvcmRlci1sZWZ0LXN0eWxlIn1dLGRlc2NyaXB0aW9uOiJTZXRzIHRoZSBzdHlsZSBvZiB0aGUgbGVmdCBib3JkZXIuIixyZXN0cmljdGlvbnM6WyJsaW5lLXN0eWxlIl19LHtuYW1lOiJib3JkZXItbGVmdC13aWR0aCIsYnJvd3NlcnM6WyJFMTIiLCJGRjEiLCJTMSIsIkMxIiwiSUU0IiwiTzMuNSJdLHN5bnRheDoiPGxpbmUtd2lkdGg+IixyZWxldmFuY2U6NjMscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2JvcmRlci1sZWZ0LXdpZHRoIn1dLGRlc2NyaXB0aW9uOiJTZXRzIHRoZSB0aGlja25lc3Mgb2YgdGhlIGxlZnQgYm9yZGVyLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwibGluZS13aWR0aCJdfSx7bmFtZToiYm9yZGVyLXJhZGl1cyIsYnJvd3NlcnM6WyJFMTIiLCJGRjQiLCJTNSIsIkM0IiwiSUU5IiwiTzEwLjUiXSxzeW50YXg6IjxsZW5ndGgtcGVyY2VudGFnZT57MSw0fSBbIC8gPGxlbmd0aC1wZXJjZW50YWdlPnsxLDR9IF0/IixyZWxldmFuY2U6OTIscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2JvcmRlci1yYWRpdXMifV0sZGVzY3JpcHRpb246IkRlZmluZXMgdGhlIHJhZGlpIG9mIHRoZSBvdXRlciBib3JkZXIgZWRnZS4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsInBlcmNlbnRhZ2UiXX0se25hbWU6ImJvcmRlci1yaWdodCIsYnJvd3NlcnM6WyJFMTIiLCJGRjEiLCJTMSIsIkMxIiwiSUU1LjUiLCJPOS4yIl0sc3ludGF4OiI8bGluZS13aWR0aD4gfHwgPGxpbmUtc3R5bGU+IHx8IDxjb2xvcj4iLHJlbGV2YW5jZTo4MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYm9yZGVyLXJpZ2h0In1dLGRlc2NyaXB0aW9uOiJTaG9ydGhhbmQgcHJvcGVydHkgZm9yIHNldHRpbmcgYm9yZGVyIHdpZHRoLCBzdHlsZSBhbmQgY29sb3IiLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsImxpbmUtd2lkdGgiLCJsaW5lLXN0eWxlIiwiY29sb3IiXX0se25hbWU6ImJvcmRlci1yaWdodC1jb2xvciIsYnJvd3NlcnM6WyJFMTIiLCJGRjEiLCJTMSIsIkMxIiwiSUU0IiwiTzMuNSJdLHN5bnRheDoiPGNvbG9yPiIscmVsZXZhbmNlOjY2LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9ib3JkZXItcmlnaHQtY29sb3IifV0sZGVzY3JpcHRpb246IlNldHMgdGhlIGNvbG9yIG9mIHRoZSByaWdodCBib3JkZXIuIixyZXN0cmljdGlvbnM6WyJjb2xvciJdfSx7bmFtZToiYm9yZGVyLXJpZ2h0LXN0eWxlIixicm93c2VyczpbIkUxMiIsIkZGMSIsIlMxIiwiQzEiLCJJRTUuNSIsIk85LjIiXSxzeW50YXg6IjxsaW5lLXN0eWxlPiIscmVsZXZhbmNlOjUzLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9ib3JkZXItcmlnaHQtc3R5bGUifV0sZGVzY3JpcHRpb246IlNldHMgdGhlIHN0eWxlIG9mIHRoZSByaWdodCBib3JkZXIuIixyZXN0cmljdGlvbnM6WyJsaW5lLXN0eWxlIl19LHtuYW1lOiJib3JkZXItcmlnaHQtd2lkdGgiLGJyb3dzZXJzOlsiRTEyIiwiRkYxIiwiUzEiLCJDMSIsIklFNCIsIk8zLjUiXSxzeW50YXg6IjxsaW5lLXdpZHRoPiIscmVsZXZhbmNlOjYzLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9ib3JkZXItcmlnaHQtd2lkdGgifV0sZGVzY3JpcHRpb246IlNldHMgdGhlIHRoaWNrbmVzcyBvZiB0aGUgcmlnaHQgYm9yZGVyLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwibGluZS13aWR0aCJdfSx7bmFtZToiYm9yZGVyLXNwYWNpbmciLGJyb3dzZXJzOlsiRTEyIiwiRkYxIiwiUzEiLCJDMSIsIklFOCIsIk80Il0sc3ludGF4OiI8bGVuZ3RoPiA8bGVuZ3RoPj8iLHJlbGV2YW5jZTo2NyxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYm9yZGVyLXNwYWNpbmcifV0sZGVzY3JpcHRpb246IlRoZSBsZW5ndGhzIHNwZWNpZnkgdGhlIGRpc3RhbmNlIHRoYXQgc2VwYXJhdGVzIGFkam9pbmluZyBjZWxsIGJvcmRlcnMuIElmIG9uZSBsZW5ndGggaXMgc3BlY2lmaWVkLCBpdCBnaXZlcyBib3RoIHRoZSBob3Jpem9udGFsIGFuZCB2ZXJ0aWNhbCBzcGFjaW5nLiBJZiB0d28gYXJlIHNwZWNpZmllZCwgdGhlIGZpcnN0IGdpdmVzIHRoZSBob3Jpem9udGFsIHNwYWNpbmcgYW5kIHRoZSBzZWNvbmQgdGhlIHZlcnRpY2FsIHNwYWNpbmcuIExlbmd0aHMgbWF5IG5vdCBiZSBuZWdhdGl2ZS4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCJdfSx7bmFtZToiYm9yZGVyLXN0eWxlIixicm93c2VyczpbIkUxMiIsIkZGMSIsIlMxIiwiQzEiLCJJRTQiLCJPMy41Il0sdmFsdWVzOltdLHN5bnRheDoiPGxpbmUtc3R5bGU+ezEsNH0iLHJlbGV2YW5jZTo3OSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYm9yZGVyLXN0eWxlIn1dLGRlc2NyaXB0aW9uOiJUaGUgc3R5bGUgb2YgdGhlIGJvcmRlciBhcm91bmQgZWRnZXMgb2YgYW4gZWxlbWVudC4iLHJlc3RyaWN0aW9uczpbImxpbmUtc3R5bGUiXX0se25hbWU6ImJvcmRlci10b3AiLGJyb3dzZXJzOlsiRTEyIiwiRkYxIiwiUzEiLCJDMSIsIklFNCIsIk8zLjUiXSxzeW50YXg6IjxsaW5lLXdpZHRoPiB8fCA8bGluZS1zdHlsZT4gfHwgPGNvbG9yPiIscmVsZXZhbmNlOjg2LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9ib3JkZXItdG9wIn1dLGRlc2NyaXB0aW9uOiJTaG9ydGhhbmQgcHJvcGVydHkgZm9yIHNldHRpbmcgYm9yZGVyIHdpZHRoLCBzdHlsZSBhbmQgY29sb3IiLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsImxpbmUtd2lkdGgiLCJsaW5lLXN0eWxlIiwiY29sb3IiXX0se25hbWU6ImJvcmRlci10b3AtY29sb3IiLGJyb3dzZXJzOlsiRTEyIiwiRkYxIiwiUzEiLCJDMSIsIklFNCIsIk8zLjUiXSxzeW50YXg6Ijxjb2xvcj4iLHJlbGV2YW5jZTo3MSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYm9yZGVyLXRvcC1jb2xvciJ9XSxkZXNjcmlwdGlvbjoiU2V0cyB0aGUgY29sb3Igb2YgdGhlIHRvcCBib3JkZXIuIixyZXN0cmljdGlvbnM6WyJjb2xvciJdfSx7bmFtZToiYm9yZGVyLXRvcC1sZWZ0LXJhZGl1cyIsYnJvd3NlcnM6WyJFMTIiLCJGRjQiLCJTNSIsIkM0IiwiSUU5IiwiTzEwLjUiXSxzeW50YXg6IjxsZW5ndGgtcGVyY2VudGFnZT57MSwyfSIscmVsZXZhbmNlOjc1LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9ib3JkZXItdG9wLWxlZnQtcmFkaXVzIn1dLGRlc2NyaXB0aW9uOiJEZWZpbmVzIHRoZSByYWRpaSBvZiB0aGUgdG9wIGxlZnQgb3V0ZXIgYm9yZGVyIGVkZ2UuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJwZXJjZW50YWdlIl19LHtuYW1lOiJib3JkZXItdG9wLXJpZ2h0LXJhZGl1cyIsYnJvd3NlcnM6WyJFMTIiLCJGRjQiLCJTNSIsIkM0IiwiSUU5IiwiTzEwLjUiXSxzeW50YXg6IjxsZW5ndGgtcGVyY2VudGFnZT57MSwyfSIscmVsZXZhbmNlOjc1LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9ib3JkZXItdG9wLXJpZ2h0LXJhZGl1cyJ9XSxkZXNjcmlwdGlvbjoiRGVmaW5lcyB0aGUgcmFkaWkgb2YgdGhlIHRvcCByaWdodCBvdXRlciBib3JkZXIgZWRnZS4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsInBlcmNlbnRhZ2UiXX0se25hbWU6ImJvcmRlci10b3Atc3R5bGUiLGJyb3dzZXJzOlsiRTEyIiwiRkYxIiwiUzEiLCJDMSIsIklFNS41IiwiTzkuMiJdLHN5bnRheDoiPGxpbmUtc3R5bGU+IixyZWxldmFuY2U6NTgscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2JvcmRlci10b3Atc3R5bGUifV0sZGVzY3JpcHRpb246IlNldHMgdGhlIHN0eWxlIG9mIHRoZSB0b3AgYm9yZGVyLiIscmVzdHJpY3Rpb25zOlsibGluZS1zdHlsZSJdfSx7bmFtZToiYm9yZGVyLXRvcC13aWR0aCIsYnJvd3NlcnM6WyJFMTIiLCJGRjEiLCJTMSIsIkMxIiwiSUU0IiwiTzMuNSJdLHN5bnRheDoiPGxpbmUtd2lkdGg+IixyZWxldmFuY2U6NjEscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2JvcmRlci10b3Atd2lkdGgifV0sZGVzY3JpcHRpb246IlNldHMgdGhlIHRoaWNrbmVzcyBvZiB0aGUgdG9wIGJvcmRlci4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsImxpbmUtd2lkdGgiXX0se25hbWU6ImJvcmRlci13aWR0aCIsYnJvd3NlcnM6WyJFMTIiLCJGRjEiLCJTMSIsIkMxIiwiSUU0IiwiTzMuNSJdLHZhbHVlczpbXSxzeW50YXg6IjxsaW5lLXdpZHRoPnsxLDR9IixyZWxldmFuY2U6ODIscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2JvcmRlci13aWR0aCJ9XSxkZXNjcmlwdGlvbjoiU2hvcnRoYW5kIHRoYXQgc2V0cyB0aGUgZm91ciAnYm9yZGVyLSotd2lkdGgnIHByb3BlcnRpZXMuIElmIGl0IGhhcyBmb3VyIHZhbHVlcywgdGhleSBzZXQgdG9wLCByaWdodCwgYm90dG9tIGFuZCBsZWZ0IGluIHRoYXQgb3JkZXIuIElmIGxlZnQgaXMgbWlzc2luZywgaXQgaXMgdGhlIHNhbWUgYXMgcmlnaHQ7IGlmIGJvdHRvbSBpcyBtaXNzaW5nLCBpdCBpcyB0aGUgc2FtZSBhcyB0b3A7IGlmIHJpZ2h0IGlzIG1pc3NpbmcsIGl0IGlzIHRoZSBzYW1lIGFzIHRvcC4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsImxpbmUtd2lkdGgiXX0se25hbWU6ImJvdHRvbSIsYnJvd3NlcnM6WyJFMTIiLCJGRjEiLCJTMSIsIkMxIiwiSUU1IiwiTzYiXSx2YWx1ZXM6W3tuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiRm9yIG5vbi1yZXBsYWNlZCBlbGVtZW50cywgdGhlIGVmZmVjdCBvZiB0aGlzIHZhbHVlIGRlcGVuZHMgb24gd2hpY2ggb2YgcmVsYXRlZCBwcm9wZXJ0aWVzIGhhdmUgdGhlIHZhbHVlICdhdXRvJyBhcyB3ZWxsIn1dLHN5bnRheDoiPGxlbmd0aD4gfCA8cGVyY2VudGFnZT4gfCBhdXRvIixyZWxldmFuY2U6OTAscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2JvdHRvbSJ9XSxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGhvdyBmYXIgYW4gYWJzb2x1dGVseSBwb3NpdGlvbmVkIGJveCdzIGJvdHRvbSBtYXJnaW4gZWRnZSBpcyBvZmZzZXQgYWJvdmUgdGhlIGJvdHRvbSBlZGdlIG9mIHRoZSBib3gncyAnY29udGFpbmluZyBibG9jaycuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJwZXJjZW50YWdlIl19LHtuYW1lOiJib3gtZGVjb3JhdGlvbi1icmVhayIsYnJvd3NlcnM6WyJFNzkiLCJGRjMyIiwiUzciLCJDMjIiLCJPMTUiXSx2YWx1ZXM6W3tuYW1lOiJjbG9uZSIsZGVzY3JpcHRpb246IkVhY2ggYm94IGlzIGluZGVwZW5kZW50bHkgd3JhcHBlZCB3aXRoIHRoZSBib3JkZXIgYW5kIHBhZGRpbmcuIn0se25hbWU6InNsaWNlIixkZXNjcmlwdGlvbjoiVGhlIGVmZmVjdCBpcyBhcyB0aG91Z2ggdGhlIGVsZW1lbnQgd2VyZSByZW5kZXJlZCB3aXRoIG5vIGJyZWFrcyBwcmVzZW50LCBhbmQgdGhlbiBzbGljZWQgYnkgdGhlIGJyZWFrcyBhZnRlcndhcmQuIn1dLHN5bnRheDoic2xpY2UgfCBjbG9uZSIscmVsZXZhbmNlOjUwLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9ib3gtZGVjb3JhdGlvbi1icmVhayJ9XSxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIHdoZXRoZXIgaW5kaXZpZHVhbCBib3hlcyBhcmUgdHJlYXRlZCBhcyBicm9rZW4gcGllY2VzIG9mIG9uZSBjb250aW51b3VzIGJveCwgb3Igd2hldGhlciBlYWNoIGJveCBpcyBpbmRpdmlkdWFsbHkgd3JhcHBlZCB3aXRoIHRoZSBib3JkZXIgYW5kIHBhZGRpbmcuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJib3gtc2hhZG93Iixicm93c2VyczpbIkUxMiIsIkZGNCIsIlM1LjEiLCJDMTAiLCJJRTkiLCJPMTAuNSJdLHZhbHVlczpbe25hbWU6Imluc2V0IixkZXNjcmlwdGlvbjoiQ2hhbmdlcyB0aGUgZHJvcCBzaGFkb3cgZnJvbSBhbiBvdXRlciBzaGFkb3cgKG9uZSB0aGF0IHNoYWRvd3MgdGhlIGJveCBvbnRvIHRoZSBjYW52YXMsIGFzIGlmIGl0IHdlcmUgbGlmdGVkIGFib3ZlIHRoZSBjYW52YXMpIHRvIGFuIGlubmVyIHNoYWRvdyAob25lIHRoYXQgc2hhZG93cyB0aGUgY2FudmFzIG9udG8gdGhlIGJveCwgYXMgaWYgdGhlIGJveCB3ZXJlIGN1dCBvdXQgb2YgdGhlIGNhbnZhcyBhbmQgc2hpZnRlZCBiZWhpbmQgaXQpLiJ9LHtuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiTm8gc2hhZG93LiJ9XSxzeW50YXg6Im5vbmUgfCA8c2hhZG93PiMiLHJlbGV2YW5jZTo5MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYm94LXNoYWRvdyJ9XSxkZXNjcmlwdGlvbjoiQXR0YWNoZXMgb25lIG9yIG1vcmUgZHJvcC1zaGFkb3dzIHRvIHRoZSBib3guIFRoZSBwcm9wZXJ0eSBpcyBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIHNoYWRvd3MsIGVhY2ggc3BlY2lmaWVkIGJ5IDItNCBsZW5ndGggdmFsdWVzLCBhbiBvcHRpb25hbCBjb2xvciwgYW5kIGFuIG9wdGlvbmFsICdpbnNldCcga2V5d29yZC4gT21pdHRlZCBsZW5ndGhzIGFyZSAwOyBvbWl0dGVkIGNvbG9ycyBhcmUgYSB1c2VyIGFnZW50IGNob3NlbiBjb2xvci4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsImNvbG9yIiwiZW51bSJdfSx7bmFtZToiYm94LXNpemluZyIsYnJvd3NlcnM6WyJFMTIiLCJGRjI5IiwiUzUuMSIsIkMxMCIsIklFOCIsIk83Il0sdmFsdWVzOlt7bmFtZToiYm9yZGVyLWJveCIsZGVzY3JpcHRpb246IlRoZSBzcGVjaWZpZWQgd2lkdGggYW5kIGhlaWdodCAoYW5kIHJlc3BlY3RpdmUgbWluL21heCBwcm9wZXJ0aWVzKSBvbiB0aGlzIGVsZW1lbnQgZGV0ZXJtaW5lIHRoZSBib3JkZXIgYm94IG9mIHRoZSBlbGVtZW50LiJ9LHtuYW1lOiJjb250ZW50LWJveCIsZGVzY3JpcHRpb246IkJlaGF2aW9yIG9mIHdpZHRoIGFuZCBoZWlnaHQgYXMgc3BlY2lmaWVkIGJ5IENTUzIuMS4gVGhlIHNwZWNpZmllZCB3aWR0aCBhbmQgaGVpZ2h0IChhbmQgcmVzcGVjdGl2ZSBtaW4vbWF4IHByb3BlcnRpZXMpIGFwcGx5IHRvIHRoZSB3aWR0aCBhbmQgaGVpZ2h0IHJlc3BlY3RpdmVseSBvZiB0aGUgY29udGVudCBib3ggb2YgdGhlIGVsZW1lbnQuIn1dLHN5bnRheDoiY29udGVudC1ib3ggfCBib3JkZXItYm94IixyZWxldmFuY2U6OTIscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2JveC1zaXppbmcifV0sZGVzY3JpcHRpb246IlNwZWNpZmllcyB0aGUgYmVoYXZpb3Igb2YgdGhlICd3aWR0aCcgYW5kICdoZWlnaHQnIHByb3BlcnRpZXMuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJicmVhay1hZnRlciIsYnJvd3NlcnM6WyJFMTIiLCJGRjY1IiwiUzEwIiwiQzUwIiwiSUUxMCIsIk8zNyJdLHZhbHVlczpbe25hbWU6ImFsd2F5cyIsZGVzY3JpcHRpb246IkFsd2F5cyBmb3JjZSBhIHBhZ2UgYnJlYWsgYmVmb3JlL2FmdGVyIHRoZSBnZW5lcmF0ZWQgYm94LiJ9LHtuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiTmVpdGhlciBmb3JjZSBub3IgZm9yYmlkIGEgcGFnZS9jb2x1bW4gYnJlYWsgYmVmb3JlL2FmdGVyIHRoZSBwcmluY2lwYWwgYm94LiJ9LHtuYW1lOiJhdm9pZCIsZGVzY3JpcHRpb246IkF2b2lkIGEgYnJlYWsgYmVmb3JlL2FmdGVyIHRoZSBwcmluY2lwYWwgYm94LiJ9LHtuYW1lOiJhdm9pZC1jb2x1bW4iLGRlc2NyaXB0aW9uOiJBdm9pZCBhIGNvbHVtbiBicmVhayBiZWZvcmUvYWZ0ZXIgdGhlIHByaW5jaXBhbCBib3guIn0se25hbWU6ImF2b2lkLXBhZ2UiLGRlc2NyaXB0aW9uOiJBdm9pZCBhIHBhZ2UgYnJlYWsgYmVmb3JlL2FmdGVyIHRoZSBwcmluY2lwYWwgYm94LiJ9LHtuYW1lOiJjb2x1bW4iLGRlc2NyaXB0aW9uOiJBbHdheXMgZm9yY2UgYSBjb2x1bW4gYnJlYWsgYmVmb3JlL2FmdGVyIHRoZSBwcmluY2lwYWwgYm94LiJ9LHtuYW1lOiJsZWZ0IixkZXNjcmlwdGlvbjoiRm9yY2Ugb25lIG9yIHR3byBwYWdlIGJyZWFrcyBiZWZvcmUvYWZ0ZXIgdGhlIGdlbmVyYXRlZCBib3ggc28gdGhhdCB0aGUgbmV4dCBwYWdlIGlzIGZvcm1hdHRlZCBhcyBhIGxlZnQgcGFnZS4ifSx7bmFtZToicGFnZSIsZGVzY3JpcHRpb246IkFsd2F5cyBmb3JjZSBhIHBhZ2UgYnJlYWsgYmVmb3JlL2FmdGVyIHRoZSBwcmluY2lwYWwgYm94LiJ9LHtuYW1lOiJyaWdodCIsZGVzY3JpcHRpb246IkZvcmNlIG9uZSBvciB0d28gcGFnZSBicmVha3MgYmVmb3JlL2FmdGVyIHRoZSBnZW5lcmF0ZWQgYm94IHNvIHRoYXQgdGhlIG5leHQgcGFnZSBpcyBmb3JtYXR0ZWQgYXMgYSByaWdodCBwYWdlLiJ9XSxzeW50YXg6ImF1dG8gfCBhdm9pZCB8IGFsd2F5cyB8IGFsbCB8IGF2b2lkLXBhZ2UgfCBwYWdlIHwgbGVmdCB8IHJpZ2h0IHwgcmVjdG8gfCB2ZXJzbyB8IGF2b2lkLWNvbHVtbiB8IGNvbHVtbiB8IGF2b2lkLXJlZ2lvbiB8IHJlZ2lvbiIscmVsZXZhbmNlOjUwLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9icmVhay1hZnRlciJ9XSxkZXNjcmlwdGlvbjoiRGVzY3JpYmVzIHRoZSBwYWdlL2NvbHVtbi9yZWdpb24gYnJlYWsgYmVoYXZpb3IgYWZ0ZXIgdGhlIGdlbmVyYXRlZCBib3guIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJicmVhay1iZWZvcmUiLGJyb3dzZXJzOlsiRTEyIiwiRkY2NSIsIlMxMCIsIkM1MCIsIklFMTAiLCJPMzciXSx2YWx1ZXM6W3tuYW1lOiJhbHdheXMiLGRlc2NyaXB0aW9uOiJBbHdheXMgZm9yY2UgYSBwYWdlIGJyZWFrIGJlZm9yZS9hZnRlciB0aGUgZ2VuZXJhdGVkIGJveC4ifSx7bmFtZToiYXV0byIsZGVzY3JpcHRpb246Ik5laXRoZXIgZm9yY2Ugbm9yIGZvcmJpZCBhIHBhZ2UvY29sdW1uIGJyZWFrIGJlZm9yZS9hZnRlciB0aGUgcHJpbmNpcGFsIGJveC4ifSx7bmFtZToiYXZvaWQiLGRlc2NyaXB0aW9uOiJBdm9pZCBhIGJyZWFrIGJlZm9yZS9hZnRlciB0aGUgcHJpbmNpcGFsIGJveC4ifSx7bmFtZToiYXZvaWQtY29sdW1uIixkZXNjcmlwdGlvbjoiQXZvaWQgYSBjb2x1bW4gYnJlYWsgYmVmb3JlL2FmdGVyIHRoZSBwcmluY2lwYWwgYm94LiJ9LHtuYW1lOiJhdm9pZC1wYWdlIixkZXNjcmlwdGlvbjoiQXZvaWQgYSBwYWdlIGJyZWFrIGJlZm9yZS9hZnRlciB0aGUgcHJpbmNpcGFsIGJveC4ifSx7bmFtZToiY29sdW1uIixkZXNjcmlwdGlvbjoiQWx3YXlzIGZvcmNlIGEgY29sdW1uIGJyZWFrIGJlZm9yZS9hZnRlciB0aGUgcHJpbmNpcGFsIGJveC4ifSx7bmFtZToibGVmdCIsZGVzY3JpcHRpb246IkZvcmNlIG9uZSBvciB0d28gcGFnZSBicmVha3MgYmVmb3JlL2FmdGVyIHRoZSBnZW5lcmF0ZWQgYm94IHNvIHRoYXQgdGhlIG5leHQgcGFnZSBpcyBmb3JtYXR0ZWQgYXMgYSBsZWZ0IHBhZ2UuIn0se25hbWU6InBhZ2UiLGRlc2NyaXB0aW9uOiJBbHdheXMgZm9yY2UgYSBwYWdlIGJyZWFrIGJlZm9yZS9hZnRlciB0aGUgcHJpbmNpcGFsIGJveC4ifSx7bmFtZToicmlnaHQiLGRlc2NyaXB0aW9uOiJGb3JjZSBvbmUgb3IgdHdvIHBhZ2UgYnJlYWtzIGJlZm9yZS9hZnRlciB0aGUgZ2VuZXJhdGVkIGJveCBzbyB0aGF0IHRoZSBuZXh0IHBhZ2UgaXMgZm9ybWF0dGVkIGFzIGEgcmlnaHQgcGFnZS4ifV0sc3ludGF4OiJhdXRvIHwgYXZvaWQgfCBhbHdheXMgfCBhbGwgfCBhdm9pZC1wYWdlIHwgcGFnZSB8IGxlZnQgfCByaWdodCB8IHJlY3RvIHwgdmVyc28gfCBhdm9pZC1jb2x1bW4gfCBjb2x1bW4gfCBhdm9pZC1yZWdpb24gfCByZWdpb24iLHJlbGV2YW5jZTo1MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYnJlYWstYmVmb3JlIn1dLGRlc2NyaXB0aW9uOiJEZXNjcmliZXMgdGhlIHBhZ2UvY29sdW1uL3JlZ2lvbiBicmVhayBiZWhhdmlvciBiZWZvcmUgdGhlIGdlbmVyYXRlZCBib3guIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJicmVhay1pbnNpZGUiLGJyb3dzZXJzOlsiRTEyIiwiRkY2NSIsIlMxMCIsIkM1MCIsIklFMTAiLCJPMzciXSx2YWx1ZXM6W3tuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiSW1wb3NlIG5vIGFkZGl0aW9uYWwgYnJlYWtpbmcgY29uc3RyYWludHMgd2l0aGluIHRoZSBib3guIn0se25hbWU6ImF2b2lkIixkZXNjcmlwdGlvbjoiQXZvaWQgYnJlYWtzIHdpdGhpbiB0aGUgYm94LiJ9LHtuYW1lOiJhdm9pZC1jb2x1bW4iLGRlc2NyaXB0aW9uOiJBdm9pZCBhIGNvbHVtbiBicmVhayB3aXRoaW4gdGhlIGJveC4ifSx7bmFtZToiYXZvaWQtcGFnZSIsZGVzY3JpcHRpb246IkF2b2lkIGEgcGFnZSBicmVhayB3aXRoaW4gdGhlIGJveC4ifV0sc3ludGF4OiJhdXRvIHwgYXZvaWQgfCBhdm9pZC1wYWdlIHwgYXZvaWQtY29sdW1uIHwgYXZvaWQtcmVnaW9uIixyZWxldmFuY2U6NTEscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2JyZWFrLWluc2lkZSJ9XSxkZXNjcmlwdGlvbjoiRGVzY3JpYmVzIHRoZSBwYWdlL2NvbHVtbi9yZWdpb24gYnJlYWsgYmVoYXZpb3IgaW5zaWRlIHRoZSBwcmluY2lwYWwgYm94LiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiY2FwdGlvbi1zaWRlIixicm93c2VyczpbIkUxMiIsIkZGMSIsIlMxIiwiQzEiLCJJRTgiLCJPNCJdLHZhbHVlczpbe25hbWU6ImJvdHRvbSIsZGVzY3JpcHRpb246IlBvc2l0aW9ucyB0aGUgY2FwdGlvbiBib3ggYmVsb3cgdGhlIHRhYmxlIGJveC4ifSx7bmFtZToidG9wIixkZXNjcmlwdGlvbjoiUG9zaXRpb25zIHRoZSBjYXB0aW9uIGJveCBhYm92ZSB0aGUgdGFibGUgYm94LiJ9XSxzeW50YXg6InRvcCB8IGJvdHRvbSB8IGJsb2NrLXN0YXJ0IHwgYmxvY2stZW5kIHwgaW5saW5lLXN0YXJ0IHwgaW5saW5lLWVuZCIscmVsZXZhbmNlOjUyLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9jYXB0aW9uLXNpZGUifV0sZGVzY3JpcHRpb246IlNwZWNpZmllcyB0aGUgcG9zaXRpb24gb2YgdGhlIGNhcHRpb24gYm94IHdpdGggcmVzcGVjdCB0byB0aGUgdGFibGUgYm94LiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiY2FyZXQtY29sb3IiLGJyb3dzZXJzOlsiRTc5IiwiRkY1MyIsIlMxMS4xIiwiQzU3IiwiTzQ0Il0sdmFsdWVzOlt7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IlRoZSB1c2VyIGFnZW50IHNlbGVjdHMgYW4gYXBwcm9wcmlhdGUgY29sb3IgZm9yIHRoZSBjYXJldC4gVGhpcyBpcyBnZW5lcmFsbHkgY3VycmVudGNvbG9yLCBidXQgdGhlIHVzZXIgYWdlbnQgbWF5IGNob29zZSBhIGRpZmZlcmVudCBjb2xvciB0byBlbnN1cmUgZ29vZCB2aXNpYmlsaXR5IGFuZCBjb250cmFzdCB3aXRoIHRoZSBzdXJyb3VuZGluZyBjb250ZW50LCB0YWtpbmcgaW50byBhY2NvdW50IHRoZSB2YWx1ZSBvZiBjdXJyZW50Y29sb3IsIHRoZSBiYWNrZ3JvdW5kLCBzaGFkb3dzLCBhbmQgb3RoZXIgZmFjdG9ycy4ifV0sc3ludGF4OiJhdXRvIHwgPGNvbG9yPiIscmVsZXZhbmNlOjUzLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9jYXJldC1jb2xvciJ9XSxkZXNjcmlwdGlvbjoiQ29udHJvbHMgdGhlIGNvbG9yIG9mIHRoZSB0ZXh0IGluc2VydGlvbiBpbmRpY2F0b3IuIixyZXN0cmljdGlvbnM6WyJjb2xvciIsImVudW0iXX0se25hbWU6ImNsZWFyIixicm93c2VyczpbIkUxMiIsIkZGMSIsIlMxIiwiQzEiLCJJRTQiLCJPMy41Il0sdmFsdWVzOlt7bmFtZToiYm90aCIsZGVzY3JpcHRpb246IlRoZSBjbGVhcmFuY2Ugb2YgdGhlIGdlbmVyYXRlZCBib3ggaXMgc2V0IHRvIHRoZSBhbW91bnQgbmVjZXNzYXJ5IHRvIHBsYWNlIHRoZSB0b3AgYm9yZGVyIGVkZ2UgYmVsb3cgdGhlIGJvdHRvbSBvdXRlciBlZGdlIG9mIGFueSByaWdodC1mbG9hdGluZyBhbmQgbGVmdC1mbG9hdGluZyBib3hlcyB0aGF0IHJlc3VsdGVkIGZyb20gZWxlbWVudHMgZWFybGllciBpbiB0aGUgc291cmNlIGRvY3VtZW50LiJ9LHtuYW1lOiJsZWZ0IixkZXNjcmlwdGlvbjoiVGhlIGNsZWFyYW5jZSBvZiB0aGUgZ2VuZXJhdGVkIGJveCBpcyBzZXQgdG8gdGhlIGFtb3VudCBuZWNlc3NhcnkgdG8gcGxhY2UgdGhlIHRvcCBib3JkZXIgZWRnZSBiZWxvdyB0aGUgYm90dG9tIG91dGVyIGVkZ2Ugb2YgYW55IGxlZnQtZmxvYXRpbmcgYm94ZXMgdGhhdCByZXN1bHRlZCBmcm9tIGVsZW1lbnRzIGVhcmxpZXIgaW4gdGhlIHNvdXJjZSBkb2N1bWVudC4ifSx7bmFtZToibm9uZSIsZGVzY3JpcHRpb246Ik5vIGNvbnN0cmFpbnQgb24gdGhlIGJveCdzIHBvc2l0aW9uIHdpdGggcmVzcGVjdCB0byBmbG9hdHMuIn0se25hbWU6InJpZ2h0IixkZXNjcmlwdGlvbjoiVGhlIGNsZWFyYW5jZSBvZiB0aGUgZ2VuZXJhdGVkIGJveCBpcyBzZXQgdG8gdGhlIGFtb3VudCBuZWNlc3NhcnkgdG8gcGxhY2UgdGhlIHRvcCBib3JkZXIgZWRnZSBiZWxvdyB0aGUgYm90dG9tIG91dGVyIGVkZ2Ugb2YgYW55IHJpZ2h0LWZsb2F0aW5nIGJveGVzIHRoYXQgcmVzdWx0ZWQgZnJvbSBlbGVtZW50cyBlYXJsaWVyIGluIHRoZSBzb3VyY2UgZG9jdW1lbnQuIn1dLHN5bnRheDoibm9uZSB8IGxlZnQgfCByaWdodCB8IGJvdGggfCBpbmxpbmUtc3RhcnQgfCBpbmxpbmUtZW5kIixyZWxldmFuY2U6ODMscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2NsZWFyIn1dLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgd2hpY2ggc2lkZXMgb2YgYW4gZWxlbWVudCdzIGJveChlcykgbWF5IG5vdCBiZSBhZGphY2VudCB0byBhbiBlYXJsaWVyIGZsb2F0aW5nIGJveC4gVGhlICdjbGVhcicgcHJvcGVydHkgZG9lcyBub3QgY29uc2lkZXIgZmxvYXRzIGluc2lkZSB0aGUgZWxlbWVudCBpdHNlbGYgb3IgaW4gb3RoZXIgYmxvY2sgZm9ybWF0dGluZyBjb250ZXh0cy4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6ImNsaXAiLGJyb3dzZXJzOlsiRTEyIiwiRkYxIiwiUzEiLCJDMSIsIklFNCIsIk83Il0sdmFsdWVzOlt7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IlRoZSBlbGVtZW50IGRvZXMgbm90IGNsaXAuIn0se25hbWU6InJlY3QoKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBvZmZzZXRzIGZyb20gdGhlIGVkZ2VzIG9mIHRoZSBib3JkZXIgYm94LiJ9XSxzeW50YXg6IjxzaGFwZT4gfCBhdXRvIixyZWxldmFuY2U6NzQscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2NsaXAifV0sZGVzY3JpcHRpb246IkRlcHJlY2F0ZWQuIFVzZSB0aGUgJ2NsaXAtcGF0aCcgcHJvcGVydHkgd2hlbiBzdXBwb3J0IGFsbG93cy4gRGVmaW5lcyB0aGUgdmlzaWJsZSBwb3J0aW9uIG9mIGFuIGVsZW1lbnQncyBib3guIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJjbGlwLXBhdGgiLGJyb3dzZXJzOlsiRTc5IiwiRkYzLjUiLCJTOS4xIiwiQzU1IiwiSUUxMCIsIk80MiJdLHZhbHVlczpbe25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJObyBjbGlwcGluZyBwYXRoIGdldHMgY3JlYXRlZC4ifSx7bmFtZToidXJsKCkiLGRlc2NyaXB0aW9uOiJSZWZlcmVuY2VzIGEgPGNsaXBQYXRoPiBlbGVtZW50IHRvIGNyZWF0ZSBhIGNsaXBwaW5nIHBhdGguIn1dLHN5bnRheDoiPGNsaXAtc291cmNlPiB8IFsgPGJhc2ljLXNoYXBlPiB8fCA8Z2VvbWV0cnktYm94PiBdIHwgbm9uZSIscmVsZXZhbmNlOjY0LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9jbGlwLXBhdGgifV0sZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIGNsaXBwaW5nIHBhdGggd2hlcmUgZXZlcnl0aGluZyBpbnNpZGUgdGhlIHBhdGggaXMgdmlzaWJsZSBhbmQgZXZlcnl0aGluZyBvdXRzaWRlIGlzIGNsaXBwZWQgb3V0LiIscmVzdHJpY3Rpb25zOlsidXJsIiwic2hhcGUiLCJnZW9tZXRyeS1ib3giLCJlbnVtIl19LHtuYW1lOiJjbGlwLXJ1bGUiLGJyb3dzZXJzOlsiRTgwIiwiRkY3MiIsIlMxMy4xIiwiQzgwIiwiTzY3Il0sdmFsdWVzOlt7bmFtZToiZXZlbm9kZCIsZGVzY3JpcHRpb246IkRldGVybWluZXMgdGhlICdpbnNpZGVuZXNzJyBvZiBhIHBvaW50IG9uIHRoZSBjYW52YXMgYnkgZHJhd2luZyBhIHJheSBmcm9tIHRoYXQgcG9pbnQgdG8gaW5maW5pdHkgaW4gYW55IGRpcmVjdGlvbiBhbmQgY291bnRpbmcgdGhlIG51bWJlciBvZiBwYXRoIHNlZ21lbnRzIGZyb20gdGhlIGdpdmVuIHNoYXBlIHRoYXQgdGhlIHJheSBjcm9zc2VzLiJ9LHtuYW1lOiJub256ZXJvIixkZXNjcmlwdGlvbjoiRGV0ZXJtaW5lcyB0aGUgJ2luc2lkZW5lc3MnIG9mIGEgcG9pbnQgb24gdGhlIGNhbnZhcyBieSBkcmF3aW5nIGEgcmF5IGZyb20gdGhhdCBwb2ludCB0byBpbmZpbml0eSBpbiBhbnkgZGlyZWN0aW9uIGFuZCB0aGVuIGV4YW1pbmluZyB0aGUgcGxhY2VzIHdoZXJlIGEgc2VnbWVudCBvZiB0aGUgc2hhcGUgY3Jvc3NlcyB0aGUgcmF5LiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkluZGljYXRlcyB0aGUgYWxnb3JpdGhtIHdoaWNoIGlzIHRvIGJlIHVzZWQgdG8gZGV0ZXJtaW5lIHdoYXQgcGFydHMgb2YgdGhlIGNhbnZhcyBhcmUgaW5jbHVkZWQgaW5zaWRlIHRoZSBzaGFwZS4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6ImNvbG9yIixicm93c2VyczpbIkUxMiIsIkZGMSIsIlMxIiwiQzEiLCJJRTMiLCJPMy41Il0sc3ludGF4OiI8Y29sb3I+IixyZWxldmFuY2U6OTQscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2NvbG9yIn1dLGRlc2NyaXB0aW9uOiJTZXRzIHRoZSBjb2xvciBvZiBhbiBlbGVtZW50J3MgdGV4dCIscmVzdHJpY3Rpb25zOlsiY29sb3IiXX0se25hbWU6ImNvbG9yLWludGVycG9sYXRpb24tZmlsdGVycyIsYnJvd3NlcnM6WyJFODAiLCJGRjcyIiwiUzEzLjEiLCJDODAiLCJPNjciXSx2YWx1ZXM6W3tuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiQ29sb3Igb3BlcmF0aW9ucyBhcmUgbm90IHJlcXVpcmVkIHRvIG9jY3VyIGluIGEgcGFydGljdWxhciBjb2xvciBzcGFjZS4ifSx7bmFtZToibGluZWFyUkdCIixkZXNjcmlwdGlvbjoiQ29sb3Igb3BlcmF0aW9ucyBzaG91bGQgb2NjdXIgaW4gdGhlIGxpbmVhcml6ZWQgUkdCIGNvbG9yIHNwYWNlLiJ9LHtuYW1lOiJzUkdCIixkZXNjcmlwdGlvbjoiQ29sb3Igb3BlcmF0aW9ucyBzaG91bGQgb2NjdXIgaW4gdGhlIHNSR0IgY29sb3Igc3BhY2UuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIHRoZSBjb2xvciBzcGFjZSBmb3IgaW1hZ2luZyBvcGVyYXRpb25zIHBlcmZvcm1lZCB2aWEgZmlsdGVyIGVmZmVjdHMuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJjb2x1bW4tY291bnQiLGJyb3dzZXJzOlsiRTEyIiwiRkY1MiIsIlM5IiwiQzUwIiwiSUUxMCIsIk8xMS4xIl0sdmFsdWVzOlt7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IkRldGVybWluZXMgdGhlIG51bWJlciBvZiBjb2x1bW5zIGJ5IHRoZSAnY29sdW1uLXdpZHRoJyBwcm9wZXJ0eSBhbmQgdGhlIGVsZW1lbnQgd2lkdGguIn1dLHN5bnRheDoiPGludGVnZXI+IHwgYXV0byIscmVsZXZhbmNlOjUzLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9jb2x1bW4tY291bnQifV0sZGVzY3JpcHRpb246IkRlc2NyaWJlcyB0aGUgb3B0aW1hbCBudW1iZXIgb2YgY29sdW1ucyBpbnRvIHdoaWNoIHRoZSBjb250ZW50IG9mIHRoZSBlbGVtZW50IHdpbGwgYmUgZmxvd2VkLiIscmVzdHJpY3Rpb25zOlsiaW50ZWdlciIsImVudW0iXX0se25hbWU6ImNvbHVtbi1maWxsIixicm93c2VyczpbIkUxMiIsIkZGNTIiLCJTOSIsIkM1MCIsIklFMTAiLCJPMzciXSx2YWx1ZXM6W3tuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiRmlsbHMgY29sdW1ucyBzZXF1ZW50aWFsbHkuIn0se25hbWU6ImJhbGFuY2UiLGRlc2NyaXB0aW9uOiJCYWxhbmNlIGNvbnRlbnQgZXF1YWxseSBiZXR3ZWVuIGNvbHVtbnMsIGlmIHBvc3NpYmxlLiJ9XSxzeW50YXg6ImF1dG8gfCBiYWxhbmNlIHwgYmFsYW5jZS1hbGwiLHJlbGV2YW5jZTo1MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvY29sdW1uLWZpbGwifV0sZGVzY3JpcHRpb246IkluIGNvbnRpbnVvdXMgbWVkaWEsIHRoaXMgcHJvcGVydHkgd2lsbCBvbmx5IGJlIGNvbnN1bHRlZCBpZiB0aGUgbGVuZ3RoIG9mIGNvbHVtbnMgaGFzIGJlZW4gY29uc3RyYWluZWQuIE90aGVyd2lzZSwgY29sdW1ucyB3aWxsIGF1dG9tYXRpY2FsbHkgYmUgYmFsYW5jZWQuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJjb2x1bW4tZ2FwIixicm93c2VyczpbIkUxMiIsIkZGMS41IiwiUzMiLCJDMSIsIklFMTAiLCJPMTEuMSJdLHZhbHVlczpbe25hbWU6Im5vcm1hbCIsZGVzY3JpcHRpb246IlVzZXIgYWdlbnQgc3BlY2lmaWMgYW5kIHR5cGljYWxseSBlcXVpdmFsZW50IHRvIDFlbS4ifV0sc3ludGF4OiJub3JtYWwgfCA8bGVuZ3RoLXBlcmNlbnRhZ2U+IixyZWxldmFuY2U6NjAscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2NvbHVtbi1nYXAifV0sZGVzY3JpcHRpb246IlNldHMgdGhlIGdhcCBiZXR3ZWVuIGNvbHVtbnMuIElmIHRoZXJlIGlzIGEgY29sdW1uIHJ1bGUgYmV0d2VlbiBjb2x1bW5zLCBpdCB3aWxsIGFwcGVhciBpbiB0aGUgbWlkZGxlIG9mIHRoZSBnYXAuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJlbnVtIl19LHtuYW1lOiJjb2x1bW4tcnVsZSIsYnJvd3NlcnM6WyJFMTIiLCJGRjUyIiwiUzkiLCJDNTAiLCJJRTEwIiwiTzExLjEiXSxzeW50YXg6IjwnY29sdW1uLXJ1bGUtd2lkdGgnPiB8fCA8J2NvbHVtbi1ydWxlLXN0eWxlJz4gfHwgPCdjb2x1bW4tcnVsZS1jb2xvcic+IixyZWxldmFuY2U6NTEscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2NvbHVtbi1ydWxlIn1dLGRlc2NyaXB0aW9uOiJTaG9ydGhhbmQgZm9yIHNldHRpbmcgJ2NvbHVtbi1ydWxlLXdpZHRoJywgJ2NvbHVtbi1ydWxlLXN0eWxlJywgYW5kICdjb2x1bW4tcnVsZS1jb2xvcicgYXQgdGhlIHNhbWUgcGxhY2UgaW4gdGhlIHN0eWxlIHNoZWV0LiBPbWl0dGVkIHZhbHVlcyBhcmUgc2V0IHRvIHRoZWlyIGluaXRpYWwgdmFsdWVzLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwibGluZS13aWR0aCIsImxpbmUtc3R5bGUiLCJjb2xvciJdfSx7bmFtZToiY29sdW1uLXJ1bGUtY29sb3IiLGJyb3dzZXJzOlsiRTEyIiwiRkY1MiIsIlM5IiwiQzUwIiwiSUUxMCIsIk8xMS4xIl0sc3ludGF4OiI8Y29sb3I+IixyZWxldmFuY2U6NTAscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2NvbHVtbi1ydWxlLWNvbG9yIn1dLGRlc2NyaXB0aW9uOiJTZXRzIHRoZSBjb2xvciBvZiB0aGUgY29sdW1uIHJ1bGUiLHJlc3RyaWN0aW9uczpbImNvbG9yIl19LHtuYW1lOiJjb2x1bW4tcnVsZS1zdHlsZSIsYnJvd3NlcnM6WyJFMTIiLCJGRjUyIiwiUzkiLCJDNTAiLCJJRTEwIiwiTzExLjEiXSxzeW50YXg6IjwnYm9yZGVyLXN0eWxlJz4iLHJlbGV2YW5jZTo1MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvY29sdW1uLXJ1bGUtc3R5bGUifV0sZGVzY3JpcHRpb246IlNldHMgdGhlIHN0eWxlIG9mIHRoZSBydWxlIGJldHdlZW4gY29sdW1ucyBvZiBhbiBlbGVtZW50LiIscmVzdHJpY3Rpb25zOlsibGluZS1zdHlsZSJdfSx7bmFtZToiY29sdW1uLXJ1bGUtd2lkdGgiLGJyb3dzZXJzOlsiRTEyIiwiRkY1MiIsIlM5IiwiQzUwIiwiSUUxMCIsIk8xMS4xIl0sc3ludGF4OiI8J2JvcmRlci13aWR0aCc+IixyZWxldmFuY2U6NTAscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2NvbHVtbi1ydWxlLXdpZHRoIn1dLGRlc2NyaXB0aW9uOiJTZXRzIHRoZSB3aWR0aCBvZiB0aGUgcnVsZSBiZXR3ZWVuIGNvbHVtbnMuIE5lZ2F0aXZlIHZhbHVlcyBhcmUgbm90IGFsbG93ZWQuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJsaW5lLXdpZHRoIl19LHtuYW1lOiJjb2x1bW5zIixicm93c2VyczpbIkUxMiIsIkZGNTIiLCJTOSIsIkM1MCIsIklFMTAiLCJPMTEuMSJdLHZhbHVlczpbe25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJUaGUgd2lkdGggZGVwZW5kcyBvbiB0aGUgdmFsdWVzIG9mIG90aGVyIHByb3BlcnRpZXMuIn1dLHN5bnRheDoiPCdjb2x1bW4td2lkdGgnPiB8fCA8J2NvbHVtbi1jb3VudCc+IixyZWxldmFuY2U6NTEscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2NvbHVtbnMifV0sZGVzY3JpcHRpb246IkEgc2hvcnRoYW5kIHByb3BlcnR5IHdoaWNoIHNldHMgYm90aCAnY29sdW1uLXdpZHRoJyBhbmQgJ2NvbHVtbi1jb3VudCcuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJpbnRlZ2VyIiwiZW51bSJdfSx7bmFtZToiY29sdW1uLXNwYW4iLGJyb3dzZXJzOlsiRTEyIiwiRkY3MSIsIlM5IiwiQzUwIiwiSUUxMCIsIk8xMS4xIl0sdmFsdWVzOlt7bmFtZToiYWxsIixkZXNjcmlwdGlvbjoiVGhlIGVsZW1lbnQgc3BhbnMgYWNyb3NzIGFsbCBjb2x1bW5zLiBDb250ZW50IGluIHRoZSBub3JtYWwgZmxvdyB0aGF0IGFwcGVhcnMgYmVmb3JlIHRoZSBlbGVtZW50IGlzIGF1dG9tYXRpY2FsbHkgYmFsYW5jZWQgYWNyb3NzIGFsbCBjb2x1bW5zIGJlZm9yZSB0aGUgZWxlbWVudCBhcHBlYXIuIn0se25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJUaGUgZWxlbWVudCBkb2VzIG5vdCBzcGFuIG11bHRpcGxlIGNvbHVtbnMuIn1dLHN5bnRheDoibm9uZSB8IGFsbCIscmVsZXZhbmNlOjUwLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9jb2x1bW4tc3BhbiJ9XSxkZXNjcmlwdGlvbjoiRGVzY3JpYmVzIHRoZSBwYWdlL2NvbHVtbiBicmVhayBiZWhhdmlvciBhZnRlciB0aGUgZ2VuZXJhdGVkIGJveC4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6ImNvbHVtbi13aWR0aCIsYnJvd3NlcnM6WyJFMTIiLCJGRjUwIiwiUzkiLCJDNTAiLCJJRTEwIiwiTzExLjEiXSx2YWx1ZXM6W3tuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiVGhlIHdpZHRoIGRlcGVuZHMgb24gdGhlIHZhbHVlcyBvZiBvdGhlciBwcm9wZXJ0aWVzLiJ9XSxzeW50YXg6IjxsZW5ndGg+IHwgYXV0byIscmVsZXZhbmNlOjUxLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9jb2x1bW4td2lkdGgifV0sZGVzY3JpcHRpb246IkRlc2NyaWJlcyB0aGUgd2lkdGggb2YgY29sdW1ucyBpbiBtdWx0aWNvbCBlbGVtZW50cy4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsImVudW0iXX0se25hbWU6ImNvbnRhaW4iLGJyb3dzZXJzOlsiRTc5IiwiRkY2OSIsIlMxNS40IiwiQzUyIiwiTzM5Il0sdmFsdWVzOlt7bmFtZToibm9uZSIsZGVzY3JpcHRpb246IkluZGljYXRlcyB0aGF0IHRoZSBwcm9wZXJ0eSBoYXMgbm8gZWZmZWN0LiJ9LHtuYW1lOiJzdHJpY3QiLGRlc2NyaXB0aW9uOiJUdXJucyBvbiBhbGwgZm9ybXMgb2YgY29udGFpbm1lbnQgZm9yIHRoZSBlbGVtZW50LiJ9LHtuYW1lOiJjb250ZW50IixkZXNjcmlwdGlvbjoiQWxsIGNvbnRhaW5tZW50IHJ1bGVzIGV4Y2VwdCBzaXplIGFyZSBhcHBsaWVkIHRvIHRoZSBlbGVtZW50LiJ9LHtuYW1lOiJzaXplIixkZXNjcmlwdGlvbjoiRm9yIHByb3BlcnRpZXMgdGhhdCBjYW4gaGF2ZSBlZmZlY3RzIG9uIG1vcmUgdGhhbiBqdXN0IGFuIGVsZW1lbnQgYW5kIGl0cyBkZXNjZW5kYW50cywgdGhvc2UgZWZmZWN0cyBkb24ndCBlc2NhcGUgdGhlIGNvbnRhaW5pbmcgZWxlbWVudC4ifSx7bmFtZToibGF5b3V0IixkZXNjcmlwdGlvbjoiVHVybnMgb24gbGF5b3V0IGNvbnRhaW5tZW50IGZvciB0aGUgZWxlbWVudC4ifSx7bmFtZToic3R5bGUiLGRlc2NyaXB0aW9uOiJUdXJucyBvbiBzdHlsZSBjb250YWlubWVudCBmb3IgdGhlIGVsZW1lbnQuIn0se25hbWU6InBhaW50IixkZXNjcmlwdGlvbjoiVHVybnMgb24gcGFpbnQgY29udGFpbm1lbnQgZm9yIHRoZSBlbGVtZW50LiJ9XSxzeW50YXg6Im5vbmUgfCBzdHJpY3QgfCBjb250ZW50IHwgWyBbIHNpemUgfHwgaW5saW5lLXNpemUgXSB8fCBsYXlvdXQgfHwgc3R5bGUgfHwgcGFpbnQgXSIscmVsZXZhbmNlOjU4LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9jb250YWluIn1dLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgdGhhdCBhbiBlbGVtZW50IGFuZCBpdHMgY29udGVudHMgYXJlLCBhcyBtdWNoIGFzIHBvc3NpYmxlLCBpbmRlcGVuZGVudCBvZiB0aGUgcmVzdCBvZiB0aGUgZG9jdW1lbnQgdHJlZS4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6ImNvbnRlbnQiLGJyb3dzZXJzOlsiRTEyIiwiRkYxIiwiUzEiLCJDMSIsIklFOCIsIk80Il0sdmFsdWVzOlt7bmFtZToiYXR0cigpIixkZXNjcmlwdGlvbjoiVGhlIGF0dHIobikgZnVuY3Rpb24gcmV0dXJucyBhcyBhIHN0cmluZyB0aGUgdmFsdWUgb2YgYXR0cmlidXRlIG4gZm9yIHRoZSBzdWJqZWN0IG9mIHRoZSBzZWxlY3Rvci4ifSx7bmFtZToiY291bnRlcihuYW1lKSIsZGVzY3JpcHRpb246IkNvdW50ZXJzIGFyZSBkZW5vdGVkIGJ5IGlkZW50aWZpZXJzIChzZWUgdGhlICdjb3VudGVyLWluY3JlbWVudCcgYW5kICdjb3VudGVyLXJlc2V0JyBwcm9wZXJ0aWVzKS4ifSx7bmFtZToiaWNvbiIsZGVzY3JpcHRpb246IlRoZSAocHNldWRvLSllbGVtZW50IGlzIHJlcGxhY2VkIGluIGl0cyBlbnRpcmV0eSBieSB0aGUgcmVzb3VyY2UgcmVmZXJlbmNlZCBieSBpdHMgJ2ljb24nIHByb3BlcnR5LCBhbmQgdHJlYXRlZCBhcyBhIHJlcGxhY2VkIGVsZW1lbnQuIn0se25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJPbiBlbGVtZW50cywgdGhpcyBpbmhpYml0cyB0aGUgY2hpbGRyZW4gb2YgdGhlIGVsZW1lbnQgZnJvbSBiZWluZyByZW5kZXJlZCBhcyBjaGlsZHJlbiBvZiB0aGlzIGVsZW1lbnQsIGFzIGlmIHRoZSBlbGVtZW50IHdhcyBlbXB0eS4gT24gcHNldWRvLWVsZW1lbnRzIGl0IGNhdXNlcyB0aGUgcHNldWRvLWVsZW1lbnQgdG8gaGF2ZSBubyBjb250ZW50LiJ9LHtuYW1lOiJub3JtYWwiLGRlc2NyaXB0aW9uOiJTZWUgaHR0cDovL3d3dy53My5vcmcvVFIvY3NzMy1jb250ZW50LyNjb250ZW50IGZvciBjb21wdXRhdGlvbiBydWxlcy4ifSx7bmFtZToidXJsKCkifV0sc3ludGF4OiJub3JtYWwgfCBub25lIHwgWyA8Y29udGVudC1yZXBsYWNlbWVudD4gfCA8Y29udGVudC1saXN0PiBdIFsvIFsgPHN0cmluZz4gfCA8Y291bnRlcj4gXSsgXT8iLHJlbGV2YW5jZTo4OSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvY29udGVudCJ9XSxkZXNjcmlwdGlvbjoiRGV0ZXJtaW5lcyB3aGljaCBwYWdlLWJhc2VkIG9jY3VycmVuY2Ugb2YgYSBnaXZlbiBlbGVtZW50IGlzIGFwcGxpZWQgdG8gYSBjb3VudGVyIG9yIHN0cmluZyB2YWx1ZS4iLHJlc3RyaWN0aW9uczpbInN0cmluZyIsInVybCJdfSx7bmFtZToiY291bnRlci1pbmNyZW1lbnQiLGJyb3dzZXJzOlsiRTEyIiwiRkYxIiwiUzMiLCJDMiIsIklFOCIsIk85LjIiXSx2YWx1ZXM6W3tuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiVGhpcyBlbGVtZW50IGRvZXMgbm90IGFsdGVyIHRoZSB2YWx1ZSBvZiBhbnkgY291bnRlcnMuIn1dLHN5bnRheDoiWyA8Y291bnRlci1uYW1lPiA8aW50ZWdlcj4/IF0rIHwgbm9uZSIscmVsZXZhbmNlOjU0LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9jb3VudGVyLWluY3JlbWVudCJ9XSxkZXNjcmlwdGlvbjoiTWFuaXB1bGF0ZSB0aGUgdmFsdWUgb2YgZXhpc3RpbmcgY291bnRlcnMuIixyZXN0cmljdGlvbnM6WyJpZGVudGlmaWVyIiwiaW50ZWdlciJdfSx7bmFtZToiY291bnRlci1yZXNldCIsYnJvd3NlcnM6WyJFMTIiLCJGRjEiLCJTMyIsIkMyIiwiSUU4IiwiTzkuMiJdLHZhbHVlczpbe25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJUaGUgY291bnRlciBpcyBub3QgbW9kaWZpZWQuIn1dLHN5bnRheDoiWyA8Y291bnRlci1uYW1lPiA8aW50ZWdlcj4/IHwgPHJldmVyc2VkLWNvdW50ZXItbmFtZT4gPGludGVnZXI+PyBdKyB8IG5vbmUiLHJlbGV2YW5jZTo1NCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvY291bnRlci1yZXNldCJ9XSxkZXNjcmlwdGlvbjoiUHJvcGVydHkgYWNjZXB0cyBvbmUgb3IgbW9yZSBuYW1lcyBvZiBjb3VudGVycyAoaWRlbnRpZmllcnMpLCBlYWNoIG9uZSBvcHRpb25hbGx5IGZvbGxvd2VkIGJ5IGFuIGludGVnZXIuIFRoZSBpbnRlZ2VyIGdpdmVzIHRoZSB2YWx1ZSB0aGF0IHRoZSBjb3VudGVyIGlzIHNldCB0byBvbiBlYWNoIG9jY3VycmVuY2Ugb2YgdGhlIGVsZW1lbnQuIixyZXN0cmljdGlvbnM6WyJpZGVudGlmaWVyIiwiaW50ZWdlciJdfSx7bmFtZToiY3Vyc29yIixicm93c2VyczpbIkUxMiIsIkZGMSIsIlMxLjIiLCJDMSIsIklFNCIsIk83Il0sdmFsdWVzOlt7bmFtZToiYWxpYXMiLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgYW4gYWxpYXMgb2Yvc2hvcnRjdXQgdG8gc29tZXRoaW5nIGlzIHRvIGJlIGNyZWF0ZWQuIE9mdGVuIHJlbmRlcmVkIGFzIGFuIGFycm93IHdpdGggYSBzbWFsbCBjdXJ2ZWQgYXJyb3cgbmV4dCB0byBpdC4ifSx7bmFtZToiYWxsLXNjcm9sbCIsZGVzY3JpcHRpb246IkluZGljYXRlcyB0aGF0IHRoZSBzb21ldGhpbmcgY2FuIGJlIHNjcm9sbGVkIGluIGFueSBkaXJlY3Rpb24uIE9mdGVuIHJlbmRlcmVkIGFzIGFycm93cyBwb2ludGluZyB1cCwgZG93biwgbGVmdCwgYW5kIHJpZ2h0IHdpdGggYSBkb3QgaW4gdGhlIG1pZGRsZS4ifSx7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IlRoZSBVQSBkZXRlcm1pbmVzIHRoZSBjdXJzb3IgdG8gZGlzcGxheSBiYXNlZCBvbiB0aGUgY3VycmVudCBjb250ZXh0LiJ9LHtuYW1lOiJjZWxsIixkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIHRoYXQgYSBjZWxsIG9yIHNldCBvZiBjZWxscyBtYXkgYmUgc2VsZWN0ZWQuIE9mdGVuIHJlbmRlcmVkIGFzIGEgdGhpY2sgcGx1cy1zaWduIHdpdGggYSBkb3QgaW4gdGhlIG1pZGRsZS4ifSx7bmFtZToiY29sLXJlc2l6ZSIsZGVzY3JpcHRpb246IkluZGljYXRlcyB0aGF0IHRoZSBpdGVtL2NvbHVtbiBjYW4gYmUgcmVzaXplZCBob3Jpem9udGFsbHkuIE9mdGVuIHJlbmRlcmVkIGFzIGFycm93cyBwb2ludGluZyBsZWZ0IGFuZCByaWdodCB3aXRoIGEgdmVydGljYWwgYmFyIHNlcGFyYXRpbmcgdGhlbS4ifSx7bmFtZToiY29udGV4dC1tZW51IixkZXNjcmlwdGlvbjoiQSBjb250ZXh0IG1lbnUgaXMgYXZhaWxhYmxlIGZvciB0aGUgb2JqZWN0IHVuZGVyIHRoZSBjdXJzb3IuIE9mdGVuIHJlbmRlcmVkIGFzIGFuIGFycm93IHdpdGggYSBzbWFsbCBtZW51LWxpa2UgZ3JhcGhpYyBuZXh0IHRvIGl0LiJ9LHtuYW1lOiJjb3B5IixkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIHNvbWV0aGluZyBpcyB0byBiZSBjb3BpZWQuIE9mdGVuIHJlbmRlcmVkIGFzIGFuIGFycm93IHdpdGggYSBzbWFsbCBwbHVzIHNpZ24gbmV4dCB0byBpdC4ifSx7bmFtZToiY3Jvc3NoYWlyIixkZXNjcmlwdGlvbjoiQSBzaW1wbGUgY3Jvc3NoYWlyIChlLmcuLCBzaG9ydCBsaW5lIHNlZ21lbnRzIHJlc2VtYmxpbmcgYSAnKycgc2lnbikuIE9mdGVuIHVzZWQgdG8gaW5kaWNhdGUgYSB0d28gZGltZW5zaW9uYWwgYml0bWFwIHNlbGVjdGlvbiBtb2RlLiJ9LHtuYW1lOiJkZWZhdWx0IixkZXNjcmlwdGlvbjoiVGhlIHBsYXRmb3JtLWRlcGVuZGVudCBkZWZhdWx0IGN1cnNvci4gT2Z0ZW4gcmVuZGVyZWQgYXMgYW4gYXJyb3cuIn0se25hbWU6ImUtcmVzaXplIixkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIHRoYXQgZWFzdCBlZGdlIGlzIHRvIGJlIG1vdmVkLiJ9LHtuYW1lOiJldy1yZXNpemUiLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgYSBiaWRpcmVjdGlvbmFsIGVhc3Qtd2VzdCByZXNpemUgY3Vyc29yLiJ9LHtuYW1lOiJncmFiIixicm93c2VyczpbIkUxMiIsIkZGMSIsIlMxLjIiLCJDMSIsIklFNCIsIk83Il0sZGVzY3JpcHRpb246IkluZGljYXRlcyB0aGF0IHNvbWV0aGluZyBjYW4gYmUgZ3JhYmJlZC4ifSx7bmFtZToiZ3JhYmJpbmciLGJyb3dzZXJzOlsiRTEyIiwiRkYxIiwiUzEuMiIsIkMxIiwiSUU0IiwiTzciXSxkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIHRoYXQgc29tZXRoaW5nIGlzIGJlaW5nIGdyYWJiZWQuIn0se25hbWU6ImhlbHAiLGRlc2NyaXB0aW9uOiJIZWxwIGlzIGF2YWlsYWJsZSBmb3IgdGhlIG9iamVjdCB1bmRlciB0aGUgY3Vyc29yLiBPZnRlbiByZW5kZXJlZCBhcyBhIHF1ZXN0aW9uIG1hcmsgb3IgYSBiYWxsb29uLiJ9LHtuYW1lOiJtb3ZlIixkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIHNvbWV0aGluZyBpcyB0byBiZSBtb3ZlZC4ifSx7bmFtZToiLW1vei1ncmFiIixicm93c2VyczpbIkUxMiIsIkZGMSIsIlMxLjIiLCJDMSIsIklFNCIsIk83Il0sZGVzY3JpcHRpb246IkluZGljYXRlcyB0aGF0IHNvbWV0aGluZyBjYW4gYmUgZ3JhYmJlZC4ifSx7bmFtZToiLW1vei1ncmFiYmluZyIsYnJvd3NlcnM6WyJFMTIiLCJGRjEiLCJTMS4yIiwiQzEiLCJJRTQiLCJPNyJdLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgdGhhdCBzb21ldGhpbmcgaXMgYmVpbmcgZ3JhYmJlZC4ifSx7bmFtZToiLW1vei16b29tLWluIixicm93c2VyczpbIkUxMiIsIkZGMSIsIlMxLjIiLCJDMSIsIklFNCIsIk83Il0sZGVzY3JpcHRpb246IkluZGljYXRlcyB0aGF0IHNvbWV0aGluZyBjYW4gYmUgem9vbWVkIChtYWduaWZpZWQpIGluLiJ9LHtuYW1lOiItbW96LXpvb20tb3V0Iixicm93c2VyczpbIkUxMiIsIkZGMSIsIlMxLjIiLCJDMSIsIklFNCIsIk83Il0sZGVzY3JpcHRpb246IkluZGljYXRlcyB0aGF0IHNvbWV0aGluZyBjYW4gYmUgem9vbWVkIChtYWduaWZpZWQpIG91dC4ifSx7bmFtZToibmUtcmVzaXplIixkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIHRoYXQgbW92ZW1lbnQgc3RhcnRzIGZyb20gbm9ydGgtZWFzdCBjb3JuZXIuIn0se25hbWU6Im5lc3ctcmVzaXplIixkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIGEgYmlkaXJlY3Rpb25hbCBub3J0aC1lYXN0L3NvdXRoLXdlc3QgY3Vyc29yLiJ9LHtuYW1lOiJuby1kcm9wIixkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIHRoYXQgdGhlIGRyYWdnZWQgaXRlbSBjYW5ub3QgYmUgZHJvcHBlZCBhdCB0aGUgY3VycmVudCBjdXJzb3IgbG9jYXRpb24uIE9mdGVuIHJlbmRlcmVkIGFzIGEgaGFuZCBvciBwb2ludGVyIHdpdGggYSBzbWFsbCBjaXJjbGUgd2l0aCBhIGxpbmUgdGhyb3VnaCBpdC4ifSx7bmFtZToibm9uZSIsZGVzY3JpcHRpb246Ik5vIGN1cnNvciBpcyByZW5kZXJlZCBmb3IgdGhlIGVsZW1lbnQuIn0se25hbWU6Im5vdC1hbGxvd2VkIixkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIHRoYXQgdGhlIHJlcXVlc3RlZCBhY3Rpb24gd2lsbCBub3QgYmUgY2FycmllZCBvdXQuIE9mdGVuIHJlbmRlcmVkIGFzIGEgY2lyY2xlIHdpdGggYSBsaW5lIHRocm91Z2ggaXQuIn0se25hbWU6Im4tcmVzaXplIixkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIHRoYXQgbm9ydGggZWRnZSBpcyB0byBiZSBtb3ZlZC4ifSx7bmFtZToibnMtcmVzaXplIixkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIGEgYmlkaXJlY3Rpb25hbCBub3J0aC1zb3V0aCBjdXJzb3IuIn0se25hbWU6Im53LXJlc2l6ZSIsZGVzY3JpcHRpb246IkluZGljYXRlcyB0aGF0IG1vdmVtZW50IHN0YXJ0cyBmcm9tIG5vcnRoLXdlc3QgY29ybmVyLiJ9LHtuYW1lOiJud3NlLXJlc2l6ZSIsZGVzY3JpcHRpb246IkluZGljYXRlcyBhIGJpZGlyZWN0aW9uYWwgbm9ydGgtd2VzdC9zb3V0aC1lYXN0IGN1cnNvci4ifSx7bmFtZToicG9pbnRlciIsZGVzY3JpcHRpb246IlRoZSBjdXJzb3IgaXMgYSBwb2ludGVyIHRoYXQgaW5kaWNhdGVzIGEgbGluay4ifSx7bmFtZToicHJvZ3Jlc3MiLGRlc2NyaXB0aW9uOiJBIHByb2dyZXNzIGluZGljYXRvci4gVGhlIHByb2dyYW0gaXMgcGVyZm9ybWluZyBzb21lIHByb2Nlc3NpbmcsIGJ1dCBpcyBkaWZmZXJlbnQgZnJvbSAnd2FpdCcgaW4gdGhhdCB0aGUgdXNlciBtYXkgc3RpbGwgaW50ZXJhY3Qgd2l0aCB0aGUgcHJvZ3JhbS4gT2Z0ZW4gcmVuZGVyZWQgYXMgYSBzcGlubmluZyBiZWFjaCBiYWxsLCBvciBhbiBhcnJvdyB3aXRoIGEgd2F0Y2ggb3IgaG91cmdsYXNzLiJ9LHtuYW1lOiJyb3ctcmVzaXplIixkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIHRoYXQgdGhlIGl0ZW0vcm93IGNhbiBiZSByZXNpemVkIHZlcnRpY2FsbHkuIE9mdGVuIHJlbmRlcmVkIGFzIGFycm93cyBwb2ludGluZyB1cCBhbmQgZG93biB3aXRoIGEgaG9yaXpvbnRhbCBiYXIgc2VwYXJhdGluZyB0aGVtLiJ9LHtuYW1lOiJzZS1yZXNpemUiLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgdGhhdCBtb3ZlbWVudCBzdGFydHMgZnJvbSBzb3V0aC1lYXN0IGNvcm5lci4ifSx7bmFtZToicy1yZXNpemUiLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgdGhhdCBzb3V0aCBlZGdlIGlzIHRvIGJlIG1vdmVkLiJ9LHtuYW1lOiJzdy1yZXNpemUiLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgdGhhdCBtb3ZlbWVudCBzdGFydHMgZnJvbSBzb3V0aC13ZXN0IGNvcm5lci4ifSx7bmFtZToidGV4dCIsZGVzY3JpcHRpb246IkluZGljYXRlcyB0ZXh0IHRoYXQgbWF5IGJlIHNlbGVjdGVkLiBPZnRlbiByZW5kZXJlZCBhcyBhIHZlcnRpY2FsIEktYmVhbS4ifSx7bmFtZToidmVydGljYWwtdGV4dCIsZGVzY3JpcHRpb246IkluZGljYXRlcyB2ZXJ0aWNhbC10ZXh0IHRoYXQgbWF5IGJlIHNlbGVjdGVkLiBPZnRlbiByZW5kZXJlZCBhcyBhIGhvcml6b250YWwgSS1iZWFtLiJ9LHtuYW1lOiJ3YWl0IixkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIHRoYXQgdGhlIHByb2dyYW0gaXMgYnVzeSBhbmQgdGhlIHVzZXIgc2hvdWxkIHdhaXQuIE9mdGVuIHJlbmRlcmVkIGFzIGEgd2F0Y2ggb3IgaG91cmdsYXNzLiJ9LHtuYW1lOiItd2Via2l0LWdyYWIiLGJyb3dzZXJzOlsiRTEyIiwiRkYxIiwiUzEuMiIsIkMxIiwiSUU0IiwiTzciXSxkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIHRoYXQgc29tZXRoaW5nIGNhbiBiZSBncmFiYmVkLiJ9LHtuYW1lOiItd2Via2l0LWdyYWJiaW5nIixicm93c2VyczpbIkUxMiIsIkZGMSIsIlMxLjIiLCJDMSIsIklFNCIsIk83Il0sZGVzY3JpcHRpb246IkluZGljYXRlcyB0aGF0IHNvbWV0aGluZyBpcyBiZWluZyBncmFiYmVkLiJ9LHtuYW1lOiItd2Via2l0LXpvb20taW4iLGJyb3dzZXJzOlsiRTEyIiwiRkYxIiwiUzEuMiIsIkMxIiwiSUU0IiwiTzciXSxkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIHRoYXQgc29tZXRoaW5nIGNhbiBiZSB6b29tZWQgKG1hZ25pZmllZCkgaW4uIn0se25hbWU6Ii13ZWJraXQtem9vbS1vdXQiLGJyb3dzZXJzOlsiRTEyIiwiRkYxIiwiUzEuMiIsIkMxIiwiSUU0IiwiTzciXSxkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIHRoYXQgc29tZXRoaW5nIGNhbiBiZSB6b29tZWQgKG1hZ25pZmllZCkgb3V0LiJ9LHtuYW1lOiJ3LXJlc2l6ZSIsZGVzY3JpcHRpb246IkluZGljYXRlcyB0aGF0IHdlc3QgZWRnZSBpcyB0byBiZSBtb3ZlZC4ifSx7bmFtZToiem9vbS1pbiIsYnJvd3NlcnM6WyJFMTIiLCJGRjEiLCJTMS4yIiwiQzEiLCJJRTQiLCJPNyJdLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgdGhhdCBzb21ldGhpbmcgY2FuIGJlIHpvb21lZCAobWFnbmlmaWVkKSBpbi4ifSx7bmFtZToiem9vbS1vdXQiLGJyb3dzZXJzOlsiRTEyIiwiRkYxIiwiUzEuMiIsIkMxIiwiSUU0IiwiTzciXSxkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIHRoYXQgc29tZXRoaW5nIGNhbiBiZSB6b29tZWQgKG1hZ25pZmllZCkgb3V0LiJ9XSxzeW50YXg6IlsgWyA8dXJsPiBbIDx4PiA8eT4gXT8gLCBdKiBbIGF1dG8gfCBkZWZhdWx0IHwgbm9uZSB8IGNvbnRleHQtbWVudSB8IGhlbHAgfCBwb2ludGVyIHwgcHJvZ3Jlc3MgfCB3YWl0IHwgY2VsbCB8IGNyb3NzaGFpciB8IHRleHQgfCB2ZXJ0aWNhbC10ZXh0IHwgYWxpYXMgfCBjb3B5IHwgbW92ZSB8IG5vLWRyb3AgfCBub3QtYWxsb3dlZCB8IGUtcmVzaXplIHwgbi1yZXNpemUgfCBuZS1yZXNpemUgfCBudy1yZXNpemUgfCBzLXJlc2l6ZSB8IHNlLXJlc2l6ZSB8IHN3LXJlc2l6ZSB8IHctcmVzaXplIHwgZXctcmVzaXplIHwgbnMtcmVzaXplIHwgbmVzdy1yZXNpemUgfCBud3NlLXJlc2l6ZSB8IGNvbC1yZXNpemUgfCByb3ctcmVzaXplIHwgYWxsLXNjcm9sbCB8IHpvb20taW4gfCB6b29tLW91dCB8IGdyYWIgfCBncmFiYmluZyBdIF0iLHJlbGV2YW5jZTo5MSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvY3Vyc29yIn1dLGRlc2NyaXB0aW9uOiJBbGxvd3MgY29udHJvbCBvdmVyIGN1cnNvciBhcHBlYXJhbmNlIGluIGFuIGVsZW1lbnQiLHJlc3RyaWN0aW9uczpbInVybCIsIm51bWJlciIsImVudW0iXX0se25hbWU6ImRpcmVjdGlvbiIsYnJvd3NlcnM6WyJFMTIiLCJGRjEiLCJTMSIsIkMyIiwiSUU1LjUiLCJPOS4yIl0sdmFsdWVzOlt7bmFtZToibHRyIixkZXNjcmlwdGlvbjoiTGVmdC10by1yaWdodCBkaXJlY3Rpb24uIn0se25hbWU6InJ0bCIsZGVzY3JpcHRpb246IlJpZ2h0LXRvLWxlZnQgZGlyZWN0aW9uLiJ9XSxzeW50YXg6Imx0ciB8IHJ0bCIscmVsZXZhbmNlOjcxLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9kaXJlY3Rpb24ifV0sZGVzY3JpcHRpb246IlNwZWNpZmllcyB0aGUgaW5saW5lIGJhc2UgZGlyZWN0aW9uIG9yIGRpcmVjdGlvbmFsaXR5IG9mIGFueSBiaWRpIHBhcmFncmFwaCwgZW1iZWRkaW5nLCBpc29sYXRlLCBvciBvdmVycmlkZSBlc3RhYmxpc2hlZCBieSB0aGUgYm94LiBOb3RlOiBmb3IgSFRNTCBjb250ZW50IHVzZSB0aGUgJ2RpcicgYXR0cmlidXRlIGFuZCAnYmRvJyBlbGVtZW50IHJhdGhlciB0aGFuIHRoaXMgcHJvcGVydHkuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJkaXNwbGF5Iixicm93c2VyczpbIkUxMiIsIkZGMSIsIlMxIiwiQzEiLCJJRTQiLCJPNyJdLHZhbHVlczpbe25hbWU6ImJsb2NrIixkZXNjcmlwdGlvbjoiVGhlIGVsZW1lbnQgZ2VuZXJhdGVzIGEgYmxvY2stbGV2ZWwgYm94In0se25hbWU6ImNvbnRlbnRzIixicm93c2VyczpbIkUxMiIsIkZGMSIsIlMxIiwiQzEiLCJJRTQiLCJPNyJdLGRlc2NyaXB0aW9uOiJUaGUgZWxlbWVudCBpdHNlbGYgZG9lcyBub3QgZ2VuZXJhdGUgYW55IGJveGVzLCBidXQgaXRzIGNoaWxkcmVuIGFuZCBwc2V1ZG8tZWxlbWVudHMgc3RpbGwgZ2VuZXJhdGUgYm94ZXMgYXMgbm9ybWFsLiJ9LHtuYW1lOiJmbGV4Iixicm93c2VyczpbIkUxMiIsIkZGMSIsIlMxIiwiQzEiLCJJRTQiLCJPNyJdLGRlc2NyaXB0aW9uOiJUaGUgZWxlbWVudCBnZW5lcmF0ZXMgYSBwcmluY2lwYWwgZmxleCBjb250YWluZXIgYm94IGFuZCBlc3RhYmxpc2hlcyBhIGZsZXggZm9ybWF0dGluZyBjb250ZXh0LiJ9LHtuYW1lOiJmbGV4Ym94Iixicm93c2VyczpbIkUxMiIsIkZGMSIsIlMxIiwiQzEiLCJJRTQiLCJPNyJdLGRlc2NyaXB0aW9uOiJUaGUgZWxlbWVudCBsYXlzIG91dCBpdHMgY29udGVudHMgdXNpbmcgZmxvdyBsYXlvdXQgKGJsb2NrLWFuZC1pbmxpbmUgbGF5b3V0KS4gU3RhbmRhcmRpemVkIGFzICdmbGV4Jy4ifSx7bmFtZToiZmxvdy1yb290Iixicm93c2VyczpbIkUxMiIsIkZGMSIsIlMxIiwiQzEiLCJJRTQiLCJPNyJdLGRlc2NyaXB0aW9uOiJUaGUgZWxlbWVudCBnZW5lcmF0ZXMgYSBibG9jayBjb250YWluZXIgYm94LCBhbmQgbGF5cyBvdXQgaXRzIGNvbnRlbnRzIHVzaW5nIGZsb3cgbGF5b3V0LiJ9LHtuYW1lOiJncmlkIixicm93c2VyczpbIkUxMiIsIkZGMSIsIlMxIiwiQzEiLCJJRTQiLCJPNyJdLGRlc2NyaXB0aW9uOiJUaGUgZWxlbWVudCBnZW5lcmF0ZXMgYSBwcmluY2lwYWwgZ3JpZCBjb250YWluZXIgYm94LCBhbmQgZXN0YWJsaXNoZXMgYSBncmlkIGZvcm1hdHRpbmcgY29udGV4dC4ifSx7bmFtZToiaW5saW5lIixkZXNjcmlwdGlvbjoiVGhlIGVsZW1lbnQgZ2VuZXJhdGVzIGFuIGlubGluZS1sZXZlbCBib3guIn0se25hbWU6ImlubGluZS1ibG9jayIsZGVzY3JpcHRpb246IkEgYmxvY2sgYm94LCB3aGljaCBpdHNlbGYgaXMgZmxvd2VkIGFzIGEgc2luZ2xlIGlubGluZSBib3gsIHNpbWlsYXIgdG8gYSByZXBsYWNlZCBlbGVtZW50LiBUaGUgaW5zaWRlIG9mIGFuIGlubGluZS1ibG9jayBpcyBmb3JtYXR0ZWQgYXMgYSBibG9jayBib3gsIGFuZCB0aGUgYm94IGl0c2VsZiBpcyBmb3JtYXR0ZWQgYXMgYW4gaW5saW5lIGJveC4ifSx7bmFtZToiaW5saW5lLWZsZXgiLGJyb3dzZXJzOlsiRTEyIiwiRkYxIiwiUzEiLCJDMSIsIklFNCIsIk83Il0sZGVzY3JpcHRpb246IklubGluZS1sZXZlbCBmbGV4IGNvbnRhaW5lci4ifSx7bmFtZToiaW5saW5lLWZsZXhib3giLGJyb3dzZXJzOlsiRTEyIiwiRkYxIiwiUzEiLCJDMSIsIklFNCIsIk83Il0sZGVzY3JpcHRpb246IklubGluZS1sZXZlbCBmbGV4IGNvbnRhaW5lci4gU3RhbmRhcmRpemVkIGFzICdpbmxpbmUtZmxleCcifSx7bmFtZToiaW5saW5lLXRhYmxlIixkZXNjcmlwdGlvbjoiSW5saW5lLWxldmVsIHRhYmxlIHdyYXBwZXIgYm94IGNvbnRhaW5pbmcgdGFibGUgYm94LiJ9LHtuYW1lOiJsaXN0LWl0ZW0iLGRlc2NyaXB0aW9uOiJPbmUgb3IgbW9yZSBibG9jayBib3hlcyBhbmQgb25lIG1hcmtlciBib3guIn0se25hbWU6Ii1tb3otYm94Iixicm93c2VyczpbIkUxMiIsIkZGMSIsIlMxIiwiQzEiLCJJRTQiLCJPNyJdLGRlc2NyaXB0aW9uOiJUaGUgZWxlbWVudCBsYXlzIG91dCBpdHMgY29udGVudHMgdXNpbmcgZmxvdyBsYXlvdXQgKGJsb2NrLWFuZC1pbmxpbmUgbGF5b3V0KS4gU3RhbmRhcmRpemVkIGFzICdmbGV4Jy4ifSx7bmFtZToiLW1vei1kZWNrIixicm93c2VyczpbIkUxMiIsIkZGMSIsIlMxIiwiQzEiLCJJRTQiLCJPNyJdfSx7bmFtZToiLW1vei1ncmlkIixicm93c2VyczpbIkUxMiIsIkZGMSIsIlMxIiwiQzEiLCJJRTQiLCJPNyJdfSx7bmFtZToiLW1vei1ncmlkLWdyb3VwIixicm93c2VyczpbIkUxMiIsIkZGMSIsIlMxIiwiQzEiLCJJRTQiLCJPNyJdfSx7bmFtZToiLW1vei1ncmlkLWxpbmUiLGJyb3dzZXJzOlsiRTEyIiwiRkYxIiwiUzEiLCJDMSIsIklFNCIsIk83Il19LHtuYW1lOiItbW96LWdyb3VwYm94Iixicm93c2VyczpbIkUxMiIsIkZGMSIsIlMxIiwiQzEiLCJJRTQiLCJPNyJdfSx7bmFtZToiLW1vei1pbmxpbmUtYm94Iixicm93c2VyczpbIkUxMiIsIkZGMSIsIlMxIiwiQzEiLCJJRTQiLCJPNyJdLGRlc2NyaXB0aW9uOiJJbmxpbmUtbGV2ZWwgZmxleCBjb250YWluZXIuIFN0YW5kYXJkaXplZCBhcyAnaW5saW5lLWZsZXgnIn0se25hbWU6Ii1tb3otaW5saW5lLWdyaWQiLGJyb3dzZXJzOlsiRTEyIiwiRkYxIiwiUzEiLCJDMSIsIklFNCIsIk83Il19LHtuYW1lOiItbW96LWlubGluZS1zdGFjayIsYnJvd3NlcnM6WyJFMTIiLCJGRjEiLCJTMSIsIkMxIiwiSUU0IiwiTzciXX0se25hbWU6Ii1tb3otbWFya2VyIixicm93c2VyczpbIkUxMiIsIkZGMSIsIlMxIiwiQzEiLCJJRTQiLCJPNyJdfSx7bmFtZToiLW1vei1wb3B1cCIsYnJvd3NlcnM6WyJFMTIiLCJGRjEiLCJTMSIsIkMxIiwiSUU0IiwiTzciXX0se25hbWU6Ii1tb3otc3RhY2siLGJyb3dzZXJzOlsiRTEyIiwiRkYxIiwiUzEiLCJDMSIsIklFNCIsIk83Il19LHtuYW1lOiItbXMtZmxleGJveCIsYnJvd3NlcnM6WyJFMTIiLCJGRjEiLCJTMSIsIkMxIiwiSUU0IiwiTzciXSxkZXNjcmlwdGlvbjoiVGhlIGVsZW1lbnQgbGF5cyBvdXQgaXRzIGNvbnRlbnRzIHVzaW5nIGZsb3cgbGF5b3V0IChibG9jay1hbmQtaW5saW5lIGxheW91dCkuIFN0YW5kYXJkaXplZCBhcyAnZmxleCcuIn0se25hbWU6Ii1tcy1ncmlkIixicm93c2VyczpbIkUxMiIsIkZGMSIsIlMxIiwiQzEiLCJJRTQiLCJPNyJdLGRlc2NyaXB0aW9uOiJUaGUgZWxlbWVudCBnZW5lcmF0ZXMgYSBwcmluY2lwYWwgZ3JpZCBjb250YWluZXIgYm94LCBhbmQgZXN0YWJsaXNoZXMgYSBncmlkIGZvcm1hdHRpbmcgY29udGV4dC4ifSx7bmFtZToiLW1zLWlubGluZS1mbGV4Ym94Iixicm93c2VyczpbIkUxMiIsIkZGMSIsIlMxIiwiQzEiLCJJRTQiLCJPNyJdLGRlc2NyaXB0aW9uOiJJbmxpbmUtbGV2ZWwgZmxleCBjb250YWluZXIuIFN0YW5kYXJkaXplZCBhcyAnaW5saW5lLWZsZXgnIn0se25hbWU6Ii1tcy1pbmxpbmUtZ3JpZCIsYnJvd3NlcnM6WyJFMTIiLCJGRjEiLCJTMSIsIkMxIiwiSUU0IiwiTzciXSxkZXNjcmlwdGlvbjoiSW5saW5lLWxldmVsIGdyaWQgY29udGFpbmVyLiJ9LHtuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiVGhlIGVsZW1lbnQgYW5kIGl0cyBkZXNjZW5kYW50cyBnZW5lcmF0ZXMgbm8gYm94ZXMuIn0se25hbWU6InJ1YnkiLGRlc2NyaXB0aW9uOiJUaGUgZWxlbWVudCBnZW5lcmF0ZXMgYSBwcmluY2lwYWwgcnVieSBjb250YWluZXIgYm94LCBhbmQgZXN0YWJsaXNoZXMgYSBydWJ5IGZvcm1hdHRpbmcgY29udGV4dC4ifSx7bmFtZToicnVieS1iYXNlIn0se25hbWU6InJ1YnktYmFzZS1jb250YWluZXIifSx7bmFtZToicnVieS10ZXh0In0se25hbWU6InJ1YnktdGV4dC1jb250YWluZXIifSx7bmFtZToicnVuLWluIixicm93c2VyczpbIkUxMiIsIkZGMSIsIlMxIiwiQzEiLCJJRTQiLCJPNyJdLGRlc2NyaXB0aW9uOiJUaGUgZWxlbWVudCBnZW5lcmF0ZXMgYSBydW4taW4gYm94LiBSdW4taW4gZWxlbWVudHMgYWN0IGxpa2UgaW5saW5lcyBvciBibG9ja3MsIGRlcGVuZGluZyBvbiB0aGUgc3Vycm91bmRpbmcgZWxlbWVudHMuIn0se25hbWU6InRhYmxlIixkZXNjcmlwdGlvbjoiVGhlIGVsZW1lbnQgZ2VuZXJhdGVzIGEgcHJpbmNpcGFsIHRhYmxlIHdyYXBwZXIgYm94IGNvbnRhaW5pbmcgYW4gYWRkaXRpb25hbGx5LWdlbmVyYXRlZCB0YWJsZSBib3gsIGFuZCBlc3RhYmxpc2hlcyBhIHRhYmxlIGZvcm1hdHRpbmcgY29udGV4dC4ifSx7bmFtZToidGFibGUtY2FwdGlvbiJ9LHtuYW1lOiJ0YWJsZS1jZWxsIn0se25hbWU6InRhYmxlLWNvbHVtbiJ9LHtuYW1lOiJ0YWJsZS1jb2x1bW4tZ3JvdXAifSx7bmFtZToidGFibGUtZm9vdGVyLWdyb3VwIn0se25hbWU6InRhYmxlLWhlYWRlci1ncm91cCJ9LHtuYW1lOiJ0YWJsZS1yb3cifSx7bmFtZToidGFibGUtcm93LWdyb3VwIn0se25hbWU6Ii13ZWJraXQtYm94Iixicm93c2VyczpbIkUxMiIsIkZGMSIsIlMxIiwiQzEiLCJJRTQiLCJPNyJdLGRlc2NyaXB0aW9uOiJUaGUgZWxlbWVudCBsYXlzIG91dCBpdHMgY29udGVudHMgdXNpbmcgZmxvdyBsYXlvdXQgKGJsb2NrLWFuZC1pbmxpbmUgbGF5b3V0KS4gU3RhbmRhcmRpemVkIGFzICdmbGV4Jy4ifSx7bmFtZToiLXdlYmtpdC1mbGV4Iixicm93c2VyczpbIkUxMiIsIkZGMSIsIlMxIiwiQzEiLCJJRTQiLCJPNyJdLGRlc2NyaXB0aW9uOiJUaGUgZWxlbWVudCBsYXlzIG91dCBpdHMgY29udGVudHMgdXNpbmcgZmxvdyBsYXlvdXQgKGJsb2NrLWFuZC1pbmxpbmUgbGF5b3V0KS4ifSx7bmFtZToiLXdlYmtpdC1pbmxpbmUtYm94Iixicm93c2VyczpbIkUxMiIsIkZGMSIsIlMxIiwiQzEiLCJJRTQiLCJPNyJdLGRlc2NyaXB0aW9uOiJJbmxpbmUtbGV2ZWwgZmxleCBjb250YWluZXIuIFN0YW5kYXJkaXplZCBhcyAnaW5saW5lLWZsZXgnIn0se25hbWU6Ii13ZWJraXQtaW5saW5lLWZsZXgiLGJyb3dzZXJzOlsiRTEyIiwiRkYxIiwiUzEiLCJDMSIsIklFNCIsIk83Il0sZGVzY3JpcHRpb246IklubGluZS1sZXZlbCBmbGV4IGNvbnRhaW5lci4ifV0sc3ludGF4OiJbIDxkaXNwbGF5LW91dHNpZGU+IHx8IDxkaXNwbGF5LWluc2lkZT4gXSB8IDxkaXNwbGF5LWxpc3RpdGVtPiB8IDxkaXNwbGF5LWludGVybmFsPiB8IDxkaXNwbGF5LWJveD4gfCA8ZGlzcGxheS1sZWdhY3k+IixyZWxldmFuY2U6OTYscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2Rpc3BsYXkifV0sZGVzY3JpcHRpb246IkluIGNvbWJpbmF0aW9uIHdpdGggJ2Zsb2F0JyBhbmQgJ3Bvc2l0aW9uJywgZGV0ZXJtaW5lcyB0aGUgdHlwZSBvZiBib3ggb3IgYm94ZXMgdGhhdCBhcmUgZ2VuZXJhdGVkIGZvciBhbiBlbGVtZW50LiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiZW1wdHktY2VsbHMiLGJyb3dzZXJzOlsiRTEyIiwiRkYxIiwiUzEuMiIsIkMxIiwiSUU4IiwiTzQiXSx2YWx1ZXM6W3tuYW1lOiJoaWRlIixkZXNjcmlwdGlvbjoiTm8gYm9yZGVycyBvciBiYWNrZ3JvdW5kcyBhcmUgZHJhd24gYXJvdW5kL2JlaGluZCBlbXB0eSBjZWxscy4ifSx7bmFtZToiLW1vei1zaG93LWJhY2tncm91bmQiLGJyb3dzZXJzOlsiRTEyIiwiRkYxIiwiUzEuMiIsIkMxIiwiSUU4IiwiTzQiXX0se25hbWU6InNob3ciLGRlc2NyaXB0aW9uOiJCb3JkZXJzIGFuZCBiYWNrZ3JvdW5kcyBhcmUgZHJhd24gYXJvdW5kL2JlaGluZCBlbXB0eSBjZWxscyAobGlrZSBub3JtYWwgY2VsbHMpLiJ9XSxzeW50YXg6InNob3cgfCBoaWRlIixyZWxldmFuY2U6NTEscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2VtcHR5LWNlbGxzIn1dLGRlc2NyaXB0aW9uOiJJbiB0aGUgc2VwYXJhdGVkIGJvcmRlcnMgbW9kZWwsIHRoaXMgcHJvcGVydHkgY29udHJvbHMgdGhlIHJlbmRlcmluZyBvZiBib3JkZXJzIGFuZCBiYWNrZ3JvdW5kcyBhcm91bmQgY2VsbHMgdGhhdCBoYXZlIG5vIHZpc2libGUgY29udGVudC4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6ImVuYWJsZS1iYWNrZ3JvdW5kIix2YWx1ZXM6W3tuYW1lOiJhY2N1bXVsYXRlIixkZXNjcmlwdGlvbjoiSWYgdGhlIGFuY2VzdG9yIGNvbnRhaW5lciBlbGVtZW50IGhhcyBhIHByb3BlcnR5IG9mIG5ldywgdGhlbiBhbGwgZ3JhcGhpY3MgZWxlbWVudHMgd2l0aGluIHRoZSBjdXJyZW50IGNvbnRhaW5lciBhcmUgcmVuZGVyZWQgYm90aCBvbiB0aGUgcGFyZW50J3MgYmFja2dyb3VuZCBpbWFnZSBhbmQgb250byB0aGUgdGFyZ2V0LiJ9LHtuYW1lOiJuZXciLGRlc2NyaXB0aW9uOiJDcmVhdGUgYSBuZXcgYmFja2dyb3VuZCBpbWFnZSBjYW52YXMuIEFsbCBjaGlsZHJlbiBvZiB0aGUgY3VycmVudCBjb250YWluZXIgZWxlbWVudCBjYW4gYWNjZXNzIHRoZSBiYWNrZ3JvdW5kLCBhbmQgdGhleSB3aWxsIGJlIHJlbmRlcmVkIG9udG8gYm90aCB0aGUgcGFyZW50J3MgYmFja2dyb3VuZCBpbWFnZSBjYW52YXMgaW4gYWRkaXRpb24gdG8gdGhlIHRhcmdldCBkZXZpY2UuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiRGVwcmVjYXRlZC4gVXNlICdpc29sYXRpb24nIHByb3BlcnR5IGluc3RlYWQgd2hlbiBzdXBwb3J0IGFsbG93cy4gU3BlY2lmaWVzIGhvdyB0aGUgYWNjdW11bGF0aW9uIG9mIHRoZSBiYWNrZ3JvdW5kIGltYWdlIGlzIG1hbmFnZWQuIixyZXN0cmljdGlvbnM6WyJpbnRlZ2VyIiwibGVuZ3RoIiwicGVyY2VudGFnZSIsImVudW0iXX0se25hbWU6ImZhbGxiYWNrIixicm93c2VyczpbIkZGMzMiXSxhdFJ1bGU6IkBjb3VudGVyLXN0eWxlIixzeW50YXg6Ijxjb3VudGVyLXN0eWxlLW5hbWU+IixyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkBjb3VudGVyLXN0eWxlIGRlc2NyaXB0b3IuIFNwZWNpZmllcyBhIGZhbGxiYWNrIGNvdW50ZXIgc3R5bGUgdG8gYmUgdXNlZCB3aGVuIHRoZSBjdXJyZW50IGNvdW50ZXIgc3R5bGUgY2FuJ3QgY3JlYXRlIGEgcmVwcmVzZW50YXRpb24gZm9yIGEgZ2l2ZW4gY291bnRlciB2YWx1ZS4iLHJlc3RyaWN0aW9uczpbImlkZW50aWZpZXIiXX0se25hbWU6ImZpbGwiLGJyb3dzZXJzOlsiRTgwIiwiRkY3MiIsIlMxMy4xIiwiQzgwIiwiTzY3Il0sdmFsdWVzOlt7bmFtZToidXJsKCkiLGRlc2NyaXB0aW9uOiJBIFVSTCByZWZlcmVuY2UgdG8gYSBwYWludCBzZXJ2ZXIgZWxlbWVudCwgd2hpY2ggaXMgYW4gZWxlbWVudCB0aGF0IGRlZmluZXMgYSBwYWludCBzZXJ2ZXI6ICdoYXRjaCcsICdsaW5lYXJHcmFkaWVudCcsICdtZXNoJywgJ3BhdHRlcm4nLCAncmFkaWFsR3JhZGllbnQnIGFuZCAnc29saWRjb2xvcicuIn0se25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJObyBwYWludCBpcyBhcHBsaWVkIGluIHRoaXMgbGF5ZXIuIn1dLHJlbGV2YW5jZTo3NyxkZXNjcmlwdGlvbjoiUGFpbnRzIHRoZSBpbnRlcmlvciBvZiB0aGUgZ2l2ZW4gZ3JhcGhpY2FsIGVsZW1lbnQuIixyZXN0cmljdGlvbnM6WyJjb2xvciIsImVudW0iLCJ1cmwiXX0se25hbWU6ImZpbGwtb3BhY2l0eSIsYnJvd3NlcnM6WyJFODAiLCJGRjcyIiwiUzEzLjEiLCJDODAiLCJPNjciXSxyZWxldmFuY2U6NTIsZGVzY3JpcHRpb246IlNwZWNpZmllcyB0aGUgb3BhY2l0eSBvZiB0aGUgcGFpbnRpbmcgb3BlcmF0aW9uIHVzZWQgdG8gcGFpbnQgdGhlIGludGVyaW9yIHRoZSBjdXJyZW50IG9iamVjdC4iLHJlc3RyaWN0aW9uczpbIm51bWJlcigwLTEpIl19LHtuYW1lOiJmaWxsLXJ1bGUiLGJyb3dzZXJzOlsiRTgwIiwiRkY3MiIsIlMxMy4xIiwiQzgwIiwiTzY3Il0sdmFsdWVzOlt7bmFtZToiZXZlbm9kZCIsZGVzY3JpcHRpb246IkRldGVybWluZXMgdGhlICdpbnNpZGVuZXNzJyBvZiBhIHBvaW50IG9uIHRoZSBjYW52YXMgYnkgZHJhd2luZyBhIHJheSBmcm9tIHRoYXQgcG9pbnQgdG8gaW5maW5pdHkgaW4gYW55IGRpcmVjdGlvbiBhbmQgY291bnRpbmcgdGhlIG51bWJlciBvZiBwYXRoIHNlZ21lbnRzIGZyb20gdGhlIGdpdmVuIHNoYXBlIHRoYXQgdGhlIHJheSBjcm9zc2VzLiJ9LHtuYW1lOiJub256ZXJvIixkZXNjcmlwdGlvbjoiRGV0ZXJtaW5lcyB0aGUgJ2luc2lkZW5lc3MnIG9mIGEgcG9pbnQgb24gdGhlIGNhbnZhcyBieSBkcmF3aW5nIGEgcmF5IGZyb20gdGhhdCBwb2ludCB0byBpbmZpbml0eSBpbiBhbnkgZGlyZWN0aW9uIGFuZCB0aGVuIGV4YW1pbmluZyB0aGUgcGxhY2VzIHdoZXJlIGEgc2VnbWVudCBvZiB0aGUgc2hhcGUgY3Jvc3NlcyB0aGUgcmF5LiJ9XSxyZWxldmFuY2U6NTEsZGVzY3JpcHRpb246IkluZGljYXRlcyB0aGUgYWxnb3JpdGhtIChvciB3aW5kaW5nIHJ1bGUpIHdoaWNoIGlzIHRvIGJlIHVzZWQgdG8gZGV0ZXJtaW5lIHdoYXQgcGFydHMgb2YgdGhlIGNhbnZhcyBhcmUgaW5jbHVkZWQgaW5zaWRlIHRoZSBzaGFwZS4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6ImZpbHRlciIsYnJvd3NlcnM6WyJFMTIiLCJGRjM1IiwiUzkuMSIsIkM1MyIsIk80MCJdLHZhbHVlczpbe25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJObyBmaWx0ZXIgZWZmZWN0cyBhcmUgYXBwbGllZC4ifSx7bmFtZToiYmx1cigpIixkZXNjcmlwdGlvbjoiQXBwbGllcyBhIEdhdXNzaWFuIGJsdXIgdG8gdGhlIGlucHV0IGltYWdlLiJ9LHtuYW1lOiJicmlnaHRuZXNzKCkiLGRlc2NyaXB0aW9uOiJBcHBsaWVzIGEgbGluZWFyIG11bHRpcGxpZXIgdG8gaW5wdXQgaW1hZ2UsIG1ha2luZyBpdCBhcHBlYXIgbW9yZSBvciBsZXNzIGJyaWdodC4ifSx7bmFtZToiY29udHJhc3QoKSIsZGVzY3JpcHRpb246IkFkanVzdHMgdGhlIGNvbnRyYXN0IG9mIHRoZSBpbnB1dC4ifSx7bmFtZToiZHJvcC1zaGFkb3coKSIsZGVzY3JpcHRpb246IkFwcGxpZXMgYSBkcm9wIHNoYWRvdyBlZmZlY3QgdG8gdGhlIGlucHV0IGltYWdlLiJ9LHtuYW1lOiJncmF5c2NhbGUoKSIsZGVzY3JpcHRpb246IkNvbnZlcnRzIHRoZSBpbnB1dCBpbWFnZSB0byBncmF5c2NhbGUuIn0se25hbWU6Imh1ZS1yb3RhdGUoKSIsZGVzY3JpcHRpb246IkFwcGxpZXMgYSBodWUgcm90YXRpb24gb24gdGhlIGlucHV0IGltYWdlLiAifSx7bmFtZToiaW52ZXJ0KCkiLGRlc2NyaXB0aW9uOiJJbnZlcnRzIHRoZSBzYW1wbGVzIGluIHRoZSBpbnB1dCBpbWFnZS4ifSx7bmFtZToib3BhY2l0eSgpIixkZXNjcmlwdGlvbjoiQXBwbGllcyB0cmFuc3BhcmVuY3kgdG8gdGhlIHNhbXBsZXMgaW4gdGhlIGlucHV0IGltYWdlLiJ9LHtuYW1lOiJzYXR1cmF0ZSgpIixkZXNjcmlwdGlvbjoiU2F0dXJhdGVzIHRoZSBpbnB1dCBpbWFnZS4ifSx7bmFtZToic2VwaWEoKSIsZGVzY3JpcHRpb246IkNvbnZlcnRzIHRoZSBpbnB1dCBpbWFnZSB0byBzZXBpYS4ifSx7bmFtZToidXJsKCkiLGJyb3dzZXJzOlsiRTEyIiwiRkYzNSIsIlM5LjEiLCJDNTMiLCJPNDAiXSxkZXNjcmlwdGlvbjoiQSBmaWx0ZXIgcmVmZXJlbmNlIHRvIGEgPGZpbHRlcj4gZWxlbWVudC4ifV0sc3ludGF4OiJub25lIHwgPGZpbHRlci1mdW5jdGlvbi1saXN0PiIscmVsZXZhbmNlOjcwLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9maWx0ZXIifV0sZGVzY3JpcHRpb246IlByb2Nlc3NlcyBhbiBlbGVtZW50J3MgcmVuZGVyaW5nIGJlZm9yZSBpdCBpcyBkaXNwbGF5ZWQgaW4gdGhlIGRvY3VtZW50LCBieSBhcHBseWluZyBvbmUgb3IgbW9yZSBmaWx0ZXIgZWZmZWN0cy4iLHJlc3RyaWN0aW9uczpbImVudW0iLCJ1cmwiXX0se25hbWU6ImZsZXgiLGJyb3dzZXJzOlsiRTEyIiwiRkYyMCIsIlM5IiwiQzI5IiwiSUUxMSIsIk8xMi4xIl0sdmFsdWVzOlt7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IlJldHJpZXZlcyB0aGUgdmFsdWUgb2YgdGhlIG1haW4gc2l6ZSBwcm9wZXJ0eSBhcyB0aGUgdXNlZCAnZmxleC1iYXNpcycuIn0se25hbWU6ImNvbnRlbnQiLGJyb3dzZXJzOlsiRTEyIiwiRkYyMCIsIlM5IiwiQzI5IiwiSUUxMSIsIk8xMi4xIl0sZGVzY3JpcHRpb246IkluZGljYXRlcyBhdXRvbWF0aWMgc2l6aW5nLCBiYXNlZCBvbiB0aGUgZmxleCBpdGVtJ3MgY29udGVudC4ifSx7bmFtZToibm9uZSIsZGVzY3JpcHRpb246IkV4cGFuZHMgdG8gJzAgMCBhdXRvJy4ifV0sc3ludGF4OiJub25lIHwgWyA8J2ZsZXgtZ3Jvdyc+IDwnZmxleC1zaHJpbmsnPj8gfHwgPCdmbGV4LWJhc2lzJz4gXSIscmVsZXZhbmNlOjgxLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9mbGV4In1dLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgdGhlIGNvbXBvbmVudHMgb2YgYSBmbGV4aWJsZSBsZW5ndGg6IHRoZSBmbGV4IGdyb3cgZmFjdG9yIGFuZCBmbGV4IHNocmluayBmYWN0b3IsIGFuZCB0aGUgZmxleCBiYXNpcy4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsIm51bWJlciIsInBlcmNlbnRhZ2UiXX0se25hbWU6ImZsZXgtYmFzaXMiLGJyb3dzZXJzOlsiRTEyIiwiRkYyMiIsIlM5IiwiQzI5IiwiSUUxMSIsIk8xMi4xIl0sdmFsdWVzOlt7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IlJldHJpZXZlcyB0aGUgdmFsdWUgb2YgdGhlIG1haW4gc2l6ZSBwcm9wZXJ0eSBhcyB0aGUgdXNlZCAnZmxleC1iYXNpcycuIn0se25hbWU6ImNvbnRlbnQiLGJyb3dzZXJzOlsiRTEyIiwiRkYyMiIsIlM5IiwiQzI5IiwiSUUxMSIsIk8xMi4xIl0sZGVzY3JpcHRpb246IkluZGljYXRlcyBhdXRvbWF0aWMgc2l6aW5nLCBiYXNlZCBvbiB0aGUgZmxleCBpdGVtJ3MgY29udGVudC4ifV0sc3ludGF4OiJjb250ZW50IHwgPCd3aWR0aCc+IixyZWxldmFuY2U6NzAscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2ZsZXgtYmFzaXMifV0sZGVzY3JpcHRpb246IlNldHMgdGhlIGZsZXggYmFzaXMuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJudW1iZXIiLCJwZXJjZW50YWdlIl19LHtuYW1lOiJmbGV4LWRpcmVjdGlvbiIsYnJvd3NlcnM6WyJFMTIiLCJGRjgxIiwiUzkiLCJDMjkiLCJJRTExIiwiTzEyLjEiXSx2YWx1ZXM6W3tuYW1lOiJjb2x1bW4iLGRlc2NyaXB0aW9uOiJUaGUgZmxleCBjb250YWluZXIncyBtYWluIGF4aXMgaGFzIHRoZSBzYW1lIG9yaWVudGF0aW9uIGFzIHRoZSBibG9jayBheGlzIG9mIHRoZSBjdXJyZW50IHdyaXRpbmcgbW9kZS4ifSx7bmFtZToiY29sdW1uLXJldmVyc2UiLGRlc2NyaXB0aW9uOiJTYW1lIGFzICdjb2x1bW4nLCBleGNlcHQgdGhlIG1haW4tc3RhcnQgYW5kIG1haW4tZW5kIGRpcmVjdGlvbnMgYXJlIHN3YXBwZWQuIn0se25hbWU6InJvdyIsZGVzY3JpcHRpb246IlRoZSBmbGV4IGNvbnRhaW5lcidzIG1haW4gYXhpcyBoYXMgdGhlIHNhbWUgb3JpZW50YXRpb24gYXMgdGhlIGlubGluZSBheGlzIG9mIHRoZSBjdXJyZW50IHdyaXRpbmcgbW9kZS4ifSx7bmFtZToicm93LXJldmVyc2UiLGRlc2NyaXB0aW9uOiJTYW1lIGFzICdyb3cnLCBleGNlcHQgdGhlIG1haW4tc3RhcnQgYW5kIG1haW4tZW5kIGRpcmVjdGlvbnMgYXJlIHN3YXBwZWQuIn1dLHN5bnRheDoicm93IHwgcm93LXJldmVyc2UgfCBjb2x1bW4gfCBjb2x1bW4tcmV2ZXJzZSIscmVsZXZhbmNlOjg0LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9mbGV4LWRpcmVjdGlvbiJ9XSxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGhvdyBmbGV4IGl0ZW1zIGFyZSBwbGFjZWQgaW4gdGhlIGZsZXggY29udGFpbmVyLCBieSBzZXR0aW5nIHRoZSBkaXJlY3Rpb24gb2YgdGhlIGZsZXggY29udGFpbmVyJ3MgbWFpbiBheGlzLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiZmxleC1mbG93Iixicm93c2VyczpbIkUxMiIsIkZGMjgiLCJTOSIsIkMyOSIsIklFMTEiLCJPMTIuMSJdLHZhbHVlczpbe25hbWU6ImNvbHVtbiIsZGVzY3JpcHRpb246IlRoZSBmbGV4IGNvbnRhaW5lcidzIG1haW4gYXhpcyBoYXMgdGhlIHNhbWUgb3JpZW50YXRpb24gYXMgdGhlIGJsb2NrIGF4aXMgb2YgdGhlIGN1cnJlbnQgd3JpdGluZyBtb2RlLiJ9LHtuYW1lOiJjb2x1bW4tcmV2ZXJzZSIsZGVzY3JpcHRpb246IlNhbWUgYXMgJ2NvbHVtbicsIGV4Y2VwdCB0aGUgbWFpbi1zdGFydCBhbmQgbWFpbi1lbmQgZGlyZWN0aW9ucyBhcmUgc3dhcHBlZC4ifSx7bmFtZToibm93cmFwIixkZXNjcmlwdGlvbjoiVGhlIGZsZXggY29udGFpbmVyIGlzIHNpbmdsZS1saW5lLiJ9LHtuYW1lOiJyb3ciLGRlc2NyaXB0aW9uOiJUaGUgZmxleCBjb250YWluZXIncyBtYWluIGF4aXMgaGFzIHRoZSBzYW1lIG9yaWVudGF0aW9uIGFzIHRoZSBpbmxpbmUgYXhpcyBvZiB0aGUgY3VycmVudCB3cml0aW5nIG1vZGUuIn0se25hbWU6InJvdy1yZXZlcnNlIixkZXNjcmlwdGlvbjoiU2FtZSBhcyAncm93JywgZXhjZXB0IHRoZSBtYWluLXN0YXJ0IGFuZCBtYWluLWVuZCBkaXJlY3Rpb25zIGFyZSBzd2FwcGVkLiJ9LHtuYW1lOiJ3cmFwIixkZXNjcmlwdGlvbjoiVGhlIGZsZXhib3ggaXMgbXVsdGktbGluZS4ifSx7bmFtZToid3JhcC1yZXZlcnNlIixkZXNjcmlwdGlvbjoiU2FtZSBhcyAnd3JhcCcsIGV4Y2VwdCB0aGUgY3Jvc3Mtc3RhcnQgYW5kIGNyb3NzLWVuZCBkaXJlY3Rpb25zIGFyZSBzd2FwcGVkLiJ9XSxzeW50YXg6IjwnZmxleC1kaXJlY3Rpb24nPiB8fCA8J2ZsZXgtd3JhcCc+IixyZWxldmFuY2U6NjQscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2ZsZXgtZmxvdyJ9XSxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGhvdyBmbGV4Ym94IGl0ZW1zIGFyZSBwbGFjZWQgaW4gdGhlIGZsZXhib3guIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJmbGV4LWdyb3ciLGJyb3dzZXJzOlsiRTEyIiwiRkYyMCIsIlM5IiwiQzI5IiwiSUUxMSIsIk8xMi4xIl0sc3ludGF4OiI8bnVtYmVyPiIscmVsZXZhbmNlOjc3LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9mbGV4LWdyb3cifV0sZGVzY3JpcHRpb246IlNldHMgdGhlIGZsZXggZ3JvdyBmYWN0b3IuIE5lZ2F0aXZlIG51bWJlcnMgYXJlIGludmFsaWQuIixyZXN0cmljdGlvbnM6WyJudW1iZXIiXX0se25hbWU6ImZsZXgtc2hyaW5rIixicm93c2VyczpbIkUxMiIsIkZGMjAiLCJTOSIsIkMyOSIsIklFMTAiLCJPMTIuMSJdLHN5bnRheDoiPG51bWJlcj4iLHJlbGV2YW5jZTo3NixyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvZmxleC1zaHJpbmsifV0sZGVzY3JpcHRpb246IlNldHMgdGhlIGZsZXggc2hyaW5rIGZhY3Rvci4gTmVnYXRpdmUgbnVtYmVycyBhcmUgaW52YWxpZC4iLHJlc3RyaWN0aW9uczpbIm51bWJlciJdfSx7bmFtZToiZmxleC13cmFwIixicm93c2VyczpbIkUxMiIsIkZGMjgiLCJTOSIsIkMyOSIsIklFMTEiLCJPMTciXSx2YWx1ZXM6W3tuYW1lOiJub3dyYXAiLGRlc2NyaXB0aW9uOiJUaGUgZmxleCBjb250YWluZXIgaXMgc2luZ2xlLWxpbmUuIn0se25hbWU6IndyYXAiLGRlc2NyaXB0aW9uOiJUaGUgZmxleGJveCBpcyBtdWx0aS1saW5lLiJ9LHtuYW1lOiJ3cmFwLXJldmVyc2UiLGRlc2NyaXB0aW9uOiJTYW1lIGFzICd3cmFwJywgZXhjZXB0IHRoZSBjcm9zcy1zdGFydCBhbmQgY3Jvc3MtZW5kIGRpcmVjdGlvbnMgYXJlIHN3YXBwZWQuIn1dLHN5bnRheDoibm93cmFwIHwgd3JhcCB8IHdyYXAtcmV2ZXJzZSIscmVsZXZhbmNlOjgyLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9mbGV4LXdyYXAifV0sZGVzY3JpcHRpb246IkNvbnRyb2xzIHdoZXRoZXIgdGhlIGZsZXggY29udGFpbmVyIGlzIHNpbmdsZS1saW5lIG9yIG11bHRpLWxpbmUsIGFuZCB0aGUgZGlyZWN0aW9uIG9mIHRoZSBjcm9zcy1heGlzLCB3aGljaCBkZXRlcm1pbmVzIHRoZSBkaXJlY3Rpb24gbmV3IGxpbmVzIGFyZSBzdGFja2VkIGluLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiZmxvYXQiLGJyb3dzZXJzOlsiRTEyIiwiRkYxIiwiUzEiLCJDMSIsIklFNCIsIk83Il0sdmFsdWVzOlt7bmFtZToiaW5saW5lLWVuZCIsYnJvd3NlcnM6WyJFMTIiLCJGRjEiLCJTMSIsIkMxIiwiSUU0IiwiTzciXSxkZXNjcmlwdGlvbjoiQSBrZXl3b3JkIGluZGljYXRpbmcgdGhhdCB0aGUgZWxlbWVudCBtdXN0IGZsb2F0IG9uIHRoZSBlbmQgc2lkZSBvZiBpdHMgY29udGFpbmluZyBibG9jay4gVGhhdCBpcyB0aGUgcmlnaHQgc2lkZSB3aXRoIGx0ciBzY3JpcHRzLCBhbmQgdGhlIGxlZnQgc2lkZSB3aXRoIHJ0bCBzY3JpcHRzLiJ9LHtuYW1lOiJpbmxpbmUtc3RhcnQiLGJyb3dzZXJzOlsiRTEyIiwiRkYxIiwiUzEiLCJDMSIsIklFNCIsIk83Il0sZGVzY3JpcHRpb246IkEga2V5d29yZCBpbmRpY2F0aW5nIHRoYXQgdGhlIGVsZW1lbnQgbXVzdCBmbG9hdCBvbiB0aGUgc3RhcnQgc2lkZSBvZiBpdHMgY29udGFpbmluZyBibG9jay4gVGhhdCBpcyB0aGUgbGVmdCBzaWRlIHdpdGggbHRyIHNjcmlwdHMsIGFuZCB0aGUgcmlnaHQgc2lkZSB3aXRoIHJ0bCBzY3JpcHRzLiJ9LHtuYW1lOiJsZWZ0IixkZXNjcmlwdGlvbjoiVGhlIGVsZW1lbnQgZ2VuZXJhdGVzIGEgYmxvY2sgYm94IHRoYXQgaXMgZmxvYXRlZCB0byB0aGUgbGVmdC4gQ29udGVudCBmbG93cyBvbiB0aGUgcmlnaHQgc2lkZSBvZiB0aGUgYm94LCBzdGFydGluZyBhdCB0aGUgdG9wIChzdWJqZWN0IHRvIHRoZSAnY2xlYXInIHByb3BlcnR5KS4ifSx7bmFtZToibm9uZSIsZGVzY3JpcHRpb246IlRoZSBib3ggaXMgbm90IGZsb2F0ZWQuIn0se25hbWU6InJpZ2h0IixkZXNjcmlwdGlvbjoiU2ltaWxhciB0byAnbGVmdCcsIGV4Y2VwdCB0aGUgYm94IGlzIGZsb2F0ZWQgdG8gdGhlIHJpZ2h0LCBhbmQgY29udGVudCBmbG93cyBvbiB0aGUgbGVmdCBzaWRlIG9mIHRoZSBib3gsIHN0YXJ0aW5nIGF0IHRoZSB0b3AuIn1dLHN5bnRheDoibGVmdCB8IHJpZ2h0IHwgbm9uZSB8IGlubGluZS1zdGFydCB8IGlubGluZS1lbmQiLHJlbGV2YW5jZTo4OSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvZmxvYXQifV0sZGVzY3JpcHRpb246IlNwZWNpZmllcyBob3cgYSBib3ggc2hvdWxkIGJlIGZsb2F0ZWQuIEl0IG1heSBiZSBzZXQgZm9yIGFueSBlbGVtZW50LCBidXQgb25seSBhcHBsaWVzIHRvIGVsZW1lbnRzIHRoYXQgZ2VuZXJhdGUgYm94ZXMgdGhhdCBhcmUgbm90IGFic29sdXRlbHkgcG9zaXRpb25lZC4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6ImZsb29kLWNvbG9yIixicm93c2VyczpbIkUxMiIsIkZGMyIsIlM2IiwiQzUiLCJJRSIsIk8xNSJdLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIHdoYXQgY29sb3IgdG8gdXNlIHRvIGZsb29kIHRoZSBjdXJyZW50IGZpbHRlciBwcmltaXRpdmUgc3VicmVnaW9uLiIscmVzdHJpY3Rpb25zOlsiY29sb3IiXX0se25hbWU6ImZsb29kLW9wYWNpdHkiLGJyb3dzZXJzOlsiRTEyIiwiRkYzIiwiUzYiLCJDNSIsIklFIiwiTzE1Il0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgd2hhdCBvcGFjaXR5IHRvIHVzZSB0byBmbG9vZCB0aGUgY3VycmVudCBmaWx0ZXIgcHJpbWl0aXZlIHN1YnJlZ2lvbi4iLHJlc3RyaWN0aW9uczpbIm51bWJlcigwLTEpIiwicGVyY2VudGFnZSJdfSx7bmFtZToiZm9udCIsYnJvd3NlcnM6WyJFMTIiLCJGRjEiLCJTMSIsIkMxIiwiSUUzIiwiTzMuNSJdLHZhbHVlczpbe25hbWU6IjEwMCIsZGVzY3JpcHRpb246IlRoaW4ifSx7bmFtZToiMjAwIixkZXNjcmlwdGlvbjoiRXh0cmEgTGlnaHQgKFVsdHJhIExpZ2h0KSJ9LHtuYW1lOiIzMDAiLGRlc2NyaXB0aW9uOiJMaWdodCJ9LHtuYW1lOiI0MDAiLGRlc2NyaXB0aW9uOiJOb3JtYWwifSx7bmFtZToiNTAwIixkZXNjcmlwdGlvbjoiTWVkaXVtIn0se25hbWU6IjYwMCIsZGVzY3JpcHRpb246IlNlbWkgQm9sZCAoRGVtaSBCb2xkKSJ9LHtuYW1lOiI3MDAiLGRlc2NyaXB0aW9uOiJCb2xkIn0se25hbWU6IjgwMCIsZGVzY3JpcHRpb246IkV4dHJhIEJvbGQgKFVsdHJhIEJvbGQpIn0se25hbWU6IjkwMCIsZGVzY3JpcHRpb246IkJsYWNrIChIZWF2eSkifSx7bmFtZToiYm9sZCIsZGVzY3JpcHRpb246IlNhbWUgYXMgNzAwIn0se25hbWU6ImJvbGRlciIsZGVzY3JpcHRpb246IlNwZWNpZmllcyB0aGUgd2VpZ2h0IG9mIHRoZSBmYWNlIGJvbGRlciB0aGFuIHRoZSBpbmhlcml0ZWQgdmFsdWUuIn0se25hbWU6ImNhcHRpb24iLGRlc2NyaXB0aW9uOiJUaGUgZm9udCB1c2VkIGZvciBjYXB0aW9uZWQgY29udHJvbHMgKGUuZy4sIGJ1dHRvbnMsIGRyb3AtZG93bnMsIGV0Yy4pLiJ9LHtuYW1lOiJpY29uIixkZXNjcmlwdGlvbjoiVGhlIGZvbnQgdXNlZCB0byBsYWJlbCBpY29ucy4ifSx7bmFtZToiaXRhbGljIixkZXNjcmlwdGlvbjoiU2VsZWN0cyBhIGZvbnQgdGhhdCBpcyBsYWJlbGVkICdpdGFsaWMnLCBvciwgaWYgdGhhdCBpcyBub3QgYXZhaWxhYmxlLCBvbmUgbGFiZWxlZCAnb2JsaXF1ZScuIn0se25hbWU6ImxhcmdlIn0se25hbWU6ImxhcmdlciJ9LHtuYW1lOiJsaWdodGVyIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIHRoZSB3ZWlnaHQgb2YgdGhlIGZhY2UgbGlnaHRlciB0aGFuIHRoZSBpbmhlcml0ZWQgdmFsdWUuIn0se25hbWU6Im1lZGl1bSJ9LHtuYW1lOiJtZW51IixkZXNjcmlwdGlvbjoiVGhlIGZvbnQgdXNlZCBpbiBtZW51cyAoZS5nLiwgZHJvcGRvd24gbWVudXMgYW5kIG1lbnUgbGlzdHMpLiJ9LHtuYW1lOiJtZXNzYWdlLWJveCIsZGVzY3JpcHRpb246IlRoZSBmb250IHVzZWQgaW4gZGlhbG9nIGJveGVzLiJ9LHtuYW1lOiJub3JtYWwiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSBmYWNlIHRoYXQgaXMgbm90IGxhYmVsZWQgYXMgYSBzbWFsbC1jYXBzIGZvbnQuIn0se25hbWU6Im9ibGlxdWUiLGRlc2NyaXB0aW9uOiJTZWxlY3RzIGEgZm9udCB0aGF0IGlzIGxhYmVsZWQgJ29ibGlxdWUnLiJ9LHtuYW1lOiJzbWFsbCJ9LHtuYW1lOiJzbWFsbC1jYXBzIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgZm9udCB0aGF0IGlzIGxhYmVsZWQgYXMgYSBzbWFsbC1jYXBzIGZvbnQuIElmIGEgZ2VudWluZSBzbWFsbC1jYXBzIGZvbnQgaXMgbm90IGF2YWlsYWJsZSwgdXNlciBhZ2VudHMgc2hvdWxkIHNpbXVsYXRlIGEgc21hbGwtY2FwcyBmb250LiJ9LHtuYW1lOiJzbWFsbC1jYXB0aW9uIixkZXNjcmlwdGlvbjoiVGhlIGZvbnQgdXNlZCBmb3IgbGFiZWxpbmcgc21hbGwgY29udHJvbHMuIn0se25hbWU6InNtYWxsZXIifSx7bmFtZToic3RhdHVzLWJhciIsZGVzY3JpcHRpb246IlRoZSBmb250IHVzZWQgaW4gd2luZG93IHN0YXR1cyBiYXJzLiJ9LHtuYW1lOiJ4LWxhcmdlIn0se25hbWU6Ingtc21hbGwifSx7bmFtZToieHgtbGFyZ2UifSx7bmFtZToieHgtc21hbGwifV0sc3ludGF4OiJbIFsgPCdmb250LXN0eWxlJz4gfHwgPGZvbnQtdmFyaWFudC1jc3MyMT4gfHwgPCdmb250LXdlaWdodCc+IHx8IDwnZm9udC1zdHJldGNoJz4gXT8gPCdmb250LXNpemUnPiBbIC8gPCdsaW5lLWhlaWdodCc+IF0/IDwnZm9udC1mYW1pbHknPiBdIHwgY2FwdGlvbiB8IGljb24gfCBtZW51IHwgbWVzc2FnZS1ib3ggfCBzbWFsbC1jYXB0aW9uIHwgc3RhdHVzLWJhciIscmVsZXZhbmNlOjgzLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9mb250In1dLGRlc2NyaXB0aW9uOiJTaG9ydGhhbmQgcHJvcGVydHkgZm9yIHNldHRpbmcgJ2ZvbnQtc3R5bGUnLCAnZm9udC12YXJpYW50JywgJ2ZvbnQtd2VpZ2h0JywgJ2ZvbnQtc2l6ZScsICdsaW5lLWhlaWdodCcsIGFuZCAnZm9udC1mYW1pbHknLCBhdCB0aGUgc2FtZSBwbGFjZSBpbiB0aGUgc3R5bGUgc2hlZXQuIFRoZSBzeW50YXggb2YgdGhpcyBwcm9wZXJ0eSBpcyBiYXNlZCBvbiBhIHRyYWRpdGlvbmFsIHR5cG9ncmFwaGljYWwgc2hvcnRoYW5kIG5vdGF0aW9uIHRvIHNldCBtdWx0aXBsZSBwcm9wZXJ0aWVzIHJlbGF0ZWQgdG8gZm9udHMuIixyZXN0cmljdGlvbnM6WyJmb250Il19LHtuYW1lOiJmb250LWZhbWlseSIsYnJvd3NlcnM6WyJFMTIiLCJGRjEiLCJTMSIsIkMxIiwiSUUzIiwiTzMuNSJdLHZhbHVlczpbe25hbWU6InN5c3RlbS11aSwgLWFwcGxlLXN5c3RlbSwgQmxpbmtNYWNTeXN0ZW1Gb250LCAnU2Vnb2UgVUknLCBSb2JvdG8sIE94eWdlbiwgVWJ1bnR1LCBDYW50YXJlbGwsICdPcGVuIFNhbnMnLCAnSGVsdmV0aWNhIE5ldWUnLCBzYW5zLXNlcmlmIn0se25hbWU6IkFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWYifSx7bmFtZToiQ2FtYnJpYSwgQ29jaGluLCBHZW9yZ2lhLCBUaW1lcywgJ1RpbWVzIE5ldyBSb21hbicsIHNlcmlmIn0se25hbWU6IidDb3VyaWVyIE5ldycsIENvdXJpZXIsIG1vbm9zcGFjZSJ9LHtuYW1lOiJjdXJzaXZlIn0se25hbWU6ImZhbnRhc3kifSx7bmFtZToiJ0ZyYW5rbGluIEdvdGhpYyBNZWRpdW0nLCAnQXJpYWwgTmFycm93JywgQXJpYWwsIHNhbnMtc2VyaWYifSx7bmFtZToiR2VvcmdpYSwgJ1RpbWVzIE5ldyBSb21hbicsIFRpbWVzLCBzZXJpZiJ9LHtuYW1lOiInR2lsbCBTYW5zJywgJ0dpbGwgU2FucyBNVCcsIENhbGlicmksICdUcmVidWNoZXQgTVMnLCBzYW5zLXNlcmlmIn0se25hbWU6IkltcGFjdCwgSGFldHRlbnNjaHdlaWxlciwgJ0FyaWFsIE5hcnJvdyBCb2xkJywgc2Fucy1zZXJpZiJ9LHtuYW1lOiInTHVjaWRhIFNhbnMnLCAnTHVjaWRhIFNhbnMgUmVndWxhcicsICdMdWNpZGEgR3JhbmRlJywgJ0x1Y2lkYSBTYW5zIFVuaWNvZGUnLCBHZW5ldmEsIFZlcmRhbmEsIHNhbnMtc2VyaWYifSx7bmFtZToibW9ub3NwYWNlIn0se25hbWU6InNhbnMtc2VyaWYifSx7bmFtZToiJ1NlZ29lIFVJJywgVGFob21hLCBHZW5ldmEsIFZlcmRhbmEsIHNhbnMtc2VyaWYifSx7bmFtZToic2VyaWYifSx7bmFtZToiJ1RpbWVzIE5ldyBSb21hbicsIFRpbWVzLCBzZXJpZiJ9LHtuYW1lOiInVHJlYnVjaGV0IE1TJywgJ0x1Y2lkYSBTYW5zIFVuaWNvZGUnLCAnTHVjaWRhIEdyYW5kZScsICdMdWNpZGEgU2FucycsIEFyaWFsLCBzYW5zLXNlcmlmIn0se25hbWU6IlZlcmRhbmEsIEdlbmV2YSwgVGFob21hLCBzYW5zLXNlcmlmIn1dLGF0UnVsZToiQGZvbnQtZmFjZSIsc3ludGF4OiI8ZmFtaWx5LW5hbWU+IixyZWxldmFuY2U6OTMscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2ZvbnQtZmFtaWx5In1dLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSBwcmlvcml0aXplZCBsaXN0IG9mIGZvbnQgZmFtaWx5IG5hbWVzIG9yIGdlbmVyaWMgZmFtaWx5IG5hbWVzLiBBIHVzZXIgYWdlbnQgaXRlcmF0ZXMgdGhyb3VnaCB0aGUgbGlzdCBvZiBmYW1pbHkgbmFtZXMgdW50aWwgaXQgbWF0Y2hlcyBhbiBhdmFpbGFibGUgZm9udCB0aGF0IGNvbnRhaW5zIGEgZ2x5cGggZm9yIHRoZSBjaGFyYWN0ZXIgdG8gYmUgcmVuZGVyZWQuIixyZXN0cmljdGlvbnM6WyJmb250Il19LHtuYW1lOiJmb250LWZlYXR1cmUtc2V0dGluZ3MiLGJyb3dzZXJzOlsiRTE1IiwiRkYzNCIsIlM5LjEiLCJDNDgiLCJJRTEwIiwiTzM1Il0sdmFsdWVzOlt7bmFtZTonImFhbHQiJyxkZXNjcmlwdGlvbjoiQWNjZXNzIEFsbCBBbHRlcm5hdGVzLiJ9LHtuYW1lOiciYWJ2ZiInLGRlc2NyaXB0aW9uOiJBYm92ZS1iYXNlIEZvcm1zLiBSZXF1aXJlZCBpbiBLaG1lciBzY3JpcHQuIn0se25hbWU6JyJhYnZtIicsZGVzY3JpcHRpb246IkFib3ZlLWJhc2UgTWFyayBQb3NpdGlvbmluZy4gUmVxdWlyZWQgaW4gSW5kaWMgc2NyaXB0cy4ifSx7bmFtZTonImFidnMiJyxkZXNjcmlwdGlvbjoiQWJvdmUtYmFzZSBTdWJzdGl0dXRpb25zLiBSZXF1aXJlZCBpbiBJbmRpYyBzY3JpcHRzLiJ9LHtuYW1lOiciYWZyYyInLGRlc2NyaXB0aW9uOiJBbHRlcm5hdGl2ZSBGcmFjdGlvbnMuIn0se25hbWU6JyJha2huIicsZGVzY3JpcHRpb246IkFraGFuZC4gUmVxdWlyZWQgaW4gbW9zdCBJbmRpYyBzY3JpcHRzLiJ9LHtuYW1lOiciYmx3ZiInLGRlc2NyaXB0aW9uOiJCZWxvdy1iYXNlIEZvcm0uIFJlcXVpcmVkIGluIGEgbnVtYmVyIG9mIEluZGljIHNjcmlwdHMuIn0se25hbWU6JyJibHdtIicsZGVzY3JpcHRpb246IkJlbG93LWJhc2UgTWFyayBQb3NpdGlvbmluZy4gUmVxdWlyZWQgaW4gSW5kaWMgc2NyaXB0cy4ifSx7bmFtZTonImJsd3MiJyxkZXNjcmlwdGlvbjoiQmVsb3ctYmFzZSBTdWJzdGl0dXRpb25zLiBSZXF1aXJlZCBpbiBJbmRpYyBzY3JpcHRzLiJ9LHtuYW1lOiciY2FsdCInLGRlc2NyaXB0aW9uOiJDb250ZXh0dWFsIEFsdGVybmF0ZXMuIn0se25hbWU6JyJjYXNlIicsZGVzY3JpcHRpb246IkNhc2UtU2Vuc2l0aXZlIEZvcm1zLiBBcHBsaWVzIG9ubHkgdG8gRXVyb3BlYW4gc2NyaXB0czsgcGFydGljdWxhcmx5IHByb21pbmVudCBpbiBTcGFuaXNoLWxhbmd1YWdlIHNldHRpbmcuIn0se25hbWU6JyJjY21wIicsZGVzY3JpcHRpb246IkdseXBoIENvbXBvc2l0aW9uL0RlY29tcG9zaXRpb24uIn0se25hbWU6JyJjZmFyIicsZGVzY3JpcHRpb246IkNvbmp1bmN0IEZvcm0gQWZ0ZXIgUm8uIFJlcXVpcmVkIGluIEtobWVyIHNjcmlwdHMuIn0se25hbWU6JyJjamN0IicsZGVzY3JpcHRpb246IkNvbmp1bmN0IEZvcm1zLiBSZXF1aXJlZCBpbiBJbmRpYyBzY3JpcHRzIHRoYXQgc2hvdyBzaW1pbGFyaXR5IHRvIERldmFuYWdhcmkuIn0se25hbWU6JyJjbGlnIicsZGVzY3JpcHRpb246IkNvbnRleHR1YWwgTGlnYXR1cmVzLiJ9LHtuYW1lOiciY3BjdCInLGRlc2NyaXB0aW9uOiJDZW50ZXJlZCBDSksgUHVuY3R1YXRpb24uIFVzZWQgcHJpbWFyaWx5IGluIENoaW5lc2UgZm9udHMuIn0se25hbWU6JyJjcHNwIicsZGVzY3JpcHRpb246IkNhcGl0YWwgU3BhY2luZy4gU2hvdWxkIG5vdCBiZSB1c2VkIGluIGNvbm5lY3Rpbmcgc2NyaXB0cyAoZS5nLiBtb3N0IEFyYWJpYykuIn0se25hbWU6JyJjc3doIicsZGVzY3JpcHRpb246IkNvbnRleHR1YWwgU3dhc2guIn0se25hbWU6JyJjdXJzIicsZGVzY3JpcHRpb246IkN1cnNpdmUgUG9zaXRpb25pbmcuIENhbiBiZSB1c2VkIGluIGFueSBjdXJzaXZlIHNjcmlwdC4ifSx7bmFtZTonImMycGMiJyxkZXNjcmlwdGlvbjoiUGV0aXRlIENhcGl0YWxzIEZyb20gQ2FwaXRhbHMuIEFwcGxpZXMgb25seSB0byBiaWNhbWVyYWwgc2NyaXB0cy4ifSx7bmFtZTonImMyc2MiJyxkZXNjcmlwdGlvbjoiU21hbGwgQ2FwaXRhbHMgRnJvbSBDYXBpdGFscy4gQXBwbGllcyBvbmx5IHRvIGJpY2FtZXJhbCBzY3JpcHRzLiJ9LHtuYW1lOiciZGlzdCInLGRlc2NyaXB0aW9uOiJEaXN0YW5jZXMuIFJlcXVpcmVkIGluIEluZGljIHNjcmlwdHMuIn0se25hbWU6JyJkbGlnIicsZGVzY3JpcHRpb246IkRpc2NyZXRpb25hcnkgbGlnYXR1cmVzLiJ9LHtuYW1lOiciZG5vbSInLGRlc2NyaXB0aW9uOiJEZW5vbWluYXRvcnMuIn0se25hbWU6JyJkdGxzIicsZGVzY3JpcHRpb246IkRvdGxlc3MgRm9ybXMuIEFwcGxpZWQgdG8gbWF0aCBmb3JtdWxhIGxheW91dC4ifSx7bmFtZTonImV4cHQiJyxkZXNjcmlwdGlvbjoiRXhwZXJ0IEZvcm1zLiBBcHBsaWVzIG9ubHkgdG8gSmFwYW5lc2UuIn0se25hbWU6JyJmYWx0IicsZGVzY3JpcHRpb246IkZpbmFsIEdseXBoIG9uIExpbmUgQWx0ZXJuYXRlcy4gQ2FuIGJlIHVzZWQgaW4gYW55IGN1cnNpdmUgc2NyaXB0LiJ9LHtuYW1lOiciZmluMiInLGRlc2NyaXB0aW9uOiJUZXJtaW5hbCBGb3JtICMyLiBVc2VkIG9ubHkgd2l0aCB0aGUgU3lyaWFjIHNjcmlwdC4ifSx7bmFtZTonImZpbjMiJyxkZXNjcmlwdGlvbjoiVGVybWluYWwgRm9ybSAjMy4gVXNlZCBvbmx5IHdpdGggdGhlIFN5cmlhYyBzY3JpcHQuIn0se25hbWU6JyJmaW5hIicsZGVzY3JpcHRpb246IlRlcm1pbmFsIEZvcm1zLiBDYW4gYmUgdXNlZCBpbiBhbnkgYWxwaGFiZXRpYyBzY3JpcHQuIn0se25hbWU6JyJmbGFjIicsZGVzY3JpcHRpb246IkZsYXR0ZW5lZCBhc2NlbnQgZm9ybXMuIEFwcGxpZWQgdG8gbWF0aCBmb3JtdWxhIGxheW91dC4ifSx7bmFtZTonImZyYWMiJyxkZXNjcmlwdGlvbjoiRnJhY3Rpb25zLiJ9LHtuYW1lOiciZndpZCInLGRlc2NyaXB0aW9uOiJGdWxsIFdpZHRocy4gQXBwbGllcyB0byBhbnkgc2NyaXB0IHdoaWNoIGNhbiB1c2UgbW9ub3NwYWNlZCBmb3Jtcy4ifSx7bmFtZTonImhhbGYiJyxkZXNjcmlwdGlvbjoiSGFsZiBGb3Jtcy4gUmVxdWlyZWQgaW4gSW5kaWMgc2NyaXB0cyB0aGF0IHNob3cgc2ltaWxhcml0eSB0byBEZXZhbmFnYXJpLiJ9LHtuYW1lOiciaGFsbiInLGRlc2NyaXB0aW9uOiJIYWxhbnQgRm9ybXMuIFJlcXVpcmVkIGluIEluZGljIHNjcmlwdHMuIn0se25hbWU6JyJoYWx0IicsZGVzY3JpcHRpb246IkFsdGVybmF0ZSBIYWxmIFdpZHRocy4gVXNlZCBvbmx5IGluIENKS1YgZm9udHMuIn0se25hbWU6JyJoaXN0IicsZGVzY3JpcHRpb246Ikhpc3RvcmljYWwgRm9ybXMuIn0se25hbWU6JyJoa25hIicsZGVzY3JpcHRpb246Ikhvcml6b250YWwgS2FuYSBBbHRlcm5hdGVzLiBBcHBsaWVzIG9ubHkgdG8gZm9udHMgdGhhdCBzdXBwb3J0IGthbmEgKGhpcmFnYW5hIGFuZCBrYXRha2FuYSkuIn0se25hbWU6JyJobGlnIicsZGVzY3JpcHRpb246Ikhpc3RvcmljYWwgTGlnYXR1cmVzLiJ9LHtuYW1lOiciaG5nbCInLGRlc2NyaXB0aW9uOiJIYW5ndWwuIEtvcmVhbiBvbmx5LiJ9LHtuYW1lOiciaG9qbyInLGRlc2NyaXB0aW9uOiJIb2pvIEthbmppIEZvcm1zIChKSVMgWCAwMjEyLTE5OTAgS2FuamkgRm9ybXMpLiBVc2VkIG9ubHkgd2l0aCBLYW5qaSBzY3JpcHQuIn0se25hbWU6JyJod2lkIicsZGVzY3JpcHRpb246IkhhbGYgV2lkdGhzLiBHZW5lcmFsbHkgdXNlZCBvbmx5IGluIENKS1YgZm9udHMuIn0se25hbWU6JyJpbml0IicsZGVzY3JpcHRpb246IkluaXRpYWwgRm9ybXMuIENhbiBiZSB1c2VkIGluIGFueSBhbHBoYWJldGljIHNjcmlwdC4ifSx7bmFtZTonImlzb2wiJyxkZXNjcmlwdGlvbjoiSXNvbGF0ZWQgRm9ybXMuIENhbiBiZSB1c2VkIGluIGFueSBjdXJzaXZlIHNjcmlwdC4ifSx7bmFtZTonIml0YWwiJyxkZXNjcmlwdGlvbjoiSXRhbGljcy4gQXBwbGllcyBtb3N0bHkgdG8gTGF0aW47IG5vdGUgdGhhdCBtYW55IG5vbi1MYXRpbiBmb250cyBjb250YWluIExhdGluIGFzIHdlbGwuIn0se25hbWU6JyJqYWx0IicsZGVzY3JpcHRpb246Ikp1c3RpZmljYXRpb24gQWx0ZXJuYXRlcy4gQ2FuIGJlIHVzZWQgaW4gYW55IGN1cnNpdmUgc2NyaXB0LiJ9LHtuYW1lOicianA3OCInLGRlc2NyaXB0aW9uOiJKSVM3OCBGb3Jtcy4gQXBwbGllcyBvbmx5IHRvIEphcGFuZXNlLiJ9LHtuYW1lOicianA4MyInLGRlc2NyaXB0aW9uOiJKSVM4MyBGb3Jtcy4gQXBwbGllcyBvbmx5IHRvIEphcGFuZXNlLiJ9LHtuYW1lOicianA5MCInLGRlc2NyaXB0aW9uOiJKSVM5MCBGb3Jtcy4gQXBwbGllcyBvbmx5IHRvIEphcGFuZXNlLiJ9LHtuYW1lOicianAwNCInLGRlc2NyaXB0aW9uOiJKSVMyMDA0IEZvcm1zLiBBcHBsaWVzIG9ubHkgdG8gSmFwYW5lc2UuIn0se25hbWU6JyJrZXJuIicsZGVzY3JpcHRpb246Iktlcm5pbmcuIn0se25hbWU6JyJsZmJkIicsZGVzY3JpcHRpb246IkxlZnQgQm91bmRzLiJ9LHtuYW1lOicibGlnYSInLGRlc2NyaXB0aW9uOiJTdGFuZGFyZCBMaWdhdHVyZXMuIn0se25hbWU6JyJsam1vIicsZGVzY3JpcHRpb246IkxlYWRpbmcgSmFtbyBGb3Jtcy4gUmVxdWlyZWQgZm9yIEhhbmd1bCBzY3JpcHQgd2hlbiBBbmNpZW50IEhhbmd1bCB3cml0aW5nIHN5c3RlbSBpcyBzdXBwb3J0ZWQuIn0se25hbWU6JyJsbnVtIicsZGVzY3JpcHRpb246IkxpbmluZyBGaWd1cmVzLiJ9LHtuYW1lOicibG9jbCInLGRlc2NyaXB0aW9uOiJMb2NhbGl6ZWQgRm9ybXMuIn0se25hbWU6JyJsdHJhIicsZGVzY3JpcHRpb246IkxlZnQtdG8tcmlnaHQgZ2x5cGggYWx0ZXJuYXRlcy4ifSx7bmFtZTonImx0cm0iJyxkZXNjcmlwdGlvbjoiTGVmdC10by1yaWdodCBtaXJyb3JlZCBmb3Jtcy4ifSx7bmFtZTonIm1hcmsiJyxkZXNjcmlwdGlvbjoiTWFyayBQb3NpdGlvbmluZy4ifSx7bmFtZTonIm1lZDIiJyxkZXNjcmlwdGlvbjoiTWVkaWFsIEZvcm0gIzIuIFVzZWQgb25seSB3aXRoIHRoZSBTeXJpYWMgc2NyaXB0LiJ9LHtuYW1lOicibWVkaSInLGRlc2NyaXB0aW9uOiJNZWRpYWwgRm9ybXMuIn0se25hbWU6JyJtZ3JrIicsZGVzY3JpcHRpb246Ik1hdGhlbWF0aWNhbCBHcmVlay4ifSx7bmFtZTonIm1rbWsiJyxkZXNjcmlwdGlvbjoiTWFyayB0byBNYXJrIFBvc2l0aW9uaW5nLiJ9LHtuYW1lOicibmFsdCInLGRlc2NyaXB0aW9uOiJBbHRlcm5hdGUgQW5ub3RhdGlvbiBGb3Jtcy4ifSx7bmFtZTonIm5sY2siJyxkZXNjcmlwdGlvbjoiTkxDIEthbmppIEZvcm1zLiBVc2VkIG9ubHkgd2l0aCBLYW5qaSBzY3JpcHQuIn0se25hbWU6JyJudWt0IicsZGVzY3JpcHRpb246Ik51a3RhIEZvcm1zLiBSZXF1aXJlZCBpbiBJbmRpYyBzY3JpcHRzLi4ifSx7bmFtZTonIm51bXIiJyxkZXNjcmlwdGlvbjoiTnVtZXJhdG9ycy4ifSx7bmFtZTonIm9udW0iJyxkZXNjcmlwdGlvbjoiT2xkc3R5bGUgRmlndXJlcy4ifSx7bmFtZTonIm9wYmQiJyxkZXNjcmlwdGlvbjoiT3B0aWNhbCBCb3VuZHMuIn0se25hbWU6JyJvcmRuIicsZGVzY3JpcHRpb246Ik9yZGluYWxzLiBBcHBsaWVzIG1vc3RseSB0byBMYXRpbiBzY3JpcHQuIn0se25hbWU6JyJvcm5tIicsZGVzY3JpcHRpb246Ik9ybmFtZW50cy4ifSx7bmFtZTonInBhbHQiJyxkZXNjcmlwdGlvbjoiUHJvcG9ydGlvbmFsIEFsdGVybmF0ZSBXaWR0aHMuIFVzZWQgbW9zdGx5IGluIENKS1YgZm9udHMuIn0se25hbWU6JyJwY2FwIicsZGVzY3JpcHRpb246IlBldGl0ZSBDYXBpdGFscy4ifSx7bmFtZTonInBrbmEiJyxkZXNjcmlwdGlvbjoiUHJvcG9ydGlvbmFsIEthbmEuIEdlbmVyYWxseSB1c2VkIG9ubHkgaW4gSmFwYW5lc2UgZm9udHMuIn0se25hbWU6JyJwbnVtIicsZGVzY3JpcHRpb246IlByb3BvcnRpb25hbCBGaWd1cmVzLiJ9LHtuYW1lOicicHJlZiInLGRlc2NyaXB0aW9uOiJQcmUtYmFzZSBGb3Jtcy4gUmVxdWlyZWQgaW4gS2htZXIgYW5kIE15YW5tYXIgKEJ1cm1lc2UpIHNjcmlwdHMgYW5kIHNvdXRoZXJuIEluZGljIHNjcmlwdHMgdGhhdCBtYXkgZGlzcGxheSBhIHByZS1iYXNlIGZvcm0gb2YgUmEuIn0se25hbWU6JyJwcmVzIicsZGVzY3JpcHRpb246IlByZS1iYXNlIFN1YnN0aXR1dGlvbnMuIFJlcXVpcmVkIGluIEluZGljIHNjcmlwdHMuIn0se25hbWU6JyJwc3RmIicsZGVzY3JpcHRpb246IlBvc3QtYmFzZSBGb3Jtcy4gUmVxdWlyZWQgaW4gc2NyaXB0cyBvZiBzb3V0aCBhbmQgc291dGhlYXN0IEFzaWEgdGhhdCBoYXZlIHBvc3QtYmFzZSBmb3JtcyBmb3IgY29uc29uYW50cyBlZzogR3VybXVraGksIE1hbGF5YWxhbSwgS2htZXIuIn0se25hbWU6JyJwc3RzIicsZGVzY3JpcHRpb246IlBvc3QtYmFzZSBTdWJzdGl0dXRpb25zLiJ9LHtuYW1lOicicHdpZCInLGRlc2NyaXB0aW9uOiJQcm9wb3J0aW9uYWwgV2lkdGhzLiJ9LHtuYW1lOicicXdpZCInLGRlc2NyaXB0aW9uOiJRdWFydGVyIFdpZHRocy4gR2VuZXJhbGx5IHVzZWQgb25seSBpbiBDSktWIGZvbnRzLiJ9LHtuYW1lOicicmFuZCInLGRlc2NyaXB0aW9uOiJSYW5kb21pemUuIn0se25hbWU6JyJyY2x0IicsZGVzY3JpcHRpb246IlJlcXVpcmVkIENvbnRleHR1YWwgQWx0ZXJuYXRlcy4gTWF5IGFwcGx5IHRvIGFueSBzY3JpcHQsIGJ1dCBpcyBlc3BlY2lhbGx5IGltcG9ydGFudCBmb3IgbWFueSBzdHlsZXMgb2YgQXJhYmljLiJ9LHtuYW1lOicicmxpZyInLGRlc2NyaXB0aW9uOiJSZXF1aXJlZCBMaWdhdHVyZXMuIEFwcGxpZXMgdG8gQXJhYmljIGFuZCBTeXJpYWMuIE1heSBhcHBseSB0byBzb21lIG90aGVyIHNjcmlwdHMuIn0se25hbWU6JyJya3JmIicsZGVzY3JpcHRpb246IlJha2FyIEZvcm1zLiBSZXF1aXJlZCBpbiBEZXZhbmFnYXJpIGFuZCBHdWphcmF0aSBzY3JpcHRzLiJ9LHtuYW1lOicicnBoZiInLGRlc2NyaXB0aW9uOiJSZXBoIEZvcm0uIFJlcXVpcmVkIGluIEluZGljIHNjcmlwdHMuIEUuZy4gRGV2YW5hZ2FyaSwgS2FubmFkYS4ifSx7bmFtZTonInJ0YmQiJyxkZXNjcmlwdGlvbjoiUmlnaHQgQm91bmRzLiJ9LHtuYW1lOicicnRsYSInLGRlc2NyaXB0aW9uOiJSaWdodC10by1sZWZ0IGFsdGVybmF0ZXMuIn0se25hbWU6JyJydGxtIicsZGVzY3JpcHRpb246IlJpZ2h0LXRvLWxlZnQgbWlycm9yZWQgZm9ybXMuIn0se25hbWU6JyJydWJ5IicsZGVzY3JpcHRpb246IlJ1YnkgTm90YXRpb24gRm9ybXMuIEFwcGxpZXMgb25seSB0byBKYXBhbmVzZS4ifSx7bmFtZTonInNhbHQiJyxkZXNjcmlwdGlvbjoiU3R5bGlzdGljIEFsdGVybmF0ZXMuIn0se25hbWU6JyJzaW5mIicsZGVzY3JpcHRpb246IlNjaWVudGlmaWMgSW5mZXJpb3JzLiJ9LHtuYW1lOicic2l6ZSInLGRlc2NyaXB0aW9uOiJPcHRpY2FsIHNpemUuIn0se25hbWU6JyJzbWNwIicsZGVzY3JpcHRpb246IlNtYWxsIENhcGl0YWxzLiBBcHBsaWVzIG9ubHkgdG8gYmljYW1lcmFsIHNjcmlwdHMuIn0se25hbWU6JyJzbXBsIicsZGVzY3JpcHRpb246IlNpbXBsaWZpZWQgRm9ybXMuIEFwcGxpZXMgb25seSB0byBDaGluZXNlIGFuZCBKYXBhbmVzZS4ifSx7bmFtZTonInNzdHkiJyxkZXNjcmlwdGlvbjoiTWF0aCBzY3JpcHQgc3R5bGUgYWx0ZXJuYXRlcy4ifSx7bmFtZTonInN0Y2giJyxkZXNjcmlwdGlvbjoiU3RyZXRjaGluZyBHbHlwaCBEZWNvbXBvc2l0aW9uLiJ9LHtuYW1lOicic3VicyInLGRlc2NyaXB0aW9uOiJTdWJzY3JpcHQuIn0se25hbWU6JyJzdXBzIicsZGVzY3JpcHRpb246IlN1cGVyc2NyaXB0LiJ9LHtuYW1lOicic3dzaCInLGRlc2NyaXB0aW9uOiJTd2FzaC4gRG9lcyBub3QgYXBwbHkgdG8gaWRlb2dyYXBoaWMgc2NyaXB0cy4ifSx7bmFtZTonInRpdGwiJyxkZXNjcmlwdGlvbjoiVGl0bGluZy4ifSx7bmFtZTonInRqbW8iJyxkZXNjcmlwdGlvbjoiVHJhaWxpbmcgSmFtbyBGb3Jtcy4gUmVxdWlyZWQgZm9yIEhhbmd1bCBzY3JpcHQgd2hlbiBBbmNpZW50IEhhbmd1bCB3cml0aW5nIHN5c3RlbSBpcyBzdXBwb3J0ZWQuIn0se25hbWU6JyJ0bmFtIicsZGVzY3JpcHRpb246IlRyYWRpdGlvbmFsIE5hbWUgRm9ybXMuIEFwcGxpZXMgb25seSB0byBKYXBhbmVzZS4ifSx7bmFtZTonInRudW0iJyxkZXNjcmlwdGlvbjoiVGFidWxhciBGaWd1cmVzLiJ9LHtuYW1lOicidHJhZCInLGRlc2NyaXB0aW9uOiJUcmFkaXRpb25hbCBGb3Jtcy4gQXBwbGllcyBvbmx5IHRvIENoaW5lc2UgYW5kIEphcGFuZXNlLiJ9LHtuYW1lOicidHdpZCInLGRlc2NyaXB0aW9uOiJUaGlyZCBXaWR0aHMuIEdlbmVyYWxseSB1c2VkIG9ubHkgaW4gQ0pLViBmb250cy4ifSx7bmFtZTonInVuaWMiJyxkZXNjcmlwdGlvbjoiVW5pY2FzZS4ifSx7bmFtZTonInZhbHQiJyxkZXNjcmlwdGlvbjoiQWx0ZXJuYXRlIFZlcnRpY2FsIE1ldHJpY3MuIEFwcGxpZXMgb25seSB0byBzY3JpcHRzIHdpdGggdmVydGljYWwgd3JpdGluZyBtb2Rlcy4ifSx7bmFtZTonInZhdHUiJyxkZXNjcmlwdGlvbjoiVmF0dHUgVmFyaWFudHMuIFVzZWQgZm9yIEluZGljIHNjcmlwdHMuIEUuZy4gRGV2YW5hZ2FyaS4ifSx7bmFtZTonInZlcnQiJyxkZXNjcmlwdGlvbjoiVmVydGljYWwgQWx0ZXJuYXRlcy4gQXBwbGllcyBvbmx5IHRvIHNjcmlwdHMgd2l0aCB2ZXJ0aWNhbCB3cml0aW5nIG1vZGVzLiJ9LHtuYW1lOicidmhhbCInLGRlc2NyaXB0aW9uOiJBbHRlcm5hdGUgVmVydGljYWwgSGFsZiBNZXRyaWNzLiBVc2VkIG9ubHkgaW4gQ0pLViBmb250cy4ifSx7bmFtZTonInZqbW8iJyxkZXNjcmlwdGlvbjoiVm93ZWwgSmFtbyBGb3Jtcy4gUmVxdWlyZWQgZm9yIEhhbmd1bCBzY3JpcHQgd2hlbiBBbmNpZW50IEhhbmd1bCB3cml0aW5nIHN5c3RlbSBpcyBzdXBwb3J0ZWQuIn0se25hbWU6JyJ2a25hIicsZGVzY3JpcHRpb246IlZlcnRpY2FsIEthbmEgQWx0ZXJuYXRlcy4gQXBwbGllcyBvbmx5IHRvIGZvbnRzIHRoYXQgc3VwcG9ydCBrYW5hIChoaXJhZ2FuYSBhbmQga2F0YWthbmEpLiJ9LHtuYW1lOicidmtybiInLGRlc2NyaXB0aW9uOiJWZXJ0aWNhbCBLZXJuaW5nLiJ9LHtuYW1lOicidnBhbCInLGRlc2NyaXB0aW9uOiJQcm9wb3J0aW9uYWwgQWx0ZXJuYXRlIFZlcnRpY2FsIE1ldHJpY3MuIFVzZWQgbW9zdGx5IGluIENKS1YgZm9udHMuIn0se25hbWU6JyJ2cnQyIicsZGVzY3JpcHRpb246IlZlcnRpY2FsIEFsdGVybmF0ZXMgYW5kIFJvdGF0aW9uLiBBcHBsaWVzIG9ubHkgdG8gc2NyaXB0cyB3aXRoIHZlcnRpY2FsIHdyaXRpbmcgbW9kZXMuIn0se25hbWU6JyJ6ZXJvIicsZGVzY3JpcHRpb246IlNsYXNoZWQgWmVyby4ifSx7bmFtZToibm9ybWFsIixkZXNjcmlwdGlvbjoiTm8gY2hhbmdlIGluIGdseXBoIHN1YnN0aXR1dGlvbiBvciBwb3NpdGlvbmluZyBvY2N1cnMuIn0se25hbWU6Im9mZiIsZGVzY3JpcHRpb246IkRpc2FibGUgZmVhdHVyZS4ifSx7bmFtZToib24iLGRlc2NyaXB0aW9uOiJFbmFibGUgZmVhdHVyZS4ifV0sYXRSdWxlOiJAZm9udC1mYWNlIixzeW50YXg6Im5vcm1hbCB8IDxmZWF0dXJlLXRhZy12YWx1ZT4jIixyZWxldmFuY2U6NTcscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2ZvbnQtZmVhdHVyZS1zZXR0aW5ncyJ9XSxkZXNjcmlwdGlvbjoiUHJvdmlkZXMgbG93LWxldmVsIGNvbnRyb2wgb3ZlciBPcGVuVHlwZSBmb250IGZlYXR1cmVzLiBJdCBpcyBpbnRlbmRlZCBhcyBhIHdheSBvZiBwcm92aWRpbmcgYWNjZXNzIHRvIGZvbnQgZmVhdHVyZXMgdGhhdCBhcmUgbm90IHdpZGVseSB1c2VkIGJ1dCBhcmUgbmVlZGVkIGZvciBhIHBhcnRpY3VsYXIgdXNlIGNhc2UuIixyZXN0cmljdGlvbnM6WyJzdHJpbmciLCJpbnRlZ2VyIl19LHtuYW1lOiJmb250LWtlcm5pbmciLGJyb3dzZXJzOlsiRTc5IiwiRkYzMiIsIlM5IiwiQzMzIiwiTzIwIl0sdmFsdWVzOlt7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IlNwZWNpZmllcyB0aGF0IGtlcm5pbmcgaXMgYXBwbGllZCBhdCB0aGUgZGlzY3JldGlvbiBvZiB0aGUgdXNlciBhZ2VudC4ifSx7bmFtZToibm9uZSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyB0aGF0IGtlcm5pbmcgaXMgbm90IGFwcGxpZWQuIn0se25hbWU6Im5vcm1hbCIsZGVzY3JpcHRpb246IlNwZWNpZmllcyB0aGF0IGtlcm5pbmcgaXMgYXBwbGllZC4ifV0sc3ludGF4OiJhdXRvIHwgbm9ybWFsIHwgbm9uZSIscmVsZXZhbmNlOjUwLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9mb250LWtlcm5pbmcifV0sZGVzY3JpcHRpb246Iktlcm5pbmcgaXMgdGhlIGNvbnRleHR1YWwgYWRqdXN0bWVudCBvZiBpbnRlci1nbHlwaCBzcGFjaW5nLiBUaGlzIHByb3BlcnR5IGNvbnRyb2xzIG1ldHJpYyBrZXJuaW5nLCBrZXJuaW5nIHRoYXQgdXRpbGl6ZXMgYWRqdXN0bWVudCBkYXRhIGNvbnRhaW5lZCBpbiB0aGUgZm9udC4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6ImZvbnQtbGFuZ3VhZ2Utb3ZlcnJpZGUiLGJyb3dzZXJzOlsiRkYzNCJdLHZhbHVlczpbe25hbWU6Im5vcm1hbCIsZGVzY3JpcHRpb246IkltcGxpZXMgdGhhdCB3aGVuIHJlbmRlcmluZyB3aXRoIE9wZW5UeXBlIGZvbnRzIHRoZSBsYW5ndWFnZSBvZiB0aGUgZG9jdW1lbnQgaXMgdXNlZCB0byBpbmZlciB0aGUgT3BlblR5cGUgbGFuZ3VhZ2Ugc3lzdGVtLCB1c2VkIHRvIHNlbGVjdCBsYW5ndWFnZSBzcGVjaWZpYyBmZWF0dXJlcyB3aGVuIHJlbmRlcmluZy4ifV0sc3ludGF4OiJub3JtYWwgfCA8c3RyaW5nPiIscmVsZXZhbmNlOjUwLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9mb250LWxhbmd1YWdlLW92ZXJyaWRlIn1dLGRlc2NyaXB0aW9uOiJUaGUgdmFsdWUgb2YgJ25vcm1hbCcgaW1wbGllcyB0aGF0IHdoZW4gcmVuZGVyaW5nIHdpdGggT3BlblR5cGUgZm9udHMgdGhlIGxhbmd1YWdlIG9mIHRoZSBkb2N1bWVudCBpcyB1c2VkIHRvIGluZmVyIHRoZSBPcGVuVHlwZSBsYW5ndWFnZSBzeXN0ZW0sIHVzZWQgdG8gc2VsZWN0IGxhbmd1YWdlIHNwZWNpZmljIGZlYXR1cmVzIHdoZW4gcmVuZGVyaW5nLiIscmVzdHJpY3Rpb25zOlsic3RyaW5nIl19LHtuYW1lOiJmb250LXNpemUiLGJyb3dzZXJzOlsiRTEyIiwiRkYxIiwiUzEiLCJDMSIsIklFNS41IiwiTzciXSx2YWx1ZXM6W3tuYW1lOiJsYXJnZSJ9LHtuYW1lOiJsYXJnZXIifSx7bmFtZToibWVkaXVtIn0se25hbWU6InNtYWxsIn0se25hbWU6InNtYWxsZXIifSx7bmFtZToieC1sYXJnZSJ9LHtuYW1lOiJ4LXNtYWxsIn0se25hbWU6Inh4LWxhcmdlIn0se25hbWU6Inh4LXNtYWxsIn1dLHN5bnRheDoiPGFic29sdXRlLXNpemU+IHwgPHJlbGF0aXZlLXNpemU+IHwgPGxlbmd0aC1wZXJjZW50YWdlPiIscmVsZXZhbmNlOjk0LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9mb250LXNpemUifV0sZGVzY3JpcHRpb246IkluZGljYXRlcyB0aGUgZGVzaXJlZCBoZWlnaHQgb2YgZ2x5cGhzIGZyb20gdGhlIGZvbnQuIEZvciBzY2FsYWJsZSBmb250cywgdGhlIGZvbnQtc2l6ZSBpcyBhIHNjYWxlIGZhY3RvciBhcHBsaWVkIHRvIHRoZSBFTSB1bml0IG9mIHRoZSBmb250LiAoTm90ZSB0aGF0IGNlcnRhaW4gZ2x5cGhzIG1heSBibGVlZCBvdXRzaWRlIHRoZWlyIEVNIGJveC4pIEZvciBub24tc2NhbGFibGUgZm9udHMsIHRoZSBmb250LXNpemUgaXMgY29udmVydGVkIGludG8gYWJzb2x1dGUgdW5pdHMgYW5kIG1hdGNoZWQgYWdhaW5zdCB0aGUgZGVjbGFyZWQgZm9udC1zaXplIG9mIHRoZSBmb250LCB1c2luZyB0aGUgc2FtZSBhYnNvbHV0ZSBjb29yZGluYXRlIHNwYWNlIGZvciBib3RoIG9mIHRoZSBtYXRjaGVkIHZhbHVlcy4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsInBlcmNlbnRhZ2UiXX0se25hbWU6ImZvbnQtc2l6ZS1hZGp1c3QiLGJyb3dzZXJzOlsiRkYzIiwiUzE2LjQiXSx2YWx1ZXM6W3tuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiRG8gbm90IHByZXNlcnZlIHRoZSBmb250J3MgeC1oZWlnaHQuIn1dLHN5bnRheDoibm9uZSB8IFsgZXgtaGVpZ2h0IHwgY2FwLWhlaWdodCB8IGNoLXdpZHRoIHwgaWMtd2lkdGggfCBpYy1oZWlnaHQgXT8gWyBmcm9tLWZvbnQgfCA8bnVtYmVyPiBdIixyZWxldmFuY2U6NTAscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2ZvbnQtc2l6ZS1hZGp1c3QifV0sZGVzY3JpcHRpb246IlByZXNlcnZlcyB0aGUgcmVhZGFiaWxpdHkgb2YgdGV4dCB3aGVuIGZvbnQgZmFsbGJhY2sgb2NjdXJzIGJ5IGFkanVzdGluZyB0aGUgZm9udC1zaXplIHNvIHRoYXQgdGhlIHgtaGVpZ2h0IGlzIHRoZSBzYW1lIHJlZ2FyZGxlc3Mgb2YgdGhlIGZvbnQgdXNlZC4iLHJlc3RyaWN0aW9uczpbIm51bWJlciJdfSx7bmFtZToiZm9udC1zdHJldGNoIixicm93c2VyczpbIkUxMiIsIkZGOSIsIlMxMSIsIkM2MCIsIklFOSIsIk80NyJdLHZhbHVlczpbe25hbWU6ImNvbmRlbnNlZCJ9LHtuYW1lOiJleHBhbmRlZCJ9LHtuYW1lOiJleHRyYS1jb25kZW5zZWQifSx7bmFtZToiZXh0cmEtZXhwYW5kZWQifSx7bmFtZToibmFycm93ZXIiLGJyb3dzZXJzOlsiRTEyIiwiRkY5IiwiUzExIiwiQzYwIiwiSUU5IiwiTzQ3Il0sZGVzY3JpcHRpb246IkluZGljYXRlcyBhIG5hcnJvd2VyIHZhbHVlIHJlbGF0aXZlIHRvIHRoZSB3aWR0aCBvZiB0aGUgcGFyZW50IGVsZW1lbnQuIn0se25hbWU6Im5vcm1hbCJ9LHtuYW1lOiJzZW1pLWNvbmRlbnNlZCJ9LHtuYW1lOiJzZW1pLWV4cGFuZGVkIn0se25hbWU6InVsdHJhLWNvbmRlbnNlZCJ9LHtuYW1lOiJ1bHRyYS1leHBhbmRlZCJ9LHtuYW1lOiJ3aWRlciIsYnJvd3NlcnM6WyJFMTIiLCJGRjkiLCJTMTEiLCJDNjAiLCJJRTkiLCJPNDciXSxkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIGEgd2lkZXIgdmFsdWUgcmVsYXRpdmUgdG8gdGhlIHdpZHRoIG9mIHRoZSBwYXJlbnQgZWxlbWVudC4ifV0sYXRSdWxlOiJAZm9udC1mYWNlIixzeW50YXg6Ijxmb250LXN0cmV0Y2gtYWJzb2x1dGU+ezEsMn0iLHJlbGV2YW5jZTo1NixyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvZm9udC1zdHJldGNoIn1dLGRlc2NyaXB0aW9uOiJTZWxlY3RzIGEgbm9ybWFsLCBjb25kZW5zZWQsIG9yIGV4cGFuZGVkIGZhY2UgZnJvbSBhIGZvbnQgZmFtaWx5LiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiZm9udC1zdHlsZSIsYnJvd3NlcnM6WyJFMTIiLCJGRjEiLCJTMSIsIkMxIiwiSUU0IiwiTzciXSx2YWx1ZXM6W3tuYW1lOiJpdGFsaWMiLGRlc2NyaXB0aW9uOiJTZWxlY3RzIGEgZm9udCB0aGF0IGlzIGxhYmVsZWQgYXMgYW4gJ2l0YWxpYycgZmFjZSwgb3IgYW4gJ29ibGlxdWUnIGZhY2UgaWYgb25lIGlzIG5vdCJ9LHtuYW1lOiJub3JtYWwiLGRlc2NyaXB0aW9uOiJTZWxlY3RzIGEgZmFjZSB0aGF0IGlzIGNsYXNzaWZpZWQgYXMgJ25vcm1hbCcuIn0se25hbWU6Im9ibGlxdWUiLGRlc2NyaXB0aW9uOiJTZWxlY3RzIGEgZm9udCB0aGF0IGlzIGxhYmVsZWQgYXMgYW4gJ29ibGlxdWUnIGZhY2UsIG9yIGFuICdpdGFsaWMnIGZhY2UgaWYgb25lIGlzIG5vdC4ifV0sYXRSdWxlOiJAZm9udC1mYWNlIixzeW50YXg6Im5vcm1hbCB8IGl0YWxpYyB8IG9ibGlxdWUgPGFuZ2xlPnswLDJ9IixyZWxldmFuY2U6ODkscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2ZvbnQtc3R5bGUifV0sZGVzY3JpcHRpb246IkFsbG93cyBpdGFsaWMgb3Igb2JsaXF1ZSBmYWNlcyB0byBiZSBzZWxlY3RlZC4gSXRhbGljIGZvcm1zIGFyZSBnZW5lcmFsbHkgY3Vyc2l2ZSBpbiBuYXR1cmUgd2hpbGUgb2JsaXF1ZSBmYWNlcyBhcmUgdHlwaWNhbGx5IHNsb3BlZCB2ZXJzaW9ucyBvZiB0aGUgcmVndWxhciBmYWNlLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiZm9udC1zeW50aGVzaXMiLGJyb3dzZXJzOlsiRTk3IiwiRkYzNCIsIlM5IiwiQzk3IiwiTzgzIl0sdmFsdWVzOlt7bmFtZToibm9uZSIsZGVzY3JpcHRpb246IkRpc2FsbG93IGFsbCBzeW50aGV0aWMgZmFjZXMuIn0se25hbWU6InN0eWxlIixkZXNjcmlwdGlvbjoiQWxsb3cgc3ludGhldGljIGl0YWxpYyBmYWNlcy4ifSx7bmFtZToid2VpZ2h0IixkZXNjcmlwdGlvbjoiQWxsb3cgc3ludGhldGljIGJvbGQgZmFjZXMuIn1dLHN5bnRheDoibm9uZSB8IFsgd2VpZ2h0IHx8IHN0eWxlIHx8IHNtYWxsLWNhcHMgfHwgcG9zaXRpb25dIixyZWxldmFuY2U6NTAscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2ZvbnQtc3ludGhlc2lzIn1dLGRlc2NyaXB0aW9uOiJDb250cm9scyB3aGV0aGVyIHVzZXIgYWdlbnRzIGFyZSBhbGxvd2VkIHRvIHN5bnRoZXNpemUgYm9sZCBvciBvYmxpcXVlIGZvbnQgZmFjZXMgd2hlbiBhIGZvbnQgZmFtaWx5IGxhY2tzIGJvbGQgb3IgaXRhbGljIGZhY2VzLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiZm9udC12YXJpYW50Iixicm93c2VyczpbIkUxMiIsIkZGMSIsIlMxIiwiQzEiLCJJRTQiLCJPMy41Il0sdmFsdWVzOlt7bmFtZToibm9ybWFsIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgZmFjZSB0aGF0IGlzIG5vdCBsYWJlbGVkIGFzIGEgc21hbGwtY2FwcyBmb250LiJ9LHtuYW1lOiJzbWFsbC1jYXBzIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgZm9udCB0aGF0IGlzIGxhYmVsZWQgYXMgYSBzbWFsbC1jYXBzIGZvbnQuIElmIGEgZ2VudWluZSBzbWFsbC1jYXBzIGZvbnQgaXMgbm90IGF2YWlsYWJsZSwgdXNlciBhZ2VudHMgc2hvdWxkIHNpbXVsYXRlIGEgc21hbGwtY2FwcyBmb250LiJ9XSxzeW50YXg6Im5vcm1hbCB8IG5vbmUgfCBbIDxjb21tb24tbGlnLXZhbHVlcz4gfHwgPGRpc2NyZXRpb25hcnktbGlnLXZhbHVlcz4gfHwgPGhpc3RvcmljYWwtbGlnLXZhbHVlcz4gfHwgPGNvbnRleHR1YWwtYWx0LXZhbHVlcz4gfHwgc3R5bGlzdGljKCA8ZmVhdHVyZS12YWx1ZS1uYW1lPiApIHx8IGhpc3RvcmljYWwtZm9ybXMgfHwgc3R5bGVzZXQoIDxmZWF0dXJlLXZhbHVlLW5hbWU+IyApIHx8IGNoYXJhY3Rlci12YXJpYW50KCA8ZmVhdHVyZS12YWx1ZS1uYW1lPiMgKSB8fCBzd2FzaCggPGZlYXR1cmUtdmFsdWUtbmFtZT4gKSB8fCBvcm5hbWVudHMoIDxmZWF0dXJlLXZhbHVlLW5hbWU+ICkgfHwgYW5ub3RhdGlvbiggPGZlYXR1cmUtdmFsdWUtbmFtZT4gKSB8fCBbIHNtYWxsLWNhcHMgfCBhbGwtc21hbGwtY2FwcyB8IHBldGl0ZS1jYXBzIHwgYWxsLXBldGl0ZS1jYXBzIHwgdW5pY2FzZSB8IHRpdGxpbmctY2FwcyBdIHx8IDxudW1lcmljLWZpZ3VyZS12YWx1ZXM+IHx8IDxudW1lcmljLXNwYWNpbmctdmFsdWVzPiB8fCA8bnVtZXJpYy1mcmFjdGlvbi12YWx1ZXM+IHx8IG9yZGluYWwgfHwgc2xhc2hlZC16ZXJvIHx8IDxlYXN0LWFzaWFuLXZhcmlhbnQtdmFsdWVzPiB8fCA8ZWFzdC1hc2lhbi13aWR0aC12YWx1ZXM+IHx8IHJ1YnkgXSIscmVsZXZhbmNlOjY0LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9mb250LXZhcmlhbnQifV0sZGVzY3JpcHRpb246IlNwZWNpZmllcyB2YXJpYW50IHJlcHJlc2VudGF0aW9ucyBvZiB0aGUgZm9udCIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiZm9udC12YXJpYW50LWFsdGVybmF0ZXMiLGJyb3dzZXJzOlsiRTExMSIsIkZGMzQiLCJTOS4xIiwiQzExMSIsIk85NyJdLHZhbHVlczpbe25hbWU6ImFubm90YXRpb24oKSIsZGVzY3JpcHRpb246IkVuYWJsZXMgZGlzcGxheSBvZiBhbHRlcm5hdGUgYW5ub3RhdGlvbiBmb3Jtcy4ifSx7bmFtZToiY2hhcmFjdGVyLXZhcmlhbnQoKSIsZGVzY3JpcHRpb246IkVuYWJsZXMgZGlzcGxheSBvZiBzcGVjaWZpYyBjaGFyYWN0ZXIgdmFyaWFudHMuIn0se25hbWU6Imhpc3RvcmljYWwtZm9ybXMiLGRlc2NyaXB0aW9uOiJFbmFibGVzIGRpc3BsYXkgb2YgaGlzdG9yaWNhbCBmb3Jtcy4ifSx7bmFtZToibm9ybWFsIixkZXNjcmlwdGlvbjoiTm9uZSBvZiB0aGUgZmVhdHVyZXMgYXJlIGVuYWJsZWQuIn0se25hbWU6Im9ybmFtZW50cygpIixkZXNjcmlwdGlvbjoiRW5hYmxlcyByZXBsYWNlbWVudCBvZiBkZWZhdWx0IGdseXBocyB3aXRoIG9ybmFtZW50cywgaWYgcHJvdmlkZWQgaW4gdGhlIGZvbnQuIn0se25hbWU6InN0eWxlc2V0KCkiLGRlc2NyaXB0aW9uOiJFbmFibGVzIGRpc3BsYXkgd2l0aCBzdHlsaXN0aWMgc2V0cy4ifSx7bmFtZToic3R5bGlzdGljKCkiLGRlc2NyaXB0aW9uOiJFbmFibGVzIGRpc3BsYXkgb2Ygc3R5bGlzdGljIGFsdGVybmF0ZXMuIn0se25hbWU6InN3YXNoKCkiLGRlc2NyaXB0aW9uOiJFbmFibGVzIGRpc3BsYXkgb2Ygc3dhc2ggZ2x5cGhzLiJ9XSxzeW50YXg6Im5vcm1hbCB8IFsgc3R5bGlzdGljKCA8ZmVhdHVyZS12YWx1ZS1uYW1lPiApIHx8IGhpc3RvcmljYWwtZm9ybXMgfHwgc3R5bGVzZXQoIDxmZWF0dXJlLXZhbHVlLW5hbWU+IyApIHx8IGNoYXJhY3Rlci12YXJpYW50KCA8ZmVhdHVyZS12YWx1ZS1uYW1lPiMgKSB8fCBzd2FzaCggPGZlYXR1cmUtdmFsdWUtbmFtZT4gKSB8fCBvcm5hbWVudHMoIDxmZWF0dXJlLXZhbHVlLW5hbWU+ICkgfHwgYW5ub3RhdGlvbiggPGZlYXR1cmUtdmFsdWUtbmFtZT4gKSBdIixyZWxldmFuY2U6NTAscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2ZvbnQtdmFyaWFudC1hbHRlcm5hdGVzIn1dLGRlc2NyaXB0aW9uOiJGb3IgYW55IGdpdmVuIGNoYXJhY3RlciwgZm9udHMgY2FuIHByb3ZpZGUgYSB2YXJpZXR5IG9mIGFsdGVybmF0ZSBnbHlwaHMgaW4gYWRkaXRpb24gdG8gdGhlIGRlZmF1bHQgZ2x5cGggZm9yIHRoYXQgY2hhcmFjdGVyLiBUaGlzIHByb3BlcnR5IHByb3ZpZGVzIGNvbnRyb2wgb3ZlciB0aGUgc2VsZWN0aW9uIG9mIHRoZXNlIGFsdGVybmF0ZSBnbHlwaHMuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJmb250LXZhcmlhbnQtY2FwcyIsYnJvd3NlcnM6WyJFNzkiLCJGRjM0IiwiUzkuMSIsIkM1MiIsIk8zOSJdLHZhbHVlczpbe25hbWU6ImFsbC1wZXRpdGUtY2FwcyIsZGVzY3JpcHRpb246IkVuYWJsZXMgZGlzcGxheSBvZiBwZXRpdGUgY2FwaXRhbHMgZm9yIGJvdGggdXBwZXIgYW5kIGxvd2VyY2FzZSBsZXR0ZXJzLiJ9LHtuYW1lOiJhbGwtc21hbGwtY2FwcyIsZGVzY3JpcHRpb246IkVuYWJsZXMgZGlzcGxheSBvZiBzbWFsbCBjYXBpdGFscyBmb3IgYm90aCB1cHBlciBhbmQgbG93ZXJjYXNlIGxldHRlcnMuIn0se25hbWU6Im5vcm1hbCIsZGVzY3JpcHRpb246Ik5vbmUgb2YgdGhlIGZlYXR1cmVzIGFyZSBlbmFibGVkLiJ9LHtuYW1lOiJwZXRpdGUtY2FwcyIsZGVzY3JpcHRpb246IkVuYWJsZXMgZGlzcGxheSBvZiBwZXRpdGUgY2FwaXRhbHMuIn0se25hbWU6InNtYWxsLWNhcHMiLGRlc2NyaXB0aW9uOiJFbmFibGVzIGRpc3BsYXkgb2Ygc21hbGwgY2FwaXRhbHMuIFNtYWxsLWNhcHMgZ2x5cGhzIHR5cGljYWxseSB1c2UgdGhlIGZvcm0gb2YgdXBwZXJjYXNlIGxldHRlcnMgYnV0IGFyZSByZWR1Y2VkIHRvIHRoZSBzaXplIG9mIGxvd2VyY2FzZSBsZXR0ZXJzLiJ9LHtuYW1lOiJ0aXRsaW5nLWNhcHMiLGRlc2NyaXB0aW9uOiJFbmFibGVzIGRpc3BsYXkgb2YgdGl0bGluZyBjYXBpdGFscy4ifSx7bmFtZToidW5pY2FzZSIsZGVzY3JpcHRpb246IkVuYWJsZXMgZGlzcGxheSBvZiBtaXh0dXJlIG9mIHNtYWxsIGNhcGl0YWxzIGZvciB1cHBlcmNhc2UgbGV0dGVycyB3aXRoIG5vcm1hbCBsb3dlcmNhc2UgbGV0dGVycy4ifV0sc3ludGF4OiJub3JtYWwgfCBzbWFsbC1jYXBzIHwgYWxsLXNtYWxsLWNhcHMgfCBwZXRpdGUtY2FwcyB8IGFsbC1wZXRpdGUtY2FwcyB8IHVuaWNhc2UgfCB0aXRsaW5nLWNhcHMiLHJlbGV2YW5jZTo1MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvZm9udC12YXJpYW50LWNhcHMifV0sZGVzY3JpcHRpb246IlNwZWNpZmllcyBjb250cm9sIG92ZXIgY2FwaXRhbGl6ZWQgZm9ybXMuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJmb250LXZhcmlhbnQtZWFzdC1hc2lhbiIsYnJvd3NlcnM6WyJFNzkiLCJGRjM0IiwiUzkuMSIsIkM2MyIsIk81MCJdLHZhbHVlczpbe25hbWU6ImZ1bGwtd2lkdGgiLGRlc2NyaXB0aW9uOiJFbmFibGVzIHJlbmRlcmluZyBvZiBmdWxsLXdpZHRoIHZhcmlhbnRzLiJ9LHtuYW1lOiJqaXMwNCIsZGVzY3JpcHRpb246IkVuYWJsZXMgcmVuZGVyaW5nIG9mIEpJUzA0IGZvcm1zLiJ9LHtuYW1lOiJqaXM3OCIsZGVzY3JpcHRpb246IkVuYWJsZXMgcmVuZGVyaW5nIG9mIEpJUzc4IGZvcm1zLiJ9LHtuYW1lOiJqaXM4MyIsZGVzY3JpcHRpb246IkVuYWJsZXMgcmVuZGVyaW5nIG9mIEpJUzgzIGZvcm1zLiJ9LHtuYW1lOiJqaXM5MCIsZGVzY3JpcHRpb246IkVuYWJsZXMgcmVuZGVyaW5nIG9mIEpJUzkwIGZvcm1zLiJ9LHtuYW1lOiJub3JtYWwiLGRlc2NyaXB0aW9uOiJOb25lIG9mIHRoZSBmZWF0dXJlcyBhcmUgZW5hYmxlZC4ifSx7bmFtZToicHJvcG9ydGlvbmFsLXdpZHRoIixkZXNjcmlwdGlvbjoiRW5hYmxlcyByZW5kZXJpbmcgb2YgcHJvcG9ydGlvbmFsbHktc3BhY2VkIHZhcmlhbnRzLiJ9LHtuYW1lOiJydWJ5IixkZXNjcmlwdGlvbjoiRW5hYmxlcyBkaXNwbGF5IG9mIHJ1YnkgdmFyaWFudCBnbHlwaHMuIn0se25hbWU6InNpbXBsaWZpZWQiLGRlc2NyaXB0aW9uOiJFbmFibGVzIHJlbmRlcmluZyBvZiBzaW1wbGlmaWVkIGZvcm1zLiJ9LHtuYW1lOiJ0cmFkaXRpb25hbCIsZGVzY3JpcHRpb246IkVuYWJsZXMgcmVuZGVyaW5nIG9mIHRyYWRpdGlvbmFsIGZvcm1zLiJ9XSxzeW50YXg6Im5vcm1hbCB8IFsgPGVhc3QtYXNpYW4tdmFyaWFudC12YWx1ZXM+IHx8IDxlYXN0LWFzaWFuLXdpZHRoLXZhbHVlcz4gfHwgcnVieSBdIixyZWxldmFuY2U6NTAscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2ZvbnQtdmFyaWFudC1lYXN0LWFzaWFuIn1dLGRlc2NyaXB0aW9uOiJBbGxvd3MgY29udHJvbCBvZiBnbHlwaCBzdWJzdGl0dXRlIGFuZCBwb3NpdGlvbmluZyBpbiBFYXN0IEFzaWFuIHRleHQuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJmb250LXZhcmlhbnQtbGlnYXR1cmVzIixicm93c2VyczpbIkU3OSIsIkZGMzQiLCJTOS4xIiwiQzM0IiwiTzIxIl0sdmFsdWVzOlt7bmFtZToiYWRkaXRpb25hbC1saWdhdHVyZXMiLGRlc2NyaXB0aW9uOiJFbmFibGVzIGRpc3BsYXkgb2YgYWRkaXRpb25hbCBsaWdhdHVyZXMuIn0se25hbWU6ImNvbW1vbi1saWdhdHVyZXMiLGRlc2NyaXB0aW9uOiJFbmFibGVzIGRpc3BsYXkgb2YgY29tbW9uIGxpZ2F0dXJlcy4ifSx7bmFtZToiY29udGV4dHVhbCIsYnJvd3NlcnM6WyJFNzkiLCJGRjM0IiwiUzkuMSIsIkMzNCIsIk8yMSJdLGRlc2NyaXB0aW9uOiJFbmFibGVzIGRpc3BsYXkgb2YgY29udGV4dHVhbCBhbHRlcm5hdGVzLiJ9LHtuYW1lOiJkaXNjcmV0aW9uYXJ5LWxpZ2F0dXJlcyIsZGVzY3JpcHRpb246IkVuYWJsZXMgZGlzcGxheSBvZiBkaXNjcmV0aW9uYXJ5IGxpZ2F0dXJlcy4ifSx7bmFtZToiaGlzdG9yaWNhbC1saWdhdHVyZXMiLGRlc2NyaXB0aW9uOiJFbmFibGVzIGRpc3BsYXkgb2YgaGlzdG9yaWNhbCBsaWdhdHVyZXMuIn0se25hbWU6Im5vLWFkZGl0aW9uYWwtbGlnYXR1cmVzIixkZXNjcmlwdGlvbjoiRGlzYWJsZXMgZGlzcGxheSBvZiBhZGRpdGlvbmFsIGxpZ2F0dXJlcy4ifSx7bmFtZToibm8tY29tbW9uLWxpZ2F0dXJlcyIsZGVzY3JpcHRpb246IkRpc2FibGVzIGRpc3BsYXkgb2YgY29tbW9uIGxpZ2F0dXJlcy4ifSx7bmFtZToibm8tY29udGV4dHVhbCIsYnJvd3NlcnM6WyJFNzkiLCJGRjM0IiwiUzkuMSIsIkMzNCIsIk8yMSJdLGRlc2NyaXB0aW9uOiJEaXNhYmxlcyBkaXNwbGF5IG9mIGNvbnRleHR1YWwgYWx0ZXJuYXRlcy4ifSx7bmFtZToibm8tZGlzY3JldGlvbmFyeS1saWdhdHVyZXMiLGRlc2NyaXB0aW9uOiJEaXNhYmxlcyBkaXNwbGF5IG9mIGRpc2NyZXRpb25hcnkgbGlnYXR1cmVzLiJ9LHtuYW1lOiJuby1oaXN0b3JpY2FsLWxpZ2F0dXJlcyIsZGVzY3JpcHRpb246IkRpc2FibGVzIGRpc3BsYXkgb2YgaGlzdG9yaWNhbCBsaWdhdHVyZXMuIn0se25hbWU6Im5vbmUiLGJyb3dzZXJzOlsiRTc5IiwiRkYzNCIsIlM5LjEiLCJDMzQiLCJPMjEiXSxkZXNjcmlwdGlvbjoiRGlzYWJsZXMgYWxsIGxpZ2F0dXJlcy4ifSx7bmFtZToibm9ybWFsIixkZXNjcmlwdGlvbjoiSW1wbGllcyB0aGF0IHRoZSBkZWZhdWx0cyBzZXQgYnkgdGhlIGZvbnQgYXJlIHVzZWQuIn1dLHN5bnRheDoibm9ybWFsIHwgbm9uZSB8IFsgPGNvbW1vbi1saWctdmFsdWVzPiB8fCA8ZGlzY3JldGlvbmFyeS1saWctdmFsdWVzPiB8fCA8aGlzdG9yaWNhbC1saWctdmFsdWVzPiB8fCA8Y29udGV4dHVhbC1hbHQtdmFsdWVzPiBdIixyZWxldmFuY2U6NTIscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2ZvbnQtdmFyaWFudC1saWdhdHVyZXMifV0sZGVzY3JpcHRpb246IlNwZWNpZmllcyBjb250cm9sIG92ZXIgd2hpY2ggbGlnYXR1cmVzIGFyZSBlbmFibGVkIG9yIGRpc2FibGVkLiBBIHZhbHVlIG9mICdub3JtYWwnIGltcGxpZXMgdGhhdCB0aGUgZGVmYXVsdHMgc2V0IGJ5IHRoZSBmb250IGFyZSB1c2VkLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiZm9udC12YXJpYW50LW51bWVyaWMiLGJyb3dzZXJzOlsiRTc5IiwiRkYzNCIsIlM5LjEiLCJDNTIiLCJPMzkiXSx2YWx1ZXM6W3tuYW1lOiJkaWFnb25hbC1mcmFjdGlvbnMiLGRlc2NyaXB0aW9uOiJFbmFibGVzIGRpc3BsYXkgb2YgbGluaW5nIGRpYWdvbmFsIGZyYWN0aW9ucy4ifSx7bmFtZToibGluaW5nLW51bXMiLGRlc2NyaXB0aW9uOiJFbmFibGVzIGRpc3BsYXkgb2YgbGluaW5nIG51bWVyYWxzLiJ9LHtuYW1lOiJub3JtYWwiLGRlc2NyaXB0aW9uOiJOb25lIG9mIHRoZSBmZWF0dXJlcyBhcmUgZW5hYmxlZC4ifSx7bmFtZToib2xkc3R5bGUtbnVtcyIsZGVzY3JpcHRpb246IkVuYWJsZXMgZGlzcGxheSBvZiBvbGQtc3R5bGUgbnVtZXJhbHMuIn0se25hbWU6Im9yZGluYWwiLGRlc2NyaXB0aW9uOiJFbmFibGVzIGRpc3BsYXkgb2YgbGV0dGVyIGZvcm1zIHVzZWQgd2l0aCBvcmRpbmFsIG51bWJlcnMuIn0se25hbWU6InByb3BvcnRpb25hbC1udW1zIixkZXNjcmlwdGlvbjoiRW5hYmxlcyBkaXNwbGF5IG9mIHByb3BvcnRpb25hbCBudW1lcmFscy4ifSx7bmFtZToic2xhc2hlZC16ZXJvIixkZXNjcmlwdGlvbjoiRW5hYmxlcyBkaXNwbGF5IG9mIHNsYXNoZWQgemVyb3MuIn0se25hbWU6InN0YWNrZWQtZnJhY3Rpb25zIixkZXNjcmlwdGlvbjoiRW5hYmxlcyBkaXNwbGF5IG9mIGxpbmluZyBzdGFja2VkIGZyYWN0aW9ucy4ifSx7bmFtZToidGFidWxhci1udW1zIixkZXNjcmlwdGlvbjoiRW5hYmxlcyBkaXNwbGF5IG9mIHRhYnVsYXIgbnVtZXJhbHMuIn1dLHN5bnRheDoibm9ybWFsIHwgWyA8bnVtZXJpYy1maWd1cmUtdmFsdWVzPiB8fCA8bnVtZXJpYy1zcGFjaW5nLXZhbHVlcz4gfHwgPG51bWVyaWMtZnJhY3Rpb24tdmFsdWVzPiB8fCBvcmRpbmFsIHx8IHNsYXNoZWQtemVybyBdIixyZWxldmFuY2U6NTEscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2ZvbnQtdmFyaWFudC1udW1lcmljIn1dLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgY29udHJvbCBvdmVyIG51bWVyaWNhbCBmb3Jtcy4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6ImZvbnQtdmFyaWFudC1wb3NpdGlvbiIsYnJvd3NlcnM6WyJFMTE3IiwiRkYzNCIsIlM5LjEiLCJDMTE3IiwiTzEwMyJdLHZhbHVlczpbe25hbWU6Im5vcm1hbCIsZGVzY3JpcHRpb246Ik5vbmUgb2YgdGhlIGZlYXR1cmVzIGFyZSBlbmFibGVkLiJ9LHtuYW1lOiJzdWIiLGRlc2NyaXB0aW9uOiJFbmFibGVzIGRpc3BsYXkgb2Ygc3Vic2NyaXB0IHZhcmlhbnRzIChPcGVuVHlwZSBmZWF0dXJlOiBzdWJzKS4ifSx7bmFtZToic3VwZXIiLGRlc2NyaXB0aW9uOiJFbmFibGVzIGRpc3BsYXkgb2Ygc3VwZXJzY3JpcHQgdmFyaWFudHMgKE9wZW5UeXBlIGZlYXR1cmU6IHN1cHMpLiJ9XSxzeW50YXg6Im5vcm1hbCB8IHN1YiB8IHN1cGVyIixyZWxldmFuY2U6NTAscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2ZvbnQtdmFyaWFudC1wb3NpdGlvbiJ9XSxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIHRoZSB2ZXJ0aWNhbCBwb3NpdGlvbiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiZm9udC13ZWlnaHQiLGJyb3dzZXJzOlsiRTEyIiwiRkYxIiwiUzEiLCJDMiIsIklFMyIsIk8zLjUiXSx2YWx1ZXM6W3tuYW1lOiIxMDAiLGRlc2NyaXB0aW9uOiJUaGluIn0se25hbWU6IjIwMCIsZGVzY3JpcHRpb246IkV4dHJhIExpZ2h0IChVbHRyYSBMaWdodCkifSx7bmFtZToiMzAwIixkZXNjcmlwdGlvbjoiTGlnaHQifSx7bmFtZToiNDAwIixkZXNjcmlwdGlvbjoiTm9ybWFsIn0se25hbWU6IjUwMCIsZGVzY3JpcHRpb246Ik1lZGl1bSJ9LHtuYW1lOiI2MDAiLGRlc2NyaXB0aW9uOiJTZW1pIEJvbGQgKERlbWkgQm9sZCkifSx7bmFtZToiNzAwIixkZXNjcmlwdGlvbjoiQm9sZCJ9LHtuYW1lOiI4MDAiLGRlc2NyaXB0aW9uOiJFeHRyYSBCb2xkIChVbHRyYSBCb2xkKSJ9LHtuYW1lOiI5MDAiLGRlc2NyaXB0aW9uOiJCbGFjayAoSGVhdnkpIn0se25hbWU6ImJvbGQiLGRlc2NyaXB0aW9uOiJTYW1lIGFzIDcwMCJ9LHtuYW1lOiJib2xkZXIiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgdGhlIHdlaWdodCBvZiB0aGUgZmFjZSBib2xkZXIgdGhhbiB0aGUgaW5oZXJpdGVkIHZhbHVlLiJ9LHtuYW1lOiJsaWdodGVyIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIHRoZSB3ZWlnaHQgb2YgdGhlIGZhY2UgbGlnaHRlciB0aGFuIHRoZSBpbmhlcml0ZWQgdmFsdWUuIn0se25hbWU6Im5vcm1hbCIsZGVzY3JpcHRpb246IlNhbWUgYXMgNDAwIn1dLGF0UnVsZToiQGZvbnQtZmFjZSIsc3ludGF4OiI8Zm9udC13ZWlnaHQtYWJzb2x1dGU+ezEsMn0iLHJlbGV2YW5jZTo5MyxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvZm9udC13ZWlnaHQifV0sZGVzY3JpcHRpb246IlNwZWNpZmllcyB3ZWlnaHQgb2YgZ2x5cGhzIGluIHRoZSBmb250LCB0aGVpciBkZWdyZWUgb2YgYmxhY2tuZXNzIG9yIHN0cm9rZSB0aGlja25lc3MuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJnbHlwaC1vcmllbnRhdGlvbi1ob3Jpem9udGFsIixyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkNvbnRyb2xzIGdseXBoIG9yaWVudGF0aW9uIHdoZW4gdGhlIGlubGluZS1wcm9ncmVzc2lvbi1kaXJlY3Rpb24gaXMgaG9yaXpvbnRhbC4iLHJlc3RyaWN0aW9uczpbImFuZ2xlIiwibnVtYmVyIl19LHtuYW1lOiJnbHlwaC1vcmllbnRhdGlvbi12ZXJ0aWNhbCIsYnJvd3NlcnM6WyJTMTMuMSJdLHZhbHVlczpbe25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJTZXRzIHRoZSBvcmllbnRhdGlvbiBiYXNlZCBvbiB0aGUgZnVsbHdpZHRoIG9yIG5vbi1mdWxsd2lkdGggY2hhcmFjdGVycyBhbmQgdGhlIG1vc3QgY29tbW9uIG9yaWVudGF0aW9uLiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkNvbnRyb2xzIGdseXBoIG9yaWVudGF0aW9uIHdoZW4gdGhlIGlubGluZS1wcm9ncmVzc2lvbi1kaXJlY3Rpb24gaXMgdmVydGljYWwuIixyZXN0cmljdGlvbnM6WyJhbmdsZSIsIm51bWJlciIsImVudW0iXX0se25hbWU6ImdyaWQtYXJlYSIsYnJvd3NlcnM6WyJFMTYiLCJGRjUyIiwiUzEwLjEiLCJDNTciLCJPNDQiXSx2YWx1ZXM6W3tuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiVGhlIHByb3BlcnR5IGNvbnRyaWJ1dGVzIG5vdGhpbmcgdG8gdGhlIGdyaWQgaXRlbSdzIHBsYWNlbWVudCwgaW5kaWNhdGluZyBhdXRvLXBsYWNlbWVudCwgYW4gYXV0b21hdGljIHNwYW4sIG9yIGEgZGVmYXVsdCBzcGFuIG9mIG9uZS4ifSx7bmFtZToic3BhbiIsZGVzY3JpcHRpb246IkNvbnRyaWJ1dGVzIGEgZ3JpZCBzcGFuIHRvIHRoZSBncmlkIGl0ZW0ncyBwbGFjZW1lbnQgc3VjaCB0aGF0IHRoZSBjb3JyZXNwb25kaW5nIGVkZ2Ugb2YgdGhlIGdyaWQgaXRlbSdzIGdyaWQgYXJlYSBpcyBOIGxpbmVzIGZyb20gaXRzIG9wcG9zaXRlIGVkZ2UuIn1dLHN5bnRheDoiPGdyaWQtbGluZT4gWyAvIDxncmlkLWxpbmU+IF17MCwzfSIscmVsZXZhbmNlOjU3LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9ncmlkLWFyZWEifV0sZGVzY3JpcHRpb246IkRldGVybWluZSBhIGdyaWQgaXRlbSdzIHNpemUgYW5kIGxvY2F0aW9uIHdpdGhpbiB0aGUgZ3JpZCBieSBjb250cmlidXRpbmcgYSBsaW5lLCBhIHNwYW4sIG9yIG5vdGhpbmcgKGF1dG9tYXRpYykgdG8gaXRzIGdyaWQgcGxhY2VtZW50LiBTaG9ydGhhbmQgZm9yICdncmlkLXJvdy1zdGFydCcsICdncmlkLWNvbHVtbi1zdGFydCcsICdncmlkLXJvdy1lbmQnLCBhbmQgJ2dyaWQtY29sdW1uLWVuZCcuIixyZXN0cmljdGlvbnM6WyJpZGVudGlmaWVyIiwiaW50ZWdlciJdfSx7bmFtZToiZ3JpZCIsYnJvd3NlcnM6WyJFMTYiLCJGRjUyIiwiUzEwLjEiLCJDNTciLCJPNDQiXSxzeW50YXg6IjwnZ3JpZC10ZW1wbGF0ZSc+IHwgPCdncmlkLXRlbXBsYXRlLXJvd3MnPiAvIFsgYXV0by1mbG93ICYmIGRlbnNlPyBdIDwnZ3JpZC1hdXRvLWNvbHVtbnMnPj8gfCBbIGF1dG8tZmxvdyAmJiBkZW5zZT8gXSA8J2dyaWQtYXV0by1yb3dzJz4/IC8gPCdncmlkLXRlbXBsYXRlLWNvbHVtbnMnPiIscmVsZXZhbmNlOjUwLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9ncmlkIn1dLGRlc2NyaXB0aW9uOiJUaGUgZ3JpZCBDU1MgcHJvcGVydHkgaXMgYSBzaG9ydGhhbmQgcHJvcGVydHkgdGhhdCBzZXRzIGFsbCBvZiB0aGUgZXhwbGljaXQgZ3JpZCBwcm9wZXJ0aWVzICgnZ3JpZC10ZW1wbGF0ZS1yb3dzJywgJ2dyaWQtdGVtcGxhdGUtY29sdW1ucycsIGFuZCAnZ3JpZC10ZW1wbGF0ZS1hcmVhcycpLCBhbmQgYWxsIHRoZSBpbXBsaWNpdCBncmlkIHByb3BlcnRpZXMgKCdncmlkLWF1dG8tcm93cycsICdncmlkLWF1dG8tY29sdW1ucycsIGFuZCAnZ3JpZC1hdXRvLWZsb3cnKSwgaW4gYSBzaW5nbGUgZGVjbGFyYXRpb24uIixyZXN0cmljdGlvbnM6WyJpZGVudGlmaWVyIiwibGVuZ3RoIiwicGVyY2VudGFnZSIsInN0cmluZyIsImVudW0iXX0se25hbWU6ImdyaWQtYXV0by1jb2x1bW5zIixicm93c2VyczpbIkUxNiIsIkZGNzAiLCJTMTAuMSIsIkM1NyIsIklFMTAiLCJPNDQiXSx2YWx1ZXM6W3tuYW1lOiJtaW4tY29udGVudCIsZGVzY3JpcHRpb246IlJlcHJlc2VudHMgdGhlIGxhcmdlc3QgbWluLWNvbnRlbnQgY29udHJpYnV0aW9uIG9mIHRoZSBncmlkIGl0ZW1zIG9jY3VweWluZyB0aGUgZ3JpZCB0cmFjay4ifSx7bmFtZToibWF4LWNvbnRlbnQiLGRlc2NyaXB0aW9uOiJSZXByZXNlbnRzIHRoZSBsYXJnZXN0IG1heC1jb250ZW50IGNvbnRyaWJ1dGlvbiBvZiB0aGUgZ3JpZCBpdGVtcyBvY2N1cHlpbmcgdGhlIGdyaWQgdHJhY2suIn0se25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJBcyBhIG1heGltdW0sIGlkZW50aWNhbCB0byAnbWF4LWNvbnRlbnQnLiBBcyBhIG1pbmltdW0sIHJlcHJlc2VudHMgdGhlIGxhcmdlc3QgbWluaW11bSBzaXplIChhcyBzcGVjaWZpZWQgYnkgbWluLXdpZHRoL21pbi1oZWlnaHQpIG9mIHRoZSBncmlkIGl0ZW1zIG9jY3VweWluZyB0aGUgZ3JpZCB0cmFjay4ifSx7bmFtZToibWlubWF4KCkiLGRlc2NyaXB0aW9uOiJEZWZpbmVzIGEgc2l6ZSByYW5nZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gbWluIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gbWF4LiJ9XSxzeW50YXg6Ijx0cmFjay1zaXplPisiLHJlbGV2YW5jZTo1MSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvZ3JpZC1hdXRvLWNvbHVtbnMifV0sZGVzY3JpcHRpb246IlNwZWNpZmllcyB0aGUgc2l6ZSBvZiBpbXBsaWNpdGx5IGNyZWF0ZWQgY29sdW1ucy4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsInBlcmNlbnRhZ2UiXX0se25hbWU6ImdyaWQtYXV0by1mbG93Iixicm93c2VyczpbIkUxNiIsIkZGNTIiLCJTMTAuMSIsIkM1NyIsIk80NCJdLHZhbHVlczpbe25hbWU6InJvdyIsZGVzY3JpcHRpb246IlRoZSBhdXRvLXBsYWNlbWVudCBhbGdvcml0aG0gcGxhY2VzIGl0ZW1zIGJ5IGZpbGxpbmcgZWFjaCByb3cgaW4gdHVybiwgYWRkaW5nIG5ldyByb3dzIGFzIG5lY2Vzc2FyeS4ifSx7bmFtZToiY29sdW1uIixkZXNjcmlwdGlvbjoiVGhlIGF1dG8tcGxhY2VtZW50IGFsZ29yaXRobSBwbGFjZXMgaXRlbXMgYnkgZmlsbGluZyBlYWNoIGNvbHVtbiBpbiB0dXJuLCBhZGRpbmcgbmV3IGNvbHVtbnMgYXMgbmVjZXNzYXJ5LiJ9LHtuYW1lOiJkZW5zZSIsZGVzY3JpcHRpb246J0lmIHNwZWNpZmllZCwgdGhlIGF1dG8tcGxhY2VtZW50IGFsZ29yaXRobSB1c2VzIGEgImRlbnNlIiBwYWNraW5nIGFsZ29yaXRobSwgd2hpY2ggYXR0ZW1wdHMgdG8gZmlsbCBpbiBob2xlcyBlYXJsaWVyIGluIHRoZSBncmlkIGlmIHNtYWxsZXIgaXRlbXMgY29tZSB1cCBsYXRlci4nfV0sc3ludGF4OiJbIHJvdyB8IGNvbHVtbiBdIHx8IGRlbnNlIixyZWxldmFuY2U6NTMscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2dyaWQtYXV0by1mbG93In1dLGRlc2NyaXB0aW9uOiJDb250cm9scyBob3cgdGhlIGF1dG8tcGxhY2VtZW50IGFsZ29yaXRobSB3b3Jrcywgc3BlY2lmeWluZyBleGFjdGx5IGhvdyBhdXRvLXBsYWNlZCBpdGVtcyBnZXQgZmxvd2VkIGludG8gdGhlIGdyaWQuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJncmlkLWF1dG8tcm93cyIsYnJvd3NlcnM6WyJFMTYiLCJGRjcwIiwiUzEwLjEiLCJDNTciLCJJRTEwIiwiTzQ0Il0sdmFsdWVzOlt7bmFtZToibWluLWNvbnRlbnQiLGRlc2NyaXB0aW9uOiJSZXByZXNlbnRzIHRoZSBsYXJnZXN0IG1pbi1jb250ZW50IGNvbnRyaWJ1dGlvbiBvZiB0aGUgZ3JpZCBpdGVtcyBvY2N1cHlpbmcgdGhlIGdyaWQgdHJhY2suIn0se25hbWU6Im1heC1jb250ZW50IixkZXNjcmlwdGlvbjoiUmVwcmVzZW50cyB0aGUgbGFyZ2VzdCBtYXgtY29udGVudCBjb250cmlidXRpb24gb2YgdGhlIGdyaWQgaXRlbXMgb2NjdXB5aW5nIHRoZSBncmlkIHRyYWNrLiJ9LHtuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiQXMgYSBtYXhpbXVtLCBpZGVudGljYWwgdG8gJ21heC1jb250ZW50Jy4gQXMgYSBtaW5pbXVtLCByZXByZXNlbnRzIHRoZSBsYXJnZXN0IG1pbmltdW0gc2l6ZSAoYXMgc3BlY2lmaWVkIGJ5IG1pbi13aWR0aC9taW4taGVpZ2h0KSBvZiB0aGUgZ3JpZCBpdGVtcyBvY2N1cHlpbmcgdGhlIGdyaWQgdHJhY2suIn0se25hbWU6Im1pbm1heCgpIixkZXNjcmlwdGlvbjoiRGVmaW5lcyBhIHNpemUgcmFuZ2UgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIG1pbiBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIG1heC4ifV0sc3ludGF4OiI8dHJhY2stc2l6ZT4rIixyZWxldmFuY2U6NTIscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2dyaWQtYXV0by1yb3dzIn1dLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgdGhlIHNpemUgb2YgaW1wbGljaXRseSBjcmVhdGVkIHJvd3MuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJwZXJjZW50YWdlIl19LHtuYW1lOiJncmlkLWNvbHVtbiIsYnJvd3NlcnM6WyJFMTYiLCJGRjUyIiwiUzEwLjEiLCJDNTciLCJPNDQiXSx2YWx1ZXM6W3tuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiVGhlIHByb3BlcnR5IGNvbnRyaWJ1dGVzIG5vdGhpbmcgdG8gdGhlIGdyaWQgaXRlbSdzIHBsYWNlbWVudCwgaW5kaWNhdGluZyBhdXRvLXBsYWNlbWVudCwgYW4gYXV0b21hdGljIHNwYW4sIG9yIGEgZGVmYXVsdCBzcGFuIG9mIG9uZS4ifSx7bmFtZToic3BhbiIsZGVzY3JpcHRpb246IkNvbnRyaWJ1dGVzIGEgZ3JpZCBzcGFuIHRvIHRoZSBncmlkIGl0ZW0ncyBwbGFjZW1lbnQgc3VjaCB0aGF0IHRoZSBjb3JyZXNwb25kaW5nIGVkZ2Ugb2YgdGhlIGdyaWQgaXRlbSdzIGdyaWQgYXJlYSBpcyBOIGxpbmVzIGZyb20gaXRzIG9wcG9zaXRlIGVkZ2UuIn1dLHN5bnRheDoiPGdyaWQtbGluZT4gWyAvIDxncmlkLWxpbmU+IF0/IixyZWxldmFuY2U6NTYscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2dyaWQtY29sdW1uIn1dLGRlc2NyaXB0aW9uOiJTaG9ydGhhbmQgZm9yICdncmlkLWNvbHVtbi1zdGFydCcgYW5kICdncmlkLWNvbHVtbi1lbmQnLiIscmVzdHJpY3Rpb25zOlsiaWRlbnRpZmllciIsImludGVnZXIiLCJlbnVtIl19LHtuYW1lOiJncmlkLWNvbHVtbi1lbmQiLGJyb3dzZXJzOlsiRTE2IiwiRkY1MiIsIlMxMC4xIiwiQzU3IiwiTzQ0Il0sdmFsdWVzOlt7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IlRoZSBwcm9wZXJ0eSBjb250cmlidXRlcyBub3RoaW5nIHRvIHRoZSBncmlkIGl0ZW0ncyBwbGFjZW1lbnQsIGluZGljYXRpbmcgYXV0by1wbGFjZW1lbnQsIGFuIGF1dG9tYXRpYyBzcGFuLCBvciBhIGRlZmF1bHQgc3BhbiBvZiBvbmUuIn0se25hbWU6InNwYW4iLGRlc2NyaXB0aW9uOiJDb250cmlidXRlcyBhIGdyaWQgc3BhbiB0byB0aGUgZ3JpZCBpdGVtJ3MgcGxhY2VtZW50IHN1Y2ggdGhhdCB0aGUgY29ycmVzcG9uZGluZyBlZGdlIG9mIHRoZSBncmlkIGl0ZW0ncyBncmlkIGFyZWEgaXMgTiBsaW5lcyBmcm9tIGl0cyBvcHBvc2l0ZSBlZGdlLiJ9XSxzeW50YXg6IjxncmlkLWxpbmU+IixyZWxldmFuY2U6NTEscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2dyaWQtY29sdW1uLWVuZCJ9XSxkZXNjcmlwdGlvbjoiRGV0ZXJtaW5lIGEgZ3JpZCBpdGVtJ3Mgc2l6ZSBhbmQgbG9jYXRpb24gd2l0aGluIHRoZSBncmlkIGJ5IGNvbnRyaWJ1dGluZyBhIGxpbmUsIGEgc3Bhbiwgb3Igbm90aGluZyAoYXV0b21hdGljKSB0byBpdHMgZ3JpZCBwbGFjZW1lbnQuIixyZXN0cmljdGlvbnM6WyJpZGVudGlmaWVyIiwiaW50ZWdlciIsImVudW0iXX0se25hbWU6ImdyaWQtY29sdW1uLWdhcCIsYnJvd3NlcnM6WyJGRjUyIiwiQzU3IiwiUzEwLjEiLCJPNDQiXSxzdGF0dXM6Im9ic29sZXRlIixzeW50YXg6IjxsZW5ndGgtcGVyY2VudGFnZT4iLHJlbGV2YW5jZTo0LGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgdGhlIGd1dHRlcnMgYmV0d2VlbiBncmlkIGNvbHVtbnMuIFJlcGxhY2VkIGJ5ICdjb2x1bW4tZ2FwJyBwcm9wZXJ0eS4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCJdfSx7bmFtZToiZ3JpZC1jb2x1bW4tc3RhcnQiLGJyb3dzZXJzOlsiRTE2IiwiRkY1MiIsIlMxMC4xIiwiQzU3IiwiTzQ0Il0sdmFsdWVzOlt7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IlRoZSBwcm9wZXJ0eSBjb250cmlidXRlcyBub3RoaW5nIHRvIHRoZSBncmlkIGl0ZW0ncyBwbGFjZW1lbnQsIGluZGljYXRpbmcgYXV0by1wbGFjZW1lbnQsIGFuIGF1dG9tYXRpYyBzcGFuLCBvciBhIGRlZmF1bHQgc3BhbiBvZiBvbmUuIn0se25hbWU6InNwYW4iLGRlc2NyaXB0aW9uOiJDb250cmlidXRlcyBhIGdyaWQgc3BhbiB0byB0aGUgZ3JpZCBpdGVtJ3MgcGxhY2VtZW50IHN1Y2ggdGhhdCB0aGUgY29ycmVzcG9uZGluZyBlZGdlIG9mIHRoZSBncmlkIGl0ZW0ncyBncmlkIGFyZWEgaXMgTiBsaW5lcyBmcm9tIGl0cyBvcHBvc2l0ZSBlZGdlLiJ9XSxzeW50YXg6IjxncmlkLWxpbmU+IixyZWxldmFuY2U6NTEscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2dyaWQtY29sdW1uLXN0YXJ0In1dLGRlc2NyaXB0aW9uOiJEZXRlcm1pbmUgYSBncmlkIGl0ZW0ncyBzaXplIGFuZCBsb2NhdGlvbiB3aXRoaW4gdGhlIGdyaWQgYnkgY29udHJpYnV0aW5nIGEgbGluZSwgYSBzcGFuLCBvciBub3RoaW5nIChhdXRvbWF0aWMpIHRvIGl0cyBncmlkIHBsYWNlbWVudC4iLHJlc3RyaWN0aW9uczpbImlkZW50aWZpZXIiLCJpbnRlZ2VyIiwiZW51bSJdfSx7bmFtZToiZ3JpZC1nYXAiLGJyb3dzZXJzOlsiRkY1MiIsIkM1NyIsIlMxMC4xIiwiTzQ0Il0sc3RhdHVzOiJvYnNvbGV0ZSIsc3ludGF4OiI8J2dyaWQtcm93LWdhcCc+IDwnZ3JpZC1jb2x1bW4tZ2FwJz4/IixyZWxldmFuY2U6NSxkZXNjcmlwdGlvbjoiU2hvcnRoYW5kIHRoYXQgc3BlY2lmaWVzIHRoZSBndXR0ZXJzIGJldHdlZW4gZ3JpZCBjb2x1bW5zIGFuZCBncmlkIHJvd3MgaW4gb25lIGRlY2xhcmF0aW9uLiBSZXBsYWNlZCBieSAnZ2FwJyBwcm9wZXJ0eS4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCJdfSx7bmFtZToiZ3JpZC1yb3ciLGJyb3dzZXJzOlsiRTE2IiwiRkY1MiIsIlMxMC4xIiwiQzU3IiwiTzQ0Il0sdmFsdWVzOlt7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IlRoZSBwcm9wZXJ0eSBjb250cmlidXRlcyBub3RoaW5nIHRvIHRoZSBncmlkIGl0ZW0ncyBwbGFjZW1lbnQsIGluZGljYXRpbmcgYXV0by1wbGFjZW1lbnQsIGFuIGF1dG9tYXRpYyBzcGFuLCBvciBhIGRlZmF1bHQgc3BhbiBvZiBvbmUuIn0se25hbWU6InNwYW4iLGRlc2NyaXB0aW9uOiJDb250cmlidXRlcyBhIGdyaWQgc3BhbiB0byB0aGUgZ3JpZCBpdGVtJ3MgcGxhY2VtZW50IHN1Y2ggdGhhdCB0aGUgY29ycmVzcG9uZGluZyBlZGdlIG9mIHRoZSBncmlkIGl0ZW0ncyBncmlkIGFyZWEgaXMgTiBsaW5lcyBmcm9tIGl0cyBvcHBvc2l0ZSBlZGdlLiJ9XSxzeW50YXg6IjxncmlkLWxpbmU+IFsgLyA8Z3JpZC1saW5lPiBdPyIscmVsZXZhbmNlOjU0LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9ncmlkLXJvdyJ9XSxkZXNjcmlwdGlvbjoiU2hvcnRoYW5kIGZvciAnZ3JpZC1yb3ctc3RhcnQnIGFuZCAnZ3JpZC1yb3ctZW5kJy4iLHJlc3RyaWN0aW9uczpbImlkZW50aWZpZXIiLCJpbnRlZ2VyIiwiZW51bSJdfSx7bmFtZToiZ3JpZC1yb3ctZW5kIixicm93c2VyczpbIkUxNiIsIkZGNTIiLCJTMTAuMSIsIkM1NyIsIk80NCJdLHZhbHVlczpbe25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJUaGUgcHJvcGVydHkgY29udHJpYnV0ZXMgbm90aGluZyB0byB0aGUgZ3JpZCBpdGVtJ3MgcGxhY2VtZW50LCBpbmRpY2F0aW5nIGF1dG8tcGxhY2VtZW50LCBhbiBhdXRvbWF0aWMgc3Bhbiwgb3IgYSBkZWZhdWx0IHNwYW4gb2Ygb25lLiJ9LHtuYW1lOiJzcGFuIixkZXNjcmlwdGlvbjoiQ29udHJpYnV0ZXMgYSBncmlkIHNwYW4gdG8gdGhlIGdyaWQgaXRlbSdzIHBsYWNlbWVudCBzdWNoIHRoYXQgdGhlIGNvcnJlc3BvbmRpbmcgZWRnZSBvZiB0aGUgZ3JpZCBpdGVtJ3MgZ3JpZCBhcmVhIGlzIE4gbGluZXMgZnJvbSBpdHMgb3Bwb3NpdGUgZWRnZS4ifV0sc3ludGF4OiI8Z3JpZC1saW5lPiIscmVsZXZhbmNlOjUxLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9ncmlkLXJvdy1lbmQifV0sZGVzY3JpcHRpb246IkRldGVybWluZSBhIGdyaWQgaXRlbSdzIHNpemUgYW5kIGxvY2F0aW9uIHdpdGhpbiB0aGUgZ3JpZCBieSBjb250cmlidXRpbmcgYSBsaW5lLCBhIHNwYW4sIG9yIG5vdGhpbmcgKGF1dG9tYXRpYykgdG8gaXRzIGdyaWQgcGxhY2VtZW50LiIscmVzdHJpY3Rpb25zOlsiaWRlbnRpZmllciIsImludGVnZXIiLCJlbnVtIl19LHtuYW1lOiJncmlkLXJvdy1nYXAiLGJyb3dzZXJzOlsiRkY1MiIsIkM1NyIsIlMxMC4xIiwiTzQ0Il0sc3RhdHVzOiJvYnNvbGV0ZSIsc3ludGF4OiI8bGVuZ3RoLXBlcmNlbnRhZ2U+IixyZWxldmFuY2U6MixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIHRoZSBndXR0ZXJzIGJldHdlZW4gZ3JpZCByb3dzLiBSZXBsYWNlZCBieSAncm93LWdhcCcgcHJvcGVydHkuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiXX0se25hbWU6ImdyaWQtcm93LXN0YXJ0Iixicm93c2VyczpbIkUxNiIsIkZGNTIiLCJTMTAuMSIsIkM1NyIsIk80NCJdLHZhbHVlczpbe25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJUaGUgcHJvcGVydHkgY29udHJpYnV0ZXMgbm90aGluZyB0byB0aGUgZ3JpZCBpdGVtJ3MgcGxhY2VtZW50LCBpbmRpY2F0aW5nIGF1dG8tcGxhY2VtZW50LCBhbiBhdXRvbWF0aWMgc3Bhbiwgb3IgYSBkZWZhdWx0IHNwYW4gb2Ygb25lLiJ9LHtuYW1lOiJzcGFuIixkZXNjcmlwdGlvbjoiQ29udHJpYnV0ZXMgYSBncmlkIHNwYW4gdG8gdGhlIGdyaWQgaXRlbSdzIHBsYWNlbWVudCBzdWNoIHRoYXQgdGhlIGNvcnJlc3BvbmRpbmcgZWRnZSBvZiB0aGUgZ3JpZCBpdGVtJ3MgZ3JpZCBhcmVhIGlzIE4gbGluZXMgZnJvbSBpdHMgb3Bwb3NpdGUgZWRnZS4ifV0sc3ludGF4OiI8Z3JpZC1saW5lPiIscmVsZXZhbmNlOjUxLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9ncmlkLXJvdy1zdGFydCJ9XSxkZXNjcmlwdGlvbjoiRGV0ZXJtaW5lIGEgZ3JpZCBpdGVtJ3Mgc2l6ZSBhbmQgbG9jYXRpb24gd2l0aGluIHRoZSBncmlkIGJ5IGNvbnRyaWJ1dGluZyBhIGxpbmUsIGEgc3Bhbiwgb3Igbm90aGluZyAoYXV0b21hdGljKSB0byBpdHMgZ3JpZCBwbGFjZW1lbnQuIixyZXN0cmljdGlvbnM6WyJpZGVudGlmaWVyIiwiaW50ZWdlciIsImVudW0iXX0se25hbWU6ImdyaWQtdGVtcGxhdGUiLGJyb3dzZXJzOlsiRTE2IiwiRkY1MiIsIlMxMC4xIiwiQzU3IiwiTzQ0Il0sdmFsdWVzOlt7bmFtZToibm9uZSIsZGVzY3JpcHRpb246IlNldHMgYWxsIHRocmVlIHByb3BlcnRpZXMgdG8gdGhlaXIgaW5pdGlhbCB2YWx1ZXMuIn0se25hbWU6Im1pbi1jb250ZW50IixkZXNjcmlwdGlvbjoiUmVwcmVzZW50cyB0aGUgbGFyZ2VzdCBtaW4tY29udGVudCBjb250cmlidXRpb24gb2YgdGhlIGdyaWQgaXRlbXMgb2NjdXB5aW5nIHRoZSBncmlkIHRyYWNrLiJ9LHtuYW1lOiJtYXgtY29udGVudCIsZGVzY3JpcHRpb246IlJlcHJlc2VudHMgdGhlIGxhcmdlc3QgbWF4LWNvbnRlbnQgY29udHJpYnV0aW9uIG9mIHRoZSBncmlkIGl0ZW1zIG9jY3VweWluZyB0aGUgZ3JpZCB0cmFjay4ifSx7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IkFzIGEgbWF4aW11bSwgaWRlbnRpY2FsIHRvICdtYXgtY29udGVudCcuIEFzIGEgbWluaW11bSwgcmVwcmVzZW50cyB0aGUgbGFyZ2VzdCBtaW5pbXVtIHNpemUgKGFzIHNwZWNpZmllZCBieSBtaW4td2lkdGgvbWluLWhlaWdodCkgb2YgdGhlIGdyaWQgaXRlbXMgb2NjdXB5aW5nIHRoZSBncmlkIHRyYWNrLiJ9LHtuYW1lOiJzdWJncmlkIixkZXNjcmlwdGlvbjoiU2V0cyAnZ3JpZC10ZW1wbGF0ZS1yb3dzJyBhbmQgJ2dyaWQtdGVtcGxhdGUtY29sdW1ucycgdG8gJ3N1YmdyaWQnLCBhbmQgJ2dyaWQtdGVtcGxhdGUtYXJlYXMnIHRvIGl0cyBpbml0aWFsIHZhbHVlLiJ9LHtuYW1lOiJtaW5tYXgoKSIsZGVzY3JpcHRpb246IkRlZmluZXMgYSBzaXplIHJhbmdlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byBtaW4gYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byBtYXguIn0se25hbWU6InJlcGVhdCgpIixkZXNjcmlwdGlvbjoiUmVwcmVzZW50cyBhIHJlcGVhdGVkIGZyYWdtZW50IG9mIHRoZSB0cmFjayBsaXN0LCBhbGxvd2luZyBhIGxhcmdlIG51bWJlciBvZiBjb2x1bW5zIG9yIHJvd3MgdGhhdCBleGhpYml0IGEgcmVjdXJyaW5nIHBhdHRlcm4gdG8gYmUgd3JpdHRlbiBpbiBhIG1vcmUgY29tcGFjdCBmb3JtLiJ9XSxzeW50YXg6Im5vbmUgfCBbIDwnZ3JpZC10ZW1wbGF0ZS1yb3dzJz4gLyA8J2dyaWQtdGVtcGxhdGUtY29sdW1ucyc+IF0gfCBbIDxsaW5lLW5hbWVzPj8gPHN0cmluZz4gPHRyYWNrLXNpemU+PyA8bGluZS1uYW1lcz4/IF0rIFsgLyA8ZXhwbGljaXQtdHJhY2stbGlzdD4gXT8iLHJlbGV2YW5jZTo1MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvZ3JpZC10ZW1wbGF0ZSJ9XSxkZXNjcmlwdGlvbjoiU2hvcnRoYW5kIGZvciBzZXR0aW5nIGdyaWQtdGVtcGxhdGUtY29sdW1ucywgZ3JpZC10ZW1wbGF0ZS1yb3dzLCBhbmQgZ3JpZC10ZW1wbGF0ZS1hcmVhcyBpbiBhIHNpbmdsZSBkZWNsYXJhdGlvbi4iLHJlc3RyaWN0aW9uczpbImlkZW50aWZpZXIiLCJsZW5ndGgiLCJwZXJjZW50YWdlIiwic3RyaW5nIiwiZW51bSJdfSx7bmFtZToiZ3JpZC10ZW1wbGF0ZS1hcmVhcyIsYnJvd3NlcnM6WyJFMTYiLCJGRjUyIiwiUzEwLjEiLCJDNTciLCJPNDQiXSx2YWx1ZXM6W3tuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiVGhlIGdyaWQgY29udGFpbmVyIGRvZXNuJ3QgZGVmaW5lIGFueSBuYW1lZCBncmlkIGFyZWFzLiJ9XSxzeW50YXg6Im5vbmUgfCA8c3RyaW5nPisiLHJlbGV2YW5jZTo1NCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvZ3JpZC10ZW1wbGF0ZS1hcmVhcyJ9XSxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIG5hbWVkIGdyaWQgYXJlYXMsIHdoaWNoIGFyZSBub3QgYXNzb2NpYXRlZCB3aXRoIGFueSBwYXJ0aWN1bGFyIGdyaWQgaXRlbSwgYnV0IGNhbiBiZSByZWZlcmVuY2VkIGZyb20gdGhlIGdyaWQtcGxhY2VtZW50IHByb3BlcnRpZXMuIixyZXN0cmljdGlvbnM6WyJzdHJpbmciXX0se25hbWU6ImdyaWQtdGVtcGxhdGUtY29sdW1ucyIsYnJvd3NlcnM6WyJFMTYiLCJGRjUyIiwiUzEwLjEiLCJDNTciLCJJRTEwIiwiTzQ0Il0sdmFsdWVzOlt7bmFtZToibm9uZSIsZGVzY3JpcHRpb246IlRoZXJlIGlzIG5vIGV4cGxpY2l0IGdyaWQ7IGFueSByb3dzL2NvbHVtbnMgd2lsbCBiZSBpbXBsaWNpdGx5IGdlbmVyYXRlZC4ifSx7bmFtZToibWluLWNvbnRlbnQiLGRlc2NyaXB0aW9uOiJSZXByZXNlbnRzIHRoZSBsYXJnZXN0IG1pbi1jb250ZW50IGNvbnRyaWJ1dGlvbiBvZiB0aGUgZ3JpZCBpdGVtcyBvY2N1cHlpbmcgdGhlIGdyaWQgdHJhY2suIn0se25hbWU6Im1heC1jb250ZW50IixkZXNjcmlwdGlvbjoiUmVwcmVzZW50cyB0aGUgbGFyZ2VzdCBtYXgtY29udGVudCBjb250cmlidXRpb24gb2YgdGhlIGdyaWQgaXRlbXMgb2NjdXB5aW5nIHRoZSBncmlkIHRyYWNrLiJ9LHtuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiQXMgYSBtYXhpbXVtLCBpZGVudGljYWwgdG8gJ21heC1jb250ZW50Jy4gQXMgYSBtaW5pbXVtLCByZXByZXNlbnRzIHRoZSBsYXJnZXN0IG1pbmltdW0gc2l6ZSAoYXMgc3BlY2lmaWVkIGJ5IG1pbi13aWR0aC9taW4taGVpZ2h0KSBvZiB0aGUgZ3JpZCBpdGVtcyBvY2N1cHlpbmcgdGhlIGdyaWQgdHJhY2suIn0se25hbWU6InN1YmdyaWQiLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgdGhhdCB0aGUgZ3JpZCB3aWxsIGFsaWduIHRvIGl0cyBwYXJlbnQgZ3JpZCBpbiB0aGF0IGF4aXMuIn0se25hbWU6Im1pbm1heCgpIixkZXNjcmlwdGlvbjoiRGVmaW5lcyBhIHNpemUgcmFuZ2UgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIG1pbiBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIG1heC4ifSx7bmFtZToicmVwZWF0KCkiLGRlc2NyaXB0aW9uOiJSZXByZXNlbnRzIGEgcmVwZWF0ZWQgZnJhZ21lbnQgb2YgdGhlIHRyYWNrIGxpc3QsIGFsbG93aW5nIGEgbGFyZ2UgbnVtYmVyIG9mIGNvbHVtbnMgb3Igcm93cyB0aGF0IGV4aGliaXQgYSByZWN1cnJpbmcgcGF0dGVybiB0byBiZSB3cml0dGVuIGluIGEgbW9yZSBjb21wYWN0IGZvcm0uIn1dLHN5bnRheDoibm9uZSB8IDx0cmFjay1saXN0PiB8IDxhdXRvLXRyYWNrLWxpc3Q+IHwgc3ViZ3JpZCA8bGluZS1uYW1lLWxpc3Q+PyIscmVsZXZhbmNlOjY0LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9ncmlkLXRlbXBsYXRlLWNvbHVtbnMifV0sZGVzY3JpcHRpb246InNwZWNpZmllcywgYXMgYSBzcGFjZS1zZXBhcmF0ZWQgdHJhY2sgbGlzdCwgdGhlIGxpbmUgbmFtZXMgYW5kIHRyYWNrIHNpemluZyBmdW5jdGlvbnMgb2YgdGhlIGdyaWQuIixyZXN0cmljdGlvbnM6WyJpZGVudGlmaWVyIiwibGVuZ3RoIiwicGVyY2VudGFnZSIsImVudW0iXX0se25hbWU6ImdyaWQtdGVtcGxhdGUtcm93cyIsYnJvd3NlcnM6WyJFMTYiLCJGRjUyIiwiUzEwLjEiLCJDNTciLCJJRTEwIiwiTzQ0Il0sdmFsdWVzOlt7bmFtZToibm9uZSIsZGVzY3JpcHRpb246IlRoZXJlIGlzIG5vIGV4cGxpY2l0IGdyaWQ7IGFueSByb3dzL2NvbHVtbnMgd2lsbCBiZSBpbXBsaWNpdGx5IGdlbmVyYXRlZC4ifSx7bmFtZToibWluLWNvbnRlbnQiLGRlc2NyaXB0aW9uOiJSZXByZXNlbnRzIHRoZSBsYXJnZXN0IG1pbi1jb250ZW50IGNvbnRyaWJ1dGlvbiBvZiB0aGUgZ3JpZCBpdGVtcyBvY2N1cHlpbmcgdGhlIGdyaWQgdHJhY2suIn0se25hbWU6Im1heC1jb250ZW50IixkZXNjcmlwdGlvbjoiUmVwcmVzZW50cyB0aGUgbGFyZ2VzdCBtYXgtY29udGVudCBjb250cmlidXRpb24gb2YgdGhlIGdyaWQgaXRlbXMgb2NjdXB5aW5nIHRoZSBncmlkIHRyYWNrLiJ9LHtuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiQXMgYSBtYXhpbXVtLCBpZGVudGljYWwgdG8gJ21heC1jb250ZW50Jy4gQXMgYSBtaW5pbXVtLCByZXByZXNlbnRzIHRoZSBsYXJnZXN0IG1pbmltdW0gc2l6ZSAoYXMgc3BlY2lmaWVkIGJ5IG1pbi13aWR0aC9taW4taGVpZ2h0KSBvZiB0aGUgZ3JpZCBpdGVtcyBvY2N1cHlpbmcgdGhlIGdyaWQgdHJhY2suIn0se25hbWU6InN1YmdyaWQiLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgdGhhdCB0aGUgZ3JpZCB3aWxsIGFsaWduIHRvIGl0cyBwYXJlbnQgZ3JpZCBpbiB0aGF0IGF4aXMuIn0se25hbWU6Im1pbm1heCgpIixkZXNjcmlwdGlvbjoiRGVmaW5lcyBhIHNpemUgcmFuZ2UgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIG1pbiBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIG1heC4ifSx7bmFtZToicmVwZWF0KCkiLGRlc2NyaXB0aW9uOiJSZXByZXNlbnRzIGEgcmVwZWF0ZWQgZnJhZ21lbnQgb2YgdGhlIHRyYWNrIGxpc3QsIGFsbG93aW5nIGEgbGFyZ2UgbnVtYmVyIG9mIGNvbHVtbnMgb3Igcm93cyB0aGF0IGV4aGliaXQgYSByZWN1cnJpbmcgcGF0dGVybiB0byBiZSB3cml0dGVuIGluIGEgbW9yZSBjb21wYWN0IGZvcm0uIn1dLHN5bnRheDoibm9uZSB8IDx0cmFjay1saXN0PiB8IDxhdXRvLXRyYWNrLWxpc3Q+IHwgc3ViZ3JpZCA8bGluZS1uYW1lLWxpc3Q+PyIscmVsZXZhbmNlOjU3LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9ncmlkLXRlbXBsYXRlLXJvd3MifV0sZGVzY3JpcHRpb246InNwZWNpZmllcywgYXMgYSBzcGFjZS1zZXBhcmF0ZWQgdHJhY2sgbGlzdCwgdGhlIGxpbmUgbmFtZXMgYW5kIHRyYWNrIHNpemluZyBmdW5jdGlvbnMgb2YgdGhlIGdyaWQuIixyZXN0cmljdGlvbnM6WyJpZGVudGlmaWVyIiwibGVuZ3RoIiwicGVyY2VudGFnZSIsInN0cmluZyIsImVudW0iXX0se25hbWU6ImhlaWdodCIsYnJvd3NlcnM6WyJFMTIiLCJGRjEiLCJTMSIsIkMxIiwiSUU0IiwiTzciXSx2YWx1ZXM6W3tuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiVGhlIGhlaWdodCBkZXBlbmRzIG9uIHRoZSB2YWx1ZXMgb2Ygb3RoZXIgcHJvcGVydGllcy4ifSx7bmFtZToiZml0LWNvbnRlbnQiLGJyb3dzZXJzOlsiRTEyIiwiRkYxIiwiUzEiLCJDMSIsIklFNCIsIk83Il0sZGVzY3JpcHRpb246IlVzZSB0aGUgZml0LWNvbnRlbnQgaW5saW5lIHNpemUgb3IgZml0LWNvbnRlbnQgYmxvY2sgc2l6ZSwgYXMgYXBwcm9wcmlhdGUgdG8gdGhlIHdyaXRpbmcgbW9kZS4ifSx7bmFtZToibWF4LWNvbnRlbnQiLGJyb3dzZXJzOlsiRTEyIiwiRkYxIiwiUzEiLCJDMSIsIklFNCIsIk83Il0sZGVzY3JpcHRpb246IlVzZSB0aGUgbWF4LWNvbnRlbnQgaW5saW5lIHNpemUgb3IgbWF4LWNvbnRlbnQgYmxvY2sgc2l6ZSwgYXMgYXBwcm9wcmlhdGUgdG8gdGhlIHdyaXRpbmcgbW9kZS4ifSx7bmFtZToibWluLWNvbnRlbnQiLGJyb3dzZXJzOlsiRTEyIiwiRkYxIiwiUzEiLCJDMSIsIklFNCIsIk83Il0sZGVzY3JpcHRpb246IlVzZSB0aGUgbWluLWNvbnRlbnQgaW5saW5lIHNpemUgb3IgbWluLWNvbnRlbnQgYmxvY2sgc2l6ZSwgYXMgYXBwcm9wcmlhdGUgdG8gdGhlIHdyaXRpbmcgbW9kZS4ifV0sc3ludGF4OiJhdXRvIHwgPGxlbmd0aD4gfCA8cGVyY2VudGFnZT4gfCBtaW4tY29udGVudCB8IG1heC1jb250ZW50IHwgZml0LWNvbnRlbnQgfCBmaXQtY29udGVudCg8bGVuZ3RoLXBlcmNlbnRhZ2U+KSIscmVsZXZhbmNlOjk2LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9oZWlnaHQifV0sZGVzY3JpcHRpb246IlNwZWNpZmllcyB0aGUgaGVpZ2h0IG9mIHRoZSBjb250ZW50IGFyZWEsIHBhZGRpbmcgYXJlYSBvciBib3JkZXIgYXJlYSAoZGVwZW5kaW5nIG9uICdib3gtc2l6aW5nJykgb2YgY2VydGFpbiBib3hlcy4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsInBlcmNlbnRhZ2UiXX0se25hbWU6Imh5cGhlbnMiLGJyb3dzZXJzOlsiRTc5IiwiRkY0MyIsIlMxNyIsIkM1NSIsIklFMTAiLCJPNDIiXSx2YWx1ZXM6W3tuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiQ29uZGl0aW9uYWwgaHlwaGVuYXRpb24gY2hhcmFjdGVycyBpbnNpZGUgYSB3b3JkLCBpZiBwcmVzZW50LCB0YWtlIHByaW9yaXR5IG92ZXIgYXV0b21hdGljIHJlc291cmNlcyB3aGVuIGRldGVybWluaW5nIGh5cGhlbmF0aW9uIHBvaW50cyB3aXRoaW4gdGhlIHdvcmQuIn0se25hbWU6Im1hbnVhbCIsZGVzY3JpcHRpb246IldvcmRzIGFyZSBvbmx5IGJyb2tlbiBhdCBsaW5lIGJyZWFrcyB3aGVyZSB0aGVyZSBhcmUgY2hhcmFjdGVycyBpbnNpZGUgdGhlIHdvcmQgdGhhdCBzdWdnZXN0IGxpbmUgYnJlYWsgb3Bwb3J0dW5pdGllcyJ9LHtuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiV29yZHMgYXJlIG5vdCBicm9rZW4gYXQgbGluZSBicmVha3MsIGV2ZW4gaWYgY2hhcmFjdGVycyBpbnNpZGUgdGhlIHdvcmQgc3VnZ2VzdCBsaW5lIGJyZWFrIHBvaW50cy4ifV0sc3ludGF4OiJub25lIHwgbWFudWFsIHwgYXV0byIscmVsZXZhbmNlOjU2LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9oeXBoZW5zIn1dLGRlc2NyaXB0aW9uOiJDb250cm9scyB3aGV0aGVyIGh5cGhlbmF0aW9uIGlzIGFsbG93ZWQgdG8gY3JlYXRlIG1vcmUgYnJlYWsgb3Bwb3J0dW5pdGllcyB3aXRoaW4gYSBsaW5lIG9mIHRleHQuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJpbWFnZS1vcmllbnRhdGlvbiIsYnJvd3NlcnM6WyJFODEiLCJGRjI2IiwiUzEzLjEiLCJDODEiLCJPNjciXSx2YWx1ZXM6W3tuYW1lOiJmbGlwIixkZXNjcmlwdGlvbjoiQWZ0ZXIgcm90YXRpbmcgYnkgdGhlIHByZWNlZGVkaW5nIGFuZ2xlLCB0aGUgaW1hZ2UgaXMgZmxpcHBlZCBob3Jpem9udGFsbHkuIERlZmF1bHRzIHRvIDBkZWcgaWYgdGhlIGFuZ2xlIGlzIG9tbWl0dGVkLiJ9LHtuYW1lOiJmcm9tLWltYWdlIixkZXNjcmlwdGlvbjoiSWYgdGhlIGltYWdlIGhhcyBhbiBvcmllbnRhdGlvbiBzcGVjaWZpZWQgaW4gaXRzIG1ldGFkYXRhLCBzdWNoIGFzIEVYSUYsIHRoaXMgdmFsdWUgY29tcHV0ZXMgdG8gdGhlIGFuZ2xlIHRoYXQgdGhlIG1ldGFkYXRhIHNwZWNpZmllcyBpcyBuZWNlc3NhcnkgdG8gY29ycmVjdGx5IG9yaWVudCB0aGUgaW1hZ2UuIn1dLHN5bnRheDoiZnJvbS1pbWFnZSB8IDxhbmdsZT4gfCBbIDxhbmdsZT4/IGZsaXAgXSIscmVsZXZhbmNlOjUwLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9pbWFnZS1vcmllbnRhdGlvbiJ9XSxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGFuIG9ydGhvZ29uYWwgcm90YXRpb24gdG8gYmUgYXBwbGllZCB0byBhbiBpbWFnZSBiZWZvcmUgaXQgaXMgbGFpZCBvdXQuIixyZXN0cmljdGlvbnM6WyJhbmdsZSJdfSx7bmFtZToiaW1hZ2UtcmVuZGVyaW5nIixicm93c2VyczpbIkU3OSIsIkZGMy42IiwiUzYiLCJDMTMiLCJPMTUiXSx2YWx1ZXM6W3tuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiVGhlIGltYWdlIHNob3VsZCBiZSBzY2FsZWQgd2l0aCBhbiBhbGdvcml0aG0gdGhhdCBtYXhpbWl6ZXMgdGhlIGFwcGVhcmFuY2Ugb2YgdGhlIGltYWdlLiJ9LHtuYW1lOiJjcmlzcC1lZGdlcyIsZGVzY3JpcHRpb246IlRoZSBpbWFnZSBtdXN0IGJlIHNjYWxlZCB3aXRoIGFuIGFsZ29yaXRobSB0aGF0IHByZXNlcnZlcyBjb250cmFzdCBhbmQgZWRnZXMgaW4gdGhlIGltYWdlLCBhbmQgd2hpY2ggZG9lcyBub3Qgc21vb3RoIGNvbG9ycyBvciBpbnRyb2R1Y2UgYmx1ciB0byB0aGUgaW1hZ2UgaW4gdGhlIHByb2Nlc3MuIn0se25hbWU6Ii1tb3otY3Jpc3AtZWRnZXMiLGJyb3dzZXJzOlsiRTc5IiwiRkYzLjYiLCJTNiIsIkMxMyIsIk8xNSJdfSx7bmFtZToib3B0aW1pemVRdWFsaXR5IixkZXNjcmlwdGlvbjoiRGVwcmVjYXRlZC4ifSx7bmFtZToib3B0aW1pemVTcGVlZCIsZGVzY3JpcHRpb246IkRlcHJlY2F0ZWQuIn0se25hbWU6InBpeGVsYXRlZCIsZGVzY3JpcHRpb246IldoZW4gc2NhbGluZyB0aGUgaW1hZ2UgdXAsIHRoZSAnbmVhcmVzdCBuZWlnaGJvcicgb3Igc2ltaWxhciBhbGdvcml0aG0gbXVzdCBiZSB1c2VkLCBzbyB0aGF0IHRoZSBpbWFnZSBhcHBlYXJzIHRvIGJlIHNpbXBseSBjb21wb3NlZCBvZiB2ZXJ5IGxhcmdlIHBpeGVscy4ifV0sc3ludGF4OiJhdXRvIHwgY3Jpc3AtZWRnZXMgfCBwaXhlbGF0ZWQiLHJlbGV2YW5jZTo1NCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvaW1hZ2UtcmVuZGVyaW5nIn1dLGRlc2NyaXB0aW9uOiJQcm92aWRlcyBhIGhpbnQgdG8gdGhlIHVzZXItYWdlbnQgYWJvdXQgd2hhdCBhc3BlY3RzIG9mIGFuIGltYWdlIGFyZSBtb3N0IGltcG9ydGFudCB0byBwcmVzZXJ2ZSB3aGVuIHRoZSBpbWFnZSBpcyBzY2FsZWQsIHRvIGFpZCB0aGUgdXNlci1hZ2VudCBpbiB0aGUgY2hvaWNlIG9mIGFuIGFwcHJvcHJpYXRlIHNjYWxpbmcgYWxnb3JpdGhtLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiaW1lLW1vZGUiLGJyb3dzZXJzOlsiRTEyIiwiRkYzIiwiSUU1Il0sdmFsdWVzOlt7bmFtZToiYWN0aXZlIixkZXNjcmlwdGlvbjoiVGhlIGlucHV0IG1ldGhvZCBlZGl0b3IgaXMgaW5pdGlhbGx5IGFjdGl2ZTsgdGV4dCBlbnRyeSBpcyBwZXJmb3JtZWQgdXNpbmcgaXQgdW5sZXNzIHRoZSB1c2VyIHNwZWNpZmljYWxseSBkaXNtaXNzZXMgaXQuIn0se25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJObyBjaGFuZ2UgaXMgbWFkZSB0byB0aGUgY3VycmVudCBpbnB1dCBtZXRob2QgZWRpdG9yIHN0YXRlLiBUaGlzIGlzIHRoZSBkZWZhdWx0LiJ9LHtuYW1lOiJkaXNhYmxlZCIsZGVzY3JpcHRpb246IlRoZSBpbnB1dCBtZXRob2QgZWRpdG9yIGlzIGRpc2FibGVkIGFuZCBtYXkgbm90IGJlIGFjdGl2YXRlZCBieSB0aGUgdXNlci4ifSx7bmFtZToiaW5hY3RpdmUiLGRlc2NyaXB0aW9uOiJUaGUgaW5wdXQgbWV0aG9kIGVkaXRvciBpcyBpbml0aWFsbHkgaW5hY3RpdmUsIGJ1dCB0aGUgdXNlciBtYXkgYWN0aXZhdGUgaXQgaWYgdGhleSB3aXNoLiJ9LHtuYW1lOiJub3JtYWwiLGRlc2NyaXB0aW9uOiJUaGUgSU1FIHN0YXRlIHNob3VsZCBiZSBub3JtYWw7IHRoaXMgdmFsdWUgY2FuIGJlIHVzZWQgaW4gYSB1c2VyIHN0eWxlIHNoZWV0IHRvIG92ZXJyaWRlIHRoZSBwYWdlIHNldHRpbmcuIn1dLHN0YXR1czoib2Jzb2xldGUiLHN5bnRheDoiYXV0byB8IG5vcm1hbCB8IGFjdGl2ZSB8IGluYWN0aXZlIHwgZGlzYWJsZWQiLHJlbGV2YW5jZTowLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9pbWUtbW9kZSJ9XSxkZXNjcmlwdGlvbjoiQ29udHJvbHMgdGhlIHN0YXRlIG9mIHRoZSBpbnB1dCBtZXRob2QgZWRpdG9yIGZvciB0ZXh0IGZpZWxkcy4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6ImlubGluZS1zaXplIixicm93c2VyczpbIkU3OSIsIkZGNDEiLCJTMTIuMSIsIkM1NyIsIk80NCJdLHZhbHVlczpbe25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJEZXBlbmRzIG9uIHRoZSB2YWx1ZXMgb2Ygb3RoZXIgcHJvcGVydGllcy4ifV0sc3ludGF4OiI8J3dpZHRoJz4iLHJlbGV2YW5jZTo1NCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvaW5saW5lLXNpemUifV0sZGVzY3JpcHRpb246IlNpemUgb2YgYW4gZWxlbWVudCBpbiB0aGUgZGlyZWN0aW9uIHNwZWNpZmllZCBieSAnd3JpdGluZy1tb2RlJy4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsInBlcmNlbnRhZ2UiXX0se25hbWU6Imlzb2xhdGlvbiIsYnJvd3NlcnM6WyJFNzkiLCJGRjM2IiwiUzgiLCJDNDEiLCJPMzAiXSx2YWx1ZXM6W3tuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiRWxlbWVudHMgYXJlIG5vdCBpc29sYXRlZCB1bmxlc3MgYW4gb3BlcmF0aW9uIGlzIGFwcGxpZWQgdGhhdCBjYXVzZXMgdGhlIGNyZWF0aW9uIG9mIGEgc3RhY2tpbmcgY29udGV4dC4ifSx7bmFtZToiaXNvbGF0ZSIsZGVzY3JpcHRpb246IkluIENTUyB3aWxsIHR1cm4gdGhlIGVsZW1lbnQgaW50byBhIHN0YWNraW5nIGNvbnRleHQuIn1dLHN5bnRheDoiYXV0byB8IGlzb2xhdGUiLHJlbGV2YW5jZTo1NCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvaXNvbGF0aW9uIn1dLGRlc2NyaXB0aW9uOiJJbiBDU1Mgc2V0dGluZyB0byAnaXNvbGF0ZScgd2lsbCB0dXJuIHRoZSBlbGVtZW50IGludG8gYSBzdGFja2luZyBjb250ZXh0LiBJbiBTVkcsIGl0IGRlZmluZXMgd2hldGhlciBhbiBlbGVtZW50IGlzIGlzb2xhdGVkIG9yIG5vdC4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Imp1c3RpZnktY29udGVudCIsYnJvd3NlcnM6WyJFMTIiLCJGRjIwIiwiUzkiLCJDMjkiLCJJRTExIiwiTzEyLjEiXSx2YWx1ZXM6W3tuYW1lOiJjZW50ZXIiLGRlc2NyaXB0aW9uOiJGbGV4IGl0ZW1zIGFyZSBwYWNrZWQgdG93YXJkIHRoZSBjZW50ZXIgb2YgdGhlIGxpbmUuIn0se25hbWU6InN0YXJ0IixkZXNjcmlwdGlvbjoiVGhlIGl0ZW1zIGFyZSBwYWNrZWQgZmx1c2ggdG8gZWFjaCBvdGhlciB0b3dhcmQgdGhlIHN0YXJ0IGVkZ2Ugb2YgdGhlIGFsaWdubWVudCBjb250YWluZXIgaW4gdGhlIG1haW4gYXhpcy4ifSx7bmFtZToiZW5kIixkZXNjcmlwdGlvbjoiVGhlIGl0ZW1zIGFyZSBwYWNrZWQgZmx1c2ggdG8gZWFjaCBvdGhlciB0b3dhcmQgdGhlIGVuZCBlZGdlIG9mIHRoZSBhbGlnbm1lbnQgY29udGFpbmVyIGluIHRoZSBtYWluIGF4aXMuIn0se25hbWU6ImxlZnQiLGRlc2NyaXB0aW9uOiJUaGUgaXRlbXMgYXJlIHBhY2tlZCBmbHVzaCB0byBlYWNoIG90aGVyIHRvd2FyZCB0aGUgbGVmdCBlZGdlIG9mIHRoZSBhbGlnbm1lbnQgY29udGFpbmVyIGluIHRoZSBtYWluIGF4aXMuIn0se25hbWU6InJpZ2h0IixkZXNjcmlwdGlvbjoiVGhlIGl0ZW1zIGFyZSBwYWNrZWQgZmx1c2ggdG8gZWFjaCBvdGhlciB0b3dhcmQgdGhlIHJpZ2h0IGVkZ2Ugb2YgdGhlIGFsaWdubWVudCBjb250YWluZXIgaW4gdGhlIG1haW4gYXhpcy4ifSx7bmFtZToic2FmZSIsZGVzY3JpcHRpb246IklmIHRoZSBzaXplIG9mIHRoZSBpdGVtIG92ZXJmbG93cyB0aGUgYWxpZ25tZW50IGNvbnRhaW5lciwgdGhlIGl0ZW0gaXMgaW5zdGVhZCBhbGlnbmVkIGFzIGlmIHRoZSBhbGlnbm1lbnQgbW9kZSB3ZXJlIHN0YXJ0LiJ9LHtuYW1lOiJ1bnNhZmUiLGRlc2NyaXB0aW9uOiJSZWdhcmRsZXNzIG9mIHRoZSByZWxhdGl2ZSBzaXplcyBvZiB0aGUgaXRlbSBhbmQgYWxpZ25tZW50IGNvbnRhaW5lciwgdGhlIGdpdmVuIGFsaWdubWVudCB2YWx1ZSBpcyBob25vcmVkLiJ9LHtuYW1lOiJzdHJldGNoIixkZXNjcmlwdGlvbjoiSWYgdGhlIGNvbWJpbmVkIHNpemUgb2YgdGhlIGFsaWdubWVudCBzdWJqZWN0cyBpcyBsZXNzIHRoYW4gdGhlIHNpemUgb2YgdGhlIGFsaWdubWVudCBjb250YWluZXIsIGFueSBhdXRvLXNpemVkIGFsaWdubWVudCBzdWJqZWN0cyBoYXZlIHRoZWlyIHNpemUgaW5jcmVhc2VkIGVxdWFsbHkgKG5vdCBwcm9wb3J0aW9uYWxseSksIHdoaWxlIHN0aWxsIHJlc3BlY3RpbmcgdGhlIGNvbnN0cmFpbnRzIGltcG9zZWQgYnkgbWF4LWhlaWdodC9tYXgtd2lkdGggKG9yIGVxdWl2YWxlbnQgZnVuY3Rpb25hbGl0eSksIHNvIHRoYXQgdGhlIGNvbWJpbmVkIHNpemUgZXhhY3RseSBmaWxscyB0aGUgYWxpZ25tZW50IGNvbnRhaW5lci4ifSx7bmFtZToic3BhY2UtZXZlbmx5IixkZXNjcmlwdGlvbjoiVGhlIGl0ZW1zIGFyZSBldmVubHkgZGlzdHJpYnV0ZWQgd2l0aGluIHRoZSBhbGlnbm1lbnQgY29udGFpbmVyIGFsb25nIHRoZSBtYWluIGF4aXMuIn0se25hbWU6ImZsZXgtZW5kIixkZXNjcmlwdGlvbjoiRmxleCBpdGVtcyBhcmUgcGFja2VkIHRvd2FyZCB0aGUgZW5kIG9mIHRoZSBsaW5lLiJ9LHtuYW1lOiJmbGV4LXN0YXJ0IixkZXNjcmlwdGlvbjoiRmxleCBpdGVtcyBhcmUgcGFja2VkIHRvd2FyZCB0aGUgc3RhcnQgb2YgdGhlIGxpbmUuIn0se25hbWU6InNwYWNlLWFyb3VuZCIsZGVzY3JpcHRpb246IkZsZXggaXRlbXMgYXJlIGV2ZW5seSBkaXN0cmlidXRlZCBpbiB0aGUgbGluZSwgd2l0aCBoYWxmLXNpemUgc3BhY2VzIG9uIGVpdGhlciBlbmQuIn0se25hbWU6InNwYWNlLWJldHdlZW4iLGRlc2NyaXB0aW9uOiJGbGV4IGl0ZW1zIGFyZSBldmVubHkgZGlzdHJpYnV0ZWQgaW4gdGhlIGxpbmUuIn0se25hbWU6ImJhc2VsaW5lIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIHBhcnRpY2lwYXRpb24gaW4gZmlyc3QtYmFzZWxpbmUgYWxpZ25tZW50LiJ9LHtuYW1lOiJmaXJzdCBiYXNlbGluZSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBwYXJ0aWNpcGF0aW9uIGluIGZpcnN0LWJhc2VsaW5lIGFsaWdubWVudC4ifSx7bmFtZToibGFzdCBiYXNlbGluZSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBwYXJ0aWNpcGF0aW9uIGluIGxhc3QtYmFzZWxpbmUgYWxpZ25tZW50LiJ9XSxzeW50YXg6Im5vcm1hbCB8IDxjb250ZW50LWRpc3RyaWJ1dGlvbj4gfCA8b3ZlcmZsb3ctcG9zaXRpb24+PyBbIDxjb250ZW50LXBvc2l0aW9uPiB8IGxlZnQgfCByaWdodCBdIixyZWxldmFuY2U6ODcscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2p1c3RpZnktY29udGVudCJ9XSxkZXNjcmlwdGlvbjoiQWxpZ25zIGZsZXggaXRlbXMgYWxvbmcgdGhlIG1haW4gYXhpcyBvZiB0aGUgY3VycmVudCBsaW5lIG9mIHRoZSBmbGV4IGNvbnRhaW5lci4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Imtlcm5pbmciLHZhbHVlczpbe25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgdGhhdCB0aGUgdXNlciBhZ2VudCBzaG91bGQgYWRqdXN0IGludGVyLWdseXBoIHNwYWNpbmcgYmFzZWQgb24ga2VybmluZyB0YWJsZXMgdGhhdCBhcmUgaW5jbHVkZWQgaW4gdGhlIGZvbnQgdGhhdCB3aWxsIGJlIHVzZWQuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIHdoZXRoZXIgdGhlIHVzZXIgYWdlbnQgc2hvdWxkIGFkanVzdCBpbnRlci1nbHlwaCBzcGFjaW5nIGJhc2VkIG9uIGtlcm5pbmcgdGFibGVzIHRoYXQgYXJlIGluY2x1ZGVkIGluIHRoZSByZWxldmFudCBmb250IG9yIGluc3RlYWQgZGlzYWJsZSBhdXRvLWtlcm5pbmcgYW5kIHNldCBpbnRlci1jaGFyYWN0ZXIgc3BhY2luZyB0byBhIHNwZWNpZmljIGxlbmd0aC4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsImVudW0iXX0se25hbWU6ImxlZnQiLGJyb3dzZXJzOlsiRTEyIiwiRkYxIiwiUzEiLCJDMSIsIklFNS41IiwiTzUiXSx2YWx1ZXM6W3tuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiRm9yIG5vbi1yZXBsYWNlZCBlbGVtZW50cywgdGhlIGVmZmVjdCBvZiB0aGlzIHZhbHVlIGRlcGVuZHMgb24gd2hpY2ggb2YgcmVsYXRlZCBwcm9wZXJ0aWVzIGhhdmUgdGhlIHZhbHVlICdhdXRvJyBhcyB3ZWxsIn1dLHN5bnRheDoiPGxlbmd0aD4gfCA8cGVyY2VudGFnZT4gfCBhdXRvIixyZWxldmFuY2U6OTQscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2xlZnQifV0sZGVzY3JpcHRpb246IlNwZWNpZmllcyBob3cgZmFyIGFuIGFic29sdXRlbHkgcG9zaXRpb25lZCBib3gncyBsZWZ0IG1hcmdpbiBlZGdlIGlzIG9mZnNldCB0byB0aGUgcmlnaHQgb2YgdGhlIGxlZnQgZWRnZSBvZiB0aGUgYm94J3MgJ2NvbnRhaW5pbmcgYmxvY2snLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwicGVyY2VudGFnZSJdfSx7bmFtZToibGV0dGVyLXNwYWNpbmciLGJyb3dzZXJzOlsiRTEyIiwiRkYxIiwiUzEiLCJDMSIsIklFNCIsIk8zLjUiXSx2YWx1ZXM6W3tuYW1lOiJub3JtYWwiLGRlc2NyaXB0aW9uOiJUaGUgc3BhY2luZyBpcyB0aGUgbm9ybWFsIHNwYWNpbmcgZm9yIHRoZSBjdXJyZW50IGZvbnQuIEl0IGlzIHR5cGljYWxseSB6ZXJvLWxlbmd0aC4ifV0sc3ludGF4OiJub3JtYWwgfCA8bGVuZ3RoPiIscmVsZXZhbmNlOjgxLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9sZXR0ZXItc3BhY2luZyJ9XSxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIHRoZSBtaW5pbXVtLCBtYXhpbXVtLCBhbmQgb3B0aW1hbCBzcGFjaW5nIGJldHdlZW4gZ3JhcGhlbWUgY2x1c3RlcnMuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiXX0se25hbWU6ImxpZ2h0aW5nLWNvbG9yIixicm93c2VyczpbIkUxMiIsIkZGMyIsIlM2IiwiQzUiLCJJRSIsIk8xNSJdLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiRGVmaW5lcyB0aGUgY29sb3Igb2YgdGhlIGxpZ2h0IHNvdXJjZSBmb3IgZmlsdGVyIHByaW1pdGl2ZXMgJ2ZlRGlmZnVzZUxpZ2h0aW5nJyBhbmQgJ2ZlU3BlY3VsYXJMaWdodGluZycuIixyZXN0cmljdGlvbnM6WyJjb2xvciJdfSx7bmFtZToibGluZS1icmVhayIsYnJvd3NlcnM6WyJFMTQiLCJGRjY5IiwiUzExIiwiQzU4IiwiSUU1LjUiLCJPNDUiXSx2YWx1ZXM6W3tuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiVGhlIFVBIGRldGVybWluZXMgdGhlIHNldCBvZiBsaW5lLWJyZWFraW5nIHJlc3RyaWN0aW9ucyB0byB1c2UgZm9yIENKSyBzY3JpcHRzLCBhbmQgaXQgbWF5IHZhcnkgdGhlIHJlc3RyaWN0aW9ucyBiYXNlZCBvbiB0aGUgbGVuZ3RoIG9mIHRoZSBsaW5lOyBlLmcuLCB1c2UgYSBsZXNzIHJlc3RyaWN0aXZlIHNldCBvZiBsaW5lLWJyZWFrIHJ1bGVzIGZvciBzaG9ydCBsaW5lcy4ifSx7bmFtZToibG9vc2UiLGRlc2NyaXB0aW9uOiJCcmVha3MgdGV4dCB1c2luZyB0aGUgbGVhc3QgcmVzdHJpY3RpdmUgc2V0IG9mIGxpbmUtYnJlYWtpbmcgcnVsZXMuIFR5cGljYWxseSB1c2VkIGZvciBzaG9ydCBsaW5lcywgc3VjaCBhcyBpbiBuZXdzcGFwZXJzLiJ9LHtuYW1lOiJub3JtYWwiLGRlc2NyaXB0aW9uOiJCcmVha3MgdGV4dCB1c2luZyB0aGUgbW9zdCBjb21tb24gc2V0IG9mIGxpbmUtYnJlYWtpbmcgcnVsZXMuIn0se25hbWU6InN0cmljdCIsZGVzY3JpcHRpb246IkJyZWFrcyBDSksgc2NyaXB0cyB1c2luZyBhIG1vcmUgcmVzdHJpY3RpdmUgc2V0IG9mIGxpbmUtYnJlYWtpbmcgcnVsZXMgdGhhbiAnbm9ybWFsJy4ifSx7bmFtZToiYW55d2hlcmUiLGRlc2NyaXB0aW9uOiJUaGVyZSBpcyBhIHNvZnQgd3JhcCBvcHBvcnR1bml0eSBhcm91bmQgZXZlcnkgdHlwb2dyYXBoaWMgY2hhcmFjdGVyIHVuaXQsIGluY2x1ZGluZyBhcm91bmQgYW55IHB1bmN0dWF0aW9uIGNoYXJhY3RlciBvciBwcmVzZXJ2ZWQgd2hpdGUgc3BhY2VzLCBvciBpbiB0aGUgbWlkZGxlIG9mIHdvcmRzLCBkaXNyZWdhcmRpbmcgYW55IHByb2hpYml0aW9uIGFnYWluc3QgbGluZSBicmVha3MsIGV2ZW4gdGhvc2UgaW50cm9kdWNlZCBieSBjaGFyYWN0ZXJzIHdpdGggdGhlIEdMLCBXSiwgb3IgWldKIGxpbmUgYnJlYWtpbmcgY2xhc3NlcyBvciBtYW5kYXRlZCBieSB0aGUgd29yZC1icmVhayBwcm9wZXJ0eS4ifV0sc3ludGF4OiJhdXRvIHwgbG9vc2UgfCBub3JtYWwgfCBzdHJpY3QgfCBhbnl3aGVyZSIscmVsZXZhbmNlOjUyLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9saW5lLWJyZWFrIn1dLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgd2hhdCBzZXQgb2YgbGluZSBicmVha2luZyByZXN0cmljdGlvbnMgYXJlIGluIGVmZmVjdCB3aXRoaW4gdGhlIGVsZW1lbnQuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJsaW5lLWhlaWdodCIsYnJvd3NlcnM6WyJFMTIiLCJGRjEiLCJTMSIsIkMxIiwiSUU0IiwiTzciXSx2YWx1ZXM6W3tuYW1lOiJub3JtYWwiLGRlc2NyaXB0aW9uOiJUZWxscyB1c2VyIGFnZW50cyB0byBzZXQgdGhlIGNvbXB1dGVkIHZhbHVlIHRvIGEgJ3JlYXNvbmFibGUnIHZhbHVlIGJhc2VkIG9uIHRoZSBmb250IHNpemUgb2YgdGhlIGVsZW1lbnQuIn1dLHN5bnRheDoibm9ybWFsIHwgPG51bWJlcj4gfCA8bGVuZ3RoPiB8IDxwZXJjZW50YWdlPiIscmVsZXZhbmNlOjkyLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9saW5lLWhlaWdodCJ9XSxkZXNjcmlwdGlvbjoiRGV0ZXJtaW5lcyB0aGUgYmxvY2stcHJvZ3Jlc3Npb24gZGltZW5zaW9uIG9mIHRoZSB0ZXh0IGNvbnRlbnQgYXJlYSBvZiBhbiBpbmxpbmUgYm94LiIscmVzdHJpY3Rpb25zOlsibnVtYmVyIiwibGVuZ3RoIiwicGVyY2VudGFnZSJdfSx7bmFtZToibGlzdC1zdHlsZSIsYnJvd3NlcnM6WyJFMTIiLCJGRjEiLCJTMSIsIkMxIiwiSUU0IiwiTzciXSx2YWx1ZXM6W3tuYW1lOiJhcm1lbmlhbiJ9LHtuYW1lOiJjaXJjbGUiLGRlc2NyaXB0aW9uOiJBIGhvbGxvdyBjaXJjbGUuIn0se25hbWU6ImRlY2ltYWwifSx7bmFtZToiZGVjaW1hbC1sZWFkaW5nLXplcm8ifSx7bmFtZToiZGlzYyIsZGVzY3JpcHRpb246IkEgZmlsbGVkIGNpcmNsZS4ifSx7bmFtZToiZ2VvcmdpYW4ifSx7bmFtZToiaW5zaWRlIixkZXNjcmlwdGlvbjoiVGhlIG1hcmtlciBib3ggaXMgb3V0c2lkZSB0aGUgcHJpbmNpcGFsIGJsb2NrIGJveCwgYXMgZGVzY3JpYmVkIGluIHRoZSBzZWN0aW9uIG9uIHRoZSA6Om1hcmtlciBwc2V1ZG8tZWxlbWVudCBiZWxvdy4ifSx7bmFtZToibG93ZXItYWxwaGEifSx7bmFtZToibG93ZXItZ3JlZWsifSx7bmFtZToibG93ZXItbGF0aW4ifSx7bmFtZToibG93ZXItcm9tYW4ifSx7bmFtZToibm9uZSJ9LHtuYW1lOiJvdXRzaWRlIixkZXNjcmlwdGlvbjoiVGhlIDo6bWFya2VyIHBzZXVkby1lbGVtZW50IGlzIGFuIGlubGluZSBlbGVtZW50IHBsYWNlZCBpbW1lZGlhdGVseSBiZWZvcmUgYWxsIDo6YmVmb3JlIHBzZXVkby1lbGVtZW50cyBpbiB0aGUgcHJpbmNpcGFsIGJsb2NrIGJveCwgYWZ0ZXIgd2hpY2ggdGhlIGVsZW1lbnQncyBjb250ZW50IGZsb3dzLiJ9LHtuYW1lOiJzcXVhcmUiLGRlc2NyaXB0aW9uOiJBIGZpbGxlZCBzcXVhcmUuIn0se25hbWU6InN5bWJvbHMoKSIsYnJvd3NlcnM6WyJFMTIiLCJGRjEiLCJTMSIsIkMxIiwiSUU0IiwiTzciXSxkZXNjcmlwdGlvbjoiQWxsb3dzIGEgY291bnRlciBzdHlsZSB0byBiZSBkZWZpbmVkIGlubGluZS4ifSx7bmFtZToidXBwZXItYWxwaGEifSx7bmFtZToidXBwZXItbGF0aW4ifSx7bmFtZToidXBwZXItcm9tYW4ifSx7bmFtZToidXJsKCkifV0sc3ludGF4OiI8J2xpc3Qtc3R5bGUtdHlwZSc+IHx8IDwnbGlzdC1zdHlsZS1wb3NpdGlvbic+IHx8IDwnbGlzdC1zdHlsZS1pbWFnZSc+IixyZWxldmFuY2U6ODMscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2xpc3Qtc3R5bGUifV0sZGVzY3JpcHRpb246IlNob3J0aGFuZCBmb3Igc2V0dGluZyAnbGlzdC1zdHlsZS10eXBlJywgJ2xpc3Qtc3R5bGUtcG9zaXRpb24nIGFuZCAnbGlzdC1zdHlsZS1pbWFnZSciLHJlc3RyaWN0aW9uczpbImltYWdlIiwiZW51bSIsInVybCJdfSx7bmFtZToibGlzdC1zdHlsZS1pbWFnZSIsYnJvd3NlcnM6WyJFMTIiLCJGRjEiLCJTMSIsIkMxIiwiSUU0IiwiTzciXSx2YWx1ZXM6W3tuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiVGhlIGRlZmF1bHQgY29udGVudHMgb2YgdGhlIG9mIHRoZSBsaXN0IGl0ZW0ncyBtYXJrZXIgYXJlIGdpdmVuIGJ5ICdsaXN0LXN0eWxlLXR5cGUnIGluc3RlYWQuIn1dLHN5bnRheDoiPGltYWdlPiB8IG5vbmUiLHJlbGV2YW5jZTo1MixyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvbGlzdC1zdHlsZS1pbWFnZSJ9XSxkZXNjcmlwdGlvbjoiU2V0cyB0aGUgaW1hZ2UgdGhhdCB3aWxsIGJlIHVzZWQgYXMgdGhlIGxpc3QgaXRlbSBtYXJrZXIuIFdoZW4gdGhlIGltYWdlIGlzIGF2YWlsYWJsZSwgaXQgd2lsbCByZXBsYWNlIHRoZSBtYXJrZXIgc2V0IHdpdGggdGhlICdsaXN0LXN0eWxlLXR5cGUnIG1hcmtlci4iLHJlc3RyaWN0aW9uczpbImltYWdlIl19LHtuYW1lOiJsaXN0LXN0eWxlLXBvc2l0aW9uIixicm93c2VyczpbIkUxMiIsIkZGMSIsIlMxIiwiQzEiLCJJRTQiLCJPMy41Il0sdmFsdWVzOlt7bmFtZToiaW5zaWRlIixkZXNjcmlwdGlvbjoiVGhlIG1hcmtlciBib3ggaXMgb3V0c2lkZSB0aGUgcHJpbmNpcGFsIGJsb2NrIGJveCwgYXMgZGVzY3JpYmVkIGluIHRoZSBzZWN0aW9uIG9uIHRoZSA6Om1hcmtlciBwc2V1ZG8tZWxlbWVudCBiZWxvdy4ifSx7bmFtZToib3V0c2lkZSIsZGVzY3JpcHRpb246IlRoZSA6Om1hcmtlciBwc2V1ZG8tZWxlbWVudCBpcyBhbiBpbmxpbmUgZWxlbWVudCBwbGFjZWQgaW1tZWRpYXRlbHkgYmVmb3JlIGFsbCA6OmJlZm9yZSBwc2V1ZG8tZWxlbWVudHMgaW4gdGhlIHByaW5jaXBhbCBibG9jayBib3gsIGFmdGVyIHdoaWNoIHRoZSBlbGVtZW50J3MgY29udGVudCBmbG93cy4ifV0sc3ludGF4OiJpbnNpZGUgfCBvdXRzaWRlIixyZWxldmFuY2U6NTUscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2xpc3Qtc3R5bGUtcG9zaXRpb24ifV0sZGVzY3JpcHRpb246IlNwZWNpZmllcyB0aGUgcG9zaXRpb24gb2YgdGhlICc6Om1hcmtlcicgcHNldWRvLWVsZW1lbnQncyBib3ggaW4gdGhlIGxpc3QgaXRlbS4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Imxpc3Qtc3R5bGUtdHlwZSIsYnJvd3NlcnM6WyJFMTIiLCJGRjEiLCJTMSIsIkMxIiwiSUU0IiwiTzMuNSJdLHZhbHVlczpbe25hbWU6ImFybWVuaWFuIixkZXNjcmlwdGlvbjoiVHJhZGl0aW9uYWwgdXBwZXJjYXNlIEFybWVuaWFuIG51bWJlcmluZy4ifSx7bmFtZToiY2lyY2xlIixkZXNjcmlwdGlvbjoiQSBob2xsb3cgY2lyY2xlLiJ9LHtuYW1lOiJkZWNpbWFsIixkZXNjcmlwdGlvbjoiV2VzdGVybiBkZWNpbWFsIG51bWJlcnMuIn0se25hbWU6ImRlY2ltYWwtbGVhZGluZy16ZXJvIixkZXNjcmlwdGlvbjoiRGVjaW1hbCBudW1iZXJzIHBhZGRlZCBieSBpbml0aWFsIHplcm9zLiJ9LHtuYW1lOiJkaXNjIixkZXNjcmlwdGlvbjoiQSBmaWxsZWQgY2lyY2xlLiJ9LHtuYW1lOiJnZW9yZ2lhbiIsZGVzY3JpcHRpb246IlRyYWRpdGlvbmFsIEdlb3JnaWFuIG51bWJlcmluZy4ifSx7bmFtZToibG93ZXItYWxwaGEiLGRlc2NyaXB0aW9uOiJMb3dlcmNhc2UgQVNDSUkgbGV0dGVycy4ifSx7bmFtZToibG93ZXItZ3JlZWsiLGRlc2NyaXB0aW9uOiJMb3dlcmNhc2UgY2xhc3NpY2FsIEdyZWVrLiJ9LHtuYW1lOiJsb3dlci1sYXRpbiIsZGVzY3JpcHRpb246Ikxvd2VyY2FzZSBBU0NJSSBsZXR0ZXJzLiJ9LHtuYW1lOiJsb3dlci1yb21hbiIsZGVzY3JpcHRpb246Ikxvd2VyY2FzZSBBU0NJSSBSb21hbiBudW1lcmFscy4ifSx7bmFtZToibm9uZSIsZGVzY3JpcHRpb246Ik5vIG1hcmtlciJ9LHtuYW1lOiJzcXVhcmUiLGRlc2NyaXB0aW9uOiJBIGZpbGxlZCBzcXVhcmUuIn0se25hbWU6InN5bWJvbHMoKSIsYnJvd3NlcnM6WyJFMTIiLCJGRjEiLCJTMSIsIkMxIiwiSUU0IiwiTzMuNSJdLGRlc2NyaXB0aW9uOiJBbGxvd3MgYSBjb3VudGVyIHN0eWxlIHRvIGJlIGRlZmluZWQgaW5saW5lLiJ9LHtuYW1lOiJ1cHBlci1hbHBoYSIsZGVzY3JpcHRpb246IlVwcGVyY2FzZSBBU0NJSSBsZXR0ZXJzLiJ9LHtuYW1lOiJ1cHBlci1sYXRpbiIsZGVzY3JpcHRpb246IlVwcGVyY2FzZSBBU0NJSSBsZXR0ZXJzLiJ9LHtuYW1lOiJ1cHBlci1yb21hbiIsZGVzY3JpcHRpb246IlVwcGVyY2FzZSBBU0NJSSBSb21hbiBudW1lcmFscy4ifV0sc3ludGF4OiI8Y291bnRlci1zdHlsZT4gfCA8c3RyaW5nPiB8IG5vbmUiLHJlbGV2YW5jZTo3MyxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvbGlzdC1zdHlsZS10eXBlIn1dLGRlc2NyaXB0aW9uOiJVc2VkIHRvIGNvbnN0cnVjdCB0aGUgZGVmYXVsdCBjb250ZW50cyBvZiBhIGxpc3QgaXRlbSdzIG1hcmtlciIscmVzdHJpY3Rpb25zOlsiZW51bSIsInN0cmluZyJdfSx7bmFtZToibWFyZ2luIixicm93c2VyczpbIkUxMiIsIkZGMSIsIlMxIiwiQzEiLCJJRTMiLCJPMy41Il0sdmFsdWVzOlt7bmFtZToiYXV0byJ9XSxzeW50YXg6IlsgPGxlbmd0aD4gfCA8cGVyY2VudGFnZT4gfCBhdXRvIF17MSw0fSIscmVsZXZhbmNlOjk1LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9tYXJnaW4ifV0sZGVzY3JpcHRpb246IlNob3J0aGFuZCBwcm9wZXJ0eSB0byBzZXQgdmFsdWVzIGZvciB0aGUgdGhpY2tuZXNzIG9mIHRoZSBtYXJnaW4gYXJlYS4gSWYgbGVmdCBpcyBvbWl0dGVkLCBpdCBpcyB0aGUgc2FtZSBhcyByaWdodC4gSWYgYm90dG9tIGlzIG9taXR0ZWQgaXQgaXMgdGhlIHNhbWUgYXMgdG9wLCBpZiByaWdodCBpcyBvbWl0dGVkIGl0IGlzIHRoZSBzYW1lIGFzIHRvcC4gTmVnYXRpdmUgdmFsdWVzIGZvciBtYXJnaW4gcHJvcGVydGllcyBhcmUgYWxsb3dlZCwgYnV0IHRoZXJlIG1heSBiZSBpbXBsZW1lbnRhdGlvbi1zcGVjaWZpYyBsaW1pdHMuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJwZXJjZW50YWdlIl19LHtuYW1lOiJtYXJnaW4tYmxvY2stZW5kIixicm93c2VyczpbIkU3OSIsIkZGNDEiLCJTMTIuMSIsIkM2OSIsIk81NiJdLHZhbHVlczpbe25hbWU6ImF1dG8ifV0sc3ludGF4OiI8J21hcmdpbi1sZWZ0Jz4iLHJlbGV2YW5jZTo1NSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvbWFyZ2luLWJsb2NrLWVuZCJ9XSxkZXNjcmlwdGlvbjoiTG9naWNhbCAnbWFyZ2luLWJvdHRvbScuIE1hcHBpbmcgZGVwZW5kcyBvbiB0aGUgcGFyZW50IGVsZW1lbnQncyAnd3JpdGluZy1tb2RlJywgJ2RpcmVjdGlvbicsIGFuZCAndGV4dC1vcmllbnRhdGlvbicuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJwZXJjZW50YWdlIl19LHtuYW1lOiJtYXJnaW4tYmxvY2stc3RhcnQiLGJyb3dzZXJzOlsiRTc5IiwiRkY0MSIsIlMxMi4xIiwiQzY5IiwiTzU2Il0sdmFsdWVzOlt7bmFtZToiYXV0byJ9XSxzeW50YXg6IjwnbWFyZ2luLWxlZnQnPiIscmVsZXZhbmNlOjU2LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9tYXJnaW4tYmxvY2stc3RhcnQifV0sZGVzY3JpcHRpb246IkxvZ2ljYWwgJ21hcmdpbi10b3AnLiBNYXBwaW5nIGRlcGVuZHMgb24gdGhlIHBhcmVudCBlbGVtZW50J3MgJ3dyaXRpbmctbW9kZScsICdkaXJlY3Rpb24nLCBhbmQgJ3RleHQtb3JpZW50YXRpb24nLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwicGVyY2VudGFnZSJdfSx7bmFtZToibWFyZ2luLWJvdHRvbSIsYnJvd3NlcnM6WyJFMTIiLCJGRjEiLCJTMSIsIkMxIiwiSUUzIiwiTzMuNSJdLHZhbHVlczpbe25hbWU6ImF1dG8ifV0sc3ludGF4OiI8bGVuZ3RoPiB8IDxwZXJjZW50YWdlPiB8IGF1dG8iLHJlbGV2YW5jZTo5MSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvbWFyZ2luLWJvdHRvbSJ9XSxkZXNjcmlwdGlvbjoiU2hvcnRoYW5kIHByb3BlcnR5IHRvIHNldCB2YWx1ZXMgZm9yIHRoZSB0aGlja25lc3Mgb2YgdGhlIG1hcmdpbiBhcmVhLiBJZiBsZWZ0IGlzIG9taXR0ZWQsIGl0IGlzIHRoZSBzYW1lIGFzIHJpZ2h0LiBJZiBib3R0b20gaXMgb21pdHRlZCBpdCBpcyB0aGUgc2FtZSBhcyB0b3AsIGlmIHJpZ2h0IGlzIG9taXR0ZWQgaXQgaXMgdGhlIHNhbWUgYXMgdG9wLiBOZWdhdGl2ZSB2YWx1ZXMgZm9yIG1hcmdpbiBwcm9wZXJ0aWVzIGFyZSBhbGxvd2VkLCBidXQgdGhlcmUgbWF5IGJlIGltcGxlbWVudGF0aW9uLXNwZWNpZmljIGxpbWl0cy4uIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJwZXJjZW50YWdlIl19LHtuYW1lOiJtYXJnaW4taW5saW5lLWVuZCIsYnJvd3NlcnM6WyJFNzkiLCJGRjQxIiwiUzEyLjEiLCJDNjkiLCJPNTYiXSx2YWx1ZXM6W3tuYW1lOiJhdXRvIn1dLHN5bnRheDoiPCdtYXJnaW4tbGVmdCc+IixyZWxldmFuY2U6NTgscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL21hcmdpbi1pbmxpbmUtZW5kIn1dLGRlc2NyaXB0aW9uOiJMb2dpY2FsICdtYXJnaW4tcmlnaHQnLiBNYXBwaW5nIGRlcGVuZHMgb24gdGhlIHBhcmVudCBlbGVtZW50J3MgJ3dyaXRpbmctbW9kZScsICdkaXJlY3Rpb24nLCBhbmQgJ3RleHQtb3JpZW50YXRpb24nLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwicGVyY2VudGFnZSJdfSx7bmFtZToibWFyZ2luLWlubGluZS1zdGFydCIsYnJvd3NlcnM6WyJFNzkiLCJGRjQxIiwiUzEyLjEiLCJDNjkiLCJPNTYiXSx2YWx1ZXM6W3tuYW1lOiJhdXRvIn1dLHN5bnRheDoiPCdtYXJnaW4tbGVmdCc+IixyZWxldmFuY2U6NTkscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL21hcmdpbi1pbmxpbmUtc3RhcnQifV0sZGVzY3JpcHRpb246IkxvZ2ljYWwgJ21hcmdpbi1sZWZ0Jy4gTWFwcGluZyBkZXBlbmRzIG9uIHRoZSBwYXJlbnQgZWxlbWVudCdzICd3cml0aW5nLW1vZGUnLCAnZGlyZWN0aW9uJywgYW5kICd0ZXh0LW9yaWVudGF0aW9uJy4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsInBlcmNlbnRhZ2UiXX0se25hbWU6Im1hcmdpbi1sZWZ0Iixicm93c2VyczpbIkUxMiIsIkZGMSIsIlMxIiwiQzEiLCJJRTMiLCJPMy41Il0sdmFsdWVzOlt7bmFtZToiYXV0byJ9XSxzeW50YXg6IjxsZW5ndGg+IHwgPHBlcmNlbnRhZ2U+IHwgYXV0byIscmVsZXZhbmNlOjkxLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9tYXJnaW4tbGVmdCJ9XSxkZXNjcmlwdGlvbjoiU2hvcnRoYW5kIHByb3BlcnR5IHRvIHNldCB2YWx1ZXMgZm9yIHRoZSB0aGlja25lc3Mgb2YgdGhlIG1hcmdpbiBhcmVhLiBJZiBsZWZ0IGlzIG9taXR0ZWQsIGl0IGlzIHRoZSBzYW1lIGFzIHJpZ2h0LiBJZiBib3R0b20gaXMgb21pdHRlZCBpdCBpcyB0aGUgc2FtZSBhcyB0b3AsIGlmIHJpZ2h0IGlzIG9taXR0ZWQgaXQgaXMgdGhlIHNhbWUgYXMgdG9wLiBOZWdhdGl2ZSB2YWx1ZXMgZm9yIG1hcmdpbiBwcm9wZXJ0aWVzIGFyZSBhbGxvd2VkLCBidXQgdGhlcmUgbWF5IGJlIGltcGxlbWVudGF0aW9uLXNwZWNpZmljIGxpbWl0cy4uIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJwZXJjZW50YWdlIl19LHtuYW1lOiJtYXJnaW4tcmlnaHQiLGJyb3dzZXJzOlsiRTEyIiwiRkYxIiwiUzEiLCJDMSIsIklFMyIsIk8zLjUiXSx2YWx1ZXM6W3tuYW1lOiJhdXRvIn1dLHN5bnRheDoiPGxlbmd0aD4gfCA8cGVyY2VudGFnZT4gfCBhdXRvIixyZWxldmFuY2U6OTEscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL21hcmdpbi1yaWdodCJ9XSxkZXNjcmlwdGlvbjoiU2hvcnRoYW5kIHByb3BlcnR5IHRvIHNldCB2YWx1ZXMgZm9yIHRoZSB0aGlja25lc3Mgb2YgdGhlIG1hcmdpbiBhcmVhLiBJZiBsZWZ0IGlzIG9taXR0ZWQsIGl0IGlzIHRoZSBzYW1lIGFzIHJpZ2h0LiBJZiBib3R0b20gaXMgb21pdHRlZCBpdCBpcyB0aGUgc2FtZSBhcyB0b3AsIGlmIHJpZ2h0IGlzIG9taXR0ZWQgaXQgaXMgdGhlIHNhbWUgYXMgdG9wLiBOZWdhdGl2ZSB2YWx1ZXMgZm9yIG1hcmdpbiBwcm9wZXJ0aWVzIGFyZSBhbGxvd2VkLCBidXQgdGhlcmUgbWF5IGJlIGltcGxlbWVudGF0aW9uLXNwZWNpZmljIGxpbWl0cy4uIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJwZXJjZW50YWdlIl19LHtuYW1lOiJtYXJnaW4tdG9wIixicm93c2VyczpbIkUxMiIsIkZGMSIsIlMxIiwiQzEiLCJJRTMiLCJPMy41Il0sdmFsdWVzOlt7bmFtZToiYXV0byJ9XSxzeW50YXg6IjxsZW5ndGg+IHwgPHBlcmNlbnRhZ2U+IHwgYXV0byIscmVsZXZhbmNlOjk0LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9tYXJnaW4tdG9wIn1dLGRlc2NyaXB0aW9uOiJTaG9ydGhhbmQgcHJvcGVydHkgdG8gc2V0IHZhbHVlcyBmb3IgdGhlIHRoaWNrbmVzcyBvZiB0aGUgbWFyZ2luIGFyZWEuIElmIGxlZnQgaXMgb21pdHRlZCwgaXQgaXMgdGhlIHNhbWUgYXMgcmlnaHQuIElmIGJvdHRvbSBpcyBvbWl0dGVkIGl0IGlzIHRoZSBzYW1lIGFzIHRvcCwgaWYgcmlnaHQgaXMgb21pdHRlZCBpdCBpcyB0aGUgc2FtZSBhcyB0b3AuIE5lZ2F0aXZlIHZhbHVlcyBmb3IgbWFyZ2luIHByb3BlcnRpZXMgYXJlIGFsbG93ZWQsIGJ1dCB0aGVyZSBtYXkgYmUgaW1wbGVtZW50YXRpb24tc3BlY2lmaWMgbGltaXRzLi4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsInBlcmNlbnRhZ2UiXX0se25hbWU6Im1hcmtlciIsYnJvd3NlcnM6WyJFODAiLCJGRjcyIiwiUzEzLjEiLCJDODAiLCJPNjciXSx2YWx1ZXM6W3tuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIHRoYXQgbm8gbWFya2VyIHN5bWJvbCB3aWxsIGJlIGRyYXduIGF0IHRoZSBnaXZlbiB2ZXJ0ZXggb3IgdmVydGljZXMuIn0se25hbWU6InVybCgpIixkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIHRoYXQgdGhlIDxtYXJrZXI+IGVsZW1lbnQgcmVmZXJlbmNlZCB3aWxsIGJlIHVzZWQuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIHRoZSBtYXJrZXIgc3ltYm9sIHRoYXQgc2hhbGwgYmUgdXNlZCBmb3IgYWxsIHBvaW50cyBvbiB0aGUgc2V0cyB0aGUgdmFsdWUgZm9yIGFsbCB2ZXJ0aWNlcyBvbiB0aGUgZ2l2ZW4gJ3BhdGgnIGVsZW1lbnQgb3IgYmFzaWMgc2hhcGUuIixyZXN0cmljdGlvbnM6WyJ1cmwiXX0se25hbWU6Im1hcmtlci1lbmQiLGJyb3dzZXJzOlsiRTgwIiwiRkY3MiIsIlMxMy4xIiwiQzgwIiwiTzY3Il0sdmFsdWVzOlt7bmFtZToibm9uZSIsZGVzY3JpcHRpb246IkluZGljYXRlcyB0aGF0IG5vIG1hcmtlciBzeW1ib2wgd2lsbCBiZSBkcmF3biBhdCB0aGUgZ2l2ZW4gdmVydGV4IG9yIHZlcnRpY2VzLiJ9LHtuYW1lOiJ1cmwoKSIsZGVzY3JpcHRpb246IkluZGljYXRlcyB0aGF0IHRoZSA8bWFya2VyPiBlbGVtZW50IHJlZmVyZW5jZWQgd2lsbCBiZSB1c2VkLiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlNwZWNpZmllcyB0aGUgbWFya2VyIHRoYXQgd2lsbCBiZSBkcmF3biBhdCB0aGUgbGFzdCB2ZXJ0aWNlcyBvZiB0aGUgZ2l2ZW4gbWFya2FibGUgZWxlbWVudC4iLHJlc3RyaWN0aW9uczpbInVybCJdfSx7bmFtZToibWFya2VyLW1pZCIsYnJvd3NlcnM6WyJFODAiLCJGRjcyIiwiUzEzLjEiLCJDODAiLCJPNjciXSx2YWx1ZXM6W3tuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIHRoYXQgbm8gbWFya2VyIHN5bWJvbCB3aWxsIGJlIGRyYXduIGF0IHRoZSBnaXZlbiB2ZXJ0ZXggb3IgdmVydGljZXMuIn0se25hbWU6InVybCgpIixkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIHRoYXQgdGhlIDxtYXJrZXI+IGVsZW1lbnQgcmVmZXJlbmNlZCB3aWxsIGJlIHVzZWQuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIHRoZSBtYXJrZXIgdGhhdCB3aWxsIGJlIGRyYXduIGF0IGFsbCB2ZXJ0aWNlcyBleGNlcHQgdGhlIGZpcnN0IGFuZCBsYXN0LiIscmVzdHJpY3Rpb25zOlsidXJsIl19LHtuYW1lOiJtYXJrZXItc3RhcnQiLGJyb3dzZXJzOlsiRTgwIiwiRkY3MiIsIlMxMy4xIiwiQzgwIiwiTzY3Il0sdmFsdWVzOlt7bmFtZToibm9uZSIsZGVzY3JpcHRpb246IkluZGljYXRlcyB0aGF0IG5vIG1hcmtlciBzeW1ib2wgd2lsbCBiZSBkcmF3biBhdCB0aGUgZ2l2ZW4gdmVydGV4IG9yIHZlcnRpY2VzLiJ9LHtuYW1lOiJ1cmwoKSIsZGVzY3JpcHRpb246IkluZGljYXRlcyB0aGF0IHRoZSA8bWFya2VyPiBlbGVtZW50IHJlZmVyZW5jZWQgd2lsbCBiZSB1c2VkLiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlNwZWNpZmllcyB0aGUgbWFya2VyIHRoYXQgd2lsbCBiZSBkcmF3biBhdCB0aGUgZmlyc3QgdmVydGljZXMgb2YgdGhlIGdpdmVuIG1hcmthYmxlIGVsZW1lbnQuIixyZXN0cmljdGlvbnM6WyJ1cmwiXX0se25hbWU6Im1hc2staW1hZ2UiLGJyb3dzZXJzOlsiRTc5IiwiRkY1MyIsIlMxNS40IiwiQzEyMCIsIk8xNSJdLHZhbHVlczpbe25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJDb3VudHMgYXMgYSB0cmFuc3BhcmVudCBibGFjayBpbWFnZSBsYXllci4ifSx7bmFtZToidXJsKCkiLGRlc2NyaXB0aW9uOiJSZWZlcmVuY2UgdG8gYSA8bWFzayBlbGVtZW50IG9yIHRvIGEgQ1NTIGltYWdlLiJ9XSxzeW50YXg6IjxtYXNrLXJlZmVyZW5jZT4jIixyZWxldmFuY2U6NTcscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL21hc2staW1hZ2UifV0sZGVzY3JpcHRpb246IlNldHMgdGhlIG1hc2sgbGF5ZXIgaW1hZ2Ugb2YgYW4gZWxlbWVudC4iLHJlc3RyaWN0aW9uczpbInVybCIsImltYWdlIiwiZW51bSJdfSx7bmFtZToibWFzay1tb2RlIixicm93c2VyczpbIkUxMjAiLCJGRjUzIiwiUzE1LjQiLCJDMTIwIiwiTzEwNiJdLHZhbHVlczpbe25hbWU6ImFscGhhIixkZXNjcmlwdGlvbjoiQWxwaGEgdmFsdWVzIG9mIHRoZSBtYXNrIGxheWVyIGltYWdlIHNob3VsZCBiZSB1c2VkIGFzIHRoZSBtYXNrIHZhbHVlcy4ifSx7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IlVzZSBhbHBoYSB2YWx1ZXMgaWYgJ21hc2staW1hZ2UnIGlzIGFuIGltYWdlLCBsdW1pbmFuY2UgaWYgYSA8bWFzaz4gZWxlbWVudCBvciBhIENTUyBpbWFnZS4ifSx7bmFtZToibHVtaW5hbmNlIixkZXNjcmlwdGlvbjoiTHVtaW5hbmNlIHZhbHVlcyBvZiB0aGUgbWFzayBsYXllciBpbWFnZSBzaG91bGQgYmUgdXNlZCBhcyB0aGUgbWFzayB2YWx1ZXMuIn1dLHN5bnRheDoiPG1hc2tpbmctbW9kZT4jIixyZWxldmFuY2U6NTAscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL21hc2stbW9kZSJ9XSxkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIHdoZXRoZXIgdGhlIG1hc2sgbGF5ZXIgaW1hZ2UgaXMgdHJlYXRlZCBhcyBsdW1pbmFuY2UgbWFzayBvciBhbHBoYSBtYXNrLiIscmVzdHJpY3Rpb25zOlsidXJsIiwiaW1hZ2UiLCJlbnVtIl19LHtuYW1lOiJtYXNrLW9yaWdpbiIsYnJvd3NlcnM6WyJFMTIwIiwiRkY1MyIsIlMxNS40IiwiQzEyMCIsIk8xMDYiXSxzeW50YXg6IjxnZW9tZXRyeS1ib3g+IyIscmVsZXZhbmNlOjUwLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9tYXNrLW9yaWdpbiJ9XSxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIHRoZSBtYXNrIHBvc2l0aW9uaW5nIGFyZWEuIixyZXN0cmljdGlvbnM6WyJnZW9tZXRyeS1ib3giLCJlbnVtIl19LHtuYW1lOiJtYXNrLXBvc2l0aW9uIixicm93c2VyczpbIkU3OSIsIkZGNTMiLCJTMTUuNCIsIkMxMjAiLCJPMTA2Il0sc3ludGF4OiI8cG9zaXRpb24+IyIscmVsZXZhbmNlOjUyLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9tYXNrLXBvc2l0aW9uIn1dLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgaG93IG1hc2sgbGF5ZXIgaW1hZ2VzIGFyZSBwb3NpdGlvbmVkLiIscmVzdHJpY3Rpb25zOlsicG9zaXRpb24iLCJsZW5ndGgiLCJwZXJjZW50YWdlIl19LHtuYW1lOiJtYXNrLXJlcGVhdCIsYnJvd3NlcnM6WyJFNzkiLCJGRjUzIiwiUzE1LjQiLCJDMTIwIiwiTzEwNiJdLHN5bnRheDoiPHJlcGVhdC1zdHlsZT4jIixyZWxldmFuY2U6NTMscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL21hc2stcmVwZWF0In1dLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgaG93IG1hc2sgbGF5ZXIgaW1hZ2VzIGFyZSB0aWxlZCBhZnRlciB0aGV5IGhhdmUgYmVlbiBzaXplZCBhbmQgcG9zaXRpb25lZC4iLHJlc3RyaWN0aW9uczpbInJlcGVhdCJdfSx7bmFtZToibWFzay1zaXplIixicm93c2VyczpbIkU3OSIsIkZGNTMiLCJTMTUuNCIsIkMxMjAiLCJPMTA2Il0sdmFsdWVzOlt7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IlJlc29sdmVkIGJ5IHVzaW5nIHRoZSBpbWFnZSdzIGludHJpbnNpYyByYXRpbyBhbmQgdGhlIHNpemUgb2YgdGhlIG90aGVyIGRpbWVuc2lvbiwgb3IgZmFpbGluZyB0aGF0LCB1c2luZyB0aGUgaW1hZ2UncyBpbnRyaW5zaWMgc2l6ZSwgb3IgZmFpbGluZyB0aGF0LCB0cmVhdGluZyBpdCBhcyAxMDAlLiJ9LHtuYW1lOiJjb250YWluIixkZXNjcmlwdGlvbjoiU2NhbGUgdGhlIGltYWdlLCB3aGlsZSBwcmVzZXJ2aW5nIGl0cyBpbnRyaW5zaWMgYXNwZWN0IHJhdGlvIChpZiBhbnkpLCB0byB0aGUgbGFyZ2VzdCBzaXplIHN1Y2ggdGhhdCBib3RoIGl0cyB3aWR0aCBhbmQgaXRzIGhlaWdodCBjYW4gZml0IGluc2lkZSB0aGUgYmFja2dyb3VuZCBwb3NpdGlvbmluZyBhcmVhLiJ9LHtuYW1lOiJjb3ZlciIsZGVzY3JpcHRpb246IlNjYWxlIHRoZSBpbWFnZSwgd2hpbGUgcHJlc2VydmluZyBpdHMgaW50cmluc2ljIGFzcGVjdCByYXRpbyAoaWYgYW55KSwgdG8gdGhlIHNtYWxsZXN0IHNpemUgc3VjaCB0aGF0IGJvdGggaXRzIHdpZHRoIGFuZCBpdHMgaGVpZ2h0IGNhbiBjb21wbGV0ZWx5IGNvdmVyIHRoZSBiYWNrZ3JvdW5kIHBvc2l0aW9uaW5nIGFyZWEuIn1dLHN5bnRheDoiPGJnLXNpemU+IyIscmVsZXZhbmNlOjU0LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9tYXNrLXNpemUifV0sZGVzY3JpcHRpb246IlNwZWNpZmllcyB0aGUgc2l6ZSBvZiB0aGUgbWFzayBsYXllciBpbWFnZXMuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJwZXJjZW50YWdlIiwiZW51bSJdfSx7bmFtZToibWFzay10eXBlIixicm93c2VyczpbIkU3OSIsIkZGMzUiLCJTNyIsIkMyNCIsIk8xNSJdLHZhbHVlczpbe25hbWU6ImFscGhhIixkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIHRoYXQgdGhlIGFscGhhIHZhbHVlcyBvZiB0aGUgbWFzayBzaG91bGQgYmUgdXNlZC4ifSx7bmFtZToibHVtaW5hbmNlIixkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIHRoYXQgdGhlIGx1bWluYW5jZSB2YWx1ZXMgb2YgdGhlIG1hc2sgc2hvdWxkIGJlIHVzZWQuIn1dLHN5bnRheDoibHVtaW5hbmNlIHwgYWxwaGEiLHJlbGV2YW5jZTo1MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvbWFzay10eXBlIn1dLGRlc2NyaXB0aW9uOiJEZWZpbmVzIHdoZXRoZXIgdGhlIGNvbnRlbnQgb2YgdGhlIDxtYXNrPiBlbGVtZW50IGlzIHRyZWF0ZWQgYXMgYXMgbHVtaW5hbmNlIG1hc2sgb3IgYWxwaGEgbWFzay4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Im1heC1ibG9jay1zaXplIixicm93c2VyczpbIkU3OSIsIkZGNDEiLCJTMTIuMSIsIkM1NyIsIk80NCJdLHZhbHVlczpbe25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJObyBsaW1pdCBvbiB0aGUgd2lkdGggb2YgdGhlIGJveC4ifV0sc3ludGF4OiI8J21heC13aWR0aCc+IixyZWxldmFuY2U6NTMscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL21heC1ibG9jay1zaXplIn1dLGRlc2NyaXB0aW9uOiJNYXhpbXVtIHNpemUgb2YgYW4gZWxlbWVudCBpbiB0aGUgZGlyZWN0aW9uIG9wcG9zaXRlIHRoYXQgb2YgdGhlIGRpcmVjdGlvbiBzcGVjaWZpZWQgYnkgJ3dyaXRpbmctbW9kZScuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJwZXJjZW50YWdlIl19LHtuYW1lOiJtYXgtaGVpZ2h0Iixicm93c2VyczpbIkUxMiIsIkZGMSIsIlMxLjMiLCJDMTgiLCJJRTciLCJPNyJdLHZhbHVlczpbe25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJObyBsaW1pdCBvbiB0aGUgaGVpZ2h0IG9mIHRoZSBib3guIn0se25hbWU6ImZpdC1jb250ZW50Iixicm93c2VyczpbIkUxMiIsIkZGMSIsIlMxLjMiLCJDMTgiLCJJRTciLCJPNyJdLGRlc2NyaXB0aW9uOiJVc2UgdGhlIGZpdC1jb250ZW50IGlubGluZSBzaXplIG9yIGZpdC1jb250ZW50IGJsb2NrIHNpemUsIGFzIGFwcHJvcHJpYXRlIHRvIHRoZSB3cml0aW5nIG1vZGUuIn0se25hbWU6Im1heC1jb250ZW50Iixicm93c2VyczpbIkUxMiIsIkZGMSIsIlMxLjMiLCJDMTgiLCJJRTciLCJPNyJdLGRlc2NyaXB0aW9uOiJVc2UgdGhlIG1heC1jb250ZW50IGlubGluZSBzaXplIG9yIG1heC1jb250ZW50IGJsb2NrIHNpemUsIGFzIGFwcHJvcHJpYXRlIHRvIHRoZSB3cml0aW5nIG1vZGUuIn0se25hbWU6Im1pbi1jb250ZW50Iixicm93c2VyczpbIkUxMiIsIkZGMSIsIlMxLjMiLCJDMTgiLCJJRTciLCJPNyJdLGRlc2NyaXB0aW9uOiJVc2UgdGhlIG1pbi1jb250ZW50IGlubGluZSBzaXplIG9yIG1pbi1jb250ZW50IGJsb2NrIHNpemUsIGFzIGFwcHJvcHJpYXRlIHRvIHRoZSB3cml0aW5nIG1vZGUuIn1dLHN5bnRheDoibm9uZSB8IDxsZW5ndGgtcGVyY2VudGFnZT4gfCBtaW4tY29udGVudCB8IG1heC1jb250ZW50IHwgZml0LWNvbnRlbnQgfCBmaXQtY29udGVudCg8bGVuZ3RoLXBlcmNlbnRhZ2U+KSIscmVsZXZhbmNlOjg1LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9tYXgtaGVpZ2h0In1dLGRlc2NyaXB0aW9uOiJBbGxvd3MgYXV0aG9ycyB0byBjb25zdHJhaW4gY29udGVudCBoZWlnaHQgdG8gYSBjZXJ0YWluIHJhbmdlLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwicGVyY2VudGFnZSJdfSx7bmFtZToibWF4LWlubGluZS1zaXplIixicm93c2VyczpbIkU3OSIsIkZGNDEiLCJTMTIuMSIsIkM1NyIsIk80NCJdLHZhbHVlczpbe25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJObyBsaW1pdCBvbiB0aGUgaGVpZ2h0IG9mIHRoZSBib3guIn1dLHN5bnRheDoiPCdtYXgtd2lkdGgnPiIscmVsZXZhbmNlOjU0LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9tYXgtaW5saW5lLXNpemUifV0sZGVzY3JpcHRpb246Ik1heGltdW0gc2l6ZSBvZiBhbiBlbGVtZW50IGluIHRoZSBkaXJlY3Rpb24gc3BlY2lmaWVkIGJ5ICd3cml0aW5nLW1vZGUnLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwicGVyY2VudGFnZSJdfSx7bmFtZToibWF4LXdpZHRoIixicm93c2VyczpbIkUxMiIsIkZGMSIsIlMxIiwiQzEiLCJJRTciLCJPNCJdLHZhbHVlczpbe25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJObyBsaW1pdCBvbiB0aGUgd2lkdGggb2YgdGhlIGJveC4ifSx7bmFtZToiZml0LWNvbnRlbnQiLGJyb3dzZXJzOlsiRTEyIiwiRkYxIiwiUzEiLCJDMSIsIklFNyIsIk80Il0sZGVzY3JpcHRpb246IlVzZSB0aGUgZml0LWNvbnRlbnQgaW5saW5lIHNpemUgb3IgZml0LWNvbnRlbnQgYmxvY2sgc2l6ZSwgYXMgYXBwcm9wcmlhdGUgdG8gdGhlIHdyaXRpbmcgbW9kZS4ifSx7bmFtZToibWF4LWNvbnRlbnQiLGJyb3dzZXJzOlsiRTEyIiwiRkYxIiwiUzEiLCJDMSIsIklFNyIsIk80Il0sZGVzY3JpcHRpb246IlVzZSB0aGUgbWF4LWNvbnRlbnQgaW5saW5lIHNpemUgb3IgbWF4LWNvbnRlbnQgYmxvY2sgc2l6ZSwgYXMgYXBwcm9wcmlhdGUgdG8gdGhlIHdyaXRpbmcgbW9kZS4ifSx7bmFtZToibWluLWNvbnRlbnQiLGJyb3dzZXJzOlsiRTEyIiwiRkYxIiwiUzEiLCJDMSIsIklFNyIsIk80Il0sZGVzY3JpcHRpb246IlVzZSB0aGUgbWluLWNvbnRlbnQgaW5saW5lIHNpemUgb3IgbWluLWNvbnRlbnQgYmxvY2sgc2l6ZSwgYXMgYXBwcm9wcmlhdGUgdG8gdGhlIHdyaXRpbmcgbW9kZS4ifV0sc3ludGF4OiJub25lIHwgPGxlbmd0aC1wZXJjZW50YWdlPiB8IG1pbi1jb250ZW50IHwgbWF4LWNvbnRlbnQgfCBmaXQtY29udGVudCB8IGZpdC1jb250ZW50KDxsZW5ndGgtcGVyY2VudGFnZT4pIixyZWxldmFuY2U6OTEscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL21heC13aWR0aCJ9XSxkZXNjcmlwdGlvbjoiQWxsb3dzIGF1dGhvcnMgdG8gY29uc3RyYWluIGNvbnRlbnQgd2lkdGggdG8gYSBjZXJ0YWluIHJhbmdlLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwicGVyY2VudGFnZSJdfSx7bmFtZToibWluLWJsb2NrLXNpemUiLGJyb3dzZXJzOlsiRTc5IiwiRkY0MSIsIlMxMi4xIiwiQzU3IiwiTzQ0Il0sc3ludGF4OiI8J21pbi13aWR0aCc+IixyZWxldmFuY2U6NTMscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL21pbi1ibG9jay1zaXplIn1dLGRlc2NyaXB0aW9uOiJNaW5pbWFsIHNpemUgb2YgYW4gZWxlbWVudCBpbiB0aGUgZGlyZWN0aW9uIG9wcG9zaXRlIHRoYXQgb2YgdGhlIGRpcmVjdGlvbiBzcGVjaWZpZWQgYnkgJ3dyaXRpbmctbW9kZScuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJwZXJjZW50YWdlIl19LHtuYW1lOiJtaW4taGVpZ2h0Iixicm93c2VyczpbIkUxMiIsIkZGMyIsIlMxLjMiLCJDMSIsIklFNyIsIk80Il0sdmFsdWVzOlt7bmFtZToiYXV0byIsYnJvd3NlcnM6WyJFMTIiLCJGRjMiLCJTMS4zIiwiQzEiLCJJRTciLCJPNCJdfSx7bmFtZToiZml0LWNvbnRlbnQiLGJyb3dzZXJzOlsiRTEyIiwiRkYzIiwiUzEuMyIsIkMxIiwiSUU3IiwiTzQiXSxkZXNjcmlwdGlvbjoiVXNlIHRoZSBmaXQtY29udGVudCBpbmxpbmUgc2l6ZSBvciBmaXQtY29udGVudCBibG9jayBzaXplLCBhcyBhcHByb3ByaWF0ZSB0byB0aGUgd3JpdGluZyBtb2RlLiJ9LHtuYW1lOiJtYXgtY29udGVudCIsYnJvd3NlcnM6WyJFMTIiLCJGRjMiLCJTMS4zIiwiQzEiLCJJRTciLCJPNCJdLGRlc2NyaXB0aW9uOiJVc2UgdGhlIG1heC1jb250ZW50IGlubGluZSBzaXplIG9yIG1heC1jb250ZW50IGJsb2NrIHNpemUsIGFzIGFwcHJvcHJpYXRlIHRvIHRoZSB3cml0aW5nIG1vZGUuIn0se25hbWU6Im1pbi1jb250ZW50Iixicm93c2VyczpbIkUxMiIsIkZGMyIsIlMxLjMiLCJDMSIsIklFNyIsIk80Il0sZGVzY3JpcHRpb246IlVzZSB0aGUgbWluLWNvbnRlbnQgaW5saW5lIHNpemUgb3IgbWluLWNvbnRlbnQgYmxvY2sgc2l6ZSwgYXMgYXBwcm9wcmlhdGUgdG8gdGhlIHdyaXRpbmcgbW9kZS4ifV0sc3ludGF4OiJhdXRvIHwgPGxlbmd0aD4gfCA8cGVyY2VudGFnZT4gfCBtaW4tY29udGVudCB8IG1heC1jb250ZW50IHwgZml0LWNvbnRlbnQgfCBmaXQtY29udGVudCg8bGVuZ3RoLXBlcmNlbnRhZ2U+KSIscmVsZXZhbmNlOjg5LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9taW4taGVpZ2h0In1dLGRlc2NyaXB0aW9uOiJBbGxvd3MgYXV0aG9ycyB0byBjb25zdHJhaW4gY29udGVudCBoZWlnaHQgdG8gYSBjZXJ0YWluIHJhbmdlLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwicGVyY2VudGFnZSJdfSx7bmFtZToibWluLWlubGluZS1zaXplIixicm93c2VyczpbIkU3OSIsIkZGNDEiLCJTMTIuMSIsIkM1NyIsIk80NCJdLHN5bnRheDoiPCdtaW4td2lkdGgnPiIscmVsZXZhbmNlOjU0LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9taW4taW5saW5lLXNpemUifV0sZGVzY3JpcHRpb246Ik1pbmltYWwgc2l6ZSBvZiBhbiBlbGVtZW50IGluIHRoZSBkaXJlY3Rpb24gc3BlY2lmaWVkIGJ5ICd3cml0aW5nLW1vZGUnLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwicGVyY2VudGFnZSJdfSx7bmFtZToibWluLXdpZHRoIixicm93c2VyczpbIkUxMiIsIkZGMSIsIlMxIiwiQzEiLCJJRTciLCJPNCJdLHZhbHVlczpbe25hbWU6ImF1dG8iLGJyb3dzZXJzOlsiRTEyIiwiRkYxIiwiUzEiLCJDMSIsIklFNyIsIk80Il19LHtuYW1lOiJmaXQtY29udGVudCIsYnJvd3NlcnM6WyJFMTIiLCJGRjEiLCJTMSIsIkMxIiwiSUU3IiwiTzQiXSxkZXNjcmlwdGlvbjoiVXNlIHRoZSBmaXQtY29udGVudCBpbmxpbmUgc2l6ZSBvciBmaXQtY29udGVudCBibG9jayBzaXplLCBhcyBhcHByb3ByaWF0ZSB0byB0aGUgd3JpdGluZyBtb2RlLiJ9LHtuYW1lOiJtYXgtY29udGVudCIsYnJvd3NlcnM6WyJFMTIiLCJGRjEiLCJTMSIsIkMxIiwiSUU3IiwiTzQiXSxkZXNjcmlwdGlvbjoiVXNlIHRoZSBtYXgtY29udGVudCBpbmxpbmUgc2l6ZSBvciBtYXgtY29udGVudCBibG9jayBzaXplLCBhcyBhcHByb3ByaWF0ZSB0byB0aGUgd3JpdGluZyBtb2RlLiJ9LHtuYW1lOiJtaW4tY29udGVudCIsYnJvd3NlcnM6WyJFMTIiLCJGRjEiLCJTMSIsIkMxIiwiSUU3IiwiTzQiXSxkZXNjcmlwdGlvbjoiVXNlIHRoZSBtaW4tY29udGVudCBpbmxpbmUgc2l6ZSBvciBtaW4tY29udGVudCBibG9jayBzaXplLCBhcyBhcHByb3ByaWF0ZSB0byB0aGUgd3JpdGluZyBtb2RlLiJ9XSxzeW50YXg6ImF1dG8gfCA8bGVuZ3RoPiB8IDxwZXJjZW50YWdlPiB8IG1pbi1jb250ZW50IHwgbWF4LWNvbnRlbnQgfCBmaXQtY29udGVudCB8IGZpdC1jb250ZW50KDxsZW5ndGgtcGVyY2VudGFnZT4pIixyZWxldmFuY2U6ODgscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL21pbi13aWR0aCJ9XSxkZXNjcmlwdGlvbjoiQWxsb3dzIGF1dGhvcnMgdG8gY29uc3RyYWluIGNvbnRlbnQgd2lkdGggdG8gYSBjZXJ0YWluIHJhbmdlLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwicGVyY2VudGFnZSJdfSx7bmFtZToibWl4LWJsZW5kLW1vZGUiLGJyb3dzZXJzOlsiRTc5IiwiRkYzMiIsIlM4IiwiQzQxIiwiTzI4Il0sdmFsdWVzOlt7bmFtZToibm9ybWFsIixkZXNjcmlwdGlvbjoiRGVmYXVsdCBhdHRyaWJ1dGUgd2hpY2ggc3BlY2lmaWVzIG5vIGJsZW5kaW5nIn0se25hbWU6Im11bHRpcGx5IixkZXNjcmlwdGlvbjoiVGhlIHNvdXJjZSBjb2xvciBpcyBtdWx0aXBsaWVkIGJ5IHRoZSBkZXN0aW5hdGlvbiBjb2xvciBhbmQgcmVwbGFjZXMgdGhlIGRlc3RpbmF0aW9uLiJ9LHtuYW1lOiJzY3JlZW4iLGRlc2NyaXB0aW9uOiJNdWx0aXBsaWVzIHRoZSBjb21wbGVtZW50cyBvZiB0aGUgYmFja2Ryb3AgYW5kIHNvdXJjZSBjb2xvciB2YWx1ZXMsIHRoZW4gY29tcGxlbWVudHMgdGhlIHJlc3VsdC4ifSx7bmFtZToib3ZlcmxheSIsZGVzY3JpcHRpb246Ik11bHRpcGxpZXMgb3Igc2NyZWVucyB0aGUgY29sb3JzLCBkZXBlbmRpbmcgb24gdGhlIGJhY2tkcm9wIGNvbG9yIHZhbHVlLiJ9LHtuYW1lOiJkYXJrZW4iLGRlc2NyaXB0aW9uOiJTZWxlY3RzIHRoZSBkYXJrZXIgb2YgdGhlIGJhY2tkcm9wIGFuZCBzb3VyY2UgY29sb3JzLiJ9LHtuYW1lOiJsaWdodGVuIixkZXNjcmlwdGlvbjoiU2VsZWN0cyB0aGUgbGlnaHRlciBvZiB0aGUgYmFja2Ryb3AgYW5kIHNvdXJjZSBjb2xvcnMuIn0se25hbWU6ImNvbG9yLWRvZGdlIixkZXNjcmlwdGlvbjoiQnJpZ2h0ZW5zIHRoZSBiYWNrZHJvcCBjb2xvciB0byByZWZsZWN0IHRoZSBzb3VyY2UgY29sb3IuIn0se25hbWU6ImNvbG9yLWJ1cm4iLGRlc2NyaXB0aW9uOiJEYXJrZW5zIHRoZSBiYWNrZHJvcCBjb2xvciB0byByZWZsZWN0IHRoZSBzb3VyY2UgY29sb3IuIn0se25hbWU6ImhhcmQtbGlnaHQiLGRlc2NyaXB0aW9uOiJNdWx0aXBsaWVzIG9yIHNjcmVlbnMgdGhlIGNvbG9ycywgZGVwZW5kaW5nIG9uIHRoZSBzb3VyY2UgY29sb3IgdmFsdWUuIn0se25hbWU6InNvZnQtbGlnaHQiLGRlc2NyaXB0aW9uOiJEYXJrZW5zIG9yIGxpZ2h0ZW5zIHRoZSBjb2xvcnMsIGRlcGVuZGluZyBvbiB0aGUgc291cmNlIGNvbG9yIHZhbHVlLiJ9LHtuYW1lOiJkaWZmZXJlbmNlIixkZXNjcmlwdGlvbjoiU3VidHJhY3RzIHRoZSBkYXJrZXIgb2YgdGhlIHR3byBjb25zdGl0dWVudCBjb2xvcnMgZnJvbSB0aGUgbGlnaHRlciBjb2xvci4uIn0se25hbWU6ImV4Y2x1c2lvbiIsZGVzY3JpcHRpb246IlByb2R1Y2VzIGFuIGVmZmVjdCBzaW1pbGFyIHRvIHRoYXQgb2YgdGhlIERpZmZlcmVuY2UgbW9kZSBidXQgbG93ZXIgaW4gY29udHJhc3QuIn0se25hbWU6Imh1ZSIsYnJvd3NlcnM6WyJFNzkiLCJGRjMyIiwiUzgiLCJDNDEiLCJPMjgiXSxkZXNjcmlwdGlvbjoiQ3JlYXRlcyBhIGNvbG9yIHdpdGggdGhlIGh1ZSBvZiB0aGUgc291cmNlIGNvbG9yIGFuZCB0aGUgc2F0dXJhdGlvbiBhbmQgbHVtaW5vc2l0eSBvZiB0aGUgYmFja2Ryb3AgY29sb3IuIn0se25hbWU6InNhdHVyYXRpb24iLGJyb3dzZXJzOlsiRTc5IiwiRkYzMiIsIlM4IiwiQzQxIiwiTzI4Il0sZGVzY3JpcHRpb246IkNyZWF0ZXMgYSBjb2xvciB3aXRoIHRoZSBzYXR1cmF0aW9uIG9mIHRoZSBzb3VyY2UgY29sb3IgYW5kIHRoZSBodWUgYW5kIGx1bWlub3NpdHkgb2YgdGhlIGJhY2tkcm9wIGNvbG9yLiJ9LHtuYW1lOiJjb2xvciIsYnJvd3NlcnM6WyJFNzkiLCJGRjMyIiwiUzgiLCJDNDEiLCJPMjgiXSxkZXNjcmlwdGlvbjoiQ3JlYXRlcyBhIGNvbG9yIHdpdGggdGhlIGh1ZSBhbmQgc2F0dXJhdGlvbiBvZiB0aGUgc291cmNlIGNvbG9yIGFuZCB0aGUgbHVtaW5vc2l0eSBvZiB0aGUgYmFja2Ryb3AgY29sb3IuIn0se25hbWU6Imx1bWlub3NpdHkiLGJyb3dzZXJzOlsiRTc5IiwiRkYzMiIsIlM4IiwiQzQxIiwiTzI4Il0sZGVzY3JpcHRpb246IkNyZWF0ZXMgYSBjb2xvciB3aXRoIHRoZSBsdW1pbm9zaXR5IG9mIHRoZSBzb3VyY2UgY29sb3IgYW5kIHRoZSBodWUgYW5kIHNhdHVyYXRpb24gb2YgdGhlIGJhY2tkcm9wIGNvbG9yLiJ9XSxzeW50YXg6IjxibGVuZC1tb2RlPiB8IHBsdXMtbGlnaHRlciIscmVsZXZhbmNlOjU0LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9taXgtYmxlbmQtbW9kZSJ9XSxkZXNjcmlwdGlvbjoiRGVmaW5lcyB0aGUgZm9ybXVsYSB0aGF0IG11c3QgYmUgdXNlZCB0byBtaXggdGhlIGNvbG9ycyB3aXRoIHRoZSBiYWNrZHJvcC4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Im1vdGlvbiIsYnJvd3NlcnM6WyJDNDYiLCJPMzMiXSx2YWx1ZXM6W3tuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiTm8gbW90aW9uIHBhdGggZ2V0cyBjcmVhdGVkLiJ9LHtuYW1lOiJwYXRoKCkiLGRlc2NyaXB0aW9uOiJEZWZpbmVzIGFuIFNWRyBwYXRoIGFzIGEgc3RyaW5nLCB3aXRoIG9wdGlvbmFsICdmaWxsLXJ1bGUnIGFzIHRoZSBmaXJzdCBhcmd1bWVudC4ifSx7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IkluZGljYXRlcyB0aGF0IHRoZSBvYmplY3QgaXMgcm90YXRlZCBieSB0aGUgYW5nbGUgb2YgdGhlIGRpcmVjdGlvbiBvZiB0aGUgbW90aW9uIHBhdGguIn0se25hbWU6InJldmVyc2UiLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgdGhhdCB0aGUgb2JqZWN0IGlzIHJvdGF0ZWQgYnkgdGhlIGFuZ2xlIG9mIHRoZSBkaXJlY3Rpb24gb2YgdGhlIG1vdGlvbiBwYXRoIHBsdXMgMTgwIGRlZ3JlZXMuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiU2hvcnRoYW5kIHByb3BlcnR5IGZvciBzZXR0aW5nICdtb3Rpb24tcGF0aCcsICdtb3Rpb24tb2Zmc2V0JyBhbmQgJ21vdGlvbi1yb3RhdGlvbicuIixyZXN0cmljdGlvbnM6WyJ1cmwiLCJsZW5ndGgiLCJwZXJjZW50YWdlIiwiYW5nbGUiLCJzaGFwZSIsImdlb21ldHJ5LWJveCIsImVudW0iXX0se25hbWU6Im1vdGlvbi1vZmZzZXQiLGJyb3dzZXJzOlsiQzQ2IiwiTzMzIl0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJBIGRpc3RhbmNlIHRoYXQgZGVzY3JpYmVzIHRoZSBwb3NpdGlvbiBhbG9uZyB0aGUgc3BlY2lmaWVkIG1vdGlvbiBwYXRoLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwicGVyY2VudGFnZSJdfSx7bmFtZToibW90aW9uLXBhdGgiLGJyb3dzZXJzOlsiQzQ2IiwiTzMzIl0sdmFsdWVzOlt7bmFtZToibm9uZSIsZGVzY3JpcHRpb246Ik5vIG1vdGlvbiBwYXRoIGdldHMgY3JlYXRlZC4ifSx7bmFtZToicGF0aCgpIixkZXNjcmlwdGlvbjoiRGVmaW5lcyBhbiBTVkcgcGF0aCBhcyBhIHN0cmluZywgd2l0aCBvcHRpb25hbCAnZmlsbC1ydWxlJyBhcyB0aGUgZmlyc3QgYXJndW1lbnQuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIHRoZSBtb3Rpb24gcGF0aCB0aGUgZWxlbWVudCBnZXRzIHBvc2l0aW9uZWQgYXQuIixyZXN0cmljdGlvbnM6WyJ1cmwiLCJzaGFwZSIsImdlb21ldHJ5LWJveCIsImVudW0iXX0se25hbWU6Im1vdGlvbi1yb3RhdGlvbiIsYnJvd3NlcnM6WyJDNDYiLCJPMzMiXSx2YWx1ZXM6W3tuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIHRoYXQgdGhlIG9iamVjdCBpcyByb3RhdGVkIGJ5IHRoZSBhbmdsZSBvZiB0aGUgZGlyZWN0aW9uIG9mIHRoZSBtb3Rpb24gcGF0aC4ifSx7bmFtZToicmV2ZXJzZSIsZGVzY3JpcHRpb246IkluZGljYXRlcyB0aGF0IHRoZSBvYmplY3QgaXMgcm90YXRlZCBieSB0aGUgYW5nbGUgb2YgdGhlIGRpcmVjdGlvbiBvZiB0aGUgbW90aW9uIHBhdGggcGx1cyAxODAgZGVncmVlcy4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJEZWZpbmVzIHRoZSBkaXJlY3Rpb24gb2YgdGhlIGVsZW1lbnQgd2hpbGUgcG9zaXRpb25pbmcgYWxvbmcgdGhlIG1vdGlvbiBwYXRoLiIscmVzdHJpY3Rpb25zOlsiYW5nbGUiXX0se25hbWU6Ii1tb3otYW5pbWF0aW9uIixicm93c2VyczpbIkZGOSJdLHZhbHVlczpbe25hbWU6ImFsdGVybmF0ZSIsZGVzY3JpcHRpb246IlRoZSBhbmltYXRpb24gY3ljbGUgaXRlcmF0aW9ucyB0aGF0IGFyZSBvZGQgY291bnRzIGFyZSBwbGF5ZWQgaW4gdGhlIG5vcm1hbCBkaXJlY3Rpb24sIGFuZCB0aGUgYW5pbWF0aW9uIGN5Y2xlIGl0ZXJhdGlvbnMgdGhhdCBhcmUgZXZlbiBjb3VudHMgYXJlIHBsYXllZCBpbiBhIHJldmVyc2UgZGlyZWN0aW9uLiJ9LHtuYW1lOiJhbHRlcm5hdGUtcmV2ZXJzZSIsZGVzY3JpcHRpb246IlRoZSBhbmltYXRpb24gY3ljbGUgaXRlcmF0aW9ucyB0aGF0IGFyZSBvZGQgY291bnRzIGFyZSBwbGF5ZWQgaW4gdGhlIHJldmVyc2UgZGlyZWN0aW9uLCBhbmQgdGhlIGFuaW1hdGlvbiBjeWNsZSBpdGVyYXRpb25zIHRoYXQgYXJlIGV2ZW4gY291bnRzIGFyZSBwbGF5ZWQgaW4gYSBub3JtYWwgZGlyZWN0aW9uLiJ9LHtuYW1lOiJiYWNrd2FyZHMiLGRlc2NyaXB0aW9uOiJUaGUgYmVnaW5uaW5nIHByb3BlcnR5IHZhbHVlIChhcyBkZWZpbmVkIGluIHRoZSBmaXJzdCBAa2V5ZnJhbWVzIGF0LXJ1bGUpIGlzIGFwcGxpZWQgYmVmb3JlIHRoZSBhbmltYXRpb24gaXMgZGlzcGxheWVkLCBkdXJpbmcgdGhlIHBlcmlvZCBkZWZpbmVkIGJ5ICdhbmltYXRpb24tZGVsYXknLiJ9LHtuYW1lOiJib3RoIixkZXNjcmlwdGlvbjoiQm90aCBmb3J3YXJkcyBhbmQgYmFja3dhcmRzIGZpbGwgbW9kZXMgYXJlIGFwcGxpZWQuIn0se25hbWU6ImZvcndhcmRzIixkZXNjcmlwdGlvbjoiVGhlIGZpbmFsIHByb3BlcnR5IHZhbHVlIChhcyBkZWZpbmVkIGluIHRoZSBsYXN0IEBrZXlmcmFtZXMgYXQtcnVsZSkgaXMgbWFpbnRhaW5lZCBhZnRlciB0aGUgYW5pbWF0aW9uIGNvbXBsZXRlcy4ifSx7bmFtZToiaW5maW5pdGUiLGRlc2NyaXB0aW9uOiJDYXVzZXMgdGhlIGFuaW1hdGlvbiB0byByZXBlYXQgZm9yZXZlci4ifSx7bmFtZToibm9uZSIsZGVzY3JpcHRpb246Ik5vIGFuaW1hdGlvbiBpcyBwZXJmb3JtZWQifSx7bmFtZToibm9ybWFsIixkZXNjcmlwdGlvbjoiTm9ybWFsIHBsYXliYWNrLiJ9LHtuYW1lOiJyZXZlcnNlIixkZXNjcmlwdGlvbjoiQWxsIGl0ZXJhdGlvbnMgb2YgdGhlIGFuaW1hdGlvbiBhcmUgcGxheWVkIGluIHRoZSByZXZlcnNlIGRpcmVjdGlvbiBmcm9tIHRoZSB3YXkgdGhleSB3ZXJlIHNwZWNpZmllZC4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJTaG9ydGhhbmQgcHJvcGVydHkgY29tYmluZXMgc2l4IG9mIHRoZSBhbmltYXRpb24gcHJvcGVydGllcyBpbnRvIGEgc2luZ2xlIHByb3BlcnR5LiIscmVzdHJpY3Rpb25zOlsidGltZSIsImVudW0iLCJ0aW1pbmctZnVuY3Rpb24iLCJpZGVudGlmaWVyIiwibnVtYmVyIl19LHtuYW1lOiItbW96LWFuaW1hdGlvbi1kZWxheSIsYnJvd3NlcnM6WyJGRjkiXSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkRlZmluZXMgd2hlbiB0aGUgYW5pbWF0aW9uIHdpbGwgc3RhcnQuIixyZXN0cmljdGlvbnM6WyJ0aW1lIl19LHtuYW1lOiItbW96LWFuaW1hdGlvbi1kaXJlY3Rpb24iLGJyb3dzZXJzOlsiRkY5Il0sdmFsdWVzOlt7bmFtZToiYWx0ZXJuYXRlIixkZXNjcmlwdGlvbjoiVGhlIGFuaW1hdGlvbiBjeWNsZSBpdGVyYXRpb25zIHRoYXQgYXJlIG9kZCBjb3VudHMgYXJlIHBsYXllZCBpbiB0aGUgbm9ybWFsIGRpcmVjdGlvbiwgYW5kIHRoZSBhbmltYXRpb24gY3ljbGUgaXRlcmF0aW9ucyB0aGF0IGFyZSBldmVuIGNvdW50cyBhcmUgcGxheWVkIGluIGEgcmV2ZXJzZSBkaXJlY3Rpb24uIn0se25hbWU6ImFsdGVybmF0ZS1yZXZlcnNlIixkZXNjcmlwdGlvbjoiVGhlIGFuaW1hdGlvbiBjeWNsZSBpdGVyYXRpb25zIHRoYXQgYXJlIG9kZCBjb3VudHMgYXJlIHBsYXllZCBpbiB0aGUgcmV2ZXJzZSBkaXJlY3Rpb24sIGFuZCB0aGUgYW5pbWF0aW9uIGN5Y2xlIGl0ZXJhdGlvbnMgdGhhdCBhcmUgZXZlbiBjb3VudHMgYXJlIHBsYXllZCBpbiBhIG5vcm1hbCBkaXJlY3Rpb24uIn0se25hbWU6Im5vcm1hbCIsZGVzY3JpcHRpb246Ik5vcm1hbCBwbGF5YmFjay4ifSx7bmFtZToicmV2ZXJzZSIsZGVzY3JpcHRpb246IkFsbCBpdGVyYXRpb25zIG9mIHRoZSBhbmltYXRpb24gYXJlIHBsYXllZCBpbiB0aGUgcmV2ZXJzZSBkaXJlY3Rpb24gZnJvbSB0aGUgd2F5IHRoZXkgd2VyZSBzcGVjaWZpZWQuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiRGVmaW5lcyB3aGV0aGVyIG9yIG5vdCB0aGUgYW5pbWF0aW9uIHNob3VsZCBwbGF5IGluIHJldmVyc2Ugb24gYWx0ZXJuYXRlIGN5Y2xlcy4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii1tb3otYW5pbWF0aW9uLWR1cmF0aW9uIixicm93c2VyczpbIkZGOSJdLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiRGVmaW5lcyB0aGUgbGVuZ3RoIG9mIHRpbWUgdGhhdCBhbiBhbmltYXRpb24gdGFrZXMgdG8gY29tcGxldGUgb25lIGN5Y2xlLiIscmVzdHJpY3Rpb25zOlsidGltZSJdfSx7bmFtZToiLW1vei1hbmltYXRpb24taXRlcmF0aW9uLWNvdW50Iixicm93c2VyczpbIkZGOSJdLHZhbHVlczpbe25hbWU6ImluZmluaXRlIixkZXNjcmlwdGlvbjoiQ2F1c2VzIHRoZSBhbmltYXRpb24gdG8gcmVwZWF0IGZvcmV2ZXIuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiRGVmaW5lcyB0aGUgbnVtYmVyIG9mIHRpbWVzIGFuIGFuaW1hdGlvbiBjeWNsZSBpcyBwbGF5ZWQuIFRoZSBkZWZhdWx0IHZhbHVlIGlzIG9uZSwgbWVhbmluZyB0aGUgYW5pbWF0aW9uIHdpbGwgcGxheSBmcm9tIGJlZ2lubmluZyB0byBlbmQgb25jZS4iLHJlc3RyaWN0aW9uczpbIm51bWJlciIsImVudW0iXX0se25hbWU6Ii1tb3otYW5pbWF0aW9uLW5hbWUiLGJyb3dzZXJzOlsiRkY5Il0sdmFsdWVzOlt7bmFtZToibm9uZSIsZGVzY3JpcHRpb246Ik5vIGFuaW1hdGlvbiBpcyBwZXJmb3JtZWQifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJEZWZpbmVzIGEgbGlzdCBvZiBhbmltYXRpb25zIHRoYXQgYXBwbHkuIEVhY2ggbmFtZSBpcyB1c2VkIHRvIHNlbGVjdCB0aGUga2V5ZnJhbWUgYXQtcnVsZSB0aGF0IHByb3ZpZGVzIHRoZSBwcm9wZXJ0eSB2YWx1ZXMgZm9yIHRoZSBhbmltYXRpb24uIixyZXN0cmljdGlvbnM6WyJpZGVudGlmaWVyIiwiZW51bSJdfSx7bmFtZToiLW1vei1hbmltYXRpb24tcGxheS1zdGF0ZSIsYnJvd3NlcnM6WyJGRjkiXSx2YWx1ZXM6W3tuYW1lOiJwYXVzZWQiLGRlc2NyaXB0aW9uOiJBIHJ1bm5pbmcgYW5pbWF0aW9uIHdpbGwgYmUgcGF1c2VkLiJ9LHtuYW1lOiJydW5uaW5nIixkZXNjcmlwdGlvbjoiUmVzdW1lIHBsYXliYWNrIG9mIGEgcGF1c2VkIGFuaW1hdGlvbi4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJEZWZpbmVzIHdoZXRoZXIgdGhlIGFuaW1hdGlvbiBpcyBydW5uaW5nIG9yIHBhdXNlZC4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii1tb3otYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbiIsYnJvd3NlcnM6WyJGRjkiXSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkRlc2NyaWJlcyBob3cgdGhlIGFuaW1hdGlvbiB3aWxsIHByb2dyZXNzIG92ZXIgb25lIGN5Y2xlIG9mIGl0cyBkdXJhdGlvbi4gU2VlIHRoZSAndHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb24nLiIscmVzdHJpY3Rpb25zOlsidGltaW5nLWZ1bmN0aW9uIl19LHtuYW1lOiItbW96LWFwcGVhcmFuY2UiLGJyb3dzZXJzOlsiRkYxIl0sdmFsdWVzOlt7bmFtZToiYnV0dG9uIn0se25hbWU6ImJ1dHRvbi1hcnJvdy1kb3duIn0se25hbWU6ImJ1dHRvbi1hcnJvdy1uZXh0In0se25hbWU6ImJ1dHRvbi1hcnJvdy1wcmV2aW91cyJ9LHtuYW1lOiJidXR0b24tYXJyb3ctdXAifSx7bmFtZToiYnV0dG9uLWJldmVsIn0se25hbWU6ImNoZWNrYm94In0se25hbWU6ImNoZWNrYm94LWNvbnRhaW5lciJ9LHtuYW1lOiJjaGVja2JveC1sYWJlbCJ9LHtuYW1lOiJkaWFsb2cifSx7bmFtZToiZ3JvdXBib3gifSx7bmFtZToibGlzdGJveCJ9LHtuYW1lOiJtZW51YXJyb3cifSx7bmFtZToibWVudWltYWdlIn0se25hbWU6Im1lbnVpdGVtIn0se25hbWU6Im1lbnVpdGVtdGV4dCJ9LHtuYW1lOiJtZW51bGlzdCJ9LHtuYW1lOiJtZW51bGlzdC1idXR0b24ifSx7bmFtZToibWVudWxpc3QtdGV4dCJ9LHtuYW1lOiJtZW51bGlzdC10ZXh0ZmllbGQifSx7bmFtZToibWVudXBvcHVwIn0se25hbWU6Im1lbnVyYWRpbyJ9LHtuYW1lOiJtZW51c2VwYXJhdG9yIn0se25hbWU6Ii1tb3otbWFjLXVuaWZpZWQtdG9vbGJhciJ9LHtuYW1lOiItbW96LXdpbi1ib3JkZXJsZXNzLWdsYXNzIn0se25hbWU6Ii1tb3otd2luLWJyb3dzZXJ0YWJiYXItdG9vbGJveCJ9LHtuYW1lOiItbW96LXdpbi1jb21tdW5pY2F0aW9ucy10b29sYm94In0se25hbWU6Ii1tb3otd2luLWdsYXNzIn0se25hbWU6Ii1tb3otd2luLW1lZGlhLXRvb2xib3gifSx7bmFtZToibm9uZSJ9LHtuYW1lOiJwcm9ncmVzc2JhciJ9LHtuYW1lOiJwcm9ncmVzc2NodW5rIn0se25hbWU6InJhZGlvIn0se25hbWU6InJhZGlvLWNvbnRhaW5lciJ9LHtuYW1lOiJyYWRpby1sYWJlbCJ9LHtuYW1lOiJyYWRpb21lbnVpdGVtIn0se25hbWU6InJlc2l6ZXIifSx7bmFtZToicmVzaXplcnBhbmVsIn0se25hbWU6InNjcm9sbGJhcmJ1dHRvbi1kb3duIn0se25hbWU6InNjcm9sbGJhcmJ1dHRvbi1sZWZ0In0se25hbWU6InNjcm9sbGJhcmJ1dHRvbi1yaWdodCJ9LHtuYW1lOiJzY3JvbGxiYXJidXR0b24tdXAifSx7bmFtZToic2Nyb2xsYmFyLXNtYWxsIn0se25hbWU6InNjcm9sbGJhcnRyYWNrLWhvcml6b250YWwifSx7bmFtZToic2Nyb2xsYmFydHJhY2stdmVydGljYWwifSx7bmFtZToic2VwYXJhdG9yIn0se25hbWU6InNwaW5uZXIifSx7bmFtZToic3Bpbm5lci1kb3duYnV0dG9uIn0se25hbWU6InNwaW5uZXItdGV4dGZpZWxkIn0se25hbWU6InNwaW5uZXItdXBidXR0b24ifSx7bmFtZToic3RhdHVzYmFyIn0se25hbWU6InN0YXR1c2JhcnBhbmVsIn0se25hbWU6InRhYiJ9LHtuYW1lOiJ0YWJwYW5lbHMifSx7bmFtZToidGFiLXNjcm9sbC1hcnJvdy1iYWNrIn0se25hbWU6InRhYi1zY3JvbGwtYXJyb3ctZm9yd2FyZCJ9LHtuYW1lOiJ0ZXh0ZmllbGQifSx7bmFtZToidGV4dGZpZWxkLW11bHRpbGluZSJ9LHtuYW1lOiJ0b29sYmFyIn0se25hbWU6InRvb2xib3gifSx7bmFtZToidG9vbHRpcCJ9LHtuYW1lOiJ0cmVlaGVhZGVyY2VsbCJ9LHtuYW1lOiJ0cmVlaGVhZGVyc29ydGFycm93In0se25hbWU6InRyZWVpdGVtIn0se25hbWU6InRyZWV0d2lzdHlvcGVuIn0se25hbWU6InRyZWV2aWV3In0se25hbWU6InRyZWV3aXN0eSJ9LHtuYW1lOiJ3aW5kb3cifV0sc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiJub25lIHwgYnV0dG9uIHwgYnV0dG9uLWFycm93LWRvd24gfCBidXR0b24tYXJyb3ctbmV4dCB8IGJ1dHRvbi1hcnJvdy1wcmV2aW91cyB8IGJ1dHRvbi1hcnJvdy11cCB8IGJ1dHRvbi1iZXZlbCB8IGJ1dHRvbi1mb2N1cyB8IGNhcmV0IHwgY2hlY2tib3ggfCBjaGVja2JveC1jb250YWluZXIgfCBjaGVja2JveC1sYWJlbCB8IGNoZWNrbWVudWl0ZW0gfCBkdWFsYnV0dG9uIHwgZ3JvdXBib3ggfCBsaXN0Ym94IHwgbGlzdGl0ZW0gfCBtZW51YXJyb3cgfCBtZW51YmFyIHwgbWVudWNoZWNrYm94IHwgbWVudWltYWdlIHwgbWVudWl0ZW0gfCBtZW51aXRlbXRleHQgfCBtZW51bGlzdCB8IG1lbnVsaXN0LWJ1dHRvbiB8IG1lbnVsaXN0LXRleHQgfCBtZW51bGlzdC10ZXh0ZmllbGQgfCBtZW51cG9wdXAgfCBtZW51cmFkaW8gfCBtZW51c2VwYXJhdG9yIHwgbWV0ZXJiYXIgfCBtZXRlcmNodW5rIHwgcHJvZ3Jlc3NiYXIgfCBwcm9ncmVzc2Jhci12ZXJ0aWNhbCB8IHByb2dyZXNzY2h1bmsgfCBwcm9ncmVzc2NodW5rLXZlcnRpY2FsIHwgcmFkaW8gfCByYWRpby1jb250YWluZXIgfCByYWRpby1sYWJlbCB8IHJhZGlvbWVudWl0ZW0gfCByYW5nZSB8IHJhbmdlLXRodW1iIHwgcmVzaXplciB8IHJlc2l6ZXJwYW5lbCB8IHNjYWxlLWhvcml6b250YWwgfCBzY2FsZXRodW1iZW5kIHwgc2NhbGV0aHVtYi1ob3Jpem9udGFsIHwgc2NhbGV0aHVtYnN0YXJ0IHwgc2NhbGV0aHVtYnRpY2sgfCBzY2FsZXRodW1iLXZlcnRpY2FsIHwgc2NhbGUtdmVydGljYWwgfCBzY3JvbGxiYXJidXR0b24tZG93biB8IHNjcm9sbGJhcmJ1dHRvbi1sZWZ0IHwgc2Nyb2xsYmFyYnV0dG9uLXJpZ2h0IHwgc2Nyb2xsYmFyYnV0dG9uLXVwIHwgc2Nyb2xsYmFydGh1bWItaG9yaXpvbnRhbCB8IHNjcm9sbGJhcnRodW1iLXZlcnRpY2FsIHwgc2Nyb2xsYmFydHJhY2staG9yaXpvbnRhbCB8IHNjcm9sbGJhcnRyYWNrLXZlcnRpY2FsIHwgc2VhcmNoZmllbGQgfCBzZXBhcmF0b3IgfCBzaGVldCB8IHNwaW5uZXIgfCBzcGlubmVyLWRvd25idXR0b24gfCBzcGlubmVyLXRleHRmaWVsZCB8IHNwaW5uZXItdXBidXR0b24gfCBzcGxpdHRlciB8IHN0YXR1c2JhciB8IHN0YXR1c2JhcnBhbmVsIHwgdGFiIHwgdGFicGFuZWwgfCB0YWJwYW5lbHMgfCB0YWItc2Nyb2xsLWFycm93LWJhY2sgfCB0YWItc2Nyb2xsLWFycm93LWZvcndhcmQgfCB0ZXh0ZmllbGQgfCB0ZXh0ZmllbGQtbXVsdGlsaW5lIHwgdG9vbGJhciB8IHRvb2xiYXJidXR0b24gfCB0b29sYmFyYnV0dG9uLWRyb3Bkb3duIHwgdG9vbGJhcmdyaXBwZXIgfCB0b29sYm94IHwgdG9vbHRpcCB8IHRyZWVoZWFkZXIgfCB0cmVlaGVhZGVyY2VsbCB8IHRyZWVoZWFkZXJzb3J0YXJyb3cgfCB0cmVlaXRlbSB8IHRyZWVsaW5lIHwgdHJlZXR3aXN0eSB8IHRyZWV0d2lzdHlvcGVuIHwgdHJlZXZpZXcgfCAtbW96LW1hYy11bmlmaWVkLXRvb2xiYXIgfCAtbW96LXdpbi1ib3JkZXJsZXNzLWdsYXNzIHwgLW1vei13aW4tYnJvd3NlcnRhYmJhci10b29sYm94IHwgLW1vei13aW4tY29tbXVuaWNhdGlvbnN0ZXh0IHwgLW1vei13aW4tY29tbXVuaWNhdGlvbnMtdG9vbGJveCB8IC1tb3otd2luLWV4Y2x1ZGUtZ2xhc3MgfCAtbW96LXdpbi1nbGFzcyB8IC1tb3otd2luLW1lZGlhdGV4dCB8IC1tb3otd2luLW1lZGlhLXRvb2xib3ggfCAtbW96LXdpbmRvdy1idXR0b24tYm94IHwgLW1vei13aW5kb3ctYnV0dG9uLWJveC1tYXhpbWl6ZWQgfCAtbW96LXdpbmRvdy1idXR0b24tY2xvc2UgfCAtbW96LXdpbmRvdy1idXR0b24tbWF4aW1pemUgfCAtbW96LXdpbmRvdy1idXR0b24tbWluaW1pemUgfCAtbW96LXdpbmRvdy1idXR0b24tcmVzdG9yZSB8IC1tb3otd2luZG93LWZyYW1lLWJvdHRvbSB8IC1tb3otd2luZG93LWZyYW1lLWxlZnQgfCAtbW96LXdpbmRvdy1mcmFtZS1yaWdodCB8IC1tb3otd2luZG93LXRpdGxlYmFyIHwgLW1vei13aW5kb3ctdGl0bGViYXItbWF4aW1pemVkIixyZWxldmFuY2U6MCxkZXNjcmlwdGlvbjoiVXNlZCBpbiBHZWNrbyAoRmlyZWZveCkgdG8gZGlzcGxheSBhbiBlbGVtZW50IHVzaW5nIGEgcGxhdGZvcm0tbmF0aXZlIHN0eWxpbmcgYmFzZWQgb24gdGhlIG9wZXJhdGluZyBzeXN0ZW0ncyB0aGVtZS4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii1tb3otYmFja2ZhY2UtdmlzaWJpbGl0eSIsYnJvd3NlcnM6WyJGRjEwIl0sdmFsdWVzOlt7bmFtZToiaGlkZGVuIn0se25hbWU6InZpc2libGUifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJEZXRlcm1pbmVzIHdoZXRoZXIgb3Igbm90IHRoZSAnYmFjaycgc2lkZSBvZiBhIHRyYW5zZm9ybWVkIGVsZW1lbnQgaXMgdmlzaWJsZSB3aGVuIGZhY2luZyB0aGUgdmlld2VyLiBXaXRoIGFuIGlkZW50aXR5IHRyYW5zZm9ybSwgdGhlIGZyb250IHNpZGUgb2YgYW4gZWxlbWVudCBmYWNlcyB0aGUgdmlld2VyLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiLW1vei1iYWNrZ3JvdW5kLWNsaXAiLGJyb3dzZXJzOlsiRkYxLTMuNiJdLHZhbHVlczpbe25hbWU6InBhZGRpbmcifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJEZXRlcm1pbmVzIHRoZSBiYWNrZ3JvdW5kIHBhaW50aW5nIGFyZWEuIixyZXN0cmljdGlvbnM6WyJib3giLCJlbnVtIl19LHtuYW1lOiItbW96LWJhY2tncm91bmQtaW5saW5lLXBvbGljeSIsYnJvd3NlcnM6WyJGRjEiXSx2YWx1ZXM6W3tuYW1lOiJib3VuZGluZy1ib3gifSx7bmFtZToiY29udGludW91cyJ9LHtuYW1lOiJlYWNoLWJveCJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkluIEdlY2tvLWJhc2VkIGFwcGxpY2F0aW9ucyBsaWtlIEZpcmVmb3gsIHRoZSAtbW96LWJhY2tncm91bmQtaW5saW5lLXBvbGljeSBDU1MgcHJvcGVydHkgc3BlY2lmaWVzIGhvdyB0aGUgYmFja2dyb3VuZCBpbWFnZSBvZiBhbiBpbmxpbmUgZWxlbWVudCBpcyBkZXRlcm1pbmVkIHdoZW4gdGhlIGNvbnRlbnQgb2YgdGhlIGlubGluZSBlbGVtZW50IHdyYXBzIG9udG8gbXVsdGlwbGUgbGluZXMuIFRoZSBjaG9pY2Ugb2YgcG9zaXRpb24gaGFzIHNpZ25pZmljYW50IGVmZmVjdHMgb24gcmVwZXRpdGlvbi4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii1tb3otYmFja2dyb3VuZC1vcmlnaW4iLGJyb3dzZXJzOlsiRkYxIl0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJGb3IgZWxlbWVudHMgcmVuZGVyZWQgYXMgYSBzaW5nbGUgYm94LCBzcGVjaWZpZXMgdGhlIGJhY2tncm91bmQgcG9zaXRpb25pbmcgYXJlYS4gRm9yIGVsZW1lbnRzIHJlbmRlcmVkIGFzIG11bHRpcGxlIGJveGVzIChlLmcuLCBpbmxpbmUgYm94ZXMgb24gc2V2ZXJhbCBsaW5lcywgYm94ZXMgb24gc2V2ZXJhbCBwYWdlcykgc3BlY2lmaWVzIHdoaWNoIGJveGVzICdib3gtZGVjb3JhdGlvbi1icmVhaycgb3BlcmF0ZXMgb24gdG8gZGV0ZXJtaW5lIHRoZSBiYWNrZ3JvdW5kIHBvc2l0aW9uaW5nIGFyZWEocykuIixyZXN0cmljdGlvbnM6WyJib3giXX0se25hbWU6Ii1tb3otYm9yZGVyLWJvdHRvbS1jb2xvcnMiLGJyb3dzZXJzOlsiRkYxIl0sc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiI8Y29sb3I+KyB8IG5vbmUiLHJlbGV2YW5jZTowLGRlc2NyaXB0aW9uOiJTZXRzIGEgbGlzdCBvZiBjb2xvcnMgZm9yIHRoZSBib3R0b20gYm9yZGVyLiIscmVzdHJpY3Rpb25zOlsiY29sb3IiXX0se25hbWU6Ii1tb3otYm9yZGVyLWltYWdlIixicm93c2VyczpbIkZGMy42Il0sdmFsdWVzOlt7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IklmICdhdXRvJyBpcyBzcGVjaWZpZWQgdGhlbiB0aGUgYm9yZGVyIGltYWdlIHdpZHRoIGlzIHRoZSBpbnRyaW5zaWMgd2lkdGggb3IgaGVpZ2h0ICh3aGljaGV2ZXIgaXMgYXBwbGljYWJsZSkgb2YgdGhlIGNvcnJlc3BvbmRpbmcgaW1hZ2Ugc2xpY2UuIElmIHRoZSBpbWFnZSBkb2VzIG5vdCBoYXZlIHRoZSByZXF1aXJlZCBpbnRyaW5zaWMgZGltZW5zaW9uIHRoZW4gdGhlIGNvcnJlc3BvbmRpbmcgYm9yZGVyLXdpZHRoIGlzIHVzZWQgaW5zdGVhZC4ifSx7bmFtZToiZmlsbCIsZGVzY3JpcHRpb246IkNhdXNlcyB0aGUgbWlkZGxlIHBhcnQgb2YgdGhlIGJvcmRlci1pbWFnZSB0byBiZSBwcmVzZXJ2ZWQuIn0se25hbWU6Im5vbmUifSx7bmFtZToicmVwZWF0IixkZXNjcmlwdGlvbjoiVGhlIGltYWdlIGlzIHRpbGVkIChyZXBlYXRlZCkgdG8gZmlsbCB0aGUgYXJlYS4ifSx7bmFtZToicm91bmQiLGRlc2NyaXB0aW9uOiJUaGUgaW1hZ2UgaXMgdGlsZWQgKHJlcGVhdGVkKSB0byBmaWxsIHRoZSBhcmVhLiBJZiBpdCBkb2VzIG5vdCBmaWxsIHRoZSBhcmVhIHdpdGggYSB3aG9sZSBudW1iZXIgb2YgdGlsZXMsIHRoZSBpbWFnZSBpcyByZXNjYWxlZCBzbyB0aGF0IGl0IGRvZXMuIn0se25hbWU6InNwYWNlIixkZXNjcmlwdGlvbjoiVGhlIGltYWdlIGlzIHRpbGVkIChyZXBlYXRlZCkgdG8gZmlsbCB0aGUgYXJlYS4gSWYgaXQgZG9lcyBub3QgZmlsbCB0aGUgYXJlYSB3aXRoIGEgd2hvbGUgbnVtYmVyIG9mIHRpbGVzLCB0aGUgZXh0cmEgc3BhY2UgaXMgZGlzdHJpYnV0ZWQgYXJvdW5kIHRoZSB0aWxlcy4ifSx7bmFtZToic3RyZXRjaCIsZGVzY3JpcHRpb246IlRoZSBpbWFnZSBpcyBzdHJldGNoZWQgdG8gZmlsbCB0aGUgYXJlYS4ifSx7bmFtZToidXJsKCkifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJTaG9ydGhhbmQgcHJvcGVydHkgZm9yIHNldHRpbmcgJ2JvcmRlci1pbWFnZS1zb3VyY2UnLCAnYm9yZGVyLWltYWdlLXNsaWNlJywgJ2JvcmRlci1pbWFnZS13aWR0aCcsICdib3JkZXItaW1hZ2Utb3V0c2V0JyBhbmQgJ2JvcmRlci1pbWFnZS1yZXBlYXQnLiBPbWl0dGVkIHZhbHVlcyBhcmUgc2V0IHRvIHRoZWlyIGluaXRpYWwgdmFsdWVzLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwicGVyY2VudGFnZSIsIm51bWJlciIsInVybCIsImVudW0iXX0se25hbWU6Ii1tb3otYm9yZGVyLWxlZnQtY29sb3JzIixicm93c2VyczpbIkZGMSJdLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoiPGNvbG9yPisgfCBub25lIixyZWxldmFuY2U6MCxkZXNjcmlwdGlvbjoiU2V0cyBhIGxpc3Qgb2YgY29sb3JzIGZvciB0aGUgYm90dG9tIGJvcmRlci4iLHJlc3RyaWN0aW9uczpbImNvbG9yIl19LHtuYW1lOiItbW96LWJvcmRlci1yaWdodC1jb2xvcnMiLGJyb3dzZXJzOlsiRkYxIl0sc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiI8Y29sb3I+KyB8IG5vbmUiLHJlbGV2YW5jZTowLGRlc2NyaXB0aW9uOiJTZXRzIGEgbGlzdCBvZiBjb2xvcnMgZm9yIHRoZSBib3R0b20gYm9yZGVyLiIscmVzdHJpY3Rpb25zOlsiY29sb3IiXX0se25hbWU6Ii1tb3otYm9yZGVyLXRvcC1jb2xvcnMiLGJyb3dzZXJzOlsiRkYxIl0sc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiI8Y29sb3I+KyB8IG5vbmUiLHJlbGV2YW5jZTowLGRlc2NyaXB0aW9uOiJTa2UgRmlyZWZveCwgLW1vei1ib3JkZXItYm90dG9tLWNvbG9ycyBzZXRzIGEgbGlzdCBvZiBjb2xvcnMgZm9yIHRoZSBib3R0b20gYm9yZGVyLiIscmVzdHJpY3Rpb25zOlsiY29sb3IiXX0se25hbWU6Ii1tb3otYm94LWFsaWduIixicm93c2VyczpbIkZGMSJdLHZhbHVlczpbe25hbWU6ImJhc2VsaW5lIixkZXNjcmlwdGlvbjoiSWYgdGhpcyBib3ggb3JpZW50YXRpb24gaXMgaW5saW5lLWF4aXMgb3IgaG9yaXpvbnRhbCwgYWxsIGNoaWxkcmVuIGFyZSBwbGFjZWQgd2l0aCB0aGVpciBiYXNlbGluZXMgYWxpZ25lZCwgYW5kIGV4dHJhIHNwYWNlIHBsYWNlZCBiZWZvcmUgb3IgYWZ0ZXIgYXMgbmVjZXNzYXJ5LiBGb3IgYmxvY2sgZmxvd3MsIHRoZSBiYXNlbGluZSBvZiB0aGUgZmlyc3Qgbm9uLWVtcHR5IGxpbmUgYm94IGxvY2F0ZWQgd2l0aGluIHRoZSBlbGVtZW50IGlzIHVzZWQuIEZvciB0YWJsZXMsIHRoZSBiYXNlbGluZSBvZiB0aGUgZmlyc3QgY2VsbCBpcyB1c2VkLiJ9LHtuYW1lOiJjZW50ZXIiLGRlc2NyaXB0aW9uOiJBbnkgZXh0cmEgc3BhY2UgaXMgZGl2aWRlZCBldmVubHksIHdpdGggaGFsZiBwbGFjZWQgYWJvdmUgdGhlIGNoaWxkIGFuZCB0aGUgb3RoZXIgaGFsZiBwbGFjZWQgYWZ0ZXIgdGhlIGNoaWxkLiJ9LHtuYW1lOiJlbmQiLGRlc2NyaXB0aW9uOiJGb3Igbm9ybWFsIGRpcmVjdGlvbiBib3hlcywgdGhlIGJvdHRvbSBlZGdlIG9mIGVhY2ggY2hpbGQgaXMgcGxhY2VkIGFsb25nIHRoZSBib3R0b20gb2YgdGhlIGJveC4gRXh0cmEgc3BhY2UgaXMgcGxhY2VkIGFib3ZlIHRoZSBlbGVtZW50LiBGb3IgcmV2ZXJzZSBkaXJlY3Rpb24gYm94ZXMsIHRoZSB0b3AgZWRnZSBvZiBlYWNoIGNoaWxkIGlzIHBsYWNlZCBhbG9uZyB0aGUgdG9wIG9mIHRoZSBib3guIEV4dHJhIHNwYWNlIGlzIHBsYWNlZCBiZWxvdyB0aGUgZWxlbWVudC4ifSx7bmFtZToic3RhcnQiLGRlc2NyaXB0aW9uOiJGb3Igbm9ybWFsIGRpcmVjdGlvbiBib3hlcywgdGhlIHRvcCBlZGdlIG9mIGVhY2ggY2hpbGQgaXMgcGxhY2VkIGFsb25nIHRoZSB0b3Agb2YgdGhlIGJveC4gRXh0cmEgc3BhY2UgaXMgcGxhY2VkIGJlbG93IHRoZSBlbGVtZW50LiBGb3IgcmV2ZXJzZSBkaXJlY3Rpb24gYm94ZXMsIHRoZSBib3R0b20gZWRnZSBvZiBlYWNoIGNoaWxkIGlzIHBsYWNlZCBhbG9uZyB0aGUgYm90dG9tIG9mIHRoZSBib3guIEV4dHJhIHNwYWNlIGlzIHBsYWNlZCBhYm92ZSB0aGUgZWxlbWVudC4ifSx7bmFtZToic3RyZXRjaCIsZGVzY3JpcHRpb246IlRoZSBoZWlnaHQgb2YgZWFjaCBjaGlsZCBpcyBhZGp1c3RlZCB0byB0aGF0IG9mIHRoZSBjb250YWluaW5nIGJsb2NrLiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlNwZWNpZmllcyBob3cgYSBYVUwgYm94IGFsaWducyBpdHMgY29udGVudHMgYWNyb3NzIChwZXJwZW5kaWN1bGFyIHRvKSB0aGUgZGlyZWN0aW9uIG9mIGl0cyBsYXlvdXQuIFRoZSBlZmZlY3Qgb2YgdGhpcyBpcyBvbmx5IHZpc2libGUgaWYgdGhlcmUgaXMgZXh0cmEgc3BhY2UgaW4gdGhlIGJveC4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii1tb3otYm94LWRpcmVjdGlvbiIsYnJvd3NlcnM6WyJGRjEiXSx2YWx1ZXM6W3tuYW1lOiJub3JtYWwiLGRlc2NyaXB0aW9uOiJBIGJveCB3aXRoIGEgY29tcHV0ZWQgdmFsdWUgb2YgaG9yaXpvbnRhbCBmb3IgYm94LW9yaWVudCBkaXNwbGF5cyBpdHMgY2hpbGRyZW4gZnJvbSBsZWZ0IHRvIHJpZ2h0LiBBIGJveCB3aXRoIGEgY29tcHV0ZWQgdmFsdWUgb2YgdmVydGljYWwgZGlzcGxheXMgaXRzIGNoaWxkcmVuIGZyb20gdG9wIHRvIGJvdHRvbS4ifSx7bmFtZToicmV2ZXJzZSIsZGVzY3JpcHRpb246IkEgYm94IHdpdGggYSBjb21wdXRlZCB2YWx1ZSBvZiBob3Jpem9udGFsIGZvciBib3gtb3JpZW50IGRpc3BsYXlzIGl0cyBjaGlsZHJlbiBmcm9tIHJpZ2h0IHRvIGxlZnQuIEEgYm94IHdpdGggYSBjb21wdXRlZCB2YWx1ZSBvZiB2ZXJ0aWNhbCBkaXNwbGF5cyBpdHMgY2hpbGRyZW4gZnJvbSBib3R0b20gdG8gdG9wLiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlNwZWNpZmllcyB3aGV0aGVyIGEgYm94IGxheXMgb3V0IGl0cyBjb250ZW50cyBub3JtYWxseSAoZnJvbSB0aGUgdG9wIG9yIGxlZnQgZWRnZSksIG9yIGluIHJldmVyc2UgKGZyb20gdGhlIGJvdHRvbSBvciByaWdodCBlZGdlKS4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii1tb3otYm94LWZsZXgiLGJyb3dzZXJzOlsiRkYxIl0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgaG93IGEgYm94IGdyb3dzIHRvIGZpbGwgdGhlIGJveCB0aGF0IGNvbnRhaW5zIGl0LCBpbiB0aGUgZGlyZWN0aW9uIG9mIHRoZSBjb250YWluaW5nIGJveCdzIGxheW91dC4iLHJlc3RyaWN0aW9uczpbIm51bWJlciJdfSx7bmFtZToiLW1vei1ib3gtZmxleGdyb3VwIixicm93c2VyczpbIkZGMSJdLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiRmxleGlibGUgZWxlbWVudHMgY2FuIGJlIGFzc2lnbmVkIHRvIGZsZXggZ3JvdXBzIHVzaW5nIHRoZSAnYm94LWZsZXgtZ3JvdXAnIHByb3BlcnR5LiIscmVzdHJpY3Rpb25zOlsiaW50ZWdlciJdfSx7bmFtZToiLW1vei1ib3gtb3JkaW5hbC1ncm91cCIsYnJvd3NlcnM6WyJGRjEiXSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkluZGljYXRlcyB0aGUgb3JkaW5hbCBncm91cCB0aGUgZWxlbWVudCBiZWxvbmdzIHRvLiBFbGVtZW50cyB3aXRoIGEgbG93ZXIgb3JkaW5hbCBncm91cCBhcmUgZGlzcGxheWVkIGJlZm9yZSB0aG9zZSB3aXRoIGEgaGlnaGVyIG9yZGluYWwgZ3JvdXAuIixyZXN0cmljdGlvbnM6WyJpbnRlZ2VyIl19LHtuYW1lOiItbW96LWJveC1vcmllbnQiLGJyb3dzZXJzOlsiRkYxIl0sdmFsdWVzOlt7bmFtZToiYmxvY2stYXhpcyIsZGVzY3JpcHRpb246IkVsZW1lbnRzIGFyZSBvcmllbnRlZCBhbG9uZyB0aGUgYm94J3MgYXhpcy4ifSx7bmFtZToiaG9yaXpvbnRhbCIsZGVzY3JpcHRpb246IlRoZSBib3ggZGlzcGxheXMgaXRzIGNoaWxkcmVuIGZyb20gbGVmdCB0byByaWdodCBpbiBhIGhvcml6b250YWwgbGluZS4ifSx7bmFtZToiaW5saW5lLWF4aXMiLGRlc2NyaXB0aW9uOiJFbGVtZW50cyBhcmUgb3JpZW50ZWQgdmVydGljYWxseS4ifSx7bmFtZToidmVydGljYWwiLGRlc2NyaXB0aW9uOiJUaGUgYm94IGRpc3BsYXlzIGl0cyBjaGlsZHJlbiBmcm9tIHN0YWNrZWQgZnJvbSB0b3AgdG8gYm90dG9tIHZlcnRpY2FsbHkuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiSW4gTW96aWxsYSBhcHBsaWNhdGlvbnMsIC1tb3otYm94LW9yaWVudCBzcGVjaWZpZXMgd2hldGhlciBhIGJveCBsYXlzIG91dCBpdHMgY29udGVudHMgaG9yaXpvbnRhbGx5IG9yIHZlcnRpY2FsbHkuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiItbW96LWJveC1wYWNrIixicm93c2VyczpbIkZGMSJdLHZhbHVlczpbe25hbWU6ImNlbnRlciIsZGVzY3JpcHRpb246IlRoZSBleHRyYSBzcGFjZSBpcyBkaXZpZGVkIGV2ZW5seSwgd2l0aCBoYWxmIHBsYWNlZCBiZWZvcmUgdGhlIGZpcnN0IGNoaWxkIGFuZCB0aGUgb3RoZXIgaGFsZiBwbGFjZWQgYWZ0ZXIgdGhlIGxhc3QgY2hpbGQuIn0se25hbWU6ImVuZCIsZGVzY3JpcHRpb246IkZvciBub3JtYWwgZGlyZWN0aW9uIGJveGVzLCB0aGUgcmlnaHQgZWRnZSBvZiB0aGUgbGFzdCBjaGlsZCBpcyBwbGFjZWQgYXQgdGhlIHJpZ2h0IHNpZGUsIHdpdGggYWxsIGV4dHJhIHNwYWNlIHBsYWNlZCBiZWZvcmUgdGhlIGZpcnN0IGNoaWxkLiBGb3IgcmV2ZXJzZSBkaXJlY3Rpb24gYm94ZXMsIHRoZSBsZWZ0IGVkZ2Ugb2YgdGhlIGZpcnN0IGNoaWxkIGlzIHBsYWNlZCBhdCB0aGUgbGVmdCBzaWRlLCB3aXRoIGFsbCBleHRyYSBzcGFjZSBwbGFjZWQgYWZ0ZXIgdGhlIGxhc3QgY2hpbGQuIn0se25hbWU6Imp1c3RpZnkiLGRlc2NyaXB0aW9uOiJUaGUgc3BhY2UgaXMgZGl2aWRlZCBldmVubHkgaW4tYmV0d2VlbiBlYWNoIGNoaWxkLCB3aXRoIG5vbmUgb2YgdGhlIGV4dHJhIHNwYWNlIHBsYWNlZCBiZWZvcmUgdGhlIGZpcnN0IGNoaWxkIG9yIGFmdGVyIHRoZSBsYXN0IGNoaWxkLiBJZiB0aGVyZSBpcyBvbmx5IG9uZSBjaGlsZCwgdHJlYXQgdGhlIHBhY2sgdmFsdWUgYXMgaWYgaXQgd2VyZSBzdGFydC4ifSx7bmFtZToic3RhcnQiLGRlc2NyaXB0aW9uOiJGb3Igbm9ybWFsIGRpcmVjdGlvbiBib3hlcywgdGhlIGxlZnQgZWRnZSBvZiB0aGUgZmlyc3QgY2hpbGQgaXMgcGxhY2VkIGF0IHRoZSBsZWZ0IHNpZGUsIHdpdGggYWxsIGV4dHJhIHNwYWNlIHBsYWNlZCBhZnRlciB0aGUgbGFzdCBjaGlsZC4gRm9yIHJldmVyc2UgZGlyZWN0aW9uIGJveGVzLCB0aGUgcmlnaHQgZWRnZSBvZiB0aGUgbGFzdCBjaGlsZCBpcyBwbGFjZWQgYXQgdGhlIHJpZ2h0IHNpZGUsIHdpdGggYWxsIGV4dHJhIHNwYWNlIHBsYWNlZCBiZWZvcmUgdGhlIGZpcnN0IGNoaWxkLiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlNwZWNpZmllcyBob3cgYSBib3ggcGFja3MgaXRzIGNvbnRlbnRzIGluIHRoZSBkaXJlY3Rpb24gb2YgaXRzIGxheW91dC4gVGhlIGVmZmVjdCBvZiB0aGlzIGlzIG9ubHkgdmlzaWJsZSBpZiB0aGVyZSBpcyBleHRyYSBzcGFjZSBpbiB0aGUgYm94LiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiLW1vei1ib3gtc2l6aW5nIixicm93c2VyczpbIkZGMSJdLHZhbHVlczpbe25hbWU6ImJvcmRlci1ib3giLGRlc2NyaXB0aW9uOiJUaGUgc3BlY2lmaWVkIHdpZHRoIGFuZCBoZWlnaHQgKGFuZCByZXNwZWN0aXZlIG1pbi9tYXggcHJvcGVydGllcykgb24gdGhpcyBlbGVtZW50IGRldGVybWluZSB0aGUgYm9yZGVyIGJveCBvZiB0aGUgZWxlbWVudC4ifSx7bmFtZToiY29udGVudC1ib3giLGRlc2NyaXB0aW9uOiJCZWhhdmlvciBvZiB3aWR0aCBhbmQgaGVpZ2h0IGFzIHNwZWNpZmllZCBieSBDU1MyLjEuIFRoZSBzcGVjaWZpZWQgd2lkdGggYW5kIGhlaWdodCAoYW5kIHJlc3BlY3RpdmUgbWluL21heCBwcm9wZXJ0aWVzKSBhcHBseSB0byB0aGUgd2lkdGggYW5kIGhlaWdodCByZXNwZWN0aXZlbHkgb2YgdGhlIGNvbnRlbnQgYm94IG9mIHRoZSBlbGVtZW50LiJ9LHtuYW1lOiJwYWRkaW5nLWJveCIsZGVzY3JpcHRpb246IlRoZSBzcGVjaWZpZWQgd2lkdGggYW5kIGhlaWdodCAoYW5kIHJlc3BlY3RpdmUgbWluL21heCBwcm9wZXJ0aWVzKSBvbiB0aGlzIGVsZW1lbnQgZGV0ZXJtaW5lIHRoZSBwYWRkaW5nIGJveCBvZiB0aGUgZWxlbWVudC4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJCb3ggTW9kZWwgYWRkaXRpb24gaW4gQ1NTMy4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii1tb3otY29sdW1uLWNvdW50Iixicm93c2VyczpbIkZGMy41Il0sdmFsdWVzOlt7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IkRldGVybWluZXMgdGhlIG51bWJlciBvZiBjb2x1bW5zIGJ5IHRoZSAnY29sdW1uLXdpZHRoJyBwcm9wZXJ0eSBhbmQgdGhlIGVsZW1lbnQgd2lkdGguIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiRGVzY3JpYmVzIHRoZSBvcHRpbWFsIG51bWJlciBvZiBjb2x1bW5zIGludG8gd2hpY2ggdGhlIGNvbnRlbnQgb2YgdGhlIGVsZW1lbnQgd2lsbCBiZSBmbG93ZWQuIixyZXN0cmljdGlvbnM6WyJpbnRlZ2VyIl19LHtuYW1lOiItbW96LWNvbHVtbi1nYXAiLGJyb3dzZXJzOlsiRkYzLjUiXSx2YWx1ZXM6W3tuYW1lOiJub3JtYWwiLGRlc2NyaXB0aW9uOiJVc2VyIGFnZW50IHNwZWNpZmljIGFuZCB0eXBpY2FsbHkgZXF1aXZhbGVudCB0byAxZW0uIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiU2V0cyB0aGUgZ2FwIGJldHdlZW4gY29sdW1ucy4gSWYgdGhlcmUgaXMgYSBjb2x1bW4gcnVsZSBiZXR3ZWVuIGNvbHVtbnMsIGl0IHdpbGwgYXBwZWFyIGluIHRoZSBtaWRkbGUgb2YgdGhlIGdhcC4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCJdfSx7bmFtZToiLW1vei1jb2x1bW4tcnVsZSIsYnJvd3NlcnM6WyJGRjMuNSJdLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiU2hvcnRoYW5kIGZvciBzZXR0aW5nICdjb2x1bW4tcnVsZS13aWR0aCcsICdjb2x1bW4tcnVsZS1zdHlsZScsIGFuZCAnY29sdW1uLXJ1bGUtY29sb3InIGF0IHRoZSBzYW1lIHBsYWNlIGluIHRoZSBzdHlsZSBzaGVldC4gT21pdHRlZCB2YWx1ZXMgYXJlIHNldCB0byB0aGVpciBpbml0aWFsIHZhbHVlcy4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsImxpbmUtd2lkdGgiLCJsaW5lLXN0eWxlIiwiY29sb3IiXX0se25hbWU6Ii1tb3otY29sdW1uLXJ1bGUtY29sb3IiLGJyb3dzZXJzOlsiRkYzLjUiXSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlNldHMgdGhlIGNvbG9yIG9mIHRoZSBjb2x1bW4gcnVsZSIscmVzdHJpY3Rpb25zOlsiY29sb3IiXX0se25hbWU6Ii1tb3otY29sdW1uLXJ1bGUtc3R5bGUiLGJyb3dzZXJzOlsiRkYzLjUiXSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlNldHMgdGhlIHN0eWxlIG9mIHRoZSBydWxlIGJldHdlZW4gY29sdW1ucyBvZiBhbiBlbGVtZW50LiIscmVzdHJpY3Rpb25zOlsibGluZS1zdHlsZSJdfSx7bmFtZToiLW1vei1jb2x1bW4tcnVsZS13aWR0aCIsYnJvd3NlcnM6WyJGRjMuNSJdLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiU2V0cyB0aGUgd2lkdGggb2YgdGhlIHJ1bGUgYmV0d2VlbiBjb2x1bW5zLiBOZWdhdGl2ZSB2YWx1ZXMgYXJlIG5vdCBhbGxvd2VkLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwibGluZS13aWR0aCJdfSx7bmFtZToiLW1vei1jb2x1bW5zIixicm93c2VyczpbIkZGOSJdLHZhbHVlczpbe25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJUaGUgd2lkdGggZGVwZW5kcyBvbiB0aGUgdmFsdWVzIG9mIG90aGVyIHByb3BlcnRpZXMuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiQSBzaG9ydGhhbmQgcHJvcGVydHkgd2hpY2ggc2V0cyBib3RoICdjb2x1bW4td2lkdGgnIGFuZCAnY29sdW1uLWNvdW50Jy4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsImludGVnZXIiXX0se25hbWU6Ii1tb3otY29sdW1uLXdpZHRoIixicm93c2VyczpbIkZGMy41Il0sdmFsdWVzOlt7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IlRoZSB3aWR0aCBkZXBlbmRzIG9uIHRoZSB2YWx1ZXMgb2Ygb3RoZXIgcHJvcGVydGllcy4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJUaGlzIHByb3BlcnR5IGRlc2NyaWJlcyB0aGUgd2lkdGggb2YgY29sdW1ucyBpbiBtdWx0aWNvbCBlbGVtZW50cy4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCJdfSx7bmFtZToiLW1vei1mb250LWZlYXR1cmUtc2V0dGluZ3MiLGJyb3dzZXJzOlsiRkY0Il0sdmFsdWVzOlt7bmFtZTonImMyY3MiJ30se25hbWU6JyJkbGlnIid9LHtuYW1lOicia2VybiInfSx7bmFtZTonImxpZ2EiJ30se25hbWU6JyJsbnVtIid9LHtuYW1lOicib251bSInfSx7bmFtZTonInNtY3AiJ30se25hbWU6JyJzd3NoIid9LHtuYW1lOicidG51bSInfSx7bmFtZToibm9ybWFsIixkZXNjcmlwdGlvbjoiTm8gY2hhbmdlIGluIGdseXBoIHN1YnN0aXR1dGlvbiBvciBwb3NpdGlvbmluZyBvY2N1cnMuIn0se25hbWU6Im9mZiIsYnJvd3NlcnM6WyJGRjQiXX0se25hbWU6Im9uIixicm93c2VyczpbIkZGNCJdfV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJQcm92aWRlcyBsb3ctbGV2ZWwgY29udHJvbCBvdmVyIE9wZW5UeXBlIGZvbnQgZmVhdHVyZXMuIEl0IGlzIGludGVuZGVkIGFzIGEgd2F5IG9mIHByb3ZpZGluZyBhY2Nlc3MgdG8gZm9udCBmZWF0dXJlcyB0aGF0IGFyZSBub3Qgd2lkZWx5IHVzZWQgYnV0IGFyZSBuZWVkZWQgZm9yIGEgcGFydGljdWxhciB1c2UgY2FzZS4iLHJlc3RyaWN0aW9uczpbInN0cmluZyIsImludGVnZXIiXX0se25hbWU6Ii1tb3otaHlwaGVucyIsYnJvd3NlcnM6WyJGRjkiXSx2YWx1ZXM6W3tuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiQ29uZGl0aW9uYWwgaHlwaGVuYXRpb24gY2hhcmFjdGVycyBpbnNpZGUgYSB3b3JkLCBpZiBwcmVzZW50LCB0YWtlIHByaW9yaXR5IG92ZXIgYXV0b21hdGljIHJlc291cmNlcyB3aGVuIGRldGVybWluaW5nIGh5cGhlbmF0aW9uIHBvaW50cyB3aXRoaW4gdGhlIHdvcmQuIn0se25hbWU6Im1hbnVhbCIsZGVzY3JpcHRpb246IldvcmRzIGFyZSBvbmx5IGJyb2tlbiBhdCBsaW5lIGJyZWFrcyB3aGVyZSB0aGVyZSBhcmUgY2hhcmFjdGVycyBpbnNpZGUgdGhlIHdvcmQgdGhhdCBzdWdnZXN0IGxpbmUgYnJlYWsgb3Bwb3J0dW5pdGllcyJ9LHtuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiV29yZHMgYXJlIG5vdCBicm9rZW4gYXQgbGluZSBicmVha3MsIGV2ZW4gaWYgY2hhcmFjdGVycyBpbnNpZGUgdGhlIHdvcmQgc3VnZ2VzdCBsaW5lIGJyZWFrIHBvaW50cy4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJDb250cm9scyB3aGV0aGVyIGh5cGhlbmF0aW9uIGlzIGFsbG93ZWQgdG8gY3JlYXRlIG1vcmUgYnJlYWsgb3Bwb3J0dW5pdGllcyB3aXRoaW4gYSBsaW5lIG9mIHRleHQuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiItbW96LXBlcnNwZWN0aXZlIixicm93c2VyczpbIkZGMTAiXSx2YWx1ZXM6W3tuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiTm8gcGVyc3BlY3RpdmUgdHJhbnNmb3JtIGlzIGFwcGxpZWQuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiQXBwbGllcyB0aGUgc2FtZSB0cmFuc2Zvcm0gYXMgdGhlIHBlcnNwZWN0aXZlKDxudW1iZXI+KSB0cmFuc2Zvcm0gZnVuY3Rpb24sIGV4Y2VwdCB0aGF0IGl0IGFwcGxpZXMgb25seSB0byB0aGUgcG9zaXRpb25lZCBvciB0cmFuc2Zvcm1lZCBjaGlsZHJlbiBvZiB0aGUgZWxlbWVudCwgbm90IHRvIHRoZSB0cmFuc2Zvcm0gb24gdGhlIGVsZW1lbnQgaXRzZWxmLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIl19LHtuYW1lOiItbW96LXBlcnNwZWN0aXZlLW9yaWdpbiIsYnJvd3NlcnM6WyJGRjEwIl0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJFc3RhYmxpc2hlcyB0aGUgb3JpZ2luIGZvciB0aGUgcGVyc3BlY3RpdmUgcHJvcGVydHkuIEl0IGVmZmVjdGl2ZWx5IHNldHMgdGhlIFggYW5kIFkgcG9zaXRpb24gYXQgd2hpY2ggdGhlIHZpZXdlciBhcHBlYXJzIHRvIGJlIGxvb2tpbmcgYXQgdGhlIGNoaWxkcmVuIG9mIHRoZSBlbGVtZW50LiIscmVzdHJpY3Rpb25zOlsicG9zaXRpb24iLCJwZXJjZW50YWdlIiwibGVuZ3RoIl19LHtuYW1lOiItbW96LXRleHQtYWxpZ24tbGFzdCIsYnJvd3NlcnM6WyJGRjEyIl0sdmFsdWVzOlt7bmFtZToiYXV0byJ9LHtuYW1lOiJjZW50ZXIiLGRlc2NyaXB0aW9uOiJUaGUgaW5saW5lIGNvbnRlbnRzIGFyZSBjZW50ZXJlZCB3aXRoaW4gdGhlIGxpbmUgYm94LiJ9LHtuYW1lOiJqdXN0aWZ5IixkZXNjcmlwdGlvbjoiVGhlIHRleHQgaXMganVzdGlmaWVkIGFjY29yZGluZyB0byB0aGUgbWV0aG9kIHNwZWNpZmllZCBieSB0aGUgJ3RleHQtanVzdGlmeScgcHJvcGVydHkuIn0se25hbWU6ImxlZnQiLGRlc2NyaXB0aW9uOiJUaGUgaW5saW5lIGNvbnRlbnRzIGFyZSBhbGlnbmVkIHRvIHRoZSBsZWZ0IGVkZ2Ugb2YgdGhlIGxpbmUgYm94LiBJbiB2ZXJ0aWNhbCB0ZXh0LCAnbGVmdCcgYWxpZ25zIHRvIHRoZSBlZGdlIG9mIHRoZSBsaW5lIGJveCB0aGF0IHdvdWxkIGJlIHRoZSBzdGFydCBlZGdlIGZvciBsZWZ0LXRvLXJpZ2h0IHRleHQuIn0se25hbWU6InJpZ2h0IixkZXNjcmlwdGlvbjoiVGhlIGlubGluZSBjb250ZW50cyBhcmUgYWxpZ25lZCB0byB0aGUgcmlnaHQgZWRnZSBvZiB0aGUgbGluZSBib3guIEluIHZlcnRpY2FsIHRleHQsICdyaWdodCcgYWxpZ25zIHRvIHRoZSBlZGdlIG9mIHRoZSBsaW5lIGJveCB0aGF0IHdvdWxkIGJlIHRoZSBlbmQgZWRnZSBmb3IgbGVmdC10by1yaWdodCB0ZXh0LiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkRlc2NyaWJlcyBob3cgdGhlIGxhc3QgbGluZSBvZiBhIGJsb2NrIG9yIGEgbGluZSByaWdodCBiZWZvcmUgYSBmb3JjZWQgbGluZSBicmVhayBpcyBhbGlnbmVkIHdoZW4gJ3RleHQtYWxpZ24nIGlzIHNldCB0byAnanVzdGlmeScuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiItbW96LXRleHQtZGVjb3JhdGlvbi1jb2xvciIsYnJvd3NlcnM6WyJGRjYiXSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlNwZWNpZmllcyB0aGUgY29sb3Igb2YgdGV4dCBkZWNvcmF0aW9uICh1bmRlcmxpbmVzIG92ZXJsaW5lcywgYW5kIGxpbmUtdGhyb3VnaHMpIHNldCBvbiB0aGUgZWxlbWVudCB3aXRoIHRleHQtZGVjb3JhdGlvbi1saW5lLiIscmVzdHJpY3Rpb25zOlsiY29sb3IiXX0se25hbWU6Ii1tb3otdGV4dC1kZWNvcmF0aW9uLWxpbmUiLGJyb3dzZXJzOlsiRkY2Il0sdmFsdWVzOlt7bmFtZToibGluZS10aHJvdWdoIixkZXNjcmlwdGlvbjoiRWFjaCBsaW5lIG9mIHRleHQgaGFzIGEgbGluZSB0aHJvdWdoIHRoZSBtaWRkbGUuIn0se25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJOZWl0aGVyIHByb2R1Y2VzIG5vciBpbmhpYml0cyB0ZXh0IGRlY29yYXRpb24uIn0se25hbWU6Im92ZXJsaW5lIixkZXNjcmlwdGlvbjoiRWFjaCBsaW5lIG9mIHRleHQgaGFzIGEgbGluZSBhYm92ZSBpdC4ifSx7bmFtZToidW5kZXJsaW5lIixkZXNjcmlwdGlvbjoiRWFjaCBsaW5lIG9mIHRleHQgaXMgdW5kZXJsaW5lZC4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgd2hhdCBsaW5lIGRlY29yYXRpb25zLCBpZiBhbnksIGFyZSBhZGRlZCB0byB0aGUgZWxlbWVudC4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii1tb3otdGV4dC1kZWNvcmF0aW9uLXN0eWxlIixicm93c2VyczpbIkZGNiJdLHZhbHVlczpbe25hbWU6ImRhc2hlZCIsZGVzY3JpcHRpb246IlByb2R1Y2VzIGEgZGFzaGVkIGxpbmUgc3R5bGUuIn0se25hbWU6ImRvdHRlZCIsZGVzY3JpcHRpb246IlByb2R1Y2VzIGEgZG90dGVkIGxpbmUuIn0se25hbWU6ImRvdWJsZSIsZGVzY3JpcHRpb246IlByb2R1Y2VzIGEgZG91YmxlIGxpbmUuIn0se25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJQcm9kdWNlcyBubyBsaW5lLiJ9LHtuYW1lOiJzb2xpZCIsZGVzY3JpcHRpb246IlByb2R1Y2VzIGEgc29saWQgbGluZS4ifSx7bmFtZToid2F2eSIsZGVzY3JpcHRpb246IlByb2R1Y2VzIGEgd2F2eSBsaW5lLiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlNwZWNpZmllcyB0aGUgbGluZSBzdHlsZSBmb3IgdW5kZXJsaW5lLCBsaW5lLXRocm91Z2ggYW5kIG92ZXJsaW5lIHRleHQgZGVjb3JhdGlvbi4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii1tb3otdGV4dC1zaXplLWFkanVzdCIsYnJvd3NlcnM6WyJGRiJdLHZhbHVlczpbe25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJSZW5kZXJlcnMgbXVzdCB1c2UgdGhlIGRlZmF1bHQgc2l6ZSBhZGp1c3RtZW50IHdoZW4gZGlzcGxheWluZyBvbiBhIHNtYWxsIGRldmljZS4ifSx7bmFtZToibm9uZSIsZGVzY3JpcHRpb246IlJlbmRlcmVycyBtdXN0IG5vdCBkbyBzaXplIGFkanVzdG1lbnQgd2hlbiBkaXNwbGF5aW5nIG9uIGEgc21hbGwgZGV2aWNlLiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIHNpemUgYWRqdXN0bWVudCBmb3IgZGlzcGxheWluZyB0ZXh0IGNvbnRlbnQgaW4gbW9iaWxlIGJyb3dzZXJzLiIscmVzdHJpY3Rpb25zOlsiZW51bSIsInBlcmNlbnRhZ2UiXX0se25hbWU6Ii1tb3otdHJhbnNmb3JtIixicm93c2VyczpbIkZGMy41Il0sdmFsdWVzOlt7bmFtZToibWF0cml4KCkiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSAyRCB0cmFuc2Zvcm1hdGlvbiBpbiB0aGUgZm9ybSBvZiBhIHRyYW5zZm9ybWF0aW9uIG1hdHJpeCBvZiBzaXggdmFsdWVzLiBtYXRyaXgoYSxiLGMsZCxlLGYpIGlzIGVxdWl2YWxlbnQgdG8gYXBwbHlpbmcgdGhlIHRyYW5zZm9ybWF0aW9uIG1hdHJpeCBbYSBiIGMgZCBlIGZdIn0se25hbWU6Im1hdHJpeDNkKCkiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSAzRCB0cmFuc2Zvcm1hdGlvbiBhcyBhIDR4NCBob21vZ2VuZW91cyBtYXRyaXggb2YgMTYgdmFsdWVzIGluIGNvbHVtbi1tYWpvciBvcmRlci4ifSx7bmFtZToibm9uZSJ9LHtuYW1lOiJwZXJzcGVjdGl2ZSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIHBlcnNwZWN0aXZlIHByb2plY3Rpb24gbWF0cml4LiJ9LHtuYW1lOiJyb3RhdGUoKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIDJEIHJvdGF0aW9uIGJ5IHRoZSBhbmdsZSBzcGVjaWZpZWQgaW4gdGhlIHBhcmFtZXRlciBhYm91dCB0aGUgb3JpZ2luIG9mIHRoZSBlbGVtZW50LCBhcyBkZWZpbmVkIGJ5IHRoZSB0cmFuc2Zvcm0tb3JpZ2luIHByb3BlcnR5LiJ9LHtuYW1lOiJyb3RhdGUzZCgpIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgY2xvY2t3aXNlIDNEIHJvdGF0aW9uIGJ5IHRoZSBhbmdsZSBzcGVjaWZpZWQgaW4gbGFzdCBwYXJhbWV0ZXIgYWJvdXQgdGhlIFt4LHksel0gZGlyZWN0aW9uIHZlY3RvciBkZXNjcmliZWQgYnkgdGhlIGZpcnN0IDMgcGFyYW1ldGVycy4ifSx7bmFtZToicm90YXRlWCgnYW5nbGUnKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIGNsb2Nrd2lzZSByb3RhdGlvbiBieSB0aGUgZ2l2ZW4gYW5nbGUgYWJvdXQgdGhlIFggYXhpcy4ifSx7bmFtZToicm90YXRlWSgnYW5nbGUnKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIGNsb2Nrd2lzZSByb3RhdGlvbiBieSB0aGUgZ2l2ZW4gYW5nbGUgYWJvdXQgdGhlIFkgYXhpcy4ifSx7bmFtZToicm90YXRlWignYW5nbGUnKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIGNsb2Nrd2lzZSByb3RhdGlvbiBieSB0aGUgZ2l2ZW4gYW5nbGUgYWJvdXQgdGhlIFogYXhpcy4ifSx7bmFtZToic2NhbGUoKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIDJEIHNjYWxlIG9wZXJhdGlvbiBieSB0aGUgW3N4LHN5XSBzY2FsaW5nIHZlY3RvciBkZXNjcmliZWQgYnkgdGhlIDIgcGFyYW1ldGVycy4gSWYgdGhlIHNlY29uZCBwYXJhbWV0ZXIgaXMgbm90IHByb3ZpZGVkLCBpdCBpcyB0YWtlcyBhIHZhbHVlIGVxdWFsIHRvIHRoZSBmaXJzdC4ifSx7bmFtZToic2NhbGUzZCgpIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgM0Qgc2NhbGUgb3BlcmF0aW9uIGJ5IHRoZSBbc3gsc3ksc3pdIHNjYWxpbmcgdmVjdG9yIGRlc2NyaWJlZCBieSB0aGUgMyBwYXJhbWV0ZXJzLiJ9LHtuYW1lOiJzY2FsZVgoKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIHNjYWxlIG9wZXJhdGlvbiB1c2luZyB0aGUgW3N4LDFdIHNjYWxpbmcgdmVjdG9yLCB3aGVyZSBzeCBpcyBnaXZlbiBhcyB0aGUgcGFyYW1ldGVyLiJ9LHtuYW1lOiJzY2FsZVkoKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIHNjYWxlIG9wZXJhdGlvbiB1c2luZyB0aGUgW3N5LDFdIHNjYWxpbmcgdmVjdG9yLCB3aGVyZSBzeSBpcyBnaXZlbiBhcyB0aGUgcGFyYW1ldGVyLiJ9LHtuYW1lOiJzY2FsZVooKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIHNjYWxlIG9wZXJhdGlvbiB1c2luZyB0aGUgWzEsMSxzel0gc2NhbGluZyB2ZWN0b3IsIHdoZXJlIHN6IGlzIGdpdmVuIGFzIHRoZSBwYXJhbWV0ZXIuIn0se25hbWU6InNrZXcoKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIHNrZXcgdHJhbnNmb3JtYXRpb24gYWxvbmcgdGhlIFggYW5kIFkgYXhlcy4gVGhlIGZpcnN0IGFuZ2xlIHBhcmFtZXRlciBzcGVjaWZpZXMgdGhlIHNrZXcgb24gdGhlIFggYXhpcy4gVGhlIHNlY29uZCBhbmdsZSBwYXJhbWV0ZXIgc3BlY2lmaWVzIHRoZSBza2V3IG9uIHRoZSBZIGF4aXMuIElmIHRoZSBzZWNvbmQgcGFyYW1ldGVyIGlzIG5vdCBnaXZlbiB0aGVuIGEgdmFsdWUgb2YgMCBpcyB1c2VkIGZvciB0aGUgWSBhbmdsZSAoaWU6IG5vIHNrZXcgb24gdGhlIFkgYXhpcykuIn0se25hbWU6InNrZXdYKCkiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSBza2V3IHRyYW5zZm9ybWF0aW9uIGFsb25nIHRoZSBYIGF4aXMgYnkgdGhlIGdpdmVuIGFuZ2xlLiJ9LHtuYW1lOiJza2V3WSgpIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgc2tldyB0cmFuc2Zvcm1hdGlvbiBhbG9uZyB0aGUgWSBheGlzIGJ5IHRoZSBnaXZlbiBhbmdsZS4ifSx7bmFtZToidHJhbnNsYXRlKCkiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSAyRCB0cmFuc2xhdGlvbiBieSB0aGUgdmVjdG9yIFt0eCwgdHldLCB3aGVyZSB0eCBpcyB0aGUgZmlyc3QgdHJhbnNsYXRpb24tdmFsdWUgcGFyYW1ldGVyIGFuZCB0eSBpcyB0aGUgb3B0aW9uYWwgc2Vjb25kIHRyYW5zbGF0aW9uLXZhbHVlIHBhcmFtZXRlci4ifSx7bmFtZToidHJhbnNsYXRlM2QoKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIDNEIHRyYW5zbGF0aW9uIGJ5IHRoZSB2ZWN0b3IgW3R4LHR5LHR6XSwgd2l0aCB0eCwgdHkgYW5kIHR6IGJlaW5nIHRoZSBmaXJzdCwgc2Vjb25kIGFuZCB0aGlyZCB0cmFuc2xhdGlvbi12YWx1ZSBwYXJhbWV0ZXJzIHJlc3BlY3RpdmVseS4ifSx7bmFtZToidHJhbnNsYXRlWCgpIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgdHJhbnNsYXRpb24gYnkgdGhlIGdpdmVuIGFtb3VudCBpbiB0aGUgWCBkaXJlY3Rpb24uIn0se25hbWU6InRyYW5zbGF0ZVkoKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIHRyYW5zbGF0aW9uIGJ5IHRoZSBnaXZlbiBhbW91bnQgaW4gdGhlIFkgZGlyZWN0aW9uLiJ9LHtuYW1lOiJ0cmFuc2xhdGVaKCkiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSB0cmFuc2xhdGlvbiBieSB0aGUgZ2l2ZW4gYW1vdW50IGluIHRoZSBaIGRpcmVjdGlvbi4gTm90ZSB0aGF0IHBlcmNlbnRhZ2UgdmFsdWVzIGFyZSBub3QgYWxsb3dlZCBpbiB0aGUgdHJhbnNsYXRlWiB0cmFuc2xhdGlvbi12YWx1ZSwgYW5kIGlmIHByZXNlbnQgYXJlIGV2YWx1YXRlZCBhcyAwLiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkEgdHdvLWRpbWVuc2lvbmFsIHRyYW5zZm9ybWF0aW9uIGlzIGFwcGxpZWQgdG8gYW4gZWxlbWVudCB0aHJvdWdoIHRoZSAndHJhbnNmb3JtJyBwcm9wZXJ0eS4gVGhpcyBwcm9wZXJ0eSBjb250YWlucyBhIGxpc3Qgb2YgdHJhbnNmb3JtIGZ1bmN0aW9ucyBzaW1pbGFyIHRvIHRob3NlIGFsbG93ZWQgYnkgU1ZHLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiLW1vei10cmFuc2Zvcm0tb3JpZ2luIixicm93c2VyczpbIkZGMy41Il0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJFc3RhYmxpc2hlcyB0aGUgb3JpZ2luIG9mIHRyYW5zZm9ybWF0aW9uIGZvciBhbiBlbGVtZW50LiIscmVzdHJpY3Rpb25zOlsicG9zaXRpb24iLCJsZW5ndGgiLCJwZXJjZW50YWdlIl19LHtuYW1lOiItbW96LXRyYW5zaXRpb24iLGJyb3dzZXJzOlsiRkY0Il0sdmFsdWVzOlt7bmFtZToiYWxsIixkZXNjcmlwdGlvbjoiRXZlcnkgcHJvcGVydHkgdGhhdCBpcyBhYmxlIHRvIHVuZGVyZ28gYSB0cmFuc2l0aW9uIHdpbGwgZG8gc28uIn0se25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJObyBwcm9wZXJ0eSB3aWxsIHRyYW5zaXRpb24uIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiU2hvcnRoYW5kIHByb3BlcnR5IGNvbWJpbmVzIGZvdXIgb2YgdGhlIHRyYW5zaXRpb24gcHJvcGVydGllcyBpbnRvIGEgc2luZ2xlIHByb3BlcnR5LiIscmVzdHJpY3Rpb25zOlsidGltZSIsInByb3BlcnR5IiwidGltaW5nLWZ1bmN0aW9uIiwiZW51bSJdfSx7bmFtZToiLW1vei10cmFuc2l0aW9uLWRlbGF5Iixicm93c2VyczpbIkZGNCJdLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiRGVmaW5lcyB3aGVuIHRoZSB0cmFuc2l0aW9uIHdpbGwgc3RhcnQuIEl0IGFsbG93cyBhIHRyYW5zaXRpb24gdG8gYmVnaW4gZXhlY3V0aW9uIHNvbWUgcGVyaW9kIG9mIHRpbWUgZnJvbSB3aGVuIGl0IGlzIGFwcGxpZWQuIixyZXN0cmljdGlvbnM6WyJ0aW1lIl19LHtuYW1lOiItbW96LXRyYW5zaXRpb24tZHVyYXRpb24iLGJyb3dzZXJzOlsiRkY0Il0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgaG93IGxvbmcgdGhlIHRyYW5zaXRpb24gZnJvbSB0aGUgb2xkIHZhbHVlIHRvIHRoZSBuZXcgdmFsdWUgc2hvdWxkIHRha2UuIixyZXN0cmljdGlvbnM6WyJ0aW1lIl19LHtuYW1lOiItbW96LXRyYW5zaXRpb24tcHJvcGVydHkiLGJyb3dzZXJzOlsiRkY0Il0sdmFsdWVzOlt7bmFtZToiYWxsIixkZXNjcmlwdGlvbjoiRXZlcnkgcHJvcGVydHkgdGhhdCBpcyBhYmxlIHRvIHVuZGVyZ28gYSB0cmFuc2l0aW9uIHdpbGwgZG8gc28uIn0se25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJObyBwcm9wZXJ0eSB3aWxsIHRyYW5zaXRpb24uIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIHRoZSBuYW1lIG9mIHRoZSBDU1MgcHJvcGVydHkgdG8gd2hpY2ggdGhlIHRyYW5zaXRpb24gaXMgYXBwbGllZC4iLHJlc3RyaWN0aW9uczpbInByb3BlcnR5Il19LHtuYW1lOiItbW96LXRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uIixicm93c2VyczpbIkZGNCJdLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiRGVzY3JpYmVzIGhvdyB0aGUgaW50ZXJtZWRpYXRlIHZhbHVlcyB1c2VkIGR1cmluZyBhIHRyYW5zaXRpb24gd2lsbCBiZSBjYWxjdWxhdGVkLiIscmVzdHJpY3Rpb25zOlsidGltaW5nLWZ1bmN0aW9uIl19LHtuYW1lOiItbW96LXVzZXItZm9jdXMiLGJyb3dzZXJzOlsiRkYxIl0sdmFsdWVzOlt7bmFtZToiaWdub3JlIn0se25hbWU6Im5vcm1hbCJ9XSxzdGF0dXM6Im5vbnN0YW5kYXJkIixzeW50YXg6Imlnbm9yZSB8IG5vcm1hbCB8IHNlbGVjdC1hZnRlciB8IHNlbGVjdC1iZWZvcmUgfCBzZWxlY3QtbWVudSB8IHNlbGVjdC1zYW1lIHwgc2VsZWN0LWFsbCB8IG5vbmUiLHJlbGV2YW5jZTowLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy8tbW96LXVzZXItZm9jdXMifV0sZGVzY3JpcHRpb246IlVzZWQgdG8gaW5kaWNhdGUgd2hldGhlciB0aGUgZWxlbWVudCBjYW4gaGF2ZSBmb2N1cy4ifSx7bmFtZToiLW1vei11c2VyLXNlbGVjdCIsYnJvd3NlcnM6WyJGRjEuNSJdLHZhbHVlczpbe25hbWU6ImFsbCJ9LHtuYW1lOiJlbGVtZW50In0se25hbWU6ImVsZW1lbnRzIn0se25hbWU6Ii1tb3otYWxsIn0se25hbWU6Ii1tb3otbm9uZSJ9LHtuYW1lOiJub25lIn0se25hbWU6InRleHQifSx7bmFtZToidG9nZ2xlIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiQ29udHJvbHMgdGhlIGFwcGVhcmFuY2Ugb2Ygc2VsZWN0aW9uLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiLW1zLWFjY2VsZXJhdG9yIixicm93c2VyczpbIkUiLCJJRTEwIl0sdmFsdWVzOlt7bmFtZToiZmFsc2UiLGRlc2NyaXB0aW9uOiJUaGUgZWxlbWVudCBkb2VzIG5vdCBjb250YWluIGFuIGFjY2VsZXJhdG9yIGtleSBzZXF1ZW5jZS4ifSx7bmFtZToidHJ1ZSIsZGVzY3JpcHRpb246IlRoZSBlbGVtZW50IGNvbnRhaW5zIGFuIGFjY2VsZXJhdG9yIGtleSBzZXF1ZW5jZS4ifV0sc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiJmYWxzZSB8IHRydWUiLHJlbGV2YW5jZTowLGRlc2NyaXB0aW9uOiJJRSBvbmx5LiBIYXMgdGhlIGFiaWxpdHkgdG8gdHVybiBvZmYgaXRzIHN5c3RlbSB1bmRlcmxpbmVzIGZvciBhY2NlbGVyYXRvciBrZXlzIHVudGlsIHRoZSBBTFQga2V5IGlzIHByZXNzZWQiLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii1tcy1iZWhhdmlvciIsYnJvd3NlcnM6WyJJRTgiXSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IklFIG9ubHkuIFVzZWQgdG8gZXh0ZW5kIGJlaGF2aW9ycyBvZiB0aGUgYnJvd3NlciIscmVzdHJpY3Rpb25zOlsidXJsIl19LHtuYW1lOiItbXMtYmxvY2stcHJvZ3Jlc3Npb24iLGJyb3dzZXJzOlsiSUU4Il0sdmFsdWVzOlt7bmFtZToiYnQiLGRlc2NyaXB0aW9uOiJCb3R0b20tdG8tdG9wIGJsb2NrIGZsb3cuIExheW91dCBpcyBob3Jpem9udGFsLiJ9LHtuYW1lOiJsciIsZGVzY3JpcHRpb246IkxlZnQtdG8tcmlnaHQgZGlyZWN0aW9uLiBUaGUgZmxvdyBvcmllbnRhdGlvbiBpcyB2ZXJ0aWNhbC4ifSx7bmFtZToicmwiLGRlc2NyaXB0aW9uOiJSaWdodC10by1sZWZ0IGRpcmVjdGlvbi4gVGhlIGZsb3cgb3JpZW50YXRpb24gaXMgdmVydGljYWwuIn0se25hbWU6InRiIixkZXNjcmlwdGlvbjoiVG9wLXRvLWJvdHRvbSBkaXJlY3Rpb24uIFRoZSBmbG93IG9yaWVudGF0aW9uIGlzIGhvcml6b250YWwuIn1dLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoidGIgfCBybCB8IGJ0IHwgbHIiLHJlbGV2YW5jZTowLGRlc2NyaXB0aW9uOiJTZXRzIHRoZSBibG9jay1wcm9ncmVzc2lvbiB2YWx1ZSBhbmQgdGhlIGZsb3cgb3JpZW50YXRpb24iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii1tcy1jb250ZW50LXpvb20tY2hhaW5pbmciLGJyb3dzZXJzOlsiRSIsIklFMTAiXSx2YWx1ZXM6W3tuYW1lOiJjaGFpbmVkIixkZXNjcmlwdGlvbjoiVGhlIG5lYXJlc3Qgem9vbWFibGUgcGFyZW50IGVsZW1lbnQgYmVnaW5zIHpvb21pbmcgd2hlbiB0aGUgdXNlciBoaXRzIGEgem9vbSBsaW1pdCBkdXJpbmcgYSBtYW5pcHVsYXRpb24uIE5vIGJvdW5jZSBlZmZlY3QgaXMgc2hvd24uIn0se25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJBIGJvdW5jZSBlZmZlY3QgaXMgc2hvd24gd2hlbiB0aGUgdXNlciBoaXRzIGEgem9vbSBsaW1pdCBkdXJpbmcgYSBtYW5pcHVsYXRpb24uIn1dLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoibm9uZSB8IGNoYWluZWQiLHJlbGV2YW5jZTowLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgdGhlIHpvb20gYmVoYXZpb3IgdGhhdCBvY2N1cnMgd2hlbiBhIHVzZXIgaGl0cyB0aGUgem9vbSBsaW1pdCBkdXJpbmcgYSBtYW5pcHVsYXRpb24uIn0se25hbWU6Ii1tcy1jb250ZW50LXpvb21pbmciLGJyb3dzZXJzOlsiRSIsIklFMTAiXSx2YWx1ZXM6W3tuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiVGhlIGVsZW1lbnQgaXMgbm90IHpvb21hYmxlLiJ9LHtuYW1lOiJ6b29tIixkZXNjcmlwdGlvbjoiVGhlIGVsZW1lbnQgaXMgem9vbWFibGUuIn1dLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoibm9uZSB8IHpvb20iLHJlbGV2YW5jZTowLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgd2hldGhlciB6b29taW5nIGlzIGVuYWJsZWQuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiItbXMtY29udGVudC16b29tLWxpbWl0Iixicm93c2VyczpbIkUiLCJJRTEwIl0sc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiI8Jy1tcy1jb250ZW50LXpvb20tbGltaXQtbWluJz4gPCctbXMtY29udGVudC16b29tLWxpbWl0LW1heCc+IixyZWxldmFuY2U6MCxkZXNjcmlwdGlvbjoiU2hvcnRoYW5kIHByb3BlcnR5IGZvciB0aGUgLW1zLWNvbnRlbnQtem9vbS1saW1pdC1taW4gYW5kIC1tcy1jb250ZW50LXpvb20tbGltaXQtbWF4IHByb3BlcnRpZXMuIixyZXN0cmljdGlvbnM6WyJwZXJjZW50YWdlIl19LHtuYW1lOiItbXMtY29udGVudC16b29tLWxpbWl0LW1heCIsYnJvd3NlcnM6WyJFIiwiSUUxMCJdLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoiPHBlcmNlbnRhZ2U+IixyZWxldmFuY2U6MCxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIHRoZSBtYXhpbXVtIHpvb20gZmFjdG9yLiIscmVzdHJpY3Rpb25zOlsicGVyY2VudGFnZSJdfSx7bmFtZToiLW1zLWNvbnRlbnQtem9vbS1saW1pdC1taW4iLGJyb3dzZXJzOlsiRSIsIklFMTAiXSxzdGF0dXM6Im5vbnN0YW5kYXJkIixzeW50YXg6IjxwZXJjZW50YWdlPiIscmVsZXZhbmNlOjAsZGVzY3JpcHRpb246IlNwZWNpZmllcyB0aGUgbWluaW11bSB6b29tIGZhY3Rvci4iLHJlc3RyaWN0aW9uczpbInBlcmNlbnRhZ2UiXX0se25hbWU6Ii1tcy1jb250ZW50LXpvb20tc25hcCIsYnJvd3NlcnM6WyJFIiwiSUUxMCJdLHZhbHVlczpbe25hbWU6Im1hbmRhdG9yeSIsZGVzY3JpcHRpb246IkluZGljYXRlcyB0aGF0IHRoZSBtb3Rpb24gb2YgdGhlIGNvbnRlbnQgYWZ0ZXIgdGhlIGNvbnRhY3QgaXMgcGlja2VkIHVwIGlzIGFsd2F5cyBhZGp1c3RlZCBzbyB0aGF0IGl0IGxhbmRzIG9uIGEgc25hcC1wb2ludC4ifSx7bmFtZToibm9uZSIsZGVzY3JpcHRpb246IkluZGljYXRlcyB0aGF0IHpvb21pbmcgaXMgdW5hZmZlY3RlZCBieSBhbnkgZGVmaW5lZCBzbmFwLXBvaW50cy4ifSx7bmFtZToicHJveGltaXR5IixkZXNjcmlwdGlvbjonSW5kaWNhdGVzIHRoYXQgdGhlIG1vdGlvbiBvZiB0aGUgY29udGVudCBhZnRlciB0aGUgY29udGFjdCBpcyBwaWNrZWQgdXAgbWF5IGJlIGFkanVzdGVkIGlmIHRoZSBjb250ZW50IHdvdWxkIG5vcm1hbGx5IHN0b3AgImNsb3NlIGVub3VnaCIgdG8gYSBzbmFwLXBvaW50Lid9LHtuYW1lOiJzbmFwSW50ZXJ2YWwoMTAwJSwgMTAwJSkiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgd2hlcmUgdGhlIHNuYXAtcG9pbnRzIHdpbGwgYmUgcGxhY2VkLiJ9LHtuYW1lOiJzbmFwTGlzdCgpIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIHRoZSBwb3NpdGlvbiBvZiBpbmRpdmlkdWFsIHNuYXAtcG9pbnRzIGFzIGEgY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2Ygem9vbSBmYWN0b3JzLiJ9XSxzdGF0dXM6Im5vbnN0YW5kYXJkIixzeW50YXg6IjwnLW1zLWNvbnRlbnQtem9vbS1zbmFwLXR5cGUnPiB8fCA8Jy1tcy1jb250ZW50LXpvb20tc25hcC1wb2ludHMnPiIscmVsZXZhbmNlOjAsZGVzY3JpcHRpb246IlNob3J0aGFuZCBwcm9wZXJ0eSBmb3IgdGhlIC1tcy1jb250ZW50LXpvb20tc25hcC10eXBlIGFuZCAtbXMtY29udGVudC16b29tLXNuYXAtcG9pbnRzIHByb3BlcnRpZXMuIn0se25hbWU6Ii1tcy1jb250ZW50LXpvb20tc25hcC1wb2ludHMiLGJyb3dzZXJzOlsiRSIsIklFMTAiXSx2YWx1ZXM6W3tuYW1lOiJzbmFwSW50ZXJ2YWwoMTAwJSwgMTAwJSkiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgd2hlcmUgdGhlIHNuYXAtcG9pbnRzIHdpbGwgYmUgcGxhY2VkLiJ9LHtuYW1lOiJzbmFwTGlzdCgpIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIHRoZSBwb3NpdGlvbiBvZiBpbmRpdmlkdWFsIHNuYXAtcG9pbnRzIGFzIGEgY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2Ygem9vbSBmYWN0b3JzLiJ9XSxzdGF0dXM6Im5vbnN0YW5kYXJkIixzeW50YXg6InNuYXBJbnRlcnZhbCggPHBlcmNlbnRhZ2U+LCA8cGVyY2VudGFnZT4gKSB8IHNuYXBMaXN0KCA8cGVyY2VudGFnZT4jICkiLHJlbGV2YW5jZTowLGRlc2NyaXB0aW9uOiJEZWZpbmVzIHdoZXJlIHpvb20gc25hcC1wb2ludHMgYXJlIGxvY2F0ZWQuIn0se25hbWU6Ii1tcy1jb250ZW50LXpvb20tc25hcC10eXBlIixicm93c2VyczpbIkUiLCJJRTEwIl0sdmFsdWVzOlt7bmFtZToibWFuZGF0b3J5IixkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIHRoYXQgdGhlIG1vdGlvbiBvZiB0aGUgY29udGVudCBhZnRlciB0aGUgY29udGFjdCBpcyBwaWNrZWQgdXAgaXMgYWx3YXlzIGFkanVzdGVkIHNvIHRoYXQgaXQgbGFuZHMgb24gYSBzbmFwLXBvaW50LiJ9LHtuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIHRoYXQgem9vbWluZyBpcyB1bmFmZmVjdGVkIGJ5IGFueSBkZWZpbmVkIHNuYXAtcG9pbnRzLiJ9LHtuYW1lOiJwcm94aW1pdHkiLGRlc2NyaXB0aW9uOidJbmRpY2F0ZXMgdGhhdCB0aGUgbW90aW9uIG9mIHRoZSBjb250ZW50IGFmdGVyIHRoZSBjb250YWN0IGlzIHBpY2tlZCB1cCBtYXkgYmUgYWRqdXN0ZWQgaWYgdGhlIGNvbnRlbnQgd291bGQgbm9ybWFsbHkgc3RvcCAiY2xvc2UgZW5vdWdoIiB0byBhIHNuYXAtcG9pbnQuJ31dLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoibm9uZSB8IHByb3hpbWl0eSB8IG1hbmRhdG9yeSIscmVsZXZhbmNlOjAsZGVzY3JpcHRpb246IlNwZWNpZmllcyBob3cgem9vbWluZyBpcyBhZmZlY3RlZCBieSBkZWZpbmVkIHNuYXAtcG9pbnRzLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiLW1zLWZpbHRlciIsYnJvd3NlcnM6WyJJRTgtOSJdLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoiPHN0cmluZz4iLHJlbGV2YW5jZTowLGRlc2NyaXB0aW9uOiJJRSBvbmx5LiBVc2VkIHRvIHByb2R1Y2UgdmlzdWFsIGVmZmVjdHMuIixyZXN0cmljdGlvbnM6WyJzdHJpbmciXX0se25hbWU6Ii1tcy1mbGV4Iixicm93c2VyczpbIklFMTAiXSx2YWx1ZXM6W3tuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiUmV0cmlldmVzIHRoZSB2YWx1ZSBvZiB0aGUgbWFpbiBzaXplIHByb3BlcnR5IGFzIHRoZSB1c2VkICdmbGV4LWJhc2lzJy4ifSx7bmFtZToibm9uZSIsZGVzY3JpcHRpb246IkV4cGFuZHMgdG8gJzAgMCBhdXRvJy4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJzcGVjaWZpZXMgdGhlIHBhcmFtZXRlcnMgb2YgYSBmbGV4aWJsZSBsZW5ndGg6IHRoZSBwb3NpdGl2ZSBhbmQgbmVnYXRpdmUgZmxleGliaWxpdHksIGFuZCB0aGUgcHJlZmVycmVkIHNpemUuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJudW1iZXIiLCJwZXJjZW50YWdlIl19LHtuYW1lOiItbXMtZmxleC1hbGlnbiIsYnJvd3NlcnM6WyJJRTEwIl0sdmFsdWVzOlt7bmFtZToiYmFzZWxpbmUiLGRlc2NyaXB0aW9uOiJJZiB0aGUgZmxleCBpdGVtJ3MgaW5saW5lIGF4aXMgaXMgdGhlIHNhbWUgYXMgdGhlIGNyb3NzIGF4aXMsIHRoaXMgdmFsdWUgaXMgaWRlbnRpY2FsIHRvICdmbGV4LXN0YXJ0Jy4gT3RoZXJ3aXNlLCBpdCBwYXJ0aWNpcGF0ZXMgaW4gYmFzZWxpbmUgYWxpZ25tZW50LiJ9LHtuYW1lOiJjZW50ZXIiLGRlc2NyaXB0aW9uOiJUaGUgZmxleCBpdGVtJ3MgbWFyZ2luIGJveCBpcyBjZW50ZXJlZCBpbiB0aGUgY3Jvc3MgYXhpcyB3aXRoaW4gdGhlIGxpbmUuIn0se25hbWU6ImVuZCIsZGVzY3JpcHRpb246IlRoZSBjcm9zcy1lbmQgbWFyZ2luIGVkZ2Ugb2YgdGhlIGZsZXggaXRlbSBpcyBwbGFjZWQgZmx1c2ggd2l0aCB0aGUgY3Jvc3MtZW5kIGVkZ2Ugb2YgdGhlIGxpbmUuIn0se25hbWU6InN0YXJ0IixkZXNjcmlwdGlvbjoiVGhlIGNyb3NzLXN0YXJ0IG1hcmdpbiBlZGdlIG9mIHRoZSBmbGV4Ym94IGl0ZW0gaXMgcGxhY2VkIGZsdXNoIHdpdGggdGhlIGNyb3NzLXN0YXJ0IGVkZ2Ugb2YgdGhlIGxpbmUuIn0se25hbWU6InN0cmV0Y2giLGRlc2NyaXB0aW9uOiJJZiB0aGUgY3Jvc3Mgc2l6ZSBwcm9wZXJ0eSBvZiB0aGUgZmxleGJveCBpdGVtIGlzIGFueXRoaW5nIG90aGVyIHRoYW4gJ2F1dG8nLCB0aGlzIHZhbHVlIGlzIGlkZW50aWNhbCB0byAnc3RhcnQnLiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkFsaWducyBmbGV4IGl0ZW1zIGFsb25nIHRoZSBjcm9zcyBheGlzIG9mIHRoZSBjdXJyZW50IGxpbmUgb2YgdGhlIGZsZXggY29udGFpbmVyLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiLW1zLWZsZXgtZGlyZWN0aW9uIixicm93c2VyczpbIklFMTAiXSx2YWx1ZXM6W3tuYW1lOiJjb2x1bW4iLGRlc2NyaXB0aW9uOiJUaGUgZmxleCBjb250YWluZXIncyBtYWluIGF4aXMgaGFzIHRoZSBzYW1lIG9yaWVudGF0aW9uIGFzIHRoZSBibG9jayBheGlzIG9mIHRoZSBjdXJyZW50IHdyaXRpbmcgbW9kZS4ifSx7bmFtZToiY29sdW1uLXJldmVyc2UiLGRlc2NyaXB0aW9uOiJTYW1lIGFzICdjb2x1bW4nLCBleGNlcHQgdGhlIG1haW4tc3RhcnQgYW5kIG1haW4tZW5kIGRpcmVjdGlvbnMgYXJlIHN3YXBwZWQuIn0se25hbWU6InJvdyIsZGVzY3JpcHRpb246IlRoZSBmbGV4IGNvbnRhaW5lcidzIG1haW4gYXhpcyBoYXMgdGhlIHNhbWUgb3JpZW50YXRpb24gYXMgdGhlIGlubGluZSBheGlzIG9mIHRoZSBjdXJyZW50IHdyaXRpbmcgbW9kZS4ifSx7bmFtZToicm93LXJldmVyc2UiLGRlc2NyaXB0aW9uOiJTYW1lIGFzICdyb3cnLCBleGNlcHQgdGhlIG1haW4tc3RhcnQgYW5kIG1haW4tZW5kIGRpcmVjdGlvbnMgYXJlIHN3YXBwZWQuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGhvdyBmbGV4IGl0ZW1zIGFyZSBwbGFjZWQgaW4gdGhlIGZsZXggY29udGFpbmVyLCBieSBzZXR0aW5nIHRoZSBkaXJlY3Rpb24gb2YgdGhlIGZsZXggY29udGFpbmVyJ3MgbWFpbiBheGlzLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiLW1zLWZsZXgtZmxvdyIsYnJvd3NlcnM6WyJJRTEwIl0sdmFsdWVzOlt7bmFtZToiY29sdW1uIixkZXNjcmlwdGlvbjoiVGhlIGZsZXggY29udGFpbmVyJ3MgbWFpbiBheGlzIGhhcyB0aGUgc2FtZSBvcmllbnRhdGlvbiBhcyB0aGUgYmxvY2sgYXhpcyBvZiB0aGUgY3VycmVudCB3cml0aW5nIG1vZGUuIn0se25hbWU6ImNvbHVtbi1yZXZlcnNlIixkZXNjcmlwdGlvbjoiU2FtZSBhcyAnY29sdW1uJywgZXhjZXB0IHRoZSBtYWluLXN0YXJ0IGFuZCBtYWluLWVuZCBkaXJlY3Rpb25zIGFyZSBzd2FwcGVkLiJ9LHtuYW1lOiJub3dyYXAiLGRlc2NyaXB0aW9uOiJUaGUgZmxleCBjb250YWluZXIgaXMgc2luZ2xlLWxpbmUuIn0se25hbWU6InJvdyIsZGVzY3JpcHRpb246IlRoZSBmbGV4IGNvbnRhaW5lcidzIG1haW4gYXhpcyBoYXMgdGhlIHNhbWUgb3JpZW50YXRpb24gYXMgdGhlIGlubGluZSBheGlzIG9mIHRoZSBjdXJyZW50IHdyaXRpbmcgbW9kZS4ifSx7bmFtZToid3JhcCIsZGVzY3JpcHRpb246IlRoZSBmbGV4Ym94IGlzIG11bHRpLWxpbmUuIn0se25hbWU6IndyYXAtcmV2ZXJzZSIsZGVzY3JpcHRpb246IlNhbWUgYXMgJ3dyYXAnLCBleGNlcHQgdGhlIGNyb3NzLXN0YXJ0IGFuZCBjcm9zcy1lbmQgZGlyZWN0aW9ucyBhcmUgc3dhcHBlZC4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgaG93IGZsZXhib3ggaXRlbXMgYXJlIHBsYWNlZCBpbiB0aGUgZmxleGJveC4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii1tcy1mbGV4LWl0ZW0tYWxpZ24iLGJyb3dzZXJzOlsiSUUxMCJdLHZhbHVlczpbe25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJDb21wdXRlcyB0byB0aGUgdmFsdWUgb2YgJ2FsaWduLWl0ZW1zJyBvbiB0aGUgZWxlbWVudCdzIHBhcmVudCwgb3IgJ3N0cmV0Y2gnIGlmIHRoZSBlbGVtZW50IGhhcyBubyBwYXJlbnQuIE9uIGFic29sdXRlbHkgcG9zaXRpb25lZCBlbGVtZW50cywgaXQgY29tcHV0ZXMgdG8gaXRzZWxmLiJ9LHtuYW1lOiJiYXNlbGluZSIsZGVzY3JpcHRpb246IklmIHRoZSBmbGV4IGl0ZW0ncyBpbmxpbmUgYXhpcyBpcyB0aGUgc2FtZSBhcyB0aGUgY3Jvc3MgYXhpcywgdGhpcyB2YWx1ZSBpcyBpZGVudGljYWwgdG8gJ2ZsZXgtc3RhcnQnLiBPdGhlcndpc2UsIGl0IHBhcnRpY2lwYXRlcyBpbiBiYXNlbGluZSBhbGlnbm1lbnQuIn0se25hbWU6ImNlbnRlciIsZGVzY3JpcHRpb246IlRoZSBmbGV4IGl0ZW0ncyBtYXJnaW4gYm94IGlzIGNlbnRlcmVkIGluIHRoZSBjcm9zcyBheGlzIHdpdGhpbiB0aGUgbGluZS4ifSx7bmFtZToiZW5kIixkZXNjcmlwdGlvbjoiVGhlIGNyb3NzLWVuZCBtYXJnaW4gZWRnZSBvZiB0aGUgZmxleCBpdGVtIGlzIHBsYWNlZCBmbHVzaCB3aXRoIHRoZSBjcm9zcy1lbmQgZWRnZSBvZiB0aGUgbGluZS4ifSx7bmFtZToic3RhcnQiLGRlc2NyaXB0aW9uOiJUaGUgY3Jvc3Mtc3RhcnQgbWFyZ2luIGVkZ2Ugb2YgdGhlIGZsZXggaXRlbSBpcyBwbGFjZWQgZmx1c2ggd2l0aCB0aGUgY3Jvc3Mtc3RhcnQgZWRnZSBvZiB0aGUgbGluZS4ifSx7bmFtZToic3RyZXRjaCIsZGVzY3JpcHRpb246IklmIHRoZSBjcm9zcyBzaXplIHByb3BlcnR5IG9mIHRoZSBmbGV4IGl0ZW0gY29tcHV0ZXMgdG8gYXV0bywgYW5kIG5laXRoZXIgb2YgdGhlIGNyb3NzLWF4aXMgbWFyZ2lucyBhcmUgYXV0bywgdGhlIGZsZXggaXRlbSBpcyBzdHJldGNoZWQuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiQWxsb3dzIHRoZSBkZWZhdWx0IGFsaWdubWVudCBhbG9uZyB0aGUgY3Jvc3MgYXhpcyB0byBiZSBvdmVycmlkZGVuIGZvciBpbmRpdmlkdWFsIGZsZXggaXRlbXMuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiItbXMtZmxleC1saW5lLXBhY2siLGJyb3dzZXJzOlsiSUUxMCJdLHZhbHVlczpbe25hbWU6ImNlbnRlciIsZGVzY3JpcHRpb246IkxpbmVzIGFyZSBwYWNrZWQgdG93YXJkIHRoZSBjZW50ZXIgb2YgdGhlIGZsZXggY29udGFpbmVyLiJ9LHtuYW1lOiJkaXN0cmlidXRlIixkZXNjcmlwdGlvbjoiTGluZXMgYXJlIGV2ZW5seSBkaXN0cmlidXRlZCBpbiB0aGUgZmxleCBjb250YWluZXIsIHdpdGggaGFsZi1zaXplIHNwYWNlcyBvbiBlaXRoZXIgZW5kLiJ9LHtuYW1lOiJlbmQiLGRlc2NyaXB0aW9uOiJMaW5lcyBhcmUgcGFja2VkIHRvd2FyZCB0aGUgZW5kIG9mIHRoZSBmbGV4IGNvbnRhaW5lci4ifSx7bmFtZToianVzdGlmeSIsZGVzY3JpcHRpb246IkxpbmVzIGFyZSBldmVubHkgZGlzdHJpYnV0ZWQgaW4gdGhlIGZsZXggY29udGFpbmVyLiJ9LHtuYW1lOiJzdGFydCIsZGVzY3JpcHRpb246IkxpbmVzIGFyZSBwYWNrZWQgdG93YXJkIHRoZSBzdGFydCBvZiB0aGUgZmxleCBjb250YWluZXIuIn0se25hbWU6InN0cmV0Y2giLGRlc2NyaXB0aW9uOiJMaW5lcyBzdHJldGNoIHRvIHRha2UgdXAgdGhlIHJlbWFpbmluZyBzcGFjZS4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJBbGlnbnMgYSBmbGV4IGNvbnRhaW5lcidzIGxpbmVzIHdpdGhpbiB0aGUgZmxleCBjb250YWluZXIgd2hlbiB0aGVyZSBpcyBleHRyYSBzcGFjZSBpbiB0aGUgY3Jvc3MtYXhpcywgc2ltaWxhciB0byBob3cgJ2p1c3RpZnktY29udGVudCcgYWxpZ25zIGluZGl2aWR1YWwgaXRlbXMgd2l0aGluIHRoZSBtYWluLWF4aXMuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiItbXMtZmxleC1vcmRlciIsYnJvd3NlcnM6WyJJRTEwIl0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJDb250cm9scyB0aGUgb3JkZXIgaW4gd2hpY2ggY2hpbGRyZW4gb2YgYSBmbGV4IGNvbnRhaW5lciBhcHBlYXIgd2l0aGluIHRoZSBmbGV4IGNvbnRhaW5lciwgYnkgYXNzaWduaW5nIHRoZW0gdG8gb3JkaW5hbCBncm91cHMuIixyZXN0cmljdGlvbnM6WyJpbnRlZ2VyIl19LHtuYW1lOiItbXMtZmxleC1wYWNrIixicm93c2VyczpbIklFMTAiXSx2YWx1ZXM6W3tuYW1lOiJjZW50ZXIiLGRlc2NyaXB0aW9uOiJGbGV4IGl0ZW1zIGFyZSBwYWNrZWQgdG93YXJkIHRoZSBjZW50ZXIgb2YgdGhlIGxpbmUuIn0se25hbWU6ImRpc3RyaWJ1dGUiLGRlc2NyaXB0aW9uOiJGbGV4IGl0ZW1zIGFyZSBldmVubHkgZGlzdHJpYnV0ZWQgaW4gdGhlIGxpbmUsIHdpdGggaGFsZi1zaXplIHNwYWNlcyBvbiBlaXRoZXIgZW5kLiJ9LHtuYW1lOiJlbmQiLGRlc2NyaXB0aW9uOiJGbGV4IGl0ZW1zIGFyZSBwYWNrZWQgdG93YXJkIHRoZSBlbmQgb2YgdGhlIGxpbmUuIn0se25hbWU6Imp1c3RpZnkiLGRlc2NyaXB0aW9uOiJGbGV4IGl0ZW1zIGFyZSBldmVubHkgZGlzdHJpYnV0ZWQgaW4gdGhlIGxpbmUuIn0se25hbWU6InN0YXJ0IixkZXNjcmlwdGlvbjoiRmxleCBpdGVtcyBhcmUgcGFja2VkIHRvd2FyZCB0aGUgc3RhcnQgb2YgdGhlIGxpbmUuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiQWxpZ25zIGZsZXggaXRlbXMgYWxvbmcgdGhlIG1haW4gYXhpcyBvZiB0aGUgY3VycmVudCBsaW5lIG9mIHRoZSBmbGV4IGNvbnRhaW5lci4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii1tcy1mbGV4LXdyYXAiLGJyb3dzZXJzOlsiSUUxMCJdLHZhbHVlczpbe25hbWU6Im5vd3JhcCIsZGVzY3JpcHRpb246IlRoZSBmbGV4IGNvbnRhaW5lciBpcyBzaW5nbGUtbGluZS4ifSx7bmFtZToid3JhcCIsZGVzY3JpcHRpb246IlRoZSBmbGV4Ym94IGlzIG11bHRpLWxpbmUuIn0se25hbWU6IndyYXAtcmV2ZXJzZSIsZGVzY3JpcHRpb246IlNhbWUgYXMgJ3dyYXAnLCBleGNlcHQgdGhlIGNyb3NzLXN0YXJ0IGFuZCBjcm9zcy1lbmQgZGlyZWN0aW9ucyBhcmUgc3dhcHBlZC4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJDb250cm9scyB3aGV0aGVyIHRoZSBmbGV4IGNvbnRhaW5lciBpcyBzaW5nbGUtbGluZSBvciBtdWx0aS1saW5lLCBhbmQgdGhlIGRpcmVjdGlvbiBvZiB0aGUgY3Jvc3MtYXhpcywgd2hpY2ggZGV0ZXJtaW5lcyB0aGUgZGlyZWN0aW9uIG5ldyBsaW5lcyBhcmUgc3RhY2tlZCBpbi4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii1tcy1mbG93LWZyb20iLGJyb3dzZXJzOlsiRSIsIklFMTAiXSx2YWx1ZXM6W3tuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiVGhlIGJsb2NrIGNvbnRhaW5lciBpcyBub3QgYSBDU1MgUmVnaW9uLiJ9XSxzdGF0dXM6Im5vbnN0YW5kYXJkIixzeW50YXg6Ilsgbm9uZSB8IDxjdXN0b20taWRlbnQ+IF0jIixyZWxldmFuY2U6MCxkZXNjcmlwdGlvbjoiTWFrZXMgYSBibG9jayBjb250YWluZXIgYSByZWdpb24gYW5kIGFzc29jaWF0ZXMgaXQgd2l0aCBhIG5hbWVkIGZsb3cuIixyZXN0cmljdGlvbnM6WyJpZGVudGlmaWVyIl19LHtuYW1lOiItbXMtZmxvdy1pbnRvIixicm93c2VyczpbIkUiLCJJRTEwIl0sdmFsdWVzOlt7bmFtZToibm9uZSIsZGVzY3JpcHRpb246IlRoZSBlbGVtZW50IGlzIG5vdCBtb3ZlZCB0byBhIG5hbWVkIGZsb3cgYW5kIG5vcm1hbCBDU1MgcHJvY2Vzc2luZyB0YWtlcyBwbGFjZS4ifV0sc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiJbIG5vbmUgfCA8Y3VzdG9tLWlkZW50PiBdIyIscmVsZXZhbmNlOjAsZGVzY3JpcHRpb246IlBsYWNlcyBhbiBlbGVtZW50IG9yIGl0cyBjb250ZW50cyBpbnRvIGEgbmFtZWQgZmxvdy4iLHJlc3RyaWN0aW9uczpbImlkZW50aWZpZXIiXX0se25hbWU6Ii1tcy1ncmlkLWNvbHVtbiIsYnJvd3NlcnM6WyJFIiwiSUUxMCJdLHZhbHVlczpbe25hbWU6ImF1dG8ifSx7bmFtZToiZW5kIn0se25hbWU6InN0YXJ0In1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiVXNlZCB0byBwbGFjZSBncmlkIGl0ZW1zIGFuZCBleHBsaWNpdGx5IGRlZmluZWQgZ3JpZCBjZWxscyBpbiB0aGUgR3JpZC4iLHJlc3RyaWN0aW9uczpbImludGVnZXIiLCJzdHJpbmciLCJlbnVtIl19LHtuYW1lOiItbXMtZ3JpZC1jb2x1bW4tYWxpZ24iLGJyb3dzZXJzOlsiRSIsIklFMTAiXSx2YWx1ZXM6W3tuYW1lOiJjZW50ZXIiLGRlc2NyaXB0aW9uOiJQbGFjZXMgdGhlIGNlbnRlciBvZiB0aGUgR3JpZCBJdGVtJ3MgbWFyZ2luIGJveCBhdCB0aGUgY2VudGVyIG9mIHRoZSBHcmlkIEl0ZW0ncyBjb2x1bW4uIn0se25hbWU6ImVuZCIsZGVzY3JpcHRpb246IkFsaWducyB0aGUgZW5kIGVkZ2Ugb2YgdGhlIEdyaWQgSXRlbSdzIG1hcmdpbiBib3ggdG8gdGhlIGVuZCBlZGdlIG9mIHRoZSBHcmlkIEl0ZW0ncyBjb2x1bW4uIn0se25hbWU6InN0YXJ0IixkZXNjcmlwdGlvbjoiQWxpZ25zIHRoZSBzdGFydGluZyBlZGdlIG9mIHRoZSBHcmlkIEl0ZW0ncyBtYXJnaW4gYm94IHRvIHRoZSBzdGFydGluZyBlZGdlIG9mIHRoZSBHcmlkIEl0ZW0ncyBjb2x1bW4uIn0se25hbWU6InN0cmV0Y2giLGRlc2NyaXB0aW9uOiJFbnN1cmVzIHRoYXQgdGhlIEdyaWQgSXRlbSdzIG1hcmdpbiBib3ggaXMgZXF1YWwgdG8gdGhlIHNpemUgb2YgdGhlIEdyaWQgSXRlbSdzIGNvbHVtbi4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJBbGlnbnMgdGhlIGNvbHVtbnMgaW4gYSBncmlkLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiLW1zLWdyaWQtY29sdW1ucyIsYnJvd3NlcnM6WyJFIiwiSUUxMCJdLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoibm9uZSB8IDx0cmFjay1saXN0PiB8IDxhdXRvLXRyYWNrLWxpc3Q+IixyZWxldmFuY2U6MCxkZXNjcmlwdGlvbjoiTGF5cyBvdXQgdGhlIGNvbHVtbnMgb2YgdGhlIGdyaWQuIn0se25hbWU6Ii1tcy1ncmlkLWNvbHVtbi1zcGFuIixicm93c2VyczpbIkUiLCJJRTEwIl0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgdGhlIG51bWJlciBvZiBjb2x1bW5zIHRvIHNwYW4uIixyZXN0cmljdGlvbnM6WyJpbnRlZ2VyIl19LHtuYW1lOiItbXMtZ3JpZC1sYXllciIsYnJvd3NlcnM6WyJFIiwiSUUxMCJdLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiR3JpZC1sYXllciBpcyBzaW1pbGFyIGluIGNvbmNlcHQgdG8gei1pbmRleCwgYnV0IGF2b2lkcyBvdmVybG9hZGluZyB0aGUgbWVhbmluZyBvZiB0aGUgei1pbmRleCBwcm9wZXJ0eSwgd2hpY2ggaXMgYXBwbGljYWJsZSBvbmx5IHRvIHBvc2l0aW9uZWQgZWxlbWVudHMuIixyZXN0cmljdGlvbnM6WyJpbnRlZ2VyIl19LHtuYW1lOiItbXMtZ3JpZC1yb3ciLGJyb3dzZXJzOlsiRSIsIklFMTAiXSx2YWx1ZXM6W3tuYW1lOiJhdXRvIn0se25hbWU6ImVuZCJ9LHtuYW1lOiJzdGFydCJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246ImdyaWQtcm93IGlzIHVzZWQgdG8gcGxhY2UgZ3JpZCBpdGVtcyBhbmQgZXhwbGljaXRseSBkZWZpbmVkIGdyaWQgY2VsbHMgaW4gdGhlIEdyaWQuIixyZXN0cmljdGlvbnM6WyJpbnRlZ2VyIiwic3RyaW5nIiwiZW51bSJdfSx7bmFtZToiLW1zLWdyaWQtcm93LWFsaWduIixicm93c2VyczpbIkUiLCJJRTEwIl0sdmFsdWVzOlt7bmFtZToiY2VudGVyIixkZXNjcmlwdGlvbjoiUGxhY2VzIHRoZSBjZW50ZXIgb2YgdGhlIEdyaWQgSXRlbSdzIG1hcmdpbiBib3ggYXQgdGhlIGNlbnRlciBvZiB0aGUgR3JpZCBJdGVtJ3Mgcm93LiJ9LHtuYW1lOiJlbmQiLGRlc2NyaXB0aW9uOiJBbGlnbnMgdGhlIGVuZCBlZGdlIG9mIHRoZSBHcmlkIEl0ZW0ncyBtYXJnaW4gYm94IHRvIHRoZSBlbmQgZWRnZSBvZiB0aGUgR3JpZCBJdGVtJ3Mgcm93LiJ9LHtuYW1lOiJzdGFydCIsZGVzY3JpcHRpb246IkFsaWducyB0aGUgc3RhcnRpbmcgZWRnZSBvZiB0aGUgR3JpZCBJdGVtJ3MgbWFyZ2luIGJveCB0byB0aGUgc3RhcnRpbmcgZWRnZSBvZiB0aGUgR3JpZCBJdGVtJ3Mgcm93LiJ9LHtuYW1lOiJzdHJldGNoIixkZXNjcmlwdGlvbjoiRW5zdXJlcyB0aGF0IHRoZSBHcmlkIEl0ZW0ncyBtYXJnaW4gYm94IGlzIGVxdWFsIHRvIHRoZSBzaXplIG9mIHRoZSBHcmlkIEl0ZW0ncyByb3cuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiQWxpZ25zIHRoZSByb3dzIGluIGEgZ3JpZC4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii1tcy1ncmlkLXJvd3MiLGJyb3dzZXJzOlsiRSIsIklFMTAiXSxzdGF0dXM6Im5vbnN0YW5kYXJkIixzeW50YXg6Im5vbmUgfCA8dHJhY2stbGlzdD4gfCA8YXV0by10cmFjay1saXN0PiIscmVsZXZhbmNlOjAsZGVzY3JpcHRpb246IkxheXMgb3V0IHRoZSBjb2x1bW5zIG9mIHRoZSBncmlkLiJ9LHtuYW1lOiItbXMtZ3JpZC1yb3ctc3BhbiIsYnJvd3NlcnM6WyJFIiwiSUUxMCJdLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIHRoZSBudW1iZXIgb2Ygcm93cyB0byBzcGFuLiIscmVzdHJpY3Rpb25zOlsiaW50ZWdlciJdfSx7bmFtZToiLW1zLWhpZ2gtY29udHJhc3QtYWRqdXN0Iixicm93c2VyczpbIkUiLCJJRTEwIl0sdmFsdWVzOlt7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IlByb3BlcnRpZXMgd2lsbCBiZSBhZGp1c3RlZCBhcyBhcHBsaWNhYmxlLiJ9LHtuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiTm8gYWRqdXN0bWVudHMgd2lsbCBiZSBhcHBsaWVkLiJ9XSxzdGF0dXM6Im5vbnN0YW5kYXJkIixzeW50YXg6ImF1dG8gfCBub25lIixyZWxldmFuY2U6MCxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGlmIHByb3BlcnRpZXMgc2hvdWxkIGJlIGFkanVzdGVkIGluIGhpZ2ggY29udHJhc3QgbW9kZS4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii1tcy1oeXBoZW5hdGUtbGltaXQtY2hhcnMiLGJyb3dzZXJzOlsiRSIsIklFMTAiXSx2YWx1ZXM6W3tuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiVGhlIHVzZXIgYWdlbnQgY2hvb3NlcyBhIHZhbHVlIHRoYXQgYWRhcHRzIHRvIHRoZSBjdXJyZW50IGxheW91dC4ifV0sc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiJhdXRvIHwgPGludGVnZXI+ezEsM30iLHJlbGV2YW5jZTowLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgdGhlIG1pbmltdW0gbnVtYmVyIG9mIGNoYXJhY3RlcnMgaW4gYSBoeXBoZW5hdGVkIHdvcmQuIixyZXN0cmljdGlvbnM6WyJpbnRlZ2VyIl19LHtuYW1lOiItbXMtaHlwaGVuYXRlLWxpbWl0LWxpbmVzIixicm93c2VyczpbIkUiLCJJRTEwIl0sdmFsdWVzOlt7bmFtZToibm8tbGltaXQiLGRlc2NyaXB0aW9uOiJUaGVyZSBpcyBubyBsaW1pdC4ifV0sc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiJuby1saW1pdCB8IDxpbnRlZ2VyPiIscmVsZXZhbmNlOjAsZGVzY3JpcHRpb246IkluZGljYXRlcyB0aGUgbWF4aW11bSBudW1iZXIgb2Ygc3VjY2Vzc2l2ZSBoeXBoZW5hdGVkIGxpbmVzIGluIGFuIGVsZW1lbnQuIixyZXN0cmljdGlvbnM6WyJpbnRlZ2VyIl19LHtuYW1lOiItbXMtaHlwaGVuYXRlLWxpbWl0LXpvbmUiLGJyb3dzZXJzOlsiRSIsIklFMTAiXSxzdGF0dXM6Im5vbnN0YW5kYXJkIixzeW50YXg6IjxwZXJjZW50YWdlPiB8IDxsZW5ndGg+IixyZWxldmFuY2U6MCxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIHRoZSBtYXhpbXVtIGFtb3VudCBvZiB1bmZpbGxlZCBzcGFjZSAoYmVmb3JlIGp1c3RpZmljYXRpb24pIHRoYXQgbWF5IGJlIGxlZnQgaW4gdGhlIGxpbmUgYm94IGJlZm9yZSBoeXBoZW5hdGlvbiBpcyB0cmlnZ2VyZWQgdG8gcHVsbCBwYXJ0IG9mIGEgd29yZCBmcm9tIHRoZSBuZXh0IGxpbmUgYmFjayB1cCBpbnRvIHRoZSBjdXJyZW50IGxpbmUuIixyZXN0cmljdGlvbnM6WyJwZXJjZW50YWdlIiwibGVuZ3RoIl19LHtuYW1lOiItbXMtaHlwaGVucyIsYnJvd3NlcnM6WyJFIiwiSUUxMCJdLHZhbHVlczpbe25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJDb25kaXRpb25hbCBoeXBoZW5hdGlvbiBjaGFyYWN0ZXJzIGluc2lkZSBhIHdvcmQsIGlmIHByZXNlbnQsIHRha2UgcHJpb3JpdHkgb3ZlciBhdXRvbWF0aWMgcmVzb3VyY2VzIHdoZW4gZGV0ZXJtaW5pbmcgaHlwaGVuYXRpb24gcG9pbnRzIHdpdGhpbiB0aGUgd29yZC4ifSx7bmFtZToibWFudWFsIixkZXNjcmlwdGlvbjoiV29yZHMgYXJlIG9ubHkgYnJva2VuIGF0IGxpbmUgYnJlYWtzIHdoZXJlIHRoZXJlIGFyZSBjaGFyYWN0ZXJzIGluc2lkZSB0aGUgd29yZCB0aGF0IHN1Z2dlc3QgbGluZSBicmVhayBvcHBvcnR1bml0aWVzIn0se25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJXb3JkcyBhcmUgbm90IGJyb2tlbiBhdCBsaW5lIGJyZWFrcywgZXZlbiBpZiBjaGFyYWN0ZXJzIGluc2lkZSB0aGUgd29yZCBzdWdnZXN0IGxpbmUgYnJlYWsgcG9pbnRzLiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkNvbnRyb2xzIHdoZXRoZXIgaHlwaGVuYXRpb24gaXMgYWxsb3dlZCB0byBjcmVhdGUgbW9yZSBicmVhayBvcHBvcnR1bml0aWVzIHdpdGhpbiBhIGxpbmUgb2YgdGV4dC4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii1tcy1pbWUtbW9kZSIsYnJvd3NlcnM6WyJJRTEwIl0sdmFsdWVzOlt7bmFtZToiYWN0aXZlIixkZXNjcmlwdGlvbjoiVGhlIGlucHV0IG1ldGhvZCBlZGl0b3IgaXMgaW5pdGlhbGx5IGFjdGl2ZTsgdGV4dCBlbnRyeSBpcyBwZXJmb3JtZWQgdXNpbmcgaXQgdW5sZXNzIHRoZSB1c2VyIHNwZWNpZmljYWxseSBkaXNtaXNzZXMgaXQuIn0se25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJObyBjaGFuZ2UgaXMgbWFkZSB0byB0aGUgY3VycmVudCBpbnB1dCBtZXRob2QgZWRpdG9yIHN0YXRlLiBUaGlzIGlzIHRoZSBkZWZhdWx0LiJ9LHtuYW1lOiJkaXNhYmxlZCIsZGVzY3JpcHRpb246IlRoZSBpbnB1dCBtZXRob2QgZWRpdG9yIGlzIGRpc2FibGVkIGFuZCBtYXkgbm90IGJlIGFjdGl2YXRlZCBieSB0aGUgdXNlci4ifSx7bmFtZToiaW5hY3RpdmUiLGRlc2NyaXB0aW9uOiJUaGUgaW5wdXQgbWV0aG9kIGVkaXRvciBpcyBpbml0aWFsbHkgaW5hY3RpdmUsIGJ1dCB0aGUgdXNlciBtYXkgYWN0aXZhdGUgaXQgaWYgdGhleSB3aXNoLiJ9LHtuYW1lOiJub3JtYWwiLGRlc2NyaXB0aW9uOiJUaGUgSU1FIHN0YXRlIHNob3VsZCBiZSBub3JtYWw7IHRoaXMgdmFsdWUgY2FuIGJlIHVzZWQgaW4gYSB1c2VyIHN0eWxlIHNoZWV0IHRvIG92ZXJyaWRlIHRoZSBwYWdlIHNldHRpbmcuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiQ29udHJvbHMgdGhlIHN0YXRlIG9mIHRoZSBpbnB1dCBtZXRob2QgZWRpdG9yIGZvciB0ZXh0IGZpZWxkcy4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii1tcy1pbnRlcnBvbGF0aW9uLW1vZGUiLGJyb3dzZXJzOlsiSUU3Il0sdmFsdWVzOlt7bmFtZToiYmljdWJpYyJ9LHtuYW1lOiJuZWFyZXN0LW5laWdoYm9yIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiR2V0cyBvciBzZXRzIHRoZSBpbnRlcnBvbGF0aW9uIChyZXNhbXBsaW5nKSBtZXRob2QgdXNlZCB0byBzdHJldGNoIGltYWdlcy4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii1tcy1sYXlvdXQtZ3JpZCIsYnJvd3NlcnM6WyJFIiwiSUUxMCJdLHZhbHVlczpbe25hbWU6ImNoYXIiLGRlc2NyaXB0aW9uOiJBbnkgb2YgdGhlIHJhbmdlIG9mIGNoYXJhY3RlciB2YWx1ZXMgYXZhaWxhYmxlIHRvIHRoZSAtbXMtbGF5b3V0LWdyaWQtY2hhciBwcm9wZXJ0eS4ifSx7bmFtZToibGluZSIsZGVzY3JpcHRpb246IkFueSBvZiB0aGUgcmFuZ2Ugb2YgbGluZSB2YWx1ZXMgYXZhaWxhYmxlIHRvIHRoZSAtbXMtbGF5b3V0LWdyaWQtbGluZSBwcm9wZXJ0eS4ifSx7bmFtZToibW9kZSIsZGVzY3JpcHRpb246IkFueSBvZiB0aGUgcmFuZ2Ugb2YgbW9kZSB2YWx1ZXMgYXZhaWxhYmxlIHRvIHRoZSAtbXMtbGF5b3V0LWdyaWQtbW9kZSBwcm9wZXJ0eS4ifSx7bmFtZToidHlwZSIsZGVzY3JpcHRpb246IkFueSBvZiB0aGUgcmFuZ2Ugb2YgdHlwZSB2YWx1ZXMgYXZhaWxhYmxlIHRvIHRoZSAtbXMtbGF5b3V0LWdyaWQtdHlwZSBwcm9wZXJ0eS4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJTZXRzIG9yIHJldHJpZXZlcyB0aGUgY29tcG9zaXRlIGRvY3VtZW50IGdyaWQgcHJvcGVydGllcyB0aGF0IHNwZWNpZnkgdGhlIGxheW91dCBvZiB0ZXh0IGNoYXJhY3RlcnMuIn0se25hbWU6Ii1tcy1sYXlvdXQtZ3JpZC1jaGFyIixicm93c2VyczpbIkUiLCJJRTEwIl0sdmFsdWVzOlt7bmFtZToiYXV0byIsZGVzY3JpcHRpb246Ikxhcmdlc3QgY2hhcmFjdGVyIGluIHRoZSBmb250IG9mIHRoZSBlbGVtZW50IGlzIHVzZWQgdG8gc2V0IHRoZSBjaGFyYWN0ZXIgZ3JpZC4ifSx7bmFtZToibm9uZSIsZGVzY3JpcHRpb246IkRlZmF1bHQuIE5vIGNoYXJhY3RlciBncmlkIGlzIHNldC4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJTZXRzIG9yIHJldHJpZXZlcyB0aGUgc2l6ZSBvZiB0aGUgY2hhcmFjdGVyIGdyaWQgdXNlZCBmb3IgcmVuZGVyaW5nIHRoZSB0ZXh0IGNvbnRlbnQgb2YgYW4gZWxlbWVudC4iLHJlc3RyaWN0aW9uczpbImVudW0iLCJsZW5ndGgiLCJwZXJjZW50YWdlIl19LHtuYW1lOiItbXMtbGF5b3V0LWdyaWQtbGluZSIsYnJvd3NlcnM6WyJFIiwiSUUxMCJdLHZhbHVlczpbe25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJMYXJnZXN0IGNoYXJhY3RlciBpbiB0aGUgZm9udCBvZiB0aGUgZWxlbWVudCBpcyB1c2VkIHRvIHNldCB0aGUgY2hhcmFjdGVyIGdyaWQuIn0se25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJEZWZhdWx0LiBObyBncmlkIGxpbmUgaXMgc2V0LiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlNldHMgb3IgcmV0cmlldmVzIHRoZSBncmlkbGluZSB2YWx1ZSB1c2VkIGZvciByZW5kZXJpbmcgdGhlIHRleHQgY29udGVudCBvZiBhbiBlbGVtZW50LiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIl19LHtuYW1lOiItbXMtbGF5b3V0LWdyaWQtbW9kZSIsYnJvd3NlcnM6WyJFIiwiSUUxMCJdLHZhbHVlczpbe25hbWU6ImJvdGgiLGRlc2NyaXB0aW9uOiJEZWZhdWx0LiBCb3RoIHRoZSBjaGFyIGFuZCBsaW5lIGdyaWQgbW9kZXMgYXJlIGVuYWJsZWQuIFRoaXMgc2V0dGluZyBpcyBuZWNlc3NhcnkgdG8gZnVsbHkgZW5hYmxlIHRoZSBsYXlvdXQgZ3JpZCBvbiBhbiBlbGVtZW50LiJ9LHtuYW1lOiJjaGFyIixkZXNjcmlwdGlvbjoiT25seSBhIGNoYXJhY3RlciBncmlkIGlzIHVzZWQuIFRoaXMgaXMgcmVjb21tZW5kZWQgZm9yIHVzZSB3aXRoIGJsb2NrLWxldmVsIGVsZW1lbnRzLCBzdWNoIGFzIGEgYmxvY2txdW90ZSwgd2hlcmUgdGhlIGxpbmUgZ3JpZCBpcyBpbnRlbmRlZCB0byBiZSBkaXNhYmxlZC4ifSx7bmFtZToibGluZSIsZGVzY3JpcHRpb246Ik9ubHkgYSBsaW5lIGdyaWQgaXMgdXNlZC4gVGhpcyBpcyByZWNvbW1lbmRlZCBmb3IgdXNlIHdpdGggaW5saW5lIGVsZW1lbnRzLCBzdWNoIGFzIGEgc3BhbiwgdG8gZGlzYWJsZSB0aGUgaG9yaXpvbnRhbCBncmlkIG9uIHJ1bnMgb2YgdGV4dCB0aGF0IGFjdCBhcyBhIHNpbmdsZSBlbnRpdHkgaW4gdGhlIGdyaWQgbGF5b3V0LiJ9LHtuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiTm8gZ3JpZCBpcyB1c2VkLiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkdldHMgb3Igc2V0cyB3aGV0aGVyIHRoZSB0ZXh0IGxheW91dCBncmlkIHVzZXMgdHdvIGRpbWVuc2lvbnMuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiItbXMtbGF5b3V0LWdyaWQtdHlwZSIsYnJvd3NlcnM6WyJFIiwiSUUxMCJdLHZhbHVlczpbe25hbWU6ImZpeGVkIixkZXNjcmlwdGlvbjoiR3JpZCB1c2VkIGZvciBtb25vc3BhY2VkIGxheW91dC4gQWxsIG5vbmN1cnNpdmUgY2hhcmFjdGVycyBhcmUgdHJlYXRlZCBhcyBlcXVhbDsgZXZlcnkgY2hhcmFjdGVyIGlzIGNlbnRlcmVkIHdpdGhpbiBhIHNpbmdsZSBncmlkIHNwYWNlIGJ5IGRlZmF1bHQuIn0se25hbWU6Imxvb3NlIixkZXNjcmlwdGlvbjoiRGVmYXVsdC4gR3JpZCB1c2VkIGZvciBKYXBhbmVzZSBhbmQgS29yZWFuIGNoYXJhY3RlcnMuIn0se25hbWU6InN0cmljdCIsZGVzY3JpcHRpb246IkdyaWQgdXNlZCBmb3IgQ2hpbmVzZSwgYXMgd2VsbCBhcyBKYXBhbmVzZSAoR2Vua28pIGFuZCBLb3JlYW4gY2hhcmFjdGVycy4gT25seSB0aGUgaWRlb2dyYXBocywga2FuYXMsIGFuZCB3aWRlIGNoYXJhY3RlcnMgYXJlIHNuYXBwZWQgdG8gdGhlIGdyaWQuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiU2V0cyBvciByZXRyaWV2ZXMgdGhlIHR5cGUgb2YgZ3JpZCB1c2VkIGZvciByZW5kZXJpbmcgdGhlIHRleHQgY29udGVudCBvZiBhbiBlbGVtZW50LiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiLW1zLWxpbmUtYnJlYWsiLGJyb3dzZXJzOlsiRSIsIklFMTAiXSx2YWx1ZXM6W3tuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiVGhlIFVBIGRldGVybWluZXMgdGhlIHNldCBvZiBsaW5lLWJyZWFraW5nIHJlc3RyaWN0aW9ucyB0byB1c2UgZm9yIENKSyBzY3JpcHRzLCBhbmQgaXQgbWF5IHZhcnkgdGhlIHJlc3RyaWN0aW9ucyBiYXNlZCBvbiB0aGUgbGVuZ3RoIG9mIHRoZSBsaW5lOyBlLmcuLCB1c2UgYSBsZXNzIHJlc3RyaWN0aXZlIHNldCBvZiBsaW5lLWJyZWFrIHJ1bGVzIGZvciBzaG9ydCBsaW5lcy4ifSx7bmFtZToia2VlcC1hbGwiLGRlc2NyaXB0aW9uOiJTZXF1ZW5jZXMgb2YgQ0pLIGNoYXJhY3RlcnMgY2FuIG5vIGxvbmdlciBicmVhayBvbiBpbXBsaWVkIGJyZWFrIHBvaW50cy4gVGhpcyBvcHRpb24gc2hvdWxkIG9ubHkgYmUgdXNlZCB3aGVyZSB0aGUgcHJlc2VuY2Ugb2Ygd29yZCBzZXBhcmF0b3IgY2hhcmFjdGVycyBzdGlsbCBjcmVhdGVzIGxpbmUtYnJlYWtpbmcgb3Bwb3J0dW5pdGllcywgYXMgaW4gS29yZWFuLiJ9LHtuYW1lOiJuZXdzcGFwZXIiLGRlc2NyaXB0aW9uOiJCcmVha3MgQ0pLIHNjcmlwdHMgdXNpbmcgdGhlIGxlYXN0IHJlc3RyaWN0aXZlIHNldCBvZiBsaW5lLWJyZWFraW5nIHJ1bGVzLiBUeXBpY2FsbHkgdXNlZCBmb3Igc2hvcnQgbGluZXMsIHN1Y2ggYXMgaW4gbmV3c3BhcGVycy4ifSx7bmFtZToibm9ybWFsIixkZXNjcmlwdGlvbjoiQnJlYWtzIENKSyBzY3JpcHRzIHVzaW5nIGEgbm9ybWFsIHNldCBvZiBsaW5lLWJyZWFraW5nIHJ1bGVzLiJ9LHtuYW1lOiJzdHJpY3QiLGRlc2NyaXB0aW9uOiJCcmVha3MgQ0pLIHNjcmlwdHMgdXNpbmcgYSBtb3JlIHJlc3RyaWN0aXZlIHNldCBvZiBsaW5lLWJyZWFraW5nIHJ1bGVzIHRoYW4gJ25vcm1hbCcuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIHdoYXQgc2V0IG9mIGxpbmUgYnJlYWtpbmcgcmVzdHJpY3Rpb25zIGFyZSBpbiBlZmZlY3Qgd2l0aGluIHRoZSBlbGVtZW50LiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiLW1zLW92ZXJmbG93LXN0eWxlIixicm93c2VyczpbIkUiLCJJRTEwIl0sdmFsdWVzOlt7bmFtZToiYXV0byIsZGVzY3JpcHRpb246Ik5vIHByZWZlcmVuY2UsIFVBIHNob3VsZCB1c2UgdGhlIGZpcnN0IHNjcm9sbGluZyBtZXRob2QgaW4gdGhlIGxpc3QgdGhhdCBpdCBzdXBwb3J0cy4ifSx7bmFtZToiLW1zLWF1dG9oaWRpbmctc2Nyb2xsYmFyIixkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIHRoZSBlbGVtZW50IGRpc3BsYXlzIGF1dG8taGlkaW5nIHNjcm9sbGJhcnMgZHVyaW5nIG1vdXNlIGludGVyYWN0aW9ucyBhbmQgcGFubmluZyBpbmRpY2F0b3JzIGR1cmluZyB0b3VjaCBhbmQga2V5Ym9hcmQgaW50ZXJhY3Rpb25zLiJ9LHtuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIHRoZSBlbGVtZW50IGRvZXMgbm90IGRpc3BsYXkgc2Nyb2xsYmFycyBvciBwYW5uaW5nIGluZGljYXRvcnMsIGV2ZW4gd2hlbiBpdHMgY29udGVudCBvdmVyZmxvd3MuIn0se25hbWU6InNjcm9sbGJhciIsZGVzY3JpcHRpb246J1Njcm9sbGJhcnMgYXJlIHR5cGljYWxseSBuYXJyb3cgc3RyaXBzIGluc2VydGVkIG9uIG9uZSBvciB0d28gZWRnZXMgb2YgYW4gZWxlbWVudCBhbmQgd2hpY2ggb2Z0ZW4gaGF2ZSBhcnJvd3MgdG8gY2xpY2sgb24gYW5kIGEgInRodW1iIiB0byBkcmFnIHVwIGFuZCBkb3duIChvciBsZWZ0IGFuZCByaWdodCkgdG8gbW92ZSB0aGUgY29udGVudHMgb2YgdGhlIGVsZW1lbnQuJ31dLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoiYXV0byB8IG5vbmUgfCBzY3JvbGxiYXIgfCAtbXMtYXV0b2hpZGluZy1zY3JvbGxiYXIiLHJlbGV2YW5jZTowLGRlc2NyaXB0aW9uOiJTcGVjaWZ5IHdoZXRoZXIgY29udGVudCBpcyBjbGlwcGVkIHdoZW4gaXQgb3ZlcmZsb3dzIHRoZSBlbGVtZW50J3MgY29udGVudCBhcmVhLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiLW1zLXBlcnNwZWN0aXZlIixicm93c2VyczpbIklFMTAiXSx2YWx1ZXM6W3tuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiTm8gcGVyc3BlY3RpdmUgdHJhbnNmb3JtIGlzIGFwcGxpZWQuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiQXBwbGllcyB0aGUgc2FtZSB0cmFuc2Zvcm0gYXMgdGhlIHBlcnNwZWN0aXZlKDxudW1iZXI+KSB0cmFuc2Zvcm0gZnVuY3Rpb24sIGV4Y2VwdCB0aGF0IGl0IGFwcGxpZXMgb25seSB0byB0aGUgcG9zaXRpb25lZCBvciB0cmFuc2Zvcm1lZCBjaGlsZHJlbiBvZiB0aGUgZWxlbWVudCwgbm90IHRvIHRoZSB0cmFuc2Zvcm0gb24gdGhlIGVsZW1lbnQgaXRzZWxmLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIl19LHtuYW1lOiItbXMtcGVyc3BlY3RpdmUtb3JpZ2luIixicm93c2VyczpbIklFMTAiXSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkVzdGFibGlzaGVzIHRoZSBvcmlnaW4gZm9yIHRoZSBwZXJzcGVjdGl2ZSBwcm9wZXJ0eS4gSXQgZWZmZWN0aXZlbHkgc2V0cyB0aGUgWCBhbmQgWSBwb3NpdGlvbiBhdCB3aGljaCB0aGUgdmlld2VyIGFwcGVhcnMgdG8gYmUgbG9va2luZyBhdCB0aGUgY2hpbGRyZW4gb2YgdGhlIGVsZW1lbnQuIixyZXN0cmljdGlvbnM6WyJwb3NpdGlvbiIsInBlcmNlbnRhZ2UiLCJsZW5ndGgiXX0se25hbWU6Ii1tcy1wZXJzcGVjdGl2ZS1vcmlnaW4teCIsYnJvd3NlcnM6WyJJRTEwIl0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJFc3RhYmxpc2hlcyB0aGUgb3JpZ2luIGZvciB0aGUgcGVyc3BlY3RpdmUgcHJvcGVydHkuIEl0IGVmZmVjdGl2ZWx5IHNldHMgdGhlIFggIHBvc2l0aW9uIGF0IHdoaWNoIHRoZSB2aWV3ZXIgYXBwZWFycyB0byBiZSBsb29raW5nIGF0IHRoZSBjaGlsZHJlbiBvZiB0aGUgZWxlbWVudC4iLHJlc3RyaWN0aW9uczpbInBvc2l0aW9uIiwicGVyY2VudGFnZSIsImxlbmd0aCJdfSx7bmFtZToiLW1zLXBlcnNwZWN0aXZlLW9yaWdpbi15Iixicm93c2VyczpbIklFMTAiXSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkVzdGFibGlzaGVzIHRoZSBvcmlnaW4gZm9yIHRoZSBwZXJzcGVjdGl2ZSBwcm9wZXJ0eS4gSXQgZWZmZWN0aXZlbHkgc2V0cyB0aGUgWSBwb3NpdGlvbiBhdCB3aGljaCB0aGUgdmlld2VyIGFwcGVhcnMgdG8gYmUgbG9va2luZyBhdCB0aGUgY2hpbGRyZW4gb2YgdGhlIGVsZW1lbnQuIixyZXN0cmljdGlvbnM6WyJwb3NpdGlvbiIsInBlcmNlbnRhZ2UiLCJsZW5ndGgiXX0se25hbWU6Ii1tcy1wcm9ncmVzcy1hcHBlYXJhbmNlIixicm93c2VyczpbIklFMTAiXSx2YWx1ZXM6W3tuYW1lOiJiYXIifSx7bmFtZToicmluZyJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkdldHMgb3Igc2V0cyBhIHZhbHVlIHRoYXQgc3BlY2lmaWVzIHdoZXRoZXIgYSBwcm9ncmVzcyBjb250cm9sIGRpc3BsYXlzIGFzIGEgYmFyIG9yIGEgcmluZy4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii1tcy1zY3JvbGxiYXItM2RsaWdodC1jb2xvciIsYnJvd3NlcnM6WyJJRTgiXSxzdGF0dXM6Im5vbnN0YW5kYXJkIixzeW50YXg6Ijxjb2xvcj4iLHJlbGV2YW5jZTowLGRlc2NyaXB0aW9uOiJEZXRlcm1pbmVzIHRoZSBjb2xvciBvZiB0aGUgdG9wIGFuZCBsZWZ0IGVkZ2VzIG9mIHRoZSBzY3JvbGwgYm94IGFuZCBzY3JvbGwgYXJyb3dzIG9mIGEgc2Nyb2xsIGJhci4iLHJlc3RyaWN0aW9uczpbImNvbG9yIl19LHtuYW1lOiItbXMtc2Nyb2xsYmFyLWFycm93LWNvbG9yIixicm93c2VyczpbIklFOCJdLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoiPGNvbG9yPiIscmVsZXZhbmNlOjAsZGVzY3JpcHRpb246IkRldGVybWluZXMgdGhlIGNvbG9yIG9mIHRoZSBhcnJvdyBlbGVtZW50cyBvZiBhIHNjcm9sbCBhcnJvdy4iLHJlc3RyaWN0aW9uczpbImNvbG9yIl19LHtuYW1lOiItbXMtc2Nyb2xsYmFyLWJhc2UtY29sb3IiLGJyb3dzZXJzOlsiSUU4Il0sc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiI8Y29sb3I+IixyZWxldmFuY2U6MCxkZXNjcmlwdGlvbjoiRGV0ZXJtaW5lcyB0aGUgY29sb3Igb2YgdGhlIG1haW4gZWxlbWVudHMgb2YgYSBzY3JvbGwgYmFyLCB3aGljaCBpbmNsdWRlIHRoZSBzY3JvbGwgYm94LCB0cmFjaywgYW5kIHNjcm9sbCBhcnJvd3MuIixyZXN0cmljdGlvbnM6WyJjb2xvciJdfSx7bmFtZToiLW1zLXNjcm9sbGJhci1kYXJrc2hhZG93LWNvbG9yIixicm93c2VyczpbIklFOCJdLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoiPGNvbG9yPiIscmVsZXZhbmNlOjAsZGVzY3JpcHRpb246IkRldGVybWluZXMgdGhlIGNvbG9yIG9mIHRoZSBndXR0ZXIgb2YgYSBzY3JvbGwgYmFyLiIscmVzdHJpY3Rpb25zOlsiY29sb3IiXX0se25hbWU6Ii1tcy1zY3JvbGxiYXItZmFjZS1jb2xvciIsYnJvd3NlcnM6WyJJRTgiXSxzdGF0dXM6Im5vbnN0YW5kYXJkIixzeW50YXg6Ijxjb2xvcj4iLHJlbGV2YW5jZTowLGRlc2NyaXB0aW9uOiJEZXRlcm1pbmVzIHRoZSBjb2xvciBvZiB0aGUgc2Nyb2xsIGJveCBhbmQgc2Nyb2xsIGFycm93cyBvZiBhIHNjcm9sbCBiYXIuIixyZXN0cmljdGlvbnM6WyJjb2xvciJdfSx7bmFtZToiLW1zLXNjcm9sbGJhci1oaWdobGlnaHQtY29sb3IiLGJyb3dzZXJzOlsiSUU4Il0sc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiI8Y29sb3I+IixyZWxldmFuY2U6MCxkZXNjcmlwdGlvbjoiRGV0ZXJtaW5lcyB0aGUgY29sb3Igb2YgdGhlIHRvcCBhbmQgbGVmdCBlZGdlcyBvZiB0aGUgc2Nyb2xsIGJveCBhbmQgc2Nyb2xsIGFycm93cyBvZiBhIHNjcm9sbCBiYXIuIixyZXN0cmljdGlvbnM6WyJjb2xvciJdfSx7bmFtZToiLW1zLXNjcm9sbGJhci1zaGFkb3ctY29sb3IiLGJyb3dzZXJzOlsiSUU4Il0sc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiI8Y29sb3I+IixyZWxldmFuY2U6MCxkZXNjcmlwdGlvbjoiRGV0ZXJtaW5lcyB0aGUgY29sb3Igb2YgdGhlIGJvdHRvbSBhbmQgcmlnaHQgZWRnZXMgb2YgdGhlIHNjcm9sbCBib3ggYW5kIHNjcm9sbCBhcnJvd3Mgb2YgYSBzY3JvbGwgYmFyLiIscmVzdHJpY3Rpb25zOlsiY29sb3IiXX0se25hbWU6Ii1tcy1zY3JvbGxiYXItdHJhY2stY29sb3IiLGJyb3dzZXJzOlsiSUU4Il0sc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiI8Y29sb3I+IixyZWxldmFuY2U6MCxkZXNjcmlwdGlvbjoiRGV0ZXJtaW5lcyB0aGUgY29sb3Igb2YgdGhlIHRyYWNrIGVsZW1lbnQgb2YgYSBzY3JvbGwgYmFyLiIscmVzdHJpY3Rpb25zOlsiY29sb3IiXX0se25hbWU6Ii1tcy1zY3JvbGwtY2hhaW5pbmciLGJyb3dzZXJzOlsiRSIsIklFMTAiXSx2YWx1ZXM6W3tuYW1lOiJjaGFpbmVkIn0se25hbWU6Im5vbmUifV0sc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiJjaGFpbmVkIHwgbm9uZSIscmVsZXZhbmNlOjAsZGVzY3JpcHRpb246IkdldHMgb3Igc2V0cyBhIHZhbHVlIHRoYXQgaW5kaWNhdGVzIHRoZSBzY3JvbGxpbmcgYmVoYXZpb3IgdGhhdCBvY2N1cnMgd2hlbiBhIHVzZXIgaGl0cyB0aGUgY29udGVudCBib3VuZGFyeSBkdXJpbmcgYSBtYW5pcHVsYXRpb24uIixyZXN0cmljdGlvbnM6WyJlbnVtIiwibGVuZ3RoIl19LHtuYW1lOiItbXMtc2Nyb2xsLWxpbWl0Iixicm93c2VyczpbIkUiLCJJRTEwIl0sdmFsdWVzOlt7bmFtZToiYXV0byJ9XSxzdGF0dXM6Im5vbnN0YW5kYXJkIixzeW50YXg6IjwnLW1zLXNjcm9sbC1saW1pdC14LW1pbic+IDwnLW1zLXNjcm9sbC1saW1pdC15LW1pbic+IDwnLW1zLXNjcm9sbC1saW1pdC14LW1heCc+IDwnLW1zLXNjcm9sbC1saW1pdC15LW1heCc+IixyZWxldmFuY2U6MCxkZXNjcmlwdGlvbjoiR2V0cyBvciBzZXRzIGEgc2hvcnRoYW5kIHZhbHVlIHRoYXQgc2V0cyB2YWx1ZXMgZm9yIHRoZSAtbXMtc2Nyb2xsLWxpbWl0LXgtbWluLCAtbXMtc2Nyb2xsLWxpbWl0LXktbWluLCAtbXMtc2Nyb2xsLWxpbWl0LXgtbWF4LCBhbmQgLW1zLXNjcm9sbC1saW1pdC15LW1heCBwcm9wZXJ0aWVzLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIl19LHtuYW1lOiItbXMtc2Nyb2xsLWxpbWl0LXgtbWF4Iixicm93c2VyczpbIkUiLCJJRTEwIl0sdmFsdWVzOlt7bmFtZToiYXV0byJ9XSxzdGF0dXM6Im5vbnN0YW5kYXJkIixzeW50YXg6ImF1dG8gfCA8bGVuZ3RoPiIscmVsZXZhbmNlOjAsZGVzY3JpcHRpb246IkdldHMgb3Igc2V0cyBhIHZhbHVlIHRoYXQgc3BlY2lmaWVzIHRoZSBtYXhpbXVtIHZhbHVlIGZvciB0aGUgc2Nyb2xsTGVmdCBwcm9wZXJ0eS4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCJdfSx7bmFtZToiLW1zLXNjcm9sbC1saW1pdC14LW1pbiIsYnJvd3NlcnM6WyJFIiwiSUUxMCJdLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoiPGxlbmd0aD4iLHJlbGV2YW5jZTowLGRlc2NyaXB0aW9uOiJHZXRzIG9yIHNldHMgYSB2YWx1ZSB0aGF0IHNwZWNpZmllcyB0aGUgbWluaW11bSB2YWx1ZSBmb3IgdGhlIHNjcm9sbExlZnQgcHJvcGVydHkuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiXX0se25hbWU6Ii1tcy1zY3JvbGwtbGltaXQteS1tYXgiLGJyb3dzZXJzOlsiRSIsIklFMTAiXSx2YWx1ZXM6W3tuYW1lOiJhdXRvIn1dLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoiYXV0byB8IDxsZW5ndGg+IixyZWxldmFuY2U6MCxkZXNjcmlwdGlvbjoiR2V0cyBvciBzZXRzIGEgdmFsdWUgdGhhdCBzcGVjaWZpZXMgdGhlIG1heGltdW0gdmFsdWUgZm9yIHRoZSBzY3JvbGxUb3AgcHJvcGVydHkuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiXX0se25hbWU6Ii1tcy1zY3JvbGwtbGltaXQteS1taW4iLGJyb3dzZXJzOlsiRSIsIklFMTAiXSxzdGF0dXM6Im5vbnN0YW5kYXJkIixzeW50YXg6IjxsZW5ndGg+IixyZWxldmFuY2U6MCxkZXNjcmlwdGlvbjoiR2V0cyBvciBzZXRzIGEgdmFsdWUgdGhhdCBzcGVjaWZpZXMgdGhlIG1pbmltdW0gdmFsdWUgZm9yIHRoZSBzY3JvbGxUb3AgcHJvcGVydHkuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiXX0se25hbWU6Ii1tcy1zY3JvbGwtcmFpbHMiLGJyb3dzZXJzOlsiRSIsIklFMTAiXSx2YWx1ZXM6W3tuYW1lOiJub25lIn0se25hbWU6InJhaWxlZCJ9XSxzdGF0dXM6Im5vbnN0YW5kYXJkIixzeW50YXg6Im5vbmUgfCByYWlsZWQiLHJlbGV2YW5jZTowLGRlc2NyaXB0aW9uOiJHZXRzIG9yIHNldHMgYSB2YWx1ZSB0aGF0IGluZGljYXRlcyB3aGV0aGVyIG9yIG5vdCBzbWFsbCBtb3Rpb25zIHBlcnBlbmRpY3VsYXIgdG8gdGhlIHByaW1hcnkgYXhpcyBvZiBtb3Rpb24gd2lsbCByZXN1bHQgaW4gZWl0aGVyIGNoYW5nZXMgdG8gYm90aCB0aGUgc2Nyb2xsVG9wIGFuZCBzY3JvbGxMZWZ0IHByb3BlcnRpZXMgb3IgYSBjaGFuZ2UgdG8gdGhlIHByaW1hcnkgYXhpcyAoZm9yIGluc3RhbmNlLCBlaXRoZXIgdGhlIHNjcm9sbFRvcCBvciBzY3JvbGxMZWZ0IHByb3BlcnRpZXMgd2lsbCBjaGFuZ2UsIGJ1dCBub3QgYm90aCkuIixyZXN0cmljdGlvbnM6WyJlbnVtIiwibGVuZ3RoIl19LHtuYW1lOiItbXMtc2Nyb2xsLXNuYXAtcG9pbnRzLXgiLGJyb3dzZXJzOlsiRSIsIklFMTAiXSx2YWx1ZXM6W3tuYW1lOiJzbmFwSW50ZXJ2YWwoMTAwJSwgMTAwJSkifSx7bmFtZToic25hcExpc3QoKSJ9XSxzdGF0dXM6Im5vbnN0YW5kYXJkIixzeW50YXg6InNuYXBJbnRlcnZhbCggPGxlbmd0aC1wZXJjZW50YWdlPiwgPGxlbmd0aC1wZXJjZW50YWdlPiApIHwgc25hcExpc3QoIDxsZW5ndGgtcGVyY2VudGFnZT4jICkiLHJlbGV2YW5jZTowLGRlc2NyaXB0aW9uOiJHZXRzIG9yIHNldHMgYSB2YWx1ZSB0aGF0IGRlZmluZXMgd2hlcmUgc25hcC1wb2ludHMgd2lsbCBiZSBsb2NhdGVkIGFsb25nIHRoZSB4LWF4aXMuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiItbXMtc2Nyb2xsLXNuYXAtcG9pbnRzLXkiLGJyb3dzZXJzOlsiRSIsIklFMTAiXSx2YWx1ZXM6W3tuYW1lOiJzbmFwSW50ZXJ2YWwoMTAwJSwgMTAwJSkifSx7bmFtZToic25hcExpc3QoKSJ9XSxzdGF0dXM6Im5vbnN0YW5kYXJkIixzeW50YXg6InNuYXBJbnRlcnZhbCggPGxlbmd0aC1wZXJjZW50YWdlPiwgPGxlbmd0aC1wZXJjZW50YWdlPiApIHwgc25hcExpc3QoIDxsZW5ndGgtcGVyY2VudGFnZT4jICkiLHJlbGV2YW5jZTowLGRlc2NyaXB0aW9uOiJHZXRzIG9yIHNldHMgYSB2YWx1ZSB0aGF0IGRlZmluZXMgd2hlcmUgc25hcC1wb2ludHMgd2lsbCBiZSBsb2NhdGVkIGFsb25nIHRoZSB5LWF4aXMuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiItbXMtc2Nyb2xsLXNuYXAtdHlwZSIsYnJvd3NlcnM6WyJFIiwiSUUxMCJdLHZhbHVlczpbe25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJUaGUgdmlzdWFsIHZpZXdwb3J0IG9mIHRoaXMgc2Nyb2xsIGNvbnRhaW5lciBtdXN0IGlnbm9yZSBzbmFwIHBvaW50cywgaWYgYW55LCB3aGVuIHNjcm9sbGVkLiJ9LHtuYW1lOiJtYW5kYXRvcnkiLGRlc2NyaXB0aW9uOiJUaGUgdmlzdWFsIHZpZXdwb3J0IG9mIHRoaXMgc2Nyb2xsIGNvbnRhaW5lciBpcyBndWFyYW50ZWVkIHRvIHJlc3Qgb24gYSBzbmFwIHBvaW50IHdoZW4gdGhlcmUgYXJlIG5vIGFjdGl2ZSBzY3JvbGxpbmcgb3BlcmF0aW9ucy4ifSx7bmFtZToicHJveGltaXR5IixkZXNjcmlwdGlvbjoiVGhlIHZpc3VhbCB2aWV3cG9ydCBvZiB0aGlzIHNjcm9sbCBjb250YWluZXIgbWF5IGNvbWUgdG8gcmVzdCBvbiBhIHNuYXAgcG9pbnQgYXQgdGhlIHRlcm1pbmF0aW9uIG9mIGEgc2Nyb2xsIGF0IHRoZSBkaXNjcmV0aW9uIG9mIHRoZSBVQSBnaXZlbiB0aGUgcGFyYW1ldGVycyBvZiB0aGUgc2Nyb2xsLiJ9XSxzdGF0dXM6Im5vbnN0YW5kYXJkIixzeW50YXg6Im5vbmUgfCBwcm94aW1pdHkgfCBtYW5kYXRvcnkiLHJlbGV2YW5jZTowLGRlc2NyaXB0aW9uOiJHZXRzIG9yIHNldHMgYSB2YWx1ZSB0aGF0IGRlZmluZXMgd2hhdCB0eXBlIG9mIHNuYXAtcG9pbnQgc2hvdWxkIGJlIHVzZWQgZm9yIHRoZSBjdXJyZW50IGVsZW1lbnQuIFRoZXJlIGFyZSB0d28gdHlwZSBvZiBzbmFwLXBvaW50cywgd2l0aCB0aGUgcHJpbWFyeSBkaWZmZXJlbmNlIGJlaW5nIHdoZXRoZXIgb3Igbm90IHRoZSB1c2VyIGlzIGd1YXJhbnRlZWQgdG8gYWx3YXlzIHN0b3Agb24gYSBzbmFwLXBvaW50LiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiLW1zLXNjcm9sbC1zbmFwLXgiLGJyb3dzZXJzOlsiRSIsIklFMTAiXSx2YWx1ZXM6W3tuYW1lOiJtYW5kYXRvcnkifSx7bmFtZToibm9uZSJ9LHtuYW1lOiJwcm94aW1pdHkifSx7bmFtZToic25hcEludGVydmFsKDEwMCUsIDEwMCUpIn0se25hbWU6InNuYXBMaXN0KCkifV0sc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiI8Jy1tcy1zY3JvbGwtc25hcC10eXBlJz4gPCctbXMtc2Nyb2xsLXNuYXAtcG9pbnRzLXgnPiIscmVsZXZhbmNlOjAsZGVzY3JpcHRpb246IkdldHMgb3Igc2V0cyBhIHNob3J0aGFuZCB2YWx1ZSB0aGF0IHNldHMgdmFsdWVzIGZvciB0aGUgLW1zLXNjcm9sbC1zbmFwLXR5cGUgYW5kIC1tcy1zY3JvbGwtc25hcC1wb2ludHMteCBwcm9wZXJ0aWVzLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiLW1zLXNjcm9sbC1zbmFwLXkiLGJyb3dzZXJzOlsiRSIsIklFMTAiXSx2YWx1ZXM6W3tuYW1lOiJtYW5kYXRvcnkifSx7bmFtZToibm9uZSJ9LHtuYW1lOiJwcm94aW1pdHkifSx7bmFtZToic25hcEludGVydmFsKDEwMCUsIDEwMCUpIn0se25hbWU6InNuYXBMaXN0KCkifV0sc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiI8Jy1tcy1zY3JvbGwtc25hcC10eXBlJz4gPCctbXMtc2Nyb2xsLXNuYXAtcG9pbnRzLXknPiIscmVsZXZhbmNlOjAsZGVzY3JpcHRpb246IkdldHMgb3Igc2V0cyBhIHNob3J0aGFuZCB2YWx1ZSB0aGF0IHNldHMgdmFsdWVzIGZvciB0aGUgLW1zLXNjcm9sbC1zbmFwLXR5cGUgYW5kIC1tcy1zY3JvbGwtc25hcC1wb2ludHMteSBwcm9wZXJ0aWVzLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiLW1zLXNjcm9sbC10cmFuc2xhdGlvbiIsYnJvd3NlcnM6WyJFIiwiSUUxMCJdLHZhbHVlczpbe25hbWU6Im5vbmUifSx7bmFtZToidmVydGljYWwtdG8taG9yaXpvbnRhbCJ9XSxzdGF0dXM6Im5vbnN0YW5kYXJkIixzeW50YXg6Im5vbmUgfCB2ZXJ0aWNhbC10by1ob3Jpem9udGFsIixyZWxldmFuY2U6MCxkZXNjcmlwdGlvbjoiR2V0cyBvciBzZXRzIGEgdmFsdWUgdGhhdCBzcGVjaWZpZXMgd2hldGhlciB2ZXJ0aWNhbC10by1ob3Jpem9udGFsIHNjcm9sbCB3aGVlbCB0cmFuc2xhdGlvbiBvY2N1cnMgb24gdGhlIHNwZWNpZmllZCBlbGVtZW50LiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiLW1zLXRleHQtYWxpZ24tbGFzdCIsYnJvd3NlcnM6WyJFIiwiSUU4Il0sdmFsdWVzOlt7bmFtZToiYXV0byJ9LHtuYW1lOiJjZW50ZXIiLGRlc2NyaXB0aW9uOiJUaGUgaW5saW5lIGNvbnRlbnRzIGFyZSBjZW50ZXJlZCB3aXRoaW4gdGhlIGxpbmUgYm94LiJ9LHtuYW1lOiJqdXN0aWZ5IixkZXNjcmlwdGlvbjoiVGhlIHRleHQgaXMganVzdGlmaWVkIGFjY29yZGluZyB0byB0aGUgbWV0aG9kIHNwZWNpZmllZCBieSB0aGUgJ3RleHQtanVzdGlmeScgcHJvcGVydHkuIn0se25hbWU6ImxlZnQiLGRlc2NyaXB0aW9uOiJUaGUgaW5saW5lIGNvbnRlbnRzIGFyZSBhbGlnbmVkIHRvIHRoZSBsZWZ0IGVkZ2Ugb2YgdGhlIGxpbmUgYm94LiBJbiB2ZXJ0aWNhbCB0ZXh0LCAnbGVmdCcgYWxpZ25zIHRvIHRoZSBlZGdlIG9mIHRoZSBsaW5lIGJveCB0aGF0IHdvdWxkIGJlIHRoZSBzdGFydCBlZGdlIGZvciBsZWZ0LXRvLXJpZ2h0IHRleHQuIn0se25hbWU6InJpZ2h0IixkZXNjcmlwdGlvbjoiVGhlIGlubGluZSBjb250ZW50cyBhcmUgYWxpZ25lZCB0byB0aGUgcmlnaHQgZWRnZSBvZiB0aGUgbGluZSBib3guIEluIHZlcnRpY2FsIHRleHQsICdyaWdodCcgYWxpZ25zIHRvIHRoZSBlZGdlIG9mIHRoZSBsaW5lIGJveCB0aGF0IHdvdWxkIGJlIHRoZSBlbmQgZWRnZSBmb3IgbGVmdC10by1yaWdodCB0ZXh0LiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkRlc2NyaWJlcyBob3cgdGhlIGxhc3QgbGluZSBvZiBhIGJsb2NrIG9yIGEgbGluZSByaWdodCBiZWZvcmUgYSBmb3JjZWQgbGluZSBicmVhayBpcyBhbGlnbmVkIHdoZW4gJ3RleHQtYWxpZ24nIGlzIHNldCB0byAnanVzdGlmeScuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiItbXMtdGV4dC1hdXRvc3BhY2UiLGJyb3dzZXJzOlsiRSIsIklFOCJdLHZhbHVlczpbe25hbWU6ImlkZW9ncmFwaC1hbHBoYSIsZGVzY3JpcHRpb246IkNyZWF0ZXMgMS80ZW0gZXh0cmEgc3BhY2luZyBiZXR3ZWVuIHJ1bnMgb2YgaWRlb2dyYXBoaWMgbGV0dGVycyBhbmQgbm9uLWlkZW9ncmFwaGljIGxldHRlcnMsIHN1Y2ggYXMgTGF0aW4tYmFzZWQsIEN5cmlsbGljLCBHcmVlaywgQXJhYmljIG9yIEhlYnJldy4ifSx7bmFtZToiaWRlb2dyYXBoLW51bWVyaWMiLGRlc2NyaXB0aW9uOiJDcmVhdGVzIDEvNGVtIGV4dHJhIHNwYWNpbmcgYmV0d2VlbiBydW5zIG9mIGlkZW9ncmFwaGljIGxldHRlcnMgYW5kIG51bWVyaWMgZ2x5cGhzLiJ9LHtuYW1lOiJpZGVvZ3JhcGgtcGFyZW50aGVzaXMiLGRlc2NyaXB0aW9uOiJDcmVhdGVzIGV4dHJhIHNwYWNpbmcgYmV0d2VlbiBub3JtYWwgKG5vbiB3aWRlKSBwYXJlbnRoZXNpcyBhbmQgaWRlb2dyYXBocy4ifSx7bmFtZToiaWRlb2dyYXBoLXNwYWNlIixkZXNjcmlwdGlvbjoiRXh0ZW5kcyB0aGUgd2lkdGggb2YgdGhlIHNwYWNlIGNoYXJhY3RlciB3aGlsZSBzdXJyb3VuZGVkIGJ5IGlkZW9ncmFwaHMuIn0se25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJObyBleHRyYSBzcGFjZSBpcyBjcmVhdGVkLiJ9LHtuYW1lOiJwdW5jdHVhdGlvbiIsZGVzY3JpcHRpb246IkNyZWF0ZXMgZXh0cmEgbm9uLWJyZWFraW5nIHNwYWNpbmcgYXJvdW5kIHB1bmN0dWF0aW9uIGFzIHJlcXVpcmVkIGJ5IGxhbmd1YWdlLXNwZWNpZmljIHR5cG9ncmFwaGljIGNvbnZlbnRpb25zLiJ9XSxzdGF0dXM6Im5vbnN0YW5kYXJkIixzeW50YXg6Im5vbmUgfCBpZGVvZ3JhcGgtYWxwaGEgfCBpZGVvZ3JhcGgtbnVtZXJpYyB8IGlkZW9ncmFwaC1wYXJlbnRoZXNpcyB8IGlkZW9ncmFwaC1zcGFjZSIscmVsZXZhbmNlOjAsZGVzY3JpcHRpb246IkRldGVybWluZXMgd2hldGhlciBvciBub3QgYSBmdWxsLXdpZHRoIHB1bmN0dWF0aW9uIG1hcmsgY2hhcmFjdGVyIHNob3VsZCBiZSB0cmltbWVkIGlmIGl0IGFwcGVhcnMgYXQgdGhlIGJlZ2lubmluZyBvZiBhIGxpbmUsIHNvIHRoYXQgaXRzICdpbmsnIGxpbmVzIHVwIHdpdGggdGhlIGZpcnN0IGdseXBoIGluIHRoZSBsaW5lIGFib3ZlIGFuZCBiZWxvdy4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii1tcy10ZXh0LWNvbWJpbmUtaG9yaXpvbnRhbCIsYnJvd3NlcnM6WyJFIiwiSUUxMSJdLHZhbHVlczpbe25hbWU6ImFsbCIsZGVzY3JpcHRpb246IkF0dGVtcHQgdG8gdHlwZXNldCBob3Jpem9udGFsbHkgYWxsIGNvbnNlY3V0aXZlIGNoYXJhY3RlcnMgd2l0aGluIHRoZSBib3ggc3VjaCB0aGF0IHRoZXkgdGFrZSB1cCB0aGUgc3BhY2Ugb2YgYSBzaW5nbGUgY2hhcmFjdGVyIHdpdGhpbiB0aGUgdmVydGljYWwgbGluZSBib3guIn0se25hbWU6ImRpZ2l0cyIsZGVzY3JpcHRpb246IkF0dGVtcHQgdG8gdHlwZXNldCBob3Jpem9udGFsbHkgZWFjaCBtYXhpbWFsIHNlcXVlbmNlIG9mIGNvbnNlY3V0aXZlIEFTQ0lJIGRpZ2l0cyAoVSswMDMwLVUrMDAzOSkgdGhhdCBoYXMgYXMgbWFueSBvciBmZXdlciBjaGFyYWN0ZXJzIHRoYW4gdGhlIHNwZWNpZmllZCBpbnRlZ2VyIHN1Y2ggdGhhdCBpdCB0YWtlcyB1cCB0aGUgc3BhY2Ugb2YgYSBzaW5nbGUgY2hhcmFjdGVyIHdpdGhpbiB0aGUgdmVydGljYWwgbGluZSBib3guIn0se25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJObyBzcGVjaWFsIHByb2Nlc3NpbmcuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiVGhpcyBwcm9wZXJ0eSBzcGVjaWZpZXMgdGhlIGNvbWJpbmF0aW9uIG9mIG11bHRpcGxlIGNoYXJhY3RlcnMgaW50byB0aGUgc3BhY2Ugb2YgYSBzaW5nbGUgY2hhcmFjdGVyLiIscmVzdHJpY3Rpb25zOlsiZW51bSIsImludGVnZXIiXX0se25hbWU6Ii1tcy10ZXh0LWp1c3RpZnkiLGJyb3dzZXJzOlsiRSIsIklFOCJdLHZhbHVlczpbe25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJUaGUgVUEgZGV0ZXJtaW5lcyB0aGUganVzdGlmaWNhdGlvbiBhbGdvcml0aG0gdG8gZm9sbG93LCBiYXNlZCBvbiBhIGJhbGFuY2UgYmV0d2VlbiBwZXJmb3JtYW5jZSBhbmQgYWRlcXVhdGUgcHJlc2VudGF0aW9uIHF1YWxpdHkuIn0se25hbWU6ImRpc3RyaWJ1dGUiLGRlc2NyaXB0aW9uOiJKdXN0aWZpY2F0aW9uIHByaW1hcmlseSBjaGFuZ2VzIHNwYWNpbmcgYm90aCBhdCB3b3JkIHNlcGFyYXRvcnMgYW5kIGF0IGdyYXBoZW1lIGNsdXN0ZXIgYm91bmRhcmllcyBpbiBhbGwgc2NyaXB0cyBleGNlcHQgdGhvc2UgaW4gdGhlIGNvbm5lY3RlZCBhbmQgY3Vyc2l2ZSBncm91cHMuIFRoaXMgdmFsdWUgaXMgc29tZXRpbWVzIHVzZWQgaW4gZS5nLiBKYXBhbmVzZSwgb2Z0ZW4gd2l0aCB0aGUgJ3RleHQtYWxpZ24tbGFzdCcgcHJvcGVydHkuIn0se25hbWU6ImludGVyLWNsdXN0ZXIiLGRlc2NyaXB0aW9uOiJKdXN0aWZpY2F0aW9uIHByaW1hcmlseSBjaGFuZ2VzIHNwYWNpbmcgYXQgd29yZCBzZXBhcmF0b3JzIGFuZCBhdCBncmFwaGVtZSBjbHVzdGVyIGJvdW5kYXJpZXMgaW4gY2x1c3RlcmVkIHNjcmlwdHMuIFRoaXMgdmFsdWUgaXMgdHlwaWNhbGx5IHVzZWQgZm9yIFNvdXRoZWFzdCBBc2lhbiBzY3JpcHRzIHN1Y2ggYXMgVGhhaS4ifSx7bmFtZToiaW50ZXItaWRlb2dyYXBoIixkZXNjcmlwdGlvbjoiSnVzdGlmaWNhdGlvbiBwcmltYXJpbHkgY2hhbmdlcyBzcGFjaW5nIGF0IHdvcmQgc2VwYXJhdG9ycyBhbmQgYXQgaW50ZXItZ3JhcGhlbWljIGJvdW5kYXJpZXMgaW4gc2NyaXB0cyB0aGF0IHVzZSBubyB3b3JkIHNwYWNlcy4gVGhpcyB2YWx1ZSBpcyB0eXBpY2FsbHkgdXNlZCBmb3IgQ0pLIGxhbmd1YWdlcy4ifSx7bmFtZToiaW50ZXItd29yZCIsZGVzY3JpcHRpb246Ikp1c3RpZmljYXRpb24gcHJpbWFyaWx5IGNoYW5nZXMgc3BhY2luZyBhdCB3b3JkIHNlcGFyYXRvcnMuIFRoaXMgdmFsdWUgaXMgdHlwaWNhbGx5IHVzZWQgZm9yIGxhbmd1YWdlcyB0aGF0IHNlcGFyYXRlIHdvcmRzIHVzaW5nIHNwYWNlcywgbGlrZSBFbmdsaXNoIG9yIChzb21ldGltZXMpIEtvcmVhbi4ifSx7bmFtZToia2FzaGlkYSIsZGVzY3JpcHRpb246Ikp1c3RpZmljYXRpb24gcHJpbWFyaWx5IHN0cmV0Y2hlcyBBcmFiaWMgYW5kIHJlbGF0ZWQgc2NyaXB0cyB0aHJvdWdoIHRoZSB1c2Ugb2Yga2FzaGlkYSBvciBvdGhlciBjYWxsaWdyYXBoaWMgZWxvbmdhdGlvbi4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJTZWxlY3RzIHRoZSBqdXN0aWZpY2F0aW9uIGFsZ29yaXRobSB1c2VkIHdoZW4gJ3RleHQtYWxpZ24nIGlzIHNldCB0byAnanVzdGlmeScuIFRoZSBwcm9wZXJ0eSBhcHBsaWVzIHRvIGJsb2NrIGNvbnRhaW5lcnMsIGJ1dCB0aGUgVUEgbWF5IChidXQgaXMgbm90IHJlcXVpcmVkIHRvKSBhbHNvIHN1cHBvcnQgaXQgb24gaW5saW5lIGVsZW1lbnRzLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiLW1zLXRleHQta2FzaGlkYS1zcGFjZSIsYnJvd3NlcnM6WyJFIiwiSUUxMCJdLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiU2V0cyBvciByZXRyaWV2ZXMgdGhlIHJhdGlvIG9mIGthc2hpZGEgZXhwYW5zaW9uIHRvIHdoaXRlIHNwYWNlIGV4cGFuc2lvbiB3aGVuIGp1c3RpZnlpbmcgbGluZXMgb2YgdGV4dCBpbiB0aGUgb2JqZWN0LiIscmVzdHJpY3Rpb25zOlsicGVyY2VudGFnZSJdfSx7bmFtZToiLW1zLXRleHQtb3ZlcmZsb3ciLGJyb3dzZXJzOlsiSUUxMCJdLHZhbHVlczpbe25hbWU6ImNsaXAiLGRlc2NyaXB0aW9uOiJDbGlwIGlubGluZSBjb250ZW50IHRoYXQgb3ZlcmZsb3dzLiBDaGFyYWN0ZXJzIG1heSBiZSBvbmx5IHBhcnRpYWxseSByZW5kZXJlZC4ifSx7bmFtZToiZWxsaXBzaXMiLGRlc2NyaXB0aW9uOiJSZW5kZXIgYW4gZWxsaXBzaXMgY2hhcmFjdGVyIChVKzIwMjYpIHRvIHJlcHJlc2VudCBjbGlwcGVkIGlubGluZSBjb250ZW50LiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlRleHQgY2FuIG92ZXJmbG93IGZvciBleGFtcGxlIHdoZW4gaXQgaXMgcHJldmVudGVkIGZyb20gd3JhcHBpbmciLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii1tcy10ZXh0LXNpemUtYWRqdXN0Iixicm93c2VyczpbIkUiLCJJRTEwIl0sdmFsdWVzOlt7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IlJlbmRlcmVycyBtdXN0IHVzZSB0aGUgZGVmYXVsdCBzaXplIGFkanVzdG1lbnQgd2hlbiBkaXNwbGF5aW5nIG9uIGEgc21hbGwgZGV2aWNlLiJ9LHtuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiUmVuZGVyZXJzIG11c3Qgbm90IGRvIHNpemUgYWRqdXN0bWVudCB3aGVuIGRpc3BsYXlpbmcgb24gYSBzbWFsbCBkZXZpY2UuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgc2l6ZSBhZGp1c3RtZW50IGZvciBkaXNwbGF5aW5nIHRleHQgY29udGVudCBpbiBtb2JpbGUgYnJvd3NlcnMuIixyZXN0cmljdGlvbnM6WyJlbnVtIiwicGVyY2VudGFnZSJdfSx7bmFtZToiLW1zLXRleHQtdW5kZXJsaW5lLXBvc2l0aW9uIixicm93c2VyczpbIkUiLCJJRTEwIl0sdmFsdWVzOlt7bmFtZToiYWxwaGFiZXRpYyIsZGVzY3JpcHRpb246IlRoZSB1bmRlcmxpbmUgaXMgYWxpZ25lZCB3aXRoIHRoZSBhbHBoYWJldGljIGJhc2VsaW5lLiBJbiB0aGlzIGNhc2UgdGhlIHVuZGVybGluZSBpcyBsaWtlbHkgdG8gY3Jvc3Mgc29tZSBkZXNjZW5kZXJzLiJ9LHtuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiVGhlIHVzZXIgYWdlbnQgbWF5IHVzZSBhbnkgYWxnb3JpdGhtIHRvIGRldGVybWluZSB0aGUgdW5kZXJsaW5lJ3MgcG9zaXRpb24uIEluIGhvcml6b250YWwgbGluZSBsYXlvdXQsIHRoZSB1bmRlcmxpbmUgc2hvdWxkIGJlIGFsaWduZWQgYXMgZm9yIGFscGhhYmV0aWMuIEluIHZlcnRpY2FsIGxpbmUgbGF5b3V0LCBpZiB0aGUgbGFuZ3VhZ2UgaXMgc2V0IHRvIEphcGFuZXNlIG9yIEtvcmVhbiwgdGhlIHVuZGVybGluZSBzaG91bGQgYmUgYWxpZ25lZCBhcyBmb3Igb3Zlci4ifSx7bmFtZToib3ZlciIsZGVzY3JpcHRpb246IlRoZSB1bmRlcmxpbmUgaXMgYWxpZ25lZCB3aXRoIHRoZSAndG9wJyAocmlnaHQgaW4gdmVydGljYWwgd3JpdGluZykgZWRnZSBvZiB0aGUgZWxlbWVudCdzIGVtLWJveC4gSW4gdGhpcyBtb2RlLCBhbiBvdmVybGluZSBhbHNvIHN3aXRjaGVzIHNpZGVzLiJ9LHtuYW1lOiJ1bmRlciIsZGVzY3JpcHRpb246IlRoZSB1bmRlcmxpbmUgaXMgYWxpZ25lZCB3aXRoIHRoZSAnYm90dG9tJyAobGVmdCBpbiB2ZXJ0aWNhbCB3cml0aW5nKSBlZGdlIG9mIHRoZSBlbGVtZW50J3MgZW0tYm94LiBJbiB0aGlzIGNhc2UgdGhlIHVuZGVybGluZSB1c3VhbGx5IGRvZXMgbm90IGNyb3NzIHRoZSBkZXNjZW5kZXJzLiBUaGlzIGlzIHNvbWV0aW1lcyBjYWxsZWQgJ2FjY291bnRpbmcnIHVuZGVybGluZS4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJTZXRzIHRoZSBwb3NpdGlvbiBvZiBhbiB1bmRlcmxpbmUgc3BlY2lmaWVkIG9uIHRoZSBzYW1lIGVsZW1lbnQ6IGl0IGRvZXMgbm90IGFmZmVjdCB1bmRlcmxpbmVzIHNwZWNpZmllZCBieSBhbmNlc3RvciBlbGVtZW50cy5UaGlzIHByb3BlcnR5IGlzIHR5cGljYWxseSB1c2VkIGluIHZlcnRpY2FsIHdyaXRpbmcgY29udGV4dHMgc3VjaCBhcyBpbiBKYXBhbmVzZSBkb2N1bWVudHMgd2hlcmUgaXQgb2Z0ZW4gZGVzaXJlZCB0byBoYXZlIHRoZSB1bmRlcmxpbmUgYXBwZWFyICdvdmVyJyAodG8gdGhlIHJpZ2h0IG9mKSB0aGUgYWZmZWN0ZWQgcnVuIG9mIHRleHQiLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii1tcy10b3VjaC1hY3Rpb24iLGJyb3dzZXJzOlsiSUUxMCJdLHZhbHVlczpbe25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJUaGUgZWxlbWVudCBpcyBhIHBhc3NpdmUgZWxlbWVudCwgd2l0aCBzZXZlcmFsIGV4Y2VwdGlvbnMuIn0se25hbWU6ImRvdWJsZS10YXAtem9vbSIsZGVzY3JpcHRpb246IlRoZSBlbGVtZW50IHdpbGwgem9vbSBvbiBkb3VibGUtdGFwLiJ9LHtuYW1lOiJtYW5pcHVsYXRpb24iLGRlc2NyaXB0aW9uOiJUaGUgZWxlbWVudCBpcyBhIG1hbmlwdWxhdGlvbi1jYXVzaW5nIGVsZW1lbnQuIn0se25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJUaGUgZWxlbWVudCBpcyBhIG1hbmlwdWxhdGlvbi1ibG9ja2luZyBlbGVtZW50LiJ9LHtuYW1lOiJwYW4teCIsZGVzY3JpcHRpb246IlRoZSBlbGVtZW50IHBlcm1pdHMgdG91Y2gtZHJpdmVuIHBhbm5pbmcgb24gdGhlIGhvcml6b250YWwgYXhpcy4gVGhlIHRvdWNoIHBhbiBpcyBwZXJmb3JtZWQgb24gdGhlIG5lYXJlc3QgYW5jZXN0b3Igd2l0aCBob3Jpem9udGFsbHkgc2Nyb2xsYWJsZSBjb250ZW50LiJ9LHtuYW1lOiJwYW4teSIsZGVzY3JpcHRpb246IlRoZSBlbGVtZW50IHBlcm1pdHMgdG91Y2gtZHJpdmVuIHBhbm5pbmcgb24gdGhlIHZlcnRpY2FsIGF4aXMuIFRoZSB0b3VjaCBwYW4gaXMgcGVyZm9ybWVkIG9uIHRoZSBuZWFyZXN0IGFuY2VzdG9yIHdpdGggdmVydGljYWxseSBzY3JvbGxhYmxlIGNvbnRlbnQuIn0se25hbWU6InBpbmNoLXpvb20iLGRlc2NyaXB0aW9uOiJUaGUgZWxlbWVudCBwZXJtaXRzIHBpbmNoLXpvb21pbmcuIFRoZSBwaW5jaC16b29tIGlzIHBlcmZvcm1lZCBvbiB0aGUgbmVhcmVzdCBhbmNlc3RvciB3aXRoIHpvb21hYmxlIGNvbnRlbnQuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiR2V0cyBvciBzZXRzIGEgdmFsdWUgdGhhdCBpbmRpY2F0ZXMgd2hldGhlciBhbmQgaG93IGEgZ2l2ZW4gcmVnaW9uIGNhbiBiZSBtYW5pcHVsYXRlZCBieSB0aGUgdXNlci4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii1tcy10b3VjaC1zZWxlY3QiLGJyb3dzZXJzOlsiRSIsIklFMTAiXSx2YWx1ZXM6W3tuYW1lOiJncmlwcGVycyIsZGVzY3JpcHRpb246IkdyaXBwZXJzIGFyZSBhbHdheXMgb24uIn0se25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJHcmlwcGVycyBhcmUgYWx3YXlzIG9mZi4ifV0sc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiJncmlwcGVycyB8IG5vbmUiLHJlbGV2YW5jZTowLGRlc2NyaXB0aW9uOiJHZXRzIG9yIHNldHMgYSB2YWx1ZSB0aGF0IHRvZ2dsZXMgdGhlICdncmlwcGVyJyB2aXN1YWwgZWxlbWVudHMgdGhhdCBlbmFibGUgdG91Y2ggdGV4dCBzZWxlY3Rpb24uIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiItbXMtdHJhbnNmb3JtIixicm93c2VyczpbIklFOS05Il0sdmFsdWVzOlt7bmFtZToibWF0cml4KCkiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSAyRCB0cmFuc2Zvcm1hdGlvbiBpbiB0aGUgZm9ybSBvZiBhIHRyYW5zZm9ybWF0aW9uIG1hdHJpeCBvZiBzaXggdmFsdWVzLiBtYXRyaXgoYSxiLGMsZCxlLGYpIGlzIGVxdWl2YWxlbnQgdG8gYXBwbHlpbmcgdGhlIHRyYW5zZm9ybWF0aW9uIG1hdHJpeCBbYSBiIGMgZCBlIGZdIn0se25hbWU6Im1hdHJpeDNkKCkiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSAzRCB0cmFuc2Zvcm1hdGlvbiBhcyBhIDR4NCBob21vZ2VuZW91cyBtYXRyaXggb2YgMTYgdmFsdWVzIGluIGNvbHVtbi1tYWpvciBvcmRlci4ifSx7bmFtZToibm9uZSJ9LHtuYW1lOiJyb3RhdGUoKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIDJEIHJvdGF0aW9uIGJ5IHRoZSBhbmdsZSBzcGVjaWZpZWQgaW4gdGhlIHBhcmFtZXRlciBhYm91dCB0aGUgb3JpZ2luIG9mIHRoZSBlbGVtZW50LCBhcyBkZWZpbmVkIGJ5IHRoZSB0cmFuc2Zvcm0tb3JpZ2luIHByb3BlcnR5LiJ9LHtuYW1lOiJyb3RhdGUzZCgpIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgY2xvY2t3aXNlIDNEIHJvdGF0aW9uIGJ5IHRoZSBhbmdsZSBzcGVjaWZpZWQgaW4gbGFzdCBwYXJhbWV0ZXIgYWJvdXQgdGhlIFt4LHksel0gZGlyZWN0aW9uIHZlY3RvciBkZXNjcmliZWQgYnkgdGhlIGZpcnN0IDMgcGFyYW1ldGVycy4ifSx7bmFtZToicm90YXRlWCgnYW5nbGUnKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIGNsb2Nrd2lzZSByb3RhdGlvbiBieSB0aGUgZ2l2ZW4gYW5nbGUgYWJvdXQgdGhlIFggYXhpcy4ifSx7bmFtZToicm90YXRlWSgnYW5nbGUnKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIGNsb2Nrd2lzZSByb3RhdGlvbiBieSB0aGUgZ2l2ZW4gYW5nbGUgYWJvdXQgdGhlIFkgYXhpcy4ifSx7bmFtZToicm90YXRlWignYW5nbGUnKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIGNsb2Nrd2lzZSByb3RhdGlvbiBieSB0aGUgZ2l2ZW4gYW5nbGUgYWJvdXQgdGhlIFogYXhpcy4ifSx7bmFtZToic2NhbGUoKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIDJEIHNjYWxlIG9wZXJhdGlvbiBieSB0aGUgW3N4LHN5XSBzY2FsaW5nIHZlY3RvciBkZXNjcmliZWQgYnkgdGhlIDIgcGFyYW1ldGVycy4gSWYgdGhlIHNlY29uZCBwYXJhbWV0ZXIgaXMgbm90IHByb3ZpZGVkLCBpdCBpcyB0YWtlcyBhIHZhbHVlIGVxdWFsIHRvIHRoZSBmaXJzdC4ifSx7bmFtZToic2NhbGUzZCgpIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgM0Qgc2NhbGUgb3BlcmF0aW9uIGJ5IHRoZSBbc3gsc3ksc3pdIHNjYWxpbmcgdmVjdG9yIGRlc2NyaWJlZCBieSB0aGUgMyBwYXJhbWV0ZXJzLiJ9LHtuYW1lOiJzY2FsZVgoKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIHNjYWxlIG9wZXJhdGlvbiB1c2luZyB0aGUgW3N4LDFdIHNjYWxpbmcgdmVjdG9yLCB3aGVyZSBzeCBpcyBnaXZlbiBhcyB0aGUgcGFyYW1ldGVyLiJ9LHtuYW1lOiJzY2FsZVkoKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIHNjYWxlIG9wZXJhdGlvbiB1c2luZyB0aGUgW3N5LDFdIHNjYWxpbmcgdmVjdG9yLCB3aGVyZSBzeSBpcyBnaXZlbiBhcyB0aGUgcGFyYW1ldGVyLiJ9LHtuYW1lOiJzY2FsZVooKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIHNjYWxlIG9wZXJhdGlvbiB1c2luZyB0aGUgWzEsMSxzel0gc2NhbGluZyB2ZWN0b3IsIHdoZXJlIHN6IGlzIGdpdmVuIGFzIHRoZSBwYXJhbWV0ZXIuIn0se25hbWU6InNrZXcoKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIHNrZXcgdHJhbnNmb3JtYXRpb24gYWxvbmcgdGhlIFggYW5kIFkgYXhlcy4gVGhlIGZpcnN0IGFuZ2xlIHBhcmFtZXRlciBzcGVjaWZpZXMgdGhlIHNrZXcgb24gdGhlIFggYXhpcy4gVGhlIHNlY29uZCBhbmdsZSBwYXJhbWV0ZXIgc3BlY2lmaWVzIHRoZSBza2V3IG9uIHRoZSBZIGF4aXMuIElmIHRoZSBzZWNvbmQgcGFyYW1ldGVyIGlzIG5vdCBnaXZlbiB0aGVuIGEgdmFsdWUgb2YgMCBpcyB1c2VkIGZvciB0aGUgWSBhbmdsZSAoaWU6IG5vIHNrZXcgb24gdGhlIFkgYXhpcykuIn0se25hbWU6InNrZXdYKCkiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSBza2V3IHRyYW5zZm9ybWF0aW9uIGFsb25nIHRoZSBYIGF4aXMgYnkgdGhlIGdpdmVuIGFuZ2xlLiJ9LHtuYW1lOiJza2V3WSgpIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgc2tldyB0cmFuc2Zvcm1hdGlvbiBhbG9uZyB0aGUgWSBheGlzIGJ5IHRoZSBnaXZlbiBhbmdsZS4ifSx7bmFtZToidHJhbnNsYXRlKCkiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSAyRCB0cmFuc2xhdGlvbiBieSB0aGUgdmVjdG9yIFt0eCwgdHldLCB3aGVyZSB0eCBpcyB0aGUgZmlyc3QgdHJhbnNsYXRpb24tdmFsdWUgcGFyYW1ldGVyIGFuZCB0eSBpcyB0aGUgb3B0aW9uYWwgc2Vjb25kIHRyYW5zbGF0aW9uLXZhbHVlIHBhcmFtZXRlci4ifSx7bmFtZToidHJhbnNsYXRlM2QoKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIDNEIHRyYW5zbGF0aW9uIGJ5IHRoZSB2ZWN0b3IgW3R4LHR5LHR6XSwgd2l0aCB0eCwgdHkgYW5kIHR6IGJlaW5nIHRoZSBmaXJzdCwgc2Vjb25kIGFuZCB0aGlyZCB0cmFuc2xhdGlvbi12YWx1ZSBwYXJhbWV0ZXJzIHJlc3BlY3RpdmVseS4ifSx7bmFtZToidHJhbnNsYXRlWCgpIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgdHJhbnNsYXRpb24gYnkgdGhlIGdpdmVuIGFtb3VudCBpbiB0aGUgWCBkaXJlY3Rpb24uIn0se25hbWU6InRyYW5zbGF0ZVkoKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIHRyYW5zbGF0aW9uIGJ5IHRoZSBnaXZlbiBhbW91bnQgaW4gdGhlIFkgZGlyZWN0aW9uLiJ9LHtuYW1lOiJ0cmFuc2xhdGVaKCkiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSB0cmFuc2xhdGlvbiBieSB0aGUgZ2l2ZW4gYW1vdW50IGluIHRoZSBaIGRpcmVjdGlvbi4gTm90ZSB0aGF0IHBlcmNlbnRhZ2UgdmFsdWVzIGFyZSBub3QgYWxsb3dlZCBpbiB0aGUgdHJhbnNsYXRlWiB0cmFuc2xhdGlvbi12YWx1ZSwgYW5kIGlmIHByZXNlbnQgYXJlIGV2YWx1YXRlZCBhcyAwLiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkEgdHdvLWRpbWVuc2lvbmFsIHRyYW5zZm9ybWF0aW9uIGlzIGFwcGxpZWQgdG8gYW4gZWxlbWVudCB0aHJvdWdoIHRoZSAndHJhbnNmb3JtJyBwcm9wZXJ0eS4gVGhpcyBwcm9wZXJ0eSBjb250YWlucyBhIGxpc3Qgb2YgdHJhbnNmb3JtIGZ1bmN0aW9ucyBzaW1pbGFyIHRvIHRob3NlIGFsbG93ZWQgYnkgU1ZHLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiLW1zLXRyYW5zZm9ybS1vcmlnaW4iLGJyb3dzZXJzOlsiSUU5LTkiXSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkVzdGFibGlzaGVzIHRoZSBvcmlnaW4gb2YgdHJhbnNmb3JtYXRpb24gZm9yIGFuIGVsZW1lbnQuIixyZXN0cmljdGlvbnM6WyJwb3NpdGlvbiIsImxlbmd0aCIsInBlcmNlbnRhZ2UiXX0se25hbWU6Ii1tcy10cmFuc2Zvcm0tb3JpZ2luLXgiLGJyb3dzZXJzOlsiSUUxMCJdLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiVGhlIHggY29vcmRpbmF0ZSBvZiB0aGUgb3JpZ2luIGZvciB0cmFuc2Zvcm1zIGFwcGxpZWQgdG8gYW4gZWxlbWVudCB3aXRoIHJlc3BlY3QgdG8gaXRzIGJvcmRlciBib3guIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJwZXJjZW50YWdlIl19LHtuYW1lOiItbXMtdHJhbnNmb3JtLW9yaWdpbi15Iixicm93c2VyczpbIklFMTAiXSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlRoZSB5IGNvb3JkaW5hdGUgb2YgdGhlIG9yaWdpbiBmb3IgdHJhbnNmb3JtcyBhcHBsaWVkIHRvIGFuIGVsZW1lbnQgd2l0aCByZXNwZWN0IHRvIGl0cyBib3JkZXIgYm94LiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwicGVyY2VudGFnZSJdfSx7bmFtZToiLW1zLXRyYW5zZm9ybS1vcmlnaW4teiIsYnJvd3NlcnM6WyJJRTEwIl0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJUaGUgeiBjb29yZGluYXRlIG9mIHRoZSBvcmlnaW4gZm9yIHRyYW5zZm9ybXMgYXBwbGllZCB0byBhbiBlbGVtZW50IHdpdGggcmVzcGVjdCB0byBpdHMgYm9yZGVyIGJveC4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsInBlcmNlbnRhZ2UiXX0se25hbWU6Ii1tcy11c2VyLXNlbGVjdCIsYnJvd3NlcnM6WyJFIiwiSUUxMCJdLHZhbHVlczpbe25hbWU6ImVsZW1lbnQifSx7bmFtZToibm9uZSJ9LHtuYW1lOiJ0ZXh0In1dLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoibm9uZSB8IGVsZW1lbnQgfCB0ZXh0IixyZWxldmFuY2U6MCxkZXNjcmlwdGlvbjoiQ29udHJvbHMgdGhlIGFwcGVhcmFuY2Ugb2Ygc2VsZWN0aW9uLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiLW1zLXdvcmQtYnJlYWsiLGJyb3dzZXJzOlsiSUU4Il0sdmFsdWVzOlt7bmFtZToiYnJlYWstYWxsIixkZXNjcmlwdGlvbjoiTGluZXMgbWF5IGJyZWFrIGJldHdlZW4gYW55IHR3byBncmFwaGVtZSBjbHVzdGVycyBmb3Igbm9uLUNKSyBzY3JpcHRzLiJ9LHtuYW1lOiJrZWVwLWFsbCIsZGVzY3JpcHRpb246IkJsb2NrIGNoYXJhY3RlcnMgY2FuIG5vIGxvbmdlciBjcmVhdGUgaW1wbGllZCBicmVhayBwb2ludHMuIn0se25hbWU6Im5vcm1hbCIsZGVzY3JpcHRpb246IkJyZWFrcyBub24tQ0pLIHNjcmlwdHMgYWNjb3JkaW5nIHRvIHRoZWlyIG93biBydWxlcy4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgbGluZSBicmVhayBvcHBvcnR1bml0aWVzIGZvciBub24tQ0pLIHNjcmlwdHMuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiItbXMtd29yZC13cmFwIixicm93c2VyczpbIklFOCJdLHZhbHVlczpbe25hbWU6ImJyZWFrLXdvcmQiLGRlc2NyaXB0aW9uOiJBbiB1bmJyZWFrYWJsZSAnd29yZCcgbWF5IGJlIGJyb2tlbiBhdCBhbiBhcmJpdHJhcnkgcG9pbnQgaWYgdGhlcmUgYXJlIG5vIG90aGVyd2lzZS1hY2NlcHRhYmxlIGJyZWFrIHBvaW50cyBpbiB0aGUgbGluZS4ifSx7bmFtZToibm9ybWFsIixkZXNjcmlwdGlvbjoiTGluZXMgbWF5IGJyZWFrIG9ubHkgYXQgYWxsb3dlZCBicmVhayBwb2ludHMuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIHdoZXRoZXIgdGhlIFVBIG1heSBicmVhayB3aXRoaW4gYSB3b3JkIHRvIHByZXZlbnQgb3ZlcmZsb3cgd2hlbiBhbiBvdGhlcndpc2UtdW5icmVha2FibGUgc3RyaW5nIGlzIHRvbyBsb25nIHRvIGZpdC4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii1tcy13cmFwLWZsb3ciLGJyb3dzZXJzOlsiRSIsIklFMTAiXSx2YWx1ZXM6W3tuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiRm9yIGZsb2F0cyBhbiBleGNsdXNpb24gaXMgY3JlYXRlZCwgZm9yIGFsbCBvdGhlciBlbGVtZW50cyBhbiBleGNsdXNpb24gaXMgbm90IGNyZWF0ZWQuIn0se25hbWU6ImJvdGgiLGRlc2NyaXB0aW9uOiJJbmxpbmUgZmxvdyBjb250ZW50IGNhbiBmbG93IG9uIGFsbCBzaWRlcyBvZiB0aGUgZXhjbHVzaW9uLiJ9LHtuYW1lOiJjbGVhciIsZGVzY3JpcHRpb246IklubGluZSBmbG93IGNvbnRlbnQgY2FuIG9ubHkgd3JhcCBvbiB0b3AgYW5kIGJvdHRvbSBvZiB0aGUgZXhjbHVzaW9uIGFuZCBtdXN0IGxlYXZlIHRoZSBhcmVhcyB0byB0aGUgc3RhcnQgYW5kIGVuZCBlZGdlcyBvZiB0aGUgZXhjbHVzaW9uIGJveCBlbXB0eS4ifSx7bmFtZToiZW5kIixkZXNjcmlwdGlvbjoiSW5saW5lIGZsb3cgY29udGVudCBjYW4gd3JhcCBvbiB0aGUgZW5kIHNpZGUgb2YgdGhlIGV4Y2x1c2lvbiBhcmVhIGJ1dCBtdXN0IGxlYXZlIHRoZSBhcmVhIHRvIHRoZSBzdGFydCBlZGdlIG9mIHRoZSBleGNsdXNpb24gYXJlYSBlbXB0eS4ifSx7bmFtZToibWF4aW11bSIsZGVzY3JpcHRpb246IklubGluZSBmbG93IGNvbnRlbnQgY2FuIHdyYXAgb24gdGhlIHNpZGUgb2YgdGhlIGV4Y2x1c2lvbiB3aXRoIHRoZSBsYXJnZXN0IGF2YWlsYWJsZSBzcGFjZSBmb3IgdGhlIGdpdmVuIGxpbmUsIGFuZCBtdXN0IGxlYXZlIHRoZSBvdGhlciBzaWRlIG9mIHRoZSBleGNsdXNpb24gZW1wdHkuIn0se25hbWU6Im1pbmltdW0iLGRlc2NyaXB0aW9uOiJJbmxpbmUgZmxvdyBjb250ZW50IGNhbiBmbG93IGFyb3VuZCB0aGUgZWRnZSBvZiB0aGUgZXhjbHVzaW9uIHdpdGggdGhlIHNtYWxsZXN0IGF2YWlsYWJsZSBzcGFjZSB3aXRoaW4gdGhlIGZsb3cgY29udGVudCdzIGNvbnRhaW5pbmcgYmxvY2ssIGFuZCBtdXN0IGxlYXZlIHRoZSBvdGhlciBlZGdlIG9mIHRoZSBleGNsdXNpb24gZW1wdHkuIn0se25hbWU6InN0YXJ0IixkZXNjcmlwdGlvbjoiSW5saW5lIGZsb3cgY29udGVudCBjYW4gd3JhcCBvbiB0aGUgc3RhcnQgZWRnZSBvZiB0aGUgZXhjbHVzaW9uIGFyZWEgYnV0IG11c3QgbGVhdmUgdGhlIGFyZWEgdG8gZW5kIGVkZ2Ugb2YgdGhlIGV4Y2x1c2lvbiBhcmVhIGVtcHR5LiJ9XSxzdGF0dXM6Im5vbnN0YW5kYXJkIixzeW50YXg6ImF1dG8gfCBib3RoIHwgc3RhcnQgfCBlbmQgfCBtYXhpbXVtIHwgY2xlYXIiLHJlbGV2YW5jZTowLGRlc2NyaXB0aW9uOiJBbiBlbGVtZW50IGJlY29tZXMgYW4gZXhjbHVzaW9uIHdoZW4gaXRzICd3cmFwLWZsb3cnIHByb3BlcnR5IGhhcyBhIGNvbXB1dGVkIHZhbHVlIG90aGVyIHRoYW4gJ2F1dG8nLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiLW1zLXdyYXAtbWFyZ2luIixicm93c2VyczpbIkUiLCJJRTEwIl0sc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiI8bGVuZ3RoPiIscmVsZXZhbmNlOjAsZGVzY3JpcHRpb246IkdldHMgb3Igc2V0cyBhIHZhbHVlIHRoYXQgaXMgdXNlZCB0byBvZmZzZXQgdGhlIGlubmVyIHdyYXAgc2hhcGUgZnJvbSBvdGhlciBzaGFwZXMuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJwZXJjZW50YWdlIl19LHtuYW1lOiItbXMtd3JhcC10aHJvdWdoIixicm93c2VyczpbIkUiLCJJRTEwIl0sdmFsdWVzOlt7bmFtZToibm9uZSIsZGVzY3JpcHRpb246IlRoZSBleGNsdXNpb24gZWxlbWVudCBkb2VzIG5vdCBpbmhlcml0IGl0cyBwYXJlbnQgbm9kZSdzIHdyYXBwaW5nIGNvbnRleHQuIEl0cyBkZXNjZW5kYW50cyBhcmUgb25seSBzdWJqZWN0IHRvIGV4Y2x1c2lvbiBzaGFwZXMgZGVmaW5lZCBpbnNpZGUgdGhlIGVsZW1lbnQuIn0se25hbWU6IndyYXAiLGRlc2NyaXB0aW9uOiJUaGUgZXhjbHVzaW9uIGVsZW1lbnQgaW5oZXJpdHMgaXRzIHBhcmVudCBub2RlJ3Mgd3JhcHBpbmcgY29udGV4dC4gSXRzIGRlc2NlbmRhbnQgaW5saW5lIGNvbnRlbnQgd3JhcHMgYXJvdW5kIGV4Y2x1c2lvbnMgZGVmaW5lZCBvdXRzaWRlIHRoZSBlbGVtZW50LiJ9XSxzdGF0dXM6Im5vbnN0YW5kYXJkIixzeW50YXg6IndyYXAgfCBub25lIixyZWxldmFuY2U6MCxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGlmIGFuIGVsZW1lbnQgaW5oZXJpdHMgaXRzIHBhcmVudCB3cmFwcGluZyBjb250ZXh0LiBJbiBvdGhlciB3b3JkcyBpZiBpdCBpcyBzdWJqZWN0IHRvIHRoZSBleGNsdXNpb25zIGRlZmluZWQgb3V0c2lkZSB0aGUgZWxlbWVudC4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii1tcy13cml0aW5nLW1vZGUiLGJyb3dzZXJzOlsiSUU4Il0sdmFsdWVzOlt7bmFtZToiYnQtbHIifSx7bmFtZToiYnQtcmwifSx7bmFtZToibHItYnQifSx7bmFtZToibHItdGIifSx7bmFtZToicmwtYnQifSx7bmFtZToicmwtdGIifSx7bmFtZToidGItbHIifSx7bmFtZToidGItcmwifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJTaG9ydGhhbmQgcHJvcGVydHkgZm9yIGJvdGggJ2RpcmVjdGlvbicgYW5kICdibG9jay1wcm9ncmVzc2lvbicuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiItbXMtem9vbSIsYnJvd3NlcnM6WyJJRTgiXSx2YWx1ZXM6W3tuYW1lOiJub3JtYWwifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJTZXRzIG9yIHJldHJpZXZlcyB0aGUgbWFnbmlmaWNhdGlvbiBzY2FsZSBvZiB0aGUgb2JqZWN0LiIscmVzdHJpY3Rpb25zOlsiZW51bSIsImludGVnZXIiLCJudW1iZXIiLCJwZXJjZW50YWdlIl19LHtuYW1lOiItbXMtem9vbS1hbmltYXRpb24iLGJyb3dzZXJzOlsiSUUxMCJdLHZhbHVlczpbe25hbWU6ImRlZmF1bHQifSx7bmFtZToibm9uZSJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkdldHMgb3Igc2V0cyBhIHZhbHVlIHRoYXQgaW5kaWNhdGVzIHdoZXRoZXIgYW4gYW5pbWF0aW9uIGlzIHVzZWQgd2hlbiB6b29taW5nLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToibmF2LWRvd24iLGJyb3dzZXJzOlsiTzkuNSJdLHZhbHVlczpbe25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJUaGUgdXNlciBhZ2VudCBhdXRvbWF0aWNhbGx5IGRldGVybWluZXMgd2hpY2ggZWxlbWVudCB0byBuYXZpZ2F0ZSB0aGUgZm9jdXMgdG8gaW4gcmVzcG9uc2UgdG8gZGlyZWN0aW9uYWwgbmF2aWdhdGlvbmFsIGlucHV0LiJ9LHtuYW1lOiJjdXJyZW50IixkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIHRoYXQgdGhlIHVzZXIgYWdlbnQgc2hvdWxkIHRhcmdldCB0aGUgZnJhbWUgdGhhdCB0aGUgZWxlbWVudCBpcyBpbi4ifSx7bmFtZToicm9vdCIsZGVzY3JpcHRpb246IkluZGljYXRlcyB0aGF0IHRoZSB1c2VyIGFnZW50IHNob3VsZCB0YXJnZXQgdGhlIGZ1bGwgd2luZG93LiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlByb3ZpZGVzIGFuIHdheSB0byBjb250cm9sIGRpcmVjdGlvbmFsIGZvY3VzIG5hdmlnYXRpb24uIixyZXN0cmljdGlvbnM6WyJlbnVtIiwiaWRlbnRpZmllciIsInN0cmluZyJdfSx7bmFtZToibmF2LWluZGV4Iixicm93c2VyczpbIk85LjUiXSx2YWx1ZXM6W3tuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiVGhlIGVsZW1lbnQncyBzZXF1ZW50aWFsIG5hdmlnYXRpb24gb3JkZXIgaXMgYXNzaWduZWQgYXV0b21hdGljYWxseSBieSB0aGUgdXNlciBhZ2VudC4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJQcm92aWRlcyBhbiBpbnB1dC1tZXRob2QtbmV1dHJhbCB3YXkgb2Ygc3BlY2lmeWluZyB0aGUgc2VxdWVudGlhbCBuYXZpZ2F0aW9uIG9yZGVyIChhbHNvIGtub3duIGFzICd0YWJiaW5nIG9yZGVyJykuIixyZXN0cmljdGlvbnM6WyJudW1iZXIiXX0se25hbWU6Im5hdi1sZWZ0Iixicm93c2VyczpbIk85LjUiXSx2YWx1ZXM6W3tuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiVGhlIHVzZXIgYWdlbnQgYXV0b21hdGljYWxseSBkZXRlcm1pbmVzIHdoaWNoIGVsZW1lbnQgdG8gbmF2aWdhdGUgdGhlIGZvY3VzIHRvIGluIHJlc3BvbnNlIHRvIGRpcmVjdGlvbmFsIG5hdmlnYXRpb25hbCBpbnB1dC4ifSx7bmFtZToiY3VycmVudCIsZGVzY3JpcHRpb246IkluZGljYXRlcyB0aGF0IHRoZSB1c2VyIGFnZW50IHNob3VsZCB0YXJnZXQgdGhlIGZyYW1lIHRoYXQgdGhlIGVsZW1lbnQgaXMgaW4uIn0se25hbWU6InJvb3QiLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgdGhhdCB0aGUgdXNlciBhZ2VudCBzaG91bGQgdGFyZ2V0IHRoZSBmdWxsIHdpbmRvdy4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJQcm92aWRlcyBhbiB3YXkgdG8gY29udHJvbCBkaXJlY3Rpb25hbCBmb2N1cyBuYXZpZ2F0aW9uLiIscmVzdHJpY3Rpb25zOlsiZW51bSIsImlkZW50aWZpZXIiLCJzdHJpbmciXX0se25hbWU6Im5hdi1yaWdodCIsYnJvd3NlcnM6WyJPOS41Il0sdmFsdWVzOlt7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IlRoZSB1c2VyIGFnZW50IGF1dG9tYXRpY2FsbHkgZGV0ZXJtaW5lcyB3aGljaCBlbGVtZW50IHRvIG5hdmlnYXRlIHRoZSBmb2N1cyB0byBpbiByZXNwb25zZSB0byBkaXJlY3Rpb25hbCBuYXZpZ2F0aW9uYWwgaW5wdXQuIn0se25hbWU6ImN1cnJlbnQiLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgdGhhdCB0aGUgdXNlciBhZ2VudCBzaG91bGQgdGFyZ2V0IHRoZSBmcmFtZSB0aGF0IHRoZSBlbGVtZW50IGlzIGluLiJ9LHtuYW1lOiJyb290IixkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIHRoYXQgdGhlIHVzZXIgYWdlbnQgc2hvdWxkIHRhcmdldCB0aGUgZnVsbCB3aW5kb3cuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiUHJvdmlkZXMgYW4gd2F5IHRvIGNvbnRyb2wgZGlyZWN0aW9uYWwgZm9jdXMgbmF2aWdhdGlvbi4iLHJlc3RyaWN0aW9uczpbImVudW0iLCJpZGVudGlmaWVyIiwic3RyaW5nIl19LHtuYW1lOiJuYXYtdXAiLGJyb3dzZXJzOlsiTzkuNSJdLHZhbHVlczpbe25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJUaGUgdXNlciBhZ2VudCBhdXRvbWF0aWNhbGx5IGRldGVybWluZXMgd2hpY2ggZWxlbWVudCB0byBuYXZpZ2F0ZSB0aGUgZm9jdXMgdG8gaW4gcmVzcG9uc2UgdG8gZGlyZWN0aW9uYWwgbmF2aWdhdGlvbmFsIGlucHV0LiJ9LHtuYW1lOiJjdXJyZW50IixkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIHRoYXQgdGhlIHVzZXIgYWdlbnQgc2hvdWxkIHRhcmdldCB0aGUgZnJhbWUgdGhhdCB0aGUgZWxlbWVudCBpcyBpbi4ifSx7bmFtZToicm9vdCIsZGVzY3JpcHRpb246IkluZGljYXRlcyB0aGF0IHRoZSB1c2VyIGFnZW50IHNob3VsZCB0YXJnZXQgdGhlIGZ1bGwgd2luZG93LiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlByb3ZpZGVzIGFuIHdheSB0byBjb250cm9sIGRpcmVjdGlvbmFsIGZvY3VzIG5hdmlnYXRpb24uIixyZXN0cmljdGlvbnM6WyJlbnVtIiwiaWRlbnRpZmllciIsInN0cmluZyJdfSx7bmFtZToibmVnYXRpdmUiLGJyb3dzZXJzOlsiRkYzMyJdLGF0UnVsZToiQGNvdW50ZXItc3R5bGUiLHN5bnRheDoiPHN5bWJvbD4gPHN5bWJvbD4/IixyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkBjb3VudGVyLXN0eWxlIGRlc2NyaXB0b3IuIERlZmluZXMgaG93IHRvIGFsdGVyIHRoZSByZXByZXNlbnRhdGlvbiB3aGVuIHRoZSBjb3VudGVyIHZhbHVlIGlzIG5lZ2F0aXZlLiIscmVzdHJpY3Rpb25zOlsiaW1hZ2UiLCJpZGVudGlmaWVyIiwic3RyaW5nIl19LHtuYW1lOiItby1hbmltYXRpb24iLGJyb3dzZXJzOlsiTzEyIl0sdmFsdWVzOlt7bmFtZToiYWx0ZXJuYXRlIixkZXNjcmlwdGlvbjoiVGhlIGFuaW1hdGlvbiBjeWNsZSBpdGVyYXRpb25zIHRoYXQgYXJlIG9kZCBjb3VudHMgYXJlIHBsYXllZCBpbiB0aGUgbm9ybWFsIGRpcmVjdGlvbiwgYW5kIHRoZSBhbmltYXRpb24gY3ljbGUgaXRlcmF0aW9ucyB0aGF0IGFyZSBldmVuIGNvdW50cyBhcmUgcGxheWVkIGluIGEgcmV2ZXJzZSBkaXJlY3Rpb24uIn0se25hbWU6ImFsdGVybmF0ZS1yZXZlcnNlIixkZXNjcmlwdGlvbjoiVGhlIGFuaW1hdGlvbiBjeWNsZSBpdGVyYXRpb25zIHRoYXQgYXJlIG9kZCBjb3VudHMgYXJlIHBsYXllZCBpbiB0aGUgcmV2ZXJzZSBkaXJlY3Rpb24sIGFuZCB0aGUgYW5pbWF0aW9uIGN5Y2xlIGl0ZXJhdGlvbnMgdGhhdCBhcmUgZXZlbiBjb3VudHMgYXJlIHBsYXllZCBpbiBhIG5vcm1hbCBkaXJlY3Rpb24uIn0se25hbWU6ImJhY2t3YXJkcyIsZGVzY3JpcHRpb246IlRoZSBiZWdpbm5pbmcgcHJvcGVydHkgdmFsdWUgKGFzIGRlZmluZWQgaW4gdGhlIGZpcnN0IEBrZXlmcmFtZXMgYXQtcnVsZSkgaXMgYXBwbGllZCBiZWZvcmUgdGhlIGFuaW1hdGlvbiBpcyBkaXNwbGF5ZWQsIGR1cmluZyB0aGUgcGVyaW9kIGRlZmluZWQgYnkgJ2FuaW1hdGlvbi1kZWxheScuIn0se25hbWU6ImJvdGgiLGRlc2NyaXB0aW9uOiJCb3RoIGZvcndhcmRzIGFuZCBiYWNrd2FyZHMgZmlsbCBtb2RlcyBhcmUgYXBwbGllZC4ifSx7bmFtZToiZm9yd2FyZHMiLGRlc2NyaXB0aW9uOiJUaGUgZmluYWwgcHJvcGVydHkgdmFsdWUgKGFzIGRlZmluZWQgaW4gdGhlIGxhc3QgQGtleWZyYW1lcyBhdC1ydWxlKSBpcyBtYWludGFpbmVkIGFmdGVyIHRoZSBhbmltYXRpb24gY29tcGxldGVzLiJ9LHtuYW1lOiJpbmZpbml0ZSIsZGVzY3JpcHRpb246IkNhdXNlcyB0aGUgYW5pbWF0aW9uIHRvIHJlcGVhdCBmb3JldmVyLiJ9LHtuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiTm8gYW5pbWF0aW9uIGlzIHBlcmZvcm1lZCJ9LHtuYW1lOiJub3JtYWwiLGRlc2NyaXB0aW9uOiJOb3JtYWwgcGxheWJhY2suIn0se25hbWU6InJldmVyc2UiLGRlc2NyaXB0aW9uOiJBbGwgaXRlcmF0aW9ucyBvZiB0aGUgYW5pbWF0aW9uIGFyZSBwbGF5ZWQgaW4gdGhlIHJldmVyc2UgZGlyZWN0aW9uIGZyb20gdGhlIHdheSB0aGV5IHdlcmUgc3BlY2lmaWVkLiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlNob3J0aGFuZCBwcm9wZXJ0eSBjb21iaW5lcyBzaXggb2YgdGhlIGFuaW1hdGlvbiBwcm9wZXJ0aWVzIGludG8gYSBzaW5nbGUgcHJvcGVydHkuIixyZXN0cmljdGlvbnM6WyJ0aW1lIiwiZW51bSIsInRpbWluZy1mdW5jdGlvbiIsImlkZW50aWZpZXIiLCJudW1iZXIiXX0se25hbWU6Ii1vLWFuaW1hdGlvbi1kZWxheSIsYnJvd3NlcnM6WyJPMTIiXSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkRlZmluZXMgd2hlbiB0aGUgYW5pbWF0aW9uIHdpbGwgc3RhcnQuIixyZXN0cmljdGlvbnM6WyJ0aW1lIl19LHtuYW1lOiItby1hbmltYXRpb24tZGlyZWN0aW9uIixicm93c2VyczpbIk8xMiJdLHZhbHVlczpbe25hbWU6ImFsdGVybmF0ZSIsZGVzY3JpcHRpb246IlRoZSBhbmltYXRpb24gY3ljbGUgaXRlcmF0aW9ucyB0aGF0IGFyZSBvZGQgY291bnRzIGFyZSBwbGF5ZWQgaW4gdGhlIG5vcm1hbCBkaXJlY3Rpb24sIGFuZCB0aGUgYW5pbWF0aW9uIGN5Y2xlIGl0ZXJhdGlvbnMgdGhhdCBhcmUgZXZlbiBjb3VudHMgYXJlIHBsYXllZCBpbiBhIHJldmVyc2UgZGlyZWN0aW9uLiJ9LHtuYW1lOiJhbHRlcm5hdGUtcmV2ZXJzZSIsZGVzY3JpcHRpb246IlRoZSBhbmltYXRpb24gY3ljbGUgaXRlcmF0aW9ucyB0aGF0IGFyZSBvZGQgY291bnRzIGFyZSBwbGF5ZWQgaW4gdGhlIHJldmVyc2UgZGlyZWN0aW9uLCBhbmQgdGhlIGFuaW1hdGlvbiBjeWNsZSBpdGVyYXRpb25zIHRoYXQgYXJlIGV2ZW4gY291bnRzIGFyZSBwbGF5ZWQgaW4gYSBub3JtYWwgZGlyZWN0aW9uLiJ9LHtuYW1lOiJub3JtYWwiLGRlc2NyaXB0aW9uOiJOb3JtYWwgcGxheWJhY2suIn0se25hbWU6InJldmVyc2UiLGRlc2NyaXB0aW9uOiJBbGwgaXRlcmF0aW9ucyBvZiB0aGUgYW5pbWF0aW9uIGFyZSBwbGF5ZWQgaW4gdGhlIHJldmVyc2UgZGlyZWN0aW9uIGZyb20gdGhlIHdheSB0aGV5IHdlcmUgc3BlY2lmaWVkLiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkRlZmluZXMgd2hldGhlciBvciBub3QgdGhlIGFuaW1hdGlvbiBzaG91bGQgcGxheSBpbiByZXZlcnNlIG9uIGFsdGVybmF0ZSBjeWNsZXMuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiItby1hbmltYXRpb24tZHVyYXRpb24iLGJyb3dzZXJzOlsiTzEyIl0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJEZWZpbmVzIHRoZSBsZW5ndGggb2YgdGltZSB0aGF0IGFuIGFuaW1hdGlvbiB0YWtlcyB0byBjb21wbGV0ZSBvbmUgY3ljbGUuIixyZXN0cmljdGlvbnM6WyJ0aW1lIl19LHtuYW1lOiItby1hbmltYXRpb24tZmlsbC1tb2RlIixicm93c2VyczpbIk8xMiJdLHZhbHVlczpbe25hbWU6ImJhY2t3YXJkcyIsZGVzY3JpcHRpb246IlRoZSBiZWdpbm5pbmcgcHJvcGVydHkgdmFsdWUgKGFzIGRlZmluZWQgaW4gdGhlIGZpcnN0IEBrZXlmcmFtZXMgYXQtcnVsZSkgaXMgYXBwbGllZCBiZWZvcmUgdGhlIGFuaW1hdGlvbiBpcyBkaXNwbGF5ZWQsIGR1cmluZyB0aGUgcGVyaW9kIGRlZmluZWQgYnkgJ2FuaW1hdGlvbi1kZWxheScuIn0se25hbWU6ImJvdGgiLGRlc2NyaXB0aW9uOiJCb3RoIGZvcndhcmRzIGFuZCBiYWNrd2FyZHMgZmlsbCBtb2RlcyBhcmUgYXBwbGllZC4ifSx7bmFtZToiZm9yd2FyZHMiLGRlc2NyaXB0aW9uOiJUaGUgZmluYWwgcHJvcGVydHkgdmFsdWUgKGFzIGRlZmluZWQgaW4gdGhlIGxhc3QgQGtleWZyYW1lcyBhdC1ydWxlKSBpcyBtYWludGFpbmVkIGFmdGVyIHRoZSBhbmltYXRpb24gY29tcGxldGVzLiJ9LHtuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiVGhlcmUgaXMgbm8gY2hhbmdlIHRvIHRoZSBwcm9wZXJ0eSB2YWx1ZSBiZXR3ZWVuIHRoZSB0aW1lIHRoZSBhbmltYXRpb24gaXMgYXBwbGllZCBhbmQgdGhlIHRpbWUgdGhlIGFuaW1hdGlvbiBiZWdpbnMgcGxheWluZyBvciBhZnRlciB0aGUgYW5pbWF0aW9uIGNvbXBsZXRlcy4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJEZWZpbmVzIHdoYXQgdmFsdWVzIGFyZSBhcHBsaWVkIGJ5IHRoZSBhbmltYXRpb24gb3V0c2lkZSB0aGUgdGltZSBpdCBpcyBleGVjdXRpbmcuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiItby1hbmltYXRpb24taXRlcmF0aW9uLWNvdW50Iixicm93c2VyczpbIk8xMiJdLHZhbHVlczpbe25hbWU6ImluZmluaXRlIixkZXNjcmlwdGlvbjoiQ2F1c2VzIHRoZSBhbmltYXRpb24gdG8gcmVwZWF0IGZvcmV2ZXIuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiRGVmaW5lcyB0aGUgbnVtYmVyIG9mIHRpbWVzIGFuIGFuaW1hdGlvbiBjeWNsZSBpcyBwbGF5ZWQuIFRoZSBkZWZhdWx0IHZhbHVlIGlzIG9uZSwgbWVhbmluZyB0aGUgYW5pbWF0aW9uIHdpbGwgcGxheSBmcm9tIGJlZ2lubmluZyB0byBlbmQgb25jZS4iLHJlc3RyaWN0aW9uczpbIm51bWJlciIsImVudW0iXX0se25hbWU6Ii1vLWFuaW1hdGlvbi1uYW1lIixicm93c2VyczpbIk8xMiJdLHZhbHVlczpbe25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJObyBhbmltYXRpb24gaXMgcGVyZm9ybWVkIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiRGVmaW5lcyBhIGxpc3Qgb2YgYW5pbWF0aW9ucyB0aGF0IGFwcGx5LiBFYWNoIG5hbWUgaXMgdXNlZCB0byBzZWxlY3QgdGhlIGtleWZyYW1lIGF0LXJ1bGUgdGhhdCBwcm92aWRlcyB0aGUgcHJvcGVydHkgdmFsdWVzIGZvciB0aGUgYW5pbWF0aW9uLiIscmVzdHJpY3Rpb25zOlsiaWRlbnRpZmllciIsImVudW0iXX0se25hbWU6Ii1vLWFuaW1hdGlvbi1wbGF5LXN0YXRlIixicm93c2VyczpbIk8xMiJdLHZhbHVlczpbe25hbWU6InBhdXNlZCIsZGVzY3JpcHRpb246IkEgcnVubmluZyBhbmltYXRpb24gd2lsbCBiZSBwYXVzZWQuIn0se25hbWU6InJ1bm5pbmciLGRlc2NyaXB0aW9uOiJSZXN1bWUgcGxheWJhY2sgb2YgYSBwYXVzZWQgYW5pbWF0aW9uLiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkRlZmluZXMgd2hldGhlciB0aGUgYW5pbWF0aW9uIGlzIHJ1bm5pbmcgb3IgcGF1c2VkLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiLW8tYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbiIsYnJvd3NlcnM6WyJPMTIiXSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkRlc2NyaWJlcyBob3cgdGhlIGFuaW1hdGlvbiB3aWxsIHByb2dyZXNzIG92ZXIgb25lIGN5Y2xlIG9mIGl0cyBkdXJhdGlvbi4gU2VlIHRoZSAndHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb24nLiIscmVzdHJpY3Rpb25zOlsidGltaW5nLWZ1bmN0aW9uIl19LHtuYW1lOiJvYmplY3QtZml0Iixicm93c2VyczpbIkU3OSIsIkZGMzYiLCJTMTAiLCJDMzIiLCJPMTkiXSx2YWx1ZXM6W3tuYW1lOiJjb250YWluIixkZXNjcmlwdGlvbjoiVGhlIHJlcGxhY2VkIGNvbnRlbnQgaXMgc2l6ZWQgdG8gbWFpbnRhaW4gaXRzIGFzcGVjdCByYXRpbyB3aGlsZSBmaXR0aW5nIHdpdGhpbiB0aGUgZWxlbWVudCdzIGNvbnRlbnQgYm94OiBpdHMgY29uY3JldGUgb2JqZWN0IHNpemUgaXMgcmVzb2x2ZWQgYXMgYSBjb250YWluIGNvbnN0cmFpbnQgYWdhaW5zdCB0aGUgZWxlbWVudCdzIHVzZWQgd2lkdGggYW5kIGhlaWdodC4ifSx7bmFtZToiY292ZXIiLGRlc2NyaXB0aW9uOiJUaGUgcmVwbGFjZWQgY29udGVudCBpcyBzaXplZCB0byBtYWludGFpbiBpdHMgYXNwZWN0IHJhdGlvIHdoaWxlIGZpbGxpbmcgdGhlIGVsZW1lbnQncyBlbnRpcmUgY29udGVudCBib3g6IGl0cyBjb25jcmV0ZSBvYmplY3Qgc2l6ZSBpcyByZXNvbHZlZCBhcyBhIGNvdmVyIGNvbnN0cmFpbnQgYWdhaW5zdCB0aGUgZWxlbWVudCdzIHVzZWQgd2lkdGggYW5kIGhlaWdodC4ifSx7bmFtZToiZmlsbCIsZGVzY3JpcHRpb246IlRoZSByZXBsYWNlZCBjb250ZW50IGlzIHNpemVkIHRvIGZpbGwgdGhlIGVsZW1lbnQncyBjb250ZW50IGJveDogdGhlIG9iamVjdCdzIGNvbmNyZXRlIG9iamVjdCBzaXplIGlzIHRoZSBlbGVtZW50J3MgdXNlZCB3aWR0aCBhbmQgaGVpZ2h0LiJ9LHtuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiVGhlIHJlcGxhY2VkIGNvbnRlbnQgaXMgbm90IHJlc2l6ZWQgdG8gZml0IGluc2lkZSB0aGUgZWxlbWVudCdzIGNvbnRlbnQgYm94In0se25hbWU6InNjYWxlLWRvd24iLGRlc2NyaXB0aW9uOiJTaXplIHRoZSBjb250ZW50IGFzIGlmICdub25lJyBvciAnY29udGFpbicgd2VyZSBzcGVjaWZpZWQsIHdoaWNoZXZlciB3b3VsZCByZXN1bHQgaW4gYSBzbWFsbGVyIGNvbmNyZXRlIG9iamVjdCBzaXplLiJ9XSxzeW50YXg6ImZpbGwgfCBjb250YWluIHwgY292ZXIgfCBub25lIHwgc2NhbGUtZG93biIscmVsZXZhbmNlOjcyLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9vYmplY3QtZml0In1dLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgaG93IHRoZSBjb250ZW50cyBvZiBhIHJlcGxhY2VkIGVsZW1lbnQgc2hvdWxkIGJlIHNjYWxlZCByZWxhdGl2ZSB0byB0aGUgYm94IGVzdGFibGlzaGVkIGJ5IGl0cyB1c2VkIGhlaWdodCBhbmQgd2lkdGguIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJvYmplY3QtcG9zaXRpb24iLGJyb3dzZXJzOlsiRTc5IiwiRkYzNiIsIlMxMCIsIkMzMiIsIk8xOSJdLHN5bnRheDoiPHBvc2l0aW9uPiIscmVsZXZhbmNlOjU3LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9vYmplY3QtcG9zaXRpb24ifV0sZGVzY3JpcHRpb246IkRldGVybWluZXMgdGhlIGFsaWdubWVudCBvZiB0aGUgcmVwbGFjZWQgZWxlbWVudCBpbnNpZGUgaXRzIGJveC4iLHJlc3RyaWN0aW9uczpbInBvc2l0aW9uIiwibGVuZ3RoIiwicGVyY2VudGFnZSJdfSx7bmFtZToiLW8tYm9yZGVyLWltYWdlIixicm93c2VyczpbIk8xMS42Il0sdmFsdWVzOlt7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IklmICdhdXRvJyBpcyBzcGVjaWZpZWQgdGhlbiB0aGUgYm9yZGVyIGltYWdlIHdpZHRoIGlzIHRoZSBpbnRyaW5zaWMgd2lkdGggb3IgaGVpZ2h0ICh3aGljaGV2ZXIgaXMgYXBwbGljYWJsZSkgb2YgdGhlIGNvcnJlc3BvbmRpbmcgaW1hZ2Ugc2xpY2UuIElmIHRoZSBpbWFnZSBkb2VzIG5vdCBoYXZlIHRoZSByZXF1aXJlZCBpbnRyaW5zaWMgZGltZW5zaW9uIHRoZW4gdGhlIGNvcnJlc3BvbmRpbmcgYm9yZGVyLXdpZHRoIGlzIHVzZWQgaW5zdGVhZC4ifSx7bmFtZToiZmlsbCIsZGVzY3JpcHRpb246IkNhdXNlcyB0aGUgbWlkZGxlIHBhcnQgb2YgdGhlIGJvcmRlci1pbWFnZSB0byBiZSBwcmVzZXJ2ZWQuIn0se25hbWU6Im5vbmUifSx7bmFtZToicmVwZWF0IixkZXNjcmlwdGlvbjoiVGhlIGltYWdlIGlzIHRpbGVkIChyZXBlYXRlZCkgdG8gZmlsbCB0aGUgYXJlYS4ifSx7bmFtZToicm91bmQiLGRlc2NyaXB0aW9uOiJUaGUgaW1hZ2UgaXMgdGlsZWQgKHJlcGVhdGVkKSB0byBmaWxsIHRoZSBhcmVhLiBJZiBpdCBkb2VzIG5vdCBmaWxsIHRoZSBhcmVhIHdpdGggYSB3aG9sZSBudW1iZXIgb2YgdGlsZXMsIHRoZSBpbWFnZSBpcyByZXNjYWxlZCBzbyB0aGF0IGl0IGRvZXMuIn0se25hbWU6InNwYWNlIixkZXNjcmlwdGlvbjoiVGhlIGltYWdlIGlzIHRpbGVkIChyZXBlYXRlZCkgdG8gZmlsbCB0aGUgYXJlYS4gSWYgaXQgZG9lcyBub3QgZmlsbCB0aGUgYXJlYSB3aXRoIGEgd2hvbGUgbnVtYmVyIG9mIHRpbGVzLCB0aGUgZXh0cmEgc3BhY2UgaXMgZGlzdHJpYnV0ZWQgYXJvdW5kIHRoZSB0aWxlcy4ifSx7bmFtZToic3RyZXRjaCIsZGVzY3JpcHRpb246IlRoZSBpbWFnZSBpcyBzdHJldGNoZWQgdG8gZmlsbCB0aGUgYXJlYS4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJTaG9ydGhhbmQgcHJvcGVydHkgZm9yIHNldHRpbmcgJ2JvcmRlci1pbWFnZS1zb3VyY2UnLCAnYm9yZGVyLWltYWdlLXNsaWNlJywgJ2JvcmRlci1pbWFnZS13aWR0aCcsICdib3JkZXItaW1hZ2Utb3V0c2V0JyBhbmQgJ2JvcmRlci1pbWFnZS1yZXBlYXQnLiBPbWl0dGVkIHZhbHVlcyBhcmUgc2V0IHRvIHRoZWlyIGluaXRpYWwgdmFsdWVzLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwicGVyY2VudGFnZSIsIm51bWJlciIsImltYWdlIiwiZW51bSJdfSx7bmFtZToiLW8tb2JqZWN0LWZpdCIsYnJvd3NlcnM6WyJPMTAuNiJdLHZhbHVlczpbe25hbWU6ImNvbnRhaW4iLGRlc2NyaXB0aW9uOiJUaGUgcmVwbGFjZWQgY29udGVudCBpcyBzaXplZCB0byBtYWludGFpbiBpdHMgYXNwZWN0IHJhdGlvIHdoaWxlIGZpdHRpbmcgd2l0aGluIHRoZSBlbGVtZW50J3MgY29udGVudCBib3g6IGl0cyBjb25jcmV0ZSBvYmplY3Qgc2l6ZSBpcyByZXNvbHZlZCBhcyBhIGNvbnRhaW4gY29uc3RyYWludCBhZ2FpbnN0IHRoZSBlbGVtZW50J3MgdXNlZCB3aWR0aCBhbmQgaGVpZ2h0LiJ9LHtuYW1lOiJjb3ZlciIsZGVzY3JpcHRpb246IlRoZSByZXBsYWNlZCBjb250ZW50IGlzIHNpemVkIHRvIG1haW50YWluIGl0cyBhc3BlY3QgcmF0aW8gd2hpbGUgZmlsbGluZyB0aGUgZWxlbWVudCdzIGVudGlyZSBjb250ZW50IGJveDogaXRzIGNvbmNyZXRlIG9iamVjdCBzaXplIGlzIHJlc29sdmVkIGFzIGEgY292ZXIgY29uc3RyYWludCBhZ2FpbnN0IHRoZSBlbGVtZW50J3MgdXNlZCB3aWR0aCBhbmQgaGVpZ2h0LiJ9LHtuYW1lOiJmaWxsIixkZXNjcmlwdGlvbjoiVGhlIHJlcGxhY2VkIGNvbnRlbnQgaXMgc2l6ZWQgdG8gZmlsbCB0aGUgZWxlbWVudCdzIGNvbnRlbnQgYm94OiB0aGUgb2JqZWN0J3MgY29uY3JldGUgb2JqZWN0IHNpemUgaXMgdGhlIGVsZW1lbnQncyB1c2VkIHdpZHRoIGFuZCBoZWlnaHQuIn0se25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJUaGUgcmVwbGFjZWQgY29udGVudCBpcyBub3QgcmVzaXplZCB0byBmaXQgaW5zaWRlIHRoZSBlbGVtZW50J3MgY29udGVudCBib3gifSx7bmFtZToic2NhbGUtZG93biIsZGVzY3JpcHRpb246IlNpemUgdGhlIGNvbnRlbnQgYXMgaWYgJ25vbmUnIG9yICdjb250YWluJyB3ZXJlIHNwZWNpZmllZCwgd2hpY2hldmVyIHdvdWxkIHJlc3VsdCBpbiBhIHNtYWxsZXIgY29uY3JldGUgb2JqZWN0IHNpemUuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGhvdyB0aGUgY29udGVudHMgb2YgYSByZXBsYWNlZCBlbGVtZW50IHNob3VsZCBiZSBzY2FsZWQgcmVsYXRpdmUgdG8gdGhlIGJveCBlc3RhYmxpc2hlZCBieSBpdHMgdXNlZCBoZWlnaHQgYW5kIHdpZHRoLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiLW8tb2JqZWN0LXBvc2l0aW9uIixicm93c2VyczpbIk8xMC42Il0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJEZXRlcm1pbmVzIHRoZSBhbGlnbm1lbnQgb2YgdGhlIHJlcGxhY2VkIGVsZW1lbnQgaW5zaWRlIGl0cyBib3guIixyZXN0cmljdGlvbnM6WyJwb3NpdGlvbiIsImxlbmd0aCIsInBlcmNlbnRhZ2UiXX0se25hbWU6Im9wYWNpdHkiLGJyb3dzZXJzOlsiRTEyIiwiRkYxIiwiUzIiLCJDMSIsIklFOSIsIk85Il0sc3ludGF4OiI8YWxwaGEtdmFsdWU+IixyZWxldmFuY2U6OTIscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL29wYWNpdHkifV0sZGVzY3JpcHRpb246Ik9wYWNpdHkgb2YgYW4gZWxlbWVudCdzIHRleHQsIHdoZXJlIDEgaXMgb3BhcXVlIGFuZCAwIGlzIGVudGlyZWx5IHRyYW5zcGFyZW50LiIscmVzdHJpY3Rpb25zOlsibnVtYmVyKDAtMSkiXX0se25hbWU6Im9yZGVyIixicm93c2VyczpbIkUxMiIsIkZGMjAiLCJTOSIsIkMyOSIsIklFMTEiLCJPMTIuMSJdLHN5bnRheDoiPGludGVnZXI+IixyZWxldmFuY2U6NjcscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL29yZGVyIn1dLGRlc2NyaXB0aW9uOiJDb250cm9scyB0aGUgb3JkZXIgaW4gd2hpY2ggY2hpbGRyZW4gb2YgYSBmbGV4IGNvbnRhaW5lciBhcHBlYXIgd2l0aGluIHRoZSBmbGV4IGNvbnRhaW5lciwgYnkgYXNzaWduaW5nIHRoZW0gdG8gb3JkaW5hbCBncm91cHMuIixyZXN0cmljdGlvbnM6WyJpbnRlZ2VyIl19LHtuYW1lOiJvcnBoYW5zIixicm93c2VyczpbIkUxMiIsIlMxLjMiLCJDMjUiLCJJRTgiLCJPOS4yIl0sc3ludGF4OiI8aW50ZWdlcj4iLHJlbGV2YW5jZTo1MSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1Mvb3JwaGFucyJ9XSxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIHRoZSBtaW5pbXVtIG51bWJlciBvZiBsaW5lIGJveGVzIGluIGEgYmxvY2sgY29udGFpbmVyIHRoYXQgbXVzdCBiZSBsZWZ0IGluIGEgZnJhZ21lbnQgYmVmb3JlIGEgZnJhZ21lbnRhdGlvbiBicmVhay4iLHJlc3RyaWN0aW9uczpbImludGVnZXIiXX0se25hbWU6Ii1vLXRhYmxlLWJhc2VsaW5lIixicm93c2VyczpbIk85LjYiXSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkRldGVybWluZXMgd2hpY2ggcm93IG9mIGEgaW5saW5lLXRhYmxlIHNob3VsZCBiZSB1c2VkIGFzIGJhc2VsaW5lIG9mIGlubGluZS10YWJsZS4iLHJlc3RyaWN0aW9uczpbImludGVnZXIiXX0se25hbWU6Ii1vLXRhYi1zaXplIixicm93c2VyczpbIk8xMC42Il0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJUaGlzIHByb3BlcnR5IGRldGVybWluZXMgdGhlIHdpZHRoIG9mIHRoZSB0YWIgY2hhcmFjdGVyIChVKzAwMDkpLCBpbiBzcGFjZSBjaGFyYWN0ZXJzIChVKzAwMjApLCB3aGVuIHJlbmRlcmVkLiIscmVzdHJpY3Rpb25zOlsiaW50ZWdlciIsImxlbmd0aCJdfSx7bmFtZToiLW8tdGV4dC1vdmVyZmxvdyIsYnJvd3NlcnM6WyJPMTAiXSx2YWx1ZXM6W3tuYW1lOiJjbGlwIixkZXNjcmlwdGlvbjoiQ2xpcCBpbmxpbmUgY29udGVudCB0aGF0IG92ZXJmbG93cy4gQ2hhcmFjdGVycyBtYXkgYmUgb25seSBwYXJ0aWFsbHkgcmVuZGVyZWQuIn0se25hbWU6ImVsbGlwc2lzIixkZXNjcmlwdGlvbjoiUmVuZGVyIGFuIGVsbGlwc2lzIGNoYXJhY3RlciAoVSsyMDI2KSB0byByZXByZXNlbnQgY2xpcHBlZCBpbmxpbmUgY29udGVudC4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJUZXh0IGNhbiBvdmVyZmxvdyBmb3IgZXhhbXBsZSB3aGVuIGl0IGlzIHByZXZlbnRlZCBmcm9tIHdyYXBwaW5nIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiItby10cmFuc2Zvcm0iLGJyb3dzZXJzOlsiTzEwLjUiXSx2YWx1ZXM6W3tuYW1lOiJtYXRyaXgoKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIDJEIHRyYW5zZm9ybWF0aW9uIGluIHRoZSBmb3JtIG9mIGEgdHJhbnNmb3JtYXRpb24gbWF0cml4IG9mIHNpeCB2YWx1ZXMuIG1hdHJpeChhLGIsYyxkLGUsZikgaXMgZXF1aXZhbGVudCB0byBhcHBseWluZyB0aGUgdHJhbnNmb3JtYXRpb24gbWF0cml4IFthIGIgYyBkIGUgZl0ifSx7bmFtZToibWF0cml4M2QoKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIDNEIHRyYW5zZm9ybWF0aW9uIGFzIGEgNHg0IGhvbW9nZW5lb3VzIG1hdHJpeCBvZiAxNiB2YWx1ZXMgaW4gY29sdW1uLW1ham9yIG9yZGVyLiJ9LHtuYW1lOiJub25lIn0se25hbWU6InJvdGF0ZSgpIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgMkQgcm90YXRpb24gYnkgdGhlIGFuZ2xlIHNwZWNpZmllZCBpbiB0aGUgcGFyYW1ldGVyIGFib3V0IHRoZSBvcmlnaW4gb2YgdGhlIGVsZW1lbnQsIGFzIGRlZmluZWQgYnkgdGhlIHRyYW5zZm9ybS1vcmlnaW4gcHJvcGVydHkuIn0se25hbWU6InJvdGF0ZTNkKCkiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSBjbG9ja3dpc2UgM0Qgcm90YXRpb24gYnkgdGhlIGFuZ2xlIHNwZWNpZmllZCBpbiBsYXN0IHBhcmFtZXRlciBhYm91dCB0aGUgW3gseSx6XSBkaXJlY3Rpb24gdmVjdG9yIGRlc2NyaWJlZCBieSB0aGUgZmlyc3QgMyBwYXJhbWV0ZXJzLiJ9LHtuYW1lOiJyb3RhdGVYKCdhbmdsZScpIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgY2xvY2t3aXNlIHJvdGF0aW9uIGJ5IHRoZSBnaXZlbiBhbmdsZSBhYm91dCB0aGUgWCBheGlzLiJ9LHtuYW1lOiJyb3RhdGVZKCdhbmdsZScpIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgY2xvY2t3aXNlIHJvdGF0aW9uIGJ5IHRoZSBnaXZlbiBhbmdsZSBhYm91dCB0aGUgWSBheGlzLiJ9LHtuYW1lOiJyb3RhdGVaKCdhbmdsZScpIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgY2xvY2t3aXNlIHJvdGF0aW9uIGJ5IHRoZSBnaXZlbiBhbmdsZSBhYm91dCB0aGUgWiBheGlzLiJ9LHtuYW1lOiJzY2FsZSgpIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgMkQgc2NhbGUgb3BlcmF0aW9uIGJ5IHRoZSBbc3gsc3ldIHNjYWxpbmcgdmVjdG9yIGRlc2NyaWJlZCBieSB0aGUgMiBwYXJhbWV0ZXJzLiBJZiB0aGUgc2Vjb25kIHBhcmFtZXRlciBpcyBub3QgcHJvdmlkZWQsIGl0IGlzIHRha2VzIGEgdmFsdWUgZXF1YWwgdG8gdGhlIGZpcnN0LiJ9LHtuYW1lOiJzY2FsZTNkKCkiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSAzRCBzY2FsZSBvcGVyYXRpb24gYnkgdGhlIFtzeCxzeSxzel0gc2NhbGluZyB2ZWN0b3IgZGVzY3JpYmVkIGJ5IHRoZSAzIHBhcmFtZXRlcnMuIn0se25hbWU6InNjYWxlWCgpIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgc2NhbGUgb3BlcmF0aW9uIHVzaW5nIHRoZSBbc3gsMV0gc2NhbGluZyB2ZWN0b3IsIHdoZXJlIHN4IGlzIGdpdmVuIGFzIHRoZSBwYXJhbWV0ZXIuIn0se25hbWU6InNjYWxlWSgpIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgc2NhbGUgb3BlcmF0aW9uIHVzaW5nIHRoZSBbc3ksMV0gc2NhbGluZyB2ZWN0b3IsIHdoZXJlIHN5IGlzIGdpdmVuIGFzIHRoZSBwYXJhbWV0ZXIuIn0se25hbWU6InNjYWxlWigpIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgc2NhbGUgb3BlcmF0aW9uIHVzaW5nIHRoZSBbMSwxLHN6XSBzY2FsaW5nIHZlY3Rvciwgd2hlcmUgc3ogaXMgZ2l2ZW4gYXMgdGhlIHBhcmFtZXRlci4ifSx7bmFtZToic2tldygpIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgc2tldyB0cmFuc2Zvcm1hdGlvbiBhbG9uZyB0aGUgWCBhbmQgWSBheGVzLiBUaGUgZmlyc3QgYW5nbGUgcGFyYW1ldGVyIHNwZWNpZmllcyB0aGUgc2tldyBvbiB0aGUgWCBheGlzLiBUaGUgc2Vjb25kIGFuZ2xlIHBhcmFtZXRlciBzcGVjaWZpZXMgdGhlIHNrZXcgb24gdGhlIFkgYXhpcy4gSWYgdGhlIHNlY29uZCBwYXJhbWV0ZXIgaXMgbm90IGdpdmVuIHRoZW4gYSB2YWx1ZSBvZiAwIGlzIHVzZWQgZm9yIHRoZSBZIGFuZ2xlIChpZTogbm8gc2tldyBvbiB0aGUgWSBheGlzKS4ifSx7bmFtZToic2tld1goKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIHNrZXcgdHJhbnNmb3JtYXRpb24gYWxvbmcgdGhlIFggYXhpcyBieSB0aGUgZ2l2ZW4gYW5nbGUuIn0se25hbWU6InNrZXdZKCkiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSBza2V3IHRyYW5zZm9ybWF0aW9uIGFsb25nIHRoZSBZIGF4aXMgYnkgdGhlIGdpdmVuIGFuZ2xlLiJ9LHtuYW1lOiJ0cmFuc2xhdGUoKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIDJEIHRyYW5zbGF0aW9uIGJ5IHRoZSB2ZWN0b3IgW3R4LCB0eV0sIHdoZXJlIHR4IGlzIHRoZSBmaXJzdCB0cmFuc2xhdGlvbi12YWx1ZSBwYXJhbWV0ZXIgYW5kIHR5IGlzIHRoZSBvcHRpb25hbCBzZWNvbmQgdHJhbnNsYXRpb24tdmFsdWUgcGFyYW1ldGVyLiJ9LHtuYW1lOiJ0cmFuc2xhdGUzZCgpIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgM0QgdHJhbnNsYXRpb24gYnkgdGhlIHZlY3RvciBbdHgsdHksdHpdLCB3aXRoIHR4LCB0eSBhbmQgdHogYmVpbmcgdGhlIGZpcnN0LCBzZWNvbmQgYW5kIHRoaXJkIHRyYW5zbGF0aW9uLXZhbHVlIHBhcmFtZXRlcnMgcmVzcGVjdGl2ZWx5LiJ9LHtuYW1lOiJ0cmFuc2xhdGVYKCkiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSB0cmFuc2xhdGlvbiBieSB0aGUgZ2l2ZW4gYW1vdW50IGluIHRoZSBYIGRpcmVjdGlvbi4ifSx7bmFtZToidHJhbnNsYXRlWSgpIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgdHJhbnNsYXRpb24gYnkgdGhlIGdpdmVuIGFtb3VudCBpbiB0aGUgWSBkaXJlY3Rpb24uIn0se25hbWU6InRyYW5zbGF0ZVooKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIHRyYW5zbGF0aW9uIGJ5IHRoZSBnaXZlbiBhbW91bnQgaW4gdGhlIFogZGlyZWN0aW9uLiBOb3RlIHRoYXQgcGVyY2VudGFnZSB2YWx1ZXMgYXJlIG5vdCBhbGxvd2VkIGluIHRoZSB0cmFuc2xhdGVaIHRyYW5zbGF0aW9uLXZhbHVlLCBhbmQgaWYgcHJlc2VudCBhcmUgZXZhbHVhdGVkIGFzIDAuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiQSB0d28tZGltZW5zaW9uYWwgdHJhbnNmb3JtYXRpb24gaXMgYXBwbGllZCB0byBhbiBlbGVtZW50IHRocm91Z2ggdGhlICd0cmFuc2Zvcm0nIHByb3BlcnR5LiBUaGlzIHByb3BlcnR5IGNvbnRhaW5zIGEgbGlzdCBvZiB0cmFuc2Zvcm0gZnVuY3Rpb25zIHNpbWlsYXIgdG8gdGhvc2UgYWxsb3dlZCBieSBTVkcuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiItby10cmFuc2Zvcm0tb3JpZ2luIixicm93c2VyczpbIk8xMC41Il0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJFc3RhYmxpc2hlcyB0aGUgb3JpZ2luIG9mIHRyYW5zZm9ybWF0aW9uIGZvciBhbiBlbGVtZW50LiIscmVzdHJpY3Rpb25zOlsicG9zaXRvbiIsImxlbmd0aCIsInBlcmNlbnRhZ2UiXX0se25hbWU6Ii1vLXRyYW5zaXRpb24iLGJyb3dzZXJzOlsiTzExLjUiXSx2YWx1ZXM6W3tuYW1lOiJhbGwiLGRlc2NyaXB0aW9uOiJFdmVyeSBwcm9wZXJ0eSB0aGF0IGlzIGFibGUgdG8gdW5kZXJnbyBhIHRyYW5zaXRpb24gd2lsbCBkbyBzby4ifSx7bmFtZToibm9uZSIsZGVzY3JpcHRpb246Ik5vIHByb3BlcnR5IHdpbGwgdHJhbnNpdGlvbi4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJTaG9ydGhhbmQgcHJvcGVydHkgY29tYmluZXMgZm91ciBvZiB0aGUgdHJhbnNpdGlvbiBwcm9wZXJ0aWVzIGludG8gYSBzaW5nbGUgcHJvcGVydHkuIixyZXN0cmljdGlvbnM6WyJ0aW1lIiwicHJvcGVydHkiLCJ0aW1pbmctZnVuY3Rpb24iLCJlbnVtIl19LHtuYW1lOiItby10cmFuc2l0aW9uLWRlbGF5Iixicm93c2VyczpbIk8xMS41Il0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJEZWZpbmVzIHdoZW4gdGhlIHRyYW5zaXRpb24gd2lsbCBzdGFydC4gSXQgYWxsb3dzIGEgdHJhbnNpdGlvbiB0byBiZWdpbiBleGVjdXRpb24gc29tZSBwZXJpb2Qgb2YgdGltZSBmcm9tIHdoZW4gaXQgaXMgYXBwbGllZC4iLHJlc3RyaWN0aW9uczpbInRpbWUiXX0se25hbWU6Ii1vLXRyYW5zaXRpb24tZHVyYXRpb24iLGJyb3dzZXJzOlsiTzExLjUiXSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlNwZWNpZmllcyBob3cgbG9uZyB0aGUgdHJhbnNpdGlvbiBmcm9tIHRoZSBvbGQgdmFsdWUgdG8gdGhlIG5ldyB2YWx1ZSBzaG91bGQgdGFrZS4iLHJlc3RyaWN0aW9uczpbInRpbWUiXX0se25hbWU6Ii1vLXRyYW5zaXRpb24tcHJvcGVydHkiLGJyb3dzZXJzOlsiTzExLjUiXSx2YWx1ZXM6W3tuYW1lOiJhbGwiLGRlc2NyaXB0aW9uOiJFdmVyeSBwcm9wZXJ0eSB0aGF0IGlzIGFibGUgdG8gdW5kZXJnbyBhIHRyYW5zaXRpb24gd2lsbCBkbyBzby4ifSx7bmFtZToibm9uZSIsZGVzY3JpcHRpb246Ik5vIHByb3BlcnR5IHdpbGwgdHJhbnNpdGlvbi4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgdGhlIG5hbWUgb2YgdGhlIENTUyBwcm9wZXJ0eSB0byB3aGljaCB0aGUgdHJhbnNpdGlvbiBpcyBhcHBsaWVkLiIscmVzdHJpY3Rpb25zOlsicHJvcGVydHkiXX0se25hbWU6Ii1vLXRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uIixicm93c2VyczpbIk8xMS41Il0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJEZXNjcmliZXMgaG93IHRoZSBpbnRlcm1lZGlhdGUgdmFsdWVzIHVzZWQgZHVyaW5nIGEgdHJhbnNpdGlvbiB3aWxsIGJlIGNhbGN1bGF0ZWQuIixyZXN0cmljdGlvbnM6WyJ0aW1pbmctZnVuY3Rpb24iXX0se25hbWU6Im9mZnNldC1ibG9jay1lbmQiLGJyb3dzZXJzOlsiRkY0MSJdLHZhbHVlczpbe25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJGb3Igbm9uLXJlcGxhY2VkIGVsZW1lbnRzLCB0aGUgZWZmZWN0IG9mIHRoaXMgdmFsdWUgZGVwZW5kcyBvbiB3aGljaCBvZiByZWxhdGVkIHByb3BlcnRpZXMgaGF2ZSB0aGUgdmFsdWUgJ2F1dG8nIGFzIHdlbGwuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiTG9naWNhbCAnYm90dG9tJy4gTWFwcGluZyBkZXBlbmRzIG9uIHRoZSBwYXJlbnQgZWxlbWVudCdzICd3cml0aW5nLW1vZGUnLCAnZGlyZWN0aW9uJywgYW5kICd0ZXh0LW9yaWVudGF0aW9uJy4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsInBlcmNlbnRhZ2UiXX0se25hbWU6Im9mZnNldC1ibG9jay1zdGFydCIsYnJvd3NlcnM6WyJGRjQxIl0sdmFsdWVzOlt7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IkZvciBub24tcmVwbGFjZWQgZWxlbWVudHMsIHRoZSBlZmZlY3Qgb2YgdGhpcyB2YWx1ZSBkZXBlbmRzIG9uIHdoaWNoIG9mIHJlbGF0ZWQgcHJvcGVydGllcyBoYXZlIHRoZSB2YWx1ZSAnYXV0bycgYXMgd2VsbC4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJMb2dpY2FsICd0b3AnLiBNYXBwaW5nIGRlcGVuZHMgb24gdGhlIHBhcmVudCBlbGVtZW50J3MgJ3dyaXRpbmctbW9kZScsICdkaXJlY3Rpb24nLCBhbmQgJ3RleHQtb3JpZW50YXRpb24nLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwicGVyY2VudGFnZSJdfSx7bmFtZToib2Zmc2V0LWlubGluZS1lbmQiLGJyb3dzZXJzOlsiRkY0MSJdLHZhbHVlczpbe25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJGb3Igbm9uLXJlcGxhY2VkIGVsZW1lbnRzLCB0aGUgZWZmZWN0IG9mIHRoaXMgdmFsdWUgZGVwZW5kcyBvbiB3aGljaCBvZiByZWxhdGVkIHByb3BlcnRpZXMgaGF2ZSB0aGUgdmFsdWUgJ2F1dG8nIGFzIHdlbGwuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiTG9naWNhbCAncmlnaHQnLiBNYXBwaW5nIGRlcGVuZHMgb24gdGhlIHBhcmVudCBlbGVtZW50J3MgJ3dyaXRpbmctbW9kZScsICdkaXJlY3Rpb24nLCBhbmQgJ3RleHQtb3JpZW50YXRpb24nLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwicGVyY2VudGFnZSJdfSx7bmFtZToib2Zmc2V0LWlubGluZS1zdGFydCIsYnJvd3NlcnM6WyJGRjQxIl0sdmFsdWVzOlt7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IkZvciBub24tcmVwbGFjZWQgZWxlbWVudHMsIHRoZSBlZmZlY3Qgb2YgdGhpcyB2YWx1ZSBkZXBlbmRzIG9uIHdoaWNoIG9mIHJlbGF0ZWQgcHJvcGVydGllcyBoYXZlIHRoZSB2YWx1ZSAnYXV0bycgYXMgd2VsbC4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJMb2dpY2FsICdsZWZ0Jy4gTWFwcGluZyBkZXBlbmRzIG9uIHRoZSBwYXJlbnQgZWxlbWVudCdzICd3cml0aW5nLW1vZGUnLCAnZGlyZWN0aW9uJywgYW5kICd0ZXh0LW9yaWVudGF0aW9uJy4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsInBlcmNlbnRhZ2UiXX0se25hbWU6Im91dGxpbmUiLGJyb3dzZXJzOlsiRTk0IiwiRkY4OCIsIlMxNi40IiwiQzk0IiwiSUU4IiwiTzgwIl0sdmFsdWVzOlt7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IlBlcm1pdHMgdGhlIHVzZXIgYWdlbnQgdG8gcmVuZGVyIGEgY3VzdG9tIG91dGxpbmUgc3R5bGUsIHR5cGljYWxseSB0aGUgZGVmYXVsdCBwbGF0Zm9ybSBzdHlsZS4ifSx7bmFtZToiaW52ZXJ0Iixicm93c2VyczpbIkU5NCIsIkZGODgiLCJTMTYuNCIsIkM5NCIsIklFOCIsIk84MCJdLGRlc2NyaXB0aW9uOiJQZXJmb3JtcyBhIGNvbG9yIGludmVyc2lvbiBvbiB0aGUgcGl4ZWxzIG9uIHRoZSBzY3JlZW4uIn1dLHN5bnRheDoiWyA8J291dGxpbmUtY29sb3InPiB8fCA8J291dGxpbmUtc3R5bGUnPiB8fCA8J291dGxpbmUtd2lkdGgnPiBdIixyZWxldmFuY2U6ODgscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL291dGxpbmUifV0sZGVzY3JpcHRpb246IlNob3J0aGFuZCBwcm9wZXJ0eSBmb3IgJ291dGxpbmUtc3R5bGUnLCAnb3V0bGluZS13aWR0aCcsIGFuZCAnb3V0bGluZS1jb2xvcicuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJsaW5lLXdpZHRoIiwibGluZS1zdHlsZSIsImNvbG9yIiwiZW51bSJdfSx7bmFtZToib3V0bGluZS1jb2xvciIsYnJvd3NlcnM6WyJFMTIiLCJGRjEuNSIsIlMxLjIiLCJDMSIsIklFOCIsIk83Il0sdmFsdWVzOlt7bmFtZToiaW52ZXJ0Iixicm93c2VyczpbIkUxMiIsIkZGMS41IiwiUzEuMiIsIkMxIiwiSUU4IiwiTzciXSxkZXNjcmlwdGlvbjoiUGVyZm9ybXMgYSBjb2xvciBpbnZlcnNpb24gb24gdGhlIHBpeGVscyBvbiB0aGUgc2NyZWVuLiJ9XSxzeW50YXg6ImF1dG8gfCA8Y29sb3I+IixyZWxldmFuY2U6NjEscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL291dGxpbmUtY29sb3IifV0sZGVzY3JpcHRpb246IlRoZSBjb2xvciBvZiB0aGUgb3V0bGluZS4iLHJlc3RyaWN0aW9uczpbImVudW0iLCJjb2xvciJdfSx7bmFtZToib3V0bGluZS1vZmZzZXQiLGJyb3dzZXJzOlsiRTE1IiwiRkYxLjUiLCJTMS4yIiwiQzEiLCJPOS41Il0sc3ludGF4OiI8bGVuZ3RoPiIscmVsZXZhbmNlOjY5LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9vdXRsaW5lLW9mZnNldCJ9XSxkZXNjcmlwdGlvbjoiT2Zmc2V0IHRoZSBvdXRsaW5lIGFuZCBkcmF3IGl0IGJleW9uZCB0aGUgYm9yZGVyIGVkZ2UuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiXX0se25hbWU6Im91dGxpbmUtc3R5bGUiLGJyb3dzZXJzOlsiRTEyIiwiRkYxLjUiLCJTMS4yIiwiQzEiLCJJRTgiLCJPNyJdLHZhbHVlczpbe25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJQZXJtaXRzIHRoZSB1c2VyIGFnZW50IHRvIHJlbmRlciBhIGN1c3RvbSBvdXRsaW5lIHN0eWxlLCB0eXBpY2FsbHkgdGhlIGRlZmF1bHQgcGxhdGZvcm0gc3R5bGUuIn1dLHN5bnRheDoiYXV0byB8IDwnYm9yZGVyLXN0eWxlJz4iLHJlbGV2YW5jZTo2MSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1Mvb3V0bGluZS1zdHlsZSJ9XSxkZXNjcmlwdGlvbjoiU3R5bGUgb2YgdGhlIG91dGxpbmUuIixyZXN0cmljdGlvbnM6WyJsaW5lLXN0eWxlIiwiZW51bSJdfSx7bmFtZToib3V0bGluZS13aWR0aCIsYnJvd3NlcnM6WyJFMTIiLCJGRjEuNSIsIlMxLjIiLCJDMSIsIklFOCIsIk83Il0sc3ludGF4OiI8bGluZS13aWR0aD4iLHJlbGV2YW5jZTo2MixyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1Mvb3V0bGluZS13aWR0aCJ9XSxkZXNjcmlwdGlvbjoiV2lkdGggb2YgdGhlIG91dGxpbmUuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJsaW5lLXdpZHRoIl19LHtuYW1lOiJvdmVyZmxvdyIsYnJvd3NlcnM6WyJFMTIiLCJGRjEiLCJTMSIsIkMxIiwiSUU0IiwiTzciXSx2YWx1ZXM6W3tuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiVGhlIGJlaGF2aW9yIG9mIHRoZSAnYXV0bycgdmFsdWUgaXMgVUEtZGVwZW5kZW50LCBidXQgc2hvdWxkIGNhdXNlIGEgc2Nyb2xsaW5nIG1lY2hhbmlzbSB0byBiZSBwcm92aWRlZCBmb3Igb3ZlcmZsb3dpbmcgYm94ZXMuIn0se25hbWU6ImhpZGRlbiIsZGVzY3JpcHRpb246IkNvbnRlbnQgaXMgY2xpcHBlZCBhbmQgbm8gc2Nyb2xsaW5nIG1lY2hhbmlzbSBzaG91bGQgYmUgcHJvdmlkZWQgdG8gdmlldyB0aGUgY29udGVudCBvdXRzaWRlIHRoZSBjbGlwcGluZyByZWdpb24uIn0se25hbWU6Ii1tb3otaGlkZGVuLXVuc2Nyb2xsYWJsZSIsYnJvd3NlcnM6WyJFMTIiLCJGRjEiLCJTMSIsIkMxIiwiSUU0IiwiTzciXSxkZXNjcmlwdGlvbjoiU2FtZSBhcyB0aGUgc3RhbmRhcmRpemVkICdjbGlwJywgZXhjZXB0IGRvZXNuJ3QgZXN0YWJsaXNoIGEgYmxvY2sgZm9ybWF0dGluZyBjb250ZXh0LiJ9LHtuYW1lOiJzY3JvbGwiLGRlc2NyaXB0aW9uOiJDb250ZW50IGlzIGNsaXBwZWQgYW5kIGlmIHRoZSB1c2VyIGFnZW50IHVzZXMgYSBzY3JvbGxpbmcgbWVjaGFuaXNtIHRoYXQgaXMgdmlzaWJsZSBvbiB0aGUgc2NyZWVuIChzdWNoIGFzIGEgc2Nyb2xsIGJhciBvciBhIHBhbm5lciksIHRoYXQgbWVjaGFuaXNtIHNob3VsZCBiZSBkaXNwbGF5ZWQgZm9yIGEgYm94IHdoZXRoZXIgb3Igbm90IGFueSBvZiBpdHMgY29udGVudCBpcyBjbGlwcGVkLiJ9LHtuYW1lOiJ2aXNpYmxlIixkZXNjcmlwdGlvbjoiQ29udGVudCBpcyBub3QgY2xpcHBlZCwgaS5lLiwgaXQgbWF5IGJlIHJlbmRlcmVkIG91dHNpZGUgdGhlIGNvbnRlbnQgYm94LiJ9XSxzeW50YXg6IlsgdmlzaWJsZSB8IGhpZGRlbiB8IGNsaXAgfCBzY3JvbGwgfCBhdXRvIF17MSwyfSIscmVsZXZhbmNlOjkzLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9vdmVyZmxvdyJ9XSxkZXNjcmlwdGlvbjoiU2hvcnRoYW5kIGZvciBzZXR0aW5nICdvdmVyZmxvdy14JyBhbmQgJ292ZXJmbG93LXknLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToib3ZlcmZsb3ctd3JhcCIsYnJvd3NlcnM6WyJFMTgiLCJGRjQ5IiwiUzciLCJDMjMiLCJJRTUuNSIsIk8xMi4xIl0sdmFsdWVzOlt7bmFtZToiYnJlYWstd29yZCIsZGVzY3JpcHRpb246IkFuIG90aGVyd2lzZSB1bmJyZWFrYWJsZSBzZXF1ZW5jZSBvZiBjaGFyYWN0ZXJzIG1heSBiZSBicm9rZW4gYXQgYW4gYXJiaXRyYXJ5IHBvaW50IGlmIHRoZXJlIGFyZSBubyBvdGhlcndpc2UtYWNjZXB0YWJsZSBicmVhayBwb2ludHMgaW4gdGhlIGxpbmUuIn0se25hbWU6Im5vcm1hbCIsZGVzY3JpcHRpb246IkxpbmVzIG1heSBicmVhayBvbmx5IGF0IGFsbG93ZWQgYnJlYWsgcG9pbnRzLiJ9XSxzeW50YXg6Im5vcm1hbCB8IGJyZWFrLXdvcmQgfCBhbnl3aGVyZSIscmVsZXZhbmNlOjY1LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9vdmVyZmxvdy13cmFwIn1dLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgd2hldGhlciB0aGUgVUEgbWF5IGJyZWFrIHdpdGhpbiBhIHdvcmQgdG8gcHJldmVudCBvdmVyZmxvdyB3aGVuIGFuIG90aGVyd2lzZS11bmJyZWFrYWJsZSBzdHJpbmcgaXMgdG9vIGxvbmcgdG8gZml0IHdpdGhpbiB0aGUgbGluZSBib3guIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJvdmVyZmxvdy14Iixicm93c2VyczpbIkUxMiIsIkZGMy41IiwiUzMiLCJDMSIsIklFNSIsIk85LjUiXSx2YWx1ZXM6W3tuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiVGhlIGJlaGF2aW9yIG9mIHRoZSAnYXV0bycgdmFsdWUgaXMgVUEtZGVwZW5kZW50LCBidXQgc2hvdWxkIGNhdXNlIGEgc2Nyb2xsaW5nIG1lY2hhbmlzbSB0byBiZSBwcm92aWRlZCBmb3Igb3ZlcmZsb3dpbmcgYm94ZXMuIn0se25hbWU6ImhpZGRlbiIsZGVzY3JpcHRpb246IkNvbnRlbnQgaXMgY2xpcHBlZCBhbmQgbm8gc2Nyb2xsaW5nIG1lY2hhbmlzbSBzaG91bGQgYmUgcHJvdmlkZWQgdG8gdmlldyB0aGUgY29udGVudCBvdXRzaWRlIHRoZSBjbGlwcGluZyByZWdpb24uIn0se25hbWU6InNjcm9sbCIsZGVzY3JpcHRpb246IkNvbnRlbnQgaXMgY2xpcHBlZCBhbmQgaWYgdGhlIHVzZXIgYWdlbnQgdXNlcyBhIHNjcm9sbGluZyBtZWNoYW5pc20gdGhhdCBpcyB2aXNpYmxlIG9uIHRoZSBzY3JlZW4gKHN1Y2ggYXMgYSBzY3JvbGwgYmFyIG9yIGEgcGFubmVyKSwgdGhhdCBtZWNoYW5pc20gc2hvdWxkIGJlIGRpc3BsYXllZCBmb3IgYSBib3ggd2hldGhlciBvciBub3QgYW55IG9mIGl0cyBjb250ZW50IGlzIGNsaXBwZWQuIn0se25hbWU6InZpc2libGUiLGRlc2NyaXB0aW9uOiJDb250ZW50IGlzIG5vdCBjbGlwcGVkLCBpLmUuLCBpdCBtYXkgYmUgcmVuZGVyZWQgb3V0c2lkZSB0aGUgY29udGVudCBib3guIn1dLHN5bnRheDoidmlzaWJsZSB8IGhpZGRlbiB8IGNsaXAgfCBzY3JvbGwgfCBhdXRvIixyZWxldmFuY2U6ODEscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL292ZXJmbG93LXgifV0sZGVzY3JpcHRpb246IlNwZWNpZmllcyB0aGUgaGFuZGxpbmcgb2Ygb3ZlcmZsb3cgaW4gdGhlIGhvcml6b250YWwgZGlyZWN0aW9uLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToib3ZlcmZsb3cteSIsYnJvd3NlcnM6WyJFMTIiLCJGRjMuNSIsIlMzIiwiQzEiLCJJRTUiLCJPOS41Il0sdmFsdWVzOlt7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IlRoZSBiZWhhdmlvciBvZiB0aGUgJ2F1dG8nIHZhbHVlIGlzIFVBLWRlcGVuZGVudCwgYnV0IHNob3VsZCBjYXVzZSBhIHNjcm9sbGluZyBtZWNoYW5pc20gdG8gYmUgcHJvdmlkZWQgZm9yIG92ZXJmbG93aW5nIGJveGVzLiJ9LHtuYW1lOiJoaWRkZW4iLGRlc2NyaXB0aW9uOiJDb250ZW50IGlzIGNsaXBwZWQgYW5kIG5vIHNjcm9sbGluZyBtZWNoYW5pc20gc2hvdWxkIGJlIHByb3ZpZGVkIHRvIHZpZXcgdGhlIGNvbnRlbnQgb3V0c2lkZSB0aGUgY2xpcHBpbmcgcmVnaW9uLiJ9LHtuYW1lOiJzY3JvbGwiLGRlc2NyaXB0aW9uOiJDb250ZW50IGlzIGNsaXBwZWQgYW5kIGlmIHRoZSB1c2VyIGFnZW50IHVzZXMgYSBzY3JvbGxpbmcgbWVjaGFuaXNtIHRoYXQgaXMgdmlzaWJsZSBvbiB0aGUgc2NyZWVuIChzdWNoIGFzIGEgc2Nyb2xsIGJhciBvciBhIHBhbm5lciksIHRoYXQgbWVjaGFuaXNtIHNob3VsZCBiZSBkaXNwbGF5ZWQgZm9yIGEgYm94IHdoZXRoZXIgb3Igbm90IGFueSBvZiBpdHMgY29udGVudCBpcyBjbGlwcGVkLiJ9LHtuYW1lOiJ2aXNpYmxlIixkZXNjcmlwdGlvbjoiQ29udGVudCBpcyBub3QgY2xpcHBlZCwgaS5lLiwgaXQgbWF5IGJlIHJlbmRlcmVkIG91dHNpZGUgdGhlIGNvbnRlbnQgYm94LiJ9XSxzeW50YXg6InZpc2libGUgfCBoaWRkZW4gfCBjbGlwIHwgc2Nyb2xsIHwgYXV0byIscmVsZXZhbmNlOjgyLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9vdmVyZmxvdy15In1dLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgdGhlIGhhbmRsaW5nIG9mIG92ZXJmbG93IGluIHRoZSB2ZXJ0aWNhbCBkaXJlY3Rpb24uIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJwYWQiLGJyb3dzZXJzOlsiRkYzMyJdLGF0UnVsZToiQGNvdW50ZXItc3R5bGUiLHN5bnRheDoiPGludGVnZXI+ICYmIDxzeW1ib2w+IixyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246J0Bjb3VudGVyLXN0eWxlIGRlc2NyaXB0b3IuIFNwZWNpZmllcyBhICJmaXhlZC13aWR0aCIgY291bnRlciBzdHlsZSwgd2hlcmUgcmVwcmVzZW50YXRpb25zIHNob3J0ZXIgdGhhbiB0aGUgcGFkIHZhbHVlIGFyZSBwYWRkZWQgd2l0aCBhIHBhcnRpY3VsYXIgPHN5bWJvbD4nLHJlc3RyaWN0aW9uczpbImludGVnZXIiLCJpbWFnZSIsInN0cmluZyIsImlkZW50aWZpZXIiXX0se25hbWU6InBhZGRpbmciLGJyb3dzZXJzOlsiRTEyIiwiRkYxIiwiUzEiLCJDMSIsIklFNCIsIk8zLjUiXSx2YWx1ZXM6W10sc3ludGF4OiJbIDxsZW5ndGg+IHwgPHBlcmNlbnRhZ2U+IF17MSw0fSIscmVsZXZhbmNlOjk1LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9wYWRkaW5nIn1dLGRlc2NyaXB0aW9uOiJTaG9ydGhhbmQgcHJvcGVydHkgdG8gc2V0IHZhbHVlcyBmb3IgdGhlIHRoaWNrbmVzcyBvZiB0aGUgcGFkZGluZyBhcmVhLiBJZiBsZWZ0IGlzIG9taXR0ZWQsIGl0IGlzIHRoZSBzYW1lIGFzIHJpZ2h0LiBJZiBib3R0b20gaXMgb21pdHRlZCBpdCBpcyB0aGUgc2FtZSBhcyB0b3AsIGlmIHJpZ2h0IGlzIG9taXR0ZWQgaXQgaXMgdGhlIHNhbWUgYXMgdG9wLiBUaGUgdmFsdWUgbWF5IG5vdCBiZSBuZWdhdGl2ZS4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsInBlcmNlbnRhZ2UiXX0se25hbWU6InBhZGRpbmctYm90dG9tIixicm93c2VyczpbIkUxMiIsIkZGMSIsIlMxIiwiQzEiLCJJRTQiLCJPMy41Il0sc3ludGF4OiI8bGVuZ3RoPiB8IDxwZXJjZW50YWdlPiIscmVsZXZhbmNlOjg4LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9wYWRkaW5nLWJvdHRvbSJ9XSxkZXNjcmlwdGlvbjoiU2hvcnRoYW5kIHByb3BlcnR5IHRvIHNldCB2YWx1ZXMgZm9yIHRoZSB0aGlja25lc3Mgb2YgdGhlIHBhZGRpbmcgYXJlYS4gSWYgbGVmdCBpcyBvbWl0dGVkLCBpdCBpcyB0aGUgc2FtZSBhcyByaWdodC4gSWYgYm90dG9tIGlzIG9taXR0ZWQgaXQgaXMgdGhlIHNhbWUgYXMgdG9wLCBpZiByaWdodCBpcyBvbWl0dGVkIGl0IGlzIHRoZSBzYW1lIGFzIHRvcC4gVGhlIHZhbHVlIG1heSBub3QgYmUgbmVnYXRpdmUuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJwZXJjZW50YWdlIl19LHtuYW1lOiJwYWRkaW5nLWJsb2NrLWVuZCIsYnJvd3NlcnM6WyJFNzkiLCJGRjQxIiwiUzEyLjEiLCJDNjkiLCJPNTYiXSxzeW50YXg6IjwncGFkZGluZy1sZWZ0Jz4iLHJlbGV2YW5jZTo1MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvcGFkZGluZy1ibG9jay1lbmQifV0sZGVzY3JpcHRpb246IkxvZ2ljYWwgJ3BhZGRpbmctYm90dG9tJy4gTWFwcGluZyBkZXBlbmRzIG9uIHRoZSBwYXJlbnQgZWxlbWVudCdzICd3cml0aW5nLW1vZGUnLCAnZGlyZWN0aW9uJywgYW5kICd0ZXh0LW9yaWVudGF0aW9uJy4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsInBlcmNlbnRhZ2UiXX0se25hbWU6InBhZGRpbmctYmxvY2stc3RhcnQiLGJyb3dzZXJzOlsiRTc5IiwiRkY0MSIsIlMxMi4xIiwiQzY5IiwiTzU2Il0sc3ludGF4OiI8J3BhZGRpbmctbGVmdCc+IixyZWxldmFuY2U6NTAscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3BhZGRpbmctYmxvY2stc3RhcnQifV0sZGVzY3JpcHRpb246IkxvZ2ljYWwgJ3BhZGRpbmctdG9wJy4gTWFwcGluZyBkZXBlbmRzIG9uIHRoZSBwYXJlbnQgZWxlbWVudCdzICd3cml0aW5nLW1vZGUnLCAnZGlyZWN0aW9uJywgYW5kICd0ZXh0LW9yaWVudGF0aW9uJy4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsInBlcmNlbnRhZ2UiXX0se25hbWU6InBhZGRpbmctaW5saW5lLWVuZCIsYnJvd3NlcnM6WyJFNzkiLCJGRjQxIiwiUzEyLjEiLCJDNjkiLCJPNTYiXSxzeW50YXg6IjwncGFkZGluZy1sZWZ0Jz4iLHJlbGV2YW5jZTo1NSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvcGFkZGluZy1pbmxpbmUtZW5kIn1dLGRlc2NyaXB0aW9uOiJMb2dpY2FsICdwYWRkaW5nLXJpZ2h0Jy4gTWFwcGluZyBkZXBlbmRzIG9uIHRoZSBwYXJlbnQgZWxlbWVudCdzICd3cml0aW5nLW1vZGUnLCAnZGlyZWN0aW9uJywgYW5kICd0ZXh0LW9yaWVudGF0aW9uJy4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsInBlcmNlbnRhZ2UiXX0se25hbWU6InBhZGRpbmctaW5saW5lLXN0YXJ0Iixicm93c2VyczpbIkU3OSIsIkZGNDEiLCJTMTIuMSIsIkM2OSIsIk81NiJdLHN5bnRheDoiPCdwYWRkaW5nLWxlZnQnPiIscmVsZXZhbmNlOjU2LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9wYWRkaW5nLWlubGluZS1zdGFydCJ9XSxkZXNjcmlwdGlvbjoiTG9naWNhbCAncGFkZGluZy1sZWZ0Jy4gTWFwcGluZyBkZXBlbmRzIG9uIHRoZSBwYXJlbnQgZWxlbWVudCdzICd3cml0aW5nLW1vZGUnLCAnZGlyZWN0aW9uJywgYW5kICd0ZXh0LW9yaWVudGF0aW9uJy4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsInBlcmNlbnRhZ2UiXX0se25hbWU6InBhZGRpbmctbGVmdCIsYnJvd3NlcnM6WyJFMTIiLCJGRjEiLCJTMSIsIkMxIiwiSUU0IiwiTzMuNSJdLHN5bnRheDoiPGxlbmd0aD4gfCA8cGVyY2VudGFnZT4iLHJlbGV2YW5jZTo4OSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvcGFkZGluZy1sZWZ0In1dLGRlc2NyaXB0aW9uOiJTaG9ydGhhbmQgcHJvcGVydHkgdG8gc2V0IHZhbHVlcyBmb3IgdGhlIHRoaWNrbmVzcyBvZiB0aGUgcGFkZGluZyBhcmVhLiBJZiBsZWZ0IGlzIG9taXR0ZWQsIGl0IGlzIHRoZSBzYW1lIGFzIHJpZ2h0LiBJZiBib3R0b20gaXMgb21pdHRlZCBpdCBpcyB0aGUgc2FtZSBhcyB0b3AsIGlmIHJpZ2h0IGlzIG9taXR0ZWQgaXQgaXMgdGhlIHNhbWUgYXMgdG9wLiBUaGUgdmFsdWUgbWF5IG5vdCBiZSBuZWdhdGl2ZS4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsInBlcmNlbnRhZ2UiXX0se25hbWU6InBhZGRpbmctcmlnaHQiLGJyb3dzZXJzOlsiRTEyIiwiRkYxIiwiUzEiLCJDMSIsIklFNCIsIk8zLjUiXSxzeW50YXg6IjxsZW5ndGg+IHwgPHBlcmNlbnRhZ2U+IixyZWxldmFuY2U6ODgscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3BhZGRpbmctcmlnaHQifV0sZGVzY3JpcHRpb246IlNob3J0aGFuZCBwcm9wZXJ0eSB0byBzZXQgdmFsdWVzIGZvciB0aGUgdGhpY2tuZXNzIG9mIHRoZSBwYWRkaW5nIGFyZWEuIElmIGxlZnQgaXMgb21pdHRlZCwgaXQgaXMgdGhlIHNhbWUgYXMgcmlnaHQuIElmIGJvdHRvbSBpcyBvbWl0dGVkIGl0IGlzIHRoZSBzYW1lIGFzIHRvcCwgaWYgcmlnaHQgaXMgb21pdHRlZCBpdCBpcyB0aGUgc2FtZSBhcyB0b3AuIFRoZSB2YWx1ZSBtYXkgbm90IGJlIG5lZ2F0aXZlLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwicGVyY2VudGFnZSJdfSx7bmFtZToicGFkZGluZy10b3AiLGJyb3dzZXJzOlsiRTEyIiwiRkYxIiwiUzEiLCJDMSIsIklFNCIsIk8zLjUiXSxzeW50YXg6IjxsZW5ndGg+IHwgPHBlcmNlbnRhZ2U+IixyZWxldmFuY2U6ODkscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3BhZGRpbmctdG9wIn1dLGRlc2NyaXB0aW9uOiJTaG9ydGhhbmQgcHJvcGVydHkgdG8gc2V0IHZhbHVlcyBmb3IgdGhlIHRoaWNrbmVzcyBvZiB0aGUgcGFkZGluZyBhcmVhLiBJZiBsZWZ0IGlzIG9taXR0ZWQsIGl0IGlzIHRoZSBzYW1lIGFzIHJpZ2h0LiBJZiBib3R0b20gaXMgb21pdHRlZCBpdCBpcyB0aGUgc2FtZSBhcyB0b3AsIGlmIHJpZ2h0IGlzIG9taXR0ZWQgaXQgaXMgdGhlIHNhbWUgYXMgdG9wLiBUaGUgdmFsdWUgbWF5IG5vdCBiZSBuZWdhdGl2ZS4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsInBlcmNlbnRhZ2UiXX0se25hbWU6InBhZ2UtYnJlYWstYWZ0ZXIiLGJyb3dzZXJzOlsiRTEyIiwiRkYxIiwiUzEuMiIsIkMxIiwiSUU0IiwiTzciXSx2YWx1ZXM6W3tuYW1lOiJhbHdheXMiLGRlc2NyaXB0aW9uOiJBbHdheXMgZm9yY2UgYSBwYWdlIGJyZWFrIGFmdGVyIHRoZSBnZW5lcmF0ZWQgYm94LiJ9LHtuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiTmVpdGhlciBmb3JjZSBub3IgZm9yYmlkIGEgcGFnZSBicmVhayBhZnRlciBnZW5lcmF0ZWQgYm94LiJ9LHtuYW1lOiJhdm9pZCIsZGVzY3JpcHRpb246IkF2b2lkIGEgcGFnZSBicmVhayBhZnRlciB0aGUgZ2VuZXJhdGVkIGJveC4ifSx7bmFtZToibGVmdCIsZGVzY3JpcHRpb246IkZvcmNlIG9uZSBvciB0d28gcGFnZSBicmVha3MgYWZ0ZXIgdGhlIGdlbmVyYXRlZCBib3ggc28gdGhhdCB0aGUgbmV4dCBwYWdlIGlzIGZvcm1hdHRlZCBhcyBhIGxlZnQgcGFnZS4ifSx7bmFtZToicmlnaHQiLGRlc2NyaXB0aW9uOiJGb3JjZSBvbmUgb3IgdHdvIHBhZ2UgYnJlYWtzIGFmdGVyIHRoZSBnZW5lcmF0ZWQgYm94IHNvIHRoYXQgdGhlIG5leHQgcGFnZSBpcyBmb3JtYXR0ZWQgYXMgYSByaWdodCBwYWdlLiJ9XSxzeW50YXg6ImF1dG8gfCBhbHdheXMgfCBhdm9pZCB8IGxlZnQgfCByaWdodCB8IHJlY3RvIHwgdmVyc28iLHJlbGV2YW5jZTo1MixyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvcGFnZS1icmVhay1hZnRlciJ9XSxkZXNjcmlwdGlvbjoiRGVmaW5lcyBydWxlcyBmb3IgcGFnZSBicmVha3MgYWZ0ZXIgYW4gZWxlbWVudC4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6InBhZ2UtYnJlYWstYmVmb3JlIixicm93c2VyczpbIkUxMiIsIkZGMSIsIlMxLjIiLCJDMSIsIklFNCIsIk83Il0sdmFsdWVzOlt7bmFtZToiYWx3YXlzIixkZXNjcmlwdGlvbjoiQWx3YXlzIGZvcmNlIGEgcGFnZSBicmVhayBiZWZvcmUgdGhlIGdlbmVyYXRlZCBib3guIn0se25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJOZWl0aGVyIGZvcmNlIG5vciBmb3JiaWQgYSBwYWdlIGJyZWFrIGJlZm9yZSB0aGUgZ2VuZXJhdGVkIGJveC4ifSx7bmFtZToiYXZvaWQiLGRlc2NyaXB0aW9uOiJBdm9pZCBhIHBhZ2UgYnJlYWsgYmVmb3JlIHRoZSBnZW5lcmF0ZWQgYm94LiJ9LHtuYW1lOiJsZWZ0IixkZXNjcmlwdGlvbjoiRm9yY2Ugb25lIG9yIHR3byBwYWdlIGJyZWFrcyBiZWZvcmUgdGhlIGdlbmVyYXRlZCBib3ggc28gdGhhdCB0aGUgbmV4dCBwYWdlIGlzIGZvcm1hdHRlZCBhcyBhIGxlZnQgcGFnZS4ifSx7bmFtZToicmlnaHQiLGRlc2NyaXB0aW9uOiJGb3JjZSBvbmUgb3IgdHdvIHBhZ2UgYnJlYWtzIGJlZm9yZSB0aGUgZ2VuZXJhdGVkIGJveCBzbyB0aGF0IHRoZSBuZXh0IHBhZ2UgaXMgZm9ybWF0dGVkIGFzIGEgcmlnaHQgcGFnZS4ifV0sc3ludGF4OiJhdXRvIHwgYWx3YXlzIHwgYXZvaWQgfCBsZWZ0IHwgcmlnaHQgfCByZWN0byB8IHZlcnNvIixyZWxldmFuY2U6NTAscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3BhZ2UtYnJlYWstYmVmb3JlIn1dLGRlc2NyaXB0aW9uOiJEZWZpbmVzIHJ1bGVzIGZvciBwYWdlIGJyZWFrcyBiZWZvcmUgYW4gZWxlbWVudC4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6InBhZ2UtYnJlYWstaW5zaWRlIixicm93c2VyczpbIkUxMiIsIkZGMTkiLCJTMS4zIiwiQzEiLCJJRTgiLCJPNyJdLHZhbHVlczpbe25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJOZWl0aGVyIGZvcmNlIG5vciBmb3JiaWQgYSBwYWdlIGJyZWFrIGluc2lkZSB0aGUgZ2VuZXJhdGVkIGJveC4ifSx7bmFtZToiYXZvaWQiLGRlc2NyaXB0aW9uOiJBdm9pZCBhIHBhZ2UgYnJlYWsgaW5zaWRlIHRoZSBnZW5lcmF0ZWQgYm94LiJ9XSxzeW50YXg6ImF1dG8gfCBhdm9pZCIscmVsZXZhbmNlOjUzLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9wYWdlLWJyZWFrLWluc2lkZSJ9XSxkZXNjcmlwdGlvbjoiRGVmaW5lcyBydWxlcyBmb3IgcGFnZSBicmVha3MgaW5zaWRlIGFuIGVsZW1lbnQuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJwYWludC1vcmRlciIsYnJvd3NlcnM6WyJFNzkiLCJGRjYwIiwiUzExIiwiQzM1IiwiTzIyIl0sdmFsdWVzOlt7bmFtZToiZmlsbCJ9LHtuYW1lOiJtYXJrZXJzIn0se25hbWU6Im5vcm1hbCIsZGVzY3JpcHRpb246IlRoZSBlbGVtZW50IGlzIHBhaW50ZWQgd2l0aCB0aGUgc3RhbmRhcmQgb3JkZXIgb2YgcGFpbnRpbmcgb3BlcmF0aW9uczogdGhlICdmaWxsJyBpcyBwYWludGVkIGZpcnN0LCB0aGVuIGl0cyAnc3Ryb2tlJyBhbmQgZmluYWxseSBpdHMgbWFya2Vycy4ifSx7bmFtZToic3Ryb2tlIn1dLHN5bnRheDoibm9ybWFsIHwgWyBmaWxsIHx8IHN0cm9rZSB8fCBtYXJrZXJzIF0iLHJlbGV2YW5jZTo1MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvcGFpbnQtb3JkZXIifV0sZGVzY3JpcHRpb246IkNvbnRyb2xzIHRoZSBvcmRlciB0aGF0IHRoZSB0aHJlZSBwYWludCBvcGVyYXRpb25zIHRoYXQgc2hhcGVzIGFuZCB0ZXh0IGFyZSByZW5kZXJlZCB3aXRoOiB0aGVpciBmaWxsLCB0aGVpciBzdHJva2UgYW5kIGFueSBtYXJrZXJzIHRoZXkgbWlnaHQgaGF2ZS4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6InBlcnNwZWN0aXZlIixicm93c2VyczpbIkUxMiIsIkZGMTYiLCJTOSIsIkMzNiIsIklFMTAiLCJPMjMiXSx2YWx1ZXM6W3tuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiTm8gcGVyc3BlY3RpdmUgdHJhbnNmb3JtIGlzIGFwcGxpZWQuIn1dLHN5bnRheDoibm9uZSB8IDxsZW5ndGg+IixyZWxldmFuY2U6NTUscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3BlcnNwZWN0aXZlIn1dLGRlc2NyaXB0aW9uOiJBcHBsaWVzIHRoZSBzYW1lIHRyYW5zZm9ybSBhcyB0aGUgcGVyc3BlY3RpdmUoPG51bWJlcj4pIHRyYW5zZm9ybSBmdW5jdGlvbiwgZXhjZXB0IHRoYXQgaXQgYXBwbGllcyBvbmx5IHRvIHRoZSBwb3NpdGlvbmVkIG9yIHRyYW5zZm9ybWVkIGNoaWxkcmVuIG9mIHRoZSBlbGVtZW50LCBub3QgdG8gdGhlIHRyYW5zZm9ybSBvbiB0aGUgZWxlbWVudCBpdHNlbGYuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJlbnVtIl19LHtuYW1lOiJwZXJzcGVjdGl2ZS1vcmlnaW4iLGJyb3dzZXJzOlsiRTEyIiwiRkYxNiIsIlM5IiwiQzM2IiwiSUUxMCIsIk8yMyJdLHN5bnRheDoiPHBvc2l0aW9uPiIscmVsZXZhbmNlOjUxLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9wZXJzcGVjdGl2ZS1vcmlnaW4ifV0sZGVzY3JpcHRpb246IkVzdGFibGlzaGVzIHRoZSBvcmlnaW4gZm9yIHRoZSBwZXJzcGVjdGl2ZSBwcm9wZXJ0eS4gSXQgZWZmZWN0aXZlbHkgc2V0cyB0aGUgWCBhbmQgWSBwb3NpdGlvbiBhdCB3aGljaCB0aGUgdmlld2VyIGFwcGVhcnMgdG8gYmUgbG9va2luZyBhdCB0aGUgY2hpbGRyZW4gb2YgdGhlIGVsZW1lbnQuIixyZXN0cmljdGlvbnM6WyJwb3NpdGlvbiIsInBlcmNlbnRhZ2UiLCJsZW5ndGgiXX0se25hbWU6InBvaW50ZXItZXZlbnRzIixicm93c2VyczpbIkUxMiIsIkZGMS41IiwiUzQiLCJDMSIsIklFMTEiLCJPOSJdLHZhbHVlczpbe25hbWU6ImFsbCIsZGVzY3JpcHRpb246IlRoZSBnaXZlbiBlbGVtZW50IGNhbiBiZSB0aGUgdGFyZ2V0IGVsZW1lbnQgZm9yIHBvaW50ZXIgZXZlbnRzIHdoZW5ldmVyIHRoZSBwb2ludGVyIGlzIG92ZXIgZWl0aGVyIHRoZSBpbnRlcmlvciBvciB0aGUgcGVyaW1ldGVyIG9mIHRoZSBlbGVtZW50LiJ9LHtuYW1lOiJmaWxsIixkZXNjcmlwdGlvbjoiVGhlIGdpdmVuIGVsZW1lbnQgY2FuIGJlIHRoZSB0YXJnZXQgZWxlbWVudCBmb3IgcG9pbnRlciBldmVudHMgd2hlbmV2ZXIgdGhlIHBvaW50ZXIgaXMgb3ZlciB0aGUgaW50ZXJpb3Igb2YgdGhlIGVsZW1lbnQuIn0se25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJUaGUgZ2l2ZW4gZWxlbWVudCBkb2VzIG5vdCByZWNlaXZlIHBvaW50ZXIgZXZlbnRzLiJ9LHtuYW1lOiJwYWludGVkIixkZXNjcmlwdGlvbjonVGhlIGdpdmVuIGVsZW1lbnQgY2FuIGJlIHRoZSB0YXJnZXQgZWxlbWVudCBmb3IgcG9pbnRlciBldmVudHMgd2hlbiB0aGUgcG9pbnRlciBpcyBvdmVyIGEgInBhaW50ZWQiIGFyZWEuICd9LHtuYW1lOiJzdHJva2UiLGRlc2NyaXB0aW9uOiJUaGUgZ2l2ZW4gZWxlbWVudCBjYW4gYmUgdGhlIHRhcmdldCBlbGVtZW50IGZvciBwb2ludGVyIGV2ZW50cyB3aGVuZXZlciB0aGUgcG9pbnRlciBpcyBvdmVyIHRoZSBwZXJpbWV0ZXIgb2YgdGhlIGVsZW1lbnQuIn0se25hbWU6InZpc2libGUiLGRlc2NyaXB0aW9uOiJUaGUgZ2l2ZW4gZWxlbWVudCBjYW4gYmUgdGhlIHRhcmdldCBlbGVtZW50IGZvciBwb2ludGVyIGV2ZW50cyB3aGVuIHRoZSAndmlzaWJpbGl0eScgcHJvcGVydHkgaXMgc2V0IHRvIHZpc2libGUgYW5kIHRoZSBwb2ludGVyIGlzIG92ZXIgZWl0aGVyIHRoZSBpbnRlcmlvciBvciB0aGUgcGVyaW1ldGVyIG9mIHRoZSBlbGVtZW50LiJ9LHtuYW1lOiJ2aXNpYmxlRmlsbCIsZGVzY3JpcHRpb246IlRoZSBnaXZlbiBlbGVtZW50IGNhbiBiZSB0aGUgdGFyZ2V0IGVsZW1lbnQgZm9yIHBvaW50ZXIgZXZlbnRzIHdoZW4gdGhlICd2aXNpYmlsaXR5JyBwcm9wZXJ0eSBpcyBzZXQgdG8gdmlzaWJsZSBhbmQgd2hlbiB0aGUgcG9pbnRlciBpcyBvdmVyIHRoZSBpbnRlcmlvciBvZiB0aGUgZWxlbWVudC4ifSx7bmFtZToidmlzaWJsZVBhaW50ZWQiLGRlc2NyaXB0aW9uOiJUaGUgZ2l2ZW4gZWxlbWVudCBjYW4gYmUgdGhlIHRhcmdldCBlbGVtZW50IGZvciBwb2ludGVyIGV2ZW50cyB3aGVuIHRoZSAndmlzaWJpbGl0eScgcHJvcGVydHkgaXMgc2V0IHRvIHZpc2libGUgYW5kIHdoZW4gdGhlIHBvaW50ZXIgaXMgb3ZlciBhICdwYWludGVkJyBhcmVhLiJ9LHtuYW1lOiJ2aXNpYmxlU3Ryb2tlIixkZXNjcmlwdGlvbjoiVGhlIGdpdmVuIGVsZW1lbnQgY2FuIGJlIHRoZSB0YXJnZXQgZWxlbWVudCBmb3IgcG9pbnRlciBldmVudHMgd2hlbiB0aGUgJ3Zpc2liaWxpdHknIHByb3BlcnR5IGlzIHNldCB0byB2aXNpYmxlIGFuZCB3aGVuIHRoZSBwb2ludGVyIGlzIG92ZXIgdGhlIHBlcmltZXRlciBvZiB0aGUgZWxlbWVudC4ifV0sc3ludGF4OiJhdXRvIHwgbm9uZSB8IHZpc2libGVQYWludGVkIHwgdmlzaWJsZUZpbGwgfCB2aXNpYmxlU3Ryb2tlIHwgdmlzaWJsZSB8IHBhaW50ZWQgfCBmaWxsIHwgc3Ryb2tlIHwgYWxsIHwgaW5oZXJpdCIscmVsZXZhbmNlOjgyLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9wb2ludGVyLWV2ZW50cyJ9XSxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIHVuZGVyIHdoYXQgY2lyY3Vtc3RhbmNlcyBhIGdpdmVuIGVsZW1lbnQgY2FuIGJlIHRoZSB0YXJnZXQgZWxlbWVudCBmb3IgYSBwb2ludGVyIGV2ZW50LiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToicG9zaXRpb24iLGJyb3dzZXJzOlsiRTEyIiwiRkYxIiwiUzEiLCJDMSIsIklFNCIsIk80Il0sdmFsdWVzOlt7bmFtZToiYWJzb2x1dGUiLGRlc2NyaXB0aW9uOiJUaGUgYm94J3MgcG9zaXRpb24gKGFuZCBwb3NzaWJseSBzaXplKSBpcyBzcGVjaWZpZWQgd2l0aCB0aGUgJ3RvcCcsICdyaWdodCcsICdib3R0b20nLCBhbmQgJ2xlZnQnIHByb3BlcnRpZXMuIFRoZXNlIHByb3BlcnRpZXMgc3BlY2lmeSBvZmZzZXRzIHdpdGggcmVzcGVjdCB0byB0aGUgYm94J3MgJ2NvbnRhaW5pbmcgYmxvY2snLiJ9LHtuYW1lOiJmaXhlZCIsZGVzY3JpcHRpb246IlRoZSBib3gncyBwb3NpdGlvbiBpcyBjYWxjdWxhdGVkIGFjY29yZGluZyB0byB0aGUgJ2Fic29sdXRlJyBtb2RlbCwgYnV0IGluIGFkZGl0aW9uLCB0aGUgYm94IGlzIGZpeGVkIHdpdGggcmVzcGVjdCB0byBzb21lIHJlZmVyZW5jZS4gQXMgd2l0aCB0aGUgJ2Fic29sdXRlJyBtb2RlbCwgdGhlIGJveCdzIG1hcmdpbnMgZG8gbm90IGNvbGxhcHNlIHdpdGggYW55IG90aGVyIG1hcmdpbnMuIn0se25hbWU6Ii1tcy1wYWdlIixicm93c2VyczpbIkUxMiIsIkZGMSIsIlMxIiwiQzEiLCJJRTQiLCJPNCJdLGRlc2NyaXB0aW9uOiJUaGUgYm94J3MgcG9zaXRpb24gaXMgY2FsY3VsYXRlZCBhY2NvcmRpbmcgdG8gdGhlICdhYnNvbHV0ZScgbW9kZWwuIn0se25hbWU6InJlbGF0aXZlIixkZXNjcmlwdGlvbjoiVGhlIGJveCdzIHBvc2l0aW9uIGlzIGNhbGN1bGF0ZWQgYWNjb3JkaW5nIHRvIHRoZSBub3JtYWwgZmxvdyAodGhpcyBpcyBjYWxsZWQgdGhlIHBvc2l0aW9uIGluIG5vcm1hbCBmbG93KS4gVGhlbiB0aGUgYm94IGlzIG9mZnNldCByZWxhdGl2ZSB0byBpdHMgbm9ybWFsIHBvc2l0aW9uLiJ9LHtuYW1lOiJzdGF0aWMiLGRlc2NyaXB0aW9uOiJUaGUgYm94IGlzIGEgbm9ybWFsIGJveCwgbGFpZCBvdXQgYWNjb3JkaW5nIHRvIHRoZSBub3JtYWwgZmxvdy4gVGhlICd0b3AnLCAncmlnaHQnLCAnYm90dG9tJywgYW5kICdsZWZ0JyBwcm9wZXJ0aWVzIGRvIG5vdCBhcHBseS4ifSx7bmFtZToic3RpY2t5Iixicm93c2VyczpbIkUxMiIsIkZGMSIsIlMxIiwiQzEiLCJJRTQiLCJPNCJdLGRlc2NyaXB0aW9uOiJUaGUgYm94J3MgcG9zaXRpb24gaXMgY2FsY3VsYXRlZCBhY2NvcmRpbmcgdG8gdGhlIG5vcm1hbCBmbG93LiBUaGVuIHRoZSBib3ggaXMgb2Zmc2V0IHJlbGF0aXZlIHRvIGl0cyBmbG93IHJvb3QgYW5kIGNvbnRhaW5pbmcgYmxvY2sgYW5kIGluIGFsbCBjYXNlcywgaW5jbHVkaW5nIHRhYmxlIGVsZW1lbnRzLCBkb2VzIG5vdCBhZmZlY3QgdGhlIHBvc2l0aW9uIG9mIGFueSBmb2xsb3dpbmcgYm94ZXMuIn0se25hbWU6Ii13ZWJraXQtc3RpY2t5Iixicm93c2VyczpbIkUxMiIsIkZGMSIsIlMxIiwiQzEiLCJJRTQiLCJPNCJdLGRlc2NyaXB0aW9uOiJUaGUgYm94J3MgcG9zaXRpb24gaXMgY2FsY3VsYXRlZCBhY2NvcmRpbmcgdG8gdGhlIG5vcm1hbCBmbG93LiBUaGVuIHRoZSBib3ggaXMgb2Zmc2V0IHJlbGF0aXZlIHRvIGl0cyBmbG93IHJvb3QgYW5kIGNvbnRhaW5pbmcgYmxvY2sgYW5kIGluIGFsbCBjYXNlcywgaW5jbHVkaW5nIHRhYmxlIGVsZW1lbnRzLCBkb2VzIG5vdCBhZmZlY3QgdGhlIHBvc2l0aW9uIG9mIGFueSBmb2xsb3dpbmcgYm94ZXMuIn1dLHN5bnRheDoic3RhdGljIHwgcmVsYXRpdmUgfCBhYnNvbHV0ZSB8IHN0aWNreSB8IGZpeGVkIixyZWxldmFuY2U6OTUscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3Bvc2l0aW9uIn1dLGRlc2NyaXB0aW9uOiJUaGUgcG9zaXRpb24gQ1NTIHByb3BlcnR5IHNldHMgaG93IGFuIGVsZW1lbnQgaXMgcG9zaXRpb25lZCBpbiBhIGRvY3VtZW50LiBUaGUgdG9wLCByaWdodCwgYm90dG9tLCBhbmQgbGVmdCBwcm9wZXJ0aWVzIGRldGVybWluZSB0aGUgZmluYWwgbG9jYXRpb24gb2YgcG9zaXRpb25lZCBlbGVtZW50cy4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6InByZWZpeCIsYnJvd3NlcnM6WyJGRjMzIl0sYXRSdWxlOiJAY291bnRlci1zdHlsZSIsc3ludGF4OiI8c3ltYm9sPiIscmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJAY291bnRlci1zdHlsZSBkZXNjcmlwdG9yLiBTcGVjaWZpZXMgYSA8c3ltYm9sPiB0aGF0IGlzIHByZXBlbmRlZCB0byB0aGUgbWFya2VyIHJlcHJlc2VudGF0aW9uLiIscmVzdHJpY3Rpb25zOlsiaW1hZ2UiLCJzdHJpbmciLCJpZGVudGlmaWVyIl19LHtuYW1lOiJxdW90ZXMiLGJyb3dzZXJzOlsiRTEyIiwiRkYxLjUiLCJTOSIsIkMxMSIsIklFOCIsIk80Il0sdmFsdWVzOlt7bmFtZToibm9uZSIsZGVzY3JpcHRpb246IlRoZSAnb3Blbi1xdW90ZScgYW5kICdjbG9zZS1xdW90ZScgdmFsdWVzIG9mIHRoZSAnY29udGVudCcgcHJvcGVydHkgcHJvZHVjZSBubyBxdW90YXRpb25zIG1hcmtzLCBhcyBpZiB0aGV5IHdlcmUgJ25vLW9wZW4tcXVvdGUnIGFuZCAnbm8tY2xvc2UtcXVvdGUnIHJlc3BlY3RpdmVseS4ifV0sc3ludGF4OiJub25lIHwgYXV0byB8IFsgPHN0cmluZz4gPHN0cmluZz4gXSsiLHJlbGV2YW5jZTo1MyxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvcXVvdGVzIn1dLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgcXVvdGF0aW9uIG1hcmtzIGZvciBhbnkgbnVtYmVyIG9mIGVtYmVkZGVkIHF1b3RhdGlvbnMuIixyZXN0cmljdGlvbnM6WyJzdHJpbmciXX0se25hbWU6InJhbmdlIixicm93c2VyczpbIkZGMzMiXSx2YWx1ZXM6W3tuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiVGhlIHJhbmdlIGRlcGVuZHMgb24gdGhlIGNvdW50ZXIgc3lzdGVtLiJ9LHtuYW1lOiJpbmZpbml0ZSIsZGVzY3JpcHRpb246IklmIHVzZWQgYXMgdGhlIGZpcnN0IHZhbHVlIGluIGEgcmFuZ2UsIGl0IHJlcHJlc2VudHMgbmVnYXRpdmUgaW5maW5pdHk7IGlmIHVzZWQgYXMgdGhlIHNlY29uZCB2YWx1ZSwgaXQgcmVwcmVzZW50cyBwb3NpdGl2ZSBpbmZpbml0eS4ifV0sYXRSdWxlOiJAY291bnRlci1zdHlsZSIsc3ludGF4OiJbIFsgPGludGVnZXI+IHwgaW5maW5pdGUgXXsyfSBdIyB8IGF1dG8iLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiQGNvdW50ZXItc3R5bGUgZGVzY3JpcHRvci4gRGVmaW5lcyB0aGUgcmFuZ2VzIG92ZXIgd2hpY2ggdGhlIGNvdW50ZXIgc3R5bGUgaXMgZGVmaW5lZC4iLHJlc3RyaWN0aW9uczpbImludGVnZXIiLCJlbnVtIl19LHtuYW1lOiJyZXNpemUiLGJyb3dzZXJzOlsiRTc5IiwiRkY0IiwiUzMiLCJDMSIsIk8xMi4xIl0sdmFsdWVzOlt7bmFtZToiYm90aCIsZGVzY3JpcHRpb246IlRoZSBVQSBwcmVzZW50cyBhIGJpZGlyZWN0aW9uYWwgcmVzaXppbmcgbWVjaGFuaXNtIHRvIGFsbG93IHRoZSB1c2VyIHRvIGFkanVzdCBib3RoIHRoZSBoZWlnaHQgYW5kIHRoZSB3aWR0aCBvZiB0aGUgZWxlbWVudC4ifSx7bmFtZToiaG9yaXpvbnRhbCIsZGVzY3JpcHRpb246IlRoZSBVQSBwcmVzZW50cyBhIHVuaWRpcmVjdGlvbmFsIGhvcml6b250YWwgcmVzaXppbmcgbWVjaGFuaXNtIHRvIGFsbG93IHRoZSB1c2VyIHRvIGFkanVzdCBvbmx5IHRoZSB3aWR0aCBvZiB0aGUgZWxlbWVudC4ifSx7bmFtZToibm9uZSIsZGVzY3JpcHRpb246IlRoZSBVQSBkb2VzIG5vdCBwcmVzZW50IGEgcmVzaXppbmcgbWVjaGFuaXNtIG9uIHRoZSBlbGVtZW50LCBhbmQgdGhlIHVzZXIgaXMgZ2l2ZW4gbm8gZGlyZWN0IG1hbmlwdWxhdGlvbiBtZWNoYW5pc20gdG8gcmVzaXplIHRoZSBlbGVtZW50LiJ9LHtuYW1lOiJ2ZXJ0aWNhbCIsZGVzY3JpcHRpb246IlRoZSBVQSBwcmVzZW50cyBhIHVuaWRpcmVjdGlvbmFsIHZlcnRpY2FsIHJlc2l6aW5nIG1lY2hhbmlzbSB0byBhbGxvdyB0aGUgdXNlciB0byBhZGp1c3Qgb25seSB0aGUgaGVpZ2h0IG9mIHRoZSBlbGVtZW50LiJ9XSxzeW50YXg6Im5vbmUgfCBib3RoIHwgaG9yaXpvbnRhbCB8IHZlcnRpY2FsIHwgYmxvY2sgfCBpbmxpbmUiLHJlbGV2YW5jZTo2NixyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvcmVzaXplIn1dLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgd2hldGhlciBvciBub3QgYW4gZWxlbWVudCBpcyByZXNpemFibGUgYnkgdGhlIHVzZXIsIGFuZCBpZiBzbywgYWxvbmcgd2hpY2ggYXhpcy9heGVzLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToicmlnaHQiLGJyb3dzZXJzOlsiRTEyIiwiRkYxIiwiUzEiLCJDMSIsIklFNS41IiwiTzUiXSx2YWx1ZXM6W3tuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiRm9yIG5vbi1yZXBsYWNlZCBlbGVtZW50cywgdGhlIGVmZmVjdCBvZiB0aGlzIHZhbHVlIGRlcGVuZHMgb24gd2hpY2ggb2YgcmVsYXRlZCBwcm9wZXJ0aWVzIGhhdmUgdGhlIHZhbHVlICdhdXRvJyBhcyB3ZWxsIn1dLHN5bnRheDoiPGxlbmd0aD4gfCA8cGVyY2VudGFnZT4gfCBhdXRvIixyZWxldmFuY2U6OTEscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3JpZ2h0In1dLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgaG93IGZhciBhbiBhYnNvbHV0ZWx5IHBvc2l0aW9uZWQgYm94J3MgcmlnaHQgbWFyZ2luIGVkZ2UgaXMgb2Zmc2V0IHRvIHRoZSBsZWZ0IG9mIHRoZSByaWdodCBlZGdlIG9mIHRoZSBib3gncyAnY29udGFpbmluZyBibG9jaycuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJwZXJjZW50YWdlIl19LHtuYW1lOiJydWJ5LWFsaWduIixicm93c2VyczpbIkZGMzgiLCJTcHJldmlldyJdLHZhbHVlczpbe25hbWU6ImF1dG8iLGJyb3dzZXJzOlsiRkYzOCIsIlNwcmV2aWV3Il0sZGVzY3JpcHRpb246IlRoZSB1c2VyIGFnZW50IGRldGVybWluZXMgaG93IHRoZSBydWJ5IGNvbnRlbnRzIGFyZSBhbGlnbmVkLiBUaGlzIGlzIHRoZSBpbml0aWFsIHZhbHVlLiJ9LHtuYW1lOiJjZW50ZXIiLGRlc2NyaXB0aW9uOiJUaGUgcnVieSBjb250ZW50IGlzIGNlbnRlcmVkIHdpdGhpbiBpdHMgYm94LiJ9LHtuYW1lOiJkaXN0cmlidXRlLWxldHRlciIsYnJvd3NlcnM6WyJGRjM4IiwiU3ByZXZpZXciXSxkZXNjcmlwdGlvbjoiSWYgdGhlIHdpZHRoIG9mIHRoZSBydWJ5IHRleHQgaXMgc21hbGxlciB0aGFuIHRoYXQgb2YgdGhlIGJhc2UsIHRoZW4gdGhlIHJ1YnkgdGV4dCBjb250ZW50cyBhcmUgZXZlbmx5IGRpc3RyaWJ1dGVkIGFjcm9zcyB0aGUgd2lkdGggb2YgdGhlIGJhc2UsIHdpdGggdGhlIGZpcnN0IGFuZCBsYXN0IHJ1YnkgdGV4dCBnbHlwaHMgbGluaW5nIHVwIHdpdGggdGhlIGNvcnJlc3BvbmRpbmcgZmlyc3QgYW5kIGxhc3QgYmFzZSBnbHlwaHMuIElmIHRoZSB3aWR0aCBvZiB0aGUgcnVieSB0ZXh0IGlzIGF0IGxlYXN0IHRoZSB3aWR0aCBvZiB0aGUgYmFzZSwgdGhlbiB0aGUgbGV0dGVycyBvZiB0aGUgYmFzZSBhcmUgZXZlbmx5IGRpc3RyaWJ1dGVkIGFjcm9zcyB0aGUgd2lkdGggb2YgdGhlIHJ1YnkgdGV4dC4ifSx7bmFtZToiZGlzdHJpYnV0ZS1zcGFjZSIsYnJvd3NlcnM6WyJGRjM4IiwiU3ByZXZpZXciXSxkZXNjcmlwdGlvbjoiSWYgdGhlIHdpZHRoIG9mIHRoZSBydWJ5IHRleHQgaXMgc21hbGxlciB0aGFuIHRoYXQgb2YgdGhlIGJhc2UsIHRoZW4gdGhlIHJ1YnkgdGV4dCBjb250ZW50cyBhcmUgZXZlbmx5IGRpc3RyaWJ1dGVkIGFjcm9zcyB0aGUgd2lkdGggb2YgdGhlIGJhc2UsIHdpdGggYSBjZXJ0YWluIGFtb3VudCBvZiB3aGl0ZSBzcGFjZSBwcmVjZWRpbmcgdGhlIGZpcnN0IGFuZCBmb2xsb3dpbmcgdGhlIGxhc3QgY2hhcmFjdGVyIGluIHRoZSBydWJ5IHRleHQuIFRoYXQgYW1vdW50IG9mIHdoaXRlIHNwYWNlIGlzIG5vcm1hbGx5IGVxdWFsIHRvIGhhbGYgdGhlIGFtb3VudCBvZiBpbnRlci1jaGFyYWN0ZXIgc3BhY2Ugb2YgdGhlIHJ1YnkgdGV4dC4ifSx7bmFtZToibGVmdCIsZGVzY3JpcHRpb246IlRoZSBydWJ5IHRleHQgY29udGVudCBpcyBhbGlnbmVkIHdpdGggdGhlIHN0YXJ0IGVkZ2Ugb2YgdGhlIGJhc2UuIn0se25hbWU6ImxpbmUtZWRnZSIsYnJvd3NlcnM6WyJGRjM4IiwiU3ByZXZpZXciXSxkZXNjcmlwdGlvbjoiSWYgdGhlIHJ1YnkgdGV4dCBpcyBub3QgYWRqYWNlbnQgdG8gYSBsaW5lIGVkZ2UsIGl0IGlzIGFsaWduZWQgYXMgaW4gJ2F1dG8nLiBJZiBpdCBpcyBhZGphY2VudCB0byBhIGxpbmUgZWRnZSwgdGhlbiBpdCBpcyBzdGlsbCBhbGlnbmVkIGFzIGluIGF1dG8sIGJ1dCB0aGUgc2lkZSBvZiB0aGUgcnVieSB0ZXh0IHRoYXQgdG91Y2hlcyB0aGUgZW5kIG9mIHRoZSBsaW5lIGlzIGxpbmVkIHVwIHdpdGggdGhlIGNvcnJlc3BvbmRpbmcgZWRnZSBvZiB0aGUgYmFzZS4ifSx7bmFtZToicmlnaHQiLGJyb3dzZXJzOlsiRkYzOCIsIlNwcmV2aWV3Il0sZGVzY3JpcHRpb246IlRoZSBydWJ5IHRleHQgY29udGVudCBpcyBhbGlnbmVkIHdpdGggdGhlIGVuZCBlZGdlIG9mIHRoZSBiYXNlLiJ9LHtuYW1lOiJzdGFydCIsYnJvd3NlcnM6WyJGRjM4IiwiU3ByZXZpZXciXSxkZXNjcmlwdGlvbjoiVGhlIHJ1YnkgdGV4dCBjb250ZW50IGlzIGFsaWduZWQgd2l0aCB0aGUgc3RhcnQgZWRnZSBvZiB0aGUgYmFzZS4ifSx7bmFtZToic3BhY2UtYmV0d2VlbiIsYnJvd3NlcnM6WyJGRjM4IiwiU3ByZXZpZXciXSxkZXNjcmlwdGlvbjoiVGhlIHJ1YnkgY29udGVudCBleHBhbmRzIGFzIGRlZmluZWQgZm9yIG5vcm1hbCB0ZXh0IGp1c3RpZmljYXRpb24gKGFzIGRlZmluZWQgYnkgJ3RleHQtanVzdGlmeScpLCJ9LHtuYW1lOiJzcGFjZS1hcm91bmQiLGJyb3dzZXJzOlsiRkYzOCIsIlNwcmV2aWV3Il0sZGVzY3JpcHRpb246IkFzIGZvciAnc3BhY2UtYmV0d2VlbicgZXhjZXB0IHRoYXQgdGhlcmUgZXhpc3RzIGFuIGV4dHJhIGp1c3RpZmljYXRpb24gb3Bwb3J0dW5pdGllcyB3aG9zZSBzcGFjZSBpcyBkaXN0cmlidXRlZCBoYWxmIGJlZm9yZSBhbmQgaGFsZiBhZnRlciB0aGUgcnVieSBjb250ZW50LiJ9XSxzdGF0dXM6ImV4cGVyaW1lbnRhbCIsc3ludGF4OiJzdGFydCB8IGNlbnRlciB8IHNwYWNlLWJldHdlZW4gfCBzcGFjZS1hcm91bmQiLHJlbGV2YW5jZTo1MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvcnVieS1hbGlnbiJ9XSxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGhvdyB0ZXh0IGlzIGRpc3RyaWJ1dGVkIHdpdGhpbiB0aGUgdmFyaW91cyBydWJ5IGJveGVzIHdoZW4gdGhlaXIgY29udGVudHMgZG8gbm90IGV4YWN0bHkgZmlsbCB0aGVpciByZXNwZWN0aXZlIGJveGVzLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToicnVieS1vdmVyaGFuZyIsYnJvd3NlcnM6WyJGRjEwIiwiSUU1Il0sdmFsdWVzOlt7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IlRoZSBydWJ5IHRleHQgY2FuIG92ZXJoYW5nIHRleHQgYWRqYWNlbnQgdG8gdGhlIGJhc2Ugb24gZWl0aGVyIHNpZGUuIFRoaXMgaXMgdGhlIGluaXRpYWwgdmFsdWUuIn0se25hbWU6ImVuZCIsZGVzY3JpcHRpb246IlRoZSBydWJ5IHRleHQgY2FuIG92ZXJoYW5nIHRoZSB0ZXh0IHRoYXQgZm9sbG93cyBpdC4ifSx7bmFtZToibm9uZSIsZGVzY3JpcHRpb246IlRoZSBydWJ5IHRleHQgY2Fubm90IG92ZXJoYW5nIGFueSB0ZXh0IGFkamFjZW50IHRvIGl0cyBiYXNlLCBvbmx5IGl0cyBvd24gYmFzZS4ifSx7bmFtZToic3RhcnQiLGRlc2NyaXB0aW9uOiJUaGUgcnVieSB0ZXh0IGNhbiBvdmVyaGFuZyB0aGUgdGV4dCB0aGF0IHByZWNlZGVzIGl0LiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkRldGVybWluZXMgd2hldGhlciwgYW5kIG9uIHdoaWNoIHNpZGUsIHJ1YnkgdGV4dCBpcyBhbGxvd2VkIHRvIHBhcnRpYWxseSBvdmVyaGFuZyBhbnkgYWRqYWNlbnQgdGV4dCBpbiBhZGRpdGlvbiB0byBpdHMgb3duIGJhc2UsIHdoZW4gdGhlIHJ1YnkgdGV4dCBpcyB3aWRlciB0aGFuIHRoZSBydWJ5IGJhc2UuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJydWJ5LXBvc2l0aW9uIixicm93c2VyczpbIkU4NCIsIkZGMzgiLCJTNyIsIkM4NCIsIk83MCJdLHZhbHVlczpbe25hbWU6ImFmdGVyIixkZXNjcmlwdGlvbjoiVGhlIHJ1YnkgdGV4dCBhcHBlYXJzIGFmdGVyIHRoZSBiYXNlLiBUaGlzIGlzIGEgcmVsYXRpdmVseSByYXJlIHNldHRpbmcgdXNlZCBpbiBpZGVvZ3JhcGhpYyBFYXN0IEFzaWFuIHdyaXRpbmcgc3lzdGVtcywgbW9zdCBlYXNpbHkgZm91bmQgaW4gZWR1Y2F0aW9uYWwgdGV4dC4ifSx7bmFtZToiYmVmb3JlIixkZXNjcmlwdGlvbjoiVGhlIHJ1YnkgdGV4dCBhcHBlYXJzIGJlZm9yZSB0aGUgYmFzZS4gVGhpcyBpcyB0aGUgbW9zdCBjb21tb24gc2V0dGluZyB1c2VkIGluIGlkZW9ncmFwaGljIEVhc3QgQXNpYW4gd3JpdGluZyBzeXN0ZW1zLiJ9LHtuYW1lOiJpbmxpbmUifSx7bmFtZToicmlnaHQiLGRlc2NyaXB0aW9uOiJUaGUgcnVieSB0ZXh0IGFwcGVhcnMgb24gdGhlIHJpZ2h0IG9mIHRoZSBiYXNlLiBVbmxpa2UgJ2JlZm9yZScgYW5kICdhZnRlcicsIHRoaXMgdmFsdWUgaXMgbm90IHJlbGF0aXZlIHRvIHRoZSB0ZXh0IGZsb3cgZGlyZWN0aW9uLiJ9XSxzeW50YXg6IlsgYWx0ZXJuYXRlIHx8IFsgb3ZlciB8IHVuZGVyIF0gXSB8IGludGVyLWNoYXJhY3RlciIscmVsZXZhbmNlOjUwLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9ydWJ5LXBvc2l0aW9uIn1dLGRlc2NyaXB0aW9uOiJVc2VkIGJ5IHRoZSBwYXJlbnQgb2YgZWxlbWVudHMgd2l0aCBkaXNwbGF5OiBydWJ5LXRleHQgdG8gY29udHJvbCB0aGUgcG9zaXRpb24gb2YgdGhlIHJ1YnkgdGV4dCB3aXRoIHJlc3BlY3QgdG8gaXRzIGJhc2UuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJydWJ5LXNwYW4iLGJyb3dzZXJzOlsiRkYxMCJdLHZhbHVlczpbe25hbWU6ImF0dHIoeCkiLGRlc2NyaXB0aW9uOiJUaGUgdmFsdWUgb2YgYXR0cmlidXRlICd4JyBpcyBhIHN0cmluZyB2YWx1ZS4gVGhlIHN0cmluZyB2YWx1ZSBpcyBldmFsdWF0ZWQgYXMgYSA8bnVtYmVyPiB0byBkZXRlcm1pbmUgdGhlIG51bWJlciBvZiBydWJ5IGJhc2UgZWxlbWVudHMgdG8gYmUgc3Bhbm5lZCBieSB0aGUgYW5ub3RhdGlvbiBlbGVtZW50LiJ9LHtuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiTm8gc3Bhbm5pbmcuIFRoZSBjb21wdXRlZCB2YWx1ZSBpcyAnMScuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiRGV0ZXJtaW5lcyB3aGV0aGVyLCBhbmQgb24gd2hpY2ggc2lkZSwgcnVieSB0ZXh0IGlzIGFsbG93ZWQgdG8gcGFydGlhbGx5IG92ZXJoYW5nIGFueSBhZGphY2VudCB0ZXh0IGluIGFkZGl0aW9uIHRvIGl0cyBvd24gYmFzZSwgd2hlbiB0aGUgcnVieSB0ZXh0IGlzIHdpZGVyIHRoYW4gdGhlIHJ1YnkgYmFzZS4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6InNjcm9sbGJhci0zZGxpZ2h0LWNvbG9yIixicm93c2VyczpbIklFNSJdLHJlbGV2YW5jZTo1MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1Mvc2Nyb2xsYmFyLTNkbGlnaHQtY29sb3IifV0sZGVzY3JpcHRpb246IkRldGVybWluZXMgdGhlIGNvbG9yIG9mIHRoZSB0b3AgYW5kIGxlZnQgZWRnZXMgb2YgdGhlIHNjcm9sbCBib3ggYW5kIHNjcm9sbCBhcnJvd3Mgb2YgYSBzY3JvbGwgYmFyLiIscmVzdHJpY3Rpb25zOlsiY29sb3IiXX0se25hbWU6InNjcm9sbGJhci1hcnJvdy1jb2xvciIsYnJvd3NlcnM6WyJJRTUiXSxyZWxldmFuY2U6NTAscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3Njcm9sbGJhci1hcnJvdy1jb2xvciJ9XSxkZXNjcmlwdGlvbjoiRGV0ZXJtaW5lcyB0aGUgY29sb3Igb2YgdGhlIGFycm93IGVsZW1lbnRzIG9mIGEgc2Nyb2xsIGFycm93LiIscmVzdHJpY3Rpb25zOlsiY29sb3IiXX0se25hbWU6InNjcm9sbGJhci1iYXNlLWNvbG9yIixicm93c2VyczpbIklFNSJdLHJlbGV2YW5jZTo1MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1Mvc2Nyb2xsYmFyLWJhc2UtY29sb3IifV0sZGVzY3JpcHRpb246IkRldGVybWluZXMgdGhlIGNvbG9yIG9mIHRoZSBtYWluIGVsZW1lbnRzIG9mIGEgc2Nyb2xsIGJhciwgd2hpY2ggaW5jbHVkZSB0aGUgc2Nyb2xsIGJveCwgdHJhY2ssIGFuZCBzY3JvbGwgYXJyb3dzLiIscmVzdHJpY3Rpb25zOlsiY29sb3IiXX0se25hbWU6InNjcm9sbGJhci1kYXJrc2hhZG93LWNvbG9yIixicm93c2VyczpbIklFNSJdLHJlbGV2YW5jZTo1MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1Mvc2Nyb2xsYmFyLWRhcmtzaGFkb3ctY29sb3IifV0sZGVzY3JpcHRpb246IkRldGVybWluZXMgdGhlIGNvbG9yIG9mIHRoZSBndXR0ZXIgb2YgYSBzY3JvbGwgYmFyLiIscmVzdHJpY3Rpb25zOlsiY29sb3IiXX0se25hbWU6InNjcm9sbGJhci1mYWNlLWNvbG9yIixicm93c2VyczpbIklFNSJdLHJlbGV2YW5jZTo1MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1Mvc2Nyb2xsYmFyLWZhY2UtY29sb3IifV0sZGVzY3JpcHRpb246IkRldGVybWluZXMgdGhlIGNvbG9yIG9mIHRoZSBzY3JvbGwgYm94IGFuZCBzY3JvbGwgYXJyb3dzIG9mIGEgc2Nyb2xsIGJhci4iLHJlc3RyaWN0aW9uczpbImNvbG9yIl19LHtuYW1lOiJzY3JvbGxiYXItaGlnaGxpZ2h0LWNvbG9yIixicm93c2VyczpbIklFNSJdLHJlbGV2YW5jZTo1MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1Mvc2Nyb2xsYmFyLWhpZ2hsaWdodC1jb2xvciJ9XSxkZXNjcmlwdGlvbjoiRGV0ZXJtaW5lcyB0aGUgY29sb3Igb2YgdGhlIHRvcCBhbmQgbGVmdCBlZGdlcyBvZiB0aGUgc2Nyb2xsIGJveCBhbmQgc2Nyb2xsIGFycm93cyBvZiBhIHNjcm9sbCBiYXIuIixyZXN0cmljdGlvbnM6WyJjb2xvciJdfSx7bmFtZToic2Nyb2xsYmFyLXNoYWRvdy1jb2xvciIsYnJvd3NlcnM6WyJJRTUiXSxyZWxldmFuY2U6NTAscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3Njcm9sbGJhci1zaGFkb3ctY29sb3IifV0sZGVzY3JpcHRpb246IkRldGVybWluZXMgdGhlIGNvbG9yIG9mIHRoZSBib3R0b20gYW5kIHJpZ2h0IGVkZ2VzIG9mIHRoZSBzY3JvbGwgYm94IGFuZCBzY3JvbGwgYXJyb3dzIG9mIGEgc2Nyb2xsIGJhci4iLHJlc3RyaWN0aW9uczpbImNvbG9yIl19LHtuYW1lOiJzY3JvbGxiYXItdHJhY2stY29sb3IiLGJyb3dzZXJzOlsiSUU2Il0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJEZXRlcm1pbmVzIHRoZSBjb2xvciBvZiB0aGUgdHJhY2sgZWxlbWVudCBvZiBhIHNjcm9sbCBiYXIuIixyZXN0cmljdGlvbnM6WyJjb2xvciJdfSx7bmFtZToic2Nyb2xsLWJlaGF2aW9yIixicm93c2VyczpbIkU3OSIsIkZGMzYiLCJTMTUuNCIsIkM2MSIsIk80OCJdLHZhbHVlczpbe25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJTY3JvbGxzIGluIGFuIGluc3RhbnQgZmFzaGlvbi4ifSx7bmFtZToic21vb3RoIixkZXNjcmlwdGlvbjoiU2Nyb2xscyBpbiBhIHNtb290aCBmYXNoaW9uIHVzaW5nIGEgdXNlci1hZ2VudC1kZWZpbmVkIHRpbWluZyBmdW5jdGlvbiBhbmQgdGltZSBwZXJpb2QuIn1dLHN5bnRheDoiYXV0byB8IHNtb290aCIscmVsZXZhbmNlOjU1LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9zY3JvbGwtYmVoYXZpb3IifV0sZGVzY3JpcHRpb246IlNwZWNpZmllcyB0aGUgc2Nyb2xsaW5nIGJlaGF2aW9yIGZvciBhIHNjcm9sbGluZyBib3gsIHdoZW4gc2Nyb2xsaW5nIGhhcHBlbnMgZHVlIHRvIG5hdmlnYXRpb24gb3IgQ1NTT00gc2Nyb2xsaW5nIEFQSXMuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJzY3JvbGwtc25hcC1jb29yZGluYXRlIixicm93c2VyczpbIkZGMzkiXSx2YWx1ZXM6W3tuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIHRoYXQgdGhpcyBlbGVtZW50IGRvZXMgbm90IGNvbnRyaWJ1dGUgYSBzbmFwIHBvaW50LiJ9XSxzdGF0dXM6Im9ic29sZXRlIixzeW50YXg6Im5vbmUgfCA8cG9zaXRpb24+IyIscmVsZXZhbmNlOjAsZGVzY3JpcHRpb246IkRlZmluZXMgdGhlIHggYW5kIHkgY29vcmRpbmF0ZSB3aXRoaW4gdGhlIGVsZW1lbnQgd2hpY2ggd2lsbCBhbGlnbiB3aXRoIHRoZSBuZWFyZXN0IGFuY2VzdG9yIHNjcm9sbCBjb250YWluZXIncyBzbmFwLWRlc3RpbmF0aW9uIGZvciB0aGUgcmVzcGVjdGl2ZSBheGlzLiIscmVzdHJpY3Rpb25zOlsicG9zaXRpb24iLCJsZW5ndGgiLCJwZXJjZW50YWdlIiwiZW51bSJdfSx7bmFtZToic2Nyb2xsLXNuYXAtZGVzdGluYXRpb24iLGJyb3dzZXJzOlsiRkYzOSJdLHN0YXR1czoib2Jzb2xldGUiLHN5bnRheDoiPHBvc2l0aW9uPiIscmVsZXZhbmNlOjAsZGVzY3JpcHRpb246IkRlZmluZSB0aGUgeCBhbmQgeSBjb29yZGluYXRlIHdpdGhpbiB0aGUgc2Nyb2xsIGNvbnRhaW5lcidzIHZpc3VhbCB2aWV3cG9ydCB3aGljaCBlbGVtZW50IHNuYXAgcG9pbnRzIHdpbGwgYWxpZ24gd2l0aC4iLHJlc3RyaWN0aW9uczpbInBvc2l0aW9uIiwibGVuZ3RoIiwicGVyY2VudGFnZSJdfSx7bmFtZToic2Nyb2xsLXNuYXAtcG9pbnRzLXgiLGJyb3dzZXJzOlsiRkYzOSJdLHZhbHVlczpbe25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJObyBzbmFwIHBvaW50cyBhcmUgZGVmaW5lZCBieSB0aGlzIHNjcm9sbCBjb250YWluZXIuIn0se25hbWU6InJlcGVhdCgpIixkZXNjcmlwdGlvbjoiRGVmaW5lcyBhbiBpbnRlcnZhbCBhdCB3aGljaCBzbmFwIHBvaW50cyBhcmUgZGVmaW5lZCwgc3RhcnRpbmcgZnJvbSB0aGUgY29udGFpbmVyJ3MgcmVsZXZhbnQgc3RhcnQgZWRnZS4ifV0sc3RhdHVzOiJvYnNvbGV0ZSIsc3ludGF4OiJub25lIHwgcmVwZWF0KCA8bGVuZ3RoLXBlcmNlbnRhZ2U+ICkiLHJlbGV2YW5jZTowLGRlc2NyaXB0aW9uOiJEZWZpbmVzIHRoZSBwb3NpdGlvbmluZyBvZiBzbmFwIHBvaW50cyBhbG9uZyB0aGUgeCBheGlzIG9mIHRoZSBzY3JvbGwgY29udGFpbmVyIGl0IGlzIGFwcGxpZWQgdG8uIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJzY3JvbGwtc25hcC1wb2ludHMteSIsYnJvd3NlcnM6WyJGRjM5Il0sdmFsdWVzOlt7bmFtZToibm9uZSIsZGVzY3JpcHRpb246Ik5vIHNuYXAgcG9pbnRzIGFyZSBkZWZpbmVkIGJ5IHRoaXMgc2Nyb2xsIGNvbnRhaW5lci4ifSx7bmFtZToicmVwZWF0KCkiLGRlc2NyaXB0aW9uOiJEZWZpbmVzIGFuIGludGVydmFsIGF0IHdoaWNoIHNuYXAgcG9pbnRzIGFyZSBkZWZpbmVkLCBzdGFydGluZyBmcm9tIHRoZSBjb250YWluZXIncyByZWxldmFudCBzdGFydCBlZGdlLiJ9XSxzdGF0dXM6Im9ic29sZXRlIixzeW50YXg6Im5vbmUgfCByZXBlYXQoIDxsZW5ndGgtcGVyY2VudGFnZT4gKSIscmVsZXZhbmNlOjAsZGVzY3JpcHRpb246IkRlZmluZXMgdGhlIHBvc2l0aW9uaW5nIG9mIHNuYXAgcG9pbnRzIGFsb25nIHRoZSB5IGF4aXMgb2YgdGhlIHNjcm9sbCBjb250YWluZXIgaXQgaXMgYXBwbGllZCB0by4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6InNjcm9sbC1zbmFwLXR5cGUiLGJyb3dzZXJzOlsiRTc5IiwiRkY5OSIsIlMxMSIsIkM2OSIsIklFMTAiLCJPNTYiXSx2YWx1ZXM6W3tuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiVGhlIHZpc3VhbCB2aWV3cG9ydCBvZiB0aGlzIHNjcm9sbCBjb250YWluZXIgbXVzdCBpZ25vcmUgc25hcCBwb2ludHMsIGlmIGFueSwgd2hlbiBzY3JvbGxlZC4ifSx7bmFtZToibWFuZGF0b3J5IixkZXNjcmlwdGlvbjoiVGhlIHZpc3VhbCB2aWV3cG9ydCBvZiB0aGlzIHNjcm9sbCBjb250YWluZXIgaXMgZ3VhcmFudGVlZCB0byByZXN0IG9uIGEgc25hcCBwb2ludCB3aGVuIHRoZXJlIGFyZSBubyBhY3RpdmUgc2Nyb2xsaW5nIG9wZXJhdGlvbnMuIn0se25hbWU6InByb3hpbWl0eSIsZGVzY3JpcHRpb246IlRoZSB2aXN1YWwgdmlld3BvcnQgb2YgdGhpcyBzY3JvbGwgY29udGFpbmVyIG1heSBjb21lIHRvIHJlc3Qgb24gYSBzbmFwIHBvaW50IGF0IHRoZSB0ZXJtaW5hdGlvbiBvZiBhIHNjcm9sbCBhdCB0aGUgZGlzY3JldGlvbiBvZiB0aGUgVUEgZ2l2ZW4gdGhlIHBhcmFtZXRlcnMgb2YgdGhlIHNjcm9sbC4ifV0sc3ludGF4OiJub25lIHwgWyB4IHwgeSB8IGJsb2NrIHwgaW5saW5lIHwgYm90aCBdIFsgbWFuZGF0b3J5IHwgcHJveGltaXR5IF0/IixyZWxldmFuY2U6NTMscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3Njcm9sbC1zbmFwLXR5cGUifV0sZGVzY3JpcHRpb246IkRlZmluZXMgaG93IHN0cmljdGx5IHNuYXAgcG9pbnRzIGFyZSBlbmZvcmNlZCBvbiB0aGUgc2Nyb2xsIGNvbnRhaW5lci4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6InNoYXBlLWltYWdlLXRocmVzaG9sZCIsYnJvd3NlcnM6WyJFNzkiLCJGRjYyIiwiUzEwLjEiLCJDMzciLCJPMjQiXSxzeW50YXg6IjxhbHBoYS12YWx1ZT4iLHJlbGV2YW5jZTo1MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1Mvc2hhcGUtaW1hZ2UtdGhyZXNob2xkIn1dLGRlc2NyaXB0aW9uOiJEZWZpbmVzIHRoZSBhbHBoYSBjaGFubmVsIHRocmVzaG9sZCB1c2VkIHRvIGV4dHJhY3QgdGhlIHNoYXBlIHVzaW5nIGFuIGltYWdlLiBBIHZhbHVlIG9mIDAuNSBtZWFucyB0aGF0IHRoZSBzaGFwZSB3aWxsIGVuY2xvc2UgYWxsIHRoZSBwaXhlbHMgdGhhdCBhcmUgbW9yZSB0aGFuIDUwJSBvcGFxdWUuIixyZXN0cmljdGlvbnM6WyJudW1iZXIiXX0se25hbWU6InNoYXBlLW1hcmdpbiIsYnJvd3NlcnM6WyJFNzkiLCJGRjYyIiwiUzEwLjEiLCJDMzciLCJPMjQiXSxzeW50YXg6IjxsZW5ndGgtcGVyY2VudGFnZT4iLHJlbGV2YW5jZTo1MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1Mvc2hhcGUtbWFyZ2luIn1dLGRlc2NyaXB0aW9uOiJBZGRzIGEgbWFyZ2luIHRvIGEgJ3NoYXBlLW91dHNpZGUnLiBUaGlzIGRlZmluZXMgYSBuZXcgc2hhcGUgdGhhdCBpcyB0aGUgc21hbGxlc3QgY29udG91ciB0aGF0IGluY2x1ZGVzIGFsbCB0aGUgcG9pbnRzIHRoYXQgYXJlIHRoZSAnc2hhcGUtbWFyZ2luJyBkaXN0YW5jZSBvdXR3YXJkIGluIHRoZSBwZXJwZW5kaWN1bGFyIGRpcmVjdGlvbiBmcm9tIGEgcG9pbnQgb24gdGhlIHVuZGVybHlpbmcgc2hhcGUuIixyZXN0cmljdGlvbnM6WyJ1cmwiLCJsZW5ndGgiLCJwZXJjZW50YWdlIl19LHtuYW1lOiJzaGFwZS1vdXRzaWRlIixicm93c2VyczpbIkU3OSIsIkZGNjIiLCJTMTAuMSIsIkMzNyIsIk8yNCJdLHZhbHVlczpbe25hbWU6Im1hcmdpbi1ib3giLGRlc2NyaXB0aW9uOiJUaGUgYmFja2dyb3VuZCBpcyBwYWludGVkIHdpdGhpbiAoY2xpcHBlZCB0bykgdGhlIG1hcmdpbiBib3guIn0se25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJUaGUgZmxvYXQgYXJlYSBpcyB1bmFmZmVjdGVkLiJ9XSxzeW50YXg6Im5vbmUgfCBbIDxzaGFwZS1ib3g+IHx8IDxiYXNpYy1zaGFwZT4gXSB8IDxpbWFnZT4iLHJlbGV2YW5jZTo1MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1Mvc2hhcGUtb3V0c2lkZSJ9XSxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGFuIG9ydGhvZ29uYWwgcm90YXRpb24gdG8gYmUgYXBwbGllZCB0byBhbiBpbWFnZSBiZWZvcmUgaXQgaXMgbGFpZCBvdXQuIixyZXN0cmljdGlvbnM6WyJpbWFnZSIsImJveCIsInNoYXBlIiwiZW51bSJdfSx7bmFtZToic2hhcGUtcmVuZGVyaW5nIixicm93c2VyczpbIkU4MCIsIkZGNzIiLCJTMTMuMSIsIkM4MCIsIk82NyJdLHZhbHVlczpbe25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJTdXBwcmVzc2VzIGF1cmFsIHJlbmRlcmluZy4ifSx7bmFtZToiY3Jpc3BFZGdlcyIsZGVzY3JpcHRpb246IkVtcGhhc2l6ZSB0aGUgY29udHJhc3QgYmV0d2VlbiBjbGVhbiBlZGdlcyBvZiBhcnR3b3JrIG92ZXIgcmVuZGVyaW5nIHNwZWVkIGFuZCBnZW9tZXRyaWMgcHJlY2lzaW9uLiJ9LHtuYW1lOiJnZW9tZXRyaWNQcmVjaXNpb24iLGRlc2NyaXB0aW9uOiJFbXBoYXNpemUgZ2VvbWV0cmljIHByZWNpc2lvbiBvdmVyIHNwZWVkIGFuZCBjcmlzcCBlZGdlcy4ifSx7bmFtZToib3B0aW1pemVTcGVlZCIsZGVzY3JpcHRpb246IkVtcGhhc2l6ZSByZW5kZXJpbmcgc3BlZWQgb3ZlciBnZW9tZXRyaWMgcHJlY2lzaW9uIGFuZCBjcmlzcCBlZGdlcy4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJQcm92aWRlcyBoaW50cyBhYm91dCB3aGF0IHRyYWRlb2ZmcyB0byBtYWtlIGFzIGl0IHJlbmRlcnMgdmVjdG9yIGdyYXBoaWNzIGVsZW1lbnRzIHN1Y2ggYXMgPHBhdGg+IGVsZW1lbnRzIGFuZCBiYXNpYyBzaGFwZXMgc3VjaCBhcyBjaXJjbGVzIGFuZCByZWN0YW5nbGVzLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToic2l6ZSIsYnJvd3NlcnM6WyJDIiwiTzgiXSxhdFJ1bGU6IkBwYWdlIixzeW50YXg6IjxsZW5ndGg+ezEsMn0gfCBhdXRvIHwgWyA8cGFnZS1zaXplPiB8fCBbIHBvcnRyYWl0IHwgbGFuZHNjYXBlIF0gXSIscmVsZXZhbmNlOjUzLGRlc2NyaXB0aW9uOiJUaGUgc2l6ZSBDU1MgYXQtcnVsZSBkZXNjcmlwdG9yLCB1c2VkIHdpdGggdGhlIEBwYWdlIGF0LXJ1bGUsIGRlZmluZXMgdGhlIHNpemUgYW5kIG9yaWVudGF0aW9uIG9mIHRoZSBib3ggd2hpY2ggaXMgdXNlZCB0byByZXByZXNlbnQgYSBwYWdlLiBNb3N0IG9mIHRoZSB0aW1lLCB0aGlzIHNpemUgY29ycmVzcG9uZHMgdG8gdGhlIHRhcmdldCBzaXplIG9mIHRoZSBwcmludGVkIHBhZ2UgaWYgYXBwbGljYWJsZS4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCJdfSx7bmFtZToic3JjIix2YWx1ZXM6W3tuYW1lOiJ1cmwoKSIsZGVzY3JpcHRpb246IlJlZmVyZW5jZSBmb250IGJ5IFVSTCJ9LHtuYW1lOiJmb3JtYXQoKSIsZGVzY3JpcHRpb246Ik9wdGlvbmFsIGhpbnQgZGVzY3JpYmluZyB0aGUgZm9ybWF0IG9mIHRoZSBmb250IHJlc291cmNlLiJ9LHtuYW1lOiJsb2NhbCgpIixkZXNjcmlwdGlvbjoiRm9ybWF0LXNwZWNpZmljIHN0cmluZyB0aGF0IGlkZW50aWZpZXMgYSBsb2NhbGx5IGF2YWlsYWJsZSBjb3B5IG9mIGEgZ2l2ZW4gZm9udC4ifV0sYXRSdWxlOiJAZm9udC1mYWNlIixzeW50YXg6IlsgPHVybD4gWyBmb3JtYXQoIDxzdHJpbmc+IyApIF0/IHwgbG9jYWwoIDxmYW1pbHktbmFtZT4gKSBdIyIscmVsZXZhbmNlOjg2LGRlc2NyaXB0aW9uOiJAZm9udC1mYWNlIGRlc2NyaXB0b3IuIFNwZWNpZmllcyB0aGUgcmVzb3VyY2UgY29udGFpbmluZyBmb250IGRhdGEuIEl0IGlzIHJlcXVpcmVkLCB3aGV0aGVyIHRoZSBmb250IGlzIGRvd25sb2FkYWJsZSBvciBsb2NhbGx5IGluc3RhbGxlZC4iLHJlc3RyaWN0aW9uczpbImVudW0iLCJ1cmwiLCJpZGVudGlmaWVyIl19LHtuYW1lOiJzdG9wLWNvbG9yIixicm93c2VyczpbIkU4MCIsIkZGNzIiLCJTMTMuMSIsIkM4MCIsIk82NyJdLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIHdoYXQgY29sb3IgdG8gdXNlIGF0IHRoYXQgZ3JhZGllbnQgc3RvcC4iLHJlc3RyaWN0aW9uczpbImNvbG9yIl19LHtuYW1lOiJzdG9wLW9wYWNpdHkiLGJyb3dzZXJzOlsiRTgwIiwiRkY3MiIsIlMxMy4xIiwiQzgwIiwiTzY3Il0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJEZWZpbmVzIHRoZSBvcGFjaXR5IG9mIGEgZ2l2ZW4gZ3JhZGllbnQgc3RvcC4iLHJlc3RyaWN0aW9uczpbIm51bWJlcigwLTEpIl19LHtuYW1lOiJzdHJva2UiLGJyb3dzZXJzOlsiRTgwIiwiRkY3MiIsIlMxMy4xIiwiQzgwIiwiTzY3Il0sdmFsdWVzOlt7bmFtZToidXJsKCkiLGRlc2NyaXB0aW9uOiJBIFVSTCByZWZlcmVuY2UgdG8gYSBwYWludCBzZXJ2ZXIgZWxlbWVudCwgd2hpY2ggaXMgYW4gZWxlbWVudCB0aGF0IGRlZmluZXMgYSBwYWludCBzZXJ2ZXI6ICdoYXRjaCcsICdsaW5lYXJHcmFkaWVudCcsICdtZXNoJywgJ3BhdHRlcm4nLCAncmFkaWFsR3JhZGllbnQnIGFuZCAnc29saWRjb2xvcicuIn0se25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJObyBwYWludCBpcyBhcHBsaWVkIGluIHRoaXMgbGF5ZXIuIn1dLHJlbGV2YW5jZTo2NyxkZXNjcmlwdGlvbjoiUGFpbnRzIGFsb25nIHRoZSBvdXRsaW5lIG9mIHRoZSBnaXZlbiBncmFwaGljYWwgZWxlbWVudC4iLHJlc3RyaWN0aW9uczpbImNvbG9yIiwiZW51bSIsInVybCJdfSx7bmFtZToic3Ryb2tlLWRhc2hhcnJheSIsYnJvd3NlcnM6WyJFODAiLCJGRjcyIiwiUzEzLjEiLCJDODAiLCJPNjciXSx2YWx1ZXM6W3tuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIHRoYXQgbm8gZGFzaGluZyBpcyB1c2VkLiJ9XSxyZWxldmFuY2U6NjEsZGVzY3JpcHRpb246IkNvbnRyb2xzIHRoZSBwYXR0ZXJuIG9mIGRhc2hlcyBhbmQgZ2FwcyB1c2VkIHRvIHN0cm9rZSBwYXRocy4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsInBlcmNlbnRhZ2UiLCJudW1iZXIiLCJlbnVtIl19LHtuYW1lOiJzdHJva2UtZGFzaG9mZnNldCIsYnJvd3NlcnM6WyJFODAiLCJGRjcyIiwiUzEzLjEiLCJDODAiLCJPNjciXSxyZWxldmFuY2U6NjIsZGVzY3JpcHRpb246IlNwZWNpZmllcyB0aGUgZGlzdGFuY2UgaW50byB0aGUgZGFzaCBwYXR0ZXJuIHRvIHN0YXJ0IHRoZSBkYXNoLiIscmVzdHJpY3Rpb25zOlsicGVyY2VudGFnZSIsImxlbmd0aCJdfSx7bmFtZToic3Ryb2tlLWxpbmVjYXAiLGJyb3dzZXJzOlsiRTgwIiwiRkY3MiIsIlMxMy4xIiwiQzgwIiwiTzY3Il0sdmFsdWVzOlt7bmFtZToiYnV0dCIsZGVzY3JpcHRpb246IkluZGljYXRlcyB0aGF0IHRoZSBzdHJva2UgZm9yIGVhY2ggc3VicGF0aCBkb2VzIG5vdCBleHRlbmQgYmV5b25kIGl0cyB0d28gZW5kcG9pbnRzLiJ9LHtuYW1lOiJyb3VuZCIsZGVzY3JpcHRpb246IkluZGljYXRlcyB0aGF0IGF0IGVhY2ggZW5kIG9mIGVhY2ggc3VicGF0aCwgdGhlIHNoYXBlIHJlcHJlc2VudGluZyB0aGUgc3Ryb2tlIHdpbGwgYmUgZXh0ZW5kZWQgYnkgYSBoYWxmIGNpcmNsZSB3aXRoIGEgcmFkaXVzIGVxdWFsIHRvIHRoZSBzdHJva2Ugd2lkdGguIn0se25hbWU6InNxdWFyZSIsZGVzY3JpcHRpb246IkluZGljYXRlcyB0aGF0IGF0IHRoZSBlbmQgb2YgZWFjaCBzdWJwYXRoLCB0aGUgc2hhcGUgcmVwcmVzZW50aW5nIHRoZSBzdHJva2Ugd2lsbCBiZSBleHRlbmRlZCBieSBhIHJlY3RhbmdsZSB3aXRoIHRoZSBzYW1lIHdpZHRoIGFzIHRoZSBzdHJva2Ugd2lkdGggYW5kIHdob3NlIGxlbmd0aCBpcyBoYWxmIG9mIHRoZSBzdHJva2Ugd2lkdGguIn1dLHJlbGV2YW5jZTo1MyxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIHRoZSBzaGFwZSB0byBiZSB1c2VkIGF0IHRoZSBlbmQgb2Ygb3BlbiBzdWJwYXRocyB3aGVuIHRoZXkgYXJlIHN0cm9rZWQuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJzdHJva2UtbGluZWpvaW4iLGJyb3dzZXJzOlsiRTgwIiwiRkY3MiIsIlMxMy4xIiwiQzgwIiwiTzY3Il0sdmFsdWVzOlt7bmFtZToiYmV2ZWwiLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgdGhhdCBhIGJldmVsbGVkIGNvcm5lciBpcyB0byBiZSB1c2VkIHRvIGpvaW4gcGF0aCBzZWdtZW50cy4ifSx7bmFtZToibWl0ZXIiLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgdGhhdCBhIHNoYXJwIGNvcm5lciBpcyB0byBiZSB1c2VkIHRvIGpvaW4gcGF0aCBzZWdtZW50cy4ifSx7bmFtZToicm91bmQiLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgdGhhdCBhIHJvdW5kIGNvcm5lciBpcyB0byBiZSB1c2VkIHRvIGpvaW4gcGF0aCBzZWdtZW50cy4ifV0scmVsZXZhbmNlOjUxLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgdGhlIHNoYXBlIHRvIGJlIHVzZWQgYXQgdGhlIGNvcm5lcnMgb2YgcGF0aHMgb3IgYmFzaWMgc2hhcGVzIHdoZW4gdGhleSBhcmUgc3Ryb2tlZC4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6InN0cm9rZS1taXRlcmxpbWl0Iixicm93c2VyczpbIkU4MCIsIkZGNzIiLCJTMTMuMSIsIkM4MCIsIk82NyJdLHJlbGV2YW5jZTo1MSxkZXNjcmlwdGlvbjoiV2hlbiB0d28gbGluZSBzZWdtZW50cyBtZWV0IGF0IGEgc2hhcnAgYW5nbGUgYW5kIG1pdGVyIGpvaW5zIGhhdmUgYmVlbiBzcGVjaWZpZWQgZm9yICdzdHJva2UtbGluZWpvaW4nLCBpdCBpcyBwb3NzaWJsZSBmb3IgdGhlIG1pdGVyIHRvIGV4dGVuZCBmYXIgYmV5b25kIHRoZSB0aGlja25lc3Mgb2YgdGhlIGxpbmUgc3Ryb2tpbmcgdGhlIHBhdGguIixyZXN0cmljdGlvbnM6WyJudW1iZXIiXX0se25hbWU6InN0cm9rZS1vcGFjaXR5Iixicm93c2VyczpbIkU4MCIsIkZGNzIiLCJTMTMuMSIsIkM4MCIsIk82NyJdLHJlbGV2YW5jZTo1MixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIHRoZSBvcGFjaXR5IG9mIHRoZSBwYWludGluZyBvcGVyYXRpb24gdXNlZCB0byBzdHJva2UgdGhlIGN1cnJlbnQgb2JqZWN0LiIscmVzdHJpY3Rpb25zOlsibnVtYmVyKDAtMSkiXX0se25hbWU6InN0cm9rZS13aWR0aCIsYnJvd3NlcnM6WyJFODAiLCJGRjcyIiwiUzEzLjEiLCJDODAiLCJPNjciXSxyZWxldmFuY2U6NjQsZGVzY3JpcHRpb246IlNwZWNpZmllcyB0aGUgd2lkdGggb2YgdGhlIHN0cm9rZSBvbiB0aGUgY3VycmVudCBvYmplY3QuIixyZXN0cmljdGlvbnM6WyJwZXJjZW50YWdlIiwibGVuZ3RoIl19LHtuYW1lOiJzdWZmaXgiLGJyb3dzZXJzOlsiRkYzMyJdLGF0UnVsZToiQGNvdW50ZXItc3R5bGUiLHN5bnRheDoiPHN5bWJvbD4iLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiQGNvdW50ZXItc3R5bGUgZGVzY3JpcHRvci4gU3BlY2lmaWVzIGEgPHN5bWJvbD4gdGhhdCBpcyBhcHBlbmRlZCB0byB0aGUgbWFya2VyIHJlcHJlc2VudGF0aW9uLiIscmVzdHJpY3Rpb25zOlsiaW1hZ2UiLCJzdHJpbmciLCJpZGVudGlmaWVyIl19LHtuYW1lOiJzeXN0ZW0iLGJyb3dzZXJzOlsiRkYzMyJdLHZhbHVlczpbe25hbWU6ImFkZGl0aXZlIixkZXNjcmlwdGlvbjonUmVwcmVzZW50cyAic2lnbi12YWx1ZSIgbnVtYmVyaW5nIHN5c3RlbXMsIHdoaWNoLCByYXRoZXIgdGhhbiB1c2luZyByZXVzaW5nIGRpZ2l0cyBpbiBkaWZmZXJlbnQgcG9zaXRpb25zIHRvIGNoYW5nZSB0aGVpciB2YWx1ZSwgZGVmaW5lIGFkZGl0aW9uYWwgZGlnaXRzIHdpdGggbXVjaCBsYXJnZXIgdmFsdWVzLCBzbyB0aGF0IHRoZSB2YWx1ZSBvZiB0aGUgbnVtYmVyIGNhbiBiZSBvYnRhaW5lZCBieSBhZGRpbmcgYWxsIHRoZSBkaWdpdHMgdG9nZXRoZXIuJ30se25hbWU6ImFscGhhYmV0aWMiLGRlc2NyaXB0aW9uOidJbnRlcnByZXRzIHRoZSBsaXN0IG9mIGNvdW50ZXIgc3ltYm9scyBhcyBkaWdpdHMgdG8gYW4gYWxwaGFiZXRpYyBudW1iZXJpbmcgc3lzdGVtLCBzaW1pbGFyIHRvIHRoZSBkZWZhdWx0IGxvd2VyLWFscGhhIGNvdW50ZXIgc3R5bGUsIHdoaWNoIHdyYXBzIGZyb20gImEiLCAiYiIsICJjIiwgdG8gImFhIiwgImFiIiwgImFjIi4nfSx7bmFtZToiY3ljbGljIixkZXNjcmlwdGlvbjoiQ3ljbGVzIHJlcGVhdGVkbHkgdGhyb3VnaCBpdHMgcHJvdmlkZWQgc3ltYm9scywgbG9vcGluZyBiYWNrIHRvIHRoZSBiZWdpbm5pbmcgd2hlbiBpdCByZWFjaGVzIHRoZSBlbmQgb2YgdGhlIGxpc3QuIn0se25hbWU6ImV4dGVuZHMiLGRlc2NyaXB0aW9uOiJVc2UgdGhlIGFsZ29yaXRobSBvZiBhbm90aGVyIGNvdW50ZXIgc3R5bGUsIGJ1dCBhbHRlciBvdGhlciBhc3BlY3RzLiJ9LHtuYW1lOiJmaXhlZCIsZGVzY3JpcHRpb246IlJ1bnMgdGhyb3VnaCBpdHMgbGlzdCBvZiBjb3VudGVyIHN5bWJvbHMgb25jZSwgdGhlbiBmYWxscyBiYWNrLiJ9LHtuYW1lOiJudW1lcmljIixkZXNjcmlwdGlvbjpgaW50ZXJwcmV0cyB0aGUgbGlzdCBvZiBjb3VudGVyIHN5bWJvbHMgYXMgZGlnaXRzIHRvIGEgInBsYWNlLXZhbHVlIiBudW1iZXJpbmcgc3lzdGVtLCBzaW1pbGFyIHRvIHRoZSBkZWZhdWx0ICdkZWNpbWFsJyBjb3VudGVyIHN0eWxlLmB9LHtuYW1lOiJzeW1ib2xpYyIsZGVzY3JpcHRpb246IkN5Y2xlcyByZXBlYXRlZGx5IHRocm91Z2ggaXRzIHByb3ZpZGVkIHN5bWJvbHMsIGRvdWJsaW5nLCB0cmlwbGluZywgZXRjLiB0aGUgc3ltYm9scyBvbiBlYWNoIHN1Y2Nlc3NpdmUgcGFzcyB0aHJvdWdoIHRoZSBsaXN0LiJ9XSxhdFJ1bGU6IkBjb3VudGVyLXN0eWxlIixzeW50YXg6ImN5Y2xpYyB8IG51bWVyaWMgfCBhbHBoYWJldGljIHwgc3ltYm9saWMgfCBhZGRpdGl2ZSB8IFsgZml4ZWQgPGludGVnZXI+PyBdIHwgWyBleHRlbmRzIDxjb3VudGVyLXN0eWxlLW5hbWU+IF0iLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiQGNvdW50ZXItc3R5bGUgZGVzY3JpcHRvci4gU3BlY2lmaWVzIHdoaWNoIGFsZ29yaXRobSB3aWxsIGJlIHVzZWQgdG8gY29uc3RydWN0IHRoZSBjb3VudGVyJ3MgcmVwcmVzZW50YXRpb24gYmFzZWQgb24gdGhlIGNvdW50ZXIgdmFsdWUuIixyZXN0cmljdGlvbnM6WyJlbnVtIiwiaW50ZWdlciJdfSx7bmFtZToic3ltYm9scyIsYnJvd3NlcnM6WyJGRjMzIl0sYXRSdWxlOiJAY291bnRlci1zdHlsZSIsc3ludGF4OiI8c3ltYm9sPisiLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiQGNvdW50ZXItc3R5bGUgZGVzY3JpcHRvci4gU3BlY2lmaWVzIHRoZSBzeW1ib2xzIHVzZWQgYnkgdGhlIG1hcmtlci1jb25zdHJ1Y3Rpb24gYWxnb3JpdGhtIHNwZWNpZmllZCBieSB0aGUgc3lzdGVtIGRlc2NyaXB0b3IuIixyZXN0cmljdGlvbnM6WyJpbWFnZSIsInN0cmluZyIsImlkZW50aWZpZXIiXX0se25hbWU6InRhYmxlLWxheW91dCIsYnJvd3NlcnM6WyJFMTIiLCJGRjEiLCJTMSIsIkMxNCIsIklFNSIsIk83Il0sdmFsdWVzOlt7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IlVzZSBhbnkgYXV0b21hdGljIHRhYmxlIGxheW91dCBhbGdvcml0aG0uIn0se25hbWU6ImZpeGVkIixkZXNjcmlwdGlvbjoiVXNlIHRoZSBmaXhlZCB0YWJsZSBsYXlvdXQgYWxnb3JpdGhtLiJ9XSxzeW50YXg6ImF1dG8gfCBmaXhlZCIscmVsZXZhbmNlOjU4LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy90YWJsZS1sYXlvdXQifV0sZGVzY3JpcHRpb246IkNvbnRyb2xzIHRoZSBhbGdvcml0aG0gdXNlZCB0byBsYXkgb3V0IHRoZSB0YWJsZSBjZWxscywgcm93cywgYW5kIGNvbHVtbnMuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJ0YWItc2l6ZSIsYnJvd3NlcnM6WyJFNzkiLCJGRjkxIiwiUzciLCJDMjEiLCJPMTUiXSxzeW50YXg6IjxpbnRlZ2VyPiB8IDxsZW5ndGg+IixyZWxldmFuY2U6NTMscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3RhYi1zaXplIn1dLGRlc2NyaXB0aW9uOiJEZXRlcm1pbmVzIHRoZSB3aWR0aCBvZiB0aGUgdGFiIGNoYXJhY3RlciAoVSswMDA5KSwgaW4gc3BhY2UgY2hhcmFjdGVycyAoVSswMDIwKSwgd2hlbiByZW5kZXJlZC4iLHJlc3RyaWN0aW9uczpbImludGVnZXIiLCJsZW5ndGgiXX0se25hbWU6InRleHQtYWxpZ24iLGJyb3dzZXJzOlsiRTEyIiwiRkYxIiwiUzEiLCJDMSIsIklFMyIsIk8zLjUiXSx2YWx1ZXM6W3tuYW1lOiJjZW50ZXIiLGRlc2NyaXB0aW9uOiJUaGUgaW5saW5lIGNvbnRlbnRzIGFyZSBjZW50ZXJlZCB3aXRoaW4gdGhlIGxpbmUgYm94LiJ9LHtuYW1lOiJlbmQiLGJyb3dzZXJzOlsiRTEyIiwiRkYxIiwiUzEiLCJDMSIsIklFMyIsIk8zLjUiXSxkZXNjcmlwdGlvbjoiVGhlIGlubGluZSBjb250ZW50cyBhcmUgYWxpZ25lZCB0byB0aGUgZW5kIGVkZ2Ugb2YgdGhlIGxpbmUgYm94LiJ9LHtuYW1lOiJqdXN0aWZ5IixkZXNjcmlwdGlvbjoiVGhlIHRleHQgaXMganVzdGlmaWVkIGFjY29yZGluZyB0byB0aGUgbWV0aG9kIHNwZWNpZmllZCBieSB0aGUgJ3RleHQtanVzdGlmeScgcHJvcGVydHkuIn0se25hbWU6ImxlZnQiLGRlc2NyaXB0aW9uOiJUaGUgaW5saW5lIGNvbnRlbnRzIGFyZSBhbGlnbmVkIHRvIHRoZSBsZWZ0IGVkZ2Ugb2YgdGhlIGxpbmUgYm94LiBJbiB2ZXJ0aWNhbCB0ZXh0LCAnbGVmdCcgYWxpZ25zIHRvIHRoZSBlZGdlIG9mIHRoZSBsaW5lIGJveCB0aGF0IHdvdWxkIGJlIHRoZSBzdGFydCBlZGdlIGZvciBsZWZ0LXRvLXJpZ2h0IHRleHQuIn0se25hbWU6InJpZ2h0IixkZXNjcmlwdGlvbjoiVGhlIGlubGluZSBjb250ZW50cyBhcmUgYWxpZ25lZCB0byB0aGUgcmlnaHQgZWRnZSBvZiB0aGUgbGluZSBib3guIEluIHZlcnRpY2FsIHRleHQsICdyaWdodCcgYWxpZ25zIHRvIHRoZSBlZGdlIG9mIHRoZSBsaW5lIGJveCB0aGF0IHdvdWxkIGJlIHRoZSBlbmQgZWRnZSBmb3IgbGVmdC10by1yaWdodCB0ZXh0LiJ9LHtuYW1lOiJzdGFydCIsYnJvd3NlcnM6WyJFMTIiLCJGRjEiLCJTMSIsIkMxIiwiSUUzIiwiTzMuNSJdLGRlc2NyaXB0aW9uOiJUaGUgaW5saW5lIGNvbnRlbnRzIGFyZSBhbGlnbmVkIHRvIHRoZSBzdGFydCBlZGdlIG9mIHRoZSBsaW5lIGJveC4ifV0sc3ludGF4OiJzdGFydCB8IGVuZCB8IGxlZnQgfCByaWdodCB8IGNlbnRlciB8IGp1c3RpZnkgfCBtYXRjaC1wYXJlbnQiLHJlbGV2YW5jZTo5MyxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvdGV4dC1hbGlnbiJ9XSxkZXNjcmlwdGlvbjoiRGVzY3JpYmVzIGhvdyBpbmxpbmUgY29udGVudHMgb2YgYSBibG9jayBhcmUgaG9yaXpvbnRhbGx5IGFsaWduZWQgaWYgdGhlIGNvbnRlbnRzIGRvIG5vdCBjb21wbGV0ZWx5IGZpbGwgdGhlIGxpbmUgYm94LiIscmVzdHJpY3Rpb25zOlsic3RyaW5nIl19LHtuYW1lOiJ0ZXh0LWFsaWduLWxhc3QiLGJyb3dzZXJzOlsiRTEyIiwiRkY0OSIsIlMxNiIsIkM0NyIsIklFNS41IiwiTzM0Il0sdmFsdWVzOlt7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IkNvbnRlbnQgb24gdGhlIGFmZmVjdGVkIGxpbmUgaXMgYWxpZ25lZCBwZXIgJ3RleHQtYWxpZ24nIHVubGVzcyAndGV4dC1hbGlnbicgaXMgc2V0IHRvICdqdXN0aWZ5JywgaW4gd2hpY2ggY2FzZSBpdCBpcyAnc3RhcnQtYWxpZ25lZCcuIn0se25hbWU6ImNlbnRlciIsZGVzY3JpcHRpb246IlRoZSBpbmxpbmUgY29udGVudHMgYXJlIGNlbnRlcmVkIHdpdGhpbiB0aGUgbGluZSBib3guIn0se25hbWU6Imp1c3RpZnkiLGRlc2NyaXB0aW9uOiJUaGUgdGV4dCBpcyBqdXN0aWZpZWQgYWNjb3JkaW5nIHRvIHRoZSBtZXRob2Qgc3BlY2lmaWVkIGJ5IHRoZSAndGV4dC1qdXN0aWZ5JyBwcm9wZXJ0eS4ifSx7bmFtZToibGVmdCIsZGVzY3JpcHRpb246IlRoZSBpbmxpbmUgY29udGVudHMgYXJlIGFsaWduZWQgdG8gdGhlIGxlZnQgZWRnZSBvZiB0aGUgbGluZSBib3guIEluIHZlcnRpY2FsIHRleHQsICdsZWZ0JyBhbGlnbnMgdG8gdGhlIGVkZ2Ugb2YgdGhlIGxpbmUgYm94IHRoYXQgd291bGQgYmUgdGhlIHN0YXJ0IGVkZ2UgZm9yIGxlZnQtdG8tcmlnaHQgdGV4dC4ifSx7bmFtZToicmlnaHQiLGRlc2NyaXB0aW9uOiJUaGUgaW5saW5lIGNvbnRlbnRzIGFyZSBhbGlnbmVkIHRvIHRoZSByaWdodCBlZGdlIG9mIHRoZSBsaW5lIGJveC4gSW4gdmVydGljYWwgdGV4dCwgJ3JpZ2h0JyBhbGlnbnMgdG8gdGhlIGVkZ2Ugb2YgdGhlIGxpbmUgYm94IHRoYXQgd291bGQgYmUgdGhlIGVuZCBlZGdlIGZvciBsZWZ0LXRvLXJpZ2h0IHRleHQuIn1dLHN5bnRheDoiYXV0byB8IHN0YXJ0IHwgZW5kIHwgbGVmdCB8IHJpZ2h0IHwgY2VudGVyIHwganVzdGlmeSIscmVsZXZhbmNlOjUxLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy90ZXh0LWFsaWduLWxhc3QifV0sZGVzY3JpcHRpb246IkRlc2NyaWJlcyBob3cgdGhlIGxhc3QgbGluZSBvZiBhIGJsb2NrIG9yIGEgbGluZSByaWdodCBiZWZvcmUgYSBmb3JjZWQgbGluZSBicmVhayBpcyBhbGlnbmVkIHdoZW4gJ3RleHQtYWxpZ24nIGlzIHNldCB0byAnanVzdGlmeScuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJ0ZXh0LWFuY2hvciIsYnJvd3NlcnM6WyJFODAiLCJGRjcyIiwiUzEzLjEiLCJDODAiLCJPNjciXSx2YWx1ZXM6W3tuYW1lOiJlbmQiLGRlc2NyaXB0aW9uOiJUaGUgcmVuZGVyZWQgY2hhcmFjdGVycyBhcmUgYWxpZ25lZCBzdWNoIHRoYXQgdGhlIGVuZCBvZiB0aGUgcmVzdWx0aW5nIHJlbmRlcmVkIHRleHQgaXMgYXQgdGhlIGluaXRpYWwgY3VycmVudCB0ZXh0IHBvc2l0aW9uLiJ9LHtuYW1lOiJtaWRkbGUiLGRlc2NyaXB0aW9uOiJUaGUgcmVuZGVyZWQgY2hhcmFjdGVycyBhcmUgYWxpZ25lZCBzdWNoIHRoYXQgdGhlIGdlb21ldHJpYyBtaWRkbGUgb2YgdGhlIHJlc3VsdGluZyByZW5kZXJlZCB0ZXh0IGlzIGF0IHRoZSBpbml0aWFsIGN1cnJlbnQgdGV4dCBwb3NpdGlvbi4ifSx7bmFtZToic3RhcnQiLGRlc2NyaXB0aW9uOiJUaGUgcmVuZGVyZWQgY2hhcmFjdGVycyBhcmUgYWxpZ25lZCBzdWNoIHRoYXQgdGhlIHN0YXJ0IG9mIHRoZSByZXN1bHRpbmcgcmVuZGVyZWQgdGV4dCBpcyBhdCB0aGUgaW5pdGlhbCBjdXJyZW50IHRleHQgcG9zaXRpb24uIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiVXNlZCB0byBhbGlnbiAoc3RhcnQtLCBtaWRkbGUtIG9yIGVuZC1hbGlnbm1lbnQpIGEgc3RyaW5nIG9mIHRleHQgcmVsYXRpdmUgdG8gYSBnaXZlbiBwb2ludC4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6InRleHQtZGVjb3JhdGlvbiIsYnJvd3NlcnM6WyJFMTIiLCJGRjEiLCJTMSIsIkMxIiwiSUUzIiwiTzMuNSJdLHZhbHVlczpbe25hbWU6ImRhc2hlZCIsZGVzY3JpcHRpb246IlByb2R1Y2VzIGEgZGFzaGVkIGxpbmUgc3R5bGUuIn0se25hbWU6ImRvdHRlZCIsZGVzY3JpcHRpb246IlByb2R1Y2VzIGEgZG90dGVkIGxpbmUuIn0se25hbWU6ImRvdWJsZSIsZGVzY3JpcHRpb246IlByb2R1Y2VzIGEgZG91YmxlIGxpbmUuIn0se25hbWU6ImxpbmUtdGhyb3VnaCIsZGVzY3JpcHRpb246IkVhY2ggbGluZSBvZiB0ZXh0IGhhcyBhIGxpbmUgdGhyb3VnaCB0aGUgbWlkZGxlLiJ9LHtuYW1lOiJub25lIixkZXNjcmlwdGlvbjoiUHJvZHVjZXMgbm8gbGluZS4ifSx7bmFtZToib3ZlcmxpbmUiLGRlc2NyaXB0aW9uOiJFYWNoIGxpbmUgb2YgdGV4dCBoYXMgYSBsaW5lIGFib3ZlIGl0LiJ9LHtuYW1lOiJzb2xpZCIsZGVzY3JpcHRpb246IlByb2R1Y2VzIGEgc29saWQgbGluZS4ifSx7bmFtZToidW5kZXJsaW5lIixkZXNjcmlwdGlvbjoiRWFjaCBsaW5lIG9mIHRleHQgaXMgdW5kZXJsaW5lZC4ifSx7bmFtZToid2F2eSIsZGVzY3JpcHRpb246IlByb2R1Y2VzIGEgd2F2eSBsaW5lLiJ9XSxzeW50YXg6IjwndGV4dC1kZWNvcmF0aW9uLWxpbmUnPiB8fCA8J3RleHQtZGVjb3JhdGlvbi1zdHlsZSc+IHx8IDwndGV4dC1kZWNvcmF0aW9uLWNvbG9yJz4gfHwgPCd0ZXh0LWRlY29yYXRpb24tdGhpY2tuZXNzJz4iLHJlbGV2YW5jZTo5MSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvdGV4dC1kZWNvcmF0aW9uIn1dLGRlc2NyaXB0aW9uOiJEZWNvcmF0aW9ucyBhcHBsaWVkIHRvIGZvbnQgdXNlZCBmb3IgYW4gZWxlbWVudCdzIHRleHQuIixyZXN0cmljdGlvbnM6WyJlbnVtIiwiY29sb3IiXX0se25hbWU6InRleHQtZGVjb3JhdGlvbi1jb2xvciIsYnJvd3NlcnM6WyJFNzkiLCJGRjM2IiwiUzEyLjEiLCJDNTciLCJPNDQiXSxzeW50YXg6Ijxjb2xvcj4iLHJlbGV2YW5jZTo1NSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvdGV4dC1kZWNvcmF0aW9uLWNvbG9yIn1dLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgdGhlIGNvbG9yIG9mIHRleHQgZGVjb3JhdGlvbiAodW5kZXJsaW5lcyBvdmVybGluZXMsIGFuZCBsaW5lLXRocm91Z2hzKSBzZXQgb24gdGhlIGVsZW1lbnQgd2l0aCB0ZXh0LWRlY29yYXRpb24tbGluZS4iLHJlc3RyaWN0aW9uczpbImNvbG9yIl19LHtuYW1lOiJ0ZXh0LWRlY29yYXRpb24tbGluZSIsYnJvd3NlcnM6WyJFNzkiLCJGRjM2IiwiUzEyLjEiLCJDNTciLCJPNDQiXSx2YWx1ZXM6W3tuYW1lOiJsaW5lLXRocm91Z2giLGRlc2NyaXB0aW9uOiJFYWNoIGxpbmUgb2YgdGV4dCBoYXMgYSBsaW5lIHRocm91Z2ggdGhlIG1pZGRsZS4ifSx7bmFtZToibm9uZSIsZGVzY3JpcHRpb246Ik5laXRoZXIgcHJvZHVjZXMgbm9yIGluaGliaXRzIHRleHQgZGVjb3JhdGlvbi4ifSx7bmFtZToib3ZlcmxpbmUiLGRlc2NyaXB0aW9uOiJFYWNoIGxpbmUgb2YgdGV4dCBoYXMgYSBsaW5lIGFib3ZlIGl0LiJ9LHtuYW1lOiJ1bmRlcmxpbmUiLGRlc2NyaXB0aW9uOiJFYWNoIGxpbmUgb2YgdGV4dCBpcyB1bmRlcmxpbmVkLiJ9XSxzeW50YXg6Im5vbmUgfCBbIHVuZGVybGluZSB8fCBvdmVybGluZSB8fCBsaW5lLXRocm91Z2ggfHwgYmxpbmsgXSB8IHNwZWxsaW5nLWVycm9yIHwgZ3JhbW1hci1lcnJvciIscmVsZXZhbmNlOjU3LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy90ZXh0LWRlY29yYXRpb24tbGluZSJ9XSxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIHdoYXQgbGluZSBkZWNvcmF0aW9ucywgaWYgYW55LCBhcmUgYWRkZWQgdG8gdGhlIGVsZW1lbnQuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJ0ZXh0LWRlY29yYXRpb24tc3R5bGUiLGJyb3dzZXJzOlsiRTc5IiwiRkYzNiIsIlMxMi4xIiwiQzU3IiwiTzQ0Il0sdmFsdWVzOlt7bmFtZToiZGFzaGVkIixkZXNjcmlwdGlvbjoiUHJvZHVjZXMgYSBkYXNoZWQgbGluZSBzdHlsZS4ifSx7bmFtZToiZG90dGVkIixkZXNjcmlwdGlvbjoiUHJvZHVjZXMgYSBkb3R0ZWQgbGluZS4ifSx7bmFtZToiZG91YmxlIixkZXNjcmlwdGlvbjoiUHJvZHVjZXMgYSBkb3VibGUgbGluZS4ifSx7bmFtZToibm9uZSIsZGVzY3JpcHRpb246IlByb2R1Y2VzIG5vIGxpbmUuIn0se25hbWU6InNvbGlkIixkZXNjcmlwdGlvbjoiUHJvZHVjZXMgYSBzb2xpZCBsaW5lLiJ9LHtuYW1lOiJ3YXZ5IixkZXNjcmlwdGlvbjoiUHJvZHVjZXMgYSB3YXZ5IGxpbmUuIn1dLHN5bnRheDoic29saWQgfCBkb3VibGUgfCBkb3R0ZWQgfCBkYXNoZWQgfCB3YXZ5IixyZWxldmFuY2U6NTEscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3RleHQtZGVjb3JhdGlvbi1zdHlsZSJ9XSxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIHRoZSBsaW5lIHN0eWxlIGZvciB1bmRlcmxpbmUsIGxpbmUtdGhyb3VnaCBhbmQgb3ZlcmxpbmUgdGV4dCBkZWNvcmF0aW9uLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToidGV4dC1pbmRlbnQiLGJyb3dzZXJzOlsiRTEyIiwiRkYxIiwiUzEiLCJDMSIsIklFMyIsIk8zLjUiXSx2YWx1ZXM6W10sc3ludGF4OiI8bGVuZ3RoLXBlcmNlbnRhZ2U+ICYmIGhhbmdpbmc/ICYmIGVhY2gtbGluZT8iLHJlbGV2YW5jZTo2NyxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvdGV4dC1pbmRlbnQifV0sZGVzY3JpcHRpb246IlNwZWNpZmllcyB0aGUgaW5kZW50YXRpb24gYXBwbGllZCB0byBsaW5lcyBvZiBpbmxpbmUgY29udGVudCBpbiBhIGJsb2NrLiBUaGUgaW5kZW50YXRpb24gb25seSBhZmZlY3RzIHRoZSBmaXJzdCBsaW5lIG9mIGlubGluZSBjb250ZW50IGluIHRoZSBibG9jayB1bmxlc3MgdGhlICdoYW5naW5nJyBrZXl3b3JkIGlzIHNwZWNpZmllZCwgaW4gd2hpY2ggY2FzZSBpdCBhZmZlY3RzIGFsbCBsaW5lcyBleGNlcHQgdGhlIGZpcnN0LiIscmVzdHJpY3Rpb25zOlsicGVyY2VudGFnZSIsImxlbmd0aCJdfSx7bmFtZToidGV4dC1qdXN0aWZ5Iixicm93c2VyczpbIkU3OSIsIkZGNTUiLCJDMzIiLCJJRTExIiwiTzE5Il0sdmFsdWVzOlt7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IlRoZSBVQSBkZXRlcm1pbmVzIHRoZSBqdXN0aWZpY2F0aW9uIGFsZ29yaXRobSB0byBmb2xsb3csIGJhc2VkIG9uIGEgYmFsYW5jZSBiZXR3ZWVuIHBlcmZvcm1hbmNlIGFuZCBhZGVxdWF0ZSBwcmVzZW50YXRpb24gcXVhbGl0eS4ifSx7bmFtZToiZGlzdHJpYnV0ZSIsZGVzY3JpcHRpb246Ikp1c3RpZmljYXRpb24gcHJpbWFyaWx5IGNoYW5nZXMgc3BhY2luZyBib3RoIGF0IHdvcmQgc2VwYXJhdG9ycyBhbmQgYXQgZ3JhcGhlbWUgY2x1c3RlciBib3VuZGFyaWVzIGluIGFsbCBzY3JpcHRzIGV4Y2VwdCB0aG9zZSBpbiB0aGUgY29ubmVjdGVkIGFuZCBjdXJzaXZlIGdyb3Vwcy4gVGhpcyB2YWx1ZSBpcyBzb21ldGltZXMgdXNlZCBpbiBlLmcuIEphcGFuZXNlLCBvZnRlbiB3aXRoIHRoZSAndGV4dC1hbGlnbi1sYXN0JyBwcm9wZXJ0eS4ifSx7bmFtZToiZGlzdHJpYnV0ZS1hbGwtbGluZXMifSx7bmFtZToiaW50ZXItY2x1c3RlciIsZGVzY3JpcHRpb246Ikp1c3RpZmljYXRpb24gcHJpbWFyaWx5IGNoYW5nZXMgc3BhY2luZyBhdCB3b3JkIHNlcGFyYXRvcnMgYW5kIGF0IGdyYXBoZW1lIGNsdXN0ZXIgYm91bmRhcmllcyBpbiBjbHVzdGVyZWQgc2NyaXB0cy4gVGhpcyB2YWx1ZSBpcyB0eXBpY2FsbHkgdXNlZCBmb3IgU291dGhlYXN0IEFzaWFuIHNjcmlwdHMgc3VjaCBhcyBUaGFpLiJ9LHtuYW1lOiJpbnRlci1pZGVvZ3JhcGgiLGRlc2NyaXB0aW9uOiJKdXN0aWZpY2F0aW9uIHByaW1hcmlseSBjaGFuZ2VzIHNwYWNpbmcgYXQgd29yZCBzZXBhcmF0b3JzIGFuZCBhdCBpbnRlci1ncmFwaGVtaWMgYm91bmRhcmllcyBpbiBzY3JpcHRzIHRoYXQgdXNlIG5vIHdvcmQgc3BhY2VzLiBUaGlzIHZhbHVlIGlzIHR5cGljYWxseSB1c2VkIGZvciBDSksgbGFuZ3VhZ2VzLiJ9LHtuYW1lOiJpbnRlci13b3JkIixkZXNjcmlwdGlvbjoiSnVzdGlmaWNhdGlvbiBwcmltYXJpbHkgY2hhbmdlcyBzcGFjaW5nIGF0IHdvcmQgc2VwYXJhdG9ycy4gVGhpcyB2YWx1ZSBpcyB0eXBpY2FsbHkgdXNlZCBmb3IgbGFuZ3VhZ2VzIHRoYXQgc2VwYXJhdGUgd29yZHMgdXNpbmcgc3BhY2VzLCBsaWtlIEVuZ2xpc2ggb3IgKHNvbWV0aW1lcykgS29yZWFuLiJ9LHtuYW1lOiJrYXNoaWRhIixkZXNjcmlwdGlvbjoiSnVzdGlmaWNhdGlvbiBwcmltYXJpbHkgc3RyZXRjaGVzIEFyYWJpYyBhbmQgcmVsYXRlZCBzY3JpcHRzIHRocm91Z2ggdGhlIHVzZSBvZiBrYXNoaWRhIG9yIG90aGVyIGNhbGxpZ3JhcGhpYyBlbG9uZ2F0aW9uLiJ9LHtuYW1lOiJuZXdzcGFwZXIifV0sc3ludGF4OiJhdXRvIHwgaW50ZXItY2hhcmFjdGVyIHwgaW50ZXItd29yZCB8IG5vbmUiLHJlbGV2YW5jZTo1MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvdGV4dC1qdXN0aWZ5In1dLGRlc2NyaXB0aW9uOiJTZWxlY3RzIHRoZSBqdXN0aWZpY2F0aW9uIGFsZ29yaXRobSB1c2VkIHdoZW4gJ3RleHQtYWxpZ24nIGlzIHNldCB0byAnanVzdGlmeScuIFRoZSBwcm9wZXJ0eSBhcHBsaWVzIHRvIGJsb2NrIGNvbnRhaW5lcnMsIGJ1dCB0aGUgVUEgbWF5IChidXQgaXMgbm90IHJlcXVpcmVkIHRvKSBhbHNvIHN1cHBvcnQgaXQgb24gaW5saW5lIGVsZW1lbnRzLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToidGV4dC1vcmllbnRhdGlvbiIsYnJvd3NlcnM6WyJFNzkiLCJGRjQxIiwiUzE0IiwiQzQ4IiwiTzM1Il0sdmFsdWVzOlt7bmFtZToic2lkZXdheXMiLGJyb3dzZXJzOlsiRTc5IiwiRkY0MSIsIlMxNCIsIkM0OCIsIk8zNSJdLGRlc2NyaXB0aW9uOiJUaGlzIHZhbHVlIGlzIGVxdWl2YWxlbnQgdG8gJ3NpZGV3YXlzLXJpZ2h0JyBpbiAndmVydGljYWwtcmwnIHdyaXRpbmcgbW9kZSBhbmQgZXF1aXZhbGVudCB0byAnc2lkZXdheXMtbGVmdCcgaW4gJ3ZlcnRpY2FsLWxyJyB3cml0aW5nIG1vZGUuIn0se25hbWU6InNpZGV3YXlzLXJpZ2h0Iixicm93c2VyczpbIkU3OSIsIkZGNDEiLCJTMTQiLCJDNDgiLCJPMzUiXSxkZXNjcmlwdGlvbjoiSW4gdmVydGljYWwgd3JpdGluZyBtb2RlcywgdGhpcyBjYXVzZXMgdGV4dCB0byBiZSBzZXQgYXMgaWYgaW4gYSBob3Jpem9udGFsIGxheW91dCwgYnV0IHJvdGF0ZWQgOTDCsCBjbG9ja3dpc2UuIn0se25hbWU6InVwcmlnaHQiLGRlc2NyaXB0aW9uOiJJbiB2ZXJ0aWNhbCB3cml0aW5nIG1vZGVzLCBjaGFyYWN0ZXJzIGZyb20gaG9yaXpvbnRhbC1vbmx5IHNjcmlwdHMgYXJlIHJlbmRlcmVkIHVwcmlnaHQsIGkuZS4gaW4gdGhlaXIgc3RhbmRhcmQgaG9yaXpvbnRhbCBvcmllbnRhdGlvbi4ifV0sc3ludGF4OiJtaXhlZCB8IHVwcmlnaHQgfCBzaWRld2F5cyIscmVsZXZhbmNlOjUwLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy90ZXh0LW9yaWVudGF0aW9uIn1dLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgdGhlIG9yaWVudGF0aW9uIG9mIHRleHQgd2l0aGluIGEgbGluZS4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6InRleHQtb3ZlcmZsb3ciLGJyb3dzZXJzOlsiRTEyIiwiRkY3IiwiUzEuMyIsIkMxIiwiSUU2IiwiTzExIl0sdmFsdWVzOlt7bmFtZToiY2xpcCIsZGVzY3JpcHRpb246IkNsaXAgaW5saW5lIGNvbnRlbnQgdGhhdCBvdmVyZmxvd3MuIENoYXJhY3RlcnMgbWF5IGJlIG9ubHkgcGFydGlhbGx5IHJlbmRlcmVkLiJ9LHtuYW1lOiJlbGxpcHNpcyIsZGVzY3JpcHRpb246IlJlbmRlciBhbiBlbGxpcHNpcyBjaGFyYWN0ZXIgKFUrMjAyNikgdG8gcmVwcmVzZW50IGNsaXBwZWQgaW5saW5lIGNvbnRlbnQuIn1dLHN5bnRheDoiWyBjbGlwIHwgZWxsaXBzaXMgfCA8c3RyaW5nPiBdezEsMn0iLHJlbGV2YW5jZTo4MixyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvdGV4dC1vdmVyZmxvdyJ9XSxkZXNjcmlwdGlvbjoiVGV4dCBjYW4gb3ZlcmZsb3cgZm9yIGV4YW1wbGUgd2hlbiBpdCBpcyBwcmV2ZW50ZWQgZnJvbSB3cmFwcGluZy4iLHJlc3RyaWN0aW9uczpbImVudW0iLCJzdHJpbmciXX0se25hbWU6InRleHQtcmVuZGVyaW5nIixicm93c2VyczpbIkU3OSIsIkZGMSIsIlM1IiwiQzQiLCJPMTUiXSx2YWx1ZXM6W3tuYW1lOiJhdXRvIn0se25hbWU6Imdlb21ldHJpY1ByZWNpc2lvbiIsZGVzY3JpcHRpb246IkluZGljYXRlcyB0aGF0IHRoZSB1c2VyIGFnZW50IHNoYWxsIGVtcGhhc2l6ZSBnZW9tZXRyaWMgcHJlY2lzaW9uIG92ZXIgbGVnaWJpbGl0eSBhbmQgcmVuZGVyaW5nIHNwZWVkLiJ9LHtuYW1lOiJvcHRpbWl6ZUxlZ2liaWxpdHkiLGRlc2NyaXB0aW9uOiJJbmRpY2F0ZXMgdGhhdCB0aGUgdXNlciBhZ2VudCBzaGFsbCBlbXBoYXNpemUgbGVnaWJpbGl0eSBvdmVyIHJlbmRlcmluZyBzcGVlZCBhbmQgZ2VvbWV0cmljIHByZWNpc2lvbi4ifSx7bmFtZToib3B0aW1pemVTcGVlZCIsZGVzY3JpcHRpb246IkluZGljYXRlcyB0aGF0IHRoZSB1c2VyIGFnZW50IHNoYWxsIGVtcGhhc2l6ZSByZW5kZXJpbmcgc3BlZWQgb3ZlciBsZWdpYmlsaXR5IGFuZCBnZW9tZXRyaWMgcHJlY2lzaW9uLiJ9XSxzeW50YXg6ImF1dG8gfCBvcHRpbWl6ZVNwZWVkIHwgb3B0aW1pemVMZWdpYmlsaXR5IHwgZ2VvbWV0cmljUHJlY2lzaW9uIixyZWxldmFuY2U6NjgscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3RleHQtcmVuZGVyaW5nIn1dLGRlc2NyaXB0aW9uOiJUaGUgY3JlYXRvciBvZiBTVkcgY29udGVudCBtaWdodCB3YW50IHRvIHByb3ZpZGUgYSBoaW50IHRvIHRoZSBpbXBsZW1lbnRhdGlvbiBhYm91dCB3aGF0IHRyYWRlb2ZmcyB0byBtYWtlIGFzIGl0IHJlbmRlcnMgdGV4dC4gVGhlICd0ZXh0LXJlbmRlcmluZycgcHJvcGVydHkgcHJvdmlkZXMgdGhlc2UgaGludHMuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJ0ZXh0LXNoYWRvdyIsYnJvd3NlcnM6WyJFMTIiLCJGRjMuNSIsIlMxLjEiLCJDMiIsIklFMTAiLCJPOS41Il0sdmFsdWVzOlt7bmFtZToibm9uZSIsZGVzY3JpcHRpb246Ik5vIHNoYWRvdy4ifV0sc3ludGF4OiJub25lIHwgPHNoYWRvdy10PiMiLHJlbGV2YW5jZTo3MyxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvdGV4dC1zaGFkb3cifV0sZGVzY3JpcHRpb246IkVuYWJsZXMgc2hhZG93IGVmZmVjdHMgdG8gYmUgYXBwbGllZCB0byB0aGUgdGV4dCBvZiB0aGUgZWxlbWVudC4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsImNvbG9yIl19LHtuYW1lOiJ0ZXh0LXRyYW5zZm9ybSIsYnJvd3NlcnM6WyJFMTIiLCJGRjEiLCJTMSIsIkMxIiwiSUU0IiwiTzciXSx2YWx1ZXM6W3tuYW1lOiJjYXBpdGFsaXplIixkZXNjcmlwdGlvbjoiUHV0cyB0aGUgZmlyc3QgdHlwb2dyYXBoaWMgbGV0dGVyIHVuaXQgb2YgZWFjaCB3b3JkIGluIHRpdGxlY2FzZS4ifSx7bmFtZToibG93ZXJjYXNlIixkZXNjcmlwdGlvbjoiUHV0cyBhbGwgbGV0dGVycyBpbiBsb3dlcmNhc2UuIn0se25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJObyBlZmZlY3RzLiJ9LHtuYW1lOiJ1cHBlcmNhc2UiLGRlc2NyaXB0aW9uOiJQdXRzIGFsbCBsZXR0ZXJzIGluIHVwcGVyY2FzZS4ifV0sc3ludGF4OiJub25lIHwgY2FwaXRhbGl6ZSB8IHVwcGVyY2FzZSB8IGxvd2VyY2FzZSB8IGZ1bGwtd2lkdGggfCBmdWxsLXNpemUta2FuYSIscmVsZXZhbmNlOjg2LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy90ZXh0LXRyYW5zZm9ybSJ9XSxkZXNjcmlwdGlvbjoiQ29udHJvbHMgY2FwaXRhbGl6YXRpb24gZWZmZWN0cyBvZiBhbiBlbGVtZW50J3MgdGV4dC4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6InRleHQtdW5kZXJsaW5lLXBvc2l0aW9uIixicm93c2VyczpbIkUxMiIsIkZGNzQiLCJTMTIuMSIsIkMzMyIsIklFNiIsIk8yMCJdLHZhbHVlczpbe25hbWU6ImFib3ZlIn0se25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJUaGUgdXNlciBhZ2VudCBtYXkgdXNlIGFueSBhbGdvcml0aG0gdG8gZGV0ZXJtaW5lIHRoZSB1bmRlcmxpbmUncyBwb3NpdGlvbi4gSW4gaG9yaXpvbnRhbCBsaW5lIGxheW91dCwgdGhlIHVuZGVybGluZSBzaG91bGQgYmUgYWxpZ25lZCBhcyBmb3IgYWxwaGFiZXRpYy4gSW4gdmVydGljYWwgbGluZSBsYXlvdXQsIGlmIHRoZSBsYW5ndWFnZSBpcyBzZXQgdG8gSmFwYW5lc2Ugb3IgS29yZWFuLCB0aGUgdW5kZXJsaW5lIHNob3VsZCBiZSBhbGlnbmVkIGFzIGZvciBvdmVyLiJ9LHtuYW1lOiJiZWxvdyIsZGVzY3JpcHRpb246IlRoZSB1bmRlcmxpbmUgaXMgYWxpZ25lZCB3aXRoIHRoZSB1bmRlciBlZGdlIG9mIHRoZSBlbGVtZW50J3MgY29udGVudCBib3guIn1dLHN5bnRheDoiYXV0byB8IGZyb20tZm9udCB8IFsgdW5kZXIgfHwgWyBsZWZ0IHwgcmlnaHQgXSBdIixyZWxldmFuY2U6NTAscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3RleHQtdW5kZXJsaW5lLXBvc2l0aW9uIn1dLGRlc2NyaXB0aW9uOiJTZXRzIHRoZSBwb3NpdGlvbiBvZiBhbiB1bmRlcmxpbmUgc3BlY2lmaWVkIG9uIHRoZSBzYW1lIGVsZW1lbnQ6IGl0IGRvZXMgbm90IGFmZmVjdCB1bmRlcmxpbmVzIHNwZWNpZmllZCBieSBhbmNlc3RvciBlbGVtZW50cy4gVGhpcyBwcm9wZXJ0eSBpcyB0eXBpY2FsbHkgdXNlZCBpbiB2ZXJ0aWNhbCB3cml0aW5nIGNvbnRleHRzIHN1Y2ggYXMgaW4gSmFwYW5lc2UgZG9jdW1lbnRzIHdoZXJlIGl0IG9mdGVuIGRlc2lyZWQgdG8gaGF2ZSB0aGUgdW5kZXJsaW5lIGFwcGVhciAnb3ZlcicgKHRvIHRoZSByaWdodCBvZikgdGhlIGFmZmVjdGVkIHJ1biBvZiB0ZXh0IixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJ0b3AiLGJyb3dzZXJzOlsiRTEyIiwiRkYxIiwiUzEiLCJDMSIsIklFNSIsIk82Il0sdmFsdWVzOlt7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IkZvciBub24tcmVwbGFjZWQgZWxlbWVudHMsIHRoZSBlZmZlY3Qgb2YgdGhpcyB2YWx1ZSBkZXBlbmRzIG9uIHdoaWNoIG9mIHJlbGF0ZWQgcHJvcGVydGllcyBoYXZlIHRoZSB2YWx1ZSAnYXV0bycgYXMgd2VsbCJ9XSxzeW50YXg6IjxsZW5ndGg+IHwgPHBlcmNlbnRhZ2U+IHwgYXV0byIscmVsZXZhbmNlOjk1LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy90b3AifV0sZGVzY3JpcHRpb246IlNwZWNpZmllcyBob3cgZmFyIGFuIGFic29sdXRlbHkgcG9zaXRpb25lZCBib3gncyB0b3AgbWFyZ2luIGVkZ2UgaXMgb2Zmc2V0IGJlbG93IHRoZSB0b3AgZWRnZSBvZiB0aGUgYm94J3MgJ2NvbnRhaW5pbmcgYmxvY2snLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwicGVyY2VudGFnZSJdfSx7bmFtZToidG91Y2gtYWN0aW9uIixicm93c2VyczpbIkUxMiIsIkZGNTIiLCJTMTMiLCJDMzYiLCJJRTExIiwiTzIzIl0sdmFsdWVzOlt7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IlRoZSB1c2VyIGFnZW50IG1heSBkZXRlcm1pbmUgYW55IHBlcm1pdHRlZCB0b3VjaCBiZWhhdmlvcnMgZm9yIHRvdWNoZXMgdGhhdCBiZWdpbiBvbiB0aGUgZWxlbWVudC4ifSx7bmFtZToiY3Jvc3Mtc2xpZGUteCIsYnJvd3NlcnM6WyJFMTIiLCJGRjUyIiwiUzEzIiwiQzM2IiwiSUUxMSIsIk8yMyJdfSx7bmFtZToiY3Jvc3Mtc2xpZGUteSIsYnJvd3NlcnM6WyJFMTIiLCJGRjUyIiwiUzEzIiwiQzM2IiwiSUUxMSIsIk8yMyJdfSx7bmFtZToiZG91YmxlLXRhcC16b29tIixicm93c2VyczpbIkUxMiIsIkZGNTIiLCJTMTMiLCJDMzYiLCJJRTExIiwiTzIzIl19LHtuYW1lOiJtYW5pcHVsYXRpb24iLGRlc2NyaXB0aW9uOiJUaGUgdXNlciBhZ2VudCBtYXkgY29uc2lkZXIgdG91Y2hlcyB0aGF0IGJlZ2luIG9uIHRoZSBlbGVtZW50IG9ubHkgZm9yIHRoZSBwdXJwb3NlcyBvZiBzY3JvbGxpbmcgYW5kIGNvbnRpbnVvdXMgem9vbWluZy4ifSx7bmFtZToibm9uZSIsZGVzY3JpcHRpb246IlRvdWNoZXMgdGhhdCBiZWdpbiBvbiB0aGUgZWxlbWVudCBtdXN0IG5vdCB0cmlnZ2VyIGRlZmF1bHQgdG91Y2ggYmVoYXZpb3JzLiJ9LHtuYW1lOiJwYW4teCIsZGVzY3JpcHRpb246IlRoZSB1c2VyIGFnZW50IG1heSBjb25zaWRlciB0b3VjaGVzIHRoYXQgYmVnaW4gb24gdGhlIGVsZW1lbnQgb25seSBmb3IgdGhlIHB1cnBvc2VzIG9mIGhvcml6b250YWxseSBzY3JvbGxpbmcgdGhlIGVsZW1lbnQncyBuZWFyZXN0IGFuY2VzdG9yIHdpdGggaG9yaXpvbnRhbGx5IHNjcm9sbGFibGUgY29udGVudC4ifSx7bmFtZToicGFuLXkiLGRlc2NyaXB0aW9uOiJUaGUgdXNlciBhZ2VudCBtYXkgY29uc2lkZXIgdG91Y2hlcyB0aGF0IGJlZ2luIG9uIHRoZSBlbGVtZW50IG9ubHkgZm9yIHRoZSBwdXJwb3NlcyBvZiB2ZXJ0aWNhbGx5IHNjcm9sbGluZyB0aGUgZWxlbWVudCdzIG5lYXJlc3QgYW5jZXN0b3Igd2l0aCB2ZXJ0aWNhbGx5IHNjcm9sbGFibGUgY29udGVudC4ifSx7bmFtZToicGluY2gtem9vbSIsYnJvd3NlcnM6WyJFMTIiLCJGRjUyIiwiUzEzIiwiQzM2IiwiSUUxMSIsIk8yMyJdfV0sc3ludGF4OiJhdXRvIHwgbm9uZSB8IFsgWyBwYW4teCB8IHBhbi1sZWZ0IHwgcGFuLXJpZ2h0IF0gfHwgWyBwYW4teSB8IHBhbi11cCB8IHBhbi1kb3duIF0gfHwgcGluY2gtem9vbSBdIHwgbWFuaXB1bGF0aW9uIixyZWxldmFuY2U6NjkscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3RvdWNoLWFjdGlvbiJ9XSxkZXNjcmlwdGlvbjoiRGV0ZXJtaW5lcyB3aGV0aGVyIHRvdWNoIGlucHV0IG1heSB0cmlnZ2VyIGRlZmF1bHQgYmVoYXZpb3Igc3VwcGxpZWQgYnkgdXNlciBhZ2VudC4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6InRyYW5zZm9ybSIsYnJvd3NlcnM6WyJFMTIiLCJGRjE2IiwiUzkiLCJDMzYiLCJJRTEwIiwiTzIzIl0sdmFsdWVzOlt7bmFtZToibWF0cml4KCkiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSAyRCB0cmFuc2Zvcm1hdGlvbiBpbiB0aGUgZm9ybSBvZiBhIHRyYW5zZm9ybWF0aW9uIG1hdHJpeCBvZiBzaXggdmFsdWVzLiBtYXRyaXgoYSxiLGMsZCxlLGYpIGlzIGVxdWl2YWxlbnQgdG8gYXBwbHlpbmcgdGhlIHRyYW5zZm9ybWF0aW9uIG1hdHJpeCBbYSBiIGMgZCBlIGZdIn0se25hbWU6Im1hdHJpeDNkKCkiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSAzRCB0cmFuc2Zvcm1hdGlvbiBhcyBhIDR4NCBob21vZ2VuZW91cyBtYXRyaXggb2YgMTYgdmFsdWVzIGluIGNvbHVtbi1tYWpvciBvcmRlci4ifSx7bmFtZToibm9uZSJ9LHtuYW1lOiJwZXJzcGVjdGl2ZSgpIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgcGVyc3BlY3RpdmUgcHJvamVjdGlvbiBtYXRyaXguIn0se25hbWU6InJvdGF0ZSgpIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgMkQgcm90YXRpb24gYnkgdGhlIGFuZ2xlIHNwZWNpZmllZCBpbiB0aGUgcGFyYW1ldGVyIGFib3V0IHRoZSBvcmlnaW4gb2YgdGhlIGVsZW1lbnQsIGFzIGRlZmluZWQgYnkgdGhlIHRyYW5zZm9ybS1vcmlnaW4gcHJvcGVydHkuIn0se25hbWU6InJvdGF0ZTNkKCkiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSBjbG9ja3dpc2UgM0Qgcm90YXRpb24gYnkgdGhlIGFuZ2xlIHNwZWNpZmllZCBpbiBsYXN0IHBhcmFtZXRlciBhYm91dCB0aGUgW3gseSx6XSBkaXJlY3Rpb24gdmVjdG9yIGRlc2NyaWJlZCBieSB0aGUgZmlyc3QgMyBwYXJhbWV0ZXJzLiJ9LHtuYW1lOiJyb3RhdGVYKCdhbmdsZScpIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgY2xvY2t3aXNlIHJvdGF0aW9uIGJ5IHRoZSBnaXZlbiBhbmdsZSBhYm91dCB0aGUgWCBheGlzLiJ9LHtuYW1lOiJyb3RhdGVZKCdhbmdsZScpIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgY2xvY2t3aXNlIHJvdGF0aW9uIGJ5IHRoZSBnaXZlbiBhbmdsZSBhYm91dCB0aGUgWSBheGlzLiJ9LHtuYW1lOiJyb3RhdGVaKCdhbmdsZScpIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgY2xvY2t3aXNlIHJvdGF0aW9uIGJ5IHRoZSBnaXZlbiBhbmdsZSBhYm91dCB0aGUgWiBheGlzLiJ9LHtuYW1lOiJzY2FsZSgpIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgMkQgc2NhbGUgb3BlcmF0aW9uIGJ5IHRoZSBbc3gsc3ldIHNjYWxpbmcgdmVjdG9yIGRlc2NyaWJlZCBieSB0aGUgMiBwYXJhbWV0ZXJzLiBJZiB0aGUgc2Vjb25kIHBhcmFtZXRlciBpcyBub3QgcHJvdmlkZWQsIGl0IGlzIHRha2VzIGEgdmFsdWUgZXF1YWwgdG8gdGhlIGZpcnN0LiJ9LHtuYW1lOiJzY2FsZTNkKCkiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSAzRCBzY2FsZSBvcGVyYXRpb24gYnkgdGhlIFtzeCxzeSxzel0gc2NhbGluZyB2ZWN0b3IgZGVzY3JpYmVkIGJ5IHRoZSAzIHBhcmFtZXRlcnMuIn0se25hbWU6InNjYWxlWCgpIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgc2NhbGUgb3BlcmF0aW9uIHVzaW5nIHRoZSBbc3gsMV0gc2NhbGluZyB2ZWN0b3IsIHdoZXJlIHN4IGlzIGdpdmVuIGFzIHRoZSBwYXJhbWV0ZXIuIn0se25hbWU6InNjYWxlWSgpIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgc2NhbGUgb3BlcmF0aW9uIHVzaW5nIHRoZSBbc3ksMV0gc2NhbGluZyB2ZWN0b3IsIHdoZXJlIHN5IGlzIGdpdmVuIGFzIHRoZSBwYXJhbWV0ZXIuIn0se25hbWU6InNjYWxlWigpIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgc2NhbGUgb3BlcmF0aW9uIHVzaW5nIHRoZSBbMSwxLHN6XSBzY2FsaW5nIHZlY3Rvciwgd2hlcmUgc3ogaXMgZ2l2ZW4gYXMgdGhlIHBhcmFtZXRlci4ifSx7bmFtZToic2tldygpIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgc2tldyB0cmFuc2Zvcm1hdGlvbiBhbG9uZyB0aGUgWCBhbmQgWSBheGVzLiBUaGUgZmlyc3QgYW5nbGUgcGFyYW1ldGVyIHNwZWNpZmllcyB0aGUgc2tldyBvbiB0aGUgWCBheGlzLiBUaGUgc2Vjb25kIGFuZ2xlIHBhcmFtZXRlciBzcGVjaWZpZXMgdGhlIHNrZXcgb24gdGhlIFkgYXhpcy4gSWYgdGhlIHNlY29uZCBwYXJhbWV0ZXIgaXMgbm90IGdpdmVuIHRoZW4gYSB2YWx1ZSBvZiAwIGlzIHVzZWQgZm9yIHRoZSBZIGFuZ2xlIChpZTogbm8gc2tldyBvbiB0aGUgWSBheGlzKS4ifSx7bmFtZToic2tld1goKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIHNrZXcgdHJhbnNmb3JtYXRpb24gYWxvbmcgdGhlIFggYXhpcyBieSB0aGUgZ2l2ZW4gYW5nbGUuIn0se25hbWU6InNrZXdZKCkiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSBza2V3IHRyYW5zZm9ybWF0aW9uIGFsb25nIHRoZSBZIGF4aXMgYnkgdGhlIGdpdmVuIGFuZ2xlLiJ9LHtuYW1lOiJ0cmFuc2xhdGUoKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIDJEIHRyYW5zbGF0aW9uIGJ5IHRoZSB2ZWN0b3IgW3R4LCB0eV0sIHdoZXJlIHR4IGlzIHRoZSBmaXJzdCB0cmFuc2xhdGlvbi12YWx1ZSBwYXJhbWV0ZXIgYW5kIHR5IGlzIHRoZSBvcHRpb25hbCBzZWNvbmQgdHJhbnNsYXRpb24tdmFsdWUgcGFyYW1ldGVyLiJ9LHtuYW1lOiJ0cmFuc2xhdGUzZCgpIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgM0QgdHJhbnNsYXRpb24gYnkgdGhlIHZlY3RvciBbdHgsdHksdHpdLCB3aXRoIHR4LCB0eSBhbmQgdHogYmVpbmcgdGhlIGZpcnN0LCBzZWNvbmQgYW5kIHRoaXJkIHRyYW5zbGF0aW9uLXZhbHVlIHBhcmFtZXRlcnMgcmVzcGVjdGl2ZWx5LiJ9LHtuYW1lOiJ0cmFuc2xhdGVYKCkiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSB0cmFuc2xhdGlvbiBieSB0aGUgZ2l2ZW4gYW1vdW50IGluIHRoZSBYIGRpcmVjdGlvbi4ifSx7bmFtZToidHJhbnNsYXRlWSgpIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgdHJhbnNsYXRpb24gYnkgdGhlIGdpdmVuIGFtb3VudCBpbiB0aGUgWSBkaXJlY3Rpb24uIn0se25hbWU6InRyYW5zbGF0ZVooKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIHRyYW5zbGF0aW9uIGJ5IHRoZSBnaXZlbiBhbW91bnQgaW4gdGhlIFogZGlyZWN0aW9uLiBOb3RlIHRoYXQgcGVyY2VudGFnZSB2YWx1ZXMgYXJlIG5vdCBhbGxvd2VkIGluIHRoZSB0cmFuc2xhdGVaIHRyYW5zbGF0aW9uLXZhbHVlLCBhbmQgaWYgcHJlc2VudCBhcmUgZXZhbHVhdGVkIGFzIDAuIn1dLHN5bnRheDoibm9uZSB8IDx0cmFuc2Zvcm0tbGlzdD4iLHJlbGV2YW5jZTo5MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvdHJhbnNmb3JtIn1dLGRlc2NyaXB0aW9uOiJBIHR3by1kaW1lbnNpb25hbCB0cmFuc2Zvcm1hdGlvbiBpcyBhcHBsaWVkIHRvIGFuIGVsZW1lbnQgdGhyb3VnaCB0aGUgJ3RyYW5zZm9ybScgcHJvcGVydHkuIFRoaXMgcHJvcGVydHkgY29udGFpbnMgYSBsaXN0IG9mIHRyYW5zZm9ybSBmdW5jdGlvbnMgc2ltaWxhciB0byB0aG9zZSBhbGxvd2VkIGJ5IFNWRy4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6InRyYW5zZm9ybS1vcmlnaW4iLGJyb3dzZXJzOlsiRTEyIiwiRkYxNiIsIlM5IiwiQzM2IiwiSUUxMCIsIk8yMyJdLHN5bnRheDoiWyA8bGVuZ3RoLXBlcmNlbnRhZ2U+IHwgbGVmdCB8IGNlbnRlciB8IHJpZ2h0IHwgdG9wIHwgYm90dG9tIF0gfCBbIFsgPGxlbmd0aC1wZXJjZW50YWdlPiB8IGxlZnQgfCBjZW50ZXIgfCByaWdodCBdICYmIFsgPGxlbmd0aC1wZXJjZW50YWdlPiB8IHRvcCB8IGNlbnRlciB8IGJvdHRvbSBdIF0gPGxlbmd0aD4/IixyZWxldmFuY2U6NzYscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3RyYW5zZm9ybS1vcmlnaW4ifV0sZGVzY3JpcHRpb246IkVzdGFibGlzaGVzIHRoZSBvcmlnaW4gb2YgdHJhbnNmb3JtYXRpb24gZm9yIGFuIGVsZW1lbnQuIixyZXN0cmljdGlvbnM6WyJwb3NpdGlvbiIsImxlbmd0aCIsInBlcmNlbnRhZ2UiXX0se25hbWU6InRyYW5zZm9ybS1zdHlsZSIsYnJvd3NlcnM6WyJFMTIiLCJGRjE2IiwiUzkiLCJDMzYiLCJPMjMiXSx2YWx1ZXM6W3tuYW1lOiJmbGF0IixkZXNjcmlwdGlvbjoiQWxsIGNoaWxkcmVuIG9mIHRoaXMgZWxlbWVudCBhcmUgcmVuZGVyZWQgZmxhdHRlbmVkIGludG8gdGhlIDJEIHBsYW5lIG9mIHRoZSBlbGVtZW50LiJ9LHtuYW1lOiJwcmVzZXJ2ZS0zZCIsYnJvd3NlcnM6WyJFMTIiLCJGRjE2IiwiUzkiLCJDMzYiLCJPMjMiXSxkZXNjcmlwdGlvbjoiRmxhdHRlbmluZyBpcyBub3QgcGVyZm9ybWVkLCBzbyBjaGlsZHJlbiBtYWludGFpbiB0aGVpciBwb3NpdGlvbiBpbiAzRCBzcGFjZS4ifV0sc3ludGF4OiJmbGF0IHwgcHJlc2VydmUtM2QiLHJlbGV2YW5jZTo1NixyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvdHJhbnNmb3JtLXN0eWxlIn1dLGRlc2NyaXB0aW9uOiJEZWZpbmVzIGhvdyBuZXN0ZWQgZWxlbWVudHMgYXJlIHJlbmRlcmVkIGluIDNEIHNwYWNlLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToidHJhbnNpdGlvbiIsYnJvd3NlcnM6WyJFMTIiLCJGRjE2IiwiUzkiLCJDMjYiLCJJRTEwIiwiTzEyLjEiXSx2YWx1ZXM6W3tuYW1lOiJhbGwiLGRlc2NyaXB0aW9uOiJFdmVyeSBwcm9wZXJ0eSB0aGF0IGlzIGFibGUgdG8gdW5kZXJnbyBhIHRyYW5zaXRpb24gd2lsbCBkbyBzby4ifSx7bmFtZToibm9uZSIsZGVzY3JpcHRpb246Ik5vIHByb3BlcnR5IHdpbGwgdHJhbnNpdGlvbi4ifV0sc3ludGF4OiI8c2luZ2xlLXRyYW5zaXRpb24+IyIscmVsZXZhbmNlOjg5LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy90cmFuc2l0aW9uIn1dLGRlc2NyaXB0aW9uOiJTaG9ydGhhbmQgcHJvcGVydHkgY29tYmluZXMgZm91ciBvZiB0aGUgdHJhbnNpdGlvbiBwcm9wZXJ0aWVzIGludG8gYSBzaW5nbGUgcHJvcGVydHkuIixyZXN0cmljdGlvbnM6WyJ0aW1lIiwicHJvcGVydHkiLCJ0aW1pbmctZnVuY3Rpb24iLCJlbnVtIl19LHtuYW1lOiJ0cmFuc2l0aW9uLWRlbGF5Iixicm93c2VyczpbIkUxMiIsIkZGMTYiLCJTOSIsIkMyNiIsIklFMTAiLCJPMTIuMSJdLHN5bnRheDoiPHRpbWU+IyIscmVsZXZhbmNlOjY0LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy90cmFuc2l0aW9uLWRlbGF5In1dLGRlc2NyaXB0aW9uOiJEZWZpbmVzIHdoZW4gdGhlIHRyYW5zaXRpb24gd2lsbCBzdGFydC4gSXQgYWxsb3dzIGEgdHJhbnNpdGlvbiB0byBiZWdpbiBleGVjdXRpb24gc29tZSBwZXJpb2Qgb2YgdGltZSBmcm9tIHdoZW4gaXQgaXMgYXBwbGllZC4iLHJlc3RyaWN0aW9uczpbInRpbWUiXX0se25hbWU6InRyYW5zaXRpb24tZHVyYXRpb24iLGJyb3dzZXJzOlsiRTEyIiwiRkYxNiIsIlM5IiwiQzI2IiwiSUUxMCIsIk8xMi4xIl0sc3ludGF4OiI8dGltZT4jIixyZWxldmFuY2U6NjgscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3RyYW5zaXRpb24tZHVyYXRpb24ifV0sZGVzY3JpcHRpb246IlNwZWNpZmllcyBob3cgbG9uZyB0aGUgdHJhbnNpdGlvbiBmcm9tIHRoZSBvbGQgdmFsdWUgdG8gdGhlIG5ldyB2YWx1ZSBzaG91bGQgdGFrZS4iLHJlc3RyaWN0aW9uczpbInRpbWUiXX0se25hbWU6InRyYW5zaXRpb24tcHJvcGVydHkiLGJyb3dzZXJzOlsiRTEyIiwiRkYxNiIsIlM5IiwiQzI2IiwiSUUxMCIsIk8xMi4xIl0sdmFsdWVzOlt7bmFtZToiYWxsIixkZXNjcmlwdGlvbjoiRXZlcnkgcHJvcGVydHkgdGhhdCBpcyBhYmxlIHRvIHVuZGVyZ28gYSB0cmFuc2l0aW9uIHdpbGwgZG8gc28uIn0se25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJObyBwcm9wZXJ0eSB3aWxsIHRyYW5zaXRpb24uIn1dLHN5bnRheDoibm9uZSB8IDxzaW5nbGUtdHJhbnNpdGlvbi1wcm9wZXJ0eT4jIixyZWxldmFuY2U6NjgscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3RyYW5zaXRpb24tcHJvcGVydHkifV0sZGVzY3JpcHRpb246IlNwZWNpZmllcyB0aGUgbmFtZSBvZiB0aGUgQ1NTIHByb3BlcnR5IHRvIHdoaWNoIHRoZSB0cmFuc2l0aW9uIGlzIGFwcGxpZWQuIixyZXN0cmljdGlvbnM6WyJwcm9wZXJ0eSJdfSx7bmFtZToidHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb24iLGJyb3dzZXJzOlsiRTEyIiwiRkYxNiIsIlM5IiwiQzI2IiwiSUUxMCIsIk8xMi4xIl0sc3ludGF4OiI8ZWFzaW5nLWZ1bmN0aW9uPiMiLHJlbGV2YW5jZTo2NSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb24ifV0sZGVzY3JpcHRpb246IkRlc2NyaWJlcyBob3cgdGhlIGludGVybWVkaWF0ZSB2YWx1ZXMgdXNlZCBkdXJpbmcgYSB0cmFuc2l0aW9uIHdpbGwgYmUgY2FsY3VsYXRlZC4iLHJlc3RyaWN0aW9uczpbInRpbWluZy1mdW5jdGlvbiJdfSx7bmFtZToidW5pY29kZS1iaWRpIixicm93c2VyczpbIkUxMiIsIkZGMSIsIlMxLjMiLCJDMiIsIklFNS41IiwiTzkuMiJdLHZhbHVlczpbe25hbWU6ImJpZGktb3ZlcnJpZGUiLGRlc2NyaXB0aW9uOiJJbnNpZGUgdGhlIGVsZW1lbnQsIHJlb3JkZXJpbmcgaXMgc3RyaWN0bHkgaW4gc2VxdWVuY2UgYWNjb3JkaW5nIHRvIHRoZSAnZGlyZWN0aW9uJyBwcm9wZXJ0eTsgdGhlIGltcGxpY2l0IHBhcnQgb2YgdGhlIGJpZGlyZWN0aW9uYWwgYWxnb3JpdGhtIGlzIGlnbm9yZWQuIn0se25hbWU6ImVtYmVkIixkZXNjcmlwdGlvbjoiSWYgdGhlIGVsZW1lbnQgaXMgaW5saW5lLWxldmVsLCB0aGlzIHZhbHVlIG9wZW5zIGFuIGFkZGl0aW9uYWwgbGV2ZWwgb2YgZW1iZWRkaW5nIHdpdGggcmVzcGVjdCB0byB0aGUgYmlkaXJlY3Rpb25hbCBhbGdvcml0aG0uIFRoZSBkaXJlY3Rpb24gb2YgdGhpcyBlbWJlZGRpbmcgbGV2ZWwgaXMgZ2l2ZW4gYnkgdGhlICdkaXJlY3Rpb24nIHByb3BlcnR5LiJ9LHtuYW1lOiJpc29sYXRlIixicm93c2VyczpbIkUxMiIsIkZGMSIsIlMxLjMiLCJDMiIsIklFNS41IiwiTzkuMiJdLGRlc2NyaXB0aW9uOiJUaGUgY29udGVudHMgb2YgdGhlIGVsZW1lbnQgYXJlIGNvbnNpZGVyZWQgdG8gYmUgaW5zaWRlIGEgc2VwYXJhdGUsIGluZGVwZW5kZW50IHBhcmFncmFwaC4ifSx7bmFtZToiaXNvbGF0ZS1vdmVycmlkZSIsYnJvd3NlcnM6WyJFMTIiLCJGRjEiLCJTMS4zIiwiQzIiLCJJRTUuNSIsIk85LjIiXSxkZXNjcmlwdGlvbjoiVGhpcyBjb21iaW5lcyB0aGUgaXNvbGF0aW9uIGJlaGF2aW9yIG9mICdpc29sYXRlJyB3aXRoIHRoZSBkaXJlY3Rpb25hbCBvdmVycmlkZSBiZWhhdmlvciBvZiAnYmlkaS1vdmVycmlkZScifSx7bmFtZToibm9ybWFsIixkZXNjcmlwdGlvbjoiVGhlIGVsZW1lbnQgZG9lcyBub3Qgb3BlbiBhbiBhZGRpdGlvbmFsIGxldmVsIG9mIGVtYmVkZGluZyB3aXRoIHJlc3BlY3QgdG8gdGhlIGJpZGlyZWN0aW9uYWwgYWxnb3JpdGhtLiBGb3IgaW5saW5lLWxldmVsIGVsZW1lbnRzLCBpbXBsaWNpdCByZW9yZGVyaW5nIHdvcmtzIGFjcm9zcyBlbGVtZW50IGJvdW5kYXJpZXMuIn0se25hbWU6InBsYWludGV4dCIsYnJvd3NlcnM6WyJFMTIiLCJGRjEiLCJTMS4zIiwiQzIiLCJJRTUuNSIsIk85LjIiXSxkZXNjcmlwdGlvbjoiRm9yIHRoZSBwdXJwb3NlcyBvZiB0aGUgVW5pY29kZSBiaWRpcmVjdGlvbmFsIGFsZ29yaXRobSwgdGhlIGJhc2UgZGlyZWN0aW9uYWxpdHkgb2YgZWFjaCBiaWRpIHBhcmFncmFwaCBmb3Igd2hpY2ggdGhlIGVsZW1lbnQgZm9ybXMgdGhlIGNvbnRhaW5pbmcgYmxvY2sgaXMgZGV0ZXJtaW5lZCBub3QgYnkgdGhlIGVsZW1lbnQncyBjb21wdXRlZCAnZGlyZWN0aW9uJy4ifV0sc3ludGF4OiJub3JtYWwgfCBlbWJlZCB8IGlzb2xhdGUgfCBiaWRpLW92ZXJyaWRlIHwgaXNvbGF0ZS1vdmVycmlkZSB8IHBsYWludGV4dCIscmVsZXZhbmNlOjU2LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy91bmljb2RlLWJpZGkifV0sZGVzY3JpcHRpb246IlRoZSBsZXZlbCBvZiBlbWJlZGRpbmcgd2l0aCByZXNwZWN0IHRvIHRoZSBiaWRpcmVjdGlvbmFsIGFsZ29yaXRobS4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6InVuaWNvZGUtcmFuZ2UiLHZhbHVlczpbe25hbWU6IlUrMjYiLGRlc2NyaXB0aW9uOiJBbXBlcnNhbmQuIn0se25hbWU6IlUrMjAtMjRGLCBVKzJCMC0yRkYsIFUrMzcwLTRGRiwgVSsxRTAwLTFFRkYsIFUrMjAwMC0yMENGLCBVKzIxMDAtMjNGRiwgVSsyNTAwLTI2RkYsIFUrRTAwMC1GOEZGLCBVK0ZCMDAtRkI0RiIsZGVzY3JpcHRpb246IldHTDQgY2hhcmFjdGVyIHNldCAoUGFuLUV1cm9wZWFuKS4ifSx7bmFtZToiVSsyMC0xN0YsIFUrMkIwLTJGRiwgVSsyMDAwLTIwNkYsIFUrMjBBMC0yMENGLCBVKzIxMDAtMjFGRiwgVSsyNjAwLTI2RkYiLGRlc2NyaXB0aW9uOiJUaGUgTXVsdGlsaW5ndWFsIEV1cm9wZWFuIFN1YnNldCBOby4gMS4gTGF0aW4uIENvdmVycyB+NDQgbGFuZ3VhZ2VzLiJ9LHtuYW1lOiJVKzIwLTJGRiwgVSszNzAtNEZGLCBVKzFFMDAtMjBDRiwgVSsyMTAwLTIzRkYsIFUrMjUwMC0yNkZGLCBVK0ZCMDAtRkI0RiwgVStGRkYwLUZGRkQiLGRlc2NyaXB0aW9uOiJUaGUgTXVsdGlsaW5ndWFsIEV1cm9wZWFuIFN1YnNldCBOby4gMi4gTGF0aW4sIEdyZWVrLCBhbmQgQ3lyaWxsaWMuIENvdmVycyB+MTI4IGxhbmd1YWdlLiJ9LHtuYW1lOiJVKzIwLTRGRiwgVSs1MzAtNThGLCBVKzEwRDAtMTBGRiwgVSsxRTAwLTIzRkYsIFUrMjQ0MC0yNDVGLCBVKzI1MDAtMjZGRiwgVStGQjAwLUZCNEYsIFUrRkUyMC1GRTJGLCBVK0ZGRjAtRkZGRCIsZGVzY3JpcHRpb246IlRoZSBNdWx0aWxpbmd1YWwgRXVyb3BlYW4gU3Vic2V0IE5vLiAzLiBDb3ZlcnMgYWxsIGNoYXJhY3RlcnMgYmVsb25naW5nIHRvIEV1cm9wZWFuIHNjcmlwdHMuIn0se25hbWU6IlUrMDAtN0YiLGRlc2NyaXB0aW9uOiJCYXNpYyBMYXRpbiAoQVNDSUkpLiJ9LHtuYW1lOiJVKzgwLUZGIixkZXNjcmlwdGlvbjoiTGF0aW4tMSBTdXBwbGVtZW50LiBBY2NlbnRlZCBjaGFyYWN0ZXJzIGZvciBXZXN0ZXJuIEV1cm9wZWFuIGxhbmd1YWdlcywgY29tbW9uIHB1bmN0dWF0aW9uIGNoYXJhY3RlcnMsIG11bHRpcGxpY2F0aW9uIGFuZCBkaXZpc2lvbiBzaWducy4ifSx7bmFtZToiVSsxMDAtMTdGIixkZXNjcmlwdGlvbjoiTGF0aW4gRXh0ZW5kZWQtQS4gQWNjZW50ZWQgY2hhcmFjdGVycyBmb3IgZm9yIEN6ZWNoLCBEdXRjaCwgUG9saXNoLCBhbmQgVHVya2lzaC4ifSx7bmFtZToiVSsxODAtMjRGIixkZXNjcmlwdGlvbjoiTGF0aW4gRXh0ZW5kZWQtQi4gQ3JvYXRpYW4sIFNsb3ZlbmlhbiwgUm9tYW5pYW4sIE5vbi1FdXJvcGVhbiBhbmQgaGlzdG9yaWMgbGF0aW4sIEtob2lzYW4sIFBpbnlpbiwgTGl2b25pYW4sIFNpbm9sb2d5LiJ9LHtuYW1lOiJVKzFFMDAtMUVGRiIsZGVzY3JpcHRpb246IkxhdGluIEV4dGVuZGVkIEFkZGl0aW9uYWwuIFZpZXRuYW1lc2UsIEdlcm1hbiBjYXB0aWFsIHNoYXJwIHMsIE1lZGlldmFsaXN0LCBMYXRpbiBnZW5lcmFsIHVzZS4ifSx7bmFtZToiVSsyNTAtMkFGIixkZXNjcmlwdGlvbjoiSW50ZXJuYXRpb25hbCBQaG9uZXRpYyBBbHBoYWJldCBFeHRlbnNpb25zLiJ9LHtuYW1lOiJVKzM3MC0zRkYiLGRlc2NyaXB0aW9uOiJHcmVlayBhbmQgQ29wdGljLiJ9LHtuYW1lOiJVKzFGMDAtMUZGRiIsZGVzY3JpcHRpb246IkdyZWVrIEV4dGVuZGVkLiBBY2NlbnRlZCBjaGFyYWN0ZXJzIGZvciBwb2x5dG9uaWMgR3JlZWsuIn0se25hbWU6IlUrNDAwLTRGRiIsZGVzY3JpcHRpb246IkN5cmlsbGljLiJ9LHtuYW1lOiJVKzUwMC01MkYiLGRlc2NyaXB0aW9uOiJDeXJpbGxpYyBTdXBwbGVtZW50LiBFeHRyYSBsZXR0ZXJzIGZvciBLb21pLCBLaGFudHksIENodWtjaGksIE1vcmR2aW4sIEt1cmRpc2gsIEFsZXV0LCBDaHV2YXNoLCBBYmtoYXosIEF6ZXJiYWlqYW5pLCBhbmQgT3Jvay4ifSx7bmFtZToiVSswMC01MkYsIFUrMUUwMC0xRkZGLCBVKzIyMDAtMjJGRiIsZGVzY3JpcHRpb246IkxhdGluLCBHcmVlaywgQ3lyaWxsaWMsIHNvbWUgcHVuY3R1YXRpb24gYW5kIHN5bWJvbHMuIn0se25hbWU6IlUrNTMwLTU4RiIsZGVzY3JpcHRpb246IkFybWVuaWFuLiJ9LHtuYW1lOiJVKzU5MC01RkYiLGRlc2NyaXB0aW9uOiJIZWJyZXcuIn0se25hbWU6IlUrNjAwLTZGRiIsZGVzY3JpcHRpb246IkFyYWJpYy4ifSx7bmFtZToiVSs3NTAtNzdGIixkZXNjcmlwdGlvbjoiQXJhYmljIFN1cHBsZW1lbnQuIEFkZGl0aW9uYWwgbGV0dGVycyBmb3IgQWZyaWNhbiBsYW5ndWFnZXMsIEtob3dhciwgVG9yd2FsaSwgQnVydXNoYXNraSwgYW5kIGVhcmx5IFBlcnNpYW4uIn0se25hbWU6IlUrOEEwLThGRiIsZGVzY3JpcHRpb246IkFyYWJpYyBFeHRlbmRlZC1BLiBBZGRpdGlvbmFsIGxldHRlcnMgZm9yIEFmcmljYW4gbGFuZ3VhZ2VzLCBFdXJvcGVhbiBhbmQgQ2VudHJhbCBBc2lhbiBsYW5ndWFnZXMsIFJvaGluZ3lhLCBUYW1hemlnaHQsIEFyd2ksIGFuZCBLb3JhbmljIGFubm90YXRpb24gc2lnbnMuIn0se25hbWU6IlUrNzAwLTc0RiIsZGVzY3JpcHRpb246IlN5cmlhYy4ifSx7bmFtZToiVSs5MDAtOTdGIixkZXNjcmlwdGlvbjoiRGV2YW5hZ2FyaS4ifSx7bmFtZToiVSs5ODAtOUZGIixkZXNjcmlwdGlvbjoiQmVuZ2FsaS4ifSx7bmFtZToiVStBMDAtQTdGIixkZXNjcmlwdGlvbjoiR3VybXVraGkuIn0se25hbWU6IlUrQTgwLUFGRiIsZGVzY3JpcHRpb246Ikd1amFyYXRpLiJ9LHtuYW1lOiJVK0IwMC1CN0YiLGRlc2NyaXB0aW9uOiJPcml5YS4ifSx7bmFtZToiVStCODAtQkZGIixkZXNjcmlwdGlvbjoiVGFtaWwuIn0se25hbWU6IlUrQzAwLUM3RiIsZGVzY3JpcHRpb246IlRlbHVndS4ifSx7bmFtZToiVStDODAtQ0ZGIixkZXNjcmlwdGlvbjoiS2FubmFkYS4ifSx7bmFtZToiVStEMDAtRDdGIixkZXNjcmlwdGlvbjoiTWFsYXlhbGFtLiJ9LHtuYW1lOiJVK0Q4MC1ERkYiLGRlc2NyaXB0aW9uOiJTaW5oYWxhLiJ9LHtuYW1lOiJVKzExOEEwLTExOEZGIixkZXNjcmlwdGlvbjoiV2FyYW5nIENpdGkuIn0se25hbWU6IlUrRTAwLUU3RiIsZGVzY3JpcHRpb246IlRoYWkuIn0se25hbWU6IlUrMUEyMC0xQUFGIixkZXNjcmlwdGlvbjoiVGFpIFRoYW0uIn0se25hbWU6IlUrQUE4MC1BQURGIixkZXNjcmlwdGlvbjoiVGFpIFZpZXQuIn0se25hbWU6IlUrRTgwLUVGRiIsZGVzY3JpcHRpb246Ikxhby4ifSx7bmFtZToiVStGMDAtRkZGIixkZXNjcmlwdGlvbjoiVGliZXRhbi4ifSx7bmFtZToiVSsxMDAwLTEwOUYiLGRlc2NyaXB0aW9uOiJNeWFubWFyIChCdXJtZXNlKS4ifSx7bmFtZToiVSsxMEEwLTEwRkYiLGRlc2NyaXB0aW9uOiJHZW9yZ2lhbi4ifSx7bmFtZToiVSsxMjAwLTEzN0YiLGRlc2NyaXB0aW9uOiJFdGhpb3BpYy4ifSx7bmFtZToiVSsxMzgwLTEzOUYiLGRlc2NyaXB0aW9uOiJFdGhpb3BpYyBTdXBwbGVtZW50LiBFeHRyYSBTeWxsYWJsZXMgZm9yIFNlYmF0YmVpdCwgYW5kIFRvbmFsIG1hcmtzIn0se25hbWU6IlUrMkQ4MC0yRERGIixkZXNjcmlwdGlvbjoiRXRoaW9waWMgRXh0ZW5kZWQuIEV4dHJhIFN5bGxhYmxlcyBmb3IgTWUnZW4sIEJsaW4sIGFuZCBTZWJhdGJlaXQuIn0se25hbWU6IlUrQUIwMC1BQjJGIixkZXNjcmlwdGlvbjoiRXRoaW9waWMgRXh0ZW5kZWQtQS4gRXh0cmEgY2hhcmFjdGVycyBmb3IgR2Ftby1Hb2ZhLURhd3JvLCBCYXNrZXRvLCBhbmQgR3VtdXouIn0se25hbWU6IlUrMTc4MC0xN0ZGIixkZXNjcmlwdGlvbjoiS2htZXIuIn0se25hbWU6IlUrMTgwMC0xOEFGIixkZXNjcmlwdGlvbjoiTW9uZ29saWFuLiJ9LHtuYW1lOiJVKzFCODAtMUJCRiIsZGVzY3JpcHRpb246IlN1bmRhbmVzZS4ifSx7bmFtZToiVSsxQ0MwLTFDQ0YiLGRlc2NyaXB0aW9uOiJTdW5kYW5lc2UgU3VwcGxlbWVudC4gUHVuY3R1YXRpb24uIn0se25hbWU6IlUrNEUwMC05RkQ1IixkZXNjcmlwdGlvbjoiQ0pLIChDaGluZXNlLCBKYXBhbmVzZSwgS29yZWFuKSBVbmlmaWVkIElkZW9ncmFwaHMuIE1vc3QgY29tbW9uIGlkZW9ncmFwaHMgZm9yIG1vZGVybiBDaGluZXNlIGFuZCBKYXBhbmVzZS4ifSx7bmFtZToiVSszNDAwLTREQjUiLGRlc2NyaXB0aW9uOiJDSksgVW5pZmllZCBJZGVvZ3JhcGhzIEV4dGVuc2lvbiBBLiBSYXJlIGlkZW9ncmFwaHMuIn0se25hbWU6IlUrMkYwMC0yRkRGIixkZXNjcmlwdGlvbjoiS2FuZ3hpIFJhZGljYWxzLiJ9LHtuYW1lOiJVKzJFODAtMkVGRiIsZGVzY3JpcHRpb246IkNKSyBSYWRpY2FscyBTdXBwbGVtZW50LiBBbHRlcm5hdGl2ZSBmb3JtcyBvZiBLYW5neGkgUmFkaWNhbHMuIn0se25hbWU6IlUrMTEwMC0xMUZGIixkZXNjcmlwdGlvbjoiSGFuZ3VsIEphbW8uIn0se25hbWU6IlUrQUMwMC1EN0FGIixkZXNjcmlwdGlvbjoiSGFuZ3VsIFN5bGxhYmxlcy4ifSx7bmFtZToiVSszMDQwLTMwOUYiLGRlc2NyaXB0aW9uOiJIaXJhZ2FuYS4ifSx7bmFtZToiVSszMEEwLTMwRkYiLGRlc2NyaXB0aW9uOiJLYXRha2FuYS4ifSx7bmFtZToiVStBNSwgVSs0RTAwLTlGRkYsIFUrMzA/PywgVStGRjAwLUZGOUYiLGRlc2NyaXB0aW9uOiJKYXBhbmVzZSBLYW5qaSwgSGlyYWdhbmEgYW5kIEthdGFrYW5hIGNoYXJhY3RlcnMgcGx1cyBZZW4vWXVhbiBzeW1ib2wuIn0se25hbWU6IlUrQTREMC1BNEZGIixkZXNjcmlwdGlvbjoiTGlzdS4ifSx7bmFtZToiVStBMDAwLUE0OEYiLGRlc2NyaXB0aW9uOiJZaSBTeWxsYWJsZXMuIn0se25hbWU6IlUrQTQ5MC1BNENGIixkZXNjcmlwdGlvbjoiWWkgUmFkaWNhbHMuIn0se25hbWU6IlUrMjAwMC0yMDZGIixkZXNjcmlwdGlvbjoiR2VuZXJhbCBQdW5jdHVhdGlvbi4ifSx7bmFtZToiVSszMDAwLTMwM0YiLGRlc2NyaXB0aW9uOiJDSksgU3ltYm9scyBhbmQgUHVuY3R1YXRpb24uIn0se25hbWU6IlUrMjA3MC0yMDlGIixkZXNjcmlwdGlvbjoiU3VwZXJzY3JpcHRzIGFuZCBTdWJzY3JpcHRzLiJ9LHtuYW1lOiJVKzIwQTAtMjBDRiIsZGVzY3JpcHRpb246IkN1cnJlbmN5IFN5bWJvbHMuIn0se25hbWU6IlUrMjEwMC0yMTRGIixkZXNjcmlwdGlvbjoiTGV0dGVybGlrZSBTeW1ib2xzLiJ9LHtuYW1lOiJVKzIxNTAtMjE4RiIsZGVzY3JpcHRpb246Ik51bWJlciBGb3Jtcy4ifSx7bmFtZToiVSsyMTkwLTIxRkYiLGRlc2NyaXB0aW9uOiJBcnJvd3MuIn0se25hbWU6IlUrMjIwMC0yMkZGIixkZXNjcmlwdGlvbjoiTWF0aGVtYXRpY2FsIE9wZXJhdG9ycy4ifSx7bmFtZToiVSsyMzAwLTIzRkYiLGRlc2NyaXB0aW9uOiJNaXNjZWxsYW5lb3VzIFRlY2huaWNhbC4ifSx7bmFtZToiVStFMDAwLUY4RkYiLGRlc2NyaXB0aW9uOiJQcml2YXRlIFVzZSBBcmVhLiJ9LHtuYW1lOiJVK0ZCMDAtRkI0RiIsZGVzY3JpcHRpb246IkFscGhhYmV0aWMgUHJlc2VudGF0aW9uIEZvcm1zLiBMaWdhdHVyZXMgZm9yIGxhdGluLCBBcm1lbmlhbiwgYW5kIEhlYnJldy4ifSx7bmFtZToiVStGQjUwLUZERkYiLGRlc2NyaXB0aW9uOiJBcmFiaWMgUHJlc2VudGF0aW9uIEZvcm1zLUEuIENvbnRleHR1YWwgZm9ybXMgLyBsaWdhdHVyZXMgZm9yIFBlcnNpYW4sIFVyZHUsIFNpbmRoaSwgQ2VudHJhbCBBc2lhbiBsYW5ndWFnZXMsIGV0YywgQXJhYmljIHBlZGFnb2dpY2FsIHN5bWJvbHMsIHdvcmQgbGlnYXR1cmVzLiJ9LHtuYW1lOiJVKzFGNjAwLTFGNjRGIixkZXNjcmlwdGlvbjoiRW1vamk6IEVtb3RpY29ucy4ifSx7bmFtZToiVSsyNjAwLTI2RkYiLGRlc2NyaXB0aW9uOiJFbW9qaTogTWlzY2VsbGFuZW91cyBTeW1ib2xzLiJ9LHtuYW1lOiJVKzFGMzAwLTFGNUZGIixkZXNjcmlwdGlvbjoiRW1vamk6IE1pc2NlbGxhbmVvdXMgU3ltYm9scyBhbmQgUGljdG9ncmFwaHMuIn0se25hbWU6IlUrMUY5MDAtMUY5RkYiLGRlc2NyaXB0aW9uOiJFbW9qaTogU3VwcGxlbWVudGFsIFN5bWJvbHMgYW5kIFBpY3RvZ3JhcGhzLiJ9LHtuYW1lOiJVKzFGNjgwLTFGNkZGIixkZXNjcmlwdGlvbjoiRW1vamk6IFRyYW5zcG9ydCBhbmQgTWFwIFN5bWJvbHMuIn1dLGF0UnVsZToiQGZvbnQtZmFjZSIsc3ludGF4OiI8dW5pY29kZS1yYW5nZT4jIixyZWxldmFuY2U6NzIsZGVzY3JpcHRpb246IkBmb250LWZhY2UgZGVzY3JpcHRvci4gRGVmaW5lcyB0aGUgc2V0IG9mIFVuaWNvZGUgY29kZXBvaW50cyB0aGF0IG1heSBiZSBzdXBwb3J0ZWQgYnkgdGhlIGZvbnQgZmFjZSBmb3Igd2hpY2ggaXQgaXMgZGVjbGFyZWQuIixyZXN0cmljdGlvbnM6WyJ1bmljb2RlLXJhbmdlIl19LHtuYW1lOiJ1c2VyLXNlbGVjdCIsYnJvd3NlcnM6WyJFNzkiLCJGRjY5IiwiUzMiLCJDNTQiLCJJRTEwIiwiTzQxIl0sdmFsdWVzOlt7bmFtZToiYWxsIixkZXNjcmlwdGlvbjoiVGhlIGNvbnRlbnQgb2YgdGhlIGVsZW1lbnQgbXVzdCBiZSBzZWxlY3RlZCBhdG9taWNhbGx5In0se25hbWU6ImF1dG8ifSx7bmFtZToiY29udGFpbiIsZGVzY3JpcHRpb246IlVBcyBtdXN0IG5vdCBhbGxvdyBhIHNlbGVjdGlvbiB3aGljaCBpcyBzdGFydGVkIGluIHRoaXMgZWxlbWVudCB0byBiZSBleHRlbmRlZCBvdXRzaWRlIG9mIHRoaXMgZWxlbWVudC4ifSx7bmFtZToibm9uZSIsZGVzY3JpcHRpb246IlRoZSBVQSBtdXN0IG5vdCBhbGxvdyBzZWxlY3Rpb25zIHRvIGJlIHN0YXJ0ZWQgaW4gdGhpcyBlbGVtZW50LiJ9LHtuYW1lOiJ0ZXh0IixkZXNjcmlwdGlvbjoiVGhlIGVsZW1lbnQgaW1wb3NlcyBubyBjb25zdHJhaW50IG9uIHRoZSBzZWxlY3Rpb24uIn1dLHN5bnRheDoiYXV0byB8IHRleHQgfCBub25lIHwgY29udGFpbiB8IGFsbCIscmVsZXZhbmNlOjgyLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy91c2VyLXNlbGVjdCJ9XSxkZXNjcmlwdGlvbjoiQ29udHJvbHMgdGhlIGFwcGVhcmFuY2Ugb2Ygc2VsZWN0aW9uLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToidmVydGljYWwtYWxpZ24iLGJyb3dzZXJzOlsiRTEyIiwiRkYxIiwiUzEiLCJDMSIsIklFNCIsIk80Il0sdmFsdWVzOlt7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IkFsaWduIHRoZSBkb21pbmFudCBiYXNlbGluZSBvZiB0aGUgcGFyZW50IGJveCB3aXRoIHRoZSBlcXVpdmFsZW50LCBvciBoZXVyaXN0aWNhbGx5IHJlY29uc3RydWN0ZWQsIGJhc2VsaW5lIG9mIHRoZSBlbGVtZW50IGlubGluZSBib3guIn0se25hbWU6ImJhc2VsaW5lIixkZXNjcmlwdGlvbjoiQWxpZ24gdGhlICdhbHBoYWJldGljJyBiYXNlbGluZSBvZiB0aGUgZWxlbWVudCB3aXRoIHRoZSAnYWxwaGFiZXRpYycgYmFzZWxpbmUgb2YgdGhlIHBhcmVudCBlbGVtZW50LiJ9LHtuYW1lOiJib3R0b20iLGRlc2NyaXB0aW9uOiJBbGlnbiB0aGUgYWZ0ZXIgZWRnZSBvZiB0aGUgZXh0ZW5kZWQgaW5saW5lIGJveCB3aXRoIHRoZSBhZnRlci1lZGdlIG9mIHRoZSBsaW5lIGJveC4ifSx7bmFtZToibWlkZGxlIixkZXNjcmlwdGlvbjoiQWxpZ24gdGhlICdtaWRkbGUnIGJhc2VsaW5lIG9mIHRoZSBpbmxpbmUgZWxlbWVudCB3aXRoIHRoZSBtaWRkbGUgYmFzZWxpbmUgb2YgdGhlIHBhcmVudC4ifSx7bmFtZToic3ViIixkZXNjcmlwdGlvbjoiTG93ZXIgdGhlIGJhc2VsaW5lIG9mIHRoZSBib3ggdG8gdGhlIHByb3BlciBwb3NpdGlvbiBmb3Igc3Vic2NyaXB0cyBvZiB0aGUgcGFyZW50J3MgYm94LiAoVGhpcyB2YWx1ZSBoYXMgbm8gZWZmZWN0IG9uIHRoZSBmb250IHNpemUgb2YgdGhlIGVsZW1lbnQncyB0ZXh0LikifSx7bmFtZToic3VwZXIiLGRlc2NyaXB0aW9uOiJSYWlzZSB0aGUgYmFzZWxpbmUgb2YgdGhlIGJveCB0byB0aGUgcHJvcGVyIHBvc2l0aW9uIGZvciBzdXBlcnNjcmlwdHMgb2YgdGhlIHBhcmVudCdzIGJveC4gKFRoaXMgdmFsdWUgaGFzIG5vIGVmZmVjdCBvbiB0aGUgZm9udCBzaXplIG9mIHRoZSBlbGVtZW50J3MgdGV4dC4pIn0se25hbWU6InRleHQtYm90dG9tIixkZXNjcmlwdGlvbjoiQWxpZ24gdGhlIGJvdHRvbSBvZiB0aGUgYm94IHdpdGggdGhlIGFmdGVyLWVkZ2Ugb2YgdGhlIHBhcmVudCBlbGVtZW50J3MgZm9udC4ifSx7bmFtZToidGV4dC10b3AiLGRlc2NyaXB0aW9uOiJBbGlnbiB0aGUgdG9wIG9mIHRoZSBib3ggd2l0aCB0aGUgYmVmb3JlLWVkZ2Ugb2YgdGhlIHBhcmVudCBlbGVtZW50J3MgZm9udC4ifSx7bmFtZToidG9wIixkZXNjcmlwdGlvbjoiQWxpZ24gdGhlIGJlZm9yZSBlZGdlIG9mIHRoZSBleHRlbmRlZCBpbmxpbmUgYm94IHdpdGggdGhlIGJlZm9yZS1lZGdlIG9mIHRoZSBsaW5lIGJveC4ifSx7bmFtZToiLXdlYmtpdC1iYXNlbGluZS1taWRkbGUiLGJyb3dzZXJzOlsiRTEyIiwiRkYxIiwiUzEiLCJDMSIsIklFNCIsIk80Il19XSxzeW50YXg6ImJhc2VsaW5lIHwgc3ViIHwgc3VwZXIgfCB0ZXh0LXRvcCB8IHRleHQtYm90dG9tIHwgbWlkZGxlIHwgdG9wIHwgYm90dG9tIHwgPHBlcmNlbnRhZ2U+IHwgPGxlbmd0aD4iLHJlbGV2YW5jZTo5MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvdmVydGljYWwtYWxpZ24ifV0sZGVzY3JpcHRpb246IkFmZmVjdHMgdGhlIHZlcnRpY2FsIHBvc2l0aW9uaW5nIG9mIHRoZSBpbmxpbmUgYm94ZXMgZ2VuZXJhdGVkIGJ5IGFuIGlubGluZS1sZXZlbCBlbGVtZW50IGluc2lkZSBhIGxpbmUgYm94LiIscmVzdHJpY3Rpb25zOlsicGVyY2VudGFnZSIsImxlbmd0aCJdfSx7bmFtZToidmlzaWJpbGl0eSIsYnJvd3NlcnM6WyJFMTIiLCJGRjEiLCJTMSIsIkMxIiwiSUU0IiwiTzQiXSx2YWx1ZXM6W3tuYW1lOiJjb2xsYXBzZSIsZGVzY3JpcHRpb246IlRhYmxlLXNwZWNpZmljLiBJZiB1c2VkIG9uIGVsZW1lbnRzIG90aGVyIHRoYW4gcm93cywgcm93IGdyb3VwcywgY29sdW1ucywgb3IgY29sdW1uIGdyb3VwcywgJ2NvbGxhcHNlJyBoYXMgdGhlIHNhbWUgbWVhbmluZyBhcyAnaGlkZGVuJy4ifSx7bmFtZToiaGlkZGVuIixkZXNjcmlwdGlvbjoiVGhlIGdlbmVyYXRlZCBib3ggaXMgaW52aXNpYmxlIChmdWxseSB0cmFuc3BhcmVudCwgbm90aGluZyBpcyBkcmF3biksIGJ1dCBzdGlsbCBhZmZlY3RzIGxheW91dC4ifSx7bmFtZToidmlzaWJsZSIsZGVzY3JpcHRpb246IlRoZSBnZW5lcmF0ZWQgYm94IGlzIHZpc2libGUuIn1dLHN5bnRheDoidmlzaWJsZSB8IGhpZGRlbiB8IGNvbGxhcHNlIixyZWxldmFuY2U6ODcscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3Zpc2liaWxpdHkifV0sZGVzY3JpcHRpb246IlNwZWNpZmllcyB3aGV0aGVyIHRoZSBib3hlcyBnZW5lcmF0ZWQgYnkgYW4gZWxlbWVudCBhcmUgcmVuZGVyZWQuIEludmlzaWJsZSBib3hlcyBzdGlsbCBhZmZlY3QgbGF5b3V0IChzZXQgdGhlICdkaXNwbGF5JyBwcm9wZXJ0eSB0byAnbm9uZScgdG8gc3VwcHJlc3MgYm94IGdlbmVyYXRpb24gYWx0b2dldGhlcikuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiItd2Via2l0LWFuaW1hdGlvbiIsYnJvd3NlcnM6WyJDIiwiUzUiXSx2YWx1ZXM6W3tuYW1lOiJhbHRlcm5hdGUiLGRlc2NyaXB0aW9uOiJUaGUgYW5pbWF0aW9uIGN5Y2xlIGl0ZXJhdGlvbnMgdGhhdCBhcmUgb2RkIGNvdW50cyBhcmUgcGxheWVkIGluIHRoZSBub3JtYWwgZGlyZWN0aW9uLCBhbmQgdGhlIGFuaW1hdGlvbiBjeWNsZSBpdGVyYXRpb25zIHRoYXQgYXJlIGV2ZW4gY291bnRzIGFyZSBwbGF5ZWQgaW4gYSByZXZlcnNlIGRpcmVjdGlvbi4ifSx7bmFtZToiYWx0ZXJuYXRlLXJldmVyc2UiLGRlc2NyaXB0aW9uOiJUaGUgYW5pbWF0aW9uIGN5Y2xlIGl0ZXJhdGlvbnMgdGhhdCBhcmUgb2RkIGNvdW50cyBhcmUgcGxheWVkIGluIHRoZSByZXZlcnNlIGRpcmVjdGlvbiwgYW5kIHRoZSBhbmltYXRpb24gY3ljbGUgaXRlcmF0aW9ucyB0aGF0IGFyZSBldmVuIGNvdW50cyBhcmUgcGxheWVkIGluIGEgbm9ybWFsIGRpcmVjdGlvbi4ifSx7bmFtZToiYmFja3dhcmRzIixkZXNjcmlwdGlvbjoiVGhlIGJlZ2lubmluZyBwcm9wZXJ0eSB2YWx1ZSAoYXMgZGVmaW5lZCBpbiB0aGUgZmlyc3QgQGtleWZyYW1lcyBhdC1ydWxlKSBpcyBhcHBsaWVkIGJlZm9yZSB0aGUgYW5pbWF0aW9uIGlzIGRpc3BsYXllZCwgZHVyaW5nIHRoZSBwZXJpb2QgZGVmaW5lZCBieSAnYW5pbWF0aW9uLWRlbGF5Jy4ifSx7bmFtZToiYm90aCIsZGVzY3JpcHRpb246IkJvdGggZm9yd2FyZHMgYW5kIGJhY2t3YXJkcyBmaWxsIG1vZGVzIGFyZSBhcHBsaWVkLiJ9LHtuYW1lOiJmb3J3YXJkcyIsZGVzY3JpcHRpb246IlRoZSBmaW5hbCBwcm9wZXJ0eSB2YWx1ZSAoYXMgZGVmaW5lZCBpbiB0aGUgbGFzdCBAa2V5ZnJhbWVzIGF0LXJ1bGUpIGlzIG1haW50YWluZWQgYWZ0ZXIgdGhlIGFuaW1hdGlvbiBjb21wbGV0ZXMuIn0se25hbWU6ImluZmluaXRlIixkZXNjcmlwdGlvbjoiQ2F1c2VzIHRoZSBhbmltYXRpb24gdG8gcmVwZWF0IGZvcmV2ZXIuIn0se25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJObyBhbmltYXRpb24gaXMgcGVyZm9ybWVkIn0se25hbWU6Im5vcm1hbCIsZGVzY3JpcHRpb246Ik5vcm1hbCBwbGF5YmFjay4ifSx7bmFtZToicmV2ZXJzZSIsZGVzY3JpcHRpb246IkFsbCBpdGVyYXRpb25zIG9mIHRoZSBhbmltYXRpb24gYXJlIHBsYXllZCBpbiB0aGUgcmV2ZXJzZSBkaXJlY3Rpb24gZnJvbSB0aGUgd2F5IHRoZXkgd2VyZSBzcGVjaWZpZWQuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiU2hvcnRoYW5kIHByb3BlcnR5IGNvbWJpbmVzIHNpeCBvZiB0aGUgYW5pbWF0aW9uIHByb3BlcnRpZXMgaW50byBhIHNpbmdsZSBwcm9wZXJ0eS4iLHJlc3RyaWN0aW9uczpbInRpbWUiLCJlbnVtIiwidGltaW5nLWZ1bmN0aW9uIiwiaWRlbnRpZmllciIsIm51bWJlciJdfSx7bmFtZToiLXdlYmtpdC1hbmltYXRpb24tZGVsYXkiLGJyb3dzZXJzOlsiQyIsIlM1Il0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJEZWZpbmVzIHdoZW4gdGhlIGFuaW1hdGlvbiB3aWxsIHN0YXJ0LiIscmVzdHJpY3Rpb25zOlsidGltZSJdfSx7bmFtZToiLXdlYmtpdC1hbmltYXRpb24tZGlyZWN0aW9uIixicm93c2VyczpbIkMiLCJTNSJdLHZhbHVlczpbe25hbWU6ImFsdGVybmF0ZSIsZGVzY3JpcHRpb246IlRoZSBhbmltYXRpb24gY3ljbGUgaXRlcmF0aW9ucyB0aGF0IGFyZSBvZGQgY291bnRzIGFyZSBwbGF5ZWQgaW4gdGhlIG5vcm1hbCBkaXJlY3Rpb24sIGFuZCB0aGUgYW5pbWF0aW9uIGN5Y2xlIGl0ZXJhdGlvbnMgdGhhdCBhcmUgZXZlbiBjb3VudHMgYXJlIHBsYXllZCBpbiBhIHJldmVyc2UgZGlyZWN0aW9uLiJ9LHtuYW1lOiJhbHRlcm5hdGUtcmV2ZXJzZSIsZGVzY3JpcHRpb246IlRoZSBhbmltYXRpb24gY3ljbGUgaXRlcmF0aW9ucyB0aGF0IGFyZSBvZGQgY291bnRzIGFyZSBwbGF5ZWQgaW4gdGhlIHJldmVyc2UgZGlyZWN0aW9uLCBhbmQgdGhlIGFuaW1hdGlvbiBjeWNsZSBpdGVyYXRpb25zIHRoYXQgYXJlIGV2ZW4gY291bnRzIGFyZSBwbGF5ZWQgaW4gYSBub3JtYWwgZGlyZWN0aW9uLiJ9LHtuYW1lOiJub3JtYWwiLGRlc2NyaXB0aW9uOiJOb3JtYWwgcGxheWJhY2suIn0se25hbWU6InJldmVyc2UiLGRlc2NyaXB0aW9uOiJBbGwgaXRlcmF0aW9ucyBvZiB0aGUgYW5pbWF0aW9uIGFyZSBwbGF5ZWQgaW4gdGhlIHJldmVyc2UgZGlyZWN0aW9uIGZyb20gdGhlIHdheSB0aGV5IHdlcmUgc3BlY2lmaWVkLiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkRlZmluZXMgd2hldGhlciBvciBub3QgdGhlIGFuaW1hdGlvbiBzaG91bGQgcGxheSBpbiByZXZlcnNlIG9uIGFsdGVybmF0ZSBjeWNsZXMuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiItd2Via2l0LWFuaW1hdGlvbi1kdXJhdGlvbiIsYnJvd3NlcnM6WyJDIiwiUzUiXSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkRlZmluZXMgdGhlIGxlbmd0aCBvZiB0aW1lIHRoYXQgYW4gYW5pbWF0aW9uIHRha2VzIHRvIGNvbXBsZXRlIG9uZSBjeWNsZS4iLHJlc3RyaWN0aW9uczpbInRpbWUiXX0se25hbWU6Ii13ZWJraXQtYW5pbWF0aW9uLWZpbGwtbW9kZSIsYnJvd3NlcnM6WyJDIiwiUzUiXSx2YWx1ZXM6W3tuYW1lOiJiYWNrd2FyZHMiLGRlc2NyaXB0aW9uOiJUaGUgYmVnaW5uaW5nIHByb3BlcnR5IHZhbHVlIChhcyBkZWZpbmVkIGluIHRoZSBmaXJzdCBAa2V5ZnJhbWVzIGF0LXJ1bGUpIGlzIGFwcGxpZWQgYmVmb3JlIHRoZSBhbmltYXRpb24gaXMgZGlzcGxheWVkLCBkdXJpbmcgdGhlIHBlcmlvZCBkZWZpbmVkIGJ5ICdhbmltYXRpb24tZGVsYXknLiJ9LHtuYW1lOiJib3RoIixkZXNjcmlwdGlvbjoiQm90aCBmb3J3YXJkcyBhbmQgYmFja3dhcmRzIGZpbGwgbW9kZXMgYXJlIGFwcGxpZWQuIn0se25hbWU6ImZvcndhcmRzIixkZXNjcmlwdGlvbjoiVGhlIGZpbmFsIHByb3BlcnR5IHZhbHVlIChhcyBkZWZpbmVkIGluIHRoZSBsYXN0IEBrZXlmcmFtZXMgYXQtcnVsZSkgaXMgbWFpbnRhaW5lZCBhZnRlciB0aGUgYW5pbWF0aW9uIGNvbXBsZXRlcy4ifSx7bmFtZToibm9uZSIsZGVzY3JpcHRpb246IlRoZXJlIGlzIG5vIGNoYW5nZSB0byB0aGUgcHJvcGVydHkgdmFsdWUgYmV0d2VlbiB0aGUgdGltZSB0aGUgYW5pbWF0aW9uIGlzIGFwcGxpZWQgYW5kIHRoZSB0aW1lIHRoZSBhbmltYXRpb24gYmVnaW5zIHBsYXlpbmcgb3IgYWZ0ZXIgdGhlIGFuaW1hdGlvbiBjb21wbGV0ZXMuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiRGVmaW5lcyB3aGF0IHZhbHVlcyBhcmUgYXBwbGllZCBieSB0aGUgYW5pbWF0aW9uIG91dHNpZGUgdGhlIHRpbWUgaXQgaXMgZXhlY3V0aW5nLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiLXdlYmtpdC1hbmltYXRpb24taXRlcmF0aW9uLWNvdW50Iixicm93c2VyczpbIkMiLCJTNSJdLHZhbHVlczpbe25hbWU6ImluZmluaXRlIixkZXNjcmlwdGlvbjoiQ2F1c2VzIHRoZSBhbmltYXRpb24gdG8gcmVwZWF0IGZvcmV2ZXIuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiRGVmaW5lcyB0aGUgbnVtYmVyIG9mIHRpbWVzIGFuIGFuaW1hdGlvbiBjeWNsZSBpcyBwbGF5ZWQuIFRoZSBkZWZhdWx0IHZhbHVlIGlzIG9uZSwgbWVhbmluZyB0aGUgYW5pbWF0aW9uIHdpbGwgcGxheSBmcm9tIGJlZ2lubmluZyB0byBlbmQgb25jZS4iLHJlc3RyaWN0aW9uczpbIm51bWJlciIsImVudW0iXX0se25hbWU6Ii13ZWJraXQtYW5pbWF0aW9uLW5hbWUiLGJyb3dzZXJzOlsiQyIsIlM1Il0sdmFsdWVzOlt7bmFtZToibm9uZSIsZGVzY3JpcHRpb246Ik5vIGFuaW1hdGlvbiBpcyBwZXJmb3JtZWQifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJEZWZpbmVzIGEgbGlzdCBvZiBhbmltYXRpb25zIHRoYXQgYXBwbHkuIEVhY2ggbmFtZSBpcyB1c2VkIHRvIHNlbGVjdCB0aGUga2V5ZnJhbWUgYXQtcnVsZSB0aGF0IHByb3ZpZGVzIHRoZSBwcm9wZXJ0eSB2YWx1ZXMgZm9yIHRoZSBhbmltYXRpb24uIixyZXN0cmljdGlvbnM6WyJpZGVudGlmaWVyIiwiZW51bSJdfSx7bmFtZToiLXdlYmtpdC1hbmltYXRpb24tcGxheS1zdGF0ZSIsYnJvd3NlcnM6WyJDIiwiUzUiXSx2YWx1ZXM6W3tuYW1lOiJwYXVzZWQiLGRlc2NyaXB0aW9uOiJBIHJ1bm5pbmcgYW5pbWF0aW9uIHdpbGwgYmUgcGF1c2VkLiJ9LHtuYW1lOiJydW5uaW5nIixkZXNjcmlwdGlvbjoiUmVzdW1lIHBsYXliYWNrIG9mIGEgcGF1c2VkIGFuaW1hdGlvbi4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJEZWZpbmVzIHdoZXRoZXIgdGhlIGFuaW1hdGlvbiBpcyBydW5uaW5nIG9yIHBhdXNlZC4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii13ZWJraXQtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbiIsYnJvd3NlcnM6WyJDIiwiUzUiXSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkRlc2NyaWJlcyBob3cgdGhlIGFuaW1hdGlvbiB3aWxsIHByb2dyZXNzIG92ZXIgb25lIGN5Y2xlIG9mIGl0cyBkdXJhdGlvbi4gU2VlIHRoZSAndHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb24nLiIscmVzdHJpY3Rpb25zOlsidGltaW5nLWZ1bmN0aW9uIl19LHtuYW1lOiItd2Via2l0LWFwcGVhcmFuY2UiLGJyb3dzZXJzOlsiQyIsIlMzIl0sdmFsdWVzOlt7bmFtZToiYnV0dG9uIn0se25hbWU6ImJ1dHRvbi1iZXZlbCJ9LHtuYW1lOiJjYXBzLWxvY2staW5kaWNhdG9yIn0se25hbWU6ImNhcmV0In0se25hbWU6ImNoZWNrYm94In0se25hbWU6ImRlZmF1bHQtYnV0dG9uIn0se25hbWU6Imxpc3Rib3gifSx7bmFtZToibGlzdGl0ZW0ifSx7bmFtZToibWVkaWEtZnVsbHNjcmVlbi1idXR0b24ifSx7bmFtZToibWVkaWEtbXV0ZS1idXR0b24ifSx7bmFtZToibWVkaWEtcGxheS1idXR0b24ifSx7bmFtZToibWVkaWEtc2Vlay1iYWNrLWJ1dHRvbiJ9LHtuYW1lOiJtZWRpYS1zZWVrLWZvcndhcmQtYnV0dG9uIn0se25hbWU6Im1lZGlhLXNsaWRlciJ9LHtuYW1lOiJtZWRpYS1zbGlkZXJ0aHVtYiJ9LHtuYW1lOiJtZW51bGlzdCJ9LHtuYW1lOiJtZW51bGlzdC1idXR0b24ifSx7bmFtZToibWVudWxpc3QtdGV4dCJ9LHtuYW1lOiJtZW51bGlzdC10ZXh0ZmllbGQifSx7bmFtZToibm9uZSJ9LHtuYW1lOiJwdXNoLWJ1dHRvbiJ9LHtuYW1lOiJyYWRpbyJ9LHtuYW1lOiJzY3JvbGxiYXJidXR0b24tZG93biJ9LHtuYW1lOiJzY3JvbGxiYXJidXR0b24tbGVmdCJ9LHtuYW1lOiJzY3JvbGxiYXJidXR0b24tcmlnaHQifSx7bmFtZToic2Nyb2xsYmFyYnV0dG9uLXVwIn0se25hbWU6InNjcm9sbGJhcmdyaXBwZXItaG9yaXpvbnRhbCJ9LHtuYW1lOiJzY3JvbGxiYXJncmlwcGVyLXZlcnRpY2FsIn0se25hbWU6InNjcm9sbGJhcnRodW1iLWhvcml6b250YWwifSx7bmFtZToic2Nyb2xsYmFydGh1bWItdmVydGljYWwifSx7bmFtZToic2Nyb2xsYmFydHJhY2staG9yaXpvbnRhbCJ9LHtuYW1lOiJzY3JvbGxiYXJ0cmFjay12ZXJ0aWNhbCJ9LHtuYW1lOiJzZWFyY2hmaWVsZCJ9LHtuYW1lOiJzZWFyY2hmaWVsZC1jYW5jZWwtYnV0dG9uIn0se25hbWU6InNlYXJjaGZpZWxkLWRlY29yYXRpb24ifSx7bmFtZToic2VhcmNoZmllbGQtcmVzdWx0cy1idXR0b24ifSx7bmFtZToic2VhcmNoZmllbGQtcmVzdWx0cy1kZWNvcmF0aW9uIn0se25hbWU6InNsaWRlci1ob3Jpem9udGFsIn0se25hbWU6InNsaWRlcnRodW1iLWhvcml6b250YWwifSx7bmFtZToic2xpZGVydGh1bWItdmVydGljYWwifSx7bmFtZToic2xpZGVyLXZlcnRpY2FsIn0se25hbWU6InNxdWFyZS1idXR0b24ifSx7bmFtZToidGV4dGFyZWEifSx7bmFtZToidGV4dGZpZWxkIn1dLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoibm9uZSB8IGJ1dHRvbiB8IGJ1dHRvbi1iZXZlbCB8IGNhcmV0IHwgY2hlY2tib3ggfCBkZWZhdWx0LWJ1dHRvbiB8IGlubmVyLXNwaW4tYnV0dG9uIHwgbGlzdGJveCB8IGxpc3RpdGVtIHwgbWVkaWEtY29udHJvbHMtYmFja2dyb3VuZCB8IG1lZGlhLWNvbnRyb2xzLWZ1bGxzY3JlZW4tYmFja2dyb3VuZCB8IG1lZGlhLWN1cnJlbnQtdGltZS1kaXNwbGF5IHwgbWVkaWEtZW50ZXItZnVsbHNjcmVlbi1idXR0b24gfCBtZWRpYS1leGl0LWZ1bGxzY3JlZW4tYnV0dG9uIHwgbWVkaWEtZnVsbHNjcmVlbi1idXR0b24gfCBtZWRpYS1tdXRlLWJ1dHRvbiB8IG1lZGlhLW92ZXJsYXktcGxheS1idXR0b24gfCBtZWRpYS1wbGF5LWJ1dHRvbiB8IG1lZGlhLXNlZWstYmFjay1idXR0b24gfCBtZWRpYS1zZWVrLWZvcndhcmQtYnV0dG9uIHwgbWVkaWEtc2xpZGVyIHwgbWVkaWEtc2xpZGVydGh1bWIgfCBtZWRpYS10aW1lLXJlbWFpbmluZy1kaXNwbGF5IHwgbWVkaWEtdG9nZ2xlLWNsb3NlZC1jYXB0aW9ucy1idXR0b24gfCBtZWRpYS12b2x1bWUtc2xpZGVyIHwgbWVkaWEtdm9sdW1lLXNsaWRlci1jb250YWluZXIgfCBtZWRpYS12b2x1bWUtc2xpZGVydGh1bWIgfCBtZW51bGlzdCB8IG1lbnVsaXN0LWJ1dHRvbiB8IG1lbnVsaXN0LXRleHQgfCBtZW51bGlzdC10ZXh0ZmllbGQgfCBtZXRlciB8IHByb2dyZXNzLWJhciB8IHByb2dyZXNzLWJhci12YWx1ZSB8IHB1c2gtYnV0dG9uIHwgcmFkaW8gfCBzZWFyY2hmaWVsZCB8IHNlYXJjaGZpZWxkLWNhbmNlbC1idXR0b24gfCBzZWFyY2hmaWVsZC1kZWNvcmF0aW9uIHwgc2VhcmNoZmllbGQtcmVzdWx0cy1idXR0b24gfCBzZWFyY2hmaWVsZC1yZXN1bHRzLWRlY29yYXRpb24gfCBzbGlkZXItaG9yaXpvbnRhbCB8IHNsaWRlci12ZXJ0aWNhbCB8IHNsaWRlcnRodW1iLWhvcml6b250YWwgfCBzbGlkZXJ0aHVtYi12ZXJ0aWNhbCB8IHNxdWFyZS1idXR0b24gfCB0ZXh0YXJlYSB8IHRleHRmaWVsZCB8IC1hcHBsZS1wYXktYnV0dG9uIixyZWxldmFuY2U6MCxkZXNjcmlwdGlvbjoiQ2hhbmdlcyB0aGUgYXBwZWFyYW5jZSBvZiBidXR0b25zIGFuZCBvdGhlciBjb250cm9scyB0byByZXNlbWJsZSBuYXRpdmUgY29udHJvbHMuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiItd2Via2l0LWJhY2tkcm9wLWZpbHRlciIsYnJvd3NlcnM6WyJTOSJdLHZhbHVlczpbe25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJObyBmaWx0ZXIgZWZmZWN0cyBhcmUgYXBwbGllZC4ifSx7bmFtZToiYmx1cigpIixkZXNjcmlwdGlvbjoiQXBwbGllcyBhIEdhdXNzaWFuIGJsdXIgdG8gdGhlIGlucHV0IGltYWdlLiJ9LHtuYW1lOiJicmlnaHRuZXNzKCkiLGRlc2NyaXB0aW9uOiJBcHBsaWVzIGEgbGluZWFyIG11bHRpcGxpZXIgdG8gaW5wdXQgaW1hZ2UsIG1ha2luZyBpdCBhcHBlYXIgbW9yZSBvciBsZXNzIGJyaWdodC4ifSx7bmFtZToiY29udHJhc3QoKSIsZGVzY3JpcHRpb246IkFkanVzdHMgdGhlIGNvbnRyYXN0IG9mIHRoZSBpbnB1dC4ifSx7bmFtZToiZHJvcC1zaGFkb3coKSIsZGVzY3JpcHRpb246IkFwcGxpZXMgYSBkcm9wIHNoYWRvdyBlZmZlY3QgdG8gdGhlIGlucHV0IGltYWdlLiJ9LHtuYW1lOiJncmF5c2NhbGUoKSIsZGVzY3JpcHRpb246IkNvbnZlcnRzIHRoZSBpbnB1dCBpbWFnZSB0byBncmF5c2NhbGUuIn0se25hbWU6Imh1ZS1yb3RhdGUoKSIsZGVzY3JpcHRpb246IkFwcGxpZXMgYSBodWUgcm90YXRpb24gb24gdGhlIGlucHV0IGltYWdlLiAifSx7bmFtZToiaW52ZXJ0KCkiLGRlc2NyaXB0aW9uOiJJbnZlcnRzIHRoZSBzYW1wbGVzIGluIHRoZSBpbnB1dCBpbWFnZS4ifSx7bmFtZToib3BhY2l0eSgpIixkZXNjcmlwdGlvbjoiQXBwbGllcyB0cmFuc3BhcmVuY3kgdG8gdGhlIHNhbXBsZXMgaW4gdGhlIGlucHV0IGltYWdlLiJ9LHtuYW1lOiJzYXR1cmF0ZSgpIixkZXNjcmlwdGlvbjoiU2F0dXJhdGVzIHRoZSBpbnB1dCBpbWFnZS4ifSx7bmFtZToic2VwaWEoKSIsZGVzY3JpcHRpb246IkNvbnZlcnRzIHRoZSBpbnB1dCBpbWFnZSB0byBzZXBpYS4ifSx7bmFtZToidXJsKCkiLGRlc2NyaXB0aW9uOiJBIGZpbHRlciByZWZlcmVuY2UgdG8gYSA8ZmlsdGVyPiBlbGVtZW50LiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkFwcGxpZXMgYSBmaWx0ZXIgZWZmZWN0IHdoZXJlIHRoZSBmaXJzdCBmaWx0ZXIgaW4gdGhlIGxpc3QgdGFrZXMgdGhlIGVsZW1lbnQncyBiYWNrZ3JvdW5kIGltYWdlIGFzIHRoZSBpbnB1dCBpbWFnZS4iLHJlc3RyaWN0aW9uczpbImVudW0iLCJ1cmwiXX0se25hbWU6Ii13ZWJraXQtYmFja2ZhY2UtdmlzaWJpbGl0eSIsYnJvd3NlcnM6WyJDIiwiUzUiXSx2YWx1ZXM6W3tuYW1lOiJoaWRkZW4ifSx7bmFtZToidmlzaWJsZSJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkRldGVybWluZXMgd2hldGhlciBvciBub3QgdGhlICdiYWNrJyBzaWRlIG9mIGEgdHJhbnNmb3JtZWQgZWxlbWVudCBpcyB2aXNpYmxlIHdoZW4gZmFjaW5nIHRoZSB2aWV3ZXIuIFdpdGggYW4gaWRlbnRpdHkgdHJhbnNmb3JtLCB0aGUgZnJvbnQgc2lkZSBvZiBhbiBlbGVtZW50IGZhY2VzIHRoZSB2aWV3ZXIuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiItd2Via2l0LWJhY2tncm91bmQtY2xpcCIsYnJvd3NlcnM6WyJDIiwiUzMiXSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkRldGVybWluZXMgdGhlIGJhY2tncm91bmQgcGFpbnRpbmcgYXJlYS4iLHJlc3RyaWN0aW9uczpbImJveCJdfSx7bmFtZToiLXdlYmtpdC1iYWNrZ3JvdW5kLWNvbXBvc2l0ZSIsYnJvd3NlcnM6WyJDIiwiUzMiXSx2YWx1ZXM6W3tuYW1lOiJib3JkZXIifSx7bmFtZToicGFkZGluZyJ9XSxyZWxldmFuY2U6NTAscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiLXdlYmtpdC1iYWNrZ3JvdW5kLW9yaWdpbiIsYnJvd3NlcnM6WyJDIiwiUzMiXSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkZvciBlbGVtZW50cyByZW5kZXJlZCBhcyBhIHNpbmdsZSBib3gsIHNwZWNpZmllcyB0aGUgYmFja2dyb3VuZCBwb3NpdGlvbmluZyBhcmVhLiBGb3IgZWxlbWVudHMgcmVuZGVyZWQgYXMgbXVsdGlwbGUgYm94ZXMgKGUuZy4sIGlubGluZSBib3hlcyBvbiBzZXZlcmFsIGxpbmVzLCBib3hlcyBvbiBzZXZlcmFsIHBhZ2VzKSBzcGVjaWZpZXMgd2hpY2ggYm94ZXMgJ2JveC1kZWNvcmF0aW9uLWJyZWFrJyBvcGVyYXRlcyBvbiB0byBkZXRlcm1pbmUgdGhlIGJhY2tncm91bmQgcG9zaXRpb25pbmcgYXJlYShzKS4iLHJlc3RyaWN0aW9uczpbImJveCJdfSx7bmFtZToiLXdlYmtpdC1ib3JkZXItaW1hZ2UiLGJyb3dzZXJzOlsiQyIsIlM1Il0sdmFsdWVzOlt7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IklmICdhdXRvJyBpcyBzcGVjaWZpZWQgdGhlbiB0aGUgYm9yZGVyIGltYWdlIHdpZHRoIGlzIHRoZSBpbnRyaW5zaWMgd2lkdGggb3IgaGVpZ2h0ICh3aGljaGV2ZXIgaXMgYXBwbGljYWJsZSkgb2YgdGhlIGNvcnJlc3BvbmRpbmcgaW1hZ2Ugc2xpY2UuIElmIHRoZSBpbWFnZSBkb2VzIG5vdCBoYXZlIHRoZSByZXF1aXJlZCBpbnRyaW5zaWMgZGltZW5zaW9uIHRoZW4gdGhlIGNvcnJlc3BvbmRpbmcgYm9yZGVyLXdpZHRoIGlzIHVzZWQgaW5zdGVhZC4ifSx7bmFtZToiZmlsbCIsZGVzY3JpcHRpb246IkNhdXNlcyB0aGUgbWlkZGxlIHBhcnQgb2YgdGhlIGJvcmRlci1pbWFnZSB0byBiZSBwcmVzZXJ2ZWQuIn0se25hbWU6Im5vbmUifSx7bmFtZToicmVwZWF0IixkZXNjcmlwdGlvbjoiVGhlIGltYWdlIGlzIHRpbGVkIChyZXBlYXRlZCkgdG8gZmlsbCB0aGUgYXJlYS4ifSx7bmFtZToicm91bmQiLGRlc2NyaXB0aW9uOiJUaGUgaW1hZ2UgaXMgdGlsZWQgKHJlcGVhdGVkKSB0byBmaWxsIHRoZSBhcmVhLiBJZiBpdCBkb2VzIG5vdCBmaWxsIHRoZSBhcmVhIHdpdGggYSB3aG9sZSBudW1iZXIgb2YgdGlsZXMsIHRoZSBpbWFnZSBpcyByZXNjYWxlZCBzbyB0aGF0IGl0IGRvZXMuIn0se25hbWU6InNwYWNlIixkZXNjcmlwdGlvbjoiVGhlIGltYWdlIGlzIHRpbGVkIChyZXBlYXRlZCkgdG8gZmlsbCB0aGUgYXJlYS4gSWYgaXQgZG9lcyBub3QgZmlsbCB0aGUgYXJlYSB3aXRoIGEgd2hvbGUgbnVtYmVyIG9mIHRpbGVzLCB0aGUgZXh0cmEgc3BhY2UgaXMgZGlzdHJpYnV0ZWQgYXJvdW5kIHRoZSB0aWxlcy4ifSx7bmFtZToic3RyZXRjaCIsZGVzY3JpcHRpb246IlRoZSBpbWFnZSBpcyBzdHJldGNoZWQgdG8gZmlsbCB0aGUgYXJlYS4ifSx7bmFtZToidXJsKCkifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJTaG9ydGhhbmQgcHJvcGVydHkgZm9yIHNldHRpbmcgJ2JvcmRlci1pbWFnZS1zb3VyY2UnLCAnYm9yZGVyLWltYWdlLXNsaWNlJywgJ2JvcmRlci1pbWFnZS13aWR0aCcsICdib3JkZXItaW1hZ2Utb3V0c2V0JyBhbmQgJ2JvcmRlci1pbWFnZS1yZXBlYXQnLiBPbWl0dGVkIHZhbHVlcyBhcmUgc2V0IHRvIHRoZWlyIGluaXRpYWwgdmFsdWVzLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwicGVyY2VudGFnZSIsIm51bWJlciIsInVybCIsImVudW0iXX0se25hbWU6Ii13ZWJraXQtYm94LWFsaWduIixicm93c2VyczpbIkMiLCJTMyJdLHZhbHVlczpbe25hbWU6ImJhc2VsaW5lIixkZXNjcmlwdGlvbjoiSWYgdGhpcyBib3ggb3JpZW50YXRpb24gaXMgaW5saW5lLWF4aXMgb3IgaG9yaXpvbnRhbCwgYWxsIGNoaWxkcmVuIGFyZSBwbGFjZWQgd2l0aCB0aGVpciBiYXNlbGluZXMgYWxpZ25lZCwgYW5kIGV4dHJhIHNwYWNlIHBsYWNlZCBiZWZvcmUgb3IgYWZ0ZXIgYXMgbmVjZXNzYXJ5LiBGb3IgYmxvY2sgZmxvd3MsIHRoZSBiYXNlbGluZSBvZiB0aGUgZmlyc3Qgbm9uLWVtcHR5IGxpbmUgYm94IGxvY2F0ZWQgd2l0aGluIHRoZSBlbGVtZW50IGlzIHVzZWQuIEZvciB0YWJsZXMsIHRoZSBiYXNlbGluZSBvZiB0aGUgZmlyc3QgY2VsbCBpcyB1c2VkLiJ9LHtuYW1lOiJjZW50ZXIiLGRlc2NyaXB0aW9uOiJBbnkgZXh0cmEgc3BhY2UgaXMgZGl2aWRlZCBldmVubHksIHdpdGggaGFsZiBwbGFjZWQgYWJvdmUgdGhlIGNoaWxkIGFuZCB0aGUgb3RoZXIgaGFsZiBwbGFjZWQgYWZ0ZXIgdGhlIGNoaWxkLiJ9LHtuYW1lOiJlbmQiLGRlc2NyaXB0aW9uOiJGb3Igbm9ybWFsIGRpcmVjdGlvbiBib3hlcywgdGhlIGJvdHRvbSBlZGdlIG9mIGVhY2ggY2hpbGQgaXMgcGxhY2VkIGFsb25nIHRoZSBib3R0b20gb2YgdGhlIGJveC4gRXh0cmEgc3BhY2UgaXMgcGxhY2VkIGFib3ZlIHRoZSBlbGVtZW50LiBGb3IgcmV2ZXJzZSBkaXJlY3Rpb24gYm94ZXMsIHRoZSB0b3AgZWRnZSBvZiBlYWNoIGNoaWxkIGlzIHBsYWNlZCBhbG9uZyB0aGUgdG9wIG9mIHRoZSBib3guIEV4dHJhIHNwYWNlIGlzIHBsYWNlZCBiZWxvdyB0aGUgZWxlbWVudC4ifSx7bmFtZToic3RhcnQiLGRlc2NyaXB0aW9uOiJGb3Igbm9ybWFsIGRpcmVjdGlvbiBib3hlcywgdGhlIHRvcCBlZGdlIG9mIGVhY2ggY2hpbGQgaXMgcGxhY2VkIGFsb25nIHRoZSB0b3Agb2YgdGhlIGJveC4gRXh0cmEgc3BhY2UgaXMgcGxhY2VkIGJlbG93IHRoZSBlbGVtZW50LiBGb3IgcmV2ZXJzZSBkaXJlY3Rpb24gYm94ZXMsIHRoZSBib3R0b20gZWRnZSBvZiBlYWNoIGNoaWxkIGlzIHBsYWNlZCBhbG9uZyB0aGUgYm90dG9tIG9mIHRoZSBib3guIEV4dHJhIHNwYWNlIGlzIHBsYWNlZCBhYm92ZSB0aGUgZWxlbWVudC4ifSx7bmFtZToic3RyZXRjaCIsZGVzY3JpcHRpb246IlRoZSBoZWlnaHQgb2YgZWFjaCBjaGlsZCBpcyBhZGp1c3RlZCB0byB0aGF0IG9mIHRoZSBjb250YWluaW5nIGJsb2NrLiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlNwZWNpZmllcyB0aGUgYWxpZ25tZW50IG9mIG5lc3RlZCBlbGVtZW50cyB3aXRoaW4gYW4gb3V0ZXIgZmxleGlibGUgYm94IGVsZW1lbnQuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiItd2Via2l0LWJveC1kaXJlY3Rpb24iLGJyb3dzZXJzOlsiQyIsIlMzIl0sdmFsdWVzOlt7bmFtZToibm9ybWFsIixkZXNjcmlwdGlvbjoiQSBib3ggd2l0aCBhIGNvbXB1dGVkIHZhbHVlIG9mIGhvcml6b250YWwgZm9yIGJveC1vcmllbnQgZGlzcGxheXMgaXRzIGNoaWxkcmVuIGZyb20gbGVmdCB0byByaWdodC4gQSBib3ggd2l0aCBhIGNvbXB1dGVkIHZhbHVlIG9mIHZlcnRpY2FsIGRpc3BsYXlzIGl0cyBjaGlsZHJlbiBmcm9tIHRvcCB0byBib3R0b20uIn0se25hbWU6InJldmVyc2UiLGRlc2NyaXB0aW9uOiJBIGJveCB3aXRoIGEgY29tcHV0ZWQgdmFsdWUgb2YgaG9yaXpvbnRhbCBmb3IgYm94LW9yaWVudCBkaXNwbGF5cyBpdHMgY2hpbGRyZW4gZnJvbSByaWdodCB0byBsZWZ0LiBBIGJveCB3aXRoIGEgY29tcHV0ZWQgdmFsdWUgb2YgdmVydGljYWwgZGlzcGxheXMgaXRzIGNoaWxkcmVuIGZyb20gYm90dG9tIHRvIHRvcC4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJJbiB3ZWJraXQgYXBwbGljYXRpb25zLCAtd2Via2l0LWJveC1kaXJlY3Rpb24gc3BlY2lmaWVzIHdoZXRoZXIgYSBib3ggbGF5cyBvdXQgaXRzIGNvbnRlbnRzIG5vcm1hbGx5IChmcm9tIHRoZSB0b3Agb3IgbGVmdCBlZGdlKSwgb3IgaW4gcmV2ZXJzZSAoZnJvbSB0aGUgYm90dG9tIG9yIHJpZ2h0IGVkZ2UpLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiLXdlYmtpdC1ib3gtZmxleCIsYnJvd3NlcnM6WyJDIiwiUzMiXSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhbiBlbGVtZW50J3MgZmxleGliaWxpdHkuIixyZXN0cmljdGlvbnM6WyJudW1iZXIiXX0se25hbWU6Ii13ZWJraXQtYm94LWZsZXgtZ3JvdXAiLGJyb3dzZXJzOlsiQyIsIlMzIl0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJGbGV4aWJsZSBlbGVtZW50cyBjYW4gYmUgYXNzaWduZWQgdG8gZmxleCBncm91cHMgdXNpbmcgdGhlICdib3gtZmxleC1ncm91cCcgcHJvcGVydHkuIixyZXN0cmljdGlvbnM6WyJpbnRlZ2VyIl19LHtuYW1lOiItd2Via2l0LWJveC1vcmRpbmFsLWdyb3VwIixicm93c2VyczpbIkMiLCJTMyJdLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiSW5kaWNhdGVzIHRoZSBvcmRpbmFsIGdyb3VwIHRoZSBlbGVtZW50IGJlbG9uZ3MgdG8uIEVsZW1lbnRzIHdpdGggYSBsb3dlciBvcmRpbmFsIGdyb3VwIGFyZSBkaXNwbGF5ZWQgYmVmb3JlIHRob3NlIHdpdGggYSBoaWdoZXIgb3JkaW5hbCBncm91cC4iLHJlc3RyaWN0aW9uczpbImludGVnZXIiXX0se25hbWU6Ii13ZWJraXQtYm94LW9yaWVudCIsYnJvd3NlcnM6WyJDIiwiUzMiXSx2YWx1ZXM6W3tuYW1lOiJibG9jay1heGlzIixkZXNjcmlwdGlvbjoiRWxlbWVudHMgYXJlIG9yaWVudGVkIGFsb25nIHRoZSBib3gncyBheGlzLiJ9LHtuYW1lOiJob3Jpem9udGFsIixkZXNjcmlwdGlvbjoiVGhlIGJveCBkaXNwbGF5cyBpdHMgY2hpbGRyZW4gZnJvbSBsZWZ0IHRvIHJpZ2h0IGluIGEgaG9yaXpvbnRhbCBsaW5lLiJ9LHtuYW1lOiJpbmxpbmUtYXhpcyIsZGVzY3JpcHRpb246IkVsZW1lbnRzIGFyZSBvcmllbnRlZCB2ZXJ0aWNhbGx5LiJ9LHtuYW1lOiJ2ZXJ0aWNhbCIsZGVzY3JpcHRpb246IlRoZSBib3ggZGlzcGxheXMgaXRzIGNoaWxkcmVuIGZyb20gc3RhY2tlZCBmcm9tIHRvcCB0byBib3R0b20gdmVydGljYWxseS4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJJbiB3ZWJraXQgYXBwbGljYXRpb25zLCAtd2Via2l0LWJveC1vcmllbnQgc3BlY2lmaWVzIHdoZXRoZXIgYSBib3ggbGF5cyBvdXQgaXRzIGNvbnRlbnRzIGhvcml6b250YWxseSBvciB2ZXJ0aWNhbGx5LiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiLXdlYmtpdC1ib3gtcGFjayIsYnJvd3NlcnM6WyJDIiwiUzMiXSx2YWx1ZXM6W3tuYW1lOiJjZW50ZXIiLGRlc2NyaXB0aW9uOiJUaGUgZXh0cmEgc3BhY2UgaXMgZGl2aWRlZCBldmVubHksIHdpdGggaGFsZiBwbGFjZWQgYmVmb3JlIHRoZSBmaXJzdCBjaGlsZCBhbmQgdGhlIG90aGVyIGhhbGYgcGxhY2VkIGFmdGVyIHRoZSBsYXN0IGNoaWxkLiJ9LHtuYW1lOiJlbmQiLGRlc2NyaXB0aW9uOiJGb3Igbm9ybWFsIGRpcmVjdGlvbiBib3hlcywgdGhlIHJpZ2h0IGVkZ2Ugb2YgdGhlIGxhc3QgY2hpbGQgaXMgcGxhY2VkIGF0IHRoZSByaWdodCBzaWRlLCB3aXRoIGFsbCBleHRyYSBzcGFjZSBwbGFjZWQgYmVmb3JlIHRoZSBmaXJzdCBjaGlsZC4gRm9yIHJldmVyc2UgZGlyZWN0aW9uIGJveGVzLCB0aGUgbGVmdCBlZGdlIG9mIHRoZSBmaXJzdCBjaGlsZCBpcyBwbGFjZWQgYXQgdGhlIGxlZnQgc2lkZSwgd2l0aCBhbGwgZXh0cmEgc3BhY2UgcGxhY2VkIGFmdGVyIHRoZSBsYXN0IGNoaWxkLiJ9LHtuYW1lOiJqdXN0aWZ5IixkZXNjcmlwdGlvbjoiVGhlIHNwYWNlIGlzIGRpdmlkZWQgZXZlbmx5IGluLWJldHdlZW4gZWFjaCBjaGlsZCwgd2l0aCBub25lIG9mIHRoZSBleHRyYSBzcGFjZSBwbGFjZWQgYmVmb3JlIHRoZSBmaXJzdCBjaGlsZCBvciBhZnRlciB0aGUgbGFzdCBjaGlsZC4gSWYgdGhlcmUgaXMgb25seSBvbmUgY2hpbGQsIHRyZWF0IHRoZSBwYWNrIHZhbHVlIGFzIGlmIGl0IHdlcmUgc3RhcnQuIn0se25hbWU6InN0YXJ0IixkZXNjcmlwdGlvbjoiRm9yIG5vcm1hbCBkaXJlY3Rpb24gYm94ZXMsIHRoZSBsZWZ0IGVkZ2Ugb2YgdGhlIGZpcnN0IGNoaWxkIGlzIHBsYWNlZCBhdCB0aGUgbGVmdCBzaWRlLCB3aXRoIGFsbCBleHRyYSBzcGFjZSBwbGFjZWQgYWZ0ZXIgdGhlIGxhc3QgY2hpbGQuIEZvciByZXZlcnNlIGRpcmVjdGlvbiBib3hlcywgdGhlIHJpZ2h0IGVkZ2Ugb2YgdGhlIGxhc3QgY2hpbGQgaXMgcGxhY2VkIGF0IHRoZSByaWdodCBzaWRlLCB3aXRoIGFsbCBleHRyYSBzcGFjZSBwbGFjZWQgYmVmb3JlIHRoZSBmaXJzdCBjaGlsZC4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYWxpZ25tZW50IG9mIGNoaWxkIGVsZW1lbnRzIHdpdGhpbiB0aGUgY3VycmVudCBlbGVtZW50IGluIHRoZSBkaXJlY3Rpb24gb2Ygb3JpZW50YXRpb24uIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiItd2Via2l0LWJveC1yZWZsZWN0Iixicm93c2VyczpbIkU3OSIsIlM0IiwiQzQiLCJPMTUiXSx2YWx1ZXM6W3tuYW1lOiJhYm92ZSIsZGVzY3JpcHRpb246IlRoZSByZWZsZWN0aW9uIGFwcGVhcnMgYWJvdmUgdGhlIGJvcmRlciBib3guIn0se25hbWU6ImJlbG93IixkZXNjcmlwdGlvbjoiVGhlIHJlZmxlY3Rpb24gYXBwZWFycyBiZWxvdyB0aGUgYm9yZGVyIGJveC4ifSx7bmFtZToibGVmdCIsZGVzY3JpcHRpb246IlRoZSByZWZsZWN0aW9uIGFwcGVhcnMgdG8gdGhlIGxlZnQgb2YgdGhlIGJvcmRlciBib3guIn0se25hbWU6InJpZ2h0IixkZXNjcmlwdGlvbjoiVGhlIHJlZmxlY3Rpb24gYXBwZWFycyB0byB0aGUgcmlnaHQgb2YgdGhlIGJvcmRlciBib3guIn1dLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoiWyBhYm92ZSB8IGJlbG93IHwgcmlnaHQgfCBsZWZ0IF0/IDxsZW5ndGg+PyA8aW1hZ2U+PyIscmVsZXZhbmNlOjAscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLy13ZWJraXQtYm94LXJlZmxlY3QifV0sZGVzY3JpcHRpb246IkRlZmluZXMgYSByZWZsZWN0aW9uIG9mIGEgYm9yZGVyIGJveC4ifSx7bmFtZToiLXdlYmtpdC1ib3gtc2l6aW5nIixicm93c2VyczpbIkMiLCJTMyJdLHZhbHVlczpbe25hbWU6ImJvcmRlci1ib3giLGRlc2NyaXB0aW9uOiJUaGUgc3BlY2lmaWVkIHdpZHRoIGFuZCBoZWlnaHQgKGFuZCByZXNwZWN0aXZlIG1pbi9tYXggcHJvcGVydGllcykgb24gdGhpcyBlbGVtZW50IGRldGVybWluZSB0aGUgYm9yZGVyIGJveCBvZiB0aGUgZWxlbWVudC4ifSx7bmFtZToiY29udGVudC1ib3giLGRlc2NyaXB0aW9uOiJCZWhhdmlvciBvZiB3aWR0aCBhbmQgaGVpZ2h0IGFzIHNwZWNpZmllZCBieSBDU1MyLjEuIFRoZSBzcGVjaWZpZWQgd2lkdGggYW5kIGhlaWdodCAoYW5kIHJlc3BlY3RpdmUgbWluL21heCBwcm9wZXJ0aWVzKSBhcHBseSB0byB0aGUgd2lkdGggYW5kIGhlaWdodCByZXNwZWN0aXZlbHkgb2YgdGhlIGNvbnRlbnQgYm94IG9mIHRoZSBlbGVtZW50LiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkJveCBNb2RlbCBhZGRpdGlvbiBpbiBDU1MzLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiLXdlYmtpdC1icmVhay1hZnRlciIsYnJvd3NlcnM6WyJTNyJdLHZhbHVlczpbe25hbWU6ImFsd2F5cyIsZGVzY3JpcHRpb246IkFsd2F5cyBmb3JjZSBhIHBhZ2UgYnJlYWsgYmVmb3JlL2FmdGVyIHRoZSBnZW5lcmF0ZWQgYm94LiJ9LHtuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiTmVpdGhlciBmb3JjZSBub3IgZm9yYmlkIGEgcGFnZS9jb2x1bW4gYnJlYWsgYmVmb3JlL2FmdGVyIHRoZSBnZW5lcmF0ZWQgYm94LiJ9LHtuYW1lOiJhdm9pZCIsZGVzY3JpcHRpb246IkF2b2lkIGEgcGFnZS9jb2x1bW4gYnJlYWsgYmVmb3JlL2FmdGVyIHRoZSBnZW5lcmF0ZWQgYm94LiJ9LHtuYW1lOiJhdm9pZC1jb2x1bW4iLGRlc2NyaXB0aW9uOiJBdm9pZCBhIGNvbHVtbiBicmVhayBiZWZvcmUvYWZ0ZXIgdGhlIGdlbmVyYXRlZCBib3guIn0se25hbWU6ImF2b2lkLXBhZ2UiLGRlc2NyaXB0aW9uOiJBdm9pZCBhIHBhZ2UgYnJlYWsgYmVmb3JlL2FmdGVyIHRoZSBnZW5lcmF0ZWQgYm94LiJ9LHtuYW1lOiJhdm9pZC1yZWdpb24ifSx7bmFtZToiY29sdW1uIixkZXNjcmlwdGlvbjoiQWx3YXlzIGZvcmNlIGEgY29sdW1uIGJyZWFrIGJlZm9yZS9hZnRlciB0aGUgZ2VuZXJhdGVkIGJveC4ifSx7bmFtZToibGVmdCIsZGVzY3JpcHRpb246IkZvcmNlIG9uZSBvciB0d28gcGFnZSBicmVha3MgYmVmb3JlL2FmdGVyIHRoZSBnZW5lcmF0ZWQgYm94IHNvIHRoYXQgdGhlIG5leHQgcGFnZSBpcyBmb3JtYXR0ZWQgYXMgYSBsZWZ0IHBhZ2UuIn0se25hbWU6InBhZ2UiLGRlc2NyaXB0aW9uOiJBbHdheXMgZm9yY2UgYSBwYWdlIGJyZWFrIGJlZm9yZS9hZnRlciB0aGUgZ2VuZXJhdGVkIGJveC4ifSx7bmFtZToicmVnaW9uIn0se25hbWU6InJpZ2h0IixkZXNjcmlwdGlvbjoiRm9yY2Ugb25lIG9yIHR3byBwYWdlIGJyZWFrcyBiZWZvcmUvYWZ0ZXIgdGhlIGdlbmVyYXRlZCBib3ggc28gdGhhdCB0aGUgbmV4dCBwYWdlIGlzIGZvcm1hdHRlZCBhcyBhIHJpZ2h0IHBhZ2UuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiRGVzY3JpYmVzIHRoZSBwYWdlL2NvbHVtbiBicmVhayBiZWhhdmlvciBiZWZvcmUgdGhlIGdlbmVyYXRlZCBib3guIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiItd2Via2l0LWJyZWFrLWJlZm9yZSIsYnJvd3NlcnM6WyJTNyJdLHZhbHVlczpbe25hbWU6ImFsd2F5cyIsZGVzY3JpcHRpb246IkFsd2F5cyBmb3JjZSBhIHBhZ2UgYnJlYWsgYmVmb3JlL2FmdGVyIHRoZSBnZW5lcmF0ZWQgYm94LiJ9LHtuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiTmVpdGhlciBmb3JjZSBub3IgZm9yYmlkIGEgcGFnZS9jb2x1bW4gYnJlYWsgYmVmb3JlL2FmdGVyIHRoZSBnZW5lcmF0ZWQgYm94LiJ9LHtuYW1lOiJhdm9pZCIsZGVzY3JpcHRpb246IkF2b2lkIGEgcGFnZS9jb2x1bW4gYnJlYWsgYmVmb3JlL2FmdGVyIHRoZSBnZW5lcmF0ZWQgYm94LiJ9LHtuYW1lOiJhdm9pZC1jb2x1bW4iLGRlc2NyaXB0aW9uOiJBdm9pZCBhIGNvbHVtbiBicmVhayBiZWZvcmUvYWZ0ZXIgdGhlIGdlbmVyYXRlZCBib3guIn0se25hbWU6ImF2b2lkLXBhZ2UiLGRlc2NyaXB0aW9uOiJBdm9pZCBhIHBhZ2UgYnJlYWsgYmVmb3JlL2FmdGVyIHRoZSBnZW5lcmF0ZWQgYm94LiJ9LHtuYW1lOiJhdm9pZC1yZWdpb24ifSx7bmFtZToiY29sdW1uIixkZXNjcmlwdGlvbjoiQWx3YXlzIGZvcmNlIGEgY29sdW1uIGJyZWFrIGJlZm9yZS9hZnRlciB0aGUgZ2VuZXJhdGVkIGJveC4ifSx7bmFtZToibGVmdCIsZGVzY3JpcHRpb246IkZvcmNlIG9uZSBvciB0d28gcGFnZSBicmVha3MgYmVmb3JlL2FmdGVyIHRoZSBnZW5lcmF0ZWQgYm94IHNvIHRoYXQgdGhlIG5leHQgcGFnZSBpcyBmb3JtYXR0ZWQgYXMgYSBsZWZ0IHBhZ2UuIn0se25hbWU6InBhZ2UiLGRlc2NyaXB0aW9uOiJBbHdheXMgZm9yY2UgYSBwYWdlIGJyZWFrIGJlZm9yZS9hZnRlciB0aGUgZ2VuZXJhdGVkIGJveC4ifSx7bmFtZToicmVnaW9uIn0se25hbWU6InJpZ2h0IixkZXNjcmlwdGlvbjoiRm9yY2Ugb25lIG9yIHR3byBwYWdlIGJyZWFrcyBiZWZvcmUvYWZ0ZXIgdGhlIGdlbmVyYXRlZCBib3ggc28gdGhhdCB0aGUgbmV4dCBwYWdlIGlzIGZvcm1hdHRlZCBhcyBhIHJpZ2h0IHBhZ2UuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiRGVzY3JpYmVzIHRoZSBwYWdlL2NvbHVtbiBicmVhayBiZWhhdmlvciBiZWZvcmUgdGhlIGdlbmVyYXRlZCBib3guIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiItd2Via2l0LWJyZWFrLWluc2lkZSIsYnJvd3NlcnM6WyJTNyJdLHZhbHVlczpbe25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJOZWl0aGVyIGZvcmNlIG5vciBmb3JiaWQgYSBwYWdlL2NvbHVtbiBicmVhayBpbnNpZGUgdGhlIGdlbmVyYXRlZCBib3guIn0se25hbWU6ImF2b2lkIixkZXNjcmlwdGlvbjoiQXZvaWQgYSBwYWdlL2NvbHVtbiBicmVhayBpbnNpZGUgdGhlIGdlbmVyYXRlZCBib3guIn0se25hbWU6ImF2b2lkLWNvbHVtbiIsZGVzY3JpcHRpb246IkF2b2lkIGEgY29sdW1uIGJyZWFrIGluc2lkZSB0aGUgZ2VuZXJhdGVkIGJveC4ifSx7bmFtZToiYXZvaWQtcGFnZSIsZGVzY3JpcHRpb246IkF2b2lkIGEgcGFnZSBicmVhayBpbnNpZGUgdGhlIGdlbmVyYXRlZCBib3guIn0se25hbWU6ImF2b2lkLXJlZ2lvbiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkRlc2NyaWJlcyB0aGUgcGFnZS9jb2x1bW4gYnJlYWsgYmVoYXZpb3IgaW5zaWRlIHRoZSBnZW5lcmF0ZWQgYm94LiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiLXdlYmtpdC1jb2x1bW4tYnJlYWstYWZ0ZXIiLGJyb3dzZXJzOlsiRTgwIiwiUzEzLjEiLCJDODAiLCJPNjciXSx2YWx1ZXM6W3tuYW1lOiJhbHdheXMiLGRlc2NyaXB0aW9uOiJBbHdheXMgZm9yY2UgYSBwYWdlIGJyZWFrIGJlZm9yZS9hZnRlciB0aGUgZ2VuZXJhdGVkIGJveC4ifSx7bmFtZToiYXV0byIsZGVzY3JpcHRpb246Ik5laXRoZXIgZm9yY2Ugbm9yIGZvcmJpZCBhIHBhZ2UvY29sdW1uIGJyZWFrIGJlZm9yZS9hZnRlciB0aGUgZ2VuZXJhdGVkIGJveC4ifSx7bmFtZToiYXZvaWQiLGRlc2NyaXB0aW9uOiJBdm9pZCBhIHBhZ2UvY29sdW1uIGJyZWFrIGJlZm9yZS9hZnRlciB0aGUgZ2VuZXJhdGVkIGJveC4ifSx7bmFtZToiYXZvaWQtY29sdW1uIixkZXNjcmlwdGlvbjoiQXZvaWQgYSBjb2x1bW4gYnJlYWsgYmVmb3JlL2FmdGVyIHRoZSBnZW5lcmF0ZWQgYm94LiJ9LHtuYW1lOiJhdm9pZC1wYWdlIixkZXNjcmlwdGlvbjoiQXZvaWQgYSBwYWdlIGJyZWFrIGJlZm9yZS9hZnRlciB0aGUgZ2VuZXJhdGVkIGJveC4ifSx7bmFtZToiYXZvaWQtcmVnaW9uIn0se25hbWU6ImNvbHVtbiIsZGVzY3JpcHRpb246IkFsd2F5cyBmb3JjZSBhIGNvbHVtbiBicmVhayBiZWZvcmUvYWZ0ZXIgdGhlIGdlbmVyYXRlZCBib3guIn0se25hbWU6ImxlZnQiLGRlc2NyaXB0aW9uOiJGb3JjZSBvbmUgb3IgdHdvIHBhZ2UgYnJlYWtzIGJlZm9yZS9hZnRlciB0aGUgZ2VuZXJhdGVkIGJveCBzbyB0aGF0IHRoZSBuZXh0IHBhZ2UgaXMgZm9ybWF0dGVkIGFzIGEgbGVmdCBwYWdlLiJ9LHtuYW1lOiJwYWdlIixkZXNjcmlwdGlvbjoiQWx3YXlzIGZvcmNlIGEgcGFnZSBicmVhayBiZWZvcmUvYWZ0ZXIgdGhlIGdlbmVyYXRlZCBib3guIn0se25hbWU6InJlZ2lvbiJ9LHtuYW1lOiJyaWdodCIsZGVzY3JpcHRpb246IkZvcmNlIG9uZSBvciB0d28gcGFnZSBicmVha3MgYmVmb3JlL2FmdGVyIHRoZSBnZW5lcmF0ZWQgYm94IHNvIHRoYXQgdGhlIG5leHQgcGFnZSBpcyBmb3JtYXR0ZWQgYXMgYSByaWdodCBwYWdlLiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkRlc2NyaWJlcyB0aGUgcGFnZS9jb2x1bW4gYnJlYWsgYmVoYXZpb3IgYmVmb3JlIHRoZSBnZW5lcmF0ZWQgYm94LiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiLXdlYmtpdC1jb2x1bW4tYnJlYWstYmVmb3JlIixicm93c2VyczpbIkU4MCIsIlMxMy4xIiwiQzgwIiwiTzY3Il0sdmFsdWVzOlt7bmFtZToiYWx3YXlzIixkZXNjcmlwdGlvbjoiQWx3YXlzIGZvcmNlIGEgcGFnZSBicmVhayBiZWZvcmUvYWZ0ZXIgdGhlIGdlbmVyYXRlZCBib3guIn0se25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJOZWl0aGVyIGZvcmNlIG5vciBmb3JiaWQgYSBwYWdlL2NvbHVtbiBicmVhayBiZWZvcmUvYWZ0ZXIgdGhlIGdlbmVyYXRlZCBib3guIn0se25hbWU6ImF2b2lkIixkZXNjcmlwdGlvbjoiQXZvaWQgYSBwYWdlL2NvbHVtbiBicmVhayBiZWZvcmUvYWZ0ZXIgdGhlIGdlbmVyYXRlZCBib3guIn0se25hbWU6ImF2b2lkLWNvbHVtbiIsZGVzY3JpcHRpb246IkF2b2lkIGEgY29sdW1uIGJyZWFrIGJlZm9yZS9hZnRlciB0aGUgZ2VuZXJhdGVkIGJveC4ifSx7bmFtZToiYXZvaWQtcGFnZSIsZGVzY3JpcHRpb246IkF2b2lkIGEgcGFnZSBicmVhayBiZWZvcmUvYWZ0ZXIgdGhlIGdlbmVyYXRlZCBib3guIn0se25hbWU6ImF2b2lkLXJlZ2lvbiJ9LHtuYW1lOiJjb2x1bW4iLGRlc2NyaXB0aW9uOiJBbHdheXMgZm9yY2UgYSBjb2x1bW4gYnJlYWsgYmVmb3JlL2FmdGVyIHRoZSBnZW5lcmF0ZWQgYm94LiJ9LHtuYW1lOiJsZWZ0IixkZXNjcmlwdGlvbjoiRm9yY2Ugb25lIG9yIHR3byBwYWdlIGJyZWFrcyBiZWZvcmUvYWZ0ZXIgdGhlIGdlbmVyYXRlZCBib3ggc28gdGhhdCB0aGUgbmV4dCBwYWdlIGlzIGZvcm1hdHRlZCBhcyBhIGxlZnQgcGFnZS4ifSx7bmFtZToicGFnZSIsZGVzY3JpcHRpb246IkFsd2F5cyBmb3JjZSBhIHBhZ2UgYnJlYWsgYmVmb3JlL2FmdGVyIHRoZSBnZW5lcmF0ZWQgYm94LiJ9LHtuYW1lOiJyZWdpb24ifSx7bmFtZToicmlnaHQiLGRlc2NyaXB0aW9uOiJGb3JjZSBvbmUgb3IgdHdvIHBhZ2UgYnJlYWtzIGJlZm9yZS9hZnRlciB0aGUgZ2VuZXJhdGVkIGJveCBzbyB0aGF0IHRoZSBuZXh0IHBhZ2UgaXMgZm9ybWF0dGVkIGFzIGEgcmlnaHQgcGFnZS4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJEZXNjcmliZXMgdGhlIHBhZ2UvY29sdW1uIGJyZWFrIGJlaGF2aW9yIGJlZm9yZSB0aGUgZ2VuZXJhdGVkIGJveC4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii13ZWJraXQtY29sdW1uLWJyZWFrLWluc2lkZSIsYnJvd3NlcnM6WyJFODAiLCJTMTMuMSIsIkM4MCIsIk82NyJdLHZhbHVlczpbe25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJOZWl0aGVyIGZvcmNlIG5vciBmb3JiaWQgYSBwYWdlL2NvbHVtbiBicmVhayBpbnNpZGUgdGhlIGdlbmVyYXRlZCBib3guIn0se25hbWU6ImF2b2lkIixkZXNjcmlwdGlvbjoiQXZvaWQgYSBwYWdlL2NvbHVtbiBicmVhayBpbnNpZGUgdGhlIGdlbmVyYXRlZCBib3guIn0se25hbWU6ImF2b2lkLWNvbHVtbiIsZGVzY3JpcHRpb246IkF2b2lkIGEgY29sdW1uIGJyZWFrIGluc2lkZSB0aGUgZ2VuZXJhdGVkIGJveC4ifSx7bmFtZToiYXZvaWQtcGFnZSIsZGVzY3JpcHRpb246IkF2b2lkIGEgcGFnZSBicmVhayBpbnNpZGUgdGhlIGdlbmVyYXRlZCBib3guIn0se25hbWU6ImF2b2lkLXJlZ2lvbiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkRlc2NyaWJlcyB0aGUgcGFnZS9jb2x1bW4gYnJlYWsgYmVoYXZpb3IgaW5zaWRlIHRoZSBnZW5lcmF0ZWQgYm94LiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiLXdlYmtpdC1jb2x1bW4tY291bnQiLGJyb3dzZXJzOlsiQyIsIlMzIl0sdmFsdWVzOlt7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IkRldGVybWluZXMgdGhlIG51bWJlciBvZiBjb2x1bW5zIGJ5IHRoZSAnY29sdW1uLXdpZHRoJyBwcm9wZXJ0eSBhbmQgdGhlIGVsZW1lbnQgd2lkdGguIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiRGVzY3JpYmVzIHRoZSBvcHRpbWFsIG51bWJlciBvZiBjb2x1bW5zIGludG8gd2hpY2ggdGhlIGNvbnRlbnQgb2YgdGhlIGVsZW1lbnQgd2lsbCBiZSBmbG93ZWQuIixyZXN0cmljdGlvbnM6WyJpbnRlZ2VyIl19LHtuYW1lOiItd2Via2l0LWNvbHVtbi1nYXAiLGJyb3dzZXJzOlsiQyIsIlMzIl0sdmFsdWVzOlt7bmFtZToibm9ybWFsIixkZXNjcmlwdGlvbjoiVXNlciBhZ2VudCBzcGVjaWZpYyBhbmQgdHlwaWNhbGx5IGVxdWl2YWxlbnQgdG8gMWVtLiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlNldHMgdGhlIGdhcCBiZXR3ZWVuIGNvbHVtbnMuIElmIHRoZXJlIGlzIGEgY29sdW1uIHJ1bGUgYmV0d2VlbiBjb2x1bW5zLCBpdCB3aWxsIGFwcGVhciBpbiB0aGUgbWlkZGxlIG9mIHRoZSBnYXAuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiXX0se25hbWU6Ii13ZWJraXQtY29sdW1uLXJ1bGUiLGJyb3dzZXJzOlsiQyIsIlMzIl0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJUaGlzIHByb3BlcnR5IGlzIGEgc2hvcnRoYW5kIGZvciBzZXR0aW5nICdjb2x1bW4tcnVsZS13aWR0aCcsICdjb2x1bW4tcnVsZS1zdHlsZScsIGFuZCAnY29sdW1uLXJ1bGUtY29sb3InIGF0IHRoZSBzYW1lIHBsYWNlIGluIHRoZSBzdHlsZSBzaGVldC4gT21pdHRlZCB2YWx1ZXMgYXJlIHNldCB0byB0aGVpciBpbml0aWFsIHZhbHVlcy4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsImxpbmUtd2lkdGgiLCJsaW5lLXN0eWxlIiwiY29sb3IiXX0se25hbWU6Ii13ZWJraXQtY29sdW1uLXJ1bGUtY29sb3IiLGJyb3dzZXJzOlsiQyIsIlMzIl0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJTZXRzIHRoZSBjb2xvciBvZiB0aGUgY29sdW1uIHJ1bGUiLHJlc3RyaWN0aW9uczpbImNvbG9yIl19LHtuYW1lOiItd2Via2l0LWNvbHVtbi1ydWxlLXN0eWxlIixicm93c2VyczpbIkMiLCJTMyJdLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiU2V0cyB0aGUgc3R5bGUgb2YgdGhlIHJ1bGUgYmV0d2VlbiBjb2x1bW5zIG9mIGFuIGVsZW1lbnQuIixyZXN0cmljdGlvbnM6WyJsaW5lLXN0eWxlIl19LHtuYW1lOiItd2Via2l0LWNvbHVtbi1ydWxlLXdpZHRoIixicm93c2VyczpbIkMiLCJTMyJdLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiU2V0cyB0aGUgd2lkdGggb2YgdGhlIHJ1bGUgYmV0d2VlbiBjb2x1bW5zLiBOZWdhdGl2ZSB2YWx1ZXMgYXJlIG5vdCBhbGxvd2VkLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwibGluZS13aWR0aCJdfSx7bmFtZToiLXdlYmtpdC1jb2x1bW5zIixicm93c2VyczpbIkMiLCJTMyJdLHZhbHVlczpbe25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJUaGUgd2lkdGggZGVwZW5kcyBvbiB0aGUgdmFsdWVzIG9mIG90aGVyIHByb3BlcnRpZXMuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiQSBzaG9ydGhhbmQgcHJvcGVydHkgd2hpY2ggc2V0cyBib3RoICdjb2x1bW4td2lkdGgnIGFuZCAnY29sdW1uLWNvdW50Jy4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsImludGVnZXIiXX0se25hbWU6Ii13ZWJraXQtY29sdW1uLXNwYW4iLGJyb3dzZXJzOlsiQyIsIlMzIl0sdmFsdWVzOlt7bmFtZToiYWxsIixkZXNjcmlwdGlvbjoiVGhlIGVsZW1lbnQgc3BhbnMgYWNyb3NzIGFsbCBjb2x1bW5zLiBDb250ZW50IGluIHRoZSBub3JtYWwgZmxvdyB0aGF0IGFwcGVhcnMgYmVmb3JlIHRoZSBlbGVtZW50IGlzIGF1dG9tYXRpY2FsbHkgYmFsYW5jZWQgYWNyb3NzIGFsbCBjb2x1bW5zIGJlZm9yZSB0aGUgZWxlbWVudCBhcHBlYXIuIn0se25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJUaGUgZWxlbWVudCBkb2VzIG5vdCBzcGFuIG11bHRpcGxlIGNvbHVtbnMuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiRGVzY3JpYmVzIHRoZSBwYWdlL2NvbHVtbiBicmVhayBiZWhhdmlvciBhZnRlciB0aGUgZ2VuZXJhdGVkIGJveC4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii13ZWJraXQtY29sdW1uLXdpZHRoIixicm93c2VyczpbIkMiLCJTMyJdLHZhbHVlczpbe25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJUaGUgd2lkdGggZGVwZW5kcyBvbiB0aGUgdmFsdWVzIG9mIG90aGVyIHByb3BlcnRpZXMuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiVGhpcyBwcm9wZXJ0eSBkZXNjcmliZXMgdGhlIHdpZHRoIG9mIGNvbHVtbnMgaW4gbXVsdGljb2wgZWxlbWVudHMuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiXX0se25hbWU6Ii13ZWJraXQtZmlsdGVyIixicm93c2VyczpbIkMxOCIsIk8xNSIsIlM2Il0sdmFsdWVzOlt7bmFtZToibm9uZSIsZGVzY3JpcHRpb246Ik5vIGZpbHRlciBlZmZlY3RzIGFyZSBhcHBsaWVkLiJ9LHtuYW1lOiJibHVyKCkiLGRlc2NyaXB0aW9uOiJBcHBsaWVzIGEgR2F1c3NpYW4gYmx1ciB0byB0aGUgaW5wdXQgaW1hZ2UuIn0se25hbWU6ImJyaWdodG5lc3MoKSIsZGVzY3JpcHRpb246IkFwcGxpZXMgYSBsaW5lYXIgbXVsdGlwbGllciB0byBpbnB1dCBpbWFnZSwgbWFraW5nIGl0IGFwcGVhciBtb3JlIG9yIGxlc3MgYnJpZ2h0LiJ9LHtuYW1lOiJjb250cmFzdCgpIixkZXNjcmlwdGlvbjoiQWRqdXN0cyB0aGUgY29udHJhc3Qgb2YgdGhlIGlucHV0LiJ9LHtuYW1lOiJkcm9wLXNoYWRvdygpIixkZXNjcmlwdGlvbjoiQXBwbGllcyBhIGRyb3Agc2hhZG93IGVmZmVjdCB0byB0aGUgaW5wdXQgaW1hZ2UuIn0se25hbWU6ImdyYXlzY2FsZSgpIixkZXNjcmlwdGlvbjoiQ29udmVydHMgdGhlIGlucHV0IGltYWdlIHRvIGdyYXlzY2FsZS4ifSx7bmFtZToiaHVlLXJvdGF0ZSgpIixkZXNjcmlwdGlvbjoiQXBwbGllcyBhIGh1ZSByb3RhdGlvbiBvbiB0aGUgaW5wdXQgaW1hZ2UuICJ9LHtuYW1lOiJpbnZlcnQoKSIsZGVzY3JpcHRpb246IkludmVydHMgdGhlIHNhbXBsZXMgaW4gdGhlIGlucHV0IGltYWdlLiJ9LHtuYW1lOiJvcGFjaXR5KCkiLGRlc2NyaXB0aW9uOiJBcHBsaWVzIHRyYW5zcGFyZW5jeSB0byB0aGUgc2FtcGxlcyBpbiB0aGUgaW5wdXQgaW1hZ2UuIn0se25hbWU6InNhdHVyYXRlKCkiLGRlc2NyaXB0aW9uOiJTYXR1cmF0ZXMgdGhlIGlucHV0IGltYWdlLiJ9LHtuYW1lOiJzZXBpYSgpIixkZXNjcmlwdGlvbjoiQ29udmVydHMgdGhlIGlucHV0IGltYWdlIHRvIHNlcGlhLiJ9LHtuYW1lOiJ1cmwoKSIsZGVzY3JpcHRpb246IkEgZmlsdGVyIHJlZmVyZW5jZSB0byBhIDxmaWx0ZXI+IGVsZW1lbnQuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiUHJvY2Vzc2VzIGFuIGVsZW1lbnQncyByZW5kZXJpbmcgYmVmb3JlIGl0IGlzIGRpc3BsYXllZCBpbiB0aGUgZG9jdW1lbnQsIGJ5IGFwcGx5aW5nIG9uZSBvciBtb3JlIGZpbHRlciBlZmZlY3RzLiIscmVzdHJpY3Rpb25zOlsiZW51bSIsInVybCJdfSx7bmFtZToiLXdlYmtpdC1mbG93LWZyb20iLGJyb3dzZXJzOlsiUzYuMSJdLHZhbHVlczpbe25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJUaGUgYmxvY2sgY29udGFpbmVyIGlzIG5vdCBhIENTUyBSZWdpb24uIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiTWFrZXMgYSBibG9jayBjb250YWluZXIgYSByZWdpb24gYW5kIGFzc29jaWF0ZXMgaXQgd2l0aCBhIG5hbWVkIGZsb3cuIixyZXN0cmljdGlvbnM6WyJpZGVudGlmaWVyIl19LHtuYW1lOiItd2Via2l0LWZsb3ctaW50byIsYnJvd3NlcnM6WyJTNi4xIl0sdmFsdWVzOlt7bmFtZToibm9uZSIsZGVzY3JpcHRpb246IlRoZSBlbGVtZW50IGlzIG5vdCBtb3ZlZCB0byBhIG5hbWVkIGZsb3cgYW5kIG5vcm1hbCBDU1MgcHJvY2Vzc2luZyB0YWtlcyBwbGFjZS4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJQbGFjZXMgYW4gZWxlbWVudCBvciBpdHMgY29udGVudHMgaW50byBhIG5hbWVkIGZsb3cuIixyZXN0cmljdGlvbnM6WyJpZGVudGlmaWVyIl19LHtuYW1lOiItd2Via2l0LWZvbnQtZmVhdHVyZS1zZXR0aW5ncyIsYnJvd3NlcnM6WyJDMTYiXSx2YWx1ZXM6W3tuYW1lOiciYzJjcyInfSx7bmFtZTonImRsaWciJ30se25hbWU6JyJrZXJuIid9LHtuYW1lOicibGlnYSInfSx7bmFtZTonImxudW0iJ30se25hbWU6JyJvbnVtIid9LHtuYW1lOicic21jcCInfSx7bmFtZTonInN3c2giJ30se25hbWU6JyJ0bnVtIid9LHtuYW1lOiJub3JtYWwiLGRlc2NyaXB0aW9uOiJObyBjaGFuZ2UgaW4gZ2x5cGggc3Vic3RpdHV0aW9uIG9yIHBvc2l0aW9uaW5nIG9jY3Vycy4ifSx7bmFtZToib2ZmIn0se25hbWU6Im9uIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiVGhpcyBwcm9wZXJ0eSBwcm92aWRlcyBsb3ctbGV2ZWwgY29udHJvbCBvdmVyIE9wZW5UeXBlIGZvbnQgZmVhdHVyZXMuIEl0IGlzIGludGVuZGVkIGFzIGEgd2F5IG9mIHByb3ZpZGluZyBhY2Nlc3MgdG8gZm9udCBmZWF0dXJlcyB0aGF0IGFyZSBub3Qgd2lkZWx5IHVzZWQgYnV0IGFyZSBuZWVkZWQgZm9yIGEgcGFydGljdWxhciB1c2UgY2FzZS4iLHJlc3RyaWN0aW9uczpbInN0cmluZyIsImludGVnZXIiXX0se25hbWU6Ii13ZWJraXQtaHlwaGVucyIsYnJvd3NlcnM6WyJTNS4xIl0sdmFsdWVzOlt7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IkNvbmRpdGlvbmFsIGh5cGhlbmF0aW9uIGNoYXJhY3RlcnMgaW5zaWRlIGEgd29yZCwgaWYgcHJlc2VudCwgdGFrZSBwcmlvcml0eSBvdmVyIGF1dG9tYXRpYyByZXNvdXJjZXMgd2hlbiBkZXRlcm1pbmluZyBoeXBoZW5hdGlvbiBwb2ludHMgd2l0aGluIHRoZSB3b3JkLiJ9LHtuYW1lOiJtYW51YWwiLGRlc2NyaXB0aW9uOiJXb3JkcyBhcmUgb25seSBicm9rZW4gYXQgbGluZSBicmVha3Mgd2hlcmUgdGhlcmUgYXJlIGNoYXJhY3RlcnMgaW5zaWRlIHRoZSB3b3JkIHRoYXQgc3VnZ2VzdCBsaW5lIGJyZWFrIG9wcG9ydHVuaXRpZXMifSx7bmFtZToibm9uZSIsZGVzY3JpcHRpb246IldvcmRzIGFyZSBub3QgYnJva2VuIGF0IGxpbmUgYnJlYWtzLCBldmVuIGlmIGNoYXJhY3RlcnMgaW5zaWRlIHRoZSB3b3JkIHN1Z2dlc3QgbGluZSBicmVhayBwb2ludHMuIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiQ29udHJvbHMgd2hldGhlciBoeXBoZW5hdGlvbiBpcyBhbGxvd2VkIHRvIGNyZWF0ZSBtb3JlIGJyZWFrIG9wcG9ydHVuaXRpZXMgd2l0aGluIGEgbGluZSBvZiB0ZXh0LiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiLXdlYmtpdC1saW5lLWJyZWFrIixicm93c2VyczpbIkMiLCJTMyJdLHZhbHVlczpbe25hbWU6ImFmdGVyLXdoaXRlLXNwYWNlIn0se25hbWU6Im5vcm1hbCJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlNwZWNpZmllcyBsaW5lLWJyZWFraW5nIHJ1bGVzIGZvciBDSksgKENoaW5lc2UsIEphcGFuZXNlLCBhbmQgS29yZWFuKSB0ZXh0LiJ9LHtuYW1lOiItd2Via2l0LW1hcmdpbi1ib3R0b20tY29sbGFwc2UiLGJyb3dzZXJzOlsiQyIsIlMzIl0sdmFsdWVzOlt7bmFtZToiY29sbGFwc2UifSx7bmFtZToiZGlzY2FyZCJ9LHtuYW1lOiJzZXBhcmF0ZSJ9XSxyZWxldmFuY2U6NTAscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiLXdlYmtpdC1tYXJnaW4tY29sbGFwc2UiLGJyb3dzZXJzOlsiQyIsIlMzIl0sdmFsdWVzOlt7bmFtZToiY29sbGFwc2UifSx7bmFtZToiZGlzY2FyZCJ9LHtuYW1lOiJzZXBhcmF0ZSJ9XSxyZWxldmFuY2U6NTAscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiLXdlYmtpdC1tYXJnaW4tc3RhcnQiLGJyb3dzZXJzOlsiQyIsIlMzIl0sdmFsdWVzOlt7bmFtZToiYXV0byJ9XSxyZWxldmFuY2U6NTAscmVzdHJpY3Rpb25zOlsicGVyY2VudGFnZSIsImxlbmd0aCJdfSx7bmFtZToiLXdlYmtpdC1tYXJnaW4tdG9wLWNvbGxhcHNlIixicm93c2VyczpbIkMiLCJTMyJdLHZhbHVlczpbe25hbWU6ImNvbGxhcHNlIn0se25hbWU6ImRpc2NhcmQifSx7bmFtZToic2VwYXJhdGUifV0scmVsZXZhbmNlOjUwLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii13ZWJraXQtbWFzay1jbGlwIixicm93c2VyczpbIkMiLCJPMTUiLCJTNCJdLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoiWyA8Ym94PiB8IGJvcmRlciB8IHBhZGRpbmcgfCBjb250ZW50IHwgdGV4dCBdIyIscmVsZXZhbmNlOjAsZGVzY3JpcHRpb246IkRldGVybWluZXMgdGhlIG1hc2sgcGFpbnRpbmcgYXJlYSwgd2hpY2ggZGV0ZXJtaW5lcyB0aGUgYXJlYSB0aGF0IGlzIGFmZmVjdGVkIGJ5IHRoZSBtYXNrLiIscmVzdHJpY3Rpb25zOlsiYm94Il19LHtuYW1lOiItd2Via2l0LW1hc2staW1hZ2UiLGJyb3dzZXJzOlsiQyIsIk8xNSIsIlM0Il0sdmFsdWVzOlt7bmFtZToibm9uZSIsZGVzY3JpcHRpb246IkNvdW50cyBhcyBhIHRyYW5zcGFyZW50IGJsYWNrIGltYWdlIGxheWVyLiJ9LHtuYW1lOiJ1cmwoKSIsZGVzY3JpcHRpb246IlJlZmVyZW5jZSB0byBhIDxtYXNrIGVsZW1lbnQgb3IgdG8gYSBDU1MgaW1hZ2UuIn1dLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoiPG1hc2stcmVmZXJlbmNlPiMiLHJlbGV2YW5jZTowLGRlc2NyaXB0aW9uOiJTZXRzIHRoZSBtYXNrIGxheWVyIGltYWdlIG9mIGFuIGVsZW1lbnQuIixyZXN0cmljdGlvbnM6WyJ1cmwiLCJpbWFnZSIsImVudW0iXX0se25hbWU6Ii13ZWJraXQtbWFzay1vcmlnaW4iLGJyb3dzZXJzOlsiQyIsIk8xNSIsIlM0Il0sc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiJbIDxib3g+IHwgYm9yZGVyIHwgcGFkZGluZyB8IGNvbnRlbnQgXSMiLHJlbGV2YW5jZTowLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgdGhlIG1hc2sgcG9zaXRpb25pbmcgYXJlYS4iLHJlc3RyaWN0aW9uczpbImJveCJdfSx7bmFtZToiLXdlYmtpdC1tYXNrLXJlcGVhdCIsYnJvd3NlcnM6WyJDIiwiTzE1IiwiUzQiXSxzdGF0dXM6Im5vbnN0YW5kYXJkIixzeW50YXg6IjxyZXBlYXQtc3R5bGU+IyIscmVsZXZhbmNlOjAsZGVzY3JpcHRpb246IlNwZWNpZmllcyBob3cgbWFzayBsYXllciBpbWFnZXMgYXJlIHRpbGVkIGFmdGVyIHRoZXkgaGF2ZSBiZWVuIHNpemVkIGFuZCBwb3NpdGlvbmVkLiIscmVzdHJpY3Rpb25zOlsicmVwZWF0Il19LHtuYW1lOiItd2Via2l0LW1hc2stc2l6ZSIsYnJvd3NlcnM6WyJDIiwiTzE1IiwiUzQiXSx2YWx1ZXM6W3tuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiUmVzb2x2ZWQgYnkgdXNpbmcgdGhlIGltYWdlJ3MgaW50cmluc2ljIHJhdGlvIGFuZCB0aGUgc2l6ZSBvZiB0aGUgb3RoZXIgZGltZW5zaW9uLCBvciBmYWlsaW5nIHRoYXQsIHVzaW5nIHRoZSBpbWFnZSdzIGludHJpbnNpYyBzaXplLCBvciBmYWlsaW5nIHRoYXQsIHRyZWF0aW5nIGl0IGFzIDEwMCUuIn0se25hbWU6ImNvbnRhaW4iLGRlc2NyaXB0aW9uOiJTY2FsZSB0aGUgaW1hZ2UsIHdoaWxlIHByZXNlcnZpbmcgaXRzIGludHJpbnNpYyBhc3BlY3QgcmF0aW8gKGlmIGFueSksIHRvIHRoZSBsYXJnZXN0IHNpemUgc3VjaCB0aGF0IGJvdGggaXRzIHdpZHRoIGFuZCBpdHMgaGVpZ2h0IGNhbiBmaXQgaW5zaWRlIHRoZSBiYWNrZ3JvdW5kIHBvc2l0aW9uaW5nIGFyZWEuIn0se25hbWU6ImNvdmVyIixkZXNjcmlwdGlvbjoiU2NhbGUgdGhlIGltYWdlLCB3aGlsZSBwcmVzZXJ2aW5nIGl0cyBpbnRyaW5zaWMgYXNwZWN0IHJhdGlvIChpZiBhbnkpLCB0byB0aGUgc21hbGxlc3Qgc2l6ZSBzdWNoIHRoYXQgYm90aCBpdHMgd2lkdGggYW5kIGl0cyBoZWlnaHQgY2FuIGNvbXBsZXRlbHkgY292ZXIgdGhlIGJhY2tncm91bmQgcG9zaXRpb25pbmcgYXJlYS4ifV0sc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiI8Ymctc2l6ZT4jIixyZWxldmFuY2U6MCxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIHRoZSBzaXplIG9mIHRoZSBtYXNrIGxheWVyIGltYWdlcy4iLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsInBlcmNlbnRhZ2UiLCJlbnVtIl19LHtuYW1lOiItd2Via2l0LW5ic3AtbW9kZSIsYnJvd3NlcnM6WyJTMTMuMSJdLHZhbHVlczpbe25hbWU6Im5vcm1hbCJ9LHtuYW1lOiJzcGFjZSJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkRlZmluZXMgdGhlIGJlaGF2aW9yIG9mIG5vbmJyZWFraW5nIHNwYWNlcyB3aXRoaW4gdGV4dC4ifSx7bmFtZToiLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmciLGJyb3dzZXJzOlsiQyIsIlM1Il0sdmFsdWVzOlt7bmFtZToiYXV0byJ9LHtuYW1lOiJ0b3VjaCJ9XSxzdGF0dXM6Im5vbnN0YW5kYXJkIixzeW50YXg6ImF1dG8gfCB0b3VjaCIscmVsZXZhbmNlOjAscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLy13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nIn1dLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgd2hldGhlciB0byB1c2UgbmF0aXZlLXN0eWxlIHNjcm9sbGluZyBpbiBhbiBvdmVyZmxvdzpzY3JvbGwgZWxlbWVudC4ifSx7bmFtZToiLXdlYmtpdC1wYWRkaW5nLXN0YXJ0Iixicm93c2VyczpbIkMiLCJTMyJdLHJlbGV2YW5jZTo1MCxyZXN0cmljdGlvbnM6WyJwZXJjZW50YWdlIiwibGVuZ3RoIl19LHtuYW1lOiItd2Via2l0LXBlcnNwZWN0aXZlIixicm93c2VyczpbIkMiLCJTNCJdLHZhbHVlczpbe25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJObyBwZXJzcGVjdGl2ZSB0cmFuc2Zvcm0gaXMgYXBwbGllZC4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJBcHBsaWVzIHRoZSBzYW1lIHRyYW5zZm9ybSBhcyB0aGUgcGVyc3BlY3RpdmUoPG51bWJlcj4pIHRyYW5zZm9ybSBmdW5jdGlvbiwgZXhjZXB0IHRoYXQgaXQgYXBwbGllcyBvbmx5IHRvIHRoZSBwb3NpdGlvbmVkIG9yIHRyYW5zZm9ybWVkIGNoaWxkcmVuIG9mIHRoZSBlbGVtZW50LCBub3QgdG8gdGhlIHRyYW5zZm9ybSBvbiB0aGUgZWxlbWVudCBpdHNlbGYuIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiXX0se25hbWU6Ii13ZWJraXQtcGVyc3BlY3RpdmUtb3JpZ2luIixicm93c2VyczpbIkMiLCJTNCJdLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiRXN0YWJsaXNoZXMgdGhlIG9yaWdpbiBmb3IgdGhlIHBlcnNwZWN0aXZlIHByb3BlcnR5LiBJdCBlZmZlY3RpdmVseSBzZXRzIHRoZSBYIGFuZCBZIHBvc2l0aW9uIGF0IHdoaWNoIHRoZSB2aWV3ZXIgYXBwZWFycyB0byBiZSBsb29raW5nIGF0IHRoZSBjaGlsZHJlbiBvZiB0aGUgZWxlbWVudC4iLHJlc3RyaWN0aW9uczpbInBvc2l0aW9uIiwicGVyY2VudGFnZSIsImxlbmd0aCJdfSx7bmFtZToiLXdlYmtpdC1yZWdpb24tZnJhZ21lbnQiLGJyb3dzZXJzOlsiUzciXSx2YWx1ZXM6W3tuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiQ29udGVudCBmbG93cyBhcyBpdCB3b3VsZCBpbiBhIHJlZ3VsYXIgY29udGVudCBib3guIn0se25hbWU6ImJyZWFrIixkZXNjcmlwdGlvbjoiSWYgdGhlIGNvbnRlbnQgZml0cyB3aXRoaW4gdGhlIENTUyBSZWdpb24sIHRoZW4gdGhpcyBwcm9wZXJ0eSBoYXMgbm8gZWZmZWN0LiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlRoZSAncmVnaW9uLWZyYWdtZW50JyBwcm9wZXJ0eSBjb250cm9scyB0aGUgYmVoYXZpb3Igb2YgdGhlIGxhc3QgcmVnaW9uIGFzc29jaWF0ZWQgd2l0aCBhIG5hbWVkIGZsb3cuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiItd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3IiLGJyb3dzZXJzOlsiRTEyIiwiQzE2IiwiTzE1Il0sc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiI8Y29sb3I+IixyZWxldmFuY2U6MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yIn1dLHJlc3RyaWN0aW9uczpbImNvbG9yIl19LHtuYW1lOiItd2Via2l0LXRleHQtZmlsbC1jb2xvciIsYnJvd3NlcnM6WyJFMTIiLCJGRjQ5IiwiUzMiLCJDMSIsIk8xNSJdLHN5bnRheDoiPGNvbG9yPiIscmVsZXZhbmNlOjUwLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy8td2Via2l0LXRleHQtZmlsbC1jb2xvciJ9XSxyZXN0cmljdGlvbnM6WyJjb2xvciJdfSx7bmFtZToiLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0Iixicm93c2VyczpbIkUiLCJDIiwiUzMiXSx2YWx1ZXM6W3tuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiUmVuZGVyZXJzIG11c3QgdXNlIHRoZSBkZWZhdWx0IHNpemUgYWRqdXN0bWVudCB3aGVuIGRpc3BsYXlpbmcgb24gYSBzbWFsbCBkZXZpY2UuIn0se25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJSZW5kZXJlcnMgbXVzdCBub3QgZG8gc2l6ZSBhZGp1c3RtZW50IHdoZW4gZGlzcGxheWluZyBvbiBhIHNtYWxsIGRldmljZS4ifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSBzaXplIGFkanVzdG1lbnQgZm9yIGRpc3BsYXlpbmcgdGV4dCBjb250ZW50IGluIG1vYmlsZSBicm93c2Vycy4iLHJlc3RyaWN0aW9uczpbInBlcmNlbnRhZ2UiXX0se25hbWU6Ii13ZWJraXQtdGV4dC1zdHJva2UiLGJyb3dzZXJzOlsiRTE1IiwiRkY0OSIsIlMzIiwiQzQiLCJPMTUiXSxzeW50YXg6IjxsZW5ndGg+IHx8IDxjb2xvcj4iLHJlbGV2YW5jZTo1MCxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvLXdlYmtpdC10ZXh0LXN0cm9rZSJ9XSxyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJsaW5lLXdpZHRoIiwiY29sb3IiLCJwZXJjZW50YWdlIl19LHtuYW1lOiItd2Via2l0LXRleHQtc3Ryb2tlLWNvbG9yIixicm93c2VyczpbIkUxNSIsIkZGNDkiLCJTMyIsIkMxIiwiTzE1Il0sc3ludGF4OiI8Y29sb3I+IixyZWxldmFuY2U6NTAscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLy13ZWJraXQtdGV4dC1zdHJva2UtY29sb3IifV0scmVzdHJpY3Rpb25zOlsiY29sb3IiXX0se25hbWU6Ii13ZWJraXQtdGV4dC1zdHJva2Utd2lkdGgiLGJyb3dzZXJzOlsiRTE1IiwiRkY0OSIsIlMzIiwiQzEiLCJPMTUiXSxzeW50YXg6IjxsZW5ndGg+IixyZWxldmFuY2U6NTAscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLy13ZWJraXQtdGV4dC1zdHJva2Utd2lkdGgifV0scmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwibGluZS13aWR0aCIsInBlcmNlbnRhZ2UiXX0se25hbWU6Ii13ZWJraXQtdG91Y2gtY2FsbG91dCIsYnJvd3NlcnM6WyJTMyJdLHZhbHVlczpbe25hbWU6Im5vbmUifV0sc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiJkZWZhdWx0IHwgbm9uZSIscmVsZXZhbmNlOjAscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLy13ZWJraXQtdG91Y2gtY2FsbG91dCJ9XSxyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiItd2Via2l0LXRyYW5zZm9ybSIsYnJvd3NlcnM6WyJDIiwiTzEyIiwiUzMuMSJdLHZhbHVlczpbe25hbWU6Im1hdHJpeCgpIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgMkQgdHJhbnNmb3JtYXRpb24gaW4gdGhlIGZvcm0gb2YgYSB0cmFuc2Zvcm1hdGlvbiBtYXRyaXggb2Ygc2l4IHZhbHVlcy4gbWF0cml4KGEsYixjLGQsZSxmKSBpcyBlcXVpdmFsZW50IHRvIGFwcGx5aW5nIHRoZSB0cmFuc2Zvcm1hdGlvbiBtYXRyaXggW2EgYiBjIGQgZSBmXSJ9LHtuYW1lOiJtYXRyaXgzZCgpIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgM0QgdHJhbnNmb3JtYXRpb24gYXMgYSA0eDQgaG9tb2dlbmVvdXMgbWF0cml4IG9mIDE2IHZhbHVlcyBpbiBjb2x1bW4tbWFqb3Igb3JkZXIuIn0se25hbWU6Im5vbmUifSx7bmFtZToicGVyc3BlY3RpdmUoKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIHBlcnNwZWN0aXZlIHByb2plY3Rpb24gbWF0cml4LiJ9LHtuYW1lOiJyb3RhdGUoKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIDJEIHJvdGF0aW9uIGJ5IHRoZSBhbmdsZSBzcGVjaWZpZWQgaW4gdGhlIHBhcmFtZXRlciBhYm91dCB0aGUgb3JpZ2luIG9mIHRoZSBlbGVtZW50LCBhcyBkZWZpbmVkIGJ5IHRoZSB0cmFuc2Zvcm0tb3JpZ2luIHByb3BlcnR5LiJ9LHtuYW1lOiJyb3RhdGUzZCgpIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgY2xvY2t3aXNlIDNEIHJvdGF0aW9uIGJ5IHRoZSBhbmdsZSBzcGVjaWZpZWQgaW4gbGFzdCBwYXJhbWV0ZXIgYWJvdXQgdGhlIFt4LHksel0gZGlyZWN0aW9uIHZlY3RvciBkZXNjcmliZWQgYnkgdGhlIGZpcnN0IDMgcGFyYW1ldGVycy4ifSx7bmFtZToicm90YXRlWCgnYW5nbGUnKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIGNsb2Nrd2lzZSByb3RhdGlvbiBieSB0aGUgZ2l2ZW4gYW5nbGUgYWJvdXQgdGhlIFggYXhpcy4ifSx7bmFtZToicm90YXRlWSgnYW5nbGUnKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIGNsb2Nrd2lzZSByb3RhdGlvbiBieSB0aGUgZ2l2ZW4gYW5nbGUgYWJvdXQgdGhlIFkgYXhpcy4ifSx7bmFtZToicm90YXRlWignYW5nbGUnKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIGNsb2Nrd2lzZSByb3RhdGlvbiBieSB0aGUgZ2l2ZW4gYW5nbGUgYWJvdXQgdGhlIFogYXhpcy4ifSx7bmFtZToic2NhbGUoKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIDJEIHNjYWxlIG9wZXJhdGlvbiBieSB0aGUgW3N4LHN5XSBzY2FsaW5nIHZlY3RvciBkZXNjcmliZWQgYnkgdGhlIDIgcGFyYW1ldGVycy4gSWYgdGhlIHNlY29uZCBwYXJhbWV0ZXIgaXMgbm90IHByb3ZpZGVkLCBpdCBpcyB0YWtlcyBhIHZhbHVlIGVxdWFsIHRvIHRoZSBmaXJzdC4ifSx7bmFtZToic2NhbGUzZCgpIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgM0Qgc2NhbGUgb3BlcmF0aW9uIGJ5IHRoZSBbc3gsc3ksc3pdIHNjYWxpbmcgdmVjdG9yIGRlc2NyaWJlZCBieSB0aGUgMyBwYXJhbWV0ZXJzLiJ9LHtuYW1lOiJzY2FsZVgoKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIHNjYWxlIG9wZXJhdGlvbiB1c2luZyB0aGUgW3N4LDFdIHNjYWxpbmcgdmVjdG9yLCB3aGVyZSBzeCBpcyBnaXZlbiBhcyB0aGUgcGFyYW1ldGVyLiJ9LHtuYW1lOiJzY2FsZVkoKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIHNjYWxlIG9wZXJhdGlvbiB1c2luZyB0aGUgW3N5LDFdIHNjYWxpbmcgdmVjdG9yLCB3aGVyZSBzeSBpcyBnaXZlbiBhcyB0aGUgcGFyYW1ldGVyLiJ9LHtuYW1lOiJzY2FsZVooKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIHNjYWxlIG9wZXJhdGlvbiB1c2luZyB0aGUgWzEsMSxzel0gc2NhbGluZyB2ZWN0b3IsIHdoZXJlIHN6IGlzIGdpdmVuIGFzIHRoZSBwYXJhbWV0ZXIuIn0se25hbWU6InNrZXcoKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIHNrZXcgdHJhbnNmb3JtYXRpb24gYWxvbmcgdGhlIFggYW5kIFkgYXhlcy4gVGhlIGZpcnN0IGFuZ2xlIHBhcmFtZXRlciBzcGVjaWZpZXMgdGhlIHNrZXcgb24gdGhlIFggYXhpcy4gVGhlIHNlY29uZCBhbmdsZSBwYXJhbWV0ZXIgc3BlY2lmaWVzIHRoZSBza2V3IG9uIHRoZSBZIGF4aXMuIElmIHRoZSBzZWNvbmQgcGFyYW1ldGVyIGlzIG5vdCBnaXZlbiB0aGVuIGEgdmFsdWUgb2YgMCBpcyB1c2VkIGZvciB0aGUgWSBhbmdsZSAoaWU6IG5vIHNrZXcgb24gdGhlIFkgYXhpcykuIn0se25hbWU6InNrZXdYKCkiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSBza2V3IHRyYW5zZm9ybWF0aW9uIGFsb25nIHRoZSBYIGF4aXMgYnkgdGhlIGdpdmVuIGFuZ2xlLiJ9LHtuYW1lOiJza2V3WSgpIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgc2tldyB0cmFuc2Zvcm1hdGlvbiBhbG9uZyB0aGUgWSBheGlzIGJ5IHRoZSBnaXZlbiBhbmdsZS4ifSx7bmFtZToidHJhbnNsYXRlKCkiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSAyRCB0cmFuc2xhdGlvbiBieSB0aGUgdmVjdG9yIFt0eCwgdHldLCB3aGVyZSB0eCBpcyB0aGUgZmlyc3QgdHJhbnNsYXRpb24tdmFsdWUgcGFyYW1ldGVyIGFuZCB0eSBpcyB0aGUgb3B0aW9uYWwgc2Vjb25kIHRyYW5zbGF0aW9uLXZhbHVlIHBhcmFtZXRlci4ifSx7bmFtZToidHJhbnNsYXRlM2QoKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIDNEIHRyYW5zbGF0aW9uIGJ5IHRoZSB2ZWN0b3IgW3R4LHR5LHR6XSwgd2l0aCB0eCwgdHkgYW5kIHR6IGJlaW5nIHRoZSBmaXJzdCwgc2Vjb25kIGFuZCB0aGlyZCB0cmFuc2xhdGlvbi12YWx1ZSBwYXJhbWV0ZXJzIHJlc3BlY3RpdmVseS4ifSx7bmFtZToidHJhbnNsYXRlWCgpIixkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGEgdHJhbnNsYXRpb24gYnkgdGhlIGdpdmVuIGFtb3VudCBpbiB0aGUgWCBkaXJlY3Rpb24uIn0se25hbWU6InRyYW5zbGF0ZVkoKSIsZGVzY3JpcHRpb246IlNwZWNpZmllcyBhIHRyYW5zbGF0aW9uIGJ5IHRoZSBnaXZlbiBhbW91bnQgaW4gdGhlIFkgZGlyZWN0aW9uLiJ9LHtuYW1lOiJ0cmFuc2xhdGVaKCkiLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgYSB0cmFuc2xhdGlvbiBieSB0aGUgZ2l2ZW4gYW1vdW50IGluIHRoZSBaIGRpcmVjdGlvbi4gTm90ZSB0aGF0IHBlcmNlbnRhZ2UgdmFsdWVzIGFyZSBub3QgYWxsb3dlZCBpbiB0aGUgdHJhbnNsYXRlWiB0cmFuc2xhdGlvbi12YWx1ZSwgYW5kIGlmIHByZXNlbnQgYXJlIGV2YWx1YXRlZCBhcyAwLiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkEgdHdvLWRpbWVuc2lvbmFsIHRyYW5zZm9ybWF0aW9uIGlzIGFwcGxpZWQgdG8gYW4gZWxlbWVudCB0aHJvdWdoIHRoZSAndHJhbnNmb3JtJyBwcm9wZXJ0eS4gVGhpcyBwcm9wZXJ0eSBjb250YWlucyBhIGxpc3Qgb2YgdHJhbnNmb3JtIGZ1bmN0aW9ucyBzaW1pbGFyIHRvIHRob3NlIGFsbG93ZWQgYnkgU1ZHLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToiLXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luIixicm93c2VyczpbIkMiLCJPMTUiLCJTMy4xIl0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJFc3RhYmxpc2hlcyB0aGUgb3JpZ2luIG9mIHRyYW5zZm9ybWF0aW9uIGZvciBhbiBlbGVtZW50LiIscmVzdHJpY3Rpb25zOlsicG9zaXRpb24iLCJsZW5ndGgiLCJwZXJjZW50YWdlIl19LHtuYW1lOiItd2Via2l0LXRyYW5zZm9ybS1vcmlnaW4teCIsYnJvd3NlcnM6WyJFODAiLCJTMTMuMSIsIkM4MCIsIk82NyJdLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiVGhlIHggY29vcmRpbmF0ZSBvZiB0aGUgb3JpZ2luIGZvciB0cmFuc2Zvcm1zIGFwcGxpZWQgdG8gYW4gZWxlbWVudCB3aXRoIHJlc3BlY3QgdG8gaXRzIGJvcmRlciBib3guIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJwZXJjZW50YWdlIl19LHtuYW1lOiItd2Via2l0LXRyYW5zZm9ybS1vcmlnaW4teSIsYnJvd3NlcnM6WyJFODAiLCJTMTMuMSIsIkM4MCIsIk82NyJdLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiVGhlIHkgY29vcmRpbmF0ZSBvZiB0aGUgb3JpZ2luIGZvciB0cmFuc2Zvcm1zIGFwcGxpZWQgdG8gYW4gZWxlbWVudCB3aXRoIHJlc3BlY3QgdG8gaXRzIGJvcmRlciBib3guIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJwZXJjZW50YWdlIl19LHtuYW1lOiItd2Via2l0LXRyYW5zZm9ybS1vcmlnaW4teiIsYnJvd3NlcnM6WyJFODAiLCJTMTMuMSIsIkM4MCIsIk82NyJdLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiVGhlIHogY29vcmRpbmF0ZSBvZiB0aGUgb3JpZ2luIGZvciB0cmFuc2Zvcm1zIGFwcGxpZWQgdG8gYW4gZWxlbWVudCB3aXRoIHJlc3BlY3QgdG8gaXRzIGJvcmRlciBib3guIixyZXN0cmljdGlvbnM6WyJsZW5ndGgiLCJwZXJjZW50YWdlIl19LHtuYW1lOiItd2Via2l0LXRyYW5zZm9ybS1zdHlsZSIsYnJvd3NlcnM6WyJDIiwiUzQiXSx2YWx1ZXM6W3tuYW1lOiJmbGF0IixkZXNjcmlwdGlvbjoiQWxsIGNoaWxkcmVuIG9mIHRoaXMgZWxlbWVudCBhcmUgcmVuZGVyZWQgZmxhdHRlbmVkIGludG8gdGhlIDJEIHBsYW5lIG9mIHRoZSBlbGVtZW50LiJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkRlZmluZXMgaG93IG5lc3RlZCBlbGVtZW50cyBhcmUgcmVuZGVyZWQgaW4gM0Qgc3BhY2UuIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiItd2Via2l0LXRyYW5zaXRpb24iLGJyb3dzZXJzOlsiQyIsIk8xMiIsIlM1Il0sdmFsdWVzOlt7bmFtZToiYWxsIixkZXNjcmlwdGlvbjoiRXZlcnkgcHJvcGVydHkgdGhhdCBpcyBhYmxlIHRvIHVuZGVyZ28gYSB0cmFuc2l0aW9uIHdpbGwgZG8gc28uIn0se25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJObyBwcm9wZXJ0eSB3aWxsIHRyYW5zaXRpb24uIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiU2hvcnRoYW5kIHByb3BlcnR5IGNvbWJpbmVzIGZvdXIgb2YgdGhlIHRyYW5zaXRpb24gcHJvcGVydGllcyBpbnRvIGEgc2luZ2xlIHByb3BlcnR5LiIscmVzdHJpY3Rpb25zOlsidGltZSIsInByb3BlcnR5IiwidGltaW5nLWZ1bmN0aW9uIiwiZW51bSJdfSx7bmFtZToiLXdlYmtpdC10cmFuc2l0aW9uLWRlbGF5Iixicm93c2VyczpbIkMiLCJPMTIiLCJTNSJdLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiRGVmaW5lcyB3aGVuIHRoZSB0cmFuc2l0aW9uIHdpbGwgc3RhcnQuIEl0IGFsbG93cyBhIHRyYW5zaXRpb24gdG8gYmVnaW4gZXhlY3V0aW9uIHNvbWUgcGVyaW9kIG9mIHRpbWUgZnJvbSB3aGVuIGl0IGlzIGFwcGxpZWQuIixyZXN0cmljdGlvbnM6WyJ0aW1lIl19LHtuYW1lOiItd2Via2l0LXRyYW5zaXRpb24tZHVyYXRpb24iLGJyb3dzZXJzOlsiQyIsIk8xMiIsIlM1Il0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgaG93IGxvbmcgdGhlIHRyYW5zaXRpb24gZnJvbSB0aGUgb2xkIHZhbHVlIHRvIHRoZSBuZXcgdmFsdWUgc2hvdWxkIHRha2UuIixyZXN0cmljdGlvbnM6WyJ0aW1lIl19LHtuYW1lOiItd2Via2l0LXRyYW5zaXRpb24tcHJvcGVydHkiLGJyb3dzZXJzOlsiQyIsIk8xMiIsIlM1Il0sdmFsdWVzOlt7bmFtZToiYWxsIixkZXNjcmlwdGlvbjoiRXZlcnkgcHJvcGVydHkgdGhhdCBpcyBhYmxlIHRvIHVuZGVyZ28gYSB0cmFuc2l0aW9uIHdpbGwgZG8gc28uIn0se25hbWU6Im5vbmUiLGRlc2NyaXB0aW9uOiJObyBwcm9wZXJ0eSB3aWxsIHRyYW5zaXRpb24uIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIHRoZSBuYW1lIG9mIHRoZSBDU1MgcHJvcGVydHkgdG8gd2hpY2ggdGhlIHRyYW5zaXRpb24gaXMgYXBwbGllZC4iLHJlc3RyaWN0aW9uczpbInByb3BlcnR5Il19LHtuYW1lOiItd2Via2l0LXRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uIixicm93c2VyczpbIkMiLCJPMTIiLCJTNSJdLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiRGVzY3JpYmVzIGhvdyB0aGUgaW50ZXJtZWRpYXRlIHZhbHVlcyB1c2VkIGR1cmluZyBhIHRyYW5zaXRpb24gd2lsbCBiZSBjYWxjdWxhdGVkLiIscmVzdHJpY3Rpb25zOlsidGltaW5nLWZ1bmN0aW9uIl19LHtuYW1lOiItd2Via2l0LXVzZXItZHJhZyIsYnJvd3NlcnM6WyJFODAiLCJTMTMuMSIsIkM4MCIsIk82NyJdLHZhbHVlczpbe25hbWU6ImF1dG8ifSx7bmFtZToiZWxlbWVudCJ9LHtuYW1lOiJub25lIn1dLHJlbGV2YW5jZTo1MCxyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiItd2Via2l0LXVzZXItbW9kaWZ5Iixicm93c2VyczpbIkU4MCIsIlMxMy4xIiwiQzgwIiwiTzY3Il0sdmFsdWVzOlt7bmFtZToicmVhZC1vbmx5In0se25hbWU6InJlYWQtd3JpdGUifSx7bmFtZToicmVhZC13cml0ZS1wbGFpbnRleHQtb25seSJ9XSxzeW50YXg6InJlYWQtb25seSB8IHJlYWQtd3JpdGUgfCByZWFkLXdyaXRlLXBsYWludGV4dC1vbmx5IixyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkRldGVybWluZXMgd2hldGhlciBhIHVzZXIgY2FuIGVkaXQgdGhlIGNvbnRlbnQgb2YgYW4gZWxlbWVudC4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6Ii13ZWJraXQtdXNlci1zZWxlY3QiLGJyb3dzZXJzOlsiQyIsIlMzIl0sdmFsdWVzOlt7bmFtZToiYXV0byJ9LHtuYW1lOiJub25lIn0se25hbWU6InRleHQifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJDb250cm9scyB0aGUgYXBwZWFyYW5jZSBvZiBzZWxlY3Rpb24uIixyZXN0cmljdGlvbnM6WyJlbnVtIl19LHtuYW1lOiJ3aWRvd3MiLGJyb3dzZXJzOlsiRTEyIiwiUzEuMyIsIkMyNSIsIklFOCIsIk85LjIiXSxzeW50YXg6IjxpbnRlZ2VyPiIscmVsZXZhbmNlOjUxLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy93aWRvd3MifV0sZGVzY3JpcHRpb246IlNwZWNpZmllcyB0aGUgbWluaW11bSBudW1iZXIgb2YgbGluZSBib3hlcyBvZiBhIGJsb2NrIGNvbnRhaW5lciB0aGF0IG11c3QgYmUgbGVmdCBpbiBhIGZyYWdtZW50IGFmdGVyIGEgYnJlYWsuIixyZXN0cmljdGlvbnM6WyJpbnRlZ2VyIl19LHtuYW1lOiJ3aWR0aCIsYnJvd3NlcnM6WyJFMTIiLCJGRjEiLCJTMSIsIkMxIiwiSUU0IiwiTzMuNSJdLHZhbHVlczpbe25hbWU6ImF1dG8iLGRlc2NyaXB0aW9uOiJUaGUgd2lkdGggZGVwZW5kcyBvbiB0aGUgdmFsdWVzIG9mIG90aGVyIHByb3BlcnRpZXMuIn0se25hbWU6ImZpdC1jb250ZW50Iixicm93c2VyczpbIkUxMiIsIkZGMSIsIlMxIiwiQzEiLCJJRTQiLCJPMy41Il0sZGVzY3JpcHRpb246IlVzZSB0aGUgZml0LWNvbnRlbnQgaW5saW5lIHNpemUgb3IgZml0LWNvbnRlbnQgYmxvY2sgc2l6ZSwgYXMgYXBwcm9wcmlhdGUgdG8gdGhlIHdyaXRpbmcgbW9kZS4ifSx7bmFtZToibWF4LWNvbnRlbnQiLGJyb3dzZXJzOlsiRTEyIiwiRkYxIiwiUzEiLCJDMSIsIklFNCIsIk8zLjUiXSxkZXNjcmlwdGlvbjoiVXNlIHRoZSBtYXgtY29udGVudCBpbmxpbmUgc2l6ZSBvciBtYXgtY29udGVudCBibG9jayBzaXplLCBhcyBhcHByb3ByaWF0ZSB0byB0aGUgd3JpdGluZyBtb2RlLiJ9LHtuYW1lOiJtaW4tY29udGVudCIsYnJvd3NlcnM6WyJFMTIiLCJGRjEiLCJTMSIsIkMxIiwiSUU0IiwiTzMuNSJdLGRlc2NyaXB0aW9uOiJVc2UgdGhlIG1pbi1jb250ZW50IGlubGluZSBzaXplIG9yIG1pbi1jb250ZW50IGJsb2NrIHNpemUsIGFzIGFwcHJvcHJpYXRlIHRvIHRoZSB3cml0aW5nIG1vZGUuIn1dLHN5bnRheDoiYXV0byB8IDxsZW5ndGg+IHwgPHBlcmNlbnRhZ2U+IHwgbWluLWNvbnRlbnQgfCBtYXgtY29udGVudCB8IGZpdC1jb250ZW50IHwgZml0LWNvbnRlbnQoPGxlbmd0aC1wZXJjZW50YWdlPikiLHJlbGV2YW5jZTo5NixyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1Mvd2lkdGgifV0sZGVzY3JpcHRpb246IlNwZWNpZmllcyB0aGUgd2lkdGggb2YgdGhlIGNvbnRlbnQgYXJlYSwgcGFkZGluZyBhcmVhIG9yIGJvcmRlciBhcmVhIChkZXBlbmRpbmcgb24gJ2JveC1zaXppbmcnKSBvZiBjZXJ0YWluIGJveGVzLiIscmVzdHJpY3Rpb25zOlsibGVuZ3RoIiwicGVyY2VudGFnZSJdfSx7bmFtZToid2lsbC1jaGFuZ2UiLGJyb3dzZXJzOlsiRTc5IiwiRkYzNiIsIlM5LjEiLCJDMzYiLCJPMjQiXSx2YWx1ZXM6W3tuYW1lOiJhdXRvIixkZXNjcmlwdGlvbjoiRXhwcmVzc2VzIG5vIHBhcnRpY3VsYXIgaW50ZW50LiJ9LHtuYW1lOiJjb250ZW50cyIsZGVzY3JpcHRpb246IkluZGljYXRlcyB0aGF0IHRoZSBhdXRob3IgZXhwZWN0cyB0byBhbmltYXRlIG9yIGNoYW5nZSBzb21ldGhpbmcgYWJvdXQgdGhlIGVsZW1lbnQncyBjb250ZW50cyBpbiB0aGUgbmVhciBmdXR1cmUuIn0se25hbWU6InNjcm9sbC1wb3NpdGlvbiIsZGVzY3JpcHRpb246IkluZGljYXRlcyB0aGF0IHRoZSBhdXRob3IgZXhwZWN0cyB0byBhbmltYXRlIG9yIGNoYW5nZSB0aGUgc2Nyb2xsIHBvc2l0aW9uIG9mIHRoZSBlbGVtZW50IGluIHRoZSBuZWFyIGZ1dHVyZS4ifV0sc3ludGF4OiJhdXRvIHwgPGFuaW1hdGVhYmxlLWZlYXR1cmU+IyIscmVsZXZhbmNlOjY1LHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy93aWxsLWNoYW5nZSJ9XSxkZXNjcmlwdGlvbjoiUHJvdmlkZXMgYSByZW5kZXJpbmcgaGludCB0byB0aGUgdXNlciBhZ2VudCwgc3RhdGluZyB3aGF0IGtpbmRzIG9mIGNoYW5nZXMgdGhlIGF1dGhvciBleHBlY3RzIHRvIHBlcmZvcm0gb24gdGhlIGVsZW1lbnQuIixyZXN0cmljdGlvbnM6WyJlbnVtIiwiaWRlbnRpZmllciJdfSx7bmFtZToid29yZC1icmVhayIsYnJvd3NlcnM6WyJFMTIiLCJGRjE1IiwiUzMiLCJDMSIsIklFNS41IiwiTzE1Il0sdmFsdWVzOlt7bmFtZToiYnJlYWstYWxsIixkZXNjcmlwdGlvbjoiTGluZXMgbWF5IGJyZWFrIGJldHdlZW4gYW55IHR3byBncmFwaGVtZSBjbHVzdGVycyBmb3Igbm9uLUNKSyBzY3JpcHRzLiJ9LHtuYW1lOiJrZWVwLWFsbCIsZGVzY3JpcHRpb246IkJsb2NrIGNoYXJhY3RlcnMgY2FuIG5vIGxvbmdlciBjcmVhdGUgaW1wbGllZCBicmVhayBwb2ludHMuIn0se25hbWU6Im5vcm1hbCIsZGVzY3JpcHRpb246IkJyZWFrcyBub24tQ0pLIHNjcmlwdHMgYWNjb3JkaW5nIHRvIHRoZWlyIG93biBydWxlcy4ifV0sc3ludGF4OiJub3JtYWwgfCBicmVhay1hbGwgfCBrZWVwLWFsbCB8IGJyZWFrLXdvcmQiLHJlbGV2YW5jZTo3NixyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1Mvd29yZC1icmVhayJ9XSxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIGxpbmUgYnJlYWsgb3Bwb3J0dW5pdGllcyBmb3Igbm9uLUNKSyBzY3JpcHRzLiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToid29yZC1zcGFjaW5nIixicm93c2VyczpbIkUxMiIsIkZGMSIsIlMxIiwiQzEiLCJJRTYiLCJPMy41Il0sdmFsdWVzOlt7bmFtZToibm9ybWFsIixkZXNjcmlwdGlvbjoiTm8gYWRkaXRpb25hbCBzcGFjaW5nIGlzIGFwcGxpZWQuIENvbXB1dGVzIHRvIHplcm8uIn1dLHN5bnRheDoibm9ybWFsIHwgPGxlbmd0aD4iLHJlbGV2YW5jZTo1NyxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1Mvd29yZC1zcGFjaW5nIn1dLGRlc2NyaXB0aW9uOidTcGVjaWZpZXMgYWRkaXRpb25hbCBzcGFjaW5nIGJldHdlZW4gIndvcmRzIi4nLHJlc3RyaWN0aW9uczpbImxlbmd0aCIsInBlcmNlbnRhZ2UiXX0se25hbWU6IndvcmQtd3JhcCIsYnJvd3NlcnM6WyJFODAiLCJGRjcyIiwiUzEzLjEiLCJDODAiLCJPNjciXSx2YWx1ZXM6W3tuYW1lOiJicmVhay13b3JkIixkZXNjcmlwdGlvbjoiQW4gb3RoZXJ3aXNlIHVuYnJlYWthYmxlIHNlcXVlbmNlIG9mIGNoYXJhY3RlcnMgbWF5IGJlIGJyb2tlbiBhdCBhbiBhcmJpdHJhcnkgcG9pbnQgaWYgdGhlcmUgYXJlIG5vIG90aGVyd2lzZS1hY2NlcHRhYmxlIGJyZWFrIHBvaW50cyBpbiB0aGUgbGluZS4ifSx7bmFtZToibm9ybWFsIixkZXNjcmlwdGlvbjoiTGluZXMgbWF5IGJyZWFrIG9ubHkgYXQgYWxsb3dlZCBicmVhayBwb2ludHMuIn1dLHN5bnRheDoibm9ybWFsIHwgYnJlYWstd29yZCIscmVsZXZhbmNlOjc3LGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgd2hldGhlciB0aGUgVUEgbWF5IGJyZWFrIHdpdGhpbiBhIHdvcmQgdG8gcHJldmVudCBvdmVyZmxvdyB3aGVuIGFuIG90aGVyd2lzZS11bmJyZWFrYWJsZSBzdHJpbmcgaXMgdG9vIGxvbmcgdG8gZml0LiIscmVzdHJpY3Rpb25zOlsiZW51bSJdfSx7bmFtZToid3JpdGluZy1tb2RlIixicm93c2VyczpbIkUxMiIsIkZGNDEiLCJTMTAuMSIsIkM0OCIsIklFOSIsIk8zNSJdLHZhbHVlczpbe25hbWU6Imhvcml6b250YWwtdGIiLGRlc2NyaXB0aW9uOiJUb3AtdG8tYm90dG9tIGJsb2NrIGZsb3cgZGlyZWN0aW9uLiBUaGUgd3JpdGluZyBtb2RlIGlzIGhvcml6b250YWwuIn0se25hbWU6InNpZGV3YXlzLWxyIixicm93c2VyczpbIkUxMiIsIkZGNDEiLCJTMTAuMSIsIkM0OCIsIklFOSIsIk8zNSJdLGRlc2NyaXB0aW9uOiJMZWZ0LXRvLXJpZ2h0IGJsb2NrIGZsb3cgZGlyZWN0aW9uLiBUaGUgd3JpdGluZyBtb2RlIGlzIHZlcnRpY2FsLCB3aGlsZSB0aGUgdHlwb2dyYXBoaWMgbW9kZSBpcyBob3Jpem9udGFsLiJ9LHtuYW1lOiJzaWRld2F5cy1ybCIsYnJvd3NlcnM6WyJFMTIiLCJGRjQxIiwiUzEwLjEiLCJDNDgiLCJJRTkiLCJPMzUiXSxkZXNjcmlwdGlvbjoiUmlnaHQtdG8tbGVmdCBibG9jayBmbG93IGRpcmVjdGlvbi4gVGhlIHdyaXRpbmcgbW9kZSBpcyB2ZXJ0aWNhbCwgd2hpbGUgdGhlIHR5cG9ncmFwaGljIG1vZGUgaXMgaG9yaXpvbnRhbC4ifSx7bmFtZToidmVydGljYWwtbHIiLGRlc2NyaXB0aW9uOiJMZWZ0LXRvLXJpZ2h0IGJsb2NrIGZsb3cgZGlyZWN0aW9uLiBUaGUgd3JpdGluZyBtb2RlIGlzIHZlcnRpY2FsLiJ9LHtuYW1lOiJ2ZXJ0aWNhbC1ybCIsZGVzY3JpcHRpb246IlJpZ2h0LXRvLWxlZnQgYmxvY2sgZmxvdyBkaXJlY3Rpb24uIFRoZSB3cml0aW5nIG1vZGUgaXMgdmVydGljYWwuIn1dLHN5bnRheDoiaG9yaXpvbnRhbC10YiB8IHZlcnRpY2FsLXJsIHwgdmVydGljYWwtbHIgfCBzaWRld2F5cy1ybCB8IHNpZGV3YXlzLWxyIixyZWxldmFuY2U6NTAscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3dyaXRpbmctbW9kZSJ9XSxkZXNjcmlwdGlvbjoiVGhpcyBpcyBhIHNob3J0aGFuZCBwcm9wZXJ0eSBmb3IgYm90aCAnZGlyZWN0aW9uJyBhbmQgJ2Jsb2NrLXByb2dyZXNzaW9uJy4iLHJlc3RyaWN0aW9uczpbImVudW0iXX0se25hbWU6InotaW5kZXgiLGJyb3dzZXJzOlsiRTEyIiwiRkYxIiwiUzEiLCJDMSIsIklFNCIsIk80Il0sdmFsdWVzOlt7bmFtZToiYXV0byIsZGVzY3JpcHRpb246IlRoZSBzdGFjayBsZXZlbCBvZiB0aGUgZ2VuZXJhdGVkIGJveCBpbiB0aGUgY3VycmVudCBzdGFja2luZyBjb250ZXh0IGlzIDAuIFRoZSBib3ggZG9lcyBub3QgZXN0YWJsaXNoIGEgbmV3IHN0YWNraW5nIGNvbnRleHQgdW5sZXNzIGl0IGlzIHRoZSByb290IGVsZW1lbnQuIn1dLHN5bnRheDoiYXV0byB8IDxpbnRlZ2VyPiIscmVsZXZhbmNlOjkyLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy96LWluZGV4In1dLGRlc2NyaXB0aW9uOiJGb3IgYSBwb3NpdGlvbmVkIGJveCwgdGhlICd6LWluZGV4JyBwcm9wZXJ0eSBzcGVjaWZpZXMgdGhlIHN0YWNrIGxldmVsIG9mIHRoZSBib3ggaW4gdGhlIGN1cnJlbnQgc3RhY2tpbmcgY29udGV4dCBhbmQgd2hldGhlciB0aGUgYm94IGVzdGFibGlzaGVzIGEgbG9jYWwgc3RhY2tpbmcgY29udGV4dC4iLHJlc3RyaWN0aW9uczpbImludGVnZXIiXX0se25hbWU6Inpvb20iLGJyb3dzZXJzOlsiRTEyIiwiRkZwcmV2aWV3IiwiUzMuMSIsIkMxIiwiSUU1LjUiLCJPMTUiXSx2YWx1ZXM6W3tuYW1lOiJub3JtYWwifV0sc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiJub3JtYWwgfCByZXNldCB8IDxudW1iZXI+IHwgPHBlcmNlbnRhZ2U+IixyZWxldmFuY2U6MTUscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3pvb20ifV0sZGVzY3JpcHRpb246Ik5vbi1zdGFuZGFyZC4gU3BlY2lmaWVzIHRoZSBtYWduaWZpY2F0aW9uIHNjYWxlIG9mIHRoZSBvYmplY3QuIFNlZSAndHJhbnNmb3JtOiBzY2FsZSgpJyBmb3IgYSBzdGFuZGFyZHMtYmFzZWQgYWx0ZXJuYXRpdmUuIixyZXN0cmljdGlvbnM6WyJlbnVtIiwiaW50ZWdlciIsIm51bWJlciIsInBlcmNlbnRhZ2UiXX0se25hbWU6Ii1tcy1pbWUtYWxpZ24iLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoiYXV0byB8IGFmdGVyIix2YWx1ZXM6W3tuYW1lOiJhdXRvIn0se25hbWU6ImFmdGVyIn1dLHJlbGV2YW5jZTowLGRlc2NyaXB0aW9uOiJBbGlnbnMgdGhlIElucHV0IE1ldGhvZCBFZGl0b3IgKElNRSkgY2FuZGlkYXRlIHdpbmRvdyBib3ggcmVsYXRpdmUgdG8gdGhlIGVsZW1lbnQgb24gd2hpY2ggdGhlIElNRSBjb21wb3NpdGlvbiBpcyBhY3RpdmUuIn0se25hbWU6Ii1tb3otYmluZGluZyIsc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiI8dXJsPiB8IG5vbmUiLHJlbGV2YW5jZTowLGRlc2NyaXB0aW9uOiJUaGUgLW1vei1iaW5kaW5nIENTUyBwcm9wZXJ0eSBpcyB1c2VkIGJ5IE1vemlsbGEtYmFzZWQgYXBwbGljYXRpb25zIHRvIGF0dGFjaCBhbiBYQkwgYmluZGluZyB0byBhIERPTSBlbGVtZW50LiJ9LHtuYW1lOiItbW96LWNvbnRleHQtcHJvcGVydGllcyIsc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiJub25lIHwgWyBmaWxsIHwgZmlsbC1vcGFjaXR5IHwgc3Ryb2tlIHwgc3Ryb2tlLW9wYWNpdHkgXSMiLHJlbGV2YW5jZTowLGRlc2NyaXB0aW9uOmBJZiB5b3UgcmVmZXJlbmNlIGFuIFNWRyBpbWFnZSBpbiBhIHdlYnBhZ2UgKHN1Y2ggYXMgd2l0aCB0aGUgPGltZz4gZWxlbWVudCBvciBhcyBhIGJhY2tncm91bmQgaW1hZ2UpLCB0aGUgU1ZHIGltYWdlIGNhbiBjb29yZGluYXRlIHdpdGggdGhlIGVtYmVkZGluZyBlbGVtZW50IChpdHMgY29udGV4dCkgdG8gaGF2ZSB0aGUgaW1hZ2UgYWRvcHQgcHJvcGVydHkgdmFsdWVzIHNldCBvbiB0aGUgZW1iZWRkaW5nIGVsZW1lbnQuIFRvIGRvIHRoaXMgdGhlIGVtYmVkZGluZyBlbGVtZW50IG5lZWRzIHRvIGxpc3QgdGhlIHByb3BlcnRpZXMgdGhhdCBhcmUgdG8gYmUgbWFkZSBhdmFpbGFibGUgdG8gdGhlIGltYWdlIGJ5IGxpc3RpbmcgdGhlbSBhcyB2YWx1ZXMgb2YgdGhlIC1tb3otY29udGV4dC1wcm9wZXJ0aWVzIHByb3BlcnR5LCBhbmQgdGhlIGltYWdlIG5lZWRzIHRvIG9wdCBpbiB0byB1c2luZyB0aG9zZSBwcm9wZXJ0aWVzIGJ5IHVzaW5nIHZhbHVlcyBzdWNoIGFzIHRoZSBjb250ZXh0LWZpbGwgdmFsdWUuCgpUaGlzIGZlYXR1cmUgaXMgYXZhaWxhYmxlIHNpbmNlIEZpcmVmb3ggNTUsIGJ1dCBpcyBvbmx5IGN1cnJlbnRseSBzdXBwb3J0ZWQgd2l0aCBTVkcgaW1hZ2VzIGxvYWRlZCB2aWEgY2hyb21lOi8vIG9yIHJlc291cmNlOi8vIFVSTHMuIFRvIGV4cGVyaW1lbnQgd2l0aCB0aGUgZmVhdHVyZSBpbiBTVkcgb24gdGhlIFdlYiBpdCBpcyBuZWNlc3NhcnkgdG8gc2V0IHRoZSBzdmcuY29udGV4dC1wcm9wZXJ0aWVzLmNvbnRlbnQuZW5hYmxlZCBwcmVmIHRvIHRydWUuYH0se25hbWU6Ii1tb3otZmxvYXQtZWRnZSIsc3RhdHVzOiJvYnNvbGV0ZSIsc3ludGF4OiJib3JkZXItYm94IHwgY29udGVudC1ib3ggfCBtYXJnaW4tYm94IHwgcGFkZGluZy1ib3giLHZhbHVlczpbe25hbWU6ImJvcmRlci1ib3gifSx7bmFtZToiY29udGVudC1ib3gifSx7bmFtZToibWFyZ2luLWJveCJ9LHtuYW1lOiJwYWRkaW5nLWJveCJ9XSxyZWxldmFuY2U6MCxicm93c2VyczpbIkZGMSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy8tbW96LWZsb2F0LWVkZ2UifV0sZGVzY3JpcHRpb246IlRoZSBub24tc3RhbmRhcmQgLW1vei1mbG9hdC1lZGdlIENTUyBwcm9wZXJ0eSBzcGVjaWZpZXMgd2hldGhlciB0aGUgaGVpZ2h0IGFuZCB3aWR0aCBwcm9wZXJ0aWVzIG9mIHRoZSBlbGVtZW50IGluY2x1ZGUgdGhlIG1hcmdpbiwgYm9yZGVyLCBvciBwYWRkaW5nIHRoaWNrbmVzcy4ifSx7bmFtZToiLW1vei1mb3JjZS1icm9rZW4taW1hZ2UtaWNvbiIsc3RhdHVzOiJvYnNvbGV0ZSIsc3ludGF4OiIwIHwgMSIsdmFsdWVzOlt7bmFtZToiMCJ9LHtuYW1lOiIxIn1dLHJlbGV2YW5jZTowLGJyb3dzZXJzOlsiRkYxIl0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLy1tb3otZm9yY2UtYnJva2VuLWltYWdlLWljb24ifV0sZGVzY3JpcHRpb246IlRoZSAtbW96LWZvcmNlLWJyb2tlbi1pbWFnZS1pY29uIGV4dGVuZGVkIENTUyBwcm9wZXJ0eSBjYW4gYmUgdXNlZCB0byBmb3JjZSB0aGUgYnJva2VuIGltYWdlIGljb24gdG8gYmUgc2hvd24gZXZlbiB3aGVuIGEgYnJva2VuIGltYWdlIGhhcyBhbiBhbHQgYXR0cmlidXRlLiJ9LHtuYW1lOiItbW96LWltYWdlLXJlZ2lvbiIsc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiI8c2hhcGU+IHwgYXV0byIscmVsZXZhbmNlOjAsYnJvd3NlcnM6WyJGRjEiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvLW1vei1pbWFnZS1yZWdpb24ifV0sZGVzY3JpcHRpb246IkZvciBjZXJ0YWluIFhVTCBlbGVtZW50cyBhbmQgcHNldWRvLWVsZW1lbnRzIHRoYXQgdXNlIGFuIGltYWdlIGZyb20gdGhlIGxpc3Qtc3R5bGUtaW1hZ2UgcHJvcGVydHksIHRoaXMgcHJvcGVydHkgc3BlY2lmaWVzIGEgcmVnaW9uIG9mIHRoZSBpbWFnZSB0aGF0IGlzIHVzZWQgaW4gcGxhY2Ugb2YgdGhlIHdob2xlIGltYWdlLiBUaGlzIGFsbG93cyBlbGVtZW50cyB0byB1c2UgZGlmZmVyZW50IHBpZWNlcyBvZiB0aGUgc2FtZSBpbWFnZSB0byBpbXByb3ZlIHBlcmZvcm1hbmNlLiJ9LHtuYW1lOiItbW96LW9yaWVudCIsc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiJpbmxpbmUgfCBibG9jayB8IGhvcml6b250YWwgfCB2ZXJ0aWNhbCIsdmFsdWVzOlt7bmFtZToiaW5saW5lIn0se25hbWU6ImJsb2NrIn0se25hbWU6Imhvcml6b250YWwifSx7bmFtZToidmVydGljYWwifV0scmVsZXZhbmNlOjAsYnJvd3NlcnM6WyJGRjYiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvLW1vei1vcmllbnQifV0sZGVzY3JpcHRpb246IlRoZSAtbW96LW9yaWVudCBDU1MgcHJvcGVydHkgc3BlY2lmaWVzIHRoZSBvcmllbnRhdGlvbiBvZiB0aGUgZWxlbWVudCB0byB3aGljaCBpdCdzIGFwcGxpZWQuIn0se25hbWU6Ii1tb3otb3V0bGluZS1yYWRpdXMiLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoiPG91dGxpbmUtcmFkaXVzPnsxLDR9IFsgLyA8b3V0bGluZS1yYWRpdXM+ezEsNH0gXT8iLHJlbGV2YW5jZTowLGRlc2NyaXB0aW9uOiJJbiBNb3ppbGxhIGFwcGxpY2F0aW9ucyBsaWtlIEZpcmVmb3gsIHRoZSAtbW96LW91dGxpbmUtcmFkaXVzIENTUyBwcm9wZXJ0eSBjYW4gYmUgdXNlZCB0byBnaXZlIGFuIGVsZW1lbnQncyBvdXRsaW5lIHJvdW5kZWQgY29ybmVycy4ifSx7bmFtZToiLW1vei1vdXRsaW5lLXJhZGl1cy1ib3R0b21sZWZ0IixzdGF0dXM6Im5vbnN0YW5kYXJkIixzeW50YXg6IjxvdXRsaW5lLXJhZGl1cz4iLHJlbGV2YW5jZTowLGRlc2NyaXB0aW9uOiJJbiBNb3ppbGxhIGFwcGxpY2F0aW9ucywgdGhlIC1tb3otb3V0bGluZS1yYWRpdXMtYm90dG9tbGVmdCBDU1MgcHJvcGVydHkgY2FuIGJlIHVzZWQgdG8gcm91bmQgdGhlIGJvdHRvbS1sZWZ0IGNvcm5lciBvZiBhbiBlbGVtZW50J3Mgb3V0bGluZS4ifSx7bmFtZToiLW1vei1vdXRsaW5lLXJhZGl1cy1ib3R0b21yaWdodCIsc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiI8b3V0bGluZS1yYWRpdXM+IixyZWxldmFuY2U6MCxkZXNjcmlwdGlvbjoiSW4gTW96aWxsYSBhcHBsaWNhdGlvbnMsIHRoZSAtbW96LW91dGxpbmUtcmFkaXVzLWJvdHRvbXJpZ2h0IENTUyBwcm9wZXJ0eSBjYW4gYmUgdXNlZCB0byByb3VuZCB0aGUgYm90dG9tLXJpZ2h0IGNvcm5lciBvZiBhbiBlbGVtZW50J3Mgb3V0bGluZS4ifSx7bmFtZToiLW1vei1vdXRsaW5lLXJhZGl1cy10b3BsZWZ0IixzdGF0dXM6Im5vbnN0YW5kYXJkIixzeW50YXg6IjxvdXRsaW5lLXJhZGl1cz4iLHJlbGV2YW5jZTowLGRlc2NyaXB0aW9uOiJJbiBNb3ppbGxhIGFwcGxpY2F0aW9ucywgdGhlIC1tb3otb3V0bGluZS1yYWRpdXMtdG9wbGVmdCBDU1MgcHJvcGVydHkgY2FuIGJlIHVzZWQgdG8gcm91bmQgdGhlIHRvcC1sZWZ0IGNvcm5lciBvZiBhbiBlbGVtZW50J3Mgb3V0bGluZS4ifSx7bmFtZToiLW1vei1vdXRsaW5lLXJhZGl1cy10b3ByaWdodCIsc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiI8b3V0bGluZS1yYWRpdXM+IixyZWxldmFuY2U6MCxkZXNjcmlwdGlvbjoiSW4gTW96aWxsYSBhcHBsaWNhdGlvbnMsIHRoZSAtbW96LW91dGxpbmUtcmFkaXVzLXRvcHJpZ2h0IENTUyBwcm9wZXJ0eSBjYW4gYmUgdXNlZCB0byByb3VuZCB0aGUgdG9wLXJpZ2h0IGNvcm5lciBvZiBhbiBlbGVtZW50J3Mgb3V0bGluZS4ifSx7bmFtZToiLW1vei1zdGFjay1zaXppbmciLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoiaWdub3JlIHwgc3RyZXRjaC10by1maXQiLHZhbHVlczpbe25hbWU6Imlnbm9yZSJ9LHtuYW1lOiJzdHJldGNoLXRvLWZpdCJ9XSxyZWxldmFuY2U6MCxkZXNjcmlwdGlvbjoiLW1vei1zdGFjay1zaXppbmcgaXMgYW4gZXh0ZW5kZWQgQ1NTIHByb3BlcnR5LiBOb3JtYWxseSwgYSBzdGFjayB3aWxsIGNoYW5nZSBpdHMgc2l6ZSBzbyB0aGF0IGFsbCBvZiBpdHMgY2hpbGQgZWxlbWVudHMgYXJlIGNvbXBsZXRlbHkgdmlzaWJsZS4gRm9yIGV4YW1wbGUsIG1vdmluZyBhIGNoaWxkIG9mIHRoZSBzdGFjayBmYXIgdG8gdGhlIHJpZ2h0IHdpbGwgd2lkZW4gdGhlIHN0YWNrIHNvIHRoZSBjaGlsZCByZW1haW5zIHZpc2libGUuIn0se25hbWU6Ii1tb3otdGV4dC1ibGluayIsc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiJub25lIHwgYmxpbmsiLHZhbHVlczpbe25hbWU6Im5vbmUifSx7bmFtZToiYmxpbmsifV0scmVsZXZhbmNlOjAsZGVzY3JpcHRpb246IlRoZSAtbW96LXRleHQtYmxpbmsgbm9uLXN0YW5kYXJkIE1vemlsbGEgQ1NTIGV4dGVuc2lvbiBzcGVjaWZpZXMgdGhlIGJsaW5rIG1vZGUuIn0se25hbWU6Ii1tb3otdXNlci1pbnB1dCIsc3RhdHVzOiJvYnNvbGV0ZSIsc3ludGF4OiJhdXRvIHwgbm9uZSB8IGVuYWJsZWQgfCBkaXNhYmxlZCIsdmFsdWVzOlt7bmFtZToiYXV0byJ9LHtuYW1lOiJub25lIn0se25hbWU6ImVuYWJsZWQifSx7bmFtZToiZGlzYWJsZWQifV0scmVsZXZhbmNlOjAsYnJvd3NlcnM6WyJGRjEiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvLW1vei11c2VyLWlucHV0In1dLGRlc2NyaXB0aW9uOiJJbiBNb3ppbGxhIGFwcGxpY2F0aW9ucywgLW1vei11c2VyLWlucHV0IGRldGVybWluZXMgaWYgYW4gZWxlbWVudCB3aWxsIGFjY2VwdCB1c2VyIGlucHV0LiJ9LHtuYW1lOiItbW96LXVzZXItbW9kaWZ5IixzdGF0dXM6Im5vbnN0YW5kYXJkIixzeW50YXg6InJlYWQtb25seSB8IHJlYWQtd3JpdGUgfCB3cml0ZS1vbmx5Iix2YWx1ZXM6W3tuYW1lOiJyZWFkLW9ubHkifSx7bmFtZToicmVhZC13cml0ZSJ9LHtuYW1lOiJ3cml0ZS1vbmx5In1dLHJlbGV2YW5jZTowLGRlc2NyaXB0aW9uOiJUaGUgLW1vei11c2VyLW1vZGlmeSBwcm9wZXJ0eSBoYXMgbm8gZWZmZWN0LiBJdCB3YXMgb3JpZ2luYWxseSBwbGFubmVkIHRvIGRldGVybWluZSB3aGV0aGVyIG9yIG5vdCB0aGUgY29udGVudCBvZiBhbiBlbGVtZW50IGNhbiBiZSBlZGl0ZWQgYnkgYSB1c2VyLiJ9LHtuYW1lOiItbW96LXdpbmRvdy1kcmFnZ2luZyIsc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiJkcmFnIHwgbm8tZHJhZyIsdmFsdWVzOlt7bmFtZToiZHJhZyJ9LHtuYW1lOiJuby1kcmFnIn1dLHJlbGV2YW5jZTowLGRlc2NyaXB0aW9uOiJUaGUgLW1vei13aW5kb3ctZHJhZ2dpbmcgQ1NTIHByb3BlcnR5IHNwZWNpZmllcyB3aGV0aGVyIGEgd2luZG93IGlzIGRyYWdnYWJsZSBvciBub3QuIEl0IG9ubHkgd29ya3MgaW4gQ2hyb21lIGNvZGUsIGFuZCBvbmx5IG9uIE1hYyBPUyBYLiJ9LHtuYW1lOiItbW96LXdpbmRvdy1zaGFkb3ciLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoiZGVmYXVsdCB8IG1lbnUgfCB0b29sdGlwIHwgc2hlZXQgfCBub25lIix2YWx1ZXM6W3tuYW1lOiJkZWZhdWx0In0se25hbWU6Im1lbnUifSx7bmFtZToidG9vbHRpcCJ9LHtuYW1lOiJzaGVldCJ9LHtuYW1lOiJub25lIn1dLHJlbGV2YW5jZTowLGRlc2NyaXB0aW9uOiJUaGUgLW1vei13aW5kb3ctc2hhZG93IENTUyBwcm9wZXJ0eSBzcGVjaWZpZXMgd2hldGhlciBhIHdpbmRvdyB3aWxsIGhhdmUgYSBzaGFkb3cuIEl0IG9ubHkgd29ya3Mgb24gTWFjIE9TIFguIn0se25hbWU6Ii13ZWJraXQtYm9yZGVyLWJlZm9yZSIsc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiI8J2JvcmRlci13aWR0aCc+IHx8IDwnYm9yZGVyLXN0eWxlJz4gfHwgPGNvbG9yPiIscmVsZXZhbmNlOjAsYnJvd3NlcnM6WyJFNzkiLCJTNS4xIiwiQzgiLCJPMTUiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvLXdlYmtpdC1ib3JkZXItYmVmb3JlIn1dLGRlc2NyaXB0aW9uOiJUaGUgLXdlYmtpdC1ib3JkZXItYmVmb3JlIENTUyBwcm9wZXJ0eSBpcyBhIHNob3J0aGFuZCBwcm9wZXJ0eSBmb3Igc2V0dGluZyB0aGUgaW5kaXZpZHVhbCBsb2dpY2FsIGJsb2NrIHN0YXJ0IGJvcmRlciBwcm9wZXJ0eSB2YWx1ZXMgaW4gYSBzaW5nbGUgcGxhY2UgaW4gdGhlIHN0eWxlIHNoZWV0LiJ9LHtuYW1lOiItd2Via2l0LWJvcmRlci1iZWZvcmUtY29sb3IiLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoiPGNvbG9yPiIscmVsZXZhbmNlOjAsZGVzY3JpcHRpb246IlRoZSAtd2Via2l0LWJvcmRlci1iZWZvcmUtY29sb3IgQ1NTIHByb3BlcnR5IHNldHMgdGhlIGNvbG9yIG9mIHRoZSBpbmRpdmlkdWFsIGxvZ2ljYWwgYmxvY2sgc3RhcnQgYm9yZGVyIGluIGEgc2luZ2xlIHBsYWNlIGluIHRoZSBzdHlsZSBzaGVldC4ifSx7bmFtZToiLXdlYmtpdC1ib3JkZXItYmVmb3JlLXN0eWxlIixzdGF0dXM6Im5vbnN0YW5kYXJkIixzeW50YXg6IjwnYm9yZGVyLXN0eWxlJz4iLHJlbGV2YW5jZTowLGRlc2NyaXB0aW9uOiJUaGUgLXdlYmtpdC1ib3JkZXItYmVmb3JlLXN0eWxlIENTUyBwcm9wZXJ0eSBzZXRzIHRoZSBzdHlsZSBvZiB0aGUgaW5kaXZpZHVhbCBsb2dpY2FsIGJsb2NrIHN0YXJ0IGJvcmRlciBpbiBhIHNpbmdsZSBwbGFjZSBpbiB0aGUgc3R5bGUgc2hlZXQuIn0se25hbWU6Ii13ZWJraXQtYm9yZGVyLWJlZm9yZS13aWR0aCIsc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiI8J2JvcmRlci13aWR0aCc+IixyZWxldmFuY2U6MCxkZXNjcmlwdGlvbjoiVGhlIC13ZWJraXQtYm9yZGVyLWJlZm9yZS13aWR0aCBDU1MgcHJvcGVydHkgc2V0cyB0aGUgd2lkdGggb2YgdGhlIGluZGl2aWR1YWwgbG9naWNhbCBibG9jayBzdGFydCBib3JkZXIgaW4gYSBzaW5nbGUgcGxhY2UgaW4gdGhlIHN0eWxlIHNoZWV0LiJ9LHtuYW1lOiItd2Via2l0LWxpbmUtY2xhbXAiLHN5bnRheDoibm9uZSB8IDxpbnRlZ2VyPiIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRTE3IiwiRkY2OCIsIlM1IiwiQzYiLCJPMTUiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvLXdlYmtpdC1saW5lLWNsYW1wIn1dLGRlc2NyaXB0aW9uOiJUaGUgLXdlYmtpdC1saW5lLWNsYW1wIENTUyBwcm9wZXJ0eSBhbGxvd3MgbGltaXRpbmcgb2YgdGhlIGNvbnRlbnRzIG9mIGEgYmxvY2sgY29udGFpbmVyIHRvIHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIGxpbmVzLiJ9LHtuYW1lOiItd2Via2l0LW1hc2siLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoiWyA8bWFzay1yZWZlcmVuY2U+IHx8IDxwb3NpdGlvbj4gWyAvIDxiZy1zaXplPiBdPyB8fCA8cmVwZWF0LXN0eWxlPiB8fCBbIDxib3g+IHwgYm9yZGVyIHwgcGFkZGluZyB8IGNvbnRlbnQgfCB0ZXh0IF0gfHwgWyA8Ym94PiB8IGJvcmRlciB8IHBhZGRpbmcgfCBjb250ZW50IF0gXSMiLHJlbGV2YW5jZTowLGRlc2NyaXB0aW9uOiJUaGUgbWFzayBDU1MgcHJvcGVydHkgYWx0ZXJzIHRoZSB2aXNpYmlsaXR5IG9mIGFuIGVsZW1lbnQgYnkgZWl0aGVyIHBhcnRpYWxseSBvciBmdWxseSBoaWRpbmcgaXQuIFRoaXMgaXMgYWNjb21wbGlzaGVkIGJ5IGVpdGhlciBtYXNraW5nIG9yIGNsaXBwaW5nIHRoZSBpbWFnZSBhdCBzcGVjaWZpYyBwb2ludHMuIn0se25hbWU6Ii13ZWJraXQtbWFzay1hdHRhY2htZW50IixzdGF0dXM6Im5vbnN0YW5kYXJkIixzeW50YXg6IjxhdHRhY2htZW50PiMiLHJlbGV2YW5jZTowLGJyb3dzZXJzOlsiUzQiLCJDMSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy8td2Via2l0LW1hc2stYXR0YWNobWVudCJ9XSxkZXNjcmlwdGlvbjoiSWYgYSAtd2Via2l0LW1hc2staW1hZ2UgaXMgc3BlY2lmaWVkLCAtd2Via2l0LW1hc2stYXR0YWNobWVudCBkZXRlcm1pbmVzIHdoZXRoZXIgdGhlIG1hc2sgaW1hZ2UncyBwb3NpdGlvbiBpcyBmaXhlZCB3aXRoaW4gdGhlIHZpZXdwb3J0LCBvciBzY3JvbGxzIGFsb25nIHdpdGggaXRzIGNvbnRhaW5pbmcgYmxvY2suIn0se25hbWU6Ii13ZWJraXQtbWFzay1jb21wb3NpdGUiLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoiPGNvbXBvc2l0ZS1zdHlsZT4jIixyZWxldmFuY2U6MCxicm93c2VyczpbIkUxOCIsIlMzLjEiLCJDMSIsIk8xNSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy8td2Via2l0LW1hc2stY29tcG9zaXRlIn1dLGRlc2NyaXB0aW9uOiJUaGUgLXdlYmtpdC1tYXNrLWNvbXBvc2l0ZSBwcm9wZXJ0eSBzcGVjaWZpZXMgdGhlIG1hbm5lciBpbiB3aGljaCBtdWx0aXBsZSBtYXNrIGltYWdlcyBhcHBsaWVkIHRvIHRoZSBzYW1lIGVsZW1lbnQgYXJlIGNvbXBvc2l0ZWQgd2l0aCBvbmUgYW5vdGhlci4gTWFzayBpbWFnZXMgYXJlIGNvbXBvc2l0ZWQgaW4gdGhlIG9wcG9zaXRlIG9yZGVyIHRoYXQgdGhleSBhcmUgZGVjbGFyZWQgd2l0aCB0aGUgLXdlYmtpdC1tYXNrLWltYWdlIHByb3BlcnR5LiJ9LHtuYW1lOiItd2Via2l0LW1hc2stcG9zaXRpb24iLHN0YXR1czoibm9uc3RhbmRhcmQiLHN5bnRheDoiPHBvc2l0aW9uPiMiLHJlbGV2YW5jZTowLGRlc2NyaXB0aW9uOiJUaGUgbWFzay1wb3NpdGlvbiBDU1MgcHJvcGVydHkgc2V0cyB0aGUgaW5pdGlhbCBwb3NpdGlvbiwgcmVsYXRpdmUgdG8gdGhlIG1hc2sgcG9zaXRpb24gbGF5ZXIgZGVmaW5lZCBieSBtYXNrLW9yaWdpbiwgZm9yIGVhY2ggZGVmaW5lZCBtYXNrIGltYWdlLiJ9LHtuYW1lOiItd2Via2l0LW1hc2stcG9zaXRpb24teCIsc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiJbIDxsZW5ndGgtcGVyY2VudGFnZT4gfCBsZWZ0IHwgY2VudGVyIHwgcmlnaHQgXSMiLHJlbGV2YW5jZTowLGJyb3dzZXJzOlsiRTE4IiwiRkY0OSIsIlMzLjEiLCJDMSIsIk8xNSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy8td2Via2l0LW1hc2stcG9zaXRpb24teCJ9XSxkZXNjcmlwdGlvbjoiVGhlIC13ZWJraXQtbWFzay1wb3NpdGlvbi14IENTUyBwcm9wZXJ0eSBzZXRzIHRoZSBpbml0aWFsIGhvcml6b250YWwgcG9zaXRpb24gb2YgYSBtYXNrIGltYWdlLiJ9LHtuYW1lOiItd2Via2l0LW1hc2stcG9zaXRpb24teSIsc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiJbIDxsZW5ndGgtcGVyY2VudGFnZT4gfCB0b3AgfCBjZW50ZXIgfCBib3R0b20gXSMiLHJlbGV2YW5jZTowLGJyb3dzZXJzOlsiRTE4IiwiRkY0OSIsIlMzLjEiLCJDMSIsIk8xNSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy8td2Via2l0LW1hc2stcG9zaXRpb24teSJ9XSxkZXNjcmlwdGlvbjoiVGhlIC13ZWJraXQtbWFzay1wb3NpdGlvbi15IENTUyBwcm9wZXJ0eSBzZXRzIHRoZSBpbml0aWFsIHZlcnRpY2FsIHBvc2l0aW9uIG9mIGEgbWFzayBpbWFnZS4ifSx7bmFtZToiLXdlYmtpdC1tYXNrLXJlcGVhdC14IixzdGF0dXM6Im5vbnN0YW5kYXJkIixzeW50YXg6InJlcGVhdCB8IG5vLXJlcGVhdCB8IHNwYWNlIHwgcm91bmQiLHZhbHVlczpbe25hbWU6InJlcGVhdCJ9LHtuYW1lOiJuby1yZXBlYXQifSx7bmFtZToic3BhY2UifSx7bmFtZToicm91bmQifV0scmVsZXZhbmNlOjAsYnJvd3NlcnM6WyJFNzkiLCJTNSIsIkMzIiwiTzE1Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLy13ZWJraXQtbWFzay1yZXBlYXQteCJ9XSxkZXNjcmlwdGlvbjoiVGhlIC13ZWJraXQtbWFzay1yZXBlYXQteCBwcm9wZXJ0eSBzcGVjaWZpZXMgd2hldGhlciBhbmQgaG93IGEgbWFzayBpbWFnZSBpcyByZXBlYXRlZCAodGlsZWQpIGhvcml6b250YWxseS4ifSx7bmFtZToiLXdlYmtpdC1tYXNrLXJlcGVhdC15IixzdGF0dXM6Im5vbnN0YW5kYXJkIixzeW50YXg6InJlcGVhdCB8IG5vLXJlcGVhdCB8IHNwYWNlIHwgcm91bmQiLHZhbHVlczpbe25hbWU6InJlcGVhdCJ9LHtuYW1lOiJuby1yZXBlYXQifSx7bmFtZToic3BhY2UifSx7bmFtZToicm91bmQifV0scmVsZXZhbmNlOjAsYnJvd3NlcnM6WyJFNzkiLCJTNSIsIkMzIiwiTzE1Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLy13ZWJraXQtbWFzay1yZXBlYXQteSJ9XSxkZXNjcmlwdGlvbjoiVGhlIC13ZWJraXQtbWFzay1yZXBlYXQteSBwcm9wZXJ0eSBzcGVjaWZpZXMgd2hldGhlciBhbmQgaG93IGEgbWFzayBpbWFnZSBpcyByZXBlYXRlZCAodGlsZWQpIHZlcnRpY2FsbHkuIn0se25hbWU6ImFjY2VudC1jb2xvciIsc3ludGF4OiJhdXRvIHwgPGNvbG9yPiIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRTkzIiwiRkY5MiIsIlMxNS40IiwiQzkzIiwiTzc5Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2FjY2VudC1jb2xvciJ9XSxkZXNjcmlwdGlvbjoiU2V0cyB0aGUgY29sb3Igb2YgdGhlIGVsZW1lbnRzIGFjY2VudCJ9LHtuYW1lOiJhbGlnbi10cmFja3MiLHN0YXR1czoiZXhwZXJpbWVudGFsIixzeW50YXg6Ilsgbm9ybWFsIHwgPGJhc2VsaW5lLXBvc2l0aW9uPiB8IDxjb250ZW50LWRpc3RyaWJ1dGlvbj4gfCA8b3ZlcmZsb3ctcG9zaXRpb24+PyA8Y29udGVudC1wb3NpdGlvbj4gXSMiLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkZGNzciXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYWxpZ24tdHJhY2tzIn1dLGRlc2NyaXB0aW9uOiJUaGUgYWxpZ24tdHJhY2tzIENTUyBwcm9wZXJ0eSBzZXRzIHRoZSBhbGlnbm1lbnQgaW4gdGhlIG1hc29ucnkgYXhpcyBmb3IgZ3JpZCBjb250YWluZXJzIHRoYXQgaGF2ZSBtYXNvbnJ5IGluIHRoZWlyIGJsb2NrIGF4aXMuIn0se25hbWU6ImFuaW1hdGlvbi1jb21wb3NpdGlvbiIsc3ludGF4OiI8c2luZ2xlLWFuaW1hdGlvbi1jb21wb3NpdGlvbj4jIixyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJFMTEyIiwiRkYxMTUiLCJTMTYiLCJDMTEyIiwiTzk4Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2FuaW1hdGlvbi1jb21wb3NpdGlvbiJ9XSxkZXNjcmlwdGlvbjoiVGhlIGNvbXBvc2l0ZSBvcGVyYXRpb24gdG8gdXNlIHdoZW4gbXVsdGlwbGUgYW5pbWF0aW9ucyBhZmZlY3QgdGhlIHNhbWUgcHJvcGVydHkuIn0se25hbWU6ImFuaW1hdGlvbi1yYW5nZSIsc3RhdHVzOiJleHBlcmltZW50YWwiLHN5bnRheDoiWyA8J2FuaW1hdGlvbi1yYW5nZS1zdGFydCc+IDwnYW5pbWF0aW9uLXJhbmdlLWVuZCc+PyBdIyIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRTExNSIsIkMxMTUiLCJPMTAxIl0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2FuaW1hdGlvbi1yYW5nZSJ9XSxkZXNjcmlwdGlvbjoiVGhlIGFuaW1hdGlvbi1yYW5nZSBDU1Mgc2hvcnRoYW5kIHByb3BlcnR5IGlzIHVzZWQgdG8gc2V0IHRoZSBzdGFydCBhbmQgZW5kIG9mIGFuIGFuaW1hdGlvbidzIGF0dGFjaG1lbnQgcmFuZ2UgYWxvbmcgaXRzIHRpbWVsaW5lLCBpLmUuIHdoZXJlIGFsb25nIHRoZSB0aW1lbGluZSBhbiBhbmltYXRpb24gd2lsbCBzdGFydCBhbmQgZW5kLiJ9LHtuYW1lOiJhbmltYXRpb24tcmFuZ2UtZW5kIixzdGF0dXM6ImV4cGVyaW1lbnRhbCIsc3ludGF4OiJbIG5vcm1hbCB8IDxsZW5ndGgtcGVyY2VudGFnZT4gfCA8dGltZWxpbmUtcmFuZ2UtbmFtZT4gPGxlbmd0aC1wZXJjZW50YWdlPj8gXSMiLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkUxMTUiLCJDMTE1IiwiTzEwMSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9hbmltYXRpb24tcmFuZ2UtZW5kIn1dLGRlc2NyaXB0aW9uOiJUaGUgYW5pbWF0aW9uLXJhbmdlLWVuZCBDU1MgcHJvcGVydHkgaXMgdXNlZCB0byBzZXQgdGhlIGVuZCBvZiBhbiBhbmltYXRpb24ncyBhdHRhY2htZW50IHJhbmdlIGFsb25nIGl0cyB0aW1lbGluZSwgaS5lLiB3aGVyZSBhbG9uZyB0aGUgdGltZWxpbmUgYW4gYW5pbWF0aW9uIHdpbGwgZW5kLiJ9LHtuYW1lOiJhbmltYXRpb24tcmFuZ2Utc3RhcnQiLHN0YXR1czoiZXhwZXJpbWVudGFsIixzeW50YXg6Ilsgbm9ybWFsIHwgPGxlbmd0aC1wZXJjZW50YWdlPiB8IDx0aW1lbGluZS1yYW5nZS1uYW1lPiA8bGVuZ3RoLXBlcmNlbnRhZ2U+PyBdIyIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRTExNSIsIkMxMTUiLCJPMTAxIl0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2FuaW1hdGlvbi1yYW5nZS1zdGFydCJ9XSxkZXNjcmlwdGlvbjoiVGhlIGFuaW1hdGlvbi1yYW5nZS1zdGFydCBDU1MgcHJvcGVydHkgaXMgdXNlZCB0byBzZXQgdGhlIHN0YXJ0IG9mIGFuIGFuaW1hdGlvbidzIGF0dGFjaG1lbnQgcmFuZ2UgYWxvbmcgaXRzIHRpbWVsaW5lLCBpLmUuIHdoZXJlIGFsb25nIHRoZSB0aW1lbGluZSBhbiBhbmltYXRpb24gd2lsbCBzdGFydC4ifSx7bmFtZToiYW5pbWF0aW9uLXRpbWVsaW5lIixzdGF0dXM6ImV4cGVyaW1lbnRhbCIsc3ludGF4OiI8c2luZ2xlLWFuaW1hdGlvbi10aW1lbGluZT4jIixyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJFMTE1IiwiRkYxMTAiLCJDMTE1IiwiTzEwMSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9hbmltYXRpb24tdGltZWxpbmUifV0sZGVzY3JpcHRpb246IlNwZWNpZmllcyB0aGUgbmFtZXMgb2Ygb25lIG9yIG1vcmUgQHNjcm9sbC10aW1lbGluZSBhdC1ydWxlcyB0byBkZXNjcmliZSB0aGUgZWxlbWVudCdzIHNjcm9sbCBhbmltYXRpb25zLiJ9LHtuYW1lOiJhcHBlYXJhbmNlIixzeW50YXg6Im5vbmUgfCBhdXRvIHwgdGV4dGZpZWxkIHwgbWVudWxpc3QtYnV0dG9uIHwgPGNvbXBhdC1hdXRvPiIscmVsZXZhbmNlOjY5LGJyb3dzZXJzOlsiRTg0IiwiRkY4MCIsIlMxNS40IiwiQzg0IiwiTzcwIl0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2FwcGVhcmFuY2UifV0sZGVzY3JpcHRpb246IkNoYW5nZXMgdGhlIGFwcGVhcmFuY2Ugb2YgYnV0dG9ucyBhbmQgb3RoZXIgY29udHJvbHMgdG8gcmVzZW1ibGUgbmF0aXZlIGNvbnRyb2xzLiJ9LHtuYW1lOiJhc3BlY3QtcmF0aW8iLHN5bnRheDoiYXV0byB8IDxyYXRpbz4iLHJlbGV2YW5jZTo2MCxicm93c2VyczpbIkU4OCIsIkZGODkiLCJTMTUiLCJDODgiLCJPNzQiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYXNwZWN0LXJhdGlvIn1dLGRlc2NyaXB0aW9uOiJUaGUgYXNwZWN0LXJhdGlvICAgQ1NTIHByb3BlcnR5IHNldHMgYSBwcmVmZXJyZWQgYXNwZWN0IHJhdGlvIGZvciB0aGUgYm94LCB3aGljaCB3aWxsIGJlIHVzZWQgaW4gdGhlIGNhbGN1bGF0aW9uIG9mIGF1dG8gc2l6ZXMgYW5kIHNvbWUgb3RoZXIgbGF5b3V0IGZ1bmN0aW9ucy4ifSx7bmFtZToiYXppbXV0aCIsc3RhdHVzOiJvYnNvbGV0ZSIsc3ludGF4OiI8YW5nbGU+IHwgWyBbIGxlZnQtc2lkZSB8IGZhci1sZWZ0IHwgbGVmdCB8IGNlbnRlci1sZWZ0IHwgY2VudGVyIHwgY2VudGVyLXJpZ2h0IHwgcmlnaHQgfCBmYXItcmlnaHQgfCByaWdodC1zaWRlIF0gfHwgYmVoaW5kIF0gfCBsZWZ0d2FyZHMgfCByaWdodHdhcmRzIixyZWxldmFuY2U6MCxkZXNjcmlwdGlvbjoiSW4gY29tYmluYXRpb24gd2l0aCBlbGV2YXRpb24sIHRoZSBhemltdXRoIENTUyBwcm9wZXJ0eSBlbmFibGVzIGRpZmZlcmVudCBhdWRpbyBzb3VyY2VzIHRvIGJlIHBvc2l0aW9uZWQgc3BhdGlhbGx5IGZvciBhdXJhbCBwcmVzZW50YXRpb24uIFRoaXMgaXMgaW1wb3J0YW50IGluIHRoYXQgaXQgcHJvdmlkZXMgYSBuYXR1cmFsIHdheSB0byB0ZWxsIHNldmVyYWwgdm9pY2VzIGFwYXJ0LCBhcyBlYWNoIGNhbiBiZSBwb3NpdGlvbmVkIHRvIG9yaWdpbmF0ZSBhdCBhIGRpZmZlcmVudCBsb2NhdGlvbiBvbiB0aGUgc291bmQgc3RhZ2UuIFN0ZXJlbyBvdXRwdXQgcHJvZHVjZSBhIGxhdGVyYWwgc291bmQgc3RhZ2UsIHdoaWxlIGJpbmF1cmFsIGhlYWRwaG9uZXMgYW5kIG11bHRpLXNwZWFrZXIgc2V0dXBzIGFsbG93IGZvciBhIGZ1bGx5IHRocmVlLWRpbWVuc2lvbmFsIHN0YWdlLiJ9LHtuYW1lOiJiYWNrZHJvcC1maWx0ZXIiLHN5bnRheDoibm9uZSB8IDxmaWx0ZXItZnVuY3Rpb24tbGlzdD4iLHJlbGV2YW5jZTo1OCxicm93c2VyczpbIkUxNyIsIkZGMTAzIiwiUzkiLCJDNzYiLCJPNjMiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYmFja2Ryb3AtZmlsdGVyIn1dLGRlc2NyaXB0aW9uOiJUaGUgYmFja2Ryb3AtZmlsdGVyIENTUyBwcm9wZXJ0eSBsZXRzIHlvdSBhcHBseSBncmFwaGljYWwgZWZmZWN0cyBzdWNoIGFzIGJsdXJyaW5nIG9yIGNvbG9yIHNoaWZ0aW5nIHRvIHRoZSBhcmVhIGJlaGluZCBhbiBlbGVtZW50LiBCZWNhdXNlIGl0IGFwcGxpZXMgdG8gZXZlcnl0aGluZyBiZWhpbmQgdGhlIGVsZW1lbnQsIHRvIHNlZSB0aGUgZWZmZWN0IHlvdSBtdXN0IG1ha2UgdGhlIGVsZW1lbnQgb3IgaXRzIGJhY2tncm91bmQgYXQgbGVhc3QgcGFydGlhbGx5IHRyYW5zcGFyZW50LiJ9LHtuYW1lOiJib3JkZXItYmxvY2siLHN5bnRheDoiPCdib3JkZXItdG9wLXdpZHRoJz4gfHwgPCdib3JkZXItdG9wLXN0eWxlJz4gfHwgPGNvbG9yPiIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRTg3IiwiRkY2NiIsIlMxNC4xIiwiQzg3IiwiTzczIl0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2JvcmRlci1ibG9jayJ9XSxkZXNjcmlwdGlvbjoiVGhlIGJvcmRlci1ibG9jayBDU1MgcHJvcGVydHkgaXMgYSBzaG9ydGhhbmQgcHJvcGVydHkgZm9yIHNldHRpbmcgdGhlIGluZGl2aWR1YWwgbG9naWNhbCBibG9jayBib3JkZXIgcHJvcGVydHkgdmFsdWVzIGluIGEgc2luZ2xlIHBsYWNlIGluIHRoZSBzdHlsZSBzaGVldC4ifSx7bmFtZToiYm9yZGVyLWJsb2NrLWNvbG9yIixzeW50YXg6IjwnYm9yZGVyLXRvcC1jb2xvcic+ezEsMn0iLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkU4NyIsIkZGNjYiLCJTMTQuMSIsIkM4NyIsIk83MyJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9ib3JkZXItYmxvY2stY29sb3IifV0sZGVzY3JpcHRpb246IlRoZSBib3JkZXItYmxvY2stY29sb3IgQ1NTIHByb3BlcnR5IGRlZmluZXMgdGhlIGNvbG9yIG9mIHRoZSBsb2dpY2FsIGJsb2NrIGJvcmRlcnMgb2YgYW4gZWxlbWVudCwgd2hpY2ggbWFwcyB0byBhIHBoeXNpY2FsIGJvcmRlciBjb2xvciBkZXBlbmRpbmcgb24gdGhlIGVsZW1lbnQncyB3cml0aW5nIG1vZGUsIGRpcmVjdGlvbmFsaXR5LCBhbmQgdGV4dCBvcmllbnRhdGlvbi4gSXQgY29ycmVzcG9uZHMgdG8gdGhlIGJvcmRlci10b3AtY29sb3IgYW5kIGJvcmRlci1ib3R0b20tY29sb3IsIG9yIGJvcmRlci1yaWdodC1jb2xvciBhbmQgYm9yZGVyLWxlZnQtY29sb3IgcHJvcGVydHkgZGVwZW5kaW5nIG9uIHRoZSB2YWx1ZXMgZGVmaW5lZCBmb3Igd3JpdGluZy1tb2RlLCBkaXJlY3Rpb24sIGFuZCB0ZXh0LW9yaWVudGF0aW9uLiJ9LHtuYW1lOiJib3JkZXItYmxvY2stc3R5bGUiLHN5bnRheDoiPCdib3JkZXItdG9wLXN0eWxlJz4iLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkU4NyIsIkZGNjYiLCJTMTQuMSIsIkM4NyIsIk83MyJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9ib3JkZXItYmxvY2stc3R5bGUifV0sZGVzY3JpcHRpb246IlRoZSBib3JkZXItYmxvY2stc3R5bGUgQ1NTIHByb3BlcnR5IGRlZmluZXMgdGhlIHN0eWxlIG9mIHRoZSBsb2dpY2FsIGJsb2NrIGJvcmRlcnMgb2YgYW4gZWxlbWVudCwgd2hpY2ggbWFwcyB0byBhIHBoeXNpY2FsIGJvcmRlciBzdHlsZSBkZXBlbmRpbmcgb24gdGhlIGVsZW1lbnQncyB3cml0aW5nIG1vZGUsIGRpcmVjdGlvbmFsaXR5LCBhbmQgdGV4dCBvcmllbnRhdGlvbi4gSXQgY29ycmVzcG9uZHMgdG8gdGhlIGJvcmRlci10b3Atc3R5bGUgYW5kIGJvcmRlci1ib3R0b20tc3R5bGUsIG9yIGJvcmRlci1sZWZ0LXN0eWxlIGFuZCBib3JkZXItcmlnaHQtc3R5bGUgcHJvcGVydGllcyBkZXBlbmRpbmcgb24gdGhlIHZhbHVlcyBkZWZpbmVkIGZvciB3cml0aW5nLW1vZGUsIGRpcmVjdGlvbiwgYW5kIHRleHQtb3JpZW50YXRpb24uIn0se25hbWU6ImJvcmRlci1ibG9jay13aWR0aCIsc3ludGF4OiI8J2JvcmRlci10b3Atd2lkdGgnPiIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRTg3IiwiRkY2NiIsIlMxNC4xIiwiQzg3IiwiTzczIl0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2JvcmRlci1ibG9jay13aWR0aCJ9XSxkZXNjcmlwdGlvbjoiVGhlIGJvcmRlci1ibG9jay13aWR0aCBDU1MgcHJvcGVydHkgZGVmaW5lcyB0aGUgd2lkdGggb2YgdGhlIGxvZ2ljYWwgYmxvY2sgYm9yZGVycyBvZiBhbiBlbGVtZW50LCB3aGljaCBtYXBzIHRvIGEgcGh5c2ljYWwgYm9yZGVyIHdpZHRoIGRlcGVuZGluZyBvbiB0aGUgZWxlbWVudCdzIHdyaXRpbmcgbW9kZSwgZGlyZWN0aW9uYWxpdHksIGFuZCB0ZXh0IG9yaWVudGF0aW9uLiBJdCBjb3JyZXNwb25kcyB0byB0aGUgYm9yZGVyLXRvcC13aWR0aCBhbmQgYm9yZGVyLWJvdHRvbS13aWR0aCwgb3IgYm9yZGVyLWxlZnQtd2lkdGgsIGFuZCBib3JkZXItcmlnaHQtd2lkdGggcHJvcGVydHkgZGVwZW5kaW5nIG9uIHRoZSB2YWx1ZXMgZGVmaW5lZCBmb3Igd3JpdGluZy1tb2RlLCBkaXJlY3Rpb24sIGFuZCB0ZXh0LW9yaWVudGF0aW9uLiJ9LHtuYW1lOiJib3JkZXItZW5kLWVuZC1yYWRpdXMiLHN5bnRheDoiPGxlbmd0aC1wZXJjZW50YWdlPnsxLDJ9IixyZWxldmFuY2U6NTMsYnJvd3NlcnM6WyJFODkiLCJGRjY2IiwiUzE1IiwiQzg5IiwiTzc1Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2JvcmRlci1lbmQtZW5kLXJhZGl1cyJ9XSxkZXNjcmlwdGlvbjoiVGhlIGJvcmRlci1lbmQtZW5kLXJhZGl1cyBDU1MgcHJvcGVydHkgZGVmaW5lcyBhIGxvZ2ljYWwgYm9yZGVyIHJhZGl1cyBvbiBhbiBlbGVtZW50LCB3aGljaCBtYXBzIHRvIGEgcGh5c2ljYWwgYm9yZGVyIHJhZGl1cyB0aGF0IGRlcGVuZHMgb24gb24gdGhlIGVsZW1lbnQncyB3cml0aW5nLW1vZGUsIGRpcmVjdGlvbiwgYW5kIHRleHQtb3JpZW50YXRpb24uIn0se25hbWU6ImJvcmRlci1lbmQtc3RhcnQtcmFkaXVzIixzeW50YXg6IjxsZW5ndGgtcGVyY2VudGFnZT57MSwyfSIscmVsZXZhbmNlOjUzLGJyb3dzZXJzOlsiRTg5IiwiRkY2NiIsIlMxNSIsIkM4OSIsIk83NSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9ib3JkZXItZW5kLXN0YXJ0LXJhZGl1cyJ9XSxkZXNjcmlwdGlvbjoiVGhlIGJvcmRlci1lbmQtc3RhcnQtcmFkaXVzIENTUyBwcm9wZXJ0eSBkZWZpbmVzIGEgbG9naWNhbCBib3JkZXIgcmFkaXVzIG9uIGFuIGVsZW1lbnQsIHdoaWNoIG1hcHMgdG8gYSBwaHlzaWNhbCBib3JkZXIgcmFkaXVzIGRlcGVuZGluZyBvbiB0aGUgZWxlbWVudCdzIHdyaXRpbmctbW9kZSwgZGlyZWN0aW9uLCBhbmQgdGV4dC1vcmllbnRhdGlvbi4ifSx7bmFtZToiYm9yZGVyLWlubGluZSIsc3ludGF4OiI8J2JvcmRlci10b3Atd2lkdGgnPiB8fCA8J2JvcmRlci10b3Atc3R5bGUnPiB8fCA8Y29sb3I+IixyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJFODciLCJGRjY2IiwiUzE0LjEiLCJDODciLCJPNzMiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYm9yZGVyLWlubGluZSJ9XSxkZXNjcmlwdGlvbjoiVGhlIGJvcmRlci1pbmxpbmUgQ1NTIHByb3BlcnR5IGlzIGEgc2hvcnRoYW5kIHByb3BlcnR5IGZvciBzZXR0aW5nIHRoZSBpbmRpdmlkdWFsIGxvZ2ljYWwgaW5saW5lIGJvcmRlciBwcm9wZXJ0eSB2YWx1ZXMgaW4gYSBzaW5nbGUgcGxhY2UgaW4gdGhlIHN0eWxlIHNoZWV0LiJ9LHtuYW1lOiJib3JkZXItaW5saW5lLWNvbG9yIixzeW50YXg6IjwnYm9yZGVyLXRvcC1jb2xvcic+ezEsMn0iLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkU4NyIsIkZGNjYiLCJTMTQuMSIsIkM4NyIsIk83MyJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9ib3JkZXItaW5saW5lLWNvbG9yIn1dLGRlc2NyaXB0aW9uOiJUaGUgYm9yZGVyLWlubGluZS1jb2xvciBDU1MgcHJvcGVydHkgZGVmaW5lcyB0aGUgY29sb3Igb2YgdGhlIGxvZ2ljYWwgaW5saW5lIGJvcmRlcnMgb2YgYW4gZWxlbWVudCwgd2hpY2ggbWFwcyB0byBhIHBoeXNpY2FsIGJvcmRlciBjb2xvciBkZXBlbmRpbmcgb24gdGhlIGVsZW1lbnQncyB3cml0aW5nIG1vZGUsIGRpcmVjdGlvbmFsaXR5LCBhbmQgdGV4dCBvcmllbnRhdGlvbi4gSXQgY29ycmVzcG9uZHMgdG8gdGhlIGJvcmRlci10b3AtY29sb3IgYW5kIGJvcmRlci1ib3R0b20tY29sb3IsIG9yIGJvcmRlci1yaWdodC1jb2xvciBhbmQgYm9yZGVyLWxlZnQtY29sb3IgcHJvcGVydHkgZGVwZW5kaW5nIG9uIHRoZSB2YWx1ZXMgZGVmaW5lZCBmb3Igd3JpdGluZy1tb2RlLCBkaXJlY3Rpb24sIGFuZCB0ZXh0LW9yaWVudGF0aW9uLiJ9LHtuYW1lOiJib3JkZXItaW5saW5lLXN0eWxlIixzeW50YXg6IjwnYm9yZGVyLXRvcC1zdHlsZSc+IixyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJFODciLCJGRjY2IiwiUzE0LjEiLCJDODciLCJPNzMiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYm9yZGVyLWlubGluZS1zdHlsZSJ9XSxkZXNjcmlwdGlvbjoiVGhlIGJvcmRlci1pbmxpbmUtc3R5bGUgQ1NTIHByb3BlcnR5IGRlZmluZXMgdGhlIHN0eWxlIG9mIHRoZSBsb2dpY2FsIGlubGluZSBib3JkZXJzIG9mIGFuIGVsZW1lbnQsIHdoaWNoIG1hcHMgdG8gYSBwaHlzaWNhbCBib3JkZXIgc3R5bGUgZGVwZW5kaW5nIG9uIHRoZSBlbGVtZW50J3Mgd3JpdGluZyBtb2RlLCBkaXJlY3Rpb25hbGl0eSwgYW5kIHRleHQgb3JpZW50YXRpb24uIEl0IGNvcnJlc3BvbmRzIHRvIHRoZSBib3JkZXItdG9wLXN0eWxlIGFuZCBib3JkZXItYm90dG9tLXN0eWxlLCBvciBib3JkZXItbGVmdC1zdHlsZSBhbmQgYm9yZGVyLXJpZ2h0LXN0eWxlIHByb3BlcnRpZXMgZGVwZW5kaW5nIG9uIHRoZSB2YWx1ZXMgZGVmaW5lZCBmb3Igd3JpdGluZy1tb2RlLCBkaXJlY3Rpb24sIGFuZCB0ZXh0LW9yaWVudGF0aW9uLiJ9LHtuYW1lOiJib3JkZXItaW5saW5lLXdpZHRoIixzeW50YXg6IjwnYm9yZGVyLXRvcC13aWR0aCc+IixyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJFODciLCJGRjY2IiwiUzE0LjEiLCJDODciLCJPNzMiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYm9yZGVyLWlubGluZS13aWR0aCJ9XSxkZXNjcmlwdGlvbjoiVGhlIGJvcmRlci1pbmxpbmUtd2lkdGggQ1NTIHByb3BlcnR5IGRlZmluZXMgdGhlIHdpZHRoIG9mIHRoZSBsb2dpY2FsIGlubGluZSBib3JkZXJzIG9mIGFuIGVsZW1lbnQsIHdoaWNoIG1hcHMgdG8gYSBwaHlzaWNhbCBib3JkZXIgd2lkdGggZGVwZW5kaW5nIG9uIHRoZSBlbGVtZW50J3Mgd3JpdGluZyBtb2RlLCBkaXJlY3Rpb25hbGl0eSwgYW5kIHRleHQgb3JpZW50YXRpb24uIEl0IGNvcnJlc3BvbmRzIHRvIHRoZSBib3JkZXItdG9wLXdpZHRoIGFuZCBib3JkZXItYm90dG9tLXdpZHRoLCBvciBib3JkZXItbGVmdC13aWR0aCwgYW5kIGJvcmRlci1yaWdodC13aWR0aCBwcm9wZXJ0eSBkZXBlbmRpbmcgb24gdGhlIHZhbHVlcyBkZWZpbmVkIGZvciB3cml0aW5nLW1vZGUsIGRpcmVjdGlvbiwgYW5kIHRleHQtb3JpZW50YXRpb24uIn0se25hbWU6ImJvcmRlci1zdGFydC1lbmQtcmFkaXVzIixzeW50YXg6IjxsZW5ndGgtcGVyY2VudGFnZT57MSwyfSIscmVsZXZhbmNlOjUzLGJyb3dzZXJzOlsiRTg5IiwiRkY2NiIsIlMxNSIsIkM4OSIsIk83NSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9ib3JkZXItc3RhcnQtZW5kLXJhZGl1cyJ9XSxkZXNjcmlwdGlvbjoiVGhlIGJvcmRlci1zdGFydC1lbmQtcmFkaXVzIENTUyBwcm9wZXJ0eSBkZWZpbmVzIGEgbG9naWNhbCBib3JkZXIgcmFkaXVzIG9uIGFuIGVsZW1lbnQsIHdoaWNoIG1hcHMgdG8gYSBwaHlzaWNhbCBib3JkZXIgcmFkaXVzIGRlcGVuZGluZyBvbiB0aGUgZWxlbWVudCdzIHdyaXRpbmctbW9kZSwgZGlyZWN0aW9uLCBhbmQgdGV4dC1vcmllbnRhdGlvbi4ifSx7bmFtZToiYm9yZGVyLXN0YXJ0LXN0YXJ0LXJhZGl1cyIsc3ludGF4OiI8bGVuZ3RoLXBlcmNlbnRhZ2U+ezEsMn0iLHJlbGV2YW5jZTo1Myxicm93c2VyczpbIkU4OSIsIkZGNjYiLCJTMTUiLCJDODkiLCJPNzUiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYm9yZGVyLXN0YXJ0LXN0YXJ0LXJhZGl1cyJ9XSxkZXNjcmlwdGlvbjoiVGhlIGJvcmRlci1zdGFydC1zdGFydC1yYWRpdXMgQ1NTIHByb3BlcnR5IGRlZmluZXMgYSBsb2dpY2FsIGJvcmRlciByYWRpdXMgb24gYW4gZWxlbWVudCwgd2hpY2ggbWFwcyB0byBhIHBoeXNpY2FsIGJvcmRlciByYWRpdXMgdGhhdCBkZXBlbmRzIG9uIHRoZSBlbGVtZW50J3Mgd3JpdGluZy1tb2RlLCBkaXJlY3Rpb24sIGFuZCB0ZXh0LW9yaWVudGF0aW9uLiJ9LHtuYW1lOiJib3gtYWxpZ24iLHN0YXR1czoib2Jzb2xldGUiLHN5bnRheDoic3RhcnQgfCBjZW50ZXIgfCBlbmQgfCBiYXNlbGluZSB8IHN0cmV0Y2giLHZhbHVlczpbe25hbWU6InN0YXJ0In0se25hbWU6ImNlbnRlciJ9LHtuYW1lOiJlbmQifSx7bmFtZToiYmFzZWxpbmUifSx7bmFtZToic3RyZXRjaCJ9XSxyZWxldmFuY2U6MCxicm93c2VyczpbIkUxMiIsIkZGNDkiLCJTMyIsIkMxIiwiTzE1Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2JveC1hbGlnbiJ9XSxkZXNjcmlwdGlvbjoiVGhlIGJveC1hbGlnbiBDU1MgcHJvcGVydHkgc3BlY2lmaWVzIGhvdyBhbiBlbGVtZW50IGFsaWducyBpdHMgY29udGVudHMgYWNyb3NzIGl0cyBsYXlvdXQgaW4gYSBwZXJwZW5kaWN1bGFyIGRpcmVjdGlvbi4gVGhlIGVmZmVjdCBvZiB0aGUgcHJvcGVydHkgaXMgb25seSB2aXNpYmxlIGlmIHRoZXJlIGlzIGV4dHJhIHNwYWNlIGluIHRoZSBib3guIn0se25hbWU6ImJveC1kaXJlY3Rpb24iLHN0YXR1czoib2Jzb2xldGUiLHN5bnRheDoibm9ybWFsIHwgcmV2ZXJzZSB8IGluaGVyaXQiLHZhbHVlczpbe25hbWU6Im5vcm1hbCJ9LHtuYW1lOiJyZXZlcnNlIn0se25hbWU6ImluaGVyaXQifV0scmVsZXZhbmNlOjAsYnJvd3NlcnM6WyJFMTIiLCJGRjQ5IiwiUzMiLCJDMSIsIk8xNSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9ib3gtZGlyZWN0aW9uIn1dLGRlc2NyaXB0aW9uOiJUaGUgYm94LWRpcmVjdGlvbiBDU1MgcHJvcGVydHkgc3BlY2lmaWVzIHdoZXRoZXIgYSBib3ggbGF5cyBvdXQgaXRzIGNvbnRlbnRzIG5vcm1hbGx5IChmcm9tIHRoZSB0b3Agb3IgbGVmdCBlZGdlKSwgb3IgaW4gcmV2ZXJzZSAoZnJvbSB0aGUgYm90dG9tIG9yIHJpZ2h0IGVkZ2UpLiJ9LHtuYW1lOiJib3gtZmxleCIsc3RhdHVzOiJvYnNvbGV0ZSIsc3ludGF4OiI8bnVtYmVyPiIscmVsZXZhbmNlOjAsYnJvd3NlcnM6WyJFMTIiLCJGRjQ5IiwiUzMiLCJDMSIsIk8xNSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9ib3gtZmxleCJ9XSxkZXNjcmlwdGlvbjoiVGhlIC1tb3otYm94LWZsZXggYW5kIC13ZWJraXQtYm94LWZsZXggQ1NTIHByb3BlcnRpZXMgc3BlY2lmeSBob3cgYSAtbW96LWJveCBvciAtd2Via2l0LWJveCBncm93cyB0byBmaWxsIHRoZSBib3ggdGhhdCBjb250YWlucyBpdCwgaW4gdGhlIGRpcmVjdGlvbiBvZiB0aGUgY29udGFpbmluZyBib3gncyBsYXlvdXQuIn0se25hbWU6ImJveC1mbGV4LWdyb3VwIixzdGF0dXM6Im9ic29sZXRlIixzeW50YXg6IjxpbnRlZ2VyPiIscmVsZXZhbmNlOjAsYnJvd3NlcnM6WyJTMyIsIkMxIiwiTzE1Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2JveC1mbGV4LWdyb3VwIn1dLGRlc2NyaXB0aW9uOiJUaGUgYm94LWZsZXgtZ3JvdXAgQ1NTIHByb3BlcnR5IGFzc2lnbnMgdGhlIGZsZXhib3gncyBjaGlsZCBlbGVtZW50cyB0byBhIGZsZXggZ3JvdXAuIn0se25hbWU6ImJveC1saW5lcyIsc3RhdHVzOiJvYnNvbGV0ZSIsc3ludGF4OiJzaW5nbGUgfCBtdWx0aXBsZSIsdmFsdWVzOlt7bmFtZToic2luZ2xlIn0se25hbWU6Im11bHRpcGxlIn1dLHJlbGV2YW5jZTowLGJyb3dzZXJzOlsiUzMiLCJDMSIsIk8xNSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9ib3gtbGluZXMifV0sZGVzY3JpcHRpb246IlRoZSBib3gtbGluZXMgQ1NTIHByb3BlcnR5IGRldGVybWluZXMgd2hldGhlciB0aGUgYm94IG1heSBoYXZlIGEgc2luZ2xlIG9yIG11bHRpcGxlIGxpbmVzIChyb3dzIGZvciBob3Jpem9udGFsbHkgb3JpZW50ZWQgYm94ZXMsIGNvbHVtbnMgZm9yIHZlcnRpY2FsbHkgb3JpZW50ZWQgYm94ZXMpLiJ9LHtuYW1lOiJib3gtb3JkaW5hbC1ncm91cCIsc3RhdHVzOiJvYnNvbGV0ZSIsc3ludGF4OiI8aW50ZWdlcj4iLHJlbGV2YW5jZTowLGJyb3dzZXJzOlsiRTEyIiwiRkY0OSIsIlMzIiwiQzEiLCJPMTUiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYm94LW9yZGluYWwtZ3JvdXAifV0sZGVzY3JpcHRpb246IlRoZSBib3gtb3JkaW5hbC1ncm91cCBDU1MgcHJvcGVydHkgYXNzaWducyB0aGUgZmxleGJveCdzIGNoaWxkIGVsZW1lbnRzIHRvIGFuIG9yZGluYWwgZ3JvdXAuIn0se25hbWU6ImJveC1vcmllbnQiLHN0YXR1czoib2Jzb2xldGUiLHN5bnRheDoiaG9yaXpvbnRhbCB8IHZlcnRpY2FsIHwgaW5saW5lLWF4aXMgfCBibG9jay1heGlzIHwgaW5oZXJpdCIsdmFsdWVzOlt7bmFtZToiaG9yaXpvbnRhbCJ9LHtuYW1lOiJ2ZXJ0aWNhbCJ9LHtuYW1lOiJpbmxpbmUtYXhpcyJ9LHtuYW1lOiJibG9jay1heGlzIn0se25hbWU6ImluaGVyaXQifV0scmVsZXZhbmNlOjAsYnJvd3NlcnM6WyJFMTIiLCJGRjQ5IiwiUzMiLCJDMSIsIk8xNSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9ib3gtb3JpZW50In1dLGRlc2NyaXB0aW9uOiJUaGUgYm94LW9yaWVudCBDU1MgcHJvcGVydHkgc3BlY2lmaWVzIHdoZXRoZXIgYW4gZWxlbWVudCBsYXlzIG91dCBpdHMgY29udGVudHMgaG9yaXpvbnRhbGx5IG9yIHZlcnRpY2FsbHkuIn0se25hbWU6ImJveC1wYWNrIixzdGF0dXM6Im9ic29sZXRlIixzeW50YXg6InN0YXJ0IHwgY2VudGVyIHwgZW5kIHwganVzdGlmeSIsdmFsdWVzOlt7bmFtZToic3RhcnQifSx7bmFtZToiY2VudGVyIn0se25hbWU6ImVuZCJ9LHtuYW1lOiJqdXN0aWZ5In1dLHJlbGV2YW5jZTowLGJyb3dzZXJzOlsiRTEyIiwiRkY0OSIsIlMzIiwiQzEiLCJPMTUiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvYm94LXBhY2sifV0sZGVzY3JpcHRpb246IlRoZSAtbW96LWJveC1wYWNrIGFuZCAtd2Via2l0LWJveC1wYWNrIENTUyBwcm9wZXJ0aWVzIHNwZWNpZnkgaG93IGEgLW1vei1ib3ggb3IgLXdlYmtpdC1ib3ggcGFja3MgaXRzIGNvbnRlbnRzIGluIHRoZSBkaXJlY3Rpb24gb2YgaXRzIGxheW91dC4gVGhlIGVmZmVjdCBvZiB0aGlzIGlzIG9ubHkgdmlzaWJsZSBpZiB0aGVyZSBpcyBleHRyYSBzcGFjZSBpbiB0aGUgYm94LiJ9LHtuYW1lOiJjYXJldCIsc3ludGF4OiI8J2NhcmV0LWNvbG9yJz4gfHwgPCdjYXJldC1zaGFwZSc+IixyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlNob3J0aGFuZCBmb3Igc2V0dGluZyBjYXJldC1jb2xvciBhbmQgY2FyZXQtc2hhcGUuIn0se25hbWU6ImNhcmV0LXNoYXBlIixzeW50YXg6ImF1dG8gfCBiYXIgfCBibG9jayB8IHVuZGVyc2NvcmUiLHZhbHVlczpbe25hbWU6ImF1dG8ifSx7bmFtZToiYmFyIn0se25hbWU6ImJsb2NrIn0se25hbWU6InVuZGVyc2NvcmUifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgdGhlIGRlc2lyZWQgc2hhcGUgb2YgdGhlIHRleHQgaW5zZXJ0aW9uIGNhcmV0LiJ9LHtuYW1lOiJjb2xvci1zY2hlbWUiLHN5bnRheDoibm9ybWFsIHwgWyBsaWdodCB8IGRhcmsgfCA8Y3VzdG9tLWlkZW50PiBdKyAmJiBvbmx5PyIscmVsZXZhbmNlOjU3LGJyb3dzZXJzOlsiRTgxIiwiRkY5NiIsIlMxMyIsIkM4MSIsIk82OCJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9jb2xvci1zY2hlbWUifV0sZGVzY3JpcHRpb246IlRoZSBjb2xvci1zY2hlbWUgQ1NTIHByb3BlcnR5IGFsbG93cyBhbiBlbGVtZW50IHRvIGluZGljYXRlIHdoaWNoIGNvbG9yIHNjaGVtZXMgaXQgY2FuIGNvbWZvcnRhYmx5IGJlIHJlbmRlcmVkIGluLiJ9LHtuYW1lOiJjb250YWluLWludHJpbnNpYy1zaXplIixzeW50YXg6IlsgYXV0bz8gWyBub25lIHwgPGxlbmd0aD4gXSBdezEsMn0iLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkU4MyIsIkZGMTA3IiwiUzE3IiwiQzgzIiwiTzY5Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2NvbnRhaW4taW50cmluc2ljLXNpemUifV0sZGVzY3JpcHRpb246IlNpemUgb2YgYW4gZWxlbWVudCB3aGVuIHRoZSBlbGVtZW50IGlzIHN1YmplY3QgdG8gc2l6ZSBjb250YWlubWVudC4ifSx7bmFtZToiY29udGFpbi1pbnRyaW5zaWMtYmxvY2stc2l6ZSIsc3ludGF4OiJhdXRvPyBbIG5vbmUgfCA8bGVuZ3RoPiBdIixyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJFOTUiLCJGRjEwNyIsIlMxNyIsIkM5NSIsIk84MSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9jb250YWluLWludHJpbnNpYy1jb250YWluLWludHJpbnNpYy1ibG9jay1zaXplIn1dLGRlc2NyaXB0aW9uOiJCbG9jayBzaXplIG9mIGFuIGVsZW1lbnQgd2hlbiB0aGUgZWxlbWVudCBpcyBzdWJqZWN0IHRvIHNpemUgY29udGFpbm1lbnQuIn0se25hbWU6ImNvbnRhaW4taW50cmluc2ljLWhlaWdodCIsc3ludGF4OiJhdXRvPyBbIG5vbmUgfCA8bGVuZ3RoPiBdIixyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJFOTUiLCJGRjEwNyIsIlMxNyIsIkM5NSIsIk84MSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9jb250YWluLWludHJpbnNpYy1oZWlnaHQifV0sZGVzY3JpcHRpb246IkhlaWdodCBvZiBhbiBlbGVtZW50IHdoZW4gdGhlIGVsZW1lbnQgaXMgc3ViamVjdCB0byBzaXplIGNvbnRhaW5tZW50LiJ9LHtuYW1lOiJjb250YWluLWludHJpbnNpYy1pbmxpbmUtc2l6ZSIsc3ludGF4OiJhdXRvPyBbIG5vbmUgfCA8bGVuZ3RoPiBdIixyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJFOTUiLCJGRjEwNyIsIlMxNyIsIkM5NSIsIk84MSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9jb250YWluLWludHJpbnNpYy1jb250YWluLWludHJpbnNpYy1pbmxpbmUtc2l6ZSJ9XSxkZXNjcmlwdGlvbjoiSW5saW5lIHNpemUgb2YgYW4gZWxlbWVudCB3aGVuIHRoZSBlbGVtZW50IGlzIHN1YmplY3QgdG8gc2l6ZSBjb250YWlubWVudC4ifSx7bmFtZToiY29udGFpbi1pbnRyaW5zaWMtd2lkdGgiLHN5bnRheDoiYXV0bz8gWyBub25lIHwgPGxlbmd0aD4gXSIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRTk1IiwiRkYxMDciLCJTMTciLCJDOTUiLCJPODEiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvY29udGFpbi1pbnRyaW5zaWMtd2lkdGgifV0sZGVzY3JpcHRpb246IldpZHRoIG9mIGFuIGVsZW1lbnQgd2hlbiB0aGUgZWxlbWVudCBpcyBzdWJqZWN0IHRvIHNpemUgY29udGFpbm1lbnQuIn0se25hbWU6ImNvbnRhaW5lciIsc3ludGF4OiI8J2NvbnRhaW5lci1uYW1lJz4gWyAvIDwnY29udGFpbmVyLXR5cGUnPiBdPyIscmVsZXZhbmNlOjUzLGJyb3dzZXJzOlsiRTEwNSIsIkZGMTEwIiwiUzE2IiwiQzEwNSIsIk85MSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9jb250YWluZXIifV0sZGVzY3JpcHRpb246IlRoZSBjb250YWluZXIgc2hvcnRoYW5kIENTUyBwcm9wZXJ0eSBlc3RhYmxpc2hlcyB0aGUgZWxlbWVudCBhcyBhIHF1ZXJ5IGNvbnRhaW5lciBhbmQgc3BlY2lmaWVzIHRoZSBuYW1lIG9yIG5hbWUgZm9yIHRoZSBjb250YWlubWVudCBjb250ZXh0IHVzZWQgaW4gYSBjb250YWluZXIgcXVlcnkuIn0se25hbWU6ImNvbnRhaW5lci1uYW1lIixzeW50YXg6Im5vbmUgfCA8Y3VzdG9tLWlkZW50PisiLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkUxMDUiLCJGRjExMCIsIlMxNiIsIkMxMDUiLCJPOTEiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvY29udGFpbmVyLW5hbWUifV0sZGVzY3JpcHRpb246IlRoZSBjb250YWluZXItbmFtZSBDU1MgcHJvcGVydHkgc3BlY2lmaWVzIGEgbGlzdCBvZiBxdWVyeSBjb250YWluZXIgbmFtZXMgdXNlZCBieSB0aGUgQGNvbnRhaW5lciBhdC1ydWxlIGluIGEgY29udGFpbmVyIHF1ZXJ5LiJ9LHtuYW1lOiJjb250YWluZXItdHlwZSIsc3ludGF4OiJub3JtYWwgfCBzaXplIHwgaW5saW5lLXNpemUiLHZhbHVlczpbe25hbWU6Im5vcm1hbCJ9LHtuYW1lOiJzaXplIn0se25hbWU6ImlubGluZS1zaXplIn1dLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkUxMDUiLCJGRjExMCIsIlMxNiIsIkMxMDUiLCJPOTEiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvY29udGFpbmVyLXR5cGUifV0sZGVzY3JpcHRpb246IlRoZSBjb250YWluZXItdHlwZSBDU1MgcHJvcGVydHkgaXMgdXNlZCB0byBkZWZpbmUgdGhlIHR5cGUgb2YgY29udGFpbm1lbnQgdXNlZCBpbiBhIGNvbnRhaW5lciBxdWVyeS4ifSx7bmFtZToiY29udGVudC12aXNpYmlsaXR5IixzeW50YXg6InZpc2libGUgfCBhdXRvIHwgaGlkZGVuIix2YWx1ZXM6W3tuYW1lOiJ2aXNpYmxlIn0se25hbWU6ImF1dG8ifSx7bmFtZToiaGlkZGVuIn1dLHJlbGV2YW5jZTo1Mixicm93c2VyczpbIkU4NSIsIkZGcHJldmlldyIsIlNwcmV2aWV3IiwiQzg1IiwiTzcxIl0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2NvbnRlbnQtdmlzaWJpbGl0eSJ9XSxkZXNjcmlwdGlvbjoiQ29udHJvbHMgd2hldGhlciBvciBub3QgYW4gZWxlbWVudCByZW5kZXJzIGl0cyBjb250ZW50cyBhdCBhbGwsIGFsb25nIHdpdGggZm9yY2luZyBhIHN0cm9uZyBzZXQgb2YgY29udGFpbm1lbnRzLCBhbGxvd2luZyB1c2VyIGFnZW50cyB0byBwb3RlbnRpYWxseSBvbWl0IGxhcmdlIHN3YXRoZXMgb2YgbGF5b3V0IGFuZCByZW5kZXJpbmcgd29yayB1bnRpbCBpdCBiZWNvbWVzIG5lZWRlZC4ifSx7bmFtZToiY291bnRlci1zZXQiLHN5bnRheDoiWyA8Y291bnRlci1uYW1lPiA8aW50ZWdlcj4/IF0rIHwgbm9uZSIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRTg1IiwiRkY2OCIsIlMxNy4yIiwiQzg1IiwiTzcxIl0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2NvdW50ZXItc2V0In1dLGRlc2NyaXB0aW9uOiJUaGUgY291bnRlci1zZXQgQ1NTIHByb3BlcnR5IHNldHMgYSBDU1MgY291bnRlciB0byBhIGdpdmVuIHZhbHVlLiBJdCBtYW5pcHVsYXRlcyB0aGUgdmFsdWUgb2YgZXhpc3RpbmcgY291bnRlcnMsIGFuZCB3aWxsIG9ubHkgY3JlYXRlIG5ldyBjb3VudGVycyBpZiB0aGVyZSBpc24ndCBhbHJlYWR5IGEgY291bnRlciBvZiB0aGUgZ2l2ZW4gbmFtZSBvbiB0aGUgZWxlbWVudC4ifSx7bmFtZToiZm9udC1vcHRpY2FsLXNpemluZyIsc3ludGF4OiJhdXRvIHwgbm9uZSIsdmFsdWVzOlt7bmFtZToiYXV0byJ9LHtuYW1lOiJub25lIn1dLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkUxNyIsIkZGNjIiLCJTMTEiLCJDNzkiLCJPNjYiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvZm9udC1vcHRpY2FsLXNpemluZyJ9XSxkZXNjcmlwdGlvbjoiVGhlIGZvbnQtb3B0aWNhbC1zaXppbmcgQ1NTIHByb3BlcnR5IGFsbG93cyBkZXZlbG9wZXJzIHRvIGNvbnRyb2wgd2hldGhlciBicm93c2VycyByZW5kZXIgdGV4dCB3aXRoIHNsaWdodGx5IGRpZmZlcmluZyB2aXN1YWwgcmVwcmVzZW50YXRpb25zIHRvIG9wdGltaXplIHZpZXdpbmcgYXQgZGlmZmVyZW50IHNpemVzLCBvciBub3QuIFRoaXMgb25seSB3b3JrcyBmb3IgZm9udHMgdGhhdCBoYXZlIGFuIG9wdGljYWwgc2l6ZSB2YXJpYXRpb24gYXhpcy4ifSx7bmFtZToiZm9udC1wYWxldHRlIixzeW50YXg6Im5vcm1hbCB8IGxpZ2h0IHwgZGFyayB8IDxwYWxldHRlLWlkZW50aWZpZXI+IixyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJFMTAxIiwiRkYxMDciLCJTMTUuNCIsIkMxMDEiLCJPODciXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvZm9udC1wYWxldHRlIn1dLGRlc2NyaXB0aW9uOiJUaGUgZm9udC1wYWxldHRlIENTUyBwcm9wZXJ0eSBhbGxvd3Mgc3BlY2lmeWluZyBvbmUgb2YgdGhlIG1hbnkgcGFsZXR0ZXMgY29udGFpbmVkIGluIGEgZm9udCB0aGF0IGEgdXNlciBhZ2VudCBzaG91bGQgdXNlIGZvciB0aGUgZm9udC4gVXNlcnMgY2FuIGFsc28gb3ZlcnJpZGUgdGhlIHZhbHVlcyBpbiBhIHBhbGV0dGUgb3IgY3JlYXRlIGEgbmV3IHBhbGV0dGUgYnkgdXNpbmcgdGhlIEBmb250LXBhbGV0dGUtdmFsdWVzIGF0LXJ1bGUuIn0se25hbWU6ImZvbnQtdmFyaWF0aW9uLXNldHRpbmdzIixhdFJ1bGU6IkBmb250LWZhY2UiLHN5bnRheDoibm9ybWFsIHwgWyA8c3RyaW5nPiA8bnVtYmVyPiBdIyIscmVsZXZhbmNlOjUxLGJyb3dzZXJzOlsiRTE3IiwiRkY2MiIsIlMxMSIsIkM2MiIsIk80OSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9mb250LXZhcmlhdGlvbi1zZXR0aW5ncyJ9XSxkZXNjcmlwdGlvbjoiVGhlIGZvbnQtdmFyaWF0aW9uLXNldHRpbmdzIENTUyBwcm9wZXJ0eSBwcm92aWRlcyBsb3ctbGV2ZWwgY29udHJvbCBvdmVyIE9wZW5UeXBlIG9yIFRydWVUeXBlIGZvbnQgdmFyaWF0aW9ucywgYnkgc3BlY2lmeWluZyB0aGUgZm91ciBsZXR0ZXIgYXhpcyBuYW1lcyBvZiB0aGUgZmVhdHVyZXMgeW91IHdhbnQgdG8gdmFyeSwgYWxvbmcgd2l0aCB0aGVpciB2YXJpYXRpb24gdmFsdWVzLiJ9LHtuYW1lOiJmb250LXNtb290aCIsc3RhdHVzOiJub25zdGFuZGFyZCIsc3ludGF4OiJhdXRvIHwgbmV2ZXIgfCBhbHdheXMgfCA8YWJzb2x1dGUtc2l6ZT4gfCA8bGVuZ3RoPiIscmVsZXZhbmNlOjAsYnJvd3NlcnM6WyJFNzkiLCJGRjI1IiwiUzQiLCJDNSIsIk8xNSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9mb250LXNtb290aCJ9XSxkZXNjcmlwdGlvbjoiVGhlIGZvbnQtc21vb3RoIENTUyBwcm9wZXJ0eSBjb250cm9scyB0aGUgYXBwbGljYXRpb24gb2YgYW50aS1hbGlhc2luZyB3aGVuIGZvbnRzIGFyZSByZW5kZXJlZC4ifSx7bmFtZToiZm9udC1zeW50aGVzaXMtcG9zaXRpb24iLHN5bnRheDoiYXV0byB8IG5vbmUiLHZhbHVlczpbe25hbWU6ImF1dG8ifSx7bmFtZToibm9uZSJ9XSxyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJGRjExOCJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9mb250LXN5bnRoZXNpcy1wb3NpdGlvbiJ9XSxkZXNjcmlwdGlvbjonVGhlIGZvbnQtc3ludGhlc2lzLXBvc2l0aW9uIENTUyBwcm9wZXJ0eSBsZXRzIHlvdSBzcGVjaWZ5IHdoZXRoZXIgb3Igbm90IGEgYnJvd3NlciBtYXkgc3ludGhlc2l6ZSB0aGUgc3Vic2NyaXB0IGFuZCBzdXBlcnNjcmlwdCAicG9zaXRpb24iIHR5cGVmYWNlcyB3aGVuIHRoZXkgYXJlIG1pc3NpbmcgaW4gYSBmb250IGZhbWlseSwgd2hpbGUgdXNpbmcgZm9udC12YXJpYW50LXBvc2l0aW9uIHRvIHNldCB0aGUgcG9zaXRpb25zLid9LHtuYW1lOiJmb250LXN5bnRoZXNpcy1zbWFsbC1jYXBzIixzeW50YXg6ImF1dG8gfCBub25lIix2YWx1ZXM6W3tuYW1lOiJhdXRvIn0se25hbWU6Im5vbmUifV0scmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRTk3IiwiRkYxMTEiLCJTMTYuNCIsIkM5NyIsIk84MyJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9mb250LXN5bnRoZXNpcy1zbWFsbC1jYXBzIn1dLGRlc2NyaXB0aW9uOiJUaGUgZm9udC1zeW50aGVzaXMtc21hbGwtY2FwcyBDU1MgcHJvcGVydHkgbGV0cyB5b3Ugc3BlY2lmeSB3aGV0aGVyIG9yIG5vdCB0aGUgYnJvd3NlciBtYXkgc3ludGhlc2l6ZSBzbWFsbC1jYXBzIHR5cGVmYWNlIHdoZW4gaXQgaXMgbWlzc2luZyBpbiBhIGZvbnQgZmFtaWx5LiBTbWFsbC1jYXBzIGdseXBocyB0eXBpY2FsbHkgdXNlIHRoZSBmb3JtIG9mIHVwcGVyY2FzZSBsZXR0ZXJzIGJ1dCBhcmUgcmVkdWNlZCB0byB0aGUgc2l6ZSBvZiBsb3dlcmNhc2UgbGV0dGVycy4ifSx7bmFtZToiZm9udC1zeW50aGVzaXMtc3R5bGUiLHN5bnRheDoiYXV0byB8IG5vbmUiLHZhbHVlczpbe25hbWU6ImF1dG8ifSx7bmFtZToibm9uZSJ9XSxyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJFOTciLCJGRjExMSIsIlMxNi40IiwiQzk3IiwiTzgzIl0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2ZvbnQtc3ludGhlc2lzLXN0eWxlIn1dLGRlc2NyaXB0aW9uOiJUaGUgZm9udC1zeW50aGVzaXMtc3R5bGUgQ1NTIHByb3BlcnR5IGxldHMgeW91IHNwZWNpZnkgd2hldGhlciBvciBub3QgdGhlIGJyb3dzZXIgbWF5IHN5bnRoZXNpemUgdGhlIG9ibGlxdWUgdHlwZWZhY2Ugd2hlbiBpdCBpcyBtaXNzaW5nIGluIGEgZm9udCBmYW1pbHkuIn0se25hbWU6ImZvbnQtc3ludGhlc2lzLXdlaWdodCIsc3ludGF4OiJhdXRvIHwgbm9uZSIsdmFsdWVzOlt7bmFtZToiYXV0byJ9LHtuYW1lOiJub25lIn1dLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkU5NyIsIkZGMTExIiwiUzE2LjQiLCJDOTciLCJPODMiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvZm9udC1zeW50aGVzaXMtd2VpZ2h0In1dLGRlc2NyaXB0aW9uOiJUaGUgZm9udC1zeW50aGVzaXMtd2VpZ2h0IENTUyBwcm9wZXJ0eSBsZXRzIHlvdSBzcGVjaWZ5IHdoZXRoZXIgb3Igbm90IHRoZSBicm93c2VyIG1heSBzeW50aGVzaXplIHRoZSBib2xkIHR5cGVmYWNlIHdoZW4gaXQgaXMgbWlzc2luZyBpbiBhIGZvbnQgZmFtaWx5LiJ9LHtuYW1lOiJmb250LXZhcmlhbnQtZW1vamkiLHN5bnRheDoibm9ybWFsIHwgdGV4dCB8IGVtb2ppIHwgdW5pY29kZSIsdmFsdWVzOlt7bmFtZToibm9ybWFsIn0se25hbWU6InRleHQifSx7bmFtZToiZW1vamkifSx7bmFtZToidW5pY29kZSJ9XSxyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJGRjEwOCJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9mb250LXZhcmlhbnQtZW1vamkifV0sZGVzY3JpcHRpb246IlRoZSBmb250LXZhcmlhbnQtZW1vamkgQ1NTIHByb3BlcnR5IHNwZWNpZmllcyB0aGUgZGVmYXVsdCBwcmVzZW50YXRpb24gc3R5bGUgZm9yIGRpc3BsYXlpbmcgZW1vamlzLiJ9LHtuYW1lOiJmb3JjZWQtY29sb3ItYWRqdXN0IixzeW50YXg6ImF1dG8gfCBub25lIix2YWx1ZXM6W3tuYW1lOiJhdXRvIn0se25hbWU6Im5vbmUifV0scmVsZXZhbmNlOjU3LGJyb3dzZXJzOlsiRTc5IiwiRkYxMTMiLCJDODkiLCJJRTEwIiwiTzc1Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2ZvcmNlZC1jb2xvci1hZGp1c3QifV0sZGVzY3JpcHRpb246IkFsbG93cyBhdXRob3JzIHRvIG9wdCBjZXJ0YWluIGVsZW1lbnRzIG91dCBvZiBmb3JjZWQgY29sb3JzIG1vZGUuIFRoaXMgdGhlbiByZXN0b3JlcyB0aGUgY29udHJvbCBvZiB0aG9zZSB2YWx1ZXMgdG8gQ1NTIn0se25hbWU6ImdhcCIsc3ludGF4OiI8J3Jvdy1nYXAnPiA8J2NvbHVtbi1nYXAnPj8iLHJlbGV2YW5jZTo3MCxicm93c2VyczpbIkUxNiIsIkZGNTIiLCJTMTAuMSIsIkM1NyIsIk80NCJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9nYXAifV0sZGVzY3JpcHRpb246IlRoZSBnYXAgQ1NTIHByb3BlcnR5IGlzIGEgc2hvcnRoYW5kIHByb3BlcnR5IGZvciByb3ctZ2FwIGFuZCBjb2x1bW4tZ2FwIHNwZWNpZnlpbmcgdGhlIGd1dHRlcnMgYmV0d2VlbiBncmlkIHJvd3MgYW5kIGNvbHVtbnMuIn0se25hbWU6ImhhbmdpbmctcHVuY3R1YXRpb24iLHN5bnRheDoibm9uZSB8IFsgZmlyc3QgfHwgWyBmb3JjZS1lbmQgfCBhbGxvdy1lbmQgXSB8fCBsYXN0IF0iLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIlMxMCJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9oYW5naW5nLXB1bmN0dWF0aW9uIn1dLGRlc2NyaXB0aW9uOiJUaGUgaGFuZ2luZy1wdW5jdHVhdGlvbiBDU1MgcHJvcGVydHkgc3BlY2lmaWVzIHdoZXRoZXIgYSBwdW5jdHVhdGlvbiBtYXJrIHNob3VsZCBoYW5nIGF0IHRoZSBzdGFydCBvciBlbmQgb2YgYSBsaW5lIG9mIHRleHQuIEhhbmdpbmcgcHVuY3R1YXRpb24gbWF5IGJlIHBsYWNlZCBvdXRzaWRlIHRoZSBsaW5lIGJveC4ifSx7bmFtZToiaHlwaGVuYXRlLWNoYXJhY3RlciIsc3ludGF4OiJhdXRvIHwgPHN0cmluZz4iLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkUxMDYiLCJGRjk4IiwiUzE3IiwiQzEwNiIsIk85MiJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9oeXBoZW5hdGUtY2hhcmFjdGVyIn1dLGRlc2NyaXB0aW9uOiJBIGh5cGhlbmF0ZSBjaGFyYWN0ZXIgdXNlZCBhdCB0aGUgZW5kIG9mIGEgbGluZS4ifSx7bmFtZToiaHlwaGVuYXRlLWxpbWl0LWNoYXJzIixzeW50YXg6IlsgYXV0byB8IDxpbnRlZ2VyPiBdezEsM30iLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkUxMDkiLCJDMTA5IiwiTzk1Il0sZGVzY3JpcHRpb246IlRoZSBoeXBoZW5hdGUtbGltaXQtY2hhcnMgQ1NTIHByb3BlcnR5IHNwZWNpZmllcyB0aGUgbWluaW11bSB3b3JkIGxlbmd0aCB0byBhbGxvdyBoeXBoZW5hdGlvbiBvZiB3b3JkcyBhcyB3ZWxsIGFzIHRoZSBtaW5pbXVtIG51bWJlciBvZiBjaGFyYWN0ZXJzIGJlZm9yZSBhbmQgYWZ0ZXIgdGhlIGh5cGhlbi4ifSx7bmFtZToiaW1hZ2UtcmVzb2x1dGlvbiIsc3RhdHVzOiJleHBlcmltZW50YWwiLHN5bnRheDoiWyBmcm9tLWltYWdlIHx8IDxyZXNvbHV0aW9uPiBdICYmIHNuYXA/IixyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlRoZSBpbWFnZS1yZXNvbHV0aW9uIHByb3BlcnR5IHNwZWNpZmllcyB0aGUgaW50cmluc2ljIHJlc29sdXRpb24gb2YgYWxsIHJhc3RlciBpbWFnZXMgdXNlZCBpbiBvciBvbiB0aGUgZWxlbWVudC4gSXQgYWZmZWN0cyBib3RoIGNvbnRlbnQgaW1hZ2VzIChlLmcuIHJlcGxhY2VkIGVsZW1lbnRzIGFuZCBnZW5lcmF0ZWQgY29udGVudCkgYW5kIGRlY29yYXRpdmUgaW1hZ2VzIChzdWNoIGFzIGJhY2tncm91bmQtaW1hZ2UpLiBUaGUgaW50cmluc2ljIHJlc29sdXRpb24gb2YgYW4gaW1hZ2UgaXMgdXNlZCB0byBkZXRlcm1pbmUgdGhlIGltYWdl4oCZcyBpbnRyaW5zaWMgZGltZW5zaW9ucy4ifSx7bmFtZToiaW5pdGlhbC1sZXR0ZXIiLHN0YXR1czoiZXhwZXJpbWVudGFsIixzeW50YXg6Im5vcm1hbCB8IFsgPG51bWJlcj4gPGludGVnZXI+PyBdIixyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJFMTEwIiwiUzkiLCJDMTEwIiwiTzk2Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2luaXRpYWwtbGV0dGVyIn1dLGRlc2NyaXB0aW9uOiJUaGUgaW5pdGlhbC1sZXR0ZXIgQ1NTIHByb3BlcnR5IHNwZWNpZmllcyBzdHlsaW5nIGZvciBkcm9wcGVkLCByYWlzZWQsIGFuZCBzdW5rZW4gaW5pdGlhbCBsZXR0ZXJzLiJ9LHtuYW1lOiJpbml0aWFsLWxldHRlci1hbGlnbiIsc3RhdHVzOiJleHBlcmltZW50YWwiLHN5bnRheDoiWyBhdXRvIHwgYWxwaGFiZXRpYyB8IGhhbmdpbmcgfCBpZGVvZ3JhcGhpYyBdIixyZWxldmFuY2U6NTAscmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2luaXRpYWwtbGV0dGVyLWFsaWduIn1dLGRlc2NyaXB0aW9uOiJUaGUgaW5pdGlhbC1sZXR0ZXItYWxpZ24gQ1NTIHByb3BlcnR5IHNwZWNpZmllcyB0aGUgYWxpZ25tZW50IG9mIGluaXRpYWwgbGV0dGVycyB3aXRoaW4gYSBwYXJhZ3JhcGguIn0se25hbWU6ImlucHV0LXNlY3VyaXR5IixzeW50YXg6ImF1dG8gfCBub25lIix2YWx1ZXM6W3tuYW1lOiJhdXRvIn0se25hbWU6Im5vbmUifV0scmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJFbmFibGVzIG9yIGRpc2FibGVzIHRoZSBvYnNjdXJpbmcgYSBzZW5zaXRpdmUgdGVzdCBpbnB1dC4ifSx7bmFtZToiaW5zZXQiLHN5bnRheDoiPCd0b3AnPnsxLDR9IixyZWxldmFuY2U6NTgsYnJvd3NlcnM6WyJFODciLCJGRjY2IiwiUzE0LjEiLCJDODciLCJPNzMiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvaW5zZXQifV0sZGVzY3JpcHRpb246IlRoZSBpbnNldCBDU1MgcHJvcGVydHkgZGVmaW5lcyB0aGUgbG9naWNhbCBibG9jayBhbmQgaW5saW5lIHN0YXJ0IGFuZCBlbmQgb2Zmc2V0cyBvZiBhbiBlbGVtZW50LCB3aGljaCBtYXAgdG8gcGh5c2ljYWwgb2Zmc2V0cyBkZXBlbmRpbmcgb24gdGhlIGVsZW1lbnQncyB3cml0aW5nIG1vZGUsIGRpcmVjdGlvbmFsaXR5LCBhbmQgdGV4dCBvcmllbnRhdGlvbi4gSXQgY29ycmVzcG9uZHMgdG8gdGhlIHRvcCBhbmQgYm90dG9tLCBvciByaWdodCBhbmQgbGVmdCBwcm9wZXJ0aWVzIGRlcGVuZGluZyBvbiB0aGUgdmFsdWVzIGRlZmluZWQgZm9yIHdyaXRpbmctbW9kZSwgZGlyZWN0aW9uLCBhbmQgdGV4dC1vcmllbnRhdGlvbi4ifSx7bmFtZToiaW5zZXQtYmxvY2siLHN5bnRheDoiPCd0b3AnPnsxLDJ9IixyZWxldmFuY2U6NTMsYnJvd3NlcnM6WyJFODciLCJGRjYzIiwiUzE0LjEiLCJDODciLCJPNzMiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvaW5zZXQtYmxvY2sifV0sZGVzY3JpcHRpb246IlRoZSBpbnNldC1ibG9jayBDU1MgcHJvcGVydHkgZGVmaW5lcyB0aGUgbG9naWNhbCBibG9jayBzdGFydCBhbmQgZW5kIG9mZnNldHMgb2YgYW4gZWxlbWVudCwgd2hpY2ggbWFwcyB0byBwaHlzaWNhbCBvZmZzZXRzIGRlcGVuZGluZyBvbiB0aGUgZWxlbWVudCdzIHdyaXRpbmcgbW9kZSwgZGlyZWN0aW9uYWxpdHksIGFuZCB0ZXh0IG9yaWVudGF0aW9uLiBJdCBjb3JyZXNwb25kcyB0byB0aGUgdG9wIGFuZCBib3R0b20sIG9yIHJpZ2h0IGFuZCBsZWZ0IHByb3BlcnRpZXMgZGVwZW5kaW5nIG9uIHRoZSB2YWx1ZXMgZGVmaW5lZCBmb3Igd3JpdGluZy1tb2RlLCBkaXJlY3Rpb24sIGFuZCB0ZXh0LW9yaWVudGF0aW9uLiJ9LHtuYW1lOiJpbnNldC1ibG9jay1lbmQiLHN5bnRheDoiPCd0b3AnPiIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRTg3IiwiRkY2MyIsIlMxNC4xIiwiQzg3IiwiTzczIl0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2luc2V0LWJsb2NrLWVuZCJ9XSxkZXNjcmlwdGlvbjoiVGhlIGluc2V0LWJsb2NrLWVuZCBDU1MgcHJvcGVydHkgZGVmaW5lcyB0aGUgbG9naWNhbCBibG9jayBlbmQgb2Zmc2V0IG9mIGFuIGVsZW1lbnQsIHdoaWNoIG1hcHMgdG8gYSBwaHlzaWNhbCBvZmZzZXQgZGVwZW5kaW5nIG9uIHRoZSBlbGVtZW50J3Mgd3JpdGluZyBtb2RlLCBkaXJlY3Rpb25hbGl0eSwgYW5kIHRleHQgb3JpZW50YXRpb24uIEl0IGNvcnJlc3BvbmRzIHRvIHRoZSB0b3AsIHJpZ2h0LCBib3R0b20sIG9yIGxlZnQgcHJvcGVydHkgZGVwZW5kaW5nIG9uIHRoZSB2YWx1ZXMgZGVmaW5lZCBmb3Igd3JpdGluZy1tb2RlLCBkaXJlY3Rpb24sIGFuZCB0ZXh0LW9yaWVudGF0aW9uLiJ9LHtuYW1lOiJpbnNldC1ibG9jay1zdGFydCIsc3ludGF4OiI8J3RvcCc+IixyZWxldmFuY2U6NTMsYnJvd3NlcnM6WyJFODciLCJGRjYzIiwiUzE0LjEiLCJDODciLCJPNzMiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvaW5zZXQtYmxvY2stc3RhcnQifV0sZGVzY3JpcHRpb246IlRoZSBpbnNldC1ibG9jay1zdGFydCBDU1MgcHJvcGVydHkgZGVmaW5lcyB0aGUgbG9naWNhbCBibG9jayBzdGFydCBvZmZzZXQgb2YgYW4gZWxlbWVudCwgd2hpY2ggbWFwcyB0byBhIHBoeXNpY2FsIG9mZnNldCBkZXBlbmRpbmcgb24gdGhlIGVsZW1lbnQncyB3cml0aW5nIG1vZGUsIGRpcmVjdGlvbmFsaXR5LCBhbmQgdGV4dCBvcmllbnRhdGlvbi4gSXQgY29ycmVzcG9uZHMgdG8gdGhlIHRvcCwgcmlnaHQsIGJvdHRvbSwgb3IgbGVmdCBwcm9wZXJ0eSBkZXBlbmRpbmcgb24gdGhlIHZhbHVlcyBkZWZpbmVkIGZvciB3cml0aW5nLW1vZGUsIGRpcmVjdGlvbiwgYW5kIHRleHQtb3JpZW50YXRpb24uIn0se25hbWU6Imluc2V0LWlubGluZSIsc3ludGF4OiI8J3RvcCc+ezEsMn0iLHJlbGV2YW5jZTo1Myxicm93c2VyczpbIkU4NyIsIkZGNjMiLCJTMTQuMSIsIkM4NyIsIk83MyJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9pbnNldC1pbmxpbmUifV0sZGVzY3JpcHRpb246IlRoZSBpbnNldC1pbmxpbmUgQ1NTIHByb3BlcnR5IGRlZmluZXMgdGhlIGxvZ2ljYWwgYmxvY2sgc3RhcnQgYW5kIGVuZCBvZmZzZXRzIG9mIGFuIGVsZW1lbnQsIHdoaWNoIG1hcHMgdG8gcGh5c2ljYWwgb2Zmc2V0cyBkZXBlbmRpbmcgb24gdGhlIGVsZW1lbnQncyB3cml0aW5nIG1vZGUsIGRpcmVjdGlvbmFsaXR5LCBhbmQgdGV4dCBvcmllbnRhdGlvbi4gSXQgY29ycmVzcG9uZHMgdG8gdGhlIHRvcCBhbmQgYm90dG9tLCBvciByaWdodCBhbmQgbGVmdCBwcm9wZXJ0aWVzIGRlcGVuZGluZyBvbiB0aGUgdmFsdWVzIGRlZmluZWQgZm9yIHdyaXRpbmctbW9kZSwgZGlyZWN0aW9uLCBhbmQgdGV4dC1vcmllbnRhdGlvbi4ifSx7bmFtZToiaW5zZXQtaW5saW5lLWVuZCIsc3ludGF4OiI8J3RvcCc+IixyZWxldmFuY2U6NTEsYnJvd3NlcnM6WyJFODciLCJGRjYzIiwiUzE0LjEiLCJDODciLCJPNzMiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvaW5zZXQtaW5saW5lLWVuZCJ9XSxkZXNjcmlwdGlvbjoiVGhlIGluc2V0LWlubGluZS1lbmQgQ1NTIHByb3BlcnR5IGRlZmluZXMgdGhlIGxvZ2ljYWwgaW5saW5lIGVuZCBpbnNldCBvZiBhbiBlbGVtZW50LCB3aGljaCBtYXBzIHRvIGEgcGh5c2ljYWwgaW5zZXQgZGVwZW5kaW5nIG9uIHRoZSBlbGVtZW50J3Mgd3JpdGluZyBtb2RlLCBkaXJlY3Rpb25hbGl0eSwgYW5kIHRleHQgb3JpZW50YXRpb24uIEl0IGNvcnJlc3BvbmRzIHRvIHRoZSB0b3AsIHJpZ2h0LCBib3R0b20sIG9yIGxlZnQgcHJvcGVydHkgZGVwZW5kaW5nIG9uIHRoZSB2YWx1ZXMgZGVmaW5lZCBmb3Igd3JpdGluZy1tb2RlLCBkaXJlY3Rpb24sIGFuZCB0ZXh0LW9yaWVudGF0aW9uLiJ9LHtuYW1lOiJpbnNldC1pbmxpbmUtc3RhcnQiLHN5bnRheDoiPCd0b3AnPiIscmVsZXZhbmNlOjU0LGJyb3dzZXJzOlsiRTg3IiwiRkY2MyIsIlMxNC4xIiwiQzg3IiwiTzczIl0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2luc2V0LWlubGluZS1zdGFydCJ9XSxkZXNjcmlwdGlvbjoiVGhlIGluc2V0LWlubGluZS1zdGFydCBDU1MgcHJvcGVydHkgZGVmaW5lcyB0aGUgbG9naWNhbCBpbmxpbmUgc3RhcnQgaW5zZXQgb2YgYW4gZWxlbWVudCwgd2hpY2ggbWFwcyB0byBhIHBoeXNpY2FsIG9mZnNldCBkZXBlbmRpbmcgb24gdGhlIGVsZW1lbnQncyB3cml0aW5nIG1vZGUsIGRpcmVjdGlvbmFsaXR5LCBhbmQgdGV4dCBvcmllbnRhdGlvbi4gSXQgY29ycmVzcG9uZHMgdG8gdGhlIHRvcCwgcmlnaHQsIGJvdHRvbSwgb3IgbGVmdCBwcm9wZXJ0eSBkZXBlbmRpbmcgb24gdGhlIHZhbHVlcyBkZWZpbmVkIGZvciB3cml0aW5nLW1vZGUsIGRpcmVjdGlvbiwgYW5kIHRleHQtb3JpZW50YXRpb24uIn0se25hbWU6Imp1c3RpZnktdHJhY2tzIixzdGF0dXM6ImV4cGVyaW1lbnRhbCIsc3ludGF4OiJbIG5vcm1hbCB8IDxjb250ZW50LWRpc3RyaWJ1dGlvbj4gfCA8b3ZlcmZsb3ctcG9zaXRpb24+PyBbIDxjb250ZW50LXBvc2l0aW9uPiB8IGxlZnQgfCByaWdodCBdIF0jIixyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJGRjc3Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2p1c3RpZnktdHJhY2tzIn1dLGRlc2NyaXB0aW9uOiJUaGUganVzdGlmeS10cmFja3MgQ1NTIHByb3BlcnR5IHNldHMgdGhlIGFsaWdubWVudCBpbiB0aGUgbWFzb25yeSBheGlzIGZvciBncmlkIGNvbnRhaW5lcnMgdGhhdCBoYXZlIG1hc29ucnkgaW4gdGhlaXIgaW5saW5lIGF4aXMifSx7bmFtZToibGluZS1jbGFtcCIsc3RhdHVzOiJleHBlcmltZW50YWwiLHN5bnRheDoibm9uZSB8IDxpbnRlZ2VyPiIscmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJUaGUgbGluZS1jbGFtcCBwcm9wZXJ0eSBhbGxvd3MgbGltaXRpbmcgdGhlIGNvbnRlbnRzIG9mIGEgYmxvY2sgY29udGFpbmVyIHRvIHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIGxpbmVzOyByZW1haW5pbmcgY29udGVudCBpcyBmcmFnbWVudGVkIGF3YXkgYW5kIG5laXRoZXIgcmVuZGVyZWQgbm9yIG1lYXN1cmVkLiBPcHRpb25hbGx5LCBpdCBhbHNvIGFsbG93cyBpbnNlcnRpbmcgY29udGVudCBpbnRvIHRoZSBsYXN0IGxpbmUgYm94IHRvIGluZGljYXRlIHRoZSBjb250aW51aXR5IG9mIHRydW5jYXRlZC9pbnRlcnJ1cHRlZCBjb250ZW50LiJ9LHtuYW1lOiJsaW5lLWhlaWdodC1zdGVwIixzdGF0dXM6ImV4cGVyaW1lbnRhbCIsc3ludGF4OiI8bGVuZ3RoPiIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRTc5IiwiQzYwIiwiTzQ3Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL2xpbmUtaGVpZ2h0LXN0ZXAifV0sZGVzY3JpcHRpb246IlRoZSBsaW5lLWhlaWdodC1zdGVwIENTUyBwcm9wZXJ0eSBkZWZpbmVzIHRoZSBzdGVwIHVuaXRzIGZvciBsaW5lIGJveCBoZWlnaHRzLiBXaGVuIHRoZSBzdGVwIHVuaXQgaXMgcG9zaXRpdmUsIGxpbmUgYm94IGhlaWdodHMgYXJlIHJvdW5kZWQgdXAgdG8gdGhlIGNsb3Nlc3QgbXVsdGlwbGUgb2YgdGhlIHVuaXQuIE5lZ2F0aXZlIHZhbHVlcyBhcmUgaW52YWxpZC4ifSx7bmFtZToibWFyZ2luLWJsb2NrIixzeW50YXg6IjwnbWFyZ2luLWxlZnQnPnsxLDJ9IixyZWxldmFuY2U6NTQsYnJvd3NlcnM6WyJFODciLCJGRjY2IiwiUzE0LjEiLCJDODciLCJPNzMiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvbWFyZ2luLWJsb2NrIn1dLGRlc2NyaXB0aW9uOiJUaGUgbWFyZ2luLWJsb2NrIENTUyBwcm9wZXJ0eSBkZWZpbmVzIHRoZSBsb2dpY2FsIGJsb2NrIHN0YXJ0IGFuZCBlbmQgbWFyZ2lucyBvZiBhbiBlbGVtZW50LCB3aGljaCBtYXBzIHRvIHBoeXNpY2FsIG1hcmdpbnMgZGVwZW5kaW5nIG9uIHRoZSBlbGVtZW50J3Mgd3JpdGluZyBtb2RlLCBkaXJlY3Rpb25hbGl0eSwgYW5kIHRleHQgb3JpZW50YXRpb24uIn0se25hbWU6Im1hcmdpbi1pbmxpbmUiLHN5bnRheDoiPCdtYXJnaW4tbGVmdCc+ezEsMn0iLHJlbGV2YW5jZTo1NCxicm93c2VyczpbIkU4NyIsIkZGNjYiLCJTMTQuMSIsIkM4NyIsIk83MyJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9tYXJnaW4taW5saW5lIn1dLGRlc2NyaXB0aW9uOiJUaGUgbWFyZ2luLWlubGluZSBDU1MgcHJvcGVydHkgZGVmaW5lcyB0aGUgbG9naWNhbCBpbmxpbmUgc3RhcnQgYW5kIGVuZCBtYXJnaW5zIG9mIGFuIGVsZW1lbnQsIHdoaWNoIG1hcHMgdG8gcGh5c2ljYWwgbWFyZ2lucyBkZXBlbmRpbmcgb24gdGhlIGVsZW1lbnQncyB3cml0aW5nIG1vZGUsIGRpcmVjdGlvbmFsaXR5LCBhbmQgdGV4dCBvcmllbnRhdGlvbi4ifSx7bmFtZToibWFyZ2luLXRyaW0iLHN0YXR1czoiZXhwZXJpbWVudGFsIixzeW50YXg6Im5vbmUgfCBpbi1mbG93IHwgYWxsIix2YWx1ZXM6W3tuYW1lOiJub25lIn0se25hbWU6ImluLWZsb3cifSx7bmFtZToiYWxsIn1dLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIlMxNi40Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL21hcmdpbi10cmltIn1dLGRlc2NyaXB0aW9uOiJUaGUgbWFyZ2luLXRyaW0gcHJvcGVydHkgYWxsb3dzIHRoZSBjb250YWluZXIgdG8gdHJpbSB0aGUgbWFyZ2lucyBvZiBpdHMgY2hpbGRyZW4gd2hlcmUgdGhleSBhZGpvaW4gdGhlIGNvbnRhaW5lcuKAmXMgZWRnZXMuIn0se25hbWU6Im1hc2siLHN5bnRheDoiPG1hc2stbGF5ZXI+IyIscmVsZXZhbmNlOjU1LGJyb3dzZXJzOlsiRTc5IiwiRkY1MyIsIlMxNS40IiwiQzEiLCJPMTUiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvbWFzayJ9XSxkZXNjcmlwdGlvbjoiVGhlIG1hc2sgQ1NTIHByb3BlcnR5IGFsdGVycyB0aGUgdmlzaWJpbGl0eSBvZiBhbiBlbGVtZW50IGJ5IGVpdGhlciBwYXJ0aWFsbHkgb3IgZnVsbHkgaGlkaW5nIGl0LiBUaGlzIGlzIGFjY29tcGxpc2hlZCBieSBlaXRoZXIgbWFza2luZyBvciBjbGlwcGluZyB0aGUgaW1hZ2UgYXQgc3BlY2lmaWMgcG9pbnRzLiJ9LHtuYW1lOiJtYXNrLWJvcmRlciIsc3ludGF4OiI8J21hc2stYm9yZGVyLXNvdXJjZSc+IHx8IDwnbWFzay1ib3JkZXItc2xpY2UnPiBbIC8gPCdtYXNrLWJvcmRlci13aWR0aCc+PyBbIC8gPCdtYXNrLWJvcmRlci1vdXRzZXQnPiBdPyBdPyB8fCA8J21hc2stYm9yZGVyLXJlcGVhdCc+IHx8IDwnbWFzay1ib3JkZXItbW9kZSc+IixyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJFNzkiLCJTMTcuMiIsIkMxIiwiTzE1Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL21hc2stYm9yZGVyIn1dLGRlc2NyaXB0aW9uOmBUaGUgbWFzay1ib3JkZXIgQ1NTIHByb3BlcnR5IGxldHMgeW91IGNyZWF0ZSBhIG1hc2sgYWxvbmcgdGhlIGVkZ2Ugb2YgYW4gZWxlbWVudCdzIGJvcmRlci4KClRoaXMgcHJvcGVydHkgaXMgYSBzaG9ydGhhbmQgZm9yIG1hc2stYm9yZGVyLXNvdXJjZSwgbWFzay1ib3JkZXItc2xpY2UsIG1hc2stYm9yZGVyLXdpZHRoLCBtYXNrLWJvcmRlci1vdXRzZXQsIG1hc2stYm9yZGVyLXJlcGVhdCwgYW5kIG1hc2stYm9yZGVyLW1vZGUuIEFzIHdpdGggYWxsIHNob3J0aGFuZCBwcm9wZXJ0aWVzLCBhbnkgb21pdHRlZCBzdWItdmFsdWVzIHdpbGwgYmUgc2V0IHRvIHRoZWlyIGluaXRpYWwgdmFsdWUuYH0se25hbWU6Im1hc2stYm9yZGVyLW1vZGUiLHN5bnRheDoibHVtaW5hbmNlIHwgYWxwaGEiLHZhbHVlczpbe25hbWU6Imx1bWluYW5jZSJ9LHtuYW1lOiJhbHBoYSJ9XSxyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlRoZSBtYXNrLWJvcmRlci1tb2RlIENTUyBwcm9wZXJ0eSBzcGVjaWZpZXMgdGhlIGJsZW5kaW5nIG1vZGUgdXNlZCBpbiBhIG1hc2sgYm9yZGVyLiJ9LHtuYW1lOiJtYXNrLWJvcmRlci1vdXRzZXQiLHN5bnRheDoiWyA8bGVuZ3RoPiB8IDxudW1iZXI+IF17MSw0fSIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRTc5IiwiUzE3LjIiLCJDMSIsIk8xNSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9tYXNrLWJvcmRlci1vdXRzZXQifV0sZGVzY3JpcHRpb246IlRoZSBtYXNrLWJvcmRlci1vdXRzZXQgQ1NTIHByb3BlcnR5IHNwZWNpZmllcyB0aGUgZGlzdGFuY2UgYnkgd2hpY2ggYW4gZWxlbWVudCdzIG1hc2sgYm9yZGVyIGlzIHNldCBvdXQgZnJvbSBpdHMgYm9yZGVyIGJveC4ifSx7bmFtZToibWFzay1ib3JkZXItcmVwZWF0IixzeW50YXg6Ilsgc3RyZXRjaCB8IHJlcGVhdCB8IHJvdW5kIHwgc3BhY2UgXXsxLDJ9IixyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJFNzkiLCJTMTcuMiIsIkMxIiwiTzE1Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL21hc2stYm9yZGVyLXJlcGVhdCJ9XSxkZXNjcmlwdGlvbjoiVGhlIG1hc2stYm9yZGVyLXJlcGVhdCBDU1MgcHJvcGVydHkgZGVmaW5lcyBob3cgdGhlIGVkZ2UgcmVnaW9ucyBvZiBhIHNvdXJjZSBpbWFnZSBhcmUgYWRqdXN0ZWQgdG8gZml0IHRoZSBkaW1lbnNpb25zIG9mIGFuIGVsZW1lbnQncyBtYXNrIGJvcmRlci4ifSx7bmFtZToibWFzay1ib3JkZXItc2xpY2UiLHN5bnRheDoiPG51bWJlci1wZXJjZW50YWdlPnsxLDR9IGZpbGw/IixyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJFNzkiLCJTMTcuMiIsIkMxIiwiTzE1Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL21hc2stYm9yZGVyLXNsaWNlIn1dLGRlc2NyaXB0aW9uOiJUaGUgbWFzay1ib3JkZXItc2xpY2UgQ1NTIHByb3BlcnR5IGRpdmlkZXMgdGhlIGltYWdlIHNwZWNpZmllZCBieSBtYXNrLWJvcmRlci1zb3VyY2UgaW50byByZWdpb25zLiBUaGVzZSByZWdpb25zIGFyZSB1c2VkIHRvIGZvcm0gdGhlIGNvbXBvbmVudHMgb2YgYW4gZWxlbWVudCdzIG1hc2sgYm9yZGVyLiJ9LHtuYW1lOiJtYXNrLWJvcmRlci1zb3VyY2UiLHN5bnRheDoibm9uZSB8IDxpbWFnZT4iLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkU3OSIsIlMxNy4yIiwiQzEiLCJPMTUiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvbWFzay1ib3JkZXItc291cmNlIn1dLGRlc2NyaXB0aW9uOmBUaGUgbWFzay1ib3JkZXItc291cmNlIENTUyBwcm9wZXJ0eSBzcGVjaWZpZXMgdGhlIHNvdXJjZSBpbWFnZSB1c2VkIHRvIGNyZWF0ZSBhbiBlbGVtZW50J3MgbWFzayBib3JkZXIuCgpUaGUgbWFzay1ib3JkZXItc2xpY2UgcHJvcGVydHkgaXMgdXNlZCB0byBkaXZpZGUgdGhlIHNvdXJjZSBpbWFnZSBpbnRvIHJlZ2lvbnMsIHdoaWNoIGFyZSB0aGVuIGR5bmFtaWNhbGx5IGFwcGxpZWQgdG8gdGhlIGZpbmFsIG1hc2sgYm9yZGVyLmB9LHtuYW1lOiJtYXNrLWJvcmRlci13aWR0aCIsc3ludGF4OiJbIDxsZW5ndGgtcGVyY2VudGFnZT4gfCA8bnVtYmVyPiB8IGF1dG8gXXsxLDR9IixyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJFNzkiLCJTMTcuMiIsIkMxIiwiTzE1Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL21hc2stYm9yZGVyLXdpZHRoIn1dLGRlc2NyaXB0aW9uOiJUaGUgbWFzay1ib3JkZXItd2lkdGggQ1NTIHByb3BlcnR5IHNwZWNpZmllcyB0aGUgd2lkdGggb2YgYW4gZWxlbWVudCdzIG1hc2sgYm9yZGVyLiJ9LHtuYW1lOiJtYXNrLWNsaXAiLHN5bnRheDoiWyA8Z2VvbWV0cnktYm94PiB8IG5vLWNsaXAgXSMiLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkUxMjAiLCJGRjUzIiwiUzE1LjQiLCJDMTIwIiwiTzEwNiJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9tYXNrLWNsaXAifV0sZGVzY3JpcHRpb246IlRoZSBtYXNrLWNsaXAgQ1NTIHByb3BlcnR5IGRldGVybWluZXMgdGhlIGFyZWEsIHdoaWNoIGlzIGFmZmVjdGVkIGJ5IGEgbWFzay4gVGhlIHBhaW50ZWQgY29udGVudCBvZiBhbiBlbGVtZW50IG11c3QgYmUgcmVzdHJpY3RlZCB0byB0aGlzIGFyZWEuIn0se25hbWU6Im1hc2stY29tcG9zaXRlIixzeW50YXg6Ijxjb21wb3NpdGluZy1vcGVyYXRvcj4jIixyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJFMTgiLCJGRjUzIiwiUzE1LjQiLCJDMTIwIiwiTzEwNiJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9tYXNrLWNvbXBvc2l0ZSJ9XSxkZXNjcmlwdGlvbjoiVGhlIG1hc2stY29tcG9zaXRlIENTUyBwcm9wZXJ0eSByZXByZXNlbnRzIGEgY29tcG9zaXRpbmcgb3BlcmF0aW9uIHVzZWQgb24gdGhlIGN1cnJlbnQgbWFzayBsYXllciB3aXRoIHRoZSBtYXNrIGxheWVycyBiZWxvdyBpdC4ifSx7bmFtZToibWFzb25yeS1hdXRvLWZsb3ciLHN0YXR1czoiZXhwZXJpbWVudGFsIixzeW50YXg6IlsgcGFjayB8IG5leHQgXSB8fCBbIGRlZmluaXRlLWZpcnN0IHwgb3JkZXJlZCBdIixyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJTcHJldmlldyJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9tYXNvbnJ5LWF1dG8tZmxvdyJ9XSxkZXNjcmlwdGlvbjoiVGhlIG1hc29ucnktYXV0by1mbG93IENTUyBwcm9wZXJ0eSBtb2RpZmllcyBob3cgaXRlbXMgYXJlIHBsYWNlZCB3aGVuIHVzaW5nIG1hc29ucnkgaW4gQ1NTIEdyaWQgTGF5b3V0LiJ9LHtuYW1lOiJtYXRoLWRlcHRoIixzeW50YXg6ImF1dG8tYWRkIHwgYWRkKDxpbnRlZ2VyPikgfCA8aW50ZWdlcj4iLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkUxMDkiLCJGRjExNyIsIkMxMDkiLCJPOTUiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvbWF0aC1kZXB0aCJ9XSxkZXNjcmlwdGlvbjonRGVzY3JpYmUgYSBub3Rpb24gb2YgImRlcHRoIiBmb3IgZWFjaCBlbGVtZW50IG9mIGEgbWF0aGVtYXRpY2FsIGZvcm11bGEsIHdpdGggcmVzcGVjdCB0byB0aGUgdG9wLWxldmVsIGNvbnRhaW5lciBvZiB0aGF0IGZvcm11bGEuJ30se25hbWU6Im1hdGgtc2hpZnQiLHN5bnRheDoibm9ybWFsIHwgY29tcGFjdCIsdmFsdWVzOlt7bmFtZToibm9ybWFsIn0se25hbWU6ImNvbXBhY3QifV0scmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRTEwOSIsIkMxMDkiLCJPOTUiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvbWF0aC1zaGlmdCJ9XSxkZXNjcmlwdGlvbjoiVXNlZCBmb3IgcG9zaXRpb25pbmcgc3VwZXJzY3JpcHQgZHVyaW5nIHRoZSBsYXlvdXQgb2YgTWF0aE1MIHNjcmlwdGVkIGVsZW1lbnRzLiJ9LHtuYW1lOiJtYXRoLXN0eWxlIixzeW50YXg6Im5vcm1hbCB8IGNvbXBhY3QiLHZhbHVlczpbe25hbWU6Im5vcm1hbCJ9LHtuYW1lOiJjb21wYWN0In1dLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkUxMDkiLCJGRjExNyIsIlMxNC4xIiwiQzEwOSIsIk85NSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9tYXRoLXN0eWxlIn1dLGRlc2NyaXB0aW9uOiJUaGUgbWF0aC1zdHlsZSBwcm9wZXJ0eSBpbmRpY2F0ZXMgd2hldGhlciBNYXRoTUwgZXF1YXRpb25zIHNob3VsZCByZW5kZXIgd2l0aCBub3JtYWwgb3IgY29tcGFjdCBoZWlnaHQuIn0se25hbWU6Im1heC1saW5lcyIsc3RhdHVzOiJleHBlcmltZW50YWwiLHN5bnRheDoibm9uZSB8IDxpbnRlZ2VyPiIscmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJUaGUgbWF4LWxpbmVzIHByb3BlcnR5IGZvcmNlcyBhIGJyZWFrIGFmdGVyIGEgc2V0IG51bWJlciBvZiBsaW5lcyJ9LHtuYW1lOiJvZmZzZXQiLHN5bnRheDoiWyA8J29mZnNldC1wb3NpdGlvbic+PyBbIDwnb2Zmc2V0LXBhdGgnPiBbIDwnb2Zmc2V0LWRpc3RhbmNlJz4gfHwgPCdvZmZzZXQtcm90YXRlJz4gXT8gXT8gXSEgWyAvIDwnb2Zmc2V0LWFuY2hvcic+IF0/IixyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJFNzkiLCJGRjcyIiwiUzE2IiwiQzU1IiwiTzQyIl0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL29mZnNldCJ9XSxkZXNjcmlwdGlvbjoiVGhlIG9mZnNldCBDU1MgcHJvcGVydHkgaXMgYSBzaG9ydGhhbmQgcHJvcGVydHkgZm9yIGFuaW1hdGluZyBhbiBlbGVtZW50IGFsb25nIGEgZGVmaW5lZCBwYXRoLiJ9LHtuYW1lOiJvZmZzZXQtYW5jaG9yIixzeW50YXg6ImF1dG8gfCA8cG9zaXRpb24+IixyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJFMTE2IiwiRkY3MiIsIlMxNiIsIkMxMTYiLCJPMTAyIl0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL29mZnNldC1hbmNob3IifV0sZGVzY3JpcHRpb246IkRlZmluZXMgYW4gYW5jaG9yIHBvaW50IG9mIHRoZSBib3ggcG9zaXRpb25lZCBhbG9uZyB0aGUgcGF0aC4gVGhlIGFuY2hvciBwb2ludCBzcGVjaWZpZXMgdGhlIHBvaW50IG9mIHRoZSBib3ggd2hpY2ggaXMgdG8gYmUgY29uc2lkZXJlZCBhcyB0aGUgcG9pbnQgdGhhdCBpcyBtb3ZlZCBhbG9uZyB0aGUgcGF0aC4ifSx7bmFtZToib2Zmc2V0LWRpc3RhbmNlIixzeW50YXg6IjxsZW5ndGgtcGVyY2VudGFnZT4iLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkU3OSIsIkZGNzIiLCJTMTYiLCJDNTUiLCJPNDIiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1Mvb2Zmc2V0LWRpc3RhbmNlIn1dLGRlc2NyaXB0aW9uOiJUaGUgb2Zmc2V0LWRpc3RhbmNlIENTUyBwcm9wZXJ0eSBzcGVjaWZpZXMgYSBwb3NpdGlvbiBhbG9uZyBhbiBvZmZzZXQtcGF0aC4ifSx7bmFtZToib2Zmc2V0LXBhdGgiLHN5bnRheDoibm9uZSB8IDxvZmZzZXQtcGF0aD4gfHwgPGNvb3JkLWJveD4iLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkU3OSIsIkZGNzIiLCJTMTUuNCIsIkM1NSIsIk80NSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9vZmZzZXQtcGF0aCJ9XSxkZXNjcmlwdGlvbjpgVGhlIG9mZnNldC1wYXRoIENTUyBwcm9wZXJ0eSBzcGVjaWZpZXMgdGhlIG9mZnNldCBwYXRoIHdoZXJlIHRoZSBlbGVtZW50IGdldHMgcG9zaXRpb25lZC4gVGhlIGV4YWN0IGVsZW1lbnTigJlzIHBvc2l0aW9uIG9uIHRoZSBvZmZzZXQgcGF0aCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSBvZmZzZXQtZGlzdGFuY2UgcHJvcGVydHkuIEFuIG9mZnNldCBwYXRoIGlzIGVpdGhlciBhIHNwZWNpZmllZCBwYXRoIHdpdGggb25lIG9yIG11bHRpcGxlIHN1Yi1wYXRocyBvciB0aGUgZ2VvbWV0cnkgb2YgYSBub3Qtc3R5bGVkIGJhc2ljIHNoYXBlLiBFYWNoIHNoYXBlIG9yIHBhdGggbXVzdCBkZWZpbmUgYW4gaW5pdGlhbCBwb3NpdGlvbiBmb3IgdGhlIGNvbXB1dGVkIHZhbHVlIG9mICIwIiBmb3Igb2Zmc2V0LWRpc3RhbmNlIGFuZCBhbiBpbml0aWFsIGRpcmVjdGlvbiB3aGljaCBzcGVjaWZpZXMgdGhlIHJvdGF0aW9uIG9mIHRoZSBvYmplY3QgdG8gdGhlIGluaXRpYWwgcG9zaXRpb24uCgpJbiB0aGlzIHNwZWNpZmljYXRpb24sIGEgZGlyZWN0aW9uIChvciByb3RhdGlvbikgb2YgMCBkZWdyZWVzIGlzIGVxdWl2YWxlbnQgdG8gdGhlIGRpcmVjdGlvbiBvZiB0aGUgcG9zaXRpdmUgeC1heGlzIGluIHRoZSBvYmplY3TigJlzIGxvY2FsIGNvb3JkaW5hdGUgc3lzdGVtLiBJbiBvdGhlciB3b3JkcywgYSByb3RhdGlvbiBvZiAwIGRlZ3JlZSBwb2ludHMgdG8gdGhlIHJpZ2h0IHNpZGUgb2YgdGhlIFVBIGlmIHRoZSBvYmplY3QgYW5kIGl0cyBhbmNlc3RvcnMgaGF2ZSBubyB0cmFuc2Zvcm1hdGlvbiBhcHBsaWVkLmB9LHtuYW1lOiJvZmZzZXQtcG9zaXRpb24iLHN5bnRheDoibm9ybWFsIHwgYXV0byB8IDxwb3NpdGlvbj4iLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkUxMTYiLCJGRjEyMiIsIlMxNiIsIkMxMTYiLCJPMTAyIl0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL29mZnNldC1wb3NpdGlvbiJ9XSxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIHRoZSBpbml0aWFsIHBvc2l0aW9uIG9mIHRoZSBvZmZzZXQgcGF0aC4gSWYgcG9zaXRpb24gaXMgc3BlY2lmaWVkIHdpdGggc3RhdGljLCBvZmZzZXQtcG9zaXRpb24gd291bGQgYmUgaWdub3JlZC4ifSx7bmFtZToib2Zmc2V0LXJvdGF0ZSIsc3ludGF4OiJbIGF1dG8gfCByZXZlcnNlIF0gfHwgPGFuZ2xlPiIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRTc5IiwiRkY3MiIsIlMxNiIsIkM1NiIsIk80MyJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9vZmZzZXQtcm90YXRlIn1dLGRlc2NyaXB0aW9uOiJUaGUgb2Zmc2V0LXJvdGF0ZSBDU1MgcHJvcGVydHkgZGVmaW5lcyB0aGUgZGlyZWN0aW9uIG9mIHRoZSBlbGVtZW50IHdoaWxlIHBvc2l0aW9uaW5nIGFsb25nIHRoZSBvZmZzZXQgcGF0aC4ifSx7bmFtZToib3ZlcmZsb3ctYW5jaG9yIixzeW50YXg6ImF1dG8gfCBub25lIix2YWx1ZXM6W3tuYW1lOiJhdXRvIn0se25hbWU6Im5vbmUifV0scmVsZXZhbmNlOjUyLGJyb3dzZXJzOlsiRTc5IiwiRkY2NiIsIlNwcmV2aWV3IiwiQzU2IiwiTzQzIl0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL292ZXJmbG93LWFuY2hvciJ9XSxkZXNjcmlwdGlvbjoiVGhlIG92ZXJmbG93LWFuY2hvciBDU1MgcHJvcGVydHkgcHJvdmlkZXMgYSB3YXkgdG8gb3B0IG91dCBicm93c2VyIHNjcm9sbCBhbmNob3JpbmcgYmVoYXZpb3Igd2hpY2ggYWRqdXN0cyBzY3JvbGwgcG9zaXRpb24gdG8gbWluaW1pemUgY29udGVudCBzaGlmdHMuIn0se25hbWU6Im92ZXJmbG93LWJsb2NrIixzeW50YXg6InZpc2libGUgfCBoaWRkZW4gfCBjbGlwIHwgc2Nyb2xsIHwgYXV0byIsdmFsdWVzOlt7bmFtZToidmlzaWJsZSJ9LHtuYW1lOiJoaWRkZW4ifSx7bmFtZToiY2xpcCJ9LHtuYW1lOiJzY3JvbGwifSx7bmFtZToiYXV0byJ9XSxyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJGRjY5Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL292ZXJmbG93LWJsb2NrIn1dLGRlc2NyaXB0aW9uOiJUaGUgb3ZlcmZsb3ctYmxvY2sgQ1NTIG1lZGlhIGZlYXR1cmUgY2FuIGJlIHVzZWQgdG8gdGVzdCBob3cgdGhlIG91dHB1dCBkZXZpY2UgaGFuZGxlcyBjb250ZW50IHRoYXQgb3ZlcmZsb3dzIHRoZSBpbml0aWFsIGNvbnRhaW5pbmcgYmxvY2sgYWxvbmcgdGhlIGJsb2NrIGF4aXMuIn0se25hbWU6Im92ZXJmbG93LWNsaXAtYm94IixzdGF0dXM6Im5vbnN0YW5kYXJkIixzeW50YXg6InBhZGRpbmctYm94IHwgY29udGVudC1ib3giLHZhbHVlczpbe25hbWU6InBhZGRpbmctYm94In0se25hbWU6ImNvbnRlbnQtYm94In1dLHJlbGV2YW5jZTowLGRlc2NyaXB0aW9uOiJUaGUgb3ZlcmZsb3ctY2xpcC1ib3ggQ1NTIHByb3BlcnR5IHNwZWNpZmllcyByZWxhdGl2ZSB0byB3aGljaCBib3ggdGhlIGNsaXBwaW5nIGhhcHBlbnMgd2hlbiB0aGVyZSBpcyBhbiBvdmVyZmxvdy4gSXQgaXMgc2hvcnQgaGFuZCBmb3IgdGhlIG92ZXJmbG93LWNsaXAtYm94LWlubGluZSBhbmQgb3ZlcmZsb3ctY2xpcC1ib3gtYmxvY2sgcHJvcGVydGllcy4ifSx7bmFtZToib3ZlcmZsb3ctY2xpcC1tYXJnaW4iLHN5bnRheDoiPHZpc3VhbC1ib3g+IHx8IDxsZW5ndGggWzAs4oieXT4iLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkU5MCIsIkZGMTAyIiwiQzkwIiwiTzc2Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL292ZXJmbG93LWNsaXAtbWFyZ2luIn1dLGRlc2NyaXB0aW9uOiJUaGUgb3ZlcmZsb3ctY2xpcC1tYXJnaW4gQ1NTIHByb3BlcnR5IGRldGVybWluZXMgaG93IGZhciBvdXRzaWRlIGl0cyBib3VuZHMgYW4gZWxlbWVudCB3aXRoIG92ZXJmbG93OiBjbGlwIG1heSBiZSBwYWludGVkIGJlZm9yZSBiZWluZyBjbGlwcGVkLiJ9LHtuYW1lOiJvdmVyZmxvdy1pbmxpbmUiLHN5bnRheDoidmlzaWJsZSB8IGhpZGRlbiB8IGNsaXAgfCBzY3JvbGwgfCBhdXRvIix2YWx1ZXM6W3tuYW1lOiJ2aXNpYmxlIn0se25hbWU6ImhpZGRlbiJ9LHtuYW1lOiJjbGlwIn0se25hbWU6InNjcm9sbCJ9LHtuYW1lOiJhdXRvIn1dLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkZGNjkiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1Mvb3ZlcmZsb3ctaW5saW5lIn1dLGRlc2NyaXB0aW9uOiJUaGUgb3ZlcmZsb3ctaW5saW5lIENTUyBtZWRpYSBmZWF0dXJlIGNhbiBiZSB1c2VkIHRvIHRlc3QgaG93IHRoZSBvdXRwdXQgZGV2aWNlIGhhbmRsZXMgY29udGVudCB0aGF0IG92ZXJmbG93cyB0aGUgaW5pdGlhbCBjb250YWluaW5nIGJsb2NrIGFsb25nIHRoZSBpbmxpbmUgYXhpcy4ifSx7bmFtZToib3ZlcmxheSIsc3RhdHVzOiJleHBlcmltZW50YWwiLHN5bnRheDoibm9uZSB8IGF1dG8iLHZhbHVlczpbe25hbWU6Im5vbmUifSx7bmFtZToiYXV0byJ9XSxyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJFMTE3IiwiQzExNyIsIk8xMDMiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1Mvb3ZlcmxheSJ9XSxkZXNjcmlwdGlvbjonVGhlIG92ZXJsYXkgQ1NTIHByb3BlcnR5IHNwZWNpZmllcyB3aGV0aGVyIGFuIGVsZW1lbnQgYXBwZWFyaW5nIGluIHRoZSB0b3AgbGF5ZXIgKGZvciBleGFtcGxlLCBhIHNob3duIHBvcG92ZXIgb3IgbW9kYWwge3todG1sZWxlbWVudCgiZGlhbG9nIil9fSBlbGVtZW50KSBpcyBhY3R1YWxseSByZW5kZXJlZCBpbiB0aGUgdG9wIGxheWVyLiBUaGlzIHByb3BlcnR5IGlzIG9ubHkgcmVsZXZhbnQgd2l0aGluIGEgbGlzdCBvZiB0cmFuc2l0aW9uLXByb3BlcnR5IHZhbHVlcywgYW5kIG9ubHkgaWYgYWxsb3ctZGlzY3JldGUgaXMgc2V0IGFzIHRoZSB0cmFuc2l0aW9uLWJlaGF2aW9yLid9LHtuYW1lOiJvdmVyc2Nyb2xsLWJlaGF2aW9yIixzeW50YXg6IlsgY29udGFpbiB8IG5vbmUgfCBhdXRvIF17MSwyfSIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRTE4IiwiRkY1OSIsIlMxNiIsIkM2MyIsIk81MCJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9vdmVyc2Nyb2xsLWJlaGF2aW9yIn1dLGRlc2NyaXB0aW9uOiJUaGUgb3ZlcnNjcm9sbC1iZWhhdmlvciBDU1MgcHJvcGVydHkgaXMgc2hvcnRoYW5kIGZvciB0aGUgb3ZlcnNjcm9sbC1iZWhhdmlvci14IGFuZCBvdmVyc2Nyb2xsLWJlaGF2aW9yLXkgcHJvcGVydGllcywgd2hpY2ggYWxsb3cgeW91IHRvIGNvbnRyb2wgdGhlIGJyb3dzZXIncyBzY3JvbGwgb3ZlcmZsb3cgYmVoYXZpb3Ig4oCUIHdoYXQgaGFwcGVucyB3aGVuIHRoZSBib3VuZGFyeSBvZiBhIHNjcm9sbGluZyBhcmVhIGlzIHJlYWNoZWQuIn0se25hbWU6Im92ZXJzY3JvbGwtYmVoYXZpb3ItYmxvY2siLHN5bnRheDoiY29udGFpbiB8IG5vbmUgfCBhdXRvIix2YWx1ZXM6W3tuYW1lOiJjb250YWluIn0se25hbWU6Im5vbmUifSx7bmFtZToiYXV0byJ9XSxyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJFNzkiLCJGRjczIiwiUzE2IiwiQzc3IiwiTzY0Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL292ZXJzY3JvbGwtYmVoYXZpb3ItYmxvY2sifV0sZGVzY3JpcHRpb246IlRoZSBvdmVyc2Nyb2xsLWJlaGF2aW9yLWJsb2NrIENTUyBwcm9wZXJ0eSBzZXRzIHRoZSBicm93c2VyJ3MgYmVoYXZpb3Igd2hlbiB0aGUgYmxvY2sgZGlyZWN0aW9uIGJvdW5kYXJ5IG9mIGEgc2Nyb2xsaW5nIGFyZWEgaXMgcmVhY2hlZC4ifSx7bmFtZToib3ZlcnNjcm9sbC1iZWhhdmlvci1pbmxpbmUiLHN5bnRheDoiY29udGFpbiB8IG5vbmUgfCBhdXRvIix2YWx1ZXM6W3tuYW1lOiJjb250YWluIn0se25hbWU6Im5vbmUifSx7bmFtZToiYXV0byJ9XSxyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJFNzkiLCJGRjczIiwiUzE2IiwiQzc3IiwiTzY0Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL292ZXJzY3JvbGwtYmVoYXZpb3ItaW5saW5lIn1dLGRlc2NyaXB0aW9uOiJUaGUgb3ZlcnNjcm9sbC1iZWhhdmlvci1pbmxpbmUgQ1NTIHByb3BlcnR5IHNldHMgdGhlIGJyb3dzZXIncyBiZWhhdmlvciB3aGVuIHRoZSBpbmxpbmUgZGlyZWN0aW9uIGJvdW5kYXJ5IG9mIGEgc2Nyb2xsaW5nIGFyZWEgaXMgcmVhY2hlZC4ifSx7bmFtZToib3ZlcnNjcm9sbC1iZWhhdmlvci14IixzeW50YXg6ImNvbnRhaW4gfCBub25lIHwgYXV0byIsdmFsdWVzOlt7bmFtZToiY29udGFpbiJ9LHtuYW1lOiJub25lIn0se25hbWU6ImF1dG8ifV0scmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRTE4IiwiRkY1OSIsIlMxNiIsIkM2MyIsIk81MCJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9vdmVyc2Nyb2xsLWJlaGF2aW9yLXgifV0sZGVzY3JpcHRpb246IlRoZSBvdmVyc2Nyb2xsLWJlaGF2aW9yLXggQ1NTIHByb3BlcnR5IGlzIGFsbG93cyB5b3UgdG8gY29udHJvbCB0aGUgYnJvd3NlcidzIHNjcm9sbCBvdmVyZmxvdyBiZWhhdmlvciDigJQgd2hhdCBoYXBwZW5zIHdoZW4gdGhlIGJvdW5kYXJ5IG9mIGEgc2Nyb2xsaW5nIGFyZWEgaXMgcmVhY2hlZCDigJQgaW4gdGhlIHggYXhpcyBkaXJlY3Rpb24uIn0se25hbWU6Im92ZXJzY3JvbGwtYmVoYXZpb3IteSIsc3ludGF4OiJjb250YWluIHwgbm9uZSB8IGF1dG8iLHZhbHVlczpbe25hbWU6ImNvbnRhaW4ifSx7bmFtZToibm9uZSJ9LHtuYW1lOiJhdXRvIn1dLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkUxOCIsIkZGNTkiLCJTMTYiLCJDNjMiLCJPNTAiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1Mvb3ZlcnNjcm9sbC1iZWhhdmlvci15In1dLGRlc2NyaXB0aW9uOiJUaGUgb3ZlcnNjcm9sbC1iZWhhdmlvci15IENTUyBwcm9wZXJ0eSBpcyBhbGxvd3MgeW91IHRvIGNvbnRyb2wgdGhlIGJyb3dzZXIncyBzY3JvbGwgb3ZlcmZsb3cgYmVoYXZpb3Ig4oCUIHdoYXQgaGFwcGVucyB3aGVuIHRoZSBib3VuZGFyeSBvZiBhIHNjcm9sbGluZyBhcmVhIGlzIHJlYWNoZWQg4oCUIGluIHRoZSB5IGF4aXMgZGlyZWN0aW9uLiJ9LHtuYW1lOiJwYWRkaW5nLWJsb2NrIixzeW50YXg6IjwncGFkZGluZy1sZWZ0Jz57MSwyfSIscmVsZXZhbmNlOjU0LGJyb3dzZXJzOlsiRTg3IiwiRkY2NiIsIlMxNC4xIiwiQzg3IiwiTzczIl0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3BhZGRpbmctYmxvY2sifV0sZGVzY3JpcHRpb246IlRoZSBwYWRkaW5nLWJsb2NrIENTUyBwcm9wZXJ0eSBkZWZpbmVzIHRoZSBsb2dpY2FsIGJsb2NrIHN0YXJ0IGFuZCBlbmQgcGFkZGluZyBvZiBhbiBlbGVtZW50LCB3aGljaCBtYXBzIHRvIHBoeXNpY2FsIHBhZGRpbmcgcHJvcGVydGllcyBkZXBlbmRpbmcgb24gdGhlIGVsZW1lbnQncyB3cml0aW5nIG1vZGUsIGRpcmVjdGlvbmFsaXR5LCBhbmQgdGV4dCBvcmllbnRhdGlvbi4ifSx7bmFtZToicGFkZGluZy1pbmxpbmUiLHN5bnRheDoiPCdwYWRkaW5nLWxlZnQnPnsxLDJ9IixyZWxldmFuY2U6NTQsYnJvd3NlcnM6WyJFODciLCJGRjY2IiwiUzE0LjEiLCJDODciLCJPNzMiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvcGFkZGluZy1pbmxpbmUifV0sZGVzY3JpcHRpb246IlRoZSBwYWRkaW5nLWlubGluZSBDU1MgcHJvcGVydHkgZGVmaW5lcyB0aGUgbG9naWNhbCBpbmxpbmUgc3RhcnQgYW5kIGVuZCBwYWRkaW5nIG9mIGFuIGVsZW1lbnQsIHdoaWNoIG1hcHMgdG8gcGh5c2ljYWwgcGFkZGluZyBwcm9wZXJ0aWVzIGRlcGVuZGluZyBvbiB0aGUgZWxlbWVudCdzIHdyaXRpbmcgbW9kZSwgZGlyZWN0aW9uYWxpdHksIGFuZCB0ZXh0IG9yaWVudGF0aW9uLiJ9LHtuYW1lOiJwYWdlIixzeW50YXg6ImF1dG8gfCA8Y3VzdG9tLWlkZW50PiIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRTg1IiwiRkYxMTAiLCJTMTMuMSIsIkM4NSIsIk83MSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9wYWdlIn1dLGRlc2NyaXB0aW9uOiJUaGUgcGFnZSBDU1MgcHJvcGVydHkgaXMgdXNlZCB0byBzcGVjaWZ5IHRoZSBuYW1lZCBwYWdlLCBhIHNwZWNpZmljIHR5cGUgb2YgcGFnZSBkZWZpbmVkIGJ5IHRoZSBAcGFnZSBhdC1ydWxlLiJ9LHtuYW1lOiJwbGFjZS1jb250ZW50IixzeW50YXg6IjwnYWxpZ24tY29udGVudCc+IDwnanVzdGlmeS1jb250ZW50Jz4/IixyZWxldmFuY2U6NTEsYnJvd3NlcnM6WyJFNzkiLCJGRjQ1IiwiUzkiLCJDNTkiLCJPNDYiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvcGxhY2UtY29udGVudCJ9XSxkZXNjcmlwdGlvbjoiVGhlIHBsYWNlLWNvbnRlbnQgQ1NTIHNob3J0aGFuZCBwcm9wZXJ0eSBzZXRzIGJvdGggdGhlIGFsaWduLWNvbnRlbnQgYW5kIGp1c3RpZnktY29udGVudCBwcm9wZXJ0aWVzLiJ9LHtuYW1lOiJwbGFjZS1pdGVtcyIsc3ludGF4OiI8J2FsaWduLWl0ZW1zJz4gPCdqdXN0aWZ5LWl0ZW1zJz4/IixyZWxldmFuY2U6NTEsYnJvd3NlcnM6WyJFNzkiLCJGRjQ1IiwiUzExIiwiQzU5IiwiTzQ2Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3BsYWNlLWl0ZW1zIn1dLGRlc2NyaXB0aW9uOiJUaGUgQ1NTIHBsYWNlLWl0ZW1zIHNob3J0aGFuZCBwcm9wZXJ0eSBzZXRzIGJvdGggdGhlIGFsaWduLWl0ZW1zIGFuZCBqdXN0aWZ5LWl0ZW1zIHByb3BlcnRpZXMuIFRoZSBmaXJzdCB2YWx1ZSBpcyB0aGUgYWxpZ24taXRlbXMgcHJvcGVydHkgdmFsdWUsIHRoZSBzZWNvbmQgdGhlIGp1c3RpZnktaXRlbXMgb25lLiBJZiB0aGUgc2Vjb25kIHZhbHVlIGlzIG5vdCBwcmVzZW50LCB0aGUgZmlyc3QgdmFsdWUgaXMgYWxzbyB1c2VkIGZvciBpdC4ifSx7bmFtZToicGxhY2Utc2VsZiIsc3ludGF4OiI8J2FsaWduLXNlbGYnPiA8J2p1c3RpZnktc2VsZic+PyIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRTc5IiwiRkY0NSIsIlMxMSIsIkM1OSIsIk80NiJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9wbGFjZS1zZWxmIn1dLGRlc2NyaXB0aW9uOiJUaGUgcGxhY2Utc2VsZiBDU1MgcHJvcGVydHkgaXMgYSBzaG9ydGhhbmQgcHJvcGVydHkgc2V0cyBib3RoIHRoZSBhbGlnbi1zZWxmIGFuZCBqdXN0aWZ5LXNlbGYgcHJvcGVydGllcy4gVGhlIGZpcnN0IHZhbHVlIGlzIHRoZSBhbGlnbi1zZWxmIHByb3BlcnR5IHZhbHVlLCB0aGUgc2Vjb25kIHRoZSBqdXN0aWZ5LXNlbGYgb25lLiBJZiB0aGUgc2Vjb25kIHZhbHVlIGlzIG5vdCBwcmVzZW50LCB0aGUgZmlyc3QgdmFsdWUgaXMgYWxzbyB1c2VkIGZvciBpdC4ifSx7bmFtZToicHJpbnQtY29sb3ItYWRqdXN0IixzeW50YXg6ImVjb25vbXkgfCBleGFjdCIsdmFsdWVzOlt7bmFtZToiZWNvbm9teSJ9LHtuYW1lOiJleGFjdCJ9XSxyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJFNzkiLCJGRjk3IiwiUzE1LjQiLCJDMTciLCJPMTUiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvcHJpbnQtY29sb3ItYWRqdXN0In1dLGRlc2NyaXB0aW9uOiJEZWZpbmVzIHdoYXQgb3B0aW1pemF0aW9uIHRoZSB1c2VyIGFnZW50IGlzIGFsbG93ZWQgdG8gZG8gd2hlbiBhZGp1c3RpbmcgdGhlIGFwcGVhcmFuY2UgZm9yIGFuIG91dHB1dCBkZXZpY2UuIn0se25hbWU6InJvdGF0ZSIsc3ludGF4OiJub25lIHwgPGFuZ2xlPiB8IFsgeCB8IHkgfCB6IHwgPG51bWJlcj57M30gXSAmJiA8YW5nbGU+IixyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJFMTA0IiwiRkY3MiIsIlMxNC4xIiwiQzEwNCIsIk85MCJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9yb3RhdGUifV0sZGVzY3JpcHRpb246IlRoZSByb3RhdGUgQ1NTIHByb3BlcnR5IGFsbG93cyB5b3UgdG8gc3BlY2lmeSByb3RhdGlvbiB0cmFuc2Zvcm1zIGluZGl2aWR1YWxseSBhbmQgaW5kZXBlbmRlbnRseSBvZiB0aGUgdHJhbnNmb3JtIHByb3BlcnR5LiBUaGlzIG1hcHMgYmV0dGVyIHRvIHR5cGljYWwgdXNlciBpbnRlcmZhY2UgdXNhZ2UsIGFuZCBzYXZlcyBoYXZpbmcgdG8gcmVtZW1iZXIgdGhlIGV4YWN0IG9yZGVyIG9mIHRyYW5zZm9ybSBmdW5jdGlvbnMgdG8gc3BlY2lmeSBpbiB0aGUgdHJhbnNmb3JtIHZhbHVlLiJ9LHtuYW1lOiJyb3ctZ2FwIixzeW50YXg6Im5vcm1hbCB8IDxsZW5ndGgtcGVyY2VudGFnZT4iLHJlbGV2YW5jZTo1OCxicm93c2VyczpbIkUxNiIsIkZGNTIiLCJTMTAuMSIsIkM0NyIsIk8zNCJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9yb3ctZ2FwIn1dLGRlc2NyaXB0aW9uOiJUaGUgcm93LWdhcCBDU1MgcHJvcGVydHkgc3BlY2lmaWVzIHRoZSBndXR0ZXIgYmV0d2VlbiBncmlkIHJvd3MuIn0se25hbWU6InJ1YnktbWVyZ2UiLHN0YXR1czoiZXhwZXJpbWVudGFsIixzeW50YXg6InNlcGFyYXRlIHwgY29sbGFwc2UgfCBhdXRvIix2YWx1ZXM6W3tuYW1lOiJzZXBhcmF0ZSJ9LHtuYW1lOiJjb2xsYXBzZSJ9LHtuYW1lOiJhdXRvIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiVGhpcyBwcm9wZXJ0eSBjb250cm9scyBob3cgcnVieSBhbm5vdGF0aW9uIGJveGVzIHNob3VsZCBiZSByZW5kZXJlZCB3aGVuIHRoZXJlIGFyZSBtb3JlIHRoYW4gb25lIGluIGEgcnVieSBjb250YWluZXIgYm94OiB3aGV0aGVyIGVhY2ggcGFpciBzaG91bGQgYmUga2VwdCBzZXBhcmF0ZSwgdGhlIGFubm90YXRpb25zIHNob3VsZCBiZSBjb2xsYXBzZWQgYW5kIHJlbmRlcmVkIGFzIGEgZ3JvdXAsIG9yIHRoZSBzZXBhcmF0aW9uIHNob3VsZCBiZSBkZXRlcm1pbmVkIGJhc2VkIG9uIHRoZSBzcGFjZSBhdmFpbGFibGUuIn0se25hbWU6InNjYWxlIixzeW50YXg6Im5vbmUgfCA8bnVtYmVyPnsxLDN9IixyZWxldmFuY2U6NTEsYnJvd3NlcnM6WyJFMTA0IiwiRkY3MiIsIlMxNC4xIiwiQzEwNCIsIk85MCJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9zY2FsZSJ9XSxkZXNjcmlwdGlvbjoiVGhlIHNjYWxlIENTUyBwcm9wZXJ0eSBhbGxvd3MgeW91IHRvIHNwZWNpZnkgc2NhbGUgdHJhbnNmb3JtcyBpbmRpdmlkdWFsbHkgYW5kIGluZGVwZW5kZW50bHkgb2YgdGhlIHRyYW5zZm9ybSBwcm9wZXJ0eS4gVGhpcyBtYXBzIGJldHRlciB0byB0eXBpY2FsIHVzZXIgaW50ZXJmYWNlIHVzYWdlLCBhbmQgc2F2ZXMgaGF2aW5nIHRvIHJlbWVtYmVyIHRoZSBleGFjdCBvcmRlciBvZiB0cmFuc2Zvcm0gZnVuY3Rpb25zIHRvIHNwZWNpZnkgaW4gdGhlIHRyYW5zZm9ybSB2YWx1ZS4ifSx7bmFtZToic2Nyb2xsYmFyLWNvbG9yIixzeW50YXg6ImF1dG8gfCA8Y29sb3I+ezJ9IixyZWxldmFuY2U6NTIsYnJvd3NlcnM6WyJFMTIxIiwiRkY2NCIsIkMxMjEiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1Mvc2Nyb2xsYmFyLWNvbG9yIn1dLGRlc2NyaXB0aW9uOiJUaGUgc2Nyb2xsYmFyLWNvbG9yIENTUyBwcm9wZXJ0eSBzZXRzIHRoZSBjb2xvciBvZiB0aGUgc2Nyb2xsYmFyIHRyYWNrIGFuZCB0aHVtYi4ifSx7bmFtZToic2Nyb2xsYmFyLWd1dHRlciIsc3ludGF4OiJhdXRvIHwgc3RhYmxlICYmIGJvdGgtZWRnZXM/IixyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJFOTQiLCJGRjk3IiwiUzE3IiwiQzk0IiwiTzgwIl0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3Njcm9sbGJhci1ndXR0ZXIifV0sZGVzY3JpcHRpb246IlRoZSBzY3JvbGxiYXItZ3V0dGVyIENTUyBwcm9wZXJ0eSBhbGxvd3MgYXV0aG9ycyB0byByZXNlcnZlIHNwYWNlIGZvciB0aGUgc2Nyb2xsYmFyLCBwcmV2ZW50aW5nIHVud2FudGVkIGxheW91dCBjaGFuZ2VzIGFzIHRoZSBjb250ZW50IGdyb3dzIHdoaWxlIGFsc28gYXZvaWRpbmcgdW5uZWNlc3NhcnkgdmlzdWFscyB3aGVuIHNjcm9sbGluZyBpc24ndCBuZWVkZWQuIn0se25hbWU6InNjcm9sbGJhci13aWR0aCIsc3ludGF4OiJhdXRvIHwgdGhpbiB8IG5vbmUiLHZhbHVlczpbe25hbWU6ImF1dG8ifSx7bmFtZToidGhpbiJ9LHtuYW1lOiJub25lIn1dLHJlbGV2YW5jZTo2Myxicm93c2VyczpbIkUxMjEiLCJGRjY0IiwiQzEyMSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9zY3JvbGxiYXItd2lkdGgifV0sZGVzY3JpcHRpb246IlRoZSBzY3JvbGxiYXItd2lkdGggcHJvcGVydHkgYWxsb3dzIHRoZSBhdXRob3IgdG8gc2V0IHRoZSBtYXhpbXVtIHRoaWNrbmVzcyBvZiBhbiBlbGVtZW504oCZcyBzY3JvbGxiYXJzIHdoZW4gdGhleSBhcmUgc2hvd24uICJ9LHtuYW1lOiJzY3JvbGwtbWFyZ2luIixzeW50YXg6IjxsZW5ndGg+ezEsNH0iLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkU3OSIsIkZGOTAiLCJTMTQuMSIsIkM2OSIsIk81NiJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9zY3JvbGwtbWFyZ2luIn1dLGRlc2NyaXB0aW9uOiJUaGUgc2Nyb2xsLW1hcmdpbiBwcm9wZXJ0eSBpcyBhIHNob3J0aGFuZCBwcm9wZXJ0eSB3aGljaCBzZXRzIGFsbCBvZiB0aGUgc2Nyb2xsLW1hcmdpbiBsb25naGFuZHMsIGFzc2lnbmluZyB2YWx1ZXMgbXVjaCBsaWtlIHRoZSBtYXJnaW4gcHJvcGVydHkgZG9lcyBmb3IgdGhlIG1hcmdpbi0qIGxvbmdoYW5kcy4ifSx7bmFtZToic2Nyb2xsLW1hcmdpbi1ibG9jayIsc3ludGF4OiI8bGVuZ3RoPnsxLDJ9IixyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJFNzkiLCJGRjY4IiwiUzE1IiwiQzY5IiwiTzU2Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3Njcm9sbC1tYXJnaW4tYmxvY2sifV0sZGVzY3JpcHRpb246IlRoZSBzY3JvbGwtbWFyZ2luLWJsb2NrIHByb3BlcnR5IGlzIGEgc2hvcnRoYW5kIHByb3BlcnR5IHdoaWNoIHNldHMgdGhlIHNjcm9sbC1tYXJnaW4gbG9uZ2hhbmRzIGluIHRoZSBibG9jayBkaW1lbnNpb24uIn0se25hbWU6InNjcm9sbC1tYXJnaW4tYmxvY2stc3RhcnQiLHN5bnRheDoiPGxlbmd0aD4iLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkU3OSIsIkZGNjgiLCJTMTUiLCJDNjkiLCJPNTYiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1Mvc2Nyb2xsLW1hcmdpbi1ibG9jay1zdGFydCJ9XSxkZXNjcmlwdGlvbjoiVGhlIHNjcm9sbC1tYXJnaW4tYmxvY2stc3RhcnQgcHJvcGVydHkgZGVmaW5lcyB0aGUgbWFyZ2luIG9mIHRoZSBzY3JvbGwgc25hcCBhcmVhIGF0IHRoZSBzdGFydCBvZiB0aGUgYmxvY2sgZGltZW5zaW9uIHRoYXQgaXMgdXNlZCBmb3Igc25hcHBpbmcgdGhpcyBib3ggdG8gdGhlIHNuYXBwb3J0LiBUaGUgc2Nyb2xsIHNuYXAgYXJlYSBpcyBkZXRlcm1pbmVkIGJ5IHRha2luZyB0aGUgdHJhbnNmb3JtZWQgYm9yZGVyIGJveCwgZmluZGluZyBpdHMgcmVjdGFuZ3VsYXIgYm91bmRpbmcgYm94IChheGlzLWFsaWduZWQgaW4gdGhlIHNjcm9sbCBjb250YWluZXLigJlzIGNvb3JkaW5hdGUgc3BhY2UpLCB0aGVuIGFkZGluZyB0aGUgc3BlY2lmaWVkIG91dHNldHMuIn0se25hbWU6InNjcm9sbC1tYXJnaW4tYmxvY2stZW5kIixzeW50YXg6IjxsZW5ndGg+IixyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJFNzkiLCJGRjY4IiwiUzE1IiwiQzY5IiwiTzU2Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3Njcm9sbC1tYXJnaW4tYmxvY2stZW5kIn1dLGRlc2NyaXB0aW9uOiJUaGUgc2Nyb2xsLW1hcmdpbi1ibG9jay1lbmQgcHJvcGVydHkgZGVmaW5lcyB0aGUgbWFyZ2luIG9mIHRoZSBzY3JvbGwgc25hcCBhcmVhIGF0IHRoZSBlbmQgb2YgdGhlIGJsb2NrIGRpbWVuc2lvbiB0aGF0IGlzIHVzZWQgZm9yIHNuYXBwaW5nIHRoaXMgYm94IHRvIHRoZSBzbmFwcG9ydC4gVGhlIHNjcm9sbCBzbmFwIGFyZWEgaXMgZGV0ZXJtaW5lZCBieSB0YWtpbmcgdGhlIHRyYW5zZm9ybWVkIGJvcmRlciBib3gsIGZpbmRpbmcgaXRzIHJlY3Rhbmd1bGFyIGJvdW5kaW5nIGJveCAoYXhpcy1hbGlnbmVkIGluIHRoZSBzY3JvbGwgY29udGFpbmVy4oCZcyBjb29yZGluYXRlIHNwYWNlKSwgdGhlbiBhZGRpbmcgdGhlIHNwZWNpZmllZCBvdXRzZXRzLiJ9LHtuYW1lOiJzY3JvbGwtbWFyZ2luLWJvdHRvbSIsc3ludGF4OiI8bGVuZ3RoPiIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRTc5IiwiRkY2OCIsIlMxNC4xIiwiQzY5IiwiTzU2Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3Njcm9sbC1tYXJnaW4tYm90dG9tIn1dLGRlc2NyaXB0aW9uOiJUaGUgc2Nyb2xsLW1hcmdpbi1ib3R0b20gcHJvcGVydHkgZGVmaW5lcyB0aGUgYm90dG9tIG1hcmdpbiBvZiB0aGUgc2Nyb2xsIHNuYXAgYXJlYSB0aGF0IGlzIHVzZWQgZm9yIHNuYXBwaW5nIHRoaXMgYm94IHRvIHRoZSBzbmFwcG9ydC4gVGhlIHNjcm9sbCBzbmFwIGFyZWEgaXMgZGV0ZXJtaW5lZCBieSB0YWtpbmcgdGhlIHRyYW5zZm9ybWVkIGJvcmRlciBib3gsIGZpbmRpbmcgaXRzIHJlY3Rhbmd1bGFyIGJvdW5kaW5nIGJveCAoYXhpcy1hbGlnbmVkIGluIHRoZSBzY3JvbGwgY29udGFpbmVy4oCZcyBjb29yZGluYXRlIHNwYWNlKSwgdGhlbiBhZGRpbmcgdGhlIHNwZWNpZmllZCBvdXRzZXRzLiJ9LHtuYW1lOiJzY3JvbGwtbWFyZ2luLWlubGluZSIsc3ludGF4OiI8bGVuZ3RoPnsxLDJ9IixyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJFNzkiLCJGRjY4IiwiUzE1IiwiQzY5IiwiTzU2Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3Njcm9sbC1tYXJnaW4taW5saW5lIn1dLGRlc2NyaXB0aW9uOiJUaGUgc2Nyb2xsLW1hcmdpbi1pbmxpbmUgcHJvcGVydHkgaXMgYSBzaG9ydGhhbmQgcHJvcGVydHkgd2hpY2ggc2V0cyB0aGUgc2Nyb2xsLW1hcmdpbiBsb25naGFuZHMgaW4gdGhlIGlubGluZSBkaW1lbnNpb24uIn0se25hbWU6InNjcm9sbC1tYXJnaW4taW5saW5lLXN0YXJ0IixzeW50YXg6IjxsZW5ndGg+IixyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJFNzkiLCJGRjY4IiwiUzE1IiwiQzY5IiwiTzU2Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3Njcm9sbC1tYXJnaW4taW5saW5lLXN0YXJ0In1dLGRlc2NyaXB0aW9uOiJUaGUgc2Nyb2xsLW1hcmdpbi1pbmxpbmUtc3RhcnQgcHJvcGVydHkgZGVmaW5lcyB0aGUgbWFyZ2luIG9mIHRoZSBzY3JvbGwgc25hcCBhcmVhIGF0IHRoZSBzdGFydCBvZiB0aGUgaW5saW5lIGRpbWVuc2lvbiB0aGF0IGlzIHVzZWQgZm9yIHNuYXBwaW5nIHRoaXMgYm94IHRvIHRoZSBzbmFwcG9ydC4gVGhlIHNjcm9sbCBzbmFwIGFyZWEgaXMgZGV0ZXJtaW5lZCBieSB0YWtpbmcgdGhlIHRyYW5zZm9ybWVkIGJvcmRlciBib3gsIGZpbmRpbmcgaXRzIHJlY3Rhbmd1bGFyIGJvdW5kaW5nIGJveCAoYXhpcy1hbGlnbmVkIGluIHRoZSBzY3JvbGwgY29udGFpbmVy4oCZcyBjb29yZGluYXRlIHNwYWNlKSwgdGhlbiBhZGRpbmcgdGhlIHNwZWNpZmllZCBvdXRzZXRzLiJ9LHtuYW1lOiJzY3JvbGwtbWFyZ2luLWlubGluZS1lbmQiLHN5bnRheDoiPGxlbmd0aD4iLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkU3OSIsIkZGNjgiLCJTMTUiLCJDNjkiLCJPNTYiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1Mvc2Nyb2xsLW1hcmdpbi1pbmxpbmUtZW5kIn1dLGRlc2NyaXB0aW9uOiJUaGUgc2Nyb2xsLW1hcmdpbi1pbmxpbmUtZW5kIHByb3BlcnR5IGRlZmluZXMgdGhlIG1hcmdpbiBvZiB0aGUgc2Nyb2xsIHNuYXAgYXJlYSBhdCB0aGUgZW5kIG9mIHRoZSBpbmxpbmUgZGltZW5zaW9uIHRoYXQgaXMgdXNlZCBmb3Igc25hcHBpbmcgdGhpcyBib3ggdG8gdGhlIHNuYXBwb3J0LiBUaGUgc2Nyb2xsIHNuYXAgYXJlYSBpcyBkZXRlcm1pbmVkIGJ5IHRha2luZyB0aGUgdHJhbnNmb3JtZWQgYm9yZGVyIGJveCwgZmluZGluZyBpdHMgcmVjdGFuZ3VsYXIgYm91bmRpbmcgYm94IChheGlzLWFsaWduZWQgaW4gdGhlIHNjcm9sbCBjb250YWluZXLigJlzIGNvb3JkaW5hdGUgc3BhY2UpLCB0aGVuIGFkZGluZyB0aGUgc3BlY2lmaWVkIG91dHNldHMuIn0se25hbWU6InNjcm9sbC1tYXJnaW4tbGVmdCIsc3ludGF4OiI8bGVuZ3RoPiIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRTc5IiwiRkY2OCIsIlMxNC4xIiwiQzY5IiwiTzU2Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3Njcm9sbC1tYXJnaW4tbGVmdCJ9XSxkZXNjcmlwdGlvbjoiVGhlIHNjcm9sbC1tYXJnaW4tbGVmdCBwcm9wZXJ0eSBkZWZpbmVzIHRoZSBsZWZ0IG1hcmdpbiBvZiB0aGUgc2Nyb2xsIHNuYXAgYXJlYSB0aGF0IGlzIHVzZWQgZm9yIHNuYXBwaW5nIHRoaXMgYm94IHRvIHRoZSBzbmFwcG9ydC4gVGhlIHNjcm9sbCBzbmFwIGFyZWEgaXMgZGV0ZXJtaW5lZCBieSB0YWtpbmcgdGhlIHRyYW5zZm9ybWVkIGJvcmRlciBib3gsIGZpbmRpbmcgaXRzIHJlY3Rhbmd1bGFyIGJvdW5kaW5nIGJveCAoYXhpcy1hbGlnbmVkIGluIHRoZSBzY3JvbGwgY29udGFpbmVy4oCZcyBjb29yZGluYXRlIHNwYWNlKSwgdGhlbiBhZGRpbmcgdGhlIHNwZWNpZmllZCBvdXRzZXRzLiJ9LHtuYW1lOiJzY3JvbGwtbWFyZ2luLXJpZ2h0IixzeW50YXg6IjxsZW5ndGg+IixyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJFNzkiLCJGRjY4IiwiUzE0LjEiLCJDNjkiLCJPNTYiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1Mvc2Nyb2xsLW1hcmdpbi1yaWdodCJ9XSxkZXNjcmlwdGlvbjoiVGhlIHNjcm9sbC1tYXJnaW4tcmlnaHQgcHJvcGVydHkgZGVmaW5lcyB0aGUgcmlnaHQgbWFyZ2luIG9mIHRoZSBzY3JvbGwgc25hcCBhcmVhIHRoYXQgaXMgdXNlZCBmb3Igc25hcHBpbmcgdGhpcyBib3ggdG8gdGhlIHNuYXBwb3J0LiBUaGUgc2Nyb2xsIHNuYXAgYXJlYSBpcyBkZXRlcm1pbmVkIGJ5IHRha2luZyB0aGUgdHJhbnNmb3JtZWQgYm9yZGVyIGJveCwgZmluZGluZyBpdHMgcmVjdGFuZ3VsYXIgYm91bmRpbmcgYm94IChheGlzLWFsaWduZWQgaW4gdGhlIHNjcm9sbCBjb250YWluZXLigJlzIGNvb3JkaW5hdGUgc3BhY2UpLCB0aGVuIGFkZGluZyB0aGUgc3BlY2lmaWVkIG91dHNldHMuIn0se25hbWU6InNjcm9sbC1tYXJnaW4tdG9wIixzeW50YXg6IjxsZW5ndGg+IixyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJFNzkiLCJGRjY4IiwiUzE0LjEiLCJDNjkiLCJPNTYiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1Mvc2Nyb2xsLW1hcmdpbi10b3AifV0sZGVzY3JpcHRpb246IlRoZSBzY3JvbGwtbWFyZ2luLXRvcCBwcm9wZXJ0eSBkZWZpbmVzIHRoZSB0b3AgbWFyZ2luIG9mIHRoZSBzY3JvbGwgc25hcCBhcmVhIHRoYXQgaXMgdXNlZCBmb3Igc25hcHBpbmcgdGhpcyBib3ggdG8gdGhlIHNuYXBwb3J0LiBUaGUgc2Nyb2xsIHNuYXAgYXJlYSBpcyBkZXRlcm1pbmVkIGJ5IHRha2luZyB0aGUgdHJhbnNmb3JtZWQgYm9yZGVyIGJveCwgZmluZGluZyBpdHMgcmVjdGFuZ3VsYXIgYm91bmRpbmcgYm94IChheGlzLWFsaWduZWQgaW4gdGhlIHNjcm9sbCBjb250YWluZXLigJlzIGNvb3JkaW5hdGUgc3BhY2UpLCB0aGVuIGFkZGluZyB0aGUgc3BlY2lmaWVkIG91dHNldHMuIn0se25hbWU6InNjcm9sbC1wYWRkaW5nIixzeW50YXg6IlsgYXV0byB8IDxsZW5ndGgtcGVyY2VudGFnZT4gXXsxLDR9IixyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJFNzkiLCJGRjY4IiwiUzE0LjEiLCJDNjkiLCJPNTYiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1Mvc2Nyb2xsLXBhZGRpbmcifV0sZGVzY3JpcHRpb246IlRoZSBzY3JvbGwtcGFkZGluZyBwcm9wZXJ0eSBpcyBhIHNob3J0aGFuZCBwcm9wZXJ0eSB3aGljaCBzZXRzIGFsbCBvZiB0aGUgc2Nyb2xsLXBhZGRpbmcgbG9uZ2hhbmRzLCBhc3NpZ25pbmcgdmFsdWVzIG11Y2ggbGlrZSB0aGUgcGFkZGluZyBwcm9wZXJ0eSBkb2VzIGZvciB0aGUgcGFkZGluZy0qIGxvbmdoYW5kcy4ifSx7bmFtZToic2Nyb2xsLXBhZGRpbmctYmxvY2siLHN5bnRheDoiWyBhdXRvIHwgPGxlbmd0aC1wZXJjZW50YWdlPiBdezEsMn0iLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkU3OSIsIkZGNjgiLCJTMTUiLCJDNjkiLCJPNTYiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1Mvc2Nyb2xsLXBhZGRpbmctYmxvY2sifV0sZGVzY3JpcHRpb246IlRoZSBzY3JvbGwtcGFkZGluZy1ibG9jayBwcm9wZXJ0eSBpcyBhIHNob3J0aGFuZCBwcm9wZXJ0eSB3aGljaCBzZXRzIHRoZSBzY3JvbGwtcGFkZGluZyBsb25naGFuZHMgZm9yIHRoZSBibG9jayBkaW1lbnNpb24uIn0se25hbWU6InNjcm9sbC1wYWRkaW5nLWJsb2NrLXN0YXJ0IixzeW50YXg6ImF1dG8gfCA8bGVuZ3RoLXBlcmNlbnRhZ2U+IixyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJFNzkiLCJGRjY4IiwiUzE1IiwiQzY5IiwiTzU2Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3Njcm9sbC1wYWRkaW5nLWJsb2NrLXN0YXJ0In1dLGRlc2NyaXB0aW9uOiJUaGUgc2Nyb2xsLXBhZGRpbmctYmxvY2stc3RhcnQgcHJvcGVydHkgZGVmaW5lcyBvZmZzZXRzIGZvciB0aGUgc3RhcnQgZWRnZSBpbiB0aGUgYmxvY2sgZGltZW5zaW9uIG9mIHRoZSBvcHRpbWFsIHZpZXdpbmcgcmVnaW9uIG9mIHRoZSBzY3JvbGxwb3J0OiB0aGUgcmVnaW9uIHVzZWQgYXMgdGhlIHRhcmdldCByZWdpb24gZm9yIHBsYWNpbmcgdGhpbmdzIGluIHZpZXcgb2YgdGhlIHVzZXIuIFRoaXMgYWxsb3dzIHRoZSBhdXRob3IgdG8gZXhjbHVkZSByZWdpb25zIG9mIHRoZSBzY3JvbGxwb3J0IHRoYXQgYXJlIG9ic2N1cmVkIGJ5IG90aGVyIGNvbnRlbnQgKHN1Y2ggYXMgZml4ZWQtcG9zaXRpb25lZCB0b29sYmFycyBvciBzaWRlYmFycykgb3Igc2ltcGx5IHRvIHB1dCBtb3JlIGJyZWF0aGluZyByb29tIGJldHdlZW4gYSB0YXJnZXRlZCBlbGVtZW50IGFuZCB0aGUgZWRnZXMgb2YgdGhlIHNjcm9sbHBvcnQuIn0se25hbWU6InNjcm9sbC1wYWRkaW5nLWJsb2NrLWVuZCIsc3ludGF4OiJhdXRvIHwgPGxlbmd0aC1wZXJjZW50YWdlPiIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRTc5IiwiRkY2OCIsIlMxNSIsIkM2OSIsIk81NiJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9zY3JvbGwtcGFkZGluZy1ibG9jay1lbmQifV0sZGVzY3JpcHRpb246IlRoZSBzY3JvbGwtcGFkZGluZy1ibG9jay1lbmQgcHJvcGVydHkgZGVmaW5lcyBvZmZzZXRzIGZvciB0aGUgZW5kIGVkZ2UgaW4gdGhlIGJsb2NrIGRpbWVuc2lvbiBvZiB0aGUgb3B0aW1hbCB2aWV3aW5nIHJlZ2lvbiBvZiB0aGUgc2Nyb2xscG9ydDogdGhlIHJlZ2lvbiB1c2VkIGFzIHRoZSB0YXJnZXQgcmVnaW9uIGZvciBwbGFjaW5nIHRoaW5ncyBpbiB2aWV3IG9mIHRoZSB1c2VyLiBUaGlzIGFsbG93cyB0aGUgYXV0aG9yIHRvIGV4Y2x1ZGUgcmVnaW9ucyBvZiB0aGUgc2Nyb2xscG9ydCB0aGF0IGFyZSBvYnNjdXJlZCBieSBvdGhlciBjb250ZW50IChzdWNoIGFzIGZpeGVkLXBvc2l0aW9uZWQgdG9vbGJhcnMgb3Igc2lkZWJhcnMpIG9yIHNpbXBseSB0byBwdXQgbW9yZSBicmVhdGhpbmcgcm9vbSBiZXR3ZWVuIGEgdGFyZ2V0ZWQgZWxlbWVudCBhbmQgdGhlIGVkZ2VzIG9mIHRoZSBzY3JvbGxwb3J0LiJ9LHtuYW1lOiJzY3JvbGwtcGFkZGluZy1ib3R0b20iLHN5bnRheDoiYXV0byB8IDxsZW5ndGgtcGVyY2VudGFnZT4iLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkU3OSIsIkZGNjgiLCJTMTQuMSIsIkM2OSIsIk81NiJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9zY3JvbGwtcGFkZGluZy1ib3R0b20ifV0sZGVzY3JpcHRpb246IlRoZSBzY3JvbGwtcGFkZGluZy1ib3R0b20gcHJvcGVydHkgZGVmaW5lcyBvZmZzZXRzIGZvciB0aGUgYm90dG9tIG9mIHRoZSBvcHRpbWFsIHZpZXdpbmcgcmVnaW9uIG9mIHRoZSBzY3JvbGxwb3J0OiB0aGUgcmVnaW9uIHVzZWQgYXMgdGhlIHRhcmdldCByZWdpb24gZm9yIHBsYWNpbmcgdGhpbmdzIGluIHZpZXcgb2YgdGhlIHVzZXIuIFRoaXMgYWxsb3dzIHRoZSBhdXRob3IgdG8gZXhjbHVkZSByZWdpb25zIG9mIHRoZSBzY3JvbGxwb3J0IHRoYXQgYXJlIG9ic2N1cmVkIGJ5IG90aGVyIGNvbnRlbnQgKHN1Y2ggYXMgZml4ZWQtcG9zaXRpb25lZCB0b29sYmFycyBvciBzaWRlYmFycykgb3Igc2ltcGx5IHRvIHB1dCBtb3JlIGJyZWF0aGluZyByb29tIGJldHdlZW4gYSB0YXJnZXRlZCBlbGVtZW50IGFuZCB0aGUgZWRnZXMgb2YgdGhlIHNjcm9sbHBvcnQuIn0se25hbWU6InNjcm9sbC1wYWRkaW5nLWlubGluZSIsc3ludGF4OiJbIGF1dG8gfCA8bGVuZ3RoLXBlcmNlbnRhZ2U+IF17MSwyfSIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRTc5IiwiRkY2OCIsIlMxNSIsIkM2OSIsIk81NiJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9zY3JvbGwtcGFkZGluZy1pbmxpbmUifV0sZGVzY3JpcHRpb246IlRoZSBzY3JvbGwtcGFkZGluZy1pbmxpbmUgcHJvcGVydHkgaXMgYSBzaG9ydGhhbmQgcHJvcGVydHkgd2hpY2ggc2V0cyB0aGUgc2Nyb2xsLXBhZGRpbmcgbG9uZ2hhbmRzIGZvciB0aGUgaW5saW5lIGRpbWVuc2lvbi4ifSx7bmFtZToic2Nyb2xsLXBhZGRpbmctaW5saW5lLXN0YXJ0IixzeW50YXg6ImF1dG8gfCA8bGVuZ3RoLXBlcmNlbnRhZ2U+IixyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJFNzkiLCJGRjY4IiwiUzE1IiwiQzY5IiwiTzU2Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3Njcm9sbC1wYWRkaW5nLWlubGluZS1zdGFydCJ9XSxkZXNjcmlwdGlvbjoiVGhlIHNjcm9sbC1wYWRkaW5nLWlubGluZS1zdGFydCBwcm9wZXJ0eSBkZWZpbmVzIG9mZnNldHMgZm9yIHRoZSBzdGFydCBlZGdlIGluIHRoZSBpbmxpbmUgZGltZW5zaW9uIG9mIHRoZSBvcHRpbWFsIHZpZXdpbmcgcmVnaW9uIG9mIHRoZSBzY3JvbGxwb3J0OiB0aGUgcmVnaW9uIHVzZWQgYXMgdGhlIHRhcmdldCByZWdpb24gZm9yIHBsYWNpbmcgdGhpbmdzIGluIHZpZXcgb2YgdGhlIHVzZXIuIFRoaXMgYWxsb3dzIHRoZSBhdXRob3IgdG8gZXhjbHVkZSByZWdpb25zIG9mIHRoZSBzY3JvbGxwb3J0IHRoYXQgYXJlIG9ic2N1cmVkIGJ5IG90aGVyIGNvbnRlbnQgKHN1Y2ggYXMgZml4ZWQtcG9zaXRpb25lZCB0b29sYmFycyBvciBzaWRlYmFycykgb3Igc2ltcGx5IHRvIHB1dCBtb3JlIGJyZWF0aGluZyByb29tIGJldHdlZW4gYSB0YXJnZXRlZCBlbGVtZW50IGFuZCB0aGUgZWRnZXMgb2YgdGhlIHNjcm9sbHBvcnQuIn0se25hbWU6InNjcm9sbC1wYWRkaW5nLWlubGluZS1lbmQiLHN5bnRheDoiYXV0byB8IDxsZW5ndGgtcGVyY2VudGFnZT4iLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkU3OSIsIkZGNjgiLCJTMTUiLCJDNjkiLCJPNTYiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1Mvc2Nyb2xsLXBhZGRpbmctaW5saW5lLWVuZCJ9XSxkZXNjcmlwdGlvbjoiVGhlIHNjcm9sbC1wYWRkaW5nLWlubGluZS1lbmQgcHJvcGVydHkgZGVmaW5lcyBvZmZzZXRzIGZvciB0aGUgZW5kIGVkZ2UgaW4gdGhlIGlubGluZSBkaW1lbnNpb24gb2YgdGhlIG9wdGltYWwgdmlld2luZyByZWdpb24gb2YgdGhlIHNjcm9sbHBvcnQ6IHRoZSByZWdpb24gdXNlZCBhcyB0aGUgdGFyZ2V0IHJlZ2lvbiBmb3IgcGxhY2luZyB0aGluZ3MgaW4gdmlldyBvZiB0aGUgdXNlci4gVGhpcyBhbGxvd3MgdGhlIGF1dGhvciB0byBleGNsdWRlIHJlZ2lvbnMgb2YgdGhlIHNjcm9sbHBvcnQgdGhhdCBhcmUgb2JzY3VyZWQgYnkgb3RoZXIgY29udGVudCAoc3VjaCBhcyBmaXhlZC1wb3NpdGlvbmVkIHRvb2xiYXJzIG9yIHNpZGViYXJzKSBvciBzaW1wbHkgdG8gcHV0IG1vcmUgYnJlYXRoaW5nIHJvb20gYmV0d2VlbiBhIHRhcmdldGVkIGVsZW1lbnQgYW5kIHRoZSBlZGdlcyBvZiB0aGUgc2Nyb2xscG9ydC4ifSx7bmFtZToic2Nyb2xsLXBhZGRpbmctbGVmdCIsc3ludGF4OiJhdXRvIHwgPGxlbmd0aC1wZXJjZW50YWdlPiIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRTc5IiwiRkY2OCIsIlMxNC4xIiwiQzY5IiwiTzU2Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3Njcm9sbC1wYWRkaW5nLWxlZnQifV0sZGVzY3JpcHRpb246IlRoZSBzY3JvbGwtcGFkZGluZy1sZWZ0IHByb3BlcnR5IGRlZmluZXMgb2Zmc2V0cyBmb3IgdGhlIGxlZnQgb2YgdGhlIG9wdGltYWwgdmlld2luZyByZWdpb24gb2YgdGhlIHNjcm9sbHBvcnQ6IHRoZSByZWdpb24gdXNlZCBhcyB0aGUgdGFyZ2V0IHJlZ2lvbiBmb3IgcGxhY2luZyB0aGluZ3MgaW4gdmlldyBvZiB0aGUgdXNlci4gVGhpcyBhbGxvd3MgdGhlIGF1dGhvciB0byBleGNsdWRlIHJlZ2lvbnMgb2YgdGhlIHNjcm9sbHBvcnQgdGhhdCBhcmUgb2JzY3VyZWQgYnkgb3RoZXIgY29udGVudCAoc3VjaCBhcyBmaXhlZC1wb3NpdGlvbmVkIHRvb2xiYXJzIG9yIHNpZGViYXJzKSBvciBzaW1wbHkgdG8gcHV0IG1vcmUgYnJlYXRoaW5nIHJvb20gYmV0d2VlbiBhIHRhcmdldGVkIGVsZW1lbnQgYW5kIHRoZSBlZGdlcyBvZiB0aGUgc2Nyb2xscG9ydC4ifSx7bmFtZToic2Nyb2xsLXBhZGRpbmctcmlnaHQiLHN5bnRheDoiYXV0byB8IDxsZW5ndGgtcGVyY2VudGFnZT4iLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkU3OSIsIkZGNjgiLCJTMTQuMSIsIkM2OSIsIk81NiJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9zY3JvbGwtcGFkZGluZy1yaWdodCJ9XSxkZXNjcmlwdGlvbjoiVGhlIHNjcm9sbC1wYWRkaW5nLXJpZ2h0IHByb3BlcnR5IGRlZmluZXMgb2Zmc2V0cyBmb3IgdGhlIHJpZ2h0IG9mIHRoZSBvcHRpbWFsIHZpZXdpbmcgcmVnaW9uIG9mIHRoZSBzY3JvbGxwb3J0OiB0aGUgcmVnaW9uIHVzZWQgYXMgdGhlIHRhcmdldCByZWdpb24gZm9yIHBsYWNpbmcgdGhpbmdzIGluIHZpZXcgb2YgdGhlIHVzZXIuIFRoaXMgYWxsb3dzIHRoZSBhdXRob3IgdG8gZXhjbHVkZSByZWdpb25zIG9mIHRoZSBzY3JvbGxwb3J0IHRoYXQgYXJlIG9ic2N1cmVkIGJ5IG90aGVyIGNvbnRlbnQgKHN1Y2ggYXMgZml4ZWQtcG9zaXRpb25lZCB0b29sYmFycyBvciBzaWRlYmFycykgb3Igc2ltcGx5IHRvIHB1dCBtb3JlIGJyZWF0aGluZyByb29tIGJldHdlZW4gYSB0YXJnZXRlZCBlbGVtZW50IGFuZCB0aGUgZWRnZXMgb2YgdGhlIHNjcm9sbHBvcnQuIn0se25hbWU6InNjcm9sbC1wYWRkaW5nLXRvcCIsc3ludGF4OiJhdXRvIHwgPGxlbmd0aC1wZXJjZW50YWdlPiIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRTc5IiwiRkY2OCIsIlMxNC4xIiwiQzY5IiwiTzU2Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3Njcm9sbC1wYWRkaW5nLXRvcCJ9XSxkZXNjcmlwdGlvbjoiVGhlIHNjcm9sbC1wYWRkaW5nLXRvcCBwcm9wZXJ0eSBkZWZpbmVzIG9mZnNldHMgZm9yIHRoZSB0b3Agb2YgdGhlIG9wdGltYWwgdmlld2luZyByZWdpb24gb2YgdGhlIHNjcm9sbHBvcnQ6IHRoZSByZWdpb24gdXNlZCBhcyB0aGUgdGFyZ2V0IHJlZ2lvbiBmb3IgcGxhY2luZyB0aGluZ3MgaW4gdmlldyBvZiB0aGUgdXNlci4gVGhpcyBhbGxvd3MgdGhlIGF1dGhvciB0byBleGNsdWRlIHJlZ2lvbnMgb2YgdGhlIHNjcm9sbHBvcnQgdGhhdCBhcmUgb2JzY3VyZWQgYnkgb3RoZXIgY29udGVudCAoc3VjaCBhcyBmaXhlZC1wb3NpdGlvbmVkIHRvb2xiYXJzIG9yIHNpZGViYXJzKSBvciBzaW1wbHkgdG8gcHV0IG1vcmUgYnJlYXRoaW5nIHJvb20gYmV0d2VlbiBhIHRhcmdldGVkIGVsZW1lbnQgYW5kIHRoZSBlZGdlcyBvZiB0aGUgc2Nyb2xscG9ydC4ifSx7bmFtZToic2Nyb2xsLXNuYXAtYWxpZ24iLHN5bnRheDoiWyBub25lIHwgc3RhcnQgfCBlbmQgfCBjZW50ZXIgXXsxLDJ9IixyZWxldmFuY2U6NTMsYnJvd3NlcnM6WyJFNzkiLCJGRjY4IiwiUzExIiwiQzY5IiwiTzU2Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3Njcm9sbC1zbmFwLWFsaWduIn1dLGRlc2NyaXB0aW9uOiJUaGUgc2Nyb2xsLXNuYXAtYWxpZ24gcHJvcGVydHkgc3BlY2lmaWVzIHRoZSBib3jigJlzIHNuYXAgcG9zaXRpb24gYXMgYW4gYWxpZ25tZW50IG9mIGl0cyBzbmFwIGFyZWEgKGFzIHRoZSBhbGlnbm1lbnQgc3ViamVjdCkgd2l0aGluIGl0cyBzbmFwIGNvbnRhaW5lcuKAmXMgc25hcHBvcnQgKGFzIHRoZSBhbGlnbm1lbnQgY29udGFpbmVyKS4gVGhlIHR3byB2YWx1ZXMgc3BlY2lmeSB0aGUgc25hcHBpbmcgYWxpZ25tZW50IGluIHRoZSBibG9jayBheGlzIGFuZCBpbmxpbmUgYXhpcywgcmVzcGVjdGl2ZWx5LiBJZiBvbmx5IG9uZSB2YWx1ZSBpcyBzcGVjaWZpZWQsIHRoZSBzZWNvbmQgdmFsdWUgZGVmYXVsdHMgdG8gdGhlIHNhbWUgdmFsdWUuIn0se25hbWU6InNjcm9sbC1zbmFwLXN0b3AiLHN5bnRheDoibm9ybWFsIHwgYWx3YXlzIix2YWx1ZXM6W3tuYW1lOiJub3JtYWwifSx7bmFtZToiYWx3YXlzIn1dLHJlbGV2YW5jZTo1MSxicm93c2VyczpbIkU3OSIsIkZGMTAzIiwiUzE1IiwiQzc1IiwiTzYyIl0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3Njcm9sbC1zbmFwLXN0b3AifV0sZGVzY3JpcHRpb246J1RoZSBzY3JvbGwtc25hcC1zdG9wIENTUyBwcm9wZXJ0eSBkZWZpbmVzIHdoZXRoZXIgdGhlIHNjcm9sbCBjb250YWluZXIgaXMgYWxsb3dlZCB0byAicGFzcyBvdmVyIiBwb3NzaWJsZSBzbmFwIHBvc2l0aW9ucy4nfSx7bmFtZToic2Nyb2xsLXNuYXAtdHlwZS14IixzdGF0dXM6Im9ic29sZXRlIixzeW50YXg6Im5vbmUgfCBtYW5kYXRvcnkgfCBwcm94aW1pdHkiLHZhbHVlczpbe25hbWU6Im5vbmUifSx7bmFtZToibWFuZGF0b3J5In0se25hbWU6InByb3hpbWl0eSJ9XSxyZWxldmFuY2U6MCxkZXNjcmlwdGlvbjpgVGhlIHNjcm9sbC1zbmFwLXR5cGUteCBDU1MgcHJvcGVydHkgZGVmaW5lcyBob3cgc3RyaWN0bHkgc25hcCBwb2ludHMgYXJlIGVuZm9yY2VkIG9uIHRoZSBob3Jpem9udGFsIGF4aXMgb2YgdGhlIHNjcm9sbCBjb250YWluZXIgaW4gY2FzZSB0aGVyZSBpcyBvbmUuCgpTcGVjaWZ5aW5nIGFueSBwcmVjaXNlIGFuaW1hdGlvbnMgb3IgcGh5c2ljcyB1c2VkIHRvIGVuZm9yY2UgdGhvc2Ugc25hcCBwb2ludHMgaXMgbm90IGNvdmVyZWQgYnkgdGhpcyBwcm9wZXJ0eSBidXQgaW5zdGVhZCBsZWZ0IHVwIHRvIHRoZSB1c2VyIGFnZW50LmB9LHtuYW1lOiJzY3JvbGwtc25hcC10eXBlLXkiLHN0YXR1czoib2Jzb2xldGUiLHN5bnRheDoibm9uZSB8IG1hbmRhdG9yeSB8IHByb3hpbWl0eSIsdmFsdWVzOlt7bmFtZToibm9uZSJ9LHtuYW1lOiJtYW5kYXRvcnkifSx7bmFtZToicHJveGltaXR5In1dLHJlbGV2YW5jZTowLGRlc2NyaXB0aW9uOmBUaGUgc2Nyb2xsLXNuYXAtdHlwZS15IENTUyBwcm9wZXJ0eSBkZWZpbmVzIGhvdyBzdHJpY3RseSBzbmFwIHBvaW50cyBhcmUgZW5mb3JjZWQgb24gdGhlIHZlcnRpY2FsIGF4aXMgb2YgdGhlIHNjcm9sbCBjb250YWluZXIgaW4gY2FzZSB0aGVyZSBpcyBvbmUuCgpTcGVjaWZ5aW5nIGFueSBwcmVjaXNlIGFuaW1hdGlvbnMgb3IgcGh5c2ljcyB1c2VkIHRvIGVuZm9yY2UgdGhvc2Ugc25hcCBwb2ludHMgaXMgbm90IGNvdmVyZWQgYnkgdGhpcyBwcm9wZXJ0eSBidXQgaW5zdGVhZCBsZWZ0IHVwIHRvIHRoZSB1c2VyIGFnZW50LmB9LHtuYW1lOiJzY3JvbGwtdGltZWxpbmUiLHN0YXR1czoiZXhwZXJpbWVudGFsIixzeW50YXg6IlsgPCdzY3JvbGwtdGltZWxpbmUtbmFtZSc+IDwnc2Nyb2xsLXRpbWVsaW5lLWF4aXMnPj8gXSMiLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkUxMTUiLCJGRjExMSIsIkMxMTUiLCJPMTAxIl0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3Njcm9sbC10aW1lbGluZSJ9XSxkZXNjcmlwdGlvbjoiRGVmaW5lcyBhIG5hbWUgdGhhdCBjYW4gYmUgdXNlZCB0byBpZGVudGlmeSB0aGUgc291cmNlIGVsZW1lbnQgb2YgYSBzY3JvbGwgdGltZWxpbmUsIGFsb25nIHdpdGggdGhlIHNjcm9sbGJhciBheGlzIHRoYXQgc2hvdWxkIHByb3ZpZGUgdGhlIHRpbWVsaW5lLiJ9LHtuYW1lOiJzY3JvbGwtdGltZWxpbmUtYXhpcyIsc3RhdHVzOiJleHBlcmltZW50YWwiLHN5bnRheDoiWyBibG9jayB8IGlubGluZSB8IHggfCB5IF0jIixyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJFMTE1IiwiRkYxMTEiLCJDMTE1IiwiTzEwMSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9zY3JvbGwtdGltZWxpbmUtYXhpcyJ9XSxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIHRoZSBzY3JvbGxiYXIgdGhhdCB3aWxsIGJlIHVzZWQgdG8gcHJvdmlkZSB0aGUgdGltZWxpbmUgZm9yIGEgc2Nyb2xsLXRpbWVsaW5lIGFuaW1hdGlvbiJ9LHtuYW1lOiJzY3JvbGwtdGltZWxpbmUtbmFtZSIsc3RhdHVzOiJleHBlcmltZW50YWwiLHN5bnRheDoibm9uZSB8IDxkYXNoZWQtaWRlbnQ+IyIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRTExNSIsIkZGMTExIiwiQzExNSIsIk8xMDEiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1Mvc2Nyb2xsLXRpbWVsaW5lLW5hbWUifV0sZGVzY3JpcHRpb246IkRlZmluZXMgYSBuYW1lIHRoYXQgY2FuIGJlIHVzZWQgdG8gaWRlbnRpZnkgYW4gZWxlbWVudCBhcyB0aGUgc291cmNlIG9mIGEgc2Nyb2xsLXRpbWVsaW5lLiJ9LHtuYW1lOiJ0ZXh0LWNvbWJpbmUtdXByaWdodCIsc3ludGF4OiJub25lIHwgYWxsIHwgWyBkaWdpdHMgPGludGVnZXI+PyBdIixyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJFNzkiLCJGRjQ4IiwiUzE1LjQiLCJDNDgiLCJJRTExIiwiTzM1Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3RleHQtY29tYmluZS11cHJpZ2h0In1dLGRlc2NyaXB0aW9uOmBUaGUgdGV4dC1jb21iaW5lLXVwcmlnaHQgQ1NTIHByb3BlcnR5IHNwZWNpZmllcyB0aGUgY29tYmluYXRpb24gb2YgbXVsdGlwbGUgY2hhcmFjdGVycyBpbnRvIHRoZSBzcGFjZSBvZiBhIHNpbmdsZSBjaGFyYWN0ZXIuIElmIHRoZSBjb21iaW5lZCB0ZXh0IGlzIHdpZGVyIHRoYW4gMWVtLCB0aGUgdXNlciBhZ2VudCBtdXN0IGZpdCB0aGUgY29udGVudHMgd2l0aGluIDFlbS4gVGhlIHJlc3VsdGluZyBjb21wb3NpdGlvbiBpcyB0cmVhdGVkIGFzIGEgc2luZ2xlIHVwcmlnaHQgZ2x5cGggZm9yIGxheW91dCBhbmQgZGVjb3JhdGlvbi4gVGhpcyBwcm9wZXJ0eSBvbmx5IGhhcyBhbiBlZmZlY3QgaW4gdmVydGljYWwgd3JpdGluZyBtb2Rlcy4KClRoaXMgaXMgdXNlZCB0byBwcm9kdWNlIGFuIGVmZmVjdCB0aGF0IGlzIGtub3duIGFzIHRhdGUtY2jFqy15b2tvICjnuKbkuK3mqKopIGluIEphcGFuZXNlLCBvciBhcyDnm7Tmm7jmqavlkJEgaW4gQ2hpbmVzZS5gfSx7bmFtZToidGV4dC1kZWNvcmF0aW9uLXNraXAiLHN0YXR1czoiZXhwZXJpbWVudGFsIixzeW50YXg6Im5vbmUgfCBbIG9iamVjdHMgfHwgWyBzcGFjZXMgfCBbIGxlYWRpbmctc3BhY2VzIHx8IHRyYWlsaW5nLXNwYWNlcyBdIF0gfHwgZWRnZXMgfHwgYm94LWRlY29yYXRpb24gXSIscmVsZXZhbmNlOjUyLGJyb3dzZXJzOlsiUzEyLjEiLCJDNTciLCJPNDQiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvdGV4dC1kZWNvcmF0aW9uLXNraXAifV0sZGVzY3JpcHRpb246IlRoZSB0ZXh0LWRlY29yYXRpb24tc2tpcCBDU1MgcHJvcGVydHkgc3BlY2lmaWVzIHdoYXQgcGFydHMgb2YgdGhlIGVsZW1lbnTigJlzIGNvbnRlbnQgYW55IHRleHQgZGVjb3JhdGlvbiBhZmZlY3RpbmcgdGhlIGVsZW1lbnQgbXVzdCBza2lwIG92ZXIuIEl0IGNvbnRyb2xzIGFsbCB0ZXh0IGRlY29yYXRpb24gbGluZXMgZHJhd24gYnkgdGhlIGVsZW1lbnQgYW5kIGFsc28gYW55IHRleHQgZGVjb3JhdGlvbiBsaW5lcyBkcmF3biBieSBpdHMgYW5jZXN0b3JzLiJ9LHtuYW1lOiJ0ZXh0LWRlY29yYXRpb24tc2tpcC1pbmsiLHN5bnRheDoiYXV0byB8IGFsbCB8IG5vbmUiLHZhbHVlczpbe25hbWU6ImF1dG8ifSx7bmFtZToiYWxsIn0se25hbWU6Im5vbmUifV0scmVsZXZhbmNlOjUxLGJyb3dzZXJzOlsiRTc5IiwiRkY3MCIsIlMxNS40IiwiQzY0IiwiTzUwIl0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3RleHQtZGVjb3JhdGlvbi1za2lwLWluayJ9XSxkZXNjcmlwdGlvbjoiVGhlIHRleHQtZGVjb3JhdGlvbi1za2lwLWluayBDU1MgcHJvcGVydHkgc3BlY2lmaWVzIGhvdyBvdmVybGluZXMgYW5kIHVuZGVybGluZXMgYXJlIGRyYXduIHdoZW4gdGhleSBwYXNzIG92ZXIgZ2x5cGggYXNjZW5kZXJzIGFuZCBkZXNjZW5kZXJzLiJ9LHtuYW1lOiJ0ZXh0LWRlY29yYXRpb24tdGhpY2tuZXNzIixzeW50YXg6ImF1dG8gfCBmcm9tLWZvbnQgfCA8bGVuZ3RoPiB8IDxwZXJjZW50YWdlPiAiLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkU4OSIsIkZGNzAiLCJTMTIuMSIsIkM4OSIsIk83NSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy90ZXh0LWRlY29yYXRpb24tdGhpY2tuZXNzIn1dLGRlc2NyaXB0aW9uOiJUaGUgdGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVzcyBDU1MgcHJvcGVydHkgc2V0cyB0aGUgdGhpY2tuZXNzLCBvciB3aWR0aCwgb2YgdGhlIGRlY29yYXRpb24gbGluZSB0aGF0IGlzIHVzZWQgb24gdGV4dCBpbiBhbiBlbGVtZW50LCBzdWNoIGFzIGEgbGluZS10aHJvdWdoLCB1bmRlcmxpbmUsIG9yIG92ZXJsaW5lLiJ9LHtuYW1lOiJ0ZXh0LWVtcGhhc2lzIixzeW50YXg6IjwndGV4dC1lbXBoYXNpcy1zdHlsZSc+IHx8IDwndGV4dC1lbXBoYXNpcy1jb2xvcic+IixyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJFOTkiLCJGRjQ2IiwiUzciLCJDOTkiLCJPODUiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvdGV4dC1lbXBoYXNpcyJ9XSxkZXNjcmlwdGlvbjoiVGhlIHRleHQtZW1waGFzaXMgQ1NTIHByb3BlcnR5IGlzIGEgc2hvcnRoYW5kIHByb3BlcnR5IGZvciBzZXR0aW5nIHRleHQtZW1waGFzaXMtc3R5bGUgYW5kIHRleHQtZW1waGFzaXMtY29sb3IgaW4gb25lIGRlY2xhcmF0aW9uLiBUaGlzIHByb3BlcnR5IHdpbGwgYXBwbHkgdGhlIHNwZWNpZmllZCBlbXBoYXNpcyBtYXJrIHRvIGVhY2ggY2hhcmFjdGVyIG9mIHRoZSBlbGVtZW50J3MgdGV4dCwgZXhjZXB0IHNlcGFyYXRvciBjaGFyYWN0ZXJzLCBsaWtlIHNwYWNlcywgIGFuZCBjb250cm9sIGNoYXJhY3RlcnMuIn0se25hbWU6InRleHQtZW1waGFzaXMtY29sb3IiLHN5bnRheDoiPGNvbG9yPiIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRTk5IiwiRkY0NiIsIlM3IiwiQzk5IiwiTzg1Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3RleHQtZW1waGFzaXMtY29sb3IifV0sZGVzY3JpcHRpb246IlRoZSB0ZXh0LWVtcGhhc2lzLWNvbG9yIENTUyBwcm9wZXJ0eSBkZWZpbmVzIHRoZSBjb2xvciB1c2VkIHRvIGRyYXcgZW1waGFzaXMgbWFya3Mgb24gdGV4dCBiZWluZyByZW5kZXJlZCBpbiB0aGUgSFRNTCBkb2N1bWVudC4gVGhpcyB2YWx1ZSBjYW4gYWxzbyBiZSBzZXQgYW5kIHJlc2V0IHVzaW5nIHRoZSB0ZXh0LWVtcGhhc2lzIHNob3J0aGFuZC4ifSx7bmFtZToidGV4dC1lbXBoYXNpcy1wb3NpdGlvbiIsc3ludGF4OiJbIG92ZXIgfCB1bmRlciBdICYmIFsgcmlnaHQgfCBsZWZ0IF0iLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkU5OSIsIkZGNDYiLCJTNyIsIkM5OSIsIk84NSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy90ZXh0LWVtcGhhc2lzLXBvc2l0aW9uIn1dLGRlc2NyaXB0aW9uOiJUaGUgdGV4dC1lbXBoYXNpcy1wb3NpdGlvbiBDU1MgcHJvcGVydHkgZGVzY3JpYmVzIHdoZXJlIGVtcGhhc2lzIG1hcmtzIGFyZSBkcmF3biBhdC4gVGhlIGVmZmVjdCBvZiBlbXBoYXNpcyBtYXJrcyBvbiB0aGUgbGluZSBoZWlnaHQgaXMgdGhlIHNhbWUgYXMgZm9yIHJ1YnkgdGV4dDogaWYgdGhlcmUgaXNuJ3QgZW5vdWdoIHBsYWNlLCB0aGUgbGluZSBoZWlnaHQgaXMgaW5jcmVhc2VkLiJ9LHtuYW1lOiJ0ZXh0LWVtcGhhc2lzLXN0eWxlIixzeW50YXg6Im5vbmUgfCBbIFsgZmlsbGVkIHwgb3BlbiBdIHx8IFsgZG90IHwgY2lyY2xlIHwgZG91YmxlLWNpcmNsZSB8IHRyaWFuZ2xlIHwgc2VzYW1lIF0gXSB8IDxzdHJpbmc+IixyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJFOTkiLCJGRjQ2IiwiUzciLCJDOTkiLCJPODUiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvdGV4dC1lbXBoYXNpcy1zdHlsZSJ9XSxkZXNjcmlwdGlvbjoiVGhlIHRleHQtZW1waGFzaXMtc3R5bGUgQ1NTIHByb3BlcnR5IGRlZmluZXMgdGhlIHR5cGUgb2YgZW1waGFzaXMgdXNlZC4gSXQgY2FuIGFsc28gYmUgc2V0LCBhbmQgcmVzZXQsIHVzaW5nIHRoZSB0ZXh0LWVtcGhhc2lzIHNob3J0aGFuZC4ifSx7bmFtZToidGV4dC1zaXplLWFkanVzdCIsc3RhdHVzOiJleHBlcmltZW50YWwiLHN5bnRheDoibm9uZSB8IGF1dG8gfCA8cGVyY2VudGFnZT4iLHJlbGV2YW5jZTo1Nyxicm93c2VyczpbIkU3OSIsIkM1NCIsIk80MSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy90ZXh0LXNpemUtYWRqdXN0In1dLGRlc2NyaXB0aW9uOiJUaGUgdGV4dC1zaXplLWFkanVzdCBDU1MgcHJvcGVydHkgY29udHJvbHMgdGhlIHRleHQgaW5mbGF0aW9uIGFsZ29yaXRobSB1c2VkIG9uIHNvbWUgc21hcnRwaG9uZXMgYW5kIHRhYmxldHMuIE90aGVyIGJyb3dzZXJzIHdpbGwgaWdub3JlIHRoaXMgcHJvcGVydHkuIn0se25hbWU6InRleHQtdW5kZXJsaW5lLW9mZnNldCIsc3ludGF4OiJhdXRvIHwgPGxlbmd0aD4gfCA8cGVyY2VudGFnZT4gIixyZWxldmFuY2U6NTEsYnJvd3NlcnM6WyJFODciLCJGRjcwIiwiUzEyLjEiLCJDODciLCJPNzMiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvdGV4dC11bmRlcmxpbmUtb2Zmc2V0In1dLGRlc2NyaXB0aW9uOiJUaGUgdGV4dC11bmRlcmxpbmUtb2Zmc2V0IENTUyBwcm9wZXJ0eSBzZXRzIHRoZSBvZmZzZXQgZGlzdGFuY2Ugb2YgYW4gdW5kZXJsaW5lIHRleHQgZGVjb3JhdGlvbiBsaW5lIChhcHBsaWVkIHVzaW5nIHRleHQtZGVjb3JhdGlvbikgZnJvbSBpdHMgb3JpZ2luYWwgcG9zaXRpb24uIn0se25hbWU6InRleHQtd3JhcCIsc3ludGF4OiJ3cmFwIHwgbm93cmFwIHwgYmFsYW5jZSB8IHN0YWJsZSB8IHByZXR0eSIsdmFsdWVzOlt7bmFtZToid3JhcCJ9LHtuYW1lOiJub3dyYXAifSx7bmFtZToiYmFsYW5jZSJ9LHtuYW1lOiJzdGFibGUifSx7bmFtZToicHJldHR5In1dLHJlbGV2YW5jZTo1NCxicm93c2VyczpbIkUxMTQiLCJGRjEyMSIsIlNwcmV2aWV3IiwiQzExNCIsIk8xMDAiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvdGV4dC13cmFwIn1dLGRlc2NyaXB0aW9uOiJUaGUgdGV4dC13cmFwIENTUyBwcm9wZXJ0eSBjb250cm9scyBob3cgdGV4dCBpbnNpZGUgYW4gZWxlbWVudCBpcyB3cmFwcGVkLiJ9LHtuYW1lOiJ0aW1lbGluZS1zY29wZSIsc3RhdHVzOiJleHBlcmltZW50YWwiLHN5bnRheDoibm9uZSB8IDxkYXNoZWQtaWRlbnQ+IyIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRTExNiIsIkMxMTYiLCJPMTAyIl0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3RpbWVsaW5lLXNjb3BlIn1dLGRlc2NyaXB0aW9uOiJUaGUgdGltZWxpbmUtc2NvcGUgQ1NTIHByb3BlcnR5IG1vZGlmaWVzIHRoZSBzY29wZSBvZiBhIG5hbWVkIGFuaW1hdGlvbiB0aW1lbGluZS4ifSx7bmFtZToidHJhbnNmb3JtLWJveCIsc3ludGF4OiJjb250ZW50LWJveCB8IGJvcmRlci1ib3ggfCBmaWxsLWJveCB8IHN0cm9rZS1ib3ggfCB2aWV3LWJveCIsdmFsdWVzOlt7bmFtZToiY29udGVudC1ib3gifSx7bmFtZToiYm9yZGVyLWJveCJ9LHtuYW1lOiJmaWxsLWJveCJ9LHtuYW1lOiJzdHJva2UtYm94In0se25hbWU6InZpZXctYm94In1dLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkU3OSIsIkZGNTUiLCJTMTEiLCJDNjQiLCJPNTEiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvdHJhbnNmb3JtLWJveCJ9XSxkZXNjcmlwdGlvbjoiVGhlIHRyYW5zZm9ybS1ib3ggQ1NTIHByb3BlcnR5IGRlZmluZXMgdGhlIGxheW91dCBib3ggdG8gd2hpY2ggdGhlIHRyYW5zZm9ybSBhbmQgdHJhbnNmb3JtLW9yaWdpbiBwcm9wZXJ0aWVzIHJlbGF0ZS4ifSx7bmFtZToidHJhbnNpdGlvbi1iZWhhdmlvciIsc3RhdHVzOiJleHBlcmltZW50YWwiLHN5bnRheDoiPHRyYW5zaXRpb24tYmVoYXZpb3ItdmFsdWU+IyIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRTExNyIsIkMxMTciLCJPMTAzIl0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3RyYW5zaXRpb24tYmVoYXZpb3IifV0sZGVzY3JpcHRpb246IlRoZSB0cmFuc2l0aW9uLWJlaGF2aW9yIENTUyBwcm9wZXJ0eSBzcGVjaWZpZXMgd2hldGhlciB0cmFuc2l0aW9ucyB3aWxsIGJlIHN0YXJ0ZWQgZm9yIHByb3BlcnRpZXMgd2hvc2UgYW5pbWF0aW9uIGJlaGF2aW9yIGlzIGRpc2NyZXRlLiJ9LHtuYW1lOiJ0cmFuc2xhdGUiLHN5bnRheDoibm9uZSB8IDxsZW5ndGgtcGVyY2VudGFnZT4gWyA8bGVuZ3RoLXBlcmNlbnRhZ2U+IDxsZW5ndGg+PyBdPyIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRTEwNCIsIkZGNzIiLCJTMTQuMSIsIkMxMDQiLCJPOTAiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvdHJhbnNsYXRlIn1dLGRlc2NyaXB0aW9uOiJUaGUgdHJhbnNsYXRlIENTUyBwcm9wZXJ0eSBhbGxvd3MgeW91IHRvIHNwZWNpZnkgdHJhbnNsYXRpb24gdHJhbnNmb3JtcyBpbmRpdmlkdWFsbHkgYW5kIGluZGVwZW5kZW50bHkgb2YgdGhlIHRyYW5zZm9ybSBwcm9wZXJ0eS4gVGhpcyBtYXBzIGJldHRlciB0byB0eXBpY2FsIHVzZXIgaW50ZXJmYWNlIHVzYWdlLCBhbmQgc2F2ZXMgaGF2aW5nIHRvIHJlbWVtYmVyIHRoZSBleGFjdCBvcmRlciBvZiB0cmFuc2Zvcm0gZnVuY3Rpb25zIHRvIHNwZWNpZnkgaW4gdGhlIHRyYW5zZm9ybSB2YWx1ZS4ifSx7bmFtZToidmlldy10aW1lbGluZSIsc3RhdHVzOiJleHBlcmltZW50YWwiLHN5bnRheDoiWyA8J3ZpZXctdGltZWxpbmUtbmFtZSc+IDwndmlldy10aW1lbGluZS1heGlzJz4/IF0jIixyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJFMTE1IiwiRkYxMTQiLCJDMTE1IiwiTzEwMSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy92aWV3LXRpbWVsaW5lIn1dLGRlc2NyaXB0aW9uOiJUaGUgdmlldy10aW1lbGluZSBDU1Mgc2hvcnRoYW5kIHByb3BlcnR5IGlzIHVzZWQgdG8gZGVmaW5lIGEgbmFtZWQgdmlldyBwcm9ncmVzcyB0aW1lbGluZSwgd2hpY2ggaXMgcHJvZ3Jlc3NlZCB0aHJvdWdoIGJhc2VkIG9uIHRoZSBjaGFuZ2UgaW4gdmlzaWJpbGl0eSBvZiBhbiBlbGVtZW50IChrbm93biBhcyB0aGUgc3ViamVjdCkgaW5zaWRlIGEgc2Nyb2xsYWJsZSBlbGVtZW50IChzY3JvbGxlcikuIHZpZXctdGltZWxpbmUgaXMgc2V0IG9uIHRoZSBzdWJqZWN0LiJ9LHtuYW1lOiJ2aWV3LXRpbWVsaW5lLWF4aXMiLHN0YXR1czoiZXhwZXJpbWVudGFsIixzeW50YXg6IlsgYmxvY2sgfCBpbmxpbmUgfCB4IHwgeSBdIyIscmVsZXZhbmNlOjUwLGJyb3dzZXJzOlsiRTExNSIsIkZGMTE0IiwiQzExNSIsIk8xMDEiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1Mvdmlldy10aW1lbGluZS1heGlzIn1dLGRlc2NyaXB0aW9uOiJUaGUgdmlldy10aW1lbGluZS1heGlzIENTUyBwcm9wZXJ0eSBpcyB1c2VkIHRvIHNwZWNpZnkgdGhlIHNjcm9sbGJhciBkaXJlY3Rpb24gdGhhdCB3aWxsIGJlIHVzZWQgdG8gcHJvdmlkZSB0aGUgdGltZWxpbmUgZm9yIGEgbmFtZWQgdmlldyBwcm9ncmVzcyB0aW1lbGluZSBhbmltYXRpb24sIHdoaWNoIGlzIHByb2dyZXNzZWQgdGhyb3VnaCBiYXNlZCBvbiB0aGUgY2hhbmdlIGluIHZpc2liaWxpdHkgb2YgYW4gZWxlbWVudCAoa25vd24gYXMgdGhlIHN1YmplY3QpIGluc2lkZSBhIHNjcm9sbGFibGUgZWxlbWVudCAoc2Nyb2xsZXIpLiB2aWV3LXRpbWVsaW5lLWF4aXMgaXMgc2V0IG9uIHRoZSBzdWJqZWN0LiBTZWUgQ1NTIHNjcm9sbC1kcml2ZW4gYW5pbWF0aW9ucyBmb3IgbW9yZSBkZXRhaWxzLiJ9LHtuYW1lOiJ2aWV3LXRpbWVsaW5lLWluc2V0IixzdGF0dXM6ImV4cGVyaW1lbnRhbCIsc3ludGF4OiJbIFsgYXV0byB8IDxsZW5ndGgtcGVyY2VudGFnZT4gXXsxLDJ9IF0jIixyZWxldmFuY2U6NTAsYnJvd3NlcnM6WyJFMTE1IiwiQzExNSIsIk8xMDEiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1Mvdmlldy10aW1lbGluZS1pbnNldCJ9XSxkZXNjcmlwdGlvbjoiVGhlIHZpZXctdGltZWxpbmUtaW5zZXQgQ1NTIHByb3BlcnR5IGlzIHVzZWQgdG8gc3BlY2lmeSBvbmUgb3IgdHdvIHZhbHVlcyByZXByZXNlbnRpbmcgYW4gYWRqdXN0bWVudCB0byB0aGUgcG9zaXRpb24gb2YgdGhlIHNjcm9sbHBvcnQgKHNlZSBTY3JvbGwgY29udGFpbmVyIGZvciBtb3JlIGRldGFpbHMpIGluIHdoaWNoIHRoZSBzdWJqZWN0IGVsZW1lbnQgb2YgYSBuYW1lZCB2aWV3IHByb2dyZXNzIHRpbWVsaW5lIGFuaW1hdGlvbiBpcyBkZWVtZWQgdG8gYmUgdmlzaWJsZS4gUHV0IGFub3RoZXIgd2F5LCB0aGlzIGFsbG93cyB5b3UgdG8gc3BlY2lmeSBzdGFydCBhbmQvb3IgZW5kIGluc2V0IChvciBvdXRzZXQpIHZhbHVlcyB0aGF0IG9mZnNldCB0aGUgcG9zaXRpb24gb2YgdGhlIHRpbWVsaW5lLiJ9LHtuYW1lOiJ2aWV3LXRpbWVsaW5lLW5hbWUiLHN0YXR1czoiZXhwZXJpbWVudGFsIixzeW50YXg6Im5vbmUgfCA8ZGFzaGVkLWlkZW50PiMiLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkUxMTUiLCJGRjExMSIsIkMxMTUiLCJPMTAxIl0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3ZpZXctdGltZWxpbmUtbmFtZSJ9XSxkZXNjcmlwdGlvbjoiVGhlIHZpZXctdGltZWxpbmUtbmFtZSBDU1MgcHJvcGVydHkgaXMgdXNlZCB0byBkZWZpbmUgdGhlIG5hbWUgb2YgYSBuYW1lZCB2aWV3IHByb2dyZXNzIHRpbWVsaW5lLCB3aGljaCBpcyBwcm9ncmVzc2VkIHRocm91Z2ggYmFzZWQgb24gdGhlIGNoYW5nZSBpbiB2aXNpYmlsaXR5IG9mIGFuIGVsZW1lbnQgKGtub3duIGFzIHRoZSBzdWJqZWN0KSBpbnNpZGUgYSBzY3JvbGxhYmxlIGVsZW1lbnQgKHNjcm9sbGVyKS4gdmlldy10aW1lbGluZSBpcyBzZXQgb24gdGhlIHN1YmplY3QuIn0se25hbWU6InZpZXctdHJhbnNpdGlvbi1uYW1lIixzdGF0dXM6ImV4cGVyaW1lbnRhbCIsc3ludGF4OiJub25lIHwgPGN1c3RvbS1pZGVudD4iLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkUxMTEiLCJDMTExIiwiTzk3Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3ZpZXctdHJhbnNpdGlvbi1uYW1lIn1dLGRlc2NyaXB0aW9uOiJUaGUgdmlldy10cmFuc2l0aW9uLW5hbWUgQ1NTIHByb3BlcnR5IHByb3ZpZGVzIHRoZSBzZWxlY3RlZCBlbGVtZW50IHdpdGggYSBkaXN0aW5jdCBpZGVudGlmeWluZyBuYW1lIChhIGN1c3RvbS1pZGVudCkgYW5kIGNhdXNlcyBpdCB0byBwYXJ0aWNpcGF0ZSBpbiBhIHNlcGFyYXRlIHZpZXcgdHJhbnNpdGlvbiBmcm9tIHRoZSByb290IHZpZXcgdHJhbnNpdGlvbiDigJQgb3Igbm8gdmlldyB0cmFuc2l0aW9uIGlmIHRoZSBub25lIHZhbHVlIGlzIHNwZWNpZmllZC4ifSx7bmFtZToid2hpdGUtc3BhY2UiLHN5bnRheDoibm9ybWFsIHwgcHJlIHwgbm93cmFwIHwgcHJlLXdyYXAgfCBwcmUtbGluZSB8IGJyZWFrLXNwYWNlcyB8IFsgPCd3aGl0ZS1zcGFjZS1jb2xsYXBzZSc+IHx8IDwndGV4dC13cmFwJz4gfHwgPCd3aGl0ZS1zcGFjZS10cmltJz4gXSIscmVsZXZhbmNlOjg5LGJyb3dzZXJzOlsiRTEyIiwiRkYxIiwiUzEiLCJDMSIsIklFNS41IiwiTzQiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1Mvd2hpdGUtc3BhY2UifV0sZGVzY3JpcHRpb246IlNwZWNpZmllcyBob3cgd2hpdGVzcGFjZSBpcyBoYW5kbGVkIGluIGFuIGVsZW1lbnQuIn0se25hbWU6IndoaXRlLXNwYWNlLWNvbGxhcHNlIixzeW50YXg6ImNvbGxhcHNlIHwgZGlzY2FyZCB8IHByZXNlcnZlIHwgcHJlc2VydmUtYnJlYWtzIHwgcHJlc2VydmUtc3BhY2VzIHwgYnJlYWstc3BhY2VzIix2YWx1ZXM6W3tuYW1lOiJjb2xsYXBzZSJ9LHtuYW1lOiJkaXNjYXJkIn0se25hbWU6InByZXNlcnZlIn0se25hbWU6InByZXNlcnZlLWJyZWFrcyJ9LHtuYW1lOiJwcmVzZXJ2ZS1zcGFjZXMifSx7bmFtZToiYnJlYWstc3BhY2VzIn1dLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIkUxMTQiLCJTcHJldmlldyIsIkMxMTQiLCJPMTAwIl0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL3doaXRlLXNwYWNlLWNvbGxhcHNlIn1dLGRlc2NyaXB0aW9uOiJUaGUgd2hpdGUtc3BhY2UtY29sbGFwc2UgQ1NTIHByb3BlcnR5IGNvbnRyb2xzIGhvdyB3aGl0ZSBzcGFjZSBpbnNpZGUgYW4gZWxlbWVudCBpcyBjb2xsYXBzZWQuIn0se25hbWU6InNwZWFrLWFzIixhdFJ1bGU6IkBjb3VudGVyLXN0eWxlIixzeW50YXg6ImF1dG8gfCBidWxsZXRzIHwgbnVtYmVycyB8IHdvcmRzIHwgc3BlbGwtb3V0IHwgPGNvdW50ZXItc3R5bGUtbmFtZT4iLHJlbGV2YW5jZTo1MCxicm93c2VyczpbIlMxMS4xIl0sZGVzY3JpcHRpb246IlRoZSBzcGVhay1hcyBkZXNjcmlwdG9yIHNwZWNpZmllcyBob3cgYSBjb3VudGVyIHN5bWJvbCBjb25zdHJ1Y3RlZCB3aXRoIGEgZ2l2ZW4gQGNvdW50ZXItc3R5bGUgd2lsbCBiZSByZXByZXNlbnRlZCBpbiB0aGUgc3Bva2VuIGZvcm0uIEZvciBleGFtcGxlLCBhbiBhdXRob3IgY2FuIHNwZWNpZnkgYSBjb3VudGVyIHN5bWJvbCB0byBiZSBlaXRoZXIgc3Bva2VuIGFzIGl0cyBudW1lcmljYWwgdmFsdWUgb3IganVzdCByZXByZXNlbnRlZCB3aXRoIGFuIGF1ZGlvIGN1ZS4ifSx7bmFtZToiYmFzZS1wYWxldHRlIixhdFJ1bGU6IkBmb250LXBhbGV0dGUtdmFsdWVzIixzeW50YXg6ImxpZ2h0IHwgZGFyayB8IDxpbnRlZ2VyIFswLOKInl0+IixyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlRoZSBiYXNlLXBhbGV0dGUgQ1NTIGRlc2NyaXB0b3IgaXMgdXNlZCB0byBzcGVjaWZ5IHRoZSBuYW1lIG9yIGluZGV4IG9mIGEgcHJlLWRlZmluZWQgcGFsZXR0ZSB0byBiZSB1c2VkIGZvciBjcmVhdGluZyBhIG5ldyBwYWxldHRlLiBJZiB0aGUgc3BlY2lmaWVkIGJhc2UtcGFsZXR0ZSBkb2VzIG5vdCBleGlzdCwgdGhlbiB0aGUgcGFsZXR0ZSBkZWZpbmVkIGF0IGluZGV4IDAgd2lsbCBiZSB1c2VkLiJ9LHtuYW1lOiJvdmVycmlkZS1jb2xvcnMiLGF0UnVsZToiQGZvbnQtcGFsZXR0ZS12YWx1ZXMiLHN5bnRheDoiWyA8aW50ZWdlciBbMCziiJ5dPiA8YWJzb2x1dGUtY29sb3ItYmFzZT4gXSMiLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiVGhlIG92ZXJyaWRlLWNvbG9ycyBDU1MgZGVzY3JpcHRvciBpcyB1c2VkIHRvIG92ZXJyaWRlIGNvbG9ycyBpbiB0aGUgY2hvc2VuIGJhc2UtcGFsZXR0ZSBmb3IgYSBjb2xvciBmb250LiJ9LHtuYW1lOiJhc2NlbnQtb3ZlcnJpZGUiLGF0UnVsZToiQGZvbnQtZmFjZSIsc3RhdHVzOiJleHBlcmltZW50YWwiLHN5bnRheDoibm9ybWFsIHwgPHBlcmNlbnRhZ2U+IixyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkRlc2NyaWJlcyB0aGUgYXNjZW50IG1ldHJpYyBvZiBhIGZvbnQuIn0se25hbWU6ImRlc2NlbnQtb3ZlcnJpZGUiLGF0UnVsZToiQGZvbnQtZmFjZSIsc3RhdHVzOiJleHBlcmltZW50YWwiLHN5bnRheDoibm9ybWFsIHwgPHBlcmNlbnRhZ2U+IixyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IkRlc2NyaWJlcyB0aGUgZGVzY2VudCBtZXRyaWMgb2YgYSBmb250LiJ9LHtuYW1lOiJmb250LWRpc3BsYXkiLGF0UnVsZToiQGZvbnQtZmFjZSIsc3RhdHVzOiJleHBlcmltZW50YWwiLHN5bnRheDoiWyBhdXRvIHwgYmxvY2sgfCBzd2FwIHwgZmFsbGJhY2sgfCBvcHRpb25hbCBdIixyZWxldmFuY2U6NzQsZGVzY3JpcHRpb246IlRoZSBmb250LWRpc3BsYXkgZGVzY3JpcHRvciBkZXRlcm1pbmVzIGhvdyBhIGZvbnQgZmFjZSBpcyBkaXNwbGF5ZWQgYmFzZWQgb24gd2hldGhlciBhbmQgd2hlbiBpdCBpcyBkb3dubG9hZGVkIGFuZCByZWFkeSB0byB1c2UuIn0se25hbWU6ImxpbmUtZ2FwLW92ZXJyaWRlIixhdFJ1bGU6IkBmb250LWZhY2UiLHN0YXR1czoiZXhwZXJpbWVudGFsIixzeW50YXg6Im5vcm1hbCB8IDxwZXJjZW50YWdlPiIscmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJEZXNjcmliZXMgdGhlIGxpbmUtZ2FwIG1ldHJpYyBvZiBhIGZvbnQuIn0se25hbWU6InNpemUtYWRqdXN0IixhdFJ1bGU6IkBmb250LWZhY2UiLHN0YXR1czoiZXhwZXJpbWVudGFsIixzeW50YXg6IjxwZXJjZW50YWdlPiIscmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJBIG11bHRpcGxpZXIgZm9yIGdseXBoIG91dGxpbmVzIGFuZCBtZXRyaWNzIG9mIGEgZm9udC4ifSx7bmFtZToiYmxlZWQiLGF0UnVsZToiQHBhZ2UiLHN5bnRheDoiYXV0byB8IDxsZW5ndGg+IixyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlRoZSBibGVlZCBDU1MgYXQtcnVsZSBkZXNjcmlwdG9yLCB1c2VkIHdpdGggdGhlIEBwYWdlIGF0LXJ1bGUsIHNwZWNpZmllcyB0aGUgZXh0ZW50IG9mIHRoZSBwYWdlIGJsZWVkIGFyZWEgb3V0c2lkZSB0aGUgcGFnZSBib3guIFRoaXMgcHJvcGVydHkgb25seSBoYXMgZWZmZWN0IGlmIGNyb3AgbWFya3MgYXJlIGVuYWJsZWQgdXNpbmcgdGhlIG1hcmtzIHByb3BlcnR5LiJ9LHtuYW1lOiJtYXJrcyIsYXRSdWxlOiJAcGFnZSIsc3ludGF4OiJub25lIHwgWyBjcm9wIHx8IGNyb3NzIF0iLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiVGhlIG1hcmtzIENTUyBhdC1ydWxlIGRlc2NyaXB0b3IsIHVzZWQgd2l0aCB0aGUgQHBhZ2UgYXQtcnVsZSwgYWRkcyBjcm9wIGFuZC9vciBjcm9zcyBtYXJrcyB0byB0aGUgcHJlc2VudGF0aW9uIG9mIHRoZSBkb2N1bWVudC4gQ3JvcCBtYXJrcyBpbmRpY2F0ZSB3aGVyZSB0aGUgcGFnZSBzaG91bGQgYmUgY3V0LiBDcm9zcyBtYXJrcyBhcmUgdXNlZCB0byBhbGlnbiBzaGVldHMuIn0se25hbWU6InBhZ2Utb3JpZW50YXRpb24iLGF0UnVsZToiQHBhZ2UiLHN5bnRheDoidXByaWdodCB8IHJvdGF0ZS1sZWZ0IHwgcm90YXRlLXJpZ2h0ICIscmVsZXZhbmNlOjUwLGRlc2NyaXB0aW9uOiJUaGUgcGFnZS1vcmllbnRhdGlvbiBDU1MgZGVzY3JpcHRvciBmb3IgdGhlIEBwYWdlIGF0LXJ1bGUgY29udHJvbHMgdGhlIHJvdGF0aW9uIG9mIGEgcHJpbnRlZCBwYWdlLiBJdCBoYW5kbGVzIHRoZSBmbG93IG9mIGNvbnRlbnQgYWNyb3NzIHBhZ2VzIHdoZW4gdGhlIG9yaWVudGF0aW9uIG9mIGEgcGFnZSBpcyBjaGFuZ2VkLiBUaGlzIGJlaGF2aW9yIGRpZmZlcnMgZnJvbSB0aGUgc2l6ZSBkZXNjcmlwdG9yIGluIHRoYXQgYSB1c2VyIGNhbiBkZWZpbmUgdGhlIGRpcmVjdGlvbiBpbiB3aGljaCB0byByb3RhdGUgdGhlIHBhZ2UuIn0se25hbWU6InN5bnRheCIsYXRSdWxlOiJAcHJvcGVydHkiLHN0YXR1czoiZXhwZXJpbWVudGFsIixzeW50YXg6IjxzdHJpbmc+IixyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlNwZWNpZmllcyB0aGUgc3ludGF4IG9mIHRoZSBjdXN0b20gcHJvcGVydHkgcmVnaXN0cmF0aW9uIHJlcHJlc2VudGVkIGJ5IHRoZSBAcHJvcGVydHkgcnVsZSwgY29udHJvbGxpbmcgaG93IHRoZSBwcm9wZXJ0eeKAmXMgdmFsdWUgaXMgcGFyc2VkIGF0IGNvbXB1dGVkIHZhbHVlIHRpbWUuIn0se25hbWU6ImluaGVyaXRzIixhdFJ1bGU6IkBwcm9wZXJ0eSIsc3RhdHVzOiJleHBlcmltZW50YWwiLHN5bnRheDoidHJ1ZSB8IGZhbHNlIix2YWx1ZXM6W3tuYW1lOiJ0cnVlIn0se25hbWU6ImZhbHNlIn1dLHJlbGV2YW5jZTo1MCxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIHRoZSBpbmhlcml0IGZsYWcgb2YgdGhlIGN1c3RvbSBwcm9wZXJ0eSByZWdpc3RyYXRpb24gcmVwcmVzZW50ZWQgYnkgdGhlIEBwcm9wZXJ0eSBydWxlLCBjb250cm9sbGluZyB3aGV0aGVyIG9yIG5vdCB0aGUgcHJvcGVydHkgaW5oZXJpdHMgYnkgZGVmYXVsdC4ifSx7bmFtZToiaW5pdGlhbC12YWx1ZSIsYXRSdWxlOiJAcHJvcGVydHkiLHN0YXR1czoiZXhwZXJpbWVudGFsIixzeW50YXg6IjxkZWNsYXJhdGlvbi12YWx1ZT4/IixyZWxldmFuY2U6NTAsZGVzY3JpcHRpb246IlNwZWNpZmllcyB0aGUgaW5pdGlhbCB2YWx1ZSBvZiB0aGUgY3VzdG9tIHByb3BlcnR5IHJlZ2lzdHJhdGlvbiByZXByZXNlbnRlZCBieSB0aGUgQHByb3BlcnR5IHJ1bGUsIGNvbnRyb2xsaW5nIHRoZSBwcm9wZXJ0eeKAmXMgaW5pdGlhbCB2YWx1ZS4ifV0sYXREaXJlY3RpdmVzOlt7bmFtZToiQGNoYXJzZXQiLGJyb3dzZXJzOlsiRTEyIiwiRkYxLjUiLCJTNCIsIkMyIiwiSUU1LjUiLCJPOSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9AY2hhcnNldCJ9XSxkZXNjcmlwdGlvbjoiRGVmaW5lcyBjaGFyYWN0ZXIgc2V0IG9mIHRoZSBkb2N1bWVudC4ifSx7bmFtZToiQGNvdW50ZXItc3R5bGUiLGJyb3dzZXJzOlsiRTkxIiwiRkYzMyIsIlMxNyIsIkM5MSIsIk83NyJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9AY291bnRlci1zdHlsZSJ9XSxkZXNjcmlwdGlvbjoiRGVmaW5lcyBhIGN1c3RvbSBjb3VudGVyIHN0eWxlLiJ9LHtuYW1lOiJAZm9udC1mYWNlIixicm93c2VyczpbIkUxMiIsIkZGMy41IiwiUzMuMSIsIkMxIiwiSUU0IiwiTzEwIl0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL0Bmb250LWZhY2UifV0sZGVzY3JpcHRpb246IkFsbG93cyBmb3IgbGlua2luZyB0byBmb250cyB0aGF0IGFyZSBhdXRvbWF0aWNhbGx5IGFjdGl2YXRlZCB3aGVuIG5lZWRlZC4gVGhpcyBwZXJtaXRzIGF1dGhvcnMgdG8gd29yayBhcm91bmQgdGhlIGxpbWl0YXRpb24gb2YgJ3dlYi1zYWZlJyBmb250cywgYWxsb3dpbmcgZm9yIGNvbnNpc3RlbnQgcmVuZGVyaW5nIGluZGVwZW5kZW50IG9mIHRoZSBmb250cyBhdmFpbGFibGUgaW4gYSBnaXZlbiB1c2VyJ3MgZW52aXJvbm1lbnQuIn0se25hbWU6IkBmb250LWZlYXR1cmUtdmFsdWVzIixicm93c2VyczpbIkUxMTEiLCJGRjM0IiwiUzkuMSIsIkMxMTEiLCJPOTciXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvQGZvbnQtZmVhdHVyZS12YWx1ZXMifV0sZGVzY3JpcHRpb246IkRlZmluZXMgbmFtZWQgdmFsdWVzIGZvciB0aGUgaW5kaWNlcyB1c2VkIHRvIHNlbGVjdCBhbHRlcm5hdGUgZ2x5cGhzIGZvciBhIGdpdmVuIGZvbnQgZmFtaWx5LiJ9LHtuYW1lOiJAaW1wb3J0Iixicm93c2VyczpbIkUxMiIsIkZGMSIsIlMxIiwiQzEiLCJJRTUuNSIsIk8zLjUiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvQGltcG9ydCJ9XSxkZXNjcmlwdGlvbjoiSW5jbHVkZXMgY29udGVudCBvZiBhbm90aGVyIGZpbGUuIn0se25hbWU6IkBrZXlmcmFtZXMiLGJyb3dzZXJzOlsiRTEyIiwiRkYxNiIsIlM5IiwiQzQzIiwiSUUxMCIsIk8zMCJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9Aa2V5ZnJhbWVzIn1dLGRlc2NyaXB0aW9uOiJEZWZpbmVzIHNldCBvZiBhbmltYXRpb24ga2V5IGZyYW1lcy4ifSx7bmFtZToiQGxheWVyIixicm93c2VyczpbIkU5OSIsIkZGOTciLCJTMTUuNCIsIkM5OSIsIk84NSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy9AbGF5ZXIifV0sZGVzY3JpcHRpb246IkRlY2xhcmUgYSBjYXNjYWRlIGxheWVyIGFuZCB0aGUgb3JkZXIgb2YgcHJlY2VkZW5jZSBpbiBjYXNlIG9mIG11bHRpcGxlIGNhc2NhZGUgbGF5ZXJzLiJ9LHtuYW1lOiJAbWVkaWEiLGJyb3dzZXJzOlsiRTEyIiwiRkYxIiwiUzMiLCJDMSIsIklFNiIsIk85LjIiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvQG1lZGlhIn1dLGRlc2NyaXB0aW9uOiJEZWZpbmVzIGEgc3R5bGVzaGVldCBmb3IgYSBwYXJ0aWN1bGFyIG1lZGlhIHR5cGUuIn0se25hbWU6IkAtbW96LWRvY3VtZW50Iixicm93c2VyczpbIkZGMS44Il0sZGVzY3JpcHRpb246IkdlY2tvLXNwZWNpZmljIGF0LXJ1bGUgdGhhdCByZXN0cmljdHMgdGhlIHN0eWxlIHJ1bGVzIGNvbnRhaW5lZCB3aXRoaW4gaXQgYmFzZWQgb24gdGhlIFVSTCBvZiB0aGUgZG9jdW1lbnQuIn0se25hbWU6IkAtbW96LWtleWZyYW1lcyIsYnJvd3NlcnM6WyJGRjUiXSxkZXNjcmlwdGlvbjoiRGVmaW5lcyBzZXQgb2YgYW5pbWF0aW9uIGtleSBmcmFtZXMuIn0se25hbWU6IkAtbXMtdmlld3BvcnQiLGJyb3dzZXJzOlsiRSIsIklFMTAiXSxkZXNjcmlwdGlvbjoiU3BlY2lmaWVzIHRoZSBzaXplLCB6b29tIGZhY3RvciwgYW5kIG9yaWVudGF0aW9uIG9mIHRoZSB2aWV3cG9ydC4ifSx7bmFtZToiQG5hbWVzcGFjZSIsYnJvd3NlcnM6WyJFMTIiLCJGRjEiLCJTMSIsIkMxIiwiSUU5IiwiTzgiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvQG5hbWVzcGFjZSJ9XSxkZXNjcmlwdGlvbjoiRGVjbGFyZXMgYSBwcmVmaXggYW5kIGFzc29jaWF0ZXMgaXQgd2l0aCBhIG5hbWVzcGFjZSBuYW1lLiJ9LHtuYW1lOiJALW8ta2V5ZnJhbWVzIixicm93c2VyczpbIk8xMiJdLGRlc2NyaXB0aW9uOiJEZWZpbmVzIHNldCBvZiBhbmltYXRpb24ga2V5IGZyYW1lcy4ifSx7bmFtZToiQC1vLXZpZXdwb3J0Iixicm93c2VyczpbIk8xMSJdLGRlc2NyaXB0aW9uOiJTcGVjaWZpZXMgdGhlIHNpemUsIHpvb20gZmFjdG9yLCBhbmQgb3JpZW50YXRpb24gb2YgdGhlIHZpZXdwb3J0LiJ9LHtuYW1lOiJAcGFnZSIsYnJvd3NlcnM6WyJFMTIiLCJGRjE5IiwiUzEzLjEiLCJDMiIsIklFOCIsIk82Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL0BwYWdlIn1dLGRlc2NyaXB0aW9uOiJEaXJlY3RpdmUgZGVmaW5lcyB2YXJpb3VzIHBhZ2UgcGFyYW1ldGVycy4ifSx7bmFtZToiQHByb3BlcnR5Iixicm93c2VyczpbIkU4NSIsIkZGcHJldmlldyIsIlMxNi40IiwiQzg1IiwiTzcxIl0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL0Bwcm9wZXJ0eSJ9XSxkZXNjcmlwdGlvbjoiRGVzY3JpYmVzIHRoZSBhc3BlY3Qgb2YgY3VzdG9tIHByb3BlcnRpZXMgYW5kIHZhcmlhYmxlcy4ifSx7bmFtZToiQHN1cHBvcnRzIixicm93c2VyczpbIkUxMiIsIkZGMjIiLCJTOSIsIkMyOCIsIk8xMi4xIl0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTL0BzdXBwb3J0cyJ9XSxkZXNjcmlwdGlvbjoiQSBjb25kaXRpb25hbCBncm91cCBydWxlIHdob3NlIGNvbmRpdGlvbiB0ZXN0cyB3aGV0aGVyIHRoZSB1c2VyIGFnZW50IHN1cHBvcnRzIENTUyBwcm9wZXJ0eTp2YWx1ZSBwYWlycy4ifSx7bmFtZToiQC13ZWJraXQta2V5ZnJhbWVzIixicm93c2VyczpbIkMiLCJTNCJdLGRlc2NyaXB0aW9uOiJEZWZpbmVzIHNldCBvZiBhbmltYXRpb24ga2V5IGZyYW1lcy4ifV0scHNldWRvQ2xhc3Nlczpbe25hbWU6IjphY3RpdmUiLGJyb3dzZXJzOlsiRTEyIiwiRkYxIiwiUzEiLCJDMSIsIklFNCIsIk81Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLzphY3RpdmUifV0sZGVzY3JpcHRpb246IkFwcGxpZXMgd2hpbGUgYW4gZWxlbWVudCBpcyBiZWluZyBhY3RpdmF0ZWQgYnkgdGhlIHVzZXIuIEZvciBleGFtcGxlLCBiZXR3ZWVuIHRoZSB0aW1lcyB0aGUgdXNlciBwcmVzc2VzIHRoZSBtb3VzZSBidXR0b24gYW5kIHJlbGVhc2VzIGl0LiJ9LHtuYW1lOiI6YW55LWxpbmsiLGJyb3dzZXJzOlsiRTc5IiwiRkY1MCIsIlM5IiwiQzY1IiwiTzUyIl0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLzphbnktbGluayJ9XSxkZXNjcmlwdGlvbjoiUmVwcmVzZW50cyBhbiBlbGVtZW50IHRoYXQgYWN0cyBhcyB0aGUgc291cmNlIGFuY2hvciBvZiBhIGh5cGVybGluay4gQXBwbGllcyB0byBib3RoIHZpc2l0ZWQgYW5kIHVudmlzaXRlZCBsaW5rcy4ifSx7bmFtZToiOmNoZWNrZWQiLGJyb3dzZXJzOlsiRTEyIiwiRkYxIiwiUzMuMSIsIkMxIiwiSUU5IiwiTzkiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvOmNoZWNrZWQifV0sZGVzY3JpcHRpb246IlJhZGlvIGFuZCBjaGVja2JveCBlbGVtZW50cyBjYW4gYmUgdG9nZ2xlZCBieSB0aGUgdXNlci4gU29tZSBtZW51IGl0ZW1zIGFyZSAnY2hlY2tlZCcgd2hlbiB0aGUgdXNlciBzZWxlY3RzIHRoZW0uIFdoZW4gc3VjaCBlbGVtZW50cyBhcmUgdG9nZ2xlZCAnb24nIHRoZSA6Y2hlY2tlZCBwc2V1ZG8tY2xhc3MgYXBwbGllcy4ifSx7bmFtZToiOmNvcm5lci1wcmVzZW50Iixicm93c2VyczpbIkMiLCJTNSJdLGRlc2NyaXB0aW9uOiJOb24tc3RhbmRhcmQuIEluZGljYXRlcyB3aGV0aGVyIG9yIG5vdCBhIHNjcm9sbGJhciBjb3JuZXIgaXMgcHJlc2VudC4ifSx7bmFtZToiOmRlY3JlbWVudCIsYnJvd3NlcnM6WyJDIiwiUzUiXSxkZXNjcmlwdGlvbjoiTm9uLXN0YW5kYXJkLiBBcHBsaWVzIHRvIGJ1dHRvbnMgYW5kIHRyYWNrIHBpZWNlcy4gSW5kaWNhdGVzIHdoZXRoZXIgb3Igbm90IHRoZSBidXR0b24gb3IgdHJhY2sgcGllY2Ugd2lsbCBkZWNyZW1lbnQgdGhlIHZpZXcncyBwb3NpdGlvbiB3aGVuIHVzZWQuIn0se25hbWU6IjpkZWZhdWx0Iixicm93c2VyczpbIkU3OSIsIkZGNCIsIlM1IiwiQzEwIiwiTzEwIl0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLzpkZWZhdWx0In1dLGRlc2NyaXB0aW9uOiJBcHBsaWVzIHRvIHRoZSBvbmUgb3IgbW9yZSBVSSBlbGVtZW50cyB0aGF0IGFyZSB0aGUgZGVmYXVsdCBhbW9uZyBhIHNldCBvZiBzaW1pbGFyIGVsZW1lbnRzLiBUeXBpY2FsbHkgYXBwbGllcyB0byBjb250ZXh0IG1lbnUgaXRlbXMsIGJ1dHRvbnMsIGFuZCBzZWxlY3QgbGlzdHMvbWVudXMuIn0se25hbWU6IjpkaXNhYmxlZCIsYnJvd3NlcnM6WyJFMTIiLCJGRjEiLCJTMy4xIiwiQzEiLCJJRTkiLCJPOSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy86ZGlzYWJsZWQifV0sZGVzY3JpcHRpb246IlJlcHJlc2VudHMgdXNlciBpbnRlcmZhY2UgZWxlbWVudHMgdGhhdCBhcmUgaW4gYSBkaXNhYmxlZCBzdGF0ZTsgc3VjaCBlbGVtZW50cyBoYXZlIGEgY29ycmVzcG9uZGluZyBlbmFibGVkIHN0YXRlLiJ9LHtuYW1lOiI6ZG91YmxlLWJ1dHRvbiIsYnJvd3NlcnM6WyJDIiwiUzUiXSxkZXNjcmlwdGlvbjoiTm9uLXN0YW5kYXJkLiBBcHBsaWVzIHRvIGJ1dHRvbnMgYW5kIHRyYWNrIHBpZWNlcy4gQXBwbGllcyB3aGVuIGJvdGggYnV0dG9ucyBhcmUgZGlzcGxheWVkIHRvZ2V0aGVyIGF0IHRoZSBzYW1lIGVuZCBvZiB0aGUgc2Nyb2xsYmFyLiJ9LHtuYW1lOiI6ZW1wdHkiLGJyb3dzZXJzOlsiRTEyIiwiRkYxIiwiUzMuMSIsIkMxIiwiSUU5IiwiTzkuNSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy86ZW1wdHkifV0sZGVzY3JpcHRpb246IlJlcHJlc2VudHMgYW4gZWxlbWVudCB0aGF0IGhhcyBubyBjaGlsZHJlbiBhdCBhbGwuIn0se25hbWU6IjplbmFibGVkIixicm93c2VyczpbIkUxMiIsIkZGMSIsIlMzLjEiLCJDMSIsIklFOSIsIk85Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLzplbmFibGVkIn1dLGRlc2NyaXB0aW9uOiJSZXByZXNlbnRzIHVzZXIgaW50ZXJmYWNlIGVsZW1lbnRzIHRoYXQgYXJlIGluIGFuIGVuYWJsZWQgc3RhdGU7IHN1Y2ggZWxlbWVudHMgaGF2ZSBhIGNvcnJlc3BvbmRpbmcgZGlzYWJsZWQgc3RhdGUuIn0se25hbWU6IjplbmQiLGJyb3dzZXJzOlsiQyIsIlM1Il0sZGVzY3JpcHRpb246Ik5vbi1zdGFuZGFyZC4gQXBwbGllcyB0byBidXR0b25zIGFuZCB0cmFjayBwaWVjZXMuIEluZGljYXRlcyB3aGV0aGVyIHRoZSBvYmplY3QgaXMgcGxhY2VkIGFmdGVyIHRoZSB0aHVtYi4ifSx7bmFtZToiOmZpcnN0Iixicm93c2VyczpbIkUxMiIsIkZGMTE2IiwiUzYiLCJDMTgiLCJJRTgiLCJPOS4yIl0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLzpmaXJzdCJ9XSxkZXNjcmlwdGlvbjoiV2hlbiBwcmludGluZyBkb3VibGUtc2lkZWQgZG9jdW1lbnRzLCB0aGUgcGFnZSBib3hlcyBvbiBsZWZ0IGFuZCByaWdodCBwYWdlcyBtYXkgYmUgZGlmZmVyZW50LiBUaGlzIGNhbiBiZSBleHByZXNzZWQgdGhyb3VnaCBDU1MgcHNldWRvLWNsYXNzZXMgZGVmaW5lZCBpbiB0aGUgIHBhZ2UgY29udGV4dC4ifSx7bmFtZToiOmZpcnN0LWNoaWxkIixicm93c2VyczpbIkUxMiIsIkZGMyIsIlMzLjEiLCJDNCIsIklFNyIsIk85LjUiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvOmZpcnN0LWNoaWxkIn1dLGRlc2NyaXB0aW9uOiJTYW1lIGFzIDpudGgtY2hpbGQoMSkuIFJlcHJlc2VudHMgYW4gZWxlbWVudCB0aGF0IGlzIHRoZSBmaXJzdCBjaGlsZCBvZiBzb21lIG90aGVyIGVsZW1lbnQuIn0se25hbWU6IjpmaXJzdC1vZi10eXBlIixicm93c2VyczpbIkUxMiIsIkZGMy41IiwiUzMuMSIsIkMxIiwiSUU5IiwiTzkuNSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy86Zmlyc3Qtb2YtdHlwZSJ9XSxkZXNjcmlwdGlvbjoiU2FtZSBhcyA6bnRoLW9mLXR5cGUoMSkuIFJlcHJlc2VudHMgYW4gZWxlbWVudCB0aGF0IGlzIHRoZSBmaXJzdCBzaWJsaW5nIG9mIGl0cyB0eXBlIGluIHRoZSBsaXN0IG9mIGNoaWxkcmVuIG9mIGl0cyBwYXJlbnQgZWxlbWVudC4ifSx7bmFtZToiOmZvY3VzIixicm93c2VyczpbIkUxMiIsIkZGMSIsIlMxIiwiQzEiLCJJRTgiLCJPNyJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy86Zm9jdXMifV0sZGVzY3JpcHRpb246IkFwcGxpZXMgd2hpbGUgYW4gZWxlbWVudCBoYXMgdGhlIGZvY3VzIChhY2NlcHRzIGtleWJvYXJkIG9yIG1vdXNlIGV2ZW50cywgb3Igb3RoZXIgZm9ybXMgb2YgaW5wdXQpLiJ9LHtuYW1lOiI6ZnVsbHNjcmVlbiIsYnJvd3NlcnM6WyJFMTIiLCJGRjY0IiwiUzE2LjQiLCJDNzEiLCJJRTExIiwiTzU4Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLzpmdWxsc2NyZWVuIn1dLGRlc2NyaXB0aW9uOiJNYXRjaGVzIGFueSBlbGVtZW50IHRoYXQgaGFzIGl0cyBmdWxsc2NyZWVuIGZsYWcgc2V0LiJ9LHtuYW1lOiI6ZnV0dXJlIixicm93c2VyczpbIkU3OSIsIlM3IiwiQzIzIiwiTzE1Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLzpmdXR1cmUifV0sZGVzY3JpcHRpb246IlJlcHJlc2VudHMgYW55IGVsZW1lbnQgdGhhdCBpcyBkZWZpbmVkIHRvIG9jY3VyIGVudGlyZWx5IGFmdGVyIGEgOmN1cnJlbnQgZWxlbWVudC4ifSx7bmFtZToiOmhvcml6b250YWwiLGJyb3dzZXJzOlsiQyIsIlM1Il0sZGVzY3JpcHRpb246Ik5vbi1zdGFuZGFyZC4gQXBwbGllcyB0byBhbnkgc2Nyb2xsYmFyIHBpZWNlcyB0aGF0IGhhdmUgYSBob3Jpem9udGFsIG9yaWVudGF0aW9uLiJ9LHtuYW1lOiI6aG9zdCIsYnJvd3NlcnM6WyJFNzkiLCJGRjYzIiwiUzEwIiwiQzU0IiwiTzQxIl0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLzpob3N0In1dLGRlc2NyaXB0aW9uOiJXaGVuIGV2YWx1YXRlZCBpbiB0aGUgY29udGV4dCBvZiBhIHNoYWRvdyB0cmVlLCBtYXRjaGVzIHRoZSBzaGFkb3cgdHJlZSdzIGhvc3QgZWxlbWVudC4ifSx7bmFtZToiOmhvc3QoKSIsYnJvd3NlcnM6WyJDMzUiLCJPMjIiXSxkZXNjcmlwdGlvbjoiV2hlbiBldmFsdWF0ZWQgaW4gdGhlIGNvbnRleHQgb2YgYSBzaGFkb3cgdHJlZSwgaXQgbWF0Y2hlcyB0aGUgc2hhZG93IHRyZWUncyBob3N0IGVsZW1lbnQgaWYgdGhlIGhvc3QgZWxlbWVudCwgaW4gaXRzIG5vcm1hbCBjb250ZXh0LCBtYXRjaGVzIHRoZSBzZWxlY3RvciBhcmd1bWVudC4ifSx7bmFtZToiOmhvc3QtY29udGV4dCgpIixicm93c2VyczpbIkMzNSIsIk8yMiJdLGRlc2NyaXB0aW9uOiJUZXN0cyB3aGV0aGVyIHRoZXJlIGlzIGFuIGFuY2VzdG9yLCBvdXRzaWRlIHRoZSBzaGFkb3cgdHJlZSwgd2hpY2ggbWF0Y2hlcyBhIHBhcnRpY3VsYXIgc2VsZWN0b3IuIn0se25hbWU6Ijpob3ZlciIsYnJvd3NlcnM6WyJFMTIiLCJGRjEiLCJTMiIsIkMxIiwiSUU0IiwiTzQiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvOmhvdmVyIn1dLGRlc2NyaXB0aW9uOiJBcHBsaWVzIHdoaWxlIHRoZSB1c2VyIGRlc2lnbmF0ZXMgYW4gZWxlbWVudCB3aXRoIGEgcG9pbnRpbmcgZGV2aWNlLCBidXQgZG9lcyBub3QgbmVjZXNzYXJpbHkgYWN0aXZhdGUgaXQuIEZvciBleGFtcGxlLCBhIHZpc3VhbCB1c2VyIGFnZW50IGNvdWxkIGFwcGx5IHRoaXMgcHNldWRvLWNsYXNzIHdoZW4gdGhlIGN1cnNvciAobW91c2UgcG9pbnRlcikgaG92ZXJzIG92ZXIgYSBib3ggZ2VuZXJhdGVkIGJ5IHRoZSBlbGVtZW50LiJ9LHtuYW1lOiI6aW5jcmVtZW50Iixicm93c2VyczpbIkMiLCJTNSJdLGRlc2NyaXB0aW9uOiJOb24tc3RhbmRhcmQuIEFwcGxpZXMgdG8gYnV0dG9ucyBhbmQgdHJhY2sgcGllY2VzLiBJbmRpY2F0ZXMgd2hldGhlciBvciBub3QgdGhlIGJ1dHRvbiBvciB0cmFjayBwaWVjZSB3aWxsIGluY3JlbWVudCB0aGUgdmlldydzIHBvc2l0aW9uIHdoZW4gdXNlZC4ifSx7bmFtZToiOmluZGV0ZXJtaW5hdGUiLGJyb3dzZXJzOlsiRTEyIiwiRkYyIiwiUzMiLCJDMSIsIklFMTAiLCJPOSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy86aW5kZXRlcm1pbmF0ZSJ9XSxkZXNjcmlwdGlvbjoiQXBwbGllcyB0byBVSSBlbGVtZW50cyB3aG9zZSB2YWx1ZSBpcyBpbiBhbiBpbmRldGVybWluYXRlIHN0YXRlLiJ9LHtuYW1lOiI6aW4tcmFuZ2UiLGJyb3dzZXJzOlsiRTEzIiwiRkYyOSIsIlM1LjEiLCJDMTAiLCJPMTEiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvOmluLXJhbmdlIn1dLGRlc2NyaXB0aW9uOiJVc2VkIGluIGNvbmp1bmN0aW9uIHdpdGggdGhlIG1pbiBhbmQgbWF4IGF0dHJpYnV0ZXMsIHdoZXRoZXIgb24gYSByYW5nZSBpbnB1dCwgYSBudW1iZXIgZmllbGQsIG9yIGFueSBvdGhlciB0eXBlcyB0aGF0IGFjY2VwdCB0aG9zZSBhdHRyaWJ1dGVzLiJ9LHtuYW1lOiI6aW52YWxpZCIsYnJvd3NlcnM6WyJFMTIiLCJGRjQiLCJTNSIsIkMxMCIsIklFMTAiLCJPMTAiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvOmludmFsaWQifV0sZGVzY3JpcHRpb246IkFuIGVsZW1lbnQgaXMgOnZhbGlkIG9yIDppbnZhbGlkIHdoZW4gaXQgaXMsIHJlc3BlY3RpdmVseSwgdmFsaWQgb3IgaW52YWxpZCB3aXRoIHJlc3BlY3QgdG8gZGF0YSB2YWxpZGl0eSBzZW1hbnRpY3MgZGVmaW5lZCBieSBhIGRpZmZlcmVudCBzcGVjaWZpY2F0aW9uLiJ9LHtuYW1lOiI6bGFuZygpIixicm93c2VyczpbIkUiLCJDIiwiRkYxIiwiSUU4IiwiTzgiLCJTMyJdLGRlc2NyaXB0aW9uOiJSZXByZXNlbnRzIGFuIGVsZW1lbnQgdGhhdCBpcyBpbiBsYW5ndWFnZSBzcGVjaWZpZWQuIn0se25hbWU6IjpsYXN0LWNoaWxkIixicm93c2VyczpbIkUxMiIsIkZGMSIsIlMzLjEiLCJDMSIsIklFOSIsIk85LjUiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvOmxhc3QtY2hpbGQifV0sZGVzY3JpcHRpb246IlNhbWUgYXMgOm50aC1sYXN0LWNoaWxkKDEpLiBSZXByZXNlbnRzIGFuIGVsZW1lbnQgdGhhdCBpcyB0aGUgbGFzdCBjaGlsZCBvZiBzb21lIG90aGVyIGVsZW1lbnQuIn0se25hbWU6IjpsYXN0LW9mLXR5cGUiLGJyb3dzZXJzOlsiRTEyIiwiRkYzLjUiLCJTMy4xIiwiQzEiLCJJRTkiLCJPOS41Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLzpsYXN0LW9mLXR5cGUifV0sZGVzY3JpcHRpb246IlNhbWUgYXMgOm50aC1sYXN0LW9mLXR5cGUoMSkuIFJlcHJlc2VudHMgYW4gZWxlbWVudCB0aGF0IGlzIHRoZSBsYXN0IHNpYmxpbmcgb2YgaXRzIHR5cGUgaW4gdGhlIGxpc3Qgb2YgY2hpbGRyZW4gb2YgaXRzIHBhcmVudCBlbGVtZW50LiJ9LHtuYW1lOiI6bGVmdCIsYnJvd3NlcnM6WyJFMTIiLCJTNSIsIkM2IiwiSUU4IiwiTzkuMiJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy86bGVmdCJ9XSxkZXNjcmlwdGlvbjoiV2hlbiBwcmludGluZyBkb3VibGUtc2lkZWQgZG9jdW1lbnRzLCB0aGUgcGFnZSBib3hlcyBvbiBsZWZ0IGFuZCByaWdodCBwYWdlcyBtYXkgYmUgZGlmZmVyZW50LiBUaGlzIGNhbiBiZSBleHByZXNzZWQgdGhyb3VnaCBDU1MgcHNldWRvLWNsYXNzZXMgZGVmaW5lZCBpbiB0aGUgIHBhZ2UgY29udGV4dC4ifSx7bmFtZToiOmxpbmsiLGJyb3dzZXJzOlsiRTEyIiwiRkYxIiwiUzEiLCJDMSIsIklFMyIsIk8zLjUiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvOmxpbmsifV0sZGVzY3JpcHRpb246IkFwcGxpZXMgdG8gbGlua3MgdGhhdCBoYXZlIG5vdCB5ZXQgYmVlbiB2aXNpdGVkLiJ9LHtuYW1lOiI6bWF0Y2hlcygpIixicm93c2VyczpbIlM5Il0sZGVzY3JpcHRpb246IlRha2VzIGEgc2VsZWN0b3IgbGlzdCBhcyBpdHMgYXJndW1lbnQuIEl0IHJlcHJlc2VudHMgYW4gZWxlbWVudCB0aGF0IGlzIHJlcHJlc2VudGVkIGJ5IGl0cyBhcmd1bWVudC4ifSx7bmFtZToiOi1tb3otYW55KCkiLGJyb3dzZXJzOlsiRkY0Il0sZGVzY3JpcHRpb246IlJlcHJlc2VudHMgYW4gZWxlbWVudCB0aGF0IGlzIHJlcHJlc2VudGVkIGJ5IHRoZSBzZWxlY3RvciBsaXN0IHBhc3NlZCBhcyBpdHMgYXJndW1lbnQuIFN0YW5kYXJkaXplZCBhcyA6bWF0Y2hlcygpLiJ9LHtuYW1lOiI6LW1vei1hbnktbGluayIsYnJvd3NlcnM6WyJGRjEiXSxkZXNjcmlwdGlvbjoiUmVwcmVzZW50cyBhbiBlbGVtZW50IHRoYXQgYWN0cyBhcyB0aGUgc291cmNlIGFuY2hvciBvZiBhIGh5cGVybGluay4gQXBwbGllcyB0byBib3RoIHZpc2l0ZWQgYW5kIHVudmlzaXRlZCBsaW5rcy4ifSx7bmFtZToiOi1tb3otYnJva2VuIixicm93c2VyczpbIkZGMyJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy86LW1vei1icm9rZW4ifV0sZGVzY3JpcHRpb246Ik5vbi1zdGFuZGFyZC4gTWF0Y2hlcyBlbGVtZW50cyByZXByZXNlbnRpbmcgYnJva2VuIGltYWdlcy4ifSx7bmFtZToiOi1tb3otZHJhZy1vdmVyIixicm93c2VyczpbIkZGMSJdLGRlc2NyaXB0aW9uOiJOb24tc3RhbmRhcmQuIE1hdGNoZXMgZWxlbWVudHMgd2hlbiBhIGRyYWctb3ZlciBldmVudCBhcHBsaWVzIHRvIGl0LiJ9LHtuYW1lOiI6LW1vei1maXJzdC1ub2RlIixicm93c2VyczpbIkZGNzIiXSxkZXNjcmlwdGlvbjoiTm9uLXN0YW5kYXJkLiBSZXByZXNlbnRzIGFuIGVsZW1lbnQgdGhhdCBpcyB0aGUgZmlyc3QgY2hpbGQgbm9kZSBvZiBzb21lIG90aGVyIGVsZW1lbnQuIn0se25hbWU6IjotbW96LWZvY3VzcmluZyIsYnJvd3NlcnM6WyJGRjQiXSxkZXNjcmlwdGlvbjoiTm9uLXN0YW5kYXJkLiBNYXRjaGVzIGFuIGVsZW1lbnQgdGhhdCBoYXMgZm9jdXMgYW5kIGZvY3VzIHJpbmcgZHJhd2luZyBpcyBlbmFibGVkIGluIHRoZSBicm93c2VyLiJ9LHtuYW1lOiI6LW1vei1mdWxsLXNjcmVlbiIsYnJvd3NlcnM6WyJGRjkiXSxkZXNjcmlwdGlvbjoiTWF0Y2hlcyBhbnkgZWxlbWVudCB0aGF0IGhhcyBpdHMgZnVsbHNjcmVlbiBmbGFnIHNldC4gU3RhbmRhcmRpemVkIGFzIDpmdWxsc2NyZWVuLiJ9LHtuYW1lOiI6LW1vei1sYXN0LW5vZGUiLGJyb3dzZXJzOlsiRkY3MiJdLGRlc2NyaXB0aW9uOiJOb24tc3RhbmRhcmQuIFJlcHJlc2VudHMgYW4gZWxlbWVudCB0aGF0IGlzIHRoZSBsYXN0IGNoaWxkIG5vZGUgb2Ygc29tZSBvdGhlciBlbGVtZW50LiJ9LHtuYW1lOiI6LW1vei1sb2FkaW5nIixicm93c2VyczpbIkZGMyJdLGRlc2NyaXB0aW9uOiJOb24tc3RhbmRhcmQuIE1hdGNoZXMgZWxlbWVudHMsIHN1Y2ggYXMgaW1hZ2VzLCB0aGF0IGhhdmVuJ3Qgc3RhcnRlZCBsb2FkaW5nIHlldC4ifSx7bmFtZToiOi1tb3otb25seS13aGl0ZXNwYWNlIixicm93c2VyczpbIkZGMSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy86LW1vei1vbmx5LXdoaXRlc3BhY2UifV0sZGVzY3JpcHRpb246IlRoZSBzYW1lIGFzIDplbXB0eSwgZXhjZXB0IHRoYXQgaXQgYWRkaXRpb25hbGx5IG1hdGNoZXMgZWxlbWVudHMgdGhhdCBvbmx5IGNvbnRhaW4gY29kZSBwb2ludHMgYWZmZWN0ZWQgYnkgd2hpdGVzcGFjZSBwcm9jZXNzaW5nLiBTdGFuZGFyZGl6ZWQgYXMgOmJsYW5rLiJ9LHtuYW1lOiI6LW1vei1wbGFjZWhvbGRlciIsYnJvd3NlcnM6WyJGRjQiXSxkZXNjcmlwdGlvbjoiRGVwcmVjYXRlZC4gUmVwcmVzZW50cyBwbGFjZWhvbGRlciB0ZXh0IGluIGFuIGlucHV0IGZpZWxkLiBVc2UgOjotbW96LXBsYWNlaG9sZGVyIGZvciBGaXJlZm94IDE5Ky4ifSx7bmFtZToiOi1tb3otc3VibWl0LWludmFsaWQiLGJyb3dzZXJzOlsiRkY4OCJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy86LW1vei1zdWJtaXQtaW52YWxpZCJ9XSxkZXNjcmlwdGlvbjoiTm9uLXN0YW5kYXJkLiBSZXByZXNlbnRzIGFueSBzdWJtaXQgYnV0dG9uIHdoZW4gdGhlIGNvbnRlbnRzIG9mIHRoZSBhc3NvY2lhdGVkIGZvcm0gYXJlIG5vdCB2YWxpZC4ifSx7bmFtZToiOi1tb3otc3VwcHJlc3NlZCIsYnJvd3NlcnM6WyJGRjMiXSxkZXNjcmlwdGlvbjoiTm9uLXN0YW5kYXJkLiBNYXRjaGVzIGVsZW1lbnRzIHJlcHJlc2VudGluZyBpbWFnZXMgdGhhdCBoYXZlIGJlZW4gYmxvY2tlZCBmcm9tIGxvYWRpbmcuIn0se25hbWU6IjotbW96LXVpLWludmFsaWQiLGJyb3dzZXJzOlsiRkY0Il0sZGVzY3JpcHRpb246Ik5vbi1zdGFuZGFyZC4gUmVwcmVzZW50cyBhbnkgdmFsaWRhdGVkIGZvcm0gZWxlbWVudCB3aG9zZSB2YWx1ZSBpc24ndCB2YWxpZCAifSx7bmFtZToiOi1tb3otdWktdmFsaWQiLGJyb3dzZXJzOlsiRkY0Il0sZGVzY3JpcHRpb246Ik5vbi1zdGFuZGFyZC4gUmVwcmVzZW50cyBhbnkgdmFsaWRhdGVkIGZvcm0gZWxlbWVudCB3aG9zZSB2YWx1ZSBpcyB2YWxpZCAifSx7bmFtZToiOi1tb3otdXNlci1kaXNhYmxlZCIsYnJvd3NlcnM6WyJGRjMiXSxkZXNjcmlwdGlvbjoiTm9uLXN0YW5kYXJkLiBNYXRjaGVzIGVsZW1lbnRzIHJlcHJlc2VudGluZyBpbWFnZXMgdGhhdCBoYXZlIGJlZW4gZGlzYWJsZWQgZHVlIHRvIHRoZSB1c2VyJ3MgcHJlZmVyZW5jZXMuIn0se25hbWU6IjotbW96LXdpbmRvdy1pbmFjdGl2ZSIsYnJvd3NlcnM6WyJGRjQiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvOi1tb3otd2luZG93LWluYWN0aXZlIn1dLGRlc2NyaXB0aW9uOiJOb24tc3RhbmRhcmQuIE1hdGNoZXMgZWxlbWVudHMgaW4gYW4gaW5hY3RpdmUgd2luZG93LiJ9LHtuYW1lOiI6LW1zLWZ1bGxzY3JlZW4iLGJyb3dzZXJzOlsiSUUxMSJdLGRlc2NyaXB0aW9uOiJNYXRjaGVzIGFueSBlbGVtZW50IHRoYXQgaGFzIGl0cyBmdWxsc2NyZWVuIGZsYWcgc2V0LiJ9LHtuYW1lOiI6LW1zLWlucHV0LXBsYWNlaG9sZGVyIixicm93c2VyczpbIklFMTAiXSxkZXNjcmlwdGlvbjoiUmVwcmVzZW50cyBwbGFjZWhvbGRlciB0ZXh0IGluIGFuIGlucHV0IGZpZWxkLiBOb3RlOiBmb3IgRWRnZSB1c2UgdGhlIHBzZXVkby1lbGVtZW50IDo6LW1zLWlucHV0LXBsYWNlaG9sZGVyLiBTdGFuZGFyZGl6ZWQgYXMgOjpwbGFjZWhvbGRlci4ifSx7bmFtZToiOi1tcy1rZXlib2FyZC1hY3RpdmUiLGJyb3dzZXJzOlsiSUUxMCJdLGRlc2NyaXB0aW9uOiJXaW5kb3dzIFN0b3JlIGFwcHMgb25seS4gQXBwbGllcyBvbmUgb3IgbW9yZSBzdHlsZXMgdG8gYW4gZWxlbWVudCB3aGVuIGl0IGhhcyBmb2N1cyBhbmQgdGhlIHVzZXIgcHJlc3NlcyB0aGUgc3BhY2UgYmFyLiJ9LHtuYW1lOiI6LW1zLWxhbmcoKSIsYnJvd3NlcnM6WyJFIiwiSUUxMCJdLGRlc2NyaXB0aW9uOiJSZXByZXNlbnRzIGFuIGVsZW1lbnQgdGhhdCBpcyBpbiB0aGUgbGFuZ3VhZ2Ugc3BlY2lmaWVkLiBBY2NlcHRzIGEgY29tbWEgc2VwYXJhdGVkIGxpc3Qgb2YgbGFuZ3VhZ2UgdG9rZW5zLiJ9LHtuYW1lOiI6bm8tYnV0dG9uIixicm93c2VyczpbIkMiLCJTNSJdLGRlc2NyaXB0aW9uOiJOb24tc3RhbmRhcmQuIEFwcGxpZXMgdG8gdHJhY2sgcGllY2VzLiBBcHBsaWVzIHdoZW4gdGhlcmUgaXMgbm8gYnV0dG9uIGF0IHRoYXQgZW5kIG9mIHRoZSB0cmFjay4ifSx7bmFtZToiOm5vdCgpIixicm93c2VyczpbIkUiLCJDIiwiRkYxIiwiSUU5IiwiTzkuNSIsIlMyIl0sZGVzY3JpcHRpb246IlRoZSBuZWdhdGlvbiBwc2V1ZG8tY2xhc3MsIDpub3QoWCksIGlzIGEgZnVuY3Rpb25hbCBub3RhdGlvbiB0YWtpbmcgYSBzaW1wbGUgc2VsZWN0b3IgKGV4Y2x1ZGluZyB0aGUgbmVnYXRpb24gcHNldWRvLWNsYXNzIGl0c2VsZikgYXMgYW4gYXJndW1lbnQuIEl0IHJlcHJlc2VudHMgYW4gZWxlbWVudCB0aGF0IGlzIG5vdCByZXByZXNlbnRlZCBieSBpdHMgYXJndW1lbnQuIn0se25hbWU6IjpudGgtY2hpbGQoKSIsYnJvd3NlcnM6WyJFIiwiQyIsIkZGMy41IiwiSUU5IiwiTzkuNSIsIlMzLjEiXSxkZXNjcmlwdGlvbjoiUmVwcmVzZW50cyBhbiBlbGVtZW50IHRoYXQgaGFzIGFuK2ItMSBzaWJsaW5ncyBiZWZvcmUgaXQgaW4gdGhlIGRvY3VtZW50IHRyZWUsIGZvciBhbnkgcG9zaXRpdmUgaW50ZWdlciBvciB6ZXJvIHZhbHVlIG9mIG4sIGFuZCBoYXMgYSBwYXJlbnQgZWxlbWVudC4ifSx7bmFtZToiOm50aC1sYXN0LWNoaWxkKCkiLGJyb3dzZXJzOlsiRSIsIkMiLCJGRjMuNSIsIklFOSIsIk85LjUiLCJTMy4xIl0sZGVzY3JpcHRpb246IlJlcHJlc2VudHMgYW4gZWxlbWVudCB0aGF0IGhhcyBhbitiLTEgc2libGluZ3MgYWZ0ZXIgaXQgaW4gdGhlIGRvY3VtZW50IHRyZWUsIGZvciBhbnkgcG9zaXRpdmUgaW50ZWdlciBvciB6ZXJvIHZhbHVlIG9mIG4sIGFuZCBoYXMgYSBwYXJlbnQgZWxlbWVudC4ifSx7bmFtZToiOm50aC1sYXN0LW9mLXR5cGUoKSIsYnJvd3NlcnM6WyJFIiwiQyIsIkZGMy41IiwiSUU5IiwiTzkuNSIsIlMzLjEiXSxkZXNjcmlwdGlvbjoiUmVwcmVzZW50cyBhbiBlbGVtZW50IHRoYXQgaGFzIGFuK2ItMSBzaWJsaW5ncyB3aXRoIHRoZSBzYW1lIGV4cGFuZGVkIGVsZW1lbnQgbmFtZSBhZnRlciBpdCBpbiB0aGUgZG9jdW1lbnQgdHJlZSwgZm9yIGFueSB6ZXJvIG9yIHBvc2l0aXZlIGludGVnZXIgdmFsdWUgb2YgbiwgYW5kIGhhcyBhIHBhcmVudCBlbGVtZW50LiJ9LHtuYW1lOiI6bnRoLW9mLXR5cGUoKSIsYnJvd3NlcnM6WyJFIiwiQyIsIkZGMy41IiwiSUU5IiwiTzkuNSIsIlMzLjEiXSxkZXNjcmlwdGlvbjoiUmVwcmVzZW50cyBhbiBlbGVtZW50IHRoYXQgaGFzIGFuK2ItMSBzaWJsaW5ncyB3aXRoIHRoZSBzYW1lIGV4cGFuZGVkIGVsZW1lbnQgbmFtZSBiZWZvcmUgaXQgaW4gdGhlIGRvY3VtZW50IHRyZWUsIGZvciBhbnkgemVybyBvciBwb3NpdGl2ZSBpbnRlZ2VyIHZhbHVlIG9mIG4sIGFuZCBoYXMgYSBwYXJlbnQgZWxlbWVudC4ifSx7bmFtZToiOm9ubHktY2hpbGQiLGJyb3dzZXJzOlsiRTEyIiwiRkYxLjUiLCJTMy4xIiwiQzIiLCJJRTkiLCJPOS41Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLzpvbmx5LWNoaWxkIn1dLGRlc2NyaXB0aW9uOiJSZXByZXNlbnRzIGFuIGVsZW1lbnQgdGhhdCBoYXMgYSBwYXJlbnQgZWxlbWVudCBhbmQgd2hvc2UgcGFyZW50IGVsZW1lbnQgaGFzIG5vIG90aGVyIGVsZW1lbnQgY2hpbGRyZW4uIFNhbWUgYXMgOmZpcnN0LWNoaWxkOmxhc3QtY2hpbGQgb3IgOm50aC1jaGlsZCgxKTpudGgtbGFzdC1jaGlsZCgxKSwgYnV0IHdpdGggYSBsb3dlciBzcGVjaWZpY2l0eS4ifSx7bmFtZToiOm9ubHktb2YtdHlwZSIsYnJvd3NlcnM6WyJFMTIiLCJGRjMuNSIsIlMzLjEiLCJDMSIsIklFOSIsIk85LjUiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvOm9ubHktb2YtdHlwZSJ9XSxkZXNjcmlwdGlvbjoiTWF0Y2hlcyBldmVyeSBlbGVtZW50IHRoYXQgaXMgdGhlIG9ubHkgY2hpbGQgb2YgaXRzIHR5cGUsIG9mIGl0cyBwYXJlbnQuIFNhbWUgYXMgOmZpcnN0LW9mLXR5cGU6bGFzdC1vZi10eXBlIG9yIDpudGgtb2YtdHlwZSgxKTpudGgtbGFzdC1vZi10eXBlKDEpLCBidXQgd2l0aCBhIGxvd2VyIHNwZWNpZmljaXR5LiJ9LHtuYW1lOiI6b3B0aW9uYWwiLGJyb3dzZXJzOlsiRTEyIiwiRkY0IiwiUzUiLCJDMTAiLCJJRTEwIiwiTzEwIl0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLzpvcHRpb25hbCJ9XSxkZXNjcmlwdGlvbjoiQSBmb3JtIGVsZW1lbnQgaXMgOnJlcXVpcmVkIG9yIDpvcHRpb25hbCBpZiBhIHZhbHVlIGZvciBpdCBpcywgcmVzcGVjdGl2ZWx5LCByZXF1aXJlZCBvciBvcHRpb25hbCBiZWZvcmUgdGhlIGZvcm0gaXQgYmVsb25ncyB0byBpcyBzdWJtaXR0ZWQuIEVsZW1lbnRzIHRoYXQgYXJlIG5vdCBmb3JtIGVsZW1lbnRzIGFyZSBuZWl0aGVyIHJlcXVpcmVkIG5vciBvcHRpb25hbC4ifSx7bmFtZToiOm91dC1vZi1yYW5nZSIsYnJvd3NlcnM6WyJFMTMiLCJGRjI5IiwiUzUuMSIsIkMxMCIsIk8xMSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy86b3V0LW9mLXJhbmdlIn1dLGRlc2NyaXB0aW9uOiJVc2VkIGluIGNvbmp1bmN0aW9uIHdpdGggdGhlIG1pbiBhbmQgbWF4IGF0dHJpYnV0ZXMsIHdoZXRoZXIgb24gYSByYW5nZSBpbnB1dCwgYSBudW1iZXIgZmllbGQsIG9yIGFueSBvdGhlciB0eXBlcyB0aGF0IGFjY2VwdCB0aG9zZSBhdHRyaWJ1dGVzLiJ9LHtuYW1lOiI6cGFzdCIsYnJvd3NlcnM6WyJFNzkiLCJTNyIsIkMyMyIsIk8xNSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy86cGFzdCJ9XSxkZXNjcmlwdGlvbjoiUmVwcmVzZW50cyBhbnkgZWxlbWVudCB0aGF0IGlzIGRlZmluZWQgdG8gb2NjdXIgZW50aXJlbHkgcHJpb3IgdG8gYSA6Y3VycmVudCBlbGVtZW50LiJ9LHtuYW1lOiI6cmVhZC1vbmx5Iixicm93c2VyczpbIkUxMyIsIkZGNzgiLCJTNCIsIkMxIiwiTzkiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvOnJlYWQtb25seSJ9XSxkZXNjcmlwdGlvbjoiQW4gZWxlbWVudCB3aG9zZSBjb250ZW50cyBhcmUgbm90IHVzZXItYWx0ZXJhYmxlIGlzIDpyZWFkLW9ubHkuIEhvd2V2ZXIsIGVsZW1lbnRzIHdob3NlIGNvbnRlbnRzIGFyZSB1c2VyLWFsdGVyYWJsZSAoc3VjaCBhcyB0ZXh0IGlucHV0IGZpZWxkcykgYXJlIGNvbnNpZGVyZWQgdG8gYmUgaW4gYSA6cmVhZC13cml0ZSBzdGF0ZS4gSW4gdHlwaWNhbCBkb2N1bWVudHMsIG1vc3QgZWxlbWVudHMgYXJlIDpyZWFkLW9ubHkuIn0se25hbWU6IjpyZWFkLXdyaXRlIixicm93c2VyczpbIkUxMyIsIkZGNzgiLCJTNCIsIkMxIiwiTzkiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvOnJlYWQtd3JpdGUifV0sZGVzY3JpcHRpb246IkFuIGVsZW1lbnQgd2hvc2UgY29udGVudHMgYXJlIG5vdCB1c2VyLWFsdGVyYWJsZSBpcyA6cmVhZC1vbmx5LiBIb3dldmVyLCBlbGVtZW50cyB3aG9zZSBjb250ZW50cyBhcmUgdXNlci1hbHRlcmFibGUgKHN1Y2ggYXMgdGV4dCBpbnB1dCBmaWVsZHMpIGFyZSBjb25zaWRlcmVkIHRvIGJlIGluIGEgOnJlYWQtd3JpdGUgc3RhdGUuIEluIHR5cGljYWwgZG9jdW1lbnRzLCBtb3N0IGVsZW1lbnRzIGFyZSA6cmVhZC1vbmx5LiJ9LHtuYW1lOiI6cmVxdWlyZWQiLGJyb3dzZXJzOlsiRTEyIiwiRkY0IiwiUzUiLCJDMTAiLCJJRTEwIiwiTzEwIl0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLzpyZXF1aXJlZCJ9XSxkZXNjcmlwdGlvbjoiQSBmb3JtIGVsZW1lbnQgaXMgOnJlcXVpcmVkIG9yIDpvcHRpb25hbCBpZiBhIHZhbHVlIGZvciBpdCBpcywgcmVzcGVjdGl2ZWx5LCByZXF1aXJlZCBvciBvcHRpb25hbCBiZWZvcmUgdGhlIGZvcm0gaXQgYmVsb25ncyB0byBpcyBzdWJtaXR0ZWQuIEVsZW1lbnRzIHRoYXQgYXJlIG5vdCBmb3JtIGVsZW1lbnRzIGFyZSBuZWl0aGVyIHJlcXVpcmVkIG5vciBvcHRpb25hbC4ifSx7bmFtZToiOnJpZ2h0Iixicm93c2VyczpbIkUxMiIsIlM1IiwiQzYiLCJJRTgiLCJPOS4yIl0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLzpyaWdodCJ9XSxkZXNjcmlwdGlvbjoiV2hlbiBwcmludGluZyBkb3VibGUtc2lkZWQgZG9jdW1lbnRzLCB0aGUgcGFnZSBib3hlcyBvbiBsZWZ0IGFuZCByaWdodCBwYWdlcyBtYXkgYmUgZGlmZmVyZW50LiBUaGlzIGNhbiBiZSBleHByZXNzZWQgdGhyb3VnaCBDU1MgcHNldWRvLWNsYXNzZXMgZGVmaW5lZCBpbiB0aGUgIHBhZ2UgY29udGV4dC4ifSx7bmFtZToiOnJvb3QiLGJyb3dzZXJzOlsiRTEyIiwiRkYxIiwiUzEiLCJDMSIsIklFOSIsIk85LjUiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvOnJvb3QifV0sZGVzY3JpcHRpb246IlJlcHJlc2VudHMgYW4gZWxlbWVudCB0aGF0IGlzIHRoZSByb290IG9mIHRoZSBkb2N1bWVudC4gSW4gSFRNTCA0LCB0aGlzIGlzIGFsd2F5cyB0aGUgSFRNTCBlbGVtZW50LiJ9LHtuYW1lOiI6c2NvcGUiLGJyb3dzZXJzOlsiRTc5IiwiRkYzMiIsIlM3IiwiQzI3IiwiTzE1Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLzpzY29wZSJ9XSxkZXNjcmlwdGlvbjoiUmVwcmVzZW50cyBhbnkgZWxlbWVudCB0aGF0IGlzIGluIHRoZSBjb250ZXh0dWFsIHJlZmVyZW5jZSBlbGVtZW50IHNldC4ifSx7bmFtZToiOnNpbmdsZS1idXR0b24iLGJyb3dzZXJzOlsiQyIsIlM1Il0sZGVzY3JpcHRpb246Ik5vbi1zdGFuZGFyZC4gQXBwbGllcyB0byBidXR0b25zIGFuZCB0cmFjayBwaWVjZXMuIEFwcGxpZXMgd2hlbiBib3RoIGJ1dHRvbnMgYXJlIGRpc3BsYXllZCBzZXBhcmF0ZWx5IGF0IGVpdGhlciBlbmQgb2YgdGhlIHNjcm9sbGJhci4ifSx7bmFtZToiOnN0YXJ0Iixicm93c2VyczpbIkMiLCJTNSJdLGRlc2NyaXB0aW9uOiJOb24tc3RhbmRhcmQuIEFwcGxpZXMgdG8gYnV0dG9ucyBhbmQgdHJhY2sgcGllY2VzLiBJbmRpY2F0ZXMgd2hldGhlciB0aGUgb2JqZWN0IGlzIHBsYWNlZCBiZWZvcmUgdGhlIHRodW1iLiJ9LHtuYW1lOiI6dGFyZ2V0Iixicm93c2VyczpbIkUxMiIsIkZGMSIsIlMxLjMiLCJDMSIsIklFOSIsIk85LjUiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvOnRhcmdldCJ9XSxkZXNjcmlwdGlvbjoiU29tZSBVUklzIHJlZmVyIHRvIGEgbG9jYXRpb24gd2l0aGluIGEgcmVzb3VyY2UuIFRoaXMga2luZCBvZiBVUkkgZW5kcyB3aXRoIGEgJ251bWJlciBzaWduJyAoIykgZm9sbG93ZWQgYnkgYW4gYW5jaG9yIGlkZW50aWZpZXIgKGNhbGxlZCB0aGUgZnJhZ21lbnQgaWRlbnRpZmllcikuIn0se25hbWU6Ijp2YWxpZCIsYnJvd3NlcnM6WyJFMTIiLCJGRjQiLCJTNSIsIkMxMCIsIklFMTAiLCJPMTAiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvOnZhbGlkIn1dLGRlc2NyaXB0aW9uOiJBbiBlbGVtZW50IGlzIDp2YWxpZCBvciA6aW52YWxpZCB3aGVuIGl0IGlzLCByZXNwZWN0aXZlbHksIHZhbGlkIG9yIGludmFsaWQgd2l0aCByZXNwZWN0IHRvIGRhdGEgdmFsaWRpdHkgc2VtYW50aWNzIGRlZmluZWQgYnkgYSBkaWZmZXJlbnQgc3BlY2lmaWNhdGlvbi4ifSx7bmFtZToiOnZlcnRpY2FsIixicm93c2VyczpbIkMiLCJTNSJdLGRlc2NyaXB0aW9uOiJOb24tc3RhbmRhcmQuIEFwcGxpZXMgdG8gYW55IHNjcm9sbGJhciBwaWVjZXMgdGhhdCBoYXZlIGEgdmVydGljYWwgb3JpZW50YXRpb24uIn0se25hbWU6Ijp2aXNpdGVkIixicm93c2VyczpbIkUxMiIsIkZGMSIsIlMxIiwiQzEiLCJJRTQiLCJPMy41Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLzp2aXNpdGVkIn1dLGRlc2NyaXB0aW9uOiJBcHBsaWVzIG9uY2UgdGhlIGxpbmsgaGFzIGJlZW4gdmlzaXRlZCBieSB0aGUgdXNlci4ifSx7bmFtZToiOi13ZWJraXQtYW55KCkiLGJyb3dzZXJzOlsiQyIsIlM1Il0sZGVzY3JpcHRpb246IlJlcHJlc2VudHMgYW4gZWxlbWVudCB0aGF0IGlzIHJlcHJlc2VudGVkIGJ5IHRoZSBzZWxlY3RvciBsaXN0IHBhc3NlZCBhcyBpdHMgYXJndW1lbnQuIFN0YW5kYXJkaXplZCBhcyA6bWF0Y2hlcygpLiJ9LHtuYW1lOiI6LXdlYmtpdC1mdWxsLXNjcmVlbiIsYnJvd3NlcnM6WyJDIiwiUzYiXSxkZXNjcmlwdGlvbjoiTWF0Y2hlcyBhbnkgZWxlbWVudCB0aGF0IGhhcyBpdHMgZnVsbHNjcmVlbiBmbGFnIHNldC4gU3RhbmRhcmRpemVkIGFzIDpmdWxsc2NyZWVuLiJ9LHtuYW1lOiI6d2luZG93LWluYWN0aXZlIixicm93c2VyczpbIkMiLCJTMyJdLGRlc2NyaXB0aW9uOiJOb24tc3RhbmRhcmQuIEFwcGxpZXMgdG8gYWxsIHNjcm9sbGJhciBwaWVjZXMuIEluZGljYXRlcyB3aGV0aGVyIG9yIG5vdCB0aGUgd2luZG93IGNvbnRhaW5pbmcgdGhlIHNjcm9sbGJhciBpcyBjdXJyZW50bHkgYWN0aXZlLiJ9LHtuYW1lOiI6Y3VycmVudCIsc3RhdHVzOiJleHBlcmltZW50YWwiLGRlc2NyaXB0aW9uOiJUaGUgOmN1cnJlbnQgQ1NTIHBzZXVkby1jbGFzcyBzZWxlY3RvciBpcyBhIHRpbWUtZGltZW5zaW9uYWwgcHNldWRvLWNsYXNzIHRoYXQgcmVwcmVzZW50cyB0aGUgZWxlbWVudCwgb3IgYW4gYW5jZXN0b3Igb2YgdGhlIGVsZW1lbnQsIHRoYXQgaXMgY3VycmVudGx5IGJlaW5nIGRpc3BsYXllZCJ9LHtuYW1lOiI6YmxhbmsiLHN0YXR1czoiZXhwZXJpbWVudGFsIixyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvOmJsYW5rIn1dLGRlc2NyaXB0aW9uOiJUaGUgOmJsYW5rIENTUyBwc2V1ZG8tY2xhc3Mgc2VsZWN0cyBlbXB0eSB1c2VyIGlucHV0IGVsZW1lbnRzIChlZy4gPGlucHV0PiBvciA8dGV4dGFyZWE+KS4ifSx7bmFtZToiOmRlZmluZWQiLHN0YXR1czoiZXhwZXJpbWVudGFsIixicm93c2VyczpbIkU3OSIsIkZGNjMiLCJTMTAiLCJDNTQiLCJPNDEiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvOmRlZmluZWQifV0sZGVzY3JpcHRpb246IlRoZSA6ZGVmaW5lZCBDU1MgcHNldWRvLWNsYXNzIHJlcHJlc2VudHMgYW55IGVsZW1lbnQgdGhhdCBoYXMgYmVlbiBkZWZpbmVkLiBUaGlzIGluY2x1ZGVzIGFueSBzdGFuZGFyZCBlbGVtZW50IGJ1aWx0IGluIHRvIHRoZSBicm93c2VyLCBhbmQgY3VzdG9tIGVsZW1lbnRzIHRoYXQgaGF2ZSBiZWVuIHN1Y2Nlc3NmdWxseSBkZWZpbmVkIChpLmUuIHdpdGggdGhlIEN1c3RvbUVsZW1lbnRSZWdpc3RyeS5kZWZpbmUoKSBtZXRob2QpLiJ9LHtuYW1lOiI6ZGlyIixicm93c2VyczpbIkUxMjAiLCJGRjQ5IiwiUzE2LjQiLCJDMTIwIiwiTzEwNiJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy86ZGlyIn1dLGRlc2NyaXB0aW9uOiJUaGUgOmRpcigpIENTUyBwc2V1ZG8tY2xhc3MgbWF0Y2hlcyBlbGVtZW50cyBiYXNlZCBvbiB0aGUgZGlyZWN0aW9uYWxpdHkgb2YgdGhlIHRleHQgY29udGFpbmVkIGluIHRoZW0uIn0se25hbWU6Ijpmb2N1cy12aXNpYmxlIixicm93c2VyczpbIkU4NiIsIkZGODUiLCJTMTUuNCIsIkM4NiIsIk83MiJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy86Zm9jdXMtdmlzaWJsZSJ9XSxkZXNjcmlwdGlvbjoiVGhlIDpmb2N1cy12aXNpYmxlIHBzZXVkby1jbGFzcyBhcHBsaWVzIHdoaWxlIGFuIGVsZW1lbnQgbWF0Y2hlcyB0aGUgOmZvY3VzIHBzZXVkby1jbGFzcyBhbmQgdGhlIFVBIGRldGVybWluZXMgdmlhIGhldXJpc3RpY3MgdGhhdCB0aGUgZm9jdXMgc2hvdWxkIGJlIG1hZGUgZXZpZGVudCBvbiB0aGUgZWxlbWVudC4ifSx7bmFtZToiOmZvY3VzLXdpdGhpbiIsYnJvd3NlcnM6WyJFNzkiLCJGRjUyIiwiUzEwLjEiLCJDNjAiLCJPNDciXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvOmZvY3VzLXdpdGhpbiJ9XSxkZXNjcmlwdGlvbjoiVGhlIDpmb2N1cy13aXRoaW4gcHNldWRvLWNsYXNzIGFwcGxpZXMgdG8gYW55IGVsZW1lbnQgZm9yIHdoaWNoIHRoZSA6Zm9jdXMgcHNldWRvIGNsYXNzIGFwcGxpZXMgYXMgd2VsbCBhcyB0byBhbiBlbGVtZW50IHdob3NlIGRlc2NlbmRhbnQgaW4gdGhlIGZsYXQgdHJlZSAoaW5jbHVkaW5nIG5vbi1lbGVtZW50IG5vZGVzLCBzdWNoIGFzIHRleHQgbm9kZXMpIG1hdGNoZXMgdGhlIGNvbmRpdGlvbnMgZm9yIG1hdGNoaW5nIDpmb2N1cy4ifSx7bmFtZToiOmhhcyIsc3RhdHVzOiJleHBlcmltZW50YWwiLGJyb3dzZXJzOlsiRTEwNSIsIkZGMTIxIiwiUzE1LjQiLCJDMTA1IiwiTzkxIl0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLzpoYXMifV0sZGVzY3JpcHRpb246IjpUaGUgOmhhcygpIENTUyBwc2V1ZG8tY2xhc3MgcmVwcmVzZW50cyBhbiBlbGVtZW50IGlmIGFueSBvZiB0aGUgc2VsZWN0b3JzIHBhc3NlZCBhcyBwYXJhbWV0ZXJzIChyZWxhdGl2ZSB0byB0aGUgOnNjb3BlIG9mIHRoZSBnaXZlbiBlbGVtZW50KSwgbWF0Y2ggYXQgbGVhc3Qgb25lIGVsZW1lbnQuIn0se25hbWU6IjppcyIsc3RhdHVzOiJleHBlcmltZW50YWwiLGJyb3dzZXJzOlsiRTg4IiwiRkY3OCIsIlMxNCIsIkM4OCIsIk83NCJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy86aXMifV0sZGVzY3JpcHRpb246IlRoZSA6aXMoKSBDU1MgcHNldWRvLWNsYXNzIGZ1bmN0aW9uIHRha2VzIGEgc2VsZWN0b3IgbGlzdCBhcyBpdHMgYXJndW1lbnQsIGFuZCBzZWxlY3RzIGFueSBlbGVtZW50IHRoYXQgY2FuIGJlIHNlbGVjdGVkIGJ5IG9uZSBvZiB0aGUgc2VsZWN0b3JzIGluIHRoYXQgbGlzdC4gVGhpcyBpcyB1c2VmdWwgZm9yIHdyaXRpbmcgbGFyZ2Ugc2VsZWN0b3JzIGluIGEgbW9yZSBjb21wYWN0IGZvcm0uIn0se25hbWU6Ijpsb2NhbC1saW5rIixzdGF0dXM6ImV4cGVyaW1lbnRhbCIsZGVzY3JpcHRpb246IlRoZSA6bG9jYWwtbGluayBDU1MgcHNldWRvLWNsYXNzIHJlcHJlc2VudHMgYW4gbGluayB0byB0aGUgc2FtZSBkb2N1bWVudCJ9LHtuYW1lOiI6cGF1c2VkIixzdGF0dXM6ImV4cGVyaW1lbnRhbCIsYnJvd3NlcnM6WyJTMTUuNCJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy86cGF1c2VkIn1dLGRlc2NyaXB0aW9uOiJUaGUgOnBhdXNlZCBDU1MgcHNldWRvLWNsYXNzIHNlbGVjdG9yIGlzIGEgcmVzb3VyY2Ugc3RhdGUgcHNldWRvLWNsYXNzIHRoYXQgd2lsbCBtYXRjaCBhbiBhdWRpbywgdmlkZW8sIG9yIHNpbWlsYXIgcmVzb3VyY2UgdGhhdCBpcyBjYXBhYmxlIG9mIGJlaW5nIOKAnHBsYXllZOKAnSBvciDigJxwYXVzZWTigJ0sIHdoZW4gdGhhdCBlbGVtZW50IGlzIOKAnHBhdXNlZOKAnS4ifSx7bmFtZToiOnBsYWNlaG9sZGVyLXNob3duIixzdGF0dXM6ImV4cGVyaW1lbnRhbCIsYnJvd3NlcnM6WyJFNzkiLCJGRjUxIiwiUzkiLCJDNDciLCJJRTEwIiwiTzM0Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLzpwbGFjZWhvbGRlci1zaG93biJ9XSxkZXNjcmlwdGlvbjoiVGhlIDpwbGFjZWhvbGRlci1zaG93biBDU1MgcHNldWRvLWNsYXNzIHJlcHJlc2VudHMgYW55IDxpbnB1dD4gb3IgPHRleHRhcmVhPiBlbGVtZW50IHRoYXQgaXMgY3VycmVudGx5IGRpc3BsYXlpbmcgcGxhY2Vob2xkZXIgdGV4dC4ifSx7bmFtZToiOnBsYXlpbmciLHN0YXR1czoiZXhwZXJpbWVudGFsIixicm93c2VyczpbIlMxNS40Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLzpwbGF5aW5nIn1dLGRlc2NyaXB0aW9uOiJUaGUgOnBsYXlpbmcgQ1NTIHBzZXVkby1jbGFzcyBzZWxlY3RvciBpcyBhIHJlc291cmNlIHN0YXRlIHBzZXVkby1jbGFzcyB0aGF0IHdpbGwgbWF0Y2ggYW4gYXVkaW8sIHZpZGVvLCBvciBzaW1pbGFyIHJlc291cmNlIHRoYXQgaXMgY2FwYWJsZSBvZiBiZWluZyDigJxwbGF5ZWTigJ0gb3Ig4oCccGF1c2Vk4oCdLCB3aGVuIHRoYXQgZWxlbWVudCBpcyDigJxwbGF5aW5n4oCdLiAifSx7bmFtZToiOnRhcmdldC13aXRoaW4iLHN0YXR1czoiZXhwZXJpbWVudGFsIixyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvOnRhcmdldC13aXRoaW4ifV0sZGVzY3JpcHRpb246IlRoZSA6dGFyZ2V0LXdpdGhpbiBDU1MgcHNldWRvLWNsYXNzIHJlcHJlc2VudHMgYW4gZWxlbWVudCB0aGF0IGlzIGEgdGFyZ2V0IGVsZW1lbnQgb3IgY29udGFpbnMgYW4gZWxlbWVudCB0aGF0IGlzIGEgdGFyZ2V0LiBBIHRhcmdldCBlbGVtZW50IGlzIGEgdW5pcXVlIGVsZW1lbnQgd2l0aCBhbiBpZCBtYXRjaGluZyB0aGUgVVJMJ3MgZnJhZ21lbnQuIn0se25hbWU6Ijp1c2VyLWludmFsaWQiLHN0YXR1czoiZXhwZXJpbWVudGFsIixicm93c2VyczpbIkUxMTkiLCJGRjg4IiwiUzE2LjUiLCJDMTE5IiwiTzEwNSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy86dXNlci1pbnZhbGlkIn1dLGRlc2NyaXB0aW9uOiJUaGUgOnVzZXItaW52YWxpZCBDU1MgcHNldWRvLWNsYXNzIHJlcHJlc2VudHMgYW55IHZhbGlkYXRlZCBmb3JtIGVsZW1lbnQgd2hvc2UgdmFsdWUgaXNuJ3QgdmFsaWQgYmFzZWQgb24gdGhlaXIgdmFsaWRhdGlvbiBjb25zdHJhaW50cywgYWZ0ZXIgdGhlIHVzZXIgaGFzIGludGVyYWN0ZWQgd2l0aCBpdC4ifSx7bmFtZToiOnVzZXItdmFsaWQiLHN0YXR1czoiZXhwZXJpbWVudGFsIixicm93c2VyczpbIkUxMTkiLCJGRjg4IiwiUzE2LjUiLCJDMTE5IiwiTzEwNSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy86dXNlci12YWxpZCJ9XSxkZXNjcmlwdGlvbjoiVGhlIDp1c2VyLXZhbGlkIENTUyBwc2V1ZG8tY2xhc3MgcmVwcmVzZW50cyBhbnkgdmFsaWRhdGVkIGZvcm0gZWxlbWVudCB3aG9zZSB2YWx1ZSB2YWxpZGF0ZXMgY29ycmVjdGx5IGJhc2VkIG9uIGl0cyB2YWxpZGF0aW9uIGNvbnN0cmFpbnRzLiBIb3dldmVyLCB1bmxpa2UgOnZhbGlkIGl0IG9ubHkgbWF0Y2hlcyBvbmNlIHRoZSB1c2VyIGhhcyBpbnRlcmFjdGVkIHdpdGggaXQuIn0se25hbWU6Ijp3aGVyZSIsc3RhdHVzOiJleHBlcmltZW50YWwiLGJyb3dzZXJzOlsiRTg4IiwiRkY3OCIsIlMxNCIsIkM4OCIsIk83NCJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy86d2hlcmUifV0sZGVzY3JpcHRpb246IlRoZSA6d2hlcmUoKSBDU1MgcHNldWRvLWNsYXNzIGZ1bmN0aW9uIHRha2VzIGEgc2VsZWN0b3IgbGlzdCBhcyBpdHMgYXJndW1lbnQsIGFuZCBzZWxlY3RzIGFueSBlbGVtZW50IHRoYXQgY2FuIGJlIHNlbGVjdGVkIGJ5IG9uZSBvZiB0aGUgc2VsZWN0b3JzIGluIHRoYXQgbGlzdC4ifSx7bmFtZToiOnBpY3R1cmUtaW4tcGljdHVyZSIsc3RhdHVzOiJleHBlcmltZW50YWwiLGJyb3dzZXJzOlsiRTExMCIsIlMxMy4xIiwiQzExMCIsIk85NiJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy86cGljdHVyZS1pbi1waWN0dXJlIn1dLGRlc2NyaXB0aW9uOiJUaGUgOnBpY3R1cmUtaW4tcGljdHVyZSBDU1MgcHNldWRvLWNsYXNzIG1hdGNoZXMgdGhlIGVsZW1lbnQgd2hpY2ggaXMgY3VycmVudGx5IGluIHBpY3R1cmUtaW4tcGljdHVyZSBtb2RlLiJ9XSxwc2V1ZG9FbGVtZW50czpbe25hbWU6Ijo6YWZ0ZXIiLGJyb3dzZXJzOlsiRTEyIiwiRkYxLjUiLCJTNCIsIkMxIiwiSUU5IiwiTzciXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvOjphZnRlciJ9XSxkZXNjcmlwdGlvbjoiUmVwcmVzZW50cyBhIHN0eWxlYWJsZSBjaGlsZCBwc2V1ZG8tZWxlbWVudCBpbW1lZGlhdGVseSBhZnRlciB0aGUgb3JpZ2luYXRpbmcgZWxlbWVudCdzIGFjdHVhbCBjb250ZW50LiJ9LHtuYW1lOiI6OmJhY2tkcm9wIixicm93c2VyczpbIkU3OSIsIkZGNDciLCJTMTUuNCIsIkMzNyIsIklFMTEiLCJPMjQiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvOjpiYWNrZHJvcCJ9XSxkZXNjcmlwdGlvbjoiVXNlZCB0byBjcmVhdGUgYSBiYWNrZHJvcCB0aGF0IGhpZGVzIHRoZSB1bmRlcmx5aW5nIGRvY3VtZW50IGZvciBhbiBlbGVtZW50IGluIGEgdG9wIGxheWVyIChzdWNoIGFzIGFuIGVsZW1lbnQgdGhhdCBpcyBkaXNwbGF5ZWQgZnVsbHNjcmVlbikuIn0se25hbWU6Ijo6YmVmb3JlIixicm93c2VyczpbIkUxMiIsIkZGMS41IiwiUzQiLCJDMSIsIklFOSIsIk83Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLzo6YmVmb3JlIn1dLGRlc2NyaXB0aW9uOiJSZXByZXNlbnRzIGEgc3R5bGVhYmxlIGNoaWxkIHBzZXVkby1lbGVtZW50IGltbWVkaWF0ZWx5IGJlZm9yZSB0aGUgb3JpZ2luYXRpbmcgZWxlbWVudCdzIGFjdHVhbCBjb250ZW50LiJ9LHtuYW1lOiI6OmNvbnRlbnQiLGJyb3dzZXJzOlsiQzM1IiwiTzIyIl0sZGVzY3JpcHRpb246IkRlcHJlY2F0ZWQuIE1hdGNoZXMgdGhlIGRpc3RyaWJ1dGlvbiBsaXN0IGl0c2VsZiwgb24gZWxlbWVudHMgdGhhdCBoYXZlIG9uZS4gVXNlIDo6c2xvdHRlZCBmb3IgZm9yd2FyZCBjb21wYXRpYmlsaXR5LiJ9LHtuYW1lOiI6OmN1ZSIsYnJvd3NlcnM6WyJFNzkiLCJGRjU1IiwiUzciLCJDMjYiLCJPMTUiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvOjpjdWUifV19LHtuYW1lOiI6OmN1ZSgpIixicm93c2VyczpbIkMiLCJPMTYiLCJTNiJdfSx7bmFtZToiOjpjdWUtcmVnaW9uIixicm93c2VyczpbIkMiLCJPMTYiLCJTNiJdfSx7bmFtZToiOjpjdWUtcmVnaW9uKCkiLGJyb3dzZXJzOlsiQyIsIk8xNiIsIlM2Il19LHtuYW1lOiI6OmZpcnN0LWxldHRlciIsYnJvd3NlcnM6WyJFMTIiLCJGRjEiLCJTMSIsIkMxIiwiSUU5IiwiTzciXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvOjpmaXJzdC1sZXR0ZXIifV0sZGVzY3JpcHRpb246IlJlcHJlc2VudHMgdGhlIGZpcnN0IGxldHRlciBvZiBhbiBlbGVtZW50LCBpZiBpdCBpcyBub3QgcHJlY2VkZWQgYnkgYW55IG90aGVyIGNvbnRlbnQgKHN1Y2ggYXMgaW1hZ2VzIG9yIGlubGluZSB0YWJsZXMpIG9uIGl0cyBsaW5lLiJ9LHtuYW1lOiI6OmZpcnN0LWxpbmUiLGJyb3dzZXJzOlsiRTEyIiwiRkYxIiwiUzEiLCJDMSIsIklFOSIsIk83Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLzo6Zmlyc3QtbGluZSJ9XSxkZXNjcmlwdGlvbjoiRGVzY3JpYmVzIHRoZSBjb250ZW50cyBvZiB0aGUgZmlyc3QgZm9ybWF0dGVkIGxpbmUgb2YgaXRzIG9yaWdpbmF0aW5nIGVsZW1lbnQuIn0se25hbWU6Ijo6LW1vei1mb2N1cy1pbm5lciIsYnJvd3NlcnM6WyJGRjcyIl19LHtuYW1lOiI6Oi1tb3otZm9jdXMtb3V0ZXIiLGJyb3dzZXJzOlsiRkY0Il19LHtuYW1lOiI6Oi1tb3otbGlzdC1idWxsZXQiLGJyb3dzZXJzOlsiRkY3MiJdLGRlc2NyaXB0aW9uOiJVc2VkIHRvIHN0eWxlIHRoZSBidWxsZXQgb2YgYSBsaXN0IGVsZW1lbnQuIFNpbWlsYXIgdG8gdGhlIHN0YW5kYXJkaXplZCA6Om1hcmtlci4ifSx7bmFtZToiOjotbW96LWxpc3QtbnVtYmVyIixicm93c2VyczpbIkZGNzIiXSxkZXNjcmlwdGlvbjoiVXNlZCB0byBzdHlsZSB0aGUgbnVtYmVycyBvZiBhIGxpc3QgZWxlbWVudC4gU2ltaWxhciB0byB0aGUgc3RhbmRhcmRpemVkIDo6bWFya2VyLiJ9LHtuYW1lOiI6Oi1tb3otcGxhY2Vob2xkZXIiLGJyb3dzZXJzOlsiRkYxOSJdLGRlc2NyaXB0aW9uOiJSZXByZXNlbnRzIHBsYWNlaG9sZGVyIHRleHQgaW4gYW4gaW5wdXQgZmllbGQifSx7bmFtZToiOjotbW96LXByb2dyZXNzLWJhciIsYnJvd3NlcnM6WyJGRjcyIl0sZGVzY3JpcHRpb246IlJlcHJlc2VudHMgdGhlIGJhciBwb3J0aW9uIG9mIGEgcHJvZ3Jlc3MgYmFyLiJ9LHtuYW1lOiI6Oi1tb3otc2VsZWN0aW9uIixicm93c2VyczpbIkZGMSJdLGRlc2NyaXB0aW9uOiJSZXByZXNlbnRzIHRoZSBwb3J0aW9uIG9mIGEgZG9jdW1lbnQgdGhhdCBoYXMgYmVlbiBoaWdobGlnaHRlZCBieSB0aGUgdXNlci4ifSx7bmFtZToiOjotbXMtYmFja2Ryb3AiLGJyb3dzZXJzOlsiSUUxMSJdLGRlc2NyaXB0aW9uOiJVc2VkIHRvIGNyZWF0ZSBhIGJhY2tkcm9wIHRoYXQgaGlkZXMgdGhlIHVuZGVybHlpbmcgZG9jdW1lbnQgZm9yIGFuIGVsZW1lbnQgaW4gYSB0b3AgbGF5ZXIgKHN1Y2ggYXMgYW4gZWxlbWVudCB0aGF0IGlzIGRpc3BsYXllZCBmdWxsc2NyZWVuKS4ifSx7bmFtZToiOjotbXMtYnJvd3NlIixicm93c2VyczpbIkUiLCJJRTEwIl0sZGVzY3JpcHRpb246IlJlcHJlc2VudHMgdGhlIGJyb3dzZSBidXR0b24gb2YgYW4gaW5wdXQgdHlwZT1maWxlIGNvbnRyb2wuIn0se25hbWU6Ijo6LW1zLWNoZWNrIixicm93c2VyczpbIkUiLCJJRTEwIl0sZGVzY3JpcHRpb246IlJlcHJlc2VudHMgdGhlIGNoZWNrIG9mIGEgY2hlY2tib3ggb3IgcmFkaW8gYnV0dG9uIGlucHV0IGNvbnRyb2wuIn0se25hbWU6Ijo6LW1zLWNsZWFyIixicm93c2VyczpbIkUiLCJJRTEwIl0sZGVzY3JpcHRpb246IlJlcHJlc2VudHMgdGhlIGNsZWFyIGJ1dHRvbiBvZiBhIHRleHQgaW5wdXQgY29udHJvbCJ9LHtuYW1lOiI6Oi1tcy1leHBhbmQiLGJyb3dzZXJzOlsiRSIsIklFMTAiXSxkZXNjcmlwdGlvbjoiUmVwcmVzZW50cyB0aGUgZHJvcC1kb3duIGJ1dHRvbiBvZiBhIHNlbGVjdCBjb250cm9sLiJ9LHtuYW1lOiI6Oi1tcy1maWxsIixicm93c2VyczpbIkUiLCJJRTEwIl0sZGVzY3JpcHRpb246IlJlcHJlc2VudHMgdGhlIGJhciBwb3J0aW9uIG9mIGEgcHJvZ3Jlc3MgYmFyLiJ9LHtuYW1lOiI6Oi1tcy1maWxsLWxvd2VyIixicm93c2VyczpbIkUiLCJJRTEwIl0sZGVzY3JpcHRpb246IlJlcHJlc2VudHMgdGhlIHBvcnRpb24gb2YgdGhlIHNsaWRlciB0cmFjayBmcm9tIGl0cyBzbWFsbGVzdCB2YWx1ZSB1cCB0byB0aGUgdmFsdWUgY3VycmVudGx5IHNlbGVjdGVkIGJ5IHRoZSB0aHVtYi4gSW4gYSBsZWZ0LXRvLXJpZ2h0IGxheW91dCwgdGhpcyBpcyB0aGUgcG9ydGlvbiBvZiB0aGUgc2xpZGVyIHRyYWNrIHRvIHRoZSBsZWZ0IG9mIHRoZSB0aHVtYi4ifSx7bmFtZToiOjotbXMtZmlsbC11cHBlciIsYnJvd3NlcnM6WyJFIiwiSUUxMCJdLGRlc2NyaXB0aW9uOiJSZXByZXNlbnRzIHRoZSBwb3J0aW9uIG9mIHRoZSBzbGlkZXIgdHJhY2sgZnJvbSB0aGUgdmFsdWUgY3VycmVudGx5IHNlbGVjdGVkIGJ5IHRoZSB0aHVtYiB1cCB0byB0aGUgc2xpZGVyJ3MgbGFyZ2VzdCB2YWx1ZS4gSW4gYSBsZWZ0LXRvLXJpZ2h0IGxheW91dCwgdGhpcyBpcyB0aGUgcG9ydGlvbiBvZiB0aGUgc2xpZGVyIHRyYWNrIHRvIHRoZSByaWdodCBvZiB0aGUgdGh1bWIuIn0se25hbWU6Ijo6LW1zLXJldmVhbCIsYnJvd3NlcnM6WyJFIiwiSUUxMCJdLGRlc2NyaXB0aW9uOiJSZXByZXNlbnRzIHRoZSBwYXNzd29yZCByZXZlYWwgYnV0dG9uIG9mIGFuIGlucHV0IHR5cGU9cGFzc3dvcmQgY29udHJvbC4ifSx7bmFtZToiOjotbXMtdGh1bWIiLGJyb3dzZXJzOlsiRSIsIklFMTAiXSxkZXNjcmlwdGlvbjoiUmVwcmVzZW50cyB0aGUgcG9ydGlvbiBvZiByYW5nZSBpbnB1dCBjb250cm9sIChhbHNvIGtub3duIGFzIGEgc2xpZGVyIGNvbnRyb2wpIHRoYXQgdGhlIHVzZXIgZHJhZ3MuIn0se25hbWU6Ijo6LW1zLXRpY2tzLWFmdGVyIixicm93c2VyczpbIkUiLCJJRTEwIl0sZGVzY3JpcHRpb246IlJlcHJlc2VudHMgdGhlIHRpY2sgbWFya3Mgb2YgYSBzbGlkZXIgdGhhdCBiZWdpbiBqdXN0IGFmdGVyIHRoZSB0aHVtYiBhbmQgY29udGludWUgdXAgdG8gdGhlIHNsaWRlcidzIGxhcmdlc3QgdmFsdWUuIEluIGEgbGVmdC10by1yaWdodCBsYXlvdXQsIHRoZXNlIGFyZSB0aGUgdGlja3MgdG8gdGhlIHJpZ2h0IG9mIHRoZSB0aHVtYi4ifSx7bmFtZToiOjotbXMtdGlja3MtYmVmb3JlIixicm93c2VyczpbIkUiLCJJRTEwIl0sZGVzY3JpcHRpb246IlJlcHJlc2VudHMgdGhlIHRpY2sgbWFya3Mgb2YgYSBzbGlkZXIgdGhhdCByZXByZXNlbnQgaXRzIHNtYWxsZXN0IHZhbHVlcyB1cCB0byB0aGUgdmFsdWUgY3VycmVudGx5IHNlbGVjdGVkIGJ5IHRoZSB0aHVtYi4gSW4gYSBsZWZ0LXRvLXJpZ2h0IGxheW91dCwgdGhlc2UgYXJlIHRoZSB0aWNrcyB0byB0aGUgbGVmdCBvZiB0aGUgdGh1bWIuIn0se25hbWU6Ijo6LW1zLXRvb2x0aXAiLGJyb3dzZXJzOlsiRSIsIklFMTAiXSxkZXNjcmlwdGlvbjoiUmVwcmVzZW50cyB0aGUgdG9vbHRpcCBvZiBhIHNsaWRlciAoaW5wdXQgdHlwZT1yYW5nZSkuIn0se25hbWU6Ijo6LW1zLXRyYWNrIixicm93c2VyczpbIkUiLCJJRTEwIl0sZGVzY3JpcHRpb246IlJlcHJlc2VudHMgdGhlIHRyYWNrIG9mIGEgc2xpZGVyLiJ9LHtuYW1lOiI6Oi1tcy12YWx1ZSIsYnJvd3NlcnM6WyJFIiwiSUUxMCJdLGRlc2NyaXB0aW9uOiJSZXByZXNlbnRzIHRoZSBjb250ZW50IG9mIGEgdGV4dCBvciBwYXNzd29yZCBpbnB1dCBjb250cm9sLCBvciBhIHNlbGVjdCBjb250cm9sLiJ9LHtuYW1lOiI6OnNlbGVjdGlvbiIsYnJvd3NlcnM6WyJFMTIiLCJGRjYyIiwiUzEuMSIsIkMxIiwiSUU5IiwiTzkuNSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy86OnNlbGVjdGlvbiJ9XSxkZXNjcmlwdGlvbjoiUmVwcmVzZW50cyB0aGUgcG9ydGlvbiBvZiBhIGRvY3VtZW50IHRoYXQgaGFzIGJlZW4gaGlnaGxpZ2h0ZWQgYnkgdGhlIHVzZXIuIn0se25hbWU6Ijo6c2hhZG93Iixicm93c2VyczpbIkMzNSIsIk8yMiJdLGRlc2NyaXB0aW9uOiJNYXRjaGVzIHRoZSBzaGFkb3cgcm9vdCBpZiBhbiBlbGVtZW50IGhhcyBhIHNoYWRvdyB0cmVlLiJ9LHtuYW1lOiI6Oi13ZWJraXQtZmlsZS11cGxvYWQtYnV0dG9uIixicm93c2VyczpbIkMiLCJPIiwiUzYiXX0se25hbWU6Ijo6LXdlYmtpdC1pbm5lci1zcGluLWJ1dHRvbiIsYnJvd3NlcnM6WyJFNzkiLCJTNSIsIkM2IiwiTzE1Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLzo6LXdlYmtpdC1pbm5lci1zcGluLWJ1dHRvbiJ9XX0se25hbWU6Ijo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlciIsYnJvd3NlcnM6WyJDIiwiUzQiXX0se25hbWU6Ijo6LXdlYmtpdC1rZXlnZW4tc2VsZWN0Iixicm93c2VyczpbIkMiLCJPIiwiUzYiXX0se25hbWU6Ijo6LXdlYmtpdC1tZXRlci1iYXIiLGJyb3dzZXJzOlsiRTc5IiwiUzUuMSIsIkMxMiIsIk8xNSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy86Oi13ZWJraXQtbWV0ZXItYmFyIn1dfSx7bmFtZToiOjotd2Via2l0LW1ldGVyLWV2ZW4tbGVzcy1nb29kLXZhbHVlIixicm93c2VyczpbIkU3OSIsIlM1LjEiLCJDMTIiLCJPMTUiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvOjotd2Via2l0LW1ldGVyLWV2ZW4tbGVzcy1nb29kLXZhbHVlIn1dfSx7bmFtZToiOjotd2Via2l0LW1ldGVyLW9wdGltdW0tdmFsdWUiLGJyb3dzZXJzOlsiRTc5IiwiUzUuMSIsIkMxMiIsIk8xNSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy86Oi13ZWJraXQtbWV0ZXItb3B0aW11bS12YWx1ZSJ9XX0se25hbWU6Ijo6LXdlYmtpdC1tZXRlci1zdWJvcHRpbXVtLXZhbHVlIixicm93c2VyczpbIkU3OSIsIlM1LjEiLCJDMTIiLCJPMTUiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvOjotd2Via2l0LW1ldGVyLXN1Ym9wdGltdW0tdmFsdWUifV19LHtuYW1lOiI6Oi13ZWJraXQtb3V0ZXItc3Bpbi1idXR0b24iLGJyb3dzZXJzOlsiQyIsIk8iLCJTNiJdfSx7bmFtZToiOjotd2Via2l0LXByb2dyZXNzLWJhciIsYnJvd3NlcnM6WyJFNzkiLCJTNyIsIkMyNSIsIk8xNSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy86Oi13ZWJraXQtcHJvZ3Jlc3MtYmFyIn1dfSx7bmFtZToiOjotd2Via2l0LXByb2dyZXNzLWlubmVyLWVsZW1lbnQiLGJyb3dzZXJzOlsiRTc5IiwiUzciLCJDMjMiLCJPMTUiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvOjotd2Via2l0LXByb2dyZXNzLWlubmVyLWVsZW1lbnQifV19LHtuYW1lOiI6Oi13ZWJraXQtcHJvZ3Jlc3MtdmFsdWUiLGJyb3dzZXJzOlsiRTc5IiwiUzciLCJDMjUiLCJPMTUiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvOjotd2Via2l0LXByb2dyZXNzLXZhbHVlIn1dfSx7bmFtZToiOjotd2Via2l0LXJlc2l6ZXIiLGJyb3dzZXJzOlsiRTc5IiwiUzQiLCJDMiIsIk8xNSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy86Oi13ZWJraXQtc2Nyb2xsYmFyIn1dfSx7bmFtZToiOjotd2Via2l0LXNjcm9sbGJhciIsYnJvd3NlcnM6WyJFNzkiLCJTNCIsIkMyIiwiTzE1Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLzo6LXdlYmtpdC1zY3JvbGxiYXIifV19LHtuYW1lOiI6Oi13ZWJraXQtc2Nyb2xsYmFyLWJ1dHRvbiIsYnJvd3NlcnM6WyJFNzkiLCJTNCIsIkMyIiwiTzE1Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLzo6LXdlYmtpdC1zY3JvbGxiYXIifV19LHtuYW1lOiI6Oi13ZWJraXQtc2Nyb2xsYmFyLWNvcm5lciIsYnJvd3NlcnM6WyJFNzkiLCJTNCIsIkMyIiwiTzE1Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLzo6LXdlYmtpdC1zY3JvbGxiYXIifV19LHtuYW1lOiI6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iIixicm93c2VyczpbIkU3OSIsIlM0IiwiQzIiLCJPMTUiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvOjotd2Via2l0LXNjcm9sbGJhciJ9XX0se25hbWU6Ijo6LXdlYmtpdC1zY3JvbGxiYXItdHJhY2siLGJyb3dzZXJzOlsiRTc5IiwiUzQiLCJDMiIsIk8xNSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy86Oi13ZWJraXQtc2Nyb2xsYmFyIn1dfSx7bmFtZToiOjotd2Via2l0LXNjcm9sbGJhci10cmFjay1waWVjZSIsYnJvd3NlcnM6WyJFNzkiLCJTNCIsIkMyIiwiTzE1Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLzo6LXdlYmtpdC1zY3JvbGxiYXIifV19LHtuYW1lOiI6Oi13ZWJraXQtc2VhcmNoLWNhbmNlbC1idXR0b24iLGJyb3dzZXJzOlsiRTc5IiwiUzMiLCJDMSIsIk8xNSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy86Oi13ZWJraXQtc2VhcmNoLWNhbmNlbC1idXR0b24ifV19LHtuYW1lOiI6Oi13ZWJraXQtc2VhcmNoLWRlY29yYXRpb24iLGJyb3dzZXJzOlsiQyIsIlM0Il19LHtuYW1lOiI6Oi13ZWJraXQtc2VhcmNoLXJlc3VsdHMtYnV0dG9uIixicm93c2VyczpbIkU3OSIsIlMzIiwiQzEiLCJPMTUiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvOjotd2Via2l0LXNlYXJjaC1yZXN1bHRzLWJ1dHRvbiJ9XX0se25hbWU6Ijo6LXdlYmtpdC1zZWFyY2gtcmVzdWx0cy1kZWNvcmF0aW9uIixicm93c2VyczpbIkMiLCJTNCJdfSx7bmFtZToiOjotd2Via2l0LXNsaWRlci1ydW5uYWJsZS10cmFjayIsYnJvd3NlcnM6WyJFODMiLCJDODMiLCJPNjkiXX0se25hbWU6Ijo6LXdlYmtpdC1zbGlkZXItdGh1bWIiLGJyb3dzZXJzOlsiRTgzIiwiQzgzIiwiTzY5Il19LHtuYW1lOiI6Oi13ZWJraXQtdGV4dGZpZWxkLWRlY29yYXRpb24tY29udGFpbmVyIixicm93c2VyczpbIkMiLCJPIiwiUzYiXX0se25hbWU6Ijo6LXdlYmtpdC12YWxpZGF0aW9uLWJ1YmJsZSIsYnJvd3NlcnM6WyJDIiwiTyIsIlM2Il19LHtuYW1lOiI6Oi13ZWJraXQtdmFsaWRhdGlvbi1idWJibGUtYXJyb3ciLGJyb3dzZXJzOlsiQyIsIk8iLCJTNiJdfSx7bmFtZToiOjotd2Via2l0LXZhbGlkYXRpb24tYnViYmxlLWFycm93LWNsaXBwZXIiLGJyb3dzZXJzOlsiQyIsIk8iLCJTNiJdfSx7bmFtZToiOjotd2Via2l0LXZhbGlkYXRpb24tYnViYmxlLWhlYWRpbmciLGJyb3dzZXJzOlsiQyIsIk8iLCJTNiJdfSx7bmFtZToiOjotd2Via2l0LXZhbGlkYXRpb24tYnViYmxlLW1lc3NhZ2UiLGJyb3dzZXJzOlsiQyIsIk8iLCJTNiJdfSx7bmFtZToiOjotd2Via2l0LXZhbGlkYXRpb24tYnViYmxlLXRleHQtYmxvY2siLGJyb3dzZXJzOlsiQyIsIk8iLCJTNiJdfSx7bmFtZToiOjp0YXJnZXQtdGV4dCIsc3RhdHVzOiJleHBlcmltZW50YWwiLGJyb3dzZXJzOlsiRTg5IiwiQzg5IiwiTzc1Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLzo6dGFyZ2V0LXRleHQifV0sZGVzY3JpcHRpb246IlRoZSA6OnRhcmdldC10ZXh0IENTUyBwc2V1ZG8tZWxlbWVudCByZXByZXNlbnRzIHRoZSB0ZXh0IHRoYXQgaGFzIGJlZW4gc2Nyb2xsZWQgdG8gaWYgdGhlIGJyb3dzZXIgc3VwcG9ydHMgc2Nyb2xsLXRvLXRleHQgZnJhZ21lbnRzLiBJdCBhbGxvd3MgYXV0aG9ycyB0byBjaG9vc2UgaG93IHRvIGhpZ2hsaWdodCB0aGF0IHNlY3Rpb24gb2YgdGV4dC4ifSx7bmFtZToiOjotbW96LXJhbmdlLXByb2dyZXNzIixzdGF0dXM6Im5vbnN0YW5kYXJkIixicm93c2VyczpbIkZGMjIiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvOjotbW96LXJhbmdlLXByb2dyZXNzIn1dLGRlc2NyaXB0aW9uOidUaGUgOjotbW96LXJhbmdlLXByb2dyZXNzIENTUyBwc2V1ZG8tZWxlbWVudCBpcyBhIE1vemlsbGEgZXh0ZW5zaW9uIHRoYXQgcmVwcmVzZW50cyB0aGUgbG93ZXIgcG9ydGlvbiBvZiB0aGUgdHJhY2sgKGkuZS4sIGdyb292ZSkgaW4gd2hpY2ggdGhlIGluZGljYXRvciBzbGlkZXMgaW4gYW4gPGlucHV0PiBvZiB0eXBlPSJyYW5nZSIuIFRoaXMgcG9ydGlvbiBjb3JyZXNwb25kcyB0byB2YWx1ZXMgbG93ZXIgdGhhbiB0aGUgdmFsdWUgY3VycmVudGx5IHNlbGVjdGVkIGJ5IHRoZSB0aHVtYiAoaS5lLiwgdmlydHVhbCBrbm9iKS4nfSx7bmFtZToiOjotbW96LXJhbmdlLXRodW1iIixzdGF0dXM6Im5vbnN0YW5kYXJkIixicm93c2VyczpbIkZGMjEiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvOjotbW96LXJhbmdlLXRodW1iIn1dLGRlc2NyaXB0aW9uOmBUaGUgOjotbW96LXJhbmdlLXRodW1iIENTUyBwc2V1ZG8tZWxlbWVudCBpcyBhIE1vemlsbGEgZXh0ZW5zaW9uIHRoYXQgcmVwcmVzZW50cyB0aGUgdGh1bWIgKGkuZS4sIHZpcnR1YWwga25vYikgb2YgYW4gPGlucHV0PiBvZiB0eXBlPSJyYW5nZSIuIFRoZSB1c2VyIGNhbiBtb3ZlIHRoZSB0aHVtYiBhbG9uZyB0aGUgaW5wdXQncyB0cmFjayB0byBhbHRlciBpdHMgbnVtZXJpY2FsIHZhbHVlLmB9LHtuYW1lOiI6Oi1tb3otcmFuZ2UtdHJhY2siLHN0YXR1czoibm9uc3RhbmRhcmQiLGJyb3dzZXJzOlsiRkYyMSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy86Oi1tb3otcmFuZ2UtdHJhY2sifV0sZGVzY3JpcHRpb246J1RoZSA6Oi1tb3otcmFuZ2UtdHJhY2sgQ1NTIHBzZXVkby1lbGVtZW50IGlzIGEgTW96aWxsYSBleHRlbnNpb24gdGhhdCByZXByZXNlbnRzIHRoZSB0cmFjayAoaS5lLiwgZ3Jvb3ZlKSBpbiB3aGljaCB0aGUgaW5kaWNhdG9yIHNsaWRlcyBpbiBhbiA8aW5wdXQ+IG9mIHR5cGU9InJhbmdlIi4nfSx7bmFtZToiOjotd2Via2l0LXByb2dyZXNzLWlubmVyLXZhbHVlIixzdGF0dXM6Im5vbnN0YW5kYXJkIixkZXNjcmlwdGlvbjpgVGhlIDo6LXdlYmtpdC1wcm9ncmVzcy12YWx1ZSBDU1MgcHNldWRvLWVsZW1lbnQgcmVwcmVzZW50cyB0aGUgZmlsbGVkLWluIHBvcnRpb24gb2YgdGhlIGJhciBvZiBhIDxwcm9ncmVzcz4gZWxlbWVudC4gSXQgaXMgYSBjaGlsZCBvZiB0aGUgOjotd2Via2l0LXByb2dyZXNzLWJhciBwc2V1ZG8tZWxlbWVudC4KCkluIG9yZGVyIHRvIGxldCA6Oi13ZWJraXQtcHJvZ3Jlc3MtdmFsdWUgdGFrZSBlZmZlY3QsIC13ZWJraXQtYXBwZWFyYW5jZSBuZWVkcyB0byBiZSBzZXQgdG8gbm9uZSBvbiB0aGUgPHByb2dyZXNzPiBlbGVtZW50LmB9LHtuYW1lOiI6OmdyYW1tYXItZXJyb3IiLHN0YXR1czoiZXhwZXJpbWVudGFsIixicm93c2VyczpbIkUxMjEiLCJTcHJldmlldyIsIkMxMjEiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvOjpncmFtbWFyLWVycm9yIn1dLGRlc2NyaXB0aW9uOiJUaGUgOjpncmFtbWFyLWVycm9yIENTUyBwc2V1ZG8tZWxlbWVudCByZXByZXNlbnRzIGEgdGV4dCBzZWdtZW50IHdoaWNoIHRoZSB1c2VyIGFnZW50IGhhcyBmbGFnZ2VkIGFzIGdyYW1tYXRpY2FsbHkgaW5jb3JyZWN0LiJ9LHtuYW1lOiI6Om1hcmtlciIsYnJvd3NlcnM6WyJFODYiLCJGRjY4IiwiUzExLjEiLCJDODYiLCJPNzIiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvOjptYXJrZXIifV0sZGVzY3JpcHRpb246IlRoZSA6Om1hcmtlciBDU1MgcHNldWRvLWVsZW1lbnQgc2VsZWN0cyB0aGUgbWFya2VyIGJveCBvZiBhIGxpc3QgaXRlbSwgd2hpY2ggdHlwaWNhbGx5IGNvbnRhaW5zIGEgYnVsbGV0IG9yIG51bWJlci4gSXQgd29ya3Mgb24gYW55IGVsZW1lbnQgb3IgcHNldWRvLWVsZW1lbnQgc2V0IHRvIGRpc3BsYXk6IGxpc3QtaXRlbSwgc3VjaCBhcyB0aGUgPGxpPiBhbmQgPHN1bW1hcnk+IGVsZW1lbnRzLiJ9LHtuYW1lOiI6OnBhcnQiLHN0YXR1czoiZXhwZXJpbWVudGFsIixicm93c2VyczpbIkU3OSIsIkZGNzIiLCJTMTMuMSIsIkM3MyIsIk82MCJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy86OnBhcnQifV0sZGVzY3JpcHRpb246IlRoZSA6OnBhcnQgQ1NTIHBzZXVkby1lbGVtZW50IHJlcHJlc2VudHMgYW55IGVsZW1lbnQgd2l0aGluIGEgc2hhZG93IHRyZWUgdGhhdCBoYXMgYSBtYXRjaGluZyBwYXJ0IGF0dHJpYnV0ZS4ifSx7bmFtZToiOjpwbGFjZWhvbGRlciIsYnJvd3NlcnM6WyJFNzkiLCJGRjUxIiwiUzEwLjEiLCJDNTciLCJPNDQiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvOjpwbGFjZWhvbGRlciJ9XSxkZXNjcmlwdGlvbjoiVGhlIDo6cGxhY2Vob2xkZXIgQ1NTIHBzZXVkby1lbGVtZW50IHJlcHJlc2VudHMgdGhlIHBsYWNlaG9sZGVyIHRleHQgb2YgYSBmb3JtIGVsZW1lbnQuIn0se25hbWU6Ijo6c2xvdHRlZCIsYnJvd3NlcnM6WyJFNzkiLCJGRjYzIiwiUzEwIiwiQzUwIiwiTzM3Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLzo6c2xvdHRlZCJ9XSxkZXNjcmlwdGlvbjoiVGhlIDpzbG90dGVkKCkgQ1NTIHBzZXVkby1lbGVtZW50IHJlcHJlc2VudHMgYW55IGVsZW1lbnQgdGhhdCBoYXMgYmVlbiBwbGFjZWQgaW50byBhIHNsb3QgaW5zaWRlIGFuIEhUTUwgdGVtcGxhdGUuIn0se25hbWU6Ijo6c3BlbGxpbmctZXJyb3IiLHN0YXR1czoiZXhwZXJpbWVudGFsIixicm93c2VyczpbIkUxMjEiLCJTcHJldmlldyIsIkMxMjEiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvOjpzcGVsbGluZy1lcnJvciJ9XSxkZXNjcmlwdGlvbjoiVGhlIDo6c3BlbGxpbmctZXJyb3IgQ1NTIHBzZXVkby1lbGVtZW50IHJlcHJlc2VudHMgYSB0ZXh0IHNlZ21lbnQgd2hpY2ggdGhlIHVzZXIgYWdlbnQgaGFzIGZsYWdnZWQgYXMgaW5jb3JyZWN0bHkgc3BlbGxlZC4ifSx7bmFtZToiOjp2aWV3LXRyYW5zaXRpb24iLHN0YXR1czoiZXhwZXJpbWVudGFsIixicm93c2VyczpbIkUxMDkiLCJDMTA5IiwiTzk1Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLzo6dmlldy10cmFuc2l0aW9uIn1dLGRlc2NyaXB0aW9uOiJUaGUgOjp2aWV3LXRyYW5zaXRpb24gQ1NTIHBzZXVkby1lbGVtZW50IHJlcHJlc2VudHMgdGhlIHJvb3Qgb2YgdGhlIHZpZXcgdHJhbnNpdGlvbnMgb3ZlcmxheSwgd2hpY2ggY29udGFpbnMgYWxsIHZpZXcgdHJhbnNpdGlvbnMgYW5kIHNpdHMgb3ZlciB0aGUgdG9wIG9mIGFsbCBvdGhlciBwYWdlIGNvbnRlbnQuIn0se25hbWU6Ijo6dmlldy10cmFuc2l0aW9uLWdyb3VwIixzdGF0dXM6ImV4cGVyaW1lbnRhbCIsYnJvd3NlcnM6WyJFMTA5IiwiQzEwOSIsIk85NSJdLHJlZmVyZW5jZXM6W3tuYW1lOiJNRE4gUmVmZXJlbmNlIix1cmw6Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0NTUy86OnZpZXctdHJhbnNpdGlvbi1ncm91cCJ9XSxkZXNjcmlwdGlvbjoiVGhlIDo6dmlldy10cmFuc2l0aW9uLWdyb3VwIENTUyBwc2V1ZG8tZWxlbWVudCByZXByZXNlbnRzIGEgc2luZ2xlIHZpZXcgdHJhbnNpdGlvbiBncm91cC4ifSx7bmFtZToiOjp2aWV3LXRyYW5zaXRpb24taW1hZ2UtcGFpciIsc3RhdHVzOiJleHBlcmltZW50YWwiLGJyb3dzZXJzOlsiRTEwOSIsIkMxMDkiLCJPOTUiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvOjp2aWV3LXRyYW5zaXRpb24taW1hZ2UtcGFpciJ9XSxkZXNjcmlwdGlvbjpgVGhlIDo6dmlldy10cmFuc2l0aW9uLWltYWdlLXBhaXIgQ1NTIHBzZXVkby1lbGVtZW50IHJlcHJlc2VudHMgYSBjb250YWluZXIgZm9yIGEgdmlldyB0cmFuc2l0aW9uJ3MgIm9sZCIgYW5kICJuZXciIHZpZXcgc3RhdGVzIOKAlCBiZWZvcmUgYW5kIGFmdGVyIHRoZSB0cmFuc2l0aW9uLmB9LHtuYW1lOiI6OnZpZXctdHJhbnNpdGlvbi1uZXciLHN0YXR1czoiZXhwZXJpbWVudGFsIixicm93c2VyczpbIkUxMDkiLCJDMTA5IiwiTzk1Il0scmVmZXJlbmNlczpbe25hbWU6Ik1ETiBSZWZlcmVuY2UiLHVybDoiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQ1NTLzo6dmlldy10cmFuc2l0aW9uLW5ldyJ9XSxkZXNjcmlwdGlvbjonVGhlIDo6dmlldy10cmFuc2l0aW9uLW5ldyBDU1MgcHNldWRvLWVsZW1lbnQgcmVwcmVzZW50cyB0aGUgIm5ldyIgdmlldyBzdGF0ZSBvZiBhIHZpZXcgdHJhbnNpdGlvbiDigJQgYSBsaXZlIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBuZXcgdmlldywgYWZ0ZXIgdGhlIHRyYW5zaXRpb24uJ30se25hbWU6Ijo6dmlldy10cmFuc2l0aW9uLW9sZCIsc3RhdHVzOiJleHBlcmltZW50YWwiLGJyb3dzZXJzOlsiRTEwOSIsIkMxMDkiLCJPOTUiXSxyZWZlcmVuY2VzOlt7bmFtZToiTUROIFJlZmVyZW5jZSIsdXJsOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9DU1MvOjp2aWV3LXRyYW5zaXRpb24tb2xkIn1dLGRlc2NyaXB0aW9uOidUaGUgOjp2aWV3LXRyYW5zaXRpb24tb2xkIENTUyBwc2V1ZG8tZWxlbWVudCByZXByZXNlbnRzIHRoZSAib2xkIiB2aWV3IHN0YXRlIG9mIGEgdmlldyB0cmFuc2l0aW9uIOKAlCBhIHN0YXRpYyBzY3JlZW5zaG90IG9mIHRoZSBvbGQgdmlldywgYmVmb3JlIHRoZSB0cmFuc2l0aW9uLid9XX0sZWg9Y2xhc3N7Y29uc3RydWN0b3IoZSl7dGhpcy5fcHJvcGVydGllcz1bXSx0aGlzLl9hdERpcmVjdGl2ZXM9W10sdGhpcy5fcHNldWRvQ2xhc3Nlcz1bXSx0aGlzLl9wc2V1ZG9FbGVtZW50cz1bXSx0aGlzLmFkZERhdGEoZSl9cHJvdmlkZVByb3BlcnRpZXMoKXtyZXR1cm4gdGhpcy5fcHJvcGVydGllc31wcm92aWRlQXREaXJlY3RpdmVzKCl7cmV0dXJuIHRoaXMuX2F0RGlyZWN0aXZlc31wcm92aWRlUHNldWRvQ2xhc3Nlcygpe3JldHVybiB0aGlzLl9wc2V1ZG9DbGFzc2VzfXByb3ZpZGVQc2V1ZG9FbGVtZW50cygpe3JldHVybiB0aGlzLl9wc2V1ZG9FbGVtZW50c31hZGREYXRhKGUpe2lmKEFycmF5LmlzQXJyYXkoZS5wcm9wZXJ0aWVzKSlmb3IoY29uc3QgdCBvZiBlLnByb3BlcnRpZXMpZWYodCkmJnRoaXMuX3Byb3BlcnRpZXMucHVzaCh0KTtpZihBcnJheS5pc0FycmF5KGUuYXREaXJlY3RpdmVzKSlmb3IoY29uc3QgdCBvZiBlLmF0RGlyZWN0aXZlcyl0Zih0KSYmdGhpcy5fYXREaXJlY3RpdmVzLnB1c2godCk7aWYoQXJyYXkuaXNBcnJheShlLnBzZXVkb0NsYXNzZXMpKWZvcihjb25zdCB0IG9mIGUucHNldWRvQ2xhc3NlcyluZih0KSYmdGhpcy5fcHNldWRvQ2xhc3Nlcy5wdXNoKHQpO2lmKEFycmF5LmlzQXJyYXkoZS5wc2V1ZG9FbGVtZW50cykpZm9yKGNvbnN0IHQgb2YgZS5wc2V1ZG9FbGVtZW50cylyZih0KSYmdGhpcy5fcHNldWRvRWxlbWVudHMucHVzaCh0KX19O2Z1bmN0aW9uIGVmKGUpe3JldHVybiB0eXBlb2YgZS5uYW1lPT0ic3RyaW5nIn1mdW5jdGlvbiB0ZihlKXtyZXR1cm4gdHlwZW9mIGUubmFtZT09InN0cmluZyJ9ZnVuY3Rpb24gbmYoZSl7cmV0dXJuIHR5cGVvZiBlLm5hbWU9PSJzdHJpbmcifWZ1bmN0aW9uIHJmKGUpe3JldHVybiB0eXBlb2YgZS5uYW1lPT0ic3RyaW5nIn12YXIgX3M9Y2xhc3N7Y29uc3RydWN0b3IoZSl7dGhpcy5kYXRhUHJvdmlkZXJzPVtdLHRoaXMuX3Byb3BlcnR5U2V0PXt9LHRoaXMuX2F0RGlyZWN0aXZlU2V0PXt9LHRoaXMuX3BzZXVkb0NsYXNzU2V0PXt9LHRoaXMuX3BzZXVkb0VsZW1lbnRTZXQ9e30sdGhpcy5fcHJvcGVydGllcz1bXSx0aGlzLl9hdERpcmVjdGl2ZXM9W10sdGhpcy5fcHNldWRvQ2xhc3Nlcz1bXSx0aGlzLl9wc2V1ZG9FbGVtZW50cz1bXSx0aGlzLnNldERhdGFQcm92aWRlcnMoZT8udXNlRGVmYXVsdERhdGFQcm92aWRlciE9PSExLGU/LmN1c3RvbURhdGFQcm92aWRlcnN8fFtdKX1zZXREYXRhUHJvdmlkZXJzKGUsdCl7dGhpcy5kYXRhUHJvdmlkZXJzPVtdLGUmJnRoaXMuZGF0YVByb3ZpZGVycy5wdXNoKG5ldyBlaChabSkpLHRoaXMuZGF0YVByb3ZpZGVycy5wdXNoKC4uLnQpLHRoaXMuY29sbGVjdERhdGEoKX1jb2xsZWN0RGF0YSgpe3RoaXMuX3Byb3BlcnR5U2V0PXt9LHRoaXMuX2F0RGlyZWN0aXZlU2V0PXt9LHRoaXMuX3BzZXVkb0NsYXNzU2V0PXt9LHRoaXMuX3BzZXVkb0VsZW1lbnRTZXQ9e30sdGhpcy5kYXRhUHJvdmlkZXJzLmZvckVhY2goZT0+e2UucHJvdmlkZVByb3BlcnRpZXMoKS5mb3JFYWNoKHQ9Pnt0aGlzLl9wcm9wZXJ0eVNldFt0Lm5hbWVdfHwodGhpcy5fcHJvcGVydHlTZXRbdC5uYW1lXT10KX0pLGUucHJvdmlkZUF0RGlyZWN0aXZlcygpLmZvckVhY2godD0+e3RoaXMuX2F0RGlyZWN0aXZlU2V0W3QubmFtZV18fCh0aGlzLl9hdERpcmVjdGl2ZVNldFt0Lm5hbWVdPXQpfSksZS5wcm92aWRlUHNldWRvQ2xhc3NlcygpLmZvckVhY2godD0+e3RoaXMuX3BzZXVkb0NsYXNzU2V0W3QubmFtZV18fCh0aGlzLl9wc2V1ZG9DbGFzc1NldFt0Lm5hbWVdPXQpfSksZS5wcm92aWRlUHNldWRvRWxlbWVudHMoKS5mb3JFYWNoKHQ9Pnt0aGlzLl9wc2V1ZG9FbGVtZW50U2V0W3QubmFtZV18fCh0aGlzLl9wc2V1ZG9FbGVtZW50U2V0W3QubmFtZV09dCl9KX0pLHRoaXMuX3Byb3BlcnRpZXM9Z3IodGhpcy5fcHJvcGVydHlTZXQpLHRoaXMuX2F0RGlyZWN0aXZlcz1ncih0aGlzLl9hdERpcmVjdGl2ZVNldCksdGhpcy5fcHNldWRvQ2xhc3Nlcz1ncih0aGlzLl9wc2V1ZG9DbGFzc1NldCksdGhpcy5fcHNldWRvRWxlbWVudHM9Z3IodGhpcy5fcHNldWRvRWxlbWVudFNldCl9Z2V0UHJvcGVydHkoZSl7cmV0dXJuIHRoaXMuX3Byb3BlcnR5U2V0W2VdfWdldEF0RGlyZWN0aXZlKGUpe3JldHVybiB0aGlzLl9hdERpcmVjdGl2ZVNldFtlXX1nZXRQc2V1ZG9DbGFzcyhlKXtyZXR1cm4gdGhpcy5fcHNldWRvQ2xhc3NTZXRbZV19Z2V0UHNldWRvRWxlbWVudChlKXtyZXR1cm4gdGhpcy5fcHNldWRvRWxlbWVudFNldFtlXX1nZXRQcm9wZXJ0aWVzKCl7cmV0dXJuIHRoaXMuX3Byb3BlcnRpZXN9Z2V0QXREaXJlY3RpdmVzKCl7cmV0dXJuIHRoaXMuX2F0RGlyZWN0aXZlc31nZXRQc2V1ZG9DbGFzc2VzKCl7cmV0dXJuIHRoaXMuX3BzZXVkb0NsYXNzZXN9Z2V0UHNldWRvRWxlbWVudHMoKXtyZXR1cm4gdGhpcy5fcHNldWRvRWxlbWVudHN9aXNLbm93blByb3BlcnR5KGUpe3JldHVybiBlLnRvTG93ZXJDYXNlKClpbiB0aGlzLl9wcm9wZXJ0eVNldH1pc1N0YW5kYXJkUHJvcGVydHkoZSl7cmV0dXJuIHRoaXMuaXNLbm93blByb3BlcnR5KGUpJiYoIXRoaXMuX3Byb3BlcnR5U2V0W2UudG9Mb3dlckNhc2UoKV0uc3RhdHVzfHx0aGlzLl9wcm9wZXJ0eVNldFtlLnRvTG93ZXJDYXNlKCldLnN0YXR1cz09PSJzdGFuZGFyZCIpfX07ZnVuY3Rpb24gc2YoZSx0LG4pe2Z1bmN0aW9uIHIocyl7Y29uc3QgYT1pKHMpO2xldCBsO2ZvcihsZXQgbz1hLmxlbmd0aC0xO28+PTA7by0tKWw9dXIuY3JlYXRlKEouY3JlYXRlKGUucG9zaXRpb25BdChhW29dWzBdKSxlLnBvc2l0aW9uQXQoYVtvXVsxXSkpLGwpO3JldHVybiBsfHwobD11ci5jcmVhdGUoSi5jcmVhdGUocyxzKSkpLGx9cmV0dXJuIHQubWFwKHIpO2Z1bmN0aW9uIGkocyl7Y29uc3QgYT1lLm9mZnNldEF0KHMpO2xldCBsPW4uZmluZENoaWxkQXRPZmZzZXQoYSwhMCk7aWYoIWwpcmV0dXJuW107Y29uc3Qgbz1bXTtmb3IoO2w7KXtpZihsLnBhcmVudCYmbC5vZmZzZXQ9PT1sLnBhcmVudC5vZmZzZXQmJmwuZW5kPT09bC5wYXJlbnQuZW5kKXtsPWwucGFyZW50O2NvbnRpbnVlfWwudHlwZT09PWIuRGVjbGFyYXRpb25zJiZhPmwub2Zmc2V0JiZhPGwuZW5kJiZvLnB1c2goW2wub2Zmc2V0KzEsbC5lbmQtMV0pLG8ucHVzaChbbC5vZmZzZXQsbC5lbmRdKSxsPWwucGFyZW50fXJldHVybiBvfX12YXIgYWY9Y2xhc3MgZXh0ZW5kcyBjc3tjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCEwKX1pc1Jhd1N0cmluZ0RvY3VtZW50TGlua05vZGUoZSl7cmV0dXJuIHN1cGVyLmlzUmF3U3RyaW5nRG9jdW1lbnRMaW5rTm9kZShlKXx8ZS50eXBlPT09Yi5Vc2V8fGUudHlwZT09PWIuRm9yd2FyZH1hc3luYyBtYXBSZWZlcmVuY2UoZSx0KXtpZih0aGlzLmZpbGVTeXN0ZW1Qcm92aWRlciYmZSYmdCl7Y29uc3Qgbj1vZihlKTtmb3IoY29uc3QgciBvZiBuKWlmKGF3YWl0IHRoaXMuZmlsZUV4aXN0cyhyKSlyZXR1cm4gcn1yZXR1cm4gZX1hc3luYyByZXNvbHZlUmVmZXJlbmNlKGUsdCxuLHI9ITEpe2lmKCF1ZShlLCJzYXNzOiIpKXJldHVybiBzdXBlci5yZXNvbHZlUmVmZXJlbmNlKGUsdCxuLHIpfX07ZnVuY3Rpb24gb2YoZSl7aWYoZS5lbmRzV2l0aCgiLmNzcyIpKXJldHVybltlXTtpZihlLmVuZHNXaXRoKCIvIikpcmV0dXJuW2UrImluZGV4LnNjc3MiLGUrIl9pbmRleC5zY3NzIl07Y29uc3QgdD1lcy5wYXJzZShlLnJlcGxhY2UoL1wuc2NzcyQvLCIiKSksbj1mdC5iYXNlbmFtZSh0KSxyPWZ0LmRpcm5hbWUodCk7cmV0dXJuIG4uc3RhcnRzV2l0aCgiXyIpP1tmdC5qb2luUGF0aChyLG4rIi5zY3NzIikudG9TdHJpbmcoITApXTpbZnQuam9pblBhdGgocixuKyIuc2NzcyIpLnRvU3RyaW5nKCEwKSxmdC5qb2luUGF0aChyLCJfIituKyIuc2NzcyIpLnRvU3RyaW5nKCEwKSxlKyIvaW5kZXguc2NzcyIsZSsiL19pbmRleC5zY3NzIixmdC5qb2luUGF0aChyLG4rIi5jc3MiKS50b1N0cmluZyghMCldfWZ1bmN0aW9uIGxmKGUpe3JldHVybiBuZXcgZWgoZSl9ZnVuY3Rpb24ga3MoZSx0LG4scixpLHMsYSl7cmV0dXJue2NvbmZpZ3VyZTpsPT57cy5jb25maWd1cmUobCksdC5jb25maWd1cmUobD8uY29tcGxldGlvbiksbi5jb25maWd1cmUobD8uaG92ZXIpLHIuY29uZmlndXJlKGw/LmltcG9ydEFsaWFzZXMpfSxzZXREYXRhUHJvdmlkZXJzOmEuc2V0RGF0YVByb3ZpZGVycy5iaW5kKGEpLGRvVmFsaWRhdGlvbjpzLmRvVmFsaWRhdGlvbi5iaW5kKHMpLHBhcnNlU3R5bGVzaGVldDplLnBhcnNlU3R5bGVzaGVldC5iaW5kKGUpLGRvQ29tcGxldGU6dC5kb0NvbXBsZXRlLmJpbmQodCksZG9Db21wbGV0ZTI6dC5kb0NvbXBsZXRlMi5iaW5kKHQpLHNldENvbXBsZXRpb25QYXJ0aWNpcGFudHM6dC5zZXRDb21wbGV0aW9uUGFydGljaXBhbnRzLmJpbmQodCksZG9Ib3ZlcjpuLmRvSG92ZXIuYmluZChuKSxmb3JtYXQ6Sm0sZmluZERlZmluaXRpb246ci5maW5kRGVmaW5pdGlvbi5iaW5kKHIpLGZpbmRSZWZlcmVuY2VzOnIuZmluZFJlZmVyZW5jZXMuYmluZChyKSxmaW5kRG9jdW1lbnRIaWdobGlnaHRzOnIuZmluZERvY3VtZW50SGlnaGxpZ2h0cy5iaW5kKHIpLGZpbmREb2N1bWVudExpbmtzOnIuZmluZERvY3VtZW50TGlua3MuYmluZChyKSxmaW5kRG9jdW1lbnRMaW5rczI6ci5maW5kRG9jdW1lbnRMaW5rczIuYmluZChyKSxmaW5kRG9jdW1lbnRTeW1ib2xzOnIuZmluZFN5bWJvbEluZm9ybWF0aW9ucy5iaW5kKHIpLGZpbmREb2N1bWVudFN5bWJvbHMyOnIuZmluZERvY3VtZW50U3ltYm9scy5iaW5kKHIpLGRvQ29kZUFjdGlvbnM6aS5kb0NvZGVBY3Rpb25zLmJpbmQoaSksZG9Db2RlQWN0aW9uczI6aS5kb0NvZGVBY3Rpb25zMi5iaW5kKGkpLGZpbmREb2N1bWVudENvbG9yczpyLmZpbmREb2N1bWVudENvbG9ycy5iaW5kKHIpLGdldENvbG9yUHJlc2VudGF0aW9uczpyLmdldENvbG9yUHJlc2VudGF0aW9ucy5iaW5kKHIpLHByZXBhcmVSZW5hbWU6ci5wcmVwYXJlUmVuYW1lLmJpbmQociksZG9SZW5hbWU6ci5kb1JlbmFtZS5iaW5kKHIpLGdldEZvbGRpbmdSYW5nZXM6cW0sZ2V0U2VsZWN0aW9uUmFuZ2VzOnNmfX12YXIgRXM9e307ZnVuY3Rpb24gY2YoZT1Fcyl7Y29uc3QgdD1uZXcgX3MoZSk7cmV0dXJuIGtzKG5ldyBicixuZXcgcnMobnVsbCxlLHQpLG5ldyBscyhlJiZlLmNsaWVudENhcGFiaWxpdGllcyx0KSxuZXcgY3MoZSYmZS5maWxlU3lzdGVtUHJvdmlkZXIsITEpLG5ldyBocyh0KSxuZXcgcHModCksdCl9ZnVuY3Rpb24gaGYoZT1Fcyl7Y29uc3QgdD1uZXcgX3MoZSk7cmV0dXJuIGtzKG5ldyBPbSxuZXcgZ3QoZSx0KSxuZXcgbHMoZSYmZS5jbGllbnRDYXBhYmlsaXRpZXMsdCksbmV3IGFmKGUmJmUuZmlsZVN5c3RlbVByb3ZpZGVyKSxuZXcgaHModCksbmV3IHBzKHQpLHQpfWZ1bmN0aW9uIGRmKGU9RXMpe2NvbnN0IHQ9bmV3IF9zKGUpO3JldHVybiBrcyhuZXcgQm0sbmV3IENzKGUsdCksbmV3IGxzKGUmJmUuY2xpZW50Q2FwYWJpbGl0aWVzLHQpLG5ldyBjcyhlJiZlLmZpbGVTeXN0ZW1Qcm92aWRlciwhMCksbmV3IGhzKHQpLG5ldyBwcyh0KSx0KX12YXIgdWY9Y2xhc3N7Y29uc3RydWN0b3IoZSx0KXt0aGlzLl9jdHg9ZSx0aGlzLl9sYW5ndWFnZVNldHRpbmdzPXQub3B0aW9ucyx0aGlzLl9sYW5ndWFnZUlkPXQubGFuZ3VhZ2VJZDtjb25zdCBuPXQub3B0aW9ucy5kYXRhLHI9bj8udXNlRGVmYXVsdERhdGFQcm92aWRlcixpPVtdO2lmKG4/LmRhdGFQcm92aWRlcnMpZm9yKGNvbnN0IGEgaW4gbi5kYXRhUHJvdmlkZXJzKWkucHVzaChsZihuLmRhdGFQcm92aWRlcnNbYV0pKTtjb25zdCBzPXtjdXN0b21EYXRhUHJvdmlkZXJzOmksdXNlRGVmYXVsdERhdGFQcm92aWRlcjpyfTtzd2l0Y2godGhpcy5fbGFuZ3VhZ2VJZCl7Y2FzZSJjc3MiOnRoaXMuX2xhbmd1YWdlU2VydmljZT1jZihzKTticmVhaztjYXNlImxlc3MiOnRoaXMuX2xhbmd1YWdlU2VydmljZT1kZihzKTticmVhaztjYXNlInNjc3MiOnRoaXMuX2xhbmd1YWdlU2VydmljZT1oZihzKTticmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiSW52YWxpZCBsYW5ndWFnZSBpZDogIit0aGlzLl9sYW5ndWFnZUlkKX10aGlzLl9sYW5ndWFnZVNlcnZpY2UuY29uZmlndXJlKHRoaXMuX2xhbmd1YWdlU2V0dGluZ3MpfWFzeW5jIGRvVmFsaWRhdGlvbihlKXtjb25zdCB0PXRoaXMuX2dldFRleHREb2N1bWVudChlKTtpZih0KXtjb25zdCBuPXRoaXMuX2xhbmd1YWdlU2VydmljZS5wYXJzZVN0eWxlc2hlZXQodCkscj10aGlzLl9sYW5ndWFnZVNlcnZpY2UuZG9WYWxpZGF0aW9uKHQsbik7cmV0dXJuIFByb21pc2UucmVzb2x2ZShyKX1yZXR1cm4gUHJvbWlzZS5yZXNvbHZlKFtdKX1hc3luYyBkb0NvbXBsZXRlKGUsdCl7Y29uc3Qgbj10aGlzLl9nZXRUZXh0RG9jdW1lbnQoZSk7aWYoIW4pcmV0dXJuIG51bGw7Y29uc3Qgcj10aGlzLl9sYW5ndWFnZVNlcnZpY2UucGFyc2VTdHlsZXNoZWV0KG4pLGk9dGhpcy5fbGFuZ3VhZ2VTZXJ2aWNlLmRvQ29tcGxldGUobix0LHIpO3JldHVybiBQcm9taXNlLnJlc29sdmUoaSl9YXN5bmMgZG9Ib3ZlcihlLHQpe2NvbnN0IG49dGhpcy5fZ2V0VGV4dERvY3VtZW50KGUpO2lmKCFuKXJldHVybiBudWxsO2NvbnN0IHI9dGhpcy5fbGFuZ3VhZ2VTZXJ2aWNlLnBhcnNlU3R5bGVzaGVldChuKSxpPXRoaXMuX2xhbmd1YWdlU2VydmljZS5kb0hvdmVyKG4sdCxyKTtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGkpfWFzeW5jIGZpbmREZWZpbml0aW9uKGUsdCl7Y29uc3Qgbj10aGlzLl9nZXRUZXh0RG9jdW1lbnQoZSk7aWYoIW4pcmV0dXJuIG51bGw7Y29uc3Qgcj10aGlzLl9sYW5ndWFnZVNlcnZpY2UucGFyc2VTdHlsZXNoZWV0KG4pLGk9dGhpcy5fbGFuZ3VhZ2VTZXJ2aWNlLmZpbmREZWZpbml0aW9uKG4sdCxyKTtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGkpfWFzeW5jIGZpbmRSZWZlcmVuY2VzKGUsdCl7Y29uc3Qgbj10aGlzLl9nZXRUZXh0RG9jdW1lbnQoZSk7aWYoIW4pcmV0dXJuW107Y29uc3Qgcj10aGlzLl9sYW5ndWFnZVNlcnZpY2UucGFyc2VTdHlsZXNoZWV0KG4pLGk9dGhpcy5fbGFuZ3VhZ2VTZXJ2aWNlLmZpbmRSZWZlcmVuY2VzKG4sdCxyKTtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGkpfWFzeW5jIGZpbmREb2N1bWVudEhpZ2hsaWdodHMoZSx0KXtjb25zdCBuPXRoaXMuX2dldFRleHREb2N1bWVudChlKTtpZighbilyZXR1cm5bXTtjb25zdCByPXRoaXMuX2xhbmd1YWdlU2VydmljZS5wYXJzZVN0eWxlc2hlZXQobiksaT10aGlzLl9sYW5ndWFnZVNlcnZpY2UuZmluZERvY3VtZW50SGlnaGxpZ2h0cyhuLHQscik7cmV0dXJuIFByb21pc2UucmVzb2x2ZShpKX1hc3luYyBmaW5kRG9jdW1lbnRTeW1ib2xzKGUpe2NvbnN0IHQ9dGhpcy5fZ2V0VGV4dERvY3VtZW50KGUpO2lmKCF0KXJldHVybltdO2NvbnN0IG49dGhpcy5fbGFuZ3VhZ2VTZXJ2aWNlLnBhcnNlU3R5bGVzaGVldCh0KSxyPXRoaXMuX2xhbmd1YWdlU2VydmljZS5maW5kRG9jdW1lbnRTeW1ib2xzKHQsbik7cmV0dXJuIFByb21pc2UucmVzb2x2ZShyKX1hc3luYyBkb0NvZGVBY3Rpb25zKGUsdCxuKXtjb25zdCByPXRoaXMuX2dldFRleHREb2N1bWVudChlKTtpZighcilyZXR1cm5bXTtjb25zdCBpPXRoaXMuX2xhbmd1YWdlU2VydmljZS5wYXJzZVN0eWxlc2hlZXQocikscz10aGlzLl9sYW5ndWFnZVNlcnZpY2UuZG9Db2RlQWN0aW9ucyhyLHQsbixpKTtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHMpfWFzeW5jIGZpbmREb2N1bWVudENvbG9ycyhlKXtjb25zdCB0PXRoaXMuX2dldFRleHREb2N1bWVudChlKTtpZighdClyZXR1cm5bXTtjb25zdCBuPXRoaXMuX2xhbmd1YWdlU2VydmljZS5wYXJzZVN0eWxlc2hlZXQodCkscj10aGlzLl9sYW5ndWFnZVNlcnZpY2UuZmluZERvY3VtZW50Q29sb3JzKHQsbik7cmV0dXJuIFByb21pc2UucmVzb2x2ZShyKX1hc3luYyBnZXRDb2xvclByZXNlbnRhdGlvbnMoZSx0LG4pe2NvbnN0IHI9dGhpcy5fZ2V0VGV4dERvY3VtZW50KGUpO2lmKCFyKXJldHVybltdO2NvbnN0IGk9dGhpcy5fbGFuZ3VhZ2VTZXJ2aWNlLnBhcnNlU3R5bGVzaGVldChyKSxzPXRoaXMuX2xhbmd1YWdlU2VydmljZS5nZXRDb2xvclByZXNlbnRhdGlvbnMocixpLHQsbik7cmV0dXJuIFByb21pc2UucmVzb2x2ZShzKX1hc3luYyBnZXRGb2xkaW5nUmFuZ2VzKGUsdCl7Y29uc3Qgbj10aGlzLl9nZXRUZXh0RG9jdW1lbnQoZSk7aWYoIW4pcmV0dXJuW107Y29uc3Qgcj10aGlzLl9sYW5ndWFnZVNlcnZpY2UuZ2V0Rm9sZGluZ1JhbmdlcyhuLHQpO3JldHVybiBQcm9taXNlLnJlc29sdmUocil9YXN5bmMgZ2V0U2VsZWN0aW9uUmFuZ2VzKGUsdCl7Y29uc3Qgbj10aGlzLl9nZXRUZXh0RG9jdW1lbnQoZSk7aWYoIW4pcmV0dXJuW107Y29uc3Qgcj10aGlzLl9sYW5ndWFnZVNlcnZpY2UucGFyc2VTdHlsZXNoZWV0KG4pLGk9dGhpcy5fbGFuZ3VhZ2VTZXJ2aWNlLmdldFNlbGVjdGlvblJhbmdlcyhuLHQscik7cmV0dXJuIFByb21pc2UucmVzb2x2ZShpKX1hc3luYyBkb1JlbmFtZShlLHQsbil7Y29uc3Qgcj10aGlzLl9nZXRUZXh0RG9jdW1lbnQoZSk7aWYoIXIpcmV0dXJuIG51bGw7Y29uc3QgaT10aGlzLl9sYW5ndWFnZVNlcnZpY2UucGFyc2VTdHlsZXNoZWV0KHIpLHM9dGhpcy5fbGFuZ3VhZ2VTZXJ2aWNlLmRvUmVuYW1lKHIsdCxuLGkpO3JldHVybiBQcm9taXNlLnJlc29sdmUocyl9YXN5bmMgZm9ybWF0KGUsdCxuKXtjb25zdCByPXRoaXMuX2dldFRleHREb2N1bWVudChlKTtpZighcilyZXR1cm5bXTtjb25zdCBpPXsuLi50aGlzLl9sYW5ndWFnZVNldHRpbmdzLmZvcm1hdCwuLi5ufSxzPXRoaXMuX2xhbmd1YWdlU2VydmljZS5mb3JtYXQocix0LGkpO3JldHVybiBQcm9taXNlLnJlc29sdmUocyl9X2dldFRleHREb2N1bWVudChlKXtjb25zdCB0PXRoaXMuX2N0eC5nZXRNaXJyb3JNb2RlbHMoKTtmb3IoY29uc3QgbiBvZiB0KWlmKG4udXJpLnRvU3RyaW5nKCk9PT1lKXJldHVybiBZaS5jcmVhdGUoZSx0aGlzLl9sYW5ndWFnZUlkLG4udmVyc2lvbixuLmdldFZhbHVlKCkpO3JldHVybiBudWxsfX07c2VsZi5vbm1lc3NhZ2U9KCk9PntWbygoZSx0KT0+bmV3IHVmKGUsdCkpfX0pKCk7Cg==", W = (Z) => Uint8Array.from(atob(Z), (l) => l.charCodeAt(0)), G = typeof self < "u" && self.Blob && new Blob([W(c)], { type: "text/javascript;charset=utf-8" });
2
- function d(Z) {
3
- let l;
4
- try {
5
- if (l = G && (self.URL || self.webkitURL).createObjectURL(G), !l) throw "";
6
- const b = new Worker(l, {
7
- name: Z?.name
8
- });
9
- return b.addEventListener("error", () => {
10
- (self.URL || self.webkitURL).revokeObjectURL(l);
11
- }), b;
12
- } catch {
13
- return new Worker(
14
- "data:text/javascript;base64," + c,
15
- {
16
- name: Z?.name
17
- }
18
- );
19
- } finally {
20
- l && (self.URL || self.webkitURL).revokeObjectURL(l);
21
- }
22
- }
23
- export {
24
- d as default
25
- };