@curless/hotel-storefront 0.29.0 → 0.29.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/card.generated.d.ts +1 -1
- package/dist/card.generated.js +2 -2
- package/dist/card.generated.js.map +1 -1
- package/dist/server.d.ts +2 -2
- package/dist/server.js +2 -2
- package/package.json +1 -1
package/dist/card.generated.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
// The hotel booking MCP App card - a single self-contained HTML (Vite +
|
|
3
3
|
// vite-plugin-singlefile, with the MCP Apps SDK bundled), base64-embedded so it
|
|
4
4
|
// is bundler-safe. Regenerate after changing the widget UI.
|
|
5
|
-
export const HOTEL_CARD_HTML = Buffer.from('PCFkb2N0eXBlIGh0bWw+CjxodG1sIGxhbmc9ImVuIj4KICA8aGVhZD4KICAgIDxtZXRhIGNoYXJzZXQ9InV0Zi04IiAvPgogICAgPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xIiAvPgogICAgPHRpdGxlPkhvdGVsczwvdGl0bGU+CiAgICA8c2NyaXB0IHR5cGU9Im1vZHVsZSIgY3Jvc3NvcmlnaW4+Y29uc3Qgemc9KGZ1bmN0aW9uKCl7Y29uc3QgdD10eXBlb2YgZG9jdW1lbnQ8InUiJiZkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJsaW5rIikucmVsTGlzdDtyZXR1cm4gdCYmdC5zdXBwb3J0cyYmdC5zdXBwb3J0cygibW9kdWxlcHJlbG9hZCIpPyJtb2R1bGVwcmVsb2FkIjoicHJlbG9hZCJ9KSgpLHhnPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIG5ldyBVUkwoZSx0KS5ocmVmfSxmdT17fSxJZz1mdW5jdGlvbih0LG4sbyl7bGV0IHM9UHJvbWlzZS5yZXNvbHZlKCk7aWYobiYmbi5sZW5ndGg+MCl7bGV0IGk9ZnVuY3Rpb24ocCl7cmV0dXJuIFByb21pc2UuYWxsKHAubWFwKGg9PlByb21pc2UucmVzb2x2ZShoKS50aGVuKGI9Pih7c3RhdHVzOiJmdWxmaWxsZWQiLHZhbHVlOmJ9KSxiPT4oe3N0YXR1czoicmVqZWN0ZWQiLHJlYXNvbjpifSkpKSl9O2NvbnN0IGE9ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImxpbmsiKSxkPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIm1ldGFbcHJvcGVydHk9Y3NwLW5vbmNlXSIpLHU9ZD8ubm9uY2V8fGQ/LmdldEF0dHJpYnV0ZSgibm9uY2UiKTtzPWkobi5tYXAocD0+e2lmKHA9eGcocCxvKSxwIGluIGZ1KXJldHVybjtmdVtwXT0hMDtjb25zdCBoPXAuZW5kc1dpdGgoIi5jc3MiKSxiPWg/J1tyZWw9InN0eWxlc2hlZXQiXSc6IiI7aWYoISFvKWZvcihsZXQgVD1hLmxlbmd0aC0xO1Q+PTA7VC0tKXtjb25zdCBfPWFbVF07aWYoXy5ocmVmPT09cCYmKCFofHxfLnJlbD09PSJzdHlsZXNoZWV0IikpcmV0dXJufWVsc2UgaWYoZG9jdW1lbnQucXVlcnlTZWxlY3RvcihgbGlua1tocmVmPSIke3B9Il0ke2J9YCkpcmV0dXJuO2NvbnN0IGs9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibGluayIpO2lmKGsucmVsPWg/InN0eWxlc2hlZXQiOnpnLGh8fChrLmFzPSJzY3JpcHQiKSxrLmNyb3NzT3JpZ2luPSIiLGsuaHJlZj1wLHUmJmsuc2V0QXR0cmlidXRlKCJub25jZSIsdSksZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChrKSxoKXJldHVybiBuZXcgUHJvbWlzZSgoVCxfKT0+e2suYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsVCksay5hZGRFdmVudExpc3RlbmVyKCJlcnJvciIsKCk9Pl8obmV3IEVycm9yKGBVbmFibGUgdG8gcHJlbG9hZCBDU1MgZm9yICR7cH1gKSkpfSl9KSl9ZnVuY3Rpb24gcihpKXtjb25zdCBhPW5ldyBFdmVudCgidml0ZTpwcmVsb2FkRXJyb3IiLHtjYW5jZWxhYmxlOiEwfSk7aWYoYS5wYXlsb2FkPWksd2luZG93LmRpc3BhdGNoRXZlbnQoYSksIWEuZGVmYXVsdFByZXZlbnRlZCl0aHJvdyBpfXJldHVybiBzLnRoZW4oaT0+e2Zvcihjb25zdCBhIG9mIGl8fFtdKWEuc3RhdHVzPT09InJlamVjdGVkIiYmcihhLnJlYXNvbik7cmV0dXJuIHQoKS5jYXRjaChyKX0pfTtmdW5jdGlvbiBBZyhlKXtyZXR1cm4gZX1mdW5jdGlvbiBDZyhlKXtyZXR1cm4gZX1mdW5jdGlvbiBTcygpe3JldHVybiBlPT5lfWZ1bmN0aW9uIFBnKGUpe31mdW5jdGlvbiBFZyhlKXt0aHJvdyBuZXcgRXJyb3IoIlVuZXhwZWN0ZWQgdmFsdWUgaW4gZXhoYXVzdGl2ZSBjaGVjayIpfWZ1bmN0aW9uIE9nKGUpe31mdW5jdGlvbiBzaShlKXtjb25zdCB0PU9iamVjdC52YWx1ZXMoZSkuZmlsdGVyKG89PnR5cGVvZiBvPT0ibnVtYmVyIik7cmV0dXJuIE9iamVjdC5lbnRyaWVzKGUpLmZpbHRlcigoW28sc10pPT50LmluZGV4T2YoK28pPT09LTEpLm1hcCgoW28sc10pPT5zKX1mdW5jdGlvbiByaShlLHQ9InwiKXtyZXR1cm4gZS5tYXAobj0+T2kobikpLmpvaW4odCl9ZnVuY3Rpb24gaXMoZSx0KXtyZXR1cm4gdHlwZW9mIHQ9PSJiaWdpbnQiP3QudG9TdHJpbmcoKTp0fWNsYXNzIFJne2NvbnN0cnVjdG9yKHQpe3RoaXMuX2dldHRlcj10LHRoaXMuX3ZhbHVlPXZvaWQgMH1nZXQgdmFsdWUoKXtjb25zdCB0PXRoaXMuX2dldHRlcjtyZXR1cm4gdCE9PXZvaWQgMCYmKHRoaXMuX3ZhbHVlPXQoKSx0aGlzLl9nZXR0ZXI9dm9pZCAwKSx0aGlzLl92YWx1ZX19ZnVuY3Rpb24gam4oZSl7cmV0dXJuIG5ldyBSZyhlKX1mdW5jdGlvbiBQaShlKXtyZXR1cm4gZT09bnVsbH1mdW5jdGlvbiBvdChlKXtjb25zdCB0PWUuc3RhcnRzV2l0aCgiXiIpPzE6MCxuPWUuZW5kc1dpdGgoIiQiKT9lLmxlbmd0aC0xOmUubGVuZ3RoO3JldHVybiBlLnNsaWNlKHQsbil9ZnVuY3Rpb24gcGQoZSx0KXtjb25zdCBuPWUvdCxvPU1hdGgucm91bmQobikscz00Kk51bWJlci5FUFNJTE9OKk1hdGgubWF4KE1hdGguYWJzKG4pLDEpO3JldHVybiBNYXRoLmFicyhuLW8pPHM/MDpuLW99Y29uc3QgZ3U9U3ltYm9sKCJldmFsdWF0aW5nIik7ZnVuY3Rpb24gaGQoZSx0LG4pe2xldCBvO09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse2dldCgpe2lmKG8hPT1ndSlyZXR1cm4gbz09PXZvaWQgMCYmKG89Z3Usbz1uKCkpLG99LHNldChzKXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpzfSl9LGNvbmZpZ3VyYWJsZTohMH0pfWZ1bmN0aW9uIE5nKGUpe3JldHVybiBPYmplY3QuY3JlYXRlKE9iamVjdC5nZXRQcm90b3R5cGVPZihlKSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhlKSl9ZnVuY3Rpb24gQXQoZSx0LG4pe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOm4sd3JpdGFibGU6ITAsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KX1mdW5jdGlvbiBUcyhlKXtjb25zdCB0PU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSwic2hhcGUiKTtyZXR1cm4gdD8uZ2V0P3QuZ2V0LnJhdzp0Py52YWx1ZX1mdW5jdGlvbiBWZShlKXtyZXR1cm4gVHMoZS5fem9kLmRlZik/P2UuX3pvZC5kZWYuc2hhcGV9ZnVuY3Rpb24gbWQoZSx0LG4pe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse2dldCgpe2NvbnN0IG89bigpO3JldHVybiBBdCh0aGlzLHQsbyksb30sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KX1mdW5jdGlvbiBmZChlLHQsbil7dCBpbiBlP0F0KGUsdCxuKTplW3RdPW59ZnVuY3Rpb24gdnQoZSx0LG4sbyl7Y29uc3Qgcz1WZSh0KTtmb3IoY29uc3QgciBvZiBuKXtjb25zdCBpPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IocyxyKTtpLmVudW1lcmFibGUmJihpLmdldD9tZChlLHIsKCk9Pntjb25zdCBhPXQuX3pvZC5kZWYuc2hhcGVbcl07cmV0dXJuIG8/byhhLHIpOmF9KTpmZChlLHIsbz9vKGkudmFsdWUscik6aS52YWx1ZSkpfX1mdW5jdGlvbiBaZyhlLHQpe2Zvcihjb25zdCBuIG9mIFJlZmxlY3Qub3duS2V5cyh0KSl7Y29uc3Qgbz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsbik7by5lbnVtZXJhYmxlJiYoby5nZXQ/bWQoZSxuLCgpPT50W25dKTpmZChlLG4sby52YWx1ZSkpfX1mdW5jdGlvbiB2ZSguLi5lKXtjb25zdCB0PXt9O2Zvcihjb25zdCBuIG9mIGUpe2NvbnN0IG89T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMobik7T2JqZWN0LmFzc2lnbih0LG8pfXJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydGllcyh7fSx0KX1mdW5jdGlvbiBNZyhlKXtyZXR1cm4gdmUoZS5fem9kLmRlZil9ZnVuY3Rpb24gamcoZSx0KXtyZXR1cm4gdD90LnJlZHVjZSgobixvKT0+bj8uW29dLGUpOmV9ZnVuY3Rpb24gcWcoZSl7Y29uc3QgdD1PYmplY3Qua2V5cyhlKSxuPXQubWFwKG89PmVbb10pO3JldHVybiBQcm9taXNlLmFsbChuKS50aGVuKG89Pntjb25zdCBzPXt9O2ZvcihsZXQgcj0wO3I8dC5sZW5ndGg7cisrKXNbdFtyXV09b1tyXTtyZXR1cm4gc30pfWZ1bmN0aW9uIExnKGU9MTApe2NvbnN0IHQ9ImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6IjtsZXQgbj0iIjtmb3IobGV0IG89MDtvPGU7bysrKW4rPXRbTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKnQubGVuZ3RoKV07cmV0dXJuIG59ZnVuY3Rpb24gZ2QoZSl7cmV0dXJuIEpTT04uc3RyaW5naWZ5KGUpfWZ1bmN0aW9uIGJkKGUpe3JldHVybiBlLnRvTG93ZXJDYXNlKCkudHJpbSgpLnJlcGxhY2UoL1teXHdccy1dL2csIiIpLnJlcGxhY2UoL1tcc18tXSsvZywiLSIpLnJlcGxhY2UoL14tK3wtKyQvZywiIil9Y29uc3QgRWk9ImNhcHR1cmVTdGFja1RyYWNlImluIEVycm9yP0Vycm9yLmNhcHR1cmVTdGFja1RyYWNlOiguLi5lKT0+e307ZnVuY3Rpb24gRHQoZSl7cmV0dXJuIHR5cGVvZiBlPT0ib2JqZWN0IiYmZSE9PW51bGwmJiFBcnJheS5pc0FycmF5KGUpfWNvbnN0IHZkPWpuKCgpPT57aWYoa2Uuaml0bGVzc3x8dHlwZW9mIG5hdmlnYXRvcjwidSImJm5hdmlnYXRvcj8udXNlckFnZW50Py5pbmNsdWRlcygiQ2xvdWRmbGFyZSIpKXJldHVybiExO3RyeXtjb25zdCBlPUZ1bmN0aW9uO3JldHVybiBuZXcgZSgiIiksITB9Y2F0Y2h7cmV0dXJuITF9fSk7ZnVuY3Rpb24gcnQoZSl7aWYoRHQoZSk9PT0hMSlyZXR1cm4hMTtjb25zdCB0PWUuY29uc3RydWN0b3I7aWYodD09PXZvaWQgMHx8dHlwZW9mIHQhPSJmdW5jdGlvbiIpcmV0dXJuITA7Y29uc3Qgbj10LnByb3RvdHlwZTtyZXR1cm4hKER0KG4pPT09ITF8fE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChuLCJpc1Byb3RvdHlwZU9mIik9PT0hMSl9ZnVuY3Rpb24genMoZSl7cmV0dXJuIHJ0KGUpP3suLi5lfTpBcnJheS5pc0FycmF5KGUpP1suLi5lXTplIGluc3RhbmNlb2YgTWFwP25ldyBNYXAoZSk6ZSBpbnN0YW5jZW9mIFNldD9uZXcgU2V0KGUpOmV9ZnVuY3Rpb24gRGcoZSl7bGV0IHQ9MDtmb3IoY29uc3QgbiBpbiBlKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLG4pJiZ0Kys7cmV0dXJuIHR9Y29uc3QgQmc9ZT0+e2NvbnN0IHQ9dHlwZW9mIGU7c3dpdGNoKHQpe2Nhc2UidW5kZWZpbmVkIjpyZXR1cm4idW5kZWZpbmVkIjtjYXNlInN0cmluZyI6cmV0dXJuInN0cmluZyI7Y2FzZSJudW1iZXIiOnJldHVybiBOdW1iZXIuaXNOYU4oZSk/Im5hbiI6Im51bWJlciI7Y2FzZSJib29sZWFuIjpyZXR1cm4iYm9vbGVhbiI7Y2FzZSJmdW5jdGlvbiI6cmV0dXJuImZ1bmN0aW9uIjtjYXNlImJpZ2ludCI6cmV0dXJuImJpZ2ludCI7Y2FzZSJzeW1ib2wiOnJldHVybiJzeW1ib2wiO2Nhc2Uib2JqZWN0IjpyZXR1cm4gQXJyYXkuaXNBcnJheShlKT8iYXJyYXkiOmU9PT1udWxsPyJudWxsIjplLnRoZW4mJnR5cGVvZiBlLnRoZW49PSJmdW5jdGlvbiImJmUuY2F0Y2gmJnR5cGVvZiBlLmNhdGNoPT0iZnVuY3Rpb24iPyJwcm9taXNlIjp0eXBlb2YgTWFwPCJ1IiYmZSBpbnN0YW5jZW9mIE1hcD8ibWFwIjp0eXBlb2YgU2V0PCJ1IiYmZSBpbnN0YW5jZW9mIFNldD8ic2V0Ijp0eXBlb2YgRGF0ZTwidSImJmUgaW5zdGFuY2VvZiBEYXRlPyJkYXRlIjp0eXBlb2YgRmlsZTwidSImJmUgaW5zdGFuY2VvZiBGaWxlPyJmaWxlIjoib2JqZWN0IjtkZWZhdWx0OnRocm93IG5ldyBFcnJvcihgVW5rbm93biBkYXRhIHR5cGU6ICR7dH1gKX19LGFzPW5ldyBTZXQoWyJzdHJpbmciLCJudW1iZXIiLCJzeW1ib2wiXSksJGQ9bmV3IFNldChbInN0cmluZyIsIm51bWJlciIsImJpZ2ludCIsImJvb2xlYW4iLCJzeW1ib2wiLCJ1bmRlZmluZWQiXSk7ZnVuY3Rpb24gSmUoZSl7cmV0dXJuIGUucmVwbGFjZSgvWy4qKz9eJHt9KCl8W1xdXFxdL2csIlxcJCYiKX1mdW5jdGlvbiBzZShlLHQsbil7Y29uc3Qgbz1uZXcgZS5fem9kLmNvbnN0cih0Pz9lLl96b2QuZGVmKTtyZXR1cm4oIXR8fG4/LnBhcmVudCkmJihvLl96b2QucGFyZW50PWUpLG99ZnVuY3Rpb24gdyhlKXtjb25zdCB0PWU7aWYoIXQpcmV0dXJue307aWYodHlwZW9mIHQ9PSJzdHJpbmciKXJldHVybntlcnJvcjooKT0+dH07aWYodD8ubWVzc2FnZSE9PXZvaWQgMCl7aWYodD8uZXJyb3IhPT12b2lkIDApdGhyb3cgbmV3IEVycm9yKCJDYW5ub3Qgc3BlY2lmeSBib3RoIGBtZXNzYWdlYCBhbmQgYGVycm9yYCBwYXJhbXMiKTt0LmVycm9yPXQubWVzc2FnZX1yZXR1cm4gZGVsZXRlIHQubWVzc2FnZSx0eXBlb2YgdC5lcnJvcj09InN0cmluZyI/ey4uLnQsZXJyb3I6KCk9PnQuZXJyb3J9OnR9ZnVuY3Rpb24gVWcoZSl7bGV0IHQ7cmV0dXJuIG5ldyBQcm94eSh7fSx7Z2V0KG4sbyxzKXtyZXR1cm4gdD8/KHQ9ZSgpKSxSZWZsZWN0LmdldCh0LG8scyl9LHNldChuLG8scyxyKXtyZXR1cm4gdD8/KHQ9ZSgpKSxSZWZsZWN0LnNldCh0LG8scyxyKX0saGFzKG4sbyl7cmV0dXJuIHQ/Pyh0PWUoKSksUmVmbGVjdC5oYXModCxvKX0sZGVsZXRlUHJvcGVydHkobixvKXtyZXR1cm4gdD8/KHQ9ZSgpKSxSZWZsZWN0LmRlbGV0ZVByb3BlcnR5KHQsbyl9LG93bktleXMobil7cmV0dXJuIHQ/Pyh0PWUoKSksUmVmbGVjdC5vd25LZXlzKHQpfSxnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobixvKXtyZXR1cm4gdD8/KHQ9ZSgpKSxSZWZsZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LG8pfSxkZWZpbmVQcm9wZXJ0eShuLG8scyl7cmV0dXJuIHQ/Pyh0PWUoKSksUmVmbGVjdC5kZWZpbmVQcm9wZXJ0eSh0LG8scyl9fSl9ZnVuY3Rpb24gT2koZSl7cmV0dXJuIHR5cGVvZiBlPT0iYmlnaW50Ij9lLnRvU3RyaW5nKCkrIm4iOnR5cGVvZiBlPT0ic3RyaW5nIj9gIiR7ZX0iYDpgJHtlfWB9ZnVuY3Rpb24geWQoZSl7cmV0dXJuIE9iamVjdC5rZXlzKGUpLmZpbHRlcih0PT5lW3RdLl96b2Qub3B0aW4hPT12b2lkIDAmJmVbdF0uX3pvZC5vcHRvdXQ9PT0ib3B0aW9uYWwiKX1jb25zdCBrZD17c2FmZWludDpbTnVtYmVyLk1JTl9TQUZFX0lOVEVHRVIsTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVJdLGludDMyOlstMjE0NzQ4MzY0OCwyMTQ3NDgzNjQ3XSx1aW50MzI6WzAsNDI5NDk2NzI5NV0sZmxvYXQzMjpbLTM0MDI4MjM0NjYzODUyODg2ZTIyLDM0MDI4MjM0NjYzODUyODg2ZTIyXSxmbG9hdDY0OlstTnVtYmVyLk1BWF9WQUxVRSxOdW1iZXIuTUFYX1ZBTFVFXX0sX2Q9e2ludDY0OltCaWdJbnQoIi05MjIzMzcyMDM2ODU0Nzc1ODA4IiksQmlnSW50KCI5MjIzMzcyMDM2ODU0Nzc1ODA3IildLHVpbnQ2NDpbQmlnSW50KDApLEJpZ0ludCgiMTg0NDY3NDQwNzM3MDk1NTE2MTUiKV19O2Z1bmN0aW9uIHdkKGUsdCl7Y29uc3Qgbj1lLl96b2QuZGVmLG89bi5jaGVja3M7aWYobyYmby5sZW5ndGg+MCl0aHJvdyBuZXcgRXJyb3IoIi5waWNrKCkgY2Fubm90IGJlIHVzZWQgb24gb2JqZWN0IHNjaGVtYXMgY29udGFpbmluZyByZWZpbmVtZW50cyIpO2NvbnN0IHI9e307cmV0dXJuIHZ0KHIsZSx4cyhlLHQpKSxzZShlLHZlKG4se3NoYXBlOnIsY2hlY2tzOltdfSkpfWZ1bmN0aW9uIHhzKGUsdCl7Y29uc3Qgbj1WZShlKSxvPVtdO2Zvcihjb25zdCBzIG9mIFJlZmxlY3Qub3duS2V5cyh0KSl7aWYoIU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobixzKT8uZW51bWVyYWJsZSl0aHJvdyBuZXcgRXJyb3IoYFVucmVjb2duaXplZCBrZXk6ICIke1N0cmluZyhzKX0iYCk7dFtzXSYmby5wdXNoKHMpfXJldHVybiBvfWZ1bmN0aW9uIFNkKGUsdCl7Y29uc3Qgbj1lLl96b2QuZGVmLG89bi5jaGVja3M7aWYobyYmby5sZW5ndGg+MCl0aHJvdyBuZXcgRXJyb3IoIi5vbWl0KCkgY2Fubm90IGJlIHVzZWQgb24gb2JqZWN0IHNjaGVtYXMgY29udGFpbmluZyByZWZpbmVtZW50cyIpO2NvbnN0IHI9bmV3IFNldCh4cyhlLHQpKSxpPXt9O3JldHVybiB2dChpLGUsUmVmbGVjdC5vd25LZXlzKFZlKGUpKS5maWx0ZXIoYT0+IXIuaGFzKGEpKSksc2UoZSx2ZShuLHtzaGFwZTppLGNoZWNrczpbXX0pKX1mdW5jdGlvbiBUZChlLHQpe2lmKCFydCh0KSl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgaW5wdXQgdG8gZXh0ZW5kOiBleHBlY3RlZCBhIHBsYWluIG9iamVjdCIpO2NvbnN0IG49ZS5fem9kLmRlZi5jaGVja3M7aWYobiYmbi5sZW5ndGg+MCl7Y29uc3Qgcz1WZShlKTtmb3IoY29uc3QgciBvZiBSZWZsZWN0Lm93bktleXModCkpaWYoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihzLHIpIT09dm9pZCAwKXRocm93IG5ldyBFcnJvcigiQ2Fubm90IG92ZXJ3cml0ZSBrZXlzIG9uIG9iamVjdCBzY2hlbWFzIGNvbnRhaW5pbmcgcmVmaW5lbWVudHMuIFVzZSBgLnNhZmVFeHRlbmQoKWAgaW5zdGVhZC4iKX1yZXR1cm4gc2UoZSx2ZShlLl96b2QuZGVmLHtzaGFwZTp6ZChlLHQpfSkpfWZ1bmN0aW9uIHpkKGUsdCl7Y29uc3Qgbj17fTtyZXR1cm4gdnQobixlLFJlZmxlY3Qub3duS2V5cyhWZShlKSkpLFpnKG4sdCksbn1mdW5jdGlvbiB4ZChlLHQpe2lmKCFydCh0KSl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgaW5wdXQgdG8gc2FmZUV4dGVuZDogZXhwZWN0ZWQgYSBwbGFpbiBvYmplY3QiKTtyZXR1cm4gc2UoZSx2ZShlLl96b2QuZGVmLHtzaGFwZTp6ZChlLHQpfSkpfWZ1bmN0aW9uIElkKGUsdCl7aWYoIXQ/Ll96b2Q/LmRlZil0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgaW5wdXQgdG8gbWVyZ2U6IGV4cGVjdGVkIGFuIG9iamVjdCBzY2hlbWEuIFRvIG1lcmdlIGEgcGxhaW4gc2hhcGUsIHVzZSBgLmV4dGVuZCgpYC4iKTtpZihlLl96b2QuZGVmLmNoZWNrcz8ubGVuZ3RoKXRocm93IG5ldyBFcnJvcigiLm1lcmdlKCkgY2Fubm90IGJlIHVzZWQgb24gb2JqZWN0IHNjaGVtYXMgY29udGFpbmluZyByZWZpbmVtZW50cy4gVXNlIC5zYWZlRXh0ZW5kKCkgaW5zdGVhZC4iKTtjb25zdCBuPXt9O3Z0KG4sZSxSZWZsZWN0Lm93bktleXMoVmUoZSkpKSx2dChuLHQsUmVmbGVjdC5vd25LZXlzKFZlKHQpKSk7Y29uc3Qgbz12ZShlLl96b2QuZGVmLHtzaGFwZTpuLGdldCBjYXRjaGFsbCgpe3JldHVybiB0Ll96b2QuZGVmLmNhdGNoYWxsfSxjaGVja3M6dC5fem9kLmRlZi5jaGVja3M/P1tdfSk7cmV0dXJuIHNlKGUsbyl9ZnVuY3Rpb24gaWkoZSx0LG4sbz0icGFydGlhbCIpe2NvbnN0IHI9dC5fem9kLmRlZi5jaGVja3M7aWYociYmci5sZW5ndGg+MCl0aHJvdyBuZXcgRXJyb3IoYC4ke299KCkgY2Fubm90IGJlIHVzZWQgb24gb2JqZWN0IHNjaGVtYXMgY29udGFpbmluZyByZWZpbmVtZW50c2ApO2NvbnN0IGE9bj9uZXcgU2V0KHhzKHQsbikpOnZvaWQgMCxkPXt9O3JldHVybiB2dChkLHQsUmVmbGVjdC5vd25LZXlzKFZlKHQpKSxlJiYoKHUscCk9PmEmJiFhLmhhcyhwKT91Om5ldyBlKHt0eXBlOiJvcHRpb25hbCIsaW5uZXJUeXBlOnV9KSkpLHNlKHQsdmUodC5fem9kLmRlZix7c2hhcGU6ZCxjaGVja3M6W119KSl9ZnVuY3Rpb24gQWQoZSx0LG4pe2NvbnN0IG89bj9uZXcgU2V0KHhzKHQsbikpOnZvaWQgMCxzPXt9O3JldHVybiB2dChzLHQsUmVmbGVjdC5vd25LZXlzKFZlKHQpKSwocixpKT0+byYmIW8uaGFzKGkpP3I6bmV3IGUoe3R5cGU6Im5vbm9wdGlvbmFsIixpbm5lclR5cGU6cn0pKSxzZSh0LHZlKHQuX3pvZC5kZWYse3NoYXBlOnN9KSl9ZnVuY3Rpb24gU2UoZSx0PTApe2lmKGUuYWJvcnRlZD09PSEwKXJldHVybiEwO2ZvcihsZXQgbj10O248ZS5pc3N1ZXMubGVuZ3RoO24rKylpZihlLmlzc3Vlc1tuXT8uY29udGludWUhPT0hMClyZXR1cm4hMDtyZXR1cm4hMX1mdW5jdGlvbiBDZChlLHQ9MCl7aWYoZS5hYm9ydGVkPT09ITApcmV0dXJuITA7Zm9yKGxldCBuPXQ7bjxlLmlzc3Vlcy5sZW5ndGg7bisrKWlmKGUuaXNzdWVzW25dPy5jb250aW51ZT09PSExKXJldHVybiEwO3JldHVybiExfWZ1bmN0aW9uIFJlKGUsdCl7cmV0dXJuIHQubWFwKG49Pnt2YXIgbztyZXR1cm4obz1uKS5wYXRoPz8oby5wYXRoPVtdKSxuLnBhdGgudW5zaGlmdChlKSxufSl9ZnVuY3Rpb24gT3QoZSl7cmV0dXJuIHR5cGVvZiBlPT0ic3RyaW5nIj9lOmU/Lm1lc3NhZ2V9ZnVuY3Rpb24gYWkoZSx0LG4pe3ZhciBvO2ZvcihsZXQgcz10O3M8ZS5sZW5ndGg7cysrKShvPWVbc10pLnNjaGVtYT8/KG8uc2NoZW1hPW4pfWZ1bmN0aW9uIGplKGUsdCxuKXt2YXIgbztjb25zdCBzPWUuaW5zdD8uX3pvZD8udHJhaXRzO3M/LmhhcygiJFpvZFR5cGUiKSYmKHMuaGFzKCIkWm9kQ2hlY2siKT8obz1lKS5zY2hlbWE/PyhvLnNjaGVtYT1lLmluc3QpOmUuc2NoZW1hPWUuaW5zdCk7Y29uc3Qgcj1lLnNjaGVtYSE9PWUuaW5zdD9lLnNjaGVtYT8uX3pvZC5kZWY/LmVycm9yOnZvaWQgMCxpPWUubWVzc2FnZT9lLm1lc3NhZ2U6T3QoZS5pbnN0Py5fem9kLmRlZj8uZXJyb3I/LihlKSk/P090KHI/LihlKSk/P090KHQ/LmVycm9yPy4oZSkpPz9PdChuLmN1c3RvbUVycm9yPy4oZSkpPz9PdChuLmxvY2FsZUVycm9yPy4oZSkpPz8iSW52YWxpZCBpbnB1dCIsYT17fTtmb3IoY29uc3QgZCBvZiBPYmplY3Qua2V5cyhlKSlkPT09Imluc3QifHxkPT09InNjaGVtYSJ8fGQ9PT0iY29udGludWUifHxkPT09ImlucHV0Inx8ZD09PSJfX3Byb3RvX18ifHwoYVtkXT1lW2RdKTtyZXR1cm4gYS5wYXRoPz8oYS5wYXRoPVtdKSxhLm1lc3NhZ2U9aSx0Py5yZXBvcnRJbnB1dCYmKGEuaW5wdXQ9ZS5pbnB1dCksYX1mdW5jdGlvbiBJcyhlKXtyZXR1cm4gZSBpbnN0YW5jZW9mIFNldD8ic2V0IjplIGluc3RhbmNlb2YgTWFwPyJtYXAiOmUgaW5zdGFuY2VvZiBGaWxlPyJmaWxlIjoidW5rbm93biJ9Y29uc3QgRmc9L1tcdUQ4MDAtXHVEQkZGXS87ZnVuY3Rpb24gQXMoZSl7Y29uc3QgdD1lLmxlbmd0aDtpZighRmcudGVzdChlKSlyZXR1cm4gdDtsZXQgbj10O2ZvcihsZXQgbz0wO288dC0xO28rKykoZS5jaGFyQ29kZUF0KG8pJjY0NTEyKT09PTU1Mjk2JiYoZS5jaGFyQ29kZUF0KG8rMSkmNjQ1MTIpPT09NTYzMjAmJihuLS0sbysrKTtyZXR1cm4gbn1mdW5jdGlvbiBDcyhlKXtyZXR1cm4gQXJyYXkuaXNBcnJheShlKT8iYXJyYXkiOnR5cGVvZiBlPT0ic3RyaW5nIj8ic3RyaW5nIjoidW5rbm93biJ9ZnVuY3Rpb24gUGQoZSl7Y29uc3QgdD10eXBlb2YgZTtzd2l0Y2godCl7Y2FzZSJudW1iZXIiOnJldHVybiBOdW1iZXIuaXNOYU4oZSk/Im5hbiI6Im51bWJlciI7Y2FzZSJvYmplY3QiOntpZihlPT09bnVsbClyZXR1cm4ibnVsbCI7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4iYXJyYXkiO2NvbnN0IG49ZTtpZihuJiZPYmplY3QuZ2V0UHJvdG90eXBlT2YobikhPT1PYmplY3QucHJvdG90eXBlJiYiY29uc3RydWN0b3IiaW4gbiYmbi5jb25zdHJ1Y3RvcilyZXR1cm4gbi5jb25zdHJ1Y3Rvci5uYW1lfX1yZXR1cm4gdH1mdW5jdGlvbiBCdCguLi5lKXtjb25zdFt0LG4sb109ZTtyZXR1cm4gdHlwZW9mIHQ9PSJzdHJpbmciP3ttZXNzYWdlOnQsY29kZToiY3VzdG9tIixpbnB1dDpuLGluc3Q6b306ey4uLnR9fWZ1bmN0aW9uIEhnKGUpe3JldHVybiBPYmplY3QuZW50cmllcyhlKS5maWx0ZXIoKFt0LG5dKT0+TnVtYmVyLmlzTmFOKE51bWJlci5wYXJzZUludCh0LDEwKSkpLm1hcCh0PT50WzFdKX1mdW5jdGlvbiBFZChlKXtjb25zdCB0PWF0b2IoZSksbj1uZXcgVWludDhBcnJheSh0Lmxlbmd0aCk7Zm9yKGxldCBvPTA7bzx0Lmxlbmd0aDtvKyspbltvXT10LmNoYXJDb2RlQXQobyk7cmV0dXJuIG59ZnVuY3Rpb24gT2QoZSl7bGV0IHQ9IiI7Zm9yKGxldCBuPTA7bjxlLmxlbmd0aDtuKyspdCs9U3RyaW5nLmZyb21DaGFyQ29kZShlW25dKTtyZXR1cm4gYnRvYSh0KX1mdW5jdGlvbiBXZyhlKXtjb25zdCB0PWUucmVwbGFjZSgvLS9nLCIrIikucmVwbGFjZSgvXy9nLCIvIiksbj0iPSIucmVwZWF0KCg0LXQubGVuZ3RoJTQpJTQpO3JldHVybiBFZCh0K24pfWZ1bmN0aW9uIFZnKGUpe3JldHVybiBPZChlKS5yZXBsYWNlKC9cKy9nLCItIikucmVwbGFjZSgvXC8vZywiXyIpLnJlcGxhY2UoLz0vZywiIil9ZnVuY3Rpb24gSmcoZSl7Y29uc3QgdD1lLnJlcGxhY2UoL14weC8sIiIpO2lmKHQubGVuZ3RoJTIhPT0wKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBoZXggc3RyaW5nIGxlbmd0aCIpO2NvbnN0IG49bmV3IFVpbnQ4QXJyYXkodC5sZW5ndGgvMik7Zm9yKGxldCBvPTA7bzx0Lmxlbmd0aDtvKz0yKW5bby8yXT1OdW1iZXIucGFyc2VJbnQodC5zbGljZShvLG8rMiksMTYpO3JldHVybiBufWZ1bmN0aW9uIEtnKGUpe3JldHVybiBBcnJheS5mcm9tKGUpLm1hcCh0PT50LnRvU3RyaW5nKDE2KS5wYWRTdGFydCgyLCIwIikpLmpvaW4oIiIpfWNsYXNzIEdne2NvbnN0cnVjdG9yKC4uLnQpe319ZnVuY3Rpb24gUmQoZSx0KXtmb3IoY29uc3QgbiBpbiB0KXtjb25zdCBvPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxuKTtvLmdldD9PYmplY3QuZGVmaW5lUHJvcGVydHkoZSxuLHsuLi5vLGVudW1lcmFibGU6ITF9KTpZZyhlLG4sby52YWx1ZSl9fWZ1bmN0aW9uIEtlKGUsdCxuLG89ITApe3JldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHtjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsZW51bWVyYWJsZTpvLHZhbHVlOm59KSxufWZ1bmN0aW9uIFBzKGUsdCxuKXtyZXR1cm4gS2UoZSx0LG4sITEpfWZ1bmN0aW9uIHFuKGUsdCl7Zm9yKGNvbnN0IG4gaW4gZSl7Y29uc3Qgbz1lW25dO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LG4se2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiEwLGdldCgpe3JldHVybiBLZSh0aGlzLG4sbyh0aGlzKSl9LHNldChzKXtLZSh0aGlzLG4scyl9fSl9cmV0dXJuIHR9ZnVuY3Rpb24gWWcoZSx0LG4pe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse2NvbmZpZ3VyYWJsZTohMCxnZXQoKXtyZXR1cm4gdGhpcz09bnVsbD9uOktlKHRoaXMsdCxuLmJpbmQodGhpcykpfSxzZXQobyl7S2UodGhpcyx0LG8pfX0pfWZ1bmN0aW9uIFFnKGUsdCl7Y29uc3Qgbj1PYmplY3QuZ2V0UHJvdG90eXBlT2YoZSk7cmV0dXJuIHQgaW4gbj92b2lkIDA6bn1sZXQgS3IsWGU9ITE7Y29uc3QgWGc9e2NvbmZpZ3VyYWJsZTohMCxnZXQoKXtYZT0hMH19O2Z1bmN0aW9uIEwoZSx0LG4pe2NvbnN0IG89T2JqZWN0LmdldFByb3RvdHlwZU9mKGUuX3pvZCk7aWYodCBpbiBvJiZLciE9PWUuX3pvZCl7S3I9dm9pZCAwO3JldHVybn1Lcj1lLl96b2QsT2JqZWN0LmRlZmluZVByb3BlcnR5KG8sdCx7Y29uZmlndXJhYmxlOiEwLGdldCgpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLHQsWGcpO2NvbnN0IHM9WGU7WGU9ITE7dHJ5e2NvbnN0IHI9bih0aGlzKTtyZXR1cm4gWGU/ZGVsZXRlIHRoaXNbdF06T2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsdCx7Y29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOnJ9KSxYZT1YZXx8cyxyfWNhdGNoKHIpe3Rocm93IGRlbGV0ZSB0aGlzW3RdLFhlPVhlfHxzLHJ9fSxzZXQocyl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsdCx7Y29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOnN9KX19KX1mdW5jdGlvbiBOZChlLHQsbixvKXtjb25zdCBzPVFnKGUsdCk7cyYmT2JqZWN0LmRlZmluZVByb3BlcnR5KHMsdCx7Y29uZmlndXJhYmxlOiEwLGdldCgpe2NvbnN0IHI9e2NvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCxlbnVtZXJhYmxlOm8sdmFsdWU6dm9pZCAwfTtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsdCxyKSxyLnZhbHVlPW4odGhpcyksT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsdCxyKSxyLnZhbHVlfSxzZXQocil7T2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsdCx7Y29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLGVudW1lcmFibGU6byx2YWx1ZTpyfSl9fSl9Y29uc3QgWmQ9In5jb25zdGFudENhdGNoIjtmdW5jdGlvbiBSaShlKXtjb25zdCB0PSgpPT5lO3JldHVybiB0W1pkXT0hMCx0fWNvbnN0IE5pPU9iamVjdC5mcmVlemUoT2JqZWN0LmRlZmluZVByb3BlcnR5KHtfX3Byb3RvX186bnVsbCxCSUdJTlRfRk9STUFUX1JBTkdFUzpfZCxDT05TVEFOVF9DQVRDSDpaZCxDbGFzczpHZyxOVU1CRVJfRk9STUFUX1JBTkdFUzprZCxhYm9ydGVkOlNlLGFsbG93c0V2YWw6dmQsYXNzZXJ0Ok9nLGFzc2VydEVxdWFsOkFnLGFzc2VydElzOlBnLGFzc2VydE5ldmVyOkVnLGFzc2VydE5vdEVxdWFsOkNnLGFzc2lnblByb3A6QXQsYXR0YWNoU2NoZW1hOmFpLGJhc2U2NFRvVWludDhBcnJheTpFZCxiYXNlNjR1cmxUb1VpbnQ4QXJyYXk6V2csY2FjaGVkOmpuLGNhcHR1cmVTdGFja1RyYWNlOkVpLGNsZWFuRW51bTpIZyxjbGVhblJlZ2V4Om90LGNsb25lOnNlLGNsb25lRGVmOk1nLGNvZGVQb2ludExlbmd0aDpBcyxjb25zdGFudENhdGNoOlJpLGNyZWF0ZVRyYW5zcGFyZW50UHJveHk6VWcsZGVmaW5lTGF6eTpoZCxkZWZpbmVMYXp5SW50ZXJuYWw6TCxkZXJpdmVkOnFuLGVzYzpnZCxlc2NhcGVSZWdleDpKZSxleHBsaWNpdGx5QWJvcnRlZDpDZCxleHRlbmQ6VGQsZmluYWxpemVJc3N1ZTpqZSxmbG9hdFNhZmVSZW1haW5kZXI6cGQsZ2V0RWxlbWVudEF0UGF0aDpqZyxnZXRFbnVtVmFsdWVzOnNpLGdldExlbmd0aGFibGVPcmlnaW46Q3MsZ2V0UGFyc2VkVHlwZTpCZyxnZXRTaXphYmxlT3JpZ2luOklzLGhleFRvVWludDhBcnJheTpKZyxoaWRlOlBzLGluc3RhbGxMYXp5UHJvcDpOZCxpc09iamVjdDpEdCxpc1BsYWluT2JqZWN0OnJ0LGlzc3VlOkJ0LGpvaW5WYWx1ZXM6cmksanNvblN0cmluZ2lmeVJlcGxhY2VyOmlzLG1lbWJlcnM6UmQsbWVyZ2U6SWQsbWVyZ2VEZWZzOnZlLG5vcm1hbGl6ZVBhcmFtczp3LG51bGxpc2g6UGksbnVtS2V5czpEZyxvYmplY3RDbG9uZTpOZyxvbWl0OlNkLG9wdGlvbmFsS2V5czp5ZCxvd246S2UscGFyc2VkVHlwZTpQZCxwYXJ0aWFsOmlpLHBpY2s6d2QscHJlZml4SXNzdWVzOlJlLHByaW1pdGl2ZVR5cGVzOiRkLHByb21pc2VBbGxPYmplY3Q6cWcscHJvcGVydHlLZXlUeXBlczphcyxyYW5kb21TdHJpbmc6TGcscmF3U2hhcGU6VHMscmVxdWlyZWQ6QWQsc2FmZUV4dGVuZDp4ZCxzaGFsbG93Q2xvbmU6enMsc2x1Z2lmeTpiZCxzdHJpbmdpZnlQcmltaXRpdmU6T2ksdG9ab2Q6U3MsdWludDhBcnJheVRvQmFzZTY0Ok9kLHVpbnQ4QXJyYXlUb0Jhc2U2NHVybDpWZyx1aW50OEFycmF5VG9IZXg6S2csdW53cmFwTWVzc2FnZTpPdH0sU3ltYm9sLnRvU3RyaW5nVGFnLHt2YWx1ZToiTW9kdWxlIn0pKTt2YXIgYnU7Y29uc3QgWmk9T2JqZWN0LmZyZWV6ZSh7c3RhdHVzOiJhYm9ydGVkIn0pLEdyPXt2YWx1ZTp2b2lkIDAsZW51bWVyYWJsZTohMX07bGV0IHZ1PSJjYXB0dXJlU3RhY2tUcmFjZSJpbiBFcnJvcj9FcnJvcjpudWxsO2Z1bmN0aW9uIGViKGUpe2NvbnN0IHQ9dnU7aWYodCl7Y29uc3Qgbj10LnN0YWNrVHJhY2VMaW1pdDtpZih0eXBlb2Ygbj09Im51bWJlciIpe3RyeXt0LnN0YWNrVHJhY2VMaW1pdD0wfWNhdGNoe3JldHVybiB2dT1udWxsLG5ldyBlfXRyeXtyZXR1cm4gbmV3IGV9ZmluYWxseXt0LnN0YWNrVHJhY2VMaW1pdD1ufX19cmV0dXJuIG5ldyBlfWZ1bmN0aW9uIG0oZSx0LG4sbyl7Y29uc3Qgcz17fTtmdW5jdGlvbiByKGIpe3RoaXMuZGVmPWIsdGhpcy5jb25zdHI9aCx0aGlzLnRyYWl0cz1uZXcgU2V0fXIucHJvdG90eXBlPXM7Y29uc3QgaT1uLGE9aSYmbmV3IFdlYWtTZXQ7ZnVuY3Rpb24gZChiLCQpe2lmKGIuX3pvZCl7aWYoYi5fem9kLnRyYWl0cy5oYXMoZSkpcmV0dXJufWVsc2V7R3IudmFsdWU9bmV3IHIoJCk7dHJ5e09iamVjdC5kZWZpbmVQcm9wZXJ0eShiLCJfem9kIixHcil9ZmluYWxseXtHci52YWx1ZT12b2lkIDB9fWlmKGIuX3pvZC50cmFpdHMuYWRkKGUpLHQoYiwkKSxhKXtjb25zdCBUPU9iamVjdC5nZXRQcm90b3R5cGVPZihiKSxfPWIuX3pvZC5jb25zdHIucHJvdG90eXBlO2xldCB4PVQ7Zm9yKDt4JiZ4IT09XzspeD1PYmplY3QuZ2V0UHJvdG90eXBlT2YoeCk7Y29uc3QgQT14Pz9UO2EuaGFzKEEpfHwoYS5hZGQoQSksUmQoQSxpKSl9Y29uc3Qgaz1oLnByb3RvdHlwZTtmb3IoY29uc3QgVCBpbiBrKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChrLFQpJiYoVCBpbiBifHwoYltUXT1rW1RdLmJpbmQoYikpKX1jb25zdCB1PW8/LlBhcmVudD8/T2JqZWN0O2NsYXNzIHAgZXh0ZW5kcyB1e31PYmplY3QuZGVmaW5lUHJvcGVydHkocCwibmFtZSIse3ZhbHVlOmV9KTtmdW5jdGlvbiBoKGIpe2NvbnN0ICQ9bz8uUGFyZW50P2ViKHApOnRoaXM7ZCgkLGIpO2NvbnN0IGs9JC5fem9kLmRlZmVycmVkO2lmKGspe2Zvcihjb25zdCBfIG9mIGspXygpOyQuX3pvZC5kZWZlcnJlZD12b2lkIDB9Y29uc3QgVD1nbG9iYWxUaGlzLl9fem9kX2dsb2JhbENvbmZpZz8ucG9zdFByb2Nlc3NvcjtyZXR1cm4gVCYmVCgkKSwkfXJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoaCwiaW5pdCIse3ZhbHVlOmR9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoaCxTeW1ib2wuaGFzSW5zdGFuY2Use3ZhbHVlOmI9Pm8/LlBhcmVudCYmYiBpbnN0YW5jZW9mIG8uUGFyZW50PyEwOmI/Ll96b2Q/LnRyYWl0cz8uaGFzKGUpfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGgsIm5hbWUiLHt2YWx1ZTplfSksaH1jb25zdCBNaT1TeW1ib2woInpvZF9icmFuZCIpO2NsYXNzIHN0IGV4dGVuZHMgRXJyb3J7Y29uc3RydWN0b3IoKXtzdXBlcigiRW5jb3VudGVyZWQgUHJvbWlzZSBkdXJpbmcgc3luY2hyb25vdXMgcGFyc2UuIFVzZSAucGFyc2VBc3luYygpIGluc3RlYWQuIil9fWNsYXNzIEVzIGV4dGVuZHMgRXJyb3J7Y29uc3RydWN0b3IodCl7c3VwZXIoYEVuY291bnRlcmVkIHVuaWRpcmVjdGlvbmFsIHRyYW5zZm9ybSBkdXJpbmcgZW5jb2RlOiAke3R9YCksdGhpcy5uYW1lPSJab2RFbmNvZGVFcnJvciJ9fShidT1nbG9iYWxUaGlzKS5fX3pvZF9nbG9iYWxDb25maWc/PyhidS5fX3pvZF9nbG9iYWxDb25maWc9e30pO2NvbnN0IGtlPWdsb2JhbFRoaXMuX196b2RfZ2xvYmFsQ29uZmlnO2Z1bmN0aW9uIGRlKGUpe3JldHVybiBlJiZPYmplY3QuYXNzaWduKGtlLGUpLGtlfWZ1bmN0aW9uIHRiKCl7Y29uc3QgZT10aGlzLl96b2Q7cmV0dXJuIGUubWVzc2FnZT8/KGUubWVzc2FnZT1KU09OLnN0cmluZ2lmeShlLmRlZixpcywyKSksZS5tZXNzYWdlfWZ1bmN0aW9uIG5iKGUpe3RoaXMuX3pvZC5tZXNzYWdlPWV9Y29uc3Qgb2I9e2dldDp0YixzZXQ6bmIsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9LFlyPXt2YWx1ZTp2b2lkIDAsZW51bWVyYWJsZTohMX0sJHU9bmV3IFdlYWtTZXQoW09iamVjdC5wcm90b3R5cGUsRXJyb3IucHJvdG90eXBlXSksTWQ9KGUsdCk9PntlLm5hbWU9IiRab2RFcnJvciIsWXIudmFsdWU9dCxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiaXNzdWVzIixZciksWXIudmFsdWU9dm9pZCAwLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJtZXNzYWdlIixvYik7Y29uc3Qgbj1PYmplY3QuZ2V0UHJvdG90eXBlT2YoZSk7JHUuaGFzKG4pfHwoJHUuYWRkKG4pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuLCJ0b1N0cmluZyIse2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiExLGdldCgpe2NvbnN0IG89KCk9PnRoaXMubWVzc2FnZTtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsInRvU3RyaW5nIix7dmFsdWU6byxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KSxvfSxzZXQobyl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsInRvU3RyaW5nIix7dmFsdWU6byxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KX19KSl9LGpkPW0oIiRab2RFcnJvciIsTWQpLFBlPW0oIiRab2RFcnJvciIsTWQsdm9pZCAwLHtQYXJlbnQ6RXJyb3J9KTtmdW5jdGlvbiBzYihlLHQsbil7cmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHQpfHwodD09PSJfX3Byb3RvX18iP09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOm4oKSx3cml0YWJsZTohMCxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pOmVbdF09bigpKSxlW3RdfWZ1bmN0aW9uIE9zKGUsdD1uPT5uLm1lc3NhZ2Upe2NvbnN0IG49e30sbz1bXTtmb3IoY29uc3QgcyBvZiBlLmlzc3VlcylzLnBhdGgubGVuZ3RoPjA/c2IobixzLnBhdGhbMF0sKCk9PltdKS5wdXNoKHQocykpOm8ucHVzaCh0KHMpKTtyZXR1cm57Zm9ybUVycm9yczpvLGZpZWxkRXJyb3JzOm59fWZ1bmN0aW9uIFJzKGUsdD1uPT5uLm1lc3NhZ2Upe2NvbnN0IG49e19lcnJvcnM6W119LG89KHMscj1bXSk9Pntmb3IoY29uc3QgaSBvZiBzLmlzc3VlcylpZihpLmNvZGU9PT0iaW52YWxpZF91bmlvbiImJmkuZXJyb3JzLmxlbmd0aClpLmVycm9ycy5tYXAoYT0+byh7aXNzdWVzOmF9LFsuLi5yLC4uLmkucGF0aF0pKTtlbHNlIGlmKGkuY29kZT09PSJpbnZhbGlkX2tleSIpbyh7aXNzdWVzOmkuaXNzdWVzfSxbLi4uciwuLi5pLnBhdGhdKTtlbHNlIGlmKGkuY29kZT09PSJpbnZhbGlkX2VsZW1lbnQiKW8oe2lzc3VlczppLmlzc3Vlc30sWy4uLnIsLi4uaS5wYXRoXSk7ZWxzZXtjb25zdCBhPVsuLi5yLC4uLmkucGF0aF07aWYoYS5sZW5ndGg9PT0wKW4uX2Vycm9ycy5wdXNoKHQoaSkpO2Vsc2V7bGV0IGQ9bix1PTA7Zm9yKDt1PGEubGVuZ3RoOyl7Y29uc3QgcD1hW3VdLGg9dT09PWEubGVuZ3RoLTE7aWYocD09PSJfZXJyb3JzIil7aCYmZC5fZXJyb3JzLnB1c2godChpKSksdSsrO2NvbnRpbnVlfU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChkLHApfHxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCxwLHt2YWx1ZTp7X2Vycm9yczpbXX0sZW51bWVyYWJsZTohMCx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9KTtjb25zdCBiPWRbcF07aCYmYi5fZXJyb3JzLnB1c2godChpKSksZD1iLHUrK319fX07cmV0dXJuIG8oZSksbn1mdW5jdGlvbiBqaShlLHQ9bj0+bi5tZXNzYWdlKXtjb25zdCBuPXtlcnJvcnM6W119LG89KHMscj1bXSk9Pnt2YXIgaTtmb3IoY29uc3QgYSBvZiBzLmlzc3VlcylpZihhLmNvZGU9PT0iaW52YWxpZF91bmlvbiImJmEuZXJyb3JzLmxlbmd0aClhLmVycm9ycy5tYXAoZD0+byh7aXNzdWVzOmR9LFsuLi5yLC4uLmEucGF0aF0pKTtlbHNlIGlmKGEuY29kZT09PSJpbnZhbGlkX2tleSIpbyh7aXNzdWVzOmEuaXNzdWVzfSxbLi4uciwuLi5hLnBhdGhdKTtlbHNlIGlmKGEuY29kZT09PSJpbnZhbGlkX2VsZW1lbnQiKW8oe2lzc3VlczphLmlzc3Vlc30sWy4uLnIsLi4uYS5wYXRoXSk7ZWxzZXtjb25zdCBkPVsuLi5yLC4uLmEucGF0aF07aWYoZC5sZW5ndGg9PT0wKXtuLmVycm9ycy5wdXNoKHQoYSkpO2NvbnRpbnVlfWxldCB1PW4scD0wO2Zvcig7cDxkLmxlbmd0aDspe2NvbnN0IGg9ZFtwXSxiPXA9PT1kLmxlbmd0aC0xO3R5cGVvZiBoPT0ic3RyaW5nIj8odS5wcm9wZXJ0aWVzPz8odS5wcm9wZXJ0aWVzPXt9KSxPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodS5wcm9wZXJ0aWVzLGgpfHxPYmplY3QuZGVmaW5lUHJvcGVydHkodS5wcm9wZXJ0aWVzLGgse3ZhbHVlOntlcnJvcnM6W119LGVudW1lcmFibGU6ITAsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksdT11LnByb3BlcnRpZXNbaF0pOih1Lml0ZW1zPz8odS5pdGVtcz1bXSksKGk9dS5pdGVtcylbaF0/PyhpW2hdPXtlcnJvcnM6W119KSx1PXUuaXRlbXNbaF0pLGImJnUuZXJyb3JzLnB1c2godChhKSkscCsrfX19O3JldHVybiBvKGUpLG59ZnVuY3Rpb24gcWQoZSl7Y29uc3QgdD1bXSxuPWUubWFwKG89PnR5cGVvZiBvPT0ib2JqZWN0Ij9vLmtleTpvKTtmb3IoY29uc3QgbyBvZiBuKXR5cGVvZiBvPT0ibnVtYmVyIj90LnB1c2goYFske299XWApOnR5cGVvZiBvPT0ic3ltYm9sIj90LnB1c2goYFske0pTT04uc3RyaW5naWZ5KFN0cmluZyhvKSl9XWApOi9bXlx3JF0vLnRlc3Qobyk/dC5wdXNoKGBbJHtKU09OLnN0cmluZ2lmeShvKX1dYCk6KHQubGVuZ3RoJiZ0LnB1c2goIi4iKSx0LnB1c2gobykpO3JldHVybiB0LmpvaW4oIiIpfWZ1bmN0aW9uIHFpKGUpe2NvbnN0IHQ9W10sbj1bLi4uZS5pc3N1ZXNdLnNvcnQoKG8scyk9PihvLnBhdGg/P1tdKS5sZW5ndGgtKHMucGF0aD8/W10pLmxlbmd0aCk7Zm9yKGNvbnN0IG8gb2Ygbil0LnB1c2goYOKcliAke28ubWVzc2FnZX1gKSxvLnBhdGg/Lmxlbmd0aCYmdC5wdXNoKGAgIOKGkiBhdCAke3FkKG8ucGF0aCl9YCk7cmV0dXJuIHQuam9pbihgCmApfWZ1bmN0aW9uIE5zKGUsdCl7cmV0dXJue2NhbGxlZTp0Py5jYWxsZWU/P2UsRXJyOnQ/LkVycn19Y29uc3QgTG49ZT0+e2NvbnN0IHQ9KG4sbyxzLHIpPT57Y29uc3QgaT1zP3suLi5zLGFzeW5jOiExfTp7YXN5bmM6ITF9LGE9bi5fem9kLnJ1bih7dmFsdWU6byxpc3N1ZXM6W119LGkpO2lmKGEgaW5zdGFuY2VvZiBQcm9taXNlKXRocm93IG5ldyBzdDtpZihhLmlzc3Vlcy5sZW5ndGgpe2NvbnN0IGQ9bmV3KHI/LkVycj8/ZSkoYS5pc3N1ZXMubWFwKHU9PmplKHUsaSxkZSgpKSkpO3Rocm93IEVpKGQscj8uY2FsbGVlPz90KSxkfXJldHVybiBhLnZhbHVlfTtyZXR1cm4gdH0sY2k9TG4oUGUpLERuPWU9Pntjb25zdCB0PWFzeW5jKG4sbyxzLHIpPT57Y29uc3QgaT1zP3suLi5zLGFzeW5jOiEwfTp7YXN5bmM6ITB9O2xldCBhPW4uX3pvZC5ydW4oe3ZhbHVlOm8saXNzdWVzOltdfSxpKTtpZihhIGluc3RhbmNlb2YgUHJvbWlzZSYmKGE9YXdhaXQgYSksYS5pc3N1ZXMubGVuZ3RoKXtjb25zdCBkPW5ldyhyPy5FcnI/P2UpKGEuaXNzdWVzLm1hcCh1PT5qZSh1LGksZGUoKSkpKTt0aHJvdyBFaShkLHI/LmNhbGxlZT8/dCksZH1yZXR1cm4gYS52YWx1ZX07cmV0dXJuIHR9LGxpPURuKFBlKSxCbj1lPT4odCxuLG8pPT57Y29uc3Qgcz1vP3suLi5vLGFzeW5jOiExfTp7YXN5bmM6ITF9LHI9dC5fem9kLnJ1bih7dmFsdWU6bixpc3N1ZXM6W119LHMpO2lmKHIgaW5zdGFuY2VvZiBQcm9taXNlKXRocm93IG5ldyBzdDtyZXR1cm4gci5pc3N1ZXMubGVuZ3RoP0RkKGUsci5pc3N1ZXMscyk6e3N1Y2Nlc3M6ITAsZGF0YTpyLnZhbHVlfX0sTGQ9Qm4oUGUpO2Z1bmN0aW9uIERkKGUsdCxuKXtsZXQgbztyZXR1cm57c3VjY2VzczohMSxnZXQgZXJyb3IoKXtyZXR1cm4gb3x8KG89bmV3IGUodC5tYXAocz0+amUocyxuLGRlKCkpKSksdD12b2lkIDAsbj12b2lkIDApLG99LHNldCBlcnJvcihzKXtvPXMsdD12b2lkIDAsbj12b2lkIDB9fX1jb25zdCBVbj1lPT5hc3luYyh0LG4sbyk9Pntjb25zdCBzPW8/ey4uLm8sYXN5bmM6ITB9Onthc3luYzohMH07bGV0IHI9dC5fem9kLnJ1bih7dmFsdWU6bixpc3N1ZXM6W119LHMpO3JldHVybiByIGluc3RhbmNlb2YgUHJvbWlzZSYmKHI9YXdhaXQgciksci5pc3N1ZXMubGVuZ3RoP0RkKGUsci5pc3N1ZXMscyk6e3N1Y2Nlc3M6ITAsZGF0YTpyLnZhbHVlfX0scmI9VW4oUGUpLGliPVN5bWJvbC5mb3IoInpvZC5jb21waWxlLmludmFsaWQiKSxhYj1TeW1ib2wuZm9yKCJ6b2QuY29tcGlsZS5mYWxsYmFjayIpLFpzPSgoZSx0LG4pPT57Y29uc3Qgbz1lLl96b2QuYmFnLnZhbGlkYXRvcjtpZihvIT09dm9pZCAwKXtpZihvKHQpIT09aWIpcmV0dXJuITA7aWYoby5kZWZpbml0ZT09PSEwJiZuPT09dm9pZCAwKXJldHVybiExfXJldHVybiBjYihlLHQsbil9KTtmdW5jdGlvbiBjYihlLHQsbil7Y29uc3Qgbz1uP3suLi5uLGFzeW5jOiExLGFib3J0RWFybHk6ITB9Onthc3luYzohMSxhYm9ydEVhcmx5OiEwfSxzPWUuX3pvZC5iYWcuZmFsbGJhY2tSdW47bGV0IHI7aWYocz8ob1thYl09ITAscj1zKHt2YWx1ZTp0LGlzc3VlczpbXX0sbykpOnI9ZS5fem9kLnJ1bih7dmFsdWU6dCxpc3N1ZXM6W119LG8pLHIgaW5zdGFuY2VvZiBQcm9taXNlKXRocm93IG5ldyBzdDtyZXR1cm4gci5pc3N1ZXMubGVuZ3RoPT09MH1jb25zdCBNcz1hc3luYyhlLHQsbik9Pntjb25zdCBvPW4/ey4uLm4sYXN5bmM6ITAsYWJvcnRFYXJseTohMH06e2FzeW5jOiEwLGFib3J0RWFybHk6ITB9O2xldCBzPWUuX3pvZC5ydW4oe3ZhbHVlOnQsaXNzdWVzOltdfSxvKTtyZXR1cm4gcyBpbnN0YW5jZW9mIFByb21pc2UmJihzPWF3YWl0IHMpLHMuaXNzdWVzLmxlbmd0aD09PTB9LExpPWU9Pntjb25zdCB0PUxuKGUpLG49KG8scyxyLGkpPT57Y29uc3QgYT1yP3suLi5yLGRpcmVjdGlvbjoiYmFja3dhcmQifTp7ZGlyZWN0aW9uOiJiYWNrd2FyZCJ9O3JldHVybiB0KG8scyxhLE5zKG4saSkpfTtyZXR1cm4gbn0sbGI9TGkoUGUpLERpPWU9Pntjb25zdCB0PUxuKGUpLG49KG8scyxyLGkpPT50KG8scyxyLE5zKG4saSkpO3JldHVybiBufSx1Yj1EaShQZSksQmk9ZT0+e2NvbnN0IHQ9RG4oZSksbj1hc3luYyhvLHMscixpKT0+e2NvbnN0IGE9cj97Li4ucixkaXJlY3Rpb246ImJhY2t3YXJkIn06e2RpcmVjdGlvbjoiYmFja3dhcmQifTtyZXR1cm4gYXdhaXQgdChvLHMsYSxOcyhuLGkpKX07cmV0dXJuIG59LGRiPUJpKFBlKSxVaT1lPT57Y29uc3QgdD1EbihlKSxuPWFzeW5jKG8scyxyLGkpPT5hd2FpdCB0KG8scyxyLE5zKG4saSkpO3JldHVybiBufSxwYj1VaShQZSksRmk9ZT0+KHQsbixvKT0+e2NvbnN0IHM9bz97Li4ubyxkaXJlY3Rpb246ImJhY2t3YXJkIn06e2RpcmVjdGlvbjoiYmFja3dhcmQifTtyZXR1cm4gQm4oZSkodCxuLHMpfSxoYj1GaShQZSksSGk9ZT0+KHQsbixvKT0+Qm4oZSkodCxuLG8pLG1iPUhpKFBlKSxXaT1lPT5hc3luYyh0LG4sbyk9Pntjb25zdCBzPW8/ey4uLm8sZGlyZWN0aW9uOiJiYWNrd2FyZCJ9OntkaXJlY3Rpb246ImJhY2t3YXJkIn07cmV0dXJuIFVuKGUpKHQsbixzKX0sZmI9V2koUGUpLFZpPWU9PmFzeW5jKHQsbixvKT0+VW4oZSkodCxuLG8pLGdiPVZpKFBlKSxCZD0vXltjQ11bMC05YS16XXs2LH0kLyxVZD0vXlswLTlhLXpdKyQvLEZkPS9eWzAtN11bMC05QS1ISktNTlAtVFYtWmEtaGprbW5wLXR2LXpdezI1fSQvLEhkPS9eWzAtOWEtdkEtVl17MjB9JC8sV2Q9L15bQS1aYS16MC05XXsyN30kLyxWZD0vXlthLXpBLVowLTlfLV17MjF9JC87ZnVuY3Rpb24gSmQoZSl7cmV0dXJuIG5ldyBSZWdFeHAoYF5bYS16QS1aMC05Xy1deyR7ZX19JGApfWNvbnN0IEtkPS9eUCg/OihcZCtXKXwoPyEuKlcpKD89XGR8VFxkKShcZCtZKT8oXGQrTSk/KFxkK0QpPyhUKD89XGQpKFxkK0gpPyhcZCtNKT8oXGQrKFsuLF1cZCspP1MpPyk/KSQvLGJiPS9eWy0rXT9QKD8hJCkoPzooPzpbLStdP1xkK1kpfCg/OlstK10/XGQrWy4sXVxkK1kkKSk/KD86KD86Wy0rXT9cZCtNKXwoPzpbLStdP1xkK1suLF1cZCtNJCkpPyg/Oig/OlstK10/XGQrVyl8KD86Wy0rXT9cZCtbLixdXGQrVyQpKT8oPzooPzpbLStdP1xkK0QpfCg/OlstK10/XGQrWy4sXVxkK0QkKSk/KD86VCg/PVtcZCstXSkoPzooPzpbLStdP1xkK0gpfCg/OlstK10/XGQrWy4sXVxkK0gkKSk/KD86KD86Wy0rXT9cZCtNKXwoPzpbLStdP1xkK1suLF1cZCtNJCkpPyg/OlstK10/XGQrKD86Wy4sXVxkKyk/Uyk/KT8/JC8sR2Q9L14oWzAtOWEtZkEtRl17OH0tWzAtOWEtZkEtRl17NH0tWzAtOWEtZkEtRl17NH0tWzAtOWEtZkEtRl17NH0tWzAtOWEtZkEtRl17MTJ9KSQvLFV0PWU9PmU/bmV3IFJlZ0V4cChgXihbMC05YS1mQS1GXXs4fS1bMC05YS1mQS1GXXs0fS0ke2V9WzAtOWEtZkEtRl17M30tWzg5YWJBQl1bMC05YS1mQS1GXXszfS1bMC05YS1mQS1GXXsxMn0pJGApOi9eKFswLTlhLWZBLUZdezh9LVswLTlhLWZBLUZdezR9LVsxLThdWzAtOWEtZkEtRl17M30tWzg5YWJBQl1bMC05YS1mQS1GXXszfS1bMC05YS1mQS1GXXsxMn18MDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwfGZmZmZmZmZmLWZmZmYtZmZmZi1mZmZmLWZmZmZmZmZmZmZmZikkLyx2Yj1VdCg0KSwkYj1VdCg2KSx5Yj1VdCg3KSxZZD0vXig/OltBLVphLXowLTlfJytcLV0rXC4pKltBLVphLXowLTlfJytcLV0qW0EtWmEtejAtOV8rLV1AKD86W0EtWmEtejAtOV1bQS1aYS16MC05XC1dKlwuKStbQS1aYS16XXsyLH0kLyxrYj0vXlthLXpBLVowLTkuISMkJSYnKisvPT9eX2B7fH1+LV0rQFthLXpBLVowLTldKD86W2EtekEtWjAtOS1dezAsNjF9W2EtekEtWjAtOV0pPyg/OlwuW2EtekEtWjAtOV0oPzpbYS16QS1aMC05LV17MCw2MX1bYS16QS1aMC05XSk/KSokLyxfYj0vXigoW148PigpXFtcXVxcLiw7OlxzQCJdKyhcLltePD4oKVxbXF1cXC4sOzpcc0AiXSspKil8KCIuKyIpKUAoKFxbWzAtOV17MSwzfVwuWzAtOV17MSwzfVwuWzAtOV17MSwzfVwuWzAtOV17MSwzfV0pfCgoW2EtekEtWlwtMC05XStcLikrW2EtekEtWl17Mix9KSkkLyxRZD0vXlteXHNAIl17MSw2NH1AW15cc0BdezEsMjU1fSQvdSx3Yj1RZCxTYj0vXlthLXpBLVowLTkuISMkJSYnKisvPT9eX2B7fH1+LV0rQFthLXpBLVowLTldKD86W2EtekEtWjAtOS1dezAsNjF9W2EtekEtWjAtOV0pPyg/OlwuW2EtekEtWjAtOV0oPzpbYS16QS1aMC05LV17MCw2MX1bYS16QS1aMC05XSk/KSokLyxUYj0iXig/PVtcXHNcXFNdKltcXHB7RXh0ZW5kZWRfUGljdG9ncmFwaGljfVxccHtSZWdpb25hbF9JbmRpY2F0b3J9XFx1MjBFM10pW1xccHtFeHRlbmRlZF9QaWN0b2dyYXBoaWN9XFxwe0Vtb2ppX0NvbXBvbmVudH1dKyQiO2Z1bmN0aW9uIFhkKCl7cmV0dXJuIG5ldyBSZWdFeHAoVGIsInUiKX1jb25zdCBlcD0vXig/Oig/OjI1WzAtNV18MlswLTRdWzAtOV18MVswLTldWzAtOV18WzEtOV1bMC05XXxbMC05XSlcLil7M30oPzoyNVswLTVdfDJbMC00XVswLTldfDFbMC05XVswLTldfFsxLTldWzAtOV18WzAtOV0pJC8sdHA9L14oKFswLTlhLWZBLUZdezEsNH06KXs3fVswLTlhLWZBLUZdezEsNH18KFswLTlhLWZBLUZdezEsNH06KXsxLDd9OnwoWzAtOWEtZkEtRl17MSw0fTopezEsNn06WzAtOWEtZkEtRl17MSw0fXwoWzAtOWEtZkEtRl17MSw0fTopezEsNX0oOlswLTlhLWZBLUZdezEsNH0pezEsMn18KFswLTlhLWZBLUZdezEsNH06KXsxLDR9KDpbMC05YS1mQS1GXXsxLDR9KXsxLDN9fChbMC05YS1mQS1GXXsxLDR9Oil7MSwzfSg6WzAtOWEtZkEtRl17MSw0fSl7MSw0fXwoWzAtOWEtZkEtRl17MSw0fTopezEsMn0oOlswLTlhLWZBLUZdezEsNH0pezEsNX18WzAtOWEtZkEtRl17MSw0fTooKDpbMC05YS1mQS1GXXsxLDR9KXsxLDZ9KXw6KCg6WzAtOWEtZkEtRl17MSw0fSl7MSw3fXw6KSkkLyxucD1lPT57Y29uc3QgdD1KZShlPz8iOiIpO3JldHVybiBuZXcgUmVnRXhwKGBeKD86WzAtOUEtRl17Mn0ke3R9KXs1fVswLTlBLUZdezJ9JHxeKD86WzAtOWEtZl17Mn0ke3R9KXs1fVswLTlhLWZdezJ9JGApfSxvcD0vXigoMjVbMC01XXwyWzAtNF1bMC05XXwxWzAtOV1bMC05XXxbMS05XVswLTldfFswLTldKVwuKXszfSgyNVswLTVdfDJbMC00XVswLTldfDFbMC05XVswLTldfFsxLTldWzAtOV18WzAtOV0pXC8oWzAtOV18WzEtMl1bMC05XXwzWzAtMl0pJC8sc3A9L14oKFswLTlhLWZBLUZdezEsNH06KXs3fVswLTlhLWZBLUZdezEsNH18KFswLTlhLWZBLUZdezEsNH06KXsxLDd9OnwoWzAtOWEtZkEtRl17MSw0fTopezEsNn06WzAtOWEtZkEtRl17MSw0fXwoWzAtOWEtZkEtRl17MSw0fTopezEsNX0oOlswLTlhLWZBLUZdezEsNH0pezEsMn18KFswLTlhLWZBLUZdezEsNH06KXsxLDR9KDpbMC05YS1mQS1GXXsxLDR9KXsxLDN9fChbMC05YS1mQS1GXXsxLDR9Oil7MSwzfSg6WzAtOWEtZkEtRl17MSw0fSl7MSw0fXwoWzAtOWEtZkEtRl17MSw0fTopezEsMn0oOlswLTlhLWZBLUZdezEsNH0pezEsNX18WzAtOWEtZkEtRl17MSw0fTooKDpbMC05YS1mQS1GXXsxLDR9KXsxLDZ9KXw6KCg6WzAtOWEtZkEtRl17MSw0fSl7MSw3fXw6KSlcLygxMlswLThdfDFbMDFdWzAtOV18WzEtOV0/WzAtOV0pJC8semI9L14kfF4oPzpbMC05YS16QS1aKy9dezR9KSooPzooPzpbMC05YS16QS1aKy9dezJ9PT0pfCg/OlswLTlhLXpBLVorL117M309KSk/JC8seGI9L14oPzpbQS1aYS16MC05Xy1dezR9KSooPzpbQS1aYS16MC05Xy1dezIsM30pPyQvLHJwPS9eKD89LnsxLDI1M31cLj8kKVthLXpBLVowLTldKD86W2EtekEtWjAtOS1dezAsNjF9W2EtekEtWjAtOV0pPyg/OlwuW2EtekEtWjAtOV0oPzpbLTAtOWEtekEtWl17MCw2MX1bMC05YS16QS1aXSk/KSpcLj8kLyxpcD0vXig/PS57MSwyNTN9JCkoW2EtekEtWjAtOV0oPzpbYS16QS1aMC05LV17MCw2MX1bYS16QS1aMC05XSk/XC4pK1thLXpBLVpdezIsNjN9JC8sSmk9L15odHRwcz8kLyxhcD0vXlwrWzEtOV1cZHs2LDE0fSQvLEtpPS9eXGQoPzpbIC1dP1xkKXsxMSwxOH0kLyxjcD0vXig/OkFFRHxBRk58QUxMfEFNRHxBT0F8QVJTfEFVRHxBV0d8QVpOfEJBTXxCQkR8QkRUfEJIRHxCSUZ8Qk1EfEJORHxCT0J8Qk9WfEJSTHxCU0R8QlROfEJXUHxCWU58QlpEfENBRHxDREZ8Q0hFfENIRnxDSFd8Q0xGfENMUHxDTll8Q09QfENPVXxDUkN8Q1VQfENWRXxDWkt8REpGfERLS3xET1B8RFpEfEVHUHxFUk58RVRCfEVVUnxGSkR8RktQfEdCUHxHRUx8R0hTfEdJUHxHTUR8R05GfEdUUXxHWUR8SEtEfEhOTHxIVEd8SFVGfElEUnxJTFN8SU5SfElRRHxJUlJ8SVNLfEpNRHxKT0R8SlBZfEtFU3xLR1N8S0hSfEtNRnxLUFd8S1JXfEtXRHxLWUR8S1pUfExBS3xMQlB8TEtSfExSRHxMU0x8TFlEfE1BRHxNREx8TUdBfE1LRHxNTUt8TU5UfE1PUHxNUlV8TVVSfE1WUnxNV0t8TVhOfE1YVnxNWVJ8TVpOfE5BRHxOR058TklPfE5PS3xOUFJ8TlpEfE9NUnxQQUJ8UEVOfFBHS3xQSFB8UEtSfFBMTnxQWUd8UUFSfFJPTnxSU0R8UlVCfFJXRnxTQVJ8U0JEfFNDUnxTREd8U0VLfFNHRHxTSFB8U0xFfFNPU3xTUkR8U1NQfFNUTnxTVkN8U1lQfFNaTHxUSEJ8VEpTfFRNVHxUTkR8VE9QfFRSWXxUVER8VFdEfFRaU3xVQUh8VUdYfFVTRHxVU058VVlJfFVZVXxVWVd8VVpTfFZFRHxWRVN8Vk5EfFZVVnxXU1R8WEFEfFhBRnxYQUd8WEFVfFhCQXxYQkJ8WEJDfFhCRHxYQ0R8WENHfFhEUnxYT0Z8WFBEfFhQRnxYUFR8WFNVfFhUU3xYVUF8WFhYfFlFUnxaQVJ8Wk1XfFpXRykkLyxHaT0vXltBLVpdezJ9KD8hMDB8MDF8OTkpXGR7Mn1bQS1aMC05XXsxMSwzMH0kLyxscD0iKD86KD86XFxkXFxkWzI0NjhdWzA0OF18XFxkXFxkWzEzNTc5XVsyNl18XFxkXFxkMFs0OF18WzAyNDY4XVswNDhdMDB8WzEzNTc5XVsyNl0wMCktMDItMjl8XFxkezR9LSg/Oig/OjBbMTM1NzhdfDFbMDJdKS0oPzowWzEtOV18WzEyXVxcZHwzWzAxXSl8KD86MFs0NjldfDExKS0oPzowWzEtOV18WzEyXVxcZHwzMCl8KD86MDIpLSg/OjBbMS05XXwxXFxkfDJbMC04XSkpKSI7ZnVuY3Rpb24gSWIoZSl7cmV0dXJuIG5ldyBSZWdFeHAoYF4ke2V9JGApfWNvbnN0IHVwPUliKGxwKTtmdW5jdGlvbiB1aShlKXtjb25zdCB0PSIoPzpbMDFdXFxkfDJbMC0zXSk6WzAtNV1cXGQiO3JldHVybiB0eXBlb2YgZS5wcmVjaXNpb249PSJudW1iZXIiP2UucHJlY2lzaW9uPT09LTE/YCR7dH1gOmUucHJlY2lzaW9uPT09MD9gJHt0fTpbMC01XVxcZGA6YCR7dH06WzAtNV1cXGRcXC5cXGR7JHtlLnByZWNpc2lvbn19YDplLnNlY29uZHM/YCR7dH06WzAtNV1cXGQoPzpcXC5cXGQrKT9gOmAke3R9KD86OlswLTVdXFxkKD86XFwuXFxkKyk/KT9gfWZ1bmN0aW9uIGRwKGUpe3JldHVybiBuZXcgUmVnRXhwKGBeJHt1aShlKX0kYCl9ZnVuY3Rpb24gcHAoZSl7Y29uc3QgdD1bIloiXTtlLm9mZnNldCYmdC5wdXNoKCIoWystXSg/OlswMV1cXGR8MlswLTNdKTpbMC01XVxcZCkiKTtjb25zdCBuPWAke3VpKHtwcmVjaXNpb246ZS5wcmVjaXNpb24sc2Vjb25kczohMH0pfSg/OiR7dC5qb2luKCJ8Iil9KWAsbz1lLmxvY2FsP2Ake259fCR7dWkoe3ByZWNpc2lvbjplLnByZWNpc2lvbn0pfWA6bjtyZXR1cm4gbmV3IFJlZ0V4cChgXiR7bHB9VCg/OiR7b30pJGApfWNvbnN0IGhwPS9eW1xzXFNdezAsfSQvLG1wPWU9Pntjb25zdCB0PWU/YFtcXHNcXFNdeyR7ZT8ubWluaW11bT8/MH0sJHtlPy5tYXhpbXVtPz8iIn19YDoiW1xcc1xcU10qIjtyZXR1cm4gbmV3IFJlZ0V4cChgXiR7dH0kYCl9LGZwPS9eLT9cZCtuPyQvLGdwPS9eLT9cZCskLyxqcz0vXi0/XGQrKD86XC5cZCspPyQvLGJwPS9eKD86dHJ1ZXxmYWxzZSkkL2ksdnA9L15udWxsJC9pLCRwPS9edW5kZWZpbmVkJC9pLHlwPS9eW15BLVpdKiQvLGtwPS9eW15hLXpdKiQvLF9wPS9eWzAtOWEtZkEtRl0qJC87ZnVuY3Rpb24gRm4oZSx0KXtyZXR1cm4gbmV3IFJlZ0V4cChgXltBLVphLXowLTkrL117JHtlfX0ke3R9JGApfWZ1bmN0aW9uIEhuKGUpe3JldHVybiBuZXcgUmVnRXhwKGBeW0EtWmEtejAtOV8tXXske2V9fSRgKX1jb25zdCBBYj0vXlswLTlhLWZBLUZdezMyfSQvLENiPUZuKDIyLCI9PSIpLFBiPUhuKDIyKSxFYj0vXlswLTlhLWZBLUZdezQwfSQvLE9iPUZuKDI3LCI9IiksUmI9SG4oMjcpLE5iPS9eWzAtOWEtZkEtRl17NjR9JC8sWmI9Rm4oNDMsIj0iKSxNYj1Ibig0MyksamI9L15bMC05YS1mQS1GXXs5Nn0kLyxxYj1Gbig2NCwiIiksTGI9SG4oNjQpLERiPS9eWzAtOWEtZkEtRl17MTI4fSQvLEJiPUZuKDg2LCI9PSIpLFViPUhuKDg2KSxxcz1PYmplY3QuZnJlZXplKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7X19wcm90b19fOm51bGwsYW55U3RyaW5nOmhwLGJhc2U2NDp6YixiYXNlNjR1cmw6eGIsYmlnaW50OmZwLGJvb2xlYW46YnAsYnJvd3NlckVtYWlsOlNiLGNpZHJ2NDpvcCxjaWRydjY6c3AsY3JlZGl0Q2FyZDpLaSxjdWlkOkJkLGN1aWQyOlVkLGN1cnJlbmN5Q29kZTpjcCxkYXRlOnVwLGRhdGV0aW1lOnBwLGRvbWFpbjppcCxkdXJhdGlvbjpLZCxlMTY0OmFwLGVtYWlsOllkLGVtb2ppOlhkLGV4dGVuZGVkRHVyYXRpb246YmIsZ3VpZDpHZCxoZXg6X3AsaG9zdG5hbWU6cnAsaHRtbDVFbWFpbDprYixodHRwUHJvdG9jb2w6SmksaWJhbjpHaSxpZG5FbWFpbDp3YixpbnRlZ2VyOmdwLGlwdjQ6ZXAsaXB2Njp0cCxrc3VpZDpXZCxsb3dlcmNhc2U6eXAsbWFjOm5wLG1kNV9iYXNlNjQ6Q2IsbWQ1X2Jhc2U2NHVybDpQYixtZDVfaGV4OkFiLG5hbm9pZDpWZCxuYW5vaWRPZkxlbmd0aDpKZCxudWxsOnZwLG51bWJlcjpqcyxyZmM1MzIyRW1haWw6X2Isc2hhMV9iYXNlNjQ6T2Isc2hhMV9iYXNlNjR1cmw6UmIsc2hhMV9oZXg6RWIsc2hhMjU2X2Jhc2U2NDpaYixzaGEyNTZfYmFzZTY0dXJsOk1iLHNoYTI1Nl9oZXg6TmIsc2hhMzg0X2Jhc2U2NDpxYixzaGEzODRfYmFzZTY0dXJsOkxiLHNoYTM4NF9oZXg6amIsc2hhNTEyX2Jhc2U2NDpCYixzaGE1MTJfYmFzZTY0dXJsOlViLHNoYTUxMl9oZXg6RGIsc3RyaW5nOm1wLHRpbWU6ZHAsdWxpZDpGZCx1bmRlZmluZWQ6JHAsdW5pY29kZUVtYWlsOlFkLHVwcGVyY2FzZTprcCx1dWlkOlV0LHV1aWQ0OnZiLHV1aWQ2OiRiLHV1aWQ3OnliLHhpZDpIZH0sU3ltYm9sLnRvU3RyaW5nVGFnLHt2YWx1ZToiTW9kdWxlIn0pKSxvZT1tKCIkWm9kQ2hlY2siLChlLHQpPT57dmFyIG47ZS5fem9kPz8oZS5fem9kPXt9KSxlLl96b2QuZGVmPXQsKG49ZS5fem9kKS5vbmF0dGFjaD8/KG4ub25hdHRhY2g9W10pfSksWWk9ZT0+e2NvbnN0IHQ9ZS52YWx1ZTtyZXR1cm4hUGkodCkmJnQuc2l6ZSE9PXZvaWQgMH0sUWk9ZT0+e2NvbnN0IHQ9ZS52YWx1ZTtyZXR1cm4hUGkodCkmJnQubGVuZ3RoIT09dm9pZCAwfSxjcz17bnVtYmVyOiJudW1iZXIiLGJpZ2ludDoiYmlnaW50IixvYmplY3Q6ImRhdGUifSxYaT1tKCIkWm9kQ2hlY2tMZXNzVGhhbiIsKGUsdCk9PntvZS5pbml0KGUsdCk7Y29uc3Qgbj1jc1t0eXBlb2YgdC52YWx1ZV07ZS5fem9kLmNoZWNrPW89PnsodC5pbmNsdXNpdmU/by52YWx1ZTw9dC52YWx1ZTpvLnZhbHVlPHQudmFsdWUpfHxvLmlzc3Vlcy5wdXNoKHtvcmlnaW46Y3NbdHlwZW9mIG8udmFsdWVdPz9uLGNvZGU6InRvb19iaWciLG1heGltdW06dHlwZW9mIHQudmFsdWU9PSJvYmplY3QiP3QudmFsdWUuZ2V0VGltZSgpOnQudmFsdWUsaW5wdXQ6by52YWx1ZSxpbmNsdXNpdmU6dC5pbmNsdXNpdmUsaW5zdDplLGNvbnRpbnVlOiF0LmFib3J0fSl9fSksZWE9bSgiJFpvZENoZWNrR3JlYXRlclRoYW4iLChlLHQpPT57b2UuaW5pdChlLHQpO2NvbnN0IG49Y3NbdHlwZW9mIHQudmFsdWVdO2UuX3pvZC5jaGVjaz1vPT57KHQuaW5jbHVzaXZlP28udmFsdWU+PXQudmFsdWU6by52YWx1ZT50LnZhbHVlKXx8by5pc3N1ZXMucHVzaCh7b3JpZ2luOmNzW3R5cGVvZiBvLnZhbHVlXT8/bixjb2RlOiJ0b29fc21hbGwiLG1pbmltdW06dHlwZW9mIHQudmFsdWU9PSJvYmplY3QiP3QudmFsdWUuZ2V0VGltZSgpOnQudmFsdWUsaW5wdXQ6by52YWx1ZSxpbmNsdXNpdmU6dC5pbmNsdXNpdmUsaW5zdDplLGNvbnRpbnVlOiF0LmFib3J0fSl9fSksd3A9bSgiJFpvZENoZWNrTXVsdGlwbGVPZiIsKGUsdCk9PntvZS5pbml0KGUsdCksZS5fem9kLmNoZWNrPW49PntpZih0eXBlb2Ygbi52YWx1ZSE9dHlwZW9mIHQudmFsdWUpdGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgbWl4IG51bWJlciBhbmQgYmlnaW50IGluIG11bHRpcGxlX29mIGNoZWNrLiIpOyh0eXBlb2Ygbi52YWx1ZT09ImJpZ2ludCI/dC52YWx1ZSE9PUJpZ0ludCgwKSYmbi52YWx1ZSV0LnZhbHVlPT09QmlnSW50KDApOnBkKG4udmFsdWUsdC52YWx1ZSk9PT0wKXx8bi5pc3N1ZXMucHVzaCh7b3JpZ2luOnR5cGVvZiBuLnZhbHVlLGNvZGU6Im5vdF9tdWx0aXBsZV9vZiIsZGl2aXNvcjp0LnZhbHVlLGlucHV0Om4udmFsdWUsaW5zdDplLGNvbnRpbnVlOiF0LmFib3J0fSl9fSksU3A9bSgiJFpvZENoZWNrTnVtYmVyRm9ybWF0IiwoZSx0KT0+e29lLmluaXQoZSx0KSx0LmZvcm1hdD10LmZvcm1hdHx8ImZsb2F0NjQiO2NvbnN0IG49dC5mb3JtYXQ/LmluY2x1ZGVzKCJpbnQiKSxvPW4/ImludCI6Im51bWJlciIsW3Mscl09a2RbdC5mb3JtYXRdO2UuX3pvZC5jaGVjaz1pPT57Y29uc3QgYT1pLnZhbHVlO2lmKG4pe2lmKCFOdW1iZXIuaXNJbnRlZ2VyKGEpKXtpLmlzc3Vlcy5wdXNoKHtleHBlY3RlZDpvLGZvcm1hdDp0LmZvcm1hdCxjb2RlOiJpbnZhbGlkX3R5cGUiLGNvbnRpbnVlOiExLGlucHV0OmEsaW5zdDplfSk7cmV0dXJufWlmKCFOdW1iZXIuaXNTYWZlSW50ZWdlcihhKSl7YT4wP2kuaXNzdWVzLnB1c2goe2lucHV0OmEsY29kZToidG9vX2JpZyIsbWF4aW11bTpOdW1iZXIuTUFYX1NBRkVfSU5URUdFUixub3RlOiJJbnRlZ2VycyBtdXN0IGJlIHdpdGhpbiB0aGUgc2FmZSBpbnRlZ2VyIHJhbmdlLiIsaW5zdDplLG9yaWdpbjpvLGluY2x1c2l2ZTohMCxjb250aW51ZTohdC5hYm9ydH0pOmkuaXNzdWVzLnB1c2goe2lucHV0OmEsY29kZToidG9vX3NtYWxsIixtaW5pbXVtOk51bWJlci5NSU5fU0FGRV9JTlRFR0VSLG5vdGU6IkludGVnZXJzIG11c3QgYmUgd2l0aGluIHRoZSBzYWZlIGludGVnZXIgcmFuZ2UuIixpbnN0OmUsb3JpZ2luOm8saW5jbHVzaXZlOiEwLGNvbnRpbnVlOiF0LmFib3J0fSk7cmV0dXJufX1hPHMmJmkuaXNzdWVzLnB1c2goe29yaWdpbjoibnVtYmVyIixpbnB1dDphLGNvZGU6InRvb19zbWFsbCIsbWluaW11bTpzLGluY2x1c2l2ZTohMCxpbnN0OmUsY29udGludWU6IXQuYWJvcnR9KSxhPnImJmkuaXNzdWVzLnB1c2goe29yaWdpbjoibnVtYmVyIixpbnB1dDphLGNvZGU6InRvb19iaWciLG1heGltdW06cixpbmNsdXNpdmU6ITAsaW5zdDplLGNvbnRpbnVlOiF0LmFib3J0fSl9fSksVHA9bSgiJFpvZENoZWNrQmlnSW50Rm9ybWF0IiwoZSx0KT0+e29lLmluaXQoZSx0KTtjb25zdFtuLG9dPV9kW3QuZm9ybWF0XTtlLl96b2QuY2hlY2s9cz0+e2NvbnN0IHI9cy52YWx1ZTtyPG4mJnMuaXNzdWVzLnB1c2goe29yaWdpbjoiYmlnaW50IixpbnB1dDpyLGNvZGU6InRvb19zbWFsbCIsbWluaW11bTpuLGluY2x1c2l2ZTohMCxpbnN0OmUsY29udGludWU6IXQuYWJvcnR9KSxyPm8mJnMuaXNzdWVzLnB1c2goe29yaWdpbjoiYmlnaW50IixpbnB1dDpyLGNvZGU6InRvb19iaWciLG1heGltdW06byxpbmNsdXNpdmU6ITAsaW5zdDplLGNvbnRpbnVlOiF0LmFib3J0fSl9fSksenA9bSgiJFpvZENoZWNrTWF4U2l6ZSIsKGUsdCk9Pnt2YXIgbjtvZS5pbml0KGUsdCksKG49ZS5fem9kLmRlZikud2hlbj8/KG4ud2hlbj1ZaSksZS5fem9kLmNoZWNrPW89Pntjb25zdCBzPW8udmFsdWU7cy5zaXplPD10Lm1heGltdW18fG8uaXNzdWVzLnB1c2goe29yaWdpbjpJcyhzKSxjb2RlOiJ0b29fYmlnIixtYXhpbXVtOnQubWF4aW11bSxpbmNsdXNpdmU6ITAsaW5wdXQ6cyxpbnN0OmUsY29udGludWU6IXQuYWJvcnR9KX19KSx4cD1tKCIkWm9kQ2hlY2tNaW5TaXplIiwoZSx0KT0+e3ZhciBuO29lLmluaXQoZSx0KSwobj1lLl96b2QuZGVmKS53aGVuPz8obi53aGVuPVlpKSxlLl96b2QuY2hlY2s9bz0+e2NvbnN0IHM9by52YWx1ZTtzLnNpemU+PXQubWluaW11bXx8by5pc3N1ZXMucHVzaCh7b3JpZ2luOklzKHMpLGNvZGU6InRvb19zbWFsbCIsbWluaW11bTp0Lm1pbmltdW0saW5jbHVzaXZlOiEwLGlucHV0OnMsaW5zdDplLGNvbnRpbnVlOiF0LmFib3J0fSl9fSksSXA9bSgiJFpvZENoZWNrU2l6ZUVxdWFscyIsKGUsdCk9Pnt2YXIgbjtvZS5pbml0KGUsdCksKG49ZS5fem9kLmRlZikud2hlbj8/KG4ud2hlbj1ZaSksZS5fem9kLmNoZWNrPW89Pntjb25zdCBzPW8udmFsdWUscj1zLnNpemU7aWYocj09PXQuc2l6ZSlyZXR1cm47Y29uc3QgaT1yPnQuc2l6ZTtvLmlzc3Vlcy5wdXNoKHtvcmlnaW46SXMocyksLi4uaT97Y29kZToidG9vX2JpZyIsbWF4aW11bTp0LnNpemV9Ontjb2RlOiJ0b29fc21hbGwiLG1pbmltdW06dC5zaXplfSxpbmNsdXNpdmU6ITAsZXhhY3Q6ITAsaW5wdXQ6by52YWx1ZSxpbnN0OmUsY29udGludWU6IXQuYWJvcnR9KX19KSxBcD1tKCIkWm9kQ2hlY2tNYXhMZW5ndGgiLChlLHQpPT57dmFyIG47b2UuaW5pdChlLHQpLChuPWUuX3pvZC5kZWYpLndoZW4/PyhuLndoZW49UWkpLGUuX3pvZC5jaGVjaz1vPT57Y29uc3Qgcz1vLnZhbHVlLHI9cy5sZW5ndGg7aWYoKHR5cGVvZiBzPT0ic3RyaW5nIiYmcj50Lm1heGltdW0/QXMocyk6cik8PXQubWF4aW11bSlyZXR1cm47Y29uc3QgYT1DcyhzKTtvLmlzc3Vlcy5wdXNoKHtvcmlnaW46YSxjb2RlOiJ0b29fYmlnIixtYXhpbXVtOnQubWF4aW11bSxpbmNsdXNpdmU6ITAsaW5wdXQ6cyxpbnN0OmUsY29udGludWU6IXQuYWJvcnR9KX19KSxDcD1tKCIkWm9kQ2hlY2tNaW5MZW5ndGgiLChlLHQpPT57dmFyIG47b2UuaW5pdChlLHQpLChuPWUuX3pvZC5kZWYpLndoZW4/PyhuLndoZW49UWkpLGUuX3pvZC5jaGVjaz1vPT57Y29uc3Qgcz1vLnZhbHVlLHI9cy5sZW5ndGg7aWYoKHR5cGVvZiBzPT0ic3RyaW5nIiYmcj49dC5taW5pbXVtJiZyPHQubWluaW11bSoyP0FzKHMpOnIpPj10Lm1pbmltdW0pcmV0dXJuO2NvbnN0IGE9Q3Mocyk7by5pc3N1ZXMucHVzaCh7b3JpZ2luOmEsY29kZToidG9vX3NtYWxsIixtaW5pbXVtOnQubWluaW11bSxpbmNsdXNpdmU6ITAsaW5wdXQ6cyxpbnN0OmUsY29udGludWU6IXQuYWJvcnR9KX19KSxQcD1tKCIkWm9kQ2hlY2tMZW5ndGhFcXVhbHMiLChlLHQpPT57dmFyIG47b2UuaW5pdChlLHQpLChuPWUuX3pvZC5kZWYpLndoZW4/PyhuLndoZW49UWkpLGUuX3pvZC5jaGVjaz1vPT57Y29uc3Qgcz1vLnZhbHVlLHI9cy5sZW5ndGgsaT10eXBlb2Ygcz09InN0cmluZyImJnI+PXQubGVuZ3RoJiZyPD10Lmxlbmd0aCoyP0FzKHMpOnI7aWYoaT09PXQubGVuZ3RoKXJldHVybjtjb25zdCBhPUNzKHMpLGQ9aT50Lmxlbmd0aDtvLmlzc3Vlcy5wdXNoKHtvcmlnaW46YSwuLi5kP3tjb2RlOiJ0b29fYmlnIixtYXhpbXVtOnQubGVuZ3RofTp7Y29kZToidG9vX3NtYWxsIixtaW5pbXVtOnQubGVuZ3RofSxpbmNsdXNpdmU6ITAsZXhhY3Q6ITAsaW5wdXQ6by52YWx1ZSxpbnN0OmUsY29udGludWU6IXQuYWJvcnR9KX19KSxXbj1tKCIkWm9kQ2hlY2tTdHJpbmdGb3JtYXQiLChlLHQpPT57dmFyIG4sbztvZS5pbml0KGUsdCksdC5wYXR0ZXJuPyhuPWUuX3pvZCkuY2hlY2s/PyhuLmNoZWNrPXM9Pnt0LnBhdHRlcm4ubGFzdEluZGV4PTAsIXQucGF0dGVybi50ZXN0KHMudmFsdWUpJiZzLmlzc3Vlcy5wdXNoKHtvcmlnaW46InN0cmluZyIsY29kZToiaW52YWxpZF9mb3JtYXQiLGZvcm1hdDp0LmZvcm1hdCxpbnB1dDpzLnZhbHVlLC4uLnQucGF0dGVybj97cGF0dGVybjp0LnBhdHRlcm4udG9TdHJpbmcoKX06e30saW5zdDplLGNvbnRpbnVlOiF0LmFib3J0fSl9KToobz1lLl96b2QpLmNoZWNrPz8oby5jaGVjaz0oKT0+e30pfSksRXA9bSgiJFpvZENoZWNrUmVnZXgiLChlLHQpPT57V24uaW5pdChlLHQpLGUuX3pvZC5jaGVjaz1uPT57dC5wYXR0ZXJuLmxhc3RJbmRleD0wLCF0LnBhdHRlcm4udGVzdChuLnZhbHVlKSYmbi5pc3N1ZXMucHVzaCh7b3JpZ2luOiJzdHJpbmciLGNvZGU6ImludmFsaWRfZm9ybWF0Iixmb3JtYXQ6InJlZ2V4IixpbnB1dDpuLnZhbHVlLHBhdHRlcm46dC5wYXR0ZXJuLnRvU3RyaW5nKCksaW5zdDplLGNvbnRpbnVlOiF0LmFib3J0fSl9fSksT3A9bSgiJFpvZENoZWNrTG93ZXJDYXNlIiwoZSx0KT0+e3QucGF0dGVybj8/KHQucGF0dGVybj15cCksV24uaW5pdChlLHQpfSksUnA9bSgiJFpvZENoZWNrVXBwZXJDYXNlIiwoZSx0KT0+e3QucGF0dGVybj8/KHQucGF0dGVybj1rcCksV24uaW5pdChlLHQpfSksTnA9bSgiJFpvZENoZWNrSW5jbHVkZXMiLChlLHQpPT57b2UuaW5pdChlLHQpO2NvbnN0IG49SmUodC5pbmNsdWRlcyksbz1uZXcgUmVnRXhwKHR5cGVvZiB0LnBvc2l0aW9uPT0ibnVtYmVyIj9gXi57JHt0LnBvc2l0aW9ufSx9JHtufWA6bik7dC5wYXR0ZXJuPW8sZS5fem9kLmNoZWNrPXM9PntzLnZhbHVlLmluY2x1ZGVzKHQuaW5jbHVkZXMsdC5wb3NpdGlvbil8fHMuaXNzdWVzLnB1c2goe29yaWdpbjoic3RyaW5nIixjb2RlOiJpbnZhbGlkX2Zvcm1hdCIsZm9ybWF0OiJpbmNsdWRlcyIsaW5jbHVkZXM6dC5pbmNsdWRlcyxpbnB1dDpzLnZhbHVlLGluc3Q6ZSxjb250aW51ZTohdC5hYm9ydH0pfX0pLFpwPW0oIiRab2RDaGVja1N0YXJ0c1dpdGgiLChlLHQpPT57b2UuaW5pdChlLHQpO2NvbnN0IG49bmV3IFJlZ0V4cChgXiR7SmUodC5wcmVmaXgpfS4qYCk7dC5wYXR0ZXJuPz8odC5wYXR0ZXJuPW4pLGUuX3pvZC5jaGVjaz1vPT57by52YWx1ZS5zdGFydHNXaXRoKHQucHJlZml4KXx8by5pc3N1ZXMucHVzaCh7b3JpZ2luOiJzdHJpbmciLGNvZGU6ImludmFsaWRfZm9ybWF0Iixmb3JtYXQ6InN0YXJ0c193aXRoIixwcmVmaXg6dC5wcmVmaXgsaW5wdXQ6by52YWx1ZSxpbnN0OmUsY29udGludWU6IXQuYWJvcnR9KX19KSxNcD1tKCIkWm9kQ2hlY2tFbmRzV2l0aCIsKGUsdCk9PntvZS5pbml0KGUsdCk7Y29uc3Qgbj1uZXcgUmVnRXhwKGAuKiR7SmUodC5zdWZmaXgpfSRgKTt0LnBhdHRlcm4/Pyh0LnBhdHRlcm49biksZS5fem9kLmNoZWNrPW89PntvLnZhbHVlLmVuZHNXaXRoKHQuc3VmZml4KXx8by5pc3N1ZXMucHVzaCh7b3JpZ2luOiJzdHJpbmciLGNvZGU6ImludmFsaWRfZm9ybWF0Iixmb3JtYXQ6ImVuZHNfd2l0aCIsc3VmZml4OnQuc3VmZml4LGlucHV0Om8udmFsdWUsaW5zdDplLGNvbnRpbnVlOiF0LmFib3J0fSl9fSk7ZnVuY3Rpb24gbHMoZSx0LG4pe2UuaXNzdWVzLmxlbmd0aCYmdC5pc3N1ZXMucHVzaCguLi5SZShuLGUuaXNzdWVzKSl9Y29uc3QganA9bSgiJFpvZENoZWNrUHJvcGVydHkiLChlLHQpPT57b2UuaW5pdChlLHQpLGUuX3pvZC5jaGVjaz1uPT57Y29uc3Qgbz10LnNjaGVtYS5fem9kLnJ1bih7dmFsdWU6bi52YWx1ZVt0LnByb3BlcnR5XSxpc3N1ZXM6W119LHt9KTtpZihvIGluc3RhbmNlb2YgUHJvbWlzZSlyZXR1cm4gby50aGVuKHM9PmxzKHMsbix0LnByb3BlcnR5KSk7bHMobyxuLHQucHJvcGVydHkpfX0pLHFwPW0oIiRab2RDaGVja1Byb3BlcnRpZXMiLChlLHQpPT57b2UuaW5pdChlLHQpLFBzKGUsU3ltYm9sLml0ZXJhdG9yLGZ1bmN0aW9uKigpe3lpZWxkIGV9KTtsZXQgbjtlLl96b2QuY2hlY2s9bz0+e2lmKG8udmFsdWU9PW51bGwpe28uaXNzdWVzLnB1c2goe2V4cGVjdGVkOiJvYmplY3QiLGNvZGU6ImludmFsaWRfdHlwZSIsaW5wdXQ6by52YWx1ZSxpbnN0OmV9KTtyZXR1cm59bj8/KG49UmVmbGVjdC5vd25LZXlzKHQuc2hhcGUpLm1hcChpPT5baSx0LnNoYXBlW2ldXSkpO2NvbnN0IHM9by52YWx1ZTtsZXQgcjtmb3IoY29uc3RbaSxhXW9mIG4pe2NvbnN0IGQ9YS5fem9kLnJ1bih7dmFsdWU6c1tpXSxpc3N1ZXM6W119LHt9KTtkIGluc3RhbmNlb2YgUHJvbWlzZT8ocj8/KHI9W10pLHIucHVzaChkLnRoZW4odT0+bHModSxvLGkpKSkpOmxzKGQsbyxpKX1pZihyKXJldHVybiBQcm9taXNlLmFsbChyKS50aGVuKCgpPT57fSl9fSksTHA9bSgiJFpvZENoZWNrTWltZVR5cGUiLChlLHQpPT57b2UuaW5pdChlLHQpO2NvbnN0IG49bmV3IFNldCh0Lm1pbWUpO2UuX3pvZC5jaGVjaz1vPT57bi5oYXMoby52YWx1ZS50eXBlKXx8by5pc3N1ZXMucHVzaCh7Y29kZToiaW52YWxpZF92YWx1ZSIsdmFsdWVzOnQubWltZSxpbnB1dDpvLnZhbHVlLnR5cGUsaW5zdDplLGNvbnRpbnVlOiF0LmFib3J0fSl9fSksRHA9bSgiJFpvZENoZWNrT3ZlcndyaXRlIiwoZSx0KT0+e29lLmluaXQoZSx0KSxlLl96b2QuY2hlY2s9bj0+e24udmFsdWU9dC50eChuLnZhbHVlKX19KTtjbGFzcyBCcHtjb25zdHJ1Y3Rvcih0PVtdLG49e30pe3RoaXMuY29udGVudD1bXSx0aGlzLmluZGVudD0wLHRoaXMuYXJncz10LHRoaXMuY2xvc2VkPW59aW5kZW50ZWQodCl7dGhpcy5pbmRlbnQrPTE7dHJ5e3QodGhpcyl9ZmluYWxseXt0aGlzLmluZGVudC09MX19d3JpdGUodCl7aWYodHlwZW9mIHQ9PSJmdW5jdGlvbiIpe3QodGhpcyx7ZXhlY3V0aW9uOiJzeW5jIn0pLHQodGhpcyx7ZXhlY3V0aW9uOiJhc3luYyJ9KTtyZXR1cm59Y29uc3Qgbz10LnNwbGl0KGAKYCkuZmlsdGVyKGk9PmkpLHM9TWF0aC5taW4oLi4uby5tYXAoaT0+aS5sZW5ndGgtaS50cmltU3RhcnQoKS5sZW5ndGgpKSxyPW8ubWFwKGk9Pmkuc2xpY2UocykpLm1hcChpPT4iICIucmVwZWF0KHRoaXMuaW5kZW50KjIpK2kpO2Zvcihjb25zdCBpIG9mIHIpdGhpcy5jb250ZW50LnB1c2goaSl9Y29tcGlsZSgpe2NvbnN0IHQ9RnVuY3Rpb24sbj10aGlzPy5jb250ZW50Pz9bIiJdO3JldHVybiBuZXcgdCguLi5PYmplY3Qua2V5cyh0aGlzLmNsb3NlZCksYHJldHVybiBmdW5jdGlvbiAoJHt0aGlzLmFyZ3Muam9pbigiLCAiKX0pIHsKJHtuLmpvaW4oYApgKX0KfTtgKSguLi5PYmplY3QudmFsdWVzKHRoaXMuY2xvc2VkKSl9fWNvbnN0IFVwPXttYWpvcjo0LG1pbm9yOjYscGF0Y2g6NX0sUj1tKCIkWm9kVHlwZSIsKGUsdCk9Pnt2YXIgbjtlPz8oZT17fSksZS5fem9kLmRlZj10LGUuX3pvZC5iYWc9ZS5fem9kLmJhZ3x8e30sZS5fem9kLnZlcnNpb249VXA7Y29uc3Qgbz1lLl96b2QuZGVmLmNoZWNrcyxzPWUuX3pvZC50cmFpdHMuaGFzKCIkWm9kQ2hlY2siKT9bZSwuLi5vPz9bXV06bz8ubGVuZ3RoP1suLi5vXTpbXTtmb3IoY29uc3QgciBvZiBzKWZvcihjb25zdCBpIG9mIHIuX3pvZC5vbmF0dGFjaClpKGUpO2lmKHMubGVuZ3RoPT09MCkobj1lLl96b2QpLmRlZmVycmVkPz8obi5kZWZlcnJlZD1bXSksZS5fem9kLmRlZmVycmVkPy5wdXNoKCgpPT57ZS5fem9kLnJ1bj1lLl96b2QucGFyc2V9KTtlbHNle2NvbnN0IHI9KGEsZCx1KT0+e2lmKGEubWVtbylyZXR1cm4gYTtsZXQgcD1TZShhKSxoO2Zvcihjb25zdCBiIG9mIGQpe2lmKGIuX3pvZC5kZWYud2hlbil7aWYoQ2QoYSl8fCFiLl96b2QuZGVmLndoZW4oYSkpY29udGludWV9ZWxzZSBpZihwKWNvbnRpbnVlO2NvbnN0ICQ9YS5pc3N1ZXMubGVuZ3RoLGs9Yi5fem9kLmNoZWNrKGEpO2lmKGsgaW5zdGFuY2VvZiBQcm9taXNlJiZ1Py5hc3luYz09PSExKXRocm93IG5ldyBzdDtpZihofHxrIGluc3RhbmNlb2YgUHJvbWlzZSloPShoPz9Qcm9taXNlLnJlc29sdmUoKSkudGhlbihhc3luYygpPT57YXdhaXQgayxhLmlzc3Vlcy5sZW5ndGghPT0kJiYoYWkoYS5pc3N1ZXMsJCxlKSxwfHwocD1TZShhLCQpKSl9KTtlbHNle2lmKGEuaXNzdWVzLmxlbmd0aD09PSQpY29udGludWU7YWkoYS5pc3N1ZXMsJCxlKSxwfHwocD1TZShhLCQpKX19cmV0dXJuIGg/aC50aGVuKCgpPT5hKTphfSxpPShhLGQsdSk9PntpZihTZShhKSlyZXR1cm4gYS5hYm9ydGVkPSEwLGE7Y29uc3QgcD1yKGQscyx1KTtpZihwIGluc3RhbmNlb2YgUHJvbWlzZSl7aWYodS5hc3luYz09PSExKXRocm93IG5ldyBzdDtyZXR1cm4gcC50aGVuKGg9PmUuX3pvZC5wYXJzZShoLHUpKX1yZXR1cm4gZS5fem9kLnBhcnNlKHAsdSl9O2UuX3pvZC5ydW49KGEsZCk9PntpZihkLnNraXBDaGVja3MpcmV0dXJuIGUuX3pvZC5wYXJzZShhLGQpO2lmKGQuZGlyZWN0aW9uPT09ImJhY2t3YXJkIil7Y29uc3QgcD1lLl96b2QucGFyc2Uoe3ZhbHVlOmEudmFsdWUsaXNzdWVzOltdfSx7Li4uZCxza2lwQ2hlY2tzOiEwfSk7cmV0dXJuIHAgaW5zdGFuY2VvZiBQcm9taXNlP3AudGhlbihoPT5pKGgsYSxkKSk6aShwLGEsZCl9Y29uc3QgdT1lLl96b2QucGFyc2UoYSxkKTtpZih1IGluc3RhbmNlb2YgUHJvbWlzZSl7aWYoZC5hc3luYz09PSExKXRocm93IG5ldyBzdDtyZXR1cm4gdS50aGVuKHA9PnIocCxzLGQpKX1yZXR1cm4gcih1LHMsZCl9fX0se2dldCJ+c3RhbmRhcmQiKCl7cmV0dXJuIFBzKHRoaXMsIn5zdGFuZGFyZCIsdGEodGhpcykpfSxzZXQifnN0YW5kYXJkIihlKXtLZSh0aGlzLCJ+c3RhbmRhcmQiLGUpfX0pLEZwPShlLHQpPT5lLmlzc3Vlcy5sZW5ndGg/e2lzc3VlczplLmlzc3Vlcy5tYXAobj0+amUobix0LGRlKCkpKX06e3ZhbHVlOmUudmFsdWV9O2FzeW5jIGZ1bmN0aW9uIEZiKGUsdCl7Y29uc3Qgbj17YXN5bmM6ITB9O3JldHVybiBGcChhd2FpdCBlLl96b2QucnVuKHt2YWx1ZTp0LGlzc3VlczpbXX0sbiksbil9ZnVuY3Rpb24gdGEoZSl7cmV0dXJue3ZhbGlkYXRlOnQ9Pntjb25zdCBuPXthc3luYzohMX07dHJ5e2NvbnN0IG89ZS5fem9kLnJ1bih7dmFsdWU6dCxpc3N1ZXM6W119LG4pO2lmKCEobyBpbnN0YW5jZW9mIFByb21pc2UpKXJldHVybiBGcChvLG4pfWNhdGNoe31yZXR1cm4gRmIoZSx0KX0sdmVuZG9yOiJ6b2QiLHZlcnNpb246MX19Y29uc3QgVm49bSgiJFpvZFN0cmluZyIsKGUsdCk9PntSLmluaXQoZSx0KSxlLl96b2QucGF0dGVybj10LnBhdHRlcm4/P2hwLGUuX3pvZC5wYXJzZT0obixvKT0+e2lmKHQuY29lcmNlKXRyeXtuLnZhbHVlPVN0cmluZyhuLnZhbHVlKX1jYXRjaHt9cmV0dXJuIHR5cGVvZiBuLnZhbHVlPT0ic3RyaW5nInx8bi5pc3N1ZXMucHVzaCh7ZXhwZWN0ZWQ6InN0cmluZyIsY29kZToiaW52YWxpZF90eXBlIixpbnB1dDpuLnZhbHVlLGluc3Q6ZX0pLG59fSksUT1tKCIkWm9kU3RyaW5nRm9ybWF0IiwoZSx0KT0+e1duLmluaXQoZSx0KSxWbi5pbml0KGUsdCl9KSxIcD1tKCIkWm9kR1VJRCIsKGUsdCk9Pnt0LnBhdHRlcm4/Pyh0LnBhdHRlcm49R2QpLFEuaW5pdChlLHQpfSksV3A9bSgiJFpvZFVVSUQiLChlLHQpPT57aWYodC52ZXJzaW9uKXtjb25zdCBvPXt2MToxLHYyOjIsdjM6Myx2NDo0LHY1OjUsdjY6Nix2Nzo3LHY4Ojh9W3QudmVyc2lvbl07aWYobz09PXZvaWQgMCl0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgVVVJRCB2ZXJzaW9uOiAiJHt0LnZlcnNpb259ImApO3QucGF0dGVybj8/KHQucGF0dGVybj1VdChvKSl9ZWxzZSB0LnBhdHRlcm4/Pyh0LnBhdHRlcm49VXQoKSk7US5pbml0KGUsdCl9KSxWcD1tKCIkWm9kRW1haWwiLChlLHQpPT57dC5wYXR0ZXJuPz8odC5wYXR0ZXJuPVlkKSxRLmluaXQoZSx0KX0pLG5hPTEsUG49MjtmdW5jdGlvbiBvYShlKXt0cnl7cmV0dXJuIHR5cGVvZiBVUkw8InUiJiZ0eXBlb2YgVVJMLmNhblBhcnNlPT0iZnVuY3Rpb24iP1VSTC5jYW5QYXJzZShlKToobmV3IFVSTChlKSwhMCl9Y2F0Y2h7cmV0dXJuITF9fWZ1bmN0aW9uIEpwKGUsdCl7cmV0dXJuISgibm9ybWFsaXplImluIHQpJiYhKCJob3N0bmFtZSJpbiB0KSYmISgicHJvdG9jb2wiaW4gdCk/b2EoZSl8fFBuOktwKGUsdCl9ZnVuY3Rpb24gS3AoZSx0KXtpZighdC5ub3JtYWxpemUmJnQucHJvdG9jb2w/LnNvdXJjZT09PUppLnNvdXJjZSYmIS9eaHR0cHM/OlwvXC8vaS50ZXN0KGUpKXJldHVybiBuYTt0cnl7aWYodHlwZW9mIFVSTDwidSIpe2NvbnN0IG49VVJMO2lmKHR5cGVvZiBuLnBhcnNlPT0iZnVuY3Rpb24iKXJldHVybiBuLnBhcnNlKGUpPz9Qbn1yZXR1cm4gbmV3IFVSTChlKX1jYXRjaHtyZXR1cm4gUG59fWNvbnN0IEhiPS9bXHRcblxyXS9nO2Z1bmN0aW9uIGRpKGUpe3JldHVybiBlLnJlcGxhY2UoSGIsIiIpfWZ1bmN0aW9uIEdwKGUsdCl7cmV0dXJuIHQubGFzdEluZGV4PTAsdC50ZXN0KGUuaG9zdG5hbWUpfWZ1bmN0aW9uIFlwKGUsdCl7cmV0dXJuIHQubGFzdEluZGV4PTAsdC50ZXN0KGUucHJvdG9jb2wuZW5kc1dpdGgoIjoiKT9lLnByb3RvY29sLnNsaWNlKDAsLTEpOmUucHJvdG9jb2wpfWNvbnN0IFFwPW0oIiRab2RVUkwiLChlLHQpPT57US5pbml0KGUsdCksZS5fem9kLmNoZWNrPW49Pnt0cnl7Y29uc3Qgbz1uLnZhbHVlLnRyaW0oKSxzPUpwKG8sdCk7aWYocz09PW5hKXtuLmlzc3Vlcy5wdXNoKHtjb2RlOiJpbnZhbGlkX2Zvcm1hdCIsZm9ybWF0OiJ1cmwiLG5vdGU6IkludmFsaWQgVVJMIGZvcm1hdCIsaW5wdXQ6bi52YWx1ZSxpbnN0OmUsY29udGludWU6IXQuYWJvcnR9KTtyZXR1cm59aWYocz09PVBuKXtuLmlzc3Vlcy5wdXNoKHtjb2RlOiJpbnZhbGlkX2Zvcm1hdCIsZm9ybWF0OiJ1cmwiLGlucHV0Om4udmFsdWUsaW5zdDplLGNvbnRpbnVlOiF0LmFib3J0fSk7cmV0dXJufWlmKHM9PT0hMCl7bi52YWx1ZT1kaShvKTtyZXR1cm59dC5ob3N0bmFtZSYmIUdwKHMsdC5ob3N0bmFtZSkmJm4uaXNzdWVzLnB1c2goe2NvZGU6ImludmFsaWRfZm9ybWF0Iixmb3JtYXQ6InVybCIsbm90ZToiSW52YWxpZCBob3N0bmFtZSIscGF0dGVybjp0Lmhvc3RuYW1lLnNvdXJjZSxpbnB1dDpuLnZhbHVlLGluc3Q6ZSxjb250aW51ZTohdC5hYm9ydH0pLHQucHJvdG9jb2wmJiFZcChzLHQucHJvdG9jb2wpJiZuLmlzc3Vlcy5wdXNoKHtjb2RlOiJpbnZhbGlkX2Zvcm1hdCIsZm9ybWF0OiJ1cmwiLG5vdGU6IkludmFsaWQgcHJvdG9jb2wiLHBhdHRlcm46dC5wcm90b2NvbC5zb3VyY2UsaW5wdXQ6bi52YWx1ZSxpbnN0OmUsY29udGludWU6IXQuYWJvcnR9KSxuLnZhbHVlPXQubm9ybWFsaXplP3MuaHJlZjpkaShvKTtyZXR1cm59Y2F0Y2h7bi5pc3N1ZXMucHVzaCh7Y29kZToiaW52YWxpZF9mb3JtYXQiLGZvcm1hdDoidXJsIixpbnB1dDpuLnZhbHVlLGluc3Q6ZSxjb250aW51ZTohdC5hYm9ydH0pfX19KSxYcD1tKCIkWm9kRW1vamkiLChlLHQpPT57dC5wYXR0ZXJuPz8odC5wYXR0ZXJuPVhkKCkpLFEuaW5pdChlLHQpfSksZWg9bSgiJFpvZE5hbm9JRCIsKGUsdCk9PntpZih0Lmxlbmd0aCE9PXZvaWQgMCYmKCFOdW1iZXIuaXNJbnRlZ2VyKHQubGVuZ3RoKXx8dC5sZW5ndGg8MSkpdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIG5hbm9pZCBsZW5ndGg6ICR7dC5sZW5ndGh9YCk7dC5wYXR0ZXJuPz8odC5wYXR0ZXJuPXQubGVuZ3RoPT09dm9pZCAwP1ZkOkpkKHQubGVuZ3RoKSksUS5pbml0KGUsdCl9KSx0aD1tKCIkWm9kQ1VJRCIsKGUsdCk9Pnt0LnBhdHRlcm4/Pyh0LnBhdHRlcm49QmQpLFEuaW5pdChlLHQpfSksbmg9bSgiJFpvZENVSUQyIiwoZSx0KT0+e3QucGF0dGVybj8/KHQucGF0dGVybj1VZCksUS5pbml0KGUsdCl9KSxvaD1tKCIkWm9kVUxJRCIsKGUsdCk9Pnt0LnBhdHRlcm4/Pyh0LnBhdHRlcm49RmQpLFEuaW5pdChlLHQpfSksc2g9bSgiJFpvZFhJRCIsKGUsdCk9Pnt0LnBhdHRlcm4/Pyh0LnBhdHRlcm49SGQpLFEuaW5pdChlLHQpfSkscmg9bSgiJFpvZEtTVUlEIiwoZSx0KT0+e3QucGF0dGVybj8/KHQucGF0dGVybj1XZCksUS5pbml0KGUsdCl9KSxpaD1tKCIkWm9kSVNPRGF0ZVRpbWUiLChlLHQpPT57dC5wYXR0ZXJuPz8odC5wYXR0ZXJuPXBwKHQpKSxRLmluaXQoZSx0KX0pLGFoPW0oIiRab2RJU09EYXRlIiwoZSx0KT0+e3QucGF0dGVybj8/KHQucGF0dGVybj11cCksUS5pbml0KGUsdCl9KSxjaD1tKCIkWm9kSVNPVGltZSIsKGUsdCk9Pnt0LnBhdHRlcm4/Pyh0LnBhdHRlcm49ZHAodCkpLFEuaW5pdChlLHQpfSksbGg9bSgiJFpvZElTT0R1cmF0aW9uIiwoZSx0KT0+e3QucGF0dGVybj8/KHQucGF0dGVybj1LZCksUS5pbml0KGUsdCl9KSx1aD1tKCIkWm9kSVB2NCIsKGUsdCk9Pnt0LnBhdHRlcm4/Pyh0LnBhdHRlcm49ZXApLFEuaW5pdChlLHQpfSksV2I9L15bMC05YS1mQS1GOi5dKyQvO2Z1bmN0aW9uIHNhKGUpe3JldHVybiBXYi50ZXN0KGUpP29hKGBodHRwOi8vWyR7ZX1dYCk6ITF9Y29uc3QgZGg9bSgiJFpvZElQdjYiLChlLHQpPT57dC5wYXR0ZXJuPz8odC5wYXR0ZXJuPXRwKSxRLmluaXQoZSx0KSxlLl96b2QuY2hlY2s9bj0+e3NhKG4udmFsdWUpfHxuLmlzc3Vlcy5wdXNoKHtjb2RlOiJpbnZhbGlkX2Zvcm1hdCIsZm9ybWF0OiJpcHY2IixpbnB1dDpuLnZhbHVlLGluc3Q6ZSxjb250aW51ZTohdC5hYm9ydH0pfX0pLHBoPW0oIiRab2RNQUMiLChlLHQpPT57dC5wYXR0ZXJuPz8odC5wYXR0ZXJuPW5wKHQuZGVsaW1pdGVyKSksUS5pbml0KGUsdCl9KSxoaD1tKCIkWm9kQ0lEUnY0IiwoZSx0KT0+e3QucGF0dGVybj8/KHQucGF0dGVybj1vcCksUS5pbml0KGUsdCl9KTtmdW5jdGlvbiBtaChlKXtjb25zdCB0PWUuc3BsaXQoIi8iKTtpZih0Lmxlbmd0aCE9PTIpcmV0dXJuITE7Y29uc3RbbixvXT10O2lmKCFvKXJldHVybiExO2NvbnN0IHM9TnVtYmVyKG8pO3JldHVybmAke3N9YCE9PW98fHM8MHx8cz4xMjg/ITE6c2Eobil9Y29uc3QgZmg9bSgiJFpvZENJRFJ2NiIsKGUsdCk9Pnt0LnBhdHRlcm4/Pyh0LnBhdHRlcm49c3ApLFEuaW5pdChlLHQpLGUuX3pvZC5jaGVjaz1uPT57bWgobi52YWx1ZSl8fG4uaXNzdWVzLnB1c2goe2NvZGU6ImludmFsaWRfZm9ybWF0Iixmb3JtYXQ6ImNpZHJ2NiIsaW5wdXQ6bi52YWx1ZSxpbnN0OmUsY29udGludWU6IXQuYWJvcnR9KX19KTtmdW5jdGlvbiByYShlKXtpZihlPT09IiIpcmV0dXJuITA7aWYoL1xzLy50ZXN0KGUpfHxlLmxlbmd0aCU0IT09MClyZXR1cm4hMTt0cnl7cmV0dXJuIGF0b2IoZSksITB9Y2F0Y2h7cmV0dXJuITF9fWNvbnN0IGdoPS9eWzAtOWEtekEtWisvXSo9ezAsMn0kLyxiaD1tKCIkWm9kQmFzZTY0IiwoZSx0KT0+e3QucGF0dGVybj8/KHQucGF0dGVybj1naCksUS5pbml0KGUsdCksZS5fem9kLmNoZWNrPW49PntyYShuLnZhbHVlKXx8bi5pc3N1ZXMucHVzaCh7Y29kZToiaW52YWxpZF9mb3JtYXQiLGZvcm1hdDoiYmFzZTY0IixpbnB1dDpuLnZhbHVlLGluc3Q6ZSxjb250aW51ZTohdC5hYm9ydH0pfX0pLGlhPS9eW0EtWmEtejAtOV8tXSokLztmdW5jdGlvbiB2aChlKXtpZighaWEudGVzdChlKSlyZXR1cm4hMTtjb25zdCB0PWUucmVwbGFjZSgvWy1fXS9nLG89Pm89PT0iLSI/IisiOiIvIiksbj10LnBhZEVuZChNYXRoLmNlaWwodC5sZW5ndGgvNCkqNCwiPSIpO3JldHVybiByYShuKX1jb25zdCAkaD1tKCIkWm9kQmFzZTY0VVJMIiwoZSx0KT0+e3QucGF0dGVybj8/KHQucGF0dGVybj1pYSksUS5pbml0KGUsdCksZS5fem9kLmNoZWNrPW49Pnt2aChuLnZhbHVlKXx8bi5pc3N1ZXMucHVzaCh7Y29kZToiaW52YWxpZF9mb3JtYXQiLGZvcm1hdDoiYmFzZTY0dXJsIixpbnB1dDpuLnZhbHVlLGluc3Q6ZSxjb250aW51ZTohdC5hYm9ydH0pfX0pLHloPW0oIiRab2RFMTY0IiwoZSx0KT0+e3QucGF0dGVybj8/KHQucGF0dGVybj1hcCksUS5pbml0KGUsdCl9KSxWYj0vWy0gXS9nO2Z1bmN0aW9uIEpiKGUpe2xldCB0PWUubGVuZ3RoLG49MSxvPTA7Zm9yKDt0Oyl7Y29uc3Qgcz1lLmNoYXJDb2RlQXQoLS10KS00ODtuXj0xLG8rPW4/WzAsMiw0LDYsOCwxLDMsNSw3LDldW3NdOnN9cmV0dXJuIG8lMTA9PT0wfWZ1bmN0aW9uIGtoKGUpe3JldHVybiBLaS50ZXN0KGUpP0piKGUucmVwbGFjZShWYiwiIikpOiExfWNvbnN0IF9oPW0oIiRab2RDcmVkaXRDYXJkIiwoZSx0KT0+e3QucGF0dGVybj8/KHQucGF0dGVybj1LaSksUS5pbml0KGUsdCksZS5fem9kLmNoZWNrPW49PntraChuLnZhbHVlKXx8bi5pc3N1ZXMucHVzaCh7Y29kZToiaW52YWxpZF9mb3JtYXQiLGZvcm1hdDoiY3JlZGl0X2NhcmQiLGlucHV0Om4udmFsdWUsaW5zdDplLGNvbnRpbnVlOiF0LmFib3J0fSl9fSk7ZnVuY3Rpb24gS2IoZSl7bGV0IHQ9MDtjb25zdCBuPWUubGVuZ3RoO2ZvcihsZXQgbz00O288bjtvKyspe2NvbnN0IHM9ZS5jaGFyQ29kZUF0KG8pO3Q9KHM+PTY1P3QqMTAwKyhzLTU1KTp0KjEwKyhzLTQ4KSklOTd9Zm9yKGxldCBvPTA7bzw0O28rKyl7Y29uc3Qgcz1lLmNoYXJDb2RlQXQobyk7dD0ocz49NjU/dCoxMDArKHMtNTUpOnQqMTArKHMtNDgpKSU5N31yZXR1cm4gdD09PTF9ZnVuY3Rpb24gd2goZSl7cmV0dXJuIEdpLnRlc3QoZSk/S2IoZSk6ITF9Y29uc3QgU2g9bSgiJFpvZElCQU4iLChlLHQpPT57dC5wYXR0ZXJuPz8odC5wYXR0ZXJuPUdpKSxRLmluaXQoZSx0KSxlLl96b2QuY2hlY2s9bj0+e3doKG4udmFsdWUpfHxuLmlzc3Vlcy5wdXNoKHtjb2RlOiJpbnZhbGlkX2Zvcm1hdCIsZm9ybWF0OiJpYmFuIixpbnB1dDpuLnZhbHVlLGluc3Q6ZSxjb250aW51ZTohdC5hYm9ydH0pfX0pO2Z1bmN0aW9uIFRoKGUsdD1udWxsKXt0cnl7Y29uc3Qgbj1lLnNwbGl0KCIuIik7aWYobi5sZW5ndGghPT0zKXJldHVybiExO2NvbnN0W29dPW47aWYoIW8pcmV0dXJuITE7Y29uc3Qgcz1KU09OLnBhcnNlKGF0b2IobykpO3JldHVybiEoInR5cCJpbiBzJiZzPy50eXAhPT0iSldUInx8IXMuYWxnfHx0JiYoISgiYWxnImluIHMpfHxzLmFsZyE9PXQpKX1jYXRjaHtyZXR1cm4hMX19Y29uc3Qgemg9bSgiJFpvZEpXVCIsKGUsdCk9PntRLmluaXQoZSx0KSxlLl96b2QuY2hlY2s9bj0+e1RoKG4udmFsdWUsdC5hbGcpfHxuLmlzc3Vlcy5wdXNoKHtjb2RlOiJpbnZhbGlkX2Zvcm1hdCIsZm9ybWF0OiJqd3QiLGlucHV0Om4udmFsdWUsaW5zdDplLGNvbnRpbnVlOiF0LmFib3J0fSl9fSkseGg9bSgiJFpvZEN1c3RvbVN0cmluZ0Zvcm1hdCIsKGUsdCk9PntRLmluaXQoZSx0KSxlLl96b2QuY2hlY2s9bj0+e3QuZm4obi52YWx1ZSl8fG4uaXNzdWVzLnB1c2goe2NvZGU6ImludmFsaWRfZm9ybWF0Iixmb3JtYXQ6dC5mb3JtYXQsaW5wdXQ6bi52YWx1ZSxpbnN0OmUsY29udGludWU6IXQuYWJvcnR9KX19KSxhYT1tKCIkWm9kTnVtYmVyIiwoZSx0KT0+e1IuaW5pdChlLHQpLGUuX3pvZC5wYXR0ZXJuPWpzLGUuX3pvZC5wYXJzZT0obixvKT0+e2lmKHQuY29lcmNlKXRyeXtuLnZhbHVlPU51bWJlcihuLnZhbHVlKX1jYXRjaHt9Y29uc3Qgcz1uLnZhbHVlO2lmKHR5cGVvZiBzPT0ibnVtYmVyIiYmIU51bWJlci5pc05hTihzKSYmTnVtYmVyLmlzRmluaXRlKHMpKXJldHVybiBuO2NvbnN0IHI9dHlwZW9mIHM9PSJudW1iZXIiP051bWJlci5pc05hTihzKT8iTmFOIjpOdW1iZXIuaXNGaW5pdGUocyk/dm9pZCAwOlN0cmluZyhzKTp2b2lkIDA7cmV0dXJuIG4uaXNzdWVzLnB1c2goe2V4cGVjdGVkOiJudW1iZXIiLGNvZGU6ImludmFsaWRfdHlwZSIsaW5wdXQ6cyxpbnN0OmUsLi4ucj97cmVjZWl2ZWQ6cn06e319KSxufX0pLEloPW0oIiRab2ROdW1iZXJGb3JtYXQiLChlLHQpPT57U3AuaW5pdChlLHQpLGFhLmluaXQoZSx0KX0pLGNhPW0oIiRab2RCb29sZWFuIiwoZSx0KT0+e1IuaW5pdChlLHQpLGUuX3pvZC5wYXR0ZXJuPWJwLGUuX3pvZC5wYXJzZT0obixvKT0+e2lmKHQuY29lcmNlKXRyeXtuLnZhbHVlPSEhbi52YWx1ZX1jYXRjaHt9Y29uc3Qgcz1uLnZhbHVlO3JldHVybiB0eXBlb2Ygcz09ImJvb2xlYW4ifHxuLmlzc3Vlcy5wdXNoKHtleHBlY3RlZDoiYm9vbGVhbiIsY29kZToiaW52YWxpZF90eXBlIixpbnB1dDpzLGluc3Q6ZX0pLG59fSksbGE9bSgiJFpvZEJpZ0ludCIsKGUsdCk9PntSLmluaXQoZSx0KSxlLl96b2QucGF0dGVybj1mcCxlLl96b2QucGFyc2U9KG4sbyk9PntpZih0LmNvZXJjZSl0cnl7bi52YWx1ZT1CaWdJbnQobi52YWx1ZSl9Y2F0Y2h7fXJldHVybiB0eXBlb2Ygbi52YWx1ZT09ImJpZ2ludCJ8fG4uaXNzdWVzLnB1c2goe2V4cGVjdGVkOiJiaWdpbnQiLGNvZGU6ImludmFsaWRfdHlwZSIsaW5wdXQ6bi52YWx1ZSxpbnN0OmV9KSxufX0pLEFoPW0oIiRab2RCaWdJbnRGb3JtYXQiLChlLHQpPT57VHAuaW5pdChlLHQpLGxhLmluaXQoZSx0KX0pLENoPW0oIiRab2RTeW1ib2wiLChlLHQpPT57Ui5pbml0KGUsdCksZS5fem9kLnBhcnNlPShuLG8pPT57Y29uc3Qgcz1uLnZhbHVlO3JldHVybiB0eXBlb2Ygcz09InN5bWJvbCJ8fG4uaXNzdWVzLnB1c2goe2V4cGVjdGVkOiJzeW1ib2wiLGNvZGU6ImludmFsaWRfdHlwZSIsaW5wdXQ6cyxpbnN0OmV9KSxufX0pLFBoPW0oIiRab2RVbmRlZmluZWQiLChlLHQpPT57Ui5pbml0KGUsdCksZS5fem9kLnBhdHRlcm49JHAsZS5fem9kLnZhbHVlcz1uZXcgU2V0KFt2b2lkIDBdKSxlLl96b2QucGFyc2U9KG4sbyk9Pntjb25zdCBzPW4udmFsdWU7cmV0dXJuIHR5cGVvZiBzPiJ1Inx8bi5pc3N1ZXMucHVzaCh7ZXhwZWN0ZWQ6InVuZGVmaW5lZCIsY29kZToiaW52YWxpZF90eXBlIixpbnB1dDpzLGluc3Q6ZX0pLG59fSksRWg9bSgiJFpvZE51bGwiLChlLHQpPT57Ui5pbml0KGUsdCksZS5fem9kLnBhdHRlcm49dnAsZS5fem9kLnZhbHVlcz1uZXcgU2V0KFtudWxsXSksZS5fem9kLnBhcnNlPShuLG8pPT57Y29uc3Qgcz1uLnZhbHVlO3JldHVybiBzPT09bnVsbHx8bi5pc3N1ZXMucHVzaCh7ZXhwZWN0ZWQ6Im51bGwiLGNvZGU6ImludmFsaWRfdHlwZSIsaW5wdXQ6cyxpbnN0OmV9KSxufX0pLE9oPW0oIiRab2RBbnkiLChlLHQpPT57Ui5pbml0KGUsdCksZS5fem9kLnBhcnNlPW49Pm59KSxSaD1tKCIkWm9kVW5rbm93biIsKGUsdCk9PntSLmluaXQoZSx0KSxlLl96b2QucGFyc2U9bj0+bn0pLE5oPW0oIiRab2ROZXZlciIsKGUsdCk9PntSLmluaXQoZSx0KSxlLl96b2QucGFyc2U9KG4sbyk9PihuLmlzc3Vlcy5wdXNoKHtleHBlY3RlZDoibmV2ZXIiLGNvZGU6ImludmFsaWRfdHlwZSIsaW5wdXQ6bi52YWx1ZSxpbnN0OmV9KSxuKX0pLFpoPW0oIiRab2RWb2lkIiwoZSx0KT0+e1IuaW5pdChlLHQpLGUuX3pvZC5wYXJzZT0obixvKT0+e2NvbnN0IHM9bi52YWx1ZTtyZXR1cm4gdHlwZW9mIHM+InUifHxuLmlzc3Vlcy5wdXNoKHtleHBlY3RlZDoidm9pZCIsY29kZToiaW52YWxpZF90eXBlIixpbnB1dDpzLGluc3Q6ZX0pLG59fSksTWg9bSgiJFpvZERhdGUiLChlLHQpPT57Ui5pbml0KGUsdCksZS5fem9kLnBhcnNlPShuLG8pPT57aWYodC5jb2VyY2UpdHJ5e24udmFsdWU9bmV3IERhdGUobi52YWx1ZSl9Y2F0Y2h7fWNvbnN0IHM9bi52YWx1ZSxyPXMgaW5zdGFuY2VvZiBEYXRlO3JldHVybiByJiYhTnVtYmVyLmlzTmFOKHMuZ2V0VGltZSgpKXx8bi5pc3N1ZXMucHVzaCh7ZXhwZWN0ZWQ6ImRhdGUiLGNvZGU6ImludmFsaWRfdHlwZSIsaW5wdXQ6cywuLi5yP3tyZWNlaXZlZDoiSW52YWxpZCBEYXRlIn06e30saW5zdDplfSksbn19KTtmdW5jdGlvbiB5dShlLHQsbil7ZS5pc3N1ZXMubGVuZ3RoJiZ0Lmlzc3Vlcy5wdXNoKC4uLlJlKG4sZS5pc3N1ZXMpKSx0LnZhbHVlW25dPWUudmFsdWV9Y29uc3Qgamg9bSgiJFpvZEFycmF5IiwoZSx0KT0+e1IuaW5pdChlLHQpO2NvbnN0IG49a2UubWVtb2l6ZXI7bj8uYXR0YWNoKGUpLGUuX3pvZC5wYXJzZT0obyxzKT0+e2NvbnN0IHI9by52YWx1ZTtpZighQXJyYXkuaXNBcnJheShyKSlyZXR1cm4gby5pc3N1ZXMucHVzaCh7ZXhwZWN0ZWQ6ImFycmF5Iixjb2RlOiJpbnZhbGlkX3R5cGUiLGlucHV0OnIsaW5zdDplfSksbztvLnZhbHVlPW4/bi5hbGxvYyhlLG8sQXJyYXkoci5sZW5ndGgpLHMpOkFycmF5KHIubGVuZ3RoKTtjb25zdCBpPVtdLGE9cz8uYWJvcnRFYXJseTtmb3IobGV0IGQ9MDtkPHIubGVuZ3RoO2QrKyl7Y29uc3QgdT1yW2RdLHA9dC5lbGVtZW50Ll96b2QucnVuKHt2YWx1ZTp1LGlzc3VlczpbXX0scyk7aWYocCBpbnN0YW5jZW9mIFByb21pc2UpaS5wdXNoKHAudGhlbihoPT55dShoLG8sZCkpKTtlbHNlIGlmKHl1KHAsbyxkKSxhJiZwLmlzc3Vlcy5sZW5ndGghPT0wJiZTZShwKSlicmVha31yZXR1cm4gaS5sZW5ndGg/UHJvbWlzZS5hbGwoaSkudGhlbigoKT0+byk6b319KTtmdW5jdGlvbiB1cyhlLHQsbixvLHMscil7Y29uc3QgaT1uIGluIG8sYT1yPT09Im9wdGlvbmFsIjtpZighKCFpJiZhJiZzPT09Im9wdGlvbmFsIikpe2lmKGUuaXNzdWVzLmxlbmd0aCl7aWYocyE9PXZvaWQgMCYmYSYmIWkpcmV0dXJuO3QuaXNzdWVzLnB1c2goLi4uUmUobixlLmlzc3VlcykpfWlmKCFpJiZzPT09dm9pZCAwKXtlLmlzc3Vlcy5sZW5ndGh8fHQuaXNzdWVzLnB1c2goe2NvZGU6ImludmFsaWRfdHlwZSIsZXhwZWN0ZWQ6Im5vbm9wdGlvbmFsIixpbnB1dDp2b2lkIDAscGF0aDpbbl19KTtyZXR1cm59ZS52YWx1ZT09PXZvaWQgMD8oaXx8cz09PSJkZWZhdWx0ZWQiJiYhYSkmJih0LnZhbHVlW25dPXZvaWQgMCk6dC52YWx1ZVtuXT1lLnZhbHVlfX1jb25zdCBHYj1bXTtmdW5jdGlvbiBxaChlKXtjb25zdCB0PU9iamVjdC5rZXlzKGUuc2hhcGUpLG49T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlLnNoYXBlKSxvPW4ubGVuZ3RoP246R2Iscz1vLmxlbmd0aD9bLi4udCwuLi5vXTp0O2Zvcihjb25zdCBpIG9mIHMpaWYoIWUuc2hhcGU/LltpXT8uX3pvZD8udHJhaXRzPy5oYXMoIiRab2RUeXBlIikpdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGVsZW1lbnQgYXQga2V5ICIke1N0cmluZyhpKX0iOiBleHBlY3RlZCBhIFpvZCBzY2hlbWFgKTtjb25zdCByPXlkKGUuc2hhcGUpO3JldHVybnsuLi5lLGFsbEtleXM6cyxzeW1ib2xLZXlzOm8sa2V5U2V0Om5ldyBTZXQodCksbnVtS2V5czp0Lmxlbmd0aCxvcHRpb25hbEtleXM6bmV3IFNldChyKX19ZnVuY3Rpb24gTGgoZSx0LG4sbyxzLHIsaSl7Y29uc3QgYT1bXSxkPXMua2V5U2V0LHU9cy5jYXRjaGFsbC5fem9kLHA9dS5kZWYudHlwZSxoPXUub3B0aW4sYj11Lm9wdG91dDtsZXQgJD0wO2Zvcihjb25zdCBrIGluIHQpe2lmKGkmJm4uaXNzdWVzLmxlbmd0aCE9PSQpe2lmKFNlKG4sJCkpYnJlYWs7JD1uLmlzc3Vlcy5sZW5ndGh9aWYoZC5oYXMoaykpY29udGludWU7aWYoaz09PSJfX3Byb3RvX18iKXtwPT09Im5ldmVyIiYmYS5wdXNoKGspO2NvbnRpbnVlfWlmKHA9PT0ibmV2ZXIiKXthLnB1c2goayk7Y29udGludWV9Y29uc3QgVD11LnJ1bih7dmFsdWU6dFtrXSxpc3N1ZXM6W119LG8pO1QgaW5zdGFuY2VvZiBQcm9taXNlP2UucHVzaChULnRoZW4oXz0+dXMoXyxuLGssdCxoLGIpKSk6dXMoVCxuLGssdCxoLGIpfXJldHVybiBhLmxlbmd0aCYmbi5pc3N1ZXMucHVzaCh7Y29kZToidW5yZWNvZ25pemVkX2tleXMiLGtleXM6YSxpbnB1dDp0LGluc3Q6cixjb250aW51ZTohMH0pLGUubGVuZ3RoP1Byb21pc2UuYWxsKGUpLnRoZW4oKCk9Pm4pOm59Y29uc3QgRGg9bSgiJFpvZE9iamVjdCIsKGUsdCk9PntSLmluaXQoZSx0KTtjb25zdCBuPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCwic2hhcGUiKSxvPW4/LmdldD9uLmdldC5yYXc6dC5zaGFwZT8/e307aWYobyl7Y29uc3QgdT0oKT0+e2NvbnN0IHA9ey4uLm99O3JldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwic2hhcGUiLHt2YWx1ZTpwfSksdS5yYXc9cCxwfTt1LnJhdz1vLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJzaGFwZSIse2dldDp1fSl9Y29uc3Qgcz1qbigoKT0+cWgodCkpO0woZSwicHJvcFZhbHVlcyIsdT0+e2NvbnN0IHA9dS5kZWYuc2hhcGUsaD17fTtmb3IoY29uc3QgYiBpbiBwKXtjb25zdCAkPXBbYl0uX3pvZDtpZigkLnZhbHVlcyl7T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGgsYil8fEF0KGgsYixuZXcgU2V0KTtmb3IoY29uc3QgayBvZiAkLnZhbHVlcyloW2JdLmFkZChrKTskLm9wdGluIT09dm9pZCAwJiZoW2JdLmFkZCh2b2lkIDApfX1yZXR1cm4gaH0pO2NvbnN0IHI9RHQsaT10LmNhdGNoYWxsO2xldCBhO2NvbnN0IGQ9a2UubWVtb2l6ZXI7ZD8uYXR0YWNoKGUpLGUuX3pvZC5wYXJzZT0odSxwKT0+e2E/PyhhPXMudmFsdWUpO2NvbnN0IGg9dS52YWx1ZTtpZighcihoKSlyZXR1cm4gdS5pc3N1ZXMucHVzaCh7ZXhwZWN0ZWQ6Im9iamVjdCIsY29kZToiaW52YWxpZF90eXBlIixpbnB1dDpoLGluc3Q6ZX0pLHU7dS52YWx1ZT1kP2QuYWxsb2MoZSx1LHt9LHApOnt9O2NvbnN0IGI9W10sJD1hLnNoYXBlLGs9cD8uYWJvcnRFYXJseTtsZXQgVD11Lmlzc3Vlcy5sZW5ndGg7Zm9yKGNvbnN0IF8gb2YgYS5hbGxLZXlzKXtpZihrJiZ1Lmlzc3Vlcy5sZW5ndGghPT1UKXtpZihTZSh1LFQpKWJyZWFrO1Q9dS5pc3N1ZXMubGVuZ3RofWlmKF89PT0iX19wcm90b19fIiljb250aW51ZTtjb25zdCB4PSRbX10sQT14Ll96b2Qub3B0aW4sRj14Ll96b2Qub3B0b3V0LGFlPXguX3pvZC5ydW4oe3ZhbHVlOmhbX10saXNzdWVzOltdfSxwKTthZSBpbnN0YW5jZW9mIFByb21pc2U/Yi5wdXNoKGFlLnRoZW4odGU9PnVzKHRlLHUsXyxoLEEsRikpKTp1cyhhZSx1LF8saCxBLEYpfXJldHVybiBpP0xoKGIsaCx1LHAscy52YWx1ZSxlLGs9PT0hMCk6Yi5sZW5ndGg/UHJvbWlzZS5hbGwoYikudGhlbigoKT0+dSk6dX19KSxCaD1tKCIkWm9kT2JqZWN0SklUIiwoZSx0KT0+e0RoLmluaXQoZSx0KTtjb25zdCBuPWUuX3pvZC5wYXJzZSxvPWpuKCgpPT5xaCh0KSkscz1rZS5tZW1vaXplcixyPSQ9Pntjb25zdCBrPW8udmFsdWUsVD1rLnN5bWJvbEtleXMsXz1uZXcgQnAoWyJwYXlsb2FkIiwiY3R4Il0se3NoYXBlOiQsaW5zdDplLG1lbW86cyxzeW1zOlR9KSx4PXRlPT5gc2hhcGVbJHt0ZX1dLl96b2QucnVuKHsgdmFsdWU6IGlucHV0WyR7dGV9XSwgaXNzdWVzOiBbXSB9LCBjdHgpYCxBPSh0ZSxIKT0+YAogICAgICAgICAgbGV0ICR7dGV9X2FiID0gZmFsc2U7CiAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8ICR7dGV9Lmlzc3Vlcy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICBjb25zdCBpc3MgPSAke3RlfS5pc3N1ZXNbaV07CiAgICAgICAgICAgIGlzcy5wYXRoID0gaXNzLnBhdGggPyBbJHtIfSwgLi4uaXNzLnBhdGhdIDogWyR7SH1dOwogICAgICAgICAgICBwYXlsb2FkLmlzc3Vlcy5wdXNoKGlzcyk7CiAgICAgICAgICAgIGlmIChpc3MuY29udGludWUgIT09IHRydWUpICR7dGV9X2FiID0gdHJ1ZTsKICAgICAgICAgIH0KICAgICAgICAgIGlmICgke3RlfV9hYiAmJiBjdHggJiYgY3R4LmFib3J0RWFybHkpIHsKICAgICAgICAgICAgcGF5bG9hZC52YWx1ZSA9IG5ld1Jlc3VsdDsKICAgICAgICAgICAgcmV0dXJuIHBheWxvYWQ7CiAgICAgICAgICB9YDtfLndyaXRlKCJjb25zdCBpbnB1dCA9IHBheWxvYWQudmFsdWU7Iik7Y29uc3QgRj1PYmplY3QuY3JlYXRlKG51bGwpO2xldCBhZT0wO2Zvcihjb25zdCB0ZSBvZiBrLmFsbEtleXMpRlt0ZV09YGtleV8ke2FlKyt9YDtfLndyaXRlKHM/ImNvbnN0IG5ld1Jlc3VsdCA9IG1lbW8uYWxsb2MoaW5zdCwgcGF5bG9hZCwge30sIGN0eCk7IjoiY29uc3QgbmV3UmVzdWx0ID0ge307Iik7Zm9yKGNvbnN0IHRlIG9mIGsuYWxsS2V5cyl7aWYodGU9PT0iX19wcm90b19fIiljb250aW51ZTtjb25zdCBIPUZbdGVdLHplPXR5cGVvZiB0ZT09InN5bWJvbCI/YHN5bXNbJHtULmluZGV4T2YodGUpfV1gOmdkKHRlKSxFdD1gJHt6ZX0gaW4gaW5wdXRgLCRuPSRbdGVdLEI9JG4/Ll96b2Q/Lm9wdGluLHluPUIhPT12b2lkIDAsV289JG4/Ll96b2Q/Lm9wdG91dD09PSJvcHRpb25hbCI7aWYoXy53cml0ZShgY29uc3QgJHtIfSA9ICR7eCh6ZSl9O2ApLHluJiZXbyl7Y29uc3Qga249Qj09PSJvcHRpb25hbCI/YCR7SH1fcHJlc2VudGA6YCR7SH0udmFsdWUgIT09IHVuZGVmaW5lZCB8fCAke0h9X3ByZXNlbnRgO18ud3JpdGUoYAogICAgICAgIGNvbnN0ICR7SH1fcHJlc2VudCA9ICR7RXR9OwogICAgICAgIGlmICghJHtIfS5pc3N1ZXMubGVuZ3RoIHx8ICR7SH1fcHJlc2VudCkgewogICAgICAgICAgaWYgKCR7SH0uaXNzdWVzLmxlbmd0aCkgeyR7QShILHplKX0KICAgICAgICAgIH0KCiAgICAgICAgICBpZiAoJHtrbn0pIHsKICAgICAgICAgICAgbmV3UmVzdWx0WyR7emV9XSA9ICR7SH0udmFsdWU7CiAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgYCl9ZWxzZSB5bj8oXy53cml0ZShgCiAgICAgICAgaWYgKCR7SH0uaXNzdWVzLmxlbmd0aCkgeyR7QShILHplKX0KICAgICAgICB9CiAgICAgIGApLEI9PT0iZGVmYXVsdGVkIj9fLndyaXRlKGBuZXdSZXN1bHRbJHt6ZX1dID0gJHtIfS52YWx1ZTtgKTpfLndyaXRlKGAKICAgICAgICBpZiAoJHtIfS52YWx1ZSAhPT0gdW5kZWZpbmVkIHx8ICR7RXR9KSB7CiAgICAgICAgICBuZXdSZXN1bHRbJHt6ZX1dID0gJHtIfS52YWx1ZTsKICAgICAgICB9CiAgICAgIGApKTpfLndyaXRlKGAKICAgICAgICBjb25zdCAke0h9X3ByZXNlbnQgPSAke0V0fTsKICAgICAgICBpZiAoJHtIfS5pc3N1ZXMubGVuZ3RoKSB7JHtBKEgsemUpfQogICAgICAgIH0KICAgICAgICBpZiAoISR7SH1fcHJlc2VudCAmJiAhJHtIfS5pc3N1ZXMubGVuZ3RoKSB7CiAgICAgICAgICBwYXlsb2FkLmlzc3Vlcy5wdXNoKHsKICAgICAgICAgICAgY29kZTogImludmFsaWRfdHlwZSIsCiAgICAgICAgICAgIGV4cGVjdGVkOiAibm9ub3B0aW9uYWwiLAogICAgICAgICAgICBpbnB1dDogdW5kZWZpbmVkLAogICAgICAgICAgICBwYXRoOiBbJHt6ZX1dCiAgICAgICAgICB9KTsKICAgICAgICAgIGlmIChjdHggJiYgY3R4LmFib3J0RWFybHkpIHsKICAgICAgICAgICAgcGF5bG9hZC52YWx1ZSA9IG5ld1Jlc3VsdDsKICAgICAgICAgICAgcmV0dXJuIHBheWxvYWQ7CiAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoJHtIfV9wcmVzZW50KSB7CiAgICAgICAgICBuZXdSZXN1bHRbJHt6ZX1dID0gJHtIfS52YWx1ZTsKICAgICAgICB9CgogICAgICBgKX1yZXR1cm4gXy53cml0ZSgicGF5bG9hZC52YWx1ZSA9IG5ld1Jlc3VsdDsiKSxfLndyaXRlKCJyZXR1cm4gcGF5bG9hZDsiKSxfLmNvbXBpbGUoKX07bGV0IGk7Y29uc3QgYT1EdCxkPSFrZS5qaXRsZXNzLHA9ZCYmdmQudmFsdWUsaD10LmNhdGNoYWxsO2xldCBiO2UuX3pvZC5wYXJzZT0oJCxrKT0+e2I/PyhiPW8udmFsdWUpO2NvbnN0IFQ9JC52YWx1ZTtyZXR1cm4gYShUKT9kJiZwJiZrPy5hc3luYz09PSExJiZrLmppdGxlc3MhPT0hMD8oaXx8KGk9cih0LnNoYXBlKSksJD1pKCQsayksaD9MaChbXSxULCQsayxiLGUsaz8uYWJvcnRFYXJseT09PSEwKTokKTpuKCQsayk6KCQuaXNzdWVzLnB1c2goe2V4cGVjdGVkOiJvYmplY3QiLGNvZGU6ImludmFsaWRfdHlwZSIsaW5wdXQ6VCxpbnN0OmV9KSwkKX19KTtmdW5jdGlvbiBrdShlLHQsbixvKXtmb3IoY29uc3QgciBvZiBlKWlmKHIuaXNzdWVzLmxlbmd0aD09PTApcmV0dXJuIHQudmFsdWU9ci52YWx1ZSx0O2NvbnN0IHM9ZS5maWx0ZXIocj0+IVNlKHIpKTtyZXR1cm4gcy5sZW5ndGg9PT0xPyh0LnZhbHVlPXNbMF0udmFsdWUsc1swXSk6KHQuaXNzdWVzLnB1c2goe2NvZGU6ImludmFsaWRfdW5pb24iLGlucHV0OnQudmFsdWUsaW5zdDpuLGVycm9yczplLm1hcChyPT5yLmlzc3Vlcy5tYXAoaT0+amUoaSxvLGRlKCkpKSl9KSx0KX1jb25zdCBMcz1tKCIkWm9kVW5pb24iLChlLHQpPT57Ui5pbml0KGUsdCksTChlLCJvcHRpbiIsbz0+by5kZWYub3B0aW9ucy5zb21lKHM9PnMuX3pvZC5vcHRpbj09PSJkZWZhdWx0ZWQiKT8iZGVmYXVsdGVkIjpvLmRlZi5vcHRpb25zLnNvbWUocz0+cy5fem9kLm9wdGluIT09dm9pZCAwKT8ib3B0aW9uYWwiOnZvaWQgMCksTChlLCJvcHRvdXQiLG89Pm8uZGVmLm9wdGlvbnMuc29tZShzPT5zLl96b2Qub3B0b3V0PT09Im9wdGlvbmFsIik/Im9wdGlvbmFsIjp2b2lkIDApLEwoZSwidmFsdWVzIixvPT57aWYoby5kZWYub3B0aW9ucy5ldmVyeShzPT5zLl96b2QudmFsdWVzKSlyZXR1cm4gbmV3IFNldChvLmRlZi5vcHRpb25zLmZsYXRNYXAocz0+QXJyYXkuZnJvbShzLl96b2QudmFsdWVzKSkpfSksTChlLCJwYXR0ZXJuIixvPT57aWYoby5kZWYub3B0aW9ucy5ldmVyeShzPT5zLl96b2QucGF0dGVybikpe2NvbnN0IHM9by5kZWYub3B0aW9ucy5tYXAocj0+ci5fem9kLnBhdHRlcm4pO3JldHVybiBuZXcgUmVnRXhwKGBeKCR7cy5tYXAocj0+b3Qoci5zb3VyY2UpKS5qb2luKCJ8Iil9KSRgKX19KTtjb25zdCBuPXQub3B0aW9ucy5sZW5ndGg9PT0xP3Qub3B0aW9uc1swXS5fem9kLnJ1bjpudWxsO2UuX3pvZC5wYXJzZT0obyxzKT0+e2lmKG4pcmV0dXJuIG4obyxzKTtsZXQgcj0hMTtjb25zdCBpPVtdO2Zvcihjb25zdCBhIG9mIHQub3B0aW9ucyl7Y29uc3QgZD1hLl96b2QucnVuKHt2YWx1ZTpvLnZhbHVlLGlzc3VlczpbXX0scyk7aWYoZCBpbnN0YW5jZW9mIFByb21pc2UpaS5wdXNoKGQpLHI9ITA7ZWxzZXtpZihkLmlzc3Vlcy5sZW5ndGg9PT0wKXJldHVybiBkO2kucHVzaChkKX19cmV0dXJuIHI/UHJvbWlzZS5hbGwoaSkudGhlbihhPT5rdShhLG8sZSxzKSk6a3UoaSxvLGUscyl9fSk7ZnVuY3Rpb24gX3UoZSx0LG4sbyl7Y29uc3Qgcz1bXTtmb3IobGV0IHI9MDtyPGUubGVuZ3RoO3IrKyllW3JdLmlzc3Vlcy5sZW5ndGg9PT0wJiZzLnB1c2gocik7cmV0dXJuIHMubGVuZ3RoPT09MT8odC52YWx1ZT1lW3NbMF1dLnZhbHVlLHQpOihzLmxlbmd0aD09PTA/dC5pc3N1ZXMucHVzaCh7Y29kZToiaW52YWxpZF91bmlvbiIsaW5wdXQ6dC52YWx1ZSxpbnN0Om4sZXJyb3JzOmUubWFwKHI9PnIuaXNzdWVzLm1hcChpPT5qZShpLG8sZGUoKSkpKX0pOnQuaXNzdWVzLnB1c2goe2NvZGU6ImludmFsaWRfdW5pb24iLGlucHV0OnQudmFsdWUsaW5zdDpuLGVycm9yczpbXSxpbmNsdXNpdmU6ITEsbWF0Y2hlczpzfSksdCl9Y29uc3QgVWg9bSgiJFpvZFhvciIsKGUsdCk9PntMcy5pbml0KGUsdCksdC5pbmNsdXNpdmU9ITE7Y29uc3Qgbj10Lm9wdGlvbnMubGVuZ3RoPT09MT90Lm9wdGlvbnNbMF0uX3pvZC5ydW46bnVsbDtlLl96b2QucGFyc2U9KG8scyk9PntpZihuKXJldHVybiBuKG8scyk7bGV0IHI9ITE7Y29uc3QgaT1bXTtmb3IoY29uc3QgYSBvZiB0Lm9wdGlvbnMpe2NvbnN0IGQ9YS5fem9kLnJ1bih7dmFsdWU6by52YWx1ZSxpc3N1ZXM6W119LHMpO2QgaW5zdGFuY2VvZiBQcm9taXNlPyhpLnB1c2goZCkscj0hMCk6aS5wdXNoKGQpfXJldHVybiByP1Byb21pc2UuYWxsKGkpLnRoZW4oYT0+X3UoYSxvLGUscykpOl91KGksbyxlLHMpfX0pO2Z1bmN0aW9uIHVhKGUsdCl7Y29uc3Qgbj1lLl96b2Q7bGV0IG89bi5iYWcub3B0aW9uc01hcDtvfHwobz1GaChuLmRlZiksbi5iYWcub3B0aW9uc01hcD1vKTtjb25zdCBzPW8uZ2V0KHQpO2lmKHM9PT1udWxsKXRocm93IG5ldyBFcnJvcihgQW1iaWd1b3VzIGRpc2NyaW1pbmF0b3IgdmFsdWUgIiR7U3RyaW5nKHQpfSJgKTtyZXR1cm4gc31mdW5jdGlvbiBGaChlKXtjb25zdCB0PW5ldyBNYXA7Zm9yKGNvbnN0IG4gb2YgZS5vcHRpb25zKXtjb25zdCBvPW4uX3pvZC5wcm9wVmFsdWVzPy5bZS5kaXNjcmltaW5hdG9yXTtpZighb3x8by5zaXplPT09MCl0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgZGlzY3JpbWluYXRlZCB1bmlvbiBvcHRpb24gYXQgaW5kZXggIiR7ZS5vcHRpb25zLmluZGV4T2Yobil9ImApO2Zvcihjb25zdCBzIG9mIG8paWYodC5oYXMocykpe2lmKHMhPT12b2lkIDApdGhyb3cgbmV3IEVycm9yKGBEdXBsaWNhdGUgZGlzY3JpbWluYXRvciB2YWx1ZSAiJHtTdHJpbmcocyl9ImApO3Quc2V0KHMsbnVsbCl9ZWxzZSB0LnNldChzLG4pfXJldHVybiB0fWNvbnN0IEhoPW0oIiRab2REaXNjcmltaW5hdGVkVW5pb24iLChlLHQpPT57dC5pbmNsdXNpdmU9ITEsTHMuaW5pdChlLHQpO2NvbnN0IG49ZS5fem9kLnBhcnNlO0woZSwicHJvcFZhbHVlcyIscz0+e2NvbnN0IHI9e307bGV0IGk9MDtmb3IoY29uc3QgYSBvZiBzLmRlZi5vcHRpb25zKXtjb25zdCBkPWEuX3pvZC5wcm9wVmFsdWVzO2lmKCFkfHxPYmplY3Qua2V5cyhkKS5sZW5ndGg9PT0wKXRocm93IG5ldyBFcnJvcihgSW52YWxpZCBkaXNjcmltaW5hdGVkIHVuaW9uIG9wdGlvbiBhdCBpbmRleCAiJHtzLmRlZi5vcHRpb25zLmluZGV4T2YoYSl9ImApO2Rbcy5kZWYuZGlzY3JpbWluYXRvcl0/Lmhhcyh2b2lkIDApJiZpKys7Zm9yKGNvbnN0W3UscF1vZiBPYmplY3QuZW50cmllcyhkKSl7T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHIsdSl8fEF0KHIsdSxuZXcgU2V0KTtmb3IoY29uc3QgaCBvZiBwKXJbdV0uYWRkKGgpfX1yZXR1cm4hcy5kZWYudW5pb25GYWxsYmFjayYmaT4xJiZyW3MuZGVmLmRpc2NyaW1pbmF0b3JdPy5kZWxldGUodm9pZCAwKSxyfSksdC5vcHRpb25zLmZvckVhY2goKHMscik9Pntjb25zdCBpPVRzKHMuX3pvZC5kZWYpO2lmKGkmJiFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoaSx0LmRpc2NyaW1pbmF0b3IpKXRocm93IG5ldyBFcnJvcihgSW52YWxpZCBkaXNjcmltaW5hdGVkIHVuaW9uIG9wdGlvbiBhdCBpbmRleCAiJHtyfSJgKX0pO2NvbnN0IG89am4oKCk9PkZoKHQpKTtlLl96b2QucGFyc2U9KHMscik9Pntjb25zdCBpPXMudmFsdWU7aWYoIUR0KGkpKXJldHVybiBzLmlzc3Vlcy5wdXNoKHtjb2RlOiJpbnZhbGlkX3R5cGUiLGV4cGVjdGVkOiJvYmplY3QiLGlucHV0OmksaW5zdDplfSkscztjb25zdCBhPWk/Llt0LmRpc2NyaW1pbmF0b3JdLGQ9by52YWx1ZS5nZXQoYSk7cmV0dXJuIGQmJihhIT09dm9pZCAwfHxyLmRpcmVjdGlvbiE9PSJiYWNrd2FyZCIpP2QuX3pvZC5ydW4ocyxyKTp0LnVuaW9uRmFsbGJhY2t8fHIuZGlyZWN0aW9uPT09ImJhY2t3YXJkIj9uKHMscik6KHMuaXNzdWVzLnB1c2goe2NvZGU6ImludmFsaWRfdW5pb24iLGVycm9yczpbXSxub3RlOiJObyBtYXRjaGluZyBkaXNjcmltaW5hdG9yIixkaXNjcmltaW5hdG9yOnQuZGlzY3JpbWluYXRvcixvcHRpb25zOkFycmF5LmZyb20oby52YWx1ZS5rZXlzKCkpLmZpbHRlcih1PT5vLnZhbHVlLmdldCh1KSE9PW51bGwpLGlucHV0OmkscGF0aDpbdC5kaXNjcmltaW5hdG9yXSxpbnN0OmV9KSxzKX19KSxXaD1tKCIkWm9kSW50ZXJzZWN0aW9uIiwoZSx0KT0+e1IuaW5pdChlLHQpLGUuX3pvZC5wYXJzZT0obixvKT0+e2NvbnN0IHM9bi52YWx1ZSxyPXQubGVmdC5fem9kLnJ1bih7dmFsdWU6cyxpc3N1ZXM6W119LG8pLGk9dC5yaWdodC5fem9kLnJ1bih7dmFsdWU6cyxpc3N1ZXM6W119LG8pO3JldHVybiByIGluc3RhbmNlb2YgUHJvbWlzZXx8aSBpbnN0YW5jZW9mIFByb21pc2U/UHJvbWlzZS5hbGwoW3IsaV0pLnRoZW4oKFtkLHVdKT0+d3UobixkLHUpKTp3dShuLHIsaSl9fSk7ZnVuY3Rpb24gZHMoZSx0KXtpZihlPT09dClyZXR1cm57dmFsaWQ6ITAsZGF0YTplfTtpZihlIGluc3RhbmNlb2YgRGF0ZSYmdCBpbnN0YW5jZW9mIERhdGUmJitlPT0rdClyZXR1cm57dmFsaWQ6ITAsZGF0YTplfTtpZihydChlKSYmcnQodCkpe2NvbnN0IG49T2JqZWN0LmtleXModCksbz1PYmplY3Qua2V5cyhlKS5maWx0ZXIocj0+bi5pbmRleE9mKHIpIT09LTEpLHM9ey4uLmUsLi4udH07T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIl9fcHJvdG9fXyIpJiZkZWxldGUgcy5fX3Byb3RvX187Zm9yKGNvbnN0IHIgb2Ygbyl7aWYocj09PSJfX3Byb3RvX18iKWNvbnRpbnVlO2NvbnN0IGk9ZHMoZVtyXSx0W3JdKTtpZighaS52YWxpZClyZXR1cm57dmFsaWQ6ITEsbWVyZ2VFcnJvclBhdGg6W3IsLi4uaS5tZXJnZUVycm9yUGF0aF19O3Nbcl09aS5kYXRhfXJldHVybnt2YWxpZDohMCxkYXRhOnN9fWlmKEFycmF5LmlzQXJyYXkoZSkmJkFycmF5LmlzQXJyYXkodCkpe2lmKGUubGVuZ3RoIT09dC5sZW5ndGgpcmV0dXJue3ZhbGlkOiExLG1lcmdlRXJyb3JQYXRoOltdfTtjb25zdCBuPVtdO2ZvcihsZXQgbz0wO288ZS5sZW5ndGg7bysrKXtjb25zdCBzPWVbb10scj10W29dLGk9ZHMocyxyKTtpZighaS52YWxpZClyZXR1cm57dmFsaWQ6ITEsbWVyZ2VFcnJvclBhdGg6W28sLi4uaS5tZXJnZUVycm9yUGF0aF19O24ucHVzaChpLmRhdGEpfXJldHVybnt2YWxpZDohMCxkYXRhOm59fXJldHVybnt2YWxpZDohMSxtZXJnZUVycm9yUGF0aDpbXX19ZnVuY3Rpb24gd3UoZSx0LG4pe2NvbnN0IG89bmV3IE1hcDtsZXQgcztjb25zdCByPW5ldyBNYXAsaT0odSxwKT0+e2xldCBoO2lmKHUuY29kZT09PSJ1bnJlY29nbml6ZWRfa2V5cyImJiF1LnBhdGg/Lmxlbmd0aClzPz8ocz11KSxoPXUua2V5cztlbHNlIGlmKHUuY29kZT09PSJpbnZhbGlkX2tleSImJnUub3JpZ2luPT09InJlY29yZCImJnUucGF0aD8ubGVuZ3RoPT09MSl7Y29uc3QgYj1TdHJpbmcodS5wYXRoWzBdKTtyLmhhcyhiKXx8ci5zZXQoYix1KSxoPVtiXX1lbHNlIHJldHVybiExO2Zvcihjb25zdCBiIG9mIGgpby5oYXMoYil8fG8uc2V0KGIse30pLG8uZ2V0KGIpW3BdPSEwO3JldHVybiEwfTtmb3IoY29uc3QgdSBvZiB0Lmlzc3VlcylpKHUsImwiKXx8ZS5pc3N1ZXMucHVzaCh1KTtmb3IoY29uc3QgdSBvZiBuLmlzc3VlcylpKHUsInIiKXx8ZS5pc3N1ZXMucHVzaCh1KTtjb25zdCBhPVsuLi5vXS5maWx0ZXIoKFssdV0pPT51LmwmJnUucikubWFwKChbdV0pPT51KTtpZihhLmxlbmd0aCl7Y29uc3QgdT1zP2EuZmlsdGVyKHA9PnMua2V5cy5pbmNsdWRlcyhwKSk6W107dS5sZW5ndGgmJmUuaXNzdWVzLnB1c2goey4uLnMsa2V5czp1fSk7Zm9yKGNvbnN0IHAgb2YgYSkhdS5pbmNsdWRlcyhwKSYmci5oYXMocCkmJmUuaXNzdWVzLnB1c2goci5nZXQocCkpfWNvbnN0IGQ9ZHModC52YWx1ZSxuLnZhbHVlKTtpZighZC52YWxpZCl7aWYoU2UoZSkpcmV0dXJuIGU7dGhyb3cgbmV3IEVycm9yKGBVbm1lcmdhYmxlIGludGVyc2VjdGlvbi4gRXJyb3IgcGF0aDogJHtKU09OLnN0cmluZ2lmeShkLm1lcmdlRXJyb3JQYXRoKX1gKX1yZXR1cm4gZS52YWx1ZT1kLmRhdGEsZX1jb25zdCBkYT1tKCIkWm9kVHVwbGUiLChlLHQpPT57Ui5pbml0KGUsdCk7Y29uc3Qgbj10Lml0ZW1zLG89a2UubWVtb2l6ZXI7bz8uYXR0YWNoKGUpLGUuX3pvZC5wYXJzZT0ocyxyKT0+e2NvbnN0IGk9cy52YWx1ZTtpZighQXJyYXkuaXNBcnJheShpKSlyZXR1cm4gcy5pc3N1ZXMucHVzaCh7aW5wdXQ6aSxpbnN0OmUsZXhwZWN0ZWQ6InR1cGxlIixjb2RlOiJpbnZhbGlkX3R5cGUifSkscztzLnZhbHVlPW8/by5hbGxvYyhlLHMsW10scik6W107Y29uc3QgYT1bXSxkPVN1KG4sIm9wdGluIiksdT1TdShuLCJvcHRvdXQiKTtpZighdC5yZXN0KXtpZihpLmxlbmd0aDxkKXJldHVybiBzLmlzc3Vlcy5wdXNoKHtjb2RlOiJ0b29fc21hbGwiLG1pbmltdW06ZCxpbmNsdXNpdmU6ITAsaW5wdXQ6aSxpbnN0OmUsb3JpZ2luOiJhcnJheSJ9KSxzO2kubGVuZ3RoPm4ubGVuZ3RoJiZzLmlzc3Vlcy5wdXNoKHtjb2RlOiJ0b29fYmlnIixtYXhpbXVtOm4ubGVuZ3RoLGluY2x1c2l2ZTohMCxpbnB1dDppLGluc3Q6ZSxvcmlnaW46ImFycmF5In0pfWNvbnN0IHA9bmV3IEFycmF5KG4ubGVuZ3RoKSxoPXQucmVzdD9yPy5hYm9ydEVhcmx5OnZvaWQgMDtsZXQgYj0hMTtmb3IobGV0ICQ9MDskPG4ubGVuZ3RoOyQrKyl7Y29uc3Qgaz1uWyRdLl96b2QucnVuKHt2YWx1ZTppWyRdLGlzc3VlczpbXX0scik7ayBpbnN0YW5jZW9mIFByb21pc2U/YS5wdXNoKGsudGhlbihUPT57cFskXT1UfSkpOihwWyRdPWssaCYmIWImJmsuaXNzdWVzLmxlbmd0aCYmKGI9U2UoaykpKX1pZih0LnJlc3QmJiFiKXtsZXQgJD1uLmxlbmd0aC0xO2NvbnN0IGs9aS5zbGljZShuLmxlbmd0aCk7bGV0IFQ9cy5pc3N1ZXMubGVuZ3RoO2Zvcihjb25zdCBfIG9mIGspe2lmKGgmJnMuaXNzdWVzLmxlbmd0aCE9PVQpe2lmKFNlKHMsVCkpYnJlYWs7VD1zLmlzc3Vlcy5sZW5ndGh9JCsrO2NvbnN0IHg9dC5yZXN0Ll96b2QucnVuKHt2YWx1ZTpfLGlzc3VlczpbXX0scik7eCBpbnN0YW5jZW9mIFByb21pc2U/YS5wdXNoKHgudGhlbihBPT5UdShBLHMsJCkpKTpUdSh4LHMsJCl9fXJldHVybiBhLmxlbmd0aD9Qcm9taXNlLmFsbChhKS50aGVuKCgpPT56dShwLHMsbixpLHUpKTp6dShwLHMsbixpLHUpfX0pO2Z1bmN0aW9uIFN1KGUsdCl7Zm9yKGxldCBuPWUubGVuZ3RoLTE7bj49MDtuLS0paWYoISh0PT09Im9wdGluIj9lW25dLl96b2Qub3B0aW4hPT12b2lkIDA6ZVtuXS5fem9kLm9wdG91dD09PSJvcHRpb25hbCIpKXJldHVybiBuKzE7cmV0dXJuIDB9ZnVuY3Rpb24gVHUoZSx0LG4pe2UuaXNzdWVzLmxlbmd0aCYmdC5pc3N1ZXMucHVzaCguLi5SZShuLGUuaXNzdWVzKSksdC52YWx1ZVtuXT1lLnZhbHVlfWZ1bmN0aW9uIHp1KGUsdCxuLG8scyl7Zm9yKGxldCByPTA7cjxuLmxlbmd0aDtyKyspe2NvbnN0IGk9ZVtyXSxhPXI8by5sZW5ndGg7aWYoIWEmJnI+PXMmJm5bcl0uX3pvZC5vcHRpbj09PSJvcHRpb25hbCIpe3QudmFsdWUubGVuZ3RoPXI7YnJlYWt9aWYoaS5pc3N1ZXMubGVuZ3RoKXtpZighYSYmcj49cyl7dC52YWx1ZS5sZW5ndGg9cjticmVha310Lmlzc3Vlcy5wdXNoKC4uLlJlKHIsaS5pc3N1ZXMpKX10LnZhbHVlW3JdPWkudmFsdWV9Zm9yKGxldCByPXQudmFsdWUubGVuZ3RoLTE7cj49by5sZW5ndGgmJihuW3JdLl96b2Qub3B0b3V0PT09Im9wdGlvbmFsIiYmdC52YWx1ZVtyXT09PXZvaWQgMCk7ci0tKXQudmFsdWUubGVuZ3RoPXI7cmV0dXJuIHR9Y29uc3QgVmg9bSgiJFpvZFJlY29yZCIsKGUsdCk9PntSLmluaXQoZSx0KTtjb25zdCBuPWtlLm1lbW9pemVyO24/LmF0dGFjaChlKSxlLl96b2QucGFyc2U9KG8scyk9Pntjb25zdCByPW8udmFsdWU7aWYoIXJ0KHIpKXJldHVybiBvLmlzc3Vlcy5wdXNoKHtleHBlY3RlZDoicmVjb3JkIixjb2RlOiJpbnZhbGlkX3R5cGUiLGlucHV0OnIsaW5zdDplfSksbztjb25zdCBpPVtdLGE9dC5rZXlUeXBlLl96b2QudmFsdWVzO2lmKGEmJiF0LnBhcnRpYWwpe28udmFsdWU9bj9uLmFsbG9jKGUsbyx7fSxzKTp7fTtjb25zdCBkPW5ldyBTZXQ7Zm9yKGNvbnN0IHAgb2YgYSlpZih0eXBlb2YgcD09InN0cmluZyJ8fHR5cGVvZiBwPT0ibnVtYmVyInx8dHlwZW9mIHA9PSJzeW1ib2wiKXtpZihkLmFkZCh0eXBlb2YgcD09Im51bWJlciI/cC50b1N0cmluZygpOnApLHA9PT0iX19wcm90b19fIiljb250aW51ZTtjb25zdCBoPXQua2V5VHlwZS5fem9kLnJ1bih7dmFsdWU6cCxpc3N1ZXM6W119LHMpO2lmKGggaW5zdGFuY2VvZiBQcm9taXNlKXRocm93IG5ldyBFcnJvcigiQXN5bmMgc2NoZW1hcyBub3Qgc3VwcG9ydGVkIGluIG9iamVjdCBrZXlzIGN1cnJlbnRseSIpO2lmKGguaXNzdWVzLmxlbmd0aCl7by5pc3N1ZXMucHVzaCh7Y29kZToiaW52YWxpZF9rZXkiLG9yaWdpbjoicmVjb3JkIixpc3N1ZXM6aC5pc3N1ZXMubWFwKGs9PmplKGsscyxkZSgpKSksaW5wdXQ6cCxwYXRoOltwXSxpbnN0OmV9KTtjb250aW51ZX1jb25zdCBiPWgudmFsdWU7aWYoYj09PSJfX3Byb3RvX18iKWNvbnRpbnVlO2NvbnN0ICQ9dC52YWx1ZVR5cGUuX3pvZC5ydW4oe3ZhbHVlOnJbcF0saXNzdWVzOltdfSxzKTskIGluc3RhbmNlb2YgUHJvbWlzZT9pLnB1c2goJC50aGVuKGs9PntrLmlzc3Vlcy5sZW5ndGgmJm8uaXNzdWVzLnB1c2goLi4uUmUocCxrLmlzc3VlcykpLG8udmFsdWVbYl09ay52YWx1ZX0pKTooJC5pc3N1ZXMubGVuZ3RoJiZvLmlzc3Vlcy5wdXNoKC4uLlJlKHAsJC5pc3N1ZXMpKSxvLnZhbHVlW2JdPSQudmFsdWUpfWxldCB1O2Zvcihjb25zdCBwIGluIHIpaWYoIWQuaGFzKHApKWlmKHQubW9kZT09PSJsb29zZSIpe2lmKHA9PT0iX19wcm90b19fIiljb250aW51ZTtvLnZhbHVlW3BdPXJbcF19ZWxzZSB1PXU/P1tdLHUucHVzaChwKTt1JiZ1Lmxlbmd0aD4wJiZvLmlzc3Vlcy5wdXNoKHtjb2RlOiJ1bnJlY29nbml6ZWRfa2V5cyIsaW5wdXQ6cixpbnN0OmUsa2V5czp1LGNvbnRpbnVlOiEwfSl9ZWxzZXtvLnZhbHVlPW4/bi5hbGxvYyhlLG8se30scyk6e307bGV0IGQ7Zm9yKGNvbnN0IHUgb2YgUmVmbGVjdC5vd25LZXlzKHIpKXtpZih1PT09Il9fcHJvdG9fXyJ8fCFPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwocix1KSljb250aW51ZTtsZXQgcD10LmtleVR5cGUuX3pvZC5ydW4oe3ZhbHVlOnUsaXNzdWVzOltdfSxzKTtpZihwIGluc3RhbmNlb2YgUHJvbWlzZSl0aHJvdyBuZXcgRXJyb3IoIkFzeW5jIHNjaGVtYXMgbm90IHN1cHBvcnRlZCBpbiBvYmplY3Qga2V5cyBjdXJyZW50bHkiKTtpZih0eXBlb2YgdT09InN0cmluZyImJmpzLnRlc3QodSkmJnAuaXNzdWVzLmxlbmd0aCl7Y29uc3Qgaz10LmtleVR5cGUuX3pvZC5ydW4oe3ZhbHVlOk51bWJlcih1KSxpc3N1ZXM6W119LHMpO2lmKGsgaW5zdGFuY2VvZiBQcm9taXNlKXRocm93IG5ldyBFcnJvcigiQXN5bmMgc2NoZW1hcyBub3Qgc3VwcG9ydGVkIGluIG9iamVjdCBrZXlzIGN1cnJlbnRseSIpO2suaXNzdWVzLmxlbmd0aD09PTAmJihwPWspfWlmKHAuaXNzdWVzLmxlbmd0aCl7dC5tb2RlPT09Imxvb3NlIj9vLnZhbHVlW3VdPXJbdV06YT8oZD1kPz9bXSxkLnB1c2godSkpOm8uaXNzdWVzLnB1c2goe2NvZGU6ImludmFsaWRfa2V5IixvcmlnaW46InJlY29yZCIsaXNzdWVzOnAuaXNzdWVzLm1hcChrPT5qZShrLHMsZGUoKSkpLGlucHV0OnUscGF0aDpbdV0saW5zdDplfSk7Y29udGludWV9Y29uc3QgYj1wLnZhbHVlO2lmKGI9PT0iX19wcm90b19fIiljb250aW51ZTtjb25zdCAkPXQudmFsdWVUeXBlLl96b2QucnVuKHt2YWx1ZTpyW3VdLGlzc3VlczpbXX0scyk7JCBpbnN0YW5jZW9mIFByb21pc2U/aS5wdXNoKCQudGhlbihrPT57ay5pc3N1ZXMubGVuZ3RoJiZvLmlzc3Vlcy5wdXNoKC4uLlJlKHUsay5pc3N1ZXMpKSxvLnZhbHVlW2JdPWsudmFsdWV9KSk6KCQuaXNzdWVzLmxlbmd0aCYmby5pc3N1ZXMucHVzaCguLi5SZSh1LCQuaXNzdWVzKSksby52YWx1ZVtiXT0kLnZhbHVlKX1kJiZkLmxlbmd0aD4wJiZvLmlzc3Vlcy5wdXNoKHtjb2RlOiJ1bnJlY29nbml6ZWRfa2V5cyIsaW5wdXQ6cixpbnN0OmUsa2V5czpkLGNvbnRpbnVlOiEwfSl9cmV0dXJuIGkubGVuZ3RoP1Byb21pc2UuYWxsKGkpLnRoZW4oKCk9Pm8pOm99fSksSmg9bSgiJFpvZE1hcCIsKGUsdCk9PntSLmluaXQoZSx0KTtjb25zdCBuPWtlLm1lbW9pemVyO24/LmF0dGFjaChlKSxlLl96b2QucGFyc2U9KG8scyk9Pntjb25zdCByPW8udmFsdWU7aWYoIShyIGluc3RhbmNlb2YgTWFwKSlyZXR1cm4gby5pc3N1ZXMucHVzaCh7ZXhwZWN0ZWQ6Im1hcCIsY29kZToiaW52YWxpZF90eXBlIixpbnB1dDpyLGluc3Q6ZX0pLG87Y29uc3QgaT1bXTtvLnZhbHVlPW4/bi5hbGxvYyhlLG8sbmV3IE1hcCxzKTpuZXcgTWFwO2NvbnN0IGE9cz8uYWJvcnRFYXJseTtsZXQgZD1vLmlzc3Vlcy5sZW5ndGg7Zm9yKGNvbnN0W3UscF1vZiByKXtpZihhJiZvLmlzc3Vlcy5sZW5ndGghPT1kKXtpZihTZShvLGQpKWJyZWFrO2Q9by5pc3N1ZXMubGVuZ3RofWNvbnN0IGg9dC5rZXlUeXBlLl96b2QucnVuKHt2YWx1ZTp1LGlzc3VlczpbXX0scyksYj10LnZhbHVlVHlwZS5fem9kLnJ1bih7dmFsdWU6cCxpc3N1ZXM6W119LHMpO2ggaW5zdGFuY2VvZiBQcm9taXNlfHxiIGluc3RhbmNlb2YgUHJvbWlzZT9pLnB1c2goUHJvbWlzZS5hbGwoW2gsYl0pLnRoZW4oKFskLGtdKT0+e3h1KCQsayxvLHUscixlLHMpfSkpOnh1KGgsYixvLHUscixlLHMpfXJldHVybiBpLmxlbmd0aD9Qcm9taXNlLmFsbChpKS50aGVuKCgpPT5vKTpvfX0pO2Z1bmN0aW9uIHh1KGUsdCxuLG8scyxyLGkpe2UuaXNzdWVzLmxlbmd0aCYmKGFzLmhhcyh0eXBlb2Ygbyk/bi5pc3N1ZXMucHVzaCguLi5SZShvLGUuaXNzdWVzKSk6bi5pc3N1ZXMucHVzaCh7Y29kZToiaW52YWxpZF9rZXkiLG9yaWdpbjoibWFwIixpbnB1dDpzLGluc3Q6cixpc3N1ZXM6ZS5pc3N1ZXMubWFwKGE9PmplKGEsaSxkZSgpKSl9KSksdC5pc3N1ZXMubGVuZ3RoJiYoYXMuaGFzKHR5cGVvZiBvKT9uLmlzc3Vlcy5wdXNoKC4uLlJlKG8sdC5pc3N1ZXMpKTpuLmlzc3Vlcy5wdXNoKHtvcmlnaW46Im1hcCIsY29kZToiaW52YWxpZF9lbGVtZW50IixpbnB1dDpzLGluc3Q6cixrZXk6byxpc3N1ZXM6dC5pc3N1ZXMubWFwKGE9PmplKGEsaSxkZSgpKSl9KSksbi52YWx1ZS5zZXQoZS52YWx1ZSx0LnZhbHVlKX1jb25zdCBLaD1tKCIkWm9kU2V0IiwoZSx0KT0+e1IuaW5pdChlLHQpO2NvbnN0IG49a2UubWVtb2l6ZXI7bj8uYXR0YWNoKGUpLGUuX3pvZC5wYXJzZT0obyxzKT0+e2NvbnN0IHI9by52YWx1ZTtpZighKHIgaW5zdGFuY2VvZiBTZXQpKXJldHVybiBvLmlzc3Vlcy5wdXNoKHtpbnB1dDpyLGluc3Q6ZSxleHBlY3RlZDoic2V0Iixjb2RlOiJpbnZhbGlkX3R5cGUifSksbztjb25zdCBpPVtdO28udmFsdWU9bj9uLmFsbG9jKGUsbyxuZXcgU2V0LHMpOm5ldyBTZXQ7Y29uc3QgYT1zPy5hYm9ydEVhcmx5O2xldCBkPW8uaXNzdWVzLmxlbmd0aDtmb3IoY29uc3QgdSBvZiByKXtpZihhJiZvLmlzc3Vlcy5sZW5ndGghPT1kKXtpZihTZShvLGQpKWJyZWFrO2Q9by5pc3N1ZXMubGVuZ3RofWNvbnN0IHA9dC52YWx1ZVR5cGUuX3pvZC5ydW4oe3ZhbHVlOnUsaXNzdWVzOltdfSxzKTtwIGluc3RhbmNlb2YgUHJvbWlzZT9pLnB1c2gocC50aGVuKGg9Pkl1KGgsbykpKTpJdShwLG8pfXJldHVybiBpLmxlbmd0aD9Qcm9taXNlLmFsbChpKS50aGVuKCgpPT5vKTpvfX0pO2Z1bmN0aW9uIEl1KGUsdCl7ZS5pc3N1ZXMubGVuZ3RoJiZ0Lmlzc3Vlcy5wdXNoKC4uLmUuaXNzdWVzKSx0LnZhbHVlLmFkZChlLnZhbHVlKX1jb25zdCBHaD1tKCIkWm9kRW51bSIsKGUsdCk9PntSLmluaXQoZSx0KTtjb25zdCBuPXNpKHQuZW50cmllcyksbz1uZXcgU2V0KG4pO2UuX3pvZC52YWx1ZXM9byxMKGUsInBhdHRlcm4iLHM9Pntjb25zdCByPXNpKHMuZGVmLmVudHJpZXMpLmZpbHRlcihpPT5hcy5oYXModHlwZW9mIGkpKTtyZXR1cm4gbmV3IFJlZ0V4cChyLmxlbmd0aD9gXigke3IubWFwKGk9PkplKGkudG9TdHJpbmcoKSkpLmpvaW4oInwiKX0pJGA6Il5bXlxcc1xcU10kIil9KSxlLl96b2QucGFyc2U9KHMscik9Pntjb25zdCBpPXMudmFsdWU7cmV0dXJuIG8uaGFzKGkpfHxzLmlzc3Vlcy5wdXNoKHtjb2RlOiJpbnZhbGlkX3ZhbHVlIix2YWx1ZXM6bixpbnB1dDppLGluc3Q6ZX0pLHN9fSksWWg9bSgiJFpvZExpdGVyYWwiLChlLHQpPT57Ui5pbml0KGUsdCk7Y29uc3Qgbj1uZXcgU2V0KHQudmFsdWVzKTtlLl96b2QudmFsdWVzPW4sTChlLCJwYXR0ZXJuIixvPT57Y29uc3Qgcz1vLmRlZi52YWx1ZXM7cmV0dXJuIG5ldyBSZWdFeHAocy5sZW5ndGg/YF4oJHtzLm1hcChyPT50eXBlb2Ygcj09InN0cmluZyI/SmUocik6cj9KZShyLnRvU3RyaW5nKCkpOlN0cmluZyhyKSkuam9pbigifCIpfSkkYDoiXlteXFxzXFxTXSQiKX0pLGUuX3pvZC5wYXJzZT0obyxzKT0+e2NvbnN0IHI9by52YWx1ZTtyZXR1cm4gbi5oYXMocil8fG8uaXNzdWVzLnB1c2goe2NvZGU6ImludmFsaWRfdmFsdWUiLHZhbHVlczp0LnZhbHVlcyxpbnB1dDpyLGluc3Q6ZX0pLG99fSksUWg9bSgiJFpvZEZpbGUiLChlLHQpPT57Ui5pbml0KGUsdCksZS5fem9kLnBhcnNlPShuLG8pPT57Y29uc3Qgcz1uLnZhbHVlO3JldHVybiBzIGluc3RhbmNlb2YgRmlsZXx8bi5pc3N1ZXMucHVzaCh7ZXhwZWN0ZWQ6ImZpbGUiLGNvZGU6ImludmFsaWRfdHlwZSIsaW5wdXQ6cyxpbnN0OmV9KSxufX0pLFhoPW0oIiRab2RUcmFuc2Zvcm0iLChlLHQpPT57Ui5pbml0KGUsdCksZS5fem9kLm9wdGluPSJvcHRpb25hbCIsa2UubWVtb2l6ZXI/Lmd1YXJkKGUpLGUuX3pvZC5wYXJzZT0obixvKT0+e2lmKG8uZGlyZWN0aW9uPT09ImJhY2t3YXJkIil0aHJvdyBuZXcgRXMoZS5jb25zdHJ1Y3Rvci5uYW1lKTtjb25zdCBzPXQudHJhbnNmb3JtKG4udmFsdWUsbik7aWYoby5hc3luYylyZXR1cm4ocyBpbnN0YW5jZW9mIFByb21pc2U/czpQcm9taXNlLnJlc29sdmUocykpLnRoZW4oaT0+KG4udmFsdWU9aSxuKSk7aWYocyBpbnN0YW5jZW9mIFByb21pc2UpdGhyb3cgbmV3IHN0O3JldHVybiBuLnZhbHVlPXMsbn19KTtmdW5jdGlvbiBBdShlLHQpe3JldHVybiBlLnZhbHVlPXQuaXNzdWVzLmxlbmd0aD92b2lkIDA6dC52YWx1ZSxlfWNvbnN0IHBhPW0oIiRab2RPcHRpb25hbCIsKGUsdCk9PntSLmluaXQoZSx0KSxMKGUsIm9wdGluIixuPT5uLmRlZi5pbm5lclR5cGUuX3pvZC5vcHRpbj09PSJkZWZhdWx0ZWQiPyJkZWZhdWx0ZWQiOiJvcHRpb25hbCIpLGUuX3pvZC5vcHRvdXQ9Im9wdGlvbmFsIixMKGUsInZhbHVlcyIsbj0+e2NvbnN0IG89bi5kZWYuaW5uZXJUeXBlLl96b2QudmFsdWVzO3JldHVybiBvP25ldyBTZXQoWy4uLm8sdm9pZCAwXSk6dm9pZCAwfSksTChlLCJwYXR0ZXJuIixuPT57Y29uc3Qgbz1uLmRlZi5pbm5lclR5cGUuX3pvZC5wYXR0ZXJuO3JldHVybiBvP25ldyBSZWdFeHAoYF4oJHtvdChvLnNvdXJjZSl9KT8kYCk6dm9pZCAwfSksZS5fem9kLnBhcnNlPShuLG8pPT57aWYobi52YWx1ZT09PXZvaWQgMCl7aWYodC5pbm5lclR5cGUuX3pvZC5vcHRpbiE9PSJkZWZhdWx0ZWQiKXJldHVybiBuO2NvbnN0IHM9dC5pbm5lclR5cGUuX3pvZC5ydW4oe3ZhbHVlOm4udmFsdWUsaXNzdWVzOltdfSxvKTtyZXR1cm4gcyBpbnN0YW5jZW9mIFByb21pc2U/cy50aGVuKHI9PkF1KG4scikpOkF1KG4scyl9cmV0dXJuIHQuaW5uZXJUeXBlLl96b2QucnVuKG4sbyl9fSksZW09bSgiJFpvZEV4YWN0T3B0aW9uYWwiLChlLHQpPT57cGEuaW5pdChlLHQpLEwoZSwidmFsdWVzIixuPT5uLmRlZi5pbm5lclR5cGUuX3pvZC52YWx1ZXMpLEwoZSwicGF0dGVybiIsbj0+bi5kZWYuaW5uZXJUeXBlLl96b2QucGF0dGVybiksZS5fem9kLnBhcnNlPShuLG8pPT50LmlubmVyVHlwZS5fem9kLnJ1bihuLG8pfSksdG09bSgiJFpvZE51bGxhYmxlIiwoZSx0KT0+e1IuaW5pdChlLHQpLEwoZSwib3B0aW4iLG49Pm4uZGVmLmlubmVyVHlwZS5fem9kLm9wdGluKSxMKGUsIm9wdG91dCIsbj0+bi5kZWYuaW5uZXJUeXBlLl96b2Qub3B0b3V0KSxMKGUsInBhdHRlcm4iLG49Pntjb25zdCBvPW4uZGVmLmlubmVyVHlwZS5fem9kLnBhdHRlcm47cmV0dXJuIG8/bmV3IFJlZ0V4cChgXigke290KG8uc291cmNlKX18bnVsbCkkYCk6dm9pZCAwfSksTChlLCJ2YWx1ZXMiLG49Pm4uZGVmLmlubmVyVHlwZS5fem9kLnZhbHVlcz9uZXcgU2V0KFsuLi5uLmRlZi5pbm5lclR5cGUuX3pvZC52YWx1ZXMsbnVsbF0pOnZvaWQgMCksZS5fem9kLnBhcnNlPShuLG8pPT5uLnZhbHVlPT09bnVsbD9uOnQuaW5uZXJUeXBlLl96b2QucnVuKG4sbyl9KSxubT1tKCIkWm9kRGVmYXVsdCIsKGUsdCk9PntSLmluaXQoZSx0KSxlLl96b2Qub3B0aW49ImRlZmF1bHRlZCIsTChlLCJ2YWx1ZXMiLG49Pm4uZGVmLmlubmVyVHlwZS5fem9kLnZhbHVlcyksZS5fem9kLnBhcnNlPShuLG8pPT57aWYoby5kaXJlY3Rpb249PT0iYmFja3dhcmQiKXJldHVybiB0LmlubmVyVHlwZS5fem9kLnJ1bihuLG8pO2lmKG4udmFsdWU9PT12b2lkIDApcmV0dXJuIG4udmFsdWU9dC5kZWZhdWx0VmFsdWUsbjtjb25zdCBzPXQuaW5uZXJUeXBlLl96b2QucnVuKG4sbyk7cmV0dXJuIHMgaW5zdGFuY2VvZiBQcm9taXNlP3MudGhlbihyPT5DdShyLHQpKTpDdShzLHQpfX0pO2Z1bmN0aW9uIEN1KGUsdCl7cmV0dXJuIGUudmFsdWU9PT12b2lkIDAmJihlLnZhbHVlPXQuZGVmYXVsdFZhbHVlKSxlfWNvbnN0IG9tPW0oIiRab2RQcmVmYXVsdCIsKGUsdCk9PntSLmluaXQoZSx0KSxlLl96b2Qub3B0aW49ImRlZmF1bHRlZCIsTChlLCJ2YWx1ZXMiLG49Pm4uZGVmLmlubmVyVHlwZS5fem9kLnZhbHVlcyksZS5fem9kLnBhcnNlPShuLG8pPT4oby5kaXJlY3Rpb249PT0iYmFja3dhcmQifHxuLnZhbHVlPT09dm9pZCAwJiYobi52YWx1ZT10LmRlZmF1bHRWYWx1ZSksdC5pbm5lclR5cGUuX3pvZC5ydW4obixvKSl9KSxzbT1tKCIkWm9kTm9uT3B0aW9uYWwiLChlLHQpPT57Ui5pbml0KGUsdCksTChlLCJ2YWx1ZXMiLG49Pntjb25zdCBvPW4uZGVmLmlubmVyVHlwZS5fem9kLnZhbHVlcztyZXR1cm4gbz9uZXcgU2V0KFsuLi5vXS5maWx0ZXIocz0+cyE9PXZvaWQgMCkpOnZvaWQgMH0pLGUuX3pvZC5wYXJzZT0obixvKT0+e2NvbnN0IHM9dC5pbm5lclR5cGUuX3pvZC5ydW4obixvKTtyZXR1cm4gcyBpbnN0YW5jZW9mIFByb21pc2U/cy50aGVuKHI9PlB1KHIsZSkpOlB1KHMsZSl9fSk7ZnVuY3Rpb24gUHUoZSx0KXtyZXR1cm4hZS5pc3N1ZXMubGVuZ3RoJiZlLnZhbHVlPT09dm9pZCAwJiZlLmlzc3Vlcy5wdXNoKHtjb2RlOiJpbnZhbGlkX3R5cGUiLGV4cGVjdGVkOiJub25vcHRpb25hbCIsaW5wdXQ6ZS52YWx1ZSxpbnN0OnR9KSxlfWNvbnN0IHJtPW0oIiRab2RTdWNjZXNzIiwoZSx0KT0+e1IuaW5pdChlLHQpLGUuX3pvZC5wYXJzZT0obixvKT0+e2lmKG8uZGlyZWN0aW9uPT09ImJhY2t3YXJkIil0aHJvdyBuZXcgRXMoIlpvZFN1Y2Nlc3MiKTtjb25zdCBzPXQuaW5uZXJUeXBlLl96b2QucnVuKG4sbyk7cmV0dXJuIHMgaW5zdGFuY2VvZiBQcm9taXNlP3MudGhlbihyPT4obi52YWx1ZT1yLmlzc3Vlcy5sZW5ndGg9PT0wLG4pKToobi52YWx1ZT1zLmlzc3Vlcy5sZW5ndGg9PT0wLG4pfX0pO2Z1bmN0aW9uIEV1KGUsdCxuLG8pe3JldHVybiB0Lmlzc3Vlcy5sZW5ndGg/KGUudmFsdWU9bi5jYXRjaFZhbHVlKHsuLi50LHZhbHVlOmUudmFsdWUsZXJyb3I6e2lzc3Vlczp0Lmlzc3Vlcy5tYXAocz0+amUocyxvLGRlKCkpKX0saW5wdXQ6ZS52YWx1ZX0pLGUpOihlLnZhbHVlPXQudmFsdWUsdC5tZW1vJiYoZS5tZW1vPSEwKSxlKX1jb25zdCBpbT1tKCIkWm9kQ2F0Y2giLChlLHQpPT57Ui5pbml0KGUsdCksTChlLCJvcHRpbiIsbj0+bi5kZWYuaW5uZXJUeXBlLl96b2Qub3B0aW49PT0iZGVmYXVsdGVkIj8iZGVmYXVsdGVkIjoib3B0aW9uYWwiKSxMKGUsIm9wdG91dCIsbj0+bi5kZWYuaW5uZXJUeXBlLl96b2Qub3B0b3V0KSxMKGUsInZhbHVlcyIsbj0+bi5kZWYuaW5uZXJUeXBlLl96b2QudmFsdWVzKSxlLl96b2QucGFyc2U9KG4sbyk9PntpZihvLmRpcmVjdGlvbj09PSJiYWNrd2FyZCIpcmV0dXJuIHQuaW5uZXJUeXBlLl96b2QucnVuKG4sbyk7Y29uc3Qgcz10LmlubmVyVHlwZS5fem9kLnJ1bih7dmFsdWU6bi52YWx1ZSxpc3N1ZXM6W119LG8pO3JldHVybiBzIGluc3RhbmNlb2YgUHJvbWlzZT9zLnRoZW4ocj0+RXUobixyLHQsbykpOkV1KG4scyx0LG8pfX0pLGFtPW0oIiRab2ROYU4iLChlLHQpPT57Ui5pbml0KGUsdCksZS5fem9kLnBhcnNlPShuLG8pPT4oKHR5cGVvZiBuLnZhbHVlIT0ibnVtYmVyInx8IU51bWJlci5pc05hTihuLnZhbHVlKSkmJm4uaXNzdWVzLnB1c2goe2lucHV0Om4udmFsdWUsaW5zdDplLGV4cGVjdGVkOiJuYW4iLGNvZGU6ImludmFsaWRfdHlwZSJ9KSxuKX0pLGhhPW0oIiRab2RQaXBlIiwoZSx0KT0+e1IuaW5pdChlLHQpLEwoZSwidmFsdWVzIixuPT5uLmRlZi5pbi5fem9kLnZhbHVlcyksTChlLCJvcHRpbiIsbj0+bi5kZWYuaW4uX3pvZC5vcHRpbiksTChlLCJvcHRvdXQiLG49Pm4uZGVmLm91dC5fem9kLm9wdG91dCksTChlLCJwcm9wVmFsdWVzIixuPT5uLmRlZi5pbi5fem9kLnByb3BWYWx1ZXMpLGUuX3pvZC5wYXJzZT0obixvKT0+e2lmKG8uZGlyZWN0aW9uPT09ImJhY2t3YXJkIil7Y29uc3Qgcj10Lm91dC5fem9kLnJ1bihuLG8pO3JldHVybiByIGluc3RhbmNlb2YgUHJvbWlzZT9yLnRoZW4oaT0+Vm8oaSx0LmluLG8pKTpWbyhyLHQuaW4sbyl9Y29uc3Qgcz10LmluLl96b2QucnVuKG4sbyk7cmV0dXJuIHMgaW5zdGFuY2VvZiBQcm9taXNlP3MudGhlbihyPT5WbyhyLHQub3V0LG8pKTpWbyhzLHQub3V0LG8pfX0pO2Z1bmN0aW9uIFZvKGUsdCxuKXtyZXR1cm4gZS5pc3N1ZXMuc29tZShvPT5vLmNvZGUhPT0idW5yZWNvZ25pemVkX2tleXMiKT8oZS5hYm9ydGVkPSEwLGUpOnQuX3pvZC5ydW4oe3ZhbHVlOmUudmFsdWUsaXNzdWVzOmUuaXNzdWVzfSxuKX1jb25zdCBtYT1tKCIkWm9kQ29kZWMiLChlLHQpPT57Ui5pbml0KGUsdCksTChlLCJ2YWx1ZXMiLG49Pm4uZGVmLmluLl96b2QudmFsdWVzKSxMKGUsIm9wdGluIixuPT5uLmRlZi5pbi5fem9kLm9wdGluKSxMKGUsIm9wdG91dCIsbj0+bi5kZWYub3V0Ll96b2Qub3B0b3V0KSxMKGUsInByb3BWYWx1ZXMiLG49Pm4uZGVmLmluLl96b2QucHJvcFZhbHVlcyksZS5fem9kLnBhcnNlPShuLG8pPT57aWYoKG8uZGlyZWN0aW9ufHwiZm9yd2FyZCIpPT09ImZvcndhcmQiKXtjb25zdCByPXQuaW4uX3pvZC5ydW4obixvKTtyZXR1cm4gciBpbnN0YW5jZW9mIFByb21pc2U/ci50aGVuKGk9PkpvKGksdCxvKSk6Sm8ocix0LG8pfWVsc2V7Y29uc3Qgcj10Lm91dC5fem9kLnJ1bihuLG8pO3JldHVybiByIGluc3RhbmNlb2YgUHJvbWlzZT9yLnRoZW4oaT0+Sm8oaSx0LG8pKTpKbyhyLHQsbyl9fX0pO2Z1bmN0aW9uIEpvKGUsdCxuKXtpZihlLmlzc3Vlcy5sZW5ndGgpcmV0dXJuIGUuYWJvcnRlZD0hMCxlO2lmKChuLmRpcmVjdGlvbnx8ImZvcndhcmQiKT09PSJmb3J3YXJkIil7Y29uc3Qgcz10LnRyYW5zZm9ybShlLnZhbHVlLGUpO3JldHVybiBzIGluc3RhbmNlb2YgUHJvbWlzZT9zLnRoZW4ocj0+S28oZSxyLHQub3V0LG4pKTpLbyhlLHMsdC5vdXQsbil9ZWxzZXtjb25zdCBzPXQucmV2ZXJzZVRyYW5zZm9ybShlLnZhbHVlLGUpO3JldHVybiBzIGluc3RhbmNlb2YgUHJvbWlzZT9zLnRoZW4ocj0+S28oZSxyLHQuaW4sbikpOktvKGUscyx0LmluLG4pfX1mdW5jdGlvbiBLbyhlLHQsbixvKXtyZXR1cm4gZS5pc3N1ZXMubGVuZ3RoPyhlLmFib3J0ZWQ9ITAsZSk6bi5fem9kLnJ1bih7dmFsdWU6dCxpc3N1ZXM6ZS5pc3N1ZXN9LG8pfWNvbnN0IGNtPW0oIiRab2RQcmVwcm9jZXNzIiwoZSx0KT0+e2hhLmluaXQoZSx0KX0pLGxtPW0oIiRab2RSZWFkb25seSIsKGUsdCk9PntSLmluaXQoZSx0KSxMKGUsInByb3BWYWx1ZXMiLG49Pm4uZGVmLmlubmVyVHlwZS5fem9kLnByb3BWYWx1ZXMpLEwoZSwidmFsdWVzIixuPT5uLmRlZi5pbm5lclR5cGUuX3pvZC52YWx1ZXMpLEwoZSwib3B0aW4iLG49Pm4uZGVmLmlubmVyVHlwZT8uX3pvZD8ub3B0aW4pLEwoZSwib3B0b3V0IixuPT5uLmRlZi5pbm5lclR5cGU/Ll96b2Q/Lm9wdG91dCksZS5fem9kLnBhcnNlPShuLG8pPT57aWYoby5kaXJlY3Rpb249PT0iYmFja3dhcmQiKXJldHVybiB0LmlubmVyVHlwZS5fem9kLnJ1bihuLG8pO2NvbnN0IHM9dC5pbm5lclR5cGUuX3pvZC5ydW4obixvKTtyZXR1cm4gcyBpbnN0YW5jZW9mIFByb21pc2U/cy50aGVuKE91KTpPdShzKX19KTtmdW5jdGlvbiBPdShlKXtyZXR1cm4gZS5tZW1vfHwoZS52YWx1ZT1PYmplY3QuZnJlZXplKGUudmFsdWUpKSxlfWZ1bmN0aW9uIFliKGUpe2NvbnN0IHQ9ZS5fem9kLmRlZjtsZXQgbj10LnBhdHRlcm4sbz0hIXQuZm9ybWF0Py5pbmNsdWRlcygiaW50IikscyxyO2Zvcihjb25zdCBhIG9mIHQuY2hlY2tzPz9bXSl7Y29uc3QgZD1hLl96b2QuZGVmO2QucGF0dGVybiYmKG49ZC5wYXR0ZXJuKSxvfHwobz0hIWQuZm9ybWF0Py5pbmNsdWRlcygiaW50IikpO2NvbnN0IHU9ZC5taW5pbXVtPz9kLmxlbmd0aCxwPWQubWF4aW11bT8/ZC5sZW5ndGg7dSE9PXZvaWQgMCYmKHM9PT12b2lkIDB8fHU+cykmJihzPXUpLHAhPT12b2lkIDAmJihyPT09dm9pZCAwfHxwPHIpJiYocj1wKX1pZihuKXJldHVybiBuLnNvdXJjZTtpZihzIT09dm9pZCAwJiZyIT09dm9pZCAwJiZzPnIpcmV0dXJuIig/ISkiO2lmKHMhPT12b2lkIDB8fHIhPT12b2lkIDApcmV0dXJuIG1wKHttaW5pbXVtOnMsbWF4aW11bTpyfSkuc291cmNlO2NvbnN0IGk9ZS5fem9kLnBhdHRlcm47cmV0dXJuKG8mJmk9PT1qcz9ncDppKT8uc291cmNlfWZ1bmN0aW9uIHBpKGUpe2NvbnN0IHQ9ZS5fem9kLmRlZixuPWUuX3pvZC5wYXR0ZXJuPy5zb3VyY2Usbz10LmlubmVyVHlwZT8/ZS5fem9kLmlubmVyVHlwZTtpZihvKXtjb25zdCBzPW8uX3pvZC5wYXR0ZXJuPy5zb3VyY2Uscj1waShvKTtyZXR1cm4gbiYmcyYmciYmciE9PXM/bi5yZXBsYWNlKG90KHMpLCgpPT5vdChyKSk6bn1pZih0Lm9wdGlvbnMpe2NvbnN0IHM9dC5vcHRpb25zLm1hcChwaSk7aWYocy5ldmVyeShCb29sZWFuKSlyZXR1cm5gXigke3MubWFwKHI9Pm90KHIpKS5qb2luKCJ8Iil9KSRgfXJldHVybiBZYihlKX1jb25zdCB1bT1tKCIkWm9kVGVtcGxhdGVMaXRlcmFsIiwoZSx0KT0+e1IuaW5pdChlLHQpO2NvbnN0IG49W107Zm9yKGNvbnN0IG8gb2YgdC5wYXJ0cylpZih0eXBlb2Ygbz09Im9iamVjdCImJm8hPT1udWxsKXtjb25zdCBzPXBpKG8pO2lmKCFzKXRocm93IG5ldyBFcnJvcihgSW52YWxpZCB0ZW1wbGF0ZSBsaXRlcmFsIHBhcnQsIG5vIHBhdHRlcm4gZm91bmQ6ICR7Wy4uLm8uX3pvZC50cmFpdHNdLnNoaWZ0KCl9YCk7bi5wdXNoKG90KHMpKX1lbHNlIGlmKG89PT1udWxsfHwkZC5oYXModHlwZW9mIG8pKW4ucHVzaChKZShgJHtvfWApKTtlbHNlIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCB0ZW1wbGF0ZSBsaXRlcmFsIHBhcnQ6ICR7b31gKTtlLl96b2QucGF0dGVybj1uZXcgUmVnRXhwKGBeJHtuLmpvaW4oIiIpfSRgKSxlLl96b2QucGFyc2U9KG8scyk9PnR5cGVvZiBvLnZhbHVlIT0ic3RyaW5nIj8oby5pc3N1ZXMucHVzaCh7aW5wdXQ6by52YWx1ZSxpbnN0OmUsZXhwZWN0ZWQ6InN0cmluZyIsY29kZToiaW52YWxpZF90eXBlIn0pLG8pOihlLl96b2QucGF0dGVybi5sYXN0SW5kZXg9MCxlLl96b2QucGF0dGVybi50ZXN0KG8udmFsdWUpfHxvLmlzc3Vlcy5wdXNoKHtpbnB1dDpvLnZhbHVlLGluc3Q6ZSxjb2RlOiJpbnZhbGlkX2Zvcm1hdCIsZm9ybWF0OnQuZm9ybWF0Pz8idGVtcGxhdGVfbGl0ZXJhbCIscGF0dGVybjplLl96b2QucGF0dGVybi5zb3VyY2V9KSxvKX0pLGRtPW0oIiRab2RGdW5jdGlvbiIsKGUsdCk9PihSLmluaXQoZSx0KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX2RlZiIse3ZhbHVlOnR9KSxlLl96b2QuZGVmPXQsZS5pbXBsZW1lbnQ9bj0+e2lmKHR5cGVvZiBuIT0iZnVuY3Rpb24iKXRocm93IG5ldyBFcnJvcigiaW1wbGVtZW50KCkgbXVzdCBiZSBjYWxsZWQgd2l0aCBhIGZ1bmN0aW9uIik7cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShmdW5jdGlvbiguLi5vKXtjb25zdCBzPWUuX2RlZi5pbnB1dD9jaShlLl9kZWYuaW5wdXQsbyk6byxyPVJlZmxlY3QuYXBwbHkobix0aGlzLHMpO3JldHVybiBlLl9kZWYub3V0cHV0P2NpKGUuX2RlZi5vdXRwdXQscik6cn0sIl96b2QiLHt2YWx1ZTplLl96b2QsZW51bWVyYWJsZTohMX0pfSxlLmltcGxlbWVudEFzeW5jPW49PntpZih0eXBlb2YgbiE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgRXJyb3IoImltcGxlbWVudEFzeW5jKCkgbXVzdCBiZSBjYWxsZWQgd2l0aCBhIGZ1bmN0aW9uIik7cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShhc3luYyBmdW5jdGlvbiguLi5vKXtjb25zdCBzPWUuX2RlZi5pbnB1dD9hd2FpdCBsaShlLl9kZWYuaW5wdXQsbyk6byxyPWF3YWl0IFJlZmxlY3QuYXBwbHkobix0aGlzLHMpO3JldHVybiBlLl9kZWYub3V0cHV0P2F3YWl0IGxpKGUuX2RlZi5vdXRwdXQscik6cn0sIl96b2QiLHt2YWx1ZTplLl96b2QsZW51bWVyYWJsZTohMX0pfSxlLl96b2QucGFyc2U9KG4sbyk9PnR5cGVvZiBuLnZhbHVlIT0iZnVuY3Rpb24iPyhuLmlzc3Vlcy5wdXNoKHtjb2RlOiJpbnZhbGlkX3R5cGUiLGV4cGVjdGVkOiJmdW5jdGlvbiIsaW5wdXQ6bi52YWx1ZSxpbnN0OmV9KSxuKTooZS5fZGVmLm91dHB1dCYmZS5fZGVmLm91dHB1dC5fem9kLmRlZi50eXBlPT09InByb21pc2UiP24udmFsdWU9ZS5pbXBsZW1lbnRBc3luYyhuLnZhbHVlKTpuLnZhbHVlPWUuaW1wbGVtZW50KG4udmFsdWUpLG4pLGUuaW5wdXQ9KC4uLm4pPT57Y29uc3Qgbz1lLmNvbnN0cnVjdG9yO3JldHVybiBBcnJheS5pc0FycmF5KG5bMF0pP25ldyBvKHt0eXBlOiJmdW5jdGlvbiIsaW5wdXQ6bmV3IGRhKHt0eXBlOiJ0dXBsZSIsaXRlbXM6blswXSxyZXN0Om5bMV19KSxvdXRwdXQ6ZS5fZGVmLm91dHB1dH0pOm5ldyBvKHt0eXBlOiJmdW5jdGlvbiIsaW5wdXQ6blswXSxvdXRwdXQ6ZS5fZGVmLm91dHB1dH0pfSxlLm91dHB1dD1uPT57Y29uc3Qgbz1lLmNvbnN0cnVjdG9yO3JldHVybiBuZXcgbyh7dHlwZToiZnVuY3Rpb24iLGlucHV0OmUuX2RlZi5pbnB1dCxvdXRwdXQ6bn0pfSxlKSkscG09bSgiJFpvZFByb21pc2UiLChlLHQpPT57Ui5pbml0KGUsdCksZS5fem9kLnBhcnNlPShuLG8pPT5Qcm9taXNlLnJlc29sdmUobi52YWx1ZSkudGhlbihzPT50LmlubmVyVHlwZS5fem9kLnJ1bih7dmFsdWU6cyxpc3N1ZXM6W119LG8pKX0pLGZhPW0oIiRab2RMYXp5IiwoZSx0KT0+e1IuaW5pdChlLHQpLGhkKGUuX3pvZCwiaW5uZXJUeXBlIiwoKT0+e2NvbnN0IG49dDtyZXR1cm4gbi5fY2FjaGVkSW5uZXJ8fChuLl9jYWNoZWRJbm5lcj10LmdldHRlcigpKSxuLl9jYWNoZWRJbm5lcn0pLEwoZSwicGF0dGVybiIsbj0+bi5pbm5lclR5cGU/Ll96b2Q/LnBhdHRlcm4pLEwoZSwicHJvcFZhbHVlcyIsbj0+bi5pbm5lclR5cGU/Ll96b2Q/LnByb3BWYWx1ZXMpLEwoZSwib3B0aW4iLG49Pm4uaW5uZXJUeXBlPy5fem9kPy5vcHRpbj8/dm9pZCAwKSxMKGUsIm9wdG91dCIsbj0+bi5pbm5lclR5cGU/Ll96b2Q/Lm9wdG91dD8/dm9pZCAwKSxlLl96b2QucGFyc2U9KG4sbyk9PmUuX3pvZC5pbm5lclR5cGUuX3pvZC5ydW4obixvKX0pLGhtPW0oIiRab2RDdXN0b20iLChlLHQpPT57b2UuaW5pdChlLHQpLFIuaW5pdChlLHQpLGUuX3pvZC5wYXJzZT0obixvKT0+bixlLl96b2QuY2hlY2s9bj0+e2NvbnN0IG89bi52YWx1ZSxzPXQuZm4obyk7aWYocyBpbnN0YW5jZW9mIFByb21pc2UpcmV0dXJuIHMudGhlbihyPT5SdShyLG4sbyxlKSk7UnUocyxuLG8sZSl9fSk7ZnVuY3Rpb24gUnUoZSx0LG4sbyl7aWYoIWUpe2NvbnN0IHM9e2NvZGU6ImN1c3RvbSIsaW5wdXQ6bixpbnN0Om8scGF0aDpbLi4uby5fem9kLmRlZi5wYXRoPz9bXV0sY29udGludWU6IW8uX3pvZC5kZWYuYWJvcnR9O28uX3pvZC5kZWYucGFyYW1zJiYocy5wYXJhbXM9by5fem9kLmRlZi5wYXJhbXMpLHQuaXNzdWVzLnB1c2goQnQocykpfX1jbGFzcyBtbSBleHRlbmRzIEVycm9ye2NvbnN0cnVjdG9yKCl7c3VwZXIoIkNhbm5vdCBwYXJzZSBhIHJlZmVyZW5jZSBjeWNsZSB0aGF0IGNsb3NlcyB0aHJvdWdoIGEgdHJhbnNmb3JtIiksdGhpcy5uYW1lPSJab2RDeWNsaWNFcnJvciJ9fWNvbnN0IGhpPSJ+bWVtbyIsTnU9W107ZnVuY3Rpb24gZm0oZSl7cmV0dXJuIGUhPT1udWxsJiZ0eXBlb2YgZT09Im9iamVjdCJ9ZnVuY3Rpb24gUXIoZSl7cmV0dXJuIGUubWFwKHQ9PnQucGF0aD97Li4udCxwYXRoOnQucGF0aC5zbGljZSgpfTp7Li4udH0pfWNvbnN0IGdtPW5ldyBXZWFrTWFwLFJ0PTAsbnM9MSxUbj0yO2Z1bmN0aW9uIHpuKGUsdCxuKXtjb25zdCBvPWdtLmdldChlKTtpZihvIT09dm9pZCAwKXJldHVybiBvP1RuOlJ0O2lmKHQuaGFzKGUpKXJldHVybiBUbjt0LmFkZChlKTtsZXQgcz1SdDtjb25zdCByPXA9PntpZihzIT09VG4mJnA/Ll96b2Qpe2NvbnN0IGg9em4ocCx0LG4pO2g+cyYmKHM9aCl9fSxpPShwLGgpPT57bGV0IGI9UnQ7Zm9yKGNvbnN0ICQgb2YgUmVmbGVjdC5vd25LZXlzKHApKXtjb25zdCBrPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IocCwkKTtpZighay5lbnVtZXJhYmxlKWNvbnRpbnVlO2NvbnN0IFQ9ay5nZXQ/bnM6ay52YWx1ZT8uX3pvZD96bihrLnZhbHVlLHQsbik6UnQ7VD5iJiYoYj1UKX1yZXR1cm4gYn0sYT1wPT57cD5zJiYocz1wKX0sZD1lLl96b2QuZGVmO3N3aXRjaChkLnR5cGUpe2Nhc2Uib2JqZWN0Ijp7Y29uc3QgcD1UcyhkKTthKHA/aShwKTpucykscihkLmNhdGNoYWxsKTticmVha31jYXNlImFycmF5IjpyKGQuZWxlbWVudCk7YnJlYWs7Y2FzZSJ0dXBsZSI6Zm9yKGNvbnN0IHAgb2YgZC5pdGVtcylyKHApO3IoZC5yZXN0KTticmVhaztjYXNlInJlY29yZCI6Y2FzZSJtYXAiOnIoZC5rZXlUeXBlKSxyKGQudmFsdWVUeXBlKTticmVhaztjYXNlInNldCI6cihkLnZhbHVlVHlwZSk7YnJlYWs7Y2FzZSJ1bmlvbiI6Zm9yKGNvbnN0IHAgb2YgZC5vcHRpb25zKXIocCk7YnJlYWs7Y2FzZSJpbnRlcnNlY3Rpb24iOnIoZC5sZWZ0KSxyKGQucmlnaHQpO2JyZWFrO2Nhc2Uib3B0aW9uYWwiOmNhc2UibnVsbGFibGUiOmNhc2UiZGVmYXVsdCI6Y2FzZSJwcmVmYXVsdCI6Y2FzZSJjYXRjaCI6Y2FzZSJyZWFkb25seSI6Y2FzZSJub25vcHRpb25hbCI6Y2FzZSJwcm9taXNlIjpjYXNlInN1Y2Nlc3MiOnIoZC5pbm5lclR5cGUpO2JyZWFrO2Nhc2UicGlwZSI6cihkLmluKSxyKGQub3V0KTticmVhaztjYXNlImZ1bmN0aW9uIjpyKGQuaW5wdXQpLHIoZC5vdXRwdXQpO2JyZWFrO2Nhc2UibGF6eSI6e2NvbnN0IHA9ZC5fY2FjaGVkSW5uZXI/PyhuP2UuX3pvZC5pbm5lclR5cGU6dm9pZCAwKTthKHA/em4ocCx0LCExKTpucyk7YnJlYWt9Y2FzZSJ0ZW1wbGF0ZV9saXRlcmFsIjpjYXNlInN0cmluZyI6Y2FzZSJudW1iZXIiOmNhc2UiaW50IjpjYXNlImJvb2xlYW4iOmNhc2UiYmlnaW50IjpjYXNlInN5bWJvbCI6Y2FzZSJ1bmRlZmluZWQiOmNhc2UibnVsbCI6Y2FzZSJ2b2lkIjpjYXNlIm5ldmVyIjpjYXNlImFueSI6Y2FzZSJ1bmtub3duIjpjYXNlImRhdGUiOmNhc2UibmFuIjpjYXNlImVudW0iOmNhc2UibGl0ZXJhbCI6Y2FzZSJmaWxlIjpjYXNlInRyYW5zZm9ybSI6Y2FzZSJjdXN0b20iOmJyZWFrO2RlZmF1bHQ6Zm9yKGNvbnN0IHAgaW4gZCl7Y29uc3QgaD1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGQscCk7aWYoIWh8fGguZ2V0KWNvbnRpbnVlO2NvbnN0IGI9aC52YWx1ZTtpZighKCFifHx0eXBlb2YgYiE9Im9iamVjdCIpKXtpZihiLl96b2QpcihiKTtlbHNlIGlmKEFycmF5LmlzQXJyYXkoYikpZm9yKGNvbnN0ICQgb2YgYilyKCQpfX19cmV0dXJuIHQuZGVsZXRlKGUpLFFiKGUscyl9ZnVuY3Rpb24gUWIoZSx0KXtyZXR1cm4gdCE9PW5zJiZnbS5zZXQoZSx0PT09VG4pLHR9ZnVuY3Rpb24gWGIoZSl7cmV0dXJuIHpuKGUsbmV3IFNldCwhMCkhPT1SdH1mdW5jdGlvbiBldihlLHQpe2xldCBuPWUuYnVja2V0cy5nZXQodCk7cmV0dXJuIG58fChuPW5ldyBXZWFrTWFwLGUuYnVja2V0cy5zZXQodCxuKSksbn1sZXQgR287Y29uc3QgWW89W10sdHY9e2FsbG9jKGUsdCxuKXtjb25zdCBvPUdvO2lmKCFvKXJldHVybiBuO0dvPXZvaWQgMDtjb25zdCBzPXt2YWx1ZTpuLGlzc3VlczpudWxsfTtyZXR1cm4gby5zZXQodC52YWx1ZSxzKSxZby5wdXNoKHMpLG59LGd1YXJkKGUpe3ZhciB0Oyh0PWUuX3pvZCkuZGVmZXJyZWQ/Pyh0LmRlZmVycmVkPVtdKSxlLl96b2QuZGVmZXJyZWQucHVzaCgoKT0+e2NvbnN0IG49ZS5fem9kLnBhcnNlLG89KHMscik9PntpZihyLmRpcmVjdGlvbiE9PSJiYWNrd2FyZCImJmJtKHIscy52YWx1ZSkpdGhyb3cgbmV3IG1tO3JldHVybiBuKHMscil9O2UuX3pvZC5wYXJzZT1vLGUuX3pvZC5ydW49PT1uJiYoZS5fem9kLnJ1bj1vKX0pfSxhdHRhY2goZSl7dmFyIHQ7bGV0IG4sbz0hMSxzLHI7KHQ9ZS5fem9kKS5kZWZlcnJlZD8/KHQuZGVmZXJyZWQ9W10pLGUuX3pvZC5kZWZlcnJlZC5wdXNoKCgpPT57Y29uc3QgaT1lLl96b2QucGFyc2UsYT0oZCx1KT0+e2lmKG49PT12b2lkIDApe2NvbnN0IHg9em4oZSxuZXcgU2V0LCExKTtpZih4PT09UnQpcmV0dXJuIGUuX3pvZC5wYXJzZT1pLGUuX3pvZC5ydW49PT1hJiYoZS5fem9kLnJ1bj1pKSxpKGQsdSk7eD09PVRufHxvP249ITA6bz0hMH1jb25zdCBwPWQudmFsdWU7aWYoIWZtKHApKXJldHVybiBpKGQsdSk7bGV0IGg9dVtoaV07aHx8KGg9e2J1Y2tldHM6bmV3IFdlYWtNYXAsYmFja0VkZ2VzOnZvaWQgMH0sdVtoaV09aCk7bGV0IGI7cz09PXU/Yj1yOihiPWV2KGgsZSkscz11LHI9Yik7Y29uc3QgJD1iLmdldChwKTtpZigkKXJldHVybiBkLnZhbHVlPSQudmFsdWUsJC5pc3N1ZXM/JC5pc3N1ZXMubGVuZ3RoJiZkLmlzc3Vlcy5wdXNoKC4uLlFyKCQuaXNzdWVzKSk6KGQubWVtbz0hMCxoLmJhY2tFZGdlcz8/KGguYmFja0VkZ2VzPW5ldyBXZWFrU2V0KSxoLmJhY2tFZGdlcy5hZGQoJC52YWx1ZSkpLGQ7R289Yjtjb25zdCBrPVlvLmxlbmd0aCxUPWkoZCx1KTtHbz12b2lkIDA7Y29uc3QgXz1Zby5sZW5ndGg+az9Zby5wb3AoKTp2b2lkIDA7cmV0dXJuIFQgaW5zdGFuY2VvZiBQcm9taXNlP1QudGhlbih4PT4oXyYmKF8uaXNzdWVzPXguaXNzdWVzLmxlbmd0aD9Rcih4Lmlzc3Vlcyk6TnUpLHgpKTooXyYmKF8uaXNzdWVzPVQuaXNzdWVzLmxlbmd0aD9RcihULmlzc3Vlcyk6TnUpLFQpfTtlLl96b2QucGFyc2U9YSxlLl96b2QucnVuPT09aSYmKGUuX3pvZC5ydW49YSl9KX19O2Z1bmN0aW9uIERzKCl7cmV0dXJuIHR2fWZ1bmN0aW9uIGJtKGUsdCl7Y29uc3Qgbj1lW2hpXT8uYmFja0VkZ2VzO3JldHVybiBuIT09dm9pZCAwJiZmbSh0KSYmbi5oYXModCl9Y29uc3QgbnY9KCk9Pntjb25zdCBlPXtzdHJpbmc6e3VuaXQ6ImNoYXJhY3RlcnMiLHZlcmI6InRvIGhhdmUifSxmaWxlOnt1bml0OiJieXRlcyIsdmVyYjoidG8gaGF2ZSJ9LGFycmF5Ont1bml0OiJpdGVtcyIsdmVyYjoidG8gaGF2ZSJ9LHNldDp7dW5pdDoiaXRlbXMiLHZlcmI6InRvIGhhdmUifSxtYXA6e3VuaXQ6ImVudHJpZXMiLHZlcmI6InRvIGhhdmUifX07ZnVuY3Rpb24gdChyKXtyZXR1cm4gZVtyXT8/bnVsbH1jb25zdCBuPXtyZWdleDoiaW5wdXQiLGVtYWlsOiJlbWFpbCBhZGRyZXNzIix1cmw6IlVSTCIsZW1vamk6ImVtb2ppIix1dWlkOiJVVUlEIix1dWlkdjQ6IlVVSUR2NCIsdXVpZHY2OiJVVUlEdjYiLG5hbm9pZDoibmFub2lkIixndWlkOiJHVUlEIixjdWlkOiJjdWlkIixjdWlkMjoiY3VpZDIiLHVsaWQ6IlVMSUQiLHhpZDoiWElEIixrc3VpZDoiS1NVSUQiLGRhdGV0aW1lOiJJU08gZGF0ZXRpbWUiLGRhdGU6IklTTyBkYXRlIix0aW1lOiJJU08gdGltZSIsZHVyYXRpb246IklTTyBkdXJhdGlvbiIsaXB2NDoiSVB2NCBhZGRyZXNzIixpcHY2OiJJUHY2IGFkZHJlc3MiLG1hYzoiTUFDIGFkZHJlc3MiLGNpZHJ2NDoiSVB2NCByYW5nZSIsY2lkcnY2OiJJUHY2IHJhbmdlIixiYXNlNjQ6ImJhc2U2NC1lbmNvZGVkIHN0cmluZyIsYmFzZTY0dXJsOiJiYXNlNjR1cmwtZW5jb2RlZCBzdHJpbmciLGpzb25fc3RyaW5nOiJKU09OIHN0cmluZyIsZTE2NDoiRS4xNjQgbnVtYmVyIixjdXJyZW5jeV9jb2RlOiJjdXJyZW5jeSBjb2RlIixjcmVkaXRfY2FyZDoiY3JlZGl0IGNhcmQgbnVtYmVyIixpYmFuOiJJQkFOIixqd3Q6IkpXVCIsdGVtcGxhdGVfbGl0ZXJhbDoiaW5wdXQifSxvPXtuYW46Ik5hTiJ9O2Z1bmN0aW9uIHMocixpKXtyZXR1cm4gcj09PSJudW1iZXIiJiZ0eXBlb2YgaT09Im51bWJlciImJiFOdW1iZXIuaXNGaW5pdGUoaSk/U3RyaW5nKGkpOm9bcl0/P3J9cmV0dXJuIHI9Pntzd2l0Y2goci5jb2RlKXtjYXNlImludmFsaWRfdHlwZSI6e2NvbnN0IGk9cyhyLmV4cGVjdGVkKSxhPVBkKHIuaW5wdXQpLGQ9cyhhLHIuaW5wdXQpO3JldHVybmBJbnZhbGlkIGlucHV0OiBleHBlY3RlZCAke2l9LCByZWNlaXZlZCAke2R9YH1jYXNlImludmFsaWRfdmFsdWUiOnJldHVybiByLnZhbHVlcy5sZW5ndGg9PT0xP2BJbnZhbGlkIGlucHV0OiBleHBlY3RlZCAke09pKHIudmFsdWVzWzBdKX1gOmBJbnZhbGlkIG9wdGlvbjogZXhwZWN0ZWQgb25lIG9mICR7cmkoci52YWx1ZXMsInwiKX1gO2Nhc2UidG9vX2JpZyI6e2NvbnN0IGk9ci5leGFjdD8iZXhhY3RseSAiOnIuaW5jbHVzaXZlPyI8PSI6IjwiLGE9dChyLm9yaWdpbik7cmV0dXJuIGE/YFRvbyBiaWc6IGV4cGVjdGVkICR7ci5vcmlnaW4/PyJ2YWx1ZSJ9IHRvIGhhdmUgJHtpfSR7ci5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0Pz8iZWxlbWVudHMifWA6YFRvbyBiaWc6IGV4cGVjdGVkICR7ci5vcmlnaW4/PyJ2YWx1ZSJ9IHRvIGJlICR7aX0ke3IubWF4aW11bS50b1N0cmluZygpfWB9Y2FzZSJ0b29fc21hbGwiOntjb25zdCBpPXIuZXhhY3Q/ImV4YWN0bHkgIjpyLmluY2x1c2l2ZT8iPj0iOiI+IixhPXQoci5vcmlnaW4pO3JldHVybiBhP2BUb28gc21hbGw6IGV4cGVjdGVkICR7ci5vcmlnaW59IHRvIGhhdmUgJHtpfSR7ci5taW5pbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0fWA6YFRvbyBzbWFsbDogZXhwZWN0ZWQgJHtyLm9yaWdpbn0gdG8gYmUgJHtpfSR7ci5taW5pbXVtLnRvU3RyaW5nKCl9YH1jYXNlImludmFsaWRfZm9ybWF0Ijp7Y29uc3QgaT1yO3JldHVybiBpLmZvcm1hdD09PSJzdGFydHNfd2l0aCI/YEludmFsaWQgc3RyaW5nOiBtdXN0IHN0YXJ0IHdpdGggIiR7aS5wcmVmaXh9ImA6aS5mb3JtYXQ9PT0iZW5kc193aXRoIj9gSW52YWxpZCBzdHJpbmc6IG11c3QgZW5kIHdpdGggIiR7aS5zdWZmaXh9ImA6aS5mb3JtYXQ9PT0iaW5jbHVkZXMiP2BJbnZhbGlkIHN0cmluZzogbXVzdCBpbmNsdWRlICIke2kuaW5jbHVkZXN9ImA6aS5mb3JtYXQ9PT0icmVnZXgiP2BJbnZhbGlkIHN0cmluZzogbXVzdCBtYXRjaCBwYXR0ZXJuICR7aS5wYXR0ZXJufWA6YEludmFsaWQgJHtuW2kuZm9ybWF0XT8/ci5mb3JtYXR9YH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYEludmFsaWQgbnVtYmVyOiBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgJHtyLmRpdmlzb3J9YDtjYXNlInVucmVjb2duaXplZF9rZXlzIjpyZXR1cm5gVW5yZWNvZ25pemVkIGtleSR7ci5rZXlzLmxlbmd0aD4xPyJzIjoiIn06ICR7cmkoci5rZXlzLCIsICIpfWA7Y2FzZSJpbnZhbGlkX2tleSI6cmV0dXJuYEludmFsaWQga2V5IGluICR7ci5vcmlnaW59YDtjYXNlImludmFsaWRfdW5pb24iOnJldHVybiByLm9wdGlvbnMmJkFycmF5LmlzQXJyYXkoci5vcHRpb25zKSYmci5vcHRpb25zLmxlbmd0aD4wP2BJbnZhbGlkIGRpc2NyaW1pbmF0b3IgdmFsdWUuIEV4cGVjdGVkICR7ci5vcHRpb25zLm1hcChhPT5gJyR7YX0nYCkuam9pbigiIHwgIil9YDpyLmluY2x1c2l2ZT09PSExPyJJbnZhbGlkIGlucHV0OiBtb3JlIHRoYW4gb25lIG9wdGlvbiBtYXRjaGVkIjoiSW52YWxpZCBpbnB1dCI7Y2FzZSJpbnZhbGlkX2VsZW1lbnQiOnJldHVybmBJbnZhbGlkIHZhbHVlIGluICR7ci5vcmlnaW59YDtkZWZhdWx0OnJldHVybiJJbnZhbGlkIGlucHV0In19fTtmdW5jdGlvbiB2bSgpe3JldHVybntsb2NhbGVFcnJvcjpudigpfX1jb25zdCBnYT1PYmplY3QuZnJlZXplKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7X19wcm90b19fOm51bGwsZW46dm19LFN5bWJvbC50b1N0cmluZ1RhZyx7dmFsdWU6Ik1vZHVsZSJ9KSk7dmFyIFp1O2NvbnN0IGJhPVN5bWJvbCgiWm9kT3V0cHV0IiksdmE9U3ltYm9sKCJab2RJbnB1dCIpO2NsYXNzICRte2NvbnN0cnVjdG9yKCl7dGhpcy5fbWFwPW5ldyBXZWFrTWFwLHRoaXMuX2lkbWFwPW5ldyBNYXB9YWRkKHQsLi4ubil7Y29uc3Qgbz1uWzBdO3JldHVybiB0aGlzLl9tYXAuc2V0KHQsbyksbyYmdHlwZW9mIG89PSJvYmplY3QiJiYiaWQiaW4gbyYmdGhpcy5faWRtYXAuc2V0KG8uaWQsdCksdGhpc31jbGVhcigpe3JldHVybiB0aGlzLl9tYXA9bmV3IFdlYWtNYXAsdGhpcy5faWRtYXA9bmV3IE1hcCx0aGlzfXJlbW92ZSh0KXtjb25zdCBuPXRoaXMuX21hcC5nZXQodCk7cmV0dXJuIG4mJnR5cGVvZiBuPT0ib2JqZWN0IiYmImlkImluIG4mJnRoaXMuX2lkbWFwLmRlbGV0ZShuLmlkKSx0aGlzLl9tYXAuZGVsZXRlKHQpLHRoaXN9Z2V0KHQpe2NvbnN0IG49dC5fem9kLnBhcmVudDtpZihuKXtjb25zdCBvPXsuLi50aGlzLmdldChuKT8/e319O2RlbGV0ZSBvLmlkO2NvbnN0IHM9ey4uLm8sLi4udGhpcy5fbWFwLmdldCh0KX07cmV0dXJuIE9iamVjdC5rZXlzKHMpLmxlbmd0aD9zOnZvaWQgMH1yZXR1cm4gdGhpcy5fbWFwLmdldCh0KX1oYXModCl7cmV0dXJuIHRoaXMuX21hcC5oYXModCl9fWZ1bmN0aW9uIEJzKCl7cmV0dXJuIG5ldyAkbX0oWnU9Z2xvYmFsVGhpcykuX196b2RfZ2xvYmFsUmVnaXN0cnk/PyhadS5fX3pvZF9nbG9iYWxSZWdpc3RyeT1CcygpKTtjb25zdCBOZT1nbG9iYWxUaGlzLl9fem9kX2dsb2JhbFJlZ2lzdHJ5LCRhPSgpPT57dGhyb3cgbmV3IEVycm9yKCJ6b2QgY29tcGlsZSgpIGlzIG5vdCBidW5kbGVkIGludG8gY2FyZHMgLSBzZWUgcGFja2FnZXMvaW50ZXJuYWwvY2FyZC1raXQvdml0ZS1zbGltLm1qcyIpfTtjbGFzcyB5YSBleHRlbmRzIEVycm9ye31jbGFzcyBrYSBleHRlbmRzIEVycm9ye31jbGFzcyBfYSBleHRlbmRzIEVycm9ye31jb25zdCB3YT0kYSxTYT0kYSxvdj0kYTtmdW5jdGlvbiBVcyhlKXtyZXR1cm4gZS5jaGVja3MmJihlLmNoZWNrcz1bLi4uZS5jaGVja3NdKSxlfWZ1bmN0aW9uIHltKGUsdCl7cmV0dXJuIG5ldyBlKFVzKHt0eXBlOiJzdHJpbmciLC4uLncodCl9KSl9ZnVuY3Rpb24ga20oZSx0KXtyZXR1cm4gbmV3IGUoVXMoe3R5cGU6InN0cmluZyIsY29lcmNlOiEwLC4uLncodCl9KSl9ZnVuY3Rpb24gVGEoZSx0KXtyZXR1cm4gbmV3IGUoe3R5cGU6InN0cmluZyIsZm9ybWF0OiJlbWFpbCIsY2hlY2s6InN0cmluZ19mb3JtYXQiLGFib3J0OiExLC4uLncodCl9KX1mdW5jdGlvbiB6YShlLHQpe3JldHVybiBuZXcgZSh7dHlwZToic3RyaW5nIixmb3JtYXQ6Imd1aWQiLGNoZWNrOiJzdHJpbmdfZm9ybWF0IixhYm9ydDohMSwuLi53KHQpfSl9ZnVuY3Rpb24geGEoZSx0KXtyZXR1cm4gbmV3IGUoe3R5cGU6InN0cmluZyIsZm9ybWF0OiJ1dWlkIixjaGVjazoic3RyaW5nX2Zvcm1hdCIsYWJvcnQ6ITEsLi4udyh0KX0pfWZ1bmN0aW9uIElhKGUsdCl7cmV0dXJuIG5ldyBlKHt0eXBlOiJzdHJpbmciLGZvcm1hdDoidXVpZCIsY2hlY2s6InN0cmluZ19mb3JtYXQiLGFib3J0OiExLHZlcnNpb246InY0IiwuLi53KHQpfSl9ZnVuY3Rpb24gQWEoZSx0KXtyZXR1cm4gbmV3IGUoe3R5cGU6InN0cmluZyIsZm9ybWF0OiJ1dWlkIixjaGVjazoic3RyaW5nX2Zvcm1hdCIsYWJvcnQ6ITEsdmVyc2lvbjoidjYiLC4uLncodCl9KX1mdW5jdGlvbiBDYShlLHQpe3JldHVybiBuZXcgZSh7dHlwZToic3RyaW5nIixmb3JtYXQ6InV1aWQiLGNoZWNrOiJzdHJpbmdfZm9ybWF0IixhYm9ydDohMSx2ZXJzaW9uOiJ2NyIsLi4udyh0KX0pfWZ1bmN0aW9uIEZzKGUsdCl7cmV0dXJuIG5ldyBlKHt0eXBlOiJzdHJpbmciLGZvcm1hdDoidXJsIixjaGVjazoic3RyaW5nX2Zvcm1hdCIsYWJvcnQ6ITEsLi4udyh0KX0pfWZ1bmN0aW9uIFBhKGUsdCl7cmV0dXJuIG5ldyBlKHt0eXBlOiJzdHJpbmciLGZvcm1hdDoiZW1vamkiLGNoZWNrOiJzdHJpbmdfZm9ybWF0IixhYm9ydDohMSwuLi53KHQpfSl9ZnVuY3Rpb24gRWEoZSx0KXtyZXR1cm4gbmV3IGUoe3R5cGU6InN0cmluZyIsZm9ybWF0OiJuYW5vaWQiLGNoZWNrOiJzdHJpbmdfZm9ybWF0IixhYm9ydDohMSwuLi53KHQpfSl9ZnVuY3Rpb24gT2EoZSx0KXtyZXR1cm4gbmV3IGUoe3R5cGU6InN0cmluZyIsZm9ybWF0OiJjdWlkIixjaGVjazoic3RyaW5nX2Zvcm1hdCIsYWJvcnQ6ITEsLi4udyh0KX0pfWZ1bmN0aW9uIFJhKGUsdCl7cmV0dXJuIG5ldyBlKHt0eXBlOiJzdHJpbmciLGZvcm1hdDoiY3VpZDIiLGNoZWNrOiJzdHJpbmdfZm9ybWF0IixhYm9ydDohMSwuLi53KHQpfSl9ZnVuY3Rpb24gTmEoZSx0KXtyZXR1cm4gbmV3IGUoe3R5cGU6InN0cmluZyIsZm9ybWF0OiJ1bGlkIixjaGVjazoic3RyaW5nX2Zvcm1hdCIsYWJvcnQ6ITEsLi4udyh0KX0pfWZ1bmN0aW9uIFphKGUsdCl7cmV0dXJuIG5ldyBlKHt0eXBlOiJzdHJpbmciLGZvcm1hdDoieGlkIixjaGVjazoic3RyaW5nX2Zvcm1hdCIsYWJvcnQ6ITEsLi4udyh0KX0pfWZ1bmN0aW9uIE1hKGUsdCl7cmV0dXJuIG5ldyBlKHt0eXBlOiJzdHJpbmciLGZvcm1hdDoia3N1aWQiLGNoZWNrOiJzdHJpbmdfZm9ybWF0IixhYm9ydDohMSwuLi53KHQpfSl9ZnVuY3Rpb24gamEoZSx0KXtyZXR1cm4gbmV3IGUoe3R5cGU6InN0cmluZyIsZm9ybWF0OiJpcHY0IixjaGVjazoic3RyaW5nX2Zvcm1hdCIsYWJvcnQ6ITEsLi4udyh0KX0pfWZ1bmN0aW9uIHFhKGUsdCl7cmV0dXJuIG5ldyBlKHt0eXBlOiJzdHJpbmciLGZvcm1hdDoiaXB2NiIsY2hlY2s6InN0cmluZ19mb3JtYXQiLGFib3J0OiExLC4uLncodCl9KX1mdW5jdGlvbiBfbShlLHQpe3JldHVybiBuZXcgZSh7dHlwZToic3RyaW5nIixmb3JtYXQ6Im1hYyIsY2hlY2s6InN0cmluZ19mb3JtYXQiLGFib3J0OiExLC4uLncodCl9KX1mdW5jdGlvbiBMYShlLHQpe3JldHVybiBuZXcgZSh7dHlwZToic3RyaW5nIixmb3JtYXQ6ImNpZHJ2NCIsY2hlY2s6InN0cmluZ19mb3JtYXQiLGFib3J0OiExLC4uLncodCl9KX1mdW5jdGlvbiBEYShlLHQpe3JldHVybiBuZXcgZSh7dHlwZToic3RyaW5nIixmb3JtYXQ6ImNpZHJ2NiIsY2hlY2s6InN0cmluZ19mb3JtYXQiLGFib3J0OiExLC4uLncodCl9KX1mdW5jdGlvbiBCYShlLHQpe3JldHVybiBuZXcgZSh7dHlwZToic3RyaW5nIixmb3JtYXQ6ImJhc2U2NCIsY2hlY2s6InN0cmluZ19mb3JtYXQiLGFib3J0OiExLC4uLncodCl9KX1mdW5jdGlvbiBVYShlLHQpe3JldHVybiBuZXcgZSh7dHlwZToic3RyaW5nIixmb3JtYXQ6ImJhc2U2NHVybCIsY2hlY2s6InN0cmluZ19mb3JtYXQiLGFib3J0OiExLC4uLncodCl9KX1mdW5jdGlvbiBGYShlLHQpe3JldHVybiBuZXcgZSh7dHlwZToic3RyaW5nIixmb3JtYXQ6ImUxNjQiLGNoZWNrOiJzdHJpbmdfZm9ybWF0IixhYm9ydDohMSwuLi53KHQpfSl9ZnVuY3Rpb24gd20oZSx0KXtyZXR1cm4gbmV3IGUoe3R5cGU6InN0cmluZyIsZm9ybWF0OiJjcmVkaXRfY2FyZCIsY2hlY2s6InN0cmluZ19mb3JtYXQiLGFib3J0OiExLC4uLncodCl9KX1mdW5jdGlvbiBTbShlLHQpe3JldHVybiBuZXcgZSh7dHlwZToic3RyaW5nIixmb3JtYXQ6ImliYW4iLGNoZWNrOiJzdHJpbmdfZm9ybWF0IixhYm9ydDohMSwuLi53KHQpfSl9ZnVuY3Rpb24gSGEoZSx0KXtyZXR1cm4gbmV3IGUoe3R5cGU6InN0cmluZyIsZm9ybWF0OiJqd3QiLGNoZWNrOiJzdHJpbmdfZm9ybWF0IixhYm9ydDohMSwuLi53KHQpfSl9Y29uc3QgV2E9e0FueTpudWxsLE1pbnV0ZTotMSxTZWNvbmQ6MCxNaWxsaXNlY29uZDozLE1pY3Jvc2Vjb25kOjZ9O2Z1bmN0aW9uIFZhKGUsdCl7cmV0dXJuIG5ldyBlKHt0eXBlOiJzdHJpbmciLGZvcm1hdDoiZGF0ZXRpbWUiLGNoZWNrOiJzdHJpbmdfZm9ybWF0IixvZmZzZXQ6ITEsbG9jYWw6ITEscHJlY2lzaW9uOm51bGwsLi4udyh0KX0pfWZ1bmN0aW9uIEphKGUsdCl7cmV0dXJuIG5ldyBlKHt0eXBlOiJzdHJpbmciLGZvcm1hdDoiZGF0ZSIsY2hlY2s6InN0cmluZ19mb3JtYXQiLC4uLncodCl9KX1mdW5jdGlvbiBLYShlLHQpe3JldHVybiBuZXcgZSh7dHlwZToic3RyaW5nIixmb3JtYXQ6InRpbWUiLGNoZWNrOiJzdHJpbmdfZm9ybWF0IixwcmVjaXNpb246bnVsbCwuLi53KHQpfSl9ZnVuY3Rpb24gR2EoZSx0KXtyZXR1cm4gbmV3IGUoe3R5cGU6InN0cmluZyIsZm9ybWF0OiJkdXJhdGlvbiIsY2hlY2s6InN0cmluZ19mb3JtYXQiLC4uLncodCl9KX1mdW5jdGlvbiBUbShlLHQpe3JldHVybiBuZXcgZShVcyh7dHlwZToibnVtYmVyIixjaGVja3M6W10sLi4udyh0KX0pKX1mdW5jdGlvbiB6bShlLHQpe3JldHVybiBuZXcgZShVcyh7dHlwZToibnVtYmVyIixjb2VyY2U6ITAsY2hlY2tzOltdLC4uLncodCl9KSl9ZnVuY3Rpb24geG0oZSx0KXtyZXR1cm4gbmV3IGUoe3R5cGU6Im51bWJlciIsY2hlY2s6Im51bWJlcl9mb3JtYXQiLGFib3J0OiExLGZvcm1hdDoic2FmZWludCIsLi4udyh0KX0pfWZ1bmN0aW9uIEltKGUsdCl7cmV0dXJuIG5ldyBlKHt0eXBlOiJudW1iZXIiLGNoZWNrOiJudW1iZXJfZm9ybWF0IixhYm9ydDohMSxmb3JtYXQ6ImZsb2F0MzIiLC4uLncodCl9KX1mdW5jdGlvbiBBbShlLHQpe3JldHVybiBuZXcgZSh7dHlwZToibnVtYmVyIixjaGVjazoibnVtYmVyX2Zvcm1hdCIsYWJvcnQ6ITEsZm9ybWF0OiJmbG9hdDY0IiwuLi53KHQpfSl9ZnVuY3Rpb24gQ20oZSx0KXtyZXR1cm4gbmV3IGUoe3R5cGU6Im51bWJlciIsY2hlY2s6Im51bWJlcl9mb3JtYXQiLGFib3J0OiExLGZvcm1hdDoiaW50MzIiLC4uLncodCl9KX1mdW5jdGlvbiBQbShlLHQpe3JldHVybiBuZXcgZSh7dHlwZToibnVtYmVyIixjaGVjazoibnVtYmVyX2Zvcm1hdCIsYWJvcnQ6ITEsZm9ybWF0OiJ1aW50MzIiLC4uLncodCl9KX1mdW5jdGlvbiBFbShlLHQpe3JldHVybiBuZXcgZSh7dHlwZToiYm9vbGVhbiIsLi4udyh0KX0pfWZ1bmN0aW9uIE9tKGUsdCl7cmV0dXJuIG5ldyBlKHt0eXBlOiJib29sZWFuIixjb2VyY2U6ITAsLi4udyh0KX0pfWZ1bmN0aW9uIFJtKGUsdCl7cmV0dXJuIG5ldyBlKHt0eXBlOiJiaWdpbnQiLC4uLncodCl9KX1mdW5jdGlvbiBObShlLHQpe3JldHVybiBuZXcgZSh7dHlwZToiYmlnaW50Iixjb2VyY2U6ITAsLi4udyh0KX0pfWZ1bmN0aW9uIFptKGUsdCl7cmV0dXJuIG5ldyBlKHt0eXBlOiJiaWdpbnQiLGNoZWNrOiJiaWdpbnRfZm9ybWF0IixhYm9ydDohMSxmb3JtYXQ6ImludDY0IiwuLi53KHQpfSl9ZnVuY3Rpb24gTW0oZSx0KXtyZXR1cm4gbmV3IGUoe3R5cGU6ImJpZ2ludCIsY2hlY2s6ImJpZ2ludF9mb3JtYXQiLGFib3J0OiExLGZvcm1hdDoidWludDY0IiwuLi53KHQpfSl9ZnVuY3Rpb24gam0oZSx0KXtyZXR1cm4gbmV3IGUoe3R5cGU6InN5bWJvbCIsLi4udyh0KX0pfWZ1bmN0aW9uIHFtKGUsdCl7cmV0dXJuIG5ldyBlKHt0eXBlOiJ1bmRlZmluZWQiLC4uLncodCl9KX1mdW5jdGlvbiBMbShlLHQpe3JldHVybiBuZXcgZSh7dHlwZToibnVsbCIsLi4udyh0KX0pfWZ1bmN0aW9uIERtKGUpe3JldHVybiBuZXcgZSh7dHlwZToiYW55In0pfWZ1bmN0aW9uIEJtKGUpe3JldHVybiBuZXcgZSh7dHlwZToidW5rbm93biJ9KX1mdW5jdGlvbiBVbShlLHQpe3JldHVybiBuZXcgZSh7dHlwZToibmV2ZXIiLC4uLncodCl9KX1mdW5jdGlvbiBGbShlLHQpe3JldHVybiBuZXcgZSh7dHlwZToidm9pZCIsLi4udyh0KX0pfWZ1bmN0aW9uIEhtKGUsdCl7cmV0dXJuIG5ldyBlKHt0eXBlOiJkYXRlIiwuLi53KHQpfSl9ZnVuY3Rpb24gV20oZSx0KXtyZXR1cm4gbmV3IGUoe3R5cGU6ImRhdGUiLGNvZXJjZTohMCwuLi53KHQpfSl9ZnVuY3Rpb24gVm0oZSx0KXtyZXR1cm4gbmV3IGUoe3R5cGU6Im5hbiIsLi4udyh0KX0pfWZ1bmN0aW9uIEdlKGUsdCl7cmV0dXJuIG5ldyBYaSh7Y2hlY2s6Imxlc3NfdGhhbiIsLi4udyh0KSx2YWx1ZTplLGluY2x1c2l2ZTohMX0pfWZ1bmN0aW9uIHhlKGUsdCl7cmV0dXJuIG5ldyBYaSh7Y2hlY2s6Imxlc3NfdGhhbiIsLi4udyh0KSx2YWx1ZTplLGluY2x1c2l2ZTohMH0pfWZ1bmN0aW9uIFllKGUsdCl7cmV0dXJuIG5ldyBlYSh7Y2hlY2s6ImdyZWF0ZXJfdGhhbiIsLi4udyh0KSx2YWx1ZTplLGluY2x1c2l2ZTohMX0pfWZ1bmN0aW9uIEllKGUsdCl7cmV0dXJuIG5ldyBlYSh7Y2hlY2s6ImdyZWF0ZXJfdGhhbiIsLi4udyh0KSx2YWx1ZTplLGluY2x1c2l2ZTohMH0pfWZ1bmN0aW9uIEhzKGUpe3JldHVybiBZZSgwLGUpfWZ1bmN0aW9uIFdzKGUpe3JldHVybiBHZSgwLGUpfWZ1bmN0aW9uIFZzKGUpe3JldHVybiB4ZSgwLGUpfWZ1bmN0aW9uIEpzKGUpe3JldHVybiBJZSgwLGUpfWZ1bmN0aW9uICR0KGUsdCl7cmV0dXJuIG5ldyB3cCh7Y2hlY2s6Im11bHRpcGxlX29mIiwuLi53KHQpLHZhbHVlOmV9KX1mdW5jdGlvbiBDdChlLHQpe3JldHVybiBuZXcgenAoe2NoZWNrOiJtYXhfc2l6ZSIsLi4udyh0KSxtYXhpbXVtOmV9KX1mdW5jdGlvbiBRZShlLHQpe3JldHVybiBuZXcgeHAoe2NoZWNrOiJtaW5fc2l6ZSIsLi4udyh0KSxtaW5pbXVtOmV9KX1mdW5jdGlvbiBHdChlLHQpe3JldHVybiBuZXcgSXAoe2NoZWNrOiJzaXplX2VxdWFscyIsLi4udyh0KSxzaXplOmV9KX1mdW5jdGlvbiBZdChlLHQpe3JldHVybiBuZXcgQXAoe2NoZWNrOiJtYXhfbGVuZ3RoIiwuLi53KHQpLG1heGltdW06ZX0pfWZ1bmN0aW9uIGl0KGUsdCl7cmV0dXJuIG5ldyBDcCh7Y2hlY2s6Im1pbl9sZW5ndGgiLC4uLncodCksbWluaW11bTplfSl9ZnVuY3Rpb24gUXQoZSx0KXtyZXR1cm4gbmV3IFBwKHtjaGVjazoibGVuZ3RoX2VxdWFscyIsLi4udyh0KSxsZW5ndGg6ZX0pfWZ1bmN0aW9uIEpuKGUsdCl7cmV0dXJuIG5ldyBFcCh7Y2hlY2s6InN0cmluZ19mb3JtYXQiLGZvcm1hdDoicmVnZXgiLC4uLncodCkscGF0dGVybjplfSl9ZnVuY3Rpb24gS24oZSl7cmV0dXJuIG5ldyBPcCh7Y2hlY2s6InN0cmluZ19mb3JtYXQiLGZvcm1hdDoibG93ZXJjYXNlIiwuLi53KGUpfSl9ZnVuY3Rpb24gR24oZSl7cmV0dXJuIG5ldyBScCh7Y2hlY2s6InN0cmluZ19mb3JtYXQiLGZvcm1hdDoidXBwZXJjYXNlIiwuLi53KGUpfSl9ZnVuY3Rpb24gWW4oZSx0KXtyZXR1cm4gbmV3IE5wKHtjaGVjazoic3RyaW5nX2Zvcm1hdCIsZm9ybWF0OiJpbmNsdWRlcyIsLi4udyh0KSxpbmNsdWRlczplfSl9ZnVuY3Rpb24gUW4oZSx0KXtyZXR1cm4gbmV3IFpwKHtjaGVjazoic3RyaW5nX2Zvcm1hdCIsZm9ybWF0OiJzdGFydHNfd2l0aCIsLi4udyh0KSxwcmVmaXg6ZX0pfWZ1bmN0aW9uIFhuKGUsdCl7cmV0dXJuIG5ldyBNcCh7Y2hlY2s6InN0cmluZ19mb3JtYXQiLGZvcm1hdDoiZW5kc193aXRoIiwuLi53KHQpLHN1ZmZpeDplfSl9ZnVuY3Rpb24gS3MoZSx0LG4pe3JldHVybiBuZXcganAoe2NoZWNrOiJwcm9wZXJ0eSIscHJvcGVydHk6ZSxzY2hlbWE6dCwuLi53KG4pfSl9ZnVuY3Rpb24gZW8oZSx0KXtyZXR1cm4gbmV3IHFwKHtjaGVjazoicHJvcGVydGllcyIsc2hhcGU6ZSwuLi53KHQpfSl9ZnVuY3Rpb24gdG8oZSx0KXtyZXR1cm4gbmV3IExwKHtjaGVjazoibWltZV90eXBlIixtaW1lOmUsLi4udyh0KX0pfWZ1bmN0aW9uIFdlKGUpe3JldHVybiBuZXcgRHAoe2NoZWNrOiJvdmVyd3JpdGUiLHR4OmV9KX1mdW5jdGlvbiBubyhlKXtyZXR1cm4gV2UodD0+dC5ub3JtYWxpemUoZSkpfWZ1bmN0aW9uIG9vKCl7cmV0dXJuIFdlKGU9PmUudHJpbSgpKX1mdW5jdGlvbiBzbygpe3JldHVybiBXZShlPT5lLnRvTG93ZXJDYXNlKCkpfWZ1bmN0aW9uIHJvKCl7cmV0dXJuIFdlKGU9PmUudG9VcHBlckNhc2UoKSl9ZnVuY3Rpb24gaW8oKXtyZXR1cm4gV2UoZT0+YmQoZSkpfWZ1bmN0aW9uIEptKGUsdCxuKXtyZXR1cm4gbmV3IGUoe3R5cGU6ImFycmF5IixlbGVtZW50OnQsLi4udyhuKX0pfWZ1bmN0aW9uIHN2KGUsdCxuKXtyZXR1cm4gbmV3IGUoe3R5cGU6InVuaW9uIixvcHRpb25zOnQsLi4udyhuKX0pfWZ1bmN0aW9uIHJ2KGUsdCxuKXtyZXR1cm4gbmV3IGUoe3R5cGU6InVuaW9uIixvcHRpb25zOnQsaW5jbHVzaXZlOiExLC4uLncobil9KX1mdW5jdGlvbiBpdihlLHQsbixvKXtyZXR1cm4gbmV3IGUoe3R5cGU6InVuaW9uIixvcHRpb25zOm4sZGlzY3JpbWluYXRvcjp0LC4uLncobyl9KX1mdW5jdGlvbiBhdihlLHQsbil7cmV0dXJuIG5ldyBlKHt0eXBlOiJpbnRlcnNlY3Rpb24iLGxlZnQ6dCxyaWdodDpufSl9ZnVuY3Rpb24gY3YoZSx0LG4sbyl7Y29uc3Qgcz1uIGluc3RhbmNlb2YgUixyPXM/bzpuLGk9cz9uOm51bGw7cmV0dXJuIG5ldyBlKHt0eXBlOiJ0dXBsZSIsaXRlbXM6dCxyZXN0OmksLi4udyhyKX0pfWZ1bmN0aW9uIGx2KGUsdCxuLG8pe3JldHVybiBuZXcgZSh7dHlwZToicmVjb3JkIixrZXlUeXBlOnQsdmFsdWVUeXBlOm4sLi4udyhvKX0pfWZ1bmN0aW9uIHV2KGUsdCxuLG8pe3JldHVybiBuZXcgZSh7dHlwZToibWFwIixrZXlUeXBlOnQsdmFsdWVUeXBlOm4sLi4udyhvKX0pfWZ1bmN0aW9uIGR2KGUsdCxuKXtyZXR1cm4gbmV3IGUoe3R5cGU6InNldCIsdmFsdWVUeXBlOnQsLi4udyhuKX0pfWZ1bmN0aW9uIHB2KGUsdCxuKXtjb25zdCBvPUFycmF5LmlzQXJyYXkodCk/T2JqZWN0LmZyb21FbnRyaWVzKHQubWFwKHM9PltzLHNdKSk6dDtyZXR1cm4gbmV3IGUoe3R5cGU6ImVudW0iLGVudHJpZXM6bywuLi53KG4pfSl9ZnVuY3Rpb24gaHYoZSx0LG4pe3JldHVybiBuZXcgZSh7dHlwZToiZW51bSIsZW50cmllczp0LC4uLncobil9KX1mdW5jdGlvbiBtdihlLHQsbil7cmV0dXJuIG5ldyBlKHt0eXBlOiJsaXRlcmFsIix2YWx1ZXM6QXJyYXkuaXNBcnJheSh0KT90Olt0XSwuLi53KG4pfSl9ZnVuY3Rpb24gS20oZSx0KXtyZXR1cm4gbmV3IGUoe3R5cGU6ImZpbGUiLC4uLncodCl9KX1mdW5jdGlvbiBmdihlLHQpe3JldHVybiBuZXcgZSh7dHlwZToidHJhbnNmb3JtIix0cmFuc2Zvcm06dH0pfWZ1bmN0aW9uIGd2KGUsdCl7cmV0dXJuIG5ldyBlKHt0eXBlOiJvcHRpb25hbCIsaW5uZXJUeXBlOnR9KX1mdW5jdGlvbiBidihlLHQpe3JldHVybiBuZXcgZSh7dHlwZToibnVsbGFibGUiLGlubmVyVHlwZTp0fSl9ZnVuY3Rpb24gdnYoZSx0LG4pe3JldHVybiBuZXcgZSh7dHlwZToiZGVmYXVsdCIsaW5uZXJUeXBlOnQsZ2V0IGRlZmF1bHRWYWx1ZSgpe3JldHVybiB0eXBlb2Ygbj09ImZ1bmN0aW9uIj9uKCk6enMobil9fSl9ZnVuY3Rpb24gJHYoZSx0LG4pe3JldHVybiBuZXcgZSh7dHlwZToibm9ub3B0aW9uYWwiLGlubmVyVHlwZTp0LC4uLncobil9KX1mdW5jdGlvbiB5dihlLHQpe3JldHVybiBuZXcgZSh7dHlwZToic3VjY2VzcyIsaW5uZXJUeXBlOnR9KX1mdW5jdGlvbiBrdihlLHQsbil7cmV0dXJuIG5ldyBlKHt0eXBlOiJjYXRjaCIsaW5uZXJUeXBlOnQsY2F0Y2hWYWx1ZTp0eXBlb2Ygbj09ImZ1bmN0aW9uIj9uOlJpKG4pfSl9ZnVuY3Rpb24gX3YoZSx0LG4pe3JldHVybiBuZXcgZSh7dHlwZToicGlwZSIsaW46dCxvdXQ6bn0pfWZ1bmN0aW9uIHd2KGUsdCl7cmV0dXJuIG5ldyBlKHt0eXBlOiJyZWFkb25seSIsaW5uZXJUeXBlOnR9KX1mdW5jdGlvbiBTdihlLHQsbil7cmV0dXJuIG5ldyBlKHt0eXBlOiJ0ZW1wbGF0ZV9saXRlcmFsIixwYXJ0czp0LC4uLncobil9KX1mdW5jdGlvbiBUdihlLHQpe3JldHVybiBuZXcgZSh7dHlwZToibGF6eSIsZ2V0dGVyOnR9KX1mdW5jdGlvbiB6dihlLHQpe3JldHVybiBuZXcgZSh7dHlwZToicHJvbWlzZSIsaW5uZXJUeXBlOnR9KX1mdW5jdGlvbiBHbShlLHQsbil7Y29uc3Qgbz13KG4pO3JldHVybiBvLmFib3J0Pz8oby5hYm9ydD0hMCksbmV3IGUoe3R5cGU6ImN1c3RvbSIsY2hlY2s6ImN1c3RvbSIsZm46dCwuLi5vfSl9ZnVuY3Rpb24gWW0oZSx0LG4pe3JldHVybiBuZXcgZSh7dHlwZToiY3VzdG9tIixjaGVjazoiY3VzdG9tIixmbjp0LC4uLncobil9KX1mdW5jdGlvbiBRbShlLHQpe2NvbnN0IG49WG0obz0+KG8uYWRkSXNzdWU9cz0+e2lmKHR5cGVvZiBzPT0ic3RyaW5nIilvLmlzc3Vlcy5wdXNoKEJ0KHMsby52YWx1ZSxuLl96b2QuZGVmKSk7ZWxzZXtjb25zdCByPXM7ci5mYXRhbCYmKHIuY29udGludWU9ITEpLHIuY29kZT8/KHIuY29kZT0iY3VzdG9tIiksImlucHV0ImluIHJ8fChyLmlucHV0PW8udmFsdWUpLHIuaW5zdD8/KHIuaW5zdD1uKSxyLmNvbnRpbnVlPz8oci5jb250aW51ZT0hbi5fem9kLmRlZi5hYm9ydCksby5pc3N1ZXMucHVzaChCdChyKSl9fSxlKG8udmFsdWUsbykpLHQpO3JldHVybiBufWZ1bmN0aW9uIFhtKGUsdCl7Y29uc3Qgbj1uZXcgb2Uoe2NoZWNrOiJjdXN0b20iLC4uLncodCl9KTtyZXR1cm4gbi5fem9kLmNoZWNrPWUsbn1mdW5jdGlvbiBlZihlKXtjb25zdCB0PW5ldyBvZSh7Y2hlY2s6ImRlc2NyaWJlIn0pO3JldHVybiB0Ll96b2Qub25hdHRhY2g9W249Pntjb25zdCBvPU5lLmdldChuKT8/e307TmUuYWRkKG4sey4uLm8sZGVzY3JpcHRpb246ZX0pfV0sdC5fem9kLmNoZWNrPSgpPT57fSx0fWZ1bmN0aW9uIHRmKGUpe2NvbnN0IHQ9bmV3IG9lKHtjaGVjazoibWV0YSJ9KTtyZXR1cm4gdC5fem9kLm9uYXR0YWNoPVtuPT57Y29uc3Qgbz1OZS5nZXQobik/P3t9O05lLmFkZChuLHsuLi5vLC4uLmV9KX1dLHQuX3pvZC5jaGVjaz0oKT0+e30sdH1mdW5jdGlvbiBuZihlLHQpe2NvbnN0IG49dyh0KTtsZXQgbz1uLnRydXRoeT8/WyJ0cnVlIiwiMSIsInllcyIsIm9uIiwieSIsImVuYWJsZWQiXSxzPW4uZmFsc3k/P1siZmFsc2UiLCIwIiwibm8iLCJvZmYiLCJuIiwiZGlzYWJsZWQiXTtuLmNhc2UhPT0ic2Vuc2l0aXZlIiYmKG89by5tYXAoJD0+dHlwZW9mICQ9PSJzdHJpbmciPyQudG9Mb3dlckNhc2UoKTokKSxzPXMubWFwKCQ9PnR5cGVvZiAkPT0ic3RyaW5nIj8kLnRvTG93ZXJDYXNlKCk6JCkpO2NvbnN0IHI9bmV3IFNldChvKSxpPW5ldyBTZXQocyksYT1lLkNvZGVjPz9tYSxkPWUuQm9vbGVhbj8/Y2EsdT1lLlN0cmluZz8/Vm4scD1uZXcgdSh7dHlwZToic3RyaW5nIixlcnJvcjpuLmVycm9yfSksaD1uZXcgZCh7dHlwZToiYm9vbGVhbiIsZXJyb3I6bi5lcnJvcn0pLGI9bmV3IGEoe3R5cGU6InBpcGUiLGluOnAsb3V0OmgsdHJhbnNmb3JtOigoJCxrKT0+e2xldCBUPSQ7cmV0dXJuIG4uY2FzZSE9PSJzZW5zaXRpdmUiJiYoVD1ULnRvTG93ZXJDYXNlKCkpLHIuaGFzKFQpPyEwOmkuaGFzKFQpPyExOihrLmlzc3Vlcy5wdXNoKHtjb2RlOiJpbnZhbGlkX3ZhbHVlIixleHBlY3RlZDoic3RyaW5nYm9vbCIsdmFsdWVzOlsuLi5yLC4uLmldLGlucHV0OmsudmFsdWUsaW5zdDpiLGNvbnRpbnVlOiExfSkse30pfSkscmV2ZXJzZVRyYW5zZm9ybTooKCQsayk9PiQ9PT0hMD9vWzBdfHwidHJ1ZSI6c1swXXx8ImZhbHNlIiksZXJyb3I6bi5lcnJvcn0pO3JldHVybiBiLl96b2QuYmFnLnRydXRoeT1vLGIuX3pvZC5iYWcuZmFsc3k9cyxiLl96b2QuYmFnLmNhc2U9bi5jYXNlPz8iaW5zZW5zaXRpdmUiLGJ9ZnVuY3Rpb24gWHQoZSx0LG4sbz17fSl7Y29uc3Qgcz13KG8pLHI9e2NoZWNrOiJzdHJpbmdfZm9ybWF0Iix0eXBlOiJzdHJpbmciLGZvcm1hdDp0LGZuOnR5cGVvZiBuPT0iZnVuY3Rpb24iP246YT0+bi50ZXN0KGEpLC4uLnN9O3JldHVybiBuIGluc3RhbmNlb2YgUmVnRXhwJiYoci5wYXR0ZXJuPW4pLG5ldyBlKHIpfWNvbnN0IHh2PSgpPT4oe30pLEl2PSgpPT4oe30pLEF2PSgpPT4oe30pLEN2PSgpPT4oe30pLFB2PSgpPT4oe30pLG9mPSgpPT4oKT0+KHt9KSxtaT0oKT0+KCk9Pih7fSksRXY9KCk9Pih7fSksWmU9KCk9Pih7fSksT3Y9KCk9Pih7fSksUnY9KCk9Pih7fSksTnY9KCk9Pih7fSksWnY9KCk9Pih7fSksTXY9KCk9Pih7fSksanY9KCk9Pih7fSkscXY9KCk9Pih7fSksTHY9KCk9Pih7fSksRHY9KCk9Pih7fSksQnY9KCk9Pih7fSksVXY9KCk9Pih7fSksRnY9KCk9Pih7fSksSHY9KCk9Pih7fSksV3Y9KCk9Pih7fSksVnY9KCk9Pih7fSksSnY9KCk9Pih7fSksS3Y9KCk9Pih7fSksR3Y9KCk9Pih7fSksWXY9KCk9Pih7fSksUXY9KCk9Pih7fSksWHY9KCk9Pih7fSksZSQ9KCk9Pih7fSksdCQ9KCk9Pih7fSksbiQ9KCk9Pih7fSksbyQ9KCk9Pih7fSksc2Y9KCk9Pih7fSkscyQ9KCk9Pih7fSksciQ9KCk9Pih7fSksaSQ9KCk9Pih7fSksYSQ9KCk9Pih7fSksYyQ9KCk9Pih7fSksbCQ9KCk9Pih7fSksdSQ9KCk9Pih7fSksZCQ9KCk9Pih7fSkscCQ9KCk9Pih7fSksaCQ9KCk9Pih7fSksbSQ9KCk9Pih7fSkscmY9KCk9Pih7fSksZiQ9KCk9Pih7fSksWWE9KCk9Pih7fSk7Y2xhc3MgZyR7fWNvbnN0IGIkPU9iamVjdC5mcmVlemUoT2JqZWN0LmRlZmluZVByb3BlcnR5KHtfX3Byb3RvX186bnVsbH0sU3ltYm9sLnRvU3RyaW5nVGFnLHt2YWx1ZToiTW9kdWxlIn0pKSxhZj1PYmplY3QuZnJlZXplKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7X19wcm90b19fOm51bGwsJFpvZEFueTpPaCwkWm9kQXJyYXk6amgsJFpvZEFzeW5jRXJyb3I6c3QsJFpvZEJhc2U2NDpiaCwkWm9kQmFzZTY0VVJMOiRoLCRab2RCaWdJbnQ6bGEsJFpvZEJpZ0ludEZvcm1hdDpBaCwkWm9kQm9vbGVhbjpjYSwkWm9kQ0lEUnY0OmhoLCRab2RDSURSdjY6ZmgsJFpvZENVSUQ6dGgsJFpvZENVSUQyOm5oLCRab2RDYXRjaDppbSwkWm9kQ2hlY2s6b2UsJFpvZENoZWNrQmlnSW50Rm9ybWF0OlRwLCRab2RDaGVja0VuZHNXaXRoOk1wLCRab2RDaGVja0dyZWF0ZXJUaGFuOmVhLCRab2RDaGVja0luY2x1ZGVzOk5wLCRab2RDaGVja0xlbmd0aEVxdWFsczpQcCwkWm9kQ2hlY2tMZXNzVGhhbjpYaSwkWm9kQ2hlY2tMb3dlckNhc2U6T3AsJFpvZENoZWNrTWF4TGVuZ3RoOkFwLCRab2RDaGVja01heFNpemU6enAsJFpvZENoZWNrTWltZVR5cGU6THAsJFpvZENoZWNrTWluTGVuZ3RoOkNwLCRab2RDaGVja01pblNpemU6eHAsJFpvZENoZWNrTXVsdGlwbGVPZjp3cCwkWm9kQ2hlY2tOdW1iZXJGb3JtYXQ6U3AsJFpvZENoZWNrT3ZlcndyaXRlOkRwLCRab2RDaGVja1Byb3BlcnRpZXM6cXAsJFpvZENoZWNrUHJvcGVydHk6anAsJFpvZENoZWNrUmVnZXg6RXAsJFpvZENoZWNrU2l6ZUVxdWFsczpJcCwkWm9kQ2hlY2tTdGFydHNXaXRoOlpwLCRab2RDaGVja1N0cmluZ0Zvcm1hdDpXbiwkWm9kQ2hlY2tVcHBlckNhc2U6UnAsJFpvZENvZGVjOm1hLCRab2RDcmVkaXRDYXJkOl9oLCRab2RDdXN0b206aG0sJFpvZEN1c3RvbVN0cmluZ0Zvcm1hdDp4aCwkWm9kQ3ljbGljRXJyb3I6bW0sJFpvZERhdGU6TWgsJFpvZERlZmF1bHQ6bm0sJFpvZERpc2NyaW1pbmF0ZWRVbmlvbjpIaCwkWm9kRTE2NDp5aCwkWm9kRW1haWw6VnAsJFpvZEVtb2ppOlhwLCRab2RFbmNvZGVFcnJvcjpFcywkWm9kRW51bTpHaCwkWm9kRXJyb3I6amQsJFpvZEV4YWN0T3B0aW9uYWw6ZW0sJFpvZEZpbGU6UWgsJFpvZEZ1bmN0aW9uOmRtLCRab2RHVUlEOkhwLCRab2RJQkFOOlNoLCRab2RJUHY0OnVoLCRab2RJUHY2OmRoLCRab2RJU09EYXRlOmFoLCRab2RJU09EYXRlVGltZTppaCwkWm9kSVNPRHVyYXRpb246bGgsJFpvZElTT1RpbWU6Y2gsJFpvZEludGVyc2VjdGlvbjpXaCwkWm9kSldUOnpoLCRab2RLU1VJRDpyaCwkWm9kTGF6eTpmYSwkWm9kTGl0ZXJhbDpZaCwkWm9kTUFDOnBoLCRab2RNYXA6SmgsJFpvZE5hTjphbSwkWm9kTmFub0lEOmVoLCRab2ROZXZlcjpOaCwkWm9kTm9uT3B0aW9uYWw6c20sJFpvZE51bGw6RWgsJFpvZE51bGxhYmxlOnRtLCRab2ROdW1iZXI6YWEsJFpvZE51bWJlckZvcm1hdDpJaCwkWm9kT2JqZWN0OkRoLCRab2RPYmplY3RKSVQ6QmgsJFpvZE9wdGlvbmFsOnBhLCRab2RQaXBlOmhhLCRab2RQcmVmYXVsdDpvbSwkWm9kUHJlcHJvY2VzczpjbSwkWm9kUHJvbWlzZTpwbSwkWm9kUmVhZG9ubHk6bG0sJFpvZFJlYWxFcnJvcjpQZSwkWm9kUmVjb3JkOlZoLCRab2RSZWdpc3RyeTokbSwkWm9kU2V0OktoLCRab2RTdHJpbmc6Vm4sJFpvZFN0cmluZ0Zvcm1hdDpRLCRab2RTdWNjZXNzOnJtLCRab2RTeW1ib2w6Q2gsJFpvZFRlbXBsYXRlTGl0ZXJhbDp1bSwkWm9kVHJhbnNmb3JtOlhoLCRab2RUdXBsZTpkYSwkWm9kVHlwZTpSLCRab2RVTElEOm9oLCRab2RVUkw6UXAsJFpvZFVVSUQ6V3AsJFpvZFVuZGVmaW5lZDpQaCwkWm9kVW5pb246THMsJFpvZFVua25vd246UmgsJFpvZFZvaWQ6WmgsJFpvZFhJRDpzaCwkWm9kWG9yOlVoLCRicmFuZDpNaSwkY29uc3RydWN0b3I6bSwkaW5wdXQ6dmEsJG91dHB1dDpiYSxEb2M6QnAsSU5WQUxJRDp5YSxKU09OU2NoZW1hOmIkLEpTT05TY2hlbWFHZW5lcmF0b3I6ZyQsTkVWRVI6WmksVGltZVByZWNpc2lvbjpXYSxVUkxfQkFEX0ZPUk1BVDpuYSxVUkxfVU5QQVJTRUFCTEU6UG4sWm9kQ29tcGlsZUFzeW5jRXJyb3I6a2EsWm9kQ29tcGlsZVVuc3VwcG9ydGVkRXJyb3I6X2EsX2FueTpEbSxfYXJyYXk6Sm0sX2Jhc2U2NDpCYSxfYmFzZTY0dXJsOlVhLF9iaWdpbnQ6Um0sX2Jvb2xlYW46RW0sX2NhdGNoOmt2LF9jaGVjazpYbSxfY2lkcnY0OkxhLF9jaWRydjY6RGEsX2NvZXJjZWRCaWdpbnQ6Tm0sX2NvZXJjZWRCb29sZWFuOk9tLF9jb2VyY2VkRGF0ZTpXbSxfY29lcmNlZE51bWJlcjp6bSxfY29lcmNlZFN0cmluZzprbSxfY3JlZGl0Q2FyZDp3bSxfY3VpZDpPYSxfY3VpZDI6UmEsX2N1c3RvbTpHbSxfZGF0ZTpIbSxfZGVjb2RlOkRpLF9kZWNvZGVBc3luYzpVaSxfZGVmYXVsdDp2dixfZGlzY3JpbWluYXRlZFVuaW9uOml2LF9lMTY0OkZhLF9lbWFpbDpUYSxfZW1vamk6UGEsX2VuY29kZTpMaSxfZW5jb2RlQXN5bmM6QmksX2VuZHNXaXRoOlhuLF9lbnVtOnB2LF9maWxlOkttLF9mbG9hdDMyOkltLF9mbG9hdDY0OkFtLF9ndDpZZSxfZ3RlOkllLF9ndWlkOnphLF9pYmFuOlNtLF9pbmNsdWRlczpZbixfaW50OnhtLF9pbnQzMjpDbSxfaW50NjQ6Wm0sX2ludGVyc2VjdGlvbjphdixfaXB2NDpqYSxfaXB2NjpxYSxfaXNvRGF0ZTpKYSxfaXNvRGF0ZVRpbWU6VmEsX2lzb0R1cmF0aW9uOkdhLF9pc29UaW1lOkthLF9qd3Q6SGEsX2tzdWlkOk1hLF9sYXp5OlR2LF9sZW5ndGg6UXQsX2xpdGVyYWw6bXYsX2xvd2VyY2FzZTpLbixfbHQ6R2UsX2x0ZTp4ZSxfbWFjOl9tLF9tYXA6dXYsX21heDp4ZSxfbWF4TGVuZ3RoOll0LF9tYXhTaXplOkN0LF9taW1lOnRvLF9taW46SWUsX21pbkxlbmd0aDppdCxfbWluU2l6ZTpRZSxfbXVsdGlwbGVPZjokdCxfbmFuOlZtLF9uYW5vaWQ6RWEsX25hdGl2ZUVudW06aHYsX25lZ2F0aXZlOldzLF9uZXZlcjpVbSxfbm9ubmVnYXRpdmU6SnMsX25vbm9wdGlvbmFsOiR2LF9ub25wb3NpdGl2ZTpWcyxfbm9ybWFsaXplOm5vLF9udWxsOkxtLF9udWxsYWJsZTpidixfbnVtYmVyOlRtLF9vcHRpb25hbDpndixfb3ZlcndyaXRlOldlLF9wYXJzZTpMbixfcGFyc2VBc3luYzpEbixfcGlwZTpfdixfcG9zaXRpdmU6SHMsX3Byb21pc2U6enYsX3Byb3BlcnRpZXM6ZW8sX3Byb3BlcnR5OktzLF9yZWFkb25seTp3dixfcmVjb3JkOmx2LF9yZWZpbmU6WW0sX3JlZ2V4OkpuLF9zYWZlRGVjb2RlOkhpLF9zYWZlRGVjb2RlQXN5bmM6VmksX3NhZmVFbmNvZGU6RmksX3NhZmVFbmNvZGVBc3luYzpXaSxfc2FmZVBhcnNlOkJuLF9zYWZlUGFyc2VBc3luYzpVbixfc2V0OmR2LF9zaXplOkd0LF9zbHVnaWZ5OmlvLF9zdGFydHNXaXRoOlFuLF9zdHJpbmc6eW0sX3N0cmluZ0Zvcm1hdDpYdCxfc3RyaW5nYm9vbDpuZixfc3VjY2Vzczp5dixfc3VwZXJSZWZpbmU6UW0sX3N5bWJvbDpqbSxfdGVtcGxhdGVMaXRlcmFsOlN2LF90b0xvd2VyQ2FzZTpzbyxfdG9VcHBlckNhc2U6cm8sX3RyYW5zZm9ybTpmdixfdHJpbTpvbyxfdHVwbGU6Y3YsX3VpbnQzMjpQbSxfdWludDY0Ok1tLF91bGlkOk5hLF91bmRlZmluZWQ6cW0sX3VuaW9uOnN2LF91bmtub3duOkJtLF91cHBlcmNhc2U6R24sX3VybDpGcyxfdXVpZDp4YSxfdXVpZHY0OklhLF91dWlkdjY6QWEsX3V1aWR2NzpDYSxfdm9pZDpGbSxfeGlkOlphLF94b3I6cnYsYmFzZTY0Q2hhcnNldDpnaCxiYXNlNjR1cmxDaGFyc2V0OmlhLGNhblBhcnNlVVJMOm9hLGNsb25lOnNlLGNvbXBpbGU6d2EsY29tcGlsZUZuOm92LGNvbmZpZzpkZSxjcmVhdGVTdGFuZGFyZEpTT05TY2hlbWFNZXRob2Q6bWksY3JlYXRlVG9KU09OU2NoZW1hTWV0aG9kOm9mLGRlY29kZTp1YixkZWNvZGVBc3luYzpwYixkZXNjcmliZTplZixlbmNvZGU6bGIsZW5jb2RlQXN5bmM6ZGIsZXh0cmFjdERlZnM6Q3YsZmluYWxpemU6UHYsZmxhdHRlbkVycm9yOk9zLGZvcm1hdEVycm9yOlJzLGdldERpc2NyaW1pbmF0ZWRPcHRpb246dWEsZ2xvYmFsQ29uZmlnOmtlLGdsb2JhbFJlZ2lzdHJ5Ok5lLGhhbmRsZVVucmVwcmVzZW50YWJsZTpJdixpbml0aWFsaXplQ29udGV4dDp4dixpc0JhY2tFZGdlOmJtLGlzUmVjdXJzaXZlU2NoZW1hOlhiLGlzVmFsaWRCYXNlNjQ6cmEsaXNWYWxpZEJhc2U2NFVSTDp2aCxpc1ZhbGlkQ0lEUnY2Om1oLGlzVmFsaWRDcmVkaXRDYXJkOmtoLGlzVmFsaWRJQkFOOndoLGlzVmFsaWRJUHY2OnNhLGlzVmFsaWRKV1Q6VGgsbG9jYWxlczpnYSxtZW1vaXplcjpEcyxtZXJnZVZhbHVlczpkcyxtZXRhOnRmLHBhcnNlOmNpLHBhcnNlQXN5bmM6bGkscGFyc2VVUkxPYmplY3Q6S3AscHJldHRpZnlFcnJvcjpxaSxwcm9jZXNzOkV2LHByb2Nlc3NTY2hlbWE6QXYscmVnZXhlczpxcyxyZWdpc3RyeTpCcyxzYWZlRGVjb2RlOm1iLHNhZmVEZWNvZGVBc3luYzpnYixzYWZlRW5jb2RlOmhiLHNhZmVFbmNvZGVBc3luYzpmYixzYWZlUGFyc2U6TGQsc2FmZVBhcnNlQXN5bmM6cmIsc3RhbmRhcmRQcm9wczp0YSxzdHJpcFRhYkFuZE5ld2xpbmU6ZGksdG9Eb3RQYXRoOnFkLHRvSlNPTlNjaGVtYTpZYSx0b1pvZDpTcyx0cmVlaWZ5RXJyb3I6amksdXJsSG9zdG5hbWVPazpHcCx1cmxQcm90b2NvbE9rOllwLHV0aWw6TmksdmFsaWRhdGU6WnMsdmFsaWRhdGVBc3luYzpNcyx2YWxpZGF0ZVVSTDpKcCx2ZXJzaW9uOlVwLHdpdGhQYXJzZXI6U2F9LFN5bWJvbC50b1N0cmluZ1RhZyx7dmFsdWU6Ik1vZHVsZSJ9KSksTXU9U3ltYm9sKCJ6LnZpc2l0L3Jlc29sdmluZyIpO2Z1bmN0aW9uIFFhKGUsdCl7Y29uc3Qgbj10eXBlb2YgdD09ImZ1bmN0aW9uIj90OihpLGEpPT57Y29uc3QgZD10W2kuX3pvZC5kZWYudHlwZV07cmV0dXJuIGQ/ZChpLGEpOml9LG89bmV3IE1hcDtmdW5jdGlvbiBzKGkpe2NvbnN0IGE9by5nZXQoaSk7aWYoYT09PU11KXJldHVybiBuZXcgZmEoe3R5cGU6ImxhenkiLGdldHRlcjooKT0+by5nZXQoaSl9KTtpZihhIT09dm9pZCAwKXJldHVybiBhO28uc2V0KGksTXUpO2NvbnN0IGQ9cihpKSx1PW4oZCxkIT09aSk7cmV0dXJuIG8uc2V0KGksdSksdX1mdW5jdGlvbiByKGkpe2NvbnN0IGE9aS5fem9kLmRlZjtzd2l0Y2goYS50eXBlKXtjYXNlIm9iamVjdCI6e2NvbnN0IHU9YS5zaGFwZSxwPU9iamVjdC5rZXlzKHUpO2xldCBoPSExO2NvbnN0IGI9e307Zm9yKGNvbnN0IGsgb2YgcCl7Y29uc3QgVD1zKHVba10pO1QhPT11W2tdJiYoaD0hMCksYltrXT1UfWxldCAkPWEuY2F0Y2hhbGw7cmV0dXJuIGEuY2F0Y2hhbGwmJigkPXMoYS5jYXRjaGFsbCksJCE9PWEuY2F0Y2hhbGwmJihoPSEwKSksaD9zZShpLHsuLi5hLHNoYXBlOmIsY2F0Y2hhbGw6JH0pOml9Y2FzZSJhcnJheSI6e2NvbnN0IHU9cyhhLmVsZW1lbnQpO3JldHVybiB1PT09YS5lbGVtZW50P2k6c2UoaSx7Li4uYSxlbGVtZW50OnV9KX1jYXNlInR1cGxlIjp7Y29uc3QgdT1hLml0ZW1zO2xldCBwPSExO2NvbnN0IGg9W107Zm9yKGNvbnN0ICQgb2YgdSl7Y29uc3Qgaz1zKCQpO2shPT0kJiYocD0hMCksaC5wdXNoKGspfWxldCBiPWEucmVzdDtyZXR1cm4gYS5yZXN0JiYoYj1zKGEucmVzdCksYiE9PWEucmVzdCYmKHA9ITApKSxwP3NlKGksey4uLmEsaXRlbXM6aCxyZXN0OmJ9KTppfWNhc2UicmVjb3JkIjpjYXNlIm1hcCI6e2NvbnN0IHU9cyhhLmtleVR5cGUpLHA9cyhhLnZhbHVlVHlwZSk7cmV0dXJuIHU9PT1hLmtleVR5cGUmJnA9PT1hLnZhbHVlVHlwZT9pOnNlKGksey4uLmEsa2V5VHlwZTp1LHZhbHVlVHlwZTpwfSl9Y2FzZSJzZXQiOntjb25zdCB1PXMoYS52YWx1ZVR5cGUpO3JldHVybiB1PT09YS52YWx1ZVR5cGU/aTpzZShpLHsuLi5hLHZhbHVlVHlwZTp1fSl9Y2FzZSJ1bmlvbiI6e2NvbnN0IHU9YS5vcHRpb25zO2xldCBwPSExO2NvbnN0IGg9W107Zm9yKGNvbnN0IGIgb2YgdSl7Y29uc3QgJD1zKGIpOyQhPT1iJiYocD0hMCksaC5wdXNoKCQpfXJldHVybiBwP3NlKGksey4uLmEsb3B0aW9uczpofSk6aX1jYXNlImludGVyc2VjdGlvbiI6e2NvbnN0IHU9cyhhLmxlZnQpLHA9cyhhLnJpZ2h0KTtyZXR1cm4gdT09PWEubGVmdCYmcD09PWEucmlnaHQ/aTpzZShpLHsuLi5hLGxlZnQ6dSxyaWdodDpwfSl9Y2FzZSJvcHRpb25hbCI6Y2FzZSJudWxsYWJsZSI6Y2FzZSJkZWZhdWx0IjpjYXNlInByZWZhdWx0IjpjYXNlImNhdGNoIjpjYXNlInJlYWRvbmx5IjpjYXNlIm5vbm9wdGlvbmFsIjpjYXNlInByb21pc2UiOmNhc2Uic3VjY2VzcyI6e2NvbnN0IHU9cyhhLmlubmVyVHlwZSk7cmV0dXJuIHU9PT1hLmlubmVyVHlwZT9pOnNlKGksey4uLmEsaW5uZXJUeXBlOnV9KX1jYXNlInBpcGUiOntjb25zdCB1PXMoYS5pbikscD1zKGEub3V0KTtyZXR1cm4gdT09PWEuaW4mJnA9PT1hLm91dD9pOnNlKGksey4uLmEsaW46dSxvdXQ6cH0pfWNhc2UiZnVuY3Rpb24iOntjb25zdCB1PXMoYS5pbnB1dCkscD1zKGEub3V0cHV0KTtyZXR1cm4gdT09PWEuaW5wdXQmJnA9PT1hLm91dHB1dD9pOnNlKGksey4uLmEsaW5wdXQ6dSxvdXRwdXQ6cH0pfWNhc2UibGF6eSI6e2NvbnN0IHU9YS5nZXR0ZXIse19jYWNoZWRJbm5lcjpwLC4uLmh9PWE7cmV0dXJuIHNlKGksey4uLmgsZ2V0dGVyOigpPT5zKHUoKSl9KX1jYXNlInRlbXBsYXRlX2xpdGVyYWwiOmNhc2Uic3RyaW5nIjpjYXNlIm51bWJlciI6Y2FzZSJpbnQiOmNhc2UiYm9vbGVhbiI6Y2FzZSJiaWdpbnQiOmNhc2Uic3ltYm9sIjpjYXNlInVuZGVmaW5lZCI6Y2FzZSJudWxsIjpjYXNlInZvaWQiOmNhc2UibmV2ZXIiOmNhc2UiYW55IjpjYXNlInVua25vd24iOmNhc2UiZGF0ZSI6Y2FzZSJuYW4iOmNhc2UiZW51bSI6Y2FzZSJsaXRlcmFsIjpjYXNlImZpbGUiOmNhc2UidHJhbnNmb3JtIjpjYXNlImN1c3RvbSI6cmV0dXJuIGk7ZGVmYXVsdDpyZXR1cm4gaX19cmV0dXJuIHMoZSl9ZnVuY3Rpb24gWGEoZSl7cmV0dXJuISFlLl96b2R9ZnVuY3Rpb24gY2YoZSx0KXtyZXR1cm4gWGEoZSk/TGQoZSx0KTplLnNhZmVQYXJzZSh0KX1mdW5jdGlvbiB2JChlKXtpZighZSlyZXR1cm47bGV0IHQ7aWYoWGEoZSk/dD1lLl96b2Q/LmRlZj8uc2hhcGU6dD1lLnNoYXBlLCEhdCl7aWYodHlwZW9mIHQ9PSJmdW5jdGlvbiIpdHJ5e3JldHVybiB0KCl9Y2F0Y2h7cmV0dXJufXJldHVybiB0fX1mdW5jdGlvbiAkJChlKXtpZihYYShlKSl7Y29uc3Qgcj1lLl96b2Q/LmRlZjtpZihyKXtpZihyLnZhbHVlIT09dm9pZCAwKXJldHVybiByLnZhbHVlO2lmKEFycmF5LmlzQXJyYXkoci52YWx1ZXMpJiZyLnZhbHVlcy5sZW5ndGg+MClyZXR1cm4gci52YWx1ZXNbMF19fWNvbnN0IG49ZS5fZGVmO2lmKG4pe2lmKG4udmFsdWUhPT12b2lkIDApcmV0dXJuIG4udmFsdWU7aWYoQXJyYXkuaXNBcnJheShuLnZhbHVlcykmJm4udmFsdWVzLmxlbmd0aD4wKXJldHVybiBuLnZhbHVlc1swXX1jb25zdCBvPWUudmFsdWU7aWYobyE9PXZvaWQgMClyZXR1cm4gb31jb25zdCB5JD1PYmplY3QuZnJlZXplKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7X19wcm90b19fOm51bGwsZW5kc1dpdGg6WG4sZ3Q6WWUsZ3RlOkllLGluY2x1ZGVzOlluLGxlbmd0aDpRdCxsb3dlcmNhc2U6S24sbHQ6R2UsbHRlOnhlLG1heExlbmd0aDpZdCxtYXhTaXplOkN0LG1pbWU6dG8sbWluTGVuZ3RoOml0LG1pblNpemU6UWUsbXVsdGlwbGVPZjokdCxuZWdhdGl2ZTpXcyxub25uZWdhdGl2ZTpKcyxub25wb3NpdGl2ZTpWcyxub3JtYWxpemU6bm8sb3ZlcndyaXRlOldlLHBvc2l0aXZlOkhzLHByb3BlcnRpZXM6ZW8scHJvcGVydHk6S3MscmVnZXg6Sm4sc2l6ZTpHdCxzbHVnaWZ5OmlvLHN0YXJ0c1dpdGg6UW4sdG9Mb3dlckNhc2U6c28sdG9VcHBlckNhc2U6cm8sdHJpbTpvbyx1cHBlcmNhc2U6R259LFN5bWJvbC50b1N0cmluZ1RhZyx7dmFsdWU6Ik1vZHVsZSJ9KSksanU9bmV3IFdlYWtTZXQoW09iamVjdC5wcm90b3R5cGUsRXJyb3IucHJvdG90eXBlXSk7ZnVuY3Rpb24gUW8oZSx0LG4pe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiExLGdldCgpe2NvbnN0IG89bih0aGlzKTtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsdCx7dmFsdWU6byxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KSxvfSxzZXQobyl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsdCx7dmFsdWU6byxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KX19KX1jb25zdCBsZj0oZSx0KT0+e2pkLmluaXQoZSx0KSxlLm5hbWU9IlpvZEVycm9yIjtjb25zdCBuPU9iamVjdC5nZXRQcm90b3R5cGVPZihlKTtqdS5oYXMobil8fChqdS5hZGQobiksUW8obiwiZm9ybWF0IixvPT5zPT5ScyhvLHMpKSxRbyhuLCJmbGF0dGVuIixvPT5zPT5PcyhvLHMpKSxRbyhuLCJhZGRJc3N1ZSIsbz0+cz0+e28uaXNzdWVzLnB1c2gocyksby5tZXNzYWdlPUpTT04uc3RyaW5naWZ5KG8uaXNzdWVzLGlzLDIpfSksUW8obiwiYWRkSXNzdWVzIixvPT5zPT57by5pc3N1ZXMucHVzaCguLi5zKSxvLm1lc3NhZ2U9SlNPTi5zdHJpbmdpZnkoby5pc3N1ZXMsaXMsMil9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkobiwiaXNFbXB0eSIse2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiExLGdldCgpe3JldHVybiB0aGlzLmlzc3Vlcy5sZW5ndGg9PT0wfX0pKX0sdWY9bSgiWm9kRXJyb3IiLGxmKSxUZT1tKCJab2RFcnJvciIsbGYsdm9pZCAwLHtQYXJlbnQ6RXJyb3J9KSxlYz1MbihUZSksdGM9RG4oVGUpLG5jPUJuKFRlKSxvYz1VbihUZSksc2M9TGkoVGUpLHJjPURpKFRlKSxpYz1CaShUZSksYWM9VWkoVGUpLGNjPUZpKFRlKSxsYz1IaShUZSksdWM9V2koVGUpLGRjPVZpKFRlKTtmdW5jdGlvbiBrJCgpe2tlLmxvY2FsZUVycm9yfHxkZSh2bSgpKX1mdW5jdGlvbiBQdCgpe2tlLm1lbW9pemVyfHxkZSh7bWVtb2l6ZXI6RHMoKX0pfWNvbnN0IFo9bSgiWm9kVHlwZSIsKGUsdCk9PihrJCgpLFIuaW5pdChlLHQpLGUuZGVmPXQsZS50eXBlPXQudHlwZSxlKSx7Y2hlY2soLi4uZSl7Y29uc3QgdD10aGlzLmRlZjtyZXR1cm4gdGhpcy5jbG9uZSh2ZSh0LHtjaGVja3M6Wy4uLnQuY2hlY2tzPz9bXSwuLi5lLm1hcChuPT50eXBlb2Ygbj09ImZ1bmN0aW9uIj97X3pvZDp7Y2hlY2s6bixkZWY6e2NoZWNrOiJjdXN0b20ifSxvbmF0dGFjaDpbXX19Om4pXX0pLHtwYXJlbnQ6ITB9KX0sd2l0aCguLi5lKXtyZXR1cm4gdGhpcy5jaGVjayguLi5lKX0sY2xvbmUoZSx0KXtyZXR1cm4gc2UodGhpcyxlLHQpfSxicmFuZCgpe3JldHVybiB0aGlzfSxyZWdpc3RlcihlLHQpe3JldHVybiBlLmFkZCh0aGlzLHQpLHRoaXN9LHJlZmluZShlLHQpe3JldHVybiB0aGlzLmNoZWNrKE1yKGUsdCkpfSxzdXBlclJlZmluZShlLHQpe3JldHVybiB0aGlzLmNoZWNrKGpyKGUsdCkpfSxvdmVyd3JpdGUoZSl7cmV0dXJuIHRoaXMuY2hlY2soV2UoZSkpfSxvcHRpb25hbCgpe3JldHVybiBYKHRoaXMpfSxleGFjdE9wdGlvbmFsKCl7cmV0dXJuIGJyKHRoaXMpfSxudWxsYWJsZSgpe3JldHVybiBIdCh0aGlzKX0sbnVsbGlzaCgpe3JldHVybiBYKEh0KHRoaXMpKX0sbm9ub3B0aW9uYWwoZSl7cmV0dXJuIHdyKHRoaXMsZSl9LGFycmF5KCl7cmV0dXJuIEUodGhpcyl9LG9yKGUpe3JldHVybiBxKFt0aGlzLGVdKX0sYW5kKGUpe3JldHVybiBwbih0aGlzLGUpfSx0cmFuc2Zvcm0oZSl7cmV0dXJuIE9uKHRoaXMsUG8oZSkpfSxkZWZhdWx0KGUpe3JldHVybiB5cih0aGlzLGUpfSxwcmVmYXVsdChlKXtyZXR1cm4gX3IodGhpcyxlKX0sY2F0Y2goZSl7cmV0dXJuIHpyKHRoaXMsZSl9LHBpcGUoZSl7cmV0dXJuIE9uKHRoaXMsZSl9LHJlYWRvbmx5KCl7cmV0dXJuIENyKHRoaXMpfSxkZXNjcmliZShlKXtjb25zdCB0PXRoaXMuY2xvbmUoKTtyZXR1cm4gTmUuYWRkKHQse2Rlc2NyaXB0aW9uOmV9KSx0fSxtZXRhKC4uLmUpe2lmKGUubGVuZ3RoPT09MClyZXR1cm4gTmUuZ2V0KHRoaXMpO2NvbnN0IHQ9dGhpcy5jbG9uZSgpO3JldHVybiBOZS5hZGQodCxlWzBdKSx0fSxpc09wdGlvbmFsKCl7cmV0dXJuIHRoaXMuc2FmZVBhcnNlKHZvaWQgMCkuc3VjY2Vzc30saXNOdWxsYWJsZSgpe3JldHVybiB0aGlzLnNhZmVQYXJzZShudWxsKS5zdWNjZXNzfSxhcHBseShlLC4uLnQpe3JldHVybiB0Lmxlbmd0aD09PTA/ZSh0aGlzKTplKHRoaXMsLi4udCl9LGdldCJ+c3RhbmRhcmQiKCl7cmV0dXJuIFBzKHRoaXMsIn5zdGFuZGFyZCIsey4uLnRhKHRoaXMpLGpzb25TY2hlbWE6e2lucHV0Om1pKCksb3V0cHV0Om1pKCl9fSl9LHNldCJ+c3RhbmRhcmQiKGUpe0tlKHRoaXMsIn5zdGFuZGFyZCIsZSl9LHBhcnNlOmZ1bmN0aW9uIGUodCxuKXtyZXR1cm4gZWModGhpcyx0LG4se2NhbGxlZTplfSl9LHBhcnNlQXN5bmM6YXN5bmMgZnVuY3Rpb24gZSh0LG4pe3JldHVybiBhd2FpdCB0Yyh0aGlzLHQsbix7Y2FsbGVlOmV9KX0sc2FmZVBhcnNlKGUsdCl7cmV0dXJuIG5jKHRoaXMsZSx0KX0sYXN5bmMgc2FmZVBhcnNlQXN5bmMoZSx0KXtyZXR1cm4gb2ModGhpcyxlLHQpfSxnZXQgc3BhKCl7cmV0dXJuIHRoaXM/LnNhZmVQYXJzZUFzeW5jfSxzZXQgc3BhKGUpe0tlKHRoaXMsInNwYSIsZSl9LHZhbGlkYXRlKGUsdCl7cmV0dXJuIFpzKHRoaXMsZSx0KX0sdmFsaWRhdGVBc3luYyhlLHQpe3JldHVybiBNcyh0aGlzLGUsdCl9LGVuY29kZTpmdW5jdGlvbiBlKHQsbil7cmV0dXJuIHNjKHRoaXMsdCxuLHtjYWxsZWU6ZX0pfSxkZWNvZGU6ZnVuY3Rpb24gZSh0LG4pe3JldHVybiByYyh0aGlzLHQsbix7Y2FsbGVlOmV9KX0sZW5jb2RlQXN5bmM6YXN5bmMgZnVuY3Rpb24gZSh0LG4pe3JldHVybiBhd2FpdCBpYyh0aGlzLHQsbix7Y2FsbGVlOmV9KX0sZGVjb2RlQXN5bmM6YXN5bmMgZnVuY3Rpb24gZSh0LG4pe3JldHVybiBhd2FpdCBhYyh0aGlzLHQsbix7Y2FsbGVlOmV9KX0sc2FmZUVuY29kZShlLHQpe3JldHVybiBjYyh0aGlzLGUsdCl9LHNhZmVEZWNvZGUoZSx0KXtyZXR1cm4gbGModGhpcyxlLHQpfSxhc3luYyBzYWZlRW5jb2RlQXN5bmMoZSx0KXtyZXR1cm4gdWModGhpcyxlLHQpfSxhc3luYyBzYWZlRGVjb2RlQXN5bmMoZSx0KXtyZXR1cm4gZGModGhpcyxlLHQpfSx0b0pTT05TY2hlbWEoZSl7cmV0dXJuIG9mKCkoZSl9LGdldCBkZXNjcmlwdGlvbigpe3JldHVybiBOZS5nZXQodGhpcyk/LmRlc2NyaXB0aW9ufSxnZXQgX2RlZigpe3JldHVybiB0aGlzLl96b2QuZGVmfX0pLGFvPW0oIl9ab2RTdHJpbmciLChlLHQpPT57Vm4uaW5pdChlLHQpLFouaW5pdChlLHQpLGUuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0obixvLHMpPT5PdigpfSxxbih7Zm9ybWF0OmU9PlplKCkuZm9ybWF0Pz9udWxsLG1pbkxlbmd0aDplPT5aZSgpLm1pbmltdW0/P251bGwsbWF4TGVuZ3RoOmU9PlplKCkubWF4aW11bT8/bnVsbH0se3JlZ2V4KC4uLmUpe3JldHVybiB0aGlzLmNoZWNrKEpuKC4uLmUpKX0saW5jbHVkZXMoLi4uZSl7cmV0dXJuIHRoaXMuY2hlY2soWW4oLi4uZSkpfSxzdGFydHNXaXRoKC4uLmUpe3JldHVybiB0aGlzLmNoZWNrKFFuKC4uLmUpKX0sZW5kc1dpdGgoLi4uZSl7cmV0dXJuIHRoaXMuY2hlY2soWG4oLi4uZSkpfSxtaW4oLi4uZSl7cmV0dXJuIHRoaXMuY2hlY2soaXQoLi4uZSkpfSxtYXgoLi4uZSl7cmV0dXJuIHRoaXMuY2hlY2soWXQoLi4uZSkpfSxsZW5ndGgoLi4uZSl7cmV0dXJuIHRoaXMuY2hlY2soUXQoLi4uZSkpfSxub25lbXB0eSguLi5lKXtyZXR1cm4gdGhpcy5jaGVjayhpdCgxLC4uLmUpKX0sbG93ZXJjYXNlKGUpe3JldHVybiB0aGlzLmNoZWNrKEtuKGUpKX0sdXBwZXJjYXNlKGUpe3JldHVybiB0aGlzLmNoZWNrKEduKGUpKX0sdHJpbSgpe3JldHVybiB0aGlzLmNoZWNrKG9vKCkpfSxub3JtYWxpemUoLi4uZSl7cmV0dXJuIHRoaXMuY2hlY2sobm8oLi4uZSkpfSx0b0xvd2VyQ2FzZSgpe3JldHVybiB0aGlzLmNoZWNrKHNvKCkpfSx0b1VwcGVyQ2FzZSgpe3JldHVybiB0aGlzLmNoZWNrKHJvKCkpfSxzbHVnaWZ5KCl7cmV0dXJuIHRoaXMuY2hlY2soaW8oKSl9fSkpLGVuPW0oIlpvZFN0cmluZyIsKGUsdCk9PntWbi5pbml0KGUsdCksYW8uaW5pdChlLHQpfSx7ZW1haWwoZSl7cmV0dXJuIHRoaXMuY2hlY2soVGEoY28sZSkpfSx1cmwoZSl7cmV0dXJuIHRoaXMuY2hlY2soRnMocm4sZSkpfSxqd3QoZSl7cmV0dXJuIHRoaXMuY2hlY2soSGEoVG8sZSkpfSxlbW9qaShlKXtyZXR1cm4gdGhpcy5jaGVjayhQYSh1byxlKSl9LGd1aWQoZSl7cmV0dXJuIHRoaXMuY2hlY2soemEobG8sZSkpfSx1dWlkKGUpe3JldHVybiB0aGlzLmNoZWNrKHhhKFVlLGUpKX0sdXVpZHY0KGUpe3JldHVybiB0aGlzLmNoZWNrKElhKFVlLGUpKX0sdXVpZHY2KGUpe3JldHVybiB0aGlzLmNoZWNrKEFhKFVlLGUpKX0sdXVpZHY3KGUpe3JldHVybiB0aGlzLmNoZWNrKENhKFVlLGUpKX0sbmFub2lkKGUpe3JldHVybiB0aGlzLmNoZWNrKEVhKHBvLGUpKX0sY3VpZChlKXtyZXR1cm4gdGhpcy5jaGVjayhPYShobyxlKSl9LGN1aWQyKGUpe3JldHVybiB0aGlzLmNoZWNrKFJhKG1vLGUpKX0sdWxpZChlKXtyZXR1cm4gdGhpcy5jaGVjayhOYShmbyxlKSl9LGJhc2U2NChlKXtyZXR1cm4gdGhpcy5jaGVjayhCYShfbyxlKSl9LGJhc2U2NHVybChlKXtyZXR1cm4gdGhpcy5jaGVjayhVYSh3byxlKSl9LHhpZChlKXtyZXR1cm4gdGhpcy5jaGVjayhaYShnbyxlKSl9LGtzdWlkKGUpe3JldHVybiB0aGlzLmNoZWNrKE1hKGJvLGUpKX0saXB2NChlKXtyZXR1cm4gdGhpcy5jaGVjayhqYSh2byxlKSl9LGlwdjYoZSl7cmV0dXJuIHRoaXMuY2hlY2socWEoJG8sZSkpfSxjaWRydjQoZSl7cmV0dXJuIHRoaXMuY2hlY2soTGEoeW8sZSkpfSxjaWRydjYoZSl7cmV0dXJuIHRoaXMuY2hlY2soRGEoa28sZSkpfSxlMTY0KGUpe3JldHVybiB0aGlzLmNoZWNrKEZhKFNvLGUpKX0sZGF0ZXRpbWUoZSl7cmV0dXJuIHRoaXMuY2hlY2soVmEodG4sZSkpfSxkYXRlKGUpe3JldHVybiB0aGlzLmNoZWNrKEphKG5uLGUpKX0sdGltZShlKXtyZXR1cm4gdGhpcy5jaGVjayhLYShvbixlKSl9LGR1cmF0aW9uKGUpe3JldHVybiB0aGlzLmNoZWNrKEdhKHNuLGUpKX19KTtmdW5jdGlvbiBmKGUpe3JldHVybiB5bShlbixlKX1jb25zdCBHPW0oIlpvZFN0cmluZ0Zvcm1hdCIsKGUsdCk9PntRLmluaXQoZSx0KSxhby5pbml0KGUsdCl9KSx0bj1tKCJab2RJU09EYXRlVGltZSIsKGUsdCk9PntpaC5pbml0KGUsdCksRy5pbml0KGUsdCl9KSxubj1tKCJab2RJU09EYXRlIiwoZSx0KT0+e2FoLmluaXQoZSx0KSxHLmluaXQoZSx0KX0pLG9uPW0oIlpvZElTT1RpbWUiLChlLHQpPT57Y2guaW5pdChlLHQpLEcuaW5pdChlLHQpfSksc249bSgiWm9kSVNPRHVyYXRpb24iLChlLHQpPT57bGguaW5pdChlLHQpLEcuaW5pdChlLHQpfSksY289bSgiWm9kRW1haWwiLChlLHQpPT57VnAuaW5pdChlLHQpLEcuaW5pdChlLHQpfSk7ZnVuY3Rpb24gcGMoZSl7cmV0dXJuIFRhKGNvLGUpfWNvbnN0IGxvPW0oIlpvZEdVSUQiLChlLHQpPT57SHAuaW5pdChlLHQpLEcuaW5pdChlLHQpfSk7ZnVuY3Rpb24gaGMoZSl7cmV0dXJuIHphKGxvLGUpfWNvbnN0IFVlPW0oIlpvZFVVSUQiLChlLHQpPT57V3AuaW5pdChlLHQpLEcuaW5pdChlLHQpfSk7ZnVuY3Rpb24gbWMoZSl7cmV0dXJuIHhhKFVlLGUpfWZ1bmN0aW9uIGZjKGUpe3JldHVybiBJYShVZSxlKX1mdW5jdGlvbiBnYyhlKXtyZXR1cm4gQWEoVWUsZSl9ZnVuY3Rpb24gYmMoZSl7cmV0dXJuIENhKFVlLGUpfWNvbnN0IHJuPW0oIlpvZFVSTCIsKGUsdCk9PntRcC5pbml0KGUsdCksRy5pbml0KGUsdCl9KTtmdW5jdGlvbiB2YyhlKXtyZXR1cm4gRnMocm4sZSl9ZnVuY3Rpb24gJGMoZSl7cmV0dXJuIEZzKHJuLHtwcm90b2NvbDpKaSxob3N0bmFtZTppcCwuLi53KGUpfSl9Y29uc3QgdW89bSgiWm9kRW1vamkiLChlLHQpPT57WHAuaW5pdChlLHQpLEcuaW5pdChlLHQpfSk7ZnVuY3Rpb24geWMoZSl7cmV0dXJuIFBhKHVvLGUpfWNvbnN0IHBvPW0oIlpvZE5hbm9JRCIsKGUsdCk9PntlaC5pbml0KGUsdCksRy5pbml0KGUsdCl9KTtmdW5jdGlvbiBrYyhlKXtyZXR1cm4gRWEocG8sZSl9Y29uc3QgaG89bSgiWm9kQ1VJRCIsKGUsdCk9Pnt0aC5pbml0KGUsdCksRy5pbml0KGUsdCl9KTtmdW5jdGlvbiBfYyhlKXtyZXR1cm4gT2EoaG8sZSl9Y29uc3QgbW89bSgiWm9kQ1VJRDIiLChlLHQpPT57bmguaW5pdChlLHQpLEcuaW5pdChlLHQpfSk7ZnVuY3Rpb24gd2MoZSl7cmV0dXJuIFJhKG1vLGUpfWNvbnN0IGZvPW0oIlpvZFVMSUQiLChlLHQpPT57b2guaW5pdChlLHQpLEcuaW5pdChlLHQpfSk7ZnVuY3Rpb24gU2MoZSl7cmV0dXJuIE5hKGZvLGUpfWNvbnN0IGdvPW0oIlpvZFhJRCIsKGUsdCk9PntzaC5pbml0KGUsdCksRy5pbml0KGUsdCl9KTtmdW5jdGlvbiBUYyhlKXtyZXR1cm4gWmEoZ28sZSl9Y29uc3QgYm89bSgiWm9kS1NVSUQiLChlLHQpPT57cmguaW5pdChlLHQpLEcuaW5pdChlLHQpfSk7ZnVuY3Rpb24gemMoZSl7cmV0dXJuIE1hKGJvLGUpfWNvbnN0IHZvPW0oIlpvZElQdjQiLChlLHQpPT57dWguaW5pdChlLHQpLEcuaW5pdChlLHQpfSk7ZnVuY3Rpb24geGMoZSl7cmV0dXJuIGphKHZvLGUpfWNvbnN0IEdzPW0oIlpvZE1BQyIsKGUsdCk9PntwaC5pbml0KGUsdCksRy5pbml0KGUsdCl9KTtmdW5jdGlvbiBJYyhlKXtyZXR1cm4gX20oR3MsZSl9Y29uc3QgJG89bSgiWm9kSVB2NiIsKGUsdCk9PntkaC5pbml0KGUsdCksRy5pbml0KGUsdCl9KTtmdW5jdGlvbiBBYyhlKXtyZXR1cm4gcWEoJG8sZSl9Y29uc3QgeW89bSgiWm9kQ0lEUnY0IiwoZSx0KT0+e2hoLmluaXQoZSx0KSxHLmluaXQoZSx0KX0pO2Z1bmN0aW9uIENjKGUpe3JldHVybiBMYSh5byxlKX1jb25zdCBrbz1tKCJab2RDSURSdjYiLChlLHQpPT57ZmguaW5pdChlLHQpLEcuaW5pdChlLHQpfSk7ZnVuY3Rpb24gUGMoZSl7cmV0dXJuIERhKGtvLGUpfWNvbnN0IF9vPW0oIlpvZEJhc2U2NCIsKGUsdCk9PntiaC5pbml0KGUsdCksRy5pbml0KGUsdCl9KTtmdW5jdGlvbiBFYyhlKXtyZXR1cm4gQmEoX28sZSl9Y29uc3Qgd289bSgiWm9kQmFzZTY0VVJMIiwoZSx0KT0+eyRoLmluaXQoZSx0KSxHLmluaXQoZSx0KX0pO2Z1bmN0aW9uIE9jKGUpe3JldHVybiBVYSh3byxlKX1jb25zdCBTbz1tKCJab2RFMTY0IiwoZSx0KT0+e3loLmluaXQoZSx0KSxHLmluaXQoZSx0KX0pO2Z1bmN0aW9uIFJjKGUpe3JldHVybiBGYShTbyxlKX1jb25zdCBZcz1tKCJab2RDcmVkaXRDYXJkIiwoZSx0KT0+e19oLmluaXQoZSx0KSxHLmluaXQoZSx0KX0pO2Z1bmN0aW9uIE5jKGUpe3JldHVybiB3bShZcyxlKX1jb25zdCBRcz1tKCJab2RJQkFOIiwoZSx0KT0+e1NoLmluaXQoZSx0KSxHLmluaXQoZSx0KX0pO2Z1bmN0aW9uIFpjKGUpe3JldHVybiBTbShRcyxlKX1jb25zdCBUbz1tKCJab2RKV1QiLChlLHQpPT57emguaW5pdChlLHQpLEcuaW5pdChlLHQpfSk7ZnVuY3Rpb24gTWMoZSl7cmV0dXJuIEhhKFRvLGUpfWNvbnN0IGN0PW0oIlpvZEN1c3RvbVN0cmluZ0Zvcm1hdCIsKGUsdCk9Pnt4aC5pbml0KGUsdCksRy5pbml0KGUsdCl9KTtmdW5jdGlvbiBqYyhlLHQsbj17fSl7cmV0dXJuIFh0KGN0LGUsdCxuKX1mdW5jdGlvbiBxYyhlKXtyZXR1cm4gWHQoY3QsImhvc3RuYW1lIixycCxlKX1mdW5jdGlvbiBMYyhlKXtyZXR1cm4gWHQoY3QsImhleCIsX3AsZSl9ZnVuY3Rpb24gRGMoZSl7cmV0dXJuIFh0KGN0LCJjdXJyZW5jeV9jb2RlIixjcCxlKX1mdW5jdGlvbiBCYyhlLHQpe2NvbnN0IG49dD8uZW5jPz8iaGV4IixvPWAke2V9XyR7bn1gLHM9cXNbb107aWYoIXMpdGhyb3cgbmV3IEVycm9yKGBVbnJlY29nbml6ZWQgaGFzaCBmb3JtYXQ6ICR7b31gKTtyZXR1cm4gWHQoY3QsbyxzLHQpfWNvbnN0IGFuPW0oIlpvZE51bWJlciIsKGUsdCk9PnthYS5pbml0KGUsdCksWi5pbml0KGUsdCksZS5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShuLG8scyk9PlJ2KCksZS5pc0Zpbml0ZT0hMH0scW4oe21pblZhbHVlOmU9Pntjb25zdHttaW5pbXVtOnQsZXhjbHVzaXZlTWluaW11bTpufT1aZSgpO3JldHVybiBNYXRoLm1heCh0Pz9OdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFksbj8/TnVtYmVyLk5FR0FUSVZFX0lORklOSVRZKX0sbWF4VmFsdWU6ZT0+e2NvbnN0e21heGltdW06dCxleGNsdXNpdmVNYXhpbXVtOm59PVplKCk7cmV0dXJuIE1hdGgubWluKHQ/P051bWJlci5QT1NJVElWRV9JTkZJTklUWSxuPz9OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFkpfSxpc0ludDplPT57Y29uc3R7aXNJbnQ6dCxtdWx0aXBsZU9mOm59PVplKCk7cmV0dXJuISF0fHwhIW4/LnNvbWUoTnVtYmVyLmlzU2FmZUludGVnZXIpfSxmb3JtYXQ6ZT0+WmUoKS5mb3JtYXQ/P251bGx9LHtndChlLHQpe3JldHVybiB0aGlzLmNoZWNrKFllKGUsdCkpfSxndGUoZSx0KXtyZXR1cm4gdGhpcy5jaGVjayhJZShlLHQpKX0sbWluKGUsdCl7cmV0dXJuIHRoaXMuY2hlY2soSWUoZSx0KSl9LGx0KGUsdCl7cmV0dXJuIHRoaXMuY2hlY2soR2UoZSx0KSl9LGx0ZShlLHQpe3JldHVybiB0aGlzLmNoZWNrKHhlKGUsdCkpfSxtYXgoZSx0KXtyZXR1cm4gdGhpcy5jaGVjayh4ZShlLHQpKX0saW50KGUpe3JldHVybiB0aGlzLmNoZWNrKEVuKGUpKX0sc2FmZShlKXtyZXR1cm4gdGhpcy5jaGVjayhFbihlKSl9LHBvc2l0aXZlKGUpe3JldHVybiB0aGlzLmNoZWNrKFllKDAsZSkpfSxub25uZWdhdGl2ZShlKXtyZXR1cm4gdGhpcy5jaGVjayhJZSgwLGUpKX0sbmVnYXRpdmUoZSl7cmV0dXJuIHRoaXMuY2hlY2soR2UoMCxlKSl9LG5vbnBvc2l0aXZlKGUpe3JldHVybiB0aGlzLmNoZWNrKHhlKDAsZSkpfSxtdWx0aXBsZU9mKGUsdCl7cmV0dXJuIHRoaXMuY2hlY2soJHQoZSx0KSl9LHN0ZXAoZSx0KXtyZXR1cm4gdGhpcy5jaGVjaygkdChlLHQpKX0sZmluaXRlKCl7cmV0dXJuIHRoaXN9fSkpO2Z1bmN0aW9uIE4oZSl7cmV0dXJuIFRtKGFuLGUpfWNvbnN0IGx0PW0oIlpvZE51bWJlckZvcm1hdCIsKGUsdCk9PntJaC5pbml0KGUsdCksYW4uaW5pdChlLHQpfSk7ZnVuY3Rpb24gRW4oZSl7cmV0dXJuIHhtKGx0LGUpfWZ1bmN0aW9uIFVjKGUpe3JldHVybiBJbShsdCxlKX1mdW5jdGlvbiBGYyhlKXtyZXR1cm4gQW0obHQsZSl9ZnVuY3Rpb24gSGMoZSl7cmV0dXJuIENtKGx0LGUpfWZ1bmN0aW9uIFdjKGUpe3JldHVybiBQbShsdCxlKX1jb25zdCBjbj1tKCJab2RCb29sZWFuIiwoZSx0KT0+e2NhLmluaXQoZSx0KSxaLmluaXQoZSx0KSxlLl96b2QucHJvY2Vzc0pTT05TY2hlbWE9KG4sbyxzKT0+TnYoKX0pO2Z1bmN0aW9uIEsoZSl7cmV0dXJuIEVtKGNuLGUpfWNvbnN0IGxuPW0oIlpvZEJpZ0ludCIsKGUsdCk9PntsYS5pbml0KGUsdCksWi5pbml0KGUsdCksZS5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShuLG8scyk9Plp2KCl9LHFuKHttaW5WYWx1ZTplPT5aZSgpLm1pbmltdW0/P251bGwsbWF4VmFsdWU6ZT0+WmUoKS5tYXhpbXVtPz9udWxsLGZvcm1hdDplPT5aZSgpLmZvcm1hdD8/bnVsbH0se2d0ZShlLHQpe3JldHVybiB0aGlzLmNoZWNrKEllKGUsdCkpfSxtaW4oZSx0KXtyZXR1cm4gdGhpcy5jaGVjayhJZShlLHQpKX0sZ3QoZSx0KXtyZXR1cm4gdGhpcy5jaGVjayhZZShlLHQpKX0sbHQoZSx0KXtyZXR1cm4gdGhpcy5jaGVjayhHZShlLHQpKX0sbHRlKGUsdCl7cmV0dXJuIHRoaXMuY2hlY2soeGUoZSx0KSl9LG1heChlLHQpe3JldHVybiB0aGlzLmNoZWNrKHhlKGUsdCkpfSxwb3NpdGl2ZShlKXtyZXR1cm4gdGhpcy5jaGVjayhZZShCaWdJbnQoMCksZSkpfSxuZWdhdGl2ZShlKXtyZXR1cm4gdGhpcy5jaGVjayhHZShCaWdJbnQoMCksZSkpfSxub25wb3NpdGl2ZShlKXtyZXR1cm4gdGhpcy5jaGVjayh4ZShCaWdJbnQoMCksZSkpfSxub25uZWdhdGl2ZShlKXtyZXR1cm4gdGhpcy5jaGVjayhJZShCaWdJbnQoMCksZSkpfSxtdWx0aXBsZU9mKGUsdCl7cmV0dXJuIHRoaXMuY2hlY2soJHQoZSx0KSl9fSkpO2Z1bmN0aW9uIFZjKGUpe3JldHVybiBSbShsbixlKX1jb25zdCB6bz1tKCJab2RCaWdJbnRGb3JtYXQiLChlLHQpPT57QWguaW5pdChlLHQpLGxuLmluaXQoZSx0KX0pO2Z1bmN0aW9uIEpjKGUpe3JldHVybiBabSh6byxlKX1mdW5jdGlvbiBLYyhlKXtyZXR1cm4gTW0oem8sZSl9Y29uc3QgWHM9bSgiWm9kU3ltYm9sIiwoZSx0KT0+e0NoLmluaXQoZSx0KSxaLmluaXQoZSx0KSxlLl96b2QucHJvY2Vzc0pTT05TY2hlbWE9KG4sbyxzKT0+TXYoKX0pO2Z1bmN0aW9uIEdjKGUpe3JldHVybiBqbShYcyxlKX1jb25zdCBlcj1tKCJab2RVbmRlZmluZWQiLChlLHQpPT57UGguaW5pdChlLHQpLFouaW5pdChlLHQpLGUuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0obixvLHMpPT5xdigpfSk7ZnVuY3Rpb24gRnQoZSl7cmV0dXJuIHFtKGVyLGUpfWNvbnN0IHRyPW0oIlpvZE51bGwiLChlLHQpPT57RWguaW5pdChlLHQpLFouaW5pdChlLHQpLGUuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0obixvLHMpPT5qdigpfSk7ZnVuY3Rpb24geG8oZSl7cmV0dXJuIExtKHRyLGUpfWNvbnN0IG5yPW0oIlpvZEFueSIsKGUsdCk9PntPaC5pbml0KGUsdCksWi5pbml0KGUsdCksZS5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShuLG8scyk9PkJ2KCl9KTtmdW5jdGlvbiBJbygpe3JldHVybiBEbShucil9Y29uc3Qgb3I9bSgiWm9kVW5rbm93biIsKGUsdCk9PntSaC5pbml0KGUsdCksWi5pbml0KGUsdCksZS5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShuLG8scyk9PlV2KCl9KTtmdW5jdGlvbiBKKCl7cmV0dXJuIEJtKG9yKX1jb25zdCBzcj1tKCJab2ROZXZlciIsKGUsdCk9PntOaC5pbml0KGUsdCksWi5pbml0KGUsdCksZS5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShuLG8scyk9PkR2KCl9KTtmdW5jdGlvbiB5dChlKXtyZXR1cm4gVW0oc3IsZSl9Y29uc3QgcnI9bSgiWm9kVm9pZCIsKGUsdCk9PntaaC5pbml0KGUsdCksWi5pbml0KGUsdCksZS5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShuLG8scyk9Pkx2KCl9KTtmdW5jdGlvbiBZYyhlKXtyZXR1cm4gRm0ocnIsZSl9Y29uc3QgQW89bSgiWm9kRGF0ZSIsKGUsdCk9PntNaC5pbml0KGUsdCksWi5pbml0KGUsdCksZS5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShuLG8scyk9PkZ2KCksZS5taW49KG4sbyk9PmUuY2hlY2soSWUobixvKSksZS5tYXg9KG4sbyk9PmUuY2hlY2soeGUobixvKSl9LHFuKHttaW5EYXRlOmU9Pntjb25zdHttaW5pbXVtOnR9PVplKCk7cmV0dXJuIHQ/bmV3IERhdGUodCk6bnVsbH0sbWF4RGF0ZTplPT57Y29uc3R7bWF4aW11bTp0fT1aZSgpO3JldHVybiB0P25ldyBEYXRlKHQpOm51bGx9fSx7fSkpO2Z1bmN0aW9uIFFjKGUpe3JldHVybiBIbShBbyxlKX1jb25zdCBpcj1tKCJab2RBcnJheSIsKGUsdCk9PntQdCgpLGpoLmluaXQoZSx0KSxaLmluaXQoZSx0KSxlLl96b2QucHJvY2Vzc0pTT05TY2hlbWE9KG4sbyxzKT0+biQoKSxlLmVsZW1lbnQ9dC5lbGVtZW50fSx7bWluKGUsdCl7cmV0dXJuIHRoaXMuY2hlY2soaXQoZSx0KSl9LG5vbmVtcHR5KGUpe3JldHVybiB0aGlzLmNoZWNrKGl0KDEsZSkpfSxtYXgoZSx0KXtyZXR1cm4gdGhpcy5jaGVjayhZdChlLHQpKX0sbGVuZ3RoKGUsdCl7cmV0dXJuIHRoaXMuY2hlY2soUXQoZSx0KSl9LHVud3JhcCgpe3JldHVybiB0aGlzLmVsZW1lbnR9fSk7ZnVuY3Rpb24gRShlLHQpe3JldHVybiBKbShpcixlLHQpfWZ1bmN0aW9uIFhjKGUpe2NvbnN0IHQ9ZS5fem9kLmRlZi5zaGFwZTtyZXR1cm4gbWUoT2JqZWN0LmtleXModCkpfWNvbnN0IHVuPW0oIlpvZE9iamVjdCIsKGUsdCk9PntQdCgpLEJoLmluaXQoZSx0KSxaLmluaXQoZSx0KSxlLl96b2QucHJvY2Vzc0pTT05TY2hlbWE9KG4sbyxzKT0+byQoKSxOZChlLCJzaGFwZSIsbj0+bi5fem9kLmRlZi5zaGFwZSwhMSl9LHtrZXlvZigpe3JldHVybiBtZShPYmplY3Qua2V5cyh0aGlzLl96b2QuZGVmLnNoYXBlKSl9LGNhdGNoYWxsKGUpe3JldHVybiB0aGlzLmNsb25lKHZlKHRoaXMuX3pvZC5kZWYse2NhdGNoYWxsOmV9KSl9LHBhc3N0aHJvdWdoKCl7cmV0dXJuIHRoaXMuY2xvbmUodmUodGhpcy5fem9kLmRlZix7Y2F0Y2hhbGw6SigpfSkpfSxsb29zZSgpe3JldHVybiB0aGlzLmNsb25lKHZlKHRoaXMuX3pvZC5kZWYse2NhdGNoYWxsOkooKX0pKX0sc3RyaWN0KCl7cmV0dXJuIHRoaXMuY2xvbmUodmUodGhpcy5fem9kLmRlZix7Y2F0Y2hhbGw6eXQoKX0pKX0sc3RyaXAoKXtyZXR1cm4gdGhpcy5jbG9uZSh2ZSh0aGlzLl96b2QuZGVmLHtjYXRjaGFsbDp2b2lkIDB9KSl9LGV4dGVuZChlKXtyZXR1cm4gVGQodGhpcyxlKX0sc2FmZUV4dGVuZChlKXtyZXR1cm4geGQodGhpcyxlKX0sbWVyZ2UoZSl7cmV0dXJuIElkKHRoaXMsZSl9LHBpY2soZSl7cmV0dXJuIHdkKHRoaXMsZSl9LG9taXQoZSl7cmV0dXJuIFNkKHRoaXMsZSl9LHBhcnRpYWwoLi4uZSl7cmV0dXJuIGlpKGhuLHRoaXMsZVswXSl9LGV4YWN0UGFydGlhbCguLi5lKXtyZXR1cm4gaWkoRW8sdGhpcyxlWzBdLCJleGFjdFBhcnRpYWwiKX0scmVxdWlyZWQoLi4uZSl7cmV0dXJuIEFkKE9vLHRoaXMsZVswXSl9fSk7ZnVuY3Rpb24gdihlLHQpe2NvbnN0IG49e3R5cGU6Im9iamVjdCIsc2hhcGU6ZT8/e30sLi4udyh0KX07cmV0dXJuIG5ldyB1bihuKX1mdW5jdGlvbiBlbChlLHQpe3JldHVybiBuZXcgdW4oe3R5cGU6Im9iamVjdCIsc2hhcGU6ZSxjYXRjaGFsbDp5dCgpLC4uLncodCl9KX1mdW5jdGlvbiBoZShlLHQpe3JldHVybiBuZXcgdW4oe3R5cGU6Im9iamVjdCIsc2hhcGU6ZSxjYXRjaGFsbDpKKCksLi4udyh0KX0pfWNvbnN0IGRuPW0oIlpvZFVuaW9uIiwoZSx0KT0+e0xzLmluaXQoZSx0KSxaLmluaXQoZSx0KSxlLl96b2QucHJvY2Vzc0pTT05TY2hlbWE9KG4sbyxzKT0+c2YoKSxlLm9wdGlvbnM9dC5vcHRpb25zfSk7ZnVuY3Rpb24gcShlLHQpe3JldHVybiBuZXcgZG4oe3R5cGU6InVuaW9uIixvcHRpb25zOmUsLi4udyh0KX0pfWNvbnN0IGFyPW0oIlpvZFhvciIsKGUsdCk9Pntkbi5pbml0KGUsdCksVWguaW5pdChlLHQpLGUuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0obixvLHMpPT5zZigpLGUub3B0aW9ucz10Lm9wdGlvbnN9KTtmdW5jdGlvbiB0bChlLHQpe3JldHVybiBuZXcgYXIoe3R5cGU6InVuaW9uIixvcHRpb25zOmUsaW5jbHVzaXZlOiExLC4uLncodCl9KX1jb25zdCBjcj1tKCJab2REaXNjcmltaW5hdGVkVW5pb24iLChlLHQpPT57ZG4uaW5pdChlLHQpLEhoLmluaXQoZSx0KX0pO2Z1bmN0aW9uIENvKGUsdCxuKXtyZXR1cm4gbmV3IGNyKHt0eXBlOiJ1bmlvbiIsb3B0aW9uczp0LGRpc2NyaW1pbmF0b3I6ZSwuLi53KG4pfSl9Y29uc3QgbHI9bSgiWm9kSW50ZXJzZWN0aW9uIiwoZSx0KT0+e1doLmluaXQoZSx0KSxaLmluaXQoZSx0KSxlLl96b2QucHJvY2Vzc0pTT05TY2hlbWE9KG4sbyxzKT0+cyQoKX0pO2Z1bmN0aW9uIHBuKGUsdCl7cmV0dXJuIG5ldyBscih7dHlwZToiaW50ZXJzZWN0aW9uIixsZWZ0OmUscmlnaHQ6dH0pfWNvbnN0IHVyPW0oIlpvZFR1cGxlIiwoZSx0KT0+e1B0KCksZGEuaW5pdChlLHQpLFouaW5pdChlLHQpLGUuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0obixvLHMpPT5yJCgpfSx7cmVzdChlKXtyZXR1cm4gdGhpcy5jbG9uZSh7Li4udGhpcy5fem9kLmRlZixyZXN0OmV9KX0scGFydGlhbCgpe2NvbnN0IGU9dGhpcy5fem9kLmRlZjtpZihlLmNoZWNrcz8ubGVuZ3RoKXRocm93IG5ldyBFcnJvcigiLnBhcnRpYWwoKSBjYW5ub3QgYmUgdXNlZCBvbiB0dXBsZSBzY2hlbWFzIGNvbnRhaW5pbmcgcmVmaW5lbWVudHMiKTtyZXR1cm4gdGhpcy5jbG9uZSh7Li4uZSxpdGVtczplLml0ZW1zLm1hcCh0PT5uZXcgaG4oe3R5cGU6Im9wdGlvbmFsIixpbm5lclR5cGU6dH0pKX0pfX0pO2Z1bmN0aW9uIGRyKGUsdCxuKXtjb25zdCBvPXQgaW5zdGFuY2VvZiBSLHM9bz9uOnQscj1vP3Q6bnVsbDtyZXR1cm4gbmV3IHVyKHt0eXBlOiJ0dXBsZSIsaXRlbXM6ZSxyZXN0OnIsLi4udyhzKX0pfWNvbnN0IGt0PW0oIlpvZFJlY29yZCIsKGUsdCk9PntQdCgpLFZoLmluaXQoZSx0KSxaLmluaXQoZSx0KSxlLl96b2QucHJvY2Vzc0pTT05TY2hlbWE9KG4sbyxzKT0+aSQoKSxlLmtleVR5cGU9dC5rZXlUeXBlLGUudmFsdWVUeXBlPXQudmFsdWVUeXBlfSk7ZnVuY3Rpb24gRChlLHQsbil7cmV0dXJuIXR8fCF0Ll96b2Q/bmV3IGt0KHt0eXBlOiJyZWNvcmQiLGtleVR5cGU6ZigpLHZhbHVlVHlwZTplLC4uLncodCl9KTpuZXcga3Qoe3R5cGU6InJlY29yZCIsa2V5VHlwZTplLHZhbHVlVHlwZTp0LC4uLncobil9KX1mdW5jdGlvbiBubChlLHQsbil7cmV0dXJuIG5ldyBrdCh7dHlwZToicmVjb3JkIixrZXlUeXBlOmUsdmFsdWVUeXBlOnQsLi4udyhuKSxwYXJ0aWFsOiEwfSl9ZnVuY3Rpb24gb2woZSx0LG4pe3JldHVybiBuZXcga3Qoe3R5cGU6InJlY29yZCIsa2V5VHlwZTplLHZhbHVlVHlwZTp0LG1vZGU6Imxvb3NlIiwuLi53KG4pfSl9Y29uc3QgcHI9bSgiWm9kTWFwIiwoZSx0KT0+e1B0KCksSmguaW5pdChlLHQpLFouaW5pdChlLHQpLGUuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0obixvLHMpPT5lJCgpLGUua2V5VHlwZT10LmtleVR5cGUsZS52YWx1ZVR5cGU9dC52YWx1ZVR5cGUsZS5taW49KC4uLm4pPT5lLmNoZWNrKFFlKC4uLm4pKSxlLm5vbmVtcHR5PW49PmUuY2hlY2soUWUoMSxuKSksZS5tYXg9KC4uLm4pPT5lLmNoZWNrKEN0KC4uLm4pKSxlLnNpemU9KC4uLm4pPT5lLmNoZWNrKEd0KC4uLm4pKX0pO2Z1bmN0aW9uIHNsKGUsdCxuKXtyZXR1cm4gbmV3IHByKHt0eXBlOiJtYXAiLGtleVR5cGU6ZSx2YWx1ZVR5cGU6dCwuLi53KG4pfSl9Y29uc3QgaHI9bSgiWm9kU2V0IiwoZSx0KT0+e1B0KCksS2guaW5pdChlLHQpLFouaW5pdChlLHQpLGUuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0obixvLHMpPT50JCgpLGUubWluPSguLi5uKT0+ZS5jaGVjayhRZSguLi5uKSksZS5ub25lbXB0eT1uPT5lLmNoZWNrKFFlKDEsbikpLGUubWF4PSguLi5uKT0+ZS5jaGVjayhDdCguLi5uKSksZS5zaXplPSguLi5uKT0+ZS5jaGVjayhHdCguLi5uKSl9KTtmdW5jdGlvbiBybChlLHQpe3JldHVybiBuZXcgaHIoe3R5cGU6InNldCIsdmFsdWVUeXBlOmUsLi4udyh0KX0pfWNvbnN0IF90PW0oIlpvZEVudW0iLChlLHQpPT57R2guaW5pdChlLHQpLFouaW5pdChlLHQpLGUuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0obyxzLHIpPT5IdigpLGUuZW51bT10LmVudHJpZXMsZS5vcHRpb25zPVsuLi5lLl96b2QudmFsdWVzXTtjb25zdCBuPW5ldyBTZXQoT2JqZWN0LmtleXModC5lbnRyaWVzKSk7ZS5leHRyYWN0PShvLHMpPT57Y29uc3Qgcj17fTtmb3IoY29uc3QgaSBvZiBvKWlmKG4uaGFzKGkpKXJbaV09dC5lbnRyaWVzW2ldO2Vsc2UgdGhyb3cgbmV3IEVycm9yKGBLZXkgJHtpfSBub3QgZm91bmQgaW4gZW51bWApO3JldHVybiBuZXcgX3Qoey4uLnQsY2hlY2tzOltdLC4uLncocyksZW50cmllczpyfSl9LGUuZXhjbHVkZT0obyxzKT0+e2NvbnN0IHI9ey4uLnQuZW50cmllc307Zm9yKGNvbnN0IGkgb2YgbylpZihuLmhhcyhpKSlkZWxldGUgcltpXTtlbHNlIHRocm93IG5ldyBFcnJvcihgS2V5ICR7aX0gbm90IGZvdW5kIGluIGVudW1gKTtyZXR1cm4gbmV3IF90KHsuLi50LGNoZWNrczpbXSwuLi53KHMpLGVudHJpZXM6cn0pfX0pO2Z1bmN0aW9uIG1lKGUsdCl7Y29uc3Qgbj1BcnJheS5pc0FycmF5KGUpP09iamVjdC5mcm9tRW50cmllcyhlLm1hcChvPT5bbyxvXSkpOmU7cmV0dXJuIG5ldyBfdCh7dHlwZToiZW51bSIsZW50cmllczpuLC4uLncodCl9KX1mdW5jdGlvbiBpbChlLHQpe3JldHVybiBuZXcgX3Qoe3R5cGU6ImVudW0iLGVudHJpZXM6ZSwuLi53KHQpfSl9Y29uc3QgbXI9bSgiWm9kTGl0ZXJhbCIsKGUsdCk9PntZaC5pbml0KGUsdCksWi5pbml0KGUsdCksZS5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShuLG8scyk9Pld2KCksZS52YWx1ZXM9bmV3IFNldCh0LnZhbHVlcyksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsInZhbHVlIix7Z2V0KCl7aWYodC52YWx1ZXMubGVuZ3RoPjEpdGhyb3cgbmV3IEVycm9yKCJUaGlzIHNjaGVtYSBjb250YWlucyBtdWx0aXBsZSB2YWxpZCBsaXRlcmFsIHZhbHVlcy4gVXNlIGAudmFsdWVzYCBpbnN0ZWFkLiIpO3JldHVybiB0LnZhbHVlc1swXX19KX0pO2Z1bmN0aW9uIGcoZSx0KXtyZXR1cm4gbmV3IG1yKHt0eXBlOiJsaXRlcmFsIix2YWx1ZXM6QXJyYXkuaXNBcnJheShlKT9lOltlXSwuLi53KHQpfSl9Y29uc3QgZnI9bSgiWm9kRmlsZSIsKGUsdCk9PntRaC5pbml0KGUsdCksWi5pbml0KGUsdCksZS5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShuLG8scyk9Pkt2KCksZS5taW49KG4sbyk9PmUuY2hlY2soUWUobixvKSksZS5tYXg9KG4sbyk9PmUuY2hlY2soQ3QobixvKSksZS5taW1lPShuLG8pPT5lLmNoZWNrKHRvKEFycmF5LmlzQXJyYXkobik/bjpbbl0sbykpfSk7ZnVuY3Rpb24gYWwoZSl7cmV0dXJuIEttKGZyLGUpfWNvbnN0IGdyPW0oIlpvZFRyYW5zZm9ybSIsKGUsdCk9PntQdCgpLFhoLmluaXQoZSx0KSxaLmluaXQoZSx0KSxlLl96b2QucHJvY2Vzc0pTT05TY2hlbWE9KG4sbyxzKT0+WHYoKSxlLl96b2QucGFyc2U9KG4sbyk9PntpZihvLmRpcmVjdGlvbj09PSJiYWNrd2FyZCIpdGhyb3cgbmV3IEVzKGUuY29uc3RydWN0b3IubmFtZSk7bi5hZGRJc3N1ZT1yPT57aWYodHlwZW9mIHI9PSJzdHJpbmciKW4uaXNzdWVzLnB1c2goQnQocixuLnZhbHVlLHQpKTtlbHNle2NvbnN0IGk9cjtpLmZhdGFsJiYoaS5jb250aW51ZT0hMSksaS5jb2RlPz8oaS5jb2RlPSJjdXN0b20iKSwiaW5wdXQiaW4gaXx8KGkuaW5wdXQ9bi52YWx1ZSksaS5pbnN0Pz8oaS5pbnN0PWUpLG4uaXNzdWVzLnB1c2goQnQoaSkpfX07Y29uc3Qgcz10LnRyYW5zZm9ybShuLnZhbHVlLG4pO3JldHVybiBzIGluc3RhbmNlb2YgUHJvbWlzZT9zLnRoZW4ocj0+KG4udmFsdWU9cixuKSk6KG4udmFsdWU9cyxuKX19KTtmdW5jdGlvbiBQbyhlKXtyZXR1cm4gbmV3IGdyKHt0eXBlOiJ0cmFuc2Zvcm0iLHRyYW5zZm9ybTplfSl9Y29uc3QgaG49bSgiWm9kT3B0aW9uYWwiLChlLHQpPT57cGEuaW5pdChlLHQpLFouaW5pdChlLHQpLGUuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0obixvLHMpPT5yZigpLGUudW53cmFwPSgpPT5lLl96b2QuZGVmLmlubmVyVHlwZX0pO2Z1bmN0aW9uIFgoZSl7cmV0dXJuIG5ldyBobih7dHlwZToib3B0aW9uYWwiLGlubmVyVHlwZTplfSl9Y29uc3QgRW89bSgiWm9kRXhhY3RPcHRpb25hbCIsKGUsdCk9PntlbS5pbml0KGUsdCksWi5pbml0KGUsdCksZS5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShuLG8scyk9PnJmKCksZS51bndyYXA9KCk9PmUuX3pvZC5kZWYuaW5uZXJUeXBlfSk7ZnVuY3Rpb24gYnIoZSl7cmV0dXJuIG5ldyBFbyh7dHlwZToib3B0aW9uYWwiLGlubmVyVHlwZTplfSl9Y29uc3QgdnI9bSgiWm9kTnVsbGFibGUiLChlLHQpPT57dG0uaW5pdChlLHQpLFouaW5pdChlLHQpLGUuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0obixvLHMpPT5hJCgpLGUudW53cmFwPSgpPT5lLl96b2QuZGVmLmlubmVyVHlwZX0pO2Z1bmN0aW9uIEh0KGUpe3JldHVybiBuZXcgdnIoe3R5cGU6Im51bGxhYmxlIixpbm5lclR5cGU6ZX0pfWZ1bmN0aW9uIGNsKGUpe3JldHVybiBYKEh0KGUpKX1jb25zdCAkcj1tKCJab2REZWZhdWx0IiwoZSx0KT0+e25tLmluaXQoZSx0KSxaLmluaXQoZSx0KSxlLl96b2QucHJvY2Vzc0pTT05TY2hlbWE9KG4sbyxzKT0+bCQoKSxlLnVud3JhcD0oKT0+ZS5fem9kLmRlZi5pbm5lclR5cGUsZS5yZW1vdmVEZWZhdWx0PWUudW53cmFwfSk7ZnVuY3Rpb24geXIoZSx0KXtyZXR1cm4gbmV3ICRyKHt0eXBlOiJkZWZhdWx0Iixpbm5lclR5cGU6ZSxnZXQgZGVmYXVsdFZhbHVlKCl7cmV0dXJuIHR5cGVvZiB0PT0iZnVuY3Rpb24iP3QoKTp6cyh0KX19KX1jb25zdCBrcj1tKCJab2RQcmVmYXVsdCIsKGUsdCk9PntvbS5pbml0KGUsdCksWi5pbml0KGUsdCksZS5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShuLG8scyk9PnUkKCksZS51bndyYXA9KCk9PmUuX3pvZC5kZWYuaW5uZXJUeXBlfSk7ZnVuY3Rpb24gX3IoZSx0KXtyZXR1cm4gbmV3IGtyKHt0eXBlOiJwcmVmYXVsdCIsaW5uZXJUeXBlOmUsZ2V0IGRlZmF1bHRWYWx1ZSgpe3JldHVybiB0eXBlb2YgdD09ImZ1bmN0aW9uIj90KCk6enModCl9fSl9Y29uc3QgT289bSgiWm9kTm9uT3B0aW9uYWwiLChlLHQpPT57c20uaW5pdChlLHQpLFouaW5pdChlLHQpLGUuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0obixvLHMpPT5jJCgpLGUudW53cmFwPSgpPT5lLl96b2QuZGVmLmlubmVyVHlwZX0pO2Z1bmN0aW9uIHdyKGUsdCl7cmV0dXJuIG5ldyBPbyh7dHlwZToibm9ub3B0aW9uYWwiLGlubmVyVHlwZTplLC4uLncodCl9KX1jb25zdCBTcj1tKCJab2RTdWNjZXNzIiwoZSx0KT0+e3JtLmluaXQoZSx0KSxaLmluaXQoZSx0KSxlLl96b2QucHJvY2Vzc0pTT05TY2hlbWE9KG4sbyxzKT0+R3YoKSxlLnVud3JhcD0oKT0+ZS5fem9kLmRlZi5pbm5lclR5cGV9KTtmdW5jdGlvbiBsbChlKXtyZXR1cm4gbmV3IFNyKHt0eXBlOiJzdWNjZXNzIixpbm5lclR5cGU6ZX0pfWNvbnN0IFRyPW0oIlpvZENhdGNoIiwoZSx0KT0+e2ltLmluaXQoZSx0KSxaLmluaXQoZSx0KSxlLl96b2QucHJvY2Vzc0pTT05TY2hlbWE9KG4sbyxzKT0+ZCQoKSxlLnVud3JhcD0oKT0+ZS5fem9kLmRlZi5pbm5lclR5cGUsZS5yZW1vdmVDYXRjaD1lLnVud3JhcH0pO2Z1bmN0aW9uIHpyKGUsdCl7cmV0dXJuIG5ldyBUcih7dHlwZToiY2F0Y2giLGlubmVyVHlwZTplLGNhdGNoVmFsdWU6dHlwZW9mIHQ9PSJmdW5jdGlvbiI/dDpSaSh0KX0pfWNvbnN0IHhyPW0oIlpvZE5hTiIsKGUsdCk9PnthbS5pbml0KGUsdCksWi5pbml0KGUsdCksZS5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShuLG8scyk9PlZ2KCl9KTtmdW5jdGlvbiB1bChlKXtyZXR1cm4gVm0oeHIsZSl9Y29uc3QgbW49bSgiWm9kUGlwZSIsKGUsdCk9PntoYS5pbml0KGUsdCksWi5pbml0KGUsdCksZS5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShuLG8scyk9PnAkKCksZS5pbj10LmluLGUub3V0PXQub3V0fSk7ZnVuY3Rpb24gT24oZSx0KXtyZXR1cm4gbmV3IG1uKHt0eXBlOiJwaXBlIixpbjplLG91dDp0fSl9Y29uc3QgZm49bSgiWm9kQ29kZWMiLChlLHQpPT57bW4uaW5pdChlLHQpLG1hLmluaXQoZSx0KX0pO2Z1bmN0aW9uIGRsKGUsdCxuKXtyZXR1cm4gbmV3IGZuKHt0eXBlOiJwaXBlIixpbjplLG91dDp0LHRyYW5zZm9ybTpuLmRlY29kZSxyZXZlcnNlVHJhbnNmb3JtOm4uZW5jb2RlfSl9ZnVuY3Rpb24gcGwoZSl7Y29uc3QgdD1lLl96b2QuZGVmO3JldHVybiBuZXcgZm4oe3R5cGU6InBpcGUiLGluOnQub3V0LG91dDp0LmluLHRyYW5zZm9ybTp0LnJldmVyc2VUcmFuc2Zvcm0scmV2ZXJzZVRyYW5zZm9ybTp0LnRyYW5zZm9ybX0pfWNvbnN0IElyPW0oIlpvZFByZXByb2Nlc3MiLChlLHQpPT57bW4uaW5pdChlLHQpLGNtLmluaXQoZSx0KX0pLEFyPW0oIlpvZFJlYWRvbmx5IiwoZSx0KT0+e2xtLmluaXQoZSx0KSxaLmluaXQoZSx0KSxlLl96b2QucHJvY2Vzc0pTT05TY2hlbWE9KG4sbyxzKT0+aCQoKSxlLnVud3JhcD0oKT0+ZS5fem9kLmRlZi5pbm5lclR5cGV9KTtmdW5jdGlvbiBDcihlKXtyZXR1cm4gbmV3IEFyKHt0eXBlOiJyZWFkb25seSIsaW5uZXJUeXBlOmV9KX1jb25zdCBQcj1tKCJab2RUZW1wbGF0ZUxpdGVyYWwiLChlLHQpPT57dW0uaW5pdChlLHQpLFouaW5pdChlLHQpLGUuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0obixvLHMpPT5KdigpfSk7ZnVuY3Rpb24gaGwoZSx0KXtyZXR1cm4gbmV3IFByKHt0eXBlOiJ0ZW1wbGF0ZV9saXRlcmFsIixwYXJ0czplLC4uLncodCl9KX1jb25zdCBFcj1tKCJab2RMYXp5IiwoZSx0KT0+e2ZhLmluaXQoZSx0KSxaLmluaXQoZSx0KSxlLl96b2QucHJvY2Vzc0pTT05TY2hlbWE9KG4sbyxzKT0+ZiQoKSxlLnVud3JhcD0oKT0+ZS5fem9kLmRlZi5nZXR0ZXIoKX0pO2Z1bmN0aW9uIE9yKGUpe3JldHVybiBuZXcgRXIoe3R5cGU6ImxhenkiLGdldHRlcjplfSl9Y29uc3QgUnI9bSgiWm9kUHJvbWlzZSIsKGUsdCk9PntwbS5pbml0KGUsdCksWi5pbml0KGUsdCksZS5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShuLG8scyk9Pm0kKCksZS51bndyYXA9KCk9PmUuX3pvZC5kZWYuaW5uZXJUeXBlfSk7ZnVuY3Rpb24gbWwoZSl7cmV0dXJuIG5ldyBScih7dHlwZToicHJvbWlzZSIsaW5uZXJUeXBlOmV9KX1jb25zdCBOcj1tKCJab2RGdW5jdGlvbiIsKGUsdCk9PntkbS5pbml0KGUsdCksWi5pbml0KGUsdCksZS5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShuLG8scyk9PlF2KCl9KTtmdW5jdGlvbiBXdChlKXtyZXR1cm4gbmV3IE5yKHt0eXBlOiJmdW5jdGlvbiIsaW5wdXQ6QXJyYXkuaXNBcnJheShlPy5pbnB1dCk/ZHIoZT8uaW5wdXQpOmU/LmlucHV0Pz9FKEooKSksb3V0cHV0OmU/Lm91dHB1dD8/SigpfSl9Y29uc3QgZ249bSgiWm9kQ3VzdG9tIiwoZSx0KT0+e2htLmluaXQoZSx0KSxaLmluaXQoZSx0KSxlLl96b2QucHJvY2Vzc0pTT05TY2hlbWE9KG4sbyxzKT0+WXYoKX0pO2Z1bmN0aW9uIGZsKGUpe2NvbnN0IHQ9bmV3IG9lKHtjaGVjazoiY3VzdG9tIn0pO3JldHVybiB0Ll96b2QuY2hlY2s9ZSx0fWZ1bmN0aW9uIFpyKGUsdCl7cmV0dXJuIEdtKGduLGU/PygoKT0+ITApLHQpfWZ1bmN0aW9uIE1yKGUsdD17fSl7cmV0dXJuIFltKGduLGUsdCl9ZnVuY3Rpb24ganIoZSx0KXtyZXR1cm4gUW0oZSx0KX1jb25zdCBnbD1lZixibD10Zixxcj1tKCJab2RJbnN0YW5jZU9mIiwoZSx0KT0+e2duLmluaXQoZSx0KX0se3Byb3BlcnRpZXMoZSx0KXtyZXR1cm4gdGhpcy5jaGVjayhlbyhlLHQpKX19KTtmdW5jdGlvbiB2bChlLHQ9e30pe2NvbnN0IG49bmV3IHFyKHt0eXBlOiJjdXN0b20iLGNoZWNrOiJjdXN0b20iLGZuOm89Pm8gaW5zdGFuY2VvZiBlLGFib3J0OiEwLC4uLncodCl9KTtyZXR1cm4gbi5fem9kLmJhZy5DbGFzcz1lLG4uX3pvZC5jaGVjaz1vPT57by52YWx1ZSBpbnN0YW5jZW9mIGV8fG8uaXNzdWVzLnB1c2goe2NvZGU6ImludmFsaWRfdHlwZSIsZXhwZWN0ZWQ6ZS5uYW1lLGlucHV0Om8udmFsdWUsaW5zdDpuLHBhdGg6Wy4uLm4uX3pvZC5kZWYucGF0aD8/W11dfSl9LG59Y29uc3QgJGw9KC4uLmUpPT5uZih7Q29kZWM6Zm4sQm9vbGVhbjpjbixTdHJpbmc6ZW59LC4uLmUpO2Z1bmN0aW9uIHlsKGUpe2NvbnN0IHQ9T3IoKCk9PnEoW2YoZSksTigpLEsoKSx4bygpLEUodCksRChmKCksdCldKSk7cmV0dXJuIHR9ZnVuY3Rpb24gUm8oZSx0KXtyZXR1cm4gbmV3IElyKHt0eXBlOiJwaXBlIixpbjpQbyhlKSxvdXQ6dH0pfWNvbnN0IF8kPU9iamVjdC5mcmVlemUoT2JqZWN0LmRlZmluZVByb3BlcnR5KHtfX3Byb3RvX186bnVsbCxab2RBbnk6bnIsWm9kQXJyYXk6aXIsWm9kQmFzZTY0Ol9vLFpvZEJhc2U2NFVSTDp3byxab2RCaWdJbnQ6bG4sWm9kQmlnSW50Rm9ybWF0OnpvLFpvZEJvb2xlYW46Y24sWm9kQ0lEUnY0OnlvLFpvZENJRFJ2Njprbyxab2RDVUlEOmhvLFpvZENVSUQyOm1vLFpvZENhdGNoOlRyLFpvZENvZGVjOmZuLFpvZENyZWRpdENhcmQ6WXMsWm9kQ3VzdG9tOmduLFpvZEN1c3RvbVN0cmluZ0Zvcm1hdDpjdCxab2REYXRlOkFvLFpvZERlZmF1bHQ6JHIsWm9kRGlzY3JpbWluYXRlZFVuaW9uOmNyLFpvZEUxNjQ6U28sWm9kRW1haWw6Y28sWm9kRW1vamk6dW8sWm9kRW51bTpfdCxab2RFeGFjdE9wdGlvbmFsOkVvLFpvZEZpbGU6ZnIsWm9kRnVuY3Rpb246TnIsWm9kR1VJRDpsbyxab2RJQkFOOlFzLFpvZElQdjQ6dm8sWm9kSVB2Njokbyxab2RJU09EYXRlOm5uLFpvZElTT0RhdGVUaW1lOnRuLFpvZElTT0R1cmF0aW9uOnNuLFpvZElTT1RpbWU6b24sWm9kSW5zdGFuY2VPZjpxcixab2RJbnRlcnNlY3Rpb246bHIsWm9kSldUOlRvLFpvZEtTVUlEOmJvLFpvZExhenk6RXIsWm9kTGl0ZXJhbDptcixab2RNQUM6R3MsWm9kTWFwOnByLFpvZE5hTjp4cixab2ROYW5vSUQ6cG8sWm9kTmV2ZXI6c3IsWm9kTm9uT3B0aW9uYWw6T28sWm9kTnVsbDp0cixab2ROdWxsYWJsZTp2cixab2ROdW1iZXI6YW4sWm9kTnVtYmVyRm9ybWF0Omx0LFpvZE9iamVjdDp1bixab2RPcHRpb25hbDpobixab2RQaXBlOm1uLFpvZFByZWZhdWx0OmtyLFpvZFByZXByb2Nlc3M6SXIsWm9kUHJvbWlzZTpScixab2RSZWFkb25seTpBcixab2RSZWNvcmQ6a3QsWm9kU2V0OmhyLFpvZFN0cmluZzplbixab2RTdHJpbmdGb3JtYXQ6Ryxab2RTdWNjZXNzOlNyLFpvZFN5bWJvbDpYcyxab2RUZW1wbGF0ZUxpdGVyYWw6UHIsWm9kVHJhbnNmb3JtOmdyLFpvZFR1cGxlOnVyLFpvZFR5cGU6Wixab2RVTElEOmZvLFpvZFVSTDpybixab2RVVUlEOlVlLFpvZFVuZGVmaW5lZDplcixab2RVbmlvbjpkbixab2RVbmtub3duOm9yLFpvZFZvaWQ6cnIsWm9kWElEOmdvLFpvZFhvcjphcixfWm9kU3RyaW5nOmFvLF9kZWZhdWx0OnlyLF9mdW5jdGlvbjpXdCxhbnk6SW8sYXJyYXk6RSxiYXNlNjQ6RWMsYmFzZTY0dXJsOk9jLGJpZ2ludDpWYyxib29sZWFuOkssY2F0Y2g6enIsY2hlY2s6ZmwsY2lkcnY0OkNjLGNpZHJ2NjpQYyxjb2RlYzpkbCxjcmVkaXRDYXJkOk5jLGN1aWQ6X2MsY3VpZDI6d2MsY3VycmVuY3lDb2RlOkRjLGN1c3RvbTpacixkYXRlOlFjLGRlc2NyaWJlOmdsLGRpc2NyaW1pbmF0ZWRVbmlvbjpDbyxlMTY0OlJjLGVtYWlsOnBjLGVtb2ppOnljLGVudW06bWUsZXhhY3RPcHRpb25hbDpicixmaWxlOmFsLGZsb2F0MzI6VWMsZmxvYXQ2NDpGYyxmdW5jdGlvbjpXdCxndWlkOmhjLGhhc2g6QmMsaGV4OkxjLGhvc3RuYW1lOnFjLGh0dHBVcmw6JGMsaWJhbjpaYyxpbnN0YW5jZW9mOnZsLGludDpFbixpbnQzMjpIYyxpbnQ2NDpKYyxpbnRlcnNlY3Rpb246cG4saW52ZXJ0Q29kZWM6cGwsaXB2NDp4YyxpcHY2OkFjLGpzb246eWwsand0Ok1jLGtleW9mOlhjLGtzdWlkOnpjLGxhenk6T3IsbGl0ZXJhbDpnLGxvb3NlT2JqZWN0OmhlLGxvb3NlUmVjb3JkOm9sLG1hYzpJYyxtYXA6c2wsbWV0YTpibCxuYW46dWwsbmFub2lkOmtjLG5hdGl2ZUVudW06aWwsbmV2ZXI6eXQsbm9ub3B0aW9uYWw6d3IsbnVsbDp4byxudWxsYWJsZTpIdCxudWxsaXNoOmNsLG51bWJlcjpOLG9iamVjdDp2LG9wdGlvbmFsOlgscGFydGlhbFJlY29yZDpubCxwaXBlOk9uLHByZWZhdWx0Ol9yLHByZXByb2Nlc3M6Um8scHJvbWlzZTptbCxyZWFkb25seTpDcixyZWNvcmQ6RCxyZWZpbmU6TXIsc2V0OnJsLHN0cmljdE9iamVjdDplbCxzdHJpbmc6ZixzdHJpbmdGb3JtYXQ6amMsc3RyaW5nYm9vbDokbCxzdWNjZXNzOmxsLHN1cGVyUmVmaW5lOmpyLHN5bWJvbDpHYyx0ZW1wbGF0ZUxpdGVyYWw6aGwsdHJhbnNmb3JtOlBvLHR1cGxlOmRyLHVpbnQzMjpXYyx1aW50NjQ6S2MsdWxpZDpTYyx1bmRlZmluZWQ6RnQsdW5pb246cSx1bmtub3duOkosdXJsOnZjLHV1aWQ6bWMsdXVpZHY0OmZjLHV1aWR2NjpnYyx1dWlkdjc6YmMsdm9pZDpZYyx4aWQ6VGMseG9yOnRsfSxTeW1ib2wudG9TdHJpbmdUYWcse3ZhbHVlOiJNb2R1bGUifSkpLGRmPXtpbnZhbGlkX3R5cGU6ImludmFsaWRfdHlwZSIsdG9vX2JpZzoidG9vX2JpZyIsdG9vX3NtYWxsOiJ0b29fc21hbGwiLGludmFsaWRfZm9ybWF0OiJpbnZhbGlkX2Zvcm1hdCIsbm90X211bHRpcGxlX29mOiJub3RfbXVsdGlwbGVfb2YiLHVucmVjb2duaXplZF9rZXlzOiJ1bnJlY29nbml6ZWRfa2V5cyIsaW52YWxpZF91bmlvbjoiaW52YWxpZF91bmlvbiIsaW52YWxpZF9rZXk6ImludmFsaWRfa2V5IixpbnZhbGlkX2VsZW1lbnQ6ImludmFsaWRfZWxlbWVudCIsaW52YWxpZF92YWx1ZToiaW52YWxpZF92YWx1ZSIsY3VzdG9tOiJjdXN0b20ifTtmdW5jdGlvbiBwZihlKXtkZSh7Y3VzdG9tRXJyb3I6ZX0pfWZ1bmN0aW9uIGhmKCl7cmV0dXJuIGRlKCkuY3VzdG9tRXJyb3J9dmFyIHBzO3BzfHwocHM9e30pO2Z1bmN0aW9uIG1mKGUpe3JldHVybiBWYSh0bixlKX1mdW5jdGlvbiB3JChlKXtyZXR1cm4gSmEobm4sZSl9ZnVuY3Rpb24gUyQoZSl7cmV0dXJuIEthKG9uLGUpfWZ1bmN0aW9uIFQkKGUpe3JldHVybiBHYShzbixlKX1jb25zdCBrbD1PYmplY3QuZnJlZXplKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7X19wcm90b19fOm51bGwsWm9kSVNPRGF0ZTpubixab2RJU09EYXRlVGltZTp0bixab2RJU09EdXJhdGlvbjpzbixab2RJU09UaW1lOm9uLGRhdGU6dyQsZGF0ZXRpbWU6bWYsZHVyYXRpb246VCQsdGltZTpTJH0sU3ltYm9sLnRvU3RyaW5nVGFnLHt2YWx1ZToiTW9kdWxlIn0pKSxJPXsuLi5fJCwuLi55JCxpc286a2x9LHokPW5ldyBTZXQoWyIkc2NoZW1hIiwiJHJlZiIsIiRkZWZzIiwiZGVmaW5pdGlvbnMiLCIkaWQiLCJpZCIsIiRjb21tZW50IiwiJGFuY2hvciIsIiR2b2NhYnVsYXJ5IiwiJGR5bmFtaWNSZWYiLCIkZHluYW1pY0FuY2hvciIsInR5cGUiLCJlbnVtIiwiY29uc3QiLCJhbnlPZiIsIm9uZU9mIiwiYWxsT2YiLCJub3QiLCJwcm9wZXJ0aWVzIiwicmVxdWlyZWQiLCJhZGRpdGlvbmFsUHJvcGVydGllcyIsInBhdHRlcm5Qcm9wZXJ0aWVzIiwicHJvcGVydHlOYW1lcyIsIm1pblByb3BlcnRpZXMiLCJtYXhQcm9wZXJ0aWVzIiwiaXRlbXMiLCJwcmVmaXhJdGVtcyIsImFkZGl0aW9uYWxJdGVtcyIsIm1pbkl0ZW1zIiwibWF4SXRlbXMiLCJ1bmlxdWVJdGVtcyIsImNvbnRhaW5zIiwibWluQ29udGFpbnMiLCJtYXhDb250YWlucyIsIm1pbkxlbmd0aCIsIm1heExlbmd0aCIsInBhdHRlcm4iLCJmb3JtYXQiLCJtaW5pbXVtIiwibWF4aW11bSIsImV4Y2x1c2l2ZU1pbmltdW0iLCJleGNsdXNpdmVNYXhpbXVtIiwibXVsdGlwbGVPZiIsImRlc2NyaXB0aW9uIiwiZGVmYXVsdCIsImNvbnRlbnRFbmNvZGluZyIsImNvbnRlbnRNZWRpYVR5cGUiLCJjb250ZW50U2NoZW1hIiwidW5ldmFsdWF0ZWRJdGVtcyIsInVuZXZhbHVhdGVkUHJvcGVydGllcyIsImlmIiwidGhlbiIsImVsc2UiLCJkZXBlbmRlbnRTY2hlbWFzIiwiZGVwZW5kZW50UmVxdWlyZWQiLCJudWxsYWJsZSIsInJlYWRPbmx5Il0pO2Z1bmN0aW9uIHgkKGUsdCl7Y29uc3Qgbj1lLiRzY2hlbWE7cmV0dXJuIG49PT0iaHR0cHM6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQvMjAyMC0xMi9zY2hlbWEiPyJkcmFmdC0yMDIwLTEyIjpuPT09Imh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQtMDcvc2NoZW1hIyI/ImRyYWZ0LTciOm49PT0iaHR0cDovL2pzb24tc2NoZW1hLm9yZy9kcmFmdC0wNC9zY2hlbWEjIj8iZHJhZnQtNCI6dD8/ImRyYWZ0LTIwMjAtMTIifWZ1bmN0aW9uIHF1KGUsdCl7cmV0dXJuIGUubWFwKChuLG8pPT5vPHQ/bjpuLm9wdGlvbmFsKCkpfWZ1bmN0aW9uIEkkKGUpe3JldHVybiBlLnJlcGxhY2UoL34xL2csIi8iKS5yZXBsYWNlKC9+MC9nLCJ+Iil9ZnVuY3Rpb24gQSQoZSx0KXtpZighZS5zdGFydHNXaXRoKCIjIikpdGhyb3cgbmV3IEVycm9yKCJFeHRlcm5hbCAkcmVmIGlzIG5vdCBzdXBwb3J0ZWQsIG9ubHkgbG9jYWwgcmVmcyAoIy8uLi4pIGFyZSBhbGxvd2VkIik7Y29uc3Qgbj1lLnNsaWNlKDEpLnNwbGl0KCIvIikuZmlsdGVyKEJvb2xlYW4pO2lmKG4ubGVuZ3RoPT09MClyZXR1cm4gdC5yb290U2NoZW1hO2NvbnN0IG89dC52ZXJzaW9uPT09ImRyYWZ0LTIwMjAtMTIiPyIkZGVmcyI6ImRlZmluaXRpb25zIjtpZihuWzBdPT09byl7Y29uc3Qgcz1uWzFdPT09dm9pZCAwP3ZvaWQgMDpJJChuWzFdKTtpZighc3x8IXQuZGVmc1tzXSl0aHJvdyBuZXcgRXJyb3IoYFJlZmVyZW5jZSBub3QgZm91bmQ6ICR7ZX1gKTtyZXR1cm4gdC5kZWZzW3NdfXRocm93IG5ldyBFcnJvcihgUmVmZXJlbmNlIG5vdCBmb3VuZDogJHtlfWApfWZ1bmN0aW9uIEMkKGUsdCl7cmV0dXJuIEkudHJhbnNmb3JtKG89Pm8pLmNoZWNrKG89Pntjb25zdCBzPW8udmFsdWU7aWYodHlwZW9mIHMhPSJvYmplY3QifHxzPT09bnVsbHx8QXJyYXkuaXNBcnJheShzKSlyZXR1cm47Y29uc3Qgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhzKTtpZih0Lm1pblByb3BlcnRpZXMhPT12b2lkIDAmJnIubGVuZ3RoPHQubWluUHJvcGVydGllcyYmby5pc3N1ZXMucHVzaCh7b3JpZ2luOiJvYmplY3QiLGNvZGU6InRvb19zbWFsbCIsbWluaW11bTp0Lm1pblByb3BlcnRpZXMsaW5jbHVzaXZlOiEwLG1lc3NhZ2U6YFRvbyBzbWFsbDogZXhwZWN0ZWQgb2JqZWN0IHRvIGhhdmUgPj0ke3QubWluUHJvcGVydGllc30gcHJvcGVydGllc2AsaW5wdXQ6cyxpbnN0OmUsY29udGludWU6ITB9KSx0Lm1heFByb3BlcnRpZXMhPT12b2lkIDAmJnIubGVuZ3RoPnQubWF4UHJvcGVydGllcyYmby5pc3N1ZXMucHVzaCh7b3JpZ2luOiJvYmplY3QiLGNvZGU6InRvb19iaWciLG1heGltdW06dC5tYXhQcm9wZXJ0aWVzLGluY2x1c2l2ZTohMCxtZXNzYWdlOmBUb28gYmlnOiBleHBlY3RlZCBvYmplY3QgdG8gaGF2ZSA8PSR7dC5tYXhQcm9wZXJ0aWVzfSBwcm9wZXJ0aWVzYCxpbnB1dDpzLGluc3Q6ZSxjb250aW51ZTohMH0pLHQua2V5U2NoZW1hKWZvcihjb25zdCBpIG9mIHIpe2NvbnN0IGE9dC5rZXlTY2hlbWEuc2FmZVBhcnNlKGkpO2Euc3VjY2Vzc3x8by5pc3N1ZXMucHVzaCh7Y29kZToiaW52YWxpZF9rZXkiLG9yaWdpbjoicmVjb3JkIixpc3N1ZXM6YS5lcnJvci5pc3N1ZXMsaW5wdXQ6aSxwYXRoOltpXSxjb250aW51ZTohMH0pfX0pLnBpcGUoZSl9ZnVuY3Rpb24gZmkoZSx0KXtpZihlPT09bnVsbClyZXR1cm4ieiI7Y29uc3Qgbj10eXBlb2YgZTtpZihuIT09Im9iamVjdCIpe2lmKG49PT0ibnVtYmVyIiYmTnVtYmVyLmlzTmFOKGUpKXJldHVybiBudWxsO2NvbnN0IG89U3RyaW5nKGUpO3JldHVybmAke25bMF19JHtvLmxlbmd0aH06JHtvfWB9aWYodC5oYXMoZSkpcmV0dXJuIG51bGw7dC5hZGQoZSk7dHJ5e2lmKEFycmF5LmlzQXJyYXkoZSkpe2NvbnN0IHI9W107Zm9yKGNvbnN0IGkgb2YgZSl7Y29uc3QgYT1maShpLHQpO2lmKGE9PT1udWxsKXJldHVybiBudWxsO3IucHVzaChhKX1yZXR1cm5gYSR7ci5sZW5ndGh9Olske3Iuam9pbigiLCIpfV1gfWNvbnN0IG89T2JqZWN0LmtleXMoZSkuc29ydCgpLHM9W107Zm9yKGNvbnN0IHIgb2Ygbyl7Y29uc3QgaT1maShlW3JdLHQpO2lmKGk9PT1udWxsKXJldHVybiBudWxsO3MucHVzaChgJHtyLmxlbmd0aH06JHtyfT0ke2l9YCl9cmV0dXJuYG8ke3MubGVuZ3RofTp7JHtzLmpvaW4oIiwiKX19YH1maW5hbGx5e3QuZGVsZXRlKGUpfX1jb25zdCBQJD1uZXcgU2V0KFsiaXRlbXMiLCJwcmVmaXhJdGVtcyIsImFkZGl0aW9uYWxJdGVtcyIsImFkZGl0aW9uYWxQcm9wZXJ0aWVzIiwiY29udGFpbnMiLCJwcm9wZXJ0eU5hbWVzIiwibm90IiwiaWYiLCJ0aGVuIiwiZWxzZSIsImFsbE9mIiwiYW55T2YiLCJvbmVPZiIsInVuZXZhbHVhdGVkSXRlbXMiLCJ1bmV2YWx1YXRlZFByb3BlcnRpZXMiLCJjb250ZW50U2NoZW1hIl0pLEUkPW5ldyBTZXQoWyJwcm9wZXJ0aWVzIiwicGF0dGVyblByb3BlcnRpZXMiLCJkZXBlbmRlbnRTY2hlbWFzIiwiZGVwZW5kZW5jaWVzIiwiJGRlZnMiLCJkZWZpbml0aW9ucyJdKTtmdW5jdGlvbiB4bihlKXtyZXR1cm4gdHlwZW9mIGUhPSJvYmplY3QifHxlPT09bnVsbD8hMTpBcnJheS5pc0FycmF5KGUpP2Uuc29tZSh4bik6dHlwZW9mIGUuJHJlZj09InN0cmluZyI/ITA6T2JqZWN0LmVudHJpZXMoZSkuc29tZSgoW3Qsbl0pPT5QJC5oYXModCk/eG4obik6IUUkLmhhcyh0KXx8dHlwZW9mIG4hPSJvYmplY3QifHxuPT09bnVsbD8hMTpPYmplY3QudmFsdWVzKG4pLnNvbWUoeG4pKX1mdW5jdGlvbiBMdShlKXtyZXR1cm4gZT09PTE/ImVsZW1lbnQiOiJlbGVtZW50cyJ9ZnVuY3Rpb24gTyQoZSx0KXtyZXR1cm4gSS50cmFuc2Zvcm0obz0+bykuY2hlY2sobz0+e2NvbnN0IHM9by52YWx1ZTtpZihBcnJheS5pc0FycmF5KHMpKXtpZih0LnVuaXF1ZUl0ZW1zPT09ITApe2NvbnN0IHI9bmV3IE1hcDtmb3IobGV0IGk9MDtpPHMubGVuZ3RoO2krKyl7Y29uc3QgYT1maShzW2ldLG5ldyBTZXQpO2lmKGE9PT1udWxsKWNvbnRpbnVlO2NvbnN0IGQ9ci5nZXQoYSk7aWYoZD09PXZvaWQgMCl7ci5zZXQoYSxpKTtjb250aW51ZX1vLmlzc3Vlcy5wdXNoKHtjb2RlOiJjdXN0b20iLG1lc3NhZ2U6YEFycmF5IGl0ZW1zIG11c3QgYmUgdW5pcXVlOiBlbGVtZW50IGF0IGluZGV4ICR7aX0gZHVwbGljYXRlcyB0aGUgb25lIGF0IGluZGV4ICR7ZH1gLGlucHV0OnMscGF0aDpbaV0sY29udGludWU6ITB9KX19aWYodC5jb250YWluc1NjaGVtYSl7Y29uc3Qgcj10Lm1pbkNvbnRhaW5zPz8xLGk9dC5tYXhDb250YWlucyE9PXZvaWQgMD90Lm1heENvbnRhaW5zKzE6TnVtYmVyLlBPU0lUSVZFX0lORklOSVRZO2xldCBhPTA7Zm9yKGNvbnN0IGQgb2YgcylpZih0LmNvbnRhaW5zU2NoZW1hLnNhZmVQYXJzZShkKS5zdWNjZXNzJiYrK2E+PWkpYnJlYWs7YTxyJiZvLmlzc3Vlcy5wdXNoKHtjb2RlOiJjdXN0b20iLG1lc3NhZ2U6YEFycmF5IG11c3QgY29udGFpbiBhdCBsZWFzdCAke3J9IG1hdGNoaW5nICR7THUocil9OyBmb3VuZCAke2F9YCxpbnB1dDpzLGNvbnRpbnVlOiEwfSksdC5tYXhDb250YWlucyE9PXZvaWQgMCYmYT50Lm1heENvbnRhaW5zJiZvLmlzc3Vlcy5wdXNoKHtjb2RlOiJjdXN0b20iLG1lc3NhZ2U6YEFycmF5IG11c3QgY29udGFpbiBhdCBtb3N0ICR7dC5tYXhDb250YWluc30gbWF0Y2hpbmcgJHtMdSh0Lm1heENvbnRhaW5zKX1gLGlucHV0OnMsY29udGludWU6ITB9KX19fSkucGlwZShlKX1mdW5jdGlvbiBEdShlLHQpe2lmKGUhPT0hMSlyZXR1cm4gZT09PXZvaWQgMHx8ZT09PSEwP0kuYW55KCk6JGUoZSx0KX1jb25zdCBSJD0vXig/OlswMV1cZHwyWzAtM10pOlswLTVdXGQ6WzAtNV1cZCg/OlwuXGQrKT8oPzpafFsrLV0oPzpbMDFdXGR8MlswLTNdKTpbMC01XVxkKSQvO2Z1bmN0aW9uIGZmKGUsdCl7aWYoZS5ub3QhPT12b2lkIDApe2lmKHR5cGVvZiBlLm5vdD09Im9iamVjdCImJk9iamVjdC5rZXlzKGUubm90KS5sZW5ndGg9PT0wKXJldHVybiBJLm5ldmVyKCk7dGhyb3cgbmV3IEVycm9yKCJub3QgaXMgbm90IHN1cHBvcnRlZCBpbiBab2QgKGV4Y2VwdCB7IG5vdDoge30gfSBmb3IgbmV2ZXIpIil9aWYoZS51bmV2YWx1YXRlZEl0ZW1zIT09dm9pZCAwKXRocm93IG5ldyBFcnJvcigidW5ldmFsdWF0ZWRJdGVtcyBpcyBub3Qgc3VwcG9ydGVkIik7aWYoZS51bmV2YWx1YXRlZFByb3BlcnRpZXMhPT12b2lkIDApdGhyb3cgbmV3IEVycm9yKCJ1bmV2YWx1YXRlZFByb3BlcnRpZXMgaXMgbm90IHN1cHBvcnRlZCIpO2lmKGUuaWYhPT12b2lkIDB8fGUudGhlbiE9PXZvaWQgMHx8ZS5lbHNlIT09dm9pZCAwKXRocm93IG5ldyBFcnJvcigiQ29uZGl0aW9uYWwgc2NoZW1hcyAoaWYvdGhlbi9lbHNlKSBhcmUgbm90IHN1cHBvcnRlZCIpO2lmKGUuZGVwZW5kZW50U2NoZW1hcyE9PXZvaWQgMHx8ZS5kZXBlbmRlbnRSZXF1aXJlZCE9PXZvaWQgMCl0aHJvdyBuZXcgRXJyb3IoImRlcGVuZGVudFNjaGVtYXMgYW5kIGRlcGVuZGVudFJlcXVpcmVkIGFyZSBub3Qgc3VwcG9ydGVkIik7aWYoZS4kcmVmKXtjb25zdCBzPWUuJHJlZjtpZih0LnJlZnMuaGFzKHMpKXJldHVybiB0LnJlZnMuZ2V0KHMpO2lmKHQucHJvY2Vzc2luZy5oYXMocykpcmV0dXJuIEkubGF6eSgoKT0+e2lmKCF0LnJlZnMuaGFzKHMpKXRocm93IG5ldyBFcnJvcihgQ2lyY3VsYXIgcmVmZXJlbmNlIG5vdCByZXNvbHZlZDogJHtzfWApO3JldHVybiB0LnJlZnMuZ2V0KHMpfSk7dC5wcm9jZXNzaW5nLmFkZChzKTtjb25zdCByPUEkKHMsdCksaT0kZShyLHQpO3JldHVybiB0LnJlZnMuc2V0KHMsaSksdC5wcm9jZXNzaW5nLmRlbGV0ZShzKSxpfWlmKGUuZW51bSE9PXZvaWQgMCl7Y29uc3Qgcz1lLmVudW07aWYodC52ZXJzaW9uPT09Im9wZW5hcGktMy4wIiYmZS5udWxsYWJsZT09PSEwJiZzLmxlbmd0aD09PTEmJnNbMF09PT1udWxsKXJldHVybiBJLm51bGwoKTtpZihzLmxlbmd0aD09PTApcmV0dXJuIEkubmV2ZXIoKTtpZihzLmxlbmd0aD09PTEpcmV0dXJuIEkubGl0ZXJhbChzWzBdKTtpZihzLmV2ZXJ5KGk9PnR5cGVvZiBpPT0ic3RyaW5nIikpcmV0dXJuIEkuZW51bShzKTtjb25zdCByPXMubWFwKGk9PkkubGl0ZXJhbChpKSk7cmV0dXJuIHIubGVuZ3RoPDI/clswXTpJLnVuaW9uKFtyWzBdLHJbMV0sLi4uci5zbGljZSgyKV0pfWlmKGUuY29uc3QhPT12b2lkIDApcmV0dXJuIEkubGl0ZXJhbChlLmNvbnN0KTtjb25zdCBuPWUudHlwZTtpZihBcnJheS5pc0FycmF5KG4pKXtjb25zdCBzPW4ubWFwKHI9Pntjb25zdCBpPXsuLi5lLHR5cGU6cn07cmV0dXJuIGZmKGksdCl9KTtyZXR1cm4gcy5sZW5ndGg9PT0wP0kubmV2ZXIoKTpzLmxlbmd0aD09PTE/c1swXTpJLnVuaW9uKHMpfWlmKCFuKXJldHVybiBJLmFueSgpO2xldCBvO3N3aXRjaChuKXtjYXNlInN0cmluZyI6e2xldCBzPUkuc3RyaW5nKCk7aWYoZS5mb3JtYXQpe2NvbnN0IHI9ZS5mb3JtYXQ7cj09PSJlbWFpbCI/cz1zLmNoZWNrKEkuZW1haWwoKSk6cj09PSJ1cmkifHxyPT09InVyaS1yZWZlcmVuY2UiP3M9cy5jaGVjayhJLnVybCgpKTpyPT09InV1aWQifHxyPT09Imd1aWQiP3M9cy5jaGVjayhJLnV1aWQoKSk6cj09PSJkYXRlLXRpbWUiP3M9cy5jaGVjayhJLmlzby5kYXRldGltZSh7b2Zmc2V0OiEwfSkpOnI9PT0iZGF0ZSI/cz1zLmNoZWNrKEkuaXNvLmRhdGUoKSk6cj09PSJ0aW1lIj9zPXMuY2hlY2soSS5yZWdleChSJCkpOnI9PT0iZHVyYXRpb24iP3M9cy5jaGVjayhJLmlzby5kdXJhdGlvbigpKTpyPT09Imhvc3RuYW1lIj9zPXMuY2hlY2soSS5ob3N0bmFtZSgpKTpyPT09ImlwdjQiP3M9cy5jaGVjayhJLmlwdjQoKSk6cj09PSJpcHY2Ij9zPXMuY2hlY2soSS5pcHY2KCkpOnI9PT0ibWFjIj9zPXMuY2hlY2soSS5tYWMoKSk6cj09PSJjaWRyIj9zPXMuY2hlY2soSS5jaWRydjQoKSk6cj09PSJjaWRyLXY2Ij9zPXMuY2hlY2soSS5jaWRydjYoKSk6cj09PSJiYXNlNjQiP3M9cy5jaGVjayhJLmJhc2U2NCgpKTpyPT09ImJhc2U2NHVybCI/cz1zLmNoZWNrKEkuYmFzZTY0dXJsKCkpOnI9PT0iZTE2NCI/cz1zLmNoZWNrKEkuZTE2NCgpKTpyPT09ImNyZWRpdF9jYXJkIj9zPXMuY2hlY2soSS5jcmVkaXRDYXJkKCkpOnI9PT0iaWJhbiI/cz1zLmNoZWNrKEkuaWJhbigpKTpyPT09Imp3dCI/cz1zLmNoZWNrKEkuand0KCkpOnI9PT0iZW1vamkiP3M9cy5jaGVjayhJLmVtb2ppKCkpOnI9PT0ibmFub2lkIj9zPXMuY2hlY2soSS5uYW5vaWQoKSk6cj09PSJjdWlkIj9zPXMuY2hlY2soSS5jdWlkKCkpOnI9PT0iY3VpZDIiP3M9cy5jaGVjayhJLmN1aWQyKCkpOnI9PT0idWxpZCI/cz1zLmNoZWNrKEkudWxpZCgpKTpyPT09InhpZCI/cz1zLmNoZWNrKEkueGlkKCkpOnI9PT0ia3N1aWQiJiYocz1zLmNoZWNrKEkua3N1aWQoKSkpfXR5cGVvZiBlLm1pbkxlbmd0aD09Im51bWJlciImJihzPXMubWluKGUubWluTGVuZ3RoKSksdHlwZW9mIGUubWF4TGVuZ3RoPT0ibnVtYmVyIiYmKHM9cy5tYXgoZS5tYXhMZW5ndGgpKSxlLnBhdHRlcm4mJihzPXMucmVnZXgobmV3IFJlZ0V4cChlLnBhdHRlcm4pKSksbz1zO2JyZWFrfWNhc2UibnVtYmVyIjpjYXNlImludGVnZXIiOntsZXQgcz1uPT09ImludGVnZXIiP0kubnVtYmVyKCkuaW50KCk6SS5udW1iZXIoKTt0eXBlb2YgZS5taW5pbXVtPT0ibnVtYmVyIiYmZS5leGNsdXNpdmVNaW5pbXVtIT09ITAmJihzPXMubWluKGUubWluaW11bSkpLHR5cGVvZiBlLm1heGltdW09PSJudW1iZXIiJiZlLmV4Y2x1c2l2ZU1heGltdW0hPT0hMCYmKHM9cy5tYXgoZS5tYXhpbXVtKSksdHlwZW9mIGUuZXhjbHVzaXZlTWluaW11bT09Im51bWJlciI/cz1zLmd0KGUuZXhjbHVzaXZlTWluaW11bSk6ZS5leGNsdXNpdmVNaW5pbXVtPT09ITAmJnR5cGVvZiBlLm1pbmltdW09PSJudW1iZXIiJiYocz1zLmd0KGUubWluaW11bSkpLHR5cGVvZiBlLmV4Y2x1c2l2ZU1heGltdW09PSJudW1iZXIiP3M9cy5sdChlLmV4Y2x1c2l2ZU1heGltdW0pOmUuZXhjbHVzaXZlTWF4aW11bT09PSEwJiZ0eXBlb2YgZS5tYXhpbXVtPT0ibnVtYmVyIiYmKHM9cy5sdChlLm1heGltdW0pKSx0eXBlb2YgZS5tdWx0aXBsZU9mPT0ibnVtYmVyIiYmKHM9cy5tdWx0aXBsZU9mKGUubXVsdGlwbGVPZikpLG89czticmVha31jYXNlImJvb2xlYW4iOntvPUkuYm9vbGVhbigpO2JyZWFrfWNhc2UibnVsbCI6e289SS5udWxsKCk7YnJlYWt9Y2FzZSJvYmplY3QiOntjb25zdCBzPXt9LHI9ZS5wcm9wZXJ0aWVzfHx7fSxpPW5ldyBTZXQoZS5yZXF1aXJlZHx8W10pLGE9dHlwZW9mIGUuYWRkaXRpb25hbFByb3BlcnRpZXM9PSJvYmplY3QiPyRlKGUuYWRkaXRpb25hbFByb3BlcnRpZXMsdCk6dm9pZCAwO2Zvcihjb25zdFtoLGJdb2YgT2JqZWN0LmVudHJpZXMocikpe2NvbnN0ICQ9JGUoYix0KTtBdChzLGgsaS5oYXMoaCk/JDokLm9wdGlvbmFsKCkpfWlmKGUucGF0dGVyblByb3BlcnRpZXMpe2NvbnN0IGg9ZS5wYXR0ZXJuUHJvcGVydGllcyxiPU9iamVjdC5rZXlzKGgpLCQ9W107Zm9yKGNvbnN0IFQgb2YgYil7Y29uc3QgXz0kZShoW1RdLHQpLHg9SS5zdHJpbmcoKS5yZWdleChuZXcgUmVnRXhwKFQpKTskLnB1c2goSS5sb29zZVJlY29yZCh4LF8pKX1jb25zdCBrPVtdO2lmKE9iamVjdC5rZXlzKHMpLmxlbmd0aD4wJiZrLnB1c2goSS5vYmplY3QocykucGFzc3Rocm91Z2goKSksay5wdXNoKC4uLiQpLGsubGVuZ3RoPT09MClvPUkub2JqZWN0KHt9KS5wYXNzdGhyb3VnaCgpO2Vsc2UgaWYoay5sZW5ndGg9PT0xKW89a1swXTtlbHNle2xldCBUPUkuaW50ZXJzZWN0aW9uKGtbMF0sa1sxXSk7Zm9yKGxldCBfPTI7XzxrLmxlbmd0aDtfKyspVD1JLmludGVyc2VjdGlvbihULGtbX10pO289VH1pZihlLmFkZGl0aW9uYWxQcm9wZXJ0aWVzPT09ITEpe2NvbnN0IFQ9T2JqZWN0LmtleXMocyksXz1iLm1hcChBPT5uZXcgUmVnRXhwKEEpKSx4PW87bz1vLmNoZWNrKEE9PntpZighcnQoQS52YWx1ZSkpcmV0dXJuO2NvbnN0IEY9W107Zm9yKGNvbnN0IGFlIG9mIE9iamVjdC5rZXlzKEEudmFsdWUpKVQuaW5jbHVkZXMoYWUpfHxfLnNvbWUodGU9PnRlLnRlc3QoYWUpKXx8Ri5wdXNoKGFlKTtGLmxlbmd0aCYmQS5pc3N1ZXMucHVzaCh7Y29kZToidW5yZWNvZ25pemVkX2tleXMiLGtleXM6RixpbnB1dDpBLnZhbHVlLGluc3Q6eH0pfSl9fWVsc2V7Y29uc3QgaD1JLm9iamVjdChzKTtlLmFkZGl0aW9uYWxQcm9wZXJ0aWVzPT09ITE/bz1oLnN0cmljdCgpOmE/bz1oLmNhdGNoYWxsKGEpOm89aC5wYXNzdGhyb3VnaCgpfWNvbnN0IGQ9ZS5wcm9wZXJ0eU5hbWVzIT09dm9pZCAwJiZlLnByb3BlcnR5TmFtZXMhPT0hMCx1PXR5cGVvZiBlLm1pblByb3BlcnRpZXM9PSJudW1iZXIiP2UubWluUHJvcGVydGllczp2b2lkIDAscD10eXBlb2YgZS5tYXhQcm9wZXJ0aWVzPT0ibnVtYmVyIj9lLm1heFByb3BlcnRpZXM6dm9pZCAwO2lmKGR8fHUhPT12b2lkIDB8fHAhPT12b2lkIDApe2xldCBoO2lmKGQpe2NvbnN0IGI9dHlwZW9mIGUucHJvcGVydHlOYW1lcz09Im9iamVjdCImJmUucHJvcGVydHlOYW1lcy50eXBlPT09dm9pZCAwP3t0eXBlOiJzdHJpbmciLC4uLmUucHJvcGVydHlOYW1lc306ZS5wcm9wZXJ0eU5hbWVzO2g9JGUoYix0KX1vPUMkKG8se2tleVNjaGVtYTpoLG1pblByb3BlcnRpZXM6dSxtYXhQcm9wZXJ0aWVzOnB9KX1icmVha31jYXNlImFycmF5Ijp7Y29uc3Qgcz1lLnByZWZpeEl0ZW1zLHI9ZS5pdGVtcztpZihzJiZBcnJheS5pc0FycmF5KHMpKXtjb25zdCBpPXR5cGVvZiBlLm1pbkl0ZW1zPT0ibnVtYmVyIj9lLm1pbkl0ZW1zOjAsYT1zLm1hcChoPT4kZShoLHQpKSxkPXF1KGEsaSksdT1BcnJheS5pc0FycmF5KHIpP3ZvaWQgMDpEdShyLHQpLHA9SS50dXBsZShkKTtvPXU/cC5yZXN0KHUpOnAsdHlwZW9mIGUubWluSXRlbXM9PSJudW1iZXIiJiYobz1vLmNoZWNrKEkubWluTGVuZ3RoKGUubWluSXRlbXMpKSksdHlwZW9mIGUubWF4SXRlbXM9PSJudW1iZXIiJiYobz1vLmNoZWNrKEkubWF4TGVuZ3RoKGUubWF4SXRlbXMpKSl9ZWxzZSBpZihBcnJheS5pc0FycmF5KHIpKXtjb25zdCBpPXR5cGVvZiBlLm1pbkl0ZW1zPT0ibnVtYmVyIj9lLm1pbkl0ZW1zOjAsYT1yLm1hcChoPT4kZShoLHQpKSxkPXF1KGEsaSksdT1EdShlLmFkZGl0aW9uYWxJdGVtcyx0KSxwPUkudHVwbGUoZCk7bz11P3AucmVzdCh1KTpwLHR5cGVvZiBlLm1pbkl0ZW1zPT0ibnVtYmVyIiYmKG89by5jaGVjayhJLm1pbkxlbmd0aChlLm1pbkl0ZW1zKSkpLHR5cGVvZiBlLm1heEl0ZW1zPT0ibnVtYmVyIiYmKG89by5jaGVjayhJLm1heExlbmd0aChlLm1heEl0ZW1zKSkpfWVsc2UgaWYociE9PXZvaWQgMCl7Y29uc3QgaT0kZShyLHQpO2xldCBhPUkuYXJyYXkoaSk7dHlwZW9mIGUubWluSXRlbXM9PSJudW1iZXIiJiYoYT1hLm1pbihlLm1pbkl0ZW1zKSksdHlwZW9mIGUubWF4SXRlbXM9PSJudW1iZXIiJiYoYT1hLm1heChlLm1heEl0ZW1zKSksbz1hfWVsc2Ugbz1JLmFycmF5KEkuYW55KCkpOyhlLnVuaXF1ZUl0ZW1zPT09ITB8fGUuY29udGFpbnMhPT12b2lkIDApJiYobz1PJChvLHt1bmlxdWVJdGVtczplLnVuaXF1ZUl0ZW1zPT09ITAsY29udGFpbnNTY2hlbWE6ZS5jb250YWlucyE9PXZvaWQgMD8kZShlLmNvbnRhaW5zLHQpOnZvaWQgMCxtaW5Db250YWluczp0eXBlb2YgZS5taW5Db250YWlucz09Im51bWJlciI/ZS5taW5Db250YWluczp2b2lkIDAsbWF4Q29udGFpbnM6dHlwZW9mIGUubWF4Q29udGFpbnM9PSJudW1iZXIiP2UubWF4Q29udGFpbnM6dm9pZCAwfSkpO2JyZWFrfWRlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKGBVbnN1cHBvcnRlZCB0eXBlOiAke259YCl9cmV0dXJuIG99ZnVuY3Rpb24gJGUoZSx0KXtpZih0eXBlb2YgZT09ImJvb2xlYW4iKXJldHVybiBlP0kuYW55KCk6SS5uZXZlcigpO2xldCBuPWZmKGUsdCk7Y29uc3Qgbz1lLnR5cGV8fGUuZW51bSE9PXZvaWQgMHx8ZS5jb25zdCE9PXZvaWQgMDtpZihlLmFueU9mJiZBcnJheS5pc0FycmF5KGUuYW55T2YpKXtjb25zdCBhPWUuYW55T2YubWFwKHU9PiRlKHUsdCkpLGQ9SS51bmlvbihhKTtuPW8/SS5pbnRlcnNlY3Rpb24obixkKTpkfWlmKGUub25lT2YmJkFycmF5LmlzQXJyYXkoZS5vbmVPZikpe2NvbnN0IGE9ZS5vbmVPZi5tYXAodT0+JGUodSx0KSksZD1JLnhvcihhKTtuPW8/SS5pbnRlcnNlY3Rpb24obixkKTpkfWlmKGUuYWxsT2YmJkFycmF5LmlzQXJyYXkoZS5hbGxPZikpaWYoZS5hbGxPZi5sZW5ndGg9PT0wKW49bz9uOkkuYW55KCk7ZWxzZXtsZXQgYT1vP246JGUoZS5hbGxPZlswXSx0KTtjb25zdCBkPW8/MDoxO2ZvcihsZXQgdT1kO3U8ZS5hbGxPZi5sZW5ndGg7dSsrKWE9SS5pbnRlcnNlY3Rpb24oYSwkZShlLmFsbE9mW3VdLHQpKTtuPWF9ZS5udWxsYWJsZT09PSEwJiZ0LnZlcnNpb249PT0ib3BlbmFwaS0zLjAiJiYobj1JLm51bGxhYmxlKG4pKSxlLnJlYWRPbmx5PT09ITAmJihuPUkucmVhZG9ubHkobikpLGUuZGVmYXVsdCE9PXZvaWQgMCYmKG49bi5kZWZhdWx0KGUuZGVmYXVsdCkpO2NvbnN0IHM9e30scj1bIiRpZCIsImlkIiwiJGNvbW1lbnQiLCIkYW5jaG9yIiwiJHZvY2FidWxhcnkiLCIkZHluYW1pY1JlZiIsIiRkeW5hbWljQW5jaG9yIl07Zm9yKGNvbnN0IGEgb2YgcilhIGluIGUmJihzW2FdPWVbYV0pO2NvbnN0IGk9WyJjb250ZW50RW5jb2RpbmciLCJjb250ZW50TWVkaWFUeXBlIiwiY29udGVudFNjaGVtYSJdO2Zvcihjb25zdCBhIG9mIGkpYSBpbiBlJiYoc1thXT1lW2FdKTtpZihlLnR5cGU9PT0ib2JqZWN0IiYmZS4kcmVmPT09dm9pZCAwKXtlLnByb3BlcnR5TmFtZXMhPT12b2lkIDAmJiF4bihlLnByb3BlcnR5TmFtZXMpJiYocy5wcm9wZXJ0eU5hbWVzPWUucHJvcGVydHlOYW1lcyk7Zm9yKGNvbnN0IGEgb2ZbIm1pblByb3BlcnRpZXMiLCJtYXhQcm9wZXJ0aWVzIl0pZVthXSE9PXZvaWQgMCYmKHNbYV09ZVthXSl9aWYoZS50eXBlPT09ImFycmF5IiYmZS4kcmVmPT09dm9pZCAwKXtlLmNvbnRhaW5zIT09dm9pZCAwJiYheG4oZS5jb250YWlucykmJihzLmNvbnRhaW5zPWUuY29udGFpbnMpO2Zvcihjb25zdCBhIG9mWyJ1bmlxdWVJdGVtcyIsIm1pbkNvbnRhaW5zIiwibWF4Q29udGFpbnMiXSllW2FdIT09dm9pZCAwJiYoc1thXT1lW2FdKX1mb3IoY29uc3QgYSBvZiBPYmplY3Qua2V5cyhlKSl6JC5oYXMoYSl8fEF0KHMsYSxlW2FdKTtyZXR1cm4gT2JqZWN0LmtleXMocykubGVuZ3RoPjAmJnQucmVnaXN0cnkuYWRkKG4scyksZS5kZXNjcmlwdGlvbiYmKG49bi5kZXNjcmliZShlLmRlc2NyaXB0aW9uKSksbn1mdW5jdGlvbiBnZihlLHQpe2lmKHR5cGVvZiBlPT0iYm9vbGVhbiIpcmV0dXJuIGU/SS5hbnkoKTpJLm5ldmVyKCk7bGV0IG47dHJ5e249SlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShlKSl9Y2F0Y2h7dGhyb3cgbmV3IEVycm9yKCJmcm9tSlNPTlNjaGVtYSBpbnB1dCBpcyBub3QgdmFsaWQgSlNPTiAocG9zc2libHkgY3ljbGljKTsgdXNlICRkZWZzLyRyZWYgZm9yIHJlY3Vyc2l2ZSBzY2hlbWFzIil9Y29uc3Qgbz14JChuLHQ/LmRlZmF1bHRUYXJnZXQpLHM9bi4kZGVmc3x8bi5kZWZpbml0aW9uc3x8e30scj17dmVyc2lvbjpvLGRlZnM6cyxyZWZzOm5ldyBNYXAscHJvY2Vzc2luZzpuZXcgU2V0LHJvb3RTY2hlbWE6bixyZWdpc3RyeTp0Py5yZWdpc3RyeT8/TmV9O3JldHVybiAkZShuLHIpfWZ1bmN0aW9uIGJmKGUpe3JldHVybiBRYShlLHtvYmplY3Q6dD0+dC5wYXJ0aWFsKCksdW5pb246dD0+e2NvbnN0IG49dC5fem9kLmRlZjtyZXR1cm4gbi5kaXNjcmltaW5hdG9yPT09dm9pZCAwP3Q6cShuLm9wdGlvbnMpfX0pfWZ1bmN0aW9uIE4kKGUsdCl7aWYoIXQ/Lmxlbmd0aClyZXR1cm4gZTtjb25zdCBuPWUuX3pvZC5kZWY7cmV0dXJuIHNlKGUsdmUobix7Y2hlY2tzOlsuLi5uLmNoZWNrcz8/W10sLi4udF19KSx7cGFyZW50OiEwfSl9ZnVuY3Rpb24gdmYoZSl7cmV0dXJuIE4kKGUub3V0LGUuY2hlY2tzKX1mdW5jdGlvbiBaJChlKXtyZXR1cm4gZS5pbi5fem9kLnRyYWl0cy5oYXMoIiRab2RUcmFuc2Zvcm0iKT92ZihlKTplLmlufWZ1bmN0aW9uICRmKGUpe3JldHVybiBRYShlLHtwaXBlOnQ9PlokKHQuX3pvZC5kZWYpLGRlZmF1bHQ6KHQsbik9Pm4/WCh0Ll96b2QuZGVmLmlubmVyVHlwZSk6dCxjYXRjaDoodCxuKT0+bj90Ll96b2QuZGVmLmlubmVyVHlwZTp0fSl9ZnVuY3Rpb24geWYoZSl7cmV0dXJuIFFhKGUse3BpcGU6dD0+dmYodC5fem9kLmRlZikscHJlZmF1bHQ6KHQsbik9Pm4/dC5fem9kLmRlZi5pbm5lclR5cGU6dH0pfWZ1bmN0aW9uIE0kKGUpe3JldHVybiBrbShlbixlKX1mdW5jdGlvbiBqJChlKXtyZXR1cm4gem0oYW4sZSl9ZnVuY3Rpb24gcSQoZSl7cmV0dXJuIE9tKGNuLGUpfWZ1bmN0aW9uIEwkKGUpe3JldHVybiBObShsbixlKX1mdW5jdGlvbiBEJChlKXtyZXR1cm4gV20oQW8sZSl9Y29uc3Qga2Y9T2JqZWN0LmZyZWV6ZShPYmplY3QuZGVmaW5lUHJvcGVydHkoe19fcHJvdG9fXzpudWxsLGJpZ2ludDpMJCxib29sZWFuOnEkLGRhdGU6RCQsbnVtYmVyOmokLHN0cmluZzpNJH0sU3ltYm9sLnRvU3RyaW5nVGFnLHt2YWx1ZToiTW9kdWxlIn0pKSxCdT1PYmplY3QuZnJlZXplKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7X19wcm90b19fOm51bGwsJGJyYW5kOk1pLCRpbnB1dDp2YSwkb3V0cHV0OmJhLElOVkFMSUQ6eWEsTkVWRVI6WmksVGltZVByZWNpc2lvbjpXYSxab2RBbnk6bnIsWm9kQXJyYXk6aXIsWm9kQmFzZTY0Ol9vLFpvZEJhc2U2NFVSTDp3byxab2RCaWdJbnQ6bG4sWm9kQmlnSW50Rm9ybWF0OnpvLFpvZEJvb2xlYW46Y24sWm9kQ0lEUnY0OnlvLFpvZENJRFJ2Njprbyxab2RDVUlEOmhvLFpvZENVSUQyOm1vLFpvZENhdGNoOlRyLFpvZENvZGVjOmZuLFpvZENvbXBpbGVBc3luY0Vycm9yOmthLFpvZENvbXBpbGVVbnN1cHBvcnRlZEVycm9yOl9hLFpvZENyZWRpdENhcmQ6WXMsWm9kQ3VzdG9tOmduLFpvZEN1c3RvbVN0cmluZ0Zvcm1hdDpjdCxab2REYXRlOkFvLFpvZERlZmF1bHQ6JHIsWm9kRGlzY3JpbWluYXRlZFVuaW9uOmNyLFpvZEUxNjQ6U28sWm9kRW1haWw6Y28sWm9kRW1vamk6dW8sWm9kRW51bTpfdCxab2RFcnJvcjp1Zixab2RFeGFjdE9wdGlvbmFsOkVvLFpvZEZpbGU6ZnIsZ2V0IFpvZEZpcnN0UGFydHlUeXBlS2luZCgpe3JldHVybiBwc30sWm9kRnVuY3Rpb246TnIsWm9kR1VJRDpsbyxab2RJQkFOOlFzLFpvZElQdjQ6dm8sWm9kSVB2Njokbyxab2RJU09EYXRlOm5uLFpvZElTT0RhdGVUaW1lOnRuLFpvZElTT0R1cmF0aW9uOnNuLFpvZElTT1RpbWU6b24sWm9kSW5zdGFuY2VPZjpxcixab2RJbnRlcnNlY3Rpb246bHIsWm9kSXNzdWVDb2RlOmRmLFpvZEpXVDpUbyxab2RLU1VJRDpibyxab2RMYXp5OkVyLFpvZExpdGVyYWw6bXIsWm9kTUFDOkdzLFpvZE1hcDpwcixab2ROYU46eHIsWm9kTmFub0lEOnBvLFpvZE5ldmVyOnNyLFpvZE5vbk9wdGlvbmFsOk9vLFpvZE51bGw6dHIsWm9kTnVsbGFibGU6dnIsWm9kTnVtYmVyOmFuLFpvZE51bWJlckZvcm1hdDpsdCxab2RPYmplY3Q6dW4sWm9kT3B0aW9uYWw6aG4sWm9kUGlwZTptbixab2RQcmVmYXVsdDprcixab2RQcmVwcm9jZXNzOklyLFpvZFByb21pc2U6UnIsWm9kUmVhZG9ubHk6QXIsWm9kUmVhbEVycm9yOlRlLFpvZFJlY29yZDprdCxab2RTZXQ6aHIsWm9kU3RyaW5nOmVuLFpvZFN0cmluZ0Zvcm1hdDpHLFpvZFN1Y2Nlc3M6U3IsWm9kU3ltYm9sOlhzLFpvZFRlbXBsYXRlTGl0ZXJhbDpQcixab2RUcmFuc2Zvcm06Z3IsWm9kVHVwbGU6dXIsWm9kVHlwZTpaLFpvZFVMSUQ6Zm8sWm9kVVJMOnJuLFpvZFVVSUQ6VWUsWm9kVW5kZWZpbmVkOmVyLFpvZFVuaW9uOmRuLFpvZFVua25vd246b3IsWm9kVm9pZDpycixab2RYSUQ6Z28sWm9kWG9yOmFyLF9ab2RTdHJpbmc6YW8sX2RlZmF1bHQ6eXIsX2Z1bmN0aW9uOld0LGFueTpJbyxhcnJheTpFLGJhc2U2NDpFYyxiYXNlNjR1cmw6T2MsYmlnaW50OlZjLGJvb2xlYW46SyxjYXRjaDp6cixjaGVjazpmbCxjaWRydjQ6Q2MsY2lkcnY2OlBjLGNsb25lOnNlLGNvZGVjOmRsLGNvZXJjZTprZixjb21waWxlOndhLGNvbmZpZzpkZSxjb3JlOmFmLGNyZWRpdENhcmQ6TmMsY3VpZDpfYyxjdWlkMjp3YyxjdXJyZW5jeUNvZGU6RGMsY3VzdG9tOlpyLGRhdGU6UWMsZGVjb2RlOnJjLGRlY29kZUFzeW5jOmFjLGRlZXBQYXJ0aWFsOmJmLGRlc2NyaWJlOmdsLGRpc2NyaW1pbmF0ZWRVbmlvbjpDbyxlMTY0OlJjLGVtYWlsOnBjLGVtb2ppOnljLGVuY29kZTpzYyxlbmNvZGVBc3luYzppYyxlbmRzV2l0aDpYbixlbnVtOm1lLGV4YWN0T3B0aW9uYWw6YnIsZmlsZTphbCxmbGF0dGVuRXJyb3I6T3MsZmxvYXQzMjpVYyxmbG9hdDY0OkZjLGZvcm1hdEVycm9yOlJzLGZyb21KU09OU2NoZW1hOmdmLGZ1bmN0aW9uOld0LGdldERpc2NyaW1pbmF0ZWRPcHRpb246dWEsZ2V0RXJyb3JNYXA6aGYsZ2xvYmFsUmVnaXN0cnk6TmUsZ3Q6WWUsZ3RlOkllLGd1aWQ6aGMsaGFzaDpCYyxoZXg6TGMsaG9zdG5hbWU6cWMsaHR0cFVybDokYyxpYmFuOlpjLGluY2x1ZGVzOlluLGlucHV0OiRmLGluc3RhbmNlb2Y6dmwsaW50OkVuLGludDMyOkhjLGludDY0OkpjLGludGVyc2VjdGlvbjpwbixpbnZlcnRDb2RlYzpwbCxpcHY0OnhjLGlwdjY6QWMsaXNvOmtsLGpzb246eWwsand0Ok1jLGtleW9mOlhjLGtzdWlkOnpjLGxhenk6T3IsbGVuZ3RoOlF0LGxpdGVyYWw6Zyxsb2NhbGVzOmdhLGxvb3NlT2JqZWN0OmhlLGxvb3NlUmVjb3JkOm9sLGxvd2VyY2FzZTpLbixsdDpHZSxsdGU6eGUsbWFjOkljLG1hcDpzbCxtYXhMZW5ndGg6WXQsbWF4U2l6ZTpDdCxtZW1vaXplcjpEcyxtZXRhOmJsLG1pbWU6dG8sbWluTGVuZ3RoOml0LG1pblNpemU6UWUsbXVsdGlwbGVPZjokdCxuYW46dWwsbmFub2lkOmtjLG5hdGl2ZUVudW06aWwsbmVnYXRpdmU6V3MsbmV2ZXI6eXQsbm9ubmVnYXRpdmU6SnMsbm9ub3B0aW9uYWw6d3Isbm9ucG9zaXRpdmU6VnMsbm9ybWFsaXplOm5vLG51bGw6eG8sbnVsbGFibGU6SHQsbnVsbGlzaDpjbCxudW1iZXI6TixvYmplY3Q6dixvcHRpb25hbDpYLG91dHB1dDp5ZixvdmVyd3JpdGU6V2UscGFyc2U6ZWMscGFyc2VBc3luYzp0YyxwYXJ0aWFsUmVjb3JkOm5sLHBpcGU6T24scG9zaXRpdmU6SHMscHJlZmF1bHQ6X3IscHJlcHJvY2VzczpSbyxwcmV0dGlmeUVycm9yOnFpLHByb21pc2U6bWwscHJvcGVydGllczplbyxwcm9wZXJ0eTpLcyxyZWFkb25seTpDcixyZWNvcmQ6RCxyZWZpbmU6TXIscmVnZXg6Sm4scmVnZXhlczpxcyxyZWdpc3RyeTpCcyxzYWZlRGVjb2RlOmxjLHNhZmVEZWNvZGVBc3luYzpkYyxzYWZlRW5jb2RlOmNjLHNhZmVFbmNvZGVBc3luYzp1YyxzYWZlUGFyc2U6bmMsc2FmZVBhcnNlQXN5bmM6b2Msc2V0OnJsLHNldEVycm9yTWFwOnBmLHNpemU6R3Qsc2x1Z2lmeTppbyxzdGFydHNXaXRoOlFuLHN0cmljdE9iamVjdDplbCxzdHJpbmc6ZixzdHJpbmdGb3JtYXQ6amMsc3RyaW5nYm9vbDokbCxzdWNjZXNzOmxsLHN1cGVyUmVmaW5lOmpyLHN5bWJvbDpHYyx0ZW1wbGF0ZUxpdGVyYWw6aGwsdG9KU09OU2NoZW1hOllhLHRvTG93ZXJDYXNlOnNvLHRvVXBwZXJDYXNlOnJvLHRvWm9kOlNzLHRyYW5zZm9ybTpQbyx0cmVlaWZ5RXJyb3I6amksdHJpbTpvbyx0dXBsZTpkcix1aW50MzI6V2MsdWludDY0OktjLHVsaWQ6U2MsdW5kZWZpbmVkOkZ0LHVuaW9uOnEsdW5rbm93bjpKLHVwcGVyY2FzZTpHbix1cmw6dmMsdXRpbDpOaSx1dWlkOm1jLHV1aWR2NDpmYyx1dWlkdjY6Z2MsdXVpZHY3OmJjLHZhbGlkYXRlOlpzLHZhbGlkYXRlQXN5bmM6TXMsdm9pZDpZYyx3aXRoUGFyc2VyOlNhLHhpZDpUYyx4b3I6dGx9LFN5bWJvbC50b1N0cmluZ1RhZyx7dmFsdWU6Ik1vZHVsZSJ9KSksQiQ9T2JqZWN0LmZyZWV6ZShPYmplY3QuZGVmaW5lUHJvcGVydHkoe19fcHJvdG9fXzpudWxsLCRicmFuZDpNaSwkaW5wdXQ6dmEsJG91dHB1dDpiYSxJTlZBTElEOnlhLE5FVkVSOlppLFRpbWVQcmVjaXNpb246V2EsWm9kQW55Om5yLFpvZEFycmF5OmlyLFpvZEJhc2U2NDpfbyxab2RCYXNlNjRVUkw6d28sWm9kQmlnSW50OmxuLFpvZEJpZ0ludEZvcm1hdDp6byxab2RCb29sZWFuOmNuLFpvZENJRFJ2NDp5byxab2RDSURSdjY6a28sWm9kQ1VJRDpobyxab2RDVUlEMjptbyxab2RDYXRjaDpUcixab2RDb2RlYzpmbixab2RDb21waWxlQXN5bmNFcnJvcjprYSxab2RDb21waWxlVW5zdXBwb3J0ZWRFcnJvcjpfYSxab2RDcmVkaXRDYXJkOllzLFpvZEN1c3RvbTpnbixab2RDdXN0b21TdHJpbmdGb3JtYXQ6Y3QsWm9kRGF0ZTpBbyxab2REZWZhdWx0OiRyLFpvZERpc2NyaW1pbmF0ZWRVbmlvbjpjcixab2RFMTY0OlNvLFpvZEVtYWlsOmNvLFpvZEVtb2ppOnVvLFpvZEVudW06X3QsWm9kRXJyb3I6dWYsWm9kRXhhY3RPcHRpb25hbDpFbyxab2RGaWxlOmZyLGdldCBab2RGaXJzdFBhcnR5VHlwZUtpbmQoKXtyZXR1cm4gcHN9LFpvZEZ1bmN0aW9uOk5yLFpvZEdVSUQ6bG8sWm9kSUJBTjpRcyxab2RJUHY0OnZvLFpvZElQdjY6JG8sWm9kSVNPRGF0ZTpubixab2RJU09EYXRlVGltZTp0bixab2RJU09EdXJhdGlvbjpzbixab2RJU09UaW1lOm9uLFpvZEluc3RhbmNlT2Y6cXIsWm9kSW50ZXJzZWN0aW9uOmxyLFpvZElzc3VlQ29kZTpkZixab2RKV1Q6VG8sWm9kS1NVSUQ6Ym8sWm9kTGF6eTpFcixab2RMaXRlcmFsOm1yLFpvZE1BQzpHcyxab2RNYXA6cHIsWm9kTmFOOnhyLFpvZE5hbm9JRDpwbyxab2ROZXZlcjpzcixab2ROb25PcHRpb25hbDpPbyxab2ROdWxsOnRyLFpvZE51bGxhYmxlOnZyLFpvZE51bWJlcjphbixab2ROdW1iZXJGb3JtYXQ6bHQsWm9kT2JqZWN0OnVuLFpvZE9wdGlvbmFsOmhuLFpvZFBpcGU6bW4sWm9kUHJlZmF1bHQ6a3IsWm9kUHJlcHJvY2VzczpJcixab2RQcm9taXNlOlJyLFpvZFJlYWRvbmx5OkFyLFpvZFJlYWxFcnJvcjpUZSxab2RSZWNvcmQ6a3QsWm9kU2V0OmhyLFpvZFN0cmluZzplbixab2RTdHJpbmdGb3JtYXQ6Ryxab2RTdWNjZXNzOlNyLFpvZFN5bWJvbDpYcyxab2RUZW1wbGF0ZUxpdGVyYWw6UHIsWm9kVHJhbnNmb3JtOmdyLFpvZFR1cGxlOnVyLFpvZFR5cGU6Wixab2RVTElEOmZvLFpvZFVSTDpybixab2RVVUlEOlVlLFpvZFVuZGVmaW5lZDplcixab2RVbmlvbjpkbixab2RVbmtub3duOm9yLFpvZFZvaWQ6cnIsWm9kWElEOmdvLFpvZFhvcjphcixfWm9kU3RyaW5nOmFvLF9kZWZhdWx0OnlyLF9mdW5jdGlvbjpXdCxhbnk6SW8sYXJyYXk6RSxiYXNlNjQ6RWMsYmFzZTY0dXJsOk9jLGJpZ2ludDpWYyxib29sZWFuOkssY2F0Y2g6enIsY2hlY2s6ZmwsY2lkcnY0OkNjLGNpZHJ2NjpQYyxjbG9uZTpzZSxjb2RlYzpkbCxjb2VyY2U6a2YsY29tcGlsZTp3YSxjb25maWc6ZGUsY29yZTphZixjcmVkaXRDYXJkOk5jLGN1aWQ6X2MsY3VpZDI6d2MsY3VycmVuY3lDb2RlOkRjLGN1c3RvbTpacixkYXRlOlFjLGRlY29kZTpyYyxkZWNvZGVBc3luYzphYyxkZWVwUGFydGlhbDpiZixkZWZhdWx0OkJ1LGRlc2NyaWJlOmdsLGRpc2NyaW1pbmF0ZWRVbmlvbjpDbyxlMTY0OlJjLGVtYWlsOnBjLGVtb2ppOnljLGVuY29kZTpzYyxlbmNvZGVBc3luYzppYyxlbmRzV2l0aDpYbixlbnVtOm1lLGV4YWN0T3B0aW9uYWw6YnIsZmlsZTphbCxmbGF0dGVuRXJyb3I6T3MsZmxvYXQzMjpVYyxmbG9hdDY0OkZjLGZvcm1hdEVycm9yOlJzLGZyb21KU09OU2NoZW1hOmdmLGZ1bmN0aW9uOld0LGdldERpc2NyaW1pbmF0ZWRPcHRpb246dWEsZ2V0RXJyb3JNYXA6aGYsZ2xvYmFsUmVnaXN0cnk6TmUsZ3Q6WWUsZ3RlOkllLGd1aWQ6aGMsaGFzaDpCYyxoZXg6TGMsaG9zdG5hbWU6cWMsaHR0cFVybDokYyxpYmFuOlpjLGluY2x1ZGVzOlluLGlucHV0OiRmLGluc3RhbmNlb2Y6dmwsaW50OkVuLGludDMyOkhjLGludDY0OkpjLGludGVyc2VjdGlvbjpwbixpbnZlcnRDb2RlYzpwbCxpcHY0OnhjLGlwdjY6QWMsaXNvOmtsLGpzb246eWwsand0Ok1jLGtleW9mOlhjLGtzdWlkOnpjLGxhenk6T3IsbGVuZ3RoOlF0LGxpdGVyYWw6Zyxsb2NhbGVzOmdhLGxvb3NlT2JqZWN0OmhlLGxvb3NlUmVjb3JkOm9sLGxvd2VyY2FzZTpLbixsdDpHZSxsdGU6eGUsbWFjOkljLG1hcDpzbCxtYXhMZW5ndGg6WXQsbWF4U2l6ZTpDdCxtZW1vaXplcjpEcyxtZXRhOmJsLG1pbWU6dG8sbWluTGVuZ3RoOml0LG1pblNpemU6UWUsbXVsdGlwbGVPZjokdCxuYW46dWwsbmFub2lkOmtjLG5hdGl2ZUVudW06aWwsbmVnYXRpdmU6V3MsbmV2ZXI6eXQsbm9ubmVnYXRpdmU6SnMsbm9ub3B0aW9uYWw6d3Isbm9ucG9zaXRpdmU6VnMsbm9ybWFsaXplOm5vLG51bGw6eG8sbnVsbGFibGU6SHQsbnVsbGlzaDpjbCxudW1iZXI6TixvYmplY3Q6dixvcHRpb25hbDpYLG91dHB1dDp5ZixvdmVyd3JpdGU6V2UscGFyc2U6ZWMscGFyc2VBc3luYzp0YyxwYXJ0aWFsUmVjb3JkOm5sLHBpcGU6T24scG9zaXRpdmU6SHMscHJlZmF1bHQ6X3IscHJlcHJvY2VzczpSbyxwcmV0dGlmeUVycm9yOnFpLHByb21pc2U6bWwscHJvcGVydGllczplbyxwcm9wZXJ0eTpLcyxyZWFkb25seTpDcixyZWNvcmQ6RCxyZWZpbmU6TXIscmVnZXg6Sm4scmVnZXhlczpxcyxyZWdpc3RyeTpCcyxzYWZlRGVjb2RlOmxjLHNhZmVEZWNvZGVBc3luYzpkYyxzYWZlRW5jb2RlOmNjLHNhZmVFbmNvZGVBc3luYzp1YyxzYWZlUGFyc2U6bmMsc2FmZVBhcnNlQXN5bmM6b2Msc2V0OnJsLHNldEVycm9yTWFwOnBmLHNpemU6R3Qsc2x1Z2lmeTppbyxzdGFydHNXaXRoOlFuLHN0cmljdE9iamVjdDplbCxzdHJpbmc6ZixzdHJpbmdGb3JtYXQ6amMsc3RyaW5nYm9vbDokbCxzdWNjZXNzOmxsLHN1cGVyUmVmaW5lOmpyLHN5bWJvbDpHYyx0ZW1wbGF0ZUxpdGVyYWw6aGwsdG9KU09OU2NoZW1hOllhLHRvTG93ZXJDYXNlOnNvLHRvVXBwZXJDYXNlOnJvLHRvWm9kOlNzLHRyYW5zZm9ybTpQbyx0cmVlaWZ5RXJyb3I6amksdHJpbTpvbyx0dXBsZTpkcix1aW50MzI6V2MsdWludDY0OktjLHVsaWQ6U2MsdW5kZWZpbmVkOkZ0LHVuaW9uOnEsdW5rbm93bjpKLHVwcGVyY2FzZTpHbix1cmw6dmMsdXRpbDpOaSx1dWlkOm1jLHV1aWR2NDpmYyx1dWlkdjY6Z2MsdXVpZHY3OmJjLHZhbGlkYXRlOlpzLHZhbGlkYXRlQXN5bmM6TXMsdm9pZDpZYyx3aXRoUGFyc2VyOlNhLHhpZDpUYyx4b3I6dGwsejpCdX0sU3ltYm9sLnRvU3RyaW5nVGFnLHt2YWx1ZToiTW9kdWxlIn0pKSxmdD0iaW8ubW9kZWxjb250ZXh0cHJvdG9jb2wvcmVsYXRlZC10YXNrIixMcj0iMi4wIixsZT1acihlPT5lIT09bnVsbCYmKHR5cGVvZiBlPT0ib2JqZWN0Inx8dHlwZW9mIGU9PSJmdW5jdGlvbiIpKSxfZj1xKFtmKCksTigpLmludCgpXSksd2Y9ZigpO2hlKHt0dGw6TigpLm9wdGlvbmFsKCkscG9sbEludGVydmFsOk4oKS5vcHRpb25hbCgpfSk7Y29uc3QgVSQ9dih7dHRsOk4oKS5vcHRpb25hbCgpfSksRiQ9dih7dGFza0lkOmYoKX0pLF9sPWhlKHtwcm9ncmVzc1Rva2VuOl9mLm9wdGlvbmFsKCksW2Z0XTpGJC5vcHRpb25hbCgpfSksRWU9dih7X21ldGE6X2wub3B0aW9uYWwoKX0pLE5vPUVlLmV4dGVuZCh7dGFzazpVJC5vcHRpb25hbCgpfSksSCQ9ZT0+Tm8uc2FmZVBhcnNlKGUpLnN1Y2Nlc3MsZmU9dih7bWV0aG9kOmYoKSxwYXJhbXM6RWUubG9vc2UoKS5vcHRpb25hbCgpfSkscWU9dih7X21ldGE6X2wub3B0aW9uYWwoKX0pLExlPXYoe21ldGhvZDpmKCkscGFyYW1zOnFlLmxvb3NlKCkub3B0aW9uYWwoKX0pLGdlPWhlKHtfbWV0YTpfbC5vcHRpb25hbCgpfSksWm89cShbZigpLE4oKS5pbnQoKV0pLFNmPXYoe2pzb25ycGM6ZyhMciksaWQ6Wm8sLi4uZmUuc2hhcGV9KS5zdHJpY3QoKSxVdT1lPT5TZi5zYWZlUGFyc2UoZSkuc3VjY2VzcyxUZj12KHtqc29ucnBjOmcoTHIpLC4uLkxlLnNoYXBlfSkuc3RyaWN0KCksVyQ9ZT0+VGYuc2FmZVBhcnNlKGUpLnN1Y2Nlc3Msd2w9dih7anNvbnJwYzpnKExyKSxpZDpabyxyZXN1bHQ6Z2V9KS5zdHJpY3QoKSxYbz1lPT53bC5zYWZlUGFyc2UoZSkuc3VjY2Vzczt2YXIgWTsoZnVuY3Rpb24oZSl7ZVtlLkNvbm5lY3Rpb25DbG9zZWQ9LTMyZTNdPSJDb25uZWN0aW9uQ2xvc2VkIixlW2UuUmVxdWVzdFRpbWVvdXQ9LTMyMDAxXT0iUmVxdWVzdFRpbWVvdXQiLGVbZS5QYXJzZUVycm9yPS0zMjcwMF09IlBhcnNlRXJyb3IiLGVbZS5JbnZhbGlkUmVxdWVzdD0tMzI2MDBdPSJJbnZhbGlkUmVxdWVzdCIsZVtlLk1ldGhvZE5vdEZvdW5kPS0zMjYwMV09Ik1ldGhvZE5vdEZvdW5kIixlW2UuSW52YWxpZFBhcmFtcz0tMzI2MDJdPSJJbnZhbGlkUGFyYW1zIixlW2UuSW50ZXJuYWxFcnJvcj0tMzI2MDNdPSJJbnRlcm5hbEVycm9yIixlW2UuVXJsRWxpY2l0YXRpb25SZXF1aXJlZD0tMzIwNDJdPSJVcmxFbGljaXRhdGlvblJlcXVpcmVkIn0pKFl8fChZPXt9KSk7Y29uc3QgU2w9dih7anNvbnJwYzpnKExyKSxpZDpaby5vcHRpb25hbCgpLGVycm9yOnYoe2NvZGU6TigpLmludCgpLG1lc3NhZ2U6ZigpLGRhdGE6SigpLm9wdGlvbmFsKCl9KX0pLnN0cmljdCgpLFYkPWU9PlNsLnNhZmVQYXJzZShlKS5zdWNjZXNzLEokPXEoW1NmLFRmLHdsLFNsXSk7cShbd2wsU2xdKTtjb25zdCBUbD1nZS5zdHJpY3QoKSxLJD1xZS5leHRlbmQoe3JlcXVlc3RJZDpaby5vcHRpb25hbCgpLHJlYXNvbjpmKCkub3B0aW9uYWwoKX0pLHpsPUxlLmV4dGVuZCh7bWV0aG9kOmcoIm5vdGlmaWNhdGlvbnMvY2FuY2VsbGVkIikscGFyYW1zOkskfSksRyQ9dih7c3JjOmYoKSxtaW1lVHlwZTpmKCkub3B0aW9uYWwoKSxzaXplczpFKGYoKSkub3B0aW9uYWwoKSx0aGVtZTptZShbImxpZ2h0IiwiZGFyayJdKS5vcHRpb25hbCgpfSksTW89dih7aWNvbnM6RShHJCkub3B0aW9uYWwoKX0pLFZ0PXYoe25hbWU6ZigpLHRpdGxlOmYoKS5vcHRpb25hbCgpfSksRHI9VnQuZXh0ZW5kKHsuLi5WdC5zaGFwZSwuLi5Nby5zaGFwZSx2ZXJzaW9uOmYoKSx3ZWJzaXRlVXJsOmYoKS5vcHRpb25hbCgpLGRlc2NyaXB0aW9uOmYoKS5vcHRpb25hbCgpfSksWSQ9cG4odih7YXBwbHlEZWZhdWx0czpLKCkub3B0aW9uYWwoKX0pLEQoZigpLEooKSkpLFEkPVJvKGU9PmUmJnR5cGVvZiBlPT0ib2JqZWN0IiYmIUFycmF5LmlzQXJyYXkoZSkmJk9iamVjdC5rZXlzKGUpLmxlbmd0aD09PTA/e2Zvcm06e319OmUscG4odih7Zm9ybTpZJC5vcHRpb25hbCgpLHVybDpsZS5vcHRpb25hbCgpfSksRChmKCksSigpKS5vcHRpb25hbCgpKSksWCQ9aGUoe2xpc3Q6bGUub3B0aW9uYWwoKSxjYW5jZWw6bGUub3B0aW9uYWwoKSxyZXF1ZXN0czpoZSh7c2FtcGxpbmc6aGUoe2NyZWF0ZU1lc3NhZ2U6bGUub3B0aW9uYWwoKX0pLm9wdGlvbmFsKCksZWxpY2l0YXRpb246aGUoe2NyZWF0ZTpsZS5vcHRpb25hbCgpfSkub3B0aW9uYWwoKX0pLm9wdGlvbmFsKCl9KSxleT1oZSh7bGlzdDpsZS5vcHRpb25hbCgpLGNhbmNlbDpsZS5vcHRpb25hbCgpLHJlcXVlc3RzOmhlKHt0b29sczpoZSh7Y2FsbDpsZS5vcHRpb25hbCgpfSkub3B0aW9uYWwoKX0pLm9wdGlvbmFsKCl9KSx0eT12KHtleHBlcmltZW50YWw6RChmKCksbGUpLm9wdGlvbmFsKCksc2FtcGxpbmc6dih7Y29udGV4dDpsZS5vcHRpb25hbCgpLHRvb2xzOmxlLm9wdGlvbmFsKCl9KS5vcHRpb25hbCgpLGVsaWNpdGF0aW9uOlEkLm9wdGlvbmFsKCkscm9vdHM6dih7bGlzdENoYW5nZWQ6SygpLm9wdGlvbmFsKCl9KS5vcHRpb25hbCgpLHRhc2tzOlgkLm9wdGlvbmFsKCksZXh0ZW5zaW9uczpEKGYoKSxsZSkub3B0aW9uYWwoKX0pLG55PUVlLmV4dGVuZCh7cHJvdG9jb2xWZXJzaW9uOmYoKSxjYXBhYmlsaXRpZXM6dHksY2xpZW50SW5mbzpEcn0pLG95PWZlLmV4dGVuZCh7bWV0aG9kOmcoImluaXRpYWxpemUiKSxwYXJhbXM6bnl9KSxzeT12KHtleHBlcmltZW50YWw6RChmKCksbGUpLm9wdGlvbmFsKCksbG9nZ2luZzpsZS5vcHRpb25hbCgpLGNvbXBsZXRpb25zOmxlLm9wdGlvbmFsKCkscHJvbXB0czp2KHtsaXN0Q2hhbmdlZDpLKCkub3B0aW9uYWwoKX0pLm9wdGlvbmFsKCkscmVzb3VyY2VzOnYoe3N1YnNjcmliZTpLKCkub3B0aW9uYWwoKSxsaXN0Q2hhbmdlZDpLKCkub3B0aW9uYWwoKX0pLm9wdGlvbmFsKCksdG9vbHM6dih7bGlzdENoYW5nZWQ6SygpLm9wdGlvbmFsKCl9KS5vcHRpb25hbCgpLHRhc2tzOmV5Lm9wdGlvbmFsKCksZXh0ZW5zaW9uczpEKGYoKSxsZSkub3B0aW9uYWwoKX0pLHJ5PWdlLmV4dGVuZCh7cHJvdG9jb2xWZXJzaW9uOmYoKSxjYXBhYmlsaXRpZXM6c3ksc2VydmVySW5mbzpEcixpbnN0cnVjdGlvbnM6ZigpLm9wdGlvbmFsKCl9KSxpeT1MZS5leHRlbmQoe21ldGhvZDpnKCJub3RpZmljYXRpb25zL2luaXRpYWxpemVkIikscGFyYW1zOnFlLm9wdGlvbmFsKCl9KSxCcj1mZS5leHRlbmQoe21ldGhvZDpnKCJwaW5nIikscGFyYW1zOkVlLm9wdGlvbmFsKCl9KSxheT12KHtwcm9ncmVzczpOKCksdG90YWw6WChOKCkpLG1lc3NhZ2U6WChmKCkpfSksY3k9dih7Li4ucWUuc2hhcGUsLi4uYXkuc2hhcGUscHJvZ3Jlc3NUb2tlbjpfZn0pLHhsPUxlLmV4dGVuZCh7bWV0aG9kOmcoIm5vdGlmaWNhdGlvbnMvcHJvZ3Jlc3MiKSxwYXJhbXM6Y3l9KSxseT1FZS5leHRlbmQoe2N1cnNvcjp3Zi5vcHRpb25hbCgpfSksam89ZmUuZXh0ZW5kKHtwYXJhbXM6bHkub3B0aW9uYWwoKX0pLHFvPWdlLmV4dGVuZCh7bmV4dEN1cnNvcjp3Zi5vcHRpb25hbCgpfSksdXk9bWUoWyJ3b3JraW5nIiwiaW5wdXRfcmVxdWlyZWQiLCJjb21wbGV0ZWQiLCJmYWlsZWQiLCJjYW5jZWxsZWQiXSksTG89dih7dGFza0lkOmYoKSxzdGF0dXM6dXksdHRsOnEoW04oKSx4bygpXSksY3JlYXRlZEF0OmYoKSxsYXN0VXBkYXRlZEF0OmYoKSxwb2xsSW50ZXJ2YWw6WChOKCkpLHN0YXR1c01lc3NhZ2U6WChmKCkpfSksSWw9Z2UuZXh0ZW5kKHt0YXNrOkxvfSksZHk9cWUubWVyZ2UoTG8pLGhzPUxlLmV4dGVuZCh7bWV0aG9kOmcoIm5vdGlmaWNhdGlvbnMvdGFza3Mvc3RhdHVzIikscGFyYW1zOmR5fSksQWw9ZmUuZXh0ZW5kKHttZXRob2Q6ZygidGFza3MvZ2V0IikscGFyYW1zOkVlLmV4dGVuZCh7dGFza0lkOmYoKX0pfSksQ2w9Z2UubWVyZ2UoTG8pLFBsPWZlLmV4dGVuZCh7bWV0aG9kOmcoInRhc2tzL3Jlc3VsdCIpLHBhcmFtczpFZS5leHRlbmQoe3Rhc2tJZDpmKCl9KX0pO2dlLmxvb3NlKCk7Y29uc3QgRWw9am8uZXh0ZW5kKHttZXRob2Q6ZygidGFza3MvbGlzdCIpfSksT2w9cW8uZXh0ZW5kKHt0YXNrczpFKExvKX0pLFJsPWZlLmV4dGVuZCh7bWV0aG9kOmcoInRhc2tzL2NhbmNlbCIpLHBhcmFtczpFZS5leHRlbmQoe3Rhc2tJZDpmKCl9KX0pLHB5PWdlLm1lcmdlKExvKSx6Zj12KHt1cmk6ZigpLG1pbWVUeXBlOlgoZigpKSxfbWV0YTpEKGYoKSxKKCkpLm9wdGlvbmFsKCl9KSx4Zj16Zi5leHRlbmQoe3RleHQ6ZigpfSksTmw9ZigpLnJlZmluZShlPT57dHJ5e3JldHVybiBhdG9iKGUpLCEwfWNhdGNoe3JldHVybiExfX0se21lc3NhZ2U6IkludmFsaWQgQmFzZTY0IHN0cmluZyJ9KSxJZj16Zi5leHRlbmQoe2Jsb2I6Tmx9KSxEbz1tZShbInVzZXIiLCJhc3Npc3RhbnQiXSksYm49dih7YXVkaWVuY2U6RShEbykub3B0aW9uYWwoKSxwcmlvcml0eTpOKCkubWluKDApLm1heCgxKS5vcHRpb25hbCgpLGxhc3RNb2RpZmllZDptZih7b2Zmc2V0OiEwfSkub3B0aW9uYWwoKX0pLEFmPXYoey4uLlZ0LnNoYXBlLC4uLk1vLnNoYXBlLHVyaTpmKCksZGVzY3JpcHRpb246WChmKCkpLG1pbWVUeXBlOlgoZigpKSxzaXplOlgoTigpKSxhbm5vdGF0aW9uczpibi5vcHRpb25hbCgpLF9tZXRhOlgoaGUoe30pKX0pLGh5PXYoey4uLlZ0LnNoYXBlLC4uLk1vLnNoYXBlLHVyaVRlbXBsYXRlOmYoKSxkZXNjcmlwdGlvbjpYKGYoKSksbWltZVR5cGU6WChmKCkpLGFubm90YXRpb25zOmJuLm9wdGlvbmFsKCksX21ldGE6WChoZSh7fSkpfSksbXk9am8uZXh0ZW5kKHttZXRob2Q6ZygicmVzb3VyY2VzL2xpc3QiKX0pLENmPXFvLmV4dGVuZCh7cmVzb3VyY2VzOkUoQWYpfSksZnk9am8uZXh0ZW5kKHttZXRob2Q6ZygicmVzb3VyY2VzL3RlbXBsYXRlcy9saXN0Iil9KSxneT1xby5leHRlbmQoe3Jlc291cmNlVGVtcGxhdGVzOkUoaHkpfSksWmw9RWUuZXh0ZW5kKHt1cmk6ZigpfSksYnk9Wmwsdnk9ZmUuZXh0ZW5kKHttZXRob2Q6ZygicmVzb3VyY2VzL3JlYWQiKSxwYXJhbXM6Ynl9KSxQZj1nZS5leHRlbmQoe2NvbnRlbnRzOkUocShbeGYsSWZdKSl9KSwkeT1MZS5leHRlbmQoe21ldGhvZDpnKCJub3RpZmljYXRpb25zL3Jlc291cmNlcy9saXN0X2NoYW5nZWQiKSxwYXJhbXM6cWUub3B0aW9uYWwoKX0pLHl5PVpsLGt5PWZlLmV4dGVuZCh7bWV0aG9kOmcoInJlc291cmNlcy9zdWJzY3JpYmUiKSxwYXJhbXM6eXl9KSxfeT1abCx3eT1mZS5leHRlbmQoe21ldGhvZDpnKCJyZXNvdXJjZXMvdW5zdWJzY3JpYmUiKSxwYXJhbXM6X3l9KSxTeT1xZS5leHRlbmQoe3VyaTpmKCl9KSxUeT1MZS5leHRlbmQoe21ldGhvZDpnKCJub3RpZmljYXRpb25zL3Jlc291cmNlcy91cGRhdGVkIikscGFyYW1zOlN5fSksenk9dih7bmFtZTpmKCksZGVzY3JpcHRpb246WChmKCkpLHJlcXVpcmVkOlgoSygpKX0pLHh5PXYoey4uLlZ0LnNoYXBlLC4uLk1vLnNoYXBlLGRlc2NyaXB0aW9uOlgoZigpKSxhcmd1bWVudHM6WChFKHp5KSksX21ldGE6WChoZSh7fSkpfSksSXk9am8uZXh0ZW5kKHttZXRob2Q6ZygicHJvbXB0cy9saXN0Iil9KSxBeT1xby5leHRlbmQoe3Byb21wdHM6RSh4eSl9KSxDeT1FZS5leHRlbmQoe25hbWU6ZigpLGFyZ3VtZW50czpEKGYoKSxmKCkpLm9wdGlvbmFsKCl9KSxQeT1mZS5leHRlbmQoe21ldGhvZDpnKCJwcm9tcHRzL2dldCIpLHBhcmFtczpDeX0pLE1sPXYoe3R5cGU6ZygidGV4dCIpLHRleHQ6ZigpLGFubm90YXRpb25zOmJuLm9wdGlvbmFsKCksX21ldGE6RChmKCksSigpKS5vcHRpb25hbCgpfSksamw9dih7dHlwZTpnKCJpbWFnZSIpLGRhdGE6TmwsbWltZVR5cGU6ZigpLGFubm90YXRpb25zOmJuLm9wdGlvbmFsKCksX21ldGE6RChmKCksSigpKS5vcHRpb25hbCgpfSkscWw9dih7dHlwZTpnKCJhdWRpbyIpLGRhdGE6TmwsbWltZVR5cGU6ZigpLGFubm90YXRpb25zOmJuLm9wdGlvbmFsKCksX21ldGE6RChmKCksSigpKS5vcHRpb25hbCgpfSksRXk9dih7dHlwZTpnKCJ0b29sX3VzZSIpLG5hbWU6ZigpLGlkOmYoKSxpbnB1dDpEKGYoKSxKKCkpLF9tZXRhOkQoZigpLEooKSkub3B0aW9uYWwoKX0pLEVmPXYoe3R5cGU6ZygicmVzb3VyY2UiKSxyZXNvdXJjZTpxKFt4ZixJZl0pLGFubm90YXRpb25zOmJuLm9wdGlvbmFsKCksX21ldGE6RChmKCksSigpKS5vcHRpb25hbCgpfSksT2Y9QWYuZXh0ZW5kKHt0eXBlOmcoInJlc291cmNlX2xpbmsiKX0pLEJvPXEoW01sLGpsLHFsLE9mLEVmXSksT3k9dih7cm9sZTpEbyxjb250ZW50OkJvfSksUnk9Z2UuZXh0ZW5kKHtkZXNjcmlwdGlvbjpmKCkub3B0aW9uYWwoKSxtZXNzYWdlczpFKE95KX0pLE55PUxlLmV4dGVuZCh7bWV0aG9kOmcoIm5vdGlmaWNhdGlvbnMvcHJvbXB0cy9saXN0X2NoYW5nZWQiKSxwYXJhbXM6cWUub3B0aW9uYWwoKX0pLFp5PXYoe3RpdGxlOmYoKS5vcHRpb25hbCgpLHJlYWRPbmx5SGludDpLKCkub3B0aW9uYWwoKSxkZXN0cnVjdGl2ZUhpbnQ6SygpLm9wdGlvbmFsKCksaWRlbXBvdGVudEhpbnQ6SygpLm9wdGlvbmFsKCksb3BlbldvcmxkSGludDpLKCkub3B0aW9uYWwoKX0pLE15PXYoe3Rhc2tTdXBwb3J0Om1lKFsicmVxdWlyZWQiLCJvcHRpb25hbCIsImZvcmJpZGRlbiJdKS5vcHRpb25hbCgpfSksTGw9dih7Li4uVnQuc2hhcGUsLi4uTW8uc2hhcGUsZGVzY3JpcHRpb246ZigpLm9wdGlvbmFsKCksaW5wdXRTY2hlbWE6dih7dHlwZTpnKCJvYmplY3QiKSxwcm9wZXJ0aWVzOkQoZigpLGxlKS5vcHRpb25hbCgpLHJlcXVpcmVkOkUoZigpKS5vcHRpb25hbCgpfSkuY2F0Y2hhbGwoSigpKSxvdXRwdXRTY2hlbWE6dih7dHlwZTpnKCJvYmplY3QiKSxwcm9wZXJ0aWVzOkQoZigpLGxlKS5vcHRpb25hbCgpLHJlcXVpcmVkOkUoZigpKS5vcHRpb25hbCgpfSkuY2F0Y2hhbGwoSigpKS5vcHRpb25hbCgpLGFubm90YXRpb25zOlp5Lm9wdGlvbmFsKCksZXhlY3V0aW9uOk15Lm9wdGlvbmFsKCksX21ldGE6RChmKCksSigpKS5vcHRpb25hbCgpfSksUmY9am8uZXh0ZW5kKHttZXRob2Q6ZygidG9vbHMvbGlzdCIpfSksank9cW8uZXh0ZW5kKHt0b29sczpFKExsKX0pLFVyPWdlLmV4dGVuZCh7Y29udGVudDpFKEJvKS5kZWZhdWx0KFtdKSxzdHJ1Y3R1cmVkQ29udGVudDpEKGYoKSxKKCkpLm9wdGlvbmFsKCksaXNFcnJvcjpLKCkub3B0aW9uYWwoKX0pO1VyLm9yKGdlLmV4dGVuZCh7dG9vbFJlc3VsdDpKKCl9KSk7Y29uc3QgcXk9Tm8uZXh0ZW5kKHtuYW1lOmYoKSxhcmd1bWVudHM6RChmKCksSigpKS5vcHRpb25hbCgpfSksTmY9ZmUuZXh0ZW5kKHttZXRob2Q6ZygidG9vbHMvY2FsbCIpLHBhcmFtczpxeX0pLEx5PUxlLmV4dGVuZCh7bWV0aG9kOmcoIm5vdGlmaWNhdGlvbnMvdG9vbHMvbGlzdF9jaGFuZ2VkIikscGFyYW1zOnFlLm9wdGlvbmFsKCl9KTt2KHthdXRvUmVmcmVzaDpLKCkuZGVmYXVsdCghMCksZGVib3VuY2VNczpOKCkuaW50KCkubm9ubmVnYXRpdmUoKS5kZWZhdWx0KDMwMCl9KTtjb25zdCBaZj1tZShbImRlYnVnIiwiaW5mbyIsIm5vdGljZSIsIndhcm5pbmciLCJlcnJvciIsImNyaXRpY2FsIiwiYWxlcnQiLCJlbWVyZ2VuY3kiXSksRHk9RWUuZXh0ZW5kKHtsZXZlbDpaZn0pLEJ5PWZlLmV4dGVuZCh7bWV0aG9kOmcoImxvZ2dpbmcvc2V0TGV2ZWwiKSxwYXJhbXM6RHl9KSxVeT1xZS5leHRlbmQoe2xldmVsOlpmLGxvZ2dlcjpmKCkub3B0aW9uYWwoKSxkYXRhOkooKX0pLEZ5PUxlLmV4dGVuZCh7bWV0aG9kOmcoIm5vdGlmaWNhdGlvbnMvbWVzc2FnZSIpLHBhcmFtczpVeX0pLEh5PXYoe25hbWU6ZigpLm9wdGlvbmFsKCl9KSxXeT12KHtoaW50czpFKEh5KS5vcHRpb25hbCgpLGNvc3RQcmlvcml0eTpOKCkubWluKDApLm1heCgxKS5vcHRpb25hbCgpLHNwZWVkUHJpb3JpdHk6TigpLm1pbigwKS5tYXgoMSkub3B0aW9uYWwoKSxpbnRlbGxpZ2VuY2VQcmlvcml0eTpOKCkubWluKDApLm1heCgxKS5vcHRpb25hbCgpfSksVnk9dih7bW9kZTptZShbImF1dG8iLCJyZXF1aXJlZCIsIm5vbmUiXSkub3B0aW9uYWwoKX0pLEp5PXYoe3R5cGU6ZygidG9vbF9yZXN1bHQiKSx0b29sVXNlSWQ6ZigpLmRlc2NyaWJlKCJUaGUgdW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBjb3JyZXNwb25kaW5nIHRvb2wgY2FsbC4iKSxjb250ZW50OkUoQm8pLmRlZmF1bHQoW10pLHN0cnVjdHVyZWRDb250ZW50OnYoe30pLmxvb3NlKCkub3B0aW9uYWwoKSxpc0Vycm9yOksoKS5vcHRpb25hbCgpLF9tZXRhOkQoZigpLEooKSkub3B0aW9uYWwoKX0pLEt5PUNvKCJ0eXBlIixbTWwsamwscWxdKSxtcz1DbygidHlwZSIsW01sLGpsLHFsLEV5LEp5XSksR3k9dih7cm9sZTpEbyxjb250ZW50OnEoW21zLEUobXMpXSksX21ldGE6RChmKCksSigpKS5vcHRpb25hbCgpfSksWXk9Tm8uZXh0ZW5kKHttZXNzYWdlczpFKEd5KSxtb2RlbFByZWZlcmVuY2VzOld5Lm9wdGlvbmFsKCksc3lzdGVtUHJvbXB0OmYoKS5vcHRpb25hbCgpLGluY2x1ZGVDb250ZXh0Om1lKFsibm9uZSIsInRoaXNTZXJ2ZXIiLCJhbGxTZXJ2ZXJzIl0pLm9wdGlvbmFsKCksdGVtcGVyYXR1cmU6TigpLm9wdGlvbmFsKCksbWF4VG9rZW5zOk4oKS5pbnQoKSxzdG9wU2VxdWVuY2VzOkUoZigpKS5vcHRpb25hbCgpLG1ldGFkYXRhOmxlLm9wdGlvbmFsKCksdG9vbHM6RShMbCkub3B0aW9uYWwoKSx0b29sQ2hvaWNlOlZ5Lm9wdGlvbmFsKCl9KSxReT1mZS5leHRlbmQoe21ldGhvZDpnKCJzYW1wbGluZy9jcmVhdGVNZXNzYWdlIikscGFyYW1zOll5fSksTWY9Z2UuZXh0ZW5kKHttb2RlbDpmKCksc3RvcFJlYXNvbjpYKG1lKFsiZW5kVHVybiIsInN0b3BTZXF1ZW5jZSIsIm1heFRva2VucyJdKS5vcihmKCkpKSxyb2xlOkRvLGNvbnRlbnQ6S3l9KSxqZj1nZS5leHRlbmQoe21vZGVsOmYoKSxzdG9wUmVhc29uOlgobWUoWyJlbmRUdXJuIiwic3RvcFNlcXVlbmNlIiwibWF4VG9rZW5zIiwidG9vbFVzZSJdKS5vcihmKCkpKSxyb2xlOkRvLGNvbnRlbnQ6cShbbXMsRShtcyldKX0pLFh5PXYoe3R5cGU6ZygiYm9vbGVhbiIpLHRpdGxlOmYoKS5vcHRpb25hbCgpLGRlc2NyaXB0aW9uOmYoKS5vcHRpb25hbCgpLGRlZmF1bHQ6SygpLm9wdGlvbmFsKCl9KSxlaz12KHt0eXBlOmcoInN0cmluZyIpLHRpdGxlOmYoKS5vcHRpb25hbCgpLGRlc2NyaXB0aW9uOmYoKS5vcHRpb25hbCgpLG1pbkxlbmd0aDpOKCkub3B0aW9uYWwoKSxtYXhMZW5ndGg6TigpLm9wdGlvbmFsKCksZm9ybWF0Om1lKFsiZW1haWwiLCJ1cmkiLCJkYXRlIiwiZGF0ZS10aW1lIl0pLm9wdGlvbmFsKCksZGVmYXVsdDpmKCkub3B0aW9uYWwoKX0pLHRrPXYoe3R5cGU6bWUoWyJudW1iZXIiLCJpbnRlZ2VyIl0pLHRpdGxlOmYoKS5vcHRpb25hbCgpLGRlc2NyaXB0aW9uOmYoKS5vcHRpb25hbCgpLG1pbmltdW06TigpLm9wdGlvbmFsKCksbWF4aW11bTpOKCkub3B0aW9uYWwoKSxkZWZhdWx0Ok4oKS5vcHRpb25hbCgpfSksbms9dih7dHlwZTpnKCJzdHJpbmciKSx0aXRsZTpmKCkub3B0aW9uYWwoKSxkZXNjcmlwdGlvbjpmKCkub3B0aW9uYWwoKSxlbnVtOkUoZigpKSxkZWZhdWx0OmYoKS5vcHRpb25hbCgpfSksb2s9dih7dHlwZTpnKCJzdHJpbmciKSx0aXRsZTpmKCkub3B0aW9uYWwoKSxkZXNjcmlwdGlvbjpmKCkub3B0aW9uYWwoKSxvbmVPZjpFKHYoe2NvbnN0OmYoKSx0aXRsZTpmKCl9KSksZGVmYXVsdDpmKCkub3B0aW9uYWwoKX0pLHNrPXYoe3R5cGU6Zygic3RyaW5nIiksdGl0bGU6ZigpLm9wdGlvbmFsKCksZGVzY3JpcHRpb246ZigpLm9wdGlvbmFsKCksZW51bTpFKGYoKSksZW51bU5hbWVzOkUoZigpKS5vcHRpb25hbCgpLGRlZmF1bHQ6ZigpLm9wdGlvbmFsKCl9KSxyaz1xKFtuayxva10pLGlrPXYoe3R5cGU6ZygiYXJyYXkiKSx0aXRsZTpmKCkub3B0aW9uYWwoKSxkZXNjcmlwdGlvbjpmKCkub3B0aW9uYWwoKSxtaW5JdGVtczpOKCkub3B0aW9uYWwoKSxtYXhJdGVtczpOKCkub3B0aW9uYWwoKSxpdGVtczp2KHt0eXBlOmcoInN0cmluZyIpLGVudW06RShmKCkpfSksZGVmYXVsdDpFKGYoKSkub3B0aW9uYWwoKX0pLGFrPXYoe3R5cGU6ZygiYXJyYXkiKSx0aXRsZTpmKCkub3B0aW9uYWwoKSxkZXNjcmlwdGlvbjpmKCkub3B0aW9uYWwoKSxtaW5JdGVtczpOKCkub3B0aW9uYWwoKSxtYXhJdGVtczpOKCkub3B0aW9uYWwoKSxpdGVtczp2KHthbnlPZjpFKHYoe2NvbnN0OmYoKSx0aXRsZTpmKCl9KSl9KSxkZWZhdWx0OkUoZigpKS5vcHRpb25hbCgpfSksY2s9cShbaWssYWtdKSxsaz1xKFtzayxyayxja10pLHVrPXEoW2xrLFh5LGVrLHRrXSksZGs9Tm8uZXh0ZW5kKHttb2RlOmcoImZvcm0iKS5vcHRpb25hbCgpLG1lc3NhZ2U6ZigpLHJlcXVlc3RlZFNjaGVtYTp2KHt0eXBlOmcoIm9iamVjdCIpLHByb3BlcnRpZXM6RChmKCksdWspLHJlcXVpcmVkOkUoZigpKS5vcHRpb25hbCgpfSl9KSxwaz1Oby5leHRlbmQoe21vZGU6ZygidXJsIiksbWVzc2FnZTpmKCksZWxpY2l0YXRpb25JZDpmKCksdXJsOmYoKS51cmwoKX0pLGhrPXEoW2RrLHBrXSksbWs9ZmUuZXh0ZW5kKHttZXRob2Q6ZygiZWxpY2l0YXRpb24vY3JlYXRlIikscGFyYW1zOmhrfSksZms9cWUuZXh0ZW5kKHtlbGljaXRhdGlvbklkOmYoKX0pLGdrPUxlLmV4dGVuZCh7bWV0aG9kOmcoIm5vdGlmaWNhdGlvbnMvZWxpY2l0YXRpb24vY29tcGxldGUiKSxwYXJhbXM6Zmt9KSxiaz1nZS5leHRlbmQoe2FjdGlvbjptZShbImFjY2VwdCIsImRlY2xpbmUiLCJjYW5jZWwiXSksY29udGVudDpSbyhlPT5lPT09bnVsbD92b2lkIDA6ZSxEKGYoKSxxKFtmKCksTigpLEsoKSxFKGYoKSldKSkub3B0aW9uYWwoKSl9KSx2az12KHt0eXBlOmcoInJlZi9yZXNvdXJjZSIpLHVyaTpmKCl9KSwkaz12KHt0eXBlOmcoInJlZi9wcm9tcHQiKSxuYW1lOmYoKX0pLHlrPUVlLmV4dGVuZCh7cmVmOnEoWyRrLHZrXSksYXJndW1lbnQ6dih7bmFtZTpmKCksdmFsdWU6ZigpfSksY29udGV4dDp2KHthcmd1bWVudHM6RChmKCksZigpKS5vcHRpb25hbCgpfSkub3B0aW9uYWwoKX0pLGtrPWZlLmV4dGVuZCh7bWV0aG9kOmcoImNvbXBsZXRpb24vY29tcGxldGUiKSxwYXJhbXM6eWt9KSxfaz1nZS5leHRlbmQoe2NvbXBsZXRpb246aGUoe3ZhbHVlczpFKGYoKSkubWF4KDEwMCksdG90YWw6WChOKCkuaW50KCkpLGhhc01vcmU6WChLKCkpfSl9KSx3az12KHt1cmk6ZigpLnN0YXJ0c1dpdGgoImZpbGU6Ly8iKSxuYW1lOmYoKS5vcHRpb25hbCgpLF9tZXRhOkQoZigpLEooKSkub3B0aW9uYWwoKX0pLFNrPWZlLmV4dGVuZCh7bWV0aG9kOmcoInJvb3RzL2xpc3QiKSxwYXJhbXM6RWUub3B0aW9uYWwoKX0pLFRrPWdlLmV4dGVuZCh7cm9vdHM6RSh3ayl9KSx6az1MZS5leHRlbmQoe21ldGhvZDpnKCJub3RpZmljYXRpb25zL3Jvb3RzL2xpc3RfY2hhbmdlZCIpLHBhcmFtczpxZS5vcHRpb25hbCgpfSk7cShbQnIsb3ksa2ssQnksUHksSXksbXksZnksdnksa3ksd3ksTmYsUmYsQWwsUGwsRWwsUmxdKTtxKFt6bCx4bCxpeSx6ayxoc10pO3EoW1RsLE1mLGpmLGJrLFRrLENsLE9sLElsXSk7cShbQnIsUXksbWssU2ssQWwsUGwsRWwsUmxdKTtxKFt6bCx4bCxGeSxUeSwkeSxMeSxOeSxocyxna10pO3EoW1RsLHJ5LF9rLFJ5LEF5LENmLGd5LFBmLFVyLGp5LENsLE9sLElsXSk7Y2xhc3MgVyBleHRlbmRzIEVycm9ye2NvbnN0cnVjdG9yKHQsbixvKXtzdXBlcihgTUNQIGVycm9yICR7dH06ICR7bn1gKSx0aGlzLmNvZGU9dCx0aGlzLmRhdGE9byx0aGlzLm5hbWU9Ik1jcEVycm9yIn1zdGF0aWMgZnJvbUVycm9yKHQsbixvKXtpZih0PT09WS5VcmxFbGljaXRhdGlvblJlcXVpcmVkJiZvKXtjb25zdCBzPW87aWYocy5lbGljaXRhdGlvbnMpcmV0dXJuIG5ldyB4ayhzLmVsaWNpdGF0aW9ucyxuKX1yZXR1cm4gbmV3IFcodCxuLG8pfX1jbGFzcyB4ayBleHRlbmRzIFd7Y29uc3RydWN0b3IodCxuPWBVUkwgZWxpY2l0YXRpb24ke3QubGVuZ3RoPjE/InMiOiIifSByZXF1aXJlZGApe3N1cGVyKFkuVXJsRWxpY2l0YXRpb25SZXF1aXJlZCxuLHtlbGljaXRhdGlvbnM6dH0pfWdldCBlbGljaXRhdGlvbnMoKXtyZXR1cm4gdGhpcy5kYXRhPy5lbGljaXRhdGlvbnM/P1tdfX1mdW5jdGlvbiBtdChlKXtyZXR1cm4gZT09PSJjb21wbGV0ZWQifHxlPT09ImZhaWxlZCJ8fGU9PT0iY2FuY2VsbGVkIn1uZXcgU2V0KCJBQkNERUZHSElKS0xNTk9QUVJTVFVWWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnh5ejAxMjM0NTY3ODkiKTtmdW5jdGlvbiBGdShlKXtjb25zdCBuPXYkKGUpPy5tZXRob2Q7aWYoIW4pdGhyb3cgbmV3IEVycm9yKCJTY2hlbWEgaXMgbWlzc2luZyBhIG1ldGhvZCBsaXRlcmFsIik7Y29uc3Qgbz0kJChuKTtpZih0eXBlb2YgbyE9InN0cmluZyIpdGhyb3cgbmV3IEVycm9yKCJTY2hlbWEgbWV0aG9kIGxpdGVyYWwgbXVzdCBiZSBhIHN0cmluZyIpO3JldHVybiBvfWZ1bmN0aW9uIEh1KGUsdCl7Y29uc3Qgbj1jZihlLHQpO2lmKCFuLnN1Y2Nlc3MpdGhyb3cgbi5lcnJvcjtyZXR1cm4gbi5kYXRhfWNvbnN0IElrPTZlNDtjbGFzcyBBa3tjb25zdHJ1Y3Rvcih0KXt0aGlzLl9vcHRpb25zPXQsdGhpcy5fcmVxdWVzdE1lc3NhZ2VJZD0wLHRoaXMuX3JlcXVlc3RIYW5kbGVycz1uZXcgTWFwLHRoaXMuX3JlcXVlc3RIYW5kbGVyQWJvcnRDb250cm9sbGVycz1uZXcgTWFwLHRoaXMuX25vdGlmaWNhdGlvbkhhbmRsZXJzPW5ldyBNYXAsdGhpcy5fcmVzcG9uc2VIYW5kbGVycz1uZXcgTWFwLHRoaXMuX3Byb2dyZXNzSGFuZGxlcnM9bmV3IE1hcCx0aGlzLl90aW1lb3V0SW5mbz1uZXcgTWFwLHRoaXMuX3BlbmRpbmdEZWJvdW5jZWROb3RpZmljYXRpb25zPW5ldyBTZXQsdGhpcy5fdGFza1Byb2dyZXNzVG9rZW5zPW5ldyBNYXAsdGhpcy5fcmVxdWVzdFJlc29sdmVycz1uZXcgTWFwLHRoaXMuc2V0Tm90aWZpY2F0aW9uSGFuZGxlcih6bCxuPT57dGhpcy5fb25jYW5jZWwobil9KSx0aGlzLnNldE5vdGlmaWNhdGlvbkhhbmRsZXIoeGwsbj0+e3RoaXMuX29ucHJvZ3Jlc3Mobil9KSx0aGlzLnNldFJlcXVlc3RIYW5kbGVyKEJyLG49Pih7fSkpLHRoaXMuX3Rhc2tTdG9yZT10Py50YXNrU3RvcmUsdGhpcy5fdGFza01lc3NhZ2VRdWV1ZT10Py50YXNrTWVzc2FnZVF1ZXVlLHRoaXMuX3Rhc2tTdG9yZSYmKHRoaXMuc2V0UmVxdWVzdEhhbmRsZXIoQWwsYXN5bmMobixvKT0+e2NvbnN0IHM9YXdhaXQgdGhpcy5fdGFza1N0b3JlLmdldFRhc2sobi5wYXJhbXMudGFza0lkLG8uc2Vzc2lvbklkKTtpZighcyl0aHJvdyBuZXcgVyhZLkludmFsaWRQYXJhbXMsIkZhaWxlZCB0byByZXRyaWV2ZSB0YXNrOiBUYXNrIG5vdCBmb3VuZCIpO3JldHVybnsuLi5zfX0pLHRoaXMuc2V0UmVxdWVzdEhhbmRsZXIoUGwsYXN5bmMobixvKT0+e2NvbnN0IHM9YXN5bmMoKT0+e2NvbnN0IHI9bi5wYXJhbXMudGFza0lkO2lmKHRoaXMuX3Rhc2tNZXNzYWdlUXVldWUpe2xldCBhO2Zvcig7YT1hd2FpdCB0aGlzLl90YXNrTWVzc2FnZVF1ZXVlLmRlcXVldWUocixvLnNlc3Npb25JZCk7KXtpZihhLnR5cGU9PT0icmVzcG9uc2UifHxhLnR5cGU9PT0iZXJyb3IiKXtjb25zdCBkPWEubWVzc2FnZSx1PWQuaWQscD10aGlzLl9yZXF1ZXN0UmVzb2x2ZXJzLmdldCh1KTtpZihwKWlmKHRoaXMuX3JlcXVlc3RSZXNvbHZlcnMuZGVsZXRlKHUpLGEudHlwZT09PSJyZXNwb25zZSIpcChkKTtlbHNle2NvbnN0IGg9ZCxiPW5ldyBXKGguZXJyb3IuY29kZSxoLmVycm9yLm1lc3NhZ2UsaC5lcnJvci5kYXRhKTtwKGIpfWVsc2V7Y29uc3QgaD1hLnR5cGU9PT0icmVzcG9uc2UiPyJSZXNwb25zZSI6IkVycm9yIjt0aGlzLl9vbmVycm9yKG5ldyBFcnJvcihgJHtofSBoYW5kbGVyIG1pc3NpbmcgZm9yIHJlcXVlc3QgJHt1fWApKX1jb250aW51ZX1hd2FpdCB0aGlzLl90cmFuc3BvcnQ/LnNlbmQoYS5tZXNzYWdlLHtyZWxhdGVkUmVxdWVzdElkOm8ucmVxdWVzdElkfSl9fWNvbnN0IGk9YXdhaXQgdGhpcy5fdGFza1N0b3JlLmdldFRhc2socixvLnNlc3Npb25JZCk7aWYoIWkpdGhyb3cgbmV3IFcoWS5JbnZhbGlkUGFyYW1zLGBUYXNrIG5vdCBmb3VuZDogJHtyfWApO2lmKCFtdChpLnN0YXR1cykpcmV0dXJuIGF3YWl0IHRoaXMuX3dhaXRGb3JUYXNrVXBkYXRlKHIsby5zaWduYWwpLGF3YWl0IHMoKTtpZihtdChpLnN0YXR1cykpe2NvbnN0IGE9YXdhaXQgdGhpcy5fdGFza1N0b3JlLmdldFRhc2tSZXN1bHQocixvLnNlc3Npb25JZCk7cmV0dXJuIHRoaXMuX2NsZWFyVGFza1F1ZXVlKHIpLHsuLi5hLF9tZXRhOnsuLi5hLl9tZXRhLFtmdF06e3Rhc2tJZDpyfX19fXJldHVybiBhd2FpdCBzKCl9O3JldHVybiBhd2FpdCBzKCl9KSx0aGlzLnNldFJlcXVlc3RIYW5kbGVyKEVsLGFzeW5jKG4sbyk9Pnt0cnl7Y29uc3R7dGFza3M6cyxuZXh0Q3Vyc29yOnJ9PWF3YWl0IHRoaXMuX3Rhc2tTdG9yZS5saXN0VGFza3Mobi5wYXJhbXM/LmN1cnNvcixvLnNlc3Npb25JZCk7cmV0dXJue3Rhc2tzOnMsbmV4dEN1cnNvcjpyLF9tZXRhOnt9fX1jYXRjaChzKXt0aHJvdyBuZXcgVyhZLkludmFsaWRQYXJhbXMsYEZhaWxlZCB0byBsaXN0IHRhc2tzOiAke3MgaW5zdGFuY2VvZiBFcnJvcj9zLm1lc3NhZ2U6U3RyaW5nKHMpfWApfX0pLHRoaXMuc2V0UmVxdWVzdEhhbmRsZXIoUmwsYXN5bmMobixvKT0+e3RyeXtjb25zdCBzPWF3YWl0IHRoaXMuX3Rhc2tTdG9yZS5nZXRUYXNrKG4ucGFyYW1zLnRhc2tJZCxvLnNlc3Npb25JZCk7aWYoIXMpdGhyb3cgbmV3IFcoWS5JbnZhbGlkUGFyYW1zLGBUYXNrIG5vdCBmb3VuZDogJHtuLnBhcmFtcy50YXNrSWR9YCk7aWYobXQocy5zdGF0dXMpKXRocm93IG5ldyBXKFkuSW52YWxpZFBhcmFtcyxgQ2Fubm90IGNhbmNlbCB0YXNrIGluIHRlcm1pbmFsIHN0YXR1czogJHtzLnN0YXR1c31gKTthd2FpdCB0aGlzLl90YXNrU3RvcmUudXBkYXRlVGFza1N0YXR1cyhuLnBhcmFtcy50YXNrSWQsImNhbmNlbGxlZCIsIkNsaWVudCBjYW5jZWxsZWQgdGFzayBleGVjdXRpb24uIixvLnNlc3Npb25JZCksdGhpcy5fY2xlYXJUYXNrUXVldWUobi5wYXJhbXMudGFza0lkKTtjb25zdCByPWF3YWl0IHRoaXMuX3Rhc2tTdG9yZS5nZXRUYXNrKG4ucGFyYW1zLnRhc2tJZCxvLnNlc3Npb25JZCk7aWYoIXIpdGhyb3cgbmV3IFcoWS5JbnZhbGlkUGFyYW1zLGBUYXNrIG5vdCBmb3VuZCBhZnRlciBjYW5jZWxsYXRpb246ICR7bi5wYXJhbXMudGFza0lkfWApO3JldHVybntfbWV0YTp7fSwuLi5yfX1jYXRjaChzKXt0aHJvdyBzIGluc3RhbmNlb2YgVz9zOm5ldyBXKFkuSW52YWxpZFJlcXVlc3QsYEZhaWxlZCB0byBjYW5jZWwgdGFzazogJHtzIGluc3RhbmNlb2YgRXJyb3I/cy5tZXNzYWdlOlN0cmluZyhzKX1gKX19KSl9YXN5bmMgX29uY2FuY2VsKHQpe2lmKCF0LnBhcmFtcy5yZXF1ZXN0SWQpcmV0dXJuO3RoaXMuX3JlcXVlc3RIYW5kbGVyQWJvcnRDb250cm9sbGVycy5nZXQodC5wYXJhbXMucmVxdWVzdElkKT8uYWJvcnQodC5wYXJhbXMucmVhc29uKX1fc2V0dXBUaW1lb3V0KHQsbixvLHMscj0hMSl7dGhpcy5fdGltZW91dEluZm8uc2V0KHQse3RpbWVvdXRJZDpzZXRUaW1lb3V0KHMsbiksc3RhcnRUaW1lOkRhdGUubm93KCksdGltZW91dDpuLG1heFRvdGFsVGltZW91dDpvLHJlc2V0VGltZW91dE9uUHJvZ3Jlc3M6cixvblRpbWVvdXQ6c30pfV9yZXNldFRpbWVvdXQodCl7Y29uc3Qgbj10aGlzLl90aW1lb3V0SW5mby5nZXQodCk7aWYoIW4pcmV0dXJuITE7Y29uc3Qgbz1EYXRlLm5vdygpLW4uc3RhcnRUaW1lO2lmKG4ubWF4VG90YWxUaW1lb3V0JiZvPj1uLm1heFRvdGFsVGltZW91dCl0aHJvdyB0aGlzLl90aW1lb3V0SW5mby5kZWxldGUodCksVy5mcm9tRXJyb3IoWS5SZXF1ZXN0VGltZW91dCwiTWF4aW11bSB0b3RhbCB0aW1lb3V0IGV4Y2VlZGVkIix7bWF4VG90YWxUaW1lb3V0Om4ubWF4VG90YWxUaW1lb3V0LHRvdGFsRWxhcHNlZDpvfSk7cmV0dXJuIGNsZWFyVGltZW91dChuLnRpbWVvdXRJZCksbi50aW1lb3V0SWQ9c2V0VGltZW91dChuLm9uVGltZW91dCxuLnRpbWVvdXQpLCEwfV9jbGVhbnVwVGltZW91dCh0KXtjb25zdCBuPXRoaXMuX3RpbWVvdXRJbmZvLmdldCh0KTtuJiYoY2xlYXJUaW1lb3V0KG4udGltZW91dElkKSx0aGlzLl90aW1lb3V0SW5mby5kZWxldGUodCkpfWFzeW5jIGNvbm5lY3QodCl7aWYodGhpcy5fdHJhbnNwb3J0KXRocm93IG5ldyBFcnJvcigiQWxyZWFkeSBjb25uZWN0ZWQgdG8gYSB0cmFuc3BvcnQuIENhbGwgY2xvc2UoKSBiZWZvcmUgY29ubmVjdGluZyB0byBhIG5ldyB0cmFuc3BvcnQsIG9yIHVzZSBhIHNlcGFyYXRlIFByb3RvY29sIGluc3RhbmNlIHBlciBjb25uZWN0aW9uLiIpO3RoaXMuX3RyYW5zcG9ydD10O2NvbnN0IG49dGhpcy50cmFuc3BvcnQ/Lm9uY2xvc2U7dGhpcy5fdHJhbnNwb3J0Lm9uY2xvc2U9KCk9PntuPy4oKSx0aGlzLl9vbmNsb3NlKCl9O2NvbnN0IG89dGhpcy50cmFuc3BvcnQ/Lm9uZXJyb3I7dGhpcy5fdHJhbnNwb3J0Lm9uZXJyb3I9cj0+e28/LihyKSx0aGlzLl9vbmVycm9yKHIpfTtjb25zdCBzPXRoaXMuX3RyYW5zcG9ydD8ub25tZXNzYWdlO3RoaXMuX3RyYW5zcG9ydC5vbm1lc3NhZ2U9KHIsaSk9PntzPy4ocixpKSxYbyhyKXx8ViQocik/dGhpcy5fb25yZXNwb25zZShyKTpVdShyKT90aGlzLl9vbnJlcXVlc3QocixpKTpXJChyKT90aGlzLl9vbm5vdGlmaWNhdGlvbihyKTp0aGlzLl9vbmVycm9yKG5ldyBFcnJvcihgVW5rbm93biBtZXNzYWdlIHR5cGU6ICR7SlNPTi5zdHJpbmdpZnkocil9YCkpfSxhd2FpdCB0aGlzLl90cmFuc3BvcnQuc3RhcnQoKX1fb25jbG9zZSgpe2NvbnN0IHQ9dGhpcy5fcmVzcG9uc2VIYW5kbGVyczt0aGlzLl9yZXNwb25zZUhhbmRsZXJzPW5ldyBNYXAsdGhpcy5fcHJvZ3Jlc3NIYW5kbGVycy5jbGVhcigpLHRoaXMuX3Rhc2tQcm9ncmVzc1Rva2Vucy5jbGVhcigpLHRoaXMuX3BlbmRpbmdEZWJvdW5jZWROb3RpZmljYXRpb25zLmNsZWFyKCk7Zm9yKGNvbnN0IG8gb2YgdGhpcy5fdGltZW91dEluZm8udmFsdWVzKCkpY2xlYXJUaW1lb3V0KG8udGltZW91dElkKTt0aGlzLl90aW1lb3V0SW5mby5jbGVhcigpO2Zvcihjb25zdCBvIG9mIHRoaXMuX3JlcXVlc3RIYW5kbGVyQWJvcnRDb250cm9sbGVycy52YWx1ZXMoKSlvLmFib3J0KCk7dGhpcy5fcmVxdWVzdEhhbmRsZXJBYm9ydENvbnRyb2xsZXJzLmNsZWFyKCk7Y29uc3Qgbj1XLmZyb21FcnJvcihZLkNvbm5lY3Rpb25DbG9zZWQsIkNvbm5lY3Rpb24gY2xvc2VkIik7dGhpcy5fdHJhbnNwb3J0PXZvaWQgMCx0aGlzLm9uY2xvc2U/LigpO2Zvcihjb25zdCBvIG9mIHQudmFsdWVzKCkpbyhuKX1fb25lcnJvcih0KXt0aGlzLm9uZXJyb3I/Lih0KX1fb25ub3RpZmljYXRpb24odCl7Y29uc3Qgbj10aGlzLl9ub3RpZmljYXRpb25IYW5kbGVycy5nZXQodC5tZXRob2QpPz90aGlzLmZhbGxiYWNrTm90aWZpY2F0aW9uSGFuZGxlcjtuIT09dm9pZCAwJiZQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpPT5uKHQpKS5jYXRjaChvPT50aGlzLl9vbmVycm9yKG5ldyBFcnJvcihgVW5jYXVnaHQgZXJyb3IgaW4gbm90aWZpY2F0aW9uIGhhbmRsZXI6ICR7b31gKSkpfV9vbnJlcXVlc3QodCxuKXtjb25zdCBvPXRoaXMuX3JlcXVlc3RIYW5kbGVycy5nZXQodC5tZXRob2QpPz90aGlzLmZhbGxiYWNrUmVxdWVzdEhhbmRsZXIscz10aGlzLl90cmFuc3BvcnQscj10LnBhcmFtcz8uX21ldGE/LltmdF0/LnRhc2tJZDtpZihvPT09dm9pZCAwKXtjb25zdCBwPXtqc29ucnBjOiIyLjAiLGlkOnQuaWQsZXJyb3I6e2NvZGU6WS5NZXRob2ROb3RGb3VuZCxtZXNzYWdlOiJNZXRob2Qgbm90IGZvdW5kIn19O3ImJnRoaXMuX3Rhc2tNZXNzYWdlUXVldWU/dGhpcy5fZW5xdWV1ZVRhc2tNZXNzYWdlKHIse3R5cGU6ImVycm9yIixtZXNzYWdlOnAsdGltZXN0YW1wOkRhdGUubm93KCl9LHM/LnNlc3Npb25JZCkuY2F0Y2goaD0+dGhpcy5fb25lcnJvcihuZXcgRXJyb3IoYEZhaWxlZCB0byBlbnF1ZXVlIGVycm9yIHJlc3BvbnNlOiAke2h9YCkpKTpzPy5zZW5kKHApLmNhdGNoKGg9PnRoaXMuX29uZXJyb3IobmV3IEVycm9yKGBGYWlsZWQgdG8gc2VuZCBhbiBlcnJvciByZXNwb25zZTogJHtofWApKSk7cmV0dXJufWNvbnN0IGk9bmV3IEFib3J0Q29udHJvbGxlcjt0aGlzLl9yZXF1ZXN0SGFuZGxlckFib3J0Q29udHJvbGxlcnMuc2V0KHQuaWQsaSk7Y29uc3QgYT1IJCh0LnBhcmFtcyk/dC5wYXJhbXMudGFzazp2b2lkIDAsZD10aGlzLl90YXNrU3RvcmU/dGhpcy5yZXF1ZXN0VGFza1N0b3JlKHQscz8uc2Vzc2lvbklkKTp2b2lkIDAsdT17c2lnbmFsOmkuc2lnbmFsLHNlc3Npb25JZDpzPy5zZXNzaW9uSWQsX21ldGE6dC5wYXJhbXM/Ll9tZXRhLHNlbmROb3RpZmljYXRpb246YXN5bmMgcD0+e2lmKGkuc2lnbmFsLmFib3J0ZWQpcmV0dXJuO2NvbnN0IGg9e3JlbGF0ZWRSZXF1ZXN0SWQ6dC5pZH07ciYmKGgucmVsYXRlZFRhc2s9e3Rhc2tJZDpyfSksYXdhaXQgdGhpcy5ub3RpZmljYXRpb24ocCxoKX0sc2VuZFJlcXVlc3Q6YXN5bmMocCxoLGIpPT57aWYoaS5zaWduYWwuYWJvcnRlZCl0aHJvdyBuZXcgVyhZLkNvbm5lY3Rpb25DbG9zZWQsIlJlcXVlc3Qgd2FzIGNhbmNlbGxlZCIpO2NvbnN0ICQ9ey4uLmIscmVsYXRlZFJlcXVlc3RJZDp0LmlkfTtyJiYhJC5yZWxhdGVkVGFzayYmKCQucmVsYXRlZFRhc2s9e3Rhc2tJZDpyfSk7Y29uc3Qgaz0kLnJlbGF0ZWRUYXNrPy50YXNrSWQ/P3I7cmV0dXJuIGsmJmQmJmF3YWl0IGQudXBkYXRlVGFza1N0YXR1cyhrLCJpbnB1dF9yZXF1aXJlZCIpLGF3YWl0IHRoaXMucmVxdWVzdChwLGgsJCl9LGF1dGhJbmZvOm4/LmF1dGhJbmZvLHJlcXVlc3RJZDp0LmlkLHJlcXVlc3RJbmZvOm4/LnJlcXVlc3RJbmZvLHRhc2tJZDpyLHRhc2tTdG9yZTpkLHRhc2tSZXF1ZXN0ZWRUdGw6YT8udHRsLGNsb3NlU1NFU3RyZWFtOm4/LmNsb3NlU1NFU3RyZWFtLGNsb3NlU3RhbmRhbG9uZVNTRVN0cmVhbTpuPy5jbG9zZVN0YW5kYWxvbmVTU0VTdHJlYW19O1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PnthJiZ0aGlzLmFzc2VydFRhc2tIYW5kbGVyQ2FwYWJpbGl0eSh0Lm1ldGhvZCl9KS50aGVuKCgpPT5vKHQsdSkpLnRoZW4oYXN5bmMgcD0+e2lmKGkuc2lnbmFsLmFib3J0ZWQpcmV0dXJuO2NvbnN0IGg9e3Jlc3VsdDpwLGpzb25ycGM6IjIuMCIsaWQ6dC5pZH07ciYmdGhpcy5fdGFza01lc3NhZ2VRdWV1ZT9hd2FpdCB0aGlzLl9lbnF1ZXVlVGFza01lc3NhZ2Uocix7dHlwZToicmVzcG9uc2UiLG1lc3NhZ2U6aCx0aW1lc3RhbXA6RGF0ZS5ub3coKX0scz8uc2Vzc2lvbklkKTphd2FpdCBzPy5zZW5kKGgpfSxhc3luYyBwPT57aWYoaS5zaWduYWwuYWJvcnRlZClyZXR1cm47Y29uc3QgaD17anNvbnJwYzoiMi4wIixpZDp0LmlkLGVycm9yOntjb2RlOk51bWJlci5pc1NhZmVJbnRlZ2VyKHAuY29kZSk/cC5jb2RlOlkuSW50ZXJuYWxFcnJvcixtZXNzYWdlOnAubWVzc2FnZT8/IkludGVybmFsIGVycm9yIiwuLi5wLmRhdGEhPT12b2lkIDAmJntkYXRhOnAuZGF0YX19fTtyJiZ0aGlzLl90YXNrTWVzc2FnZVF1ZXVlP2F3YWl0IHRoaXMuX2VucXVldWVUYXNrTWVzc2FnZShyLHt0eXBlOiJlcnJvciIsbWVzc2FnZTpoLHRpbWVzdGFtcDpEYXRlLm5vdygpfSxzPy5zZXNzaW9uSWQpOmF3YWl0IHM/LnNlbmQoaCl9KS5jYXRjaChwPT50aGlzLl9vbmVycm9yKG5ldyBFcnJvcihgRmFpbGVkIHRvIHNlbmQgcmVzcG9uc2U6ICR7cH1gKSkpLmZpbmFsbHkoKCk9Pnt0aGlzLl9yZXF1ZXN0SGFuZGxlckFib3J0Q29udHJvbGxlcnMuZ2V0KHQuaWQpPT09aSYmdGhpcy5fcmVxdWVzdEhhbmRsZXJBYm9ydENvbnRyb2xsZXJzLmRlbGV0ZSh0LmlkKX0pfV9vbnByb2dyZXNzKHQpe2NvbnN0e3Byb2dyZXNzVG9rZW46biwuLi5vfT10LnBhcmFtcyxzPU51bWJlcihuKSxyPXRoaXMuX3Byb2dyZXNzSGFuZGxlcnMuZ2V0KHMpO2lmKCFyKXt0aGlzLl9vbmVycm9yKG5ldyBFcnJvcihgUmVjZWl2ZWQgYSBwcm9ncmVzcyBub3RpZmljYXRpb24gZm9yIGFuIHVua25vd24gdG9rZW46ICR7SlNPTi5zdHJpbmdpZnkodCl9YCkpO3JldHVybn1jb25zdCBpPXRoaXMuX3Jlc3BvbnNlSGFuZGxlcnMuZ2V0KHMpLGE9dGhpcy5fdGltZW91dEluZm8uZ2V0KHMpO2lmKGEmJmkmJmEucmVzZXRUaW1lb3V0T25Qcm9ncmVzcyl0cnl7dGhpcy5fcmVzZXRUaW1lb3V0KHMpfWNhdGNoKGQpe3RoaXMuX3Jlc3BvbnNlSGFuZGxlcnMuZGVsZXRlKHMpLHRoaXMuX3Byb2dyZXNzSGFuZGxlcnMuZGVsZXRlKHMpLHRoaXMuX2NsZWFudXBUaW1lb3V0KHMpLGkoZCk7cmV0dXJufXIobyl9X29ucmVzcG9uc2UodCl7Y29uc3Qgbj1OdW1iZXIodC5pZCksbz10aGlzLl9yZXF1ZXN0UmVzb2x2ZXJzLmdldChuKTtpZihvKXtpZih0aGlzLl9yZXF1ZXN0UmVzb2x2ZXJzLmRlbGV0ZShuKSxYbyh0KSlvKHQpO2Vsc2V7Y29uc3QgaT1uZXcgVyh0LmVycm9yLmNvZGUsdC5lcnJvci5tZXNzYWdlLHQuZXJyb3IuZGF0YSk7byhpKX1yZXR1cm59Y29uc3Qgcz10aGlzLl9yZXNwb25zZUhhbmRsZXJzLmdldChuKTtpZihzPT09dm9pZCAwKXt0aGlzLl9vbmVycm9yKG5ldyBFcnJvcihgUmVjZWl2ZWQgYSByZXNwb25zZSBmb3IgYW4gdW5rbm93biBtZXNzYWdlIElEOiAke0pTT04uc3RyaW5naWZ5KHQpfWApKTtyZXR1cm59dGhpcy5fcmVzcG9uc2VIYW5kbGVycy5kZWxldGUobiksdGhpcy5fY2xlYW51cFRpbWVvdXQobik7bGV0IHI9ITE7aWYoWG8odCkmJnQucmVzdWx0JiZ0eXBlb2YgdC5yZXN1bHQ9PSJvYmplY3QiKXtjb25zdCBpPXQucmVzdWx0O2lmKGkudGFzayYmdHlwZW9mIGkudGFzaz09Im9iamVjdCIpe2NvbnN0IGE9aS50YXNrO3R5cGVvZiBhLnRhc2tJZD09InN0cmluZyImJihyPSEwLHRoaXMuX3Rhc2tQcm9ncmVzc1Rva2Vucy5zZXQoYS50YXNrSWQsbikpfX1pZihyfHx0aGlzLl9wcm9ncmVzc0hhbmRsZXJzLmRlbGV0ZShuKSxYbyh0KSlzKHQpO2Vsc2V7Y29uc3QgaT1XLmZyb21FcnJvcih0LmVycm9yLmNvZGUsdC5lcnJvci5tZXNzYWdlLHQuZXJyb3IuZGF0YSk7cyhpKX19Z2V0IHRyYW5zcG9ydCgpe3JldHVybiB0aGlzLl90cmFuc3BvcnR9YXN5bmMgY2xvc2UoKXthd2FpdCB0aGlzLl90cmFuc3BvcnQ/LmNsb3NlKCl9YXN5bmMqcmVxdWVzdFN0cmVhbSh0LG4sbyl7Y29uc3R7dGFzazpzfT1vPz97fTtpZighcyl7dHJ5e3lpZWxke3R5cGU6InJlc3VsdCIscmVzdWx0OmF3YWl0IHRoaXMucmVxdWVzdCh0LG4sbyl9fWNhdGNoKGkpe3lpZWxke3R5cGU6ImVycm9yIixlcnJvcjppIGluc3RhbmNlb2YgVz9pOm5ldyBXKFkuSW50ZXJuYWxFcnJvcixTdHJpbmcoaSkpfX1yZXR1cm59bGV0IHI7dHJ5e2NvbnN0IGk9YXdhaXQgdGhpcy5yZXF1ZXN0KHQsSWwsbyk7aWYoaS50YXNrKXI9aS50YXNrLnRhc2tJZCx5aWVsZHt0eXBlOiJ0YXNrQ3JlYXRlZCIsdGFzazppLnRhc2t9O2Vsc2UgdGhyb3cgbmV3IFcoWS5JbnRlcm5hbEVycm9yLCJUYXNrIGNyZWF0aW9uIGRpZCBub3QgcmV0dXJuIGEgdGFzayIpO2Zvcig7Oyl7Y29uc3QgYT1hd2FpdCB0aGlzLmdldFRhc2soe3Rhc2tJZDpyfSxvKTtpZih5aWVsZHt0eXBlOiJ0YXNrU3RhdHVzIix0YXNrOmF9LG10KGEuc3RhdHVzKSl7YS5zdGF0dXM9PT0iY29tcGxldGVkIj95aWVsZHt0eXBlOiJyZXN1bHQiLHJlc3VsdDphd2FpdCB0aGlzLmdldFRhc2tSZXN1bHQoe3Rhc2tJZDpyfSxuLG8pfTphLnN0YXR1cz09PSJmYWlsZWQiP3lpZWxke3R5cGU6ImVycm9yIixlcnJvcjpuZXcgVyhZLkludGVybmFsRXJyb3IsYFRhc2sgJHtyfSBmYWlsZWRgKX06YS5zdGF0dXM9PT0iY2FuY2VsbGVkIiYmKHlpZWxke3R5cGU6ImVycm9yIixlcnJvcjpuZXcgVyhZLkludGVybmFsRXJyb3IsYFRhc2sgJHtyfSB3YXMgY2FuY2VsbGVkYCl9KTtyZXR1cm59aWYoYS5zdGF0dXM9PT0iaW5wdXRfcmVxdWlyZWQiKXt5aWVsZHt0eXBlOiJyZXN1bHQiLHJlc3VsdDphd2FpdCB0aGlzLmdldFRhc2tSZXN1bHQoe3Rhc2tJZDpyfSxuLG8pfTtyZXR1cm59Y29uc3QgZD1hLnBvbGxJbnRlcnZhbD8/dGhpcy5fb3B0aW9ucz8uZGVmYXVsdFRhc2tQb2xsSW50ZXJ2YWw/PzFlMzthd2FpdCBuZXcgUHJvbWlzZSh1PT5zZXRUaW1lb3V0KHUsZCkpLG8/LnNpZ25hbD8udGhyb3dJZkFib3J0ZWQoKX19Y2F0Y2goaSl7eWllbGR7dHlwZToiZXJyb3IiLGVycm9yOmkgaW5zdGFuY2VvZiBXP2k6bmV3IFcoWS5JbnRlcm5hbEVycm9yLFN0cmluZyhpKSl9fX1yZXF1ZXN0KHQsbixvKXtjb25zdHtyZWxhdGVkUmVxdWVzdElkOnMscmVzdW1wdGlvblRva2VuOnIsb25yZXN1bXB0aW9udG9rZW46aSx0YXNrOmEscmVsYXRlZFRhc2s6ZH09bz8/e307cmV0dXJuIG5ldyBQcm9taXNlKCh1LHApPT57Y29uc3QgaD1BPT57cChBKX07aWYoIXRoaXMuX3RyYW5zcG9ydCl7aChuZXcgRXJyb3IoIk5vdCBjb25uZWN0ZWQiKSk7cmV0dXJufWlmKHRoaXMuX29wdGlvbnM/LmVuZm9yY2VTdHJpY3RDYXBhYmlsaXRpZXM9PT0hMCl0cnl7dGhpcy5hc3NlcnRDYXBhYmlsaXR5Rm9yTWV0aG9kKHQubWV0aG9kKSxhJiZ0aGlzLmFzc2VydFRhc2tDYXBhYmlsaXR5KHQubWV0aG9kKX1jYXRjaChBKXtoKEEpO3JldHVybn1vPy5zaWduYWw/LnRocm93SWZBYm9ydGVkKCk7Y29uc3QgYj10aGlzLl9yZXF1ZXN0TWVzc2FnZUlkKyssJD17Li4udCxqc29ucnBjOiIyLjAiLGlkOmJ9O28/Lm9ucHJvZ3Jlc3MmJih0aGlzLl9wcm9ncmVzc0hhbmRsZXJzLnNldChiLG8ub25wcm9ncmVzcyksJC5wYXJhbXM9ey4uLnQucGFyYW1zLF9tZXRhOnsuLi50LnBhcmFtcz8uX21ldGF8fHt9LHByb2dyZXNzVG9rZW46Yn19KSxhJiYoJC5wYXJhbXM9ey4uLiQucGFyYW1zLHRhc2s6YX0pLGQmJigkLnBhcmFtcz17Li4uJC5wYXJhbXMsX21ldGE6ey4uLiQucGFyYW1zPy5fbWV0YXx8e30sW2Z0XTpkfX0pO2NvbnN0IGs9QT0+e3RoaXMuX3Jlc3BvbnNlSGFuZGxlcnMuZGVsZXRlKGIpLHRoaXMuX3Byb2dyZXNzSGFuZGxlcnMuZGVsZXRlKGIpLHRoaXMuX2NsZWFudXBUaW1lb3V0KGIpLHRoaXMuX3RyYW5zcG9ydD8uc2VuZCh7anNvbnJwYzoiMi4wIixtZXRob2Q6Im5vdGlmaWNhdGlvbnMvY2FuY2VsbGVkIixwYXJhbXM6e3JlcXVlc3RJZDpiLHJlYXNvbjpTdHJpbmcoQSl9fSx7cmVsYXRlZFJlcXVlc3RJZDpzLHJlc3VtcHRpb25Ub2tlbjpyLG9ucmVzdW1wdGlvbnRva2VuOml9KS5jYXRjaChhZT0+dGhpcy5fb25lcnJvcihuZXcgRXJyb3IoYEZhaWxlZCB0byBzZW5kIGNhbmNlbGxhdGlvbjogJHthZX1gKSkpO2NvbnN0IEY9QSBpbnN0YW5jZW9mIFc/QTpuZXcgVyhZLlJlcXVlc3RUaW1lb3V0LFN0cmluZyhBKSk7cChGKX07dGhpcy5fcmVzcG9uc2VIYW5kbGVycy5zZXQoYixBPT57aWYoIW8/LnNpZ25hbD8uYWJvcnRlZCl7aWYoQSBpbnN0YW5jZW9mIEVycm9yKXJldHVybiBwKEEpO3RyeXtjb25zdCBGPWNmKG4sQS5yZXN1bHQpO0Yuc3VjY2Vzcz91KEYuZGF0YSk6cChGLmVycm9yKX1jYXRjaChGKXtwKEYpfX19KSxvPy5zaWduYWw/LmFkZEV2ZW50TGlzdGVuZXIoImFib3J0IiwoKT0+e2sobz8uc2lnbmFsPy5yZWFzb24pfSk7Y29uc3QgVD1vPy50aW1lb3V0Pz9JayxfPSgpPT5rKFcuZnJvbUVycm9yKFkuUmVxdWVzdFRpbWVvdXQsIlJlcXVlc3QgdGltZWQgb3V0Iix7dGltZW91dDpUfSkpO3RoaXMuX3NldHVwVGltZW91dChiLFQsbz8ubWF4VG90YWxUaW1lb3V0LF8sbz8ucmVzZXRUaW1lb3V0T25Qcm9ncmVzcz8/ITEpO2NvbnN0IHg9ZD8udGFza0lkO2lmKHgpe2NvbnN0IEE9Rj0+e2NvbnN0IGFlPXRoaXMuX3Jlc3BvbnNlSGFuZGxlcnMuZ2V0KGIpO2FlP2FlKEYpOnRoaXMuX29uZXJyb3IobmV3IEVycm9yKGBSZXNwb25zZSBoYW5kbGVyIG1pc3NpbmcgZm9yIHNpZGUtY2hhbm5lbGVkIHJlcXVlc3QgJHtifWApKX07dGhpcy5fcmVxdWVzdFJlc29sdmVycy5zZXQoYixBKSx0aGlzLl9lbnF1ZXVlVGFza01lc3NhZ2UoeCx7dHlwZToicmVxdWVzdCIsbWVzc2FnZTokLHRpbWVzdGFtcDpEYXRlLm5vdygpfSkuY2F0Y2goRj0+e3RoaXMuX2NsZWFudXBUaW1lb3V0KGIpLHAoRil9KX1lbHNlIHRoaXMuX3RyYW5zcG9ydC5zZW5kKCQse3JlbGF0ZWRSZXF1ZXN0SWQ6cyxyZXN1bXB0aW9uVG9rZW46cixvbnJlc3VtcHRpb250b2tlbjppfSkuY2F0Y2goQT0+e3RoaXMuX2NsZWFudXBUaW1lb3V0KGIpLHAoQSl9KX0pfWFzeW5jIGdldFRhc2sodCxuKXtyZXR1cm4gdGhpcy5yZXF1ZXN0KHttZXRob2Q6InRhc2tzL2dldCIscGFyYW1zOnR9LENsLG4pfWFzeW5jIGdldFRhc2tSZXN1bHQodCxuLG8pe3JldHVybiB0aGlzLnJlcXVlc3Qoe21ldGhvZDoidGFza3MvcmVzdWx0IixwYXJhbXM6dH0sbixvKX1hc3luYyBsaXN0VGFza3ModCxuKXtyZXR1cm4gdGhpcy5yZXF1ZXN0KHttZXRob2Q6InRhc2tzL2xpc3QiLHBhcmFtczp0fSxPbCxuKX1hc3luYyBjYW5jZWxUYXNrKHQsbil7cmV0dXJuIHRoaXMucmVxdWVzdCh7bWV0aG9kOiJ0YXNrcy9jYW5jZWwiLHBhcmFtczp0fSxweSxuKX1hc3luYyBub3RpZmljYXRpb24odCxuKXtpZighdGhpcy5fdHJhbnNwb3J0KXRocm93IG5ldyBFcnJvcigiTm90IGNvbm5lY3RlZCIpO3RoaXMuYXNzZXJ0Tm90aWZpY2F0aW9uQ2FwYWJpbGl0eSh0Lm1ldGhvZCk7Y29uc3Qgbz1uPy5yZWxhdGVkVGFzaz8udGFza0lkO2lmKG8pe2NvbnN0IGE9ey4uLnQsanNvbnJwYzoiMi4wIixwYXJhbXM6ey4uLnQucGFyYW1zLF9tZXRhOnsuLi50LnBhcmFtcz8uX21ldGF8fHt9LFtmdF06bi5yZWxhdGVkVGFza319fTthd2FpdCB0aGlzLl9lbnF1ZXVlVGFza01lc3NhZ2Uobyx7dHlwZToibm90aWZpY2F0aW9uIixtZXNzYWdlOmEsdGltZXN0YW1wOkRhdGUubm93KCl9KTtyZXR1cm59aWYoKHRoaXMuX29wdGlvbnM/LmRlYm91bmNlZE5vdGlmaWNhdGlvbk1ldGhvZHM/P1tdKS5pbmNsdWRlcyh0Lm1ldGhvZCkmJiF0LnBhcmFtcyYmIW4/LnJlbGF0ZWRSZXF1ZXN0SWQmJiFuPy5yZWxhdGVkVGFzayl7aWYodGhpcy5fcGVuZGluZ0RlYm91bmNlZE5vdGlmaWNhdGlvbnMuaGFzKHQubWV0aG9kKSlyZXR1cm47dGhpcy5fcGVuZGluZ0RlYm91bmNlZE5vdGlmaWNhdGlvbnMuYWRkKHQubWV0aG9kKSxQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpPT57aWYodGhpcy5fcGVuZGluZ0RlYm91bmNlZE5vdGlmaWNhdGlvbnMuZGVsZXRlKHQubWV0aG9kKSwhdGhpcy5fdHJhbnNwb3J0KXJldHVybjtsZXQgYT17Li4udCxqc29ucnBjOiIyLjAifTtuPy5yZWxhdGVkVGFzayYmKGE9ey4uLmEscGFyYW1zOnsuLi5hLnBhcmFtcyxfbWV0YTp7Li4uYS5wYXJhbXM/Ll9tZXRhfHx7fSxbZnRdOm4ucmVsYXRlZFRhc2t9fX0pLHRoaXMuX3RyYW5zcG9ydD8uc2VuZChhLG4pLmNhdGNoKGQ9PnRoaXMuX29uZXJyb3IoZCkpfSk7cmV0dXJufWxldCBpPXsuLi50LGpzb25ycGM6IjIuMCJ9O24/LnJlbGF0ZWRUYXNrJiYoaT17Li4uaSxwYXJhbXM6ey4uLmkucGFyYW1zLF9tZXRhOnsuLi5pLnBhcmFtcz8uX21ldGF8fHt9LFtmdF06bi5yZWxhdGVkVGFza319fSksYXdhaXQgdGhpcy5fdHJhbnNwb3J0LnNlbmQoaSxuKX1zZXRSZXF1ZXN0SGFuZGxlcih0LG4pe2NvbnN0IG89RnUodCk7dGhpcy5hc3NlcnRSZXF1ZXN0SGFuZGxlckNhcGFiaWxpdHkobyksdGhpcy5fcmVxdWVzdEhhbmRsZXJzLnNldChvLChzLHIpPT57Y29uc3QgaT1IdSh0LHMpO3JldHVybiBQcm9taXNlLnJlc29sdmUobihpLHIpKX0pfXJlbW92ZVJlcXVlc3RIYW5kbGVyKHQpe3RoaXMuX3JlcXVlc3RIYW5kbGVycy5kZWxldGUodCl9YXNzZXJ0Q2FuU2V0UmVxdWVzdEhhbmRsZXIodCl7aWYodGhpcy5fcmVxdWVzdEhhbmRsZXJzLmhhcyh0KSl0aHJvdyBuZXcgRXJyb3IoYEEgcmVxdWVzdCBoYW5kbGVyIGZvciAke3R9IGFscmVhZHkgZXhpc3RzLCB3aGljaCB3b3VsZCBiZSBvdmVycmlkZGVuYCl9c2V0Tm90aWZpY2F0aW9uSGFuZGxlcih0LG4pe2NvbnN0IG89RnUodCk7dGhpcy5fbm90aWZpY2F0aW9uSGFuZGxlcnMuc2V0KG8scz0+e2NvbnN0IHI9SHUodCxzKTtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKG4ocikpfSl9cmVtb3ZlTm90aWZpY2F0aW9uSGFuZGxlcih0KXt0aGlzLl9ub3RpZmljYXRpb25IYW5kbGVycy5kZWxldGUodCl9X2NsZWFudXBUYXNrUHJvZ3Jlc3NIYW5kbGVyKHQpe2NvbnN0IG49dGhpcy5fdGFza1Byb2dyZXNzVG9rZW5zLmdldCh0KTtuIT09dm9pZCAwJiYodGhpcy5fcHJvZ3Jlc3NIYW5kbGVycy5kZWxldGUobiksdGhpcy5fdGFza1Byb2dyZXNzVG9rZW5zLmRlbGV0ZSh0KSl9YXN5bmMgX2VucXVldWVUYXNrTWVzc2FnZSh0LG4sbyl7aWYoIXRoaXMuX3Rhc2tTdG9yZXx8IXRoaXMuX3Rhc2tNZXNzYWdlUXVldWUpdGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgZW5xdWV1ZSB0YXNrIG1lc3NhZ2U6IHRhc2tTdG9yZSBhbmQgdGFza01lc3NhZ2VRdWV1ZSBhcmUgbm90IGNvbmZpZ3VyZWQiKTtjb25zdCBzPXRoaXMuX29wdGlvbnM/Lm1heFRhc2tRdWV1ZVNpemU7YXdhaXQgdGhpcy5fdGFza01lc3NhZ2VRdWV1ZS5lbnF1ZXVlKHQsbixvLHMpfWFzeW5jIF9jbGVhclRhc2tRdWV1ZSh0LG4pe2lmKHRoaXMuX3Rhc2tNZXNzYWdlUXVldWUpe2NvbnN0IG89YXdhaXQgdGhpcy5fdGFza01lc3NhZ2VRdWV1ZS5kZXF1ZXVlQWxsKHQsbik7Zm9yKGNvbnN0IHMgb2YgbylpZihzLnR5cGU9PT0icmVxdWVzdCImJlV1KHMubWVzc2FnZSkpe2NvbnN0IHI9cy5tZXNzYWdlLmlkLGk9dGhpcy5fcmVxdWVzdFJlc29sdmVycy5nZXQocik7aT8oaShuZXcgVyhZLkludGVybmFsRXJyb3IsIlRhc2sgY2FuY2VsbGVkIG9yIGNvbXBsZXRlZCIpKSx0aGlzLl9yZXF1ZXN0UmVzb2x2ZXJzLmRlbGV0ZShyKSk6dGhpcy5fb25lcnJvcihuZXcgRXJyb3IoYFJlc29sdmVyIG1pc3NpbmcgZm9yIHJlcXVlc3QgJHtyfSBkdXJpbmcgdGFzayAke3R9IGNsZWFudXBgKSl9fX1hc3luYyBfd2FpdEZvclRhc2tVcGRhdGUodCxuKXtsZXQgbz10aGlzLl9vcHRpb25zPy5kZWZhdWx0VGFza1BvbGxJbnRlcnZhbD8/MWUzO3RyeXtjb25zdCBzPWF3YWl0IHRoaXMuX3Rhc2tTdG9yZT8uZ2V0VGFzayh0KTtzPy5wb2xsSW50ZXJ2YWwmJihvPXMucG9sbEludGVydmFsKX1jYXRjaHt9cmV0dXJuIG5ldyBQcm9taXNlKChzLHIpPT57aWYobi5hYm9ydGVkKXtyKG5ldyBXKFkuSW52YWxpZFJlcXVlc3QsIlJlcXVlc3QgY2FuY2VsbGVkIikpO3JldHVybn1jb25zdCBpPXNldFRpbWVvdXQocyxvKTtuLmFkZEV2ZW50TGlzdGVuZXIoImFib3J0IiwoKT0+e2NsZWFyVGltZW91dChpKSxyKG5ldyBXKFkuSW52YWxpZFJlcXVlc3QsIlJlcXVlc3QgY2FuY2VsbGVkIikpfSx7b25jZTohMH0pfSl9cmVxdWVzdFRhc2tTdG9yZSh0LG4pe2NvbnN0IG89dGhpcy5fdGFza1N0b3JlO2lmKCFvKXRocm93IG5ldyBFcnJvcigiTm8gdGFzayBzdG9yZSBjb25maWd1cmVkIik7cmV0dXJue2NyZWF0ZVRhc2s6YXN5bmMgcz0+e2lmKCF0KXRocm93IG5ldyBFcnJvcigiTm8gcmVxdWVzdCBwcm92aWRlZCIpO3JldHVybiBhd2FpdCBvLmNyZWF0ZVRhc2socyx0LmlkLHttZXRob2Q6dC5tZXRob2QscGFyYW1zOnQucGFyYW1zfSxuKX0sZ2V0VGFzazphc3luYyBzPT57Y29uc3Qgcj1hd2FpdCBvLmdldFRhc2socyxuKTtpZighcil0aHJvdyBuZXcgVyhZLkludmFsaWRQYXJhbXMsIkZhaWxlZCB0byByZXRyaWV2ZSB0YXNrOiBUYXNrIG5vdCBmb3VuZCIpO3JldHVybiByfSxzdG9yZVRhc2tSZXN1bHQ6YXN5bmMocyxyLGkpPT57YXdhaXQgby5zdG9yZVRhc2tSZXN1bHQocyxyLGksbik7Y29uc3QgYT1hd2FpdCBvLmdldFRhc2socyxuKTtpZihhKXtjb25zdCBkPWhzLnBhcnNlKHttZXRob2Q6Im5vdGlmaWNhdGlvbnMvdGFza3Mvc3RhdHVzIixwYXJhbXM6YX0pO2F3YWl0IHRoaXMubm90aWZpY2F0aW9uKGQpLG10KGEuc3RhdHVzKSYmdGhpcy5fY2xlYW51cFRhc2tQcm9ncmVzc0hhbmRsZXIocyl9fSxnZXRUYXNrUmVzdWx0OnM9Pm8uZ2V0VGFza1Jlc3VsdChzLG4pLHVwZGF0ZVRhc2tTdGF0dXM6YXN5bmMocyxyLGkpPT57Y29uc3QgYT1hd2FpdCBvLmdldFRhc2socyxuKTtpZighYSl0aHJvdyBuZXcgVyhZLkludmFsaWRQYXJhbXMsYFRhc2sgIiR7c30iIG5vdCBmb3VuZCAtIGl0IG1heSBoYXZlIGJlZW4gY2xlYW5lZCB1cGApO2lmKG10KGEuc3RhdHVzKSl0aHJvdyBuZXcgVyhZLkludmFsaWRQYXJhbXMsYENhbm5vdCB1cGRhdGUgdGFzayAiJHtzfSIgZnJvbSB0ZXJtaW5hbCBzdGF0dXMgIiR7YS5zdGF0dXN9IiB0byAiJHtyfSIuIFRlcm1pbmFsIHN0YXRlcyAoY29tcGxldGVkLCBmYWlsZWQsIGNhbmNlbGxlZCkgY2Fubm90IHRyYW5zaXRpb24gdG8gb3RoZXIgc3RhdGVzLmApO2F3YWl0IG8udXBkYXRlVGFza1N0YXR1cyhzLHIsaSxuKTtjb25zdCBkPWF3YWl0IG8uZ2V0VGFzayhzLG4pO2lmKGQpe2NvbnN0IHU9aHMucGFyc2Uoe21ldGhvZDoibm90aWZpY2F0aW9ucy90YXNrcy9zdGF0dXMiLHBhcmFtczpkfSk7YXdhaXQgdGhpcy5ub3RpZmljYXRpb24odSksbXQoZC5zdGF0dXMpJiZ0aGlzLl9jbGVhbnVwVGFza1Byb2dyZXNzSGFuZGxlcihzKX19LGxpc3RUYXNrczpzPT5vLmxpc3RUYXNrcyhzLG4pfX19ZnVuY3Rpb24gV3UoZSl7cmV0dXJuIGUhPT1udWxsJiZ0eXBlb2YgZT09Im9iamVjdCImJiFBcnJheS5pc0FycmF5KGUpfWZ1bmN0aW9uIENrKGUsdCl7Y29uc3Qgbj17Li4uZX07Zm9yKGNvbnN0IG8gaW4gdCl7Y29uc3Qgcz1vLHI9dFtzXTtpZihyPT09dm9pZCAwKWNvbnRpbnVlO2NvbnN0IGk9bltzXTtXdShpKSYmV3Uocik/bltzXT17Li4uaSwuLi5yfTpuW3NdPXJ9cmV0dXJuIG59KGU9PnR5cGVvZiByZXF1aXJlPCJ1Ij9yZXF1aXJlOnR5cGVvZiBQcm94eTwidSI/bmV3IFByb3h5KGUse2dldDoodCxuKT0+KHR5cGVvZiByZXF1aXJlPCJ1Ij9yZXF1aXJlOnQpW25dfSk6ZSkoZnVuY3Rpb24oZSl7aWYodHlwZW9mIHJlcXVpcmU8InUiKXJldHVybiByZXF1aXJlLmFwcGx5KHRoaXMsYXJndW1lbnRzKTt0aHJvdyBFcnJvcignRHluYW1pYyByZXF1aXJlIG9mICInK2UrJyIgaXMgbm90IHN1cHBvcnRlZCcpfSk7Y2xhc3MgUGsgZXh0ZW5kcyBBa3tfcmVnaXN0ZXJlZE1ldGhvZHM9bmV3IFNldDtfZXZlbnRTbG90cz1uZXcgTWFwO29uRXZlbnREaXNwYXRjaCh0LG4pe31fZW5zdXJlRXZlbnRTbG90KHQpe2xldCBuPXRoaXMuX2V2ZW50U2xvdHMuZ2V0KHQpO2lmKCFuKXtsZXQgbz10aGlzLmV2ZW50U2NoZW1hc1t0XTtpZighbyl0aHJvdyBFcnJvcihgVW5rbm93biBldmVudDogJHtTdHJpbmcodCl9YCk7bj17bGlzdGVuZXJzOltdfSx0aGlzLl9ldmVudFNsb3RzLnNldCh0LG4pO2xldCBzPW8uc2hhcGUubWV0aG9kLnZhbHVlO3RoaXMuX3JlZ2lzdGVyZWRNZXRob2RzLmFkZChzKTtsZXQgcj1uO3N1cGVyLnNldE5vdGlmaWNhdGlvbkhhbmRsZXIobyxpPT57bGV0IGE9aS5wYXJhbXM7dGhpcy5vbkV2ZW50RGlzcGF0Y2godCxhKSxyLm9uSGFuZGxlcj8uKGEpO2ZvcihsZXQgZCBvZlsuLi5yLmxpc3RlbmVyc10pZChhKX0pfXJldHVybiBufXNldEV2ZW50SGFuZGxlcih0LG4pe2xldCBvPXRoaXMuX2Vuc3VyZUV2ZW50U2xvdCh0KTtvLm9uSGFuZGxlciYmbiYmY29uc29sZS53YXJuKGBbTUNQIEFwcHNdIG9uJHtTdHJpbmcodCl9IGhhbmRsZXIgcmVwbGFjZWQuIFVzZSBhZGRFdmVudExpc3RlbmVyKCIke1N0cmluZyh0KX0iLCDigKYpIHRvIGFkZCBtdWx0aXBsZSBsaXN0ZW5lcnMgd2l0aG91dCByZXBsYWNpbmcuYCksby5vbkhhbmRsZXI9bn1nZXRFdmVudEhhbmRsZXIodCl7cmV0dXJuIHRoaXMuX2V2ZW50U2xvdHMuZ2V0KHQpPy5vbkhhbmRsZXJ9YWRkRXZlbnRMaXN0ZW5lcih0LG4pe3RoaXMuX2Vuc3VyZUV2ZW50U2xvdCh0KS5saXN0ZW5lcnMucHVzaChuKX1yZW1vdmVFdmVudExpc3RlbmVyKHQsbil7bGV0IG89dGhpcy5fZXZlbnRTbG90cy5nZXQodCk7aWYoIW8pcmV0dXJuO2xldCBzPW8ubGlzdGVuZXJzLmluZGV4T2Yobik7cyE9PS0xJiZvLmxpc3RlbmVycy5zcGxpY2UocywxKX1zZXRSZXF1ZXN0SGFuZGxlcj0odCxuKT0+e3RoaXMuX2Fzc2VydE1ldGhvZE5vdFJlZ2lzdGVyZWQodCwic2V0UmVxdWVzdEhhbmRsZXIiKSxzdXBlci5zZXRSZXF1ZXN0SGFuZGxlcih0LG4pfTtzZXROb3RpZmljYXRpb25IYW5kbGVyPSh0LG4pPT57dGhpcy5fYXNzZXJ0TWV0aG9kTm90UmVnaXN0ZXJlZCh0LCJzZXROb3RpZmljYXRpb25IYW5kbGVyIiksc3VwZXIuc2V0Tm90aWZpY2F0aW9uSGFuZGxlcih0LG4pfTt3YXJuSWZSZXF1ZXN0SGFuZGxlclJlcGxhY2VkKHQsbixvKXtuJiZvJiZjb25zb2xlLndhcm4oYFtNQ1AgQXBwc10gJHt0fSBoYW5kbGVyIHJlcGxhY2VkLiBQcmV2aW91cyBoYW5kbGVyIHdpbGwgbm8gbG9uZ2VyIGJlIGNhbGxlZC5gKX1yZXBsYWNlUmVxdWVzdEhhbmRsZXI9KHQsbik9PntsZXQgbz10LnNoYXBlLm1ldGhvZC52YWx1ZTt0aGlzLl9yZWdpc3RlcmVkTWV0aG9kcy5hZGQobyksc3VwZXIuc2V0UmVxdWVzdEhhbmRsZXIodCxuKX07X2Fzc2VydE1ldGhvZE5vdFJlZ2lzdGVyZWQodCxuKXtsZXQgbz10LnNoYXBlLm1ldGhvZC52YWx1ZTtpZih0aGlzLl9yZWdpc3RlcmVkTWV0aG9kcy5oYXMobykpdGhyb3cgRXJyb3IoYEhhbmRsZXIgZm9yICIke299IiBhbHJlYWR5IHJlZ2lzdGVyZWQgKHZpYSAke259KS4gVXNlIGFkZEV2ZW50TGlzdGVuZXIoKSB0byBhdHRhY2ggbXVsdGlwbGUgbGlzdGVuZXJzLCBvciB0aGUgb24qIHNldHRlciBmb3IgcmVwbGFjZSBzZW1hbnRpY3MuYCk7dGhpcy5fcmVnaXN0ZXJlZE1ldGhvZHMuYWRkKG8pfX12YXIgRWs9IjIwMjYtMDEtMjYiLE9rPSJ1aS9ub3RpZmljYXRpb25zL3Rvb2wtaW5wdXQtcGFydGlhbCI7Y2xhc3MgUmt7ZXZlbnRUYXJnZXQ7ZXZlbnRTb3VyY2U7bWVzc2FnZUxpc3RlbmVyO2NvbnN0cnVjdG9yKHQ9d2luZG93LnBhcmVudCxuKXt0aGlzLmV2ZW50VGFyZ2V0PXQsdGhpcy5ldmVudFNvdXJjZT1uLHRoaXMubWVzc2FnZUxpc3RlbmVyPW89PntpZihuJiZvLnNvdXJjZSE9PXRoaXMuZXZlbnRTb3VyY2Upe2NvbnNvbGUuZGVidWcoIklnbm9yaW5nIG1lc3NhZ2UgZnJvbSB1bmtub3duIHNvdXJjZSIsbyk7cmV0dXJufWxldCBzPUokLnNhZmVQYXJzZShvLmRhdGEpO3Muc3VjY2Vzcz8oY29uc29sZS5kZWJ1ZygiUGFyc2VkIG1lc3NhZ2UiLHMuZGF0YSksdGhpcy5vbm1lc3NhZ2U/LihzLmRhdGEpKTpvLmRhdGE/Lmpzb25ycGMhPT0iMi4wIj9jb25zb2xlLmRlYnVnKCJJZ25vcmluZyBub24tSlNPTi1SUEMgbWVzc2FnZSIscy5lcnJvci5tZXNzYWdlLG8pOihjb25zb2xlLmVycm9yKCJGYWlsZWQgdG8gcGFyc2UgbWVzc2FnZSIscy5lcnJvci5tZXNzYWdlLG8pLHRoaXMub25lcnJvcj8uKEVycm9yKCJJbnZhbGlkIEpTT04tUlBDIG1lc3NhZ2UgcmVjZWl2ZWQ6ICIrcy5lcnJvci5tZXNzYWdlKSkpfX1hc3luYyBzdGFydCgpe3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIix0aGlzLm1lc3NhZ2VMaXN0ZW5lcil9YXN5bmMgc2VuZCh0LG4pe3QubWV0aG9kIT09T2smJmNvbnNvbGUuZGVidWcoIlNlbmRpbmcgbWVzc2FnZSIsdCksdGhpcy5ldmVudFRhcmdldC5wb3N0TWVzc2FnZSh0LCIqIil9YXN5bmMgY2xvc2UoKXt3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsdGhpcy5tZXNzYWdlTGlzdGVuZXIpLHRoaXMub25jbG9zZT8uKCl9b25jbG9zZTtvbmVycm9yO29ubWVzc2FnZTtzZXNzaW9uSWQ7c2V0UHJvdG9jb2xWZXJzaW9ufXZhciBOaz1xKFtnKCJsaWdodCIpLGcoImRhcmsiKV0pLmRlc2NyaWJlKCJDb2xvciB0aGVtZSBwcmVmZXJlbmNlIGZvciB0aGUgaG9zdCBlbnZpcm9ubWVudC4iKSxSbj1xKFtnKCJpbmxpbmUiKSxnKCJmdWxsc2NyZWVuIiksZygicGlwIildKS5kZXNjcmliZSgiRGlzcGxheSBtb2RlIGZvciBVSSBwcmVzZW50YXRpb24uIiksWms9cShbZygiLS1jb2xvci1iYWNrZ3JvdW5kLXByaW1hcnkiKSxnKCItLWNvbG9yLWJhY2tncm91bmQtc2Vjb25kYXJ5IiksZygiLS1jb2xvci1iYWNrZ3JvdW5kLXRlcnRpYXJ5IiksZygiLS1jb2xvci1iYWNrZ3JvdW5kLWludmVyc2UiKSxnKCItLWNvbG9yLWJhY2tncm91bmQtZ2hvc3QiKSxnKCItLWNvbG9yLWJhY2tncm91bmQtaW5mbyIpLGcoIi0tY29sb3ItYmFja2dyb3VuZC1kYW5nZXIiKSxnKCItLWNvbG9yLWJhY2tncm91bmQtc3VjY2VzcyIpLGcoIi0tY29sb3ItYmFja2dyb3VuZC13YXJuaW5nIiksZygiLS1jb2xvci1iYWNrZ3JvdW5kLWRpc2FibGVkIiksZygiLS1jb2xvci10ZXh0LXByaW1hcnkiKSxnKCItLWNvbG9yLXRleHQtc2Vjb25kYXJ5IiksZygiLS1jb2xvci10ZXh0LXRlcnRpYXJ5IiksZygiLS1jb2xvci10ZXh0LWludmVyc2UiKSxnKCItLWNvbG9yLXRleHQtZ2hvc3QiKSxnKCItLWNvbG9yLXRleHQtaW5mbyIpLGcoIi0tY29sb3ItdGV4dC1kYW5nZXIiKSxnKCItLWNvbG9yLXRleHQtc3VjY2VzcyIpLGcoIi0tY29sb3ItdGV4dC13YXJuaW5nIiksZygiLS1jb2xvci10ZXh0LWRpc2FibGVkIiksZygiLS1jb2xvci1ib3JkZXItcHJpbWFyeSIpLGcoIi0tY29sb3ItYm9yZGVyLXNlY29uZGFyeSIpLGcoIi0tY29sb3ItYm9yZGVyLXRlcnRpYXJ5IiksZygiLS1jb2xvci1ib3JkZXItaW52ZXJzZSIpLGcoIi0tY29sb3ItYm9yZGVyLWdob3N0IiksZygiLS1jb2xvci1ib3JkZXItaW5mbyIpLGcoIi0tY29sb3ItYm9yZGVyLWRhbmdlciIpLGcoIi0tY29sb3ItYm9yZGVyLXN1Y2Nlc3MiKSxnKCItLWNvbG9yLWJvcmRlci13YXJuaW5nIiksZygiLS1jb2xvci1ib3JkZXItZGlzYWJsZWQiKSxnKCItLWNvbG9yLXJpbmctcHJpbWFyeSIpLGcoIi0tY29sb3ItcmluZy1zZWNvbmRhcnkiKSxnKCItLWNvbG9yLXJpbmctaW52ZXJzZSIpLGcoIi0tY29sb3ItcmluZy1pbmZvIiksZygiLS1jb2xvci1yaW5nLWRhbmdlciIpLGcoIi0tY29sb3ItcmluZy1zdWNjZXNzIiksZygiLS1jb2xvci1yaW5nLXdhcm5pbmciKSxnKCItLWZvbnQtc2FucyIpLGcoIi0tZm9udC1tb25vIiksZygiLS1mb250LXdlaWdodC1ub3JtYWwiKSxnKCItLWZvbnQtd2VpZ2h0LW1lZGl1bSIpLGcoIi0tZm9udC13ZWlnaHQtc2VtaWJvbGQiKSxnKCItLWZvbnQtd2VpZ2h0LWJvbGQiKSxnKCItLWZvbnQtdGV4dC14cy1zaXplIiksZygiLS1mb250LXRleHQtc20tc2l6ZSIpLGcoIi0tZm9udC10ZXh0LW1kLXNpemUiKSxnKCItLWZvbnQtdGV4dC1sZy1zaXplIiksZygiLS1mb250LWhlYWRpbmcteHMtc2l6ZSIpLGcoIi0tZm9udC1oZWFkaW5nLXNtLXNpemUiKSxnKCItLWZvbnQtaGVhZGluZy1tZC1zaXplIiksZygiLS1mb250LWhlYWRpbmctbGctc2l6ZSIpLGcoIi0tZm9udC1oZWFkaW5nLXhsLXNpemUiKSxnKCItLWZvbnQtaGVhZGluZy0yeGwtc2l6ZSIpLGcoIi0tZm9udC1oZWFkaW5nLTN4bC1zaXplIiksZygiLS1mb250LXRleHQteHMtbGluZS1oZWlnaHQiKSxnKCItLWZvbnQtdGV4dC1zbS1saW5lLWhlaWdodCIpLGcoIi0tZm9udC10ZXh0LW1kLWxpbmUtaGVpZ2h0IiksZygiLS1mb250LXRleHQtbGctbGluZS1oZWlnaHQiKSxnKCItLWZvbnQtaGVhZGluZy14cy1saW5lLWhlaWdodCIpLGcoIi0tZm9udC1oZWFkaW5nLXNtLWxpbmUtaGVpZ2h0IiksZygiLS1mb250LWhlYWRpbmctbWQtbGluZS1oZWlnaHQiKSxnKCItLWZvbnQtaGVhZGluZy1sZy1saW5lLWhlaWdodCIpLGcoIi0tZm9udC1oZWFkaW5nLXhsLWxpbmUtaGVpZ2h0IiksZygiLS1mb250LWhlYWRpbmctMnhsLWxpbmUtaGVpZ2h0IiksZygiLS1mb250LWhlYWRpbmctM3hsLWxpbmUtaGVpZ2h0IiksZygiLS1ib3JkZXItcmFkaXVzLXhzIiksZygiLS1ib3JkZXItcmFkaXVzLXNtIiksZygiLS1ib3JkZXItcmFkaXVzLW1kIiksZygiLS1ib3JkZXItcmFkaXVzLWxnIiksZygiLS1ib3JkZXItcmFkaXVzLXhsIiksZygiLS1ib3JkZXItcmFkaXVzLWZ1bGwiKSxnKCItLWJvcmRlci13aWR0aC1yZWd1bGFyIiksZygiLS1zaGFkb3ctaGFpcmxpbmUiKSxnKCItLXNoYWRvdy1zbSIpLGcoIi0tc2hhZG93LW1kIiksZygiLS1zaGFkb3ctbGciKV0pLmRlc2NyaWJlKCJDU1MgdmFyaWFibGUga2V5cyBhdmFpbGFibGUgdG8gTUNQIGFwcHMgZm9yIHRoZW1pbmcuIiksTWs9RChaay5kZXNjcmliZShgU3R5bGUgdmFyaWFibGVzIGZvciB0aGVtaW5nIE1DUCBhcHBzLgoKSW5kaXZpZHVhbCBzdHlsZSBrZXlzIGFyZSBvcHRpb25hbCAtIGhvc3RzIG1heSBwcm92aWRlIGFueSBzdWJzZXQgb2YgdGhlc2UgdmFsdWVzLgpWYWx1ZXMgYXJlIHN0cmluZ3MgY29udGFpbmluZyBDU1MgdmFsdWVzIChjb2xvcnMsIHNpemVzLCBmb250IHN0YWNrcywgZXRjLikuCgpOb3RlOiBUaGlzIHR5cGUgdXNlcyBcYFJlY29yZDxLLCBzdHJpbmcgfCB1bmRlZmluZWQ+XGAgcmF0aGVyIHRoYW4gXGBQYXJ0aWFsPFJlY29yZDxLLCBzdHJpbmc+PlxgCmZvciBjb21wYXRpYmlsaXR5IHdpdGggWm9kIHNjaGVtYSBnZW5lcmF0aW9uLiBCb3RoIGFyZSBmdW5jdGlvbmFsbHkgZXF1aXZhbGVudCBmb3IgdmFsaWRhdGlvbi5gKSxxKFtmKCksRnQoKV0pLmRlc2NyaWJlKGBTdHlsZSB2YXJpYWJsZXMgZm9yIHRoZW1pbmcgTUNQIGFwcHMuCgpJbmRpdmlkdWFsIHN0eWxlIGtleXMgYXJlIG9wdGlvbmFsIC0gaG9zdHMgbWF5IHByb3ZpZGUgYW55IHN1YnNldCBvZiB0aGVzZSB2YWx1ZXMuClZhbHVlcyBhcmUgc3RyaW5ncyBjb250YWluaW5nIENTUyB2YWx1ZXMgKGNvbG9ycywgc2l6ZXMsIGZvbnQgc3RhY2tzLCBldGMuKS4KCk5vdGU6IFRoaXMgdHlwZSB1c2VzIFxgUmVjb3JkPEssIHN0cmluZyB8IHVuZGVmaW5lZD5cYCByYXRoZXIgdGhhbiBcYFBhcnRpYWw8UmVjb3JkPEssIHN0cmluZz4+XGAKZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBab2Qgc2NoZW1hIGdlbmVyYXRpb24uIEJvdGggYXJlIGZ1bmN0aW9uYWxseSBlcXVpdmFsZW50IGZvciB2YWxpZGF0aW9uLmApKS5kZXNjcmliZShgU3R5bGUgdmFyaWFibGVzIGZvciB0aGVtaW5nIE1DUCBhcHBzLgoKSW5kaXZpZHVhbCBzdHlsZSBrZXlzIGFyZSBvcHRpb25hbCAtIGhvc3RzIG1heSBwcm92aWRlIGFueSBzdWJzZXQgb2YgdGhlc2UgdmFsdWVzLgpWYWx1ZXMgYXJlIHN0cmluZ3MgY29udGFpbmluZyBDU1MgdmFsdWVzIChjb2xvcnMsIHNpemVzLCBmb250IHN0YWNrcywgZXRjLikuCgpOb3RlOiBUaGlzIHR5cGUgdXNlcyBcYFJlY29yZDxLLCBzdHJpbmcgfCB1bmRlZmluZWQ+XGAgcmF0aGVyIHRoYW4gXGBQYXJ0aWFsPFJlY29yZDxLLCBzdHJpbmc+PlxgCmZvciBjb21wYXRpYmlsaXR5IHdpdGggWm9kIHNjaGVtYSBnZW5lcmF0aW9uLiBCb3RoIGFyZSBmdW5jdGlvbmFsbHkgZXF1aXZhbGVudCBmb3IgdmFsaWRhdGlvbi5gKTt2KHttZXRob2Q6ZygidWkvb3Blbi1saW5rIikscGFyYW1zOnYoe3VybDpmKCkuZGVzY3JpYmUoIlVSTCB0byBvcGVuIGluIHRoZSBob3N0J3MgYnJvd3NlciIpfSl9KTt2YXIgams9dih7aXNFcnJvcjpLKCkub3B0aW9uYWwoKS5kZXNjcmliZSgiVHJ1ZSBpZiB0aGUgaG9zdCBmYWlsZWQgdG8gb3BlbiB0aGUgVVJMIChlLmcuLCBkdWUgdG8gc2VjdXJpdHkgcG9saWN5KS4iKX0pLnBhc3N0aHJvdWdoKCkscWs9dih7aXNFcnJvcjpLKCkub3B0aW9uYWwoKS5kZXNjcmliZSgiVHJ1ZSBpZiB0aGUgZG93bmxvYWQgZmFpbGVkIChlLmcuLCB1c2VyIGNhbmNlbGxlZCBvciBob3N0IGRlbmllZCkuIil9KS5wYXNzdGhyb3VnaCgpLExrPXYoe2lzRXJyb3I6SygpLm9wdGlvbmFsKCkuZGVzY3JpYmUoIlRydWUgaWYgdGhlIGhvc3QgcmVqZWN0ZWQgb3IgZmFpbGVkIHRvIGRlbGl2ZXIgdGhlIG1lc3NhZ2UuIil9KS5wYXNzdGhyb3VnaCgpO3Yoe21ldGhvZDpnKCJ1aS9ub3RpZmljYXRpb25zL3NhbmRib3gtcHJveHktcmVhZHkiKSxwYXJhbXM6dih7fSl9KTt2YXIgRGw9dih7Y29ubmVjdERvbWFpbnM6RShmKCkpLm9wdGlvbmFsKCkuZGVzY3JpYmUoYE9yaWdpbnMgZm9yIG5ldHdvcmsgcmVxdWVzdHMgKGZldGNoL1hIUi9XZWJTb2NrZXQpLgoKLSBNYXBzIHRvIENTUCBcYGNvbm5lY3Qtc3JjXGAgZGlyZWN0aXZlCi0gRW1wdHkgb3Igb21pdHRlZCDihpIgbm8gbmV0d29yayBjb25uZWN0aW9ucyAoc2VjdXJlIGRlZmF1bHQpYCkscmVzb3VyY2VEb21haW5zOkUoZigpKS5vcHRpb25hbCgpLmRlc2NyaWJlKCJPcmlnaW5zIGZvciBzdGF0aWMgcmVzb3VyY2VzIChpbWFnZXMsIHNjcmlwdHMsIHN0eWxlc2hlZXRzLCBmb250cywgbWVkaWEpLlxuXG4tIE1hcHMgdG8gQ1NQIGBpbWctc3JjYCwgYHNjcmlwdC1zcmNgLCBgc3R5bGUtc3JjYCwgYGZvbnQtc3JjYCwgYG1lZGlhLXNyY2AgZGlyZWN0aXZlc1xuLSBXaWxkY2FyZCBzdWJkb21haW5zIHN1cHBvcnRlZDogYGh0dHBzOi8vKi5leGFtcGxlLmNvbWBcbi0gRW1wdHkgb3Igb21pdHRlZCDihpIgbm8gbmV0d29yayByZXNvdXJjZXMgKHNlY3VyZSBkZWZhdWx0KSIpLGZyYW1lRG9tYWluczpFKGYoKSkub3B0aW9uYWwoKS5kZXNjcmliZSgiT3JpZ2lucyBmb3IgbmVzdGVkIGlmcmFtZXMuXG5cbi0gTWFwcyB0byBDU1AgYGZyYW1lLXNyY2AgZGlyZWN0aXZlXG4tIEVtcHR5IG9yIG9taXR0ZWQg4oaSIG5vIG5lc3RlZCBpZnJhbWVzIGFsbG93ZWQgKGBmcmFtZS1zcmMgJ25vbmUnYCkiKSxiYXNlVXJpRG9tYWluczpFKGYoKSkub3B0aW9uYWwoKS5kZXNjcmliZSgiQWxsb3dlZCBiYXNlIFVSSXMgZm9yIHRoZSBkb2N1bWVudC5cblxuLSBNYXBzIHRvIENTUCBgYmFzZS11cmlgIGRpcmVjdGl2ZVxuLSBFbXB0eSBvciBvbWl0dGVkIOKGkiBvbmx5IHNhbWUgb3JpZ2luIGFsbG93ZWQgKGBiYXNlLXVyaSAnc2VsZidgKSIpfSksQmw9dih7Y2FtZXJhOnYoe30pLm9wdGlvbmFsKCkuZGVzY3JpYmUoIlJlcXVlc3QgY2FtZXJhIGFjY2Vzcy5cblxuTWFwcyB0byBQZXJtaXNzaW9uIFBvbGljeSBgY2FtZXJhYCBmZWF0dXJlLiIpLG1pY3JvcGhvbmU6dih7fSkub3B0aW9uYWwoKS5kZXNjcmliZSgiUmVxdWVzdCBtaWNyb3Bob25lIGFjY2Vzcy5cblxuTWFwcyB0byBQZXJtaXNzaW9uIFBvbGljeSBgbWljcm9waG9uZWAgZmVhdHVyZS4iKSxnZW9sb2NhdGlvbjp2KHt9KS5vcHRpb25hbCgpLmRlc2NyaWJlKCJSZXF1ZXN0IGdlb2xvY2F0aW9uIGFjY2Vzcy5cblxuTWFwcyB0byBQZXJtaXNzaW9uIFBvbGljeSBgZ2VvbG9jYXRpb25gIGZlYXR1cmUuIiksY2xpcGJvYXJkV3JpdGU6dih7fSkub3B0aW9uYWwoKS5kZXNjcmliZSgiUmVxdWVzdCBjbGlwYm9hcmQgd3JpdGUgYWNjZXNzLlxuXG5NYXBzIHRvIFBlcm1pc3Npb24gUG9saWN5IGBjbGlwYm9hcmQtd3JpdGVgIGZlYXR1cmUuIil9KTt2KHttZXRob2Q6ZygidWkvbm90aWZpY2F0aW9ucy9zaXplLWNoYW5nZWQiKSxwYXJhbXM6dih7d2lkdGg6TigpLm9wdGlvbmFsKCkuZGVzY3JpYmUoIk5ldyB3aWR0aCBpbiBwaXhlbHMuIiksaGVpZ2h0Ok4oKS5vcHRpb25hbCgpLmRlc2NyaWJlKCJOZXcgaGVpZ2h0IGluIHBpeGVscy4iKX0pfSk7dmFyIERrPXYoe21ldGhvZDpnKCJ1aS9ub3RpZmljYXRpb25zL3Rvb2wtaW5wdXQiKSxwYXJhbXM6dih7YXJndW1lbnRzOkQoZigpLEooKS5kZXNjcmliZSgiQ29tcGxldGUgdG9vbCBjYWxsIGFyZ3VtZW50cyBhcyBrZXktdmFsdWUgcGFpcnMuIikpLm9wdGlvbmFsKCkuZGVzY3JpYmUoIkNvbXBsZXRlIHRvb2wgY2FsbCBhcmd1bWVudHMgYXMga2V5LXZhbHVlIHBhaXJzLiIpfSl9KSxCaz12KHttZXRob2Q6ZygidWkvbm90aWZpY2F0aW9ucy90b29sLWlucHV0LXBhcnRpYWwiKSxwYXJhbXM6dih7YXJndW1lbnRzOkQoZigpLEooKS5kZXNjcmliZSgiUGFydGlhbCB0b29sIGNhbGwgYXJndW1lbnRzIChpbmNvbXBsZXRlLCBtYXkgY2hhbmdlKS4iKSkub3B0aW9uYWwoKS5kZXNjcmliZSgiUGFydGlhbCB0b29sIGNhbGwgYXJndW1lbnRzIChpbmNvbXBsZXRlLCBtYXkgY2hhbmdlKS4iKX0pfSksVWs9dih7bWV0aG9kOmcoInVpL25vdGlmaWNhdGlvbnMvdG9vbC1jYW5jZWxsZWQiKSxwYXJhbXM6dih7cmVhc29uOmYoKS5vcHRpb25hbCgpLmRlc2NyaWJlKCdPcHRpb25hbCByZWFzb24gZm9yIHRoZSBjYW5jZWxsYXRpb24gKGUuZy4sICJ1c2VyIGFjdGlvbiIsICJ0aW1lb3V0IikuJyl9KX0pLEZrPXYoe2ZvbnRzOmYoKS5vcHRpb25hbCgpfSksSGs9dih7dmFyaWFibGVzOk1rLm9wdGlvbmFsKCkuZGVzY3JpYmUoIkNTUyB2YXJpYWJsZXMgZm9yIHRoZW1pbmcgdGhlIGFwcC4iKSxjc3M6Rmsub3B0aW9uYWwoKS5kZXNjcmliZSgiQ1NTIGJsb2NrcyB0aGF0IGFwcHMgY2FuIGluamVjdC4iKX0pLFdrPXYoe21ldGhvZDpnKCJ1aS9yZXNvdXJjZS10ZWFyZG93biIpLHBhcmFtczp2KHt9KX0pO0QoZigpLEooKSk7dmFyIFZ1PXYoe3RleHQ6dih7fSkub3B0aW9uYWwoKS5kZXNjcmliZSgiSG9zdCBzdXBwb3J0cyB0ZXh0IGNvbnRlbnQgYmxvY2tzLiIpLGltYWdlOnYoe30pLm9wdGlvbmFsKCkuZGVzY3JpYmUoIkhvc3Qgc3VwcG9ydHMgaW1hZ2UgY29udGVudCBibG9ja3MuIiksYXVkaW86dih7fSkub3B0aW9uYWwoKS5kZXNjcmliZSgiSG9zdCBzdXBwb3J0cyBhdWRpbyBjb250ZW50IGJsb2Nrcy4iKSxyZXNvdXJjZTp2KHt9KS5vcHRpb25hbCgpLmRlc2NyaWJlKCJIb3N0IHN1cHBvcnRzIHJlc291cmNlIGNvbnRlbnQgYmxvY2tzLiIpLHJlc291cmNlTGluazp2KHt9KS5vcHRpb25hbCgpLmRlc2NyaWJlKCJIb3N0IHN1cHBvcnRzIHJlc291cmNlIGxpbmsgY29udGVudCBibG9ja3MuIiksc3RydWN0dXJlZENvbnRlbnQ6dih7fSkub3B0aW9uYWwoKS5kZXNjcmliZSgiSG9zdCBzdXBwb3J0cyBzdHJ1Y3R1cmVkIGNvbnRlbnQuIil9KTt2KHttZXRob2Q6ZygidWkvbm90aWZpY2F0aW9ucy9yZXF1ZXN0LXRlYXJkb3duIikscGFyYW1zOnYoe30pLm9wdGlvbmFsKCl9KTt2YXIgVms9dih7ZXhwZXJpbWVudGFsOkQoZigpLEQoZigpLElvKCkpLmRlc2NyaWJlKCJFeHBlcmltZW50YWwgZmVhdHVyZXMga2V5ZWQgYnkgaWRlbnRpZmllci4iKSkub3B0aW9uYWwoKS5kZXNjcmliZSgiRXhwZXJpbWVudGFsIGZlYXR1cmVzIGtleWVkIGJ5IGlkZW50aWZpZXIuIiksb3BlbkxpbmtzOnYoe30pLm9wdGlvbmFsKCkuZGVzY3JpYmUoIkhvc3Qgc3VwcG9ydHMgb3BlbmluZyBleHRlcm5hbCBVUkxzLiIpLGRvd25sb2FkRmlsZTp2KHt9KS5vcHRpb25hbCgpLmRlc2NyaWJlKCJIb3N0IHN1cHBvcnRzIGZpbGUgZG93bmxvYWRzIHZpYSB1aS9kb3dubG9hZC1maWxlLiIpLHNlcnZlclRvb2xzOnYoe2xpc3RDaGFuZ2VkOksoKS5vcHRpb25hbCgpLmRlc2NyaWJlKCJIb3N0IHN1cHBvcnRzIHRvb2xzL2xpc3RfY2hhbmdlZCBub3RpZmljYXRpb25zLiIpfSkub3B0aW9uYWwoKS5kZXNjcmliZSgiSG9zdCBjYW4gcHJveHkgdG9vbCBjYWxscyB0byB0aGUgTUNQIHNlcnZlci4iKSxzZXJ2ZXJSZXNvdXJjZXM6dih7bGlzdENoYW5nZWQ6SygpLm9wdGlvbmFsKCkuZGVzY3JpYmUoIkhvc3Qgc3VwcG9ydHMgcmVzb3VyY2VzL2xpc3RfY2hhbmdlZCBub3RpZmljYXRpb25zLiIpfSkub3B0aW9uYWwoKS5kZXNjcmliZSgiSG9zdCBjYW4gcHJveHkgcmVzb3VyY2UgcmVhZHMgdG8gdGhlIE1DUCBzZXJ2ZXIuIiksbG9nZ2luZzp2KHt9KS5vcHRpb25hbCgpLmRlc2NyaWJlKCJIb3N0IGFjY2VwdHMgbG9nIG1lc3NhZ2VzLiIpLHNhbmRib3g6dih7cGVybWlzc2lvbnM6Qmwub3B0aW9uYWwoKS5kZXNjcmliZSgiUGVybWlzc2lvbnMgZ3JhbnRlZCBieSB0aGUgaG9zdCAoY2FtZXJhLCBtaWNyb3Bob25lLCBnZW9sb2NhdGlvbikuIiksY3NwOkRsLm9wdGlvbmFsKCkuZGVzY3JpYmUoIkNTUCBkb21haW5zIGFwcHJvdmVkIGJ5IHRoZSBob3N0LiIpfSkub3B0aW9uYWwoKS5kZXNjcmliZSgiU2FuZGJveCBjb25maWd1cmF0aW9uIGFwcGxpZWQgYnkgdGhlIGhvc3QuIiksdXBkYXRlTW9kZWxDb250ZXh0OlZ1Lm9wdGlvbmFsKCkuZGVzY3JpYmUoIkhvc3QgYWNjZXB0cyBjb250ZXh0IHVwZGF0ZXMgKHVpL3VwZGF0ZS1tb2RlbC1jb250ZXh0KSB0byBiZSBpbmNsdWRlZCBpbiB0aGUgbW9kZWwncyBjb250ZXh0IGZvciBmdXR1cmUgdHVybnMuIiksbWVzc2FnZTpWdS5vcHRpb25hbCgpLmRlc2NyaWJlKCJIb3N0IHN1cHBvcnRzIHJlY2VpdmluZyBjb250ZW50IG1lc3NhZ2VzICh1aS9tZXNzYWdlKSBmcm9tIHRoZSB2aWV3LiIpLHNhbXBsaW5nOnYoe3Rvb2xzOnYoe30pLm9wdGlvbmFsKCkuZGVzY3JpYmUoIkhvc3Qgc3VwcG9ydHMgdG9vbCB1c2UgdmlhIGB0b29sc2AgYW5kIGB0b29sQ2hvaWNlYCBwYXJhbWV0ZXJzLiIpfSkub3B0aW9uYWwoKS5kZXNjcmliZSgiSG9zdCBzdXBwb3J0cyBMTE0gc2FtcGxpbmcgKHNhbXBsaW5nL2NyZWF0ZU1lc3NhZ2UpIGZyb20gdGhlIHZpZXcuXG5NaXJyb3JzIHRoZSBNQ1AgYENsaWVudENhcGFiaWxpdGllcy5zYW1wbGluZ2Agc2hhcGUgc28gaG9zdHMgY2FuIHBhc3MgaXQgdGhyb3VnaC4iKX0pLEprPXYoe2V4cGVyaW1lbnRhbDpEKGYoKSxEKGYoKSxJbygpKS5kZXNjcmliZSgiRXhwZXJpbWVudGFsIGZlYXR1cmVzIGtleWVkIGJ5IGlkZW50aWZpZXIuIikpLm9wdGlvbmFsKCkuZGVzY3JpYmUoIkV4cGVyaW1lbnRhbCBmZWF0dXJlcyBrZXllZCBieSBpZGVudGlmaWVyLiIpLHRvb2xzOnYoe2xpc3RDaGFuZ2VkOksoKS5vcHRpb25hbCgpLmRlc2NyaWJlKCJBcHAgc3VwcG9ydHMgdG9vbHMvbGlzdF9jaGFuZ2VkIG5vdGlmaWNhdGlvbnMuIil9KS5vcHRpb25hbCgpLmRlc2NyaWJlKCJBcHAgZXhwb3NlcyBNQ1Atc3R5bGUgdG9vbHMgdGhhdCB0aGUgaG9zdCBjYW4gY2FsbC4iKSxhdmFpbGFibGVEaXNwbGF5TW9kZXM6RShSbikub3B0aW9uYWwoKS5kZXNjcmliZSgiRGlzcGxheSBtb2RlcyB0aGUgYXBwIHN1cHBvcnRzLiIpfSk7dih7bWV0aG9kOmcoInVpL25vdGlmaWNhdGlvbnMvaW5pdGlhbGl6ZWQiKSxwYXJhbXM6dih7fSkub3B0aW9uYWwoKX0pO3Yoe2NzcDpEbC5vcHRpb25hbCgpLmRlc2NyaWJlKCJDb250ZW50IFNlY3VyaXR5IFBvbGljeSBjb25maWd1cmF0aW9uIGZvciBVSSByZXNvdXJjZXMuIikscGVybWlzc2lvbnM6Qmwub3B0aW9uYWwoKS5kZXNjcmliZSgiU2FuZGJveCBwZXJtaXNzaW9ucyByZXF1ZXN0ZWQgYnkgdGhlIFVJIHJlc291cmNlLiIpLGRvbWFpbjpmKCkub3B0aW9uYWwoKS5kZXNjcmliZShgRGVkaWNhdGVkIG9yaWdpbiBmb3IgdmlldyBzYW5kYm94LgoKVXNlZnVsIHdoZW4gdmlld3MgbmVlZCBzdGFibGUsIGRlZGljYXRlZCBvcmlnaW5zIGZvciBPQXV0aCBjYWxsYmFja3MsIENPUlMgcG9saWNpZXMsIG9yIEFQSSBrZXkgYWxsb3dsaXN0cy4KCioqSG9zdC1kZXBlbmRlbnQ6KiogVGhlIGZvcm1hdCBhbmQgdmFsaWRhdGlvbiBydWxlcyBmb3IgdGhpcyBmaWVsZCBhcmUgZGV0ZXJtaW5lZCBieSBlYWNoIGhvc3QuIFNlcnZlcnMgTVVTVCBjb25zdWx0IGhvc3Qtc3BlY2lmaWMgZG9jdW1lbnRhdGlvbiBmb3IgdGhlIGV4cGVjdGVkIGRvbWFpbiBmb3JtYXQuIENvbW1vbiBwYXR0ZXJucyBpbmNsdWRlOgotIEhhc2gtYmFzZWQgc3ViZG9tYWlucyAoZS5nLiwgXGB7aGFzaH0uY2xhdWRlbWNwY29udGVudC5jb21cYCkKLSBVUkwtZGVyaXZlZCBzdWJkb21haW5zIChlLmcuLCBcYHd3dy1leGFtcGxlLWNvbS5vYWl1c2VyY29udGVudC5jb21cYCkKCklmIG9taXR0ZWQsIGhvc3QgdXNlcyBkZWZhdWx0IHNhbmRib3ggb3JpZ2luICh0eXBpY2FsbHkgcGVyLWNvbnZlcnNhdGlvbikuYCkscHJlZmVyc0JvcmRlcjpLKCkub3B0aW9uYWwoKS5kZXNjcmliZShgVmlzdWFsIGJvdW5kYXJ5IHByZWZlcmVuY2UgLSB0cnVlIGlmIHZpZXcgcHJlZmVycyBhIHZpc2libGUgYm9yZGVyLgoKQm9vbGVhbiByZXF1ZXN0aW5nIHdoZXRoZXIgYSB2aXNpYmxlIGJvcmRlciBhbmQgYmFja2dyb3VuZCBpcyBwcm92aWRlZCBieSB0aGUgaG9zdC4gU3BlY2lmeWluZyBhbiBleHBsaWNpdCB2YWx1ZSBmb3IgdGhpcyBpcyByZWNvbW1lbmRlZCBiZWNhdXNlIGhvc3RzJyBkZWZhdWx0cyBtYXkgdmFyeS4KCi0gXGB0cnVlXGA6IHJlcXVlc3QgdmlzaWJsZSBib3JkZXIgKyBiYWNrZ3JvdW5kCi0gXGBmYWxzZVxgOiByZXF1ZXN0IG5vIHZpc2libGUgYm9yZGVyICsgYmFja2dyb3VuZAotIG9taXR0ZWQ6IGhvc3QgZGVjaWRlcyBib3JkZXJgKX0pO3Yoe21ldGhvZDpnKCJ1aS9yZXF1ZXN0LWRpc3BsYXktbW9kZSIpLHBhcmFtczp2KHttb2RlOlJuLmRlc2NyaWJlKCJUaGUgZGlzcGxheSBtb2RlIGJlaW5nIHJlcXVlc3RlZC4iKX0pfSk7dmFyIEtrPXYoe21vZGU6Um4uZGVzY3JpYmUoIlRoZSBkaXNwbGF5IG1vZGUgdGhhdCB3YXMgYWN0dWFsbHkgc2V0LiBNYXkgZGlmZmVyIGZyb20gcmVxdWVzdGVkIGlmIG5vdCBzdXBwb3J0ZWQuIil9KS5wYXNzdGhyb3VnaCgpLEdrPXEoW2coIm1vZGVsIiksZygiYXBwIildKS5kZXNjcmliZSgiVG9vbCB2aXNpYmlsaXR5IHNjb3BlIC0gd2hvIGNhbiBhY2Nlc3MgdGhlIHRvb2wuIik7dih7cmVzb3VyY2VVcmk6ZigpLm9wdGlvbmFsKCksdmlzaWJpbGl0eTpFKEdrKS5vcHRpb25hbCgpLmRlc2NyaWJlKGBXaG8gY2FuIGFjY2VzcyB0aGlzIHRvb2wuIERlZmF1bHQ6IFsibW9kZWwiLCAiYXBwIl0KLSAibW9kZWwiOiBUb29sIHZpc2libGUgdG8gYW5kIGNhbGxhYmxlIGJ5IHRoZSBhZ2VudAotICJhcHAiOiBUb29sIGNhbGxhYmxlIGJ5IHRoZSBhcHAgZnJvbSB0aGlzIHNlcnZlciBvbmx5YCksY3NwOnl0KCkub3B0aW9uYWwoKSxwZXJtaXNzaW9uczp5dCgpLm9wdGlvbmFsKCl9KTt2KHttaW1lVHlwZXM6RShmKCkpLm9wdGlvbmFsKCkuZGVzY3JpYmUoJ0FycmF5IG9mIHN1cHBvcnRlZCBNSU1FIHR5cGVzIGZvciBVSSByZXNvdXJjZXMuXG5NdXN0IGluY2x1ZGUgYCJ0ZXh0L2h0bWw7cHJvZmlsZT1tY3AtYXBwImAgZm9yIE1DUCBBcHBzIHN1cHBvcnQuJyl9KTt2KHttZXRob2Q6ZygidWkvZG93bmxvYWQtZmlsZSIpLHBhcmFtczp2KHtjb250ZW50czpFKHEoW0VmLE9mXSkpLmRlc2NyaWJlKCJSZXNvdXJjZSBjb250ZW50cyB0byBkb3dubG9hZCDigJQgZW1iZWRkZWQgKGlubGluZSBkYXRhKSBvciBsaW5rZWQgKGhvc3QgZmV0Y2hlcykuIFVzZXMgc3RhbmRhcmQgTUNQIHJlc291cmNlIHR5cGVzLiIpfSl9KTt2KHttZXRob2Q6ZygidWkvbWVzc2FnZSIpLHBhcmFtczp2KHtyb2xlOmcoInVzZXIiKS5kZXNjcmliZSgnTWVzc2FnZSByb2xlLCBjdXJyZW50bHkgb25seSAidXNlciIgaXMgc3VwcG9ydGVkLicpLGNvbnRlbnQ6RShCbykuZGVzY3JpYmUoIk1lc3NhZ2UgY29udGVudCBibG9ja3MgKHRleHQsIGltYWdlLCBldGMuKS4iKX0pfSk7dih7bWV0aG9kOmcoInVpL25vdGlmaWNhdGlvbnMvc2FuZGJveC1yZXNvdXJjZS1yZWFkeSIpLHBhcmFtczp2KHtodG1sOmYoKS5kZXNjcmliZSgiSFRNTCBjb250ZW50IHRvIGxvYWQgaW50byB0aGUgaW5uZXIgaWZyYW1lLiIpLHNhbmRib3g6ZigpLm9wdGlvbmFsKCkuZGVzY3JpYmUoIk9wdGlvbmFsIG92ZXJyaWRlIGZvciB0aGUgaW5uZXIgaWZyYW1lJ3Mgc2FuZGJveCBhdHRyaWJ1dGUuIiksY3NwOkRsLm9wdGlvbmFsKCkuZGVzY3JpYmUoIkNTUCBjb25maWd1cmF0aW9uIGZyb20gcmVzb3VyY2UgbWV0YWRhdGEuIikscGVybWlzc2lvbnM6Qmwub3B0aW9uYWwoKS5kZXNjcmliZSgiU2FuZGJveCBwZXJtaXNzaW9ucyBmcm9tIHJlc291cmNlIG1ldGFkYXRhLiIpfSl9KTt2YXIgWWs9dih7bWV0aG9kOmcoInVpL25vdGlmaWNhdGlvbnMvdG9vbC1yZXN1bHQiKSxwYXJhbXM6VXIuZGVzY3JpYmUoIlN0YW5kYXJkIE1DUCB0b29sIGV4ZWN1dGlvbiByZXN1bHQuIil9KSxxZj12KHt0b29sSW5mbzp2KHtpZDpaby5vcHRpb25hbCgpLmRlc2NyaWJlKCJKU09OLVJQQyBpZCBvZiB0aGUgdG9vbHMvY2FsbCByZXF1ZXN0LiIpLHRvb2w6TGwuZGVzY3JpYmUoIlRvb2wgZGVmaW5pdGlvbiBpbmNsdWRpbmcgbmFtZSwgaW5wdXRTY2hlbWEsIGV0Yy4iKX0pLm9wdGlvbmFsKCkuZGVzY3JpYmUoIk1ldGFkYXRhIG9mIHRoZSB0b29sIGNhbGwgdGhhdCBpbnN0YW50aWF0ZWQgdGhpcyBBcHAuIiksdGhlbWU6Tmsub3B0aW9uYWwoKS5kZXNjcmliZSgiQ3VycmVudCBjb2xvciB0aGVtZSBwcmVmZXJlbmNlLiIpLHN0eWxlczpIay5vcHRpb25hbCgpLmRlc2NyaWJlKCJTdHlsZSBjb25maWd1cmF0aW9uIGZvciB0aGVtaW5nIHRoZSBhcHAuIiksZGlzcGxheU1vZGU6Um4ub3B0aW9uYWwoKS5kZXNjcmliZSgiSG93IHRoZSBVSSBpcyBjdXJyZW50bHkgZGlzcGxheWVkLiIpLGF2YWlsYWJsZURpc3BsYXlNb2RlczpFKFJuKS5vcHRpb25hbCgpLmRlc2NyaWJlKCJEaXNwbGF5IG1vZGVzIHRoZSBob3N0IHN1cHBvcnRzLiIpLGNvbnRhaW5lckRpbWVuc2lvbnM6cShbdih7aGVpZ2h0Ok4oKS5kZXNjcmliZSgiRml4ZWQgY29udGFpbmVyIGhlaWdodCBpbiBwaXhlbHMuIil9KSx2KHttYXhIZWlnaHQ6cShbTigpLEZ0KCldKS5vcHRpb25hbCgpLmRlc2NyaWJlKCJNYXhpbXVtIGNvbnRhaW5lciBoZWlnaHQgaW4gcGl4ZWxzLiIpfSldKS5hbmQocShbdih7d2lkdGg6TigpLmRlc2NyaWJlKCJGaXhlZCBjb250YWluZXIgd2lkdGggaW4gcGl4ZWxzLiIpfSksdih7bWF4V2lkdGg6cShbTigpLEZ0KCldKS5vcHRpb25hbCgpLmRlc2NyaWJlKCJNYXhpbXVtIGNvbnRhaW5lciB3aWR0aCBpbiBwaXhlbHMuIil9KV0pKS5vcHRpb25hbCgpLmRlc2NyaWJlKGBDb250YWluZXIgZGltZW5zaW9ucy4gUmVwcmVzZW50cyB0aGUgZGltZW5zaW9ucyBvZiB0aGUgaWZyYW1lIG9yIG90aGVyCmNvbnRhaW5lciBob2xkaW5nIHRoZSBhcHAuIFNwZWNpZnkgZWl0aGVyIHdpZHRoIG9yIG1heFdpZHRoLCBhbmQgZWl0aGVyIGhlaWdodCBvciBtYXhIZWlnaHQuYCksbG9jYWxlOmYoKS5vcHRpb25hbCgpLmRlc2NyaWJlKCJVc2VyJ3MgbGFuZ3VhZ2UgYW5kIHJlZ2lvbiBwcmVmZXJlbmNlIGluIEJDUCA0NyBmb3JtYXQuIiksdGltZVpvbmU6ZigpLm9wdGlvbmFsKCkuZGVzY3JpYmUoIlVzZXIncyB0aW1lem9uZSBpbiBJQU5BIGZvcm1hdC4iKSx1c2VyQWdlbnQ6ZigpLm9wdGlvbmFsKCkuZGVzY3JpYmUoIkhvc3QgYXBwbGljYXRpb24gaWRlbnRpZmllci4iKSxwbGF0Zm9ybTpxKFtnKCJ3ZWIiKSxnKCJkZXNrdG9wIiksZygibW9iaWxlIildKS5vcHRpb25hbCgpLmRlc2NyaWJlKCJQbGF0Zm9ybSB0eXBlIGZvciByZXNwb25zaXZlIGRlc2lnbiBkZWNpc2lvbnMuIiksZGV2aWNlQ2FwYWJpbGl0aWVzOnYoe3RvdWNoOksoKS5vcHRpb25hbCgpLmRlc2NyaWJlKCJXaGV0aGVyIHRoZSBkZXZpY2Ugc3VwcG9ydHMgdG91Y2ggaW5wdXQuIiksaG92ZXI6SygpLm9wdGlvbmFsKCkuZGVzY3JpYmUoIldoZXRoZXIgdGhlIGRldmljZSBzdXBwb3J0cyBob3ZlciBpbnRlcmFjdGlvbnMuIil9KS5vcHRpb25hbCgpLmRlc2NyaWJlKCJEZXZpY2UgaW5wdXQgY2FwYWJpbGl0aWVzLiIpLHNhZmVBcmVhSW5zZXRzOnYoe3RvcDpOKCkuZGVzY3JpYmUoIlRvcCBzYWZlIGFyZWEgaW5zZXQgaW4gcGl4ZWxzLiIpLHJpZ2h0Ok4oKS5kZXNjcmliZSgiUmlnaHQgc2FmZSBhcmVhIGluc2V0IGluIHBpeGVscy4iKSxib3R0b206TigpLmRlc2NyaWJlKCJCb3R0b20gc2FmZSBhcmVhIGluc2V0IGluIHBpeGVscy4iKSxsZWZ0Ok4oKS5kZXNjcmliZSgiTGVmdCBzYWZlIGFyZWEgaW5zZXQgaW4gcGl4ZWxzLiIpfSkub3B0aW9uYWwoKS5kZXNjcmliZSgiTW9iaWxlIHNhZmUgYXJlYSBib3VuZGFyaWVzIGluIHBpeGVscy4iKX0pLnBhc3N0aHJvdWdoKCksUWs9dih7bWV0aG9kOmcoInVpL25vdGlmaWNhdGlvbnMvaG9zdC1jb250ZXh0LWNoYW5nZWQiKSxwYXJhbXM6cWYuZGVzY3JpYmUoIlBhcnRpYWwgY29udGV4dCB1cGRhdGUgY29udGFpbmluZyBvbmx5IGNoYW5nZWQgZmllbGRzLiIpfSk7dih7bWV0aG9kOmcoInVpL3VwZGF0ZS1tb2RlbC1jb250ZXh0IikscGFyYW1zOnYoe2NvbnRlbnQ6RShCbykub3B0aW9uYWwoKS5kZXNjcmliZSgiQ29udGV4dCBjb250ZW50IGJsb2NrcyAodGV4dCwgaW1hZ2UsIGV0Yy4pLiIpLHN0cnVjdHVyZWRDb250ZW50OkQoZigpLEooKS5kZXNjcmliZSgiU3RydWN0dXJlZCBjb250ZW50IGZvciBtYWNoaW5lLXJlYWRhYmxlIGNvbnRleHQgZGF0YS4iKSkub3B0aW9uYWwoKS5kZXNjcmliZSgiU3RydWN0dXJlZCBjb250ZW50IGZvciBtYWNoaW5lLXJlYWRhYmxlIGNvbnRleHQgZGF0YS4iKX0pfSk7dih7bWV0aG9kOmcoInVpL2luaXRpYWxpemUiKSxwYXJhbXM6dih7YXBwSW5mbzpEci5kZXNjcmliZSgiQXBwIGlkZW50aWZpY2F0aW9uIChuYW1lIGFuZCB2ZXJzaW9uKS4iKSxhcHBDYXBhYmlsaXRpZXM6SmsuZGVzY3JpYmUoIkZlYXR1cmVzIGFuZCBjYXBhYmlsaXRpZXMgdGhpcyBhcHAgcHJvdmlkZXMuIikscHJvdG9jb2xWZXJzaW9uOmYoKS5kZXNjcmliZSgiUHJvdG9jb2wgdmVyc2lvbiB0aGlzIGFwcCBzdXBwb3J0cy4iKX0pfSk7dmFyIFhrPXYoe3Byb3RvY29sVmVyc2lvbjpmKCkuZGVzY3JpYmUoJ05lZ290aWF0ZWQgcHJvdG9jb2wgdmVyc2lvbiBzdHJpbmcgKGUuZy4sICIyMDI1LTExLTIxIikuJyksaG9zdEluZm86RHIuZGVzY3JpYmUoIkhvc3QgYXBwbGljYXRpb24gaWRlbnRpZmljYXRpb24gYW5kIHZlcnNpb24uIiksaG9zdENhcGFiaWxpdGllczpWay5kZXNjcmliZSgiRmVhdHVyZXMgYW5kIGNhcGFiaWxpdGllcyBwcm92aWRlZCBieSB0aGUgaG9zdC4iKSxob3N0Q29udGV4dDpxZi5kZXNjcmliZSgiUmljaCBjb250ZXh0IGFib3V0IHRoZSBob3N0IGVudmlyb25tZW50LiIpfSkucGFzc3Rocm91Z2goKSxlXz17dGFyZ2V0OiJkcmFmdC0yMDIwLTEyIn07YXN5bmMgZnVuY3Rpb24gSnUoZSx0KXtsZXQgbj1lWyJ+c3RhbmRhcmQiXTtpZihuLmpzb25TY2hlbWEpcmV0dXJuIG4uanNvblNjaGVtYVt0XShlXyk7aWYobi52ZW5kb3I9PT0iem9kIil7bGV0e3o6b309YXdhaXQgSWcoKCk9PlByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PkIkKSx2b2lkIDAsaW1wb3J0Lm1ldGEudXJsKTtyZXR1cm4gby50b0pTT05TY2hlbWEoZSx7aW86dH0pfXRocm93IEVycm9yKGBTY2hlbWEgKHZlbmRvcjogJHtuLnZlbmRvcn0pIGRvZXMgbm90IGltcGxlbWVudCBTdGFuZGFyZCBKU09OIFNjaGVtYSAofnN0YW5kYXJkLmpzb25TY2hlbWEpLiBVc2UgYSBsaWJyYXJ5IHRoYXQgZG9lcyAoem9kIHY0LCBBcmtUeXBlLCBWYWxpYm90KSBvciB3cmFwIHlvdXIgc2NoZW1hIGFjY29yZGluZ2x5LmApfWFzeW5jIGZ1bmN0aW9uIEt1KGUsdCxuPSIiKXtsZXQgbz1hd2FpdCBlWyJ+c3RhbmRhcmQiXS52YWxpZGF0ZSh0KTtpZihvLmlzc3Vlcyl7bGV0IHM9by5pc3N1ZXMubWFwKHI9PntsZXQgaT1yLnBhdGg/Lm1hcChhPT50eXBlb2YgYT09Im9iamVjdCI/YS5rZXk6YSkuam9pbigiLiIpO3JldHVybiBpP2Ake2l9OiAke3IubWVzc2FnZX1gOnIubWVzc2FnZX0pLmpvaW4oIjsgIik7dGhyb3cgRXJyb3IobitzKX1yZXR1cm4gby52YWx1ZX1mdW5jdGlvbiB0XyhlKXtsZXQgdD1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7dC5zZXRBdHRyaWJ1dGUoImRhdGEtdGhlbWUiLGUpLHQuc3R5bGUuY29sb3JTY2hlbWU9ZX1mdW5jdGlvbiBuXyhlLHQ9ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KXtmb3IobGV0W24sb11vZiBPYmplY3QuZW50cmllcyhlKSlvIT09dm9pZCAwJiZ0LnN0eWxlLnNldFByb3BlcnR5KG4sbyl9ZnVuY3Rpb24gb18oZSl7aWYoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIl9fbWNwLWhvc3QtZm9udHMiKSlyZXR1cm47bGV0IHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3R5bGUiKTt0LmlkPSJfX21jcC1ob3N0LWZvbnRzIix0LnRleHRDb250ZW50PWUsZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZCh0KX1jbGFzcyBVbCBleHRlbmRzIFBre19hcHBJbmZvO19jYXBhYmlsaXRpZXM7b3B0aW9ucztfaG9zdENhcGFiaWxpdGllcztfaG9zdEluZm87X2hvc3RDb250ZXh0O19yZWdpc3RlcmVkVG9vbHM9e307X2luaXRpYWxpemVkU2VudD0hMTtfYXNzZXJ0SW5pdGlhbGl6ZWQodCl7aWYodGhpcy5faW5pdGlhbGl6ZWRTZW50KXJldHVybjtsZXQgbj1gW2V4dC1hcHBzXSBBcHAuJHt0fSgpIGNhbGxlZCBiZWZvcmUgY29ubmVjdCgpIGNvbXBsZXRlZCB0aGUgdWkvaW5pdGlhbGl6ZSBoYW5kc2hha2UuIEF3YWl0IGFwcC5jb25uZWN0KCkgYmVmb3JlIGNhbGxpbmcgdGhpcyBtZXRob2QsIG9yIG1vdmUgZGF0YSBsb2FkaW5nIHRvIGFuIG9udG9vbHJlc3VsdCBoYW5kbGVyLmA7aWYodGhpcy5vcHRpb25zPy5zdHJpY3QpdGhyb3cgRXJyb3Iobik7Y29uc29sZS53YXJuKGAke259LiBUaGlzIHdpbGwgdGhyb3cgaW4gYSBmdXR1cmUgcmVsZWFzZS5gKX1ldmVudFNjaGVtYXM9e3Rvb2xpbnB1dDpEayx0b29saW5wdXRwYXJ0aWFsOkJrLHRvb2xyZXN1bHQ6WWssdG9vbGNhbmNlbGxlZDpVayxob3N0Y29udGV4dGNoYW5nZWQ6UWt9O3N0YXRpYyBPTkVfU0hPVF9FVkVOVFM9bmV3IFNldChbInRvb2xpbnB1dCIsInRvb2xpbnB1dHBhcnRpYWwiLCJ0b29scmVzdWx0IiwidG9vbGNhbmNlbGxlZCJdKTtfZXZlckhhZExpc3RlbmVyPW5ldyBTZXQ7X2Fzc2VydEhhbmRsZXJUaW1pbmcodCl7aWYoIVVsLk9ORV9TSE9UX0VWRU5UUy5oYXModCl8fHRoaXMuX2V2ZXJIYWRMaXN0ZW5lci5oYXModCl8fCh0aGlzLl9ldmVySGFkTGlzdGVuZXIuYWRkKHQpLCF0aGlzLl9pbml0aWFsaXplZFNlbnQpKXJldHVybjtsZXQgbj1gW2V4dC1hcHBzXSAiJHtTdHJpbmcodCl9IiBoYW5kbGVyIHJlZ2lzdGVyZWQgYWZ0ZXIgY29ubmVjdCgpIGNvbXBsZXRlZCB0aGUgdWkvaW5pdGlhbGl6ZSBoYW5kc2hha2UuIFRoZSBob3N0IG1heSBoYXZlIGFscmVhZHkgc2VudCB0aGlzIG5vdGlmaWNhdGlvbi4gUmVnaXN0ZXIgaGFuZGxlcnMgYmVmb3JlIGNhbGxpbmcgYXBwLmNvbm5lY3QoKS5gO2lmKHRoaXMub3B0aW9ucz8uc3RyaWN0KXRocm93IEVycm9yKG4pO2NvbnNvbGUud2FybihuKX1zZXRFdmVudEhhbmRsZXIodCxuKXtuJiZ0aGlzLl9hc3NlcnRIYW5kbGVyVGltaW5nKHQpLHN1cGVyLnNldEV2ZW50SGFuZGxlcih0LG4pfWFkZEV2ZW50TGlzdGVuZXIodCxuKXt0aGlzLl9hc3NlcnRIYW5kbGVyVGltaW5nKHQpLHN1cGVyLmFkZEV2ZW50TGlzdGVuZXIodCxuKX1vbkV2ZW50RGlzcGF0Y2godCxuKXt0PT09Imhvc3Rjb250ZXh0Y2hhbmdlZCImJih0aGlzLl9ob3N0Q29udGV4dD17Li4udGhpcy5faG9zdENvbnRleHQsLi4ubn0pfWNvbnN0cnVjdG9yKHQsbj17fSxvPXthdXRvUmVzaXplOiEwfSl7c3VwZXIobyksdGhpcy5fYXBwSW5mbz10LHRoaXMuX2NhcGFiaWxpdGllcz1uLHRoaXMub3B0aW9ucz1vLG8uYWxsb3dVbnNhZmVFdmFsfHxkZSh7aml0bGVzczohMH0pLHRoaXMuc2V0UmVxdWVzdEhhbmRsZXIoQnIscz0+KGNvbnNvbGUubG9nKCJSZWNlaXZlZCBwaW5nOiIscy5wYXJhbXMpLHt9KSksdGhpcy5zZXRFdmVudEhhbmRsZXIoImhvc3Rjb250ZXh0Y2hhbmdlZCIsdm9pZCAwKX1yZWdpc3RlckNhcGFiaWxpdGllcyh0KXtpZih0aGlzLnRyYW5zcG9ydCl0aHJvdyBFcnJvcigiQ2Fubm90IHJlZ2lzdGVyIGNhcGFiaWxpdGllcyBhZnRlciB0cmFuc3BvcnQgaXMgZXN0YWJsaXNoZWQiKTt0aGlzLl9jYXBhYmlsaXRpZXM9Q2sodGhpcy5fY2FwYWJpbGl0aWVzLHQpfXJlZ2lzdGVyVG9vbCh0LG4sbyl7aWYodGhpcy5fcmVnaXN0ZXJlZFRvb2xzW3RdKXRocm93IEVycm9yKGBUb29sICR7dH0gaXMgYWxyZWFkeSByZWdpc3RlcmVkYCk7bGV0IHM9dGhpcyxyPSgpPT57cy5faW5pdGlhbGl6ZWRTZW50JiZzLl9jYXBhYmlsaXRpZXMudG9vbHM/Lmxpc3RDaGFuZ2VkJiZzLnNlbmRUb29sTGlzdENoYW5nZWQoKX0saT1uLmlucHV0U2NoZW1hIT09dm9pZCAwLGE9e3RpdGxlOm4udGl0bGUsZGVzY3JpcHRpb246bi5kZXNjcmlwdGlvbixpbnB1dFNjaGVtYTpuLmlucHV0U2NoZW1hLG91dHB1dFNjaGVtYTpuLm91dHB1dFNjaGVtYSxhbm5vdGF0aW9uczpuLmFubm90YXRpb25zLF9tZXRhOm4uX21ldGEsZW5hYmxlZDohMCxlbmFibGUoKXt0aGlzLmVuYWJsZWQ9ITAscigpfSxkaXNhYmxlKCl7dGhpcy5lbmFibGVkPSExLHIoKX0sdXBkYXRlKGQpe09iamVjdC5hc3NpZ24odGhpcyxkKSxyKCl9LHJlbW92ZSgpe3MuX3JlZ2lzdGVyZWRUb29sc1t0XT09PWEmJihkZWxldGUgcy5fcmVnaXN0ZXJlZFRvb2xzW3RdLHIoKSl9LGhhbmRsZXI6YXN5bmMoZCx1KT0+e2lmKCFhLmVuYWJsZWQpdGhyb3cgRXJyb3IoYFRvb2wgJHt0fSBpcyBkaXNhYmxlZGApO2xldCBwO2lmKGkpe2xldCBoPWEuaW5wdXRTY2hlbWEsYj1oP2F3YWl0IEt1KGgsZD8/e30sYEludmFsaWQgaW5wdXQgZm9yIHRvb2wgJHt0fTogYCk6ZD8/e307cD1hd2FpdCBvKGIsdSl9ZWxzZSBwPWF3YWl0IG8odSk7cmV0dXJuIGEub3V0cHV0U2NoZW1hJiYhcC5pc0Vycm9yJiYocC5zdHJ1Y3R1cmVkQ29udGVudD1hd2FpdCBLdShhLm91dHB1dFNjaGVtYSxwLnN0cnVjdHVyZWRDb250ZW50LGBJbnZhbGlkIG91dHB1dCBmb3IgdG9vbCAke3R9OiBgKSkscH19O3JldHVybiB0aGlzLl9yZWdpc3RlcmVkVG9vbHNbdF09YSwhdGhpcy5fY2FwYWJpbGl0aWVzLnRvb2xzJiYhdGhpcy50cmFuc3BvcnQmJnRoaXMucmVnaXN0ZXJDYXBhYmlsaXRpZXMoe3Rvb2xzOntsaXN0Q2hhbmdlZDohMH19KSx0aGlzLmVuc3VyZVRvb2xIYW5kbGVyc0luaXRpYWxpemVkKCkscigpLGF9X3Rvb2xIYW5kbGVyc0luaXRpYWxpemVkPSExO2Vuc3VyZVRvb2xIYW5kbGVyc0luaXRpYWxpemVkKCl7dGhpcy5fdG9vbEhhbmRsZXJzSW5pdGlhbGl6ZWR8fCh0aGlzLl90b29sSGFuZGxlcnNJbml0aWFsaXplZD0hMCx0aGlzLm9uY2FsbHRvb2w9YXN5bmModCxuKT0+e2xldCBvPXRoaXMuX3JlZ2lzdGVyZWRUb29sc1t0Lm5hbWVdO2lmKCFvKXRocm93IEVycm9yKGBUb29sICR7dC5uYW1lfSBub3QgZm91bmRgKTtyZXR1cm4gby5oYW5kbGVyKHQuYXJndW1lbnRzLG4pfSx0aGlzLm9ubGlzdHRvb2xzPWFzeW5jKHQsbik9Pih7dG9vbHM6YXdhaXQgUHJvbWlzZS5hbGwoT2JqZWN0LmVudHJpZXModGhpcy5fcmVnaXN0ZXJlZFRvb2xzKS5maWx0ZXIoKFtvLHNdKT0+cy5lbmFibGVkKS5tYXAoYXN5bmMoW28sc10pPT57bGV0IHI9e25hbWU6byx0aXRsZTpzLnRpdGxlLGRlc2NyaXB0aW9uOnMuZGVzY3JpcHRpb24saW5wdXRTY2hlbWE6cy5pbnB1dFNjaGVtYT9hd2FpdCBKdShzLmlucHV0U2NoZW1hLCJpbnB1dCIpOnt0eXBlOiJvYmplY3QiLHByb3BlcnRpZXM6e319fTtyZXR1cm4gcy5vdXRwdXRTY2hlbWEmJihyLm91dHB1dFNjaGVtYT1hd2FpdCBKdShzLm91dHB1dFNjaGVtYSwib3V0cHV0IikpLHMuYW5ub3RhdGlvbnMmJihyLmFubm90YXRpb25zPXMuYW5ub3RhdGlvbnMpLHMuX21ldGEmJihyLl9tZXRhPXMuX21ldGEpLHJ9KSl9KSl9YXN5bmMgc2VuZFRvb2xMaXN0Q2hhbmdlZCh0PXt9KXt0aGlzLl9hc3NlcnRJbml0aWFsaXplZCgic2VuZFRvb2xMaXN0Q2hhbmdlZCIpLGF3YWl0IHRoaXMubm90aWZpY2F0aW9uKHttZXRob2Q6Im5vdGlmaWNhdGlvbnMvdG9vbHMvbGlzdF9jaGFuZ2VkIixwYXJhbXM6dH0pfWdldEhvc3RDYXBhYmlsaXRpZXMoKXtyZXR1cm4gdGhpcy5faG9zdENhcGFiaWxpdGllc31nZXRIb3N0VmVyc2lvbigpe3JldHVybiB0aGlzLl9ob3N0SW5mb31nZXRIb3N0Q29udGV4dCgpe3JldHVybiB0aGlzLl9ob3N0Q29udGV4dH1nZXQgb250b29saW5wdXQoKXtyZXR1cm4gdGhpcy5nZXRFdmVudEhhbmRsZXIoInRvb2xpbnB1dCIpfXNldCBvbnRvb2xpbnB1dCh0KXt0aGlzLnNldEV2ZW50SGFuZGxlcigidG9vbGlucHV0Iix0KX1nZXQgb250b29saW5wdXRwYXJ0aWFsKCl7cmV0dXJuIHRoaXMuZ2V0RXZlbnRIYW5kbGVyKCJ0b29saW5wdXRwYXJ0aWFsIil9c2V0IG9udG9vbGlucHV0cGFydGlhbCh0KXt0aGlzLnNldEV2ZW50SGFuZGxlcigidG9vbGlucHV0cGFydGlhbCIsdCl9Z2V0IG9udG9vbHJlc3VsdCgpe3JldHVybiB0aGlzLmdldEV2ZW50SGFuZGxlcigidG9vbHJlc3VsdCIpfXNldCBvbnRvb2xyZXN1bHQodCl7dGhpcy5zZXRFdmVudEhhbmRsZXIoInRvb2xyZXN1bHQiLHQpfWdldCBvbnRvb2xjYW5jZWxsZWQoKXtyZXR1cm4gdGhpcy5nZXRFdmVudEhhbmRsZXIoInRvb2xjYW5jZWxsZWQiKX1zZXQgb250b29sY2FuY2VsbGVkKHQpe3RoaXMuc2V0RXZlbnRIYW5kbGVyKCJ0b29sY2FuY2VsbGVkIix0KX1nZXQgb25ob3N0Y29udGV4dGNoYW5nZWQoKXtyZXR1cm4gdGhpcy5nZXRFdmVudEhhbmRsZXIoImhvc3Rjb250ZXh0Y2hhbmdlZCIpfXNldCBvbmhvc3Rjb250ZXh0Y2hhbmdlZCh0KXt0aGlzLnNldEV2ZW50SGFuZGxlcigiaG9zdGNvbnRleHRjaGFuZ2VkIix0KX1fb250ZWFyZG93bjtnZXQgb250ZWFyZG93bigpe3JldHVybiB0aGlzLl9vbnRlYXJkb3dufXNldCBvbnRlYXJkb3duKHQpe3RoaXMud2FybklmUmVxdWVzdEhhbmRsZXJSZXBsYWNlZCgib250ZWFyZG93biIsdGhpcy5fb250ZWFyZG93bix0KSx0aGlzLl9vbnRlYXJkb3duPXQsdGhpcy5yZXBsYWNlUmVxdWVzdEhhbmRsZXIoV2ssKG4sbyk9PntpZighdGhpcy5fb250ZWFyZG93bil0aHJvdyBFcnJvcigiTm8gb250ZWFyZG93biBoYW5kbGVyIHNldCIpO3JldHVybiB0aGlzLl9vbnRlYXJkb3duKG4ucGFyYW1zLG8pfSl9X29uY2FsbHRvb2w7Z2V0IG9uY2FsbHRvb2woKXtyZXR1cm4gdGhpcy5fb25jYWxsdG9vbH1zZXQgb25jYWxsdG9vbCh0KXt0aGlzLndhcm5JZlJlcXVlc3RIYW5kbGVyUmVwbGFjZWQoIm9uY2FsbHRvb2wiLHRoaXMuX29uY2FsbHRvb2wsdCksdGhpcy5fb25jYWxsdG9vbD10LHRoaXMucmVwbGFjZVJlcXVlc3RIYW5kbGVyKE5mLChuLG8pPT57aWYoIXRoaXMuX29uY2FsbHRvb2wpdGhyb3cgRXJyb3IoIk5vIG9uY2FsbHRvb2wgaGFuZGxlciBzZXQiKTtyZXR1cm4gdGhpcy5fb25jYWxsdG9vbChuLnBhcmFtcyxvKX0pfV9vbmxpc3R0b29scztnZXQgb25saXN0dG9vbHMoKXtyZXR1cm4gdGhpcy5fb25saXN0dG9vbHN9c2V0IG9ubGlzdHRvb2xzKHQpe3RoaXMud2FybklmUmVxdWVzdEhhbmRsZXJSZXBsYWNlZCgib25saXN0dG9vbHMiLHRoaXMuX29ubGlzdHRvb2xzLHQpLHRoaXMuX29ubGlzdHRvb2xzPXQsdGhpcy5yZXBsYWNlUmVxdWVzdEhhbmRsZXIoUmYsKG4sbyk9PntpZighdGhpcy5fb25saXN0dG9vbHMpdGhyb3cgRXJyb3IoIk5vIG9ubGlzdHRvb2xzIGhhbmRsZXIgc2V0Iik7cmV0dXJuIHRoaXMuX29ubGlzdHRvb2xzKG4ucGFyYW1zLG8pfSl9YXNzZXJ0Q2FwYWJpbGl0eUZvck1ldGhvZCh0KXtzd2l0Y2godCl7Y2FzZSJzYW1wbGluZy9jcmVhdGVNZXNzYWdlIjppZighdGhpcy5faG9zdENhcGFiaWxpdGllcz8uc2FtcGxpbmcpdGhyb3cgRXJyb3IoYEhvc3QgZG9lcyBub3Qgc3VwcG9ydCBzYW1wbGluZyAocmVxdWlyZWQgZm9yICR7dH0pYCk7YnJlYWt9fWFzc2VydFJlcXVlc3RIYW5kbGVyQ2FwYWJpbGl0eSh0KXtzd2l0Y2godCl7Y2FzZSJ0b29scy9jYWxsIjpjYXNlInRvb2xzL2xpc3QiOmlmKCF0aGlzLl9jYXBhYmlsaXRpZXMudG9vbHMpdGhyb3cgRXJyb3IoYENsaWVudCBkb2VzIG5vdCBzdXBwb3J0IHRvb2wgY2FwYWJpbGl0eSAocmVxdWlyZWQgZm9yICR7dH0pYCk7cmV0dXJuO2Nhc2UicGluZyI6Y2FzZSJ1aS9yZXNvdXJjZS10ZWFyZG93biI6cmV0dXJuO2RlZmF1bHQ6dGhyb3cgRXJyb3IoYE5vIGhhbmRsZXIgZm9yIG1ldGhvZCAke3R9IHJlZ2lzdGVyZWRgKX19YXNzZXJ0Tm90aWZpY2F0aW9uQ2FwYWJpbGl0eSh0KXt9YXNzZXJ0VGFza0NhcGFiaWxpdHkodCl7dGhyb3cgRXJyb3IoIlRhc2tzIGFyZSBub3Qgc3VwcG9ydGVkIGluIE1DUCBBcHBzIil9YXNzZXJ0VGFza0hhbmRsZXJDYXBhYmlsaXR5KHQpe3Rocm93IEVycm9yKCJUYXNrIGhhbmRsZXJzIGFyZSBub3Qgc3VwcG9ydGVkIGluIE1DUCBBcHBzIil9YXN5bmMgY2FsbFNlcnZlclRvb2wodCxuKXtpZih0aGlzLl9hc3NlcnRJbml0aWFsaXplZCgiY2FsbFNlcnZlclRvb2wiKSx0eXBlb2YgdD09InN0cmluZyIpdGhyb3cgRXJyb3IoYGNhbGxTZXJ2ZXJUb29sKCkgZXhwZWN0cyBhbiBvYmplY3QgYXMgaXRzIGZpcnN0IGFyZ3VtZW50LCBidXQgcmVjZWl2ZWQgYSBzdHJpbmcgKCIke3R9IikuIERpZCB5b3UgbWVhbjogY2FsbFNlcnZlclRvb2woeyBuYW1lOiAiJHt0fSIsIGFyZ3VtZW50czogeyAuLi4gfSB9KT9gKTtyZXR1cm4gYXdhaXQgdGhpcy5yZXF1ZXN0KHttZXRob2Q6InRvb2xzL2NhbGwiLHBhcmFtczp0fSxVcix7b25wcm9ncmVzczooKT0+e30scmVzZXRUaW1lb3V0T25Qcm9ncmVzczohMCwuLi5ufSl9YXN5bmMgcmVhZFNlcnZlclJlc291cmNlKHQsbil7cmV0dXJuIHRoaXMuX2Fzc2VydEluaXRpYWxpemVkKCJyZWFkU2VydmVyUmVzb3VyY2UiKSxhd2FpdCB0aGlzLnJlcXVlc3Qoe21ldGhvZDoicmVzb3VyY2VzL3JlYWQiLHBhcmFtczp0fSxQZixuKX1hc3luYyBsaXN0U2VydmVyUmVzb3VyY2VzKHQsbil7cmV0dXJuIHRoaXMuX2Fzc2VydEluaXRpYWxpemVkKCJsaXN0U2VydmVyUmVzb3VyY2VzIiksYXdhaXQgdGhpcy5yZXF1ZXN0KHttZXRob2Q6InJlc291cmNlcy9saXN0IixwYXJhbXM6dH0sQ2Ysbil9YXN5bmMgY3JlYXRlU2FtcGxpbmdNZXNzYWdlKHQsbil7dGhpcy5fYXNzZXJ0SW5pdGlhbGl6ZWQoImNyZWF0ZVNhbXBsaW5nTWVzc2FnZSIpO2xldCBvPXQudG9vbHM/amY6TWY7cmV0dXJuIGF3YWl0IHRoaXMucmVxdWVzdCh7bWV0aG9kOiJzYW1wbGluZy9jcmVhdGVNZXNzYWdlIixwYXJhbXM6dH0sbyxuKX1zZW5kTWVzc2FnZSh0LG4pe3JldHVybiB0aGlzLl9hc3NlcnRJbml0aWFsaXplZCgic2VuZE1lc3NhZ2UiKSx0aGlzLnJlcXVlc3Qoe21ldGhvZDoidWkvbWVzc2FnZSIscGFyYW1zOnR9LExrLG4pfXNlbmRMb2codCl7cmV0dXJuIHRoaXMubm90aWZpY2F0aW9uKHttZXRob2Q6Im5vdGlmaWNhdGlvbnMvbWVzc2FnZSIscGFyYW1zOnR9KX11cGRhdGVNb2RlbENvbnRleHQodCxuKXtyZXR1cm4gdGhpcy5fYXNzZXJ0SW5pdGlhbGl6ZWQoInVwZGF0ZU1vZGVsQ29udGV4dCIpLHRoaXMucmVxdWVzdCh7bWV0aG9kOiJ1aS91cGRhdGUtbW9kZWwtY29udGV4dCIscGFyYW1zOnR9LFRsLG4pfW9wZW5MaW5rKHQsbil7cmV0dXJuIHRoaXMuX2Fzc2VydEluaXRpYWxpemVkKCJvcGVuTGluayIpLHRoaXMucmVxdWVzdCh7bWV0aG9kOiJ1aS9vcGVuLWxpbmsiLHBhcmFtczp0fSxqayxuKX1zZW5kT3Blbkxpbms9dGhpcy5vcGVuTGluaztkb3dubG9hZEZpbGUodCxuKXtyZXR1cm4gdGhpcy5fYXNzZXJ0SW5pdGlhbGl6ZWQoImRvd25sb2FkRmlsZSIpLHRoaXMucmVxdWVzdCh7bWV0aG9kOiJ1aS9kb3dubG9hZC1maWxlIixwYXJhbXM6dH0scWssbil9cmVxdWVzdFRlYXJkb3duKHQ9e30pe3JldHVybiB0aGlzLm5vdGlmaWNhdGlvbih7bWV0aG9kOiJ1aS9ub3RpZmljYXRpb25zL3JlcXVlc3QtdGVhcmRvd24iLHBhcmFtczp0fSl9cmVxdWVzdERpc3BsYXlNb2RlKHQsbil7cmV0dXJuIHRoaXMuX2Fzc2VydEluaXRpYWxpemVkKCJyZXF1ZXN0RGlzcGxheU1vZGUiKSx0aGlzLnJlcXVlc3Qoe21ldGhvZDoidWkvcmVxdWVzdC1kaXNwbGF5LW1vZGUiLHBhcmFtczp0fSxLayxuKX1zZW5kU2l6ZUNoYW5nZWQodCl7cmV0dXJuIHRoaXMubm90aWZpY2F0aW9uKHttZXRob2Q6InVpL25vdGlmaWNhdGlvbnMvc2l6ZS1jaGFuZ2VkIixwYXJhbXM6dH0pfXNldHVwU2l6ZUNoYW5nZWROb3RpZmljYXRpb25zKCl7bGV0IHQ9ITEsbj0wLG89MCxzPSgpPT57dHx8KHQ9ITAscmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpPT57dD0hMTtsZXQgaT1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsYT1pLnN0eWxlLmhlaWdodDtpLnN0eWxlLmhlaWdodD0ibWF4LWNvbnRlbnQiO2xldCBkPU1hdGguY2VpbChpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodCk7aS5zdHlsZS5oZWlnaHQ9YTtsZXQgdT1NYXRoLmNlaWwod2luZG93LmlubmVyV2lkdGgpOyh1IT09bnx8ZCE9PW8pJiYobj11LG89ZCx0aGlzLnNlbmRTaXplQ2hhbmdlZCh7d2lkdGg6dSxoZWlnaHQ6ZH0pKX0pKX07cygpO2xldCByPW5ldyBSZXNpemVPYnNlcnZlcihzKTtyZXR1cm4gci5vYnNlcnZlKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCksci5vYnNlcnZlKGRvY3VtZW50LmJvZHkpLCgpPT5yLmRpc2Nvbm5lY3QoKX1hc3luYyBjb25uZWN0KHQ9bmV3IFJrKHdpbmRvdy5wYXJlbnQsd2luZG93LnBhcmVudCksbil7aWYodGhpcy50cmFuc3BvcnQpdGhyb3cgRXJyb3IoIkFwcCBpcyBhbHJlYWR5IGNvbm5lY3RlZC4gQ2FsbCBjbG9zZSgpIGJlZm9yZSBjb25uZWN0aW5nIGFnYWluLiIpO3RoaXMuX2luaXRpYWxpemVkU2VudD0hMSxhd2FpdCBzdXBlci5jb25uZWN0KHQpO3RyeXtsZXQgbz1hd2FpdCB0aGlzLnJlcXVlc3Qoe21ldGhvZDoidWkvaW5pdGlhbGl6ZSIscGFyYW1zOnthcHBDYXBhYmlsaXRpZXM6dGhpcy5fY2FwYWJpbGl0aWVzLGFwcEluZm86dGhpcy5fYXBwSW5mbyxwcm90b2NvbFZlcnNpb246RWt9fSxYayxuKTtpZihvPT09dm9pZCAwKXRocm93IEVycm9yKGBTZXJ2ZXIgc2VudCBpbnZhbGlkIGluaXRpYWxpemUgcmVzdWx0OiAke299YCk7dGhpcy5faG9zdENhcGFiaWxpdGllcz1vLmhvc3RDYXBhYmlsaXRpZXMsdGhpcy5faG9zdEluZm89by5ob3N0SW5mbyx0aGlzLl9ob3N0Q29udGV4dD1vLmhvc3RDb250ZXh0LGF3YWl0IHRoaXMubm90aWZpY2F0aW9uKHttZXRob2Q6InVpL25vdGlmaWNhdGlvbnMvaW5pdGlhbGl6ZWQifSksdGhpcy5faW5pdGlhbGl6ZWRTZW50PSEwLHRoaXMub3B0aW9ucz8uYXV0b1Jlc2l6ZSYmdGhpcy5zZXR1cFNpemVDaGFuZ2VkTm90aWZpY2F0aW9ucygpfWNhdGNoKG8pe3Rocm93IHRoaXMuY2xvc2UoKSxvfX19bGV0IEd1PSIiO2NvbnN0IExmPShlLHQsbj1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpPT57aWYoIWUpcmV0dXJuOyhlLnRoZW1lPT09ImxpZ2h0Inx8ZS50aGVtZT09PSJkYXJrIikmJnQuYXBwbHlEb2N1bWVudFRoZW1lKGUudGhlbWUpO2NvbnN0IG89ZS5zdHlsZXM/LnZhcmlhYmxlcztvJiZ0eXBlb2Ygbz09Im9iamVjdCImJnQuYXBwbHlIb3N0U3R5bGVWYXJpYWJsZXMobyk7Y29uc3Qgcz1lLnN0eWxlcz8uY3NzPy5mb250czt0eXBlb2Ygcz09InN0cmluZyImJnMmJnMhPT1HdSYmKHQuYXBwbHlIb3N0Rm9udHMocyksR3U9cyk7Y29uc3Qgcj1lLnNhZmVBcmVhSW5zZXRzO2lmKHIpZm9yKGNvbnN0IGkgb2ZbInRvcCIsInJpZ2h0IiwiYm90dG9tIiwibGVmdCJdKXtjb25zdCBhPU51bWJlcihyW2ldPz8wKTtuLnN0eWxlLnNldFByb3BlcnR5KGAtLWluc2V0LSR7aX1gLGAke051bWJlci5pc0Zpbml0ZShhKSYmYT4wP2E6MH1weGApfX0sRGY9ZT0+ZS5yZXBsYWNlKC9bJjw+IiddL2csdD0+KHsiJiI6IiZhbXA7IiwiPCI6IiZsdDsiLCI+IjoiJmd0OyIsJyInOiImcXVvdDsiLCInIjoiJiMzOTsifSlbdF0pLHNfPSc8c3ZnIHZpZXdCb3g9IjAgMCAxNiAxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGQ9Ik0xMCAzLjUgNS41IDggMTAgMTIuNSIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS13aWR0aD0iMS44IiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz48L3N2Zz4nLHJfPSc8c3ZnIHZpZXdCb3g9IjAgMCAxNiAxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGQ9Ik02IDMuNSAxMC41IDggNiAxMi41IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIxLjgiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPjwvc3ZnPicsaV89Jzxzdmcgdmlld0JveD0iMCAwIDE2IDE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZD0iTTMuNSA2IDggMTAuNSAxMi41IDYiIGZpbGw9Im5vbmUiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjEuOCIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+PC9zdmc+JyxhXz0nPHN2ZyB2aWV3Qm94PSIwIDAgMTYgMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBkPSJNOS41IDIuNWg0djRNNi41IDEzLjVoLTR2LTRNMTMuNSAyLjUgOSA3TTIuNSAxMy41IDcgOSIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS13aWR0aD0iMS42IiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz48L3N2Zz4nLGNfPWU9Pntjb25zdCB0PU1hdGgubWF4KDAsTWF0aC5mbG9vcihlLnRvdGFsKSksbj1NYXRoLm1heCgwLE1hdGguZmxvb3IoZS5mcm9tKSksbz1NYXRoLm1heCgwLE1hdGguZmxvb3IoZS5jb3VudCkpLHM9bj4wLHI9bitvPHQ7aWYoIXMmJiFyKXJldHVybiIiO2NvbnN0IGk9ZS5ub3VuP2AgJHtEZihlLm5vdW4pfWA6IiIsYT1vP2Ake24rMX3igJMke24rb30gb2YgJHt0fWA6YDAgb2YgJHt0fWA7cmV0dXJuYDxuYXYgY2xhc3M9ImNrLXBhZ2VyIiBhcmlhLWxhYmVsPSJQYWdlcyI+PGJ1dHRvbiBjbGFzcz0iY2stcGFnZXItYnRuIiB0eXBlPSJidXR0b24iICR7ZS5wcmV2fSR7cz8iIjoiIGRpc2FibGVkIn0gYXJpYS1sYWJlbD0iUHJldmlvdXMke2l9Ij4ke3NffTxzcGFuPlByZXZpb3VzPC9zcGFuPjwvYnV0dG9uPjxzcGFuIGNsYXNzPSJjay1wYWdlci1uIj4ke2F9PC9zcGFuPjxidXR0b24gY2xhc3M9ImNrLXBhZ2VyLWJ0biIgdHlwZT0iYnV0dG9uIiAke2UubmV4dH0ke3I/IiI6IiBkaXNhYmxlZCJ9IGFyaWEtbGFiZWw9Ik5leHQke2l9Ij48c3Bhbj5OZXh0PC9zcGFuPiR7cl99PC9idXR0b24+PC9uYXY+JHtlLmFsbD9gPGJ1dHRvbiBjbGFzcz0iY2stcGFnZXItYWxsIiB0eXBlPSJidXR0b24iICR7ZS5hbGx9PjxzcGFuPlZpZXcgYWxsICR7dH08L3NwYW4+JHthX308L2J1dHRvbj5gOiIifWB9LGxfPShlLHQpPT5gPGJ1dHRvbiBjbGFzcz0iY2stcGFnZXItYWxsIiB0eXBlPSJidXR0b24iICR7dH0+PHNwYW4gZGF0YS1sYWJlbD4ke0RmKGUpfTwvc3Bhbj4ke2lffTwvYnV0dG9uPmAsTWU9bmV3IFVsKHtuYW1lOiJob3RlbC1zdG9yZWZyb250Iix2ZXJzaW9uOiIxLjAuMCJ9LHtvcGVuTGlua3M6e30sYXZhaWxhYmxlRGlzcGxheU1vZGVzOlsiaW5saW5lIiwiZnVsbHNjcmVlbiJdfSksQmY9e2FwcGx5RG9jdW1lbnRUaGVtZTp0XyxhcHBseUhvc3RTdHlsZVZhcmlhYmxlczpuXyxhcHBseUhvc3RGb250czpvX30sVj1lPT5kb2N1bWVudC5nZXRFbGVtZW50QnlJZChlKSxsPWU9PlN0cmluZyhlPz8iIikucmVwbGFjZSgvWyY8PiInXS9nLHQ9PnQ9PT0iJiI/IiZhbXA7Ijp0PT09IjwiPyImbHQ7Ijp0PT09Ij4iPyImZ3Q7Ijp0PT09JyInPyImcXVvdDsiOiImIzM5OyIpO2xldCBEZT0iIixmcz0iIixnaT0iIjtjb25zdCB1Xz0oKT0+ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmRhdGFzZXQudGhlbWU9PT0iZGFyayIsRmw9KCk9Pntjb25zdCBlPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJicmFuZCIpO2lmKCFlfHwhZnMpcmV0dXJuO2NvbnN0IHQ9dV8oKSYmISFnaSxuPXQ/Z2k6ZnM7ZS5nZXRBdHRyaWJ1dGUoInNyYyIpIT09biYmKGUuc3JjPW4pLGUuY2xhc3NMaXN0LnRvZ2dsZSgiZGFyay1hcnQiLHQpfTtsZXQgWHI9ITEsYmk9IiIsdmk9IiIsSGw9e30sV2w9ITEsVWY9IiIsUz17Y2hlY2tJbjoiIixjaGVja091dDoiIixndWVzdHM6Mn0saj0xO2NvbnN0IE10PTU7bGV0IG5lPW51bGwsYXQ9W10sZXQ9IiIsYmU9W10sQz1udWxsLGdzPTA7Y29uc3QgZF89bmV3IFNldChbImZvcmdldFByZWZlcmVuY2VzIiwiYWRkVG9UcmlwIiwiY2xlYXJUcmlwIiwicmVxdWVzdEJvb2tpbmciLCJjYW5jZWxCb29raW5nIiwiY2hhbmdlQm9va2luZyIsInNpZ25JbiIsInNpZ25PdXQiXSksd3Q9ZT0+e2NvbnN0IHQ9U3RyaW5nKGU/LnZpZXc/PyIiKTtyZXR1cm4gdD09PSJob3RlbCJ8fHQ9PT0ibm8tcm9vbXMifHx0PT09Im5lZWRzLWRhdGVzIj9gaG90ZWw6JHtlLmhvdGVsPy5pZD8/IiJ9YDp0PT09ImV4dHJhcyI/ZS5mb3JCb29raW5nP2BleHRyYXM6Ym9va2luZzoke2UuZm9yQm9va2luZy5jb25maXJtYXRpb25Db2RlfWA6YGV4dHJhczoke2UuaG90ZWw/LmlkPz8iIn1gOnQ9PT0icG9saWN5Inx8dD09PSJwb2xpY2llcyJ8fHQ9PT0icG9saWN5LW1pc3NpbmciP2Bwb2xpY3k6JHtlLmhvdGVsPy5pZD8/IiJ9OiR7ZS50b3BpYz8/IiJ9YDp0PT09ImNhbmNlbGxhdGlvbi1wcmV2aWV3Ij9gY2FuY2VsOiR7ZS5ib29raW5nPy5jb25maXJtYXRpb25Db2RlPz8iIn1gOnQ9PT0iY2hhbmdlLXByZXZpZXciP2BjaGFuZ2U6JHtlLmNvbmZpcm1hdGlvbkNvZGU/P2UuYm9va2luZz8uY29uZmlybWF0aW9uQ29kZT8/IiJ9YDp0PT09ImRlc3RpbmF0aW9ucyI/YGRlc3RpbmF0aW9uczoke2Uuc2NvcGU/Lm5hbWU/PyIifWA6dD09PSJob3RlbHMifHx0PT09Im5vLWhvdGVscyI/YGhvdGVsczoke2UuYXNrPy5jaXR5Pz8iIn06JHtlLmFzaz8ucXVlcnk/P2UucXVlcnk/PyIifWA6dH0sb3M9ZT0+eyFDfHxoXy5oYXMoU3RyaW5nKEMudmlldykpfHx3dChlKSE9PXd0KEMpJiYoYmU9Wy4uLmJlLHtwYXlsb2FkOkMsbGFiZWw6bV8oQyksdmVyc2lvbjpnc31dLnNsaWNlKC02KSl9LHBfPWU9Pntjb25zdCB0PVN0cmluZyhlPy52aWV3Pz8iIiksbj1lPy5zdGF5Py5jaGVja0luP3tjaGVja0luOmUuc3RheS5jaGVja0luLGNoZWNrT3V0OmUuc3RheS5jaGVja091dCxndWVzdHM6ZS5zdGF5Lmd1ZXN0cz8/Mn06e307aWYodD09PSJ0cmlwIilyZXR1cm57a2V5OiJ2aWV3VHJpcCIsYXJnczp7fX07aWYodD09PSJib29raW5ncyIpcmV0dXJue2tleToibGlzdEJvb2tpbmdzIixhcmdzOnt9fTtpZigodD09PSJob3RlbHMifHx0PT09ImRlc3RpbmF0aW9ucyJ8fHQ9PT0ibm8taG90ZWxzIiYmZS5hc2spJiZlLmFzaylyZXR1cm57a2V5OiJsaXN0SG90ZWxzIixhcmdzOnsuLi5lLmFza319O2lmKHQ9PT0iY29tcGFyaXNvbiImJkFycmF5LmlzQXJyYXkoZS5jb2x1bW5zKSlyZXR1cm57a2V5OiJjb21wYXJlIixhcmdzOnsuLi5uLC4uLmUudGl0bGU/e3RpdGxlOmUudGl0bGV9Ont9LC4uLmUucmVjb21tZW5kZWQ/e3JlY29tbWVuZGVkOmUucmVjb21tZW5kZWR9Ont9LGVudHJpZXM6ZS5jb2x1bW5zLm1hcChvPT4oe2hvdGVsOm8uaG90ZWw/LmlkLC4uLm8uYmVzdEZvcj97YmVzdEZvcjpvLmJlc3RGb3J9Ont9LC4uLm8ucHJvcz8ubGVuZ3RoP3twcm9zOm8ucHJvc306e30sLi4uby5jb25zPy5sZW5ndGg/e2NvbnM6by5jb25zfTp7fX0pKX19O2lmKCh0PT09ImhvdGVsInx8dD09PSJuby1yb29tcyIpJiZlLmhvdGVsPy5pZClyZXR1cm57a2V5OiJnZXRIb3RlbCIsYXJnczp7aG90ZWw6ZS5ob3RlbC5pZCwuLi5uLC4uLmUucm9vbXNfd2FudGVkP3tyb29tczplLnJvb21zX3dhbnRlZH06e319fTtpZih0PT09ImV4dHJhcyImJmUuZm9yQm9va2luZylyZXR1cm57a2V5OiJsaXN0RXh0cmFzIixhcmdzOnR0KFN0cmluZyhlLmZvckJvb2tpbmcuY29uZmlybWF0aW9uQ29kZSkpfTtpZih0PT09ImV4dHJhcyImJmUuaG90ZWw/LmlkKXJldHVybntrZXk6Imxpc3RFeHRyYXMiLGFyZ3M6e2hvdGVsOmUuaG90ZWwuaWQsLi4ubn19O2lmKHQ9PT0iaXRpbmVyYXJ5IilyZXR1cm57a2V5OiJpdGluZXJhcnkiLGFyZ3M6e3RpdGxlOmUudGl0bGUsLi4ubixkYXlzOihlLmRheXM/P1tdKS5tYXAobz0+KHtsYWJlbDpvLmxhYmVsLC4uLm8ubm90ZT97bm90ZTpvLm5vdGV9Ont9LGl0ZW1zOihvLml0ZW1zPz9bXSkubWFwKHM9PnMuaWQpfSkpfX19LFl1PWU9PntiZT1iZS5maWx0ZXIodD0+IWUuaW5jbHVkZXMoU3RyaW5nKHQucGF5bG9hZD8udmlldykpKX0saF89bmV3IFNldChbImZpbmQtYm9va2luZyIsImJvb2tpbmciLCJjYW5jZWxsZWQiLCJjaGFuZ2VkIiwiZXJyb3IiLCJuZWVkcy1ndWVzdCIsInNpZ25lZC1vdXQiLCJtZW1iZXItc2lnbi1pbiIsIm1lbWJlci1ub3QtZm91bmQiXSksbV89ZT0+e2NvbnN0IHQ9U3RyaW5nKGU/LnZpZXc/PyIiKTtpZih0PT09ImNvbXBhcmlzb24iKXJldHVybiBjKGAkeyhlLmNvbHVtbnM/P1tdKS5sZW5ndGh9IHNpZGUgYnkgc2lkZWAsYCR7KGUuY29sdW1ucz8/W10pLmxlbmd0aH0g5a625a+55q+UYCk7aWYodD09PSJpdGluZXJhcnkiKXJldHVybiBjKCJ0aGUgcGxhbiIsIuihjOeoi+iuoeWIkiIpO2lmKHQ9PT0ibm8taG90ZWxzIilyZXR1cm4gYygidGhlIHNlYXJjaCIsIuaQnOe0oiIpO2lmKHQ9PT0iZGVzdGluYXRpb25zIilyZXR1cm4gZS5zY29wZT8ubmFtZT9TdHJpbmcoZS5zY29wZS5uYW1lKTpjKCJhbGwgZGVzdGluYXRpb25zIiwi5YWo6YOo55uu55qE5ZywIik7aWYodD09PSJob3RlbHMiKXtpZihlLmFzaz8uY2l0eSlyZXR1cm4gU3RyaW5nKGUuYXNrLmNpdHkpO2NvbnN0IG49Wy4uLm5ldyBTZXQoKGUuaG90ZWxzPz9bXSkubWFwKG89PlN0cmluZyhvLmNpdHkpKSldO3JldHVybiBuLmxlbmd0aD09PTE/U3RyaW5nKG5bMF0pOmMoYCR7ZS50b3RhbD8/MH0gaG90ZWxzYCxgJHtlLnRvdGFsPz8wfSDlrrbphZLlupdgKX1yZXR1cm4gdD09PSJob3RlbCJ8fHQ9PT0ibm8tcm9vbXMifHx0PT09Im5lZWRzLWRhdGVzIj9TdHJpbmcoZS5ob3RlbD8ubmFtZT8/YygidGhlIGhvdGVsIiwi6YWS5bqXIikpOnQ9PT0iY2FuY2VsbGF0aW9uLXByZXZpZXciP2MoInRoZSBjYW5jZWxsYXRpb24iLCLlj5bmtogiKTp0PT09ImNoYW5nZS1wcmV2aWV3Ij9jKCJ0aGUgY2hhbmdlIiwi5L+u5pS5Iik6dD09PSJtZW1iZXIiP2MoInlvdXIgbWVtYmVyc2hpcCIsIuS8muWRmCIpOnQ9PT0iZXh0cmFzIj9lLmZvckJvb2tpbmc/YyhgYWRkLW9ucyBmb3IgJHtlLmZvckJvb2tpbmcuY29uZmlybWF0aW9uQ29kZX1gLGAke2UuZm9yQm9va2luZy5jb25maXJtYXRpb25Db2RlfSDnmoTpmYTliqDmnI3liqFgKTpjKGAke1N0cmluZyhlLmhvdGVsPy5uYW1lPz8idGhlIGhvdGVsIil9IGFkZC1vbnNgLGAke1N0cmluZyhlLmhvdGVsPy5uYW1lPz8i6YWS5bqXIil96ZmE5Yqg5pyN5YqhYCk6dD09PSJ0cmlwIj9jKCJ0aGUgdHJpcCIsIuihjOeoiyIpOnQ9PT0iYm9va2luZ3MiP2MoInlvdXIgYm9va2luZ3MiLCLmiJHnmoTpooTorqIiKTp0PT09InBvbGljeSJ8fHQ9PT0icG9saWNpZXMiP2MoInRoZSBwb2xpY2llcyIsIuaUv+etliIpOmMoImJhY2siLCLov5Tlm54iKX0sRmY9KCk9Pntjb25zdCBlPVYoImJhY2tidG4iKSx0PWJlLmF0KC0xKTtlLmhpZGRlbj0hdCx0JiYoZS5pbm5lckhUTUw9YCR7UC5jaGV2TH08c3Bhbj4ke2wodC5sYWJlbCl9PC9zcGFuPmApLEhmKCl9LGZfPXtob3RlbHM6MSxob3RlbDoyLCJuby1yb29tcyI6MiwibmVlZHMtZGF0ZXMiOjIsdHJpcDozLCJuZWVkcy1ndWVzdCI6Myxib29raW5nOjR9LGdfPWU9PntsZXQgdD1mX1tTdHJpbmcoZT8udmlldz8/IiIpXT8/MDtlPy52aWV3PT09InRyaXAiJiYhKGUubGluZXM/P1tdKS5sZW5ndGgmJih0PTApLGU/LnZpZXc9PT0iaG90ZWxzIiYmIShlLmhvdGVscz8/W10pLmxlbmd0aCYmKHQ9MCk7Y29uc3Qgbj1lPy52aWV3PT09ImJvb2tpbmciJiZlPy5ib29raW5nPy5zdGF0dXM9PT0iYXdhaXRpbmctcGF5bWVudCI7biYmKHQ9MyksVigiZmxvdzMiKS50ZXh0Q29udGVudD1uP2MoIlBheSIsIuS7mOasviIpOmMoIkJvb2siLCLpooTorqIiKTtjb25zdCBvPVYoImZsb3ciKTtvLmhpZGRlbj0hdDtmb3IoY29uc3QgcyBvZiBvLnF1ZXJ5U2VsZWN0b3JBbGwoImxpIikpe2NvbnN0IHI9TnVtYmVyKHMuZGF0YXNldC5zdGVwKTtzLmNsYXNzTGlzdC50b2dnbGUoImRvbmUiLHI8dCkscj09PXQ/cy5zZXRBdHRyaWJ1dGUoImFyaWEtY3VycmVudCIsInN0ZXAiKTpzLnJlbW92ZUF0dHJpYnV0ZSgiYXJpYS1jdXJyZW50Iil9SGYoKX0sSGY9KCk9PntWKCJzdWJoZWFkIikuaGlkZGVuPVYoImJhY2tidG4iKS5oaWRkZW4mJlYoImZsb3ciKS5oaWRkZW59O2xldCBqdD0iIiwkaT0iIixTdD0wLE5uPSExO2NvbnN0IFdmPWU9Pntjb25zdCB0PWU/LlsiY3VybGVzcy90cmlwIl07dCYmKHR5cGVvZiB0LnRyaXBJZD09InN0cmluZyImJnQudHJpcElkJiYoJGk9dC50cmlwSWQpLFN0PU51bWJlcih0LmNvdW50Pz8wKSxBcnJheS5pc0FycmF5KHQubGluZXMpJiYoYXQ9dC5saW5lcyxObj0hMCkpfSxWZj1lPT4kaT97Li4uZSx0cmlwOiRpfTplLEpmPW5ldyBNYXAsYl89ZT0+e2NvbnN0IHQ9W2U/LmJvb2tpbmcsLi4uQXJyYXkuaXNBcnJheShlPy5ib29raW5ncyk/ZS5ib29raW5nczpbXV07Zm9yKGNvbnN0IG4gb2YgdCluPy5jb25maXJtYXRpb25Db2RlJiZuPy5ndWVzdD8uZW1haWwmJkpmLnNldChTdHJpbmcobi5jb25maXJtYXRpb25Db2RlKS50b1VwcGVyQ2FzZSgpLFN0cmluZyhuLmd1ZXN0LmVtYWlsKSl9LHR0PWU9Pntjb25zdCB0PUpmLmdldChlLnRvVXBwZXJDYXNlKCkpO3JldHVybiB0P3tib29raW5nOmUsZW1haWw6dH06e2Jvb2tpbmc6ZX19LEtmPWU9PkhsW2VdPz8iIixVbz1lPT4hIUhsW2VdLHZfPVVvO2xldCBHZj0iaG9sZCIsVmw9ITEsWWY9ITEseWU9bnVsbCxudD0iIjtjb25zdCBUdD1lPT55ZSYmZT95ZS5zdXBwbGllcnMuZmluZCh0PT50LmlkPT09ZSk6dm9pZCAwLEJlPWU9Pntjb25zdCB0PVR0KGUpO2lmKCF0KXJldHVybntuYW1lOkRlLGJvb2tpbmdNb2RlOkdmLGRlbW86V2wsc2FuZGJveDpWbCxwaG9uZVJlcXVpcmVkOllmLGV4dHJhczohMCxjaGFuZ2VzOiEwfTtjb25zdCBuPXQuY2FwYWJpbGl0aWVzPz97fTtyZXR1cm57bmFtZTpTdHJpbmcodC5uYW1lKSxib29raW5nTW9kZTpuLmJvb2tpbmc9PT0icGF5LWF0LWhvdGVsIj8icGF5LWF0LWhvdGVsIjoiaG9sZCIsZGVtbzp0Lm1vZGUhPT0ibGl2ZSIsc2FuZGJveDp0Lm1vZGU9PT0ic2FuZGJveCIscGhvbmVSZXF1aXJlZDohIW4ucmVxdWlyZXNQaG9uZSxleHRyYXM6bi5leHRyYXMhPT0hMSxjaGFuZ2VzOm4uY2hhbmdlcyE9PSExfX0sSW49ZT0+e2NvbnN0IHQ9ZT8uYnJhbmQ/U3RyaW5nKGUuYnJhbmQpOiIiLG49VHQoZT8uc3VwcGxpZXIpO2lmKCFuKXJldHVybiB0O2NvbnN0IG89U3RyaW5nKG4ubmFtZSk7cmV0dXJuIHQmJnQhPT1vP2Ake299IMK3ICR7dH1gOm99LFF1PSgpPT4oeWU/eWUuc3VwcGxpZXJzLm1hcChlPT5lLmNhcGFiaWxpdGllcz8uY29kZVByZWZpeCkuZmlsdGVyKEJvb2xlYW4pOnZpP1t2aV06W10pLm1hcChlPT5gJHtlfS3igKZgKS5qb2luKCIgb3IgIiksSmw9ZT0+eWU/Wy4uLm5ldyBTZXQoZS5tYXAodD0+U3RyaW5nKHQuc3VwcGxpZXI/PyIiKSkuZmlsdGVyKEJvb2xlYW4pKV06W107bGV0IHZuPSExO2NvbnN0IFh1PWU9Pnt2bj1lLGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIi5jYXJkIik/LmNsYXNzTGlzdC50b2dnbGUoImJ1c3kiLGUpfTtsZXQgYnM9MCxRZj0iIixYZj0iIjtjb25zdCBndD0oKT0+e2NvbnN0IGU9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiLmhlYWQiKTtpZighZSlyZXR1cm47Y29uc3QgdD0oKT0+ZS5zY3JvbGxJbnRvVmlldyh7YmxvY2s6Im5lYXJlc3QiLGlubGluZToibmVhcmVzdCJ9KTt0KCksc2V0VGltZW91dCh0LDE4MCl9LFU9KGUsdD17fSxuPXt9KT0+e2NvbnN0IG89S2YoZSk7aWYoIW8pcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBFcnJvcihgbm8gdG9vbCBmb3IgJHtlfWApKTtpZih2bilyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKG51bGwpO1h1KCEwKTtjb25zdCBzPWJzO3JldHVybiBNZS5jYWxsU2VydmVyVG9vbCh7bmFtZTpvLGFyZ3VtZW50czpWZih0KX0pLmZpbmFsbHkoKCk9Plh1KCExKSkudGhlbihyPT57V2Yocj8uX21ldGEpO2NvbnN0IGk9cj8uc3RydWN0dXJlZENvbnRlbnQsYT1pJiZuLmZvbGQ/bi5mb2xkKGkpOmksZD1kXy5oYXMoZSkmJmEmJmEudmlldyE9PSJlcnJvciI7aWYocz09PWJzJiZhKXtRZj1pP0pTT04uc3RyaW5naWZ5KGkpOiIiLFhmPUpTT04uc3RyaW5naWZ5KGEpO2NvbnN0IHU9d3QoYSkhPT13dChDKTt1JiYoTz1udWxsKSxuLnB1c2ghPT0hMSYmIW4uc3RheSYmb3MoYSksZCYmKGdzKz0xKSxhLnZpZXc9PT0iYm9va2luZyImJihZdShbInRyaXAiLCJuZWVkcy1kYXRlcyIsIm5lZWRzLWd1ZXN0Il0pLE9lPW51bGwpLChhLnZpZXc9PT0iY2FuY2VsbGVkInx8YS52aWV3PT09ImNoYW5nZWQiKSYmWXUoWyJjYW5jZWxsYXRpb24tcHJldmlldyIsImNoYW5nZS1wcmV2aWV3Il0pLG4uc3RheSYmYS52aWV3PT09InRyaXAiJiZDPyhObnx8KGF0PWEubGluZXM/P1tdKSxTdD1Obj9TdDphdC5sZW5ndGgsX2UoQykpOihfZShhKSx1JiZndCgpKX1lbHNlIGQmJihncys9MSk7cmV0dXJuICRfKHIsbi5ub3RlKSxyfSl9LCRfPShlLHQpPT57Y29uc3Qgbj0oZT8uY29udGVudD8/W10pLmZpbmQobz0+bz8udHlwZT09PSJ0ZXh0Iik/LnRleHQ7IW58fCFNZS5nZXRIb3N0Q2FwYWJpbGl0aWVzKCk/LnVwZGF0ZU1vZGVsQ29udGV4dHx8TWUudXBkYXRlTW9kZWxDb250ZXh0KHtjb250ZW50Olt7dHlwZToidGV4dCIsdGV4dDp0P2Ake3R9ICR7U3RyaW5nKG4pfWA6U3RyaW5nKG4pfV19KS5jYXRjaCgoKT0+e30pfTtsZXQgRnI9ITE7Y29uc3QgeV89IihUaGUgY2FyZCBwcmljZWQgaXRzIG93biBkZWZhdWx0IGRhdGVzLCB0b25pZ2h0LCB0byBzaG93IHRoZSByb29tczsgdGhlIGd1ZXN0IGhhcyBub3QgY2hvc2VuIHRoZW0uKSIsdXQ9ZT0+e2xldCB0PTA7Zm9yKGxldCBuPTA7bjxlLmxlbmd0aDtuKz0xKXQ9KHQqMzErZS5jaGFyQ29kZUF0KG4pKSUzNjA7cmV0dXJuYC0tc2hvdC1hOmhzbCgke3R9IDQyJSAzNCUpOy0tc2hvdC1iOmhzbCgkeyh0KzM4KSUzNjB9IDQ2JSAyMiUpYH0sRm89ZT0+e2NvbnN0IHQ9U3RyaW5nKGU/PyIiKSxuPS9eXHMqW+OAkFxbXVxzKijmqKHmi598c2ltdWxhdGVkfHRlc3QpXHMqW+OAkVxdXVxzKi9pLmV4ZWModCksbz1sKChuP3Quc2xpY2UoblswXS5sZW5ndGgpOnQpLnJlcGxhY2UoLy0vZywi4oCRIikpO3JldHVybiBuP2A8c3BhbiBjbGFzcz0ic2ltIj4ke2woblsxXSl9PC9zcGFuPiR7b31gOm99LGR0PWU9PmUucmVwbGFjZSgvXlxzKlvjgJBcW11ccyoo5qih5ouffHNpbXVsYXRlZHx0ZXN0KVxzKlvjgJFcXV1ccyovaSwiIikucmVwbGFjZSgvW15ccHtMfVxwe059IF0vZ3UsIiAiKS5zcGxpdCgvXHMrLykuZmlsdGVyKEJvb2xlYW4pLnNsaWNlKDAsMikubWFwKHQ9PnRbMF0/LnRvVXBwZXJDYXNlKCk/PyIiKS5qb2luKCIiKSxlZz0nPHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxMiIgZmlsbD0iY3VycmVudENvbG9yIiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZD0iTTEyIDMuNWwyLjYgNS4zIDUuOS45LTQuMyA0LjEgMSA1LjhMMTIgMTYuOSA2LjggMTkuNmwxLTUuOEwzLjUgOS43bDUuOS0uOXoiLz48L3N2Zz4nLGllPShlLHQ9MS44KT0+YDxzdmcgY2xhc3M9ImljbyIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIke3R9IiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIGFyaWEtaGlkZGVuPSJ0cnVlIj4ke2V9PC9zdmc+YCxQPXtjYWxlbmRhcjppZSgnPHJlY3QgeD0iMy41IiB5PSI1IiB3aWR0aD0iMTciIGhlaWdodD0iMTUuNSIgcng9IjIuNSIvPjxwYXRoIGQ9Ik0zLjUgOS41aDE3TTggM3Y0TTE2IDN2NCIvPicpLHNlYXJjaDppZSgnPGNpcmNsZSBjeD0iMTEiIGN5PSIxMSIgcj0iNi41Ii8+PHBhdGggZD0ibTIwIDIwLTQuMi00LjIiLz4nKSxjaGVjazppZSgnPHBhdGggZD0ibTUgMTIuNSA0LjUgNC41TDE5IDcuNSIvPicsMiksZG9uZTppZSgnPHBhdGggZD0ibTYgMTIuNSA0IDQgOC05Ii8+JywyLjYpLGFsZXJ0OmllKCc8cGF0aCBkPSJNMTIgNC4yIDMgMTkuNWgxOHoiLz48cGF0aCBkPSJNMTIgMTB2NC4yTTEyIDE3aC4wMSIvPicpLGVycm9yOmllKCc8Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSI4LjUiLz48cGF0aCBkPSJNMTIgNy44djVNMTIgMTYuMmguMDEiLz4nKSxjbG9jazppZSgnPGNpcmNsZSBjeD0iMTIiIGN5PSIxMiIgcj0iOC41Ii8+PHBhdGggZD0iTTEyIDcuNVYxMmwzIDIiLz4nKSxiZWQ6aWUoJzxwYXRoIGQ9Ik0zIDE4LjVWNi41TTMgMTRoMTh2NC41TTIxIDE0di0yLjVhMyAzIDAgMCAwLTMtM2gtN1YxNCIvPjxjaXJjbGUgY3g9IjciIGN5PSIxMSIgcj0iMS44Ii8+JyksdXNlcnM6aWUoJzxjaXJjbGUgY3g9IjkiIGN5PSI4LjUiIHI9IjMuMiIvPjxwYXRoIGQ9Ik0zLjUgMTlhNS41IDUuNSAwIDAgMSAxMSAwTTE2IDUuNmEzIDMgMCAwIDEgMCA1LjhNMTcuNSAxNGE1IDUgMCAwIDEgMyA1Ii8+Jyksc2l6ZTppZSgnPHBhdGggZD0iTTQgOVY0aDVNMjAgMTV2NWgtNU00IDRsNiA2TTIwIDIwbC02LTYiLz4nKSx2aWV3OmllKCc8cGF0aCBkPSJNMi41IDEyUzYgNS41IDEyIDUuNSAyMS41IDEyIDIxLjUgMTIgMTggMTguNSAxMiAxOC41IDIuNSAxMiAyLjUgMTJ6Ii8+PGNpcmNsZSBjeD0iMTIiIGN5PSIxMiIgcj0iMi44Ii8+JyksY3VwOmllKCc8cGF0aCBkPSJNNCA5aDEydjVhNSA1IDAgMCAxLTUgNUg5YTUgNSAwIDAgMS01LTV6TTE2IDEwLjVoMS41YTIuNSAyLjUgMCAwIDEgMCA1SDE2TTggMy41VjZNMTIgMy41VjYiLz4nKSxpbmZvOmllKCc8Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSI4LjUiLz48cGF0aCBkPSJNMTIgMTF2NS4yTTEyIDcuOGguMDEiLz4nKSx3aW5kb3c6aWUoJzxyZWN0IHg9IjQuNSIgeT0iNCIgd2lkdGg9IjE1IiBoZWlnaHQ9IjE2IiByeD0iMS41Ii8+PHBhdGggZD0iTTEyIDR2MTZNNC41IDEyaDE1Ii8+JyksbG9jazppZSgnPHJlY3QgeD0iNC41IiB5PSIxMC41IiB3aWR0aD0iMTUiIGhlaWdodD0iMTAiIHJ4PSIyLjIiLz48cGF0aCBkPSJNOCAxMC41VjcuNWE0IDQgMCAwIDEgOCAwdjMiLz4nKSxwaW46aWUoJzxwYXRoIGQ9Ik0xMiAyMXMtNi41LTUuNi02LjUtMTFhNi41IDYuNSAwIDAgMSAxMyAwQzE4LjUgMTUuNCAxMiAyMSAxMiAyMXoiLz48Y2lyY2xlIGN4PSIxMiIgY3k9IjEwIiByPSIyLjQiLz4nKSxjaGV2TDppZSgnPHBhdGggZD0ibTE0LjUgNi02IDYgNiA2Ii8+JywyKSxjaGV2UjppZSgnPHBhdGggZD0ibTkuNSA2IDYgNi02IDYiLz4nLDIpLGFycm93OmllKCc8cGF0aCBkPSJNNSAxMmgxNE0xMyA2bDYgNi02IDYiLz4nLDIpLHNsaWRlcnM6aWUoJzxwYXRoIGQ9Ik00IDdoMTBNMTggN2gyTTQgMTdoNE0xMiAxN2g4Ii8+PGNpcmNsZSBjeD0iMTYiIGN5PSI3IiByPSIyIi8+PGNpcmNsZSBjeD0iMTAiIGN5PSIxNyIgcj0iMiIvPicpLHNvcnQ6aWUoJzxwYXRoIGQ9Ik03IDR2MTZNMy41IDcuNSA3IDRsMy41IDMuNU0xNyAyMFY0TTEzLjUgMTYuNSAxNyAyMGwzLjUtMy41Ii8+JyksdGFnOmllKCc8cGF0aCBkPSJNMy41IDEyLjV2LThhMSAxIDAgMCAxIDEtMWg4bDggOC05IDl6Ii8+PGNpcmNsZSBjeD0iOCIgY3k9IjgiIHI9IjEuNCIvPicpfTtsZXQgcmU9ImVuIjtjb25zdCBjPShlLHQpPT5yZT09PSJ6aCI/dDplLHRnPVsi5ZGo5pelIiwi5ZGo5LiAIiwi5ZGo5LqMIiwi5ZGo5LiJIiwi5ZGo5ZubIiwi5ZGo5LqUIiwi5ZGo5YWtIl0sdWU9ZT0+ZT4wP3JlPT09InpoIj9gJHtlfeaZmmA6YCR7ZX0gJHtlPT09MT8ibmlnaHQiOiJuaWdodHMifWA6IiIsenQ9ZT0+cmU9PT0iemgiP2Ake2V95bCP5pe2YDpgJHtlfSAke051bWJlcihlKT09PTE/ImhvdXIiOiJob3VycyJ9YCxrXz1lPT5yZT09PSJ6aCI/YCR7ZX3pl7RgOmAke2V9ICR7ZT09PTE/InJvb20iOiJyb29tcyJ9YCxGZT1lPT57Y29uc3QgdD1uZXcgRGF0ZShgJHtlfVQxMjowMDowMFpgKTtpZihOdW1iZXIuaXNOYU4odC5nZXRUaW1lKCkpKXJldHVybnttZDplLGRvdzoiIixsb25nOmUsZGF5OmUsbW9uOiIifTtjb25zdCBuPXQuZ2V0VVRDTW9udGgoKSsxLG89dC5nZXRVVENEYXRlKCk7aWYocmU9PT0iemgiKXtjb25zdCByPXRnW3QuZ2V0VVRDRGF5KCldPz8iIjtyZXR1cm57bWQ6YCR7bn3mnIgke2995pelYCxkb3c6cixsb25nOmAke3QuZ2V0VVRDRnVsbFllYXIoKX3lubQke2595pyIJHtvfeaXpSAke3IucmVwbGFjZSgi5ZGoIiwi5pif5pyfIil9YCxkYXk6U3RyaW5nKG8pLG1vbjpgJHtufeaciGB9fWNvbnN0IHM9cj0+dC50b0xvY2FsZURhdGVTdHJpbmcoImVuLUdCIix7Li4ucix0aW1lWm9uZToiVVRDIn0pO3JldHVybnttZDpgJHtvfSAke3Moe21vbnRoOiJzaG9ydCJ9KX1gLGRvdzpzKHt3ZWVrZGF5OiJzaG9ydCJ9KSxsb25nOnMoe3dlZWtkYXk6ImxvbmciLGRheToibnVtZXJpYyIsbW9udGg6ImxvbmciLHllYXI6Im51bWVyaWMifSksZGF5OlN0cmluZyhvKSxtb246cyh7bW9udGg6InNob3J0In0pfX0sX189ZT0+ZSYmdHlwZW9mIGUudmFsdWU9PSJudW1iZXIiP2A8c3BhbiBjbGFzcz0icmF0ZSIgYXJpYS1sYWJlbD0iJHtsKGMoYFJhdGVkICR7ZS52YWx1ZX0gYnkgJHtlLmNvdW50fSBndWVzdHNgLGDor4TliIYgJHtlLnZhbHVlfe+8jCR7ZS5jb3VudH0g5p2h54K56K+EYCkpfSI+JHtlZ30ke2woZS52YWx1ZSl9PHNtYWxsPigke2woTnVtYmVyKGUuY291bnQpLnRvTG9jYWxlU3RyaW5nKCJlbi1HQiIpKX0pPC9zbWFsbD48L3NwYW4+YDoiIix3Xz0iRGVtb25zdHJhdGlvbiBkYXRhOiB0aGVzZSByYXRlcyBhbmQgcm9vbSBjb3VudHMgd2VyZSBtYWRlIHVwIGZvciB0aGlzIGRlbW8uIixTXz1lPT57dHlwZW9mIGUhPSJzdHJpbmcifHwhL14jWzAtOWEtZl17Nn0kL2kudGVzdChlKXx8KGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgiLS1jLWFjY2VudCIsZSksZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmRhdGFzZXQuYWNjZW50PSIiKX0sVF89KCk9Pntkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQubGFuZz1yZT09PSJ6aCI/InpoLUNOIjoiZW4iLFYoImhvbWUiKS5zZXRBdHRyaWJ1dGUoImFyaWEtbGFiZWwiLGMoIkJhY2sgdG8gdGhlIGhvdGVscyIsIuWbnuWIsOmFkuW6l+mmlumhtSIpKSxWKCJoZWFkdHJpcCIpLnNldEF0dHJpYnV0ZSgiYXJpYS1sYWJlbCIsYygiVmlldyB0aGUgdHJpcCIsIuafpeeci+ihjOeoiyIpKSxWKCJoZWFkdHJpcHdvcmQiKS50ZXh0Q29udGVudD1jKCJUcmlwIiwi6KGM56iLIiksVigiZmxvdyIpLnNldEF0dHJpYnV0ZSgiYXJpYS1sYWJlbCIsYygiQm9va2luZyBzdGVwcyIsIumihOiuouatpemqpCIpKSxWKCJmbG93MSIpLnRleHRDb250ZW50PWMoIkhvdGVsIiwi6YCJ6YWS5bqXIiksVigiZmxvdzIiKS50ZXh0Q29udGVudD1jKCJSb29tIiwi6YCJ5oi/5Z6LIiksVigiZmxvdzMiKS50ZXh0Q29udGVudD1jKCJCb29rIiwi6aKE6K6iIil9LHpfPSgpPT57VigiZGVtb3N0cmlwIikuaGlkZGVuPSFXbCxWKCJkZW1vdGV4dCIpLnRleHRDb250ZW50PVZsP2MoYEEgdGVzdCBjb3B5IG9mICR7RGV8fCJ0aGUgaG90ZWwifSdzIHN5c3RlbSDigJQgbm90aGluZyBoZXJlIGlzIGEgcmVhbCBib29raW5nLmAsIumFkuW6l+ezu+e7n+eahOa1i+ivleWJr+acrO+8jOi/memHjOeahOmihOiuoumDveS4jeaYr+ecn+WunumihOiuouOAgiIpOmMoIlNhbXBsZSByYXRlcyBhbmQgcm9vbXMg4oCUIG5vdGhpbmcgaGVyZSBjYW4gcmVhbGx5IGJlIGJvb2tlZC4iLCLnpLrkvovku7fmoLzlkozmiL/lnovvvIzov5nph4zml6Dms5XnnJ/lrp7pooTorqLjgIIiKSxWKCJkZW1vbGFiZWwiKS50ZXh0Q29udGVudD1jKCJEZW1vIiwi5ryU56S6IiksVigiZGVtb3N0cmlwIikudGl0bGU9VWZ8fHdffSxBZT1lPT57Y29uc3QgdD1GZShlKTtyZXR1cm4gdC5kb3c/cmU9PT0iemgiP2Ake3QubWR9ICR7dC5kb3d9YDpgJHt0LmRvd30gJHt0Lm1kfWA6ZX0sQ2U9KGUsdCk9Pk1hdGgucm91bmQoKERhdGUucGFyc2UoYCR7dH1UMTI6MDA6MDBaYCktRGF0ZS5wYXJzZShgJHtlfVQxMjowMDowMFpgKSkvODY0ZTUpLEhvPWU9PmU/LmNoZWNrSW4mJmU/LmNoZWNrT3V0P2UuY2hlY2tPdXQ8PWUuY2hlY2tJbj9BZShlLmNoZWNrSW4pOmAke0FlKGUuY2hlY2tJbil9IOKAkyAke0FlKGUuY2hlY2tPdXQpfSDCtyAke3VlKENlKGUuY2hlY2tJbixlLmNoZWNrT3V0KSl9YDoiIix2cz0oZSx0LG4pPT57Y29uc3Qgbz1hdC5maW5kKHM9PnMua2luZD09PSJyb29tIiYmcy5ob3RlbElkPT09ZSYmcy5yb29tUmVmPT09dCYmcy5zdGF5Py5jaGVja0luPT09bj8uY2hlY2tJbiYmcy5zdGF5Py5jaGVja091dD09PW4/LmNoZWNrT3V0KTtyZXR1cm4gTnVtYmVyKG8/LnF1YW50aXR5Pz8wKX0seF89KGUsdCk9Pntjb25zdCBuPWF0LmZpbmQobz0+by5raW5kPT09ImV4dHJhIiYmby5ob3RlbElkPT09ZSYmby5leHRyYVJlZj09PXQpO3JldHVybiBOdW1iZXIobj8ucXVhbnRpdHk/PzApfSwkcz0oZSx0LG4sbz0xKT0+dD4wP2A8c3BhbiBjbGFzcz0ic3RlcCI+CiAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiAke2V9IGRhdGEtbj0iJHt0LTF9IiBhcmlhLWxhYmVsPSIke2woYyhgT25lIGZld2VyICR7bn1gLGDlh4/lsJHkuIDpl7QgJHtufWApKX0iPuKIkjwvYnV0dG9uPgogICAgICAgICA8c3BhbiBjbGFzcz0ibiI+JHt0fTwvc3Bhbj4KICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iICR7ZX0gZGF0YS1uPSIke3QrMX0iIGFyaWEtbGFiZWw9IiR7bChjKGBPbmUgbW9yZSAke259YCxg5aKe5Yqg5LiA6Ze0ICR7bn1gKSl9Ij4rPC9idXR0b24+CiAgICAgICA8L3NwYW4+YDpgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJhZGQiICR7ZX0gZGF0YS1uPSIke299IiBhcmlhLWxhYmVsPSIke2woYyhgQWRkICR7bn1gLGDmt7vliqAgJHtufWApKX0iPgogICAgICAgICA8c3ZnIHZpZXdCb3g9IjAgMCAyNCAyNCIgd2lkdGg9IjE4IiBoZWlnaHQ9IjE4IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIyLjQiCiAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZD0iTTEyIDV2MTRNNSAxMmgxNCIvPjwvc3ZnPgogICAgICAgPC9idXR0b24+YCxuZz0oZSx0KT0+e2NvbnN0IG49dHx8aWcoKTtyZXR1cm4oIVMuY2hlY2tJbnx8Uy5jaGVja0luPG4pJiYoUy5jaGVja0luPW4pLCghUy5jaGVja091dHx8Uy5jaGVja091dDw9Uy5jaGVja0luKSYmKFMuY2hlY2tPdXQ9SXQoUy5jaGVja0luLDEpKSxIcigiY2kiLG4se3Jvb21zOllsKCJkYXRhLXJvb21zLW4iLCJybiIpfSl9LEtsPXtjaTpbImNpIiwiY28iXSxsY2k6WyJsY2kiLCJsY28iXSxkY2k6WyJkY2kiLCJkY28iXX0sSV89MTM7bGV0IE89bnVsbDtjb25zdCBHbD17fSxzcz1lPT5gJHtlLnNsaWNlKDAsNyl9LTAxYCx5aT0oZSx0KT0+e2NvbnN0IG49bmV3IERhdGUoYCR7ZX1UMTI6MDA6MDBaYCk7cmV0dXJuIG4uc2V0VVRDTW9udGgobi5nZXRVVENNb250aCgpK3QsMSksbi50b0lTT1N0cmluZygpLnNsaWNlKDAsMTApfSx5cz04O2xldCBOdD0hMTtjb25zdCBvZz0oKT0+aj4xP2MoYCR7Uy5ndWVzdHN9ICR7Uy5ndWVzdHM9PT0xPyJndWVzdCI6Imd1ZXN0cyJ9IHBlciByb29tIMK3ICR7an0gcm9vbXNgLGDmr4/pl7QgJHtTLmd1ZXN0c30g5Lq6IMK3ICR7an0g6Ze0YCk6YyhgJHtTLmd1ZXN0c30gJHtTLmd1ZXN0cz09PTE/Imd1ZXN0IjoiZ3Vlc3RzIn0gwrcgMSByb29tYCxgJHtTLmd1ZXN0c30g5Lq6IMK3IDEg6Ze0YCksWWw9KGUsdCk9PmAKICA8ZGl2IGNsYXNzPSJ3aGVuLXJvb21zIHdoZW4tcGFydHkiIHJvbGU9Imdyb3VwIiBhcmlhLWxhYmVsPSIke2MoIkd1ZXN0cyBhbmQgcm9vbXMiLCLkurrmlbDlkozpl7TmlbAiKX0iPgogICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJwYXJ0eS10aWxlIiBkYXRhLXBhcnR5IGFyaWEtZXhwYW5kZWQ9IiR7TnQ/InRydWUiOiJmYWxzZSJ9IiBhcmlhLWNvbnRyb2xzPSIke3R9LXBhbmVsIj4KICAgICAgPHNwYW4gY2xhc3M9IndsIj4ke2MoIkd1ZXN0cyIsIuS6uuaVsCIpfTwvc3Bhbj4KICAgICAgPHNwYW4gY2xhc3M9InBhcnR5LXYiIGRhdGEtcGFydHktd29yZHM+JHtsKG9nKCkpfTwvc3Bhbj4KICAgICAgJHtQLmNoZXZSfQogICAgPC9idXR0b24+CiAgICA8ZGl2IGNsYXNzPSJwYXJ0eS1wYW5lbCIgaWQ9IiR7dH0tcGFuZWwiJHtOdD8iIjoiIGhpZGRlbiJ9PgogICAgICA8ZGl2IGNsYXNzPSJwYXJ0eS1yb3ciPgogICAgICAgIDxzcGFuPiR7YygiR3Vlc3RzIGluIGVhY2ggcm9vbSIsIuavj+mXtOWFpeS9j+S6uuaVsCIpfTwvc3Bhbj4KICAgICAgICA8c3BhbiBjbGFzcz0ic3RlcCBsaWdodCI+CiAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgZGF0YS1ndWVzdHMtbj0iLTEiIGRhdGEtb249IiR7ZX0iIGFyaWEtbGFiZWw9IiR7YygiT25lIGZld2VyIGd1ZXN0Iiwi5bCR5LiA5Lq6Iil9IiR7Uy5ndWVzdHM8PTE/IiBkaXNhYmxlZCI6IiJ9PuKIkjwvYnV0dG9uPgogICAgICAgICAgPHNwYW4gY2xhc3M9Im4iIGRhdGEtZ3Vlc3RzLXNob3duPiR7bChTLmd1ZXN0cyl9PC9zcGFuPgogICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGRhdGEtZ3Vlc3RzLW49IjEiIGRhdGEtb249IiR7ZX0iIGFyaWEtbGFiZWw9IiR7YygiT25lIG1vcmUgZ3Vlc3QiLCLlpJrkuIDkuroiKX0iJHtTLmd1ZXN0cz49eXM/IiBkaXNhYmxlZCI6IiJ9Pis8L2J1dHRvbj4KICAgICAgICA8L3NwYW4+CiAgICAgIDwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJwYXJ0eS1yb3ciPgogICAgICAgIDxzcGFuPiR7YygiUm9vbXMiLCLpl7TmlbAiKX08L3NwYW4+CiAgICAgICAgPHNwYW4gY2xhc3M9InN0ZXAgbGlnaHQiPgogICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iICR7ZX09Ii0xIiBhcmlhLWxhYmVsPSIke2MoIk9uZSBmZXdlciByb29tIiwi5bCR5LiA6Ze0Iil9IiR7ajw9MT8iIGRpc2FibGVkIjoiIn0+4oiSPC9idXR0b24+CiAgICAgICAgICA8c3BhbiBjbGFzcz0ibiIgaWQ9IiR7dH0iPiR7bChqKX08L3NwYW4+CiAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgJHtlfT0iMSIgYXJpYS1sYWJlbD0iJHtjKCJPbmUgbW9yZSByb29tIiwi5aSa5LiA6Ze0Iil9IiR7aj49TXQ/IiBkaXNhYmxlZCI6IiJ9Pis8L2J1dHRvbj4KICAgICAgICA8L3NwYW4+CiAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgPC9kaXY+YCxIcj0oZSx0LG4pPT57R2xbZV09e21pbjp0LHJvb21zOm4ucm9vbXMsc2lkZTpuLnNpZGU/PyIiLHBlbmRpbmc6ISFuLnBlbmRpbmd9O2NvbnN0W28sc109S2xbZV0scj1DZShTLmNoZWNrSW4sUy5jaGVja091dCksaT0oYSxkLHUpPT57Y29uc3QgcD1GZShkKSxoPU8/LnBhaXI9PT1lJiZPLnBpY2tpbmc9PT1hO3JldHVybiBuLnBlbmRpbmcmJiFoP2A8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9IndoZW4tdGlsZSIgZGF0YS1jYWw9IiR7ZX06JHthfSIgYXJpYS1leHBhbmRlZD0iZmFsc2UiIGFyaWEtbGFiZWw9IiR7dX0uICR7YygiQ2hvb3NlIGEgZGF0ZSIsIumAieaLqeaXpeacnyIpfSI+CiAgICAgICAgPHNwYW4gY2xhc3M9IndsIj4ke3V9PC9zcGFuPgogICAgICAgIDxzcGFuIGNsYXNzPSJ3diB3di1lbXB0eSI+JHtjKCJBZGQgZGF0ZSIsIumAieaXpeacnyIpfTwvc3Bhbj4KICAgICAgPC9idXR0b24+YDpgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJ3aGVuLXRpbGUiIGRhdGEtY2FsPSIke2V9OiR7YX0iIGFyaWEtZXhwYW5kZWQ9IiR7aD8idHJ1ZSI6ImZhbHNlIn0iIGFyaWEtbGFiZWw9IiR7dX0sICR7bChwLmxvbmcpfS4gJHtjKCJDaGFuZ2UgdGhlIGRhdGVzIiwi5L+u5pS55pel5pyfIil9Ij4KICAgICAgICA8c3BhbiBjbGFzcz0id2wiPiR7dX08L3NwYW4+CiAgICAgICAgPHNwYW4gY2xhc3M9Ind2Ij4ke2wocC5tZCl9PHNtYWxsPiR7bChwLmRvdyl9PC9zbWFsbD48L3NwYW4+CiAgICAgIDwvYnV0dG9uPmB9O3JldHVybmAKICA8ZGl2IGNsYXNzPSJ3aGVuYmFyJHtuLnBlbmRpbmc/IiBwZW5kaW5nIjoiIn0iIGRhdGEtd2hlbj0iJHtlfSI+CiAgICA8ZGl2IGNsYXNzPSJ3aGVuLWRhdGVzIj4KICAgICAgJHtpKCJpbiIsUy5jaGVja0luLGMoIkNoZWNrLWluIiwi5YWl5L2PIikpfQogICAgICA8c3BhbiBjbGFzcz0id2hlbi1uIiR7ZT09PSJjaSI/JyBpZD0ibmlnaHRzIic6IiJ9PiR7bi5wZW5kaW5nPyLihpIiOmwodWUocikpfTwvc3Bhbj4KICAgICAgJHtpKCJvdXQiLFMuY2hlY2tPdXQsYygiQ2hlY2stb3V0Iiwi56a75bqXIikpfQogICAgPC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJ3aGVuLXNpZGUiPiR7bi5yb29tc30ke24uc2lkZT8/IiJ9PC9kaXY+CiAgICA8aW5wdXQgdHlwZT0iZGF0ZSIgaWQ9IiR7b30iIHZhbHVlPSIke2woUy5jaGVja0luKX0iIG1pbj0iJHtsKHQpfSIgaGlkZGVuPgogICAgPGlucHV0IHR5cGU9ImRhdGUiIGlkPSIke3N9IiB2YWx1ZT0iJHtsKFMuY2hlY2tPdXQpfSIgbWluPSIke2woSXQoUy5jaGVja0luLDEpKX0iIGhpZGRlbj4KICAgICR7Tz8ucGFpcj09PWU/QV8oKToiIn0KICA8L2Rpdj5gfSxBXz0oKT0+e2lmKCFPKXJldHVybiIiO2NvbnN0IGU9Tyx0PXNzKGUubWluKSxuPXlpKHQsSV8tMSksbz1wPT4oRmUocCksQWUocCkpLHM9bmV3IE1hcChlLnBhaXI9PT0iY2kiJiZlLnBpY2tpbmc9PT0iaW4iJiZBcnJheS5pc0FycmF5KEM/LmRhdGVzKT9DLmRhdGVzLmZpbHRlcihwPT5wLmZyb20pLm1hcChwPT5bU3RyaW5nKHAuY2hlY2tJbikscF0pOltdKSxyPVsuLi5zLnZhbHVlcygpXS5maW5kKHA9PnAubG93ZXN0KT8/Wy4uLnMudmFsdWVzKCldLmZpbmQocD0+cC5iZXN0KSxpPUNlKFN0cmluZyhDPy5zdGF5Py5jaGVja0luPz8iIiksU3RyaW5nKEM/LnN0YXk/LmNoZWNrT3V0Pz8iIikpfHwxLGE9ZS5waWNraW5nPT09ImluIj9jKCJDaG9vc2UgY2hlY2staW4iLCLpgInmi6nlhaXkvY/ml6XmnJ8iKTpjKCJDaG9vc2UgY2hlY2stb3V0Iiwi6YCJ5oup56a75bqX5pel5pyfIiksZD1lLmluJiZlLm91dD9gJHtvKGUuaW4pfSDigJMgJHtvKGUub3V0KX0gwrcgJHt1ZShDZShlLmluLGUub3V0KSl9YDplLmluP2Ake2MoIkNoZWNrLWluIiwi5YWl5L2PIil9ICR7byhlLmluKX1gOiIiLHU9cD0+e2NvbnN0IGg9bmV3IERhdGUoYCR7cH1UMTI6MDA6MDBaYCksYj1yZT09PSJ6aCI/YCR7aC5nZXRVVENGdWxsWWVhcigpfeW5tCR7aC5nZXRVVENNb250aCgpKzF95pyIYDpoLnRvTG9jYWxlRGF0ZVN0cmluZygiZW4tR0IiLHttb250aDoibG9uZyIseWVhcjoibnVtZXJpYyIsdGltZVpvbmU6IlVUQyJ9KSwkPShoLmdldFVUQ0RheSgpKzYpJTcsaz1uZXcgRGF0ZShEYXRlLlVUQyhoLmdldFVUQ0Z1bGxZZWFyKCksaC5nZXRVVENNb250aCgpKzEsMCkpLmdldFVUQ0RhdGUoKSxUPVtdO2ZvcihsZXQgXz0wO188JDtfKz0xKVQucHVzaCgnPHNwYW4gY2xhc3M9ImNkIGJsYW5rIj48L3NwYW4+Jyk7Zm9yKGxldCBfPTE7Xzw9aztfKz0xKXtjb25zdCB4PWAke3Auc2xpY2UoMCw4KX0ke1N0cmluZyhfKS5wYWRTdGFydCgyLCIwIil9YCxBPXg8ZS5taW4sRj14PT09ZS5pbixhZT14PT09ZS5vdXQsdGU9WyJjZCIsRj8iaW4iOiIiLEYmJmUub3V0PyJoYXMtb3V0IjoiIixhZT8ib3V0IjoiIixlLmluJiZlLm91dCYmeD5lLmluJiZ4PGUub3V0PyJiZXR3ZWVuIjoiIix4PT09ZS5taW4/InRvZGF5IjoiIixzLmhhcyh4KT8iaGFzLXAiOiIiLHMuZ2V0KHgpPy5sb3dlc3Q/Imxvd2VzdCI6IiIsZS5waWNraW5nPT09Im91dCImJmUuaW4mJng8ZS5pbj8iYmVmb3JlIjoiIl0uZmlsdGVyKEJvb2xlYW4pLmpvaW4oIiAiKSxIPXMuZ2V0KHgpPy5mcm9tO1QucHVzaChgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSIke3RlfSIgZGF0YS1kYXk9IiR7eH0iJHtBPyIgZGlzYWJsZWQiOiIifSBhcmlhLWxhYmVsPSIke2woRmUoeCkubG9uZyl9JHtGP2MoIiwgY2hlY2staW4iLCLvvIzlhaXkvY8iKTphZT9jKCIsIGNoZWNrLW91dCIsIu+8jOemu+W6lyIpOiIifSR7SD9sKGMoYCwgZnJvbSAke0h9YCxg77yMJHtIfei1t2ApKToiIn0iJHtGfHxhZT8nIGFyaWEtcHJlc3NlZD0idHJ1ZSInOiIifT48c3Bhbj48YiBjbGFzcz0iY2QtbiI+JHtffTwvYj4ke0g/YDxpIGNsYXNzPSJjZC1wIj4ke2woSCl9PC9pPmA6IiJ9PC9zcGFuPjwvYnV0dG9uPmApfXJldHVybmA8ZGl2IGNsYXNzPSJjYWwtbW9udGgiPgogICAgICAgIDxkaXYgY2xhc3M9ImNhbC1tdCI+JHtsKGIpfTwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9ImNhbC1ncmlkIj4keyhyZT09PSJ6aCI/WyLkuIAiLCLkuowiLCLkuIkiLCLlm5siLCLkupQiLCLlha0iLCLml6UiXTpbIk1vIiwiVHUiLCJXZSIsIlRoIiwiRnIiLCJTYSIsIlN1Il0pLm1hcChfPT5gPHNwYW4gY2xhc3M9ImNhbC1kb3ciIGFyaWEtaGlkZGVuPSJ0cnVlIj4ke199PC9zcGFuPmApLmpvaW4oIiIpfSR7VC5qb2luKCIiKX08L2Rpdj4KICAgICAgPC9kaXY+YH07cmV0dXJuYAogICAgPGRpdiBjbGFzcz0iY2FsIiByb2xlPSJncm91cCIgYXJpYS1sYWJlbD0iJHthfSI+CiAgICAgIDxkaXYgY2xhc3M9ImNhbC10b3AiPgogICAgICAgIDxkaXYgY2xhc3M9ImNhbC1zYXkiIGFyaWEtbGl2ZT0icG9saXRlIj4ke2F9PHNtYWxsPiR7bChkKX08L3NtYWxsPjwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9ImNhbC1uYXYiPgogICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGRhdGEtY2FsLW5hdj0iLTEiIGFyaWEtbGFiZWw9IiR7YygiUHJldmlvdXMgbW9udGgiLCLkuIrkuKrmnIgiKX0iJHtlLm1vbnRoPD10PyIgZGlzYWJsZWQiOiIifT4ke1AuY2hldkx9PC9idXR0b24+CiAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgZGF0YS1jYWwtbmF2PSIxIiBhcmlhLWxhYmVsPSIke2MoIk5leHQgbW9udGgiLCLkuIvkuKrmnIgiKX0iJHtlLm1vbnRoPj1uPyIgZGlzYWJsZWQiOiIifT4ke1AuY2hldlJ9PC9idXR0b24+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJjYWwtbW9udGhzIj4ke3UoZS5tb250aCl9JHt1KHlpKGUubW9udGgsMSkpfTwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJjYWwtZm9vdCI+CiAgICAgICAgPHNwYW4gY2xhc3M9ImNhbC1sZWdlbmQiPiR7cj9gPHNwYW4gY2xhc3M9ImNhbC1iZXN0Ij4ke2woYyhgTG93ZXN0OiBhcnJpdmUgJHtvKFN0cmluZyhyLmNoZWNrSW4pKX0sIGZyb20gJHtyLmZyb219YCxg5pyA5L2O77yaJHtvKFN0cmluZyhyLmNoZWNrSW4pKX3lhaXkvY/vvIwke3IuZnJvbX3otbdgKSl9PC9zcGFuPmA6ZS5waWNraW5nPT09ImluIj9jKCJUYXAgdGhlIG5pZ2h0IHlvdSBhcnJpdmUuIiwi54K56YCJ5YWl5L2P6YKj5aSp44CCIik6YygiVGFwIHRoZSBtb3JuaW5nIHlvdSBsZWF2ZS4iLCLngrnpgInnprvlupfpgqPlpKnjgIIiKX0ke3Muc2l6ZT9gPHNtYWxsPiR7bChjKGBQcmljZXM6ICR7dWUoaSl9IGZyb20gdGhhdCBkYXksIHRheGVzIGluLiBEYXlzIHdpdGhvdXQgb25lIHdlcmUgbm90IHF1b3RlZC5gLGDku7fmoLzkuLrlvZPlpKnlhaXkvY8gJHt1ZShpKX3nmoTmgLvku7fvvIzlkKvnqI7vvJvmsqHmnInku7fmoLznmoTml6XlrZDmnKrmiqXku7fjgIJgKSl9PC9zbWFsbD5gOiIifTwvc3Bhbj4KICAgICAgICA8YnV0dG9uIGNsYXNzPSJnbyBzb2Z0IHNtIiB0eXBlPSJidXR0b24iIGRhdGEtY2FsLWNsb3NlPiR7ZS5pbiYmZS5vdXQ/YygiRG9uZSIsIuWujOaIkCIpOmMoIkNsb3NlIiwi5YWz6ZetIil9PC9idXR0b24+CiAgICAgIDwvZGl2PgogICAgPC9kaXY+YH0seHQ9KGUsdCk9Pntjb25zdCBuPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYC53aGVuYmFyW2RhdGEtd2hlbj0iJHtlfSJdYCksbz1HbFtlXTshbnx8IW98fChuLm91dGVySFRNTD1IcihlLG8ubWluLHtyb29tczpvLnJvb21zLHNpZGU6by5zaWRlLHBlbmRpbmc6by5wZW5kaW5nfSksdCYmZG9jdW1lbnQucXVlcnlTZWxlY3Rvcih0KT8uZm9jdXMoKSl9LENfPShlLHQpPT57Y29uc3Qgbj1HbFtlXTtpZighbilyZXR1cm47aWYoTyYmTy5wYWlyPT09ZSYmTy5waWNraW5nPT09dCl7Tz1udWxsLHh0KGUsYFtkYXRhLWNhbD0iJHtlfToke3R9Il1gKTtyZXR1cm59Y29uc3Qgbz1TLmNoZWNrSW4scz1TLmNoZWNrT3V0O089e3BhaXI6ZSxwaWNraW5nOnQsbW9udGg6c3ModD09PSJvdXQiJiZzP3M6b3x8bi5taW4pLGluOm8sb3V0OnMsbWluOm4ubWlufSxPLm1vbnRoPHNzKG4ubWluKSYmKE8ubW9udGg9c3Mobi5taW4pKSx4dChlLGBbZGF0YS1jYWw9IiR7ZX06JHt0fSJdYCl9LHNnPSgpPT57aWYoIU8/LmluKXJldHVybjtjb25zdHtwYWlyOmV9PU8sdD1PLmluLG49Ty5vdXQmJk8ub3V0PnQ/Ty5vdXQ6SXQodCwxKTtPPW51bGw7Y29uc3RbbyxzXT1LbFtlXSxyPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKG8pLGk9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQocyk7IXJ8fCFpfHwoaS52YWx1ZT1uLHIudmFsdWU9dCxyLmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCJjaGFuZ2UiLHtidWJibGVzOiEwfSkpLHh0KGUsYFtkYXRhLWNhbD0iJHtlfTppbiJdYCkpfSxQXz1lPT57aWYoIU98fGU8Ty5taW4pcmV0dXJuO2NvbnN0e3BhaXI6dH09TztpZihPLnBpY2tpbmc9PT0iaW4ifHwhTy5pbnx8ZTw9Ty5pbil7Ty5pbj1lLCghTy5vdXR8fE8ub3V0PD1lKSYmKE8ub3V0PSIiKSxPLnBpY2tpbmc9Im91dCIseHQodCxgW2RhdGEtZGF5PSIke2V9Il1gKTtyZXR1cm59Ty5vdXQ9ZSxzZygpfSxyZz0oKT0+dWUoUy5jaGVja0luJiZTLmNoZWNrT3V0P0NlKFMuY2hlY2tJbixTLmNoZWNrT3V0KTowKSxJdD0oZSx0KT0+bmV3IERhdGUoRGF0ZS5wYXJzZShgJHtlfVQxMjowMDowMFpgKSt0Kjg2NGU1KS50b0lTT1N0cmluZygpLnNsaWNlKDAsMTApLGlnPSgpPT5uZXcgRGF0ZShEYXRlLm5vdygpLW5ldyBEYXRlKCkuZ2V0VGltZXpvbmVPZmZzZXQoKSo2ZTQpLnRvSVNPU3RyaW5nKCkuc2xpY2UoMCwxMCksYWc9ZT0+e2NvbnN0IHQ9Wy4uLmU/LnRvZGF5P1tlLnRvZGF5Lm1pbixlLnRvZGF5Lm1heF06W10sLi4uKGU/LmhvdGVscz8/W10pLm1hcChvPT5TdHJpbmcoby50b2RheVRoZXJlPz8iIikpXS5maWx0ZXIobz0+L15cZHs0fS1cZHsyfS1cZHsyfSQvLnRlc3QobykpLnNvcnQoKSxuPWlnKCk7cmV0dXJue21pbjpbdFswXT8/bixuXS5zb3J0KClbMF0/P24sc3RhcnQ6dC5hdCgtMSk/P259fSxFXz1lPT57Y29uc3R7bWluOnQsc3RhcnQ6bn09YWcoZSk7KCFTLmNoZWNrSW58fFMuY2hlY2tJbjx0KSYmKFMuY2hlY2tJbj1uKSwoIVMuY2hlY2tPdXR8fFMuY2hlY2tPdXQ8PVMuY2hlY2tJbikmJihTLmNoZWNrT3V0PUl0KFMuY2hlY2tJbiwxKSk7Y29uc3Qgbz1IcigiZGNpIix0LHtyb29tczpZbCgiZGF0YS1yb29tcy1uIiwicm4iKSxzaWRlOmUuc2NvcGU/IiI6YDxidXR0b24gY2xhc3M9ImdvIiB0eXBlPSJidXR0b24iIGRhdGEtYWN0PSJmaW5kIj4ke1Auc2VhcmNofSR7YygiU2VhcmNoIiwi5pCc57SiIil9PC9idXR0b24+YH0pLHM9YDxkaXYgY2xhc3M9InNlYXJjaCI+CiAgICAgIDxsYWJlbCBjbGFzcz0id2hlcmUiPiR7UC5waW59PGlucHV0IGlkPSJ3aGVyZSIgdHlwZT0ic2VhcmNoIiBhdXRvY29tcGxldGU9Im9mZiIgcGxhY2Vob2xkZXI9IiR7YygiQSBjaXR5LCBhIGNvdW50cnkgb3IgYSBob3RlbCIsIuWfjuW4guOAgeWbveWutuaIlumFkuW6l+WQjSIpfSIgYXJpYS1sYWJlbD0iJHtjKCJXaGVyZSB0byIsIuebrueahOWcsCIpfSI+PC9sYWJlbD4KICAgICAgJHtvfQogICAgPC9kaXY+YCxyPXU9PmA8ZGl2IGNsYXNzPSJwbGFjZXMiPiR7dS5tYXAoKHAsaCk9PmA8YnV0dG9uIGNsYXNzPSJjaGlwIHBsYWNlIiB0eXBlPSJidXR0b24iIGRhdGEtcGxhY2U9IiR7bChwLm5hbWUpfSIke2g+PWJ0PyIgaGlkZGVuIjoiIn0+JHtsKHAubmFtZSl9IDxzbWFsbD4ke2wocC5jb3VudCl9PC9zbWFsbD48L2J1dHRvbj5gKS5qb2luKCIiKX0ke3UubGVuZ3RoPmJ0P2A8YnV0dG9uIGNsYXNzPSJjaGlwIHBsYWNlIiB0eXBlPSJidXR0b24iIGRhdGEtYWN0PSJtb3JlLXBsYWNlcyI+KyR7dS5sZW5ndGgtYnR9IG1vcmU8L2J1dHRvbj5gOiIifTwvZGl2PmAsaT1lLnNjb3BlO2lmKGkpcmV0dXJuW2A8ZGl2IGNsYXNzPSJoZWxsbyI+PGgyIGNsYXNzPSJoLW5hbWUiPiR7bChpLm5hbWUpfTwvaDI+PGRpdiBjbGFzcz0iaC13aGVyZSI+JHtsKGUudG90YWwpfSAke2woZS52b2NhYj8ubm91blBsdXJhbD8/ImhvdGVscyIpfSBpbiAke2woKGkuY2l0aWVzPz9bXSkubGVuZ3RoKX0gY2l0aWVzPC9kaXY+PC9kaXY+YCxgPGRpdiBjbGFzcz0ic2VhcmNoIj4ke299PC9kaXY+YCxyKGkuY2l0aWVzPz9bXSksYDxkaXYgY2xhc3M9ImZvb3QiPjxidXR0b24gY2xhc3M9ImdvIHF1aWV0IiB0eXBlPSJidXR0b24iIGRhdGEtcGxhY2UtYWxsPSIke2woaS5uYW1lKX0iPiR7bChjKGBBbGwgJHtlLnRvdGFsfSBpbiAke2kubmFtZX1gLGAke2kubmFtZX3lhajpg6ggJHtlLnRvdGFsfSDlrrZgKSl9PC9idXR0b24+PC9kaXY+YF0uam9pbigiIik7Y29uc3QgYT1lLnJlZ2lvbnM/P1tdLGQ9YS5mbGF0TWFwKHU9PnUuY291bnRyaWVzPz9bXSkuZmxhdE1hcCh1PT51LmNpdGllcz8/W10pLm1hcCgodSxwKT0+KHtjOnUsaTpwfSkpLnNvcnQoKHUscCk9Pk51bWJlcihwLmMuY291bnQpLU51bWJlcih1LmMuY291bnQpfHx1LmktcC5pKS5zbGljZSgwLGJ0KS5tYXAoKHtjOnV9KT0+dSk7cmV0dXJuW2A8ZGl2IGNsYXNzPSJoZWxsbyI+PGgyIGNsYXNzPSJoLW5hbWUiPiR7YygiV2hlcmUgdG8/Iiwi5oOz5L2P5ZOq6YeM77yfIil9PC9oMj48ZGl2IGNsYXNzPSJoLXdoZXJlIj4ke2woYyhgJHtlLnRvdGFsfSAke2Uudm9jYWI/Lm5vdW5QbHVyYWw/PyJob3RlbHMifSR7eWU/YCBmcm9tICR7eWUuc3VwcGxpZXJzLmxlbmd0aH0gZ3JvdXBzYDoiIn0sIHByaWNlZCBmb3IgdGhlIG5pZ2h0cyB5b3UgY2hvb3NlLmAsYCR7ZS50b3RhbH0g5a626YWS5bqXJHt5ZT9g77yM5p2l6IeqICR7eWUuc3VwcGxpZXJzLmxlbmd0aH0g5Liq6ZuG5ZuiYDoiIn3vvIzmjInkvaDpgInnmoTml6XmnJ/miqXku7fjgIJgKSl9PC9kaXY+PC9kaXY+YCxzLHllJiZ5ZS5zdXBwbGllcnMubGVuZ3RoPjE/YDxkaXYgY2xhc3M9InJlZ2lvbiI+PGRpdiBjbGFzcz0iY291bnRyeW5hbWUiPiR7YygiSG90ZWwgZ3JvdXBzIiwi6YWS5bqX6ZuG5ZuiIil9PC9kaXY+PGRpdiBjbGFzcz0icGxhY2VzIGdyb3VwcyI+JHt5ZS5zdXBwbGllcnMubWFwKHU9PmA8YnV0dG9uIGNsYXNzPSJjaGlwIHBsYWNlIGdyb3VwIiB0eXBlPSJidXR0b24iIGRhdGEtZ3JvdXAtaG9tZT0iJHtsKHUuaWQpfSI+JHt1LmxvZ29Vcmw/YDxpbWcgc3JjPSIke2wodS5sb2dvVXJsKX0iIGFsdD0iIj5gOiIifSR7bCh1Lm5hbWUpfTwvYnV0dG9uPmApLmpvaW4oIiIpfTwvZGl2PjwvZGl2PmA6IiIsZC5sZW5ndGg/YDxkaXYgY2xhc3M9InJlZ2lvbiI+PGRpdiBjbGFzcz0iY291bnRyeW5hbWUiPiR7YygiVG9wIGNpdGllcyIsIueDremXqOWfjuW4giIpfTwvZGl2PiR7cihkKX08L2Rpdj5gOiIiLGEubGVuZ3RoPjE/YDxkaXYgY2xhc3M9InJlZ2lvbiI+PGRpdiBjbGFzcz0iY291bnRyeW5hbWUiPiR7YygiQnkgcmVnaW9uIiwi5oyJ5Zyw5Yy6Iil9PC9kaXY+PGRpdiBjbGFzcz0icGxhY2VzIj4ke2EubWFwKCh1LHApPT5gPGJ1dHRvbiBjbGFzcz0iY2hpcCBwbGFjZSB0YWIiIHR5cGU9ImJ1dHRvbiIgZGF0YS1yZWdpb249IiR7cH0iIGFyaWEtZXhwYW5kZWQ9ImZhbHNlIj4ke2wodS5uYW1lKX0gPHNtYWxsPiR7bCh1LmNvdW50KX08L3NtYWxsPjwvYnV0dG9uPmApLmpvaW4oIiIpfTwvZGl2PjwvZGl2PmA6IiIsLi4uYS5tYXAoKHUscCk9PmAKICAgICAgPGRpdiBjbGFzcz0icmVnaW9uIiBkYXRhLXJlZ2lvbi1ib2R5PSIke3B9IiBoaWRkZW4+CiAgICAgICAgJHsodS5jb3VudHJpZXM/P1tdKS5tYXAoKGgsYik9Pntjb25zdCAkPWguY2l0aWVzPz9bXSxrPSQubGVuZ3RoPT09MT8kWzBdOnZvaWQgMDtyZXR1cm5gCiAgICAgICAgICA8ZGl2IGNsYXNzPSJkZXN0IiR7Yj49ZWk/IiBoaWRkZW4iOiIifT4KICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iZGVzdC1jb3VudHJ5IiB0eXBlPSJidXR0b24iIGRhdGEtcGxhY2U9IiR7bChoLm5hbWUpfSI+JHtsKGgubmFtZSl9JHtrJiZrLm5hbWUhPT1oLm5hbWU/YDxzbWFsbD4gwrcgJHtsKGsubmFtZSl9PC9zbWFsbD5gOiIifSA8c21hbGwgY2xhc3M9Im4iPiR7bChoLmNvdW50KX08L3NtYWxsPjwvYnV0dG9uPgogICAgICAgICAgICAkeyQubGVuZ3RoPjE/cigkKToiIn0KICAgICAgICAgIDwvZGl2PmB9KS5qb2luKCIiKX0KICAgICAgICAkeyh1LmNvdW50cmllcz8/W10pLmxlbmd0aD5laT9gPGRpdiBjbGFzcz0icGxhY2VzIj48YnV0dG9uIGNsYXNzPSJjaGlwIHBsYWNlIiB0eXBlPSJidXR0b24iIGRhdGEtYWN0PSJtb3JlLWNvdW50cmllcyI+KyR7KHUuY291bnRyaWVzPz9bXSkubGVuZ3RoLWVpfSBtb3JlIGNvdW50cmllczwvYnV0dG9uPjwvZGl2PmA6IiJ9CiAgICAgIDwvZGl2PmApLGA8ZGl2IGNsYXNzPSJmb290Ij4KICAgICAgIDxidXR0b24gY2xhc3M9ImdvIHF1aWV0IiB0eXBlPSJidXR0b24iIGRhdGEtYWN0PSJhbGwtaG90ZWxzIj4ke2woYyhgQnJvd3NlIGFsbCAke2UudG90YWx9ICR7ZS52b2NhYj8ubm91blBsdXJhbD8/ImhvdGVscyJ9YCxg5rWP6KeI5YWo6YOoICR7ZS50b3RhbH0g5a626YWS5bqXYCkpfTwvYnV0dG9uPgogICAgIDwvZGl2PmAsYDxkaXYgY2xhc3M9ImhvbWUtbGlua3MiPgogICAgICAgPGJ1dHRvbiBjbGFzcz0ibGlua3kiIHR5cGU9ImJ1dHRvbiIgZGF0YS1hY3Q9ImJvb2tpbmdzIj4ke2MoIk15IGJvb2tpbmdzIiwi5oiR55qE6aKE6K6iIil9PC9idXR0b24+CiAgICAgICA8c3BhbiBhcmlhLWhpZGRlbj0idHJ1ZSI+wrc8L3NwYW4+CiAgICAgICA8YnV0dG9uIGNsYXNzPSJsaW5reSIgdHlwZT0iYnV0dG9uIiBkYXRhLWFjdD0iZmluZC1ib29raW5nIj4ke2MoIkZpbmQgYSBib29raW5nIGJ5IGl0cyBjb2RlIiwi55So56Gu6K6k56CB5p+l5om+6aKE6K6iIil9PC9idXR0b24+CiAgICAgPC9kaXY+YF0uam9pbigiIil9LGJ0PTgsZWk9NixjZz1lPT57Y29uc3QgdD1lLmZvclN0YXk7cmV0dXJuIHQ/YDxzcGFuIGNsYXNzPSJ0LWZyb20iPiR7bCh0LnRvdGFsKX08c21hbGwgY2xhc3M9InQtc3ViIj48c3BhbiBjbGFzcz0ibmIiPiR7bChbTnVtYmVyKHQucm9vbXMpPjE/YyhgJHt0LnJvb21zfSByb29tcyDDl2AsYCR7dC5yb29tc33pl7Qgw5dgKToiIixOdW1iZXIodC5ob3Vycyk+MD9jKGAke3p0KHQuaG91cnMpfSB0b2RheWAsYOS7iuWkqSR7enQodC5ob3Vycyl9YCk6dWUoTnVtYmVyKHQubmlnaHRzKSldLmZpbHRlcihCb29sZWFuKS5qb2luKCIgIikpfTwvc3Bhbj48c3BhbiBjbGFzcz0idC1zZXAiPiDCtyA8L3NwYW4+PHNwYW4gY2xhc3M9Im5iIj4ke2MoInRheGVzIGluIiwi5ZCr56iO6LS5Iil9PC9zcGFuPjwvc21hbGw+PC9zcGFuPmA6ZS5ub1Jvb21zRm9yU3RheT9gPHNwYW4gY2xhc3M9InQtZnJvbSB0LW5vbmUiPiR7L3NsZWVwcy8udGVzdChTdHJpbmcoZS5ub1Jvb21zRm9yU3RheSkpP2woYyhgTm8gcm9vbSBzbGVlcHMgJHtTLmd1ZXN0c31gLGDmsqHmnInlj6/kvY8gJHtTLmd1ZXN0c30g5Lq655qE5oi/5Z6LYCkpOmMoIk5vIHJvb20gZm9yIHRoZXNlIGRhdGVzIiwi6L+Z5Lqb5pel5pyf5rKh5pyJ56m65oi/Iil9PC9zcGFuPmA6ZS5mcm9tTmlnaHRseT9gPHNwYW4gY2xhc3M9InQtZnJvbSI+PHNwYW4gY2xhc3M9InQtcHJlIj4ke2MoIkZyb20gIiwiIil9PC9zcGFuPiR7bChlLmZyb21OaWdodGx5KX0ke2MoIiIsJzxzcGFuIGNsYXNzPSJ0LXByZSI+IOi1tzwvc3Bhbj4nKX08c21hbGw+JHtjKCIgLyBuaWdodCArIHRheCIsIuavj+aZmu+8jOacquWQq+eojui0uSIpfTwvc21hbGw+PC9zcGFuPmA6YDxzcGFuIGNsYXNzPSJ0LWZyb20gdC1ub25lIj4ke2MoIkFkZCBkYXRlcyBmb3IgcHJpY2VzIiwi6YCJ5aW95pel5pyf55yL5Lu35qC8Iil9PC9zcGFuPmB9O2xldCBraT0hMTtjb25zdCBPXz1lPT57Y29uc3QgdD1lLmZvclN0YXk7aWYoIXQpcmV0dXJuIiI7Y29uc3Qgbj1bZS5sb3dlc3Q/YDxzcGFuIGNsYXNzPSJiYWRnZSBnb29kIj4ke2MoIkxvd2VzdCBwcmljZSIsIuacgOS9juS7tyIpfTwvc3Bhbj5gOiIiLC4uLihBcnJheS5pc0FycmF5KHQubGFiZWxzKT90LmxhYmVsczpbXSkubWFwKG89Pm1nW29dKS5maWx0ZXIoQm9vbGVhbikubWFwKG89PmA8c3BhbiBjbGFzcz0iYmFkZ2Uke28/LnNhdmU/IiBnb29kIjoiIn0iPiR7bChjKG8/LnRleHQ/PyIiLG8/LnpoPz8iIikpfTwvc3Bhbj5gKSx0LmZyZWVDYW5jZWxsYXRpb24mJiFraT9gPHNwYW4gY2xhc3M9InBlcmsiPiR7UC5jaGVja30ke2MoIkZyZWUgY2FuY2VsbGF0aW9uIiwi5YWN6LS55Y+W5raIIil9PC9zcGFuPmA6IiIsTnVtYmVyKHQucm9vbXNMZWZ0KTw9Mz9gPHNwYW4gY2xhc3M9ImJhZGdlIHdhcm4iPiR7bChjKGAke3Qucm9vbXNMZWZ0fSBsZWZ0YCxg5LuF5YmpICR7dC5yb29tc0xlZnR9IOmXtGApKX08L3NwYW4+YDoiIl0uZmlsdGVyKEJvb2xlYW4pO3JldHVybiBuLmxlbmd0aD9gPHNwYW4gY2xhc3M9InQtdGFncyI+JHtuLmpvaW4oIiIpfTwvc3Bhbj5gOiIifSxadD0oKT0+Uy5jaGVja0luJiZTLmNoZWNrT3V0P3tjaGVja0luOlMuY2hlY2tJbixjaGVja091dDpTLmNoZWNrT3V0LGd1ZXN0czpTLmd1ZXN0cywuLi5qPjE/e3Jvb21zOmp9Ont9fTp7fSxSXz1lPT57Y29uc3R7Y2hlY2tJbjp0LGNoZWNrT3V0Om4sZ3Vlc3RzOm8scm9vbXM6cywuLi5yfT1lPz97fTtyZXR1cm4gcn0sTl89KGUsdCk9Pntjb25zdHttaW46bixzdGFydDpvfT1hZyh0KTtyZXR1cm4oIVMuY2hlY2tJbnx8Uy5jaGVja0luPG4pJiYoUy5jaGVja0luPW8pLCghUy5jaGVja091dHx8Uy5jaGVja091dDw9Uy5jaGVja0luKSYmKFMuY2hlY2tPdXQ9SXQoUy5jaGVja0luLDEpKSxIcigibGNpIixuLHtyb29tczpZbCgiZGF0YS1saXN0LXJvb21zIiwibHJuIiksc2lkZTplPyIiOmA8YnV0dG9uIGNsYXNzPSJnbyIgdHlwZT0iYnV0dG9uIiBkYXRhLWFjdD0icHJpY2UtbGlzdCI+JHtjKCJTaG93IHByaWNlcyIsIuafpeeci+S7t+agvCIpfTwvYnV0dG9uPmAscGVuZGluZzohZX0pfTtsZXQgSGU9ImRhdGVzIjtjb25zdCBsZz0iZGF0ZXMiLHJzPWU9Pntjb25zdCB0PWU/P3t9O3JldHVybnsuLi50Lmdyb3VwfHx0LnN1cHBsaWVyP3tncm91cDp0Lmdyb3VwfHx0LnN1cHBsaWVyfTp7fSwuLi50LmJyYW5kP3ticmFuZDp0LmJyYW5kfTp7fSwuLi5BcnJheS5pc0FycmF5KHQuZmFjaWxpdGllcykmJnQuZmFjaWxpdGllcy5sZW5ndGg/e2ZhY2lsaXRpZXM6dC5mYWNpbGl0aWVzfTp7fSwuLi50LmZyZWVDYW5jZWxsYXRpb24/e2ZyZWVDYW5jZWxsYXRpb246ITB9Ont9LC4uLnQuYnJlYWtmYXN0P3ticmVha2Zhc3Q6ITB9Ont9fX0sZWQ9ZT0+e2NvbnN0e2dyb3VwOnQsc3VwcGxpZXI6bixicmFuZDpvLGZhY2lsaXRpZXM6cyxmcmVlQ2FuY2VsbGF0aW9uOnIsYnJlYWtmYXN0OmksLi4uYX09ZT8/e307cmV0dXJuIGF9LFpfPWU9Pntjb25zdCB0PXJzKGUpO3JldHVybih0Lmdyb3VwPzE6MCkrKHQuYnJhbmQ/MTowKSsodC5mYWNpbGl0aWVzPy5sZW5ndGg/PzApKyh0LmZyZWVDYW5jZWxsYXRpb24/MTowKSsodC5icmVha2Zhc3Q/MTowKX0sTV89ZT0+e2NvbnN0IHQ9ZS5yZWZpbmU7aWYoIXQpcmV0dXJuIiI7Y29uc3Qgbj0ocyxyLGksYSk9PmA8YnV0dG9uIGNsYXNzPSJjaGlwIHBsYWNlIHNvcnQiIHR5cGU9ImJ1dHRvbiIgZGF0YS1maWx0ZXI9IiR7bChzKX0iIGFyaWEtcHJlc3NlZD0iJHthPyJ0cnVlIjoiZmFsc2UifSI+JHtsKHIpfSA8c21hbGw+JHtsKGkpfTwvc21hbGw+PC9idXR0b24+YCxvPShzLHIpPT5yLmxlbmd0aD9gPGRpdiBjbGFzcz0iZmdyb3VwIj48c3BhbiBjbGFzcz0ic29ydHMtayI+JHtsKHMpfTwvc3Bhbj4ke3Iuam9pbigiIil9PC9kaXY+YDoiIjtyZXR1cm5bbyhjKCJHcm91cCIsIumbhuWboiIpLCh0Lmdyb3Vwcz8/W10pLm1hcChzPT5uKGBncm91cDoke3MuaWR9YCxTdHJpbmcoVHQocy5pZCk/Lm5hbWU/P3MuaWQpLHMuY291bnQscy5vbikpKSxvKGMoIkJyYW5kIiwi5ZOB54mMIiksKHQuYnJhbmRzPz9bXSkubWFwKHM9Pm4oYGJyYW5kOiR7cy5uYW1lfWAscy5uYW1lLHMuY291bnQscy5vbikpKSxvKGMoIkhhcyIsIuiuvuaWvSIpLCh0LmZhY2lsaXRpZXM/P1tdKS5tYXAocz0+bihgZmFjaWxpdHk6JHtzLmtleX1gLHMubGFiZWwscy5jb3VudCxzLm9uKSkpLG8oYygiUm9vbSIsIuaIv+WeiyIpLCh0LnJvb20/P1tdKS5tYXAocz0+bihzLmtleSxzLmxhYmVsLHMuY291bnQscy5vbikpKV0uam9pbigiIil9LHVnPShlLHQsbik9Pntjb25zdCBvPSEhZS5zdGF5Py5jaGVja0luLHM9Wl8oZS5hc2spLHI9TV8oZSksaT1kZy5maW5kKChbdV0pPT51PT09biksYT1pP2MoaVsxXSxpWzJdKTpjKCJSZWNvbW1lbmRlZCIsIuaOqOiNkCIpLGQ9KHUscCk9PmA8YnV0dG9uIGNsYXNzPSJjaGlwIHBsYWNlIHRvb2wiIHR5cGU9ImJ1dHRvbiIgZGF0YS1wYW5lbD0iJHt1fSIgYXJpYS1leHBhbmRlZD0iJHtIZT09PXU/InRydWUiOiJmYWxzZSJ9Ij4ke3B9PC9idXR0b24+YDtyZXR1cm5gCiAgICAke05fKG8sZSl9CiAgICAke3R8fHJ8fHM/YDxkaXYgY2xhc3M9InBsYWNlcyB0b29sYmFyIj4KICAgICAgJHt0P2QoInNvcnQiLGAke1Auc29ydH08c3Bhbj4ke2MoIlNvcnQiLCLmjpLluo8iKX0ke2MoIjogIiwi77yaIil9JHtsKGEpfTwvc3Bhbj5gKToiIn0KICAgICAgJHtyfHxzP2QoImZpbHRlcnMiLGAke1Auc2xpZGVyc308c3Bhbj4ke2MoIkZpbHRlcnMiLCLnrZvpgIkiKX0ke3M/YCDCtyAke3N9YDoiIn08L3NwYW4+YCk6IiJ9CiAgICAgICR7cz9gPGJ1dHRvbiBjbGFzcz0ibGlua3kiIHR5cGU9ImJ1dHRvbiIgZGF0YS1hY3Q9ImNsZWFyLWZpbHRlcnMiPiR7YygiQ2xlYXIiLCLmuIXpmaQiKX08L2J1dHRvbj5gOiIifQogICAgPC9kaXY+YDoiIn0KICAgICR7dD9gPGRpdiBjbGFzcz0iZmlsdGVyLXBhbmVsIiBkYXRhLXBhbmVsLWJvZHk9InNvcnQiJHtIZT09PSJzb3J0Ij8iIjoiIGhpZGRlbiJ9PiR7dH08L2Rpdj5gOiIifQogICAgJHtyP2A8ZGl2IGNsYXNzPSJmaWx0ZXItcGFuZWwiIGRhdGEtcGFuZWwtYm9keT0iZmlsdGVycyIke0hlPT09ImZpbHRlcnMiPyIiOiIgaGlkZGVuIn0+JHtyfTwvZGl2PmA6IiJ9YH0sZGc9W1siZ3JvdXAiLCJSZWNvbW1lbmRlZCIsIuaOqOiNkCJdLFsicHJpY2UtbG93IiwiTG93ZXN0IHByaWNlIiwi5Lu35qC85LuO5L2O5Yiw6auYIl0sWyJwcmljZS1oaWdoIiwiSGlnaGVzdCBwcmljZSIsIuS7t+agvOS7jumrmOWIsOS9jiJdLFsicmF0aW5nIiwiUmF0aW5nIiwi6K+E5YiGIl1dLGpfPTM7bGV0IFpuPSJpbmxpbmUiLHBnPVtdO2NvbnN0IE1uPSgpPT5abj09PSJmdWxsc2NyZWVuIixRbD0oKT0+e2NvbnN0IGU9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiI2NvbnRlbnQgLnRpbGVzIik7aWYoZT8ub2Zmc2V0V2lkdGgpe2NvbnN0IG89Z2V0Q29tcHV0ZWRTdHlsZShlKS5ncmlkVGVtcGxhdGVDb2x1bW5zLnNwbGl0KCIgIikuZmlsdGVyKEJvb2xlYW4pLmxlbmd0aDtpZihvPjApcmV0dXJuIG99Y29uc3QgdD13aW5kb3cuaW5uZXJXaWR0aHx8VigiY29udGVudCIpLmNsaWVudFdpZHRofHwwO2lmKHQ8PTUyMClyZXR1cm4gMTtjb25zdCBuPVYoImNvbnRlbnQiKS5jbGllbnRXaWR0aHx8dC00MDtyZXR1cm4gTWF0aC5tYXgoMSxNYXRoLmZsb29yKChuKzE0KS8yMzQpKXx8Mn07bGV0IFhsPTA7Y29uc3QgcV89NSxXcj0oZT0wKT0+e2NvbnN0IHQ9WGx8fFFsKCksbj10PT09MT9xXzpNYXRoLm1heCgyLHQqal8pO3JldHVybiBlPm4mJmU8PW4rTWF0aC5tYXgoMix0KT9lOm59O2xldCBrcz0wO2NvbnN0IExfPWU9PnJlPT09InpoIj9lLnJlcGxhY2UoLz5QcmV2aW91czwvZywiPuS4iuS4gOmhtTwiKS5yZXBsYWNlKC8+TmV4dDwvZywiPuS4i+S4gOmhtTwiKS5yZXBsYWNlKC9hcmlhLWxhYmVsPSJQcmV2aW91c1teIl0qIi9nLCdhcmlhLWxhYmVsPSLkuIrkuIDpobUiJykucmVwbGFjZSgvYXJpYS1sYWJlbD0iTmV4dFteIl0qIi9nLCdhcmlhLWxhYmVsPSLkuIvkuIDpobUiJykucmVwbGFjZSgvYXJpYS1sYWJlbD0iUGFnZXMiL2csJ2FyaWEtbGFiZWw9Iue/u+mhtSInKS5yZXBsYWNlKC8oXGQrKeKAkyhcZCspIG9mIChcZCspL2csIuesrCAkMeKAkyQyIOWutu+8jOWFsSAkMyDlrrYiKS5yZXBsYWNlKC8wIG9mIChcZCspL2csIuWFsSAkMSDlrrYiKS5yZXBsYWNlKC9WaWV3IGFsbCAoXGQrKS9nLCLmn6XnnIvlhajpg6ggJDEg5a62Iik6ZSxEXz1lPT57a3M9V3IoTnVtYmVyKGUudG90YWw/PyhlLmhvdGVscz8/W10pLmxlbmd0aCktTnVtYmVyKGUub2Zmc2V0Pz8wKSk7Y29uc3QgdD1NbigpP2UuaG90ZWxzPz9bXTooZS5ob3RlbHM/P1tdKS5zbGljZSgwLGtzKTtraT10Lmxlbmd0aD4xJiZ0LmV2ZXJ5KHg9PnguZm9yU3RheT8uZnJlZUNhbmNlbGxhdGlvbik7Y29uc3Qgbj1bLi4ubmV3IFNldCh0Lm1hcCh4PT5TdHJpbmcoeC5jaXR5KSkpXSxvPXg9Pntjb25zdCBBPXQuZmluZChGPT5GLmNpdHk9PT14KT8uY291bnRyeTtyZXR1cm4gQSYmIVN0cmluZyhBKS5zdGFydHNXaXRoKHgpP1N0cmluZyhBKToiIn0scz1bLi4ubmV3IFNldCh0Lm1hcCh4PT5TdHJpbmcoeC5jb3VudHJ5Pz8iIikpKV0scj1zLmxlbmd0aD4xLGk9eD0+YAogICAgPGRpdiBjbGFzcz0iY2l0eWdyb3VwIj4KICAgICAgJHtuLmxlbmd0aD4xP2A8ZGl2IGNsYXNzPSJjaXR5bmFtZSI+JHtsKHgpfSR7IXImJm8oeCk/YDxzbWFsbD4gwrcgJHtsKG8oeCkpfTwvc21hbGw+YDoiIn08L2Rpdj5gOiIifQogICAgICA8ZGl2IGNsYXNzPSJ0aWxlcyI+CiAgICAgICAgJHt0LmZpbHRlcihBPT5BLmNpdHk9PT14KS5tYXAoQT0+YAogICAgICAgICAgPGJ1dHRvbiBjbGFzcz0idGlsZSR7QS5sb3dlc3Q/IiBsb3dlc3QiOiIifSIgdHlwZT0iYnV0dG9uIiBkYXRhLWhvdGVsPSIke2woQS5pZCl9Ij4KICAgICAgICAgICAgPHNwYW4gY2xhc3M9InQtc2hvdCIgc3R5bGU9IiR7dXQoU3RyaW5nKEEuaWQpKX0iPgogICAgICAgICAgICAgICR7QS5pbWFnZVVybD9gPGltZyBzcmM9IiR7bChBLmltYWdlVXJsKX0iIGFsdD0iIj5gOiIifQogICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0LW1hcmsiPiR7bChkdChTdHJpbmcoQS5uYW1lKSkpfTwvc3Bhbj4KICAgICAgICAgICAgICAke0luKEEpP2A8c3BhbiBjbGFzcz0idC1icmFuZCI+JHtsKEluKEEpKX08L3NwYW4+YDoiIn0KICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICA8c3BhbiBjbGFzcz0idC1ib2R5Ij4KICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idC1uYW1lIj4ke0ZvKEEubmFtZSl9PC9zcGFuPgogICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0LW1ldGEiPgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InQtd2hlcmUiPiR7bChbQS5hcmVhLG4ubGVuZ3RoPjF8fFN0cmluZyhBLm5hbWUpLmluY2x1ZGVzKFN0cmluZyhBLmNpdHkpKT8iIjpBLmNpdHldLmZpbHRlcihCb29sZWFuKS5qb2luKCIgwrcgIikpfTwvc3Bhbj4KICAgICAgICAgICAgICAgICR7X18oQS5yYXRpbmcpfQogICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAke09fKEEpfQogICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0LWZvb3QiPiR7Y2coQSl9PHNwYW4gY2xhc3M9InQtZ28iIGFyaWEtaGlkZGVuPSJ0cnVlIj4ke1AuY2hldlJ9PC9zcGFuPjwvc3Bhbj4KICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgPC9idXR0b24+YCkuam9pbigiIil9CiAgICAgIDwvZGl2PgogICAgPC9kaXY+YCxhPU51bWJlcihlLnRvdGFsPz90Lmxlbmd0aCksZD1OdW1iZXIoZS5vZmZzZXQ/PzApLHU9YS1kLXQubGVuZ3RoLHA9ZS5wbGFjZXM/P1tdO2UuYXNrPy5jaXR5O2NvbnN0IGg9cC5sZW5ndGg/YDxkaXYgY2xhc3M9InBsYWNlcyIgcm9sZT0iZ3JvdXAiIGFyaWEtbGFiZWw9IiR7YygiV2hlcmUiLCLlnLDngrkiKX0iPgogICAgICAgICAgICR7cC5tYXAoKHgsQSk9PmA8YnV0dG9uIGNsYXNzPSJjaGlwIHBsYWNlIiB0eXBlPSJidXR0b24iIGRhdGEtcGxhY2U9IiR7bCh4LnBsYWNlKX0iJHtBPj1idD8iIGhpZGRlbiI6IiJ9PiR7bCh4LmxhYmVsKX0gPHNtYWxsPiR7bCh4LmNvdW50KX08L3NtYWxsPjwvYnV0dG9uPmApLmpvaW4oIiIpfQogICAgICAgICAgICR7cC5sZW5ndGg+YnQ/YDxidXR0b24gY2xhc3M9ImNoaXAgcGxhY2UiIHR5cGU9ImJ1dHRvbiIgZGF0YS1hY3Q9Im1vcmUtcGxhY2VzIj4rJHtwLmxlbmd0aC1idH0gbW9yZTwvYnV0dG9uPmA6IiJ9CiAgICAgICAgIDwvZGl2PmA6IiIsYj1TdHJpbmcoZS5zb3J0Pz8iZ3JvdXAiKSwkPSEoKGUuY3VycmVuY2llcz8/W10pLmxlbmd0aD4xKSxrPXQubGVuZ3RoPjE/YDxkaXYgY2xhc3M9InBsYWNlcyIgcm9sZT0iZ3JvdXAiIGFyaWEtbGFiZWw9IiR7YygiT3JkZXIiLCLmjpLluo8iKX0iPiR7ZGcuZmlsdGVyKChbeF0pPT4kfHwheC5zdGFydHNXaXRoKCJwcmljZSIpKS5tYXAoKFt4LEEsRl0pPT5gPGJ1dHRvbiBjbGFzcz0iY2hpcCBwbGFjZSBzb3J0IiB0eXBlPSJidXR0b24iIGRhdGEtc29ydD0iJHt4fSIgYXJpYS1wcmVzc2VkPSIke3g9PT1iPyJ0cnVlIjoiZmFsc2UifSI+JHtjKEEsRil9PC9idXR0b24+YCkuam9pbigiIil9PC9kaXY+YDoiIixUPWUuYXNrPy5jaXR5P1N0cmluZyhlLmFzay5jaXR5KTplLmFzaz8ucXVlcnk/YOKAnCR7U3RyaW5nKGUuYXNrLnF1ZXJ5KX3igJ1gOm4ubGVuZ3RoPT09MT9TdHJpbmcoblswXSk6YyhgQWxsICR7ZS52b2NhYj8ubm91blBsdXJhbD8/ImhvdGVscyJ9YCwi5YWo6YOo6YWS5bqXIiksXz0hIWUuc3RheT8uY2hlY2tJbjtyZXR1cm5bYDxkaXYgY2xhc3M9Imxpc3QtaCI+PGgyIGNsYXNzPSJoLW5hbWUiPiR7bChUKX08L2gyPjxkaXYgY2xhc3M9Imgtd2hlcmUiPiR7bChyZT09PSJ6aCI/YCR7YX0g5a62JHtfP2AgwrcgJHt1ZShDZShlLnN0YXkuY2hlY2tJbixlLnN0YXkuY2hlY2tPdXQpKX0ke2o+MT9g44CBJHtqfemXtGA6IiJ955qE5ZCr56iO5oC75Lu3YDoiIMK3IOmAieWlveaXpeacn+eci+S9j+Wuv+aAu+S7tyJ9YDpgJHthfSAke2E9PT0xP2Uudm9jYWI/Lm5vdW4/PyJob3RlbCI6ZS52b2NhYj8ubm91blBsdXJhbD8/ImhvdGVscyJ9JHtfP2AgwrcgcHJpY2VzIGZvciAke3VlKENlKGUuc3RheS5jaGVja0luLGUuc3RheS5jaGVja091dCkpfSR7aj4xP2AsICR7an0gcm9vbXNgOiIifSwgdGF4ZXMgaW5gOiIgwrcgYWRkIGRhdGVzIHRvIHNlZSB3aGF0IGEgc3RheSBjb3N0cyJ9YCl9JHtraT9gPC9kaXY+PGRpdiBjbGFzcz0iaC1mcmVlIj4ke1AuY2hlY2t9JHtjKCJFdmVyeSBob3RlbCBoZXJlIGlzIGZyZWUgdG8gY2FuY2VsIiwi6L+Z6YeM5q+P5a626YO95Y+v5Lul5YWN6LS55Y+W5raIIil9YDoiIn08L2Rpdj48L2Rpdj5gLGgsdWcoZSxrLGIpLGUud2lkZW5lZD9gPGRpdiBjbGFzcz0id2Fybm5vdGUiPiR7bChjKGBOb3RoaW5nIG1hdGNoZWQgJHtlLndpZGVuZWQuZnJvbX0uIFRoZXNlIGFyZSAke2Uud2lkZW5lZC50b30uYCxg5rKh5pyJ5om+5Yiw5LiO4oCcJHtlLndpZGVuZWQuZnJvbX3igJ3nm7jnrKbnmoTnu5PmnpzvvIzku6XkuIvmmK8ke2Uud2lkZW5lZC50b33jgIJgKSl9PC9kaXY+YDoiIixgPGRpdj4ke3I/cy5tYXAoeD0+YDxkaXYgY2xhc3M9ImNvdW50cnluYW1lIj4ke2woeCl9PC9kaXY+JHtuLmZpbHRlcihBPT50LnNvbWUoRj0+Ri5jaXR5PT09QSYmU3RyaW5nKEYuY291bnRyeT8/IiIpPT09eCkpLm1hcChpKS5qb2luKCIiKX1gKS5qb2luKCIiKTpuLm1hcChpKS5qb2luKCIiKX08L2Rpdj5gLChlLmN1cnJlbmNpZXM/P1tdKS5sZW5ndGg+MT9gPGRpdiBjbGFzcz0ibm90ZSI+JHtsKGMoYFF1b3RlZCBpbiAke2UuY3VycmVuY2llcy5qb2luKCIsICIpfSDigJQgbm8gcmF0ZSBpcyBhcHBsaWVkIGhlcmUsIHNvIHRoaXMgaXMgbm90IGEgcHJpY2Ugb3JkZXIuIE9uZSBjaXR5IG9yIG9uZSBjb3VudHJ5IGdpdmVzIG9uZSBjdXJyZW5jeS5gLGDku7fmoLzliIbliKvku6UgJHtlLmN1cnJlbmNpZXMuam9pbigi44CBIil9IOiuoe+8jOi/memHjOS4jeWBmuaNoueul++8jOaJgOS7peS4jeaMieS7t+agvOaOkuW6j+OAguWPqueci+S4gOS4quWfjuW4guaIluWbveWutu+8jOWwseWPquacieS4gOenjeW4geenjeOAgmApKX08L2Rpdj5gOiIiLGUub3ZlckJ1ZGdldD9gPGRpdiBjbGFzcz0ibm90ZSI+JHtsKGMoYCR7ZS5vdmVyQnVkZ2V0fSBtb3JlIG1hdGNoZWQgYW5kIGNhbWUgaW4gb3ZlciB0aGUgcHJpY2UgY2VpbGluZy5gLGDlj6bmnIkgJHtlLm92ZXJCdWRnZXR9IOWutuespuWQiOadoeS7tu+8jOS9hui2heWHuuS6huS7t+agvOS4iumZkOOAgmApKX08L2Rpdj5gOiIiLE1uKCk/dT4wP2A8ZGl2IGNsYXNzPSJub3RlIj4ke2woYyhgU2hvd2luZyAke2Q/YCR7ZCsxfeKAkyR7ZCt0Lmxlbmd0aH1gOnQubGVuZ3RofSBvZiAke2F9LmAsYOaYvuekuuesrCAke2Q/YCR7ZCsxfeKAkyR7ZCt0Lmxlbmd0aH1gOmAx4oCTJHt0Lmxlbmd0aH1gfSDlrrbvvIzlhbEgJHthfSDlrrbjgIJgKSl9PC9kaXY+CiAgICAgICAgICAgJHtsXyhjKGBTaG93ICR7TWF0aC5taW4oMTIsdSl9IG1vcmVgLGDlho3mmL7npLogJHtNYXRoLm1pbigxMix1KX0g5a62YCksJ2RhdGEtYWN0PSJtb3JlLWhvdGVscyInKX1gOiIiOkxfKGNfKHtmcm9tOmQsY291bnQ6dC5sZW5ndGgsdG90YWw6TnVtYmVyKGEpLHByZXY6J2RhdGEtYWN0PSJwYWdlLXByZXYiJyxuZXh0OidkYXRhLWFjdD0icGFnZS1uZXh0IicsYWxsOnBnLmluY2x1ZGVzKCJmdWxsc2NyZWVuIik/J2RhdGEtYWN0PSJmdWxsc2NyZWVuIic6bnVsbCxub3VuOiJob3RlbHMifSkpXS5qb2luKCIiKX0sQl89ZT0+e2NvbnN0IHQ9ZS5uZWFyZXN0Pz9bXSxuPWUud2lkZW5lZD9gPGRpdiBjbGFzcz0id2Fybm5vdGUiPiR7bChjKGBOb3RoaW5nIG1hdGNoZWQgJHtlLndpZGVuZWQuZnJvbX0sIHNvIHRoaXMgbG9va2VkIGluICR7ZS53aWRlbmVkLnRvfS5gLGDmsqHmnInmib7liLDkuI7igJwke2Uud2lkZW5lZC5mcm9tfeKAneebuOespueahOe7k+aenO+8jOaUueS4uuWcqCR7ZS53aWRlbmVkLnRvfemHjOaJvuOAgmApKX08L2Rpdj5gOiIiO2lmKGUuYmVmb3JlRmlsdGVycylyZXR1cm4gSGU9ImZpbHRlcnMiLFtuLGA8ZGl2IGNsYXNzPSJ3YXJubm90ZSI+JHtsKHJlPT09InpoIj9g6L+Z6YeM55qEICR7ZS5iZWZvcmVGaWx0ZXJzfSDlrrbphZLlupfvvIzmsqHmnInkuIDlrrblkIzml7bmu6HotrPov5nkupvmnaHku7bjgIJgOmUud2h5Pz9gTm9uZSBvZiB0aGUgJHtlLmJlZm9yZUZpbHRlcnN9IGhlcmUgaGFzIGFsbCBvZiB0aG9zZSB0b2dldGhlci5gKX08L2Rpdj5gLHVnKGUsIiIsU3RyaW5nKGUuYXNrPy5zb3J0Pz8iZ3JvdXAiKSldLmpvaW4oIiIpO2lmKCF0Lmxlbmd0aCl7Y29uc3Qgbz1TdHJpbmcoZS5hc2s/LmNpdHk/P2UucXVlcnk/P2Uud2lkZW5lZD8uZnJvbT8/IiIpO3JldHVybmAke259CiAgICAgIDxkaXYgY2xhc3M9InN0YXRlIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzdGF0ZS1pY28iPiR7UC5zZWFyY2h9PC9kaXY+CiAgICAgICAgPGgyIGNsYXNzPSJzdGF0ZS10Ij4ke28/bChjKGBOb3RoaW5nIGluIOKAnCR7b33igJ1gLGDigJwke2994oCd5rKh5pyJ57uT5p6cYCkpOmMoIk5vIGhvdGVscyBtYXRjaCIsIuayoeacieespuWQiOadoeS7tueahOmFkuW6lyIpfTwvaDI+CiAgICAgICAgPHAgY2xhc3M9InN0YXRlLWQiPiR7bz9sKGMoYE5vIGhvdGVsIGhlcmUgaXMgaW4gb3IgbmVhciDigJwke2994oCdLiBUcnkgYSBjaXR5IG9yIGEgY291bnRyeS5gLGDov5nph4zmsqHmnInkvY3kuo7igJwke2994oCd5oiW6ZmE6L+R55qE6YWS5bqX44CC5o2i5Liq5Z+O5biC5oiW5Zu95a626K+V6K+V44CCYCkpOmMoIlRyeSBhIGNpdHksIGEgY291bnRyeSBvciBhIGhvdGVsIG5hbWUuIiwi5o2i5Liq5Z+O5biC44CB5Zu95a625oiW6YWS5bqX5ZCN6K+V6K+V44CCIil9PC9wPgogICAgICAgIDxkaXYgY2xhc3M9InNlYXJjaCByZXRyeSI+CiAgICAgICAgICA8bGFiZWwgY2xhc3M9IndoZXJlIj4ke1Auc2VhcmNofTxpbnB1dCBpZD0id2hlcmUiIHR5cGU9InNlYXJjaCIgYXV0b2NvbXBsZXRlPSJvZmYiIHBsYWNlaG9sZGVyPSIke2MoIkNpdHkgb3IgaG90ZWwiLCLln47luILmiJbphZLlupflkI0iKX0iIGFyaWEtbGFiZWw9IiR7YygiV2hlcmUgdG8iLCLnm67nmoTlnLAiKX0iPjwvbGFiZWw+CiAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJnbyIgdHlwZT0iYnV0dG9uIiBkYXRhLWFjdD0iZmluZCI+JHtjKCJTZWFyY2giLCLmkJzntKIiKX08L2J1dHRvbj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJmb290Ij48YnV0dG9uIGNsYXNzPSJnbyBxdWlldCIgdHlwZT0iYnV0dG9uIiBkYXRhLWFjdD0iaG9tZSI+JHtQLnBpbn0ke2MoIlNlZSBldmVyeSBkZXN0aW5hdGlvbiIsIuafpeeci+WFqOmDqOebrueahOWcsCIpfTwvYnV0dG9uPjwvZGl2PgogICAgICA8L2Rpdj5gfXJldHVybltuLGA8ZGl2IGNsYXNzPSJ3YXJubm90ZSI+JHtsKGMoYE5vdGhpbmcgY2FtZSBpbiB1bmRlciB0aGUgcHJpY2UgY2VpbGluZy4gJHt0Lmxlbmd0aD09PTE/IlRoZSBuZWFyZXN0IGlzIjoiVGhlIG5lYXJlc3QgYXJlIn0gb3ZlciBpdC5gLCLmsqHmnInkvY7kuo7ku7fmoLzkuIrpmZDnmoTphZLlupfjgILku6XkuIvmmK/mnIDmjqXov5HnmoTlh6DlrrbvvIzku7fmoLznlaXpq5jjgIIiKSl9PC9kaXY+YCxgPGRpdiBjbGFzcz0idGlsZXMiPiR7dC5tYXAobz0+YAogICAgICA8YnV0dG9uIGNsYXNzPSJ0aWxlIG92ZXIiIHR5cGU9ImJ1dHRvbiIgZGF0YS1ob3RlbD0iJHtsKG8uaWQpfSI+CiAgICAgICAgPHNwYW4gY2xhc3M9InQtc2hvdCIgc3R5bGU9IiR7dXQoU3RyaW5nKG8uaWQpKX0iPgogICAgICAgICAgJHtvLmltYWdlVXJsP2A8aW1nIHNyYz0iJHtsKG8uaW1hZ2VVcmwpfSIgYWx0PSIiPmA6IiJ9CiAgICAgICAgICA8c3BhbiBjbGFzcz0idC1tYXJrIj4ke2woZHQoU3RyaW5nKG8ubmFtZSkpKX08L3NwYW4+CiAgICAgICAgPC9zcGFuPgogICAgICAgIDxzcGFuIGNsYXNzPSJ0LWJvZHkiPgogICAgICAgICAgPHNwYW4gY2xhc3M9InQtbmFtZSI+JHtsKG8ubmFtZSl9PC9zcGFuPgogICAgICAgICAgPHNwYW4gY2xhc3M9InQtd2hlcmUiPiR7bChbby5hcmVhLG8uY2l0eV0uZmlsdGVyKEJvb2xlYW4pLmpvaW4oIiDCtyAiKSl9PC9zcGFuPgogICAgICAgICAgPHNwYW4gY2xhc3M9InQtZm9vdCI+CiAgICAgICAgICAgICR7Y2cobyl9CiAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJiYWRnZSB3YXJuIj4ke2MoIk92ZXIiLCLotoXlh7oiKX08L3NwYW4+CiAgICAgICAgICA8L3NwYW4+CiAgICAgICAgPC9zcGFuPgogICAgICA8L2J1dHRvbj5gKS5qb2luKCIiKX08L2Rpdj5gXS5qb2luKCIiKX0saGc9ZT0+e2NvbnN0IHQ9W2UuYXJlYSxlLmNpdHksU3RyaW5nKGUuY291bnRyeT8/IiIpLnN0YXJ0c1dpdGgoU3RyaW5nKGUuY2l0eSkpfHxyZT09PSJ6aCImJiFLdChTdHJpbmcoZS5jb3VudHJ5Pz8iIikpPyIiOmUuY291bnRyeV0uZmlsdGVyKEJvb2xlYW4pLmpvaW4oIiDCtyAiKTtyZXR1cm5gCiAgPGRpdiBjbGFzcz0iaGVybyIgc3R5bGU9IiR7dXQoU3RyaW5nKGUuaWQpKX0iPgogICAgJHtlLmltYWdlVXJsP2A8aW1nIHNyYz0iJHtsKGUuaW1hZ2VVcmwpfSIgYWx0PSIiPmA6IiJ9CiAgICA8c3BhbiBjbGFzcz0idC1tYXJrIj4ke2woZHQoU3RyaW5nKGUubmFtZSkpKX08L3NwYW4+CiAgICA8ZGl2IGNsYXNzPSJoZXJvLXR4dCI+CiAgICAgICR7SW4oZSkmJiFTdHJpbmcoZS5uYW1lKS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKEluKGUpLnRvTG93ZXJDYXNlKCkpP2A8c3BhbiBjbGFzcz0idC1icmFuZCI+JHtsKEluKGUpKX08L3NwYW4+YDoiIn0KICAgICAgPGgyIGNsYXNzPSJob3RlbC1uYW1lIj4ke0ZvKGUubmFtZSl9PC9oMj4KICAgICAgPGRpdiBjbGFzcz0iaGVyby13aGVyZSI+PHNwYW4+JHtsKHQpfTwvc3Bhbj4ke2UucmF0aW5nP2A8c3BhbiBjbGFzcz0icmF0ZSI+JHtlZ30ke2woZS5yYXRpbmcudmFsdWUpfTxzbWFsbD4oJHtsKE51bWJlcihlLnJhdGluZy5jb3VudCkudG9Mb2NhbGVTdHJpbmcoImVuLUdCIikpfSk8L3NtYWxsPjwvc3Bhbj5gOiIifTwvZGl2PgogICAgPC9kaXY+CiAgPC9kaXY+CiAgJHtlLnN1bW1hcnk/L15ccyoo5qih5ouf5pWw5o2ufHNpbXVsYXRlZHx0ZXN0IGRhdGEpL2kudGVzdChTdHJpbmcoZS5zdW1tYXJ5KSk/YDxkaXYgY2xhc3M9Imgtc3VtIHNpbS1ub3RlIj4ke1AuaW5mb308c3Bhbj4ke2woZS5zdW1tYXJ5KX08L3NwYW4+PC9kaXY+YDpgPGRpdiBjbGFzcz0iaC1zdW0iPiR7bChlLnN1bW1hcnkpfTwvZGl2PmA6IiJ9CiAgJHsoZS5hbWVuaXRpZXM/P1tdKS5sZW5ndGg/YDx1bCBjbGFzcz0iYW1lbiIgYXJpYS1sYWJlbD0iJHtjKCJXaGF0IHRoZSBob3RlbCBoYXMiLCLphZLlupforr7mlr0iKX0iPiR7ZS5hbWVuaXRpZXMuc2xpY2UoMCw4KS5tYXAobj0+YDxsaT4ke2wobil9PC9saT5gKS5qb2luKCIiKX08L3VsPmA6IiJ9YH0sbWc9eyJyb29tLW9ubHkiOnt0ZXh0OiJSb29tIG9ubHkiLHpoOiLkuI3lkKvml6kifSxicmVha2Zhc3Q6e3RleHQ6IkJyZWFrZmFzdCIsemg6IuWQq+aXqSJ9LCJicmVha2Zhc3QtMSI6e3RleHQ6IkJyZWFrZmFzdCBmb3IgMSIsemg6IuWNleaXqSJ9LCJicmVha2Zhc3QtMiI6e3RleHQ6IkJyZWFrZmFzdCBmb3IgMiIsemg6IuWPjOaXqSJ9LCJicmVha2Zhc3QtMyI6e3RleHQ6IkJyZWFrZmFzdCBmb3IgMyIsemg6IuS4ieaXqSJ9LHBhY2thZ2U6e3RleHQ6IlBhY2thZ2UiLHpoOiLlpZfppJAifSwiZmxhc2gtc2FsZSI6e3RleHQ6IkZsYXNoIHNhbGUiLHpoOiLpmZDml7bnibnku7ciLHNhdmU6ITB9LCJuaWdodC1zbmFjayI6e3RleHQ6IkxhdGUtbmlnaHQgcmF0ZSIsemg6IuWknOWuteS7tyIsc2F2ZTohMH0sImVhcmx5LWJvb2tpbmciOnt0ZXh0OiJCb29rLWFoZWFkIHJhdGUiLHpoOiLmj5DliY3orqLkvJjmg6AiLHNhdmU6ITB9LHByb21vdGlvbjp7dGV4dDoiUHJvbW90aW9uIix6aDoi5L+D6ZSAIixzYXZlOiEwfX0sZXU9KGUsdD1uZXcgU2V0KT0+W2UuYmVkcyYmIXQuaGFzKCJiZWRzIik/YDxsaT4ke1AuYmVkfSR7bChlLmJlZHMpfTwvbGk+YDoiIix0Lmhhcygic2xlZXBzIik/IiI6YDxsaT4ke1AudXNlcnN9JHtsKGMoYFNsZWVwcyAke2Uuc2xlZXBzfWAsYOWPr+S9jyAke2Uuc2xlZXBzfSDkurpgKSl9JHtOdW1iZXIoZS5tYXhDaGlsZHJlbik+MD9sKGMoYCDCtyAke2UubWF4Q2hpbGRyZW59ICR7TnVtYmVyKGUubWF4Q2hpbGRyZW4pPT09MT8iY2hpbGQiOiJjaGlsZHJlbiJ9YCxgIMK3IOWPr+W4piAke2UubWF4Q2hpbGRyZW59IOWQjeWEv+erpWApKToiIn08L2xpPmAsZS5zaXplU3FtP2A8bGk+JHtQLnNpemV9JHtsKGUuc2l6ZVNxbSl9IG3CsjwvbGk+YDoiIixlLnZpZXcmJiF0LmhhcygidmlldyIpP2A8bGk+JHsvd2luZG93fOeqly9pLnRlc3QoU3RyaW5nKGUudmlldykpP1Aud2luZG93OlAudmlld30ke2woSnQoZS52aWV3KSl9PC9saT5gOiIiXS5qb2luKCIiKSx0dT1lPT57Y29uc3QgdD1BcnJheS5pc0FycmF5KGUubGFiZWxzKT9lLmxhYmVsczpbXTtyZXR1cm5bZS5icmVha2Zhc3QmJiF0LnNvbWUobj0+bi5zdGFydHNXaXRoKCJicmVha2Zhc3QiKSk/YDxsaSBjbGFzcz0icGVyayI+JHtQLmN1cH08c3Bhbj4ke2MoIjxiPkJyZWFrZmFzdDwvYj4gaW5jbHVkZWQiLCI8Yj7lkKvml6nppJA8L2I+Iil9PC9zcGFuPjwvbGk+YDoiIixlLmhvdXJseT8iIjplLnJlZnVuZGFibGU/YDxsaSBjbGFzcz0icGVyayI+JHtQLmNoZWNrfTxzcGFuPjxiPiR7YygiRnJlZSBjYW5jZWxsYXRpb24iLCLlhY3otLnlj5bmtogiKX08L2I+JHtlLmZyZWVDYW5jZWxsYXRpb25Mb2NhbD9sKGMoYCB1bnRpbCAke1N0cmluZyhlLmZyZWVDYW5jZWxsYXRpb25Mb2NhbCkucmVwbGFjZSgvIC9nLCLCoCIpfWAsYO+8jCR7SnQoZS5mcmVlQ2FuY2VsbGF0aW9uTG9jYWwpfSDliY1gKSk6IiJ9PC9zcGFuPjwvbGk+YDpgPGxpIGNsYXNzPSJwZXJrIHdhcm4iPiR7UC5hbGVydH08c3Bhbj48Yj4ke2MoIk5vbi1yZWZ1bmRhYmxlIiwi5LiN5Y+v5Y+W5raIIil9PC9iPiR7YygiIOKAlCB0aGlzIHJhdGUgY2Fubm90IGJlIGNhbmNlbGxlZCIsIu+8jOatpOS7t+agvOiuouWQjuS4jeiDvemAgOaUuSIpfTwvc3Bhbj48L2xpPmAsZS5tZW1iZXJSYXRlP2A8bGkgY2xhc3M9InBlcmsgc2F2ZSI+JHtQLnRhZ308c3Bhbj48Yj4ke2woYyhgJHtlLm1lbWJlclJhdGUudGllcn0gbWVtYmVyIHJhdGVgLGAke2UubWVtYmVyUmF0ZS50aWVyfeS8muWRmOS7t2ApKX08L2I+JHtjKCIgYXBwbGllZCIsIuW3sueUn+aViCIpfTwvc3Bhbj48L2xpPmA6IiIsZS5wYXltZW50PT09InByZXBhaWQiP2A8bGkgY2xhc3M9InBlcmsiPiR7UC5sb2NrfTxzcGFuPjxiPiR7YygiUGFpZCBpbiBhZHZhbmNlIiwi6ZyA6aKE5LuYIil9PC9iPjwvc3Bhbj48L2xpPmA6IiJdLmpvaW4oIiIpfSxudT1lPT57Y29uc3Qgbj0oQXJyYXkuaXNBcnJheShlLmxhYmVscyk/ZS5sYWJlbHM6W10pLm1hcChvPT5tZ1tvXSkuZmlsdGVyKEJvb2xlYW4pLm1hcChvPT5gPHNwYW4gY2xhc3M9ImJhZGdlJHtvPy5zYXZlPyIgZ29vZCI6IiJ9Ij4ke2woYyhvPy50ZXh0Pz8iIixvPy56aD8/IiIpKX08L3NwYW4+YCk7cmV0dXJuIG4ubGVuZ3RoP2A8ZGl2IGNsYXNzPSJiYWRnZXMiPiR7bi5qb2luKCIiKX08L2Rpdj5gOiIifSxVXz17V2luZG93OiLmnInnqpciLCJObyB3aW5kb3ciOiLml6DnqpciLCJSb29tIG9ubHkiOiLkuI3lkKvml6kiLCJCcmVha2Zhc3QgaW5jbHVkZWQiOiLlkKvml6kiLENpdHk6IuWfjuaZryJ9LHRkPVsiSmFuIiwiRmViIiwiTWFyIiwiQXByIiwiTWF5IiwiSnVuIiwiSnVsIiwiQXVnIiwiU2VwIiwiT2N0IiwiTm92IiwiRGVjIl0sbmQ9WyJTdW4iLCJNb24iLCJUdWUiLCJXZWQiLCJUaHUiLCJGcmkiLCJTYXQiXSxKdD1lPT57Y29uc3QgdD1TdHJpbmcoZT8/IiIpO3JldHVybiByZSE9PSJ6aCI/dDp0LnNwbGl0KCIgwrcgIikubWFwKG49Pntjb25zdCBvPS9eKFx3ezN9KSAoXGR7MSwyfSkgKFx3ezN9KSw/IChcZHsxLDJ9OlxkezJ9KSQvLmV4ZWMobi50cmltKCkpO3JldHVybiBvJiZ0ZC5pbmNsdWRlcyhvWzNdPz8iIikmJm5kLmluY2x1ZGVzKG9bMV0/PyIiKT9gJHt0ZC5pbmRleE9mKG9bM10/PyIiKSsxfeaciCR7b1syXX3ml6UgJHt0Z1tuZC5pbmRleE9mKG9bMV0/PyIiKV19ICR7b1s0XX1gOlVfW24udHJpbSgpXT8/bn0pLmpvaW4oIiDCtyAiKX0sRl89KGUsdCxuKT0+e2NvbnN0W28sc109dC5zcGxpdCgiOiIpLm1hcChOdW1iZXIpLHI9KG8/PzApKjYwKyhzPz8wKStuKjYwLGk9YCR7U3RyaW5nKE1hdGguZmxvb3Ioci82MCklMjQpLnBhZFN0YXJ0KDIsIjAiKX06JHtTdHJpbmcociU2MCkucGFkU3RhcnQoMiwiMCIpfWA7cmV0dXJuYCR7QWUoZSl9IMK3ICR7dH3igJMke2l9IMK3ICR7bn0gJHtuPT09MT8iaG91ciI6ImhvdXJzIn1gfSxWcj0oZSx0KT0+dD8uc3RhcnQmJmU/LmNoZWNrSW4/Rl8oU3RyaW5nKGUuY2hlY2tJbiksU3RyaW5nKHQuc3RhcnQpLE51bWJlcih0LmhvdXJzKSk6SG8oZSksb3U9KGUsdCk9PntpZighZT8uY2hlY2tJbnx8IWU/LmNoZWNrT3V0KXJldHVybiIiO2NvbnN0IG49KHMscixpPSIiKT0+e2NvbnN0IGE9RmUocik7cmV0dXJuYDxkaXYgY2xhc3M9ImJhbmQtZCI+PHNwYW4gY2xhc3M9IndsIj4ke3N9PC9zcGFuPjxzcGFuIGNsYXNzPSJ3diI+JHtsKGEubWQpfTxzbWFsbD4ke2woYS5kb3cpfSR7aX08L3NtYWxsPjwvc3Bhbj48L2Rpdj5gfTtpZih0Py5zdGFydCl7Y29uc3RbcyxyXT1TdHJpbmcodC5zdGFydCkuc3BsaXQoIjoiKS5tYXAoTnVtYmVyKSxpPShzPz8wKSo2MCsocj8/MCkrTnVtYmVyKHQuaG91cnMpKjYwLGE9YCR7U3RyaW5nKE1hdGguZmxvb3IoaS82MCklMjQpLnBhZFN0YXJ0KDIsIjAiKX06JHtTdHJpbmcoaSU2MCkucGFkU3RhcnQoMiwiMCIpfWA7cmV0dXJuYDxkaXYgY2xhc3M9ImJhbmQiIHJvbGU9Imdyb3VwIiBhcmlhLWxhYmVsPSIke2woVnIoZSx0KSl9Ij4ke24oYygiQXJyaXZlIiwi5Yiw5bqXIiksZS5jaGVja0luLGAgJHtsKHQuc3RhcnQpfWApfTxzcGFuIGNsYXNzPSJ3aGVuLW4iPiR7bCh6dCh0LmhvdXJzKSl9PC9zcGFuPjxkaXYgY2xhc3M9ImJhbmQtZCI+PHNwYW4gY2xhc3M9IndsIj4ke2MoIkxlYXZlIGJ5Iiwi5pyA5pma56a75bqXIil9PC9zcGFuPjxzcGFuIGNsYXNzPSJ3diI+JHtsKGEpfTwvc3Bhbj48L2Rpdj48L2Rpdj5gfWNvbnN0IG89TnVtYmVyKGUuZ3Vlc3RzKT4wP0hfKE51bWJlcihlLmd1ZXN0cykpOiIiO3JldHVybmA8ZGl2IGNsYXNzPSJiYW5kIiByb2xlPSJncm91cCIgYXJpYS1sYWJlbD0iJHtsKFtIbyhlKSxvXS5maWx0ZXIoQm9vbGVhbikuam9pbigiLCAiKSl9Ij4ke24oYygiQ2hlY2staW4iLCLlhaXkvY8iKSxlLmNoZWNrSW4pfTxzcGFuIGNsYXNzPSJ3aGVuLW4iPiR7bCh1ZShDZShlLmNoZWNrSW4sZS5jaGVja091dCkpKX0ke28/YDxzbWFsbD4ke2wobyl9PC9zbWFsbD5gOiIifTwvc3Bhbj4ke24oYygiQ2hlY2stb3V0Iiwi56a75bqXIiksZS5jaGVja091dCl9PC9kaXY+YH0sSF89ZT0+YyhgJHtlfSAke2U9PT0xPyJndWVzdCI6Imd1ZXN0cyJ9YCxgJHtlfeS9jWApLGZnPWU9Pntjb25zdCB0PWQ9Pntjb25zdCB1PS9eKFxkezEsMn0pOihcZHsyfSkkLy5leGVjKFN0cmluZyhkPz8iIikpO3JldHVybiB1P051bWJlcih1WzFdKSo2MCtOdW1iZXIodVsyXSk6dm9pZCAwfSxuPXQoZT8uZWFybGllc3RTdGFydCksbz10KGU/LmxhdGVzdFN0YXJ0KSxzPXQoZT8ubGF0ZXN0RW5kKT8/MTQ0MCxyPU51bWJlcihlPy5ob3Vycyl8fDA7aWYobj09PXZvaWQgMHx8bz09PXZvaWQgMClyZXR1cm5bXTtjb25zdCBpPU1hdGguY2VpbChuLzUpKjUsYT1pPD1vP1tpXTpbXTtmb3IobGV0IGQ9TWF0aC5jZWlsKChpKzEpLzYwKSo2MDtkPD1vO2QrPTYwKWEucHVzaChkKTtyZXR1cm4gYS5maWx0ZXIoZD0+ZDw9byYmZCtyKjYwPD1zKS5tYXAoZD0+YCR7U3RyaW5nKE1hdGguZmxvb3IoZC82MCkpLnBhZFN0YXJ0KDIsIjAiKX06JHtTdHJpbmcoZCU2MCkucGFkU3RhcnQoMiwiMCIpfWApfSxlcz0oZSx0KT0+e2NvbnN0IG49L14oXGR7MSwyfSk6KFxkezJ9KSQvLmV4ZWMoZSk7aWYoIW4pcmV0dXJuIFN0cmluZyh0Py5sYXRlc3RFbmQ/PyIiKTtjb25zdCBvPU51bWJlcihuWzFdKSo2MCtOdW1iZXIoblsyXSkrKE51bWJlcih0Py5ob3Vycyl8fDApKjYwLHM9L14oXGR7MSwyfSk6KFxkezJ9KSQvLmV4ZWMoU3RyaW5nKHQ/LmxhdGVzdEVuZD8/IiIpKSxyPXM/TnVtYmVyKHNbMV0pKjYwK051bWJlcihzWzJdKTpvLGk9TWF0aC5taW4obyxyKTtyZXR1cm5gJHtTdHJpbmcoTWF0aC5mbG9vcihpLzYwKSUyNCkucGFkU3RhcnQoMiwiMCIpfToke1N0cmluZyhpJTYwKS5wYWRTdGFydCgyLCIwIil9YH0sc3U9bmV3IE1hcCxydT0oZSx0LG4sbyk9Pntjb25zdCBzPXQuaG91cmx5P2ZnKHQuaG91cmx5KTpbXSxyPXQuaG91cmx5P3N1LmdldChTdHJpbmcodC5pZCkpPz9zWzBdPz8iIjoiIjtyZXR1cm5gCiAgICAgIDxkaXYgY2xhc3M9InJvb20tYnV5Ij4KICAgICAgICA8ZGl2IGNsYXNzPSJwcmljZSI+CiAgICAgICAgICAke3QucHVibGljU3RheVRvdGFsP2A8ZGl2IGNsYXNzPSJwLXdhcyI+JHtsKHQucHVibGljUm9vbXNUb3RhbD8/dC5wdWJsaWNTdGF5VG90YWwpfTwvZGl2PmA6IiJ9CiAgICAgICAgICA8ZGl2IGNsYXNzPSJwLXRvdGFsIj4ke2wodC5yb29tc1RvdGFsPz90LnN0YXlUb3RhbCl9PC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJwLXVuaXQiPiR7dC5ob3VybHk/bChjKGBGb3IgJHt6dCh0LmhvdXJseS5ob3Vycyl9JHtqPjE/YCwgJHtqfSByb29tc2A6IiJ9LCB0YXhlcyBpbmAsYCR7enQodC5ob3VybHkuaG91cnMpfSR7aj4xP2DjgIEke2p96Ze0YDoiIn3vvIzlkKvnqI7otLlgKSk6bChjKGBUb3RhbCBmb3IgJHt1ZShDZShuLmNoZWNrSW4sbi5jaGVja091dCkpfSR7aj4xP2AsICR7an0gcm9vbXNgOiIifSwgdGF4ZXMgaW5gLGAke3VlKENlKG4uY2hlY2tJbixuLmNoZWNrT3V0KSl9JHtqPjE/YOOAgSR7an3pl7RgOiIifeaAu+S7t++8jOWQq+eojui0uWApKX08L2Rpdj4KICAgICAgICAgICR7dC5ob3VybHk/IiI6YDxkaXYgY2xhc3M9InAtbmlnaHQiPiR7bChjKGBSb29tIHJhdGUgJHt0Lm5pZ2h0bHl9IGEgbmlnaHRgLGDmiL/ku7fmr4/mmZogJHt0Lm5pZ2h0bHl9YCkpfTwvZGl2PmB9CiAgICAgICAgICAke3QubWVtYmVyUmF0ZT9gPGRpdiBjbGFzcz0icC1tZW1iZXIiPiR7bChjKGAke3QubWVtYmVyUmF0ZS50aWVyfSByYXRlYCxgJHt0Lm1lbWJlclJhdGUudGllcn3ku7dgKSl9PC9kaXY+YDoiIn0KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJhY3Rpb24iPiR7bz9gJHskcyhgZGF0YS1hZGQtcm9vbT0iJHtsKHQuaWQpfSIgZGF0YS1ob3RlbD0iJHtsKGUuaWQpfSJgLG8sU3RyaW5nKHQubmFtZSksail9PGJ1dHRvbiBjbGFzcz0iZ28gc20iIHR5cGU9ImJ1dHRvbiIgZGF0YS1hY3Q9InRyaXAiPiR7YygiUmV2aWV3Iiwi5Y675qC45a+5Iil9JHtQLmFycm93fTwvYnV0dG9uPmA6dC5ob3VybHk/YDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iZ28gYWRkIiBkYXRhLWFkZC1yb29tPSIke2wodC5pZCl9IiBkYXRhLWhvdGVsPSIke2woZS5pZCl9IiBkYXRhLW49IiR7bChqKX0iIGRhdGEtc3RhcnQ9IiR7bChyKX0iJHtyPyIiOiIgZGlzYWJsZWQifSBhcmlhLWxhYmVsPSIke2woYyhgUmVzZXJ2ZSAke3QubmFtZX0gZnJvbSAke3J9YCxg6aKE6K6iJHt0Lm5hbWV977yMJHtyfeWIsOW6l2ApKX0iPiR7YygiUmVzZXJ2ZSIsIumihOiuoiIpfSR7cj9gIMK3ICR7bChyKX1gOiIifTwvYnV0dG9uPmA6YDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iZ28gcXVpZXQgc20gYWRkLWtlZXAiIGRhdGEtYWRkLXJvb209IiR7bCh0LmlkKX0iIGRhdGEtaG90ZWw9IiR7bChlLmlkKX0iIGRhdGEtbj0iJHtsKGopfSIgZGF0YS1rZWVwIGFyaWEtbGFiZWw9IiR7bChjKGBBZGQgJHt0Lm5hbWV9IHRvIHRoZSB0cmlwIGFuZCBrZWVwIGxvb2tpbmdgLGDmiooke3QubmFtZX3liqDlhaXooYznqIvvvIznu6fnu63nnItgKSl9Ij4ke2MoIkFkZCB0byB0cmlwIiwi5Yqg5YWl6KGM56iLIil9PC9idXR0b24+PGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJnbyBhZGQiIGRhdGEtYWRkLXJvb209IiR7bCh0LmlkKX0iIGRhdGEtaG90ZWw9IiR7bChlLmlkKX0iIGRhdGEtbj0iJHtsKGopfSIgYXJpYS1sYWJlbD0iJHtsKGMoYFJlc2VydmUgJHt0Lm5hbWV9YCxg6aKE6K6iJHt0Lm5hbWV9YCkpfSI+JHtjKCJSZXNlcnZlIiwi6aKE6K6iIil9PC9idXR0b24+YH08L2Rpdj4KICAgICAgPC9kaXY+YH0sZ2c9ZT0+TnVtYmVyKGUucm9vbXNMZWZ0KTw9Mz9gPHNwYW4gY2xhc3M9ImJhZGdlIHdhcm4gbGVmdCI+JHtsKGMoYCR7ZS5yb29tc0xlZnR9IGxlZnQgYXQgdGhpcyByYXRlYCxg5q2k5Lu35qC85LuF5YmpICR7ZS5yb29tc0xlZnR9IOmXtGApKX08L3NwYW4+YDoiIixXXz0oZSx0KT0+e2NvbnN0IG49bmV3IFNldDtpZighdClyZXR1cm57bGVhZDoiIixzYWlkOm59O2NvbnN0IG89W107ZS52aWV3JiZlLnZpZXchPT10LnZpZXcmJihvLnB1c2goSnQoZS52aWV3KSksbi5hZGQoInZpZXciKSksZS5iZWRzJiZlLmJlZHMhPT10LmJlZHMmJihvLnB1c2goU3RyaW5nKGUuYmVkcykpLG4uYWRkKCJiZWRzIikpO2NvbnN0IHM9TnVtYmVyKGUuc2l6ZVNxbSkscj1OdW1iZXIodC5zaXplU3FtKTtzJiZyJiZzIT09ciYmby5wdXNoKHM+cj9jKGAke3Mtcn0gbcKyIGxhcmdlcmAsYOmdouenr+WkpyAke3Mtcn0gbcKyYCk6YyhgJHtyLXN9IG3CsiBzbWFsbGVyYCxg6Z2i56ev5bCPICR7ci1zfSBtwrJgKSksTnVtYmVyKGUuc2xlZXBzKT5OdW1iZXIodC5zbGVlcHMpJiYoby5wdXNoKGMoYHNsZWVwcyAke2Uuc2xlZXBzfWAsYOWPr+S9jyAke2Uuc2xlZXBzfSDkurpgKSksbi5hZGQoInNsZWVwcyIpKTtjb25zdCBpPVN0cmluZyh0LnJvb21UeXBlPy5uYW1lPz90Lm5hbWU/PyIiKTtyZXR1cm57bGVhZDpvLmxlbmd0aD9gPHAgY2xhc3M9InJvb20tbGVhZCI+PHNwYW4gY2xhc3M9ImxlYWQtayI+JHtsKGMoYFVubGlrZSAke2l9YCxg55u45q+UJHtpfWApKX08L3NwYW4+JHtsKG8uc2xpY2UoMCwzKS5qb2luKCIgwrcgIikpfTwvcD5gOiIiLHNhaWQ6bn19LFZfPShlLHQsbixvKT0+e2NvbnN0IHM9dnMoU3RyaW5nKGUuaWQpLFN0cmluZyh0LmlkKSxuKTtyZXR1cm5gCiAgICA8YXJ0aWNsZSBjbGFzcz0icm9vbSR7cz8iIGhlbGQiOiIifSI+CiAgICAgIDxzcGFuIGNsYXNzPSJyb29tLXNob3QiIHN0eWxlPSIke3V0KGAke2UuaWR9OiR7dC5pZH1gKX0iPgogICAgICAgICR7dC5pbWFnZVVybD9gPGltZyBzcmM9IiR7bCh0LmltYWdlVXJsKX0iIGFsdD0iIj5gOmwoZHQoU3RyaW5nKHQubmFtZSkpKX0KICAgICAgPC9zcGFuPgogICAgICA8ZGl2IGNsYXNzPSJyb29tLW1haW4iPgogICAgICAgIDxoMyBjbGFzcz0icm9vbS1uYW1lIj4ke2wodC5uYW1lKX08L2gzPgogICAgICAgICR7bz8ubGVhZD8/IiJ9CiAgICAgICAgPHVsIGNsYXNzPSJmYWN0cyI+JHtldSh0LG8/LnNhaWQpfTwvdWw+CiAgICAgICAgJHtudSh0KX0KICAgICAgICA8dWwgY2xhc3M9InBlcmtzIj4ke3R1KHQpfTwvdWw+CiAgICAgICAgJHtnZyh0KX0KICAgICAgPC9kaXY+CiAgICAgICR7cnUoZSx0LG4scyl9CiAgICA8L2FydGljbGU+YH0sSl89KGUsdCxuLG8pPT57Y29uc3Qgcz10WzBdPz97fSxyPVN0cmluZyhzLnJvb21UeXBlPy5uYW1lPz9zLm5hbWUpO3JldHVybmAKICAgIDxhcnRpY2xlIGNsYXNzPSJydHlwZSR7dC5zb21lKGE9PnZzKFN0cmluZyhlLmlkKSxTdHJpbmcoYS5pZCksbik+MCk/IiBoZWxkIjoiIn0iPgogICAgICA8ZGl2IGNsYXNzPSJydHlwZS1oZWFkIj4KICAgICAgICA8c3BhbiBjbGFzcz0icm9vbS1zaG90IiBzdHlsZT0iJHt1dChgJHtlLmlkfToke3Mucm9vbVR5cGU/LmlkPz9zLmlkfWApfSI+CiAgICAgICAgICAke3MuaW1hZ2VVcmw/YDxpbWcgc3JjPSIke2wocy5pbWFnZVVybCl9IiBhbHQ9IiI+YDpsKGR0KHIpKX0KICAgICAgICA8L3NwYW4+CiAgICAgICAgPGRpdiBjbGFzcz0icm9vbS1tYWluIj4KICAgICAgICAgIDxoMyBjbGFzcz0icm9vbS1uYW1lIj4ke2wocil9PC9oMz4KICAgICAgICAgICR7bz8ubGVhZD8/IiJ9CiAgICAgICAgICA8dWwgY2xhc3M9ImZhY3RzIj4ke2V1KHMsbz8uc2FpZCl9PC91bD4KICAgICAgICAgIDxkaXYgY2xhc3M9InJ0eXBlLW4iPiR7bChjKGAke3QubGVuZ3RofSAke3QubGVuZ3RoPT09MT8icmF0ZSI6InJhdGVzIn1gLGAke3QubGVuZ3RofSDnp43ku7fmoLxgKSl9PC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJyYXRlcyI+JHt0Lm1hcChhPT57Y29uc3QgZD12cyhTdHJpbmcoZS5pZCksU3RyaW5nKGEuaWQpLG4pO3JldHVybmAKICAgICAgICA8ZGl2IGNsYXNzPSJycmF0ZSR7ZD8iIGhlbGQiOiIifSI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJyYXRlLW1haW4iPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJyYXRlLW5hbWUiPiR7bChhLnJhdGU/Lm5hbWU/P2EubmFtZSl9PC9kaXY+CiAgICAgICAgICAgICR7bnUoYSl9CiAgICAgICAgICAgIDx1bCBjbGFzcz0icGVya3MiPiR7dHUoYSl9PC91bD4KICAgICAgICAgICAgJHtnZyhhKX0KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgJHtydShlLGEsbixkKX0KICAgICAgICA8L2Rpdj5gfSkuam9pbigiIil9PC9kaXY+CiAgICA8L2FydGljbGU+YH0sS189KGUsdCxuKT0+e2NvbnN0IG89dnMoU3RyaW5nKGUuaWQpLFN0cmluZyh0LmlkKSxuKSxzPWZnKHQuaG91cmx5KSxyPXN1LmdldChTdHJpbmcodC5pZCkpPz9zWzBdO3JldHVybmAKICAgIDxhcnRpY2xlIGNsYXNzPSJyb29tIGhvdXJseSR7bz8iIGhlbGQiOiIifSI+CiAgICAgIDxzcGFuIGNsYXNzPSJyb29tLXNob3QiIHN0eWxlPSIke3V0KGAke2UuaWR9OiR7dC5pZH1gKX0iPgogICAgICAgICR7dC5pbWFnZVVybD9gPGltZyBzcmM9IiR7bCh0LmltYWdlVXJsKX0iIGFsdD0iIj5gOmwoZHQoU3RyaW5nKHQubmFtZSkpKX0KICAgICAgPC9zcGFuPgogICAgICA8ZGl2IGNsYXNzPSJyb29tLW1haW4iPgogICAgICAgIDxoMyBjbGFzcz0icm9vbS1uYW1lIj4ke2wodC5yb29tVHlwZT8ubmFtZT8/dC5uYW1lKX08c3BhbiBjbGFzcz0icm9vbS1ob3VycyI+IMK3ICR7bCh6dCh0LmhvdXJseS5ob3VycykpfTwvc3Bhbj48L2gzPgogICAgICAgIDx1bCBjbGFzcz0iZmFjdHMiPiR7ZXUodCl9PC91bD4KICAgICAgICAke251KHQpfQogICAgICAgIDx1bCBjbGFzcz0icGVya3MiPiR7dHUodCl9PC91bD4KICAgICAgICA8ZGl2IGNsYXNzPSJzdGFydHMiIHJvbGU9Imdyb3VwIiBhcmlhLWxhYmVsPSIke2MoIlN0YXJ0IHRpbWUiLCLliLDlupfml7bpl7QiKX0iPgogICAgICAgICAgPHNwYW4gY2xhc3M9IndsIj4ke2MoIkFycml2ZSBhdCIsIuWIsOW6l+aXtumXtCIpfTwvc3Bhbj4KICAgICAgICAgIDxkaXYgY2xhc3M9ImNoaXBzIj4ke3MubWFwKGk9PmA8YnV0dG9uIGNsYXNzPSJjaGlwIGFzayIgdHlwZT0iYnV0dG9uIiBkYXRhLWhvdXItc3RhcnQ9IiR7bChpKX0iIGRhdGEtcm9vbT0iJHtsKHQuaWQpfSIgYXJpYS1wcmVzc2VkPSIke2k9PT1yPyJ0cnVlIjoiZmFsc2UifSI+JHtsKGkpfTwvYnV0dG9uPmApLmpvaW4oIiIpfTwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0ibm90ZSI+JHtsKHI/YyhgJHtyfeKAkyR7ZXMocix0LmhvdXJseSl9IMK3IGxlYXZlIGJ5ICR7ZXMocix0LmhvdXJseSl9YCxgJHtyfeKAkyR7ZXMocix0LmhvdXJseSl9IMK3ICR7ZXMocix0LmhvdXJseSl9IOWJjeemu+W6l2ApOmMoYE91dCBieSAke3QuaG91cmx5LmxhdGVzdEVuZH0gYXQgdGhlIGxhdGVzdC5gLGDmnIDmmZogJHt0LmhvdXJseS5sYXRlc3RFbmR9IOemu+W6l+OAgmApKX08L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CiAgICAgICR7cnUoZSx0LG4sbyl9CiAgICA8L2FydGljbGU+YH0sR189KGUsdCxuKT0+e2NvbnN0IG89dC5maWx0ZXIoYT0+YS5ob3VybHkpLHM9dC5maWx0ZXIoYT0+IWEuaG91cmx5KSxyPVtdLGk9bmV3IE1hcDtmb3IoY29uc3QgYSBvZiBzKXtjb25zdCBkPWEucm9vbVR5cGU/LmlkP1N0cmluZyhhLnJvb21UeXBlLmlkKToiIjtpZighZCl7ci5wdXNoKFthXSk7Y29udGludWV9Y29uc3QgdT1pLmdldChkKTtpZih1KXUucHVzaChhKTtlbHNle2NvbnN0IHA9W2FdO2kuc2V0KGQscCksci5wdXNoKHApfX1yZXR1cm5bci5sZW5ndGg/YDxkaXYgY2xhc3M9InJvb21zIj4ke3IubWFwKChhLGQpPT57Y29uc3QgdT1XXyhhWzBdLHJbZC0xXT8uWzBdKTtyZXR1cm4gYS5sZW5ndGg+MXx8YVswXT8ucm9vbVR5cGU/Sl8oZSxhLG4sdSk6Vl8oZSxhWzBdLG4sdSl9KS5qb2luKCIiKX08L2Rpdj5gOiIiLG8ubGVuZ3RoP2A8ZGl2IGNsYXNzPSJyb29tcyI+JHtvLm1hcChhPT5LXyhlLGEsbikpLmpvaW4oIiIpfTwvZGl2PmA6IiJdLmpvaW4oIiIpfSxvZD1lPT57aWYoIS9cYnNsZWVwc1xifGNhbiB0YWtlIFxkKyBndWVzdHMvLnRlc3QoZSkpcmV0dXJuIiI7Y29uc3QgdD1OdW1iZXIoL2xhcmdlc3Qgc2xlZXBzIChcZCspLy5leGVjKGUpPy5bMV0/PzApLG49Uy5ndWVzdHMqaixvPXQ+MD9NYXRoLm1pbihNdCxNYXRoLmNlaWwobi90KSk6MCxzPW8/TWF0aC5jZWlsKG4vbyk6MDtyZXR1cm5gPGRpdiBjbGFzcz0ic3RhdGUiPgogICAgPGRpdiBjbGFzcz0ic3RhdGUtaWNvIj4ke1AudXNlcnN9PC9kaXY+CiAgICA8aDMgY2xhc3M9InN0YXRlLXQiPiR7bChjKGBObyByb29tIGhlcmUgc2xlZXBzICR7Uy5ndWVzdHN9YCxg6L+Z6YeM5rKh5pyJ5Y+v5L2PICR7Uy5ndWVzdHN9IOS6uueahOaIv+Wei2ApKX08L2gzPgogICAgPHAgY2xhc3M9InN0YXRlLWQiPiR7bChvJiZzPD10P2MoYFRoZSBsYXJnZXN0IHNsZWVwcyAke3R9LiBCb29rICR7b30gcm9vbXMsIGVhY2ggZm9yIHVwIHRvICR7c30sIGFuZCB0aGUgJHtufSBvZiB5b3UgZml0LmAsYOacgOWkp+eahOaIv+Wei+WPr+S9jyAke3R9IOS6uuOAguiuoiAke299IOmXtOOAgeavj+mXtOaMiSAke3N9IOS6uuiuou+8jCR7bn0g5Liq5Lq65bCx6IO95L2P5LiL44CCYCk6YygiVHJ5IGZld2VyIGd1ZXN0cyBpbiBlYWNoIHJvb20uIiwi6K+V6K+V5oqK5q+P6Ze05Lq65pWw5pS55bCR44CCIikpfTwvcD4KICAgICR7byYmczw9dD9gPGRpdiBjbGFzcz0iZm9vdCI+PGJ1dHRvbiBjbGFzcz0iZ28iIHR5cGU9ImJ1dHRvbiIgZGF0YS1zcGxpdD0iJHtvfToke3N9Ij4ke2woYyhgQm9vayAke299IHJvb21zLCAke3N9IGluIGVhY2hgLGDorqIgJHtvfSDpl7TvvIzmr4/pl7TmjIkgJHtzfSDkurpgKSl9PC9idXR0b24+PC9kaXY+YDoiIn0KICA8L2Rpdj5gfSxZXz0oZSx0LG49MCk9PiFBcnJheS5pc0FycmF5KHQpfHx0Lmxlbmd0aDwyPyIiOmAKICA8ZGl2IGNsYXNzPSJzdHJpcC1oIj4ke2woYyhgQXJyaXZlIGFub3RoZXIgZGF5IMK3ICR7dWUobil9IGZyb21gLGDmjaLkuKrml6XlrZDlhaXkvY8gwrcgJHt1ZShuKX3otbfku7dgKSl9JHt0LmZpbHRlcihvPT5vLmxvd2VzdCkubGVuZ3RoPjE/YDxzbWFsbCBjbGFzcz0ic3RyaXAta2V5Ij4ke2MoIkdyZWVuOiB0aGUgbG93ZXN0Iiwi57u/6Imy5Li65pyA5L2O5Lu3Iil9PC9zbWFsbD5gOiIifTwvZGl2PgogIDxkaXYgY2xhc3M9ImZsZXgtZGF0ZXMiIHJvbGU9Imdyb3VwIiBhcmlhLWxhYmVsPSIke2MoIk5lYXJieSBhcnJpdmFsIGRhdGVzIiwi6ZmE6L+R55qE5YWl5L2P5pel5pyfIil9Ij4KICAgICR7dC5tYXAoKG8scyk9PmA8YnV0dG9uIGNsYXNzPSJmZCR7by5jaG9zZW4/IiBvbiI6IiJ9JHtvLmZyb20/IiI6IiBvdXQifSR7by5iZXN0PyIgYmVzdCI6IiJ9JHtvLmxvd2VzdD8iIGxvd2VzdCI6IiJ9IiB0eXBlPSJidXR0b24iIGRhdGEtaG90ZWw9IiR7bChlKX0iIGRhdGEtY2k9IiR7bChvLmNoZWNrSW4pfSIgZGF0YS1jbz0iJHtsKG8uY2hlY2tPdXQpfSIgYXJpYS1sYWJlbD0iJHtsKGMoYEFycml2ZSAke0FlKFN0cmluZyhvLmNoZWNrSW4pKX0ke28uZnJvbT9gLCBmcm9tICR7by5mcm9tfWA6Iiwgbm90aGluZyBsZWZ0In0ke28ubG93ZXN0PyIsIHRoZSBsb3dlc3QiOiIifWAsYCR7QWUoU3RyaW5nKG8uY2hlY2tJbikpfeWFpeS9jyR7by5mcm9tP2DvvIwke28uZnJvbX3otbdgOiLvvIzlt7Lmu6EifSR7by5sb3dlc3Q/Iu+8jOacgOS9juS7tyI6IiJ9YCkpfSI+CiAgICAgICAgPHNwYW4gY2xhc3M9ImZkLWRheSI+JHtzPT09MHx8RmUoU3RyaW5nKG8uY2hlY2tJbikpLm1vbiE9PUZlKFN0cmluZyh0W3MtMV0/LmNoZWNrSW4pKS5tb24/YDxzcGFuIGNsYXNzPSJmZC1tb24iPiR7bChGZShTdHJpbmcoby5jaGVja0luKSkubW9uKX08L3NwYW4+YDonPHNwYW4gY2xhc3M9ImZkLW1vbiIgYXJpYS1oaWRkZW49InRydWUiPiZuYnNwOzwvc3Bhbj4nfTxzcGFuIGNsYXNzPSJmZC1kb3ciPiR7bChGZShTdHJpbmcoby5jaGVja0luKSkuZG93KX08L3NwYW4+PHNwYW4gY2xhc3M9ImZkLWRuIj4ke2woRmUoU3RyaW5nKG8uY2hlY2tJbikpLmRheSl9PC9zcGFuPjwvc3Bhbj4KICAgICAgICA8c3BhbiBjbGFzcz0iZmQtcHJpY2UiPiR7by5mcm9tP2woby5mcm9tKTpjKCJGdWxsIiwi5bey5ruhIil9PC9zcGFuPiR7by5sb3dlc3QmJnQuZmlsdGVyKHI9PnIubG93ZXN0KS5sZW5ndGg9PT0xP2A8c3BhbiBjbGFzcz0iZmQtbG93Ij4ke2MoIkxvd2VzdCIsIuacgOS9jiIpfTwvc3Bhbj5gOiIifQogICAgICA8L2J1dHRvbj5gKS5qb2luKCIiKX0KICA8L2Rpdj5gLHNkPWU9Pntjb25zdCB0PWUuaG90ZWw/P3t9LG49ZS5yb29tcz8/W10sbz1lLnN0YXk/P1Mscz1uLmxlbmd0aD4wJiZuLmV2ZXJ5KGk9PmkuaG91cmx5KXx8ISFlLmhvdXJseSYmISFvPy5jaGVja0luJiZvLmNoZWNrSW49PT1vLmNoZWNrT3V0LHI9bmV3IFNldChuLm1hcChpPT5TdHJpbmcoaS5yb29tVHlwZT8uaWQ/P2kuaWQpKSkuc2l6ZTtyZXR1cm5baGcodCksZS5ob3VybHk/YDxkaXYgY2xhc3M9InNlZyIgcm9sZT0iZ3JvdXAiIGFyaWEtbGFiZWw9IiR7YygiSG93IGxvbmciLCLlhaXkvY/mlrnlvI8iKX0iPgogICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0ic2VnLWIiIGRhdGEtYWN0PSJuaWdodGx5IiBhcmlhLXByZXNzZWQ9IiR7cz8iZmFsc2UiOiJ0cnVlIn0iPiR7UC5jYWxlbmRhcn0ke2MoIk92ZXJuaWdodCIsIuaMieaZmiIpfTwvYnV0dG9uPgogICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0ic2VnLWIiIGRhdGEtYWN0PSJob3VybHkiIGRhdGEtaG90ZWwtaWQ9IiR7bCh0LmlkKX0iIGFyaWEtcHJlc3NlZD0iJHtzPyJ0cnVlIjoiZmFsc2UifSI+JHtQLmNsb2NrfSR7YygiQnkgdGhlIGhvdXIgwrcgdG9kYXkiLCLpkp/ngrnmiL8gwrcg5LuK5aSpIil9PC9idXR0b24+CiAgICAgICAgIDwvZGl2PmA6IiIscz8iIjpuZyhTdHJpbmcodC5pZCksdC50b2RheVRoZXJlKSxzfHxlLm5vUm9vbXMmJm9kKFN0cmluZyhlLm5vUm9vbXMpKT8iIjpZXyhTdHJpbmcodC5pZCksZS5kYXRlcyxDZShvLmNoZWNrSW4sby5jaGVja091dCkpLGUubmVlZHNEYXRlcz9gPGRpdiBjbGFzcz0ic2tlbCIgcm9sZT0ic3RhdHVzIiBhcmlhLWxhYmVsPSIke2MoIkxvb2tpbmcgdXAgcm9vbXMiLCLmraPlnKjmn6Xor6LmiL/pl7QiKX0iPjxkaXYgY2xhc3M9InNrIHNrLWJhciI+PC9kaXY+PGRpdiBjbGFzcz0ic2sgc2stYmFyIj48L2Rpdj48L2Rpdj5gOmUubm9Sb29tcyYmcz9gPGRpdiBjbGFzcz0ic3RhdGUiPgogICAgICAgICAgICAgPGRpdiBjbGFzcz0ic3RhdGUtaWNvIj4ke1AuY2xvY2t9PC9kaXY+CiAgICAgICAgICAgICA8aDMgY2xhc3M9InN0YXRlLXQiPiR7YygiTm8gcm9vbXMgYnkgdGhlIGhvdXIgdG9kYXkiLCLku4rlpKnmsqHmnInpkp/ngrnmiL8iKX08L2gzPgogICAgICAgICAgICAgPHAgY2xhc3M9InN0YXRlLWQiPiR7bChlLm5vUm9vbXMpfTwvcD4KICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZvb3QiPjxidXR0b24gY2xhc3M9ImdvIHNvZnQiIHR5cGU9ImJ1dHRvbiIgZGF0YS1hY3Q9Im5pZ2h0bHkiPiR7UC5jYWxlbmRhcn0ke2MoIlNlZSByb29tcyBmb3IgYSBuaWdodCIsIueci+aMieaZmuWFpeS9j+eahOaIv+mXtCIpfTwvYnV0dG9uPjwvZGl2PgogICAgICAgICAgIDwvZGl2PmA6ZS5ub1Jvb21zP29kKFN0cmluZyhlLm5vUm9vbXMpKXx8YDxkaXYgY2xhc3M9ImVyciI+JHtsKGUubm9Sb29tcyl9PC9kaXY+YDpgPGgzIGNsYXNzPSJzZWMiPiR7cz9jKCJCeSB0aGUgaG91ciwgdG9kYXkiLCLku4rml6Xpkp/ngrnmiL8iKTpjKCJDaG9vc2UgeW91ciByb29tIiwi6YCJ5oup5oi/5Z6LIil9IDxzbWFsbCBjbGFzcz0ic2VjLW4iPiR7bChzP2MoYCR7QWUoU3RyaW5nKG8uY2hlY2tJbikpfSDCtyBwaWNrIHdoZW4geW91IGFycml2ZSDCtyB0YXhlcyBpbmAsYCR7QWUoU3RyaW5nKG8uY2hlY2tJbikpfSDCtyDpgInlpb3liLDlupfml7bpl7Qgwrcg5ZCr56iO6LS5YCk6YyhgJHtyfSByb29tICR7cj09PTE/InR5cGUiOiJ0eXBlcyJ9JHtOdW1iZXIoby5ndWVzdHMpIT09Mj9gIHRoYXQgJHtyPT09MT8ic2xlZXBzIjoic2xlZXAifSAke28uZ3Vlc3RzfWA6IiJ9JHtuLmxlbmd0aD5yP2AsICR7bi5sZW5ndGh9IHJhdGVzYDoiIn0gwrcgcHJpY2VzIGZvciAke3VlKENlKG8uY2hlY2tJbixvLmNoZWNrT3V0KSl9LCB0YXhlcyBpbmAsYCR7cn0g56eNJHtOdW1iZXIoby5ndWVzdHMpIT09Mj9g5Y+v5L2PICR7by5ndWVzdHN9IOS6uueahGA6IiJ95oi/5Z6LJHtuLmxlbmd0aD5yP2DjgIEke24ubGVuZ3RofSDnp43ku7fmoLxgOiIifSDCtyAke3VlKENlKG8uY2hlY2tJbixvLmNoZWNrT3V0KSl95ZCr56iO5oC75Lu3YCkpfTwvc21hbGw+PC9oMz4KICAgICAgICAgICAke0dfKHQsbixvKX1gLChlLmV4dHJhcz8/W10pLmxlbmd0aHx8KGUucG9saWNpZXM/P1tdKS5sZW5ndGg/YDxkaXYgY2xhc3M9Imdvb2QtdG8ta25vdyI+CiAgICAgICAgICAgPGgzIGNsYXNzPSJzZWMiPiR7YygiR29vZCB0byBrbm93Iiwi5YWl5L2P6aG755+lIil9PC9oMz4KICAgICAgICAgICAkeyhlLnBvbGljaWVzPz9bXSkubGVuZ3RoP2A8ZGl2IGNsYXNzPSJsaW5rcyI+JHtlLnBvbGljaWVzLm1hcChpPT5gPGJ1dHRvbiBjbGFzcz0ibGluay1yb3ciIHR5cGU9ImJ1dHRvbiIgZGF0YS1wb2xpY3k9IiR7bChpLnRvcGljKX0iIGRhdGEtaG90ZWw9IiR7bCh0LmlkKX0iPjxzcGFuPiR7bChpLnRpdGxlKX08L3NwYW4+JHtQLmNoZXZSfTwvYnV0dG9uPmApLmpvaW4oIiIpfTwvZGl2PmA6IiJ9CiAgICAgICAgICAgJHsoZS5leHRyYXM/P1tdKS5sZW5ndGg/YDxidXR0b24gY2xhc3M9ImdvIHNvZnQiIHR5cGU9ImJ1dHRvbiIgZGF0YS1leHRyYXM9IiR7bCh0LmlkKX0iPiR7YygiQWRkLW9ucyBhbmQgZXhwZXJpZW5jZXMiLCLpmYTliqDmnI3liqHlkozkvZPpqowiKX0ke1AuYXJyb3d9PC9idXR0b24+YDoiIn0KICAgICAgICAgPC9kaXY+YDoiIl0uam9pbigiIil9LFFfPXsicGVyc29uLW5pZ2h0IjpbInBlciBwZXJzb24gcGVyIG5pZ2h0Iiwi5q+P5Lq65q+P5pmaIl0sbmlnaHQ6WyJwZXIgbmlnaHQiLCLmr4/mmZoiXSxzdGF5OlsicGVyIHN0YXkiLCLmr4/mrKHlhaXkvY8iXSxwZXJzb246WyJwZXIgcGVyc29uIiwi5q+P5Lq6Il0saXRlbTpbImVhY2giLCLmr4/ku70iXSx0cmlwOlsicGVyIHRyaXAiLCLmr4/otp8iXX0scmQ9ZT0+e2NvbnN0IHQ9UV9bU3RyaW5nKGUpXTtyZXR1cm4gdD9jKHRbMF0sdFsxXSk6YyhgcGVyICR7ZX1gLGDmr48ke2V9YCl9LFhfPWU9Pntjb25zdCB0PWUuaG90ZWw/P3t9LG49ZS5leHRyYXM/P1tdLG89ZS5mb3JCb29raW5nO3JldHVybiBvP1tgPGRpdj48ZGl2IGNsYXNzPSJoLW5hbWUiPiR7bChjKGBBZGQtb25zIGZvciAke28uY29uZmlybWF0aW9uQ29kZX1gLGAke28uY29uZmlybWF0aW9uQ29kZX0g55qE6ZmE5Yqg5pyN5YqhYCkpfTwvZGl2PjxkaXYgY2xhc3M9Imgtd2hlcmUiPiR7bCh0Lm5hbWUpfSDCtyAke2woSG8oby5zdGF5KSl9PC9kaXY+PC9kaXY+YCxgPGRpdiBjbGFzcz0icm93cyI+JHtuLm1hcChzPT5gCiAgICAgICAgPGRpdiBjbGFzcz0icm93Ij4KICAgICAgICAgIDxkaXYgY2xhc3M9ImJvZHkiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJuYW1lIj4ke2wocy5uYW1lKX08L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0ibWV0YSI+JHtsKHMuZGVzY3JpcHRpb24pfTwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJwcmljZSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InAtdG90YWwiPiR7bChzLnByaWNlKX08L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0icC11bml0Ij4ke2wocmQocy5wZXIpKX08L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0iYWN0aW9uIj4keyRzKGBkYXRhLWJvb2tpbmctZXh0cmE9IiR7bChzLmlkKX0iIGRhdGEtYm9va2luZz0iJHtsKG8uY29uZmlybWF0aW9uQ29kZSl9ImAsTnVtYmVyKG8uaGVsZD8uW3MuaWRdPz8wKSxTdHJpbmcocy5uYW1lKSl9PC9kaXY+CiAgICAgICAgPC9kaXY+YCkuam9pbigiIil9PC9kaXY+YCxgPGRpdiBjbGFzcz0ibm90ZSI+JHtjKCJFYWNoIGNoYW5nZSBpcyBzaG93biB3aXRoIGl0cyBuZXcgdG90YWwgYmVmb3JlIGFueXRoaW5nIG1vdmVzLiBOb3RoaW5nIGlzIGNoYXJnZWQgaGVyZS4iLCLmr4/mrKHmlLnliqjpg73kvJrlhYjmmL7npLrmlrDnmoTmgLvku7fvvIznoa7orqTlkI7miY3nlJ/mlYjjgILov5nph4zkuI3miaPmrL7jgIIiKX08L2Rpdj5gLGA8YnV0dG9uIGNsYXNzPSJnbyBxdWlldCIgdHlwZT0iYnV0dG9uIiBkYXRhLWFjdD0iYm9va2luZ3MiPiR7YygiQmFjayB0byB5b3VyIGJvb2tpbmdzIiwi6L+U5Zue5oiR55qE6aKE6K6iIil9PC9idXR0b24+YF0uam9pbigiIik6W2A8ZGl2PjxkaXYgY2xhc3M9ImgtbmFtZSI+JHtsKHQubmFtZSl9PC9kaXY+PGRpdiBjbGFzcz0iaC13aGVyZSI+JHtjKCJXaGF0IGl0IG9mZmVycyBiZXNpZGUgdGhlIHJvb20iLCLmiL/pl7Tku6XlpJbnmoTpmYTliqDmnI3liqEiKX08L2Rpdj48L2Rpdj5gLGA8ZGl2IGNsYXNzPSJyb3dzIj4ke24ubWFwKHM9PmAKICAgICAgPGRpdiBjbGFzcz0icm93Ij4KICAgICAgICA8ZGl2IGNsYXNzPSJib2R5Ij4KICAgICAgICAgIDxkaXYgY2xhc3M9Im5hbWUiPiR7bChzLm5hbWUpfTwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0ibWV0YSI+JHtsKHMuZGVzY3JpcHRpb24pfTwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9InByaWNlIj4KICAgICAgICAgIDxkaXYgY2xhc3M9InAtdG90YWwiPiR7bChzLnByaWNlKX08L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9InAtdW5pdCI+JHtsKHJkKHMucGVyKSl9PC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iYWN0aW9uIj4keyRzKGBkYXRhLWFkZC1leHRyYT0iJHtsKHMuaWQpfSIgZGF0YS1ob3RlbD0iJHtsKHQuaWQpfSJgLHhfKFN0cmluZyh0LmlkKSxTdHJpbmcocy5pZCkpLFN0cmluZyhzLm5hbWUpKX08L2Rpdj4KICAgICAgPC9kaXY+YCkuam9pbigiIil9PC9kaXY+YCxgPGJ1dHRvbiBjbGFzcz0iZ28gcXVpZXQiIHR5cGU9ImJ1dHRvbiIgZGF0YS1ob3RlbD0iJHtsKHQuaWQpfSI+JHtsKGMoYEJhY2sgdG8gJHt0Lm5hbWV9YCxg6L+U5ZueJHt0Lm5hbWV9YCkpfTwvYnV0dG9uPmBdLmpvaW4oIiIpfTtsZXQgSnI9ITE7Y29uc3QgZXc9KGUsdD0hMSxuPSExKT0+e2NvbnN0IG89ZS5raW5kPT09InJvb20iP2BkYXRhLWFkZC1yb29tPSIke2woZS5yb29tUmVmKX0iIGRhdGEtaG90ZWw9IiR7bChlLmhvdGVsSWQpfSIgZGF0YS1jaT0iJHtsKGUuc3RheT8uY2hlY2tJbil9IiBkYXRhLWNvPSIke2woZS5zdGF5Py5jaGVja091dCl9IiBkYXRhLWd1PSIke2woZS5zdGF5Py5ndWVzdHMpfSJgOmBkYXRhLWFkZC1leHRyYT0iJHtsKGUuZXh0cmFSZWY/P2UudGl0bGUpfSIgZGF0YS1ob3RlbD0iJHtsKGUuaG90ZWxJZCl9IiR7ZS5kYXk/YCBkYXRhLWRheT0iJHtsKGUuZGF5KX0iYDoiIn1gLHM9ZS5raW5kIT09InJvb20ifHxlLmhvdXJseT8iIjplLnJlZnVuZGFibGU9PT0hMT9gPGxpIGNsYXNzPSJwZXJrIHdhcm4iPiR7UC5hbGVydH08c3Bhbj48Yj4ke2MoIk5vbi1yZWZ1bmRhYmxlIiwi5LiN5Y+v5Y+W5raIIil9PC9iPiR7YygiIOKAlCB0aGlzIHJhdGUgY2Fubm90IGJlIGNhbmNlbGxlZCIsIu+8jOatpOS7t+agvOiuouWQjuS4jeiDvemAgOaUuSIpfTwvc3Bhbj48L2xpPmA6YDxsaSBjbGFzcz0icGVyayI+JHtQLmNoZWNrfTxzcGFuPjxiPiR7YygiRnJlZSBjYW5jZWxsYXRpb24iLCLlhY3otLnlj5bmtogiKX08L2I+JHtlLmZyZWVDYW5jZWxsYXRpb25Mb2NhbD9sKGMoYCB1bnRpbCAke1N0cmluZyhlLmZyZWVDYW5jZWxsYXRpb25Mb2NhbCkucmVwbGFjZSgvIC9nLCLCoCIpfWAsYO+8jCR7SnQoZS5mcmVlQ2FuY2VsbGF0aW9uTG9jYWwpfSDliY1gKSk6IiJ9PC9zcGFuPjwvbGk+YCxyPWUua2luZD09PSJyb29tIiYmZS5wYXltZW50PT09InByZXBhaWQiP2A8bGkgY2xhc3M9InBlcmsiPiR7UC5sb2NrfTxzcGFuPjxiPiR7YygiUGFpZCBpbiBhZHZhbmNlIiwi6ZyA6aKE5LuYIil9PC9iPiR7YygiIOKAlCBvbiB0aGUgbmV4dCBzdGVwIiwi77yM5LiL5LiA5q2l5LuY5qy+Iil9PC9zcGFuPjwvbGk+YDoiIjtyZXR1cm5gCiAgICA8ZGl2IGNsYXNzPSJyb3cgbGluZSI+CiAgICAgIDxkaXYgY2xhc3M9ImJvZHkiPgogICAgICAgIDxkaXYgY2xhc3M9Im5hbWUiPiR7bChlLnRpdGxlKX08L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJtZXRhIj4ke3QmJlR0KGUuc3VwcGxpZXIpP2A8c3BhbiBjbGFzcz0iYmFkZ2UiPiR7bChUdChlLnN1cHBsaWVyKS5uYW1lKX08L3NwYW4+IGA6IiJ9JHtsKGUua2luZD09PSJyb29tIj9bbj8iIjplLmhvdGVsTmFtZSxuPyIiOlZyKGUuc3RheSxlLmhvdXJseSksZS5kZXRhaWw/SnQoZS5kZXRhaWwpOiIiXS5maWx0ZXIoQm9vbGVhbikuam9pbigiIMK3ICIpOmAke2UuaG90ZWxOYW1lfSR7ZS5kZXRhaWw/YCDCtyAke2UuZGV0YWlsfWA6IiJ9YCl9PC9kaXY+CiAgICAgICAgJHtzfHxyP2A8dWwgY2xhc3M9InBlcmtzIj4ke3N9JHtyfTwvdWw+YDoiIn0KICAgICAgPC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9InByaWNlIj4KICAgICAgICA8ZGl2IGNsYXNzPSJwLWxpbmUiPiR7bChlLnRvdGFsKX08L2Rpdj4KICAgICAgICAke2Uua2luZD09PSJyb29tIiYmSnI/YDxkaXYgY2xhc3M9InAtdW5pdCI+JHtjKCJiZWZvcmUgdGF4ZXMiLCLmnKrlkKvnqI7otLkiKX08L2Rpdj5gOiIifQogICAgICAgIDxkaXYgY2xhc3M9InAtdW5pdCI+JHtlLmtpbmQ9PT0icm9vbSImJmUuaG91cmx5P2woenQoZS5ob3VybHkuaG91cnMpKTplLmtpbmQ9PT0icm9vbSI/bChjKGAke2UudW5pdH0gYSBuaWdodGAsYOavj+aZmiAke2UudW5pdH1gKSk6bChjKGAke2UudW5pdH0gZWFjaGAsYOavj+S7vSAke2UudW5pdH1gKSl9PC9kaXY+CiAgICAgIDwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJhY3Rpb24iPjxzcGFuIGNsYXNzPSJ3bCI+JHtlLmtpbmQ9PT0icm9vbSI/YygiUm9vbXMiLCLpl7TmlbAiKTpjKCJRdWFudGl0eSIsIuaVsOmHjyIpfTwvc3Bhbj4keyRzKG8sTnVtYmVyKGUua2luZD09PSJleHRyYSI/ZS5vcmRlcmVkPz9lLnF1YW50aXR5Pz8xOmUucXVhbnRpdHk/PzEpLFN0cmluZyhlLnRpdGxlKSl9PC9kaXY+CiAgICA8L2Rpdj5gfSxfaT0oZSx0KT0+YDxkaXYgY2xhc3M9InN1bXMiPgogICAgIDxkaXYgY2xhc3M9InN1bSI+PHNwYW4+JHshQXJyYXkuaXNBcnJheShlLmxpbmVzKXx8ZS5saW5lcy5zb21lKG49Pm4ua2luZD09PSJleHRyYSIpP2MoIlJvb21zIGFuZCBhZGQtb25zIiwi5oi/6LS55ZKM6ZmE5Yqg6aG555uuIik6YygiUm9vbXMiLCLmiL/otLkiKX08L3NwYW4+PHNwYW4+JHtsKGUuc3VidG90YWwpfTwvc3Bhbj48L2Rpdj4KICAgICA8ZGl2IGNsYXNzPSJzdW0iPjxzcGFuPiR7YygiVGF4ZXMgYW5kIGZlZXMiLCLnqI7otLkiKX08L3NwYW4+PHNwYW4+JHtsKGUudGF4ZXNBbmRGZWVzPT09IkluY2x1ZGVkIj9jKCJJbmNsdWRlZCIsIuW3suWQqyIpOmUudGF4ZXNBbmRGZWVzKX08L3NwYW4+PC9kaXY+CiAgICAgJHtlLm1lbWJlclNhdmluZz9gPGRpdiBjbGFzcz0ic3VtIGdvb2QiPjxzcGFuPiR7bChjKGAke2UubWVtYmVyU2F2aW5nLnRpZXJ9IG1lbWJlciByYXRlYCxgJHtlLm1lbWJlclNhdmluZy50aWVyfeS8muWRmOS7t2ApKX08L3NwYW4+PHNwYW4+4oiSICR7bChlLm1lbWJlclNhdmluZy5zYXZlZCl9PC9zcGFuPjwvZGl2PmA6IiJ9CiAgICAgPGRpdiBjbGFzcz0ic3VtIHRvdGFsIj48c3Bhbj4ke2wodCl9PHNtYWxsPiR7YygiVGF4ZXMgYW5kIGZlZXMgaW4iLCLlkKvnqI7otLkiKX08L3NtYWxsPjwvc3Bhbj48c3Bhbj4ke2woZS50b3RhbCl9PC9zcGFuPjwvZGl2PgogICAgICR7ZS5tZW1iZXJTYXZpbmc/YDxkaXYgY2xhc3M9InN1bSI+PHNwYW4+JHtjKCJQb2ludHMgdGhpcyBlYXJucyIsIuWPr+W+l+enr+WIhiIpfTwvc3Bhbj48c3Bhbj4ke2woTnVtYmVyKGUubWVtYmVyU2F2aW5nLnBvaW50cykudG9Mb2NhbGVTdHJpbmcoImVuLUdCIikpfTwvc3Bhbj48L2Rpdj5gOiIifQogICA8L2Rpdj5gLHR3PWU9PmA8ZGl2IGNsYXNzPSJub3RlIj4ke2woZS5zYW5kYm94P2MoYFRoaXMgaXMgYSB0ZXN0IGVudmlyb25tZW50LiBCb29raW5nIGhlcmUgbWFrZXMgYSBzaW11bGF0ZWQgYm9va2luZywgbm90IGEgJHtlLm5hbWV9IHJlc2VydmF0aW9uLCBhbmQgbm90aGluZyBpcyBwYWlkLmAsYOi/meaYr+a1i+ivleeOr+Wig++8muWcqOi/memHjOmihOiuouWPquS8mueUn+aIkOaooeaLn+iuouWNle+8jOS4jeaYryR7Y2UoZS5uYW1lKX3nmoTnnJ/lrp7pooTorqLvvIzkuZ/kuI3ku5jmrL7jgIJgKTplLmJvb2tpbmdNb2RlPT09InBheS1hdC1ob3RlbCI/YyhgTm90aGluZyBpcyBjaGFyZ2VkIGhlcmUuIEJvb2tpbmcgbWFrZXMgYSByZXNlcnZhdGlvbiB3aXRoICR7ZS5uYW1lfSwgcGFpZCBhdCB0aGUgaG90ZWwsIGFuZCBnaXZlcyB5b3UgYSBjb25maXJtYXRpb24gY29kZS5gLGDov5nph4zkuI3miaPmrL7jgILpooTorqLkvJrlnKgke2NlKGUubmFtZSl955Sf5oiQ5LiA56yU5Yiw5bqX5LuY5qy+55qE6K6i5Y2V77yM5bm257uZ5L2g5LiA5Liq56Gu6K6k56CB44CCYCk6ZS5kZW1vP2MoYE5vdGhpbmcgaXMgY2hhcmdlZCBoZXJlLiBUaGlzIGlzIGEgZGVtb25zdHJhdGlvbjogcmVxdWVzdGluZyBhIGJvb2tpbmcgZ2l2ZXMgeW91IGEgY29uZmlybWF0aW9uIGNvZGUsIGJ1dCAke2UubmFtZX0gZG9lcyBub3QgcmVjZWl2ZSBpdCBhbmQgbm8gcm9vbSBpcyBoZWxkLmAsYOi/memHjOS4jeaJo+asvuOAgui/meaYr+a8lOekuu+8muaPkOS6pOWQjuS8muW+l+WIsOehruiupOegge+8jOS9hiR7Y2UoZS5uYW1lKX3kuI3kvJrmlLbliLDvvIzkuZ/kuI3kvJrkuLrkvaDkv53nlZnmiL/pl7TjgIJgKTpjKGBOb3RoaW5nIGlzIGNoYXJnZWQgaGVyZS4gUmVxdWVzdGluZyBhIGJvb2tpbmcgYXNrcyAke2UubmFtZX0gdG8gaG9sZCB0aGUgcm9vbXMgYW5kIGdpdmVzIHlvdSBhIGNvbmZpcm1hdGlvbiBjb2RlLmAsYOi/memHjOS4jeaJo+asvuOAguaPkOS6pOWQjiR7Y2UoZS5uYW1lKX3kvJrkuLrkvaDkv53nlZnmiL/pl7TvvIzlubbnu5nkvaDkuIDkuKrnoa7orqTnoIHjgIJgKSl9PC9kaXY+YCx3aT1lPT5lLmxlbmd0aDwyP2VbMF0/PyIiOmAke2Uuc2xpY2UoMCwtMSkuam9pbihjKCIsICIsIuOAgSIpKX0ke2MoIiBhbmQgIiwi5ZKMIil9JHtlW2UubGVuZ3RoLTFdfWAsbnc9ZT0+e2NvbnN0IHQ9SmwoZSk7aWYodC5sZW5ndGg+MSl7Y29uc3Qgbj10LmluY2x1ZGVzKG50KT9udDoiIjtyZXR1cm5bYDxkaXYgY2xhc3M9Im5vdGUiPiR7bChjKGBUaGVzZSBzdGF5cyBhcmUgd2l0aCAke3dpKHQubWFwKG89PkJlKG8pLm5hbWUpKX0uIEVhY2ggZ3JvdXAncyBhcmUgYm9va2VkIG9uIHRoZWlyIG93bi5gLGDov5nkupvkvY/lrr/liIblsZ4ke3dpKHQubWFwKG89PkJlKG8pLm5hbWUpKX3vvIzmr4/kuKrpm4blm6LnmoTopoHliIblvIDpooTorqLjgIJgKSl9PC9kaXY+YCwuLi50Lm1hcChvPT57Y29uc3Qgcz1CZShvKTtyZXR1cm5gPGRpdiBjbGFzcz0iZm9vdCI+PGJ1dHRvbiBjbGFzcz0iZ28ke24mJm4hPT1vPyIgcXVpZXQiOiIifSIgdHlwZT0iYnV0dG9uIiBkYXRhLWFjdD0iYXNrLWJvb2siIGRhdGEtZ3JvdXA9IiR7bChvKX0iPiR7bChjKGBCb29rIHRoZSAke3MubmFtZX0gc3RheXNgLGDpooTorqIke3MubmFtZX3nmoTkvY/lrr9gKSl9PC9idXR0b24+PC9kaXY+JHt0dyhzKX1gfSksbj9TaSghMCxCZShuKSk6IiJdfXJldHVybltTaSghMCxCZSh0WzBdKSldfSxpdT0oKT0+QmUobnR8fEpsKEM/LmxpbmVzPz9bXSlbMF0pLG93PWU9Pntjb25zdCB0PWUubGluZXM/P1tdO2lmKEpyPSEhZS50YXhlc0FuZEZlZXMmJmUudGF4ZXNBbmRGZWVzIT09IkluY2x1ZGVkIix0Lmxlbmd0aD09PTApcmV0dXJuW2A8ZGl2IGNsYXNzPSJlbXB0eSI+JHtjKCJUaGUgdHJpcCBpcyBlbXB0eS4iLCLooYznqIvph4zov5jmsqHmnInlhoXlrrnjgIIiKX08L2Rpdj5gLGA8ZGl2IGNsYXNzPSJmb290Ij48YnV0dG9uIGNsYXNzPSJnbyIgdHlwZT0iYnV0dG9uIiBkYXRhLWFjdD0iaG9tZSI+JHtsKGMoYEJyb3dzZSAke3llP2Bob3RlbHMgb24gJHtEZX1gOmAke0RlfSBob3RlbHNgfWAsY2UoRGUpPT09IumFkuW6lyI/Iua1j+iniOWFqOmDqOmFkuW6lyI6YOa1j+iniCR7RGV955qE6YWS5bqXYCkpfTwvYnV0dG9uPjwvZGl2PmBdLmpvaW4oIiIpO2NvbnN0IG49Wy4uLm5ldyBTZXQodC5tYXAoaT0+U3RyaW5nKGkuZGF5Pz8iIikpKV0uc29ydCgpLG89dC5maWx0ZXIoaT0+aS5raW5kPT09InJvb20iKSxzPVsuLi5uZXcgU2V0KG8ubWFwKGk9PlN0cmluZyhpLmhvdGVsTmFtZT8/IiIpKSldLmZpbHRlcihCb29sZWFuKSxyPXMubGVuZ3RoPT09MSYmbmV3IFNldChvLm1hcChpPT5gJHtpLnN0YXk/LmNoZWNrSW59fCR7aS5zdGF5Py5jaGVja091dH18JHtpLmhvdXJseT8uc3RhcnQ/PyIifWApKS5zaXplPT09MTtyZXR1cm5bYDxkaXYgY2xhc3M9InJldmlldy1oIj48aDIgY2xhc3M9ImgtbmFtZSI+JHtjKCJSZXZpZXcgYW5kIGJvb2siLCLmoLjlr7nlubbpooTorqIiKX08L2gyPjxkaXYgY2xhc3M9Imgtd2hlcmUiPiR7cy5sZW5ndGg9PT0xP0ZvKHNbMF0pOmwocy5sZW5ndGg/YyhgJHtzLmxlbmd0aH0gaG90ZWxzYCxgJHtzLmxlbmd0aH0g5a626YWS5bqXYCk6YyhgJHt0Lmxlbmd0aH0gJHt0Lmxlbmd0aD09PTE/Iml0ZW0iOiJpdGVtcyJ9YCxgJHt0Lmxlbmd0aH0g6aG5YCkpfTwvZGl2PjwvZGl2PmAscj9vdShvWzBdPy5zdGF5LG9bMF0/LmhvdXJseSk6IiIsbi5tYXAoaT0+YAogICAgICAke2kmJm4ubGVuZ3RoPjE/YDxkaXYgY2xhc3M9ImRheSI+JHtsKEFlKGkpKX08L2Rpdj5gOiIifQogICAgICA8ZGl2IGNsYXNzPSJyb3dzIj4ke3QuZmlsdGVyKGE9PlN0cmluZyhhLmRheT8/IiIpPT09aSkubWFwKGE9PmV3KGEsSmwodCkubGVuZ3RoPjEscikpLmpvaW4oIiIpfTwvZGl2PmApLmpvaW4oIiIpLChlLmRyb3BwZWQ/P1tdKS5sZW5ndGg/YDxkaXYgY2xhc3M9ImVyciI+JHtlLmRyb3BwZWQubWFwKGk9PmAke2woaS50aXRsZSl9OiAke2woaS53aHkpfWApLmpvaW4oIjxicj4iKX08L2Rpdj5gOiIiLC4uLkFycmF5LmlzQXJyYXkoZS5ncm91cHMpJiZlLmdyb3Vwcy5sZW5ndGg+MT9bYDxkaXYgY2xhc3M9Im5vdGUiPiR7bChjKGBQcmljZWQgaW4gJHsoZS5jdXJyZW5jaWVzPz9bXSkuam9pbigiIGFuZCAiKX0sIHNlcGFyYXRlbHkuIE5vdGhpbmcgaGVyZSBjb252ZXJ0cyBvbmUgaW50byB0aGUgb3RoZXI7IGVhY2ggaG90ZWwgaXMgYm9va2VkIGFuZCBwYWlkIGluIGl0cyBvd24uYCxg5YiG5Yir5LulICR7KGUuY3VycmVuY2llcz8/W10pLmpvaW4oIuOAgSIpfSDorqHku7fvvIzov5nph4zkuI3lgZrmjaLnrpfvvJvmr4/lrrbphZLlupfmjInoh6rlt7HnmoTluIHnp43pooTorqLlkozku5jmrL7jgIJgKSl9PC9kaXY+YCwuLi5lLmdyb3Vwcy5tYXAoaT0+X2koaSxpLmdvZXNXaXRoQVN0YXk/YyhgSW4gJHtpLmN1cnJlbmN5fSwgZ29lcyB3aXRoIGEgc3RheSAtIG5vdCBpbiB0aGUgdG90YWxgLGAke2kuY3VycmVuY3l977yM6ZqP5L2P5a6/5LiA6LW36K6i77yM5LiN6K6h5YWl5oC75Lu3YCk6YyhgVG90YWwgaW4gJHtpLmN1cnJlbmN5fWAsYCR7aS5jdXJyZW5jeX0g5oC75Lu3YCkpKV06W19pKGUsYygiVG90YWwiLCLmgLvku7ciKSldLG5lfHwhVW8oInNpZ25JbiIpPyIiOmA8ZGl2IGNsYXNzPSJtZW1iZXItb2ZmZXIiPiR7UC50YWd9PHNwYW4+JHtsKGMoYEEgJHtiaXx8RGV9IG1lbWJlcj9gLGAke2JpfHxEZX3kvJrlkZjvvJ9gKSl9IDxidXR0b24gY2xhc3M9Imxpbmt5IiB0eXBlPSJidXR0b24iIGRhdGEtYWN0PSJhc2stc2lnbi1pbiI+JHtjKCJTaWduIGluIGZvciB0aGUgbWVtYmVyIHJhdGUiLCLnmbvlvZXkuqvkvJrlkZjku7ciKX08L2J1dHRvbj48L3NwYW4+PC9kaXY+JHt3cygpfWAsLi4uQXJyYXkuaXNBcnJheShlLm5lZWRzUm9vbSkmJmUubmVlZHNSb29tLmxlbmd0aD9lLm5lZWRzUm9vbS5tYXAoaT0+YDxkaXYgY2xhc3M9ImFza2VkIj4KICAgICAgICAgICAgIDxiPiR7YygiR29lcyB3aXRoIGEgc3RheSIsIumcgOmaj+S9j+Wuv+S4gOi1t+iuoiIpfTwvYj4KICAgICAgICAgICAgIDxzcGFuPiR7bChjKGAkeyhpLmV4dHJhcz8/W10pLmpvaW4oIiBhbmQgIil9IGlzICR7aS5ob3RlbE5hbWV9J3Mgc2VydmljZSBmb3IgaXRzIGd1ZXN0cywgc28gaXQgaXMgYm9va2VkIHdpdGggYSByb29tIHRoZXJlIC0gb3IgYWRkZWQgdG8gYSBib29raW5nIHlvdSBhbHJlYWR5IGhhdmUuYCxgJHsoaS5leHRyYXM/P1tdKS5qb2luKCLjgIEiKX3mmK8ke2kuaG90ZWxOYW1lfeS4uuS9j+WuouaPkOS+m+eahOacjeWKoe+8jOimgeWSjOmCo+mHjOeahOaIv+mXtOS4gOi1t+iuou+8jOaIluWKoOWIsOS9oOW3suacieeahOmihOiuouS4iuOAgmApKX08L3NwYW4+CiAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb290Ij4KICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iZ28iIHR5cGU9ImJ1dHRvbiIgZGF0YS1ob3RlbD0iJHtsKGkuaG90ZWxJZCl9Ij4ke2woYyhgUm9vbXMgYXQgJHtpLmhvdGVsTmFtZX1gLGAke2kuaG90ZWxOYW1lfeeahOaIv+mXtGApKX08L2J1dHRvbj4KICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iZ28gcXVpZXQiIHR5cGU9ImJ1dHRvbiIgZGF0YS1hY3Q9ImJvb2tpbmdzIj4ke2MoIk15IGJvb2tpbmdzIiwi5oiR55qE6aKE6K6iIil9PC9idXR0b24+CiAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICA8L2Rpdj5gKTpbLi4ubncodCldXS5qb2luKCIiKX0sc3c9W3tpZDoia2luZy1iZWQiLGxhYmVsOiJLaW5nIGJlZCIsemg6IuWkp+W6iiJ9LHtpZDoidHdpbi1iZWRzIixsYWJlbDoiVHdpbiBiZWRzIix6aDoi5Y+M5bqKIn0se2lkOiJoaWdoLWZsb29yIixsYWJlbDoiSGlnaCBmbG9vciIsemg6IumrmOalvOWxgiJ9LHtpZDoibG93LWZsb29yIixsYWJlbDoiTG93IGZsb29yIix6aDoi5L2O5qW85bGCIn0se2lkOiJxdWlldC1yb29tIixsYWJlbDoiUXVpZXQgcm9vbSIsemg6IuWuiemdmeaIv+mXtCJ9LHtpZDoiY29ubmVjdGluZy1yb29tcyIsbGFiZWw6IkNvbm5lY3Rpbmcgcm9vbXMiLHpoOiLov57pgJrmiL8ifSx7aWQ6ImVhcmx5LWNoZWNrLWluIixsYWJlbDoiRWFybHkgY2hlY2staW4iLHpoOiLmj5DliY3lhaXkvY8ifSx7aWQ6ImxhdGUtYXJyaXZhbCIsbGFiZWw6IkFycml2aW5nIGxhdGUiLHpoOiLmmZrliLAifSx7aWQ6ImFjY2Vzc2libGUtcm9vbSIsbGFiZWw6IkFjY2Vzc2libGUgcm9vbSIsemg6IuaXoOmanOeijeaIvyJ9XSxfcz1lPT57Y29uc3QgdD1zdy5maW5kKG49Pm4uaWQ9PT1lKTtyZXR1cm4gdD9jKHQubGFiZWwsdC56aCk6ZX0scnc9eyJraW5nLWJlZCI6InR3aW4tYmVkcyIsInR3aW4tYmVkcyI6ImtpbmctYmVkIiwiaGlnaC1mbG9vciI6Imxvdy1mbG9vciIsImxvdy1mbG9vciI6ImhpZ2gtZmxvb3IifSxpdz1be2VuOiJCZWQiLHpoOiLluorlnosiLGlkczpbImtpbmctYmVkIiwidHdpbi1iZWRzIl19LHtlbjoiRmxvb3IiLHpoOiLmpbzlsYIiLGlkczpbImhpZ2gtZmxvb3IiLCJsb3ctZmxvb3IiXX0se2VuOiJBbHNvIix6aDoi5YW25LuWIixpZHM6WyJxdWlldC1yb29tIiwiY29ubmVjdGluZy1yb29tcyIsImVhcmx5LWNoZWNrLWluIiwiYWNjZXNzaWJsZS1yb29tIl19XSxhdz1bIjEyOjAwIiwiMTQ6MDAiLCIxNjowMCIsIjE4OjAwIiwiMjA6MDAiLCIyMjowMCIsIjIzOjMwIl07bGV0IE9lPW51bGw7Y29uc3QgU2k9KGU9ITEsdD1pdSgpKT0+e2NvbnN0IG49T2U/T2UucmVxdWVzdHM6bmU/LnByZWZlcmVuY2VzPz9bXSxvPUM/LnZpZXc9PT0idHJpcCImJiEoQXJyYXkuaXNBcnJheShDLmdyb3VwcykmJkMuZ3JvdXBzLmxlbmd0aD4xKT9TdHJpbmcoQy50b3RhbD8/IiIpOiIiLHM9KEM/LmxpbmVzPz9bXSkuZmlsdGVyKHU9PnUua2luZD09PSJyb29tIikscj1zLnJlZHVjZSgodSxwKT0+dStOdW1iZXIocC5xdWFudGl0eT8/MSksMCksaT1zLnNvbWUodT0+dS5wYXltZW50PT09InByZXBhaWQiKSxhPWk/YygiQ29udGludWUgdG8gcGF5bWVudCIsIuWOu+S7mOasviIpOnQuc2FuZGJveD9jKCJNYWtlIGEgdGVzdCBib29raW5nIiwi5o+Q5Lqk5rWL6K+V6aKE6K6iIik6dC5ib29raW5nTW9kZT09PSJwYXktYXQtaG90ZWwiP3I+MT9jKGBCb29rICR7cn0gcm9vbXNgLGDpooTorqIgJHtyfSDpl7RgKTpjKCJCb29rIHRoaXMgcm9vbSIsIumihOiuoui/memXtOaIvyIpOnQuZGVtbz9jKCJSZXF1ZXN0IGJvb2tpbmciLCLmj5DkuqTpooTorqIiKTpyPjE/YyhgSG9sZCAke3J9IHJvb21zYCxg5L+d55WZICR7cn0g6Ze0YCk6YygiSG9sZCB0aGlzIHJvb20iLCLkv53nlZnov5npl7TmiL8iKSxkPU9lPy5hcnJpdmluZ0F0Pz8iIjtyZXR1cm5gCiAgPGRpdiBjbGFzcz0iZm9ybSIgaWQ9Imd1ZXN0IiR7ZT8iIjoiIGhpZGRlbiJ9PgogICAgPGgzIGNsYXNzPSJmb3JtLWgiPiR7YygiV2hvIGlzIHN0YXlpbmciLCLlhaXkvY/kurrkv6Hmga8iKX08L2gzPgogICAgPGxhYmVsPiR7YygiRnVsbCBuYW1lIiwi5aeT5ZCNIil9PGlucHV0IGlkPSJnbmFtZSIgdHlwZT0idGV4dCIgYXV0b2NvbXBsZXRlPSJvZmYiIHBsYWNlaG9sZGVyPSIke2MoIkFzIGl0IHNob3VsZCBhcHBlYXIgb24gdGhlIGJvb2tpbmciLCLkuI7or4Hku7bkuIDoh7QiKX0iIHZhbHVlPSIke2woT2U/Lm5hbWU/PyIiKX0iPjwvbGFiZWw+CiAgICA8ZGl2IGNsYXNzPSIke3QucGhvbmVSZXF1aXJlZD8idHdvIjoib25lIn0iPgogICAgICA8bGFiZWw+JHtjKCJFbWFpbCIsIumCrueusSIpfTxpbnB1dCBpZD0iZ21haWwiIHR5cGU9ImVtYWlsIiBhdXRvY29tcGxldGU9Im9mZiIgcGxhY2Vob2xkZXI9IiR7YygiRm9yIHRoZSBjb25maXJtYXRpb24iLCLmjqXmlLbnoa7orqTkv6Hmga8iKX0iIHZhbHVlPSIke2woT2U/LmVtYWlsPz8iIil9Ij48L2xhYmVsPiR7dC5waG9uZVJlcXVpcmVkP2AKICAgICAgPGxhYmVsPiR7YygiUGhvbmUiLCLmiYvmnLrlj7ciKX08aW5wdXQgaWQ9ImdwaG9uZSIgdHlwZT0idGVsIiBhdXRvY29tcGxldGU9Im9mZiIgcGxhY2Vob2xkZXI9IiR7YygiRm9yIHRoZSBob3RlbCB0byByZWFjaCB5b3UiLCLmlrnkvr/phZLlupfogZTns7vkvaAiKX0iIHZhbHVlPSIke2woT2U/LnBob25lPz8iIil9Ij48L2xhYmVsPmA6IiJ9CiAgICA8L2Rpdj4KICAgIDxkZXRhaWxzIGNsYXNzPSJhc2tzIiR7bi5sZW5ndGh8fE9lPy5ub3Rlc3x8ZD8iIG9wZW4iOiIifT4KICAgICAgPHN1bW1hcnk+JHtjKCJSZXF1ZXN0cyBmb3IgdGhlIGhvdGVsIiwi57uZ6YWS5bqX55qE6ZyA5rGCIil9IDxzbWFsbD4ke2MoIm9wdGlvbmFsIiwi6YCJ5aGrIil9PC9zbWFsbD48L3N1bW1hcnk+CiAgICAgIDxkaXYgY2xhc3M9ImFza3MtYm9keSI+CiAgICAgICAgJHtpdy5tYXAodT0+YDxkaXYgY2xhc3M9ImFzay1ncm91cCIgcm9sZT0iZ3JvdXAiIGFyaWEtbGFiZWw9IiR7Yyh1LmVuLHUuemgpfSI+CiAgICAgICAgICA8c3BhbiBjbGFzcz0id2wiPiR7Yyh1LmVuLHUuemgpfTwvc3Bhbj4KICAgICAgICAgIDxkaXYgY2xhc3M9ImNoaXBzIj4ke3UuaWRzLm1hcChwPT5gPGJ1dHRvbiBjbGFzcz0iY2hpcCBhc2siIHR5cGU9ImJ1dHRvbiIgZGF0YS1hc2s9IiR7bChwKX0iIGFyaWEtcHJlc3NlZD0iJHtuLmluY2x1ZGVzKHApPyJ0cnVlIjoiZmFsc2UifSI+JHtsKF9zKHApKX08L2J1dHRvbj5gKS5qb2luKCIiKX08L2Rpdj4KICAgICAgICA8L2Rpdj5gKS5qb2luKCIiKX0KICAgICAgICA8ZGl2IGNsYXNzPSJhc2stZ3JvdXAiIHJvbGU9Imdyb3VwIiBhcmlhLWxhYmVsPSIke2MoIkFycml2aW5nIGFyb3VuZCIsIumihOiuoeWIsOW6lyIpfSI+CiAgICAgICAgICA8c3BhbiBjbGFzcz0id2wiPiR7YygiQXJyaXZpbmcgYXJvdW5kIiwi6aKE6K6h5Yiw5bqXIil9PC9zcGFuPgogICAgICAgICAgPGRpdiBjbGFzcz0iY2hpcHMiPiR7YXcubWFwKHU9PmA8YnV0dG9uIGNsYXNzPSJjaGlwIGFzayIgdHlwZT0iYnV0dG9uIiBkYXRhLWFycml2ZT0iJHt1fSIgYXJpYS1wcmVzc2VkPSIke2Q9PT11PyJ0cnVlIjoiZmFsc2UifSI+JHt1PT09IjIzOjMwIj9jKCJBZnRlciAyMjowMCIsIjIyOjAwIOS7peWQjiIpOnV9PC9idXR0b24+YCkuam9pbigiIil9PC9kaXY+CiAgICAgICAgICA8aW5wdXQgaWQ9Imd0aW1lIiB0eXBlPSJoaWRkZW4iIHZhbHVlPSIke2woZCl9Ij4KICAgICAgICA8L2Rpdj4KICAgICAgICA8bGFiZWw+JHtjKCJBbnl0aGluZyBlbHNlIiwi5YW25LuW6ZyA5rGCIil9PGlucHV0IGlkPSJnbm90ZSIgdHlwZT0idGV4dCIgYXV0b2NvbXBsZXRlPSJvZmYiIHBsYWNlaG9sZGVyPSIke2MoIkluIHlvdXIgb3duIHdvcmRzIiwi55So5L2g6Ieq5bex55qE6K+d5YaZIil9IiB2YWx1ZT0iJHtsKE9lPy5ub3Rlcz8/IiIpfSI+PC9sYWJlbD4KICAgICAgICA8ZGl2IGNsYXNzPSJub3RlIj4ke2woYyhgVGhlc2UgZ28gdG8gdGhlIGRlc2sgYXMgcmVxdWVzdHMuICR7dC5uYW1lfSBtZWV0cyB3aGF0IGl0IGNhbiBvbiB0aGUgZGF5OyBub25lIG9mIGl0IGlzIGhlbGQuYCxg6L+Z5Lqb5Lya5L2c5Li66ZyA5rGC6L2s57uZ5YmN5Y+w77yMJHtjZSh0Lm5hbWUpfeW9k+WkqeWwvemHj+a7oei2s++8jOS9huS4jeS9nOS/neivgeOAgmApKX08L2Rpdj4KICAgICAgICAke25lP2A8bGFiZWwgY2xhc3M9InJlbWVtYmVyIj48aW5wdXQgaWQ9ImdyZW1lbWJlciIgdHlwZT0iY2hlY2tib3giJHtPZT8ucmVtZW1iZXI/IiBjaGVja2VkIjoiIn0+ICR7bChjKGBSZW1lbWJlciB0aGUgYmVkLCBmbG9vciBhbmQgcm9vbSByZXF1ZXN0cyBvbiBteSAke25lLnByb2dyYW1tZT8/Im1lbWJlcnNoaXAifSBmb3IgbmV4dCB0aW1lYCxg5oqK5bqK5Z6L44CB5qW85bGC5ZKM5oi/6Ze06ZyA5rGC6K6w5Zyo5oiR55qEJHtuZS5wcm9ncmFtbWU/PyLkvJrlkZgifei0puaIt+mHjO+8jOS4i+asoeiHquWKqOW4puS4imApKX08L2xhYmVsPmA6IiJ9CiAgICAgIDwvZGl2PgogICAgPC9kZXRhaWxzPgogICAgPGJ1dHRvbiBjbGFzcz0iZ28gYmlnIGJsb2NrIiB0eXBlPSJidXR0b24iIGRhdGEtYWN0PSJib29rIj4ke2F9JHtvP2A8c3BhbiBjbGFzcz0icHJpY2UtaW4iPiR7bChvKX08L3NwYW4+YDoiIn08L2J1dHRvbj4KICAgIDxkaXYgY2xhc3M9InRydXN0Ij4ke1AubG9ja308c3Bhbj4ke2woaT90LnNhbmRib3g/YygiTmV4dCwgYSBwYXltZW50IHBhZ2UgaW4gdGVzdCBtb2RlOiBubyByZWFsIG1vbmV5IG1vdmVzLiBDYXJkIGRldGFpbHMgYXJlIHR5cGVkIG9ubHkgdGhlcmUsIGFuZCBub3RoaW5nIGlzIGJvb2tlZCB1bnRpbCBpdCBpcyBwYWlkLiIsIuS4i+S4gOatpeaYr+a1i+ivleaooeW8j+eahOS7mOasvumhte+8jOS4jeS8muecn+WunuaJo+asvuOAguWNoeWPt+WPquWcqOS7mOasvumhteWhq+WGme+8jOS7mOasvuaIkOWKn+WJjeS4jeS8mumihOiuouOAgiIpOmMoYE5leHQsIGEgc2VjdXJlIHBheW1lbnQgcGFnZTogY2FyZCBkZXRhaWxzIGFyZSB0eXBlZCBvbmx5IHRoZXJlLiBOb3RoaW5nIGlzIGJvb2tlZCB3aXRoICR7dC5uYW1lfSB1bnRpbCBpdCBpcyBwYWlkLCBhbmQgaWYgaXQgY2Fubm90IGJlLCBhbGwgb2YgaXQgZ29lcyBiYWNrLmAsYOS4i+S4gOatpeaYr+WuieWFqOS7mOasvumhte+8jOWNoeWPt+WPquWcqOmCo+mHjOWhq+WGmeOAguS7mOasvuaIkOWKn+WJjeS4jeS8muWcqCR7Y2UodC5uYW1lKX3pooTorqLvvJvorqLkuI3miJDkvJrlhajpop3pgIDlm57jgIJgKTp0LnNhbmRib3g/YygiQSB0ZXN0IGJvb2tpbmc6IG5vdGhpbmcgaXMgaGVsZCBhbmQgbm90aGluZyBpcyBwYWlkLiIsIua1i+ivlemihOiuou+8muS4jeS/neeVmeaIv+mXtO+8jOS5n+S4jeS7mOasvuOAgiIpOnQuYm9va2luZ01vZGU9PT0icGF5LWF0LWhvdGVsIj9jKGBObyBjYXJkIGlzIHRha2VuIGFuZCBub3RoaW5nIGlzIGNoYXJnZWQuIEEgcmVzZXJ2YXRpb24gd2l0aCAke3QubmFtZX0sIHBhaWQgYXQgdGhlIGhvdGVsLmAsYOS4jeeUqOe7keWNoe+8jOS5n+S4jeaJo+asvuOAgui/meaYr+WcqCR7Y2UodC5uYW1lKX3nmoTpooTorqLvvIzliLDlupfku5jmrL7jgIJgKTp0LmRlbW8/YyhgTm8gY2FyZCBpcyB0YWtlbiBhbmQgbm90aGluZyBpcyBjaGFyZ2VkLiBUaGlzIGlzIGEgZGVtb25zdHJhdGlvbjogJHt0Lm5hbWV9IGRvZXMgbm90IHJlY2VpdmUgaXQgYW5kIG5vIHJvb20gaXMgaGVsZC5gLGDkuI3nlKjnu5HljaHvvIzkuZ/kuI3miaPmrL7jgILov5nmmK/mvJTnpLrvvIwke2NlKHQubmFtZSl95LiN5Lya5pS25Yiw77yM5Lmf5LiN5L+d55WZ5oi/6Ze044CCYCk6YygiTm8gY2FyZCBpcyB0YWtlbiBhbmQgbm90aGluZyBpcyBjaGFyZ2VkLiBZb3UgcHJlc2VudCBhIGNhcmQgYXQgY2hlY2staW4uIiwi5LiN55So57uR5Y2h77yM5Lmf5LiN5omj5qy+44CC5YWl5L2P5pe25Zyo5YmN5Y+w5Ye656S66ZO26KGM5Y2h5Y2z5Y+v44CCIikpfTwvc3Bhbj48L2Rpdj4KICA8L2Rpdj5gfSxUaT1lPT5lLmxlbmd0aD4xP2Ake2Uuc2xpY2UoMCwtMSkuam9pbihjKCIsICIsIuOAgSIpKX0ke2MoIiBhbmQgIiwi5ZKMIil9JHtlLmF0KC0xKX1gOmVbMF0/PyIiLGN3PWU9PltgPGRpdiBjbGFzcz0iZXJyIj4ke2wocmU9PT0iemgiPyLpooTorqLpnIDopoHloavlhpnlp5PlkI3lkozpgq7nrrHjgIIiOmBUaGUgYm9va2luZyBuZWVkcyAke1RpKGUubWlzc2luZz8/W10pfHwiYSBuYW1lIGFuZCBhbiBlbWFpbCJ9LmApfTwvZGl2PmAsU2koITApXS5qb2luKCIiKSxsdz1lPT57Y29uc3QgdD1lLm1lbWJlcj8/e307cmV0dXJuW2A8ZGl2IGNsYXNzPSJjb25mIj4KICAgICAgIDxkaXYgY2xhc3M9Im5vdGUiPiR7bCh0LnByb2dyYW1tZSl9PC9kaXY+CiAgICAgICAke3QubmFtZT9gPGRpdiBjbGFzcz0id2hlcmUiPiR7bCh0Lm5hbWUpfTwvZGl2PmA6YDxkaXYgY2xhc3M9IndoZXJlIj4ke2MoIlNpZ25lZCBpbiIsIuW3sueZu+W9lSIpfTwvZGl2PmB9CiAgICAgICA8ZGl2IGNsYXNzPSJjb2RlIiBzdHlsZT0iZm9udC1zaXplOjIwcHgiPiR7bCh0LnRpZXI/Lm5hbWUpfTwvZGl2PgogICAgICAgJHt0eXBlb2YgdC5wb2ludHM9PSJudW1iZXIiP2A8ZGl2IGNsYXNzPSJ3aGVuIj4ke2woYyhgJHt0LnBvaW50cy50b0xvY2FsZVN0cmluZygiZW4tR0IiKX0gcG9pbnRzYCxgJHt0LnBvaW50cy50b0xvY2FsZVN0cmluZygiZW4tR0IiKX0g56ev5YiGYCkpfTwvZGl2PmA6IiJ9CiAgICAgPC9kaXY+YCxgPGRpdiBjbGFzcz0idW5wYWlkIj48Yj4ke2woYyhgJHtNYXRoLnJvdW5kKCh0LnRpZXI/LmRpc2NvdW50Pz8wKSoxMDApfSUgb2ZmYCxg5LyY5oOgICR7TWF0aC5yb3VuZCgodC50aWVyPy5kaXNjb3VudD8/MCkqMTAwKX0lYCkpfTwvYj48c3Bhbj4ke2woYyhgUm9vbSByYXRlcyBhbmQgdHJpcCB0b3RhbHMgbm93IHNob3cgdGhlICR7dC50aWVyPy5uYW1lfSBtZW1iZXIgcmF0ZS4gTm90aGluZyBpcyBjaGFyZ2VkIGJ5IHNpZ25pbmcgaW4uYCxg5oi/5Lu35ZKM6KGM56iL5oC75Lu35bey5oyJJHt0LnRpZXI/Lm5hbWV95Lya5ZGY5Lu35pi+56S644CC55m75b2V5LiN5Lya5omj5qy+44CCYCkpfTwvc3Bhbj48L2Rpdj5gLCh0LnByZWZlcmVuY2VzPz9bXSkubGVuZ3RoP2A8ZGl2IGNsYXNzPSJhc2tlZCI+CiAgICAgICAgICAgPGI+JHtjKCJTYXZlZCBmb3IgeW91ciBuZXh0IHN0YXlzIiwi5bey5Li65LiL5qyh5YWl5L2P5L+d5a2YIil9PC9iPgogICAgICAgICAgIDxzcGFuPiR7bChjKGAke3QucHJlZmVyZW5jZXMubWFwKF9zKS5qb2luKCIsICIpfSAtIHRpY2tlZCBvbiB0aGUgYm9va2luZyBmb3JtLCBhbmQgYXNrZWQgZm9yIG9ubHkgd2hlbiB5b3UgYm9vayB3aXRoIHRoZW0uYCxgJHt0LnByZWZlcmVuY2VzLm1hcChfcykuam9pbigi44CBIil977yM6aKE6K6i5pe25Lya6Ieq5Yqo5Yu+6YCJ77yM5Y+q5Zyo5L2g55So5a6D5Lus6aKE6K6i5pe25omN5o+Q5Ye644CCYCkpfTwvc3Bhbj4KICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJsaW5reSIgdHlwZT0iYnV0dG9uIiBkYXRhLWFjdD0iZm9yZ2V0LXByZWZzIj4ke2MoIkZvcmdldCB0aGVtIiwi5riF6Zmk6L+Z5Lqb5YGP5aW9Iil9PC9idXR0b24+CiAgICAgICAgIDwvZGl2PmA6IiIsYDxkaXYgY2xhc3M9ImZvb3QiPgogICAgICAgPGJ1dHRvbiBjbGFzcz0iZ28iIHR5cGU9ImJ1dHRvbiIgZGF0YS1hY3Q9ImhvbWUiPiR7YygiRmluZCBhIGhvdGVsIiwi5om+6YWS5bqXIil9PC9idXR0b24+CiAgICAgICA8YnV0dG9uIGNsYXNzPSJnbyBxdWlldCIgdHlwZT0iYnV0dG9uIiBkYXRhLWFjdD0ic2lnbi1vdXQiPiR7YygiU2lnbiBvdXQiLCLpgIDlh7rnmbvlvZUiKX08L2J1dHRvbj4KICAgICA8L2Rpdj5gXS5qb2luKCIiKX0sdXc9KCk9PltgPGRpdiBjbGFzcz0iZXJyIj4ke2MoIk5vIG1lbWJlcnNoaXAgbWF0Y2hlcyB0aGF0IG51bWJlciBhbmQgc3VybmFtZS4gQ2hlY2sgYm90aCBhcyB0aGV5IGFyZSBwcmludGVkIOKAlCBub3RoaW5nIGVsc2UgaXMgbmVlZGVkLCB0aGlzIGNvbm5lY3RvciBuZXZlciBhc2tzIGZvciBhIHBhc3N3b3JkLiIsIuS8muWRmOWPt+WSjOWnk+awj+WvueS4jeS4iuOAguivt+aMieWNoeS4iuWNsOeahOaguOWvueS4pOmhueWNs+WPr++8jOi/memHjOS7juS4jeimgeaxguWvhueggeOAgiIpfTwvZGl2PmAsd3MoITApXS5qb2luKCIiKSx3cz0oZT0hMSk9PmAKICA8ZGl2IGNsYXNzPSJmb3JtIiBpZD0ic2lnbmluIiR7ZT8iIjoiIGhpZGRlbiJ9PgogICAgPGRpdiBjbGFzcz0idHdvIj4KICAgICAgPGxhYmVsPiR7YygiTWVtYmVyc2hpcCBudW1iZXIiLCLkvJrlkZjlj7ciKX08aW5wdXQgaWQ9Im1udW0iIHR5cGU9InRleHQiIGF1dG9jb21wbGV0ZT0ib2ZmIiBwbGFjZWhvbGRlcj0iJHtjKCJBcyBpdCBpcyBwcmludGVkIiwi5oyJ5Y2h5LiK5Y2w55qE5aGr5YaZIil9Ij48L2xhYmVsPgogICAgICA8bGFiZWw+JHtjKCJTdXJuYW1lIiwi5aeT5rCPIil9PGlucHV0IGlkPSJtc3VyIiB0eXBlPSJ0ZXh0IiBhdXRvY29tcGxldGU9Im9mZiIgcGxhY2Vob2xkZXI9IiR7YygiVGhlIHN1cm5hbWUgb24gaXQiLCLljaHkuIrnmoTlp5PmsI8iKX0iPjwvbGFiZWw+CiAgICA8L2Rpdj4KICAgIDxidXR0b24gY2xhc3M9ImdvIiB0eXBlPSJidXR0b24iIGRhdGEtYWN0PSJzaWduLWluIj4ke2MoIlNpZ24gaW4iLCLnmbvlvZUiKX08L2J1dHRvbj4KICAgIDxkaXYgY2xhc3M9Im5vdGUiPiR7YygiTm8gcGFzc3dvcmQgaXMgYXNrZWQgZm9yIGFuZCBub25lIGlzIHN0b3JlZC4gU2lnbmluZyBpbiBzaG93cyB0aGUgbWVtYmVyIHJhdGU7IG5vdGhpbmcgaXMgY2hhcmdlZC4iLCLkuI3pnIDopoHlr4bnoIHvvIzkuZ/kuI3kvJrkv53lrZjku7vkvZXlr4bnoIHjgILnmbvlvZXlkI7mmL7npLrkvJrlkZjku7fvvIzkuI3kvJrmiaPmrL7jgIIiKX08L2Rpdj4KICA8L2Rpdj5gLGR3PWU9Pntjb25zdCB0PWUucmVxdWVzdGVkPz9bXTtyZXR1cm4gdC5sZW5ndGg/YDxkaXYgY2xhc3M9ImFza2VkJHtlLmFjY2Vzc2liaWxpdHk/IiBmbGFnIjoiIn0iPgogICAgPGI+JHtjKCJSZXF1ZXN0ZWQsIG5vdCBoZWxkIiwi5bey5o+Q5Ye655qE6ZyA5rGC77yI5LiN5L2c5L+d6K+B77yJIil9PC9iPgogICAgJHt0Lm1hcChuPT5gPHNwYW4+JHtsKG4pfTwvc3Bhbj5gKS5qb2luKCIiKX0KICA8L2Rpdj5gOiIifSxpZD1lPT5lLmhvbGRVbnRpbExvY2FsP2MoYCR7ZS5ob2xkVW50aWxMb2NhbH0gKGhvdGVsIHRpbWUpYCxgJHtlLmhvbGRVbnRpbExvY2Fsfe+8iOmFkuW6l+W9k+WcsOaXtumXtO+8iWApOmAke1N0cmluZyhlLmhvbGRVbnRpbD8/IiIpLnNsaWNlKDAsMTYpLnJlcGxhY2UoIlQiLCIgIil9IFVUQ2AscHc9KGUsdCk9Pntjb25zdCBuPXQucGF5bWVudD8/e30se25hbWU6byxzYW5kYm94OnN9PUJlKHQuc3VwcGxpZXIpLHI9U3RyaW5nKG4ucGF5QnlMb2NhbD8/IiIpO3JldHVybltgPGRpdiBjbGFzcz0iYm9va2VkIHBheSIgcm9sZT0ic3RhdHVzIj4KICAgICAgIDxkaXYgY2xhc3M9ImJvb2tlZC1tYXJrIHBheSI+JHtQLmxvY2t9PC9kaXY+CiAgICAgICA8aDIgY2xhc3M9ImJvb2tlZC10Ij4ke2MoIlBheSB0byBmaW5pc2ggYm9va2luZyIsIuS7mOasvuWQjuWujOaIkOmihOiuoiIpfTwvaDI+CiAgICAgICA8cCBjbGFzcz0iYm9va2VkLXMiPiR7bChjKGBOb3RoaW5nIGlzIGJvb2tlZCB5ZXQuIE9uY2UgdGhlIHBheW1lbnQgZ29lcyB0aHJvdWdoLCB0aGUgcm9vbSBpcyBib29rZWQgd2l0aCAke299LmAsYOeOsOWcqOi/mOayoeaciemihOiuouOAguS7mOasvuaIkOWKn+WQju+8jOaIv+mXtOaJjeS8muWcqCR7Y2Uobyl96K6i5aW944CCYCkpfTwvcD4KICAgICA8L2Rpdj5gLGA8ZGl2IGNsYXNzPSJwYXlib3giPgogICAgICAgPGRpdiBjbGFzcz0id2wiPiR7YygiVG8gcGF5IG5vdyIsIumcgOS7mOasviIpfTwvZGl2PgogICAgICAgPGRpdiBjbGFzcz0icGF5LWFtb3VudCI+JHtsKG4uYW1vdW50Pz8iIil9PC9kaXY+CiAgICAgICAke24ucGF5Qnk/YDxkaXYgY2xhc3M9InBheS1ieSI+JHtQLmNsb2NrfTxzcGFuPiR7bChyP2MoYFBheSBieSAke3J9YCxg6K+35ZyoICR7cn0g5YmN5LuY5qy+YCk6YygiUGF5IHdpdGhpbiIsIuWJqeS9meaXtumXtCIpKX08YnI+PGIgY2xhc3M9ImNvdW50ZG93biBuYiIgZGF0YS11bnRpbD0iJHtsKG4ucGF5QnkpfSI+JHtsKGJnKFN0cmluZyhuLnBheUJ5KSkpfTwvYj48L3NwYW4+PC9kaXY+YDoiIn0KICAgICAgICR7bi51cmw/YDxidXR0b24gY2xhc3M9ImdvIGJpZyBibG9jayIgdHlwZT0iYnV0dG9uIiBkYXRhLWFjdD0icGF5IiBkYXRhLXVybD0iJHtsKG4udXJsKX0iIGRhdGEtY29kZT0iJHtsKHQuY29uZmlybWF0aW9uQ29kZSl9IiBkYXRhLXVudGlsPSIke2wobi5wYXlCeT8/IiIpfSI+JHtQLmxvY2t9JHtsKGMoYFBheSAke24uYW1vdW50Pz8iIn0gb24gdGhlIHNlY3VyZSBwYWdlYCxg5Y675a6J5YWo6aG16Z2i5LuY5qy+ICR7bi5hbW91bnQ/PyIifWApKX08L2J1dHRvbj5gOiIifQogICAgICAgPGJ1dHRvbiBjbGFzcz0ibGlua3kgcGF5LWNoZWNrIiB0eXBlPSJidXR0b24iIGRhdGEtYWN0PSJwYXktY2hlY2siIGRhdGEtY29kZT0iJHtsKHQuY29uZmlybWF0aW9uQ29kZSl9Ij4ke2MoIlBhaWQgYWxyZWFkeT8gQ2hlY2sgbm93Iiwi5bey57uP5LuY6L+H5LqG77yf546w5Zyo5Yi35pawIil9PC9idXR0b24+CiAgICAgICA8ZGl2IGNsYXNzPSJ0cnVzdCI+JHtQLmxvY2t9PHNwYW4+JHtsKHM/YygiVGVzdCBtb2RlOiBubyByZWFsIG1vbmV5IG1vdmVzIC0gdXNlIGEgdGVzdCBjYXJkIG9uIHRoZSBwYXltZW50IHBhZ2UuIENhcmQgZGV0YWlscyBhcmUgdHlwZWQgb25seSB0aGVyZSwgbmV2ZXIgaGVyZS4iLCLmtYvor5XmqKHlvI/vvJrkuI3kvJrnnJ/lrp7miaPmrL7vvIzor7flnKjku5jmrL7pobXnlKjmtYvor5XljaHjgILljaHlj7flj6rlnKjku5jmrL7pobXloavlhpnvvIzov5nph4zkuI3mlLbpm4bjgIIiKTpjKCJDYXJkIGRldGFpbHMgYXJlIHR5cGVkIG9ubHkgb24gdGhlIHBheW1lbnQgcGFnZSwgbmV2ZXIgaGVyZS4gSWYgdGhlIGhvdGVsIGRvZXMgbm90IGNvbmZpcm0sIGFsbCBvZiBpdCBnb2VzIGJhY2suIiwi5Y2h5Y+35Y+q5Zyo5LuY5qy+6aG15aGr5YaZ77yM6L+Z6YeM5LiN5pS26ZuG44CC5aaC5p6c6YWS5bqX5rKh5pyJ56Gu6K6k77yM5qy+6aG55Lya5YWo6aKd6YCA5Zue44CCIikpfTwvc3Bhbj48L2Rpdj4KICAgICA8L2Rpdj5gLGA8ZGl2IGNsYXNzPSJwYXktZm9yIj4KICAgICAgIDxkaXYgY2xhc3M9IndoZXJlIj4ke0ZvKHQuaG90ZWxOYW1lKX08L2Rpdj4KICAgICAgICR7b3UodC5zdGF5LHQuaG91cmx5KX0KICAgICAgIDxkaXYgY2xhc3M9InJvd3MiPiR7KHQucXVvdGU/LmxpbmVzPz9bXSkubWFwKHlnKS5qb2luKCIiKX08L2Rpdj4KICAgICAgIDxkaXYgY2xhc3M9Im5vdGUiPiR7bChjKGBSZWZlcmVuY2UgJHt0LmNvbmZpcm1hdGlvbkNvZGV9IMK3IGZvciAke1t0Lmd1ZXN0Py5uYW1lLHQuZ3Vlc3Q/LmVtYWlsXS5maWx0ZXIoQm9vbGVhbikuam9pbigiLCAiKX1gLGDnvJblj7cgJHt0LmNvbmZpcm1hdGlvbkNvZGV9IMK3ICR7W3QuZ3Vlc3Q/Lm5hbWUsdC5ndWVzdD8uZW1haWxdLmZpbHRlcihCb29sZWFuKS5qb2luKCLvvIwiKX1gKSl9PC9kaXY+CiAgICAgPC9kaXY+YF0uam9pbigiIil9LGh3PWU9PltlPy5uYW1lLGU/LmVtYWlsXS5maWx0ZXIoQm9vbGVhbikubWFwKHQ9PmA8c3BhbiBjbGFzcz0ibmIiPiR7bCh0KX08L3NwYW4+YCkuam9pbignPHNwYW4gYXJpYS1oaWRkZW49InRydWUiPiDCtyA8L3NwYW4+JyksYmc9ZT0+e2NvbnN0IHQ9TWF0aC5tYXgoMCxEYXRlLnBhcnNlKGUpLURhdGUubm93KCkpO2lmKCF0KXJldHVybiBjKCJ0aW1lIGlzIHVwIiwi5bey6LaF5pe2Iik7Y29uc3Qgbj1hPT5TdHJpbmcoYSkucGFkU3RhcnQoMiwiMCIpLG89TWF0aC5mbG9vcih0LzM2ZTUpLHM9TWF0aC5mbG9vcih0JTM2ZTUvNmU0KSxyPU1hdGguZmxvb3IodCU2ZTQvMWUzKSxpPW8/YCR7b306JHtuKHMpfToke24ocil9YDpgJHtzfToke24ocil9YDtyZXR1cm4gYyhgJHtpfSBsZWZ0YCxg6L+Y5YmpICR7aX1gKX07c2V0SW50ZXJ2YWwoKCk9Pntmb3IoY29uc3QgZSBvZiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCIuY291bnRkb3duW2RhdGEtdW50aWxdIikpZS50ZXh0Q29udGVudD1iZyhlLmRhdGFzZXQudW50aWw/PyIiKX0sMWUzKTtsZXQgd2U9bnVsbDtjb25zdCB6aT04ZTMsYXU9KCk9Pnt3ZT8udGltZXImJmNsZWFyVGltZW91dCh3ZS50aW1lciksd2U9bnVsbH0sbXc9ZT0+dD0+e2NvbnN0IG49KHQ/LmJvb2tpbmdzPz9bXSkuZmluZChvPT5TdHJpbmcoby5jb25maXJtYXRpb25Db2RlKS50b1VwcGVyQ2FzZSgpPT09ZS50b1VwcGVyQ2FzZSgpKTtyZXR1cm4hbnx8IVsiYXdhaXRpbmctcGF5bWVudCIsInJlcXVlc3RlZCIsImNvbmZpcm1lZCJdLmluY2x1ZGVzKFN0cmluZyhuLnN0YXR1cykpP3Q6ey4uLnQsdmlldzoiYm9va2luZyIsYm9va2luZzpuLGJvb2tpbmdzOnZvaWQgMCx0b3RhbDpuLnF1b3RlPy50b3RhbH19LHZnPWU9PnthdSgpLFUoImxpc3RCb29raW5ncyIsdHQoZSkse3B1c2g6ITEsZm9sZDptdyhlKX0pLmNhdGNoKCgpPT5NKGMoIkNvdWxkIG5vdCBjaGVjayB0aGUgcGF5bWVudCBqdXN0IG5vdy4iLCLmmoLml7bmsqHog73mn6XliLDku5jmrL7nirbmgIHjgIIiKSkpfSxhZD1lPT4hIWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYCNjb250ZW50IFtkYXRhLWFjdD0icGF5Il1bZGF0YS1jb2RlPSIke0NTUy5lc2NhcGUoZSl9Il1gKSxjdT1lPT57Y29uc3QgdD1LZigibGlzdEJvb2tpbmdzIik7aWYoIXR8fCF3ZXx8d2UuY29kZSE9PWUpcmV0dXJuO2lmKCFhZChlKXx8RGF0ZS5ub3coKT53ZS51bnRpbCs2ZTQpe2F1KCk7cmV0dXJufWNvbnN0IG49bz0+e3dlPy5jb2RlPT09ZSYmKHdlLnRpbWVyPXNldFRpbWVvdXQoKCk9PmN1KGUpLG8pKX07TWUuY2FsbFNlcnZlclRvb2woe25hbWU6dCxhcmd1bWVudHM6VmYodHQoZSkpfSkudGhlbihvPT57Y29uc3Qgcz0obz8uc3RydWN0dXJlZENvbnRlbnQ/LmJvb2tpbmdzPz9bXSkuZmluZChyPT5TdHJpbmcoci5jb25maXJtYXRpb25Db2RlKS50b1VwcGVyQ2FzZSgpPT09ZS50b1VwcGVyQ2FzZSgpKTtzJiZzLnN0YXR1cyE9PSJhd2FpdGluZy1wYXltZW50IiYmYWQoZSk/dmcoZSk6bih6aSl9KS5jYXRjaCgoKT0+bih6aSoyKSl9LCRnPSgpPT57d2UmJmRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZSE9PSJoaWRkZW4iJiYod2UudGltZXImJmNsZWFyVGltZW91dCh3ZS50aW1lciksY3Uod2UuY29kZSkpfTtkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJ2aXNpYmlsaXR5Y2hhbmdlIiwkZyk7d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoImZvY3VzIiwkZyk7Y29uc3QgZnc9ZT0+e2NvbnN0IHQ9QXJyYXkuaXNBcnJheShlLmJvb2tpbmdzKSYmZS5ib29raW5ncy5sZW5ndGg/ZS5ib29raW5nczpbZS5ib29raW5nPz97fV0sbj10LmZpbmQoXz0+Xz8uc3RhdHVzPT09ImF3YWl0aW5nLXBheW1lbnQiJiZfPy5wYXltZW50KTtpZihuJiZ0Lmxlbmd0aD09PTEpcmV0dXJuIHB3KGUsbik7Y29uc3Qgbz10Lmxlbmd0aD4xLHtuYW1lOnMsYm9va2luZ01vZGU6cixkZW1vOmksc2FuZGJveDphLC4uLmR9PUJlKHRbMF0/LnN1cHBsaWVyKSx1PV89PnZfKF8pJiYoXz09PSJsaXN0RXh0cmFzIj9kLmV4dHJhczpfPT09ImNoYW5nZUJvb2tpbmciP2QuY2hhbmdlczohMCkscD1fPT5yPT09ImhvbGQiJiYhaSYmKF8uaG9sZFVudGlsTG9jYWx8fF8uaG9sZFVudGlsKT9gPGRpdiBjbGFzcz0icmVtaW5kIj4ke1AuY2xvY2t9PHNwYW4+JHtsKGMoYFRoZSByb29tIGlzIGhlbGQgZm9yIHlvdSB1bnRpbCAke2lkKF8pfS5gLGDmiL/pl7TkuLrkvaDkv53nlZnliLAgJHtpZChfKX3jgIJgKSl9PC9zcGFuPjwvZGl2PmA6IiIsaD0oXyx4LEEpPT4oSnI9ISFfLnF1b3RlPy50YXhlc0FuZEZlZXMmJl8ucXVvdGUudGF4ZXNBbmRGZWVzIT09IkluY2x1ZGVkIixbYDxkaXYgY2xhc3M9ImNvbmYgdGlja2V0Ij4KICAgICAgICAgPGRpdiBjbGFzcz0ibm90ZSI+JHtjKCJDb25maXJtYXRpb24gY29kZSIsIuehruiupOeggSIpfTwvZGl2PgogICAgICAgICA8ZGl2IGNsYXNzPSJjb2RlIj4ke2woXy5jb25maXJtYXRpb25Db2RlKX08L2Rpdj4KICAgICAgICAgPGRpdiBjbGFzcz0id2hlcmUiPiR7Rm8oXy5ob3RlbE5hbWUpfTwvZGl2PgogICAgICAgICAke291KF8uc3RheSxfLmhvdXJseSl9CiAgICAgICAgIDxkaXYgY2xhc3M9IndoZW4iPiR7aHcoXy5ndWVzdCl9PC9kaXY+CiAgICAgICA8L2Rpdj5gLHAoXykscj09PSJwYXktYXQtaG90ZWwiJiZfLnN0YXR1cz09PSJyZXF1ZXN0ZWQiP2A8ZGl2IGNsYXNzPSJyZW1pbmQiPiR7UC5jbG9ja308c3Bhbj4ke2woYyhgV2FpdGluZyBmb3IgJHtzfSB0byBjb25maXJtIHRoaXMgYm9va2luZyDigJQgdGhhdCB0YWtlcyB1cCB0byBlaWdodCBtaW51dGVzLiBNeSBib29raW5ncyBzaG93cyB3aGVuIGl0IGhhcy5gLGDmraPlnKjnrYkke2NlKHMpfeehruiupOi/meeslOmihOiuou+8jOacgOWkmue6puWFq+WIhumSn+OAguehruiupOWQjuWPr+WcqOKAnOaIkeeahOmihOiuouKAnemHjOeci+WIsOOAgmApKX08L3NwYW4+PC9kaXY+YDoiIixgPGRpdiBjbGFzcz0icm93cyI+JHsoXy5xdW90ZT8ubGluZXM/P1tdKS5tYXAoeWcpLmpvaW4oIiIpfTwvZGl2PmAsXy5xdW90ZT8uc3VidG90YWwmJl8ucXVvdGU/LnRheGVzQW5kRmVlcz9faSh7c3VidG90YWw6Xy5xdW90ZS5zdWJ0b3RhbCx0YXhlc0FuZEZlZXM6Xy5xdW90ZS50YXhlc0FuZEZlZXMsdG90YWw6eCxsaW5lczpfLnF1b3RlLmxpbmVzPz9bXX0sYygiVG90YWwiLCLmgLvku7ciKSk6YDxkaXYgY2xhc3M9Im1vbmV5LW91dCI+PHNwYW4+JHtjKCJUb3RhbCIsIuaAu+S7tyIpfTwvc3Bhbj48c3Bhbj4ke2woeCl9PC9zcGFuPjwvZGl2PmAsZHcoQSksbz9gPGRpdiBjbGFzcz0iZm9vdCI+CiAgICAgICAgICAgICAke3UoImxpc3RFeHRyYXMiKT9gPGJ1dHRvbiBjbGFzcz0iZ28gcXVpZXQiIHR5cGU9ImJ1dHRvbiIgZGF0YS1ib29raW5nLWV4dHJhcz0iJHtsKF8uY29uZmlybWF0aW9uQ29kZSl9Ij4ke2MoIkFkZC1vbnMiLCLpmYTliqDmnI3liqEiKX08L2J1dHRvbj5gOiIifQogICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iZ28gcXVpZXQiIHR5cGU9ImJ1dHRvbiIgZGF0YS1jYW5jZWw9IiR7bChfLmNvbmZpcm1hdGlvbkNvZGUpfSI+JHtsKGMoYENhbmNlbCAke18uaG90ZWxOYW1lfWAsYOWPlua2iCR7Xy5ob3RlbE5hbWV9YCkpfTwvYnV0dG9uPgogICAgICAgICAgIDwvZGl2PmA6IiJdLmpvaW4oIiIpKSxiPXI9PT0icGF5LWF0LWhvdGVsIiYmdC5zb21lKF89Pl8uc3RhdHVzPT09InJlcXVlc3RlZCIpLCQ9bz8iIjp0WzBdPy5wYXltZW50Py5zdGF0dXM9PT0icGFpZCI/U3RyaW5nKHRbMF0ucGF5bWVudC5hbW91bnQ/PyIiKToiIixUPSFvJiZ0WzBdPy5wYXltZW50Py5zdGF0dXM9PT0icGFpZCI/dFswXT8uc3RhdHVzPT09ImNvbmZpcm1lZCI/YT9jKCJUZXN0IGJvb2tpbmcgcGFpZCBhbmQgYm9va2VkIiwi5rWL6K+V6aKE6K6i5bey5LuY5qy+5bm26K6i5aW9Iik6YyhgUGFpZCBhbmQgYm9va2VkIHdpdGggJHtzfWAsYOW3suS7mOasvu+8jCR7Y2Uocyl95bey56Gu6K6kYCk6YyhgUGFpZCDigJQgd2FpdGluZyBmb3IgJHtzfSB0byBjb25maXJtYCxg5bey5LuY5qy+77yM562J5b6FJHtjZShzKX3noa7orqRgKTphP2MoIlRlc3QgYm9va2luZyBtYWRlIiwi5rWL6K+V6aKE6K6i5bey5o+Q5LqkIik6cj09PSJwYXktYXQtaG90ZWwiP2I/YyhgU2VudCB0byAke3N9YCxg5bey5o+Q5Lqk57uZJHtjZShzKX1gKTpjKGBCb29rZWQgd2l0aCAke3N9YCxg5bey5ZyoJHtjZShzKX3pooTorqLmiJDlip9gKTppP2MoIkRlbW8gYm9va2luZyBtYWRlIiwi5ryU56S66aKE6K6i5bey5o+Q5LqkIik6YyhvPyJSb29tcyBoZWxkIjoiUm9vbSBoZWxkIiwi5oi/6Ze05bey5L+d55WZIik7cmV0dXJuW2A8ZGl2IGNsYXNzPSJib29rZWQiIHJvbGU9InN0YXR1cyI+CiAgICAgICA8ZGl2IGNsYXNzPSJib29rZWQtbWFyayI+JHtQLmRvbmV9PC9kaXY+CiAgICAgICA8aDIgY2xhc3M9ImJvb2tlZC10Ij4ke2woVCl9PC9oMj4KICAgICAgIDxwIGNsYXNzPSJib29rZWQtcyI+JHtsKG8/YyhgJHt0Lmxlbmd0aH0gY29uZmlybWF0aW9uIGNvZGVzLCBvbmUgZm9yIGVhY2ggaG90ZWwuYCxg5YWxICR7dC5sZW5ndGh9IOS4quehruiupOegge+8jOavj+WutumFkuW6l+S4gOS4quOAgmApOmMoIktlZXAgdGhpcyBjb2RlOiB3aXRoIGl0IGFuZCB5b3VyIGVtYWlsLCB5b3UgY2FuIGZpbmQgdGhpcyBib29raW5nIGFnYWluIGZyb20gYW55IGNoYXQuIiwi6K+35L+d5a2Y6L+Z5Liq56Gu6K6k56CB44CC5Yet5a6D5ZKM5L2g55qE6YKu566x77yM5Zyo5Lu75L2V5a+56K+d6YeM6YO96IO95om+5Zue6L+Z56yU6aKE6K6i44CCIikpfTwvcD4KICAgICA8L2Rpdj5gLC4uLnQubWFwKF89Pm8/aChfLFN0cmluZyhfLnRvdGFsPz8iIiksXyk6aChfLFN0cmluZyhlLnRvdGFsPz8iIiksZSkpLG8/YDxkaXYgY2xhc3M9Im5vdGUiPiR7bChjKGAke3QubGVuZ3RofSBib29raW5ncywgb25lIGZvciBlYWNoIHN0YXkuIEVhY2ggaG90ZWwga2VlcHMgaXRzIG93biBuaWdodHMgdW5kZXIgaXRzIG93biBjb2RlLCBhbmQgZWFjaCBpcyAke3UoImNoYW5nZUJvb2tpbmciKT8iY2hhbmdlZCBvciBjYW5jZWxsZWQiOiJjYW5jZWxsZWQifSBvbiBpdHMgb3duLmAsYOWFsSAke3QubGVuZ3RofSDnrJTpooTorqLvvIzmr4/mrrXkvY/lrr/kuIDnrJTvvIzlkITmnInoh6rlt7HnmoTnoa7orqTnoIHvvIwke3UoImNoYW5nZUJvb2tpbmciKT8i5L+u5pS55oiW5Y+W5raIIjoi5Y+W5raIIn3pg73opoHliIbliKvov5vooYzjgIJgKSl9PC9kaXY+YDoiIiwkP2A8ZGl2IGNsYXNzPSJ1bnBhaWQgcGFpZCI+CiAgICAgICA8Yj4ke2woYyhgUGFpZCBpbiBhZHZhbmNlOiAkeyR9LmAsYOW3sumihOS7mCAkeyR944CCYCkpfTwvYj4KICAgICAgIDxzcGFuPiR7bChhP2MoIlBhaWQgaW4gdGVzdCBtb2RlIC0gbm8gcmVhbCBtb25leSBtb3ZlZCwgYW5kIHRoZSBib29raW5nIGlzIGluIGEgc2ltdWxhdGVkIHN5c3RlbS4iLCLmtYvor5XmqKHlvI/ku5jmrL7vvIzmsqHmnInnnJ/lrp7miaPmrL7vvJvorqLljZXlnKjmqKHmi5/ns7vnu5/ph4zjgIIiKTpjKGBOb3RoaW5nIG1vcmUgaXMgcGFpZCBhdCB0aGUgaG90ZWwgZm9yIHRoZSByb29tLiBJZiAke3N9IGRvZXMgbm90IGNvbmZpcm0gaXQsIGFsbCBvZiBpdCBnb2VzIGJhY2sgdG8geW91ciBjYXJkLmAsYOWIsOW6l+S4jeeUqOWGjeS7mOaIv+i0ueOAguWmguaenCR7Y2Uocyl95rKh5pyJ56Gu6K6k77yM5qy+6aG55Lya5YWo6aKd6YCA5Zue5Y6f5Y2h44CCYCkpfTwvc3Bhbj4KICAgICA8L2Rpdj5gOmE/YDxkaXYgY2xhc3M9InVucGFpZCI+CiAgICAgICA8Yj4ke2MoIkEgdGVzdCBib29raW5nLiIsIui/meaYr+a1i+ivlemihOiuouOAgiIpfTwvYj4KICAgICAgIDxzcGFuPiR7bChjKGBNYWRlIGluIGEgc2ltdWxhdGVkIGNvcHkgb2YgJHtzfSdzIHN5c3RlbTogbm90IGEgJHtzfSByZXNlcnZhdGlvbiwgbm8gcm9vbSBpcyBoZWxkLCBhbmQgbm90aGluZyBpcyBwYWlkLmAsYOWcqCR7Y2Uocyl957O757uf55qE5qih5ouf5Ymv5pys6YeM55Sf5oiQ77yM5LiN5piv55yf5a6e6aKE6K6i77yM5LiN5L+d55WZ5oi/6Ze077yM5Lmf5LiN5LuY5qy+44CCYCkpfTwvc3Bhbj4KICAgICA8L2Rpdj5gOnI9PT0icGF5LWF0LWhvdGVsIj9gPGRpdiBjbGFzcz0idW5wYWlkIj4KICAgICAgIDxiPiR7YygiTm90aGluZyBoYXMgYmVlbiBjaGFyZ2VkLiIsIuayoeacieaJo+asvuOAgiIpfTwvYj4KICAgICAgIDxzcGFuPiR7bChjKGAke28/IkVhY2ggaXMiOiJUaGlzIGlzIn0gJHtzfSdzIG93biByZXNlcnZhdGlvbiwgcGFpZCBhdCB0aGUgaG90ZWwuIEEgY2FyZCBpcyBwcmVzZW50ZWQgYXQgY2hlY2staW4sIG5vdCBoZXJlLmAsYOi/meaYryR7Y2Uocyl955qE5q2j5byP6aKE6K6i77yM5Yiw5bqX5LuY5qy+77yb5YWl5L2P5pe25Zyo5YmN5Y+w5Ye656S66ZO26KGM5Y2h77yM6L+Z6YeM5LiN5pS25qy+44CCYCkpfTwvc3Bhbj4KICAgICA8L2Rpdj5gOmk/YDxkaXYgY2xhc3M9InVucGFpZCI+CiAgICAgICA8Yj4ke2MoIk5vdGhpbmcgaGFzIGJlZW4gY2hhcmdlZC4iLCLmsqHmnInmiaPmrL7jgIIiKX08L2I+CiAgICAgICA8c3Bhbj4ke2MoYFRoaXMgaXMgYSBkZW1vbnN0cmF0aW9uIGJvb2tpbmc6ICR7bChzKX0gaGFzIG5vdCByZWNlaXZlZCBpdCwgYW5kIG5vIHJvb20gaXMgaGVsZCBhdCB0aGUgaG90ZWwuYCxg6L+Z5piv5ryU56S66aKE6K6i77yaJHtsKGNlKHMpKX3msqHmnInmlLbliLDvvIzphZLlupfkuZ/msqHmnInkuLrkvaDkv53nlZnmiL/pl7TjgIJgKX08L3NwYW4+CiAgICAgPC9kaXY+YDpgPGRpdiBjbGFzcz0idW5wYWlkIj4KICAgICAgIDxiPiR7YygiTm90aGluZyBoYXMgYmVlbiBjaGFyZ2VkLiIsIuayoeacieaJo+asvuOAgiIpfTwvYj4KICAgICAgIDxzcGFuPiR7YygiQSBjYXJkIGlzIHByZXNlbnRlZCBhdCBjaGVjay1pbiwgbm90IGhlcmUuIiwi5YWl5L2P5pe25Zyo5YmN5Y+w5Ye656S66ZO26KGM5Y2h77yM6L+Z6YeM5LiN5pS25qy+44CCIil9PC9zcGFuPgogICAgIDwvZGl2PmAsYDxkaXYgY2xhc3M9ImZvb3QiPgogICAgICAgPGJ1dHRvbiBjbGFzcz0iZ28gcXVpZXQiIHR5cGU9ImJ1dHRvbiIgZGF0YS1hY3Q9ImJvb2tpbmdzIj4ke2MoIk15IGJvb2tpbmdzIiwi5oiR55qE6aKE6K6iIil9PC9idXR0b24+CiAgICAgICAke298fCF1KCJsaXN0RXh0cmFzIik/IiI6YDxidXR0b24gY2xhc3M9ImdvIHNvZnQiIHR5cGU9ImJ1dHRvbiIgZGF0YS1ib29raW5nLWV4dHJhcz0iJHtsKHRbMF0/LmNvbmZpcm1hdGlvbkNvZGUpfSI+JHtjKCJBZGQtb25zIGZvciB0aGlzIHN0YXkiLCLkuLrov5nmrKHkvY/lrr/liqDotK0iKX08L2J1dHRvbj5gfQogICAgIDwvZGl2PmAsbz8iIjoodFswXT8ucXVvdGU/LmxpbmVzPz9bXSkuc29tZShfPT5fLmtpbmQ9PT0icm9vbSIpJiYodFswXT8ucXVvdGU/LmxpbmVzPz9bXSkuZmlsdGVyKF89Pl8ua2luZD09PSJyb29tIikuZXZlcnkoXz0+Xy5yZWZ1bmRhYmxlPT09ITEpP2A8cCBjbGFzcz0icXVpZXQtZW5kIG5vdGUiPiR7bChjKCJUaGlzIHJhdGUgY2Fubm90IGJlIGNhbmNlbGxlZCwgYW5kIG5vdGhpbmcgb2YgaXQgaXMgcmVmdW5kZWQuIiwi5q2k5Lu35qC85LiN5Y+v5Y+W5raI77yM5bey5LuY5qy+6aG55LiN6YCA44CCIikpfTwvcD5gOmA8ZGl2IGNsYXNzPSJxdWlldC1lbmQiPjxidXR0b24gY2xhc3M9Imxpbmt5IGRhbmdlciIgdHlwZT0iYnV0dG9uIiBkYXRhLWNhbmNlbD0iJHtsKHRbMF0/LmNvbmZpcm1hdGlvbkNvZGUpfSI+JHtjKCJDYW5jZWwgdGhpcyBib29raW5nIiwi5Y+W5raI6L+Z56yU6aKE6K6iIil9PC9idXR0b24+PC9kaXY+YF0uam9pbigiIil9LGx1PShlLHQsbik9PmA8ZGl2IGNsYXNzPSJub3RlIj4ke2woYyhgTW9yZSB0aGFuIG9uZSAke24/PyJob3RlbCJ9IGFuc3dlcnMgdG8g4oCcJHtlfeKAnTpgLGDigJwke2V94oCd5a+55bqU5LiN5q2i5LiA5a626YWS5bqX77yaYCkpfTwvZGl2PgogIDxkaXYgY2xhc3M9InBsYWNlcyI+JHt0Lm1hcChvPT5gPGJ1dHRvbiBjbGFzcz0iY2hpcCBwbGFjZSIgdHlwZT0iYnV0dG9uIiBkYXRhLWhvdGVsPSIke2woby5pZCl9Ij4ke2woby5uYW1lKX0ke28uY2l0eT9gIDxzbWFsbD4ke2woby5jaXR5KX08L3NtYWxsPmA6IiJ9PC9idXR0b24+YCkuam9pbigiIil9PC9kaXY+YCx1dT1lPT57Y29uc3QgdD1lLmRyb3BwZWQ/P1tdLG49dC5maWx0ZXIobz0+IShvLmNhbmRpZGF0ZXM/P1tdKS5sZW5ndGgpO3JldHVybltuLmxlbmd0aD9gPGRpdiBjbGFzcz0iZXJyIj4ke24ubWFwKG89PmAke2woby5uYW1lKX06ICR7bChyZT09PSJ6aCI/Iui/memHjOayoeacieWvueW6lOeahOmFkuW6lyI6by53aHkpfWApLmpvaW4oIjxicj4iKX08L2Rpdj5gOiIiLC4uLnQuZmlsdGVyKG89PihvLmNhbmRpZGF0ZXM/P1tdKS5sZW5ndGgpLm1hcChvPT5sdShvLm5hbWUsby5jYW5kaWRhdGVzLGUudm9jYWI/Lm5vdW4pKV0uam9pbigiIil9LGd3PS9cYihhdCBvbmNlfHRvbyBtYW55fGFuIGhvdXJ8cGVyIGhvdXJ8aW4gdGhlIGxhc3QgaG91cnxsaW1pdHx0cnkgYWdhaW4gKGxhdGVyfGluKSlcYi9pLGJ3PXsiaG90ZWwtbm90LWZvdW5kIjpbIlRoYXQgaG90ZWwgaXMgbm90IGhlcmUiLCLmsqHmnInmib7liLDov5nlrrbphZLlupciXSwibm8tc3VjaC1yb29tIjpbIlRoYXQgcm9vbSBpcyBub3QgYXZhaWxhYmxlIiwi6K+l5oi/5Z6L5pqC5LiN5Y+v6K6iIl0sIm5vLXJvb20tbmFtZWQiOlsiVGhhdCByb29tIGlzIG5vdCBhdmFpbGFibGUiLCLor6XmiL/lnovmmoLkuI3lj6/orqIiXSwibm8tc3VjaC1leHRyYSI6WyJUaGF0IGFkZC1vbiBpcyBub3QgYXZhaWxhYmxlIiwi6L+Z6aG56ZmE5Yqg5pyN5Yqh6K6i5LiN5LqGIl0sIm5vLXN1Y2gtZ3JvdXAiOlsiVGhhdCBncm91cCBpcyBub3QgaW4gdGhpcyBtYXJrZXQiLCLov5nph4zmsqHmnInov5nkuKrpm4blm6IiXSwidHJpcC1nb25lIjpbIlRoaXMgdHJpcCBoYXMgZXhwaXJlZCIsIui/meS4quihjOeoi+W3sui/h+acnyJdLCJib29raW5nLWVuZGVkIjpbIlRoYXQgYm9va2luZyBoYXMgZW5kZWQiLCLov5nnrJTpooTorqLlt7Lnu5PmnZ8iXSwiYmFkLWNvdW50IjpbIlRoYXQgbnVtYmVyIGRvZXMgbm90IHdvcmsiLCLmlbDph4/kuI3lr7kiXSwic3RhcnQtdGltZSI6WyJUaGF0IHN0YXJ0IHRpbWUgaXMgbm90IG9wZW4iLCLov5nkuKrliLDlupfml7bpl7TkuI3lj6/pgIkiXSwibm90LWJvb2thYmxlIjpbIlRoaXMgY291bGQgbm90IGJlIGJvb2tlZCIsIuaaguaXtuaXoOazlemihOiuoiJdfSxLdD1lPT4vW+OQgC3pv79dLy50ZXN0KGUpLGNlPWU9PmUmJiFLdChlKT8i6YWS5bqXIjplLHZ3PWU9PntpZigoZS5jYW5kaWRhdGVzPz9bXSkubGVuZ3RoKXJldHVybiBsdShlLnF1ZXJ5LGUuY2FuZGlkYXRlcyxlLnZvY2FiPy5ub3VuKTtjb25zdCB0PWUucm9vbXM/P1tdLG49ZS5lcnJvcj09PSJzdGFydC10aW1lIj9lLndpbmRvdzp2b2lkIDAsbz1lLmVycm9yPT09Im5vLXN1Y2gtcm9vbSImJmUuaG90ZWw/LmlkJiZlLnN0YXk/LmNoZWNrSW4mJnQuZXZlcnkocD0+cC5pZCk/YDxkaXYgY2xhc3M9ImxpbmtzIj4ke3QubWFwKHA9PmA8YnV0dG9uIGNsYXNzPSJsaW5rLXJvdyBhZGQiIHR5cGU9ImJ1dHRvbiIgZGF0YS1hZGQtcm9vbT0iJHtsKHAuaWQpfSIgZGF0YS1ob3RlbD0iJHtsKGUuaG90ZWwuaWQpfSIgZGF0YS1uPSIxIiBkYXRhLWNpPSIke2woZS5zdGF5LmNoZWNrSW4pfSIgZGF0YS1jbz0iJHtsKGUuc3RheS5jaGVja091dCl9IiBkYXRhLWd1PSIke2woZS5zdGF5Lmd1ZXN0cz8/Uy5ndWVzdHMpfSI+PHNwYW4+JHtsKHAubmFtZSl9PC9zcGFuPjxzcGFuIGNsYXNzPSJsaW5rLWdvIj4ke2MoIlJlc2VydmUiLCLpooTorqIiKX0ke1AuY2hldlJ9PC9zcGFuPjwvYnV0dG9uPmApLmpvaW4oIiIpfTwvZGl2PmA6IiIscz1TdHJpbmcoZS5kZXRhaWw/P2Uud2h5Pz8iIikscj1ndy50ZXN0KHMpLGk9bj9jKGAke2UucXVlcnk/YCR7ZS5xdWVyeX0gaXMgbm90IGEgc3RhcnQgdGhpcyByb29tIHRha2VzLiBgOiIifUl0IHN0YXJ0cyBiZXR3ZWVuICR7bi5lYXJsaWVzdFN0YXJ0fSBhbmQgJHtuLmxhdGVzdFN0YXJ0fSB0b2RheSwgZm9yICR7bi5ob3Vyc30gaG91cnMsIGFuZCBpcyBsZWZ0IGJ5ICR7bi5sYXRlc3RFbmR9LmAsYCR7ZS5xdWVyeT9gJHtlLnF1ZXJ5fSDkuI3og73kvZzkuLrliLDlupfml7bpl7TjgIJgOiIifei/memXtOmSn+eCueaIv+S7iuWkqSAke24uZWFybGllc3RTdGFydH3igJMke24ubGF0ZXN0U3RhcnR9IOS5i+mXtOWIsOW6l++8jOS9jyAke24uaG91cnN9IOWwj+aXtu+8jOacgOaZmiAke24ubGF0ZXN0RW5kfSDnprvlupfjgIJgKTplLmVycm9yPT09Im5vLXN1Y2gtcm9vbSImJnQubGVuZ3RoP28/YyhgJHtlLmhvdGVsPy5uYW1lPz8iVGhpcyBob3RlbCJ9IGhhcyBubyByb29tIGJ5IHRoYXQgbmFtZSBmb3IgdGhvc2UgbmlnaHRzLiBUaGVzZSBhcmUgb3BlbiDigJQgdGFwIG9uZSB0byByZXNlcnZlIGl0OmAsYCR7ZS5ob3RlbD8ubmFtZT8/Iui/meWutumFkuW6lyJ95Zyo6L+Z5Lqb5pel5pyf5rKh5pyJ6L+Z5Liq5oi/5Z6L44CC5LiL6Z2i6L+Z5Lqb5Y+v5Lul6K6i77yM54K55LiA5LiL5Y2z5Y+v6aKE6K6i77yaYCk6YyhgJHtlLmhvdGVsPy5uYW1lPz8iVGhpcyBob3RlbCJ9IGhhcyBubyByb29tIGJ5IHRoYXQgbmFtZSBmb3IgdGhvc2UgbmlnaHRzLiBJdCBoYXMgJHtUaSh0Lm1hcChwPT5TdHJpbmcocC5uYW1lKSkpfS5gLGAke2UuaG90ZWw/Lm5hbWU/PyLov5nlrrbphZLlupcifeWcqOi/meS6m+aXpeacn+ayoeaciei/meS4quaIv+Wei++8jOWPr+iuoueahOacie+8miR7VGkodC5tYXAocD0+U3RyaW5nKHAubmFtZSkpKX3jgIJgKTpyJiZyZT09PSJ6aCImJiFLdChzKT8i6L+Z5qyh5rKh5pyJ6aKE6K6i5oiQ5Yqf77yM5Lmf5rKh5pyJ5omj5qy+44CC6L+Z5q615a+56K+d6YeM55qE6aKE6K6i5bey5Yiw5LiK6ZmQ77ya6K+35YWI5Zyo4oCc5oiR55qE6aKE6K6i4oCd6YeM5Y+W5raI5LiN6ZyA6KaB55qE77yM5YaN6K+V5LiA5qyh44CCIjpzJiYocmUhPT0iemgifHxLdChzKSk/czpjKCJUaGF0IGNvdWxkIG5vdCBiZSBkb25lLiIsIui/meS4gOatpeayoeiDveWujOaIkO+8jOivt+eojeWQjuWGjeivleOAgiIpLGE9YndbU3RyaW5nKGUuZXJyb3IpXSxkPXI/YygiQm9va2luZyBsaW1pdCByZWFjaGVkIiwi5bey6L6+6aKE6K6i5LiK6ZmQIik6YT9jKGFbMF0sYVsxXSk6YygiVGhhdCBkaWQgbm90IHdvcmsiLCLmsqHog73lrozmiJAiKSx1PVtlLmhvdGVsPy5pZD9gPGJ1dHRvbiBjbGFzcz0iZ28iIHR5cGU9ImJ1dHRvbiIgZGF0YS1ob3RlbD0iJHtsKGUuaG90ZWwuaWQpfSIke2Uuc3RheT8uY2hlY2tJbj9gIGRhdGEtY2k9IiR7bChlLnN0YXkuY2hlY2tJbil9IiBkYXRhLWNvPSIke2woZS5zdGF5LmNoZWNrT3V0KX0iYDoiIn0+JHtsKG8/YygiU2VlIGFsbCByb29tcyIsIuafpeeci+WFqOmDqOaIv+WeiyIpOmMoIlNlZSB0aGUgcm9vbXMiLCLmn6XnnIvmiL/lnosiKSl9PC9idXR0b24+YDoiIixyJiZVbygibGlzdEJvb2tpbmdzIik/YDxidXR0b24gY2xhc3M9ImdvJHtlLmhvdGVsPy5pZD8iIHF1aWV0IjoiIn0iIHR5cGU9ImJ1dHRvbiIgZGF0YS1hY3Q9ImJvb2tpbmdzIj4ke2MoIk15IGJvb2tpbmdzIiwi5oiR55qE6aKE6K6iIil9PC9idXR0b24+YDoiIiwhZS5ob3RlbD8uaWQmJiFyJiZiZS5sZW5ndGg/YDxidXR0b24gY2xhc3M9ImdvIiB0eXBlPSJidXR0b24iIGRhdGEtYWN0PSJiYWNrIj4ke1AuY2hldkx9JHtsKGMoYEJhY2sgdG8gJHtiZS5hdCgtMSk/LmxhYmVsPz8id2hlcmUgeW91IHdlcmUifWAsIui/lOWbniIpKX08L2J1dHRvbj5gOiIiLFN0PjA/YDxidXR0b24gY2xhc3M9ImdvIHF1aWV0IiB0eXBlPSJidXR0b24iIGRhdGEtYWN0PSJ0cmlwIj4ke2MoIlZpZXcgdGhlIHRyaXAiLCLmn6XnnIvooYznqIsiKX08L2J1dHRvbj5gOiIiXS5maWx0ZXIoQm9vbGVhbik7cmV0dXJuIHUubGVuZ3RofHx1LnB1c2goYDxidXR0b24gY2xhc3M9ImdvIiB0eXBlPSJidXR0b24iIGRhdGEtYWN0PSJob21lIj4ke2MoIkZpbmQgYSBob3RlbCIsIuaJvumFkuW6lyIpfTwvYnV0dG9uPmApLGAKICAgIDxkaXYgY2xhc3M9InN0YXRlICR7cj8ibGltaXQiOiJlcnJvciJ9IiByb2xlPSJhbGVydCI+CiAgICAgIDxkaXYgY2xhc3M9InN0YXRlLWljbyI+JHtyP1AuY2xvY2s6UC5lcnJvcn08L2Rpdj4KICAgICAgPGgyIGNsYXNzPSJzdGF0ZS10Ij4ke2woZCl9PC9oMj4KICAgICAgPHAgY2xhc3M9InN0YXRlLWQiPiR7bChpKX08L3A+CiAgICAgICR7b30KICAgICAgPGRpdiBjbGFzcz0iZm9vdCI+JHt1LmpvaW4oIiIpfTwvZGl2PgogICAgPC9kaXY+YH0seWc9ZT0+YAogIDxkaXYgY2xhc3M9InJvdyI+CiAgICA8ZGl2IGNsYXNzPSJib2R5Ij4KICAgICAgPGRpdiBjbGFzcz0ibmFtZSI+JHtsKGUudGl0bGUpfTwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJtZXRhIj4ke2woZS5kZXRhaWw/SnQoZS5kZXRhaWwpOmUua2luZD09PSJyb29tIj9WcihlLnN0YXksZS5ob3VybHkpOiIiKX08L2Rpdj4KICAgIDwvZGl2PgogICAgPGRpdiBjbGFzcz0icHJpY2UiPjxkaXYgY2xhc3M9InAtbGluZSI+JHtsKGUudG90YWwpfTwvZGl2PiR7ZS5raW5kPT09InJvb20iJiZKcj9gPGRpdiBjbGFzcz0icC11bml0Ij4ke2MoImJlZm9yZSB0YXhlcyIsIuacquWQq+eojui0uSIpfTwvZGl2PmA6IiJ9PC9kaXY+CiAgPC9kaXY+YCwkdz17ImF3YWl0aW5nLXBheW1lbnQiOiJ3YXJuIixyZXF1ZXN0ZWQ6Indhcm4iLGNvbmZpcm1lZDoiZ29vZCIsY2FuY2VsbGVkOiJiYWQiLGV4cGlyZWQ6ImJhZCIsZmFpbGVkOiJiYWQiLHVuY29uZmlybWVkOiJ3YXJuIn0sdGk9eyJhd2FpdGluZy1wYXltZW50IjpbIkF3YWl0aW5nIHBheW1lbnQiLCLlvoXku5jmrL4iXSxyZXF1ZXN0ZWQ6WyJSZXF1ZXN0ZWQiLCLlvoXnoa7orqQiXSxjb25maXJtZWQ6WyJDb25maXJtZWQiLCLlt7Lnoa7orqQiXSxjYW5jZWxsZWQ6WyJDYW5jZWxsZWQiLCLlt7Llj5bmtogiXSxleHBpcmVkOlsiRXhwaXJlZCIsIuW3sui/h+acnyJdLGZhaWxlZDpbIk5vdCBtYWRlIiwi5pyq5oiQ5YqfIl0sdW5jb25maXJtZWQ6WyJCZWluZyBjaGVja2VkIiwi5qC45a6e5LitIl19LHl3PWU9Pntjb25zdCB0PWUucmVxdWVzdHM/LmtpbmRzPz9bXTtpZighdC5sZW5ndGgpcmV0dXJuIiI7Y29uc3Qgbj10Lm1hcChfcyk7cmV0dXJuYDxkaXYgY2xhc3M9Im1ldGEgYXNrZWQtbGluZSI+JHtsKGMoYEFza2VkIGZvciAke24uam9pbigiLCAiKS50b0xvd2VyQ2FzZSgpfWAsYOW3suaPkOWHuu+8miR7bi5qb2luKCLjgIEiKX1gKSl9PC9kaXY+YH0sa3c9e2F3YWl0aW5nOlsiVG8gYmUgcGFpZCIsIuW+heS7mOasviIsIndhcm4iXSxwYWlkOlsiUGFpZCBpbiBhZHZhbmNlIiwi5bey6aKE5LuYIiwiZ29vZCJdLGxhcHNlZDpbIk5vdCBwYWlkIGluIHRpbWUiLCLotoXml7bmnKrku5giLCIiXSxyZWZ1bmRpbmc6WyJSZWZ1bmQgdW5kZXIgd2F5Iiwi6YCA5qy+5LitIiwiIl0scmVmdW5kZWQ6WyJSZWZ1bmRlZCBpbiBmdWxsIiwi5bey5YWo6aKd6YCA5qy+IiwiIl19LF93PWU9Pntjb25zdCB0PWt3W1N0cmluZyhlPy5wYXltZW50Py5zdGF0dXM/PyIiKV07cmV0dXJuIHQ/YDxzcGFuIGNsYXNzPSJiYWRnZSAke3RbMl19Ij4ke2ModFswXSx0WzFdKX08L3NwYW4+YDoiIn0sd3c9ZT0+e2NvbnN0IHQ9ZS5ib29raW5ncz8/W10sbj1lLm5vdEZvdW5kP2A8ZGl2IGNsYXNzPSJlcnIiPiR7bChlLnRvb01hbnk/cmU9PT0iemgiJiYhS3QoU3RyaW5nKGUubm90Rm91bmRMaW5lPz8iIikpPyLlsJ3or5XmrKHmlbDov4flpJrvvIzor7fnqI3lkI7lho3or5XjgIIiOmUubm90Rm91bmRMaW5lOmMoYE5vIGJvb2tpbmcgbWF0Y2hlcyAke2Uubm90Rm91bmR9IHdpdGggdGhhdCBlbWFpbC4gQm90aCBoYXZlIHRvIGJlIGFzIHRoZXkgYXJlIG9uIHRoZSBjb25maXJtYXRpb24uYCxg5rKh5pyJ5om+5Yiw56Gu6K6k56CBICR7ZS5ub3RGb3VuZH0g5ZKM6L+Z5Liq6YKu566x5a+55bqU55qE6aKE6K6i44CC5Lik6aG56YO96KaB5ZKM56Gu6K6k5L+h5oGv5LiK55qE5LiA6Ie044CCYCkpfTwvZGl2PmA6IiI7cmV0dXJuIGUubm90Rm91bmQmJnQubGVuZ3RoPT09MD9gJHtufQogICAgICA8ZGl2IGNsYXNzPSJmb290Ij48YnV0dG9uIGNsYXNzPSJnbyBxdWlldCIgdHlwZT0iYnV0dG9uIiBkYXRhLWFjdD0iZmluZC1ib29raW5nIj4ke2MoIlRyeSBhZ2FpbiIsIuWGjeivleS4gOasoSIpfTwvYnV0dG9uPjwvZGl2PmA6dC5sZW5ndGg9PT0wP2A8ZGl2IGNsYXNzPSJlbXB0eSI+JHtjKCJObyBib29raW5ncyBpbiB0aGlzIGNvbnZlcnNhdGlvbiB5ZXQuIiwi6L+Z5qyh5a+56K+d6YeM6L+Y5rKh5pyJ6aKE6K6i44CCIil9PC9kaXY+YDpbbixgPGRpdiBjbGFzcz0icm93cyI+JHt0Lm1hcChvPT5gCiAgICAgIDxkaXYgY2xhc3M9InJvdyI+CiAgICAgICAgPGRpdiBjbGFzcz0iYm9keSI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJuYW1lIj4ke2woby5ob3RlbE5hbWUpfTwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0ibWV0YSI+JHtsKG8uY29uZmlybWF0aW9uQ29kZSl9IMK3ICR7bChWcihvLnN0YXksby5ob3VybHkpKX08L2Rpdj4KICAgICAgICAgICR7eXcobyl9CiAgICAgICAgICA8ZGl2IGNsYXNzPSJiYWRnZXMiPiR7X3cobyl9PHNwYW4gY2xhc3M9ImJhZGdlICR7JHdbU3RyaW5nKG8uc3RhdHVzKV0/PyIifSI+JHtsKHRpW1N0cmluZyhvLnN0YXR1cyldP2ModGlbU3RyaW5nKG8uc3RhdHVzKV0/LlswXT8/IiIsdGlbU3RyaW5nKG8uc3RhdHVzKV0/LlsxXT8/IiIpOm8uc3RhdHVzKX08L3NwYW4+PC9kaXY+CiAgICAgICAgICAke28uc3RhdHVzPT09InVuY29uZmlybWVkIj9gPGRpdiBjbGFzcz0ibWV0YSI+JHtsKGMoYE5vdCBrbm93biB5ZXQgd2hldGhlciAke0JlKG8uc3VwcGxpZXIpLm5hbWV9IG1hZGUgdGhpcyBib29raW5nIOKAlCBhIHBlcnNvbiBpcyBjb25maXJtaW5nIGl0LmAsYOi/mOS4jeehruWumiR7QmUoby5zdXBwbGllcikubmFtZX3mmK/lkKblt7LnlJ/miJDov5nnrJTpooTorqLvvIzmraPlnKjkurrlt6XmoLjlrp7jgIJgKSl9PC9kaXY+YDoiIn0KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJwcmljZSI+PGRpdiBjbGFzcz0icC10b3RhbCI+JHtsKG8ucXVvdGU/LnRvdGFsPz8iIil9PC9kaXY+PC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iYWN0aW9uIj4ke28uc3RhdHVzPT09ImF3YWl0aW5nLXBheW1lbnQiJiZvLnBheW1lbnQ/LnVybD9gPGJ1dHRvbiBjbGFzcz0iZ28gc20iIHR5cGU9ImJ1dHRvbiIgZGF0YS1hY3Q9InBheSIgZGF0YS11cmw9IiR7bChvLnBheW1lbnQudXJsKX0iIGRhdGEtY29kZT0iJHtsKG8uY29uZmlybWF0aW9uQ29kZSl9IiBkYXRhLXVudGlsPSIke2woby5wYXltZW50LnBheUJ5Pz8iIil9Ij4ke2MoIlBheSIsIuWOu+S7mOasviIpfSAke2woby5wYXltZW50LmFtb3VudD8/IiIpfTwvYnV0dG9uPmA6by5zdGF0dXM9PT0icmVxdWVzdGVkInx8by5zdGF0dXM9PT0iY29uZmlybWVkIj9gJHtVbygibGlzdEV4dHJhcyIpJiZCZShvLnN1cHBsaWVyKS5leHRyYXM/YDxidXR0b24gY2xhc3M9ImdvIHF1aWV0IHNtIiB0eXBlPSJidXR0b24iIGRhdGEtYm9va2luZy1leHRyYXM9IiR7bChvLmNvbmZpcm1hdGlvbkNvZGUpfSI+JHtjKCJBZGQtb25zIiwi6ZmE5Yqg5pyN5YqhIil9PC9idXR0b24+YDoiIn0KICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iZ28gcXVpZXQgc20iIHR5cGU9ImJ1dHRvbiIgZGF0YS1jYW5jZWw9IiR7bChvLmNvbmZpcm1hdGlvbkNvZGUpfSI+JHtjKCJDYW5jZWwiLCLlj5bmtogiKX08L2J1dHRvbj5gOiIifTwvZGl2PgogICAgICA8L2Rpdj5gKS5qb2luKCIiKX08L2Rpdj5gXS5qb2luKCIiKX0sY2Q9ZT0+e2NvbnN0IHQ9ZS52aWV3PT09ImNhbmNlbGxlZCIsbj1lLmJvb2tpbmc/P3t9O3JldHVybltgPGRpdiBjbGFzcz0iY29uZiI+CiAgICAgICA8ZGl2IGNsYXNzPSJub3RlIj4ke3Q/YygiQ2FuY2VsbGVkIiwi5bey5Y+W5raIIik6YygiQ2FuY2VsbGluZyIsIuato+WcqOWPlua2iCIpfTwvZGl2PgogICAgICAgPGRpdiBjbGFzcz0iY29kZSI+JHtsKG4uY29uZmlybWF0aW9uQ29kZSl9PC9kaXY+CiAgICAgPC9kaXY+YCxgPGRpdiBjbGFzcz0ic3VtcyI+CiAgICAgICA8ZGl2IGNsYXNzPSJzdW0gdG90YWwiPjxzcGFuPiR7dD9jKCJUaGUgaG90ZWwgY2hhcmdlcyIsIumFkuW6l+aUtuWPliIpOmMoIkNhbmNlbGxpbmcgd291bGQgY29zdCIsIuWPlua2iOmcgOaUr+S7mCIpfTwvc3Bhbj48c3Bhbj4ke2woZS5mZWUpfTwvc3Bhbj48L2Rpdj4KICAgICA8L2Rpdj5gLGA8ZGl2IGNsYXNzPSJub3RlIj4ke2woZS5ydWxlKX08L2Rpdj5gLHQ/IiI6ZS5jYW5jZWxsYWJsZT9gPGRpdiBjbGFzcz0iZm9vdCI+CiAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJnbyBxdWlldCIgdHlwZT0iYnV0dG9uIiBkYXRhLWFjdD0iYm9va2luZ3MiPiR7YygiS2VlcCBpdCIsIuS4jeWPlua2iOS6hiIpfTwvYnV0dG9uPgogICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iZ28gZGFuZ2VyIiB0eXBlPSJidXR0b24iIGRhdGEtY29uZmlybS1jYW5jZWw9IiR7bChuLmNvbmZpcm1hdGlvbkNvZGUpfSI+JHtjKCJDYW5jZWwgdGhlIGJvb2tpbmciLCLnoa7orqTlj5bmtogiKX08L2J1dHRvbj4KICAgICAgICAgICA8L2Rpdj5gOmA8ZGl2IGNsYXNzPSJub3RlIj4ke2MoIlRoZXJlIGlzIG5vdGhpbmcgbGVmdCB0byBjYW5jZWwgb24gdGhpcyBib29raW5nLiIsIui/meeslOmihOiuouW3suayoeacieWPr+WPlua2iOeahOWGheWuueOAgiIpfTwvZGl2PmBdLmpvaW4oIiIpfSxsZD1lPT57Y29uc3QgdD1lLnZpZXc9PT0iY2hhbmdlZCIsbj1lLmJvb2tpbmc/P3t9LG89ZS5mcm9tPz97fSxzPWUudG8scj0hIXMmJihzLmNoZWNrSW4hPT1vLmNoZWNrSW58fHMuY2hlY2tPdXQhPT1vLmNoZWNrT3V0fHxOdW1iZXIocy5yb29tcykhPT1OdW1iZXIoby5yb29tcyl8fHMucm9vbU5hbWUhPT1vLnJvb21OYW1lKSxpPShhLGQsdSk9PmQ/YDxkaXYgY2xhc3M9ImxlZyR7dT8iIHdhcyI6IiJ9Ij4KICAgICAgICAgICA8ZGl2IGNsYXNzPSJsZWdrIj4ke2woYSl9PC9kaXY+CiAgICAgICAgICAgPGRpdiBjbGFzcz0ibGVndiI+JHtsKEFlKFN0cmluZyhkLmNoZWNrSW4pKSl9IOKGkiAke2woQWUoU3RyaW5nKGQuY2hlY2tPdXQpKSl9IMK3ICR7bCh1ZShOdW1iZXIoZC5uaWdodHMpKSl9PC9kaXY+CiAgICAgICAgICAgPGRpdiBjbGFzcz0ibGVnbSI+JHtsKGQucm9vbU5hbWUpfSR7TnVtYmVyKGQucm9vbXMpPjE/YCDCtyAke2woa18oTnVtYmVyKGQucm9vbXMpKSl9YDoiIn0gwrcgJHtsKGQudG90YWwpfTwvZGl2PgogICAgICAgICA8L2Rpdj5gOiIiO3JldHVybltgPGRpdiBjbGFzcz0iY29uZiI+CiAgICAgICA8ZGl2IGNsYXNzPSJub3RlIj4ke3Q/YygiQ2hhbmdlZCIsIuW3suS/ruaUuSIpOmMoIkNoYW5naW5nIiwi5L+u5pS56aKE6K6iIil9PC9kaXY+CiAgICAgICA8ZGl2IGNsYXNzPSJjb2RlIj4ke2wobi5jb25maXJtYXRpb25Db2RlKX08L2Rpdj4KICAgICA8L2Rpdj5gLGUuaG90ZWxOYW1lP2A8ZGl2IGNsYXNzPSJoLXdoZXJlIj4ke2woZS5ob3RlbE5hbWUpfTwvZGl2PmA6IiIsYDxkaXYgY2xhc3M9ImxlZ3MiPiR7aSh0P2MoIldhcyIsIuWOn+adpSIpOmMoIk5vdyIsIueOsOWcqCIpLGUuZnJvbSxyKX0ke2kodD9jKCJOb3ciLCLnjrDlnKgiKTpjKCJXb3VsZCBiZSIsIuaUueS4uiIpLGUudG8sITEpfTwvZGl2PmAsZS5hZGRPbj9gPGRpdiBjbGFzcz0ic3VtcyI+PGRpdiBjbGFzcz0ic3VtIj48c3Bhbj4ke2woZS5hZGRPbi5uYW1lKX08L3NwYW4+PHNwYW4+JHtsKGUuYWRkT24uZnJvbSl9IOKGkiAke2woZS5hZGRPbi50byl9PC9zcGFuPjwvZGl2PjwvZGl2PmA6IiIsZS5kaWZmZXJlbmNlP2A8ZGl2IGNsYXNzPSJzdW1zIj48ZGl2IGNsYXNzPSJzdW0gdG90YWwiPjxzcGFuPiR7ZS5yZWZ1bmREdWU/dD9jKCJUaGUgZGVzayBvd2VzIiwi6YWS5bqX5bqU6YCAIik6YygiV291bGQgY29tZSBiYWNrIiwi5bCG6YCA5ZueIik6Yyh0PyJUaGUgZGVzayBhc2tzIGZvciI6IldvdWxkIGNvc3QiLCLpnIDooaXlt67ku7ciKX08L3NwYW4+PHNwYW4+JHtsKGUuZGlmZmVyZW5jZSl9PC9zcGFuPjwvZGl2PjwvZGl2PmA6IiIsYDxkaXYgY2xhc3M9Im5vdGUiPiR7bChlLnJ1bGUpfTwvZGl2PmAsdD9gPGRpdiBjbGFzcz0iZm9vdCI+PGJ1dHRvbiBjbGFzcz0iZ28gcXVpZXQiIHR5cGU9ImJ1dHRvbiIgZGF0YS1hY3Q9ImJvb2tpbmdzIj4ke2MoIk15IGJvb2tpbmdzIiwi5oiR55qE6aKE6K6iIil9PC9idXR0b24+PC9kaXY+YDplLmNoYW5nZWFibGU/YDxkaXYgY2xhc3M9ImZvb3QiPgogICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iZ28gcXVpZXQiIHR5cGU9ImJ1dHRvbiIgZGF0YS1hY3Q9ImJvb2tpbmdzIj4ke2MoIkxlYXZlIGl0Iiwi5LiN5pS55LqGIil9PC9idXR0b24+CiAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJnbyIgdHlwZT0iYnV0dG9uIiBkYXRhLWNvbmZpcm0tY2hhbmdlPSIke2wobi5jb25maXJtYXRpb25Db2RlKX0iPiR7ZS5hZGRPbiYmZS5mcm9tPy5jaGVja0luPT09ZS50bz8uY2hlY2tJbiYmZS5mcm9tPy5jaGVja091dD09PWUudG8/LmNoZWNrT3V0P2MoIlVwZGF0ZSB0aGUgYm9va2luZyIsIuabtOaWsOmihOiuoiIpOmMoIk1vdmUgdGhlIGJvb2tpbmciLCLnoa7orqTmlLnmnJ8iKX08L2J1dHRvbj4KICAgICAgICAgICA8L2Rpdj5gOiIiXS5qb2luKCIiKX0sbmk9ZT0+e2NvbnN0IHQ9ZS5ob3RlbD8/e30sbj1lLnZpZXc9PT0icG9saWN5Ij9gPGg0PiR7bChlLnRpdGxlKX08L2g0PiR7bChlLnRleHQpfWA6KGUudG9waWNzPz9bXSkubWFwKG89PmA8aDQ+JHtsKG8udGl0bGUpfTwvaDQ+JHtsKG8udGV4dCl9YCkuam9pbigiIik7cmV0dXJuW2A8ZGl2PjxkaXYgY2xhc3M9ImgtbmFtZSI+JHtsKHQubmFtZSl9PC9kaXY+PGRpdiBjbGFzcz0iaC13aGVyZSI+JHtjKCJXaGF0IHRoZSBob3RlbCBwdWJsaXNoZXMiLCLphZLlupflhazluIPnmoTmlL/nrZYiKX08L2Rpdj48L2Rpdj5gLGUudmlldz09PSJwb2xpY3ktbWlzc2luZyI/YDxkaXYgY2xhc3M9ImVtcHR5Ij4ke2woYyhgJHt0Lm5hbWV9IGRvZXMgbm90IHB1Ymxpc2ggYW55dGhpbmcgYWJvdXQgdGhhdCBoZXJlLmAsYCR7dC5uYW1lfeayoeacieWFrOW4g+i/meaWuemdoueahOaUv+etluOAgmApKX08L2Rpdj5gOmA8ZGl2IGNsYXNzPSJwcm9zZSI+JHtufTwvZGl2PmAsYDxidXR0b24gY2xhc3M9ImdvIHF1aWV0IiB0eXBlPSJidXR0b24iIGRhdGEtaG90ZWw9IiR7bCh0LmlkKX0iPiR7bChjKGBCYWNrIHRvICR7dC5uYW1lfWAsYOi/lOWbniR7dC5uYW1lfWApKX08L2J1dHRvbj5gXS5qb2luKCIiKX0sU3c9e1doZXJlOiLkvY3nva4iLEJyYW5kOiLlk4HniYwiLFJvb206IuaIv+WeiyIsIlBlciBuaWdodCI6Iuavj+aZmiIsIldob2xlIHN0YXkiOiLmlbTmrrXkvY/lrr8iLCJGcmVlIGNhbmNlbGxhdGlvbiI6IuWFjei0ueWPlua2iCIsQnJlYWtmYXN0OiLml6nppJAiLFNsZWVwczoi5Y+v5L2P5Lq65pWwIiwiUm9vbXMgbGVmdCI6IuWJqeS9meaIv+mXtCIsRnJvbToi6LW35Lu3IixSYXRpbmc6IuivhOWIhiJ9LFR3PXtZZXM6IuaYryIsTm86IuWQpiIsSW5jbHVkZWQ6IuWQqyIsIk5vdCBpbmNsdWRlZCI6IuS4jeWQqyJ9LHp3PWU9PnJlPT09InpoIj9Td1tlXT8/ZTplLHh3PWU9PnJlPT09InpoIj9Ud1tlXT8/ZS5yZXBsYWNlKC8gaW5jbFwuIHRheCQvLCIg5ZCr56iOIikucmVwbGFjZSgvIGEgbmlnaHQkLywiIOavj+aZmiIpOmUsSXc9ZT0+e2NvbnN0IHQ9ZS5jb2x1bW5zPz9bXSxuPWUucm93TGFiZWxzPz9bXSxvPXQuc29tZShyPT5yLnJlY29tbWVuZGVkKSxzPXI9PmAKICAgIDxkaXYgY2xhc3M9ImNtcC1oZWFkJHtyLnJlY29tbWVuZGVkPyIgcGljayI6IiJ9JHtvPyIgbWFya2VkIjoiIn0iPgogICAgICAke28/YDxkaXYgY2xhc3M9InBpY2ttYXJrJHtyLnJlY29tbWVuZGVkPyIiOiIgbm9uZSJ9Ij4ke3IucmVjb21tZW5kZWQ/YygiUmVjb21tZW5kZWQiLCLmjqjojZAiKToiIn08L2Rpdj5gOiIifQogICAgICA8YnV0dG9uIGNsYXNzPSJ0LXNob3QiIHR5cGU9ImJ1dHRvbiIgZGF0YS1ob3RlbD0iJHtsKHIuaG90ZWwuaWQpfSIgc3R5bGU9IiR7dXQoU3RyaW5nKHIuaG90ZWwuaWQpKX0iPgogICAgICAgICR7ci5ob3RlbC5pbWFnZVVybD9gPGltZyBzcmM9IiR7bChyLmhvdGVsLmltYWdlVXJsKX0iIGFsdD0iIj5gOiIifQogICAgICAgIDxzcGFuIGNsYXNzPSJ0LW1hcmsiPiR7bChkdChTdHJpbmcoci5ob3RlbC5uYW1lKSkpfTwvc3Bhbj4KICAgICAgPC9idXR0b24+CiAgICAgIDxkaXYgY2xhc3M9ImNvbC1uYW1lIj4ke2woci5ob3RlbC5uYW1lKX0ke1R0KHIuaG90ZWwuc3VwcGxpZXIpP2A8c21hbGwgY2xhc3M9ImNvbC1ncm91cCI+JHtsKFR0KHIuaG90ZWwuc3VwcGxpZXIpLm5hbWUpfTwvc21hbGw+YDoiIn08L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0iY29sLXByaWNlIj4ke3IucHJpY2U/YCR7bChyLnByaWNlLnN0YXlUb3RhbCl9PHNtYWxsIGNsYXNzPSJzdWIiPiR7bChjKGB0b3RhbCDCtyAke3IucHJpY2UubmlnaHRseX0vbmlnaHRgLGDmgLvku7cgwrcg5q+P5pmaICR7ci5wcmljZS5uaWdodGx5fWApKX08L3NtYWxsPmA6ci5mcm9tP2A8c21hbGw+JHtjKCJGcm9tICIsIiIpfTwvc21hbGw+JHtsKHIuZnJvbSl9PHNtYWxsPiR7YygiIC8gbmlnaHQiLCIg6LW3L+aZmiIpfTwvc21hbGw+YDoiIn08L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0id2h5JHtyLmJlc3RGb3I/IiI6IiBub25lIn0iPiR7ci5iZXN0Rm9yP2woci5iZXN0Rm9yKToiIn08L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0icGMiPiR7Wy4uLihyLnByb3M/P1tdKS5tYXAoaT0+YDxkaXYgY2xhc3M9InBybyI+PHNwYW4gY2xhc3M9Im0iPis8L3NwYW4+PHNwYW4+JHtsKGkpfTwvc3Bhbj48L2Rpdj5gKSwuLi4oci5jb25zPz9bXSkubWFwKGk9PmA8ZGl2IGNsYXNzPSJjb24iPjxzcGFuIGNsYXNzPSJtIj7iiJI8L3NwYW4+PHNwYW4+JHtsKGkpfTwvc3Bhbj48L2Rpdj5gKV0uam9pbigiIil9PC9kaXY+CiAgICA8L2Rpdj5gO3JldHVybltlLnRpdGxlP2A8ZGl2IGNsYXNzPSJoLW5hbWUiPiR7bChlLnRpdGxlKX08L2Rpdj5gOiIiLGUuc3RheT9gPGRpdiBjbGFzcz0iaC13aGVyZSI+JHtsKEhvKGUuc3RheSkpfTwvZGl2PmA6IiIsQXJyYXkuaXNBcnJheShlLmN1cnJlbmNpZXMpJiZlLmN1cnJlbmNpZXMubGVuZ3RoPjE/YDxkaXYgY2xhc3M9Im5vdGUiPiR7bChjKGBQcmljZXMgYXJlIGluIGVhY2ggaG90ZWwncyBvd24gY3VycmVuY3kgKCR7ZS5jdXJyZW5jaWVzLmpvaW4oIiwgIil9KS4gVGhleSBhcmUgbm90IGNvbnZlcnRlZCwgc28gdGhlIGNvbHVtbnMgYXJlIG5vdCBhIHByaWNlIHJhbmtpbmcuYCxg5ZCE5a625Lu35qC85oyJ5ZCE6Ieq5biB56eN77yIJHtlLmN1cnJlbmNpZXMuam9pbigi44CBIil977yJ5pi+56S677yM5LiN5YGa5o2i566X77yM5omA5Lul5LiN6IO95oyJ5YiX5q+U5Lu344CCYCkpfTwvZGl2PmA6IiIsYDxkaXYgY2xhc3M9ImNtcC13cmFwIj48ZGl2IGNsYXNzPSJjbXAke3QubGVuZ3RoPj00PyIgZm91ciI6IiJ9IiBzdHlsZT0iLS1jb2xzOiR7dC5sZW5ndGh9Oy0taGVhZC1yb3dzOiR7bz82OjV9Ij4KICAgICAgIDxkaXYgY2xhc3M9ImNtcC1jb3JuZXIiPjwvZGl2PgogICAgICAgJHt0Lm1hcChzKS5qb2luKCIiKX0KICAgICAgICR7bi5tYXAoKHIsaSk9PmA8ZGl2IGNsYXNzPSJrIj4ke2woencocikpfTwvZGl2PiR7dC5tYXAoYT0+YDxkaXYgY2xhc3M9InYke2klMj8iIGFsdCI6IiJ9Ij4ke2woeHcoYS5yb3dzPy5baV0/LnZhbHVlPz8i4oCUIikpfTwvZGl2PmApLmpvaW4oIiIpfWApLmpvaW4oIiIpfQogICAgIDwvZGl2PjwvZGl2PmAsdXUoZSksYDxkaXYgY2xhc3M9Im5vdGUiPiR7bChjKGBPcGVuIGEgJHtlLnZvY2FiPy5ub3VuPz8iaG90ZWwifSB0byBzZWUgaXRzIHJvb21zJHtlLnN0YXk/LmNoZWNrSW4/IiBmb3IgdGhlc2UgbmlnaHRzIjoiIn0uYCxg5omT5byA5LiA5a626YWS5bqX77yM5p+l55yLJHtlLnN0YXk/LmNoZWNrSW4/Iui/meS6m+aXpeacn+eahCI6IiJ95oi/6Ze044CCYCkpfTwvZGl2PmBdLmpvaW4oIiIpfSxBdz1lPT57Y29uc3QgdD1lLmRheXM/P1tdLG49YT0+YDxzcGFuIGNsYXNzPSJpbnN0YXRlICR7YS5ib29rZWR8fGEuaW5UcmlwPyJ5ZXMiOiJubyJ9Ij4ke2EuYm9va2VkP2MoYEJvb2tlZCDCtyAke2woYS5ib29rZWQpfWAsYOW3suiuoiDCtyAke2woYS5ib29rZWQpfWApOmEuaW5UcmlwP2MoIkluIHRoZSB0cmlwIiwi5bey5Zyo6KGM56iL5LitIik6YygiUGxhbiBvbmx5Iiwi5LuF6K6h5YiSIil9PC9zcGFuPmAsbz1hPT5gIGRhdGEtaG90ZWw9IiR7bChhLmlkKX0iIHJvbGU9ImJ1dHRvbiIgdGFiaW5kZXg9IjAiJHthLmNoZWNrSW4/YCBkYXRhLWNpPSIke2woYS5jaGVja0luKX0iIGRhdGEtY289IiR7bChhLmNoZWNrT3V0KX0iYDoiIn1gLHM9YT0+YS5jaGVja291dD9gPGRpdiBjbGFzcz0icGxhbi1uaWdodCIke28oYSl9PjxzcGFuPiR7YyhgQ2hlY2sgb3V0IMK3ICR7bChhLm5hbWUpfWAsYOemu+W6lyDCtyAke2woYS5uYW1lKX1gKX08L3NwYW4+PC9kaXY+YDpOdW1iZXIoYS5uaWdodD8/MSk+MT9gPGRpdiBjbGFzcz0icGxhbi1uaWdodCIke28oYSl9PgogICAgICAgICAgIDxzcGFuPiR7bChjKGBOaWdodCAke2EubmlnaHR9IG9mICR7YS5uaWdodHN9IMK3ICR7YS5uYW1lfWAsYOesrCAke2EubmlnaHR9LyR7YS5uaWdodHN9IOaZmiDCtyAke2EubmFtZX1gKSl9PC9zcGFuPiR7bihhKX0KICAgICAgICAgPC9kaXY+YDpgPGRpdiBjbGFzcz0icGxhbi1zdGF5IiR7byhhKX0+CiAgICAgICAgICAgPHNwYW4gY2xhc3M9InBzLXNob3QiIHN0eWxlPSIke3V0KFN0cmluZyhhLmlkKSl9Ij4ke2EuaW1hZ2VVcmw/YDxpbWcgc3JjPSIke2woYS5pbWFnZVVybCl9IiBhbHQ9IiI+YDpgPHNwYW4gY2xhc3M9InQtbWFyayI+JHtsKGR0KFN0cmluZyhhLm5hbWUpKSl9PC9zcGFuPmB9PC9zcGFuPgogICAgICAgICAgIDxzcGFuIGNsYXNzPSJwcy1ib2R5Ij4KICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJuYW1lIj4ke2woYS5uYW1lKX08L3NwYW4+CiAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibWV0YSI+JHtsKFthLmRldGFpbCxhLm5pZ2h0cz9jKGAke3VlKGEubmlnaHRzKX0gaGVyZWAsYOWcqOatpOS9jyR7dWUoYS5uaWdodHMpfWApOiIiXS5maWx0ZXIoQm9vbGVhbikuam9pbigiIMK3ICIpKX08L3NwYW4+CiAgICAgICAgICAgICAke2EucHJpY2U/YDxzcGFuIGNsYXNzPSJwcy1wcmljZSI+JHtsKGEucHJpY2UpfTwvc3Bhbj5gOiIifQogICAgICAgICAgICAgJHtuKGEpfQogICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgPC9kaXY+YCxyPWE9PmAKICAgIDxkaXYgY2xhc3M9InBsYW4taXRlbSI+CiAgICAgIDxkaXY+CiAgICAgICAgPGRpdiBjbGFzcz0ibmFtZSI+JHtsKGEubmFtZSl9PC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0ibWV0YSI+JHtsKFthLmRldGFpbCxhLnByaWNlXS5maWx0ZXIoQm9vbGVhbikuam9pbigiIMK3ICIpKX08L2Rpdj4KICAgICAgPC9kaXY+CiAgICAgICR7bihhKX0KICAgIDwvZGl2PmAsaT1hPT4oYS5wbGFuPz9bXSkubGVuZ3RoP2A8b2wgY2xhc3M9Im1vbWVudHMiPiR7YS5wbGFuLm1hcChkPT5gPGxpPgogICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ3aGVuIj4ke2woZC50aW1lPz8iIil9PC9zcGFuPgogICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ3aGF0Ij48Yj4ke2woZC53aGF0KX08L2I+JHtkLm5vdGU/YDxzbWFsbD4ke2woZC5ub3RlKX08L3NtYWxsPmA6IiJ9PC9zcGFuPgogICAgICAgICAgICA8L2xpPmApLmpvaW4oIiIpfTwvb2w+YDoiIjtyZXR1cm5bYDxkaXY+CiAgICAgICA8ZGl2IGNsYXNzPSJoLW5hbWUiPiR7bChlLnRpdGxlKX08L2Rpdj4KICAgICAgICR7ZS5zdGF5P2A8ZGl2IGNsYXNzPSJoLXdoZXJlIj4ke2woSG8oZS5zdGF5KSl9PC9kaXY+YDoiIn0KICAgICA8L2Rpdj5gLGA8ZGl2IGNsYXNzPSJnYXAiPjxiPiR7bChOdW1iZXIoZS5pblRyaXA/PzApK051bWJlcihlLmJvb2tlZD8/MCkpfS8ke2woZS5wbGFubmVkKX08L2I+PHNwYW4+JHtsKHJlPT09InpoIj9g6K6h5YiS5Lit55qEICR7ZS5wbGFubmVkfSDpobnph4zvvIwke051bWJlcihlLmluVHJpcD8/MCkrTnVtYmVyKGUuYm9va2VkPz8wKX0g6aG55bey5Zyo6KGM56iL5Lit5oiW5bey6aKE6K6i77yM5YW25L2Z5Y+q5piv6K6h5YiS44CCYDplLmdhcD8/IiIpfTwvc3Bhbj48L2Rpdj5gLGA8ZGl2IGNsYXNzPSJkYXlzIj4ke3QubWFwKChhLGQpPT5gCiAgICAgIDxkaXYgY2xhc3M9ImRheXJvdyI+CiAgICAgICAgPGRpdiBjbGFzcz0iZGF5bnVtIj48Yj4ke2QrMX08L2I+PGk+PC9pPjwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9ImRheWJvZHkiPgogICAgICAgICAgPGRpdiBjbGFzcz0iZGF5bGFiZWwiPiR7bChhLmxhYmVsKX0ke2EuZGF0ZT9gPHNtYWxsPiDCtyAke2woQ3coU3RyaW5nKGEuZGF0ZSkpKX08L3NtYWxsPmA6IiJ9PC9kaXY+CiAgICAgICAgICAke2Eubm90ZT9gPGRpdiBjbGFzcz0iZGF5bm90ZSI+JHtsKGEubm90ZSl9PC9kaXY+YDoiIn0KICAgICAgICAgICR7aShhKX0KICAgICAgICAgICR7KGEuaXRlbXM/P1tdKS5tYXAodT0+dS5raW5kPT09ImhvdGVsIj9zKHUpOnIodSkpLmpvaW4oIiIpfQogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj5gKS5qb2luKCIiKX08L2Rpdj5gLHV1KGUpXS5qb2luKCIiKX0sQ3c9ZT0+QWUoZSksX2U9KGUsdD0hMSk9PntpZighZXx8dHlwZW9mIGUhPSJvYmplY3QiKXJldHVybjtjb25zdCBuPXQmJmUudmlldz09PSJtZW1iZXIiJiZuZT97Li4uZSxtZW1iZXI6bmV9OmU7Yl8obiksbi50b29sTmFtZXMmJihIbD1uLnRvb2xOYW1lcyksKG4uYm9va2luZ01vZGU9PT0icGF5LWF0LWhvdGVsInx8bi5ib29raW5nTW9kZT09PSJob2xkIikmJihHZj1uLmJvb2tpbmdNb2RlKSx0eXBlb2Ygbi50b29sTmFtZXM9PSJvYmplY3QiJiYoVmw9bi5zYW5kYm94PT09ITAsWWY9bi5waG9uZVJlcXVpcmVkPT09ITApLChuLmxhbmc9PT0iemgifHxuLmxhbmc9PT0iZW4iKSYmKHJlPW4ubGFuZyxUXygpKSxuLmJyYW5kJiYoRGU9U3RyaW5nKG4uYnJhbmQpKSxuLmFjY2VudCYmU18obi5hY2NlbnQpLG4ubG9nb1VybCYmKGZzPVN0cmluZyhuLmxvZ29VcmwpKSxuLmxvZ29EYXJrVXJsJiYoZ2k9U3RyaW5nKG4ubG9nb0RhcmtVcmwpKSxuLnNob3dOYW1lPT09ITAmJihYcj0hMCksbi5wcm9ncmFtbWUmJihiaT1TdHJpbmcobi5wcm9ncmFtbWUpKSxuLm1hcmtldCYmQXJyYXkuaXNBcnJheShuLm1hcmtldC5zdXBwbGllcnMpJiYoeWU9bi5tYXJrZXQpLG4udmlldz09PSJib29raW5nIiYmKG50PSIiKSxuLmNvZGVQcmVmaXgmJih2aT1TdHJpbmcobi5jb2RlUHJlZml4KSksdHlwZW9mIG4uZGVtbz09ImJvb2xlYW4iJiYoV2w9bi5kZW1vKSxuLmRlbW9Ob3RlJiYoVWY9U3RyaW5nKG4uZGVtb05vdGUpKSx0eXBlb2Ygbi5yb29tc193YW50ZWQ9PSJudW1iZXIiP2o9bi5yb29tc193YW50ZWQ6KG4udmlldz09PSJob3RlbHMifHxuLnZpZXc9PT0iZGVzdGluYXRpb25zInx8bi52aWV3PT09Im5vLWhvdGVscyIpJiZuLnN0YXk/LmNoZWNrSW4mJiFMdCYmKGo9TWF0aC5tYXgoMSxOdW1iZXIobi5hc2s/LnJvb21zPz8xKXx8MSkpLHR8fChuLnZpZXc9PT0ibWVtYmVyIiYmbi5tZW1iZXI/LnRpZXI/Lm5hbWU/bmU9bi5tZW1iZXI6bi5tZW1iZXI/LnRpZXI/Lm5hbWUmJihuZT1uZT8ucHJvZ3JhbW1lPT09bi5tZW1iZXIucHJvZ3JhbW1lJiZuZT8udGllcj8ubmFtZT09PW4ubWVtYmVyLnRpZXIubmFtZT97Li4ubmUsLi4ubi5tZW1iZXIscHJlZmVyZW5jZXM6bi5tZW1iZXIucHJlZmVyZW5jZXN9Om4ubWVtYmVyKSwobi52aWV3PT09InNpZ25lZC1vdXQifHxuLnNpZ25lZEluPT09ITEpJiYobmU9bnVsbCkpLG4uc3RheT8uY2hlY2tJbiYmbi5zdGF5LmNoZWNrT3V0Pm4uc3RheS5jaGVja0luJiYhQW4mJiFMdCYmKFM9e2NoZWNrSW46bi5zdGF5LmNoZWNrSW4sY2hlY2tPdXQ6bi5zdGF5LmNoZWNrT3V0LGd1ZXN0czpuLnN0YXkuZ3Vlc3RzPz8yfSksIU5uJiYobi52aWV3PT09InRyaXAifHxuLnZpZXc9PT0ibmVlZHMtZGF0ZXMiKSYmKGF0PW4ubGluZXM/P1tdKSwobi52aWV3PT09ImJvb2tpbmcifHxuLnZpZXc9PT0iZW1wdHktdHJpcCIpJiYoYXQ9W10sU3Q9MCksZXQ9U3RyaW5nKG4udmlldz8/IiIpLEZmKCksZ18obiksZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNrbG9nbyIpPy5yZW1vdmUoKTtjb25zdCBvPVYoImJyYW5kIik7ZnM/KEZsKCksby5oaWRkZW49ITEsVigidGl0bGUiKS5oaWRkZW49IVhyLFhyJiYoVigidGl0bGUiKS50ZXh0Q29udGVudD1EZXx8YygiSG90ZWxzIiwi6YWS5bqXIikpKTooby5oaWRkZW49ITAsVigidGl0bGUiKS5oaWRkZW49ITEsVigidGl0bGUiKS50ZXh0Q29udGVudD1EZXx8YygiSG90ZWxzIiwi6YWS5bqXIikpLFYoInN1YiIpLnRleHRDb250ZW50PU93KG4pLHpfKCksTncoKSxSdygpO2NvbnN0IHM9e2hvdGVsczpEXyxkZXN0aW5hdGlvbnM6RV8sIm5vLWhvdGVscyI6Ql8saG90ZWw6c2QsIm5vLXJvb21zIjpzZCwiaG90ZWwtbm90LWZvdW5kIjpwPT4ocC5jYW5kaWRhdGVzPz9bXSkubGVuZ3RoP2x1KHAucXVlcnkscC5jYW5kaWRhdGVzLHAudm9jYWI/Lm5vdW4pOmA8ZGl2IGNsYXNzPSJlbXB0eSI+JHtjKCJUaGF0IGhvdGVsIGlzIG5vdCBpbiB0aGlzIGNvbm5lY3Rvci4iLCLov5nph4zmsqHmnInov5nlrrbphZLlupfjgIIiKX08L2Rpdj5gLGV4dHJhczpYXyx0cmlwOm93LCJuZWVkcy1kYXRlcyI6RXcsYm9va2luZzpmdywibmVlZHMtZ3Vlc3QiOmN3LG1lbWJlcjpsdywibWVtYmVyLW5vdC1mb3VuZCI6dXcsInNpZ25lZC1vdXQiOigpPT5gPGRpdiBjbGFzcz0iZW1wdHkiPiR7YygiU2lnbmVkIG91dC4gUmF0ZXMgYXJlIHRoZSBwdWJsaWMgb25lcyBhZ2Fpbi4iLCLlt7LpgIDlh7rnmbvlvZXvvIzku7fmoLzmgaLlpI3kuLrlhazlvIDku7fjgIIiKX08L2Rpdj48ZGl2IGNsYXNzPSJmb290Ij48YnV0dG9uIGNsYXNzPSJnbyIgdHlwZT0iYnV0dG9uIiBkYXRhLWFjdD0iaG9tZSI+JHtjKCJGaW5kIGEgaG90ZWwiLCLmib7phZLlupciKX08L2J1dHRvbj48L2Rpdj5gLCJlbXB0eS10cmlwIjooKT0+YDxkaXYgY2xhc3M9ImVtcHR5Ij4ke2MoIlRoZXJlIGlzIG5vdGhpbmcgaW4gdGhlIHRyaXAgeWV0LiIsIuihjOeoi+mHjOi/mOayoeacieWGheWuueOAgiIpfTwvZGl2PmAsYm9va2luZ3M6d3csImNhbmNlbGxhdGlvbi1wcmV2aWV3IjpjZCxjYW5jZWxsZWQ6Y2QsImNoYW5nZS1wcmV2aWV3IjpsZCxjaGFuZ2VkOmxkLCJib29raW5nLW5vdC1mb3VuZCI6KCk9PmA8ZGl2IGNsYXNzPSJlbXB0eSI+JHtjKCJObyBib29raW5nIGhlcmUgbWF0Y2hlcyB0aGF0IGNvZGUuIiwi5rKh5pyJ5ZKM6L+Z5Liq56Gu6K6k56CB5a+55bqU55qE6aKE6K6i44CCIil9PC9kaXY+YCxjb21wYXJpc29uOkl3LCJub3RoaW5nLXRvLWNvbXBhcmUiOnA9PihwLmRyb3BwZWQ/P1tdKS5zb21lKGg9PihoLmNhbmRpZGF0ZXM/P1tdKS5sZW5ndGgpP3V1KHApOmA8ZGl2IGNsYXNzPSJlbXB0eSI+JHtjKCJOb25lIG9mIHRob3NlIGFyZSBob3RlbHMgdGhpcyBjb25uZWN0b3Iga25vd3MuIiwi6L+Z5Lqb6YO95LiN5piv6L+Z6YeM55qE6YWS5bqX44CCIil9PC9kaXY+YCxpdGluZXJhcnk6QXcsImVtcHR5LWl0aW5lcmFyeSI6KCk9PmA8ZGl2IGNsYXNzPSJlbXB0eSI+JHtjKCJBbiBpdGluZXJhcnkgbmVlZHMgYXQgbGVhc3Qgb25lIGRheS4iLCLooYznqIvorqHliJLoh7PlsJHpnIDopoHkuIDlpKnjgIIiKX08L2Rpdj5gLHBvbGljeTpuaSxwb2xpY2llczpuaSwicG9saWN5LW1pc3NpbmciOm5pLGVycm9yOnZ3LCJmaW5kLWJvb2tpbmciOigpPT5bJzxkaXYgY2xhc3M9Im5vdGUiPkEgYm9va2luZyBtYWRlIGluIGFub3RoZXIgY29udmVyc2F0aW9uIGlzIGZvdW5kIHdpdGggdGhlIGNvbmZpcm1hdGlvbiBjb2RlIGFuZCB0aGUgZW1haWwgaXQgd2FzIG1hZGUgd2l0aCAtIGJvdGgsIGFzIHRoZXkgYXJlIG9uIHRoZSBjb25maXJtYXRpb24uPC9kaXY+JyxgPGRpdiBjbGFzcz0iZm9ybSI+CiAgICAgICAgICAgPGRpdiBjbGFzcz0idHdvIj4KICAgICAgICAgICAgIDxsYWJlbD4ke2MoIkNvbmZpcm1hdGlvbiBjb2RlIiwi56Gu6K6k56CBIil9PGlucHV0IGlkPSJmY29kZSIgdHlwZT0idGV4dCIgYXV0b2NvbXBsZXRlPSJvZmYiJHtRdSgpP2AgcGxhY2Vob2xkZXI9IiR7bChRdSgpKX0iYDoiIn0+PC9sYWJlbD4KICAgICAgICAgICAgIDxsYWJlbD4ke2MoIkVtYWlsIiwi6YKu566xIil9PGlucHV0IGlkPSJmbWFpbCIgdHlwZT0iZW1haWwiIGF1dG9jb21wbGV0ZT0ib2ZmIiBwbGFjZWhvbGRlcj0iJHtjKCJUaGUgb25lIG9uIHRoZSBib29raW5nIiwi6aKE6K6i5pe255So55qE6YKu566xIil9Ij48L2xhYmVsPgogICAgICAgICAgIDwvZGl2PgogICAgICAgICAgIDxidXR0b24gY2xhc3M9ImdvIiB0eXBlPSJidXR0b24iIGRhdGEtYWN0PSJsb29rdXAtYm9va2luZyI+JHtjKCJGaW5kIGl0Iiwi5p+l5om+Iil9PC9idXR0b24+CiAgICAgICAgIDwvZGl2PmBdLmpvaW4oIiIpLCJuby1tZW1iZXIiOigpPT5gPGRpdiBjbGFzcz0iZW1wdHkiPiR7YygiTm9ib2R5IGlzIHNpZ25lZCBpbiwgc28gdGhlcmUgaXMgbm90aGluZyBzYXZlZCB0byBmb3JnZXQuIiwi5b2T5YmN5rKh5pyJ55m75b2V77yM5rKh5pyJ5Y+v5riF6Zmk55qE5YGP5aW944CCIil9PC9kaXY+JHt3cyghMCl9YCwibWVtYmVyLXNpZ24taW4iOigpPT5bYDxkaXYgY2xhc3M9Im5vdGUiPiR7YygiU2lnbiBpbiB3aXRoIHRoZSBtZW1iZXJzaGlwIG51bWJlciBhbmQgdGhlIHN1cm5hbWUgcHJpbnRlZCBvbiB0aGUgY2FyZCB0byBzZWUgdGhlIG1lbWJlciByYXRlIG9uIGV2ZXJ5IHByaWNlIGhlcmUuIiwi55So5Y2h5LiK5Y2w55qE5Lya5ZGY5Y+35ZKM5aeT5rCP55m75b2V77yM6L+Z6YeM55qE5q+P5Liq5Lu35qC86YO95Lya5pi+56S65Lya5ZGY5Lu344CCIil9PC9kaXY+YCx3cyghMCldLmpvaW4oIiIpfTsoZXQ9PT0iaG90ZWwifHxldD09PSJuby1yb29tcyJ8fGV0PT09Im5lZWRzLWRhdGVzIikmJm4uaG90ZWw/LmlkPyhqdD1TdHJpbmcobi5ob3RlbC5pZCksbi5uZWVkc0RhdGVzJiZzZXRUaW1lb3V0KCgpPT5xdCgwLCFGciksMCkpOihqdD0iIixkdSgpKTtjb25zdCByPXd0KG4pIT09d3QoQyk7Qz1uO2NvbnN0IGk9c1tldF07VigiY29udGVudCIpLmlubmVySFRNTD0oaT9pKG4pOmA8ZGl2IGNsYXNzPSJlcnIiPiR7bChuLmVycm9yPz9jKCJTb21ldGhpbmcgY2FtZSBiYWNrIHRoYXQgdGhpcyBjYXJkIGRvZXMgbm90IGtub3cgaG93IHRvIGRyYXcuIiwi5pS25Yiw5LqG6L+Z5byg5Y2h54mH5peg5rOV5pi+56S655qE5YaF5a6544CCIikpfSR7bi5kZXRhaWw/YDxicj4ke2wobi5kZXRhaWwpfWA6IiJ9PC9kaXY+YCkrUHcobik7Y29uc3QgYT1WKCJjb250ZW50Iik7YS5jbGFzc0xpc3QucmVtb3ZlKCJlbnRlciIpLHImJmRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZSE9PSJoaWRkZW4iJiYoYS5vZmZzZXRXaWR0aCxhLmNsYXNzTGlzdC5hZGQoImVudGVyIikpO2NvbnN0IGQ9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiI2NvbnRlbnQgLmZsZXgtZGF0ZXMiKSx1PWQ/LnF1ZXJ5U2VsZWN0b3IoIi5mZC5vbiIpO2lmKGQmJnUpe2NvbnN0IHA9Wy4uLmQucXVlcnlTZWxlY3RvckFsbCgiLmZkIildLGg9cFswXT8ub2Zmc2V0TGVmdD8/MCxiPXUub2Zmc2V0TGVmdC0oZC5jbGllbnRXaWR0aC11Lm9mZnNldFdpZHRoKS8yLCQ9cC5maWx0ZXIoVD0+VC5vZmZzZXRMZWZ0PD1iKzEpLnBvcCgpPz9wWzBdO2Quc2Nyb2xsTGVmdD1NYXRoLm1heCgwLCgkPy5vZmZzZXRMZWZ0Pz9oKS1oKTtjb25zdCBrPSgpPT57ZC5jbGFzc0xpc3QudG9nZ2xlKCJhdC1zdGFydCIsZC5zY3JvbGxMZWZ0PD0yKSxkLmNsYXNzTGlzdC50b2dnbGUoImF0LWVuZCIsZC5zY3JvbGxMZWZ0K2QuY2xpZW50V2lkdGg+PWQuc2Nyb2xsV2lkdGgtMil9O2soKSxkLmFkZEV2ZW50TGlzdGVuZXIoInNjcm9sbCIsayx7cGFzc2l2ZTohMH0pfWV0PT09ImhvdGVscyImJiFNbigpJiYoWGw9UWwoKSxXcihOdW1iZXIobi50b3RhbD8/MCktTnVtYmVyKG4ub2Zmc2V0Pz8wKSkhPT1rcyYmX2Uobix0KSl9LFB3PWU9Pntjb25zdCB0PSEhTWUuZ2V0SG9zdENhcGFiaWxpdGllcygpPy5tZXNzYWdlLG49cz0+bChTdHJpbmcocz8/IiIpLnJlcGxhY2UoLyIoW14iXSopIi9nLCLigJwkMeKAnSIpKSxvPShlLnN1Z2dlc3Rpb25zPz9bXSkubWFwKChzLHIpPT5zPy5hc2t8fHM/LmFza3M/Lmxlbmd0aD9gPGJ1dHRvbiBjbGFzcz0iY2hpcCBuZXh0IiB0eXBlPSJidXR0b24iIGRhdGEtc3VnZ2VzdD0iJHtyfSI+PHNwYW4+JHtuKHMubGFiZWwpfTwvc3Bhbj4ke1AuYXJyb3d9PC9idXR0b24+YDpzPy5zYXkmJnQ/YDxidXR0b24gY2xhc3M9ImNoaXAgbmV4dCBzYXkiIHR5cGU9ImJ1dHRvbiIgZGF0YS1zdWdnZXN0PSIke3J9Ij48c3Bhbj4ke24ocy5sYWJlbCl9IDxzbWFsbD7CtyBpbiB0aGUgY2hhdDwvc21hbGw+PC9zcGFuPiR7UC5hcnJvd308L2J1dHRvbj5gOiIiKS5qb2luKCIiKTtyZXR1cm4gbz9gPGRpdiBjbGFzcz0ic3VnZ2VzdCI+PGRpdiBjbGFzcz0id2wiPiR7YygiTmV4dCIsIuaOpeS4i+adpSIpfTwvZGl2PiR7b308L2Rpdj5gOiIifSxFdz1lPT5bZS5ob3RlbD9oZyhlLmhvdGVsKToiIixgPGRpdiBjbGFzcz0iZXJyIj4ke2wocmU9PT0iemgiJiYhS3QoU3RyaW5nKGUud2h5Pz8iIikpPyLor7flhYjpgInlpb3lhaXkvY/lkoznprvlupfml6XmnJ/vvIzlho3miormiL/pl7TliqDlhaXooYznqIvjgIIiOmUud2h5Pz8iV2hpY2ggbmlnaHRzPyBBIHJvb20gbmVlZHMgYSBjaGVjay1pbiBhbmQgYSBjaGVjay1vdXQgZGF0ZS4iKX08L2Rpdj5gLG5nKFN0cmluZyhlLmhvdGVsPy5pZD8/IiIpLGUuaG90ZWw/LnRvZGF5VGhlcmUpXS5qb2luKCIiKSxPdz1lPT5lLnZpZXc9PT0iaG90ZWxzInx8ZS52aWV3PT09ImhvdGVsInx8ZS52aWV3PT09Im5vLXJvb21zInx8ZS52aWV3PT09InRyaXAiPyIiOmUudmlldz09PSJjb21wYXJpc29uIj9jKGAkeyhlLmNvbHVtbnM/P1tdKS5sZW5ndGh9IHNpZGUgYnkgc2lkZWAsYCR7KGUuY29sdW1ucz8/W10pLmxlbmd0aH0g5a625a+55q+UYCk6ZS52aWV3PT09Iml0aW5lcmFyeSI/TnVtYmVyKGUuYm9va2VkKT4wP2MoYCR7ZS5ib29rZWR9LyR7ZS5wbGFubmVkfSBib29rZWRgLGDlt7LorqIgJHtlLmJvb2tlZH0vJHtlLnBsYW5uZWR9YCk6YyhgJHtlLmluVHJpcH0vJHtlLnBsYW5uZWR9IGluIHRoZSB0cmlwYCxg6KGM56iL5LitICR7ZS5pblRyaXB9LyR7ZS5wbGFubmVkfWApOmUudmlldz09PSJib29raW5ncyI/YyhgJHtlLmNvdW50Pz8wfSBib29raW5nJHtOdW1iZXIoZS5jb3VudCk9PT0xPyIiOiJzIn1gLGAke2UuY291bnQ/PzB9IOeslOmihOiuomApOiIiLFJ3PSgpPT57Y29uc3QgZT1WKCJtZW1iZXJjaGlwIik7bmU/KGUuaGlkZGVuPSExLGUudGV4dENvbnRlbnQ9YyhgJHtuZS50aWVyPy5uYW1lPz8iTWVtYmVyIn0gwrcgJHtNYXRoLnJvdW5kKChuZS50aWVyPy5kaXNjb3VudD8/MCkqMTAwKX0lIG9mZmAsYCR7bmUudGllcj8ubmFtZT8/IuS8muWRmCJ9IMK3IOS8mOaDoCAke01hdGgucm91bmQoKG5lLnRpZXI/LmRpc2NvdW50Pz8wKSoxMDApfSVgKSxlLnNldEF0dHJpYnV0ZSgiZGF0YS1hY3QiLCJtZW1iZXIiKSxlLnNldEF0dHJpYnV0ZSgidGl0bGUiLFtuZS5uYW1lLG5lLnByb2dyYW1tZV0uZmlsdGVyKHQ9PnR5cGVvZiB0PT0ic3RyaW5nIiYmdCkuam9pbigiIMK3ICIpKSk6KGUuaGlkZGVuPSFVbygic2lnbkluIil8fGV0PT09Im1lbWJlci1ub3QtZm91bmQiLGUudGV4dENvbnRlbnQ9YygiTWVtYmVyIHNpZ24gaW4iLCLkvJrlkZjnmbvlvZUiKSxlLnNldEF0dHJpYnV0ZSgiZGF0YS1hY3QiLCJhc2stc2lnbi1pbiIpLGUucmVtb3ZlQXR0cmlidXRlKCJ0aXRsZSIpKX0sTnc9KCk9Pntjb25zdCBlPVYoImhlYWR0cmlwIiksdD1Obj9TdDpTdHx8YXQubGVuZ3RoO2UuaGlkZGVuPXQ9PT0wfHxldD09PSJ0cmlwIixWKCJoZWFkdHJpcG4iKS50ZXh0Q29udGVudD1TdHJpbmcodCl9LG9pPSgpPT57Y29uc3QgZT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2kiKSx0PWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjbyIpLG49ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImd1Iik7Uz17Y2hlY2tJbjplPy52YWx1ZT8/Uy5jaGVja0luLGNoZWNrT3V0OnQ/LnZhbHVlPz9TLmNoZWNrT3V0LGd1ZXN0czpOdW1iZXIobj8udmFsdWU/P1MuZ3Vlc3RzKXx8Mn19LFNuPShlPXt9KT0+Uy5jaGVja0luJiZTLmNoZWNrT3V0P3tjaGVja0luOlMuY2hlY2tJbixjaGVja091dDpTLmNoZWNrT3V0LGd1ZXN0czpTLmd1ZXN0cywuLi5lfTplO2xldCB4aSxBbj0hMTtjb25zdCBkdT0oKT0+e2NsZWFyVGltZW91dCh4aSksQW49ITF9LHF0PShlPTAsdD0hMSk9PntqdCYmKGNsZWFyVGltZW91dCh4aSksQW49ITAseGk9c2V0VGltZW91dCgoKT0+e2lmKCFqdCl7QW49ITE7cmV0dXJufWlmKHZuKXtxdCgxNTAsdCk7cmV0dXJufUFuPSExLFUoImdldEhvdGVsIix7aG90ZWw6anQscm9vbXM6aiwuLi5TbigpfSx0P3tub3RlOnlffTp7fSkuY2F0Y2goKCk9Pk0oYygiQ291bGQgbm90IGxvYWQgdGhvc2UgbmlnaHRzLiIsIuayoeiDveWKoOi9vei/meS6m+aXpeacn+OAgiIpKSl9LGUpKX0sdHM9KCk9Pntmb3IoY29uc3QgZSBvZiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCJbZGF0YS1yb29tcy1uXSxbZGF0YS1saXN0LXJvb21zXSIpKXtjb25zdCB0PU51bWJlcihlLmdldEF0dHJpYnV0ZSgiZGF0YS1yb29tcy1uIik/P2UuZ2V0QXR0cmlidXRlKCJkYXRhLWxpc3Qtcm9vbXMiKSk7ZS5kaXNhYmxlZD10PDA/ajw9MTpqPj1NdH1mb3IoY29uc3QgZSBvZiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCJbZGF0YS1ndWVzdHMtbl0iKSl7Y29uc3QgdD1OdW1iZXIoZS5nZXRBdHRyaWJ1dGUoImRhdGEtZ3Vlc3RzLW4iKSk7ZS5kaXNhYmxlZD10PDA/Uy5ndWVzdHM8PTE6Uy5ndWVzdHM+PXlzfWZvcihjb25zdCBlIG9mIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIltkYXRhLWd1ZXN0cy1zaG93bl0iKSllLnRleHRDb250ZW50PVN0cmluZyhTLmd1ZXN0cyk7Zm9yKGNvbnN0IGUgb2YgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiW2RhdGEtcGFydHktd29yZHNdIikpZS50ZXh0Q29udGVudD1vZygpfSxNPWU9Pntmb3IoY29uc3QgdCBvZiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCIuc2FpZCIpKXQucmVtb3ZlKCk7VigiY29udGVudCIpLmluc2VydEFkamFjZW50SFRNTCgiYWZ0ZXJiZWdpbiIsYDxkaXYgY2xhc3M9ImVyciBzYWlkIiByb2xlPSJhbGVydCI+JHtsKGUpfTwvZGl2PmApfSxadz1lPT57Zm9yKGNvbnN0IG4gb2YgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiLmZpZWxkLWVyciwuZm9ybS1lcnIiKSluLnJlbW92ZSgpO2Zvcihjb25zdCBuIG9mIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ1thcmlhLWludmFsaWQ9InRydWUiXScpKW4ucmVtb3ZlQXR0cmlidXRlKCJhcmlhLWludmFsaWQiKTtpZighZS5sZW5ndGgpcmV0dXJuO2Zvcihjb25zdFtuLCxvXW9mIGUpe2NvbnN0IHM9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQobik7cyYmKHMuc2V0QXR0cmlidXRlKCJhcmlhLWludmFsaWQiLCJ0cnVlIikscy5zZXRBdHRyaWJ1dGUoImFyaWEtZGVzY3JpYmVkYnkiLGAke259LWVycmApLHMuaW5zZXJ0QWRqYWNlbnRIVE1MKCJhZnRlcmVuZCIsYDxzcGFuIGNsYXNzPSJmaWVsZC1lcnIiIGlkPSIke259LWVyciI+JHtQLmVycm9yfTxzcGFuPiR7bChvKX08L3NwYW4+PC9zcGFuPmApKX1jb25zdCB0PWUubWFwKChbLG5dKT0+bik7ZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI2d1ZXN0IFtkYXRhLWFjdD0iYm9vayJdJyk/Lmluc2VydEFkamFjZW50SFRNTCgiYmVmb3JlYmVnaW4iLGA8ZGl2IGNsYXNzPSJmb3JtLWVyciIgcm9sZT0iYWxlcnQiPiR7UC5lcnJvcn08c3Bhbj4ke2woZS5sZW5ndGg9PT0xP2MoYENoZWNrICR7dFswXX0gYmVmb3JlIGJvb2tpbmcuYCxg6aKE6K6i5YmN6K+35qOA5p+l77yaJHt0WzBdfeOAgmApOmMoYCR7ZS5sZW5ndGh9IHRoaW5ncyB0byBjaGVjayBiZWZvcmUgYm9va2luZzogJHt3aSh0KX0uYCxg6aKE6K6i5YmN5pyJICR7ZS5sZW5ndGh9IOmhuemcgOimgeajgOafpe+8miR7dC5qb2luKCLjgIEiKX3jgIJgKSl9PC9zcGFuPjwvZGl2PmApLGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGVbMF1bMF0pPy5mb2N1cygpfTtkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJpbnB1dCIsZT0+e2NvbnN0IHQ9ZS50YXJnZXQ7IXQ/LmNsb3Nlc3QoIiNndWVzdCIpfHx0LmdldEF0dHJpYnV0ZSgiYXJpYS1pbnZhbGlkIikhPT0idHJ1ZSJ8fHQudmFsdWUudHJpbSgpJiYodC5yZW1vdmVBdHRyaWJ1dGUoImFyaWEtaW52YWxpZCIpLHQucmVtb3ZlQXR0cmlidXRlKCJhcmlhLWRlc2NyaWJlZGJ5IiksZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoYCR7dC5pZH0tZXJyYCk/LnJlbW92ZSgpLGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNndWVzdCBbYXJpYS1pbnZhbGlkPSJ0cnVlIl0nKXx8ZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiI2d1ZXN0IC5mb3JtLWVyciIpPy5yZW1vdmUoKSl9KTtkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsZT0+e2NvbnN0IHQ9ZS50YXJnZXQ/LmNsb3Nlc3QoIltkYXRhLWhvdGVsXSxbZGF0YS1hY3RdLFtkYXRhLXBvbGljeV0sW2RhdGEtY2FuY2VsXSxbZGF0YS1jb25maXJtLWNhbmNlbF0sW2RhdGEtY29uZmlybS1jaGFuZ2VdLFtkYXRhLWV4dHJhc10sW2RhdGEtcm9vbXMtbl0sW2RhdGEtYXNrXSxbZGF0YS1ib29raW5nLWV4dHJhc10sW2RhdGEtYm9va2luZy1leHRyYV0sW2RhdGEtc3VnZ2VzdF0sW2RhdGEtcGxhY2VdLFtkYXRhLXBsYWNlLWFsbF0sW2RhdGEtc29ydF0sW2RhdGEtbGlzdC1yb29tc10sW2RhdGEtZmlsdGVyXSxbZGF0YS1wYW5lbF0sW2RhdGEtcmVnaW9uXSxbZGF0YS1ncm91cC1ob21lXSxbZGF0YS1jYWxdLFtkYXRhLWRheV0sW2RhdGEtY2FsLW5hdl0sW2RhdGEtY2FsLWNsb3NlXSxbZGF0YS1ob3VyLXN0YXJ0XSxbZGF0YS1hcnJpdmVdLFtkYXRhLXBhcnR5XSxbZGF0YS1ndWVzdHMtbl0sW2RhdGEtc3BsaXRdIik7aWYoIXQpcmV0dXJuO2NvbnN0IG49dC5nZXRBdHRyaWJ1dGUoImRhdGEtY2FsIik7aWYobiE9PW51bGwpe2NvbnN0W3ksel09bi5zcGxpdCgiOiIpO0tsW3ldJiZDXyh5LHo9PT0ib3V0Ij8ib3V0IjoiaW4iKTtyZXR1cm59Y29uc3Qgbz10LmdldEF0dHJpYnV0ZSgiZGF0YS1kYXkiKTtpZihvIT09bnVsbCl7UF8obyk7cmV0dXJufWNvbnN0IHM9dC5nZXRBdHRyaWJ1dGUoImRhdGEtY2FsLW5hdiIpO2lmKHMhPT1udWxsJiZPKXtPLm1vbnRoPXlpKE8ubW9udGgsTnVtYmVyKHMpKSx4dChPLnBhaXIsYFtkYXRhLWNhbC1uYXY9IiR7c30iXWApO3JldHVybn1pZih0Lmhhc0F0dHJpYnV0ZSgiZGF0YS1jYWwtY2xvc2UiKSYmTyl7Y29uc3R7cGFpcjp5fT1PO08uaW4/c2coKTooTz1udWxsLHh0KHkpKTtyZXR1cm59Y29uc3Qgcj10LmdldEF0dHJpYnV0ZSgiZGF0YS1hc2siKTtpZihyIT09bnVsbCl7Y29uc3QgeT10LmdldEF0dHJpYnV0ZSgiYXJpYS1wcmVzc2VkIikhPT0idHJ1ZSI7dC5zZXRBdHRyaWJ1dGUoImFyaWEtcHJlc3NlZCIsU3RyaW5nKHkpKTtjb25zdCB6PXJ3W3JdO3kmJnomJmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYC5hc2tbZGF0YS1hc2s9IiR7en0iXWApPy5zZXRBdHRyaWJ1dGUoImFyaWEtcHJlc3NlZCIsImZhbHNlIiksSWkoKTtyZXR1cm59Y29uc3QgaT10LmdldEF0dHJpYnV0ZSgiZGF0YS1zcGxpdCIpO2lmKGkhPT1udWxsKXtjb25zdFt5LHpdPWkuc3BsaXQoIjoiKS5tYXAoTnVtYmVyKTtvaSgpLGo9TWF0aC5taW4oTXQsTWF0aC5tYXgoMSx5fHwxKSksUy5ndWVzdHM9TWF0aC5taW4oeXMsTWF0aC5tYXgoMSx6fHwxKSksdHMoKSxxdCgwKTtyZXR1cm59aWYodC5oYXNBdHRyaWJ1dGUoImRhdGEtcGFydHkiKSl7TnQ9IU50O2Zvcihjb25zdCB5IG9mIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIltkYXRhLXBhcnR5XSIpKXkuc2V0QXR0cmlidXRlKCJhcmlhLWV4cGFuZGVkIixTdHJpbmcoTnQpKTtmb3IoY29uc3QgeSBvZiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCIucGFydHktcGFuZWwiKSl5LmhpZGRlbj0hTnQ7cmV0dXJufWNvbnN0IGE9dC5nZXRBdHRyaWJ1dGUoImRhdGEtZ3Vlc3RzLW4iKTtpZihhIT09bnVsbCl7dC5nZXRBdHRyaWJ1dGUoImRhdGEtb24iKT09PSJkYXRhLXJvb21zLW4iJiZvaSgpLFMuZ3Vlc3RzPU1hdGgubWluKHlzLE1hdGgubWF4KDEsUy5ndWVzdHMrTnVtYmVyKGEpKSksdHMoKSx0LmdldEF0dHJpYnV0ZSgiZGF0YS1vbiIpPT09ImRhdGEtbGlzdC1yb29tcyI/Q24oNDUwKTpqdCYmcXQoNDUwKTtyZXR1cm59Y29uc3QgZD10LmdldEF0dHJpYnV0ZSgiZGF0YS1saXN0LXJvb21zIik7aWYoZCE9PW51bGwpe2o9TWF0aC5taW4oTXQsTWF0aC5tYXgoMSxqK051bWJlcihkKSkpO2NvbnN0IHk9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImxybiIpO3kmJih5LnRleHRDb250ZW50PVN0cmluZyhqKSksdHMoKSxDbig0NTApO3JldHVybn1jb25zdCB1PXQuZ2V0QXR0cmlidXRlKCJkYXRhLXJvb21zLW4iKTtpZih1IT09bnVsbCl7b2koKSxqPU1hdGgubWluKE10LE1hdGgubWF4KDEsaitOdW1iZXIodSkpKTtjb25zdCB5PWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJybiIpO3kmJih5LnRleHRDb250ZW50PVN0cmluZyhqKSksdHMoKTtjb25zdCB6PWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJuaWdodHMiKTt6JiYoei50ZXh0Q29udGVudD1yZygpKSxxdCg0NTApO3JldHVybn1jb25zdCBwPXQuZ2V0QXR0cmlidXRlKCJkYXRhLWFycml2ZSIpO2lmKHAhPT1udWxsKXtjb25zdCB5PXQuZ2V0QXR0cmlidXRlKCJhcmlhLXByZXNzZWQiKSE9PSJ0cnVlIjtmb3IoY29uc3QgZWUgb2YgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiW2RhdGEtYXJyaXZlXSIpKWVlLnNldEF0dHJpYnV0ZSgiYXJpYS1wcmVzc2VkIixTdHJpbmcoeSYmZWU9PT10KSk7Y29uc3Qgej1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZ3RpbWUiKTt6JiYoei52YWx1ZT15P3A6IiIpLElpKCk7cmV0dXJufWNvbnN0IGg9dC5nZXRBdHRyaWJ1dGUoImRhdGEtaG91ci1zdGFydCIpO2lmKGghPT1udWxsKXtzdS5zZXQodC5nZXRBdHRyaWJ1dGUoImRhdGEtcm9vbSIpPz8iIixoKSxDJiZfZShDKTtyZXR1cm59Y29uc3QgYj10LmdldEF0dHJpYnV0ZSgiZGF0YS1hZGQtcm9vbSIpO2lmKGIhPT1udWxsJiZ0Lmhhc0F0dHJpYnV0ZSgiZGF0YS1zdGFydCIpKXtVKCJhZGRUb1RyaXAiLHtob3RlbDp0LmdldEF0dHJpYnV0ZSgiZGF0YS1ob3RlbCIpPz8iIixyb29tOmIsc3RhcnRUaW1lOnQuZ2V0QXR0cmlidXRlKCJkYXRhLXN0YXJ0Iik/PyIiLHJvb21zOk51bWJlcih0LmdldEF0dHJpYnV0ZSgiZGF0YS1uIik/PzEpfHwxLGd1ZXN0czpTLmd1ZXN0c30pLmNhdGNoKCgpPT5NKGMoIkNvdWxkIG5vdCBjaGFuZ2UgdGhlIHRyaXAuIiwi5rKh6IO95pu05paw6KGM56iL44CCIikpKTtyZXR1cm59aWYoYiE9PW51bGwpe2NvbnN0IHk9dC5nZXRBdHRyaWJ1dGUoImRhdGEtaG90ZWwiKT8/IiIsej10LmNsYXNzTGlzdC5jb250YWlucygiYWRkIikmJiF0Lmhhc0F0dHJpYnV0ZSgiZGF0YS1jaSIpP2o6TnVtYmVyKHQuZ2V0QXR0cmlidXRlKCJkYXRhLW4iKT8/MSksZWU9dC5oYXNBdHRyaWJ1dGUoImRhdGEtY2kiKT97Y2hlY2tJbjp0LmdldEF0dHJpYnV0ZSgiZGF0YS1jaSIpPz8iIixjaGVja091dDp0LmdldEF0dHJpYnV0ZSgiZGF0YS1jbyIpPz8iIixndWVzdHM6TnVtYmVyKHQuZ2V0QXR0cmlidXRlKCJkYXRhLWd1Iik/PzIpfTpTbigpO1UoImFkZFRvVHJpcCIse2hvdGVsOnkscm9vbTpiLHJvb21zOnosLi4uZWV9LHtzdGF5OnQuaGFzQXR0cmlidXRlKCJkYXRhLWtlZXAiKXx8ISF0LmNsb3Nlc3QoIi5yb29tIikmJiF0LmNsYXNzTGlzdC5jb250YWlucygiYWRkIil9KS5jYXRjaCgoKT0+TShjKCJDb3VsZCBub3QgY2hhbmdlIHRoZSB0cmlwLiIsIuayoeiDveabtOaWsOihjOeoi+OAgiIpKSk7cmV0dXJufWNvbnN0ICQ9dC5nZXRBdHRyaWJ1dGUoImRhdGEtYWRkLWV4dHJhIik7aWYoJCE9PW51bGwpe2NvbnN0IHk9dC5nZXRBdHRyaWJ1dGUoImRhdGEtZGF5Iik7VSgiYWRkVG9UcmlwIix7aG90ZWw6dC5nZXRBdHRyaWJ1dGUoImRhdGEtaG90ZWwiKT8/IiIsZXh0cmE6JCxxdWFudGl0eTpOdW1iZXIodC5nZXRBdHRyaWJ1dGUoImRhdGEtbiIpPz8xKSwuLi55P3tkYXk6eX06e319KS5jYXRjaCgoKT0+TShjKCJDb3VsZCBub3QgY2hhbmdlIHRoZSB0cmlwLiIsIuayoeiDveabtOaWsOihjOeoi+OAgiIpKSk7cmV0dXJufWNvbnN0IGs9dC5nZXRBdHRyaWJ1dGUoImRhdGEtcGxhY2UiKTtpZihrIT09bnVsbCl7Y29uc3QgeT1DPy5hc2s/LnNvcnQsej1DPy52aWV3PT09ImhvdGVscyI/Qz8uYXNrPy5xdWVyeTp2b2lkIDA7QWkoKTtjb25zdCBlZT1DPy52aWV3PT09ImRlc3RpbmF0aW9ucyJ8fCEhQz8uc3RheT8uY2hlY2tJbjtVKCJsaXN0SG90ZWxzIix7Li4uaz97Y2l0eTprfTp7fSwuLi55P3tzb3J0Onl9Ont9LC4uLmsmJno/e3F1ZXJ5Onp9Ont9LC4uLkM/LnZpZXc9PT0iaG90ZWxzIj9ycyhDPy5hc2spOnt9LC4uLmVlP1p0KCk6e319KS5jYXRjaCgoKT0+TShjKCJDb3VsZCBub3QgbG9hZCB0aG9zZSBob3RlbHMuIiwi5rKh6IO95Yqg6L296L+Z5Lqb6YWS5bqX44CCIikpKTtyZXR1cm59Y29uc3QgVD10LmdldEF0dHJpYnV0ZSgiZGF0YS1ncm91cC1ob21lIik7aWYoVCl7VSgibGlzdEhvdGVscyIse2FsbDohMCxncm91cDpULC4uLlp0KCl9KS5jYXRjaCgoKT0+TShjKCJDb3VsZCBub3QgbG9hZCB0aG9zZSBob3RlbHMuIiwi5rKh6IO95Yqg6L296L+Z5Lqb6YWS5bqX44CCIikpKTtyZXR1cm59Y29uc3QgXz10LmdldEF0dHJpYnV0ZSgiZGF0YS1maWx0ZXIiKTtpZihfIT09bnVsbCl7Y29uc3QgeT1DPy5hc2s/P3t9LHo9cnMoeSk7aWYoXy5zdGFydHNXaXRoKCJncm91cDoiKSl7Y29uc3QgcGU9Xy5zbGljZSg2KTt6Lmdyb3VwPXouZ3JvdXA9PT1wZT92b2lkIDA6cGV9ZWxzZSBpZihfLnN0YXJ0c1dpdGgoImJyYW5kOiIpKXtjb25zdCBwZT1fLnNsaWNlKDYpO3ouYnJhbmQ9ei5icmFuZD09PXBlP3ZvaWQgMDpwZX1lbHNlIGlmKF8uc3RhcnRzV2l0aCgiZmFjaWxpdHk6Iikpe2NvbnN0IHBlPV8uc2xpY2UoOSkscHQ9ei5mYWNpbGl0aWVzPz9bXTt6LmZhY2lsaXRpZXM9cHQuaW5jbHVkZXMocGUpP3B0LmZpbHRlcihodD0+aHQhPT1wZSk6Wy4uLnB0LHBlXX1lbHNlKF89PT0iZnJlZUNhbmNlbGxhdGlvbiJ8fF89PT0iYnJlYWtmYXN0IikmJih6W19dPSF6W19dKTtjb25zdCBlZT1ycyh6KTtVKCJsaXN0SG90ZWxzIix7Li4uZWQoeSksLi4uZWV9KS5jYXRjaCgoKT0+TShjKCJDb3VsZCBub3QgZmlsdGVyIHRoZSBsaXN0LiIsIuayoeiDveetm+mAieWIl+ihqOOAgiIpKSk7cmV0dXJufWNvbnN0IHg9dC5nZXRBdHRyaWJ1dGUoImRhdGEtc29ydCIpO2lmKHghPT1udWxsKXtIZT1sZztjb25zdHtzb3J0OnksLi4uen09Qz8uYXNrPz97fTtVKCJsaXN0SG90ZWxzIix7Li4ueiwuLi54IT09Imdyb3VwIj97c29ydDp4fTp7fX0pLmNhdGNoKCgpPT5NKGMoIkNvdWxkIG5vdCByZW9yZGVyIHRoZSBsaXN0LiIsIuayoeiDvemHjeaWsOaOkuW6j+OAgiIpKSk7cmV0dXJufWNvbnN0IEE9dC5nZXRBdHRyaWJ1dGUoImRhdGEtcGxhY2UtYWxsIik7aWYoQSE9PW51bGwpe1UoImxpc3RIb3RlbHMiLHtjaXR5OkEsYWxsOiEwLC4uLlp0KCl9KS5jYXRjaCgoKT0+TShjKCJDb3VsZCBub3QgbG9hZCB0aG9zZSBob3RlbHMuIiwi5rKh6IO95Yqg6L296L+Z5Lqb6YWS5bqX44CCIikpKTtyZXR1cm59Y29uc3QgRj10LmdldEF0dHJpYnV0ZSgiZGF0YS1ib29raW5nLWV4dHJhcyIpO2lmKEYhPT1udWxsKXtVKCJsaXN0RXh0cmFzIix0dChGKSkuY2F0Y2goKCk9Pk0oYygiQ291bGQgbm90IGxvYWQgdGhlIGFkZC1vbnMuIiwi5rKh6IO95Yqg6L296ZmE5Yqg5pyN5Yqh44CCIikpKTtyZXR1cm59Y29uc3QgYWU9dC5nZXRBdHRyaWJ1dGUoImRhdGEtYm9va2luZy1leHRyYSIpO2lmKGFlIT09bnVsbCl7VSgicHJldmlld0NoYW5nZSIsey4uLnR0KHQuZ2V0QXR0cmlidXRlKCJkYXRhLWJvb2tpbmciKT8/IiIpLGV4dHJhOmFlLHF1YW50aXR5Ok51bWJlcih0LmdldEF0dHJpYnV0ZSgiZGF0YS1uIik/PzEpfSkuY2F0Y2goKCk9Pk0oYygiQ291bGQgbm90IHdvcmsgb3V0IHRoYXQgY2hhbmdlLiIsIuayoeiDveiuoeeul+i/measoeS/ruaUueOAgiIpKSk7cmV0dXJufWNvbnN0IHRlPXQuZ2V0QXR0cmlidXRlKCJkYXRhLWV4dHJhcyIpO2lmKHRlIT09bnVsbCl7VSgibGlzdEV4dHJhcyIse2hvdGVsOnRlLC4uLlNuKCl9KS5jYXRjaCgoKT0+TShjKCJDb3VsZCBub3QgbG9hZCB0aGUgYWRkLW9ucy4iLCLmsqHog73liqDovb3pmYTliqDmnI3liqHjgIIiKSkpO3JldHVybn1jb25zdCBIPXQuZ2V0QXR0cmlidXRlKCJkYXRhLXBvbGljeSIpO2lmKEghPT1udWxsKXtVKCJwb2xpY2llcyIse2hvdGVsOnQuZ2V0QXR0cmlidXRlKCJkYXRhLWhvdGVsIik/PyIiLHRvcGljOkh9KS5jYXRjaCgoKT0+TShjKCJDb3VsZCBub3QgbG9hZCB0aGF0IHBvbGljeS4iLCLmsqHog73liqDovb3ov5nmnaHmlL/nrZbjgIIiKSkpO3JldHVybn1jb25zdCB6ZT10LmdldEF0dHJpYnV0ZSgiZGF0YS1jYW5jZWwiKTtpZih6ZSE9PW51bGwpe1UoInByZXZpZXdDYW5jZWxsYXRpb24iLHR0KHplKSkuY2F0Y2goKCk9Pk0oYygiQ291bGQgbm90IHdvcmsgb3V0IHRoZSBmZWUuIiwi5rKh6IO96K6h566X5Y+W5raI6LS555So44CCIikpKTtyZXR1cm59Y29uc3QgRXQ9dC5nZXRBdHRyaWJ1dGUoImRhdGEtY29uZmlybS1jYW5jZWwiKTtpZihFdCE9PW51bGwpe1UoImNhbmNlbEJvb2tpbmciLHsuLi50dChFdCksY29uZmlybWVkOiEwfSkuY2F0Y2goKCk9Pk0oYygiQ291bGQgbm90IGNhbmNlbCB0aGF0IGJvb2tpbmcuIiwi5rKh6IO95Y+W5raI6L+Z56yU6aKE6K6i44CCIikpKTtyZXR1cm59Y29uc3QgJG49dC5nZXRBdHRyaWJ1dGUoImRhdGEtY29uZmlybS1jaGFuZ2UiKTtpZigkbiE9PW51bGwpe2NvbnN0IHk9Qz8udG8/P3t9LHo9Qz8uZnJvbT8/e30sZWU9Qz8uYWRkT24scGU9eS5jaGVja0luJiYoeS5jaGVja0luIT09ei5jaGVja0lufHx5LmNoZWNrT3V0IT09ei5jaGVja091dCk7VSgiY2hhbmdlQm9va2luZyIsey4uLnR0KCRuKSxjb25maXJtZWQ6ITAsLi4ucGU/e2NoZWNrSW46eS5jaGVja0luLGNoZWNrT3V0OnkuY2hlY2tPdXR9Ont9LC4uLmVlPy5pZD97ZXh0cmE6ZWUuaWQscXVhbnRpdHk6TnVtYmVyKGVlLnRvKX06e30sLi4ueS5yb29tcyE9PXZvaWQgMCYmTnVtYmVyKHkucm9vbXMpIT09TnVtYmVyKHoucm9vbXMpP3tyb29tczpOdW1iZXIoeS5yb29tcyl9Ont9LC4uLnkucm9vbU5hbWUmJnkucm9vbU5hbWUhPT16LnJvb21OYW1lP3tyb29tOnkucm9vbU5hbWV9Ont9fSkuY2F0Y2goKCk9Pk0oYygiQ291bGQgbm90IGNoYW5nZSB0aGF0IGJvb2tpbmcuIiwi5rKh6IO95L+u5pS56L+Z56yU6aKE6K6i44CCIikpKTtyZXR1cm59Y29uc3QgQj10LmdldEF0dHJpYnV0ZSgiZGF0YS1hY3QiKTtpZihCPT09ImJhY2siKXt1ZCgpO3JldHVybn1jb25zdCB5bj1CPT09ImJvb2tpbmdzIj8iYm9va2luZ3MiOnQuaGFzQXR0cmlidXRlKCJkYXRhLWhvdGVsIikmJiF0Lmhhc0F0dHJpYnV0ZSgiZGF0YS1jaSIpP2Bob3RlbDoke3QuZ2V0QXR0cmlidXRlKCJkYXRhLWhvdGVsIil9YDoiIjtpZih5biYmYmUubGVuZ3RoJiZ3dChiZS5hdCgtMSk/LnBheWxvYWQpPT09eW4pe3VkKCk7cmV0dXJufWNvbnN0IFdvPXQuZ2V0QXR0cmlidXRlKCJkYXRhLXJlZ2lvbiIpO2lmKFdvIT09bnVsbCl7Y29uc3QgeT10LmdldEF0dHJpYnV0ZSgiYXJpYS1leHBhbmRlZCIpIT09InRydWUiO2Zvcihjb25zdCB6IG9mIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIltkYXRhLXJlZ2lvbl0iKSl6LnNldEF0dHJpYnV0ZSgiYXJpYS1leHBhbmRlZCIsU3RyaW5nKHkmJno9PT10KSk7Zm9yKGNvbnN0IHogb2YgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiW2RhdGEtcmVnaW9uLWJvZHldIikpei5oaWRkZW49IXl8fHouZ2V0QXR0cmlidXRlKCJkYXRhLXJlZ2lvbi1ib2R5IikhPT1XbztyZXR1cm59aWYoQj09PSJtb3JlLWNvdW50cmllcyIpe2Zvcihjb25zdCB5IG9mKHQuY2xvc2VzdCgiW2RhdGEtcmVnaW9uLWJvZHldIik/P2RvY3VtZW50KS5xdWVyeVNlbGVjdG9yQWxsKCIuZGVzdFtoaWRkZW5dIikpeS5oaWRkZW49ITE7dC5jbG9zZXN0KCIucGxhY2VzIik/LnJlbW92ZSgpO3JldHVybn1pZihCPT09Im1vcmUtcGxhY2VzIil7Zm9yKGNvbnN0IHkgb2YodC5jbG9zZXN0KCIucGxhY2VzIik/P2RvY3VtZW50KS5xdWVyeVNlbGVjdG9yQWxsKCIuY2hpcC5wbGFjZVtoaWRkZW5dIikpeS5oaWRkZW49ITE7dC5yZW1vdmUoKTtyZXR1cm59Y29uc3Qga249dC5nZXRBdHRyaWJ1dGUoImRhdGEtcGFuZWwiKTtpZihrbiE9PW51bGwpe0hlPUhlPT09a24/IiI6a247Zm9yKGNvbnN0IHkgb2YgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiW2RhdGEtcGFuZWwtYm9keV0iKSl5LmhpZGRlbj15LmdldEF0dHJpYnV0ZSgiZGF0YS1wYW5lbC1ib2R5IikhPT1IZTtmb3IoY29uc3QgeSBvZiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCJbZGF0YS1wYW5lbF0iKSl5LnNldEF0dHJpYnV0ZSgiYXJpYS1leHBhbmRlZCIsU3RyaW5nKHkuZ2V0QXR0cmlidXRlKCJkYXRhLXBhbmVsIik9PT1IZSkpO3JldHVybn1pZihCPT09ImNsZWFyLWZpbHRlcnMiKXtVKCJsaXN0SG90ZWxzIixlZChDPy5hc2spKS5jYXRjaCgoKT0+TShjKCJDb3VsZCBub3QgY2xlYXIgdGhlIGZpbHRlcnMuIiwi5rKh6IO95riF6Zmk562b6YCJ44CCIikpKTtyZXR1cm59aWYoQj09PSJhbGwtaG90ZWxzIil7QWkoKSxVKCJsaXN0SG90ZWxzIix7YWxsOiEwLC4uLlp0KCl9KS5jYXRjaCgoKT0+TShjKCJDb3VsZCBub3QgbG9hZCB0aGUgaG90ZWxzLiIsIuayoeiDveWKoOi9vemFkuW6l+OAgiIpKSk7cmV0dXJufWlmKEI9PT0icHJpY2UtbGlzdCIpe0NuKDApO3JldHVybn1pZihCPT09ImZpbmQtYm9va2luZyIpe2NvbnN0IHk9e3ZpZXc6ImZpbmQtYm9va2luZyJ9O29zKHkpLF9lKHkpLGd0KCksZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImZjb2RlIik/LmZvY3VzKCk7cmV0dXJufWlmKEI9PT0ibG9va3VwLWJvb2tpbmciKXtjb25zdCB5PWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJmY29kZSIpPy52YWx1ZS50cmltKCk/PyIiLHo9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImZtYWlsIik/LnZhbHVlLnRyaW0oKT8/IiI7aWYoIXl8fCF6LmluY2x1ZGVzKCJAIikpe00oYygiQm90aCB0aGUgY29uZmlybWF0aW9uIGNvZGUgYW5kIHRoZSBlbWFpbCB0aGUgYm9va2luZyB3YXMgbWFkZSB3aXRoLCBwbGVhc2UuIiwi6K+35ZCM5pe25aGr5YaZ56Gu6K6k56CB5ZKM6aKE6K6i5pe255So55qE6YKu566x44CCIikpO3JldHVybn1VKCJsaXN0Qm9va2luZ3MiLHtib29raW5nOnksZW1haWw6en0pLmNhdGNoKCgpPT5NKGMoIkNvdWxkIG5vdCBsb29rIHRoYXQgdXAuIiwi5rKh6IO95p+l5Yiw44CCIikpKTtyZXR1cm59aWYoQj09PSJmaW5kIil7a2coKTtyZXR1cm59aWYoQj09PSJwYWdlLW5leHQifHxCPT09InBhZ2UtcHJldiIpe2NvbnN0IHk9QztpZigheXx8eS52aWV3IT09ImhvdGVscyIpcmV0dXJuO2NvbnN0IHo9V3IoKSxlZT1OdW1iZXIoeS5vZmZzZXQ/PzApLHBlPU1hdGgubWluKHosKHkuaG90ZWxzPz9bXSkubGVuZ3RoKTtVKCJsaXN0SG90ZWxzIix7Li4ueS5hc2s/P3t9LG9mZnNldDpCPT09InBhZ2UtbmV4dCI/ZWUrcGU6TWF0aC5tYXgoMCxlZS16KSxsaW1pdDp6fSkudGhlbihndCkuY2F0Y2goKCk9Pk0oYygiQ291bGQgbm90IGxvYWQgdGhvc2UgaG90ZWxzLiIsIuayoeiDveWKoOi9vei/meS6m+mFkuW6l+OAgiIpKSk7cmV0dXJufWlmKEI9PT0iZnVsbHNjcmVlbiIpe01lLnJlcXVlc3REaXNwbGF5TW9kZSh7bW9kZToiZnVsbHNjcmVlbiJ9KS50aGVuKHk9Pntabj1TdHJpbmcoeT8ubW9kZT8/Wm4pO2NvbnN0IHo9QztpZigheilyZXR1cm47Y29uc3QgZWU9TnVtYmVyKHoudG90YWw/PzApO01uKCkmJnoudmlldz09PSJob3RlbHMiJiYoTnVtYmVyKHoub2Zmc2V0Pz8wKT4wfHwoei5ob3RlbHM/P1tdKS5sZW5ndGg8TWF0aC5taW4oMTIsZWUpKT9VKCJsaXN0SG90ZWxzIix7Li4uei5hc2s/P3t9LGxpbWl0OjEyfSkuY2F0Y2goKCk9Pk0oYygiQ291bGQgbm90IGxvYWQgdGhlIGhvdGVscy4iLCLmsqHog73liqDovb3phZLlupfjgIIiKSkpOl9lKHopfSkuY2F0Y2goKCk9Pk0oYygiVGhpcyBhcHAgY2Fubm90IG9wZW4gZnVsbCBzY3JlZW4gaGVyZS4iLCLov5nph4zml6Dms5XlhajlsY/miZPlvIDjgIIiKSkpO3JldHVybn1pZihCPT09Im1vcmUtaG90ZWxzIil7Y29uc3QgeT1DO2lmKCF5fHx5LnZpZXchPT0iaG90ZWxzIilyZXR1cm47VSgibGlzdEhvdGVscyIsey4uLnkuYXNrPz97fSxvZmZzZXQ6TnVtYmVyKHkub2Zmc2V0Pz8wKSsoeS5ob3RlbHM/P1tdKS5sZW5ndGgsbGltaXQ6MTJ9LHtmb2xkOno9Pno/LnZpZXc9PT0iaG90ZWxzIj97Li4ueixob3RlbHM6Wy4uLnkuaG90ZWxzPz9bXSwuLi56LmhvdGVscz8/W11dLHNob3duOih5LmhvdGVscz8/W10pLmxlbmd0aCsoei5ob3RlbHM/P1tdKS5sZW5ndGgsb2Zmc2V0Ok51bWJlcih5Lm9mZnNldD8/MCkscGxhY2VzOnkucGxhY2VzLC4uLnkud2lkZW5lZD97d2lkZW5lZDp5LndpZGVuZWR9Ont9fTp6fSkuY2F0Y2goKCk9Pk0oYygiQ291bGQgbm90IGxvYWQgbW9yZSBob3RlbHMuIiwi5rKh6IO95Yqg6L295pu05aSa6YWS5bqX44CCIikpKTtyZXR1cm59aWYoQj09PSJob21lIil7VSgibGlzdEhvdGVscyIse30pLmNhdGNoKCgpPT5NKGMoIkNvdWxkIG5vdCBsb2FkIHRoZSBob3RlbHMuIiwi5rKh6IO95Yqg6L296YWS5bqX44CCIikpKTtyZXR1cm59aWYoKEI9PT0ibWVtYmVyInx8Qj09PSJmaW5kLWJvb2tpbmcifHxCPT09ImFzay1zaWduLWluIikmJnZuKXJldHVybjtpZihCPT09Im1lbWJlciIpe2lmKCFuZSlyZXR1cm47Y29uc3QgeT17dmlldzoibWVtYmVyIixtZW1iZXI6bmV9O29zKHkpLF9lKHkpLGd0KCk7cmV0dXJufWlmKEI9PT0iYXNrLXNpZ24taW4iKXtjb25zdCB5PWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzaWduaW4iKTtpZih5KXkuaGlkZGVuPSExO2Vsc2V7Y29uc3Qgej17dmlldzoibWVtYmVyLXNpZ24taW4ifTtvcyh6KSxfZSh6KSxndCgpfWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJtbnVtIik/LmZvY3VzKCk7cmV0dXJufWlmKEI9PT0ic2lnbi1pbiIpe2NvbnN0IHk9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm1udW0iKT8udmFsdWUudHJpbSgpPz8iIix6PWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJtc3VyIik/LnZhbHVlLnRyaW0oKT8/IiI7aWYoIXl8fCF6KXtNKGMoIkJvdGggdGhlIG1lbWJlcnNoaXAgbnVtYmVyIGFuZCB0aGUgc3VybmFtZSBvbiBpdCwgcGxlYXNlLiIsIuivt+WQjOaXtuWhq+WGmeS8muWRmOWPt+WSjOWNoeS4iueahOWnk+awj+OAgiIpKTtyZXR1cm59VSgic2lnbkluIix7bnVtYmVyOnksc3VybmFtZTp6fSkuY2F0Y2goKCk9Pk0oYygiQ291bGQgbm90IHNpZ24gaW4uIiwi5rKh6IO955m75b2V44CCIikpKTtyZXR1cm59aWYoQj09PSJmb3JnZXQtcHJlZnMiKXtVKCJmb3JnZXRQcmVmZXJlbmNlcyIse30pLmNhdGNoKCgpPT5NKGMoIkNvdWxkIG5vdCBmb3JnZXQgdGhlbS4iLCLmsqHog73muIXpmaTjgIIiKSkpO3JldHVybn1jb25zdCBwdT10LmdldEF0dHJpYnV0ZSgiZGF0YS1zdWdnZXN0Iik7aWYocHUhPT1udWxsKXtjb25zdCB5PShDPy5zdWdnZXN0aW9ucz8/W10pW051bWJlcihwdSldO3k/LmFzaz8udG9vbD9VKFN0cmluZyh5LmFzay50b29sKSx5LmFzay5hcmdzPz97fSkuY2F0Y2goKCk9Pk0oYygiQ291bGQgbm90IGRvIHRoYXQganVzdCBub3cuIiwi5pqC5pe25rKh6IO95a6M5oiQ44CCIikpKTpBcnJheS5pc0FycmF5KHk/LmFza3MpJiZ5LmFza3MubGVuZ3RoPyhhc3luYygpPT57Zm9yKGNvbnN0W3osZWVdb2YgeS5hc2tzLmVudHJpZXMoKSlhd2FpdCBVKFN0cmluZyhlZS50b29sKSxlZS5hcmdzPz97fSx7cHVzaDp6PT09MH0pfSkoKS5jYXRjaCgoKT0+TShjKCJDb3VsZCBub3QgcHV0IGFsbCBvZiB0aGVtIGluIHRoZSB0cmlwIGp1c3Qgbm93LiIsIuaaguaXtuayoeiDveWFqOmDqOWKoOWFpeihjOeoi+OAgiIpKSk6eT8uc2F5JiZNZS5zZW5kTWVzc2FnZSh7cm9sZToidXNlciIsY29udGVudDpbe3R5cGU6InRleHQiLHRleHQ6U3RyaW5nKHkuc2F5KX1dfSkuY2F0Y2goKCk9Pk0oYygiQ291bGQgbm90IHNlbmQgdGhhdCB0byB0aGUgY2hhdC4iLCLmsqHog73lj5HpgIHliLDlr7nor53jgIIiKSkpO3JldHVybn1pZihCPT09InNpZ24tb3V0Iil7bmU9bnVsbCxVKCJzaWduT3V0Iix7fSkuY2F0Y2goKCk9Pk0oYygiQ291bGQgbm90IHNpZ24gb3V0LiIsIuayoeiDvemAgOWHuueZu+W9leOAgiIpKSk7cmV0dXJufWlmKEI9PT0iYXNrLWJvb2siKXtjb25zdCB5PXQuZ2V0QXR0cmlidXRlKCJkYXRhLWdyb3VwIik7eSYmeSE9PW50JiYobnQ9eSxfZShDKSk7Y29uc3Qgej1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZ3Vlc3QiKTt6JiYoei5oaWRkZW49ITEpLGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJnbmFtZSIpPy5mb2N1cygpO3JldHVybn1pZihCPT09ImJvb2siKXtjb25zdHtwaG9uZVJlcXVpcmVkOnl9PWl1KCksej1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZ25hbWUiKT8udmFsdWUudHJpbSgpPz8iIixlZT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZ21haWwiKT8udmFsdWUudHJpbSgpPz8iIixwZT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZ3Bob25lIik/LnZhbHVlLnRyaW0oKT8/IiIscHQ9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImdub3RlIik/LnZhbHVlLnRyaW0oKT8/IiIsaHQ9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImd0aW1lIik/LnZhbHVlLnRyaW0oKT8/IiIsX249Wy4uLmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ1tkYXRhLWFza11bYXJpYS1wcmVzc2VkPSJ0cnVlIl0nKV0ubWFwKFRnPT5UZy5kYXRhc2V0LmFzaz8/IiIpOyhodD9odD49IjIyOjAwIjoobmU/LnByZWZlcmVuY2VzPz9bXSkuaW5jbHVkZXMoImxhdGUtYXJyaXZhbCIpKSYmIV9uLmluY2x1ZGVzKCJsYXRlLWFycml2YWwiKSYmX24ucHVzaCgibGF0ZS1hcnJpdmFsIik7Y29uc3QgbXU9ISFkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZ3JlbWVtYmVyIik/LmNoZWNrZWQ7T2U9e25hbWU6eixlbWFpbDplZSwuLi55P3twaG9uZTpwZX06e30sbm90ZXM6cHQsYXJyaXZpbmdBdDpodCxyZXF1ZXN0czpfbixyZW1lbWJlcjptdX07Y29uc3Qgd249W107aWYoenx8d24ucHVzaChbImduYW1lIixjKCJmdWxsIG5hbWUiLCLlp5PlkI0iKSxjKCJSZXF1aXJlZDogdGhlIGd1ZXN0J3MgZnVsbCBuYW1lLCBhcyBvbiB0aGVpciBJRC4iLCLlv4XloavvvJrlhaXkvY/kurrlp5PlkI3vvIzkuI7or4Hku7bkuIDoh7TjgIIiKV0pLGVlLmluY2x1ZGVzKCJAIil8fHduLnB1c2goWyJnbWFpbCIsYygiZW1haWwiLCLpgq7nrrEiKSxlZT9jKCJUaGF0IGVtYWlsIGhhcyBubyDigJxA4oCdIGluIGl0IOKAlCB0aGUgY29uZmlybWF0aW9uIG5lZWRzIGFuIGFkZHJlc3MgaXQgY2FuIHJlYWNoLiIsIumCrueusemHjOayoeacieKAnEDigJ3vvIzor7floavlhpnog73mlLbliLDnoa7orqTkv6Hmga/nmoTlnLDlnYDjgIIiKTpjKCJSZXF1aXJlZDogeW91ciBlbWFpbC4gV2l0aCBpdCBhbmQgdGhlIGNvbmZpcm1hdGlvbiBjb2RlLCB5b3UgY2FuIGZpbmQgdGhpcyBib29raW5nIGFnYWluIGZyb20gYW55IGNoYXQuIiwi5b+F5aGr77ya5o6l5pS256Gu6K6k5L+h5oGv55qE6YKu566x77yM5Yet5a6D5ZKM56Gu6K6k56CB5om+5Zue6aKE6K6i44CCIildKSx5JiZwZS5yZXBsYWNlKC9cRC9nLCIiKS5sZW5ndGg8NiYmd24ucHVzaChbImdwaG9uZSIsYygicGhvbmUiLCLmiYvmnLrlj7ciKSxjKCJSZXF1aXJlZDogYSBwaG9uZSBudW1iZXIsIHNvIHRoZSBob3RlbCBjYW4gcmVhY2ggeW91LiIsIuW/heWhq++8muaJi+acuuWPt++8jOaWueS+v+mFkuW6l+iBlOezu+S9oOOAgiIpXSksWncod24pLHduLmxlbmd0aClyZXR1cm47VSgicmVxdWVzdEJvb2tpbmciLHtuYW1lOnosZW1haWw6ZWUsLi4ueT97cGhvbmU6cGV9Ont9LC4uLnllJiZudD97Z3JvdXA6bnR9Ont9LC4uLnB0P3tub3RlczpwdH06e30sLi4uaHQ/e2Fycml2aW5nQXQ6aHR9Ont9LC4uLl9uLmxlbmd0aD97cmVxdWVzdHM6X259Ont9LC4uLm11P3tyZW1lbWJlclJlcXVlc3RzOiEwfTp7fX0pLmNhdGNoKCgpPT5NKGMoIkNvdWxkIG5vdCBhc2sgZm9yIHRob3NlIHJvb21zLiIsIuayoeiDveaPkOS6pOmihOiuouOAgiIpKSk7cmV0dXJufWlmKEI9PT0icGF5Iil7Y29uc3QgeT10LmdldEF0dHJpYnV0ZSgiZGF0YS11cmwiKT8/IiIsej10LmdldEF0dHJpYnV0ZSgiZGF0YS1jb2RlIik/PyIiO2lmKCF5KXJldHVybjtNZS5vcGVuTGluayh7dXJsOnl9KS5jYXRjaCgoKT0+TShjKCJDb3VsZCBub3Qgb3BlbiB0aGUgcGF5bWVudCBwYWdlLiIsIuayoeiDveaJk+W8gOS7mOasvumhteOAgiIpKSk7Y29uc3QgZWU9RGF0ZS5wYXJzZSh0LmdldEF0dHJpYnV0ZSgiZGF0YS11bnRpbCIpPz8iIil8fERhdGUubm93KCkrMTUqNmU0O2F1KCksd2U9e2NvZGU6eix1bnRpbDplZX0sd2UudGltZXI9c2V0VGltZW91dCgoKT0+Y3UoeiksemkpO3JldHVybn1pZihCPT09InBheS1jaGVjayIpe2NvbnN0IHk9dC5nZXRBdHRyaWJ1dGUoImRhdGEtY29kZSIpPz8iIjt5JiZ2Zyh5KTtyZXR1cm59aWYoQj09PSJib29raW5ncyIpe1UoImxpc3RCb29raW5ncyIse30pLmNhdGNoKCgpPT5NKGMoIkNvdWxkIG5vdCBsb2FkIHlvdXIgYm9va2luZ3MuIiwi5rKh6IO95Yqg6L295L2g55qE6aKE6K6i44CCIikpKTtyZXR1cm59aWYoQj09PSJ0cmlwIil7VSgidmlld1RyaXAiLHt9KS5jYXRjaCgoKT0+TShjKCJDb3VsZCBub3QgbG9hZCB0aGUgdHJpcC4iLCLmsqHog73liqDovb3ooYznqIvjgIIiKSkpO3JldHVybn1pZigoQj09PSJob3VybHkifHxCPT09Im5pZ2h0bHkiKSYmQz8uaG90ZWw/LmlkKXtjb25zdCB5PVN0cmluZyhDLmhvdGVsLmlkKTtVKCJnZXRIb3RlbCIsQj09PSJob3VybHkiP3tob3RlbDp5LGhvdXJseTohMCxndWVzdHM6Uy5ndWVzdHN9Ontob3RlbDp5LC4uLlNuKCl9KS5jYXRjaCgoKT0+TShjKCJDb3VsZCBub3QgbG9hZCB0aGF0IGhvdGVsLiIsIuayoeiDveWKoOi9vei/meWutumFkuW6l+OAgiIpKSk7cmV0dXJufWNvbnN0IGh1PXQuZ2V0QXR0cmlidXRlKCJkYXRhLWhvdGVsIik7aWYoaHUpe2NvbnN0IHk9dC5nZXRBdHRyaWJ1dGUoImRhdGEtY2kiKSx6PXQuZ2V0QXR0cmlidXRlKCJkYXRhLWNvIik7eSYmeiYmKFMuY2hlY2tJbj15LFMuY2hlY2tPdXQ9eiksVSgiZ2V0SG90ZWwiLHtob3RlbDpodSwuLi5TbigpLC4uLlMuY2hlY2tJbiYmaj4xP3tyb29tczpqfTp7fX0pLmNhdGNoKCgpPT5NKGMoIkNvdWxkIG5vdCBsb2FkIHRoYXQgaG90ZWwuIiwi5rKh6IO95Yqg6L296L+Z5a626YWS5bqX44CCIikpKX19KTtjb25zdCBJaT0oKT0+e2lmKCFkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZ25hbWUiKSlyZXR1cm47Y29uc3QgZT10PT5kb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0KT8udmFsdWU/PyIiO09lPXtuYW1lOmUoImduYW1lIiksZW1haWw6ZSgiZ21haWwiKSwuLi5pdSgpLnBob25lUmVxdWlyZWQ/e3Bob25lOmUoImdwaG9uZSIpfTp7fSxub3RlczplKCJnbm90ZSIpLGFycml2aW5nQXQ6ZSgiZ3RpbWUiKSxyZXF1ZXN0czpbLi4uZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnW2RhdGEtYXNrXVthcmlhLXByZXNzZWQ9InRydWUiXScpXS5tYXAodD0+dC5kYXRhc2V0LmFzaz8/IiIpLHJlbWVtYmVyOiEhZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImdyZW1lbWJlciIpPy5jaGVja2VkfX07ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiaW5wdXQiLGU9Pntjb25zdCB0PWUudGFyZ2V0Py5pZD8/IiI7WyJnbmFtZSIsImdtYWlsIiwiZ3Bob25lIiwiZ25vdGUiLCJndGltZSIsImdyZW1lbWJlciJdLmluY2x1ZGVzKHQpJiZJaSgpfSk7Y29uc3QgdWQ9KCk9Pntmb3IoO2JlLmF0KC0xKT8ucGF5bG9hZD8udmlldz09PSJtZW1iZXIiJiYhbmU7KWJlPWJlLnNsaWNlKDAsLTEpO2NvbnN0IGU9YmUuYXQoLTEpO2lmKCFlfHx2bil7RmYoKTtyZXR1cm59YmU9YmUuc2xpY2UoMCwtMSksYnMrPTEsZHUoKSxfZygpO2NvbnN0IHQ9ZS52ZXJzaW9uPT09Z3M/dm9pZCAwOnBfKGUucGF5bG9hZCk7dD8oQz1lLnBheWxvYWQsVSh0LmtleSx0LmFyZ3Mse3B1c2g6ITF9KS5jYXRjaCgoKT0+X2UoZS5wYXlsb2FkLCEwKSkuZmluYWxseShndCkpOihfZShlLnBheWxvYWQsITApLGd0KCkpfSxrZz0oKT0+e2NvbnN0IGU9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIndoZXJlIik/LnZhbHVlLnRyaW0oKT8/IiI7aWYoIWUpe00oYygiV2hlcmUgdG8/IEEgY2l0eSwgYSBjb3VudHJ5IG9yIGEgaG90ZWwuIiwi5oOz5Y675ZOq6YeM77yf6L6T5YWl5Z+O5biC44CB5Zu95a625oiW6YWS5bqX5ZCN44CCIikpO3JldHVybn1BaSgpO2NvbnN0IG49KEM/LnJlZ2lvbnM/P1tdKS5mbGF0TWFwKG89PihvLmNvdW50cmllcz8/W10pLmZsYXRNYXAocz0+W3MubmFtZSwuLi4ocy5jaXRpZXM/P1tdKS5tYXAocj0+ci5uYW1lKV0pKS5maW5kKG89Pm8udG9Mb3dlckNhc2UoKT09PWUudG9Mb3dlckNhc2UoKSk7VSgibGlzdEhvdGVscyIsey4uLm4/e2NpdHk6bn06e3F1ZXJ5OmV9LC4uLlp0KCl9KS5jYXRjaCgoKT0+TShjKCJDb3VsZCBub3Qgc2VhcmNoIGp1c3Qgbm93LiIsIuaaguaXtuayoeiDveaQnOe0ouOAgiIpKSl9LEFpPSgpPT57Y29uc3QgZT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZGNpIiksdD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZGNvIik7ZT8udmFsdWUmJihTLmNoZWNrSW49ZS52YWx1ZSksdD8udmFsdWUmJihTLmNoZWNrT3V0PXQudmFsdWUpLGU/LnZhbHVlJiYoRnI9ITApfTtsZXQgQ2ksTHQ9ITE7Y29uc3QgX2c9KCk9PntjbGVhclRpbWVvdXQoQ2kpLEx0PSExfSxNdz1lPT5lPy52aWV3PT09ImhvdGVscyJ8fGU/LnZpZXc9PT0ibm8taG90ZWxzIiYmISFlPy5hc2ssQ249KGU9MCk9PntjbGVhclRpbWVvdXQoQ2kpLEx0PSEwLENpPXNldFRpbWVvdXQoKCk9PntpZighTXcoQykpe0x0PSExO3JldHVybn1pZih2bil7Q24oMTUwKTtyZXR1cm59THQ9ITEsVSgibGlzdEhvdGVscyIsey4uLlJfKEM/LmFzayksLi4uWnQoKX0pLmNhdGNoKCgpPT5NKGMoIkNvdWxkIG5vdCBwcmljZSB0aG9zZSBuaWdodHMuIiwi5rKh6IO95Li66L+Z5Lqb5pel5pyf5oql5Lu344CCIikpKX0sZSl9O2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoImtleWRvd24iLGU9PntpZihlLnRhcmdldD8uaWQ9PT0id2hlcmUiJiZlLmtleT09PSJFbnRlciImJiFlLmlzQ29tcG9zaW5nKXtlLnByZXZlbnREZWZhdWx0KCksa2coKTtyZXR1cm59aWYoZS5rZXk9PT0iRXNjYXBlIiYmTyl7Y29uc3R7cGFpcjpufT1PO089bnVsbCx4dChuLGBbZGF0YS1jYWw9IiR7bn06aW4iXWApO3JldHVybn1jb25zdCB0PWUudGFyZ2V0OyF0fHx0LmdldEF0dHJpYnV0ZSgicm9sZSIpIT09ImJ1dHRvbiJ8fGUua2V5IT09IkVudGVyIiYmZS5rZXkhPT0iICJ8fChlLnByZXZlbnREZWZhdWx0KCksdC5jbGljaygpKX0pO2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlb3ZlciIsZT0+e2lmKCFPfHxPLnBpY2tpbmchPT0ib3V0Inx8IU8uaW4pcmV0dXJuO2NvbnN0IHQ9ZS50YXJnZXQ/LmNsb3Nlc3Q/LigiLmNkW2RhdGEtZGF5XSIpLG49dCYmIXQuaGFzQXR0cmlidXRlKCJkaXNhYmxlZCIpP3QuZGF0YXNldC5kYXk/PyIiOiIiLG89Ty5pbjtmb3IoY29uc3QgcyBvZiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCIuY2FsIC5jZFtkYXRhLWRheV0iKSl7Y29uc3Qgcj1zLmRhdGFzZXQuZGF5Pz8iIjtzLmNsYXNzTGlzdC50b2dnbGUoInJlYWNoIiwhIW4mJm4+byYmcj5vJiZyPG4pLHMuY2xhc3NMaXN0LnRvZ2dsZSgicmVhY2gtZW5kIiwhIW4mJm4+byYmcj09PW4pfX0pO2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNoYW5nZSIsZT0+e2NvbnN0IHQ9ZS50YXJnZXQ7dD8udHlwZT09PSJkYXRlIiYmKEZyPSEwKTtjb25zdCBvPXtkY2k6WyJkY2kiLCJkY28iXSxkY286WyJkY2kiLCJkY28iXSxsY2k6WyJsY2kiLCJsY28iXSxsY286WyJsY2kiLCJsY28iXX1bdD8uaWQ/PyIiXTtpZihvKXtjb25zdCBhPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKG9bMF0pLGQ9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQob1sxXSk7aWYoIWF8fCFkKXJldHVybjtpZih0LmlkPT09b1swXSYmYS52YWx1ZSl7Y29uc3QgdT1JdChhLnZhbHVlLDEpO2QubWluPXUsKCFkLnZhbHVlfHxkLnZhbHVlPD1hLnZhbHVlKSYmKGQudmFsdWU9dSl9Uy5jaGVja0luPWEudmFsdWV8fFMuY2hlY2tJbixTLmNoZWNrT3V0PWQudmFsdWV8fFMuY2hlY2tPdXQsb1swXT09PSJsY2kiJiZDbigzMDApO3JldHVybn1pZih0Py5pZCE9PSJjaSImJnQ/LmlkIT09ImNvIilyZXR1cm47Y29uc3Qgcz1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2kiKSxyPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjbyIpO2lmKCFzfHwhcilyZXR1cm47aWYodC5pZD09PSJjaSImJnMudmFsdWUpe2NvbnN0IGE9SXQocy52YWx1ZSwxKTtyLm1pbj1hLCghci52YWx1ZXx8ci52YWx1ZTw9cy52YWx1ZSkmJihyLnZhbHVlPWEpfVMuY2hlY2tJbj1zLnZhbHVlfHxTLmNoZWNrSW4sUy5jaGVja091dD1yLnZhbHVlfHxTLmNoZWNrT3V0O2NvbnN0IGk9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm5pZ2h0cyIpO2kmJihpLnRleHRDb250ZW50PXJnKCkpLHF0KCl9KTtkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJlcnJvciIsZT0+e2NvbnN0IHQ9ZS50YXJnZXQ7dD8udGFnTmFtZT09PSJJTUciJiZ0LmNsb3Nlc3QoIiNjb250ZW50IikmJnQucmVtb3ZlKCl9LCEwKTtjb25zdCB3Zz0oZSx0KT0+e3RyeXtXZih0KTtjb25zdCBuPWU/SlNPTi5zdHJpbmdpZnkoZSk6IiI7aWYobiYmbj09PVFmJiZKU09OLnN0cmluZ2lmeShDKT09PVhmKXJldHVybjtlPy5zdGF5Py5jaGVja0luJiYoRnI9ITApLGJlPVtdLGJzKz0xLGR1KCksX2coKSxIZT1sZyxPPW51bGwsX2UoZSl9Y2F0Y2gobil7Y29uc29sZS5lcnJvcigiW2NhcmRdIHJlbmRlciBmYWlsZWQiLG4pLFYoImNvbnRlbnQiKS5pbm5lckhUTUw9YDxkaXYgY2xhc3M9ImVtcHR5Ij4ke2MoIlRoaXMgY2FyZCBjb3VsZCBub3QgYmUgZHJhd24uIEFzayBhZ2FpbiBpbiB0aGUgY2hhdC4iLCLov5nlvKDljaHniYfmsqHog73mmL7npLrvvIzor7flnKjlr7nor53ph4zlho3pl67kuIDmrKHjgIIiKX08L2Rpdj5gfX07TWUub250b29scmVzdWx0PWU9PndnKGU/LnN0cnVjdHVyZWRDb250ZW50LGU/Ll9tZXRhKTtjb25zdCBTZz1lPT57QXJyYXkuaXNBcnJheShlPy5hdmFpbGFibGVEaXNwbGF5TW9kZXMpJiYocGc9ZS5hdmFpbGFibGVEaXNwbGF5TW9kZXMubWFwKFN0cmluZykpLHR5cGVvZiBlPy5kaXNwbGF5TW9kZT09InN0cmluZyImJmUuZGlzcGxheU1vZGUhPT1abiYmKFpuPWUuZGlzcGxheU1vZGUsQz8udmlldz09PSJob3RlbHMiJiZfZShDKSl9O2xldCBkZDt3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigicmVzaXplIiwoKT0+e2NsZWFyVGltZW91dChkZCksZGQ9c2V0VGltZW91dCgoKT0+e2lmKEM/LnZpZXchPT0iaG90ZWxzInx8TW4oKSlyZXR1cm47WGw9UWwoKTtjb25zdCBlPU51bWJlcihDLnRvdGFsPz8wKS1OdW1iZXIoQy5vZmZzZXQ/PzApO1dyKGUpIT09a3MmJl9lKEMpfSwxNTApfSk7TWUub25ob3N0Y29udGV4dGNoYW5nZWQ9ZT0+e0xmKGUsQmYpLFNnKGUpLEZsKCl9O01lLmNvbm5lY3QoKS50aGVuKCgpPT57Y29uc3QgZT1NZS5nZXRIb3N0Q29udGV4dCgpO0xmKGUsQmYpLFNnKGUpLEZsKCk7Y29uc3QgdD1lPy50b29sSW5mbz8ucmVzdWx0Py5zdHJ1Y3R1cmVkQ29udGVudDt0JiZ3Zyh0LGU/LnRvb2xJbmZvPy5yZXN1bHQ/Ll9tZXRhKX0pLmNhdGNoKCgpPT57VigiY29udGVudCIpLmlubmVySFRNTD1gPGRpdiBjbGFzcz0iZW1wdHkiPiR7YygiQ291bGQgbm90IGNvbm5lY3QgdG8gdGhlIGhvc3QuIiwi5rKh6IO96L+e5o6l5Yiw5a6/5Li744CCIil9PC9kaXY+YH0pOzwvc2NyaXB0PgogICAgPHN0eWxlIHJlbD0ic3R5bGVzaGVldCIgY3Jvc3NvcmlnaW4+OnJvb3R7LS1raXQtYmc6ICNmZmZmZmY7LS1raXQtYmctc29mdDogI2Y2ZjdmOTstLWtpdC1mZzogIzFhMWYyYjstLWtpdC1mZy1zb2Z0OiAjNjI2YjdhOy0ta2l0LWZnLWZhaW50OiAjOGE5M2ExOy0ta2l0LWxpbmU6ICNlM2U3ZWQ7LS1raXQtYWNjZW50OiAjMWExZjJiOy0ta2l0LWFjY2VudC1mZzogI2ZmZmZmZjstLWtpdC1saW5rOiAjMjU2M2ViOy0ta2l0LWdvb2Q6ICMxYTdmNWE7LS1raXQtZ29vZC1iZzogI2RkZjNlNDstLWtpdC1iYWQ6ICNiMzI2MWU7LS1raXQtYmFkLWJnOiAjZmJlNmU0Oy0ta2l0LXdhcm46ICM4YTVhMDA7LS1raXQtd2Fybi1iZzogI2ZkZjBkNTstLWtpdC1yaW5nOiAjMjU2M2VifVtkYXRhLXRoZW1lPWRhcmtdey0ta2l0LWJnOiAjMWQxZjIzOy0ta2l0LWJnLXNvZnQ6ICMyNjI5MmU7LS1raXQtZmc6ICNlY2VlZjE7LS1raXQtZmctc29mdDogI2E0YWJiNjstLWtpdC1mZy1mYWludDogIzdjODQ5MTstLWtpdC1saW5lOiAjMzYzYTQxOy0ta2l0LWFjY2VudDogI2VjZWVmMTstLWtpdC1hY2NlbnQtZmc6ICMxZDFmMjM7LS1raXQtbGluazogIzdhYTdmZjstLWtpdC1nb29kOiAjNmZkM2EyOy0ta2l0LWdvb2QtYmc6ICMxZjNhMmQ7LS1raXQtYmFkOiAjZmY4YTgwOy0ta2l0LWJhZC1iZzogIzNkMjMyMjstLWtpdC13YXJuOiAjZjJjNDZiOy0ta2l0LXdhcm4tYmc6ICMzYTMwMjA7LS1raXQtcmluZzogIzdhYTdmZn06cm9vdHstLWJnOiB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kLXByaW1hcnksIHZhcigtLWtpdC1iZykpOy0tYmctc29mdDogdmFyKC0tY29sb3ItYmFja2dyb3VuZC1zZWNvbmRhcnksIHZhcigtLWtpdC1iZy1zb2Z0KSk7LS1mZzogdmFyKC0tY29sb3ItdGV4dC1wcmltYXJ5LCB2YXIoLS1raXQtZmcpKTstLWZnLXNvZnQ6IHZhcigtLWNvbG9yLXRleHQtc2Vjb25kYXJ5LCB2YXIoLS1raXQtZmctc29mdCkpOy0tZmctZmFpbnQ6IHZhcigtLWNvbG9yLXRleHQtdGVydGlhcnksIHZhcigtLWtpdC1mZy1mYWludCkpOy0tbGluZTogdmFyKC0tY29sb3ItYm9yZGVyLXByaW1hcnksIHZhcigtLWtpdC1saW5lKSk7LS1hY2NlbnQ6IHZhcigtLWNvbG9yLWJhY2tncm91bmQtaW52ZXJzZSwgdmFyKC0ta2l0LWFjY2VudCkpOy0tYWNjZW50LWZnOiB2YXIoLS1jb2xvci10ZXh0LWludmVyc2UsIHZhcigtLWtpdC1hY2NlbnQtZmcpKTstLWxpbms6IHZhcigtLWNvbG9yLXRleHQtaW5mbywgdmFyKC0ta2l0LWxpbmspKTstLWdvb2Q6IHZhcigtLWNvbG9yLXRleHQtc3VjY2VzcywgdmFyKC0ta2l0LWdvb2QpKTstLWdvb2QtYmc6IHZhcigtLWNvbG9yLWJhY2tncm91bmQtc3VjY2VzcywgdmFyKC0ta2l0LWdvb2QtYmcpKTstLWJhZDogdmFyKC0tY29sb3ItdGV4dC1kYW5nZXIsIHZhcigtLWtpdC1iYWQpKTstLWJhZC1iZzogdmFyKC0tY29sb3ItYmFja2dyb3VuZC1kYW5nZXIsIHZhcigtLWtpdC1iYWQtYmcpKTstLXdhcm46IHZhcigtLWNvbG9yLXRleHQtd2FybmluZywgdmFyKC0ta2l0LXdhcm4pKTstLXdhcm4tYmc6IHZhcigtLWNvbG9yLWJhY2tncm91bmQtd2FybmluZywgdmFyKC0ta2l0LXdhcm4tYmcpKTstLXJpbmc6IHZhcigtLWNvbG9yLXJpbmctcHJpbWFyeSwgdmFyKC0ta2l0LXJpbmcpKTstLXJhZGl1czogdmFyKC0tYm9yZGVyLXJhZGl1cy1sZywgMTRweCk7LS1yYWRpdXMtc206IHZhcigtLWJvcmRlci1yYWRpdXMtc20sIDlweCk7LS1mb250OiB2YXIoLS1mb250LXNhbnMsIHN5c3RlbS11aSwgLWFwcGxlLXN5c3RlbSwgIlNlZ29lIFVJIiwgUm9ib3RvLCBzYW5zLXNlcmlmKTstLW1vbm86IHZhcigtLWZvbnQtbW9ubywgdWktbW9ub3NwYWNlLCAiU0YgTW9ubyIsIE1lbmxvLCBtb25vc3BhY2UpOy0tc2hhZG93OiB2YXIoLS1zaGFkb3ctc20sIDAgMXB4IDJweCByZ2JhKDEwLCAyMCwgNDAsIC4wNCksIDAgMnB4IDVweCByZ2JhKDEwLCAyMCwgNDAsIC4wNCkpfSp7Ym94LXNpemluZzpib3JkZXItYm94fWJvZHl7bWFyZ2luOjA7Zm9udC1mYW1pbHk6dmFyKC0tZm9udCk7Y29sb3I6dmFyKC0tZmcpO2JhY2tncm91bmQ6dHJhbnNwYXJlbnQ7LXdlYmtpdC1mb250LXNtb290aGluZzphbnRpYWxpYXNlZH0uY2FyZHtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWxpbmUpO2JvcmRlci1yYWRpdXM6dmFyKC0tcmFkaXVzKTtiYWNrZ3JvdW5kOnZhcigtLWJnKTtib3gtc2hhZG93OnZhcigtLXNoYWRvdyk7bWF4LXdpZHRoOjU2MHB4O292ZXJmbG93OmhpZGRlbjtwYWRkaW5nLWxlZnQ6dmFyKC0taW5zZXQtbGVmdCwgMHB4KTtwYWRkaW5nLXJpZ2h0OnZhcigtLWluc2V0LXJpZ2h0LCAwcHgpfS5oZWFke2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjhweDtwYWRkaW5nOjE0cHggMThweCAwfS5oZWFkIC50aXRsZXtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo2NTA7bGV0dGVyLXNwYWNpbmc6LS4wMWVtfS5oZWFkIC50aXRsZVtoaWRkZW5de2Rpc3BsYXk6bm9uZX0jY29udGVudHtwYWRkaW5nOjEwcHggMThweCAxOHB4fS5yZWZyZXNoe21hcmdpbi1sZWZ0OjhweDthbGlnbi1zZWxmOmNlbnRlcjtmbGV4Om5vbmU7ZGlzcGxheTpncmlkO3BsYWNlLWl0ZW1zOmNlbnRlcjt3aWR0aDoyOHB4O2hlaWdodDoyOHB4O3BhZGRpbmc6MDtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWxpbmUpO2JvcmRlci1yYWRpdXM6OTk5cHg7YmFja2dyb3VuZDp2YXIoLS1iZyk7Y29sb3I6dmFyKC0tZmctc29mdCk7Y3Vyc29yOnBvaW50ZXI7dHJhbnNpdGlvbjpib3JkZXItY29sb3IgLjEycyxjb2xvciAuMTJzfS5yZWZyZXNoOmhvdmVyOm5vdCg6ZGlzYWJsZWQpe2NvbG9yOnZhcigtLWZnKTtib3JkZXItY29sb3I6dmFyKC0tZmctc29mdCl9LnJlZnJlc2g6ZGlzYWJsZWR7Y3Vyc29yOmRlZmF1bHQ7b3BhY2l0eTouNn0ucmVmcmVzaFtoaWRkZW5de2Rpc3BsYXk6bm9uZX0ucmVmcmVzaCBzdmd7d2lkdGg6MTNweDtoZWlnaHQ6MTNweDtkaXNwbGF5OmJsb2NrfS5yZWZyZXNoLmJ1c3kgc3Zne2FuaW1hdGlvbjpraXQtc3BpbiAuN3MgbGluZWFyIGluZmluaXRlfUBrZXlmcmFtZXMga2l0LXNwaW57dG97dHJhbnNmb3JtOnJvdGF0ZSgzNjBkZWcpfX0uZW1wdHl7cGFkZGluZzoxOHB4IDA7dGV4dC1hbGlnbjpjZW50ZXI7Y29sb3I6dmFyKC0tZmctc29mdCk7Zm9udC1zaXplOjEzcHh9LmhpbnR7bWFyZ2luLXRvcDo4cHg7Zm9udC1zaXplOjEycHg7Y29sb3I6dmFyKC0tZmctc29mdCk7dGV4dC1hbGlnbjpjZW50ZXJ9Lm5vdGV7Zm9udC1zaXplOjEyLjVweDtjb2xvcjp2YXIoLS1mZy1zb2Z0KTtwYWRkaW5nOjAgMCAxMHB4fS5tb25ve2ZvbnQtZmFtaWx5OnZhcigtLW1vbm8pO2ZvbnQtc2l6ZToxMS41cHg7Y29sb3I6dmFyKC0tZmctZmFpbnQpfS5iYWRnZXtkaXNwbGF5OmlubGluZS1mbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6NnB4O3BhZGRpbmc6M3B4IDlweDtib3JkZXItcmFkaXVzOjk5OXB4O2ZvbnQtc2l6ZToxMS41cHg7Zm9udC13ZWlnaHQ6NjAwO3doaXRlLXNwYWNlOm5vd3JhcH0uYmFkZ2Uub2t7Y29sb3I6dmFyKC0tZ29vZCk7YmFja2dyb3VuZDp2YXIoLS1nb29kLWJnKX0uYmFkZ2Uud2FybiwuYmFkZ2UudG9kb3tjb2xvcjp2YXIoLS13YXJuKTtiYWNrZ3JvdW5kOnZhcigtLXdhcm4tYmcpfS5iYWRnZS5lcnJ7Y29sb3I6dmFyKC0tYmFkKTtiYWNrZ3JvdW5kOnZhcigtLWJhZC1iZyl9LmJ1eXttYXJnaW4tdG9wOjE0cHg7d2lkdGg6MTAwJTttaW4taGVpZ2h0OjQ0cHg7cGFkZGluZzoxMXB4IDE0cHg7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1hY2NlbnQpO2JvcmRlci1yYWRpdXM6dmFyKC0tcmFkaXVzLXNtKTtiYWNrZ3JvdW5kOnZhcigtLWFjY2VudCk7Y29sb3I6dmFyKC0tYWNjZW50LWZnKTtmb250LWZhbWlseTp2YXIoLS1mb250KTtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo2NTA7Y3Vyc29yOnBvaW50ZXJ9LmJ1eTpkaXNhYmxlZHtiYWNrZ3JvdW5kOnZhcigtLWJnLXNvZnQpO2JvcmRlci1jb2xvcjp2YXIoLS1saW5lKTtjb2xvcjp2YXIoLS1mZy1mYWludCk7Y3Vyc29yOmRlZmF1bHR9LmJ1eS5hbHQsLmdob3N0e2JhY2tncm91bmQ6dHJhbnNwYXJlbnQ7Y29sb3I6dmFyKC0tZmcpO2JvcmRlcjoxcHggc29saWQgdmFyKC0tbGluZSl9Lmdob3N0e2ZsZXg6MTttaW4taGVpZ2h0OjQwcHg7cGFkZGluZzo5cHggMTBweDtib3JkZXItcmFkaXVzOnZhcigtLXJhZGl1cy1zbSk7Zm9udC1mYW1pbHk6dmFyKC0tZm9udCk7Zm9udC1zaXplOjEzcHg7Y29sb3I6dmFyKC0tZmctc29mdCk7Y3Vyc29yOnBvaW50ZXJ9Lmxpbmt7Ym9yZGVyOjA7YmFja2dyb3VuZDpub25lO3BhZGRpbmc6NnB4IDAgMDtjb2xvcjp2YXIoLS1saW5rKTtmb250LWZhbWlseTp2YXIoLS1mb250KTtmb250LXNpemU6MTIuNXB4O2N1cnNvcjpwb2ludGVyO3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmV9LnF0eXtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDoycHh9LnF0eSBidXR0b257d2lkdGg6MzZweDtoZWlnaHQ6MzZweDtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWxpbmUpO2JvcmRlci1yYWRpdXM6dmFyKC0tcmFkaXVzLXNtKTtiYWNrZ3JvdW5kOnZhcigtLWJnKTtjb2xvcjp2YXIoLS1mZyk7Zm9udC1mYW1pbHk6dmFyKC0tZm9udCk7Zm9udC1zaXplOjE3cHg7bGluZS1oZWlnaHQ6MTtjdXJzb3I6cG9pbnRlcn0ucXR5IHNwYW57bWluLXdpZHRoOjI2cHg7dGV4dC1hbGlnbjpjZW50ZXI7Zm9udC1zaXplOjEzLjVweDtmb250LXdlaWdodDo2NTB9LmNrLXBhZ2Vye2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjtmbGV4LXdyYXA6d3JhcDtnYXA6OHB4IDEycHg7bWFyZ2luLXRvcDoxNHB4fS5jay1wYWdlci1idG57ZGlzcGxheTppbmxpbmUtZmxleDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjtnYXA6NHB4O21pbi13aWR0aDoxMTJweDtoZWlnaHQ6MzZweDtwYWRkaW5nOjAgMTRweDtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWxpbmUpO2JvcmRlci1yYWRpdXM6dmFyKC0tcmFkaXVzLXNtKTtiYWNrZ3JvdW5kOnZhcigtLWJnKTtjb2xvcjp2YXIoLS1mZyk7Zm9udC1mYW1pbHk6dmFyKC0tZm9udCk7Zm9udC1zaXplOjEzcHg7Zm9udC13ZWlnaHQ6NTAwO2xpbmUtaGVpZ2h0OjE7Y3Vyc29yOnBvaW50ZXI7dHJhbnNpdGlvbjpiYWNrZ3JvdW5kLWNvbG9yIC4xMnMsYm9yZGVyLWNvbG9yIC4xMnMsY29sb3IgLjEyc30uY2stcGFnZXItYnRuIHN2ZywuY2stcGFnZXItYWxsIHN2Z3t3aWR0aDoxNHB4O2hlaWdodDoxNHB4O2ZsZXg6bm9uZX0uY2stcGFnZXItYnRuOmhvdmVyOm5vdCg6ZGlzYWJsZWQpe2JhY2tncm91bmQ6dmFyKC0tYmctc29mdCk7Ym9yZGVyLWNvbG9yOnZhcigtLWZnLWZhaW50KX0uY2stcGFnZXItYnRuOmFjdGl2ZTpub3QoOmRpc2FibGVkKXt0cmFuc2Zvcm06dHJhbnNsYXRlWSguNXB4KX0uY2stcGFnZXItYnRuOmRpc2FibGVke2NvbG9yOnZhcigtLWZnLWZhaW50KTtiYWNrZ3JvdW5kOnRyYW5zcGFyZW50O29wYWNpdHk6LjY7Y3Vyc29yOmRlZmF1bHR9LmNrLXBhZ2VyLW57bWluLXdpZHRoOjhjaDt0ZXh0LWFsaWduOmNlbnRlcjt3aGl0ZS1zcGFjZTpub3dyYXA7Zm9udC1zaXplOjEzcHg7Y29sb3I6dmFyKC0tZmctc29mdCk7Zm9udC12YXJpYW50LW51bWVyaWM6dGFidWxhci1udW1zfS5jay1wYWdlci1hbGx7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6NnB4O3dpZHRoOmZpdC1jb250ZW50O2hlaWdodDozMnB4O21hcmdpbjo2cHggYXV0byAwO3BhZGRpbmc6MCAxMnB4O2JvcmRlcjowO2JvcmRlci1yYWRpdXM6OTk5cHg7YmFja2dyb3VuZDpub25lO2NvbG9yOnZhcigtLWZnLXNvZnQpO2ZvbnQtZmFtaWx5OnZhcigtLWZvbnQpO2ZvbnQtc2l6ZToxMi41cHg7Zm9udC13ZWlnaHQ6NTAwO2N1cnNvcjpwb2ludGVyO3RyYW5zaXRpb246YmFja2dyb3VuZC1jb2xvciAuMTJzLGNvbG9yIC4xMnN9LmNrLXBhZ2VyLWFsbDpob3ZlcntiYWNrZ3JvdW5kOnZhcigtLWJnLXNvZnQpO2NvbG9yOnZhcigtLWZnKX0uY2stcGFnZXItYWxsOmZpcnN0LWNoaWxkLC5ncmlkKy5jay1wYWdlci1hbGx7bWFyZ2luLXRvcDoxNHB4fWJ1dHRvbjpmb2N1cy12aXNpYmxlLGE6Zm9jdXMtdmlzaWJsZXtvdXRsaW5lOjJweCBzb2xpZCB2YXIoLS1yaW5nKTtvdXRsaW5lLW9mZnNldDoycHh9QG1lZGlhKG1heC13aWR0aDo0MzBweCl7LmNhcmR7Ym9yZGVyLXJhZGl1czpjYWxjKHZhcigtLXJhZGl1cykgLSAycHgpfS5oZWFke3BhZGRpbmc6MTJweCAxNHB4IDB9I2NvbnRlbnR7cGFkZGluZzo4cHggMTRweCAxNHB4fS5idXl7bWluLWhlaWdodDo0OHB4O2ZvbnQtc2l6ZToxNXB4fS5naG9zdHttaW4taGVpZ2h0OjQ0cHg7Zm9udC1zaXplOjEzLjVweH0uY2stcGFnZXItYnRue21pbi13aWR0aDoxMDRweDtoZWlnaHQ6NDBweH0uY2stcGFnZXItYWxse2hlaWdodDozNnB4fS5xdHkgYnV0dG9ue3dpZHRoOjQycHg7aGVpZ2h0OjQycHg7Zm9udC1zaXplOjE5cHh9LnJlZnJlc2h7d2lkdGg6MzRweDtoZWlnaHQ6MzRweH0uaGludCwubm90ZSwuZW1wdHl7Zm9udC1zaXplOjEzcHh9fUBtZWRpYShwcmVmZXJzLXJlZHVjZWQtbW90aW9uOnJlZHVjZSl7LnJlZnJlc2guYnVzeSBzdmd7YW5pbWF0aW9uOm5vbmV9Knt0cmFuc2l0aW9uOm5vbmUhaW1wb3J0YW50fX06cm9vdHstLWJmLXByaW1hcnk6ICMxZDRlZDg7LS1iZi1zdWNjZXNzOiAjMDU5NjY5Oy0tYmYtd2FybmluZzogI2Q5NzcwNjstLWJmLWVycm9yOiAjZWY0NDQ0Oy0tYmYtaW5mbzogIzI1NjNlYjstLWJmLXN1cmZhY2U6ICNmZmZmZmY7LS1jLWJnOiB2YXIoLS1iZi1zdXJmYWNlKTstLWMtc3VuazogI2Y0ZjZmYTstLWMtcmFpc2U6ICNmZmZmZmY7LS1jLWluazogIzBjMTQyNDstLWMtaW5rLTI6ICMzZjRjNjM7LS1jLWluay0zOiAjNWI2ODdlOy0tYy1saW5lOiAjZTNlOGYwOy0tYy1saW5lLTI6ICNjY2Q0ZTE7LS1jLXByaW1hcnk6IHZhcigtLWJmLXByaW1hcnkpOy0tYy1wcmltYXJ5LWhvdmVyOiAjMWE0NGMyOy0tYy1wcmltYXJ5LXByZXNzOiAjMTYzYWE2Oy0tYy1wcmltYXJ5LWluazogIzFkNGVkODstLWMtcHJpbWFyeS1zb2Z0OiAjZWRmMmZlOy0tYy1wcmltYXJ5LXNvZnQtMjogI2RiZTVmZDstLWMtb24tcHJpbWFyeTogI2ZmZmZmZjstLWMtc3VjY2VzczogdmFyKC0tYmYtc3VjY2Vzcyk7LS1jLXN1Y2Nlc3MtaW5rOiAjMDQ3ODU3Oy0tYy1zdWNjZXNzLXNvZnQ6ICNlN2Y2ZWY7LS1jLXdhcm5pbmc6IHZhcigtLWJmLXdhcm5pbmcpOy0tYy13YXJuaW5nLWluazogI2I0NTMwOTstLWMtd2FybmluZy1zb2Z0OiAjZmRmM2UyOy0tYy1lcnJvcjogdmFyKC0tYmYtZXJyb3IpOy0tYy1lcnJvci1pbms6ICNjNDJiMmI7LS1jLWVycm9yLXNvZnQ6ICNmZGVkZWQ7LS1jLWluZm86IHZhcigtLWJmLWluZm8pOy0tYy1pbmZvLWluazogIzFmNTVkNjstLWMtaW5mby1zb2Z0OiAjZWRmM2ZlOy0tYy1zdGFyOiAjYjc3OTFmOy0tYy1zaGFkb3c6IDAgMXB4IDJweCByZ2IoMTYgMjQgNDAgLyA1JSksIDAgMXB4IDFweCByZ2IoMTYgMjQgNDAgLyAzJSk7LS1jLXNoYWRvdy0yOiAwIDFweCAycHggcmdiKDE2IDI0IDQwIC8gNiUpLCAwIDhweCAyNHB4IC0xMHB4IHJnYigxNiAyNCA0MCAvIDE4JSk7LS1jLXNoYWRvdy1jYXJkOiAwIDFweCAycHggcmdiKDE2IDI0IDQwIC8gNCUpLCAwIDEycHggMzJweCAtMThweCByZ2IoMTYgMjQgNDAgLyAyMiUpOy0tYy1zY3JpbTogbGluZWFyLWdyYWRpZW50KDE4MGRlZywgcmdiKDggMTIgMjIgLyAwJSkgMzUlLCByZ2IoOCAxMiAyMiAvIDcyJSkgMTAwJSk7LS1yLWNhcmQ6IDIwcHg7LS1yLWxnOiAxNnB4Oy0tci1tZDogMTJweDstLXItc206IDlweDstLWYtc2FuczogLWFwcGxlLXN5c3RlbSwgQmxpbmtNYWNTeXN0ZW1Gb250LCAiU0YgUHJvIFRleHQiLCAiU2Vnb2UgVUkgVmFyaWFibGUgVGV4dCIsICJTZWdvZSBVSSIsIFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgIlBpbmdGYW5nIFNDIiwgIkhpcmFnaW5vIFNhbnMgR0IiLCAiTWljcm9zb2Z0IFlhSGVpIiwgc2Fucy1zZXJpZjstLWYtZGlzcGxheTogIklvd2FuIE9sZCBTdHlsZSIsICJQYWxhdGlubyBMaW5vdHlwZSIsIFBhbGF0aW5vLCAiQm9vayBBbnRpcXVhIiwgR2VvcmdpYSwgIlNvbmd0aSBTQyIsICJTVFNvbmciLCAiU2ltU3VuIiwgc2VyaWY7LS1mLW1vbm86IHVpLW1vbm9zcGFjZSwgIlNGIE1vbm8iLCAiSmV0QnJhaW5zIE1vbm8iLCBNZW5sbywgQ29uc29sYXMsIG1vbm9zcGFjZTstLWVhc2U6IGN1YmljLWJlemllciguMiwgLjcsIC4yLCAxKX1bZGF0YS10aGVtZT1kYXJrXXstLWMtYmc6ICMxMTE3MjM7LS1jLXN1bms6ICMwYjEwMWE7LS1jLXJhaXNlOiAjMTgyMDMxOy0tYy1pbms6ICNlZWYyZjk7LS1jLWluay0yOiAjYjRiZmQxOy0tYy1pbmstMzogIzhmOWJiMTstLWMtbGluZTogIzI0MzA0ODstLWMtbGluZS0yOiAjMzU0MzVmOy0tYy1wcmltYXJ5OiAjM2E2OGYyOy0tYy1wcmltYXJ5LWhvdmVyOiAjMmY1ZGU2Oy0tYy1wcmltYXJ5LXByZXNzOiAjMjg1MmQyOy0tYy1wcmltYXJ5LWluazogIzkzYjJmZjstLWMtcHJpbWFyeS1zb2Z0OiAjMTgyNjRhOy0tYy1wcmltYXJ5LXNvZnQtMjogIzIxMzQ2NzstLWMtb24tcHJpbWFyeTogI2ZmZmZmZjstLWMtc3VjY2VzczogIzEyYjg4NjstLWMtc3VjY2Vzcy1pbms6ICM0ZmQ4YTY7LS1jLXN1Y2Nlc3Mtc29mdDogIzBmMmMyNzstLWMtd2FybmluZzogI2YwYTAzMjstLWMtd2FybmluZy1pbms6ICNmNmJkNWY7LS1jLXdhcm5pbmctc29mdDogIzMzMjUwZjstLWMtZXJyb3I6ICNmMjY0NjQ7LS1jLWVycm9yLWluazogI2ZmOGY4ZjstLWMtZXJyb3Itc29mdDogIzNhMWExZjstLWMtaW5mbzogIzViOGNmZjstLWMtaW5mby1pbms6ICM5ZGJhZmY7LS1jLWluZm8tc29mdDogIzE2MjMzZjstLWMtc3RhcjogI2YyYzQ2YjstLWMtc2hhZG93OiAwIDFweCAycHggcmdiKDAgMCAwIC8gMzAlKTstLWMtc2hhZG93LTI6IDAgMXB4IDJweCByZ2IoMCAwIDAgLyAzNSUpLCAwIDEwcHggMjhweCAtMTJweCByZ2IoMCAwIDAgLyA2MCUpOy0tYy1zaGFkb3ctY2FyZDogMCAxcHggMCByZ2IoMjU1IDI1NSAyNTUgLyAzJSkgaW5zZXQsIDAgMThweCA0MHB4IC0yNHB4IHJnYigwIDAgMCAvIDcwJSk7Y29sb3Itc2NoZW1lOmRhcmt9OnJvb3QsW2RhdGEtdGhlbWU9ZGFya117LS1iZzogdmFyKC0tYy1iZyk7LS1iZy1zb2Z0OiB2YXIoLS1jLXN1bmspOy0tZmc6IHZhcigtLWMtaW5rKTstLWZnLXNvZnQ6IHZhcigtLWMtaW5rLTIpOy0tZmctZmFpbnQ6IHZhcigtLWMtaW5rLTMpOy0tbGluZTogdmFyKC0tYy1saW5lKTstLWFjY2VudDogdmFyKC0tYy1wcmltYXJ5KTstLWFjY2VudC1mZzogdmFyKC0tYy1vbi1wcmltYXJ5KTstLWxpbms6IHZhcigtLWMtcHJpbWFyeS1pbmspOy0tZ29vZDogdmFyKC0tYy1zdWNjZXNzLWluayk7LS1nb29kLWJnOiB2YXIoLS1jLXN1Y2Nlc3Mtc29mdCk7LS1iYWQ6IHZhcigtLWMtZXJyb3ItaW5rKTstLWJhZC1iZzogdmFyKC0tYy1lcnJvci1zb2Z0KTstLXdhcm46IHZhcigtLWMtd2FybmluZy1pbmspOy0td2Fybi1iZzogdmFyKC0tYy13YXJuaW5nLXNvZnQpOy0tcmluZzogdmFyKC0tYy1wcmltYXJ5KTstLXJhZGl1czogdmFyKC0tci1jYXJkKTstLXJhZGl1cy1zbTogdmFyKC0tci1zbSk7LS1mb250OiB2YXIoLS1mLXNhbnMpOy0tbW9ubzogdmFyKC0tZi1tb25vKTstLXNoYWRvdzogdmFyKC0tYy1zaGFkb3ctY2FyZCl9W2hpZGRlbl17ZGlzcGxheTpub25lIWltcG9ydGFudH1odG1se2JhY2tncm91bmQ6dHJhbnNwYXJlbnR9Ym9keXtwYWRkaW5nOjAgMCAxNHB4fWJvZHl7Zm9udC1mYW1pbHk6dmFyKC0tZi1zYW5zKTtmb250LXNpemU6MTRweDtsaW5lLWhlaWdodDoxLjQ1O2NvbG9yOnZhcigtLWMtaW5rKTt0ZXh0LXJlbmRlcmluZzpvcHRpbWl6ZUxlZ2liaWxpdHk7Zm9udC1mZWF0dXJlLXNldHRpbmdzOiJrZXJuIiwiY3YxMSJ9LmNhcmR7cG9zaXRpb246cmVsYXRpdmU7bWF4LXdpZHRoOjc2MHB4O2JhY2tncm91bmQ6dmFyKC0tYy1iZyk7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1jLWxpbmUpO2JvcmRlci1yYWRpdXM6dmFyKC0tci1jYXJkKTtib3gtc2hhZG93OnZhcigtLWMtc2hhZG93LWNhcmQpfWJ1dHRvbixpbnB1dHtmb250LWZhbWlseTppbmhlcml0fWJ1dHRvbnstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6dHJhbnNwYXJlbnR9OndoZXJlKGJ1dHRvbixhLGlucHV0LHN1bW1hcnksW3JvbGU9YnV0dG9uXSk6Zm9jdXMtdmlzaWJsZXtvdXRsaW5lOjJweCBzb2xpZCB2YXIoLS1jLXByaW1hcnkpO291dGxpbmUtb2Zmc2V0OjJweH0ucC10b3RhbCwucC13YXMsLnAtdW5pdCwudC1mcm9tLC5zdW0sLm1vbmV5LW91dCwuZmQtcHJpY2UsLmNvbC1wcmljZSwucHMtcHJpY2UsLmNvZGUsLm4sLnd2LC5jZHtmb250LXZhcmlhbnQtbnVtZXJpYzp0YWJ1bGFyLW51bXN9LmhlYWR7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6MTBweDttaW4taGVpZ2h0OjYwcHg7cGFkZGluZzoxMnB4IDE2cHggMTBweCAyMHB4fS5ob21le2Rpc3BsYXk6aW5saW5lLWZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDoxMHB4O21pbi13aWR0aDowO21hcmdpbjowIGF1dG8gMCAwO3BhZGRpbmc6NHB4IDZweCA0cHggMDtib3JkZXI6MDtib3JkZXItcmFkaXVzOnZhcigtLXItc20pO2JhY2tncm91bmQ6bm9uZTtjb2xvcjppbmhlcml0O2ZvbnQ6aW5oZXJpdDtjdXJzb3I6cG9pbnRlcjt0cmFuc2l0aW9uOm9wYWNpdHkgLjE1cyB2YXIoLS1lYXNlKX0uaG9tZTpob3ZlcntvcGFjaXR5Oi43OH0uaGVhZCAuYnJhbmR7bWF4LWhlaWdodDozNHB4O21heC13aWR0aDoxNTBweDtvYmplY3QtZml0OmNvbnRhaW59W2RhdGEtdGhlbWU9ZGFya10gLmhlYWQgLmJyYW5ke2JhY2tncm91bmQ6I2U5ZWRmNH0uaGVhZCAudGl0bGV7Zm9udC1zaXplOjE2cHg7Zm9udC13ZWlnaHQ6NjgwO2xldHRlci1zcGFjaW5nOi0uMDE1ZW19LmhlYWQgLnN1Yntjb2xvcjp2YXIoLS1jLWluay0zKTtmb250LXNpemU6MTIuNXB4O2ZvbnQtd2VpZ2h0OjU1MDt0ZXh0LWFsaWduOmVuZDt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXN9LmhlYWQgLnN1YjplbXB0eXtkaXNwbGF5Om5vbmV9Lm1lbWJlcmNoaXAsLmhlYWR0cmlwe2Rpc3BsYXk6aW5saW5lLWZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDo2cHg7aGVpZ2h0OjMycHg7cGFkZGluZzowIDEycHg7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1jLWxpbmUtMik7Ym9yZGVyLXJhZGl1czo5OTlweDtiYWNrZ3JvdW5kOnZhcigtLWMtYmcpO2NvbG9yOnZhcigtLWMtaW5rKTtmb250OmluaGVyaXQ7Zm9udC1zaXplOjEyLjVweDtmb250LXdlaWdodDo2MjA7d2hpdGUtc3BhY2U6bm93cmFwO2N1cnNvcjpwb2ludGVyO3RyYW5zaXRpb246YmFja2dyb3VuZC1jb2xvciAuMTVzIHZhcigtLWVhc2UpLGJvcmRlci1jb2xvciAuMTVzIHZhcigtLWVhc2UpfS5tZW1iZXJjaGlwOmhvdmVyLC5oZWFkdHJpcDpob3ZlcntiYWNrZ3JvdW5kOnZhcigtLWMtc3Vuayl9LmhlYWR0cmlwe2JhY2tncm91bmQ6dmFyKC0tYy1pbmspO2JvcmRlci1jb2xvcjp2YXIoLS1jLWluayk7Y29sb3I6dmFyKC0tYy1iZyk7cGFkZGluZzowIDEycHggMCAxMHB4fS5oZWFkdHJpcDpob3ZlcntiYWNrZ3JvdW5kOnZhcigtLWMtaW5rLTIpO2JvcmRlci1jb2xvcjp2YXIoLS1jLWluay0yKX0uc3ViaGVhZHtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDoxMnB4O3BhZGRpbmc6MCAyMHB4IDEwcHh9LmJhY2tidG57ZGlzcGxheTppbmxpbmUtZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjRweDttYXgtd2lkdGg6NTAlO2hlaWdodDozMHB4O3BhZGRpbmc6MCAxMnB4IDAgOHB4O2JvcmRlcjowO2JvcmRlci1yYWRpdXM6OTk5cHg7YmFja2dyb3VuZDp2YXIoLS1jLXN1bmspO2NvbG9yOnZhcigtLWMtaW5rLTIpO2ZvbnQ6aW5oZXJpdDtmb250LXNpemU6MTIuNXB4O2ZvbnQtd2VpZ2h0OjYwMDt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7Y3Vyc29yOnBvaW50ZXJ9LmJhY2tidG46aG92ZXJ7Y29sb3I6dmFyKC0tYy1pbmspO2JhY2tncm91bmQ6dmFyKC0tYy1saW5lKX0uZmxvd3tkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDo2cHg7bWFyZ2luOjA7cGFkZGluZzowO2xpc3Qtc3R5bGU6bm9uZTtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo2MDA7Y29sb3I6dmFyKC0tYy1pbmstMyl9LmJhY2tidG46bm90KFtoaWRkZW5dKSsuZmxvd3ttYXJnaW4taW5saW5lLXN0YXJ0OmF1dG99LmZsb3cgbGl7ZGlzcGxheTppbmxpbmUtZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjZweDt3aGl0ZS1zcGFjZTpub3dyYXB9LmZsb3cgbGkrbGk6YmVmb3Jle2NvbnRlbnQ6IiI7d2lkdGg6MThweDtoZWlnaHQ6MS41cHg7Ym9yZGVyLXJhZGl1czoycHg7YmFja2dyb3VuZDp2YXIoLS1jLWxpbmUtMil9LmZsb3cgLmZkb3R7ZGlzcGxheTpncmlkO3BsYWNlLWl0ZW1zOmNlbnRlcjt3aWR0aDoyMHB4O2hlaWdodDoyMHB4O2JvcmRlci1yYWRpdXM6OTk5cHg7Ym9yZGVyOjEuNXB4IHNvbGlkIHZhcigtLWMtbGluZS0yKTtmb250LXNpemU6MTFweDtmb250LXdlaWdodDo3MDA7Zm9udC12YXJpYW50LW51bWVyaWM6dGFidWxhci1udW1zfS5mbG93IGxpLmRvbmV7Y29sb3I6dmFyKC0tYy1pbmstMil9LmZsb3cgbGkuZG9uZSAuZmRvdHtwb3NpdGlvbjpyZWxhdGl2ZTtib3JkZXItY29sb3I6dmFyKC0tYy1wcmltYXJ5KTtiYWNrZ3JvdW5kOnZhcigtLWMtcHJpbWFyeSk7Y29sb3I6dHJhbnNwYXJlbnR9LmZsb3cgbGkuZG9uZSAuZmRvdDphZnRlcntjb250ZW50OiIiO3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6NnB4O3RvcDozcHg7d2lkdGg6NHB4O2hlaWdodDo4cHg7Ym9yZGVyOnNvbGlkIHZhcigtLWMtb24tcHJpbWFyeSk7Ym9yZGVyLXdpZHRoOjAgMnB4IDJweCAwO3RyYW5zZm9ybTpyb3RhdGUoNDVkZWcpfS5mbG93IGxpLmRvbmUrbGk6YmVmb3JlLC5mbG93IGxpW2FyaWEtY3VycmVudD1zdGVwXTpiZWZvcmV7YmFja2dyb3VuZDp2YXIoLS1jLXByaW1hcnkpfS5mbG93IGxpW2FyaWEtY3VycmVudD1zdGVwXXtjb2xvcjp2YXIoLS1jLWluayl9LmZsb3cgbGlbYXJpYS1jdXJyZW50PXN0ZXBdIC5mZG90e2JvcmRlci1jb2xvcjp2YXIoLS1jLXByaW1hcnkpO2NvbG9yOnZhcigtLWMtcHJpbWFyeS1pbmspO2JveC1zaGFkb3c6MCAwIDAgM3B4IHZhcigtLWMtcHJpbWFyeS1zb2Z0KX0uYnVzeWJhcntwb3NpdGlvbjphYnNvbHV0ZTtpbnNldDowIDAgYXV0bztoZWlnaHQ6M3B4O292ZXJmbG93OmhpZGRlbjtib3JkZXItcmFkaXVzOnZhcigtLXItY2FyZCkgdmFyKC0tci1jYXJkKSAwIDA7cG9pbnRlci1ldmVudHM6bm9uZX0uY2FyZC5idXN5IC5idXN5YmFyOmJlZm9yZXtjb250ZW50OiIiO3Bvc2l0aW9uOmFic29sdXRlO2luc2V0OjA7d2lkdGg6NDAlO2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KDkwZGVnLHRyYW5zcGFyZW50LHZhcigtLWMtcHJpbWFyeSksdHJhbnNwYXJlbnQpO2FuaW1hdGlvbjpidXN5IDEuMXMgdmFyKC0tZWFzZSkgaW5maW5pdGV9QGtleWZyYW1lcyBidXN5ezAle3RyYW5zZm9ybTp0cmFuc2xhdGUoLTEwMCUpfXRve3RyYW5zZm9ybTp0cmFuc2xhdGUoMjYwJSl9fS5jYXJkLmJ1c3kgI2NvbnRlbnR7b3BhY2l0eTouNTU7dHJhbnNpdGlvbjpvcGFjaXR5IC4ycyB2YXIoLS1lYXNlKSAuMTJzfS5jYXJkLmJ1c3kgYnV0dG9uLC5jYXJkLmJ1c3kgaW5wdXR7cG9pbnRlci1ldmVudHM6bm9uZX0jY29udGVudHtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2dhcDoxNnB4O3BhZGRpbmc6NHB4IDIwcHggMjBweH0uaC1uYW1le21hcmdpbjowO2ZvbnQtc2l6ZToyMXB4O2ZvbnQtd2VpZ2h0OjcwMDtsaW5lLWhlaWdodDoxLjI7bGV0dGVyLXNwYWNpbmc6LS4wMmVtfS5oLXdoZXJle21hcmdpbi10b3A6NHB4O2NvbG9yOnZhcigtLWMtaW5rLTMpO2ZvbnQtc2l6ZToxM3B4fS5oLXN1bXtmb250LXNpemU6MTRweDtsaW5lLWhlaWdodDoxLjY7Y29sb3I6dmFyKC0tYy1pbmstMil9Lm5vdGV7cGFkZGluZzowO2ZvbnQtc2l6ZToxMi41cHg7bGluZS1oZWlnaHQ6MS41NTtjb2xvcjp2YXIoLS1jLWluay0zKX0uZW1wdHl7cGFkZGluZzoyOHB4IDhweDt0ZXh0LWFsaWduOmNlbnRlcjtmb250LXNpemU6MTRweDtjb2xvcjp2YXIoLS1jLWluay0zKX0ucHJvc2V7Zm9udC1zaXplOjEzLjVweDtsaW5lLWhlaWdodDoxLjY1O2NvbG9yOnZhcigtLWMtaW5rLTIpO3doaXRlLXNwYWNlOnByZS1saW5lfS5wcm9zZSBoNHttYXJnaW46MTRweCAwIDRweDtjb2xvcjp2YXIoLS1jLWluayk7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NjUwfS5wcm9zZSBoNDpmaXJzdC1jaGlsZHttYXJnaW4tdG9wOjB9LnNlY3ttYXJnaW46NHB4IDAgLTZweDtjb2xvcjp2YXIoLS1jLWluayk7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6NjgwO2xldHRlci1zcGFjaW5nOi0uMDFlbX0uc2VjLW57ZGlzcGxheTpibG9jazttYXJnaW4tdG9wOjJweDtjb2xvcjp2YXIoLS1jLWluay0zKTtmb250LXNpemU6MTIuNXB4O2ZvbnQtd2VpZ2h0OjUwMDtsZXR0ZXItc3BhY2luZzowfS5pY297ZmxleDpub25lO3dpZHRoOjE2cHg7aGVpZ2h0OjE2cHh9LmVyciwud2Fybm5vdGUsLnVucGFpZCwuYXNrZWQsLmdhcHtwb3NpdGlvbjpyZWxhdGl2ZTtib3JkZXItcmFkaXVzOnZhcigtLXItbWQpO3BhZGRpbmc6MTJweCAxNHB4IDEycHggMTZweDtmb250LXNpemU6MTNweDtsaW5lLWhlaWdodDoxLjU1fS5lcnI6YmVmb3JlLC53YXJubm90ZTpiZWZvcmUsLnVucGFpZDpiZWZvcmUsLmFza2VkOmJlZm9yZXtjb250ZW50OiIiO3Bvc2l0aW9uOmFic29sdXRlO2luc2V0OjEwcHggYXV0byAxMHB4IDA7d2lkdGg6M3B4O2JvcmRlci1yYWRpdXM6MCAzcHggM3B4IDA7YmFja2dyb3VuZDpjdXJyZW50Q29sb3J9LmVycntiYWNrZ3JvdW5kOnZhcigtLWMtZXJyb3Itc29mdCk7Y29sb3I6dmFyKC0tYy1lcnJvci1pbmspfS53YXJubm90ZXtiYWNrZ3JvdW5kOnZhcigtLWMtd2FybmluZy1zb2Z0KTtjb2xvcjp2YXIoLS1jLXdhcm5pbmctaW5rKX0udW5wYWlke2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47Z2FwOjJweDtiYWNrZ3JvdW5kOnZhcigtLWMtaW5mby1zb2Z0KTtjb2xvcjp2YXIoLS1jLWluay0yKX0udW5wYWlkOmJlZm9yZXtiYWNrZ3JvdW5kOnZhcigtLWMtaW5mbyl9LnVucGFpZCBie2NvbG9yOnZhcigtLWMtaW5mby1pbmspO2ZvbnQtd2VpZ2h0OjY4MH0uYXNrZWR7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtnYXA6NHB4O2JhY2tncm91bmQ6dmFyKC0tYy1zdW5rKTtjb2xvcjp2YXIoLS1jLWluay0yKX0uYXNrZWQ6YmVmb3Jle2JhY2tncm91bmQ6dmFyKC0tYy1saW5lLTIpfS5hc2tlZCBie2NvbG9yOnZhcigtLWMtaW5rKTtmb250LXdlaWdodDo2NTB9LmFza2VkLmZsYWd7YmFja2dyb3VuZDp2YXIoLS1jLXdhcm5pbmctc29mdCl9LmFza2VkLmZsYWc6YmVmb3Jle2JhY2tncm91bmQ6dmFyKC0tYy13YXJuaW5nKX0uYXNrZWQgLmZvb3R7bWFyZ2luLXRvcDo2cHh9LmRlbW9zdHJpcHtkaXNwbGF5OmZsZXg7Z2FwOjEwcHg7YWxpZ24taXRlbXM6Y2VudGVyO21hcmdpbjowIDAgMTJweDtwYWRkaW5nOjhweCAyMHB4O2JvcmRlci1ibG9jazoxcHggc29saWQgdmFyKC0tYy1saW5lKTtiYWNrZ3JvdW5kOnZhcigtLWMtaW5mby1zb2Z0KTtjb2xvcjp2YXIoLS1jLWluay0yKTtmb250LXNpemU6MTJweDtsaW5lLWhlaWdodDoxLjV9LmRlbW9zdHJpcCBie2ZsZXg6bm9uZTtwYWRkaW5nOjFweCA3cHg7Ym9yZGVyLXJhZGl1czo2cHg7YmFja2dyb3VuZDp2YXIoLS1jLWluZm8pO2NvbG9yOiNmZmY7Zm9udC1zaXplOjEwcHg7Zm9udC13ZWlnaHQ6NzUwO2xldHRlci1zcGFjaW5nOi4wOGVtO3RleHQtdHJhbnNmb3JtOnVwcGVyY2FzZX1bZGF0YS10aGVtZT1kYXJrXSAuZGVtb3N0cmlwIGJ7YmFja2dyb3VuZDojMmY1ZmQ2fS5nb3tkaXNwbGF5OmlubGluZS1mbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2dhcDo4cHg7bWluLWhlaWdodDo0NHB4O3BhZGRpbmc6MCAxOHB4O2JvcmRlcjoxcHggc29saWQgdmFyKC0tYy1wcmltYXJ5KTtib3JkZXItcmFkaXVzOnZhcigtLXItbWQpO2JhY2tncm91bmQ6dmFyKC0tYy1wcmltYXJ5KTtjb2xvcjp2YXIoLS1jLW9uLXByaW1hcnkpO2ZvbnQ6aW5oZXJpdDtmb250LXNpemU6MTQuNXB4O2ZvbnQtd2VpZ2h0OjY1MDtsZXR0ZXItc3BhY2luZzotLjAwNWVtO2xpbmUtaGVpZ2h0OjEuMjt0ZXh0LWFsaWduOmNlbnRlcjtjdXJzb3I6cG9pbnRlcjtib3gtc2hhZG93OjAgMXB4ICNmZmZmZmYyOSBpbnNldCwwIDFweCAycHggIzEwMTgyODFmO3RyYW5zaXRpb246YmFja2dyb3VuZC1jb2xvciAuMTVzIHZhcigtLWVhc2UpLGJvcmRlci1jb2xvciAuMTVzIHZhcigtLWVhc2UpLHRyYW5zZm9ybSAuMXMgdmFyKC0tZWFzZSl9LmdvOmhvdmVye2JhY2tncm91bmQ6dmFyKC0tYy1wcmltYXJ5LWhvdmVyKTtib3JkZXItY29sb3I6dmFyKC0tYy1wcmltYXJ5LWhvdmVyKX0uZ286YWN0aXZle2JhY2tncm91bmQ6dmFyKC0tYy1wcmltYXJ5LXByZXNzKTt0cmFuc2Zvcm06dHJhbnNsYXRlWSgxcHgpfS5nbyAuaWNve3dpZHRoOjE4cHg7aGVpZ2h0OjE4cHh9LmdvIC5wcmljZS1pbntwYWRkaW5nLWlubGluZS1zdGFydDoxMHB4O21hcmdpbi1pbmxpbmUtc3RhcnQ6MnB4O2JvcmRlci1pbmxpbmUtc3RhcnQ6MXB4IHNvbGlkIHJnYigyNTUgMjU1IDI1NSAvIDMyJSk7Zm9udC12YXJpYW50LW51bWVyaWM6dGFidWxhci1udW1zfS5nby5zb2Z0e2JhY2tncm91bmQ6dmFyKC0tYy1wcmltYXJ5LXNvZnQpO2JvcmRlci1jb2xvcjp2YXIoLS1jLXByaW1hcnktc29mdCk7Y29sb3I6dmFyKC0tYy1wcmltYXJ5LWluayk7Ym94LXNoYWRvdzpub25lfS5nby5zb2Z0OmhvdmVye2JhY2tncm91bmQ6dmFyKC0tYy1wcmltYXJ5LXNvZnQtMik7Ym9yZGVyLWNvbG9yOnZhcigtLWMtcHJpbWFyeS1zb2Z0LTIpfS5nby5pbnZlcnRlZHtiYWNrZ3JvdW5kOnZhcigtLWMtaW5rKTtib3JkZXItY29sb3I6dmFyKC0tYy1pbmspO2NvbG9yOnZhcigtLWMtYmcpO2JveC1zaGFkb3c6bm9uZX0uZ28uaW52ZXJ0ZWQ6aG92ZXJ7YmFja2dyb3VuZDp2YXIoLS1jLWluay0yKTtib3JkZXItY29sb3I6dmFyKC0tYy1pbmstMil9LmdvLnF1aWV0e2JhY2tncm91bmQ6dHJhbnNwYXJlbnQ7Ym9yZGVyLWNvbG9yOnZhcigtLWMtbGluZS0yKTtjb2xvcjp2YXIoLS1jLWluayk7Ym94LXNoYWRvdzpub25lfS5nby5xdWlldDpob3ZlcntiYWNrZ3JvdW5kOnZhcigtLWMtc3Vuayk7Ym9yZGVyLWNvbG9yOnZhcigtLWMtaW5rLTMpfS5nby5kYW5nZXJ7YmFja2dyb3VuZDojYzQyYjJiO2JvcmRlci1jb2xvcjojYzQyYjJiO2NvbG9yOiNmZmZ9LmdvLmRhbmdlcjpob3ZlcntiYWNrZ3JvdW5kOiNhOTIyMjI7Ym9yZGVyLWNvbG9yOiNhOTIyMjJ9LmdvLmJsb2Nre3dpZHRoOjEwMCV9LmdvLmJpZ3ttaW4taGVpZ2h0OjUycHg7Zm9udC1zaXplOjE1LjVweDtib3JkZXItcmFkaXVzOjE0cHh9LmdvLnNte21pbi1oZWlnaHQ6MzZweDtwYWRkaW5nOjAgMTRweDtmb250LXNpemU6MTNweDtib3JkZXItcmFkaXVzOjEwcHh9LmZvb3R7ZGlzcGxheTpmbGV4O2ZsZXgtd3JhcDp3cmFwO2dhcDo4cHh9LmZvb3Q+Lmdve2ZsZXg6MSAxIGF1dG99Lmxpbmt5e3BhZGRpbmc6MDtib3JkZXI6MDtiYWNrZ3JvdW5kOm5vbmU7Y29sb3I6dmFyKC0tYy1wcmltYXJ5LWluayk7Zm9udDppbmhlcml0O2ZvbnQtd2VpZ2h0OjYwMDt0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lO3RleHQtZGVjb3JhdGlvbi10aGlja25lc3M6MXB4O3RleHQtdW5kZXJsaW5lLW9mZnNldDozcHg7Y3Vyc29yOnBvaW50ZXJ9LnN0ZXB7ZGlzcGxheTppbmxpbmUtZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjJweDtwYWRkaW5nOjJweDtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWMtbGluZS0yKTtib3JkZXItcmFkaXVzOjk5OXB4O2JhY2tncm91bmQ6dmFyKC0tYy1iZyk7Y29sb3I6dmFyKC0tYy1pbmspfS5zdGVwIGJ1dHRvbntkaXNwbGF5OmdyaWQ7cGxhY2UtaXRlbXM6Y2VudGVyO3dpZHRoOjMycHg7aGVpZ2h0OjMycHg7Ym9yZGVyOjA7Ym9yZGVyLXJhZGl1czo5OTlweDtiYWNrZ3JvdW5kOnRyYW5zcGFyZW50O2NvbG9yOmluaGVyaXQ7Zm9udDppbmhlcml0O2ZvbnQtc2l6ZToxOHB4O2xpbmUtaGVpZ2h0OjE7Y3Vyc29yOnBvaW50ZXJ9LnN0ZXAgYnV0dG9uOmhvdmVye2JhY2tncm91bmQ6dmFyKC0tYy1zdW5rKX0uc3RlcCAubnttaW4td2lkdGg6MjJweDt0ZXh0LWFsaWduOmNlbnRlcjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo3MDB9LnN0ZXAubGlnaHR7YmFja2dyb3VuZDp2YXIoLS1jLWJnKTtjb2xvcjp2YXIoLS1jLWluayk7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1jLWxpbmUtMik7cGFkZGluZzoycHh9LnN0ZXAubGlnaHQgYnV0dG9ue3dpZHRoOjMwcHg7aGVpZ2h0OjMwcHh9LnN0ZXAubGlnaHQgYnV0dG9uOmhvdmVye2JhY2tncm91bmQ6dmFyKC0tYy1zdW5rKX0uYWRke2Rpc3BsYXk6Z3JpZDtwbGFjZS1pdGVtczpjZW50ZXI7d2lkdGg6NDBweDtoZWlnaHQ6NDBweDtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWMtbGluZS0yKTtib3JkZXItcmFkaXVzOjk5OXB4O2JhY2tncm91bmQ6dmFyKC0tYy1iZyk7Y29sb3I6dmFyKC0tYy1pbmspO2N1cnNvcjpwb2ludGVyO3RyYW5zaXRpb246YmFja2dyb3VuZC1jb2xvciAuMTVzIHZhcigtLWVhc2UpLGJvcmRlci1jb2xvciAuMTVzIHZhcigtLWVhc2UpfS5hZGQ6aG92ZXJ7Ym9yZGVyLWNvbG9yOnZhcigtLWMtcHJpbWFyeSk7Y29sb3I6dmFyKC0tYy1wcmltYXJ5LWluayk7YmFja2dyb3VuZDp2YXIoLS1jLXByaW1hcnktc29mdCl9LmdvLmFkZHt3aWR0aDphdXRvO2hlaWdodDphdXRvO2JvcmRlci1yYWRpdXM6dmFyKC0tci1tZCk7Ym9yZGVyLWNvbG9yOnZhcigtLWMtcHJpbWFyeSk7YmFja2dyb3VuZDp2YXIoLS1jLXByaW1hcnkpO2NvbG9yOnZhcigtLWMtb24tcHJpbWFyeSl9LmdvLmFkZDpob3ZlcntiYWNrZ3JvdW5kOnZhcigtLWMtcHJpbWFyeS1ob3Zlcik7Y29sb3I6dmFyKC0tYy1vbi1wcmltYXJ5KX0uY2hpcHMsLnBsYWNlc3tkaXNwbGF5OmZsZXg7ZmxleC13cmFwOndyYXA7Z2FwOjhweH0uY2hpcHtkaXNwbGF5OmlubGluZS1mbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6NnB4O21pbi1oZWlnaHQ6MzBweDtwYWRkaW5nOjAgMTJweDtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWMtbGluZSk7Ym9yZGVyLXJhZGl1czo5OTlweDtiYWNrZ3JvdW5kOnZhcigtLWMtYmcpO2NvbG9yOnZhcigtLWMtaW5rLTIpO2ZvbnQ6aW5oZXJpdDtmb250LXNpemU6MTIuNXB4O2ZvbnQtd2VpZ2h0OjUyMH1idXR0b24uY2hpcHtjdXJzb3I6cG9pbnRlcjt0cmFuc2l0aW9uOmJvcmRlci1jb2xvciAuMTVzIHZhcigtLWVhc2UpLGJhY2tncm91bmQtY29sb3IgLjE1cyB2YXIoLS1lYXNlKX1idXR0b24uY2hpcDpob3Zlcntib3JkZXItY29sb3I6dmFyKC0tYy1wcmltYXJ5KTtjb2xvcjp2YXIoLS1jLWluayl9LmNoaXAgc21hbGx7Y29sb3I6dmFyKC0tYy1pbmstMyk7Zm9udC1zaXplOjExLjVweDtmb250LXZhcmlhbnQtbnVtZXJpYzp0YWJ1bGFyLW51bXN9LmNoaXAucGxhY2V7bWluLWhlaWdodDozNHB4O3BhZGRpbmc6MCAxNHB4O2NvbG9yOnZhcigtLWMtaW5rKTtmb250LXNpemU6MTNweDtmb250LXdlaWdodDo1NjB9LmNoaXAucGxhY2UudGFie2ZvbnQtd2VpZ2h0OjY1MH0uY2hpcC5wbGFjZS50YWJbYXJpYS1leHBhbmRlZD10cnVlXSwuY2hpcC5wbGFjZS50b29sW2FyaWEtZXhwYW5kZWQ9dHJ1ZV17Ym9yZGVyLWNvbG9yOnZhcigtLWMtaW5rKTtiYWNrZ3JvdW5kOnZhcigtLWMtaW5rKTtjb2xvcjp2YXIoLS1jLWJnKX0uY2hpcC5wbGFjZS50YWJbYXJpYS1leHBhbmRlZD10cnVlXSBzbWFsbHtjb2xvcjppbmhlcml0O29wYWNpdHk6Ljd9LmNoaXAucGxhY2UuZ3JvdXAgaW1ne2hlaWdodDoyMHB4O3dpZHRoOmF1dG87Ym9yZGVyLXJhZGl1czo1cHh9LmNoaXAuc29ydFthcmlhLXByZXNzZWQ9dHJ1ZV0sLmNoaXAuYXNrW2FyaWEtcHJlc3NlZD10cnVlXXtib3JkZXItY29sb3I6dmFyKC0tYy1wcmltYXJ5KTtiYWNrZ3JvdW5kOnZhcigtLWMtcHJpbWFyeS1zb2Z0KTtjb2xvcjp2YXIoLS1jLXByaW1hcnktaW5rKX0uY2hpcC5zb3J0W2FyaWEtcHJlc3NlZD10cnVlXSBzbWFsbHtjb2xvcjppbmhlcml0fS5jaGlwLmFza1thcmlhLXByZXNzZWQ9dHJ1ZV06YmVmb3Jle2NvbnRlbnQ6IiI7d2lkdGg6NnB4O2hlaWdodDoxMHB4O21hcmdpbjotM3B4IDJweCAwIDA7Ym9yZGVyOnNvbGlkIGN1cnJlbnRDb2xvcjtib3JkZXItd2lkdGg6MCAycHggMnB4IDA7dHJhbnNmb3JtOnJvdGF0ZSg0NWRlZyl9LmJhZGdle2Rpc3BsYXk6aW5saW5lLWZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDo1cHg7aGVpZ2h0OjI0cHg7cGFkZGluZzowIDlweDtib3JkZXItcmFkaXVzOjdweDtiYWNrZ3JvdW5kOnZhcigtLWMtc3Vuayk7Y29sb3I6dmFyKC0tYy1pbmstMik7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NjIwO3doaXRlLXNwYWNlOm5vd3JhcH0uYmFkZ2UuZ29vZHtiYWNrZ3JvdW5kOnZhcigtLWMtc3VjY2Vzcy1zb2Z0KTtjb2xvcjp2YXIoLS1jLXN1Y2Nlc3MtaW5rKX0uYmFkZ2Uud2FybntiYWNrZ3JvdW5kOnZhcigtLWMtd2FybmluZy1zb2Z0KTtjb2xvcjp2YXIoLS1jLXdhcm5pbmctaW5rKX0uYmFkZ2UuYmFke2JhY2tncm91bmQ6dmFyKC0tYy1lcnJvci1zb2Z0KTtjb2xvcjp2YXIoLS1jLWVycm9yLWluayl9LmJhZGdlLmluZm97YmFja2dyb3VuZDp2YXIoLS1jLWluZm8tc29mdCk7Y29sb3I6dmFyKC0tYy1pbmZvLWluayl9LmJhZGdlc3tkaXNwbGF5OmZsZXg7ZmxleC13cmFwOndyYXA7Z2FwOjZweH0ud2hlbmJhcntkaXNwbGF5OmdyaWQ7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOm1pbm1heCgwLDFmcikgYXV0bztnYXA6MTBweDthbGlnbi1pdGVtczpzdHJldGNofS53aGVuLWRhdGVze2Rpc3BsYXk6Z3JpZDtncmlkLXRlbXBsYXRlLWNvbHVtbnM6MWZyIGF1dG8gMWZyO2FsaWduLWl0ZW1zOnN0cmV0Y2g7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1jLWxpbmUtMik7Ym9yZGVyLXJhZGl1czoxNHB4O2JhY2tncm91bmQ6dmFyKC0tYy1iZyk7b3ZlcmZsb3c6aGlkZGVufS53aGVuLXRpbGV7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjthbGlnbi1pdGVtczpmbGV4LXN0YXJ0O2dhcDoycHg7bWluLXdpZHRoOjA7cGFkZGluZzoxMHB4IDE0cHg7Ym9yZGVyOjA7YmFja2dyb3VuZDp0cmFuc3BhcmVudDtjb2xvcjppbmhlcml0O2ZvbnQ6aW5oZXJpdDt0ZXh0LWFsaWduOnN0YXJ0O2N1cnNvcjpwb2ludGVyO3RyYW5zaXRpb246YmFja2dyb3VuZC1jb2xvciAuMTVzIHZhcigtLWVhc2UpfS53aGVuLXRpbGU6aG92ZXJ7YmFja2dyb3VuZDp2YXIoLS1jLXN1bmspfS53aGVuLXRpbGVbYXJpYS1leHBhbmRlZD10cnVlXXtiYWNrZ3JvdW5kOnZhcigtLWMtcHJpbWFyeS1zb2Z0KTtib3gtc2hhZG93Omluc2V0IDAgLTJweCAwIHZhcigtLWMtcHJpbWFyeSl9LndoZW4tdGlsZTpmb2N1cy12aXNpYmxle291dGxpbmUtb2Zmc2V0Oi0zcHg7Ym9yZGVyLXJhZGl1czoxMnB4fS53bHtjb2xvcjp2YXIoLS1jLWluay0zKTtmb250LXNpemU6MTFweDtmb250LXdlaWdodDo2NTA7bGV0dGVyLXNwYWNpbmc6LjA2ZW07dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlfS53dntkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6YmFzZWxpbmU7Z2FwOjZweDt3aGl0ZS1zcGFjZTpub3dyYXA7Y29sb3I6dmFyKC0tYy1pbmspO2ZvbnQtc2l6ZToxNXB4O2ZvbnQtd2VpZ2h0OjY1MDtsZXR0ZXItc3BhY2luZzotLjAxZW19Lnd2IHNtYWxse2NvbG9yOnZhcigtLWMtaW5rLTMpO2ZvbnQtc2l6ZToxMi41cHg7Zm9udC13ZWlnaHQ6NTUwfS53aGVuLXNheXtncmlkLWNvbHVtbjoxIC8gLTE7Y29sb3I6dmFyKC0tYy1pbmstMik7Zm9udC1zaXplOjEzcHg7Zm9udC13ZWlnaHQ6NjAwfS53aGVuYmFyLnBlbmRpbmcgLndoZW4tZGF0ZXN7Ym9yZGVyLXN0eWxlOmRhc2hlZH0ud2hlbmJhci5wZW5kaW5nIC53dntjb2xvcjp2YXIoLS1jLWluay0zKX0ud2hlbi1ue2Rpc3BsYXk6Z3JpZDtwbGFjZS1pdGVtczpjZW50ZXI7YWxpZ24tc2VsZjpjZW50ZXI7cGFkZGluZzozcHggOHB4O2JvcmRlci1yYWRpdXM6OTk5cHg7YmFja2dyb3VuZDp2YXIoLS1jLXN1bmspO2NvbG9yOnZhcigtLWMtaW5rLTIpO2ZvbnQtc2l6ZToxMS41cHg7Zm9udC13ZWlnaHQ6NjUwO3doaXRlLXNwYWNlOm5vd3JhcH0ud2hlbi1zaWRle2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpzdHJldGNoO2dhcDo4cHh9LndoZW4tcm9vbXN7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2dhcDo0cHg7cGFkZGluZzo2cHggMTBweCA2cHggMTRweDtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWMtbGluZS0yKTtib3JkZXItcmFkaXVzOjE0cHg7YmFja2dyb3VuZDp2YXIoLS1jLWJnKX0ud2hlbi1yb29tcyAuc3RlcC5saWdodHtib3JkZXI6MDtwYWRkaW5nOjA7bWFyZ2luLWlubGluZS1zdGFydDotNnB4fS53aGVuLXNpZGUgLmdve2JvcmRlci1yYWRpdXM6MTRweH0uY2Fse2dyaWQtY29sdW1uOjEgLyAtMTtwYWRkaW5nOjE0cHggMTRweCAxMnB4O2JvcmRlcjoxcHggc29saWQgdmFyKC0tYy1saW5lKTtib3JkZXItcmFkaXVzOnZhcigtLXItbGcpO2JhY2tncm91bmQ6dmFyKC0tYy1yYWlzZSk7Ym94LXNoYWRvdzp2YXIoLS1jLXNoYWRvdy0yKTthbmltYXRpb246cmlzZSAuMThzIHZhcigtLWVhc2UpfUBrZXlmcmFtZXMgcmlzZXswJXtvcGFjaXR5OjA7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTRweCl9fS5jYWwtdG9we2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47Z2FwOjhweDttYXJnaW4tYm90dG9tOjhweH0uY2FsLXNheXtmb250LXNpemU6MTNweDtmb250LXdlaWdodDo2NTA7Y29sb3I6dmFyKC0tYy1pbmspfS5jYWwtc2F5IHNtYWxse2Rpc3BsYXk6YmxvY2s7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwO2NvbG9yOnZhcigtLWMtaW5rLTMpfS5jYWwtbmF2e2Rpc3BsYXk6ZmxleDtnYXA6NHB4fS5jYWwtbmF2IGJ1dHRvbntkaXNwbGF5OmdyaWQ7cGxhY2UtaXRlbXM6Y2VudGVyO3dpZHRoOjM0cHg7aGVpZ2h0OjM0cHg7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1jLWxpbmUpO2JvcmRlci1yYWRpdXM6MTBweDtiYWNrZ3JvdW5kOnZhcigtLWMtYmcpO2NvbG9yOnZhcigtLWMtaW5rKTtjdXJzb3I6cG9pbnRlcn0uY2FsLW5hdiBidXR0b246ZGlzYWJsZWR7b3BhY2l0eTouMzU7Y3Vyc29yOmRlZmF1bHR9LmNhbC1uYXYgYnV0dG9uOmhvdmVyOm5vdCg6ZGlzYWJsZWQpe2JhY2tncm91bmQ6dmFyKC0tYy1zdW5rKX0uY2FsLW1vbnRoc3tkaXNwbGF5OmdyaWQ7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjFmcjtnYXA6MjBweH0uY2FsLW1vbnRoKy5jYWwtbW9udGh7ZGlzcGxheTpub25lfS5jYWwtbXR7bWFyZ2luOjAgMCA2cHggNHB4O2ZvbnQtc2l6ZToxMy41cHg7Zm9udC13ZWlnaHQ6NjgwfS5jYWwtZ3JpZHtkaXNwbGF5OmdyaWQ7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOnJlcGVhdCg3LG1pbm1heCgwLDFmcikpO3Jvdy1nYXA6MnB4fS5jYWwtZG93e3BhZGRpbmc6NHB4IDAgNnB4O3RleHQtYWxpZ246Y2VudGVyO2ZvbnQtc2l6ZToxMXB4O2ZvbnQtd2VpZ2h0OjY1MDtjb2xvcjp2YXIoLS1jLWluay0zKX0uY2R7cG9zaXRpb246cmVsYXRpdmU7bWluLXdpZHRoOjA7aGVpZ2h0OjQwcHg7cGFkZGluZzowO2JvcmRlcjowO2JhY2tncm91bmQ6dHJhbnNwYXJlbnQ7Y29sb3I6dmFyKC0tYy1pbmspO2ZvbnQ6aW5oZXJpdDtmb250LXNpemU6MTMuNXB4O2ZvbnQtd2VpZ2h0OjU2MDtjdXJzb3I6cG9pbnRlcn0uY2Q+c3Bhbntwb3NpdGlvbjpyZWxhdGl2ZTt6LWluZGV4OjE7ZGlzcGxheTpncmlkO3BsYWNlLWl0ZW1zOmNlbnRlcjt3aWR0aDptaW4oMzhweCwxMDAlKTtoZWlnaHQ6MzhweDttYXJnaW46MXB4IGF1dG87Ym9yZGVyLXJhZGl1czo5OTlweDt0cmFuc2l0aW9uOmJhY2tncm91bmQtY29sb3IgLjEycyB2YXIoLS1lYXNlKX0uY2Q6aG92ZXI6bm90KDpkaXNhYmxlZCk+c3BhbntiYWNrZ3JvdW5kOnZhcigtLWMtc3Vuayk7Ym94LXNoYWRvdzppbnNldCAwIDAgMCAxcHggdmFyKC0tYy1saW5lLTIpfS5jZDpkaXNhYmxlZHtjb2xvcjp2YXIoLS1jLWluay0zKTtvcGFjaXR5Oi40NTtjdXJzb3I6ZGVmYXVsdH0uY2QudG9kYXk+c3BhbjphZnRlcntjb250ZW50OiIiO3Bvc2l0aW9uOmFic29sdXRlO2JvdHRvbTo1cHg7bGVmdDo1MCU7d2lkdGg6NHB4O2hlaWdodDo0cHg7bWFyZ2luLWxlZnQ6LTJweDtib3JkZXItcmFkaXVzOjk5OXB4O2JhY2tncm91bmQ6Y3VycmVudENvbG9yfS5jZC5iZXR3ZWVuOmJlZm9yZSwuY2QuaW4uaGFzLW91dDpiZWZvcmUsLmNkLm91dDpiZWZvcmV7Y29udGVudDoiIjtwb3NpdGlvbjphYnNvbHV0ZTtpbnNldDoxcHggMDtiYWNrZ3JvdW5kOnZhcigtLWMtcHJpbWFyeS1zb2Z0KX0uY2Qub3V0OmJlZm9yZXtyaWdodDo1MCV9LmNkLmluPnNwYW4sLmNkLm91dD5zcGFue2JhY2tncm91bmQ6dmFyKC0tYy1wcmltYXJ5KTtjb2xvcjp2YXIoLS1jLW9uLXByaW1hcnkpO2ZvbnQtd2VpZ2h0OjcwMH0uY2QuaW46aG92ZXI+c3BhbiwuY2Qub3V0OmhvdmVyPnNwYW57YmFja2dyb3VuZDp2YXIoLS1jLXByaW1hcnktaG92ZXIpO2JveC1zaGFkb3c6bm9uZX0uY2QucmVhY2g6YmVmb3JlLC5jZC5yZWFjaC1lbmQ6YmVmb3Jle2NvbnRlbnQ6IiI7cG9zaXRpb246YWJzb2x1dGU7aW5zZXQ6MXB4IDA7YmFja2dyb3VuZDp2YXIoLS1jLXByaW1hcnktc29mdCl9LmNkLnJlYWNoLWVuZDpiZWZvcmV7cmlnaHQ6NTAlfS5jZC5yZWFjaC1lbmQ+c3Bhbntib3gtc2hhZG93Omluc2V0IDAgMCAwIDEuNXB4IHZhcigtLWMtcHJpbWFyeSl9LmNkLmhhcy1wPnNwYW46YmVmb3Jle2NvbnRlbnQ6IiI7cG9zaXRpb246YWJzb2x1dGU7dG9wOjRweDtyaWdodDo2cHg7d2lkdGg6NXB4O2hlaWdodDo1cHg7Ym9yZGVyLXJhZGl1czo5OTlweDtiYWNrZ3JvdW5kOnZhcigtLWMtbGluZS0yKX0uY2QuYmVzdD5zcGFuOmJlZm9yZXtiYWNrZ3JvdW5kOnZhcigtLWMtc3VjY2Vzcyl9LmNhbC1iZXN0e2NvbG9yOnZhcigtLWMtc3VjY2Vzcy1pbmspO2ZvbnQtd2VpZ2h0OjY1MH0uY2FsLWJlc3Q6YmVmb3Jle2NvbnRlbnQ6IiI7ZGlzcGxheTppbmxpbmUtYmxvY2s7d2lkdGg6N3B4O2hlaWdodDo3cHg7bWFyZ2luLWlubGluZS1lbmQ6NnB4O2JvcmRlci1yYWRpdXM6OTk5cHg7YmFja2dyb3VuZDp2YXIoLS1jLXN1Y2Nlc3MpfS5jZC5ibGFua3twb2ludGVyLWV2ZW50czpub25lfS5jYWwtZm9vdHtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuO2dhcDoxMHB4O21hcmdpbi10b3A6MTBweDtwYWRkaW5nLXRvcDoxMHB4O2JvcmRlci10b3A6MXB4IHNvbGlkIHZhcigtLWMtbGluZSk7Zm9udC1zaXplOjEyLjVweDtjb2xvcjp2YXIoLS1jLWluay0zKX0uZmxleC1kYXRlc3twb3NpdGlvbjpyZWxhdGl2ZTtkaXNwbGF5OmdyaWQ7Z3JpZC1hdXRvLWZsb3c6Y29sdW1uO2dyaWQtYXV0by1jb2x1bW5zOm1pbm1heCgxMDhweCwxZnIpO2dhcDo2cHg7b3ZlcmZsb3cteDphdXRvO3Njcm9sbGJhci13aWR0aDpub25lO3Njcm9sbC1zbmFwLXR5cGU6eCBwcm94aW1pdHk7cGFkZGluZzoycHg7bWFyZ2luOi0ycHg7bWFzay1pbWFnZTpsaW5lYXItZ3JhZGllbnQoOTBkZWcsIzAwMCBjYWxjKDEwMCUgLSAyOHB4KSx0cmFuc3BhcmVudCl9LmZsZXgtZGF0ZXMuYXQtZW5ke21hc2staW1hZ2U6bm9uZX0uZmR7c2Nyb2xsLXNuYXAtYWxpZ246Y2VudGVyfS5mbGV4LWRhdGVzOjotd2Via2l0LXNjcm9sbGJhcntkaXNwbGF5Om5vbmV9LmZke2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47YWxpZ24taXRlbXM6ZmxleC1zdGFydDtnYXA6MnB4O3BhZGRpbmc6OXB4IDExcHg7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1jLWxpbmUpO2JvcmRlci1yYWRpdXM6MTJweDtiYWNrZ3JvdW5kOnZhcigtLWMtYmcpO2NvbG9yOnZhcigtLWMtaW5rKTtmb250OmluaGVyaXQ7dGV4dC1hbGlnbjpzdGFydDtjdXJzb3I6cG9pbnRlcjt0cmFuc2l0aW9uOmJvcmRlci1jb2xvciAuMTVzIHZhcigtLWVhc2UpLGJhY2tncm91bmQtY29sb3IgLjE1cyB2YXIoLS1lYXNlKX0uZmQ6aG92ZXJ7Ym9yZGVyLWNvbG9yOnZhcigtLWMtcHJpbWFyeSl9LmZkLWRheXtjb2xvcjp2YXIoLS1jLWluay0zKTtmb250LXNpemU6MTEuNXB4O2ZvbnQtd2VpZ2h0OjYwMDt3aGl0ZS1zcGFjZTpub3dyYXB9LmZkLXByaWNle2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjcwMDt3aGl0ZS1zcGFjZTpub3dyYXB9LmZkLm9ue2JvcmRlci1jb2xvcjp2YXIoLS1jLXByaW1hcnkpO2JhY2tncm91bmQ6dmFyKC0tYy1wcmltYXJ5LXNvZnQpO2JveC1zaGFkb3c6aW5zZXQgMCAwIDAgMXB4IHZhcigtLWMtcHJpbWFyeSl9LmZkLm9uIC5mZC1kYXl7Y29sb3I6dmFyKC0tYy1wcmltYXJ5LWluayl9LmZkLmJlc3QgLmZkLXByaWNle2NvbG9yOnZhcigtLWMtc3VjY2Vzcy1pbmspfS5mZC5iZXN0IC5mZC1kYXk6YWZ0ZXJ7Y29udGVudDoiIMK3IExvd2VzdCI7Y29sb3I6dmFyKC0tYy1zdWNjZXNzLWluayk7Zm9udC13ZWlnaHQ6NzAwfS5mZC5vdXR7YmFja2dyb3VuZDp2YXIoLS1jLXN1bmspO2JvcmRlci1zdHlsZTpkYXNoZWR9LmZkLm91dCAuZmQtcHJpY2V7Y29sb3I6dmFyKC0tYy1pbmstMyk7Zm9udC13ZWlnaHQ6NjAwfS5oZWxsb3tkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2dhcDo0cHh9LmhlbGxvIC5oLW5hbWV7Zm9udC1zaXplOjI0cHh9LnNlYXJjaHtkaXNwbGF5OmdyaWQ7Z2FwOjEwcHg7cGFkZGluZzoxMnB4O2JvcmRlci1yYWRpdXM6MThweDtiYWNrZ3JvdW5kOnZhcigtLWMtc3Vuayl9LnNlYXJjaCAud2hlcmV7cG9zaXRpb246cmVsYXRpdmU7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6MTBweDtwYWRkaW5nOjAgMTRweDttaW4taGVpZ2h0OjUycHg7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1jLWxpbmUtMik7Ym9yZGVyLXJhZGl1czoxNHB4O2JhY2tncm91bmQ6dmFyKC0tYy1iZyk7Y29sb3I6dmFyKC0tYy1pbmstMyk7Zm9udC1zaXplOjB9LnNlYXJjaCAud2hlcmU6Zm9jdXMtd2l0aGlue2JvcmRlci1jb2xvcjp2YXIoLS1jLXByaW1hcnkpO2JveC1zaGFkb3c6MCAwIDAgM3B4IHZhcigtLWMtcHJpbWFyeS1zb2Z0KX0uc2VhcmNoIC53aGVyZSAuaWNve3dpZHRoOjE4cHg7aGVpZ2h0OjE4cHh9LnNlYXJjaCAud2hlcmUgaW5wdXR7ZmxleDoxO21pbi13aWR0aDowO2hlaWdodDo1MHB4O2JvcmRlcjowO291dGxpbmU6MDtiYWNrZ3JvdW5kOnRyYW5zcGFyZW50O2NvbG9yOnZhcigtLWMtaW5rKTtmb250OmluaGVyaXQ7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6NTUwfS5zZWFyY2ggLndoZXJlIGlucHV0OjpwbGFjZWhvbGRlcntjb2xvcjp2YXIoLS1jLWluay0zKTtmb250LXdlaWdodDo0NTB9LnNlYXJjaCAud2hlbi1kYXRlcywuc2VhcmNoIC53aGVuLXJvb21ze2JvcmRlci1jb2xvcjp2YXIoLS1jLWxpbmUtMil9LnJlZ2lvbntkaXNwbGF5OmdyaWQ7Z2FwOjEwcHh9LmNvdW50cnluYW1le2NvbG9yOnZhcigtLWMtaW5rLTMpO2ZvbnQtc2l6ZToxMS41cHg7Zm9udC13ZWlnaHQ6NzAwO2xldHRlci1zcGFjaW5nOi4wN2VtO3RleHQtdHJhbnNmb3JtOnVwcGVyY2FzZX0uY291bnRyeW5hbWUgc21hbGx7Zm9udC13ZWlnaHQ6NTAwO2xldHRlci1zcGFjaW5nOjA7dGV4dC10cmFuc2Zvcm06bm9uZX0uZGVzdHtkaXNwbGF5OmdyaWQ7Z2FwOjhweDtwYWRkaW5nOjEwcHggMCAxMnB4O2JvcmRlci1ib3R0b206MXB4IHNvbGlkIHZhcigtLWMtbGluZSl9LmRlc3Q6bGFzdC1jaGlsZHtib3JkZXItYm90dG9tOjB9LmRlc3QtY291bnRyeXtqdXN0aWZ5LXNlbGY6c3RhcnQ7cGFkZGluZzowO2JvcmRlcjowO2JhY2tncm91bmQ6bm9uZTtjb2xvcjp2YXIoLS1jLWluayk7Zm9udDppbmhlcml0O2ZvbnQtc2l6ZToxNC41cHg7Zm9udC13ZWlnaHQ6NjUwO3RleHQtYWxpZ246c3RhcnQ7Y3Vyc29yOnBvaW50ZXJ9LmRlc3QtY291bnRyeSBzbWFsbHtjb2xvcjp2YXIoLS1jLWluay0zKTtmb250LXdlaWdodDo1MDB9LmRlc3QtY291bnRyeTpob3Zlcntjb2xvcjp2YXIoLS1jLXByaW1hcnktaW5rKX0udG9vbGJhcntnYXA6OHB4fS5jaGlwLnBsYWNlLnRvb2x7Z2FwOjdweDtmb250LXdlaWdodDo2MjB9LmNoaXAucGxhY2UudG9vbCAuaWNve3dpZHRoOjE1cHg7aGVpZ2h0OjE1cHg7b3BhY2l0eTouOH0uZmlsdGVyLXBhbmVse2Rpc3BsYXk6Z3JpZDtnYXA6MTJweDtwYWRkaW5nOjE0cHg7Ym9yZGVyLXJhZGl1czp2YXIoLS1yLWxnKTtiYWNrZ3JvdW5kOnZhcigtLWMtc3Vuayl9LmZncm91cHtkaXNwbGF5OmZsZXg7ZmxleC13cmFwOndyYXA7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDo4cHh9LnNvcnRzLWt7bWluLXdpZHRoOjUycHg7Y29sb3I6dmFyKC0tYy1pbmstMyk7Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NzAwO2xldHRlci1zcGFjaW5nOi4wNmVtO3RleHQtdHJhbnNmb3JtOnVwcGVyY2FzZX0uY2l0eWdyb3Vwe2Rpc3BsYXk6Z3JpZDtnYXA6MTBweH0uY2l0eWdyb3VwKy5jaXR5Z3JvdXB7bWFyZ2luLXRvcDo4cHh9LmNpdHluYW1le2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpiYXNlbGluZTtnYXA6NnB4O2NvbG9yOnZhcigtLWMtaW5rKTtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo3MDA7bGV0dGVyLXNwYWNpbmc6LS4wMWVtfS5jaXR5bmFtZSBzbWFsbHtjb2xvcjp2YXIoLS1jLWluay0zKTtmb250LXNpemU6MTIuNXB4O2ZvbnQtd2VpZ2h0OjUwMH0udGlsZXN7ZGlzcGxheTpncmlkO2dyaWQtdGVtcGxhdGUtY29sdW1uczpyZXBlYXQoYXV0by1maWxsLG1pbm1heCgyMjBweCwxZnIpKTtnYXA6MTRweH0udGlsZXtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO3BhZGRpbmc6MDtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWMtbGluZSk7Ym9yZGVyLXJhZGl1czp2YXIoLS1yLWxnKTtvdmVyZmxvdzpoaWRkZW47YmFja2dyb3VuZDp2YXIoLS1jLXJhaXNlKTtjb2xvcjppbmhlcml0O2ZvbnQ6aW5oZXJpdDt0ZXh0LWFsaWduOnN0YXJ0O2N1cnNvcjpwb2ludGVyO3RyYW5zaXRpb246Ym9yZGVyLWNvbG9yIC4xOHMgdmFyKC0tZWFzZSksYm94LXNoYWRvdyAuMThzIHZhcigtLWVhc2UpLHRyYW5zZm9ybSAuMThzIHZhcigtLWVhc2UpfS50aWxlOmhvdmVye2JvcmRlci1jb2xvcjp2YXIoLS1jLWxpbmUtMik7Ym94LXNoYWRvdzp2YXIoLS1jLXNoYWRvdy0yKTt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMXB4KX0udGlsZTpob3ZlciAudC1zaG90IGltZ3t0cmFuc2Zvcm06c2NhbGUoMS4wMyl9LnQtc2hvdHtwb3NpdGlvbjpyZWxhdGl2ZTtkaXNwbGF5OmdyaWQ7cGxhY2UtaXRlbXM6Y2VudGVyO2FzcGVjdC1yYXRpbzo0IC8gMztvdmVyZmxvdzpoaWRkZW47YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQoMTQwZGVnLHZhcigtLXNob3QtYSksdmFyKC0tc2hvdC1iKSk7Y29sb3I6I2ZmZn0udC1zaG90IGltZywuaGVybyBpbWcsLnRodW1iIGltZywucm9vbS1zaG90IGltZ3twb3NpdGlvbjphYnNvbHV0ZTtpbnNldDowO3otaW5kZXg6MTt3aWR0aDoxMDAlO2hlaWdodDoxMDAlO29iamVjdC1maXQ6Y292ZXI7dHJhbnNpdGlvbjp0cmFuc2Zvcm0gLjVzIHZhcigtLWVhc2UpfS50LW1hcmt7cG9zaXRpb246cmVsYXRpdmU7ei1pbmRleDowO2ZvbnQtZmFtaWx5OnZhcigtLWYtZGlzcGxheSk7Zm9udC1zaXplOjMwcHg7Zm9udC13ZWlnaHQ6NjAwO2xldHRlci1zcGFjaW5nOi4wNGVtO29wYWNpdHk6Ljl9LnQtYnJhbmR7cG9zaXRpb246YWJzb2x1dGU7aW5zZXQtYmxvY2stc3RhcnQ6MTBweDtpbnNldC1pbmxpbmUtc3RhcnQ6MTBweDt6LWluZGV4OjI7cGFkZGluZzozcHggOXB4O2JvcmRlci1yYWRpdXM6OTk5cHg7YmFja2dyb3VuZDojMGEwZTE4OTQ7Y29sb3I6I2ZmZjtmb250LXNpemU6MTFweDtmb250LXdlaWdodDo2NTA7bGV0dGVyLXNwYWNpbmc6LjAyZW07YmFja2Ryb3AtZmlsdGVyOmJsdXIoNnB4KX0udC1ib2R5e2Rpc3BsYXk6ZmxleDtmbGV4OjE7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2dhcDozcHg7cGFkZGluZzoxMnB4IDE0cHggMTRweH0udC1uYW1le3RleHQtd3JhcDpwcmV0dHk7ZGlzcGxheTotd2Via2l0LWJveDtvdmVyZmxvdzpoaWRkZW47LXdlYmtpdC1ib3gtb3JpZW50OnZlcnRpY2FsOy13ZWJraXQtbGluZS1jbGFtcDoyO2xpbmUtY2xhbXA6Mjtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo2NTA7bGluZS1oZWlnaHQ6MS4zO2xldHRlci1zcGFjaW5nOi0uMDFlbX0udC13aGVyZTplbXB0eXtkaXNwbGF5Om5vbmV9LnQtbWV0YXtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDo4cHg7bWluLXdpZHRoOjB9LnQtbWV0YSAucmF0ZXttYXJnaW4taW5saW5lLXN0YXJ0OmF1dG99LnQtd2hlcmV7bWluLXdpZHRoOjA7b3ZlcmZsb3c6aGlkZGVuO2NvbG9yOnZhcigtLWMtaW5rLTMpO2ZvbnQtc2l6ZToxMi41cHg7d2hpdGUtc3BhY2U6bm93cmFwO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXN9LnQtZm9vdHtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6ZmxleC1lbmQ7anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47Z2FwOjhweDttYXJnaW4tdG9wOmF1dG87cGFkZGluZy10b3A6MTBweH0udC1mcm9te2Rpc3BsYXk6YmxvY2s7Y29sb3I6dmFyKC0tYy1pbmspO2ZvbnQtc2l6ZToxOHB4O2ZvbnQtd2VpZ2h0Ojc1MDtsaW5lLWhlaWdodDoxLjE1O2xldHRlci1zcGFjaW5nOi0uMDFlbX0udC1mcm9tIHNtYWxsLC50LXN1YntkaXNwbGF5OmJsb2NrO2NvbG9yOnZhcigtLWMtaW5rLTMpO2ZvbnQtc2l6ZToxMS41cHg7Zm9udC13ZWlnaHQ6NTAwO2xldHRlci1zcGFjaW5nOjB9LnQtZnJvbSAudC1wcmV7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTUwO2NvbG9yOnZhcigtLWMtaW5rLTMpfS50LWZyb20udC1ub25le2NvbG9yOnZhcigtLWMtaW5rLTMpO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtd2VpZ2h0OjYwMH0ucmF0ZXtkaXNwbGF5OmlubGluZS1mbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6NHB4O2NvbG9yOnZhcigtLWMtaW5rKTtmb250LXNpemU6MTIuNXB4O2ZvbnQtd2VpZ2h0OjY1MDt3aGl0ZS1zcGFjZTpub3dyYXB9LnJhdGUgc3Zne2NvbG9yOnZhcigtLWMtaW5rKX0ucmF0ZSAudC1mcm9te2Rpc3BsYXk6aW5saW5lfS5yYXRlIHNtYWxse2NvbG9yOnZhcigtLWMtaW5rLTMpO2ZvbnQtd2VpZ2h0OjUwMH0udC10YWdze2Rpc3BsYXk6ZmxleDtmbGV4LXdyYXA6d3JhcDtnYXA6NnB4O21hcmdpbi10b3A6OHB4fS50LXRhZ3MgLnBlcmt7Zm9udC1zaXplOjEycHh9LnRpbGUub3ZlcntvcGFjaXR5Oi45Mn0uaGVyb3twb3NpdGlvbjpyZWxhdGl2ZTtkaXNwbGF5OmdyaWQ7cGxhY2UtaXRlbXM6Y2VudGVyO21hcmdpbjotNHB4IC0yMHB4IDA7YXNwZWN0LXJhdGlvOjE2IC8gODtvdmVyZmxvdzpoaWRkZW47YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQoMTQwZGVnLHZhcigtLXNob3QtYSksdmFyKC0tc2hvdC1iKSk7Y29sb3I6I2ZmZn0uaGVybyBpbWd7b2JqZWN0LXBvc2l0aW9uOmNlbnRlciA1OCV9Lmhlcm86YWZ0ZXJ7Y29udGVudDoiIjtwb3NpdGlvbjphYnNvbHV0ZTtpbnNldDowO3otaW5kZXg6MTtiYWNrZ3JvdW5kOnZhcigtLWMtc2NyaW0pfS5oZXJvIC50LW1hcmt7Zm9udC1zaXplOjQ0cHh9Lmhlcm8tdHh0e3Bvc2l0aW9uOmFic29sdXRlO2luc2V0OmF1dG8gMCAwO3otaW5kZXg6MjtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2dhcDo2cHg7cGFkZGluZzowIDIwcHggMThweDtjb2xvcjojZmZmfS5oZXJvLXR4dCAudC1icmFuZHtwb3NpdGlvbjpzdGF0aWM7YWxpZ24tc2VsZjpmbGV4LXN0YXJ0fS5ob3RlbC1uYW1le21hcmdpbjowO2h5cGhlbnM6bm9uZTtmb250LWZhbWlseTp2YXIoLS1mLWRpc3BsYXkpO2ZvbnQtc2l6ZToyOHB4O2ZvbnQtd2VpZ2h0OjYwMDtsaW5lLWhlaWdodDoxLjE7bGV0dGVyLXNwYWNpbmc6LS4wMWVtO3RleHQtd3JhcDpiYWxhbmNlO3RleHQtc2hhZG93OjAgMXB4IDE4cHggcmdiKDAgMCAwIC8gMzAlKX0uaGVyby13aGVyZXtkaXNwbGF5OmZsZXg7ZmxleC13cmFwOndyYXA7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDo0cHggMTBweDtjb2xvcjojZmZmZmZmZTU7Zm9udC1zaXplOjEzcHg7Zm9udC13ZWlnaHQ6NTUwfS5oZXJvLXdoZXJlIC5yYXRle2NvbG9yOiNmZmZ9Lmhlcm8td2hlcmUgLnJhdGUgc3Zne2NvbG9yOiNmZmQyN2F9Lmhlcm8td2hlcmUgLnJhdGUgc21hbGx7Y29sb3I6I2ZmZmZmZmM3O2ZvbnQtd2VpZ2h0OjUwMH0uYW1lbntkaXNwbGF5OmZsZXg7ZmxleC13cmFwOndyYXA7Z2FwOjZweCAxNnB4O21hcmdpbjowO3BhZGRpbmc6MDtsaXN0LXN0eWxlOm5vbmU7Y29sb3I6dmFyKC0tYy1pbmstMik7Zm9udC1zaXplOjEzcHh9LmFtZW4gbGl7ZGlzcGxheTppbmxpbmUtZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjdweH0uYW1lbiBsaTpiZWZvcmV7Y29udGVudDoiIjt3aWR0aDo1cHg7aGVpZ2h0OjVweDtib3JkZXItcmFkaXVzOjk5OXB4O2JhY2tncm91bmQ6dmFyKC0tYy1wcmltYXJ5KTtvcGFjaXR5Oi43fS5yb29tc3tkaXNwbGF5OmdyaWQ7Z2FwOjEycHh9LnJvb217ZGlzcGxheTpncmlkO2dyaWQtdGVtcGxhdGUtY29sdW1uczoxMTZweCAxZnI7Z3JpZC10ZW1wbGF0ZS1hcmVhczoic2hvdCBtYWluIiAiYnV5IGJ1eSI7Z2FwOjEycHggMTRweDtwYWRkaW5nOjEycHg7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1jLWxpbmUpO2JvcmRlci1yYWRpdXM6dmFyKC0tci1sZyk7YmFja2dyb3VuZDp2YXIoLS1jLXJhaXNlKTt0cmFuc2l0aW9uOmJvcmRlci1jb2xvciAuMThzIHZhcigtLWVhc2UpLGJveC1zaGFkb3cgLjE4cyB2YXIoLS1lYXNlKX0ucm9vbTpob3Zlcntib3JkZXItY29sb3I6dmFyKC0tYy1saW5lLTIpfS5yb29tLmhlbGR7Ym9yZGVyLWNvbG9yOnZhcigtLWMtcHJpbWFyeSk7Ym94LXNoYWRvdzowIDAgMCAxcHggdmFyKC0tYy1wcmltYXJ5KX0ucm9vbS1zaG90e2dyaWQtYXJlYTpzaG90O3Bvc2l0aW9uOnJlbGF0aXZlO2Rpc3BsYXk6Z3JpZDtwbGFjZS1pdGVtczpjZW50ZXI7YXNwZWN0LXJhdGlvOjE7b3ZlcmZsb3c6aGlkZGVuO2JvcmRlci1yYWRpdXM6MTJweDtiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCgxNDBkZWcsdmFyKC0tc2hvdC1hKSx2YXIoLS1zaG90LWIpKTtjb2xvcjojZmZmO2ZvbnQtZmFtaWx5OnZhcigtLWYtZGlzcGxheSk7Zm9udC1zaXplOjIycHh9LnJvb20tbWFpbntncmlkLWFyZWE6bWFpbjtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2dhcDo2cHg7bWluLXdpZHRoOjB9LnJvb20tbmFtZXttYXJnaW46MDtmb250LXNpemU6MTZweDtmb250LXdlaWdodDo2ODA7bGluZS1oZWlnaHQ6MS4zO2xldHRlci1zcGFjaW5nOi0uMDFlbX0uZmFjdHN7ZGlzcGxheTpmbGV4O2ZsZXgtd3JhcDp3cmFwO2dhcDoycHggMTJweDttYXJnaW46MDtwYWRkaW5nOjA7bGlzdC1zdHlsZTpub25lO2NvbG9yOnZhcigtLWMtaW5rLTMpO2ZvbnQtc2l6ZToxMi41cHh9LmZhY3RzIGxpe2Rpc3BsYXk6aW5saW5lLWZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDo1cHh9LmZhY3RzIC5pY297d2lkdGg6MTRweDtoZWlnaHQ6MTRweDtvcGFjaXR5Oi44NX0ucGVya3N7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtnYXA6NHB4O21hcmdpbjoycHggMCAwO3BhZGRpbmc6MDtsaXN0LXN0eWxlOm5vbmV9LnBlcmt7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmZsZXgtc3RhcnQ7Z2FwOjdweDtjb2xvcjp2YXIoLS1jLWluay0yKTtmb250LXNpemU6MTNweDtsaW5lLWhlaWdodDoxLjM1fS5wZXJrIC5pY297bWFyZ2luLXRvcDoxcHg7Y29sb3I6dmFyKC0tYy1pbmspfS5wZXJrIGJ7Y29sb3I6dmFyKC0tYy1pbmspO2ZvbnQtd2VpZ2h0OjY1MH0ucGVyay53YXJuLC5wZXJrLndhcm4gLmljbywucGVyay53YXJuIGJ7Y29sb3I6dmFyKC0tYy13YXJuaW5nLWluayl9LnBlcmsuc2F2ZSwucGVyay5zYXZlIC5pY28sLnBlcmsuc2F2ZSBie2NvbG9yOnZhcigtLWMtc3VjY2Vzcy1pbmspfS5yb29tLWJ1eXtncmlkLWFyZWE6YnV5O2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47Z2FwOjEycHg7cGFkZGluZy10b3A6MTJweDtib3JkZXItdG9wOjFweCBzb2xpZCB2YXIoLS1jLWxpbmUpfS5yb29tLWJ1eSAucHJpY2V7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtnYXA6MXB4O21pbi13aWR0aDowfS5yb29tLWJ1eSAuYWN0aW9ue2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjhweH0ucC10b3RhbHtjb2xvcjp2YXIoLS1jLWluayk7Zm9udC1zaXplOjIwcHg7Zm9udC13ZWlnaHQ6NzUwO2xpbmUtaGVpZ2h0OjEuMTU7bGV0dGVyLXNwYWNpbmc6LS4wMTVlbX0ucC11bml0e2NvbG9yOnZhcigtLWMtaW5rLTIpO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjU1MH0ucC1uaWdodHtjb2xvcjp2YXIoLS1jLWluay0zKTtmb250LXNpemU6MTJweH0ucC13YXN7Y29sb3I6dmFyKC0tYy1pbmstMyk7Zm9udC1zaXplOjEyLjVweDt0ZXh0LWRlY29yYXRpb246bGluZS10aHJvdWdofS5wLW1lbWJlcnthbGlnbi1zZWxmOmZsZXgtc3RhcnQ7bWFyZ2luLXRvcDozcHg7cGFkZGluZzoxcHggN3B4O2JvcmRlci1yYWRpdXM6NnB4O2JhY2tncm91bmQ6dmFyKC0tYy1zdWNjZXNzLXNvZnQpO2NvbG9yOnZhcigtLWMtc3VjY2Vzcy1pbmspO2ZvbnQtc2l6ZToxMS41cHg7Zm9udC13ZWlnaHQ6NzAwfS5sZWZ0e2FsaWduLXNlbGY6ZmxleC1zdGFydH0ucnR5cGUgLnJvb20tc2hvdCwucnR5cGUgLnJvb20tbWFpbiwucnR5cGUgLnJvb20tYnV5e2dyaWQtYXJlYTphdXRvfS5ydHlwZXtvdmVyZmxvdzpoaWRkZW47Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1jLWxpbmUpO2JvcmRlci1yYWRpdXM6dmFyKC0tci1sZyk7YmFja2dyb3VuZDp2YXIoLS1jLXJhaXNlKX0ucnR5cGUuaGVsZHtib3JkZXItY29sb3I6dmFyKC0tYy1wcmltYXJ5KX0ucnR5cGUtaGVhZHtkaXNwbGF5OmdyaWQ7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjk2cHggbWlubWF4KDAsMWZyKTtnYXA6MTJweDtwYWRkaW5nOjEycHh9LnJ0eXBlLWhlYWQgLnJvb20tc2hvdHt3aWR0aDoxMDAlO21pbi1oZWlnaHQ6MDthc3BlY3QtcmF0aW86MTthbGlnbi1zZWxmOnN0YXJ0fS5ydHlwZS1ue2NvbG9yOnZhcigtLWMtaW5rLTMpO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjYwMH0ucmF0ZXN7ZGlzcGxheTpncmlkfS5ycmF0ZXtkaXNwbGF5OmdyaWQ7Z2FwOjEwcHg7cGFkZGluZzoxMnB4IDE0cHggMTRweDtib3JkZXItdG9wOjFweCBzb2xpZCB2YXIoLS1jLWxpbmUpfS5ycmF0ZS5oZWxke2JhY2tncm91bmQ6dmFyKC0tYy1wcmltYXJ5LXNvZnQpfS5yYXRlLW1haW57ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtnYXA6NnB4O21pbi13aWR0aDowfS5yYXRlLW5hbWV7Zm9udC1zaXplOjE0LjVweDtmb250LXdlaWdodDo2NTA7bGluZS1oZWlnaHQ6MS4zfS5ycmF0ZSAucm9vbS1idXl7cGFkZGluZy10b3A6MDtib3JkZXItdG9wOjB9LnNlZ3tkaXNwbGF5OmdyaWQ7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjFmciAxZnI7Z2FwOjRweDtwYWRkaW5nOjRweDtib3JkZXItcmFkaXVzOjE0cHg7YmFja2dyb3VuZDp2YXIoLS1jLXN1bmspfS5zZWctYntkaXNwbGF5OmlubGluZS1mbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2dhcDo3cHg7bWluLWhlaWdodDo0MHB4O2JvcmRlcjowO2JvcmRlci1yYWRpdXM6MTBweDtiYWNrZ3JvdW5kOnRyYW5zcGFyZW50O2NvbG9yOnZhcigtLWMtaW5rLTIpO2ZvbnQ6aW5oZXJpdDtmb250LXNpemU6MTMuNXB4O2ZvbnQtd2VpZ2h0OjYyMDtjdXJzb3I6cG9pbnRlcn0uc2VnLWJbYXJpYS1wcmVzc2VkPXRydWVde2JhY2tncm91bmQ6dmFyKC0tYy1iZyk7Y29sb3I6dmFyKC0tYy1pbmspO2JveC1zaGFkb3c6dmFyKC0tYy1zaGFkb3cpfS5zdGFydHN7ZGlzcGxheTpncmlkO2dhcDo4cHg7bWFyZ2luLXRvcDo0cHh9LnN0YXJ0cyAuY2hpcHttaW4taGVpZ2h0OjM0cHg7Zm9udC12YXJpYW50LW51bWVyaWM6dGFidWxhci1udW1zfS5nb29kLXRvLWtub3csLnJvd3N7ZGlzcGxheTpncmlkO2dhcDoxMHB4fS5yb3d7ZGlzcGxheTpncmlkO2dyaWQtdGVtcGxhdGUtY29sdW1uczptaW5tYXgoMCwxZnIpIGF1dG8gYXV0bzthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjEycHg7cGFkZGluZzoxNHB4O2JvcmRlcjoxcHggc29saWQgdmFyKC0tYy1saW5lKTtib3JkZXItcmFkaXVzOnZhcigtLXItbGcpO2JhY2tncm91bmQ6dmFyKC0tYy1yYWlzZSl9LnJvdy53aXRodGh1bWJ7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjY0cHggbWlubWF4KDAsMWZyKSBhdXRvIGF1dG99LnRodW1ie3Bvc2l0aW9uOnJlbGF0aXZlO2Rpc3BsYXk6Z3JpZDtwbGFjZS1pdGVtczpjZW50ZXI7d2lkdGg6NjRweDtoZWlnaHQ6NjRweDtvdmVyZmxvdzpoaWRkZW47Ym9yZGVyLXJhZGl1czoxMnB4O2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KDE0MGRlZyx2YXIoLS1zaG90LWEpLHZhcigtLXNob3QtYikpO2NvbG9yOiNmZmY7Zm9udC13ZWlnaHQ6NzAwfS5yb3cgLmJvZHl7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtnYXA6NHB4O21pbi13aWR0aDowfS5yb3cgLm5hbWV7Zm9udC1zaXplOjE0LjVweDtmb250LXdlaWdodDo2NTA7bGluZS1oZWlnaHQ6MS4zfS5yb3cgLm1ldGF7Y29sb3I6dmFyKC0tYy1pbmstMyk7Zm9udC1zaXplOjEyLjVweDtsaW5lLWhlaWdodDoxLjQ1fS5yb3cgLnByaWNle2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47YWxpZ24taXRlbXM6ZmxleC1lbmQ7Z2FwOjFweDt0ZXh0LWFsaWduOmVuZH0ucm93IC5wLXRvdGFse2ZvbnQtc2l6ZToxNnB4fS5yb3cgLmFjdGlvbntkaXNwbGF5OmZsZXg7Z2FwOjhweH0uZGF5e21hcmdpbjo0cHggMCAtNnB4O2NvbG9yOnZhcigtLWMtaW5rLTMpO2ZvbnQtc2l6ZToxMS41cHg7Zm9udC13ZWlnaHQ6NzAwO2xldHRlci1zcGFjaW5nOi4wN2VtO3RleHQtdHJhbnNmb3JtOnVwcGVyY2FzZX0uYmFuZHtkaXNwbGF5OmdyaWQ7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjFmciBhdXRvIDFmcjthbGlnbi1pdGVtczpjZW50ZXI7b3ZlcmZsb3c6aGlkZGVuO2JvcmRlcjoxcHggc29saWQgdmFyKC0tYy1saW5lKTtib3JkZXItcmFkaXVzOjE0cHg7YmFja2dyb3VuZDp2YXIoLS1jLWJnKX0uYmFuZC1ke2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47Z2FwOjJweDtwYWRkaW5nOjEwcHggMTRweDt0ZXh0LWFsaWduOnN0YXJ0fS5iYW5kLWQ6bGFzdC1jaGlsZHthbGlnbi1pdGVtczpmbGV4LWVuZDt0ZXh0LWFsaWduOmVuZH0uYmFuZCAud2hlbi1ue2JhY2tncm91bmQ6dmFyKC0tYy1wcmltYXJ5LXNvZnQpO2NvbG9yOnZhcigtLWMtcHJpbWFyeS1pbmspfS5jb25mIC5iYW5ke21hcmdpbi10b3A6NnB4O2JvcmRlci1zdHlsZTpkYXNoZWQ7Ym9yZGVyLWNvbG9yOnZhcigtLWMtbGluZS0yKX0ucmV2aWV3LWh7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtnYXA6MnB4fS5zdW1ze2Rpc3BsYXk6Z3JpZDtnYXA6OHB4O3BhZGRpbmc6MTRweCAxNnB4O2JvcmRlci1yYWRpdXM6dmFyKC0tci1sZyk7YmFja2dyb3VuZDp2YXIoLS1jLXN1bmspfS5zdW17ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuO2dhcDoxMnB4O2NvbG9yOnZhcigtLWMtaW5rLTIpO2ZvbnQtc2l6ZToxMy41cHh9LnN1bSBzcGFuOmxhc3QtY2hpbGR7Y29sb3I6dmFyKC0tYy1pbmspO2ZvbnQtd2VpZ2h0OjYwMDt0ZXh0LWFsaWduOmVuZH0uc3VtLmdvb2Qgc3Bhbiwuc3VtLmdvb2Qgc3BhbjpsYXN0LWNoaWxke2NvbG9yOnZhcigtLWMtc3VjY2Vzcy1pbmspO2ZvbnQtd2VpZ2h0OjY1MH0uc3VtLnRvdGFse2FsaWduLWl0ZW1zOmJhc2VsaW5lO21hcmdpbi10b3A6NHB4O3BhZGRpbmctdG9wOjEycHg7Ym9yZGVyLXRvcDoxcHggc29saWQgdmFyKC0tYy1saW5lLTIpO2NvbG9yOnZhcigtLWMtaW5rKTtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo3MDB9LnN1bS50b3RhbCBzcGFuOmxhc3QtY2hpbGR7Zm9udC1zaXplOjI0cHg7Zm9udC13ZWlnaHQ6NzgwO2xldHRlci1zcGFjaW5nOi0uMDJlbX0uc3VtLnRvdGFsIHNtYWxse2Rpc3BsYXk6YmxvY2s7bWFyZ2luLXRvcDoxcHg7Y29sb3I6dmFyKC0tYy1pbmstMyk7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5mb3Jte2Rpc3BsYXk6Z3JpZDtnYXA6MTRweDtwYWRkaW5nOjE2cHg7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1jLWxpbmUpO2JvcmRlci1yYWRpdXM6dmFyKC0tci1sZyk7YmFja2dyb3VuZDp2YXIoLS1jLXJhaXNlKX0uZm9ybS1oe21hcmdpbjowO2ZvbnQtc2l6ZToxNXB4O2ZvbnQtd2VpZ2h0OjcwMDtsZXR0ZXItc3BhY2luZzotLjAxZW19LnR3b3tkaXNwbGF5OmdyaWQ7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjFmciAxZnI7Z2FwOjEycHh9LmZvcm0gbGFiZWx7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtnYXA6NnB4O2NvbG9yOnZhcigtLWMtaW5rLTIpO2ZvbnQtc2l6ZToxMi41cHg7Zm9udC13ZWlnaHQ6NjUwfS5mb3JtIGlucHV0W3R5cGU9dGV4dF0sLmZvcm0gaW5wdXRbdHlwZT1lbWFpbF0sLmZvcm0gaW5wdXRbdHlwZT10ZWxdLC5mb3JtIGlucHV0W3R5cGU9dGltZV17d2lkdGg6MTAwJTttaW4td2lkdGg6MDtoZWlnaHQ6NDZweDtwYWRkaW5nOjAgMTNweDtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWMtbGluZS0yKTtib3JkZXItcmFkaXVzOnZhcigtLXItbWQpO2JhY2tncm91bmQ6dmFyKC0tYy1iZyk7Y29sb3I6dmFyKC0tYy1pbmspO2ZvbnQ6aW5oZXJpdDtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo1MDA7dHJhbnNpdGlvbjpib3JkZXItY29sb3IgLjE1cyB2YXIoLS1lYXNlKSxib3gtc2hhZG93IC4xNXMgdmFyKC0tZWFzZSl9LmZvcm0gaW5wdXRbYXJpYS1pbnZhbGlkPXRydWVde2JvcmRlci1jb2xvcjp2YXIoLS1jLWVycm9yKTtib3gtc2hhZG93OjAgMCAwIDNweCB2YXIoLS1jLWVycm9yLXNvZnQpfS5maWVsZC1lcnJ7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmZsZXgtc3RhcnQ7Z2FwOjZweDtjb2xvcjp2YXIoLS1jLWVycm9yLWluayk7Zm9udC1zaXplOjEyLjVweDtmb250LXdlaWdodDo1NTA7bGluZS1oZWlnaHQ6MS40fS5maWVsZC1lcnIgLmljb3t3aWR0aDoxNXB4O2hlaWdodDoxNXB4O21hcmdpbi10b3A6MXB4fS5mb3JtIGlucHV0OjpwbGFjZWhvbGRlcntjb2xvcjp2YXIoLS1jLWluay0zKTtmb250LXdlaWdodDo0MDB9LmZvcm0gaW5wdXQ6Zm9jdXN7b3V0bGluZTowO2JvcmRlci1jb2xvcjp2YXIoLS1jLXByaW1hcnkpO2JveC1zaGFkb3c6MCAwIDAgM3B4IHZhcigtLWMtcHJpbWFyeS1zb2Z0KX0uYXNrc3tib3JkZXItdG9wOjFweCBzb2xpZCB2YXIoLS1jLWxpbmUpO3BhZGRpbmctdG9wOjEycHh9LmFza3Mgc3VtbWFyeXtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDo4cHg7Y29sb3I6dmFyKC0tYy1pbmspO2ZvbnQtc2l6ZToxMy41cHg7Zm9udC13ZWlnaHQ6NjUwO2N1cnNvcjpwb2ludGVyO2xpc3Qtc3R5bGU6bm9uZX0uYXNrcyBzdW1tYXJ5Ojotd2Via2l0LWRldGFpbHMtbWFya2Vye2Rpc3BsYXk6bm9uZX0uYXNrcyBzdW1tYXJ5OmFmdGVye2NvbnRlbnQ6IiI7d2lkdGg6N3B4O2hlaWdodDo3cHg7bWFyZ2luOi0zcHggMCAwIGF1dG87Ym9yZGVyOnNvbGlkIHZhcigtLWMtaW5rLTMpO2JvcmRlci13aWR0aDowIDEuNzVweCAxLjc1cHggMDt0cmFuc2Zvcm06cm90YXRlKDQ1ZGVnKTt0cmFuc2l0aW9uOnRyYW5zZm9ybSAuMTVzIHZhcigtLWVhc2UpfS5hc2tzW29wZW5dIHN1bW1hcnk6YWZ0ZXJ7bWFyZ2luLXRvcDozcHg7dHJhbnNmb3JtOnJvdGF0ZSgtMTM1ZGVnKX0uYXNrcyBzdW1tYXJ5IHNtYWxse2NvbG9yOnZhcigtLWMtaW5rLTMpO2ZvbnQtd2VpZ2h0OjUwMH0uYXNrcy1ib2R5e2Rpc3BsYXk6Z3JpZDtnYXA6MTJweDttYXJnaW4tdG9wOjEycHh9LmZvcm0gbGFiZWwucmVtZW1iZXJ7ZmxleC1kaXJlY3Rpb246cm93O2FsaWduLWl0ZW1zOmZsZXgtc3RhcnQ7Z2FwOjhweDtjb2xvcjp2YXIoLS1jLWluay0yKTtmb250LXNpemU6MTIuNXB4O2ZvbnQtd2VpZ2h0OjUwMH0uZm9ybSBsYWJlbC5yZW1lbWJlciBpbnB1dHttYXJnaW46MnB4IDAgMDthY2NlbnQtY29sb3I6dmFyKC0tYy1wcmltYXJ5KX0udHJ1c3R7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmZsZXgtc3RhcnQ7Z2FwOjhweDtjb2xvcjp2YXIoLS1jLWluay0yKTtmb250LXNpemU6MTIuNXB4O2xpbmUtaGVpZ2h0OjEuNX0udHJ1c3QgLmljb3ttYXJnaW4tdG9wOjFweDtjb2xvcjp2YXIoLS1jLWluay0yKX0uYm9va2Vke2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47YWxpZ24taXRlbXM6Y2VudGVyO2dhcDo4cHg7cGFkZGluZzoxMHB4IDAgNHB4O3RleHQtYWxpZ246Y2VudGVyfS5ib29rZWQtbWFya3tkaXNwbGF5OmdyaWQ7cGxhY2UtaXRlbXM6Y2VudGVyO3dpZHRoOjU2cHg7aGVpZ2h0OjU2cHg7Ym9yZGVyLXJhZGl1czo5OTlweDtiYWNrZ3JvdW5kOnZhcigtLWMtc3VjY2Vzcy1zb2Z0KTtjb2xvcjp2YXIoLS1jLXN1Y2Nlc3MpO2FuaW1hdGlvbjpwb3AgLjQ1cyB2YXIoLS1lYXNlKX0uYm9va2VkLW1hcmsgLmljb3t3aWR0aDoyOHB4O2hlaWdodDoyOHB4fS5ib29rZWQtbWFyay50ZXN0e2JhY2tncm91bmQ6dmFyKC0tYy1pbmZvLXNvZnQpO2NvbG9yOnZhcigtLWMtaW5mbyl9QGtleWZyYW1lcyBwb3B7MCV7dHJhbnNmb3JtOnNjYWxlKC42KTtvcGFjaXR5OjB9NjAle3RyYW5zZm9ybTpzY2FsZSgxLjA2KTtvcGFjaXR5OjF9fS5ib29rZWQtdHttYXJnaW46MDtmb250LXNpemU6MjJweDtmb250LXdlaWdodDo3NTA7bGV0dGVyLXNwYWNpbmc6LS4wMmVtfS5ib29rZWQtc3ttYXgtd2lkdGg6NDRjaDttYXJnaW46MDtjb2xvcjp2YXIoLS1jLWluay0zKTtmb250LXNpemU6MTMuNXB4O2xpbmUtaGVpZ2h0OjEuNX0uY29uZntwb3NpdGlvbjpyZWxhdGl2ZTtkaXNwbGF5OmdyaWQ7Z2FwOjRweDtwYWRkaW5nOjE4cHggMjBweDtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWMtbGluZSk7Ym9yZGVyLXJhZGl1czp2YXIoLS1yLWxnKTtiYWNrZ3JvdW5kOnZhcigtLWMtcmFpc2UpO3RleHQtYWxpZ246Y2VudGVyfS5jb25mIC5ub3Rle2NvbG9yOnZhcigtLWMtaW5rLTMpO2ZvbnQtc2l6ZToxMS41cHg7Zm9udC13ZWlnaHQ6NzAwO2xldHRlci1zcGFjaW5nOi4wOGVtO3RleHQtdHJhbnNmb3JtOnVwcGVyY2FzZX0uY29kZXtjb2xvcjp2YXIoLS1jLWluayk7Zm9udC1mYW1pbHk6dmFyKC0tZi1tb25vKTtmb250LXNpemU6MjZweDtmb250LXdlaWdodDo3MDA7bGV0dGVyLXNwYWNpbmc6LjA4ZW19LmNvbmYudGlja2V0IC53aGVyZXtwb3NpdGlvbjpyZWxhdGl2ZX0uY29uZi50aWNrZXQgLndoZXJlOmJlZm9yZSwuY29uZi50aWNrZXQgLndoZXJlOmFmdGVye2NvbnRlbnQ6IiI7cG9zaXRpb246YWJzb2x1dGU7dG9wOi0xMHB4O3dpZHRoOjIwcHg7aGVpZ2h0OjIwcHg7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1jLWxpbmUpO2JvcmRlci1yYWRpdXM6OTk5cHg7YmFja2dyb3VuZDp2YXIoLS1jLWJnKX0uY29uZi50aWNrZXQgLndoZXJlOmJlZm9yZXtsZWZ0Oi0zMXB4O2NsaXAtcGF0aDppbnNldCgwIDAgMCA1MCUpfS5jb25mLnRpY2tldCAud2hlcmU6YWZ0ZXJ7cmlnaHQ6LTMxcHg7Y2xpcC1wYXRoOmluc2V0KDAgNTAlIDAgMCl9LmNvbmYgLndoZXJle21hcmdpbi10b3A6OHB4O3BhZGRpbmctdG9wOjEycHg7Ym9yZGVyLXRvcDoxcHggZGFzaGVkIHZhcigtLWMtbGluZS0yKTtmb250LWZhbWlseTp2YXIoLS1mLWRpc3BsYXkpO2ZvbnQtc2l6ZToxOXB4O2ZvbnQtd2VpZ2h0OjYwMH0uY29uZiAud2hlbntjb2xvcjp2YXIoLS1jLWluay0yKTtmb250LXNpemU6MTNweH0ubW9uZXktb3V0e2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpiYXNlbGluZTtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjtnYXA6MTJweDtwYWRkaW5nOjE0cHggMTZweDtib3JkZXItcmFkaXVzOnZhcigtLXItbGcpO2JhY2tncm91bmQ6dmFyKC0tYy1zdW5rKTtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo2NTB9Lm1vbmV5LW91dCBzcGFuOmxhc3QtY2hpbGR7Zm9udC1zaXplOjIycHg7Zm9udC13ZWlnaHQ6NzgwO2xldHRlci1zcGFjaW5nOi0uMDJlbX0ucXVpZXQtZW5ke2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO21hcmdpbi10b3A6LTRweH0ubGlua3kuZGFuZ2Vye2NvbG9yOnZhcigtLWMtZXJyb3ItaW5rKTtmb250LXNpemU6MTNweDtmb250LXdlaWdodDo2MDB9LmhvbWUtbGlua3N7ZGlzcGxheTpmbGV4O2ZsZXgtd3JhcDp3cmFwO2p1c3RpZnktY29udGVudDpjZW50ZXI7Z2FwOjRweCAxMHB4O2NvbG9yOnZhcigtLWMtaW5rLTMpO2ZvbnQtc2l6ZToxM3B4fS5hc2tlZC1saW5le2ZvbnQtc3R5bGU6aXRhbGljfS5sZWdze2Rpc3BsYXk6Z3JpZDtncmlkLXRlbXBsYXRlLWNvbHVtbnM6MWZyIDFmcjtnYXA6MTBweH0ubGVne2Rpc3BsYXk6Z3JpZDtnYXA6NHB4O3BhZGRpbmc6MTJweCAxNHB4O2JvcmRlcjoxcHggc29saWQgdmFyKC0tYy1saW5lKTtib3JkZXItcmFkaXVzOnZhcigtLXItbWQpfS5sZWcud2Fze2JhY2tncm91bmQ6dmFyKC0tYy1zdW5rKX0ubGVnLndhcyAubGVndnt0ZXh0LWRlY29yYXRpb246bGluZS10aHJvdWdoO2NvbG9yOnZhcigtLWMtaW5rLTMpfS5sZWdre2NvbG9yOnZhcigtLWMtaW5rLTMpO2ZvbnQtc2l6ZToxMXB4O2ZvbnQtd2VpZ2h0OjcwMDtsZXR0ZXItc3BhY2luZzouMDdlbTt0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2V9LmxlZ3Z7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NjUwfS5sZWdte2NvbG9yOnZhcigtLWMtaW5rLTIpO2ZvbnQtc2l6ZToxMi41cHh9LnN0YXRle2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47YWxpZ24taXRlbXM6Y2VudGVyO2dhcDo4cHg7cGFkZGluZzoyMnB4IDEycHggOHB4O3RleHQtYWxpZ246Y2VudGVyfS5zdGF0ZS1pY297ZGlzcGxheTpncmlkO3BsYWNlLWl0ZW1zOmNlbnRlcjt3aWR0aDo1MnB4O2hlaWdodDo1MnB4O21hcmdpbi1ib3R0b206NHB4O2JvcmRlci1yYWRpdXM6MTZweDtiYWNrZ3JvdW5kOnZhcigtLWMtc3Vuayk7Y29sb3I6dmFyKC0tYy1pbmstMil9LnN0YXRlLWljbyAuaWNve3dpZHRoOjI0cHg7aGVpZ2h0OjI0cHh9LnN0YXRlLmVycm9yIC5zdGF0ZS1pY297YmFja2dyb3VuZDp2YXIoLS1jLWVycm9yLXNvZnQpO2NvbG9yOnZhcigtLWMtZXJyb3IpfS5zdGF0ZS5saW1pdCAuc3RhdGUtaWNve2JhY2tncm91bmQ6dmFyKC0tYy13YXJuaW5nLXNvZnQpO2NvbG9yOnZhcigtLWMtd2FybmluZy1pbmspfS5zdGF0ZS10e21hcmdpbjowO2ZvbnQtc2l6ZToxOHB4O2ZvbnQtd2VpZ2h0OjcyMDtsZXR0ZXItc3BhY2luZzotLjAxNWVtfS5zdGF0ZS1ke21heC13aWR0aDo0NmNoO21hcmdpbjowO2NvbG9yOnZhcigtLWMtaW5rLTIpO2ZvbnQtc2l6ZToxMy41cHg7bGluZS1oZWlnaHQ6MS41NX0uc3RhdGUgLmZvb3R7anVzdGlmeS1jb250ZW50OmNlbnRlcjttYXJnaW4tdG9wOjhweH0uc3RhdGUgLmZvb3Q+Lmdve2ZsZXg6MCAxIGF1dG99LnNrZWx7ZGlzcGxheTpncmlkO2dhcDoxNHB4fVtkYXRhLXRoZW1lPWRhcmtdIC5za3tiYWNrZ3JvdW5kLWltYWdlOmxpbmVhci1ncmFkaWVudCg5MGRlZywjMTcyMDMzLCMyNDMwNDksIzE3MjAzMyl9LnNre2JvcmRlci1yYWRpdXM6MTBweDtiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCg5MGRlZyx2YXIoLS1jLXN1bmspIDAlLHZhcigtLWMtbGluZSkgNTAlLHZhcigtLWMtc3VuaykgMTAwJSk7YmFja2dyb3VuZC1zaXplOjIwMCUgMTAwJTthbmltYXRpb246c2hpbW1lciAxLjRzIGxpbmVhciBpbmZpbml0ZX0uc2stbG9nb3tkaXNwbGF5OmJsb2NrO3dpZHRoOjExMnB4O2hlaWdodDozMHB4fS5zay1iYXJ7aGVpZ2h0OjYwcHg7Ym9yZGVyLXJhZGl1czoxNHB4fS5zay10aWxlc3tkaXNwbGF5OmdyaWQ7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOnJlcGVhdChhdXRvLWZpbGwsbWlubWF4KDIyMHB4LDFmcikpO2dhcDoxNHB4fS5zay10aWxle2Rpc3BsYXk6Z3JpZDtnYXA6MTBweH0uc2staW1ne2FzcGVjdC1yYXRpbzo0IC8gMztib3JkZXItcmFkaXVzOnZhcigtLXItbGcpfS5zay1saW5le2hlaWdodDoxNHB4O3dpZHRoOjgwJX0uc2stbGluZS5zaG9ydHt3aWR0aDo0NSV9QGtleWZyYW1lcyBzaGltbWVyezAle2JhY2tncm91bmQtcG9zaXRpb246MjAwJSAwfXRve2JhY2tncm91bmQtcG9zaXRpb246LTIwMCUgMH19LmNtcC13cmFwe292ZXJmbG93LXg6YXV0bzttYXJnaW4taW5saW5lOi0ycHg7cGFkZGluZzoycHh9LmNtcHtkaXNwbGF5OmdyaWQ7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOm1pbm1heCg3NnB4LDk2cHgpIHJlcGVhdCh2YXIoLS1jb2xzKSxtaW5tYXgoMTI0cHgsMWZyKSk7YWxpZ24taXRlbXM6c3RyZXRjaDtjb2x1bW4tZ2FwOjEwcHh9LmNtcC5mb3Vye2dyaWQtdGVtcGxhdGUtY29sdW1uczptaW5tYXgoNTZweCw3MnB4KSByZXBlYXQodmFyKC0tY29scyksbWlubWF4KDEwNHB4LDFmcikpfS5jbXAtY29ybmVye2dyaWQtY29sdW1uOjE7Z3JpZC1yb3c6MSAvIHNwYW4gdmFyKC0taGVhZC1yb3dzLCA1KX0uY21wLWhlYWR7ZGlzcGxheTpncmlkO2dyaWQtcm93OjEgLyBzcGFuIHZhcigtLWhlYWQtcm93cywgNSk7Z3JpZC10ZW1wbGF0ZS1yb3dzOnN1YmdyaWQ7cm93LWdhcDo4cHg7YWxpZ24tY29udGVudDpzdGFydDttaW4td2lkdGg6MDtwYWRkaW5nLWJvdHRvbToxNHB4O292ZXJmbG93OmhpZGRlbjtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWMtbGluZSk7Ym9yZGVyLXJhZGl1czp2YXIoLS1yLWxnKTtiYWNrZ3JvdW5kOnZhcigtLWMtcmFpc2UpfS5jbXAtaGVhZD4uY29sLW5hbWUsLmNtcC1oZWFkPi5jb2wtcHJpY2UsLmNtcC1oZWFkPi53aHksLmNtcC1oZWFkPi5wY3ttYXJnaW4taW5saW5lOjEycHh9LmNtcC1oZWFkLnBpY2t7Ym9yZGVyLWNvbG9yOnZhcigtLWMtcHJpbWFyeSk7Ym94LXNoYWRvdzowIDAgMCAxcHggdmFyKC0tYy1wcmltYXJ5KX0uY21wLWhlYWQgLnQtc2hvdHthc3BlY3QtcmF0aW86MTYgLyAxMDt3aWR0aDoxMDAlO3BhZGRpbmc6MDtib3JkZXI6MDtjdXJzb3I6cG9pbnRlcn0ucGlja21hcmt7cGFkZGluZzo0cHggOHB4O2JhY2tncm91bmQ6dmFyKC0tYy1wcmltYXJ5KTtjb2xvcjp2YXIoLS1jLW9uLXByaW1hcnkpO2ZvbnQtc2l6ZToxMC41cHg7Zm9udC13ZWlnaHQ6NzUwO2xldHRlci1zcGFjaW5nOi4wN2VtO3RleHQtYWxpZ246Y2VudGVyO3RleHQtdHJhbnNmb3JtOnVwcGVyY2FzZX0ucGlja21hcmsubm9uZXt2aXNpYmlsaXR5OmhpZGRlbn0uY29sLW5hbWV7bWFyZ2luLXRvcDoycHg7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NjgwO2xpbmUtaGVpZ2h0OjEuM30uY29sLWdyb3Vwe2Rpc3BsYXk6YmxvY2s7Y29sb3I6dmFyKC0tYy1pbmstMyk7Zm9udC1zaXplOjExLjVweDtmb250LXdlaWdodDo1MDB9LmNvbC1wcmljZXtmb250LXNpemU6MThweDtmb250LXdlaWdodDo3ODA7bGV0dGVyLXNwYWNpbmc6LS4wMTVlbX0uY29sLXByaWNlIHNtYWxse2NvbG9yOnZhcigtLWMtaW5rLTMpO2ZvbnQtc2l6ZToxMS41cHg7Zm9udC13ZWlnaHQ6NTUwO2xldHRlci1zcGFjaW5nOjB9LmNvbC1wcmljZSBzbWFsbC5zdWJ7ZGlzcGxheTpibG9ja30ud2h5e3BhZGRpbmctaW5saW5lLXN0YXJ0OjlweDtib3JkZXItaW5saW5lLXN0YXJ0OjJweCBzb2xpZCB2YXIoLS1jLXByaW1hcnktc29mdC0yKTtjb2xvcjp2YXIoLS1jLWluay0yKTtmb250LXNpemU6MTIuNXB4O2ZvbnQtc3R5bGU6aXRhbGljO2xpbmUtaGVpZ2h0OjEuNX0ud2h5Lm5vbmV7cGFkZGluZzowO2JvcmRlcjowfS5wY3tkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2dhcDo0cHg7Zm9udC1zaXplOjEycHg7bGluZS1oZWlnaHQ6MS40NX0ucGMgZGl2e2Rpc3BsYXk6ZmxleDtnYXA6NnB4fS5wYyAubXtmbGV4OjAgMCBhdXRvO2ZvbnQtd2VpZ2h0Ojc1MH0ucGMgLnBybyAubXtjb2xvcjp2YXIoLS1jLXByaW1hcnktaW5rKX0ucGMgLmNvbiAubXtjb2xvcjp2YXIoLS1jLWluay0zKX0uY21wIC5rLC5jbXAgLnZ7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtwYWRkaW5nOjhweCAxMHB4O2ZvbnQtc2l6ZToxMi41cHg7bGluZS1oZWlnaHQ6MS40NX0uY21wIC5re3Bvc2l0aW9uOnN0aWNreTtpbnNldC1pbmxpbmUtc3RhcnQ6MDtncmlkLWNvbHVtbjoxO2JhY2tncm91bmQ6dmFyKC0tYy1iZyk7Y29sb3I6dmFyKC0tYy1pbmstMyk7Zm9udC13ZWlnaHQ6NjAwfS5jbXAgLnYuYWx0LC5jbXAgLms6aGFzKCsudi5hbHQpe2JvcmRlci1yYWRpdXM6OHB4O2JhY2tncm91bmQ6dmFyKC0tYy1zdW5rKX0uZGF5c3tkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1ufS5kYXlyb3d7ZGlzcGxheTpncmlkO2dyaWQtdGVtcGxhdGUtY29sdW1uczozMHB4IDFmcjtnYXA6MTJweH0uZGF5bnVte2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47YWxpZ24taXRlbXM6Y2VudGVyO2dhcDo0cHh9LmRheW51bSBie2Rpc3BsYXk6Z3JpZDtwbGFjZS1pdGVtczpjZW50ZXI7d2lkdGg6MjhweDtoZWlnaHQ6MjhweDtib3JkZXItcmFkaXVzOjk5OXB4O2JhY2tncm91bmQ6dmFyKC0tYy1wcmltYXJ5LXNvZnQpO2NvbG9yOnZhcigtLWMtcHJpbWFyeS1pbmspO2ZvbnQtc2l6ZToxMi41cHg7Zm9udC13ZWlnaHQ6NzUwO2ZvbnQtdmFyaWFudC1udW1lcmljOnRhYnVsYXItbnVtc30uZGF5bnVtIGl7ZmxleDoxO3dpZHRoOjJweDtib3JkZXItcmFkaXVzOjJweDtiYWNrZ3JvdW5kOnZhcigtLWMtbGluZSl9LmRheXJvdzpsYXN0LWNoaWxkIC5kYXludW0gaXtkaXNwbGF5Om5vbmV9LmRheWJvZHl7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtnYXA6OHB4O21pbi13aWR0aDowO3BhZGRpbmc6M3B4IDAgMThweH0uZGF5bGFiZWx7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6NjgwO2xpbmUtaGVpZ2h0OjEuM30uZGF5bGFiZWwgc21hbGx7Y29sb3I6dmFyKC0tYy1pbmstMyk7Zm9udC13ZWlnaHQ6NTAwfS5kYXlub3Rle2NvbG9yOnZhcigtLWMtaW5rLTIpO2ZvbnQtc2l6ZToxM3B4O2xpbmUtaGVpZ2h0OjEuNTV9Lm1vbWVudHN7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtnYXA6NnB4O21hcmdpbjoycHggMCAwO3BhZGRpbmc6MDtsaXN0LXN0eWxlOm5vbmV9Lm1vbWVudHMgbGl7ZGlzcGxheTpncmlkO2dyaWQtdGVtcGxhdGUtY29sdW1uczo4NHB4IDFmcjtnYXA6MTBweDthbGlnbi1pdGVtczpiYXNlbGluZX0ubW9tZW50cyAud2hlbntvdmVyZmxvdy13cmFwOmFueXdoZXJlO2NvbG9yOnZhcigtLWMtaW5rLTMpO2ZvbnQtc2l6ZToxMXB4O2ZvbnQtd2VpZ2h0OjcwMDtsZXR0ZXItc3BhY2luZzouMDVlbTt0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2V9Lm1vbWVudHMgLndoYXR7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtnYXA6MXB4O2ZvbnQtc2l6ZToxM3B4O2xpbmUtaGVpZ2h0OjEuNH0ubW9tZW50cyAud2hhdCBie2ZvbnQtd2VpZ2h0OjYyMH0ubW9tZW50cyAud2hhdCBzbWFsbHtjb2xvcjp2YXIoLS1jLWluay0zKTtmb250LXNpemU6MTJweH0ucGxhbi1zdGF5e2Rpc3BsYXk6Z3JpZDtncmlkLXRlbXBsYXRlLWNvbHVtbnM6MTA0cHggMWZyO2dhcDoxMnB4O292ZXJmbG93OmhpZGRlbjtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWMtbGluZSk7Ym9yZGVyLXJhZGl1czp2YXIoLS1yLW1kKTtiYWNrZ3JvdW5kOnZhcigtLWMtcmFpc2UpO2N1cnNvcjpwb2ludGVyfS5wbGFuLXN0YXk6aG92ZXJ7Ym9yZGVyLWNvbG9yOnZhcigtLWMtbGluZS0yKX0ucGxhbi1zdGF5IC5wcy1zaG90e3Bvc2l0aW9uOnJlbGF0aXZlO2Rpc3BsYXk6Z3JpZDtwbGFjZS1pdGVtczpjZW50ZXI7bWluLWhlaWdodDo5MnB4O2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KDEzNWRlZyx2YXIoLS1zaG90LWEpLHZhcigtLXNob3QtYikpO2NvbG9yOiNmZmZ9LnBsYW4tc3RheSAucHMtc2hvdCBpbWd7cG9zaXRpb246YWJzb2x1dGU7aW5zZXQ6MDt3aWR0aDoxMDAlO2hlaWdodDoxMDAlO29iamVjdC1maXQ6Y292ZXJ9LnBsYW4tc3RheSAucHMtYm9keXtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2FsaWduLWl0ZW1zOmZsZXgtc3RhcnQ7Z2FwOjRweDttaW4td2lkdGg6MDtwYWRkaW5nOjEwcHggMTJweCAxMHB4IDB9LnBsYW4tc3RheSAubmFtZXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo2ODA7bGluZS1oZWlnaHQ6MS4zfS5wbGFuLXN0YXkgLm1ldGF7Y29sb3I6dmFyKC0tYy1pbmstMyk7Zm9udC1zaXplOjEycHh9LnBsYW4tc3RheSAucHMtcHJpY2V7Zm9udC1zaXplOjEzLjVweDtmb250LXdlaWdodDo3MDB9LnBsYW4tbmlnaHR7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjtnYXA6OHB4O3BhZGRpbmctdG9wOjZweDtib3JkZXItdG9wOjFweCBkYXNoZWQgdmFyKC0tYy1saW5lLTIpO2NvbG9yOnZhcigtLWMtaW5rLTMpO2ZvbnQtc2l6ZToxMi41cHg7Y3Vyc29yOnBvaW50ZXJ9LnBsYW4taXRlbXtkaXNwbGF5OmdyaWQ7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjFmciBhdXRvO2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6OHB4O3BhZGRpbmc6MTBweCAxMnB4O2JvcmRlcjoxcHggc29saWQgdmFyKC0tYy1saW5lKTtib3JkZXItcmFkaXVzOnZhcigtLXItbWQpfS5wbGFuLWl0ZW0gLm5hbWV7Zm9udC1zaXplOjEzcHg7Zm9udC13ZWlnaHQ6NjUwfS5wbGFuLWl0ZW0gLm1ldGF7Y29sb3I6dmFyKC0tYy1pbmstMyk7Zm9udC1zaXplOjEycHh9Lmluc3RhdGV7cGFkZGluZzozcHggOXB4O2JvcmRlci1yYWRpdXM6OTk5cHg7Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NzAwO3doaXRlLXNwYWNlOm5vd3JhcH0uaW5zdGF0ZS55ZXN7YmFja2dyb3VuZDp2YXIoLS1jLXN1Y2Nlc3Mtc29mdCk7Y29sb3I6dmFyKC0tYy1zdWNjZXNzLWluayl9Lmluc3RhdGUubm97YmFja2dyb3VuZDp2YXIoLS1jLXN1bmspO2NvbG9yOnZhcigtLWMtaW5rLTIpfS5nYXB7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmZsZXgtc3RhcnQ7Z2FwOjEwcHg7YmFja2dyb3VuZDp2YXIoLS1jLXN1bmspO2NvbG9yOnZhcigtLWMtaW5rLTIpfS5nYXAgYntjb2xvcjp2YXIoLS1jLWluayk7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6NzgwO2ZvbnQtdmFyaWFudC1udW1lcmljOnRhYnVsYXItbnVtc30uc3VnZ2VzdHtkaXNwbGF5OmdyaWQ7Z2FwOjZweDtwYWRkaW5nLXRvcDoxNHB4O2JvcmRlci10b3A6MXB4IHNvbGlkIHZhcigtLWMtbGluZSl9LnN1Z2dlc3QgLndse21hcmdpbi1ib3R0b206MnB4fS5jaGlwLm5leHR7anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47Z2FwOjEycHg7d2lkdGg6MTAwJTttaW4taGVpZ2h0OjQ0cHg7cGFkZGluZzo4cHggMTRweDtib3JkZXItcmFkaXVzOjEycHg7Y29sb3I6dmFyKC0tYy1pbmspO2ZvbnQtc2l6ZToxMy41cHg7Zm9udC13ZWlnaHQ6NTYwO2xpbmUtaGVpZ2h0OjEuMzU7dGV4dC1hbGlnbjpzdGFydH0uY2hpcC5uZXh0IC5pY297ZmxleDpub25lO2NvbG9yOnZhcigtLWMtcHJpbWFyeS1pbmspfS5zdWdnZXN0IC5jaGlwLnNheSBzbWFsbHtjb2xvcjp2YXIoLS1jLWluay0zKX0uY2stcGFnZXItYnRue2hlaWdodDo0MHB4O2JvcmRlci1jb2xvcjp2YXIoLS1jLWxpbmUtMik7Ym9yZGVyLXJhZGl1czp2YXIoLS1yLW1kKTtmb250LXdlaWdodDo2MDB9LmNrLXBhZ2VyLW57Y29sb3I6dmFyKC0tYy1pbmstMyl9LnAtbGluZXtjb2xvcjp2YXIoLS1jLWluayk7Zm9udC1zaXplOjE0LjVweDtmb250LXdlaWdodDo2NTB9LnJvdy5saW5lIC5wLXVuaXR7Y29sb3I6dmFyKC0tYy1pbmstMyk7Zm9udC13ZWlnaHQ6NTAwfS5yb3cubGluZSAucGVya3N7bWFyZ2luLXRvcDo0cHh9Lm1lbWJlci1vZmZlcntkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDoxMHB4O3BhZGRpbmc6MTJweCAxNHB4O2JvcmRlci1yYWRpdXM6dmFyKC0tci1tZCk7YmFja2dyb3VuZDp2YXIoLS1jLXN1Y2Nlc3Mtc29mdCk7Y29sb3I6dmFyKC0tYy1pbmstMik7Zm9udC1zaXplOjEzcHh9Lm1lbWJlci1vZmZlciAuaWNvLC5tZW1iZXItb2ZmZXIgLmxpbmt5e2NvbG9yOnZhcigtLWMtc3VjY2Vzcy1pbmspfS5hc2stZ3JvdXB7ZGlzcGxheTpncmlkO2dhcDo4cHh9Lmxpbmtze2Rpc3BsYXk6Z3JpZDtvdmVyZmxvdzpoaWRkZW47Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1jLWxpbmUpO2JvcmRlci1yYWRpdXM6dmFyKC0tci1tZCl9Lmxpbmstcm93e2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47Z2FwOjEycHg7bWluLWhlaWdodDo0NnB4O3BhZGRpbmc6MCAxNHB4O2JvcmRlcjowO2JvcmRlci10b3A6MXB4IHNvbGlkIHZhcigtLWMtbGluZSk7YmFja2dyb3VuZDp2YXIoLS1jLXJhaXNlKTtjb2xvcjp2YXIoLS1jLWluayk7Zm9udDppbmhlcml0O2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjU2MDt0ZXh0LWFsaWduOnN0YXJ0O2N1cnNvcjpwb2ludGVyfS5saW5rLXJvdzpmaXJzdC1jaGlsZHtib3JkZXItdG9wOjB9Lmxpbmstcm93OmhvdmVye2JhY2tncm91bmQ6dmFyKC0tYy1zdW5rKX0ubGluay1yb3cgLmljb3tjb2xvcjp2YXIoLS1jLWluay0zKX0uc3RyaXAtaHttYXJnaW4tYm90dG9tOi04cHg7Y29sb3I6dmFyKC0tYy1pbmstMyk7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NjAwfS5mZC5sb3dlc3QgLmZkLXByaWNle2NvbG9yOnZhcigtLWMtc3VjY2Vzcy1pbmspfS5mZC5sb3dlc3R7Ym9yZGVyLWNvbG9yOmNvbG9yLW1peChpbiBzcmdiLHZhcigtLWMtc3VjY2VzcykgNDUlLHZhcigtLWMtbGluZSkpfS50aWxlLmxvd2VzdCAudC1mcm9te2NvbG9yOnZhcigtLWMtc3VjY2Vzcy1pbmspfS50LWdve2Rpc3BsYXk6Z3JpZDtwbGFjZS1pdGVtczpjZW50ZXI7d2lkdGg6MjhweDtoZWlnaHQ6MjhweDttYXJnaW4taW5saW5lLXN0YXJ0OmF1dG87Ym9yZGVyLXJhZGl1czo5OTlweDtiYWNrZ3JvdW5kOnZhcigtLWMtc3Vuayk7Y29sb3I6dmFyKC0tYy1pbmstMik7dHJhbnNpdGlvbjpiYWNrZ3JvdW5kLWNvbG9yIC4xNXMgdmFyKC0tZWFzZSksY29sb3IgLjE1cyB2YXIoLS1lYXNlKX0udC1nbyAuaWNve3dpZHRoOjE1cHg7aGVpZ2h0OjE1cHh9LnRpbGU6aG92ZXIgLnQtZ297YmFja2dyb3VuZDp2YXIoLS1jLXByaW1hcnkpO2NvbG9yOnZhcigtLWMtb24tcHJpbWFyeSl9LnJlbWluZHtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6ZmxleC1zdGFydDtnYXA6MTBweDtwYWRkaW5nOjEycHggMTRweDtib3JkZXItcmFkaXVzOnZhcigtLXItbWQpO2JhY2tncm91bmQ6dmFyKC0tYy13YXJuaW5nLXNvZnQpO2NvbG9yOnZhcigtLWMtd2FybmluZy1pbmspO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtd2VpZ2h0OjU2MDtsaW5lLWhlaWdodDoxLjV9LnJlbWluZCAuaWNve21hcmdpbi10b3A6MXB4fS5jZHtoZWlnaHQ6NTJweH0uY2Q+c3Bhbnt3aWR0aDptaW4oMzZweCwxMDAlKTtoZWlnaHQ6MzZweDttYXJnaW4tdG9wOjB9LmNkLXB7cG9zaXRpb246YWJzb2x1dGU7bGVmdDowO3JpZ2h0OjA7Ym90dG9tOjA7ei1pbmRleDoxO292ZXJmbG93OmhpZGRlbjtjb2xvcjp2YXIoLS1jLWluay0zKTtmb250LXNpemU6OS41cHg7Zm9udC1zdHlsZTpub3JtYWw7Zm9udC13ZWlnaHQ6NjAwO2xldHRlci1zcGFjaW5nOi0uMDJlbTt0ZXh0LWFsaWduOmNlbnRlcjt3aGl0ZS1zcGFjZTpub3dyYXB9LmNkLmJldHdlZW46YmVmb3JlLC5jZC5pbi5oYXMtb3V0OmJlZm9yZSwuY2Qub3V0OmJlZm9yZSwuY2QucmVhY2g6YmVmb3JlLC5jZC5yZWFjaC1lbmQ6YmVmb3Jle2luc2V0OjFweCAwIDEzcHh9LmNkLmhhcy1wPnNwYW46YmVmb3Jle2Rpc3BsYXk6bm9uZX0uY2QuYmVmb3JlOm5vdCg6ZGlzYWJsZWQpe2NvbG9yOnZhcigtLWMtaW5rLTMpfS5jZDpmb2N1cy12aXNpYmxle291dGxpbmU6MH0uY2Q6Zm9jdXMtdmlzaWJsZT5zcGFue291dGxpbmU6MnB4IHNvbGlkIHZhcigtLWMtcHJpbWFyeSk7b3V0bGluZS1vZmZzZXQ6MnB4fS5jYWwtbXR7bWFyZ2luLWxlZnQ6MH1bZGF0YS10aGVtZT1kYXJrXSAuY2Q6ZGlzYWJsZWR7b3BhY2l0eTouNn0ud3YtZW1wdHl7Y29sb3I6dmFyKC0tYy1pbmstMyk7Zm9udC13ZWlnaHQ6NjAwfS5zay1zYXl7Y29sb3I6dmFyKC0tYy1pbmstMyk7Zm9udC1zaXplOjEzcHg7Zm9udC13ZWlnaHQ6NjAwfS5zdGVwIGJ1dHRvbjpkaXNhYmxlZHtvcGFjaXR5Oi4zO2N1cnNvcjpkZWZhdWx0fS5zZWFyY2gucmV0cnl7ZGlzcGxheTpmbGV4O2dhcDo4cHg7d2lkdGg6MTAwJTttYXgtd2lkdGg6NDQwcHg7bWFyZ2luOjhweCBhdXRvIDA7cGFkZGluZzowO2JhY2tncm91bmQ6bm9uZX0uc2VhcmNoLnJldHJ5IC53aGVyZXtmbGV4OjE7bWluLWhlaWdodDo0OHB4fS5zZWFyY2gucmV0cnkgLndoZXJlIGlucHV0e2hlaWdodDo0NnB4fS50LW5hbWUsLmhvdGVsLW5hbWUsLnJvb20tbmFtZSwucmF0ZS1uYW1lLC5jb25mIC53aGVyZSwucm93IC5uYW1lLC5jb2wtbmFtZXt3b3JkLWJyZWFrOmtlZXAtYWxsO292ZXJmbG93LXdyYXA6YW55d2hlcmV9LmhlYWR0cmlwLW57ZGlzcGxheTpncmlkO3BsYWNlLWl0ZW1zOmNlbnRlcjttaW4td2lkdGg6MjBweDtoZWlnaHQ6MjBweDtwYWRkaW5nOjAgNnB4O2JvcmRlci1yYWRpdXM6OTk5cHg7YmFja2dyb3VuZDp2YXIoLS1jLWJnKTtjb2xvcjp2YXIoLS1jLWluayk7Zm9udC1zaXplOjExLjVweDtmb250LXdlaWdodDo3NTB9LmhlYWQgLmJyYW5ke2JveC1zaXppbmc6Y29udGVudC1ib3g7cGFkZGluZzo1cHggMTBweDtib3JkZXItcmFkaXVzOjEwcHg7YmFja2dyb3VuZDp2YXIoLS1jLXN1bmspfUBtZWRpYShtaW4td2lkdGg6NjAwcHgpey5jYWwtbW9udGhze2dyaWQtdGVtcGxhdGUtY29sdW1uczoxZnIgMWZyfS5jYWwtbW9udGgrLmNhbC1tb250aHtkaXNwbGF5OmJsb2NrfS5yb29te2dyaWQtdGVtcGxhdGUtY29sdW1uczoxNjhweCBtaW5tYXgoMCwxZnIpO2dyaWQtdGVtcGxhdGUtYXJlYXM6InNob3QgbWFpbiIgInNob3QgYnV5IjthbGlnbi1pdGVtczpzdGFydDtwYWRkaW5nOjE0cHh9LnJvb20tc2hvdHthc3BlY3QtcmF0aW86YXV0bzthbGlnbi1zZWxmOnN0cmV0Y2g7bWluLWhlaWdodDoxNTBweH0ucnR5cGUtaGVhZHtncmlkLXRlbXBsYXRlLWNvbHVtbnM6MTMycHggbWlubWF4KDAsMWZyKX0uaGVyb3thc3BlY3QtcmF0aW86MTYgLyA3fS5ob3RlbC1uYW1le2ZvbnQtc2l6ZTozMnB4fX1AbWVkaWEobWF4LXdpZHRoOjUyMHB4KXsuaGVhZHttaW4taGVpZ2h0OjU2cHg7cGFkZGluZzoxMHB4IDEycHggOHB4IDE2cHh9LnN1YmhlYWR7cGFkZGluZzowIDE2cHggOHB4fS5kZW1vc3RyaXB7cGFkZGluZzo4cHggMTZweH0jY29udGVudHtnYXA6MTRweDtwYWRkaW5nOjJweCAxNnB4IDE2cHh9Lmhlcm97bWFyZ2luLWlubGluZTotMTZweDthc3BlY3QtcmF0aW86NCAvIDN9Lmhlcm8tdHh0e3BhZGRpbmc6MCAxNnB4IDE2cHh9LmhvdGVsLW5hbWV7Zm9udC1zaXplOjI1cHh9LndoZW5iYXJ7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOm1pbm1heCgwLDFmcil9LndoZW4tc2lkZXtkaXNwbGF5OmdyaWQ7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjFmciAxZnJ9LndoZW4tcm9vbXN7ZmxleC1kaXJlY3Rpb246cm93O2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2Vlbn0ud2hlbi1zaWRlIC5nb3ttaW4taGVpZ2h0OjQ4cHh9LndoZW4tc2lkZTpub3QoOmhhcyguZ28pKXtncmlkLXRlbXBsYXRlLWNvbHVtbnM6MWZyfS53aGVuYmFyOm5vdCg6aGFzKC5nbykpe2dhcDowO292ZXJmbG93OmhpZGRlbjtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWMtbGluZS0yKTtib3JkZXItcmFkaXVzOjE0cHg7YmFja2dyb3VuZDp2YXIoLS1jLWJnKX0ud2hlbmJhcjpub3QoOmhhcyguZ28pKSAud2hlbi1kYXRlc3tib3JkZXI6MDtib3JkZXItcmFkaXVzOjB9LndoZW5iYXI6bm90KDpoYXMoLmdvKSkgLndoZW4tcm9vbXN7cGFkZGluZzo4cHggMTBweCA4cHggMTRweDtib3JkZXI6MDtib3JkZXItdG9wOjFweCBzb2xpZCB2YXIoLS1jLWxpbmUpO2JvcmRlci1yYWRpdXM6MH0ud2hlbmJhcjpub3QoOmhhcyguZ28pKSAuY2Fse2JvcmRlcjowO2JvcmRlci10b3A6MXB4IHNvbGlkIHZhcigtLWMtbGluZSk7Ym9yZGVyLXJhZGl1czowO2JveC1zaGFkb3c6bm9uZX0udGlsZXN7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjFmcjtnYXA6MTBweH0udGlsZXtmbGV4LWRpcmVjdGlvbjpyb3c7YWxpZ24taXRlbXM6c3RyZXRjaH0udC1zaG90e2ZsZXg6MCAwIDExMnB4O2FzcGVjdC1yYXRpbzphdXRvO21pbi1oZWlnaHQ6MTMycHh9LnQtYnJhbmR7aW5zZXQtYmxvY2stc3RhcnQ6OHB4O2luc2V0LWlubGluZS1zdGFydDo4cHg7cGFkZGluZzoycHggN3B4O2ZvbnQtc2l6ZToxMHB4fS50LWJvZHl7cGFkZGluZzoxMXB4IDEycHggMTJweDttaW4td2lkdGg6MH0udC1uYW1le2ZvbnQtc2l6ZToxNC41cHh9LnQtZnJvbXtmb250LXNpemU6MTdweH0uc2stdGlsZXN7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjFmcn0uc2stdGlsZXtncmlkLXRlbXBsYXRlLWNvbHVtbnM6MTEycHggMWZyO2dyaWQtdGVtcGxhdGUtcm93czphdXRvIGF1dG8gMWZyO2NvbHVtbi1nYXA6MTJweH0uc2staW1ne2dyaWQtcm93OjEgLyBzcGFuIDM7YXNwZWN0LXJhdGlvOmF1dG87aGVpZ2h0OjEyMHB4fS50d297Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjFmcn0ucm93LC5yb3cud2l0aHRodW1ie2dyaWQtdGVtcGxhdGUtY29sdW1uczptaW5tYXgoMCwxZnIpIGF1dG99LnJvdyAudGh1bWJ7ZGlzcGxheTpub25lfS5yb3cgLmFjdGlvbntncmlkLWNvbHVtbjoxIC8gLTE7anVzdGlmeS1jb250ZW50OmZsZXgtZW5kfS5yb3cgLmFjdGlvbjplbXB0eXtkaXNwbGF5Om5vbmV9LmJhY2tidG46bm90KFtoaWRkZW5dKSsuZmxvdyAuZmxhYmVse2Rpc3BsYXk6bm9uZX0uYmFja2J0bjpub3QoW2hpZGRlbl0pKy5mbG93IGxpW2FyaWEtY3VycmVudD1zdGVwXSAuZmxhYmVse2Rpc3BsYXk6aW5saW5lfS5mbG93IGxpK2xpOmJlZm9yZXt3aWR0aDoxMnB4fS5sZWdze2dyaWQtdGVtcGxhdGUtY29sdW1uczoxZnJ9LmNtcHtncmlkLXRlbXBsYXRlLWNvbHVtbnM6bWlubWF4KDY4cHgsODRweCkgcmVwZWF0KHZhcigtLWNvbHMpLG1pbm1heCgxMThweCwxZnIpKX0uZ297bWluLWhlaWdodDo0OHB4fS5yb29tLWJ1eXtmbGV4LXdyYXA6d3JhcH0ucm9vbS1idXkgLmFjdGlvbntmbGV4OjEgMSAxMDAlfS5yb29tLWJ1eSAuYWN0aW9uIC5nb3tmbGV4OjEgMSAwfS5ydHlwZS1oZWFke2dyaWQtdGVtcGxhdGUtY29sdW1uczo3NnB4IG1pbm1heCgwLDFmcil9LmdvLnNte21pbi1oZWlnaHQ6NDBweH0uY2hpcCwuY2hpcC5wbGFjZXttaW4taGVpZ2h0OjM4cHh9Lm1lbWJlcmNoaXAsLmhlYWR0cmlwe2hlaWdodDozNnB4fS5zdGVwLmxpZ2h0IGJ1dHRvbiwuc3RlcCBidXR0b257d2lkdGg6MzZweDtoZWlnaHQ6MzZweH19I2NvbnRlbnQuZW50ZXI+KnthbmltYXRpb246ZW50ZXIgLjI4cyB2YXIoLS1lYXNlKSBib3RofSNjb250ZW50LmVudGVyPjpudGgtY2hpbGQoMil7YW5pbWF0aW9uLWRlbGF5Oi4wM3N9I2NvbnRlbnQuZW50ZXI+Om50aC1jaGlsZCgzKXthbmltYXRpb24tZGVsYXk6LjA2c30jY29udGVudC5lbnRlcj46bnRoLWNoaWxkKG4rNCl7YW5pbWF0aW9uLWRlbGF5Oi4wOXN9QGtleWZyYW1lcyBlbnRlcnswJXtvcGFjaXR5OjA7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoNnB4KX19QG1lZGlhKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246cmVkdWNlKXsqLCo6YmVmb3JlLCo6YWZ0ZXJ7YW5pbWF0aW9uOm5vbmUhaW1wb3J0YW50O3RyYW5zaXRpb246bm9uZSFpbXBvcnRhbnR9LmNhcmQuYnVzeSAuYnVzeWJhcjpiZWZvcmV7d2lkdGg6MTAwJTt0cmFuc2Zvcm06bm9uZTtvcGFjaXR5Oi42fS5za3tiYWNrZ3JvdW5kOnZhcigtLWMtc3Vuayl9fS5ib29rZWQtbWFyay5wYXl7YmFja2dyb3VuZDp2YXIoLS1jLXByaW1hcnktc29mdCk7Y29sb3I6dmFyKC0tYy1wcmltYXJ5KX0ucGF5Ym94e2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47Z2FwOjEwcHg7cGFkZGluZzoxNnB4O2JvcmRlcjoxcHggc29saWQgdmFyKC0tYy1saW5lKTtib3JkZXItcmFkaXVzOnZhcigtLXItbGcpO2JhY2tncm91bmQ6dmFyKC0tYy1iZyl9LnBheS1hbW91bnR7Zm9udC1zaXplOjMwcHg7Zm9udC13ZWlnaHQ6NzIwO2xpbmUtaGVpZ2h0OjEuMTtsZXR0ZXItc3BhY2luZzotLjAxZW07Zm9udC12YXJpYW50LW51bWVyaWM6dGFidWxhci1udW1zO2NvbG9yOnZhcigtLWMtaW5rKX0ucGF5LWJ5e2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpmbGV4LXN0YXJ0O2dhcDo4cHg7cGFkZGluZzoxMHB4IDEycHg7Ym9yZGVyLXJhZGl1czp2YXIoLS1yLW1kKTtiYWNrZ3JvdW5kOnZhcigtLWMtd2FybmluZy1zb2Z0KTtjb2xvcjp2YXIoLS1jLXdhcm5pbmctaW5rKTtmb250LXNpemU6MTNweDtmb250LXdlaWdodDo1NjA7bGluZS1oZWlnaHQ6MS41fS5wYXktYnkgLmNvdW50ZG93bntmb250LXZhcmlhbnQtbnVtZXJpYzp0YWJ1bGFyLW51bXN9LnVucGFpZC5wYWlke2JhY2tncm91bmQ6dmFyKC0tYy1zdWNjZXNzLXNvZnQpfS51bnBhaWQucGFpZDpiZWZvcmV7YmFja2dyb3VuZDp2YXIoLS1jLXN1Y2Nlc3MpfS51bnBhaWQucGFpZCBie2NvbG9yOnZhcigtLWMtc3VjY2Vzcy1pbmspfS5jYWwtZ3JpZHtyb3ctZ2FwOjRweH0uY2R7aGVpZ2h0OjUwcHh9LmNkPnNwYW57ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjtnYXA6MXB4O3dpZHRoOmNhbGMoMTAwJSAtIDRweCk7bWF4LXdpZHRoOjY0cHg7aGVpZ2h0OjEwMCU7bWFyZ2luOjAgYXV0bztib3JkZXItcmFkaXVzOjEwcHh9LmNkLW57Zm9udC13ZWlnaHQ6aW5oZXJpdDtsaW5lLWhlaWdodDoxLjF9LmNkLXB7cG9zaXRpb246c3RhdGljO21heC13aWR0aDoxMDAlO292ZXJmbG93OmhpZGRlbjtjb2xvcjp2YXIoLS1jLWluay0yKTtmb250LXNpemU6MTAuNXB4O2ZvbnQtd2VpZ2h0OjYwMDtsaW5lLWhlaWdodDoxLjE1O2xldHRlci1zcGFjaW5nOi0uMDJlbTtmb250LXZhcmlhbnQtbnVtZXJpYzp0YWJ1bGFyLW51bXN9LmNkLmxvd2VzdCAuY2QtcHtjb2xvcjp2YXIoLS1jLXN1Y2Nlc3MtaW5rKTtmb250LXdlaWdodDo3NTB9LmNkLnRvZGF5PnNwYW46YWZ0ZXJ7ZGlzcGxheTpub25lfS5jZC50b2RheSAuY2Qtbnt0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lIDJweDt0ZXh0LXVuZGVybGluZS1vZmZzZXQ6M3B4fS5jZC5iZXR3ZWVuOmJlZm9yZSwuY2QuaW4uaGFzLW91dDpiZWZvcmUsLmNkLm91dDpiZWZvcmUsLmNkLnJlYWNoOmJlZm9yZSwuY2QucmVhY2gtZW5kOmJlZm9yZXtpbnNldDowfS5jZC5pbi5oYXMtb3V0OmJlZm9yZXtsZWZ0OjUwJX0uY2Qub3V0OmJlZm9yZSwuY2QucmVhY2gtZW5kOmJlZm9yZXtyaWdodDo1MCV9LmNkLmluPnNwYW4sLmNkLm91dD5zcGFue2JhY2tncm91bmQ6dmFyKC0tYy1wcmltYXJ5KTtjb2xvcjp2YXIoLS1jLW9uLXByaW1hcnkpfS5jZC5pbiAuY2QtcCwuY2Qub3V0IC5jZC1we2NvbG9yOnZhcigtLWMtb24tcHJpbWFyeSl9LmNkOmZvY3VzLXZpc2libGU+c3BhbntvdXRsaW5lOjJweCBzb2xpZCB2YXIoLS1jLXByaW1hcnkpO291dGxpbmUtb2Zmc2V0OjFweH0uY2QuaW46Zm9jdXMtdmlzaWJsZT5zcGFuLC5jZC5vdXQ6Zm9jdXMtdmlzaWJsZT5zcGFue291dGxpbmUtY29sb3I6dmFyKC0tYy1pbmspfS5jYWwtbGVnZW5ke2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47Z2FwOjJweDttaW4td2lkdGg6MH0uY2FsLWxlZ2VuZCBzbWFsbHtmb250LXNpemU6MTEuNXB4O2xpbmUtaGVpZ2h0OjEuNDtjb2xvcjp2YXIoLS1jLWluay0zKX0uZmxleC1kYXRlc3tzY3JvbGwtc25hcC10eXBlOnggbWFuZGF0b3J5O3Njcm9sbC1wYWRkaW5nLWlubGluZToycHg7bWFzay1pbWFnZTpsaW5lYXItZ3JhZGllbnQoOTBkZWcsdHJhbnNwYXJlbnQsIzAwMCAxMnB4LCMwMDAgY2FsYygxMDAlIC0gMjhweCksdHJhbnNwYXJlbnQpfS5mbGV4LWRhdGVzIC5mZHtzY3JvbGwtc25hcC1hbGlnbjpzdGFydH0uZmxleC1kYXRlcy5hdC1zdGFydHttYXNrLWltYWdlOmxpbmVhci1ncmFkaWVudCg5MGRlZywjMDAwIGNhbGMoMTAwJSAtIDI4cHgpLHRyYW5zcGFyZW50KX0uZmxleC1kYXRlcy5hdC1lbmR7bWFzay1pbWFnZTpsaW5lYXItZ3JhZGllbnQoOTBkZWcsdHJhbnNwYXJlbnQsIzAwMCAxMnB4KX0uZmxleC1kYXRlcy5hdC1zdGFydC5hdC1lbmR7bWFzay1pbWFnZTpub25lfS5mb3JtIGlucHV0W2FyaWEtaW52YWxpZD10cnVlXSwuZm9ybSBpbnB1dFthcmlhLWludmFsaWQ9dHJ1ZV06Zm9jdXN7Ym9yZGVyLWNvbG9yOnZhcigtLWMtZXJyb3IpO2JveC1zaGFkb3c6MCAwIDAgM3B4IHZhcigtLWMtZXJyb3Itc29mdCl9LmZvcm0tZXJye2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpmbGV4LXN0YXJ0O2dhcDo4cHg7cGFkZGluZzoxMHB4IDEycHg7Ym9yZGVyLXJhZGl1czp2YXIoLS1yLW1kKTtiYWNrZ3JvdW5kOnZhcigtLWMtZXJyb3Itc29mdCk7Y29sb3I6dmFyKC0tYy1lcnJvci1pbmspO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtd2VpZ2h0OjYwMDtsaW5lLWhlaWdodDoxLjQ1fS5mb3JtLWVyciAuaWNve2ZsZXg6bm9uZTt3aWR0aDoxNnB4O2hlaWdodDoxNnB4O21hcmdpbi10b3A6MXB4fS5zdGF0ZSAuZm9vdD4uZ297d2hpdGUtc3BhY2U6bm93cmFwfS5zdGF0ZSAubGlua3N7YWxpZ24tc2VsZjpzdHJldGNoO21hcmdpbi10b3A6NnB4O3RleHQtYWxpZ246c3RhcnR9LmxpbmstZ297ZGlzcGxheTppbmxpbmUtZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjRweDtjb2xvcjp2YXIoLS1jLXByaW1hcnktaW5rKTtmb250LXdlaWdodDo2NTB9LmxpbmstZ28gLmljb3tjb2xvcjppbmhlcml0fUBtZWRpYShtYXgtd2lkdGg6NTIwcHgpey5zdGF0ZSAuZm9vdHtmbGV4LWRpcmVjdGlvbjpjb2x1bW47YWxpZ24tc2VsZjpzdHJldGNofS5zdGF0ZSAuZm9vdD4uZ297d2lkdGg6MTAwJX19LmhlYWQgLmJyYW5ke21heC1oZWlnaHQ6MzhweDtwYWRkaW5nOjA7Ym9yZGVyLXJhZGl1czowO2JhY2tncm91bmQ6bm9uZX1bZGF0YS10aGVtZT1kYXJrXSAuaGVhZCAuYnJhbmR7cGFkZGluZzo0cHggOHB4O2JvcmRlci1yYWRpdXM6OHB4O2JhY2tncm91bmQ6I2RmZTVlZTtmaWx0ZXI6YnJpZ2h0bmVzcyguOSl9LmJhbmQgLndoZW4tbntsaW5lLWhlaWdodDoxLjI1O3RleHQtYWxpZ246Y2VudGVyfS5iYW5kIC53aGVuLW4gc21hbGx7ZGlzcGxheTpibG9jaztmb250LXNpemU6MTAuNXB4O2ZvbnQtd2VpZ2h0OjYwMDtvcGFjaXR5Oi44NX0uaGVhZCAudGl0bGU6ZW1wdHl7ZGlzcGxheTpub25lfS5zay1sb2dve29yZGVyOi0xfS5za2Vse2dhcDoxMnB4fS5zay1zdWJ7d2lkdGg6NTglO2hlaWdodDoxNHB4O21hcmdpbi10b3A6LTZweH0uc2stYmFye2hlaWdodDoxMThweH0uc2stY2hpcHN7ZGlzcGxheTpmbGV4O2dhcDoxMHB4fS5zay1jaGlwe3dpZHRoOjE2OHB4O2hlaWdodDo0MHB4O2JvcmRlci1yYWRpdXM6OTk5cHh9LnNrLWNoaXAuc2hvcnR7d2lkdGg6MTA0cHh9LnNrLXNheXtmb250LXNpemU6MjBweDtmb250LXdlaWdodDo3MDA7bGV0dGVyLXNwYWNpbmc6LS4wMTVlbX0uc3RlcCBidXR0b246ZGlzYWJsZWR7b3BhY2l0eTouNDV9Lm5ie2Rpc3BsYXk6aW5saW5lLWJsb2NrO21heC13aWR0aDoxMDAlO292ZXJmbG93LXdyYXA6YW55d2hlcmV9LmNvbmYudGlja2V0IC53aGVyZTpiZWZvcmUsLmNvbmYudGlja2V0IC53aGVyZTphZnRlcntjbGlwLXBhdGg6bm9uZTtib3JkZXItY29sb3I6dHJhbnNwYXJlbnQ7dHJhbnNmb3JtOnJvdGF0ZSg0NWRlZyl9LmNvbmYudGlja2V0IC53aGVyZTpiZWZvcmV7Ym9yZGVyLXRvcC1jb2xvcjp2YXIoLS1jLWxpbmUpO2JvcmRlci1yaWdodC1jb2xvcjp2YXIoLS1jLWxpbmUpfS5jb25mLnRpY2tldCAud2hlcmU6YWZ0ZXJ7Ym9yZGVyLWJvdHRvbS1jb2xvcjp2YXIoLS1jLWxpbmUpO2JvcmRlci1sZWZ0LWNvbG9yOnZhcigtLWMtbGluZSl9LnF1aWV0LWVuZHttYXJnaW4tdG9wOjZweH0uc3RlcCBidXR0b24sLnN0ZXAubGlnaHQgYnV0dG9uLC5jYWwtbmF2IGJ1dHRvbnt3aWR0aDo0MHB4O2hlaWdodDo0MHB4fS5jYWwtZm9vdCAubGlua3l7bWluLWhlaWdodDo0MHB4O3BhZGRpbmc6MCA2cHg7bWFyZ2luOi04cHggLTZweH0udC1tZXRhOm5vdCg6aGFzKC5yYXRlKSk6aGFzKC50LXdoZXJlOmVtcHR5KXtkaXNwbGF5Om5vbmV9LnN0YXRlIC5saW5rLXJvd3t3aWR0aDoxMDAlfS5saW5rLXJvdz5zcGFuOmZpcnN0LWNoaWxke2ZsZXg6MSAxIGF1dG87bWluLXdpZHRoOjA7bGluZS1oZWlnaHQ6MS4zNTt0ZXh0LWFsaWduOnN0YXJ0fS5saW5rLWdve2ZsZXg6bm9uZTt3aGl0ZS1zcGFjZTpub3dyYXB9LmNvbmYgLndoZW4gLm5ie2Rpc3BsYXk6YmxvY2t9LmNvbmYgLndoZW4gLm5iK3NwYW5bYXJpYS1oaWRkZW5de2Rpc3BsYXk6bm9uZX0uc2lte2Rpc3BsYXk6aW5saW5lLWJsb2NrO21hcmdpbi1pbmxpbmUtZW5kOjZweDtwYWRkaW5nOjFweCA2cHg7Ym9yZGVyOjFweCBzb2xpZCBjdXJyZW50Q29sb3I7Ym9yZGVyLXJhZGl1czo0cHg7Zm9udC1mYW1pbHk6dmFyKC0tZi1zYW5zKTtmb250LXNpemU6LjVlbTtmb250LXdlaWdodDo2NTA7bGV0dGVyLXNwYWNpbmc6LjAyZW07bGluZS1oZWlnaHQ6MS41O3ZlcnRpY2FsLWFsaWduOi4zNWVtO29wYWNpdHk6Ljh9LnQtbmFtZSAuc2ltLC5jb25mIC53aGVyZSAuc2lte2ZvbnQtc2l6ZToxMC41cHg7dmVydGljYWwtYWxpZ246LjE1ZW19LnNpbS1ub3Rle2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpmbGV4LXN0YXJ0O2dhcDo3cHg7Y29sb3I6dmFyKC0tYy1pbmstMyk7Zm9udC1zaXplOjEycHg7bGluZS1oZWlnaHQ6MS41fS5zaW0tbm90ZSAuaWNve2ZsZXg6bm9uZTt3aWR0aDoxNHB4O2hlaWdodDoxNHB4O21hcmdpbi10b3A6MnB4fS5yb29tLWxlYWR7bWFyZ2luOjA7Y29sb3I6dmFyKC0tYy1pbmspO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtd2VpZ2h0OjYwMDtsaW5lLWhlaWdodDoxLjR9LmxlYWQta3tkaXNwbGF5OmJsb2NrO21hcmdpbi1ib3R0b206MXB4O2NvbG9yOnZhcigtLWMtcHJpbWFyeS1pbmspO2ZvbnQtc2l6ZToxMC41cHg7Zm9udC13ZWlnaHQ6NzAwO2xldHRlci1zcGFjaW5nOi4wOGVtO3RleHQtdHJhbnNmb3JtOnVwcGVyY2FzZX06bGFuZyh6aCkgLmxlYWQta3tsZXR0ZXItc3BhY2luZzouMDJlbX0uaC1mcmVle2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjZweDttYXJnaW4tdG9wOjZweDtjb2xvcjp2YXIoLS1jLWluay0yKTtmb250LXNpemU6MTIuNXB4O2ZvbnQtd2VpZ2h0OjYwMH0uaC1mcmVlIC5pY297d2lkdGg6MTRweDtoZWlnaHQ6MTRweH06cm9vdHstLXItbGc6IDEycHh9OnJvb3QgLmgtbmFtZXtmb250LXNpemU6MjRweDtmb250LXdlaWdodDo4MDA7bGV0dGVyLXNwYWNpbmc6LS4wMmVtfTpyb290IC53diw6cm9vdCAudC1mcm9tLDpyb290IC5wLXRvdGFsLDpyb290IC5mZC1wcmljZSw6cm9vdCAuZmQtZG4sOnJvb3QgLmNkLXB7Zm9udC12YXJpYW50LW51bWVyaWM6dGFidWxhci1udW1zIGxpbmluZy1udW1zfTpyb290IC53dntmb250LXNpemU6MjBweDtmb250LXdlaWdodDo3NTA7bGV0dGVyLXNwYWNpbmc6LS4wMTVlbX06cm9vdCAudGlsZXN7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjFmcjtnYXA6MDtib3JkZXItdG9wOjEuNXB4IHNvbGlkIHZhcigtLWMtaW5rKX06cm9vdCAudGlsZXtwb3NpdGlvbjpyZWxhdGl2ZTtmbGV4LWRpcmVjdGlvbjpyb3c7YWxpZ24taXRlbXM6c3RyZXRjaDtib3JkZXI6MDtib3JkZXItYm90dG9tOjFweCBzb2xpZCB2YXIoLS1jLWxpbmUpO2JvcmRlci1yYWRpdXM6MDtiYWNrZ3JvdW5kOnRyYW5zcGFyZW50fTpyb290IC50aWxlOmhvdmVye2JhY2tncm91bmQ6dmFyKC0tYy1zdW5rKTtib3gtc2hhZG93Om5vbmU7dHJhbnNmb3JtOm5vbmV9OnJvb3QgLnRpbGUubG93ZXN0OmJlZm9yZXtjb250ZW50OiIiO3Bvc2l0aW9uOmFic29sdXRlO2luc2V0OjAgYXV0byAwIDA7d2lkdGg6M3B4O2JhY2tncm91bmQ6dmFyKC0tYy1zdWNjZXNzKX06cm9vdCAudC1zaG90e2ZsZXg6MCAwIDEwNHB4O3dpZHRoOjEwNHB4O21pbi1oZWlnaHQ6MDthc3BlY3QtcmF0aW86MTttYXJnaW46MTRweCAwIDE0cHggMTJweDtib3JkZXItcmFkaXVzOjEwcHg7YWxpZ24tc2VsZjpmbGV4LXN0YXJ0fTpyb290IC50LWJyYW5ke2Rpc3BsYXk6bm9uZX06cm9vdCAudC1ib2R5e2Rpc3BsYXk6Z3JpZDtncmlkLXRlbXBsYXRlLWNvbHVtbnM6bWlubWF4KDAsMWZyKSBhdXRvO2dyaWQtdGVtcGxhdGUtYXJlYXM6Im5hbWUgZm9vdCIgIm1ldGEgZm9vdCIgInRhZ3MgZm9vdCI7YWxpZ24tY29udGVudDpzdGFydDtnYXA6NXB4IDE0cHg7cGFkZGluZzoxNHB4IDEycHggMTRweCAxNHB4fTpyb290IC50LW5hbWV7Z3JpZC1hcmVhOm5hbWU7Zm9udC1mYW1pbHk6dmFyKC0tZi1kaXNwbGF5KTtmb250LXNpemU6MTcuNXB4O2ZvbnQtd2VpZ2h0OjYwMDtsaW5lLWhlaWdodDoxLjI7bGV0dGVyLXNwYWNpbmc6LS4wMDVlbTstd2Via2l0LWxpbmUtY2xhbXA6MztsaW5lLWNsYW1wOjN9OnJvb3QgLnQtbWV0YXtncmlkLWFyZWE6bWV0YTtmbGV4LXdyYXA6d3JhcDtnYXA6MnB4IDEwcHh9OnJvb3QgLnQtbWV0YSAucmF0ZXttYXJnaW4taW5saW5lLXN0YXJ0OjB9OnJvb3QgLnQtd2hlcmV7d2hpdGUtc3BhY2U6bm9ybWFsO292ZXJmbG93OnZpc2libGV9OnJvb3QgLnQtdGFnc3tncmlkLWFyZWE6dGFnczttYXJnaW4tdG9wOjNweH06cm9vdCAudC1mb290e2dyaWQtYXJlYTpmb290O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjthbGlnbi1pdGVtczpmbGV4LWVuZDtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1zdGFydDttYXJnaW46MDtwYWRkaW5nOjA7dGV4dC1hbGlnbjplbmR9OnJvb3QgLnQtZnJvbXtmb250LXNpemU6MTlweDtmb250LXdlaWdodDo3NTB9OnJvb3QgLnQtZnJvbSBzbWFsbCw6cm9vdCAudC1zdWJ7bWF4LXdpZHRoOjc2cHg7bWFyZ2luLXRvcDoycHg7bWFyZ2luLWlubGluZS1zdGFydDphdXRvO2ZvbnQtc2l6ZToxMXB4O2xpbmUtaGVpZ2h0OjEuMzt3aGl0ZS1zcGFjZTpub3JtYWx9OnJvb3QgLnQtZ297ZGlzcGxheTpub25lfUBtZWRpYShtaW4td2lkdGg6NjAwcHgpezpyb290IC50LXNob3R7ZmxleC1iYXNpczoxMzZweDt3aWR0aDoxMzZweH06cm9vdCAudC1uYW1le2ZvbnQtc2l6ZToxOXB4fTpyb290IC50LWZyb20gc21hbGwsOnJvb3QgLnQtc3Vie21heC13aWR0aDpub25lfX06cm9vdCAjY29udGVudDpoYXMoPi5oZXJvKT4uaGVyb3tvcmRlcjotNjthc3BlY3QtcmF0aW86MTYgLyA5fTpyb290ICNjb250ZW50Omhhcyg+Lmhlcm8pPi5zaW0tbm90ZXtvcmRlcjotNTttYXJnaW4tdG9wOi02cHh9OnJvb3QgI2NvbnRlbnQ6aGFzKD4uaGVybyk+LnNlZ3tvcmRlcjotNH06cm9vdCAjY29udGVudDpoYXMoPi5oZXJvKT4ud2hlbmJhcntvcmRlcjotM306cm9vdCAjY29udGVudDpoYXMoPi5oZXJvKT4uc3RyaXAtaHtvcmRlcjotMjttYXJnaW4tYm90dG9tOi04cHg7Y29sb3I6dmFyKC0tYy1pbmspO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0Ojc1MDtsZXR0ZXItc3BhY2luZzouMDZlbTt0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2V9OnJvb3Q6bGFuZyh6aCkgLnN0cmlwLWh7bGV0dGVyLXNwYWNpbmc6LjAyZW19OnJvb3QgI2NvbnRlbnQ6aGFzKD4uaGVybyk+LmZsZXgtZGF0ZXN7b3JkZXI6LTE7Z3JpZC1hdXRvLWZsb3c6Y29sdW1uO2dyaWQtYXV0by1jb2x1bW5zOm1pbm1heChtYXgtY29udGVudCwxZnIpO2dhcDowO21hcmdpbjowO3BhZGRpbmc6MDtvdmVyZmxvdy14OmF1dG87Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1jLWxpbmUtMik7Ym9yZGVyLXJhZGl1czoxMnB4O21hc2staW1hZ2U6bm9uZX06cm9vdCAuZmR7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDoycHg7cGFkZGluZzo5cHggNnB4IDExcHg7Ym9yZGVyOjA7Ym9yZGVyLWlubGluZS1lbmQ6MXB4IHNvbGlkIHZhcigtLWMtbGluZSk7Ym9yZGVyLXJhZGl1czowO2JhY2tncm91bmQ6dHJhbnNwYXJlbnQ7Ym94LXNoYWRvdzpub25lO3RleHQtYWxpZ246Y2VudGVyO3RyYW5zaXRpb246YmFja2dyb3VuZC1jb2xvciAuMjVzIHZhcigtLWVhc2UpLGNvbG9yIC4yNXMgdmFyKC0tZWFzZSl9OnJvb3QgLmZkOmxhc3QtY2hpbGR7Ym9yZGVyLWlubGluZS1lbmQ6MH06cm9vdCAuZmQtZGF5e2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47YWxpZ24taXRlbXM6Y2VudGVyO2dhcDowO2NvbG9yOnZhcigtLWMtaW5rLTMpfTpyb290IC5mZC1tb24sOnJvb3QgLmZkLWRvd3tmb250LXNpemU6MTAuNXB4O2ZvbnQtd2VpZ2h0OjY1MDtsZXR0ZXItc3BhY2luZzouMDRlbTt0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2V9OnJvb3QgLmZkLW1vbntjb2xvcjp2YXIoLS1jLXByaW1hcnktaW5rKX06cm9vdCAuZmQtZG57Y29sb3I6dmFyKC0tYy1pbmspO2ZvbnQtc2l6ZToyMHB4O2ZvbnQtd2VpZ2h0Ojc1MDtsaW5lLWhlaWdodDoxLjE1fTpyb290IC5mZC1wcmljZXtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo2NTB9OnJvb3QgLmZkLm9ue2JhY2tncm91bmQ6dmFyKC0tYy1wcmltYXJ5KTtjb2xvcjp2YXIoLS1jLW9uLXByaW1hcnkpO2JveC1zaGFkb3c6bm9uZX06cm9vdCAuZmQub24gLmZkLWRheSw6cm9vdCAuZmQub24gLmZkLWRuLDpyb290IC5mZC5vbiAuZmQtbW9uLDpyb290IC5mZC5vbiAuZmQtcHJpY2V7Y29sb3I6dmFyKC0tYy1vbi1wcmltYXJ5KX06cm9vdCAuZmQubG93ZXN0Om5vdCgub24pe2JhY2tncm91bmQ6dmFyKC0tYy1zdWNjZXNzLXNvZnQpfTpyb290IC5mZC5iZXN0IC5mZC1kYXk6YWZ0ZXJ7Y29udGVudDpub25lfTpyb290IC5mZC1sb3d7Y29sb3I6dmFyKC0tYy1zdWNjZXNzLWluayk7Zm9udC1zaXplOjkuNXB4O2ZvbnQtd2VpZ2h0Ojc1MDtsZXR0ZXItc3BhY2luZzouMDRlbTt0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2V9OnJvb3QgLmZkLm9uIC5mZC1sb3d7Y29sb3I6dmFyKC0tYy1vbi1wcmltYXJ5KX1AbWVkaWEobWluLXdpZHRoOjYwMHB4KXs6cm9vdCAuaGVyb3thc3BlY3QtcmF0aW86MjEgLyA5fX06cm9vdCAucm9vbXN7Z2FwOjA7Ym9yZGVyLXRvcDoxLjVweCBzb2xpZCB2YXIoLS1jLWluayl9OnJvb3QgLnJ0eXBlLDpyb290IC5yb29te2JvcmRlcjowO2JvcmRlci1ib3R0b206MXB4IHNvbGlkIHZhcigtLWMtbGluZSk7Ym9yZGVyLXJhZGl1czowO2JhY2tncm91bmQ6dHJhbnNwYXJlbnR9OnJvb3QgLnJvb217Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjFmcjtncmlkLXRlbXBsYXRlLWFyZWFzOiJzaG90IiAibWFpbiIgImJ1eSI7cGFkZGluZzoxNnB4IDB9OnJvb3QgLnJ0eXBlLWhlYWR7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjFmcjtnYXA6MTJweDtwYWRkaW5nOjE2cHggMCA4cHh9OnJvb3QgLnJvb20tc2hvdCw6cm9vdCAucnR5cGUtaGVhZCAucm9vbS1zaG90e2FsaWduLXNlbGY6c3RhcnQ7d2lkdGg6MTAwJTtoZWlnaHQ6YXV0bzthc3BlY3QtcmF0aW86MTYgLyA5O2JvcmRlci1yYWRpdXM6MTBweH06cm9vdCAucm9vbS1uYW1le2ZvbnQtc2l6ZToxN3B4O2ZvbnQtd2VpZ2h0Ojc1MH06cm9vdCAucnJhdGV7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjFmcjtwYWRkaW5nOjEycHggMDtib3JkZXItdG9wOjFweCBkYXNoZWQgdmFyKC0tYy1saW5lKX06cm9vdCAucnJhdGUgLnJvb20tYnV5LDpyb290IC5yb29tIC5yb29tLWJ1eXtib3JkZXItdG9wOjA7cGFkZGluZy10b3A6MH06cm9vdCAucC10b3RhbHtmb250LXNpemU6MjBweH1AbWVkaWEobWluLXdpZHRoOjYwMHB4KXs6cm9vdCAucm9vbXtncmlkLXRlbXBsYXRlLWNvbHVtbnM6MjQwcHggbWlubWF4KDAsMWZyKTtncmlkLXRlbXBsYXRlLWFyZWFzOiJzaG90IG1haW4iICJzaG90IGJ1eSI7Z2FwOjEwcHggMThweH06cm9vdCAucnR5cGUtaGVhZHtncmlkLXRlbXBsYXRlLWNvbHVtbnM6MjQwcHggbWlubWF4KDAsMWZyKTtnYXA6MThweH06cm9vdCAucm9vbS1zaG90LDpyb290IC5ydHlwZS1oZWFkIC5yb29tLXNob3R7YXNwZWN0LXJhdGlvOjQgLyAzfTpyb290IC5ycmF0ZXtncmlkLXRlbXBsYXRlLWNvbHVtbnM6bWlubWF4KDAsMWZyKSBhdXRvO2FsaWduLWl0ZW1zOnN0YXJ0O2dhcDoxOHB4fTpyb290IC5ycmF0ZSAucm9vbS1idXl7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2FsaWduLWl0ZW1zOmZsZXgtZW5kO3RleHQtYWxpZ246ZW5kfTpyb290IC5ycmF0ZSAucm9vbS1idXkgLnByaWNle2FsaWduLWl0ZW1zOmZsZXgtZW5kfX06cm9vdCAuZ297d2hpdGUtc3BhY2U6bm93cmFwfUBtZWRpYShwcmVmZXJzLXJlZHVjZWQtbW90aW9uOnJlZHVjZSl7OnJvb3QgLnRpbGUsOnJvb3QgLmZkLDpyb290IC50LXNob3QgaW1ne3RyYW5zaXRpb246bm9uZX19LmxlYWQta3tkaXNwbGF5OmlubGluZTttYXJnaW46MDtjb2xvcjp2YXIoLS1jLWluay0zKTtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo1NTA7bGV0dGVyLXNwYWNpbmc6MDt0ZXh0LXRyYW5zZm9ybTpub25lfS5sZWFkLWs6YWZ0ZXJ7Y29udGVudDoiOiAifTpsYW5nKHpoKSAubGVhZC1rOmFmdGVye2NvbnRlbnQ6Iu+8miJ9QG1lZGlhKG1heC13aWR0aDo1MjBweCl7OnJvb3QgLnQtc2hvdHtmbGV4LWJhc2lzOjg4cHg7d2lkdGg6ODhweH06cm9vdCAudC1ib2R5e2dyaWQtdGVtcGxhdGUtY29sdW1uczptaW5tYXgoMCwxZnIpIGF1dG87Z3JpZC10ZW1wbGF0ZS1hcmVhczoibmFtZSBuYW1lIiAibWV0YSBtZXRhIiAidGFncyBmb290IjthbGlnbi1pdGVtczplbmR9OnJvb3QgLnQtbmFtZXtmb250LXNpemU6MTdweDstd2Via2l0LWxpbmUtY2xhbXA6dW5zZXQ7bGluZS1jbGFtcDpub25lO2Rpc3BsYXk6YmxvY2t9OnJvb3QgLnQtdGFnc3thbGlnbi1zZWxmOmVuZDttYXJnaW4tdG9wOjZweH06cm9vdCAudC10YWdzOmVtcHR5e2dyaWQtY29sdW1uOjEgLyAtMX19OnJvb3QgLmZke3BhZGRpbmc6OXB4IDNweCAxMXB4fTpyb290IC5mZC1wcmljZXtmb250LXNpemU6MTEuNXB4O2xldHRlci1zcGFjaW5nOi0uMDJlbX1bZGF0YS10aGVtZT1kYXJrXSAuaGVhZCAuYnJhbmR7cGFkZGluZzo1cHggOXB4O2JvcmRlci1yYWRpdXM6OXB4O2JhY2tncm91bmQ6I2QzZDllMztib3gtc2hhZG93Om5vbmU7ZmlsdGVyOmJyaWdodG5lc3MoLjgpfVtkYXRhLXRoZW1lPWRhcmtdIC5oZWFkIC5icmFuZC5kYXJrLWFydHtwYWRkaW5nOjA7Ym9yZGVyLXJhZGl1czowO2JhY2tncm91bmQ6bm9uZTtmaWx0ZXI6bm9uZX0ud2hlbmJhciAud2hlbi1yb29tcy53aGVuLXBhcnR5LC5zZWFyY2ggLndoZW4tcm9vbXMud2hlbi1wYXJ0eXtmbGV4LWRpcmVjdGlvbjpjb2x1bW47YWxpZ24taXRlbXM6c3RyZXRjaDtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1zdGFydDtnYXA6MDtwYWRkaW5nOjB9LnBhcnR5LXRpbGV7ZGlzcGxheTpncmlkO2dyaWQtdGVtcGxhdGUtY29sdW1uczptaW5tYXgoMCwxZnIpIGF1dG87YWxpZ24taXRlbXM6Y2VudGVyO2NvbHVtbi1nYXA6OHB4O3Jvdy1nYXA6MnB4O3dpZHRoOjEwMCU7bWluLWhlaWdodDo1MnB4O3BhZGRpbmc6OHB4IDEycHggOHB4IDE0cHg7Ym9yZGVyOjA7YmFja2dyb3VuZDpub25lO2NvbG9yOmluaGVyaXQ7Zm9udDppbmhlcml0O3RleHQtYWxpZ246c3RhcnQ7Y3Vyc29yOnBvaW50ZXJ9LnBhcnR5LXRpbGUgLndse2dyaWQtY29sdW1uOjF9LnBhcnR5LXZ7Z3JpZC1jb2x1bW46MTtjb2xvcjp2YXIoLS1jLWluayk7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6NzAwO2ZvbnQtdmFyaWFudC1udW1lcmljOnRhYnVsYXItbnVtc30ucGFydHktdGlsZSAuaWNve2dyaWQtY29sdW1uOjI7Z3JpZC1yb3c6MSAvIHNwYW4gMjtjb2xvcjp2YXIoLS1jLWluay0zKTt0cmFuc2l0aW9uOnRyYW5zZm9ybSAuMnMgdmFyKC0tZWFzZSl9LnBhcnR5LXRpbGVbYXJpYS1leHBhbmRlZD10cnVlXSAuaWNve3RyYW5zZm9ybTpyb3RhdGUoOTBkZWcpfS5wYXJ0eS10aWxlOmZvY3VzLXZpc2libGV7b3V0bGluZToycHggc29saWQgdmFyKC0tYy1wcmltYXJ5KTtvdXRsaW5lLW9mZnNldDotMnB4O2JvcmRlci1yYWRpdXM6MTJweH0ucGFydHktcGFuZWx7ZGlzcGxheTpncmlkO2dhcDoycHg7cGFkZGluZzo0cHggMTBweCA4cHggMTRweDtib3JkZXItdG9wOjFweCBzb2xpZCB2YXIoLS1jLWxpbmUpfS5wYXJ0eS1wYW5lbFtoaWRkZW5de2Rpc3BsYXk6bm9uZX0ucGFydHktcm93e2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47Z2FwOjEycHg7Y29sb3I6dmFyKC0tYy1pbmstMik7Zm9udC1zaXplOjEzLjVweDtmb250LXdlaWdodDo2MDB9LnBhcnR5LXJvdyAuc3RlcC5saWdodHtib3JkZXI6MDtwYWRkaW5nOjB9QG1lZGlhKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246cmVkdWNlKXsucGFydHktdGlsZSAuaWNve3RyYW5zaXRpb246bm9uZX19LnBhcnR5LXZ7d2hpdGUtc3BhY2U6bm93cmFwfTpyb290IC5mbGV4LWRhdGVzOm5vdCguYXQtZW5kKXttYXNrLWltYWdlOmxpbmVhci1ncmFkaWVudCg5MGRlZywjMDAwIGNhbGMoMTAwJSAtIDI0cHgpLHRyYW5zcGFyZW50KX06cm9vdCAuZmxleC1kYXRlczpub3QoLmF0LXN0YXJ0KTpub3QoLmF0LWVuZCl7bWFzay1pbWFnZTpsaW5lYXItZ3JhZGllbnQoOTBkZWcsdHJhbnNwYXJlbnQsIzAwMCAxMnB4LCMwMDAgY2FsYygxMDAlIC0gMjRweCksdHJhbnNwYXJlbnQpfTpyb290IC5mbGV4LWRhdGVzLmF0LWVuZDpub3QoLmF0LXN0YXJ0KXttYXNrLWltYWdlOmxpbmVhci1ncmFkaWVudCg5MGRlZyx0cmFuc3BhcmVudCwjMDAwIDEycHgpfTpyb290IC5mZHtwYWRkaW5nOjlweCAycHggMTFweH06cm9vdCAuZmQtbG93e2ZvbnQtc2l6ZTo5cHg7bGV0dGVyLXNwYWNpbmc6MH06cm9vdCAuZmQtcHJpY2V7Zm9udC1zaXplOjExcHh9Lmgtd2hlcmUgLnNpbXtmb250LXNpemU6MTBweDt2ZXJ0aWNhbC1hbGlnbjouMWVtfS5jb25mIC5iYW5kIC53dntmb250LXNpemU6MTdweH1AbWVkaWEobWF4LXdpZHRoOjQyMHB4KXsuY29uZiAuYmFuZCAud3Ygc21hbGx7ZGlzcGxheTpibG9jazttYXJnaW46MXB4IDAgMH0uY29uZiAuYmFuZC1ke3BhZGRpbmc6OXB4IDEwcHh9fS5wYXktZm9ye2Rpc3BsYXk6Z3JpZDtnYXA6MTBweH0ucGF5LWZvciAud2hlcmV7Zm9udC1mYW1pbHk6dmFyKC0tZi1kaXNwbGF5KTtmb250LXNpemU6MTlweDtmb250LXdlaWdodDo2MDB9LnBheS1mb3IgLm5vdGV7Y29sb3I6dmFyKC0tYy1pbmstMyk7Zm9udC1zaXplOjEycHh9cC5xdWlldC1lbmR7bWFyZ2luOjZweCAwIDA7dGV4dC1hbGlnbjpjZW50ZXJ9LmxpbmtzIC5saW5rLXJvd3tib3JkZXItcmFkaXVzOjB9I2NvbnRlbnQ6aGFzKC53aGVuYmFyIC5jYWwpPi5zdHJpcC1oLCNjb250ZW50Omhhcygud2hlbmJhciAuY2FsKT4uZmxleC1kYXRlc3tkaXNwbGF5Om5vbmV9LmNkLmJlZm9yZTpub3QoOmRpc2FibGVkKXtjb2xvcjp2YXIoLS1jLWluayl9LmNkLmluOmZvY3VzLXZpc2libGU+c3BhbiwuY2Qub3V0OmZvY3VzLXZpc2libGU+c3BhbntvdXRsaW5lLWNvbG9yOnZhcigtLWMtcHJpbWFyeSk7b3V0bGluZS1vZmZzZXQ6MnB4fS5jYWwtZm9vdCAuZ297bWluLWhlaWdodDozNnB4fTpyb290IC50LWZvb3R7ZmxleC1kaXJlY3Rpb246cm93O2FsaWduLWl0ZW1zOmZsZXgtc3RhcnQ7Z2FwOjZweH06cm9vdCAudC1mb290IC50LWZyb217dGV4dC1hbGlnbjplbmR9OnJvb3QgLnQtZ297ZGlzcGxheTpncmlkO3dpZHRoOjIycHg7aGVpZ2h0OjIycHg7bWFyZ2luLXRvcDoycHg7Ym9yZGVyOjA7YmFja2dyb3VuZDp0cmFuc3BhcmVudDtjb2xvcjp2YXIoLS1jLWluay0zKX06cm9vdCAudGlsZTpob3ZlciAudC1nb3tiYWNrZ3JvdW5kOnRyYW5zcGFyZW50O2NvbG9yOnZhcigtLWMtcHJpbWFyeS1pbmspfUBtZWRpYShtaW4td2lkdGg6NjAwcHgpezpyb290IC50LXNob3R7ZmxleC1iYXNpczoxNTJweDt3aWR0aDoxNTJweDthc3BlY3QtcmF0aW86NCAvIDN9fTpyb290IC50LWZyb20udC1ub25le21heC13aWR0aDoxMDhweDtjb2xvcjp2YXIoLS1jLWluay0zKTtmb250LXNpemU6MTIuNXB4O2ZvbnQtd2VpZ2h0OjYwMDtsaW5lLWhlaWdodDoxLjM1O3RleHQtYWxpZ246ZW5kfTpyb290IC50LWZyb20gc21hbGwsOnJvb3QgLnQtc3Vie21heC13aWR0aDoxMDRweH0ucGFydHktcm93IC5zdGVwIGJ1dHRvbiwud2hlbi1yb29tcyAuc3RlcCBidXR0b257d2lkdGg6NDBweDtoZWlnaHQ6NDBweDtib3JkZXItcmFkaXVzOjk5OXB4O2JhY2tncm91bmQ6dmFyKC0tYy1zdW5rKX0ucGFydHktcm93IC5zdGVwIGJ1dHRvbjpkaXNhYmxlZCwud2hlbi1yb29tcyAuc3RlcCBidXR0b246ZGlzYWJsZWR7YmFja2dyb3VuZDp0cmFuc3BhcmVudH0uc2VnLWJbYXJpYS1wcmVzc2VkPXRydWVde2JhY2tncm91bmQ6dmFyKC0tYy1wcmltYXJ5LXNvZnQpO2NvbG9yOnZhcigtLWMtcHJpbWFyeS1pbmspO2JveC1zaGFkb3c6aW5zZXQgMCAwIDAgMS41cHggdmFyKC0tYy1wcmltYXJ5KX0ucm9vbS1ob3Vyc3tjb2xvcjp2YXIoLS1jLXByaW1hcnktaW5rKX0uc2stdGlsZXN7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjFmcn0uc2stdGlsZXtncmlkLXRlbXBsYXRlLWNvbHVtbnM6MTA0cHggMWZyO2dyaWQtdGVtcGxhdGUtcm93czphdXRvIGF1dG8gMWZyO2NvbHVtbi1nYXA6MTRweH0uc2staW1ne2dyaWQtcm93OjEgLyBzcGFuIDM7YXNwZWN0LXJhdGlvOmF1dG87aGVpZ2h0OjEwNHB4fUBtZWRpYShtaW4td2lkdGg6NjAwcHgpey5zay10aWxle2dyaWQtdGVtcGxhdGUtY29sdW1uczoxNTJweCAxZnJ9LnNrLWltZ3toZWlnaHQ6MTE0cHh9fTpyb290ICNjb250ZW50Omhhcyg+Lmhlcm8pPi5oZXJve2FzcGVjdC1yYXRpbzoyIC8gMX1AbWVkaWEobWluLXdpZHRoOjYwMHB4KXs6cm9vdCAjY29udGVudDpoYXMoPi5oZXJvKT4uaGVyb3thc3BlY3QtcmF0aW86MyAvIDF9fTpyb290ICNjb250ZW50Omhhcyg+Lmhlcm8pPi5oLXN1bTpub3QoLnNpbS1ub3RlKSw6cm9vdCAjY29udGVudDpoYXMoPi5oZXJvKT4uYW1lbntvcmRlcjoxfTpyb290ICNjb250ZW50Omhhcyg+Lmhlcm8pPi5nb29kLXRvLWtub3d7b3JkZXI6Mn06cm9vdCAucm9vbS1zaG90LDpyb290IC5ydHlwZS1oZWFkIC5yb29tLXNob3R7YXNwZWN0LXJhdGlvOjIgLyAxfUBtZWRpYShtaW4td2lkdGg6NjAwcHgpezpyb290IC5yb29tLXNob3QsOnJvb3QgLnJ0eXBlLWhlYWQgLnJvb20tc2hvdHthc3BlY3QtcmF0aW86NCAvIDN9fTpyb290IC5yb29tLmhvdXJseXtncmlkLXRlbXBsYXRlLWNvbHVtbnM6OTZweCBtaW5tYXgoMCwxZnIpO2dyaWQtdGVtcGxhdGUtYXJlYXM6InNob3QgbWFpbiIgImJ1eSBidXkifTpyb290IC5yb29tLmhvdXJseSAucm9vbS1zaG90e2FzcGVjdC1yYXRpbzoxfUBtZWRpYShtaW4td2lkdGg6NjAwcHgpezpyb290IC50aWxlc3tncmlkLXRlbXBsYXRlLWNvbHVtbnM6MWZyIDFmcjtjb2x1bW4tZ2FwOjIycHh9OnJvb3QgLnQtc2hvdHtmbGV4LWJhc2lzOjEwOHB4O3dpZHRoOjEwOHB4O2FzcGVjdC1yYXRpbzoxfTpyb290IC50LW5hbWV7Zm9udC1zaXplOjE3cHh9LnNrLXRpbGVze2dyaWQtdGVtcGxhdGUtY29sdW1uczoxZnIgMWZyfS5zay10aWxle2dyaWQtdGVtcGxhdGUtY29sdW1uczoxMDhweCAxZnJ9LnNrLWltZ3toZWlnaHQ6MTA4cHh9fTpyb290IC50LXN1YiAubmJ7ZGlzcGxheTpibG9ja306cm9vdCAudC1zdWIgLnQtc2Vwe2Rpc3BsYXk6bm9uZX0uY2hpcDpub3QoLnRvb2wpOm5vdCgubmV4dCl7Ym9yZGVyLWNvbG9yOnRyYW5zcGFyZW50O2JhY2tncm91bmQ6dmFyKC0tYy1zdW5rKX1idXR0b24uY2hpcDpub3QoLnRvb2wpOm5vdCgubmV4dCk6aG92ZXJ7Ym9yZGVyLWNvbG9yOnZhcigtLWMtbGluZS0yKTtiYWNrZ3JvdW5kOnZhcigtLWMtYmcpfS5jaGlwW2FyaWEtcHJlc3NlZD10cnVlXTpub3QoLnRvb2wpe2JvcmRlci1jb2xvcjp2YXIoLS1jLXByaW1hcnkpO2JhY2tncm91bmQ6dmFyKC0tYy1wcmltYXJ5LXNvZnQpO2NvbG9yOnZhcigtLWMtcHJpbWFyeS1pbmspfS5zdGVwe2dhcDo0cHg7cGFkZGluZzowO2JvcmRlcjowO2JhY2tncm91bmQ6dHJhbnNwYXJlbnR9LnN0ZXAgYnV0dG9ue3dpZHRoOjQwcHg7aGVpZ2h0OjQwcHg7Ym9yZGVyLXJhZGl1czo5OTlweDtiYWNrZ3JvdW5kOnZhcigtLWMtc3Vuayl9LnN0ZXAgYnV0dG9uOmhvdmVyOm5vdCg6ZGlzYWJsZWQpe2JhY2tncm91bmQ6dmFyKC0tYy1saW5lKX0uc3RlcCBidXR0b246ZGlzYWJsZWR7YmFja2dyb3VuZDp0cmFuc3BhcmVudH06cm9vdCAucm93c3tnYXA6MDtib3JkZXItdG9wOjEuNXB4IHNvbGlkIHZhcigtLWMtaW5rKX06cm9vdCAucm93cz4ucm93e3BhZGRpbmc6MTRweCAwO2JvcmRlcjowO2JvcmRlci1ib3R0b206MXB4IHNvbGlkIHZhcigtLWMtbGluZSk7Ym9yZGVyLXJhZGl1czowO2JhY2tncm91bmQ6dHJhbnNwYXJlbnR9LnBheS1jaGVja3tqdXN0aWZ5LXNlbGY6Y2VudGVyO21pbi1oZWlnaHQ6MzZweDtmb250LXNpemU6MTNweH0uc3RhdGUtZHt0ZXh0LXdyYXA6cHJldHR5fS5oZXJvLXdoZXJlIC5yYXRlIHN2Z3tjb2xvcjojZmZmfS5zdHJpcC1rZXl7ZGlzcGxheTppbmxpbmUtZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjVweDttYXJnaW4taW5saW5lLXN0YXJ0OjhweDtjb2xvcjp2YXIoLS1jLXN1Y2Nlc3MtaW5rKTtmb250LXNpemU6MTFweDtmb250LXdlaWdodDo2NTA7bGV0dGVyLXNwYWNpbmc6MDt0ZXh0LXRyYW5zZm9ybTpub25lfS5zdHJpcC1rZXk6YmVmb3Jle2NvbnRlbnQ6IiI7d2lkdGg6OHB4O2hlaWdodDo4cHg7Ym9yZGVyLXJhZGl1czoycHg7YmFja2dyb3VuZDp2YXIoLS1jLXN1Y2Nlc3Mtc29mdCk7Ym94LXNoYWRvdzppbnNldCAwIDAgMCAxcHggdmFyKC0tYy1zdWNjZXNzKX1AbWVkaWEobWluLXdpZHRoOjYwMHB4KXs6cm9vdCAudC1ib2R5e2dyaWQtdGVtcGxhdGUtY29sdW1uczptaW5tYXgoMCwxZnIpIGF1dG87Z3JpZC10ZW1wbGF0ZS1hcmVhczoibmFtZSBuYW1lIiAibWV0YSBtZXRhIiAidGFncyBmb290IjthbGlnbi1pdGVtczplbmR9OnJvb3QgLnQtbmFtZXtkaXNwbGF5OmJsb2NrOy13ZWJraXQtbGluZS1jbGFtcDp1bnNldDtsaW5lLWNsYW1wOm5vbmV9OnJvb3QgLnQtdGFnczplbXB0eXtncmlkLWNvbHVtbjoxIC8gLTF9fTpyb290IC50LWZvb3R7Z3JpZC1hcmVhOmZvb3Q7anVzdGlmeS1zZWxmOmVuZH06cm9vdCAudC1zdWJ7dGV4dC1hbGlnbjplbmR9QG1lZGlhKG1heC13aWR0aDo0MjBweCl7OnJvb3QgLmZkLXByaWNle2ZvbnQtc2l6ZToxMC41cHg7bGV0dGVyLXNwYWNpbmc6LS4wM2VtfTpyb290IC5mZC1kbntmb250LXNpemU6MThweH19LnBhcnR5LXZ7d2hpdGUtc3BhY2U6bm9ybWFsfTpyb290ICNjb250ZW50Omhhcyg+Lmhlcm8pPi5hbWVue29yZGVyOi01fS5yZXZpZXctaCAuaC13aGVyZXttYXJnaW4tdG9wOjJweDtjb2xvcjp2YXIoLS1jLWluayk7Zm9udC1mYW1pbHk6dmFyKC0tZi1kaXNwbGF5KTtmb250LXNpemU6MTZweDtmb250LXdlaWdodDo2MDB9LmJhbmQtZDpsYXN0LWNoaWxke2FsaWduLWl0ZW1zOmZsZXgtc3RhcnQ7dGV4dC1hbGlnbjpzdGFydH0ucm9vbS1ob3Vyc3tjb2xvcjp2YXIoLS1jLWluay0yKX0ucm93IC5hY3Rpb257ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6OHB4fS5yb3cgLmFjdGlvbiAud2x7bWFyZ2luOjB9OnJvb3R7LS1jLWFjY2VudDogdmFyKC0tYy1pbmspfTpyb290W2RhdGEtYWNjZW50XSAuY2FyZHtib3JkZXItdG9wOjNweCBzb2xpZCB2YXIoLS1jLWFjY2VudCl9OnJvb3RbZGF0YS1hY2NlbnRdIC50aWxlcyw6cm9vdFtkYXRhLWFjY2VudF0gLnJvb21zLDpyb290W2RhdGEtYWNjZW50XSAucm93c3tib3JkZXItdG9wLWNvbG9yOnZhcigtLWMtYWNjZW50KX06cm9vdFtkYXRhLWFjY2VudF0gLmhlcm8tdHh0OmJlZm9yZXtjb250ZW50OiIiO2Rpc3BsYXk6YmxvY2s7d2lkdGg6MjhweDtoZWlnaHQ6MnB4O21hcmdpbi1ib3R0b206MnB4O2JhY2tncm91bmQ6dmFyKC0tYy1hY2NlbnQpfTpyb290W2RhdGEtYWNjZW50XSAucGF5LWZvciAud2hlcmU6YmVmb3JlLDpyb290W2RhdGEtYWNjZW50XSAucmV2aWV3LWggLmgtd2hlcmU6YmVmb3Jle2NvbnRlbnQ6IiI7ZGlzcGxheTpibG9jazt3aWR0aDoyMnB4O2hlaWdodDoycHg7bWFyZ2luLWJvdHRvbTo2cHg7YmFja2dyb3VuZDp2YXIoLS1jLWFjY2VudCl9OnJvb3RbZGF0YS1hY2NlbnRdIC5jb25mIC53aGVyZXtib3JkZXItdG9wLWNvbG9yOnZhcigtLWMtYWNjZW50KX06cm9vdFtkYXRhLWFjY2VudF0gLmZkLm9ue2JveC1zaGFkb3c6aW5zZXQgMCAtM3B4IDAgdmFyKC0tYy1hY2NlbnQpfTpyb290W2RhdGEtYWNjZW50XSAuY2QuaW4+c3Bhbiw6cm9vdFtkYXRhLWFjY2VudF0gLmNkLm91dD5zcGFue2JveC1zaGFkb3c6MCAwIDAgMnB4IHZhcigtLWMtYmcpLDAgMCAwIDMuNXB4IHZhcigtLWMtYWNjZW50KX08L3N0eWxlPgogIDwvaGVhZD4KICA8Ym9keT4KICAgIDxkaXYgY2xhc3M9ImNhcmQiPgogICAgICA8IS0tIEEgY2FsbCBvdXQgdG8gdGhlIHNlcnZlcjogYSBsaW5lIGFsb25nIHRoZSB0b3AgLSBzZWUgYHNldEJ1c3lgLiAtLT4KICAgICAgPGRpdiBjbGFzcz0iYnVzeWJhciIgYXJpYS1oaWRkZW49InRydWUiPjwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJoZWFkIj4KICAgICAgICA8IS0tIFRoZSBncm91cCdzIHdvcmRtYXJrIGFycml2ZXMgV0lUSCBUSEUgREFUQSBhcyBgbG9nb1VybGAuIE5vdGhpbmcgaXMKICAgICAgICAgICAgIGJha2VkIGluIGhlcmU6IGEgbG9nbyBjb21waWxlZCBpbnRvIHRoZSBjYXJkIGlzIHRoZSBmaXJzdCBicmFuZCdzLAogICAgICAgICAgICAgYW5kIGV2ZXJ5IGhvdGVsIGdyb3VwIGFmdGVyIHRoZW0gd291bGQgd2VhciBpdC4gVGhlIGJyYW5kIGlzIGFsc28KICAgICAgICAgICAgIHRoZSB3YXkgaG9tZSwgb24gZXZlcnkgdmlldyAocm9iaW4sIDIwMjYtMDktMTgpLiAtLT4KICAgICAgICA8YnV0dG9uIGNsYXNzPSJob21lIiBpZD0iaG9tZSIgdHlwZT0iYnV0dG9uIiBkYXRhLWFjdD0iaG9tZSIgYXJpYS1sYWJlbD0iQmFjayB0byB0aGUgaG90ZWxzIj4KICAgICAgICAgIDxpbWcgY2xhc3M9ImJyYW5kIiBpZD0iYnJhbmQiIGFsdD0iIiBoaWRkZW4+CiAgICAgICAgICA8c3BhbiBjbGFzcz0idGl0bGUiIGlkPSJ0aXRsZSI+PC9zcGFuPgogICAgICAgICAgPHNwYW4gY2xhc3M9InNrIHNrLWxvZ28iIGlkPSJza2xvZ28iIGFyaWEtaGlkZGVuPSJ0cnVlIj48L3NwYW4+CiAgICAgICAgPC9idXR0b24+CiAgICAgICAgPHNwYW4gY2xhc3M9InN1YiIgaWQ9InN1YiI+PC9zcGFuPgogICAgICAgIDwhLS0gVGhlIHRpZXIsIG9yIHRoZSB3YXkgaW4uIEEgbWVtYmVyIHJhdGUgaXMgYSBmYWN0IGFib3V0IGV2ZXJ5IHByaWNlCiAgICAgICAgICAgICBvbiB0aGUgY2FyZCwgc28gaXQgYmVsb25ncyBpbiB0aGUgaGVhZGVyIHJhdGhlciB0aGFuIG9uIG9uZSB2aWV3LiAtLT4KICAgICAgICA8YnV0dG9uIGNsYXNzPSJtZW1iZXJjaGlwIiBpZD0ibWVtYmVyY2hpcCIgdHlwZT0iYnV0dG9uIiBkYXRhLWFjdD0iYXNrLXNpZ24taW4iIGhpZGRlbj48L2J1dHRvbj4KICAgICAgICA8IS0tIFRoZSB0cmlwLCBmcm9tIHRoZSB0b3A6IGEgZm9vdGVyLW9ubHkgY2FydCBtZWFucyBzY3JvbGxpbmcgcGFzdAogICAgICAgICAgICAgdHdlbnR5IHRpbGVzIHRvIHJlYWNoIGl0ICh0aGUgc2hvcHBpbmcgY2FyZCwgMjAyNi0wOS0xNykuIC0tPgogICAgICAgIDxidXR0b24gY2xhc3M9ImhlYWR0cmlwIiBpZD0iaGVhZHRyaXAiIHR5cGU9ImJ1dHRvbiIgZGF0YS1hY3Q9InRyaXAiIGhpZGRlbiBhcmlhLWxhYmVsPSJWaWV3IHRoZSB0cmlwIj4KICAgICAgICAgIDwhLS0gQSBzdWl0Y2FzZTogYSB0cmlwIG9mIHN0YXlzLCBub3QgYSBzaG9wcGluZyBiYWcuIC0tPgogICAgICAgICAgPHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIxNSIgaGVpZ2h0PSIxNSIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiCiAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBhcmlhLWhpZGRlbj0idHJ1ZSI+CiAgICAgICAgICAgIDxyZWN0IHg9IjMuNSIgeT0iNyIgd2lkdGg9IjE3IiBoZWlnaHQ9IjEyLjUiIHJ4PSIyLjUiIC8+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik05IDdWNS41QTEuNSAxLjUgMCAwIDEgMTAuNSA0aDNBMS41IDEuNSAwIDAgMSAxNSA1LjVWN00zLjUgMTIuNWgxNyIgLz4KICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgPHNwYW4gaWQ9ImhlYWR0cmlwd29yZCI+VHJpcDwvc3Bhbj48c3BhbiBjbGFzcz0iaGVhZHRyaXAtbiIgaWQ9ImhlYWR0cmlwbiI+MDwvc3Bhbj4KICAgICAgICA8L2J1dHRvbj4KICAgICAgPC9kaXY+CiAgICAgIDwhLS0gRXZlcnkgcmF0ZSBvbiBhIGRlbW9uc3RyYXRpb24gd2FzIG1hZGUgdXA6IHNhaWQgb25jZSwgaGVyZSwgb24gZXZlcnkKICAgICAgICAgICB2aWV3IC0gc2VlIFxgcGFpbnREZW1vXGAuIC0tPgogICAgICA8ZGl2IGNsYXNzPSJkZW1vc3RyaXAiIGlkPSJkZW1vc3RyaXAiIHJvbGU9Im5vdGUiIGhpZGRlbj48YiBpZD0iZGVtb2xhYmVsIj5EZW1vPC9iPjxzcGFuIGlkPSJkZW1vdGV4dCI+PC9zcGFuPjwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJzdWJoZWFkIiBpZD0ic3ViaGVhZCIgaGlkZGVuPgogICAgICAgIDwhLS0gT25lIHN0ZXAgYmFjayBJTlNJREUgdGhlIGNhcmQgLSB0aGUgdGhyZWUgaG90ZWxzIHRoZXkgd2VyZSBjb21wYXJpbmcKICAgICAgICAgICAgIHdoZW4gdGhleSB0YXBwZWQgb25lIChyb2JpbiwgMjAyNi0wOS0yMSkuIFRoZSBicmFuZCBhYm92ZSBnb2VzIGhvbWUsCiAgICAgICAgICAgICB3aGljaCBpcyBhIGRpZmZlcmVudCBhbnN3ZXIuIC0tPgogICAgICAgIDxidXR0b24gY2xhc3M9ImJhY2tidG4iIGlkPSJiYWNrYnRuIiB0eXBlPSJidXR0b24iIGRhdGEtYWN0PSJiYWNrIiBoaWRkZW4+PC9idXR0b24+CiAgICAgICAgPCEtLSBCb29raW5nIGEgcm9vbSBpcyB0aHJlZSBzdGVwcywgYW5kIHRoZSBjYXJkIHNheXMgd2hpY2ggb25lIHRoaXMgaXMuIC0tPgogICAgICAgIDxvbCBjbGFzcz0iZmxvdyIgaWQ9ImZsb3ciIGFyaWEtbGFiZWw9IkJvb2tpbmcgc3RlcHMiIGhpZGRlbj4KICAgICAgICAgIDxsaSBkYXRhLXN0ZXA9IjEiPjxzcGFuIGNsYXNzPSJmZG90Ij4xPC9zcGFuPjxzcGFuIGNsYXNzPSJmbGFiZWwiIGlkPSJmbG93MSI+SG90ZWw8L3NwYW4+PC9saT4KICAgICAgICAgIDxsaSBkYXRhLXN0ZXA9IjIiPjxzcGFuIGNsYXNzPSJmZG90Ij4yPC9zcGFuPjxzcGFuIGNsYXNzPSJmbGFiZWwiIGlkPSJmbG93MiI+Um9vbTwvc3Bhbj48L2xpPgogICAgICAgICAgPGxpIGRhdGEtc3RlcD0iMyI+PHNwYW4gY2xhc3M9ImZkb3QiPjM8L3NwYW4+PHNwYW4gY2xhc3M9ImZsYWJlbCIgaWQ9ImZsb3czIj5Cb29rPC9zcGFuPjwvbGk+CiAgICAgICAgPC9vbD4KICAgICAgPC9kaXY+CiAgICAgIDwhLS0gQmVmb3JlIHRoZSBmaXJzdCBhbnN3ZXI6IHRoZSBzaGFwZXMgb2Ygd2hhdCBpcyBjb21pbmcsIG5vdCBhIHdvcmQuIC0tPgogICAgICA8ZGl2IGlkPSJjb250ZW50Ij4KICAgICAgICA8ZGl2IGNsYXNzPSJza2VsIiByb2xlPSJzdGF0dXMiIGFyaWEtbGFiZWw9IkxvYWRpbmciPgogICAgICAgICAgPCEtLSBUaGUgc2hhcGVzIG9mIHRoZSBsaXN0IHRoYXQgaXMgY29taW5nLCB3aGVyZSB0aGV5IHdpbGwgYmU6IGEKICAgICAgICAgICAgICAgdGl0bGUsIGl0cyBsaW5lLCB0aGUgZGF0ZXMsIHRoZSBzb3J0IGFuZCBmaWx0ZXJzLCB0aGUgdGlsZXMuIC0tPgogICAgICAgICAgPGRpdiBjbGFzcz0ic2stc2F5Ij5GaW5kaW5nIGhvdGVsc+KApjwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0ic2sgc2stbGluZSBzay1zdWIiPjwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0ic2sgc2stYmFyIj48L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9InNrLWNoaXBzIj48ZGl2IGNsYXNzPSJzayBzay1jaGlwIj48L2Rpdj48ZGl2IGNsYXNzPSJzayBzay1jaGlwIHNob3J0Ij48L2Rpdj48L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9InNrLXRpbGVzIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2stdGlsZSI+PGRpdiBjbGFzcz0ic2sgc2staW1nIj48L2Rpdj48ZGl2IGNsYXNzPSJzayBzay1saW5lIj48L2Rpdj48ZGl2IGNsYXNzPSJzayBzay1saW5lIHNob3J0Ij48L2Rpdj48L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2stdGlsZSI+PGRpdiBjbGFzcz0ic2sgc2staW1nIj48L2Rpdj48ZGl2IGNsYXNzPSJzayBzay1saW5lIj48L2Rpdj48ZGl2IGNsYXNzPSJzayBzay1saW5lIHNob3J0Ij48L2Rpdj48L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgogIDwvYm9keT4KPC9odG1sPgo=', 'base64').toString('utf8');
|
|
5
|
+
export const HOTEL_CARD_HTML = Buffer.from('PCFkb2N0eXBlIGh0bWw+CjxodG1sIGxhbmc9ImVuIj4KICA8aGVhZD4KICAgIDxtZXRhIGNoYXJzZXQ9InV0Zi04IiAvPgogICAgPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xIiAvPgogICAgPHRpdGxlPkhvdGVsczwvdGl0bGU+CiAgICA8c2NyaXB0IHR5cGU9Im1vZHVsZSIgY3Jvc3NvcmlnaW4+Y29uc3QgeGc9KGZ1bmN0aW9uKCl7Y29uc3QgdD10eXBlb2YgZG9jdW1lbnQ8InUiJiZkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJsaW5rIikucmVsTGlzdDtyZXR1cm4gdCYmdC5zdXBwb3J0cyYmdC5zdXBwb3J0cygibW9kdWxlcHJlbG9hZCIpPyJtb2R1bGVwcmVsb2FkIjoicHJlbG9hZCJ9KSgpLElnPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIG5ldyBVUkwoZSx0KS5ocmVmfSxndT17fSxBZz1mdW5jdGlvbih0LG4sbyl7bGV0IHM9UHJvbWlzZS5yZXNvbHZlKCk7aWYobiYmbi5sZW5ndGg+MCl7bGV0IGE9ZnVuY3Rpb24ocCl7cmV0dXJuIFByb21pc2UuYWxsKHAubWFwKGg9PlByb21pc2UucmVzb2x2ZShoKS50aGVuKGI9Pih7c3RhdHVzOiJmdWxmaWxsZWQiLHZhbHVlOmJ9KSxiPT4oe3N0YXR1czoicmVqZWN0ZWQiLHJlYXNvbjpifSkpKSl9O2NvbnN0IGk9ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImxpbmsiKSxkPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIm1ldGFbcHJvcGVydHk9Y3NwLW5vbmNlXSIpLHU9ZD8ubm9uY2V8fGQ/LmdldEF0dHJpYnV0ZSgibm9uY2UiKTtzPWEobi5tYXAocD0+e2lmKHA9SWcocCxvKSxwIGluIGd1KXJldHVybjtndVtwXT0hMDtjb25zdCBoPXAuZW5kc1dpdGgoIi5jc3MiKSxiPWg/J1tyZWw9InN0eWxlc2hlZXQiXSc6IiI7aWYoISFvKWZvcihsZXQgVD1pLmxlbmd0aC0xO1Q+PTA7VC0tKXtjb25zdCB4PWlbVF07aWYoeC5ocmVmPT09cCYmKCFofHx4LnJlbD09PSJzdHlsZXNoZWV0IikpcmV0dXJufWVsc2UgaWYoZG9jdW1lbnQucXVlcnlTZWxlY3RvcihgbGlua1tocmVmPSIke3B9Il0ke2J9YCkpcmV0dXJuO2NvbnN0IGs9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibGluayIpO2lmKGsucmVsPWg/InN0eWxlc2hlZXQiOnhnLGh8fChrLmFzPSJzY3JpcHQiKSxrLmNyb3NzT3JpZ2luPSIiLGsuaHJlZj1wLHUmJmsuc2V0QXR0cmlidXRlKCJub25jZSIsdSksZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChrKSxoKXJldHVybiBuZXcgUHJvbWlzZSgoVCx4KT0+e2suYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsVCksay5hZGRFdmVudExpc3RlbmVyKCJlcnJvciIsKCk9PngobmV3IEVycm9yKGBVbmFibGUgdG8gcHJlbG9hZCBDU1MgZm9yICR7cH1gKSkpfSl9KSl9ZnVuY3Rpb24gcihhKXtjb25zdCBpPW5ldyBFdmVudCgidml0ZTpwcmVsb2FkRXJyb3IiLHtjYW5jZWxhYmxlOiEwfSk7aWYoaS5wYXlsb2FkPWEsd2luZG93LmRpc3BhdGNoRXZlbnQoaSksIWkuZGVmYXVsdFByZXZlbnRlZCl0aHJvdyBhfXJldHVybiBzLnRoZW4oYT0+e2Zvcihjb25zdCBpIG9mIGF8fFtdKWkuc3RhdHVzPT09InJlamVjdGVkIiYmcihpLnJlYXNvbik7cmV0dXJuIHQoKS5jYXRjaChyKX0pfTtmdW5jdGlvbiBDZyhlKXtyZXR1cm4gZX1mdW5jdGlvbiBQZyhlKXtyZXR1cm4gZX1mdW5jdGlvbiBUcygpe3JldHVybiBlPT5lfWZ1bmN0aW9uIEVnKGUpe31mdW5jdGlvbiBPZyhlKXt0aHJvdyBuZXcgRXJyb3IoIlVuZXhwZWN0ZWQgdmFsdWUgaW4gZXhoYXVzdGl2ZSBjaGVjayIpfWZ1bmN0aW9uIFJnKGUpe31mdW5jdGlvbiBzaShlKXtjb25zdCB0PU9iamVjdC52YWx1ZXMoZSkuZmlsdGVyKG89PnR5cGVvZiBvPT0ibnVtYmVyIik7cmV0dXJuIE9iamVjdC5lbnRyaWVzKGUpLmZpbHRlcigoW28sc10pPT50LmluZGV4T2YoK28pPT09LTEpLm1hcCgoW28sc10pPT5zKX1mdW5jdGlvbiByaShlLHQ9InwiKXtyZXR1cm4gZS5tYXAobj0+T2kobikpLmpvaW4odCl9ZnVuY3Rpb24gYXMoZSx0KXtyZXR1cm4gdHlwZW9mIHQ9PSJiaWdpbnQiP3QudG9TdHJpbmcoKTp0fWNsYXNzIE5ne2NvbnN0cnVjdG9yKHQpe3RoaXMuX2dldHRlcj10LHRoaXMuX3ZhbHVlPXZvaWQgMH1nZXQgdmFsdWUoKXtjb25zdCB0PXRoaXMuX2dldHRlcjtyZXR1cm4gdCE9PXZvaWQgMCYmKHRoaXMuX3ZhbHVlPXQoKSx0aGlzLl9nZXR0ZXI9dm9pZCAwKSx0aGlzLl92YWx1ZX19ZnVuY3Rpb24gRG4oZSl7cmV0dXJuIG5ldyBOZyhlKX1mdW5jdGlvbiBQaShlKXtyZXR1cm4gZT09bnVsbH1mdW5jdGlvbiBzdChlKXtjb25zdCB0PWUuc3RhcnRzV2l0aCgiXiIpPzE6MCxuPWUuZW5kc1dpdGgoIiQiKT9lLmxlbmd0aC0xOmUubGVuZ3RoO3JldHVybiBlLnNsaWNlKHQsbil9ZnVuY3Rpb24gaGQoZSx0KXtjb25zdCBuPWUvdCxvPU1hdGgucm91bmQobikscz00Kk51bWJlci5FUFNJTE9OKk1hdGgubWF4KE1hdGguYWJzKG4pLDEpO3JldHVybiBNYXRoLmFicyhuLW8pPHM/MDpuLW99Y29uc3QgYnU9U3ltYm9sKCJldmFsdWF0aW5nIik7ZnVuY3Rpb24gbWQoZSx0LG4pe2xldCBvO09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse2dldCgpe2lmKG8hPT1idSlyZXR1cm4gbz09PXZvaWQgMCYmKG89YnUsbz1uKCkpLG99LHNldChzKXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpzfSl9LGNvbmZpZ3VyYWJsZTohMH0pfWZ1bmN0aW9uIFpnKGUpe3JldHVybiBPYmplY3QuY3JlYXRlKE9iamVjdC5nZXRQcm90b3R5cGVPZihlKSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhlKSl9ZnVuY3Rpb24gQXQoZSx0LG4pe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOm4sd3JpdGFibGU6ITAsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KX1mdW5jdGlvbiB6cyhlKXtjb25zdCB0PU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSwic2hhcGUiKTtyZXR1cm4gdD8uZ2V0P3QuZ2V0LnJhdzp0Py52YWx1ZX1mdW5jdGlvbiBWZShlKXtyZXR1cm4genMoZS5fem9kLmRlZik/P2UuX3pvZC5kZWYuc2hhcGV9ZnVuY3Rpb24gZmQoZSx0LG4pe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse2dldCgpe2NvbnN0IG89bigpO3JldHVybiBBdCh0aGlzLHQsbyksb30sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KX1mdW5jdGlvbiBnZChlLHQsbil7dCBpbiBlP0F0KGUsdCxuKTplW3RdPW59ZnVuY3Rpb24gdnQoZSx0LG4sbyl7Y29uc3Qgcz1WZSh0KTtmb3IoY29uc3QgciBvZiBuKXtjb25zdCBhPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IocyxyKTthLmVudW1lcmFibGUmJihhLmdldD9mZChlLHIsKCk9Pntjb25zdCBpPXQuX3pvZC5kZWYuc2hhcGVbcl07cmV0dXJuIG8/byhpLHIpOml9KTpnZChlLHIsbz9vKGEudmFsdWUscik6YS52YWx1ZSkpfX1mdW5jdGlvbiBNZyhlLHQpe2Zvcihjb25zdCBuIG9mIFJlZmxlY3Qub3duS2V5cyh0KSl7Y29uc3Qgbz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsbik7by5lbnVtZXJhYmxlJiYoby5nZXQ/ZmQoZSxuLCgpPT50W25dKTpnZChlLG4sby52YWx1ZSkpfX1mdW5jdGlvbiB2ZSguLi5lKXtjb25zdCB0PXt9O2Zvcihjb25zdCBuIG9mIGUpe2NvbnN0IG89T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMobik7T2JqZWN0LmFzc2lnbih0LG8pfXJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydGllcyh7fSx0KX1mdW5jdGlvbiBqZyhlKXtyZXR1cm4gdmUoZS5fem9kLmRlZil9ZnVuY3Rpb24gcWcoZSx0KXtyZXR1cm4gdD90LnJlZHVjZSgobixvKT0+bj8uW29dLGUpOmV9ZnVuY3Rpb24gTGcoZSl7Y29uc3QgdD1PYmplY3Qua2V5cyhlKSxuPXQubWFwKG89PmVbb10pO3JldHVybiBQcm9taXNlLmFsbChuKS50aGVuKG89Pntjb25zdCBzPXt9O2ZvcihsZXQgcj0wO3I8dC5sZW5ndGg7cisrKXNbdFtyXV09b1tyXTtyZXR1cm4gc30pfWZ1bmN0aW9uIERnKGU9MTApe2NvbnN0IHQ9ImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6IjtsZXQgbj0iIjtmb3IobGV0IG89MDtvPGU7bysrKW4rPXRbTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKnQubGVuZ3RoKV07cmV0dXJuIG59ZnVuY3Rpb24gYmQoZSl7cmV0dXJuIEpTT04uc3RyaW5naWZ5KGUpfWZ1bmN0aW9uIHZkKGUpe3JldHVybiBlLnRvTG93ZXJDYXNlKCkudHJpbSgpLnJlcGxhY2UoL1teXHdccy1dL2csIiIpLnJlcGxhY2UoL1tcc18tXSsvZywiLSIpLnJlcGxhY2UoL14tK3wtKyQvZywiIil9Y29uc3QgRWk9ImNhcHR1cmVTdGFja1RyYWNlImluIEVycm9yP0Vycm9yLmNhcHR1cmVTdGFja1RyYWNlOiguLi5lKT0+e307ZnVuY3Rpb24gRHQoZSl7cmV0dXJuIHR5cGVvZiBlPT0ib2JqZWN0IiYmZSE9PW51bGwmJiFBcnJheS5pc0FycmF5KGUpfWNvbnN0ICRkPURuKCgpPT57aWYod2Uuaml0bGVzc3x8dHlwZW9mIG5hdmlnYXRvcjwidSImJm5hdmlnYXRvcj8udXNlckFnZW50Py5pbmNsdWRlcygiQ2xvdWRmbGFyZSIpKXJldHVybiExO3RyeXtjb25zdCBlPUZ1bmN0aW9uO3JldHVybiBuZXcgZSgiIiksITB9Y2F0Y2h7cmV0dXJuITF9fSk7ZnVuY3Rpb24gaXQoZSl7aWYoRHQoZSk9PT0hMSlyZXR1cm4hMTtjb25zdCB0PWUuY29uc3RydWN0b3I7aWYodD09PXZvaWQgMHx8dHlwZW9mIHQhPSJmdW5jdGlvbiIpcmV0dXJuITA7Y29uc3Qgbj10LnByb3RvdHlwZTtyZXR1cm4hKER0KG4pPT09ITF8fE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChuLCJpc1Byb3RvdHlwZU9mIik9PT0hMSl9ZnVuY3Rpb24geHMoZSl7cmV0dXJuIGl0KGUpP3suLi5lfTpBcnJheS5pc0FycmF5KGUpP1suLi5lXTplIGluc3RhbmNlb2YgTWFwP25ldyBNYXAoZSk6ZSBpbnN0YW5jZW9mIFNldD9uZXcgU2V0KGUpOmV9ZnVuY3Rpb24gQmcoZSl7bGV0IHQ9MDtmb3IoY29uc3QgbiBpbiBlKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLG4pJiZ0Kys7cmV0dXJuIHR9Y29uc3QgVWc9ZT0+e2NvbnN0IHQ9dHlwZW9mIGU7c3dpdGNoKHQpe2Nhc2UidW5kZWZpbmVkIjpyZXR1cm4idW5kZWZpbmVkIjtjYXNlInN0cmluZyI6cmV0dXJuInN0cmluZyI7Y2FzZSJudW1iZXIiOnJldHVybiBOdW1iZXIuaXNOYU4oZSk/Im5hbiI6Im51bWJlciI7Y2FzZSJib29sZWFuIjpyZXR1cm4iYm9vbGVhbiI7Y2FzZSJmdW5jdGlvbiI6cmV0dXJuImZ1bmN0aW9uIjtjYXNlImJpZ2ludCI6cmV0dXJuImJpZ2ludCI7Y2FzZSJzeW1ib2wiOnJldHVybiJzeW1ib2wiO2Nhc2Uib2JqZWN0IjpyZXR1cm4gQXJyYXkuaXNBcnJheShlKT8iYXJyYXkiOmU9PT1udWxsPyJudWxsIjplLnRoZW4mJnR5cGVvZiBlLnRoZW49PSJmdW5jdGlvbiImJmUuY2F0Y2gmJnR5cGVvZiBlLmNhdGNoPT0iZnVuY3Rpb24iPyJwcm9taXNlIjp0eXBlb2YgTWFwPCJ1IiYmZSBpbnN0YW5jZW9mIE1hcD8ibWFwIjp0eXBlb2YgU2V0PCJ1IiYmZSBpbnN0YW5jZW9mIFNldD8ic2V0Ijp0eXBlb2YgRGF0ZTwidSImJmUgaW5zdGFuY2VvZiBEYXRlPyJkYXRlIjp0eXBlb2YgRmlsZTwidSImJmUgaW5zdGFuY2VvZiBGaWxlPyJmaWxlIjoib2JqZWN0IjtkZWZhdWx0OnRocm93IG5ldyBFcnJvcihgVW5rbm93biBkYXRhIHR5cGU6ICR7dH1gKX19LGNzPW5ldyBTZXQoWyJzdHJpbmciLCJudW1iZXIiLCJzeW1ib2wiXSkseWQ9bmV3IFNldChbInN0cmluZyIsIm51bWJlciIsImJpZ2ludCIsImJvb2xlYW4iLCJzeW1ib2wiLCJ1bmRlZmluZWQiXSk7ZnVuY3Rpb24gSmUoZSl7cmV0dXJuIGUucmVwbGFjZSgvWy4qKz9eJHt9KCl8W1xdXFxdL2csIlxcJCYiKX1mdW5jdGlvbiBzZShlLHQsbil7Y29uc3Qgbz1uZXcgZS5fem9kLmNvbnN0cih0Pz9lLl96b2QuZGVmKTtyZXR1cm4oIXR8fG4/LnBhcmVudCkmJihvLl96b2QucGFyZW50PWUpLG99ZnVuY3Rpb24gXyhlKXtjb25zdCB0PWU7aWYoIXQpcmV0dXJue307aWYodHlwZW9mIHQ9PSJzdHJpbmciKXJldHVybntlcnJvcjooKT0+dH07aWYodD8ubWVzc2FnZSE9PXZvaWQgMCl7aWYodD8uZXJyb3IhPT12b2lkIDApdGhyb3cgbmV3IEVycm9yKCJDYW5ub3Qgc3BlY2lmeSBib3RoIGBtZXNzYWdlYCBhbmQgYGVycm9yYCBwYXJhbXMiKTt0LmVycm9yPXQubWVzc2FnZX1yZXR1cm4gZGVsZXRlIHQubWVzc2FnZSx0eXBlb2YgdC5lcnJvcj09InN0cmluZyI/ey4uLnQsZXJyb3I6KCk9PnQuZXJyb3J9OnR9ZnVuY3Rpb24gRmcoZSl7bGV0IHQ7cmV0dXJuIG5ldyBQcm94eSh7fSx7Z2V0KG4sbyxzKXtyZXR1cm4gdD8/KHQ9ZSgpKSxSZWZsZWN0LmdldCh0LG8scyl9LHNldChuLG8scyxyKXtyZXR1cm4gdD8/KHQ9ZSgpKSxSZWZsZWN0LnNldCh0LG8scyxyKX0saGFzKG4sbyl7cmV0dXJuIHQ/Pyh0PWUoKSksUmVmbGVjdC5oYXModCxvKX0sZGVsZXRlUHJvcGVydHkobixvKXtyZXR1cm4gdD8/KHQ9ZSgpKSxSZWZsZWN0LmRlbGV0ZVByb3BlcnR5KHQsbyl9LG93bktleXMobil7cmV0dXJuIHQ/Pyh0PWUoKSksUmVmbGVjdC5vd25LZXlzKHQpfSxnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobixvKXtyZXR1cm4gdD8/KHQ9ZSgpKSxSZWZsZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LG8pfSxkZWZpbmVQcm9wZXJ0eShuLG8scyl7cmV0dXJuIHQ/Pyh0PWUoKSksUmVmbGVjdC5kZWZpbmVQcm9wZXJ0eSh0LG8scyl9fSl9ZnVuY3Rpb24gT2koZSl7cmV0dXJuIHR5cGVvZiBlPT0iYmlnaW50Ij9lLnRvU3RyaW5nKCkrIm4iOnR5cGVvZiBlPT0ic3RyaW5nIj9gIiR7ZX0iYDpgJHtlfWB9ZnVuY3Rpb24ga2QoZSl7cmV0dXJuIE9iamVjdC5rZXlzKGUpLmZpbHRlcih0PT5lW3RdLl96b2Qub3B0aW4hPT12b2lkIDAmJmVbdF0uX3pvZC5vcHRvdXQ9PT0ib3B0aW9uYWwiKX1jb25zdCBfZD17c2FmZWludDpbTnVtYmVyLk1JTl9TQUZFX0lOVEVHRVIsTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVJdLGludDMyOlstMjE0NzQ4MzY0OCwyMTQ3NDgzNjQ3XSx1aW50MzI6WzAsNDI5NDk2NzI5NV0sZmxvYXQzMjpbLTM0MDI4MjM0NjYzODUyODg2ZTIyLDM0MDI4MjM0NjYzODUyODg2ZTIyXSxmbG9hdDY0OlstTnVtYmVyLk1BWF9WQUxVRSxOdW1iZXIuTUFYX1ZBTFVFXX0sd2Q9e2ludDY0OltCaWdJbnQoIi05MjIzMzcyMDM2ODU0Nzc1ODA4IiksQmlnSW50KCI5MjIzMzcyMDM2ODU0Nzc1ODA3IildLHVpbnQ2NDpbQmlnSW50KDApLEJpZ0ludCgiMTg0NDY3NDQwNzM3MDk1NTE2MTUiKV19O2Z1bmN0aW9uIFNkKGUsdCl7Y29uc3Qgbj1lLl96b2QuZGVmLG89bi5jaGVja3M7aWYobyYmby5sZW5ndGg+MCl0aHJvdyBuZXcgRXJyb3IoIi5waWNrKCkgY2Fubm90IGJlIHVzZWQgb24gb2JqZWN0IHNjaGVtYXMgY29udGFpbmluZyByZWZpbmVtZW50cyIpO2NvbnN0IHI9e307cmV0dXJuIHZ0KHIsZSxJcyhlLHQpKSxzZShlLHZlKG4se3NoYXBlOnIsY2hlY2tzOltdfSkpfWZ1bmN0aW9uIElzKGUsdCl7Y29uc3Qgbj1WZShlKSxvPVtdO2Zvcihjb25zdCBzIG9mIFJlZmxlY3Qub3duS2V5cyh0KSl7aWYoIU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobixzKT8uZW51bWVyYWJsZSl0aHJvdyBuZXcgRXJyb3IoYFVucmVjb2duaXplZCBrZXk6ICIke1N0cmluZyhzKX0iYCk7dFtzXSYmby5wdXNoKHMpfXJldHVybiBvfWZ1bmN0aW9uIFRkKGUsdCl7Y29uc3Qgbj1lLl96b2QuZGVmLG89bi5jaGVja3M7aWYobyYmby5sZW5ndGg+MCl0aHJvdyBuZXcgRXJyb3IoIi5vbWl0KCkgY2Fubm90IGJlIHVzZWQgb24gb2JqZWN0IHNjaGVtYXMgY29udGFpbmluZyByZWZpbmVtZW50cyIpO2NvbnN0IHI9bmV3IFNldChJcyhlLHQpKSxhPXt9O3JldHVybiB2dChhLGUsUmVmbGVjdC5vd25LZXlzKFZlKGUpKS5maWx0ZXIoaT0+IXIuaGFzKGkpKSksc2UoZSx2ZShuLHtzaGFwZTphLGNoZWNrczpbXX0pKX1mdW5jdGlvbiB6ZChlLHQpe2lmKCFpdCh0KSl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgaW5wdXQgdG8gZXh0ZW5kOiBleHBlY3RlZCBhIHBsYWluIG9iamVjdCIpO2NvbnN0IG49ZS5fem9kLmRlZi5jaGVja3M7aWYobiYmbi5sZW5ndGg+MCl7Y29uc3Qgcz1WZShlKTtmb3IoY29uc3QgciBvZiBSZWZsZWN0Lm93bktleXModCkpaWYoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihzLHIpIT09dm9pZCAwKXRocm93IG5ldyBFcnJvcigiQ2Fubm90IG92ZXJ3cml0ZSBrZXlzIG9uIG9iamVjdCBzY2hlbWFzIGNvbnRhaW5pbmcgcmVmaW5lbWVudHMuIFVzZSBgLnNhZmVFeHRlbmQoKWAgaW5zdGVhZC4iKX1yZXR1cm4gc2UoZSx2ZShlLl96b2QuZGVmLHtzaGFwZTp4ZChlLHQpfSkpfWZ1bmN0aW9uIHhkKGUsdCl7Y29uc3Qgbj17fTtyZXR1cm4gdnQobixlLFJlZmxlY3Qub3duS2V5cyhWZShlKSkpLE1nKG4sdCksbn1mdW5jdGlvbiBJZChlLHQpe2lmKCFpdCh0KSl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgaW5wdXQgdG8gc2FmZUV4dGVuZDogZXhwZWN0ZWQgYSBwbGFpbiBvYmplY3QiKTtyZXR1cm4gc2UoZSx2ZShlLl96b2QuZGVmLHtzaGFwZTp4ZChlLHQpfSkpfWZ1bmN0aW9uIEFkKGUsdCl7aWYoIXQ/Ll96b2Q/LmRlZil0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgaW5wdXQgdG8gbWVyZ2U6IGV4cGVjdGVkIGFuIG9iamVjdCBzY2hlbWEuIFRvIG1lcmdlIGEgcGxhaW4gc2hhcGUsIHVzZSBgLmV4dGVuZCgpYC4iKTtpZihlLl96b2QuZGVmLmNoZWNrcz8ubGVuZ3RoKXRocm93IG5ldyBFcnJvcigiLm1lcmdlKCkgY2Fubm90IGJlIHVzZWQgb24gb2JqZWN0IHNjaGVtYXMgY29udGFpbmluZyByZWZpbmVtZW50cy4gVXNlIC5zYWZlRXh0ZW5kKCkgaW5zdGVhZC4iKTtjb25zdCBuPXt9O3Z0KG4sZSxSZWZsZWN0Lm93bktleXMoVmUoZSkpKSx2dChuLHQsUmVmbGVjdC5vd25LZXlzKFZlKHQpKSk7Y29uc3Qgbz12ZShlLl96b2QuZGVmLHtzaGFwZTpuLGdldCBjYXRjaGFsbCgpe3JldHVybiB0Ll96b2QuZGVmLmNhdGNoYWxsfSxjaGVja3M6dC5fem9kLmRlZi5jaGVja3M/P1tdfSk7cmV0dXJuIHNlKGUsbyl9ZnVuY3Rpb24gaWkoZSx0LG4sbz0icGFydGlhbCIpe2NvbnN0IHI9dC5fem9kLmRlZi5jaGVja3M7aWYociYmci5sZW5ndGg+MCl0aHJvdyBuZXcgRXJyb3IoYC4ke299KCkgY2Fubm90IGJlIHVzZWQgb24gb2JqZWN0IHNjaGVtYXMgY29udGFpbmluZyByZWZpbmVtZW50c2ApO2NvbnN0IGk9bj9uZXcgU2V0KElzKHQsbikpOnZvaWQgMCxkPXt9O3JldHVybiB2dChkLHQsUmVmbGVjdC5vd25LZXlzKFZlKHQpKSxlJiYoKHUscCk9PmkmJiFpLmhhcyhwKT91Om5ldyBlKHt0eXBlOiJvcHRpb25hbCIsaW5uZXJUeXBlOnV9KSkpLHNlKHQsdmUodC5fem9kLmRlZix7c2hhcGU6ZCxjaGVja3M6W119KSl9ZnVuY3Rpb24gQ2QoZSx0LG4pe2NvbnN0IG89bj9uZXcgU2V0KElzKHQsbikpOnZvaWQgMCxzPXt9O3JldHVybiB2dChzLHQsUmVmbGVjdC5vd25LZXlzKFZlKHQpKSwocixhKT0+byYmIW8uaGFzKGEpP3I6bmV3IGUoe3R5cGU6Im5vbm9wdGlvbmFsIixpbm5lclR5cGU6cn0pKSxzZSh0LHZlKHQuX3pvZC5kZWYse3NoYXBlOnN9KSl9ZnVuY3Rpb24gVGUoZSx0PTApe2lmKGUuYWJvcnRlZD09PSEwKXJldHVybiEwO2ZvcihsZXQgbj10O248ZS5pc3N1ZXMubGVuZ3RoO24rKylpZihlLmlzc3Vlc1tuXT8uY29udGludWUhPT0hMClyZXR1cm4hMDtyZXR1cm4hMX1mdW5jdGlvbiBQZChlLHQ9MCl7aWYoZS5hYm9ydGVkPT09ITApcmV0dXJuITA7Zm9yKGxldCBuPXQ7bjxlLmlzc3Vlcy5sZW5ndGg7bisrKWlmKGUuaXNzdWVzW25dPy5jb250aW51ZT09PSExKXJldHVybiEwO3JldHVybiExfWZ1bmN0aW9uIFJlKGUsdCl7cmV0dXJuIHQubWFwKG49Pnt2YXIgbztyZXR1cm4obz1uKS5wYXRoPz8oby5wYXRoPVtdKSxuLnBhdGgudW5zaGlmdChlKSxufSl9ZnVuY3Rpb24gT3QoZSl7cmV0dXJuIHR5cGVvZiBlPT0ic3RyaW5nIj9lOmU/Lm1lc3NhZ2V9ZnVuY3Rpb24gYWkoZSx0LG4pe3ZhciBvO2ZvcihsZXQgcz10O3M8ZS5sZW5ndGg7cysrKShvPWVbc10pLnNjaGVtYT8/KG8uc2NoZW1hPW4pfWZ1bmN0aW9uIGplKGUsdCxuKXt2YXIgbztjb25zdCBzPWUuaW5zdD8uX3pvZD8udHJhaXRzO3M/LmhhcygiJFpvZFR5cGUiKSYmKHMuaGFzKCIkWm9kQ2hlY2siKT8obz1lKS5zY2hlbWE/PyhvLnNjaGVtYT1lLmluc3QpOmUuc2NoZW1hPWUuaW5zdCk7Y29uc3Qgcj1lLnNjaGVtYSE9PWUuaW5zdD9lLnNjaGVtYT8uX3pvZC5kZWY/LmVycm9yOnZvaWQgMCxhPWUubWVzc2FnZT9lLm1lc3NhZ2U6T3QoZS5pbnN0Py5fem9kLmRlZj8uZXJyb3I/LihlKSk/P090KHI/LihlKSk/P090KHQ/LmVycm9yPy4oZSkpPz9PdChuLmN1c3RvbUVycm9yPy4oZSkpPz9PdChuLmxvY2FsZUVycm9yPy4oZSkpPz8iSW52YWxpZCBpbnB1dCIsaT17fTtmb3IoY29uc3QgZCBvZiBPYmplY3Qua2V5cyhlKSlkPT09Imluc3QifHxkPT09InNjaGVtYSJ8fGQ9PT0iY29udGludWUifHxkPT09ImlucHV0Inx8ZD09PSJfX3Byb3RvX18ifHwoaVtkXT1lW2RdKTtyZXR1cm4gaS5wYXRoPz8oaS5wYXRoPVtdKSxpLm1lc3NhZ2U9YSx0Py5yZXBvcnRJbnB1dCYmKGkuaW5wdXQ9ZS5pbnB1dCksaX1mdW5jdGlvbiBBcyhlKXtyZXR1cm4gZSBpbnN0YW5jZW9mIFNldD8ic2V0IjplIGluc3RhbmNlb2YgTWFwPyJtYXAiOmUgaW5zdGFuY2VvZiBGaWxlPyJmaWxlIjoidW5rbm93biJ9Y29uc3QgSGc9L1tcdUQ4MDAtXHVEQkZGXS87ZnVuY3Rpb24gQ3MoZSl7Y29uc3QgdD1lLmxlbmd0aDtpZighSGcudGVzdChlKSlyZXR1cm4gdDtsZXQgbj10O2ZvcihsZXQgbz0wO288dC0xO28rKykoZS5jaGFyQ29kZUF0KG8pJjY0NTEyKT09PTU1Mjk2JiYoZS5jaGFyQ29kZUF0KG8rMSkmNjQ1MTIpPT09NTYzMjAmJihuLS0sbysrKTtyZXR1cm4gbn1mdW5jdGlvbiBQcyhlKXtyZXR1cm4gQXJyYXkuaXNBcnJheShlKT8iYXJyYXkiOnR5cGVvZiBlPT0ic3RyaW5nIj8ic3RyaW5nIjoidW5rbm93biJ9ZnVuY3Rpb24gRWQoZSl7Y29uc3QgdD10eXBlb2YgZTtzd2l0Y2godCl7Y2FzZSJudW1iZXIiOnJldHVybiBOdW1iZXIuaXNOYU4oZSk/Im5hbiI6Im51bWJlciI7Y2FzZSJvYmplY3QiOntpZihlPT09bnVsbClyZXR1cm4ibnVsbCI7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4iYXJyYXkiO2NvbnN0IG49ZTtpZihuJiZPYmplY3QuZ2V0UHJvdG90eXBlT2YobikhPT1PYmplY3QucHJvdG90eXBlJiYiY29uc3RydWN0b3IiaW4gbiYmbi5jb25zdHJ1Y3RvcilyZXR1cm4gbi5jb25zdHJ1Y3Rvci5uYW1lfX1yZXR1cm4gdH1mdW5jdGlvbiBCdCguLi5lKXtjb25zdFt0LG4sb109ZTtyZXR1cm4gdHlwZW9mIHQ9PSJzdHJpbmciP3ttZXNzYWdlOnQsY29kZToiY3VzdG9tIixpbnB1dDpuLGluc3Q6b306ey4uLnR9fWZ1bmN0aW9uIFdnKGUpe3JldHVybiBPYmplY3QuZW50cmllcyhlKS5maWx0ZXIoKFt0LG5dKT0+TnVtYmVyLmlzTmFOKE51bWJlci5wYXJzZUludCh0LDEwKSkpLm1hcCh0PT50WzFdKX1mdW5jdGlvbiBPZChlKXtjb25zdCB0PWF0b2IoZSksbj1uZXcgVWludDhBcnJheSh0Lmxlbmd0aCk7Zm9yKGxldCBvPTA7bzx0Lmxlbmd0aDtvKyspbltvXT10LmNoYXJDb2RlQXQobyk7cmV0dXJuIG59ZnVuY3Rpb24gUmQoZSl7bGV0IHQ9IiI7Zm9yKGxldCBuPTA7bjxlLmxlbmd0aDtuKyspdCs9U3RyaW5nLmZyb21DaGFyQ29kZShlW25dKTtyZXR1cm4gYnRvYSh0KX1mdW5jdGlvbiBWZyhlKXtjb25zdCB0PWUucmVwbGFjZSgvLS9nLCIrIikucmVwbGFjZSgvXy9nLCIvIiksbj0iPSIucmVwZWF0KCg0LXQubGVuZ3RoJTQpJTQpO3JldHVybiBPZCh0K24pfWZ1bmN0aW9uIEpnKGUpe3JldHVybiBSZChlKS5yZXBsYWNlKC9cKy9nLCItIikucmVwbGFjZSgvXC8vZywiXyIpLnJlcGxhY2UoLz0vZywiIil9ZnVuY3Rpb24gS2coZSl7Y29uc3QgdD1lLnJlcGxhY2UoL14weC8sIiIpO2lmKHQubGVuZ3RoJTIhPT0wKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBoZXggc3RyaW5nIGxlbmd0aCIpO2NvbnN0IG49bmV3IFVpbnQ4QXJyYXkodC5sZW5ndGgvMik7Zm9yKGxldCBvPTA7bzx0Lmxlbmd0aDtvKz0yKW5bby8yXT1OdW1iZXIucGFyc2VJbnQodC5zbGljZShvLG8rMiksMTYpO3JldHVybiBufWZ1bmN0aW9uIEdnKGUpe3JldHVybiBBcnJheS5mcm9tKGUpLm1hcCh0PT50LnRvU3RyaW5nKDE2KS5wYWRTdGFydCgyLCIwIikpLmpvaW4oIiIpfWNsYXNzIFlne2NvbnN0cnVjdG9yKC4uLnQpe319ZnVuY3Rpb24gTmQoZSx0KXtmb3IoY29uc3QgbiBpbiB0KXtjb25zdCBvPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxuKTtvLmdldD9PYmplY3QuZGVmaW5lUHJvcGVydHkoZSxuLHsuLi5vLGVudW1lcmFibGU6ITF9KTpRZyhlLG4sby52YWx1ZSl9fWZ1bmN0aW9uIEtlKGUsdCxuLG89ITApe3JldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHtjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsZW51bWVyYWJsZTpvLHZhbHVlOm59KSxufWZ1bmN0aW9uIEVzKGUsdCxuKXtyZXR1cm4gS2UoZSx0LG4sITEpfWZ1bmN0aW9uIEJuKGUsdCl7Zm9yKGNvbnN0IG4gaW4gZSl7Y29uc3Qgbz1lW25dO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LG4se2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiEwLGdldCgpe3JldHVybiBLZSh0aGlzLG4sbyh0aGlzKSl9LHNldChzKXtLZSh0aGlzLG4scyl9fSl9cmV0dXJuIHR9ZnVuY3Rpb24gUWcoZSx0LG4pe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse2NvbmZpZ3VyYWJsZTohMCxnZXQoKXtyZXR1cm4gdGhpcz09bnVsbD9uOktlKHRoaXMsdCxuLmJpbmQodGhpcykpfSxzZXQobyl7S2UodGhpcyx0LG8pfX0pfWZ1bmN0aW9uIFhnKGUsdCl7Y29uc3Qgbj1PYmplY3QuZ2V0UHJvdG90eXBlT2YoZSk7cmV0dXJuIHQgaW4gbj92b2lkIDA6bn1sZXQgR3IsWGU9ITE7Y29uc3QgZWI9e2NvbmZpZ3VyYWJsZTohMCxnZXQoKXtYZT0hMH19O2Z1bmN0aW9uIEIoZSx0LG4pe2NvbnN0IG89T2JqZWN0LmdldFByb3RvdHlwZU9mKGUuX3pvZCk7aWYodCBpbiBvJiZHciE9PWUuX3pvZCl7R3I9dm9pZCAwO3JldHVybn1Hcj1lLl96b2QsT2JqZWN0LmRlZmluZVByb3BlcnR5KG8sdCx7Y29uZmlndXJhYmxlOiEwLGdldCgpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLHQsZWIpO2NvbnN0IHM9WGU7WGU9ITE7dHJ5e2NvbnN0IHI9bih0aGlzKTtyZXR1cm4gWGU/ZGVsZXRlIHRoaXNbdF06T2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsdCx7Y29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOnJ9KSxYZT1YZXx8cyxyfWNhdGNoKHIpe3Rocm93IGRlbGV0ZSB0aGlzW3RdLFhlPVhlfHxzLHJ9fSxzZXQocyl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsdCx7Y29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOnN9KX19KX1mdW5jdGlvbiBaZChlLHQsbixvKXtjb25zdCBzPVhnKGUsdCk7cyYmT2JqZWN0LmRlZmluZVByb3BlcnR5KHMsdCx7Y29uZmlndXJhYmxlOiEwLGdldCgpe2NvbnN0IHI9e2NvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCxlbnVtZXJhYmxlOm8sdmFsdWU6dm9pZCAwfTtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsdCxyKSxyLnZhbHVlPW4odGhpcyksT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsdCxyKSxyLnZhbHVlfSxzZXQocil7T2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsdCx7Y29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLGVudW1lcmFibGU6byx2YWx1ZTpyfSl9fSl9Y29uc3QgTWQ9In5jb25zdGFudENhdGNoIjtmdW5jdGlvbiBSaShlKXtjb25zdCB0PSgpPT5lO3JldHVybiB0W01kXT0hMCx0fWNvbnN0IE5pPU9iamVjdC5mcmVlemUoT2JqZWN0LmRlZmluZVByb3BlcnR5KHtfX3Byb3RvX186bnVsbCxCSUdJTlRfRk9STUFUX1JBTkdFUzp3ZCxDT05TVEFOVF9DQVRDSDpNZCxDbGFzczpZZyxOVU1CRVJfRk9STUFUX1JBTkdFUzpfZCxhYm9ydGVkOlRlLGFsbG93c0V2YWw6JGQsYXNzZXJ0OlJnLGFzc2VydEVxdWFsOkNnLGFzc2VydElzOkVnLGFzc2VydE5ldmVyOk9nLGFzc2VydE5vdEVxdWFsOlBnLGFzc2lnblByb3A6QXQsYXR0YWNoU2NoZW1hOmFpLGJhc2U2NFRvVWludDhBcnJheTpPZCxiYXNlNjR1cmxUb1VpbnQ4QXJyYXk6VmcsY2FjaGVkOkRuLGNhcHR1cmVTdGFja1RyYWNlOkVpLGNsZWFuRW51bTpXZyxjbGVhblJlZ2V4OnN0LGNsb25lOnNlLGNsb25lRGVmOmpnLGNvZGVQb2ludExlbmd0aDpDcyxjb25zdGFudENhdGNoOlJpLGNyZWF0ZVRyYW5zcGFyZW50UHJveHk6RmcsZGVmaW5lTGF6eTptZCxkZWZpbmVMYXp5SW50ZXJuYWw6QixkZXJpdmVkOkJuLGVzYzpiZCxlc2NhcGVSZWdleDpKZSxleHBsaWNpdGx5QWJvcnRlZDpQZCxleHRlbmQ6emQsZmluYWxpemVJc3N1ZTpqZSxmbG9hdFNhZmVSZW1haW5kZXI6aGQsZ2V0RWxlbWVudEF0UGF0aDpxZyxnZXRFbnVtVmFsdWVzOnNpLGdldExlbmd0aGFibGVPcmlnaW46UHMsZ2V0UGFyc2VkVHlwZTpVZyxnZXRTaXphYmxlT3JpZ2luOkFzLGhleFRvVWludDhBcnJheTpLZyxoaWRlOkVzLGluc3RhbGxMYXp5UHJvcDpaZCxpc09iamVjdDpEdCxpc1BsYWluT2JqZWN0Oml0LGlzc3VlOkJ0LGpvaW5WYWx1ZXM6cmksanNvblN0cmluZ2lmeVJlcGxhY2VyOmFzLG1lbWJlcnM6TmQsbWVyZ2U6QWQsbWVyZ2VEZWZzOnZlLG5vcm1hbGl6ZVBhcmFtczpfLG51bGxpc2g6UGksbnVtS2V5czpCZyxvYmplY3RDbG9uZTpaZyxvbWl0OlRkLG9wdGlvbmFsS2V5czprZCxvd246S2UscGFyc2VkVHlwZTpFZCxwYXJ0aWFsOmlpLHBpY2s6U2QscHJlZml4SXNzdWVzOlJlLHByaW1pdGl2ZVR5cGVzOnlkLHByb21pc2VBbGxPYmplY3Q6TGcscHJvcGVydHlLZXlUeXBlczpjcyxyYW5kb21TdHJpbmc6RGcscmF3U2hhcGU6enMscmVxdWlyZWQ6Q2Qsc2FmZUV4dGVuZDpJZCxzaGFsbG93Q2xvbmU6eHMsc2x1Z2lmeTp2ZCxzdHJpbmdpZnlQcmltaXRpdmU6T2ksdG9ab2Q6VHMsdWludDhBcnJheVRvQmFzZTY0OlJkLHVpbnQ4QXJyYXlUb0Jhc2U2NHVybDpKZyx1aW50OEFycmF5VG9IZXg6R2csdW53cmFwTWVzc2FnZTpPdH0sU3ltYm9sLnRvU3RyaW5nVGFnLHt2YWx1ZToiTW9kdWxlIn0pKTt2YXIgdnU7Y29uc3QgWmk9T2JqZWN0LmZyZWV6ZSh7c3RhdHVzOiJhYm9ydGVkIn0pLFlyPXt2YWx1ZTp2b2lkIDAsZW51bWVyYWJsZTohMX07bGV0ICR1PSJjYXB0dXJlU3RhY2tUcmFjZSJpbiBFcnJvcj9FcnJvcjpudWxsO2Z1bmN0aW9uIHRiKGUpe2NvbnN0IHQ9JHU7aWYodCl7Y29uc3Qgbj10LnN0YWNrVHJhY2VMaW1pdDtpZih0eXBlb2Ygbj09Im51bWJlciIpe3RyeXt0LnN0YWNrVHJhY2VMaW1pdD0wfWNhdGNoe3JldHVybiAkdT1udWxsLG5ldyBlfXRyeXtyZXR1cm4gbmV3IGV9ZmluYWxseXt0LnN0YWNrVHJhY2VMaW1pdD1ufX19cmV0dXJuIG5ldyBlfWZ1bmN0aW9uIG0oZSx0LG4sbyl7Y29uc3Qgcz17fTtmdW5jdGlvbiByKGIpe3RoaXMuZGVmPWIsdGhpcy5jb25zdHI9aCx0aGlzLnRyYWl0cz1uZXcgU2V0fXIucHJvdG90eXBlPXM7Y29uc3QgYT1uLGk9YSYmbmV3IFdlYWtTZXQ7ZnVuY3Rpb24gZChiLCQpe2lmKGIuX3pvZCl7aWYoYi5fem9kLnRyYWl0cy5oYXMoZSkpcmV0dXJufWVsc2V7WXIudmFsdWU9bmV3IHIoJCk7dHJ5e09iamVjdC5kZWZpbmVQcm9wZXJ0eShiLCJfem9kIixZcil9ZmluYWxseXtZci52YWx1ZT12b2lkIDB9fWlmKGIuX3pvZC50cmFpdHMuYWRkKGUpLHQoYiwkKSxpKXtjb25zdCBUPU9iamVjdC5nZXRQcm90b3R5cGVPZihiKSx4PWIuX3pvZC5jb25zdHIucHJvdG90eXBlO2xldCB6PVQ7Zm9yKDt6JiZ6IT09eDspej1PYmplY3QuZ2V0UHJvdG90eXBlT2Yoeik7Y29uc3QgST16Pz9UO2kuaGFzKEkpfHwoaS5hZGQoSSksTmQoSSxhKSl9Y29uc3Qgaz1oLnByb3RvdHlwZTtmb3IoY29uc3QgVCBpbiBrKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChrLFQpJiYoVCBpbiBifHwoYltUXT1rW1RdLmJpbmQoYikpKX1jb25zdCB1PW8/LlBhcmVudD8/T2JqZWN0O2NsYXNzIHAgZXh0ZW5kcyB1e31PYmplY3QuZGVmaW5lUHJvcGVydHkocCwibmFtZSIse3ZhbHVlOmV9KTtmdW5jdGlvbiBoKGIpe2NvbnN0ICQ9bz8uUGFyZW50P3RiKHApOnRoaXM7ZCgkLGIpO2NvbnN0IGs9JC5fem9kLmRlZmVycmVkO2lmKGspe2Zvcihjb25zdCB4IG9mIGspeCgpOyQuX3pvZC5kZWZlcnJlZD12b2lkIDB9Y29uc3QgVD1nbG9iYWxUaGlzLl9fem9kX2dsb2JhbENvbmZpZz8ucG9zdFByb2Nlc3NvcjtyZXR1cm4gVCYmVCgkKSwkfXJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoaCwiaW5pdCIse3ZhbHVlOmR9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoaCxTeW1ib2wuaGFzSW5zdGFuY2Use3ZhbHVlOmI9Pm8/LlBhcmVudCYmYiBpbnN0YW5jZW9mIG8uUGFyZW50PyEwOmI/Ll96b2Q/LnRyYWl0cz8uaGFzKGUpfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGgsIm5hbWUiLHt2YWx1ZTplfSksaH1jb25zdCBNaT1TeW1ib2woInpvZF9icmFuZCIpO2NsYXNzIHJ0IGV4dGVuZHMgRXJyb3J7Y29uc3RydWN0b3IoKXtzdXBlcigiRW5jb3VudGVyZWQgUHJvbWlzZSBkdXJpbmcgc3luY2hyb25vdXMgcGFyc2UuIFVzZSAucGFyc2VBc3luYygpIGluc3RlYWQuIil9fWNsYXNzIE9zIGV4dGVuZHMgRXJyb3J7Y29uc3RydWN0b3IodCl7c3VwZXIoYEVuY291bnRlcmVkIHVuaWRpcmVjdGlvbmFsIHRyYW5zZm9ybSBkdXJpbmcgZW5jb2RlOiAke3R9YCksdGhpcy5uYW1lPSJab2RFbmNvZGVFcnJvciJ9fSh2dT1nbG9iYWxUaGlzKS5fX3pvZF9nbG9iYWxDb25maWc/Pyh2dS5fX3pvZF9nbG9iYWxDb25maWc9e30pO2NvbnN0IHdlPWdsb2JhbFRoaXMuX196b2RfZ2xvYmFsQ29uZmlnO2Z1bmN0aW9uIGRlKGUpe3JldHVybiBlJiZPYmplY3QuYXNzaWduKHdlLGUpLHdlfWZ1bmN0aW9uIG5iKCl7Y29uc3QgZT10aGlzLl96b2Q7cmV0dXJuIGUubWVzc2FnZT8/KGUubWVzc2FnZT1KU09OLnN0cmluZ2lmeShlLmRlZixhcywyKSksZS5tZXNzYWdlfWZ1bmN0aW9uIG9iKGUpe3RoaXMuX3pvZC5tZXNzYWdlPWV9Y29uc3Qgc2I9e2dldDpuYixzZXQ6b2IsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9LFFyPXt2YWx1ZTp2b2lkIDAsZW51bWVyYWJsZTohMX0seXU9bmV3IFdlYWtTZXQoW09iamVjdC5wcm90b3R5cGUsRXJyb3IucHJvdG90eXBlXSksamQ9KGUsdCk9PntlLm5hbWU9IiRab2RFcnJvciIsUXIudmFsdWU9dCxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiaXNzdWVzIixRciksUXIudmFsdWU9dm9pZCAwLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJtZXNzYWdlIixzYik7Y29uc3Qgbj1PYmplY3QuZ2V0UHJvdG90eXBlT2YoZSk7eXUuaGFzKG4pfHwoeXUuYWRkKG4pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuLCJ0b1N0cmluZyIse2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiExLGdldCgpe2NvbnN0IG89KCk9PnRoaXMubWVzc2FnZTtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsInRvU3RyaW5nIix7dmFsdWU6byxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KSxvfSxzZXQobyl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsInRvU3RyaW5nIix7dmFsdWU6byxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KX19KSl9LHFkPW0oIiRab2RFcnJvciIsamQpLFBlPW0oIiRab2RFcnJvciIsamQsdm9pZCAwLHtQYXJlbnQ6RXJyb3J9KTtmdW5jdGlvbiByYihlLHQsbil7cmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHQpfHwodD09PSJfX3Byb3RvX18iP09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOm4oKSx3cml0YWJsZTohMCxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pOmVbdF09bigpKSxlW3RdfWZ1bmN0aW9uIFJzKGUsdD1uPT5uLm1lc3NhZ2Upe2NvbnN0IG49e30sbz1bXTtmb3IoY29uc3QgcyBvZiBlLmlzc3VlcylzLnBhdGgubGVuZ3RoPjA/cmIobixzLnBhdGhbMF0sKCk9PltdKS5wdXNoKHQocykpOm8ucHVzaCh0KHMpKTtyZXR1cm57Zm9ybUVycm9yczpvLGZpZWxkRXJyb3JzOm59fWZ1bmN0aW9uIE5zKGUsdD1uPT5uLm1lc3NhZ2Upe2NvbnN0IG49e19lcnJvcnM6W119LG89KHMscj1bXSk9Pntmb3IoY29uc3QgYSBvZiBzLmlzc3VlcylpZihhLmNvZGU9PT0iaW52YWxpZF91bmlvbiImJmEuZXJyb3JzLmxlbmd0aClhLmVycm9ycy5tYXAoaT0+byh7aXNzdWVzOml9LFsuLi5yLC4uLmEucGF0aF0pKTtlbHNlIGlmKGEuY29kZT09PSJpbnZhbGlkX2tleSIpbyh7aXNzdWVzOmEuaXNzdWVzfSxbLi4uciwuLi5hLnBhdGhdKTtlbHNlIGlmKGEuY29kZT09PSJpbnZhbGlkX2VsZW1lbnQiKW8oe2lzc3VlczphLmlzc3Vlc30sWy4uLnIsLi4uYS5wYXRoXSk7ZWxzZXtjb25zdCBpPVsuLi5yLC4uLmEucGF0aF07aWYoaS5sZW5ndGg9PT0wKW4uX2Vycm9ycy5wdXNoKHQoYSkpO2Vsc2V7bGV0IGQ9bix1PTA7Zm9yKDt1PGkubGVuZ3RoOyl7Y29uc3QgcD1pW3VdLGg9dT09PWkubGVuZ3RoLTE7aWYocD09PSJfZXJyb3JzIil7aCYmZC5fZXJyb3JzLnB1c2godChhKSksdSsrO2NvbnRpbnVlfU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChkLHApfHxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCxwLHt2YWx1ZTp7X2Vycm9yczpbXX0sZW51bWVyYWJsZTohMCx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9KTtjb25zdCBiPWRbcF07aCYmYi5fZXJyb3JzLnB1c2godChhKSksZD1iLHUrK319fX07cmV0dXJuIG8oZSksbn1mdW5jdGlvbiBqaShlLHQ9bj0+bi5tZXNzYWdlKXtjb25zdCBuPXtlcnJvcnM6W119LG89KHMscj1bXSk9Pnt2YXIgYTtmb3IoY29uc3QgaSBvZiBzLmlzc3VlcylpZihpLmNvZGU9PT0iaW52YWxpZF91bmlvbiImJmkuZXJyb3JzLmxlbmd0aClpLmVycm9ycy5tYXAoZD0+byh7aXNzdWVzOmR9LFsuLi5yLC4uLmkucGF0aF0pKTtlbHNlIGlmKGkuY29kZT09PSJpbnZhbGlkX2tleSIpbyh7aXNzdWVzOmkuaXNzdWVzfSxbLi4uciwuLi5pLnBhdGhdKTtlbHNlIGlmKGkuY29kZT09PSJpbnZhbGlkX2VsZW1lbnQiKW8oe2lzc3VlczppLmlzc3Vlc30sWy4uLnIsLi4uaS5wYXRoXSk7ZWxzZXtjb25zdCBkPVsuLi5yLC4uLmkucGF0aF07aWYoZC5sZW5ndGg9PT0wKXtuLmVycm9ycy5wdXNoKHQoaSkpO2NvbnRpbnVlfWxldCB1PW4scD0wO2Zvcig7cDxkLmxlbmd0aDspe2NvbnN0IGg9ZFtwXSxiPXA9PT1kLmxlbmd0aC0xO3R5cGVvZiBoPT0ic3RyaW5nIj8odS5wcm9wZXJ0aWVzPz8odS5wcm9wZXJ0aWVzPXt9KSxPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodS5wcm9wZXJ0aWVzLGgpfHxPYmplY3QuZGVmaW5lUHJvcGVydHkodS5wcm9wZXJ0aWVzLGgse3ZhbHVlOntlcnJvcnM6W119LGVudW1lcmFibGU6ITAsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksdT11LnByb3BlcnRpZXNbaF0pOih1Lml0ZW1zPz8odS5pdGVtcz1bXSksKGE9dS5pdGVtcylbaF0/PyhhW2hdPXtlcnJvcnM6W119KSx1PXUuaXRlbXNbaF0pLGImJnUuZXJyb3JzLnB1c2godChpKSkscCsrfX19O3JldHVybiBvKGUpLG59ZnVuY3Rpb24gTGQoZSl7Y29uc3QgdD1bXSxuPWUubWFwKG89PnR5cGVvZiBvPT0ib2JqZWN0Ij9vLmtleTpvKTtmb3IoY29uc3QgbyBvZiBuKXR5cGVvZiBvPT0ibnVtYmVyIj90LnB1c2goYFske299XWApOnR5cGVvZiBvPT0ic3ltYm9sIj90LnB1c2goYFske0pTT04uc3RyaW5naWZ5KFN0cmluZyhvKSl9XWApOi9bXlx3JF0vLnRlc3Qobyk/dC5wdXNoKGBbJHtKU09OLnN0cmluZ2lmeShvKX1dYCk6KHQubGVuZ3RoJiZ0LnB1c2goIi4iKSx0LnB1c2gobykpO3JldHVybiB0LmpvaW4oIiIpfWZ1bmN0aW9uIHFpKGUpe2NvbnN0IHQ9W10sbj1bLi4uZS5pc3N1ZXNdLnNvcnQoKG8scyk9PihvLnBhdGg/P1tdKS5sZW5ndGgtKHMucGF0aD8/W10pLmxlbmd0aCk7Zm9yKGNvbnN0IG8gb2Ygbil0LnB1c2goYOKcliAke28ubWVzc2FnZX1gKSxvLnBhdGg/Lmxlbmd0aCYmdC5wdXNoKGAgIOKGkiBhdCAke0xkKG8ucGF0aCl9YCk7cmV0dXJuIHQuam9pbihgCmApfWZ1bmN0aW9uIFpzKGUsdCl7cmV0dXJue2NhbGxlZTp0Py5jYWxsZWU/P2UsRXJyOnQ/LkVycn19Y29uc3QgVW49ZT0+e2NvbnN0IHQ9KG4sbyxzLHIpPT57Y29uc3QgYT1zP3suLi5zLGFzeW5jOiExfTp7YXN5bmM6ITF9LGk9bi5fem9kLnJ1bih7dmFsdWU6byxpc3N1ZXM6W119LGEpO2lmKGkgaW5zdGFuY2VvZiBQcm9taXNlKXRocm93IG5ldyBydDtpZihpLmlzc3Vlcy5sZW5ndGgpe2NvbnN0IGQ9bmV3KHI/LkVycj8/ZSkoaS5pc3N1ZXMubWFwKHU9PmplKHUsYSxkZSgpKSkpO3Rocm93IEVpKGQscj8uY2FsbGVlPz90KSxkfXJldHVybiBpLnZhbHVlfTtyZXR1cm4gdH0sY2k9VW4oUGUpLEZuPWU9Pntjb25zdCB0PWFzeW5jKG4sbyxzLHIpPT57Y29uc3QgYT1zP3suLi5zLGFzeW5jOiEwfTp7YXN5bmM6ITB9O2xldCBpPW4uX3pvZC5ydW4oe3ZhbHVlOm8saXNzdWVzOltdfSxhKTtpZihpIGluc3RhbmNlb2YgUHJvbWlzZSYmKGk9YXdhaXQgaSksaS5pc3N1ZXMubGVuZ3RoKXtjb25zdCBkPW5ldyhyPy5FcnI/P2UpKGkuaXNzdWVzLm1hcCh1PT5qZSh1LGEsZGUoKSkpKTt0aHJvdyBFaShkLHI/LmNhbGxlZT8/dCksZH1yZXR1cm4gaS52YWx1ZX07cmV0dXJuIHR9LGxpPUZuKFBlKSxIbj1lPT4odCxuLG8pPT57Y29uc3Qgcz1vP3suLi5vLGFzeW5jOiExfTp7YXN5bmM6ITF9LHI9dC5fem9kLnJ1bih7dmFsdWU6bixpc3N1ZXM6W119LHMpO2lmKHIgaW5zdGFuY2VvZiBQcm9taXNlKXRocm93IG5ldyBydDtyZXR1cm4gci5pc3N1ZXMubGVuZ3RoP0JkKGUsci5pc3N1ZXMscyk6e3N1Y2Nlc3M6ITAsZGF0YTpyLnZhbHVlfX0sRGQ9SG4oUGUpO2Z1bmN0aW9uIEJkKGUsdCxuKXtsZXQgbztyZXR1cm57c3VjY2VzczohMSxnZXQgZXJyb3IoKXtyZXR1cm4gb3x8KG89bmV3IGUodC5tYXAocz0+amUocyxuLGRlKCkpKSksdD12b2lkIDAsbj12b2lkIDApLG99LHNldCBlcnJvcihzKXtvPXMsdD12b2lkIDAsbj12b2lkIDB9fX1jb25zdCBXbj1lPT5hc3luYyh0LG4sbyk9Pntjb25zdCBzPW8/ey4uLm8sYXN5bmM6ITB9Onthc3luYzohMH07bGV0IHI9dC5fem9kLnJ1bih7dmFsdWU6bixpc3N1ZXM6W119LHMpO3JldHVybiByIGluc3RhbmNlb2YgUHJvbWlzZSYmKHI9YXdhaXQgciksci5pc3N1ZXMubGVuZ3RoP0JkKGUsci5pc3N1ZXMscyk6e3N1Y2Nlc3M6ITAsZGF0YTpyLnZhbHVlfX0saWI9V24oUGUpLGFiPVN5bWJvbC5mb3IoInpvZC5jb21waWxlLmludmFsaWQiKSxjYj1TeW1ib2wuZm9yKCJ6b2QuY29tcGlsZS5mYWxsYmFjayIpLE1zPSgoZSx0LG4pPT57Y29uc3Qgbz1lLl96b2QuYmFnLnZhbGlkYXRvcjtpZihvIT09dm9pZCAwKXtpZihvKHQpIT09YWIpcmV0dXJuITA7aWYoby5kZWZpbml0ZT09PSEwJiZuPT09dm9pZCAwKXJldHVybiExfXJldHVybiBsYihlLHQsbil9KTtmdW5jdGlvbiBsYihlLHQsbil7Y29uc3Qgbz1uP3suLi5uLGFzeW5jOiExLGFib3J0RWFybHk6ITB9Onthc3luYzohMSxhYm9ydEVhcmx5OiEwfSxzPWUuX3pvZC5iYWcuZmFsbGJhY2tSdW47bGV0IHI7aWYocz8ob1tjYl09ITAscj1zKHt2YWx1ZTp0LGlzc3VlczpbXX0sbykpOnI9ZS5fem9kLnJ1bih7dmFsdWU6dCxpc3N1ZXM6W119LG8pLHIgaW5zdGFuY2VvZiBQcm9taXNlKXRocm93IG5ldyBydDtyZXR1cm4gci5pc3N1ZXMubGVuZ3RoPT09MH1jb25zdCBqcz1hc3luYyhlLHQsbik9Pntjb25zdCBvPW4/ey4uLm4sYXN5bmM6ITAsYWJvcnRFYXJseTohMH06e2FzeW5jOiEwLGFib3J0RWFybHk6ITB9O2xldCBzPWUuX3pvZC5ydW4oe3ZhbHVlOnQsaXNzdWVzOltdfSxvKTtyZXR1cm4gcyBpbnN0YW5jZW9mIFByb21pc2UmJihzPWF3YWl0IHMpLHMuaXNzdWVzLmxlbmd0aD09PTB9LExpPWU9Pntjb25zdCB0PVVuKGUpLG49KG8scyxyLGEpPT57Y29uc3QgaT1yP3suLi5yLGRpcmVjdGlvbjoiYmFja3dhcmQifTp7ZGlyZWN0aW9uOiJiYWNrd2FyZCJ9O3JldHVybiB0KG8scyxpLFpzKG4sYSkpfTtyZXR1cm4gbn0sdWI9TGkoUGUpLERpPWU9Pntjb25zdCB0PVVuKGUpLG49KG8scyxyLGEpPT50KG8scyxyLFpzKG4sYSkpO3JldHVybiBufSxkYj1EaShQZSksQmk9ZT0+e2NvbnN0IHQ9Rm4oZSksbj1hc3luYyhvLHMscixhKT0+e2NvbnN0IGk9cj97Li4ucixkaXJlY3Rpb246ImJhY2t3YXJkIn06e2RpcmVjdGlvbjoiYmFja3dhcmQifTtyZXR1cm4gYXdhaXQgdChvLHMsaSxacyhuLGEpKX07cmV0dXJuIG59LHBiPUJpKFBlKSxVaT1lPT57Y29uc3QgdD1GbihlKSxuPWFzeW5jKG8scyxyLGEpPT5hd2FpdCB0KG8scyxyLFpzKG4sYSkpO3JldHVybiBufSxoYj1VaShQZSksRmk9ZT0+KHQsbixvKT0+e2NvbnN0IHM9bz97Li4ubyxkaXJlY3Rpb246ImJhY2t3YXJkIn06e2RpcmVjdGlvbjoiYmFja3dhcmQifTtyZXR1cm4gSG4oZSkodCxuLHMpfSxtYj1GaShQZSksSGk9ZT0+KHQsbixvKT0+SG4oZSkodCxuLG8pLGZiPUhpKFBlKSxXaT1lPT5hc3luYyh0LG4sbyk9Pntjb25zdCBzPW8/ey4uLm8sZGlyZWN0aW9uOiJiYWNrd2FyZCJ9OntkaXJlY3Rpb246ImJhY2t3YXJkIn07cmV0dXJuIFduKGUpKHQsbixzKX0sZ2I9V2koUGUpLFZpPWU9PmFzeW5jKHQsbixvKT0+V24oZSkodCxuLG8pLGJiPVZpKFBlKSxVZD0vXltjQ11bMC05YS16XXs2LH0kLyxGZD0vXlswLTlhLXpdKyQvLEhkPS9eWzAtN11bMC05QS1ISktNTlAtVFYtWmEtaGprbW5wLXR2LXpdezI1fSQvLFdkPS9eWzAtOWEtdkEtVl17MjB9JC8sVmQ9L15bQS1aYS16MC05XXsyN30kLyxKZD0vXlthLXpBLVowLTlfLV17MjF9JC87ZnVuY3Rpb24gS2QoZSl7cmV0dXJuIG5ldyBSZWdFeHAoYF5bYS16QS1aMC05Xy1deyR7ZX19JGApfWNvbnN0IEdkPS9eUCg/OihcZCtXKXwoPyEuKlcpKD89XGR8VFxkKShcZCtZKT8oXGQrTSk/KFxkK0QpPyhUKD89XGQpKFxkK0gpPyhcZCtNKT8oXGQrKFsuLF1cZCspP1MpPyk/KSQvLHZiPS9eWy0rXT9QKD8hJCkoPzooPzpbLStdP1xkK1kpfCg/OlstK10/XGQrWy4sXVxkK1kkKSk/KD86KD86Wy0rXT9cZCtNKXwoPzpbLStdP1xkK1suLF1cZCtNJCkpPyg/Oig/OlstK10/XGQrVyl8KD86Wy0rXT9cZCtbLixdXGQrVyQpKT8oPzooPzpbLStdP1xkK0QpfCg/OlstK10/XGQrWy4sXVxkK0QkKSk/KD86VCg/PVtcZCstXSkoPzooPzpbLStdP1xkK0gpfCg/OlstK10/XGQrWy4sXVxkK0gkKSk/KD86KD86Wy0rXT9cZCtNKXwoPzpbLStdP1xkK1suLF1cZCtNJCkpPyg/OlstK10/XGQrKD86Wy4sXVxkKyk/Uyk/KT8/JC8sWWQ9L14oWzAtOWEtZkEtRl17OH0tWzAtOWEtZkEtRl17NH0tWzAtOWEtZkEtRl17NH0tWzAtOWEtZkEtRl17NH0tWzAtOWEtZkEtRl17MTJ9KSQvLFV0PWU9PmU/bmV3IFJlZ0V4cChgXihbMC05YS1mQS1GXXs4fS1bMC05YS1mQS1GXXs0fS0ke2V9WzAtOWEtZkEtRl17M30tWzg5YWJBQl1bMC05YS1mQS1GXXszfS1bMC05YS1mQS1GXXsxMn0pJGApOi9eKFswLTlhLWZBLUZdezh9LVswLTlhLWZBLUZdezR9LVsxLThdWzAtOWEtZkEtRl17M30tWzg5YWJBQl1bMC05YS1mQS1GXXszfS1bMC05YS1mQS1GXXsxMn18MDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwfGZmZmZmZmZmLWZmZmYtZmZmZi1mZmZmLWZmZmZmZmZmZmZmZikkLywkYj1VdCg0KSx5Yj1VdCg2KSxrYj1VdCg3KSxRZD0vXig/OltBLVphLXowLTlfJytcLV0rXC4pKltBLVphLXowLTlfJytcLV0qW0EtWmEtejAtOV8rLV1AKD86W0EtWmEtejAtOV1bQS1aYS16MC05XC1dKlwuKStbQS1aYS16XXsyLH0kLyxfYj0vXlthLXpBLVowLTkuISMkJSYnKisvPT9eX2B7fH1+LV0rQFthLXpBLVowLTldKD86W2EtekEtWjAtOS1dezAsNjF9W2EtekEtWjAtOV0pPyg/OlwuW2EtekEtWjAtOV0oPzpbYS16QS1aMC05LV17MCw2MX1bYS16QS1aMC05XSk/KSokLyx3Yj0vXigoW148PigpXFtcXVxcLiw7OlxzQCJdKyhcLltePD4oKVxbXF1cXC4sOzpcc0AiXSspKil8KCIuKyIpKUAoKFxbWzAtOV17MSwzfVwuWzAtOV17MSwzfVwuWzAtOV17MSwzfVwuWzAtOV17MSwzfV0pfCgoW2EtekEtWlwtMC05XStcLikrW2EtekEtWl17Mix9KSkkLyxYZD0vXlteXHNAIl17MSw2NH1AW15cc0BdezEsMjU1fSQvdSxTYj1YZCxUYj0vXlthLXpBLVowLTkuISMkJSYnKisvPT9eX2B7fH1+LV0rQFthLXpBLVowLTldKD86W2EtekEtWjAtOS1dezAsNjF9W2EtekEtWjAtOV0pPyg/OlwuW2EtekEtWjAtOV0oPzpbYS16QS1aMC05LV17MCw2MX1bYS16QS1aMC05XSk/KSokLyx6Yj0iXig/PVtcXHNcXFNdKltcXHB7RXh0ZW5kZWRfUGljdG9ncmFwaGljfVxccHtSZWdpb25hbF9JbmRpY2F0b3J9XFx1MjBFM10pW1xccHtFeHRlbmRlZF9QaWN0b2dyYXBoaWN9XFxwe0Vtb2ppX0NvbXBvbmVudH1dKyQiO2Z1bmN0aW9uIGVwKCl7cmV0dXJuIG5ldyBSZWdFeHAoemIsInUiKX1jb25zdCB0cD0vXig/Oig/OjI1WzAtNV18MlswLTRdWzAtOV18MVswLTldWzAtOV18WzEtOV1bMC05XXxbMC05XSlcLil7M30oPzoyNVswLTVdfDJbMC00XVswLTldfDFbMC05XVswLTldfFsxLTldWzAtOV18WzAtOV0pJC8sbnA9L14oKFswLTlhLWZBLUZdezEsNH06KXs3fVswLTlhLWZBLUZdezEsNH18KFswLTlhLWZBLUZdezEsNH06KXsxLDd9OnwoWzAtOWEtZkEtRl17MSw0fTopezEsNn06WzAtOWEtZkEtRl17MSw0fXwoWzAtOWEtZkEtRl17MSw0fTopezEsNX0oOlswLTlhLWZBLUZdezEsNH0pezEsMn18KFswLTlhLWZBLUZdezEsNH06KXsxLDR9KDpbMC05YS1mQS1GXXsxLDR9KXsxLDN9fChbMC05YS1mQS1GXXsxLDR9Oil7MSwzfSg6WzAtOWEtZkEtRl17MSw0fSl7MSw0fXwoWzAtOWEtZkEtRl17MSw0fTopezEsMn0oOlswLTlhLWZBLUZdezEsNH0pezEsNX18WzAtOWEtZkEtRl17MSw0fTooKDpbMC05YS1mQS1GXXsxLDR9KXsxLDZ9KXw6KCg6WzAtOWEtZkEtRl17MSw0fSl7MSw3fXw6KSkkLyxvcD1lPT57Y29uc3QgdD1KZShlPz8iOiIpO3JldHVybiBuZXcgUmVnRXhwKGBeKD86WzAtOUEtRl17Mn0ke3R9KXs1fVswLTlBLUZdezJ9JHxeKD86WzAtOWEtZl17Mn0ke3R9KXs1fVswLTlhLWZdezJ9JGApfSxzcD0vXigoMjVbMC01XXwyWzAtNF1bMC05XXwxWzAtOV1bMC05XXxbMS05XVswLTldfFswLTldKVwuKXszfSgyNVswLTVdfDJbMC00XVswLTldfDFbMC05XVswLTldfFsxLTldWzAtOV18WzAtOV0pXC8oWzAtOV18WzEtMl1bMC05XXwzWzAtMl0pJC8scnA9L14oKFswLTlhLWZBLUZdezEsNH06KXs3fVswLTlhLWZBLUZdezEsNH18KFswLTlhLWZBLUZdezEsNH06KXsxLDd9OnwoWzAtOWEtZkEtRl17MSw0fTopezEsNn06WzAtOWEtZkEtRl17MSw0fXwoWzAtOWEtZkEtRl17MSw0fTopezEsNX0oOlswLTlhLWZBLUZdezEsNH0pezEsMn18KFswLTlhLWZBLUZdezEsNH06KXsxLDR9KDpbMC05YS1mQS1GXXsxLDR9KXsxLDN9fChbMC05YS1mQS1GXXsxLDR9Oil7MSwzfSg6WzAtOWEtZkEtRl17MSw0fSl7MSw0fXwoWzAtOWEtZkEtRl17MSw0fTopezEsMn0oOlswLTlhLWZBLUZdezEsNH0pezEsNX18WzAtOWEtZkEtRl17MSw0fTooKDpbMC05YS1mQS1GXXsxLDR9KXsxLDZ9KXw6KCg6WzAtOWEtZkEtRl17MSw0fSl7MSw3fXw6KSlcLygxMlswLThdfDFbMDFdWzAtOV18WzEtOV0/WzAtOV0pJC8seGI9L14kfF4oPzpbMC05YS16QS1aKy9dezR9KSooPzooPzpbMC05YS16QS1aKy9dezJ9PT0pfCg/OlswLTlhLXpBLVorL117M309KSk/JC8sSWI9L14oPzpbQS1aYS16MC05Xy1dezR9KSooPzpbQS1aYS16MC05Xy1dezIsM30pPyQvLGlwPS9eKD89LnsxLDI1M31cLj8kKVthLXpBLVowLTldKD86W2EtekEtWjAtOS1dezAsNjF9W2EtekEtWjAtOV0pPyg/OlwuW2EtekEtWjAtOV0oPzpbLTAtOWEtekEtWl17MCw2MX1bMC05YS16QS1aXSk/KSpcLj8kLyxhcD0vXig/PS57MSwyNTN9JCkoW2EtekEtWjAtOV0oPzpbYS16QS1aMC05LV17MCw2MX1bYS16QS1aMC05XSk/XC4pK1thLXpBLVpdezIsNjN9JC8sSmk9L15odHRwcz8kLyxjcD0vXlwrWzEtOV1cZHs2LDE0fSQvLEtpPS9eXGQoPzpbIC1dP1xkKXsxMSwxOH0kLyxscD0vXig/OkFFRHxBRk58QUxMfEFNRHxBT0F8QVJTfEFVRHxBV0d8QVpOfEJBTXxCQkR8QkRUfEJIRHxCSUZ8Qk1EfEJORHxCT0J8Qk9WfEJSTHxCU0R8QlROfEJXUHxCWU58QlpEfENBRHxDREZ8Q0hFfENIRnxDSFd8Q0xGfENMUHxDTll8Q09QfENPVXxDUkN8Q1VQfENWRXxDWkt8REpGfERLS3xET1B8RFpEfEVHUHxFUk58RVRCfEVVUnxGSkR8RktQfEdCUHxHRUx8R0hTfEdJUHxHTUR8R05GfEdUUXxHWUR8SEtEfEhOTHxIVEd8SFVGfElEUnxJTFN8SU5SfElRRHxJUlJ8SVNLfEpNRHxKT0R8SlBZfEtFU3xLR1N8S0hSfEtNRnxLUFd8S1JXfEtXRHxLWUR8S1pUfExBS3xMQlB8TEtSfExSRHxMU0x8TFlEfE1BRHxNREx8TUdBfE1LRHxNTUt8TU5UfE1PUHxNUlV8TVVSfE1WUnxNV0t8TVhOfE1YVnxNWVJ8TVpOfE5BRHxOR058TklPfE5PS3xOUFJ8TlpEfE9NUnxQQUJ8UEVOfFBHS3xQSFB8UEtSfFBMTnxQWUd8UUFSfFJPTnxSU0R8UlVCfFJXRnxTQVJ8U0JEfFNDUnxTREd8U0VLfFNHRHxTSFB8U0xFfFNPU3xTUkR8U1NQfFNUTnxTVkN8U1lQfFNaTHxUSEJ8VEpTfFRNVHxUTkR8VE9QfFRSWXxUVER8VFdEfFRaU3xVQUh8VUdYfFVTRHxVU058VVlJfFVZVXxVWVd8VVpTfFZFRHxWRVN8Vk5EfFZVVnxXU1R8WEFEfFhBRnxYQUd8WEFVfFhCQXxYQkJ8WEJDfFhCRHxYQ0R8WENHfFhEUnxYT0Z8WFBEfFhQRnxYUFR8WFNVfFhUU3xYVUF8WFhYfFlFUnxaQVJ8Wk1XfFpXRykkLyxHaT0vXltBLVpdezJ9KD8hMDB8MDF8OTkpXGR7Mn1bQS1aMC05XXsxMSwzMH0kLyx1cD0iKD86KD86XFxkXFxkWzI0NjhdWzA0OF18XFxkXFxkWzEzNTc5XVsyNl18XFxkXFxkMFs0OF18WzAyNDY4XVswNDhdMDB8WzEzNTc5XVsyNl0wMCktMDItMjl8XFxkezR9LSg/Oig/OjBbMTM1NzhdfDFbMDJdKS0oPzowWzEtOV18WzEyXVxcZHwzWzAxXSl8KD86MFs0NjldfDExKS0oPzowWzEtOV18WzEyXVxcZHwzMCl8KD86MDIpLSg/OjBbMS05XXwxXFxkfDJbMC04XSkpKSI7ZnVuY3Rpb24gQWIoZSl7cmV0dXJuIG5ldyBSZWdFeHAoYF4ke2V9JGApfWNvbnN0IGRwPUFiKHVwKTtmdW5jdGlvbiB1aShlKXtjb25zdCB0PSIoPzpbMDFdXFxkfDJbMC0zXSk6WzAtNV1cXGQiO3JldHVybiB0eXBlb2YgZS5wcmVjaXNpb249PSJudW1iZXIiP2UucHJlY2lzaW9uPT09LTE/YCR7dH1gOmUucHJlY2lzaW9uPT09MD9gJHt0fTpbMC01XVxcZGA6YCR7dH06WzAtNV1cXGRcXC5cXGR7JHtlLnByZWNpc2lvbn19YDplLnNlY29uZHM/YCR7dH06WzAtNV1cXGQoPzpcXC5cXGQrKT9gOmAke3R9KD86OlswLTVdXFxkKD86XFwuXFxkKyk/KT9gfWZ1bmN0aW9uIHBwKGUpe3JldHVybiBuZXcgUmVnRXhwKGBeJHt1aShlKX0kYCl9ZnVuY3Rpb24gaHAoZSl7Y29uc3QgdD1bIloiXTtlLm9mZnNldCYmdC5wdXNoKCIoWystXSg/OlswMV1cXGR8MlswLTNdKTpbMC01XVxcZCkiKTtjb25zdCBuPWAke3VpKHtwcmVjaXNpb246ZS5wcmVjaXNpb24sc2Vjb25kczohMH0pfSg/OiR7dC5qb2luKCJ8Iil9KWAsbz1lLmxvY2FsP2Ake259fCR7dWkoe3ByZWNpc2lvbjplLnByZWNpc2lvbn0pfWA6bjtyZXR1cm4gbmV3IFJlZ0V4cChgXiR7dXB9VCg/OiR7b30pJGApfWNvbnN0IG1wPS9eW1xzXFNdezAsfSQvLGZwPWU9Pntjb25zdCB0PWU/YFtcXHNcXFNdeyR7ZT8ubWluaW11bT8/MH0sJHtlPy5tYXhpbXVtPz8iIn19YDoiW1xcc1xcU10qIjtyZXR1cm4gbmV3IFJlZ0V4cChgXiR7dH0kYCl9LGdwPS9eLT9cZCtuPyQvLGJwPS9eLT9cZCskLyxxcz0vXi0/XGQrKD86XC5cZCspPyQvLHZwPS9eKD86dHJ1ZXxmYWxzZSkkL2ksJHA9L15udWxsJC9pLHlwPS9edW5kZWZpbmVkJC9pLGtwPS9eW15BLVpdKiQvLF9wPS9eW15hLXpdKiQvLHdwPS9eWzAtOWEtZkEtRl0qJC87ZnVuY3Rpb24gVm4oZSx0KXtyZXR1cm4gbmV3IFJlZ0V4cChgXltBLVphLXowLTkrL117JHtlfX0ke3R9JGApfWZ1bmN0aW9uIEpuKGUpe3JldHVybiBuZXcgUmVnRXhwKGBeW0EtWmEtejAtOV8tXXske2V9fSRgKX1jb25zdCBDYj0vXlswLTlhLWZBLUZdezMyfSQvLFBiPVZuKDIyLCI9PSIpLEViPUpuKDIyKSxPYj0vXlswLTlhLWZBLUZdezQwfSQvLFJiPVZuKDI3LCI9IiksTmI9Sm4oMjcpLFpiPS9eWzAtOWEtZkEtRl17NjR9JC8sTWI9Vm4oNDMsIj0iKSxqYj1Kbig0MykscWI9L15bMC05YS1mQS1GXXs5Nn0kLyxMYj1Wbig2NCwiIiksRGI9Sm4oNjQpLEJiPS9eWzAtOWEtZkEtRl17MTI4fSQvLFViPVZuKDg2LCI9PSIpLEZiPUpuKDg2KSxMcz1PYmplY3QuZnJlZXplKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7X19wcm90b19fOm51bGwsYW55U3RyaW5nOm1wLGJhc2U2NDp4YixiYXNlNjR1cmw6SWIsYmlnaW50OmdwLGJvb2xlYW46dnAsYnJvd3NlckVtYWlsOlRiLGNpZHJ2NDpzcCxjaWRydjY6cnAsY3JlZGl0Q2FyZDpLaSxjdWlkOlVkLGN1aWQyOkZkLGN1cnJlbmN5Q29kZTpscCxkYXRlOmRwLGRhdGV0aW1lOmhwLGRvbWFpbjphcCxkdXJhdGlvbjpHZCxlMTY0OmNwLGVtYWlsOlFkLGVtb2ppOmVwLGV4dGVuZGVkRHVyYXRpb246dmIsZ3VpZDpZZCxoZXg6d3AsaG9zdG5hbWU6aXAsaHRtbDVFbWFpbDpfYixodHRwUHJvdG9jb2w6SmksaWJhbjpHaSxpZG5FbWFpbDpTYixpbnRlZ2VyOmJwLGlwdjQ6dHAsaXB2NjpucCxrc3VpZDpWZCxsb3dlcmNhc2U6a3AsbWFjOm9wLG1kNV9iYXNlNjQ6UGIsbWQ1X2Jhc2U2NHVybDpFYixtZDVfaGV4OkNiLG5hbm9pZDpKZCxuYW5vaWRPZkxlbmd0aDpLZCxudWxsOiRwLG51bWJlcjpxcyxyZmM1MzIyRW1haWw6d2Isc2hhMV9iYXNlNjQ6UmIsc2hhMV9iYXNlNjR1cmw6TmIsc2hhMV9oZXg6T2Isc2hhMjU2X2Jhc2U2NDpNYixzaGEyNTZfYmFzZTY0dXJsOmpiLHNoYTI1Nl9oZXg6WmIsc2hhMzg0X2Jhc2U2NDpMYixzaGEzODRfYmFzZTY0dXJsOkRiLHNoYTM4NF9oZXg6cWIsc2hhNTEyX2Jhc2U2NDpVYixzaGE1MTJfYmFzZTY0dXJsOkZiLHNoYTUxMl9oZXg6QmIsc3RyaW5nOmZwLHRpbWU6cHAsdWxpZDpIZCx1bmRlZmluZWQ6eXAsdW5pY29kZUVtYWlsOlhkLHVwcGVyY2FzZTpfcCx1dWlkOlV0LHV1aWQ0OiRiLHV1aWQ2OnliLHV1aWQ3OmtiLHhpZDpXZH0sU3ltYm9sLnRvU3RyaW5nVGFnLHt2YWx1ZToiTW9kdWxlIn0pKSxvZT1tKCIkWm9kQ2hlY2siLChlLHQpPT57dmFyIG47ZS5fem9kPz8oZS5fem9kPXt9KSxlLl96b2QuZGVmPXQsKG49ZS5fem9kKS5vbmF0dGFjaD8/KG4ub25hdHRhY2g9W10pfSksWWk9ZT0+e2NvbnN0IHQ9ZS52YWx1ZTtyZXR1cm4hUGkodCkmJnQuc2l6ZSE9PXZvaWQgMH0sUWk9ZT0+e2NvbnN0IHQ9ZS52YWx1ZTtyZXR1cm4hUGkodCkmJnQubGVuZ3RoIT09dm9pZCAwfSxscz17bnVtYmVyOiJudW1iZXIiLGJpZ2ludDoiYmlnaW50IixvYmplY3Q6ImRhdGUifSxYaT1tKCIkWm9kQ2hlY2tMZXNzVGhhbiIsKGUsdCk9PntvZS5pbml0KGUsdCk7Y29uc3Qgbj1sc1t0eXBlb2YgdC52YWx1ZV07ZS5fem9kLmNoZWNrPW89PnsodC5pbmNsdXNpdmU/by52YWx1ZTw9dC52YWx1ZTpvLnZhbHVlPHQudmFsdWUpfHxvLmlzc3Vlcy5wdXNoKHtvcmlnaW46bHNbdHlwZW9mIG8udmFsdWVdPz9uLGNvZGU6InRvb19iaWciLG1heGltdW06dHlwZW9mIHQudmFsdWU9PSJvYmplY3QiP3QudmFsdWUuZ2V0VGltZSgpOnQudmFsdWUsaW5wdXQ6by52YWx1ZSxpbmNsdXNpdmU6dC5pbmNsdXNpdmUsaW5zdDplLGNvbnRpbnVlOiF0LmFib3J0fSl9fSksZWE9bSgiJFpvZENoZWNrR3JlYXRlclRoYW4iLChlLHQpPT57b2UuaW5pdChlLHQpO2NvbnN0IG49bHNbdHlwZW9mIHQudmFsdWVdO2UuX3pvZC5jaGVjaz1vPT57KHQuaW5jbHVzaXZlP28udmFsdWU+PXQudmFsdWU6by52YWx1ZT50LnZhbHVlKXx8by5pc3N1ZXMucHVzaCh7b3JpZ2luOmxzW3R5cGVvZiBvLnZhbHVlXT8/bixjb2RlOiJ0b29fc21hbGwiLG1pbmltdW06dHlwZW9mIHQudmFsdWU9PSJvYmplY3QiP3QudmFsdWUuZ2V0VGltZSgpOnQudmFsdWUsaW5wdXQ6by52YWx1ZSxpbmNsdXNpdmU6dC5pbmNsdXNpdmUsaW5zdDplLGNvbnRpbnVlOiF0LmFib3J0fSl9fSksU3A9bSgiJFpvZENoZWNrTXVsdGlwbGVPZiIsKGUsdCk9PntvZS5pbml0KGUsdCksZS5fem9kLmNoZWNrPW49PntpZih0eXBlb2Ygbi52YWx1ZSE9dHlwZW9mIHQudmFsdWUpdGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgbWl4IG51bWJlciBhbmQgYmlnaW50IGluIG11bHRpcGxlX29mIGNoZWNrLiIpOyh0eXBlb2Ygbi52YWx1ZT09ImJpZ2ludCI/dC52YWx1ZSE9PUJpZ0ludCgwKSYmbi52YWx1ZSV0LnZhbHVlPT09QmlnSW50KDApOmhkKG4udmFsdWUsdC52YWx1ZSk9PT0wKXx8bi5pc3N1ZXMucHVzaCh7b3JpZ2luOnR5cGVvZiBuLnZhbHVlLGNvZGU6Im5vdF9tdWx0aXBsZV9vZiIsZGl2aXNvcjp0LnZhbHVlLGlucHV0Om4udmFsdWUsaW5zdDplLGNvbnRpbnVlOiF0LmFib3J0fSl9fSksVHA9bSgiJFpvZENoZWNrTnVtYmVyRm9ybWF0IiwoZSx0KT0+e29lLmluaXQoZSx0KSx0LmZvcm1hdD10LmZvcm1hdHx8ImZsb2F0NjQiO2NvbnN0IG49dC5mb3JtYXQ/LmluY2x1ZGVzKCJpbnQiKSxvPW4/ImludCI6Im51bWJlciIsW3Mscl09X2RbdC5mb3JtYXRdO2UuX3pvZC5jaGVjaz1hPT57Y29uc3QgaT1hLnZhbHVlO2lmKG4pe2lmKCFOdW1iZXIuaXNJbnRlZ2VyKGkpKXthLmlzc3Vlcy5wdXNoKHtleHBlY3RlZDpvLGZvcm1hdDp0LmZvcm1hdCxjb2RlOiJpbnZhbGlkX3R5cGUiLGNvbnRpbnVlOiExLGlucHV0OmksaW5zdDplfSk7cmV0dXJufWlmKCFOdW1iZXIuaXNTYWZlSW50ZWdlcihpKSl7aT4wP2EuaXNzdWVzLnB1c2goe2lucHV0OmksY29kZToidG9vX2JpZyIsbWF4aW11bTpOdW1iZXIuTUFYX1NBRkVfSU5URUdFUixub3RlOiJJbnRlZ2VycyBtdXN0IGJlIHdpdGhpbiB0aGUgc2FmZSBpbnRlZ2VyIHJhbmdlLiIsaW5zdDplLG9yaWdpbjpvLGluY2x1c2l2ZTohMCxjb250aW51ZTohdC5hYm9ydH0pOmEuaXNzdWVzLnB1c2goe2lucHV0OmksY29kZToidG9vX3NtYWxsIixtaW5pbXVtOk51bWJlci5NSU5fU0FGRV9JTlRFR0VSLG5vdGU6IkludGVnZXJzIG11c3QgYmUgd2l0aGluIHRoZSBzYWZlIGludGVnZXIgcmFuZ2UuIixpbnN0OmUsb3JpZ2luOm8saW5jbHVzaXZlOiEwLGNvbnRpbnVlOiF0LmFib3J0fSk7cmV0dXJufX1pPHMmJmEuaXNzdWVzLnB1c2goe29yaWdpbjoibnVtYmVyIixpbnB1dDppLGNvZGU6InRvb19zbWFsbCIsbWluaW11bTpzLGluY2x1c2l2ZTohMCxpbnN0OmUsY29udGludWU6IXQuYWJvcnR9KSxpPnImJmEuaXNzdWVzLnB1c2goe29yaWdpbjoibnVtYmVyIixpbnB1dDppLGNvZGU6InRvb19iaWciLG1heGltdW06cixpbmNsdXNpdmU6ITAsaW5zdDplLGNvbnRpbnVlOiF0LmFib3J0fSl9fSksenA9bSgiJFpvZENoZWNrQmlnSW50Rm9ybWF0IiwoZSx0KT0+e29lLmluaXQoZSx0KTtjb25zdFtuLG9dPXdkW3QuZm9ybWF0XTtlLl96b2QuY2hlY2s9cz0+e2NvbnN0IHI9cy52YWx1ZTtyPG4mJnMuaXNzdWVzLnB1c2goe29yaWdpbjoiYmlnaW50IixpbnB1dDpyLGNvZGU6InRvb19zbWFsbCIsbWluaW11bTpuLGluY2x1c2l2ZTohMCxpbnN0OmUsY29udGludWU6IXQuYWJvcnR9KSxyPm8mJnMuaXNzdWVzLnB1c2goe29yaWdpbjoiYmlnaW50IixpbnB1dDpyLGNvZGU6InRvb19iaWciLG1heGltdW06byxpbmNsdXNpdmU6ITAsaW5zdDplLGNvbnRpbnVlOiF0LmFib3J0fSl9fSkseHA9bSgiJFpvZENoZWNrTWF4U2l6ZSIsKGUsdCk9Pnt2YXIgbjtvZS5pbml0KGUsdCksKG49ZS5fem9kLmRlZikud2hlbj8/KG4ud2hlbj1ZaSksZS5fem9kLmNoZWNrPW89Pntjb25zdCBzPW8udmFsdWU7cy5zaXplPD10Lm1heGltdW18fG8uaXNzdWVzLnB1c2goe29yaWdpbjpBcyhzKSxjb2RlOiJ0b29fYmlnIixtYXhpbXVtOnQubWF4aW11bSxpbmNsdXNpdmU6ITAsaW5wdXQ6cyxpbnN0OmUsY29udGludWU6IXQuYWJvcnR9KX19KSxJcD1tKCIkWm9kQ2hlY2tNaW5TaXplIiwoZSx0KT0+e3ZhciBuO29lLmluaXQoZSx0KSwobj1lLl96b2QuZGVmKS53aGVuPz8obi53aGVuPVlpKSxlLl96b2QuY2hlY2s9bz0+e2NvbnN0IHM9by52YWx1ZTtzLnNpemU+PXQubWluaW11bXx8by5pc3N1ZXMucHVzaCh7b3JpZ2luOkFzKHMpLGNvZGU6InRvb19zbWFsbCIsbWluaW11bTp0Lm1pbmltdW0saW5jbHVzaXZlOiEwLGlucHV0OnMsaW5zdDplLGNvbnRpbnVlOiF0LmFib3J0fSl9fSksQXA9bSgiJFpvZENoZWNrU2l6ZUVxdWFscyIsKGUsdCk9Pnt2YXIgbjtvZS5pbml0KGUsdCksKG49ZS5fem9kLmRlZikud2hlbj8/KG4ud2hlbj1ZaSksZS5fem9kLmNoZWNrPW89Pntjb25zdCBzPW8udmFsdWUscj1zLnNpemU7aWYocj09PXQuc2l6ZSlyZXR1cm47Y29uc3QgYT1yPnQuc2l6ZTtvLmlzc3Vlcy5wdXNoKHtvcmlnaW46QXMocyksLi4uYT97Y29kZToidG9vX2JpZyIsbWF4aW11bTp0LnNpemV9Ontjb2RlOiJ0b29fc21hbGwiLG1pbmltdW06dC5zaXplfSxpbmNsdXNpdmU6ITAsZXhhY3Q6ITAsaW5wdXQ6by52YWx1ZSxpbnN0OmUsY29udGludWU6IXQuYWJvcnR9KX19KSxDcD1tKCIkWm9kQ2hlY2tNYXhMZW5ndGgiLChlLHQpPT57dmFyIG47b2UuaW5pdChlLHQpLChuPWUuX3pvZC5kZWYpLndoZW4/PyhuLndoZW49UWkpLGUuX3pvZC5jaGVjaz1vPT57Y29uc3Qgcz1vLnZhbHVlLHI9cy5sZW5ndGg7aWYoKHR5cGVvZiBzPT0ic3RyaW5nIiYmcj50Lm1heGltdW0/Q3Mocyk6cik8PXQubWF4aW11bSlyZXR1cm47Y29uc3QgaT1QcyhzKTtvLmlzc3Vlcy5wdXNoKHtvcmlnaW46aSxjb2RlOiJ0b29fYmlnIixtYXhpbXVtOnQubWF4aW11bSxpbmNsdXNpdmU6ITAsaW5wdXQ6cyxpbnN0OmUsY29udGludWU6IXQuYWJvcnR9KX19KSxQcD1tKCIkWm9kQ2hlY2tNaW5MZW5ndGgiLChlLHQpPT57dmFyIG47b2UuaW5pdChlLHQpLChuPWUuX3pvZC5kZWYpLndoZW4/PyhuLndoZW49UWkpLGUuX3pvZC5jaGVjaz1vPT57Y29uc3Qgcz1vLnZhbHVlLHI9cy5sZW5ndGg7aWYoKHR5cGVvZiBzPT0ic3RyaW5nIiYmcj49dC5taW5pbXVtJiZyPHQubWluaW11bSoyP0NzKHMpOnIpPj10Lm1pbmltdW0pcmV0dXJuO2NvbnN0IGk9UHMocyk7by5pc3N1ZXMucHVzaCh7b3JpZ2luOmksY29kZToidG9vX3NtYWxsIixtaW5pbXVtOnQubWluaW11bSxpbmNsdXNpdmU6ITAsaW5wdXQ6cyxpbnN0OmUsY29udGludWU6IXQuYWJvcnR9KX19KSxFcD1tKCIkWm9kQ2hlY2tMZW5ndGhFcXVhbHMiLChlLHQpPT57dmFyIG47b2UuaW5pdChlLHQpLChuPWUuX3pvZC5kZWYpLndoZW4/PyhuLndoZW49UWkpLGUuX3pvZC5jaGVjaz1vPT57Y29uc3Qgcz1vLnZhbHVlLHI9cy5sZW5ndGgsYT10eXBlb2Ygcz09InN0cmluZyImJnI+PXQubGVuZ3RoJiZyPD10Lmxlbmd0aCoyP0NzKHMpOnI7aWYoYT09PXQubGVuZ3RoKXJldHVybjtjb25zdCBpPVBzKHMpLGQ9YT50Lmxlbmd0aDtvLmlzc3Vlcy5wdXNoKHtvcmlnaW46aSwuLi5kP3tjb2RlOiJ0b29fYmlnIixtYXhpbXVtOnQubGVuZ3RofTp7Y29kZToidG9vX3NtYWxsIixtaW5pbXVtOnQubGVuZ3RofSxpbmNsdXNpdmU6ITAsZXhhY3Q6ITAsaW5wdXQ6by52YWx1ZSxpbnN0OmUsY29udGludWU6IXQuYWJvcnR9KX19KSxLbj1tKCIkWm9kQ2hlY2tTdHJpbmdGb3JtYXQiLChlLHQpPT57dmFyIG4sbztvZS5pbml0KGUsdCksdC5wYXR0ZXJuPyhuPWUuX3pvZCkuY2hlY2s/PyhuLmNoZWNrPXM9Pnt0LnBhdHRlcm4ubGFzdEluZGV4PTAsIXQucGF0dGVybi50ZXN0KHMudmFsdWUpJiZzLmlzc3Vlcy5wdXNoKHtvcmlnaW46InN0cmluZyIsY29kZToiaW52YWxpZF9mb3JtYXQiLGZvcm1hdDp0LmZvcm1hdCxpbnB1dDpzLnZhbHVlLC4uLnQucGF0dGVybj97cGF0dGVybjp0LnBhdHRlcm4udG9TdHJpbmcoKX06e30saW5zdDplLGNvbnRpbnVlOiF0LmFib3J0fSl9KToobz1lLl96b2QpLmNoZWNrPz8oby5jaGVjaz0oKT0+e30pfSksT3A9bSgiJFpvZENoZWNrUmVnZXgiLChlLHQpPT57S24uaW5pdChlLHQpLGUuX3pvZC5jaGVjaz1uPT57dC5wYXR0ZXJuLmxhc3RJbmRleD0wLCF0LnBhdHRlcm4udGVzdChuLnZhbHVlKSYmbi5pc3N1ZXMucHVzaCh7b3JpZ2luOiJzdHJpbmciLGNvZGU6ImludmFsaWRfZm9ybWF0Iixmb3JtYXQ6InJlZ2V4IixpbnB1dDpuLnZhbHVlLHBhdHRlcm46dC5wYXR0ZXJuLnRvU3RyaW5nKCksaW5zdDplLGNvbnRpbnVlOiF0LmFib3J0fSl9fSksUnA9bSgiJFpvZENoZWNrTG93ZXJDYXNlIiwoZSx0KT0+e3QucGF0dGVybj8/KHQucGF0dGVybj1rcCksS24uaW5pdChlLHQpfSksTnA9bSgiJFpvZENoZWNrVXBwZXJDYXNlIiwoZSx0KT0+e3QucGF0dGVybj8/KHQucGF0dGVybj1fcCksS24uaW5pdChlLHQpfSksWnA9bSgiJFpvZENoZWNrSW5jbHVkZXMiLChlLHQpPT57b2UuaW5pdChlLHQpO2NvbnN0IG49SmUodC5pbmNsdWRlcyksbz1uZXcgUmVnRXhwKHR5cGVvZiB0LnBvc2l0aW9uPT0ibnVtYmVyIj9gXi57JHt0LnBvc2l0aW9ufSx9JHtufWA6bik7dC5wYXR0ZXJuPW8sZS5fem9kLmNoZWNrPXM9PntzLnZhbHVlLmluY2x1ZGVzKHQuaW5jbHVkZXMsdC5wb3NpdGlvbil8fHMuaXNzdWVzLnB1c2goe29yaWdpbjoic3RyaW5nIixjb2RlOiJpbnZhbGlkX2Zvcm1hdCIsZm9ybWF0OiJpbmNsdWRlcyIsaW5jbHVkZXM6dC5pbmNsdWRlcyxpbnB1dDpzLnZhbHVlLGluc3Q6ZSxjb250aW51ZTohdC5hYm9ydH0pfX0pLE1wPW0oIiRab2RDaGVja1N0YXJ0c1dpdGgiLChlLHQpPT57b2UuaW5pdChlLHQpO2NvbnN0IG49bmV3IFJlZ0V4cChgXiR7SmUodC5wcmVmaXgpfS4qYCk7dC5wYXR0ZXJuPz8odC5wYXR0ZXJuPW4pLGUuX3pvZC5jaGVjaz1vPT57by52YWx1ZS5zdGFydHNXaXRoKHQucHJlZml4KXx8by5pc3N1ZXMucHVzaCh7b3JpZ2luOiJzdHJpbmciLGNvZGU6ImludmFsaWRfZm9ybWF0Iixmb3JtYXQ6InN0YXJ0c193aXRoIixwcmVmaXg6dC5wcmVmaXgsaW5wdXQ6by52YWx1ZSxpbnN0OmUsY29udGludWU6IXQuYWJvcnR9KX19KSxqcD1tKCIkWm9kQ2hlY2tFbmRzV2l0aCIsKGUsdCk9PntvZS5pbml0KGUsdCk7Y29uc3Qgbj1uZXcgUmVnRXhwKGAuKiR7SmUodC5zdWZmaXgpfSRgKTt0LnBhdHRlcm4/Pyh0LnBhdHRlcm49biksZS5fem9kLmNoZWNrPW89PntvLnZhbHVlLmVuZHNXaXRoKHQuc3VmZml4KXx8by5pc3N1ZXMucHVzaCh7b3JpZ2luOiJzdHJpbmciLGNvZGU6ImludmFsaWRfZm9ybWF0Iixmb3JtYXQ6ImVuZHNfd2l0aCIsc3VmZml4OnQuc3VmZml4LGlucHV0Om8udmFsdWUsaW5zdDplLGNvbnRpbnVlOiF0LmFib3J0fSl9fSk7ZnVuY3Rpb24gdXMoZSx0LG4pe2UuaXNzdWVzLmxlbmd0aCYmdC5pc3N1ZXMucHVzaCguLi5SZShuLGUuaXNzdWVzKSl9Y29uc3QgcXA9bSgiJFpvZENoZWNrUHJvcGVydHkiLChlLHQpPT57b2UuaW5pdChlLHQpLGUuX3pvZC5jaGVjaz1uPT57Y29uc3Qgbz10LnNjaGVtYS5fem9kLnJ1bih7dmFsdWU6bi52YWx1ZVt0LnByb3BlcnR5XSxpc3N1ZXM6W119LHt9KTtpZihvIGluc3RhbmNlb2YgUHJvbWlzZSlyZXR1cm4gby50aGVuKHM9PnVzKHMsbix0LnByb3BlcnR5KSk7dXMobyxuLHQucHJvcGVydHkpfX0pLExwPW0oIiRab2RDaGVja1Byb3BlcnRpZXMiLChlLHQpPT57b2UuaW5pdChlLHQpLEVzKGUsU3ltYm9sLml0ZXJhdG9yLGZ1bmN0aW9uKigpe3lpZWxkIGV9KTtsZXQgbjtlLl96b2QuY2hlY2s9bz0+e2lmKG8udmFsdWU9PW51bGwpe28uaXNzdWVzLnB1c2goe2V4cGVjdGVkOiJvYmplY3QiLGNvZGU6ImludmFsaWRfdHlwZSIsaW5wdXQ6by52YWx1ZSxpbnN0OmV9KTtyZXR1cm59bj8/KG49UmVmbGVjdC5vd25LZXlzKHQuc2hhcGUpLm1hcChhPT5bYSx0LnNoYXBlW2FdXSkpO2NvbnN0IHM9by52YWx1ZTtsZXQgcjtmb3IoY29uc3RbYSxpXW9mIG4pe2NvbnN0IGQ9aS5fem9kLnJ1bih7dmFsdWU6c1thXSxpc3N1ZXM6W119LHt9KTtkIGluc3RhbmNlb2YgUHJvbWlzZT8ocj8/KHI9W10pLHIucHVzaChkLnRoZW4odT0+dXModSxvLGEpKSkpOnVzKGQsbyxhKX1pZihyKXJldHVybiBQcm9taXNlLmFsbChyKS50aGVuKCgpPT57fSl9fSksRHA9bSgiJFpvZENoZWNrTWltZVR5cGUiLChlLHQpPT57b2UuaW5pdChlLHQpO2NvbnN0IG49bmV3IFNldCh0Lm1pbWUpO2UuX3pvZC5jaGVjaz1vPT57bi5oYXMoby52YWx1ZS50eXBlKXx8by5pc3N1ZXMucHVzaCh7Y29kZToiaW52YWxpZF92YWx1ZSIsdmFsdWVzOnQubWltZSxpbnB1dDpvLnZhbHVlLnR5cGUsaW5zdDplLGNvbnRpbnVlOiF0LmFib3J0fSl9fSksQnA9bSgiJFpvZENoZWNrT3ZlcndyaXRlIiwoZSx0KT0+e29lLmluaXQoZSx0KSxlLl96b2QuY2hlY2s9bj0+e24udmFsdWU9dC50eChuLnZhbHVlKX19KTtjbGFzcyBVcHtjb25zdHJ1Y3Rvcih0PVtdLG49e30pe3RoaXMuY29udGVudD1bXSx0aGlzLmluZGVudD0wLHRoaXMuYXJncz10LHRoaXMuY2xvc2VkPW59aW5kZW50ZWQodCl7dGhpcy5pbmRlbnQrPTE7dHJ5e3QodGhpcyl9ZmluYWxseXt0aGlzLmluZGVudC09MX19d3JpdGUodCl7aWYodHlwZW9mIHQ9PSJmdW5jdGlvbiIpe3QodGhpcyx7ZXhlY3V0aW9uOiJzeW5jIn0pLHQodGhpcyx7ZXhlY3V0aW9uOiJhc3luYyJ9KTtyZXR1cm59Y29uc3Qgbz10LnNwbGl0KGAKYCkuZmlsdGVyKGE9PmEpLHM9TWF0aC5taW4oLi4uby5tYXAoYT0+YS5sZW5ndGgtYS50cmltU3RhcnQoKS5sZW5ndGgpKSxyPW8ubWFwKGE9PmEuc2xpY2UocykpLm1hcChhPT4iICIucmVwZWF0KHRoaXMuaW5kZW50KjIpK2EpO2Zvcihjb25zdCBhIG9mIHIpdGhpcy5jb250ZW50LnB1c2goYSl9Y29tcGlsZSgpe2NvbnN0IHQ9RnVuY3Rpb24sbj10aGlzPy5jb250ZW50Pz9bIiJdO3JldHVybiBuZXcgdCguLi5PYmplY3Qua2V5cyh0aGlzLmNsb3NlZCksYHJldHVybiBmdW5jdGlvbiAoJHt0aGlzLmFyZ3Muam9pbigiLCAiKX0pIHsKJHtuLmpvaW4oYApgKX0KfTtgKSguLi5PYmplY3QudmFsdWVzKHRoaXMuY2xvc2VkKSl9fWNvbnN0IEZwPXttYWpvcjo0LG1pbm9yOjYscGF0Y2g6NX0sTj1tKCIkWm9kVHlwZSIsKGUsdCk9Pnt2YXIgbjtlPz8oZT17fSksZS5fem9kLmRlZj10LGUuX3pvZC5iYWc9ZS5fem9kLmJhZ3x8e30sZS5fem9kLnZlcnNpb249RnA7Y29uc3Qgbz1lLl96b2QuZGVmLmNoZWNrcyxzPWUuX3pvZC50cmFpdHMuaGFzKCIkWm9kQ2hlY2siKT9bZSwuLi5vPz9bXV06bz8ubGVuZ3RoP1suLi5vXTpbXTtmb3IoY29uc3QgciBvZiBzKWZvcihjb25zdCBhIG9mIHIuX3pvZC5vbmF0dGFjaClhKGUpO2lmKHMubGVuZ3RoPT09MCkobj1lLl96b2QpLmRlZmVycmVkPz8obi5kZWZlcnJlZD1bXSksZS5fem9kLmRlZmVycmVkPy5wdXNoKCgpPT57ZS5fem9kLnJ1bj1lLl96b2QucGFyc2V9KTtlbHNle2NvbnN0IHI9KGksZCx1KT0+e2lmKGkubWVtbylyZXR1cm4gaTtsZXQgcD1UZShpKSxoO2Zvcihjb25zdCBiIG9mIGQpe2lmKGIuX3pvZC5kZWYud2hlbil7aWYoUGQoaSl8fCFiLl96b2QuZGVmLndoZW4oaSkpY29udGludWV9ZWxzZSBpZihwKWNvbnRpbnVlO2NvbnN0ICQ9aS5pc3N1ZXMubGVuZ3RoLGs9Yi5fem9kLmNoZWNrKGkpO2lmKGsgaW5zdGFuY2VvZiBQcm9taXNlJiZ1Py5hc3luYz09PSExKXRocm93IG5ldyBydDtpZihofHxrIGluc3RhbmNlb2YgUHJvbWlzZSloPShoPz9Qcm9taXNlLnJlc29sdmUoKSkudGhlbihhc3luYygpPT57YXdhaXQgayxpLmlzc3Vlcy5sZW5ndGghPT0kJiYoYWkoaS5pc3N1ZXMsJCxlKSxwfHwocD1UZShpLCQpKSl9KTtlbHNle2lmKGkuaXNzdWVzLmxlbmd0aD09PSQpY29udGludWU7YWkoaS5pc3N1ZXMsJCxlKSxwfHwocD1UZShpLCQpKX19cmV0dXJuIGg/aC50aGVuKCgpPT5pKTppfSxhPShpLGQsdSk9PntpZihUZShpKSlyZXR1cm4gaS5hYm9ydGVkPSEwLGk7Y29uc3QgcD1yKGQscyx1KTtpZihwIGluc3RhbmNlb2YgUHJvbWlzZSl7aWYodS5hc3luYz09PSExKXRocm93IG5ldyBydDtyZXR1cm4gcC50aGVuKGg9PmUuX3pvZC5wYXJzZShoLHUpKX1yZXR1cm4gZS5fem9kLnBhcnNlKHAsdSl9O2UuX3pvZC5ydW49KGksZCk9PntpZihkLnNraXBDaGVja3MpcmV0dXJuIGUuX3pvZC5wYXJzZShpLGQpO2lmKGQuZGlyZWN0aW9uPT09ImJhY2t3YXJkIil7Y29uc3QgcD1lLl96b2QucGFyc2Uoe3ZhbHVlOmkudmFsdWUsaXNzdWVzOltdfSx7Li4uZCxza2lwQ2hlY2tzOiEwfSk7cmV0dXJuIHAgaW5zdGFuY2VvZiBQcm9taXNlP3AudGhlbihoPT5hKGgsaSxkKSk6YShwLGksZCl9Y29uc3QgdT1lLl96b2QucGFyc2UoaSxkKTtpZih1IGluc3RhbmNlb2YgUHJvbWlzZSl7aWYoZC5hc3luYz09PSExKXRocm93IG5ldyBydDtyZXR1cm4gdS50aGVuKHA9PnIocCxzLGQpKX1yZXR1cm4gcih1LHMsZCl9fX0se2dldCJ+c3RhbmRhcmQiKCl7cmV0dXJuIEVzKHRoaXMsIn5zdGFuZGFyZCIsdGEodGhpcykpfSxzZXQifnN0YW5kYXJkIihlKXtLZSh0aGlzLCJ+c3RhbmRhcmQiLGUpfX0pLEhwPShlLHQpPT5lLmlzc3Vlcy5sZW5ndGg/e2lzc3VlczplLmlzc3Vlcy5tYXAobj0+amUobix0LGRlKCkpKX06e3ZhbHVlOmUudmFsdWV9O2FzeW5jIGZ1bmN0aW9uIEhiKGUsdCl7Y29uc3Qgbj17YXN5bmM6ITB9O3JldHVybiBIcChhd2FpdCBlLl96b2QucnVuKHt2YWx1ZTp0LGlzc3VlczpbXX0sbiksbil9ZnVuY3Rpb24gdGEoZSl7cmV0dXJue3ZhbGlkYXRlOnQ9Pntjb25zdCBuPXthc3luYzohMX07dHJ5e2NvbnN0IG89ZS5fem9kLnJ1bih7dmFsdWU6dCxpc3N1ZXM6W119LG4pO2lmKCEobyBpbnN0YW5jZW9mIFByb21pc2UpKXJldHVybiBIcChvLG4pfWNhdGNoe31yZXR1cm4gSGIoZSx0KX0sdmVuZG9yOiJ6b2QiLHZlcnNpb246MX19Y29uc3QgR249bSgiJFpvZFN0cmluZyIsKGUsdCk9PntOLmluaXQoZSx0KSxlLl96b2QucGF0dGVybj10LnBhdHRlcm4/P21wLGUuX3pvZC5wYXJzZT0obixvKT0+e2lmKHQuY29lcmNlKXRyeXtuLnZhbHVlPVN0cmluZyhuLnZhbHVlKX1jYXRjaHt9cmV0dXJuIHR5cGVvZiBuLnZhbHVlPT0ic3RyaW5nInx8bi5pc3N1ZXMucHVzaCh7ZXhwZWN0ZWQ6InN0cmluZyIsY29kZToiaW52YWxpZF90eXBlIixpbnB1dDpuLnZhbHVlLGluc3Q6ZX0pLG59fSksZWU9bSgiJFpvZFN0cmluZ0Zvcm1hdCIsKGUsdCk9PntLbi5pbml0KGUsdCksR24uaW5pdChlLHQpfSksV3A9bSgiJFpvZEdVSUQiLChlLHQpPT57dC5wYXR0ZXJuPz8odC5wYXR0ZXJuPVlkKSxlZS5pbml0KGUsdCl9KSxWcD1tKCIkWm9kVVVJRCIsKGUsdCk9PntpZih0LnZlcnNpb24pe2NvbnN0IG89e3YxOjEsdjI6Mix2MzozLHY0OjQsdjU6NSx2Njo2LHY3Ojcsdjg6OH1bdC52ZXJzaW9uXTtpZihvPT09dm9pZCAwKXRocm93IG5ldyBFcnJvcihgSW52YWxpZCBVVUlEIHZlcnNpb246ICIke3QudmVyc2lvbn0iYCk7dC5wYXR0ZXJuPz8odC5wYXR0ZXJuPVV0KG8pKX1lbHNlIHQucGF0dGVybj8/KHQucGF0dGVybj1VdCgpKTtlZS5pbml0KGUsdCl9KSxKcD1tKCIkWm9kRW1haWwiLChlLHQpPT57dC5wYXR0ZXJuPz8odC5wYXR0ZXJuPVFkKSxlZS5pbml0KGUsdCl9KSxuYT0xLFJuPTI7ZnVuY3Rpb24gb2EoZSl7dHJ5e3JldHVybiB0eXBlb2YgVVJMPCJ1IiYmdHlwZW9mIFVSTC5jYW5QYXJzZT09ImZ1bmN0aW9uIj9VUkwuY2FuUGFyc2UoZSk6KG5ldyBVUkwoZSksITApfWNhdGNoe3JldHVybiExfX1mdW5jdGlvbiBLcChlLHQpe3JldHVybiEoIm5vcm1hbGl6ZSJpbiB0KSYmISgiaG9zdG5hbWUiaW4gdCkmJiEoInByb3RvY29sImluIHQpP29hKGUpfHxSbjpHcChlLHQpfWZ1bmN0aW9uIEdwKGUsdCl7aWYoIXQubm9ybWFsaXplJiZ0LnByb3RvY29sPy5zb3VyY2U9PT1KaS5zb3VyY2UmJiEvXmh0dHBzPzpcL1wvL2kudGVzdChlKSlyZXR1cm4gbmE7dHJ5e2lmKHR5cGVvZiBVUkw8InUiKXtjb25zdCBuPVVSTDtpZih0eXBlb2Ygbi5wYXJzZT09ImZ1bmN0aW9uIilyZXR1cm4gbi5wYXJzZShlKT8/Um59cmV0dXJuIG5ldyBVUkwoZSl9Y2F0Y2h7cmV0dXJuIFJufX1jb25zdCBXYj0vW1x0XG5ccl0vZztmdW5jdGlvbiBkaShlKXtyZXR1cm4gZS5yZXBsYWNlKFdiLCIiKX1mdW5jdGlvbiBZcChlLHQpe3JldHVybiB0Lmxhc3RJbmRleD0wLHQudGVzdChlLmhvc3RuYW1lKX1mdW5jdGlvbiBRcChlLHQpe3JldHVybiB0Lmxhc3RJbmRleD0wLHQudGVzdChlLnByb3RvY29sLmVuZHNXaXRoKCI6Iik/ZS5wcm90b2NvbC5zbGljZSgwLC0xKTplLnByb3RvY29sKX1jb25zdCBYcD1tKCIkWm9kVVJMIiwoZSx0KT0+e2VlLmluaXQoZSx0KSxlLl96b2QuY2hlY2s9bj0+e3RyeXtjb25zdCBvPW4udmFsdWUudHJpbSgpLHM9S3Aobyx0KTtpZihzPT09bmEpe24uaXNzdWVzLnB1c2goe2NvZGU6ImludmFsaWRfZm9ybWF0Iixmb3JtYXQ6InVybCIsbm90ZToiSW52YWxpZCBVUkwgZm9ybWF0IixpbnB1dDpuLnZhbHVlLGluc3Q6ZSxjb250aW51ZTohdC5hYm9ydH0pO3JldHVybn1pZihzPT09Um4pe24uaXNzdWVzLnB1c2goe2NvZGU6ImludmFsaWRfZm9ybWF0Iixmb3JtYXQ6InVybCIsaW5wdXQ6bi52YWx1ZSxpbnN0OmUsY29udGludWU6IXQuYWJvcnR9KTtyZXR1cm59aWYocz09PSEwKXtuLnZhbHVlPWRpKG8pO3JldHVybn10Lmhvc3RuYW1lJiYhWXAocyx0Lmhvc3RuYW1lKSYmbi5pc3N1ZXMucHVzaCh7Y29kZToiaW52YWxpZF9mb3JtYXQiLGZvcm1hdDoidXJsIixub3RlOiJJbnZhbGlkIGhvc3RuYW1lIixwYXR0ZXJuOnQuaG9zdG5hbWUuc291cmNlLGlucHV0Om4udmFsdWUsaW5zdDplLGNvbnRpbnVlOiF0LmFib3J0fSksdC5wcm90b2NvbCYmIVFwKHMsdC5wcm90b2NvbCkmJm4uaXNzdWVzLnB1c2goe2NvZGU6ImludmFsaWRfZm9ybWF0Iixmb3JtYXQ6InVybCIsbm90ZToiSW52YWxpZCBwcm90b2NvbCIscGF0dGVybjp0LnByb3RvY29sLnNvdXJjZSxpbnB1dDpuLnZhbHVlLGluc3Q6ZSxjb250aW51ZTohdC5hYm9ydH0pLG4udmFsdWU9dC5ub3JtYWxpemU/cy5ocmVmOmRpKG8pO3JldHVybn1jYXRjaHtuLmlzc3Vlcy5wdXNoKHtjb2RlOiJpbnZhbGlkX2Zvcm1hdCIsZm9ybWF0OiJ1cmwiLGlucHV0Om4udmFsdWUsaW5zdDplLGNvbnRpbnVlOiF0LmFib3J0fSl9fX0pLGVoPW0oIiRab2RFbW9qaSIsKGUsdCk9Pnt0LnBhdHRlcm4/Pyh0LnBhdHRlcm49ZXAoKSksZWUuaW5pdChlLHQpfSksdGg9bSgiJFpvZE5hbm9JRCIsKGUsdCk9PntpZih0Lmxlbmd0aCE9PXZvaWQgMCYmKCFOdW1iZXIuaXNJbnRlZ2VyKHQubGVuZ3RoKXx8dC5sZW5ndGg8MSkpdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIG5hbm9pZCBsZW5ndGg6ICR7dC5sZW5ndGh9YCk7dC5wYXR0ZXJuPz8odC5wYXR0ZXJuPXQubGVuZ3RoPT09dm9pZCAwP0pkOktkKHQubGVuZ3RoKSksZWUuaW5pdChlLHQpfSksbmg9bSgiJFpvZENVSUQiLChlLHQpPT57dC5wYXR0ZXJuPz8odC5wYXR0ZXJuPVVkKSxlZS5pbml0KGUsdCl9KSxvaD1tKCIkWm9kQ1VJRDIiLChlLHQpPT57dC5wYXR0ZXJuPz8odC5wYXR0ZXJuPUZkKSxlZS5pbml0KGUsdCl9KSxzaD1tKCIkWm9kVUxJRCIsKGUsdCk9Pnt0LnBhdHRlcm4/Pyh0LnBhdHRlcm49SGQpLGVlLmluaXQoZSx0KX0pLHJoPW0oIiRab2RYSUQiLChlLHQpPT57dC5wYXR0ZXJuPz8odC5wYXR0ZXJuPVdkKSxlZS5pbml0KGUsdCl9KSxpaD1tKCIkWm9kS1NVSUQiLChlLHQpPT57dC5wYXR0ZXJuPz8odC5wYXR0ZXJuPVZkKSxlZS5pbml0KGUsdCl9KSxhaD1tKCIkWm9kSVNPRGF0ZVRpbWUiLChlLHQpPT57dC5wYXR0ZXJuPz8odC5wYXR0ZXJuPWhwKHQpKSxlZS5pbml0KGUsdCl9KSxjaD1tKCIkWm9kSVNPRGF0ZSIsKGUsdCk9Pnt0LnBhdHRlcm4/Pyh0LnBhdHRlcm49ZHApLGVlLmluaXQoZSx0KX0pLGxoPW0oIiRab2RJU09UaW1lIiwoZSx0KT0+e3QucGF0dGVybj8/KHQucGF0dGVybj1wcCh0KSksZWUuaW5pdChlLHQpfSksdWg9bSgiJFpvZElTT0R1cmF0aW9uIiwoZSx0KT0+e3QucGF0dGVybj8/KHQucGF0dGVybj1HZCksZWUuaW5pdChlLHQpfSksZGg9bSgiJFpvZElQdjQiLChlLHQpPT57dC5wYXR0ZXJuPz8odC5wYXR0ZXJuPXRwKSxlZS5pbml0KGUsdCl9KSxWYj0vXlswLTlhLWZBLUY6Ll0rJC87ZnVuY3Rpb24gc2EoZSl7cmV0dXJuIFZiLnRlc3QoZSk/b2EoYGh0dHA6Ly9bJHtlfV1gKTohMX1jb25zdCBwaD1tKCIkWm9kSVB2NiIsKGUsdCk9Pnt0LnBhdHRlcm4/Pyh0LnBhdHRlcm49bnApLGVlLmluaXQoZSx0KSxlLl96b2QuY2hlY2s9bj0+e3NhKG4udmFsdWUpfHxuLmlzc3Vlcy5wdXNoKHtjb2RlOiJpbnZhbGlkX2Zvcm1hdCIsZm9ybWF0OiJpcHY2IixpbnB1dDpuLnZhbHVlLGluc3Q6ZSxjb250aW51ZTohdC5hYm9ydH0pfX0pLGhoPW0oIiRab2RNQUMiLChlLHQpPT57dC5wYXR0ZXJuPz8odC5wYXR0ZXJuPW9wKHQuZGVsaW1pdGVyKSksZWUuaW5pdChlLHQpfSksbWg9bSgiJFpvZENJRFJ2NCIsKGUsdCk9Pnt0LnBhdHRlcm4/Pyh0LnBhdHRlcm49c3ApLGVlLmluaXQoZSx0KX0pO2Z1bmN0aW9uIGZoKGUpe2NvbnN0IHQ9ZS5zcGxpdCgiLyIpO2lmKHQubGVuZ3RoIT09MilyZXR1cm4hMTtjb25zdFtuLG9dPXQ7aWYoIW8pcmV0dXJuITE7Y29uc3Qgcz1OdW1iZXIobyk7cmV0dXJuYCR7c31gIT09b3x8czwwfHxzPjEyOD8hMTpzYShuKX1jb25zdCBnaD1tKCIkWm9kQ0lEUnY2IiwoZSx0KT0+e3QucGF0dGVybj8/KHQucGF0dGVybj1ycCksZWUuaW5pdChlLHQpLGUuX3pvZC5jaGVjaz1uPT57Zmgobi52YWx1ZSl8fG4uaXNzdWVzLnB1c2goe2NvZGU6ImludmFsaWRfZm9ybWF0Iixmb3JtYXQ6ImNpZHJ2NiIsaW5wdXQ6bi52YWx1ZSxpbnN0OmUsY29udGludWU6IXQuYWJvcnR9KX19KTtmdW5jdGlvbiByYShlKXtpZihlPT09IiIpcmV0dXJuITA7aWYoL1xzLy50ZXN0KGUpfHxlLmxlbmd0aCU0IT09MClyZXR1cm4hMTt0cnl7cmV0dXJuIGF0b2IoZSksITB9Y2F0Y2h7cmV0dXJuITF9fWNvbnN0IGJoPS9eWzAtOWEtekEtWisvXSo9ezAsMn0kLyx2aD1tKCIkWm9kQmFzZTY0IiwoZSx0KT0+e3QucGF0dGVybj8/KHQucGF0dGVybj1iaCksZWUuaW5pdChlLHQpLGUuX3pvZC5jaGVjaz1uPT57cmEobi52YWx1ZSl8fG4uaXNzdWVzLnB1c2goe2NvZGU6ImludmFsaWRfZm9ybWF0Iixmb3JtYXQ6ImJhc2U2NCIsaW5wdXQ6bi52YWx1ZSxpbnN0OmUsY29udGludWU6IXQuYWJvcnR9KX19KSxpYT0vXltBLVphLXowLTlfLV0qJC87ZnVuY3Rpb24gJGgoZSl7aWYoIWlhLnRlc3QoZSkpcmV0dXJuITE7Y29uc3QgdD1lLnJlcGxhY2UoL1stX10vZyxvPT5vPT09Ii0iPyIrIjoiLyIpLG49dC5wYWRFbmQoTWF0aC5jZWlsKHQubGVuZ3RoLzQpKjQsIj0iKTtyZXR1cm4gcmEobil9Y29uc3QgeWg9bSgiJFpvZEJhc2U2NFVSTCIsKGUsdCk9Pnt0LnBhdHRlcm4/Pyh0LnBhdHRlcm49aWEpLGVlLmluaXQoZSx0KSxlLl96b2QuY2hlY2s9bj0+eyRoKG4udmFsdWUpfHxuLmlzc3Vlcy5wdXNoKHtjb2RlOiJpbnZhbGlkX2Zvcm1hdCIsZm9ybWF0OiJiYXNlNjR1cmwiLGlucHV0Om4udmFsdWUsaW5zdDplLGNvbnRpbnVlOiF0LmFib3J0fSl9fSksa2g9bSgiJFpvZEUxNjQiLChlLHQpPT57dC5wYXR0ZXJuPz8odC5wYXR0ZXJuPWNwKSxlZS5pbml0KGUsdCl9KSxKYj0vWy0gXS9nO2Z1bmN0aW9uIEtiKGUpe2xldCB0PWUubGVuZ3RoLG49MSxvPTA7Zm9yKDt0Oyl7Y29uc3Qgcz1lLmNoYXJDb2RlQXQoLS10KS00ODtuXj0xLG8rPW4/WzAsMiw0LDYsOCwxLDMsNSw3LDldW3NdOnN9cmV0dXJuIG8lMTA9PT0wfWZ1bmN0aW9uIF9oKGUpe3JldHVybiBLaS50ZXN0KGUpP0tiKGUucmVwbGFjZShKYiwiIikpOiExfWNvbnN0IHdoPW0oIiRab2RDcmVkaXRDYXJkIiwoZSx0KT0+e3QucGF0dGVybj8/KHQucGF0dGVybj1LaSksZWUuaW5pdChlLHQpLGUuX3pvZC5jaGVjaz1uPT57X2gobi52YWx1ZSl8fG4uaXNzdWVzLnB1c2goe2NvZGU6ImludmFsaWRfZm9ybWF0Iixmb3JtYXQ6ImNyZWRpdF9jYXJkIixpbnB1dDpuLnZhbHVlLGluc3Q6ZSxjb250aW51ZTohdC5hYm9ydH0pfX0pO2Z1bmN0aW9uIEdiKGUpe2xldCB0PTA7Y29uc3Qgbj1lLmxlbmd0aDtmb3IobGV0IG89NDtvPG47bysrKXtjb25zdCBzPWUuY2hhckNvZGVBdChvKTt0PShzPj02NT90KjEwMCsocy01NSk6dCoxMCsocy00OCkpJTk3fWZvcihsZXQgbz0wO288NDtvKyspe2NvbnN0IHM9ZS5jaGFyQ29kZUF0KG8pO3Q9KHM+PTY1P3QqMTAwKyhzLTU1KTp0KjEwKyhzLTQ4KSklOTd9cmV0dXJuIHQ9PT0xfWZ1bmN0aW9uIFNoKGUpe3JldHVybiBHaS50ZXN0KGUpP0diKGUpOiExfWNvbnN0IFRoPW0oIiRab2RJQkFOIiwoZSx0KT0+e3QucGF0dGVybj8/KHQucGF0dGVybj1HaSksZWUuaW5pdChlLHQpLGUuX3pvZC5jaGVjaz1uPT57U2gobi52YWx1ZSl8fG4uaXNzdWVzLnB1c2goe2NvZGU6ImludmFsaWRfZm9ybWF0Iixmb3JtYXQ6ImliYW4iLGlucHV0Om4udmFsdWUsaW5zdDplLGNvbnRpbnVlOiF0LmFib3J0fSl9fSk7ZnVuY3Rpb24gemgoZSx0PW51bGwpe3RyeXtjb25zdCBuPWUuc3BsaXQoIi4iKTtpZihuLmxlbmd0aCE9PTMpcmV0dXJuITE7Y29uc3Rbb109bjtpZighbylyZXR1cm4hMTtjb25zdCBzPUpTT04ucGFyc2UoYXRvYihvKSk7cmV0dXJuISgidHlwImluIHMmJnM/LnR5cCE9PSJKV1QifHwhcy5hbGd8fHQmJighKCJhbGciaW4gcyl8fHMuYWxnIT09dCkpfWNhdGNoe3JldHVybiExfX1jb25zdCB4aD1tKCIkWm9kSldUIiwoZSx0KT0+e2VlLmluaXQoZSx0KSxlLl96b2QuY2hlY2s9bj0+e3poKG4udmFsdWUsdC5hbGcpfHxuLmlzc3Vlcy5wdXNoKHtjb2RlOiJpbnZhbGlkX2Zvcm1hdCIsZm9ybWF0OiJqd3QiLGlucHV0Om4udmFsdWUsaW5zdDplLGNvbnRpbnVlOiF0LmFib3J0fSl9fSksSWg9bSgiJFpvZEN1c3RvbVN0cmluZ0Zvcm1hdCIsKGUsdCk9PntlZS5pbml0KGUsdCksZS5fem9kLmNoZWNrPW49Pnt0LmZuKG4udmFsdWUpfHxuLmlzc3Vlcy5wdXNoKHtjb2RlOiJpbnZhbGlkX2Zvcm1hdCIsZm9ybWF0OnQuZm9ybWF0LGlucHV0Om4udmFsdWUsaW5zdDplLGNvbnRpbnVlOiF0LmFib3J0fSl9fSksYWE9bSgiJFpvZE51bWJlciIsKGUsdCk9PntOLmluaXQoZSx0KSxlLl96b2QucGF0dGVybj1xcyxlLl96b2QucGFyc2U9KG4sbyk9PntpZih0LmNvZXJjZSl0cnl7bi52YWx1ZT1OdW1iZXIobi52YWx1ZSl9Y2F0Y2h7fWNvbnN0IHM9bi52YWx1ZTtpZih0eXBlb2Ygcz09Im51bWJlciImJiFOdW1iZXIuaXNOYU4ocykmJk51bWJlci5pc0Zpbml0ZShzKSlyZXR1cm4gbjtjb25zdCByPXR5cGVvZiBzPT0ibnVtYmVyIj9OdW1iZXIuaXNOYU4ocyk/Ik5hTiI6TnVtYmVyLmlzRmluaXRlKHMpP3ZvaWQgMDpTdHJpbmcocyk6dm9pZCAwO3JldHVybiBuLmlzc3Vlcy5wdXNoKHtleHBlY3RlZDoibnVtYmVyIixjb2RlOiJpbnZhbGlkX3R5cGUiLGlucHV0OnMsaW5zdDplLC4uLnI/e3JlY2VpdmVkOnJ9Ont9fSksbn19KSxBaD1tKCIkWm9kTnVtYmVyRm9ybWF0IiwoZSx0KT0+e1RwLmluaXQoZSx0KSxhYS5pbml0KGUsdCl9KSxjYT1tKCIkWm9kQm9vbGVhbiIsKGUsdCk9PntOLmluaXQoZSx0KSxlLl96b2QucGF0dGVybj12cCxlLl96b2QucGFyc2U9KG4sbyk9PntpZih0LmNvZXJjZSl0cnl7bi52YWx1ZT0hIW4udmFsdWV9Y2F0Y2h7fWNvbnN0IHM9bi52YWx1ZTtyZXR1cm4gdHlwZW9mIHM9PSJib29sZWFuInx8bi5pc3N1ZXMucHVzaCh7ZXhwZWN0ZWQ6ImJvb2xlYW4iLGNvZGU6ImludmFsaWRfdHlwZSIsaW5wdXQ6cyxpbnN0OmV9KSxufX0pLGxhPW0oIiRab2RCaWdJbnQiLChlLHQpPT57Ti5pbml0KGUsdCksZS5fem9kLnBhdHRlcm49Z3AsZS5fem9kLnBhcnNlPShuLG8pPT57aWYodC5jb2VyY2UpdHJ5e24udmFsdWU9QmlnSW50KG4udmFsdWUpfWNhdGNoe31yZXR1cm4gdHlwZW9mIG4udmFsdWU9PSJiaWdpbnQifHxuLmlzc3Vlcy5wdXNoKHtleHBlY3RlZDoiYmlnaW50Iixjb2RlOiJpbnZhbGlkX3R5cGUiLGlucHV0Om4udmFsdWUsaW5zdDplfSksbn19KSxDaD1tKCIkWm9kQmlnSW50Rm9ybWF0IiwoZSx0KT0+e3pwLmluaXQoZSx0KSxsYS5pbml0KGUsdCl9KSxQaD1tKCIkWm9kU3ltYm9sIiwoZSx0KT0+e04uaW5pdChlLHQpLGUuX3pvZC5wYXJzZT0obixvKT0+e2NvbnN0IHM9bi52YWx1ZTtyZXR1cm4gdHlwZW9mIHM9PSJzeW1ib2wifHxuLmlzc3Vlcy5wdXNoKHtleHBlY3RlZDoic3ltYm9sIixjb2RlOiJpbnZhbGlkX3R5cGUiLGlucHV0OnMsaW5zdDplfSksbn19KSxFaD1tKCIkWm9kVW5kZWZpbmVkIiwoZSx0KT0+e04uaW5pdChlLHQpLGUuX3pvZC5wYXR0ZXJuPXlwLGUuX3pvZC52YWx1ZXM9bmV3IFNldChbdm9pZCAwXSksZS5fem9kLnBhcnNlPShuLG8pPT57Y29uc3Qgcz1uLnZhbHVlO3JldHVybiB0eXBlb2Ygcz4idSJ8fG4uaXNzdWVzLnB1c2goe2V4cGVjdGVkOiJ1bmRlZmluZWQiLGNvZGU6ImludmFsaWRfdHlwZSIsaW5wdXQ6cyxpbnN0OmV9KSxufX0pLE9oPW0oIiRab2ROdWxsIiwoZSx0KT0+e04uaW5pdChlLHQpLGUuX3pvZC5wYXR0ZXJuPSRwLGUuX3pvZC52YWx1ZXM9bmV3IFNldChbbnVsbF0pLGUuX3pvZC5wYXJzZT0obixvKT0+e2NvbnN0IHM9bi52YWx1ZTtyZXR1cm4gcz09PW51bGx8fG4uaXNzdWVzLnB1c2goe2V4cGVjdGVkOiJudWxsIixjb2RlOiJpbnZhbGlkX3R5cGUiLGlucHV0OnMsaW5zdDplfSksbn19KSxSaD1tKCIkWm9kQW55IiwoZSx0KT0+e04uaW5pdChlLHQpLGUuX3pvZC5wYXJzZT1uPT5ufSksTmg9bSgiJFpvZFVua25vd24iLChlLHQpPT57Ti5pbml0KGUsdCksZS5fem9kLnBhcnNlPW49Pm59KSxaaD1tKCIkWm9kTmV2ZXIiLChlLHQpPT57Ti5pbml0KGUsdCksZS5fem9kLnBhcnNlPShuLG8pPT4obi5pc3N1ZXMucHVzaCh7ZXhwZWN0ZWQ6Im5ldmVyIixjb2RlOiJpbnZhbGlkX3R5cGUiLGlucHV0Om4udmFsdWUsaW5zdDplfSksbil9KSxNaD1tKCIkWm9kVm9pZCIsKGUsdCk9PntOLmluaXQoZSx0KSxlLl96b2QucGFyc2U9KG4sbyk9Pntjb25zdCBzPW4udmFsdWU7cmV0dXJuIHR5cGVvZiBzPiJ1Inx8bi5pc3N1ZXMucHVzaCh7ZXhwZWN0ZWQ6InZvaWQiLGNvZGU6ImludmFsaWRfdHlwZSIsaW5wdXQ6cyxpbnN0OmV9KSxufX0pLGpoPW0oIiRab2REYXRlIiwoZSx0KT0+e04uaW5pdChlLHQpLGUuX3pvZC5wYXJzZT0obixvKT0+e2lmKHQuY29lcmNlKXRyeXtuLnZhbHVlPW5ldyBEYXRlKG4udmFsdWUpfWNhdGNoe31jb25zdCBzPW4udmFsdWUscj1zIGluc3RhbmNlb2YgRGF0ZTtyZXR1cm4gciYmIU51bWJlci5pc05hTihzLmdldFRpbWUoKSl8fG4uaXNzdWVzLnB1c2goe2V4cGVjdGVkOiJkYXRlIixjb2RlOiJpbnZhbGlkX3R5cGUiLGlucHV0OnMsLi4ucj97cmVjZWl2ZWQ6IkludmFsaWQgRGF0ZSJ9Ont9LGluc3Q6ZX0pLG59fSk7ZnVuY3Rpb24ga3UoZSx0LG4pe2UuaXNzdWVzLmxlbmd0aCYmdC5pc3N1ZXMucHVzaCguLi5SZShuLGUuaXNzdWVzKSksdC52YWx1ZVtuXT1lLnZhbHVlfWNvbnN0IHFoPW0oIiRab2RBcnJheSIsKGUsdCk9PntOLmluaXQoZSx0KTtjb25zdCBuPXdlLm1lbW9pemVyO24/LmF0dGFjaChlKSxlLl96b2QucGFyc2U9KG8scyk9Pntjb25zdCByPW8udmFsdWU7aWYoIUFycmF5LmlzQXJyYXkocikpcmV0dXJuIG8uaXNzdWVzLnB1c2goe2V4cGVjdGVkOiJhcnJheSIsY29kZToiaW52YWxpZF90eXBlIixpbnB1dDpyLGluc3Q6ZX0pLG87by52YWx1ZT1uP24uYWxsb2MoZSxvLEFycmF5KHIubGVuZ3RoKSxzKTpBcnJheShyLmxlbmd0aCk7Y29uc3QgYT1bXSxpPXM/LmFib3J0RWFybHk7Zm9yKGxldCBkPTA7ZDxyLmxlbmd0aDtkKyspe2NvbnN0IHU9cltkXSxwPXQuZWxlbWVudC5fem9kLnJ1bih7dmFsdWU6dSxpc3N1ZXM6W119LHMpO2lmKHAgaW5zdGFuY2VvZiBQcm9taXNlKWEucHVzaChwLnRoZW4oaD0+a3UoaCxvLGQpKSk7ZWxzZSBpZihrdShwLG8sZCksaSYmcC5pc3N1ZXMubGVuZ3RoIT09MCYmVGUocCkpYnJlYWt9cmV0dXJuIGEubGVuZ3RoP1Byb21pc2UuYWxsKGEpLnRoZW4oKCk9Pm8pOm99fSk7ZnVuY3Rpb24gZHMoZSx0LG4sbyxzLHIpe2NvbnN0IGE9biBpbiBvLGk9cj09PSJvcHRpb25hbCI7aWYoISghYSYmaSYmcz09PSJvcHRpb25hbCIpKXtpZihlLmlzc3Vlcy5sZW5ndGgpe2lmKHMhPT12b2lkIDAmJmkmJiFhKXJldHVybjt0Lmlzc3Vlcy5wdXNoKC4uLlJlKG4sZS5pc3N1ZXMpKX1pZighYSYmcz09PXZvaWQgMCl7ZS5pc3N1ZXMubGVuZ3RofHx0Lmlzc3Vlcy5wdXNoKHtjb2RlOiJpbnZhbGlkX3R5cGUiLGV4cGVjdGVkOiJub25vcHRpb25hbCIsaW5wdXQ6dm9pZCAwLHBhdGg6W25dfSk7cmV0dXJufWUudmFsdWU9PT12b2lkIDA/KGF8fHM9PT0iZGVmYXVsdGVkIiYmIWkpJiYodC52YWx1ZVtuXT12b2lkIDApOnQudmFsdWVbbl09ZS52YWx1ZX19Y29uc3QgWWI9W107ZnVuY3Rpb24gTGgoZSl7Y29uc3QgdD1PYmplY3Qua2V5cyhlLnNoYXBlKSxuPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZS5zaGFwZSksbz1uLmxlbmd0aD9uOlliLHM9by5sZW5ndGg/Wy4uLnQsLi4ub106dDtmb3IoY29uc3QgYSBvZiBzKWlmKCFlLnNoYXBlPy5bYV0/Ll96b2Q/LnRyYWl0cz8uaGFzKCIkWm9kVHlwZSIpKXRocm93IG5ldyBFcnJvcihgSW52YWxpZCBlbGVtZW50IGF0IGtleSAiJHtTdHJpbmcoYSl9IjogZXhwZWN0ZWQgYSBab2Qgc2NoZW1hYCk7Y29uc3Qgcj1rZChlLnNoYXBlKTtyZXR1cm57Li4uZSxhbGxLZXlzOnMsc3ltYm9sS2V5czpvLGtleVNldDpuZXcgU2V0KHQpLG51bUtleXM6dC5sZW5ndGgsb3B0aW9uYWxLZXlzOm5ldyBTZXQocil9fWZ1bmN0aW9uIERoKGUsdCxuLG8scyxyLGEpe2NvbnN0IGk9W10sZD1zLmtleVNldCx1PXMuY2F0Y2hhbGwuX3pvZCxwPXUuZGVmLnR5cGUsaD11Lm9wdGluLGI9dS5vcHRvdXQ7bGV0ICQ9MDtmb3IoY29uc3QgayBpbiB0KXtpZihhJiZuLmlzc3Vlcy5sZW5ndGghPT0kKXtpZihUZShuLCQpKWJyZWFrOyQ9bi5pc3N1ZXMubGVuZ3RofWlmKGQuaGFzKGspKWNvbnRpbnVlO2lmKGs9PT0iX19wcm90b19fIil7cD09PSJuZXZlciImJmkucHVzaChrKTtjb250aW51ZX1pZihwPT09Im5ldmVyIil7aS5wdXNoKGspO2NvbnRpbnVlfWNvbnN0IFQ9dS5ydW4oe3ZhbHVlOnRba10saXNzdWVzOltdfSxvKTtUIGluc3RhbmNlb2YgUHJvbWlzZT9lLnB1c2goVC50aGVuKHg9PmRzKHgsbixrLHQsaCxiKSkpOmRzKFQsbixrLHQsaCxiKX1yZXR1cm4gaS5sZW5ndGgmJm4uaXNzdWVzLnB1c2goe2NvZGU6InVucmVjb2duaXplZF9rZXlzIixrZXlzOmksaW5wdXQ6dCxpbnN0OnIsY29udGludWU6ITB9KSxlLmxlbmd0aD9Qcm9taXNlLmFsbChlKS50aGVuKCgpPT5uKTpufWNvbnN0IEJoPW0oIiRab2RPYmplY3QiLChlLHQpPT57Ti5pbml0KGUsdCk7Y29uc3Qgbj1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsInNoYXBlIiksbz1uPy5nZXQ/bi5nZXQucmF3OnQuc2hhcGU/P3t9O2lmKG8pe2NvbnN0IHU9KCk9Pntjb25zdCBwPXsuLi5vfTtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsInNoYXBlIix7dmFsdWU6cH0pLHUucmF3PXAscH07dS5yYXc9byxPYmplY3QuZGVmaW5lUHJvcGVydHkodCwic2hhcGUiLHtnZXQ6dX0pfWNvbnN0IHM9RG4oKCk9PkxoKHQpKTtCKGUsInByb3BWYWx1ZXMiLHU9Pntjb25zdCBwPXUuZGVmLnNoYXBlLGg9e307Zm9yKGNvbnN0IGIgaW4gcCl7Y29uc3QgJD1wW2JdLl96b2Q7aWYoJC52YWx1ZXMpe09iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChoLGIpfHxBdChoLGIsbmV3IFNldCk7Zm9yKGNvbnN0IGsgb2YgJC52YWx1ZXMpaFtiXS5hZGQoayk7JC5vcHRpbiE9PXZvaWQgMCYmaFtiXS5hZGQodm9pZCAwKX19cmV0dXJuIGh9KTtjb25zdCByPUR0LGE9dC5jYXRjaGFsbDtsZXQgaTtjb25zdCBkPXdlLm1lbW9pemVyO2Q/LmF0dGFjaChlKSxlLl96b2QucGFyc2U9KHUscCk9PntpPz8oaT1zLnZhbHVlKTtjb25zdCBoPXUudmFsdWU7aWYoIXIoaCkpcmV0dXJuIHUuaXNzdWVzLnB1c2goe2V4cGVjdGVkOiJvYmplY3QiLGNvZGU6ImludmFsaWRfdHlwZSIsaW5wdXQ6aCxpbnN0OmV9KSx1O3UudmFsdWU9ZD9kLmFsbG9jKGUsdSx7fSxwKTp7fTtjb25zdCBiPVtdLCQ9aS5zaGFwZSxrPXA/LmFib3J0RWFybHk7bGV0IFQ9dS5pc3N1ZXMubGVuZ3RoO2Zvcihjb25zdCB4IG9mIGkuYWxsS2V5cyl7aWYoayYmdS5pc3N1ZXMubGVuZ3RoIT09VCl7aWYoVGUodSxUKSlicmVhaztUPXUuaXNzdWVzLmxlbmd0aH1pZih4PT09Il9fcHJvdG9fXyIpY29udGludWU7Y29uc3Qgej0kW3hdLEk9ei5fem9kLm9wdGluLFo9ei5fem9kLm9wdG91dCxpZT16Ll96b2QucnVuKHt2YWx1ZTpoW3hdLGlzc3VlczpbXX0scCk7aWUgaW5zdGFuY2VvZiBQcm9taXNlP2IucHVzaChpZS50aGVuKEM9PmRzKEMsdSx4LGgsSSxaKSkpOmRzKGllLHUseCxoLEksWil9cmV0dXJuIGE/RGgoYixoLHUscCxzLnZhbHVlLGUsaz09PSEwKTpiLmxlbmd0aD9Qcm9taXNlLmFsbChiKS50aGVuKCgpPT51KTp1fX0pLFVoPW0oIiRab2RPYmplY3RKSVQiLChlLHQpPT57QmguaW5pdChlLHQpO2NvbnN0IG49ZS5fem9kLnBhcnNlLG89RG4oKCk9PkxoKHQpKSxzPXdlLm1lbW9pemVyLHI9JD0+e2NvbnN0IGs9by52YWx1ZSxUPWsuc3ltYm9sS2V5cyx4PW5ldyBVcChbInBheWxvYWQiLCJjdHgiXSx7c2hhcGU6JCxpbnN0OmUsbWVtbzpzLHN5bXM6VH0pLHo9Qz0+YHNoYXBlWyR7Q31dLl96b2QucnVuKHsgdmFsdWU6IGlucHV0WyR7Q31dLCBpc3N1ZXM6IFtdIH0sIGN0eClgLEk9KEMsRik9PmAKICAgICAgICAgIGxldCAke0N9X2FiID0gZmFsc2U7CiAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8ICR7Q30uaXNzdWVzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgIGNvbnN0IGlzcyA9ICR7Q30uaXNzdWVzW2ldOwogICAgICAgICAgICBpc3MucGF0aCA9IGlzcy5wYXRoID8gWyR7Rn0sIC4uLmlzcy5wYXRoXSA6IFske0Z9XTsKICAgICAgICAgICAgcGF5bG9hZC5pc3N1ZXMucHVzaChpc3MpOwogICAgICAgICAgICBpZiAoaXNzLmNvbnRpbnVlICE9PSB0cnVlKSAke0N9X2FiID0gdHJ1ZTsKICAgICAgICAgIH0KICAgICAgICAgIGlmICgke0N9X2FiICYmIGN0eCAmJiBjdHguYWJvcnRFYXJseSkgewogICAgICAgICAgICBwYXlsb2FkLnZhbHVlID0gbmV3UmVzdWx0OwogICAgICAgICAgICByZXR1cm4gcGF5bG9hZDsKICAgICAgICAgIH1gO3gud3JpdGUoImNvbnN0IGlucHV0ID0gcGF5bG9hZC52YWx1ZTsiKTtjb25zdCBaPU9iamVjdC5jcmVhdGUobnVsbCk7bGV0IGllPTA7Zm9yKGNvbnN0IEMgb2Ygay5hbGxLZXlzKVpbQ109YGtleV8ke2llKyt9YDt4LndyaXRlKHM/ImNvbnN0IG5ld1Jlc3VsdCA9IG1lbW8uYWxsb2MoaW5zdCwgcGF5bG9hZCwge30sIGN0eCk7IjoiY29uc3QgbmV3UmVzdWx0ID0ge307Iik7Zm9yKGNvbnN0IEMgb2Ygay5hbGxLZXlzKXtpZihDPT09Il9fcHJvdG9fXyIpY29udGludWU7Y29uc3QgRj1aW0NdLCRlPXR5cGVvZiBDPT0ic3ltYm9sIj9gc3ltc1ske1QuaW5kZXhPZihDKX1dYDpiZChDKSxFdD1gJHskZX0gaW4gaW5wdXRgLHluPSRbQ10sSD15bj8uX3pvZD8ub3B0aW4sa249SCE9PXZvaWQgMCxKbz15bj8uX3pvZD8ub3B0b3V0PT09Im9wdGlvbmFsIjtpZih4LndyaXRlKGBjb25zdCAke0Z9ID0gJHt6KCRlKX07YCksa24mJkpvKXtjb25zdCBfbj1IPT09Im9wdGlvbmFsIj9gJHtGfV9wcmVzZW50YDpgJHtGfS52YWx1ZSAhPT0gdW5kZWZpbmVkIHx8ICR7Rn1fcHJlc2VudGA7eC53cml0ZShgCiAgICAgICAgY29uc3QgJHtGfV9wcmVzZW50ID0gJHtFdH07CiAgICAgICAgaWYgKCEke0Z9Lmlzc3Vlcy5sZW5ndGggfHwgJHtGfV9wcmVzZW50KSB7CiAgICAgICAgICBpZiAoJHtGfS5pc3N1ZXMubGVuZ3RoKSB7JHtJKEYsJGUpfQogICAgICAgICAgfQoKICAgICAgICAgIGlmICgke19ufSkgewogICAgICAgICAgICBuZXdSZXN1bHRbJHskZX1dID0gJHtGfS52YWx1ZTsKICAgICAgICAgIH0KICAgICAgICB9CgogICAgICBgKX1lbHNlIGtuPyh4LndyaXRlKGAKICAgICAgICBpZiAoJHtGfS5pc3N1ZXMubGVuZ3RoKSB7JHtJKEYsJGUpfQogICAgICAgIH0KICAgICAgYCksSD09PSJkZWZhdWx0ZWQiP3gud3JpdGUoYG5ld1Jlc3VsdFskeyRlfV0gPSAke0Z9LnZhbHVlO2ApOngud3JpdGUoYAogICAgICAgIGlmICgke0Z9LnZhbHVlICE9PSB1bmRlZmluZWQgfHwgJHtFdH0pIHsKICAgICAgICAgIG5ld1Jlc3VsdFskeyRlfV0gPSAke0Z9LnZhbHVlOwogICAgICAgIH0KICAgICAgYCkpOngud3JpdGUoYAogICAgICAgIGNvbnN0ICR7Rn1fcHJlc2VudCA9ICR7RXR9OwogICAgICAgIGlmICgke0Z9Lmlzc3Vlcy5sZW5ndGgpIHske0koRiwkZSl9CiAgICAgICAgfQogICAgICAgIGlmICghJHtGfV9wcmVzZW50ICYmICEke0Z9Lmlzc3Vlcy5sZW5ndGgpIHsKICAgICAgICAgIHBheWxvYWQuaXNzdWVzLnB1c2goewogICAgICAgICAgICBjb2RlOiAiaW52YWxpZF90eXBlIiwKICAgICAgICAgICAgZXhwZWN0ZWQ6ICJub25vcHRpb25hbCIsCiAgICAgICAgICAgIGlucHV0OiB1bmRlZmluZWQsCiAgICAgICAgICAgIHBhdGg6IFskeyRlfV0KICAgICAgICAgIH0pOwogICAgICAgICAgaWYgKGN0eCAmJiBjdHguYWJvcnRFYXJseSkgewogICAgICAgICAgICBwYXlsb2FkLnZhbHVlID0gbmV3UmVzdWx0OwogICAgICAgICAgICByZXR1cm4gcGF5bG9hZDsKICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmICgke0Z9X3ByZXNlbnQpIHsKICAgICAgICAgIG5ld1Jlc3VsdFskeyRlfV0gPSAke0Z9LnZhbHVlOwogICAgICAgIH0KCiAgICAgIGApfXJldHVybiB4LndyaXRlKCJwYXlsb2FkLnZhbHVlID0gbmV3UmVzdWx0OyIpLHgud3JpdGUoInJldHVybiBwYXlsb2FkOyIpLHguY29tcGlsZSgpfTtsZXQgYTtjb25zdCBpPUR0LGQ9IXdlLmppdGxlc3MscD1kJiYkZC52YWx1ZSxoPXQuY2F0Y2hhbGw7bGV0IGI7ZS5fem9kLnBhcnNlPSgkLGspPT57Yj8/KGI9by52YWx1ZSk7Y29uc3QgVD0kLnZhbHVlO3JldHVybiBpKFQpP2QmJnAmJms/LmFzeW5jPT09ITEmJmsuaml0bGVzcyE9PSEwPyhhfHwoYT1yKHQuc2hhcGUpKSwkPWEoJCxrKSxoP0RoKFtdLFQsJCxrLGIsZSxrPy5hYm9ydEVhcmx5PT09ITApOiQpOm4oJCxrKTooJC5pc3N1ZXMucHVzaCh7ZXhwZWN0ZWQ6Im9iamVjdCIsY29kZToiaW52YWxpZF90eXBlIixpbnB1dDpULGluc3Q6ZX0pLCQpfX0pO2Z1bmN0aW9uIF91KGUsdCxuLG8pe2Zvcihjb25zdCByIG9mIGUpaWYoci5pc3N1ZXMubGVuZ3RoPT09MClyZXR1cm4gdC52YWx1ZT1yLnZhbHVlLHQ7Y29uc3Qgcz1lLmZpbHRlcihyPT4hVGUocikpO3JldHVybiBzLmxlbmd0aD09PTE/KHQudmFsdWU9c1swXS52YWx1ZSxzWzBdKToodC5pc3N1ZXMucHVzaCh7Y29kZToiaW52YWxpZF91bmlvbiIsaW5wdXQ6dC52YWx1ZSxpbnN0Om4sZXJyb3JzOmUubWFwKHI9PnIuaXNzdWVzLm1hcChhPT5qZShhLG8sZGUoKSkpKX0pLHQpfWNvbnN0IERzPW0oIiRab2RVbmlvbiIsKGUsdCk9PntOLmluaXQoZSx0KSxCKGUsIm9wdGluIixvPT5vLmRlZi5vcHRpb25zLnNvbWUocz0+cy5fem9kLm9wdGluPT09ImRlZmF1bHRlZCIpPyJkZWZhdWx0ZWQiOm8uZGVmLm9wdGlvbnMuc29tZShzPT5zLl96b2Qub3B0aW4hPT12b2lkIDApPyJvcHRpb25hbCI6dm9pZCAwKSxCKGUsIm9wdG91dCIsbz0+by5kZWYub3B0aW9ucy5zb21lKHM9PnMuX3pvZC5vcHRvdXQ9PT0ib3B0aW9uYWwiKT8ib3B0aW9uYWwiOnZvaWQgMCksQihlLCJ2YWx1ZXMiLG89PntpZihvLmRlZi5vcHRpb25zLmV2ZXJ5KHM9PnMuX3pvZC52YWx1ZXMpKXJldHVybiBuZXcgU2V0KG8uZGVmLm9wdGlvbnMuZmxhdE1hcChzPT5BcnJheS5mcm9tKHMuX3pvZC52YWx1ZXMpKSl9KSxCKGUsInBhdHRlcm4iLG89PntpZihvLmRlZi5vcHRpb25zLmV2ZXJ5KHM9PnMuX3pvZC5wYXR0ZXJuKSl7Y29uc3Qgcz1vLmRlZi5vcHRpb25zLm1hcChyPT5yLl96b2QucGF0dGVybik7cmV0dXJuIG5ldyBSZWdFeHAoYF4oJHtzLm1hcChyPT5zdChyLnNvdXJjZSkpLmpvaW4oInwiKX0pJGApfX0pO2NvbnN0IG49dC5vcHRpb25zLmxlbmd0aD09PTE/dC5vcHRpb25zWzBdLl96b2QucnVuOm51bGw7ZS5fem9kLnBhcnNlPShvLHMpPT57aWYobilyZXR1cm4gbihvLHMpO2xldCByPSExO2NvbnN0IGE9W107Zm9yKGNvbnN0IGkgb2YgdC5vcHRpb25zKXtjb25zdCBkPWkuX3pvZC5ydW4oe3ZhbHVlOm8udmFsdWUsaXNzdWVzOltdfSxzKTtpZihkIGluc3RhbmNlb2YgUHJvbWlzZSlhLnB1c2goZCkscj0hMDtlbHNle2lmKGQuaXNzdWVzLmxlbmd0aD09PTApcmV0dXJuIGQ7YS5wdXNoKGQpfX1yZXR1cm4gcj9Qcm9taXNlLmFsbChhKS50aGVuKGk9Pl91KGksbyxlLHMpKTpfdShhLG8sZSxzKX19KTtmdW5jdGlvbiB3dShlLHQsbixvKXtjb25zdCBzPVtdO2ZvcihsZXQgcj0wO3I8ZS5sZW5ndGg7cisrKWVbcl0uaXNzdWVzLmxlbmd0aD09PTAmJnMucHVzaChyKTtyZXR1cm4gcy5sZW5ndGg9PT0xPyh0LnZhbHVlPWVbc1swXV0udmFsdWUsdCk6KHMubGVuZ3RoPT09MD90Lmlzc3Vlcy5wdXNoKHtjb2RlOiJpbnZhbGlkX3VuaW9uIixpbnB1dDp0LnZhbHVlLGluc3Q6bixlcnJvcnM6ZS5tYXAocj0+ci5pc3N1ZXMubWFwKGE9PmplKGEsbyxkZSgpKSkpfSk6dC5pc3N1ZXMucHVzaCh7Y29kZToiaW52YWxpZF91bmlvbiIsaW5wdXQ6dC52YWx1ZSxpbnN0Om4sZXJyb3JzOltdLGluY2x1c2l2ZTohMSxtYXRjaGVzOnN9KSx0KX1jb25zdCBGaD1tKCIkWm9kWG9yIiwoZSx0KT0+e0RzLmluaXQoZSx0KSx0LmluY2x1c2l2ZT0hMTtjb25zdCBuPXQub3B0aW9ucy5sZW5ndGg9PT0xP3Qub3B0aW9uc1swXS5fem9kLnJ1bjpudWxsO2UuX3pvZC5wYXJzZT0obyxzKT0+e2lmKG4pcmV0dXJuIG4obyxzKTtsZXQgcj0hMTtjb25zdCBhPVtdO2Zvcihjb25zdCBpIG9mIHQub3B0aW9ucyl7Y29uc3QgZD1pLl96b2QucnVuKHt2YWx1ZTpvLnZhbHVlLGlzc3VlczpbXX0scyk7ZCBpbnN0YW5jZW9mIFByb21pc2U/KGEucHVzaChkKSxyPSEwKTphLnB1c2goZCl9cmV0dXJuIHI/UHJvbWlzZS5hbGwoYSkudGhlbihpPT53dShpLG8sZSxzKSk6d3UoYSxvLGUscyl9fSk7ZnVuY3Rpb24gdWEoZSx0KXtjb25zdCBuPWUuX3pvZDtsZXQgbz1uLmJhZy5vcHRpb25zTWFwO298fChvPUhoKG4uZGVmKSxuLmJhZy5vcHRpb25zTWFwPW8pO2NvbnN0IHM9by5nZXQodCk7aWYocz09PW51bGwpdGhyb3cgbmV3IEVycm9yKGBBbWJpZ3VvdXMgZGlzY3JpbWluYXRvciB2YWx1ZSAiJHtTdHJpbmcodCl9ImApO3JldHVybiBzfWZ1bmN0aW9uIEhoKGUpe2NvbnN0IHQ9bmV3IE1hcDtmb3IoY29uc3QgbiBvZiBlLm9wdGlvbnMpe2NvbnN0IG89bi5fem9kLnByb3BWYWx1ZXM/LltlLmRpc2NyaW1pbmF0b3JdO2lmKCFvfHxvLnNpemU9PT0wKXRocm93IG5ldyBFcnJvcihgSW52YWxpZCBkaXNjcmltaW5hdGVkIHVuaW9uIG9wdGlvbiBhdCBpbmRleCAiJHtlLm9wdGlvbnMuaW5kZXhPZihuKX0iYCk7Zm9yKGNvbnN0IHMgb2YgbylpZih0LmhhcyhzKSl7aWYocyE9PXZvaWQgMCl0aHJvdyBuZXcgRXJyb3IoYER1cGxpY2F0ZSBkaXNjcmltaW5hdG9yIHZhbHVlICIke1N0cmluZyhzKX0iYCk7dC5zZXQocyxudWxsKX1lbHNlIHQuc2V0KHMsbil9cmV0dXJuIHR9Y29uc3QgV2g9bSgiJFpvZERpc2NyaW1pbmF0ZWRVbmlvbiIsKGUsdCk9Pnt0LmluY2x1c2l2ZT0hMSxEcy5pbml0KGUsdCk7Y29uc3Qgbj1lLl96b2QucGFyc2U7QihlLCJwcm9wVmFsdWVzIixzPT57Y29uc3Qgcj17fTtsZXQgYT0wO2Zvcihjb25zdCBpIG9mIHMuZGVmLm9wdGlvbnMpe2NvbnN0IGQ9aS5fem9kLnByb3BWYWx1ZXM7aWYoIWR8fE9iamVjdC5rZXlzKGQpLmxlbmd0aD09PTApdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGRpc2NyaW1pbmF0ZWQgdW5pb24gb3B0aW9uIGF0IGluZGV4ICIke3MuZGVmLm9wdGlvbnMuaW5kZXhPZihpKX0iYCk7ZFtzLmRlZi5kaXNjcmltaW5hdG9yXT8uaGFzKHZvaWQgMCkmJmErKztmb3IoY29uc3RbdSxwXW9mIE9iamVjdC5lbnRyaWVzKGQpKXtPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocix1KXx8QXQocix1LG5ldyBTZXQpO2Zvcihjb25zdCBoIG9mIHApclt1XS5hZGQoaCl9fXJldHVybiFzLmRlZi51bmlvbkZhbGxiYWNrJiZhPjEmJnJbcy5kZWYuZGlzY3JpbWluYXRvcl0/LmRlbGV0ZSh2b2lkIDApLHJ9KSx0Lm9wdGlvbnMuZm9yRWFjaCgocyxyKT0+e2NvbnN0IGE9enMocy5fem9kLmRlZik7aWYoYSYmIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChhLHQuZGlzY3JpbWluYXRvcikpdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGRpc2NyaW1pbmF0ZWQgdW5pb24gb3B0aW9uIGF0IGluZGV4ICIke3J9ImApfSk7Y29uc3Qgbz1EbigoKT0+SGgodCkpO2UuX3pvZC5wYXJzZT0ocyxyKT0+e2NvbnN0IGE9cy52YWx1ZTtpZighRHQoYSkpcmV0dXJuIHMuaXNzdWVzLnB1c2goe2NvZGU6ImludmFsaWRfdHlwZSIsZXhwZWN0ZWQ6Im9iamVjdCIsaW5wdXQ6YSxpbnN0OmV9KSxzO2NvbnN0IGk9YT8uW3QuZGlzY3JpbWluYXRvcl0sZD1vLnZhbHVlLmdldChpKTtyZXR1cm4gZCYmKGkhPT12b2lkIDB8fHIuZGlyZWN0aW9uIT09ImJhY2t3YXJkIik/ZC5fem9kLnJ1bihzLHIpOnQudW5pb25GYWxsYmFja3x8ci5kaXJlY3Rpb249PT0iYmFja3dhcmQiP24ocyxyKToocy5pc3N1ZXMucHVzaCh7Y29kZToiaW52YWxpZF91bmlvbiIsZXJyb3JzOltdLG5vdGU6Ik5vIG1hdGNoaW5nIGRpc2NyaW1pbmF0b3IiLGRpc2NyaW1pbmF0b3I6dC5kaXNjcmltaW5hdG9yLG9wdGlvbnM6QXJyYXkuZnJvbShvLnZhbHVlLmtleXMoKSkuZmlsdGVyKHU9Pm8udmFsdWUuZ2V0KHUpIT09bnVsbCksaW5wdXQ6YSxwYXRoOlt0LmRpc2NyaW1pbmF0b3JdLGluc3Q6ZX0pLHMpfX0pLFZoPW0oIiRab2RJbnRlcnNlY3Rpb24iLChlLHQpPT57Ti5pbml0KGUsdCksZS5fem9kLnBhcnNlPShuLG8pPT57Y29uc3Qgcz1uLnZhbHVlLHI9dC5sZWZ0Ll96b2QucnVuKHt2YWx1ZTpzLGlzc3VlczpbXX0sbyksYT10LnJpZ2h0Ll96b2QucnVuKHt2YWx1ZTpzLGlzc3VlczpbXX0sbyk7cmV0dXJuIHIgaW5zdGFuY2VvZiBQcm9taXNlfHxhIGluc3RhbmNlb2YgUHJvbWlzZT9Qcm9taXNlLmFsbChbcixhXSkudGhlbigoW2QsdV0pPT5TdShuLGQsdSkpOlN1KG4scixhKX19KTtmdW5jdGlvbiBwcyhlLHQpe2lmKGU9PT10KXJldHVybnt2YWxpZDohMCxkYXRhOmV9O2lmKGUgaW5zdGFuY2VvZiBEYXRlJiZ0IGluc3RhbmNlb2YgRGF0ZSYmK2U9PSt0KXJldHVybnt2YWxpZDohMCxkYXRhOmV9O2lmKGl0KGUpJiZpdCh0KSl7Y29uc3Qgbj1PYmplY3Qua2V5cyh0KSxvPU9iamVjdC5rZXlzKGUpLmZpbHRlcihyPT5uLmluZGV4T2YocikhPT0tMSkscz17Li4uZSwuLi50fTtPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywiX19wcm90b19fIikmJmRlbGV0ZSBzLl9fcHJvdG9fXztmb3IoY29uc3QgciBvZiBvKXtpZihyPT09Il9fcHJvdG9fXyIpY29udGludWU7Y29uc3QgYT1wcyhlW3JdLHRbcl0pO2lmKCFhLnZhbGlkKXJldHVybnt2YWxpZDohMSxtZXJnZUVycm9yUGF0aDpbciwuLi5hLm1lcmdlRXJyb3JQYXRoXX07c1tyXT1hLmRhdGF9cmV0dXJue3ZhbGlkOiEwLGRhdGE6c319aWYoQXJyYXkuaXNBcnJheShlKSYmQXJyYXkuaXNBcnJheSh0KSl7aWYoZS5sZW5ndGghPT10Lmxlbmd0aClyZXR1cm57dmFsaWQ6ITEsbWVyZ2VFcnJvclBhdGg6W119O2NvbnN0IG49W107Zm9yKGxldCBvPTA7bzxlLmxlbmd0aDtvKyspe2NvbnN0IHM9ZVtvXSxyPXRbb10sYT1wcyhzLHIpO2lmKCFhLnZhbGlkKXJldHVybnt2YWxpZDohMSxtZXJnZUVycm9yUGF0aDpbbywuLi5hLm1lcmdlRXJyb3JQYXRoXX07bi5wdXNoKGEuZGF0YSl9cmV0dXJue3ZhbGlkOiEwLGRhdGE6bn19cmV0dXJue3ZhbGlkOiExLG1lcmdlRXJyb3JQYXRoOltdfX1mdW5jdGlvbiBTdShlLHQsbil7Y29uc3Qgbz1uZXcgTWFwO2xldCBzO2NvbnN0IHI9bmV3IE1hcCxhPSh1LHApPT57bGV0IGg7aWYodS5jb2RlPT09InVucmVjb2duaXplZF9rZXlzIiYmIXUucGF0aD8ubGVuZ3RoKXM/PyhzPXUpLGg9dS5rZXlzO2Vsc2UgaWYodS5jb2RlPT09ImludmFsaWRfa2V5IiYmdS5vcmlnaW49PT0icmVjb3JkIiYmdS5wYXRoPy5sZW5ndGg9PT0xKXtjb25zdCBiPVN0cmluZyh1LnBhdGhbMF0pO3IuaGFzKGIpfHxyLnNldChiLHUpLGg9W2JdfWVsc2UgcmV0dXJuITE7Zm9yKGNvbnN0IGIgb2YgaClvLmhhcyhiKXx8by5zZXQoYix7fSksby5nZXQoYilbcF09ITA7cmV0dXJuITB9O2Zvcihjb25zdCB1IG9mIHQuaXNzdWVzKWEodSwibCIpfHxlLmlzc3Vlcy5wdXNoKHUpO2Zvcihjb25zdCB1IG9mIG4uaXNzdWVzKWEodSwiciIpfHxlLmlzc3Vlcy5wdXNoKHUpO2NvbnN0IGk9Wy4uLm9dLmZpbHRlcigoWyx1XSk9PnUubCYmdS5yKS5tYXAoKFt1XSk9PnUpO2lmKGkubGVuZ3RoKXtjb25zdCB1PXM/aS5maWx0ZXIocD0+cy5rZXlzLmluY2x1ZGVzKHApKTpbXTt1Lmxlbmd0aCYmZS5pc3N1ZXMucHVzaCh7Li4ucyxrZXlzOnV9KTtmb3IoY29uc3QgcCBvZiBpKSF1LmluY2x1ZGVzKHApJiZyLmhhcyhwKSYmZS5pc3N1ZXMucHVzaChyLmdldChwKSl9Y29uc3QgZD1wcyh0LnZhbHVlLG4udmFsdWUpO2lmKCFkLnZhbGlkKXtpZihUZShlKSlyZXR1cm4gZTt0aHJvdyBuZXcgRXJyb3IoYFVubWVyZ2FibGUgaW50ZXJzZWN0aW9uLiBFcnJvciBwYXRoOiAke0pTT04uc3RyaW5naWZ5KGQubWVyZ2VFcnJvclBhdGgpfWApfXJldHVybiBlLnZhbHVlPWQuZGF0YSxlfWNvbnN0IGRhPW0oIiRab2RUdXBsZSIsKGUsdCk9PntOLmluaXQoZSx0KTtjb25zdCBuPXQuaXRlbXMsbz13ZS5tZW1vaXplcjtvPy5hdHRhY2goZSksZS5fem9kLnBhcnNlPShzLHIpPT57Y29uc3QgYT1zLnZhbHVlO2lmKCFBcnJheS5pc0FycmF5KGEpKXJldHVybiBzLmlzc3Vlcy5wdXNoKHtpbnB1dDphLGluc3Q6ZSxleHBlY3RlZDoidHVwbGUiLGNvZGU6ImludmFsaWRfdHlwZSJ9KSxzO3MudmFsdWU9bz9vLmFsbG9jKGUscyxbXSxyKTpbXTtjb25zdCBpPVtdLGQ9VHUobiwib3B0aW4iKSx1PVR1KG4sIm9wdG91dCIpO2lmKCF0LnJlc3Qpe2lmKGEubGVuZ3RoPGQpcmV0dXJuIHMuaXNzdWVzLnB1c2goe2NvZGU6InRvb19zbWFsbCIsbWluaW11bTpkLGluY2x1c2l2ZTohMCxpbnB1dDphLGluc3Q6ZSxvcmlnaW46ImFycmF5In0pLHM7YS5sZW5ndGg+bi5sZW5ndGgmJnMuaXNzdWVzLnB1c2goe2NvZGU6InRvb19iaWciLG1heGltdW06bi5sZW5ndGgsaW5jbHVzaXZlOiEwLGlucHV0OmEsaW5zdDplLG9yaWdpbjoiYXJyYXkifSl9Y29uc3QgcD1uZXcgQXJyYXkobi5sZW5ndGgpLGg9dC5yZXN0P3I/LmFib3J0RWFybHk6dm9pZCAwO2xldCBiPSExO2ZvcihsZXQgJD0wOyQ8bi5sZW5ndGg7JCsrKXtjb25zdCBrPW5bJF0uX3pvZC5ydW4oe3ZhbHVlOmFbJF0saXNzdWVzOltdfSxyKTtrIGluc3RhbmNlb2YgUHJvbWlzZT9pLnB1c2goay50aGVuKFQ9PntwWyRdPVR9KSk6KHBbJF09ayxoJiYhYiYmay5pc3N1ZXMubGVuZ3RoJiYoYj1UZShrKSkpfWlmKHQucmVzdCYmIWIpe2xldCAkPW4ubGVuZ3RoLTE7Y29uc3Qgaz1hLnNsaWNlKG4ubGVuZ3RoKTtsZXQgVD1zLmlzc3Vlcy5sZW5ndGg7Zm9yKGNvbnN0IHggb2Ygayl7aWYoaCYmcy5pc3N1ZXMubGVuZ3RoIT09VCl7aWYoVGUocyxUKSlicmVhaztUPXMuaXNzdWVzLmxlbmd0aH0kKys7Y29uc3Qgej10LnJlc3QuX3pvZC5ydW4oe3ZhbHVlOngsaXNzdWVzOltdfSxyKTt6IGluc3RhbmNlb2YgUHJvbWlzZT9pLnB1c2goei50aGVuKEk9Pnp1KEkscywkKSkpOnp1KHoscywkKX19cmV0dXJuIGkubGVuZ3RoP1Byb21pc2UuYWxsKGkpLnRoZW4oKCk9Pnh1KHAscyxuLGEsdSkpOnh1KHAscyxuLGEsdSl9fSk7ZnVuY3Rpb24gVHUoZSx0KXtmb3IobGV0IG49ZS5sZW5ndGgtMTtuPj0wO24tLSlpZighKHQ9PT0ib3B0aW4iP2Vbbl0uX3pvZC5vcHRpbiE9PXZvaWQgMDplW25dLl96b2Qub3B0b3V0PT09Im9wdGlvbmFsIikpcmV0dXJuIG4rMTtyZXR1cm4gMH1mdW5jdGlvbiB6dShlLHQsbil7ZS5pc3N1ZXMubGVuZ3RoJiZ0Lmlzc3Vlcy5wdXNoKC4uLlJlKG4sZS5pc3N1ZXMpKSx0LnZhbHVlW25dPWUudmFsdWV9ZnVuY3Rpb24geHUoZSx0LG4sbyxzKXtmb3IobGV0IHI9MDtyPG4ubGVuZ3RoO3IrKyl7Y29uc3QgYT1lW3JdLGk9cjxvLmxlbmd0aDtpZighaSYmcj49cyYmbltyXS5fem9kLm9wdGluPT09Im9wdGlvbmFsIil7dC52YWx1ZS5sZW5ndGg9cjticmVha31pZihhLmlzc3Vlcy5sZW5ndGgpe2lmKCFpJiZyPj1zKXt0LnZhbHVlLmxlbmd0aD1yO2JyZWFrfXQuaXNzdWVzLnB1c2goLi4uUmUocixhLmlzc3VlcykpfXQudmFsdWVbcl09YS52YWx1ZX1mb3IobGV0IHI9dC52YWx1ZS5sZW5ndGgtMTtyPj1vLmxlbmd0aCYmKG5bcl0uX3pvZC5vcHRvdXQ9PT0ib3B0aW9uYWwiJiZ0LnZhbHVlW3JdPT09dm9pZCAwKTtyLS0pdC52YWx1ZS5sZW5ndGg9cjtyZXR1cm4gdH1jb25zdCBKaD1tKCIkWm9kUmVjb3JkIiwoZSx0KT0+e04uaW5pdChlLHQpO2NvbnN0IG49d2UubWVtb2l6ZXI7bj8uYXR0YWNoKGUpLGUuX3pvZC5wYXJzZT0obyxzKT0+e2NvbnN0IHI9by52YWx1ZTtpZighaXQocikpcmV0dXJuIG8uaXNzdWVzLnB1c2goe2V4cGVjdGVkOiJyZWNvcmQiLGNvZGU6ImludmFsaWRfdHlwZSIsaW5wdXQ6cixpbnN0OmV9KSxvO2NvbnN0IGE9W10saT10LmtleVR5cGUuX3pvZC52YWx1ZXM7aWYoaSYmIXQucGFydGlhbCl7by52YWx1ZT1uP24uYWxsb2MoZSxvLHt9LHMpOnt9O2NvbnN0IGQ9bmV3IFNldDtmb3IoY29uc3QgcCBvZiBpKWlmKHR5cGVvZiBwPT0ic3RyaW5nInx8dHlwZW9mIHA9PSJudW1iZXIifHx0eXBlb2YgcD09InN5bWJvbCIpe2lmKGQuYWRkKHR5cGVvZiBwPT0ibnVtYmVyIj9wLnRvU3RyaW5nKCk6cCkscD09PSJfX3Byb3RvX18iKWNvbnRpbnVlO2NvbnN0IGg9dC5rZXlUeXBlLl96b2QucnVuKHt2YWx1ZTpwLGlzc3VlczpbXX0scyk7aWYoaCBpbnN0YW5jZW9mIFByb21pc2UpdGhyb3cgbmV3IEVycm9yKCJBc3luYyBzY2hlbWFzIG5vdCBzdXBwb3J0ZWQgaW4gb2JqZWN0IGtleXMgY3VycmVudGx5Iik7aWYoaC5pc3N1ZXMubGVuZ3RoKXtvLmlzc3Vlcy5wdXNoKHtjb2RlOiJpbnZhbGlkX2tleSIsb3JpZ2luOiJyZWNvcmQiLGlzc3VlczpoLmlzc3Vlcy5tYXAoaz0+amUoayxzLGRlKCkpKSxpbnB1dDpwLHBhdGg6W3BdLGluc3Q6ZX0pO2NvbnRpbnVlfWNvbnN0IGI9aC52YWx1ZTtpZihiPT09Il9fcHJvdG9fXyIpY29udGludWU7Y29uc3QgJD10LnZhbHVlVHlwZS5fem9kLnJ1bih7dmFsdWU6cltwXSxpc3N1ZXM6W119LHMpOyQgaW5zdGFuY2VvZiBQcm9taXNlP2EucHVzaCgkLnRoZW4oaz0+e2suaXNzdWVzLmxlbmd0aCYmby5pc3N1ZXMucHVzaCguLi5SZShwLGsuaXNzdWVzKSksby52YWx1ZVtiXT1rLnZhbHVlfSkpOigkLmlzc3Vlcy5sZW5ndGgmJm8uaXNzdWVzLnB1c2goLi4uUmUocCwkLmlzc3VlcykpLG8udmFsdWVbYl09JC52YWx1ZSl9bGV0IHU7Zm9yKGNvbnN0IHAgaW4gcilpZighZC5oYXMocCkpaWYodC5tb2RlPT09Imxvb3NlIil7aWYocD09PSJfX3Byb3RvX18iKWNvbnRpbnVlO28udmFsdWVbcF09cltwXX1lbHNlIHU9dT8/W10sdS5wdXNoKHApO3UmJnUubGVuZ3RoPjAmJm8uaXNzdWVzLnB1c2goe2NvZGU6InVucmVjb2duaXplZF9rZXlzIixpbnB1dDpyLGluc3Q6ZSxrZXlzOnUsY29udGludWU6ITB9KX1lbHNle28udmFsdWU9bj9uLmFsbG9jKGUsbyx7fSxzKTp7fTtsZXQgZDtmb3IoY29uc3QgdSBvZiBSZWZsZWN0Lm93bktleXMocikpe2lmKHU9PT0iX19wcm90b19fInx8IU9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChyLHUpKWNvbnRpbnVlO2xldCBwPXQua2V5VHlwZS5fem9kLnJ1bih7dmFsdWU6dSxpc3N1ZXM6W119LHMpO2lmKHAgaW5zdGFuY2VvZiBQcm9taXNlKXRocm93IG5ldyBFcnJvcigiQXN5bmMgc2NoZW1hcyBub3Qgc3VwcG9ydGVkIGluIG9iamVjdCBrZXlzIGN1cnJlbnRseSIpO2lmKHR5cGVvZiB1PT0ic3RyaW5nIiYmcXMudGVzdCh1KSYmcC5pc3N1ZXMubGVuZ3RoKXtjb25zdCBrPXQua2V5VHlwZS5fem9kLnJ1bih7dmFsdWU6TnVtYmVyKHUpLGlzc3VlczpbXX0scyk7aWYoayBpbnN0YW5jZW9mIFByb21pc2UpdGhyb3cgbmV3IEVycm9yKCJBc3luYyBzY2hlbWFzIG5vdCBzdXBwb3J0ZWQgaW4gb2JqZWN0IGtleXMgY3VycmVudGx5Iik7ay5pc3N1ZXMubGVuZ3RoPT09MCYmKHA9ayl9aWYocC5pc3N1ZXMubGVuZ3RoKXt0Lm1vZGU9PT0ibG9vc2UiP28udmFsdWVbdV09clt1XTppPyhkPWQ/P1tdLGQucHVzaCh1KSk6by5pc3N1ZXMucHVzaCh7Y29kZToiaW52YWxpZF9rZXkiLG9yaWdpbjoicmVjb3JkIixpc3N1ZXM6cC5pc3N1ZXMubWFwKGs9PmplKGsscyxkZSgpKSksaW5wdXQ6dSxwYXRoOlt1XSxpbnN0OmV9KTtjb250aW51ZX1jb25zdCBiPXAudmFsdWU7aWYoYj09PSJfX3Byb3RvX18iKWNvbnRpbnVlO2NvbnN0ICQ9dC52YWx1ZVR5cGUuX3pvZC5ydW4oe3ZhbHVlOnJbdV0saXNzdWVzOltdfSxzKTskIGluc3RhbmNlb2YgUHJvbWlzZT9hLnB1c2goJC50aGVuKGs9PntrLmlzc3Vlcy5sZW5ndGgmJm8uaXNzdWVzLnB1c2goLi4uUmUodSxrLmlzc3VlcykpLG8udmFsdWVbYl09ay52YWx1ZX0pKTooJC5pc3N1ZXMubGVuZ3RoJiZvLmlzc3Vlcy5wdXNoKC4uLlJlKHUsJC5pc3N1ZXMpKSxvLnZhbHVlW2JdPSQudmFsdWUpfWQmJmQubGVuZ3RoPjAmJm8uaXNzdWVzLnB1c2goe2NvZGU6InVucmVjb2duaXplZF9rZXlzIixpbnB1dDpyLGluc3Q6ZSxrZXlzOmQsY29udGludWU6ITB9KX1yZXR1cm4gYS5sZW5ndGg/UHJvbWlzZS5hbGwoYSkudGhlbigoKT0+byk6b319KSxLaD1tKCIkWm9kTWFwIiwoZSx0KT0+e04uaW5pdChlLHQpO2NvbnN0IG49d2UubWVtb2l6ZXI7bj8uYXR0YWNoKGUpLGUuX3pvZC5wYXJzZT0obyxzKT0+e2NvbnN0IHI9by52YWx1ZTtpZighKHIgaW5zdGFuY2VvZiBNYXApKXJldHVybiBvLmlzc3Vlcy5wdXNoKHtleHBlY3RlZDoibWFwIixjb2RlOiJpbnZhbGlkX3R5cGUiLGlucHV0OnIsaW5zdDplfSksbztjb25zdCBhPVtdO28udmFsdWU9bj9uLmFsbG9jKGUsbyxuZXcgTWFwLHMpOm5ldyBNYXA7Y29uc3QgaT1zPy5hYm9ydEVhcmx5O2xldCBkPW8uaXNzdWVzLmxlbmd0aDtmb3IoY29uc3RbdSxwXW9mIHIpe2lmKGkmJm8uaXNzdWVzLmxlbmd0aCE9PWQpe2lmKFRlKG8sZCkpYnJlYWs7ZD1vLmlzc3Vlcy5sZW5ndGh9Y29uc3QgaD10LmtleVR5cGUuX3pvZC5ydW4oe3ZhbHVlOnUsaXNzdWVzOltdfSxzKSxiPXQudmFsdWVUeXBlLl96b2QucnVuKHt2YWx1ZTpwLGlzc3VlczpbXX0scyk7aCBpbnN0YW5jZW9mIFByb21pc2V8fGIgaW5zdGFuY2VvZiBQcm9taXNlP2EucHVzaChQcm9taXNlLmFsbChbaCxiXSkudGhlbigoWyQsa10pPT57SXUoJCxrLG8sdSxyLGUscyl9KSk6SXUoaCxiLG8sdSxyLGUscyl9cmV0dXJuIGEubGVuZ3RoP1Byb21pc2UuYWxsKGEpLnRoZW4oKCk9Pm8pOm99fSk7ZnVuY3Rpb24gSXUoZSx0LG4sbyxzLHIsYSl7ZS5pc3N1ZXMubGVuZ3RoJiYoY3MuaGFzKHR5cGVvZiBvKT9uLmlzc3Vlcy5wdXNoKC4uLlJlKG8sZS5pc3N1ZXMpKTpuLmlzc3Vlcy5wdXNoKHtjb2RlOiJpbnZhbGlkX2tleSIsb3JpZ2luOiJtYXAiLGlucHV0OnMsaW5zdDpyLGlzc3VlczplLmlzc3Vlcy5tYXAoaT0+amUoaSxhLGRlKCkpKX0pKSx0Lmlzc3Vlcy5sZW5ndGgmJihjcy5oYXModHlwZW9mIG8pP24uaXNzdWVzLnB1c2goLi4uUmUobyx0Lmlzc3VlcykpOm4uaXNzdWVzLnB1c2goe29yaWdpbjoibWFwIixjb2RlOiJpbnZhbGlkX2VsZW1lbnQiLGlucHV0OnMsaW5zdDpyLGtleTpvLGlzc3Vlczp0Lmlzc3Vlcy5tYXAoaT0+amUoaSxhLGRlKCkpKX0pKSxuLnZhbHVlLnNldChlLnZhbHVlLHQudmFsdWUpfWNvbnN0IEdoPW0oIiRab2RTZXQiLChlLHQpPT57Ti5pbml0KGUsdCk7Y29uc3Qgbj13ZS5tZW1vaXplcjtuPy5hdHRhY2goZSksZS5fem9kLnBhcnNlPShvLHMpPT57Y29uc3Qgcj1vLnZhbHVlO2lmKCEociBpbnN0YW5jZW9mIFNldCkpcmV0dXJuIG8uaXNzdWVzLnB1c2goe2lucHV0OnIsaW5zdDplLGV4cGVjdGVkOiJzZXQiLGNvZGU6ImludmFsaWRfdHlwZSJ9KSxvO2NvbnN0IGE9W107by52YWx1ZT1uP24uYWxsb2MoZSxvLG5ldyBTZXQscyk6bmV3IFNldDtjb25zdCBpPXM/LmFib3J0RWFybHk7bGV0IGQ9by5pc3N1ZXMubGVuZ3RoO2Zvcihjb25zdCB1IG9mIHIpe2lmKGkmJm8uaXNzdWVzLmxlbmd0aCE9PWQpe2lmKFRlKG8sZCkpYnJlYWs7ZD1vLmlzc3Vlcy5sZW5ndGh9Y29uc3QgcD10LnZhbHVlVHlwZS5fem9kLnJ1bih7dmFsdWU6dSxpc3N1ZXM6W119LHMpO3AgaW5zdGFuY2VvZiBQcm9taXNlP2EucHVzaChwLnRoZW4oaD0+QXUoaCxvKSkpOkF1KHAsbyl9cmV0dXJuIGEubGVuZ3RoP1Byb21pc2UuYWxsKGEpLnRoZW4oKCk9Pm8pOm99fSk7ZnVuY3Rpb24gQXUoZSx0KXtlLmlzc3Vlcy5sZW5ndGgmJnQuaXNzdWVzLnB1c2goLi4uZS5pc3N1ZXMpLHQudmFsdWUuYWRkKGUudmFsdWUpfWNvbnN0IFloPW0oIiRab2RFbnVtIiwoZSx0KT0+e04uaW5pdChlLHQpO2NvbnN0IG49c2kodC5lbnRyaWVzKSxvPW5ldyBTZXQobik7ZS5fem9kLnZhbHVlcz1vLEIoZSwicGF0dGVybiIscz0+e2NvbnN0IHI9c2kocy5kZWYuZW50cmllcykuZmlsdGVyKGE9PmNzLmhhcyh0eXBlb2YgYSkpO3JldHVybiBuZXcgUmVnRXhwKHIubGVuZ3RoP2BeKCR7ci5tYXAoYT0+SmUoYS50b1N0cmluZygpKSkuam9pbigifCIpfSkkYDoiXlteXFxzXFxTXSQiKX0pLGUuX3pvZC5wYXJzZT0ocyxyKT0+e2NvbnN0IGE9cy52YWx1ZTtyZXR1cm4gby5oYXMoYSl8fHMuaXNzdWVzLnB1c2goe2NvZGU6ImludmFsaWRfdmFsdWUiLHZhbHVlczpuLGlucHV0OmEsaW5zdDplfSksc319KSxRaD1tKCIkWm9kTGl0ZXJhbCIsKGUsdCk9PntOLmluaXQoZSx0KTtjb25zdCBuPW5ldyBTZXQodC52YWx1ZXMpO2UuX3pvZC52YWx1ZXM9bixCKGUsInBhdHRlcm4iLG89Pntjb25zdCBzPW8uZGVmLnZhbHVlcztyZXR1cm4gbmV3IFJlZ0V4cChzLmxlbmd0aD9gXigke3MubWFwKHI9PnR5cGVvZiByPT0ic3RyaW5nIj9KZShyKTpyP0plKHIudG9TdHJpbmcoKSk6U3RyaW5nKHIpKS5qb2luKCJ8Iil9KSRgOiJeW15cXHNcXFNdJCIpfSksZS5fem9kLnBhcnNlPShvLHMpPT57Y29uc3Qgcj1vLnZhbHVlO3JldHVybiBuLmhhcyhyKXx8by5pc3N1ZXMucHVzaCh7Y29kZToiaW52YWxpZF92YWx1ZSIsdmFsdWVzOnQudmFsdWVzLGlucHV0OnIsaW5zdDplfSksb319KSxYaD1tKCIkWm9kRmlsZSIsKGUsdCk9PntOLmluaXQoZSx0KSxlLl96b2QucGFyc2U9KG4sbyk9Pntjb25zdCBzPW4udmFsdWU7cmV0dXJuIHMgaW5zdGFuY2VvZiBGaWxlfHxuLmlzc3Vlcy5wdXNoKHtleHBlY3RlZDoiZmlsZSIsY29kZToiaW52YWxpZF90eXBlIixpbnB1dDpzLGluc3Q6ZX0pLG59fSksZW09bSgiJFpvZFRyYW5zZm9ybSIsKGUsdCk9PntOLmluaXQoZSx0KSxlLl96b2Qub3B0aW49Im9wdGlvbmFsIix3ZS5tZW1vaXplcj8uZ3VhcmQoZSksZS5fem9kLnBhcnNlPShuLG8pPT57aWYoby5kaXJlY3Rpb249PT0iYmFja3dhcmQiKXRocm93IG5ldyBPcyhlLmNvbnN0cnVjdG9yLm5hbWUpO2NvbnN0IHM9dC50cmFuc2Zvcm0obi52YWx1ZSxuKTtpZihvLmFzeW5jKXJldHVybihzIGluc3RhbmNlb2YgUHJvbWlzZT9zOlByb21pc2UucmVzb2x2ZShzKSkudGhlbihhPT4obi52YWx1ZT1hLG4pKTtpZihzIGluc3RhbmNlb2YgUHJvbWlzZSl0aHJvdyBuZXcgcnQ7cmV0dXJuIG4udmFsdWU9cyxufX0pO2Z1bmN0aW9uIEN1KGUsdCl7cmV0dXJuIGUudmFsdWU9dC5pc3N1ZXMubGVuZ3RoP3ZvaWQgMDp0LnZhbHVlLGV9Y29uc3QgcGE9bSgiJFpvZE9wdGlvbmFsIiwoZSx0KT0+e04uaW5pdChlLHQpLEIoZSwib3B0aW4iLG49Pm4uZGVmLmlubmVyVHlwZS5fem9kLm9wdGluPT09ImRlZmF1bHRlZCI/ImRlZmF1bHRlZCI6Im9wdGlvbmFsIiksZS5fem9kLm9wdG91dD0ib3B0aW9uYWwiLEIoZSwidmFsdWVzIixuPT57Y29uc3Qgbz1uLmRlZi5pbm5lclR5cGUuX3pvZC52YWx1ZXM7cmV0dXJuIG8/bmV3IFNldChbLi4ubyx2b2lkIDBdKTp2b2lkIDB9KSxCKGUsInBhdHRlcm4iLG49Pntjb25zdCBvPW4uZGVmLmlubmVyVHlwZS5fem9kLnBhdHRlcm47cmV0dXJuIG8/bmV3IFJlZ0V4cChgXigke3N0KG8uc291cmNlKX0pPyRgKTp2b2lkIDB9KSxlLl96b2QucGFyc2U9KG4sbyk9PntpZihuLnZhbHVlPT09dm9pZCAwKXtpZih0LmlubmVyVHlwZS5fem9kLm9wdGluIT09ImRlZmF1bHRlZCIpcmV0dXJuIG47Y29uc3Qgcz10LmlubmVyVHlwZS5fem9kLnJ1bih7dmFsdWU6bi52YWx1ZSxpc3N1ZXM6W119LG8pO3JldHVybiBzIGluc3RhbmNlb2YgUHJvbWlzZT9zLnRoZW4ocj0+Q3UobixyKSk6Q3UobixzKX1yZXR1cm4gdC5pbm5lclR5cGUuX3pvZC5ydW4obixvKX19KSx0bT1tKCIkWm9kRXhhY3RPcHRpb25hbCIsKGUsdCk9PntwYS5pbml0KGUsdCksQihlLCJ2YWx1ZXMiLG49Pm4uZGVmLmlubmVyVHlwZS5fem9kLnZhbHVlcyksQihlLCJwYXR0ZXJuIixuPT5uLmRlZi5pbm5lclR5cGUuX3pvZC5wYXR0ZXJuKSxlLl96b2QucGFyc2U9KG4sbyk9PnQuaW5uZXJUeXBlLl96b2QucnVuKG4sbyl9KSxubT1tKCIkWm9kTnVsbGFibGUiLChlLHQpPT57Ti5pbml0KGUsdCksQihlLCJvcHRpbiIsbj0+bi5kZWYuaW5uZXJUeXBlLl96b2Qub3B0aW4pLEIoZSwib3B0b3V0IixuPT5uLmRlZi5pbm5lclR5cGUuX3pvZC5vcHRvdXQpLEIoZSwicGF0dGVybiIsbj0+e2NvbnN0IG89bi5kZWYuaW5uZXJUeXBlLl96b2QucGF0dGVybjtyZXR1cm4gbz9uZXcgUmVnRXhwKGBeKCR7c3Qoby5zb3VyY2UpfXxudWxsKSRgKTp2b2lkIDB9KSxCKGUsInZhbHVlcyIsbj0+bi5kZWYuaW5uZXJUeXBlLl96b2QudmFsdWVzP25ldyBTZXQoWy4uLm4uZGVmLmlubmVyVHlwZS5fem9kLnZhbHVlcyxudWxsXSk6dm9pZCAwKSxlLl96b2QucGFyc2U9KG4sbyk9Pm4udmFsdWU9PT1udWxsP246dC5pbm5lclR5cGUuX3pvZC5ydW4obixvKX0pLG9tPW0oIiRab2REZWZhdWx0IiwoZSx0KT0+e04uaW5pdChlLHQpLGUuX3pvZC5vcHRpbj0iZGVmYXVsdGVkIixCKGUsInZhbHVlcyIsbj0+bi5kZWYuaW5uZXJUeXBlLl96b2QudmFsdWVzKSxlLl96b2QucGFyc2U9KG4sbyk9PntpZihvLmRpcmVjdGlvbj09PSJiYWNrd2FyZCIpcmV0dXJuIHQuaW5uZXJUeXBlLl96b2QucnVuKG4sbyk7aWYobi52YWx1ZT09PXZvaWQgMClyZXR1cm4gbi52YWx1ZT10LmRlZmF1bHRWYWx1ZSxuO2NvbnN0IHM9dC5pbm5lclR5cGUuX3pvZC5ydW4obixvKTtyZXR1cm4gcyBpbnN0YW5jZW9mIFByb21pc2U/cy50aGVuKHI9PlB1KHIsdCkpOlB1KHMsdCl9fSk7ZnVuY3Rpb24gUHUoZSx0KXtyZXR1cm4gZS52YWx1ZT09PXZvaWQgMCYmKGUudmFsdWU9dC5kZWZhdWx0VmFsdWUpLGV9Y29uc3Qgc209bSgiJFpvZFByZWZhdWx0IiwoZSx0KT0+e04uaW5pdChlLHQpLGUuX3pvZC5vcHRpbj0iZGVmYXVsdGVkIixCKGUsInZhbHVlcyIsbj0+bi5kZWYuaW5uZXJUeXBlLl96b2QudmFsdWVzKSxlLl96b2QucGFyc2U9KG4sbyk9PihvLmRpcmVjdGlvbj09PSJiYWNrd2FyZCJ8fG4udmFsdWU9PT12b2lkIDAmJihuLnZhbHVlPXQuZGVmYXVsdFZhbHVlKSx0LmlubmVyVHlwZS5fem9kLnJ1bihuLG8pKX0pLHJtPW0oIiRab2ROb25PcHRpb25hbCIsKGUsdCk9PntOLmluaXQoZSx0KSxCKGUsInZhbHVlcyIsbj0+e2NvbnN0IG89bi5kZWYuaW5uZXJUeXBlLl96b2QudmFsdWVzO3JldHVybiBvP25ldyBTZXQoWy4uLm9dLmZpbHRlcihzPT5zIT09dm9pZCAwKSk6dm9pZCAwfSksZS5fem9kLnBhcnNlPShuLG8pPT57Y29uc3Qgcz10LmlubmVyVHlwZS5fem9kLnJ1bihuLG8pO3JldHVybiBzIGluc3RhbmNlb2YgUHJvbWlzZT9zLnRoZW4ocj0+RXUocixlKSk6RXUocyxlKX19KTtmdW5jdGlvbiBFdShlLHQpe3JldHVybiFlLmlzc3Vlcy5sZW5ndGgmJmUudmFsdWU9PT12b2lkIDAmJmUuaXNzdWVzLnB1c2goe2NvZGU6ImludmFsaWRfdHlwZSIsZXhwZWN0ZWQ6Im5vbm9wdGlvbmFsIixpbnB1dDplLnZhbHVlLGluc3Q6dH0pLGV9Y29uc3QgaW09bSgiJFpvZFN1Y2Nlc3MiLChlLHQpPT57Ti5pbml0KGUsdCksZS5fem9kLnBhcnNlPShuLG8pPT57aWYoby5kaXJlY3Rpb249PT0iYmFja3dhcmQiKXRocm93IG5ldyBPcygiWm9kU3VjY2VzcyIpO2NvbnN0IHM9dC5pbm5lclR5cGUuX3pvZC5ydW4obixvKTtyZXR1cm4gcyBpbnN0YW5jZW9mIFByb21pc2U/cy50aGVuKHI9PihuLnZhbHVlPXIuaXNzdWVzLmxlbmd0aD09PTAsbikpOihuLnZhbHVlPXMuaXNzdWVzLmxlbmd0aD09PTAsbil9fSk7ZnVuY3Rpb24gT3UoZSx0LG4sbyl7cmV0dXJuIHQuaXNzdWVzLmxlbmd0aD8oZS52YWx1ZT1uLmNhdGNoVmFsdWUoey4uLnQsdmFsdWU6ZS52YWx1ZSxlcnJvcjp7aXNzdWVzOnQuaXNzdWVzLm1hcChzPT5qZShzLG8sZGUoKSkpfSxpbnB1dDplLnZhbHVlfSksZSk6KGUudmFsdWU9dC52YWx1ZSx0Lm1lbW8mJihlLm1lbW89ITApLGUpfWNvbnN0IGFtPW0oIiRab2RDYXRjaCIsKGUsdCk9PntOLmluaXQoZSx0KSxCKGUsIm9wdGluIixuPT5uLmRlZi5pbm5lclR5cGUuX3pvZC5vcHRpbj09PSJkZWZhdWx0ZWQiPyJkZWZhdWx0ZWQiOiJvcHRpb25hbCIpLEIoZSwib3B0b3V0IixuPT5uLmRlZi5pbm5lclR5cGUuX3pvZC5vcHRvdXQpLEIoZSwidmFsdWVzIixuPT5uLmRlZi5pbm5lclR5cGUuX3pvZC52YWx1ZXMpLGUuX3pvZC5wYXJzZT0obixvKT0+e2lmKG8uZGlyZWN0aW9uPT09ImJhY2t3YXJkIilyZXR1cm4gdC5pbm5lclR5cGUuX3pvZC5ydW4obixvKTtjb25zdCBzPXQuaW5uZXJUeXBlLl96b2QucnVuKHt2YWx1ZTpuLnZhbHVlLGlzc3VlczpbXX0sbyk7cmV0dXJuIHMgaW5zdGFuY2VvZiBQcm9taXNlP3MudGhlbihyPT5PdShuLHIsdCxvKSk6T3UobixzLHQsbyl9fSksY209bSgiJFpvZE5hTiIsKGUsdCk9PntOLmluaXQoZSx0KSxlLl96b2QucGFyc2U9KG4sbyk9PigodHlwZW9mIG4udmFsdWUhPSJudW1iZXIifHwhTnVtYmVyLmlzTmFOKG4udmFsdWUpKSYmbi5pc3N1ZXMucHVzaCh7aW5wdXQ6bi52YWx1ZSxpbnN0OmUsZXhwZWN0ZWQ6Im5hbiIsY29kZToiaW52YWxpZF90eXBlIn0pLG4pfSksaGE9bSgiJFpvZFBpcGUiLChlLHQpPT57Ti5pbml0KGUsdCksQihlLCJ2YWx1ZXMiLG49Pm4uZGVmLmluLl96b2QudmFsdWVzKSxCKGUsIm9wdGluIixuPT5uLmRlZi5pbi5fem9kLm9wdGluKSxCKGUsIm9wdG91dCIsbj0+bi5kZWYub3V0Ll96b2Qub3B0b3V0KSxCKGUsInByb3BWYWx1ZXMiLG49Pm4uZGVmLmluLl96b2QucHJvcFZhbHVlcyksZS5fem9kLnBhcnNlPShuLG8pPT57aWYoby5kaXJlY3Rpb249PT0iYmFja3dhcmQiKXtjb25zdCByPXQub3V0Ll96b2QucnVuKG4sbyk7cmV0dXJuIHIgaW5zdGFuY2VvZiBQcm9taXNlP3IudGhlbihhPT5LbyhhLHQuaW4sbykpOktvKHIsdC5pbixvKX1jb25zdCBzPXQuaW4uX3pvZC5ydW4obixvKTtyZXR1cm4gcyBpbnN0YW5jZW9mIFByb21pc2U/cy50aGVuKHI9PktvKHIsdC5vdXQsbykpOktvKHMsdC5vdXQsbyl9fSk7ZnVuY3Rpb24gS28oZSx0LG4pe3JldHVybiBlLmlzc3Vlcy5zb21lKG89Pm8uY29kZSE9PSJ1bnJlY29nbml6ZWRfa2V5cyIpPyhlLmFib3J0ZWQ9ITAsZSk6dC5fem9kLnJ1bih7dmFsdWU6ZS52YWx1ZSxpc3N1ZXM6ZS5pc3N1ZXN9LG4pfWNvbnN0IG1hPW0oIiRab2RDb2RlYyIsKGUsdCk9PntOLmluaXQoZSx0KSxCKGUsInZhbHVlcyIsbj0+bi5kZWYuaW4uX3pvZC52YWx1ZXMpLEIoZSwib3B0aW4iLG49Pm4uZGVmLmluLl96b2Qub3B0aW4pLEIoZSwib3B0b3V0IixuPT5uLmRlZi5vdXQuX3pvZC5vcHRvdXQpLEIoZSwicHJvcFZhbHVlcyIsbj0+bi5kZWYuaW4uX3pvZC5wcm9wVmFsdWVzKSxlLl96b2QucGFyc2U9KG4sbyk9PntpZigoby5kaXJlY3Rpb258fCJmb3J3YXJkIik9PT0iZm9yd2FyZCIpe2NvbnN0IHI9dC5pbi5fem9kLnJ1bihuLG8pO3JldHVybiByIGluc3RhbmNlb2YgUHJvbWlzZT9yLnRoZW4oYT0+R28oYSx0LG8pKTpHbyhyLHQsbyl9ZWxzZXtjb25zdCByPXQub3V0Ll96b2QucnVuKG4sbyk7cmV0dXJuIHIgaW5zdGFuY2VvZiBQcm9taXNlP3IudGhlbihhPT5HbyhhLHQsbykpOkdvKHIsdCxvKX19fSk7ZnVuY3Rpb24gR28oZSx0LG4pe2lmKGUuaXNzdWVzLmxlbmd0aClyZXR1cm4gZS5hYm9ydGVkPSEwLGU7aWYoKG4uZGlyZWN0aW9ufHwiZm9yd2FyZCIpPT09ImZvcndhcmQiKXtjb25zdCBzPXQudHJhbnNmb3JtKGUudmFsdWUsZSk7cmV0dXJuIHMgaW5zdGFuY2VvZiBQcm9taXNlP3MudGhlbihyPT5ZbyhlLHIsdC5vdXQsbikpOllvKGUscyx0Lm91dCxuKX1lbHNle2NvbnN0IHM9dC5yZXZlcnNlVHJhbnNmb3JtKGUudmFsdWUsZSk7cmV0dXJuIHMgaW5zdGFuY2VvZiBQcm9taXNlP3MudGhlbihyPT5ZbyhlLHIsdC5pbixuKSk6WW8oZSxzLHQuaW4sbil9fWZ1bmN0aW9uIFlvKGUsdCxuLG8pe3JldHVybiBlLmlzc3Vlcy5sZW5ndGg/KGUuYWJvcnRlZD0hMCxlKTpuLl96b2QucnVuKHt2YWx1ZTp0LGlzc3VlczplLmlzc3Vlc30sbyl9Y29uc3QgbG09bSgiJFpvZFByZXByb2Nlc3MiLChlLHQpPT57aGEuaW5pdChlLHQpfSksdW09bSgiJFpvZFJlYWRvbmx5IiwoZSx0KT0+e04uaW5pdChlLHQpLEIoZSwicHJvcFZhbHVlcyIsbj0+bi5kZWYuaW5uZXJUeXBlLl96b2QucHJvcFZhbHVlcyksQihlLCJ2YWx1ZXMiLG49Pm4uZGVmLmlubmVyVHlwZS5fem9kLnZhbHVlcyksQihlLCJvcHRpbiIsbj0+bi5kZWYuaW5uZXJUeXBlPy5fem9kPy5vcHRpbiksQihlLCJvcHRvdXQiLG49Pm4uZGVmLmlubmVyVHlwZT8uX3pvZD8ub3B0b3V0KSxlLl96b2QucGFyc2U9KG4sbyk9PntpZihvLmRpcmVjdGlvbj09PSJiYWNrd2FyZCIpcmV0dXJuIHQuaW5uZXJUeXBlLl96b2QucnVuKG4sbyk7Y29uc3Qgcz10LmlubmVyVHlwZS5fem9kLnJ1bihuLG8pO3JldHVybiBzIGluc3RhbmNlb2YgUHJvbWlzZT9zLnRoZW4oUnUpOlJ1KHMpfX0pO2Z1bmN0aW9uIFJ1KGUpe3JldHVybiBlLm1lbW98fChlLnZhbHVlPU9iamVjdC5mcmVlemUoZS52YWx1ZSkpLGV9ZnVuY3Rpb24gUWIoZSl7Y29uc3QgdD1lLl96b2QuZGVmO2xldCBuPXQucGF0dGVybixvPSEhdC5mb3JtYXQ/LmluY2x1ZGVzKCJpbnQiKSxzLHI7Zm9yKGNvbnN0IGkgb2YgdC5jaGVja3M/P1tdKXtjb25zdCBkPWkuX3pvZC5kZWY7ZC5wYXR0ZXJuJiYobj1kLnBhdHRlcm4pLG98fChvPSEhZC5mb3JtYXQ/LmluY2x1ZGVzKCJpbnQiKSk7Y29uc3QgdT1kLm1pbmltdW0/P2QubGVuZ3RoLHA9ZC5tYXhpbXVtPz9kLmxlbmd0aDt1IT09dm9pZCAwJiYocz09PXZvaWQgMHx8dT5zKSYmKHM9dSkscCE9PXZvaWQgMCYmKHI9PT12b2lkIDB8fHA8cikmJihyPXApfWlmKG4pcmV0dXJuIG4uc291cmNlO2lmKHMhPT12b2lkIDAmJnIhPT12b2lkIDAmJnM+cilyZXR1cm4iKD8hKSI7aWYocyE9PXZvaWQgMHx8ciE9PXZvaWQgMClyZXR1cm4gZnAoe21pbmltdW06cyxtYXhpbXVtOnJ9KS5zb3VyY2U7Y29uc3QgYT1lLl96b2QucGF0dGVybjtyZXR1cm4obyYmYT09PXFzP2JwOmEpPy5zb3VyY2V9ZnVuY3Rpb24gcGkoZSl7Y29uc3QgdD1lLl96b2QuZGVmLG49ZS5fem9kLnBhdHRlcm4/LnNvdXJjZSxvPXQuaW5uZXJUeXBlPz9lLl96b2QuaW5uZXJUeXBlO2lmKG8pe2NvbnN0IHM9by5fem9kLnBhdHRlcm4/LnNvdXJjZSxyPXBpKG8pO3JldHVybiBuJiZzJiZyJiZyIT09cz9uLnJlcGxhY2Uoc3QocyksKCk9PnN0KHIpKTpufWlmKHQub3B0aW9ucyl7Y29uc3Qgcz10Lm9wdGlvbnMubWFwKHBpKTtpZihzLmV2ZXJ5KEJvb2xlYW4pKXJldHVybmBeKCR7cy5tYXAocj0+c3QocikpLmpvaW4oInwiKX0pJGB9cmV0dXJuIFFiKGUpfWNvbnN0IGRtPW0oIiRab2RUZW1wbGF0ZUxpdGVyYWwiLChlLHQpPT57Ti5pbml0KGUsdCk7Y29uc3Qgbj1bXTtmb3IoY29uc3QgbyBvZiB0LnBhcnRzKWlmKHR5cGVvZiBvPT0ib2JqZWN0IiYmbyE9PW51bGwpe2NvbnN0IHM9cGkobyk7aWYoIXMpdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHRlbXBsYXRlIGxpdGVyYWwgcGFydCwgbm8gcGF0dGVybiBmb3VuZDogJHtbLi4uby5fem9kLnRyYWl0c10uc2hpZnQoKX1gKTtuLnB1c2goc3QocykpfWVsc2UgaWYobz09PW51bGx8fHlkLmhhcyh0eXBlb2Ygbykpbi5wdXNoKEplKGAke299YCkpO2Vsc2UgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHRlbXBsYXRlIGxpdGVyYWwgcGFydDogJHtvfWApO2UuX3pvZC5wYXR0ZXJuPW5ldyBSZWdFeHAoYF4ke24uam9pbigiIil9JGApLGUuX3pvZC5wYXJzZT0obyxzKT0+dHlwZW9mIG8udmFsdWUhPSJzdHJpbmciPyhvLmlzc3Vlcy5wdXNoKHtpbnB1dDpvLnZhbHVlLGluc3Q6ZSxleHBlY3RlZDoic3RyaW5nIixjb2RlOiJpbnZhbGlkX3R5cGUifSksbyk6KGUuX3pvZC5wYXR0ZXJuLmxhc3RJbmRleD0wLGUuX3pvZC5wYXR0ZXJuLnRlc3Qoby52YWx1ZSl8fG8uaXNzdWVzLnB1c2goe2lucHV0Om8udmFsdWUsaW5zdDplLGNvZGU6ImludmFsaWRfZm9ybWF0Iixmb3JtYXQ6dC5mb3JtYXQ/PyJ0ZW1wbGF0ZV9saXRlcmFsIixwYXR0ZXJuOmUuX3pvZC5wYXR0ZXJuLnNvdXJjZX0pLG8pfSkscG09bSgiJFpvZEZ1bmN0aW9uIiwoZSx0KT0+KE4uaW5pdChlLHQpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfZGVmIix7dmFsdWU6dH0pLGUuX3pvZC5kZWY9dCxlLmltcGxlbWVudD1uPT57aWYodHlwZW9mIG4hPSJmdW5jdGlvbiIpdGhyb3cgbmV3IEVycm9yKCJpbXBsZW1lbnQoKSBtdXN0IGJlIGNhbGxlZCB3aXRoIGEgZnVuY3Rpb24iKTtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGZ1bmN0aW9uKC4uLm8pe2NvbnN0IHM9ZS5fZGVmLmlucHV0P2NpKGUuX2RlZi5pbnB1dCxvKTpvLHI9UmVmbGVjdC5hcHBseShuLHRoaXMscyk7cmV0dXJuIGUuX2RlZi5vdXRwdXQ/Y2koZS5fZGVmLm91dHB1dCxyKTpyfSwiX3pvZCIse3ZhbHVlOmUuX3pvZCxlbnVtZXJhYmxlOiExfSl9LGUuaW1wbGVtZW50QXN5bmM9bj0+e2lmKHR5cGVvZiBuIT0iZnVuY3Rpb24iKXRocm93IG5ldyBFcnJvcigiaW1wbGVtZW50QXN5bmMoKSBtdXN0IGJlIGNhbGxlZCB3aXRoIGEgZnVuY3Rpb24iKTtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGFzeW5jIGZ1bmN0aW9uKC4uLm8pe2NvbnN0IHM9ZS5fZGVmLmlucHV0P2F3YWl0IGxpKGUuX2RlZi5pbnB1dCxvKTpvLHI9YXdhaXQgUmVmbGVjdC5hcHBseShuLHRoaXMscyk7cmV0dXJuIGUuX2RlZi5vdXRwdXQ/YXdhaXQgbGkoZS5fZGVmLm91dHB1dCxyKTpyfSwiX3pvZCIse3ZhbHVlOmUuX3pvZCxlbnVtZXJhYmxlOiExfSl9LGUuX3pvZC5wYXJzZT0obixvKT0+dHlwZW9mIG4udmFsdWUhPSJmdW5jdGlvbiI/KG4uaXNzdWVzLnB1c2goe2NvZGU6ImludmFsaWRfdHlwZSIsZXhwZWN0ZWQ6ImZ1bmN0aW9uIixpbnB1dDpuLnZhbHVlLGluc3Q6ZX0pLG4pOihlLl9kZWYub3V0cHV0JiZlLl9kZWYub3V0cHV0Ll96b2QuZGVmLnR5cGU9PT0icHJvbWlzZSI/bi52YWx1ZT1lLmltcGxlbWVudEFzeW5jKG4udmFsdWUpOm4udmFsdWU9ZS5pbXBsZW1lbnQobi52YWx1ZSksbiksZS5pbnB1dD0oLi4ubik9Pntjb25zdCBvPWUuY29uc3RydWN0b3I7cmV0dXJuIEFycmF5LmlzQXJyYXkoblswXSk/bmV3IG8oe3R5cGU6ImZ1bmN0aW9uIixpbnB1dDpuZXcgZGEoe3R5cGU6InR1cGxlIixpdGVtczpuWzBdLHJlc3Q6blsxXX0pLG91dHB1dDplLl9kZWYub3V0cHV0fSk6bmV3IG8oe3R5cGU6ImZ1bmN0aW9uIixpbnB1dDpuWzBdLG91dHB1dDplLl9kZWYub3V0cHV0fSl9LGUub3V0cHV0PW49Pntjb25zdCBvPWUuY29uc3RydWN0b3I7cmV0dXJuIG5ldyBvKHt0eXBlOiJmdW5jdGlvbiIsaW5wdXQ6ZS5fZGVmLmlucHV0LG91dHB1dDpufSl9LGUpKSxobT1tKCIkWm9kUHJvbWlzZSIsKGUsdCk9PntOLmluaXQoZSx0KSxlLl96b2QucGFyc2U9KG4sbyk9PlByb21pc2UucmVzb2x2ZShuLnZhbHVlKS50aGVuKHM9PnQuaW5uZXJUeXBlLl96b2QucnVuKHt2YWx1ZTpzLGlzc3VlczpbXX0sbykpfSksZmE9bSgiJFpvZExhenkiLChlLHQpPT57Ti5pbml0KGUsdCksbWQoZS5fem9kLCJpbm5lclR5cGUiLCgpPT57Y29uc3Qgbj10O3JldHVybiBuLl9jYWNoZWRJbm5lcnx8KG4uX2NhY2hlZElubmVyPXQuZ2V0dGVyKCkpLG4uX2NhY2hlZElubmVyfSksQihlLCJwYXR0ZXJuIixuPT5uLmlubmVyVHlwZT8uX3pvZD8ucGF0dGVybiksQihlLCJwcm9wVmFsdWVzIixuPT5uLmlubmVyVHlwZT8uX3pvZD8ucHJvcFZhbHVlcyksQihlLCJvcHRpbiIsbj0+bi5pbm5lclR5cGU/Ll96b2Q/Lm9wdGluPz92b2lkIDApLEIoZSwib3B0b3V0IixuPT5uLmlubmVyVHlwZT8uX3pvZD8ub3B0b3V0Pz92b2lkIDApLGUuX3pvZC5wYXJzZT0obixvKT0+ZS5fem9kLmlubmVyVHlwZS5fem9kLnJ1bihuLG8pfSksbW09bSgiJFpvZEN1c3RvbSIsKGUsdCk9PntvZS5pbml0KGUsdCksTi5pbml0KGUsdCksZS5fem9kLnBhcnNlPShuLG8pPT5uLGUuX3pvZC5jaGVjaz1uPT57Y29uc3Qgbz1uLnZhbHVlLHM9dC5mbihvKTtpZihzIGluc3RhbmNlb2YgUHJvbWlzZSlyZXR1cm4gcy50aGVuKHI9Pk51KHIsbixvLGUpKTtOdShzLG4sbyxlKX19KTtmdW5jdGlvbiBOdShlLHQsbixvKXtpZighZSl7Y29uc3Qgcz17Y29kZToiY3VzdG9tIixpbnB1dDpuLGluc3Q6byxwYXRoOlsuLi5vLl96b2QuZGVmLnBhdGg/P1tdXSxjb250aW51ZTohby5fem9kLmRlZi5hYm9ydH07by5fem9kLmRlZi5wYXJhbXMmJihzLnBhcmFtcz1vLl96b2QuZGVmLnBhcmFtcyksdC5pc3N1ZXMucHVzaChCdChzKSl9fWNsYXNzIGZtIGV4dGVuZHMgRXJyb3J7Y29uc3RydWN0b3IoKXtzdXBlcigiQ2Fubm90IHBhcnNlIGEgcmVmZXJlbmNlIGN5Y2xlIHRoYXQgY2xvc2VzIHRocm91Z2ggYSB0cmFuc2Zvcm0iKSx0aGlzLm5hbWU9IlpvZEN5Y2xpY0Vycm9yIn19Y29uc3QgaGk9In5tZW1vIixadT1bXTtmdW5jdGlvbiBnbShlKXtyZXR1cm4gZSE9PW51bGwmJnR5cGVvZiBlPT0ib2JqZWN0In1mdW5jdGlvbiBYcihlKXtyZXR1cm4gZS5tYXAodD0+dC5wYXRoP3suLi50LHBhdGg6dC5wYXRoLnNsaWNlKCl9OnsuLi50fSl9Y29uc3QgYm09bmV3IFdlYWtNYXAsUnQ9MCxzcz0xLHhuPTI7ZnVuY3Rpb24gSW4oZSx0LG4pe2NvbnN0IG89Ym0uZ2V0KGUpO2lmKG8hPT12b2lkIDApcmV0dXJuIG8/eG46UnQ7aWYodC5oYXMoZSkpcmV0dXJuIHhuO3QuYWRkKGUpO2xldCBzPVJ0O2NvbnN0IHI9cD0+e2lmKHMhPT14biYmcD8uX3pvZCl7Y29uc3QgaD1JbihwLHQsbik7aD5zJiYocz1oKX19LGE9KHAsaCk9PntsZXQgYj1SdDtmb3IoY29uc3QgJCBvZiBSZWZsZWN0Lm93bktleXMocCkpe2NvbnN0IGs9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihwLCQpO2lmKCFrLmVudW1lcmFibGUpY29udGludWU7Y29uc3QgVD1rLmdldD9zczprLnZhbHVlPy5fem9kP0luKGsudmFsdWUsdCxuKTpSdDtUPmImJihiPVQpfXJldHVybiBifSxpPXA9PntwPnMmJihzPXApfSxkPWUuX3pvZC5kZWY7c3dpdGNoKGQudHlwZSl7Y2FzZSJvYmplY3QiOntjb25zdCBwPXpzKGQpO2kocD9hKHApOnNzKSxyKGQuY2F0Y2hhbGwpO2JyZWFrfWNhc2UiYXJyYXkiOnIoZC5lbGVtZW50KTticmVhaztjYXNlInR1cGxlIjpmb3IoY29uc3QgcCBvZiBkLml0ZW1zKXIocCk7cihkLnJlc3QpO2JyZWFrO2Nhc2UicmVjb3JkIjpjYXNlIm1hcCI6cihkLmtleVR5cGUpLHIoZC52YWx1ZVR5cGUpO2JyZWFrO2Nhc2Uic2V0IjpyKGQudmFsdWVUeXBlKTticmVhaztjYXNlInVuaW9uIjpmb3IoY29uc3QgcCBvZiBkLm9wdGlvbnMpcihwKTticmVhaztjYXNlImludGVyc2VjdGlvbiI6cihkLmxlZnQpLHIoZC5yaWdodCk7YnJlYWs7Y2FzZSJvcHRpb25hbCI6Y2FzZSJudWxsYWJsZSI6Y2FzZSJkZWZhdWx0IjpjYXNlInByZWZhdWx0IjpjYXNlImNhdGNoIjpjYXNlInJlYWRvbmx5IjpjYXNlIm5vbm9wdGlvbmFsIjpjYXNlInByb21pc2UiOmNhc2Uic3VjY2VzcyI6cihkLmlubmVyVHlwZSk7YnJlYWs7Y2FzZSJwaXBlIjpyKGQuaW4pLHIoZC5vdXQpO2JyZWFrO2Nhc2UiZnVuY3Rpb24iOnIoZC5pbnB1dCkscihkLm91dHB1dCk7YnJlYWs7Y2FzZSJsYXp5Ijp7Y29uc3QgcD1kLl9jYWNoZWRJbm5lcj8/KG4/ZS5fem9kLmlubmVyVHlwZTp2b2lkIDApO2kocD9JbihwLHQsITEpOnNzKTticmVha31jYXNlInRlbXBsYXRlX2xpdGVyYWwiOmNhc2Uic3RyaW5nIjpjYXNlIm51bWJlciI6Y2FzZSJpbnQiOmNhc2UiYm9vbGVhbiI6Y2FzZSJiaWdpbnQiOmNhc2Uic3ltYm9sIjpjYXNlInVuZGVmaW5lZCI6Y2FzZSJudWxsIjpjYXNlInZvaWQiOmNhc2UibmV2ZXIiOmNhc2UiYW55IjpjYXNlInVua25vd24iOmNhc2UiZGF0ZSI6Y2FzZSJuYW4iOmNhc2UiZW51bSI6Y2FzZSJsaXRlcmFsIjpjYXNlImZpbGUiOmNhc2UidHJhbnNmb3JtIjpjYXNlImN1c3RvbSI6YnJlYWs7ZGVmYXVsdDpmb3IoY29uc3QgcCBpbiBkKXtjb25zdCBoPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZCxwKTtpZighaHx8aC5nZXQpY29udGludWU7Y29uc3QgYj1oLnZhbHVlO2lmKCEoIWJ8fHR5cGVvZiBiIT0ib2JqZWN0Iikpe2lmKGIuX3pvZClyKGIpO2Vsc2UgaWYoQXJyYXkuaXNBcnJheShiKSlmb3IoY29uc3QgJCBvZiBiKXIoJCl9fX1yZXR1cm4gdC5kZWxldGUoZSksWGIoZSxzKX1mdW5jdGlvbiBYYihlLHQpe3JldHVybiB0IT09c3MmJmJtLnNldChlLHQ9PT14biksdH1mdW5jdGlvbiBldihlKXtyZXR1cm4gSW4oZSxuZXcgU2V0LCEwKSE9PVJ0fWZ1bmN0aW9uIHR2KGUsdCl7bGV0IG49ZS5idWNrZXRzLmdldCh0KTtyZXR1cm4gbnx8KG49bmV3IFdlYWtNYXAsZS5idWNrZXRzLnNldCh0LG4pKSxufWxldCBRbztjb25zdCBYbz1bXSxudj17YWxsb2MoZSx0LG4pe2NvbnN0IG89UW87aWYoIW8pcmV0dXJuIG47UW89dm9pZCAwO2NvbnN0IHM9e3ZhbHVlOm4saXNzdWVzOm51bGx9O3JldHVybiBvLnNldCh0LnZhbHVlLHMpLFhvLnB1c2gocyksbn0sZ3VhcmQoZSl7dmFyIHQ7KHQ9ZS5fem9kKS5kZWZlcnJlZD8/KHQuZGVmZXJyZWQ9W10pLGUuX3pvZC5kZWZlcnJlZC5wdXNoKCgpPT57Y29uc3Qgbj1lLl96b2QucGFyc2Usbz0ocyxyKT0+e2lmKHIuZGlyZWN0aW9uIT09ImJhY2t3YXJkIiYmdm0ocixzLnZhbHVlKSl0aHJvdyBuZXcgZm07cmV0dXJuIG4ocyxyKX07ZS5fem9kLnBhcnNlPW8sZS5fem9kLnJ1bj09PW4mJihlLl96b2QucnVuPW8pfSl9LGF0dGFjaChlKXt2YXIgdDtsZXQgbixvPSExLHMscjsodD1lLl96b2QpLmRlZmVycmVkPz8odC5kZWZlcnJlZD1bXSksZS5fem9kLmRlZmVycmVkLnB1c2goKCk9Pntjb25zdCBhPWUuX3pvZC5wYXJzZSxpPShkLHUpPT57aWYobj09PXZvaWQgMCl7Y29uc3Qgej1JbihlLG5ldyBTZXQsITEpO2lmKHo9PT1SdClyZXR1cm4gZS5fem9kLnBhcnNlPWEsZS5fem9kLnJ1bj09PWkmJihlLl96b2QucnVuPWEpLGEoZCx1KTt6PT09eG58fG8/bj0hMDpvPSEwfWNvbnN0IHA9ZC52YWx1ZTtpZighZ20ocCkpcmV0dXJuIGEoZCx1KTtsZXQgaD11W2hpXTtofHwoaD17YnVja2V0czpuZXcgV2Vha01hcCxiYWNrRWRnZXM6dm9pZCAwfSx1W2hpXT1oKTtsZXQgYjtzPT09dT9iPXI6KGI9dHYoaCxlKSxzPXUscj1iKTtjb25zdCAkPWIuZ2V0KHApO2lmKCQpcmV0dXJuIGQudmFsdWU9JC52YWx1ZSwkLmlzc3Vlcz8kLmlzc3Vlcy5sZW5ndGgmJmQuaXNzdWVzLnB1c2goLi4uWHIoJC5pc3N1ZXMpKTooZC5tZW1vPSEwLGguYmFja0VkZ2VzPz8oaC5iYWNrRWRnZXM9bmV3IFdlYWtTZXQpLGguYmFja0VkZ2VzLmFkZCgkLnZhbHVlKSksZDtRbz1iO2NvbnN0IGs9WG8ubGVuZ3RoLFQ9YShkLHUpO1FvPXZvaWQgMDtjb25zdCB4PVhvLmxlbmd0aD5rP1hvLnBvcCgpOnZvaWQgMDtyZXR1cm4gVCBpbnN0YW5jZW9mIFByb21pc2U/VC50aGVuKHo9Pih4JiYoeC5pc3N1ZXM9ei5pc3N1ZXMubGVuZ3RoP1hyKHouaXNzdWVzKTpadSkseikpOih4JiYoeC5pc3N1ZXM9VC5pc3N1ZXMubGVuZ3RoP1hyKFQuaXNzdWVzKTpadSksVCl9O2UuX3pvZC5wYXJzZT1pLGUuX3pvZC5ydW49PT1hJiYoZS5fem9kLnJ1bj1pKX0pfX07ZnVuY3Rpb24gQnMoKXtyZXR1cm4gbnZ9ZnVuY3Rpb24gdm0oZSx0KXtjb25zdCBuPWVbaGldPy5iYWNrRWRnZXM7cmV0dXJuIG4hPT12b2lkIDAmJmdtKHQpJiZuLmhhcyh0KX1jb25zdCBvdj0oKT0+e2NvbnN0IGU9e3N0cmluZzp7dW5pdDoiY2hhcmFjdGVycyIsdmVyYjoidG8gaGF2ZSJ9LGZpbGU6e3VuaXQ6ImJ5dGVzIix2ZXJiOiJ0byBoYXZlIn0sYXJyYXk6e3VuaXQ6Iml0ZW1zIix2ZXJiOiJ0byBoYXZlIn0sc2V0Ont1bml0OiJpdGVtcyIsdmVyYjoidG8gaGF2ZSJ9LG1hcDp7dW5pdDoiZW50cmllcyIsdmVyYjoidG8gaGF2ZSJ9fTtmdW5jdGlvbiB0KHIpe3JldHVybiBlW3JdPz9udWxsfWNvbnN0IG49e3JlZ2V4OiJpbnB1dCIsZW1haWw6ImVtYWlsIGFkZHJlc3MiLHVybDoiVVJMIixlbW9qaToiZW1vamkiLHV1aWQ6IlVVSUQiLHV1aWR2NDoiVVVJRHY0Iix1dWlkdjY6IlVVSUR2NiIsbmFub2lkOiJuYW5vaWQiLGd1aWQ6IkdVSUQiLGN1aWQ6ImN1aWQiLGN1aWQyOiJjdWlkMiIsdWxpZDoiVUxJRCIseGlkOiJYSUQiLGtzdWlkOiJLU1VJRCIsZGF0ZXRpbWU6IklTTyBkYXRldGltZSIsZGF0ZToiSVNPIGRhdGUiLHRpbWU6IklTTyB0aW1lIixkdXJhdGlvbjoiSVNPIGR1cmF0aW9uIixpcHY0OiJJUHY0IGFkZHJlc3MiLGlwdjY6IklQdjYgYWRkcmVzcyIsbWFjOiJNQUMgYWRkcmVzcyIsY2lkcnY0OiJJUHY0IHJhbmdlIixjaWRydjY6IklQdjYgcmFuZ2UiLGJhc2U2NDoiYmFzZTY0LWVuY29kZWQgc3RyaW5nIixiYXNlNjR1cmw6ImJhc2U2NHVybC1lbmNvZGVkIHN0cmluZyIsanNvbl9zdHJpbmc6IkpTT04gc3RyaW5nIixlMTY0OiJFLjE2NCBudW1iZXIiLGN1cnJlbmN5X2NvZGU6ImN1cnJlbmN5IGNvZGUiLGNyZWRpdF9jYXJkOiJjcmVkaXQgY2FyZCBudW1iZXIiLGliYW46IklCQU4iLGp3dDoiSldUIix0ZW1wbGF0ZV9saXRlcmFsOiJpbnB1dCJ9LG89e25hbjoiTmFOIn07ZnVuY3Rpb24gcyhyLGEpe3JldHVybiByPT09Im51bWJlciImJnR5cGVvZiBhPT0ibnVtYmVyIiYmIU51bWJlci5pc0Zpbml0ZShhKT9TdHJpbmcoYSk6b1tyXT8/cn1yZXR1cm4gcj0+e3N3aXRjaChyLmNvZGUpe2Nhc2UiaW52YWxpZF90eXBlIjp7Y29uc3QgYT1zKHIuZXhwZWN0ZWQpLGk9RWQoci5pbnB1dCksZD1zKGksci5pbnB1dCk7cmV0dXJuYEludmFsaWQgaW5wdXQ6IGV4cGVjdGVkICR7YX0sIHJlY2VpdmVkICR7ZH1gfWNhc2UiaW52YWxpZF92YWx1ZSI6cmV0dXJuIHIudmFsdWVzLmxlbmd0aD09PTE/YEludmFsaWQgaW5wdXQ6IGV4cGVjdGVkICR7T2koci52YWx1ZXNbMF0pfWA6YEludmFsaWQgb3B0aW9uOiBleHBlY3RlZCBvbmUgb2YgJHtyaShyLnZhbHVlcywifCIpfWA7Y2FzZSJ0b29fYmlnIjp7Y29uc3QgYT1yLmV4YWN0PyJleGFjdGx5ICI6ci5pbmNsdXNpdmU/Ijw9IjoiPCIsaT10KHIub3JpZ2luKTtyZXR1cm4gaT9gVG9vIGJpZzogZXhwZWN0ZWQgJHtyLm9yaWdpbj8/InZhbHVlIn0gdG8gaGF2ZSAke2F9JHtyLm1heGltdW0udG9TdHJpbmcoKX0gJHtpLnVuaXQ/PyJlbGVtZW50cyJ9YDpgVG9vIGJpZzogZXhwZWN0ZWQgJHtyLm9yaWdpbj8/InZhbHVlIn0gdG8gYmUgJHthfSR7ci5tYXhpbXVtLnRvU3RyaW5nKCl9YH1jYXNlInRvb19zbWFsbCI6e2NvbnN0IGE9ci5leGFjdD8iZXhhY3RseSAiOnIuaW5jbHVzaXZlPyI+PSI6Ij4iLGk9dChyLm9yaWdpbik7cmV0dXJuIGk/YFRvbyBzbWFsbDogZXhwZWN0ZWQgJHtyLm9yaWdpbn0gdG8gaGF2ZSAke2F9JHtyLm1pbmltdW0udG9TdHJpbmcoKX0gJHtpLnVuaXR9YDpgVG9vIHNtYWxsOiBleHBlY3RlZCAke3Iub3JpZ2lufSB0byBiZSAke2F9JHtyLm1pbmltdW0udG9TdHJpbmcoKX1gfWNhc2UiaW52YWxpZF9mb3JtYXQiOntjb25zdCBhPXI7cmV0dXJuIGEuZm9ybWF0PT09InN0YXJ0c193aXRoIj9gSW52YWxpZCBzdHJpbmc6IG11c3Qgc3RhcnQgd2l0aCAiJHthLnByZWZpeH0iYDphLmZvcm1hdD09PSJlbmRzX3dpdGgiP2BJbnZhbGlkIHN0cmluZzogbXVzdCBlbmQgd2l0aCAiJHthLnN1ZmZpeH0iYDphLmZvcm1hdD09PSJpbmNsdWRlcyI/YEludmFsaWQgc3RyaW5nOiBtdXN0IGluY2x1ZGUgIiR7YS5pbmNsdWRlc30iYDphLmZvcm1hdD09PSJyZWdleCI/YEludmFsaWQgc3RyaW5nOiBtdXN0IG1hdGNoIHBhdHRlcm4gJHthLnBhdHRlcm59YDpgSW52YWxpZCAke25bYS5mb3JtYXRdPz9yLmZvcm1hdH1gfWNhc2Uibm90X211bHRpcGxlX29mIjpyZXR1cm5gSW52YWxpZCBudW1iZXI6IG11c3QgYmUgYSBtdWx0aXBsZSBvZiAke3IuZGl2aXNvcn1gO2Nhc2UidW5yZWNvZ25pemVkX2tleXMiOnJldHVybmBVbnJlY29nbml6ZWQga2V5JHtyLmtleXMubGVuZ3RoPjE/InMiOiIifTogJHtyaShyLmtleXMsIiwgIil9YDtjYXNlImludmFsaWRfa2V5IjpyZXR1cm5gSW52YWxpZCBrZXkgaW4gJHtyLm9yaWdpbn1gO2Nhc2UiaW52YWxpZF91bmlvbiI6cmV0dXJuIHIub3B0aW9ucyYmQXJyYXkuaXNBcnJheShyLm9wdGlvbnMpJiZyLm9wdGlvbnMubGVuZ3RoPjA/YEludmFsaWQgZGlzY3JpbWluYXRvciB2YWx1ZS4gRXhwZWN0ZWQgJHtyLm9wdGlvbnMubWFwKGk9PmAnJHtpfSdgKS5qb2luKCIgfCAiKX1gOnIuaW5jbHVzaXZlPT09ITE/IkludmFsaWQgaW5wdXQ6IG1vcmUgdGhhbiBvbmUgb3B0aW9uIG1hdGNoZWQiOiJJbnZhbGlkIGlucHV0IjtjYXNlImludmFsaWRfZWxlbWVudCI6cmV0dXJuYEludmFsaWQgdmFsdWUgaW4gJHtyLm9yaWdpbn1gO2RlZmF1bHQ6cmV0dXJuIkludmFsaWQgaW5wdXQifX19O2Z1bmN0aW9uICRtKCl7cmV0dXJue2xvY2FsZUVycm9yOm92KCl9fWNvbnN0IGdhPU9iamVjdC5mcmVlemUoT2JqZWN0LmRlZmluZVByb3BlcnR5KHtfX3Byb3RvX186bnVsbCxlbjokbX0sU3ltYm9sLnRvU3RyaW5nVGFnLHt2YWx1ZToiTW9kdWxlIn0pKTt2YXIgTXU7Y29uc3QgYmE9U3ltYm9sKCJab2RPdXRwdXQiKSx2YT1TeW1ib2woIlpvZElucHV0Iik7Y2xhc3MgeW17Y29uc3RydWN0b3IoKXt0aGlzLl9tYXA9bmV3IFdlYWtNYXAsdGhpcy5faWRtYXA9bmV3IE1hcH1hZGQodCwuLi5uKXtjb25zdCBvPW5bMF07cmV0dXJuIHRoaXMuX21hcC5zZXQodCxvKSxvJiZ0eXBlb2Ygbz09Im9iamVjdCImJiJpZCJpbiBvJiZ0aGlzLl9pZG1hcC5zZXQoby5pZCx0KSx0aGlzfWNsZWFyKCl7cmV0dXJuIHRoaXMuX21hcD1uZXcgV2Vha01hcCx0aGlzLl9pZG1hcD1uZXcgTWFwLHRoaXN9cmVtb3ZlKHQpe2NvbnN0IG49dGhpcy5fbWFwLmdldCh0KTtyZXR1cm4gbiYmdHlwZW9mIG49PSJvYmplY3QiJiYiaWQiaW4gbiYmdGhpcy5faWRtYXAuZGVsZXRlKG4uaWQpLHRoaXMuX21hcC5kZWxldGUodCksdGhpc31nZXQodCl7Y29uc3Qgbj10Ll96b2QucGFyZW50O2lmKG4pe2NvbnN0IG89ey4uLnRoaXMuZ2V0KG4pPz97fX07ZGVsZXRlIG8uaWQ7Y29uc3Qgcz17Li4ubywuLi50aGlzLl9tYXAuZ2V0KHQpfTtyZXR1cm4gT2JqZWN0LmtleXMocykubGVuZ3RoP3M6dm9pZCAwfXJldHVybiB0aGlzLl9tYXAuZ2V0KHQpfWhhcyh0KXtyZXR1cm4gdGhpcy5fbWFwLmhhcyh0KX19ZnVuY3Rpb24gVXMoKXtyZXR1cm4gbmV3IHltfShNdT1nbG9iYWxUaGlzKS5fX3pvZF9nbG9iYWxSZWdpc3RyeT8/KE11Ll9fem9kX2dsb2JhbFJlZ2lzdHJ5PVVzKCkpO2NvbnN0IE5lPWdsb2JhbFRoaXMuX196b2RfZ2xvYmFsUmVnaXN0cnksJGE9KCk9Pnt0aHJvdyBuZXcgRXJyb3IoInpvZCBjb21waWxlKCkgaXMgbm90IGJ1bmRsZWQgaW50byBjYXJkcyAtIHNlZSBwYWNrYWdlcy9pbnRlcm5hbC9jYXJkLWtpdC92aXRlLXNsaW0ubWpzIil9O2NsYXNzIHlhIGV4dGVuZHMgRXJyb3J7fWNsYXNzIGthIGV4dGVuZHMgRXJyb3J7fWNsYXNzIF9hIGV4dGVuZHMgRXJyb3J7fWNvbnN0IHdhPSRhLFNhPSRhLHN2PSRhO2Z1bmN0aW9uIEZzKGUpe3JldHVybiBlLmNoZWNrcyYmKGUuY2hlY2tzPVsuLi5lLmNoZWNrc10pLGV9ZnVuY3Rpb24ga20oZSx0KXtyZXR1cm4gbmV3IGUoRnMoe3R5cGU6InN0cmluZyIsLi4uXyh0KX0pKX1mdW5jdGlvbiBfbShlLHQpe3JldHVybiBuZXcgZShGcyh7dHlwZToic3RyaW5nIixjb2VyY2U6ITAsLi4uXyh0KX0pKX1mdW5jdGlvbiBUYShlLHQpe3JldHVybiBuZXcgZSh7dHlwZToic3RyaW5nIixmb3JtYXQ6ImVtYWlsIixjaGVjazoic3RyaW5nX2Zvcm1hdCIsYWJvcnQ6ITEsLi4uXyh0KX0pfWZ1bmN0aW9uIHphKGUsdCl7cmV0dXJuIG5ldyBlKHt0eXBlOiJzdHJpbmciLGZvcm1hdDoiZ3VpZCIsY2hlY2s6InN0cmluZ19mb3JtYXQiLGFib3J0OiExLC4uLl8odCl9KX1mdW5jdGlvbiB4YShlLHQpe3JldHVybiBuZXcgZSh7dHlwZToic3RyaW5nIixmb3JtYXQ6InV1aWQiLGNoZWNrOiJzdHJpbmdfZm9ybWF0IixhYm9ydDohMSwuLi5fKHQpfSl9ZnVuY3Rpb24gSWEoZSx0KXtyZXR1cm4gbmV3IGUoe3R5cGU6InN0cmluZyIsZm9ybWF0OiJ1dWlkIixjaGVjazoic3RyaW5nX2Zvcm1hdCIsYWJvcnQ6ITEsdmVyc2lvbjoidjQiLC4uLl8odCl9KX1mdW5jdGlvbiBBYShlLHQpe3JldHVybiBuZXcgZSh7dHlwZToic3RyaW5nIixmb3JtYXQ6InV1aWQiLGNoZWNrOiJzdHJpbmdfZm9ybWF0IixhYm9ydDohMSx2ZXJzaW9uOiJ2NiIsLi4uXyh0KX0pfWZ1bmN0aW9uIENhKGUsdCl7cmV0dXJuIG5ldyBlKHt0eXBlOiJzdHJpbmciLGZvcm1hdDoidXVpZCIsY2hlY2s6InN0cmluZ19mb3JtYXQiLGFib3J0OiExLHZlcnNpb246InY3IiwuLi5fKHQpfSl9ZnVuY3Rpb24gSHMoZSx0KXtyZXR1cm4gbmV3IGUoe3R5cGU6InN0cmluZyIsZm9ybWF0OiJ1cmwiLGNoZWNrOiJzdHJpbmdfZm9ybWF0IixhYm9ydDohMSwuLi5fKHQpfSl9ZnVuY3Rpb24gUGEoZSx0KXtyZXR1cm4gbmV3IGUoe3R5cGU6InN0cmluZyIsZm9ybWF0OiJlbW9qaSIsY2hlY2s6InN0cmluZ19mb3JtYXQiLGFib3J0OiExLC4uLl8odCl9KX1mdW5jdGlvbiBFYShlLHQpe3JldHVybiBuZXcgZSh7dHlwZToic3RyaW5nIixmb3JtYXQ6Im5hbm9pZCIsY2hlY2s6InN0cmluZ19mb3JtYXQiLGFib3J0OiExLC4uLl8odCl9KX1mdW5jdGlvbiBPYShlLHQpe3JldHVybiBuZXcgZSh7dHlwZToic3RyaW5nIixmb3JtYXQ6ImN1aWQiLGNoZWNrOiJzdHJpbmdfZm9ybWF0IixhYm9ydDohMSwuLi5fKHQpfSl9ZnVuY3Rpb24gUmEoZSx0KXtyZXR1cm4gbmV3IGUoe3R5cGU6InN0cmluZyIsZm9ybWF0OiJjdWlkMiIsY2hlY2s6InN0cmluZ19mb3JtYXQiLGFib3J0OiExLC4uLl8odCl9KX1mdW5jdGlvbiBOYShlLHQpe3JldHVybiBuZXcgZSh7dHlwZToic3RyaW5nIixmb3JtYXQ6InVsaWQiLGNoZWNrOiJzdHJpbmdfZm9ybWF0IixhYm9ydDohMSwuLi5fKHQpfSl9ZnVuY3Rpb24gWmEoZSx0KXtyZXR1cm4gbmV3IGUoe3R5cGU6InN0cmluZyIsZm9ybWF0OiJ4aWQiLGNoZWNrOiJzdHJpbmdfZm9ybWF0IixhYm9ydDohMSwuLi5fKHQpfSl9ZnVuY3Rpb24gTWEoZSx0KXtyZXR1cm4gbmV3IGUoe3R5cGU6InN0cmluZyIsZm9ybWF0OiJrc3VpZCIsY2hlY2s6InN0cmluZ19mb3JtYXQiLGFib3J0OiExLC4uLl8odCl9KX1mdW5jdGlvbiBqYShlLHQpe3JldHVybiBuZXcgZSh7dHlwZToic3RyaW5nIixmb3JtYXQ6ImlwdjQiLGNoZWNrOiJzdHJpbmdfZm9ybWF0IixhYm9ydDohMSwuLi5fKHQpfSl9ZnVuY3Rpb24gcWEoZSx0KXtyZXR1cm4gbmV3IGUoe3R5cGU6InN0cmluZyIsZm9ybWF0OiJpcHY2IixjaGVjazoic3RyaW5nX2Zvcm1hdCIsYWJvcnQ6ITEsLi4uXyh0KX0pfWZ1bmN0aW9uIHdtKGUsdCl7cmV0dXJuIG5ldyBlKHt0eXBlOiJzdHJpbmciLGZvcm1hdDoibWFjIixjaGVjazoic3RyaW5nX2Zvcm1hdCIsYWJvcnQ6ITEsLi4uXyh0KX0pfWZ1bmN0aW9uIExhKGUsdCl7cmV0dXJuIG5ldyBlKHt0eXBlOiJzdHJpbmciLGZvcm1hdDoiY2lkcnY0IixjaGVjazoic3RyaW5nX2Zvcm1hdCIsYWJvcnQ6ITEsLi4uXyh0KX0pfWZ1bmN0aW9uIERhKGUsdCl7cmV0dXJuIG5ldyBlKHt0eXBlOiJzdHJpbmciLGZvcm1hdDoiY2lkcnY2IixjaGVjazoic3RyaW5nX2Zvcm1hdCIsYWJvcnQ6ITEsLi4uXyh0KX0pfWZ1bmN0aW9uIEJhKGUsdCl7cmV0dXJuIG5ldyBlKHt0eXBlOiJzdHJpbmciLGZvcm1hdDoiYmFzZTY0IixjaGVjazoic3RyaW5nX2Zvcm1hdCIsYWJvcnQ6ITEsLi4uXyh0KX0pfWZ1bmN0aW9uIFVhKGUsdCl7cmV0dXJuIG5ldyBlKHt0eXBlOiJzdHJpbmciLGZvcm1hdDoiYmFzZTY0dXJsIixjaGVjazoic3RyaW5nX2Zvcm1hdCIsYWJvcnQ6ITEsLi4uXyh0KX0pfWZ1bmN0aW9uIEZhKGUsdCl7cmV0dXJuIG5ldyBlKHt0eXBlOiJzdHJpbmciLGZvcm1hdDoiZTE2NCIsY2hlY2s6InN0cmluZ19mb3JtYXQiLGFib3J0OiExLC4uLl8odCl9KX1mdW5jdGlvbiBTbShlLHQpe3JldHVybiBuZXcgZSh7dHlwZToic3RyaW5nIixmb3JtYXQ6ImNyZWRpdF9jYXJkIixjaGVjazoic3RyaW5nX2Zvcm1hdCIsYWJvcnQ6ITEsLi4uXyh0KX0pfWZ1bmN0aW9uIFRtKGUsdCl7cmV0dXJuIG5ldyBlKHt0eXBlOiJzdHJpbmciLGZvcm1hdDoiaWJhbiIsY2hlY2s6InN0cmluZ19mb3JtYXQiLGFib3J0OiExLC4uLl8odCl9KX1mdW5jdGlvbiBIYShlLHQpe3JldHVybiBuZXcgZSh7dHlwZToic3RyaW5nIixmb3JtYXQ6Imp3dCIsY2hlY2s6InN0cmluZ19mb3JtYXQiLGFib3J0OiExLC4uLl8odCl9KX1jb25zdCBXYT17QW55Om51bGwsTWludXRlOi0xLFNlY29uZDowLE1pbGxpc2Vjb25kOjMsTWljcm9zZWNvbmQ6Nn07ZnVuY3Rpb24gVmEoZSx0KXtyZXR1cm4gbmV3IGUoe3R5cGU6InN0cmluZyIsZm9ybWF0OiJkYXRldGltZSIsY2hlY2s6InN0cmluZ19mb3JtYXQiLG9mZnNldDohMSxsb2NhbDohMSxwcmVjaXNpb246bnVsbCwuLi5fKHQpfSl9ZnVuY3Rpb24gSmEoZSx0KXtyZXR1cm4gbmV3IGUoe3R5cGU6InN0cmluZyIsZm9ybWF0OiJkYXRlIixjaGVjazoic3RyaW5nX2Zvcm1hdCIsLi4uXyh0KX0pfWZ1bmN0aW9uIEthKGUsdCl7cmV0dXJuIG5ldyBlKHt0eXBlOiJzdHJpbmciLGZvcm1hdDoidGltZSIsY2hlY2s6InN0cmluZ19mb3JtYXQiLHByZWNpc2lvbjpudWxsLC4uLl8odCl9KX1mdW5jdGlvbiBHYShlLHQpe3JldHVybiBuZXcgZSh7dHlwZToic3RyaW5nIixmb3JtYXQ6ImR1cmF0aW9uIixjaGVjazoic3RyaW5nX2Zvcm1hdCIsLi4uXyh0KX0pfWZ1bmN0aW9uIHptKGUsdCl7cmV0dXJuIG5ldyBlKEZzKHt0eXBlOiJudW1iZXIiLGNoZWNrczpbXSwuLi5fKHQpfSkpfWZ1bmN0aW9uIHhtKGUsdCl7cmV0dXJuIG5ldyBlKEZzKHt0eXBlOiJudW1iZXIiLGNvZXJjZTohMCxjaGVja3M6W10sLi4uXyh0KX0pKX1mdW5jdGlvbiBJbShlLHQpe3JldHVybiBuZXcgZSh7dHlwZToibnVtYmVyIixjaGVjazoibnVtYmVyX2Zvcm1hdCIsYWJvcnQ6ITEsZm9ybWF0OiJzYWZlaW50IiwuLi5fKHQpfSl9ZnVuY3Rpb24gQW0oZSx0KXtyZXR1cm4gbmV3IGUoe3R5cGU6Im51bWJlciIsY2hlY2s6Im51bWJlcl9mb3JtYXQiLGFib3J0OiExLGZvcm1hdDoiZmxvYXQzMiIsLi4uXyh0KX0pfWZ1bmN0aW9uIENtKGUsdCl7cmV0dXJuIG5ldyBlKHt0eXBlOiJudW1iZXIiLGNoZWNrOiJudW1iZXJfZm9ybWF0IixhYm9ydDohMSxmb3JtYXQ6ImZsb2F0NjQiLC4uLl8odCl9KX1mdW5jdGlvbiBQbShlLHQpe3JldHVybiBuZXcgZSh7dHlwZToibnVtYmVyIixjaGVjazoibnVtYmVyX2Zvcm1hdCIsYWJvcnQ6ITEsZm9ybWF0OiJpbnQzMiIsLi4uXyh0KX0pfWZ1bmN0aW9uIEVtKGUsdCl7cmV0dXJuIG5ldyBlKHt0eXBlOiJudW1iZXIiLGNoZWNrOiJudW1iZXJfZm9ybWF0IixhYm9ydDohMSxmb3JtYXQ6InVpbnQzMiIsLi4uXyh0KX0pfWZ1bmN0aW9uIE9tKGUsdCl7cmV0dXJuIG5ldyBlKHt0eXBlOiJib29sZWFuIiwuLi5fKHQpfSl9ZnVuY3Rpb24gUm0oZSx0KXtyZXR1cm4gbmV3IGUoe3R5cGU6ImJvb2xlYW4iLGNvZXJjZTohMCwuLi5fKHQpfSl9ZnVuY3Rpb24gTm0oZSx0KXtyZXR1cm4gbmV3IGUoe3R5cGU6ImJpZ2ludCIsLi4uXyh0KX0pfWZ1bmN0aW9uIFptKGUsdCl7cmV0dXJuIG5ldyBlKHt0eXBlOiJiaWdpbnQiLGNvZXJjZTohMCwuLi5fKHQpfSl9ZnVuY3Rpb24gTW0oZSx0KXtyZXR1cm4gbmV3IGUoe3R5cGU6ImJpZ2ludCIsY2hlY2s6ImJpZ2ludF9mb3JtYXQiLGFib3J0OiExLGZvcm1hdDoiaW50NjQiLC4uLl8odCl9KX1mdW5jdGlvbiBqbShlLHQpe3JldHVybiBuZXcgZSh7dHlwZToiYmlnaW50IixjaGVjazoiYmlnaW50X2Zvcm1hdCIsYWJvcnQ6ITEsZm9ybWF0OiJ1aW50NjQiLC4uLl8odCl9KX1mdW5jdGlvbiBxbShlLHQpe3JldHVybiBuZXcgZSh7dHlwZToic3ltYm9sIiwuLi5fKHQpfSl9ZnVuY3Rpb24gTG0oZSx0KXtyZXR1cm4gbmV3IGUoe3R5cGU6InVuZGVmaW5lZCIsLi4uXyh0KX0pfWZ1bmN0aW9uIERtKGUsdCl7cmV0dXJuIG5ldyBlKHt0eXBlOiJudWxsIiwuLi5fKHQpfSl9ZnVuY3Rpb24gQm0oZSl7cmV0dXJuIG5ldyBlKHt0eXBlOiJhbnkifSl9ZnVuY3Rpb24gVW0oZSl7cmV0dXJuIG5ldyBlKHt0eXBlOiJ1bmtub3duIn0pfWZ1bmN0aW9uIEZtKGUsdCl7cmV0dXJuIG5ldyBlKHt0eXBlOiJuZXZlciIsLi4uXyh0KX0pfWZ1bmN0aW9uIEhtKGUsdCl7cmV0dXJuIG5ldyBlKHt0eXBlOiJ2b2lkIiwuLi5fKHQpfSl9ZnVuY3Rpb24gV20oZSx0KXtyZXR1cm4gbmV3IGUoe3R5cGU6ImRhdGUiLC4uLl8odCl9KX1mdW5jdGlvbiBWbShlLHQpe3JldHVybiBuZXcgZSh7dHlwZToiZGF0ZSIsY29lcmNlOiEwLC4uLl8odCl9KX1mdW5jdGlvbiBKbShlLHQpe3JldHVybiBuZXcgZSh7dHlwZToibmFuIiwuLi5fKHQpfSl9ZnVuY3Rpb24gR2UoZSx0KXtyZXR1cm4gbmV3IFhpKHtjaGVjazoibGVzc190aGFuIiwuLi5fKHQpLHZhbHVlOmUsaW5jbHVzaXZlOiExfSl9ZnVuY3Rpb24geGUoZSx0KXtyZXR1cm4gbmV3IFhpKHtjaGVjazoibGVzc190aGFuIiwuLi5fKHQpLHZhbHVlOmUsaW5jbHVzaXZlOiEwfSl9ZnVuY3Rpb24gWWUoZSx0KXtyZXR1cm4gbmV3IGVhKHtjaGVjazoiZ3JlYXRlcl90aGFuIiwuLi5fKHQpLHZhbHVlOmUsaW5jbHVzaXZlOiExfSl9ZnVuY3Rpb24gSWUoZSx0KXtyZXR1cm4gbmV3IGVhKHtjaGVjazoiZ3JlYXRlcl90aGFuIiwuLi5fKHQpLHZhbHVlOmUsaW5jbHVzaXZlOiEwfSl9ZnVuY3Rpb24gV3MoZSl7cmV0dXJuIFllKDAsZSl9ZnVuY3Rpb24gVnMoZSl7cmV0dXJuIEdlKDAsZSl9ZnVuY3Rpb24gSnMoZSl7cmV0dXJuIHhlKDAsZSl9ZnVuY3Rpb24gS3MoZSl7cmV0dXJuIEllKDAsZSl9ZnVuY3Rpb24gJHQoZSx0KXtyZXR1cm4gbmV3IFNwKHtjaGVjazoibXVsdGlwbGVfb2YiLC4uLl8odCksdmFsdWU6ZX0pfWZ1bmN0aW9uIEN0KGUsdCl7cmV0dXJuIG5ldyB4cCh7Y2hlY2s6Im1heF9zaXplIiwuLi5fKHQpLG1heGltdW06ZX0pfWZ1bmN0aW9uIFFlKGUsdCl7cmV0dXJuIG5ldyBJcCh7Y2hlY2s6Im1pbl9zaXplIiwuLi5fKHQpLG1pbmltdW06ZX0pfWZ1bmN0aW9uIEd0KGUsdCl7cmV0dXJuIG5ldyBBcCh7Y2hlY2s6InNpemVfZXF1YWxzIiwuLi5fKHQpLHNpemU6ZX0pfWZ1bmN0aW9uIFl0KGUsdCl7cmV0dXJuIG5ldyBDcCh7Y2hlY2s6Im1heF9sZW5ndGgiLC4uLl8odCksbWF4aW11bTplfSl9ZnVuY3Rpb24gYXQoZSx0KXtyZXR1cm4gbmV3IFBwKHtjaGVjazoibWluX2xlbmd0aCIsLi4uXyh0KSxtaW5pbXVtOmV9KX1mdW5jdGlvbiBRdChlLHQpe3JldHVybiBuZXcgRXAoe2NoZWNrOiJsZW5ndGhfZXF1YWxzIiwuLi5fKHQpLGxlbmd0aDplfSl9ZnVuY3Rpb24gWW4oZSx0KXtyZXR1cm4gbmV3IE9wKHtjaGVjazoic3RyaW5nX2Zvcm1hdCIsZm9ybWF0OiJyZWdleCIsLi4uXyh0KSxwYXR0ZXJuOmV9KX1mdW5jdGlvbiBRbihlKXtyZXR1cm4gbmV3IFJwKHtjaGVjazoic3RyaW5nX2Zvcm1hdCIsZm9ybWF0OiJsb3dlcmNhc2UiLC4uLl8oZSl9KX1mdW5jdGlvbiBYbihlKXtyZXR1cm4gbmV3IE5wKHtjaGVjazoic3RyaW5nX2Zvcm1hdCIsZm9ybWF0OiJ1cHBlcmNhc2UiLC4uLl8oZSl9KX1mdW5jdGlvbiBlbyhlLHQpe3JldHVybiBuZXcgWnAoe2NoZWNrOiJzdHJpbmdfZm9ybWF0Iixmb3JtYXQ6ImluY2x1ZGVzIiwuLi5fKHQpLGluY2x1ZGVzOmV9KX1mdW5jdGlvbiB0byhlLHQpe3JldHVybiBuZXcgTXAoe2NoZWNrOiJzdHJpbmdfZm9ybWF0Iixmb3JtYXQ6InN0YXJ0c193aXRoIiwuLi5fKHQpLHByZWZpeDplfSl9ZnVuY3Rpb24gbm8oZSx0KXtyZXR1cm4gbmV3IGpwKHtjaGVjazoic3RyaW5nX2Zvcm1hdCIsZm9ybWF0OiJlbmRzX3dpdGgiLC4uLl8odCksc3VmZml4OmV9KX1mdW5jdGlvbiBHcyhlLHQsbil7cmV0dXJuIG5ldyBxcCh7Y2hlY2s6InByb3BlcnR5Iixwcm9wZXJ0eTplLHNjaGVtYTp0LC4uLl8obil9KX1mdW5jdGlvbiBvbyhlLHQpe3JldHVybiBuZXcgTHAoe2NoZWNrOiJwcm9wZXJ0aWVzIixzaGFwZTplLC4uLl8odCl9KX1mdW5jdGlvbiBzbyhlLHQpe3JldHVybiBuZXcgRHAoe2NoZWNrOiJtaW1lX3R5cGUiLG1pbWU6ZSwuLi5fKHQpfSl9ZnVuY3Rpb24gV2UoZSl7cmV0dXJuIG5ldyBCcCh7Y2hlY2s6Im92ZXJ3cml0ZSIsdHg6ZX0pfWZ1bmN0aW9uIHJvKGUpe3JldHVybiBXZSh0PT50Lm5vcm1hbGl6ZShlKSl9ZnVuY3Rpb24gaW8oKXtyZXR1cm4gV2UoZT0+ZS50cmltKCkpfWZ1bmN0aW9uIGFvKCl7cmV0dXJuIFdlKGU9PmUudG9Mb3dlckNhc2UoKSl9ZnVuY3Rpb24gY28oKXtyZXR1cm4gV2UoZT0+ZS50b1VwcGVyQ2FzZSgpKX1mdW5jdGlvbiBsbygpe3JldHVybiBXZShlPT52ZChlKSl9ZnVuY3Rpb24gS20oZSx0LG4pe3JldHVybiBuZXcgZSh7dHlwZToiYXJyYXkiLGVsZW1lbnQ6dCwuLi5fKG4pfSl9ZnVuY3Rpb24gcnYoZSx0LG4pe3JldHVybiBuZXcgZSh7dHlwZToidW5pb24iLG9wdGlvbnM6dCwuLi5fKG4pfSl9ZnVuY3Rpb24gaXYoZSx0LG4pe3JldHVybiBuZXcgZSh7dHlwZToidW5pb24iLG9wdGlvbnM6dCxpbmNsdXNpdmU6ITEsLi4uXyhuKX0pfWZ1bmN0aW9uIGF2KGUsdCxuLG8pe3JldHVybiBuZXcgZSh7dHlwZToidW5pb24iLG9wdGlvbnM6bixkaXNjcmltaW5hdG9yOnQsLi4uXyhvKX0pfWZ1bmN0aW9uIGN2KGUsdCxuKXtyZXR1cm4gbmV3IGUoe3R5cGU6ImludGVyc2VjdGlvbiIsbGVmdDp0LHJpZ2h0Om59KX1mdW5jdGlvbiBsdihlLHQsbixvKXtjb25zdCBzPW4gaW5zdGFuY2VvZiBOLHI9cz9vOm4sYT1zP246bnVsbDtyZXR1cm4gbmV3IGUoe3R5cGU6InR1cGxlIixpdGVtczp0LHJlc3Q6YSwuLi5fKHIpfSl9ZnVuY3Rpb24gdXYoZSx0LG4sbyl7cmV0dXJuIG5ldyBlKHt0eXBlOiJyZWNvcmQiLGtleVR5cGU6dCx2YWx1ZVR5cGU6biwuLi5fKG8pfSl9ZnVuY3Rpb24gZHYoZSx0LG4sbyl7cmV0dXJuIG5ldyBlKHt0eXBlOiJtYXAiLGtleVR5cGU6dCx2YWx1ZVR5cGU6biwuLi5fKG8pfSl9ZnVuY3Rpb24gcHYoZSx0LG4pe3JldHVybiBuZXcgZSh7dHlwZToic2V0Iix2YWx1ZVR5cGU6dCwuLi5fKG4pfSl9ZnVuY3Rpb24gaHYoZSx0LG4pe2NvbnN0IG89QXJyYXkuaXNBcnJheSh0KT9PYmplY3QuZnJvbUVudHJpZXModC5tYXAocz0+W3Msc10pKTp0O3JldHVybiBuZXcgZSh7dHlwZToiZW51bSIsZW50cmllczpvLC4uLl8obil9KX1mdW5jdGlvbiBtdihlLHQsbil7cmV0dXJuIG5ldyBlKHt0eXBlOiJlbnVtIixlbnRyaWVzOnQsLi4uXyhuKX0pfWZ1bmN0aW9uIGZ2KGUsdCxuKXtyZXR1cm4gbmV3IGUoe3R5cGU6ImxpdGVyYWwiLHZhbHVlczpBcnJheS5pc0FycmF5KHQpP3Q6W3RdLC4uLl8obil9KX1mdW5jdGlvbiBHbShlLHQpe3JldHVybiBuZXcgZSh7dHlwZToiZmlsZSIsLi4uXyh0KX0pfWZ1bmN0aW9uIGd2KGUsdCl7cmV0dXJuIG5ldyBlKHt0eXBlOiJ0cmFuc2Zvcm0iLHRyYW5zZm9ybTp0fSl9ZnVuY3Rpb24gYnYoZSx0KXtyZXR1cm4gbmV3IGUoe3R5cGU6Im9wdGlvbmFsIixpbm5lclR5cGU6dH0pfWZ1bmN0aW9uIHZ2KGUsdCl7cmV0dXJuIG5ldyBlKHt0eXBlOiJudWxsYWJsZSIsaW5uZXJUeXBlOnR9KX1mdW5jdGlvbiAkdihlLHQsbil7cmV0dXJuIG5ldyBlKHt0eXBlOiJkZWZhdWx0Iixpbm5lclR5cGU6dCxnZXQgZGVmYXVsdFZhbHVlKCl7cmV0dXJuIHR5cGVvZiBuPT0iZnVuY3Rpb24iP24oKTp4cyhuKX19KX1mdW5jdGlvbiB5dihlLHQsbil7cmV0dXJuIG5ldyBlKHt0eXBlOiJub25vcHRpb25hbCIsaW5uZXJUeXBlOnQsLi4uXyhuKX0pfWZ1bmN0aW9uIGt2KGUsdCl7cmV0dXJuIG5ldyBlKHt0eXBlOiJzdWNjZXNzIixpbm5lclR5cGU6dH0pfWZ1bmN0aW9uIF92KGUsdCxuKXtyZXR1cm4gbmV3IGUoe3R5cGU6ImNhdGNoIixpbm5lclR5cGU6dCxjYXRjaFZhbHVlOnR5cGVvZiBuPT0iZnVuY3Rpb24iP246Umkobil9KX1mdW5jdGlvbiB3dihlLHQsbil7cmV0dXJuIG5ldyBlKHt0eXBlOiJwaXBlIixpbjp0LG91dDpufSl9ZnVuY3Rpb24gU3YoZSx0KXtyZXR1cm4gbmV3IGUoe3R5cGU6InJlYWRvbmx5Iixpbm5lclR5cGU6dH0pfWZ1bmN0aW9uIFR2KGUsdCxuKXtyZXR1cm4gbmV3IGUoe3R5cGU6InRlbXBsYXRlX2xpdGVyYWwiLHBhcnRzOnQsLi4uXyhuKX0pfWZ1bmN0aW9uIHp2KGUsdCl7cmV0dXJuIG5ldyBlKHt0eXBlOiJsYXp5IixnZXR0ZXI6dH0pfWZ1bmN0aW9uIHh2KGUsdCl7cmV0dXJuIG5ldyBlKHt0eXBlOiJwcm9taXNlIixpbm5lclR5cGU6dH0pfWZ1bmN0aW9uIFltKGUsdCxuKXtjb25zdCBvPV8obik7cmV0dXJuIG8uYWJvcnQ/PyhvLmFib3J0PSEwKSxuZXcgZSh7dHlwZToiY3VzdG9tIixjaGVjazoiY3VzdG9tIixmbjp0LC4uLm99KX1mdW5jdGlvbiBRbShlLHQsbil7cmV0dXJuIG5ldyBlKHt0eXBlOiJjdXN0b20iLGNoZWNrOiJjdXN0b20iLGZuOnQsLi4uXyhuKX0pfWZ1bmN0aW9uIFhtKGUsdCl7Y29uc3Qgbj1lZihvPT4oby5hZGRJc3N1ZT1zPT57aWYodHlwZW9mIHM9PSJzdHJpbmciKW8uaXNzdWVzLnB1c2goQnQocyxvLnZhbHVlLG4uX3pvZC5kZWYpKTtlbHNle2NvbnN0IHI9cztyLmZhdGFsJiYoci5jb250aW51ZT0hMSksci5jb2RlPz8oci5jb2RlPSJjdXN0b20iKSwiaW5wdXQiaW4gcnx8KHIuaW5wdXQ9by52YWx1ZSksci5pbnN0Pz8oci5pbnN0PW4pLHIuY29udGludWU/PyhyLmNvbnRpbnVlPSFuLl96b2QuZGVmLmFib3J0KSxvLmlzc3Vlcy5wdXNoKEJ0KHIpKX19LGUoby52YWx1ZSxvKSksdCk7cmV0dXJuIG59ZnVuY3Rpb24gZWYoZSx0KXtjb25zdCBuPW5ldyBvZSh7Y2hlY2s6ImN1c3RvbSIsLi4uXyh0KX0pO3JldHVybiBuLl96b2QuY2hlY2s9ZSxufWZ1bmN0aW9uIHRmKGUpe2NvbnN0IHQ9bmV3IG9lKHtjaGVjazoiZGVzY3JpYmUifSk7cmV0dXJuIHQuX3pvZC5vbmF0dGFjaD1bbj0+e2NvbnN0IG89TmUuZ2V0KG4pPz97fTtOZS5hZGQobix7Li4ubyxkZXNjcmlwdGlvbjplfSl9XSx0Ll96b2QuY2hlY2s9KCk9Pnt9LHR9ZnVuY3Rpb24gbmYoZSl7Y29uc3QgdD1uZXcgb2Uoe2NoZWNrOiJtZXRhIn0pO3JldHVybiB0Ll96b2Qub25hdHRhY2g9W249Pntjb25zdCBvPU5lLmdldChuKT8/e307TmUuYWRkKG4sey4uLm8sLi4uZX0pfV0sdC5fem9kLmNoZWNrPSgpPT57fSx0fWZ1bmN0aW9uIG9mKGUsdCl7Y29uc3Qgbj1fKHQpO2xldCBvPW4udHJ1dGh5Pz9bInRydWUiLCIxIiwieWVzIiwib24iLCJ5IiwiZW5hYmxlZCJdLHM9bi5mYWxzeT8/WyJmYWxzZSIsIjAiLCJubyIsIm9mZiIsIm4iLCJkaXNhYmxlZCJdO24uY2FzZSE9PSJzZW5zaXRpdmUiJiYobz1vLm1hcCgkPT50eXBlb2YgJD09InN0cmluZyI/JC50b0xvd2VyQ2FzZSgpOiQpLHM9cy5tYXAoJD0+dHlwZW9mICQ9PSJzdHJpbmciPyQudG9Mb3dlckNhc2UoKTokKSk7Y29uc3Qgcj1uZXcgU2V0KG8pLGE9bmV3IFNldChzKSxpPWUuQ29kZWM/P21hLGQ9ZS5Cb29sZWFuPz9jYSx1PWUuU3RyaW5nPz9HbixwPW5ldyB1KHt0eXBlOiJzdHJpbmciLGVycm9yOm4uZXJyb3J9KSxoPW5ldyBkKHt0eXBlOiJib29sZWFuIixlcnJvcjpuLmVycm9yfSksYj1uZXcgaSh7dHlwZToicGlwZSIsaW46cCxvdXQ6aCx0cmFuc2Zvcm06KCgkLGspPT57bGV0IFQ9JDtyZXR1cm4gbi5jYXNlIT09InNlbnNpdGl2ZSImJihUPVQudG9Mb3dlckNhc2UoKSksci5oYXMoVCk/ITA6YS5oYXMoVCk/ITE6KGsuaXNzdWVzLnB1c2goe2NvZGU6ImludmFsaWRfdmFsdWUiLGV4cGVjdGVkOiJzdHJpbmdib29sIix2YWx1ZXM6Wy4uLnIsLi4uYV0saW5wdXQ6ay52YWx1ZSxpbnN0OmIsY29udGludWU6ITF9KSx7fSl9KSxyZXZlcnNlVHJhbnNmb3JtOigoJCxrKT0+JD09PSEwP29bMF18fCJ0cnVlIjpzWzBdfHwiZmFsc2UiKSxlcnJvcjpuLmVycm9yfSk7cmV0dXJuIGIuX3pvZC5iYWcudHJ1dGh5PW8sYi5fem9kLmJhZy5mYWxzeT1zLGIuX3pvZC5iYWcuY2FzZT1uLmNhc2U/PyJpbnNlbnNpdGl2ZSIsYn1mdW5jdGlvbiBYdChlLHQsbixvPXt9KXtjb25zdCBzPV8obykscj17Y2hlY2s6InN0cmluZ19mb3JtYXQiLHR5cGU6InN0cmluZyIsZm9ybWF0OnQsZm46dHlwZW9mIG49PSJmdW5jdGlvbiI/bjppPT5uLnRlc3QoaSksLi4uc307cmV0dXJuIG4gaW5zdGFuY2VvZiBSZWdFeHAmJihyLnBhdHRlcm49biksbmV3IGUocil9Y29uc3QgSXY9KCk9Pih7fSksQXY9KCk9Pih7fSksQ3Y9KCk9Pih7fSksUHY9KCk9Pih7fSksRXY9KCk9Pih7fSksc2Y9KCk9PigpPT4oe30pLG1pPSgpPT4oKT0+KHt9KSxPdj0oKT0+KHt9KSxaZT0oKT0+KHt9KSxSdj0oKT0+KHt9KSxOdj0oKT0+KHt9KSxadj0oKT0+KHt9KSxNdj0oKT0+KHt9KSxqdj0oKT0+KHt9KSxxdj0oKT0+KHt9KSxMdj0oKT0+KHt9KSxEdj0oKT0+KHt9KSxCdj0oKT0+KHt9KSxVdj0oKT0+KHt9KSxGdj0oKT0+KHt9KSxIdj0oKT0+KHt9KSxXdj0oKT0+KHt9KSxWdj0oKT0+KHt9KSxKdj0oKT0+KHt9KSxLdj0oKT0+KHt9KSxHdj0oKT0+KHt9KSxZdj0oKT0+KHt9KSxRdj0oKT0+KHt9KSxYdj0oKT0+KHt9KSxlJD0oKT0+KHt9KSx0JD0oKT0+KHt9KSxuJD0oKT0+KHt9KSxvJD0oKT0+KHt9KSxzJD0oKT0+KHt9KSxyZj0oKT0+KHt9KSxyJD0oKT0+KHt9KSxpJD0oKT0+KHt9KSxhJD0oKT0+KHt9KSxjJD0oKT0+KHt9KSxsJD0oKT0+KHt9KSx1JD0oKT0+KHt9KSxkJD0oKT0+KHt9KSxwJD0oKT0+KHt9KSxoJD0oKT0+KHt9KSxtJD0oKT0+KHt9KSxmJD0oKT0+KHt9KSxhZj0oKT0+KHt9KSxnJD0oKT0+KHt9KSxZYT0oKT0+KHt9KTtjbGFzcyBiJHt9Y29uc3QgdiQ9T2JqZWN0LmZyZWV6ZShPYmplY3QuZGVmaW5lUHJvcGVydHkoe19fcHJvdG9fXzpudWxsfSxTeW1ib2wudG9TdHJpbmdUYWcse3ZhbHVlOiJNb2R1bGUifSkpLGNmPU9iamVjdC5mcmVlemUoT2JqZWN0LmRlZmluZVByb3BlcnR5KHtfX3Byb3RvX186bnVsbCwkWm9kQW55OlJoLCRab2RBcnJheTpxaCwkWm9kQXN5bmNFcnJvcjpydCwkWm9kQmFzZTY0OnZoLCRab2RCYXNlNjRVUkw6eWgsJFpvZEJpZ0ludDpsYSwkWm9kQmlnSW50Rm9ybWF0OkNoLCRab2RCb29sZWFuOmNhLCRab2RDSURSdjQ6bWgsJFpvZENJRFJ2NjpnaCwkWm9kQ1VJRDpuaCwkWm9kQ1VJRDI6b2gsJFpvZENhdGNoOmFtLCRab2RDaGVjazpvZSwkWm9kQ2hlY2tCaWdJbnRGb3JtYXQ6enAsJFpvZENoZWNrRW5kc1dpdGg6anAsJFpvZENoZWNrR3JlYXRlclRoYW46ZWEsJFpvZENoZWNrSW5jbHVkZXM6WnAsJFpvZENoZWNrTGVuZ3RoRXF1YWxzOkVwLCRab2RDaGVja0xlc3NUaGFuOlhpLCRab2RDaGVja0xvd2VyQ2FzZTpScCwkWm9kQ2hlY2tNYXhMZW5ndGg6Q3AsJFpvZENoZWNrTWF4U2l6ZTp4cCwkWm9kQ2hlY2tNaW1lVHlwZTpEcCwkWm9kQ2hlY2tNaW5MZW5ndGg6UHAsJFpvZENoZWNrTWluU2l6ZTpJcCwkWm9kQ2hlY2tNdWx0aXBsZU9mOlNwLCRab2RDaGVja051bWJlckZvcm1hdDpUcCwkWm9kQ2hlY2tPdmVyd3JpdGU6QnAsJFpvZENoZWNrUHJvcGVydGllczpMcCwkWm9kQ2hlY2tQcm9wZXJ0eTpxcCwkWm9kQ2hlY2tSZWdleDpPcCwkWm9kQ2hlY2tTaXplRXF1YWxzOkFwLCRab2RDaGVja1N0YXJ0c1dpdGg6TXAsJFpvZENoZWNrU3RyaW5nRm9ybWF0OktuLCRab2RDaGVja1VwcGVyQ2FzZTpOcCwkWm9kQ29kZWM6bWEsJFpvZENyZWRpdENhcmQ6d2gsJFpvZEN1c3RvbTptbSwkWm9kQ3VzdG9tU3RyaW5nRm9ybWF0OkloLCRab2RDeWNsaWNFcnJvcjpmbSwkWm9kRGF0ZTpqaCwkWm9kRGVmYXVsdDpvbSwkWm9kRGlzY3JpbWluYXRlZFVuaW9uOldoLCRab2RFMTY0OmtoLCRab2RFbWFpbDpKcCwkWm9kRW1vamk6ZWgsJFpvZEVuY29kZUVycm9yOk9zLCRab2RFbnVtOlloLCRab2RFcnJvcjpxZCwkWm9kRXhhY3RPcHRpb25hbDp0bSwkWm9kRmlsZTpYaCwkWm9kRnVuY3Rpb246cG0sJFpvZEdVSUQ6V3AsJFpvZElCQU46VGgsJFpvZElQdjQ6ZGgsJFpvZElQdjY6cGgsJFpvZElTT0RhdGU6Y2gsJFpvZElTT0RhdGVUaW1lOmFoLCRab2RJU09EdXJhdGlvbjp1aCwkWm9kSVNPVGltZTpsaCwkWm9kSW50ZXJzZWN0aW9uOlZoLCRab2RKV1Q6eGgsJFpvZEtTVUlEOmloLCRab2RMYXp5OmZhLCRab2RMaXRlcmFsOlFoLCRab2RNQUM6aGgsJFpvZE1hcDpLaCwkWm9kTmFOOmNtLCRab2ROYW5vSUQ6dGgsJFpvZE5ldmVyOlpoLCRab2ROb25PcHRpb25hbDpybSwkWm9kTnVsbDpPaCwkWm9kTnVsbGFibGU6bm0sJFpvZE51bWJlcjphYSwkWm9kTnVtYmVyRm9ybWF0OkFoLCRab2RPYmplY3Q6QmgsJFpvZE9iamVjdEpJVDpVaCwkWm9kT3B0aW9uYWw6cGEsJFpvZFBpcGU6aGEsJFpvZFByZWZhdWx0OnNtLCRab2RQcmVwcm9jZXNzOmxtLCRab2RQcm9taXNlOmhtLCRab2RSZWFkb25seTp1bSwkWm9kUmVhbEVycm9yOlBlLCRab2RSZWNvcmQ6SmgsJFpvZFJlZ2lzdHJ5OnltLCRab2RTZXQ6R2gsJFpvZFN0cmluZzpHbiwkWm9kU3RyaW5nRm9ybWF0OmVlLCRab2RTdWNjZXNzOmltLCRab2RTeW1ib2w6UGgsJFpvZFRlbXBsYXRlTGl0ZXJhbDpkbSwkWm9kVHJhbnNmb3JtOmVtLCRab2RUdXBsZTpkYSwkWm9kVHlwZTpOLCRab2RVTElEOnNoLCRab2RVUkw6WHAsJFpvZFVVSUQ6VnAsJFpvZFVuZGVmaW5lZDpFaCwkWm9kVW5pb246RHMsJFpvZFVua25vd246TmgsJFpvZFZvaWQ6TWgsJFpvZFhJRDpyaCwkWm9kWG9yOkZoLCRicmFuZDpNaSwkY29uc3RydWN0b3I6bSwkaW5wdXQ6dmEsJG91dHB1dDpiYSxEb2M6VXAsSU5WQUxJRDp5YSxKU09OU2NoZW1hOnYkLEpTT05TY2hlbWFHZW5lcmF0b3I6YiQsTkVWRVI6WmksVGltZVByZWNpc2lvbjpXYSxVUkxfQkFEX0ZPUk1BVDpuYSxVUkxfVU5QQVJTRUFCTEU6Um4sWm9kQ29tcGlsZUFzeW5jRXJyb3I6a2EsWm9kQ29tcGlsZVVuc3VwcG9ydGVkRXJyb3I6X2EsX2FueTpCbSxfYXJyYXk6S20sX2Jhc2U2NDpCYSxfYmFzZTY0dXJsOlVhLF9iaWdpbnQ6Tm0sX2Jvb2xlYW46T20sX2NhdGNoOl92LF9jaGVjazplZixfY2lkcnY0OkxhLF9jaWRydjY6RGEsX2NvZXJjZWRCaWdpbnQ6Wm0sX2NvZXJjZWRCb29sZWFuOlJtLF9jb2VyY2VkRGF0ZTpWbSxfY29lcmNlZE51bWJlcjp4bSxfY29lcmNlZFN0cmluZzpfbSxfY3JlZGl0Q2FyZDpTbSxfY3VpZDpPYSxfY3VpZDI6UmEsX2N1c3RvbTpZbSxfZGF0ZTpXbSxfZGVjb2RlOkRpLF9kZWNvZGVBc3luYzpVaSxfZGVmYXVsdDokdixfZGlzY3JpbWluYXRlZFVuaW9uOmF2LF9lMTY0OkZhLF9lbWFpbDpUYSxfZW1vamk6UGEsX2VuY29kZTpMaSxfZW5jb2RlQXN5bmM6QmksX2VuZHNXaXRoOm5vLF9lbnVtOmh2LF9maWxlOkdtLF9mbG9hdDMyOkFtLF9mbG9hdDY0OkNtLF9ndDpZZSxfZ3RlOkllLF9ndWlkOnphLF9pYmFuOlRtLF9pbmNsdWRlczplbyxfaW50OkltLF9pbnQzMjpQbSxfaW50NjQ6TW0sX2ludGVyc2VjdGlvbjpjdixfaXB2NDpqYSxfaXB2NjpxYSxfaXNvRGF0ZTpKYSxfaXNvRGF0ZVRpbWU6VmEsX2lzb0R1cmF0aW9uOkdhLF9pc29UaW1lOkthLF9qd3Q6SGEsX2tzdWlkOk1hLF9sYXp5Onp2LF9sZW5ndGg6UXQsX2xpdGVyYWw6ZnYsX2xvd2VyY2FzZTpRbixfbHQ6R2UsX2x0ZTp4ZSxfbWFjOndtLF9tYXA6ZHYsX21heDp4ZSxfbWF4TGVuZ3RoOll0LF9tYXhTaXplOkN0LF9taW1lOnNvLF9taW46SWUsX21pbkxlbmd0aDphdCxfbWluU2l6ZTpRZSxfbXVsdGlwbGVPZjokdCxfbmFuOkptLF9uYW5vaWQ6RWEsX25hdGl2ZUVudW06bXYsX25lZ2F0aXZlOlZzLF9uZXZlcjpGbSxfbm9ubmVnYXRpdmU6S3MsX25vbm9wdGlvbmFsOnl2LF9ub25wb3NpdGl2ZTpKcyxfbm9ybWFsaXplOnJvLF9udWxsOkRtLF9udWxsYWJsZTp2dixfbnVtYmVyOnptLF9vcHRpb25hbDpidixfb3ZlcndyaXRlOldlLF9wYXJzZTpVbixfcGFyc2VBc3luYzpGbixfcGlwZTp3dixfcG9zaXRpdmU6V3MsX3Byb21pc2U6eHYsX3Byb3BlcnRpZXM6b28sX3Byb3BlcnR5OkdzLF9yZWFkb25seTpTdixfcmVjb3JkOnV2LF9yZWZpbmU6UW0sX3JlZ2V4OlluLF9zYWZlRGVjb2RlOkhpLF9zYWZlRGVjb2RlQXN5bmM6VmksX3NhZmVFbmNvZGU6RmksX3NhZmVFbmNvZGVBc3luYzpXaSxfc2FmZVBhcnNlOkhuLF9zYWZlUGFyc2VBc3luYzpXbixfc2V0OnB2LF9zaXplOkd0LF9zbHVnaWZ5OmxvLF9zdGFydHNXaXRoOnRvLF9zdHJpbmc6a20sX3N0cmluZ0Zvcm1hdDpYdCxfc3RyaW5nYm9vbDpvZixfc3VjY2Vzczprdixfc3VwZXJSZWZpbmU6WG0sX3N5bWJvbDpxbSxfdGVtcGxhdGVMaXRlcmFsOlR2LF90b0xvd2VyQ2FzZTphbyxfdG9VcHBlckNhc2U6Y28sX3RyYW5zZm9ybTpndixfdHJpbTppbyxfdHVwbGU6bHYsX3VpbnQzMjpFbSxfdWludDY0OmptLF91bGlkOk5hLF91bmRlZmluZWQ6TG0sX3VuaW9uOnJ2LF91bmtub3duOlVtLF91cHBlcmNhc2U6WG4sX3VybDpIcyxfdXVpZDp4YSxfdXVpZHY0OklhLF91dWlkdjY6QWEsX3V1aWR2NzpDYSxfdm9pZDpIbSxfeGlkOlphLF94b3I6aXYsYmFzZTY0Q2hhcnNldDpiaCxiYXNlNjR1cmxDaGFyc2V0OmlhLGNhblBhcnNlVVJMOm9hLGNsb25lOnNlLGNvbXBpbGU6d2EsY29tcGlsZUZuOnN2LGNvbmZpZzpkZSxjcmVhdGVTdGFuZGFyZEpTT05TY2hlbWFNZXRob2Q6bWksY3JlYXRlVG9KU09OU2NoZW1hTWV0aG9kOnNmLGRlY29kZTpkYixkZWNvZGVBc3luYzpoYixkZXNjcmliZTp0ZixlbmNvZGU6dWIsZW5jb2RlQXN5bmM6cGIsZXh0cmFjdERlZnM6UHYsZmluYWxpemU6RXYsZmxhdHRlbkVycm9yOlJzLGZvcm1hdEVycm9yOk5zLGdldERpc2NyaW1pbmF0ZWRPcHRpb246dWEsZ2xvYmFsQ29uZmlnOndlLGdsb2JhbFJlZ2lzdHJ5Ok5lLGhhbmRsZVVucmVwcmVzZW50YWJsZTpBdixpbml0aWFsaXplQ29udGV4dDpJdixpc0JhY2tFZGdlOnZtLGlzUmVjdXJzaXZlU2NoZW1hOmV2LGlzVmFsaWRCYXNlNjQ6cmEsaXNWYWxpZEJhc2U2NFVSTDokaCxpc1ZhbGlkQ0lEUnY2OmZoLGlzVmFsaWRDcmVkaXRDYXJkOl9oLGlzVmFsaWRJQkFOOlNoLGlzVmFsaWRJUHY2OnNhLGlzVmFsaWRKV1Q6emgsbG9jYWxlczpnYSxtZW1vaXplcjpCcyxtZXJnZVZhbHVlczpwcyxtZXRhOm5mLHBhcnNlOmNpLHBhcnNlQXN5bmM6bGkscGFyc2VVUkxPYmplY3Q6R3AscHJldHRpZnlFcnJvcjpxaSxwcm9jZXNzOk92LHByb2Nlc3NTY2hlbWE6Q3YscmVnZXhlczpMcyxyZWdpc3RyeTpVcyxzYWZlRGVjb2RlOmZiLHNhZmVEZWNvZGVBc3luYzpiYixzYWZlRW5jb2RlOm1iLHNhZmVFbmNvZGVBc3luYzpnYixzYWZlUGFyc2U6RGQsc2FmZVBhcnNlQXN5bmM6aWIsc3RhbmRhcmRQcm9wczp0YSxzdHJpcFRhYkFuZE5ld2xpbmU6ZGksdG9Eb3RQYXRoOkxkLHRvSlNPTlNjaGVtYTpZYSx0b1pvZDpUcyx0cmVlaWZ5RXJyb3I6amksdXJsSG9zdG5hbWVPazpZcCx1cmxQcm90b2NvbE9rOlFwLHV0aWw6TmksdmFsaWRhdGU6TXMsdmFsaWRhdGVBc3luYzpqcyx2YWxpZGF0ZVVSTDpLcCx2ZXJzaW9uOkZwLHdpdGhQYXJzZXI6U2F9LFN5bWJvbC50b1N0cmluZ1RhZyx7dmFsdWU6Ik1vZHVsZSJ9KSksanU9U3ltYm9sKCJ6LnZpc2l0L3Jlc29sdmluZyIpO2Z1bmN0aW9uIFFhKGUsdCl7Y29uc3Qgbj10eXBlb2YgdD09ImZ1bmN0aW9uIj90OihhLGkpPT57Y29uc3QgZD10W2EuX3pvZC5kZWYudHlwZV07cmV0dXJuIGQ/ZChhLGkpOmF9LG89bmV3IE1hcDtmdW5jdGlvbiBzKGEpe2NvbnN0IGk9by5nZXQoYSk7aWYoaT09PWp1KXJldHVybiBuZXcgZmEoe3R5cGU6ImxhenkiLGdldHRlcjooKT0+by5nZXQoYSl9KTtpZihpIT09dm9pZCAwKXJldHVybiBpO28uc2V0KGEsanUpO2NvbnN0IGQ9cihhKSx1PW4oZCxkIT09YSk7cmV0dXJuIG8uc2V0KGEsdSksdX1mdW5jdGlvbiByKGEpe2NvbnN0IGk9YS5fem9kLmRlZjtzd2l0Y2goaS50eXBlKXtjYXNlIm9iamVjdCI6e2NvbnN0IHU9aS5zaGFwZSxwPU9iamVjdC5rZXlzKHUpO2xldCBoPSExO2NvbnN0IGI9e307Zm9yKGNvbnN0IGsgb2YgcCl7Y29uc3QgVD1zKHVba10pO1QhPT11W2tdJiYoaD0hMCksYltrXT1UfWxldCAkPWkuY2F0Y2hhbGw7cmV0dXJuIGkuY2F0Y2hhbGwmJigkPXMoaS5jYXRjaGFsbCksJCE9PWkuY2F0Y2hhbGwmJihoPSEwKSksaD9zZShhLHsuLi5pLHNoYXBlOmIsY2F0Y2hhbGw6JH0pOmF9Y2FzZSJhcnJheSI6e2NvbnN0IHU9cyhpLmVsZW1lbnQpO3JldHVybiB1PT09aS5lbGVtZW50P2E6c2UoYSx7Li4uaSxlbGVtZW50OnV9KX1jYXNlInR1cGxlIjp7Y29uc3QgdT1pLml0ZW1zO2xldCBwPSExO2NvbnN0IGg9W107Zm9yKGNvbnN0ICQgb2YgdSl7Y29uc3Qgaz1zKCQpO2shPT0kJiYocD0hMCksaC5wdXNoKGspfWxldCBiPWkucmVzdDtyZXR1cm4gaS5yZXN0JiYoYj1zKGkucmVzdCksYiE9PWkucmVzdCYmKHA9ITApKSxwP3NlKGEsey4uLmksaXRlbXM6aCxyZXN0OmJ9KTphfWNhc2UicmVjb3JkIjpjYXNlIm1hcCI6e2NvbnN0IHU9cyhpLmtleVR5cGUpLHA9cyhpLnZhbHVlVHlwZSk7cmV0dXJuIHU9PT1pLmtleVR5cGUmJnA9PT1pLnZhbHVlVHlwZT9hOnNlKGEsey4uLmksa2V5VHlwZTp1LHZhbHVlVHlwZTpwfSl9Y2FzZSJzZXQiOntjb25zdCB1PXMoaS52YWx1ZVR5cGUpO3JldHVybiB1PT09aS52YWx1ZVR5cGU/YTpzZShhLHsuLi5pLHZhbHVlVHlwZTp1fSl9Y2FzZSJ1bmlvbiI6e2NvbnN0IHU9aS5vcHRpb25zO2xldCBwPSExO2NvbnN0IGg9W107Zm9yKGNvbnN0IGIgb2YgdSl7Y29uc3QgJD1zKGIpOyQhPT1iJiYocD0hMCksaC5wdXNoKCQpfXJldHVybiBwP3NlKGEsey4uLmksb3B0aW9uczpofSk6YX1jYXNlImludGVyc2VjdGlvbiI6e2NvbnN0IHU9cyhpLmxlZnQpLHA9cyhpLnJpZ2h0KTtyZXR1cm4gdT09PWkubGVmdCYmcD09PWkucmlnaHQ/YTpzZShhLHsuLi5pLGxlZnQ6dSxyaWdodDpwfSl9Y2FzZSJvcHRpb25hbCI6Y2FzZSJudWxsYWJsZSI6Y2FzZSJkZWZhdWx0IjpjYXNlInByZWZhdWx0IjpjYXNlImNhdGNoIjpjYXNlInJlYWRvbmx5IjpjYXNlIm5vbm9wdGlvbmFsIjpjYXNlInByb21pc2UiOmNhc2Uic3VjY2VzcyI6e2NvbnN0IHU9cyhpLmlubmVyVHlwZSk7cmV0dXJuIHU9PT1pLmlubmVyVHlwZT9hOnNlKGEsey4uLmksaW5uZXJUeXBlOnV9KX1jYXNlInBpcGUiOntjb25zdCB1PXMoaS5pbikscD1zKGkub3V0KTtyZXR1cm4gdT09PWkuaW4mJnA9PT1pLm91dD9hOnNlKGEsey4uLmksaW46dSxvdXQ6cH0pfWNhc2UiZnVuY3Rpb24iOntjb25zdCB1PXMoaS5pbnB1dCkscD1zKGkub3V0cHV0KTtyZXR1cm4gdT09PWkuaW5wdXQmJnA9PT1pLm91dHB1dD9hOnNlKGEsey4uLmksaW5wdXQ6dSxvdXRwdXQ6cH0pfWNhc2UibGF6eSI6e2NvbnN0IHU9aS5nZXR0ZXIse19jYWNoZWRJbm5lcjpwLC4uLmh9PWk7cmV0dXJuIHNlKGEsey4uLmgsZ2V0dGVyOigpPT5zKHUoKSl9KX1jYXNlInRlbXBsYXRlX2xpdGVyYWwiOmNhc2Uic3RyaW5nIjpjYXNlIm51bWJlciI6Y2FzZSJpbnQiOmNhc2UiYm9vbGVhbiI6Y2FzZSJiaWdpbnQiOmNhc2Uic3ltYm9sIjpjYXNlInVuZGVmaW5lZCI6Y2FzZSJudWxsIjpjYXNlInZvaWQiOmNhc2UibmV2ZXIiOmNhc2UiYW55IjpjYXNlInVua25vd24iOmNhc2UiZGF0ZSI6Y2FzZSJuYW4iOmNhc2UiZW51bSI6Y2FzZSJsaXRlcmFsIjpjYXNlImZpbGUiOmNhc2UidHJhbnNmb3JtIjpjYXNlImN1c3RvbSI6cmV0dXJuIGE7ZGVmYXVsdDpyZXR1cm4gYX19cmV0dXJuIHMoZSl9ZnVuY3Rpb24gWGEoZSl7cmV0dXJuISFlLl96b2R9ZnVuY3Rpb24gbGYoZSx0KXtyZXR1cm4gWGEoZSk/RGQoZSx0KTplLnNhZmVQYXJzZSh0KX1mdW5jdGlvbiAkJChlKXtpZighZSlyZXR1cm47bGV0IHQ7aWYoWGEoZSk/dD1lLl96b2Q/LmRlZj8uc2hhcGU6dD1lLnNoYXBlLCEhdCl7aWYodHlwZW9mIHQ9PSJmdW5jdGlvbiIpdHJ5e3JldHVybiB0KCl9Y2F0Y2h7cmV0dXJufXJldHVybiB0fX1mdW5jdGlvbiB5JChlKXtpZihYYShlKSl7Y29uc3Qgcj1lLl96b2Q/LmRlZjtpZihyKXtpZihyLnZhbHVlIT09dm9pZCAwKXJldHVybiByLnZhbHVlO2lmKEFycmF5LmlzQXJyYXkoci52YWx1ZXMpJiZyLnZhbHVlcy5sZW5ndGg+MClyZXR1cm4gci52YWx1ZXNbMF19fWNvbnN0IG49ZS5fZGVmO2lmKG4pe2lmKG4udmFsdWUhPT12b2lkIDApcmV0dXJuIG4udmFsdWU7aWYoQXJyYXkuaXNBcnJheShuLnZhbHVlcykmJm4udmFsdWVzLmxlbmd0aD4wKXJldHVybiBuLnZhbHVlc1swXX1jb25zdCBvPWUudmFsdWU7aWYobyE9PXZvaWQgMClyZXR1cm4gb31jb25zdCBrJD1PYmplY3QuZnJlZXplKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7X19wcm90b19fOm51bGwsZW5kc1dpdGg6bm8sZ3Q6WWUsZ3RlOkllLGluY2x1ZGVzOmVvLGxlbmd0aDpRdCxsb3dlcmNhc2U6UW4sbHQ6R2UsbHRlOnhlLG1heExlbmd0aDpZdCxtYXhTaXplOkN0LG1pbWU6c28sbWluTGVuZ3RoOmF0LG1pblNpemU6UWUsbXVsdGlwbGVPZjokdCxuZWdhdGl2ZTpWcyxub25uZWdhdGl2ZTpLcyxub25wb3NpdGl2ZTpKcyxub3JtYWxpemU6cm8sb3ZlcndyaXRlOldlLHBvc2l0aXZlOldzLHByb3BlcnRpZXM6b28scHJvcGVydHk6R3MscmVnZXg6WW4sc2l6ZTpHdCxzbHVnaWZ5OmxvLHN0YXJ0c1dpdGg6dG8sdG9Mb3dlckNhc2U6YW8sdG9VcHBlckNhc2U6Y28sdHJpbTppbyx1cHBlcmNhc2U6WG59LFN5bWJvbC50b1N0cmluZ1RhZyx7dmFsdWU6Ik1vZHVsZSJ9KSkscXU9bmV3IFdlYWtTZXQoW09iamVjdC5wcm90b3R5cGUsRXJyb3IucHJvdG90eXBlXSk7ZnVuY3Rpb24gZXMoZSx0LG4pe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiExLGdldCgpe2NvbnN0IG89bih0aGlzKTtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsdCx7dmFsdWU6byxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KSxvfSxzZXQobyl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsdCx7dmFsdWU6byxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KX19KX1jb25zdCB1Zj0oZSx0KT0+e3FkLmluaXQoZSx0KSxlLm5hbWU9IlpvZEVycm9yIjtjb25zdCBuPU9iamVjdC5nZXRQcm90b3R5cGVPZihlKTtxdS5oYXMobil8fChxdS5hZGQobiksZXMobiwiZm9ybWF0IixvPT5zPT5OcyhvLHMpKSxlcyhuLCJmbGF0dGVuIixvPT5zPT5ScyhvLHMpKSxlcyhuLCJhZGRJc3N1ZSIsbz0+cz0+e28uaXNzdWVzLnB1c2gocyksby5tZXNzYWdlPUpTT04uc3RyaW5naWZ5KG8uaXNzdWVzLGFzLDIpfSksZXMobiwiYWRkSXNzdWVzIixvPT5zPT57by5pc3N1ZXMucHVzaCguLi5zKSxvLm1lc3NhZ2U9SlNPTi5zdHJpbmdpZnkoby5pc3N1ZXMsYXMsMil9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkobiwiaXNFbXB0eSIse2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiExLGdldCgpe3JldHVybiB0aGlzLmlzc3Vlcy5sZW5ndGg9PT0wfX0pKX0sZGY9bSgiWm9kRXJyb3IiLHVmKSx6ZT1tKCJab2RFcnJvciIsdWYsdm9pZCAwLHtQYXJlbnQ6RXJyb3J9KSxlYz1Vbih6ZSksdGM9Rm4oemUpLG5jPUhuKHplKSxvYz1Xbih6ZSksc2M9TGkoemUpLHJjPURpKHplKSxpYz1CaSh6ZSksYWM9VWkoemUpLGNjPUZpKHplKSxsYz1IaSh6ZSksdWM9V2koemUpLGRjPVZpKHplKTtmdW5jdGlvbiBfJCgpe3dlLmxvY2FsZUVycm9yfHxkZSgkbSgpKX1mdW5jdGlvbiBQdCgpe3dlLm1lbW9pemVyfHxkZSh7bWVtb2l6ZXI6QnMoKX0pfWNvbnN0IGo9bSgiWm9kVHlwZSIsKGUsdCk9PihfJCgpLE4uaW5pdChlLHQpLGUuZGVmPXQsZS50eXBlPXQudHlwZSxlKSx7Y2hlY2soLi4uZSl7Y29uc3QgdD10aGlzLmRlZjtyZXR1cm4gdGhpcy5jbG9uZSh2ZSh0LHtjaGVja3M6Wy4uLnQuY2hlY2tzPz9bXSwuLi5lLm1hcChuPT50eXBlb2Ygbj09ImZ1bmN0aW9uIj97X3pvZDp7Y2hlY2s6bixkZWY6e2NoZWNrOiJjdXN0b20ifSxvbmF0dGFjaDpbXX19Om4pXX0pLHtwYXJlbnQ6ITB9KX0sd2l0aCguLi5lKXtyZXR1cm4gdGhpcy5jaGVjayguLi5lKX0sY2xvbmUoZSx0KXtyZXR1cm4gc2UodGhpcyxlLHQpfSxicmFuZCgpe3JldHVybiB0aGlzfSxyZWdpc3RlcihlLHQpe3JldHVybiBlLmFkZCh0aGlzLHQpLHRoaXN9LHJlZmluZShlLHQpe3JldHVybiB0aGlzLmNoZWNrKGpyKGUsdCkpfSxzdXBlclJlZmluZShlLHQpe3JldHVybiB0aGlzLmNoZWNrKHFyKGUsdCkpfSxvdmVyd3JpdGUoZSl7cmV0dXJuIHRoaXMuY2hlY2soV2UoZSkpfSxvcHRpb25hbCgpe3JldHVybiB0ZSh0aGlzKX0sZXhhY3RPcHRpb25hbCgpe3JldHVybiB2cih0aGlzKX0sbnVsbGFibGUoKXtyZXR1cm4gSHQodGhpcyl9LG51bGxpc2goKXtyZXR1cm4gdGUoSHQodGhpcykpfSxub25vcHRpb25hbChlKXtyZXR1cm4gU3IodGhpcyxlKX0sYXJyYXkoKXtyZXR1cm4gTyh0aGlzKX0sb3IoZSl7cmV0dXJuIEQoW3RoaXMsZV0pfSxhbmQoZSl7cmV0dXJuIHBuKHRoaXMsZSl9LHRyYW5zZm9ybShlKXtyZXR1cm4gWm4odGhpcyxSbyhlKSl9LGRlZmF1bHQoZSl7cmV0dXJuIGtyKHRoaXMsZSl9LHByZWZhdWx0KGUpe3JldHVybiB3cih0aGlzLGUpfSxjYXRjaChlKXtyZXR1cm4geHIodGhpcyxlKX0scGlwZShlKXtyZXR1cm4gWm4odGhpcyxlKX0scmVhZG9ubHkoKXtyZXR1cm4gUHIodGhpcyl9LGRlc2NyaWJlKGUpe2NvbnN0IHQ9dGhpcy5jbG9uZSgpO3JldHVybiBOZS5hZGQodCx7ZGVzY3JpcHRpb246ZX0pLHR9LG1ldGEoLi4uZSl7aWYoZS5sZW5ndGg9PT0wKXJldHVybiBOZS5nZXQodGhpcyk7Y29uc3QgdD10aGlzLmNsb25lKCk7cmV0dXJuIE5lLmFkZCh0LGVbMF0pLHR9LGlzT3B0aW9uYWwoKXtyZXR1cm4gdGhpcy5zYWZlUGFyc2Uodm9pZCAwKS5zdWNjZXNzfSxpc051bGxhYmxlKCl7cmV0dXJuIHRoaXMuc2FmZVBhcnNlKG51bGwpLnN1Y2Nlc3N9LGFwcGx5KGUsLi4udCl7cmV0dXJuIHQubGVuZ3RoPT09MD9lKHRoaXMpOmUodGhpcywuLi50KX0sZ2V0In5zdGFuZGFyZCIoKXtyZXR1cm4gRXModGhpcywifnN0YW5kYXJkIix7Li4udGEodGhpcyksanNvblNjaGVtYTp7aW5wdXQ6bWkoKSxvdXRwdXQ6bWkoKX19KX0sc2V0In5zdGFuZGFyZCIoZSl7S2UodGhpcywifnN0YW5kYXJkIixlKX0scGFyc2U6ZnVuY3Rpb24gZSh0LG4pe3JldHVybiBlYyh0aGlzLHQsbix7Y2FsbGVlOmV9KX0scGFyc2VBc3luYzphc3luYyBmdW5jdGlvbiBlKHQsbil7cmV0dXJuIGF3YWl0IHRjKHRoaXMsdCxuLHtjYWxsZWU6ZX0pfSxzYWZlUGFyc2UoZSx0KXtyZXR1cm4gbmModGhpcyxlLHQpfSxhc3luYyBzYWZlUGFyc2VBc3luYyhlLHQpe3JldHVybiBvYyh0aGlzLGUsdCl9LGdldCBzcGEoKXtyZXR1cm4gdGhpcz8uc2FmZVBhcnNlQXN5bmN9LHNldCBzcGEoZSl7S2UodGhpcywic3BhIixlKX0sdmFsaWRhdGUoZSx0KXtyZXR1cm4gTXModGhpcyxlLHQpfSx2YWxpZGF0ZUFzeW5jKGUsdCl7cmV0dXJuIGpzKHRoaXMsZSx0KX0sZW5jb2RlOmZ1bmN0aW9uIGUodCxuKXtyZXR1cm4gc2ModGhpcyx0LG4se2NhbGxlZTplfSl9LGRlY29kZTpmdW5jdGlvbiBlKHQsbil7cmV0dXJuIHJjKHRoaXMsdCxuLHtjYWxsZWU6ZX0pfSxlbmNvZGVBc3luYzphc3luYyBmdW5jdGlvbiBlKHQsbil7cmV0dXJuIGF3YWl0IGljKHRoaXMsdCxuLHtjYWxsZWU6ZX0pfSxkZWNvZGVBc3luYzphc3luYyBmdW5jdGlvbiBlKHQsbil7cmV0dXJuIGF3YWl0IGFjKHRoaXMsdCxuLHtjYWxsZWU6ZX0pfSxzYWZlRW5jb2RlKGUsdCl7cmV0dXJuIGNjKHRoaXMsZSx0KX0sc2FmZURlY29kZShlLHQpe3JldHVybiBsYyh0aGlzLGUsdCl9LGFzeW5jIHNhZmVFbmNvZGVBc3luYyhlLHQpe3JldHVybiB1Yyh0aGlzLGUsdCl9LGFzeW5jIHNhZmVEZWNvZGVBc3luYyhlLHQpe3JldHVybiBkYyh0aGlzLGUsdCl9LHRvSlNPTlNjaGVtYShlKXtyZXR1cm4gc2YoKShlKX0sZ2V0IGRlc2NyaXB0aW9uKCl7cmV0dXJuIE5lLmdldCh0aGlzKT8uZGVzY3JpcHRpb259LGdldCBfZGVmKCl7cmV0dXJuIHRoaXMuX3pvZC5kZWZ9fSksdW89bSgiX1pvZFN0cmluZyIsKGUsdCk9PntHbi5pbml0KGUsdCksai5pbml0KGUsdCksZS5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShuLG8scyk9PlJ2KCl9LEJuKHtmb3JtYXQ6ZT0+WmUoKS5mb3JtYXQ/P251bGwsbWluTGVuZ3RoOmU9PlplKCkubWluaW11bT8/bnVsbCxtYXhMZW5ndGg6ZT0+WmUoKS5tYXhpbXVtPz9udWxsfSx7cmVnZXgoLi4uZSl7cmV0dXJuIHRoaXMuY2hlY2soWW4oLi4uZSkpfSxpbmNsdWRlcyguLi5lKXtyZXR1cm4gdGhpcy5jaGVjayhlbyguLi5lKSl9LHN0YXJ0c1dpdGgoLi4uZSl7cmV0dXJuIHRoaXMuY2hlY2sodG8oLi4uZSkpfSxlbmRzV2l0aCguLi5lKXtyZXR1cm4gdGhpcy5jaGVjayhubyguLi5lKSl9LG1pbiguLi5lKXtyZXR1cm4gdGhpcy5jaGVjayhhdCguLi5lKSl9LG1heCguLi5lKXtyZXR1cm4gdGhpcy5jaGVjayhZdCguLi5lKSl9LGxlbmd0aCguLi5lKXtyZXR1cm4gdGhpcy5jaGVjayhRdCguLi5lKSl9LG5vbmVtcHR5KC4uLmUpe3JldHVybiB0aGlzLmNoZWNrKGF0KDEsLi4uZSkpfSxsb3dlcmNhc2UoZSl7cmV0dXJuIHRoaXMuY2hlY2soUW4oZSkpfSx1cHBlcmNhc2UoZSl7cmV0dXJuIHRoaXMuY2hlY2soWG4oZSkpfSx0cmltKCl7cmV0dXJuIHRoaXMuY2hlY2soaW8oKSl9LG5vcm1hbGl6ZSguLi5lKXtyZXR1cm4gdGhpcy5jaGVjayhybyguLi5lKSl9LHRvTG93ZXJDYXNlKCl7cmV0dXJuIHRoaXMuY2hlY2soYW8oKSl9LHRvVXBwZXJDYXNlKCl7cmV0dXJuIHRoaXMuY2hlY2soY28oKSl9LHNsdWdpZnkoKXtyZXR1cm4gdGhpcy5jaGVjayhsbygpKX19KSksZW49bSgiWm9kU3RyaW5nIiwoZSx0KT0+e0duLmluaXQoZSx0KSx1by5pbml0KGUsdCl9LHtlbWFpbChlKXtyZXR1cm4gdGhpcy5jaGVjayhUYShwbyxlKSl9LHVybChlKXtyZXR1cm4gdGhpcy5jaGVjayhIcyhybixlKSl9LGp3dChlKXtyZXR1cm4gdGhpcy5jaGVjayhIYShJbyxlKSl9LGVtb2ppKGUpe3JldHVybiB0aGlzLmNoZWNrKFBhKG1vLGUpKX0sZ3VpZChlKXtyZXR1cm4gdGhpcy5jaGVjayh6YShobyxlKSl9LHV1aWQoZSl7cmV0dXJuIHRoaXMuY2hlY2soeGEoVWUsZSkpfSx1dWlkdjQoZSl7cmV0dXJuIHRoaXMuY2hlY2soSWEoVWUsZSkpfSx1dWlkdjYoZSl7cmV0dXJuIHRoaXMuY2hlY2soQWEoVWUsZSkpfSx1dWlkdjcoZSl7cmV0dXJuIHRoaXMuY2hlY2soQ2EoVWUsZSkpfSxuYW5vaWQoZSl7cmV0dXJuIHRoaXMuY2hlY2soRWEoZm8sZSkpfSxjdWlkKGUpe3JldHVybiB0aGlzLmNoZWNrKE9hKGdvLGUpKX0sY3VpZDIoZSl7cmV0dXJuIHRoaXMuY2hlY2soUmEoYm8sZSkpfSx1bGlkKGUpe3JldHVybiB0aGlzLmNoZWNrKE5hKHZvLGUpKX0sYmFzZTY0KGUpe3JldHVybiB0aGlzLmNoZWNrKEJhKFRvLGUpKX0sYmFzZTY0dXJsKGUpe3JldHVybiB0aGlzLmNoZWNrKFVhKHpvLGUpKX0seGlkKGUpe3JldHVybiB0aGlzLmNoZWNrKFphKCRvLGUpKX0sa3N1aWQoZSl7cmV0dXJuIHRoaXMuY2hlY2soTWEoeW8sZSkpfSxpcHY0KGUpe3JldHVybiB0aGlzLmNoZWNrKGphKGtvLGUpKX0saXB2NihlKXtyZXR1cm4gdGhpcy5jaGVjayhxYShfbyxlKSl9LGNpZHJ2NChlKXtyZXR1cm4gdGhpcy5jaGVjayhMYSh3byxlKSl9LGNpZHJ2NihlKXtyZXR1cm4gdGhpcy5jaGVjayhEYShTbyxlKSl9LGUxNjQoZSl7cmV0dXJuIHRoaXMuY2hlY2soRmEoeG8sZSkpfSxkYXRldGltZShlKXtyZXR1cm4gdGhpcy5jaGVjayhWYSh0bixlKSl9LGRhdGUoZSl7cmV0dXJuIHRoaXMuY2hlY2soSmEobm4sZSkpfSx0aW1lKGUpe3JldHVybiB0aGlzLmNoZWNrKEthKG9uLGUpKX0sZHVyYXRpb24oZSl7cmV0dXJuIHRoaXMuY2hlY2soR2Eoc24sZSkpfX0pO2Z1bmN0aW9uIGYoZSl7cmV0dXJuIGttKGVuLGUpfWNvbnN0IFk9bSgiWm9kU3RyaW5nRm9ybWF0IiwoZSx0KT0+e2VlLmluaXQoZSx0KSx1by5pbml0KGUsdCl9KSx0bj1tKCJab2RJU09EYXRlVGltZSIsKGUsdCk9PnthaC5pbml0KGUsdCksWS5pbml0KGUsdCl9KSxubj1tKCJab2RJU09EYXRlIiwoZSx0KT0+e2NoLmluaXQoZSx0KSxZLmluaXQoZSx0KX0pLG9uPW0oIlpvZElTT1RpbWUiLChlLHQpPT57bGguaW5pdChlLHQpLFkuaW5pdChlLHQpfSksc249bSgiWm9kSVNPRHVyYXRpb24iLChlLHQpPT57dWguaW5pdChlLHQpLFkuaW5pdChlLHQpfSkscG89bSgiWm9kRW1haWwiLChlLHQpPT57SnAuaW5pdChlLHQpLFkuaW5pdChlLHQpfSk7ZnVuY3Rpb24gcGMoZSl7cmV0dXJuIFRhKHBvLGUpfWNvbnN0IGhvPW0oIlpvZEdVSUQiLChlLHQpPT57V3AuaW5pdChlLHQpLFkuaW5pdChlLHQpfSk7ZnVuY3Rpb24gaGMoZSl7cmV0dXJuIHphKGhvLGUpfWNvbnN0IFVlPW0oIlpvZFVVSUQiLChlLHQpPT57VnAuaW5pdChlLHQpLFkuaW5pdChlLHQpfSk7ZnVuY3Rpb24gbWMoZSl7cmV0dXJuIHhhKFVlLGUpfWZ1bmN0aW9uIGZjKGUpe3JldHVybiBJYShVZSxlKX1mdW5jdGlvbiBnYyhlKXtyZXR1cm4gQWEoVWUsZSl9ZnVuY3Rpb24gYmMoZSl7cmV0dXJuIENhKFVlLGUpfWNvbnN0IHJuPW0oIlpvZFVSTCIsKGUsdCk9PntYcC5pbml0KGUsdCksWS5pbml0KGUsdCl9KTtmdW5jdGlvbiB2YyhlKXtyZXR1cm4gSHMocm4sZSl9ZnVuY3Rpb24gJGMoZSl7cmV0dXJuIEhzKHJuLHtwcm90b2NvbDpKaSxob3N0bmFtZTphcCwuLi5fKGUpfSl9Y29uc3QgbW89bSgiWm9kRW1vamkiLChlLHQpPT57ZWguaW5pdChlLHQpLFkuaW5pdChlLHQpfSk7ZnVuY3Rpb24geWMoZSl7cmV0dXJuIFBhKG1vLGUpfWNvbnN0IGZvPW0oIlpvZE5hbm9JRCIsKGUsdCk9Pnt0aC5pbml0KGUsdCksWS5pbml0KGUsdCl9KTtmdW5jdGlvbiBrYyhlKXtyZXR1cm4gRWEoZm8sZSl9Y29uc3QgZ289bSgiWm9kQ1VJRCIsKGUsdCk9PntuaC5pbml0KGUsdCksWS5pbml0KGUsdCl9KTtmdW5jdGlvbiBfYyhlKXtyZXR1cm4gT2EoZ28sZSl9Y29uc3QgYm89bSgiWm9kQ1VJRDIiLChlLHQpPT57b2guaW5pdChlLHQpLFkuaW5pdChlLHQpfSk7ZnVuY3Rpb24gd2MoZSl7cmV0dXJuIFJhKGJvLGUpfWNvbnN0IHZvPW0oIlpvZFVMSUQiLChlLHQpPT57c2guaW5pdChlLHQpLFkuaW5pdChlLHQpfSk7ZnVuY3Rpb24gU2MoZSl7cmV0dXJuIE5hKHZvLGUpfWNvbnN0ICRvPW0oIlpvZFhJRCIsKGUsdCk9PntyaC5pbml0KGUsdCksWS5pbml0KGUsdCl9KTtmdW5jdGlvbiBUYyhlKXtyZXR1cm4gWmEoJG8sZSl9Y29uc3QgeW89bSgiWm9kS1NVSUQiLChlLHQpPT57aWguaW5pdChlLHQpLFkuaW5pdChlLHQpfSk7ZnVuY3Rpb24gemMoZSl7cmV0dXJuIE1hKHlvLGUpfWNvbnN0IGtvPW0oIlpvZElQdjQiLChlLHQpPT57ZGguaW5pdChlLHQpLFkuaW5pdChlLHQpfSk7ZnVuY3Rpb24geGMoZSl7cmV0dXJuIGphKGtvLGUpfWNvbnN0IFlzPW0oIlpvZE1BQyIsKGUsdCk9PntoaC5pbml0KGUsdCksWS5pbml0KGUsdCl9KTtmdW5jdGlvbiBJYyhlKXtyZXR1cm4gd20oWXMsZSl9Y29uc3QgX289bSgiWm9kSVB2NiIsKGUsdCk9PntwaC5pbml0KGUsdCksWS5pbml0KGUsdCl9KTtmdW5jdGlvbiBBYyhlKXtyZXR1cm4gcWEoX28sZSl9Y29uc3Qgd289bSgiWm9kQ0lEUnY0IiwoZSx0KT0+e21oLmluaXQoZSx0KSxZLmluaXQoZSx0KX0pO2Z1bmN0aW9uIENjKGUpe3JldHVybiBMYSh3byxlKX1jb25zdCBTbz1tKCJab2RDSURSdjYiLChlLHQpPT57Z2guaW5pdChlLHQpLFkuaW5pdChlLHQpfSk7ZnVuY3Rpb24gUGMoZSl7cmV0dXJuIERhKFNvLGUpfWNvbnN0IFRvPW0oIlpvZEJhc2U2NCIsKGUsdCk9Pnt2aC5pbml0KGUsdCksWS5pbml0KGUsdCl9KTtmdW5jdGlvbiBFYyhlKXtyZXR1cm4gQmEoVG8sZSl9Y29uc3Qgem89bSgiWm9kQmFzZTY0VVJMIiwoZSx0KT0+e3loLmluaXQoZSx0KSxZLmluaXQoZSx0KX0pO2Z1bmN0aW9uIE9jKGUpe3JldHVybiBVYSh6byxlKX1jb25zdCB4bz1tKCJab2RFMTY0IiwoZSx0KT0+e2toLmluaXQoZSx0KSxZLmluaXQoZSx0KX0pO2Z1bmN0aW9uIFJjKGUpe3JldHVybiBGYSh4byxlKX1jb25zdCBRcz1tKCJab2RDcmVkaXRDYXJkIiwoZSx0KT0+e3doLmluaXQoZSx0KSxZLmluaXQoZSx0KX0pO2Z1bmN0aW9uIE5jKGUpe3JldHVybiBTbShRcyxlKX1jb25zdCBYcz1tKCJab2RJQkFOIiwoZSx0KT0+e1RoLmluaXQoZSx0KSxZLmluaXQoZSx0KX0pO2Z1bmN0aW9uIFpjKGUpe3JldHVybiBUbShYcyxlKX1jb25zdCBJbz1tKCJab2RKV1QiLChlLHQpPT57eGguaW5pdChlLHQpLFkuaW5pdChlLHQpfSk7ZnVuY3Rpb24gTWMoZSl7cmV0dXJuIEhhKElvLGUpfWNvbnN0IGx0PW0oIlpvZEN1c3RvbVN0cmluZ0Zvcm1hdCIsKGUsdCk9PntJaC5pbml0KGUsdCksWS5pbml0KGUsdCl9KTtmdW5jdGlvbiBqYyhlLHQsbj17fSl7cmV0dXJuIFh0KGx0LGUsdCxuKX1mdW5jdGlvbiBxYyhlKXtyZXR1cm4gWHQobHQsImhvc3RuYW1lIixpcCxlKX1mdW5jdGlvbiBMYyhlKXtyZXR1cm4gWHQobHQsImhleCIsd3AsZSl9ZnVuY3Rpb24gRGMoZSl7cmV0dXJuIFh0KGx0LCJjdXJyZW5jeV9jb2RlIixscCxlKX1mdW5jdGlvbiBCYyhlLHQpe2NvbnN0IG49dD8uZW5jPz8iaGV4IixvPWAke2V9XyR7bn1gLHM9THNbb107aWYoIXMpdGhyb3cgbmV3IEVycm9yKGBVbnJlY29nbml6ZWQgaGFzaCBmb3JtYXQ6ICR7b31gKTtyZXR1cm4gWHQobHQsbyxzLHQpfWNvbnN0IGFuPW0oIlpvZE51bWJlciIsKGUsdCk9PnthYS5pbml0KGUsdCksai5pbml0KGUsdCksZS5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShuLG8scyk9Pk52KCksZS5pc0Zpbml0ZT0hMH0sQm4oe21pblZhbHVlOmU9Pntjb25zdHttaW5pbXVtOnQsZXhjbHVzaXZlTWluaW11bTpufT1aZSgpO3JldHVybiBNYXRoLm1heCh0Pz9OdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFksbj8/TnVtYmVyLk5FR0FUSVZFX0lORklOSVRZKX0sbWF4VmFsdWU6ZT0+e2NvbnN0e21heGltdW06dCxleGNsdXNpdmVNYXhpbXVtOm59PVplKCk7cmV0dXJuIE1hdGgubWluKHQ/P051bWJlci5QT1NJVElWRV9JTkZJTklUWSxuPz9OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFkpfSxpc0ludDplPT57Y29uc3R7aXNJbnQ6dCxtdWx0aXBsZU9mOm59PVplKCk7cmV0dXJuISF0fHwhIW4/LnNvbWUoTnVtYmVyLmlzU2FmZUludGVnZXIpfSxmb3JtYXQ6ZT0+WmUoKS5mb3JtYXQ/P251bGx9LHtndChlLHQpe3JldHVybiB0aGlzLmNoZWNrKFllKGUsdCkpfSxndGUoZSx0KXtyZXR1cm4gdGhpcy5jaGVjayhJZShlLHQpKX0sbWluKGUsdCl7cmV0dXJuIHRoaXMuY2hlY2soSWUoZSx0KSl9LGx0KGUsdCl7cmV0dXJuIHRoaXMuY2hlY2soR2UoZSx0KSl9LGx0ZShlLHQpe3JldHVybiB0aGlzLmNoZWNrKHhlKGUsdCkpfSxtYXgoZSx0KXtyZXR1cm4gdGhpcy5jaGVjayh4ZShlLHQpKX0saW50KGUpe3JldHVybiB0aGlzLmNoZWNrKE5uKGUpKX0sc2FmZShlKXtyZXR1cm4gdGhpcy5jaGVjayhObihlKSl9LHBvc2l0aXZlKGUpe3JldHVybiB0aGlzLmNoZWNrKFllKDAsZSkpfSxub25uZWdhdGl2ZShlKXtyZXR1cm4gdGhpcy5jaGVjayhJZSgwLGUpKX0sbmVnYXRpdmUoZSl7cmV0dXJuIHRoaXMuY2hlY2soR2UoMCxlKSl9LG5vbnBvc2l0aXZlKGUpe3JldHVybiB0aGlzLmNoZWNrKHhlKDAsZSkpfSxtdWx0aXBsZU9mKGUsdCl7cmV0dXJuIHRoaXMuY2hlY2soJHQoZSx0KSl9LHN0ZXAoZSx0KXtyZXR1cm4gdGhpcy5jaGVjaygkdChlLHQpKX0sZmluaXRlKCl7cmV0dXJuIHRoaXN9fSkpO2Z1bmN0aW9uIE0oZSl7cmV0dXJuIHptKGFuLGUpfWNvbnN0IHV0PW0oIlpvZE51bWJlckZvcm1hdCIsKGUsdCk9PntBaC5pbml0KGUsdCksYW4uaW5pdChlLHQpfSk7ZnVuY3Rpb24gTm4oZSl7cmV0dXJuIEltKHV0LGUpfWZ1bmN0aW9uIFVjKGUpe3JldHVybiBBbSh1dCxlKX1mdW5jdGlvbiBGYyhlKXtyZXR1cm4gQ20odXQsZSl9ZnVuY3Rpb24gSGMoZSl7cmV0dXJuIFBtKHV0LGUpfWZ1bmN0aW9uIFdjKGUpe3JldHVybiBFbSh1dCxlKX1jb25zdCBjbj1tKCJab2RCb29sZWFuIiwoZSx0KT0+e2NhLmluaXQoZSx0KSxqLmluaXQoZSx0KSxlLl96b2QucHJvY2Vzc0pTT05TY2hlbWE9KG4sbyxzKT0+WnYoKX0pO2Z1bmN0aW9uIEcoZSl7cmV0dXJuIE9tKGNuLGUpfWNvbnN0IGxuPW0oIlpvZEJpZ0ludCIsKGUsdCk9PntsYS5pbml0KGUsdCksai5pbml0KGUsdCksZS5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShuLG8scyk9Pk12KCl9LEJuKHttaW5WYWx1ZTplPT5aZSgpLm1pbmltdW0/P251bGwsbWF4VmFsdWU6ZT0+WmUoKS5tYXhpbXVtPz9udWxsLGZvcm1hdDplPT5aZSgpLmZvcm1hdD8/bnVsbH0se2d0ZShlLHQpe3JldHVybiB0aGlzLmNoZWNrKEllKGUsdCkpfSxtaW4oZSx0KXtyZXR1cm4gdGhpcy5jaGVjayhJZShlLHQpKX0sZ3QoZSx0KXtyZXR1cm4gdGhpcy5jaGVjayhZZShlLHQpKX0sbHQoZSx0KXtyZXR1cm4gdGhpcy5jaGVjayhHZShlLHQpKX0sbHRlKGUsdCl7cmV0dXJuIHRoaXMuY2hlY2soeGUoZSx0KSl9LG1heChlLHQpe3JldHVybiB0aGlzLmNoZWNrKHhlKGUsdCkpfSxwb3NpdGl2ZShlKXtyZXR1cm4gdGhpcy5jaGVjayhZZShCaWdJbnQoMCksZSkpfSxuZWdhdGl2ZShlKXtyZXR1cm4gdGhpcy5jaGVjayhHZShCaWdJbnQoMCksZSkpfSxub25wb3NpdGl2ZShlKXtyZXR1cm4gdGhpcy5jaGVjayh4ZShCaWdJbnQoMCksZSkpfSxub25uZWdhdGl2ZShlKXtyZXR1cm4gdGhpcy5jaGVjayhJZShCaWdJbnQoMCksZSkpfSxtdWx0aXBsZU9mKGUsdCl7cmV0dXJuIHRoaXMuY2hlY2soJHQoZSx0KSl9fSkpO2Z1bmN0aW9uIFZjKGUpe3JldHVybiBObShsbixlKX1jb25zdCBBbz1tKCJab2RCaWdJbnRGb3JtYXQiLChlLHQpPT57Q2guaW5pdChlLHQpLGxuLmluaXQoZSx0KX0pO2Z1bmN0aW9uIEpjKGUpe3JldHVybiBNbShBbyxlKX1mdW5jdGlvbiBLYyhlKXtyZXR1cm4gam0oQW8sZSl9Y29uc3QgZXI9bSgiWm9kU3ltYm9sIiwoZSx0KT0+e1BoLmluaXQoZSx0KSxqLmluaXQoZSx0KSxlLl96b2QucHJvY2Vzc0pTT05TY2hlbWE9KG4sbyxzKT0+anYoKX0pO2Z1bmN0aW9uIEdjKGUpe3JldHVybiBxbShlcixlKX1jb25zdCB0cj1tKCJab2RVbmRlZmluZWQiLChlLHQpPT57RWguaW5pdChlLHQpLGouaW5pdChlLHQpLGUuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0obixvLHMpPT5MdigpfSk7ZnVuY3Rpb24gRnQoZSl7cmV0dXJuIExtKHRyLGUpfWNvbnN0IG5yPW0oIlpvZE51bGwiLChlLHQpPT57T2guaW5pdChlLHQpLGouaW5pdChlLHQpLGUuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0obixvLHMpPT5xdigpfSk7ZnVuY3Rpb24gQ28oZSl7cmV0dXJuIERtKG5yLGUpfWNvbnN0IG9yPW0oIlpvZEFueSIsKGUsdCk9PntSaC5pbml0KGUsdCksai5pbml0KGUsdCksZS5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShuLG8scyk9PlV2KCl9KTtmdW5jdGlvbiBQbygpe3JldHVybiBCbShvcil9Y29uc3Qgc3I9bSgiWm9kVW5rbm93biIsKGUsdCk9PntOaC5pbml0KGUsdCksai5pbml0KGUsdCksZS5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShuLG8scyk9PkZ2KCl9KTtmdW5jdGlvbiBLKCl7cmV0dXJuIFVtKHNyKX1jb25zdCBycj1tKCJab2ROZXZlciIsKGUsdCk9PntaaC5pbml0KGUsdCksai5pbml0KGUsdCksZS5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShuLG8scyk9PkJ2KCl9KTtmdW5jdGlvbiB5dChlKXtyZXR1cm4gRm0ocnIsZSl9Y29uc3QgaXI9bSgiWm9kVm9pZCIsKGUsdCk9PntNaC5pbml0KGUsdCksai5pbml0KGUsdCksZS5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShuLG8scyk9PkR2KCl9KTtmdW5jdGlvbiBZYyhlKXtyZXR1cm4gSG0oaXIsZSl9Y29uc3QgRW89bSgiWm9kRGF0ZSIsKGUsdCk9PntqaC5pbml0KGUsdCksai5pbml0KGUsdCksZS5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShuLG8scyk9Pkh2KCksZS5taW49KG4sbyk9PmUuY2hlY2soSWUobixvKSksZS5tYXg9KG4sbyk9PmUuY2hlY2soeGUobixvKSl9LEJuKHttaW5EYXRlOmU9Pntjb25zdHttaW5pbXVtOnR9PVplKCk7cmV0dXJuIHQ/bmV3IERhdGUodCk6bnVsbH0sbWF4RGF0ZTplPT57Y29uc3R7bWF4aW11bTp0fT1aZSgpO3JldHVybiB0P25ldyBEYXRlKHQpOm51bGx9fSx7fSkpO2Z1bmN0aW9uIFFjKGUpe3JldHVybiBXbShFbyxlKX1jb25zdCBhcj1tKCJab2RBcnJheSIsKGUsdCk9PntQdCgpLHFoLmluaXQoZSx0KSxqLmluaXQoZSx0KSxlLl96b2QucHJvY2Vzc0pTT05TY2hlbWE9KG4sbyxzKT0+byQoKSxlLmVsZW1lbnQ9dC5lbGVtZW50fSx7bWluKGUsdCl7cmV0dXJuIHRoaXMuY2hlY2soYXQoZSx0KSl9LG5vbmVtcHR5KGUpe3JldHVybiB0aGlzLmNoZWNrKGF0KDEsZSkpfSxtYXgoZSx0KXtyZXR1cm4gdGhpcy5jaGVjayhZdChlLHQpKX0sbGVuZ3RoKGUsdCl7cmV0dXJuIHRoaXMuY2hlY2soUXQoZSx0KSl9LHVud3JhcCgpe3JldHVybiB0aGlzLmVsZW1lbnR9fSk7ZnVuY3Rpb24gTyhlLHQpe3JldHVybiBLbShhcixlLHQpfWZ1bmN0aW9uIFhjKGUpe2NvbnN0IHQ9ZS5fem9kLmRlZi5zaGFwZTtyZXR1cm4gbWUoT2JqZWN0LmtleXModCkpfWNvbnN0IHVuPW0oIlpvZE9iamVjdCIsKGUsdCk9PntQdCgpLFVoLmluaXQoZSx0KSxqLmluaXQoZSx0KSxlLl96b2QucHJvY2Vzc0pTT05TY2hlbWE9KG4sbyxzKT0+cyQoKSxaZChlLCJzaGFwZSIsbj0+bi5fem9kLmRlZi5zaGFwZSwhMSl9LHtrZXlvZigpe3JldHVybiBtZShPYmplY3Qua2V5cyh0aGlzLl96b2QuZGVmLnNoYXBlKSl9LGNhdGNoYWxsKGUpe3JldHVybiB0aGlzLmNsb25lKHZlKHRoaXMuX3pvZC5kZWYse2NhdGNoYWxsOmV9KSl9LHBhc3N0aHJvdWdoKCl7cmV0dXJuIHRoaXMuY2xvbmUodmUodGhpcy5fem9kLmRlZix7Y2F0Y2hhbGw6SygpfSkpfSxsb29zZSgpe3JldHVybiB0aGlzLmNsb25lKHZlKHRoaXMuX3pvZC5kZWYse2NhdGNoYWxsOksoKX0pKX0sc3RyaWN0KCl7cmV0dXJuIHRoaXMuY2xvbmUodmUodGhpcy5fem9kLmRlZix7Y2F0Y2hhbGw6eXQoKX0pKX0sc3RyaXAoKXtyZXR1cm4gdGhpcy5jbG9uZSh2ZSh0aGlzLl96b2QuZGVmLHtjYXRjaGFsbDp2b2lkIDB9KSl9LGV4dGVuZChlKXtyZXR1cm4gemQodGhpcyxlKX0sc2FmZUV4dGVuZChlKXtyZXR1cm4gSWQodGhpcyxlKX0sbWVyZ2UoZSl7cmV0dXJuIEFkKHRoaXMsZSl9LHBpY2soZSl7cmV0dXJuIFNkKHRoaXMsZSl9LG9taXQoZSl7cmV0dXJuIFRkKHRoaXMsZSl9LHBhcnRpYWwoLi4uZSl7cmV0dXJuIGlpKGhuLHRoaXMsZVswXSl9LGV4YWN0UGFydGlhbCguLi5lKXtyZXR1cm4gaWkoTm8sdGhpcyxlWzBdLCJleGFjdFBhcnRpYWwiKX0scmVxdWlyZWQoLi4uZSl7cmV0dXJuIENkKFpvLHRoaXMsZVswXSl9fSk7ZnVuY3Rpb24gdihlLHQpe2NvbnN0IG49e3R5cGU6Im9iamVjdCIsc2hhcGU6ZT8/e30sLi4uXyh0KX07cmV0dXJuIG5ldyB1bihuKX1mdW5jdGlvbiBlbChlLHQpe3JldHVybiBuZXcgdW4oe3R5cGU6Im9iamVjdCIsc2hhcGU6ZSxjYXRjaGFsbDp5dCgpLC4uLl8odCl9KX1mdW5jdGlvbiBoZShlLHQpe3JldHVybiBuZXcgdW4oe3R5cGU6Im9iamVjdCIsc2hhcGU6ZSxjYXRjaGFsbDpLKCksLi4uXyh0KX0pfWNvbnN0IGRuPW0oIlpvZFVuaW9uIiwoZSx0KT0+e0RzLmluaXQoZSx0KSxqLmluaXQoZSx0KSxlLl96b2QucHJvY2Vzc0pTT05TY2hlbWE9KG4sbyxzKT0+cmYoKSxlLm9wdGlvbnM9dC5vcHRpb25zfSk7ZnVuY3Rpb24gRChlLHQpe3JldHVybiBuZXcgZG4oe3R5cGU6InVuaW9uIixvcHRpb25zOmUsLi4uXyh0KX0pfWNvbnN0IGNyPW0oIlpvZFhvciIsKGUsdCk9Pntkbi5pbml0KGUsdCksRmguaW5pdChlLHQpLGUuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0obixvLHMpPT5yZigpLGUub3B0aW9ucz10Lm9wdGlvbnN9KTtmdW5jdGlvbiB0bChlLHQpe3JldHVybiBuZXcgY3Ioe3R5cGU6InVuaW9uIixvcHRpb25zOmUsaW5jbHVzaXZlOiExLC4uLl8odCl9KX1jb25zdCBscj1tKCJab2REaXNjcmltaW5hdGVkVW5pb24iLChlLHQpPT57ZG4uaW5pdChlLHQpLFdoLmluaXQoZSx0KX0pO2Z1bmN0aW9uIE9vKGUsdCxuKXtyZXR1cm4gbmV3IGxyKHt0eXBlOiJ1bmlvbiIsb3B0aW9uczp0LGRpc2NyaW1pbmF0b3I6ZSwuLi5fKG4pfSl9Y29uc3QgdXI9bSgiWm9kSW50ZXJzZWN0aW9uIiwoZSx0KT0+e1ZoLmluaXQoZSx0KSxqLmluaXQoZSx0KSxlLl96b2QucHJvY2Vzc0pTT05TY2hlbWE9KG4sbyxzKT0+ciQoKX0pO2Z1bmN0aW9uIHBuKGUsdCl7cmV0dXJuIG5ldyB1cih7dHlwZToiaW50ZXJzZWN0aW9uIixsZWZ0OmUscmlnaHQ6dH0pfWNvbnN0IGRyPW0oIlpvZFR1cGxlIiwoZSx0KT0+e1B0KCksZGEuaW5pdChlLHQpLGouaW5pdChlLHQpLGUuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0obixvLHMpPT5pJCgpfSx7cmVzdChlKXtyZXR1cm4gdGhpcy5jbG9uZSh7Li4udGhpcy5fem9kLmRlZixyZXN0OmV9KX0scGFydGlhbCgpe2NvbnN0IGU9dGhpcy5fem9kLmRlZjtpZihlLmNoZWNrcz8ubGVuZ3RoKXRocm93IG5ldyBFcnJvcigiLnBhcnRpYWwoKSBjYW5ub3QgYmUgdXNlZCBvbiB0dXBsZSBzY2hlbWFzIGNvbnRhaW5pbmcgcmVmaW5lbWVudHMiKTtyZXR1cm4gdGhpcy5jbG9uZSh7Li4uZSxpdGVtczplLml0ZW1zLm1hcCh0PT5uZXcgaG4oe3R5cGU6Im9wdGlvbmFsIixpbm5lclR5cGU6dH0pKX0pfX0pO2Z1bmN0aW9uIHByKGUsdCxuKXtjb25zdCBvPXQgaW5zdGFuY2VvZiBOLHM9bz9uOnQscj1vP3Q6bnVsbDtyZXR1cm4gbmV3IGRyKHt0eXBlOiJ0dXBsZSIsaXRlbXM6ZSxyZXN0OnIsLi4uXyhzKX0pfWNvbnN0IGt0PW0oIlpvZFJlY29yZCIsKGUsdCk9PntQdCgpLEpoLmluaXQoZSx0KSxqLmluaXQoZSx0KSxlLl96b2QucHJvY2Vzc0pTT05TY2hlbWE9KG4sbyxzKT0+YSQoKSxlLmtleVR5cGU9dC5rZXlUeXBlLGUudmFsdWVUeXBlPXQudmFsdWVUeXBlfSk7ZnVuY3Rpb24gVShlLHQsbil7cmV0dXJuIXR8fCF0Ll96b2Q/bmV3IGt0KHt0eXBlOiJyZWNvcmQiLGtleVR5cGU6ZigpLHZhbHVlVHlwZTplLC4uLl8odCl9KTpuZXcga3Qoe3R5cGU6InJlY29yZCIsa2V5VHlwZTplLHZhbHVlVHlwZTp0LC4uLl8obil9KX1mdW5jdGlvbiBubChlLHQsbil7cmV0dXJuIG5ldyBrdCh7dHlwZToicmVjb3JkIixrZXlUeXBlOmUsdmFsdWVUeXBlOnQsLi4uXyhuKSxwYXJ0aWFsOiEwfSl9ZnVuY3Rpb24gb2woZSx0LG4pe3JldHVybiBuZXcga3Qoe3R5cGU6InJlY29yZCIsa2V5VHlwZTplLHZhbHVlVHlwZTp0LG1vZGU6Imxvb3NlIiwuLi5fKG4pfSl9Y29uc3QgaHI9bSgiWm9kTWFwIiwoZSx0KT0+e1B0KCksS2guaW5pdChlLHQpLGouaW5pdChlLHQpLGUuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0obixvLHMpPT50JCgpLGUua2V5VHlwZT10LmtleVR5cGUsZS52YWx1ZVR5cGU9dC52YWx1ZVR5cGUsZS5taW49KC4uLm4pPT5lLmNoZWNrKFFlKC4uLm4pKSxlLm5vbmVtcHR5PW49PmUuY2hlY2soUWUoMSxuKSksZS5tYXg9KC4uLm4pPT5lLmNoZWNrKEN0KC4uLm4pKSxlLnNpemU9KC4uLm4pPT5lLmNoZWNrKEd0KC4uLm4pKX0pO2Z1bmN0aW9uIHNsKGUsdCxuKXtyZXR1cm4gbmV3IGhyKHt0eXBlOiJtYXAiLGtleVR5cGU6ZSx2YWx1ZVR5cGU6dCwuLi5fKG4pfSl9Y29uc3QgbXI9bSgiWm9kU2V0IiwoZSx0KT0+e1B0KCksR2guaW5pdChlLHQpLGouaW5pdChlLHQpLGUuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0obixvLHMpPT5uJCgpLGUubWluPSguLi5uKT0+ZS5jaGVjayhRZSguLi5uKSksZS5ub25lbXB0eT1uPT5lLmNoZWNrKFFlKDEsbikpLGUubWF4PSguLi5uKT0+ZS5jaGVjayhDdCguLi5uKSksZS5zaXplPSguLi5uKT0+ZS5jaGVjayhHdCguLi5uKSl9KTtmdW5jdGlvbiBybChlLHQpe3JldHVybiBuZXcgbXIoe3R5cGU6InNldCIsdmFsdWVUeXBlOmUsLi4uXyh0KX0pfWNvbnN0IF90PW0oIlpvZEVudW0iLChlLHQpPT57WWguaW5pdChlLHQpLGouaW5pdChlLHQpLGUuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0obyxzLHIpPT5XdigpLGUuZW51bT10LmVudHJpZXMsZS5vcHRpb25zPVsuLi5lLl96b2QudmFsdWVzXTtjb25zdCBuPW5ldyBTZXQoT2JqZWN0LmtleXModC5lbnRyaWVzKSk7ZS5leHRyYWN0PShvLHMpPT57Y29uc3Qgcj17fTtmb3IoY29uc3QgYSBvZiBvKWlmKG4uaGFzKGEpKXJbYV09dC5lbnRyaWVzW2FdO2Vsc2UgdGhyb3cgbmV3IEVycm9yKGBLZXkgJHthfSBub3QgZm91bmQgaW4gZW51bWApO3JldHVybiBuZXcgX3Qoey4uLnQsY2hlY2tzOltdLC4uLl8ocyksZW50cmllczpyfSl9LGUuZXhjbHVkZT0obyxzKT0+e2NvbnN0IHI9ey4uLnQuZW50cmllc307Zm9yKGNvbnN0IGEgb2YgbylpZihuLmhhcyhhKSlkZWxldGUgclthXTtlbHNlIHRocm93IG5ldyBFcnJvcihgS2V5ICR7YX0gbm90IGZvdW5kIGluIGVudW1gKTtyZXR1cm4gbmV3IF90KHsuLi50LGNoZWNrczpbXSwuLi5fKHMpLGVudHJpZXM6cn0pfX0pO2Z1bmN0aW9uIG1lKGUsdCl7Y29uc3Qgbj1BcnJheS5pc0FycmF5KGUpP09iamVjdC5mcm9tRW50cmllcyhlLm1hcChvPT5bbyxvXSkpOmU7cmV0dXJuIG5ldyBfdCh7dHlwZToiZW51bSIsZW50cmllczpuLC4uLl8odCl9KX1mdW5jdGlvbiBpbChlLHQpe3JldHVybiBuZXcgX3Qoe3R5cGU6ImVudW0iLGVudHJpZXM6ZSwuLi5fKHQpfSl9Y29uc3QgZnI9bSgiWm9kTGl0ZXJhbCIsKGUsdCk9PntRaC5pbml0KGUsdCksai5pbml0KGUsdCksZS5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShuLG8scyk9PlZ2KCksZS52YWx1ZXM9bmV3IFNldCh0LnZhbHVlcyksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsInZhbHVlIix7Z2V0KCl7aWYodC52YWx1ZXMubGVuZ3RoPjEpdGhyb3cgbmV3IEVycm9yKCJUaGlzIHNjaGVtYSBjb250YWlucyBtdWx0aXBsZSB2YWxpZCBsaXRlcmFsIHZhbHVlcy4gVXNlIGAudmFsdWVzYCBpbnN0ZWFkLiIpO3JldHVybiB0LnZhbHVlc1swXX19KX0pO2Z1bmN0aW9uIGcoZSx0KXtyZXR1cm4gbmV3IGZyKHt0eXBlOiJsaXRlcmFsIix2YWx1ZXM6QXJyYXkuaXNBcnJheShlKT9lOltlXSwuLi5fKHQpfSl9Y29uc3QgZ3I9bSgiWm9kRmlsZSIsKGUsdCk9PntYaC5pbml0KGUsdCksai5pbml0KGUsdCksZS5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShuLG8scyk9Pkd2KCksZS5taW49KG4sbyk9PmUuY2hlY2soUWUobixvKSksZS5tYXg9KG4sbyk9PmUuY2hlY2soQ3QobixvKSksZS5taW1lPShuLG8pPT5lLmNoZWNrKHNvKEFycmF5LmlzQXJyYXkobik/bjpbbl0sbykpfSk7ZnVuY3Rpb24gYWwoZSl7cmV0dXJuIEdtKGdyLGUpfWNvbnN0IGJyPW0oIlpvZFRyYW5zZm9ybSIsKGUsdCk9PntQdCgpLGVtLmluaXQoZSx0KSxqLmluaXQoZSx0KSxlLl96b2QucHJvY2Vzc0pTT05TY2hlbWE9KG4sbyxzKT0+ZSQoKSxlLl96b2QucGFyc2U9KG4sbyk9PntpZihvLmRpcmVjdGlvbj09PSJiYWNrd2FyZCIpdGhyb3cgbmV3IE9zKGUuY29uc3RydWN0b3IubmFtZSk7bi5hZGRJc3N1ZT1yPT57aWYodHlwZW9mIHI9PSJzdHJpbmciKW4uaXNzdWVzLnB1c2goQnQocixuLnZhbHVlLHQpKTtlbHNle2NvbnN0IGE9cjthLmZhdGFsJiYoYS5jb250aW51ZT0hMSksYS5jb2RlPz8oYS5jb2RlPSJjdXN0b20iKSwiaW5wdXQiaW4gYXx8KGEuaW5wdXQ9bi52YWx1ZSksYS5pbnN0Pz8oYS5pbnN0PWUpLG4uaXNzdWVzLnB1c2goQnQoYSkpfX07Y29uc3Qgcz10LnRyYW5zZm9ybShuLnZhbHVlLG4pO3JldHVybiBzIGluc3RhbmNlb2YgUHJvbWlzZT9zLnRoZW4ocj0+KG4udmFsdWU9cixuKSk6KG4udmFsdWU9cyxuKX19KTtmdW5jdGlvbiBSbyhlKXtyZXR1cm4gbmV3IGJyKHt0eXBlOiJ0cmFuc2Zvcm0iLHRyYW5zZm9ybTplfSl9Y29uc3QgaG49bSgiWm9kT3B0aW9uYWwiLChlLHQpPT57cGEuaW5pdChlLHQpLGouaW5pdChlLHQpLGUuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0obixvLHMpPT5hZigpLGUudW53cmFwPSgpPT5lLl96b2QuZGVmLmlubmVyVHlwZX0pO2Z1bmN0aW9uIHRlKGUpe3JldHVybiBuZXcgaG4oe3R5cGU6Im9wdGlvbmFsIixpbm5lclR5cGU6ZX0pfWNvbnN0IE5vPW0oIlpvZEV4YWN0T3B0aW9uYWwiLChlLHQpPT57dG0uaW5pdChlLHQpLGouaW5pdChlLHQpLGUuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0obixvLHMpPT5hZigpLGUudW53cmFwPSgpPT5lLl96b2QuZGVmLmlubmVyVHlwZX0pO2Z1bmN0aW9uIHZyKGUpe3JldHVybiBuZXcgTm8oe3R5cGU6Im9wdGlvbmFsIixpbm5lclR5cGU6ZX0pfWNvbnN0ICRyPW0oIlpvZE51bGxhYmxlIiwoZSx0KT0+e25tLmluaXQoZSx0KSxqLmluaXQoZSx0KSxlLl96b2QucHJvY2Vzc0pTT05TY2hlbWE9KG4sbyxzKT0+YyQoKSxlLnVud3JhcD0oKT0+ZS5fem9kLmRlZi5pbm5lclR5cGV9KTtmdW5jdGlvbiBIdChlKXtyZXR1cm4gbmV3ICRyKHt0eXBlOiJudWxsYWJsZSIsaW5uZXJUeXBlOmV9KX1mdW5jdGlvbiBjbChlKXtyZXR1cm4gdGUoSHQoZSkpfWNvbnN0IHlyPW0oIlpvZERlZmF1bHQiLChlLHQpPT57b20uaW5pdChlLHQpLGouaW5pdChlLHQpLGUuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0obixvLHMpPT51JCgpLGUudW53cmFwPSgpPT5lLl96b2QuZGVmLmlubmVyVHlwZSxlLnJlbW92ZURlZmF1bHQ9ZS51bndyYXB9KTtmdW5jdGlvbiBrcihlLHQpe3JldHVybiBuZXcgeXIoe3R5cGU6ImRlZmF1bHQiLGlubmVyVHlwZTplLGdldCBkZWZhdWx0VmFsdWUoKXtyZXR1cm4gdHlwZW9mIHQ9PSJmdW5jdGlvbiI/dCgpOnhzKHQpfX0pfWNvbnN0IF9yPW0oIlpvZFByZWZhdWx0IiwoZSx0KT0+e3NtLmluaXQoZSx0KSxqLmluaXQoZSx0KSxlLl96b2QucHJvY2Vzc0pTT05TY2hlbWE9KG4sbyxzKT0+ZCQoKSxlLnVud3JhcD0oKT0+ZS5fem9kLmRlZi5pbm5lclR5cGV9KTtmdW5jdGlvbiB3cihlLHQpe3JldHVybiBuZXcgX3Ioe3R5cGU6InByZWZhdWx0Iixpbm5lclR5cGU6ZSxnZXQgZGVmYXVsdFZhbHVlKCl7cmV0dXJuIHR5cGVvZiB0PT0iZnVuY3Rpb24iP3QoKTp4cyh0KX19KX1jb25zdCBabz1tKCJab2ROb25PcHRpb25hbCIsKGUsdCk9PntybS5pbml0KGUsdCksai5pbml0KGUsdCksZS5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShuLG8scyk9PmwkKCksZS51bndyYXA9KCk9PmUuX3pvZC5kZWYuaW5uZXJUeXBlfSk7ZnVuY3Rpb24gU3IoZSx0KXtyZXR1cm4gbmV3IFpvKHt0eXBlOiJub25vcHRpb25hbCIsaW5uZXJUeXBlOmUsLi4uXyh0KX0pfWNvbnN0IFRyPW0oIlpvZFN1Y2Nlc3MiLChlLHQpPT57aW0uaW5pdChlLHQpLGouaW5pdChlLHQpLGUuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0obixvLHMpPT5ZdigpLGUudW53cmFwPSgpPT5lLl96b2QuZGVmLmlubmVyVHlwZX0pO2Z1bmN0aW9uIGxsKGUpe3JldHVybiBuZXcgVHIoe3R5cGU6InN1Y2Nlc3MiLGlubmVyVHlwZTplfSl9Y29uc3QgenI9bSgiWm9kQ2F0Y2giLChlLHQpPT57YW0uaW5pdChlLHQpLGouaW5pdChlLHQpLGUuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0obixvLHMpPT5wJCgpLGUudW53cmFwPSgpPT5lLl96b2QuZGVmLmlubmVyVHlwZSxlLnJlbW92ZUNhdGNoPWUudW53cmFwfSk7ZnVuY3Rpb24geHIoZSx0KXtyZXR1cm4gbmV3IHpyKHt0eXBlOiJjYXRjaCIsaW5uZXJUeXBlOmUsY2F0Y2hWYWx1ZTp0eXBlb2YgdD09ImZ1bmN0aW9uIj90OlJpKHQpfSl9Y29uc3QgSXI9bSgiWm9kTmFOIiwoZSx0KT0+e2NtLmluaXQoZSx0KSxqLmluaXQoZSx0KSxlLl96b2QucHJvY2Vzc0pTT05TY2hlbWE9KG4sbyxzKT0+SnYoKX0pO2Z1bmN0aW9uIHVsKGUpe3JldHVybiBKbShJcixlKX1jb25zdCBtbj1tKCJab2RQaXBlIiwoZSx0KT0+e2hhLmluaXQoZSx0KSxqLmluaXQoZSx0KSxlLl96b2QucHJvY2Vzc0pTT05TY2hlbWE9KG4sbyxzKT0+aCQoKSxlLmluPXQuaW4sZS5vdXQ9dC5vdXR9KTtmdW5jdGlvbiBabihlLHQpe3JldHVybiBuZXcgbW4oe3R5cGU6InBpcGUiLGluOmUsb3V0OnR9KX1jb25zdCBmbj1tKCJab2RDb2RlYyIsKGUsdCk9Pnttbi5pbml0KGUsdCksbWEuaW5pdChlLHQpfSk7ZnVuY3Rpb24gZGwoZSx0LG4pe3JldHVybiBuZXcgZm4oe3R5cGU6InBpcGUiLGluOmUsb3V0OnQsdHJhbnNmb3JtOm4uZGVjb2RlLHJldmVyc2VUcmFuc2Zvcm06bi5lbmNvZGV9KX1mdW5jdGlvbiBwbChlKXtjb25zdCB0PWUuX3pvZC5kZWY7cmV0dXJuIG5ldyBmbih7dHlwZToicGlwZSIsaW46dC5vdXQsb3V0OnQuaW4sdHJhbnNmb3JtOnQucmV2ZXJzZVRyYW5zZm9ybSxyZXZlcnNlVHJhbnNmb3JtOnQudHJhbnNmb3JtfSl9Y29uc3QgQXI9bSgiWm9kUHJlcHJvY2VzcyIsKGUsdCk9Pnttbi5pbml0KGUsdCksbG0uaW5pdChlLHQpfSksQ3I9bSgiWm9kUmVhZG9ubHkiLChlLHQpPT57dW0uaW5pdChlLHQpLGouaW5pdChlLHQpLGUuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0obixvLHMpPT5tJCgpLGUudW53cmFwPSgpPT5lLl96b2QuZGVmLmlubmVyVHlwZX0pO2Z1bmN0aW9uIFByKGUpe3JldHVybiBuZXcgQ3Ioe3R5cGU6InJlYWRvbmx5Iixpbm5lclR5cGU6ZX0pfWNvbnN0IEVyPW0oIlpvZFRlbXBsYXRlTGl0ZXJhbCIsKGUsdCk9PntkbS5pbml0KGUsdCksai5pbml0KGUsdCksZS5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShuLG8scyk9Pkt2KCl9KTtmdW5jdGlvbiBobChlLHQpe3JldHVybiBuZXcgRXIoe3R5cGU6InRlbXBsYXRlX2xpdGVyYWwiLHBhcnRzOmUsLi4uXyh0KX0pfWNvbnN0IE9yPW0oIlpvZExhenkiLChlLHQpPT57ZmEuaW5pdChlLHQpLGouaW5pdChlLHQpLGUuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0obixvLHMpPT5nJCgpLGUudW53cmFwPSgpPT5lLl96b2QuZGVmLmdldHRlcigpfSk7ZnVuY3Rpb24gUnIoZSl7cmV0dXJuIG5ldyBPcih7dHlwZToibGF6eSIsZ2V0dGVyOmV9KX1jb25zdCBOcj1tKCJab2RQcm9taXNlIiwoZSx0KT0+e2htLmluaXQoZSx0KSxqLmluaXQoZSx0KSxlLl96b2QucHJvY2Vzc0pTT05TY2hlbWE9KG4sbyxzKT0+ZiQoKSxlLnVud3JhcD0oKT0+ZS5fem9kLmRlZi5pbm5lclR5cGV9KTtmdW5jdGlvbiBtbChlKXtyZXR1cm4gbmV3IE5yKHt0eXBlOiJwcm9taXNlIixpbm5lclR5cGU6ZX0pfWNvbnN0IFpyPW0oIlpvZEZ1bmN0aW9uIiwoZSx0KT0+e3BtLmluaXQoZSx0KSxqLmluaXQoZSx0KSxlLl96b2QucHJvY2Vzc0pTT05TY2hlbWE9KG4sbyxzKT0+WHYoKX0pO2Z1bmN0aW9uIFd0KGUpe3JldHVybiBuZXcgWnIoe3R5cGU6ImZ1bmN0aW9uIixpbnB1dDpBcnJheS5pc0FycmF5KGU/LmlucHV0KT9wcihlPy5pbnB1dCk6ZT8uaW5wdXQ/P08oSygpKSxvdXRwdXQ6ZT8ub3V0cHV0Pz9LKCl9KX1jb25zdCBnbj1tKCJab2RDdXN0b20iLChlLHQpPT57bW0uaW5pdChlLHQpLGouaW5pdChlLHQpLGUuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0obixvLHMpPT5RdigpfSk7ZnVuY3Rpb24gZmwoZSl7Y29uc3QgdD1uZXcgb2Uoe2NoZWNrOiJjdXN0b20ifSk7cmV0dXJuIHQuX3pvZC5jaGVjaz1lLHR9ZnVuY3Rpb24gTXIoZSx0KXtyZXR1cm4gWW0oZ24sZT8/KCgpPT4hMCksdCl9ZnVuY3Rpb24ganIoZSx0PXt9KXtyZXR1cm4gUW0oZ24sZSx0KX1mdW5jdGlvbiBxcihlLHQpe3JldHVybiBYbShlLHQpfWNvbnN0IGdsPXRmLGJsPW5mLExyPW0oIlpvZEluc3RhbmNlT2YiLChlLHQpPT57Z24uaW5pdChlLHQpfSx7cHJvcGVydGllcyhlLHQpe3JldHVybiB0aGlzLmNoZWNrKG9vKGUsdCkpfX0pO2Z1bmN0aW9uIHZsKGUsdD17fSl7Y29uc3Qgbj1uZXcgTHIoe3R5cGU6ImN1c3RvbSIsY2hlY2s6ImN1c3RvbSIsZm46bz0+byBpbnN0YW5jZW9mIGUsYWJvcnQ6ITAsLi4uXyh0KX0pO3JldHVybiBuLl96b2QuYmFnLkNsYXNzPWUsbi5fem9kLmNoZWNrPW89PntvLnZhbHVlIGluc3RhbmNlb2YgZXx8by5pc3N1ZXMucHVzaCh7Y29kZToiaW52YWxpZF90eXBlIixleHBlY3RlZDplLm5hbWUsaW5wdXQ6by52YWx1ZSxpbnN0Om4scGF0aDpbLi4ubi5fem9kLmRlZi5wYXRoPz9bXV19KX0sbn1jb25zdCAkbD0oLi4uZSk9Pm9mKHtDb2RlYzpmbixCb29sZWFuOmNuLFN0cmluZzplbn0sLi4uZSk7ZnVuY3Rpb24geWwoZSl7Y29uc3QgdD1ScigoKT0+RChbZihlKSxNKCksRygpLENvKCksTyh0KSxVKGYoKSx0KV0pKTtyZXR1cm4gdH1mdW5jdGlvbiBNbyhlLHQpe3JldHVybiBuZXcgQXIoe3R5cGU6InBpcGUiLGluOlJvKGUpLG91dDp0fSl9Y29uc3QgdyQ9T2JqZWN0LmZyZWV6ZShPYmplY3QuZGVmaW5lUHJvcGVydHkoe19fcHJvdG9fXzpudWxsLFpvZEFueTpvcixab2RBcnJheTphcixab2RCYXNlNjQ6VG8sWm9kQmFzZTY0VVJMOnpvLFpvZEJpZ0ludDpsbixab2RCaWdJbnRGb3JtYXQ6QW8sWm9kQm9vbGVhbjpjbixab2RDSURSdjQ6d28sWm9kQ0lEUnY2OlNvLFpvZENVSUQ6Z28sWm9kQ1VJRDI6Ym8sWm9kQ2F0Y2g6enIsWm9kQ29kZWM6Zm4sWm9kQ3JlZGl0Q2FyZDpRcyxab2RDdXN0b206Z24sWm9kQ3VzdG9tU3RyaW5nRm9ybWF0Omx0LFpvZERhdGU6RW8sWm9kRGVmYXVsdDp5cixab2REaXNjcmltaW5hdGVkVW5pb246bHIsWm9kRTE2NDp4byxab2RFbWFpbDpwbyxab2RFbW9qaTptbyxab2RFbnVtOl90LFpvZEV4YWN0T3B0aW9uYWw6Tm8sWm9kRmlsZTpncixab2RGdW5jdGlvbjpacixab2RHVUlEOmhvLFpvZElCQU46WHMsWm9kSVB2NDprbyxab2RJUHY2Ol9vLFpvZElTT0RhdGU6bm4sWm9kSVNPRGF0ZVRpbWU6dG4sWm9kSVNPRHVyYXRpb246c24sWm9kSVNPVGltZTpvbixab2RJbnN0YW5jZU9mOkxyLFpvZEludGVyc2VjdGlvbjp1cixab2RKV1Q6SW8sWm9kS1NVSUQ6eW8sWm9kTGF6eTpPcixab2RMaXRlcmFsOmZyLFpvZE1BQzpZcyxab2RNYXA6aHIsWm9kTmFOOklyLFpvZE5hbm9JRDpmbyxab2ROZXZlcjpycixab2ROb25PcHRpb25hbDpabyxab2ROdWxsOm5yLFpvZE51bGxhYmxlOiRyLFpvZE51bWJlcjphbixab2ROdW1iZXJGb3JtYXQ6dXQsWm9kT2JqZWN0OnVuLFpvZE9wdGlvbmFsOmhuLFpvZFBpcGU6bW4sWm9kUHJlZmF1bHQ6X3IsWm9kUHJlcHJvY2VzczpBcixab2RQcm9taXNlOk5yLFpvZFJlYWRvbmx5OkNyLFpvZFJlY29yZDprdCxab2RTZXQ6bXIsWm9kU3RyaW5nOmVuLFpvZFN0cmluZ0Zvcm1hdDpZLFpvZFN1Y2Nlc3M6VHIsWm9kU3ltYm9sOmVyLFpvZFRlbXBsYXRlTGl0ZXJhbDpFcixab2RUcmFuc2Zvcm06YnIsWm9kVHVwbGU6ZHIsWm9kVHlwZTpqLFpvZFVMSUQ6dm8sWm9kVVJMOnJuLFpvZFVVSUQ6VWUsWm9kVW5kZWZpbmVkOnRyLFpvZFVuaW9uOmRuLFpvZFVua25vd246c3IsWm9kVm9pZDppcixab2RYSUQ6JG8sWm9kWG9yOmNyLF9ab2RTdHJpbmc6dW8sX2RlZmF1bHQ6a3IsX2Z1bmN0aW9uOld0LGFueTpQbyxhcnJheTpPLGJhc2U2NDpFYyxiYXNlNjR1cmw6T2MsYmlnaW50OlZjLGJvb2xlYW46RyxjYXRjaDp4cixjaGVjazpmbCxjaWRydjQ6Q2MsY2lkcnY2OlBjLGNvZGVjOmRsLGNyZWRpdENhcmQ6TmMsY3VpZDpfYyxjdWlkMjp3YyxjdXJyZW5jeUNvZGU6RGMsY3VzdG9tOk1yLGRhdGU6UWMsZGVzY3JpYmU6Z2wsZGlzY3JpbWluYXRlZFVuaW9uOk9vLGUxNjQ6UmMsZW1haWw6cGMsZW1vamk6eWMsZW51bTptZSxleGFjdE9wdGlvbmFsOnZyLGZpbGU6YWwsZmxvYXQzMjpVYyxmbG9hdDY0OkZjLGZ1bmN0aW9uOld0LGd1aWQ6aGMsaGFzaDpCYyxoZXg6TGMsaG9zdG5hbWU6cWMsaHR0cFVybDokYyxpYmFuOlpjLGluc3RhbmNlb2Y6dmwsaW50Ok5uLGludDMyOkhjLGludDY0OkpjLGludGVyc2VjdGlvbjpwbixpbnZlcnRDb2RlYzpwbCxpcHY0OnhjLGlwdjY6QWMsanNvbjp5bCxqd3Q6TWMsa2V5b2Y6WGMsa3N1aWQ6emMsbGF6eTpScixsaXRlcmFsOmcsbG9vc2VPYmplY3Q6aGUsbG9vc2VSZWNvcmQ6b2wsbWFjOkljLG1hcDpzbCxtZXRhOmJsLG5hbjp1bCxuYW5vaWQ6a2MsbmF0aXZlRW51bTppbCxuZXZlcjp5dCxub25vcHRpb25hbDpTcixudWxsOkNvLG51bGxhYmxlOkh0LG51bGxpc2g6Y2wsbnVtYmVyOk0sb2JqZWN0OnYsb3B0aW9uYWw6dGUscGFydGlhbFJlY29yZDpubCxwaXBlOlpuLHByZWZhdWx0OndyLHByZXByb2Nlc3M6TW8scHJvbWlzZTptbCxyZWFkb25seTpQcixyZWNvcmQ6VSxyZWZpbmU6anIsc2V0OnJsLHN0cmljdE9iamVjdDplbCxzdHJpbmc6ZixzdHJpbmdGb3JtYXQ6amMsc3RyaW5nYm9vbDokbCxzdWNjZXNzOmxsLHN1cGVyUmVmaW5lOnFyLHN5bWJvbDpHYyx0ZW1wbGF0ZUxpdGVyYWw6aGwsdHJhbnNmb3JtOlJvLHR1cGxlOnByLHVpbnQzMjpXYyx1aW50NjQ6S2MsdWxpZDpTYyx1bmRlZmluZWQ6RnQsdW5pb246RCx1bmtub3duOkssdXJsOnZjLHV1aWQ6bWMsdXVpZHY0OmZjLHV1aWR2NjpnYyx1dWlkdjc6YmMsdm9pZDpZYyx4aWQ6VGMseG9yOnRsfSxTeW1ib2wudG9TdHJpbmdUYWcse3ZhbHVlOiJNb2R1bGUifSkpLHBmPXtpbnZhbGlkX3R5cGU6ImludmFsaWRfdHlwZSIsdG9vX2JpZzoidG9vX2JpZyIsdG9vX3NtYWxsOiJ0b29fc21hbGwiLGludmFsaWRfZm9ybWF0OiJpbnZhbGlkX2Zvcm1hdCIsbm90X211bHRpcGxlX29mOiJub3RfbXVsdGlwbGVfb2YiLHVucmVjb2duaXplZF9rZXlzOiJ1bnJlY29nbml6ZWRfa2V5cyIsaW52YWxpZF91bmlvbjoiaW52YWxpZF91bmlvbiIsaW52YWxpZF9rZXk6ImludmFsaWRfa2V5IixpbnZhbGlkX2VsZW1lbnQ6ImludmFsaWRfZWxlbWVudCIsaW52YWxpZF92YWx1ZToiaW52YWxpZF92YWx1ZSIsY3VzdG9tOiJjdXN0b20ifTtmdW5jdGlvbiBoZihlKXtkZSh7Y3VzdG9tRXJyb3I6ZX0pfWZ1bmN0aW9uIG1mKCl7cmV0dXJuIGRlKCkuY3VzdG9tRXJyb3J9dmFyIGhzO2hzfHwoaHM9e30pO2Z1bmN0aW9uIGZmKGUpe3JldHVybiBWYSh0bixlKX1mdW5jdGlvbiBTJChlKXtyZXR1cm4gSmEobm4sZSl9ZnVuY3Rpb24gVCQoZSl7cmV0dXJuIEthKG9uLGUpfWZ1bmN0aW9uIHokKGUpe3JldHVybiBHYShzbixlKX1jb25zdCBrbD1PYmplY3QuZnJlZXplKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7X19wcm90b19fOm51bGwsWm9kSVNPRGF0ZTpubixab2RJU09EYXRlVGltZTp0bixab2RJU09EdXJhdGlvbjpzbixab2RJU09UaW1lOm9uLGRhdGU6UyQsZGF0ZXRpbWU6ZmYsZHVyYXRpb246eiQsdGltZTpUJH0sU3ltYm9sLnRvU3RyaW5nVGFnLHt2YWx1ZToiTW9kdWxlIn0pKSxBPXsuLi53JCwuLi5rJCxpc286a2x9LHgkPW5ldyBTZXQoWyIkc2NoZW1hIiwiJHJlZiIsIiRkZWZzIiwiZGVmaW5pdGlvbnMiLCIkaWQiLCJpZCIsIiRjb21tZW50IiwiJGFuY2hvciIsIiR2b2NhYnVsYXJ5IiwiJGR5bmFtaWNSZWYiLCIkZHluYW1pY0FuY2hvciIsInR5cGUiLCJlbnVtIiwiY29uc3QiLCJhbnlPZiIsIm9uZU9mIiwiYWxsT2YiLCJub3QiLCJwcm9wZXJ0aWVzIiwicmVxdWlyZWQiLCJhZGRpdGlvbmFsUHJvcGVydGllcyIsInBhdHRlcm5Qcm9wZXJ0aWVzIiwicHJvcGVydHlOYW1lcyIsIm1pblByb3BlcnRpZXMiLCJtYXhQcm9wZXJ0aWVzIiwiaXRlbXMiLCJwcmVmaXhJdGVtcyIsImFkZGl0aW9uYWxJdGVtcyIsIm1pbkl0ZW1zIiwibWF4SXRlbXMiLCJ1bmlxdWVJdGVtcyIsImNvbnRhaW5zIiwibWluQ29udGFpbnMiLCJtYXhDb250YWlucyIsIm1pbkxlbmd0aCIsIm1heExlbmd0aCIsInBhdHRlcm4iLCJmb3JtYXQiLCJtaW5pbXVtIiwibWF4aW11bSIsImV4Y2x1c2l2ZU1pbmltdW0iLCJleGNsdXNpdmVNYXhpbXVtIiwibXVsdGlwbGVPZiIsImRlc2NyaXB0aW9uIiwiZGVmYXVsdCIsImNvbnRlbnRFbmNvZGluZyIsImNvbnRlbnRNZWRpYVR5cGUiLCJjb250ZW50U2NoZW1hIiwidW5ldmFsdWF0ZWRJdGVtcyIsInVuZXZhbHVhdGVkUHJvcGVydGllcyIsImlmIiwidGhlbiIsImVsc2UiLCJkZXBlbmRlbnRTY2hlbWFzIiwiZGVwZW5kZW50UmVxdWlyZWQiLCJudWxsYWJsZSIsInJlYWRPbmx5Il0pO2Z1bmN0aW9uIEkkKGUsdCl7Y29uc3Qgbj1lLiRzY2hlbWE7cmV0dXJuIG49PT0iaHR0cHM6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQvMjAyMC0xMi9zY2hlbWEiPyJkcmFmdC0yMDIwLTEyIjpuPT09Imh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQtMDcvc2NoZW1hIyI/ImRyYWZ0LTciOm49PT0iaHR0cDovL2pzb24tc2NoZW1hLm9yZy9kcmFmdC0wNC9zY2hlbWEjIj8iZHJhZnQtNCI6dD8/ImRyYWZ0LTIwMjAtMTIifWZ1bmN0aW9uIEx1KGUsdCl7cmV0dXJuIGUubWFwKChuLG8pPT5vPHQ/bjpuLm9wdGlvbmFsKCkpfWZ1bmN0aW9uIEEkKGUpe3JldHVybiBlLnJlcGxhY2UoL34xL2csIi8iKS5yZXBsYWNlKC9+MC9nLCJ+Iil9ZnVuY3Rpb24gQyQoZSx0KXtpZighZS5zdGFydHNXaXRoKCIjIikpdGhyb3cgbmV3IEVycm9yKCJFeHRlcm5hbCAkcmVmIGlzIG5vdCBzdXBwb3J0ZWQsIG9ubHkgbG9jYWwgcmVmcyAoIy8uLi4pIGFyZSBhbGxvd2VkIik7Y29uc3Qgbj1lLnNsaWNlKDEpLnNwbGl0KCIvIikuZmlsdGVyKEJvb2xlYW4pO2lmKG4ubGVuZ3RoPT09MClyZXR1cm4gdC5yb290U2NoZW1hO2NvbnN0IG89dC52ZXJzaW9uPT09ImRyYWZ0LTIwMjAtMTIiPyIkZGVmcyI6ImRlZmluaXRpb25zIjtpZihuWzBdPT09byl7Y29uc3Qgcz1uWzFdPT09dm9pZCAwP3ZvaWQgMDpBJChuWzFdKTtpZighc3x8IXQuZGVmc1tzXSl0aHJvdyBuZXcgRXJyb3IoYFJlZmVyZW5jZSBub3QgZm91bmQ6ICR7ZX1gKTtyZXR1cm4gdC5kZWZzW3NdfXRocm93IG5ldyBFcnJvcihgUmVmZXJlbmNlIG5vdCBmb3VuZDogJHtlfWApfWZ1bmN0aW9uIFAkKGUsdCl7cmV0dXJuIEEudHJhbnNmb3JtKG89Pm8pLmNoZWNrKG89Pntjb25zdCBzPW8udmFsdWU7aWYodHlwZW9mIHMhPSJvYmplY3QifHxzPT09bnVsbHx8QXJyYXkuaXNBcnJheShzKSlyZXR1cm47Y29uc3Qgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhzKTtpZih0Lm1pblByb3BlcnRpZXMhPT12b2lkIDAmJnIubGVuZ3RoPHQubWluUHJvcGVydGllcyYmby5pc3N1ZXMucHVzaCh7b3JpZ2luOiJvYmplY3QiLGNvZGU6InRvb19zbWFsbCIsbWluaW11bTp0Lm1pblByb3BlcnRpZXMsaW5jbHVzaXZlOiEwLG1lc3NhZ2U6YFRvbyBzbWFsbDogZXhwZWN0ZWQgb2JqZWN0IHRvIGhhdmUgPj0ke3QubWluUHJvcGVydGllc30gcHJvcGVydGllc2AsaW5wdXQ6cyxpbnN0OmUsY29udGludWU6ITB9KSx0Lm1heFByb3BlcnRpZXMhPT12b2lkIDAmJnIubGVuZ3RoPnQubWF4UHJvcGVydGllcyYmby5pc3N1ZXMucHVzaCh7b3JpZ2luOiJvYmplY3QiLGNvZGU6InRvb19iaWciLG1heGltdW06dC5tYXhQcm9wZXJ0aWVzLGluY2x1c2l2ZTohMCxtZXNzYWdlOmBUb28gYmlnOiBleHBlY3RlZCBvYmplY3QgdG8gaGF2ZSA8PSR7dC5tYXhQcm9wZXJ0aWVzfSBwcm9wZXJ0aWVzYCxpbnB1dDpzLGluc3Q6ZSxjb250aW51ZTohMH0pLHQua2V5U2NoZW1hKWZvcihjb25zdCBhIG9mIHIpe2NvbnN0IGk9dC5rZXlTY2hlbWEuc2FmZVBhcnNlKGEpO2kuc3VjY2Vzc3x8by5pc3N1ZXMucHVzaCh7Y29kZToiaW52YWxpZF9rZXkiLG9yaWdpbjoicmVjb3JkIixpc3N1ZXM6aS5lcnJvci5pc3N1ZXMsaW5wdXQ6YSxwYXRoOlthXSxjb250aW51ZTohMH0pfX0pLnBpcGUoZSl9ZnVuY3Rpb24gZmkoZSx0KXtpZihlPT09bnVsbClyZXR1cm4ieiI7Y29uc3Qgbj10eXBlb2YgZTtpZihuIT09Im9iamVjdCIpe2lmKG49PT0ibnVtYmVyIiYmTnVtYmVyLmlzTmFOKGUpKXJldHVybiBudWxsO2NvbnN0IG89U3RyaW5nKGUpO3JldHVybmAke25bMF19JHtvLmxlbmd0aH06JHtvfWB9aWYodC5oYXMoZSkpcmV0dXJuIG51bGw7dC5hZGQoZSk7dHJ5e2lmKEFycmF5LmlzQXJyYXkoZSkpe2NvbnN0IHI9W107Zm9yKGNvbnN0IGEgb2YgZSl7Y29uc3QgaT1maShhLHQpO2lmKGk9PT1udWxsKXJldHVybiBudWxsO3IucHVzaChpKX1yZXR1cm5gYSR7ci5sZW5ndGh9Olske3Iuam9pbigiLCIpfV1gfWNvbnN0IG89T2JqZWN0LmtleXMoZSkuc29ydCgpLHM9W107Zm9yKGNvbnN0IHIgb2Ygbyl7Y29uc3QgYT1maShlW3JdLHQpO2lmKGE9PT1udWxsKXJldHVybiBudWxsO3MucHVzaChgJHtyLmxlbmd0aH06JHtyfT0ke2F9YCl9cmV0dXJuYG8ke3MubGVuZ3RofTp7JHtzLmpvaW4oIiwiKX19YH1maW5hbGx5e3QuZGVsZXRlKGUpfX1jb25zdCBFJD1uZXcgU2V0KFsiaXRlbXMiLCJwcmVmaXhJdGVtcyIsImFkZGl0aW9uYWxJdGVtcyIsImFkZGl0aW9uYWxQcm9wZXJ0aWVzIiwiY29udGFpbnMiLCJwcm9wZXJ0eU5hbWVzIiwibm90IiwiaWYiLCJ0aGVuIiwiZWxzZSIsImFsbE9mIiwiYW55T2YiLCJvbmVPZiIsInVuZXZhbHVhdGVkSXRlbXMiLCJ1bmV2YWx1YXRlZFByb3BlcnRpZXMiLCJjb250ZW50U2NoZW1hIl0pLE8kPW5ldyBTZXQoWyJwcm9wZXJ0aWVzIiwicGF0dGVyblByb3BlcnRpZXMiLCJkZXBlbmRlbnRTY2hlbWFzIiwiZGVwZW5kZW5jaWVzIiwiJGRlZnMiLCJkZWZpbml0aW9ucyJdKTtmdW5jdGlvbiBBbihlKXtyZXR1cm4gdHlwZW9mIGUhPSJvYmplY3QifHxlPT09bnVsbD8hMTpBcnJheS5pc0FycmF5KGUpP2Uuc29tZShBbik6dHlwZW9mIGUuJHJlZj09InN0cmluZyI/ITA6T2JqZWN0LmVudHJpZXMoZSkuc29tZSgoW3Qsbl0pPT5FJC5oYXModCk/QW4obik6IU8kLmhhcyh0KXx8dHlwZW9mIG4hPSJvYmplY3QifHxuPT09bnVsbD8hMTpPYmplY3QudmFsdWVzKG4pLnNvbWUoQW4pKX1mdW5jdGlvbiBEdShlKXtyZXR1cm4gZT09PTE/ImVsZW1lbnQiOiJlbGVtZW50cyJ9ZnVuY3Rpb24gUiQoZSx0KXtyZXR1cm4gQS50cmFuc2Zvcm0obz0+bykuY2hlY2sobz0+e2NvbnN0IHM9by52YWx1ZTtpZihBcnJheS5pc0FycmF5KHMpKXtpZih0LnVuaXF1ZUl0ZW1zPT09ITApe2NvbnN0IHI9bmV3IE1hcDtmb3IobGV0IGE9MDthPHMubGVuZ3RoO2ErKyl7Y29uc3QgaT1maShzW2FdLG5ldyBTZXQpO2lmKGk9PT1udWxsKWNvbnRpbnVlO2NvbnN0IGQ9ci5nZXQoaSk7aWYoZD09PXZvaWQgMCl7ci5zZXQoaSxhKTtjb250aW51ZX1vLmlzc3Vlcy5wdXNoKHtjb2RlOiJjdXN0b20iLG1lc3NhZ2U6YEFycmF5IGl0ZW1zIG11c3QgYmUgdW5pcXVlOiBlbGVtZW50IGF0IGluZGV4ICR7YX0gZHVwbGljYXRlcyB0aGUgb25lIGF0IGluZGV4ICR7ZH1gLGlucHV0OnMscGF0aDpbYV0sY29udGludWU6ITB9KX19aWYodC5jb250YWluc1NjaGVtYSl7Y29uc3Qgcj10Lm1pbkNvbnRhaW5zPz8xLGE9dC5tYXhDb250YWlucyE9PXZvaWQgMD90Lm1heENvbnRhaW5zKzE6TnVtYmVyLlBPU0lUSVZFX0lORklOSVRZO2xldCBpPTA7Zm9yKGNvbnN0IGQgb2YgcylpZih0LmNvbnRhaW5zU2NoZW1hLnNhZmVQYXJzZShkKS5zdWNjZXNzJiYrK2k+PWEpYnJlYWs7aTxyJiZvLmlzc3Vlcy5wdXNoKHtjb2RlOiJjdXN0b20iLG1lc3NhZ2U6YEFycmF5IG11c3QgY29udGFpbiBhdCBsZWFzdCAke3J9IG1hdGNoaW5nICR7RHUocil9OyBmb3VuZCAke2l9YCxpbnB1dDpzLGNvbnRpbnVlOiEwfSksdC5tYXhDb250YWlucyE9PXZvaWQgMCYmaT50Lm1heENvbnRhaW5zJiZvLmlzc3Vlcy5wdXNoKHtjb2RlOiJjdXN0b20iLG1lc3NhZ2U6YEFycmF5IG11c3QgY29udGFpbiBhdCBtb3N0ICR7dC5tYXhDb250YWluc30gbWF0Y2hpbmcgJHtEdSh0Lm1heENvbnRhaW5zKX1gLGlucHV0OnMsY29udGludWU6ITB9KX19fSkucGlwZShlKX1mdW5jdGlvbiBCdShlLHQpe2lmKGUhPT0hMSlyZXR1cm4gZT09PXZvaWQgMHx8ZT09PSEwP0EuYW55KCk6eWUoZSx0KX1jb25zdCBOJD0vXig/OlswMV1cZHwyWzAtM10pOlswLTVdXGQ6WzAtNV1cZCg/OlwuXGQrKT8oPzpafFsrLV0oPzpbMDFdXGR8MlswLTNdKTpbMC01XVxkKSQvO2Z1bmN0aW9uIGdmKGUsdCl7aWYoZS5ub3QhPT12b2lkIDApe2lmKHR5cGVvZiBlLm5vdD09Im9iamVjdCImJk9iamVjdC5rZXlzKGUubm90KS5sZW5ndGg9PT0wKXJldHVybiBBLm5ldmVyKCk7dGhyb3cgbmV3IEVycm9yKCJub3QgaXMgbm90IHN1cHBvcnRlZCBpbiBab2QgKGV4Y2VwdCB7IG5vdDoge30gfSBmb3IgbmV2ZXIpIil9aWYoZS51bmV2YWx1YXRlZEl0ZW1zIT09dm9pZCAwKXRocm93IG5ldyBFcnJvcigidW5ldmFsdWF0ZWRJdGVtcyBpcyBub3Qgc3VwcG9ydGVkIik7aWYoZS51bmV2YWx1YXRlZFByb3BlcnRpZXMhPT12b2lkIDApdGhyb3cgbmV3IEVycm9yKCJ1bmV2YWx1YXRlZFByb3BlcnRpZXMgaXMgbm90IHN1cHBvcnRlZCIpO2lmKGUuaWYhPT12b2lkIDB8fGUudGhlbiE9PXZvaWQgMHx8ZS5lbHNlIT09dm9pZCAwKXRocm93IG5ldyBFcnJvcigiQ29uZGl0aW9uYWwgc2NoZW1hcyAoaWYvdGhlbi9lbHNlKSBhcmUgbm90IHN1cHBvcnRlZCIpO2lmKGUuZGVwZW5kZW50U2NoZW1hcyE9PXZvaWQgMHx8ZS5kZXBlbmRlbnRSZXF1aXJlZCE9PXZvaWQgMCl0aHJvdyBuZXcgRXJyb3IoImRlcGVuZGVudFNjaGVtYXMgYW5kIGRlcGVuZGVudFJlcXVpcmVkIGFyZSBub3Qgc3VwcG9ydGVkIik7aWYoZS4kcmVmKXtjb25zdCBzPWUuJHJlZjtpZih0LnJlZnMuaGFzKHMpKXJldHVybiB0LnJlZnMuZ2V0KHMpO2lmKHQucHJvY2Vzc2luZy5oYXMocykpcmV0dXJuIEEubGF6eSgoKT0+e2lmKCF0LnJlZnMuaGFzKHMpKXRocm93IG5ldyBFcnJvcihgQ2lyY3VsYXIgcmVmZXJlbmNlIG5vdCByZXNvbHZlZDogJHtzfWApO3JldHVybiB0LnJlZnMuZ2V0KHMpfSk7dC5wcm9jZXNzaW5nLmFkZChzKTtjb25zdCByPUMkKHMsdCksYT15ZShyLHQpO3JldHVybiB0LnJlZnMuc2V0KHMsYSksdC5wcm9jZXNzaW5nLmRlbGV0ZShzKSxhfWlmKGUuZW51bSE9PXZvaWQgMCl7Y29uc3Qgcz1lLmVudW07aWYodC52ZXJzaW9uPT09Im9wZW5hcGktMy4wIiYmZS5udWxsYWJsZT09PSEwJiZzLmxlbmd0aD09PTEmJnNbMF09PT1udWxsKXJldHVybiBBLm51bGwoKTtpZihzLmxlbmd0aD09PTApcmV0dXJuIEEubmV2ZXIoKTtpZihzLmxlbmd0aD09PTEpcmV0dXJuIEEubGl0ZXJhbChzWzBdKTtpZihzLmV2ZXJ5KGE9PnR5cGVvZiBhPT0ic3RyaW5nIikpcmV0dXJuIEEuZW51bShzKTtjb25zdCByPXMubWFwKGE9PkEubGl0ZXJhbChhKSk7cmV0dXJuIHIubGVuZ3RoPDI/clswXTpBLnVuaW9uKFtyWzBdLHJbMV0sLi4uci5zbGljZSgyKV0pfWlmKGUuY29uc3QhPT12b2lkIDApcmV0dXJuIEEubGl0ZXJhbChlLmNvbnN0KTtjb25zdCBuPWUudHlwZTtpZihBcnJheS5pc0FycmF5KG4pKXtjb25zdCBzPW4ubWFwKHI9Pntjb25zdCBhPXsuLi5lLHR5cGU6cn07cmV0dXJuIGdmKGEsdCl9KTtyZXR1cm4gcy5sZW5ndGg9PT0wP0EubmV2ZXIoKTpzLmxlbmd0aD09PTE/c1swXTpBLnVuaW9uKHMpfWlmKCFuKXJldHVybiBBLmFueSgpO2xldCBvO3N3aXRjaChuKXtjYXNlInN0cmluZyI6e2xldCBzPUEuc3RyaW5nKCk7aWYoZS5mb3JtYXQpe2NvbnN0IHI9ZS5mb3JtYXQ7cj09PSJlbWFpbCI/cz1zLmNoZWNrKEEuZW1haWwoKSk6cj09PSJ1cmkifHxyPT09InVyaS1yZWZlcmVuY2UiP3M9cy5jaGVjayhBLnVybCgpKTpyPT09InV1aWQifHxyPT09Imd1aWQiP3M9cy5jaGVjayhBLnV1aWQoKSk6cj09PSJkYXRlLXRpbWUiP3M9cy5jaGVjayhBLmlzby5kYXRldGltZSh7b2Zmc2V0OiEwfSkpOnI9PT0iZGF0ZSI/cz1zLmNoZWNrKEEuaXNvLmRhdGUoKSk6cj09PSJ0aW1lIj9zPXMuY2hlY2soQS5yZWdleChOJCkpOnI9PT0iZHVyYXRpb24iP3M9cy5jaGVjayhBLmlzby5kdXJhdGlvbigpKTpyPT09Imhvc3RuYW1lIj9zPXMuY2hlY2soQS5ob3N0bmFtZSgpKTpyPT09ImlwdjQiP3M9cy5jaGVjayhBLmlwdjQoKSk6cj09PSJpcHY2Ij9zPXMuY2hlY2soQS5pcHY2KCkpOnI9PT0ibWFjIj9zPXMuY2hlY2soQS5tYWMoKSk6cj09PSJjaWRyIj9zPXMuY2hlY2soQS5jaWRydjQoKSk6cj09PSJjaWRyLXY2Ij9zPXMuY2hlY2soQS5jaWRydjYoKSk6cj09PSJiYXNlNjQiP3M9cy5jaGVjayhBLmJhc2U2NCgpKTpyPT09ImJhc2U2NHVybCI/cz1zLmNoZWNrKEEuYmFzZTY0dXJsKCkpOnI9PT0iZTE2NCI/cz1zLmNoZWNrKEEuZTE2NCgpKTpyPT09ImNyZWRpdF9jYXJkIj9zPXMuY2hlY2soQS5jcmVkaXRDYXJkKCkpOnI9PT0iaWJhbiI/cz1zLmNoZWNrKEEuaWJhbigpKTpyPT09Imp3dCI/cz1zLmNoZWNrKEEuand0KCkpOnI9PT0iZW1vamkiP3M9cy5jaGVjayhBLmVtb2ppKCkpOnI9PT0ibmFub2lkIj9zPXMuY2hlY2soQS5uYW5vaWQoKSk6cj09PSJjdWlkIj9zPXMuY2hlY2soQS5jdWlkKCkpOnI9PT0iY3VpZDIiP3M9cy5jaGVjayhBLmN1aWQyKCkpOnI9PT0idWxpZCI/cz1zLmNoZWNrKEEudWxpZCgpKTpyPT09InhpZCI/cz1zLmNoZWNrKEEueGlkKCkpOnI9PT0ia3N1aWQiJiYocz1zLmNoZWNrKEEua3N1aWQoKSkpfXR5cGVvZiBlLm1pbkxlbmd0aD09Im51bWJlciImJihzPXMubWluKGUubWluTGVuZ3RoKSksdHlwZW9mIGUubWF4TGVuZ3RoPT0ibnVtYmVyIiYmKHM9cy5tYXgoZS5tYXhMZW5ndGgpKSxlLnBhdHRlcm4mJihzPXMucmVnZXgobmV3IFJlZ0V4cChlLnBhdHRlcm4pKSksbz1zO2JyZWFrfWNhc2UibnVtYmVyIjpjYXNlImludGVnZXIiOntsZXQgcz1uPT09ImludGVnZXIiP0EubnVtYmVyKCkuaW50KCk6QS5udW1iZXIoKTt0eXBlb2YgZS5taW5pbXVtPT0ibnVtYmVyIiYmZS5leGNsdXNpdmVNaW5pbXVtIT09ITAmJihzPXMubWluKGUubWluaW11bSkpLHR5cGVvZiBlLm1heGltdW09PSJudW1iZXIiJiZlLmV4Y2x1c2l2ZU1heGltdW0hPT0hMCYmKHM9cy5tYXgoZS5tYXhpbXVtKSksdHlwZW9mIGUuZXhjbHVzaXZlTWluaW11bT09Im51bWJlciI/cz1zLmd0KGUuZXhjbHVzaXZlTWluaW11bSk6ZS5leGNsdXNpdmVNaW5pbXVtPT09ITAmJnR5cGVvZiBlLm1pbmltdW09PSJudW1iZXIiJiYocz1zLmd0KGUubWluaW11bSkpLHR5cGVvZiBlLmV4Y2x1c2l2ZU1heGltdW09PSJudW1iZXIiP3M9cy5sdChlLmV4Y2x1c2l2ZU1heGltdW0pOmUuZXhjbHVzaXZlTWF4aW11bT09PSEwJiZ0eXBlb2YgZS5tYXhpbXVtPT0ibnVtYmVyIiYmKHM9cy5sdChlLm1heGltdW0pKSx0eXBlb2YgZS5tdWx0aXBsZU9mPT0ibnVtYmVyIiYmKHM9cy5tdWx0aXBsZU9mKGUubXVsdGlwbGVPZikpLG89czticmVha31jYXNlImJvb2xlYW4iOntvPUEuYm9vbGVhbigpO2JyZWFrfWNhc2UibnVsbCI6e289QS5udWxsKCk7YnJlYWt9Y2FzZSJvYmplY3QiOntjb25zdCBzPXt9LHI9ZS5wcm9wZXJ0aWVzfHx7fSxhPW5ldyBTZXQoZS5yZXF1aXJlZHx8W10pLGk9dHlwZW9mIGUuYWRkaXRpb25hbFByb3BlcnRpZXM9PSJvYmplY3QiP3llKGUuYWRkaXRpb25hbFByb3BlcnRpZXMsdCk6dm9pZCAwO2Zvcihjb25zdFtoLGJdb2YgT2JqZWN0LmVudHJpZXMocikpe2NvbnN0ICQ9eWUoYix0KTtBdChzLGgsYS5oYXMoaCk/JDokLm9wdGlvbmFsKCkpfWlmKGUucGF0dGVyblByb3BlcnRpZXMpe2NvbnN0IGg9ZS5wYXR0ZXJuUHJvcGVydGllcyxiPU9iamVjdC5rZXlzKGgpLCQ9W107Zm9yKGNvbnN0IFQgb2YgYil7Y29uc3QgeD15ZShoW1RdLHQpLHo9QS5zdHJpbmcoKS5yZWdleChuZXcgUmVnRXhwKFQpKTskLnB1c2goQS5sb29zZVJlY29yZCh6LHgpKX1jb25zdCBrPVtdO2lmKE9iamVjdC5rZXlzKHMpLmxlbmd0aD4wJiZrLnB1c2goQS5vYmplY3QocykucGFzc3Rocm91Z2goKSksay5wdXNoKC4uLiQpLGsubGVuZ3RoPT09MClvPUEub2JqZWN0KHt9KS5wYXNzdGhyb3VnaCgpO2Vsc2UgaWYoay5sZW5ndGg9PT0xKW89a1swXTtlbHNle2xldCBUPUEuaW50ZXJzZWN0aW9uKGtbMF0sa1sxXSk7Zm9yKGxldCB4PTI7eDxrLmxlbmd0aDt4KyspVD1BLmludGVyc2VjdGlvbihULGtbeF0pO289VH1pZihlLmFkZGl0aW9uYWxQcm9wZXJ0aWVzPT09ITEpe2NvbnN0IFQ9T2JqZWN0LmtleXMocykseD1iLm1hcChJPT5uZXcgUmVnRXhwKEkpKSx6PW87bz1vLmNoZWNrKEk9PntpZighaXQoSS52YWx1ZSkpcmV0dXJuO2NvbnN0IFo9W107Zm9yKGNvbnN0IGllIG9mIE9iamVjdC5rZXlzKEkudmFsdWUpKVQuaW5jbHVkZXMoaWUpfHx4LnNvbWUoQz0+Qy50ZXN0KGllKSl8fFoucHVzaChpZSk7Wi5sZW5ndGgmJkkuaXNzdWVzLnB1c2goe2NvZGU6InVucmVjb2duaXplZF9rZXlzIixrZXlzOlosaW5wdXQ6SS52YWx1ZSxpbnN0Onp9KX0pfX1lbHNle2NvbnN0IGg9QS5vYmplY3Qocyk7ZS5hZGRpdGlvbmFsUHJvcGVydGllcz09PSExP289aC5zdHJpY3QoKTppP289aC5jYXRjaGFsbChpKTpvPWgucGFzc3Rocm91Z2goKX1jb25zdCBkPWUucHJvcGVydHlOYW1lcyE9PXZvaWQgMCYmZS5wcm9wZXJ0eU5hbWVzIT09ITAsdT10eXBlb2YgZS5taW5Qcm9wZXJ0aWVzPT0ibnVtYmVyIj9lLm1pblByb3BlcnRpZXM6dm9pZCAwLHA9dHlwZW9mIGUubWF4UHJvcGVydGllcz09Im51bWJlciI/ZS5tYXhQcm9wZXJ0aWVzOnZvaWQgMDtpZihkfHx1IT09dm9pZCAwfHxwIT09dm9pZCAwKXtsZXQgaDtpZihkKXtjb25zdCBiPXR5cGVvZiBlLnByb3BlcnR5TmFtZXM9PSJvYmplY3QiJiZlLnByb3BlcnR5TmFtZXMudHlwZT09PXZvaWQgMD97dHlwZToic3RyaW5nIiwuLi5lLnByb3BlcnR5TmFtZXN9OmUucHJvcGVydHlOYW1lcztoPXllKGIsdCl9bz1QJChvLHtrZXlTY2hlbWE6aCxtaW5Qcm9wZXJ0aWVzOnUsbWF4UHJvcGVydGllczpwfSl9YnJlYWt9Y2FzZSJhcnJheSI6e2NvbnN0IHM9ZS5wcmVmaXhJdGVtcyxyPWUuaXRlbXM7aWYocyYmQXJyYXkuaXNBcnJheShzKSl7Y29uc3QgYT10eXBlb2YgZS5taW5JdGVtcz09Im51bWJlciI/ZS5taW5JdGVtczowLGk9cy5tYXAoaD0+eWUoaCx0KSksZD1MdShpLGEpLHU9QXJyYXkuaXNBcnJheShyKT92b2lkIDA6QnUocix0KSxwPUEudHVwbGUoZCk7bz11P3AucmVzdCh1KTpwLHR5cGVvZiBlLm1pbkl0ZW1zPT0ibnVtYmVyIiYmKG89by5jaGVjayhBLm1pbkxlbmd0aChlLm1pbkl0ZW1zKSkpLHR5cGVvZiBlLm1heEl0ZW1zPT0ibnVtYmVyIiYmKG89by5jaGVjayhBLm1heExlbmd0aChlLm1heEl0ZW1zKSkpfWVsc2UgaWYoQXJyYXkuaXNBcnJheShyKSl7Y29uc3QgYT10eXBlb2YgZS5taW5JdGVtcz09Im51bWJlciI/ZS5taW5JdGVtczowLGk9ci5tYXAoaD0+eWUoaCx0KSksZD1MdShpLGEpLHU9QnUoZS5hZGRpdGlvbmFsSXRlbXMsdCkscD1BLnR1cGxlKGQpO289dT9wLnJlc3QodSk6cCx0eXBlb2YgZS5taW5JdGVtcz09Im51bWJlciImJihvPW8uY2hlY2soQS5taW5MZW5ndGgoZS5taW5JdGVtcykpKSx0eXBlb2YgZS5tYXhJdGVtcz09Im51bWJlciImJihvPW8uY2hlY2soQS5tYXhMZW5ndGgoZS5tYXhJdGVtcykpKX1lbHNlIGlmKHIhPT12b2lkIDApe2NvbnN0IGE9eWUocix0KTtsZXQgaT1BLmFycmF5KGEpO3R5cGVvZiBlLm1pbkl0ZW1zPT0ibnVtYmVyIiYmKGk9aS5taW4oZS5taW5JdGVtcykpLHR5cGVvZiBlLm1heEl0ZW1zPT0ibnVtYmVyIiYmKGk9aS5tYXgoZS5tYXhJdGVtcykpLG89aX1lbHNlIG89QS5hcnJheShBLmFueSgpKTsoZS51bmlxdWVJdGVtcz09PSEwfHxlLmNvbnRhaW5zIT09dm9pZCAwKSYmKG89UiQobyx7dW5pcXVlSXRlbXM6ZS51bmlxdWVJdGVtcz09PSEwLGNvbnRhaW5zU2NoZW1hOmUuY29udGFpbnMhPT12b2lkIDA/eWUoZS5jb250YWlucyx0KTp2b2lkIDAsbWluQ29udGFpbnM6dHlwZW9mIGUubWluQ29udGFpbnM9PSJudW1iZXIiP2UubWluQ29udGFpbnM6dm9pZCAwLG1heENvbnRhaW5zOnR5cGVvZiBlLm1heENvbnRhaW5zPT0ibnVtYmVyIj9lLm1heENvbnRhaW5zOnZvaWQgMH0pKTticmVha31kZWZhdWx0OnRocm93IG5ldyBFcnJvcihgVW5zdXBwb3J0ZWQgdHlwZTogJHtufWApfXJldHVybiBvfWZ1bmN0aW9uIHllKGUsdCl7aWYodHlwZW9mIGU9PSJib29sZWFuIilyZXR1cm4gZT9BLmFueSgpOkEubmV2ZXIoKTtsZXQgbj1nZihlLHQpO2NvbnN0IG89ZS50eXBlfHxlLmVudW0hPT12b2lkIDB8fGUuY29uc3QhPT12b2lkIDA7aWYoZS5hbnlPZiYmQXJyYXkuaXNBcnJheShlLmFueU9mKSl7Y29uc3QgaT1lLmFueU9mLm1hcCh1PT55ZSh1LHQpKSxkPUEudW5pb24oaSk7bj1vP0EuaW50ZXJzZWN0aW9uKG4sZCk6ZH1pZihlLm9uZU9mJiZBcnJheS5pc0FycmF5KGUub25lT2YpKXtjb25zdCBpPWUub25lT2YubWFwKHU9PnllKHUsdCkpLGQ9QS54b3IoaSk7bj1vP0EuaW50ZXJzZWN0aW9uKG4sZCk6ZH1pZihlLmFsbE9mJiZBcnJheS5pc0FycmF5KGUuYWxsT2YpKWlmKGUuYWxsT2YubGVuZ3RoPT09MCluPW8/bjpBLmFueSgpO2Vsc2V7bGV0IGk9bz9uOnllKGUuYWxsT2ZbMF0sdCk7Y29uc3QgZD1vPzA6MTtmb3IobGV0IHU9ZDt1PGUuYWxsT2YubGVuZ3RoO3UrKylpPUEuaW50ZXJzZWN0aW9uKGkseWUoZS5hbGxPZlt1XSx0KSk7bj1pfWUubnVsbGFibGU9PT0hMCYmdC52ZXJzaW9uPT09Im9wZW5hcGktMy4wIiYmKG49QS5udWxsYWJsZShuKSksZS5yZWFkT25seT09PSEwJiYobj1BLnJlYWRvbmx5KG4pKSxlLmRlZmF1bHQhPT12b2lkIDAmJihuPW4uZGVmYXVsdChlLmRlZmF1bHQpKTtjb25zdCBzPXt9LHI9WyIkaWQiLCJpZCIsIiRjb21tZW50IiwiJGFuY2hvciIsIiR2b2NhYnVsYXJ5IiwiJGR5bmFtaWNSZWYiLCIkZHluYW1pY0FuY2hvciJdO2Zvcihjb25zdCBpIG9mIHIpaSBpbiBlJiYoc1tpXT1lW2ldKTtjb25zdCBhPVsiY29udGVudEVuY29kaW5nIiwiY29udGVudE1lZGlhVHlwZSIsImNvbnRlbnRTY2hlbWEiXTtmb3IoY29uc3QgaSBvZiBhKWkgaW4gZSYmKHNbaV09ZVtpXSk7aWYoZS50eXBlPT09Im9iamVjdCImJmUuJHJlZj09PXZvaWQgMCl7ZS5wcm9wZXJ0eU5hbWVzIT09dm9pZCAwJiYhQW4oZS5wcm9wZXJ0eU5hbWVzKSYmKHMucHJvcGVydHlOYW1lcz1lLnByb3BlcnR5TmFtZXMpO2Zvcihjb25zdCBpIG9mWyJtaW5Qcm9wZXJ0aWVzIiwibWF4UHJvcGVydGllcyJdKWVbaV0hPT12b2lkIDAmJihzW2ldPWVbaV0pfWlmKGUudHlwZT09PSJhcnJheSImJmUuJHJlZj09PXZvaWQgMCl7ZS5jb250YWlucyE9PXZvaWQgMCYmIUFuKGUuY29udGFpbnMpJiYocy5jb250YWlucz1lLmNvbnRhaW5zKTtmb3IoY29uc3QgaSBvZlsidW5pcXVlSXRlbXMiLCJtaW5Db250YWlucyIsIm1heENvbnRhaW5zIl0pZVtpXSE9PXZvaWQgMCYmKHNbaV09ZVtpXSl9Zm9yKGNvbnN0IGkgb2YgT2JqZWN0LmtleXMoZSkpeCQuaGFzKGkpfHxBdChzLGksZVtpXSk7cmV0dXJuIE9iamVjdC5rZXlzKHMpLmxlbmd0aD4wJiZ0LnJlZ2lzdHJ5LmFkZChuLHMpLGUuZGVzY3JpcHRpb24mJihuPW4uZGVzY3JpYmUoZS5kZXNjcmlwdGlvbikpLG59ZnVuY3Rpb24gYmYoZSx0KXtpZih0eXBlb2YgZT09ImJvb2xlYW4iKXJldHVybiBlP0EuYW55KCk6QS5uZXZlcigpO2xldCBuO3RyeXtuPUpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoZSkpfWNhdGNoe3Rocm93IG5ldyBFcnJvcigiZnJvbUpTT05TY2hlbWEgaW5wdXQgaXMgbm90IHZhbGlkIEpTT04gKHBvc3NpYmx5IGN5Y2xpYyk7IHVzZSAkZGVmcy8kcmVmIGZvciByZWN1cnNpdmUgc2NoZW1hcyIpfWNvbnN0IG89SSQobix0Py5kZWZhdWx0VGFyZ2V0KSxzPW4uJGRlZnN8fG4uZGVmaW5pdGlvbnN8fHt9LHI9e3ZlcnNpb246byxkZWZzOnMscmVmczpuZXcgTWFwLHByb2Nlc3Npbmc6bmV3IFNldCxyb290U2NoZW1hOm4scmVnaXN0cnk6dD8ucmVnaXN0cnk/P05lfTtyZXR1cm4geWUobixyKX1mdW5jdGlvbiB2ZihlKXtyZXR1cm4gUWEoZSx7b2JqZWN0OnQ9PnQucGFydGlhbCgpLHVuaW9uOnQ9Pntjb25zdCBuPXQuX3pvZC5kZWY7cmV0dXJuIG4uZGlzY3JpbWluYXRvcj09PXZvaWQgMD90OkQobi5vcHRpb25zKX19KX1mdW5jdGlvbiBaJChlLHQpe2lmKCF0Py5sZW5ndGgpcmV0dXJuIGU7Y29uc3Qgbj1lLl96b2QuZGVmO3JldHVybiBzZShlLHZlKG4se2NoZWNrczpbLi4ubi5jaGVja3M/P1tdLC4uLnRdfSkse3BhcmVudDohMH0pfWZ1bmN0aW9uICRmKGUpe3JldHVybiBaJChlLm91dCxlLmNoZWNrcyl9ZnVuY3Rpb24gTSQoZSl7cmV0dXJuIGUuaW4uX3pvZC50cmFpdHMuaGFzKCIkWm9kVHJhbnNmb3JtIik/JGYoZSk6ZS5pbn1mdW5jdGlvbiB5ZihlKXtyZXR1cm4gUWEoZSx7cGlwZTp0PT5NJCh0Ll96b2QuZGVmKSxkZWZhdWx0Oih0LG4pPT5uP3RlKHQuX3pvZC5kZWYuaW5uZXJUeXBlKTp0LGNhdGNoOih0LG4pPT5uP3QuX3pvZC5kZWYuaW5uZXJUeXBlOnR9KX1mdW5jdGlvbiBrZihlKXtyZXR1cm4gUWEoZSx7cGlwZTp0PT4kZih0Ll96b2QuZGVmKSxwcmVmYXVsdDoodCxuKT0+bj90Ll96b2QuZGVmLmlubmVyVHlwZTp0fSl9ZnVuY3Rpb24gaiQoZSl7cmV0dXJuIF9tKGVuLGUpfWZ1bmN0aW9uIHEkKGUpe3JldHVybiB4bShhbixlKX1mdW5jdGlvbiBMJChlKXtyZXR1cm4gUm0oY24sZSl9ZnVuY3Rpb24gRCQoZSl7cmV0dXJuIFptKGxuLGUpfWZ1bmN0aW9uIEIkKGUpe3JldHVybiBWbShFbyxlKX1jb25zdCBfZj1PYmplY3QuZnJlZXplKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7X19wcm90b19fOm51bGwsYmlnaW50OkQkLGJvb2xlYW46TCQsZGF0ZTpCJCxudW1iZXI6cSQsc3RyaW5nOmokfSxTeW1ib2wudG9TdHJpbmdUYWcse3ZhbHVlOiJNb2R1bGUifSkpLFV1PU9iamVjdC5mcmVlemUoT2JqZWN0LmRlZmluZVByb3BlcnR5KHtfX3Byb3RvX186bnVsbCwkYnJhbmQ6TWksJGlucHV0OnZhLCRvdXRwdXQ6YmEsSU5WQUxJRDp5YSxORVZFUjpaaSxUaW1lUHJlY2lzaW9uOldhLFpvZEFueTpvcixab2RBcnJheTphcixab2RCYXNlNjQ6VG8sWm9kQmFzZTY0VVJMOnpvLFpvZEJpZ0ludDpsbixab2RCaWdJbnRGb3JtYXQ6QW8sWm9kQm9vbGVhbjpjbixab2RDSURSdjQ6d28sWm9kQ0lEUnY2OlNvLFpvZENVSUQ6Z28sWm9kQ1VJRDI6Ym8sWm9kQ2F0Y2g6enIsWm9kQ29kZWM6Zm4sWm9kQ29tcGlsZUFzeW5jRXJyb3I6a2EsWm9kQ29tcGlsZVVuc3VwcG9ydGVkRXJyb3I6X2EsWm9kQ3JlZGl0Q2FyZDpRcyxab2RDdXN0b206Z24sWm9kQ3VzdG9tU3RyaW5nRm9ybWF0Omx0LFpvZERhdGU6RW8sWm9kRGVmYXVsdDp5cixab2REaXNjcmltaW5hdGVkVW5pb246bHIsWm9kRTE2NDp4byxab2RFbWFpbDpwbyxab2RFbW9qaTptbyxab2RFbnVtOl90LFpvZEVycm9yOmRmLFpvZEV4YWN0T3B0aW9uYWw6Tm8sWm9kRmlsZTpncixnZXQgWm9kRmlyc3RQYXJ0eVR5cGVLaW5kKCl7cmV0dXJuIGhzfSxab2RGdW5jdGlvbjpacixab2RHVUlEOmhvLFpvZElCQU46WHMsWm9kSVB2NDprbyxab2RJUHY2Ol9vLFpvZElTT0RhdGU6bm4sWm9kSVNPRGF0ZVRpbWU6dG4sWm9kSVNPRHVyYXRpb246c24sWm9kSVNPVGltZTpvbixab2RJbnN0YW5jZU9mOkxyLFpvZEludGVyc2VjdGlvbjp1cixab2RJc3N1ZUNvZGU6cGYsWm9kSldUOklvLFpvZEtTVUlEOnlvLFpvZExhenk6T3IsWm9kTGl0ZXJhbDpmcixab2RNQUM6WXMsWm9kTWFwOmhyLFpvZE5hTjpJcixab2ROYW5vSUQ6Zm8sWm9kTmV2ZXI6cnIsWm9kTm9uT3B0aW9uYWw6Wm8sWm9kTnVsbDpucixab2ROdWxsYWJsZTokcixab2ROdW1iZXI6YW4sWm9kTnVtYmVyRm9ybWF0OnV0LFpvZE9iamVjdDp1bixab2RPcHRpb25hbDpobixab2RQaXBlOm1uLFpvZFByZWZhdWx0Ol9yLFpvZFByZXByb2Nlc3M6QXIsWm9kUHJvbWlzZTpOcixab2RSZWFkb25seTpDcixab2RSZWFsRXJyb3I6emUsWm9kUmVjb3JkOmt0LFpvZFNldDptcixab2RTdHJpbmc6ZW4sWm9kU3RyaW5nRm9ybWF0OlksWm9kU3VjY2VzczpUcixab2RTeW1ib2w6ZXIsWm9kVGVtcGxhdGVMaXRlcmFsOkVyLFpvZFRyYW5zZm9ybTpicixab2RUdXBsZTpkcixab2RUeXBlOmosWm9kVUxJRDp2byxab2RVUkw6cm4sWm9kVVVJRDpVZSxab2RVbmRlZmluZWQ6dHIsWm9kVW5pb246ZG4sWm9kVW5rbm93bjpzcixab2RWb2lkOmlyLFpvZFhJRDokbyxab2RYb3I6Y3IsX1pvZFN0cmluZzp1byxfZGVmYXVsdDprcixfZnVuY3Rpb246V3QsYW55OlBvLGFycmF5Ok8sYmFzZTY0OkVjLGJhc2U2NHVybDpPYyxiaWdpbnQ6VmMsYm9vbGVhbjpHLGNhdGNoOnhyLGNoZWNrOmZsLGNpZHJ2NDpDYyxjaWRydjY6UGMsY2xvbmU6c2UsY29kZWM6ZGwsY29lcmNlOl9mLGNvbXBpbGU6d2EsY29uZmlnOmRlLGNvcmU6Y2YsY3JlZGl0Q2FyZDpOYyxjdWlkOl9jLGN1aWQyOndjLGN1cnJlbmN5Q29kZTpEYyxjdXN0b206TXIsZGF0ZTpRYyxkZWNvZGU6cmMsZGVjb2RlQXN5bmM6YWMsZGVlcFBhcnRpYWw6dmYsZGVzY3JpYmU6Z2wsZGlzY3JpbWluYXRlZFVuaW9uOk9vLGUxNjQ6UmMsZW1haWw6cGMsZW1vamk6eWMsZW5jb2RlOnNjLGVuY29kZUFzeW5jOmljLGVuZHNXaXRoOm5vLGVudW06bWUsZXhhY3RPcHRpb25hbDp2cixmaWxlOmFsLGZsYXR0ZW5FcnJvcjpScyxmbG9hdDMyOlVjLGZsb2F0NjQ6RmMsZm9ybWF0RXJyb3I6TnMsZnJvbUpTT05TY2hlbWE6YmYsZnVuY3Rpb246V3QsZ2V0RGlzY3JpbWluYXRlZE9wdGlvbjp1YSxnZXRFcnJvck1hcDptZixnbG9iYWxSZWdpc3RyeTpOZSxndDpZZSxndGU6SWUsZ3VpZDpoYyxoYXNoOkJjLGhleDpMYyxob3N0bmFtZTpxYyxodHRwVXJsOiRjLGliYW46WmMsaW5jbHVkZXM6ZW8saW5wdXQ6eWYsaW5zdGFuY2VvZjp2bCxpbnQ6Tm4saW50MzI6SGMsaW50NjQ6SmMsaW50ZXJzZWN0aW9uOnBuLGludmVydENvZGVjOnBsLGlwdjQ6eGMsaXB2NjpBYyxpc286a2wsanNvbjp5bCxqd3Q6TWMsa2V5b2Y6WGMsa3N1aWQ6emMsbGF6eTpScixsZW5ndGg6UXQsbGl0ZXJhbDpnLGxvY2FsZXM6Z2EsbG9vc2VPYmplY3Q6aGUsbG9vc2VSZWNvcmQ6b2wsbG93ZXJjYXNlOlFuLGx0OkdlLGx0ZTp4ZSxtYWM6SWMsbWFwOnNsLG1heExlbmd0aDpZdCxtYXhTaXplOkN0LG1lbW9pemVyOkJzLG1ldGE6YmwsbWltZTpzbyxtaW5MZW5ndGg6YXQsbWluU2l6ZTpRZSxtdWx0aXBsZU9mOiR0LG5hbjp1bCxuYW5vaWQ6a2MsbmF0aXZlRW51bTppbCxuZWdhdGl2ZTpWcyxuZXZlcjp5dCxub25uZWdhdGl2ZTpLcyxub25vcHRpb25hbDpTcixub25wb3NpdGl2ZTpKcyxub3JtYWxpemU6cm8sbnVsbDpDbyxudWxsYWJsZTpIdCxudWxsaXNoOmNsLG51bWJlcjpNLG9iamVjdDp2LG9wdGlvbmFsOnRlLG91dHB1dDprZixvdmVyd3JpdGU6V2UscGFyc2U6ZWMscGFyc2VBc3luYzp0YyxwYXJ0aWFsUmVjb3JkOm5sLHBpcGU6Wm4scG9zaXRpdmU6V3MscHJlZmF1bHQ6d3IscHJlcHJvY2VzczpNbyxwcmV0dGlmeUVycm9yOnFpLHByb21pc2U6bWwscHJvcGVydGllczpvbyxwcm9wZXJ0eTpHcyxyZWFkb25seTpQcixyZWNvcmQ6VSxyZWZpbmU6anIscmVnZXg6WW4scmVnZXhlczpMcyxyZWdpc3RyeTpVcyxzYWZlRGVjb2RlOmxjLHNhZmVEZWNvZGVBc3luYzpkYyxzYWZlRW5jb2RlOmNjLHNhZmVFbmNvZGVBc3luYzp1YyxzYWZlUGFyc2U6bmMsc2FmZVBhcnNlQXN5bmM6b2Msc2V0OnJsLHNldEVycm9yTWFwOmhmLHNpemU6R3Qsc2x1Z2lmeTpsbyxzdGFydHNXaXRoOnRvLHN0cmljdE9iamVjdDplbCxzdHJpbmc6ZixzdHJpbmdGb3JtYXQ6amMsc3RyaW5nYm9vbDokbCxzdWNjZXNzOmxsLHN1cGVyUmVmaW5lOnFyLHN5bWJvbDpHYyx0ZW1wbGF0ZUxpdGVyYWw6aGwsdG9KU09OU2NoZW1hOllhLHRvTG93ZXJDYXNlOmFvLHRvVXBwZXJDYXNlOmNvLHRvWm9kOlRzLHRyYW5zZm9ybTpSbyx0cmVlaWZ5RXJyb3I6amksdHJpbTppbyx0dXBsZTpwcix1aW50MzI6V2MsdWludDY0OktjLHVsaWQ6U2MsdW5kZWZpbmVkOkZ0LHVuaW9uOkQsdW5rbm93bjpLLHVwcGVyY2FzZTpYbix1cmw6dmMsdXRpbDpOaSx1dWlkOm1jLHV1aWR2NDpmYyx1dWlkdjY6Z2MsdXVpZHY3OmJjLHZhbGlkYXRlOk1zLHZhbGlkYXRlQXN5bmM6anMsdm9pZDpZYyx3aXRoUGFyc2VyOlNhLHhpZDpUYyx4b3I6dGx9LFN5bWJvbC50b1N0cmluZ1RhZyx7dmFsdWU6Ik1vZHVsZSJ9KSksVSQ9T2JqZWN0LmZyZWV6ZShPYmplY3QuZGVmaW5lUHJvcGVydHkoe19fcHJvdG9fXzpudWxsLCRicmFuZDpNaSwkaW5wdXQ6dmEsJG91dHB1dDpiYSxJTlZBTElEOnlhLE5FVkVSOlppLFRpbWVQcmVjaXNpb246V2EsWm9kQW55Om9yLFpvZEFycmF5OmFyLFpvZEJhc2U2NDpUbyxab2RCYXNlNjRVUkw6em8sWm9kQmlnSW50OmxuLFpvZEJpZ0ludEZvcm1hdDpBbyxab2RCb29sZWFuOmNuLFpvZENJRFJ2NDp3byxab2RDSURSdjY6U28sWm9kQ1VJRDpnbyxab2RDVUlEMjpibyxab2RDYXRjaDp6cixab2RDb2RlYzpmbixab2RDb21waWxlQXN5bmNFcnJvcjprYSxab2RDb21waWxlVW5zdXBwb3J0ZWRFcnJvcjpfYSxab2RDcmVkaXRDYXJkOlFzLFpvZEN1c3RvbTpnbixab2RDdXN0b21TdHJpbmdGb3JtYXQ6bHQsWm9kRGF0ZTpFbyxab2REZWZhdWx0OnlyLFpvZERpc2NyaW1pbmF0ZWRVbmlvbjpscixab2RFMTY0OnhvLFpvZEVtYWlsOnBvLFpvZEVtb2ppOm1vLFpvZEVudW06X3QsWm9kRXJyb3I6ZGYsWm9kRXhhY3RPcHRpb25hbDpObyxab2RGaWxlOmdyLGdldCBab2RGaXJzdFBhcnR5VHlwZUtpbmQoKXtyZXR1cm4gaHN9LFpvZEZ1bmN0aW9uOlpyLFpvZEdVSUQ6aG8sWm9kSUJBTjpYcyxab2RJUHY0OmtvLFpvZElQdjY6X28sWm9kSVNPRGF0ZTpubixab2RJU09EYXRlVGltZTp0bixab2RJU09EdXJhdGlvbjpzbixab2RJU09UaW1lOm9uLFpvZEluc3RhbmNlT2Y6THIsWm9kSW50ZXJzZWN0aW9uOnVyLFpvZElzc3VlQ29kZTpwZixab2RKV1Q6SW8sWm9kS1NVSUQ6eW8sWm9kTGF6eTpPcixab2RMaXRlcmFsOmZyLFpvZE1BQzpZcyxab2RNYXA6aHIsWm9kTmFOOklyLFpvZE5hbm9JRDpmbyxab2ROZXZlcjpycixab2ROb25PcHRpb25hbDpabyxab2ROdWxsOm5yLFpvZE51bGxhYmxlOiRyLFpvZE51bWJlcjphbixab2ROdW1iZXJGb3JtYXQ6dXQsWm9kT2JqZWN0OnVuLFpvZE9wdGlvbmFsOmhuLFpvZFBpcGU6bW4sWm9kUHJlZmF1bHQ6X3IsWm9kUHJlcHJvY2VzczpBcixab2RQcm9taXNlOk5yLFpvZFJlYWRvbmx5OkNyLFpvZFJlYWxFcnJvcjp6ZSxab2RSZWNvcmQ6a3QsWm9kU2V0Om1yLFpvZFN0cmluZzplbixab2RTdHJpbmdGb3JtYXQ6WSxab2RTdWNjZXNzOlRyLFpvZFN5bWJvbDplcixab2RUZW1wbGF0ZUxpdGVyYWw6RXIsWm9kVHJhbnNmb3JtOmJyLFpvZFR1cGxlOmRyLFpvZFR5cGU6aixab2RVTElEOnZvLFpvZFVSTDpybixab2RVVUlEOlVlLFpvZFVuZGVmaW5lZDp0cixab2RVbmlvbjpkbixab2RVbmtub3duOnNyLFpvZFZvaWQ6aXIsWm9kWElEOiRvLFpvZFhvcjpjcixfWm9kU3RyaW5nOnVvLF9kZWZhdWx0OmtyLF9mdW5jdGlvbjpXdCxhbnk6UG8sYXJyYXk6TyxiYXNlNjQ6RWMsYmFzZTY0dXJsOk9jLGJpZ2ludDpWYyxib29sZWFuOkcsY2F0Y2g6eHIsY2hlY2s6ZmwsY2lkcnY0OkNjLGNpZHJ2NjpQYyxjbG9uZTpzZSxjb2RlYzpkbCxjb2VyY2U6X2YsY29tcGlsZTp3YSxjb25maWc6ZGUsY29yZTpjZixjcmVkaXRDYXJkOk5jLGN1aWQ6X2MsY3VpZDI6d2MsY3VycmVuY3lDb2RlOkRjLGN1c3RvbTpNcixkYXRlOlFjLGRlY29kZTpyYyxkZWNvZGVBc3luYzphYyxkZWVwUGFydGlhbDp2ZixkZWZhdWx0OlV1LGRlc2NyaWJlOmdsLGRpc2NyaW1pbmF0ZWRVbmlvbjpPbyxlMTY0OlJjLGVtYWlsOnBjLGVtb2ppOnljLGVuY29kZTpzYyxlbmNvZGVBc3luYzppYyxlbmRzV2l0aDpubyxlbnVtOm1lLGV4YWN0T3B0aW9uYWw6dnIsZmlsZTphbCxmbGF0dGVuRXJyb3I6UnMsZmxvYXQzMjpVYyxmbG9hdDY0OkZjLGZvcm1hdEVycm9yOk5zLGZyb21KU09OU2NoZW1hOmJmLGZ1bmN0aW9uOld0LGdldERpc2NyaW1pbmF0ZWRPcHRpb246dWEsZ2V0RXJyb3JNYXA6bWYsZ2xvYmFsUmVnaXN0cnk6TmUsZ3Q6WWUsZ3RlOkllLGd1aWQ6aGMsaGFzaDpCYyxoZXg6TGMsaG9zdG5hbWU6cWMsaHR0cFVybDokYyxpYmFuOlpjLGluY2x1ZGVzOmVvLGlucHV0OnlmLGluc3RhbmNlb2Y6dmwsaW50Ok5uLGludDMyOkhjLGludDY0OkpjLGludGVyc2VjdGlvbjpwbixpbnZlcnRDb2RlYzpwbCxpcHY0OnhjLGlwdjY6QWMsaXNvOmtsLGpzb246eWwsand0Ok1jLGtleW9mOlhjLGtzdWlkOnpjLGxhenk6UnIsbGVuZ3RoOlF0LGxpdGVyYWw6Zyxsb2NhbGVzOmdhLGxvb3NlT2JqZWN0OmhlLGxvb3NlUmVjb3JkOm9sLGxvd2VyY2FzZTpRbixsdDpHZSxsdGU6eGUsbWFjOkljLG1hcDpzbCxtYXhMZW5ndGg6WXQsbWF4U2l6ZTpDdCxtZW1vaXplcjpCcyxtZXRhOmJsLG1pbWU6c28sbWluTGVuZ3RoOmF0LG1pblNpemU6UWUsbXVsdGlwbGVPZjokdCxuYW46dWwsbmFub2lkOmtjLG5hdGl2ZUVudW06aWwsbmVnYXRpdmU6VnMsbmV2ZXI6eXQsbm9ubmVnYXRpdmU6S3Msbm9ub3B0aW9uYWw6U3Isbm9ucG9zaXRpdmU6SnMsbm9ybWFsaXplOnJvLG51bGw6Q28sbnVsbGFibGU6SHQsbnVsbGlzaDpjbCxudW1iZXI6TSxvYmplY3Q6dixvcHRpb25hbDp0ZSxvdXRwdXQ6a2Ysb3ZlcndyaXRlOldlLHBhcnNlOmVjLHBhcnNlQXN5bmM6dGMscGFydGlhbFJlY29yZDpubCxwaXBlOlpuLHBvc2l0aXZlOldzLHByZWZhdWx0OndyLHByZXByb2Nlc3M6TW8scHJldHRpZnlFcnJvcjpxaSxwcm9taXNlOm1sLHByb3BlcnRpZXM6b28scHJvcGVydHk6R3MscmVhZG9ubHk6UHIscmVjb3JkOlUscmVmaW5lOmpyLHJlZ2V4OlluLHJlZ2V4ZXM6THMscmVnaXN0cnk6VXMsc2FmZURlY29kZTpsYyxzYWZlRGVjb2RlQXN5bmM6ZGMsc2FmZUVuY29kZTpjYyxzYWZlRW5jb2RlQXN5bmM6dWMsc2FmZVBhcnNlOm5jLHNhZmVQYXJzZUFzeW5jOm9jLHNldDpybCxzZXRFcnJvck1hcDpoZixzaXplOkd0LHNsdWdpZnk6bG8sc3RhcnRzV2l0aDp0byxzdHJpY3RPYmplY3Q6ZWwsc3RyaW5nOmYsc3RyaW5nRm9ybWF0OmpjLHN0cmluZ2Jvb2w6JGwsc3VjY2VzczpsbCxzdXBlclJlZmluZTpxcixzeW1ib2w6R2MsdGVtcGxhdGVMaXRlcmFsOmhsLHRvSlNPTlNjaGVtYTpZYSx0b0xvd2VyQ2FzZTphbyx0b1VwcGVyQ2FzZTpjbyx0b1pvZDpUcyx0cmFuc2Zvcm06Um8sdHJlZWlmeUVycm9yOmppLHRyaW06aW8sdHVwbGU6cHIsdWludDMyOldjLHVpbnQ2NDpLYyx1bGlkOlNjLHVuZGVmaW5lZDpGdCx1bmlvbjpELHVua25vd246Syx1cHBlcmNhc2U6WG4sdXJsOnZjLHV0aWw6TmksdXVpZDptYyx1dWlkdjQ6ZmMsdXVpZHY2OmdjLHV1aWR2NzpiYyx2YWxpZGF0ZTpNcyx2YWxpZGF0ZUFzeW5jOmpzLHZvaWQ6WWMsd2l0aFBhcnNlcjpTYSx4aWQ6VGMseG9yOnRsLHo6VXV9LFN5bWJvbC50b1N0cmluZ1RhZyx7dmFsdWU6Ik1vZHVsZSJ9KSksZ3Q9ImlvLm1vZGVsY29udGV4dHByb3RvY29sL3JlbGF0ZWQtdGFzayIsRHI9IjIuMCIsbGU9TXIoZT0+ZSE9PW51bGwmJih0eXBlb2YgZT09Im9iamVjdCJ8fHR5cGVvZiBlPT0iZnVuY3Rpb24iKSksd2Y9RChbZigpLE0oKS5pbnQoKV0pLFNmPWYoKTtoZSh7dHRsOk0oKS5vcHRpb25hbCgpLHBvbGxJbnRlcnZhbDpNKCkub3B0aW9uYWwoKX0pO2NvbnN0IEYkPXYoe3R0bDpNKCkub3B0aW9uYWwoKX0pLEgkPXYoe3Rhc2tJZDpmKCl9KSxfbD1oZSh7cHJvZ3Jlc3NUb2tlbjp3Zi5vcHRpb25hbCgpLFtndF06SCQub3B0aW9uYWwoKX0pLEVlPXYoe19tZXRhOl9sLm9wdGlvbmFsKCl9KSxqbz1FZS5leHRlbmQoe3Rhc2s6RiQub3B0aW9uYWwoKX0pLFckPWU9PmpvLnNhZmVQYXJzZShlKS5zdWNjZXNzLGZlPXYoe21ldGhvZDpmKCkscGFyYW1zOkVlLmxvb3NlKCkub3B0aW9uYWwoKX0pLHFlPXYoe19tZXRhOl9sLm9wdGlvbmFsKCl9KSxMZT12KHttZXRob2Q6ZigpLHBhcmFtczpxZS5sb29zZSgpLm9wdGlvbmFsKCl9KSxnZT1oZSh7X21ldGE6X2wub3B0aW9uYWwoKX0pLHFvPUQoW2YoKSxNKCkuaW50KCldKSxUZj12KHtqc29ucnBjOmcoRHIpLGlkOnFvLC4uLmZlLnNoYXBlfSkuc3RyaWN0KCksRnU9ZT0+VGYuc2FmZVBhcnNlKGUpLnN1Y2Nlc3MsemY9dih7anNvbnJwYzpnKERyKSwuLi5MZS5zaGFwZX0pLnN0cmljdCgpLFYkPWU9PnpmLnNhZmVQYXJzZShlKS5zdWNjZXNzLHdsPXYoe2pzb25ycGM6ZyhEciksaWQ6cW8scmVzdWx0OmdlfSkuc3RyaWN0KCksdHM9ZT0+d2wuc2FmZVBhcnNlKGUpLnN1Y2Nlc3M7dmFyIFg7KGZ1bmN0aW9uKGUpe2VbZS5Db25uZWN0aW9uQ2xvc2VkPS0zMmUzXT0iQ29ubmVjdGlvbkNsb3NlZCIsZVtlLlJlcXVlc3RUaW1lb3V0PS0zMjAwMV09IlJlcXVlc3RUaW1lb3V0IixlW2UuUGFyc2VFcnJvcj0tMzI3MDBdPSJQYXJzZUVycm9yIixlW2UuSW52YWxpZFJlcXVlc3Q9LTMyNjAwXT0iSW52YWxpZFJlcXVlc3QiLGVbZS5NZXRob2ROb3RGb3VuZD0tMzI2MDFdPSJNZXRob2ROb3RGb3VuZCIsZVtlLkludmFsaWRQYXJhbXM9LTMyNjAyXT0iSW52YWxpZFBhcmFtcyIsZVtlLkludGVybmFsRXJyb3I9LTMyNjAzXT0iSW50ZXJuYWxFcnJvciIsZVtlLlVybEVsaWNpdGF0aW9uUmVxdWlyZWQ9LTMyMDQyXT0iVXJsRWxpY2l0YXRpb25SZXF1aXJlZCJ9KShYfHwoWD17fSkpO2NvbnN0IFNsPXYoe2pzb25ycGM6ZyhEciksaWQ6cW8ub3B0aW9uYWwoKSxlcnJvcjp2KHtjb2RlOk0oKS5pbnQoKSxtZXNzYWdlOmYoKSxkYXRhOksoKS5vcHRpb25hbCgpfSl9KS5zdHJpY3QoKSxKJD1lPT5TbC5zYWZlUGFyc2UoZSkuc3VjY2VzcyxLJD1EKFtUZix6Zix3bCxTbF0pO0QoW3dsLFNsXSk7Y29uc3QgVGw9Z2Uuc3RyaWN0KCksRyQ9cWUuZXh0ZW5kKHtyZXF1ZXN0SWQ6cW8ub3B0aW9uYWwoKSxyZWFzb246ZigpLm9wdGlvbmFsKCl9KSx6bD1MZS5leHRlbmQoe21ldGhvZDpnKCJub3RpZmljYXRpb25zL2NhbmNlbGxlZCIpLHBhcmFtczpHJH0pLFkkPXYoe3NyYzpmKCksbWltZVR5cGU6ZigpLm9wdGlvbmFsKCksc2l6ZXM6TyhmKCkpLm9wdGlvbmFsKCksdGhlbWU6bWUoWyJsaWdodCIsImRhcmsiXSkub3B0aW9uYWwoKX0pLExvPXYoe2ljb25zOk8oWSQpLm9wdGlvbmFsKCl9KSxWdD12KHtuYW1lOmYoKSx0aXRsZTpmKCkub3B0aW9uYWwoKX0pLEJyPVZ0LmV4dGVuZCh7Li4uVnQuc2hhcGUsLi4uTG8uc2hhcGUsdmVyc2lvbjpmKCksd2Vic2l0ZVVybDpmKCkub3B0aW9uYWwoKSxkZXNjcmlwdGlvbjpmKCkub3B0aW9uYWwoKX0pLFEkPXBuKHYoe2FwcGx5RGVmYXVsdHM6RygpLm9wdGlvbmFsKCl9KSxVKGYoKSxLKCkpKSxYJD1NbyhlPT5lJiZ0eXBlb2YgZT09Im9iamVjdCImJiFBcnJheS5pc0FycmF5KGUpJiZPYmplY3Qua2V5cyhlKS5sZW5ndGg9PT0wP3tmb3JtOnt9fTplLHBuKHYoe2Zvcm06USQub3B0aW9uYWwoKSx1cmw6bGUub3B0aW9uYWwoKX0pLFUoZigpLEsoKSkub3B0aW9uYWwoKSkpLGV5PWhlKHtsaXN0OmxlLm9wdGlvbmFsKCksY2FuY2VsOmxlLm9wdGlvbmFsKCkscmVxdWVzdHM6aGUoe3NhbXBsaW5nOmhlKHtjcmVhdGVNZXNzYWdlOmxlLm9wdGlvbmFsKCl9KS5vcHRpb25hbCgpLGVsaWNpdGF0aW9uOmhlKHtjcmVhdGU6bGUub3B0aW9uYWwoKX0pLm9wdGlvbmFsKCl9KS5vcHRpb25hbCgpfSksdHk9aGUoe2xpc3Q6bGUub3B0aW9uYWwoKSxjYW5jZWw6bGUub3B0aW9uYWwoKSxyZXF1ZXN0czpoZSh7dG9vbHM6aGUoe2NhbGw6bGUub3B0aW9uYWwoKX0pLm9wdGlvbmFsKCl9KS5vcHRpb25hbCgpfSksbnk9dih7ZXhwZXJpbWVudGFsOlUoZigpLGxlKS5vcHRpb25hbCgpLHNhbXBsaW5nOnYoe2NvbnRleHQ6bGUub3B0aW9uYWwoKSx0b29sczpsZS5vcHRpb25hbCgpfSkub3B0aW9uYWwoKSxlbGljaXRhdGlvbjpYJC5vcHRpb25hbCgpLHJvb3RzOnYoe2xpc3RDaGFuZ2VkOkcoKS5vcHRpb25hbCgpfSkub3B0aW9uYWwoKSx0YXNrczpleS5vcHRpb25hbCgpLGV4dGVuc2lvbnM6VShmKCksbGUpLm9wdGlvbmFsKCl9KSxveT1FZS5leHRlbmQoe3Byb3RvY29sVmVyc2lvbjpmKCksY2FwYWJpbGl0aWVzOm55LGNsaWVudEluZm86QnJ9KSxzeT1mZS5leHRlbmQoe21ldGhvZDpnKCJpbml0aWFsaXplIikscGFyYW1zOm95fSkscnk9dih7ZXhwZXJpbWVudGFsOlUoZigpLGxlKS5vcHRpb25hbCgpLGxvZ2dpbmc6bGUub3B0aW9uYWwoKSxjb21wbGV0aW9uczpsZS5vcHRpb25hbCgpLHByb21wdHM6dih7bGlzdENoYW5nZWQ6RygpLm9wdGlvbmFsKCl9KS5vcHRpb25hbCgpLHJlc291cmNlczp2KHtzdWJzY3JpYmU6RygpLm9wdGlvbmFsKCksbGlzdENoYW5nZWQ6RygpLm9wdGlvbmFsKCl9KS5vcHRpb25hbCgpLHRvb2xzOnYoe2xpc3RDaGFuZ2VkOkcoKS5vcHRpb25hbCgpfSkub3B0aW9uYWwoKSx0YXNrczp0eS5vcHRpb25hbCgpLGV4dGVuc2lvbnM6VShmKCksbGUpLm9wdGlvbmFsKCl9KSxpeT1nZS5leHRlbmQoe3Byb3RvY29sVmVyc2lvbjpmKCksY2FwYWJpbGl0aWVzOnJ5LHNlcnZlckluZm86QnIsaW5zdHJ1Y3Rpb25zOmYoKS5vcHRpb25hbCgpfSksYXk9TGUuZXh0ZW5kKHttZXRob2Q6Zygibm90aWZpY2F0aW9ucy9pbml0aWFsaXplZCIpLHBhcmFtczpxZS5vcHRpb25hbCgpfSksVXI9ZmUuZXh0ZW5kKHttZXRob2Q6ZygicGluZyIpLHBhcmFtczpFZS5vcHRpb25hbCgpfSksY3k9dih7cHJvZ3Jlc3M6TSgpLHRvdGFsOnRlKE0oKSksbWVzc2FnZTp0ZShmKCkpfSksbHk9dih7Li4ucWUuc2hhcGUsLi4uY3kuc2hhcGUscHJvZ3Jlc3NUb2tlbjp3Zn0pLHhsPUxlLmV4dGVuZCh7bWV0aG9kOmcoIm5vdGlmaWNhdGlvbnMvcHJvZ3Jlc3MiKSxwYXJhbXM6bHl9KSx1eT1FZS5leHRlbmQoe2N1cnNvcjpTZi5vcHRpb25hbCgpfSksRG89ZmUuZXh0ZW5kKHtwYXJhbXM6dXkub3B0aW9uYWwoKX0pLEJvPWdlLmV4dGVuZCh7bmV4dEN1cnNvcjpTZi5vcHRpb25hbCgpfSksZHk9bWUoWyJ3b3JraW5nIiwiaW5wdXRfcmVxdWlyZWQiLCJjb21wbGV0ZWQiLCJmYWlsZWQiLCJjYW5jZWxsZWQiXSksVW89dih7dGFza0lkOmYoKSxzdGF0dXM6ZHksdHRsOkQoW00oKSxDbygpXSksY3JlYXRlZEF0OmYoKSxsYXN0VXBkYXRlZEF0OmYoKSxwb2xsSW50ZXJ2YWw6dGUoTSgpKSxzdGF0dXNNZXNzYWdlOnRlKGYoKSl9KSxJbD1nZS5leHRlbmQoe3Rhc2s6VW99KSxweT1xZS5tZXJnZShVbyksbXM9TGUuZXh0ZW5kKHttZXRob2Q6Zygibm90aWZpY2F0aW9ucy90YXNrcy9zdGF0dXMiKSxwYXJhbXM6cHl9KSxBbD1mZS5leHRlbmQoe21ldGhvZDpnKCJ0YXNrcy9nZXQiKSxwYXJhbXM6RWUuZXh0ZW5kKHt0YXNrSWQ6ZigpfSl9KSxDbD1nZS5tZXJnZShVbyksUGw9ZmUuZXh0ZW5kKHttZXRob2Q6ZygidGFza3MvcmVzdWx0IikscGFyYW1zOkVlLmV4dGVuZCh7dGFza0lkOmYoKX0pfSk7Z2UubG9vc2UoKTtjb25zdCBFbD1Eby5leHRlbmQoe21ldGhvZDpnKCJ0YXNrcy9saXN0Iil9KSxPbD1Cby5leHRlbmQoe3Rhc2tzOk8oVW8pfSksUmw9ZmUuZXh0ZW5kKHttZXRob2Q6ZygidGFza3MvY2FuY2VsIikscGFyYW1zOkVlLmV4dGVuZCh7dGFza0lkOmYoKX0pfSksaHk9Z2UubWVyZ2UoVW8pLHhmPXYoe3VyaTpmKCksbWltZVR5cGU6dGUoZigpKSxfbWV0YTpVKGYoKSxLKCkpLm9wdGlvbmFsKCl9KSxJZj14Zi5leHRlbmQoe3RleHQ6ZigpfSksTmw9ZigpLnJlZmluZShlPT57dHJ5e3JldHVybiBhdG9iKGUpLCEwfWNhdGNoe3JldHVybiExfX0se21lc3NhZ2U6IkludmFsaWQgQmFzZTY0IHN0cmluZyJ9KSxBZj14Zi5leHRlbmQoe2Jsb2I6Tmx9KSxGbz1tZShbInVzZXIiLCJhc3Npc3RhbnQiXSksYm49dih7YXVkaWVuY2U6TyhGbykub3B0aW9uYWwoKSxwcmlvcml0eTpNKCkubWluKDApLm1heCgxKS5vcHRpb25hbCgpLGxhc3RNb2RpZmllZDpmZih7b2Zmc2V0OiEwfSkub3B0aW9uYWwoKX0pLENmPXYoey4uLlZ0LnNoYXBlLC4uLkxvLnNoYXBlLHVyaTpmKCksZGVzY3JpcHRpb246dGUoZigpKSxtaW1lVHlwZTp0ZShmKCkpLHNpemU6dGUoTSgpKSxhbm5vdGF0aW9uczpibi5vcHRpb25hbCgpLF9tZXRhOnRlKGhlKHt9KSl9KSxteT12KHsuLi5WdC5zaGFwZSwuLi5Mby5zaGFwZSx1cmlUZW1wbGF0ZTpmKCksZGVzY3JpcHRpb246dGUoZigpKSxtaW1lVHlwZTp0ZShmKCkpLGFubm90YXRpb25zOmJuLm9wdGlvbmFsKCksX21ldGE6dGUoaGUoe30pKX0pLGZ5PURvLmV4dGVuZCh7bWV0aG9kOmcoInJlc291cmNlcy9saXN0Iil9KSxQZj1Cby5leHRlbmQoe3Jlc291cmNlczpPKENmKX0pLGd5PURvLmV4dGVuZCh7bWV0aG9kOmcoInJlc291cmNlcy90ZW1wbGF0ZXMvbGlzdCIpfSksYnk9Qm8uZXh0ZW5kKHtyZXNvdXJjZVRlbXBsYXRlczpPKG15KX0pLFpsPUVlLmV4dGVuZCh7dXJpOmYoKX0pLHZ5PVpsLCR5PWZlLmV4dGVuZCh7bWV0aG9kOmcoInJlc291cmNlcy9yZWFkIikscGFyYW1zOnZ5fSksRWY9Z2UuZXh0ZW5kKHtjb250ZW50czpPKEQoW0lmLEFmXSkpfSkseXk9TGUuZXh0ZW5kKHttZXRob2Q6Zygibm90aWZpY2F0aW9ucy9yZXNvdXJjZXMvbGlzdF9jaGFuZ2VkIikscGFyYW1zOnFlLm9wdGlvbmFsKCl9KSxreT1abCxfeT1mZS5leHRlbmQoe21ldGhvZDpnKCJyZXNvdXJjZXMvc3Vic2NyaWJlIikscGFyYW1zOmt5fSksd3k9WmwsU3k9ZmUuZXh0ZW5kKHttZXRob2Q6ZygicmVzb3VyY2VzL3Vuc3Vic2NyaWJlIikscGFyYW1zOnd5fSksVHk9cWUuZXh0ZW5kKHt1cmk6ZigpfSksenk9TGUuZXh0ZW5kKHttZXRob2Q6Zygibm90aWZpY2F0aW9ucy9yZXNvdXJjZXMvdXBkYXRlZCIpLHBhcmFtczpUeX0pLHh5PXYoe25hbWU6ZigpLGRlc2NyaXB0aW9uOnRlKGYoKSkscmVxdWlyZWQ6dGUoRygpKX0pLEl5PXYoey4uLlZ0LnNoYXBlLC4uLkxvLnNoYXBlLGRlc2NyaXB0aW9uOnRlKGYoKSksYXJndW1lbnRzOnRlKE8oeHkpKSxfbWV0YTp0ZShoZSh7fSkpfSksQXk9RG8uZXh0ZW5kKHttZXRob2Q6ZygicHJvbXB0cy9saXN0Iil9KSxDeT1Cby5leHRlbmQoe3Byb21wdHM6TyhJeSl9KSxQeT1FZS5leHRlbmQoe25hbWU6ZigpLGFyZ3VtZW50czpVKGYoKSxmKCkpLm9wdGlvbmFsKCl9KSxFeT1mZS5leHRlbmQoe21ldGhvZDpnKCJwcm9tcHRzL2dldCIpLHBhcmFtczpQeX0pLE1sPXYoe3R5cGU6ZygidGV4dCIpLHRleHQ6ZigpLGFubm90YXRpb25zOmJuLm9wdGlvbmFsKCksX21ldGE6VShmKCksSygpKS5vcHRpb25hbCgpfSksamw9dih7dHlwZTpnKCJpbWFnZSIpLGRhdGE6TmwsbWltZVR5cGU6ZigpLGFubm90YXRpb25zOmJuLm9wdGlvbmFsKCksX21ldGE6VShmKCksSygpKS5vcHRpb25hbCgpfSkscWw9dih7dHlwZTpnKCJhdWRpbyIpLGRhdGE6TmwsbWltZVR5cGU6ZigpLGFubm90YXRpb25zOmJuLm9wdGlvbmFsKCksX21ldGE6VShmKCksSygpKS5vcHRpb25hbCgpfSksT3k9dih7dHlwZTpnKCJ0b29sX3VzZSIpLG5hbWU6ZigpLGlkOmYoKSxpbnB1dDpVKGYoKSxLKCkpLF9tZXRhOlUoZigpLEsoKSkub3B0aW9uYWwoKX0pLE9mPXYoe3R5cGU6ZygicmVzb3VyY2UiKSxyZXNvdXJjZTpEKFtJZixBZl0pLGFubm90YXRpb25zOmJuLm9wdGlvbmFsKCksX21ldGE6VShmKCksSygpKS5vcHRpb25hbCgpfSksUmY9Q2YuZXh0ZW5kKHt0eXBlOmcoInJlc291cmNlX2xpbmsiKX0pLEhvPUQoW01sLGpsLHFsLFJmLE9mXSksUnk9dih7cm9sZTpGbyxjb250ZW50OkhvfSksTnk9Z2UuZXh0ZW5kKHtkZXNjcmlwdGlvbjpmKCkub3B0aW9uYWwoKSxtZXNzYWdlczpPKFJ5KX0pLFp5PUxlLmV4dGVuZCh7bWV0aG9kOmcoIm5vdGlmaWNhdGlvbnMvcHJvbXB0cy9saXN0X2NoYW5nZWQiKSxwYXJhbXM6cWUub3B0aW9uYWwoKX0pLE15PXYoe3RpdGxlOmYoKS5vcHRpb25hbCgpLHJlYWRPbmx5SGludDpHKCkub3B0aW9uYWwoKSxkZXN0cnVjdGl2ZUhpbnQ6RygpLm9wdGlvbmFsKCksaWRlbXBvdGVudEhpbnQ6RygpLm9wdGlvbmFsKCksb3BlbldvcmxkSGludDpHKCkub3B0aW9uYWwoKX0pLGp5PXYoe3Rhc2tTdXBwb3J0Om1lKFsicmVxdWlyZWQiLCJvcHRpb25hbCIsImZvcmJpZGRlbiJdKS5vcHRpb25hbCgpfSksTGw9dih7Li4uVnQuc2hhcGUsLi4uTG8uc2hhcGUsZGVzY3JpcHRpb246ZigpLm9wdGlvbmFsKCksaW5wdXRTY2hlbWE6dih7dHlwZTpnKCJvYmplY3QiKSxwcm9wZXJ0aWVzOlUoZigpLGxlKS5vcHRpb25hbCgpLHJlcXVpcmVkOk8oZigpKS5vcHRpb25hbCgpfSkuY2F0Y2hhbGwoSygpKSxvdXRwdXRTY2hlbWE6dih7dHlwZTpnKCJvYmplY3QiKSxwcm9wZXJ0aWVzOlUoZigpLGxlKS5vcHRpb25hbCgpLHJlcXVpcmVkOk8oZigpKS5vcHRpb25hbCgpfSkuY2F0Y2hhbGwoSygpKS5vcHRpb25hbCgpLGFubm90YXRpb25zOk15Lm9wdGlvbmFsKCksZXhlY3V0aW9uOmp5Lm9wdGlvbmFsKCksX21ldGE6VShmKCksSygpKS5vcHRpb25hbCgpfSksTmY9RG8uZXh0ZW5kKHttZXRob2Q6ZygidG9vbHMvbGlzdCIpfSkscXk9Qm8uZXh0ZW5kKHt0b29sczpPKExsKX0pLEZyPWdlLmV4dGVuZCh7Y29udGVudDpPKEhvKS5kZWZhdWx0KFtdKSxzdHJ1Y3R1cmVkQ29udGVudDpVKGYoKSxLKCkpLm9wdGlvbmFsKCksaXNFcnJvcjpHKCkub3B0aW9uYWwoKX0pO0ZyLm9yKGdlLmV4dGVuZCh7dG9vbFJlc3VsdDpLKCl9KSk7Y29uc3QgTHk9am8uZXh0ZW5kKHtuYW1lOmYoKSxhcmd1bWVudHM6VShmKCksSygpKS5vcHRpb25hbCgpfSksWmY9ZmUuZXh0ZW5kKHttZXRob2Q6ZygidG9vbHMvY2FsbCIpLHBhcmFtczpMeX0pLER5PUxlLmV4dGVuZCh7bWV0aG9kOmcoIm5vdGlmaWNhdGlvbnMvdG9vbHMvbGlzdF9jaGFuZ2VkIikscGFyYW1zOnFlLm9wdGlvbmFsKCl9KTt2KHthdXRvUmVmcmVzaDpHKCkuZGVmYXVsdCghMCksZGVib3VuY2VNczpNKCkuaW50KCkubm9ubmVnYXRpdmUoKS5kZWZhdWx0KDMwMCl9KTtjb25zdCBNZj1tZShbImRlYnVnIiwiaW5mbyIsIm5vdGljZSIsIndhcm5pbmciLCJlcnJvciIsImNyaXRpY2FsIiwiYWxlcnQiLCJlbWVyZ2VuY3kiXSksQnk9RWUuZXh0ZW5kKHtsZXZlbDpNZn0pLFV5PWZlLmV4dGVuZCh7bWV0aG9kOmcoImxvZ2dpbmcvc2V0TGV2ZWwiKSxwYXJhbXM6Qnl9KSxGeT1xZS5leHRlbmQoe2xldmVsOk1mLGxvZ2dlcjpmKCkub3B0aW9uYWwoKSxkYXRhOksoKX0pLEh5PUxlLmV4dGVuZCh7bWV0aG9kOmcoIm5vdGlmaWNhdGlvbnMvbWVzc2FnZSIpLHBhcmFtczpGeX0pLFd5PXYoe25hbWU6ZigpLm9wdGlvbmFsKCl9KSxWeT12KHtoaW50czpPKFd5KS5vcHRpb25hbCgpLGNvc3RQcmlvcml0eTpNKCkubWluKDApLm1heCgxKS5vcHRpb25hbCgpLHNwZWVkUHJpb3JpdHk6TSgpLm1pbigwKS5tYXgoMSkub3B0aW9uYWwoKSxpbnRlbGxpZ2VuY2VQcmlvcml0eTpNKCkubWluKDApLm1heCgxKS5vcHRpb25hbCgpfSksSnk9dih7bW9kZTptZShbImF1dG8iLCJyZXF1aXJlZCIsIm5vbmUiXSkub3B0aW9uYWwoKX0pLEt5PXYoe3R5cGU6ZygidG9vbF9yZXN1bHQiKSx0b29sVXNlSWQ6ZigpLmRlc2NyaWJlKCJUaGUgdW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBjb3JyZXNwb25kaW5nIHRvb2wgY2FsbC4iKSxjb250ZW50Ok8oSG8pLmRlZmF1bHQoW10pLHN0cnVjdHVyZWRDb250ZW50OnYoe30pLmxvb3NlKCkub3B0aW9uYWwoKSxpc0Vycm9yOkcoKS5vcHRpb25hbCgpLF9tZXRhOlUoZigpLEsoKSkub3B0aW9uYWwoKX0pLEd5PU9vKCJ0eXBlIixbTWwsamwscWxdKSxmcz1PbygidHlwZSIsW01sLGpsLHFsLE95LEt5XSksWXk9dih7cm9sZTpGbyxjb250ZW50OkQoW2ZzLE8oZnMpXSksX21ldGE6VShmKCksSygpKS5vcHRpb25hbCgpfSksUXk9am8uZXh0ZW5kKHttZXNzYWdlczpPKFl5KSxtb2RlbFByZWZlcmVuY2VzOlZ5Lm9wdGlvbmFsKCksc3lzdGVtUHJvbXB0OmYoKS5vcHRpb25hbCgpLGluY2x1ZGVDb250ZXh0Om1lKFsibm9uZSIsInRoaXNTZXJ2ZXIiLCJhbGxTZXJ2ZXJzIl0pLm9wdGlvbmFsKCksdGVtcGVyYXR1cmU6TSgpLm9wdGlvbmFsKCksbWF4VG9rZW5zOk0oKS5pbnQoKSxzdG9wU2VxdWVuY2VzOk8oZigpKS5vcHRpb25hbCgpLG1ldGFkYXRhOmxlLm9wdGlvbmFsKCksdG9vbHM6TyhMbCkub3B0aW9uYWwoKSx0b29sQ2hvaWNlOkp5Lm9wdGlvbmFsKCl9KSxYeT1mZS5leHRlbmQoe21ldGhvZDpnKCJzYW1wbGluZy9jcmVhdGVNZXNzYWdlIikscGFyYW1zOlF5fSksamY9Z2UuZXh0ZW5kKHttb2RlbDpmKCksc3RvcFJlYXNvbjp0ZShtZShbImVuZFR1cm4iLCJzdG9wU2VxdWVuY2UiLCJtYXhUb2tlbnMiXSkub3IoZigpKSkscm9sZTpGbyxjb250ZW50Okd5fSkscWY9Z2UuZXh0ZW5kKHttb2RlbDpmKCksc3RvcFJlYXNvbjp0ZShtZShbImVuZFR1cm4iLCJzdG9wU2VxdWVuY2UiLCJtYXhUb2tlbnMiLCJ0b29sVXNlIl0pLm9yKGYoKSkpLHJvbGU6Rm8sY29udGVudDpEKFtmcyxPKGZzKV0pfSksZWs9dih7dHlwZTpnKCJib29sZWFuIiksdGl0bGU6ZigpLm9wdGlvbmFsKCksZGVzY3JpcHRpb246ZigpLm9wdGlvbmFsKCksZGVmYXVsdDpHKCkub3B0aW9uYWwoKX0pLHRrPXYoe3R5cGU6Zygic3RyaW5nIiksdGl0bGU6ZigpLm9wdGlvbmFsKCksZGVzY3JpcHRpb246ZigpLm9wdGlvbmFsKCksbWluTGVuZ3RoOk0oKS5vcHRpb25hbCgpLG1heExlbmd0aDpNKCkub3B0aW9uYWwoKSxmb3JtYXQ6bWUoWyJlbWFpbCIsInVyaSIsImRhdGUiLCJkYXRlLXRpbWUiXSkub3B0aW9uYWwoKSxkZWZhdWx0OmYoKS5vcHRpb25hbCgpfSksbms9dih7dHlwZTptZShbIm51bWJlciIsImludGVnZXIiXSksdGl0bGU6ZigpLm9wdGlvbmFsKCksZGVzY3JpcHRpb246ZigpLm9wdGlvbmFsKCksbWluaW11bTpNKCkub3B0aW9uYWwoKSxtYXhpbXVtOk0oKS5vcHRpb25hbCgpLGRlZmF1bHQ6TSgpLm9wdGlvbmFsKCl9KSxvaz12KHt0eXBlOmcoInN0cmluZyIpLHRpdGxlOmYoKS5vcHRpb25hbCgpLGRlc2NyaXB0aW9uOmYoKS5vcHRpb25hbCgpLGVudW06TyhmKCkpLGRlZmF1bHQ6ZigpLm9wdGlvbmFsKCl9KSxzaz12KHt0eXBlOmcoInN0cmluZyIpLHRpdGxlOmYoKS5vcHRpb25hbCgpLGRlc2NyaXB0aW9uOmYoKS5vcHRpb25hbCgpLG9uZU9mOk8odih7Y29uc3Q6ZigpLHRpdGxlOmYoKX0pKSxkZWZhdWx0OmYoKS5vcHRpb25hbCgpfSkscms9dih7dHlwZTpnKCJzdHJpbmciKSx0aXRsZTpmKCkub3B0aW9uYWwoKSxkZXNjcmlwdGlvbjpmKCkub3B0aW9uYWwoKSxlbnVtOk8oZigpKSxlbnVtTmFtZXM6TyhmKCkpLm9wdGlvbmFsKCksZGVmYXVsdDpmKCkub3B0aW9uYWwoKX0pLGlrPUQoW29rLHNrXSksYWs9dih7dHlwZTpnKCJhcnJheSIpLHRpdGxlOmYoKS5vcHRpb25hbCgpLGRlc2NyaXB0aW9uOmYoKS5vcHRpb25hbCgpLG1pbkl0ZW1zOk0oKS5vcHRpb25hbCgpLG1heEl0ZW1zOk0oKS5vcHRpb25hbCgpLGl0ZW1zOnYoe3R5cGU6Zygic3RyaW5nIiksZW51bTpPKGYoKSl9KSxkZWZhdWx0Ok8oZigpKS5vcHRpb25hbCgpfSksY2s9dih7dHlwZTpnKCJhcnJheSIpLHRpdGxlOmYoKS5vcHRpb25hbCgpLGRlc2NyaXB0aW9uOmYoKS5vcHRpb25hbCgpLG1pbkl0ZW1zOk0oKS5vcHRpb25hbCgpLG1heEl0ZW1zOk0oKS5vcHRpb25hbCgpLGl0ZW1zOnYoe2FueU9mOk8odih7Y29uc3Q6ZigpLHRpdGxlOmYoKX0pKX0pLGRlZmF1bHQ6TyhmKCkpLm9wdGlvbmFsKCl9KSxsaz1EKFthayxja10pLHVrPUQoW3JrLGlrLGxrXSksZGs9RChbdWssZWssdGssbmtdKSxwaz1qby5leHRlbmQoe21vZGU6ZygiZm9ybSIpLm9wdGlvbmFsKCksbWVzc2FnZTpmKCkscmVxdWVzdGVkU2NoZW1hOnYoe3R5cGU6Zygib2JqZWN0IikscHJvcGVydGllczpVKGYoKSxkaykscmVxdWlyZWQ6TyhmKCkpLm9wdGlvbmFsKCl9KX0pLGhrPWpvLmV4dGVuZCh7bW9kZTpnKCJ1cmwiKSxtZXNzYWdlOmYoKSxlbGljaXRhdGlvbklkOmYoKSx1cmw6ZigpLnVybCgpfSksbWs9RChbcGssaGtdKSxmaz1mZS5leHRlbmQoe21ldGhvZDpnKCJlbGljaXRhdGlvbi9jcmVhdGUiKSxwYXJhbXM6bWt9KSxnaz1xZS5leHRlbmQoe2VsaWNpdGF0aW9uSWQ6ZigpfSksYms9TGUuZXh0ZW5kKHttZXRob2Q6Zygibm90aWZpY2F0aW9ucy9lbGljaXRhdGlvbi9jb21wbGV0ZSIpLHBhcmFtczpna30pLHZrPWdlLmV4dGVuZCh7YWN0aW9uOm1lKFsiYWNjZXB0IiwiZGVjbGluZSIsImNhbmNlbCJdKSxjb250ZW50Ok1vKGU9PmU9PT1udWxsP3ZvaWQgMDplLFUoZigpLEQoW2YoKSxNKCksRygpLE8oZigpKV0pKS5vcHRpb25hbCgpKX0pLCRrPXYoe3R5cGU6ZygicmVmL3Jlc291cmNlIiksdXJpOmYoKX0pLHlrPXYoe3R5cGU6ZygicmVmL3Byb21wdCIpLG5hbWU6ZigpfSksa2s9RWUuZXh0ZW5kKHtyZWY6RChbeWssJGtdKSxhcmd1bWVudDp2KHtuYW1lOmYoKSx2YWx1ZTpmKCl9KSxjb250ZXh0OnYoe2FyZ3VtZW50czpVKGYoKSxmKCkpLm9wdGlvbmFsKCl9KS5vcHRpb25hbCgpfSksX2s9ZmUuZXh0ZW5kKHttZXRob2Q6ZygiY29tcGxldGlvbi9jb21wbGV0ZSIpLHBhcmFtczpra30pLHdrPWdlLmV4dGVuZCh7Y29tcGxldGlvbjpoZSh7dmFsdWVzOk8oZigpKS5tYXgoMTAwKSx0b3RhbDp0ZShNKCkuaW50KCkpLGhhc01vcmU6dGUoRygpKX0pfSksU2s9dih7dXJpOmYoKS5zdGFydHNXaXRoKCJmaWxlOi8vIiksbmFtZTpmKCkub3B0aW9uYWwoKSxfbWV0YTpVKGYoKSxLKCkpLm9wdGlvbmFsKCl9KSxUaz1mZS5leHRlbmQoe21ldGhvZDpnKCJyb290cy9saXN0IikscGFyYW1zOkVlLm9wdGlvbmFsKCl9KSx6az1nZS5leHRlbmQoe3Jvb3RzOk8oU2spfSkseGs9TGUuZXh0ZW5kKHttZXRob2Q6Zygibm90aWZpY2F0aW9ucy9yb290cy9saXN0X2NoYW5nZWQiKSxwYXJhbXM6cWUub3B0aW9uYWwoKX0pO0QoW1VyLHN5LF9rLFV5LEV5LEF5LGZ5LGd5LCR5LF95LFN5LFpmLE5mLEFsLFBsLEVsLFJsXSk7RChbemwseGwsYXkseGssbXNdKTtEKFtUbCxqZixxZix2ayx6ayxDbCxPbCxJbF0pO0QoW1VyLFh5LGZrLFRrLEFsLFBsLEVsLFJsXSk7RChbemwseGwsSHksenkseXksRHksWnksbXMsYmtdKTtEKFtUbCxpeSx3ayxOeSxDeSxQZixieSxFZixGcixxeSxDbCxPbCxJbF0pO2NsYXNzIFYgZXh0ZW5kcyBFcnJvcntjb25zdHJ1Y3Rvcih0LG4sbyl7c3VwZXIoYE1DUCBlcnJvciAke3R9OiAke259YCksdGhpcy5jb2RlPXQsdGhpcy5kYXRhPW8sdGhpcy5uYW1lPSJNY3BFcnJvciJ9c3RhdGljIGZyb21FcnJvcih0LG4sbyl7aWYodD09PVguVXJsRWxpY2l0YXRpb25SZXF1aXJlZCYmbyl7Y29uc3Qgcz1vO2lmKHMuZWxpY2l0YXRpb25zKXJldHVybiBuZXcgSWsocy5lbGljaXRhdGlvbnMsbil9cmV0dXJuIG5ldyBWKHQsbixvKX19Y2xhc3MgSWsgZXh0ZW5kcyBWe2NvbnN0cnVjdG9yKHQsbj1gVVJMIGVsaWNpdGF0aW9uJHt0Lmxlbmd0aD4xPyJzIjoiIn0gcmVxdWlyZWRgKXtzdXBlcihYLlVybEVsaWNpdGF0aW9uUmVxdWlyZWQsbix7ZWxpY2l0YXRpb25zOnR9KX1nZXQgZWxpY2l0YXRpb25zKCl7cmV0dXJuIHRoaXMuZGF0YT8uZWxpY2l0YXRpb25zPz9bXX19ZnVuY3Rpb24gZnQoZSl7cmV0dXJuIGU9PT0iY29tcGxldGVkInx8ZT09PSJmYWlsZWQifHxlPT09ImNhbmNlbGxlZCJ9bmV3IFNldCgiQUJDREVGR0hJSktMTU5PUFFSU1RVVlhZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ4eXowMTIzNDU2Nzg5Iik7ZnVuY3Rpb24gSHUoZSl7Y29uc3Qgbj0kJChlKT8ubWV0aG9kO2lmKCFuKXRocm93IG5ldyBFcnJvcigiU2NoZW1hIGlzIG1pc3NpbmcgYSBtZXRob2QgbGl0ZXJhbCIpO2NvbnN0IG89eSQobik7aWYodHlwZW9mIG8hPSJzdHJpbmciKXRocm93IG5ldyBFcnJvcigiU2NoZW1hIG1ldGhvZCBsaXRlcmFsIG11c3QgYmUgYSBzdHJpbmciKTtyZXR1cm4gb31mdW5jdGlvbiBXdShlLHQpe2NvbnN0IG49bGYoZSx0KTtpZighbi5zdWNjZXNzKXRocm93IG4uZXJyb3I7cmV0dXJuIG4uZGF0YX1jb25zdCBBaz02ZTQ7Y2xhc3MgQ2t7Y29uc3RydWN0b3IodCl7dGhpcy5fb3B0aW9ucz10LHRoaXMuX3JlcXVlc3RNZXNzYWdlSWQ9MCx0aGlzLl9yZXF1ZXN0SGFuZGxlcnM9bmV3IE1hcCx0aGlzLl9yZXF1ZXN0SGFuZGxlckFib3J0Q29udHJvbGxlcnM9bmV3IE1hcCx0aGlzLl9ub3RpZmljYXRpb25IYW5kbGVycz1uZXcgTWFwLHRoaXMuX3Jlc3BvbnNlSGFuZGxlcnM9bmV3IE1hcCx0aGlzLl9wcm9ncmVzc0hhbmRsZXJzPW5ldyBNYXAsdGhpcy5fdGltZW91dEluZm89bmV3IE1hcCx0aGlzLl9wZW5kaW5nRGVib3VuY2VkTm90aWZpY2F0aW9ucz1uZXcgU2V0LHRoaXMuX3Rhc2tQcm9ncmVzc1Rva2Vucz1uZXcgTWFwLHRoaXMuX3JlcXVlc3RSZXNvbHZlcnM9bmV3IE1hcCx0aGlzLnNldE5vdGlmaWNhdGlvbkhhbmRsZXIoemwsbj0+e3RoaXMuX29uY2FuY2VsKG4pfSksdGhpcy5zZXROb3RpZmljYXRpb25IYW5kbGVyKHhsLG49Pnt0aGlzLl9vbnByb2dyZXNzKG4pfSksdGhpcy5zZXRSZXF1ZXN0SGFuZGxlcihVcixuPT4oe30pKSx0aGlzLl90YXNrU3RvcmU9dD8udGFza1N0b3JlLHRoaXMuX3Rhc2tNZXNzYWdlUXVldWU9dD8udGFza01lc3NhZ2VRdWV1ZSx0aGlzLl90YXNrU3RvcmUmJih0aGlzLnNldFJlcXVlc3RIYW5kbGVyKEFsLGFzeW5jKG4sbyk9Pntjb25zdCBzPWF3YWl0IHRoaXMuX3Rhc2tTdG9yZS5nZXRUYXNrKG4ucGFyYW1zLnRhc2tJZCxvLnNlc3Npb25JZCk7aWYoIXMpdGhyb3cgbmV3IFYoWC5JbnZhbGlkUGFyYW1zLCJGYWlsZWQgdG8gcmV0cmlldmUgdGFzazogVGFzayBub3QgZm91bmQiKTtyZXR1cm57Li4uc319KSx0aGlzLnNldFJlcXVlc3RIYW5kbGVyKFBsLGFzeW5jKG4sbyk9Pntjb25zdCBzPWFzeW5jKCk9Pntjb25zdCByPW4ucGFyYW1zLnRhc2tJZDtpZih0aGlzLl90YXNrTWVzc2FnZVF1ZXVlKXtsZXQgaTtmb3IoO2k9YXdhaXQgdGhpcy5fdGFza01lc3NhZ2VRdWV1ZS5kZXF1ZXVlKHIsby5zZXNzaW9uSWQpOyl7aWYoaS50eXBlPT09InJlc3BvbnNlInx8aS50eXBlPT09ImVycm9yIil7Y29uc3QgZD1pLm1lc3NhZ2UsdT1kLmlkLHA9dGhpcy5fcmVxdWVzdFJlc29sdmVycy5nZXQodSk7aWYocClpZih0aGlzLl9yZXF1ZXN0UmVzb2x2ZXJzLmRlbGV0ZSh1KSxpLnR5cGU9PT0icmVzcG9uc2UiKXAoZCk7ZWxzZXtjb25zdCBoPWQsYj1uZXcgVihoLmVycm9yLmNvZGUsaC5lcnJvci5tZXNzYWdlLGguZXJyb3IuZGF0YSk7cChiKX1lbHNle2NvbnN0IGg9aS50eXBlPT09InJlc3BvbnNlIj8iUmVzcG9uc2UiOiJFcnJvciI7dGhpcy5fb25lcnJvcihuZXcgRXJyb3IoYCR7aH0gaGFuZGxlciBtaXNzaW5nIGZvciByZXF1ZXN0ICR7dX1gKSl9Y29udGludWV9YXdhaXQgdGhpcy5fdHJhbnNwb3J0Py5zZW5kKGkubWVzc2FnZSx7cmVsYXRlZFJlcXVlc3RJZDpvLnJlcXVlc3RJZH0pfX1jb25zdCBhPWF3YWl0IHRoaXMuX3Rhc2tTdG9yZS5nZXRUYXNrKHIsby5zZXNzaW9uSWQpO2lmKCFhKXRocm93IG5ldyBWKFguSW52YWxpZFBhcmFtcyxgVGFzayBub3QgZm91bmQ6ICR7cn1gKTtpZighZnQoYS5zdGF0dXMpKXJldHVybiBhd2FpdCB0aGlzLl93YWl0Rm9yVGFza1VwZGF0ZShyLG8uc2lnbmFsKSxhd2FpdCBzKCk7aWYoZnQoYS5zdGF0dXMpKXtjb25zdCBpPWF3YWl0IHRoaXMuX3Rhc2tTdG9yZS5nZXRUYXNrUmVzdWx0KHIsby5zZXNzaW9uSWQpO3JldHVybiB0aGlzLl9jbGVhclRhc2tRdWV1ZShyKSx7Li4uaSxfbWV0YTp7Li4uaS5fbWV0YSxbZ3RdOnt0YXNrSWQ6cn19fX1yZXR1cm4gYXdhaXQgcygpfTtyZXR1cm4gYXdhaXQgcygpfSksdGhpcy5zZXRSZXF1ZXN0SGFuZGxlcihFbCxhc3luYyhuLG8pPT57dHJ5e2NvbnN0e3Rhc2tzOnMsbmV4dEN1cnNvcjpyfT1hd2FpdCB0aGlzLl90YXNrU3RvcmUubGlzdFRhc2tzKG4ucGFyYW1zPy5jdXJzb3Isby5zZXNzaW9uSWQpO3JldHVybnt0YXNrczpzLG5leHRDdXJzb3I6cixfbWV0YTp7fX19Y2F0Y2gocyl7dGhyb3cgbmV3IFYoWC5JbnZhbGlkUGFyYW1zLGBGYWlsZWQgdG8gbGlzdCB0YXNrczogJHtzIGluc3RhbmNlb2YgRXJyb3I/cy5tZXNzYWdlOlN0cmluZyhzKX1gKX19KSx0aGlzLnNldFJlcXVlc3RIYW5kbGVyKFJsLGFzeW5jKG4sbyk9Pnt0cnl7Y29uc3Qgcz1hd2FpdCB0aGlzLl90YXNrU3RvcmUuZ2V0VGFzayhuLnBhcmFtcy50YXNrSWQsby5zZXNzaW9uSWQpO2lmKCFzKXRocm93IG5ldyBWKFguSW52YWxpZFBhcmFtcyxgVGFzayBub3QgZm91bmQ6ICR7bi5wYXJhbXMudGFza0lkfWApO2lmKGZ0KHMuc3RhdHVzKSl0aHJvdyBuZXcgVihYLkludmFsaWRQYXJhbXMsYENhbm5vdCBjYW5jZWwgdGFzayBpbiB0ZXJtaW5hbCBzdGF0dXM6ICR7cy5zdGF0dXN9YCk7YXdhaXQgdGhpcy5fdGFza1N0b3JlLnVwZGF0ZVRhc2tTdGF0dXMobi5wYXJhbXMudGFza0lkLCJjYW5jZWxsZWQiLCJDbGllbnQgY2FuY2VsbGVkIHRhc2sgZXhlY3V0aW9uLiIsby5zZXNzaW9uSWQpLHRoaXMuX2NsZWFyVGFza1F1ZXVlKG4ucGFyYW1zLnRhc2tJZCk7Y29uc3Qgcj1hd2FpdCB0aGlzLl90YXNrU3RvcmUuZ2V0VGFzayhuLnBhcmFtcy50YXNrSWQsby5zZXNzaW9uSWQpO2lmKCFyKXRocm93IG5ldyBWKFguSW52YWxpZFBhcmFtcyxgVGFzayBub3QgZm91bmQgYWZ0ZXIgY2FuY2VsbGF0aW9uOiAke24ucGFyYW1zLnRhc2tJZH1gKTtyZXR1cm57X21ldGE6e30sLi4ucn19Y2F0Y2gocyl7dGhyb3cgcyBpbnN0YW5jZW9mIFY/czpuZXcgVihYLkludmFsaWRSZXF1ZXN0LGBGYWlsZWQgdG8gY2FuY2VsIHRhc2s6ICR7cyBpbnN0YW5jZW9mIEVycm9yP3MubWVzc2FnZTpTdHJpbmcocyl9YCl9fSkpfWFzeW5jIF9vbmNhbmNlbCh0KXtpZighdC5wYXJhbXMucmVxdWVzdElkKXJldHVybjt0aGlzLl9yZXF1ZXN0SGFuZGxlckFib3J0Q29udHJvbGxlcnMuZ2V0KHQucGFyYW1zLnJlcXVlc3RJZCk/LmFib3J0KHQucGFyYW1zLnJlYXNvbil9X3NldHVwVGltZW91dCh0LG4sbyxzLHI9ITEpe3RoaXMuX3RpbWVvdXRJbmZvLnNldCh0LHt0aW1lb3V0SWQ6c2V0VGltZW91dChzLG4pLHN0YXJ0VGltZTpEYXRlLm5vdygpLHRpbWVvdXQ6bixtYXhUb3RhbFRpbWVvdXQ6byxyZXNldFRpbWVvdXRPblByb2dyZXNzOnIsb25UaW1lb3V0OnN9KX1fcmVzZXRUaW1lb3V0KHQpe2NvbnN0IG49dGhpcy5fdGltZW91dEluZm8uZ2V0KHQpO2lmKCFuKXJldHVybiExO2NvbnN0IG89RGF0ZS5ub3coKS1uLnN0YXJ0VGltZTtpZihuLm1heFRvdGFsVGltZW91dCYmbz49bi5tYXhUb3RhbFRpbWVvdXQpdGhyb3cgdGhpcy5fdGltZW91dEluZm8uZGVsZXRlKHQpLFYuZnJvbUVycm9yKFguUmVxdWVzdFRpbWVvdXQsIk1heGltdW0gdG90YWwgdGltZW91dCBleGNlZWRlZCIse21heFRvdGFsVGltZW91dDpuLm1heFRvdGFsVGltZW91dCx0b3RhbEVsYXBzZWQ6b30pO3JldHVybiBjbGVhclRpbWVvdXQobi50aW1lb3V0SWQpLG4udGltZW91dElkPXNldFRpbWVvdXQobi5vblRpbWVvdXQsbi50aW1lb3V0KSwhMH1fY2xlYW51cFRpbWVvdXQodCl7Y29uc3Qgbj10aGlzLl90aW1lb3V0SW5mby5nZXQodCk7biYmKGNsZWFyVGltZW91dChuLnRpbWVvdXRJZCksdGhpcy5fdGltZW91dEluZm8uZGVsZXRlKHQpKX1hc3luYyBjb25uZWN0KHQpe2lmKHRoaXMuX3RyYW5zcG9ydCl0aHJvdyBuZXcgRXJyb3IoIkFscmVhZHkgY29ubmVjdGVkIHRvIGEgdHJhbnNwb3J0LiBDYWxsIGNsb3NlKCkgYmVmb3JlIGNvbm5lY3RpbmcgdG8gYSBuZXcgdHJhbnNwb3J0LCBvciB1c2UgYSBzZXBhcmF0ZSBQcm90b2NvbCBpbnN0YW5jZSBwZXIgY29ubmVjdGlvbi4iKTt0aGlzLl90cmFuc3BvcnQ9dDtjb25zdCBuPXRoaXMudHJhbnNwb3J0Py5vbmNsb3NlO3RoaXMuX3RyYW5zcG9ydC5vbmNsb3NlPSgpPT57bj8uKCksdGhpcy5fb25jbG9zZSgpfTtjb25zdCBvPXRoaXMudHJhbnNwb3J0Py5vbmVycm9yO3RoaXMuX3RyYW5zcG9ydC5vbmVycm9yPXI9PntvPy4ociksdGhpcy5fb25lcnJvcihyKX07Y29uc3Qgcz10aGlzLl90cmFuc3BvcnQ/Lm9ubWVzc2FnZTt0aGlzLl90cmFuc3BvcnQub25tZXNzYWdlPShyLGEpPT57cz8uKHIsYSksdHMocil8fEokKHIpP3RoaXMuX29ucmVzcG9uc2Uocik6RnUocik/dGhpcy5fb25yZXF1ZXN0KHIsYSk6ViQocik/dGhpcy5fb25ub3RpZmljYXRpb24ocik6dGhpcy5fb25lcnJvcihuZXcgRXJyb3IoYFVua25vd24gbWVzc2FnZSB0eXBlOiAke0pTT04uc3RyaW5naWZ5KHIpfWApKX0sYXdhaXQgdGhpcy5fdHJhbnNwb3J0LnN0YXJ0KCl9X29uY2xvc2UoKXtjb25zdCB0PXRoaXMuX3Jlc3BvbnNlSGFuZGxlcnM7dGhpcy5fcmVzcG9uc2VIYW5kbGVycz1uZXcgTWFwLHRoaXMuX3Byb2dyZXNzSGFuZGxlcnMuY2xlYXIoKSx0aGlzLl90YXNrUHJvZ3Jlc3NUb2tlbnMuY2xlYXIoKSx0aGlzLl9wZW5kaW5nRGVib3VuY2VkTm90aWZpY2F0aW9ucy5jbGVhcigpO2Zvcihjb25zdCBvIG9mIHRoaXMuX3RpbWVvdXRJbmZvLnZhbHVlcygpKWNsZWFyVGltZW91dChvLnRpbWVvdXRJZCk7dGhpcy5fdGltZW91dEluZm8uY2xlYXIoKTtmb3IoY29uc3QgbyBvZiB0aGlzLl9yZXF1ZXN0SGFuZGxlckFib3J0Q29udHJvbGxlcnMudmFsdWVzKCkpby5hYm9ydCgpO3RoaXMuX3JlcXVlc3RIYW5kbGVyQWJvcnRDb250cm9sbGVycy5jbGVhcigpO2NvbnN0IG49Vi5mcm9tRXJyb3IoWC5Db25uZWN0aW9uQ2xvc2VkLCJDb25uZWN0aW9uIGNsb3NlZCIpO3RoaXMuX3RyYW5zcG9ydD12b2lkIDAsdGhpcy5vbmNsb3NlPy4oKTtmb3IoY29uc3QgbyBvZiB0LnZhbHVlcygpKW8obil9X29uZXJyb3IodCl7dGhpcy5vbmVycm9yPy4odCl9X29ubm90aWZpY2F0aW9uKHQpe2NvbnN0IG49dGhpcy5fbm90aWZpY2F0aW9uSGFuZGxlcnMuZ2V0KHQubWV0aG9kKT8/dGhpcy5mYWxsYmFja05vdGlmaWNhdGlvbkhhbmRsZXI7biE9PXZvaWQgMCYmUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKT0+bih0KSkuY2F0Y2gobz0+dGhpcy5fb25lcnJvcihuZXcgRXJyb3IoYFVuY2F1Z2h0IGVycm9yIGluIG5vdGlmaWNhdGlvbiBoYW5kbGVyOiAke299YCkpKX1fb25yZXF1ZXN0KHQsbil7Y29uc3Qgbz10aGlzLl9yZXF1ZXN0SGFuZGxlcnMuZ2V0KHQubWV0aG9kKT8/dGhpcy5mYWxsYmFja1JlcXVlc3RIYW5kbGVyLHM9dGhpcy5fdHJhbnNwb3J0LHI9dC5wYXJhbXM/Ll9tZXRhPy5bZ3RdPy50YXNrSWQ7aWYobz09PXZvaWQgMCl7Y29uc3QgcD17anNvbnJwYzoiMi4wIixpZDp0LmlkLGVycm9yOntjb2RlOlguTWV0aG9kTm90Rm91bmQsbWVzc2FnZToiTWV0aG9kIG5vdCBmb3VuZCJ9fTtyJiZ0aGlzLl90YXNrTWVzc2FnZVF1ZXVlP3RoaXMuX2VucXVldWVUYXNrTWVzc2FnZShyLHt0eXBlOiJlcnJvciIsbWVzc2FnZTpwLHRpbWVzdGFtcDpEYXRlLm5vdygpfSxzPy5zZXNzaW9uSWQpLmNhdGNoKGg9PnRoaXMuX29uZXJyb3IobmV3IEVycm9yKGBGYWlsZWQgdG8gZW5xdWV1ZSBlcnJvciByZXNwb25zZTogJHtofWApKSk6cz8uc2VuZChwKS5jYXRjaChoPT50aGlzLl9vbmVycm9yKG5ldyBFcnJvcihgRmFpbGVkIHRvIHNlbmQgYW4gZXJyb3IgcmVzcG9uc2U6ICR7aH1gKSkpO3JldHVybn1jb25zdCBhPW5ldyBBYm9ydENvbnRyb2xsZXI7dGhpcy5fcmVxdWVzdEhhbmRsZXJBYm9ydENvbnRyb2xsZXJzLnNldCh0LmlkLGEpO2NvbnN0IGk9VyQodC5wYXJhbXMpP3QucGFyYW1zLnRhc2s6dm9pZCAwLGQ9dGhpcy5fdGFza1N0b3JlP3RoaXMucmVxdWVzdFRhc2tTdG9yZSh0LHM/LnNlc3Npb25JZCk6dm9pZCAwLHU9e3NpZ25hbDphLnNpZ25hbCxzZXNzaW9uSWQ6cz8uc2Vzc2lvbklkLF9tZXRhOnQucGFyYW1zPy5fbWV0YSxzZW5kTm90aWZpY2F0aW9uOmFzeW5jIHA9PntpZihhLnNpZ25hbC5hYm9ydGVkKXJldHVybjtjb25zdCBoPXtyZWxhdGVkUmVxdWVzdElkOnQuaWR9O3ImJihoLnJlbGF0ZWRUYXNrPXt0YXNrSWQ6cn0pLGF3YWl0IHRoaXMubm90aWZpY2F0aW9uKHAsaCl9LHNlbmRSZXF1ZXN0OmFzeW5jKHAsaCxiKT0+e2lmKGEuc2lnbmFsLmFib3J0ZWQpdGhyb3cgbmV3IFYoWC5Db25uZWN0aW9uQ2xvc2VkLCJSZXF1ZXN0IHdhcyBjYW5jZWxsZWQiKTtjb25zdCAkPXsuLi5iLHJlbGF0ZWRSZXF1ZXN0SWQ6dC5pZH07ciYmISQucmVsYXRlZFRhc2smJigkLnJlbGF0ZWRUYXNrPXt0YXNrSWQ6cn0pO2NvbnN0IGs9JC5yZWxhdGVkVGFzaz8udGFza0lkPz9yO3JldHVybiBrJiZkJiZhd2FpdCBkLnVwZGF0ZVRhc2tTdGF0dXMoaywiaW5wdXRfcmVxdWlyZWQiKSxhd2FpdCB0aGlzLnJlcXVlc3QocCxoLCQpfSxhdXRoSW5mbzpuPy5hdXRoSW5mbyxyZXF1ZXN0SWQ6dC5pZCxyZXF1ZXN0SW5mbzpuPy5yZXF1ZXN0SW5mbyx0YXNrSWQ6cix0YXNrU3RvcmU6ZCx0YXNrUmVxdWVzdGVkVHRsOmk/LnR0bCxjbG9zZVNTRVN0cmVhbTpuPy5jbG9zZVNTRVN0cmVhbSxjbG9zZVN0YW5kYWxvbmVTU0VTdHJlYW06bj8uY2xvc2VTdGFuZGFsb25lU1NFU3RyZWFtfTtQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpPT57aSYmdGhpcy5hc3NlcnRUYXNrSGFuZGxlckNhcGFiaWxpdHkodC5tZXRob2QpfSkudGhlbigoKT0+byh0LHUpKS50aGVuKGFzeW5jIHA9PntpZihhLnNpZ25hbC5hYm9ydGVkKXJldHVybjtjb25zdCBoPXtyZXN1bHQ6cCxqc29ucnBjOiIyLjAiLGlkOnQuaWR9O3ImJnRoaXMuX3Rhc2tNZXNzYWdlUXVldWU/YXdhaXQgdGhpcy5fZW5xdWV1ZVRhc2tNZXNzYWdlKHIse3R5cGU6InJlc3BvbnNlIixtZXNzYWdlOmgsdGltZXN0YW1wOkRhdGUubm93KCl9LHM/LnNlc3Npb25JZCk6YXdhaXQgcz8uc2VuZChoKX0sYXN5bmMgcD0+e2lmKGEuc2lnbmFsLmFib3J0ZWQpcmV0dXJuO2NvbnN0IGg9e2pzb25ycGM6IjIuMCIsaWQ6dC5pZCxlcnJvcjp7Y29kZTpOdW1iZXIuaXNTYWZlSW50ZWdlcihwLmNvZGUpP3AuY29kZTpYLkludGVybmFsRXJyb3IsbWVzc2FnZTpwLm1lc3NhZ2U/PyJJbnRlcm5hbCBlcnJvciIsLi4ucC5kYXRhIT09dm9pZCAwJiZ7ZGF0YTpwLmRhdGF9fX07ciYmdGhpcy5fdGFza01lc3NhZ2VRdWV1ZT9hd2FpdCB0aGlzLl9lbnF1ZXVlVGFza01lc3NhZ2Uocix7dHlwZToiZXJyb3IiLG1lc3NhZ2U6aCx0aW1lc3RhbXA6RGF0ZS5ub3coKX0scz8uc2Vzc2lvbklkKTphd2FpdCBzPy5zZW5kKGgpfSkuY2F0Y2gocD0+dGhpcy5fb25lcnJvcihuZXcgRXJyb3IoYEZhaWxlZCB0byBzZW5kIHJlc3BvbnNlOiAke3B9YCkpKS5maW5hbGx5KCgpPT57dGhpcy5fcmVxdWVzdEhhbmRsZXJBYm9ydENvbnRyb2xsZXJzLmdldCh0LmlkKT09PWEmJnRoaXMuX3JlcXVlc3RIYW5kbGVyQWJvcnRDb250cm9sbGVycy5kZWxldGUodC5pZCl9KX1fb25wcm9ncmVzcyh0KXtjb25zdHtwcm9ncmVzc1Rva2VuOm4sLi4ub309dC5wYXJhbXMscz1OdW1iZXIobikscj10aGlzLl9wcm9ncmVzc0hhbmRsZXJzLmdldChzKTtpZighcil7dGhpcy5fb25lcnJvcihuZXcgRXJyb3IoYFJlY2VpdmVkIGEgcHJvZ3Jlc3Mgbm90aWZpY2F0aW9uIGZvciBhbiB1bmtub3duIHRva2VuOiAke0pTT04uc3RyaW5naWZ5KHQpfWApKTtyZXR1cm59Y29uc3QgYT10aGlzLl9yZXNwb25zZUhhbmRsZXJzLmdldChzKSxpPXRoaXMuX3RpbWVvdXRJbmZvLmdldChzKTtpZihpJiZhJiZpLnJlc2V0VGltZW91dE9uUHJvZ3Jlc3MpdHJ5e3RoaXMuX3Jlc2V0VGltZW91dChzKX1jYXRjaChkKXt0aGlzLl9yZXNwb25zZUhhbmRsZXJzLmRlbGV0ZShzKSx0aGlzLl9wcm9ncmVzc0hhbmRsZXJzLmRlbGV0ZShzKSx0aGlzLl9jbGVhbnVwVGltZW91dChzKSxhKGQpO3JldHVybn1yKG8pfV9vbnJlc3BvbnNlKHQpe2NvbnN0IG49TnVtYmVyKHQuaWQpLG89dGhpcy5fcmVxdWVzdFJlc29sdmVycy5nZXQobik7aWYobyl7aWYodGhpcy5fcmVxdWVzdFJlc29sdmVycy5kZWxldGUobiksdHModCkpbyh0KTtlbHNle2NvbnN0IGE9bmV3IFYodC5lcnJvci5jb2RlLHQuZXJyb3IubWVzc2FnZSx0LmVycm9yLmRhdGEpO28oYSl9cmV0dXJufWNvbnN0IHM9dGhpcy5fcmVzcG9uc2VIYW5kbGVycy5nZXQobik7aWYocz09PXZvaWQgMCl7dGhpcy5fb25lcnJvcihuZXcgRXJyb3IoYFJlY2VpdmVkIGEgcmVzcG9uc2UgZm9yIGFuIHVua25vd24gbWVzc2FnZSBJRDogJHtKU09OLnN0cmluZ2lmeSh0KX1gKSk7cmV0dXJufXRoaXMuX3Jlc3BvbnNlSGFuZGxlcnMuZGVsZXRlKG4pLHRoaXMuX2NsZWFudXBUaW1lb3V0KG4pO2xldCByPSExO2lmKHRzKHQpJiZ0LnJlc3VsdCYmdHlwZW9mIHQucmVzdWx0PT0ib2JqZWN0Iil7Y29uc3QgYT10LnJlc3VsdDtpZihhLnRhc2smJnR5cGVvZiBhLnRhc2s9PSJvYmplY3QiKXtjb25zdCBpPWEudGFzazt0eXBlb2YgaS50YXNrSWQ9PSJzdHJpbmciJiYocj0hMCx0aGlzLl90YXNrUHJvZ3Jlc3NUb2tlbnMuc2V0KGkudGFza0lkLG4pKX19aWYocnx8dGhpcy5fcHJvZ3Jlc3NIYW5kbGVycy5kZWxldGUobiksdHModCkpcyh0KTtlbHNle2NvbnN0IGE9Vi5mcm9tRXJyb3IodC5lcnJvci5jb2RlLHQuZXJyb3IubWVzc2FnZSx0LmVycm9yLmRhdGEpO3MoYSl9fWdldCB0cmFuc3BvcnQoKXtyZXR1cm4gdGhpcy5fdHJhbnNwb3J0fWFzeW5jIGNsb3NlKCl7YXdhaXQgdGhpcy5fdHJhbnNwb3J0Py5jbG9zZSgpfWFzeW5jKnJlcXVlc3RTdHJlYW0odCxuLG8pe2NvbnN0e3Rhc2s6c309bz8/e307aWYoIXMpe3RyeXt5aWVsZHt0eXBlOiJyZXN1bHQiLHJlc3VsdDphd2FpdCB0aGlzLnJlcXVlc3QodCxuLG8pfX1jYXRjaChhKXt5aWVsZHt0eXBlOiJlcnJvciIsZXJyb3I6YSBpbnN0YW5jZW9mIFY/YTpuZXcgVihYLkludGVybmFsRXJyb3IsU3RyaW5nKGEpKX19cmV0dXJufWxldCByO3RyeXtjb25zdCBhPWF3YWl0IHRoaXMucmVxdWVzdCh0LElsLG8pO2lmKGEudGFzaylyPWEudGFzay50YXNrSWQseWllbGR7dHlwZToidGFza0NyZWF0ZWQiLHRhc2s6YS50YXNrfTtlbHNlIHRocm93IG5ldyBWKFguSW50ZXJuYWxFcnJvciwiVGFzayBjcmVhdGlvbiBkaWQgbm90IHJldHVybiBhIHRhc2siKTtmb3IoOzspe2NvbnN0IGk9YXdhaXQgdGhpcy5nZXRUYXNrKHt0YXNrSWQ6cn0sbyk7aWYoeWllbGR7dHlwZToidGFza1N0YXR1cyIsdGFzazppfSxmdChpLnN0YXR1cykpe2kuc3RhdHVzPT09ImNvbXBsZXRlZCI/eWllbGR7dHlwZToicmVzdWx0IixyZXN1bHQ6YXdhaXQgdGhpcy5nZXRUYXNrUmVzdWx0KHt0YXNrSWQ6cn0sbixvKX06aS5zdGF0dXM9PT0iZmFpbGVkIj95aWVsZHt0eXBlOiJlcnJvciIsZXJyb3I6bmV3IFYoWC5JbnRlcm5hbEVycm9yLGBUYXNrICR7cn0gZmFpbGVkYCl9Omkuc3RhdHVzPT09ImNhbmNlbGxlZCImJih5aWVsZHt0eXBlOiJlcnJvciIsZXJyb3I6bmV3IFYoWC5JbnRlcm5hbEVycm9yLGBUYXNrICR7cn0gd2FzIGNhbmNlbGxlZGApfSk7cmV0dXJufWlmKGkuc3RhdHVzPT09ImlucHV0X3JlcXVpcmVkIil7eWllbGR7dHlwZToicmVzdWx0IixyZXN1bHQ6YXdhaXQgdGhpcy5nZXRUYXNrUmVzdWx0KHt0YXNrSWQ6cn0sbixvKX07cmV0dXJufWNvbnN0IGQ9aS5wb2xsSW50ZXJ2YWw/P3RoaXMuX29wdGlvbnM/LmRlZmF1bHRUYXNrUG9sbEludGVydmFsPz8xZTM7YXdhaXQgbmV3IFByb21pc2UodT0+c2V0VGltZW91dCh1LGQpKSxvPy5zaWduYWw/LnRocm93SWZBYm9ydGVkKCl9fWNhdGNoKGEpe3lpZWxke3R5cGU6ImVycm9yIixlcnJvcjphIGluc3RhbmNlb2YgVj9hOm5ldyBWKFguSW50ZXJuYWxFcnJvcixTdHJpbmcoYSkpfX19cmVxdWVzdCh0LG4sbyl7Y29uc3R7cmVsYXRlZFJlcXVlc3RJZDpzLHJlc3VtcHRpb25Ub2tlbjpyLG9ucmVzdW1wdGlvbnRva2VuOmEsdGFzazppLHJlbGF0ZWRUYXNrOmR9PW8/P3t9O3JldHVybiBuZXcgUHJvbWlzZSgodSxwKT0+e2NvbnN0IGg9ST0+e3AoSSl9O2lmKCF0aGlzLl90cmFuc3BvcnQpe2gobmV3IEVycm9yKCJOb3QgY29ubmVjdGVkIikpO3JldHVybn1pZih0aGlzLl9vcHRpb25zPy5lbmZvcmNlU3RyaWN0Q2FwYWJpbGl0aWVzPT09ITApdHJ5e3RoaXMuYXNzZXJ0Q2FwYWJpbGl0eUZvck1ldGhvZCh0Lm1ldGhvZCksaSYmdGhpcy5hc3NlcnRUYXNrQ2FwYWJpbGl0eSh0Lm1ldGhvZCl9Y2F0Y2goSSl7aChJKTtyZXR1cm59bz8uc2lnbmFsPy50aHJvd0lmQWJvcnRlZCgpO2NvbnN0IGI9dGhpcy5fcmVxdWVzdE1lc3NhZ2VJZCsrLCQ9ey4uLnQsanNvbnJwYzoiMi4wIixpZDpifTtvPy5vbnByb2dyZXNzJiYodGhpcy5fcHJvZ3Jlc3NIYW5kbGVycy5zZXQoYixvLm9ucHJvZ3Jlc3MpLCQucGFyYW1zPXsuLi50LnBhcmFtcyxfbWV0YTp7Li4udC5wYXJhbXM/Ll9tZXRhfHx7fSxwcm9ncmVzc1Rva2VuOmJ9fSksaSYmKCQucGFyYW1zPXsuLi4kLnBhcmFtcyx0YXNrOml9KSxkJiYoJC5wYXJhbXM9ey4uLiQucGFyYW1zLF9tZXRhOnsuLi4kLnBhcmFtcz8uX21ldGF8fHt9LFtndF06ZH19KTtjb25zdCBrPUk9Pnt0aGlzLl9yZXNwb25zZUhhbmRsZXJzLmRlbGV0ZShiKSx0aGlzLl9wcm9ncmVzc0hhbmRsZXJzLmRlbGV0ZShiKSx0aGlzLl9jbGVhbnVwVGltZW91dChiKSx0aGlzLl90cmFuc3BvcnQ/LnNlbmQoe2pzb25ycGM6IjIuMCIsbWV0aG9kOiJub3RpZmljYXRpb25zL2NhbmNlbGxlZCIscGFyYW1zOntyZXF1ZXN0SWQ6YixyZWFzb246U3RyaW5nKEkpfX0se3JlbGF0ZWRSZXF1ZXN0SWQ6cyxyZXN1bXB0aW9uVG9rZW46cixvbnJlc3VtcHRpb250b2tlbjphfSkuY2F0Y2goaWU9PnRoaXMuX29uZXJyb3IobmV3IEVycm9yKGBGYWlsZWQgdG8gc2VuZCBjYW5jZWxsYXRpb246ICR7aWV9YCkpKTtjb25zdCBaPUkgaW5zdGFuY2VvZiBWP0k6bmV3IFYoWC5SZXF1ZXN0VGltZW91dCxTdHJpbmcoSSkpO3AoWil9O3RoaXMuX3Jlc3BvbnNlSGFuZGxlcnMuc2V0KGIsST0+e2lmKCFvPy5zaWduYWw/LmFib3J0ZWQpe2lmKEkgaW5zdGFuY2VvZiBFcnJvcilyZXR1cm4gcChJKTt0cnl7Y29uc3QgWj1sZihuLEkucmVzdWx0KTtaLnN1Y2Nlc3M/dShaLmRhdGEpOnAoWi5lcnJvcil9Y2F0Y2goWil7cChaKX19fSksbz8uc2lnbmFsPy5hZGRFdmVudExpc3RlbmVyKCJhYm9ydCIsKCk9PntrKG8/LnNpZ25hbD8ucmVhc29uKX0pO2NvbnN0IFQ9bz8udGltZW91dD8/QWsseD0oKT0+ayhWLmZyb21FcnJvcihYLlJlcXVlc3RUaW1lb3V0LCJSZXF1ZXN0IHRpbWVkIG91dCIse3RpbWVvdXQ6VH0pKTt0aGlzLl9zZXR1cFRpbWVvdXQoYixULG8/Lm1heFRvdGFsVGltZW91dCx4LG8/LnJlc2V0VGltZW91dE9uUHJvZ3Jlc3M/PyExKTtjb25zdCB6PWQ/LnRhc2tJZDtpZih6KXtjb25zdCBJPVo9Pntjb25zdCBpZT10aGlzLl9yZXNwb25zZUhhbmRsZXJzLmdldChiKTtpZT9pZShaKTp0aGlzLl9vbmVycm9yKG5ldyBFcnJvcihgUmVzcG9uc2UgaGFuZGxlciBtaXNzaW5nIGZvciBzaWRlLWNoYW5uZWxlZCByZXF1ZXN0ICR7Yn1gKSl9O3RoaXMuX3JlcXVlc3RSZXNvbHZlcnMuc2V0KGIsSSksdGhpcy5fZW5xdWV1ZVRhc2tNZXNzYWdlKHose3R5cGU6InJlcXVlc3QiLG1lc3NhZ2U6JCx0aW1lc3RhbXA6RGF0ZS5ub3coKX0pLmNhdGNoKFo9Pnt0aGlzLl9jbGVhbnVwVGltZW91dChiKSxwKFopfSl9ZWxzZSB0aGlzLl90cmFuc3BvcnQuc2VuZCgkLHtyZWxhdGVkUmVxdWVzdElkOnMscmVzdW1wdGlvblRva2VuOnIsb25yZXN1bXB0aW9udG9rZW46YX0pLmNhdGNoKEk9Pnt0aGlzLl9jbGVhbnVwVGltZW91dChiKSxwKEkpfSl9KX1hc3luYyBnZXRUYXNrKHQsbil7cmV0dXJuIHRoaXMucmVxdWVzdCh7bWV0aG9kOiJ0YXNrcy9nZXQiLHBhcmFtczp0fSxDbCxuKX1hc3luYyBnZXRUYXNrUmVzdWx0KHQsbixvKXtyZXR1cm4gdGhpcy5yZXF1ZXN0KHttZXRob2Q6InRhc2tzL3Jlc3VsdCIscGFyYW1zOnR9LG4sbyl9YXN5bmMgbGlzdFRhc2tzKHQsbil7cmV0dXJuIHRoaXMucmVxdWVzdCh7bWV0aG9kOiJ0YXNrcy9saXN0IixwYXJhbXM6dH0sT2wsbil9YXN5bmMgY2FuY2VsVGFzayh0LG4pe3JldHVybiB0aGlzLnJlcXVlc3Qoe21ldGhvZDoidGFza3MvY2FuY2VsIixwYXJhbXM6dH0saHksbil9YXN5bmMgbm90aWZpY2F0aW9uKHQsbil7aWYoIXRoaXMuX3RyYW5zcG9ydCl0aHJvdyBuZXcgRXJyb3IoIk5vdCBjb25uZWN0ZWQiKTt0aGlzLmFzc2VydE5vdGlmaWNhdGlvbkNhcGFiaWxpdHkodC5tZXRob2QpO2NvbnN0IG89bj8ucmVsYXRlZFRhc2s/LnRhc2tJZDtpZihvKXtjb25zdCBpPXsuLi50LGpzb25ycGM6IjIuMCIscGFyYW1zOnsuLi50LnBhcmFtcyxfbWV0YTp7Li4udC5wYXJhbXM/Ll9tZXRhfHx7fSxbZ3RdOm4ucmVsYXRlZFRhc2t9fX07YXdhaXQgdGhpcy5fZW5xdWV1ZVRhc2tNZXNzYWdlKG8se3R5cGU6Im5vdGlmaWNhdGlvbiIsbWVzc2FnZTppLHRpbWVzdGFtcDpEYXRlLm5vdygpfSk7cmV0dXJufWlmKCh0aGlzLl9vcHRpb25zPy5kZWJvdW5jZWROb3RpZmljYXRpb25NZXRob2RzPz9bXSkuaW5jbHVkZXModC5tZXRob2QpJiYhdC5wYXJhbXMmJiFuPy5yZWxhdGVkUmVxdWVzdElkJiYhbj8ucmVsYXRlZFRhc2spe2lmKHRoaXMuX3BlbmRpbmdEZWJvdW5jZWROb3RpZmljYXRpb25zLmhhcyh0Lm1ldGhvZCkpcmV0dXJuO3RoaXMuX3BlbmRpbmdEZWJvdW5jZWROb3RpZmljYXRpb25zLmFkZCh0Lm1ldGhvZCksUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKT0+e2lmKHRoaXMuX3BlbmRpbmdEZWJvdW5jZWROb3RpZmljYXRpb25zLmRlbGV0ZSh0Lm1ldGhvZCksIXRoaXMuX3RyYW5zcG9ydClyZXR1cm47bGV0IGk9ey4uLnQsanNvbnJwYzoiMi4wIn07bj8ucmVsYXRlZFRhc2smJihpPXsuLi5pLHBhcmFtczp7Li4uaS5wYXJhbXMsX21ldGE6ey4uLmkucGFyYW1zPy5fbWV0YXx8e30sW2d0XTpuLnJlbGF0ZWRUYXNrfX19KSx0aGlzLl90cmFuc3BvcnQ/LnNlbmQoaSxuKS5jYXRjaChkPT50aGlzLl9vbmVycm9yKGQpKX0pO3JldHVybn1sZXQgYT17Li4udCxqc29ucnBjOiIyLjAifTtuPy5yZWxhdGVkVGFzayYmKGE9ey4uLmEscGFyYW1zOnsuLi5hLnBhcmFtcyxfbWV0YTp7Li4uYS5wYXJhbXM/Ll9tZXRhfHx7fSxbZ3RdOm4ucmVsYXRlZFRhc2t9fX0pLGF3YWl0IHRoaXMuX3RyYW5zcG9ydC5zZW5kKGEsbil9c2V0UmVxdWVzdEhhbmRsZXIodCxuKXtjb25zdCBvPUh1KHQpO3RoaXMuYXNzZXJ0UmVxdWVzdEhhbmRsZXJDYXBhYmlsaXR5KG8pLHRoaXMuX3JlcXVlc3RIYW5kbGVycy5zZXQobywocyxyKT0+e2NvbnN0IGE9V3UodCxzKTtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKG4oYSxyKSl9KX1yZW1vdmVSZXF1ZXN0SGFuZGxlcih0KXt0aGlzLl9yZXF1ZXN0SGFuZGxlcnMuZGVsZXRlKHQpfWFzc2VydENhblNldFJlcXVlc3RIYW5kbGVyKHQpe2lmKHRoaXMuX3JlcXVlc3RIYW5kbGVycy5oYXModCkpdGhyb3cgbmV3IEVycm9yKGBBIHJlcXVlc3QgaGFuZGxlciBmb3IgJHt0fSBhbHJlYWR5IGV4aXN0cywgd2hpY2ggd291bGQgYmUgb3ZlcnJpZGRlbmApfXNldE5vdGlmaWNhdGlvbkhhbmRsZXIodCxuKXtjb25zdCBvPUh1KHQpO3RoaXMuX25vdGlmaWNhdGlvbkhhbmRsZXJzLnNldChvLHM9Pntjb25zdCByPVd1KHQscyk7cmV0dXJuIFByb21pc2UucmVzb2x2ZShuKHIpKX0pfXJlbW92ZU5vdGlmaWNhdGlvbkhhbmRsZXIodCl7dGhpcy5fbm90aWZpY2F0aW9uSGFuZGxlcnMuZGVsZXRlKHQpfV9jbGVhbnVwVGFza1Byb2dyZXNzSGFuZGxlcih0KXtjb25zdCBuPXRoaXMuX3Rhc2tQcm9ncmVzc1Rva2Vucy5nZXQodCk7biE9PXZvaWQgMCYmKHRoaXMuX3Byb2dyZXNzSGFuZGxlcnMuZGVsZXRlKG4pLHRoaXMuX3Rhc2tQcm9ncmVzc1Rva2Vucy5kZWxldGUodCkpfWFzeW5jIF9lbnF1ZXVlVGFza01lc3NhZ2UodCxuLG8pe2lmKCF0aGlzLl90YXNrU3RvcmV8fCF0aGlzLl90YXNrTWVzc2FnZVF1ZXVlKXRocm93IG5ldyBFcnJvcigiQ2Fubm90IGVucXVldWUgdGFzayBtZXNzYWdlOiB0YXNrU3RvcmUgYW5kIHRhc2tNZXNzYWdlUXVldWUgYXJlIG5vdCBjb25maWd1cmVkIik7Y29uc3Qgcz10aGlzLl9vcHRpb25zPy5tYXhUYXNrUXVldWVTaXplO2F3YWl0IHRoaXMuX3Rhc2tNZXNzYWdlUXVldWUuZW5xdWV1ZSh0LG4sbyxzKX1hc3luYyBfY2xlYXJUYXNrUXVldWUodCxuKXtpZih0aGlzLl90YXNrTWVzc2FnZVF1ZXVlKXtjb25zdCBvPWF3YWl0IHRoaXMuX3Rhc2tNZXNzYWdlUXVldWUuZGVxdWV1ZUFsbCh0LG4pO2Zvcihjb25zdCBzIG9mIG8paWYocy50eXBlPT09InJlcXVlc3QiJiZGdShzLm1lc3NhZ2UpKXtjb25zdCByPXMubWVzc2FnZS5pZCxhPXRoaXMuX3JlcXVlc3RSZXNvbHZlcnMuZ2V0KHIpO2E/KGEobmV3IFYoWC5JbnRlcm5hbEVycm9yLCJUYXNrIGNhbmNlbGxlZCBvciBjb21wbGV0ZWQiKSksdGhpcy5fcmVxdWVzdFJlc29sdmVycy5kZWxldGUocikpOnRoaXMuX29uZXJyb3IobmV3IEVycm9yKGBSZXNvbHZlciBtaXNzaW5nIGZvciByZXF1ZXN0ICR7cn0gZHVyaW5nIHRhc2sgJHt0fSBjbGVhbnVwYCkpfX19YXN5bmMgX3dhaXRGb3JUYXNrVXBkYXRlKHQsbil7bGV0IG89dGhpcy5fb3B0aW9ucz8uZGVmYXVsdFRhc2tQb2xsSW50ZXJ2YWw/PzFlMzt0cnl7Y29uc3Qgcz1hd2FpdCB0aGlzLl90YXNrU3RvcmU/LmdldFRhc2sodCk7cz8ucG9sbEludGVydmFsJiYobz1zLnBvbGxJbnRlcnZhbCl9Y2F0Y2h7fXJldHVybiBuZXcgUHJvbWlzZSgocyxyKT0+e2lmKG4uYWJvcnRlZCl7cihuZXcgVihYLkludmFsaWRSZXF1ZXN0LCJSZXF1ZXN0IGNhbmNlbGxlZCIpKTtyZXR1cm59Y29uc3QgYT1zZXRUaW1lb3V0KHMsbyk7bi5hZGRFdmVudExpc3RlbmVyKCJhYm9ydCIsKCk9PntjbGVhclRpbWVvdXQoYSkscihuZXcgVihYLkludmFsaWRSZXF1ZXN0LCJSZXF1ZXN0IGNhbmNlbGxlZCIpKX0se29uY2U6ITB9KX0pfXJlcXVlc3RUYXNrU3RvcmUodCxuKXtjb25zdCBvPXRoaXMuX3Rhc2tTdG9yZTtpZighbyl0aHJvdyBuZXcgRXJyb3IoIk5vIHRhc2sgc3RvcmUgY29uZmlndXJlZCIpO3JldHVybntjcmVhdGVUYXNrOmFzeW5jIHM9PntpZighdCl0aHJvdyBuZXcgRXJyb3IoIk5vIHJlcXVlc3QgcHJvdmlkZWQiKTtyZXR1cm4gYXdhaXQgby5jcmVhdGVUYXNrKHMsdC5pZCx7bWV0aG9kOnQubWV0aG9kLHBhcmFtczp0LnBhcmFtc30sbil9LGdldFRhc2s6YXN5bmMgcz0+e2NvbnN0IHI9YXdhaXQgby5nZXRUYXNrKHMsbik7aWYoIXIpdGhyb3cgbmV3IFYoWC5JbnZhbGlkUGFyYW1zLCJGYWlsZWQgdG8gcmV0cmlldmUgdGFzazogVGFzayBub3QgZm91bmQiKTtyZXR1cm4gcn0sc3RvcmVUYXNrUmVzdWx0OmFzeW5jKHMscixhKT0+e2F3YWl0IG8uc3RvcmVUYXNrUmVzdWx0KHMscixhLG4pO2NvbnN0IGk9YXdhaXQgby5nZXRUYXNrKHMsbik7aWYoaSl7Y29uc3QgZD1tcy5wYXJzZSh7bWV0aG9kOiJub3RpZmljYXRpb25zL3Rhc2tzL3N0YXR1cyIscGFyYW1zOml9KTthd2FpdCB0aGlzLm5vdGlmaWNhdGlvbihkKSxmdChpLnN0YXR1cykmJnRoaXMuX2NsZWFudXBUYXNrUHJvZ3Jlc3NIYW5kbGVyKHMpfX0sZ2V0VGFza1Jlc3VsdDpzPT5vLmdldFRhc2tSZXN1bHQocyxuKSx1cGRhdGVUYXNrU3RhdHVzOmFzeW5jKHMscixhKT0+e2NvbnN0IGk9YXdhaXQgby5nZXRUYXNrKHMsbik7aWYoIWkpdGhyb3cgbmV3IFYoWC5JbnZhbGlkUGFyYW1zLGBUYXNrICIke3N9IiBub3QgZm91bmQgLSBpdCBtYXkgaGF2ZSBiZWVuIGNsZWFuZWQgdXBgKTtpZihmdChpLnN0YXR1cykpdGhyb3cgbmV3IFYoWC5JbnZhbGlkUGFyYW1zLGBDYW5ub3QgdXBkYXRlIHRhc2sgIiR7c30iIGZyb20gdGVybWluYWwgc3RhdHVzICIke2kuc3RhdHVzfSIgdG8gIiR7cn0iLiBUZXJtaW5hbCBzdGF0ZXMgKGNvbXBsZXRlZCwgZmFpbGVkLCBjYW5jZWxsZWQpIGNhbm5vdCB0cmFuc2l0aW9uIHRvIG90aGVyIHN0YXRlcy5gKTthd2FpdCBvLnVwZGF0ZVRhc2tTdGF0dXMocyxyLGEsbik7Y29uc3QgZD1hd2FpdCBvLmdldFRhc2socyxuKTtpZihkKXtjb25zdCB1PW1zLnBhcnNlKHttZXRob2Q6Im5vdGlmaWNhdGlvbnMvdGFza3Mvc3RhdHVzIixwYXJhbXM6ZH0pO2F3YWl0IHRoaXMubm90aWZpY2F0aW9uKHUpLGZ0KGQuc3RhdHVzKSYmdGhpcy5fY2xlYW51cFRhc2tQcm9ncmVzc0hhbmRsZXIocyl9fSxsaXN0VGFza3M6cz0+by5saXN0VGFza3MocyxuKX19fWZ1bmN0aW9uIFZ1KGUpe3JldHVybiBlIT09bnVsbCYmdHlwZW9mIGU9PSJvYmplY3QiJiYhQXJyYXkuaXNBcnJheShlKX1mdW5jdGlvbiBQayhlLHQpe2NvbnN0IG49ey4uLmV9O2Zvcihjb25zdCBvIGluIHQpe2NvbnN0IHM9byxyPXRbc107aWYocj09PXZvaWQgMCljb250aW51ZTtjb25zdCBhPW5bc107VnUoYSkmJlZ1KHIpP25bc109ey4uLmEsLi4ucn06bltzXT1yfXJldHVybiBufShlPT50eXBlb2YgcmVxdWlyZTwidSI/cmVxdWlyZTp0eXBlb2YgUHJveHk8InUiP25ldyBQcm94eShlLHtnZXQ6KHQsbik9Pih0eXBlb2YgcmVxdWlyZTwidSI/cmVxdWlyZTp0KVtuXX0pOmUpKGZ1bmN0aW9uKGUpe2lmKHR5cGVvZiByZXF1aXJlPCJ1IilyZXR1cm4gcmVxdWlyZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7dGhyb3cgRXJyb3IoJ0R5bmFtaWMgcmVxdWlyZSBvZiAiJytlKyciIGlzIG5vdCBzdXBwb3J0ZWQnKX0pO2NsYXNzIEVrIGV4dGVuZHMgQ2t7X3JlZ2lzdGVyZWRNZXRob2RzPW5ldyBTZXQ7X2V2ZW50U2xvdHM9bmV3IE1hcDtvbkV2ZW50RGlzcGF0Y2godCxuKXt9X2Vuc3VyZUV2ZW50U2xvdCh0KXtsZXQgbj10aGlzLl9ldmVudFNsb3RzLmdldCh0KTtpZighbil7bGV0IG89dGhpcy5ldmVudFNjaGVtYXNbdF07aWYoIW8pdGhyb3cgRXJyb3IoYFVua25vd24gZXZlbnQ6ICR7U3RyaW5nKHQpfWApO249e2xpc3RlbmVyczpbXX0sdGhpcy5fZXZlbnRTbG90cy5zZXQodCxuKTtsZXQgcz1vLnNoYXBlLm1ldGhvZC52YWx1ZTt0aGlzLl9yZWdpc3RlcmVkTWV0aG9kcy5hZGQocyk7bGV0IHI9bjtzdXBlci5zZXROb3RpZmljYXRpb25IYW5kbGVyKG8sYT0+e2xldCBpPWEucGFyYW1zO3RoaXMub25FdmVudERpc3BhdGNoKHQsaSksci5vbkhhbmRsZXI/LihpKTtmb3IobGV0IGQgb2ZbLi4uci5saXN0ZW5lcnNdKWQoaSl9KX1yZXR1cm4gbn1zZXRFdmVudEhhbmRsZXIodCxuKXtsZXQgbz10aGlzLl9lbnN1cmVFdmVudFNsb3QodCk7by5vbkhhbmRsZXImJm4mJmNvbnNvbGUud2FybihgW01DUCBBcHBzXSBvbiR7U3RyaW5nKHQpfSBoYW5kbGVyIHJlcGxhY2VkLiBVc2UgYWRkRXZlbnRMaXN0ZW5lcigiJHtTdHJpbmcodCl9Iiwg4oCmKSB0byBhZGQgbXVsdGlwbGUgbGlzdGVuZXJzIHdpdGhvdXQgcmVwbGFjaW5nLmApLG8ub25IYW5kbGVyPW59Z2V0RXZlbnRIYW5kbGVyKHQpe3JldHVybiB0aGlzLl9ldmVudFNsb3RzLmdldCh0KT8ub25IYW5kbGVyfWFkZEV2ZW50TGlzdGVuZXIodCxuKXt0aGlzLl9lbnN1cmVFdmVudFNsb3QodCkubGlzdGVuZXJzLnB1c2gobil9cmVtb3ZlRXZlbnRMaXN0ZW5lcih0LG4pe2xldCBvPXRoaXMuX2V2ZW50U2xvdHMuZ2V0KHQpO2lmKCFvKXJldHVybjtsZXQgcz1vLmxpc3RlbmVycy5pbmRleE9mKG4pO3MhPT0tMSYmby5saXN0ZW5lcnMuc3BsaWNlKHMsMSl9c2V0UmVxdWVzdEhhbmRsZXI9KHQsbik9Pnt0aGlzLl9hc3NlcnRNZXRob2ROb3RSZWdpc3RlcmVkKHQsInNldFJlcXVlc3RIYW5kbGVyIiksc3VwZXIuc2V0UmVxdWVzdEhhbmRsZXIodCxuKX07c2V0Tm90aWZpY2F0aW9uSGFuZGxlcj0odCxuKT0+e3RoaXMuX2Fzc2VydE1ldGhvZE5vdFJlZ2lzdGVyZWQodCwic2V0Tm90aWZpY2F0aW9uSGFuZGxlciIpLHN1cGVyLnNldE5vdGlmaWNhdGlvbkhhbmRsZXIodCxuKX07d2FybklmUmVxdWVzdEhhbmRsZXJSZXBsYWNlZCh0LG4sbyl7biYmbyYmY29uc29sZS53YXJuKGBbTUNQIEFwcHNdICR7dH0gaGFuZGxlciByZXBsYWNlZC4gUHJldmlvdXMgaGFuZGxlciB3aWxsIG5vIGxvbmdlciBiZSBjYWxsZWQuYCl9cmVwbGFjZVJlcXVlc3RIYW5kbGVyPSh0LG4pPT57bGV0IG89dC5zaGFwZS5tZXRob2QudmFsdWU7dGhpcy5fcmVnaXN0ZXJlZE1ldGhvZHMuYWRkKG8pLHN1cGVyLnNldFJlcXVlc3RIYW5kbGVyKHQsbil9O19hc3NlcnRNZXRob2ROb3RSZWdpc3RlcmVkKHQsbil7bGV0IG89dC5zaGFwZS5tZXRob2QudmFsdWU7aWYodGhpcy5fcmVnaXN0ZXJlZE1ldGhvZHMuaGFzKG8pKXRocm93IEVycm9yKGBIYW5kbGVyIGZvciAiJHtvfSIgYWxyZWFkeSByZWdpc3RlcmVkICh2aWEgJHtufSkuIFVzZSBhZGRFdmVudExpc3RlbmVyKCkgdG8gYXR0YWNoIG11bHRpcGxlIGxpc3RlbmVycywgb3IgdGhlIG9uKiBzZXR0ZXIgZm9yIHJlcGxhY2Ugc2VtYW50aWNzLmApO3RoaXMuX3JlZ2lzdGVyZWRNZXRob2RzLmFkZChvKX19dmFyIE9rPSIyMDI2LTAxLTI2IixSaz0idWkvbm90aWZpY2F0aW9ucy90b29sLWlucHV0LXBhcnRpYWwiO2NsYXNzIE5re2V2ZW50VGFyZ2V0O2V2ZW50U291cmNlO21lc3NhZ2VMaXN0ZW5lcjtjb25zdHJ1Y3Rvcih0PXdpbmRvdy5wYXJlbnQsbil7dGhpcy5ldmVudFRhcmdldD10LHRoaXMuZXZlbnRTb3VyY2U9bix0aGlzLm1lc3NhZ2VMaXN0ZW5lcj1vPT57aWYobiYmby5zb3VyY2UhPT10aGlzLmV2ZW50U291cmNlKXtjb25zb2xlLmRlYnVnKCJJZ25vcmluZyBtZXNzYWdlIGZyb20gdW5rbm93biBzb3VyY2UiLG8pO3JldHVybn1sZXQgcz1LJC5zYWZlUGFyc2Uoby5kYXRhKTtzLnN1Y2Nlc3M/KGNvbnNvbGUuZGVidWcoIlBhcnNlZCBtZXNzYWdlIixzLmRhdGEpLHRoaXMub25tZXNzYWdlPy4ocy5kYXRhKSk6by5kYXRhPy5qc29ucnBjIT09IjIuMCI/Y29uc29sZS5kZWJ1ZygiSWdub3Jpbmcgbm9uLUpTT04tUlBDIG1lc3NhZ2UiLHMuZXJyb3IubWVzc2FnZSxvKTooY29uc29sZS5lcnJvcigiRmFpbGVkIHRvIHBhcnNlIG1lc3NhZ2UiLHMuZXJyb3IubWVzc2FnZSxvKSx0aGlzLm9uZXJyb3I/LihFcnJvcigiSW52YWxpZCBKU09OLVJQQyBtZXNzYWdlIHJlY2VpdmVkOiAiK3MuZXJyb3IubWVzc2FnZSkpKX19YXN5bmMgc3RhcnQoKXt3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsdGhpcy5tZXNzYWdlTGlzdGVuZXIpfWFzeW5jIHNlbmQodCxuKXt0Lm1ldGhvZCE9PVJrJiZjb25zb2xlLmRlYnVnKCJTZW5kaW5nIG1lc3NhZ2UiLHQpLHRoaXMuZXZlbnRUYXJnZXQucG9zdE1lc3NhZ2UodCwiKiIpfWFzeW5jIGNsb3NlKCl7d2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLHRoaXMubWVzc2FnZUxpc3RlbmVyKSx0aGlzLm9uY2xvc2U/LigpfW9uY2xvc2U7b25lcnJvcjtvbm1lc3NhZ2U7c2Vzc2lvbklkO3NldFByb3RvY29sVmVyc2lvbn12YXIgWms9RChbZygibGlnaHQiKSxnKCJkYXJrIildKS5kZXNjcmliZSgiQ29sb3IgdGhlbWUgcHJlZmVyZW5jZSBmb3IgdGhlIGhvc3QgZW52aXJvbm1lbnQuIiksTW49RChbZygiaW5saW5lIiksZygiZnVsbHNjcmVlbiIpLGcoInBpcCIpXSkuZGVzY3JpYmUoIkRpc3BsYXkgbW9kZSBmb3IgVUkgcHJlc2VudGF0aW9uLiIpLE1rPUQoW2coIi0tY29sb3ItYmFja2dyb3VuZC1wcmltYXJ5IiksZygiLS1jb2xvci1iYWNrZ3JvdW5kLXNlY29uZGFyeSIpLGcoIi0tY29sb3ItYmFja2dyb3VuZC10ZXJ0aWFyeSIpLGcoIi0tY29sb3ItYmFja2dyb3VuZC1pbnZlcnNlIiksZygiLS1jb2xvci1iYWNrZ3JvdW5kLWdob3N0IiksZygiLS1jb2xvci1iYWNrZ3JvdW5kLWluZm8iKSxnKCItLWNvbG9yLWJhY2tncm91bmQtZGFuZ2VyIiksZygiLS1jb2xvci1iYWNrZ3JvdW5kLXN1Y2Nlc3MiKSxnKCItLWNvbG9yLWJhY2tncm91bmQtd2FybmluZyIpLGcoIi0tY29sb3ItYmFja2dyb3VuZC1kaXNhYmxlZCIpLGcoIi0tY29sb3ItdGV4dC1wcmltYXJ5IiksZygiLS1jb2xvci10ZXh0LXNlY29uZGFyeSIpLGcoIi0tY29sb3ItdGV4dC10ZXJ0aWFyeSIpLGcoIi0tY29sb3ItdGV4dC1pbnZlcnNlIiksZygiLS1jb2xvci10ZXh0LWdob3N0IiksZygiLS1jb2xvci10ZXh0LWluZm8iKSxnKCItLWNvbG9yLXRleHQtZGFuZ2VyIiksZygiLS1jb2xvci10ZXh0LXN1Y2Nlc3MiKSxnKCItLWNvbG9yLXRleHQtd2FybmluZyIpLGcoIi0tY29sb3ItdGV4dC1kaXNhYmxlZCIpLGcoIi0tY29sb3ItYm9yZGVyLXByaW1hcnkiKSxnKCItLWNvbG9yLWJvcmRlci1zZWNvbmRhcnkiKSxnKCItLWNvbG9yLWJvcmRlci10ZXJ0aWFyeSIpLGcoIi0tY29sb3ItYm9yZGVyLWludmVyc2UiKSxnKCItLWNvbG9yLWJvcmRlci1naG9zdCIpLGcoIi0tY29sb3ItYm9yZGVyLWluZm8iKSxnKCItLWNvbG9yLWJvcmRlci1kYW5nZXIiKSxnKCItLWNvbG9yLWJvcmRlci1zdWNjZXNzIiksZygiLS1jb2xvci1ib3JkZXItd2FybmluZyIpLGcoIi0tY29sb3ItYm9yZGVyLWRpc2FibGVkIiksZygiLS1jb2xvci1yaW5nLXByaW1hcnkiKSxnKCItLWNvbG9yLXJpbmctc2Vjb25kYXJ5IiksZygiLS1jb2xvci1yaW5nLWludmVyc2UiKSxnKCItLWNvbG9yLXJpbmctaW5mbyIpLGcoIi0tY29sb3ItcmluZy1kYW5nZXIiKSxnKCItLWNvbG9yLXJpbmctc3VjY2VzcyIpLGcoIi0tY29sb3ItcmluZy13YXJuaW5nIiksZygiLS1mb250LXNhbnMiKSxnKCItLWZvbnQtbW9ubyIpLGcoIi0tZm9udC13ZWlnaHQtbm9ybWFsIiksZygiLS1mb250LXdlaWdodC1tZWRpdW0iKSxnKCItLWZvbnQtd2VpZ2h0LXNlbWlib2xkIiksZygiLS1mb250LXdlaWdodC1ib2xkIiksZygiLS1mb250LXRleHQteHMtc2l6ZSIpLGcoIi0tZm9udC10ZXh0LXNtLXNpemUiKSxnKCItLWZvbnQtdGV4dC1tZC1zaXplIiksZygiLS1mb250LXRleHQtbGctc2l6ZSIpLGcoIi0tZm9udC1oZWFkaW5nLXhzLXNpemUiKSxnKCItLWZvbnQtaGVhZGluZy1zbS1zaXplIiksZygiLS1mb250LWhlYWRpbmctbWQtc2l6ZSIpLGcoIi0tZm9udC1oZWFkaW5nLWxnLXNpemUiKSxnKCItLWZvbnQtaGVhZGluZy14bC1zaXplIiksZygiLS1mb250LWhlYWRpbmctMnhsLXNpemUiKSxnKCItLWZvbnQtaGVhZGluZy0zeGwtc2l6ZSIpLGcoIi0tZm9udC10ZXh0LXhzLWxpbmUtaGVpZ2h0IiksZygiLS1mb250LXRleHQtc20tbGluZS1oZWlnaHQiKSxnKCItLWZvbnQtdGV4dC1tZC1saW5lLWhlaWdodCIpLGcoIi0tZm9udC10ZXh0LWxnLWxpbmUtaGVpZ2h0IiksZygiLS1mb250LWhlYWRpbmcteHMtbGluZS1oZWlnaHQiKSxnKCItLWZvbnQtaGVhZGluZy1zbS1saW5lLWhlaWdodCIpLGcoIi0tZm9udC1oZWFkaW5nLW1kLWxpbmUtaGVpZ2h0IiksZygiLS1mb250LWhlYWRpbmctbGctbGluZS1oZWlnaHQiKSxnKCItLWZvbnQtaGVhZGluZy14bC1saW5lLWhlaWdodCIpLGcoIi0tZm9udC1oZWFkaW5nLTJ4bC1saW5lLWhlaWdodCIpLGcoIi0tZm9udC1oZWFkaW5nLTN4bC1saW5lLWhlaWdodCIpLGcoIi0tYm9yZGVyLXJhZGl1cy14cyIpLGcoIi0tYm9yZGVyLXJhZGl1cy1zbSIpLGcoIi0tYm9yZGVyLXJhZGl1cy1tZCIpLGcoIi0tYm9yZGVyLXJhZGl1cy1sZyIpLGcoIi0tYm9yZGVyLXJhZGl1cy14bCIpLGcoIi0tYm9yZGVyLXJhZGl1cy1mdWxsIiksZygiLS1ib3JkZXItd2lkdGgtcmVndWxhciIpLGcoIi0tc2hhZG93LWhhaXJsaW5lIiksZygiLS1zaGFkb3ctc20iKSxnKCItLXNoYWRvdy1tZCIpLGcoIi0tc2hhZG93LWxnIildKS5kZXNjcmliZSgiQ1NTIHZhcmlhYmxlIGtleXMgYXZhaWxhYmxlIHRvIE1DUCBhcHBzIGZvciB0aGVtaW5nLiIpLGprPVUoTWsuZGVzY3JpYmUoYFN0eWxlIHZhcmlhYmxlcyBmb3IgdGhlbWluZyBNQ1AgYXBwcy4KCkluZGl2aWR1YWwgc3R5bGUga2V5cyBhcmUgb3B0aW9uYWwgLSBob3N0cyBtYXkgcHJvdmlkZSBhbnkgc3Vic2V0IG9mIHRoZXNlIHZhbHVlcy4KVmFsdWVzIGFyZSBzdHJpbmdzIGNvbnRhaW5pbmcgQ1NTIHZhbHVlcyAoY29sb3JzLCBzaXplcywgZm9udCBzdGFja3MsIGV0Yy4pLgoKTm90ZTogVGhpcyB0eXBlIHVzZXMgXGBSZWNvcmQ8Sywgc3RyaW5nIHwgdW5kZWZpbmVkPlxgIHJhdGhlciB0aGFuIFxgUGFydGlhbDxSZWNvcmQ8Sywgc3RyaW5nPj5cYApmb3IgY29tcGF0aWJpbGl0eSB3aXRoIFpvZCBzY2hlbWEgZ2VuZXJhdGlvbi4gQm90aCBhcmUgZnVuY3Rpb25hbGx5IGVxdWl2YWxlbnQgZm9yIHZhbGlkYXRpb24uYCksRChbZigpLEZ0KCldKS5kZXNjcmliZShgU3R5bGUgdmFyaWFibGVzIGZvciB0aGVtaW5nIE1DUCBhcHBzLgoKSW5kaXZpZHVhbCBzdHlsZSBrZXlzIGFyZSBvcHRpb25hbCAtIGhvc3RzIG1heSBwcm92aWRlIGFueSBzdWJzZXQgb2YgdGhlc2UgdmFsdWVzLgpWYWx1ZXMgYXJlIHN0cmluZ3MgY29udGFpbmluZyBDU1MgdmFsdWVzIChjb2xvcnMsIHNpemVzLCBmb250IHN0YWNrcywgZXRjLikuCgpOb3RlOiBUaGlzIHR5cGUgdXNlcyBcYFJlY29yZDxLLCBzdHJpbmcgfCB1bmRlZmluZWQ+XGAgcmF0aGVyIHRoYW4gXGBQYXJ0aWFsPFJlY29yZDxLLCBzdHJpbmc+PlxgCmZvciBjb21wYXRpYmlsaXR5IHdpdGggWm9kIHNjaGVtYSBnZW5lcmF0aW9uLiBCb3RoIGFyZSBmdW5jdGlvbmFsbHkgZXF1aXZhbGVudCBmb3IgdmFsaWRhdGlvbi5gKSkuZGVzY3JpYmUoYFN0eWxlIHZhcmlhYmxlcyBmb3IgdGhlbWluZyBNQ1AgYXBwcy4KCkluZGl2aWR1YWwgc3R5bGUga2V5cyBhcmUgb3B0aW9uYWwgLSBob3N0cyBtYXkgcHJvdmlkZSBhbnkgc3Vic2V0IG9mIHRoZXNlIHZhbHVlcy4KVmFsdWVzIGFyZSBzdHJpbmdzIGNvbnRhaW5pbmcgQ1NTIHZhbHVlcyAoY29sb3JzLCBzaXplcywgZm9udCBzdGFja3MsIGV0Yy4pLgoKTm90ZTogVGhpcyB0eXBlIHVzZXMgXGBSZWNvcmQ8Sywgc3RyaW5nIHwgdW5kZWZpbmVkPlxgIHJhdGhlciB0aGFuIFxgUGFydGlhbDxSZWNvcmQ8Sywgc3RyaW5nPj5cYApmb3IgY29tcGF0aWJpbGl0eSB3aXRoIFpvZCBzY2hlbWEgZ2VuZXJhdGlvbi4gQm90aCBhcmUgZnVuY3Rpb25hbGx5IGVxdWl2YWxlbnQgZm9yIHZhbGlkYXRpb24uYCk7dih7bWV0aG9kOmcoInVpL29wZW4tbGluayIpLHBhcmFtczp2KHt1cmw6ZigpLmRlc2NyaWJlKCJVUkwgdG8gb3BlbiBpbiB0aGUgaG9zdCdzIGJyb3dzZXIiKX0pfSk7dmFyIHFrPXYoe2lzRXJyb3I6RygpLm9wdGlvbmFsKCkuZGVzY3JpYmUoIlRydWUgaWYgdGhlIGhvc3QgZmFpbGVkIHRvIG9wZW4gdGhlIFVSTCAoZS5nLiwgZHVlIHRvIHNlY3VyaXR5IHBvbGljeSkuIil9KS5wYXNzdGhyb3VnaCgpLExrPXYoe2lzRXJyb3I6RygpLm9wdGlvbmFsKCkuZGVzY3JpYmUoIlRydWUgaWYgdGhlIGRvd25sb2FkIGZhaWxlZCAoZS5nLiwgdXNlciBjYW5jZWxsZWQgb3IgaG9zdCBkZW5pZWQpLiIpfSkucGFzc3Rocm91Z2goKSxEaz12KHtpc0Vycm9yOkcoKS5vcHRpb25hbCgpLmRlc2NyaWJlKCJUcnVlIGlmIHRoZSBob3N0IHJlamVjdGVkIG9yIGZhaWxlZCB0byBkZWxpdmVyIHRoZSBtZXNzYWdlLiIpfSkucGFzc3Rocm91Z2goKTt2KHttZXRob2Q6ZygidWkvbm90aWZpY2F0aW9ucy9zYW5kYm94LXByb3h5LXJlYWR5IikscGFyYW1zOnYoe30pfSk7dmFyIERsPXYoe2Nvbm5lY3REb21haW5zOk8oZigpKS5vcHRpb25hbCgpLmRlc2NyaWJlKGBPcmlnaW5zIGZvciBuZXR3b3JrIHJlcXVlc3RzIChmZXRjaC9YSFIvV2ViU29ja2V0KS4KCi0gTWFwcyB0byBDU1AgXGBjb25uZWN0LXNyY1xgIGRpcmVjdGl2ZQotIEVtcHR5IG9yIG9taXR0ZWQg4oaSIG5vIG5ldHdvcmsgY29ubmVjdGlvbnMgKHNlY3VyZSBkZWZhdWx0KWApLHJlc291cmNlRG9tYWluczpPKGYoKSkub3B0aW9uYWwoKS5kZXNjcmliZSgiT3JpZ2lucyBmb3Igc3RhdGljIHJlc291cmNlcyAoaW1hZ2VzLCBzY3JpcHRzLCBzdHlsZXNoZWV0cywgZm9udHMsIG1lZGlhKS5cblxuLSBNYXBzIHRvIENTUCBgaW1nLXNyY2AsIGBzY3JpcHQtc3JjYCwgYHN0eWxlLXNyY2AsIGBmb250LXNyY2AsIGBtZWRpYS1zcmNgIGRpcmVjdGl2ZXNcbi0gV2lsZGNhcmQgc3ViZG9tYWlucyBzdXBwb3J0ZWQ6IGBodHRwczovLyouZXhhbXBsZS5jb21gXG4tIEVtcHR5IG9yIG9taXR0ZWQg4oaSIG5vIG5ldHdvcmsgcmVzb3VyY2VzIChzZWN1cmUgZGVmYXVsdCkiKSxmcmFtZURvbWFpbnM6TyhmKCkpLm9wdGlvbmFsKCkuZGVzY3JpYmUoIk9yaWdpbnMgZm9yIG5lc3RlZCBpZnJhbWVzLlxuXG4tIE1hcHMgdG8gQ1NQIGBmcmFtZS1zcmNgIGRpcmVjdGl2ZVxuLSBFbXB0eSBvciBvbWl0dGVkIOKGkiBubyBuZXN0ZWQgaWZyYW1lcyBhbGxvd2VkIChgZnJhbWUtc3JjICdub25lJ2ApIiksYmFzZVVyaURvbWFpbnM6TyhmKCkpLm9wdGlvbmFsKCkuZGVzY3JpYmUoIkFsbG93ZWQgYmFzZSBVUklzIGZvciB0aGUgZG9jdW1lbnQuXG5cbi0gTWFwcyB0byBDU1AgYGJhc2UtdXJpYCBkaXJlY3RpdmVcbi0gRW1wdHkgb3Igb21pdHRlZCDihpIgb25seSBzYW1lIG9yaWdpbiBhbGxvd2VkIChgYmFzZS11cmkgJ3NlbGYnYCkiKX0pLEJsPXYoe2NhbWVyYTp2KHt9KS5vcHRpb25hbCgpLmRlc2NyaWJlKCJSZXF1ZXN0IGNhbWVyYSBhY2Nlc3MuXG5cbk1hcHMgdG8gUGVybWlzc2lvbiBQb2xpY3kgYGNhbWVyYWAgZmVhdHVyZS4iKSxtaWNyb3Bob25lOnYoe30pLm9wdGlvbmFsKCkuZGVzY3JpYmUoIlJlcXVlc3QgbWljcm9waG9uZSBhY2Nlc3MuXG5cbk1hcHMgdG8gUGVybWlzc2lvbiBQb2xpY3kgYG1pY3JvcGhvbmVgIGZlYXR1cmUuIiksZ2VvbG9jYXRpb246dih7fSkub3B0aW9uYWwoKS5kZXNjcmliZSgiUmVxdWVzdCBnZW9sb2NhdGlvbiBhY2Nlc3MuXG5cbk1hcHMgdG8gUGVybWlzc2lvbiBQb2xpY3kgYGdlb2xvY2F0aW9uYCBmZWF0dXJlLiIpLGNsaXBib2FyZFdyaXRlOnYoe30pLm9wdGlvbmFsKCkuZGVzY3JpYmUoIlJlcXVlc3QgY2xpcGJvYXJkIHdyaXRlIGFjY2Vzcy5cblxuTWFwcyB0byBQZXJtaXNzaW9uIFBvbGljeSBgY2xpcGJvYXJkLXdyaXRlYCBmZWF0dXJlLiIpfSk7dih7bWV0aG9kOmcoInVpL25vdGlmaWNhdGlvbnMvc2l6ZS1jaGFuZ2VkIikscGFyYW1zOnYoe3dpZHRoOk0oKS5vcHRpb25hbCgpLmRlc2NyaWJlKCJOZXcgd2lkdGggaW4gcGl4ZWxzLiIpLGhlaWdodDpNKCkub3B0aW9uYWwoKS5kZXNjcmliZSgiTmV3IGhlaWdodCBpbiBwaXhlbHMuIil9KX0pO3ZhciBCaz12KHttZXRob2Q6ZygidWkvbm90aWZpY2F0aW9ucy90b29sLWlucHV0IikscGFyYW1zOnYoe2FyZ3VtZW50czpVKGYoKSxLKCkuZGVzY3JpYmUoIkNvbXBsZXRlIHRvb2wgY2FsbCBhcmd1bWVudHMgYXMga2V5LXZhbHVlIHBhaXJzLiIpKS5vcHRpb25hbCgpLmRlc2NyaWJlKCJDb21wbGV0ZSB0b29sIGNhbGwgYXJndW1lbnRzIGFzIGtleS12YWx1ZSBwYWlycy4iKX0pfSksVWs9dih7bWV0aG9kOmcoInVpL25vdGlmaWNhdGlvbnMvdG9vbC1pbnB1dC1wYXJ0aWFsIikscGFyYW1zOnYoe2FyZ3VtZW50czpVKGYoKSxLKCkuZGVzY3JpYmUoIlBhcnRpYWwgdG9vbCBjYWxsIGFyZ3VtZW50cyAoaW5jb21wbGV0ZSwgbWF5IGNoYW5nZSkuIikpLm9wdGlvbmFsKCkuZGVzY3JpYmUoIlBhcnRpYWwgdG9vbCBjYWxsIGFyZ3VtZW50cyAoaW5jb21wbGV0ZSwgbWF5IGNoYW5nZSkuIil9KX0pLEZrPXYoe21ldGhvZDpnKCJ1aS9ub3RpZmljYXRpb25zL3Rvb2wtY2FuY2VsbGVkIikscGFyYW1zOnYoe3JlYXNvbjpmKCkub3B0aW9uYWwoKS5kZXNjcmliZSgnT3B0aW9uYWwgcmVhc29uIGZvciB0aGUgY2FuY2VsbGF0aW9uIChlLmcuLCAidXNlciBhY3Rpb24iLCAidGltZW91dCIpLicpfSl9KSxIaz12KHtmb250czpmKCkub3B0aW9uYWwoKX0pLFdrPXYoe3ZhcmlhYmxlczpqay5vcHRpb25hbCgpLmRlc2NyaWJlKCJDU1MgdmFyaWFibGVzIGZvciB0aGVtaW5nIHRoZSBhcHAuIiksY3NzOkhrLm9wdGlvbmFsKCkuZGVzY3JpYmUoIkNTUyBibG9ja3MgdGhhdCBhcHBzIGNhbiBpbmplY3QuIil9KSxWaz12KHttZXRob2Q6ZygidWkvcmVzb3VyY2UtdGVhcmRvd24iKSxwYXJhbXM6dih7fSl9KTtVKGYoKSxLKCkpO3ZhciBKdT12KHt0ZXh0OnYoe30pLm9wdGlvbmFsKCkuZGVzY3JpYmUoIkhvc3Qgc3VwcG9ydHMgdGV4dCBjb250ZW50IGJsb2Nrcy4iKSxpbWFnZTp2KHt9KS5vcHRpb25hbCgpLmRlc2NyaWJlKCJIb3N0IHN1cHBvcnRzIGltYWdlIGNvbnRlbnQgYmxvY2tzLiIpLGF1ZGlvOnYoe30pLm9wdGlvbmFsKCkuZGVzY3JpYmUoIkhvc3Qgc3VwcG9ydHMgYXVkaW8gY29udGVudCBibG9ja3MuIikscmVzb3VyY2U6dih7fSkub3B0aW9uYWwoKS5kZXNjcmliZSgiSG9zdCBzdXBwb3J0cyByZXNvdXJjZSBjb250ZW50IGJsb2Nrcy4iKSxyZXNvdXJjZUxpbms6dih7fSkub3B0aW9uYWwoKS5kZXNjcmliZSgiSG9zdCBzdXBwb3J0cyByZXNvdXJjZSBsaW5rIGNvbnRlbnQgYmxvY2tzLiIpLHN0cnVjdHVyZWRDb250ZW50OnYoe30pLm9wdGlvbmFsKCkuZGVzY3JpYmUoIkhvc3Qgc3VwcG9ydHMgc3RydWN0dXJlZCBjb250ZW50LiIpfSk7dih7bWV0aG9kOmcoInVpL25vdGlmaWNhdGlvbnMvcmVxdWVzdC10ZWFyZG93biIpLHBhcmFtczp2KHt9KS5vcHRpb25hbCgpfSk7dmFyIEprPXYoe2V4cGVyaW1lbnRhbDpVKGYoKSxVKGYoKSxQbygpKS5kZXNjcmliZSgiRXhwZXJpbWVudGFsIGZlYXR1cmVzIGtleWVkIGJ5IGlkZW50aWZpZXIuIikpLm9wdGlvbmFsKCkuZGVzY3JpYmUoIkV4cGVyaW1lbnRhbCBmZWF0dXJlcyBrZXllZCBieSBpZGVudGlmaWVyLiIpLG9wZW5MaW5rczp2KHt9KS5vcHRpb25hbCgpLmRlc2NyaWJlKCJIb3N0IHN1cHBvcnRzIG9wZW5pbmcgZXh0ZXJuYWwgVVJMcy4iKSxkb3dubG9hZEZpbGU6dih7fSkub3B0aW9uYWwoKS5kZXNjcmliZSgiSG9zdCBzdXBwb3J0cyBmaWxlIGRvd25sb2FkcyB2aWEgdWkvZG93bmxvYWQtZmlsZS4iKSxzZXJ2ZXJUb29sczp2KHtsaXN0Q2hhbmdlZDpHKCkub3B0aW9uYWwoKS5kZXNjcmliZSgiSG9zdCBzdXBwb3J0cyB0b29scy9saXN0X2NoYW5nZWQgbm90aWZpY2F0aW9ucy4iKX0pLm9wdGlvbmFsKCkuZGVzY3JpYmUoIkhvc3QgY2FuIHByb3h5IHRvb2wgY2FsbHMgdG8gdGhlIE1DUCBzZXJ2ZXIuIiksc2VydmVyUmVzb3VyY2VzOnYoe2xpc3RDaGFuZ2VkOkcoKS5vcHRpb25hbCgpLmRlc2NyaWJlKCJIb3N0IHN1cHBvcnRzIHJlc291cmNlcy9saXN0X2NoYW5nZWQgbm90aWZpY2F0aW9ucy4iKX0pLm9wdGlvbmFsKCkuZGVzY3JpYmUoIkhvc3QgY2FuIHByb3h5IHJlc291cmNlIHJlYWRzIHRvIHRoZSBNQ1Agc2VydmVyLiIpLGxvZ2dpbmc6dih7fSkub3B0aW9uYWwoKS5kZXNjcmliZSgiSG9zdCBhY2NlcHRzIGxvZyBtZXNzYWdlcy4iKSxzYW5kYm94OnYoe3Blcm1pc3Npb25zOkJsLm9wdGlvbmFsKCkuZGVzY3JpYmUoIlBlcm1pc3Npb25zIGdyYW50ZWQgYnkgdGhlIGhvc3QgKGNhbWVyYSwgbWljcm9waG9uZSwgZ2VvbG9jYXRpb24pLiIpLGNzcDpEbC5vcHRpb25hbCgpLmRlc2NyaWJlKCJDU1AgZG9tYWlucyBhcHByb3ZlZCBieSB0aGUgaG9zdC4iKX0pLm9wdGlvbmFsKCkuZGVzY3JpYmUoIlNhbmRib3ggY29uZmlndXJhdGlvbiBhcHBsaWVkIGJ5IHRoZSBob3N0LiIpLHVwZGF0ZU1vZGVsQ29udGV4dDpKdS5vcHRpb25hbCgpLmRlc2NyaWJlKCJIb3N0IGFjY2VwdHMgY29udGV4dCB1cGRhdGVzICh1aS91cGRhdGUtbW9kZWwtY29udGV4dCkgdG8gYmUgaW5jbHVkZWQgaW4gdGhlIG1vZGVsJ3MgY29udGV4dCBmb3IgZnV0dXJlIHR1cm5zLiIpLG1lc3NhZ2U6SnUub3B0aW9uYWwoKS5kZXNjcmliZSgiSG9zdCBzdXBwb3J0cyByZWNlaXZpbmcgY29udGVudCBtZXNzYWdlcyAodWkvbWVzc2FnZSkgZnJvbSB0aGUgdmlldy4iKSxzYW1wbGluZzp2KHt0b29sczp2KHt9KS5vcHRpb25hbCgpLmRlc2NyaWJlKCJIb3N0IHN1cHBvcnRzIHRvb2wgdXNlIHZpYSBgdG9vbHNgIGFuZCBgdG9vbENob2ljZWAgcGFyYW1ldGVycy4iKX0pLm9wdGlvbmFsKCkuZGVzY3JpYmUoIkhvc3Qgc3VwcG9ydHMgTExNIHNhbXBsaW5nIChzYW1wbGluZy9jcmVhdGVNZXNzYWdlKSBmcm9tIHRoZSB2aWV3LlxuTWlycm9ycyB0aGUgTUNQIGBDbGllbnRDYXBhYmlsaXRpZXMuc2FtcGxpbmdgIHNoYXBlIHNvIGhvc3RzIGNhbiBwYXNzIGl0IHRocm91Z2guIil9KSxLaz12KHtleHBlcmltZW50YWw6VShmKCksVShmKCksUG8oKSkuZGVzY3JpYmUoIkV4cGVyaW1lbnRhbCBmZWF0dXJlcyBrZXllZCBieSBpZGVudGlmaWVyLiIpKS5vcHRpb25hbCgpLmRlc2NyaWJlKCJFeHBlcmltZW50YWwgZmVhdHVyZXMga2V5ZWQgYnkgaWRlbnRpZmllci4iKSx0b29sczp2KHtsaXN0Q2hhbmdlZDpHKCkub3B0aW9uYWwoKS5kZXNjcmliZSgiQXBwIHN1cHBvcnRzIHRvb2xzL2xpc3RfY2hhbmdlZCBub3RpZmljYXRpb25zLiIpfSkub3B0aW9uYWwoKS5kZXNjcmliZSgiQXBwIGV4cG9zZXMgTUNQLXN0eWxlIHRvb2xzIHRoYXQgdGhlIGhvc3QgY2FuIGNhbGwuIiksYXZhaWxhYmxlRGlzcGxheU1vZGVzOk8oTW4pLm9wdGlvbmFsKCkuZGVzY3JpYmUoIkRpc3BsYXkgbW9kZXMgdGhlIGFwcCBzdXBwb3J0cy4iKX0pO3Yoe21ldGhvZDpnKCJ1aS9ub3RpZmljYXRpb25zL2luaXRpYWxpemVkIikscGFyYW1zOnYoe30pLm9wdGlvbmFsKCl9KTt2KHtjc3A6RGwub3B0aW9uYWwoKS5kZXNjcmliZSgiQ29udGVudCBTZWN1cml0eSBQb2xpY3kgY29uZmlndXJhdGlvbiBmb3IgVUkgcmVzb3VyY2VzLiIpLHBlcm1pc3Npb25zOkJsLm9wdGlvbmFsKCkuZGVzY3JpYmUoIlNhbmRib3ggcGVybWlzc2lvbnMgcmVxdWVzdGVkIGJ5IHRoZSBVSSByZXNvdXJjZS4iKSxkb21haW46ZigpLm9wdGlvbmFsKCkuZGVzY3JpYmUoYERlZGljYXRlZCBvcmlnaW4gZm9yIHZpZXcgc2FuZGJveC4KClVzZWZ1bCB3aGVuIHZpZXdzIG5lZWQgc3RhYmxlLCBkZWRpY2F0ZWQgb3JpZ2lucyBmb3IgT0F1dGggY2FsbGJhY2tzLCBDT1JTIHBvbGljaWVzLCBvciBBUEkga2V5IGFsbG93bGlzdHMuCgoqKkhvc3QtZGVwZW5kZW50OioqIFRoZSBmb3JtYXQgYW5kIHZhbGlkYXRpb24gcnVsZXMgZm9yIHRoaXMgZmllbGQgYXJlIGRldGVybWluZWQgYnkgZWFjaCBob3N0LiBTZXJ2ZXJzIE1VU1QgY29uc3VsdCBob3N0LXNwZWNpZmljIGRvY3VtZW50YXRpb24gZm9yIHRoZSBleHBlY3RlZCBkb21haW4gZm9ybWF0LiBDb21tb24gcGF0dGVybnMgaW5jbHVkZToKLSBIYXNoLWJhc2VkIHN1YmRvbWFpbnMgKGUuZy4sIFxge2hhc2h9LmNsYXVkZW1jcGNvbnRlbnQuY29tXGApCi0gVVJMLWRlcml2ZWQgc3ViZG9tYWlucyAoZS5nLiwgXGB3d3ctZXhhbXBsZS1jb20ub2FpdXNlcmNvbnRlbnQuY29tXGApCgpJZiBvbWl0dGVkLCBob3N0IHVzZXMgZGVmYXVsdCBzYW5kYm94IG9yaWdpbiAodHlwaWNhbGx5IHBlci1jb252ZXJzYXRpb24pLmApLHByZWZlcnNCb3JkZXI6RygpLm9wdGlvbmFsKCkuZGVzY3JpYmUoYFZpc3VhbCBib3VuZGFyeSBwcmVmZXJlbmNlIC0gdHJ1ZSBpZiB2aWV3IHByZWZlcnMgYSB2aXNpYmxlIGJvcmRlci4KCkJvb2xlYW4gcmVxdWVzdGluZyB3aGV0aGVyIGEgdmlzaWJsZSBib3JkZXIgYW5kIGJhY2tncm91bmQgaXMgcHJvdmlkZWQgYnkgdGhlIGhvc3QuIFNwZWNpZnlpbmcgYW4gZXhwbGljaXQgdmFsdWUgZm9yIHRoaXMgaXMgcmVjb21tZW5kZWQgYmVjYXVzZSBob3N0cycgZGVmYXVsdHMgbWF5IHZhcnkuCgotIFxgdHJ1ZVxgOiByZXF1ZXN0IHZpc2libGUgYm9yZGVyICsgYmFja2dyb3VuZAotIFxgZmFsc2VcYDogcmVxdWVzdCBubyB2aXNpYmxlIGJvcmRlciArIGJhY2tncm91bmQKLSBvbWl0dGVkOiBob3N0IGRlY2lkZXMgYm9yZGVyYCl9KTt2KHttZXRob2Q6ZygidWkvcmVxdWVzdC1kaXNwbGF5LW1vZGUiKSxwYXJhbXM6dih7bW9kZTpNbi5kZXNjcmliZSgiVGhlIGRpc3BsYXkgbW9kZSBiZWluZyByZXF1ZXN0ZWQuIil9KX0pO3ZhciBHaz12KHttb2RlOk1uLmRlc2NyaWJlKCJUaGUgZGlzcGxheSBtb2RlIHRoYXQgd2FzIGFjdHVhbGx5IHNldC4gTWF5IGRpZmZlciBmcm9tIHJlcXVlc3RlZCBpZiBub3Qgc3VwcG9ydGVkLiIpfSkucGFzc3Rocm91Z2goKSxZaz1EKFtnKCJtb2RlbCIpLGcoImFwcCIpXSkuZGVzY3JpYmUoIlRvb2wgdmlzaWJpbGl0eSBzY29wZSAtIHdobyBjYW4gYWNjZXNzIHRoZSB0b29sLiIpO3Yoe3Jlc291cmNlVXJpOmYoKS5vcHRpb25hbCgpLHZpc2liaWxpdHk6TyhZaykub3B0aW9uYWwoKS5kZXNjcmliZShgV2hvIGNhbiBhY2Nlc3MgdGhpcyB0b29sLiBEZWZhdWx0OiBbIm1vZGVsIiwgImFwcCJdCi0gIm1vZGVsIjogVG9vbCB2aXNpYmxlIHRvIGFuZCBjYWxsYWJsZSBieSB0aGUgYWdlbnQKLSAiYXBwIjogVG9vbCBjYWxsYWJsZSBieSB0aGUgYXBwIGZyb20gdGhpcyBzZXJ2ZXIgb25seWApLGNzcDp5dCgpLm9wdGlvbmFsKCkscGVybWlzc2lvbnM6eXQoKS5vcHRpb25hbCgpfSk7dih7bWltZVR5cGVzOk8oZigpKS5vcHRpb25hbCgpLmRlc2NyaWJlKCdBcnJheSBvZiBzdXBwb3J0ZWQgTUlNRSB0eXBlcyBmb3IgVUkgcmVzb3VyY2VzLlxuTXVzdCBpbmNsdWRlIGAidGV4dC9odG1sO3Byb2ZpbGU9bWNwLWFwcCJgIGZvciBNQ1AgQXBwcyBzdXBwb3J0LicpfSk7dih7bWV0aG9kOmcoInVpL2Rvd25sb2FkLWZpbGUiKSxwYXJhbXM6dih7Y29udGVudHM6TyhEKFtPZixSZl0pKS5kZXNjcmliZSgiUmVzb3VyY2UgY29udGVudHMgdG8gZG93bmxvYWQg4oCUIGVtYmVkZGVkIChpbmxpbmUgZGF0YSkgb3IgbGlua2VkIChob3N0IGZldGNoZXMpLiBVc2VzIHN0YW5kYXJkIE1DUCByZXNvdXJjZSB0eXBlcy4iKX0pfSk7dih7bWV0aG9kOmcoInVpL21lc3NhZ2UiKSxwYXJhbXM6dih7cm9sZTpnKCJ1c2VyIikuZGVzY3JpYmUoJ01lc3NhZ2Ugcm9sZSwgY3VycmVudGx5IG9ubHkgInVzZXIiIGlzIHN1cHBvcnRlZC4nKSxjb250ZW50Ok8oSG8pLmRlc2NyaWJlKCJNZXNzYWdlIGNvbnRlbnQgYmxvY2tzICh0ZXh0LCBpbWFnZSwgZXRjLikuIil9KX0pO3Yoe21ldGhvZDpnKCJ1aS9ub3RpZmljYXRpb25zL3NhbmRib3gtcmVzb3VyY2UtcmVhZHkiKSxwYXJhbXM6dih7aHRtbDpmKCkuZGVzY3JpYmUoIkhUTUwgY29udGVudCB0byBsb2FkIGludG8gdGhlIGlubmVyIGlmcmFtZS4iKSxzYW5kYm94OmYoKS5vcHRpb25hbCgpLmRlc2NyaWJlKCJPcHRpb25hbCBvdmVycmlkZSBmb3IgdGhlIGlubmVyIGlmcmFtZSdzIHNhbmRib3ggYXR0cmlidXRlLiIpLGNzcDpEbC5vcHRpb25hbCgpLmRlc2NyaWJlKCJDU1AgY29uZmlndXJhdGlvbiBmcm9tIHJlc291cmNlIG1ldGFkYXRhLiIpLHBlcm1pc3Npb25zOkJsLm9wdGlvbmFsKCkuZGVzY3JpYmUoIlNhbmRib3ggcGVybWlzc2lvbnMgZnJvbSByZXNvdXJjZSBtZXRhZGF0YS4iKX0pfSk7dmFyIFFrPXYoe21ldGhvZDpnKCJ1aS9ub3RpZmljYXRpb25zL3Rvb2wtcmVzdWx0IikscGFyYW1zOkZyLmRlc2NyaWJlKCJTdGFuZGFyZCBNQ1AgdG9vbCBleGVjdXRpb24gcmVzdWx0LiIpfSksTGY9dih7dG9vbEluZm86dih7aWQ6cW8ub3B0aW9uYWwoKS5kZXNjcmliZSgiSlNPTi1SUEMgaWQgb2YgdGhlIHRvb2xzL2NhbGwgcmVxdWVzdC4iKSx0b29sOkxsLmRlc2NyaWJlKCJUb29sIGRlZmluaXRpb24gaW5jbHVkaW5nIG5hbWUsIGlucHV0U2NoZW1hLCBldGMuIil9KS5vcHRpb25hbCgpLmRlc2NyaWJlKCJNZXRhZGF0YSBvZiB0aGUgdG9vbCBjYWxsIHRoYXQgaW5zdGFudGlhdGVkIHRoaXMgQXBwLiIpLHRoZW1lOlprLm9wdGlvbmFsKCkuZGVzY3JpYmUoIkN1cnJlbnQgY29sb3IgdGhlbWUgcHJlZmVyZW5jZS4iKSxzdHlsZXM6V2sub3B0aW9uYWwoKS5kZXNjcmliZSgiU3R5bGUgY29uZmlndXJhdGlvbiBmb3IgdGhlbWluZyB0aGUgYXBwLiIpLGRpc3BsYXlNb2RlOk1uLm9wdGlvbmFsKCkuZGVzY3JpYmUoIkhvdyB0aGUgVUkgaXMgY3VycmVudGx5IGRpc3BsYXllZC4iKSxhdmFpbGFibGVEaXNwbGF5TW9kZXM6TyhNbikub3B0aW9uYWwoKS5kZXNjcmliZSgiRGlzcGxheSBtb2RlcyB0aGUgaG9zdCBzdXBwb3J0cy4iKSxjb250YWluZXJEaW1lbnNpb25zOkQoW3Yoe2hlaWdodDpNKCkuZGVzY3JpYmUoIkZpeGVkIGNvbnRhaW5lciBoZWlnaHQgaW4gcGl4ZWxzLiIpfSksdih7bWF4SGVpZ2h0OkQoW00oKSxGdCgpXSkub3B0aW9uYWwoKS5kZXNjcmliZSgiTWF4aW11bSBjb250YWluZXIgaGVpZ2h0IGluIHBpeGVscy4iKX0pXSkuYW5kKEQoW3Yoe3dpZHRoOk0oKS5kZXNjcmliZSgiRml4ZWQgY29udGFpbmVyIHdpZHRoIGluIHBpeGVscy4iKX0pLHYoe21heFdpZHRoOkQoW00oKSxGdCgpXSkub3B0aW9uYWwoKS5kZXNjcmliZSgiTWF4aW11bSBjb250YWluZXIgd2lkdGggaW4gcGl4ZWxzLiIpfSldKSkub3B0aW9uYWwoKS5kZXNjcmliZShgQ29udGFpbmVyIGRpbWVuc2lvbnMuIFJlcHJlc2VudHMgdGhlIGRpbWVuc2lvbnMgb2YgdGhlIGlmcmFtZSBvciBvdGhlcgpjb250YWluZXIgaG9sZGluZyB0aGUgYXBwLiBTcGVjaWZ5IGVpdGhlciB3aWR0aCBvciBtYXhXaWR0aCwgYW5kIGVpdGhlciBoZWlnaHQgb3IgbWF4SGVpZ2h0LmApLGxvY2FsZTpmKCkub3B0aW9uYWwoKS5kZXNjcmliZSgiVXNlcidzIGxhbmd1YWdlIGFuZCByZWdpb24gcHJlZmVyZW5jZSBpbiBCQ1AgNDcgZm9ybWF0LiIpLHRpbWVab25lOmYoKS5vcHRpb25hbCgpLmRlc2NyaWJlKCJVc2VyJ3MgdGltZXpvbmUgaW4gSUFOQSBmb3JtYXQuIiksdXNlckFnZW50OmYoKS5vcHRpb25hbCgpLmRlc2NyaWJlKCJIb3N0IGFwcGxpY2F0aW9uIGlkZW50aWZpZXIuIikscGxhdGZvcm06RChbZygid2ViIiksZygiZGVza3RvcCIpLGcoIm1vYmlsZSIpXSkub3B0aW9uYWwoKS5kZXNjcmliZSgiUGxhdGZvcm0gdHlwZSBmb3IgcmVzcG9uc2l2ZSBkZXNpZ24gZGVjaXNpb25zLiIpLGRldmljZUNhcGFiaWxpdGllczp2KHt0b3VjaDpHKCkub3B0aW9uYWwoKS5kZXNjcmliZSgiV2hldGhlciB0aGUgZGV2aWNlIHN1cHBvcnRzIHRvdWNoIGlucHV0LiIpLGhvdmVyOkcoKS5vcHRpb25hbCgpLmRlc2NyaWJlKCJXaGV0aGVyIHRoZSBkZXZpY2Ugc3VwcG9ydHMgaG92ZXIgaW50ZXJhY3Rpb25zLiIpfSkub3B0aW9uYWwoKS5kZXNjcmliZSgiRGV2aWNlIGlucHV0IGNhcGFiaWxpdGllcy4iKSxzYWZlQXJlYUluc2V0czp2KHt0b3A6TSgpLmRlc2NyaWJlKCJUb3Agc2FmZSBhcmVhIGluc2V0IGluIHBpeGVscy4iKSxyaWdodDpNKCkuZGVzY3JpYmUoIlJpZ2h0IHNhZmUgYXJlYSBpbnNldCBpbiBwaXhlbHMuIiksYm90dG9tOk0oKS5kZXNjcmliZSgiQm90dG9tIHNhZmUgYXJlYSBpbnNldCBpbiBwaXhlbHMuIiksbGVmdDpNKCkuZGVzY3JpYmUoIkxlZnQgc2FmZSBhcmVhIGluc2V0IGluIHBpeGVscy4iKX0pLm9wdGlvbmFsKCkuZGVzY3JpYmUoIk1vYmlsZSBzYWZlIGFyZWEgYm91bmRhcmllcyBpbiBwaXhlbHMuIil9KS5wYXNzdGhyb3VnaCgpLFhrPXYoe21ldGhvZDpnKCJ1aS9ub3RpZmljYXRpb25zL2hvc3QtY29udGV4dC1jaGFuZ2VkIikscGFyYW1zOkxmLmRlc2NyaWJlKCJQYXJ0aWFsIGNvbnRleHQgdXBkYXRlIGNvbnRhaW5pbmcgb25seSBjaGFuZ2VkIGZpZWxkcy4iKX0pO3Yoe21ldGhvZDpnKCJ1aS91cGRhdGUtbW9kZWwtY29udGV4dCIpLHBhcmFtczp2KHtjb250ZW50Ok8oSG8pLm9wdGlvbmFsKCkuZGVzY3JpYmUoIkNvbnRleHQgY29udGVudCBibG9ja3MgKHRleHQsIGltYWdlLCBldGMuKS4iKSxzdHJ1Y3R1cmVkQ29udGVudDpVKGYoKSxLKCkuZGVzY3JpYmUoIlN0cnVjdHVyZWQgY29udGVudCBmb3IgbWFjaGluZS1yZWFkYWJsZSBjb250ZXh0IGRhdGEuIikpLm9wdGlvbmFsKCkuZGVzY3JpYmUoIlN0cnVjdHVyZWQgY29udGVudCBmb3IgbWFjaGluZS1yZWFkYWJsZSBjb250ZXh0IGRhdGEuIil9KX0pO3Yoe21ldGhvZDpnKCJ1aS9pbml0aWFsaXplIikscGFyYW1zOnYoe2FwcEluZm86QnIuZGVzY3JpYmUoIkFwcCBpZGVudGlmaWNhdGlvbiAobmFtZSBhbmQgdmVyc2lvbikuIiksYXBwQ2FwYWJpbGl0aWVzOktrLmRlc2NyaWJlKCJGZWF0dXJlcyBhbmQgY2FwYWJpbGl0aWVzIHRoaXMgYXBwIHByb3ZpZGVzLiIpLHByb3RvY29sVmVyc2lvbjpmKCkuZGVzY3JpYmUoIlByb3RvY29sIHZlcnNpb24gdGhpcyBhcHAgc3VwcG9ydHMuIil9KX0pO3ZhciBlXz12KHtwcm90b2NvbFZlcnNpb246ZigpLmRlc2NyaWJlKCdOZWdvdGlhdGVkIHByb3RvY29sIHZlcnNpb24gc3RyaW5nIChlLmcuLCAiMjAyNS0xMS0yMSIpLicpLGhvc3RJbmZvOkJyLmRlc2NyaWJlKCJIb3N0IGFwcGxpY2F0aW9uIGlkZW50aWZpY2F0aW9uIGFuZCB2ZXJzaW9uLiIpLGhvc3RDYXBhYmlsaXRpZXM6SmsuZGVzY3JpYmUoIkZlYXR1cmVzIGFuZCBjYXBhYmlsaXRpZXMgcHJvdmlkZWQgYnkgdGhlIGhvc3QuIiksaG9zdENvbnRleHQ6TGYuZGVzY3JpYmUoIlJpY2ggY29udGV4dCBhYm91dCB0aGUgaG9zdCBlbnZpcm9ubWVudC4iKX0pLnBhc3N0aHJvdWdoKCksdF89e3RhcmdldDoiZHJhZnQtMjAyMC0xMiJ9O2FzeW5jIGZ1bmN0aW9uIEt1KGUsdCl7bGV0IG49ZVsifnN0YW5kYXJkIl07aWYobi5qc29uU2NoZW1hKXJldHVybiBuLmpzb25TY2hlbWFbdF0odF8pO2lmKG4udmVuZG9yPT09InpvZCIpe2xldHt6Om99PWF3YWl0IEFnKCgpPT5Qcm9taXNlLnJlc29sdmUoKS50aGVuKCgpPT5VJCksdm9pZCAwLGltcG9ydC5tZXRhLnVybCk7cmV0dXJuIG8udG9KU09OU2NoZW1hKGUse2lvOnR9KX10aHJvdyBFcnJvcihgU2NoZW1hICh2ZW5kb3I6ICR7bi52ZW5kb3J9KSBkb2VzIG5vdCBpbXBsZW1lbnQgU3RhbmRhcmQgSlNPTiBTY2hlbWEgKH5zdGFuZGFyZC5qc29uU2NoZW1hKS4gVXNlIGEgbGlicmFyeSB0aGF0IGRvZXMgKHpvZCB2NCwgQXJrVHlwZSwgVmFsaWJvdCkgb3Igd3JhcCB5b3VyIHNjaGVtYSBhY2NvcmRpbmdseS5gKX1hc3luYyBmdW5jdGlvbiBHdShlLHQsbj0iIil7bGV0IG89YXdhaXQgZVsifnN0YW5kYXJkIl0udmFsaWRhdGUodCk7aWYoby5pc3N1ZXMpe2xldCBzPW8uaXNzdWVzLm1hcChyPT57bGV0IGE9ci5wYXRoPy5tYXAoaT0+dHlwZW9mIGk9PSJvYmplY3QiP2kua2V5OmkpLmpvaW4oIi4iKTtyZXR1cm4gYT9gJHthfTogJHtyLm1lc3NhZ2V9YDpyLm1lc3NhZ2V9KS5qb2luKCI7ICIpO3Rocm93IEVycm9yKG4rcyl9cmV0dXJuIG8udmFsdWV9ZnVuY3Rpb24gbl8oZSl7bGV0IHQ9ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O3Quc2V0QXR0cmlidXRlKCJkYXRhLXRoZW1lIixlKSx0LnN0eWxlLmNvbG9yU2NoZW1lPWV9ZnVuY3Rpb24gb18oZSx0PWRvY3VtZW50LmRvY3VtZW50RWxlbWVudCl7Zm9yKGxldFtuLG9db2YgT2JqZWN0LmVudHJpZXMoZSkpbyE9PXZvaWQgMCYmdC5zdHlsZS5zZXRQcm9wZXJ0eShuLG8pfWZ1bmN0aW9uIHNfKGUpe2lmKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJfX21jcC1ob3N0LWZvbnRzIikpcmV0dXJuO2xldCB0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInN0eWxlIik7dC5pZD0iX19tY3AtaG9zdC1mb250cyIsdC50ZXh0Q29udGVudD1lLGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQodCl9Y2xhc3MgVWwgZXh0ZW5kcyBFa3tfYXBwSW5mbztfY2FwYWJpbGl0aWVzO29wdGlvbnM7X2hvc3RDYXBhYmlsaXRpZXM7X2hvc3RJbmZvO19ob3N0Q29udGV4dDtfcmVnaXN0ZXJlZFRvb2xzPXt9O19pbml0aWFsaXplZFNlbnQ9ITE7X2Fzc2VydEluaXRpYWxpemVkKHQpe2lmKHRoaXMuX2luaXRpYWxpemVkU2VudClyZXR1cm47bGV0IG49YFtleHQtYXBwc10gQXBwLiR7dH0oKSBjYWxsZWQgYmVmb3JlIGNvbm5lY3QoKSBjb21wbGV0ZWQgdGhlIHVpL2luaXRpYWxpemUgaGFuZHNoYWtlLiBBd2FpdCBhcHAuY29ubmVjdCgpIGJlZm9yZSBjYWxsaW5nIHRoaXMgbWV0aG9kLCBvciBtb3ZlIGRhdGEgbG9hZGluZyB0byBhbiBvbnRvb2xyZXN1bHQgaGFuZGxlci5gO2lmKHRoaXMub3B0aW9ucz8uc3RyaWN0KXRocm93IEVycm9yKG4pO2NvbnNvbGUud2FybihgJHtufS4gVGhpcyB3aWxsIHRocm93IGluIGEgZnV0dXJlIHJlbGVhc2UuYCl9ZXZlbnRTY2hlbWFzPXt0b29saW5wdXQ6QmssdG9vbGlucHV0cGFydGlhbDpVayx0b29scmVzdWx0OlFrLHRvb2xjYW5jZWxsZWQ6RmssaG9zdGNvbnRleHRjaGFuZ2VkOlhrfTtzdGF0aWMgT05FX1NIT1RfRVZFTlRTPW5ldyBTZXQoWyJ0b29saW5wdXQiLCJ0b29saW5wdXRwYXJ0aWFsIiwidG9vbHJlc3VsdCIsInRvb2xjYW5jZWxsZWQiXSk7X2V2ZXJIYWRMaXN0ZW5lcj1uZXcgU2V0O19hc3NlcnRIYW5kbGVyVGltaW5nKHQpe2lmKCFVbC5PTkVfU0hPVF9FVkVOVFMuaGFzKHQpfHx0aGlzLl9ldmVySGFkTGlzdGVuZXIuaGFzKHQpfHwodGhpcy5fZXZlckhhZExpc3RlbmVyLmFkZCh0KSwhdGhpcy5faW5pdGlhbGl6ZWRTZW50KSlyZXR1cm47bGV0IG49YFtleHQtYXBwc10gIiR7U3RyaW5nKHQpfSIgaGFuZGxlciByZWdpc3RlcmVkIGFmdGVyIGNvbm5lY3QoKSBjb21wbGV0ZWQgdGhlIHVpL2luaXRpYWxpemUgaGFuZHNoYWtlLiBUaGUgaG9zdCBtYXkgaGF2ZSBhbHJlYWR5IHNlbnQgdGhpcyBub3RpZmljYXRpb24uIFJlZ2lzdGVyIGhhbmRsZXJzIGJlZm9yZSBjYWxsaW5nIGFwcC5jb25uZWN0KCkuYDtpZih0aGlzLm9wdGlvbnM/LnN0cmljdCl0aHJvdyBFcnJvcihuKTtjb25zb2xlLndhcm4obil9c2V0RXZlbnRIYW5kbGVyKHQsbil7biYmdGhpcy5fYXNzZXJ0SGFuZGxlclRpbWluZyh0KSxzdXBlci5zZXRFdmVudEhhbmRsZXIodCxuKX1hZGRFdmVudExpc3RlbmVyKHQsbil7dGhpcy5fYXNzZXJ0SGFuZGxlclRpbWluZyh0KSxzdXBlci5hZGRFdmVudExpc3RlbmVyKHQsbil9b25FdmVudERpc3BhdGNoKHQsbil7dD09PSJob3N0Y29udGV4dGNoYW5nZWQiJiYodGhpcy5faG9zdENvbnRleHQ9ey4uLnRoaXMuX2hvc3RDb250ZXh0LC4uLm59KX1jb25zdHJ1Y3Rvcih0LG49e30sbz17YXV0b1Jlc2l6ZTohMH0pe3N1cGVyKG8pLHRoaXMuX2FwcEluZm89dCx0aGlzLl9jYXBhYmlsaXRpZXM9bix0aGlzLm9wdGlvbnM9byxvLmFsbG93VW5zYWZlRXZhbHx8ZGUoe2ppdGxlc3M6ITB9KSx0aGlzLnNldFJlcXVlc3RIYW5kbGVyKFVyLHM9Pihjb25zb2xlLmxvZygiUmVjZWl2ZWQgcGluZzoiLHMucGFyYW1zKSx7fSkpLHRoaXMuc2V0RXZlbnRIYW5kbGVyKCJob3N0Y29udGV4dGNoYW5nZWQiLHZvaWQgMCl9cmVnaXN0ZXJDYXBhYmlsaXRpZXModCl7aWYodGhpcy50cmFuc3BvcnQpdGhyb3cgRXJyb3IoIkNhbm5vdCByZWdpc3RlciBjYXBhYmlsaXRpZXMgYWZ0ZXIgdHJhbnNwb3J0IGlzIGVzdGFibGlzaGVkIik7dGhpcy5fY2FwYWJpbGl0aWVzPVBrKHRoaXMuX2NhcGFiaWxpdGllcyx0KX1yZWdpc3RlclRvb2wodCxuLG8pe2lmKHRoaXMuX3JlZ2lzdGVyZWRUb29sc1t0XSl0aHJvdyBFcnJvcihgVG9vbCAke3R9IGlzIGFscmVhZHkgcmVnaXN0ZXJlZGApO2xldCBzPXRoaXMscj0oKT0+e3MuX2luaXRpYWxpemVkU2VudCYmcy5fY2FwYWJpbGl0aWVzLnRvb2xzPy5saXN0Q2hhbmdlZCYmcy5zZW5kVG9vbExpc3RDaGFuZ2VkKCl9LGE9bi5pbnB1dFNjaGVtYSE9PXZvaWQgMCxpPXt0aXRsZTpuLnRpdGxlLGRlc2NyaXB0aW9uOm4uZGVzY3JpcHRpb24saW5wdXRTY2hlbWE6bi5pbnB1dFNjaGVtYSxvdXRwdXRTY2hlbWE6bi5vdXRwdXRTY2hlbWEsYW5ub3RhdGlvbnM6bi5hbm5vdGF0aW9ucyxfbWV0YTpuLl9tZXRhLGVuYWJsZWQ6ITAsZW5hYmxlKCl7dGhpcy5lbmFibGVkPSEwLHIoKX0sZGlzYWJsZSgpe3RoaXMuZW5hYmxlZD0hMSxyKCl9LHVwZGF0ZShkKXtPYmplY3QuYXNzaWduKHRoaXMsZCkscigpfSxyZW1vdmUoKXtzLl9yZWdpc3RlcmVkVG9vbHNbdF09PT1pJiYoZGVsZXRlIHMuX3JlZ2lzdGVyZWRUb29sc1t0XSxyKCkpfSxoYW5kbGVyOmFzeW5jKGQsdSk9PntpZighaS5lbmFibGVkKXRocm93IEVycm9yKGBUb29sICR7dH0gaXMgZGlzYWJsZWRgKTtsZXQgcDtpZihhKXtsZXQgaD1pLmlucHV0U2NoZW1hLGI9aD9hd2FpdCBHdShoLGQ/P3t9LGBJbnZhbGlkIGlucHV0IGZvciB0b29sICR7dH06IGApOmQ/P3t9O3A9YXdhaXQgbyhiLHUpfWVsc2UgcD1hd2FpdCBvKHUpO3JldHVybiBpLm91dHB1dFNjaGVtYSYmIXAuaXNFcnJvciYmKHAuc3RydWN0dXJlZENvbnRlbnQ9YXdhaXQgR3UoaS5vdXRwdXRTY2hlbWEscC5zdHJ1Y3R1cmVkQ29udGVudCxgSW52YWxpZCBvdXRwdXQgZm9yIHRvb2wgJHt0fTogYCkpLHB9fTtyZXR1cm4gdGhpcy5fcmVnaXN0ZXJlZFRvb2xzW3RdPWksIXRoaXMuX2NhcGFiaWxpdGllcy50b29scyYmIXRoaXMudHJhbnNwb3J0JiZ0aGlzLnJlZ2lzdGVyQ2FwYWJpbGl0aWVzKHt0b29sczp7bGlzdENoYW5nZWQ6ITB9fSksdGhpcy5lbnN1cmVUb29sSGFuZGxlcnNJbml0aWFsaXplZCgpLHIoKSxpfV90b29sSGFuZGxlcnNJbml0aWFsaXplZD0hMTtlbnN1cmVUb29sSGFuZGxlcnNJbml0aWFsaXplZCgpe3RoaXMuX3Rvb2xIYW5kbGVyc0luaXRpYWxpemVkfHwodGhpcy5fdG9vbEhhbmRsZXJzSW5pdGlhbGl6ZWQ9ITAsdGhpcy5vbmNhbGx0b29sPWFzeW5jKHQsbik9PntsZXQgbz10aGlzLl9yZWdpc3RlcmVkVG9vbHNbdC5uYW1lXTtpZighbyl0aHJvdyBFcnJvcihgVG9vbCAke3QubmFtZX0gbm90IGZvdW5kYCk7cmV0dXJuIG8uaGFuZGxlcih0LmFyZ3VtZW50cyxuKX0sdGhpcy5vbmxpc3R0b29scz1hc3luYyh0LG4pPT4oe3Rvb2xzOmF3YWl0IFByb21pc2UuYWxsKE9iamVjdC5lbnRyaWVzKHRoaXMuX3JlZ2lzdGVyZWRUb29scykuZmlsdGVyKChbbyxzXSk9PnMuZW5hYmxlZCkubWFwKGFzeW5jKFtvLHNdKT0+e2xldCByPXtuYW1lOm8sdGl0bGU6cy50aXRsZSxkZXNjcmlwdGlvbjpzLmRlc2NyaXB0aW9uLGlucHV0U2NoZW1hOnMuaW5wdXRTY2hlbWE/YXdhaXQgS3Uocy5pbnB1dFNjaGVtYSwiaW5wdXQiKTp7dHlwZToib2JqZWN0Iixwcm9wZXJ0aWVzOnt9fX07cmV0dXJuIHMub3V0cHV0U2NoZW1hJiYoci5vdXRwdXRTY2hlbWE9YXdhaXQgS3Uocy5vdXRwdXRTY2hlbWEsIm91dHB1dCIpKSxzLmFubm90YXRpb25zJiYoci5hbm5vdGF0aW9ucz1zLmFubm90YXRpb25zKSxzLl9tZXRhJiYoci5fbWV0YT1zLl9tZXRhKSxyfSkpfSkpfWFzeW5jIHNlbmRUb29sTGlzdENoYW5nZWQodD17fSl7dGhpcy5fYXNzZXJ0SW5pdGlhbGl6ZWQoInNlbmRUb29sTGlzdENoYW5nZWQiKSxhd2FpdCB0aGlzLm5vdGlmaWNhdGlvbih7bWV0aG9kOiJub3RpZmljYXRpb25zL3Rvb2xzL2xpc3RfY2hhbmdlZCIscGFyYW1zOnR9KX1nZXRIb3N0Q2FwYWJpbGl0aWVzKCl7cmV0dXJuIHRoaXMuX2hvc3RDYXBhYmlsaXRpZXN9Z2V0SG9zdFZlcnNpb24oKXtyZXR1cm4gdGhpcy5faG9zdEluZm99Z2V0SG9zdENvbnRleHQoKXtyZXR1cm4gdGhpcy5faG9zdENvbnRleHR9Z2V0IG9udG9vbGlucHV0KCl7cmV0dXJuIHRoaXMuZ2V0RXZlbnRIYW5kbGVyKCJ0b29saW5wdXQiKX1zZXQgb250b29saW5wdXQodCl7dGhpcy5zZXRFdmVudEhhbmRsZXIoInRvb2xpbnB1dCIsdCl9Z2V0IG9udG9vbGlucHV0cGFydGlhbCgpe3JldHVybiB0aGlzLmdldEV2ZW50SGFuZGxlcigidG9vbGlucHV0cGFydGlhbCIpfXNldCBvbnRvb2xpbnB1dHBhcnRpYWwodCl7dGhpcy5zZXRFdmVudEhhbmRsZXIoInRvb2xpbnB1dHBhcnRpYWwiLHQpfWdldCBvbnRvb2xyZXN1bHQoKXtyZXR1cm4gdGhpcy5nZXRFdmVudEhhbmRsZXIoInRvb2xyZXN1bHQiKX1zZXQgb250b29scmVzdWx0KHQpe3RoaXMuc2V0RXZlbnRIYW5kbGVyKCJ0b29scmVzdWx0Iix0KX1nZXQgb250b29sY2FuY2VsbGVkKCl7cmV0dXJuIHRoaXMuZ2V0RXZlbnRIYW5kbGVyKCJ0b29sY2FuY2VsbGVkIil9c2V0IG9udG9vbGNhbmNlbGxlZCh0KXt0aGlzLnNldEV2ZW50SGFuZGxlcigidG9vbGNhbmNlbGxlZCIsdCl9Z2V0IG9uaG9zdGNvbnRleHRjaGFuZ2VkKCl7cmV0dXJuIHRoaXMuZ2V0RXZlbnRIYW5kbGVyKCJob3N0Y29udGV4dGNoYW5nZWQiKX1zZXQgb25ob3N0Y29udGV4dGNoYW5nZWQodCl7dGhpcy5zZXRFdmVudEhhbmRsZXIoImhvc3Rjb250ZXh0Y2hhbmdlZCIsdCl9X29udGVhcmRvd247Z2V0IG9udGVhcmRvd24oKXtyZXR1cm4gdGhpcy5fb250ZWFyZG93bn1zZXQgb250ZWFyZG93bih0KXt0aGlzLndhcm5JZlJlcXVlc3RIYW5kbGVyUmVwbGFjZWQoIm9udGVhcmRvd24iLHRoaXMuX29udGVhcmRvd24sdCksdGhpcy5fb250ZWFyZG93bj10LHRoaXMucmVwbGFjZVJlcXVlc3RIYW5kbGVyKFZrLChuLG8pPT57aWYoIXRoaXMuX29udGVhcmRvd24pdGhyb3cgRXJyb3IoIk5vIG9udGVhcmRvd24gaGFuZGxlciBzZXQiKTtyZXR1cm4gdGhpcy5fb250ZWFyZG93bihuLnBhcmFtcyxvKX0pfV9vbmNhbGx0b29sO2dldCBvbmNhbGx0b29sKCl7cmV0dXJuIHRoaXMuX29uY2FsbHRvb2x9c2V0IG9uY2FsbHRvb2wodCl7dGhpcy53YXJuSWZSZXF1ZXN0SGFuZGxlclJlcGxhY2VkKCJvbmNhbGx0b29sIix0aGlzLl9vbmNhbGx0b29sLHQpLHRoaXMuX29uY2FsbHRvb2w9dCx0aGlzLnJlcGxhY2VSZXF1ZXN0SGFuZGxlcihaZiwobixvKT0+e2lmKCF0aGlzLl9vbmNhbGx0b29sKXRocm93IEVycm9yKCJObyBvbmNhbGx0b29sIGhhbmRsZXIgc2V0Iik7cmV0dXJuIHRoaXMuX29uY2FsbHRvb2wobi5wYXJhbXMsbyl9KX1fb25saXN0dG9vbHM7Z2V0IG9ubGlzdHRvb2xzKCl7cmV0dXJuIHRoaXMuX29ubGlzdHRvb2xzfXNldCBvbmxpc3R0b29scyh0KXt0aGlzLndhcm5JZlJlcXVlc3RIYW5kbGVyUmVwbGFjZWQoIm9ubGlzdHRvb2xzIix0aGlzLl9vbmxpc3R0b29scyx0KSx0aGlzLl9vbmxpc3R0b29scz10LHRoaXMucmVwbGFjZVJlcXVlc3RIYW5kbGVyKE5mLChuLG8pPT57aWYoIXRoaXMuX29ubGlzdHRvb2xzKXRocm93IEVycm9yKCJObyBvbmxpc3R0b29scyBoYW5kbGVyIHNldCIpO3JldHVybiB0aGlzLl9vbmxpc3R0b29scyhuLnBhcmFtcyxvKX0pfWFzc2VydENhcGFiaWxpdHlGb3JNZXRob2QodCl7c3dpdGNoKHQpe2Nhc2Uic2FtcGxpbmcvY3JlYXRlTWVzc2FnZSI6aWYoIXRoaXMuX2hvc3RDYXBhYmlsaXRpZXM/LnNhbXBsaW5nKXRocm93IEVycm9yKGBIb3N0IGRvZXMgbm90IHN1cHBvcnQgc2FtcGxpbmcgKHJlcXVpcmVkIGZvciAke3R9KWApO2JyZWFrfX1hc3NlcnRSZXF1ZXN0SGFuZGxlckNhcGFiaWxpdHkodCl7c3dpdGNoKHQpe2Nhc2UidG9vbHMvY2FsbCI6Y2FzZSJ0b29scy9saXN0IjppZighdGhpcy5fY2FwYWJpbGl0aWVzLnRvb2xzKXRocm93IEVycm9yKGBDbGllbnQgZG9lcyBub3Qgc3VwcG9ydCB0b29sIGNhcGFiaWxpdHkgKHJlcXVpcmVkIGZvciAke3R9KWApO3JldHVybjtjYXNlInBpbmciOmNhc2UidWkvcmVzb3VyY2UtdGVhcmRvd24iOnJldHVybjtkZWZhdWx0OnRocm93IEVycm9yKGBObyBoYW5kbGVyIGZvciBtZXRob2QgJHt0fSByZWdpc3RlcmVkYCl9fWFzc2VydE5vdGlmaWNhdGlvbkNhcGFiaWxpdHkodCl7fWFzc2VydFRhc2tDYXBhYmlsaXR5KHQpe3Rocm93IEVycm9yKCJUYXNrcyBhcmUgbm90IHN1cHBvcnRlZCBpbiBNQ1AgQXBwcyIpfWFzc2VydFRhc2tIYW5kbGVyQ2FwYWJpbGl0eSh0KXt0aHJvdyBFcnJvcigiVGFzayBoYW5kbGVycyBhcmUgbm90IHN1cHBvcnRlZCBpbiBNQ1AgQXBwcyIpfWFzeW5jIGNhbGxTZXJ2ZXJUb29sKHQsbil7aWYodGhpcy5fYXNzZXJ0SW5pdGlhbGl6ZWQoImNhbGxTZXJ2ZXJUb29sIiksdHlwZW9mIHQ9PSJzdHJpbmciKXRocm93IEVycm9yKGBjYWxsU2VydmVyVG9vbCgpIGV4cGVjdHMgYW4gb2JqZWN0IGFzIGl0cyBmaXJzdCBhcmd1bWVudCwgYnV0IHJlY2VpdmVkIGEgc3RyaW5nICgiJHt0fSIpLiBEaWQgeW91IG1lYW46IGNhbGxTZXJ2ZXJUb29sKHsgbmFtZTogIiR7dH0iLCBhcmd1bWVudHM6IHsgLi4uIH0gfSk/YCk7cmV0dXJuIGF3YWl0IHRoaXMucmVxdWVzdCh7bWV0aG9kOiJ0b29scy9jYWxsIixwYXJhbXM6dH0sRnIse29ucHJvZ3Jlc3M6KCk9Pnt9LHJlc2V0VGltZW91dE9uUHJvZ3Jlc3M6ITAsLi4ubn0pfWFzeW5jIHJlYWRTZXJ2ZXJSZXNvdXJjZSh0LG4pe3JldHVybiB0aGlzLl9hc3NlcnRJbml0aWFsaXplZCgicmVhZFNlcnZlclJlc291cmNlIiksYXdhaXQgdGhpcy5yZXF1ZXN0KHttZXRob2Q6InJlc291cmNlcy9yZWFkIixwYXJhbXM6dH0sRWYsbil9YXN5bmMgbGlzdFNlcnZlclJlc291cmNlcyh0LG4pe3JldHVybiB0aGlzLl9hc3NlcnRJbml0aWFsaXplZCgibGlzdFNlcnZlclJlc291cmNlcyIpLGF3YWl0IHRoaXMucmVxdWVzdCh7bWV0aG9kOiJyZXNvdXJjZXMvbGlzdCIscGFyYW1zOnR9LFBmLG4pfWFzeW5jIGNyZWF0ZVNhbXBsaW5nTWVzc2FnZSh0LG4pe3RoaXMuX2Fzc2VydEluaXRpYWxpemVkKCJjcmVhdGVTYW1wbGluZ01lc3NhZ2UiKTtsZXQgbz10LnRvb2xzP3FmOmpmO3JldHVybiBhd2FpdCB0aGlzLnJlcXVlc3Qoe21ldGhvZDoic2FtcGxpbmcvY3JlYXRlTWVzc2FnZSIscGFyYW1zOnR9LG8sbil9c2VuZE1lc3NhZ2UodCxuKXtyZXR1cm4gdGhpcy5fYXNzZXJ0SW5pdGlhbGl6ZWQoInNlbmRNZXNzYWdlIiksdGhpcy5yZXF1ZXN0KHttZXRob2Q6InVpL21lc3NhZ2UiLHBhcmFtczp0fSxEayxuKX1zZW5kTG9nKHQpe3JldHVybiB0aGlzLm5vdGlmaWNhdGlvbih7bWV0aG9kOiJub3RpZmljYXRpb25zL21lc3NhZ2UiLHBhcmFtczp0fSl9dXBkYXRlTW9kZWxDb250ZXh0KHQsbil7cmV0dXJuIHRoaXMuX2Fzc2VydEluaXRpYWxpemVkKCJ1cGRhdGVNb2RlbENvbnRleHQiKSx0aGlzLnJlcXVlc3Qoe21ldGhvZDoidWkvdXBkYXRlLW1vZGVsLWNvbnRleHQiLHBhcmFtczp0fSxUbCxuKX1vcGVuTGluayh0LG4pe3JldHVybiB0aGlzLl9hc3NlcnRJbml0aWFsaXplZCgib3BlbkxpbmsiKSx0aGlzLnJlcXVlc3Qoe21ldGhvZDoidWkvb3Blbi1saW5rIixwYXJhbXM6dH0scWssbil9c2VuZE9wZW5MaW5rPXRoaXMub3Blbkxpbms7ZG93bmxvYWRGaWxlKHQsbil7cmV0dXJuIHRoaXMuX2Fzc2VydEluaXRpYWxpemVkKCJkb3dubG9hZEZpbGUiKSx0aGlzLnJlcXVlc3Qoe21ldGhvZDoidWkvZG93bmxvYWQtZmlsZSIscGFyYW1zOnR9LExrLG4pfXJlcXVlc3RUZWFyZG93bih0PXt9KXtyZXR1cm4gdGhpcy5ub3RpZmljYXRpb24oe21ldGhvZDoidWkvbm90aWZpY2F0aW9ucy9yZXF1ZXN0LXRlYXJkb3duIixwYXJhbXM6dH0pfXJlcXVlc3REaXNwbGF5TW9kZSh0LG4pe3JldHVybiB0aGlzLl9hc3NlcnRJbml0aWFsaXplZCgicmVxdWVzdERpc3BsYXlNb2RlIiksdGhpcy5yZXF1ZXN0KHttZXRob2Q6InVpL3JlcXVlc3QtZGlzcGxheS1tb2RlIixwYXJhbXM6dH0sR2ssbil9c2VuZFNpemVDaGFuZ2VkKHQpe3JldHVybiB0aGlzLm5vdGlmaWNhdGlvbih7bWV0aG9kOiJ1aS9ub3RpZmljYXRpb25zL3NpemUtY2hhbmdlZCIscGFyYW1zOnR9KX1zZXR1cFNpemVDaGFuZ2VkTm90aWZpY2F0aW9ucygpe2xldCB0PSExLG49MCxvPTAscz0oKT0+e3R8fCh0PSEwLHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKT0+e3Q9ITE7bGV0IGE9ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LGk9YS5zdHlsZS5oZWlnaHQ7YS5zdHlsZS5oZWlnaHQ9Im1heC1jb250ZW50IjtsZXQgZD1NYXRoLmNlaWwoYS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5oZWlnaHQpO2Euc3R5bGUuaGVpZ2h0PWk7bGV0IHU9TWF0aC5jZWlsKHdpbmRvdy5pbm5lcldpZHRoKTsodSE9PW58fGQhPT1vKSYmKG49dSxvPWQsdGhpcy5zZW5kU2l6ZUNoYW5nZWQoe3dpZHRoOnUsaGVpZ2h0OmR9KSl9KSl9O3MoKTtsZXQgcj1uZXcgUmVzaXplT2JzZXJ2ZXIocyk7cmV0dXJuIHIub2JzZXJ2ZShkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpLHIub2JzZXJ2ZShkb2N1bWVudC5ib2R5KSwoKT0+ci5kaXNjb25uZWN0KCl9YXN5bmMgY29ubmVjdCh0PW5ldyBOayh3aW5kb3cucGFyZW50LHdpbmRvdy5wYXJlbnQpLG4pe2lmKHRoaXMudHJhbnNwb3J0KXRocm93IEVycm9yKCJBcHAgaXMgYWxyZWFkeSBjb25uZWN0ZWQuIENhbGwgY2xvc2UoKSBiZWZvcmUgY29ubmVjdGluZyBhZ2Fpbi4iKTt0aGlzLl9pbml0aWFsaXplZFNlbnQ9ITEsYXdhaXQgc3VwZXIuY29ubmVjdCh0KTt0cnl7bGV0IG89YXdhaXQgdGhpcy5yZXF1ZXN0KHttZXRob2Q6InVpL2luaXRpYWxpemUiLHBhcmFtczp7YXBwQ2FwYWJpbGl0aWVzOnRoaXMuX2NhcGFiaWxpdGllcyxhcHBJbmZvOnRoaXMuX2FwcEluZm8scHJvdG9jb2xWZXJzaW9uOk9rfX0sZV8sbik7aWYobz09PXZvaWQgMCl0aHJvdyBFcnJvcihgU2VydmVyIHNlbnQgaW52YWxpZCBpbml0aWFsaXplIHJlc3VsdDogJHtvfWApO3RoaXMuX2hvc3RDYXBhYmlsaXRpZXM9by5ob3N0Q2FwYWJpbGl0aWVzLHRoaXMuX2hvc3RJbmZvPW8uaG9zdEluZm8sdGhpcy5faG9zdENvbnRleHQ9by5ob3N0Q29udGV4dCxhd2FpdCB0aGlzLm5vdGlmaWNhdGlvbih7bWV0aG9kOiJ1aS9ub3RpZmljYXRpb25zL2luaXRpYWxpemVkIn0pLHRoaXMuX2luaXRpYWxpemVkU2VudD0hMCx0aGlzLm9wdGlvbnM/LmF1dG9SZXNpemUmJnRoaXMuc2V0dXBTaXplQ2hhbmdlZE5vdGlmaWNhdGlvbnMoKX1jYXRjaChvKXt0aHJvdyB0aGlzLmNsb3NlKCksb319fWxldCBZdT0iIjtjb25zdCBEZj0oZSx0LG49ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KT0+e2lmKCFlKXJldHVybjsoZS50aGVtZT09PSJsaWdodCJ8fGUudGhlbWU9PT0iZGFyayIpJiZ0LmFwcGx5RG9jdW1lbnRUaGVtZShlLnRoZW1lKTtjb25zdCBvPWUuc3R5bGVzPy52YXJpYWJsZXM7byYmdHlwZW9mIG89PSJvYmplY3QiJiZ0LmFwcGx5SG9zdFN0eWxlVmFyaWFibGVzKG8pO2NvbnN0IHM9ZS5zdHlsZXM/LmNzcz8uZm9udHM7dHlwZW9mIHM9PSJzdHJpbmciJiZzJiZzIT09WXUmJih0LmFwcGx5SG9zdEZvbnRzKHMpLFl1PXMpO2NvbnN0IHI9ZS5zYWZlQXJlYUluc2V0cztpZihyKWZvcihjb25zdCBhIG9mWyJ0b3AiLCJyaWdodCIsImJvdHRvbSIsImxlZnQiXSl7Y29uc3QgaT1OdW1iZXIoclthXT8/MCk7bi5zdHlsZS5zZXRQcm9wZXJ0eShgLS1pbnNldC0ke2F9YCxgJHtOdW1iZXIuaXNGaW5pdGUoaSkmJmk+MD9pOjB9cHhgKX19LEJmPWU9PmUucmVwbGFjZSgvWyY8PiInXS9nLHQ9Pih7IiYiOiImYW1wOyIsIjwiOiImbHQ7IiwiPiI6IiZndDsiLCciJzoiJnF1b3Q7IiwiJyI6IiYjMzk7In0pW3RdKSxyXz0nPHN2ZyB2aWV3Qm94PSIwIDAgMTYgMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBkPSJNMTAgMy41IDUuNSA4IDEwIDEyLjUiIGZpbGw9Im5vbmUiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjEuOCIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+PC9zdmc+JyxpXz0nPHN2ZyB2aWV3Qm94PSIwIDAgMTYgMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBkPSJNNiAzLjUgMTAuNSA4IDYgMTIuNSIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS13aWR0aD0iMS44IiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz48L3N2Zz4nLGFfPSc8c3ZnIHZpZXdCb3g9IjAgMCAxNiAxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGQ9Ik0zLjUgNiA4IDEwLjUgMTIuNSA2IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIxLjgiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPjwvc3ZnPicsY189Jzxzdmcgdmlld0JveD0iMCAwIDE2IDE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZD0iTTkuNSAyLjVoNHY0TTYuNSAxMy41aC00di00TTEzLjUgMi41IDkgN00yLjUgMTMuNSA3IDkiIGZpbGw9Im5vbmUiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjEuNiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+PC9zdmc+JyxsXz1lPT57Y29uc3QgdD1NYXRoLm1heCgwLE1hdGguZmxvb3IoZS50b3RhbCkpLG49TWF0aC5tYXgoMCxNYXRoLmZsb29yKGUuZnJvbSkpLG89TWF0aC5tYXgoMCxNYXRoLmZsb29yKGUuY291bnQpKSxzPW4+MCxyPW4rbzx0O2lmKCFzJiYhcilyZXR1cm4iIjtjb25zdCBhPWUubm91bj9gICR7QmYoZS5ub3VuKX1gOiIiLGk9bz9gJHtuKzF94oCTJHtuK299IG9mICR7dH1gOmAwIG9mICR7dH1gO3JldHVybmA8bmF2IGNsYXNzPSJjay1wYWdlciIgYXJpYS1sYWJlbD0iUGFnZXMiPjxidXR0b24gY2xhc3M9ImNrLXBhZ2VyLWJ0biIgdHlwZT0iYnV0dG9uIiAke2UucHJldn0ke3M/IiI6IiBkaXNhYmxlZCJ9IGFyaWEtbGFiZWw9IlByZXZpb3VzJHthfSI+JHtyX308c3Bhbj5QcmV2aW91czwvc3Bhbj48L2J1dHRvbj48c3BhbiBjbGFzcz0iY2stcGFnZXItbiI+JHtpfTwvc3Bhbj48YnV0dG9uIGNsYXNzPSJjay1wYWdlci1idG4iIHR5cGU9ImJ1dHRvbiIgJHtlLm5leHR9JHtyPyIiOiIgZGlzYWJsZWQifSBhcmlhLWxhYmVsPSJOZXh0JHthfSI+PHNwYW4+TmV4dDwvc3Bhbj4ke2lffTwvYnV0dG9uPjwvbmF2PiR7ZS5hbGw/YDxidXR0b24gY2xhc3M9ImNrLXBhZ2VyLWFsbCIgdHlwZT0iYnV0dG9uIiAke2UuYWxsfT48c3Bhbj5WaWV3IGFsbCAke3R9PC9zcGFuPiR7Y199PC9idXR0b24+YDoiIn1gfSx1Xz0oZSx0KT0+YDxidXR0b24gY2xhc3M9ImNrLXBhZ2VyLWFsbCIgdHlwZT0iYnV0dG9uIiAke3R9PjxzcGFuIGRhdGEtbGFiZWw+JHtCZihlKX08L3NwYW4+JHthX308L2J1dHRvbj5gLE1lPW5ldyBVbCh7bmFtZToiaG90ZWwtc3RvcmVmcm9udCIsdmVyc2lvbjoiMS4wLjAifSx7b3BlbkxpbmtzOnt9LGF2YWlsYWJsZURpc3BsYXlNb2RlczpbImlubGluZSIsImZ1bGxzY3JlZW4iXX0pLFVmPXthcHBseURvY3VtZW50VGhlbWU6bl8sYXBwbHlIb3N0U3R5bGVWYXJpYWJsZXM6b18sYXBwbHlIb3N0Rm9udHM6c199LEo9ZT0+ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZSksbD1lPT5TdHJpbmcoZT8/IiIpLnJlcGxhY2UoL1smPD4iJ10vZyx0PT50PT09IiYiPyImYW1wOyI6dD09PSI8Ij8iJmx0OyI6dD09PSI+Ij8iJmd0OyI6dD09PSciJz8iJnF1b3Q7IjoiJiMzOTsiKTtsZXQgRGU9IiIsZ3M9IiIsZ2k9IiI7Y29uc3QgZF89KCk9PmRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5kYXRhc2V0LnRoZW1lPT09ImRhcmsiLEZsPSgpPT57Y29uc3QgZT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYnJhbmQiKTtpZighZXx8IWdzKXJldHVybjtjb25zdCB0PWRfKCkmJiEhZ2ksbj10P2dpOmdzO2UuZ2V0QXR0cmlidXRlKCJzcmMiKSE9PW4mJihlLnNyYz1uKSxlLmNsYXNzTGlzdC50b2dnbGUoImRhcmstYXJ0Iix0KX07bGV0IGVpPSExLGJpPSIiLHZpPSIiLEhsPXt9LFdsPSExLEZmPSIiLHc9e2NoZWNrSW46IiIsY2hlY2tPdXQ6IiIsZ3Vlc3RzOjJ9LEw9MTtjb25zdCBNdD01O2xldCBuZT1udWxsLGN0PVtdLGV0PSIiLGJlPVtdLFA9bnVsbCxicz0wO2NvbnN0IHBfPW5ldyBTZXQoWyJmb3JnZXRQcmVmZXJlbmNlcyIsImFkZFRvVHJpcCIsImNsZWFyVHJpcCIsInJlcXVlc3RCb29raW5nIiwiY2FuY2VsQm9va2luZyIsImNoYW5nZUJvb2tpbmciLCJzaWduSW4iLCJzaWduT3V0Il0pLHd0PWU9Pntjb25zdCB0PVN0cmluZyhlPy52aWV3Pz8iIik7cmV0dXJuIHQ9PT0iaG90ZWwifHx0PT09Im5vLXJvb21zInx8dD09PSJuZWVkcy1kYXRlcyI/YGhvdGVsOiR7ZS5ob3RlbD8uaWQ/PyIifWA6dD09PSJleHRyYXMiP2UuZm9yQm9va2luZz9gZXh0cmFzOmJvb2tpbmc6JHtlLmZvckJvb2tpbmcuY29uZmlybWF0aW9uQ29kZX1gOmBleHRyYXM6JHtlLmhvdGVsPy5pZD8/IiJ9YDp0PT09InBvbGljeSJ8fHQ9PT0icG9saWNpZXMifHx0PT09InBvbGljeS1taXNzaW5nIj9gcG9saWN5OiR7ZS5ob3RlbD8uaWQ/PyIifToke2UudG9waWM/PyIifWA6dD09PSJjYW5jZWxsYXRpb24tcHJldmlldyI/YGNhbmNlbDoke2UuYm9va2luZz8uY29uZmlybWF0aW9uQ29kZT8/IiJ9YDp0PT09ImNoYW5nZS1wcmV2aWV3Ij9gY2hhbmdlOiR7ZS5jb25maXJtYXRpb25Db2RlPz9lLmJvb2tpbmc/LmNvbmZpcm1hdGlvbkNvZGU/PyIifWA6dD09PSJkZXN0aW5hdGlvbnMiP2BkZXN0aW5hdGlvbnM6JHtlLnNjb3BlPy5uYW1lPz8iIn1gOnQ9PT0iaG90ZWxzInx8dD09PSJuby1ob3RlbHMiP2Bob3RlbHM6JHtlLmFzaz8uY2l0eT8/IiJ9OiR7ZS5hc2s/LnF1ZXJ5Pz9lLnF1ZXJ5Pz8iIn1gOnR9LFRuPWU9PnshUHx8bV8uaGFzKFN0cmluZyhQLnZpZXcpKXx8d3QoZSkhPT13dChQKSYmKGJlPVsuLi5iZSx7cGF5bG9hZDpQLGxhYmVsOmZfKFApLHZlcnNpb246YnN9XS5zbGljZSgtNikpfSxoXz1lPT57Y29uc3QgdD1TdHJpbmcoZT8udmlldz8/IiIpLG49ZT8uc3RheT8uY2hlY2tJbj97Y2hlY2tJbjplLnN0YXkuY2hlY2tJbixjaGVja091dDplLnN0YXkuY2hlY2tPdXQsZ3Vlc3RzOmUuc3RheS5ndWVzdHM/PzJ9Ont9O2lmKHQ9PT0idHJpcCIpcmV0dXJue2tleToidmlld1RyaXAiLGFyZ3M6e319O2lmKHQ9PT0iYm9va2luZ3MiKXJldHVybntrZXk6Imxpc3RCb29raW5ncyIsYXJnczp7fX07aWYoKHQ9PT0iaG90ZWxzInx8dD09PSJkZXN0aW5hdGlvbnMifHx0PT09Im5vLWhvdGVscyImJmUuYXNrKSYmZS5hc2spcmV0dXJue2tleToibGlzdEhvdGVscyIsYXJnczp7Li4uZS5hc2t9fTtpZih0PT09ImNvbXBhcmlzb24iJiZBcnJheS5pc0FycmF5KGUuY29sdW1ucykpcmV0dXJue2tleToiY29tcGFyZSIsYXJnczp7Li4ubiwuLi5lLnRpdGxlP3t0aXRsZTplLnRpdGxlfTp7fSwuLi5lLnJlY29tbWVuZGVkP3tyZWNvbW1lbmRlZDplLnJlY29tbWVuZGVkfTp7fSxlbnRyaWVzOmUuY29sdW1ucy5tYXAobz0+KHtob3RlbDpvLmhvdGVsPy5pZCwuLi5vLmJlc3RGb3I/e2Jlc3RGb3I6by5iZXN0Rm9yfTp7fSwuLi5vLnByb3M/Lmxlbmd0aD97cHJvczpvLnByb3N9Ont9LC4uLm8uY29ucz8ubGVuZ3RoP3tjb25zOm8uY29uc306e319KSl9fTtpZigodD09PSJob3RlbCJ8fHQ9PT0ibm8tcm9vbXMiKSYmZS5ob3RlbD8uaWQpcmV0dXJue2tleToiZ2V0SG90ZWwiLGFyZ3M6e2hvdGVsOmUuaG90ZWwuaWQsLi4ubiwuLi5lLnJvb21zX3dhbnRlZD97cm9vbXM6ZS5yb29tc193YW50ZWR9Ont9fX07aWYodD09PSJleHRyYXMiJiZlLmZvckJvb2tpbmcpcmV0dXJue2tleToibGlzdEV4dHJhcyIsYXJnczp0dChTdHJpbmcoZS5mb3JCb29raW5nLmNvbmZpcm1hdGlvbkNvZGUpKX07aWYodD09PSJleHRyYXMiJiZlLmhvdGVsPy5pZClyZXR1cm57a2V5OiJsaXN0RXh0cmFzIixhcmdzOntob3RlbDplLmhvdGVsLmlkLC4uLm59fTtpZih0PT09Iml0aW5lcmFyeSIpcmV0dXJue2tleToiaXRpbmVyYXJ5IixhcmdzOnt0aXRsZTplLnRpdGxlLC4uLm4sZGF5czooZS5kYXlzPz9bXSkubWFwKG89Pih7bGFiZWw6by5sYWJlbCwuLi5vLm5vdGU/e25vdGU6by5ub3RlfTp7fSxpdGVtczooby5pdGVtcz8/W10pLm1hcChzPT5zLmlkKX0pKX19fSxRdT1lPT57YmU9YmUuZmlsdGVyKHQ9PiFlLmluY2x1ZGVzKFN0cmluZyh0LnBheWxvYWQ/LnZpZXcpKSl9LG1fPW5ldyBTZXQoWyJmaW5kLWJvb2tpbmciLCJib29raW5nIiwiY2FuY2VsbGVkIiwiY2hhbmdlZCIsImVycm9yIiwibmVlZHMtZ3Vlc3QiLCJzaWduZWQtb3V0IiwibWVtYmVyLXNpZ24taW4iLCJtZW1iZXItbm90LWZvdW5kIl0pLGZfPWU9Pntjb25zdCB0PVN0cmluZyhlPy52aWV3Pz8iIik7aWYodD09PSJjb21wYXJpc29uIilyZXR1cm4gYyhgJHsoZS5jb2x1bW5zPz9bXSkubGVuZ3RofSBzaWRlIGJ5IHNpZGVgLGAkeyhlLmNvbHVtbnM/P1tdKS5sZW5ndGh9IOWutuWvueavlGApO2lmKHQ9PT0iaXRpbmVyYXJ5IilyZXR1cm4gYygidGhlIHBsYW4iLCLooYznqIvorqHliJIiKTtpZih0PT09Im5vLWhvdGVscyIpcmV0dXJuIGMoInRoZSBzZWFyY2giLCLmkJzntKIiKTtpZih0PT09ImRlc3RpbmF0aW9ucyIpcmV0dXJuIGUuc2NvcGU/Lm5hbWU/U3RyaW5nKGUuc2NvcGUubmFtZSk6YygiYWxsIGRlc3RpbmF0aW9ucyIsIuWFqOmDqOebrueahOWcsCIpO2lmKHQ9PT0iaG90ZWxzIil7aWYoZS5hc2s/LmNpdHkpcmV0dXJuIFN0cmluZyhlLmFzay5jaXR5KTtjb25zdCBuPVsuLi5uZXcgU2V0KChlLmhvdGVscz8/W10pLm1hcChvPT5TdHJpbmcoby5jaXR5KSkpXTtyZXR1cm4gbi5sZW5ndGg9PT0xP1N0cmluZyhuWzBdKTpjKGAke2UudG90YWw/PzB9IGhvdGVsc2AsYCR7ZS50b3RhbD8/MH0g5a626YWS5bqXYCl9cmV0dXJuIHQ9PT0iaG90ZWwifHx0PT09Im5vLXJvb21zInx8dD09PSJuZWVkcy1kYXRlcyI/U3RyaW5nKGUuaG90ZWw/Lm5hbWU/P2MoInRoZSBob3RlbCIsIumFkuW6lyIpKTp0PT09ImNhbmNlbGxhdGlvbi1wcmV2aWV3Ij9jKCJ0aGUgY2FuY2VsbGF0aW9uIiwi5Y+W5raIIik6dD09PSJjaGFuZ2UtcHJldmlldyI/YygidGhlIGNoYW5nZSIsIuS/ruaUuSIpOnQ9PT0ibWVtYmVyIj9jKCJ5b3VyIG1lbWJlcnNoaXAiLCLkvJrlkZgiKTp0PT09ImV4dHJhcyI/ZS5mb3JCb29raW5nP2MoYGFkZC1vbnMgZm9yICR7ZS5mb3JCb29raW5nLmNvbmZpcm1hdGlvbkNvZGV9YCxgJHtlLmZvckJvb2tpbmcuY29uZmlybWF0aW9uQ29kZX0g55qE6ZmE5Yqg5pyN5YqhYCk6YyhgJHtTdHJpbmcoZS5ob3RlbD8ubmFtZT8/InRoZSBob3RlbCIpfSBhZGQtb25zYCxgJHtTdHJpbmcoZS5ob3RlbD8ubmFtZT8/IumFkuW6lyIpfemZhOWKoOacjeWKoWApOnQ9PT0idHJpcCI/YygidGhlIHRyaXAiLCLooYznqIsiKTp0PT09ImJvb2tpbmdzIj9jKCJ5b3VyIGJvb2tpbmdzIiwi5oiR55qE6aKE6K6iIik6dD09PSJwb2xpY3kifHx0PT09InBvbGljaWVzIj9jKCJ0aGUgcG9saWNpZXMiLCLmlL/nrZYiKTpjKCJiYWNrIiwi6L+U5ZueIil9LEhmPSgpPT57Y29uc3QgZT1KKCJiYWNrYnRuIiksdD1iZS5hdCgtMSk7ZS5oaWRkZW49IXQsdCYmKGUuaW5uZXJIVE1MPWAke0UuY2hldkx9PHNwYW4+JHtsKHQubGFiZWwpfTwvc3Bhbj5gKSxXZigpfSxnXz17aG90ZWxzOjEsaG90ZWw6Miwibm8tcm9vbXMiOjIsIm5lZWRzLWRhdGVzIjoyLHRyaXA6MywibmVlZHMtZ3Vlc3QiOjMsYm9va2luZzo0fSxiXz1lPT57bGV0IHQ9Z19bU3RyaW5nKGU/LnZpZXc/PyIiKV0/PzA7ZT8udmlldz09PSJ0cmlwIiYmIShlLmxpbmVzPz9bXSkubGVuZ3RoJiYodD0wKSxlPy52aWV3PT09ImhvdGVscyImJiEoZS5ob3RlbHM/P1tdKS5sZW5ndGgmJih0PTApO2NvbnN0IG49ZT8udmlldz09PSJib29raW5nIiYmZT8uYm9va2luZz8uc3RhdHVzPT09ImF3YWl0aW5nLXBheW1lbnQiO24mJih0PTMpLGU/Lm9wZW5lZCYmIW4mJih0PTApLEooImZsb3czIikudGV4dENvbnRlbnQ9bj9jKCJQYXkiLCLku5jmrL4iKTpjKCJCb29rIiwi6aKE6K6iIik7Y29uc3Qgbz1KKCJmbG93Iik7by5oaWRkZW49IXQ7Zm9yKGNvbnN0IHMgb2Ygby5xdWVyeVNlbGVjdG9yQWxsKCJsaSIpKXtjb25zdCByPU51bWJlcihzLmRhdGFzZXQuc3RlcCk7cy5jbGFzc0xpc3QudG9nZ2xlKCJkb25lIixyPHQpLHI9PT10P3Muc2V0QXR0cmlidXRlKCJhcmlhLWN1cnJlbnQiLCJzdGVwIik6cy5yZW1vdmVBdHRyaWJ1dGUoImFyaWEtY3VycmVudCIpfVdmKCl9LFdmPSgpPT57Sigic3ViaGVhZCIpLmhpZGRlbj1KKCJiYWNrYnRuIikuaGlkZGVuJiZKKCJmbG93IikuaGlkZGVufTtsZXQganQ9IiIsJGk9IiIsU3Q9MCxqbj0hMTtjb25zdCBWZj1lPT57Y29uc3QgdD1lPy5bImN1cmxlc3MvdHJpcCJdO3QmJih0eXBlb2YgdC50cmlwSWQ9PSJzdHJpbmciJiZ0LnRyaXBJZCYmKCRpPXQudHJpcElkKSxTdD1OdW1iZXIodC5jb3VudD8/MCksQXJyYXkuaXNBcnJheSh0LmxpbmVzKSYmKGN0PXQubGluZXMsam49ITApKX0sSmY9ZT0+JGk/ey4uLmUsdHJpcDokaX06ZSxLZj1uZXcgTWFwLHZfPWU9Pntjb25zdCB0PVtlPy5ib29raW5nLC4uLkFycmF5LmlzQXJyYXkoZT8uYm9va2luZ3MpP2UuYm9va2luZ3M6W11dO2Zvcihjb25zdCBuIG9mIHQpbj8uY29uZmlybWF0aW9uQ29kZSYmbj8uZ3Vlc3Q/LmVtYWlsJiZLZi5zZXQoU3RyaW5nKG4uY29uZmlybWF0aW9uQ29kZSkudG9VcHBlckNhc2UoKSxTdHJpbmcobi5ndWVzdC5lbWFpbCkpfSx0dD1lPT57Y29uc3QgdD1LZi5nZXQoZS50b1VwcGVyQ2FzZSgpKTtyZXR1cm4gdD97Ym9va2luZzplLGVtYWlsOnR9Ontib29raW5nOmV9fSxHZj1lPT5IbFtlXT8/IiIsV289ZT0+ISFIbFtlXSwkXz1XbztsZXQgWWY9ImhvbGQiLFZsPSExLFFmPSExLGtlPW51bGwsb3Q9IiI7Y29uc3QgVHQ9ZT0+a2UmJmU/a2Uuc3VwcGxpZXJzLmZpbmQodD0+dC5pZD09PWUpOnZvaWQgMCxCZT1lPT57Y29uc3QgdD1UdChlKTtpZighdClyZXR1cm57bmFtZTpEZSxib29raW5nTW9kZTpZZixkZW1vOldsLHNhbmRib3g6VmwscGhvbmVSZXF1aXJlZDpRZixleHRyYXM6ITAsY2hhbmdlczohMH07Y29uc3Qgbj10LmNhcGFiaWxpdGllcz8/e307cmV0dXJue25hbWU6U3RyaW5nKHQubmFtZSksYm9va2luZ01vZGU6bi5ib29raW5nPT09InBheS1hdC1ob3RlbCI/InBheS1hdC1ob3RlbCI6ImhvbGQiLGRlbW86dC5tb2RlIT09ImxpdmUiLHNhbmRib3g6dC5tb2RlPT09InNhbmRib3giLHBob25lUmVxdWlyZWQ6ISFuLnJlcXVpcmVzUGhvbmUsZXh0cmFzOm4uZXh0cmFzIT09ITEsY2hhbmdlczpuLmNoYW5nZXMhPT0hMX19LENuPWU9Pntjb25zdCB0PWU/LmJyYW5kP1N0cmluZyhlLmJyYW5kKToiIixuPVR0KGU/LnN1cHBsaWVyKTtpZighbilyZXR1cm4gdDtjb25zdCBvPVN0cmluZyhuLm5hbWUpO3JldHVybiB0JiZ0IT09bz9gJHtvfSDCtyAke3R9YDpvfSxYdT0oKT0+KGtlP2tlLnN1cHBsaWVycy5tYXAoZT0+ZS5jYXBhYmlsaXRpZXM/LmNvZGVQcmVmaXgpLmZpbHRlcihCb29sZWFuKTp2aT9bdmldOltdKS5tYXAoZT0+YCR7ZX0t4oCmYCkuam9pbigiIG9yICIpLEpsPWU9PmtlP1suLi5uZXcgU2V0KGUubWFwKHQ9PlN0cmluZyh0LnN1cHBsaWVyPz8iIikpLmZpbHRlcihCb29sZWFuKSldOltdO2xldCB2bj0hMTtjb25zdCBlZD1lPT57dm49ZSxkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIuY2FyZCIpPy5jbGFzc0xpc3QudG9nZ2xlKCJidXN5IixlKX07bGV0IHZzPTAsWGY9IiIsZWc9IiI7Y29uc3QgbnQ9KCk9Pntjb25zdCBlPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIi5oZWFkIik7aWYoIWUpcmV0dXJuO2NvbnN0IHQ9KCk9PmUuc2Nyb2xsSW50b1ZpZXcoe2Jsb2NrOiJuZWFyZXN0IixpbmxpbmU6Im5lYXJlc3QifSk7dCgpLHNldFRpbWVvdXQodCwxODApfSxXPShlLHQ9e30sbj17fSk9Pntjb25zdCBvPUdmKGUpO2lmKCFvKXJldHVybiBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoYG5vIHRvb2wgZm9yICR7ZX1gKSk7aWYodm4pcmV0dXJuIFByb21pc2UucmVzb2x2ZShudWxsKTtlZCghMCk7Y29uc3Qgcz12cztyZXR1cm4gTWUuY2FsbFNlcnZlclRvb2woe25hbWU6byxhcmd1bWVudHM6SmYodCl9KS5maW5hbGx5KCgpPT5lZCghMSkpLnRoZW4ocj0+e1ZmKHI/Ll9tZXRhKTtjb25zdCBhPXI/LnN0cnVjdHVyZWRDb250ZW50LGk9YSYmbi5mb2xkP24uZm9sZChhKTphLGQ9cF8uaGFzKGUpJiZpJiZpLnZpZXchPT0iZXJyb3IiO2lmKHM9PT12cyYmaSl7WGY9YT9KU09OLnN0cmluZ2lmeShhKToiIixlZz1KU09OLnN0cmluZ2lmeShpKTtjb25zdCB1PXd0KGkpIT09d3QoUCk7dSYmKFI9bnVsbCksbi5wdXNoIT09ITEmJiFuLnN0YXkmJlRuKGkpLGQmJihicys9MSksaS52aWV3PT09ImJvb2tpbmciJiYoUXUoWyJ0cmlwIiwibmVlZHMtZGF0ZXMiLCJuZWVkcy1ndWVzdCJdKSxPZT1udWxsKSwoaS52aWV3PT09ImNhbmNlbGxlZCJ8fGkudmlldz09PSJjaGFuZ2VkIikmJlF1KFsiY2FuY2VsbGF0aW9uLXByZXZpZXciLCJjaGFuZ2UtcHJldmlldyJdKSxuLnN0YXkmJmkudmlldz09PSJ0cmlwIiYmUD8oam58fChjdD1pLmxpbmVzPz9bXSksU3Q9am4/U3Q6Y3QubGVuZ3RoLF9lKFApKTooX2UoaSksdSYmbnQoKSl9ZWxzZSBkJiYoYnMrPTEpO3JldHVybiB5XyhyLG4ubm90ZSkscn0pfSx5Xz0oZSx0KT0+e2NvbnN0IG49KGU/LmNvbnRlbnQ/P1tdKS5maW5kKG89Pm8/LnR5cGU9PT0idGV4dCIpPy50ZXh0OyFufHwhTWUuZ2V0SG9zdENhcGFiaWxpdGllcygpPy51cGRhdGVNb2RlbENvbnRleHR8fE1lLnVwZGF0ZU1vZGVsQ29udGV4dCh7Y29udGVudDpbe3R5cGU6InRleHQiLHRleHQ6dD9gJHt0fSAke1N0cmluZyhuKX1gOlN0cmluZyhuKX1dfSkuY2F0Y2goKCk9Pnt9KX07bGV0IEhyPSExO2NvbnN0IGtfPSIoVGhlIGNhcmQgcHJpY2VkIGl0cyBvd24gZGVmYXVsdCBkYXRlcywgdG9uaWdodCwgdG8gc2hvdyB0aGUgcm9vbXM7IHRoZSBndWVzdCBoYXMgbm90IGNob3NlbiB0aGVtLikiLGR0PWU9PntsZXQgdD0wO2ZvcihsZXQgbj0wO248ZS5sZW5ndGg7bis9MSl0PSh0KjMxK2UuY2hhckNvZGVBdChuKSklMzYwO3JldHVybmAtLXNob3QtYTpoc2woJHt0fSA0MiUgMzQlKTstLXNob3QtYjpoc2woJHsodCszOCklMzYwfSA0NiUgMjIlKWB9LCRuPWU9Pntjb25zdCB0PVN0cmluZyhlPz8iIiksbj0vXlxzKlvjgJBcW11ccyoo5qih5ouffHNpbXVsYXRlZHx0ZXN0KVxzKlvjgJFcXV1ccyovaS5leGVjKHQpLG89bCgobj90LnNsaWNlKG5bMF0ubGVuZ3RoKTp0KS5yZXBsYWNlKC8tL2csIuKAkSIpKTtyZXR1cm4gbj9gPHNwYW4gY2xhc3M9InNpbSI+JHtsKG5bMV0pfTwvc3Bhbj4ke299YDpvfSxwdD1lPT5lLnJlcGxhY2UoL15ccypb44CQXFtdXHMqKOaooeaLn3xzaW11bGF0ZWR8dGVzdClccypb44CRXF1dXHMqL2ksIiIpLnJlcGxhY2UoL1teXHB7TH1ccHtOfSBdL2d1LCIgIikuc3BsaXQoL1xzKy8pLmZpbHRlcihCb29sZWFuKS5zbGljZSgwLDIpLm1hcCh0PT50WzBdPy50b1VwcGVyQ2FzZSgpPz8iIikuam9pbigiIiksdGc9Jzxzdmcgdmlld0JveD0iMCAwIDI0IDI0IiB3aWR0aD0iMTIiIGhlaWdodD0iMTIiIGZpbGw9ImN1cnJlbnRDb2xvciIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGQ9Ik0xMiAzLjVsMi42IDUuMyA1LjkuOS00LjMgNC4xIDEgNS44TDEyIDE2LjkgNi44IDE5LjZsMS01LjhMMy41IDkuN2w1LjktLjl6Ii8+PC9zdmc+JyxhZT0oZSx0PTEuOCk9PmA8c3ZnIGNsYXNzPSJpY28iIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS13aWR0aD0iJHt0fSIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBhcmlhLWhpZGRlbj0idHJ1ZSI+JHtlfTwvc3ZnPmAsRT17Y2FsZW5kYXI6YWUoJzxyZWN0IHg9IjMuNSIgeT0iNSIgd2lkdGg9IjE3IiBoZWlnaHQ9IjE1LjUiIHJ4PSIyLjUiLz48cGF0aCBkPSJNMy41IDkuNWgxN004IDN2NE0xNiAzdjQiLz4nKSxzZWFyY2g6YWUoJzxjaXJjbGUgY3g9IjExIiBjeT0iMTEiIHI9IjYuNSIvPjxwYXRoIGQ9Im0yMCAyMC00LjItNC4yIi8+JyksY2hlY2s6YWUoJzxwYXRoIGQ9Im01IDEyLjUgNC41IDQuNUwxOSA3LjUiLz4nLDIpLGRvbmU6YWUoJzxwYXRoIGQ9Im02IDEyLjUgNCA0IDgtOSIvPicsMi42KSxhbGVydDphZSgnPHBhdGggZD0iTTEyIDQuMiAzIDE5LjVoMTh6Ii8+PHBhdGggZD0iTTEyIDEwdjQuMk0xMiAxN2guMDEiLz4nKSxlcnJvcjphZSgnPGNpcmNsZSBjeD0iMTIiIGN5PSIxMiIgcj0iOC41Ii8+PHBhdGggZD0iTTEyIDcuOHY1TTEyIDE2LjJoLjAxIi8+JyksY2xvY2s6YWUoJzxjaXJjbGUgY3g9IjEyIiBjeT0iMTIiIHI9IjguNSIvPjxwYXRoIGQ9Ik0xMiA3LjVWMTJsMyAyIi8+JyksYmVkOmFlKCc8cGF0aCBkPSJNMyAxOC41VjYuNU0zIDE0aDE4djQuNU0yMSAxNHYtMi41YTMgMyAwIDAgMC0zLTNoLTdWMTQiLz48Y2lyY2xlIGN4PSI3IiBjeT0iMTEiIHI9IjEuOCIvPicpLHVzZXJzOmFlKCc8Y2lyY2xlIGN4PSI5IiBjeT0iOC41IiByPSIzLjIiLz48cGF0aCBkPSJNMy41IDE5YTUuNSA1LjUgMCAwIDEgMTEgME0xNiA1LjZhMyAzIDAgMCAxIDAgNS44TTE3LjUgMTRhNSA1IDAgMCAxIDMgNSIvPicpLHNpemU6YWUoJzxwYXRoIGQ9Ik00IDlWNGg1TTIwIDE1djVoLTVNNCA0bDYgNk0yMCAyMGwtNi02Ii8+JyksdmlldzphZSgnPHBhdGggZD0iTTIuNSAxMlM2IDUuNSAxMiA1LjUgMjEuNSAxMiAyMS41IDEyIDE4IDE4LjUgMTIgMTguNSAyLjUgMTIgMi41IDEyeiIvPjxjaXJjbGUgY3g9IjEyIiBjeT0iMTIiIHI9IjIuOCIvPicpLGN1cDphZSgnPHBhdGggZD0iTTQgOWgxMnY1YTUgNSAwIDAgMS01IDVIOWE1IDUgMCAwIDEtNS01ek0xNiAxMC41aDEuNWEyLjUgMi41IDAgMCAxIDAgNUgxNk04IDMuNVY2TTEyIDMuNVY2Ii8+JyksaW5mbzphZSgnPGNpcmNsZSBjeD0iMTIiIGN5PSIxMiIgcj0iOC41Ii8+PHBhdGggZD0iTTEyIDExdjUuMk0xMiA3LjhoLjAxIi8+Jyksd2luZG93OmFlKCc8cmVjdCB4PSI0LjUiIHk9IjQiIHdpZHRoPSIxNSIgaGVpZ2h0PSIxNiIgcng9IjEuNSIvPjxwYXRoIGQ9Ik0xMiA0djE2TTQuNSAxMmgxNSIvPicpLGxvY2s6YWUoJzxyZWN0IHg9IjQuNSIgeT0iMTAuNSIgd2lkdGg9IjE1IiBoZWlnaHQ9IjEwIiByeD0iMi4yIi8+PHBhdGggZD0iTTggMTAuNVY3LjVhNCA0IDAgMCAxIDggMHYzIi8+JykscGluOmFlKCc8cGF0aCBkPSJNMTIgMjFzLTYuNS01LjYtNi41LTExYTYuNSA2LjUgMCAwIDEgMTMgMEMxOC41IDE1LjQgMTIgMjEgMTIgMjF6Ii8+PGNpcmNsZSBjeD0iMTIiIGN5PSIxMCIgcj0iMi40Ii8+JyksY2hldkw6YWUoJzxwYXRoIGQ9Im0xNC41IDYtNiA2IDYgNiIvPicsMiksY2hldlI6YWUoJzxwYXRoIGQ9Im05LjUgNiA2IDYtNiA2Ii8+JywyKSxhcnJvdzphZSgnPHBhdGggZD0iTTUgMTJoMTRNMTMgNmw2IDYtNiA2Ii8+JywyKSxzbGlkZXJzOmFlKCc8cGF0aCBkPSJNNCA3aDEwTTE4IDdoMk00IDE3aDRNMTIgMTdoOCIvPjxjaXJjbGUgY3g9IjE2IiBjeT0iNyIgcj0iMiIvPjxjaXJjbGUgY3g9IjEwIiBjeT0iMTciIHI9IjIiLz4nKSxzb3J0OmFlKCc8cGF0aCBkPSJNNyA0djE2TTMuNSA3LjUgNyA0bDMuNSAzLjVNMTcgMjBWNE0xMy41IDE2LjUgMTcgMjBsMy41LTMuNSIvPicpLHRhZzphZSgnPHBhdGggZD0iTTMuNSAxMi41di04YTEgMSAwIDAgMSAxLTFoOGw4IDgtOSA5eiIvPjxjaXJjbGUgY3g9IjgiIGN5PSI4IiByPSIxLjQiLz4nKX07bGV0IHJlPSJlbiI7Y29uc3QgYz0oZSx0KT0+cmU9PT0iemgiP3Q6ZSxuZz1bIuWRqOaXpSIsIuWRqOS4gCIsIuWRqOS6jCIsIuWRqOS4iSIsIuWRqOWbmyIsIuWRqOS6lCIsIuWRqOWFrSJdLHVlPWU9PmU+MD9yZT09PSJ6aCI/YCR7ZX3mmZpgOmAke2V9ICR7ZT09PTE/Im5pZ2h0IjoibmlnaHRzIn1gOiIiLHp0PWU9PnJlPT09InpoIj9gJHtlfeWwj+aXtmA6YCR7ZX0gJHtOdW1iZXIoZSk9PT0xPyJob3VyIjoiaG91cnMifWAsX189ZT0+cmU9PT0iemgiP2Ake2V96Ze0YDpgJHtlfSAke2U9PT0xPyJyb29tIjoicm9vbXMifWAsRmU9ZT0+e2NvbnN0IHQ9bmV3IERhdGUoYCR7ZX1UMTI6MDA6MDBaYCk7aWYoTnVtYmVyLmlzTmFOKHQuZ2V0VGltZSgpKSlyZXR1cm57bWQ6ZSxkb3c6IiIsbG9uZzplLGRheTplLG1vbjoiIn07Y29uc3Qgbj10LmdldFVUQ01vbnRoKCkrMSxvPXQuZ2V0VVRDRGF0ZSgpO2lmKHJlPT09InpoIil7Y29uc3Qgcj1uZ1t0LmdldFVUQ0RheSgpXT8/IiI7cmV0dXJue21kOmAke2595pyIJHtvfeaXpWAsZG93OnIsbG9uZzpgJHt0LmdldFVUQ0Z1bGxZZWFyKCl95bm0JHtufeaciCR7b33ml6UgJHtyLnJlcGxhY2UoIuWRqCIsIuaYn+acnyIpfWAsZGF5OlN0cmluZyhvKSxtb246YCR7bn3mnIhgfX1jb25zdCBzPXI9PnQudG9Mb2NhbGVEYXRlU3RyaW5nKCJlbi1HQiIsey4uLnIsdGltZVpvbmU6IlVUQyJ9KTtyZXR1cm57bWQ6YCR7b30gJHtzKHttb250aDoic2hvcnQifSl9YCxkb3c6cyh7d2Vla2RheToic2hvcnQifSksbG9uZzpzKHt3ZWVrZGF5OiJsb25nIixkYXk6Im51bWVyaWMiLG1vbnRoOiJsb25nIix5ZWFyOiJudW1lcmljIn0pLGRheTpTdHJpbmcobyksbW9uOnMoe21vbnRoOiJzaG9ydCJ9KX19LHdfPWU9PmUmJnR5cGVvZiBlLnZhbHVlPT0ibnVtYmVyIj9gPHNwYW4gY2xhc3M9InJhdGUiIGFyaWEtbGFiZWw9IiR7bChjKGBSYXRlZCAke2UudmFsdWV9IGJ5ICR7ZS5jb3VudH0gZ3Vlc3RzYCxg6K+E5YiGICR7ZS52YWx1ZX3vvIwke2UuY291bnR9IOadoeeCueivhGApKX0iPiR7dGd9JHtsKGUudmFsdWUpfTxzbWFsbD4oJHtsKE51bWJlcihlLmNvdW50KS50b0xvY2FsZVN0cmluZygiZW4tR0IiKSl9KTwvc21hbGw+PC9zcGFuPmA6IiIsU189IkRlbW9uc3RyYXRpb24gZGF0YTogdGhlc2UgcmF0ZXMgYW5kIHJvb20gY291bnRzIHdlcmUgbWFkZSB1cCBmb3IgdGhpcyBkZW1vLiIsVF89ZT0+e2lmKHR5cGVvZiBlIT0ic3RyaW5nInx8IS9eI1swLTlhLWZdezZ9JC9pLnRlc3QoZSkpcmV0dXJuO2NvbnN0IHQ9ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O3Quc3R5bGUuc2V0UHJvcGVydHkoIi0tYWNjZW50LXJhdyIsZSksdC5kYXRhc2V0LmFjY2VudD0iIjtjb25zdCBuPWk9Pmk8PS4wMzkyOD9pLzEyLjkyOigoaSsuMDU1KS8xLjA1NSkqKjIuNCxbbyxzLHJdPVsxLDMsNV0ubWFwKGk9Pm4oTnVtYmVyLnBhcnNlSW50KGUuc2xpY2UoaSxpKzIpLDE2KS8yNTUpKTsoLjIxMjYqKG8/PzApKy43MTUyKihzPz8wKSsuMDcyMioocj8/MCkrLjA1KS8oLjAwODUrLjA1KTwzP3QuZGF0YXNldC5hY2NlbnREaW09IiI6ZGVsZXRlIHQuZGF0YXNldC5hY2NlbnREaW19LHpfPSgpPT57ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50Lmxhbmc9cmU9PT0iemgiPyJ6aC1DTiI6ImVuIixKKCJob21lIikuc2V0QXR0cmlidXRlKCJhcmlhLWxhYmVsIixjKCJCYWNrIHRvIHRoZSBob3RlbHMiLCLlm57liLDphZLlupfpppbpobUiKSksSigiaGVhZHRyaXAiKS5zZXRBdHRyaWJ1dGUoImFyaWEtbGFiZWwiLGMoIlZpZXcgdGhlIHRyaXAiLCLmn6XnnIvooYznqIsiKSksSigiaGVhZHRyaXB3b3JkIikudGV4dENvbnRlbnQ9YygiVHJpcCIsIuihjOeoiyIpLEooImZsb3ciKS5zZXRBdHRyaWJ1dGUoImFyaWEtbGFiZWwiLGMoIkJvb2tpbmcgc3RlcHMiLCLpooTorqLmraXpqqQiKSksSigiZmxvdzEiKS50ZXh0Q29udGVudD1jKCJIb3RlbCIsIumAiemFkuW6lyIpLEooImZsb3cyIikudGV4dENvbnRlbnQ9YygiUm9vbSIsIumAieaIv+WeiyIpLEooImZsb3czIikudGV4dENvbnRlbnQ9YygiQm9vayIsIumihOiuoiIpfSx4Xz0oKT0+e0ooImRlbW9zdHJpcCIpLmhpZGRlbj0hV2wsSigiZGVtb3RleHQiKS50ZXh0Q29udGVudD1WbD9jKGBBIHRlc3QgY29weSBvZiAke0RlfHwidGhlIGhvdGVsIn0ncyBzeXN0ZW0g4oCUIG5vdGhpbmcgaGVyZSBpcyBhIHJlYWwgYm9va2luZy5gLCLphZLlupfns7vnu5/nmoTmtYvor5Xlia/mnKzvvIzov5nph4znmoTpooTorqLpg73kuI3mmK/nnJ/lrp7pooTorqLjgIIiKTpjKCJTYW1wbGUgcmF0ZXMgYW5kIHJvb21zIOKAlCBub3RoaW5nIGhlcmUgY2FuIHJlYWxseSBiZSBib29rZWQuIiwi56S65L6L5Lu35qC85ZKM5oi/5Z6L77yM6L+Z6YeM5peg5rOV55yf5a6e6aKE6K6i44CCIiksSigiZGVtb2xhYmVsIikudGV4dENvbnRlbnQ9YygiRGVtbyIsIua8lOekuiIpLEooImRlbW9zdHJpcCIpLnRpdGxlPUZmfHxTX30sQWU9ZT0+e2NvbnN0IHQ9RmUoZSk7cmV0dXJuIHQuZG93P3JlPT09InpoIj9gJHt0Lm1kfSAke3QuZG93fWA6YCR7dC5kb3d9ICR7dC5tZH1gOmV9LENlPShlLHQpPT5NYXRoLnJvdW5kKChEYXRlLnBhcnNlKGAke3R9VDEyOjAwOjAwWmApLURhdGUucGFyc2UoYCR7ZX1UMTI6MDA6MDBaYCkpLzg2NGU1KSxWbz1lPT5lPy5jaGVja0luJiZlPy5jaGVja091dD9lLmNoZWNrT3V0PD1lLmNoZWNrSW4/QWUoZS5jaGVja0luKTpgJHtBZShlLmNoZWNrSW4pfSDigJMgJHtBZShlLmNoZWNrT3V0KX0gwrcgJHt1ZShDZShlLmNoZWNrSW4sZS5jaGVja091dCkpfWA6IiIsJHM9KGUsdCxuKT0+e2NvbnN0IG89Y3QuZmluZChzPT5zLmtpbmQ9PT0icm9vbSImJnMuaG90ZWxJZD09PWUmJnMucm9vbVJlZj09PXQmJnMuc3RheT8uY2hlY2tJbj09PW4/LmNoZWNrSW4mJnMuc3RheT8uY2hlY2tPdXQ9PT1uPy5jaGVja091dCk7cmV0dXJuIE51bWJlcihvPy5xdWFudGl0eT8/MCl9LElfPShlLHQpPT57Y29uc3Qgbj1jdC5maW5kKG89Pm8ua2luZD09PSJleHRyYSImJm8uaG90ZWxJZD09PWUmJm8uZXh0cmFSZWY9PT10KTtyZXR1cm4gTnVtYmVyKG4/LnF1YW50aXR5Pz8wKX0seXM9KGUsdCxuLG89MSk9PnQ+MD9gPHNwYW4gY2xhc3M9InN0ZXAiPgogICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgJHtlfSBkYXRhLW49IiR7dC0xfSIgYXJpYS1sYWJlbD0iJHtsKGMoYE9uZSBmZXdlciAke259YCxg5YeP5bCR5LiA6Ze0ICR7bn1gKSl9Ij7iiJI8L2J1dHRvbj4KICAgICAgICAgPHNwYW4gY2xhc3M9Im4iPiR7dH08L3NwYW4+CiAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiAke2V9IGRhdGEtbj0iJHt0KzF9IiBhcmlhLWxhYmVsPSIke2woYyhgT25lIG1vcmUgJHtufWAsYOWinuWKoOS4gOmXtCAke259YCkpfSI+KzwvYnV0dG9uPgogICAgICAgPC9zcGFuPmA6YDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYWRkIiAke2V9IGRhdGEtbj0iJHtvfSIgYXJpYS1sYWJlbD0iJHtsKGMoYEFkZCAke259YCxg5re75YqgICR7bn1gKSl9Ij4KICAgICAgICAgPHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIxOCIgaGVpZ2h0PSIxOCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS13aWR0aD0iMi40IgogICAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGQ9Ik0xMiA1djE0TTUgMTJoMTQiLz48L3N2Zz4KICAgICAgIDwvYnV0dG9uPmAsb2c9KGUsdCk9Pntjb25zdCBuPXR8fGFnKCk7cmV0dXJuKCF3LmNoZWNrSW58fHcuY2hlY2tJbjxuKSYmKHcuY2hlY2tJbj1uKSwoIXcuY2hlY2tPdXR8fHcuY2hlY2tPdXQ8PXcuY2hlY2tJbikmJih3LmNoZWNrT3V0PUl0KHcuY2hlY2tJbiwxKSksV3IoImNpIixuLHtyb29tczpZbCgiZGF0YS1yb29tcy1uIiwicm4iKX0pfSxLbD17Y2k6WyJjaSIsImNvIl0sbGNpOlsibGNpIiwibGNvIl0sZGNpOlsiZGNpIiwiZGNvIl19LEFfPTEzO2xldCBSPW51bGw7Y29uc3QgR2w9e30scnM9ZT0+YCR7ZS5zbGljZSgwLDcpfS0wMWAseWk9KGUsdCk9Pntjb25zdCBuPW5ldyBEYXRlKGAke2V9VDEyOjAwOjAwWmApO3JldHVybiBuLnNldFVUQ01vbnRoKG4uZ2V0VVRDTW9udGgoKSt0LDEpLG4udG9JU09TdHJpbmcoKS5zbGljZSgwLDEwKX0sa3M9ODtsZXQgTnQ9ITE7Y29uc3Qgc2c9KCk9Pkw+MT9jKGAke3cuZ3Vlc3RzfSAke3cuZ3Vlc3RzPT09MT8iZ3Vlc3QiOiJndWVzdHMifSBwZXIgcm9vbSDCtyAke0x9IHJvb21zYCxg5q+P6Ze0ICR7dy5ndWVzdHN9IOS6uiDCtyAke0x9IOmXtGApOmMoYCR7dy5ndWVzdHN9ICR7dy5ndWVzdHM9PT0xPyJndWVzdCI6Imd1ZXN0cyJ9IMK3IDEgcm9vbWAsYCR7dy5ndWVzdHN9IOS6uiDCtyAxIOmXtGApLFlsPShlLHQpPT5gCiAgPGRpdiBjbGFzcz0id2hlbi1yb29tcyB3aGVuLXBhcnR5IiByb2xlPSJncm91cCIgYXJpYS1sYWJlbD0iJHtjKCJHdWVzdHMgYW5kIHJvb21zIiwi5Lq65pWw5ZKM6Ze05pWwIil9Ij4KICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0icGFydHktdGlsZSIgZGF0YS1wYXJ0eSBhcmlhLWV4cGFuZGVkPSIke050PyJ0cnVlIjoiZmFsc2UifSIgYXJpYS1jb250cm9scz0iJHt0fS1wYW5lbCI+CiAgICAgIDxzcGFuIGNsYXNzPSJ3bCI+JHtjKCJHdWVzdHMiLCLkurrmlbAiKX08L3NwYW4+CiAgICAgIDxzcGFuIGNsYXNzPSJwYXJ0eS12IiBkYXRhLXBhcnR5LXdvcmRzPiR7bChzZygpKX08L3NwYW4+CiAgICAgICR7RS5jaGV2Un0KICAgIDwvYnV0dG9uPgogICAgPGRpdiBjbGFzcz0icGFydHktcGFuZWwiIGlkPSIke3R9LXBhbmVsIiR7TnQ/IiI6IiBoaWRkZW4ifT4KICAgICAgPGRpdiBjbGFzcz0icGFydHktcm93Ij4KICAgICAgICA8c3Bhbj4ke2MoIkd1ZXN0cyBpbiBlYWNoIHJvb20iLCLmr4/pl7TlhaXkvY/kurrmlbAiKX08L3NwYW4+CiAgICAgICAgPHNwYW4gY2xhc3M9InN0ZXAgbGlnaHQiPgogICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGRhdGEtZ3Vlc3RzLW49Ii0xIiBkYXRhLW9uPSIke2V9IiBhcmlhLWxhYmVsPSIke2MoIk9uZSBmZXdlciBndWVzdCIsIuWwkeS4gOS6uiIpfSIke3cuZ3Vlc3RzPD0xPyIgZGlzYWJsZWQiOiIifT7iiJI8L2J1dHRvbj4KICAgICAgICAgIDxzcGFuIGNsYXNzPSJuIiBkYXRhLWd1ZXN0cy1zaG93bj4ke2wody5ndWVzdHMpfTwvc3Bhbj4KICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBkYXRhLWd1ZXN0cy1uPSIxIiBkYXRhLW9uPSIke2V9IiBhcmlhLWxhYmVsPSIke2MoIk9uZSBtb3JlIGd1ZXN0Iiwi5aSa5LiA5Lq6Iil9IiR7dy5ndWVzdHM+PWtzPyIgZGlzYWJsZWQiOiIifT4rPC9idXR0b24+CiAgICAgICAgPC9zcGFuPgogICAgICA8L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0icGFydHktcm93Ij4KICAgICAgICA8c3Bhbj4ke2MoIlJvb21zIiwi6Ze05pWwIil9PC9zcGFuPgogICAgICAgIDxzcGFuIGNsYXNzPSJzdGVwIGxpZ2h0Ij4KICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiAke2V9PSItMSIgYXJpYS1sYWJlbD0iJHtjKCJPbmUgZmV3ZXIgcm9vbSIsIuWwkeS4gOmXtCIpfSIke0w8PTE/IiBkaXNhYmxlZCI6IiJ9PuKIkjwvYnV0dG9uPgogICAgICAgICAgPHNwYW4gY2xhc3M9Im4iIGlkPSIke3R9Ij4ke2woTCl9PC9zcGFuPgogICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iICR7ZX09IjEiIGFyaWEtbGFiZWw9IiR7YygiT25lIG1vcmUgcm9vbSIsIuWkmuS4gOmXtCIpfSIke0w+PU10PyIgZGlzYWJsZWQiOiIifT4rPC9idXR0b24+CiAgICAgICAgPC9zcGFuPgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgogIDwvZGl2PmAsV3I9KGUsdCxuKT0+e0dsW2VdPXttaW46dCxyb29tczpuLnJvb21zLHNpZGU6bi5zaWRlPz8iIixwZW5kaW5nOiEhbi5wZW5kaW5nfTtjb25zdFtvLHNdPUtsW2VdLHI9Q2Uody5jaGVja0luLHcuY2hlY2tPdXQpLGE9KGksZCx1KT0+e2NvbnN0IHA9RmUoZCksaD1SPy5wYWlyPT09ZSYmUi5waWNraW5nPT09aTtyZXR1cm4gbi5wZW5kaW5nJiYhaD9gPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJ3aGVuLXRpbGUiIGRhdGEtY2FsPSIke2V9OiR7aX0iIGFyaWEtZXhwYW5kZWQ9ImZhbHNlIiBhcmlhLWxhYmVsPSIke3V9LiAke2MoIkNob29zZSBhIGRhdGUiLCLpgInmi6nml6XmnJ8iKX0iPgogICAgICAgIDxzcGFuIGNsYXNzPSJ3bCI+JHt1fTwvc3Bhbj4KICAgICAgICA8c3BhbiBjbGFzcz0id3Ygd3YtZW1wdHkiPiR7YygiQWRkIGRhdGUiLCLpgInml6XmnJ8iKX08L3NwYW4+CiAgICAgIDwvYnV0dG9uPmA6YDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0id2hlbi10aWxlIiBkYXRhLWNhbD0iJHtlfToke2l9IiBhcmlhLWV4cGFuZGVkPSIke2g/InRydWUiOiJmYWxzZSJ9IiBhcmlhLWxhYmVsPSIke3V9LCAke2wocC5sb25nKX0uICR7YygiQ2hhbmdlIHRoZSBkYXRlcyIsIuS/ruaUueaXpeacnyIpfSI+CiAgICAgICAgPHNwYW4gY2xhc3M9IndsIj4ke3V9PC9zcGFuPgogICAgICAgIDxzcGFuIGNsYXNzPSJ3diI+JHtsKHAubWQpfTxzbWFsbD4ke2wocC5kb3cpfTwvc21hbGw+PC9zcGFuPgogICAgICA8L2J1dHRvbj5gfTtyZXR1cm5gCiAgPGRpdiBjbGFzcz0id2hlbmJhciR7bi5wZW5kaW5nPyIgcGVuZGluZyI6IiJ9IiBkYXRhLXdoZW49IiR7ZX0iPgogICAgPGRpdiBjbGFzcz0id2hlbi1kYXRlcyI+CiAgICAgICR7YSgiaW4iLHcuY2hlY2tJbixjKCJDaGVjay1pbiIsIuWFpeS9jyIpKX0KICAgICAgPHNwYW4gY2xhc3M9IndoZW4tbiIke2U9PT0iY2kiPycgaWQ9Im5pZ2h0cyInOiIifT4ke24ucGVuZGluZz8i4oaSIjpsKHVlKHIpKX08L3NwYW4+CiAgICAgICR7YSgib3V0Iix3LmNoZWNrT3V0LGMoIkNoZWNrLW91dCIsIuemu+W6lyIpKX0KICAgIDwvZGl2PgogICAgPGRpdiBjbGFzcz0id2hlbi1zaWRlIj4ke24ucm9vbXN9JHtuLnNpZGU/PyIifTwvZGl2PgogICAgPGlucHV0IHR5cGU9ImRhdGUiIGlkPSIke299IiB2YWx1ZT0iJHtsKHcuY2hlY2tJbil9IiBtaW49IiR7bCh0KX0iIGhpZGRlbj4KICAgIDxpbnB1dCB0eXBlPSJkYXRlIiBpZD0iJHtzfSIgdmFsdWU9IiR7bCh3LmNoZWNrT3V0KX0iIG1pbj0iJHtsKEl0KHcuY2hlY2tJbiwxKSl9IiBoaWRkZW4+CiAgICAke1I/LnBhaXI9PT1lP0NfKCk6IiJ9CiAgPC9kaXY+YH0sQ189KCk9PntpZighUilyZXR1cm4iIjtjb25zdCBlPVIsdD1ycyhlLm1pbiksbj15aSh0LEFfLTEpLG89cD0+KEZlKHApLEFlKHApKSxzPW5ldyBNYXAoZS5wYWlyPT09ImNpIiYmZS5waWNraW5nPT09ImluIiYmQXJyYXkuaXNBcnJheShQPy5kYXRlcyk/UC5kYXRlcy5maWx0ZXIocD0+cC5mcm9tKS5tYXAocD0+W1N0cmluZyhwLmNoZWNrSW4pLHBdKTpbXSkscj1bLi4ucy52YWx1ZXMoKV0uZmluZChwPT5wLmxvd2VzdCk/P1suLi5zLnZhbHVlcygpXS5maW5kKHA9PnAuYmVzdCksYT1DZShTdHJpbmcoUD8uc3RheT8uY2hlY2tJbj8/IiIpLFN0cmluZyhQPy5zdGF5Py5jaGVja091dD8/IiIpKXx8MSxpPWUucGlja2luZz09PSJpbiI/YygiQ2hvb3NlIGNoZWNrLWluIiwi6YCJ5oup5YWl5L2P5pel5pyfIik6YygiQ2hvb3NlIGNoZWNrLW91dCIsIumAieaLqeemu+W6l+aXpeacnyIpLGQ9ZS5pbiYmZS5vdXQ/YCR7byhlLmluKX0g4oCTICR7byhlLm91dCl9IMK3ICR7dWUoQ2UoZS5pbixlLm91dCkpfWA6ZS5pbj9gJHtjKCJDaGVjay1pbiIsIuWFpeS9jyIpfSAke28oZS5pbil9YDoiIix1PXA9Pntjb25zdCBoPW5ldyBEYXRlKGAke3B9VDEyOjAwOjAwWmApLGI9cmU9PT0iemgiP2Ake2guZ2V0VVRDRnVsbFllYXIoKX3lubQke2guZ2V0VVRDTW9udGgoKSsxfeaciGA6aC50b0xvY2FsZURhdGVTdHJpbmcoImVuLUdCIix7bW9udGg6ImxvbmciLHllYXI6Im51bWVyaWMiLHRpbWVab25lOiJVVEMifSksJD0oaC5nZXRVVENEYXkoKSs2KSU3LGs9bmV3IERhdGUoRGF0ZS5VVEMoaC5nZXRVVENGdWxsWWVhcigpLGguZ2V0VVRDTW9udGgoKSsxLDApKS5nZXRVVENEYXRlKCksVD1bXTtmb3IobGV0IHg9MDt4PCQ7eCs9MSlULnB1c2goJzxzcGFuIGNsYXNzPSJjZCBibGFuayI+PC9zcGFuPicpO2ZvcihsZXQgeD0xO3g8PWs7eCs9MSl7Y29uc3Qgej1gJHtwLnNsaWNlKDAsOCl9JHtTdHJpbmcoeCkucGFkU3RhcnQoMiwiMCIpfWAsST16PGUubWluLFo9ej09PWUuaW4saWU9ej09PWUub3V0LEM9WyJjZCIsWj8iaW4iOiIiLFomJmUub3V0PyJoYXMtb3V0IjoiIixpZT8ib3V0IjoiIixlLmluJiZlLm91dCYmej5lLmluJiZ6PGUub3V0PyJiZXR3ZWVuIjoiIix6PT09ZS5taW4/InRvZGF5IjoiIixzLmhhcyh6KT8iaGFzLXAiOiIiLHMuZ2V0KHopPy5sb3dlc3Q/Imxvd2VzdCI6IiIsZS5waWNraW5nPT09Im91dCImJmUuaW4mJno8ZS5pbj8iYmVmb3JlIjoiIl0uZmlsdGVyKEJvb2xlYW4pLmpvaW4oIiAiKSxGPXMuZ2V0KHopPy5mcm9tO1QucHVzaChgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSIke0N9IiBkYXRhLWRheT0iJHt6fSIke0k/IiBkaXNhYmxlZCI6IiJ9IGFyaWEtbGFiZWw9IiR7bChGZSh6KS5sb25nKX0ke1o/YygiLCBjaGVjay1pbiIsIu+8jOWFpeS9jyIpOmllP2MoIiwgY2hlY2stb3V0Iiwi77yM56a75bqXIik6IiJ9JHtGP2woYyhgLCBmcm9tICR7Rn1gLGDvvIwke0Z96LW3YCkpOiIifSIke1p8fGllPycgYXJpYS1wcmVzc2VkPSJ0cnVlIic6IiJ9PjxzcGFuPjxiIGNsYXNzPSJjZC1uIj4ke3h9PC9iPiR7Rj9gPGkgY2xhc3M9ImNkLXAiPiR7bChGKX08L2k+YDoiIn08L3NwYW4+PC9idXR0b24+YCl9cmV0dXJuYDxkaXYgY2xhc3M9ImNhbC1tb250aCI+CiAgICAgICAgPGRpdiBjbGFzcz0iY2FsLW10Ij4ke2woYil9PC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iY2FsLWdyaWQiPiR7KHJlPT09InpoIj9bIuS4gCIsIuS6jCIsIuS4iSIsIuWbmyIsIuS6lCIsIuWFrSIsIuaXpSJdOlsiTW8iLCJUdSIsIldlIiwiVGgiLCJGciIsIlNhIiwiU3UiXSkubWFwKHg9PmA8c3BhbiBjbGFzcz0iY2FsLWRvdyIgYXJpYS1oaWRkZW49InRydWUiPiR7eH08L3NwYW4+YCkuam9pbigiIil9JHtULmpvaW4oIiIpfTwvZGl2PgogICAgICA8L2Rpdj5gfTtyZXR1cm5gCiAgICA8ZGl2IGNsYXNzPSJjYWwiIHJvbGU9Imdyb3VwIiBhcmlhLWxhYmVsPSIke2l9Ij4KICAgICAgPGRpdiBjbGFzcz0iY2FsLXRvcCI+CiAgICAgICAgPGRpdiBjbGFzcz0iY2FsLXNheSIgYXJpYS1saXZlPSJwb2xpdGUiPiR7aX08c21hbGw+JHtsKGQpfTwvc21hbGw+PC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iY2FsLW5hdiI+CiAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgZGF0YS1jYWwtbmF2PSItMSIgYXJpYS1sYWJlbD0iJHtjKCJQcmV2aW91cyBtb250aCIsIuS4iuS4quaciCIpfSIke2UubW9udGg8PXQ/IiBkaXNhYmxlZCI6IiJ9PiR7RS5jaGV2TH08L2J1dHRvbj4KICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBkYXRhLWNhbC1uYXY9IjEiIGFyaWEtbGFiZWw9IiR7YygiTmV4dCBtb250aCIsIuS4i+S4quaciCIpfSIke2UubW9udGg+PW4/IiBkaXNhYmxlZCI6IiJ9PiR7RS5jaGV2Un08L2J1dHRvbj4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9ImNhbC1tb250aHMiPiR7dShlLm1vbnRoKX0ke3UoeWkoZS5tb250aCwxKSl9PC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9ImNhbC1mb290Ij4KICAgICAgICA8c3BhbiBjbGFzcz0iY2FsLWxlZ2VuZCI+JHtyP2A8c3BhbiBjbGFzcz0iY2FsLWJlc3QiPiR7bChjKGBMb3dlc3Q6IGFycml2ZSAke28oU3RyaW5nKHIuY2hlY2tJbikpfSwgZnJvbSAke3IuZnJvbX1gLGDmnIDkvY7vvJoke28oU3RyaW5nKHIuY2hlY2tJbikpfeWFpeS9j++8jCR7ci5mcm9tfei1t2ApKX08L3NwYW4+YDplLnBpY2tpbmc9PT0iaW4iP2MoIlRhcCB0aGUgbmlnaHQgeW91IGFycml2ZS4iLCLngrnpgInlhaXkvY/pgqPlpKnjgIIiKTpjKCJUYXAgdGhlIG1vcm5pbmcgeW91IGxlYXZlLiIsIueCuemAieemu+W6l+mCo+WkqeOAgiIpfSR7cy5zaXplP2A8c21hbGw+JHtsKGMoYFByaWNlczogJHt1ZShhKX0gZnJvbSB0aGF0IGRheSwgdGF4ZXMgaW4uIERheXMgd2l0aG91dCBvbmUgd2VyZSBub3QgcXVvdGVkLmAsYOS7t+agvOS4uuW9k+WkqeWFpeS9jyAke3VlKGEpfeeahOaAu+S7t++8jOWQq+eoju+8m+ayoeacieS7t+agvOeahOaXpeWtkOacquaKpeS7t+OAgmApKX08L3NtYWxsPmA6IiJ9PC9zcGFuPgogICAgICAgIDxidXR0b24gY2xhc3M9ImdvIHNvZnQgc20iIHR5cGU9ImJ1dHRvbiIgZGF0YS1jYWwtY2xvc2U+JHtlLmluJiZlLm91dD9jKCJEb25lIiwi5a6M5oiQIik6YygiQ2xvc2UiLCLlhbPpl60iKX08L2J1dHRvbj4KICAgICAgPC9kaXY+CiAgICA8L2Rpdj5gfSx4dD0oZSx0KT0+e2NvbnN0IG49ZG9jdW1lbnQucXVlcnlTZWxlY3RvcihgLndoZW5iYXJbZGF0YS13aGVuPSIke2V9Il1gKSxvPUdsW2VdOyFufHwhb3x8KG4ub3V0ZXJIVE1MPVdyKGUsby5taW4se3Jvb21zOm8ucm9vbXMsc2lkZTpvLnNpZGUscGVuZGluZzpvLnBlbmRpbmd9KSx0JiZkb2N1bWVudC5xdWVyeVNlbGVjdG9yKHQpPy5mb2N1cygpKX0sUF89KGUsdCk9Pntjb25zdCBuPUdsW2VdO2lmKCFuKXJldHVybjtpZihSJiZSLnBhaXI9PT1lJiZSLnBpY2tpbmc9PT10KXtSPW51bGwseHQoZSxgW2RhdGEtY2FsPSIke2V9OiR7dH0iXWApO3JldHVybn1jb25zdCBvPXcuY2hlY2tJbixzPXcuY2hlY2tPdXQ7Uj17cGFpcjplLHBpY2tpbmc6dCxtb250aDpycyh0PT09Im91dCImJnM/czpvfHxuLm1pbiksaW46byxvdXQ6cyxtaW46bi5taW59LFIubW9udGg8cnMobi5taW4pJiYoUi5tb250aD1ycyhuLm1pbikpLHh0KGUsYFtkYXRhLWNhbD0iJHtlfToke3R9Il1gKX0scmc9KCk9PntpZighUj8uaW4pcmV0dXJuO2NvbnN0e3BhaXI6ZX09Uix0PVIuaW4sbj1SLm91dCYmUi5vdXQ+dD9SLm91dDpJdCh0LDEpO1I9bnVsbDtjb25zdFtvLHNdPUtsW2VdLHI9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQobyksYT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChzKTshcnx8IWF8fChhLnZhbHVlPW4sci52YWx1ZT10LHIuZGlzcGF0Y2hFdmVudChuZXcgRXZlbnQoImNoYW5nZSIse2J1YmJsZXM6ITB9KSkseHQoZSxgW2RhdGEtY2FsPSIke2V9OmluIl1gKSl9LEVfPWU9PntpZighUnx8ZTxSLm1pbilyZXR1cm47Y29uc3R7cGFpcjp0fT1SO2lmKFIucGlja2luZz09PSJpbiJ8fCFSLmlufHxlPD1SLmluKXtSLmluPWUsKCFSLm91dHx8Ui5vdXQ8PWUpJiYoUi5vdXQ9IiIpLFIucGlja2luZz0ib3V0Iix4dCh0LGBbZGF0YS1kYXk9IiR7ZX0iXWApO3JldHVybn1SLm91dD1lLHJnKCl9LGlnPSgpPT51ZSh3LmNoZWNrSW4mJncuY2hlY2tPdXQ/Q2Uody5jaGVja0luLHcuY2hlY2tPdXQpOjApLEl0PShlLHQpPT5uZXcgRGF0ZShEYXRlLnBhcnNlKGAke2V9VDEyOjAwOjAwWmApK3QqODY0ZTUpLnRvSVNPU3RyaW5nKCkuc2xpY2UoMCwxMCksYWc9KCk9Pm5ldyBEYXRlKERhdGUubm93KCktbmV3IERhdGUoKS5nZXRUaW1lem9uZU9mZnNldCgpKjZlNCkudG9JU09TdHJpbmcoKS5zbGljZSgwLDEwKSxjZz1lPT57Y29uc3QgdD1bLi4uZT8udG9kYXk/W2UudG9kYXkubWluLGUudG9kYXkubWF4XTpbXSwuLi4oZT8uaG90ZWxzPz9bXSkubWFwKG89PlN0cmluZyhvLnRvZGF5VGhlcmU/PyIiKSldLmZpbHRlcihvPT4vXlxkezR9LVxkezJ9LVxkezJ9JC8udGVzdChvKSkuc29ydCgpLG49YWcoKTtyZXR1cm57bWluOlt0WzBdPz9uLG5dLnNvcnQoKVswXT8/bixzdGFydDp0LmF0KC0xKT8/bn19LE9fPWU9Pntjb25zdHttaW46dCxzdGFydDpufT1jZyhlKTsoIXcuY2hlY2tJbnx8dy5jaGVja0luPHQpJiYody5jaGVja0luPW4pLCghdy5jaGVja091dHx8dy5jaGVja091dDw9dy5jaGVja0luKSYmKHcuY2hlY2tPdXQ9SXQody5jaGVja0luLDEpKTtjb25zdCBvPVdyKCJkY2kiLHQse3Jvb21zOllsKCJkYXRhLXJvb21zLW4iLCJybiIpLHNpZGU6ZS5zY29wZT8iIjpgPGJ1dHRvbiBjbGFzcz0iZ28iIHR5cGU9ImJ1dHRvbiIgZGF0YS1hY3Q9ImZpbmQiPiR7RS5zZWFyY2h9JHtjKCJTZWFyY2giLCLmkJzntKIiKX08L2J1dHRvbj5gfSkscz1gPGRpdiBjbGFzcz0ic2VhcmNoIj4KICAgICAgPGxhYmVsIGNsYXNzPSJ3aGVyZSI+JHtFLnBpbn08aW5wdXQgaWQ9IndoZXJlIiB0eXBlPSJzZWFyY2giIGF1dG9jb21wbGV0ZT0ib2ZmIiBwbGFjZWhvbGRlcj0iJHtjKCJBIGNpdHksIGEgY291bnRyeSBvciBhIGhvdGVsIiwi5Z+O5biC44CB5Zu95a625oiW6YWS5bqX5ZCNIil9IiBhcmlhLWxhYmVsPSIke2MoIldoZXJlIHRvIiwi55uu55qE5ZywIil9Ij48L2xhYmVsPgogICAgICAke299CiAgICA8L2Rpdj5gLHI9dT0+YDxkaXYgY2xhc3M9InBsYWNlcyI+JHt1Lm1hcCgocCxoKT0+YDxidXR0b24gY2xhc3M9ImNoaXAgcGxhY2UiIHR5cGU9ImJ1dHRvbiIgZGF0YS1wbGFjZT0iJHtsKHAubmFtZSl9IiR7aD49YnQ/IiBoaWRkZW4iOiIifT4ke2wocC5uYW1lKX0gPHNtYWxsPiR7bChwLmNvdW50KX08L3NtYWxsPjwvYnV0dG9uPmApLmpvaW4oIiIpfSR7dS5sZW5ndGg+YnQ/YDxidXR0b24gY2xhc3M9ImNoaXAgcGxhY2UiIHR5cGU9ImJ1dHRvbiIgZGF0YS1hY3Q9Im1vcmUtcGxhY2VzIj4rJHt1Lmxlbmd0aC1idH0gbW9yZTwvYnV0dG9uPmA6IiJ9PC9kaXY+YCxhPWUuc2NvcGU7aWYoYSlyZXR1cm5bYDxkaXYgY2xhc3M9ImhlbGxvIj48aDIgY2xhc3M9ImgtbmFtZSI+JHtsKGEubmFtZSl9PC9oMj48ZGl2IGNsYXNzPSJoLXdoZXJlIj4ke2woZS50b3RhbCl9ICR7bChlLnZvY2FiPy5ub3VuUGx1cmFsPz8iaG90ZWxzIil9IGluICR7bCgoYS5jaXRpZXM/P1tdKS5sZW5ndGgpfSBjaXRpZXM8L2Rpdj48L2Rpdj5gLGA8ZGl2IGNsYXNzPSJzZWFyY2giPiR7b308L2Rpdj5gLHIoYS5jaXRpZXM/P1tdKSxgPGRpdiBjbGFzcz0iZm9vdCI+PGJ1dHRvbiBjbGFzcz0iZ28gcXVpZXQiIHR5cGU9ImJ1dHRvbiIgZGF0YS1wbGFjZS1hbGw9IiR7bChhLm5hbWUpfSI+JHtsKGMoYEFsbCAke2UudG90YWx9IGluICR7YS5uYW1lfWAsYCR7YS5uYW1lfeWFqOmDqCAke2UudG90YWx9IOWutmApKX08L2J1dHRvbj48L2Rpdj5gXS5qb2luKCIiKTtjb25zdCBpPWUucmVnaW9ucz8/W10sZD1pLmZsYXRNYXAodT0+dS5jb3VudHJpZXM/P1tdKS5mbGF0TWFwKHU9PnUuY2l0aWVzPz9bXSkubWFwKCh1LHApPT4oe2M6dSxpOnB9KSkuc29ydCgodSxwKT0+TnVtYmVyKHAuYy5jb3VudCktTnVtYmVyKHUuYy5jb3VudCl8fHUuaS1wLmkpLnNsaWNlKDAsYnQpLm1hcCgoe2M6dX0pPT51KTtyZXR1cm5bYDxkaXYgY2xhc3M9ImhlbGxvIj48aDIgY2xhc3M9ImgtbmFtZSI+JHtjKCJXaGVyZSB0bz8iLCLmg7PkvY/lk6rph4zvvJ8iKX08L2gyPjxkaXYgY2xhc3M9Imgtd2hlcmUiPiR7bChjKGAke2UudG90YWx9ICR7ZS52b2NhYj8ubm91blBsdXJhbD8/ImhvdGVscyJ9JHtrZT9gIGZyb20gJHtrZS5zdXBwbGllcnMubGVuZ3RofSBncm91cHNgOiIifSwgcHJpY2VkIGZvciB0aGUgbmlnaHRzIHlvdSBjaG9vc2UuYCxgJHtlLnRvdGFsfSDlrrbphZLlupcke2tlP2DvvIzmnaXoh6ogJHtrZS5zdXBwbGllcnMubGVuZ3RofSDkuKrpm4blm6JgOiIife+8jOaMieS9oOmAieeahOaXpeacn+aKpeS7t+OAgmApKX08L2Rpdj48L2Rpdj5gLHMsa2UmJmtlLnN1cHBsaWVycy5sZW5ndGg+MT9gPGRpdiBjbGFzcz0icmVnaW9uIj48ZGl2IGNsYXNzPSJjb3VudHJ5bmFtZSI+JHtjKCJIb3RlbCBncm91cHMiLCLphZLlupfpm4blm6IiKX08L2Rpdj48ZGl2IGNsYXNzPSJwbGFjZXMgZ3JvdXBzIj4ke2tlLnN1cHBsaWVycy5tYXAodT0+YDxidXR0b24gY2xhc3M9ImNoaXAgcGxhY2UgZ3JvdXAiIHR5cGU9ImJ1dHRvbiIgZGF0YS1ncm91cC1ob21lPSIke2wodS5pZCl9Ij4ke3UubG9nb1VybD9gPGltZyBzcmM9IiR7bCh1LmxvZ29VcmwpfSIgYWx0PSIiPmA6IiJ9JHtsKHUubmFtZSl9PC9idXR0b24+YCkuam9pbigiIil9PC9kaXY+PC9kaXY+YDoiIixkLmxlbmd0aD9gPGRpdiBjbGFzcz0icmVnaW9uIj48ZGl2IGNsYXNzPSJjb3VudHJ5bmFtZSI+JHtjKCJUb3AgY2l0aWVzIiwi54Ot6Zeo5Z+O5biCIil9PC9kaXY+JHtyKGQpfTwvZGl2PmA6IiIsaS5sZW5ndGg+MT9gPGRpdiBjbGFzcz0icmVnaW9uIj48ZGl2IGNsYXNzPSJjb3VudHJ5bmFtZSI+JHtjKCJCeSByZWdpb24iLCLmjInlnLDljLoiKX08L2Rpdj48ZGl2IGNsYXNzPSJwbGFjZXMiPiR7aS5tYXAoKHUscCk9PmA8YnV0dG9uIGNsYXNzPSJjaGlwIHBsYWNlIHRhYiIgdHlwZT0iYnV0dG9uIiBkYXRhLXJlZ2lvbj0iJHtwfSIgYXJpYS1leHBhbmRlZD0iZmFsc2UiPiR7bCh1Lm5hbWUpfSA8c21hbGw+JHtsKHUuY291bnQpfTwvc21hbGw+PC9idXR0b24+YCkuam9pbigiIil9PC9kaXY+PC9kaXY+YDoiIiwuLi5pLm1hcCgodSxwKT0+YAogICAgICA8ZGl2IGNsYXNzPSJyZWdpb24iIGRhdGEtcmVnaW9uLWJvZHk9IiR7cH0iIGhpZGRlbj4KICAgICAgICAkeyh1LmNvdW50cmllcz8/W10pLm1hcCgoaCxiKT0+e2NvbnN0ICQ9aC5jaXRpZXM/P1tdLGs9JC5sZW5ndGg9PT0xPyRbMF06dm9pZCAwO3JldHVybmAKICAgICAgICAgIDxkaXYgY2xhc3M9ImRlc3QiJHtiPj10aT8iIGhpZGRlbiI6IiJ9PgogICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJkZXN0LWNvdW50cnkiIHR5cGU9ImJ1dHRvbiIgZGF0YS1wbGFjZT0iJHtsKGgubmFtZSl9Ij4ke2woaC5uYW1lKX0ke2smJmsubmFtZSE9PWgubmFtZT9gPHNtYWxsPiDCtyAke2woay5uYW1lKX08L3NtYWxsPmA6IiJ9IDxzbWFsbCBjbGFzcz0ibiI+JHtsKGguY291bnQpfTwvc21hbGw+PC9idXR0b24+CiAgICAgICAgICAgICR7JC5sZW5ndGg+MT9yKCQpOiIifQogICAgICAgICAgPC9kaXY+YH0pLmpvaW4oIiIpfQogICAgICAgICR7KHUuY291bnRyaWVzPz9bXSkubGVuZ3RoPnRpP2A8ZGl2IGNsYXNzPSJwbGFjZXMiPjxidXR0b24gY2xhc3M9ImNoaXAgcGxhY2UiIHR5cGU9ImJ1dHRvbiIgZGF0YS1hY3Q9Im1vcmUtY291bnRyaWVzIj4rJHsodS5jb3VudHJpZXM/P1tdKS5sZW5ndGgtdGl9IG1vcmUgY291bnRyaWVzPC9idXR0b24+PC9kaXY+YDoiIn0KICAgICAgPC9kaXY+YCksYDxkaXYgY2xhc3M9ImZvb3QiPgogICAgICAgPGJ1dHRvbiBjbGFzcz0iZ28gcXVpZXQiIHR5cGU9ImJ1dHRvbiIgZGF0YS1hY3Q9ImFsbC1ob3RlbHMiPiR7bChjKGBCcm93c2UgYWxsICR7ZS50b3RhbH0gJHtlLnZvY2FiPy5ub3VuUGx1cmFsPz8iaG90ZWxzIn1gLGDmtY/op4jlhajpg6ggJHtlLnRvdGFsfSDlrrbphZLlupdgKSl9PC9idXR0b24+CiAgICAgPC9kaXY+YCxgPGRpdiBjbGFzcz0iaG9tZS1saW5rcyI+CiAgICAgICA8YnV0dG9uIGNsYXNzPSJsaW5reSIgdHlwZT0iYnV0dG9uIiBkYXRhLWFjdD0iYm9va2luZ3MiPiR7YygiTXkgYm9va2luZ3MiLCLmiJHnmoTpooTorqIiKX08L2J1dHRvbj4KICAgICAgIDxzcGFuIGFyaWEtaGlkZGVuPSJ0cnVlIj7Ctzwvc3Bhbj4KICAgICAgIDxidXR0b24gY2xhc3M9Imxpbmt5IiB0eXBlPSJidXR0b24iIGRhdGEtYWN0PSJmaW5kLWJvb2tpbmciPiR7YygiRmluZCBhIGJvb2tpbmcgYnkgaXRzIGNvZGUiLCLnlKjnoa7orqTnoIHmn6Xmib7pooTorqIiKX08L2J1dHRvbj4KICAgICA8L2Rpdj5gXS5qb2luKCIiKX0sYnQ9OCx0aT02LGxnPWU9Pntjb25zdCB0PWUuZm9yU3RheTtyZXR1cm4gdD9gPHNwYW4gY2xhc3M9InQtZnJvbSI+JHtsKHQudG90YWwpfTxzbWFsbCBjbGFzcz0idC1zdWIiPjxzcGFuIGNsYXNzPSJuYiI+JHtsKFtOdW1iZXIodC5yb29tcyk+MT9jKGAke3Qucm9vbXN9IHJvb21zIMOXYCxgJHt0LnJvb21zfemXtCDDl2ApOiIiLE51bWJlcih0LmhvdXJzKT4wP2MoYCR7enQodC5ob3Vycyl9IHRvZGF5YCxg5LuK5aSpJHt6dCh0LmhvdXJzKX1gKTp1ZShOdW1iZXIodC5uaWdodHMpKV0uZmlsdGVyKEJvb2xlYW4pLmpvaW4oIiAiKSl9PC9zcGFuPjxzcGFuIGNsYXNzPSJ0LXNlcCI+IMK3IDwvc3Bhbj48c3BhbiBjbGFzcz0ibmIiPiR7YygidGF4ZXMgaW4iLCLlkKvnqI7otLkiKX08L3NwYW4+PC9zbWFsbD48L3NwYW4+YDplLm5vUm9vbXNGb3JTdGF5P2A8c3BhbiBjbGFzcz0idC1mcm9tIHQtbm9uZSI+JHsvc2xlZXBzLy50ZXN0KFN0cmluZyhlLm5vUm9vbXNGb3JTdGF5KSk/bChjKGBObyByb29tIHNsZWVwcyAke3cuZ3Vlc3RzfWAsYOayoeacieWPr+S9jyAke3cuZ3Vlc3RzfSDkurrnmoTmiL/lnotgKSk6YygiTm8gcm9vbSBmb3IgdGhlc2UgZGF0ZXMiLCLov5nkupvml6XmnJ/msqHmnInnqbrmiL8iKX08L3NwYW4+YDplLmZyb21OaWdodGx5P2A8c3BhbiBjbGFzcz0idC1mcm9tIj48c3BhbiBjbGFzcz0idC1wcmUiPiR7YygiRnJvbSAiLCIiKX08L3NwYW4+JHtsKGUuZnJvbU5pZ2h0bHkpfSR7YygiIiwnPHNwYW4gY2xhc3M9InQtcHJlIj4g6LW3PC9zcGFuPicpfTxzbWFsbD4ke2MoIiAvIG5pZ2h0ICsgdGF4Iiwi5q+P5pma77yM5pyq5ZCr56iO6LS5Iil9PC9zbWFsbD48L3NwYW4+YDpgPHNwYW4gY2xhc3M9InQtZnJvbSB0LW5vbmUiPiR7YygiQWRkIGRhdGVzIGZvciBwcmljZXMiLCLpgInlpb3ml6XmnJ/nnIvku7fmoLwiKX08L3NwYW4+YH07bGV0IGtpPSExO2NvbnN0IFJfPWU9Pntjb25zdCB0PWUuZm9yU3RheTtpZighdClyZXR1cm4iIjtjb25zdCBuPVtlLmxvd2VzdD9gPHNwYW4gY2xhc3M9ImJhZGdlIGdvb2QiPiR7YygiTG93ZXN0IHByaWNlIiwi5pyA5L2O5Lu3Iil9PC9zcGFuPmA6IiIsLi4uKEFycmF5LmlzQXJyYXkodC5sYWJlbHMpP3QubGFiZWxzOltdKS5tYXAobz0+Zmdbb10pLmZpbHRlcihCb29sZWFuKS5tYXAobz0+YDxzcGFuIGNsYXNzPSJiYWRnZSR7bz8uc2F2ZT8iIGdvb2QiOiIifSI+JHtsKGMobz8udGV4dD8/IiIsbz8uemg/PyIiKSl9PC9zcGFuPmApLHQuZnJlZUNhbmNlbGxhdGlvbiYmIWtpP2A8c3BhbiBjbGFzcz0icGVyayI+JHtFLmNoZWNrfSR7YygiRnJlZSBjYW5jZWxsYXRpb24iLCLlhY3otLnlj5bmtogiKX08L3NwYW4+YDoiIixOdW1iZXIodC5yb29tc0xlZnQpPD0zP2A8c3BhbiBjbGFzcz0iYmFkZ2Ugd2FybiI+JHtsKGMoYCR7dC5yb29tc0xlZnR9IGxlZnRgLGDku4XliakgJHt0LnJvb21zTGVmdH0g6Ze0YCkpfTwvc3Bhbj5gOiIiXS5maWx0ZXIoQm9vbGVhbik7cmV0dXJuIG4ubGVuZ3RoP2A8c3BhbiBjbGFzcz0idC10YWdzIj4ke24uam9pbigiIil9PC9zcGFuPmA6IiJ9LFp0PSgpPT53LmNoZWNrSW4mJncuY2hlY2tPdXQ/e2NoZWNrSW46dy5jaGVja0luLGNoZWNrT3V0OncuY2hlY2tPdXQsZ3Vlc3RzOncuZ3Vlc3RzLC4uLkw+MT97cm9vbXM6TH06e319Ont9LE5fPWU9Pntjb25zdHtjaGVja0luOnQsY2hlY2tPdXQ6bixndWVzdHM6byxyb29tczpzLC4uLnJ9PWU/P3t9O3JldHVybiByfSxaXz0oZSx0KT0+e2NvbnN0e21pbjpuLHN0YXJ0Om99PWNnKHQpO3JldHVybighdy5jaGVja0lufHx3LmNoZWNrSW48bikmJih3LmNoZWNrSW49byksKCF3LmNoZWNrT3V0fHx3LmNoZWNrT3V0PD13LmNoZWNrSW4pJiYody5jaGVja091dD1JdCh3LmNoZWNrSW4sMSkpLFdyKCJsY2kiLG4se3Jvb21zOllsKCJkYXRhLWxpc3Qtcm9vbXMiLCJscm4iKSxzaWRlOmU/IiI6YDxidXR0b24gY2xhc3M9ImdvIiB0eXBlPSJidXR0b24iIGRhdGEtYWN0PSJwcmljZS1saXN0Ij4ke2MoIlNob3cgcHJpY2VzIiwi5p+l55yL5Lu35qC8Iil9PC9idXR0b24+YCxwZW5kaW5nOiFlfSl9O2xldCBIZT0iZGF0ZXMiO2NvbnN0IHVnPSJkYXRlcyIsaXM9ZT0+e2NvbnN0IHQ9ZT8/e307cmV0dXJuey4uLnQuZ3JvdXB8fHQuc3VwcGxpZXI/e2dyb3VwOnQuZ3JvdXB8fHQuc3VwcGxpZXJ9Ont9LC4uLnQuYnJhbmQ/e2JyYW5kOnQuYnJhbmR9Ont9LC4uLkFycmF5LmlzQXJyYXkodC5mYWNpbGl0aWVzKSYmdC5mYWNpbGl0aWVzLmxlbmd0aD97ZmFjaWxpdGllczp0LmZhY2lsaXRpZXN9Ont9LC4uLnQuZnJlZUNhbmNlbGxhdGlvbj97ZnJlZUNhbmNlbGxhdGlvbjohMH06e30sLi4udC5icmVha2Zhc3Q/e2JyZWFrZmFzdDohMH06e319fSx0ZD1lPT57Y29uc3R7Z3JvdXA6dCxzdXBwbGllcjpuLGJyYW5kOm8sZmFjaWxpdGllczpzLGZyZWVDYW5jZWxsYXRpb246cixicmVha2Zhc3Q6YSwuLi5pfT1lPz97fTtyZXR1cm4gaX0sTV89ZT0+e2NvbnN0IHQ9aXMoZSk7cmV0dXJuKHQuZ3JvdXA/MTowKSsodC5icmFuZD8xOjApKyh0LmZhY2lsaXRpZXM/Lmxlbmd0aD8/MCkrKHQuZnJlZUNhbmNlbGxhdGlvbj8xOjApKyh0LmJyZWFrZmFzdD8xOjApfSxqXz1lPT57Y29uc3QgdD1lLnJlZmluZTtpZighdClyZXR1cm4iIjtjb25zdCBuPShzLHIsYSxpKT0+YDxidXR0b24gY2xhc3M9ImNoaXAgcGxhY2Ugc29ydCIgdHlwZT0iYnV0dG9uIiBkYXRhLWZpbHRlcj0iJHtsKHMpfSIgYXJpYS1wcmVzc2VkPSIke2k/InRydWUiOiJmYWxzZSJ9Ij4ke2wocil9IDxzbWFsbD4ke2woYSl9PC9zbWFsbD48L2J1dHRvbj5gLG89KHMscik9PnIubGVuZ3RoP2A8ZGl2IGNsYXNzPSJmZ3JvdXAiPjxzcGFuIGNsYXNzPSJzb3J0cy1rIj4ke2wocyl9PC9zcGFuPiR7ci5qb2luKCIiKX08L2Rpdj5gOiIiO3JldHVybltvKGMoIkdyb3VwIiwi6ZuG5ZuiIiksKHQuZ3JvdXBzPz9bXSkubWFwKHM9Pm4oYGdyb3VwOiR7cy5pZH1gLFN0cmluZyhUdChzLmlkKT8ubmFtZT8/cy5pZCkscy5jb3VudCxzLm9uKSkpLG8oYygiQnJhbmQiLCLlk4HniYwiKSwodC5icmFuZHM/P1tdKS5tYXAocz0+bihgYnJhbmQ6JHtzLm5hbWV9YCxzLm5hbWUscy5jb3VudCxzLm9uKSkpLG8oYygiSGFzIiwi6K6+5pa9IiksKHQuZmFjaWxpdGllcz8/W10pLm1hcChzPT5uKGBmYWNpbGl0eToke3Mua2V5fWAscy5sYWJlbCxzLmNvdW50LHMub24pKSksbyhjKCJSb29tIiwi5oi/5Z6LIiksKHQucm9vbT8/W10pLm1hcChzPT5uKHMua2V5LHMubGFiZWwscy5jb3VudCxzLm9uKSkpXS5qb2luKCIiKX0sZGc9KGUsdCxuKT0+e2NvbnN0IG89ISFlLnN0YXk/LmNoZWNrSW4scz1NXyhlLmFzaykscj1qXyhlKSxhPXBnLmZpbmQoKFt1XSk9PnU9PT1uKSxpPWE/YyhhWzFdLGFbMl0pOmMoIlJlY29tbWVuZGVkIiwi5o6o6I2QIiksZD0odSxwKT0+YDxidXR0b24gY2xhc3M9ImNoaXAgcGxhY2UgdG9vbCIgdHlwZT0iYnV0dG9uIiBkYXRhLXBhbmVsPSIke3V9IiBhcmlhLWV4cGFuZGVkPSIke0hlPT09dT8idHJ1ZSI6ImZhbHNlIn0iPiR7cH08L2J1dHRvbj5gO3JldHVybmAKICAgICR7Wl8obyxlKX0KICAgICR7dHx8cnx8cz9gPGRpdiBjbGFzcz0icGxhY2VzIHRvb2xiYXIiPgogICAgICAke3Q/ZCgic29ydCIsYCR7RS5zb3J0fTxzcGFuPiR7YygiU29ydCIsIuaOkuW6jyIpfSR7YygiOiAiLCLvvJoiKX0ke2woaSl9PC9zcGFuPmApOiIifQogICAgICAke3J8fHM/ZCgiZmlsdGVycyIsYCR7RS5zbGlkZXJzfTxzcGFuPiR7YygiRmlsdGVycyIsIuetm+mAiSIpfSR7cz9gIMK3ICR7c31gOiIifTwvc3Bhbj5gKToiIn0KICAgICAgJHtzP2A8YnV0dG9uIGNsYXNzPSJsaW5reSIgdHlwZT0iYnV0dG9uIiBkYXRhLWFjdD0iY2xlYXItZmlsdGVycyI+JHtjKCJDbGVhciIsIua4hemZpCIpfTwvYnV0dG9uPmA6IiJ9CiAgICA8L2Rpdj5gOiIifQogICAgJHt0P2A8ZGl2IGNsYXNzPSJmaWx0ZXItcGFuZWwiIGRhdGEtcGFuZWwtYm9keT0ic29ydCIke0hlPT09InNvcnQiPyIiOiIgaGlkZGVuIn0+JHt0fTwvZGl2PmA6IiJ9CiAgICAke3I/YDxkaXYgY2xhc3M9ImZpbHRlci1wYW5lbCIgZGF0YS1wYW5lbC1ib2R5PSJmaWx0ZXJzIiR7SGU9PT0iZmlsdGVycyI/IiI6IiBoaWRkZW4ifT4ke3J9PC9kaXY+YDoiIn1gfSxwZz1bWyJncm91cCIsIlJlY29tbWVuZGVkIiwi5o6o6I2QIl0sWyJwcmljZS1sb3ciLCJMb3dlc3QgcHJpY2UiLCLku7fmoLzku47kvY7liLDpq5giXSxbInByaWNlLWhpZ2giLCJIaWdoZXN0IHByaWNlIiwi5Lu35qC85LuO6auY5Yiw5L2OIl0sWyJyYXRpbmciLCJSYXRpbmciLCLor4TliIYiXV0scV89MztsZXQgcW49ImlubGluZSIsaGc9W107Y29uc3QgTG49KCk9PnFuPT09ImZ1bGxzY3JlZW4iLFFsPSgpPT57Y29uc3QgZT1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIjY29udGVudCAudGlsZXMiKTtpZihlPy5vZmZzZXRXaWR0aCl7Y29uc3Qgbz1nZXRDb21wdXRlZFN0eWxlKGUpLmdyaWRUZW1wbGF0ZUNvbHVtbnMuc3BsaXQoIiAiKS5maWx0ZXIoQm9vbGVhbikubGVuZ3RoO2lmKG8+MClyZXR1cm4gb31jb25zdCB0PXdpbmRvdy5pbm5lcldpZHRofHxKKCJjb250ZW50IikuY2xpZW50V2lkdGh8fDA7aWYodDw9NTIwKXJldHVybiAxO2NvbnN0IG49SigiY29udGVudCIpLmNsaWVudFdpZHRofHx0LTQwO3JldHVybiBNYXRoLm1heCgxLE1hdGguZmxvb3IoKG4rMTQpLzIzNCkpfHwyfTtsZXQgWGw9MDtjb25zdCBMXz01LFZyPShlPTApPT57Y29uc3QgdD1YbHx8UWwoKSxuPXQ9PT0xP0xfOk1hdGgubWF4KDIsdCpxXyk7cmV0dXJuIGU+biYmZTw9bitNYXRoLm1heCgyLHQpP2U6bn07bGV0IF9zPTA7Y29uc3QgRF89ZT0+cmU9PT0iemgiP2UucmVwbGFjZSgvPlByZXZpb3VzPC9nLCI+5LiK5LiA6aG1PCIpLnJlcGxhY2UoLz5OZXh0PC9nLCI+5LiL5LiA6aG1PCIpLnJlcGxhY2UoL2FyaWEtbGFiZWw9IlByZXZpb3VzW14iXSoiL2csJ2FyaWEtbGFiZWw9IuS4iuS4gOmhtSInKS5yZXBsYWNlKC9hcmlhLWxhYmVsPSJOZXh0W14iXSoiL2csJ2FyaWEtbGFiZWw9IuS4i+S4gOmhtSInKS5yZXBsYWNlKC9hcmlhLWxhYmVsPSJQYWdlcyIvZywnYXJpYS1sYWJlbD0i57+76aG1IicpLnJlcGxhY2UoLyhcZCsp4oCTKFxkKykgb2YgKFxkKykvZywi56ysICQx4oCTJDIg5a6277yM5YWxICQzIOWutiIpLnJlcGxhY2UoLzAgb2YgKFxkKykvZywi5YWxICQxIOWutiIpLnJlcGxhY2UoL1ZpZXcgYWxsIChcZCspL2csIuafpeeci+WFqOmDqCAkMSDlrrYiKTplLEJfPWU9Pntfcz1WcihOdW1iZXIoZS50b3RhbD8/KGUuaG90ZWxzPz9bXSkubGVuZ3RoKS1OdW1iZXIoZS5vZmZzZXQ/PzApKTtjb25zdCB0PUxuKCk/ZS5ob3RlbHM/P1tdOihlLmhvdGVscz8/W10pLnNsaWNlKDAsX3MpO2tpPXQubGVuZ3RoPjEmJnQuZXZlcnkoej0+ei5mb3JTdGF5Py5mcmVlQ2FuY2VsbGF0aW9uKTtjb25zdCBuPVsuLi5uZXcgU2V0KHQubWFwKHo9PlN0cmluZyh6LmNpdHkpKSldLG89ej0+e2NvbnN0IEk9dC5maW5kKFo9PlouY2l0eT09PXopPy5jb3VudHJ5O3JldHVybiBJJiYhU3RyaW5nKEkpLnN0YXJ0c1dpdGgoeik/U3RyaW5nKEkpOiIifSxzPVsuLi5uZXcgU2V0KHQubWFwKHo9PlN0cmluZyh6LmNvdW50cnk/PyIiKSkpXSxyPXMubGVuZ3RoPjEsYT16PT5gCiAgICA8ZGl2IGNsYXNzPSJjaXR5Z3JvdXAiPgogICAgICAke24ubGVuZ3RoPjE/YDxkaXYgY2xhc3M9ImNpdHluYW1lIj4ke2woeil9JHshciYmbyh6KT9gPHNtYWxsPiDCtyAke2wobyh6KSl9PC9zbWFsbD5gOiIifTwvZGl2PmA6IiJ9CiAgICAgIDxkaXYgY2xhc3M9InRpbGVzIj4KICAgICAgICAke3QuZmlsdGVyKEk9PkkuY2l0eT09PXopLm1hcChJPT5gCiAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJ0aWxlJHtJLmxvd2VzdD8iIGxvd2VzdCI6IiJ9IiB0eXBlPSJidXR0b24iIGRhdGEtaG90ZWw9IiR7bChJLmlkKX0iPgogICAgICAgICAgICA8c3BhbiBjbGFzcz0idC1zaG90IiBzdHlsZT0iJHtkdChTdHJpbmcoSS5pZCkpfSI+CiAgICAgICAgICAgICAgJHtJLmltYWdlVXJsP2A8aW1nIHNyYz0iJHtsKEkuaW1hZ2VVcmwpfSIgYWx0PSIiPmA6IiJ9CiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InQtbWFyayI+JHtsKHB0KFN0cmluZyhJLm5hbWUpKSl9PC9zcGFuPgogICAgICAgICAgICAgICR7Q24oSSk/YDxzcGFuIGNsYXNzPSJ0LWJyYW5kIj4ke2woQ24oSSkpfTwvc3Bhbj5gOiIifQogICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0LWJvZHkiPgogICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0LW5hbWUiPiR7JG4oSS5uYW1lKX08L3NwYW4+CiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InQtbWV0YSI+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idC13aGVyZSI+JHtsKFtJLmFyZWEsbi5sZW5ndGg+MXx8U3RyaW5nKEkubmFtZSkuaW5jbHVkZXMoU3RyaW5nKEkuY2l0eSkpPyIiOkkuY2l0eV0uZmlsdGVyKEJvb2xlYW4pLmpvaW4oIiDCtyAiKSl9PC9zcGFuPgogICAgICAgICAgICAgICAgJHt3XyhJLnJhdGluZyl9CiAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICR7Ul8oSSl9CiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InQtZm9vdCI+JHtsZyhJKX08c3BhbiBjbGFzcz0idC1nbyIgYXJpYS1oaWRkZW49InRydWUiPiR7RS5jaGV2Un08L3NwYW4+PC9zcGFuPgogICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICA8L2J1dHRvbj5gKS5qb2luKCIiKX0KICAgICAgPC9kaXY+CiAgICA8L2Rpdj5gLGk9TnVtYmVyKGUudG90YWw/P3QubGVuZ3RoKSxkPU51bWJlcihlLm9mZnNldD8/MCksdT1pLWQtdC5sZW5ndGgscD1lLnBsYWNlcz8/W107ZS5hc2s/LmNpdHk7Y29uc3QgaD1wLmxlbmd0aD9gPGRpdiBjbGFzcz0icGxhY2VzIiByb2xlPSJncm91cCIgYXJpYS1sYWJlbD0iJHtjKCJXaGVyZSIsIuWcsOeCuSIpfSI+CiAgICAgICAgICAgJHtwLm1hcCgoeixJKT0+YDxidXR0b24gY2xhc3M9ImNoaXAgcGxhY2UiIHR5cGU9ImJ1dHRvbiIgZGF0YS1wbGFjZT0iJHtsKHoucGxhY2UpfSIke0k+PWJ0PyIgaGlkZGVuIjoiIn0+JHtsKHoubGFiZWwpfSA8c21hbGw+JHtsKHouY291bnQpfTwvc21hbGw+PC9idXR0b24+YCkuam9pbigiIil9CiAgICAgICAgICAgJHtwLmxlbmd0aD5idD9gPGJ1dHRvbiBjbGFzcz0iY2hpcCBwbGFjZSIgdHlwZT0iYnV0dG9uIiBkYXRhLWFjdD0ibW9yZS1wbGFjZXMiPiske3AubGVuZ3RoLWJ0fSBtb3JlPC9idXR0b24+YDoiIn0KICAgICAgICAgPC9kaXY+YDoiIixiPVN0cmluZyhlLnNvcnQ/PyJncm91cCIpLCQ9ISgoZS5jdXJyZW5jaWVzPz9bXSkubGVuZ3RoPjEpLGs9dC5sZW5ndGg+MT9gPGRpdiBjbGFzcz0icGxhY2VzIiByb2xlPSJncm91cCIgYXJpYS1sYWJlbD0iJHtjKCJPcmRlciIsIuaOkuW6jyIpfSI+JHtwZy5maWx0ZXIoKFt6XSk9PiR8fCF6LnN0YXJ0c1dpdGgoInByaWNlIikpLm1hcCgoW3osSSxaXSk9PmA8YnV0dG9uIGNsYXNzPSJjaGlwIHBsYWNlIHNvcnQiIHR5cGU9ImJ1dHRvbiIgZGF0YS1zb3J0PSIke3p9IiBhcmlhLXByZXNzZWQ9IiR7ej09PWI/InRydWUiOiJmYWxzZSJ9Ij4ke2MoSSxaKX08L2J1dHRvbj5gKS5qb2luKCIiKX08L2Rpdj5gOiIiLFQ9ZS5hc2s/LmNpdHk/U3RyaW5nKGUuYXNrLmNpdHkpOmUuYXNrPy5xdWVyeT9g4oCcJHtTdHJpbmcoZS5hc2sucXVlcnkpfeKAnWA6bi5sZW5ndGg9PT0xP1N0cmluZyhuWzBdKTpjKGBBbGwgJHtlLnZvY2FiPy5ub3VuUGx1cmFsPz8iaG90ZWxzIn1gLCLlhajpg6jphZLlupciKSx4PSEhZS5zdGF5Py5jaGVja0luO3JldHVybltgPGRpdiBjbGFzcz0ibGlzdC1oIj48aDIgY2xhc3M9ImgtbmFtZSI+JHtsKFQpfTwvaDI+PGRpdiBjbGFzcz0iaC13aGVyZSI+JHtsKHJlPT09InpoIj9gJHtpfSDlrrYke3g/YCDCtyAke3VlKENlKGUuc3RheS5jaGVja0luLGUuc3RheS5jaGVja091dCkpfSR7TD4xP2DjgIEke0x96Ze0YDoiIn3nmoTlkKvnqI7mgLvku7dgOiIgwrcg6YCJ5aW95pel5pyf55yL5L2P5a6/5oC75Lu3In1gOmAke2l9ICR7aT09PTE/ZS52b2NhYj8ubm91bj8/ImhvdGVsIjplLnZvY2FiPy5ub3VuUGx1cmFsPz8iaG90ZWxzIn0ke3g/YCDCtyBwcmljZXMgZm9yICR7dWUoQ2UoZS5zdGF5LmNoZWNrSW4sZS5zdGF5LmNoZWNrT3V0KSl9JHtMPjE/YCwgJHtMfSByb29tc2A6IiJ9LCB0YXhlcyBpbmA6IiDCtyBhZGQgZGF0ZXMgdG8gc2VlIHdoYXQgYSBzdGF5IGNvc3RzIn1gKX0ke2tpP2A8L2Rpdj48ZGl2IGNsYXNzPSJoLWZyZWUiPiR7RS5jaGVja30ke2MoIkV2ZXJ5IGhvdGVsIGhlcmUgaXMgZnJlZSB0byBjYW5jZWwiLCLov5nph4zmr4/lrrbpg73lj6/ku6XlhY3otLnlj5bmtogiKX1gOiIifTwvZGl2PjwvZGl2PmAsaCxkZyhlLGssYiksZS53aWRlbmVkP2A8ZGl2IGNsYXNzPSJ3YXJubm90ZSI+JHtsKGMoYE5vdGhpbmcgbWF0Y2hlZCAke2Uud2lkZW5lZC5mcm9tfS4gVGhlc2UgYXJlICR7ZS53aWRlbmVkLnRvfS5gLGDmsqHmnInmib7liLDkuI7igJwke2Uud2lkZW5lZC5mcm9tfeKAneebuOespueahOe7k+aenO+8jOS7peS4i+aYryR7ZS53aWRlbmVkLnRvfeOAgmApKX08L2Rpdj5gOiIiLGA8ZGl2PiR7cj9zLm1hcCh6PT5gPGRpdiBjbGFzcz0iY291bnRyeW5hbWUiPiR7bCh6KX08L2Rpdj4ke24uZmlsdGVyKEk9PnQuc29tZShaPT5aLmNpdHk9PT1JJiZTdHJpbmcoWi5jb3VudHJ5Pz8iIik9PT16KSkubWFwKGEpLmpvaW4oIiIpfWApLmpvaW4oIiIpOm4ubWFwKGEpLmpvaW4oIiIpfTwvZGl2PmAsKGUuY3VycmVuY2llcz8/W10pLmxlbmd0aD4xP2A8ZGl2IGNsYXNzPSJub3RlIj4ke2woYyhgUXVvdGVkIGluICR7ZS5jdXJyZW5jaWVzLmpvaW4oIiwgIil9IOKAlCBubyByYXRlIGlzIGFwcGxpZWQgaGVyZSwgc28gdGhpcyBpcyBub3QgYSBwcmljZSBvcmRlci4gT25lIGNpdHkgb3Igb25lIGNvdW50cnkgZ2l2ZXMgb25lIGN1cnJlbmN5LmAsYOS7t+agvOWIhuWIq+S7pSAke2UuY3VycmVuY2llcy5qb2luKCLjgIEiKX0g6K6h77yM6L+Z6YeM5LiN5YGa5o2i566X77yM5omA5Lul5LiN5oyJ5Lu35qC85o6S5bqP44CC5Y+q55yL5LiA5Liq5Z+O5biC5oiW5Zu95a6277yM5bCx5Y+q5pyJ5LiA56eN5biB56eN44CCYCkpfTwvZGl2PmA6IiIsZS5vdmVyQnVkZ2V0P2A8ZGl2IGNsYXNzPSJub3RlIj4ke2woYyhgJHtlLm92ZXJCdWRnZXR9IG1vcmUgbWF0Y2hlZCBhbmQgY2FtZSBpbiBvdmVyIHRoZSBwcmljZSBjZWlsaW5nLmAsYOWPpuaciSAke2Uub3ZlckJ1ZGdldH0g5a6256ym5ZCI5p2h5Lu277yM5L2G6LaF5Ye65LqG5Lu35qC85LiK6ZmQ44CCYCkpfTwvZGl2PmA6IiIsTG4oKT91PjA/YDxkaXYgY2xhc3M9Im5vdGUiPiR7bChjKGBTaG93aW5nICR7ZD9gJHtkKzF94oCTJHtkK3QubGVuZ3RofWA6dC5sZW5ndGh9IG9mICR7aX0uYCxg5pi+56S656ysICR7ZD9gJHtkKzF94oCTJHtkK3QubGVuZ3RofWA6YDHigJMke3QubGVuZ3RofWB9IOWutu+8jOWFsSAke2l9IOWutuOAgmApKX08L2Rpdj4KICAgICAgICAgICAke3VfKGMoYFNob3cgJHtNYXRoLm1pbigxMix1KX0gbW9yZWAsYOWGjeaYvuekuiAke01hdGgubWluKDEyLHUpfSDlrrZgKSwnZGF0YS1hY3Q9Im1vcmUtaG90ZWxzIicpfWA6IiI6RF8obF8oe2Zyb206ZCxjb3VudDp0Lmxlbmd0aCx0b3RhbDpOdW1iZXIoaSkscHJldjonZGF0YS1hY3Q9InBhZ2UtcHJldiInLG5leHQ6J2RhdGEtYWN0PSJwYWdlLW5leHQiJyxhbGw6aGcuaW5jbHVkZXMoImZ1bGxzY3JlZW4iKT8nZGF0YS1hY3Q9ImZ1bGxzY3JlZW4iJzpudWxsLG5vdW46ImhvdGVscyJ9KSldLmpvaW4oIiIpfSxVXz1lPT57Y29uc3QgdD1lLm5lYXJlc3Q/P1tdLG49ZS53aWRlbmVkP2A8ZGl2IGNsYXNzPSJ3YXJubm90ZSI+JHtsKGMoYE5vdGhpbmcgbWF0Y2hlZCAke2Uud2lkZW5lZC5mcm9tfSwgc28gdGhpcyBsb29rZWQgaW4gJHtlLndpZGVuZWQudG99LmAsYOayoeacieaJvuWIsOS4juKAnCR7ZS53aWRlbmVkLmZyb2194oCd55u456ym55qE57uT5p6c77yM5pS55Li65ZyoJHtlLndpZGVuZWQudG996YeM5om+44CCYCkpfTwvZGl2PmA6IiI7aWYoZS5iZWZvcmVGaWx0ZXJzKXJldHVybiBIZT0iZmlsdGVycyIsW24sYDxkaXYgY2xhc3M9Indhcm5ub3RlIj4ke2wocmU9PT0iemgiP2Dov5nph4znmoQgJHtlLmJlZm9yZUZpbHRlcnN9IOWutumFkuW6l++8jOayoeacieS4gOWutuWQjOaXtua7oei2s+i/meS6m+adoeS7tuOAgmA6ZS53aHk/P2BOb25lIG9mIHRoZSAke2UuYmVmb3JlRmlsdGVyc30gaGVyZSBoYXMgYWxsIG9mIHRob3NlIHRvZ2V0aGVyLmApfTwvZGl2PmAsZGcoZSwiIixTdHJpbmcoZS5hc2s/LnNvcnQ/PyJncm91cCIpKV0uam9pbigiIik7aWYoIXQubGVuZ3RoKXtjb25zdCBvPVN0cmluZyhlLmFzaz8uY2l0eT8/ZS5xdWVyeT8/ZS53aWRlbmVkPy5mcm9tPz8iIik7cmV0dXJuYCR7bn0KICAgICAgPGRpdiBjbGFzcz0ic3RhdGUiPgogICAgICAgIDxkaXYgY2xhc3M9InN0YXRlLWljbyI+JHtFLnNlYXJjaH08L2Rpdj4KICAgICAgICA8aDIgY2xhc3M9InN0YXRlLXQiPiR7bz9sKGMoYE5vdGhpbmcgaW4g4oCcJHtvfeKAnWAsYOKAnCR7b33igJ3msqHmnInnu5PmnpxgKSk6YygiTm8gaG90ZWxzIG1hdGNoIiwi5rKh5pyJ56ym5ZCI5p2h5Lu255qE6YWS5bqXIil9PC9oMj4KICAgICAgICA8cCBjbGFzcz0ic3RhdGUtZCI+JHtvP2woYyhgTm8gaG90ZWwgaGVyZSBpcyBpbiBvciBuZWFyIOKAnCR7b33igJ0uIFRyeSBhIGNpdHkgb3IgYSBjb3VudHJ5LmAsYOi/memHjOayoeacieS9jeS6juKAnCR7b33igJ3miJbpmYTov5HnmoTphZLlupfjgILmjaLkuKrln47luILmiJblm73lrrbor5Xor5XjgIJgKSk6YygiVHJ5IGEgY2l0eSwgYSBjb3VudHJ5IG9yIGEgaG90ZWwgbmFtZS4iLCLmjaLkuKrln47luILjgIHlm73lrrbmiJbphZLlupflkI3or5Xor5XjgIIiKX08L3A+CiAgICAgICAgPGRpdiBjbGFzcz0ic2VhcmNoIHJldHJ5Ij4KICAgICAgICAgIDxsYWJlbCBjbGFzcz0id2hlcmUiPiR7RS5zZWFyY2h9PGlucHV0IGlkPSJ3aGVyZSIgdHlwZT0ic2VhcmNoIiBhdXRvY29tcGxldGU9Im9mZiIgcGxhY2Vob2xkZXI9IiR7YygiQ2l0eSBvciBob3RlbCIsIuWfjuW4guaIlumFkuW6l+WQjSIpfSIgYXJpYS1sYWJlbD0iJHtjKCJXaGVyZSB0byIsIuebrueahOWcsCIpfSI+PC9sYWJlbD4KICAgICAgICAgIDxidXR0b24gY2xhc3M9ImdvIiB0eXBlPSJidXR0b24iIGRhdGEtYWN0PSJmaW5kIj4ke2MoIlNlYXJjaCIsIuaQnOe0oiIpfTwvYnV0dG9uPgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9ImZvb3QiPjxidXR0b24gY2xhc3M9ImdvIHF1aWV0IiB0eXBlPSJidXR0b24iIGRhdGEtYWN0PSJob21lIj4ke0UucGlufSR7YygiU2VlIGV2ZXJ5IGRlc3RpbmF0aW9uIiwi5p+l55yL5YWo6YOo55uu55qE5ZywIil9PC9idXR0b24+PC9kaXY+CiAgICAgIDwvZGl2PmB9cmV0dXJuW24sYDxkaXYgY2xhc3M9Indhcm5ub3RlIj4ke2woYyhgTm90aGluZyBjYW1lIGluIHVuZGVyIHRoZSBwcmljZSBjZWlsaW5nLiAke3QubGVuZ3RoPT09MT8iVGhlIG5lYXJlc3QgaXMiOiJUaGUgbmVhcmVzdCBhcmUifSBvdmVyIGl0LmAsIuayoeacieS9juS6juS7t+agvOS4iumZkOeahOmFkuW6l+OAguS7peS4i+aYr+acgOaOpei/keeahOWHoOWutu+8jOS7t+agvOeVpemrmOOAgiIpKX08L2Rpdj5gLGA8ZGl2IGNsYXNzPSJ0aWxlcyI+JHt0Lm1hcChvPT5gCiAgICAgIDxidXR0b24gY2xhc3M9InRpbGUgb3ZlciIgdHlwZT0iYnV0dG9uIiBkYXRhLWhvdGVsPSIke2woby5pZCl9Ij4KICAgICAgICA8c3BhbiBjbGFzcz0idC1zaG90IiBzdHlsZT0iJHtkdChTdHJpbmcoby5pZCkpfSI+CiAgICAgICAgICAke28uaW1hZ2VVcmw/YDxpbWcgc3JjPSIke2woby5pbWFnZVVybCl9IiBhbHQ9IiI+YDoiIn0KICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0LW1hcmsiPiR7bChwdChTdHJpbmcoby5uYW1lKSkpfTwvc3Bhbj4KICAgICAgICA8L3NwYW4+CiAgICAgICAgPHNwYW4gY2xhc3M9InQtYm9keSI+CiAgICAgICAgICA8c3BhbiBjbGFzcz0idC1uYW1lIj4ke2woby5uYW1lKX08L3NwYW4+CiAgICAgICAgICA8c3BhbiBjbGFzcz0idC13aGVyZSI+JHtsKFtvLmFyZWEsby5jaXR5XS5maWx0ZXIoQm9vbGVhbikuam9pbigiIMK3ICIpKX08L3NwYW4+CiAgICAgICAgICA8c3BhbiBjbGFzcz0idC1mb290Ij4KICAgICAgICAgICAgJHtsZyhvKX0KICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImJhZGdlIHdhcm4iPiR7YygiT3ZlciIsIui2heWHuiIpfTwvc3Bhbj4KICAgICAgICAgIDwvc3Bhbj4KICAgICAgICA8L3NwYW4+CiAgICAgIDwvYnV0dG9uPmApLmpvaW4oIiIpfTwvZGl2PmBdLmpvaW4oIiIpfSxtZz1lPT57Y29uc3QgdD1bZS5hcmVhLGUuY2l0eSxTdHJpbmcoZS5jb3VudHJ5Pz8iIikuc3RhcnRzV2l0aChTdHJpbmcoZS5jaXR5KSl8fHJlPT09InpoIiYmIUt0KFN0cmluZyhlLmNvdW50cnk/PyIiKSk/IiI6ZS5jb3VudHJ5XS5maWx0ZXIoQm9vbGVhbikuam9pbigiIMK3ICIpO3JldHVybmAKICA8ZGl2IGNsYXNzPSJoZXJvIiBzdHlsZT0iJHtkdChTdHJpbmcoZS5pZCkpfSI+CiAgICAke2UuaW1hZ2VVcmw/YDxpbWcgc3JjPSIke2woZS5pbWFnZVVybCl9IiBhbHQ9IiI+YDoiIn0KICAgIDxzcGFuIGNsYXNzPSJ0LW1hcmsiPiR7bChwdChTdHJpbmcoZS5uYW1lKSkpfTwvc3Bhbj4KICAgIDxkaXYgY2xhc3M9Imhlcm8tdHh0Ij4KICAgICAgJHtDbihlKSYmIVN0cmluZyhlLm5hbWUpLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoQ24oZSkudG9Mb3dlckNhc2UoKSk/YDxzcGFuIGNsYXNzPSJ0LWJyYW5kIj4ke2woQ24oZSkpfTwvc3Bhbj5gOiIifQogICAgICA8aDIgY2xhc3M9ImhvdGVsLW5hbWUiPiR7JG4oZS5uYW1lKX08L2gyPgogICAgICA8ZGl2IGNsYXNzPSJoZXJvLXdoZXJlIj48c3Bhbj4ke2wodCl9PC9zcGFuPiR7ZS5yYXRpbmc/YDxzcGFuIGNsYXNzPSJyYXRlIj4ke3RnfSR7bChlLnJhdGluZy52YWx1ZSl9PHNtYWxsPigke2woTnVtYmVyKGUucmF0aW5nLmNvdW50KS50b0xvY2FsZVN0cmluZygiZW4tR0IiKSl9KTwvc21hbGw+PC9zcGFuPmA6IiJ9PC9kaXY+CiAgICA8L2Rpdj4KICA8L2Rpdj4KICAke2Uuc3VtbWFyeT8vXlxzKijmqKHmi5/mlbDmja58c2ltdWxhdGVkfHRlc3QgZGF0YSkvaS50ZXN0KFN0cmluZyhlLnN1bW1hcnkpKT9gPGRpdiBjbGFzcz0iaC1zdW0gc2ltLW5vdGUiPiR7RS5pbmZvfTxzcGFuPiR7bChlLnN1bW1hcnkpfTwvc3Bhbj48L2Rpdj5gOmA8ZGl2IGNsYXNzPSJoLXN1bSI+JHtsKGUuc3VtbWFyeSl9PC9kaXY+YDoiIn0KICAkeyhlLmFtZW5pdGllcz8/W10pLmxlbmd0aD9gPHVsIGNsYXNzPSJhbWVuIiBhcmlhLWxhYmVsPSIke2MoIldoYXQgdGhlIGhvdGVsIGhhcyIsIumFkuW6l+iuvuaWvSIpfSI+JHtlLmFtZW5pdGllcy5zbGljZSgwLDgpLm1hcChuPT5gPGxpPiR7bChuKX08L2xpPmApLmpvaW4oIiIpfTwvdWw+YDoiIn1gfSxmZz17InJvb20tb25seSI6e3RleHQ6IlJvb20gb25seSIsemg6IuS4jeWQq+aXqSJ9LGJyZWFrZmFzdDp7dGV4dDoiQnJlYWtmYXN0Iix6aDoi5ZCr5pepIn0sImJyZWFrZmFzdC0xIjp7dGV4dDoiQnJlYWtmYXN0IGZvciAxIix6aDoi5Y2V5pepIn0sImJyZWFrZmFzdC0yIjp7dGV4dDoiQnJlYWtmYXN0IGZvciAyIix6aDoi5Y+M5pepIn0sImJyZWFrZmFzdC0zIjp7dGV4dDoiQnJlYWtmYXN0IGZvciAzIix6aDoi5LiJ5pepIn0scGFja2FnZTp7dGV4dDoiUGFja2FnZSIsemg6IuWll+mkkCJ9LCJmbGFzaC1zYWxlIjp7dGV4dDoiRmxhc2ggc2FsZSIsemg6IumZkOaXtueJueS7tyIsc2F2ZTohMH0sIm5pZ2h0LXNuYWNrIjp7dGV4dDoiTGF0ZS1uaWdodCByYXRlIix6aDoi5aSc5a615Lu3IixzYXZlOiEwfSwiZWFybHktYm9va2luZyI6e3RleHQ6IkJvb2stYWhlYWQgcmF0ZSIsemg6IuaPkOWJjeiuouS8mOaDoCIsc2F2ZTohMH0scHJvbW90aW9uOnt0ZXh0OiJQcm9tb3Rpb24iLHpoOiLkv4PplIAiLHNhdmU6ITB9fSxldT0oZSx0PW5ldyBTZXQpPT5bZS5iZWRzJiYhdC5oYXMoImJlZHMiKT9gPGxpPiR7RS5iZWR9JHtsKGUuYmVkcyl9PC9saT5gOiIiLHQuaGFzKCJzbGVlcHMiKT8iIjpgPGxpPiR7RS51c2Vyc30ke2woYyhgU2xlZXBzICR7ZS5zbGVlcHN9YCxg5Y+v5L2PICR7ZS5zbGVlcHN9IOS6umApKX0ke051bWJlcihlLm1heENoaWxkcmVuKT4wP2woYyhgIMK3ICR7ZS5tYXhDaGlsZHJlbn0gJHtOdW1iZXIoZS5tYXhDaGlsZHJlbik9PT0xPyJjaGlsZCI6ImNoaWxkcmVuIn1gLGAgwrcg5Y+v5bimICR7ZS5tYXhDaGlsZHJlbn0g5ZCN5YS/56ulYCkpOiIifTwvbGk+YCxlLnNpemVTcW0/YDxsaT4ke0Uuc2l6ZX0ke2woZS5zaXplU3FtKX0gbcKyPC9saT5gOiIiLGUudmlldyYmIXQuaGFzKCJ2aWV3Iik/YDxsaT4key93aW5kb3d856qXL2kudGVzdChTdHJpbmcoZS52aWV3KSk/RS53aW5kb3c6RS52aWV3fSR7bChKdChlLnZpZXcpKX08L2xpPmA6IiJdLmpvaW4oIiIpLHR1PWU9Pntjb25zdCB0PUFycmF5LmlzQXJyYXkoZS5sYWJlbHMpP2UubGFiZWxzOltdO3JldHVybltlLmJyZWFrZmFzdCYmIXQuc29tZShuPT5uLnN0YXJ0c1dpdGgoImJyZWFrZmFzdCIpKT9gPGxpIGNsYXNzPSJwZXJrIj4ke0UuY3VwfTxzcGFuPiR7YygiPGI+QnJlYWtmYXN0PC9iPiBpbmNsdWRlZCIsIjxiPuWQq+aXqemkkDwvYj4iKX08L3NwYW4+PC9saT5gOiIiLGUuaG91cmx5PyIiOmUucmVmdW5kYWJsZT9gPGxpIGNsYXNzPSJwZXJrIj4ke0UuY2hlY2t9PHNwYW4+PGI+JHtjKCJGcmVlIGNhbmNlbGxhdGlvbiIsIuWFjei0ueWPlua2iCIpfTwvYj4ke2UuZnJlZUNhbmNlbGxhdGlvbkxvY2FsP2woYyhgIHVudGlsICR7U3RyaW5nKGUuZnJlZUNhbmNlbGxhdGlvbkxvY2FsKS5yZXBsYWNlKC8gL2csIsKgIil9YCxg77yMJHtKdChlLmZyZWVDYW5jZWxsYXRpb25Mb2NhbCl9IOWJjWApKToiIn08L3NwYW4+PC9saT5gOmA8bGkgY2xhc3M9InBlcmsgd2FybiI+JHtFLmFsZXJ0fTxzcGFuPjxiPiR7YygiTm9uLXJlZnVuZGFibGUiLCLkuI3lj6/lj5bmtogiKX08L2I+JHtjKCIg4oCUIHRoaXMgcmF0ZSBjYW5ub3QgYmUgY2FuY2VsbGVkIiwi77yM5q2k5Lu35qC86K6i5ZCO5LiN6IO96YCA5pS5Iil9PC9zcGFuPjwvbGk+YCxlLm1lbWJlclJhdGU/YDxsaSBjbGFzcz0icGVyayBzYXZlIj4ke0UudGFnfTxzcGFuPjxiPiR7bChjKGAke2UubWVtYmVyUmF0ZS50aWVyfSBtZW1iZXIgcmF0ZWAsYCR7ZS5tZW1iZXJSYXRlLnRpZXJ95Lya5ZGY5Lu3YCkpfTwvYj4ke2MoIiBhcHBsaWVkIiwi5bey55Sf5pWIIil9PC9zcGFuPjwvbGk+YDoiIixlLnBheW1lbnQ9PT0icHJlcGFpZCI/YDxsaSBjbGFzcz0icGVyayI+JHtFLmxvY2t9PHNwYW4+PGI+JHtjKCJQYWlkIGluIGFkdmFuY2UiLCLpnIDpooTku5giKX08L2I+PC9zcGFuPjwvbGk+YDoiIl0uam9pbigiIil9LG51PWU9Pntjb25zdCBuPShBcnJheS5pc0FycmF5KGUubGFiZWxzKT9lLmxhYmVsczpbXSkubWFwKG89PmZnW29dKS5maWx0ZXIoQm9vbGVhbikubWFwKG89PmA8c3BhbiBjbGFzcz0iYmFkZ2Uke28/LnNhdmU/IiBnb29kIjoiIn0iPiR7bChjKG8/LnRleHQ/PyIiLG8/LnpoPz8iIikpfTwvc3Bhbj5gKTtyZXR1cm4gbi5sZW5ndGg/YDxkaXYgY2xhc3M9ImJhZGdlcyI+JHtuLmpvaW4oIiIpfTwvZGl2PmA6IiJ9LEZfPXtXaW5kb3c6IuacieeqlyIsIk5vIHdpbmRvdyI6IuaXoOeqlyIsIlJvb20gb25seSI6IuS4jeWQq+aXqSIsIkJyZWFrZmFzdCBpbmNsdWRlZCI6IuWQq+aXqSIsQ2l0eToi5Z+O5pmvIn0sbmQ9WyJKYW4iLCJGZWIiLCJNYXIiLCJBcHIiLCJNYXkiLCJKdW4iLCJKdWwiLCJBdWciLCJTZXAiLCJPY3QiLCJOb3YiLCJEZWMiXSxvZD1bIlN1biIsIk1vbiIsIlR1ZSIsIldlZCIsIlRodSIsIkZyaSIsIlNhdCJdLEp0PWU9Pntjb25zdCB0PVN0cmluZyhlPz8iIik7cmV0dXJuIHJlIT09InpoIj90OnQuc3BsaXQoIiDCtyAiKS5tYXAobj0+e2NvbnN0IG89L14oXHd7M30pIChcZHsxLDJ9KSAoXHd7M30pLD8gKFxkezEsMn06XGR7Mn0pJC8uZXhlYyhuLnRyaW0oKSk7cmV0dXJuIG8mJm5kLmluY2x1ZGVzKG9bM10/PyIiKSYmb2QuaW5jbHVkZXMob1sxXT8/IiIpP2Ake25kLmluZGV4T2Yob1szXT8/IiIpKzF95pyIJHtvWzJdfeaXpSAke25nW29kLmluZGV4T2Yob1sxXT8/IiIpXX0gJHtvWzRdfWA6Rl9bbi50cmltKCldPz9ufSkuam9pbigiIMK3ICIpfSxIXz0oZSx0LG4pPT57Y29uc3RbbyxzXT10LnNwbGl0KCI6IikubWFwKE51bWJlcikscj0obz8/MCkqNjArKHM/PzApK24qNjAsYT1gJHtTdHJpbmcoTWF0aC5mbG9vcihyLzYwKSUyNCkucGFkU3RhcnQoMiwiMCIpfToke1N0cmluZyhyJTYwKS5wYWRTdGFydCgyLCIwIil9YDtyZXR1cm5gJHtBZShlKX0gwrcgJHt0feKAkyR7YX0gwrcgJHtufSAke249PT0xPyJob3VyIjoiaG91cnMifWB9LEpyPShlLHQpPT50Py5zdGFydCYmZT8uY2hlY2tJbj9IXyhTdHJpbmcoZS5jaGVja0luKSxTdHJpbmcodC5zdGFydCksTnVtYmVyKHQuaG91cnMpKTpWbyhlKSxvdT0oZSx0KT0+e2lmKCFlPy5jaGVja0lufHwhZT8uY2hlY2tPdXQpcmV0dXJuIiI7Y29uc3Qgbj0ocyxyLGE9IiIpPT57Y29uc3QgaT1GZShyKTtyZXR1cm5gPGRpdiBjbGFzcz0iYmFuZC1kIj48c3BhbiBjbGFzcz0id2wiPiR7c308L3NwYW4+PHNwYW4gY2xhc3M9Ind2Ij4ke2woaS5tZCl9PHNtYWxsPiR7bChpLmRvdyl9JHthfTwvc21hbGw+PC9zcGFuPjwvZGl2PmB9O2lmKHQ/LnN0YXJ0KXtjb25zdFtzLHJdPVN0cmluZyh0LnN0YXJ0KS5zcGxpdCgiOiIpLm1hcChOdW1iZXIpLGE9KHM/PzApKjYwKyhyPz8wKStOdW1iZXIodC5ob3VycykqNjAsaT1gJHtTdHJpbmcoTWF0aC5mbG9vcihhLzYwKSUyNCkucGFkU3RhcnQoMiwiMCIpfToke1N0cmluZyhhJTYwKS5wYWRTdGFydCgyLCIwIil9YDtyZXR1cm5gPGRpdiBjbGFzcz0iYmFuZCIgcm9sZT0iZ3JvdXAiIGFyaWEtbGFiZWw9IiR7bChKcihlLHQpKX0iPiR7bihjKCJBcnJpdmUiLCLliLDlupciKSxlLmNoZWNrSW4sYCAke2wodC5zdGFydCl9YCl9PHNwYW4gY2xhc3M9IndoZW4tbiI+JHtsKHp0KHQuaG91cnMpKX08L3NwYW4+PGRpdiBjbGFzcz0iYmFuZC1kIj48c3BhbiBjbGFzcz0id2wiPiR7YygiTGVhdmUgYnkiLCLmnIDmmZrnprvlupciKX08L3NwYW4+PHNwYW4gY2xhc3M9Ind2Ij4ke2woaSl9PC9zcGFuPjwvZGl2PjwvZGl2PmB9Y29uc3Qgbz1OdW1iZXIoZS5ndWVzdHMpPjA/V18oTnVtYmVyKGUuZ3Vlc3RzKSk6IiI7cmV0dXJuYDxkaXYgY2xhc3M9ImJhbmQiIHJvbGU9Imdyb3VwIiBhcmlhLWxhYmVsPSIke2woW1ZvKGUpLG9dLmZpbHRlcihCb29sZWFuKS5qb2luKCIsICIpKX0iPiR7bihjKCJDaGVjay1pbiIsIuWFpeS9jyIpLGUuY2hlY2tJbil9PHNwYW4gY2xhc3M9IndoZW4tbiI+JHtsKHVlKENlKGUuY2hlY2tJbixlLmNoZWNrT3V0KSkpfSR7bz9gPHNtYWxsPiR7bChvKX08L3NtYWxsPmA6IiJ9PC9zcGFuPiR7bihjKCJDaGVjay1vdXQiLCLnprvlupciKSxlLmNoZWNrT3V0KX08L2Rpdj5gfSxXXz1lPT5jKGAke2V9ICR7ZT09PTE/Imd1ZXN0IjoiZ3Vlc3RzIn1gLGAke2V95L2NYCksZ2c9ZT0+e2NvbnN0IHQ9ZD0+e2NvbnN0IHU9L14oXGR7MSwyfSk6KFxkezJ9KSQvLmV4ZWMoU3RyaW5nKGQ/PyIiKSk7cmV0dXJuIHU/TnVtYmVyKHVbMV0pKjYwK051bWJlcih1WzJdKTp2b2lkIDB9LG49dChlPy5lYXJsaWVzdFN0YXJ0KSxvPXQoZT8ubGF0ZXN0U3RhcnQpLHM9dChlPy5sYXRlc3RFbmQpPz8xNDQwLHI9TnVtYmVyKGU/LmhvdXJzKXx8MDtpZihuPT09dm9pZCAwfHxvPT09dm9pZCAwKXJldHVybltdO2NvbnN0IGE9TWF0aC5jZWlsKG4vNSkqNSxpPWE8PW8/W2FdOltdO2ZvcihsZXQgZD1NYXRoLmNlaWwoKGErMSkvNjApKjYwO2Q8PW87ZCs9NjApaS5wdXNoKGQpO3JldHVybiBpLmZpbHRlcihkPT5kPD1vJiZkK3IqNjA8PXMpLm1hcChkPT5gJHtTdHJpbmcoTWF0aC5mbG9vcihkLzYwKSkucGFkU3RhcnQoMiwiMCIpfToke1N0cmluZyhkJTYwKS5wYWRTdGFydCgyLCIwIil9YCl9LG5zPShlLHQpPT57Y29uc3Qgbj0vXihcZHsxLDJ9KTooXGR7Mn0pJC8uZXhlYyhlKTtpZighbilyZXR1cm4gU3RyaW5nKHQ/LmxhdGVzdEVuZD8/IiIpO2NvbnN0IG89TnVtYmVyKG5bMV0pKjYwK051bWJlcihuWzJdKSsoTnVtYmVyKHQ/LmhvdXJzKXx8MCkqNjAscz0vXihcZHsxLDJ9KTooXGR7Mn0pJC8uZXhlYyhTdHJpbmcodD8ubGF0ZXN0RW5kPz8iIikpLHI9cz9OdW1iZXIoc1sxXSkqNjArTnVtYmVyKHNbMl0pOm8sYT1NYXRoLm1pbihvLHIpO3JldHVybmAke1N0cmluZyhNYXRoLmZsb29yKGEvNjApJTI0KS5wYWRTdGFydCgyLCIwIil9OiR7U3RyaW5nKGElNjApLnBhZFN0YXJ0KDIsIjAiKX1gfSxzdT1uZXcgTWFwLHJ1PShlLHQsbixvKT0+e2NvbnN0IHM9dC5ob3VybHk/Z2codC5ob3VybHkpOltdLHI9dC5ob3VybHk/c3UuZ2V0KFN0cmluZyh0LmlkKSk/P3NbMF0/PyIiOiIiO3JldHVybmAKICAgICAgPGRpdiBjbGFzcz0icm9vbS1idXkiPgogICAgICAgIDxkaXYgY2xhc3M9InByaWNlIj4KICAgICAgICAgICR7dC5wdWJsaWNTdGF5VG90YWw/YDxkaXYgY2xhc3M9InAtd2FzIj4ke2wodC5wdWJsaWNSb29tc1RvdGFsPz90LnB1YmxpY1N0YXlUb3RhbCl9PC9kaXY+YDoiIn0KICAgICAgICAgIDxkaXYgY2xhc3M9InAtdG90YWwiPiR7bCh0LnJvb21zVG90YWw/P3Quc3RheVRvdGFsKX08L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9InAtdW5pdCI+JHt0LmhvdXJseT9sKGMoYEZvciAke3p0KHQuaG91cmx5LmhvdXJzKX0ke0w+MT9gLCAke0x9IHJvb21zYDoiIn0sIHRheGVzIGluYCxgJHt6dCh0LmhvdXJseS5ob3Vycyl9JHtMPjE/YOOAgSR7TH3pl7RgOiIife+8jOWQq+eojui0uWApKTpsKGMoYFRvdGFsIGZvciAke3VlKENlKG4uY2hlY2tJbixuLmNoZWNrT3V0KSl9JHtMPjE/YCwgJHtMfSByb29tc2A6IiJ9LCB0YXhlcyBpbmAsYCR7dWUoQ2Uobi5jaGVja0luLG4uY2hlY2tPdXQpKX0ke0w+MT9g44CBJHtMfemXtGA6IiJ95oC75Lu377yM5ZCr56iO6LS5YCkpfTwvZGl2PgogICAgICAgICAgJHt0LmhvdXJseT8iIjpgPGRpdiBjbGFzcz0icC1uaWdodCI+JHtsKGMoYFJvb20gcmF0ZSAke3QubmlnaHRseX0gYSBuaWdodGAsYOaIv+S7t+avj+aZmiAke3QubmlnaHRseX1gKSl9PC9kaXY+YH0KICAgICAgICAgICR7dC5tZW1iZXJSYXRlP2A8ZGl2IGNsYXNzPSJwLW1lbWJlciI+JHtsKGMoYCR7dC5tZW1iZXJSYXRlLnRpZXJ9IHJhdGVgLGAke3QubWVtYmVyUmF0ZS50aWVyfeS7t2ApKX08L2Rpdj5gOiIifQogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9ImFjdGlvbiI+JHtvP2Ake3lzKGBkYXRhLWFkZC1yb29tPSIke2wodC5pZCl9IiBkYXRhLWhvdGVsPSIke2woZS5pZCl9ImAsbyxTdHJpbmcodC5uYW1lKSxMKX08YnV0dG9uIGNsYXNzPSJnbyBzbSIgdHlwZT0iYnV0dG9uIiBkYXRhLWFjdD0idHJpcCI+JHtjKCJSZXZpZXciLCLljrvmoLjlr7kiKX0ke0UuYXJyb3d9PC9idXR0b24+YDp0LmhvdXJseT9gPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJnbyBhZGQiIGRhdGEtYWRkLXJvb209IiR7bCh0LmlkKX0iIGRhdGEtaG90ZWw9IiR7bChlLmlkKX0iIGRhdGEtbj0iJHtsKEwpfSIgZGF0YS1zdGFydD0iJHtsKHIpfSIke3I/IiI6IiBkaXNhYmxlZCJ9IGFyaWEtbGFiZWw9IiR7bChjKGBSZXNlcnZlICR7dC5uYW1lfSBmcm9tICR7cn1gLGDpooTorqIke3QubmFtZX3vvIwke3J95Yiw5bqXYCkpfSI+JHtjKCJSZXNlcnZlIiwi6aKE6K6iIil9JHtyP2AgwrcgJHtsKHIpfWA6IiJ9PC9idXR0b24+YDpgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJnbyBxdWlldCBzbSBhZGQta2VlcCIgZGF0YS1hZGQtcm9vbT0iJHtsKHQuaWQpfSIgZGF0YS1ob3RlbD0iJHtsKGUuaWQpfSIgZGF0YS1uPSIke2woTCl9IiBkYXRhLWtlZXAgYXJpYS1sYWJlbD0iJHtsKGMoYEFkZCAke3QubmFtZX0gdG8gdGhlIHRyaXAgYW5kIGtlZXAgbG9va2luZ2AsYOaKiiR7dC5uYW1lfeWKoOWFpeihjOeoi++8jOe7p+e7reeci2ApKX0iPiR7YygiQWRkIHRvIHRyaXAiLCLliqDlhaXooYznqIsiKX08L2J1dHRvbj48YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImdvIGFkZCIgZGF0YS1hZGQtcm9vbT0iJHtsKHQuaWQpfSIgZGF0YS1ob3RlbD0iJHtsKGUuaWQpfSIgZGF0YS1uPSIke2woTCl9IiBhcmlhLWxhYmVsPSIke2woYyhgUmVzZXJ2ZSAke3QubmFtZX1gLGDpooTorqIke3QubmFtZX1gKSl9Ij4ke2MoIlJlc2VydmUiLCLpooTorqIiKX08L2J1dHRvbj5gfTwvZGl2PgogICAgICA8L2Rpdj5gfSxiZz1lPT5OdW1iZXIoZS5yb29tc0xlZnQpPD0zP2A8c3BhbiBjbGFzcz0iYmFkZ2Ugd2FybiBsZWZ0Ij4ke2woYyhgJHtlLnJvb21zTGVmdH0gbGVmdCBhdCB0aGlzIHJhdGVgLGDmraTku7fmoLzku4XliakgJHtlLnJvb21zTGVmdH0g6Ze0YCkpfTwvc3Bhbj5gOiIiLFZfPShlLHQpPT57Y29uc3Qgbj1uZXcgU2V0O2lmKCF0KXJldHVybntsZWFkOiIiLHNhaWQ6bn07Y29uc3Qgbz1bXTtlLnZpZXcmJmUudmlldyE9PXQudmlldyYmKG8ucHVzaChKdChlLnZpZXcpKSxuLmFkZCgidmlldyIpKSxlLmJlZHMmJmUuYmVkcyE9PXQuYmVkcyYmKG8ucHVzaChTdHJpbmcoZS5iZWRzKSksbi5hZGQoImJlZHMiKSk7Y29uc3Qgcz1OdW1iZXIoZS5zaXplU3FtKSxyPU51bWJlcih0LnNpemVTcW0pO3MmJnImJnMhPT1yJiZvLnB1c2gocz5yP2MoYCR7cy1yfSBtwrIgbGFyZ2VyYCxg6Z2i56ev5aSnICR7cy1yfSBtwrJgKTpjKGAke3Itc30gbcKyIHNtYWxsZXJgLGDpnaLnp6/lsI8gJHtyLXN9IG3CsmApKSxOdW1iZXIoZS5zbGVlcHMpPk51bWJlcih0LnNsZWVwcykmJihvLnB1c2goYyhgc2xlZXBzICR7ZS5zbGVlcHN9YCxg5Y+v5L2PICR7ZS5zbGVlcHN9IOS6umApKSxuLmFkZCgic2xlZXBzIikpO2NvbnN0IGE9U3RyaW5nKHQucm9vbVR5cGU/Lm5hbWU/P3QubmFtZT8/IiIpO3JldHVybntsZWFkOm8ubGVuZ3RoP2A8cCBjbGFzcz0icm9vbS1sZWFkIj48c3BhbiBjbGFzcz0ibGVhZC1rIj4ke2woYyhgVW5saWtlICR7YX1gLGDnm7jmr5Qke2F9YCkpfTwvc3Bhbj4ke2woby5zbGljZSgwLDMpLmpvaW4oIiDCtyAiKSl9PC9wPmA6IiIsc2FpZDpufX0sSl89KGUsdCxuLG8pPT57Y29uc3Qgcz0kcyhTdHJpbmcoZS5pZCksU3RyaW5nKHQuaWQpLG4pO3JldHVybmAKICAgIDxhcnRpY2xlIGNsYXNzPSJyb29tJHtzPyIgaGVsZCI6IiJ9Ij4KICAgICAgPHNwYW4gY2xhc3M9InJvb20tc2hvdCIgc3R5bGU9IiR7ZHQoYCR7ZS5pZH06JHt0LmlkfWApfSI+CiAgICAgICAgJHt0LmltYWdlVXJsP2A8aW1nIHNyYz0iJHtsKHQuaW1hZ2VVcmwpfSIgYWx0PSIiPmA6bChwdChTdHJpbmcodC5uYW1lKSkpfQogICAgICA8L3NwYW4+CiAgICAgIDxkaXYgY2xhc3M9InJvb20tbWFpbiI+CiAgICAgICAgPGgzIGNsYXNzPSJyb29tLW5hbWUiPiR7bCh0Lm5hbWUpfTwvaDM+CiAgICAgICAgJHtvPy5sZWFkPz8iIn0KICAgICAgICA8dWwgY2xhc3M9ImZhY3RzIj4ke2V1KHQsbz8uc2FpZCl9PC91bD4KICAgICAgICAke251KHQpfQogICAgICAgIDx1bCBjbGFzcz0icGVya3MiPiR7dHUodCl9PC91bD4KICAgICAgICAke2JnKHQpfQogICAgICA8L2Rpdj4KICAgICAgJHtydShlLHQsbixzKX0KICAgIDwvYXJ0aWNsZT5gfSxLXz0oZSx0LG4sbyk9Pntjb25zdCBzPXRbMF0/P3t9LHI9U3RyaW5nKHMucm9vbVR5cGU/Lm5hbWU/P3MubmFtZSk7cmV0dXJuYAogICAgPGFydGljbGUgY2xhc3M9InJ0eXBlJHt0LnNvbWUoaT0+JHMoU3RyaW5nKGUuaWQpLFN0cmluZyhpLmlkKSxuKT4wKT8iIGhlbGQiOiIifSI+CiAgICAgIDxkaXYgY2xhc3M9InJ0eXBlLWhlYWQiPgogICAgICAgIDxzcGFuIGNsYXNzPSJyb29tLXNob3QiIHN0eWxlPSIke2R0KGAke2UuaWR9OiR7cy5yb29tVHlwZT8uaWQ/P3MuaWR9YCl9Ij4KICAgICAgICAgICR7cy5pbWFnZVVybD9gPGltZyBzcmM9IiR7bChzLmltYWdlVXJsKX0iIGFsdD0iIj5gOmwocHQocikpfQogICAgICAgIDwvc3Bhbj4KICAgICAgICA8ZGl2IGNsYXNzPSJyb29tLW1haW4iPgogICAgICAgICAgPGgzIGNsYXNzPSJyb29tLW5hbWUiPiR7bChyKX08L2gzPgogICAgICAgICAgJHtvPy5sZWFkPz8iIn0KICAgICAgICAgIDx1bCBjbGFzcz0iZmFjdHMiPiR7ZXUocyxvPy5zYWlkKX08L3VsPgogICAgICAgICAgPGRpdiBjbGFzcz0icnR5cGUtbiI+JHtsKGMoYCR7dC5sZW5ndGh9ICR7dC5sZW5ndGg9PT0xPyJyYXRlIjoicmF0ZXMifWAsYCR7dC5sZW5ndGh9IOenjeS7t+agvGApKX08L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9InJhdGVzIj4ke3QubWFwKGk9Pntjb25zdCBkPSRzKFN0cmluZyhlLmlkKSxTdHJpbmcoaS5pZCksbik7cmV0dXJuYAogICAgICAgIDxkaXYgY2xhc3M9InJyYXRlJHtkPyIgaGVsZCI6IiJ9Ij4KICAgICAgICAgIDxkaXYgY2xhc3M9InJhdGUtbWFpbiI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InJhdGUtbmFtZSI+JHtsKGkucmF0ZT8ubmFtZT8/aS5uYW1lKX08L2Rpdj4KICAgICAgICAgICAgJHtudShpKX0KICAgICAgICAgICAgPHVsIGNsYXNzPSJwZXJrcyI+JHt0dShpKX08L3VsPgogICAgICAgICAgICAke2JnKGkpfQogICAgICAgICAgPC9kaXY+CiAgICAgICAgICAke3J1KGUsaSxuLGQpfQogICAgICAgIDwvZGl2PmB9KS5qb2luKCIiKX08L2Rpdj4KICAgIDwvYXJ0aWNsZT5gfSxHXz0oZSx0LG4pPT57Y29uc3Qgbz0kcyhTdHJpbmcoZS5pZCksU3RyaW5nKHQuaWQpLG4pLHM9Z2codC5ob3VybHkpLHI9c3UuZ2V0KFN0cmluZyh0LmlkKSk/P3NbMF07cmV0dXJuYAogICAgPGFydGljbGUgY2xhc3M9InJvb20gaG91cmx5JHtvPyIgaGVsZCI6IiJ9Ij4KICAgICAgPHNwYW4gY2xhc3M9InJvb20tc2hvdCIgc3R5bGU9IiR7ZHQoYCR7ZS5pZH06JHt0LmlkfWApfSI+CiAgICAgICAgJHt0LmltYWdlVXJsP2A8aW1nIHNyYz0iJHtsKHQuaW1hZ2VVcmwpfSIgYWx0PSIiPmA6bChwdChTdHJpbmcodC5uYW1lKSkpfQogICAgICA8L3NwYW4+CiAgICAgIDxkaXYgY2xhc3M9InJvb20tbWFpbiI+CiAgICAgICAgPGgzIGNsYXNzPSJyb29tLW5hbWUiPiR7bCh0LnJvb21UeXBlPy5uYW1lPz90Lm5hbWUpfTxzcGFuIGNsYXNzPSJyb29tLWhvdXJzIj4gwrcgJHtsKHp0KHQuaG91cmx5LmhvdXJzKSl9PC9zcGFuPjwvaDM+CiAgICAgICAgPHVsIGNsYXNzPSJmYWN0cyI+JHtldSh0KX08L3VsPgogICAgICAgICR7bnUodCl9CiAgICAgICAgPHVsIGNsYXNzPSJwZXJrcyI+JHt0dSh0KX08L3VsPgogICAgICAgIDxkaXYgY2xhc3M9InN0YXJ0cyIgcm9sZT0iZ3JvdXAiIGFyaWEtbGFiZWw9IiR7YygiU3RhcnQgdGltZSIsIuWIsOW6l+aXtumXtCIpfSI+CiAgICAgICAgICA8c3BhbiBjbGFzcz0id2wiPiR7YygiQXJyaXZlIGF0Iiwi5Yiw5bqX5pe26Ze0Iil9PC9zcGFuPgogICAgICAgICAgPGRpdiBjbGFzcz0iY2hpcHMiPiR7cy5tYXAoYT0+YDxidXR0b24gY2xhc3M9ImNoaXAgYXNrIiB0eXBlPSJidXR0b24iIGRhdGEtaG91ci1zdGFydD0iJHtsKGEpfSIgZGF0YS1yb29tPSIke2wodC5pZCl9IiBhcmlhLXByZXNzZWQ9IiR7YT09PXI/InRydWUiOiJmYWxzZSJ9Ij4ke2woYSl9PC9idXR0b24+YCkuam9pbigiIil9PC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJub3RlIj4ke2wocj9jKGAke3J94oCTJHtucyhyLHQuaG91cmx5KX0gwrcgbGVhdmUgYnkgJHtucyhyLHQuaG91cmx5KX1gLGAke3J94oCTJHtucyhyLHQuaG91cmx5KX0gwrcgJHtucyhyLHQuaG91cmx5KX0g5YmN56a75bqXYCk6YyhgT3V0IGJ5ICR7dC5ob3VybHkubGF0ZXN0RW5kfSBhdCB0aGUgbGF0ZXN0LmAsYOacgOaZmiAke3QuaG91cmx5LmxhdGVzdEVuZH0g56a75bqX44CCYCkpfTwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KICAgICAgJHtydShlLHQsbixvKX0KICAgIDwvYXJ0aWNsZT5gfSxZXz0oZSx0LG4pPT57Y29uc3Qgbz10LmZpbHRlcihpPT5pLmhvdXJseSkscz10LmZpbHRlcihpPT4haS5ob3VybHkpLHI9W10sYT1uZXcgTWFwO2Zvcihjb25zdCBpIG9mIHMpe2NvbnN0IGQ9aS5yb29tVHlwZT8uaWQ/U3RyaW5nKGkucm9vbVR5cGUuaWQpOiIiO2lmKCFkKXtyLnB1c2goW2ldKTtjb250aW51ZX1jb25zdCB1PWEuZ2V0KGQpO2lmKHUpdS5wdXNoKGkpO2Vsc2V7Y29uc3QgcD1baV07YS5zZXQoZCxwKSxyLnB1c2gocCl9fXJldHVybltyLmxlbmd0aD9gPGRpdiBjbGFzcz0icm9vbXMiPiR7ci5tYXAoKGksZCk9Pntjb25zdCB1PVZfKGlbMF0scltkLTFdPy5bMF0pO3JldHVybiBpLmxlbmd0aD4xfHxpWzBdPy5yb29tVHlwZT9LXyhlLGksbix1KTpKXyhlLGlbMF0sbix1KX0pLmpvaW4oIiIpfTwvZGl2PmA6IiIsby5sZW5ndGg/YDxkaXYgY2xhc3M9InJvb21zIj4ke28ubWFwKGk9PkdfKGUsaSxuKSkuam9pbigiIil9PC9kaXY+YDoiIl0uam9pbigiIil9LHNkPWU9PntpZighL1xic2xlZXBzXGJ8Y2FuIHRha2UgXGQrIGd1ZXN0cy8udGVzdChlKSlyZXR1cm4iIjtjb25zdCB0PU51bWJlcigvbGFyZ2VzdCBzbGVlcHMgKFxkKykvLmV4ZWMoZSk/LlsxXT8/MCksbj13Lmd1ZXN0cypMLG89dD4wP01hdGgubWluKE10LE1hdGguY2VpbChuL3QpKTowLHM9bz9NYXRoLmNlaWwobi9vKTowO3JldHVybmA8ZGl2IGNsYXNzPSJzdGF0ZSI+CiAgICA8ZGl2IGNsYXNzPSJzdGF0ZS1pY28iPiR7RS51c2Vyc308L2Rpdj4KICAgIDxoMyBjbGFzcz0ic3RhdGUtdCI+JHtsKGMoYE5vIHJvb20gaGVyZSBzbGVlcHMgJHt3Lmd1ZXN0c31gLGDov5nph4zmsqHmnInlj6/kvY8gJHt3Lmd1ZXN0c30g5Lq655qE5oi/5Z6LYCkpfTwvaDM+CiAgICA8cCBjbGFzcz0ic3RhdGUtZCI+JHtsKG8mJnM8PXQ/YyhgVGhlIGxhcmdlc3Qgc2xlZXBzICR7dH0uIEJvb2sgJHtvfSByb29tcywgZWFjaCBmb3IgdXAgdG8gJHtzfSwgYW5kIHRoZSAke259IG9mIHlvdSBmaXQuYCxg5pyA5aSn55qE5oi/5Z6L5Y+v5L2PICR7dH0g5Lq644CC6K6iICR7b30g6Ze044CB5q+P6Ze05oyJICR7c30g5Lq66K6i77yMJHtufSDkuKrkurrlsLHog73kvY/kuIvjgIJgKTpjKCJUcnkgZmV3ZXIgZ3Vlc3RzIGluIGVhY2ggcm9vbS4iLCLor5Xor5Xmiormr4/pl7TkurrmlbDmlLnlsJHjgIIiKSl9PC9wPgogICAgJHtvJiZzPD10P2A8ZGl2IGNsYXNzPSJmb290Ij48YnV0dG9uIGNsYXNzPSJnbyIgdHlwZT0iYnV0dG9uIiBkYXRhLXNwbGl0PSIke299OiR7c30iPiR7bChjKGBCb29rICR7b30gcm9vbXMsICR7c30gaW4gZWFjaGAsYOiuoiAke299IOmXtO+8jOavj+mXtOaMiSAke3N9IOS6umApKX08L2J1dHRvbj48L2Rpdj5gOiIifQogIDwvZGl2PmB9LFFfPShlLHQsbj0wKT0+IUFycmF5LmlzQXJyYXkodCl8fHQubGVuZ3RoPDI/IiI6YAogIDxkaXYgY2xhc3M9InN0cmlwLWgiPiR7bChjKGBBcnJpdmUgYW5vdGhlciBkYXkgwrcgJHt1ZShuKX0gZnJvbWAsYOaNouS4quaXpeWtkOWFpeS9jyDCtyAke3VlKG4pfei1t+S7t2ApKX0ke3QuZmlsdGVyKG89Pm8ubG93ZXN0KS5sZW5ndGg+MT9gPHNtYWxsIGNsYXNzPSJzdHJpcC1rZXkiPiR7YygiR3JlZW46IHRoZSBsb3dlc3QiLCLnu7/oibLkuLrmnIDkvY7ku7ciKX08L3NtYWxsPmA6IiJ9PC9kaXY+CiAgPGRpdiBjbGFzcz0iZmxleC1kYXRlcyIgcm9sZT0iZ3JvdXAiIHN0eWxlPSItLW46JHt0Lmxlbmd0aH0iIGFyaWEtbGFiZWw9IiR7YygiTmVhcmJ5IGFycml2YWwgZGF0ZXMiLCLpmYTov5HnmoTlhaXkvY/ml6XmnJ8iKX0iPgogICAgJHt0Lm1hcCgobyxzKT0+YDxidXR0b24gY2xhc3M9ImZkJHtvLmNob3Nlbj8iIG9uIjoiIn0ke28uZnJvbT8iIjoiIG91dCJ9JHtvLmJlc3Q/IiBiZXN0IjoiIn0ke28ubG93ZXN0PyIgbG93ZXN0IjoiIn0iIHR5cGU9ImJ1dHRvbiIgZGF0YS1ob3RlbD0iJHtsKGUpfSIgZGF0YS1jaT0iJHtsKG8uY2hlY2tJbil9IiBkYXRhLWNvPSIke2woby5jaGVja091dCl9IiBhcmlhLWxhYmVsPSIke2woYyhgQXJyaXZlICR7QWUoU3RyaW5nKG8uY2hlY2tJbikpfSR7by5mcm9tP2AsIGZyb20gJHtvLmZyb219YDoiLCBub3RoaW5nIGxlZnQifSR7by5sb3dlc3Q/IiwgdGhlIGxvd2VzdCI6IiJ9YCxgJHtBZShTdHJpbmcoby5jaGVja0luKSl95YWl5L2PJHtvLmZyb20/YO+8jCR7by5mcm9tfei1t2A6Iu+8jOW3sua7oSJ9JHtvLmxvd2VzdD8i77yM5pyA5L2O5Lu3IjoiIn1gKSl9Ij4KICAgICAgICA8c3BhbiBjbGFzcz0iZmQtZGF5Ij4ke3M9PT0wfHxGZShTdHJpbmcoby5jaGVja0luKSkubW9uIT09RmUoU3RyaW5nKHRbcy0xXT8uY2hlY2tJbikpLm1vbj9gPHNwYW4gY2xhc3M9ImZkLW1vbiI+JHtsKEZlKFN0cmluZyhvLmNoZWNrSW4pKS5tb24pfTwvc3Bhbj5gOic8c3BhbiBjbGFzcz0iZmQtbW9uIiBhcmlhLWhpZGRlbj0idHJ1ZSI+Jm5ic3A7PC9zcGFuPid9PHNwYW4gY2xhc3M9ImZkLWRvdyI+JHtsKEZlKFN0cmluZyhvLmNoZWNrSW4pKS5kb3cpfTwvc3Bhbj48c3BhbiBjbGFzcz0iZmQtZG4iPiR7bChGZShTdHJpbmcoby5jaGVja0luKSkuZGF5KX08L3NwYW4+PC9zcGFuPgogICAgICAgIDxzcGFuIGNsYXNzPSJmZC1wcmljZSI+JHtvLmZyb20/bChvLmZyb20pOmMoIkZ1bGwiLCLlt7Lmu6EiKX08L3NwYW4+JHtvLmxvd2VzdCYmdC5maWx0ZXIocj0+ci5sb3dlc3QpLmxlbmd0aD09PTE/YDxzcGFuIGNsYXNzPSJmZC1sb3ciPiR7YygiTG93ZXN0Iiwi5pyA5L2OIil9PC9zcGFuPmA6IiJ9CiAgICAgIDwvYnV0dG9uPmApLmpvaW4oIiIpfQogIDwvZGl2PmAscmQ9ZT0+e2NvbnN0IHQ9ZS5ob3RlbD8/e30sbj1lLnJvb21zPz9bXSxvPWUuc3RheT8/dyxzPW4ubGVuZ3RoPjAmJm4uZXZlcnkoYT0+YS5ob3VybHkpfHwhIWUuaG91cmx5JiYhIW8/LmNoZWNrSW4mJm8uY2hlY2tJbj09PW8uY2hlY2tPdXQscj1uZXcgU2V0KG4ubWFwKGE9PlN0cmluZyhhLnJvb21UeXBlPy5pZD8/YS5pZCkpKS5zaXplO3JldHVyblttZyh0KSxlLmhvdXJseT9gPGRpdiBjbGFzcz0ic2VnIiByb2xlPSJncm91cCIgYXJpYS1sYWJlbD0iJHtjKCJIb3cgbG9uZyIsIuWFpeS9j+aWueW8jyIpfSI+CiAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJzZWctYiIgZGF0YS1hY3Q9Im5pZ2h0bHkiIGFyaWEtcHJlc3NlZD0iJHtzPyJmYWxzZSI6InRydWUifSI+JHtFLmNhbGVuZGFyfSR7YygiT3Zlcm5pZ2h0Iiwi5oyJ5pmaIil9PC9idXR0b24+CiAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJzZWctYiIgZGF0YS1hY3Q9ImhvdXJseSIgZGF0YS1ob3RlbC1pZD0iJHtsKHQuaWQpfSIgYXJpYS1wcmVzc2VkPSIke3M/InRydWUiOiJmYWxzZSJ9Ij4ke0UuY2xvY2t9JHtjKCJCeSB0aGUgaG91ciDCtyB0b2RheSIsIumSn+eCueaIvyDCtyDku4rlpKkiKX08L2J1dHRvbj4KICAgICAgICAgPC9kaXY+YDoiIixzPyIiOm9nKFN0cmluZyh0LmlkKSx0LnRvZGF5VGhlcmUpLHN8fGUubm9Sb29tcyYmc2QoU3RyaW5nKGUubm9Sb29tcykpPyIiOlFfKFN0cmluZyh0LmlkKSxlLmRhdGVzLENlKG8uY2hlY2tJbixvLmNoZWNrT3V0KSksZS5uZWVkc0RhdGVzP2A8ZGl2IGNsYXNzPSJza2VsIiByb2xlPSJzdGF0dXMiIGFyaWEtbGFiZWw9IiR7YygiTG9va2luZyB1cCByb29tcyIsIuato+WcqOafpeivouaIv+mXtCIpfSI+PGRpdiBjbGFzcz0ic2sgc2stYmFyIj48L2Rpdj48ZGl2IGNsYXNzPSJzayBzay1iYXIiPjwvZGl2PjwvZGl2PmA6ZS5ub1Jvb21zJiZzP2A8ZGl2IGNsYXNzPSJzdGF0ZSI+CiAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzdGF0ZS1pY28iPiR7RS5jbG9ja308L2Rpdj4KICAgICAgICAgICAgIDxoMyBjbGFzcz0ic3RhdGUtdCI+JHtjKCJObyByb29tcyBieSB0aGUgaG91ciB0b2RheSIsIuS7iuWkqeayoeaciemSn+eCueaIvyIpfTwvaDM+CiAgICAgICAgICAgICA8cCBjbGFzcz0ic3RhdGUtZCI+JHtsKGUubm9Sb29tcyl9PC9wPgogICAgICAgICAgICAgPGRpdiBjbGFzcz0iZm9vdCI+PGJ1dHRvbiBjbGFzcz0iZ28gc29mdCIgdHlwZT0iYnV0dG9uIiBkYXRhLWFjdD0ibmlnaHRseSI+JHtFLmNhbGVuZGFyfSR7YygiU2VlIHJvb21zIGZvciBhIG5pZ2h0Iiwi55yL5oyJ5pma5YWl5L2P55qE5oi/6Ze0Iil9PC9idXR0b24+PC9kaXY+CiAgICAgICAgICAgPC9kaXY+YDplLm5vUm9vbXM/c2QoU3RyaW5nKGUubm9Sb29tcykpfHxgPGRpdiBjbGFzcz0iZXJyIj4ke2woZS5ub1Jvb21zKX08L2Rpdj5gOmA8aDMgY2xhc3M9InNlYyI+JHtzP2MoIkJ5IHRoZSBob3VyLCB0b2RheSIsIuS7iuaXpemSn+eCueaIvyIpOmMoIkNob29zZSB5b3VyIHJvb20iLCLpgInmi6nmiL/lnosiKX0gPHNtYWxsIGNsYXNzPSJzZWMtbiI+JHtsKHM/YyhgJHtBZShTdHJpbmcoby5jaGVja0luKSl9IMK3IHBpY2sgd2hlbiB5b3UgYXJyaXZlIMK3IHRheGVzIGluYCxgJHtBZShTdHJpbmcoby5jaGVja0luKSl9IMK3IOmAieWlveWIsOW6l+aXtumXtCDCtyDlkKvnqI7otLlgKTpjKGAke3J9IHJvb20gJHtyPT09MT8idHlwZSI6InR5cGVzIn0ke051bWJlcihvLmd1ZXN0cykhPT0yP2AgdGhhdCAke3I9PT0xPyJzbGVlcHMiOiJzbGVlcCJ9ICR7by5ndWVzdHN9YDoiIn0ke24ubGVuZ3RoPnI/YCwgJHtuLmxlbmd0aH0gcmF0ZXNgOiIifSDCtyBwcmljZXMgZm9yICR7dWUoQ2Uoby5jaGVja0luLG8uY2hlY2tPdXQpKX0sIHRheGVzIGluYCxgJHtyfSDnp40ke051bWJlcihvLmd1ZXN0cykhPT0yP2Dlj6/kvY8gJHtvLmd1ZXN0c30g5Lq655qEYDoiIn3miL/lnoske24ubGVuZ3RoPnI/YOOAgSR7bi5sZW5ndGh9IOenjeS7t+agvGA6IiJ9IMK3ICR7dWUoQ2Uoby5jaGVja0luLG8uY2hlY2tPdXQpKX3lkKvnqI7mgLvku7dgKSl9PC9zbWFsbD48L2gzPgogICAgICAgICAgICR7WV8odCxuLG8pfWAsKGUuZXh0cmFzPz9bXSkubGVuZ3RofHwoZS5wb2xpY2llcz8/W10pLmxlbmd0aD9gPGRpdiBjbGFzcz0iZ29vZC10by1rbm93Ij4KICAgICAgICAgICA8aDMgY2xhc3M9InNlYyI+JHtjKCJHb29kIHRvIGtub3ciLCLlhaXkvY/pobvnn6UiKX08L2gzPgogICAgICAgICAgICR7KGUucG9saWNpZXM/P1tdKS5sZW5ndGg/YDxkaXYgY2xhc3M9ImxpbmtzIj4ke2UucG9saWNpZXMubWFwKGE9PmA8YnV0dG9uIGNsYXNzPSJsaW5rLXJvdyIgdHlwZT0iYnV0dG9uIiBkYXRhLXBvbGljeT0iJHtsKGEudG9waWMpfSIgZGF0YS1ob3RlbD0iJHtsKHQuaWQpfSI+PHNwYW4+JHtsKGEudGl0bGUpfTwvc3Bhbj4ke0UuY2hldlJ9PC9idXR0b24+YCkuam9pbigiIil9PC9kaXY+YDoiIn0KICAgICAgICAgICAkeyhlLmV4dHJhcz8/W10pLmxlbmd0aD9gPGJ1dHRvbiBjbGFzcz0iZ28gc29mdCIgdHlwZT0iYnV0dG9uIiBkYXRhLWV4dHJhcz0iJHtsKHQuaWQpfSI+JHtjKCJBZGQtb25zIGFuZCBleHBlcmllbmNlcyIsIumZhOWKoOacjeWKoeWSjOS9k+mqjCIpfSR7RS5hcnJvd308L2J1dHRvbj5gOiIifQogICAgICAgICA8L2Rpdj5gOiIiXS5qb2luKCIiKX0sWF89eyJwZXJzb24tbmlnaHQiOlsicGVyIHBlcnNvbiBwZXIgbmlnaHQiLCLmr4/kurrmr4/mmZoiXSxuaWdodDpbInBlciBuaWdodCIsIuavj+aZmiJdLHN0YXk6WyJwZXIgc3RheSIsIuavj+asoeWFpeS9jyJdLHBlcnNvbjpbInBlciBwZXJzb24iLCLmr4/kuroiXSxpdGVtOlsiZWFjaCIsIuavj+S7vSJdLHRyaXA6WyJwZXIgdHJpcCIsIuavj+i2nyJdfSxpZD1lPT57Y29uc3QgdD1YX1tTdHJpbmcoZSldO3JldHVybiB0P2ModFswXSx0WzFdKTpjKGBwZXIgJHtlfWAsYOavjyR7ZX1gKX0sZXc9ZT0+e2NvbnN0IHQ9ZS5ob3RlbD8/e30sbj1lLmV4dHJhcz8/W10sbz1lLmZvckJvb2tpbmc7cmV0dXJuIG8/W2A8ZGl2PjxkaXYgY2xhc3M9ImgtbmFtZSI+JHtsKGMoYEFkZC1vbnMgZm9yICR7by5jb25maXJtYXRpb25Db2RlfWAsYCR7by5jb25maXJtYXRpb25Db2RlfSDnmoTpmYTliqDmnI3liqFgKSl9PC9kaXY+PGRpdiBjbGFzcz0iaC13aGVyZSI+JHtsKHQubmFtZSl9IMK3ICR7bChWbyhvLnN0YXkpKX08L2Rpdj48L2Rpdj5gLGA8ZGl2IGNsYXNzPSJyb3dzIj4ke24ubWFwKHM9PmAKICAgICAgICA8ZGl2IGNsYXNzPSJyb3ciPgogICAgICAgICAgPGRpdiBjbGFzcz0iYm9keSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9Im5hbWUiPiR7bChzLm5hbWUpfTwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJtZXRhIj4ke2wocy5kZXNjcmlwdGlvbil9PC9kaXY+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9InByaWNlIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0icC10b3RhbCI+JHtsKHMucHJpY2UpfTwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJwLXVuaXQiPiR7bChpZChzLnBlcikpfTwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJhY3Rpb24iPiR7eXMoYGRhdGEtYm9va2luZy1leHRyYT0iJHtsKHMuaWQpfSIgZGF0YS1ib29raW5nPSIke2woby5jb25maXJtYXRpb25Db2RlKX0iYCxOdW1iZXIoby5oZWxkPy5bcy5pZF0/PzApLFN0cmluZyhzLm5hbWUpKX08L2Rpdj4KICAgICAgICA8L2Rpdj5gKS5qb2luKCIiKX08L2Rpdj5gLGA8ZGl2IGNsYXNzPSJub3RlIj4ke2MoIkVhY2ggY2hhbmdlIGlzIHNob3duIHdpdGggaXRzIG5ldyB0b3RhbCBiZWZvcmUgYW55dGhpbmcgbW92ZXMuIE5vdGhpbmcgaXMgY2hhcmdlZCBoZXJlLiIsIuavj+asoeaUueWKqOmDveS8muWFiOaYvuekuuaWsOeahOaAu+S7t++8jOehruiupOWQjuaJjeeUn+aViOOAgui/memHjOS4jeaJo+asvuOAgiIpfTwvZGl2PmAsYDxidXR0b24gY2xhc3M9ImdvIHF1aWV0IiB0eXBlPSJidXR0b24iIGRhdGEtYWN0PSJib29raW5ncyI+JHtjKCJCYWNrIHRvIHlvdXIgYm9va2luZ3MiLCLov5Tlm57miJHnmoTpooTorqIiKX08L2J1dHRvbj5gXS5qb2luKCIiKTpbYDxkaXY+PGRpdiBjbGFzcz0iaC1uYW1lIj4ke2wodC5uYW1lKX08L2Rpdj48ZGl2IGNsYXNzPSJoLXdoZXJlIj4ke2MoIldoYXQgaXQgb2ZmZXJzIGJlc2lkZSB0aGUgcm9vbSIsIuaIv+mXtOS7peWklueahOmZhOWKoOacjeWKoSIpfTwvZGl2PjwvZGl2PmAsYDxkaXYgY2xhc3M9InJvd3MiPiR7bi5tYXAocz0+YAogICAgICA8ZGl2IGNsYXNzPSJyb3ciPgogICAgICAgIDxkaXYgY2xhc3M9ImJvZHkiPgogICAgICAgICAgPGRpdiBjbGFzcz0ibmFtZSI+JHtsKHMubmFtZSl9PC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJtZXRhIj4ke2wocy5kZXNjcmlwdGlvbil9PC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0icHJpY2UiPgogICAgICAgICAgPGRpdiBjbGFzcz0icC10b3RhbCI+JHtsKHMucHJpY2UpfTwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0icC11bml0Ij4ke2woaWQocy5wZXIpKX08L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJhY3Rpb24iPiR7eXMoYGRhdGEtYWRkLWV4dHJhPSIke2wocy5pZCl9IiBkYXRhLWhvdGVsPSIke2wodC5pZCl9ImAsSV8oU3RyaW5nKHQuaWQpLFN0cmluZyhzLmlkKSksU3RyaW5nKHMubmFtZSkpfTwvZGl2PgogICAgICA8L2Rpdj5gKS5qb2luKCIiKX08L2Rpdj5gLGA8YnV0dG9uIGNsYXNzPSJnbyBxdWlldCIgdHlwZT0iYnV0dG9uIiBkYXRhLWhvdGVsPSIke2wodC5pZCl9Ij4ke2woYyhgQmFjayB0byAke3QubmFtZX1gLGDov5Tlm54ke3QubmFtZX1gKSl9PC9idXR0b24+YF0uam9pbigiIil9O2xldCBLcj0hMTtjb25zdCB0dz0oZSx0PSExLG49ITEpPT57Y29uc3Qgbz1lLmtpbmQ9PT0icm9vbSI/YGRhdGEtYWRkLXJvb209IiR7bChlLnJvb21SZWYpfSIgZGF0YS1ob3RlbD0iJHtsKGUuaG90ZWxJZCl9IiBkYXRhLWNpPSIke2woZS5zdGF5Py5jaGVja0luKX0iIGRhdGEtY289IiR7bChlLnN0YXk/LmNoZWNrT3V0KX0iIGRhdGEtZ3U9IiR7bChlLnN0YXk/Lmd1ZXN0cyl9ImA6YGRhdGEtYWRkLWV4dHJhPSIke2woZS5leHRyYVJlZj8/ZS50aXRsZSl9IiBkYXRhLWhvdGVsPSIke2woZS5ob3RlbElkKX0iJHtlLmRheT9gIGRhdGEtZGF5PSIke2woZS5kYXkpfSJgOiIifWAscz1lLmtpbmQhPT0icm9vbSJ8fGUuaG91cmx5PyIiOmUucmVmdW5kYWJsZT09PSExP2A8bGkgY2xhc3M9InBlcmsgd2FybiI+JHtFLmFsZXJ0fTxzcGFuPjxiPiR7YygiTm9uLXJlZnVuZGFibGUiLCLkuI3lj6/lj5bmtogiKX08L2I+JHtjKCIg4oCUIHRoaXMgcmF0ZSBjYW5ub3QgYmUgY2FuY2VsbGVkIiwi77yM5q2k5Lu35qC86K6i5ZCO5LiN6IO96YCA5pS5Iil9PC9zcGFuPjwvbGk+YDpgPGxpIGNsYXNzPSJwZXJrIj4ke0UuY2hlY2t9PHNwYW4+PGI+JHtjKCJGcmVlIGNhbmNlbGxhdGlvbiIsIuWFjei0ueWPlua2iCIpfTwvYj4ke2UuZnJlZUNhbmNlbGxhdGlvbkxvY2FsP2woYyhgIHVudGlsICR7U3RyaW5nKGUuZnJlZUNhbmNlbGxhdGlvbkxvY2FsKS5yZXBsYWNlKC8gL2csIsKgIil9YCxg77yMJHtKdChlLmZyZWVDYW5jZWxsYXRpb25Mb2NhbCl9IOWJjWApKToiIn08L3NwYW4+PC9saT5gLHI9ZS5raW5kPT09InJvb20iJiZlLnBheW1lbnQ9PT0icHJlcGFpZCI/YDxsaSBjbGFzcz0icGVyayI+JHtFLmxvY2t9PHNwYW4+PGI+JHtjKCJQYWlkIGluIGFkdmFuY2UiLCLpnIDpooTku5giKX08L2I+JHtjKCIg4oCUIG9uIHRoZSBuZXh0IHN0ZXAiLCLvvIzkuIvkuIDmraXku5jmrL4iKX08L3NwYW4+PC9saT5gOiIiO3JldHVybmAKICAgIDxkaXYgY2xhc3M9InJvdyBsaW5lIj4KICAgICAgPGRpdiBjbGFzcz0iYm9keSI+CiAgICAgICAgPGRpdiBjbGFzcz0ibmFtZSI+JHtsKGUudGl0bGUpfTwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9Im1ldGEiPiR7dCYmVHQoZS5zdXBwbGllcik/YDxzcGFuIGNsYXNzPSJiYWRnZSI+JHtsKFR0KGUuc3VwcGxpZXIpLm5hbWUpfTwvc3Bhbj4gYDoiIn0ke2woZS5raW5kPT09InJvb20iP1tuPyIiOmUuaG90ZWxOYW1lLG4/IiI6SnIoZS5zdGF5LGUuaG91cmx5KSxlLmRldGFpbD9KdChlLmRldGFpbCk6IiJdLmZpbHRlcihCb29sZWFuKS5qb2luKCIgwrcgIik6YCR7ZS5ob3RlbE5hbWV9JHtlLmRldGFpbD9gIMK3ICR7ZS5kZXRhaWx9YDoiIn1gKX08L2Rpdj4KICAgICAgICAke3N8fHI/YDx1bCBjbGFzcz0icGVya3MiPiR7c30ke3J9PC91bD5gOiIifQogICAgICA8L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0icHJpY2UiPgogICAgICAgIDxkaXYgY2xhc3M9InAtbGluZSI+JHtsKGUudG90YWwpfTwvZGl2PgogICAgICAgICR7ZS5raW5kPT09InJvb20iJiZLcj9gPGRpdiBjbGFzcz0icC11bml0Ij4ke2MoImJlZm9yZSB0YXhlcyIsIuacquWQq+eojui0uSIpfTwvZGl2PmA6IiJ9CiAgICAgICAgPGRpdiBjbGFzcz0icC11bml0Ij4ke2Uua2luZD09PSJyb29tIiYmZS5ob3VybHk/bCh6dChlLmhvdXJseS5ob3VycykpOmUua2luZD09PSJyb29tIj9sKGMoYCR7ZS51bml0fSBhIG5pZ2h0YCxg5q+P5pmaICR7ZS51bml0fWApKTpsKGMoYCR7ZS51bml0fSBlYWNoYCxg5q+P5Lu9ICR7ZS51bml0fWApKX08L2Rpdj4KICAgICAgPC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9ImFjdGlvbiI+PHNwYW4gY2xhc3M9IndsIj4ke2Uua2luZD09PSJyb29tIj9jKCJSb29tcyIsIumXtOaVsCIpOmMoIlF1YW50aXR5Iiwi5pWw6YePIil9PC9zcGFuPiR7eXMobyxOdW1iZXIoZS5raW5kPT09ImV4dHJhIj9lLm9yZGVyZWQ/P2UucXVhbnRpdHk/PzE6ZS5xdWFudGl0eT8/MSksU3RyaW5nKGUudGl0bGUpKX08L2Rpdj4KICAgIDwvZGl2PmB9LF9pPShlLHQpPT5gPGRpdiBjbGFzcz0ic3VtcyI+CiAgICAgPGRpdiBjbGFzcz0ic3VtIj48c3Bhbj4keyFBcnJheS5pc0FycmF5KGUubGluZXMpfHxlLmxpbmVzLnNvbWUobj0+bi5raW5kPT09ImV4dHJhIik/YygiUm9vbXMgYW5kIGFkZC1vbnMiLCLmiL/otLnlkozpmYTliqDpobnnm64iKTpjKCJSb29tcyIsIuaIv+i0uSIpfTwvc3Bhbj48c3Bhbj4ke2woZS5zdWJ0b3RhbCl9PC9zcGFuPjwvZGl2PgogICAgIDxkaXYgY2xhc3M9InN1bSI+PHNwYW4+JHtjKCJUYXhlcyBhbmQgZmVlcyIsIueojui0uSIpfTwvc3Bhbj48c3Bhbj4ke2woZS50YXhlc0FuZEZlZXM9PT0iSW5jbHVkZWQiP2MoIkluY2x1ZGVkIiwi5bey5ZCrIik6ZS50YXhlc0FuZEZlZXMpfTwvc3Bhbj48L2Rpdj4KICAgICAke2UubWVtYmVyU2F2aW5nP2A8ZGl2IGNsYXNzPSJzdW0gZ29vZCI+PHNwYW4+JHtsKGMoYCR7ZS5tZW1iZXJTYXZpbmcudGllcn0gbWVtYmVyIHJhdGVgLGAke2UubWVtYmVyU2F2aW5nLnRpZXJ95Lya5ZGY5Lu3YCkpfTwvc3Bhbj48c3Bhbj7iiJIgJHtsKGUubWVtYmVyU2F2aW5nLnNhdmVkKX08L3NwYW4+PC9kaXY+YDoiIn0KICAgICA8ZGl2IGNsYXNzPSJzdW0gdG90YWwiPjxzcGFuPiR7bCh0KX08c21hbGw+JHtjKCJUYXhlcyBhbmQgZmVlcyBpbiIsIuWQq+eojui0uSIpfTwvc21hbGw+PC9zcGFuPjxzcGFuPiR7bChlLnRvdGFsKX08L3NwYW4+PC9kaXY+CiAgICAgJHtlLm1lbWJlclNhdmluZz9gPGRpdiBjbGFzcz0ic3VtIj48c3Bhbj4ke2MoIlBvaW50cyB0aGlzIGVhcm5zIiwi5Y+v5b6X56ev5YiGIil9PC9zcGFuPjxzcGFuPiR7bChOdW1iZXIoZS5tZW1iZXJTYXZpbmcucG9pbnRzKS50b0xvY2FsZVN0cmluZygiZW4tR0IiKSl9PC9zcGFuPjwvZGl2PmA6IiJ9CiAgIDwvZGl2PmAsbnc9ZT0+YDxkaXYgY2xhc3M9Im5vdGUiPiR7bChlLnNhbmRib3g/YyhgVGhpcyBpcyBhIHRlc3QgZW52aXJvbm1lbnQuIEJvb2tpbmcgaGVyZSBtYWtlcyBhIHNpbXVsYXRlZCBib29raW5nLCBub3QgYSAke2UubmFtZX0gcmVzZXJ2YXRpb24sIGFuZCBub3RoaW5nIGlzIHBhaWQuYCxg6L+Z5piv5rWL6K+V546v5aKD77ya5Zyo6L+Z6YeM6aKE6K6i5Y+q5Lya55Sf5oiQ5qih5ouf6K6i5Y2V77yM5LiN5pivJHtjZShlLm5hbWUpfeeahOecn+WunumihOiuou+8jOS5n+S4jeS7mOasvuOAgmApOmUuYm9va2luZ01vZGU9PT0icGF5LWF0LWhvdGVsIj9jKGBOb3RoaW5nIGlzIGNoYXJnZWQgaGVyZS4gQm9va2luZyBtYWtlcyBhIHJlc2VydmF0aW9uIHdpdGggJHtlLm5hbWV9LCBwYWlkIGF0IHRoZSBob3RlbCwgYW5kIGdpdmVzIHlvdSBhIGNvbmZpcm1hdGlvbiBjb2RlLmAsYOi/memHjOS4jeaJo+asvuOAgumihOiuouS8muWcqCR7Y2UoZS5uYW1lKX3nlJ/miJDkuIDnrJTliLDlupfku5jmrL7nmoTorqLljZXvvIzlubbnu5nkvaDkuIDkuKrnoa7orqTnoIHjgIJgKTplLmRlbW8/YyhgTm90aGluZyBpcyBjaGFyZ2VkIGhlcmUuIFRoaXMgaXMgYSBkZW1vbnN0cmF0aW9uOiByZXF1ZXN0aW5nIGEgYm9va2luZyBnaXZlcyB5b3UgYSBjb25maXJtYXRpb24gY29kZSwgYnV0ICR7ZS5uYW1lfSBkb2VzIG5vdCByZWNlaXZlIGl0IGFuZCBubyByb29tIGlzIGhlbGQuYCxg6L+Z6YeM5LiN5omj5qy+44CC6L+Z5piv5ryU56S677ya5o+Q5Lqk5ZCO5Lya5b6X5Yiw56Gu6K6k56CB77yM5L2GJHtjZShlLm5hbWUpfeS4jeS8muaUtuWIsO+8jOS5n+S4jeS8muS4uuS9oOS/neeVmeaIv+mXtOOAgmApOmMoYE5vdGhpbmcgaXMgY2hhcmdlZCBoZXJlLiBSZXF1ZXN0aW5nIGEgYm9va2luZyBhc2tzICR7ZS5uYW1lfSB0byBob2xkIHRoZSByb29tcyBhbmQgZ2l2ZXMgeW91IGEgY29uZmlybWF0aW9uIGNvZGUuYCxg6L+Z6YeM5LiN5omj5qy+44CC5o+Q5Lqk5ZCOJHtjZShlLm5hbWUpfeS8muS4uuS9oOS/neeVmeaIv+mXtO+8jOW5tue7meS9oOS4gOS4quehruiupOeggeOAgmApKX08L2Rpdj5gLHdpPWU9PmUubGVuZ3RoPDI/ZVswXT8/IiI6YCR7ZS5zbGljZSgwLC0xKS5qb2luKGMoIiwgIiwi44CBIikpfSR7YygiIGFuZCAiLCLlkowiKX0ke2VbZS5sZW5ndGgtMV19YCxvdz1lPT57Y29uc3QgdD1KbChlKTtpZih0Lmxlbmd0aD4xKXtjb25zdCBuPXQuaW5jbHVkZXMob3QpP290OiIiO3JldHVybltgPGRpdiBjbGFzcz0ibm90ZSI+JHtsKGMoYFRoZXNlIHN0YXlzIGFyZSB3aXRoICR7d2kodC5tYXAobz0+QmUobykubmFtZSkpfS4gRWFjaCBncm91cCdzIGFyZSBib29rZWQgb24gdGhlaXIgb3duLmAsYOi/meS6m+S9j+Wuv+WIhuWxniR7d2kodC5tYXAobz0+QmUobykubmFtZSkpfe+8jOavj+S4qumbhuWboueahOimgeWIhuW8gOmihOiuouOAgmApKX08L2Rpdj5gLC4uLnQubWFwKG89Pntjb25zdCBzPUJlKG8pO3JldHVybmA8ZGl2IGNsYXNzPSJmb290Ij48YnV0dG9uIGNsYXNzPSJnbyR7biYmbiE9PW8/IiBxdWlldCI6IiJ9IiB0eXBlPSJidXR0b24iIGRhdGEtYWN0PSJhc2stYm9vayIgZGF0YS1ncm91cD0iJHtsKG8pfSI+JHtsKGMoYEJvb2sgdGhlICR7cy5uYW1lfSBzdGF5c2AsYOmihOiuoiR7cy5uYW1lfeeahOS9j+Wuv2ApKX08L2J1dHRvbj48L2Rpdj4ke253KHMpfWB9KSxuP1NpKCEwLEJlKG4pKToiIl19cmV0dXJuW1NpKCEwLEJlKHRbMF0pKV19LGl1PSgpPT5CZShvdHx8SmwoUD8ubGluZXM/P1tdKVswXSksc3c9ZT0+e2NvbnN0IHQ9ZS5saW5lcz8/W107aWYoS3I9ISFlLnRheGVzQW5kRmVlcyYmZS50YXhlc0FuZEZlZXMhPT0iSW5jbHVkZWQiLHQubGVuZ3RoPT09MClyZXR1cm5bYDxkaXYgY2xhc3M9ImVtcHR5Ij4ke2MoIlRoZSB0cmlwIGlzIGVtcHR5LiIsIuihjOeoi+mHjOi/mOayoeacieWGheWuueOAgiIpfTwvZGl2PmAsYDxkaXYgY2xhc3M9ImZvb3QiPjxidXR0b24gY2xhc3M9ImdvIiB0eXBlPSJidXR0b24iIGRhdGEtYWN0PSJob21lIj4ke2woYyhgQnJvd3NlICR7a2U/YGhvdGVscyBvbiAke0RlfWA6YCR7RGV9IGhvdGVsc2B9YCxjZShEZSk9PT0i6YWS5bqXIj8i5rWP6KeI5YWo6YOo6YWS5bqXIjpg5rWP6KeIJHtEZX3nmoTphZLlupdgKSl9PC9idXR0b24+PC9kaXY+YF0uam9pbigiIik7Y29uc3Qgbj1bLi4ubmV3IFNldCh0Lm1hcChhPT5TdHJpbmcoYS5kYXk/PyIiKSkpXS5zb3J0KCksbz10LmZpbHRlcihhPT5hLmtpbmQ9PT0icm9vbSIpLHM9Wy4uLm5ldyBTZXQoby5tYXAoYT0+U3RyaW5nKGEuaG90ZWxOYW1lPz8iIikpKV0uZmlsdGVyKEJvb2xlYW4pLHI9cy5sZW5ndGg9PT0xJiZuZXcgU2V0KG8ubWFwKGE9PmAke2Euc3RheT8uY2hlY2tJbn18JHthLnN0YXk/LmNoZWNrT3V0fXwke2EuaG91cmx5Py5zdGFydD8/IiJ9YCkpLnNpemU9PT0xO3JldHVybltgPGRpdiBjbGFzcz0icmV2aWV3LWgiPjxoMiBjbGFzcz0iaC1uYW1lIj4ke2MoIlJldmlldyBhbmQgYm9vayIsIuaguOWvueW5tumihOiuoiIpfTwvaDI+PGRpdiBjbGFzcz0iaC13aGVyZSI+JHtzLmxlbmd0aD09PTE/JG4oc1swXSk6bChzLmxlbmd0aD9jKGAke3MubGVuZ3RofSBob3RlbHNgLGAke3MubGVuZ3RofSDlrrbphZLlupdgKTpjKGAke3QubGVuZ3RofSAke3QubGVuZ3RoPT09MT8iaXRlbSI6Iml0ZW1zIn1gLGAke3QubGVuZ3RofSDpoblgKSl9PC9kaXY+PC9kaXY+YCxyP291KG9bMF0/LnN0YXksb1swXT8uaG91cmx5KToiIixuLm1hcChhPT5gCiAgICAgICR7YSYmbi5sZW5ndGg+MT9gPGRpdiBjbGFzcz0iZGF5Ij4ke2woQWUoYSkpfTwvZGl2PmA6IiJ9CiAgICAgIDxkaXYgY2xhc3M9InJvd3MiPiR7dC5maWx0ZXIoaT0+U3RyaW5nKGkuZGF5Pz8iIik9PT1hKS5tYXAoaT0+dHcoaSxKbCh0KS5sZW5ndGg+MSxyKSkuam9pbigiIil9PC9kaXY+YCkuam9pbigiIiksKGUuZHJvcHBlZD8/W10pLmxlbmd0aD9gPGRpdiBjbGFzcz0iZXJyIj4ke2UuZHJvcHBlZC5tYXAoYT0+YCR7bChhLnRpdGxlKX06ICR7bChhLndoeSl9YCkuam9pbigiPGJyPiIpfTwvZGl2PmA6IiIsLi4uQXJyYXkuaXNBcnJheShlLmdyb3VwcykmJmUuZ3JvdXBzLmxlbmd0aD4xP1tgPGRpdiBjbGFzcz0ibm90ZSI+JHtsKGMoYFByaWNlZCBpbiAkeyhlLmN1cnJlbmNpZXM/P1tdKS5qb2luKCIgYW5kICIpfSwgc2VwYXJhdGVseS4gTm90aGluZyBoZXJlIGNvbnZlcnRzIG9uZSBpbnRvIHRoZSBvdGhlcjsgZWFjaCBob3RlbCBpcyBib29rZWQgYW5kIHBhaWQgaW4gaXRzIG93bi5gLGDliIbliKvku6UgJHsoZS5jdXJyZW5jaWVzPz9bXSkuam9pbigi44CBIil9IOiuoeS7t++8jOi/memHjOS4jeWBmuaNoueul++8m+avj+WutumFkuW6l+aMieiHquW3seeahOW4geenjemihOiuouWSjOS7mOasvuOAgmApKX08L2Rpdj5gLC4uLmUuZ3JvdXBzLm1hcChhPT5faShhLGEuZ29lc1dpdGhBU3RheT9jKGBJbiAke2EuY3VycmVuY3l9LCBnb2VzIHdpdGggYSBzdGF5IC0gbm90IGluIHRoZSB0b3RhbGAsYCR7YS5jdXJyZW5jeX3vvIzpmo/kvY/lrr/kuIDotbforqLvvIzkuI3orqHlhaXmgLvku7dgKTpjKGBUb3RhbCBpbiAke2EuY3VycmVuY3l9YCxgJHthLmN1cnJlbmN5fSDmgLvku7dgKSkpXTpbX2koZSxjKCJUb3RhbCIsIuaAu+S7tyIpKV0sbmV8fCFXbygic2lnbkluIik/IiI6YDxkaXYgY2xhc3M9Im1lbWJlci1vZmZlciI+JHtFLnRhZ308c3Bhbj4ke2woYyhgQSAke2JpfHxEZX0gbWVtYmVyP2AsYCR7Yml8fERlfeS8muWRmO+8n2ApKX0gPGJ1dHRvbiBjbGFzcz0ibGlua3kiIHR5cGU9ImJ1dHRvbiIgZGF0YS1hY3Q9ImFzay1zaWduLWluIj4ke2MoIlNpZ24gaW4gZm9yIHRoZSBtZW1iZXIgcmF0ZSIsIueZu+W9leS6q+S8muWRmOS7tyIpfTwvYnV0dG9uPjwvc3Bhbj48L2Rpdj4ke1NzKCl9YCwuLi5BcnJheS5pc0FycmF5KGUubmVlZHNSb29tKSYmZS5uZWVkc1Jvb20ubGVuZ3RoP2UubmVlZHNSb29tLm1hcChhPT5gPGRpdiBjbGFzcz0iYXNrZWQiPgogICAgICAgICAgICAgPGI+JHtjKCJHb2VzIHdpdGggYSBzdGF5Iiwi6ZyA6ZqP5L2P5a6/5LiA6LW36K6iIil9PC9iPgogICAgICAgICAgICAgPHNwYW4+JHtsKGMoYCR7KGEuZXh0cmFzPz9bXSkuam9pbigiIGFuZCAiKX0gaXMgJHthLmhvdGVsTmFtZX0ncyBzZXJ2aWNlIGZvciBpdHMgZ3Vlc3RzLCBzbyBpdCBpcyBib29rZWQgd2l0aCBhIHJvb20gdGhlcmUgLSBvciBhZGRlZCB0byBhIGJvb2tpbmcgeW91IGFscmVhZHkgaGF2ZS5gLGAkeyhhLmV4dHJhcz8/W10pLmpvaW4oIuOAgSIpfeaYryR7YS5ob3RlbE5hbWV95Li65L2P5a6i5o+Q5L6b55qE5pyN5Yqh77yM6KaB5ZKM6YKj6YeM55qE5oi/6Ze05LiA6LW36K6i77yM5oiW5Yqg5Yiw5L2g5bey5pyJ55qE6aKE6K6i5LiK44CCYCkpfTwvc3Bhbj4KICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZvb3QiPgogICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJnbyIgdHlwZT0iYnV0dG9uIiBkYXRhLWhvdGVsPSIke2woYS5ob3RlbElkKX0iPiR7bChjKGBSb29tcyBhdCAke2EuaG90ZWxOYW1lfWAsYCR7YS5ob3RlbE5hbWV955qE5oi/6Ze0YCkpfTwvYnV0dG9uPgogICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJnbyBxdWlldCIgdHlwZT0iYnV0dG9uIiBkYXRhLWFjdD0iYm9va2luZ3MiPiR7YygiTXkgYm9va2luZ3MiLCLmiJHnmoTpooTorqIiKX08L2J1dHRvbj4KICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgIDwvZGl2PmApOlsuLi5vdyh0KV1dLmpvaW4oIiIpfSxydz1be2lkOiJraW5nLWJlZCIsbGFiZWw6IktpbmcgYmVkIix6aDoi5aSn5bqKIn0se2lkOiJ0d2luLWJlZHMiLGxhYmVsOiJUd2luIGJlZHMiLHpoOiLlj4zluooifSx7aWQ6ImhpZ2gtZmxvb3IiLGxhYmVsOiJIaWdoIGZsb29yIix6aDoi6auY5qW85bGCIn0se2lkOiJsb3ctZmxvb3IiLGxhYmVsOiJMb3cgZmxvb3IiLHpoOiLkvY7mpbzlsYIifSx7aWQ6InF1aWV0LXJvb20iLGxhYmVsOiJRdWlldCByb29tIix6aDoi5a6J6Z2Z5oi/6Ze0In0se2lkOiJjb25uZWN0aW5nLXJvb21zIixsYWJlbDoiQ29ubmVjdGluZyByb29tcyIsemg6Iui/numAmuaIvyJ9LHtpZDoiZWFybHktY2hlY2staW4iLGxhYmVsOiJFYXJseSBjaGVjay1pbiIsemg6IuaPkOWJjeWFpeS9jyJ9LHtpZDoibGF0ZS1hcnJpdmFsIixsYWJlbDoiQXJyaXZpbmcgbGF0ZSIsemg6IuaZmuWIsCJ9LHtpZDoiYWNjZXNzaWJsZS1yb29tIixsYWJlbDoiQWNjZXNzaWJsZSByb29tIix6aDoi5peg6Zqc56KN5oi/In1dLHdzPWU9Pntjb25zdCB0PXJ3LmZpbmQobj0+bi5pZD09PWUpO3JldHVybiB0P2ModC5sYWJlbCx0LnpoKTplfSxpdz17ImtpbmctYmVkIjoidHdpbi1iZWRzIiwidHdpbi1iZWRzIjoia2luZy1iZWQiLCJoaWdoLWZsb29yIjoibG93LWZsb29yIiwibG93LWZsb29yIjoiaGlnaC1mbG9vciJ9LGF3PVt7ZW46IkJlZCIsemg6IuW6iuWeiyIsaWRzOlsia2luZy1iZWQiLCJ0d2luLWJlZHMiXX0se2VuOiJGbG9vciIsemg6IualvOWxgiIsaWRzOlsiaGlnaC1mbG9vciIsImxvdy1mbG9vciJdfSx7ZW46IkFsc28iLHpoOiLlhbbku5YiLGlkczpbInF1aWV0LXJvb20iLCJjb25uZWN0aW5nLXJvb21zIiwiZWFybHktY2hlY2staW4iLCJhY2Nlc3NpYmxlLXJvb20iXX1dLGN3PVsiMTI6MDAiLCIxNDowMCIsIjE2OjAwIiwiMTg6MDAiLCIyMDowMCIsIjIyOjAwIiwiMjM6MzAiXTtsZXQgT2U9bnVsbDtjb25zdCBTaT0oZT0hMSx0PWl1KCkpPT57Y29uc3Qgbj1PZT9PZS5yZXF1ZXN0czpuZT8ucHJlZmVyZW5jZXM/P1tdLG89UD8udmlldz09PSJ0cmlwIiYmIShBcnJheS5pc0FycmF5KFAuZ3JvdXBzKSYmUC5ncm91cHMubGVuZ3RoPjEpP1N0cmluZyhQLnRvdGFsPz8iIik6IiIscz0oUD8ubGluZXM/P1tdKS5maWx0ZXIodT0+dS5raW5kPT09InJvb20iKSxyPXMucmVkdWNlKCh1LHApPT51K051bWJlcihwLnF1YW50aXR5Pz8xKSwwKSxhPXMuc29tZSh1PT51LnBheW1lbnQ9PT0icHJlcGFpZCIpLGk9YT9jKCJDb250aW51ZSB0byBwYXltZW50Iiwi5Y675LuY5qy+Iik6dC5zYW5kYm94P2MoIk1ha2UgYSB0ZXN0IGJvb2tpbmciLCLmj5DkuqTmtYvor5XpooTorqIiKTp0LmJvb2tpbmdNb2RlPT09InBheS1hdC1ob3RlbCI/cj4xP2MoYEJvb2sgJHtyfSByb29tc2AsYOmihOiuoiAke3J9IOmXtGApOmMoIkJvb2sgdGhpcyByb29tIiwi6aKE6K6i6L+Z6Ze05oi/Iik6dC5kZW1vP2MoIlJlcXVlc3QgYm9va2luZyIsIuaPkOS6pOmihOiuoiIpOnI+MT9jKGBIb2xkICR7cn0gcm9vbXNgLGDkv53nlZkgJHtyfSDpl7RgKTpjKCJIb2xkIHRoaXMgcm9vbSIsIuS/neeVmei/memXtOaIvyIpLGQ9T2U/LmFycml2aW5nQXQ/PyIiO3JldHVybmAKICA8ZGl2IGNsYXNzPSJmb3JtIiBpZD0iZ3Vlc3QiJHtlPyIiOiIgaGlkZGVuIn0+CiAgICA8aDMgY2xhc3M9ImZvcm0taCI+JHtjKCJXaG8gaXMgc3RheWluZyIsIuWFpeS9j+S6uuS/oeaBryIpfTwvaDM+CiAgICA8bGFiZWw+JHtjKCJGdWxsIG5hbWUiLCLlp5PlkI0iKX08aW5wdXQgaWQ9ImduYW1lIiB0eXBlPSJ0ZXh0IiBhdXRvY29tcGxldGU9Im9mZiIgcGxhY2Vob2xkZXI9IiR7YygiQXMgaXQgc2hvdWxkIGFwcGVhciBvbiB0aGUgYm9va2luZyIsIuS4juivgeS7tuS4gOiHtCIpfSIgdmFsdWU9IiR7bChPZT8ubmFtZT8/IiIpfSI+PC9sYWJlbD4KICAgIDxkaXYgY2xhc3M9IiR7dC5waG9uZVJlcXVpcmVkPyJ0d28iOiJvbmUifSI+CiAgICAgIDxsYWJlbD4ke2MoIkVtYWlsIiwi6YKu566xIil9PGlucHV0IGlkPSJnbWFpbCIgdHlwZT0iZW1haWwiIGF1dG9jb21wbGV0ZT0ib2ZmIiBwbGFjZWhvbGRlcj0iJHtjKCJGb3IgdGhlIGNvbmZpcm1hdGlvbiIsIuaOpeaUtuehruiupOS/oeaBryIpfSIgdmFsdWU9IiR7bChPZT8uZW1haWw/PyIiKX0iPjwvbGFiZWw+JHt0LnBob25lUmVxdWlyZWQ/YAogICAgICA8bGFiZWw+JHtjKCJQaG9uZSIsIuaJi+acuuWPtyIpfTxpbnB1dCBpZD0iZ3Bob25lIiB0eXBlPSJ0ZWwiIGF1dG9jb21wbGV0ZT0ib2ZmIiBwbGFjZWhvbGRlcj0iJHtjKCJGb3IgdGhlIGhvdGVsIHRvIHJlYWNoIHlvdSIsIuaWueS+v+mFkuW6l+iBlOezu+S9oCIpfSIgdmFsdWU9IiR7bChPZT8ucGhvbmU/PyIiKX0iPjwvbGFiZWw+YDoiIn0KICAgIDwvZGl2PgogICAgPGRldGFpbHMgY2xhc3M9ImFza3MiJHtuLmxlbmd0aHx8T2U/Lm5vdGVzfHxkPyIgb3BlbiI6IiJ9PgogICAgICA8c3VtbWFyeT4ke2MoIlJlcXVlc3RzIGZvciB0aGUgaG90ZWwiLCLnu5nphZLlupfnmoTpnIDmsYIiKX0gPHNtYWxsPiR7Yygib3B0aW9uYWwiLCLpgInloasiKX08L3NtYWxsPjwvc3VtbWFyeT4KICAgICAgPGRpdiBjbGFzcz0iYXNrcy1ib2R5Ij4KICAgICAgICAke2F3Lm1hcCh1PT5gPGRpdiBjbGFzcz0iYXNrLWdyb3VwIiByb2xlPSJncm91cCIgYXJpYS1sYWJlbD0iJHtjKHUuZW4sdS56aCl9Ij4KICAgICAgICAgIDxzcGFuIGNsYXNzPSJ3bCI+JHtjKHUuZW4sdS56aCl9PC9zcGFuPgogICAgICAgICAgPGRpdiBjbGFzcz0iY2hpcHMiPiR7dS5pZHMubWFwKHA9PmA8YnV0dG9uIGNsYXNzPSJjaGlwIGFzayIgdHlwZT0iYnV0dG9uIiBkYXRhLWFzaz0iJHtsKHApfSIgYXJpYS1wcmVzc2VkPSIke24uaW5jbHVkZXMocCk/InRydWUiOiJmYWxzZSJ9Ij4ke2wod3MocCkpfTwvYnV0dG9uPmApLmpvaW4oIiIpfTwvZGl2PgogICAgICAgIDwvZGl2PmApLmpvaW4oIiIpfQogICAgICAgIDxkaXYgY2xhc3M9ImFzay1ncm91cCIgcm9sZT0iZ3JvdXAiIGFyaWEtbGFiZWw9IiR7YygiQXJyaXZpbmcgYXJvdW5kIiwi6aKE6K6h5Yiw5bqXIil9Ij4KICAgICAgICAgIDxzcGFuIGNsYXNzPSJ3bCI+JHtjKCJBcnJpdmluZyBhcm91bmQiLCLpooTorqHliLDlupciKX08L3NwYW4+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJjaGlwcyI+JHtjdy5tYXAodT0+YDxidXR0b24gY2xhc3M9ImNoaXAgYXNrIiB0eXBlPSJidXR0b24iIGRhdGEtYXJyaXZlPSIke3V9IiBhcmlhLXByZXNzZWQ9IiR7ZD09PXU/InRydWUiOiJmYWxzZSJ9Ij4ke3U9PT0iMjM6MzAiP2MoIkFmdGVyIDIyOjAwIiwiMjI6MDAg5Lul5ZCOIik6dX08L2J1dHRvbj5gKS5qb2luKCIiKX08L2Rpdj4KICAgICAgICAgIDxpbnB1dCBpZD0iZ3RpbWUiIHR5cGU9ImhpZGRlbiIgdmFsdWU9IiR7bChkKX0iPgogICAgICAgIDwvZGl2PgogICAgICAgIDxsYWJlbD4ke2MoIkFueXRoaW5nIGVsc2UiLCLlhbbku5bpnIDmsYIiKX08aW5wdXQgaWQ9Imdub3RlIiB0eXBlPSJ0ZXh0IiBhdXRvY29tcGxldGU9Im9mZiIgcGxhY2Vob2xkZXI9IiR7YygiSW4geW91ciBvd24gd29yZHMiLCLnlKjkvaDoh6rlt7HnmoTor53lhpkiKX0iIHZhbHVlPSIke2woT2U/Lm5vdGVzPz8iIil9Ij48L2xhYmVsPgogICAgICAgIDxkaXYgY2xhc3M9Im5vdGUiPiR7bChjKGBUaGVzZSBnbyB0byB0aGUgZGVzayBhcyByZXF1ZXN0cy4gJHt0Lm5hbWV9IG1lZXRzIHdoYXQgaXQgY2FuIG9uIHRoZSBkYXk7IG5vbmUgb2YgaXQgaXMgaGVsZC5gLGDov5nkupvkvJrkvZzkuLrpnIDmsYLovaznu5nliY3lj7DvvIwke2NlKHQubmFtZSl95b2T5aSp5bC96YeP5ruh6Laz77yM5L2G5LiN5L2c5L+d6K+B44CCYCkpfTwvZGl2PgogICAgICAgICR7bmU/YDxsYWJlbCBjbGFzcz0icmVtZW1iZXIiPjxpbnB1dCBpZD0iZ3JlbWVtYmVyIiB0eXBlPSJjaGVja2JveCIke09lPy5yZW1lbWJlcj8iIGNoZWNrZWQiOiIifT4gJHtsKGMoYFJlbWVtYmVyIHRoZSBiZWQsIGZsb29yIGFuZCByb29tIHJlcXVlc3RzIG9uIG15ICR7bmUucHJvZ3JhbW1lPz8ibWVtYmVyc2hpcCJ9IGZvciBuZXh0IHRpbWVgLGDmiorluorlnovjgIHmpbzlsYLlkozmiL/pl7TpnIDmsYLorrDlnKjmiJHnmoQke25lLnByb2dyYW1tZT8/IuS8muWRmCJ96LSm5oi36YeM77yM5LiL5qyh6Ieq5Yqo5bim5LiKYCkpfTwvbGFiZWw+YDoiIn0KICAgICAgPC9kaXY+CiAgICA8L2RldGFpbHM+CiAgICA8YnV0dG9uIGNsYXNzPSJnbyBiaWcgYmxvY2siIHR5cGU9ImJ1dHRvbiIgZGF0YS1hY3Q9ImJvb2siPiR7aX0ke28/YDxzcGFuIGNsYXNzPSJwcmljZS1pbiI+JHtsKG8pfTwvc3Bhbj5gOiIifTwvYnV0dG9uPgogICAgPGRpdiBjbGFzcz0idHJ1c3QiPiR7RS5sb2NrfTxzcGFuPiR7bChhP3Quc2FuZGJveD9jKCJOZXh0LCBhIHBheW1lbnQgcGFnZSBpbiB0ZXN0IG1vZGU6IG5vIHJlYWwgbW9uZXkgbW92ZXMuIENhcmQgZGV0YWlscyBhcmUgdHlwZWQgb25seSB0aGVyZSwgYW5kIG5vdGhpbmcgaXMgYm9va2VkIHVudGlsIGl0IGlzIHBhaWQuIiwi5LiL5LiA5q2l5piv5rWL6K+V5qih5byP55qE5LuY5qy+6aG177yM5LiN5Lya55yf5a6e5omj5qy+44CC5Y2h5Y+35Y+q5Zyo5LuY5qy+6aG15aGr5YaZ77yM5LuY5qy+5oiQ5Yqf5YmN5LiN5Lya6aKE6K6i44CCIik6YyhgTmV4dCwgYSBzZWN1cmUgcGF5bWVudCBwYWdlOiBjYXJkIGRldGFpbHMgYXJlIHR5cGVkIG9ubHkgdGhlcmUuIE5vdGhpbmcgaXMgYm9va2VkIHdpdGggJHt0Lm5hbWV9IHVudGlsIGl0IGlzIHBhaWQsIGFuZCBpZiBpdCBjYW5ub3QgYmUsIGFsbCBvZiBpdCBnb2VzIGJhY2suYCxg5LiL5LiA5q2l5piv5a6J5YWo5LuY5qy+6aG177yM5Y2h5Y+35Y+q5Zyo6YKj6YeM5aGr5YaZ44CC5LuY5qy+5oiQ5Yqf5YmN5LiN5Lya5ZyoJHtjZSh0Lm5hbWUpfemihOiuou+8m+iuouS4jeaIkOS8muWFqOminemAgOWbnuOAgmApOnQuc2FuZGJveD9jKCJBIHRlc3QgYm9va2luZzogbm90aGluZyBpcyBoZWxkIGFuZCBub3RoaW5nIGlzIHBhaWQuIiwi5rWL6K+V6aKE6K6i77ya5LiN5L+d55WZ5oi/6Ze077yM5Lmf5LiN5LuY5qy+44CCIik6dC5ib29raW5nTW9kZT09PSJwYXktYXQtaG90ZWwiP2MoYE5vIGNhcmQgaXMgdGFrZW4gYW5kIG5vdGhpbmcgaXMgY2hhcmdlZC4gQSByZXNlcnZhdGlvbiB3aXRoICR7dC5uYW1lfSwgcGFpZCBhdCB0aGUgaG90ZWwuYCxg5LiN55So57uR5Y2h77yM5Lmf5LiN5omj5qy+44CC6L+Z5piv5ZyoJHtjZSh0Lm5hbWUpfeeahOmihOiuou+8jOWIsOW6l+S7mOasvuOAgmApOnQuZGVtbz9jKGBObyBjYXJkIGlzIHRha2VuIGFuZCBub3RoaW5nIGlzIGNoYXJnZWQuIFRoaXMgaXMgYSBkZW1vbnN0cmF0aW9uOiAke3QubmFtZX0gZG9lcyBub3QgcmVjZWl2ZSBpdCBhbmQgbm8gcm9vbSBpcyBoZWxkLmAsYOS4jeeUqOe7keWNoe+8jOS5n+S4jeaJo+asvuOAgui/meaYr+a8lOekuu+8jCR7Y2UodC5uYW1lKX3kuI3kvJrmlLbliLDvvIzkuZ/kuI3kv53nlZnmiL/pl7TjgIJgKTpjKCJObyBjYXJkIGlzIHRha2VuIGFuZCBub3RoaW5nIGlzIGNoYXJnZWQuIFlvdSBwcmVzZW50IGEgY2FyZCBhdCBjaGVjay1pbi4iLCLkuI3nlKjnu5HljaHvvIzkuZ/kuI3miaPmrL7jgILlhaXkvY/ml7blnKjliY3lj7Dlh7rnpLrpk7booYzljaHljbPlj6/jgIIiKSl9PC9zcGFuPjwvZGl2PgogIDwvZGl2PmB9LFRpPWU9PmUubGVuZ3RoPjE/YCR7ZS5zbGljZSgwLC0xKS5qb2luKGMoIiwgIiwi44CBIikpfSR7YygiIGFuZCAiLCLlkowiKX0ke2UuYXQoLTEpfWA6ZVswXT8/IiIsbHc9ZT0+W2A8ZGl2IGNsYXNzPSJlcnIiPiR7bChyZT09PSJ6aCI/IumihOiuoumcgOimgeWhq+WGmeWnk+WQjeWSjOmCrueuseOAgiI6YFRoZSBib29raW5nIG5lZWRzICR7VGkoZS5taXNzaW5nPz9bXSl8fCJhIG5hbWUgYW5kIGFuIGVtYWlsIn0uYCl9PC9kaXY+YCxTaSghMCldLmpvaW4oIiIpLHV3PWU9Pntjb25zdCB0PWUubWVtYmVyPz97fTtyZXR1cm5bYDxkaXYgY2xhc3M9ImNvbmYiPgogICAgICAgPGRpdiBjbGFzcz0ibm90ZSI+JHtsKHQucHJvZ3JhbW1lKX08L2Rpdj4KICAgICAgICR7dC5uYW1lP2A8ZGl2IGNsYXNzPSJ3aGVyZSI+JHtsKHQubmFtZSl9PC9kaXY+YDpgPGRpdiBjbGFzcz0id2hlcmUiPiR7YygiU2lnbmVkIGluIiwi5bey55m75b2VIil9PC9kaXY+YH0KICAgICAgIDxkaXYgY2xhc3M9ImNvZGUiIHN0eWxlPSJmb250LXNpemU6MjBweCI+JHtsKHQudGllcj8ubmFtZSl9PC9kaXY+CiAgICAgICAke3R5cGVvZiB0LnBvaW50cz09Im51bWJlciI/YDxkaXYgY2xhc3M9IndoZW4iPiR7bChjKGAke3QucG9pbnRzLnRvTG9jYWxlU3RyaW5nKCJlbi1HQiIpfSBwb2ludHNgLGAke3QucG9pbnRzLnRvTG9jYWxlU3RyaW5nKCJlbi1HQiIpfSDnp6/liIZgKSl9PC9kaXY+YDoiIn0KICAgICA8L2Rpdj5gLGA8ZGl2IGNsYXNzPSJ1bnBhaWQiPjxiPiR7bChjKGAke01hdGgucm91bmQoKHQudGllcj8uZGlzY291bnQ/PzApKjEwMCl9JSBvZmZgLGDkvJjmg6AgJHtNYXRoLnJvdW5kKCh0LnRpZXI/LmRpc2NvdW50Pz8wKSoxMDApfSVgKSl9PC9iPjxzcGFuPiR7bChjKGBSb29tIHJhdGVzIGFuZCB0cmlwIHRvdGFscyBub3cgc2hvdyB0aGUgJHt0LnRpZXI/Lm5hbWV9IG1lbWJlciByYXRlLiBOb3RoaW5nIGlzIGNoYXJnZWQgYnkgc2lnbmluZyBpbi5gLGDmiL/ku7flkozooYznqIvmgLvku7flt7LmjIkke3QudGllcj8ubmFtZX3kvJrlkZjku7fmmL7npLrjgILnmbvlvZXkuI3kvJrmiaPmrL7jgIJgKSl9PC9zcGFuPjwvZGl2PmAsKHQucHJlZmVyZW5jZXM/P1tdKS5sZW5ndGg/YDxkaXYgY2xhc3M9ImFza2VkIj4KICAgICAgICAgICA8Yj4ke2MoIlNhdmVkIGZvciB5b3VyIG5leHQgc3RheXMiLCLlt7LkuLrkuIvmrKHlhaXkvY/kv53lrZgiKX08L2I+CiAgICAgICAgICAgPHNwYW4+JHtsKGMoYCR7dC5wcmVmZXJlbmNlcy5tYXAod3MpLmpvaW4oIiwgIil9IC0gdGlja2VkIG9uIHRoZSBib29raW5nIGZvcm0sIGFuZCBhc2tlZCBmb3Igb25seSB3aGVuIHlvdSBib29rIHdpdGggdGhlbS5gLGAke3QucHJlZmVyZW5jZXMubWFwKHdzKS5qb2luKCLjgIEiKX3vvIzpooTorqLml7bkvJroh6rliqjli77pgInvvIzlj6rlnKjkvaDnlKjlroPku6zpooTorqLml7bmiY3mj5Dlh7rjgIJgKSl9PC9zcGFuPgogICAgICAgICAgIDxidXR0b24gY2xhc3M9Imxpbmt5IiB0eXBlPSJidXR0b24iIGRhdGEtYWN0PSJmb3JnZXQtcHJlZnMiPiR7YygiRm9yZ2V0IHRoZW0iLCLmuIXpmaTov5nkupvlgY/lpb0iKX08L2J1dHRvbj4KICAgICAgICAgPC9kaXY+YDoiIixgPGRpdiBjbGFzcz0iZm9vdCI+CiAgICAgICA8YnV0dG9uIGNsYXNzPSJnbyIgdHlwZT0iYnV0dG9uIiBkYXRhLWFjdD0iaG9tZSI+JHtjKCJGaW5kIGEgaG90ZWwiLCLmib7phZLlupciKX08L2J1dHRvbj4KICAgICAgIDxidXR0b24gY2xhc3M9ImdvIHF1aWV0IiB0eXBlPSJidXR0b24iIGRhdGEtYWN0PSJzaWduLW91dCI+JHtjKCJTaWduIG91dCIsIumAgOWHuueZu+W9lSIpfTwvYnV0dG9uPgogICAgIDwvZGl2PmBdLmpvaW4oIiIpfSxkdz0oKT0+W2A8ZGl2IGNsYXNzPSJlcnIiPiR7YygiTm8gbWVtYmVyc2hpcCBtYXRjaGVzIHRoYXQgbnVtYmVyIGFuZCBzdXJuYW1lLiBDaGVjayBib3RoIGFzIHRoZXkgYXJlIHByaW50ZWQg4oCUIG5vdGhpbmcgZWxzZSBpcyBuZWVkZWQsIHRoaXMgY29ubmVjdG9yIG5ldmVyIGFza3MgZm9yIGEgcGFzc3dvcmQuIiwi5Lya5ZGY5Y+35ZKM5aeT5rCP5a+55LiN5LiK44CC6K+35oyJ5Y2h5LiK5Y2w55qE5qC45a+55Lik6aG55Y2z5Y+v77yM6L+Z6YeM5LuO5LiN6KaB5rGC5a+G56CB44CCIil9PC9kaXY+YCxTcyghMCldLmpvaW4oIiIpLFNzPShlPSExKT0+YAogIDxkaXYgY2xhc3M9ImZvcm0iIGlkPSJzaWduaW4iJHtlPyIiOiIgaGlkZGVuIn0+CiAgICA8ZGl2IGNsYXNzPSJ0d28iPgogICAgICA8bGFiZWw+JHtjKCJNZW1iZXJzaGlwIG51bWJlciIsIuS8muWRmOWPtyIpfTxpbnB1dCBpZD0ibW51bSIgdHlwZT0idGV4dCIgYXV0b2NvbXBsZXRlPSJvZmYiIHBsYWNlaG9sZGVyPSIke2MoIkFzIGl0IGlzIHByaW50ZWQiLCLmjInljaHkuIrljbDnmoTloavlhpkiKX0iPjwvbGFiZWw+CiAgICAgIDxsYWJlbD4ke2MoIlN1cm5hbWUiLCLlp5PmsI8iKX08aW5wdXQgaWQ9Im1zdXIiIHR5cGU9InRleHQiIGF1dG9jb21wbGV0ZT0ib2ZmIiBwbGFjZWhvbGRlcj0iJHtjKCJUaGUgc3VybmFtZSBvbiBpdCIsIuWNoeS4iueahOWnk+awjyIpfSI+PC9sYWJlbD4KICAgIDwvZGl2PgogICAgPGJ1dHRvbiBjbGFzcz0iZ28iIHR5cGU9ImJ1dHRvbiIgZGF0YS1hY3Q9InNpZ24taW4iPiR7YygiU2lnbiBpbiIsIueZu+W9lSIpfTwvYnV0dG9uPgogICAgPGRpdiBjbGFzcz0ibm90ZSI+JHtjKCJObyBwYXNzd29yZCBpcyBhc2tlZCBmb3IgYW5kIG5vbmUgaXMgc3RvcmVkLiBTaWduaW5nIGluIHNob3dzIHRoZSBtZW1iZXIgcmF0ZTsgbm90aGluZyBpcyBjaGFyZ2VkLiIsIuS4jemcgOimgeWvhuegge+8jOS5n+S4jeS8muS/neWtmOS7u+S9leWvhueggeOAgueZu+W9leWQjuaYvuekuuS8muWRmOS7t++8jOS4jeS8muaJo+asvuOAgiIpfTwvZGl2PgogIDwvZGl2PmAscHc9ZT0+e2NvbnN0IHQ9ZS5yZXF1ZXN0ZWQ/P1tdO3JldHVybiB0Lmxlbmd0aD9gPGRpdiBjbGFzcz0iYXNrZWQke2UuYWNjZXNzaWJpbGl0eT8iIGZsYWciOiIifSI+CiAgICA8Yj4ke2MoIlJlcXVlc3RlZCwgbm90IGhlbGQiLCLlt7Lmj5Dlh7rnmoTpnIDmsYLvvIjkuI3kvZzkv53or4HvvIkiKX08L2I+CiAgICAke3QubWFwKG49PmA8c3Bhbj4ke2wobil9PC9zcGFuPmApLmpvaW4oIiIpfQogIDwvZGl2PmA6IiJ9LGFkPWU9PmUuaG9sZFVudGlsTG9jYWw/YyhgJHtlLmhvbGRVbnRpbExvY2FsfSAoaG90ZWwgdGltZSlgLGAke2UuaG9sZFVudGlsTG9jYWx977yI6YWS5bqX5b2T5Zyw5pe26Ze077yJYCk6YCR7U3RyaW5nKGUuaG9sZFVudGlsPz8iIikuc2xpY2UoMCwxNikucmVwbGFjZSgiVCIsIiAiKX0gVVRDYCxodz0oZSx0KT0+e2NvbnN0IG49dC5wYXltZW50Pz97fSx7bmFtZTpvLHNhbmRib3g6c309QmUodC5zdXBwbGllcikscj1TdHJpbmcobi5wYXlCeUxvY2FsPz8iIik7cmV0dXJuW2A8ZGl2IGNsYXNzPSJib29rZWQgcGF5IiByb2xlPSJzdGF0dXMiPgogICAgICAgPGRpdiBjbGFzcz0iYm9va2VkLW1hcmsgcGF5Ij4ke0UubG9ja308L2Rpdj4KICAgICAgIDxoMiBjbGFzcz0iYm9va2VkLXQiPiR7YygiUGF5IHRvIGZpbmlzaCBib29raW5nIiwi5LuY5qy+5ZCO5a6M5oiQ6aKE6K6iIil9PC9oMj4KICAgICAgIDxwIGNsYXNzPSJib29rZWQtcyI+JHtsKGMoYE5vdGhpbmcgaXMgYm9va2VkIHlldC4gT25jZSB0aGUgcGF5bWVudCBnb2VzIHRocm91Z2gsIHRoZSByb29tIGlzIGJvb2tlZCB3aXRoICR7b30uYCxg546w5Zyo6L+Y5rKh5pyJ6aKE6K6i44CC5LuY5qy+5oiQ5Yqf5ZCO77yM5oi/6Ze05omN5Lya5ZyoJHtjZShvKX3orqLlpb3jgIJgKSl9PC9wPgogICAgIDwvZGl2PmAsYDxkaXYgY2xhc3M9InBheWJveCI+CiAgICAgICA8ZGl2IGNsYXNzPSJ3bCI+JHtjKCJUbyBwYXkgbm93Iiwi6ZyA5LuY5qy+Iil9PC9kaXY+CiAgICAgICA8ZGl2IGNsYXNzPSJwYXktYW1vdW50Ij4ke2wobi5hbW91bnQ/PyIiKX08L2Rpdj4KICAgICAgICR7bi5wYXlCeT9gPGRpdiBjbGFzcz0icGF5LWJ5Ij4ke0UuY2xvY2t9PHNwYW4+JHtsKHI/YyhgUGF5IGJ5ICR7cn1gLGDor7flnKggJHtyfSDliY3ku5jmrL5gKTpjKCJQYXkgd2l0aGluIiwi5Ymp5L2Z5pe26Ze0IikpfTxicj48YiBjbGFzcz0iY291bnRkb3duIG5iIiBkYXRhLXVudGlsPSIke2wobi5wYXlCeSl9Ij4ke2wodmcoU3RyaW5nKG4ucGF5QnkpKSl9PC9iPjwvc3Bhbj48L2Rpdj5gOiIifQogICAgICAgJHtuLnVybD9gPGJ1dHRvbiBjbGFzcz0iZ28gYmlnIGJsb2NrIiB0eXBlPSJidXR0b24iIGRhdGEtYWN0PSJwYXkiIGRhdGEtdXJsPSIke2wobi51cmwpfSIgZGF0YS1jb2RlPSIke2wodC5jb25maXJtYXRpb25Db2RlKX0iIGRhdGEtdW50aWw9IiR7bChuLnBheUJ5Pz8iIil9Ij4ke0UubG9ja30ke2woYyhgUGF5ICR7bi5hbW91bnQ/PyIifSBvbiB0aGUgc2VjdXJlIHBhZ2VgLGDljrvlronlhajpobXpnaLku5jmrL4gJHtuLmFtb3VudD8/IiJ9YCkpfTwvYnV0dG9uPmA6IiJ9CiAgICAgICA8YnV0dG9uIGNsYXNzPSJsaW5reSBwYXktY2hlY2siIHR5cGU9ImJ1dHRvbiIgZGF0YS1hY3Q9InBheS1jaGVjayIgZGF0YS1jb2RlPSIke2wodC5jb25maXJtYXRpb25Db2RlKX0iPiR7YygiUGFpZCBhbHJlYWR5PyBDaGVjayBub3ciLCLlt7Lnu4/ku5jov4fkuobvvJ/njrDlnKjliLfmlrAiKX08L2J1dHRvbj4KICAgICAgIDxkaXYgY2xhc3M9InRydXN0Ij4ke0UubG9ja308c3Bhbj4ke2wocz9jKCJUZXN0IG1vZGU6IG5vIHJlYWwgbW9uZXkgbW92ZXMgLSB1c2UgYSB0ZXN0IGNhcmQgb24gdGhlIHBheW1lbnQgcGFnZS4gQ2FyZCBkZXRhaWxzIGFyZSB0eXBlZCBvbmx5IHRoZXJlLCBuZXZlciBoZXJlLiIsIua1i+ivleaooeW8j++8muS4jeS8muecn+WunuaJo+asvu+8jOivt+WcqOS7mOasvumhteeUqOa1i+ivleWNoeOAguWNoeWPt+WPquWcqOS7mOasvumhteWhq+WGme+8jOi/memHjOS4jeaUtumbhuOAgiIpOmMoIkNhcmQgZGV0YWlscyBhcmUgdHlwZWQgb25seSBvbiB0aGUgcGF5bWVudCBwYWdlLCBuZXZlciBoZXJlLiBJZiB0aGUgaG90ZWwgZG9lcyBub3QgY29uZmlybSwgYWxsIG9mIGl0IGdvZXMgYmFjay4iLCLljaHlj7flj6rlnKjku5jmrL7pobXloavlhpnvvIzov5nph4zkuI3mlLbpm4bjgILlpoLmnpzphZLlupfmsqHmnInnoa7orqTvvIzmrL7pobnkvJrlhajpop3pgIDlm57jgIIiKSl9PC9zcGFuPjwvZGl2PgogICAgIDwvZGl2PmAsYDxkaXYgY2xhc3M9InBheS1mb3IiPgogICAgICAgPGRpdiBjbGFzcz0id2hlcmUiPiR7JG4odC5ob3RlbE5hbWUpfTwvZGl2PgogICAgICAgJHtvdSh0LnN0YXksdC5ob3VybHkpfQogICAgICAgPGRpdiBjbGFzcz0icm93cyI+JHsodC5xdW90ZT8ubGluZXM/P1tdKS5tYXAoa2cpLmpvaW4oIiIpfTwvZGl2PgogICAgICAgPGRpdiBjbGFzcz0ibm90ZSI+JHtsKGMoYFJlZmVyZW5jZSAke3QuY29uZmlybWF0aW9uQ29kZX0gwrcgZm9yICR7W3QuZ3Vlc3Q/Lm5hbWUsdC5ndWVzdD8uZW1haWxdLmZpbHRlcihCb29sZWFuKS5qb2luKCIsICIpfWAsYOe8luWPtyAke3QuY29uZmlybWF0aW9uQ29kZX0gwrcgJHtbdC5ndWVzdD8ubmFtZSx0Lmd1ZXN0Py5lbWFpbF0uZmlsdGVyKEJvb2xlYW4pLmpvaW4oIu+8jCIpfWApKX08L2Rpdj4KICAgICA8L2Rpdj5gXS5qb2luKCIiKX0sbXc9ZT0+W2U/Lm5hbWUsZT8uZW1haWxdLmZpbHRlcihCb29sZWFuKS5tYXAodD0+YDxzcGFuIGNsYXNzPSJuYiI+JHtsKHQpfTwvc3Bhbj5gKS5qb2luKCc8c3BhbiBhcmlhLWhpZGRlbj0idHJ1ZSI+IMK3IDwvc3Bhbj4nKSx2Zz1lPT57Y29uc3QgdD1NYXRoLm1heCgwLERhdGUucGFyc2UoZSktRGF0ZS5ub3coKSk7aWYoIXQpcmV0dXJuIGMoInRpbWUgaXMgdXAiLCLlt7LotoXml7YiKTtjb25zdCBuPWk9PlN0cmluZyhpKS5wYWRTdGFydCgyLCIwIiksbz1NYXRoLmZsb29yKHQvMzZlNSkscz1NYXRoLmZsb29yKHQlMzZlNS82ZTQpLHI9TWF0aC5mbG9vcih0JTZlNC8xZTMpLGE9bz9gJHtvfToke24ocyl9OiR7bihyKX1gOmAke3N9OiR7bihyKX1gO3JldHVybiBjKGAke2F9IGxlZnRgLGDov5jliakgJHthfWApfTtzZXRJbnRlcnZhbCgoKT0+e2Zvcihjb25zdCBlIG9mIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIi5jb3VudGRvd25bZGF0YS11bnRpbF0iKSllLnRleHRDb250ZW50PXZnKGUuZGF0YXNldC51bnRpbD8/IiIpfSwxZTMpO2xldCBTZT1udWxsO2NvbnN0IHppPThlMyxhdT0oKT0+e1NlPy50aW1lciYmY2xlYXJUaW1lb3V0KFNlLnRpbWVyKSxTZT1udWxsfSxmdz1lPT50PT57Y29uc3Qgbj0odD8uYm9va2luZ3M/P1tdKS5maW5kKG89PlN0cmluZyhvLmNvbmZpcm1hdGlvbkNvZGUpLnRvVXBwZXJDYXNlKCk9PT1lLnRvVXBwZXJDYXNlKCkpO3JldHVybiFufHwhWyJhd2FpdGluZy1wYXltZW50IiwicmVxdWVzdGVkIiwiY29uZmlybWVkIl0uaW5jbHVkZXMoU3RyaW5nKG4uc3RhdHVzKSk/dDp7Li4udCx2aWV3OiJib29raW5nIixib29raW5nOm4sYm9va2luZ3M6dm9pZCAwLHRvdGFsOm4ucXVvdGU/LnRvdGFsfX0sJGc9ZT0+e2F1KCksVygibGlzdEJvb2tpbmdzIix0dChlKSx7cHVzaDohMSxmb2xkOmZ3KGUpfSkuY2F0Y2goKCk9PnEoYygiQ291bGQgbm90IGNoZWNrIHRoZSBwYXltZW50IGp1c3Qgbm93LiIsIuaaguaXtuayoeiDveafpeWIsOS7mOasvueKtuaAgeOAgiIpKSl9LGNkPWU9PiEhZG9jdW1lbnQucXVlcnlTZWxlY3RvcihgI2NvbnRlbnQgW2RhdGEtYWN0PSJwYXkiXVtkYXRhLWNvZGU9IiR7Q1NTLmVzY2FwZShlKX0iXWApLGN1PWU9Pntjb25zdCB0PUdmKCJsaXN0Qm9va2luZ3MiKTtpZighdHx8IVNlfHxTZS5jb2RlIT09ZSlyZXR1cm47aWYoIWNkKGUpfHxEYXRlLm5vdygpPlNlLnVudGlsKzZlNCl7YXUoKTtyZXR1cm59Y29uc3Qgbj1vPT57U2U/LmNvZGU9PT1lJiYoU2UudGltZXI9c2V0VGltZW91dCgoKT0+Y3UoZSksbykpfTtNZS5jYWxsU2VydmVyVG9vbCh7bmFtZTp0LGFyZ3VtZW50czpKZih0dChlKSl9KS50aGVuKG89Pntjb25zdCBzPShvPy5zdHJ1Y3R1cmVkQ29udGVudD8uYm9va2luZ3M/P1tdKS5maW5kKHI9PlN0cmluZyhyLmNvbmZpcm1hdGlvbkNvZGUpLnRvVXBwZXJDYXNlKCk9PT1lLnRvVXBwZXJDYXNlKCkpO3MmJnMuc3RhdHVzIT09ImF3YWl0aW5nLXBheW1lbnQiJiZjZChlKT8kZyhlKTpuKHppKX0pLmNhdGNoKCgpPT5uKHppKjIpKX0seWc9KCk9PntTZSYmZG9jdW1lbnQudmlzaWJpbGl0eVN0YXRlIT09ImhpZGRlbiImJihTZS50aW1lciYmY2xlYXJUaW1lb3V0KFNlLnRpbWVyKSxjdShTZS5jb2RlKSl9O2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoInZpc2liaWxpdHljaGFuZ2UiLHlnKTt3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigiZm9jdXMiLHlnKTtjb25zdCBndz1lPT57Y29uc3QgdD1BcnJheS5pc0FycmF5KGUuYm9va2luZ3MpJiZlLmJvb2tpbmdzLmxlbmd0aD9lLmJvb2tpbmdzOltlLmJvb2tpbmc/P3t9XSxuPXQuZmluZChDPT5DPy5zdGF0dXM9PT0iYXdhaXRpbmctcGF5bWVudCImJkM/LnBheW1lbnQpO2lmKG4mJnQubGVuZ3RoPT09MSlyZXR1cm4gaHcoZSxuKTtjb25zdCBvPXQubGVuZ3RoPjEse25hbWU6cyxib29raW5nTW9kZTpyLGRlbW86YSxzYW5kYm94OmksLi4uZH09QmUodFswXT8uc3VwcGxpZXIpLHU9Qz0+JF8oQykmJihDPT09Imxpc3RFeHRyYXMiP2QuZXh0cmFzOkM9PT0iY2hhbmdlQm9va2luZyI/ZC5jaGFuZ2VzOiEwKSxwPUM9PnI9PT0iaG9sZCImJiFhJiYoQy5ob2xkVW50aWxMb2NhbHx8Qy5ob2xkVW50aWwpP2A8ZGl2IGNsYXNzPSJyZW1pbmQiPiR7RS5jbG9ja308c3Bhbj4ke2woYyhgVGhlIHJvb20gaXMgaGVsZCBmb3IgeW91IHVudGlsICR7YWQoQyl9LmAsYOaIv+mXtOS4uuS9oOS/neeVmeWIsCAke2FkKEMpfeOAgmApKX08L3NwYW4+PC9kaXY+YDoiIixoPShDLEYsJGUpPT4oS3I9ISFDLnF1b3RlPy50YXhlc0FuZEZlZXMmJkMucXVvdGUudGF4ZXNBbmRGZWVzIT09IkluY2x1ZGVkIixbYDxkaXYgY2xhc3M9ImNvbmYgdGlja2V0Ij4KICAgICAgICAgPGRpdiBjbGFzcz0ibm90ZSI+JHtjKCJDb25maXJtYXRpb24gY29kZSIsIuehruiupOeggSIpfTwvZGl2PgogICAgICAgICA8ZGl2IGNsYXNzPSJjb2RlIj4ke2woQy5jb25maXJtYXRpb25Db2RlKX08L2Rpdj4KICAgICAgICAgPGRpdiBjbGFzcz0id2hlcmUiPiR7JG4oQy5ob3RlbE5hbWUpfTwvZGl2PgogICAgICAgICAke291KEMuc3RheSxDLmhvdXJseSl9CiAgICAgICAgIDxkaXYgY2xhc3M9IndoZW4iPiR7bXcoQy5ndWVzdCl9PC9kaXY+CiAgICAgICA8L2Rpdj5gLHAoQykscj09PSJwYXktYXQtaG90ZWwiJiZDLnN0YXR1cz09PSJyZXF1ZXN0ZWQiP2A8ZGl2IGNsYXNzPSJyZW1pbmQiPiR7RS5jbG9ja308c3Bhbj4ke2woYyhgV2FpdGluZyBmb3IgJHtzfSB0byBjb25maXJtIHRoaXMgYm9va2luZyDigJQgdGhhdCB0YWtlcyB1cCB0byBlaWdodCBtaW51dGVzLiBNeSBib29raW5ncyBzaG93cyB3aGVuIGl0IGhhcy5gLGDmraPlnKjnrYkke2NlKHMpfeehruiupOi/meeslOmihOiuou+8jOacgOWkmue6puWFq+WIhumSn+OAguehruiupOWQjuWPr+WcqOKAnOaIkeeahOmihOiuouKAnemHjOeci+WIsOOAgmApKX08L3NwYW4+PC9kaXY+YDoiIixgPGRpdiBjbGFzcz0icm93cyI+JHsoQy5xdW90ZT8ubGluZXM/P1tdKS5tYXAoa2cpLmpvaW4oIiIpfTwvZGl2PmAsQy5xdW90ZT8uc3VidG90YWwmJkMucXVvdGU/LnRheGVzQW5kRmVlcz9faSh7c3VidG90YWw6Qy5xdW90ZS5zdWJ0b3RhbCx0YXhlc0FuZEZlZXM6Qy5xdW90ZS50YXhlc0FuZEZlZXMsdG90YWw6RixsaW5lczpDLnF1b3RlLmxpbmVzPz9bXX0sYygiVG90YWwiLCLmgLvku7ciKSk6YDxkaXYgY2xhc3M9Im1vbmV5LW91dCI+PHNwYW4+JHtjKCJUb3RhbCIsIuaAu+S7tyIpfTwvc3Bhbj48c3Bhbj4ke2woRil9PC9zcGFuPjwvZGl2PmAscHcoJGUpLG8/YDxkaXYgY2xhc3M9ImZvb3QiPgogICAgICAgICAgICAgJHt1KCJsaXN0RXh0cmFzIik/YDxidXR0b24gY2xhc3M9ImdvIHF1aWV0IiB0eXBlPSJidXR0b24iIGRhdGEtYm9va2luZy1leHRyYXM9IiR7bChDLmNvbmZpcm1hdGlvbkNvZGUpfSI+JHtjKCJBZGQtb25zIiwi6ZmE5Yqg5pyN5YqhIil9PC9idXR0b24+YDoiIn0KICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImdvIHF1aWV0IiB0eXBlPSJidXR0b24iIGRhdGEtY2FuY2VsPSIke2woQy5jb25maXJtYXRpb25Db2RlKX0iPiR7bChjKGBDYW5jZWwgJHtDLmhvdGVsTmFtZX1gLGDlj5bmtogke0MuaG90ZWxOYW1lfWApKX08L2J1dHRvbj4KICAgICAgICAgICA8L2Rpdj5gOiIiXS5qb2luKCIiKSksYj1yPT09InBheS1hdC1ob3RlbCImJnQuc29tZShDPT5DLnN0YXR1cz09PSJyZXF1ZXN0ZWQiKSwkPW8/IiI6dFswXT8ucGF5bWVudD8uc3RhdHVzPT09InBhaWQiP1N0cmluZyh0WzBdLnBheW1lbnQuYW1vdW50Pz8iIik6IiIsaz0hbyYmdFswXT8ucGF5bWVudD8uc3RhdHVzPT09InBhaWQiLFQ9az90WzBdPy5zdGF0dXM9PT0iY29uZmlybWVkIj9pP2MoIlRlc3QgYm9va2luZyBwYWlkIGFuZCBib29rZWQiLCLmtYvor5XpooTorqLlt7Lku5jmrL7lubborqLlpb0iKTpjKGBQYWlkIGFuZCBib29rZWQgd2l0aCAke3N9YCxg5bey5LuY5qy+77yMJHtjZShzKX3lt7Lnoa7orqRgKTpjKGBQYWlkIOKAlCB3YWl0aW5nIGZvciAke3N9IHRvIGNvbmZpcm1gLGDlt7Lku5jmrL7vvIznrYnlvoUke2NlKHMpfeehruiupGApOmk/YygiVGVzdCBib29raW5nIG1hZGUiLCLmtYvor5XpooTorqLlt7Lmj5DkuqQiKTpyPT09InBheS1hdC1ob3RlbCI/Yj9jKGBTZW50IHRvICR7c31gLGDlt7Lmj5DkuqTnu5kke2NlKHMpfWApOmMoYEJvb2tlZCB3aXRoICR7c31gLGDlt7LlnKgke2NlKHMpfemihOiuouaIkOWKn2ApOmE/YygiRGVtbyBib29raW5nIG1hZGUiLCLmvJTnpLrpooTorqLlt7Lmj5DkuqQiKTpjKG8/IlJvb21zIGhlbGQiOiJSb29tIGhlbGQiLCLmiL/pl7Tlt7Lkv53nlZkiKSx4PVN0cmluZyh0WzBdPy5zdGF0dXM/PyIiKSx6PSFvJiZbImNhbmNlbGxlZCIsImV4cGlyZWQiLCJmYWlsZWQiXS5pbmNsdWRlcyh4KSxJPSFvJiZbInJlcXVlc3RlZCIsInVuY29uZmlybWVkIl0uaW5jbHVkZXMoeCksWj0hIWUub3BlbmVkJiYhbyxpZT1aP3o/YyhQblt4XT8uWzBdPz8iRW5kZWQiLFBuW3hdPy5bMV0/PyLlt7Lnu5PmnZ8iKTprP1Q6ST9jKCJXYWl0aW5nIGZvciBjb25maXJtYXRpb24iLCLnrYnlvoXnoa7orqQiKTppP2MoIlRlc3QgYm9va2luZyBjb25maXJtZWQiLCLmtYvor5XpooTorqLlt7Lnoa7orqQiKTpjKCJCb29raW5nIGNvbmZpcm1lZCIsIumihOiuouW3suehruiupCIpOlQ7cmV0dXJuW2A8ZGl2IGNsYXNzPSJib29rZWQke1omJno/IiBlbmRlZCI6WiYmST8iIHdhaXRpbmciOiIifSIgcm9sZT0ic3RhdHVzIj4KICAgICAgIDxkaXYgY2xhc3M9ImJvb2tlZC1tYXJrIj4ke1omJno/RS5lcnJvcjpaJiZJP0UuY2xvY2s6RS5kb25lfTwvZGl2PgogICAgICAgPGgyIGNsYXNzPSJib29rZWQtdCI+JHtsKGllKX08L2gyPgogICAgICAgPHAgY2xhc3M9ImJvb2tlZC1zIj4ke2woWiYmej9jKCJUaGlzIGJvb2tpbmcgbm8gbG9uZ2VyIGhvbGRzIGEgcm9vbS4iLCLov5nnrJTpooTorqLlt7LkuI3lho3ljaDnlKjmiL/pl7TjgIIiKTpvP2MoYCR7dC5sZW5ndGh9IGNvbmZpcm1hdGlvbiBjb2Rlcywgb25lIGZvciBlYWNoIGhvdGVsLmAsYOWFsSAke3QubGVuZ3RofSDkuKrnoa7orqTnoIHvvIzmr4/lrrbphZLlupfkuIDkuKrjgIJgKTpjKCJLZWVwIHRoaXMgY29kZTogd2l0aCBpdCBhbmQgeW91ciBlbWFpbCwgeW91IGNhbiBmaW5kIHRoaXMgYm9va2luZyBhZ2FpbiBmcm9tIGFueSBjaGF0LiIsIuivt+S/neWtmOi/meS4quehruiupOeggeOAguWHreWug+WSjOS9oOeahOmCrueuse+8jOWcqOS7u+S9leWvueivnemHjOmDveiDveaJvuWbnui/meeslOmihOiuouOAgiIpKX08L3A+CiAgICAgPC9kaXY+YCwuLi50Lm1hcChDPT5vP2goQyxTdHJpbmcoQy50b3RhbD8/IiIpLEMpOmgoQyxTdHJpbmcoZS50b3RhbD8/IiIpLGUpKSxvP2A8ZGl2IGNsYXNzPSJub3RlIj4ke2woYyhgJHt0Lmxlbmd0aH0gYm9va2luZ3MsIG9uZSBmb3IgZWFjaCBzdGF5LiBFYWNoIGhvdGVsIGtlZXBzIGl0cyBvd24gbmlnaHRzIHVuZGVyIGl0cyBvd24gY29kZSwgYW5kIGVhY2ggaXMgJHt1KCJjaGFuZ2VCb29raW5nIik/ImNoYW5nZWQgb3IgY2FuY2VsbGVkIjoiY2FuY2VsbGVkIn0gb24gaXRzIG93bi5gLGDlhbEgJHt0Lmxlbmd0aH0g56yU6aKE6K6i77yM5q+P5q615L2P5a6/5LiA56yU77yM5ZCE5pyJ6Ieq5bex55qE56Gu6K6k56CB77yMJHt1KCJjaGFuZ2VCb29raW5nIik/IuS/ruaUueaIluWPlua2iCI6IuWPlua2iCJ96YO96KaB5YiG5Yir6L+b6KGM44CCYCkpfTwvZGl2PmA6IiIsJD9gPGRpdiBjbGFzcz0idW5wYWlkIHBhaWQiPgogICAgICAgPGI+JHtsKGMoYFBhaWQgaW4gYWR2YW5jZTogJHskfS5gLGDlt7LpooTku5ggJHskfeOAgmApKX08L2I+CiAgICAgICA8c3Bhbj4ke2woaT9jKCJQYWlkIGluIHRlc3QgbW9kZSAtIG5vIHJlYWwgbW9uZXkgbW92ZWQsIGFuZCB0aGUgYm9va2luZyBpcyBpbiBhIHNpbXVsYXRlZCBzeXN0ZW0uIiwi5rWL6K+V5qih5byP5LuY5qy+77yM5rKh5pyJ55yf5a6e5omj5qy+77yb6K6i5Y2V5Zyo5qih5ouf57O757uf6YeM44CCIik6YyhgTm90aGluZyBtb3JlIGlzIHBhaWQgYXQgdGhlIGhvdGVsIGZvciB0aGUgcm9vbS4gSWYgJHtzfSBkb2VzIG5vdCBjb25maXJtIGl0LCBhbGwgb2YgaXQgZ29lcyBiYWNrIHRvIHlvdXIgY2FyZC5gLGDliLDlupfkuI3nlKjlho3ku5jmiL/otLnjgILlpoLmnpwke2NlKHMpfeayoeacieehruiupO+8jOasvumhueS8muWFqOminemAgOWbnuWOn+WNoeOAgmApKX08L3NwYW4+CiAgICAgPC9kaXY+YDppP2A8ZGl2IGNsYXNzPSJ1bnBhaWQiPgogICAgICAgPGI+JHtjKCJBIHRlc3QgYm9va2luZy4iLCLov5nmmK/mtYvor5XpooTorqLjgIIiKX08L2I+CiAgICAgICA8c3Bhbj4ke2woYyhgTWFkZSBpbiBhIHNpbXVsYXRlZCBjb3B5IG9mICR7c30ncyBzeXN0ZW06IG5vdCBhICR7c30gcmVzZXJ2YXRpb24sIG5vIHJvb20gaXMgaGVsZCwgYW5kIG5vdGhpbmcgaXMgcGFpZC5gLGDlnKgke2NlKHMpfeezu+e7n+eahOaooeaLn+WJr+acrOmHjOeUn+aIkO+8jOS4jeaYr+ecn+WunumihOiuou+8jOS4jeS/neeVmeaIv+mXtO+8jOS5n+S4jeS7mOasvuOAgmApKX08L3NwYW4+CiAgICAgPC9kaXY+YDpyPT09InBheS1hdC1ob3RlbCI/YDxkaXYgY2xhc3M9InVucGFpZCI+CiAgICAgICA8Yj4ke2MoIk5vdGhpbmcgaGFzIGJlZW4gY2hhcmdlZC4iLCLmsqHmnInmiaPmrL7jgIIiKX08L2I+CiAgICAgICA8c3Bhbj4ke2woYyhgJHtvPyJFYWNoIGlzIjoiVGhpcyBpcyJ9ICR7c30ncyBvd24gcmVzZXJ2YXRpb24sIHBhaWQgYXQgdGhlIGhvdGVsLiBBIGNhcmQgaXMgcHJlc2VudGVkIGF0IGNoZWNrLWluLCBub3QgaGVyZS5gLGDov5nmmK8ke2NlKHMpfeeahOato+W8j+mihOiuou+8jOWIsOW6l+S7mOasvu+8m+WFpeS9j+aXtuWcqOWJjeWPsOWHuuekuumTtuihjOWNoe+8jOi/memHjOS4jeaUtuasvuOAgmApKX08L3NwYW4+CiAgICAgPC9kaXY+YDphP2A8ZGl2IGNsYXNzPSJ1bnBhaWQiPgogICAgICAgPGI+JHtjKCJOb3RoaW5nIGhhcyBiZWVuIGNoYXJnZWQuIiwi5rKh5pyJ5omj5qy+44CCIil9PC9iPgogICAgICAgPHNwYW4+JHtjKGBUaGlzIGlzIGEgZGVtb25zdHJhdGlvbiBib29raW5nOiAke2wocyl9IGhhcyBub3QgcmVjZWl2ZWQgaXQsIGFuZCBubyByb29tIGlzIGhlbGQgYXQgdGhlIGhvdGVsLmAsYOi/meaYr+a8lOekuumihOiuou+8miR7bChjZShzKSl95rKh5pyJ5pS25Yiw77yM6YWS5bqX5Lmf5rKh5pyJ5Li65L2g5L+d55WZ5oi/6Ze044CCYCl9PC9zcGFuPgogICAgIDwvZGl2PmA6YDxkaXYgY2xhc3M9InVucGFpZCI+CiAgICAgICA8Yj4ke2MoIk5vdGhpbmcgaGFzIGJlZW4gY2hhcmdlZC4iLCLmsqHmnInmiaPmrL7jgIIiKX08L2I+CiAgICAgICA8c3Bhbj4ke2MoIkEgY2FyZCBpcyBwcmVzZW50ZWQgYXQgY2hlY2staW4sIG5vdCBoZXJlLiIsIuWFpeS9j+aXtuWcqOWJjeWPsOWHuuekuumTtuihjOWNoe+8jOi/memHjOS4jeaUtuasvuOAgiIpfTwvc3Bhbj4KICAgICA8L2Rpdj5gLGA8ZGl2IGNsYXNzPSJmb290Ij4KICAgICAgIDxidXR0b24gY2xhc3M9ImdvIHF1aWV0IiB0eXBlPSJidXR0b24iIGRhdGEtYWN0PSJib29raW5ncyI+JHtjKCJNeSBib29raW5ncyIsIuaIkeeahOmihOiuoiIpfTwvYnV0dG9uPgogICAgICAgJHtvfHx6fHwhdSgibGlzdEV4dHJhcyIpPyIiOmA8YnV0dG9uIGNsYXNzPSJnbyBzb2Z0IiB0eXBlPSJidXR0b24iIGRhdGEtYm9va2luZy1leHRyYXM9IiR7bCh0WzBdPy5jb25maXJtYXRpb25Db2RlKX0iPiR7YygiQWRkLW9ucyBmb3IgdGhpcyBzdGF5Iiwi5Li66L+Z5qyh5L2P5a6/5Yqg6LStIil9PC9idXR0b24+YH0KICAgICA8L2Rpdj5gLG98fHo/IiI6KHRbMF0/LnF1b3RlPy5saW5lcz8/W10pLnNvbWUoQz0+Qy5raW5kPT09InJvb20iKSYmKHRbMF0/LnF1b3RlPy5saW5lcz8/W10pLmZpbHRlcihDPT5DLmtpbmQ9PT0icm9vbSIpLmV2ZXJ5KEM9PkMucmVmdW5kYWJsZT09PSExKT9gPHAgY2xhc3M9InF1aWV0LWVuZCBub3RlIj4ke2woYygiVGhpcyByYXRlIGNhbm5vdCBiZSBjYW5jZWxsZWQsIGFuZCBub3RoaW5nIG9mIGl0IGlzIHJlZnVuZGVkLiIsIuatpOS7t+agvOS4jeWPr+WPlua2iO+8jOW3suS7mOasvumhueS4jemAgOOAgiIpKX08L3A+YDpgPGRpdiBjbGFzcz0icXVpZXQtZW5kIj48YnV0dG9uIGNsYXNzPSJsaW5reSBkYW5nZXIiIHR5cGU9ImJ1dHRvbiIgZGF0YS1jYW5jZWw9IiR7bCh0WzBdPy5jb25maXJtYXRpb25Db2RlKX0iPiR7YygiQ2FuY2VsIHRoaXMgYm9va2luZyIsIuWPlua2iOi/meeslOmihOiuoiIpfTwvYnV0dG9uPjwvZGl2PmBdLmpvaW4oIiIpfSxsdT0oZSx0LG4pPT5gPGRpdiBjbGFzcz0ibm90ZSI+JHtsKGMoYE1vcmUgdGhhbiBvbmUgJHtuPz8iaG90ZWwifSBhbnN3ZXJzIHRvIOKAnCR7ZX3igJ06YCxg4oCcJHtlfeKAneWvueW6lOS4jeatouS4gOWutumFkuW6l++8mmApKX08L2Rpdj4KICA8ZGl2IGNsYXNzPSJwbGFjZXMiPiR7dC5tYXAobz0+YDxidXR0b24gY2xhc3M9ImNoaXAgcGxhY2UiIHR5cGU9ImJ1dHRvbiIgZGF0YS1ob3RlbD0iJHtsKG8uaWQpfSI+JHtsKG8ubmFtZSl9JHtvLmNpdHk/YCA8c21hbGw+JHtsKG8uY2l0eSl9PC9zbWFsbD5gOiIifTwvYnV0dG9uPmApLmpvaW4oIiIpfTwvZGl2PmAsdXU9ZT0+e2NvbnN0IHQ9ZS5kcm9wcGVkPz9bXSxuPXQuZmlsdGVyKG89PiEoby5jYW5kaWRhdGVzPz9bXSkubGVuZ3RoKTtyZXR1cm5bbi5sZW5ndGg/YDxkaXYgY2xhc3M9ImVyciI+JHtuLm1hcChvPT5gJHtsKG8ubmFtZSl9OiAke2wocmU9PT0iemgiPyLov5nph4zmsqHmnInlr7nlupTnmoTphZLlupciOm8ud2h5KX1gKS5qb2luKCI8YnI+Iil9PC9kaXY+YDoiIiwuLi50LmZpbHRlcihvPT4oby5jYW5kaWRhdGVzPz9bXSkubGVuZ3RoKS5tYXAobz0+bHUoby5uYW1lLG8uY2FuZGlkYXRlcyxlLnZvY2FiPy5ub3VuKSldLmpvaW4oIiIpfSxidz0vXGIoYXQgb25jZXx0b28gbWFueXxhbiBob3VyfHBlciBob3VyfGluIHRoZSBsYXN0IGhvdXJ8bGltaXR8dHJ5IGFnYWluIChsYXRlcnxpbikpXGIvaSx2dz17ImhvdGVsLW5vdC1mb3VuZCI6WyJUaGF0IGhvdGVsIGlzIG5vdCBoZXJlIiwi5rKh5pyJ5om+5Yiw6L+Z5a626YWS5bqXIl0sIm5vLXN1Y2gtcm9vbSI6WyJUaGF0IHJvb20gaXMgbm90IGF2YWlsYWJsZSIsIuivpeaIv+Wei+aaguS4jeWPr+iuoiJdLCJuby1yb29tLW5hbWVkIjpbIlRoYXQgcm9vbSBpcyBub3QgYXZhaWxhYmxlIiwi6K+l5oi/5Z6L5pqC5LiN5Y+v6K6iIl0sIm5vLXN1Y2gtZXh0cmEiOlsiVGhhdCBhZGQtb24gaXMgbm90IGF2YWlsYWJsZSIsIui/memhuemZhOWKoOacjeWKoeiuouS4jeS6hiJdLCJuby1zdWNoLWdyb3VwIjpbIlRoYXQgZ3JvdXAgaXMgbm90IGluIHRoaXMgbWFya2V0Iiwi6L+Z6YeM5rKh5pyJ6L+Z5Liq6ZuG5ZuiIl0sInRyaXAtZ29uZSI6WyJUaGlzIHRyaXAgaGFzIGV4cGlyZWQiLCLov5nkuKrooYznqIvlt7Lov4fmnJ8iXSwiYm9va2luZy1lbmRlZCI6WyJUaGF0IGJvb2tpbmcgaGFzIGVuZGVkIiwi6L+Z56yU6aKE6K6i5bey57uT5p2fIl0sImJhZC1jb3VudCI6WyJUaGF0IG51bWJlciBkb2VzIG5vdCB3b3JrIiwi5pWw6YeP5LiN5a+5Il0sInN0YXJ0LXRpbWUiOlsiVGhhdCBzdGFydCB0aW1lIGlzIG5vdCBvcGVuIiwi6L+Z5Liq5Yiw5bqX5pe26Ze05LiN5Y+v6YCJIl0sIm5vdC1ib29rYWJsZSI6WyJUaGlzIGNvdWxkIG5vdCBiZSBib29rZWQiLCLmmoLml7bml6Dms5XpooTorqIiXX0sS3Q9ZT0+L1vjkIAt6b+/XS8udGVzdChlKSxjZT1lPT5lJiYhS3QoZSk/IumFkuW6lyI6ZSwkdz1lPT57aWYoKGUuY2FuZGlkYXRlcz8/W10pLmxlbmd0aClyZXR1cm4gbHUoZS5xdWVyeSxlLmNhbmRpZGF0ZXMsZS52b2NhYj8ubm91bik7Y29uc3QgdD1lLnJvb21zPz9bXSxuPWUuZXJyb3I9PT0ic3RhcnQtdGltZSI/ZS53aW5kb3c6dm9pZCAwLG89ZS5lcnJvcj09PSJuby1zdWNoLXJvb20iJiZlLmhvdGVsPy5pZCYmZS5zdGF5Py5jaGVja0luJiZ0LmV2ZXJ5KHA9PnAuaWQpP2A8ZGl2IGNsYXNzPSJsaW5rcyI+JHt0Lm1hcChwPT5gPGJ1dHRvbiBjbGFzcz0ibGluay1yb3cgYWRkIiB0eXBlPSJidXR0b24iIGRhdGEtYWRkLXJvb209IiR7bChwLmlkKX0iIGRhdGEtaG90ZWw9IiR7bChlLmhvdGVsLmlkKX0iIGRhdGEtbj0iMSIgZGF0YS1jaT0iJHtsKGUuc3RheS5jaGVja0luKX0iIGRhdGEtY289IiR7bChlLnN0YXkuY2hlY2tPdXQpfSIgZGF0YS1ndT0iJHtsKGUuc3RheS5ndWVzdHM/P3cuZ3Vlc3RzKX0iPjxzcGFuPiR7bChwLm5hbWUpfTwvc3Bhbj48c3BhbiBjbGFzcz0ibGluay1nbyI+JHtjKCJSZXNlcnZlIiwi6aKE6K6iIil9JHtFLmNoZXZSfTwvc3Bhbj48L2J1dHRvbj5gKS5qb2luKCIiKX08L2Rpdj5gOiIiLHM9U3RyaW5nKGUuZGV0YWlsPz9lLndoeT8/IiIpLHI9YncudGVzdChzKSxhPW4/YyhgJHtlLnF1ZXJ5P2Ake2UucXVlcnl9IGlzIG5vdCBhIHN0YXJ0IHRoaXMgcm9vbSB0YWtlcy4gYDoiIn1JdCBzdGFydHMgYmV0d2VlbiAke24uZWFybGllc3RTdGFydH0gYW5kICR7bi5sYXRlc3RTdGFydH0gdG9kYXksIGZvciAke24uaG91cnN9IGhvdXJzLCBhbmQgaXMgbGVmdCBieSAke24ubGF0ZXN0RW5kfS5gLGAke2UucXVlcnk/YCR7ZS5xdWVyeX0g5LiN6IO95L2c5Li65Yiw5bqX5pe26Ze044CCYDoiIn3ov5npl7Tpkp/ngrnmiL/ku4rlpKkgJHtuLmVhcmxpZXN0U3RhcnR94oCTJHtuLmxhdGVzdFN0YXJ0fSDkuYvpl7TliLDlupfvvIzkvY8gJHtuLmhvdXJzfSDlsI/ml7bvvIzmnIDmmZogJHtuLmxhdGVzdEVuZH0g56a75bqX44CCYCk6ZS5lcnJvcj09PSJuby1zdWNoLXJvb20iJiZ0Lmxlbmd0aD9vP2MoYCR7ZS5ob3RlbD8ubmFtZT8/IlRoaXMgaG90ZWwifSBoYXMgbm8gcm9vbSBieSB0aGF0IG5hbWUgZm9yIHRob3NlIG5pZ2h0cy4gVGhlc2UgYXJlIG9wZW4g4oCUIHRhcCBvbmUgdG8gcmVzZXJ2ZSBpdDpgLGAke2UuaG90ZWw/Lm5hbWU/PyLov5nlrrbphZLlupcifeWcqOi/meS6m+aXpeacn+ayoeaciei/meS4quaIv+Wei+OAguS4i+mdoui/meS6m+WPr+S7peiuou+8jOeCueS4gOS4i+WNs+WPr+mihOiuou+8mmApOmMoYCR7ZS5ob3RlbD8ubmFtZT8/IlRoaXMgaG90ZWwifSBoYXMgbm8gcm9vbSBieSB0aGF0IG5hbWUgZm9yIHRob3NlIG5pZ2h0cy4gSXQgaGFzICR7VGkodC5tYXAocD0+U3RyaW5nKHAubmFtZSkpKX0uYCxgJHtlLmhvdGVsPy5uYW1lPz8i6L+Z5a626YWS5bqXIn3lnKjov5nkupvml6XmnJ/msqHmnInov5nkuKrmiL/lnovvvIzlj6/orqLnmoTmnInvvJoke1RpKHQubWFwKHA9PlN0cmluZyhwLm5hbWUpKSl944CCYCk6ciYmcmU9PT0iemgiJiYhS3Qocyk/Iui/measoeayoeaciemihOiuouaIkOWKn++8jOS5n+ayoeacieaJo+asvuOAgui/meauteWvueivnemHjOeahOmihOiuouW3suWIsOS4iumZkO+8muivt+WFiOWcqOKAnOaIkeeahOmihOiuouKAnemHjOWPlua2iOS4jemcgOimgeeahO+8jOWGjeivleS4gOasoeOAgiI6cyYmKHJlIT09InpoInx8S3QocykpP3M6YygiVGhhdCBjb3VsZCBub3QgYmUgZG9uZS4iLCLov5nkuIDmraXmsqHog73lrozmiJDvvIzor7fnqI3lkI7lho3or5XjgIIiKSxpPXZ3W1N0cmluZyhlLmVycm9yKV0sZD1yP2MoIkJvb2tpbmcgbGltaXQgcmVhY2hlZCIsIuW3sui+vumihOiuouS4iumZkCIpOmk/YyhpWzBdLGlbMV0pOmMoIlRoYXQgZGlkIG5vdCB3b3JrIiwi5rKh6IO95a6M5oiQIiksdT1bZS5ob3RlbD8uaWQ/YDxidXR0b24gY2xhc3M9ImdvIiB0eXBlPSJidXR0b24iIGRhdGEtaG90ZWw9IiR7bChlLmhvdGVsLmlkKX0iJHtlLnN0YXk/LmNoZWNrSW4/YCBkYXRhLWNpPSIke2woZS5zdGF5LmNoZWNrSW4pfSIgZGF0YS1jbz0iJHtsKGUuc3RheS5jaGVja091dCl9ImA6IiJ9PiR7bChvP2MoIlNlZSBhbGwgcm9vbXMiLCLmn6XnnIvlhajpg6jmiL/lnosiKTpjKCJTZWUgdGhlIHJvb21zIiwi5p+l55yL5oi/5Z6LIikpfTwvYnV0dG9uPmA6IiIsciYmV28oImxpc3RCb29raW5ncyIpP2A8YnV0dG9uIGNsYXNzPSJnbyR7ZS5ob3RlbD8uaWQ/IiBxdWlldCI6IiJ9IiB0eXBlPSJidXR0b24iIGRhdGEtYWN0PSJib29raW5ncyI+JHtjKCJNeSBib29raW5ncyIsIuaIkeeahOmihOiuoiIpfTwvYnV0dG9uPmA6IiIsIWUuaG90ZWw/LmlkJiYhciYmYmUubGVuZ3RoP2A8YnV0dG9uIGNsYXNzPSJnbyIgdHlwZT0iYnV0dG9uIiBkYXRhLWFjdD0iYmFjayI+JHtFLmNoZXZMfSR7bChjKGBCYWNrIHRvICR7YmUuYXQoLTEpPy5sYWJlbD8/IndoZXJlIHlvdSB3ZXJlIn1gLCLov5Tlm54iKSl9PC9idXR0b24+YDoiIixTdD4wP2A8YnV0dG9uIGNsYXNzPSJnbyBxdWlldCIgdHlwZT0iYnV0dG9uIiBkYXRhLWFjdD0idHJpcCI+JHtjKCJWaWV3IHRoZSB0cmlwIiwi5p+l55yL6KGM56iLIil9PC9idXR0b24+YDoiIl0uZmlsdGVyKEJvb2xlYW4pO3JldHVybiB1Lmxlbmd0aHx8dS5wdXNoKGA8YnV0dG9uIGNsYXNzPSJnbyIgdHlwZT0iYnV0dG9uIiBkYXRhLWFjdD0iaG9tZSI+JHtjKCJGaW5kIGEgaG90ZWwiLCLmib7phZLlupciKX08L2J1dHRvbj5gKSxgCiAgICA8ZGl2IGNsYXNzPSJzdGF0ZSAke3I/ImxpbWl0IjoiZXJyb3IifSIgcm9sZT0iYWxlcnQiPgogICAgICA8ZGl2IGNsYXNzPSJzdGF0ZS1pY28iPiR7cj9FLmNsb2NrOkUuZXJyb3J9PC9kaXY+CiAgICAgIDxoMiBjbGFzcz0ic3RhdGUtdCI+JHtsKGQpfTwvaDI+CiAgICAgIDxwIGNsYXNzPSJzdGF0ZS1kIj4ke2woYSl9PC9wPgogICAgICAke299CiAgICAgIDxkaXYgY2xhc3M9ImZvb3QiPiR7dS5qb2luKCIiKX08L2Rpdj4KICAgIDwvZGl2PmB9LGtnPWU9PmAKICA8ZGl2IGNsYXNzPSJyb3ciPgogICAgPGRpdiBjbGFzcz0iYm9keSI+CiAgICAgIDxkaXYgY2xhc3M9Im5hbWUiPiR7bChlLnRpdGxlKX08L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0ibWV0YSI+JHtsKGUuZGV0YWlsP0p0KGUuZGV0YWlsKTplLmtpbmQ9PT0icm9vbSI/SnIoZS5zdGF5LGUuaG91cmx5KToiIil9PC9kaXY+CiAgICA8L2Rpdj4KICAgIDxkaXYgY2xhc3M9InByaWNlIj48ZGl2IGNsYXNzPSJwLWxpbmUiPiR7bChlLnRvdGFsKX08L2Rpdj4ke2Uua2luZD09PSJyb29tIiYmS3I/YDxkaXYgY2xhc3M9InAtdW5pdCI+JHtjKCJiZWZvcmUgdGF4ZXMiLCLmnKrlkKvnqI7otLkiKX08L2Rpdj5gOiIifTwvZGl2PgogIDwvZGl2PmAseXc9eyJhd2FpdGluZy1wYXltZW50Ijoid2FybiIscmVxdWVzdGVkOiJ3YXJuIixjb25maXJtZWQ6Imdvb2QiLGNhbmNlbGxlZDoiYmFkIixleHBpcmVkOiJiYWQiLGZhaWxlZDoiYmFkIix1bmNvbmZpcm1lZDoid2FybiJ9LFBuPXsiYXdhaXRpbmctcGF5bWVudCI6WyJBd2FpdGluZyBwYXltZW50Iiwi5b6F5LuY5qy+Il0scmVxdWVzdGVkOlsiUmVxdWVzdGVkIiwi5b6F56Gu6K6kIl0sY29uZmlybWVkOlsiQ29uZmlybWVkIiwi5bey56Gu6K6kIl0sY2FuY2VsbGVkOlsiQ2FuY2VsbGVkIiwi5bey5Y+W5raIIl0sZXhwaXJlZDpbIkV4cGlyZWQiLCLlt7Lov4fmnJ8iXSxmYWlsZWQ6WyJOb3QgbWFkZSIsIuacquaIkOWKnyJdLHVuY29uZmlybWVkOlsiQmVpbmcgY2hlY2tlZCIsIuaguOWunuS4rSJdfSxrdz1lPT57Y29uc3QgdD1lLnJlcXVlc3RzPy5raW5kcz8/W107aWYoIXQubGVuZ3RoKXJldHVybiIiO2NvbnN0IG49dC5tYXAod3MpO3JldHVybmA8ZGl2IGNsYXNzPSJtZXRhIGFza2VkLWxpbmUiPiR7bChjKGBBc2tlZCBmb3IgJHtuLmpvaW4oIiwgIikudG9Mb3dlckNhc2UoKX1gLGDlt7Lmj5Dlh7rvvJoke24uam9pbigi44CBIil9YCkpfTwvZGl2PmB9LF93PXthd2FpdGluZzpbIlRvIGJlIHBhaWQiLCLlvoXku5jmrL4iLCJ3YXJuIl0scGFpZDpbIlBhaWQgaW4gYWR2YW5jZSIsIuW3sumihOS7mCIsImdvb2QiXSxsYXBzZWQ6WyJOb3QgcGFpZCBpbiB0aW1lIiwi6LaF5pe25pyq5LuYIiwiIl0scmVmdW5kaW5nOlsiUmVmdW5kIHVuZGVyIHdheSIsIumAgOasvuS4rSIsIiJdLHJlZnVuZGVkOlsiUmVmdW5kZWQgaW4gZnVsbCIsIuW3suWFqOminemAgOasviIsIiJdfSx3dz1lPT57Y29uc3QgdD1fd1tTdHJpbmcoZT8ucGF5bWVudD8uc3RhdHVzPz8iIildO3JldHVybiB0P2A8c3BhbiBjbGFzcz0iYmFkZ2UgJHt0WzJdfSI+JHtjKHRbMF0sdFsxXSl9PC9zcGFuPmA6IiJ9LFN3PWU9Pntjb25zdCB0PWUuYm9va2luZ3M/P1tdLG49ZS5ub3RGb3VuZD9gPGRpdiBjbGFzcz0iZXJyIj4ke2woZS50b29NYW55P3JlPT09InpoIiYmIUt0KFN0cmluZyhlLm5vdEZvdW5kTGluZT8/IiIpKT8i5bCd6K+V5qyh5pWw6L+H5aSa77yM6K+356iN5ZCO5YaN6K+V44CCIjplLm5vdEZvdW5kTGluZTpjKGBObyBib29raW5nIG1hdGNoZXMgJHtlLm5vdEZvdW5kfSB3aXRoIHRoYXQgZW1haWwuIEJvdGggaGF2ZSB0byBiZSBhcyB0aGV5IGFyZSBvbiB0aGUgY29uZmlybWF0aW9uLmAsYOayoeacieaJvuWIsOehruiupOeggSAke2Uubm90Rm91bmR9IOWSjOi/meS4qumCrueuseWvueW6lOeahOmihOiuouOAguS4pOmhuemDveimgeWSjOehruiupOS/oeaBr+S4iueahOS4gOiHtOOAgmApKX08L2Rpdj5gOiIiO3JldHVybiBlLm5vdEZvdW5kJiZ0Lmxlbmd0aD09PTA/YCR7bn0KICAgICAgPGRpdiBjbGFzcz0iZm9vdCI+PGJ1dHRvbiBjbGFzcz0iZ28gcXVpZXQiIHR5cGU9ImJ1dHRvbiIgZGF0YS1hY3Q9ImZpbmQtYm9va2luZyI+JHtjKCJUcnkgYWdhaW4iLCLlho3or5XkuIDmrKEiKX08L2J1dHRvbj48L2Rpdj5gOnQubGVuZ3RoPT09MD9gPGRpdiBjbGFzcz0iZW1wdHkiPiR7YygiTm8gYm9va2luZ3MgaW4gdGhpcyBjb252ZXJzYXRpb24geWV0LiIsIui/measoeWvueivnemHjOi/mOayoeaciemihOiuouOAgiIpfTwvZGl2PmA6W24sYDxkaXYgY2xhc3M9InJvd3MiPiR7dC5tYXAobz0+YAogICAgICA8ZGl2IGNsYXNzPSJyb3cgYm9va2luZy1yb3ciIGRhdGEtb3Blbi1ib29raW5nPSIke2woby5jb25maXJtYXRpb25Db2RlKX0iPgogICAgICAgIDxkaXYgY2xhc3M9ImJvZHkiPgogICAgICAgICAgPGRpdiBjbGFzcz0ibmFtZSI+JHskbihvLmhvdGVsTmFtZSl9PC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJtZXRhIj4ke2woby5jb25maXJtYXRpb25Db2RlKX0gwrcgJHtsKEpyKG8uc3RheSxvLmhvdXJseSkpfTwvZGl2PgogICAgICAgICAgJHtrdyhvKX0KICAgICAgICAgIDxkaXYgY2xhc3M9ImJhZGdlcyI+JHt3dyhvKX08c3BhbiBjbGFzcz0iYmFkZ2UgJHt5d1tTdHJpbmcoby5zdGF0dXMpXT8/IiJ9Ij4ke2woUG5bU3RyaW5nKG8uc3RhdHVzKV0/YyhQbltTdHJpbmcoby5zdGF0dXMpXT8uWzBdPz8iIixQbltTdHJpbmcoby5zdGF0dXMpXT8uWzFdPz8iIik6by5zdGF0dXMpfTwvc3Bhbj48L2Rpdj4KICAgICAgICAgICR7by5zdGF0dXM9PT0idW5jb25maXJtZWQiP2A8ZGl2IGNsYXNzPSJtZXRhIj4ke2woYyhgTm90IGtub3duIHlldCB3aGV0aGVyICR7QmUoby5zdXBwbGllcikubmFtZX0gbWFkZSB0aGlzIGJvb2tpbmcg4oCUIGEgcGVyc29uIGlzIGNvbmZpcm1pbmcgaXQuYCxg6L+Y5LiN56Gu5a6aJHtCZShvLnN1cHBsaWVyKS5uYW1lfeaYr+WQpuW3sueUn+aIkOi/meeslOmihOiuou+8jOato+WcqOS6uuW3peaguOWunuOAgmApKX08L2Rpdj5gOiIifQogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9InByaWNlIj48ZGl2IGNsYXNzPSJwLXRvdGFsIj4ke2woby5xdW90ZT8udG90YWw/PyIiKX08L2Rpdj48L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJhY3Rpb24iPiR7by5zdGF0dXM9PT0iYXdhaXRpbmctcGF5bWVudCImJm8ucGF5bWVudD8udXJsP2A8YnV0dG9uIGNsYXNzPSJnbyBzbSIgdHlwZT0iYnV0dG9uIiBkYXRhLWFjdD0icGF5IiBkYXRhLXVybD0iJHtsKG8ucGF5bWVudC51cmwpfSIgZGF0YS1jb2RlPSIke2woby5jb25maXJtYXRpb25Db2RlKX0iIGRhdGEtdW50aWw9IiR7bChvLnBheW1lbnQucGF5Qnk/PyIiKX0iPiR7YygiUGF5Iiwi5Y675LuY5qy+Iil9ICR7bChvLnBheW1lbnQuYW1vdW50Pz8iIil9PC9idXR0b24+YDpvLnN0YXR1cz09PSJyZXF1ZXN0ZWQifHxvLnN0YXR1cz09PSJjb25maXJtZWQiP2Ake1dvKCJsaXN0RXh0cmFzIikmJkJlKG8uc3VwcGxpZXIpLmV4dHJhcz9gPGJ1dHRvbiBjbGFzcz0iZ28gcXVpZXQgc20iIHR5cGU9ImJ1dHRvbiIgZGF0YS1ib29raW5nLWV4dHJhcz0iJHtsKG8uY29uZmlybWF0aW9uQ29kZSl9Ij4ke2MoIkFkZC1vbnMiLCLpmYTliqDmnI3liqEiKX08L2J1dHRvbj5gOiIifQogICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJnbyBxdWlldCBzbSIgdHlwZT0iYnV0dG9uIiBkYXRhLWNhbmNlbD0iJHtsKG8uY29uZmlybWF0aW9uQ29kZSl9Ij4ke2MoIkNhbmNlbCIsIuWPlua2iCIpfTwvYnV0dG9uPmA6IiJ9PGJ1dHRvbiBjbGFzcz0ib3Blbi1nbyIgdHlwZT0iYnV0dG9uIiBkYXRhLW9wZW4tYm9va2luZz0iJHtsKG8uY29uZmlybWF0aW9uQ29kZSl9IiBhcmlhLWxhYmVsPSIke2woYyhgU2VlIGJvb2tpbmcgJHtvLmNvbmZpcm1hdGlvbkNvZGV9YCxg5p+l55yL6aKE6K6iICR7by5jb25maXJtYXRpb25Db2RlfSDnmoTor6bmg4VgKSl9Ij4ke0UuY2hldlJ9PC9idXR0b24+PC9kaXY+CiAgICAgIDwvZGl2PmApLmpvaW4oIiIpfTwvZGl2PmBdLmpvaW4oIiIpfSxsZD1lPT57Y29uc3QgdD1lLnZpZXc9PT0iY2FuY2VsbGVkIixuPWUuYm9va2luZz8/e307cmV0dXJuW2A8ZGl2IGNsYXNzPSJjb25mIj4KICAgICAgIDxkaXYgY2xhc3M9Im5vdGUiPiR7dD9jKCJDYW5jZWxsZWQiLCLlt7Llj5bmtogiKTpjKCJDYW5jZWxsaW5nIiwi5q2j5Zyo5Y+W5raIIil9PC9kaXY+CiAgICAgICA8ZGl2IGNsYXNzPSJjb2RlIj4ke2wobi5jb25maXJtYXRpb25Db2RlKX08L2Rpdj4KICAgICA8L2Rpdj5gLGA8ZGl2IGNsYXNzPSJzdW1zIj4KICAgICAgIDxkaXYgY2xhc3M9InN1bSB0b3RhbCI+PHNwYW4+JHt0P2MoIlRoZSBob3RlbCBjaGFyZ2VzIiwi6YWS5bqX5pS25Y+WIik6YygiQ2FuY2VsbGluZyB3b3VsZCBjb3N0Iiwi5Y+W5raI6ZyA5pSv5LuYIil9PC9zcGFuPjxzcGFuPiR7bChlLmZlZSl9PC9zcGFuPjwvZGl2PgogICAgIDwvZGl2PmAsYDxkaXYgY2xhc3M9Im5vdGUiPiR7bChlLnJ1bGUpfTwvZGl2PmAsdD8iIjplLmNhbmNlbGxhYmxlP2A8ZGl2IGNsYXNzPSJmb290Ij4KICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImdvIHF1aWV0IiB0eXBlPSJidXR0b24iIGRhdGEtYWN0PSJib29raW5ncyI+JHtjKCJLZWVwIGl0Iiwi5LiN5Y+W5raI5LqGIil9PC9idXR0b24+CiAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJnbyBkYW5nZXIiIHR5cGU9ImJ1dHRvbiIgZGF0YS1jb25maXJtLWNhbmNlbD0iJHtsKG4uY29uZmlybWF0aW9uQ29kZSl9Ij4ke2MoIkNhbmNlbCB0aGUgYm9va2luZyIsIuehruiupOWPlua2iCIpfTwvYnV0dG9uPgogICAgICAgICAgIDwvZGl2PmA6YDxkaXYgY2xhc3M9Im5vdGUiPiR7YygiVGhlcmUgaXMgbm90aGluZyBsZWZ0IHRvIGNhbmNlbCBvbiB0aGlzIGJvb2tpbmcuIiwi6L+Z56yU6aKE6K6i5bey5rKh5pyJ5Y+v5Y+W5raI55qE5YaF5a6544CCIil9PC9kaXY+YF0uam9pbigiIil9LHVkPWU9Pntjb25zdCB0PWUudmlldz09PSJjaGFuZ2VkIixuPWUuYm9va2luZz8/e30sbz1lLmZyb20/P3t9LHM9ZS50byxyPSEhcyYmKHMuY2hlY2tJbiE9PW8uY2hlY2tJbnx8cy5jaGVja091dCE9PW8uY2hlY2tPdXR8fE51bWJlcihzLnJvb21zKSE9PU51bWJlcihvLnJvb21zKXx8cy5yb29tTmFtZSE9PW8ucm9vbU5hbWUpLGE9KGksZCx1KT0+ZD9gPGRpdiBjbGFzcz0ibGVnJHt1PyIgd2FzIjoiIn0iPgogICAgICAgICAgIDxkaXYgY2xhc3M9ImxlZ2siPiR7bChpKX08L2Rpdj4KICAgICAgICAgICA8ZGl2IGNsYXNzPSJsZWd2Ij4ke2woQWUoU3RyaW5nKGQuY2hlY2tJbikpKX0g4oaSICR7bChBZShTdHJpbmcoZC5jaGVja091dCkpKX0gwrcgJHtsKHVlKE51bWJlcihkLm5pZ2h0cykpKX08L2Rpdj4KICAgICAgICAgICA8ZGl2IGNsYXNzPSJsZWdtIj4ke2woZC5yb29tTmFtZSl9JHtOdW1iZXIoZC5yb29tcyk+MT9gIMK3ICR7bChfXyhOdW1iZXIoZC5yb29tcykpKX1gOiIifSDCtyAke2woZC50b3RhbCl9PC9kaXY+CiAgICAgICAgIDwvZGl2PmA6IiI7cmV0dXJuW2A8ZGl2IGNsYXNzPSJjb25mIj4KICAgICAgIDxkaXYgY2xhc3M9Im5vdGUiPiR7dD9jKCJDaGFuZ2VkIiwi5bey5L+u5pS5Iik6YygiQ2hhbmdpbmciLCLkv67mlLnpooTorqIiKX08L2Rpdj4KICAgICAgIDxkaXYgY2xhc3M9ImNvZGUiPiR7bChuLmNvbmZpcm1hdGlvbkNvZGUpfTwvZGl2PgogICAgIDwvZGl2PmAsZS5ob3RlbE5hbWU/YDxkaXYgY2xhc3M9Imgtd2hlcmUiPiR7bChlLmhvdGVsTmFtZSl9PC9kaXY+YDoiIixgPGRpdiBjbGFzcz0ibGVncyI+JHthKHQ/YygiV2FzIiwi5Y6f5p2lIik6YygiTm93Iiwi546w5ZyoIiksZS5mcm9tLHIpfSR7YSh0P2MoIk5vdyIsIueOsOWcqCIpOmMoIldvdWxkIGJlIiwi5pS55Li6IiksZS50bywhMSl9PC9kaXY+YCxlLmFkZE9uP2A8ZGl2IGNsYXNzPSJzdW1zIj48ZGl2IGNsYXNzPSJzdW0iPjxzcGFuPiR7bChlLmFkZE9uLm5hbWUpfTwvc3Bhbj48c3Bhbj4ke2woZS5hZGRPbi5mcm9tKX0g4oaSICR7bChlLmFkZE9uLnRvKX08L3NwYW4+PC9kaXY+PC9kaXY+YDoiIixlLmRpZmZlcmVuY2U/YDxkaXYgY2xhc3M9InN1bXMiPjxkaXYgY2xhc3M9InN1bSB0b3RhbCI+PHNwYW4+JHtlLnJlZnVuZER1ZT90P2MoIlRoZSBkZXNrIG93ZXMiLCLphZLlupflupTpgIAiKTpjKCJXb3VsZCBjb21lIGJhY2siLCLlsIbpgIDlm54iKTpjKHQ/IlRoZSBkZXNrIGFza3MgZm9yIjoiV291bGQgY29zdCIsIumcgOihpeW3ruS7tyIpfTwvc3Bhbj48c3Bhbj4ke2woZS5kaWZmZXJlbmNlKX08L3NwYW4+PC9kaXY+PC9kaXY+YDoiIixgPGRpdiBjbGFzcz0ibm90ZSI+JHtsKGUucnVsZSl9PC9kaXY+YCx0P2A8ZGl2IGNsYXNzPSJmb290Ij48YnV0dG9uIGNsYXNzPSJnbyBxdWlldCIgdHlwZT0iYnV0dG9uIiBkYXRhLWFjdD0iYm9va2luZ3MiPiR7YygiTXkgYm9va2luZ3MiLCLmiJHnmoTpooTorqIiKX08L2J1dHRvbj48L2Rpdj5gOmUuY2hhbmdlYWJsZT9gPGRpdiBjbGFzcz0iZm9vdCI+CiAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJnbyBxdWlldCIgdHlwZT0iYnV0dG9uIiBkYXRhLWFjdD0iYm9va2luZ3MiPiR7YygiTGVhdmUgaXQiLCLkuI3mlLnkuoYiKX08L2J1dHRvbj4KICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImdvIiB0eXBlPSJidXR0b24iIGRhdGEtY29uZmlybS1jaGFuZ2U9IiR7bChuLmNvbmZpcm1hdGlvbkNvZGUpfSI+JHtlLmFkZE9uJiZlLmZyb20/LmNoZWNrSW49PT1lLnRvPy5jaGVja0luJiZlLmZyb20/LmNoZWNrT3V0PT09ZS50bz8uY2hlY2tPdXQ/YygiVXBkYXRlIHRoZSBib29raW5nIiwi5pu05paw6aKE6K6iIik6YygiTW92ZSB0aGUgYm9va2luZyIsIuehruiupOaUueacnyIpfTwvYnV0dG9uPgogICAgICAgICAgIDwvZGl2PmA6IiJdLmpvaW4oIiIpfSxuaT1lPT57Y29uc3QgdD1lLmhvdGVsPz97fSxuPWUudmlldz09PSJwb2xpY3kiP2A8aDQ+JHtsKGUudGl0bGUpfTwvaDQ+JHtsKGUudGV4dCl9YDooZS50b3BpY3M/P1tdKS5tYXAobz0+YDxoND4ke2woby50aXRsZSl9PC9oND4ke2woby50ZXh0KX1gKS5qb2luKCIiKTtyZXR1cm5bYDxkaXY+PGRpdiBjbGFzcz0iaC1uYW1lIj4ke2wodC5uYW1lKX08L2Rpdj48ZGl2IGNsYXNzPSJoLXdoZXJlIj4ke2MoIldoYXQgdGhlIGhvdGVsIHB1Ymxpc2hlcyIsIumFkuW6l+WFrOW4g+eahOaUv+etliIpfTwvZGl2PjwvZGl2PmAsZS52aWV3PT09InBvbGljeS1taXNzaW5nIj9gPGRpdiBjbGFzcz0iZW1wdHkiPiR7bChjKGAke3QubmFtZX0gZG9lcyBub3QgcHVibGlzaCBhbnl0aGluZyBhYm91dCB0aGF0IGhlcmUuYCxgJHt0Lm5hbWV95rKh5pyJ5YWs5biD6L+Z5pa56Z2i55qE5pS/562W44CCYCkpfTwvZGl2PmA6YDxkaXYgY2xhc3M9InByb3NlIj4ke259PC9kaXY+YCxgPGJ1dHRvbiBjbGFzcz0iZ28gcXVpZXQiIHR5cGU9ImJ1dHRvbiIgZGF0YS1ob3RlbD0iJHtsKHQuaWQpfSI+JHtsKGMoYEJhY2sgdG8gJHt0Lm5hbWV9YCxg6L+U5ZueJHt0Lm5hbWV9YCkpfTwvYnV0dG9uPmBdLmpvaW4oIiIpfSxUdz17V2hlcmU6IuS9jee9riIsQnJhbmQ6IuWTgeeJjCIsUm9vbToi5oi/5Z6LIiwiUGVyIG5pZ2h0Ijoi5q+P5pmaIiwiV2hvbGUgc3RheSI6IuaVtOauteS9j+WuvyIsIkZyZWUgY2FuY2VsbGF0aW9uIjoi5YWN6LS55Y+W5raIIixCcmVha2Zhc3Q6IuaXqemkkCIsU2xlZXBzOiLlj6/kvY/kurrmlbAiLCJSb29tcyBsZWZ0Ijoi5Ymp5L2Z5oi/6Ze0IixGcm9tOiLotbfku7ciLFJhdGluZzoi6K+E5YiGIn0senc9e1llczoi5pivIixObzoi5ZCmIixJbmNsdWRlZDoi5ZCrIiwiTm90IGluY2x1ZGVkIjoi5LiN5ZCrIn0seHc9ZT0+cmU9PT0iemgiP1R3W2VdPz9lOmUsSXc9ZT0+cmU9PT0iemgiP3p3W2VdPz9lLnJlcGxhY2UoLyBpbmNsXC4gdGF4JC8sIiDlkKvnqI4iKS5yZXBsYWNlKC8gYSBuaWdodCQvLCIg5q+P5pmaIik6ZSxBdz1lPT57Y29uc3QgdD1lLmNvbHVtbnM/P1tdLG49ZS5yb3dMYWJlbHM/P1tdLG89dC5zb21lKHI9PnIucmVjb21tZW5kZWQpLHM9cj0+YAogICAgPGRpdiBjbGFzcz0iY21wLWhlYWQke3IucmVjb21tZW5kZWQ/IiBwaWNrIjoiIn0ke28/IiBtYXJrZWQiOiIifSI+CiAgICAgICR7bz9gPGRpdiBjbGFzcz0icGlja21hcmske3IucmVjb21tZW5kZWQ/IiI6IiBub25lIn0iPiR7ci5yZWNvbW1lbmRlZD9jKCJSZWNvbW1lbmRlZCIsIuaOqOiNkCIpOiIifTwvZGl2PmA6IiJ9CiAgICAgIDxidXR0b24gY2xhc3M9InQtc2hvdCIgdHlwZT0iYnV0dG9uIiBkYXRhLWhvdGVsPSIke2woci5ob3RlbC5pZCl9IiBzdHlsZT0iJHtkdChTdHJpbmcoci5ob3RlbC5pZCkpfSI+CiAgICAgICAgJHtyLmhvdGVsLmltYWdlVXJsP2A8aW1nIHNyYz0iJHtsKHIuaG90ZWwuaW1hZ2VVcmwpfSIgYWx0PSIiPmA6IiJ9CiAgICAgICAgPHNwYW4gY2xhc3M9InQtbWFyayI+JHtsKHB0KFN0cmluZyhyLmhvdGVsLm5hbWUpKSl9PC9zcGFuPgogICAgICA8L2J1dHRvbj4KICAgICAgPGRpdiBjbGFzcz0iY29sLW5hbWUiPiR7bChyLmhvdGVsLm5hbWUpfSR7VHQoci5ob3RlbC5zdXBwbGllcik/YDxzbWFsbCBjbGFzcz0iY29sLWdyb3VwIj4ke2woVHQoci5ob3RlbC5zdXBwbGllcikubmFtZSl9PC9zbWFsbD5gOiIifTwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJjb2wtcHJpY2UiPiR7ci5wcmljZT9gJHtsKHIucHJpY2Uuc3RheVRvdGFsKX08c21hbGwgY2xhc3M9InN1YiI+JHtsKGMoYHRvdGFsIMK3ICR7ci5wcmljZS5uaWdodGx5fS9uaWdodGAsYOaAu+S7tyDCtyDmr4/mmZogJHtyLnByaWNlLm5pZ2h0bHl9YCkpfTwvc21hbGw+YDpyLmZyb20/YDxzbWFsbD4ke2MoIkZyb20gIiwiIil9PC9zbWFsbD4ke2woci5mcm9tKX08c21hbGw+JHtjKCIgLyBuaWdodCIsIiDotbcv5pmaIil9PC9zbWFsbD5gOiIifTwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJ3aHkke3IuYmVzdEZvcj8iIjoiIG5vbmUifSI+JHtyLmJlc3RGb3I/bChyLmJlc3RGb3IpOiIifTwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJwYyI+JHtbLi4uKHIucHJvcz8/W10pLm1hcChhPT5gPGRpdiBjbGFzcz0icHJvIj48c3BhbiBjbGFzcz0ibSI+Kzwvc3Bhbj48c3Bhbj4ke2woYSl9PC9zcGFuPjwvZGl2PmApLC4uLihyLmNvbnM/P1tdKS5tYXAoYT0+YDxkaXYgY2xhc3M9ImNvbiI+PHNwYW4gY2xhc3M9Im0iPuKIkjwvc3Bhbj48c3Bhbj4ke2woYSl9PC9zcGFuPjwvZGl2PmApXS5qb2luKCIiKX08L2Rpdj4KICAgIDwvZGl2PmA7cmV0dXJuW2UudGl0bGU/YDxkaXYgY2xhc3M9ImgtbmFtZSI+JHtsKGUudGl0bGUpfTwvZGl2PmA6IiIsZS5zdGF5P2A8ZGl2IGNsYXNzPSJoLXdoZXJlIj4ke2woVm8oZS5zdGF5KSl9PC9kaXY+YDoiIixBcnJheS5pc0FycmF5KGUuY3VycmVuY2llcykmJmUuY3VycmVuY2llcy5sZW5ndGg+MT9gPGRpdiBjbGFzcz0ibm90ZSI+JHtsKGMoYFByaWNlcyBhcmUgaW4gZWFjaCBob3RlbCdzIG93biBjdXJyZW5jeSAoJHtlLmN1cnJlbmNpZXMuam9pbigiLCAiKX0pLiBUaGV5IGFyZSBub3QgY29udmVydGVkLCBzbyB0aGUgY29sdW1ucyBhcmUgbm90IGEgcHJpY2UgcmFua2luZy5gLGDlkITlrrbku7fmoLzmjInlkIToh6rluIHnp43vvIgke2UuY3VycmVuY2llcy5qb2luKCLjgIEiKX3vvInmmL7npLrvvIzkuI3lgZrmjaLnrpfvvIzmiYDku6XkuI3og73mjInliJfmr5Tku7fjgIJgKSl9PC9kaXY+YDoiIixgPGRpdiBjbGFzcz0iY21wLXdyYXAiPjxkaXYgY2xhc3M9ImNtcCR7dC5sZW5ndGg+PTQ/IiBmb3VyIjoiIn0iIHN0eWxlPSItLWNvbHM6JHt0Lmxlbmd0aH07LS1oZWFkLXJvd3M6JHtvPzY6NX0iPgogICAgICAgPGRpdiBjbGFzcz0iY21wLWNvcm5lciI+PC9kaXY+CiAgICAgICAke3QubWFwKHMpLmpvaW4oIiIpfQogICAgICAgJHtuLm1hcCgocixhKT0+YDxkaXYgY2xhc3M9ImsiPiR7bCh4dyhyKSl9PC9kaXY+JHt0Lm1hcChpPT5gPGRpdiBjbGFzcz0idiR7YSUyPyIgYWx0IjoiIn0iPiR7bChJdyhpLnJvd3M/LlthXT8udmFsdWU/PyLigJQiKSl9PC9kaXY+YCkuam9pbigiIil9YCkuam9pbigiIil9CiAgICAgPC9kaXY+PC9kaXY+YCx1dShlKSxgPGRpdiBjbGFzcz0ibm90ZSI+JHtsKGMoYE9wZW4gYSAke2Uudm9jYWI/Lm5vdW4/PyJob3RlbCJ9IHRvIHNlZSBpdHMgcm9vbXMke2Uuc3RheT8uY2hlY2tJbj8iIGZvciB0aGVzZSBuaWdodHMiOiIifS5gLGDmiZPlvIDkuIDlrrbphZLlupfvvIzmn6XnnIske2Uuc3RheT8uY2hlY2tJbj8i6L+Z5Lqb5pel5pyf55qEIjoiIn3miL/pl7TjgIJgKSl9PC9kaXY+YF0uam9pbigiIil9LEN3PWU9Pntjb25zdCB0PWUuZGF5cz8/W10sbj1pPT5gPHNwYW4gY2xhc3M9Imluc3RhdGUgJHtpLmJvb2tlZHx8aS5pblRyaXA/InllcyI6Im5vIn0iPiR7aS5ib29rZWQ/YyhgQm9va2VkIMK3ICR7bChpLmJvb2tlZCl9YCxg5bey6K6iIMK3ICR7bChpLmJvb2tlZCl9YCk6aS5pblRyaXA/YygiSW4gdGhlIHRyaXAiLCLlt7LlnKjooYznqIvkuK0iKTpjKCJQbGFuIG9ubHkiLCLku4XorqHliJIiKX08L3NwYW4+YCxvPWk9PmAgZGF0YS1ob3RlbD0iJHtsKGkuaWQpfSIgcm9sZT0iYnV0dG9uIiB0YWJpbmRleD0iMCIke2kuY2hlY2tJbj9gIGRhdGEtY2k9IiR7bChpLmNoZWNrSW4pfSIgZGF0YS1jbz0iJHtsKGkuY2hlY2tPdXQpfSJgOiIifWAscz1pPT5pLmNoZWNrb3V0P2A8ZGl2IGNsYXNzPSJwbGFuLW5pZ2h0IiR7byhpKX0+PHNwYW4+JHtjKGBDaGVjayBvdXQgwrcgJHtsKGkubmFtZSl9YCxg56a75bqXIMK3ICR7bChpLm5hbWUpfWApfTwvc3Bhbj48L2Rpdj5gOk51bWJlcihpLm5pZ2h0Pz8xKT4xP2A8ZGl2IGNsYXNzPSJwbGFuLW5pZ2h0IiR7byhpKX0+CiAgICAgICAgICAgPHNwYW4+JHtsKGMoYE5pZ2h0ICR7aS5uaWdodH0gb2YgJHtpLm5pZ2h0c30gwrcgJHtpLm5hbWV9YCxg56ysICR7aS5uaWdodH0vJHtpLm5pZ2h0c30g5pmaIMK3ICR7aS5uYW1lfWApKX08L3NwYW4+JHtuKGkpfQogICAgICAgICA8L2Rpdj5gOmA8ZGl2IGNsYXNzPSJwbGFuLXN0YXkiJHtvKGkpfT4KICAgICAgICAgICA8c3BhbiBjbGFzcz0icHMtc2hvdCIgc3R5bGU9IiR7ZHQoU3RyaW5nKGkuaWQpKX0iPiR7aS5pbWFnZVVybD9gPGltZyBzcmM9IiR7bChpLmltYWdlVXJsKX0iIGFsdD0iIj5gOmA8c3BhbiBjbGFzcz0idC1tYXJrIj4ke2wocHQoU3RyaW5nKGkubmFtZSkpKX08L3NwYW4+YH08L3NwYW4+CiAgICAgICAgICAgPHNwYW4gY2xhc3M9InBzLWJvZHkiPgogICAgICAgICAgICAgPHNwYW4gY2xhc3M9Im5hbWUiPiR7bChpLm5hbWUpfTwvc3Bhbj4KICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJtZXRhIj4ke2woW2kuZGV0YWlsLGkubmlnaHRzP2MoYCR7dWUoaS5uaWdodHMpfSBoZXJlYCxg5Zyo5q2k5L2PJHt1ZShpLm5pZ2h0cyl9YCk6IiJdLmZpbHRlcihCb29sZWFuKS5qb2luKCIgwrcgIikpfTwvc3Bhbj4KICAgICAgICAgICAgICR7aS5wcmljZT9gPHNwYW4gY2xhc3M9InBzLXByaWNlIj4ke2woaS5wcmljZSl9PC9zcGFuPmA6IiJ9CiAgICAgICAgICAgICAke24oaSl9CiAgICAgICAgICAgPC9zcGFuPgogICAgICAgICA8L2Rpdj5gLHI9aT0+YAogICAgPGRpdiBjbGFzcz0icGxhbi1pdGVtIj4KICAgICAgPGRpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJuYW1lIj4ke2woaS5uYW1lKX08L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJtZXRhIj4ke2woW2kuZGV0YWlsLGkucHJpY2VdLmZpbHRlcihCb29sZWFuKS5qb2luKCIgwrcgIikpfTwvZGl2PgogICAgICA8L2Rpdj4KICAgICAgJHtuKGkpfQogICAgPC9kaXY+YCxhPWk9PihpLnBsYW4/P1tdKS5sZW5ndGg/YDxvbCBjbGFzcz0ibW9tZW50cyI+JHtpLnBsYW4ubWFwKGQ9PmA8bGk+CiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9IndoZW4iPiR7bChkLnRpbWU/PyIiKX08L3NwYW4+CiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9IndoYXQiPjxiPiR7bChkLndoYXQpfTwvYj4ke2Qubm90ZT9gPHNtYWxsPiR7bChkLm5vdGUpfTwvc21hbGw+YDoiIn08L3NwYW4+CiAgICAgICAgICAgIDwvbGk+YCkuam9pbigiIil9PC9vbD5gOiIiO3JldHVybltgPGRpdj4KICAgICAgIDxkaXYgY2xhc3M9ImgtbmFtZSI+JHtsKGUudGl0bGUpfTwvZGl2PgogICAgICAgJHtlLnN0YXk/YDxkaXYgY2xhc3M9Imgtd2hlcmUiPiR7bChWbyhlLnN0YXkpKX08L2Rpdj5gOiIifQogICAgIDwvZGl2PmAsYDxkaXYgY2xhc3M9ImdhcCI+PGI+JHtsKE51bWJlcihlLmluVHJpcD8/MCkrTnVtYmVyKGUuYm9va2VkPz8wKSl9LyR7bChlLnBsYW5uZWQpfTwvYj48c3Bhbj4ke2wocmU9PT0iemgiP2DorqHliJLkuK3nmoQgJHtlLnBsYW5uZWR9IOmhuemHjO+8jCR7TnVtYmVyKGUuaW5UcmlwPz8wKStOdW1iZXIoZS5ib29rZWQ/PzApfSDpobnlt7LlnKjooYznqIvkuK3miJblt7LpooTorqLvvIzlhbbkvZnlj6rmmK/orqHliJLjgIJgOmUuZ2FwPz8iIil9PC9zcGFuPjwvZGl2PmAsYDxkaXYgY2xhc3M9ImRheXMiPiR7dC5tYXAoKGksZCk9PmAKICAgICAgPGRpdiBjbGFzcz0iZGF5cm93Ij4KICAgICAgICA8ZGl2IGNsYXNzPSJkYXludW0iPjxiPiR7ZCsxfTwvYj48aT48L2k+PC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iZGF5Ym9keSI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJkYXlsYWJlbCI+JHtsKGkubGFiZWwpfSR7aS5kYXRlP2A8c21hbGw+IMK3ICR7bChQdyhTdHJpbmcoaS5kYXRlKSkpfTwvc21hbGw+YDoiIn08L2Rpdj4KICAgICAgICAgICR7aS5ub3RlP2A8ZGl2IGNsYXNzPSJkYXlub3RlIj4ke2woaS5ub3RlKX08L2Rpdj5gOiIifQogICAgICAgICAgJHthKGkpfQogICAgICAgICAgJHsoaS5pdGVtcz8/W10pLm1hcCh1PT51LmtpbmQ9PT0iaG90ZWwiP3ModSk6cih1KSkuam9pbigiIil9CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PmApLmpvaW4oIiIpfTwvZGl2PmAsdXUoZSldLmpvaW4oIiIpfSxQdz1lPT5BZShlKSxfZT0oZSx0PSExKT0+e2lmKCFlfHx0eXBlb2YgZSE9Im9iamVjdCIpcmV0dXJuO2NvbnN0IG49dCYmZS52aWV3PT09Im1lbWJlciImJm5lP3suLi5lLG1lbWJlcjpuZX06ZTt2XyhuKSxuLnRvb2xOYW1lcyYmKEhsPW4udG9vbE5hbWVzKSwobi5ib29raW5nTW9kZT09PSJwYXktYXQtaG90ZWwifHxuLmJvb2tpbmdNb2RlPT09ImhvbGQiKSYmKFlmPW4uYm9va2luZ01vZGUpLHR5cGVvZiBuLnRvb2xOYW1lcz09Im9iamVjdCImJihWbD1uLnNhbmRib3g9PT0hMCxRZj1uLnBob25lUmVxdWlyZWQ9PT0hMCksKG4ubGFuZz09PSJ6aCJ8fG4ubGFuZz09PSJlbiIpJiYocmU9bi5sYW5nLHpfKCkpLG4uYnJhbmQmJihEZT1TdHJpbmcobi5icmFuZCkpLG4uYWNjZW50JiZUXyhuLmFjY2VudCksbi5sb2dvVXJsJiYoZ3M9U3RyaW5nKG4ubG9nb1VybCkpLG4ubG9nb0RhcmtVcmwmJihnaT1TdHJpbmcobi5sb2dvRGFya1VybCkpLG4uc2hvd05hbWU9PT0hMCYmKGVpPSEwKSxuLnByb2dyYW1tZSYmKGJpPVN0cmluZyhuLnByb2dyYW1tZSkpLG4ubWFya2V0JiZBcnJheS5pc0FycmF5KG4ubWFya2V0LnN1cHBsaWVycykmJihrZT1uLm1hcmtldCksbi52aWV3PT09ImJvb2tpbmciJiYob3Q9IiIpLG4uY29kZVByZWZpeCYmKHZpPVN0cmluZyhuLmNvZGVQcmVmaXgpKSx0eXBlb2Ygbi5kZW1vPT0iYm9vbGVhbiImJihXbD1uLmRlbW8pLG4uZGVtb05vdGUmJihGZj1TdHJpbmcobi5kZW1vTm90ZSkpLHR5cGVvZiBuLnJvb21zX3dhbnRlZD09Im51bWJlciI/TD1uLnJvb21zX3dhbnRlZDoobi52aWV3PT09ImhvdGVscyJ8fG4udmlldz09PSJkZXN0aW5hdGlvbnMifHxuLnZpZXc9PT0ibm8taG90ZWxzIikmJm4uc3RheT8uY2hlY2tJbiYmIUx0JiYoTD1NYXRoLm1heCgxLE51bWJlcihuLmFzaz8ucm9vbXM/PzEpfHwxKSksdHx8KG4udmlldz09PSJtZW1iZXIiJiZuLm1lbWJlcj8udGllcj8ubmFtZT9uZT1uLm1lbWJlcjpuLm1lbWJlcj8udGllcj8ubmFtZSYmKG5lPW5lPy5wcm9ncmFtbWU9PT1uLm1lbWJlci5wcm9ncmFtbWUmJm5lPy50aWVyPy5uYW1lPT09bi5tZW1iZXIudGllci5uYW1lP3suLi5uZSwuLi5uLm1lbWJlcixwcmVmZXJlbmNlczpuLm1lbWJlci5wcmVmZXJlbmNlc306bi5tZW1iZXIpLChuLnZpZXc9PT0ic2lnbmVkLW91dCJ8fG4uc2lnbmVkSW49PT0hMSkmJihuZT1udWxsKSksbi5zdGF5Py5jaGVja0luJiZuLnN0YXkuY2hlY2tPdXQ+bi5zdGF5LmNoZWNrSW4mJiFFbiYmIUx0JiYodz17Y2hlY2tJbjpuLnN0YXkuY2hlY2tJbixjaGVja091dDpuLnN0YXkuY2hlY2tPdXQsZ3Vlc3RzOm4uc3RheS5ndWVzdHM/PzJ9KSwham4mJihuLnZpZXc9PT0idHJpcCJ8fG4udmlldz09PSJuZWVkcy1kYXRlcyIpJiYoY3Q9bi5saW5lcz8/W10pLChuLnZpZXc9PT0iYm9va2luZyJ8fG4udmlldz09PSJlbXB0eS10cmlwIikmJihjdD1bXSxTdD0wKSxldD1TdHJpbmcobi52aWV3Pz8iIiksSGYoKSxiXyhuKSxkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic2tsb2dvIik/LnJlbW92ZSgpO2NvbnN0IG89SigiYnJhbmQiKTtncz8oRmwoKSxvLmhpZGRlbj0hMSxKKCJ0aXRsZSIpLmhpZGRlbj0hZWksZWkmJihKKCJ0aXRsZSIpLnRleHRDb250ZW50PURlfHxjKCJIb3RlbHMiLCLphZLlupciKSkpOihvLmhpZGRlbj0hMCxKKCJ0aXRsZSIpLmhpZGRlbj0hMSxKKCJ0aXRsZSIpLnRleHRDb250ZW50PURlfHxjKCJIb3RlbHMiLCLphZLlupciKSksSigic3ViIikudGV4dENvbnRlbnQ9UncobikseF8oKSxadygpLE53KCk7Y29uc3Qgcz17aG90ZWxzOkJfLGRlc3RpbmF0aW9uczpPXywibm8taG90ZWxzIjpVXyxob3RlbDpyZCwibm8tcm9vbXMiOnJkLCJob3RlbC1ub3QtZm91bmQiOnA9PihwLmNhbmRpZGF0ZXM/P1tdKS5sZW5ndGg/bHUocC5xdWVyeSxwLmNhbmRpZGF0ZXMscC52b2NhYj8ubm91bik6YDxkaXYgY2xhc3M9ImVtcHR5Ij4ke2MoIlRoYXQgaG90ZWwgaXMgbm90IGluIHRoaXMgY29ubmVjdG9yLiIsIui/memHjOayoeaciei/meWutumFkuW6l+OAgiIpfTwvZGl2PmAsZXh0cmFzOmV3LHRyaXA6c3csIm5lZWRzLWRhdGVzIjpPdyxib29raW5nOmd3LCJuZWVkcy1ndWVzdCI6bHcsbWVtYmVyOnV3LCJtZW1iZXItbm90LWZvdW5kIjpkdywic2lnbmVkLW91dCI6KCk9PmA8ZGl2IGNsYXNzPSJlbXB0eSI+JHtjKCJTaWduZWQgb3V0LiBSYXRlcyBhcmUgdGhlIHB1YmxpYyBvbmVzIGFnYWluLiIsIuW3sumAgOWHuueZu+W9le+8jOS7t+agvOaBouWkjeS4uuWFrOW8gOS7t+OAgiIpfTwvZGl2PjxkaXYgY2xhc3M9ImZvb3QiPjxidXR0b24gY2xhc3M9ImdvIiB0eXBlPSJidXR0b24iIGRhdGEtYWN0PSJob21lIj4ke2MoIkZpbmQgYSBob3RlbCIsIuaJvumFkuW6lyIpfTwvYnV0dG9uPjwvZGl2PmAsImVtcHR5LXRyaXAiOigpPT5gPGRpdiBjbGFzcz0iZW1wdHkiPiR7YygiVGhlcmUgaXMgbm90aGluZyBpbiB0aGUgdHJpcCB5ZXQuIiwi6KGM56iL6YeM6L+Y5rKh5pyJ5YaF5a6544CCIil9PC9kaXY+YCxib29raW5nczpTdywiY2FuY2VsbGF0aW9uLXByZXZpZXciOmxkLGNhbmNlbGxlZDpsZCwiY2hhbmdlLXByZXZpZXciOnVkLGNoYW5nZWQ6dWQsImJvb2tpbmctbm90LWZvdW5kIjooKT0+YDxkaXYgY2xhc3M9ImVtcHR5Ij4ke2MoIk5vIGJvb2tpbmcgaGVyZSBtYXRjaGVzIHRoYXQgY29kZS4iLCLmsqHmnInlkozov5nkuKrnoa7orqTnoIHlr7nlupTnmoTpooTorqLjgIIiKX08L2Rpdj5gLGNvbXBhcmlzb246QXcsIm5vdGhpbmctdG8tY29tcGFyZSI6cD0+KHAuZHJvcHBlZD8/W10pLnNvbWUoaD0+KGguY2FuZGlkYXRlcz8/W10pLmxlbmd0aCk/dXUocCk6YDxkaXYgY2xhc3M9ImVtcHR5Ij4ke2MoIk5vbmUgb2YgdGhvc2UgYXJlIGhvdGVscyB0aGlzIGNvbm5lY3RvciBrbm93cy4iLCLov5nkupvpg73kuI3mmK/ov5nph4znmoTphZLlupfjgIIiKX08L2Rpdj5gLGl0aW5lcmFyeTpDdywiZW1wdHktaXRpbmVyYXJ5IjooKT0+YDxkaXYgY2xhc3M9ImVtcHR5Ij4ke2MoIkFuIGl0aW5lcmFyeSBuZWVkcyBhdCBsZWFzdCBvbmUgZGF5LiIsIuihjOeoi+iuoeWIkuiHs+WwkemcgOimgeS4gOWkqeOAgiIpfTwvZGl2PmAscG9saWN5Om5pLHBvbGljaWVzOm5pLCJwb2xpY3ktbWlzc2luZyI6bmksZXJyb3I6JHcsImZpbmQtYm9va2luZyI6KCk9PlsnPGRpdiBjbGFzcz0ibm90ZSI+QSBib29raW5nIG1hZGUgaW4gYW5vdGhlciBjb252ZXJzYXRpb24gaXMgZm91bmQgd2l0aCB0aGUgY29uZmlybWF0aW9uIGNvZGUgYW5kIHRoZSBlbWFpbCBpdCB3YXMgbWFkZSB3aXRoIC0gYm90aCwgYXMgdGhleSBhcmUgb24gdGhlIGNvbmZpcm1hdGlvbi48L2Rpdj4nLGA8ZGl2IGNsYXNzPSJmb3JtIj4KICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0d28iPgogICAgICAgICAgICAgPGxhYmVsPiR7YygiQ29uZmlybWF0aW9uIGNvZGUiLCLnoa7orqTnoIEiKX08aW5wdXQgaWQ9ImZjb2RlIiB0eXBlPSJ0ZXh0IiBhdXRvY29tcGxldGU9Im9mZiIke1h1KCk/YCBwbGFjZWhvbGRlcj0iJHtsKFh1KCkpfSJgOiIifT48L2xhYmVsPgogICAgICAgICAgICAgPGxhYmVsPiR7YygiRW1haWwiLCLpgq7nrrEiKX08aW5wdXQgaWQ9ImZtYWlsIiB0eXBlPSJlbWFpbCIgYXV0b2NvbXBsZXRlPSJvZmYiIHBsYWNlaG9sZGVyPSIke2MoIlRoZSBvbmUgb24gdGhlIGJvb2tpbmciLCLpooTorqLml7bnlKjnmoTpgq7nrrEiKX0iPjwvbGFiZWw+CiAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iZ28iIHR5cGU9ImJ1dHRvbiIgZGF0YS1hY3Q9Imxvb2t1cC1ib29raW5nIj4ke2MoIkZpbmQgaXQiLCLmn6Xmib4iKX08L2J1dHRvbj4KICAgICAgICAgPC9kaXY+YF0uam9pbigiIiksIm5vLW1lbWJlciI6KCk9PmA8ZGl2IGNsYXNzPSJlbXB0eSI+JHtjKCJOb2JvZHkgaXMgc2lnbmVkIGluLCBzbyB0aGVyZSBpcyBub3RoaW5nIHNhdmVkIHRvIGZvcmdldC4iLCLlvZPliY3msqHmnInnmbvlvZXvvIzmsqHmnInlj6/muIXpmaTnmoTlgY/lpb3jgIIiKX08L2Rpdj4ke1NzKCEwKX1gLCJtZW1iZXItc2lnbi1pbiI6KCk9PltgPGRpdiBjbGFzcz0ibm90ZSI+JHtjKCJTaWduIGluIHdpdGggdGhlIG1lbWJlcnNoaXAgbnVtYmVyIGFuZCB0aGUgc3VybmFtZSBwcmludGVkIG9uIHRoZSBjYXJkIHRvIHNlZSB0aGUgbWVtYmVyIHJhdGUgb24gZXZlcnkgcHJpY2UgaGVyZS4iLCLnlKjljaHkuIrljbDnmoTkvJrlkZjlj7flkozlp5PmsI/nmbvlvZXvvIzov5nph4znmoTmr4/kuKrku7fmoLzpg73kvJrmmL7npLrkvJrlkZjku7fjgIIiKX08L2Rpdj5gLFNzKCEwKV0uam9pbigiIil9OyhldD09PSJob3RlbCJ8fGV0PT09Im5vLXJvb21zInx8ZXQ9PT0ibmVlZHMtZGF0ZXMiKSYmbi5ob3RlbD8uaWQ/KGp0PVN0cmluZyhuLmhvdGVsLmlkKSxuLm5lZWRzRGF0ZXMmJnNldFRpbWVvdXQoKCk9PnF0KDAsIUhyKSwwKSk6KGp0PSIiLGR1KCkpO2NvbnN0IHI9d3QobikhPT13dChQKTtQPW47Y29uc3QgYT1zW2V0XTtKKCJjb250ZW50IikuaW5uZXJIVE1MPShhP2Eobik6YDxkaXYgY2xhc3M9ImVyciI+JHtsKG4uZXJyb3I/P2MoIlNvbWV0aGluZyBjYW1lIGJhY2sgdGhhdCB0aGlzIGNhcmQgZG9lcyBub3Qga25vdyBob3cgdG8gZHJhdy4iLCLmlLbliLDkuobov5nlvKDljaHniYfml6Dms5XmmL7npLrnmoTlhoXlrrnjgIIiKSl9JHtuLmRldGFpbD9gPGJyPiR7bChuLmRldGFpbCl9YDoiIn08L2Rpdj5gKStFdyhuKTtjb25zdCBpPUooImNvbnRlbnQiKTtpLmNsYXNzTGlzdC5yZW1vdmUoImVudGVyIiksciYmZG9jdW1lbnQudmlzaWJpbGl0eVN0YXRlIT09ImhpZGRlbiImJihpLm9mZnNldFdpZHRoLGkuY2xhc3NMaXN0LmFkZCgiZW50ZXIiKSk7Y29uc3QgZD1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIjY29udGVudCAuZmxleC1kYXRlcyIpLHU9ZD8ucXVlcnlTZWxlY3RvcigiLmZkLm9uIik7aWYoZCYmdSl7Y29uc3QgcD1bLi4uZC5xdWVyeVNlbGVjdG9yQWxsKCIuZmQiKV0saD1wWzBdPy5vZmZzZXRMZWZ0Pz8wLGI9dS5vZmZzZXRMZWZ0LShkLmNsaWVudFdpZHRoLXUub2Zmc2V0V2lkdGgpLzIsJD1wLmZpbHRlcihUPT5ULm9mZnNldExlZnQ8PWIrMSkucG9wKCk/P3BbMF07ZC5zY3JvbGxMZWZ0PU1hdGgubWF4KDAsKCQ/Lm9mZnNldExlZnQ/P2gpLWgpO2NvbnN0IGs9KCk9PntkLmNsYXNzTGlzdC50b2dnbGUoImF0LXN0YXJ0IixkLnNjcm9sbExlZnQ8PTIpLGQuY2xhc3NMaXN0LnRvZ2dsZSgiYXQtZW5kIixkLnNjcm9sbExlZnQrZC5jbGllbnRXaWR0aD49ZC5zY3JvbGxXaWR0aC0yKX07aygpLGQuYWRkRXZlbnRMaXN0ZW5lcigic2Nyb2xsIixrLHtwYXNzaXZlOiEwfSl9ZXQ9PT0iaG90ZWxzIiYmIUxuKCkmJihYbD1RbCgpLFZyKE51bWJlcihuLnRvdGFsPz8wKS1OdW1iZXIobi5vZmZzZXQ/PzApKSE9PV9zJiZfZShuLHQpKX0sRXc9ZT0+e2NvbnN0IHQ9ISFNZS5nZXRIb3N0Q2FwYWJpbGl0aWVzKCk/Lm1lc3NhZ2Usbj1zPT5sKFN0cmluZyhzPz8iIikucmVwbGFjZSgvIihbXiJdKikiL2csIuKAnCQx4oCdIikpLG89KGUuc3VnZ2VzdGlvbnM/P1tdKS5tYXAoKHMscik9PnM/LmFza3x8cz8uYXNrcz8ubGVuZ3RoP2A8YnV0dG9uIGNsYXNzPSJjaGlwIG5leHQiIHR5cGU9ImJ1dHRvbiIgZGF0YS1zdWdnZXN0PSIke3J9Ij48c3Bhbj4ke24ocy5sYWJlbCl9PC9zcGFuPiR7RS5hcnJvd308L2J1dHRvbj5gOnM/LnNheSYmdD9gPGJ1dHRvbiBjbGFzcz0iY2hpcCBuZXh0IHNheSIgdHlwZT0iYnV0dG9uIiBkYXRhLXN1Z2dlc3Q9IiR7cn0iPjxzcGFuPiR7bihzLmxhYmVsKX0gPHNtYWxsPsK3IGluIHRoZSBjaGF0PC9zbWFsbD48L3NwYW4+JHtFLmFycm93fTwvYnV0dG9uPmA6IiIpLmpvaW4oIiIpO3JldHVybiBvP2A8ZGl2IGNsYXNzPSJzdWdnZXN0Ij48ZGl2IGNsYXNzPSJ3bCI+JHtjKCJOZXh0Iiwi5o6l5LiL5p2lIil9PC9kaXY+JHtvfTwvZGl2PmA6IiJ9LE93PWU9PltlLmhvdGVsP21nKGUuaG90ZWwpOiIiLGA8ZGl2IGNsYXNzPSJlcnIiPiR7bChyZT09PSJ6aCImJiFLdChTdHJpbmcoZS53aHk/PyIiKSk/Iuivt+WFiOmAieWlveWFpeS9j+WSjOemu+W6l+aXpeacn++8jOWGjeaKiuaIv+mXtOWKoOWFpeihjOeoi+OAgiI6ZS53aHk/PyJXaGljaCBuaWdodHM/IEEgcm9vbSBuZWVkcyBhIGNoZWNrLWluIGFuZCBhIGNoZWNrLW91dCBkYXRlLiIpfTwvZGl2PmAsb2coU3RyaW5nKGUuaG90ZWw/LmlkPz8iIiksZS5ob3RlbD8udG9kYXlUaGVyZSldLmpvaW4oIiIpLFJ3PWU9PmUudmlldz09PSJob3RlbHMifHxlLnZpZXc9PT0iaG90ZWwifHxlLnZpZXc9PT0ibm8tcm9vbXMifHxlLnZpZXc9PT0idHJpcCI/IiI6ZS52aWV3PT09ImNvbXBhcmlzb24iP2MoYCR7KGUuY29sdW1ucz8/W10pLmxlbmd0aH0gc2lkZSBieSBzaWRlYCxgJHsoZS5jb2x1bW5zPz9bXSkubGVuZ3RofSDlrrblr7nmr5RgKTplLnZpZXc9PT0iaXRpbmVyYXJ5Ij9OdW1iZXIoZS5ib29rZWQpPjA/YyhgJHtlLmJvb2tlZH0vJHtlLnBsYW5uZWR9IGJvb2tlZGAsYOW3suiuoiAke2UuYm9va2VkfS8ke2UucGxhbm5lZH1gKTpjKGAke2UuaW5UcmlwfS8ke2UucGxhbm5lZH0gaW4gdGhlIHRyaXBgLGDooYznqIvkuK0gJHtlLmluVHJpcH0vJHtlLnBsYW5uZWR9YCk6ZS52aWV3PT09ImJvb2tpbmdzIj9jKGAke2UuY291bnQ/PzB9IGJvb2tpbmcke051bWJlcihlLmNvdW50KT09PTE/IiI6InMifWAsYCR7ZS5jb3VudD8/MH0g56yU6aKE6K6iYCk6IiIsTnc9KCk9Pntjb25zdCBlPUooIm1lbWJlcmNoaXAiKTtuZT8oZS5oaWRkZW49ITEsZS50ZXh0Q29udGVudD1jKGAke25lLnRpZXI/Lm5hbWU/PyJNZW1iZXIifSDCtyAke01hdGgucm91bmQoKG5lLnRpZXI/LmRpc2NvdW50Pz8wKSoxMDApfSUgb2ZmYCxgJHtuZS50aWVyPy5uYW1lPz8i5Lya5ZGYIn0gwrcg5LyY5oOgICR7TWF0aC5yb3VuZCgobmUudGllcj8uZGlzY291bnQ/PzApKjEwMCl9JWApLGUuc2V0QXR0cmlidXRlKCJkYXRhLWFjdCIsIm1lbWJlciIpLGUuc2V0QXR0cmlidXRlKCJ0aXRsZSIsW25lLm5hbWUsbmUucHJvZ3JhbW1lXS5maWx0ZXIodD0+dHlwZW9mIHQ9PSJzdHJpbmciJiZ0KS5qb2luKCIgwrcgIikpKTooZS5oaWRkZW49IVdvKCJzaWduSW4iKXx8ZXQ9PT0ibWVtYmVyLW5vdC1mb3VuZCIsZS50ZXh0Q29udGVudD1jKCJNZW1iZXIgc2lnbiBpbiIsIuS8muWRmOeZu+W9lSIpLGUuc2V0QXR0cmlidXRlKCJkYXRhLWFjdCIsImFzay1zaWduLWluIiksZS5yZW1vdmVBdHRyaWJ1dGUoInRpdGxlIikpfSxadz0oKT0+e2NvbnN0IGU9SigiaGVhZHRyaXAiKSx0PWpuP1N0OlN0fHxjdC5sZW5ndGg7ZS5oaWRkZW49dD09PTB8fGV0PT09InRyaXAiLEooImhlYWR0cmlwbiIpLnRleHRDb250ZW50PVN0cmluZyh0KX0sb2k9KCk9Pntjb25zdCBlPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjaSIpLHQ9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvIiksbj1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZ3UiKTt3PXtjaGVja0luOmU/LnZhbHVlPz93LmNoZWNrSW4sY2hlY2tPdXQ6dD8udmFsdWU/P3cuY2hlY2tPdXQsZ3Vlc3RzOk51bWJlcihuPy52YWx1ZT8/dy5ndWVzdHMpfHwyfX0sem49KGU9e30pPT53LmNoZWNrSW4mJncuY2hlY2tPdXQ/e2NoZWNrSW46dy5jaGVja0luLGNoZWNrT3V0OncuY2hlY2tPdXQsZ3Vlc3RzOncuZ3Vlc3RzLC4uLmV9OmU7bGV0IHhpLEVuPSExO2NvbnN0IGR1PSgpPT57Y2xlYXJUaW1lb3V0KHhpKSxFbj0hMX0scXQ9KGU9MCx0PSExKT0+e2p0JiYoY2xlYXJUaW1lb3V0KHhpKSxFbj0hMCx4aT1zZXRUaW1lb3V0KCgpPT57aWYoIWp0KXtFbj0hMTtyZXR1cm59aWYodm4pe3F0KDE1MCx0KTtyZXR1cm59RW49ITEsVygiZ2V0SG90ZWwiLHtob3RlbDpqdCxyb29tczpMLC4uLnpuKCl9LHQ/e25vdGU6a199Ont9KS5jYXRjaCgoKT0+cShjKCJDb3VsZCBub3QgbG9hZCB0aG9zZSBuaWdodHMuIiwi5rKh6IO95Yqg6L296L+Z5Lqb5pel5pyf44CCIikpKX0sZSkpfSxvcz0oKT0+e2Zvcihjb25zdCBlIG9mIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIltkYXRhLXJvb21zLW5dLFtkYXRhLWxpc3Qtcm9vbXNdIikpe2NvbnN0IHQ9TnVtYmVyKGUuZ2V0QXR0cmlidXRlKCJkYXRhLXJvb21zLW4iKT8/ZS5nZXRBdHRyaWJ1dGUoImRhdGEtbGlzdC1yb29tcyIpKTtlLmRpc2FibGVkPXQ8MD9MPD0xOkw+PU10fWZvcihjb25zdCBlIG9mIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIltkYXRhLWd1ZXN0cy1uXSIpKXtjb25zdCB0PU51bWJlcihlLmdldEF0dHJpYnV0ZSgiZGF0YS1ndWVzdHMtbiIpKTtlLmRpc2FibGVkPXQ8MD93Lmd1ZXN0czw9MTp3Lmd1ZXN0cz49a3N9Zm9yKGNvbnN0IGUgb2YgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiW2RhdGEtZ3Vlc3RzLXNob3duXSIpKWUudGV4dENvbnRlbnQ9U3RyaW5nKHcuZ3Vlc3RzKTtmb3IoY29uc3QgZSBvZiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCJbZGF0YS1wYXJ0eS13b3Jkc10iKSllLnRleHRDb250ZW50PXNnKCl9LHE9ZT0+e2Zvcihjb25zdCB0IG9mIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIi5zYWlkIikpdC5yZW1vdmUoKTtKKCJjb250ZW50IikuaW5zZXJ0QWRqYWNlbnRIVE1MKCJhZnRlcmJlZ2luIixgPGRpdiBjbGFzcz0iZXJyIHNhaWQiIHJvbGU9ImFsZXJ0Ij4ke2woZSl9PC9kaXY+YCl9LE13PWU9Pntmb3IoY29uc3QgbiBvZiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCIuZmllbGQtZXJyLC5mb3JtLWVyciIpKW4ucmVtb3ZlKCk7Zm9yKGNvbnN0IG4gb2YgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnW2FyaWEtaW52YWxpZD0idHJ1ZSJdJykpbi5yZW1vdmVBdHRyaWJ1dGUoImFyaWEtaW52YWxpZCIpO2lmKCFlLmxlbmd0aClyZXR1cm47Zm9yKGNvbnN0W24sLG9db2YgZSl7Y29uc3Qgcz1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChuKTtzJiYocy5zZXRBdHRyaWJ1dGUoImFyaWEtaW52YWxpZCIsInRydWUiKSxzLnNldEF0dHJpYnV0ZSgiYXJpYS1kZXNjcmliZWRieSIsYCR7bn0tZXJyYCkscy5pbnNlcnRBZGphY2VudEhUTUwoImFmdGVyZW5kIixgPHNwYW4gY2xhc3M9ImZpZWxkLWVyciIgaWQ9IiR7bn0tZXJyIj4ke0UuZXJyb3J9PHNwYW4+JHtsKG8pfTwvc3Bhbj48L3NwYW4+YCkpfWNvbnN0IHQ9ZS5tYXAoKFssbl0pPT5uKTtkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjZ3Vlc3QgW2RhdGEtYWN0PSJib29rIl0nKT8uaW5zZXJ0QWRqYWNlbnRIVE1MKCJiZWZvcmViZWdpbiIsYDxkaXYgY2xhc3M9ImZvcm0tZXJyIiByb2xlPSJhbGVydCI+JHtFLmVycm9yfTxzcGFuPiR7bChlLmxlbmd0aD09PTE/YyhgQ2hlY2sgJHt0WzBdfSBiZWZvcmUgYm9va2luZy5gLGDpooTorqLliY3or7fmo4Dmn6XvvJoke3RbMF1944CCYCk6YyhgJHtlLmxlbmd0aH0gdGhpbmdzIHRvIGNoZWNrIGJlZm9yZSBib29raW5nOiAke3dpKHQpfS5gLGDpooTorqLliY3mnIkgJHtlLmxlbmd0aH0g6aG56ZyA6KaB5qOA5p+l77yaJHt0LmpvaW4oIuOAgSIpfeOAgmApKX08L3NwYW4+PC9kaXY+YCksZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZVswXVswXSk/LmZvY3VzKCl9O2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoImlucHV0IixlPT57Y29uc3QgdD1lLnRhcmdldDshdD8uY2xvc2VzdCgiI2d1ZXN0Iil8fHQuZ2V0QXR0cmlidXRlKCJhcmlhLWludmFsaWQiKSE9PSJ0cnVlInx8dC52YWx1ZS50cmltKCkmJih0LnJlbW92ZUF0dHJpYnV0ZSgiYXJpYS1pbnZhbGlkIiksdC5yZW1vdmVBdHRyaWJ1dGUoImFyaWEtZGVzY3JpYmVkYnkiKSxkb2N1bWVudC5nZXRFbGVtZW50QnlJZChgJHt0LmlkfS1lcnJgKT8ucmVtb3ZlKCksZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI2d1ZXN0IFthcmlhLWludmFsaWQ9InRydWUiXScpfHxkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIjZ3Vlc3QgLmZvcm0tZXJyIik/LnJlbW92ZSgpKX0pO2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIixlPT57Y29uc3QgdD1lLnRhcmdldD8uY2xvc2VzdCgiW2RhdGEtaG90ZWxdLFtkYXRhLWFjdF0sW2RhdGEtcG9saWN5XSxbZGF0YS1jYW5jZWxdLFtkYXRhLWNvbmZpcm0tY2FuY2VsXSxbZGF0YS1jb25maXJtLWNoYW5nZV0sW2RhdGEtZXh0cmFzXSxbZGF0YS1yb29tcy1uXSxbZGF0YS1hc2tdLFtkYXRhLWJvb2tpbmctZXh0cmFzXSxbZGF0YS1ib29raW5nLWV4dHJhXSxbZGF0YS1zdWdnZXN0XSxbZGF0YS1wbGFjZV0sW2RhdGEtcGxhY2UtYWxsXSxbZGF0YS1zb3J0XSxbZGF0YS1saXN0LXJvb21zXSxbZGF0YS1maWx0ZXJdLFtkYXRhLXBhbmVsXSxbZGF0YS1yZWdpb25dLFtkYXRhLWdyb3VwLWhvbWVdLFtkYXRhLWNhbF0sW2RhdGEtZGF5XSxbZGF0YS1jYWwtbmF2XSxbZGF0YS1jYWwtY2xvc2VdLFtkYXRhLWhvdXItc3RhcnRdLFtkYXRhLWFycml2ZV0sW2RhdGEtcGFydHldLFtkYXRhLWd1ZXN0cy1uXSxbZGF0YS1zcGxpdF0sW2RhdGEtb3Blbi1ib29raW5nXSIpO2lmKCF0KXJldHVybjtjb25zdCBuPXQuZ2V0QXR0cmlidXRlKCJkYXRhLWNhbCIpO2lmKG4hPT1udWxsKXtjb25zdFt5LFNdPW4uc3BsaXQoIjoiKTtLbFt5XSYmUF8oeSxTPT09Im91dCI/Im91dCI6ImluIik7cmV0dXJufWNvbnN0IG89dC5nZXRBdHRyaWJ1dGUoImRhdGEtZGF5Iik7aWYobyE9PW51bGwpe0VfKG8pO3JldHVybn1jb25zdCBzPXQuZ2V0QXR0cmlidXRlKCJkYXRhLWNhbC1uYXYiKTtpZihzIT09bnVsbCYmUil7Ui5tb250aD15aShSLm1vbnRoLE51bWJlcihzKSkseHQoUi5wYWlyLGBbZGF0YS1jYWwtbmF2PSIke3N9Il1gKTtyZXR1cm59aWYodC5oYXNBdHRyaWJ1dGUoImRhdGEtY2FsLWNsb3NlIikmJlIpe2NvbnN0e3BhaXI6eX09UjtSLmluP3JnKCk6KFI9bnVsbCx4dCh5KSk7cmV0dXJufWNvbnN0IHI9dC5nZXRBdHRyaWJ1dGUoImRhdGEtYXNrIik7aWYociE9PW51bGwpe2NvbnN0IHk9dC5nZXRBdHRyaWJ1dGUoImFyaWEtcHJlc3NlZCIpIT09InRydWUiO3Quc2V0QXR0cmlidXRlKCJhcmlhLXByZXNzZWQiLFN0cmluZyh5KSk7Y29uc3QgUz1pd1tyXTt5JiZTJiZkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGAuYXNrW2RhdGEtYXNrPSIke1N9Il1gKT8uc2V0QXR0cmlidXRlKCJhcmlhLXByZXNzZWQiLCJmYWxzZSIpLElpKCk7cmV0dXJufWNvbnN0IGE9dC5nZXRBdHRyaWJ1dGUoImRhdGEtc3BsaXQiKTtpZihhIT09bnVsbCl7Y29uc3RbeSxTXT1hLnNwbGl0KCI6IikubWFwKE51bWJlcik7b2koKSxMPU1hdGgubWluKE10LE1hdGgubWF4KDEseXx8MSkpLHcuZ3Vlc3RzPU1hdGgubWluKGtzLE1hdGgubWF4KDEsU3x8MSkpLG9zKCkscXQoMCk7cmV0dXJufWlmKHQuaGFzQXR0cmlidXRlKCJkYXRhLXBhcnR5Iikpe050PSFOdDtmb3IoY29uc3QgeSBvZiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCJbZGF0YS1wYXJ0eV0iKSl5LnNldEF0dHJpYnV0ZSgiYXJpYS1leHBhbmRlZCIsU3RyaW5nKE50KSk7Zm9yKGNvbnN0IHkgb2YgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiLnBhcnR5LXBhbmVsIikpeS5oaWRkZW49IU50O3JldHVybn1jb25zdCBpPXQuZ2V0QXR0cmlidXRlKCJkYXRhLWd1ZXN0cy1uIik7aWYoaSE9PW51bGwpe3QuZ2V0QXR0cmlidXRlKCJkYXRhLW9uIik9PT0iZGF0YS1yb29tcy1uIiYmb2koKSx3Lmd1ZXN0cz1NYXRoLm1pbihrcyxNYXRoLm1heCgxLHcuZ3Vlc3RzK051bWJlcihpKSkpLG9zKCksdC5nZXRBdHRyaWJ1dGUoImRhdGEtb24iKT09PSJkYXRhLWxpc3Qtcm9vbXMiP09uKDQ1MCk6anQmJnF0KDQ1MCk7cmV0dXJufWNvbnN0IGQ9dC5nZXRBdHRyaWJ1dGUoImRhdGEtbGlzdC1yb29tcyIpO2lmKGQhPT1udWxsKXtMPU1hdGgubWluKE10LE1hdGgubWF4KDEsTCtOdW1iZXIoZCkpKTtjb25zdCB5PWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJscm4iKTt5JiYoeS50ZXh0Q29udGVudD1TdHJpbmcoTCkpLG9zKCksT24oNDUwKTtyZXR1cm59Y29uc3QgdT10LmdldEF0dHJpYnV0ZSgiZGF0YS1yb29tcy1uIik7aWYodSE9PW51bGwpe29pKCksTD1NYXRoLm1pbihNdCxNYXRoLm1heCgxLEwrTnVtYmVyKHUpKSk7Y29uc3QgeT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicm4iKTt5JiYoeS50ZXh0Q29udGVudD1TdHJpbmcoTCkpLG9zKCk7Y29uc3QgUz1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibmlnaHRzIik7UyYmKFMudGV4dENvbnRlbnQ9aWcoKSkscXQoNDUwKTtyZXR1cm59Y29uc3QgcD10LmdldEF0dHJpYnV0ZSgiZGF0YS1hcnJpdmUiKTtpZihwIT09bnVsbCl7Y29uc3QgeT10LmdldEF0dHJpYnV0ZSgiYXJpYS1wcmVzc2VkIikhPT0idHJ1ZSI7Zm9yKGNvbnN0IFEgb2YgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiW2RhdGEtYXJyaXZlXSIpKVEuc2V0QXR0cmlidXRlKCJhcmlhLXByZXNzZWQiLFN0cmluZyh5JiZRPT09dCkpO2NvbnN0IFM9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImd0aW1lIik7UyYmKFMudmFsdWU9eT9wOiIiKSxJaSgpO3JldHVybn1jb25zdCBoPXQuZ2V0QXR0cmlidXRlKCJkYXRhLWhvdXItc3RhcnQiKTtpZihoIT09bnVsbCl7c3Uuc2V0KHQuZ2V0QXR0cmlidXRlKCJkYXRhLXJvb20iKT8/IiIsaCksUCYmX2UoUCk7cmV0dXJufWNvbnN0IGI9dC5nZXRBdHRyaWJ1dGUoImRhdGEtYWRkLXJvb20iKTtpZihiIT09bnVsbCYmdC5oYXNBdHRyaWJ1dGUoImRhdGEtc3RhcnQiKSl7VygiYWRkVG9UcmlwIix7aG90ZWw6dC5nZXRBdHRyaWJ1dGUoImRhdGEtaG90ZWwiKT8/IiIscm9vbTpiLHN0YXJ0VGltZTp0LmdldEF0dHJpYnV0ZSgiZGF0YS1zdGFydCIpPz8iIixyb29tczpOdW1iZXIodC5nZXRBdHRyaWJ1dGUoImRhdGEtbiIpPz8xKXx8MSxndWVzdHM6dy5ndWVzdHN9KS5jYXRjaCgoKT0+cShjKCJDb3VsZCBub3QgY2hhbmdlIHRoZSB0cmlwLiIsIuayoeiDveabtOaWsOihjOeoi+OAgiIpKSk7cmV0dXJufWlmKGIhPT1udWxsKXtjb25zdCB5PXQuZ2V0QXR0cmlidXRlKCJkYXRhLWhvdGVsIik/PyIiLFM9dC5jbGFzc0xpc3QuY29udGFpbnMoImFkZCIpJiYhdC5oYXNBdHRyaWJ1dGUoImRhdGEtY2kiKT9MOk51bWJlcih0LmdldEF0dHJpYnV0ZSgiZGF0YS1uIik/PzEpLFE9dC5oYXNBdHRyaWJ1dGUoImRhdGEtY2kiKT97Y2hlY2tJbjp0LmdldEF0dHJpYnV0ZSgiZGF0YS1jaSIpPz8iIixjaGVja091dDp0LmdldEF0dHJpYnV0ZSgiZGF0YS1jbyIpPz8iIixndWVzdHM6TnVtYmVyKHQuZ2V0QXR0cmlidXRlKCJkYXRhLWd1Iik/PzIpfTp6bigpO1coImFkZFRvVHJpcCIse2hvdGVsOnkscm9vbTpiLHJvb21zOlMsLi4uUX0se3N0YXk6dC5oYXNBdHRyaWJ1dGUoImRhdGEta2VlcCIpfHwhIXQuY2xvc2VzdCgiLnJvb20iKSYmIXQuY2xhc3NMaXN0LmNvbnRhaW5zKCJhZGQiKX0pLmNhdGNoKCgpPT5xKGMoIkNvdWxkIG5vdCBjaGFuZ2UgdGhlIHRyaXAuIiwi5rKh6IO95pu05paw6KGM56iL44CCIikpKTtyZXR1cm59Y29uc3QgJD10LmdldEF0dHJpYnV0ZSgiZGF0YS1hZGQtZXh0cmEiKTtpZigkIT09bnVsbCl7Y29uc3QgeT10LmdldEF0dHJpYnV0ZSgiZGF0YS1kYXkiKTtXKCJhZGRUb1RyaXAiLHtob3RlbDp0LmdldEF0dHJpYnV0ZSgiZGF0YS1ob3RlbCIpPz8iIixleHRyYTokLHF1YW50aXR5Ok51bWJlcih0LmdldEF0dHJpYnV0ZSgiZGF0YS1uIik/PzEpLC4uLnk/e2RheTp5fTp7fX0pLmNhdGNoKCgpPT5xKGMoIkNvdWxkIG5vdCBjaGFuZ2UgdGhlIHRyaXAuIiwi5rKh6IO95pu05paw6KGM56iL44CCIikpKTtyZXR1cm59Y29uc3Qgaz10LmdldEF0dHJpYnV0ZSgiZGF0YS1wbGFjZSIpO2lmKGshPT1udWxsKXtjb25zdCB5PVA/LmFzaz8uc29ydCxTPVA/LnZpZXc9PT0iaG90ZWxzIj9QPy5hc2s/LnF1ZXJ5OnZvaWQgMDtBaSgpO2NvbnN0IFE9UD8udmlldz09PSJkZXN0aW5hdGlvbnMifHwhIVA/LnN0YXk/LmNoZWNrSW47VygibGlzdEhvdGVscyIsey4uLms/e2NpdHk6a306e30sLi4ueT97c29ydDp5fTp7fSwuLi5rJiZTP3txdWVyeTpTfTp7fSwuLi5QPy52aWV3PT09ImhvdGVscyI/aXMoUD8uYXNrKTp7fSwuLi5RP1p0KCk6e319KS5jYXRjaCgoKT0+cShjKCJDb3VsZCBub3QgbG9hZCB0aG9zZSBob3RlbHMuIiwi5rKh6IO95Yqg6L296L+Z5Lqb6YWS5bqX44CCIikpKTtyZXR1cm59Y29uc3QgVD10LmdldEF0dHJpYnV0ZSgiZGF0YS1ncm91cC1ob21lIik7aWYoVCl7VygibGlzdEhvdGVscyIse2FsbDohMCxncm91cDpULC4uLlp0KCl9KS5jYXRjaCgoKT0+cShjKCJDb3VsZCBub3QgbG9hZCB0aG9zZSBob3RlbHMuIiwi5rKh6IO95Yqg6L296L+Z5Lqb6YWS5bqX44CCIikpKTtyZXR1cm59Y29uc3QgeD10LmdldEF0dHJpYnV0ZSgiZGF0YS1maWx0ZXIiKTtpZih4IT09bnVsbCl7Y29uc3QgeT1QPy5hc2s/P3t9LFM9aXMoeSk7aWYoeC5zdGFydHNXaXRoKCJncm91cDoiKSl7Y29uc3QgcGU9eC5zbGljZSg2KTtTLmdyb3VwPVMuZ3JvdXA9PT1wZT92b2lkIDA6cGV9ZWxzZSBpZih4LnN0YXJ0c1dpdGgoImJyYW5kOiIpKXtjb25zdCBwZT14LnNsaWNlKDYpO1MuYnJhbmQ9Uy5icmFuZD09PXBlP3ZvaWQgMDpwZX1lbHNlIGlmKHguc3RhcnRzV2l0aCgiZmFjaWxpdHk6Iikpe2NvbnN0IHBlPXguc2xpY2UoOSksaHQ9Uy5mYWNpbGl0aWVzPz9bXTtTLmZhY2lsaXRpZXM9aHQuaW5jbHVkZXMocGUpP2h0LmZpbHRlcihtdD0+bXQhPT1wZSk6Wy4uLmh0LHBlXX1lbHNlKHg9PT0iZnJlZUNhbmNlbGxhdGlvbiJ8fHg9PT0iYnJlYWtmYXN0IikmJihTW3hdPSFTW3hdKTtjb25zdCBRPWlzKFMpO1coImxpc3RIb3RlbHMiLHsuLi50ZCh5KSwuLi5RfSkuY2F0Y2goKCk9PnEoYygiQ291bGQgbm90IGZpbHRlciB0aGUgbGlzdC4iLCLmsqHog73nrZvpgInliJfooajjgIIiKSkpO3JldHVybn1jb25zdCB6PXQuZ2V0QXR0cmlidXRlKCJkYXRhLXNvcnQiKTtpZih6IT09bnVsbCl7SGU9dWc7Y29uc3R7c29ydDp5LC4uLlN9PVA/LmFzaz8/e307VygibGlzdEhvdGVscyIsey4uLlMsLi4ueiE9PSJncm91cCI/e3NvcnQ6en06e319KS5jYXRjaCgoKT0+cShjKCJDb3VsZCBub3QgcmVvcmRlciB0aGUgbGlzdC4iLCLmsqHog73ph43mlrDmjpLluo/jgIIiKSkpO3JldHVybn1jb25zdCBJPXQuZ2V0QXR0cmlidXRlKCJkYXRhLXBsYWNlLWFsbCIpO2lmKEkhPT1udWxsKXtXKCJsaXN0SG90ZWxzIix7Y2l0eTpJLGFsbDohMCwuLi5adCgpfSkuY2F0Y2goKCk9PnEoYygiQ291bGQgbm90IGxvYWQgdGhvc2UgaG90ZWxzLiIsIuayoeiDveWKoOi9vei/meS6m+mFkuW6l+OAgiIpKSk7cmV0dXJufWNvbnN0IFo9dC5nZXRBdHRyaWJ1dGUoImRhdGEtYm9va2luZy1leHRyYXMiKTtpZihaIT09bnVsbCl7VygibGlzdEV4dHJhcyIsdHQoWikpLmNhdGNoKCgpPT5xKGMoIkNvdWxkIG5vdCBsb2FkIHRoZSBhZGQtb25zLiIsIuayoeiDveWKoOi9vemZhOWKoOacjeWKoeOAgiIpKSk7cmV0dXJufWNvbnN0IGllPXQuZ2V0QXR0cmlidXRlKCJkYXRhLWJvb2tpbmctZXh0cmEiKTtpZihpZSE9PW51bGwpe1coInByZXZpZXdDaGFuZ2UiLHsuLi50dCh0LmdldEF0dHJpYnV0ZSgiZGF0YS1ib29raW5nIik/PyIiKSxleHRyYTppZSxxdWFudGl0eTpOdW1iZXIodC5nZXRBdHRyaWJ1dGUoImRhdGEtbiIpPz8xKX0pLmNhdGNoKCgpPT5xKGMoIkNvdWxkIG5vdCB3b3JrIG91dCB0aGF0IGNoYW5nZS4iLCLmsqHog73orqHnrpfov5nmrKHkv67mlLnjgIIiKSkpO3JldHVybn1jb25zdCBDPXQuZ2V0QXR0cmlidXRlKCJkYXRhLWV4dHJhcyIpO2lmKEMhPT1udWxsKXtXKCJsaXN0RXh0cmFzIix7aG90ZWw6QywuLi56bigpfSkuY2F0Y2goKCk9PnEoYygiQ291bGQgbm90IGxvYWQgdGhlIGFkZC1vbnMuIiwi5rKh6IO95Yqg6L296ZmE5Yqg5pyN5Yqh44CCIikpKTtyZXR1cm59Y29uc3QgRj10LmdldEF0dHJpYnV0ZSgiZGF0YS1wb2xpY3kiKTtpZihGIT09bnVsbCl7VygicG9saWNpZXMiLHtob3RlbDp0LmdldEF0dHJpYnV0ZSgiZGF0YS1ob3RlbCIpPz8iIix0b3BpYzpGfSkuY2F0Y2goKCk9PnEoYygiQ291bGQgbm90IGxvYWQgdGhhdCBwb2xpY3kuIiwi5rKh6IO95Yqg6L296L+Z5p2h5pS/562W44CCIikpKTtyZXR1cm59Y29uc3QgJGU9dC5nZXRBdHRyaWJ1dGUoImRhdGEtY2FuY2VsIik7aWYoJGUhPT1udWxsKXtXKCJwcmV2aWV3Q2FuY2VsbGF0aW9uIix0dCgkZSkpLmNhdGNoKCgpPT5xKGMoIkNvdWxkIG5vdCB3b3JrIG91dCB0aGUgZmVlLiIsIuayoeiDveiuoeeul+WPlua2iOi0ueeUqOOAgiIpKSk7cmV0dXJufWNvbnN0IEV0PXQuZ2V0QXR0cmlidXRlKCJkYXRhLWNvbmZpcm0tY2FuY2VsIik7aWYoRXQhPT1udWxsKXtXKCJjYW5jZWxCb29raW5nIix7Li4udHQoRXQpLGNvbmZpcm1lZDohMH0pLmNhdGNoKCgpPT5xKGMoIkNvdWxkIG5vdCBjYW5jZWwgdGhhdCBib29raW5nLiIsIuayoeiDveWPlua2iOi/meeslOmihOiuouOAgiIpKSk7cmV0dXJufWNvbnN0IHluPXQuZ2V0QXR0cmlidXRlKCJkYXRhLWNvbmZpcm0tY2hhbmdlIik7aWYoeW4hPT1udWxsKXtjb25zdCB5PVA/LnRvPz97fSxTPVA/LmZyb20/P3t9LFE9UD8uYWRkT24scGU9eS5jaGVja0luJiYoeS5jaGVja0luIT09Uy5jaGVja0lufHx5LmNoZWNrT3V0IT09Uy5jaGVja091dCk7VygiY2hhbmdlQm9va2luZyIsey4uLnR0KHluKSxjb25maXJtZWQ6ITAsLi4ucGU/e2NoZWNrSW46eS5jaGVja0luLGNoZWNrT3V0OnkuY2hlY2tPdXR9Ont9LC4uLlE/LmlkP3tleHRyYTpRLmlkLHF1YW50aXR5Ok51bWJlcihRLnRvKX06e30sLi4ueS5yb29tcyE9PXZvaWQgMCYmTnVtYmVyKHkucm9vbXMpIT09TnVtYmVyKFMucm9vbXMpP3tyb29tczpOdW1iZXIoeS5yb29tcyl9Ont9LC4uLnkucm9vbU5hbWUmJnkucm9vbU5hbWUhPT1TLnJvb21OYW1lP3tyb29tOnkucm9vbU5hbWV9Ont9fSkuY2F0Y2goKCk9PnEoYygiQ291bGQgbm90IGNoYW5nZSB0aGF0IGJvb2tpbmcuIiwi5rKh6IO95L+u5pS56L+Z56yU6aKE6K6i44CCIikpKTtyZXR1cm59Y29uc3QgSD10LmdldEF0dHJpYnV0ZSgiZGF0YS1hY3QiKTtpZihIPT09ImJhY2siKXtkZCgpO3JldHVybn1jb25zdCBrbj1IPT09ImJvb2tpbmdzIj8iYm9va2luZ3MiOnQuaGFzQXR0cmlidXRlKCJkYXRhLWhvdGVsIikmJiF0Lmhhc0F0dHJpYnV0ZSgiZGF0YS1jaSIpP2Bob3RlbDoke3QuZ2V0QXR0cmlidXRlKCJkYXRhLWhvdGVsIil9YDoiIjtpZihrbiYmYmUubGVuZ3RoJiZ3dChiZS5hdCgtMSk/LnBheWxvYWQpPT09a24pe2RkKCk7cmV0dXJufWNvbnN0IEpvPXQuZ2V0QXR0cmlidXRlKCJkYXRhLXJlZ2lvbiIpO2lmKEpvIT09bnVsbCl7Y29uc3QgeT10LmdldEF0dHJpYnV0ZSgiYXJpYS1leHBhbmRlZCIpIT09InRydWUiO2Zvcihjb25zdCBTIG9mIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIltkYXRhLXJlZ2lvbl0iKSlTLnNldEF0dHJpYnV0ZSgiYXJpYS1leHBhbmRlZCIsU3RyaW5nKHkmJlM9PT10KSk7Zm9yKGNvbnN0IFMgb2YgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiW2RhdGEtcmVnaW9uLWJvZHldIikpUy5oaWRkZW49IXl8fFMuZ2V0QXR0cmlidXRlKCJkYXRhLXJlZ2lvbi1ib2R5IikhPT1KbztyZXR1cm59aWYoSD09PSJtb3JlLWNvdW50cmllcyIpe2Zvcihjb25zdCB5IG9mKHQuY2xvc2VzdCgiW2RhdGEtcmVnaW9uLWJvZHldIik/P2RvY3VtZW50KS5xdWVyeVNlbGVjdG9yQWxsKCIuZGVzdFtoaWRkZW5dIikpeS5oaWRkZW49ITE7dC5jbG9zZXN0KCIucGxhY2VzIik/LnJlbW92ZSgpO3JldHVybn1pZihIPT09Im1vcmUtcGxhY2VzIil7Zm9yKGNvbnN0IHkgb2YodC5jbG9zZXN0KCIucGxhY2VzIik/P2RvY3VtZW50KS5xdWVyeVNlbGVjdG9yQWxsKCIuY2hpcC5wbGFjZVtoaWRkZW5dIikpeS5oaWRkZW49ITE7dC5yZW1vdmUoKTtyZXR1cm59Y29uc3QgX249dC5nZXRBdHRyaWJ1dGUoImRhdGEtcGFuZWwiKTtpZihfbiE9PW51bGwpe0hlPUhlPT09X24/IiI6X247Zm9yKGNvbnN0IHkgb2YgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiW2RhdGEtcGFuZWwtYm9keV0iKSl5LmhpZGRlbj15LmdldEF0dHJpYnV0ZSgiZGF0YS1wYW5lbC1ib2R5IikhPT1IZTtmb3IoY29uc3QgeSBvZiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCJbZGF0YS1wYW5lbF0iKSl5LnNldEF0dHJpYnV0ZSgiYXJpYS1leHBhbmRlZCIsU3RyaW5nKHkuZ2V0QXR0cmlidXRlKCJkYXRhLXBhbmVsIik9PT1IZSkpO3JldHVybn1pZihIPT09ImNsZWFyLWZpbHRlcnMiKXtXKCJsaXN0SG90ZWxzIix0ZChQPy5hc2spKS5jYXRjaCgoKT0+cShjKCJDb3VsZCBub3QgY2xlYXIgdGhlIGZpbHRlcnMuIiwi5rKh6IO95riF6Zmk562b6YCJ44CCIikpKTtyZXR1cm59aWYoSD09PSJhbGwtaG90ZWxzIil7QWkoKSxXKCJsaXN0SG90ZWxzIix7YWxsOiEwLC4uLlp0KCl9KS5jYXRjaCgoKT0+cShjKCJDb3VsZCBub3QgbG9hZCB0aGUgaG90ZWxzLiIsIuayoeiDveWKoOi9vemFkuW6l+OAgiIpKSk7cmV0dXJufWlmKEg9PT0icHJpY2UtbGlzdCIpe09uKDApO3JldHVybn1pZihIPT09ImZpbmQtYm9va2luZyIpe2NvbnN0IHk9e3ZpZXc6ImZpbmQtYm9va2luZyJ9O1RuKHkpLF9lKHkpLG50KCksZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImZjb2RlIik/LmZvY3VzKCk7cmV0dXJufWlmKEg9PT0ibG9va3VwLWJvb2tpbmciKXtjb25zdCB5PWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJmY29kZSIpPy52YWx1ZS50cmltKCk/PyIiLFM9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImZtYWlsIik/LnZhbHVlLnRyaW0oKT8/IiI7aWYoIXl8fCFTLmluY2x1ZGVzKCJAIikpe3EoYygiQm90aCB0aGUgY29uZmlybWF0aW9uIGNvZGUgYW5kIHRoZSBlbWFpbCB0aGUgYm9va2luZyB3YXMgbWFkZSB3aXRoLCBwbGVhc2UuIiwi6K+35ZCM5pe25aGr5YaZ56Gu6K6k56CB5ZKM6aKE6K6i5pe255So55qE6YKu566x44CCIikpO3JldHVybn1XKCJsaXN0Qm9va2luZ3MiLHtib29raW5nOnksZW1haWw6U30pLmNhdGNoKCgpPT5xKGMoIkNvdWxkIG5vdCBsb29rIHRoYXQgdXAuIiwi5rKh6IO95p+l5Yiw44CCIikpKTtyZXR1cm59aWYoSD09PSJmaW5kIil7X2coKTtyZXR1cm59aWYoSD09PSJwYWdlLW5leHQifHxIPT09InBhZ2UtcHJldiIpe2NvbnN0IHk9UDtpZigheXx8eS52aWV3IT09ImhvdGVscyIpcmV0dXJuO2NvbnN0IFM9VnIoKSxRPU51bWJlcih5Lm9mZnNldD8/MCkscGU9TWF0aC5taW4oUywoeS5ob3RlbHM/P1tdKS5sZW5ndGgpO1coImxpc3RIb3RlbHMiLHsuLi55LmFzaz8/e30sb2Zmc2V0Okg9PT0icGFnZS1uZXh0Ij9RK3BlOk1hdGgubWF4KDAsUS1TKSxsaW1pdDpTfSkudGhlbihudCkuY2F0Y2goKCk9PnEoYygiQ291bGQgbm90IGxvYWQgdGhvc2UgaG90ZWxzLiIsIuayoeiDveWKoOi9vei/meS6m+mFkuW6l+OAgiIpKSk7cmV0dXJufWlmKEg9PT0iZnVsbHNjcmVlbiIpe01lLnJlcXVlc3REaXNwbGF5TW9kZSh7bW9kZToiZnVsbHNjcmVlbiJ9KS50aGVuKHk9Pntxbj1TdHJpbmcoeT8ubW9kZT8/cW4pO2NvbnN0IFM9UDtpZighUylyZXR1cm47Y29uc3QgUT1OdW1iZXIoUy50b3RhbD8/MCk7TG4oKSYmUy52aWV3PT09ImhvdGVscyImJihOdW1iZXIoUy5vZmZzZXQ/PzApPjB8fChTLmhvdGVscz8/W10pLmxlbmd0aDxNYXRoLm1pbigxMixRKSk/VygibGlzdEhvdGVscyIsey4uLlMuYXNrPz97fSxsaW1pdDoxMn0pLmNhdGNoKCgpPT5xKGMoIkNvdWxkIG5vdCBsb2FkIHRoZSBob3RlbHMuIiwi5rKh6IO95Yqg6L296YWS5bqX44CCIikpKTpfZShTKX0pLmNhdGNoKCgpPT5xKGMoIlRoaXMgYXBwIGNhbm5vdCBvcGVuIGZ1bGwgc2NyZWVuIGhlcmUuIiwi6L+Z6YeM5peg5rOV5YWo5bGP5omT5byA44CCIikpKTtyZXR1cm59aWYoSD09PSJtb3JlLWhvdGVscyIpe2NvbnN0IHk9UDtpZigheXx8eS52aWV3IT09ImhvdGVscyIpcmV0dXJuO1coImxpc3RIb3RlbHMiLHsuLi55LmFzaz8/e30sb2Zmc2V0Ok51bWJlcih5Lm9mZnNldD8/MCkrKHkuaG90ZWxzPz9bXSkubGVuZ3RoLGxpbWl0OjEyfSx7Zm9sZDpTPT5TPy52aWV3PT09ImhvdGVscyI/ey4uLlMsaG90ZWxzOlsuLi55LmhvdGVscz8/W10sLi4uUy5ob3RlbHM/P1tdXSxzaG93bjooeS5ob3RlbHM/P1tdKS5sZW5ndGgrKFMuaG90ZWxzPz9bXSkubGVuZ3RoLG9mZnNldDpOdW1iZXIoeS5vZmZzZXQ/PzApLHBsYWNlczp5LnBsYWNlcywuLi55LndpZGVuZWQ/e3dpZGVuZWQ6eS53aWRlbmVkfTp7fX06U30pLmNhdGNoKCgpPT5xKGMoIkNvdWxkIG5vdCBsb2FkIG1vcmUgaG90ZWxzLiIsIuayoeiDveWKoOi9veabtOWkmumFkuW6l+OAgiIpKSk7cmV0dXJufWlmKEg9PT0iaG9tZSIpe1coImxpc3RIb3RlbHMiLHt9KS5jYXRjaCgoKT0+cShjKCJDb3VsZCBub3QgbG9hZCB0aGUgaG90ZWxzLiIsIuayoeiDveWKoOi9vemFkuW6l+OAgiIpKSk7cmV0dXJufWlmKChIPT09Im1lbWJlciJ8fEg9PT0iZmluZC1ib29raW5nInx8SD09PSJhc2stc2lnbi1pbiIpJiZ2bilyZXR1cm47aWYoSD09PSJtZW1iZXIiKXtpZighbmUpcmV0dXJuO2NvbnN0IHk9e3ZpZXc6Im1lbWJlciIsbWVtYmVyOm5lfTtUbih5KSxfZSh5KSxudCgpO3JldHVybn1pZihIPT09ImFzay1zaWduLWluIil7Y29uc3QgeT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic2lnbmluIik7aWYoeSl5LmhpZGRlbj0hMTtlbHNle2NvbnN0IFM9e3ZpZXc6Im1lbWJlci1zaWduLWluIn07VG4oUyksX2UoUyksbnQoKX1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibW51bSIpPy5mb2N1cygpO3JldHVybn1pZihIPT09InNpZ24taW4iKXtjb25zdCB5PWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJtbnVtIik/LnZhbHVlLnRyaW0oKT8/IiIsUz1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibXN1ciIpPy52YWx1ZS50cmltKCk/PyIiO2lmKCF5fHwhUyl7cShjKCJCb3RoIHRoZSBtZW1iZXJzaGlwIG51bWJlciBhbmQgdGhlIHN1cm5hbWUgb24gaXQsIHBsZWFzZS4iLCLor7flkIzml7bloavlhpnkvJrlkZjlj7flkozljaHkuIrnmoTlp5PmsI/jgIIiKSk7cmV0dXJufVcoInNpZ25JbiIse251bWJlcjp5LHN1cm5hbWU6U30pLmNhdGNoKCgpPT5xKGMoIkNvdWxkIG5vdCBzaWduIGluLiIsIuayoeiDveeZu+W9leOAgiIpKSk7cmV0dXJufWlmKEg9PT0iZm9yZ2V0LXByZWZzIil7VygiZm9yZ2V0UHJlZmVyZW5jZXMiLHt9KS5jYXRjaCgoKT0+cShjKCJDb3VsZCBub3QgZm9yZ2V0IHRoZW0uIiwi5rKh6IO95riF6Zmk44CCIikpKTtyZXR1cm59Y29uc3QgcHU9dC5nZXRBdHRyaWJ1dGUoImRhdGEtc3VnZ2VzdCIpO2lmKHB1IT09bnVsbCl7Y29uc3QgeT0oUD8uc3VnZ2VzdGlvbnM/P1tdKVtOdW1iZXIocHUpXTt5Py5hc2s/LnRvb2w/VyhTdHJpbmcoeS5hc2sudG9vbCkseS5hc2suYXJncz8/e30pLmNhdGNoKCgpPT5xKGMoIkNvdWxkIG5vdCBkbyB0aGF0IGp1c3Qgbm93LiIsIuaaguaXtuayoeiDveWujOaIkOOAgiIpKSk6QXJyYXkuaXNBcnJheSh5Py5hc2tzKSYmeS5hc2tzLmxlbmd0aD8oYXN5bmMoKT0+e2Zvcihjb25zdFtTLFFdb2YgeS5hc2tzLmVudHJpZXMoKSlhd2FpdCBXKFN0cmluZyhRLnRvb2wpLFEuYXJncz8/e30se3B1c2g6Uz09PTB9KX0pKCkuY2F0Y2goKCk9PnEoYygiQ291bGQgbm90IHB1dCBhbGwgb2YgdGhlbSBpbiB0aGUgdHJpcCBqdXN0IG5vdy4iLCLmmoLml7bmsqHog73lhajpg6jliqDlhaXooYznqIvjgIIiKSkpOnk/LnNheSYmTWUuc2VuZE1lc3NhZ2Uoe3JvbGU6InVzZXIiLGNvbnRlbnQ6W3t0eXBlOiJ0ZXh0Iix0ZXh0OlN0cmluZyh5LnNheSl9XX0pLmNhdGNoKCgpPT5xKGMoIkNvdWxkIG5vdCBzZW5kIHRoYXQgdG8gdGhlIGNoYXQuIiwi5rKh6IO95Y+R6YCB5Yiw5a+56K+d44CCIikpKTtyZXR1cm59aWYoSD09PSJzaWduLW91dCIpe25lPW51bGwsVygic2lnbk91dCIse30pLmNhdGNoKCgpPT5xKGMoIkNvdWxkIG5vdCBzaWduIG91dC4iLCLmsqHog73pgIDlh7rnmbvlvZXjgIIiKSkpO3JldHVybn1pZihIPT09ImFzay1ib29rIil7Y29uc3QgeT10LmdldEF0dHJpYnV0ZSgiZGF0YS1ncm91cCIpO3kmJnkhPT1vdCYmKG90PXksX2UoUCkpO2NvbnN0IFM9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImd1ZXN0Iik7UyYmKFMuaGlkZGVuPSExKSxkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZ25hbWUiKT8uZm9jdXMoKTtyZXR1cm59aWYoSD09PSJib29rIil7Y29uc3R7cGhvbmVSZXF1aXJlZDp5fT1pdSgpLFM9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImduYW1lIik/LnZhbHVlLnRyaW0oKT8/IiIsUT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZ21haWwiKT8udmFsdWUudHJpbSgpPz8iIixwZT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZ3Bob25lIik/LnZhbHVlLnRyaW0oKT8/IiIsaHQ9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImdub3RlIik/LnZhbHVlLnRyaW0oKT8/IiIsbXQ9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImd0aW1lIik/LnZhbHVlLnRyaW0oKT8/IiIsd249Wy4uLmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ1tkYXRhLWFza11bYXJpYS1wcmVzc2VkPSJ0cnVlIl0nKV0ubWFwKHpnPT56Zy5kYXRhc2V0LmFzaz8/IiIpOyhtdD9tdD49IjIyOjAwIjoobmU/LnByZWZlcmVuY2VzPz9bXSkuaW5jbHVkZXMoImxhdGUtYXJyaXZhbCIpKSYmIXduLmluY2x1ZGVzKCJsYXRlLWFycml2YWwiKSYmd24ucHVzaCgibGF0ZS1hcnJpdmFsIik7Y29uc3QgZnU9ISFkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZ3JlbWVtYmVyIik/LmNoZWNrZWQ7T2U9e25hbWU6UyxlbWFpbDpRLC4uLnk/e3Bob25lOnBlfTp7fSxub3RlczpodCxhcnJpdmluZ0F0Om10LHJlcXVlc3RzOnduLHJlbWVtYmVyOmZ1fTtjb25zdCBTbj1bXTtpZihTfHxTbi5wdXNoKFsiZ25hbWUiLGMoImZ1bGwgbmFtZSIsIuWnk+WQjSIpLGMoIlJlcXVpcmVkOiB0aGUgZ3Vlc3QncyBmdWxsIG5hbWUsIGFzIG9uIHRoZWlyIElELiIsIuW/heWhq++8muWFpeS9j+S6uuWnk+WQje+8jOS4juivgeS7tuS4gOiHtOOAgiIpXSksUS5pbmNsdWRlcygiQCIpfHxTbi5wdXNoKFsiZ21haWwiLGMoImVtYWlsIiwi6YKu566xIiksUT9jKCJUaGF0IGVtYWlsIGhhcyBubyDigJxA4oCdIGluIGl0IOKAlCB0aGUgY29uZmlybWF0aW9uIG5lZWRzIGFuIGFkZHJlc3MgaXQgY2FuIHJlYWNoLiIsIumCrueusemHjOayoeacieKAnEDigJ3vvIzor7floavlhpnog73mlLbliLDnoa7orqTkv6Hmga/nmoTlnLDlnYDjgIIiKTpjKCJSZXF1aXJlZDogeW91ciBlbWFpbC4gV2l0aCBpdCBhbmQgdGhlIGNvbmZpcm1hdGlvbiBjb2RlLCB5b3UgY2FuIGZpbmQgdGhpcyBib29raW5nIGFnYWluIGZyb20gYW55IGNoYXQuIiwi5b+F5aGr77ya5o6l5pS256Gu6K6k5L+h5oGv55qE6YKu566x77yM5Yet5a6D5ZKM56Gu6K6k56CB5om+5Zue6aKE6K6i44CCIildKSx5JiZwZS5yZXBsYWNlKC9cRC9nLCIiKS5sZW5ndGg8NiYmU24ucHVzaChbImdwaG9uZSIsYygicGhvbmUiLCLmiYvmnLrlj7ciKSxjKCJSZXF1aXJlZDogYSBwaG9uZSBudW1iZXIsIHNvIHRoZSBob3RlbCBjYW4gcmVhY2ggeW91LiIsIuW/heWhq++8muaJi+acuuWPt++8jOaWueS+v+mFkuW6l+iBlOezu+S9oOOAgiIpXSksTXcoU24pLFNuLmxlbmd0aClyZXR1cm47VygicmVxdWVzdEJvb2tpbmciLHtuYW1lOlMsZW1haWw6USwuLi55P3twaG9uZTpwZX06e30sLi4ua2UmJm90P3tncm91cDpvdH06e30sLi4uaHQ/e25vdGVzOmh0fTp7fSwuLi5tdD97YXJyaXZpbmdBdDptdH06e30sLi4ud24ubGVuZ3RoP3tyZXF1ZXN0czp3bn06e30sLi4uZnU/e3JlbWVtYmVyUmVxdWVzdHM6ITB9Ont9fSkuY2F0Y2goKCk9PnEoYygiQ291bGQgbm90IGFzayBmb3IgdGhvc2Ugcm9vbXMuIiwi5rKh6IO95o+Q5Lqk6aKE6K6i44CCIikpKTtyZXR1cm59Y29uc3QgaHU9dC5nZXRBdHRyaWJ1dGUoImRhdGEtb3Blbi1ib29raW5nIik7aWYoaHUhPT1udWxsJiZQPy52aWV3PT09ImJvb2tpbmdzIil7Y29uc3QgeT0oUC5ib29raW5ncz8/W10pLmZpbmQoUT0+U3RyaW5nKFEuY29uZmlybWF0aW9uQ29kZSk9PT1odSk7aWYoIXkpcmV0dXJuO2NvbnN0IFM9ey4uLlAsdmlldzoiYm9va2luZyIsYm9va2luZzp5LGJvb2tpbmdzOnZvaWQgMCx0b3RhbDp5LnF1b3RlPy50b3RhbCxvcGVuZWQ6ITAsc3VnZ2VzdGlvbnM6dm9pZCAwfTtUbihTKSxfZShTKSxudCgpO3JldHVybn1pZihIPT09InBheSIpe2NvbnN0IHk9dC5nZXRBdHRyaWJ1dGUoImRhdGEtdXJsIik/PyIiLFM9dC5nZXRBdHRyaWJ1dGUoImRhdGEtY29kZSIpPz8iIjtpZigheSlyZXR1cm47TWUub3Blbkxpbmsoe3VybDp5fSkuY2F0Y2goKCk9PnEoYygiQ291bGQgbm90IG9wZW4gdGhlIHBheW1lbnQgcGFnZS4iLCLmsqHog73miZPlvIDku5jmrL7pobXjgIIiKSkpO2NvbnN0IFE9RGF0ZS5wYXJzZSh0LmdldEF0dHJpYnV0ZSgiZGF0YS11bnRpbCIpPz8iIil8fERhdGUubm93KCkrMTUqNmU0O2F1KCksU2U9e2NvZGU6Uyx1bnRpbDpRfSxTZS50aW1lcj1zZXRUaW1lb3V0KCgpPT5jdShTKSx6aSk7cmV0dXJufWlmKEg9PT0icGF5LWNoZWNrIil7Y29uc3QgeT10LmdldEF0dHJpYnV0ZSgiZGF0YS1jb2RlIik/PyIiO3kmJiRnKHkpO3JldHVybn1pZihIPT09ImJvb2tpbmdzIil7VygibGlzdEJvb2tpbmdzIix7fSkuY2F0Y2goKCk9PnEoYygiQ291bGQgbm90IGxvYWQgeW91ciBib29raW5ncy4iLCLmsqHog73liqDovb3kvaDnmoTpooTorqLjgIIiKSkpO3JldHVybn1pZihIPT09InRyaXAiKXtXKCJ2aWV3VHJpcCIse30pLmNhdGNoKCgpPT5xKGMoIkNvdWxkIG5vdCBsb2FkIHRoZSB0cmlwLiIsIuayoeiDveWKoOi9veihjOeoi+OAgiIpKSk7cmV0dXJufWlmKChIPT09ImhvdXJseSJ8fEg9PT0ibmlnaHRseSIpJiZQPy5ob3RlbD8uaWQpe2NvbnN0IHk9U3RyaW5nKFAuaG90ZWwuaWQpO1coImdldEhvdGVsIixIPT09ImhvdXJseSI/e2hvdGVsOnksaG91cmx5OiEwLGd1ZXN0czp3Lmd1ZXN0c306e2hvdGVsOnksLi4uem4oKX0pLmNhdGNoKCgpPT5xKGMoIkNvdWxkIG5vdCBsb2FkIHRoYXQgaG90ZWwuIiwi5rKh6IO95Yqg6L296L+Z5a626YWS5bqX44CCIikpKTtyZXR1cm59Y29uc3QgbXU9dC5nZXRBdHRyaWJ1dGUoImRhdGEtaG90ZWwiKTtpZihtdSl7Y29uc3QgeT10LmdldEF0dHJpYnV0ZSgiZGF0YS1jaSIpLFM9dC5nZXRBdHRyaWJ1dGUoImRhdGEtY28iKTt5JiZTJiYody5jaGVja0luPXksdy5jaGVja091dD1TKSxXKCJnZXRIb3RlbCIse2hvdGVsOm11LC4uLnpuKCksLi4udy5jaGVja0luJiZMPjE/e3Jvb21zOkx9Ont9fSkuY2F0Y2goKCk9PnEoYygiQ291bGQgbm90IGxvYWQgdGhhdCBob3RlbC4iLCLmsqHog73liqDovb3ov5nlrrbphZLlupfjgIIiKSkpfX0pO2NvbnN0IElpPSgpPT57aWYoIWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJnbmFtZSIpKXJldHVybjtjb25zdCBlPXQ9PmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHQpPy52YWx1ZT8/IiI7T2U9e25hbWU6ZSgiZ25hbWUiKSxlbWFpbDplKCJnbWFpbCIpLC4uLml1KCkucGhvbmVSZXF1aXJlZD97cGhvbmU6ZSgiZ3Bob25lIil9Ont9LG5vdGVzOmUoImdub3RlIiksYXJyaXZpbmdBdDplKCJndGltZSIpLHJlcXVlc3RzOlsuLi5kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdbZGF0YS1hc2tdW2FyaWEtcHJlc3NlZD0idHJ1ZSJdJyldLm1hcCh0PT50LmRhdGFzZXQuYXNrPz8iIikscmVtZW1iZXI6ISFkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZ3JlbWVtYmVyIik/LmNoZWNrZWR9fTtkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJpbnB1dCIsZT0+e2NvbnN0IHQ9ZS50YXJnZXQ/LmlkPz8iIjtbImduYW1lIiwiZ21haWwiLCJncGhvbmUiLCJnbm90ZSIsImd0aW1lIiwiZ3JlbWVtYmVyIl0uaW5jbHVkZXModCkmJklpKCl9KTtjb25zdCBkZD0oKT0+e2Zvcig7YmUuYXQoLTEpPy5wYXlsb2FkPy52aWV3PT09Im1lbWJlciImJiFuZTspYmU9YmUuc2xpY2UoMCwtMSk7Y29uc3QgZT1iZS5hdCgtMSk7aWYoIWV8fHZuKXtIZigpO3JldHVybn1iZT1iZS5zbGljZSgwLC0xKSx2cys9MSxkdSgpLHdnKCk7Y29uc3QgdD1lLnZlcnNpb249PT1icz92b2lkIDA6aF8oZS5wYXlsb2FkKTt0PyhQPWUucGF5bG9hZCxXKHQua2V5LHQuYXJncyx7cHVzaDohMX0pLmNhdGNoKCgpPT5fZShlLnBheWxvYWQsITApKS5maW5hbGx5KG50KSk6KF9lKGUucGF5bG9hZCwhMCksbnQoKSl9LF9nPSgpPT57Y29uc3QgZT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgid2hlcmUiKT8udmFsdWUudHJpbSgpPz8iIjtpZighZSl7cShjKCJXaGVyZSB0bz8gQSBjaXR5LCBhIGNvdW50cnkgb3IgYSBob3RlbC4iLCLmg7Pljrvlk6rph4zvvJ/ovpPlhaXln47luILjgIHlm73lrrbmiJbphZLlupflkI3jgIIiKSk7cmV0dXJufUFpKCk7Y29uc3Qgbj0oUD8ucmVnaW9ucz8/W10pLmZsYXRNYXAobz0+KG8uY291bnRyaWVzPz9bXSkuZmxhdE1hcChzPT5bcy5uYW1lLC4uLihzLmNpdGllcz8/W10pLm1hcChyPT5yLm5hbWUpXSkpLmZpbmQobz0+by50b0xvd2VyQ2FzZSgpPT09ZS50b0xvd2VyQ2FzZSgpKTtXKCJsaXN0SG90ZWxzIix7Li4ubj97Y2l0eTpufTp7cXVlcnk6ZX0sLi4uWnQoKX0pLmNhdGNoKCgpPT5xKGMoIkNvdWxkIG5vdCBzZWFyY2gganVzdCBub3cuIiwi5pqC5pe25rKh6IO95pCc57Si44CCIikpKX0sQWk9KCk9Pntjb25zdCBlPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJkY2kiKSx0PWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJkY28iKTtlPy52YWx1ZSYmKHcuY2hlY2tJbj1lLnZhbHVlKSx0Py52YWx1ZSYmKHcuY2hlY2tPdXQ9dC52YWx1ZSksZT8udmFsdWUmJihIcj0hMCl9O2xldCBDaSxMdD0hMTtjb25zdCB3Zz0oKT0+e2NsZWFyVGltZW91dChDaSksTHQ9ITF9LGp3PWU9PmU/LnZpZXc9PT0iaG90ZWxzInx8ZT8udmlldz09PSJuby1ob3RlbHMiJiYhIWU/LmFzayxPbj0oZT0wKT0+e2NsZWFyVGltZW91dChDaSksTHQ9ITAsQ2k9c2V0VGltZW91dCgoKT0+e2lmKCFqdyhQKSl7THQ9ITE7cmV0dXJufWlmKHZuKXtPbigxNTApO3JldHVybn1MdD0hMSxXKCJsaXN0SG90ZWxzIix7Li4uTl8oUD8uYXNrKSwuLi5adCgpfSkuY2F0Y2goKCk9PnEoYygiQ291bGQgbm90IHByaWNlIHRob3NlIG5pZ2h0cy4iLCLmsqHog73kuLrov5nkupvml6XmnJ/miqXku7fjgIIiKSkpfSxlKX07ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsZT0+e2lmKGUudGFyZ2V0Py5pZD09PSJ3aGVyZSImJmUua2V5PT09IkVudGVyIiYmIWUuaXNDb21wb3Npbmcpe2UucHJldmVudERlZmF1bHQoKSxfZygpO3JldHVybn1pZihlLmtleT09PSJFc2NhcGUiJiZSKXtjb25zdHtwYWlyOm59PVI7Uj1udWxsLHh0KG4sYFtkYXRhLWNhbD0iJHtufTppbiJdYCk7cmV0dXJufWNvbnN0IHQ9ZS50YXJnZXQ7IXR8fHQuZ2V0QXR0cmlidXRlKCJyb2xlIikhPT0iYnV0dG9uInx8ZS5rZXkhPT0iRW50ZXIiJiZlLmtleSE9PSIgInx8KGUucHJldmVudERlZmF1bHQoKSx0LmNsaWNrKCkpfSk7ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2VvdmVyIixlPT57aWYoIVJ8fFIucGlja2luZyE9PSJvdXQifHwhUi5pbilyZXR1cm47Y29uc3QgdD1lLnRhcmdldD8uY2xvc2VzdD8uKCIuY2RbZGF0YS1kYXldIiksbj10JiYhdC5oYXNBdHRyaWJ1dGUoImRpc2FibGVkIik/dC5kYXRhc2V0LmRheT8/IiI6IiIsbz1SLmluO2Zvcihjb25zdCBzIG9mIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIi5jYWwgLmNkW2RhdGEtZGF5XSIpKXtjb25zdCByPXMuZGF0YXNldC5kYXk/PyIiO3MuY2xhc3NMaXN0LnRvZ2dsZSgicmVhY2giLCEhbiYmbj5vJiZyPm8mJnI8bikscy5jbGFzc0xpc3QudG9nZ2xlKCJyZWFjaC1lbmQiLCEhbiYmbj5vJiZyPT09bil9fSk7ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY2hhbmdlIixlPT57Y29uc3QgdD1lLnRhcmdldDt0Py50eXBlPT09ImRhdGUiJiYoSHI9ITApO2NvbnN0IG89e2RjaTpbImRjaSIsImRjbyJdLGRjbzpbImRjaSIsImRjbyJdLGxjaTpbImxjaSIsImxjbyJdLGxjbzpbImxjaSIsImxjbyJdfVt0Py5pZD8/IiJdO2lmKG8pe2NvbnN0IGk9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQob1swXSksZD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChvWzFdKTtpZighaXx8IWQpcmV0dXJuO2lmKHQuaWQ9PT1vWzBdJiZpLnZhbHVlKXtjb25zdCB1PUl0KGkudmFsdWUsMSk7ZC5taW49dSwoIWQudmFsdWV8fGQudmFsdWU8PWkudmFsdWUpJiYoZC52YWx1ZT11KX13LmNoZWNrSW49aS52YWx1ZXx8dy5jaGVja0luLHcuY2hlY2tPdXQ9ZC52YWx1ZXx8dy5jaGVja091dCxvWzBdPT09ImxjaSImJk9uKDMwMCk7cmV0dXJufWlmKHQ/LmlkIT09ImNpIiYmdD8uaWQhPT0iY28iKXJldHVybjtjb25zdCBzPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjaSIpLHI9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvIik7aWYoIXN8fCFyKXJldHVybjtpZih0LmlkPT09ImNpIiYmcy52YWx1ZSl7Y29uc3QgaT1JdChzLnZhbHVlLDEpO3IubWluPWksKCFyLnZhbHVlfHxyLnZhbHVlPD1zLnZhbHVlKSYmKHIudmFsdWU9aSl9dy5jaGVja0luPXMudmFsdWV8fHcuY2hlY2tJbix3LmNoZWNrT3V0PXIudmFsdWV8fHcuY2hlY2tPdXQ7Y29uc3QgYT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibmlnaHRzIik7YSYmKGEudGV4dENvbnRlbnQ9aWcoKSkscXQoKX0pO2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoImVycm9yIixlPT57Y29uc3QgdD1lLnRhcmdldDt0Py50YWdOYW1lPT09IklNRyImJnQuY2xvc2VzdCgiI2NvbnRlbnQiKSYmdC5yZW1vdmUoKX0sITApO2NvbnN0IFNnPShlLHQpPT57dHJ5e1ZmKHQpO2NvbnN0IG49ZT9KU09OLnN0cmluZ2lmeShlKToiIjtpZihuJiZuPT09WGYmJkpTT04uc3RyaW5naWZ5KFApPT09ZWcpcmV0dXJuO2U/LnN0YXk/LmNoZWNrSW4mJihIcj0hMCksYmU9W10sdnMrPTEsZHUoKSx3ZygpLEhlPXVnLFI9bnVsbCxfZShlKX1jYXRjaChuKXtjb25zb2xlLmVycm9yKCJbY2FyZF0gcmVuZGVyIGZhaWxlZCIsbiksSigiY29udGVudCIpLmlubmVySFRNTD1gPGRpdiBjbGFzcz0iZW1wdHkiPiR7YygiVGhpcyBjYXJkIGNvdWxkIG5vdCBiZSBkcmF3bi4gQXNrIGFnYWluIGluIHRoZSBjaGF0LiIsIui/meW8oOWNoeeJh+ayoeiDveaYvuekuu+8jOivt+WcqOWvueivnemHjOWGjemXruS4gOasoeOAgiIpfTwvZGl2PmB9fTtNZS5vbnRvb2xyZXN1bHQ9ZT0+U2coZT8uc3RydWN0dXJlZENvbnRlbnQsZT8uX21ldGEpO2NvbnN0IFRnPWU9PntBcnJheS5pc0FycmF5KGU/LmF2YWlsYWJsZURpc3BsYXlNb2RlcykmJihoZz1lLmF2YWlsYWJsZURpc3BsYXlNb2Rlcy5tYXAoU3RyaW5nKSksdHlwZW9mIGU/LmRpc3BsYXlNb2RlPT0ic3RyaW5nIiYmZS5kaXNwbGF5TW9kZSE9PXFuJiYocW49ZS5kaXNwbGF5TW9kZSxQPy52aWV3PT09ImhvdGVscyImJl9lKFApKX07bGV0IHBkO3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJyZXNpemUiLCgpPT57Y2xlYXJUaW1lb3V0KHBkKSxwZD1zZXRUaW1lb3V0KCgpPT57aWYoUD8udmlldyE9PSJob3RlbHMifHxMbigpKXJldHVybjtYbD1RbCgpO2NvbnN0IGU9TnVtYmVyKFAudG90YWw/PzApLU51bWJlcihQLm9mZnNldD8/MCk7VnIoZSkhPT1fcyYmX2UoUCl9LDE1MCl9KTtNZS5vbmhvc3Rjb250ZXh0Y2hhbmdlZD1lPT57RGYoZSxVZiksVGcoZSksRmwoKX07TWUuY29ubmVjdCgpLnRoZW4oKCk9Pntjb25zdCBlPU1lLmdldEhvc3RDb250ZXh0KCk7RGYoZSxVZiksVGcoZSksRmwoKTtjb25zdCB0PWU/LnRvb2xJbmZvPy5yZXN1bHQ/LnN0cnVjdHVyZWRDb250ZW50O3QmJlNnKHQsZT8udG9vbEluZm8/LnJlc3VsdD8uX21ldGEpfSkuY2F0Y2goKCk9PntKKCJjb250ZW50IikuaW5uZXJIVE1MPWA8ZGl2IGNsYXNzPSJlbXB0eSI+JHtjKCJDb3VsZCBub3QgY29ubmVjdCB0byB0aGUgaG9zdC4iLCLmsqHog73ov57mjqXliLDlrr/kuLvjgIIiKX08L2Rpdj5gfSk7PC9zY3JpcHQ+CiAgICA8c3R5bGUgcmVsPSJzdHlsZXNoZWV0IiBjcm9zc29yaWdpbj46cm9vdHstLWtpdC1iZzogI2ZmZmZmZjstLWtpdC1iZy1zb2Z0OiAjZjZmN2Y5Oy0ta2l0LWZnOiAjMWExZjJiOy0ta2l0LWZnLXNvZnQ6ICM2MjZiN2E7LS1raXQtZmctZmFpbnQ6ICM4YTkzYTE7LS1raXQtbGluZTogI2UzZTdlZDstLWtpdC1hY2NlbnQ6ICMxYTFmMmI7LS1raXQtYWNjZW50LWZnOiAjZmZmZmZmOy0ta2l0LWxpbms6ICMyNTYzZWI7LS1raXQtZ29vZDogIzFhN2Y1YTstLWtpdC1nb29kLWJnOiAjZGRmM2U0Oy0ta2l0LWJhZDogI2IzMjYxZTstLWtpdC1iYWQtYmc6ICNmYmU2ZTQ7LS1raXQtd2FybjogIzhhNWEwMDstLWtpdC13YXJuLWJnOiAjZmRmMGQ1Oy0ta2l0LXJpbmc6ICMyNTYzZWJ9W2RhdGEtdGhlbWU9ZGFya117LS1raXQtYmc6ICMxZDFmMjM7LS1raXQtYmctc29mdDogIzI2MjkyZTstLWtpdC1mZzogI2VjZWVmMTstLWtpdC1mZy1zb2Z0OiAjYTRhYmI2Oy0ta2l0LWZnLWZhaW50OiAjN2M4NDkxOy0ta2l0LWxpbmU6ICMzNjNhNDE7LS1raXQtYWNjZW50OiAjZWNlZWYxOy0ta2l0LWFjY2VudC1mZzogIzFkMWYyMzstLWtpdC1saW5rOiAjN2FhN2ZmOy0ta2l0LWdvb2Q6ICM2ZmQzYTI7LS1raXQtZ29vZC1iZzogIzFmM2EyZDstLWtpdC1iYWQ6ICNmZjhhODA7LS1raXQtYmFkLWJnOiAjM2QyMzIyOy0ta2l0LXdhcm46ICNmMmM0NmI7LS1raXQtd2Fybi1iZzogIzNhMzAyMDstLWtpdC1yaW5nOiAjN2FhN2ZmfTpyb290ey0tYmc6IHZhcigtLWNvbG9yLWJhY2tncm91bmQtcHJpbWFyeSwgdmFyKC0ta2l0LWJnKSk7LS1iZy1zb2Z0OiB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kLXNlY29uZGFyeSwgdmFyKC0ta2l0LWJnLXNvZnQpKTstLWZnOiB2YXIoLS1jb2xvci10ZXh0LXByaW1hcnksIHZhcigtLWtpdC1mZykpOy0tZmctc29mdDogdmFyKC0tY29sb3ItdGV4dC1zZWNvbmRhcnksIHZhcigtLWtpdC1mZy1zb2Z0KSk7LS1mZy1mYWludDogdmFyKC0tY29sb3ItdGV4dC10ZXJ0aWFyeSwgdmFyKC0ta2l0LWZnLWZhaW50KSk7LS1saW5lOiB2YXIoLS1jb2xvci1ib3JkZXItcHJpbWFyeSwgdmFyKC0ta2l0LWxpbmUpKTstLWFjY2VudDogdmFyKC0tY29sb3ItYmFja2dyb3VuZC1pbnZlcnNlLCB2YXIoLS1raXQtYWNjZW50KSk7LS1hY2NlbnQtZmc6IHZhcigtLWNvbG9yLXRleHQtaW52ZXJzZSwgdmFyKC0ta2l0LWFjY2VudC1mZykpOy0tbGluazogdmFyKC0tY29sb3ItdGV4dC1pbmZvLCB2YXIoLS1raXQtbGluaykpOy0tZ29vZDogdmFyKC0tY29sb3ItdGV4dC1zdWNjZXNzLCB2YXIoLS1raXQtZ29vZCkpOy0tZ29vZC1iZzogdmFyKC0tY29sb3ItYmFja2dyb3VuZC1zdWNjZXNzLCB2YXIoLS1raXQtZ29vZC1iZykpOy0tYmFkOiB2YXIoLS1jb2xvci10ZXh0LWRhbmdlciwgdmFyKC0ta2l0LWJhZCkpOy0tYmFkLWJnOiB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kLWRhbmdlciwgdmFyKC0ta2l0LWJhZC1iZykpOy0td2FybjogdmFyKC0tY29sb3ItdGV4dC13YXJuaW5nLCB2YXIoLS1raXQtd2FybikpOy0td2Fybi1iZzogdmFyKC0tY29sb3ItYmFja2dyb3VuZC13YXJuaW5nLCB2YXIoLS1raXQtd2Fybi1iZykpOy0tcmluZzogdmFyKC0tY29sb3ItcmluZy1wcmltYXJ5LCB2YXIoLS1raXQtcmluZykpOy0tcmFkaXVzOiB2YXIoLS1ib3JkZXItcmFkaXVzLWxnLCAxNHB4KTstLXJhZGl1cy1zbTogdmFyKC0tYm9yZGVyLXJhZGl1cy1zbSwgOXB4KTstLWZvbnQ6IHZhcigtLWZvbnQtc2Fucywgc3lzdGVtLXVpLCAtYXBwbGUtc3lzdGVtLCAiU2Vnb2UgVUkiLCBSb2JvdG8sIHNhbnMtc2VyaWYpOy0tbW9ubzogdmFyKC0tZm9udC1tb25vLCB1aS1tb25vc3BhY2UsICJTRiBNb25vIiwgTWVubG8sIG1vbm9zcGFjZSk7LS1zaGFkb3c6IHZhcigtLXNoYWRvdy1zbSwgMCAxcHggMnB4IHJnYmEoMTAsIDIwLCA0MCwgLjA0KSwgMCAycHggNXB4IHJnYmEoMTAsIDIwLCA0MCwgLjA0KSl9Kntib3gtc2l6aW5nOmJvcmRlci1ib3h9Ym9keXttYXJnaW46MDtmb250LWZhbWlseTp2YXIoLS1mb250KTtjb2xvcjp2YXIoLS1mZyk7YmFja2dyb3VuZDp0cmFuc3BhcmVudDstd2Via2l0LWZvbnQtc21vb3RoaW5nOmFudGlhbGlhc2VkfS5jYXJke2JvcmRlcjoxcHggc29saWQgdmFyKC0tbGluZSk7Ym9yZGVyLXJhZGl1czp2YXIoLS1yYWRpdXMpO2JhY2tncm91bmQ6dmFyKC0tYmcpO2JveC1zaGFkb3c6dmFyKC0tc2hhZG93KTttYXgtd2lkdGg6NTYwcHg7b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmctbGVmdDp2YXIoLS1pbnNldC1sZWZ0LCAwcHgpO3BhZGRpbmctcmlnaHQ6dmFyKC0taW5zZXQtcmlnaHQsIDBweCl9LmhlYWR7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6OHB4O3BhZGRpbmc6MTRweCAxOHB4IDB9LmhlYWQgLnRpdGxle2ZvbnQtc2l6ZToxNXB4O2ZvbnQtd2VpZ2h0OjY1MDtsZXR0ZXItc3BhY2luZzotLjAxZW19LmhlYWQgLnRpdGxlW2hpZGRlbl17ZGlzcGxheTpub25lfSNjb250ZW50e3BhZGRpbmc6MTBweCAxOHB4IDE4cHh9LnJlZnJlc2h7bWFyZ2luLWxlZnQ6OHB4O2FsaWduLXNlbGY6Y2VudGVyO2ZsZXg6bm9uZTtkaXNwbGF5OmdyaWQ7cGxhY2UtaXRlbXM6Y2VudGVyO3dpZHRoOjI4cHg7aGVpZ2h0OjI4cHg7cGFkZGluZzowO2JvcmRlcjoxcHggc29saWQgdmFyKC0tbGluZSk7Ym9yZGVyLXJhZGl1czo5OTlweDtiYWNrZ3JvdW5kOnZhcigtLWJnKTtjb2xvcjp2YXIoLS1mZy1zb2Z0KTtjdXJzb3I6cG9pbnRlcjt0cmFuc2l0aW9uOmJvcmRlci1jb2xvciAuMTJzLGNvbG9yIC4xMnN9LnJlZnJlc2g6aG92ZXI6bm90KDpkaXNhYmxlZCl7Y29sb3I6dmFyKC0tZmcpO2JvcmRlci1jb2xvcjp2YXIoLS1mZy1zb2Z0KX0ucmVmcmVzaDpkaXNhYmxlZHtjdXJzb3I6ZGVmYXVsdDtvcGFjaXR5Oi42fS5yZWZyZXNoW2hpZGRlbl17ZGlzcGxheTpub25lfS5yZWZyZXNoIHN2Z3t3aWR0aDoxM3B4O2hlaWdodDoxM3B4O2Rpc3BsYXk6YmxvY2t9LnJlZnJlc2guYnVzeSBzdmd7YW5pbWF0aW9uOmtpdC1zcGluIC43cyBsaW5lYXIgaW5maW5pdGV9QGtleWZyYW1lcyBraXQtc3Bpbnt0b3t0cmFuc2Zvcm06cm90YXRlKDM2MGRlZyl9fS5lbXB0eXtwYWRkaW5nOjE4cHggMDt0ZXh0LWFsaWduOmNlbnRlcjtjb2xvcjp2YXIoLS1mZy1zb2Z0KTtmb250LXNpemU6MTNweH0uaGludHttYXJnaW4tdG9wOjhweDtmb250LXNpemU6MTJweDtjb2xvcjp2YXIoLS1mZy1zb2Z0KTt0ZXh0LWFsaWduOmNlbnRlcn0ubm90ZXtmb250LXNpemU6MTIuNXB4O2NvbG9yOnZhcigtLWZnLXNvZnQpO3BhZGRpbmc6MCAwIDEwcHh9Lm1vbm97Zm9udC1mYW1pbHk6dmFyKC0tbW9ubyk7Zm9udC1zaXplOjExLjVweDtjb2xvcjp2YXIoLS1mZy1mYWludCl9LmJhZGdle2Rpc3BsYXk6aW5saW5lLWZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDo2cHg7cGFkZGluZzozcHggOXB4O2JvcmRlci1yYWRpdXM6OTk5cHg7Zm9udC1zaXplOjExLjVweDtmb250LXdlaWdodDo2MDA7d2hpdGUtc3BhY2U6bm93cmFwfS5iYWRnZS5va3tjb2xvcjp2YXIoLS1nb29kKTtiYWNrZ3JvdW5kOnZhcigtLWdvb2QtYmcpfS5iYWRnZS53YXJuLC5iYWRnZS50b2Rve2NvbG9yOnZhcigtLXdhcm4pO2JhY2tncm91bmQ6dmFyKC0td2Fybi1iZyl9LmJhZGdlLmVycntjb2xvcjp2YXIoLS1iYWQpO2JhY2tncm91bmQ6dmFyKC0tYmFkLWJnKX0uYnV5e21hcmdpbi10b3A6MTRweDt3aWR0aDoxMDAlO21pbi1oZWlnaHQ6NDRweDtwYWRkaW5nOjExcHggMTRweDtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWFjY2VudCk7Ym9yZGVyLXJhZGl1czp2YXIoLS1yYWRpdXMtc20pO2JhY2tncm91bmQ6dmFyKC0tYWNjZW50KTtjb2xvcjp2YXIoLS1hY2NlbnQtZmcpO2ZvbnQtZmFtaWx5OnZhcigtLWZvbnQpO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjY1MDtjdXJzb3I6cG9pbnRlcn0uYnV5OmRpc2FibGVke2JhY2tncm91bmQ6dmFyKC0tYmctc29mdCk7Ym9yZGVyLWNvbG9yOnZhcigtLWxpbmUpO2NvbG9yOnZhcigtLWZnLWZhaW50KTtjdXJzb3I6ZGVmYXVsdH0uYnV5LmFsdCwuZ2hvc3R7YmFja2dyb3VuZDp0cmFuc3BhcmVudDtjb2xvcjp2YXIoLS1mZyk7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1saW5lKX0uZ2hvc3R7ZmxleDoxO21pbi1oZWlnaHQ6NDBweDtwYWRkaW5nOjlweCAxMHB4O2JvcmRlci1yYWRpdXM6dmFyKC0tcmFkaXVzLXNtKTtmb250LWZhbWlseTp2YXIoLS1mb250KTtmb250LXNpemU6MTNweDtjb2xvcjp2YXIoLS1mZy1zb2Z0KTtjdXJzb3I6cG9pbnRlcn0ubGlua3tib3JkZXI6MDtiYWNrZ3JvdW5kOm5vbmU7cGFkZGluZzo2cHggMCAwO2NvbG9yOnZhcigtLWxpbmspO2ZvbnQtZmFtaWx5OnZhcigtLWZvbnQpO2ZvbnQtc2l6ZToxMi41cHg7Y3Vyc29yOnBvaW50ZXI7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZX0ucXR5e2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjJweH0ucXR5IGJ1dHRvbnt3aWR0aDozNnB4O2hlaWdodDozNnB4O2JvcmRlcjoxcHggc29saWQgdmFyKC0tbGluZSk7Ym9yZGVyLXJhZGl1czp2YXIoLS1yYWRpdXMtc20pO2JhY2tncm91bmQ6dmFyKC0tYmcpO2NvbG9yOnZhcigtLWZnKTtmb250LWZhbWlseTp2YXIoLS1mb250KTtmb250LXNpemU6MTdweDtsaW5lLWhlaWdodDoxO2N1cnNvcjpwb2ludGVyfS5xdHkgc3BhbnttaW4td2lkdGg6MjZweDt0ZXh0LWFsaWduOmNlbnRlcjtmb250LXNpemU6MTMuNXB4O2ZvbnQtd2VpZ2h0OjY1MH0uY2stcGFnZXJ7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2ZsZXgtd3JhcDp3cmFwO2dhcDo4cHggMTJweDttYXJnaW4tdG9wOjE0cHh9LmNrLXBhZ2VyLWJ0bntkaXNwbGF5OmlubGluZS1mbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2dhcDo0cHg7bWluLXdpZHRoOjExMnB4O2hlaWdodDozNnB4O3BhZGRpbmc6MCAxNHB4O2JvcmRlcjoxcHggc29saWQgdmFyKC0tbGluZSk7Ym9yZGVyLXJhZGl1czp2YXIoLS1yYWRpdXMtc20pO2JhY2tncm91bmQ6dmFyKC0tYmcpO2NvbG9yOnZhcigtLWZnKTtmb250LWZhbWlseTp2YXIoLS1mb250KTtmb250LXNpemU6MTNweDtmb250LXdlaWdodDo1MDA7bGluZS1oZWlnaHQ6MTtjdXJzb3I6cG9pbnRlcjt0cmFuc2l0aW9uOmJhY2tncm91bmQtY29sb3IgLjEycyxib3JkZXItY29sb3IgLjEycyxjb2xvciAuMTJzfS5jay1wYWdlci1idG4gc3ZnLC5jay1wYWdlci1hbGwgc3Zne3dpZHRoOjE0cHg7aGVpZ2h0OjE0cHg7ZmxleDpub25lfS5jay1wYWdlci1idG46aG92ZXI6bm90KDpkaXNhYmxlZCl7YmFja2dyb3VuZDp2YXIoLS1iZy1zb2Z0KTtib3JkZXItY29sb3I6dmFyKC0tZmctZmFpbnQpfS5jay1wYWdlci1idG46YWN0aXZlOm5vdCg6ZGlzYWJsZWQpe3RyYW5zZm9ybTp0cmFuc2xhdGVZKC41cHgpfS5jay1wYWdlci1idG46ZGlzYWJsZWR7Y29sb3I6dmFyKC0tZmctZmFpbnQpO2JhY2tncm91bmQ6dHJhbnNwYXJlbnQ7b3BhY2l0eTouNjtjdXJzb3I6ZGVmYXVsdH0uY2stcGFnZXItbnttaW4td2lkdGg6OGNoO3RleHQtYWxpZ246Y2VudGVyO3doaXRlLXNwYWNlOm5vd3JhcDtmb250LXNpemU6MTNweDtjb2xvcjp2YXIoLS1mZy1zb2Z0KTtmb250LXZhcmlhbnQtbnVtZXJpYzp0YWJ1bGFyLW51bXN9LmNrLXBhZ2VyLWFsbHtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDo2cHg7d2lkdGg6Zml0LWNvbnRlbnQ7aGVpZ2h0OjMycHg7bWFyZ2luOjZweCBhdXRvIDA7cGFkZGluZzowIDEycHg7Ym9yZGVyOjA7Ym9yZGVyLXJhZGl1czo5OTlweDtiYWNrZ3JvdW5kOm5vbmU7Y29sb3I6dmFyKC0tZmctc29mdCk7Zm9udC1mYW1pbHk6dmFyKC0tZm9udCk7Zm9udC1zaXplOjEyLjVweDtmb250LXdlaWdodDo1MDA7Y3Vyc29yOnBvaW50ZXI7dHJhbnNpdGlvbjpiYWNrZ3JvdW5kLWNvbG9yIC4xMnMsY29sb3IgLjEyc30uY2stcGFnZXItYWxsOmhvdmVye2JhY2tncm91bmQ6dmFyKC0tYmctc29mdCk7Y29sb3I6dmFyKC0tZmcpfS5jay1wYWdlci1hbGw6Zmlyc3QtY2hpbGQsLmdyaWQrLmNrLXBhZ2VyLWFsbHttYXJnaW4tdG9wOjE0cHh9YnV0dG9uOmZvY3VzLXZpc2libGUsYTpmb2N1cy12aXNpYmxle291dGxpbmU6MnB4IHNvbGlkIHZhcigtLXJpbmcpO291dGxpbmUtb2Zmc2V0OjJweH1AbWVkaWEobWF4LXdpZHRoOjQzMHB4KXsuY2FyZHtib3JkZXItcmFkaXVzOmNhbGModmFyKC0tcmFkaXVzKSAtIDJweCl9LmhlYWR7cGFkZGluZzoxMnB4IDE0cHggMH0jY29udGVudHtwYWRkaW5nOjhweCAxNHB4IDE0cHh9LmJ1eXttaW4taGVpZ2h0OjQ4cHg7Zm9udC1zaXplOjE1cHh9Lmdob3N0e21pbi1oZWlnaHQ6NDRweDtmb250LXNpemU6MTMuNXB4fS5jay1wYWdlci1idG57bWluLXdpZHRoOjEwNHB4O2hlaWdodDo0MHB4fS5jay1wYWdlci1hbGx7aGVpZ2h0OjM2cHh9LnF0eSBidXR0b257d2lkdGg6NDJweDtoZWlnaHQ6NDJweDtmb250LXNpemU6MTlweH0ucmVmcmVzaHt3aWR0aDozNHB4O2hlaWdodDozNHB4fS5oaW50LC5ub3RlLC5lbXB0eXtmb250LXNpemU6MTNweH19QG1lZGlhKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246cmVkdWNlKXsucmVmcmVzaC5idXN5IHN2Z3thbmltYXRpb246bm9uZX0qe3RyYW5zaXRpb246bm9uZSFpbXBvcnRhbnR9fTpyb290ey0tYmYtcHJpbWFyeTogIzFkNGVkODstLWJmLXN1Y2Nlc3M6ICMwNTk2Njk7LS1iZi13YXJuaW5nOiAjZDk3NzA2Oy0tYmYtZXJyb3I6ICNlZjQ0NDQ7LS1iZi1pbmZvOiAjMjU2M2ViOy0tYmYtc3VyZmFjZTogI2ZmZmZmZjstLWMtYmc6IHZhcigtLWJmLXN1cmZhY2UpOy0tYy1zdW5rOiAjZjRmNmZhOy0tYy1yYWlzZTogI2ZmZmZmZjstLWMtaW5rOiAjMGMxNDI0Oy0tYy1pbmstMjogIzNmNGM2MzstLWMtaW5rLTM6ICM1YjY4N2U7LS1jLWxpbmU6ICNlM2U4ZjA7LS1jLWxpbmUtMjogI2NjZDRlMTstLWMtcHJpbWFyeTogdmFyKC0tYmYtcHJpbWFyeSk7LS1jLXByaW1hcnktaG92ZXI6ICMxYTQ0YzI7LS1jLXByaW1hcnktcHJlc3M6ICMxNjNhYTY7LS1jLXByaW1hcnktaW5rOiAjMWQ0ZWQ4Oy0tYy1wcmltYXJ5LXNvZnQ6ICNlZGYyZmU7LS1jLXByaW1hcnktc29mdC0yOiAjZGJlNWZkOy0tYy1vbi1wcmltYXJ5OiAjZmZmZmZmOy0tYy1zdWNjZXNzOiB2YXIoLS1iZi1zdWNjZXNzKTstLWMtc3VjY2Vzcy1pbms6ICMwNDc4NTc7LS1jLXN1Y2Nlc3Mtc29mdDogI2U3ZjZlZjstLWMtd2FybmluZzogdmFyKC0tYmYtd2FybmluZyk7LS1jLXdhcm5pbmctaW5rOiAjYjQ1MzA5Oy0tYy13YXJuaW5nLXNvZnQ6ICNmZGYzZTI7LS1jLWVycm9yOiB2YXIoLS1iZi1lcnJvcik7LS1jLWVycm9yLWluazogI2M0MmIyYjstLWMtZXJyb3Itc29mdDogI2ZkZWRlZDstLWMtaW5mbzogdmFyKC0tYmYtaW5mbyk7LS1jLWluZm8taW5rOiAjMWY1NWQ2Oy0tYy1pbmZvLXNvZnQ6ICNlZGYzZmU7LS1jLXN0YXI6ICNiNzc5MWY7LS1jLXNoYWRvdzogMCAxcHggMnB4IHJnYigxNiAyNCA0MCAvIDUlKSwgMCAxcHggMXB4IHJnYigxNiAyNCA0MCAvIDMlKTstLWMtc2hhZG93LTI6IDAgMXB4IDJweCByZ2IoMTYgMjQgNDAgLyA2JSksIDAgOHB4IDI0cHggLTEwcHggcmdiKDE2IDI0IDQwIC8gMTglKTstLWMtc2hhZG93LWNhcmQ6IDAgMXB4IDJweCByZ2IoMTYgMjQgNDAgLyA0JSksIDAgMTJweCAzMnB4IC0xOHB4IHJnYigxNiAyNCA0MCAvIDIyJSk7LS1jLXNjcmltOiBsaW5lYXItZ3JhZGllbnQoMTgwZGVnLCByZ2IoOCAxMiAyMiAvIDAlKSAzNSUsIHJnYig4IDEyIDIyIC8gNzIlKSAxMDAlKTstLXItY2FyZDogMjBweDstLXItbGc6IDE2cHg7LS1yLW1kOiAxMnB4Oy0tci1zbTogOXB4Oy0tZi1zYW5zOiAtYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3RlbUZvbnQsICJTRiBQcm8gVGV4dCIsICJTZWdvZSBVSSBWYXJpYWJsZSBUZXh0IiwgIlNlZ29lIFVJIiwgUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCAiUGluZ0ZhbmcgU0MiLCAiSGlyYWdpbm8gU2FucyBHQiIsICJNaWNyb3NvZnQgWWFIZWkiLCBzYW5zLXNlcmlmOy0tZi1kaXNwbGF5OiAiSW93YW4gT2xkIFN0eWxlIiwgIlBhbGF0aW5vIExpbm90eXBlIiwgUGFsYXRpbm8sICJCb29rIEFudGlxdWEiLCBHZW9yZ2lhLCAiU29uZ3RpIFNDIiwgIlNUU29uZyIsICJTaW1TdW4iLCBzZXJpZjstLWYtbW9ubzogdWktbW9ub3NwYWNlLCAiU0YgTW9ubyIsICJKZXRCcmFpbnMgTW9ubyIsIE1lbmxvLCBDb25zb2xhcywgbW9ub3NwYWNlOy0tZWFzZTogY3ViaWMtYmV6aWVyKC4yLCAuNywgLjIsIDEpfVtkYXRhLXRoZW1lPWRhcmtdey0tYy1iZzogIzExMTcyMzstLWMtc3VuazogIzBiMTAxYTstLWMtcmFpc2U6ICMxODIwMzE7LS1jLWluazogI2VlZjJmOTstLWMtaW5rLTI6ICNiNGJmZDE7LS1jLWluay0zOiAjOGY5YmIxOy0tYy1saW5lOiAjMjQzMDQ4Oy0tYy1saW5lLTI6ICMzNTQzNWY7LS1jLXByaW1hcnk6ICMzYTY4ZjI7LS1jLXByaW1hcnktaG92ZXI6ICMyZjVkZTY7LS1jLXByaW1hcnktcHJlc3M6ICMyODUyZDI7LS1jLXByaW1hcnktaW5rOiAjOTNiMmZmOy0tYy1wcmltYXJ5LXNvZnQ6ICMxODI2NGE7LS1jLXByaW1hcnktc29mdC0yOiAjMjEzNDY3Oy0tYy1vbi1wcmltYXJ5OiAjZmZmZmZmOy0tYy1zdWNjZXNzOiAjMTJiODg2Oy0tYy1zdWNjZXNzLWluazogIzRmZDhhNjstLWMtc3VjY2Vzcy1zb2Z0OiAjMGYyYzI3Oy0tYy13YXJuaW5nOiAjZjBhMDMyOy0tYy13YXJuaW5nLWluazogI2Y2YmQ1ZjstLWMtd2FybmluZy1zb2Z0OiAjMzMyNTBmOy0tYy1lcnJvcjogI2YyNjQ2NDstLWMtZXJyb3ItaW5rOiAjZmY4ZjhmOy0tYy1lcnJvci1zb2Z0OiAjM2ExYTFmOy0tYy1pbmZvOiAjNWI4Y2ZmOy0tYy1pbmZvLWluazogIzlkYmFmZjstLWMtaW5mby1zb2Z0OiAjMTYyMzNmOy0tYy1zdGFyOiAjZjJjNDZiOy0tYy1zaGFkb3c6IDAgMXB4IDJweCByZ2IoMCAwIDAgLyAzMCUpOy0tYy1zaGFkb3ctMjogMCAxcHggMnB4IHJnYigwIDAgMCAvIDM1JSksIDAgMTBweCAyOHB4IC0xMnB4IHJnYigwIDAgMCAvIDYwJSk7LS1jLXNoYWRvdy1jYXJkOiAwIDFweCAwIHJnYigyNTUgMjU1IDI1NSAvIDMlKSBpbnNldCwgMCAxOHB4IDQwcHggLTI0cHggcmdiKDAgMCAwIC8gNzAlKTtjb2xvci1zY2hlbWU6ZGFya306cm9vdCxbZGF0YS10aGVtZT1kYXJrXXstLWJnOiB2YXIoLS1jLWJnKTstLWJnLXNvZnQ6IHZhcigtLWMtc3Vuayk7LS1mZzogdmFyKC0tYy1pbmspOy0tZmctc29mdDogdmFyKC0tYy1pbmstMik7LS1mZy1mYWludDogdmFyKC0tYy1pbmstMyk7LS1saW5lOiB2YXIoLS1jLWxpbmUpOy0tYWNjZW50OiB2YXIoLS1jLXByaW1hcnkpOy0tYWNjZW50LWZnOiB2YXIoLS1jLW9uLXByaW1hcnkpOy0tbGluazogdmFyKC0tYy1wcmltYXJ5LWluayk7LS1nb29kOiB2YXIoLS1jLXN1Y2Nlc3MtaW5rKTstLWdvb2QtYmc6IHZhcigtLWMtc3VjY2Vzcy1zb2Z0KTstLWJhZDogdmFyKC0tYy1lcnJvci1pbmspOy0tYmFkLWJnOiB2YXIoLS1jLWVycm9yLXNvZnQpOy0td2FybjogdmFyKC0tYy13YXJuaW5nLWluayk7LS13YXJuLWJnOiB2YXIoLS1jLXdhcm5pbmctc29mdCk7LS1yaW5nOiB2YXIoLS1jLXByaW1hcnkpOy0tcmFkaXVzOiB2YXIoLS1yLWNhcmQpOy0tcmFkaXVzLXNtOiB2YXIoLS1yLXNtKTstLWZvbnQ6IHZhcigtLWYtc2Fucyk7LS1tb25vOiB2YXIoLS1mLW1vbm8pOy0tc2hhZG93OiB2YXIoLS1jLXNoYWRvdy1jYXJkKX1baGlkZGVuXXtkaXNwbGF5Om5vbmUhaW1wb3J0YW50fWh0bWx7YmFja2dyb3VuZDp0cmFuc3BhcmVudH1ib2R5e3BhZGRpbmc6MCAwIDE0cHh9Ym9keXtmb250LWZhbWlseTp2YXIoLS1mLXNhbnMpO2ZvbnQtc2l6ZToxNHB4O2xpbmUtaGVpZ2h0OjEuNDU7Y29sb3I6dmFyKC0tYy1pbmspO3RleHQtcmVuZGVyaW5nOm9wdGltaXplTGVnaWJpbGl0eTtmb250LWZlYXR1cmUtc2V0dGluZ3M6Imtlcm4iLCJjdjExIn0uY2FyZHtwb3NpdGlvbjpyZWxhdGl2ZTttYXgtd2lkdGg6NzYwcHg7YmFja2dyb3VuZDp2YXIoLS1jLWJnKTtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWMtbGluZSk7Ym9yZGVyLXJhZGl1czp2YXIoLS1yLWNhcmQpO2JveC1zaGFkb3c6dmFyKC0tYy1zaGFkb3ctY2FyZCl9YnV0dG9uLGlucHV0e2ZvbnQtZmFtaWx5OmluaGVyaXR9YnV0dG9uey13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjp0cmFuc3BhcmVudH06d2hlcmUoYnV0dG9uLGEsaW5wdXQsc3VtbWFyeSxbcm9sZT1idXR0b25dKTpmb2N1cy12aXNpYmxle291dGxpbmU6MnB4IHNvbGlkIHZhcigtLWMtcHJpbWFyeSk7b3V0bGluZS1vZmZzZXQ6MnB4fS5wLXRvdGFsLC5wLXdhcywucC11bml0LC50LWZyb20sLnN1bSwubW9uZXktb3V0LC5mZC1wcmljZSwuY29sLXByaWNlLC5wcy1wcmljZSwuY29kZSwubiwud3YsLmNke2ZvbnQtdmFyaWFudC1udW1lcmljOnRhYnVsYXItbnVtc30uaGVhZHtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDoxMHB4O21pbi1oZWlnaHQ6NjBweDtwYWRkaW5nOjEycHggMTZweCAxMHB4IDIwcHh9LmhvbWV7ZGlzcGxheTppbmxpbmUtZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjEwcHg7bWluLXdpZHRoOjA7bWFyZ2luOjAgYXV0byAwIDA7cGFkZGluZzo0cHggNnB4IDRweCAwO2JvcmRlcjowO2JvcmRlci1yYWRpdXM6dmFyKC0tci1zbSk7YmFja2dyb3VuZDpub25lO2NvbG9yOmluaGVyaXQ7Zm9udDppbmhlcml0O2N1cnNvcjpwb2ludGVyO3RyYW5zaXRpb246b3BhY2l0eSAuMTVzIHZhcigtLWVhc2UpfS5ob21lOmhvdmVye29wYWNpdHk6Ljc4fS5oZWFkIC5icmFuZHttYXgtaGVpZ2h0OjM0cHg7bWF4LXdpZHRoOjE1MHB4O29iamVjdC1maXQ6Y29udGFpbn1bZGF0YS10aGVtZT1kYXJrXSAuaGVhZCAuYnJhbmR7YmFja2dyb3VuZDojZTllZGY0fS5oZWFkIC50aXRsZXtmb250LXNpemU6MTZweDtmb250LXdlaWdodDo2ODA7bGV0dGVyLXNwYWNpbmc6LS4wMTVlbX0uaGVhZCAuc3Vie2NvbG9yOnZhcigtLWMtaW5rLTMpO2ZvbnQtc2l6ZToxMi41cHg7Zm9udC13ZWlnaHQ6NTUwO3RleHQtYWxpZ246ZW5kO3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpc30uaGVhZCAuc3ViOmVtcHR5e2Rpc3BsYXk6bm9uZX0ubWVtYmVyY2hpcCwuaGVhZHRyaXB7ZGlzcGxheTppbmxpbmUtZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjZweDtoZWlnaHQ6MzJweDtwYWRkaW5nOjAgMTJweDtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWMtbGluZS0yKTtib3JkZXItcmFkaXVzOjk5OXB4O2JhY2tncm91bmQ6dmFyKC0tYy1iZyk7Y29sb3I6dmFyKC0tYy1pbmspO2ZvbnQ6aW5oZXJpdDtmb250LXNpemU6MTIuNXB4O2ZvbnQtd2VpZ2h0OjYyMDt3aGl0ZS1zcGFjZTpub3dyYXA7Y3Vyc29yOnBvaW50ZXI7dHJhbnNpdGlvbjpiYWNrZ3JvdW5kLWNvbG9yIC4xNXMgdmFyKC0tZWFzZSksYm9yZGVyLWNvbG9yIC4xNXMgdmFyKC0tZWFzZSl9Lm1lbWJlcmNoaXA6aG92ZXIsLmhlYWR0cmlwOmhvdmVye2JhY2tncm91bmQ6dmFyKC0tYy1zdW5rKX0uaGVhZHRyaXB7YmFja2dyb3VuZDp2YXIoLS1jLWluayk7Ym9yZGVyLWNvbG9yOnZhcigtLWMtaW5rKTtjb2xvcjp2YXIoLS1jLWJnKTtwYWRkaW5nOjAgMTJweCAwIDEwcHh9LmhlYWR0cmlwOmhvdmVye2JhY2tncm91bmQ6dmFyKC0tYy1pbmstMik7Ym9yZGVyLWNvbG9yOnZhcigtLWMtaW5rLTIpfS5zdWJoZWFke2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjEycHg7cGFkZGluZzowIDIwcHggMTBweH0uYmFja2J0bntkaXNwbGF5OmlubGluZS1mbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6NHB4O21heC13aWR0aDo1MCU7aGVpZ2h0OjMwcHg7cGFkZGluZzowIDEycHggMCA4cHg7Ym9yZGVyOjA7Ym9yZGVyLXJhZGl1czo5OTlweDtiYWNrZ3JvdW5kOnZhcigtLWMtc3Vuayk7Y29sb3I6dmFyKC0tYy1pbmstMik7Zm9udDppbmhlcml0O2ZvbnQtc2l6ZToxMi41cHg7Zm9udC13ZWlnaHQ6NjAwO3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztjdXJzb3I6cG9pbnRlcn0uYmFja2J0bjpob3Zlcntjb2xvcjp2YXIoLS1jLWluayk7YmFja2dyb3VuZDp2YXIoLS1jLWxpbmUpfS5mbG93e2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjZweDttYXJnaW46MDtwYWRkaW5nOjA7bGlzdC1zdHlsZTpub25lO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjYwMDtjb2xvcjp2YXIoLS1jLWluay0zKX0uYmFja2J0bjpub3QoW2hpZGRlbl0pKy5mbG93e21hcmdpbi1pbmxpbmUtc3RhcnQ6YXV0b30uZmxvdyBsaXtkaXNwbGF5OmlubGluZS1mbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6NnB4O3doaXRlLXNwYWNlOm5vd3JhcH0uZmxvdyBsaStsaTpiZWZvcmV7Y29udGVudDoiIjt3aWR0aDoxOHB4O2hlaWdodDoxLjVweDtib3JkZXItcmFkaXVzOjJweDtiYWNrZ3JvdW5kOnZhcigtLWMtbGluZS0yKX0uZmxvdyAuZmRvdHtkaXNwbGF5OmdyaWQ7cGxhY2UtaXRlbXM6Y2VudGVyO3dpZHRoOjIwcHg7aGVpZ2h0OjIwcHg7Ym9yZGVyLXJhZGl1czo5OTlweDtib3JkZXI6MS41cHggc29saWQgdmFyKC0tYy1saW5lLTIpO2ZvbnQtc2l6ZToxMXB4O2ZvbnQtd2VpZ2h0OjcwMDtmb250LXZhcmlhbnQtbnVtZXJpYzp0YWJ1bGFyLW51bXN9LmZsb3cgbGkuZG9uZXtjb2xvcjp2YXIoLS1jLWluay0yKX0uZmxvdyBsaS5kb25lIC5mZG90e3Bvc2l0aW9uOnJlbGF0aXZlO2JvcmRlci1jb2xvcjp2YXIoLS1jLXByaW1hcnkpO2JhY2tncm91bmQ6dmFyKC0tYy1wcmltYXJ5KTtjb2xvcjp0cmFuc3BhcmVudH0uZmxvdyBsaS5kb25lIC5mZG90OmFmdGVye2NvbnRlbnQ6IiI7cG9zaXRpb246YWJzb2x1dGU7bGVmdDo2cHg7dG9wOjNweDt3aWR0aDo0cHg7aGVpZ2h0OjhweDtib3JkZXI6c29saWQgdmFyKC0tYy1vbi1wcmltYXJ5KTtib3JkZXItd2lkdGg6MCAycHggMnB4IDA7dHJhbnNmb3JtOnJvdGF0ZSg0NWRlZyl9LmZsb3cgbGkuZG9uZStsaTpiZWZvcmUsLmZsb3cgbGlbYXJpYS1jdXJyZW50PXN0ZXBdOmJlZm9yZXtiYWNrZ3JvdW5kOnZhcigtLWMtcHJpbWFyeSl9LmZsb3cgbGlbYXJpYS1jdXJyZW50PXN0ZXBde2NvbG9yOnZhcigtLWMtaW5rKX0uZmxvdyBsaVthcmlhLWN1cnJlbnQ9c3RlcF0gLmZkb3R7Ym9yZGVyLWNvbG9yOnZhcigtLWMtcHJpbWFyeSk7Y29sb3I6dmFyKC0tYy1wcmltYXJ5LWluayk7Ym94LXNoYWRvdzowIDAgMCAzcHggdmFyKC0tYy1wcmltYXJ5LXNvZnQpfS5idXN5YmFye3Bvc2l0aW9uOmFic29sdXRlO2luc2V0OjAgMCBhdXRvO2hlaWdodDozcHg7b3ZlcmZsb3c6aGlkZGVuO2JvcmRlci1yYWRpdXM6dmFyKC0tci1jYXJkKSB2YXIoLS1yLWNhcmQpIDAgMDtwb2ludGVyLWV2ZW50czpub25lfS5jYXJkLmJ1c3kgLmJ1c3liYXI6YmVmb3Jle2NvbnRlbnQ6IiI7cG9zaXRpb246YWJzb2x1dGU7aW5zZXQ6MDt3aWR0aDo0MCU7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQoOTBkZWcsdHJhbnNwYXJlbnQsdmFyKC0tYy1wcmltYXJ5KSx0cmFuc3BhcmVudCk7YW5pbWF0aW9uOmJ1c3kgMS4xcyB2YXIoLS1lYXNlKSBpbmZpbml0ZX1Aa2V5ZnJhbWVzIGJ1c3l7MCV7dHJhbnNmb3JtOnRyYW5zbGF0ZSgtMTAwJSl9dG97dHJhbnNmb3JtOnRyYW5zbGF0ZSgyNjAlKX19LmNhcmQuYnVzeSAjY29udGVudHtvcGFjaXR5Oi41NTt0cmFuc2l0aW9uOm9wYWNpdHkgLjJzIHZhcigtLWVhc2UpIC4xMnN9LmNhcmQuYnVzeSBidXR0b24sLmNhcmQuYnVzeSBpbnB1dHtwb2ludGVyLWV2ZW50czpub25lfSNjb250ZW50e2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47Z2FwOjE2cHg7cGFkZGluZzo0cHggMjBweCAyMHB4fS5oLW5hbWV7bWFyZ2luOjA7Zm9udC1zaXplOjIxcHg7Zm9udC13ZWlnaHQ6NzAwO2xpbmUtaGVpZ2h0OjEuMjtsZXR0ZXItc3BhY2luZzotLjAyZW19Lmgtd2hlcmV7bWFyZ2luLXRvcDo0cHg7Y29sb3I6dmFyKC0tYy1pbmstMyk7Zm9udC1zaXplOjEzcHh9Lmgtc3Vte2ZvbnQtc2l6ZToxNHB4O2xpbmUtaGVpZ2h0OjEuNjtjb2xvcjp2YXIoLS1jLWluay0yKX0ubm90ZXtwYWRkaW5nOjA7Zm9udC1zaXplOjEyLjVweDtsaW5lLWhlaWdodDoxLjU1O2NvbG9yOnZhcigtLWMtaW5rLTMpfS5lbXB0eXtwYWRkaW5nOjI4cHggOHB4O3RleHQtYWxpZ246Y2VudGVyO2ZvbnQtc2l6ZToxNHB4O2NvbG9yOnZhcigtLWMtaW5rLTMpfS5wcm9zZXtmb250LXNpemU6MTMuNXB4O2xpbmUtaGVpZ2h0OjEuNjU7Y29sb3I6dmFyKC0tYy1pbmstMik7d2hpdGUtc3BhY2U6cHJlLWxpbmV9LnByb3NlIGg0e21hcmdpbjoxNHB4IDAgNHB4O2NvbG9yOnZhcigtLWMtaW5rKTtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo2NTB9LnByb3NlIGg0OmZpcnN0LWNoaWxke21hcmdpbi10b3A6MH0uc2Vje21hcmdpbjo0cHggMCAtNnB4O2NvbG9yOnZhcigtLWMtaW5rKTtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo2ODA7bGV0dGVyLXNwYWNpbmc6LS4wMWVtfS5zZWMtbntkaXNwbGF5OmJsb2NrO21hcmdpbi10b3A6MnB4O2NvbG9yOnZhcigtLWMtaW5rLTMpO2ZvbnQtc2l6ZToxMi41cHg7Zm9udC13ZWlnaHQ6NTAwO2xldHRlci1zcGFjaW5nOjB9Lmljb3tmbGV4Om5vbmU7d2lkdGg6MTZweDtoZWlnaHQ6MTZweH0uZXJyLC53YXJubm90ZSwudW5wYWlkLC5hc2tlZCwuZ2Fwe3Bvc2l0aW9uOnJlbGF0aXZlO2JvcmRlci1yYWRpdXM6dmFyKC0tci1tZCk7cGFkZGluZzoxMnB4IDE0cHggMTJweCAxNnB4O2ZvbnQtc2l6ZToxM3B4O2xpbmUtaGVpZ2h0OjEuNTV9LmVycjpiZWZvcmUsLndhcm5ub3RlOmJlZm9yZSwudW5wYWlkOmJlZm9yZSwuYXNrZWQ6YmVmb3Jle2NvbnRlbnQ6IiI7cG9zaXRpb246YWJzb2x1dGU7aW5zZXQ6MTBweCBhdXRvIDEwcHggMDt3aWR0aDozcHg7Ym9yZGVyLXJhZGl1czowIDNweCAzcHggMDtiYWNrZ3JvdW5kOmN1cnJlbnRDb2xvcn0uZXJye2JhY2tncm91bmQ6dmFyKC0tYy1lcnJvci1zb2Z0KTtjb2xvcjp2YXIoLS1jLWVycm9yLWluayl9Lndhcm5ub3Rle2JhY2tncm91bmQ6dmFyKC0tYy13YXJuaW5nLXNvZnQpO2NvbG9yOnZhcigtLWMtd2FybmluZy1pbmspfS51bnBhaWR7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtnYXA6MnB4O2JhY2tncm91bmQ6dmFyKC0tYy1pbmZvLXNvZnQpO2NvbG9yOnZhcigtLWMtaW5rLTIpfS51bnBhaWQ6YmVmb3Jle2JhY2tncm91bmQ6dmFyKC0tYy1pbmZvKX0udW5wYWlkIGJ7Y29sb3I6dmFyKC0tYy1pbmZvLWluayk7Zm9udC13ZWlnaHQ6NjgwfS5hc2tlZHtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2dhcDo0cHg7YmFja2dyb3VuZDp2YXIoLS1jLXN1bmspO2NvbG9yOnZhcigtLWMtaW5rLTIpfS5hc2tlZDpiZWZvcmV7YmFja2dyb3VuZDp2YXIoLS1jLWxpbmUtMil9LmFza2VkIGJ7Y29sb3I6dmFyKC0tYy1pbmspO2ZvbnQtd2VpZ2h0OjY1MH0uYXNrZWQuZmxhZ3tiYWNrZ3JvdW5kOnZhcigtLWMtd2FybmluZy1zb2Z0KX0uYXNrZWQuZmxhZzpiZWZvcmV7YmFja2dyb3VuZDp2YXIoLS1jLXdhcm5pbmcpfS5hc2tlZCAuZm9vdHttYXJnaW4tdG9wOjZweH0uZGVtb3N0cmlwe2Rpc3BsYXk6ZmxleDtnYXA6MTBweDthbGlnbi1pdGVtczpjZW50ZXI7bWFyZ2luOjAgMCAxMnB4O3BhZGRpbmc6OHB4IDIwcHg7Ym9yZGVyLWJsb2NrOjFweCBzb2xpZCB2YXIoLS1jLWxpbmUpO2JhY2tncm91bmQ6dmFyKC0tYy1pbmZvLXNvZnQpO2NvbG9yOnZhcigtLWMtaW5rLTIpO2ZvbnQtc2l6ZToxMnB4O2xpbmUtaGVpZ2h0OjEuNX0uZGVtb3N0cmlwIGJ7ZmxleDpub25lO3BhZGRpbmc6MXB4IDdweDtib3JkZXItcmFkaXVzOjZweDtiYWNrZ3JvdW5kOnZhcigtLWMtaW5mbyk7Y29sb3I6I2ZmZjtmb250LXNpemU6MTBweDtmb250LXdlaWdodDo3NTA7bGV0dGVyLXNwYWNpbmc6LjA4ZW07dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlfVtkYXRhLXRoZW1lPWRhcmtdIC5kZW1vc3RyaXAgYntiYWNrZ3JvdW5kOiMyZjVmZDZ9Lmdve2Rpc3BsYXk6aW5saW5lLWZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXI7Z2FwOjhweDttaW4taGVpZ2h0OjQ0cHg7cGFkZGluZzowIDE4cHg7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1jLXByaW1hcnkpO2JvcmRlci1yYWRpdXM6dmFyKC0tci1tZCk7YmFja2dyb3VuZDp2YXIoLS1jLXByaW1hcnkpO2NvbG9yOnZhcigtLWMtb24tcHJpbWFyeSk7Zm9udDppbmhlcml0O2ZvbnQtc2l6ZToxNC41cHg7Zm9udC13ZWlnaHQ6NjUwO2xldHRlci1zcGFjaW5nOi0uMDA1ZW07bGluZS1oZWlnaHQ6MS4yO3RleHQtYWxpZ246Y2VudGVyO2N1cnNvcjpwb2ludGVyO2JveC1zaGFkb3c6MCAxcHggI2ZmZmZmZjI5IGluc2V0LDAgMXB4IDJweCAjMTAxODI4MWY7dHJhbnNpdGlvbjpiYWNrZ3JvdW5kLWNvbG9yIC4xNXMgdmFyKC0tZWFzZSksYm9yZGVyLWNvbG9yIC4xNXMgdmFyKC0tZWFzZSksdHJhbnNmb3JtIC4xcyB2YXIoLS1lYXNlKX0uZ286aG92ZXJ7YmFja2dyb3VuZDp2YXIoLS1jLXByaW1hcnktaG92ZXIpO2JvcmRlci1jb2xvcjp2YXIoLS1jLXByaW1hcnktaG92ZXIpfS5nbzphY3RpdmV7YmFja2dyb3VuZDp2YXIoLS1jLXByaW1hcnktcHJlc3MpO3RyYW5zZm9ybTp0cmFuc2xhdGVZKDFweCl9LmdvIC5pY297d2lkdGg6MThweDtoZWlnaHQ6MThweH0uZ28gLnByaWNlLWlue3BhZGRpbmctaW5saW5lLXN0YXJ0OjEwcHg7bWFyZ2luLWlubGluZS1zdGFydDoycHg7Ym9yZGVyLWlubGluZS1zdGFydDoxcHggc29saWQgcmdiKDI1NSAyNTUgMjU1IC8gMzIlKTtmb250LXZhcmlhbnQtbnVtZXJpYzp0YWJ1bGFyLW51bXN9LmdvLnNvZnR7YmFja2dyb3VuZDp2YXIoLS1jLXByaW1hcnktc29mdCk7Ym9yZGVyLWNvbG9yOnZhcigtLWMtcHJpbWFyeS1zb2Z0KTtjb2xvcjp2YXIoLS1jLXByaW1hcnktaW5rKTtib3gtc2hhZG93Om5vbmV9LmdvLnNvZnQ6aG92ZXJ7YmFja2dyb3VuZDp2YXIoLS1jLXByaW1hcnktc29mdC0yKTtib3JkZXItY29sb3I6dmFyKC0tYy1wcmltYXJ5LXNvZnQtMil9LmdvLmludmVydGVke2JhY2tncm91bmQ6dmFyKC0tYy1pbmspO2JvcmRlci1jb2xvcjp2YXIoLS1jLWluayk7Y29sb3I6dmFyKC0tYy1iZyk7Ym94LXNoYWRvdzpub25lfS5nby5pbnZlcnRlZDpob3ZlcntiYWNrZ3JvdW5kOnZhcigtLWMtaW5rLTIpO2JvcmRlci1jb2xvcjp2YXIoLS1jLWluay0yKX0uZ28ucXVpZXR7YmFja2dyb3VuZDp0cmFuc3BhcmVudDtib3JkZXItY29sb3I6dmFyKC0tYy1saW5lLTIpO2NvbG9yOnZhcigtLWMtaW5rKTtib3gtc2hhZG93Om5vbmV9LmdvLnF1aWV0OmhvdmVye2JhY2tncm91bmQ6dmFyKC0tYy1zdW5rKTtib3JkZXItY29sb3I6dmFyKC0tYy1pbmstMyl9LmdvLmRhbmdlcntiYWNrZ3JvdW5kOiNjNDJiMmI7Ym9yZGVyLWNvbG9yOiNjNDJiMmI7Y29sb3I6I2ZmZn0uZ28uZGFuZ2VyOmhvdmVye2JhY2tncm91bmQ6I2E5MjIyMjtib3JkZXItY29sb3I6I2E5MjIyMn0uZ28uYmxvY2t7d2lkdGg6MTAwJX0uZ28uYmlne21pbi1oZWlnaHQ6NTJweDtmb250LXNpemU6MTUuNXB4O2JvcmRlci1yYWRpdXM6MTRweH0uZ28uc217bWluLWhlaWdodDozNnB4O3BhZGRpbmc6MCAxNHB4O2ZvbnQtc2l6ZToxM3B4O2JvcmRlci1yYWRpdXM6MTBweH0uZm9vdHtkaXNwbGF5OmZsZXg7ZmxleC13cmFwOndyYXA7Z2FwOjhweH0uZm9vdD4uZ297ZmxleDoxIDEgYXV0b30ubGlua3l7cGFkZGluZzowO2JvcmRlcjowO2JhY2tncm91bmQ6bm9uZTtjb2xvcjp2YXIoLS1jLXByaW1hcnktaW5rKTtmb250OmluaGVyaXQ7Zm9udC13ZWlnaHQ6NjAwO3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7dGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVzczoxcHg7dGV4dC11bmRlcmxpbmUtb2Zmc2V0OjNweDtjdXJzb3I6cG9pbnRlcn0uc3RlcHtkaXNwbGF5OmlubGluZS1mbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6MnB4O3BhZGRpbmc6MnB4O2JvcmRlcjoxcHggc29saWQgdmFyKC0tYy1saW5lLTIpO2JvcmRlci1yYWRpdXM6OTk5cHg7YmFja2dyb3VuZDp2YXIoLS1jLWJnKTtjb2xvcjp2YXIoLS1jLWluayl9LnN0ZXAgYnV0dG9ue2Rpc3BsYXk6Z3JpZDtwbGFjZS1pdGVtczpjZW50ZXI7d2lkdGg6MzJweDtoZWlnaHQ6MzJweDtib3JkZXI6MDtib3JkZXItcmFkaXVzOjk5OXB4O2JhY2tncm91bmQ6dHJhbnNwYXJlbnQ7Y29sb3I6aW5oZXJpdDtmb250OmluaGVyaXQ7Zm9udC1zaXplOjE4cHg7bGluZS1oZWlnaHQ6MTtjdXJzb3I6cG9pbnRlcn0uc3RlcCBidXR0b246aG92ZXJ7YmFja2dyb3VuZDp2YXIoLS1jLXN1bmspfS5zdGVwIC5ue21pbi13aWR0aDoyMnB4O3RleHQtYWxpZ246Y2VudGVyO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjcwMH0uc3RlcC5saWdodHtiYWNrZ3JvdW5kOnZhcigtLWMtYmcpO2NvbG9yOnZhcigtLWMtaW5rKTtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWMtbGluZS0yKTtwYWRkaW5nOjJweH0uc3RlcC5saWdodCBidXR0b257d2lkdGg6MzBweDtoZWlnaHQ6MzBweH0uc3RlcC5saWdodCBidXR0b246aG92ZXJ7YmFja2dyb3VuZDp2YXIoLS1jLXN1bmspfS5hZGR7ZGlzcGxheTpncmlkO3BsYWNlLWl0ZW1zOmNlbnRlcjt3aWR0aDo0MHB4O2hlaWdodDo0MHB4O2JvcmRlcjoxcHggc29saWQgdmFyKC0tYy1saW5lLTIpO2JvcmRlci1yYWRpdXM6OTk5cHg7YmFja2dyb3VuZDp2YXIoLS1jLWJnKTtjb2xvcjp2YXIoLS1jLWluayk7Y3Vyc29yOnBvaW50ZXI7dHJhbnNpdGlvbjpiYWNrZ3JvdW5kLWNvbG9yIC4xNXMgdmFyKC0tZWFzZSksYm9yZGVyLWNvbG9yIC4xNXMgdmFyKC0tZWFzZSl9LmFkZDpob3Zlcntib3JkZXItY29sb3I6dmFyKC0tYy1wcmltYXJ5KTtjb2xvcjp2YXIoLS1jLXByaW1hcnktaW5rKTtiYWNrZ3JvdW5kOnZhcigtLWMtcHJpbWFyeS1zb2Z0KX0uZ28uYWRke3dpZHRoOmF1dG87aGVpZ2h0OmF1dG87Ym9yZGVyLXJhZGl1czp2YXIoLS1yLW1kKTtib3JkZXItY29sb3I6dmFyKC0tYy1wcmltYXJ5KTtiYWNrZ3JvdW5kOnZhcigtLWMtcHJpbWFyeSk7Y29sb3I6dmFyKC0tYy1vbi1wcmltYXJ5KX0uZ28uYWRkOmhvdmVye2JhY2tncm91bmQ6dmFyKC0tYy1wcmltYXJ5LWhvdmVyKTtjb2xvcjp2YXIoLS1jLW9uLXByaW1hcnkpfS5jaGlwcywucGxhY2Vze2Rpc3BsYXk6ZmxleDtmbGV4LXdyYXA6d3JhcDtnYXA6OHB4fS5jaGlwe2Rpc3BsYXk6aW5saW5lLWZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDo2cHg7bWluLWhlaWdodDozMHB4O3BhZGRpbmc6MCAxMnB4O2JvcmRlcjoxcHggc29saWQgdmFyKC0tYy1saW5lKTtib3JkZXItcmFkaXVzOjk5OXB4O2JhY2tncm91bmQ6dmFyKC0tYy1iZyk7Y29sb3I6dmFyKC0tYy1pbmstMik7Zm9udDppbmhlcml0O2ZvbnQtc2l6ZToxMi41cHg7Zm9udC13ZWlnaHQ6NTIwfWJ1dHRvbi5jaGlwe2N1cnNvcjpwb2ludGVyO3RyYW5zaXRpb246Ym9yZGVyLWNvbG9yIC4xNXMgdmFyKC0tZWFzZSksYmFja2dyb3VuZC1jb2xvciAuMTVzIHZhcigtLWVhc2UpfWJ1dHRvbi5jaGlwOmhvdmVye2JvcmRlci1jb2xvcjp2YXIoLS1jLXByaW1hcnkpO2NvbG9yOnZhcigtLWMtaW5rKX0uY2hpcCBzbWFsbHtjb2xvcjp2YXIoLS1jLWluay0zKTtmb250LXNpemU6MTEuNXB4O2ZvbnQtdmFyaWFudC1udW1lcmljOnRhYnVsYXItbnVtc30uY2hpcC5wbGFjZXttaW4taGVpZ2h0OjM0cHg7cGFkZGluZzowIDE0cHg7Y29sb3I6dmFyKC0tYy1pbmspO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtd2VpZ2h0OjU2MH0uY2hpcC5wbGFjZS50YWJ7Zm9udC13ZWlnaHQ6NjUwfS5jaGlwLnBsYWNlLnRhYlthcmlhLWV4cGFuZGVkPXRydWVdLC5jaGlwLnBsYWNlLnRvb2xbYXJpYS1leHBhbmRlZD10cnVlXXtib3JkZXItY29sb3I6dmFyKC0tYy1pbmspO2JhY2tncm91bmQ6dmFyKC0tYy1pbmspO2NvbG9yOnZhcigtLWMtYmcpfS5jaGlwLnBsYWNlLnRhYlthcmlhLWV4cGFuZGVkPXRydWVdIHNtYWxse2NvbG9yOmluaGVyaXQ7b3BhY2l0eTouN30uY2hpcC5wbGFjZS5ncm91cCBpbWd7aGVpZ2h0OjIwcHg7d2lkdGg6YXV0bztib3JkZXItcmFkaXVzOjVweH0uY2hpcC5zb3J0W2FyaWEtcHJlc3NlZD10cnVlXSwuY2hpcC5hc2tbYXJpYS1wcmVzc2VkPXRydWVde2JvcmRlci1jb2xvcjp2YXIoLS1jLXByaW1hcnkpO2JhY2tncm91bmQ6dmFyKC0tYy1wcmltYXJ5LXNvZnQpO2NvbG9yOnZhcigtLWMtcHJpbWFyeS1pbmspfS5jaGlwLnNvcnRbYXJpYS1wcmVzc2VkPXRydWVdIHNtYWxse2NvbG9yOmluaGVyaXR9LmNoaXAuYXNrW2FyaWEtcHJlc3NlZD10cnVlXTpiZWZvcmV7Y29udGVudDoiIjt3aWR0aDo2cHg7aGVpZ2h0OjEwcHg7bWFyZ2luOi0zcHggMnB4IDAgMDtib3JkZXI6c29saWQgY3VycmVudENvbG9yO2JvcmRlci13aWR0aDowIDJweCAycHggMDt0cmFuc2Zvcm06cm90YXRlKDQ1ZGVnKX0uYmFkZ2V7ZGlzcGxheTppbmxpbmUtZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjVweDtoZWlnaHQ6MjRweDtwYWRkaW5nOjAgOXB4O2JvcmRlci1yYWRpdXM6N3B4O2JhY2tncm91bmQ6dmFyKC0tYy1zdW5rKTtjb2xvcjp2YXIoLS1jLWluay0yKTtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo2MjA7d2hpdGUtc3BhY2U6bm93cmFwfS5iYWRnZS5nb29ke2JhY2tncm91bmQ6dmFyKC0tYy1zdWNjZXNzLXNvZnQpO2NvbG9yOnZhcigtLWMtc3VjY2Vzcy1pbmspfS5iYWRnZS53YXJue2JhY2tncm91bmQ6dmFyKC0tYy13YXJuaW5nLXNvZnQpO2NvbG9yOnZhcigtLWMtd2FybmluZy1pbmspfS5iYWRnZS5iYWR7YmFja2dyb3VuZDp2YXIoLS1jLWVycm9yLXNvZnQpO2NvbG9yOnZhcigtLWMtZXJyb3ItaW5rKX0uYmFkZ2UuaW5mb3tiYWNrZ3JvdW5kOnZhcigtLWMtaW5mby1zb2Z0KTtjb2xvcjp2YXIoLS1jLWluZm8taW5rKX0uYmFkZ2Vze2Rpc3BsYXk6ZmxleDtmbGV4LXdyYXA6d3JhcDtnYXA6NnB4fS53aGVuYmFye2Rpc3BsYXk6Z3JpZDtncmlkLXRlbXBsYXRlLWNvbHVtbnM6bWlubWF4KDAsMWZyKSBhdXRvO2dhcDoxMHB4O2FsaWduLWl0ZW1zOnN0cmV0Y2h9LndoZW4tZGF0ZXN7ZGlzcGxheTpncmlkO2dyaWQtdGVtcGxhdGUtY29sdW1uczoxZnIgYXV0byAxZnI7YWxpZ24taXRlbXM6c3RyZXRjaDtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWMtbGluZS0yKTtib3JkZXItcmFkaXVzOjE0cHg7YmFja2dyb3VuZDp2YXIoLS1jLWJnKTtvdmVyZmxvdzpoaWRkZW59LndoZW4tdGlsZXtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2FsaWduLWl0ZW1zOmZsZXgtc3RhcnQ7Z2FwOjJweDttaW4td2lkdGg6MDtwYWRkaW5nOjEwcHggMTRweDtib3JkZXI6MDtiYWNrZ3JvdW5kOnRyYW5zcGFyZW50O2NvbG9yOmluaGVyaXQ7Zm9udDppbmhlcml0O3RleHQtYWxpZ246c3RhcnQ7Y3Vyc29yOnBvaW50ZXI7dHJhbnNpdGlvbjpiYWNrZ3JvdW5kLWNvbG9yIC4xNXMgdmFyKC0tZWFzZSl9LndoZW4tdGlsZTpob3ZlcntiYWNrZ3JvdW5kOnZhcigtLWMtc3Vuayl9LndoZW4tdGlsZVthcmlhLWV4cGFuZGVkPXRydWVde2JhY2tncm91bmQ6dmFyKC0tYy1wcmltYXJ5LXNvZnQpO2JveC1zaGFkb3c6aW5zZXQgMCAtMnB4IDAgdmFyKC0tYy1wcmltYXJ5KX0ud2hlbi10aWxlOmZvY3VzLXZpc2libGV7b3V0bGluZS1vZmZzZXQ6LTNweDtib3JkZXItcmFkaXVzOjEycHh9Lndse2NvbG9yOnZhcigtLWMtaW5rLTMpO2ZvbnQtc2l6ZToxMXB4O2ZvbnQtd2VpZ2h0OjY1MDtsZXR0ZXItc3BhY2luZzouMDZlbTt0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2V9Lnd2e2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpiYXNlbGluZTtnYXA6NnB4O3doaXRlLXNwYWNlOm5vd3JhcDtjb2xvcjp2YXIoLS1jLWluayk7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6NjUwO2xldHRlci1zcGFjaW5nOi0uMDFlbX0ud3Ygc21hbGx7Y29sb3I6dmFyKC0tYy1pbmstMyk7Zm9udC1zaXplOjEyLjVweDtmb250LXdlaWdodDo1NTB9LndoZW4tc2F5e2dyaWQtY29sdW1uOjEgLyAtMTtjb2xvcjp2YXIoLS1jLWluay0yKTtmb250LXNpemU6MTNweDtmb250LXdlaWdodDo2MDB9LndoZW5iYXIucGVuZGluZyAud2hlbi1kYXRlc3tib3JkZXItc3R5bGU6ZGFzaGVkfS53aGVuYmFyLnBlbmRpbmcgLnd2e2NvbG9yOnZhcigtLWMtaW5rLTMpfS53aGVuLW57ZGlzcGxheTpncmlkO3BsYWNlLWl0ZW1zOmNlbnRlcjthbGlnbi1zZWxmOmNlbnRlcjtwYWRkaW5nOjNweCA4cHg7Ym9yZGVyLXJhZGl1czo5OTlweDtiYWNrZ3JvdW5kOnZhcigtLWMtc3Vuayk7Y29sb3I6dmFyKC0tYy1pbmstMik7Zm9udC1zaXplOjExLjVweDtmb250LXdlaWdodDo2NTA7d2hpdGUtc3BhY2U6bm93cmFwfS53aGVuLXNpZGV7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOnN0cmV0Y2g7Z2FwOjhweH0ud2hlbi1yb29tc3tkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2p1c3RpZnktY29udGVudDpjZW50ZXI7Z2FwOjRweDtwYWRkaW5nOjZweCAxMHB4IDZweCAxNHB4O2JvcmRlcjoxcHggc29saWQgdmFyKC0tYy1saW5lLTIpO2JvcmRlci1yYWRpdXM6MTRweDtiYWNrZ3JvdW5kOnZhcigtLWMtYmcpfS53aGVuLXJvb21zIC5zdGVwLmxpZ2h0e2JvcmRlcjowO3BhZGRpbmc6MDttYXJnaW4taW5saW5lLXN0YXJ0Oi02cHh9LndoZW4tc2lkZSAuZ297Ym9yZGVyLXJhZGl1czoxNHB4fS5jYWx7Z3JpZC1jb2x1bW46MSAvIC0xO3BhZGRpbmc6MTRweCAxNHB4IDEycHg7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1jLWxpbmUpO2JvcmRlci1yYWRpdXM6dmFyKC0tci1sZyk7YmFja2dyb3VuZDp2YXIoLS1jLXJhaXNlKTtib3gtc2hhZG93OnZhcigtLWMtc2hhZG93LTIpO2FuaW1hdGlvbjpyaXNlIC4xOHMgdmFyKC0tZWFzZSl9QGtleWZyYW1lcyByaXNlezAle29wYWNpdHk6MDt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtNHB4KX19LmNhbC10b3B7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjtnYXA6OHB4O21hcmdpbi1ib3R0b206OHB4fS5jYWwtc2F5e2ZvbnQtc2l6ZToxM3B4O2ZvbnQtd2VpZ2h0OjY1MDtjb2xvcjp2YXIoLS1jLWluayl9LmNhbC1zYXkgc21hbGx7ZGlzcGxheTpibG9jaztmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDA7Y29sb3I6dmFyKC0tYy1pbmstMyl9LmNhbC1uYXZ7ZGlzcGxheTpmbGV4O2dhcDo0cHh9LmNhbC1uYXYgYnV0dG9ue2Rpc3BsYXk6Z3JpZDtwbGFjZS1pdGVtczpjZW50ZXI7d2lkdGg6MzRweDtoZWlnaHQ6MzRweDtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWMtbGluZSk7Ym9yZGVyLXJhZGl1czoxMHB4O2JhY2tncm91bmQ6dmFyKC0tYy1iZyk7Y29sb3I6dmFyKC0tYy1pbmspO2N1cnNvcjpwb2ludGVyfS5jYWwtbmF2IGJ1dHRvbjpkaXNhYmxlZHtvcGFjaXR5Oi4zNTtjdXJzb3I6ZGVmYXVsdH0uY2FsLW5hdiBidXR0b246aG92ZXI6bm90KDpkaXNhYmxlZCl7YmFja2dyb3VuZDp2YXIoLS1jLXN1bmspfS5jYWwtbW9udGhze2Rpc3BsYXk6Z3JpZDtncmlkLXRlbXBsYXRlLWNvbHVtbnM6MWZyO2dhcDoyMHB4fS5jYWwtbW9udGgrLmNhbC1tb250aHtkaXNwbGF5Om5vbmV9LmNhbC1tdHttYXJnaW46MCAwIDZweCA0cHg7Zm9udC1zaXplOjEzLjVweDtmb250LXdlaWdodDo2ODB9LmNhbC1ncmlke2Rpc3BsYXk6Z3JpZDtncmlkLXRlbXBsYXRlLWNvbHVtbnM6cmVwZWF0KDcsbWlubWF4KDAsMWZyKSk7cm93LWdhcDoycHh9LmNhbC1kb3d7cGFkZGluZzo0cHggMCA2cHg7dGV4dC1hbGlnbjpjZW50ZXI7Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NjUwO2NvbG9yOnZhcigtLWMtaW5rLTMpfS5jZHtwb3NpdGlvbjpyZWxhdGl2ZTttaW4td2lkdGg6MDtoZWlnaHQ6NDBweDtwYWRkaW5nOjA7Ym9yZGVyOjA7YmFja2dyb3VuZDp0cmFuc3BhcmVudDtjb2xvcjp2YXIoLS1jLWluayk7Zm9udDppbmhlcml0O2ZvbnQtc2l6ZToxMy41cHg7Zm9udC13ZWlnaHQ6NTYwO2N1cnNvcjpwb2ludGVyfS5jZD5zcGFue3Bvc2l0aW9uOnJlbGF0aXZlO3otaW5kZXg6MTtkaXNwbGF5OmdyaWQ7cGxhY2UtaXRlbXM6Y2VudGVyO3dpZHRoOm1pbigzOHB4LDEwMCUpO2hlaWdodDozOHB4O21hcmdpbjoxcHggYXV0bztib3JkZXItcmFkaXVzOjk5OXB4O3RyYW5zaXRpb246YmFja2dyb3VuZC1jb2xvciAuMTJzIHZhcigtLWVhc2UpfS5jZDpob3Zlcjpub3QoOmRpc2FibGVkKT5zcGFue2JhY2tncm91bmQ6dmFyKC0tYy1zdW5rKTtib3gtc2hhZG93Omluc2V0IDAgMCAwIDFweCB2YXIoLS1jLWxpbmUtMil9LmNkOmRpc2FibGVke2NvbG9yOnZhcigtLWMtaW5rLTMpO29wYWNpdHk6LjQ1O2N1cnNvcjpkZWZhdWx0fS5jZC50b2RheT5zcGFuOmFmdGVye2NvbnRlbnQ6IiI7cG9zaXRpb246YWJzb2x1dGU7Ym90dG9tOjVweDtsZWZ0OjUwJTt3aWR0aDo0cHg7aGVpZ2h0OjRweDttYXJnaW4tbGVmdDotMnB4O2JvcmRlci1yYWRpdXM6OTk5cHg7YmFja2dyb3VuZDpjdXJyZW50Q29sb3J9LmNkLmJldHdlZW46YmVmb3JlLC5jZC5pbi5oYXMtb3V0OmJlZm9yZSwuY2Qub3V0OmJlZm9yZXtjb250ZW50OiIiO3Bvc2l0aW9uOmFic29sdXRlO2luc2V0OjFweCAwO2JhY2tncm91bmQ6dmFyKC0tYy1wcmltYXJ5LXNvZnQpfS5jZC5vdXQ6YmVmb3Jle3JpZ2h0OjUwJX0uY2QuaW4+c3BhbiwuY2Qub3V0PnNwYW57YmFja2dyb3VuZDp2YXIoLS1jLXByaW1hcnkpO2NvbG9yOnZhcigtLWMtb24tcHJpbWFyeSk7Zm9udC13ZWlnaHQ6NzAwfS5jZC5pbjpob3Zlcj5zcGFuLC5jZC5vdXQ6aG92ZXI+c3BhbntiYWNrZ3JvdW5kOnZhcigtLWMtcHJpbWFyeS1ob3Zlcik7Ym94LXNoYWRvdzpub25lfS5jZC5yZWFjaDpiZWZvcmUsLmNkLnJlYWNoLWVuZDpiZWZvcmV7Y29udGVudDoiIjtwb3NpdGlvbjphYnNvbHV0ZTtpbnNldDoxcHggMDtiYWNrZ3JvdW5kOnZhcigtLWMtcHJpbWFyeS1zb2Z0KX0uY2QucmVhY2gtZW5kOmJlZm9yZXtyaWdodDo1MCV9LmNkLnJlYWNoLWVuZD5zcGFue2JveC1zaGFkb3c6aW5zZXQgMCAwIDAgMS41cHggdmFyKC0tYy1wcmltYXJ5KX0uY2QuaGFzLXA+c3BhbjpiZWZvcmV7Y29udGVudDoiIjtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6NHB4O3JpZ2h0OjZweDt3aWR0aDo1cHg7aGVpZ2h0OjVweDtib3JkZXItcmFkaXVzOjk5OXB4O2JhY2tncm91bmQ6dmFyKC0tYy1saW5lLTIpfS5jZC5iZXN0PnNwYW46YmVmb3Jle2JhY2tncm91bmQ6dmFyKC0tYy1zdWNjZXNzKX0uY2FsLWJlc3R7Y29sb3I6dmFyKC0tYy1zdWNjZXNzLWluayk7Zm9udC13ZWlnaHQ6NjUwfS5jYWwtYmVzdDpiZWZvcmV7Y29udGVudDoiIjtkaXNwbGF5OmlubGluZS1ibG9jazt3aWR0aDo3cHg7aGVpZ2h0OjdweDttYXJnaW4taW5saW5lLWVuZDo2cHg7Ym9yZGVyLXJhZGl1czo5OTlweDtiYWNrZ3JvdW5kOnZhcigtLWMtc3VjY2Vzcyl9LmNkLmJsYW5re3BvaW50ZXItZXZlbnRzOm5vbmV9LmNhbC1mb290e2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47Z2FwOjEwcHg7bWFyZ2luLXRvcDoxMHB4O3BhZGRpbmctdG9wOjEwcHg7Ym9yZGVyLXRvcDoxcHggc29saWQgdmFyKC0tYy1saW5lKTtmb250LXNpemU6MTIuNXB4O2NvbG9yOnZhcigtLWMtaW5rLTMpfS5mbGV4LWRhdGVze3Bvc2l0aW9uOnJlbGF0aXZlO2Rpc3BsYXk6Z3JpZDtncmlkLWF1dG8tZmxvdzpjb2x1bW47Z3JpZC1hdXRvLWNvbHVtbnM6bWlubWF4KDEwOHB4LDFmcik7Z2FwOjZweDtvdmVyZmxvdy14OmF1dG87c2Nyb2xsYmFyLXdpZHRoOm5vbmU7c2Nyb2xsLXNuYXAtdHlwZTp4IHByb3hpbWl0eTtwYWRkaW5nOjJweDttYXJnaW46LTJweDttYXNrLWltYWdlOmxpbmVhci1ncmFkaWVudCg5MGRlZywjMDAwIGNhbGMoMTAwJSAtIDI4cHgpLHRyYW5zcGFyZW50KX0uZmxleC1kYXRlcy5hdC1lbmR7bWFzay1pbWFnZTpub25lfS5mZHtzY3JvbGwtc25hcC1hbGlnbjpjZW50ZXJ9LmZsZXgtZGF0ZXM6Oi13ZWJraXQtc2Nyb2xsYmFye2Rpc3BsYXk6bm9uZX0uZmR7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjthbGlnbi1pdGVtczpmbGV4LXN0YXJ0O2dhcDoycHg7cGFkZGluZzo5cHggMTFweDtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWMtbGluZSk7Ym9yZGVyLXJhZGl1czoxMnB4O2JhY2tncm91bmQ6dmFyKC0tYy1iZyk7Y29sb3I6dmFyKC0tYy1pbmspO2ZvbnQ6aW5oZXJpdDt0ZXh0LWFsaWduOnN0YXJ0O2N1cnNvcjpwb2ludGVyO3RyYW5zaXRpb246Ym9yZGVyLWNvbG9yIC4xNXMgdmFyKC0tZWFzZSksYmFja2dyb3VuZC1jb2xvciAuMTVzIHZhcigtLWVhc2UpfS5mZDpob3Zlcntib3JkZXItY29sb3I6dmFyKC0tYy1wcmltYXJ5KX0uZmQtZGF5e2NvbG9yOnZhcigtLWMtaW5rLTMpO2ZvbnQtc2l6ZToxMS41cHg7Zm9udC13ZWlnaHQ6NjAwO3doaXRlLXNwYWNlOm5vd3JhcH0uZmQtcHJpY2V7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NzAwO3doaXRlLXNwYWNlOm5vd3JhcH0uZmQub257Ym9yZGVyLWNvbG9yOnZhcigtLWMtcHJpbWFyeSk7YmFja2dyb3VuZDp2YXIoLS1jLXByaW1hcnktc29mdCk7Ym94LXNoYWRvdzppbnNldCAwIDAgMCAxcHggdmFyKC0tYy1wcmltYXJ5KX0uZmQub24gLmZkLWRheXtjb2xvcjp2YXIoLS1jLXByaW1hcnktaW5rKX0uZmQuYmVzdCAuZmQtcHJpY2V7Y29sb3I6dmFyKC0tYy1zdWNjZXNzLWluayl9LmZkLmJlc3QgLmZkLWRheTphZnRlcntjb250ZW50OiIgwrcgTG93ZXN0Ijtjb2xvcjp2YXIoLS1jLXN1Y2Nlc3MtaW5rKTtmb250LXdlaWdodDo3MDB9LmZkLm91dHtiYWNrZ3JvdW5kOnZhcigtLWMtc3Vuayk7Ym9yZGVyLXN0eWxlOmRhc2hlZH0uZmQub3V0IC5mZC1wcmljZXtjb2xvcjp2YXIoLS1jLWluay0zKTtmb250LXdlaWdodDo2MDB9LmhlbGxve2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47Z2FwOjRweH0uaGVsbG8gLmgtbmFtZXtmb250LXNpemU6MjRweH0uc2VhcmNoe2Rpc3BsYXk6Z3JpZDtnYXA6MTBweDtwYWRkaW5nOjEycHg7Ym9yZGVyLXJhZGl1czoxOHB4O2JhY2tncm91bmQ6dmFyKC0tYy1zdW5rKX0uc2VhcmNoIC53aGVyZXtwb3NpdGlvbjpyZWxhdGl2ZTtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDoxMHB4O3BhZGRpbmc6MCAxNHB4O21pbi1oZWlnaHQ6NTJweDtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWMtbGluZS0yKTtib3JkZXItcmFkaXVzOjE0cHg7YmFja2dyb3VuZDp2YXIoLS1jLWJnKTtjb2xvcjp2YXIoLS1jLWluay0zKTtmb250LXNpemU6MH0uc2VhcmNoIC53aGVyZTpmb2N1cy13aXRoaW57Ym9yZGVyLWNvbG9yOnZhcigtLWMtcHJpbWFyeSk7Ym94LXNoYWRvdzowIDAgMCAzcHggdmFyKC0tYy1wcmltYXJ5LXNvZnQpfS5zZWFyY2ggLndoZXJlIC5pY297d2lkdGg6MThweDtoZWlnaHQ6MThweH0uc2VhcmNoIC53aGVyZSBpbnB1dHtmbGV4OjE7bWluLXdpZHRoOjA7aGVpZ2h0OjUwcHg7Ym9yZGVyOjA7b3V0bGluZTowO2JhY2tncm91bmQ6dHJhbnNwYXJlbnQ7Y29sb3I6dmFyKC0tYy1pbmspO2ZvbnQ6aW5oZXJpdDtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo1NTB9LnNlYXJjaCAud2hlcmUgaW5wdXQ6OnBsYWNlaG9sZGVye2NvbG9yOnZhcigtLWMtaW5rLTMpO2ZvbnQtd2VpZ2h0OjQ1MH0uc2VhcmNoIC53aGVuLWRhdGVzLC5zZWFyY2ggLndoZW4tcm9vbXN7Ym9yZGVyLWNvbG9yOnZhcigtLWMtbGluZS0yKX0ucmVnaW9ue2Rpc3BsYXk6Z3JpZDtnYXA6MTBweH0uY291bnRyeW5hbWV7Y29sb3I6dmFyKC0tYy1pbmstMyk7Zm9udC1zaXplOjExLjVweDtmb250LXdlaWdodDo3MDA7bGV0dGVyLXNwYWNpbmc6LjA3ZW07dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlfS5jb3VudHJ5bmFtZSBzbWFsbHtmb250LXdlaWdodDo1MDA7bGV0dGVyLXNwYWNpbmc6MDt0ZXh0LXRyYW5zZm9ybTpub25lfS5kZXN0e2Rpc3BsYXk6Z3JpZDtnYXA6OHB4O3BhZGRpbmc6MTBweCAwIDEycHg7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgdmFyKC0tYy1saW5lKX0uZGVzdDpsYXN0LWNoaWxke2JvcmRlci1ib3R0b206MH0uZGVzdC1jb3VudHJ5e2p1c3RpZnktc2VsZjpzdGFydDtwYWRkaW5nOjA7Ym9yZGVyOjA7YmFja2dyb3VuZDpub25lO2NvbG9yOnZhcigtLWMtaW5rKTtmb250OmluaGVyaXQ7Zm9udC1zaXplOjE0LjVweDtmb250LXdlaWdodDo2NTA7dGV4dC1hbGlnbjpzdGFydDtjdXJzb3I6cG9pbnRlcn0uZGVzdC1jb3VudHJ5IHNtYWxse2NvbG9yOnZhcigtLWMtaW5rLTMpO2ZvbnQtd2VpZ2h0OjUwMH0uZGVzdC1jb3VudHJ5OmhvdmVye2NvbG9yOnZhcigtLWMtcHJpbWFyeS1pbmspfS50b29sYmFye2dhcDo4cHh9LmNoaXAucGxhY2UudG9vbHtnYXA6N3B4O2ZvbnQtd2VpZ2h0OjYyMH0uY2hpcC5wbGFjZS50b29sIC5pY297d2lkdGg6MTVweDtoZWlnaHQ6MTVweDtvcGFjaXR5Oi44fS5maWx0ZXItcGFuZWx7ZGlzcGxheTpncmlkO2dhcDoxMnB4O3BhZGRpbmc6MTRweDtib3JkZXItcmFkaXVzOnZhcigtLXItbGcpO2JhY2tncm91bmQ6dmFyKC0tYy1zdW5rKX0uZmdyb3Vwe2Rpc3BsYXk6ZmxleDtmbGV4LXdyYXA6d3JhcDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjhweH0uc29ydHMta3ttaW4td2lkdGg6NTJweDtjb2xvcjp2YXIoLS1jLWluay0zKTtmb250LXNpemU6MTFweDtmb250LXdlaWdodDo3MDA7bGV0dGVyLXNwYWNpbmc6LjA2ZW07dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlfS5jaXR5Z3JvdXB7ZGlzcGxheTpncmlkO2dhcDoxMHB4fS5jaXR5Z3JvdXArLmNpdHlncm91cHttYXJnaW4tdG9wOjhweH0uY2l0eW5hbWV7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmJhc2VsaW5lO2dhcDo2cHg7Y29sb3I6dmFyKC0tYy1pbmspO2ZvbnQtc2l6ZToxNXB4O2ZvbnQtd2VpZ2h0OjcwMDtsZXR0ZXItc3BhY2luZzotLjAxZW19LmNpdHluYW1lIHNtYWxse2NvbG9yOnZhcigtLWMtaW5rLTMpO2ZvbnQtc2l6ZToxMi41cHg7Zm9udC13ZWlnaHQ6NTAwfS50aWxlc3tkaXNwbGF5OmdyaWQ7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOnJlcGVhdChhdXRvLWZpbGwsbWlubWF4KDIyMHB4LDFmcikpO2dhcDoxNHB4fS50aWxle2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47cGFkZGluZzowO2JvcmRlcjoxcHggc29saWQgdmFyKC0tYy1saW5lKTtib3JkZXItcmFkaXVzOnZhcigtLXItbGcpO292ZXJmbG93OmhpZGRlbjtiYWNrZ3JvdW5kOnZhcigtLWMtcmFpc2UpO2NvbG9yOmluaGVyaXQ7Zm9udDppbmhlcml0O3RleHQtYWxpZ246c3RhcnQ7Y3Vyc29yOnBvaW50ZXI7dHJhbnNpdGlvbjpib3JkZXItY29sb3IgLjE4cyB2YXIoLS1lYXNlKSxib3gtc2hhZG93IC4xOHMgdmFyKC0tZWFzZSksdHJhbnNmb3JtIC4xOHMgdmFyKC0tZWFzZSl9LnRpbGU6aG92ZXJ7Ym9yZGVyLWNvbG9yOnZhcigtLWMtbGluZS0yKTtib3gtc2hhZG93OnZhcigtLWMtc2hhZG93LTIpO3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xcHgpfS50aWxlOmhvdmVyIC50LXNob3QgaW1ne3RyYW5zZm9ybTpzY2FsZSgxLjAzKX0udC1zaG90e3Bvc2l0aW9uOnJlbGF0aXZlO2Rpc3BsYXk6Z3JpZDtwbGFjZS1pdGVtczpjZW50ZXI7YXNwZWN0LXJhdGlvOjQgLyAzO292ZXJmbG93OmhpZGRlbjtiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCgxNDBkZWcsdmFyKC0tc2hvdC1hKSx2YXIoLS1zaG90LWIpKTtjb2xvcjojZmZmfS50LXNob3QgaW1nLC5oZXJvIGltZywudGh1bWIgaW1nLC5yb29tLXNob3QgaW1ne3Bvc2l0aW9uOmFic29sdXRlO2luc2V0OjA7ei1pbmRleDoxO3dpZHRoOjEwMCU7aGVpZ2h0OjEwMCU7b2JqZWN0LWZpdDpjb3Zlcjt0cmFuc2l0aW9uOnRyYW5zZm9ybSAuNXMgdmFyKC0tZWFzZSl9LnQtbWFya3twb3NpdGlvbjpyZWxhdGl2ZTt6LWluZGV4OjA7Zm9udC1mYW1pbHk6dmFyKC0tZi1kaXNwbGF5KTtmb250LXNpemU6MzBweDtmb250LXdlaWdodDo2MDA7bGV0dGVyLXNwYWNpbmc6LjA0ZW07b3BhY2l0eTouOX0udC1icmFuZHtwb3NpdGlvbjphYnNvbHV0ZTtpbnNldC1ibG9jay1zdGFydDoxMHB4O2luc2V0LWlubGluZS1zdGFydDoxMHB4O3otaW5kZXg6MjtwYWRkaW5nOjNweCA5cHg7Ym9yZGVyLXJhZGl1czo5OTlweDtiYWNrZ3JvdW5kOiMwYTBlMTg5NDtjb2xvcjojZmZmO2ZvbnQtc2l6ZToxMXB4O2ZvbnQtd2VpZ2h0OjY1MDtsZXR0ZXItc3BhY2luZzouMDJlbTtiYWNrZHJvcC1maWx0ZXI6Ymx1cig2cHgpfS50LWJvZHl7ZGlzcGxheTpmbGV4O2ZsZXg6MTtmbGV4LWRpcmVjdGlvbjpjb2x1bW47Z2FwOjNweDtwYWRkaW5nOjEycHggMTRweCAxNHB4fS50LW5hbWV7dGV4dC13cmFwOnByZXR0eTtkaXNwbGF5Oi13ZWJraXQtYm94O292ZXJmbG93OmhpZGRlbjstd2Via2l0LWJveC1vcmllbnQ6dmVydGljYWw7LXdlYmtpdC1saW5lLWNsYW1wOjI7bGluZS1jbGFtcDoyO2ZvbnQtc2l6ZToxNXB4O2ZvbnQtd2VpZ2h0OjY1MDtsaW5lLWhlaWdodDoxLjM7bGV0dGVyLXNwYWNpbmc6LS4wMWVtfS50LXdoZXJlOmVtcHR5e2Rpc3BsYXk6bm9uZX0udC1tZXRhe2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjhweDttaW4td2lkdGg6MH0udC1tZXRhIC5yYXRle21hcmdpbi1pbmxpbmUtc3RhcnQ6YXV0b30udC13aGVyZXttaW4td2lkdGg6MDtvdmVyZmxvdzpoaWRkZW47Y29sb3I6dmFyKC0tYy1pbmstMyk7Zm9udC1zaXplOjEyLjVweDt3aGl0ZS1zcGFjZTpub3dyYXA7dGV4dC1vdmVyZmxvdzplbGxpcHNpc30udC1mb290e2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpmbGV4LWVuZDtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjtnYXA6OHB4O21hcmdpbi10b3A6YXV0bztwYWRkaW5nLXRvcDoxMHB4fS50LWZyb217ZGlzcGxheTpibG9jaztjb2xvcjp2YXIoLS1jLWluayk7Zm9udC1zaXplOjE4cHg7Zm9udC13ZWlnaHQ6NzUwO2xpbmUtaGVpZ2h0OjEuMTU7bGV0dGVyLXNwYWNpbmc6LS4wMWVtfS50LWZyb20gc21hbGwsLnQtc3Vie2Rpc3BsYXk6YmxvY2s7Y29sb3I6dmFyKC0tYy1pbmstMyk7Zm9udC1zaXplOjExLjVweDtmb250LXdlaWdodDo1MDA7bGV0dGVyLXNwYWNpbmc6MH0udC1mcm9tIC50LXByZXtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1NTA7Y29sb3I6dmFyKC0tYy1pbmstMyl9LnQtZnJvbS50LW5vbmV7Y29sb3I6dmFyKC0tYy1pbmstMyk7Zm9udC1zaXplOjEzcHg7Zm9udC13ZWlnaHQ6NjAwfS5yYXRle2Rpc3BsYXk6aW5saW5lLWZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDo0cHg7Y29sb3I6dmFyKC0tYy1pbmspO2ZvbnQtc2l6ZToxMi41cHg7Zm9udC13ZWlnaHQ6NjUwO3doaXRlLXNwYWNlOm5vd3JhcH0ucmF0ZSBzdmd7Y29sb3I6dmFyKC0tYy1pbmspfS5yYXRlIC50LWZyb217ZGlzcGxheTppbmxpbmV9LnJhdGUgc21hbGx7Y29sb3I6dmFyKC0tYy1pbmstMyk7Zm9udC13ZWlnaHQ6NTAwfS50LXRhZ3N7ZGlzcGxheTpmbGV4O2ZsZXgtd3JhcDp3cmFwO2dhcDo2cHg7bWFyZ2luLXRvcDo4cHh9LnQtdGFncyAucGVya3tmb250LXNpemU6MTJweH0udGlsZS5vdmVye29wYWNpdHk6LjkyfS5oZXJve3Bvc2l0aW9uOnJlbGF0aXZlO2Rpc3BsYXk6Z3JpZDtwbGFjZS1pdGVtczpjZW50ZXI7bWFyZ2luOi00cHggLTIwcHggMDthc3BlY3QtcmF0aW86MTYgLyA4O292ZXJmbG93OmhpZGRlbjtiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCgxNDBkZWcsdmFyKC0tc2hvdC1hKSx2YXIoLS1zaG90LWIpKTtjb2xvcjojZmZmfS5oZXJvIGltZ3tvYmplY3QtcG9zaXRpb246Y2VudGVyIDU4JX0uaGVybzphZnRlcntjb250ZW50OiIiO3Bvc2l0aW9uOmFic29sdXRlO2luc2V0OjA7ei1pbmRleDoxO2JhY2tncm91bmQ6dmFyKC0tYy1zY3JpbSl9Lmhlcm8gLnQtbWFya3tmb250LXNpemU6NDRweH0uaGVyby10eHR7cG9zaXRpb246YWJzb2x1dGU7aW5zZXQ6YXV0byAwIDA7ei1pbmRleDoyO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47Z2FwOjZweDtwYWRkaW5nOjAgMjBweCAxOHB4O2NvbG9yOiNmZmZ9Lmhlcm8tdHh0IC50LWJyYW5ke3Bvc2l0aW9uOnN0YXRpYzthbGlnbi1zZWxmOmZsZXgtc3RhcnR9LmhvdGVsLW5hbWV7bWFyZ2luOjA7aHlwaGVuczpub25lO2ZvbnQtZmFtaWx5OnZhcigtLWYtZGlzcGxheSk7Zm9udC1zaXplOjI4cHg7Zm9udC13ZWlnaHQ6NjAwO2xpbmUtaGVpZ2h0OjEuMTtsZXR0ZXItc3BhY2luZzotLjAxZW07dGV4dC13cmFwOmJhbGFuY2U7dGV4dC1zaGFkb3c6MCAxcHggMThweCByZ2IoMCAwIDAgLyAzMCUpfS5oZXJvLXdoZXJle2Rpc3BsYXk6ZmxleDtmbGV4LXdyYXA6d3JhcDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjRweCAxMHB4O2NvbG9yOiNmZmZmZmZlNTtmb250LXNpemU6MTNweDtmb250LXdlaWdodDo1NTB9Lmhlcm8td2hlcmUgLnJhdGV7Y29sb3I6I2ZmZn0uaGVyby13aGVyZSAucmF0ZSBzdmd7Y29sb3I6I2ZmZDI3YX0uaGVyby13aGVyZSAucmF0ZSBzbWFsbHtjb2xvcjojZmZmZmZmYzc7Zm9udC13ZWlnaHQ6NTAwfS5hbWVue2Rpc3BsYXk6ZmxleDtmbGV4LXdyYXA6d3JhcDtnYXA6NnB4IDE2cHg7bWFyZ2luOjA7cGFkZGluZzowO2xpc3Qtc3R5bGU6bm9uZTtjb2xvcjp2YXIoLS1jLWluay0yKTtmb250LXNpemU6MTNweH0uYW1lbiBsaXtkaXNwbGF5OmlubGluZS1mbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6N3B4fS5hbWVuIGxpOmJlZm9yZXtjb250ZW50OiIiO3dpZHRoOjVweDtoZWlnaHQ6NXB4O2JvcmRlci1yYWRpdXM6OTk5cHg7YmFja2dyb3VuZDp2YXIoLS1jLXByaW1hcnkpO29wYWNpdHk6Ljd9LnJvb21ze2Rpc3BsYXk6Z3JpZDtnYXA6MTJweH0ucm9vbXtkaXNwbGF5OmdyaWQ7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjExNnB4IDFmcjtncmlkLXRlbXBsYXRlLWFyZWFzOiJzaG90IG1haW4iICJidXkgYnV5IjtnYXA6MTJweCAxNHB4O3BhZGRpbmc6MTJweDtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWMtbGluZSk7Ym9yZGVyLXJhZGl1czp2YXIoLS1yLWxnKTtiYWNrZ3JvdW5kOnZhcigtLWMtcmFpc2UpO3RyYW5zaXRpb246Ym9yZGVyLWNvbG9yIC4xOHMgdmFyKC0tZWFzZSksYm94LXNoYWRvdyAuMThzIHZhcigtLWVhc2UpfS5yb29tOmhvdmVye2JvcmRlci1jb2xvcjp2YXIoLS1jLWxpbmUtMil9LnJvb20uaGVsZHtib3JkZXItY29sb3I6dmFyKC0tYy1wcmltYXJ5KTtib3gtc2hhZG93OjAgMCAwIDFweCB2YXIoLS1jLXByaW1hcnkpfS5yb29tLXNob3R7Z3JpZC1hcmVhOnNob3Q7cG9zaXRpb246cmVsYXRpdmU7ZGlzcGxheTpncmlkO3BsYWNlLWl0ZW1zOmNlbnRlcjthc3BlY3QtcmF0aW86MTtvdmVyZmxvdzpoaWRkZW47Ym9yZGVyLXJhZGl1czoxMnB4O2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KDE0MGRlZyx2YXIoLS1zaG90LWEpLHZhcigtLXNob3QtYikpO2NvbG9yOiNmZmY7Zm9udC1mYW1pbHk6dmFyKC0tZi1kaXNwbGF5KTtmb250LXNpemU6MjJweH0ucm9vbS1tYWlue2dyaWQtYXJlYTptYWluO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47Z2FwOjZweDttaW4td2lkdGg6MH0ucm9vbS1uYW1le21hcmdpbjowO2ZvbnQtc2l6ZToxNnB4O2ZvbnQtd2VpZ2h0OjY4MDtsaW5lLWhlaWdodDoxLjM7bGV0dGVyLXNwYWNpbmc6LS4wMWVtfS5mYWN0c3tkaXNwbGF5OmZsZXg7ZmxleC13cmFwOndyYXA7Z2FwOjJweCAxMnB4O21hcmdpbjowO3BhZGRpbmc6MDtsaXN0LXN0eWxlOm5vbmU7Y29sb3I6dmFyKC0tYy1pbmstMyk7Zm9udC1zaXplOjEyLjVweH0uZmFjdHMgbGl7ZGlzcGxheTppbmxpbmUtZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjVweH0uZmFjdHMgLmljb3t3aWR0aDoxNHB4O2hlaWdodDoxNHB4O29wYWNpdHk6Ljg1fS5wZXJrc3tkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2dhcDo0cHg7bWFyZ2luOjJweCAwIDA7cGFkZGluZzowO2xpc3Qtc3R5bGU6bm9uZX0ucGVya3tkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6ZmxleC1zdGFydDtnYXA6N3B4O2NvbG9yOnZhcigtLWMtaW5rLTIpO2ZvbnQtc2l6ZToxM3B4O2xpbmUtaGVpZ2h0OjEuMzV9LnBlcmsgLmljb3ttYXJnaW4tdG9wOjFweDtjb2xvcjp2YXIoLS1jLWluayl9LnBlcmsgYntjb2xvcjp2YXIoLS1jLWluayk7Zm9udC13ZWlnaHQ6NjUwfS5wZXJrLndhcm4sLnBlcmsud2FybiAuaWNvLC5wZXJrLndhcm4gYntjb2xvcjp2YXIoLS1jLXdhcm5pbmctaW5rKX0ucGVyay5zYXZlLC5wZXJrLnNhdmUgLmljbywucGVyay5zYXZlIGJ7Y29sb3I6dmFyKC0tYy1zdWNjZXNzLWluayl9LnJvb20tYnV5e2dyaWQtYXJlYTpidXk7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjtnYXA6MTJweDtwYWRkaW5nLXRvcDoxMnB4O2JvcmRlci10b3A6MXB4IHNvbGlkIHZhcigtLWMtbGluZSl9LnJvb20tYnV5IC5wcmljZXtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2dhcDoxcHg7bWluLXdpZHRoOjB9LnJvb20tYnV5IC5hY3Rpb257ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6OHB4fS5wLXRvdGFse2NvbG9yOnZhcigtLWMtaW5rKTtmb250LXNpemU6MjBweDtmb250LXdlaWdodDo3NTA7bGluZS1oZWlnaHQ6MS4xNTtsZXR0ZXItc3BhY2luZzotLjAxNWVtfS5wLXVuaXR7Y29sb3I6dmFyKC0tYy1pbmstMik7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTUwfS5wLW5pZ2h0e2NvbG9yOnZhcigtLWMtaW5rLTMpO2ZvbnQtc2l6ZToxMnB4fS5wLXdhc3tjb2xvcjp2YXIoLS1jLWluay0zKTtmb250LXNpemU6MTIuNXB4O3RleHQtZGVjb3JhdGlvbjpsaW5lLXRocm91Z2h9LnAtbWVtYmVye2FsaWduLXNlbGY6ZmxleC1zdGFydDttYXJnaW4tdG9wOjNweDtwYWRkaW5nOjFweCA3cHg7Ym9yZGVyLXJhZGl1czo2cHg7YmFja2dyb3VuZDp2YXIoLS1jLXN1Y2Nlc3Mtc29mdCk7Y29sb3I6dmFyKC0tYy1zdWNjZXNzLWluayk7Zm9udC1zaXplOjExLjVweDtmb250LXdlaWdodDo3MDB9LmxlZnR7YWxpZ24tc2VsZjpmbGV4LXN0YXJ0fS5ydHlwZSAucm9vbS1zaG90LC5ydHlwZSAucm9vbS1tYWluLC5ydHlwZSAucm9vbS1idXl7Z3JpZC1hcmVhOmF1dG99LnJ0eXBle292ZXJmbG93OmhpZGRlbjtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWMtbGluZSk7Ym9yZGVyLXJhZGl1czp2YXIoLS1yLWxnKTtiYWNrZ3JvdW5kOnZhcigtLWMtcmFpc2UpfS5ydHlwZS5oZWxke2JvcmRlci1jb2xvcjp2YXIoLS1jLXByaW1hcnkpfS5ydHlwZS1oZWFke2Rpc3BsYXk6Z3JpZDtncmlkLXRlbXBsYXRlLWNvbHVtbnM6OTZweCBtaW5tYXgoMCwxZnIpO2dhcDoxMnB4O3BhZGRpbmc6MTJweH0ucnR5cGUtaGVhZCAucm9vbS1zaG90e3dpZHRoOjEwMCU7bWluLWhlaWdodDowO2FzcGVjdC1yYXRpbzoxO2FsaWduLXNlbGY6c3RhcnR9LnJ0eXBlLW57Y29sb3I6dmFyKC0tYy1pbmstMyk7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NjAwfS5yYXRlc3tkaXNwbGF5OmdyaWR9LnJyYXRle2Rpc3BsYXk6Z3JpZDtnYXA6MTBweDtwYWRkaW5nOjEycHggMTRweCAxNHB4O2JvcmRlci10b3A6MXB4IHNvbGlkIHZhcigtLWMtbGluZSl9LnJyYXRlLmhlbGR7YmFja2dyb3VuZDp2YXIoLS1jLXByaW1hcnktc29mdCl9LnJhdGUtbWFpbntkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2dhcDo2cHg7bWluLXdpZHRoOjB9LnJhdGUtbmFtZXtmb250LXNpemU6MTQuNXB4O2ZvbnQtd2VpZ2h0OjY1MDtsaW5lLWhlaWdodDoxLjN9LnJyYXRlIC5yb29tLWJ1eXtwYWRkaW5nLXRvcDowO2JvcmRlci10b3A6MH0uc2Vne2Rpc3BsYXk6Z3JpZDtncmlkLXRlbXBsYXRlLWNvbHVtbnM6MWZyIDFmcjtnYXA6NHB4O3BhZGRpbmc6NHB4O2JvcmRlci1yYWRpdXM6MTRweDtiYWNrZ3JvdW5kOnZhcigtLWMtc3Vuayl9LnNlZy1ie2Rpc3BsYXk6aW5saW5lLWZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXI7Z2FwOjdweDttaW4taGVpZ2h0OjQwcHg7Ym9yZGVyOjA7Ym9yZGVyLXJhZGl1czoxMHB4O2JhY2tncm91bmQ6dHJhbnNwYXJlbnQ7Y29sb3I6dmFyKC0tYy1pbmstMik7Zm9udDppbmhlcml0O2ZvbnQtc2l6ZToxMy41cHg7Zm9udC13ZWlnaHQ6NjIwO2N1cnNvcjpwb2ludGVyfS5zZWctYlthcmlhLXByZXNzZWQ9dHJ1ZV17YmFja2dyb3VuZDp2YXIoLS1jLWJnKTtjb2xvcjp2YXIoLS1jLWluayk7Ym94LXNoYWRvdzp2YXIoLS1jLXNoYWRvdyl9LnN0YXJ0c3tkaXNwbGF5OmdyaWQ7Z2FwOjhweDttYXJnaW4tdG9wOjRweH0uc3RhcnRzIC5jaGlwe21pbi1oZWlnaHQ6MzRweDtmb250LXZhcmlhbnQtbnVtZXJpYzp0YWJ1bGFyLW51bXN9Lmdvb2QtdG8ta25vdywucm93c3tkaXNwbGF5OmdyaWQ7Z2FwOjEwcHh9LnJvd3tkaXNwbGF5OmdyaWQ7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOm1pbm1heCgwLDFmcikgYXV0byBhdXRvO2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6MTJweDtwYWRkaW5nOjE0cHg7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1jLWxpbmUpO2JvcmRlci1yYWRpdXM6dmFyKC0tci1sZyk7YmFja2dyb3VuZDp2YXIoLS1jLXJhaXNlKX0ucm93LndpdGh0aHVtYntncmlkLXRlbXBsYXRlLWNvbHVtbnM6NjRweCBtaW5tYXgoMCwxZnIpIGF1dG8gYXV0b30udGh1bWJ7cG9zaXRpb246cmVsYXRpdmU7ZGlzcGxheTpncmlkO3BsYWNlLWl0ZW1zOmNlbnRlcjt3aWR0aDo2NHB4O2hlaWdodDo2NHB4O292ZXJmbG93OmhpZGRlbjtib3JkZXItcmFkaXVzOjEycHg7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQoMTQwZGVnLHZhcigtLXNob3QtYSksdmFyKC0tc2hvdC1iKSk7Y29sb3I6I2ZmZjtmb250LXdlaWdodDo3MDB9LnJvdyAuYm9keXtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2dhcDo0cHg7bWluLXdpZHRoOjB9LnJvdyAubmFtZXtmb250LXNpemU6MTQuNXB4O2ZvbnQtd2VpZ2h0OjY1MDtsaW5lLWhlaWdodDoxLjN9LnJvdyAubWV0YXtjb2xvcjp2YXIoLS1jLWluay0zKTtmb250LXNpemU6MTIuNXB4O2xpbmUtaGVpZ2h0OjEuNDV9LnJvdyAucHJpY2V7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjthbGlnbi1pdGVtczpmbGV4LWVuZDtnYXA6MXB4O3RleHQtYWxpZ246ZW5kfS5yb3cgLnAtdG90YWx7Zm9udC1zaXplOjE2cHh9LnJvdyAuYWN0aW9ue2Rpc3BsYXk6ZmxleDtnYXA6OHB4fS5kYXl7bWFyZ2luOjRweCAwIC02cHg7Y29sb3I6dmFyKC0tYy1pbmstMyk7Zm9udC1zaXplOjExLjVweDtmb250LXdlaWdodDo3MDA7bGV0dGVyLXNwYWNpbmc6LjA3ZW07dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlfS5iYW5ke2Rpc3BsYXk6Z3JpZDtncmlkLXRlbXBsYXRlLWNvbHVtbnM6MWZyIGF1dG8gMWZyO2FsaWduLWl0ZW1zOmNlbnRlcjtvdmVyZmxvdzpoaWRkZW47Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1jLWxpbmUpO2JvcmRlci1yYWRpdXM6MTRweDtiYWNrZ3JvdW5kOnZhcigtLWMtYmcpfS5iYW5kLWR7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtnYXA6MnB4O3BhZGRpbmc6MTBweCAxNHB4O3RleHQtYWxpZ246c3RhcnR9LmJhbmQtZDpsYXN0LWNoaWxke2FsaWduLWl0ZW1zOmZsZXgtZW5kO3RleHQtYWxpZ246ZW5kfS5iYW5kIC53aGVuLW57YmFja2dyb3VuZDp2YXIoLS1jLXByaW1hcnktc29mdCk7Y29sb3I6dmFyKC0tYy1wcmltYXJ5LWluayl9LmNvbmYgLmJhbmR7bWFyZ2luLXRvcDo2cHg7Ym9yZGVyLXN0eWxlOmRhc2hlZDtib3JkZXItY29sb3I6dmFyKC0tYy1saW5lLTIpfS5yZXZpZXctaHtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2dhcDoycHh9LnN1bXN7ZGlzcGxheTpncmlkO2dhcDo4cHg7cGFkZGluZzoxNHB4IDE2cHg7Ym9yZGVyLXJhZGl1czp2YXIoLS1yLWxnKTtiYWNrZ3JvdW5kOnZhcigtLWMtc3Vuayl9LnN1bXtkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47Z2FwOjEycHg7Y29sb3I6dmFyKC0tYy1pbmstMik7Zm9udC1zaXplOjEzLjVweH0uc3VtIHNwYW46bGFzdC1jaGlsZHtjb2xvcjp2YXIoLS1jLWluayk7Zm9udC13ZWlnaHQ6NjAwO3RleHQtYWxpZ246ZW5kfS5zdW0uZ29vZCBzcGFuLC5zdW0uZ29vZCBzcGFuOmxhc3QtY2hpbGR7Y29sb3I6dmFyKC0tYy1zdWNjZXNzLWluayk7Zm9udC13ZWlnaHQ6NjUwfS5zdW0udG90YWx7YWxpZ24taXRlbXM6YmFzZWxpbmU7bWFyZ2luLXRvcDo0cHg7cGFkZGluZy10b3A6MTJweDtib3JkZXItdG9wOjFweCBzb2xpZCB2YXIoLS1jLWxpbmUtMik7Y29sb3I6dmFyKC0tYy1pbmspO2ZvbnQtc2l6ZToxNXB4O2ZvbnQtd2VpZ2h0OjcwMH0uc3VtLnRvdGFsIHNwYW46bGFzdC1jaGlsZHtmb250LXNpemU6MjRweDtmb250LXdlaWdodDo3ODA7bGV0dGVyLXNwYWNpbmc6LS4wMmVtfS5zdW0udG90YWwgc21hbGx7ZGlzcGxheTpibG9jazttYXJnaW4tdG9wOjFweDtjb2xvcjp2YXIoLS1jLWluay0zKTtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9LmZvcm17ZGlzcGxheTpncmlkO2dhcDoxNHB4O3BhZGRpbmc6MTZweDtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWMtbGluZSk7Ym9yZGVyLXJhZGl1czp2YXIoLS1yLWxnKTtiYWNrZ3JvdW5kOnZhcigtLWMtcmFpc2UpfS5mb3JtLWh7bWFyZ2luOjA7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6NzAwO2xldHRlci1zcGFjaW5nOi0uMDFlbX0udHdve2Rpc3BsYXk6Z3JpZDtncmlkLXRlbXBsYXRlLWNvbHVtbnM6MWZyIDFmcjtnYXA6MTJweH0uZm9ybSBsYWJlbHtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2dhcDo2cHg7Y29sb3I6dmFyKC0tYy1pbmstMik7Zm9udC1zaXplOjEyLjVweDtmb250LXdlaWdodDo2NTB9LmZvcm0gaW5wdXRbdHlwZT10ZXh0XSwuZm9ybSBpbnB1dFt0eXBlPWVtYWlsXSwuZm9ybSBpbnB1dFt0eXBlPXRlbF0sLmZvcm0gaW5wdXRbdHlwZT10aW1lXXt3aWR0aDoxMDAlO21pbi13aWR0aDowO2hlaWdodDo0NnB4O3BhZGRpbmc6MCAxM3B4O2JvcmRlcjoxcHggc29saWQgdmFyKC0tYy1saW5lLTIpO2JvcmRlci1yYWRpdXM6dmFyKC0tci1tZCk7YmFja2dyb3VuZDp2YXIoLS1jLWJnKTtjb2xvcjp2YXIoLS1jLWluayk7Zm9udDppbmhlcml0O2ZvbnQtc2l6ZToxNXB4O2ZvbnQtd2VpZ2h0OjUwMDt0cmFuc2l0aW9uOmJvcmRlci1jb2xvciAuMTVzIHZhcigtLWVhc2UpLGJveC1zaGFkb3cgLjE1cyB2YXIoLS1lYXNlKX0uZm9ybSBpbnB1dFthcmlhLWludmFsaWQ9dHJ1ZV17Ym9yZGVyLWNvbG9yOnZhcigtLWMtZXJyb3IpO2JveC1zaGFkb3c6MCAwIDAgM3B4IHZhcigtLWMtZXJyb3Itc29mdCl9LmZpZWxkLWVycntkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6ZmxleC1zdGFydDtnYXA6NnB4O2NvbG9yOnZhcigtLWMtZXJyb3ItaW5rKTtmb250LXNpemU6MTIuNXB4O2ZvbnQtd2VpZ2h0OjU1MDtsaW5lLWhlaWdodDoxLjR9LmZpZWxkLWVyciAuaWNve3dpZHRoOjE1cHg7aGVpZ2h0OjE1cHg7bWFyZ2luLXRvcDoxcHh9LmZvcm0gaW5wdXQ6OnBsYWNlaG9sZGVye2NvbG9yOnZhcigtLWMtaW5rLTMpO2ZvbnQtd2VpZ2h0OjQwMH0uZm9ybSBpbnB1dDpmb2N1c3tvdXRsaW5lOjA7Ym9yZGVyLWNvbG9yOnZhcigtLWMtcHJpbWFyeSk7Ym94LXNoYWRvdzowIDAgMCAzcHggdmFyKC0tYy1wcmltYXJ5LXNvZnQpfS5hc2tze2JvcmRlci10b3A6MXB4IHNvbGlkIHZhcigtLWMtbGluZSk7cGFkZGluZy10b3A6MTJweH0uYXNrcyBzdW1tYXJ5e2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjhweDtjb2xvcjp2YXIoLS1jLWluayk7Zm9udC1zaXplOjEzLjVweDtmb250LXdlaWdodDo2NTA7Y3Vyc29yOnBvaW50ZXI7bGlzdC1zdHlsZTpub25lfS5hc2tzIHN1bW1hcnk6Oi13ZWJraXQtZGV0YWlscy1tYXJrZXJ7ZGlzcGxheTpub25lfS5hc2tzIHN1bW1hcnk6YWZ0ZXJ7Y29udGVudDoiIjt3aWR0aDo3cHg7aGVpZ2h0OjdweDttYXJnaW46LTNweCAwIDAgYXV0bztib3JkZXI6c29saWQgdmFyKC0tYy1pbmstMyk7Ym9yZGVyLXdpZHRoOjAgMS43NXB4IDEuNzVweCAwO3RyYW5zZm9ybTpyb3RhdGUoNDVkZWcpO3RyYW5zaXRpb246dHJhbnNmb3JtIC4xNXMgdmFyKC0tZWFzZSl9LmFza3Nbb3Blbl0gc3VtbWFyeTphZnRlcnttYXJnaW4tdG9wOjNweDt0cmFuc2Zvcm06cm90YXRlKC0xMzVkZWcpfS5hc2tzIHN1bW1hcnkgc21hbGx7Y29sb3I6dmFyKC0tYy1pbmstMyk7Zm9udC13ZWlnaHQ6NTAwfS5hc2tzLWJvZHl7ZGlzcGxheTpncmlkO2dhcDoxMnB4O21hcmdpbi10b3A6MTJweH0uZm9ybSBsYWJlbC5yZW1lbWJlcntmbGV4LWRpcmVjdGlvbjpyb3c7YWxpZ24taXRlbXM6ZmxleC1zdGFydDtnYXA6OHB4O2NvbG9yOnZhcigtLWMtaW5rLTIpO2ZvbnQtc2l6ZToxMi41cHg7Zm9udC13ZWlnaHQ6NTAwfS5mb3JtIGxhYmVsLnJlbWVtYmVyIGlucHV0e21hcmdpbjoycHggMCAwO2FjY2VudC1jb2xvcjp2YXIoLS1jLXByaW1hcnkpfS50cnVzdHtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6ZmxleC1zdGFydDtnYXA6OHB4O2NvbG9yOnZhcigtLWMtaW5rLTIpO2ZvbnQtc2l6ZToxMi41cHg7bGluZS1oZWlnaHQ6MS41fS50cnVzdCAuaWNve21hcmdpbi10b3A6MXB4O2NvbG9yOnZhcigtLWMtaW5rLTIpfS5ib29rZWR7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjhweDtwYWRkaW5nOjEwcHggMCA0cHg7dGV4dC1hbGlnbjpjZW50ZXJ9LmJvb2tlZC1tYXJre2Rpc3BsYXk6Z3JpZDtwbGFjZS1pdGVtczpjZW50ZXI7d2lkdGg6NTZweDtoZWlnaHQ6NTZweDtib3JkZXItcmFkaXVzOjk5OXB4O2JhY2tncm91bmQ6dmFyKC0tYy1zdWNjZXNzLXNvZnQpO2NvbG9yOnZhcigtLWMtc3VjY2Vzcyk7YW5pbWF0aW9uOnBvcCAuNDVzIHZhcigtLWVhc2UpfS5ib29rZWQtbWFyayAuaWNve3dpZHRoOjI4cHg7aGVpZ2h0OjI4cHh9LmJvb2tlZC1tYXJrLnRlc3R7YmFja2dyb3VuZDp2YXIoLS1jLWluZm8tc29mdCk7Y29sb3I6dmFyKC0tYy1pbmZvKX1Aa2V5ZnJhbWVzIHBvcHswJXt0cmFuc2Zvcm06c2NhbGUoLjYpO29wYWNpdHk6MH02MCV7dHJhbnNmb3JtOnNjYWxlKDEuMDYpO29wYWNpdHk6MX19LmJvb2tlZC10e21hcmdpbjowO2ZvbnQtc2l6ZToyMnB4O2ZvbnQtd2VpZ2h0Ojc1MDtsZXR0ZXItc3BhY2luZzotLjAyZW19LmJvb2tlZC1ze21heC13aWR0aDo0NGNoO21hcmdpbjowO2NvbG9yOnZhcigtLWMtaW5rLTMpO2ZvbnQtc2l6ZToxMy41cHg7bGluZS1oZWlnaHQ6MS41fS5jb25me3Bvc2l0aW9uOnJlbGF0aXZlO2Rpc3BsYXk6Z3JpZDtnYXA6NHB4O3BhZGRpbmc6MThweCAyMHB4O2JvcmRlcjoxcHggc29saWQgdmFyKC0tYy1saW5lKTtib3JkZXItcmFkaXVzOnZhcigtLXItbGcpO2JhY2tncm91bmQ6dmFyKC0tYy1yYWlzZSk7dGV4dC1hbGlnbjpjZW50ZXJ9LmNvbmYgLm5vdGV7Y29sb3I6dmFyKC0tYy1pbmstMyk7Zm9udC1zaXplOjExLjVweDtmb250LXdlaWdodDo3MDA7bGV0dGVyLXNwYWNpbmc6LjA4ZW07dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlfS5jb2Rle2NvbG9yOnZhcigtLWMtaW5rKTtmb250LWZhbWlseTp2YXIoLS1mLW1vbm8pO2ZvbnQtc2l6ZToyNnB4O2ZvbnQtd2VpZ2h0OjcwMDtsZXR0ZXItc3BhY2luZzouMDhlbX0uY29uZi50aWNrZXQgLndoZXJle3Bvc2l0aW9uOnJlbGF0aXZlfS5jb25mLnRpY2tldCAud2hlcmU6YmVmb3JlLC5jb25mLnRpY2tldCAud2hlcmU6YWZ0ZXJ7Y29udGVudDoiIjtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6LTEwcHg7d2lkdGg6MjBweDtoZWlnaHQ6MjBweDtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWMtbGluZSk7Ym9yZGVyLXJhZGl1czo5OTlweDtiYWNrZ3JvdW5kOnZhcigtLWMtYmcpfS5jb25mLnRpY2tldCAud2hlcmU6YmVmb3Jle2xlZnQ6LTMxcHg7Y2xpcC1wYXRoOmluc2V0KDAgMCAwIDUwJSl9LmNvbmYudGlja2V0IC53aGVyZTphZnRlcntyaWdodDotMzFweDtjbGlwLXBhdGg6aW5zZXQoMCA1MCUgMCAwKX0uY29uZiAud2hlcmV7bWFyZ2luLXRvcDo4cHg7cGFkZGluZy10b3A6MTJweDtib3JkZXItdG9wOjFweCBkYXNoZWQgdmFyKC0tYy1saW5lLTIpO2ZvbnQtZmFtaWx5OnZhcigtLWYtZGlzcGxheSk7Zm9udC1zaXplOjE5cHg7Zm9udC13ZWlnaHQ6NjAwfS5jb25mIC53aGVue2NvbG9yOnZhcigtLWMtaW5rLTIpO2ZvbnQtc2l6ZToxM3B4fS5tb25leS1vdXR7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmJhc2VsaW5lO2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuO2dhcDoxMnB4O3BhZGRpbmc6MTRweCAxNnB4O2JvcmRlci1yYWRpdXM6dmFyKC0tci1sZyk7YmFja2dyb3VuZDp2YXIoLS1jLXN1bmspO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjY1MH0ubW9uZXktb3V0IHNwYW46bGFzdC1jaGlsZHtmb250LXNpemU6MjJweDtmb250LXdlaWdodDo3ODA7bGV0dGVyLXNwYWNpbmc6LS4wMmVtfS5xdWlldC1lbmR7ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpjZW50ZXI7bWFyZ2luLXRvcDotNHB4fS5saW5reS5kYW5nZXJ7Y29sb3I6dmFyKC0tYy1lcnJvci1pbmspO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtd2VpZ2h0OjYwMH0uaG9tZS1saW5rc3tkaXNwbGF5OmZsZXg7ZmxleC13cmFwOndyYXA7anVzdGlmeS1jb250ZW50OmNlbnRlcjtnYXA6NHB4IDEwcHg7Y29sb3I6dmFyKC0tYy1pbmstMyk7Zm9udC1zaXplOjEzcHh9LmFza2VkLWxpbmV7Zm9udC1zdHlsZTppdGFsaWN9LmxlZ3N7ZGlzcGxheTpncmlkO2dyaWQtdGVtcGxhdGUtY29sdW1uczoxZnIgMWZyO2dhcDoxMHB4fS5sZWd7ZGlzcGxheTpncmlkO2dhcDo0cHg7cGFkZGluZzoxMnB4IDE0cHg7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1jLWxpbmUpO2JvcmRlci1yYWRpdXM6dmFyKC0tci1tZCl9LmxlZy53YXN7YmFja2dyb3VuZDp2YXIoLS1jLXN1bmspfS5sZWcud2FzIC5sZWd2e3RleHQtZGVjb3JhdGlvbjpsaW5lLXRocm91Z2g7Y29sb3I6dmFyKC0tYy1pbmstMyl9LmxlZ2t7Y29sb3I6dmFyKC0tYy1pbmstMyk7Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NzAwO2xldHRlci1zcGFjaW5nOi4wN2VtO3RleHQtdHJhbnNmb3JtOnVwcGVyY2FzZX0ubGVndntmb250LXNpemU6MTRweDtmb250LXdlaWdodDo2NTB9LmxlZ217Y29sb3I6dmFyKC0tYy1pbmstMik7Zm9udC1zaXplOjEyLjVweH0uc3RhdGV7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjhweDtwYWRkaW5nOjIycHggMTJweCA4cHg7dGV4dC1hbGlnbjpjZW50ZXJ9LnN0YXRlLWljb3tkaXNwbGF5OmdyaWQ7cGxhY2UtaXRlbXM6Y2VudGVyO3dpZHRoOjUycHg7aGVpZ2h0OjUycHg7bWFyZ2luLWJvdHRvbTo0cHg7Ym9yZGVyLXJhZGl1czoxNnB4O2JhY2tncm91bmQ6dmFyKC0tYy1zdW5rKTtjb2xvcjp2YXIoLS1jLWluay0yKX0uc3RhdGUtaWNvIC5pY297d2lkdGg6MjRweDtoZWlnaHQ6MjRweH0uc3RhdGUuZXJyb3IgLnN0YXRlLWljb3tiYWNrZ3JvdW5kOnZhcigtLWMtZXJyb3Itc29mdCk7Y29sb3I6dmFyKC0tYy1lcnJvcil9LnN0YXRlLmxpbWl0IC5zdGF0ZS1pY297YmFja2dyb3VuZDp2YXIoLS1jLXdhcm5pbmctc29mdCk7Y29sb3I6dmFyKC0tYy13YXJuaW5nLWluayl9LnN0YXRlLXR7bWFyZ2luOjA7Zm9udC1zaXplOjE4cHg7Zm9udC13ZWlnaHQ6NzIwO2xldHRlci1zcGFjaW5nOi0uMDE1ZW19LnN0YXRlLWR7bWF4LXdpZHRoOjQ2Y2g7bWFyZ2luOjA7Y29sb3I6dmFyKC0tYy1pbmstMik7Zm9udC1zaXplOjEzLjVweDtsaW5lLWhlaWdodDoxLjU1fS5zdGF0ZSAuZm9vdHtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO21hcmdpbi10b3A6OHB4fS5zdGF0ZSAuZm9vdD4uZ297ZmxleDowIDEgYXV0b30uc2tlbHtkaXNwbGF5OmdyaWQ7Z2FwOjE0cHh9W2RhdGEtdGhlbWU9ZGFya10gLnNre2JhY2tncm91bmQtaW1hZ2U6bGluZWFyLWdyYWRpZW50KDkwZGVnLCMxNzIwMzMsIzI0MzA0OSwjMTcyMDMzKX0uc2t7Ym9yZGVyLXJhZGl1czoxMHB4O2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KDkwZGVnLHZhcigtLWMtc3VuaykgMCUsdmFyKC0tYy1saW5lKSA1MCUsdmFyKC0tYy1zdW5rKSAxMDAlKTtiYWNrZ3JvdW5kLXNpemU6MjAwJSAxMDAlO2FuaW1hdGlvbjpzaGltbWVyIDEuNHMgbGluZWFyIGluZmluaXRlfS5zay1sb2dve2Rpc3BsYXk6YmxvY2s7d2lkdGg6MTEycHg7aGVpZ2h0OjMwcHh9LnNrLWJhcntoZWlnaHQ6NjBweDtib3JkZXItcmFkaXVzOjE0cHh9LnNrLXRpbGVze2Rpc3BsYXk6Z3JpZDtncmlkLXRlbXBsYXRlLWNvbHVtbnM6cmVwZWF0KGF1dG8tZmlsbCxtaW5tYXgoMjIwcHgsMWZyKSk7Z2FwOjE0cHh9LnNrLXRpbGV7ZGlzcGxheTpncmlkO2dhcDoxMHB4fS5zay1pbWd7YXNwZWN0LXJhdGlvOjQgLyAzO2JvcmRlci1yYWRpdXM6dmFyKC0tci1sZyl9LnNrLWxpbmV7aGVpZ2h0OjE0cHg7d2lkdGg6ODAlfS5zay1saW5lLnNob3J0e3dpZHRoOjQ1JX1Aa2V5ZnJhbWVzIHNoaW1tZXJ7MCV7YmFja2dyb3VuZC1wb3NpdGlvbjoyMDAlIDB9dG97YmFja2dyb3VuZC1wb3NpdGlvbjotMjAwJSAwfX0uY21wLXdyYXB7b3ZlcmZsb3cteDphdXRvO21hcmdpbi1pbmxpbmU6LTJweDtwYWRkaW5nOjJweH0uY21we2Rpc3BsYXk6Z3JpZDtncmlkLXRlbXBsYXRlLWNvbHVtbnM6bWlubWF4KDc2cHgsOTZweCkgcmVwZWF0KHZhcigtLWNvbHMpLG1pbm1heCgxMjRweCwxZnIpKTthbGlnbi1pdGVtczpzdHJldGNoO2NvbHVtbi1nYXA6MTBweH0uY21wLmZvdXJ7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOm1pbm1heCg1NnB4LDcycHgpIHJlcGVhdCh2YXIoLS1jb2xzKSxtaW5tYXgoMTA0cHgsMWZyKSl9LmNtcC1jb3JuZXJ7Z3JpZC1jb2x1bW46MTtncmlkLXJvdzoxIC8gc3BhbiB2YXIoLS1oZWFkLXJvd3MsIDUpfS5jbXAtaGVhZHtkaXNwbGF5OmdyaWQ7Z3JpZC1yb3c6MSAvIHNwYW4gdmFyKC0taGVhZC1yb3dzLCA1KTtncmlkLXRlbXBsYXRlLXJvd3M6c3ViZ3JpZDtyb3ctZ2FwOjhweDthbGlnbi1jb250ZW50OnN0YXJ0O21pbi13aWR0aDowO3BhZGRpbmctYm90dG9tOjE0cHg7b3ZlcmZsb3c6aGlkZGVuO2JvcmRlcjoxcHggc29saWQgdmFyKC0tYy1saW5lKTtib3JkZXItcmFkaXVzOnZhcigtLXItbGcpO2JhY2tncm91bmQ6dmFyKC0tYy1yYWlzZSl9LmNtcC1oZWFkPi5jb2wtbmFtZSwuY21wLWhlYWQ+LmNvbC1wcmljZSwuY21wLWhlYWQ+LndoeSwuY21wLWhlYWQ+LnBje21hcmdpbi1pbmxpbmU6MTJweH0uY21wLWhlYWQucGlja3tib3JkZXItY29sb3I6dmFyKC0tYy1wcmltYXJ5KTtib3gtc2hhZG93OjAgMCAwIDFweCB2YXIoLS1jLXByaW1hcnkpfS5jbXAtaGVhZCAudC1zaG90e2FzcGVjdC1yYXRpbzoxNiAvIDEwO3dpZHRoOjEwMCU7cGFkZGluZzowO2JvcmRlcjowO2N1cnNvcjpwb2ludGVyfS5waWNrbWFya3twYWRkaW5nOjRweCA4cHg7YmFja2dyb3VuZDp2YXIoLS1jLXByaW1hcnkpO2NvbG9yOnZhcigtLWMtb24tcHJpbWFyeSk7Zm9udC1zaXplOjEwLjVweDtmb250LXdlaWdodDo3NTA7bGV0dGVyLXNwYWNpbmc6LjA3ZW07dGV4dC1hbGlnbjpjZW50ZXI7dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlfS5waWNrbWFyay5ub25le3Zpc2liaWxpdHk6aGlkZGVufS5jb2wtbmFtZXttYXJnaW4tdG9wOjJweDtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo2ODA7bGluZS1oZWlnaHQ6MS4zfS5jb2wtZ3JvdXB7ZGlzcGxheTpibG9jaztjb2xvcjp2YXIoLS1jLWluay0zKTtmb250LXNpemU6MTEuNXB4O2ZvbnQtd2VpZ2h0OjUwMH0uY29sLXByaWNle2ZvbnQtc2l6ZToxOHB4O2ZvbnQtd2VpZ2h0Ojc4MDtsZXR0ZXItc3BhY2luZzotLjAxNWVtfS5jb2wtcHJpY2Ugc21hbGx7Y29sb3I6dmFyKC0tYy1pbmstMyk7Zm9udC1zaXplOjExLjVweDtmb250LXdlaWdodDo1NTA7bGV0dGVyLXNwYWNpbmc6MH0uY29sLXByaWNlIHNtYWxsLnN1YntkaXNwbGF5OmJsb2NrfS53aHl7cGFkZGluZy1pbmxpbmUtc3RhcnQ6OXB4O2JvcmRlci1pbmxpbmUtc3RhcnQ6MnB4IHNvbGlkIHZhcigtLWMtcHJpbWFyeS1zb2Z0LTIpO2NvbG9yOnZhcigtLWMtaW5rLTIpO2ZvbnQtc2l6ZToxMi41cHg7Zm9udC1zdHlsZTppdGFsaWM7bGluZS1oZWlnaHQ6MS41fS53aHkubm9uZXtwYWRkaW5nOjA7Ym9yZGVyOjB9LnBje2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47Z2FwOjRweDtmb250LXNpemU6MTJweDtsaW5lLWhlaWdodDoxLjQ1fS5wYyBkaXZ7ZGlzcGxheTpmbGV4O2dhcDo2cHh9LnBjIC5te2ZsZXg6MCAwIGF1dG87Zm9udC13ZWlnaHQ6NzUwfS5wYyAucHJvIC5te2NvbG9yOnZhcigtLWMtcHJpbWFyeS1pbmspfS5wYyAuY29uIC5te2NvbG9yOnZhcigtLWMtaW5rLTMpfS5jbXAgLmssLmNtcCAudntkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO3BhZGRpbmc6OHB4IDEwcHg7Zm9udC1zaXplOjEyLjVweDtsaW5lLWhlaWdodDoxLjQ1fS5jbXAgLmt7cG9zaXRpb246c3RpY2t5O2luc2V0LWlubGluZS1zdGFydDowO2dyaWQtY29sdW1uOjE7YmFja2dyb3VuZDp2YXIoLS1jLWJnKTtjb2xvcjp2YXIoLS1jLWluay0zKTtmb250LXdlaWdodDo2MDB9LmNtcCAudi5hbHQsLmNtcCAuazpoYXMoKy52LmFsdCl7Ym9yZGVyLXJhZGl1czo4cHg7YmFja2dyb3VuZDp2YXIoLS1jLXN1bmspfS5kYXlze2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW59LmRheXJvd3tkaXNwbGF5OmdyaWQ7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjMwcHggMWZyO2dhcDoxMnB4fS5kYXludW17ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjRweH0uZGF5bnVtIGJ7ZGlzcGxheTpncmlkO3BsYWNlLWl0ZW1zOmNlbnRlcjt3aWR0aDoyOHB4O2hlaWdodDoyOHB4O2JvcmRlci1yYWRpdXM6OTk5cHg7YmFja2dyb3VuZDp2YXIoLS1jLXByaW1hcnktc29mdCk7Y29sb3I6dmFyKC0tYy1wcmltYXJ5LWluayk7Zm9udC1zaXplOjEyLjVweDtmb250LXdlaWdodDo3NTA7Zm9udC12YXJpYW50LW51bWVyaWM6dGFidWxhci1udW1zfS5kYXludW0gaXtmbGV4OjE7d2lkdGg6MnB4O2JvcmRlci1yYWRpdXM6MnB4O2JhY2tncm91bmQ6dmFyKC0tYy1saW5lKX0uZGF5cm93Omxhc3QtY2hpbGQgLmRheW51bSBpe2Rpc3BsYXk6bm9uZX0uZGF5Ym9keXtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2dhcDo4cHg7bWluLXdpZHRoOjA7cGFkZGluZzozcHggMCAxOHB4fS5kYXlsYWJlbHtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo2ODA7bGluZS1oZWlnaHQ6MS4zfS5kYXlsYWJlbCBzbWFsbHtjb2xvcjp2YXIoLS1jLWluay0zKTtmb250LXdlaWdodDo1MDB9LmRheW5vdGV7Y29sb3I6dmFyKC0tYy1pbmstMik7Zm9udC1zaXplOjEzcHg7bGluZS1oZWlnaHQ6MS41NX0ubW9tZW50c3tkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2dhcDo2cHg7bWFyZ2luOjJweCAwIDA7cGFkZGluZzowO2xpc3Qtc3R5bGU6bm9uZX0ubW9tZW50cyBsaXtkaXNwbGF5OmdyaWQ7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjg0cHggMWZyO2dhcDoxMHB4O2FsaWduLWl0ZW1zOmJhc2VsaW5lfS5tb21lbnRzIC53aGVue292ZXJmbG93LXdyYXA6YW55d2hlcmU7Y29sb3I6dmFyKC0tYy1pbmstMyk7Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NzAwO2xldHRlci1zcGFjaW5nOi4wNWVtO3RleHQtdHJhbnNmb3JtOnVwcGVyY2FzZX0ubW9tZW50cyAud2hhdHtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2dhcDoxcHg7Zm9udC1zaXplOjEzcHg7bGluZS1oZWlnaHQ6MS40fS5tb21lbnRzIC53aGF0IGJ7Zm9udC13ZWlnaHQ6NjIwfS5tb21lbnRzIC53aGF0IHNtYWxse2NvbG9yOnZhcigtLWMtaW5rLTMpO2ZvbnQtc2l6ZToxMnB4fS5wbGFuLXN0YXl7ZGlzcGxheTpncmlkO2dyaWQtdGVtcGxhdGUtY29sdW1uczoxMDRweCAxZnI7Z2FwOjEycHg7b3ZlcmZsb3c6aGlkZGVuO2JvcmRlcjoxcHggc29saWQgdmFyKC0tYy1saW5lKTtib3JkZXItcmFkaXVzOnZhcigtLXItbWQpO2JhY2tncm91bmQ6dmFyKC0tYy1yYWlzZSk7Y3Vyc29yOnBvaW50ZXJ9LnBsYW4tc3RheTpob3Zlcntib3JkZXItY29sb3I6dmFyKC0tYy1saW5lLTIpfS5wbGFuLXN0YXkgLnBzLXNob3R7cG9zaXRpb246cmVsYXRpdmU7ZGlzcGxheTpncmlkO3BsYWNlLWl0ZW1zOmNlbnRlcjttaW4taGVpZ2h0OjkycHg7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLHZhcigtLXNob3QtYSksdmFyKC0tc2hvdC1iKSk7Y29sb3I6I2ZmZn0ucGxhbi1zdGF5IC5wcy1zaG90IGltZ3twb3NpdGlvbjphYnNvbHV0ZTtpbnNldDowO3dpZHRoOjEwMCU7aGVpZ2h0OjEwMCU7b2JqZWN0LWZpdDpjb3Zlcn0ucGxhbi1zdGF5IC5wcy1ib2R5e2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47YWxpZ24taXRlbXM6ZmxleC1zdGFydDtnYXA6NHB4O21pbi13aWR0aDowO3BhZGRpbmc6MTBweCAxMnB4IDEwcHggMH0ucGxhbi1zdGF5IC5uYW1le2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjY4MDtsaW5lLWhlaWdodDoxLjN9LnBsYW4tc3RheSAubWV0YXtjb2xvcjp2YXIoLS1jLWluay0zKTtmb250LXNpemU6MTJweH0ucGxhbi1zdGF5IC5wcy1wcmljZXtmb250LXNpemU6MTMuNXB4O2ZvbnQtd2VpZ2h0OjcwMH0ucGxhbi1uaWdodHtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuO2dhcDo4cHg7cGFkZGluZy10b3A6NnB4O2JvcmRlci10b3A6MXB4IGRhc2hlZCB2YXIoLS1jLWxpbmUtMik7Y29sb3I6dmFyKC0tYy1pbmstMyk7Zm9udC1zaXplOjEyLjVweDtjdXJzb3I6cG9pbnRlcn0ucGxhbi1pdGVte2Rpc3BsYXk6Z3JpZDtncmlkLXRlbXBsYXRlLWNvbHVtbnM6MWZyIGF1dG87YWxpZ24taXRlbXM6Y2VudGVyO2dhcDo4cHg7cGFkZGluZzoxMHB4IDEycHg7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1jLWxpbmUpO2JvcmRlci1yYWRpdXM6dmFyKC0tci1tZCl9LnBsYW4taXRlbSAubmFtZXtmb250LXNpemU6MTNweDtmb250LXdlaWdodDo2NTB9LnBsYW4taXRlbSAubWV0YXtjb2xvcjp2YXIoLS1jLWluay0zKTtmb250LXNpemU6MTJweH0uaW5zdGF0ZXtwYWRkaW5nOjNweCA5cHg7Ym9yZGVyLXJhZGl1czo5OTlweDtmb250LXNpemU6MTFweDtmb250LXdlaWdodDo3MDA7d2hpdGUtc3BhY2U6bm93cmFwfS5pbnN0YXRlLnllc3tiYWNrZ3JvdW5kOnZhcigtLWMtc3VjY2Vzcy1zb2Z0KTtjb2xvcjp2YXIoLS1jLXN1Y2Nlc3MtaW5rKX0uaW5zdGF0ZS5ub3tiYWNrZ3JvdW5kOnZhcigtLWMtc3Vuayk7Y29sb3I6dmFyKC0tYy1pbmstMil9LmdhcHtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6ZmxleC1zdGFydDtnYXA6MTBweDtiYWNrZ3JvdW5kOnZhcigtLWMtc3Vuayk7Y29sb3I6dmFyKC0tYy1pbmstMil9LmdhcCBie2NvbG9yOnZhcigtLWMtaW5rKTtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo3ODA7Zm9udC12YXJpYW50LW51bWVyaWM6dGFidWxhci1udW1zfS5zdWdnZXN0e2Rpc3BsYXk6Z3JpZDtnYXA6NnB4O3BhZGRpbmctdG9wOjE0cHg7Ym9yZGVyLXRvcDoxcHggc29saWQgdmFyKC0tYy1saW5lKX0uc3VnZ2VzdCAud2x7bWFyZ2luLWJvdHRvbToycHh9LmNoaXAubmV4dHtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjtnYXA6MTJweDt3aWR0aDoxMDAlO21pbi1oZWlnaHQ6NDRweDtwYWRkaW5nOjhweCAxNHB4O2JvcmRlci1yYWRpdXM6MTJweDtjb2xvcjp2YXIoLS1jLWluayk7Zm9udC1zaXplOjEzLjVweDtmb250LXdlaWdodDo1NjA7bGluZS1oZWlnaHQ6MS4zNTt0ZXh0LWFsaWduOnN0YXJ0fS5jaGlwLm5leHQgLmljb3tmbGV4Om5vbmU7Y29sb3I6dmFyKC0tYy1wcmltYXJ5LWluayl9LnN1Z2dlc3QgLmNoaXAuc2F5IHNtYWxse2NvbG9yOnZhcigtLWMtaW5rLTMpfS5jay1wYWdlci1idG57aGVpZ2h0OjQwcHg7Ym9yZGVyLWNvbG9yOnZhcigtLWMtbGluZS0yKTtib3JkZXItcmFkaXVzOnZhcigtLXItbWQpO2ZvbnQtd2VpZ2h0OjYwMH0uY2stcGFnZXItbntjb2xvcjp2YXIoLS1jLWluay0zKX0ucC1saW5le2NvbG9yOnZhcigtLWMtaW5rKTtmb250LXNpemU6MTQuNXB4O2ZvbnQtd2VpZ2h0OjY1MH0ucm93LmxpbmUgLnAtdW5pdHtjb2xvcjp2YXIoLS1jLWluay0zKTtmb250LXdlaWdodDo1MDB9LnJvdy5saW5lIC5wZXJrc3ttYXJnaW4tdG9wOjRweH0ubWVtYmVyLW9mZmVye2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjEwcHg7cGFkZGluZzoxMnB4IDE0cHg7Ym9yZGVyLXJhZGl1czp2YXIoLS1yLW1kKTtiYWNrZ3JvdW5kOnZhcigtLWMtc3VjY2Vzcy1zb2Z0KTtjb2xvcjp2YXIoLS1jLWluay0yKTtmb250LXNpemU6MTNweH0ubWVtYmVyLW9mZmVyIC5pY28sLm1lbWJlci1vZmZlciAubGlua3l7Y29sb3I6dmFyKC0tYy1zdWNjZXNzLWluayl9LmFzay1ncm91cHtkaXNwbGF5OmdyaWQ7Z2FwOjhweH0ubGlua3N7ZGlzcGxheTpncmlkO292ZXJmbG93OmhpZGRlbjtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWMtbGluZSk7Ym9yZGVyLXJhZGl1czp2YXIoLS1yLW1kKX0ubGluay1yb3d7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjtnYXA6MTJweDttaW4taGVpZ2h0OjQ2cHg7cGFkZGluZzowIDE0cHg7Ym9yZGVyOjA7Ym9yZGVyLXRvcDoxcHggc29saWQgdmFyKC0tYy1saW5lKTtiYWNrZ3JvdW5kOnZhcigtLWMtcmFpc2UpO2NvbG9yOnZhcigtLWMtaW5rKTtmb250OmluaGVyaXQ7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTYwO3RleHQtYWxpZ246c3RhcnQ7Y3Vyc29yOnBvaW50ZXJ9Lmxpbmstcm93OmZpcnN0LWNoaWxke2JvcmRlci10b3A6MH0ubGluay1yb3c6aG92ZXJ7YmFja2dyb3VuZDp2YXIoLS1jLXN1bmspfS5saW5rLXJvdyAuaWNve2NvbG9yOnZhcigtLWMtaW5rLTMpfS5zdHJpcC1oe21hcmdpbi1ib3R0b206LThweDtjb2xvcjp2YXIoLS1jLWluay0zKTtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo2MDB9LmZkLmxvd2VzdCAuZmQtcHJpY2V7Y29sb3I6dmFyKC0tYy1zdWNjZXNzLWluayl9LmZkLmxvd2VzdHtib3JkZXItY29sb3I6Y29sb3ItbWl4KGluIHNyZ2IsdmFyKC0tYy1zdWNjZXNzKSA0NSUsdmFyKC0tYy1saW5lKSl9LnRpbGUubG93ZXN0IC50LWZyb217Y29sb3I6dmFyKC0tYy1zdWNjZXNzLWluayl9LnQtZ297ZGlzcGxheTpncmlkO3BsYWNlLWl0ZW1zOmNlbnRlcjt3aWR0aDoyOHB4O2hlaWdodDoyOHB4O21hcmdpbi1pbmxpbmUtc3RhcnQ6YXV0bztib3JkZXItcmFkaXVzOjk5OXB4O2JhY2tncm91bmQ6dmFyKC0tYy1zdW5rKTtjb2xvcjp2YXIoLS1jLWluay0yKTt0cmFuc2l0aW9uOmJhY2tncm91bmQtY29sb3IgLjE1cyB2YXIoLS1lYXNlKSxjb2xvciAuMTVzIHZhcigtLWVhc2UpfS50LWdvIC5pY297d2lkdGg6MTVweDtoZWlnaHQ6MTVweH0udGlsZTpob3ZlciAudC1nb3tiYWNrZ3JvdW5kOnZhcigtLWMtcHJpbWFyeSk7Y29sb3I6dmFyKC0tYy1vbi1wcmltYXJ5KX0ucmVtaW5ke2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpmbGV4LXN0YXJ0O2dhcDoxMHB4O3BhZGRpbmc6MTJweCAxNHB4O2JvcmRlci1yYWRpdXM6dmFyKC0tci1tZCk7YmFja2dyb3VuZDp2YXIoLS1jLXdhcm5pbmctc29mdCk7Y29sb3I6dmFyKC0tYy13YXJuaW5nLWluayk7Zm9udC1zaXplOjEzcHg7Zm9udC13ZWlnaHQ6NTYwO2xpbmUtaGVpZ2h0OjEuNX0ucmVtaW5kIC5pY297bWFyZ2luLXRvcDoxcHh9LmNke2hlaWdodDo1MnB4fS5jZD5zcGFue3dpZHRoOm1pbigzNnB4LDEwMCUpO2hlaWdodDozNnB4O21hcmdpbi10b3A6MH0uY2QtcHtwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0OjA7cmlnaHQ6MDtib3R0b206MDt6LWluZGV4OjE7b3ZlcmZsb3c6aGlkZGVuO2NvbG9yOnZhcigtLWMtaW5rLTMpO2ZvbnQtc2l6ZTo5LjVweDtmb250LXN0eWxlOm5vcm1hbDtmb250LXdlaWdodDo2MDA7bGV0dGVyLXNwYWNpbmc6LS4wMmVtO3RleHQtYWxpZ246Y2VudGVyO3doaXRlLXNwYWNlOm5vd3JhcH0uY2QuYmV0d2VlbjpiZWZvcmUsLmNkLmluLmhhcy1vdXQ6YmVmb3JlLC5jZC5vdXQ6YmVmb3JlLC5jZC5yZWFjaDpiZWZvcmUsLmNkLnJlYWNoLWVuZDpiZWZvcmV7aW5zZXQ6MXB4IDAgMTNweH0uY2QuaGFzLXA+c3BhbjpiZWZvcmV7ZGlzcGxheTpub25lfS5jZC5iZWZvcmU6bm90KDpkaXNhYmxlZCl7Y29sb3I6dmFyKC0tYy1pbmstMyl9LmNkOmZvY3VzLXZpc2libGV7b3V0bGluZTowfS5jZDpmb2N1cy12aXNpYmxlPnNwYW57b3V0bGluZToycHggc29saWQgdmFyKC0tYy1wcmltYXJ5KTtvdXRsaW5lLW9mZnNldDoycHh9LmNhbC1tdHttYXJnaW4tbGVmdDowfVtkYXRhLXRoZW1lPWRhcmtdIC5jZDpkaXNhYmxlZHtvcGFjaXR5Oi42fS53di1lbXB0eXtjb2xvcjp2YXIoLS1jLWluay0zKTtmb250LXdlaWdodDo2MDB9LnNrLXNheXtjb2xvcjp2YXIoLS1jLWluay0zKTtmb250LXNpemU6MTNweDtmb250LXdlaWdodDo2MDB9LnN0ZXAgYnV0dG9uOmRpc2FibGVke29wYWNpdHk6LjM7Y3Vyc29yOmRlZmF1bHR9LnNlYXJjaC5yZXRyeXtkaXNwbGF5OmZsZXg7Z2FwOjhweDt3aWR0aDoxMDAlO21heC13aWR0aDo0NDBweDttYXJnaW46OHB4IGF1dG8gMDtwYWRkaW5nOjA7YmFja2dyb3VuZDpub25lfS5zZWFyY2gucmV0cnkgLndoZXJle2ZsZXg6MTttaW4taGVpZ2h0OjQ4cHh9LnNlYXJjaC5yZXRyeSAud2hlcmUgaW5wdXR7aGVpZ2h0OjQ2cHh9LnQtbmFtZSwuaG90ZWwtbmFtZSwucm9vbS1uYW1lLC5yYXRlLW5hbWUsLmNvbmYgLndoZXJlLC5yb3cgLm5hbWUsLmNvbC1uYW1le3dvcmQtYnJlYWs6a2VlcC1hbGw7b3ZlcmZsb3ctd3JhcDphbnl3aGVyZX0uaGVhZHRyaXAtbntkaXNwbGF5OmdyaWQ7cGxhY2UtaXRlbXM6Y2VudGVyO21pbi13aWR0aDoyMHB4O2hlaWdodDoyMHB4O3BhZGRpbmc6MCA2cHg7Ym9yZGVyLXJhZGl1czo5OTlweDtiYWNrZ3JvdW5kOnZhcigtLWMtYmcpO2NvbG9yOnZhcigtLWMtaW5rKTtmb250LXNpemU6MTEuNXB4O2ZvbnQtd2VpZ2h0Ojc1MH0uaGVhZCAuYnJhbmR7Ym94LXNpemluZzpjb250ZW50LWJveDtwYWRkaW5nOjVweCAxMHB4O2JvcmRlci1yYWRpdXM6MTBweDtiYWNrZ3JvdW5kOnZhcigtLWMtc3Vuayl9QG1lZGlhKG1pbi13aWR0aDo2MDBweCl7LmNhbC1tb250aHN7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjFmciAxZnJ9LmNhbC1tb250aCsuY2FsLW1vbnRoe2Rpc3BsYXk6YmxvY2t9LnJvb217Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjE2OHB4IG1pbm1heCgwLDFmcik7Z3JpZC10ZW1wbGF0ZS1hcmVhczoic2hvdCBtYWluIiAic2hvdCBidXkiO2FsaWduLWl0ZW1zOnN0YXJ0O3BhZGRpbmc6MTRweH0ucm9vbS1zaG90e2FzcGVjdC1yYXRpbzphdXRvO2FsaWduLXNlbGY6c3RyZXRjaDttaW4taGVpZ2h0OjE1MHB4fS5ydHlwZS1oZWFke2dyaWQtdGVtcGxhdGUtY29sdW1uczoxMzJweCBtaW5tYXgoMCwxZnIpfS5oZXJve2FzcGVjdC1yYXRpbzoxNiAvIDd9LmhvdGVsLW5hbWV7Zm9udC1zaXplOjMycHh9fUBtZWRpYShtYXgtd2lkdGg6NTIwcHgpey5oZWFke21pbi1oZWlnaHQ6NTZweDtwYWRkaW5nOjEwcHggMTJweCA4cHggMTZweH0uc3ViaGVhZHtwYWRkaW5nOjAgMTZweCA4cHh9LmRlbW9zdHJpcHtwYWRkaW5nOjhweCAxNnB4fSNjb250ZW50e2dhcDoxNHB4O3BhZGRpbmc6MnB4IDE2cHggMTZweH0uaGVyb3ttYXJnaW4taW5saW5lOi0xNnB4O2FzcGVjdC1yYXRpbzo0IC8gM30uaGVyby10eHR7cGFkZGluZzowIDE2cHggMTZweH0uaG90ZWwtbmFtZXtmb250LXNpemU6MjVweH0ud2hlbmJhcntncmlkLXRlbXBsYXRlLWNvbHVtbnM6bWlubWF4KDAsMWZyKX0ud2hlbi1zaWRle2Rpc3BsYXk6Z3JpZDtncmlkLXRlbXBsYXRlLWNvbHVtbnM6MWZyIDFmcn0ud2hlbi1yb29tc3tmbGV4LWRpcmVjdGlvbjpyb3c7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVufS53aGVuLXNpZGUgLmdve21pbi1oZWlnaHQ6NDhweH0ud2hlbi1zaWRlOm5vdCg6aGFzKC5nbykpe2dyaWQtdGVtcGxhdGUtY29sdW1uczoxZnJ9LndoZW5iYXI6bm90KDpoYXMoLmdvKSl7Z2FwOjA7b3ZlcmZsb3c6aGlkZGVuO2JvcmRlcjoxcHggc29saWQgdmFyKC0tYy1saW5lLTIpO2JvcmRlci1yYWRpdXM6MTRweDtiYWNrZ3JvdW5kOnZhcigtLWMtYmcpfS53aGVuYmFyOm5vdCg6aGFzKC5nbykpIC53aGVuLWRhdGVze2JvcmRlcjowO2JvcmRlci1yYWRpdXM6MH0ud2hlbmJhcjpub3QoOmhhcyguZ28pKSAud2hlbi1yb29tc3twYWRkaW5nOjhweCAxMHB4IDhweCAxNHB4O2JvcmRlcjowO2JvcmRlci10b3A6MXB4IHNvbGlkIHZhcigtLWMtbGluZSk7Ym9yZGVyLXJhZGl1czowfS53aGVuYmFyOm5vdCg6aGFzKC5nbykpIC5jYWx7Ym9yZGVyOjA7Ym9yZGVyLXRvcDoxcHggc29saWQgdmFyKC0tYy1saW5lKTtib3JkZXItcmFkaXVzOjA7Ym94LXNoYWRvdzpub25lfS50aWxlc3tncmlkLXRlbXBsYXRlLWNvbHVtbnM6MWZyO2dhcDoxMHB4fS50aWxle2ZsZXgtZGlyZWN0aW9uOnJvdzthbGlnbi1pdGVtczpzdHJldGNofS50LXNob3R7ZmxleDowIDAgMTEycHg7YXNwZWN0LXJhdGlvOmF1dG87bWluLWhlaWdodDoxMzJweH0udC1icmFuZHtpbnNldC1ibG9jay1zdGFydDo4cHg7aW5zZXQtaW5saW5lLXN0YXJ0OjhweDtwYWRkaW5nOjJweCA3cHg7Zm9udC1zaXplOjEwcHh9LnQtYm9keXtwYWRkaW5nOjExcHggMTJweCAxMnB4O21pbi13aWR0aDowfS50LW5hbWV7Zm9udC1zaXplOjE0LjVweH0udC1mcm9te2ZvbnQtc2l6ZToxN3B4fS5zay10aWxlc3tncmlkLXRlbXBsYXRlLWNvbHVtbnM6MWZyfS5zay10aWxle2dyaWQtdGVtcGxhdGUtY29sdW1uczoxMTJweCAxZnI7Z3JpZC10ZW1wbGF0ZS1yb3dzOmF1dG8gYXV0byAxZnI7Y29sdW1uLWdhcDoxMnB4fS5zay1pbWd7Z3JpZC1yb3c6MSAvIHNwYW4gMzthc3BlY3QtcmF0aW86YXV0bztoZWlnaHQ6MTIwcHh9LnR3b3tncmlkLXRlbXBsYXRlLWNvbHVtbnM6MWZyfS5yb3csLnJvdy53aXRodGh1bWJ7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOm1pbm1heCgwLDFmcikgYXV0b30ucm93IC50aHVtYntkaXNwbGF5Om5vbmV9LnJvdyAuYWN0aW9ue2dyaWQtY29sdW1uOjEgLyAtMTtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1lbmR9LnJvdyAuYWN0aW9uOmVtcHR5e2Rpc3BsYXk6bm9uZX0uYmFja2J0bjpub3QoW2hpZGRlbl0pKy5mbG93IC5mbGFiZWx7ZGlzcGxheTpub25lfS5iYWNrYnRuOm5vdChbaGlkZGVuXSkrLmZsb3cgbGlbYXJpYS1jdXJyZW50PXN0ZXBdIC5mbGFiZWx7ZGlzcGxheTppbmxpbmV9LmZsb3cgbGkrbGk6YmVmb3Jle3dpZHRoOjEycHh9LmxlZ3N7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjFmcn0uY21we2dyaWQtdGVtcGxhdGUtY29sdW1uczptaW5tYXgoNjhweCw4NHB4KSByZXBlYXQodmFyKC0tY29scyksbWlubWF4KDExOHB4LDFmcikpfS5nb3ttaW4taGVpZ2h0OjQ4cHh9LnJvb20tYnV5e2ZsZXgtd3JhcDp3cmFwfS5yb29tLWJ1eSAuYWN0aW9ue2ZsZXg6MSAxIDEwMCV9LnJvb20tYnV5IC5hY3Rpb24gLmdve2ZsZXg6MSAxIDB9LnJ0eXBlLWhlYWR7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjc2cHggbWlubWF4KDAsMWZyKX0uZ28uc217bWluLWhlaWdodDo0MHB4fS5jaGlwLC5jaGlwLnBsYWNle21pbi1oZWlnaHQ6MzhweH0ubWVtYmVyY2hpcCwuaGVhZHRyaXB7aGVpZ2h0OjM2cHh9LnN0ZXAubGlnaHQgYnV0dG9uLC5zdGVwIGJ1dHRvbnt3aWR0aDozNnB4O2hlaWdodDozNnB4fX0jY29udGVudC5lbnRlcj4qe2FuaW1hdGlvbjplbnRlciAuMjhzIHZhcigtLWVhc2UpIGJvdGh9I2NvbnRlbnQuZW50ZXI+Om50aC1jaGlsZCgyKXthbmltYXRpb24tZGVsYXk6LjAzc30jY29udGVudC5lbnRlcj46bnRoLWNoaWxkKDMpe2FuaW1hdGlvbi1kZWxheTouMDZzfSNjb250ZW50LmVudGVyPjpudGgtY2hpbGQobis0KXthbmltYXRpb24tZGVsYXk6LjA5c31Aa2V5ZnJhbWVzIGVudGVyezAle29wYWNpdHk6MDt0cmFuc2Zvcm06dHJhbnNsYXRlWSg2cHgpfX1AbWVkaWEocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjpyZWR1Y2UpeyosKjpiZWZvcmUsKjphZnRlcnthbmltYXRpb246bm9uZSFpbXBvcnRhbnQ7dHJhbnNpdGlvbjpub25lIWltcG9ydGFudH0uY2FyZC5idXN5IC5idXN5YmFyOmJlZm9yZXt3aWR0aDoxMDAlO3RyYW5zZm9ybTpub25lO29wYWNpdHk6LjZ9LnNre2JhY2tncm91bmQ6dmFyKC0tYy1zdW5rKX19LmJvb2tlZC1tYXJrLnBheXtiYWNrZ3JvdW5kOnZhcigtLWMtcHJpbWFyeS1zb2Z0KTtjb2xvcjp2YXIoLS1jLXByaW1hcnkpfS5wYXlib3h7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtnYXA6MTBweDtwYWRkaW5nOjE2cHg7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1jLWxpbmUpO2JvcmRlci1yYWRpdXM6dmFyKC0tci1sZyk7YmFja2dyb3VuZDp2YXIoLS1jLWJnKX0ucGF5LWFtb3VudHtmb250LXNpemU6MzBweDtmb250LXdlaWdodDo3MjA7bGluZS1oZWlnaHQ6MS4xO2xldHRlci1zcGFjaW5nOi0uMDFlbTtmb250LXZhcmlhbnQtbnVtZXJpYzp0YWJ1bGFyLW51bXM7Y29sb3I6dmFyKC0tYy1pbmspfS5wYXktYnl7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmZsZXgtc3RhcnQ7Z2FwOjhweDtwYWRkaW5nOjEwcHggMTJweDtib3JkZXItcmFkaXVzOnZhcigtLXItbWQpO2JhY2tncm91bmQ6dmFyKC0tYy13YXJuaW5nLXNvZnQpO2NvbG9yOnZhcigtLWMtd2FybmluZy1pbmspO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtd2VpZ2h0OjU2MDtsaW5lLWhlaWdodDoxLjV9LnBheS1ieSAuY291bnRkb3due2ZvbnQtdmFyaWFudC1udW1lcmljOnRhYnVsYXItbnVtc30udW5wYWlkLnBhaWR7YmFja2dyb3VuZDp2YXIoLS1jLXN1Y2Nlc3Mtc29mdCl9LnVucGFpZC5wYWlkOmJlZm9yZXtiYWNrZ3JvdW5kOnZhcigtLWMtc3VjY2Vzcyl9LnVucGFpZC5wYWlkIGJ7Y29sb3I6dmFyKC0tYy1zdWNjZXNzLWluayl9LmNhbC1ncmlke3Jvdy1nYXA6NHB4fS5jZHtoZWlnaHQ6NTBweH0uY2Q+c3BhbntkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2dhcDoxcHg7d2lkdGg6Y2FsYygxMDAlIC0gNHB4KTttYXgtd2lkdGg6NjRweDtoZWlnaHQ6MTAwJTttYXJnaW46MCBhdXRvO2JvcmRlci1yYWRpdXM6MTBweH0uY2Qtbntmb250LXdlaWdodDppbmhlcml0O2xpbmUtaGVpZ2h0OjEuMX0uY2QtcHtwb3NpdGlvbjpzdGF0aWM7bWF4LXdpZHRoOjEwMCU7b3ZlcmZsb3c6aGlkZGVuO2NvbG9yOnZhcigtLWMtaW5rLTIpO2ZvbnQtc2l6ZToxMC41cHg7Zm9udC13ZWlnaHQ6NjAwO2xpbmUtaGVpZ2h0OjEuMTU7bGV0dGVyLXNwYWNpbmc6LS4wMmVtO2ZvbnQtdmFyaWFudC1udW1lcmljOnRhYnVsYXItbnVtc30uY2QubG93ZXN0IC5jZC1we2NvbG9yOnZhcigtLWMtc3VjY2Vzcy1pbmspO2ZvbnQtd2VpZ2h0Ojc1MH0uY2QudG9kYXk+c3BhbjphZnRlcntkaXNwbGF5Om5vbmV9LmNkLnRvZGF5IC5jZC1ue3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmUgMnB4O3RleHQtdW5kZXJsaW5lLW9mZnNldDozcHh9LmNkLmJldHdlZW46YmVmb3JlLC5jZC5pbi5oYXMtb3V0OmJlZm9yZSwuY2Qub3V0OmJlZm9yZSwuY2QucmVhY2g6YmVmb3JlLC5jZC5yZWFjaC1lbmQ6YmVmb3Jle2luc2V0OjB9LmNkLmluLmhhcy1vdXQ6YmVmb3Jle2xlZnQ6NTAlfS5jZC5vdXQ6YmVmb3JlLC5jZC5yZWFjaC1lbmQ6YmVmb3Jle3JpZ2h0OjUwJX0uY2QuaW4+c3BhbiwuY2Qub3V0PnNwYW57YmFja2dyb3VuZDp2YXIoLS1jLXByaW1hcnkpO2NvbG9yOnZhcigtLWMtb24tcHJpbWFyeSl9LmNkLmluIC5jZC1wLC5jZC5vdXQgLmNkLXB7Y29sb3I6dmFyKC0tYy1vbi1wcmltYXJ5KX0uY2Q6Zm9jdXMtdmlzaWJsZT5zcGFue291dGxpbmU6MnB4IHNvbGlkIHZhcigtLWMtcHJpbWFyeSk7b3V0bGluZS1vZmZzZXQ6MXB4fS5jZC5pbjpmb2N1cy12aXNpYmxlPnNwYW4sLmNkLm91dDpmb2N1cy12aXNpYmxlPnNwYW57b3V0bGluZS1jb2xvcjp2YXIoLS1jLWluayl9LmNhbC1sZWdlbmR7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtnYXA6MnB4O21pbi13aWR0aDowfS5jYWwtbGVnZW5kIHNtYWxse2ZvbnQtc2l6ZToxMS41cHg7bGluZS1oZWlnaHQ6MS40O2NvbG9yOnZhcigtLWMtaW5rLTMpfS5mbGV4LWRhdGVze3Njcm9sbC1zbmFwLXR5cGU6eCBtYW5kYXRvcnk7c2Nyb2xsLXBhZGRpbmctaW5saW5lOjJweDttYXNrLWltYWdlOmxpbmVhci1ncmFkaWVudCg5MGRlZyx0cmFuc3BhcmVudCwjMDAwIDEycHgsIzAwMCBjYWxjKDEwMCUgLSAyOHB4KSx0cmFuc3BhcmVudCl9LmZsZXgtZGF0ZXMgLmZke3Njcm9sbC1zbmFwLWFsaWduOnN0YXJ0fS5mbGV4LWRhdGVzLmF0LXN0YXJ0e21hc2staW1hZ2U6bGluZWFyLWdyYWRpZW50KDkwZGVnLCMwMDAgY2FsYygxMDAlIC0gMjhweCksdHJhbnNwYXJlbnQpfS5mbGV4LWRhdGVzLmF0LWVuZHttYXNrLWltYWdlOmxpbmVhci1ncmFkaWVudCg5MGRlZyx0cmFuc3BhcmVudCwjMDAwIDEycHgpfS5mbGV4LWRhdGVzLmF0LXN0YXJ0LmF0LWVuZHttYXNrLWltYWdlOm5vbmV9LmZvcm0gaW5wdXRbYXJpYS1pbnZhbGlkPXRydWVdLC5mb3JtIGlucHV0W2FyaWEtaW52YWxpZD10cnVlXTpmb2N1c3tib3JkZXItY29sb3I6dmFyKC0tYy1lcnJvcik7Ym94LXNoYWRvdzowIDAgMCAzcHggdmFyKC0tYy1lcnJvci1zb2Z0KX0uZm9ybS1lcnJ7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmZsZXgtc3RhcnQ7Z2FwOjhweDtwYWRkaW5nOjEwcHggMTJweDtib3JkZXItcmFkaXVzOnZhcigtLXItbWQpO2JhY2tncm91bmQ6dmFyKC0tYy1lcnJvci1zb2Z0KTtjb2xvcjp2YXIoLS1jLWVycm9yLWluayk7Zm9udC1zaXplOjEzcHg7Zm9udC13ZWlnaHQ6NjAwO2xpbmUtaGVpZ2h0OjEuNDV9LmZvcm0tZXJyIC5pY297ZmxleDpub25lO3dpZHRoOjE2cHg7aGVpZ2h0OjE2cHg7bWFyZ2luLXRvcDoxcHh9LnN0YXRlIC5mb290Pi5nb3t3aGl0ZS1zcGFjZTpub3dyYXB9LnN0YXRlIC5saW5rc3thbGlnbi1zZWxmOnN0cmV0Y2g7bWFyZ2luLXRvcDo2cHg7dGV4dC1hbGlnbjpzdGFydH0ubGluay1nb3tkaXNwbGF5OmlubGluZS1mbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6NHB4O2NvbG9yOnZhcigtLWMtcHJpbWFyeS1pbmspO2ZvbnQtd2VpZ2h0OjY1MH0ubGluay1nbyAuaWNve2NvbG9yOmluaGVyaXR9QG1lZGlhKG1heC13aWR0aDo1MjBweCl7LnN0YXRlIC5mb290e2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjthbGlnbi1zZWxmOnN0cmV0Y2h9LnN0YXRlIC5mb290Pi5nb3t3aWR0aDoxMDAlfX0uaGVhZCAuYnJhbmR7bWF4LWhlaWdodDozOHB4O3BhZGRpbmc6MDtib3JkZXItcmFkaXVzOjA7YmFja2dyb3VuZDpub25lfVtkYXRhLXRoZW1lPWRhcmtdIC5oZWFkIC5icmFuZHtwYWRkaW5nOjRweCA4cHg7Ym9yZGVyLXJhZGl1czo4cHg7YmFja2dyb3VuZDojZGZlNWVlO2ZpbHRlcjpicmlnaHRuZXNzKC45KX0uYmFuZCAud2hlbi1ue2xpbmUtaGVpZ2h0OjEuMjU7dGV4dC1hbGlnbjpjZW50ZXJ9LmJhbmQgLndoZW4tbiBzbWFsbHtkaXNwbGF5OmJsb2NrO2ZvbnQtc2l6ZToxMC41cHg7Zm9udC13ZWlnaHQ6NjAwO29wYWNpdHk6Ljg1fS5oZWFkIC50aXRsZTplbXB0eXtkaXNwbGF5Om5vbmV9LnNrLWxvZ297b3JkZXI6LTF9LnNrZWx7Z2FwOjEycHh9LnNrLXN1Ynt3aWR0aDo1OCU7aGVpZ2h0OjE0cHg7bWFyZ2luLXRvcDotNnB4fS5zay1iYXJ7aGVpZ2h0OjExOHB4fS5zay1jaGlwc3tkaXNwbGF5OmZsZXg7Z2FwOjEwcHh9LnNrLWNoaXB7d2lkdGg6MTY4cHg7aGVpZ2h0OjQwcHg7Ym9yZGVyLXJhZGl1czo5OTlweH0uc2stY2hpcC5zaG9ydHt3aWR0aDoxMDRweH0uc2stc2F5e2ZvbnQtc2l6ZToyMHB4O2ZvbnQtd2VpZ2h0OjcwMDtsZXR0ZXItc3BhY2luZzotLjAxNWVtfS5zdGVwIGJ1dHRvbjpkaXNhYmxlZHtvcGFjaXR5Oi40NX0ubmJ7ZGlzcGxheTppbmxpbmUtYmxvY2s7bWF4LXdpZHRoOjEwMCU7b3ZlcmZsb3ctd3JhcDphbnl3aGVyZX0uY29uZi50aWNrZXQgLndoZXJlOmJlZm9yZSwuY29uZi50aWNrZXQgLndoZXJlOmFmdGVye2NsaXAtcGF0aDpub25lO2JvcmRlci1jb2xvcjp0cmFuc3BhcmVudDt0cmFuc2Zvcm06cm90YXRlKDQ1ZGVnKX0uY29uZi50aWNrZXQgLndoZXJlOmJlZm9yZXtib3JkZXItdG9wLWNvbG9yOnZhcigtLWMtbGluZSk7Ym9yZGVyLXJpZ2h0LWNvbG9yOnZhcigtLWMtbGluZSl9LmNvbmYudGlja2V0IC53aGVyZTphZnRlcntib3JkZXItYm90dG9tLWNvbG9yOnZhcigtLWMtbGluZSk7Ym9yZGVyLWxlZnQtY29sb3I6dmFyKC0tYy1saW5lKX0ucXVpZXQtZW5ke21hcmdpbi10b3A6NnB4fS5zdGVwIGJ1dHRvbiwuc3RlcC5saWdodCBidXR0b24sLmNhbC1uYXYgYnV0dG9ue3dpZHRoOjQwcHg7aGVpZ2h0OjQwcHh9LmNhbC1mb290IC5saW5reXttaW4taGVpZ2h0OjQwcHg7cGFkZGluZzowIDZweDttYXJnaW46LThweCAtNnB4fS50LW1ldGE6bm90KDpoYXMoLnJhdGUpKTpoYXMoLnQtd2hlcmU6ZW1wdHkpe2Rpc3BsYXk6bm9uZX0uc3RhdGUgLmxpbmstcm93e3dpZHRoOjEwMCV9Lmxpbmstcm93PnNwYW46Zmlyc3QtY2hpbGR7ZmxleDoxIDEgYXV0bzttaW4td2lkdGg6MDtsaW5lLWhlaWdodDoxLjM1O3RleHQtYWxpZ246c3RhcnR9LmxpbmstZ297ZmxleDpub25lO3doaXRlLXNwYWNlOm5vd3JhcH0uY29uZiAud2hlbiAubmJ7ZGlzcGxheTpibG9ja30uY29uZiAud2hlbiAubmIrc3BhblthcmlhLWhpZGRlbl17ZGlzcGxheTpub25lfS5zaW17ZGlzcGxheTppbmxpbmUtYmxvY2s7bWFyZ2luLWlubGluZS1lbmQ6NnB4O3BhZGRpbmc6MXB4IDZweDtib3JkZXI6MXB4IHNvbGlkIGN1cnJlbnRDb2xvcjtib3JkZXItcmFkaXVzOjRweDtmb250LWZhbWlseTp2YXIoLS1mLXNhbnMpO2ZvbnQtc2l6ZTouNWVtO2ZvbnQtd2VpZ2h0OjY1MDtsZXR0ZXItc3BhY2luZzouMDJlbTtsaW5lLWhlaWdodDoxLjU7dmVydGljYWwtYWxpZ246LjM1ZW07b3BhY2l0eTouOH0udC1uYW1lIC5zaW0sLmNvbmYgLndoZXJlIC5zaW17Zm9udC1zaXplOjEwLjVweDt2ZXJ0aWNhbC1hbGlnbjouMTVlbX0uc2ltLW5vdGV7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmZsZXgtc3RhcnQ7Z2FwOjdweDtjb2xvcjp2YXIoLS1jLWluay0zKTtmb250LXNpemU6MTJweDtsaW5lLWhlaWdodDoxLjV9LnNpbS1ub3RlIC5pY297ZmxleDpub25lO3dpZHRoOjE0cHg7aGVpZ2h0OjE0cHg7bWFyZ2luLXRvcDoycHh9LnJvb20tbGVhZHttYXJnaW46MDtjb2xvcjp2YXIoLS1jLWluayk7Zm9udC1zaXplOjEzcHg7Zm9udC13ZWlnaHQ6NjAwO2xpbmUtaGVpZ2h0OjEuNH0ubGVhZC1re2Rpc3BsYXk6YmxvY2s7bWFyZ2luLWJvdHRvbToxcHg7Y29sb3I6dmFyKC0tYy1wcmltYXJ5LWluayk7Zm9udC1zaXplOjEwLjVweDtmb250LXdlaWdodDo3MDA7bGV0dGVyLXNwYWNpbmc6LjA4ZW07dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlfTpsYW5nKHpoKSAubGVhZC1re2xldHRlci1zcGFjaW5nOi4wMmVtfS5oLWZyZWV7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6NnB4O21hcmdpbi10b3A6NnB4O2NvbG9yOnZhcigtLWMtaW5rLTIpO2ZvbnQtc2l6ZToxMi41cHg7Zm9udC13ZWlnaHQ6NjAwfS5oLWZyZWUgLmljb3t3aWR0aDoxNHB4O2hlaWdodDoxNHB4fTpyb290ey0tci1sZzogMTJweH06cm9vdCAuaC1uYW1le2ZvbnQtc2l6ZToyNHB4O2ZvbnQtd2VpZ2h0OjgwMDtsZXR0ZXItc3BhY2luZzotLjAyZW19OnJvb3QgLnd2LDpyb290IC50LWZyb20sOnJvb3QgLnAtdG90YWwsOnJvb3QgLmZkLXByaWNlLDpyb290IC5mZC1kbiw6cm9vdCAuY2QtcHtmb250LXZhcmlhbnQtbnVtZXJpYzp0YWJ1bGFyLW51bXMgbGluaW5nLW51bXN9OnJvb3QgLnd2e2ZvbnQtc2l6ZToyMHB4O2ZvbnQtd2VpZ2h0Ojc1MDtsZXR0ZXItc3BhY2luZzotLjAxNWVtfTpyb290IC50aWxlc3tncmlkLXRlbXBsYXRlLWNvbHVtbnM6MWZyO2dhcDowO2JvcmRlci10b3A6MS41cHggc29saWQgdmFyKC0tYy1pbmspfTpyb290IC50aWxle3Bvc2l0aW9uOnJlbGF0aXZlO2ZsZXgtZGlyZWN0aW9uOnJvdzthbGlnbi1pdGVtczpzdHJldGNoO2JvcmRlcjowO2JvcmRlci1ib3R0b206MXB4IHNvbGlkIHZhcigtLWMtbGluZSk7Ym9yZGVyLXJhZGl1czowO2JhY2tncm91bmQ6dHJhbnNwYXJlbnR9OnJvb3QgLnRpbGU6aG92ZXJ7YmFja2dyb3VuZDp2YXIoLS1jLXN1bmspO2JveC1zaGFkb3c6bm9uZTt0cmFuc2Zvcm06bm9uZX06cm9vdCAudGlsZS5sb3dlc3Q6YmVmb3Jle2NvbnRlbnQ6IiI7cG9zaXRpb246YWJzb2x1dGU7aW5zZXQ6MCBhdXRvIDAgMDt3aWR0aDozcHg7YmFja2dyb3VuZDp2YXIoLS1jLXN1Y2Nlc3MpfTpyb290IC50LXNob3R7ZmxleDowIDAgMTA0cHg7d2lkdGg6MTA0cHg7bWluLWhlaWdodDowO2FzcGVjdC1yYXRpbzoxO21hcmdpbjoxNHB4IDAgMTRweCAxMnB4O2JvcmRlci1yYWRpdXM6MTBweDthbGlnbi1zZWxmOmZsZXgtc3RhcnR9OnJvb3QgLnQtYnJhbmR7ZGlzcGxheTpub25lfTpyb290IC50LWJvZHl7ZGlzcGxheTpncmlkO2dyaWQtdGVtcGxhdGUtY29sdW1uczptaW5tYXgoMCwxZnIpIGF1dG87Z3JpZC10ZW1wbGF0ZS1hcmVhczoibmFtZSBmb290IiAibWV0YSBmb290IiAidGFncyBmb290IjthbGlnbi1jb250ZW50OnN0YXJ0O2dhcDo1cHggMTRweDtwYWRkaW5nOjE0cHggMTJweCAxNHB4IDE0cHh9OnJvb3QgLnQtbmFtZXtncmlkLWFyZWE6bmFtZTtmb250LWZhbWlseTp2YXIoLS1mLWRpc3BsYXkpO2ZvbnQtc2l6ZToxNy41cHg7Zm9udC13ZWlnaHQ6NjAwO2xpbmUtaGVpZ2h0OjEuMjtsZXR0ZXItc3BhY2luZzotLjAwNWVtOy13ZWJraXQtbGluZS1jbGFtcDozO2xpbmUtY2xhbXA6M306cm9vdCAudC1tZXRhe2dyaWQtYXJlYTptZXRhO2ZsZXgtd3JhcDp3cmFwO2dhcDoycHggMTBweH06cm9vdCAudC1tZXRhIC5yYXRle21hcmdpbi1pbmxpbmUtc3RhcnQ6MH06cm9vdCAudC13aGVyZXt3aGl0ZS1zcGFjZTpub3JtYWw7b3ZlcmZsb3c6dmlzaWJsZX06cm9vdCAudC10YWdze2dyaWQtYXJlYTp0YWdzO21hcmdpbi10b3A6M3B4fTpyb290IC50LWZvb3R7Z3JpZC1hcmVhOmZvb3Q7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2FsaWduLWl0ZW1zOmZsZXgtZW5kO2p1c3RpZnktY29udGVudDpmbGV4LXN0YXJ0O21hcmdpbjowO3BhZGRpbmc6MDt0ZXh0LWFsaWduOmVuZH06cm9vdCAudC1mcm9te2ZvbnQtc2l6ZToxOXB4O2ZvbnQtd2VpZ2h0Ojc1MH06cm9vdCAudC1mcm9tIHNtYWxsLDpyb290IC50LXN1YnttYXgtd2lkdGg6NzZweDttYXJnaW4tdG9wOjJweDttYXJnaW4taW5saW5lLXN0YXJ0OmF1dG87Zm9udC1zaXplOjExcHg7bGluZS1oZWlnaHQ6MS4zO3doaXRlLXNwYWNlOm5vcm1hbH06cm9vdCAudC1nb3tkaXNwbGF5Om5vbmV9QG1lZGlhKG1pbi13aWR0aDo2MDBweCl7OnJvb3QgLnQtc2hvdHtmbGV4LWJhc2lzOjEzNnB4O3dpZHRoOjEzNnB4fTpyb290IC50LW5hbWV7Zm9udC1zaXplOjE5cHh9OnJvb3QgLnQtZnJvbSBzbWFsbCw6cm9vdCAudC1zdWJ7bWF4LXdpZHRoOm5vbmV9fTpyb290ICNjb250ZW50Omhhcyg+Lmhlcm8pPi5oZXJve29yZGVyOi02O2FzcGVjdC1yYXRpbzoxNiAvIDl9OnJvb3QgI2NvbnRlbnQ6aGFzKD4uaGVybyk+LnNpbS1ub3Rle29yZGVyOi01O21hcmdpbi10b3A6LTZweH06cm9vdCAjY29udGVudDpoYXMoPi5oZXJvKT4uc2Vne29yZGVyOi00fTpyb290ICNjb250ZW50Omhhcyg+Lmhlcm8pPi53aGVuYmFye29yZGVyOi0zfTpyb290ICNjb250ZW50Omhhcyg+Lmhlcm8pPi5zdHJpcC1oe29yZGVyOi0yO21hcmdpbi1ib3R0b206LThweDtjb2xvcjp2YXIoLS1jLWluayk7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NzUwO2xldHRlci1zcGFjaW5nOi4wNmVtO3RleHQtdHJhbnNmb3JtOnVwcGVyY2FzZX06cm9vdDpsYW5nKHpoKSAuc3RyaXAtaHtsZXR0ZXItc3BhY2luZzouMDJlbX06cm9vdCAjY29udGVudDpoYXMoPi5oZXJvKT4uZmxleC1kYXRlc3tvcmRlcjotMTtncmlkLWF1dG8tZmxvdzpjb2x1bW47Z3JpZC1hdXRvLWNvbHVtbnM6bWlubWF4KG1heC1jb250ZW50LDFmcik7Z2FwOjA7bWFyZ2luOjA7cGFkZGluZzowO292ZXJmbG93LXg6YXV0bztib3JkZXI6MXB4IHNvbGlkIHZhcigtLWMtbGluZS0yKTtib3JkZXItcmFkaXVzOjEycHg7bWFzay1pbWFnZTpub25lfTpyb290IC5mZHthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjJweDtwYWRkaW5nOjlweCA2cHggMTFweDtib3JkZXI6MDtib3JkZXItaW5saW5lLWVuZDoxcHggc29saWQgdmFyKC0tYy1saW5lKTtib3JkZXItcmFkaXVzOjA7YmFja2dyb3VuZDp0cmFuc3BhcmVudDtib3gtc2hhZG93Om5vbmU7dGV4dC1hbGlnbjpjZW50ZXI7dHJhbnNpdGlvbjpiYWNrZ3JvdW5kLWNvbG9yIC4yNXMgdmFyKC0tZWFzZSksY29sb3IgLjI1cyB2YXIoLS1lYXNlKX06cm9vdCAuZmQ6bGFzdC1jaGlsZHtib3JkZXItaW5saW5lLWVuZDowfTpyb290IC5mZC1kYXl7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjA7Y29sb3I6dmFyKC0tYy1pbmstMyl9OnJvb3QgLmZkLW1vbiw6cm9vdCAuZmQtZG93e2ZvbnQtc2l6ZToxMC41cHg7Zm9udC13ZWlnaHQ6NjUwO2xldHRlci1zcGFjaW5nOi4wNGVtO3RleHQtdHJhbnNmb3JtOnVwcGVyY2FzZX06cm9vdCAuZmQtbW9ue2NvbG9yOnZhcigtLWMtcHJpbWFyeS1pbmspfTpyb290IC5mZC1kbntjb2xvcjp2YXIoLS1jLWluayk7Zm9udC1zaXplOjIwcHg7Zm9udC13ZWlnaHQ6NzUwO2xpbmUtaGVpZ2h0OjEuMTV9OnJvb3QgLmZkLXByaWNle2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjY1MH06cm9vdCAuZmQub257YmFja2dyb3VuZDp2YXIoLS1jLXByaW1hcnkpO2NvbG9yOnZhcigtLWMtb24tcHJpbWFyeSk7Ym94LXNoYWRvdzpub25lfTpyb290IC5mZC5vbiAuZmQtZGF5LDpyb290IC5mZC5vbiAuZmQtZG4sOnJvb3QgLmZkLm9uIC5mZC1tb24sOnJvb3QgLmZkLm9uIC5mZC1wcmljZXtjb2xvcjp2YXIoLS1jLW9uLXByaW1hcnkpfTpyb290IC5mZC5sb3dlc3Q6bm90KC5vbil7YmFja2dyb3VuZDp2YXIoLS1jLXN1Y2Nlc3Mtc29mdCl9OnJvb3QgLmZkLmJlc3QgLmZkLWRheTphZnRlcntjb250ZW50Om5vbmV9OnJvb3QgLmZkLWxvd3tjb2xvcjp2YXIoLS1jLXN1Y2Nlc3MtaW5rKTtmb250LXNpemU6OS41cHg7Zm9udC13ZWlnaHQ6NzUwO2xldHRlci1zcGFjaW5nOi4wNGVtO3RleHQtdHJhbnNmb3JtOnVwcGVyY2FzZX06cm9vdCAuZmQub24gLmZkLWxvd3tjb2xvcjp2YXIoLS1jLW9uLXByaW1hcnkpfUBtZWRpYShtaW4td2lkdGg6NjAwcHgpezpyb290IC5oZXJve2FzcGVjdC1yYXRpbzoyMSAvIDl9fTpyb290IC5yb29tc3tnYXA6MDtib3JkZXItdG9wOjEuNXB4IHNvbGlkIHZhcigtLWMtaW5rKX06cm9vdCAucnR5cGUsOnJvb3QgLnJvb217Ym9yZGVyOjA7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgdmFyKC0tYy1saW5lKTtib3JkZXItcmFkaXVzOjA7YmFja2dyb3VuZDp0cmFuc3BhcmVudH06cm9vdCAucm9vbXtncmlkLXRlbXBsYXRlLWNvbHVtbnM6MWZyO2dyaWQtdGVtcGxhdGUtYXJlYXM6InNob3QiICJtYWluIiAiYnV5IjtwYWRkaW5nOjE2cHggMH06cm9vdCAucnR5cGUtaGVhZHtncmlkLXRlbXBsYXRlLWNvbHVtbnM6MWZyO2dhcDoxMnB4O3BhZGRpbmc6MTZweCAwIDhweH06cm9vdCAucm9vbS1zaG90LDpyb290IC5ydHlwZS1oZWFkIC5yb29tLXNob3R7YWxpZ24tc2VsZjpzdGFydDt3aWR0aDoxMDAlO2hlaWdodDphdXRvO2FzcGVjdC1yYXRpbzoxNiAvIDk7Ym9yZGVyLXJhZGl1czoxMHB4fTpyb290IC5yb29tLW5hbWV7Zm9udC1zaXplOjE3cHg7Zm9udC13ZWlnaHQ6NzUwfTpyb290IC5ycmF0ZXtncmlkLXRlbXBsYXRlLWNvbHVtbnM6MWZyO3BhZGRpbmc6MTJweCAwO2JvcmRlci10b3A6MXB4IGRhc2hlZCB2YXIoLS1jLWxpbmUpfTpyb290IC5ycmF0ZSAucm9vbS1idXksOnJvb3QgLnJvb20gLnJvb20tYnV5e2JvcmRlci10b3A6MDtwYWRkaW5nLXRvcDowfTpyb290IC5wLXRvdGFse2ZvbnQtc2l6ZToyMHB4fUBtZWRpYShtaW4td2lkdGg6NjAwcHgpezpyb290IC5yb29te2dyaWQtdGVtcGxhdGUtY29sdW1uczoyNDBweCBtaW5tYXgoMCwxZnIpO2dyaWQtdGVtcGxhdGUtYXJlYXM6InNob3QgbWFpbiIgInNob3QgYnV5IjtnYXA6MTBweCAxOHB4fTpyb290IC5ydHlwZS1oZWFke2dyaWQtdGVtcGxhdGUtY29sdW1uczoyNDBweCBtaW5tYXgoMCwxZnIpO2dhcDoxOHB4fTpyb290IC5yb29tLXNob3QsOnJvb3QgLnJ0eXBlLWhlYWQgLnJvb20tc2hvdHthc3BlY3QtcmF0aW86NCAvIDN9OnJvb3QgLnJyYXRle2dyaWQtdGVtcGxhdGUtY29sdW1uczptaW5tYXgoMCwxZnIpIGF1dG87YWxpZ24taXRlbXM6c3RhcnQ7Z2FwOjE4cHh9OnJvb3QgLnJyYXRlIC5yb29tLWJ1eXtmbGV4LWRpcmVjdGlvbjpjb2x1bW47YWxpZ24taXRlbXM6ZmxleC1lbmQ7dGV4dC1hbGlnbjplbmR9OnJvb3QgLnJyYXRlIC5yb29tLWJ1eSAucHJpY2V7YWxpZ24taXRlbXM6ZmxleC1lbmR9fTpyb290IC5nb3t3aGl0ZS1zcGFjZTpub3dyYXB9QG1lZGlhKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246cmVkdWNlKXs6cm9vdCAudGlsZSw6cm9vdCAuZmQsOnJvb3QgLnQtc2hvdCBpbWd7dHJhbnNpdGlvbjpub25lfX0ubGVhZC1re2Rpc3BsYXk6aW5saW5lO21hcmdpbjowO2NvbG9yOnZhcigtLWMtaW5rLTMpO2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjU1MDtsZXR0ZXItc3BhY2luZzowO3RleHQtdHJhbnNmb3JtOm5vbmV9LmxlYWQtazphZnRlcntjb250ZW50OiI6ICJ9OmxhbmcoemgpIC5sZWFkLWs6YWZ0ZXJ7Y29udGVudDoi77yaIn1AbWVkaWEobWF4LXdpZHRoOjUyMHB4KXs6cm9vdCAudC1zaG90e2ZsZXgtYmFzaXM6ODhweDt3aWR0aDo4OHB4fTpyb290IC50LWJvZHl7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOm1pbm1heCgwLDFmcikgYXV0bztncmlkLXRlbXBsYXRlLWFyZWFzOiJuYW1lIG5hbWUiICJtZXRhIG1ldGEiICJ0YWdzIGZvb3QiO2FsaWduLWl0ZW1zOmVuZH06cm9vdCAudC1uYW1le2ZvbnQtc2l6ZToxN3B4Oy13ZWJraXQtbGluZS1jbGFtcDp1bnNldDtsaW5lLWNsYW1wOm5vbmU7ZGlzcGxheTpibG9ja306cm9vdCAudC10YWdze2FsaWduLXNlbGY6ZW5kO21hcmdpbi10b3A6NnB4fTpyb290IC50LXRhZ3M6ZW1wdHl7Z3JpZC1jb2x1bW46MSAvIC0xfX06cm9vdCAuZmR7cGFkZGluZzo5cHggM3B4IDExcHh9OnJvb3QgLmZkLXByaWNle2ZvbnQtc2l6ZToxMS41cHg7bGV0dGVyLXNwYWNpbmc6LS4wMmVtfVtkYXRhLXRoZW1lPWRhcmtdIC5oZWFkIC5icmFuZHtwYWRkaW5nOjVweCA5cHg7Ym9yZGVyLXJhZGl1czo5cHg7YmFja2dyb3VuZDojZDNkOWUzO2JveC1zaGFkb3c6bm9uZTtmaWx0ZXI6YnJpZ2h0bmVzcyguOCl9W2RhdGEtdGhlbWU9ZGFya10gLmhlYWQgLmJyYW5kLmRhcmstYXJ0e3BhZGRpbmc6MDtib3JkZXItcmFkaXVzOjA7YmFja2dyb3VuZDpub25lO2ZpbHRlcjpub25lfS53aGVuYmFyIC53aGVuLXJvb21zLndoZW4tcGFydHksLnNlYXJjaCAud2hlbi1yb29tcy53aGVuLXBhcnR5e2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjthbGlnbi1pdGVtczpzdHJldGNoO2p1c3RpZnktY29udGVudDpmbGV4LXN0YXJ0O2dhcDowO3BhZGRpbmc6MH0ucGFydHktdGlsZXtkaXNwbGF5OmdyaWQ7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOm1pbm1heCgwLDFmcikgYXV0bzthbGlnbi1pdGVtczpjZW50ZXI7Y29sdW1uLWdhcDo4cHg7cm93LWdhcDoycHg7d2lkdGg6MTAwJTttaW4taGVpZ2h0OjUycHg7cGFkZGluZzo4cHggMTJweCA4cHggMTRweDtib3JkZXI6MDtiYWNrZ3JvdW5kOm5vbmU7Y29sb3I6aW5oZXJpdDtmb250OmluaGVyaXQ7dGV4dC1hbGlnbjpzdGFydDtjdXJzb3I6cG9pbnRlcn0ucGFydHktdGlsZSAud2x7Z3JpZC1jb2x1bW46MX0ucGFydHktdntncmlkLWNvbHVtbjoxO2NvbG9yOnZhcigtLWMtaW5rKTtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo3MDA7Zm9udC12YXJpYW50LW51bWVyaWM6dGFidWxhci1udW1zfS5wYXJ0eS10aWxlIC5pY297Z3JpZC1jb2x1bW46MjtncmlkLXJvdzoxIC8gc3BhbiAyO2NvbG9yOnZhcigtLWMtaW5rLTMpO3RyYW5zaXRpb246dHJhbnNmb3JtIC4ycyB2YXIoLS1lYXNlKX0ucGFydHktdGlsZVthcmlhLWV4cGFuZGVkPXRydWVdIC5pY297dHJhbnNmb3JtOnJvdGF0ZSg5MGRlZyl9LnBhcnR5LXRpbGU6Zm9jdXMtdmlzaWJsZXtvdXRsaW5lOjJweCBzb2xpZCB2YXIoLS1jLXByaW1hcnkpO291dGxpbmUtb2Zmc2V0Oi0ycHg7Ym9yZGVyLXJhZGl1czoxMnB4fS5wYXJ0eS1wYW5lbHtkaXNwbGF5OmdyaWQ7Z2FwOjJweDtwYWRkaW5nOjRweCAxMHB4IDhweCAxNHB4O2JvcmRlci10b3A6MXB4IHNvbGlkIHZhcigtLWMtbGluZSl9LnBhcnR5LXBhbmVsW2hpZGRlbl17ZGlzcGxheTpub25lfS5wYXJ0eS1yb3d7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjtnYXA6MTJweDtjb2xvcjp2YXIoLS1jLWluay0yKTtmb250LXNpemU6MTMuNXB4O2ZvbnQtd2VpZ2h0OjYwMH0ucGFydHktcm93IC5zdGVwLmxpZ2h0e2JvcmRlcjowO3BhZGRpbmc6MH1AbWVkaWEocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjpyZWR1Y2Upey5wYXJ0eS10aWxlIC5pY297dHJhbnNpdGlvbjpub25lfX0ucGFydHktdnt3aGl0ZS1zcGFjZTpub3dyYXB9OnJvb3QgLmZsZXgtZGF0ZXM6bm90KC5hdC1lbmQpe21hc2staW1hZ2U6bGluZWFyLWdyYWRpZW50KDkwZGVnLCMwMDAgY2FsYygxMDAlIC0gMjRweCksdHJhbnNwYXJlbnQpfTpyb290IC5mbGV4LWRhdGVzOm5vdCguYXQtc3RhcnQpOm5vdCguYXQtZW5kKXttYXNrLWltYWdlOmxpbmVhci1ncmFkaWVudCg5MGRlZyx0cmFuc3BhcmVudCwjMDAwIDEycHgsIzAwMCBjYWxjKDEwMCUgLSAyNHB4KSx0cmFuc3BhcmVudCl9OnJvb3QgLmZsZXgtZGF0ZXMuYXQtZW5kOm5vdCguYXQtc3RhcnQpe21hc2staW1hZ2U6bGluZWFyLWdyYWRpZW50KDkwZGVnLHRyYW5zcGFyZW50LCMwMDAgMTJweCl9OnJvb3QgLmZke3BhZGRpbmc6OXB4IDJweCAxMXB4fTpyb290IC5mZC1sb3d7Zm9udC1zaXplOjlweDtsZXR0ZXItc3BhY2luZzowfTpyb290IC5mZC1wcmljZXtmb250LXNpemU6MTFweH0uaC13aGVyZSAuc2lte2ZvbnQtc2l6ZToxMHB4O3ZlcnRpY2FsLWFsaWduOi4xZW19LmNvbmYgLmJhbmQgLnd2e2ZvbnQtc2l6ZToxN3B4fUBtZWRpYShtYXgtd2lkdGg6NDIwcHgpey5jb25mIC5iYW5kIC53diBzbWFsbHtkaXNwbGF5OmJsb2NrO21hcmdpbjoxcHggMCAwfS5jb25mIC5iYW5kLWR7cGFkZGluZzo5cHggMTBweH19LnBheS1mb3J7ZGlzcGxheTpncmlkO2dhcDoxMHB4fS5wYXktZm9yIC53aGVyZXtmb250LWZhbWlseTp2YXIoLS1mLWRpc3BsYXkpO2ZvbnQtc2l6ZToxOXB4O2ZvbnQtd2VpZ2h0OjYwMH0ucGF5LWZvciAubm90ZXtjb2xvcjp2YXIoLS1jLWluay0zKTtmb250LXNpemU6MTJweH1wLnF1aWV0LWVuZHttYXJnaW46NnB4IDAgMDt0ZXh0LWFsaWduOmNlbnRlcn0ubGlua3MgLmxpbmstcm93e2JvcmRlci1yYWRpdXM6MH0jY29udGVudDpoYXMoLndoZW5iYXIgLmNhbCk+LnN0cmlwLWgsI2NvbnRlbnQ6aGFzKC53aGVuYmFyIC5jYWwpPi5mbGV4LWRhdGVze2Rpc3BsYXk6bm9uZX0uY2QuYmVmb3JlOm5vdCg6ZGlzYWJsZWQpe2NvbG9yOnZhcigtLWMtaW5rKX0uY2QuaW46Zm9jdXMtdmlzaWJsZT5zcGFuLC5jZC5vdXQ6Zm9jdXMtdmlzaWJsZT5zcGFue291dGxpbmUtY29sb3I6dmFyKC0tYy1wcmltYXJ5KTtvdXRsaW5lLW9mZnNldDoycHh9LmNhbC1mb290IC5nb3ttaW4taGVpZ2h0OjM2cHh9OnJvb3QgLnQtZm9vdHtmbGV4LWRpcmVjdGlvbjpyb3c7YWxpZ24taXRlbXM6ZmxleC1zdGFydDtnYXA6NnB4fTpyb290IC50LWZvb3QgLnQtZnJvbXt0ZXh0LWFsaWduOmVuZH06cm9vdCAudC1nb3tkaXNwbGF5OmdyaWQ7d2lkdGg6MjJweDtoZWlnaHQ6MjJweDttYXJnaW4tdG9wOjJweDtib3JkZXI6MDtiYWNrZ3JvdW5kOnRyYW5zcGFyZW50O2NvbG9yOnZhcigtLWMtaW5rLTMpfTpyb290IC50aWxlOmhvdmVyIC50LWdve2JhY2tncm91bmQ6dHJhbnNwYXJlbnQ7Y29sb3I6dmFyKC0tYy1wcmltYXJ5LWluayl9QG1lZGlhKG1pbi13aWR0aDo2MDBweCl7OnJvb3QgLnQtc2hvdHtmbGV4LWJhc2lzOjE1MnB4O3dpZHRoOjE1MnB4O2FzcGVjdC1yYXRpbzo0IC8gM319OnJvb3QgLnQtZnJvbS50LW5vbmV7bWF4LXdpZHRoOjEwOHB4O2NvbG9yOnZhcigtLWMtaW5rLTMpO2ZvbnQtc2l6ZToxMi41cHg7Zm9udC13ZWlnaHQ6NjAwO2xpbmUtaGVpZ2h0OjEuMzU7dGV4dC1hbGlnbjplbmR9OnJvb3QgLnQtZnJvbSBzbWFsbCw6cm9vdCAudC1zdWJ7bWF4LXdpZHRoOjEwNHB4fS5wYXJ0eS1yb3cgLnN0ZXAgYnV0dG9uLC53aGVuLXJvb21zIC5zdGVwIGJ1dHRvbnt3aWR0aDo0MHB4O2hlaWdodDo0MHB4O2JvcmRlci1yYWRpdXM6OTk5cHg7YmFja2dyb3VuZDp2YXIoLS1jLXN1bmspfS5wYXJ0eS1yb3cgLnN0ZXAgYnV0dG9uOmRpc2FibGVkLC53aGVuLXJvb21zIC5zdGVwIGJ1dHRvbjpkaXNhYmxlZHtiYWNrZ3JvdW5kOnRyYW5zcGFyZW50fS5zZWctYlthcmlhLXByZXNzZWQ9dHJ1ZV17YmFja2dyb3VuZDp2YXIoLS1jLXByaW1hcnktc29mdCk7Y29sb3I6dmFyKC0tYy1wcmltYXJ5LWluayk7Ym94LXNoYWRvdzppbnNldCAwIDAgMCAxLjVweCB2YXIoLS1jLXByaW1hcnkpfS5yb29tLWhvdXJze2NvbG9yOnZhcigtLWMtcHJpbWFyeS1pbmspfS5zay10aWxlc3tncmlkLXRlbXBsYXRlLWNvbHVtbnM6MWZyfS5zay10aWxle2dyaWQtdGVtcGxhdGUtY29sdW1uczoxMDRweCAxZnI7Z3JpZC10ZW1wbGF0ZS1yb3dzOmF1dG8gYXV0byAxZnI7Y29sdW1uLWdhcDoxNHB4fS5zay1pbWd7Z3JpZC1yb3c6MSAvIHNwYW4gMzthc3BlY3QtcmF0aW86YXV0bztoZWlnaHQ6MTA0cHh9QG1lZGlhKG1pbi13aWR0aDo2MDBweCl7LnNrLXRpbGV7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjE1MnB4IDFmcn0uc2staW1ne2hlaWdodDoxMTRweH19OnJvb3QgI2NvbnRlbnQ6aGFzKD4uaGVybyk+Lmhlcm97YXNwZWN0LXJhdGlvOjIgLyAxfUBtZWRpYShtaW4td2lkdGg6NjAwcHgpezpyb290ICNjb250ZW50Omhhcyg+Lmhlcm8pPi5oZXJve2FzcGVjdC1yYXRpbzozIC8gMX19OnJvb3QgI2NvbnRlbnQ6aGFzKD4uaGVybyk+Lmgtc3VtOm5vdCguc2ltLW5vdGUpLDpyb290ICNjb250ZW50Omhhcyg+Lmhlcm8pPi5hbWVue29yZGVyOjF9OnJvb3QgI2NvbnRlbnQ6aGFzKD4uaGVybyk+Lmdvb2QtdG8ta25vd3tvcmRlcjoyfTpyb290IC5yb29tLXNob3QsOnJvb3QgLnJ0eXBlLWhlYWQgLnJvb20tc2hvdHthc3BlY3QtcmF0aW86MiAvIDF9QG1lZGlhKG1pbi13aWR0aDo2MDBweCl7OnJvb3QgLnJvb20tc2hvdCw6cm9vdCAucnR5cGUtaGVhZCAucm9vbS1zaG90e2FzcGVjdC1yYXRpbzo0IC8gM319OnJvb3QgLnJvb20uaG91cmx5e2dyaWQtdGVtcGxhdGUtY29sdW1uczo5NnB4IG1pbm1heCgwLDFmcik7Z3JpZC10ZW1wbGF0ZS1hcmVhczoic2hvdCBtYWluIiAiYnV5IGJ1eSJ9OnJvb3QgLnJvb20uaG91cmx5IC5yb29tLXNob3R7YXNwZWN0LXJhdGlvOjF9QG1lZGlhKG1pbi13aWR0aDo2MDBweCl7OnJvb3QgLnRpbGVze2dyaWQtdGVtcGxhdGUtY29sdW1uczoxZnIgMWZyO2NvbHVtbi1nYXA6MjJweH06cm9vdCAudC1zaG90e2ZsZXgtYmFzaXM6MTA4cHg7d2lkdGg6MTA4cHg7YXNwZWN0LXJhdGlvOjF9OnJvb3QgLnQtbmFtZXtmb250LXNpemU6MTdweH0uc2stdGlsZXN7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjFmciAxZnJ9LnNrLXRpbGV7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjEwOHB4IDFmcn0uc2staW1ne2hlaWdodDoxMDhweH19OnJvb3QgLnQtc3ViIC5uYntkaXNwbGF5OmJsb2NrfTpyb290IC50LXN1YiAudC1zZXB7ZGlzcGxheTpub25lfS5jaGlwOm5vdCgudG9vbCk6bm90KC5uZXh0KXtib3JkZXItY29sb3I6dHJhbnNwYXJlbnQ7YmFja2dyb3VuZDp2YXIoLS1jLXN1bmspfWJ1dHRvbi5jaGlwOm5vdCgudG9vbCk6bm90KC5uZXh0KTpob3Zlcntib3JkZXItY29sb3I6dmFyKC0tYy1saW5lLTIpO2JhY2tncm91bmQ6dmFyKC0tYy1iZyl9LmNoaXBbYXJpYS1wcmVzc2VkPXRydWVdOm5vdCgudG9vbCl7Ym9yZGVyLWNvbG9yOnZhcigtLWMtcHJpbWFyeSk7YmFja2dyb3VuZDp2YXIoLS1jLXByaW1hcnktc29mdCk7Y29sb3I6dmFyKC0tYy1wcmltYXJ5LWluayl9LnN0ZXB7Z2FwOjRweDtwYWRkaW5nOjA7Ym9yZGVyOjA7YmFja2dyb3VuZDp0cmFuc3BhcmVudH0uc3RlcCBidXR0b257d2lkdGg6NDBweDtoZWlnaHQ6NDBweDtib3JkZXItcmFkaXVzOjk5OXB4O2JhY2tncm91bmQ6dmFyKC0tYy1zdW5rKX0uc3RlcCBidXR0b246aG92ZXI6bm90KDpkaXNhYmxlZCl7YmFja2dyb3VuZDp2YXIoLS1jLWxpbmUpfS5zdGVwIGJ1dHRvbjpkaXNhYmxlZHtiYWNrZ3JvdW5kOnRyYW5zcGFyZW50fTpyb290IC5yb3dze2dhcDowO2JvcmRlci10b3A6MS41cHggc29saWQgdmFyKC0tYy1pbmspfTpyb290IC5yb3dzPi5yb3d7cGFkZGluZzoxNHB4IDA7Ym9yZGVyOjA7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgdmFyKC0tYy1saW5lKTtib3JkZXItcmFkaXVzOjA7YmFja2dyb3VuZDp0cmFuc3BhcmVudH0ucGF5LWNoZWNre2p1c3RpZnktc2VsZjpjZW50ZXI7bWluLWhlaWdodDozNnB4O2ZvbnQtc2l6ZToxM3B4fS5zdGF0ZS1ke3RleHQtd3JhcDpwcmV0dHl9Lmhlcm8td2hlcmUgLnJhdGUgc3Zne2NvbG9yOiNmZmZ9LnN0cmlwLWtleXtkaXNwbGF5OmlubGluZS1mbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6NXB4O21hcmdpbi1pbmxpbmUtc3RhcnQ6OHB4O2NvbG9yOnZhcigtLWMtc3VjY2Vzcy1pbmspO2ZvbnQtc2l6ZToxMXB4O2ZvbnQtd2VpZ2h0OjY1MDtsZXR0ZXItc3BhY2luZzowO3RleHQtdHJhbnNmb3JtOm5vbmV9LnN0cmlwLWtleTpiZWZvcmV7Y29udGVudDoiIjt3aWR0aDo4cHg7aGVpZ2h0OjhweDtib3JkZXItcmFkaXVzOjJweDtiYWNrZ3JvdW5kOnZhcigtLWMtc3VjY2Vzcy1zb2Z0KTtib3gtc2hhZG93Omluc2V0IDAgMCAwIDFweCB2YXIoLS1jLXN1Y2Nlc3MpfUBtZWRpYShtaW4td2lkdGg6NjAwcHgpezpyb290IC50LWJvZHl7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOm1pbm1heCgwLDFmcikgYXV0bztncmlkLXRlbXBsYXRlLWFyZWFzOiJuYW1lIG5hbWUiICJtZXRhIG1ldGEiICJ0YWdzIGZvb3QiO2FsaWduLWl0ZW1zOmVuZH06cm9vdCAudC1uYW1le2Rpc3BsYXk6YmxvY2s7LXdlYmtpdC1saW5lLWNsYW1wOnVuc2V0O2xpbmUtY2xhbXA6bm9uZX06cm9vdCAudC10YWdzOmVtcHR5e2dyaWQtY29sdW1uOjEgLyAtMX19OnJvb3QgLnQtZm9vdHtncmlkLWFyZWE6Zm9vdDtqdXN0aWZ5LXNlbGY6ZW5kfTpyb290IC50LXN1Ynt0ZXh0LWFsaWduOmVuZH1AbWVkaWEobWF4LXdpZHRoOjQyMHB4KXs6cm9vdCAuZmQtcHJpY2V7Zm9udC1zaXplOjEwLjVweDtsZXR0ZXItc3BhY2luZzotLjAzZW19OnJvb3QgLmZkLWRue2ZvbnQtc2l6ZToxOHB4fX0ucGFydHktdnt3aGl0ZS1zcGFjZTpub3JtYWx9OnJvb3QgI2NvbnRlbnQ6aGFzKD4uaGVybyk+LmFtZW57b3JkZXI6LTV9LnJldmlldy1oIC5oLXdoZXJle21hcmdpbi10b3A6MnB4O2NvbG9yOnZhcigtLWMtaW5rKTtmb250LWZhbWlseTp2YXIoLS1mLWRpc3BsYXkpO2ZvbnQtc2l6ZToxNnB4O2ZvbnQtd2VpZ2h0OjYwMH0uYmFuZC1kOmxhc3QtY2hpbGR7YWxpZ24taXRlbXM6ZmxleC1zdGFydDt0ZXh0LWFsaWduOnN0YXJ0fS5yb29tLWhvdXJze2NvbG9yOnZhcigtLWMtaW5rLTIpfS5yb3cgLmFjdGlvbntkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDo4cHh9LnJvdyAuYWN0aW9uIC53bHttYXJnaW46MH06cm9vdHstLWMtYWNjZW50OiB2YXIoLS1jLWluayl9OnJvb3RbZGF0YS1hY2NlbnRdIC5jYXJke2JvcmRlci10b3A6M3B4IHNvbGlkIHZhcigtLWMtYWNjZW50KX06cm9vdFtkYXRhLWFjY2VudF0gLnRpbGVzLDpyb290W2RhdGEtYWNjZW50XSAucm9vbXMsOnJvb3RbZGF0YS1hY2NlbnRdIC5yb3dze2JvcmRlci10b3AtY29sb3I6dmFyKC0tYy1hY2NlbnQpfTpyb290W2RhdGEtYWNjZW50XSAuaGVyby10eHQ6YmVmb3Jle2NvbnRlbnQ6IiI7ZGlzcGxheTpibG9jazt3aWR0aDoyOHB4O2hlaWdodDoycHg7bWFyZ2luLWJvdHRvbToycHg7YmFja2dyb3VuZDp2YXIoLS1jLWFjY2VudCl9OnJvb3RbZGF0YS1hY2NlbnRdIC5wYXktZm9yIC53aGVyZTpiZWZvcmUsOnJvb3RbZGF0YS1hY2NlbnRdIC5yZXZpZXctaCAuaC13aGVyZTpiZWZvcmV7Y29udGVudDoiIjtkaXNwbGF5OmJsb2NrO3dpZHRoOjIycHg7aGVpZ2h0OjJweDttYXJnaW4tYm90dG9tOjZweDtiYWNrZ3JvdW5kOnZhcigtLWMtYWNjZW50KX06cm9vdFtkYXRhLWFjY2VudF0gLmNvbmYgLndoZXJle2JvcmRlci10b3AtY29sb3I6dmFyKC0tYy1hY2NlbnQpfTpyb290W2RhdGEtYWNjZW50XSAuZmQub257Ym94LXNoYWRvdzppbnNldCAwIC0zcHggMCB2YXIoLS1jLWFjY2VudCl9OnJvb3RbZGF0YS1hY2NlbnRdIC5jZC5pbj5zcGFuLDpyb290W2RhdGEtYWNjZW50XSAuY2Qub3V0PnNwYW57Ym94LXNoYWRvdzowIDAgMCAycHggdmFyKC0tYy1iZyksMCAwIDAgMy41cHggdmFyKC0tYy1hY2NlbnQpfS5ib29raW5nLXJvd3tjdXJzb3I6cG9pbnRlcjt0cmFuc2l0aW9uOmJhY2tncm91bmQtY29sb3IgLjE1cyB2YXIoLS1lYXNlKX0uYm9va2luZy1yb3c6aG92ZXJ7YmFja2dyb3VuZDp2YXIoLS1jLXN1bmspfTpyb290IC5yb3dzPi5ib29raW5nLXJvd3twYWRkaW5nLWlubGluZTo4cHg7bWFyZ2luLWlubGluZTotOHB4O2JvcmRlci1yYWRpdXM6MTBweH0ub3Blbi1nb3tkaXNwbGF5OmdyaWQ7cGxhY2UtaXRlbXM6Y2VudGVyO3dpZHRoOjM2cHg7aGVpZ2h0OjM2cHg7Ym9yZGVyOjA7Ym9yZGVyLXJhZGl1czo5OTlweDtiYWNrZ3JvdW5kOnRyYW5zcGFyZW50O2NvbG9yOnZhcigtLWMtaW5rLTMpO2N1cnNvcjpwb2ludGVyfS5vcGVuLWdvOmhvdmVyLC5ib29raW5nLXJvdzpob3ZlciAub3Blbi1nb3tjb2xvcjp2YXIoLS1jLXByaW1hcnktaW5rKX0ub3Blbi1nbzpmb2N1cy12aXNpYmxle291dGxpbmU6MnB4IHNvbGlkIHZhcigtLWMtcHJpbWFyeSk7b3V0bGluZS1vZmZzZXQ6MXB4fS5ib29rZWQud2FpdGluZyAuYm9va2VkLW1hcmt7YmFja2dyb3VuZDp2YXIoLS1jLXdhcm5pbmctc29mdCk7Y29sb3I6dmFyKC0tYy13YXJuaW5nLWluayl9LmJvb2tlZC5lbmRlZCAuYm9va2VkLW1hcmt7YmFja2dyb3VuZDp2YXIoLS1jLXN1bmspO2NvbG9yOnZhcigtLWMtaW5rLTMpfUBtZWRpYShtaW4td2lkdGg6NjAwcHgpezpyb290IC5ydHlwZXtkaXNwbGF5OmdyaWQ7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjIwMHB4IG1pbm1heCgwLDFmcik7Y29sdW1uLWdhcDoyMHB4O3BhZGRpbmc6MTZweCAwIDZweH06cm9vdCAucnR5cGUtaGVhZHtkaXNwbGF5OmNvbnRlbnRzfTpyb290IC5ydHlwZS1oZWFkIC5yb29tLXNob3R7Z3JpZC1jb2x1bW46MTtncmlkLXJvdzoxIC8gc3BhbiAyO2FzcGVjdC1yYXRpbzo0IC8gM306cm9vdCAucnR5cGUgLnJvb20tbWFpbntncmlkLWNvbHVtbjoyO2dyaWQtcm93OjE7cGFkZGluZy1ib3R0b206NHB4fTpyb290IC5ydHlwZSAucmF0ZXN7Z3JpZC1jb2x1bW46MjtncmlkLXJvdzoyO2FsaWduLXNlbGY6c3RhcnR9OnJvb3QgLnJyYXRle3BhZGRpbmc6MTBweCAwO2dhcDoxNHB4fTpyb290IC5ycmF0ZSAucmF0ZS1tYWlue2dhcDo0cHh9OnJvb3QgLnJvb217Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjIwMHB4IG1pbm1heCgwLDFmcik7Z2FwOjhweCAyMHB4O3BhZGRpbmc6MTZweCAwfTpyb290IC5yb29tLXNob3R7YXNwZWN0LXJhdGlvOjQgLyAzfTpyb290IC5mbGV4LWRhdGVze3dpZHRoOm1heC1jb250ZW50O21heC13aWR0aDoxMDAlO2dyaWQtYXV0by1jb2x1bW5zOm1pbm1heCg4NHB4LDEwNHB4KX06cm9vdCAuZmR7cGFkZGluZzo4cHggNnB4IDEwcHh9fUBtZWRpYShtaW4td2lkdGg6NjAwcHgpezpyb290IC5ycmF0ZSAucm9vbS1idXl7ZmxleC1kaXJlY3Rpb246cm93O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6MTZweH06cm9vdCAucnJhdGUgLnJvb20tYnV5IC5wcmljZXthbGlnbi1pdGVtczpmbGV4LWVuZDt0ZXh0LWFsaWduOmVuZH19OnJvb3RbZGF0YS1hY2NlbnRdey0tYy1hY2NlbnQ6IHZhcigtLWFjY2VudC1yYXcpfTpyb290W2RhdGEtdGhlbWU9ZGFya11bZGF0YS1hY2NlbnQtZGltXXstLWMtYWNjZW50OiB2YXIoLS1jLWxpbmUtMil9QG1lZGlhKG1pbi13aWR0aDo2MDBweCl7OnJvb3QgLmZsZXgtZGF0ZXN7d2lkdGg6bWluKDEwMCUsY2FsYyh2YXIoLS1uLCA3KSAqIDExOHB4KSk7Z3JpZC1hdXRvLWNvbHVtbnM6bWlubWF4KDAsMWZyKX06cm9vdCAuZmR7Z2FwOjNweDtwYWRkaW5nOjEycHggOHB4IDE0cHh9OnJvb3QgLmZkLWRue2ZvbnQtc2l6ZToyMnB4fTpyb290IC5mZC1wcmljZXtmb250LXNpemU6MTIuNXB4O2xldHRlci1zcGFjaW5nOjB9fTwvc3R5bGU+CiAgPC9oZWFkPgogIDxib2R5PgogICAgPGRpdiBjbGFzcz0iY2FyZCI+CiAgICAgIDwhLS0gQSBjYWxsIG91dCB0byB0aGUgc2VydmVyOiBhIGxpbmUgYWxvbmcgdGhlIHRvcCAtIHNlZSBgc2V0QnVzeWAuIC0tPgogICAgICA8ZGl2IGNsYXNzPSJidXN5YmFyIiBhcmlhLWhpZGRlbj0idHJ1ZSI+PC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9ImhlYWQiPgogICAgICAgIDwhLS0gVGhlIGdyb3VwJ3Mgd29yZG1hcmsgYXJyaXZlcyBXSVRIIFRIRSBEQVRBIGFzIGBsb2dvVXJsYC4gTm90aGluZyBpcwogICAgICAgICAgICAgYmFrZWQgaW4gaGVyZTogYSBsb2dvIGNvbXBpbGVkIGludG8gdGhlIGNhcmQgaXMgdGhlIGZpcnN0IGJyYW5kJ3MsCiAgICAgICAgICAgICBhbmQgZXZlcnkgaG90ZWwgZ3JvdXAgYWZ0ZXIgdGhlbSB3b3VsZCB3ZWFyIGl0LiBUaGUgYnJhbmQgaXMgYWxzbwogICAgICAgICAgICAgdGhlIHdheSBob21lLCBvbiBldmVyeSB2aWV3IChyb2JpbiwgMjAyNi0wOS0xOCkuIC0tPgogICAgICAgIDxidXR0b24gY2xhc3M9ImhvbWUiIGlkPSJob21lIiB0eXBlPSJidXR0b24iIGRhdGEtYWN0PSJob21lIiBhcmlhLWxhYmVsPSJCYWNrIHRvIHRoZSBob3RlbHMiPgogICAgICAgICAgPGltZyBjbGFzcz0iYnJhbmQiIGlkPSJicmFuZCIgYWx0PSIiIGhpZGRlbj4KICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0aXRsZSIgaWQ9InRpdGxlIj48L3NwYW4+CiAgICAgICAgICA8c3BhbiBjbGFzcz0ic2sgc2stbG9nbyIgaWQ9InNrbG9nbyIgYXJpYS1oaWRkZW49InRydWUiPjwvc3Bhbj4KICAgICAgICA8L2J1dHRvbj4KICAgICAgICA8c3BhbiBjbGFzcz0ic3ViIiBpZD0ic3ViIj48L3NwYW4+CiAgICAgICAgPCEtLSBUaGUgdGllciwgb3IgdGhlIHdheSBpbi4gQSBtZW1iZXIgcmF0ZSBpcyBhIGZhY3QgYWJvdXQgZXZlcnkgcHJpY2UKICAgICAgICAgICAgIG9uIHRoZSBjYXJkLCBzbyBpdCBiZWxvbmdzIGluIHRoZSBoZWFkZXIgcmF0aGVyIHRoYW4gb24gb25lIHZpZXcuIC0tPgogICAgICAgIDxidXR0b24gY2xhc3M9Im1lbWJlcmNoaXAiIGlkPSJtZW1iZXJjaGlwIiB0eXBlPSJidXR0b24iIGRhdGEtYWN0PSJhc2stc2lnbi1pbiIgaGlkZGVuPjwvYnV0dG9uPgogICAgICAgIDwhLS0gVGhlIHRyaXAsIGZyb20gdGhlIHRvcDogYSBmb290ZXItb25seSBjYXJ0IG1lYW5zIHNjcm9sbGluZyBwYXN0CiAgICAgICAgICAgICB0d2VudHkgdGlsZXMgdG8gcmVhY2ggaXQgKHRoZSBzaG9wcGluZyBjYXJkLCAyMDI2LTA5LTE3KS4gLS0+CiAgICAgICAgPGJ1dHRvbiBjbGFzcz0iaGVhZHRyaXAiIGlkPSJoZWFkdHJpcCIgdHlwZT0iYnV0dG9uIiBkYXRhLWFjdD0idHJpcCIgaGlkZGVuIGFyaWEtbGFiZWw9IlZpZXcgdGhlIHRyaXAiPgogICAgICAgICAgPCEtLSBBIHN1aXRjYXNlOiBhIHRyaXAgb2Ygc3RheXMsIG5vdCBhIHNob3BwaW5nIGJhZy4gLS0+CiAgICAgICAgICA8c3ZnIHZpZXdCb3g9IjAgMCAyNCAyNCIgd2lkdGg9IjE1IiBoZWlnaHQ9IjE1IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIKICAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIGFyaWEtaGlkZGVuPSJ0cnVlIj4KICAgICAgICAgICAgPHJlY3QgeD0iMy41IiB5PSI3IiB3aWR0aD0iMTciIGhlaWdodD0iMTIuNSIgcng9IjIuNSIgLz4KICAgICAgICAgICAgPHBhdGggZD0iTTkgN1Y1LjVBMS41IDEuNSAwIDAgMSAxMC41IDRoM0ExLjUgMS41IDAgMCAxIDE1IDUuNVY3TTMuNSAxMi41aDE3IiAvPgogICAgICAgICAgPC9zdmc+CiAgICAgICAgICA8c3BhbiBpZD0iaGVhZHRyaXB3b3JkIj5UcmlwPC9zcGFuPjxzcGFuIGNsYXNzPSJoZWFkdHJpcC1uIiBpZD0iaGVhZHRyaXBuIj4wPC9zcGFuPgogICAgICAgIDwvYnV0dG9uPgogICAgICA8L2Rpdj4KICAgICAgPCEtLSBFdmVyeSByYXRlIG9uIGEgZGVtb25zdHJhdGlvbiB3YXMgbWFkZSB1cDogc2FpZCBvbmNlLCBoZXJlLCBvbiBldmVyeQogICAgICAgICAgIHZpZXcgLSBzZWUgXGBwYWludERlbW9cYC4gLS0+CiAgICAgIDxkaXYgY2xhc3M9ImRlbW9zdHJpcCIgaWQ9ImRlbW9zdHJpcCIgcm9sZT0ibm90ZSIgaGlkZGVuPjxiIGlkPSJkZW1vbGFiZWwiPkRlbW88L2I+PHNwYW4gaWQ9ImRlbW90ZXh0Ij48L3NwYW4+PC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9InN1YmhlYWQiIGlkPSJzdWJoZWFkIiBoaWRkZW4+CiAgICAgICAgPCEtLSBPbmUgc3RlcCBiYWNrIElOU0lERSB0aGUgY2FyZCAtIHRoZSB0aHJlZSBob3RlbHMgdGhleSB3ZXJlIGNvbXBhcmluZwogICAgICAgICAgICAgd2hlbiB0aGV5IHRhcHBlZCBvbmUgKHJvYmluLCAyMDI2LTA5LTIxKS4gVGhlIGJyYW5kIGFib3ZlIGdvZXMgaG9tZSwKICAgICAgICAgICAgIHdoaWNoIGlzIGEgZGlmZmVyZW50IGFuc3dlci4gLS0+CiAgICAgICAgPGJ1dHRvbiBjbGFzcz0iYmFja2J0biIgaWQ9ImJhY2tidG4iIHR5cGU9ImJ1dHRvbiIgZGF0YS1hY3Q9ImJhY2siIGhpZGRlbj48L2J1dHRvbj4KICAgICAgICA8IS0tIEJvb2tpbmcgYSByb29tIGlzIHRocmVlIHN0ZXBzLCBhbmQgdGhlIGNhcmQgc2F5cyB3aGljaCBvbmUgdGhpcyBpcy4gLS0+CiAgICAgICAgPG9sIGNsYXNzPSJmbG93IiBpZD0iZmxvdyIgYXJpYS1sYWJlbD0iQm9va2luZyBzdGVwcyIgaGlkZGVuPgogICAgICAgICAgPGxpIGRhdGEtc3RlcD0iMSI+PHNwYW4gY2xhc3M9ImZkb3QiPjE8L3NwYW4+PHNwYW4gY2xhc3M9ImZsYWJlbCIgaWQ9ImZsb3cxIj5Ib3RlbDwvc3Bhbj48L2xpPgogICAgICAgICAgPGxpIGRhdGEtc3RlcD0iMiI+PHNwYW4gY2xhc3M9ImZkb3QiPjI8L3NwYW4+PHNwYW4gY2xhc3M9ImZsYWJlbCIgaWQ9ImZsb3cyIj5Sb29tPC9zcGFuPjwvbGk+CiAgICAgICAgICA8bGkgZGF0YS1zdGVwPSIzIj48c3BhbiBjbGFzcz0iZmRvdCI+Mzwvc3Bhbj48c3BhbiBjbGFzcz0iZmxhYmVsIiBpZD0iZmxvdzMiPkJvb2s8L3NwYW4+PC9saT4KICAgICAgICA8L29sPgogICAgICA8L2Rpdj4KICAgICAgPCEtLSBCZWZvcmUgdGhlIGZpcnN0IGFuc3dlcjogdGhlIHNoYXBlcyBvZiB3aGF0IGlzIGNvbWluZywgbm90IGEgd29yZC4gLS0+CiAgICAgIDxkaXYgaWQ9ImNvbnRlbnQiPgogICAgICAgIDxkaXYgY2xhc3M9InNrZWwiIHJvbGU9InN0YXR1cyIgYXJpYS1sYWJlbD0iTG9hZGluZyI+CiAgICAgICAgICA8IS0tIFRoZSBzaGFwZXMgb2YgdGhlIGxpc3QgdGhhdCBpcyBjb21pbmcsIHdoZXJlIHRoZXkgd2lsbCBiZTogYQogICAgICAgICAgICAgICB0aXRsZSwgaXRzIGxpbmUsIHRoZSBkYXRlcywgdGhlIHNvcnQgYW5kIGZpbHRlcnMsIHRoZSB0aWxlcy4gLS0+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJzay1zYXkiPkZpbmRpbmcgaG90ZWxz4oCmPC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJzayBzay1saW5lIHNrLXN1YiI+PC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJzayBzay1iYXIiPjwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0ic2stY2hpcHMiPjxkaXYgY2xhc3M9InNrIHNrLWNoaXAiPjwvZGl2PjxkaXYgY2xhc3M9InNrIHNrLWNoaXAgc2hvcnQiPjwvZGl2PjwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0ic2stdGlsZXMiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJzay10aWxlIj48ZGl2IGNsYXNzPSJzayBzay1pbWciPjwvZGl2PjxkaXYgY2xhc3M9InNrIHNrLWxpbmUiPjwvZGl2PjxkaXYgY2xhc3M9InNrIHNrLWxpbmUgc2hvcnQiPjwvZGl2PjwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJzay10aWxlIj48ZGl2IGNsYXNzPSJzayBzay1pbWciPjwvZGl2PjxkaXYgY2xhc3M9InNrIHNrLWxpbmUiPjwvZGl2PjxkaXYgY2xhc3M9InNrIHNrLWxpbmUgc2hvcnQiPjwvZGl2PjwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgPC9ib2R5Pgo8L2h0bWw+Cg==', 'base64').toString('utf8');
|
|
6
6
|
/** sha256 of everything the card is built from (card-kit's source-hash.mjs) - the drift guard reads this. */
|
|
7
|
-
export const HOTEL_CARD_SOURCE_SHA = '
|
|
7
|
+
export const HOTEL_CARD_SOURCE_SHA = '68888ccb455a8dac989bc818efae5bf6eb72a8a5a5a4722721bc192170b05987';
|
|
8
8
|
//# sourceMappingURL=card.generated.js.map
|